<?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>184603</bug_id>
          
          <creation_ts>2018-04-13 13:30:14 -0700</creation_ts>
          <short_desc>Web Automation: add support for mouse/keyboard interaction sequences</short_desc>
          <delta_ts>2018-04-19 20:22:47 -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>WebDriver</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>184462</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Blaze Burg">bburg</reporter>
          <assigned_to name="Blaze Burg">bburg</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bburg</cc>
    
    <cc>cgarcia</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1414505</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2018-04-13 13:30:14 -0700</bug_when>
    <thetext>This is the main WebKit-side functionality to support Actions endpoint.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414506</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-04-13 13:30:36 -0700</bug_when>
    <thetext>&lt;rdar://problem/39421839&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414511</commentid>
    <comment_count>2</comment_count>
      <attachid>337922</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2018-04-13 13:48:57 -0700</bug_when>
    <thetext>Created attachment 337922
WIP - depends on 184462</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415044</commentid>
    <comment_count>3</comment_count>
      <attachid>338082</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2018-04-16 23:49:16 -0700</bug_when>
    <thetext>Created attachment 338082
Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415045</commentid>
    <comment_count>4</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2018-04-16 23:51:23 -0700</bug_when>
    <thetext>This patch does not pass all tests, but it gets us most of the way towards having a real implementation. Some bugs &amp; radars have already been filed with known issues to be addressed in followup patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415050</commentid>
    <comment_count>5</comment_count>
      <attachid>338083</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2018-04-17 00:13:09 -0700</bug_when>
    <thetext>Created attachment 338083
Proposed Fix - depends on 184462</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415094</commentid>
    <comment_count>6</comment_count>
      <attachid>338097</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-04-17 03:43:46 -0700</bug_when>
    <thetext>Created attachment 338097
Fix the GTK build

I haven&apos;t had time to review the patch in detail yet, I only fixed the build in GTK+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415402</commentid>
    <comment_count>7</comment_count>
      <attachid>338172</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2018-04-17 17:53:27 -0700</bug_when>
    <thetext>Created attachment 338172
Rebased Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415474</commentid>
    <comment_count>8</comment_count>
      <attachid>338194</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2018-04-17 21:57:05 -0700</bug_when>
    <thetext>Created attachment 338194
Fix some builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415523</commentid>
    <comment_count>9</comment_count>
      <attachid>338194</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-04-18 04:47:10 -0700</bug_when>
    <thetext>Comment on attachment 338194
Fix some builds

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

I haven&apos;t had time to read the spec to review this, so I only have a few comments for now

&gt; Source/WebKit/UIProcess/Automation/SimulatedInputDispatcher.cpp:44
&gt; +    Seconds result;
&gt; +    for (auto&amp; entry : states)
&gt; +        result = std::max(result, entry.second.duration.value_or(Seconds(0)));

I think we could use std::max_element here, it would be something like:

std::max_element(states.begin(), states.end(), [](const StateEntry&amp; a, const StateEntry&amp; b) {
    return a.second.duration.value_or(0_s) &lt; b.second.duration.value_or(0_s);
})-&gt;second.duration.value_or(0_s);

&gt; Source/WebKit/UIProcess/Automation/SimulatedInputDispatcher.cpp:69
&gt; +        entries.uncheckedAppend(std::pair&lt;SimulatedInputSource&amp;, SimulatedInputSourceState&gt; { inputSource.get(), SimulatedInputSourceState::emptyState() });

I think we can use { } instead of SimulatedInputSourceState::emptyState()

&gt; Source/WebKit/UIProcess/Automation/SimulatedInputDispatcher.cpp:77
&gt; +    , m_keyFrameTransitionDurationTimer(RunLoop::current(), this, &amp;SimulatedInputDispatcher::keyFrameTransitionDurationTimerFired)

I guess this is expected to run always in the main thread, no? I would use RunLoop::main() instead of current.

&gt; Source/WebKit/UIProcess/Automation/SimulatedInputDispatcher.cpp:96
&gt; +    m_keyFrameTransitionDurationTimer.stop();

I think the timer is guaranteed to be stopped at this point.

&gt; Source/WebKit/UIProcess/Automation/SimulatedInputDispatcher.cpp:137
&gt; +        auto finish = WTFMove(m_keyFrameTransitionCompletionHandler);
&gt; +        finish(std::nullopt);

I&apos;m not sure if move behavior is defined for functions, so I normally use std::exchange with nullptr instead of move for callbacks to be sure.

&gt; Source/WebKit/UIProcess/Automation/SimulatedInputDispatcher.cpp:152
&gt; +            auto finish = WTFMove(m_keyFrameTransitionCompletionHandler);
&gt; +            finish(error);

Should we stop m_keyFrameTransitionDurationTimer here?

&gt; Source/WebKit/UIProcess/Automation/SimulatedInputDispatcher.cpp:231
&gt; +    for (const Ref&lt;SimulatedInputSource&gt;&amp; inputSource : inputSources)
&gt; +        m_inputSources.add(inputSource.copyRef());

I think the assignment operator will do the right thing copying the HashSet, but I wonder if we really need to copy it. The original set in WebAutomationSession is guaranteed to be alive during the run operation, no?

&gt; Source/WebKit/UIProcess/Automation/SimulatedInputDispatcher.cpp:235
&gt; +    m_keyframes.reserveCapacity(keyFrames.size() + 1);
&gt; +    m_keyframes.append(SimulatedInputKeyFrame::keyFrameFromStateOfInputSources(m_inputSources));
&gt; +    m_keyframes.appendVector(WTFMove(keyFrames));

I think it would be simpler to first move the vector and then prepend the keyFrameFromStateOfInputSources

&gt; Source/WebKit/UIProcess/Automation/SimulatedInputDispatcher.cpp:253
&gt; +    if (m_keyFrameTransitionDurationTimer.isActive())
&gt; +        m_keyFrameTransitionDurationTimer.stop();

stop does nothing when stopped so we don&apos;t need to check isActive before calling stop

&gt; Source/WebKit/UIProcess/Automation/SimulatedInputDispatcher.h:65
&gt; +    static SimulatedInputSourceState emptyState() { return SimulatedInputSourceState(); }

I don&apos;t think we need this, we could simply use { } to create and empty SimulatedInputSourceState when needed.

&gt; Source/WebKit/UIProcess/Automation/SimulatedInputDispatcher.h:68
&gt; +struct SimulatedInputSource : public RefCounted&lt;SimulatedInputSource&gt; {

Do we really need this to be refcounted? Input sources are only owned by m_inputSources in WebAutomationSession, no? I think we could use std::unique_ptr instead. Any reason why this is a struct instead of a class?

&gt; Source/WebKit/UIProcess/Automation/SimulatedInputDispatcher.h:85
&gt; +    static Ref&lt;SimulatedInputSource&gt; create(Type type)
&gt; +    {
&gt; +        return adoptRef(*new SimulatedInputSource(type, SimulatedInputSourceState::emptyState()));
&gt; +    }

There&apos;s no point in passing an empty SimulatedInputSourceState, the object is already created with an empty one.

&gt; Source/WebKit/UIProcess/Automation/SimulatedInputDispatcher.h:88
&gt; +    SimulatedInputSource(Type type, SimulatedInputSourceState state)

We don&apos;t need to receive a state that is always empty

&gt; Source/WebKit/UIProcess/Automation/WebAutomationSession.cpp:1392
&gt; +    if (!m_inputDispatchersByPage.contains(page.pageID()))
&gt; +        m_inputDispatchersByPage.set(page.pageID(), SimulatedInputDispatcher::create(page, *this));
&gt; +
&gt; +    return *m_inputDispatchersByPage.get(page.pageID());

This would be simpler and more efficient using ensure:

return m_inputDispatchersByPage.ensure(page.pageID(), [&amp;] { return SimulatedInputDispatcher::create(page, *this); }).iterator-&gt;value;

&gt; Source/WebKit/UIProcess/Automation/WebAutomationSession.cpp:1489
&gt; +    }
&gt; +}

GCC complains if we don&apos;t add a return here.

&gt; Source/WebKit/UIProcess/Automation/WebAutomationSession.cpp:1493
&gt; +#if !USE(APPKIT) &amp;&amp;! PLATFORM(GTK)

Why?

&gt; Source/WebKit/UIProcess/Automation/WebAutomationSession.cpp:1659
&gt; +    }
&gt; +}

We need a return here too to make GCC happy.

&gt; Source/WebKit/UIProcess/Automation/WebAutomationSession.cpp:1768
&gt; +    SimulatedInputDispatcher&amp; inputDispatcher = inputDispatcherForPage(*page);
&gt; +    if (inputDispatcher.isActive()) {

We don&apos;t need the local variable since it&apos;s only used for this.

&gt; Source/WebKit/UIProcess/Automation/WebAutomationSession.cpp:1790
&gt; +    SimulatedInputDispatcher&amp; inputDispatcher = inputDispatcherForPage(*page);
&gt; +    if (inputDispatcher.isActive())
&gt; +        inputDispatcher.cancel();

cancel does nothing when not active so we can simply call cancel here:

inputDispatcherForPage(*page).cancel();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415781</commentid>
    <comment_count>10</comment_count>
      <attachid>338194</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-04-18 16:47:58 -0700</bug_when>
    <thetext>Comment on attachment 338194
Fix some builds

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

&gt;&gt; Source/WebKit/UIProcess/Automation/SimulatedInputDispatcher.cpp:137
&gt;&gt; +        finish(std::nullopt);
&gt; 
&gt; I&apos;m not sure if move behavior is defined for functions, so I normally use std::exchange with nullptr instead of move for callbacks to be sure.

Carlos, you&apos;re right that the state of m_keyFrameTransitionCompletionHandler is undefined after a WTFMove.  In this case, it&apos;s a WTF::CompletionHandler that is moved then called.  I&apos;m pretty sure it&apos;ll end up becoming nullptr because of the property of CompletionHandlers that they null themselves out after being called once.  I wouldn&apos;t leave it like this, though.  I&apos;d do something like this:
std::exchange(m_keyFrameTransitionCompletionHandler, nullptr)(std::nullopt);
or even safer:
if (auto completionHandler = std::exchange(m_keyFrameTransitionCompletionHandler, nullptr))
    completionHandler(std::nullopt);
else
    ASSERT_NOT_REACHED();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415790</commentid>
    <comment_count>11</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2018-04-18 16:57:06 -0700</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #9)
&gt; Comment on attachment 338194 [details]
&gt; Fix some builds
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=338194&amp;action=review
&gt; 
&gt; I haven&apos;t had time to read the spec to review this, so I only have a few
&gt; comments for now
&gt; 
&gt; &gt; Source/WebKit/UIProcess/Automation/SimulatedInputDispatcher.cpp:44
&gt; &gt; +    Seconds result;
&gt; &gt; +    for (auto&amp; entry : states)
&gt; &gt; +        result = std::max(result, entry.second.duration.value_or(Seconds(0)));
&gt; 
&gt; I think we could use std::max_element here, it would be something like:
&gt; 
&gt; std::max_element(states.begin(), states.end(), [](const StateEntry&amp; a, const
&gt; StateEntry&amp; b) {
&gt;     return a.second.duration.value_or(0_s) &lt; b.second.duration.value_or(0_s);
&gt; })-&gt;second.duration.value_or(0_s);

This is gross and doesn&apos;t seem to have an upside.

&gt; &gt; Source/WebKit/UIProcess/Automation/SimulatedInputDispatcher.cpp:69
&gt; &gt; +        entries.uncheckedAppend(std::pair&lt;SimulatedInputSource&amp;, SimulatedInputSourceState&gt; { inputSource.get(), SimulatedInputSourceState::emptyState() });
&gt; 
&gt; I think we can use { } instead of SimulatedInputSourceState::emptyState()

I kept it as emptyState() to make it obvious what it&apos;s trying to do. We may have to initialize emptyState in the future.

&gt; &gt; Source/WebKit/UIProcess/Automation/SimulatedInputDispatcher.cpp:77
&gt; &gt; +    , m_keyFrameTransitionDurationTimer(RunLoop::current(), this, &amp;SimulatedInputDispatcher::keyFrameTransitionDurationTimerFired)
&gt; 
&gt; I guess this is expected to run always in the main thread, no? I would use
&gt; RunLoop::main() instead of current.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/Automation/SimulatedInputDispatcher.cpp:96
&gt; &gt; +    m_keyFrameTransitionDurationTimer.stop();
&gt; 
&gt; I think the timer is guaranteed to be stopped at this point.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/Automation/SimulatedInputDispatcher.cpp:137
&gt; &gt; +        auto finish = WTFMove(m_keyFrameTransitionCompletionHandler);
&gt; &gt; +        finish(std::nullopt);
&gt; 
&gt; I&apos;m not sure if move behavior is defined for functions, so I normally use
&gt; std::exchange with nullptr instead of move for callbacks to be sure.

Good catch. I&apos;m kind of new to this part of C++. I think std::exchange is only needed for members, which we null check in various places. It&apos;s overkill for a function parameter that is never used after being moved.

&gt; 
&gt; &gt; Source/WebKit/UIProcess/Automation/SimulatedInputDispatcher.cpp:152
&gt; &gt; +            auto finish = WTFMove(m_keyFrameTransitionCompletionHandler);
&gt; &gt; +            finish(error);
&gt; 
&gt; Should we stop m_keyFrameTransitionDurationTimer here?

We could, but it&apos;s already done at top-level by finishDispatching() in the error case.

&gt; 
&gt; &gt; Source/WebKit/UIProcess/Automation/SimulatedInputDispatcher.cpp:231
&gt; &gt; +    for (const Ref&lt;SimulatedInputSource&gt;&amp; inputSource : inputSources)
&gt; &gt; +        m_inputSources.add(inputSource.copyRef());
&gt; 
&gt; I think the assignment operator will do the right thing copying the HashSet,
&gt; but I wonder if we really need to copy it. The original set in
&gt; WebAutomationSession is guaranteed to be alive during the run operation, no?

I&apos;d prefer a copy, so it isn&apos;t overly coupled to what the caller does with the HashSet.

&gt; &gt; Source/WebKit/UIProcess/Automation/SimulatedInputDispatcher.cpp:235
&gt; &gt; +    m_keyframes.reserveCapacity(keyFrames.size() + 1);
&gt; &gt; +    m_keyframes.append(SimulatedInputKeyFrame::keyFrameFromStateOfInputSources(m_inputSources));
&gt; &gt; +    m_keyframes.appendVector(WTFMove(keyFrames));
&gt; 
&gt; I think it would be simpler to first move the vector and then prepend the
&gt; keyFrameFromStateOfInputSources

I don&apos;t feel strongly either way.

&gt; 
&gt; &gt; Source/WebKit/UIProcess/Automation/SimulatedInputDispatcher.cpp:253
&gt; &gt; +    if (m_keyFrameTransitionDurationTimer.isActive())
&gt; &gt; +        m_keyFrameTransitionDurationTimer.stop();
&gt; 
&gt; stop does nothing when stopped so we don&apos;t need to check isActive before
&gt; calling stop

ok

&gt; 
&gt; &gt; Source/WebKit/UIProcess/Automation/SimulatedInputDispatcher.h:65
&gt; &gt; +    static SimulatedInputSourceState emptyState() { return SimulatedInputSourceState(); }
&gt; 
&gt; I don&apos;t think we need this, we could simply use { } to create and empty
&gt; SimulatedInputSourceState when needed.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/Automation/SimulatedInputDispatcher.h:68
&gt; &gt; +struct SimulatedInputSource : public RefCounted&lt;SimulatedInputSource&gt; {
&gt; 
&gt; Do we really need this to be refcounted? Input sources are only owned by
&gt; m_inputSources in WebAutomationSession, no? I think we could use
&gt; std::unique_ptr instead.

In theory, no. I tried this and gave up. It caused headaches trying to use references in SimulatedInputDispatcher, especially in hash sets/maps far away from the owner / unique_ptr.

&gt; Any reason why this is a struct instead of a class?

I usually default to a struct unless its members are modified by instance methods. No other reason. Is there a counterargument?

&gt; &gt; Source/WebKit/UIProcess/Automation/SimulatedInputDispatcher.h:85
&gt; &gt; +    static Ref&lt;SimulatedInputSource&gt; create(Type type)
&gt; &gt; +    {
&gt; &gt; +        return adoptRef(*new SimulatedInputSource(type, SimulatedInputSourceState::emptyState()));
&gt; &gt; +    }
&gt; 
&gt; There&apos;s no point in passing an empty SimulatedInputSourceState, the object
&gt; is already created with an empty one.

See above comment about readability and future initialization.

&gt; 
&gt; &gt; Source/WebKit/UIProcess/Automation/SimulatedInputDispatcher.h:88
&gt; &gt; +    SimulatedInputSource(Type type, SimulatedInputSourceState state)
&gt; 
&gt; We don&apos;t need to receive a state that is always empty

Oops.

&gt; 
&gt; &gt; Source/WebKit/UIProcess/Automation/WebAutomationSession.cpp:1392
&gt; &gt; +    if (!m_inputDispatchersByPage.contains(page.pageID()))
&gt; &gt; +        m_inputDispatchersByPage.set(page.pageID(), SimulatedInputDispatcher::create(page, *this));
&gt; &gt; +
&gt; &gt; +    return *m_inputDispatchersByPage.get(page.pageID());
&gt; 
&gt; This would be simpler and more efficient using ensure:
&gt; 
&gt; return m_inputDispatchersByPage.ensure(page.pageID(), [&amp;] { return
&gt; SimulatedInputDispatcher::create(page, *this); }).iterator-&gt;value;

OK

&gt; 
&gt; &gt; Source/WebKit/UIProcess/Automation/WebAutomationSession.cpp:1489
&gt; &gt; +    }
&gt; &gt; +}
&gt; 
&gt; GCC complains if we don&apos;t add a return here.

I think a RELEASE_ASSERT_NOT_REACHED also works, because it boils down to __builtin_unreachable().


&gt; &gt; Source/WebKit/UIProcess/Automation/WebAutomationSession.cpp:1493
&gt; &gt; +#if !USE(APPKIT) &amp;&amp;! PLATFORM(GTK)
&gt; 
&gt; Why?

The intent of this (when written 2 years ago) was to make the command simply fail with NotImplemented if the platform methods are not implemented. This is better than the scripts running but mysteriously failing because mouse/keyboard interactions aren&apos;t actually doing anything.

The actions command isn&apos;t guarded this way, so it would be consistent to make it return that error as well. I think it would be preferable to offer platformSupportsMouseActions() and so on and bail out early that way. I&apos;m happy to clean this up once the feature is in the tree.

&gt; &gt; Source/WebKit/UIProcess/Automation/WebAutomationSession.cpp:1659
&gt; &gt; +    }
&gt; &gt; +}
&gt; 
&gt; We need a return here too to make GCC happy.

Same as above I guess.

&gt; 
&gt; &gt; Source/WebKit/UIProcess/Automation/WebAutomationSession.cpp:1768
&gt; &gt; +    SimulatedInputDispatcher&amp; inputDispatcher = inputDispatcherForPage(*page);
&gt; &gt; +    if (inputDispatcher.isActive()) {
&gt; 
&gt; We don&apos;t need the local variable since it&apos;s only used for this.

It&apos;s used for .isActive() and .run(...)

&gt; 
&gt; &gt; Source/WebKit/UIProcess/Automation/WebAutomationSession.cpp:1790
&gt; &gt; +    SimulatedInputDispatcher&amp; inputDispatcher = inputDispatcherForPage(*page);
&gt; &gt; +    if (inputDispatcher.isActive())
&gt; &gt; +        inputDispatcher.cancel();
&gt; 
&gt; cancel does nothing when not active so we can simply call cancel here:
&gt; 
&gt; inputDispatcherForPage(*page).cancel();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415801</commentid>
    <comment_count>12</comment_count>
      <attachid>338286</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2018-04-18 17:14:46 -0700</bug_when>
    <thetext>Created attachment 338286
Address Carlos&apos; comments

This will no longer build against TOT because the patch under it got rolled out. I&apos;ll investigate that tonight and resubmit this patch once it&apos;s back in tree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415896</commentid>
    <comment_count>13</comment_count>
      <attachid>338194</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-04-19 01:04:18 -0700</bug_when>
    <thetext>Comment on attachment 338194
Fix some builds

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

&gt;&gt;&gt; Source/WebKit/UIProcess/Automation/SimulatedInputDispatcher.cpp:137
&gt;&gt;&gt; +        finish(std::nullopt);
&gt;&gt; 
&gt;&gt; I&apos;m not sure if move behavior is defined for functions, so I normally use std::exchange with nullptr instead of move for callbacks to be sure.
&gt; 
&gt; Carlos, you&apos;re right that the state of m_keyFrameTransitionCompletionHandler is undefined after a WTFMove.  In this case, it&apos;s a WTF::CompletionHandler that is moved then called.  I&apos;m pretty sure it&apos;ll end up becoming nullptr because of the property of CompletionHandlers that they null themselves out after being called once.  I wouldn&apos;t leave it like this, though.  I&apos;d do something like this:
&gt; std::exchange(m_keyFrameTransitionCompletionHandler, nullptr)(std::nullopt);
&gt; or even safer:
&gt; if (auto completionHandler = std::exchange(m_keyFrameTransitionCompletionHandler, nullptr))
&gt;     completionHandler(std::nullopt);
&gt; else
&gt;     ASSERT_NOT_REACHED();

This is what I always do to be sure.

&gt;&gt;&gt; Source/WebKit/UIProcess/Automation/WebAutomationSession.cpp:1489
&gt;&gt;&gt; +}
&gt;&gt; 
&gt;&gt; GCC complains if we don&apos;t add a return here.
&gt; 
&gt; I think a RELEASE_ASSERT_NOT_REACHED also works, because it boils down to __builtin_unreachable().

Right, either ASSERT + return or RELEASE_ASSERT.

&gt;&gt;&gt; Source/WebKit/UIProcess/Automation/WebAutomationSession.cpp:1493
&gt;&gt;&gt; +#if !USE(APPKIT) &amp;&amp;! PLATFORM(GTK)
&gt;&gt; 
&gt;&gt; Why?
&gt; 
&gt; The intent of this (when written 2 years ago) was to make the command simply fail with NotImplemented if the platform methods are not implemented. This is better than the scripts running but mysteriously failing because mouse/keyboard interactions aren&apos;t actually doing anything.
&gt; 
&gt; The actions command isn&apos;t guarded this way, so it would be consistent to make it return that error as well. I think it would be preferable to offer platformSupportsMouseActions() and so on and bail out early that way. I&apos;m happy to clean this up once the feature is in the tree.

I mean why this particular change, not the platform ifdefs

&gt;&gt;&gt; Source/WebKit/UIProcess/Automation/WebAutomationSession.cpp:1768
&gt;&gt;&gt; +    if (inputDispatcher.isActive()) {
&gt;&gt; 
&gt;&gt; We don&apos;t need the local variable since it&apos;s only used for this.
&gt; 
&gt; It&apos;s used for .isActive() and .run(...)

Oh!, indeed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415902</commentid>
    <comment_count>14</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-04-19 06:16:15 -0700</bug_when>
    <thetext>I&apos;ve been reading the spec, and I&apos;m a bit confused. I don&apos;t know exactly what parts are supposed to be done by the driver and what by the automation session. References to the spec in the implementation would help I guess. At first I thought Step 4 (Dispatch actions) is what automation is doing, but I see it expects a pressed state, so the driver has to process something as well, right? Could you clarify what parts of the spec are done by each part (driver, automation)? Do the driver keep the input sources list and input source states table?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415929</commentid>
    <comment_count>15</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2018-04-19 08:50:16 -0700</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #14)
&gt; I&apos;ve been reading the spec, and I&apos;m a bit confused. I don&apos;t know exactly
&gt; what parts are supposed to be done by the driver and what by the automation
&gt; session. References to the spec in the implementation would help I guess. At
&gt; first I thought Step 4 (Dispatch actions) is what automation is doing, but I
&gt; see it expects a pressed state, so the driver has to process something as
&gt; well, right? Could you clarify what parts of the spec are done by each part
&gt; (driver, automation)? Do the driver keep the input sources list and input
&gt; source states table?

The driver side is responsible for parsing the JSON, validating source type vs action properties, and transposing the per-input source action list into a per-tick action list. Rather than an action list, it&apos;s a list of states and the events/actions to go from one state to the next are inferred by SimulatedInputDispatcher. This abstracts away from the Pointer Events terminology the spec uses, and allows WebKit to dispatch whatever events it needs to (i.e., touch events will differ from what pointer events would do).

Most of the &quot;process a foo action&quot; stuff happens in the driver. I&apos;ll try to add relevant spec sections in the WebKit side; for some reason I didn&apos;t think to add them but I did put them in the Safari patch.

For practical reasons, there are only a fixed set of input sources right now. At least on Mac, you can&apos;t independently address &gt;1 mouse or &gt;1 keyboard from web content. So, there are singleton input sources. In the protocol these still have symbolic names provided by the REST API client, and the WebKit side unswizzles them into Ref&lt;SimulatedInputSource&gt;.

One thing I would point out is that the driver side keeps track of the last used states for each input source, so that it can compute the initial state correctly. Each state is computed as a copy of the previous state for the input source, plus the effect of the requested action (i.e., mousedown/mouseup -&gt; pressedMouseButtons state changes, mouse move -&gt; location changes). It is kind of annoying to track the state in the driver and in the browser, but it&apos;s necessary given the state transition-based design.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415950</commentid>
    <comment_count>16</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2018-04-19 09:31:22 -0700</bug_when>
    <thetext>(In reply to Brian Burg from comment #15)
&gt; (In reply to Carlos Garcia Campos from comment #14)
&gt; &gt; I&apos;ve been reading the spec, and I&apos;m a bit confused. I don&apos;t know exactly
&gt; &gt; what parts are supposed to be done by the driver and what by the automation
&gt; &gt; session. References to the spec in the implementation would help I guess. At
&gt; &gt; first I thought Step 4 (Dispatch actions) is what automation is doing, but I
&gt; &gt; see it expects a pressed state, so the driver has to process something as
&gt; &gt; well, right? Could you clarify what parts of the spec are done by each part
&gt; &gt; (driver, automation)? Do the driver keep the input sources list and input
&gt; &gt; source states table?
&gt; 
&gt; The driver side is responsible for parsing the JSON, validating source type
&gt; vs action properties, and transposing the per-input source action list into
&gt; a per-tick action list. Rather than an action list, it&apos;s a list of states
&gt; and the events/actions to go from one state to the next are inferred by
&gt; SimulatedInputDispatcher. This abstracts away from the Pointer Events
&gt; terminology the spec uses, and allows WebKit to dispatch whatever events it
&gt; needs to (i.e., touch events will differ from what pointer events would do).
&gt; 
&gt; Most of the &quot;process a foo action&quot; stuff happens in the driver. I&apos;ll try to
&gt; add relevant spec sections in the WebKit side; for some reason I didn&apos;t
&gt; think to add them but I did put them in the Safari patch.
&gt; 
&gt; For practical reasons, there are only a fixed set of input sources right
&gt; now. At least on Mac, you can&apos;t independently address &gt;1 mouse or &gt;1
&gt; keyboard from web content. So, there are singleton input sources. In the
&gt; protocol these still have symbolic names provided by the REST API client,
&gt; and the WebKit side unswizzles them into Ref&lt;SimulatedInputSource&gt;.
&gt; 
&gt; One thing I would point out is that the driver side keeps track of the last
&gt; used states for each input source, so that it can compute the initial state
&gt; correctly. Each state is computed as a copy of the previous state for the
&gt; input source, plus the effect of the requested action (i.e.,
&gt; mousedown/mouseup -&gt; pressedMouseButtons state changes, mouse move -&gt;
&gt; location changes). It is kind of annoying to track the state in the driver
&gt; and in the browser, but it&apos;s necessary given the state transition-based
&gt; design.

Also note that some of the smaller points, such as element-relative coordinates, are not yet implemented. For that, the location field will be an optional &apos;InputSourceLocation&apos; with element handle, x, y, etc. I can add some placeholder bugs for those tasks if I remember them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1416079</commentid>
    <comment_count>17</comment_count>
      <attachid>338363</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2018-04-19 14:59:16 -0700</bug_when>
    <thetext>Created attachment 338363
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1416096</commentid>
    <comment_count>18</comment_count>
      <attachid>338371</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2018-04-19 15:34:31 -0700</bug_when>
    <thetext>Created attachment 338371
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1416122</commentid>
    <comment_count>19</comment_count>
      <attachid>338379</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2018-04-19 16:49:00 -0700</bug_when>
    <thetext>Created attachment 338379
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1416132</commentid>
    <comment_count>20</comment_count>
      <attachid>338383</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2018-04-19 17:11:53 -0700</bug_when>
    <thetext>Created attachment 338383
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1416147</commentid>
    <comment_count>21</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2018-04-19 18:45:27 -0700</bug_when>
    <thetext>Committed r230830: &lt;https://trac.webkit.org/changeset/230830&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>337922</attachid>
            <date>2018-04-13 13:48:57 -0700</date>
            <delta_ts>2018-04-16 23:49:16 -0700</delta_ts>
            <desc>WIP - depends on 184462</desc>
            <filename>bug-184603-20180413134856.patch</filename>
            <type>text/plain</type>
            <size>97719</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwNTUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDdlOWVkNzk1NmJkYTFlZjNl
ZjI5MjU0YWM3NDE2YTljN2IzNzExMDQuLjhkZmNhZDRhZmRmMjUxOTEzMjBhOWQ1MWU2NjQ3OTU1
YzE2OWI2YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODIgQEAKKzIwMTgtMDQtMTMgIEJyaWFuIEJ1
cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEF1dG9tYXRpb246IGFkZCBzdXBw
b3J0IGZvciBtb3VzZS9rZXlib2FyZCBpbnRlcmFjdGlvbiBzZXF1ZW5jZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NDYwMworICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMzk0MjE4Mzk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIG5ldyBwcm90b2NvbCBtZXRob2RzIGFuZCBXZWJLaXQgc3VwcG9y
dCBmb3IgaW1wbGVtZW50aW5nIHRoZSBXM0MgQWN0aW9ucyBBUEkuCisgICAgICAgIFRoaXMgaXMg
YSBnZW5lcmljIGNvbW1hbmQgZm9yIHNlbmRpbmcgbG93LWxldmVsIG1vdXNlLCBrZXksIGFuZCB0
b3VjaCBldmVudHMgdG8KKyAgICAgICAgdGVzdCBwYWdlIGJlaGF2aW9yIHdoZW4gcGVyZm9ybWlu
ZyBkcmFnLWFuZC1kcm9wLCBnZXN0dXJlcywgb3Igc3BlY2lmaWMga2V5ZG93bi9rZXl1cHMuCisK
KyAgICAgICAgVG8gaW1wbGVtZW50IHRoaXMgZnVuY3Rpb25hbGl0eSwgdGhpcyBwYXRjaCBhZGRz
IFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlciwgYSBjbGFzcworICAgICAgICBmb3IgZGlzcGF0Y2hp
bmcgaW5wdXQgZXZlbnRzIGFzeW5jaHJvbm91c2x5LiBTaW1pbGFyIHRvIHRoZSBXZWJEcml2ZXIg
c3BlY2lmaWNhdGlvbiwKKyAgICAgICAgdGhpcyBpcyBkZXNpZ25lZCBhcyBhIGtleWZyYW1pbmcg
QVBJLiBDYWxsZXJzIHNldCB1cCBzZXZlcmFsICJpbnB1dCBzb3VyY2VzIiBzdWNoCisgICAgICAg
IGFzIGtleWJvYXJkIG9yIG1vdXNlLCBhbmQgdGhlbiBzcGVjaWZ5IHRoZSBzdGF0ZXMgb2YgdGhh
dCBpbnB1dCBzb3VyY2Ugb3ZlciB0aW1lLiBUaGUKKyAgICAgICAgZGlzcGF0Y2hlciBjYWxjdWxh
dGVzIGRpZmZzIGJldHdlZW4gdGhlIHByZXZpb3VzIGFuZCBjdXJyZW50IGtleWZyYW1lcyBhbmQg
Z2VuZXJhdGVzCisgICAgICAgIHRoZSBhcHByb3ByaWF0ZSBldmVudHMgdGhhdCB3b3VsZCBoYXBw
ZW4gaWYgYSB1c2VyIGNhdXNlZCB0aGUgc3RhdGUgdHJhbnNpdGlvbi4KKworICAgICAgICBGb3Ig
ZXhhbXBsZSwgaWYgYSBtb3VzZSBpbnB1dCBzb3VyY2UncyBzdGF0ZSBjaGFuZ2VzLCB0aGUgZGlz
cGF0Y2hlciBzZW5kcyBzeW50aGV0aWMgbW91c2Vtb3ZlLAorICAgICAgICBtb3VzZWRvd24sIG9y
IG1vdXNldXAgZXZlbnRzIGRlcGVuZGluZyBvbiB0aGUgcHJlLSBhbmQgcG9zdC1zdGF0ZS4gVGhp
cyBpcyB1bmludGVyZXN0aW5nCisgICAgICAgIGFuZCBvdmVyY29tcGxpY2F0ZWQgZm9yIHNpbXBs
ZSBrZXkgYW5kIG1vdXNlIHByZXNzZXMsIGJ1dCBpdCdzIHJlYWxseSBkZXNpZ25lZCB3aXRoIGFu
CisgICAgICAgIGV5ZSB0b3dhcmRzIHN1cHBvcnRpbmcgbW91c2Vtb3ZlIGludGVycG9sYXRpb24g
YW5kIHRvdWNoIGV2ZW50IGludGVycG9sYXRpb24gaW4gbGF0ZXIgcGF0Y2hlcy4KKworICAgICAg
ICBUaGUgc3RyYXRlZ3kgZm9yIGRpc3BhdGNoaW5nIGV2ZW50cyBkZXBlbmRzIG9uIHRoZSBpbnB1
dCBzb3VyY2UgdHlwZTsgcmlnaHQgbm93LCB0aGVzZQorICAgICAgICBtYXAgZGlyZWN0bHkgdG8g
dGhlIGV4aXN0aW5nIHBsYXRmb3JtU2ltdWxhdGV7TW91c2UsIEtleWJvYXJkfUludGVyYWN0aW9u
IG1ldGhvZHMuIEluCisgICAgICAgIHRoZSBmdXR1cmUsIHRoZSBkaXNwYXRjaCBzdHJhdGVneSBt
YXkgYmUgZWxhYm9yYXRlZCBmb3IgZ2VzdHVyZSBhbmQgbW91c2Vtb3ZlIGludGVycG9sYXRpb24u
CisKKyAgICAgICAgVGhpcyBwYXRjaCBkZXBlbmRzIG9uIHN1cHBvcnQgYWRkZWQgaW4gYnVnIDE4
NDQ2Mi4KKworICAgICAgICBObyB0ZXN0cyB5ZXQuIFdoZW4gdGhpcyBjb21tYW5kIGlzIGhvb2tl
ZCB1cCB0byBhIGRyaXZlciwgdGhlIGNvZGUgd2lsbCBiZSBleGVyY2lzZWQgYnkKKyAgICAgICAg
VzNDIGFjdGlvbnMgdGVzdCBzdWl0ZSwgd2hpY2ggaXMgZmFpcmx5IGNvbXBsZXggYXQgdGhpcyBw
b2ludCByZWxhdGl2ZSB0byB1c2VyIGNvZGUuCisKKyAgICAgICAgTWlub3IgY2hhbmdlcyB5ZXQg
dG8gYmUgZG9jdW1lbnRlZCBpbiB0aGUgQ2hhbmdlbG9nOgorICAgICAgICAtIHJlbW92ZSBtX3Np
bXVsYXRpbmdVc2VySW50ZXJhY3Rpb24KKyAgICAgICAgLSBTaW11bGF0ZWRJbnB1dERpc3BhdGNo
ZXIgaW50ZXJuYWxzCisgICAgICAgIC0gU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjpDbGllbnQg
bWV0aG9kcworICAgICAgICAtIHRlYXJkb3duIG9mIGRpc3BhdGNoZXIgd2hlbiBwYWdlIGNsb3Nl
cworICAgICAgICAtIGNsZWFudXAgb2YgcGxhdGZvcm0gc2ltdWxhdGlvbiBtZXRob2RzCisKKyAg
ICAgICAgTWlub3IgdGhpbmdzIHRvIGJlIGZpeGVkOgorICAgICAgICAtIEdUSyBhbmQgaU9TIHBs
YXRmb3JtIG1ldGhvZHMKKworICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL0F1dG9tYXRp
b24uanNvbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vz
c2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpXZWJBdXRv
bWF0aW9uU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpt
b3VzZUV2ZW50c0ZsdXNoZWRGb3JQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlv
blNlc3Npb246OmtleWJvYXJkRXZlbnRzRmx1c2hlZEZvclBhZ2UpOgorICAgICAgICAoV2ViS2l0
OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6d2lsbENsb3NlUGFnZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYkF1dG9tYXRpb25TZXNzaW9uOjppc1NpbXVsYXRpbmdVc2VySW50ZXJhY3Rpb24gY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6aW5wdXREaXNwYXRjaGVy
Rm9yUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjppbnB1dFNv
dXJjZUZvclR5cGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lv
bjo6c2ltdWxhdGVNb3VzZUludGVyYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21h
dGlvblNlc3Npb246OnNpbXVsYXRlS2V5Ym9hcmRJbnRlcmFjdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OnByb3RvY29sTW91c2VCdXR0b25Ub1dlYk1vdXNlRXZlbnRCdXR0b24pOgorICAgICAgICAo
V2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGVyZm9ybU1vdXNlSW50ZXJhY3Rpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGVyZm9ybUtleWJvYXJkSW50
ZXJhY3Rpb25zKToKKyAgICAgICAgKFdlYktpdDo6c2ltdWxhdGVkSW5wdXRTb3VyY2VUeXBlRnJv
bVByb3RvY29sU291cmNlVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNz
aW9uOjpwZXJmb3JtSW50ZXJhY3Rpb25TZXF1ZW5jZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1
dG9tYXRpb25TZXNzaW9uOjpjYW5jZWxJbnRlcmFjdGlvblNlcXVlbmNlKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BdXRvbWF0aW9uL2d0ay9XZWJBdXRvbWF0aW9uU2Vzc2lvbkd0ay5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Om1vdXNlQnV0dG9uVG9HZGtCdXR0b24pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZUtl
eWJvYXJkSW50ZXJhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lv
bjo6cGxhdGZvcm1TaW11bGF0ZUtleVN0cm9rZSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL0F1dG9tYXRpb24vaW9zL1dlYkF1dG9tYXRpb25TZXNzaW9uSU9TLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZUtleWJvYXJkSW50
ZXJhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZv
cm1TaW11bGF0ZUtleVN0cm9rZSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0F1dG9t
YXRpb24vbWFjL1dlYkF1dG9tYXRpb25TZXNzaW9uTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpX
ZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24pOgor
ICAgICAgICAoV2ViS2l0Ojp2aXJ0dWFsS2V5SGFzU3RpY2t5TW9kaWZpZXIpOgorICAgICAgICAo
V2ViS2l0OjprZXlDb2RlRm9yVmlydHVhbEtleSk6CisgICAgICAgIChXZWJLaXQ6OmV2ZW50TW9k
aWZpZXJGbGFnc0ZvclZpcnR1YWxLZXkpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9u
U2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZUtleWJvYXJkSW50ZXJhY3Rpb24pOgorICAgICAgICAo
V2ViS2l0OjprZXlIYXNTdGlja3lNb2RpZmllcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
OldlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlS2V5U3Ryb2tlKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOC0w
NC0xMSAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIFdl
YiBBdXRvbWF0aW9uOiBhZGQgU1BJIHRvIHRlcm1pbmF0ZSBhdXRvbWF0aW9uIHNlc3Npb24gYW5k
IGRpc2Nvbm5lY3QgdGhlIHJlbW90ZSBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0F1dG9tYXRpb24vQXV0b21hdGlvbi5qc29uIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQXV0b21hdGlvbi9BdXRvbWF0aW9uLmpzb24KaW5kZXggN2U4NmQxNDljMjVjMTkxNDA0MjFk
Mzg4NGE1MWJiNmMwZjllNjI5MC4uZjc1ZDIwMzg2MjZmOGU0NDU5YjcwMzI1ZTlkZDU3ZTYwMzQ5
NmZkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9BdXRv
bWF0aW9uLmpzb24KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9BdXRv
bWF0aW9uLmpzb24KQEAgLTcyLDcgKzcyLDggQEAKICAgICAgICAgICAgICAgICAiRWxlbWVudE5v
dEludGVyYWN0YWJsZSIsCiAgICAgICAgICAgICAgICAgIkVsZW1lbnROb3RTZWxlY3RhYmxlIiwK
ICAgICAgICAgICAgICAgICAiU2NyZWVuc2hvdEVycm9yIiwKLSAgICAgICAgICAgICAgICAiVW5l
eHBlY3RlZEFsZXJ0T3BlbiIKKyAgICAgICAgICAgICAgICAiVW5leHBlY3RlZEFsZXJ0T3BlbiIs
CisgICAgICAgICAgICAgICAgIlRhcmdldE91dE9mQm91bmRzIgogICAgICAgICAgICAgXQogICAg
ICAgICB9LAogICAgICAgICB7CkBAIC0yNDQsNiArMjQ1LDQ0IEBACiAgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJwZXJtaXNzaW9uIiwgIiRyZWYiOiAiU2Vzc2lvblBlcm1pc3Npb24iIH0sCiAg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ2YWx1ZSIsICJ0eXBlIjogImJvb2xlYW4iIH0KICAg
ICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgImlkIjogIklu
cHV0U291cmNlVHlwZSIsCisgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAorICAgICAgICAg
ICAgImVudW0iOiBbCisgICAgICAgICAgICAgICAgIk1vdXNlIiwKKyAgICAgICAgICAgICAgICAi
S2V5Ym9hcmQiLAorICAgICAgICAgICAgICAgICJUb3VjaCIKKyAgICAgICAgICAgIF0KKyAgICAg
ICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgImlkIjogIklucHV0U291cmNlIiwKKyAgICAg
ICAgICAgICJ0eXBlIjogIm9iamVjdCIsCisgICAgICAgICAgICAicHJvcGVydGllcyI6IFsKKyAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogInNvdXJjZUlkIiwgInR5cGUiOiAiaW50ZWdlciIsICJk
ZXNjcmlwdGlvbiI6ICJBIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGlzIGlucHV0IHNvdXJjZS4i
IH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzb3VyY2VUeXBlIiwgIiRyZWYiOiAiSW5w
dXRTb3VyY2VUeXBlIiwgImRlc2NyaXB0aW9uIjogIlRoZSB0eXBlIG9mIHRoaXMgaW5wdXQgc291
cmNlLiBUaGlzIGFmZmVjdHMgd2hhdCBpbnB1dCBzb3VyY2Ugc3RhdGUgZmllbGRzIGFyZSB2YWxp
ZCBmb3IgdGhpcyBpbnB1dCBzb3VyY2UuIiB9CisgICAgICAgICAgICBdCisgICAgICAgIH0sCisg
ICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJJbnRlcmFjdGlvblN0ZXAiLAorICAgICAgICAg
ICAgImRlc2NyaXB0aW9uIjogIkEgc2V0IG9mIGlucHV0IHNvdXJjZSBzdGF0ZXMgdG8gd2hpY2gg
YWxsIGFwcGxpY2FibGUgaW5wdXQgc291cmNlcyBtdXN0IHRyYW5zaXRpb24gYmVmb3JlIGZ1cnRo
ZXIgc3RlcHMgbWF5IGJlIHByb2Nlc3NlZC4gSWYgYW4gaW5wdXQgc291cmNlIGRvZXMgbm90IGhh
dmUgYSBjb3JyZXNwb25kaW5nIHN0YXRlIGluIGEgc3RlcCwgaXRzIHN0YXRlIGFzc3VtZWQgdG8g
YmUgJ3JlbGVhc2VkJyBmb3IgdGhhdCBzdGVwLiIsCisgICAgICAgICAgICAidHlwZSI6ICJvYmpl
Y3QiLAorICAgICAgICAgICAgInByb3BlcnRpZXMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJzdGF0ZXMiLCAidHlwZSI6ICJhcnJheSIsICJpdGVtcyI6IHsgIiRyZWYiOiAiSW5wdXRT
b3VyY2VTdGF0ZSIgfSwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIkEgbGlzdCBv
ZiBuZXcgaW5wdXQgc3RhdGVzIGZvciBpbnB1dCBzb3VyY2VzIHRoYXQgbXVzdCB0cmFuc2l0aW9u
IGR1cmluZyB0aGlzIHN0ZXAuIFNvdXJjZSBzdGF0ZSB0cmFuc2l0aW9ucyB0aGF0IGNhbm5vdCBi
ZSBwZXJmb3JtZWQgY29uY3VycmVudGx5IChpLmUuLCB0b3VjaCBnZXN0dXJlcykgYXJlIHBlcmZv
cm1lZCBzZXF1ZW50aWFsbHkgaW4gdGhlIG9yZGVyIHRoZXkgYXJlIGxpc3RlZC4iIH0KKyAgICAg
ICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgImlkIjogIklucHV0
U291cmNlU3RhdGUiLAorICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKKyAgICAgICAgICAg
ICJkZXNjcmlwdGlvbiI6ICJBIG5ldyBzdGF0ZSBmb3IgYSBzcGVjaWZpYyBpbnB1dCBzb3VyY2Uu
IEFsbCBzdGF0ZS1yZWxhdGVkIGZpZWxkcyBhcmUgb3B0aW9uYWwgYW5kIG11c3QgYmUgYXBwbGlj
YWJsZSB0byB0aGUgSW5wdXRTb3VyY2UgcmVmZXJlbmNlZCBieSAnc291cmNlSWQnLiBJZiBubyBz
dGF0ZS1yZWxhdGVkIGZpZWxkcyBhcmUgc3BlY2lmaWVkLCB0aGUgc3RhdGUgaXMgYXNzdW1lZCB0
byByZW1haW4gdGhlIHNhbWUgYXMgaW4gdGhlIHByZXZpb3VzIHN0ZXAgKGkuZS4sICdzdXN0YWlu
ZWQnKS4iLAorICAgICAgICAgICAgInByb3BlcnRpZXMiOiBbCisgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJzb3VyY2VJZCIsICJ0eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAiVGhl
IGlucHV0IHNvdXJjZSB3aG9zZSBzdGF0ZSBpcyBkZXNjcmliZWQgYnkgdGhpcyBvYmplY3QuIiB9
LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicHJlc3NlZENoYXJLZXkiLCAidHlwZSI6ICJz
dHJpbmciLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiRm9yICdrZXlib2FyZCcg
aW5wdXQgc291cmNlcywgc3BlY2lmaWVzIGEgY2hhcmFjdGVyIGtleSB0aGF0IGhhcyAncHJlc3Nl
ZCcgc3RhdGUuIFVubWVudGlvbmVkIGNoYXJhY3RlciBrZXlzIGFyZSBhc3N1bWVkIHRvIGhhdmUg
YSAncmVsZWFzZWQnIHN0YXRlLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInByZXNz
ZWRWaXJ0dWFsS2V5IiwgIiRyZWYiOiAiVmlydHVhbEtleSIsICJvcHRpb25hbCI6IHRydWUsICJk
ZXNjcmlwdGlvbiI6ICJGb3IgJ2tleWJvYXJkJyBpbnB1dCBzb3VyY2VzLCBzcGVjaWZpZXMgYSB2
aXJ0dWFsIGtleSB0aGF0IGhhcyBhICdwcmVzc2VkJyBzdGF0ZS4gVW5tZW50aW9uZWQgdmlydHVh
bCBrZXlzIGFyZSBhc3N1bWVkIHRvIGhhdmUgYSAncmVsZWFzZWQnIHN0YXRlLiIgfSwKKyAgICAg
ICAgICAgICAgICB7ICJuYW1lIjogInByZXNzZWRCdXR0b24iLCAiJHJlZiI6ICJNb3VzZUJ1dHRv
biIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJGb3IgJ21vdXNlJyBpbnB1dCBz
b3VyY2VzLCBzcGVjaWZpZXMgd2hpY2ggbW91c2UgYnV0dG9uIGhhcyBhICdwcmVzc2VkJyBzdGF0
ZS4gVW5tZW50aW9uZWQgbW91c2UgYnV0dG9ucyBhcmUgYXNzdW1lZCB0byBoYXZlIGEgJ3JlbGVh
c2VkJyBzdGF0ZS4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJsb2NhdGlvbiIsICIk
cmVmIjogIlBvaW50IiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIkZvciAnbW91
c2UnIG9yICd0b3VjaCcgaW5wdXQgc291cmNlcywgc3BlY2lmaWVzIGEgbG9jYXRpb24gaW4gdmll
dyBjb29yZGluYXRlcyB0byB3aGljaCB0aGUgaW5wdXQgc291cmNlIHNob3VsZCB0cmFuc2l0aW9u
LiBUcmFuc2l0aW9uaW5nIHRvIHRoaXMgc3RhdGUgbWF5IGludGVycG9sYXRlIGludGVtZWRpYXRl
IGlucHV0IHNvdXJjZSBzdGF0ZXMgdG8gYmV0dGVyIHNpbXVsYXRlIHJlYWwgdXNlciBtb3ZlbWVu
dHMgYW5kIGdlc3R1cmVzLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImR1cmF0aW9u
IiwgInR5cGUiOiAibnVtYmVyIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlRo
ZSBtaW5pbXVtIGFtb3VudCBvZiB0aW1lIHRoYXQgbXVzdCBlbGFwc2Ugd2hpbGUgdGhlIHJlbGV2
YW50IGlucHV0IHNvdXJjZSB0cmFuc2l0aW9ucyB0byB0aGlzIHN0YXRlLiIgfQorICAgICAgICAg
ICAgXQogICAgICAgICB9CiAgICAgXSwKICAgICAiY29tbWFuZHMiOiBbCkBAIC00MTMsNiArNDUy
LDI0IEBACiAgICAgICAgICAgICBdLAogICAgICAgICAgICAgImFzeW5jIjogdHJ1ZQogICAgICAg
ICB9LAorICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJwZXJmb3JtSW50ZXJhY3Rpb25T
ZXF1ZW5jZSIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUGVyZm9ybSBtdWx0aXBsZSBz
aW11bGF0ZWQgaW50ZXJhY3Rpb25zIG92ZXIgdGltZSB1c2luZyBhIGxpc3Qgb2YgaW5wdXQgc291
cmNlcyBhbmQgYSBsaXN0IG9mIHN0ZXBzLCB3aGVyZSBlYWNoIHN0ZXAgc3BlY2lmaWVzIGEgc3Rh
dGUgZm9yIGVhY2ggaW5wdXQgc291cmNlIGF0IHRoZSB0aW1lIHRoYXQgc3RlcCBpcyBwZXJmb3Jt
ZWQuIiwKKyAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAiaGFuZGxlIiwgIiRyZWYiOiAiQnJvd3NpbmdDb250ZXh0SGFuZGxlIiwgImRlc2NyaXB0
aW9uIjogIlRoZSBicm93c2luZyBjb250ZXh0IHRvIGJlIGludGVyYWN0ZWQgd2l0aC4iIH0sCisg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJpbnB1dFNvdXJjZXMiLCAidHlwZSI6ICJhcnJheSIs
ICJpdGVtcyI6IHsgIiRyZWYiOiAiSW5wdXRTb3VyY2UiIH0sICJkZXNjcmlwdGlvbiI6ICJBbGwg
aW5wdXQgc291cmNlcyB0aGF0IGFyZSB1c2VkIHRvIHBlcmZvcm0gdGhpcyBpbnRlcmFjdGlvbiBz
ZXF1ZW5jZS4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzdGVwcyIsICJ0eXBlIjog
ImFycmF5IiwgIml0ZW1zIjogeyAiJHJlZiI6ICJJbnRlcmFjdGlvblN0ZXAiIH0sICJkZXNjcmlw
dGlvbiI6ICJBIGxpc3Qgb2Ygc3RlcHMgdGhhdCBhcmUgZXhlY3V0ZWQgaW4gb3JkZXIuIiB9Cisg
ICAgICAgICAgICBdLAorICAgICAgICAgICAgImFzeW5jIjogdHJ1ZQorICAgICAgICB9LAorICAg
ICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJjYW5jZWxJbnRlcmFjdGlvblNlcXVlbmNlIiwK
KyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJDYW5jZWwgYW4gYWN0aXZlIGludGVyYWN0aW9u
IHNlcXVlbmNlIHRoYXQgaXMgY3VycmVudGx5IGluIHByb2dyZXNzLiIsCisgICAgICAgICAgICAi
cGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImhhbmRsZSIsICIkcmVm
IjogIkJyb3dzaW5nQ29udGV4dEhhbmRsZSIsICJkZXNjcmlwdGlvbiI6ICJUaGUgYnJvd3Npbmcg
Y29udGV4dCB0byBiZSBpbnRlcmFjdGVkIHdpdGguIiB9CisgICAgICAgICAgICBdLAorICAgICAg
ICAgICAgImFzeW5jIjogdHJ1ZQorICAgICAgICB9LAogICAgICAgICB7CiAgICAgICAgICAgICAi
bmFtZSI6ICJ0YWtlU2NyZWVuc2hvdCIsCiAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVGFr
ZSBhIHNjcmVlbnNob3Qgb2YgdGhlIGN1cnJlbnQgcGFnZSBvciBnaXZlbiBlbGVtZW50IGluIGEg
YnJvd3NpbmcgY29udGV4dC4iLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QXV0b21hdGlvbi9TaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQXV0b21hdGlvbi9TaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjVjNjViMzM0MDhmNjFhMWExY2E4YmRmNGMwZGVmNzQ4NmEyMDkxZGYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1NpbXVsYXRlZElucHV0
RGlzcGF0Y2hlci5jcHAKQEAgLTAsMCArMSwyNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmgiCisKKyNpbmNs
dWRlICJBdXRvbWF0aW9uUHJvdG9jb2xPYmplY3RzLmgiCisjaW5jbHVkZSAiV2ViQXV0b21hdGlv
blNlc3Npb24uaCIKKyNpbmNsdWRlICJXZWJBdXRvbWF0aW9uU2Vzc2lvbk1hY3Jvcy5oIgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworU2ltdWxhdGVkSW5wdXRLZXlGcmFtZTo6U2ltdWxhdGVkSW5w
dXRLZXlGcmFtZShWZWN0b3I8U3RhdGVFbnRyeT4mJiBlbnRyaWVzKQorICAgIDogc3RhdGVzKFdU
Rk1vdmUoZW50cmllcykpCit7Cit9CisKK1NlY29uZHMgU2ltdWxhdGVkSW5wdXRLZXlGcmFtZTo6
bWF4aW11bUR1cmF0aW9uKCkgY29uc3QKK3sKKyAgICBTZWNvbmRzIHJlc3VsdDsKKyAgICBmb3Ig
KGF1dG8mIGVudHJ5IDogc3RhdGVzKQorICAgICAgICByZXN1bHQgPSBzdGQ6Om1heChyZXN1bHQs
IGVudHJ5LnNlY29uZC5kdXJhdGlvbi52YWx1ZV9vcihTZWNvbmRzKDApKSk7CisgICAgCisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKworU2ltdWxhdGVkSW5wdXRLZXlGcmFtZSBTaW11bGF0ZWRJbnB1
dEtleUZyYW1lOjprZXlGcmFtZUZyb21TdGF0ZU9mSW5wdXRTb3VyY2VzKEhhc2hTZXQ8UmVmPFNp
bXVsYXRlZElucHV0U291cmNlPj4mIGlucHV0U291cmNlcykKK3sKKyAgICAvLyBUaGUgY2xpZW50
IG9mIHRoaXMgY2xhc3MgaXMgcmVxdWlyZWQgdG8gaW50ZXJuIFNpbXVsYXRlZElucHV0U291cmNl
IGluc3RhbmNlcyBpZiB0aGUgbGFzdCBzdGF0ZQorICAgIC8vIGZyb20gdGhlIHByZXZpb3VzIGNv
bW1hbmQgc2hvdWxkIGJlIHVzZWQgYXMgdGhlIGluaXRhbCBzdGF0ZSBmb3IgdGhlIG5leHQgY29t
bWFuZC4gVGhpcyBpcyB0aGUKKyAgICAvLyBjYXNlIGZvciBQZXJmb3JtIEFjdGlvbnMgYW5kIFJl
bGVhc2UgQWN0aW9ucywgYnV0IG5vdCBFbGVtZW50IENsaWNrIG9yIEVsZW1lbnQgU2VuZCBLZXlz
LgorICAgIFZlY3RvcjxTaW11bGF0ZWRJbnB1dEtleUZyYW1lOjpTdGF0ZUVudHJ5PiBlbnRyaWVz
OworICAgIGVudHJpZXMucmVzZXJ2ZUNhcGFjaXR5KGlucHV0U291cmNlcy5zaXplKCkpOworCisg
ICAgZm9yIChhdXRvJiBpbnB1dFNvdXJjZSA6IGlucHV0U291cmNlcykKKyAgICAgICAgZW50cmll
cy51bmNoZWNrZWRBcHBlbmQoc3RkOjpwYWlyPFNpbXVsYXRlZElucHV0U291cmNlJiwgU2ltdWxh
dGVkSW5wdXRTb3VyY2VTdGF0ZT4geyBpbnB1dFNvdXJjZS5nZXQoKSwgaW5wdXRTb3VyY2UtPnN0
YXRlIH0pOworCisgICAgcmV0dXJuIFNpbXVsYXRlZElucHV0S2V5RnJhbWUoV1RGTW92ZShlbnRy
aWVzKSk7Cit9CisKK1NpbXVsYXRlZElucHV0S2V5RnJhbWUgU2ltdWxhdGVkSW5wdXRLZXlGcmFt
ZTo6a2V5RnJhbWVUb1Jlc2V0SW5wdXRTb3VyY2VzKEhhc2hTZXQ8UmVmPFNpbXVsYXRlZElucHV0
U291cmNlPj4mIGlucHV0U291cmNlcykKK3sKKyAgICBWZWN0b3I8U2ltdWxhdGVkSW5wdXRLZXlG
cmFtZTo6U3RhdGVFbnRyeT4gZW50cmllczsKKyAgICBlbnRyaWVzLnJlc2VydmVDYXBhY2l0eShp
bnB1dFNvdXJjZXMuc2l6ZSgpKTsKKworICAgIGZvciAoYXV0byYgaW5wdXRTb3VyY2UgOiBpbnB1
dFNvdXJjZXMpCisgICAgICAgIGVudHJpZXMudW5jaGVja2VkQXBwZW5kKHN0ZDo6cGFpcjxTaW11
bGF0ZWRJbnB1dFNvdXJjZSYsIFNpbXVsYXRlZElucHV0U291cmNlU3RhdGU+IHsgaW5wdXRTb3Vy
Y2UuZ2V0KCksIFNpbXVsYXRlZElucHV0U291cmNlU3RhdGU6OmVtcHR5U3RhdGUoKSB9KTsKKwor
ICAgIHJldHVybiBTaW11bGF0ZWRJbnB1dEtleUZyYW1lKFdURk1vdmUoZW50cmllcykpOworfQor
ICAgIAorU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjpTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIo
V2ViUGFnZVByb3h5JiBwYWdlLCBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OkNsaWVudCYgY2xp
ZW50KQorICAgIDogbV9wYWdlKHBhZ2UpCisgICAgLCBtX2NsaWVudChjbGllbnQpCisgICAgLCBt
X2tleUZyYW1lVHJhbnNpdGlvbkR1cmF0aW9uVGltZXIoUnVuTG9vcDo6Y3VycmVudCgpLCB0aGlz
LCAmU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjprZXlGcmFtZVRyYW5zaXRpb25EdXJhdGlvblRp
bWVyRmlyZWQpCit7Cit9CisKK1NpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6flNpbXVsYXRlZElu
cHV0RGlzcGF0Y2hlcigpCit7CisgICAgQVNTRVJUKCFtX3J1bkNvbXBsZXRpb25IYW5kbGVyKTsK
KyAgICBBU1NFUlQoIW1fa2V5RnJhbWVUcmFuc2l0aW9uRHVyYXRpb25UaW1lci5pc0FjdGl2ZSgp
KTsKK30KKworYm9vbCBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OmlzQWN0aXZlKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gISFtX3J1bkNvbXBsZXRpb25IYW5kbGVyOworfQorCit2b2lkIFNpbXVs
YXRlZElucHV0RGlzcGF0Y2hlcjo6a2V5RnJhbWVUcmFuc2l0aW9uRHVyYXRpb25UaW1lckZpcmVk
KCkKK3sKKyAgICBBU1NFUlQobV9rZXlGcmFtZVRyYW5zaXRpb25Db21wbGV0aW9uSGFuZGxlcik7
CisKKyAgICBpZiAoaXNLZXlGcmFtZVRyYW5zaXRpb25Db21wbGV0ZSgpKQorICAgICAgICBtX2tl
eUZyYW1lVHJhbnNpdGlvbkNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7Cit9CisKK2Jv
b2wgU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjppc0tleUZyYW1lVHJhbnNpdGlvbkNvbXBsZXRl
KCkgY29uc3QKK3sKKyAgICBpZiAobV9pbnB1dFNvdXJjZVN0YXRlSW5kZXggPCBtX2lucHV0U291
cmNlcy5zaXplKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChtX2tleUZyYW1l
VHJhbnNpdGlvbkR1cmF0aW9uVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVy
Ojp0cmFuc2l0aW9uQmV0d2VlbktleUZyYW1lcyhjb25zdCBTaW11bGF0ZWRJbnB1dEtleUZyYW1l
JiBhLCBjb25zdCBTaW11bGF0ZWRJbnB1dEtleUZyYW1lJiBiLCBBdXRvbWF0aW9uQ29tcGxldGlv
bkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBtX2lucHV0U291cmNlU3RhdGVJ
bmRleCA9IDA7CisgICAgbV9rZXlGcmFtZVRyYW5zaXRpb25Db21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpOworCisgICAgbV9rZXlGcmFtZVRyYW5zaXRpb25EdXJh
dGlvblRpbWVyLnN0YXJ0T25lU2hvdChiLm1heGltdW1EdXJhdGlvbigpKTsKKworICAgIEZ1bmN0
aW9uPHZvaWQoKT4gc3RhcnROZXh0U3RhdGVUcmFuc2l0aW9uID0gW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgJnN0YXJ0TmV4dFN0YXRlVHJhbnNpdGlvbl0oKSB7CisgICAg
ICAgIC8vIFBlcmZvcm0gc3RhdGUgdHJhbnNpdGlvbnMgaW4gdGhlIG9yZGVyIHNwZWNpZmllZCBi
eSB0aGUgY3VycmVudEtleUZyYW1lLgorICAgICAgICArK21faW5wdXRTb3VyY2VTdGF0ZUluZGV4
OworICAgICAgICBpZiAoaXNLZXlGcmFtZVRyYW5zaXRpb25Db21wbGV0ZSgpKSB7CisgICAgICAg
ICAgICBhdXRvIGZpbmlzaCA9IFdURk1vdmUobV9rZXlGcmFtZVRyYW5zaXRpb25Db21wbGV0aW9u
SGFuZGxlcik7CisgICAgICAgICAgICBmaW5pc2goc3RkOjpudWxsb3B0KTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8mIG5leHRLZXlGcmFtZSA9IG1fa2V5
ZnJhbWVzW21fa2V5ZnJhbWVJbmRleF07CisgICAgICAgIGF1dG8mIHBvc3RTdGF0ZUVudHJ5ID0g
bmV4dEtleUZyYW1lLnN0YXRlc1ttX2lucHV0U291cmNlU3RhdGVJbmRleF07CisgICAgICAgIFNp
bXVsYXRlZElucHV0U291cmNlJiBpbnB1dFNvdXJjZSA9IHBvc3RTdGF0ZUVudHJ5LmZpcnN0Owor
CisgICAgICAgIHRyYW5zaXRpb25JbnB1dFNvdXJjZVRvU3RhdGUoaW5wdXRTb3VyY2UsIHBvc3RT
dGF0ZUVudHJ5LnNlY29uZCwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
JnN0YXJ0TmV4dFN0YXRlVHJhbnNpdGlvbl0oc3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFu
ZEVycm9yPiBlcnJvcikgeworICAgICAgICAgICAgaWYgKGVycm9yKSB7CisgICAgICAgICAgICAg
ICAgYXV0byBmaW5pc2ggPSBXVEZNb3ZlKG1fa2V5RnJhbWVUcmFuc2l0aW9uQ29tcGxldGlvbkhh
bmRsZXIpOworICAgICAgICAgICAgICAgIGZpbmlzaChlcnJvcik7CisgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzdGFydE5leHRTdGF0ZVRyYW5z
aXRpb24oKTsKKyAgICAgICAgfSk7CisgICAgfTsKKworICAgIHN0YXJ0TmV4dFN0YXRlVHJhbnNp
dGlvbigpOworfQorCit2b2lkIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6dHJhbnNpdGlvbklu
cHV0U291cmNlVG9TdGF0ZShTaW11bGF0ZWRJbnB1dFNvdXJjZSYgaW5wdXRTb3VyY2UsIGNvbnN0
IFNpbXVsYXRlZElucHV0U291cmNlU3RhdGUmIG5ld1N0YXRlLCBBdXRvbWF0aW9uQ29tcGxldGlv
bkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICAvLyBNYWtlIGNhc2VzIGFuZCBj
b25kaXRpb25hbHMgbW9yZSByZWFkYWJsZSBieSBhbGlhc2luZyBwcmUvcG9zdCBzdGF0ZXMgYXMg
J2EnIGFuZCAnYicuCisgICAgU2ltdWxhdGVkSW5wdXRTb3VyY2VTdGF0ZSBhID0gaW5wdXRTb3Vy
Y2Uuc3RhdGU7CisgICAgU2ltdWxhdGVkSW5wdXRTb3VyY2VTdGF0ZSBiID0gbmV3U3RhdGU7CisK
KyAgICBzd2l0Y2ggKGlucHV0U291cmNlLnR5cGUpIHsKKyAgICBjYXNlIFNpbXVsYXRlZElucHV0
U291cmNlOjpUeXBlOjpOdWxsOgorICAgICAgICAvLyBUaGUgbWF4aW11bSBkdXJhdGlvbiBpcyBo
YW5kbGVkIGF0IHRoZSBrZXlmcmFtZSBsZXZlbCBieSBtX2tleUZyYW1lVHJhbnNpdGlvbkR1cmF0
aW9uVGltZXIuCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgU2ltdWxhdGVkSW5wdXRTb3VyY2U6OlR5cGU6Ok1vdXNlOgor
ICAgICAgICBBU1NFUlQoYi5sb2NhdGlvbi5oYXNfdmFsdWUoKSk7CisgICAgICAgIGlmICghYS5w
cmVzc2VkTW91c2VCdXR0b24gJiYgYi5wcmVzc2VkTW91c2VCdXR0b24pCisgICAgICAgICAgICBt
X2NsaWVudC5zaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24obV9wYWdlLCBNb3VzZUludGVyYWN0aW9u
OjpEb3duLCBiLnByZXNzZWRNb3VzZUJ1dHRvbi52YWx1ZSgpLCBiLmxvY2F0aW9uLnZhbHVlKCks
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgZWxzZSBpZiAoYS5wcmVzc2Vk
TW91c2VCdXR0b24gJiYgIWIucHJlc3NlZE1vdXNlQnV0dG9uKQorICAgICAgICAgICAgbV9jbGll
bnQuc2ltdWxhdGVNb3VzZUludGVyYWN0aW9uKG1fcGFnZSwgTW91c2VJbnRlcmFjdGlvbjo6VXAs
IGEucHJlc3NlZE1vdXNlQnV0dG9uLnZhbHVlKCksIGIubG9jYXRpb24udmFsdWUoKSwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICBlbHNlIGlmIChhLmxvY2F0aW9uICE9IGIu
bG9jYXRpb24pCisgICAgICAgICAgICBtX2NsaWVudC5zaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24o
bV9wYWdlLCBNb3VzZUludGVyYWN0aW9uOjpNb3ZlLCBiLnByZXNzZWRNb3VzZUJ1dHRvbi52YWx1
ZV9vcihNb3VzZUJ1dHRvbjo6Tm9CdXR0b24pLCBiLmxvY2F0aW9uLnZhbHVlKCksIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTaW11bGF0
ZWRJbnB1dFNvdXJjZTo6VHlwZTo6S2V5Ym9hcmQ6CisgICAgICAgIGlmICgoIWEucHJlc3NlZENo
YXJLZXkgJiYgYi5wcmVzc2VkQ2hhcktleSkgfHwgKCFhLnByZXNzZWRWaXJ0dWFsS2V5ICYmIGIu
cHJlc3NlZFZpcnR1YWxLZXkpKQorICAgICAgICAgICAgbV9jbGllbnQuc2ltdWxhdGVLZXlib2Fy
ZEludGVyYWN0aW9uKG1fcGFnZSwgS2V5Ym9hcmRJbnRlcmFjdGlvbjo6S2V5UHJlc3MsIGIucHJl
c3NlZFZpcnR1YWxLZXksIGIucHJlc3NlZENoYXJLZXksIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKKyAgICAgICAgZWxzZSBpZiAoKGEucHJlc3NlZENoYXJLZXkgJiYgIWIucHJlc3NlZENo
YXJLZXkpIHx8IChhLnByZXNzZWRWaXJ0dWFsS2V5ICYmICFiLnByZXNzZWRWaXJ0dWFsS2V5KSkK
KyAgICAgICAgICAgIG1fY2xpZW50LnNpbXVsYXRlS2V5Ym9hcmRJbnRlcmFjdGlvbihtX3BhZ2Us
IEtleWJvYXJkSW50ZXJhY3Rpb246OktleVJlbGVhc2UsIGEucHJlc3NlZFZpcnR1YWxLZXksIGEu
cHJlc3NlZENoYXJLZXksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBTaW11bGF0ZWRJbnB1dFNvdXJjZTo6VHlwZTo6VG91Y2g6CisgICAg
ICAgIC8vIE5vdCBzdXBwb3J0ZWQgeWV0LgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQVVUT01BVElPTl9DT01NQU5EX0VSUk9SX1dJVEhf
TkFNRShOb3RJbXBsZW1lbnRlZCkpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3ZvaWQg
U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjpydW4oVmVjdG9yPFNpbXVsYXRlZElucHV0S2V5RnJh
bWU+JiYga2V5RnJhbWVzLCBIYXNoU2V0PFJlZjxTaW11bGF0ZWRJbnB1dFNvdXJjZT4+JiBpbnB1
dFNvdXJjZXMsIEF1dG9tYXRpb25Db21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVy
KQoreworICAgIEFTU0VSVCghaXNBY3RpdmUoKSk7CisgICAgaWYgKGlzQWN0aXZlKCkpIHsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoQVVUT01BVElPTl9DT01NQU5EX0VSUk9SX1dJVEhfTkFN
RShJbnRlcm5hbEVycm9yKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3J1bkNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcik7CisgICAgZm9yIChj
b25zdCBSZWY8U2ltdWxhdGVkSW5wdXRTb3VyY2U+JiBpbnB1dFNvdXJjZSA6IGlucHV0U291cmNl
cykKKyAgICAgICAgbV9pbnB1dFNvdXJjZXMuYWRkKGlucHV0U291cmNlLmNvcHlSZWYoKSk7CisK
KyAgICBtX2tleWZyYW1lcy5yZXNlcnZlQ2FwYWNpdHkoa2V5RnJhbWVzLnNpemUoKSArIDEpOwor
ICAgIG1fa2V5ZnJhbWVzLmFwcGVuZChTaW11bGF0ZWRJbnB1dEtleUZyYW1lOjprZXlGcmFtZUZy
b21TdGF0ZU9mSW5wdXRTb3VyY2VzKG1faW5wdXRTb3VyY2VzKSk7CisgICAgbV9rZXlmcmFtZXMu
YXBwZW5kVmVjdG9yKFdURk1vdmUoa2V5RnJhbWVzKSk7CisKKyAgICBGdW5jdGlvbjx2b2lkKCk+
IHRyYW5zaXRpb25Ub05leHRLZXlGcmFtZSA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksICZ0cmFuc2l0aW9uVG9OZXh0S2V5RnJhbWVdKCkgeworICAgICAgICArK21fa2V5
ZnJhbWVJbmRleDsKKyAgICAgICAgaWYgKG1fa2V5ZnJhbWVJbmRleCA9PSBtX2tleWZyYW1lcy5z
aXplKCkpIHsKKyAgICAgICAgICAgIGZpbmlzaERpc3BhdGNoaW5nKHN0ZDo6bnVsbG9wdCk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB0cmFuc2l0aW9uQmV0d2Vl
bktleUZyYW1lcyhtX2tleWZyYW1lc1ttX2tleWZyYW1lSW5kZXggLSAxXSwgbV9rZXlmcmFtZXNb
bV9rZXlmcmFtZUluZGV4XSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
JnRyYW5zaXRpb25Ub05leHRLZXlGcmFtZV0oc3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFu
ZEVycm9yPiBlcnJvcikgeworICAgICAgICAgICAgaWYgKGVycm9yKSB7CisgICAgICAgICAgICAg
ICAgZmluaXNoRGlzcGF0Y2hpbmcoZXJyb3IpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgdHJhbnNpdGlvblRvTmV4dEtleUZyYW1lKCk7Cisg
ICAgICAgIH0pOworICAgIH07CisKKyAgICB0cmFuc2l0aW9uVG9OZXh0S2V5RnJhbWUoKTsKK30K
Kwordm9pZCBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OmNhbmNlbCgpCit7CisgICAgLy8gSWYg
d2Ugd2VyZSB3YWl0aW5nIGZvciBtX2NsaWVudCB0byBmaW5pc2ggYW4gaW50ZXJhY3Rpb24gYW5k
IHRoZSBpbnRlcmFjdGlvbiBoYWQgYW4gZXJyb3IsCisgICAgLy8gdGhlbiB0aGUgcmVzdCBvZiB0
aGUgYXN5bmMgY2hhaW4gd2lsbCBoYXZlIGJlZW4gdG9ybiBkb3duLiBJZiB3ZSBhcmUganVzdCB3
YWl0aW5nIG9uIGEKKyAgICAvLyBkaXNwYXRjaCB0aW1lciwgdGhlbiB0aGlzIHdpbGwgY2FuY2Vs
IHRoZSB0aW1lciBhbmQgY2xlYXIKKworICAgIGlmIChpc0FjdGl2ZSgpKQorICAgICAgICBmaW5p
c2hEaXNwYXRjaGluZyhBVVRPTUFUSU9OX0NPTU1BTkRfRVJST1JfV0lUSF9OQU1FKEludGVybmFs
RXJyb3IpKTsKK30KKwordm9pZCBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OmZpbmlzaERpc3Bh
dGNoaW5nKHN0ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4gZXJyb3IpCit7Cisg
ICAgaWYgKG1fa2V5RnJhbWVUcmFuc2l0aW9uRHVyYXRpb25UaW1lci5pc0FjdGl2ZSgpKQorICAg
ICAgICBtX2tleUZyYW1lVHJhbnNpdGlvbkR1cmF0aW9uVGltZXIuc3RvcCgpOworCisgICAgYXV0
byBmaW5pc2ggPSBXVEZNb3ZlKG1fcnVuQ29tcGxldGlvbkhhbmRsZXIpOworICAgIG1fa2V5ZnJh
bWVzLmNsZWFyKCk7CisgICAgbV9pbnB1dFNvdXJjZXMuY2xlYXIoKTsKKyAgICBtX2tleWZyYW1l
SW5kZXggPSAwOworICAgIG1faW5wdXRTb3VyY2VTdGF0ZUluZGV4ID0gMDsKKworICAgIGZpbmlz
aChlcnJvcik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYmtpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9TaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vU2ltdWxhdGVkSW5wdXREaXNwYXRj
aGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNThmN2YwYWZjYWQzNGZlZTM3MGFhODZhYTNkNzhmZWViNGYxMWRh
NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24v
U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmgKQEAgLTAsMCArMSwxNTIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIldlYkV2ZW50LmgiCisjaW5jbHVkZSA8d3RmL0Nv
bXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3
dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0
Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8d3RmL1NlY29uZHMuaD4KKyNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBJbnNw
ZWN0b3IgeyBuYW1lc3BhY2UgUHJvdG9jb2wgeyBuYW1lc3BhY2UgQXV0b21hdGlvbiB7CitlbnVt
IGNsYXNzIEVycm9yTWVzc2FnZTsKK2VudW0gY2xhc3MgS2V5Ym9hcmRJbnRlcmFjdGlvblR5cGU7
CitlbnVtIGNsYXNzIE1vdXNlSW50ZXJhY3Rpb247CitlbnVtIGNsYXNzIFZpcnR1YWxLZXk7Cit9
IH0gfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgQXV0b21hdGlvbkNvbW1hbmRFcnJv
cjsKK3VzaW5nIEF1dG9tYXRpb25Db21wbGV0aW9uSGFuZGxlciA9IFdURjo6Q29tcGxldGlvbkhh
bmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+KT47CisKK2Ns
YXNzIFdlYlBhZ2VQcm94eTsKKwordXNpbmcgS2V5Ym9hcmRJbnRlcmFjdGlvbiA9IEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OktleWJvYXJkSW50ZXJhY3Rpb25UeXBlOwordXNpbmcg
VmlydHVhbEtleSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk7
Cit1c2luZyBDaGFyS2V5ID0gY2hhcjsgLy8gRm9yIFdlYkRyaXZlciwgdGhpcyBvbmx5IG5lZWRz
IHRvIHN1cHBvcnQgQVNDSUkgY2hhcmFjdGVycyBvbiAxMDIta2V5IGtleWJvYXJkLgordXNpbmcg
TW91c2VCdXR0b24gPSBXZWJNb3VzZUV2ZW50OjpCdXR0b247Cit1c2luZyBNb3VzZUludGVyYWN0
aW9uID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VJbnRlcmFjdGlvbjsK
Kworc3RydWN0IFNpbXVsYXRlZElucHV0U291cmNlU3RhdGUgeworICAgIHN0ZDo6b3B0aW9uYWw8
Q2hhcktleT4gcHJlc3NlZENoYXJLZXk7CisgICAgc3RkOjpvcHRpb25hbDxWaXJ0dWFsS2V5PiBw
cmVzc2VkVmlydHVhbEtleTsKKyAgICBzdGQ6Om9wdGlvbmFsPE1vdXNlQnV0dG9uPiBwcmVzc2Vk
TW91c2VCdXR0b247CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4gbG9jYXRp
b247CisgICAgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBkdXJhdGlvbjsKKworICAgIHN0YXRpYyBT
aW11bGF0ZWRJbnB1dFNvdXJjZVN0YXRlIGVtcHR5U3RhdGUoKSB7IHJldHVybiBTaW11bGF0ZWRJ
bnB1dFNvdXJjZVN0YXRlKCk7IH0KK307CisKK3N0cnVjdCBTaW11bGF0ZWRJbnB1dFNvdXJjZSA6
IHB1YmxpYyBSZWZDb3VudGVkPFNpbXVsYXRlZElucHV0U291cmNlPiB7CitwdWJsaWM6CisgICAg
ZW51bSBjbGFzcyBUeXBlIHsKKyAgICAgICAgTnVsbCwgLy8gVXNlZCB0byBpbmR1Y2UgYSBtaW5p
bXVtIGR1cmF0aW9uLgorICAgICAgICBLZXlib2FyZCwKKyAgICAgICAgTW91c2UsCisgICAgICAg
IFRvdWNoLAorICAgIH07CisKKyAgICBUeXBlIHR5cGU7CisKKyAgICAvLyBUaGUgbGFzdCBzdGF0
ZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBpbnB1dCBzb3VyY2UuCisgICAgU2ltdWxhdGVkSW5wdXRT
b3VyY2VTdGF0ZSBzdGF0ZTsKKworICAgIHN0YXRpYyBSZWY8U2ltdWxhdGVkSW5wdXRTb3VyY2U+
IGNyZWF0ZShUeXBlIHR5cGUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
aW11bGF0ZWRJbnB1dFNvdXJjZSh0eXBlLCBTaW11bGF0ZWRJbnB1dFNvdXJjZVN0YXRlOjplbXB0
eVN0YXRlKCkpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgU2ltdWxhdGVkSW5wdXRTb3VyY2Uo
VHlwZSB0eXBlLCBTaW11bGF0ZWRJbnB1dFNvdXJjZVN0YXRlIHN0YXRlKQorICAgICAgICA6IHR5
cGUodHlwZSkKKyAgICAgICAgLCBzdGF0ZShzdGF0ZSkKKyAgICB7IH0KK307CisgICAgCitzdHJ1
Y3QgU2ltdWxhdGVkSW5wdXRLZXlGcmFtZSB7CitwdWJsaWM6CisgICAgdXNpbmcgU3RhdGVFbnRy
eSA9IHN0ZDo6cGFpcjxTaW11bGF0ZWRJbnB1dFNvdXJjZSYsIFNpbXVsYXRlZElucHV0U291cmNl
U3RhdGU+OworCisgICAgZXhwbGljaXQgU2ltdWxhdGVkSW5wdXRLZXlGcmFtZShWZWN0b3I8U3Rh
dGVFbnRyeT4mJik7CisgICAgU2Vjb25kcyBtYXhpbXVtRHVyYXRpb24oKSBjb25zdDsKKworICAg
IHN0YXRpYyBTaW11bGF0ZWRJbnB1dEtleUZyYW1lIGtleUZyYW1lRnJvbVN0YXRlT2ZJbnB1dFNv
dXJjZXMoSGFzaFNldDxSZWY8U2ltdWxhdGVkSW5wdXRTb3VyY2U+PiYpOworICAgIHN0YXRpYyBT
aW11bGF0ZWRJbnB1dEtleUZyYW1lIGtleUZyYW1lVG9SZXNldElucHV0U291cmNlcyhIYXNoU2V0
PFJlZjxTaW11bGF0ZWRJbnB1dFNvdXJjZT4+Jik7CisKKyAgICBWZWN0b3I8U3RhdGVFbnRyeT4g
c3RhdGVzOworfTsKKworY2xhc3MgU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyIDogcHVibGljIFJl
ZkNvdW50ZWQ8U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyPiB7CisgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyKTsKK3B1YmxpYzoKKyAgICBjbGFzcyBDbGll
bnQgeworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+Q2xpZW50KCkgeyB9CisgICAgICAg
IHZpcnR1YWwgdm9pZCBzaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiwgTW91
c2VJbnRlcmFjdGlvbiwgV2ViTW91c2VFdmVudDo6QnV0dG9uLCBjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYgbG9jYXRpb25JblZpZXcsIEF1dG9tYXRpb25Db21wbGV0aW9uSGFuZGxlciYmKSA9IDA7
CisgICAgICAgIHZpcnR1YWwgdm9pZCBzaW11bGF0ZUtleWJvYXJkSW50ZXJhY3Rpb24oV2ViUGFn
ZVByb3h5JiwgS2V5Ym9hcmRJbnRlcmFjdGlvbiwgc3RkOjpvcHRpb25hbDxWaXJ0dWFsS2V5Piwg
c3RkOjpvcHRpb25hbDxDaGFyS2V5PiwgQXV0b21hdGlvbkNvbXBsZXRpb25IYW5kbGVyJiYpID0g
MDsKKyAgICB9OworCisgICAgU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyKFdlYlBhZ2VQcm94eSYs
IFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6Q2xpZW50Jik7CisgICAgflNpbXVsYXRlZElucHV0
RGlzcGF0Y2hlcigpOworCisgICAgdm9pZCBydW4oVmVjdG9yPFNpbXVsYXRlZElucHV0S2V5RnJh
bWU+JiYga2V5RnJhbWVzLCBIYXNoU2V0PFJlZjxTaW11bGF0ZWRJbnB1dFNvdXJjZT4+JiBpbnB1
dFNvdXJjZXMsIEF1dG9tYXRpb25Db21wbGV0aW9uSGFuZGxlciYmKTsKKyAgICB2b2lkIGNhbmNl
bCgpOworCisgICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0OworCitwcml2YXRlOgorICAgIHZvaWQg
dHJhbnNpdGlvbkJldHdlZW5LZXlGcmFtZXMoY29uc3QgU2ltdWxhdGVkSW5wdXRLZXlGcmFtZSYs
IGNvbnN0IFNpbXVsYXRlZElucHV0S2V5RnJhbWUmLCBBdXRvbWF0aW9uQ29tcGxldGlvbkhhbmRs
ZXImJik7CisgICAgdm9pZCB0cmFuc2l0aW9uSW5wdXRTb3VyY2VUb1N0YXRlKFNpbXVsYXRlZElu
cHV0U291cmNlJiwgY29uc3QgU2ltdWxhdGVkSW5wdXRTb3VyY2VTdGF0ZSYgbmV3U3RhdGUsIEF1
dG9tYXRpb25Db21wbGV0aW9uSGFuZGxlciYmKTsKKyAgICB2b2lkIGZpbmlzaERpc3BhdGNoaW5n
KHN0ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4pOworICAgIAorICAgIHZvaWQg
a2V5RnJhbWVUcmFuc2l0aW9uRHVyYXRpb25UaW1lckZpcmVkKCk7CisgICAgYm9vbCBpc0tleUZy
YW1lVHJhbnNpdGlvbkNvbXBsZXRlKCkgY29uc3Q7CisKKyAgICBXZWJQYWdlUHJveHkmIG1fcGFn
ZTsKKyAgICBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OkNsaWVudCYgbV9jbGllbnQ7CisKKyAg
ICBBdXRvbWF0aW9uQ29tcGxldGlvbkhhbmRsZXIgbV9ydW5Db21wbGV0aW9uSGFuZGxlcjsKKyAg
ICBBdXRvbWF0aW9uQ29tcGxldGlvbkhhbmRsZXIgbV9rZXlGcmFtZVRyYW5zaXRpb25Db21wbGV0
aW9uSGFuZGxlcjsKKyAgICBSdW5Mb29wOjpUaW1lcjxTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI+
IG1fa2V5RnJhbWVUcmFuc2l0aW9uRHVyYXRpb25UaW1lcjsKKworICAgIFZlY3RvcjxTaW11bGF0
ZWRJbnB1dEtleUZyYW1lPiBtX2tleWZyYW1lczsKKyAgICBIYXNoU2V0PFJlZjxTaW11bGF0ZWRJ
bnB1dFNvdXJjZT4+IG1faW5wdXRTb3VyY2VzOworCisgICAgLy8gVGhlIHBvc2l0aW9uIHdpdGhp
biBtX2tleWZyYW1lcy4KKyAgICB1bnNpZ25lZCBtX2tleWZyYW1lSW5kZXggeyAwIH07CisKKyAg
ICAvLyBUaGUgcG9zaXRpb24gd2l0aGluIHRoZSBpbnB1dCBzb3VyY2Ugc3RhdGUgdmVjdG9yIGF0
IG1fa2V5ZnJhbWVzW21fa2V5ZnJhbWVJbmRleF0uCisgICAgLy8gRXZlbnRzIHRoYXQgcmVmbGVj
dCBpbnB1dCBzb3VyY2Ugc3RhdGUgdHJhbnNpdGlvbnMgYXJlIGRpc3BhdGNoZWQgc2VyaWFsbHkg
YmFzZWQgb24gdGhpcyBvcmRlci4KKyAgICB1bnNpZ25lZCBtX2lucHV0U291cmNlU3RhdGVJbmRl
eCB7IDAgfTsKKworfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNz
aW9uLmNwcAppbmRleCBiMzAyODNjOGJmYTEwZTRiYjEwNjEwNGQzYTU2OTdjYmVhMTYwZDhlLi5j
Nzc2OGNjMTA3OWRhMTRiN2JjZjU4YzM0MGU3MTAwZDRlOGE1N2RlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNz
aW9uLmNwcApAQCAtNzYsNiArNzYsMTAgQEAgV2ViQXV0b21hdGlvblNlc3Npb246OldlYkF1dG9t
YXRpb25TZXNzaW9uKCkKICAgICAsIG1fZG9tYWluTm90aWZpZXIoc3RkOjptYWtlX3VuaXF1ZTxB
dXRvbWF0aW9uRnJvbnRlbmREaXNwYXRjaGVyPihtX2Zyb250ZW5kUm91dGVyKSkKICAgICAsIG1f
bG9hZFRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJldlYkF1dG9tYXRpb25TZXNzaW9uOjps
b2FkVGltZXJGaXJlZCkKIHsKKyAgICAvLyBTZXQgdXAgY2Fub25pY2FsIGlucHV0IHNvdXJjZXMg
dG8gYmUgdXNlZCBmb3IgJ3BlcmZvcm1JbnRlcmFjdGlvblNlcXVlbmNlJyBhbmQgJ2NhbmNlbElu
dGVyYWN0aW9uU2VxdWVuY2UnLgorICAgIG1faW5wdXRTb3VyY2VzLmFkZChTaW11bGF0ZWRJbnB1
dFNvdXJjZTo6Y3JlYXRlKFNpbXVsYXRlZElucHV0U291cmNlOjpUeXBlOjpNb3VzZSkpOworICAg
IG1faW5wdXRTb3VyY2VzLmFkZChTaW11bGF0ZWRJbnB1dFNvdXJjZTo6Y3JlYXRlKFNpbXVsYXRl
ZElucHV0U291cmNlOjpUeXBlOjpLZXlib2FyZCkpOworICAgIG1faW5wdXRTb3VyY2VzLmFkZChT
aW11bGF0ZWRJbnB1dFNvdXJjZTo6Y3JlYXRlKFNpbXVsYXRlZElucHV0U291cmNlOjpUeXBlOjpO
dWxsKSk7CiB9CiAKIFdlYkF1dG9tYXRpb25TZXNzaW9uOjp+V2ViQXV0b21hdGlvblNlc3Npb24o
KQpAQCAtNzIzLDI4ICs3MjcsMzEgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6aW5zcGVj
dG9yRnJvbnRlbmRMb2FkZWQoY29uc3QgV2ViUGFnZVByb3h5JiBwYWdlKQogCiB2b2lkIFdlYkF1
dG9tYXRpb25TZXNzaW9uOjptb3VzZUV2ZW50c0ZsdXNoZWRGb3JQYWdlKGNvbnN0IFdlYlBhZ2VQ
cm94eSYgcGFnZSkKIHsKLSAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1fcGVuZGluZ01vdXNlRXZl
bnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2UudGFrZShwYWdlLnBhZ2VJRCgpKSkgewotICAgICAg
ICBpZiAobV9wZW5kaW5nTW91c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS5pc0VtcHR5
KCkpCi0gICAgICAgICAgICBtX3NpbXVsYXRpbmdVc2VySW50ZXJhY3Rpb24gPSBmYWxzZTsKLQor
ICAgIGlmIChhdXRvIGNhbGxiYWNrID0gbV9wZW5kaW5nTW91c2VFdmVudHNGbHVzaGVkQ2FsbGJh
Y2tzUGVyUGFnZS50YWtlKHBhZ2UucGFnZUlEKCkpKQogICAgICAgICBjYWxsYmFjayhzdGQ6Om51
bGxvcHQpOwotICAgIH0KIH0KIAogdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6a2V5Ym9hcmRF
dmVudHNGbHVzaGVkRm9yUGFnZShjb25zdCBXZWJQYWdlUHJveHkmIHBhZ2UpCiB7Ci0gICAgaWYg
KGF1dG8gY2FsbGJhY2sgPSBtX3BlbmRpbmdLZXlib2FyZEV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQ
ZXJQYWdlLnRha2UocGFnZS5wYWdlSUQoKSkpIHsKLSAgICAgICAgaWYgKG1fcGVuZGluZ0tleWJv
YXJkRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2UuaXNFbXB0eSgpKQotICAgICAgICAgICAg
bV9zaW11bGF0aW5nVXNlckludGVyYWN0aW9uID0gZmFsc2U7Ci0KKyAgICBpZiAoYXV0byBjYWxs
YmFjayA9IG1fcGVuZGluZ0tleWJvYXJkRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2UudGFr
ZShwYWdlLnBhZ2VJRCgpKSkKICAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKLSAgICB9
CiB9CiAKIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OndpbGxDbG9zZVBhZ2UoY29uc3QgV2Vi
UGFnZVByb3h5JiBwYWdlKQogewogICAgIFN0cmluZyBoYW5kbGUgPSBoYW5kbGVGb3JXZWJQYWdl
UHJveHkocGFnZSk7CiAgICAgbV9kb21haW5Ob3RpZmllci0+YnJvd3NpbmdDb250ZXh0Q2xlYXJl
ZChoYW5kbGUpOworCisgICAgLy8gQ2FuY2VsIHBlbmRpbmcgaW50ZXJhY3Rpb25zIG9uIHRoaXMg
cGFnZS4gQnkgcHJvdmlkaW5nIGFuIGVycm9yLCB0aGlzIHdpbGwgY2F1c2Ugc3Vic2VxdWVudAor
ICAgIC8vIGFjdGlvbnMgdG8gYmUgYWJvcnRlZCBhbmQgdGhlIFNpbXVsYXRlZElucHV0RGlzcGF0
Y2hlcjo6cnVuKCkgY2FsbCB3aWxsIHVud2luZCBhbmQgZmFpbC4KKyAgICBpZiAoYXV0byBjYWxs
YmFjayA9IG1fcGVuZGluZ01vdXNlRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2UudGFrZShw
YWdlLnBhZ2VJRCgpKSkKKyAgICAgICAgY2FsbGJhY2soQVVUT01BVElPTl9DT01NQU5EX0VSUk9S
X1dJVEhfTkFNRShXaW5kb3dOb3RGb3VuZCkpOworICAgIGlmIChhdXRvIGNhbGxiYWNrID0gbV9w
ZW5kaW5nTW91c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS50YWtlKHBhZ2UucGFnZUlE
KCkpKQorICAgICAgICBjYWxsYmFjayhBVVRPTUFUSU9OX0NPTU1BTkRfRVJST1JfV0lUSF9OQU1F
KFdpbmRvd05vdEZvdW5kKSk7CisKKyAgICAvLyBUaGVuIHRlbGwgdGhlIGlucHV0IGRpc3BhdGNo
ZXIgdG8gY2FuY2VsIHNvIHRpbWVycyBhcmUgc3RvcHBlZCwgYW5kIGxldCBpdCBnbyBvdXQgb2Yg
c2NvcGUuCisgICAgaWYgKGF1dG8gaW5wdXREaXNwYXRjaGVyID0gbV9pbnB1dERpc3BhdGNoZXJz
QnlQYWdlLnRha2UocGFnZS5wYWdlSUQoKSkpCisgICAgICAgIGlucHV0RGlzcGF0Y2hlci0+Y2Fu
Y2VsKCk7CiB9CiAKIHN0YXRpYyBib29sIGZpbGVDYW5CZUFjY2VwdGVkRm9yVXBsb2FkKGNvbnN0
IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgYWxsb3dlZE1JTUVUeXBl
cywgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBhbGxvd2VkRmlsZUV4dGVuc2lvbnMpCkBAIC0xMzY2
LDYgKzEzNzMsODUgQEAgYm9vbCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6c2hvdWxkQWxsb3dHZXRV
c2VyTWVkaWFGb3JQYWdlKGNvbnN0IFdlYlBhZ2VQcm94eSYpIGMKICAgICByZXR1cm4gbV9wZXJt
aXNzaW9uRm9yR2V0VXNlck1lZGlhOwogfQogCitib29sIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpp
c1NpbXVsYXRpbmdVc2VySW50ZXJhY3Rpb24oKSBjb25zdAoreworICAgIGlmICghbV9wZW5kaW5n
TW91c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS5pc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBpZiAoIW1fcGVuZGluZ0tleWJvYXJkRXZlbnRzRmx1c2hlZENhbGxi
YWNrc1BlclBhZ2UuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyJiBXZWJBdXRvbWF0aW9uU2Vz
c2lvbjo6aW5wdXREaXNwYXRjaGVyRm9yUGFnZShXZWJQYWdlUHJveHkmIHBhZ2UpCit7CisgICAg
aWYgKCFtX2lucHV0RGlzcGF0Y2hlcnNCeVBhZ2UuY29udGFpbnMocGFnZS5wYWdlSUQoKSkpCisg
ICAgICAgIG1faW5wdXREaXNwYXRjaGVyc0J5UGFnZS5zZXQocGFnZS5wYWdlSUQoKSwgc3RkOjpt
YWtlX3VuaXF1ZTxTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI+KHBhZ2UsICp0aGlzKSk7CisKKyAg
ICByZXR1cm4gKm1faW5wdXREaXNwYXRjaGVyc0J5UGFnZS5nZXQocGFnZS5wYWdlSUQoKSk7Cit9
CisKK1NpbXVsYXRlZElucHV0U291cmNlKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6aW5wdXRTb3Vy
Y2VGb3JUeXBlKFNpbXVsYXRlZElucHV0U291cmNlOjpUeXBlIHR5cGUpIGNvbnN0Cit7CisgICAg
Ly8gRklYTUU6IHRoaXMgc2hvdWxkIHVzZSBzb21ldGhpbmcgbGlrZSBWZWN0b3IncyBmaW5kTWF0
Y2hpbmcoKS4KKyAgICBmb3IgKGF1dG8mIGlucHV0U291cmNlIDogbV9pbnB1dFNvdXJjZXMpIHsK
KyAgICAgICAgaWYgKGlucHV0U291cmNlLT50eXBlID09IHR5cGUpCisgICAgICAgICAgICByZXR1
cm4gJmlucHV0U291cmNlLmdldCgpOworICAgIH0KKworICAgIHJldHVybiBudWxscHRyOworfQor
CisvLyBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OkNsaWVudCBBUEkKK3ZvaWQgV2ViQXV0b21h
dGlvblNlc3Npb246OnNpbXVsYXRlTW91c2VJbnRlcmFjdGlvbihXZWJQYWdlUHJveHkmIHBhZ2Us
IE1vdXNlSW50ZXJhY3Rpb24gaW50ZXJhY3Rpb24sIFdlYk1vdXNlRXZlbnQ6OkJ1dHRvbiBtb3Vz
ZUJ1dHRvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGxvY2F0aW9uSW5WaWV3LCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4pPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIHBhZ2UuZ2V0V2luZG93RnJhbWVXaXRoQ2FsbGJh
Y2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgcGFnZSA9IG1ha2VSZWYocGFnZSksIGlu
dGVyYWN0aW9uLCBtb3VzZUJ1dHRvbiwgbG9jYXRpb25JblZpZXddKFdlYkNvcmU6OkZsb2F0UmVj
dCB3aW5kb3dGcmFtZSkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8gY2xpcHBlZFggPSBzdGQ6Om1p
bihzdGQ6Om1heCgwLjBmLCAoZmxvYXQpbG9jYXRpb25JblZpZXcueCgpKSwgd2luZG93RnJhbWUu
c2l6ZSgpLndpZHRoKCkpOworICAgICAgICBhdXRvIGNsaXBwZWRZID0gc3RkOjptaW4oc3RkOjpt
YXgoMC4wZiwgKGZsb2F0KWxvY2F0aW9uSW5WaWV3LnkoKSArIHBhZ2UtPnRvcENvbnRlbnRJbnNl
dCgpKSwgd2luZG93RnJhbWUuc2l6ZSgpLmhlaWdodCgpKTsKKyAgICAgICAgaWYgKGNsaXBwZWRY
ICE9IGxvY2F0aW9uSW5WaWV3LngoKSB8fCBjbGlwcGVkWSAhPSBsb2NhdGlvbkluVmlldy55KCkp
IHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKEFVVE9NQVRJT05fQ09NTUFORF9FUlJP
Ul9XSVRIX05BTUUoVGFyZ2V0T3V0T2ZCb3VuZHMpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCisgICAgICAgIC8vIEJyaWRnZSB0aGUgZmx1c2hlZCBjYWxsYmFjayB0byBvdXIg
Y29tbWFuZCdzIGNvbXBsZXRpb24gaGFuZGxlci4KKyAgICAgICAgYXV0byBtb3VzZUV2ZW50c0Zs
dXNoZWRDYWxsYmFjayA9IFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXShzdGQ6Om9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+IGVycm9yKSB7Cisg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihlcnJvcik7CisgICAgICAgIH07CisKKyAgICAg
ICAgYXV0byYgY2FsbGJhY2tJbk1hcCA9IG1fcGVuZGluZ01vdXNlRXZlbnRzRmx1c2hlZENhbGxi
YWNrc1BlclBhZ2UuYWRkKHBhZ2UtPnBhZ2VJRCgpLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7
CisgICAgICAgIGlmIChjYWxsYmFja0luTWFwKQorICAgICAgICAgICAgY2FsbGJhY2tJbk1hcChB
VVRPTUFUSU9OX0NPTU1BTkRfRVJST1JfV0lUSF9OQU1FKFRpbWVvdXQpKTsKKyAgICAgICAgY2Fs
bGJhY2tJbk1hcCA9IFdURk1vdmUobW91c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2spOworCisgICAg
ICAgIHBsYXRmb3JtU2ltdWxhdGVNb3VzZUludGVyYWN0aW9uKHBhZ2UsIGludGVyYWN0aW9uLCBt
b3VzZUJ1dHRvbiwgbG9jYXRpb25JblZpZXcsIChXZWJFdmVudDo6TW9kaWZpZXJzKW1fY3VycmVu
dE1vZGlmaWVycyk7CisKKyAgICAgICAgLy8gSWYgdGhlIGV2ZW50IGRvZXMgbm90IGhpdCB0ZXN0
IGFueXRoaW5nIGluIHRoZSB3aW5kb3csIHRoZW4gaXQgbWF5IG5vdCBoYXZlIGJlZW4gZGVsaXZl
cmVkLgorICAgICAgICBpZiAoY2FsbGJhY2tJbk1hcCAmJiAhcGFnZS0+aXNQcm9jZXNzaW5nTW91
c2VFdmVudHMoKSkgeworICAgICAgICAgICAgYXV0byBjYWxsYmFja1RvQ2FuY2VsID0gbV9wZW5k
aW5nTW91c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS50YWtlKHBhZ2UtPnBhZ2VJRCgp
KTsKKyAgICAgICAgICAgIGNhbGxiYWNrVG9DYW5jZWwoc3RkOjpudWxsb3B0KTsKKyAgICAgICAg
fQorCisgICAgICAgIC8vIE90aGVyd2lzZSwgd2FpdCBmb3IgbW91c2VFdmVudHNGbHVzaGVkQ2Fs
bGJhY2sgdG8gcnVuIHdoZW4gYWxsIGV2ZW50cyBhcmUgaGFuZGxlZC4KKyAgICB9KTsKK30KKwor
dm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6c2ltdWxhdGVLZXlib2FyZEludGVyYWN0aW9uKFdl
YlBhZ2VQcm94eSYgcGFnZSwgS2V5Ym9hcmRJbnRlcmFjdGlvbiBpbnRlcmFjdGlvbiwgc3RkOjpv
cHRpb25hbDxWaXJ0dWFsS2V5PiB2aXJ0dWFsS2V5LCBzdGQ6Om9wdGlvbmFsPENoYXJLZXk+IGNo
YXJLZXksIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29t
bWFuZEVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgLy8gQnJpZGdlIHRoZSBm
bHVzaGVkIGNhbGxiYWNrIHRvIG91ciBjb21tYW5kJ3MgY29tcGxldGlvbiBoYW5kbGVyLgorICAg
IGF1dG8ga2V5Ym9hcmRFdmVudHNGbHVzaGVkQ2FsbGJhY2sgPSBbY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oc3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29t
bWFuZEVycm9yPiBlcnJvcikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihlcnJvcik7Cisg
ICAgfTsKKworICAgIGF1dG8mIGNhbGxiYWNrSW5NYXAgPSBtX3BlbmRpbmdLZXlib2FyZEV2ZW50
c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlLmFkZChwYWdlLnBhZ2VJRCgpLCBudWxscHRyKS5pdGVy
YXRvci0+dmFsdWU7CisgICAgaWYgKGNhbGxiYWNrSW5NYXApCisgICAgICAgIGNhbGxiYWNrSW5N
YXAoQVVUT01BVElPTl9DT01NQU5EX0VSUk9SX1dJVEhfTkFNRShUaW1lb3V0KSk7CisgICAgY2Fs
bGJhY2tJbk1hcCA9IFdURk1vdmUoa2V5Ym9hcmRFdmVudHNGbHVzaGVkQ2FsbGJhY2spOworCisg
ICAgcGxhdGZvcm1TaW11bGF0ZUtleWJvYXJkSW50ZXJhY3Rpb24ocGFnZSwgaW50ZXJhY3Rpb24s
IHZpcnR1YWxLZXksIGNoYXJLZXkpOworCisgICAgLy8gV2FpdCBmb3Iga2V5Ym9hcmRFdmVudHNG
bHVzaGVkQ2FsbGJhY2sgdG8gcnVuIHdoZW4gYWxsIGV2ZW50cyBhcmUgaGFuZGxlZC4KK30KKwog
I2lmIFVTRShBUFBLSVQpIHx8IFBMQVRGT1JNKEdUSykKIHN0YXRpYyBXZWJFdmVudDo6TW9kaWZp
ZXJzIHByb3RvY29sTW9kaWZpZXJUb1dlYkV2ZW50TW9kaWZpZXIoSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXV0b21hdGlvbjo6S2V5TW9kaWZpZXIgbW9kaWZpZXIpCiB7CkBAIC0xMzg0LDYgKzE0NzAs
MjAgQEAgc3RhdGljIFdlYkV2ZW50OjpNb2RpZmllcnMgcHJvdG9jb2xNb2RpZmllclRvV2ViRXZl
bnRNb2RpZmllcihJbnNwZWN0b3I6OlByb3RvY28KIAogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiB9CisKK3N0YXRpYyBXZWJNb3VzZUV2ZW50OjpCdXR0b24gcHJvdG9jb2xNb3Vz
ZUJ1dHRvblRvV2ViTW91c2VFdmVudEJ1dHRvbihJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uOjpNb3VzZUJ1dHRvbiBidXR0b24pCit7CisgICAgc3dpdGNoIChidXR0b24pIHsKKyAgICBj
YXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9uOjpOb25lOgor
ICAgICAgICByZXR1cm4gV2ViTW91c2VFdmVudDo6Tm9CdXR0b247CisgICAgY2FzZSBJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1dHRvbjo6TGVmdDoKKyAgICAgICAgcmV0
dXJuIFdlYk1vdXNlRXZlbnQ6OkxlZnRCdXR0b247CisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1dHRvbjo6TWlkZGxlOgorICAgICAgICByZXR1cm4gV2Vi
TW91c2VFdmVudDo6TWlkZGxlQnV0dG9uOworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbjo6TW91c2VCdXR0b246OlJpZ2h0OgorICAgICAgICByZXR1cm4gV2ViTW91c2VF
dmVudDo6UmlnaHRCdXR0b247CisgICAgfQorfQogI2VuZGlmIC8vIFVTRShBUFBLSVQpIHx8IFBM
QVRGT1JNKEdUSykKIAogdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGVyZm9ybU1vdXNlSW50
ZXJhY3Rpb24oY29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbnN0IEpTT046Ok9iamVjdCYgcmVxdWVz
dGVkUG9zaXRpb25PYmplY3QsIGNvbnN0IFN0cmluZyYgbW91c2VCdXR0b25TdHJpbmcsIGNvbnN0
IFN0cmluZyYgbW91c2VJbnRlcmFjdGlvblN0cmluZywgY29uc3QgSlNPTjo6QXJyYXkmIGtleU1v
ZGlmaWVyU3RyaW5ncywgUmVmPFBlcmZvcm1Nb3VzZUludGVyYWN0aW9uQ2FsbGJhY2s+JiYgY2Fs
bGJhY2spCkBAIC0xNDE1LDEzICsxNTE1LDEzIEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246
OnBlcmZvcm1Nb3VzZUludGVyYWN0aW9uKGNvbnN0IFN0cmluZyYgaGFuZGxlLCBjb25zdCBKCiAg
ICAgICAgIFdlYkV2ZW50OjpNb2RpZmllcnMgZW51bVZhbHVlID0gcHJvdG9jb2xNb2RpZmllclRv
V2ViRXZlbnRNb2RpZmllcihwYXJzZWRNb2RpZmllci52YWx1ZSgpKTsKICAgICAgICAga2V5TW9k
aWZpZXJzID0gKFdlYkV2ZW50OjpNb2RpZmllcnMpKGVudW1WYWx1ZSB8IGtleU1vZGlmaWVycyk7
CiAgICAgfQotICAgIAorCiAgICAgcGFnZS0+Z2V0V2luZG93RnJhbWVXaXRoQ2FsbGJhY2soW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKSwgcGFnZSA9IG1ha2VSZWYoKnBhZ2UpLCB4LCB5LCBtb3VzZUludGVyYWN0aW9uU3Ry
aW5nLCBtb3VzZUJ1dHRvblN0cmluZywga2V5TW9kaWZpZXJzXShXZWJDb3JlOjpGbG9hdFJlY3Qg
d2luZG93RnJhbWUpIG11dGFibGUgewogCiAgICAgICAgIHggPSBzdGQ6Om1pbihzdGQ6Om1heCgw
LjBmLCB4KSwgd2luZG93RnJhbWUuc2l6ZSgpLndpZHRoKCkpOwogICAgICAgICB5ID0gc3RkOjpt
aW4oc3RkOjptYXgoMC4wZiwgeSArIHBhZ2UtPnRvcENvbnRlbnRJbnNldCgpKSwgd2luZG93RnJh
bWUuc2l6ZSgpLmhlaWdodCgpKTsKIAotICAgICAgICBXZWJDb3JlOjpJbnRQb2ludCB2aWV3UG9z
aXRpb24gPSBXZWJDb3JlOjpJbnRQb2ludChzdGF0aWNfY2FzdDxpbnQ+KHgpLCBzdGF0aWNfY2Fz
dDxpbnQ+KHkpKTsKKyAgICAgICAgV2ViQ29yZTo6SW50UG9pbnQgcG9zaXRpb25JblZpZXcgPSBX
ZWJDb3JlOjpJbnRQb2ludChzdGF0aWNfY2FzdDxpbnQ+KHgpLCBzdGF0aWNfY2FzdDxpbnQ+KHkp
KTsKIAogICAgICAgICBhdXRvIHBhcnNlZEludGVyYWN0aW9uID0gSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXV0b21hdGlvbkhlbHBlcnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUludGVyYWN0aW9uPihtb3VzZUludGVyYWN0aW9u
U3RyaW5nKTsKICAgICAgICAgaWYgKCFwYXJzZWRJbnRlcmFjdGlvbikKQEAgLTE0NDcsMTAgKzE1
NDcsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwZXJmb3JtTW91c2VJbnRlcmFjdGlv
bihjb25zdCBTdHJpbmcmIGhhbmRsZSwgY29uc3QgSgogICAgICAgICAgICAgY2FsbGJhY2tJbk1h
cChBVVRPTUFUSU9OX0NPTU1BTkRfRVJST1JfV0lUSF9OQU1FKFRpbWVvdXQpKTsKICAgICAgICAg
Y2FsbGJhY2tJbk1hcCA9IFdURk1vdmUobW91c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2spOwogCi0g
ICAgICAgIC8vIFRoaXMgaXMgY2xlYXJlZCB3aGVuIGFsbCBtb3VzZSBldmVudHMgYXJlIGZsdXNo
ZWQuCi0gICAgICAgIG1fc2ltdWxhdGluZ1VzZXJJbnRlcmFjdGlvbiA9IHRydWU7Ci0KLSAgICAg
ICAgcGxhdGZvcm1TaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24ocGFnZSwgdmlld1Bvc2l0aW9uLCBw
YXJzZWRJbnRlcmFjdGlvbi52YWx1ZSgpLCBwYXJzZWRCdXR0b24udmFsdWUoKSwga2V5TW9kaWZp
ZXJzKTsKKyAgICAgICAgcGxhdGZvcm1TaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24ocGFnZSwgcGFy
c2VkSW50ZXJhY3Rpb24udmFsdWUoKSwgcHJvdG9jb2xNb3VzZUJ1dHRvblRvV2ViTW91c2VFdmVu
dEJ1dHRvbihwYXJzZWRCdXR0b24udmFsdWUoKSksIHBvc2l0aW9uSW5WaWV3LCBrZXlNb2RpZmll
cnMpOwogICAgICAgICAKICAgICAgICAgLy8gSWYgdGhlIGV2ZW50IGxvY2F0aW9uIHdhcyBwcmV2
aW91c2x5IGNsaXBwZWQgYW5kIGRvZXMgbm90IGhpdCB0ZXN0IGFueXRoaW5nIGluIHRoZSB3aW5k
b3csIHRoZW4gaXQgd2lsbCBub3QgYmUgcHJvY2Vzc2VkLgogICAgICAgICAvLyBGb3IgY29tcGF0
aWJpbGl0eSB3aXRoIHByZS1XM0MgZHJpdmVyIGltcGxlbWVudGF0aW9ucywgZG9uJ3QgbWFrZSB0
aGlzIGEgaGFyZCBlcnJvcjsganVzdCBkbyBub3RoaW5nIHNpbGVudGx5LgpAQCAtMTQ5OSw3ICsx
NTk2LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGVyZm9ybUtleWJvYXJkSW50ZXJh
Y3Rpb25zKGNvbnN0IFN0cmluZyYgaGFuZGxlLCBjb24KICAgICAgICAgICAgICAgICBBU1lOQ19G
QUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhJbnZhbGlkUGFyYW1ldGVyLCAi
QW4gaW50ZXJhY3Rpb24gaW4gdGhlICdpbnRlcmFjdGlvbnMnIHBhcmFtZXRlciBoYXMgYW4gaW52
YWxpZCAna2V5JyB2YWx1ZS4iKTsKIAogICAgICAgICAgICAgYWN0aW9uc1RvUGVyZm9ybS51bmNo
ZWNrZWRBcHBlbmQoW3RoaXMsIHBhZ2UsIGludGVyYWN0aW9uVHlwZSwgdmlydHVhbEtleV0gewot
ICAgICAgICAgICAgICAgIHBsYXRmb3JtU2ltdWxhdGVLZXlTdHJva2UoKnBhZ2UsIGludGVyYWN0
aW9uVHlwZS52YWx1ZSgpLCB2aXJ0dWFsS2V5LnZhbHVlKCkpOworICAgICAgICAgICAgICAgIHBs
YXRmb3JtU2ltdWxhdGVLZXlib2FyZEludGVyYWN0aW9uKCpwYWdlLCBpbnRlcmFjdGlvblR5cGUu
dmFsdWUoKSwgdmlydHVhbEtleSwgc3RkOjpudWxsb3B0KTsKICAgICAgICAgICAgIH0pOwogICAg
ICAgICB9CiAKQEAgLTE1NDAsMTQgKzE2MzcsMTY0IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Np
b246OnBlcmZvcm1LZXlib2FyZEludGVyYWN0aW9ucyhjb25zdCBTdHJpbmcmIGhhbmRsZSwgY29u
CiAgICAgICAgIGNhbGxiYWNrSW5NYXAoQVVUT01BVElPTl9DT01NQU5EX0VSUk9SX1dJVEhfTkFN
RShUaW1lb3V0KSk7CiAgICAgY2FsbGJhY2tJbk1hcCA9IFdURk1vdmUoa2V5Ym9hcmRFdmVudHNG
bHVzaGVkQ2FsbGJhY2spOwogCi0gICAgLy8gVGhpcyBpcyBjbGVhcmVkIHdoZW4gYWxsIGtleWJv
YXJkIGV2ZW50cyBhcmUgZmx1c2hlZC4KLSAgICBtX3NpbXVsYXRpbmdVc2VySW50ZXJhY3Rpb24g
PSB0cnVlOwotCiAgICAgZm9yIChhdXRvJiBhY3Rpb24gOiBhY3Rpb25zVG9QZXJmb3JtKQogICAg
ICAgICBhY3Rpb24oKTsKICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkgfHwgUExBVEZPUk0oR1RL
KQogfQogCitzdGF0aWMgU2ltdWxhdGVkSW5wdXRTb3VyY2U6OlR5cGUgc2ltdWxhdGVkSW5wdXRT
b3VyY2VUeXBlRnJvbVByb3RvY29sU291cmNlVHlwZShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRv
bWF0aW9uOjpJbnB1dFNvdXJjZVR5cGUgcHJvdG9jb2xUeXBlKQoreworICAgIHN3aXRjaCAocHJv
dG9jb2xUeXBlKSB7CisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpJ
bnB1dFNvdXJjZVR5cGU6Ok1vdXNlOgorICAgICAgICByZXR1cm4gU2ltdWxhdGVkSW5wdXRTb3Vy
Y2U6OlR5cGU6Ok1vdXNlOworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlv
bjo6SW5wdXRTb3VyY2VUeXBlOjpLZXlib2FyZDoKKyAgICAgICAgcmV0dXJuIFNpbXVsYXRlZElu
cHV0U291cmNlOjpUeXBlOjpLZXlib2FyZDsKKyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkF1dG9tYXRpb246OklucHV0U291cmNlVHlwZTo6VG91Y2g6CisgICAgICAgIHJldHVybiBTaW11
bGF0ZWRJbnB1dFNvdXJjZTo6VHlwZTo6VG91Y2g7CisgICAgfQorfQorCit2b2lkIFdlYkF1dG9t
YXRpb25TZXNzaW9uOjpwZXJmb3JtSW50ZXJhY3Rpb25TZXF1ZW5jZShjb25zdCBTdHJpbmcmIGhh
bmRsZSwgY29uc3QgSlNPTjo6QXJyYXkmIGlucHV0U291cmNlcywgY29uc3QgSlNPTjo6QXJyYXkm
IHN0ZXBzLCBSZWY8V2ViQXV0b21hdGlvblNlc3Npb246OlBlcmZvcm1JbnRlcmFjdGlvblNlcXVl
bmNlQ2FsbGJhY2s+JiYgY2FsbGJhY2spCit7CisgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gd2Vi
UGFnZVByb3h5Rm9ySGFuZGxlKGhhbmRsZSk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICBBU1lO
Q19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihXaW5kb3dOb3RGb3VuZCk7CisKKyAgICBIYXNo
TWFwPFN0cmluZywgUmVmPFNpbXVsYXRlZElucHV0U291cmNlPj4gc291cmNlSWRUb0lucHV0U291
cmNlTWFwOworICAgIEhhc2hNYXA8U2ltdWxhdGVkSW5wdXRTb3VyY2U6OlR5cGUsIFN0cmluZywg
V1RGOjpJbnRIYXNoPFNpbXVsYXRlZElucHV0U291cmNlOjpUeXBlPiwgV1RGOjpTdHJvbmdFbnVt
SGFzaFRyYWl0czxTaW11bGF0ZWRJbnB1dFNvdXJjZTo6VHlwZT4+IHR5cGVUb1NvdXJjZUlkTWFw
OworCisgICAgaWYgKCFpbnB1dFNvdXJjZXMubGVuZ3RoKCkpCisgICAgICAgIEFTWU5DX0ZBSUxf
V0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKEludmFsaWRQYXJhbWV0ZXIsICJUaGUg
cGFyYW1ldGVyICdpbnB1dFNvdXJjZXMnIHdhcyBub3QgZm91bmQgb3IgZW1wdHkuIik7CisKKyAg
ICBmb3IgKGF1dG8gaW5wdXRTb3VyY2UgOiBpbnB1dFNvdXJjZXMpIHsKKyAgICAgICAgUmVmUHRy
PEpTT046Ok9iamVjdD4gaW5wdXRTb3VyY2VPYmplY3Q7CisgICAgICAgIGlmICghaW5wdXRTb3Vy
Y2UtPmFzT2JqZWN0KGlucHV0U291cmNlT2JqZWN0KSkKKyAgICAgICAgICAgIEFTWU5DX0ZBSUxf
V0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKEludmFsaWRQYXJhbWV0ZXIsICJBbiBp
bnB1dCBzb3VyY2UgaW4gdGhlICdpbnB1dFNvdXJjZXMnIHBhcmFtZXRlciB3YXMgaW52YWxpZC4i
KTsKKyAgICAgICAgCisgICAgICAgIFN0cmluZyBzb3VyY2VJZDsKKyAgICAgICAgaWYgKCFpbnB1
dFNvdXJjZU9iamVjdC0+Z2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgic291cmNlSWQiKSwgc291cmNl
SWQpKQorICAgICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RF
VEFJTFMoSW52YWxpZFBhcmFtZXRlciwgIkFuIGlucHV0IHNvdXJjZSBpbiB0aGUgJ2lucHV0U291
cmNlcycgcGFyYW1ldGVyIGlzIG1pc3NpbmcgYSAnc291cmNlSWQnLiIpOworCisgICAgICAgIFN0
cmluZyBzb3VyY2VUeXBlOworICAgICAgICBpZiAoIWlucHV0U291cmNlT2JqZWN0LT5nZXRTdHJp
bmcoQVNDSUlMaXRlcmFsKCJzb3VyY2VUeXBlIiksIHNvdXJjZVR5cGUpKQorICAgICAgICAgICAg
QVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxpZFBhcmFt
ZXRlciwgIkFuIGlucHV0IHNvdXJjZSBpbiB0aGUgJ2lucHV0U291cmNlcycgcGFyYW1ldGVyIGlz
IG1pc3NpbmcgYSAnc291cmNlVHlwZScuIik7CisKKyAgICAgICAgYXV0byBwYXJzZWRJbnB1dFNv
dXJjZVR5cGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6cGFyc2VF
bnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OklucHV0
U291cmNlVHlwZT4oc291cmNlVHlwZSk7CisgICAgICAgIGlmICghcGFyc2VkSW5wdXRTb3VyY2VU
eXBlKQorICAgICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RF
VEFJTFMoSW52YWxpZFBhcmFtZXRlciwgIkFuIGlucHV0IHNvdXJjZSBpbiB0aGUgJ2lucHV0U291
cmNlcycgcGFyYW1ldGVyIGhhcyBhbiBpbnZhbGlkICdzb3VyY2VUeXBlJy4iKTsKKworICAgICAg
ICBTaW11bGF0ZWRJbnB1dFNvdXJjZTo6VHlwZSBpbnB1dFNvdXJjZVR5cGUgPSBzaW11bGF0ZWRJ
bnB1dFNvdXJjZVR5cGVGcm9tUHJvdG9jb2xTb3VyY2VUeXBlKCpwYXJzZWRJbnB1dFNvdXJjZVR5
cGUpOworICAgICAgICBpZiAoaW5wdXRTb3VyY2VUeXBlID09IFNpbXVsYXRlZElucHV0U291cmNl
OjpUeXBlOjpUb3VjaCkKKyAgICAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VS
Uk9SX0FORF9ERVRBSUxTKE5vdEltcGxlbWVudGVkLCAiVG91Y2ggaW5wdXQgc291cmNlcyBhcmUg
bm90IHlldCBzdXBwb3J0ZWQuIik7CisKKyAgICAgICAgaWYgKHR5cGVUb1NvdXJjZUlkTWFwLmNv
bnRhaW5zKGlucHV0U291cmNlVHlwZSkpCisgICAgICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJF
REVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhJbnZhbGlkUGFyYW1ldGVyLCAiVHdvIGlucHV0IHNv
dXJjZXMgd2l0aCB0aGUgc2FtZSB0eXBlIHdlcmUgc3BlY2lmaWVkLiIpOworICAgICAgICBpZiAo
c291cmNlSWRUb0lucHV0U291cmNlTWFwLmNvbnRhaW5zKHNvdXJjZUlkKSkKKyAgICAgICAgICAg
IEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKEludmFsaWRQYXJh
bWV0ZXIsICJUd28gaW5wdXQgc291cmNlcyB3aXRoIHRoZSBzYW1lIHNvdXJjZUlkIHdlcmUgc3Bl
Y2lmaWVkLiIpOworCisgICAgICAgIHR5cGVUb1NvdXJjZUlkTWFwLmFkZChpbnB1dFNvdXJjZVR5
cGUsIHNvdXJjZUlkKTsKKyAgICAgICAgc291cmNlSWRUb0lucHV0U291cmNlTWFwLmFkZChzb3Vy
Y2VJZCwgYWRvcHRSZWYoKmlucHV0U291cmNlRm9yVHlwZShpbnB1dFNvdXJjZVR5cGUpKSk7Cisg
ICAgfQorCisgICAgVmVjdG9yPFNpbXVsYXRlZElucHV0S2V5RnJhbWU+IGtleUZyYW1lczsKKwor
ICAgIGlmICghc3RlcHMubGVuZ3RoKCkpCisgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJ
TkVEX0VSUk9SX0FORF9ERVRBSUxTKEludmFsaWRQYXJhbWV0ZXIsICJUaGUgcGFyYW1ldGVyICdz
dGVwcycgd2FzIG5vdCBmb3VuZCBvciBlbXB0eS4iKTsKKworICAgIGZvciAoYXV0byBzdGVwIDog
c3RlcHMpIHsKKyAgICAgICAgUmVmUHRyPEpTT046Ok9iamVjdD4gc3RlcE9iamVjdDsKKyAgICAg
ICAgaWYgKCFzdGVwLT5hc09iamVjdChzdGVwT2JqZWN0KSkKKyAgICAgICAgICAgIEFTWU5DX0ZB
SUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKEludmFsaWRQYXJhbWV0ZXIsICJB
IHN0ZXAgaW4gdGhlICdzdGVwcycgcGFyYW1ldGVyIHdhcyBub3QgYW4gb2JqZWN0LiIpOworCisg
ICAgICAgIFJlZlB0cjxKU09OOjpBcnJheT4gc3RlcFN0YXRlczsKKyAgICAgICAgaWYgKCFzdGVw
T2JqZWN0LT5nZXRBcnJheShBU0NJSUxpdGVyYWwoInN0YXRlcyIpLCBzdGVwU3RhdGVzKSkKKyAg
ICAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKElu
dmFsaWRQYXJhbWV0ZXIsICJBIHN0ZXAgaXMgbWlzc2luZyB0aGUgJ3N0YXRlcycgcHJvcGVydHku
Iik7CisKKyAgICAgICAgVmVjdG9yPFNpbXVsYXRlZElucHV0S2V5RnJhbWU6OlN0YXRlRW50cnk+
IGVudHJpZXM7CisgICAgICAgIGVudHJpZXMucmVzZXJ2ZUNhcGFjaXR5KHN0ZXBTdGF0ZXMtPmxl
bmd0aCgpKTsKKworICAgICAgICBmb3IgKGF1dG8gc3RhdGUgOiAqc3RlcFN0YXRlcykgeworICAg
ICAgICAgICAgUmVmUHRyPEpTT046Ok9iamVjdD4gc3RhdGVPYmplY3Q7CisgICAgICAgICAgICBp
ZiAoIXN0YXRlLT5hc09iamVjdChzdGF0ZU9iamVjdCkpCisgICAgICAgICAgICAgICAgQVNZTkNf
RkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxpZFBhcmFtZXRlciwg
IkVuY291bnRlcmVkIGEgbm9uLW9iamVjdCBzdGVwIHN0YXRlLiIpOworCisgICAgICAgICAgICBT
dHJpbmcgc291cmNlSWQ7CisgICAgICAgICAgICBpZiAoIXN0YXRlT2JqZWN0LT5nZXRTdHJpbmco
QVNDSUlMaXRlcmFsKCJzb3VyY2VJZCIpLCBzb3VyY2VJZCkpCisgICAgICAgICAgICAgICAgQVNZ
TkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxpZFBhcmFtZXRl
ciwgIlN0ZXAgc3RhdGUgbGFja3MgcmVxdWlyZWQgJ3NvdXJjZUlkJyBwcm9wZXJ0eS4iKTsKKwor
ICAgICAgICAgICAgaWYgKCFzb3VyY2VJZFRvSW5wdXRTb3VyY2VNYXAuY29udGFpbnMoc291cmNl
SWQpKQorICAgICAgICAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FO
RF9ERVRBSUxTKEludmFsaWRQYXJhbWV0ZXIsICJVbmtub3duICdzb3VyY2VJZCcgc3BlY2lmaWVk
LiIpOworCisgICAgICAgICAgICBTaW11bGF0ZWRJbnB1dFNvdXJjZSYgaW5wdXRTb3VyY2UgPSAq
c291cmNlSWRUb0lucHV0U291cmNlTWFwLmdldChzb3VyY2VJZCk7CisgICAgICAgICAgICBTaW11
bGF0ZWRJbnB1dFNvdXJjZVN0YXRlIHNvdXJjZVN0YXRlIHsgfTsKKworICAgICAgICAgICAgLyoK
KyAgICAgICAgICAgIHN0YXRlT2JqZWN0LT5nZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJwcmVzc2Vk
Q2hhcktleSIpLCBYWFgpOworICAgICAgICAgICAgc3RhdGVPYmplY3QtPmdldFN0cmluZyhBU0NJ
SUxpdGVyYWwoInByZXNzZWRWaXJ0dWFsS2V5IiksIFhYWCk7CisgICAgICAgICAgICBzdGF0ZU9i
amVjdC0+Z2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgicHJlc3NlZEJ1dHRvbiIpLCBYWFgpOworICAg
ICAgICAgICAgc3RhdGVPYmplY3QtPmdldE9iamVjdChBU0NJSUxpdGVyYWwoImxvY2F0aW9uIiks
IFhYWCk7CisKKyAgICAgICAgICAgICAgICBhdXRvIHBhcnNlZEMgPSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uSGVscGVyczo6cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OklucHV0U291cmNlVHlwZT4oc291cmNlVHlwZSk7Cisq
LworCisKKyAgICAgICAgICAgIFN0cmluZyBwcmVzc2VkQ2hhcktleVN0cmluZzsKKyAgICAgICAg
ICAgIGlmIChzdGF0ZU9iamVjdC0+Z2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgicHJlc3NlZENoYXJL
ZXkiKSwgcHJlc3NlZENoYXJLZXlTdHJpbmcpKQorICAgICAgICAgICAgICAgIHNvdXJjZVN0YXRl
LnByZXNzZWRDaGFyS2V5ID0gcHJlc3NlZENoYXJLZXlTdHJpbmcuY2hhcmFjdGVyQXQoMCk7CisK
KyAgICAgICAgICAgIFN0cmluZyBwcmVzc2VkVmlydHVhbEtleVN0cmluZzsKKyAgICAgICAgICAg
IGlmIChzdGF0ZU9iamVjdC0+Z2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgicHJlc3NlZFZpcnR1YWxL
ZXkiKSwgcHJlc3NlZFZpcnR1YWxLZXlTdHJpbmcpKQorICAgICAgICAgICAgICAgIHNvdXJjZVN0
YXRlLnByZXNzZWRWaXJ0dWFsS2V5ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbkhl
bHBlcnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRv
bWF0aW9uOjpWaXJ0dWFsS2V5PihwcmVzc2VkVmlydHVhbEtleVN0cmluZyk7CisKKyAgICAgICAg
ICAgIFN0cmluZyBwcmVzc2VkQnV0dG9uU3RyaW5nOworICAgICAgICAgICAgaWYgKHN0YXRlT2Jq
ZWN0LT5nZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJwcmVzc2VkQnV0dG9uIiksIHByZXNzZWRCdXR0
b25TdHJpbmcpKSB7CisgICAgICAgICAgICAgICAgYXV0byBwcm90b2NvbEJ1dHRvbiA9IEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb25IZWxwZXJzOjpwYXJzZUVudW1WYWx1ZUZyb21TdHJp
bmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VCdXR0b24+KHByZXNzZWRW
aXJ0dWFsS2V5U3RyaW5nKTsKKyAgICAgICAgICAgICAgICBzb3VyY2VTdGF0ZS5wcmVzc2VkTW91
c2VCdXR0b24gPSBwcm90b2NvbE1vdXNlQnV0dG9uVG9XZWJNb3VzZUV2ZW50QnV0dG9uKHByb3Rv
Y29sQnV0dG9uLnZhbHVlX29yKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNl
QnV0dG9uOjpOb25lKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZsb2F0IHBhcnNl
ZER1cmF0aW9uOworICAgICAgICAgICAgaWYgKHN0YXRlT2JqZWN0LT5nZXREb3VibGUoQVNDSUlM
aXRlcmFsKCJkdXJhdGlvbiIpLCBwYXJzZWREdXJhdGlvbikpCisgICAgICAgICAgICAgICAgc291
cmNlU3RhdGUuZHVyYXRpb24gPSBTZWNvbmRzKHBhcnNlZER1cmF0aW9uKTsKKworICAgICAgICAg
ICAgZW50cmllcy51bmNoZWNrZWRBcHBlbmQoc3RkOjpwYWlyPFNpbXVsYXRlZElucHV0U291cmNl
JiwgU2ltdWxhdGVkSW5wdXRTb3VyY2VTdGF0ZT4geyBpbnB1dFNvdXJjZSwgc291cmNlU3RhdGUg
fSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGtleUZyYW1lcy5hcHBlbmQoU2ltdWxh
dGVkSW5wdXRLZXlGcmFtZShXVEZNb3ZlKGVudHJpZXMpKSk7CisgICAgfQorCisgICAgU2ltdWxh
dGVkSW5wdXREaXNwYXRjaGVyJiBpbnB1dERpc3BhdGNoZXIgPSBpbnB1dERpc3BhdGNoZXJGb3JQ
YWdlKCpwYWdlKTsKKyAgICBpZiAoaW5wdXREaXNwYXRjaGVyLmlzQWN0aXZlKCkpIHsKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJ
TkVEX0VSUk9SX0FORF9ERVRBSUxTKEludGVybmFsRXJyb3IsICJBIHByZXZpb3VzIGludGVyYWN0
aW9uIGlzIHN0aWxsIHVuZGVyd2F5LiIpOworICAgIH0KKworICAgIGlucHV0RGlzcGF0Y2hlci5y
dW4oV1RGTW92ZShrZXlGcmFtZXMpLCBtX2lucHV0U291cmNlcywgW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oc3RkOjpv
cHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPiBlcnJvcikgeworICAgICAgICBpZiAoZXJy
b3IpCisgICAgICAgICAgICBjYWxsYmFjay0+c2VuZEZhaWx1cmUoZXJyb3IudmFsdWUoKS50b1By
b3RvY29sU3RyaW5nKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjYWxsYmFjay0+c2Vu
ZFN1Y2Nlc3MoKTsKKyAgICB9KTsKK30KKwordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6Y2Fu
Y2VsSW50ZXJhY3Rpb25TZXF1ZW5jZShjb25zdCBTdHJpbmcmIGhhbmRsZSwgUmVmPENhbmNlbElu
dGVyYWN0aW9uU2VxdWVuY2VDYWxsYmFjaz4mJiBjYWxsYmFjaykKK3sKKyAgICBXZWJQYWdlUHJv
eHkqIHBhZ2UgPSB3ZWJQYWdlUHJveHlGb3JIYW5kbGUoaGFuZGxlKTsKKyAgICBpZiAoIXBhZ2Up
CisgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKFdpbmRvd05vdEZvdW5k
KTsKKworICAgIFZlY3RvcjxTaW11bGF0ZWRJbnB1dEtleUZyYW1lPiBrZXlGcmFtZXMoeyBTaW11
bGF0ZWRJbnB1dEtleUZyYW1lOjprZXlGcmFtZVRvUmVzZXRJbnB1dFNvdXJjZXMobV9pbnB1dFNv
dXJjZXMpIH0pOworICAgIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlciYgaW5wdXREaXNwYXRjaGVy
ID0gaW5wdXREaXNwYXRjaGVyRm9yUGFnZSgqcGFnZSk7CisgICAgaWYgKGlucHV0RGlzcGF0Y2hl
ci5pc0FjdGl2ZSgpKQorICAgICAgICBpbnB1dERpc3BhdGNoZXIuY2FuY2VsKCk7CisgICAgCisg
ICAgaW5wdXREaXNwYXRjaGVyLnJ1bihXVEZNb3ZlKGtleUZyYW1lcyksIG1faW5wdXRTb3VyY2Vz
LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spXShzdGQ6Om9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+IGVycm9y
KSB7CisgICAgICAgIGlmIChlcnJvcikKKyAgICAgICAgICAgIGNhbGxiYWNrLT5zZW5kRmFpbHVy
ZShlcnJvci52YWx1ZSgpLnRvUHJvdG9jb2xTdHJpbmcoKSk7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIGNhbGxiYWNrLT5zZW5kU3VjY2VzcygpOworICAgIH0pOworfQorCiB2b2lkIFdlYkF1
dG9tYXRpb25TZXNzaW9uOjp0YWtlU2NyZWVuc2hvdChjb25zdCBTdHJpbmcmIGhhbmRsZSwgY29u
c3QgU3RyaW5nKiBvcHRpb25hbEZyYW1lSGFuZGxlLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsTm9k
ZUhhbmRsZSwgY29uc3QgYm9vbCogb3B0aW9uYWxTY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBjb25z
dCBib29sKiBvcHRpb25hbENsaXBUb1ZpZXdwb3J0LCBSZWY8VGFrZVNjcmVlbnNob3RDYWxsYmFj
az4mJiBjYWxsYmFjaykKIHsKICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSB3ZWJQYWdlUHJveHlG
b3JIYW5kbGUoaGFuZGxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1
dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaAppbmRleCAzYWUzNWU2ZjdlY2RjNThh
M2RkOTVlOTgwODBlZjRhMzI5NWNhNzE5Li45OWM4YWMxZTY0ZjRjZjNmODM4ZGNkY2Y1NGVkOTll
ZTBjYWQ1OWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9u
L1dlYkF1dG9tYXRpb25TZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0
b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVk
ZSAiQXV0b21hdGlvbkZyb250ZW5kRGlzcGF0Y2hlcnMuaCIKICNpbmNsdWRlICJDb25uZWN0aW9u
LmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCisjaW5jbHVkZSAiU2ltdWxhdGVkSW5w
dXREaXNwYXRjaGVyLmgiCiAjaW5jbHVkZSAiV2ViRXZlbnQuaCIKICNpbmNsdWRlIDx3dGYvQ29t
cGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtNzYsNyArNzcs
NyBAQCBjbGFzcyBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5OwogY2xhc3MgV2ViUGFn
ZVByb3h5OwogY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7CiAKLXN0cnVjdCBBdXRvbWF0aW9uQ29tbWFu
ZEVycm9yIHsKK2NsYXNzIEF1dG9tYXRpb25Db21tYW5kRXJyb3IgewogcHVibGljOgogICAgIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkVycm9yTWVzc2FnZSB0eXBlOwogICAgIHN0
ZDo6b3B0aW9uYWw8U3RyaW5nPiBtZXNzYWdlIHsgc3RkOjpudWxsb3B0IH07CkBAIC05MSwxMSAr
OTIsMTQgQEAgcHVibGljOgogICAgIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKCk7CiB9OwogCit1
c2luZyBBdXRvbWF0aW9uQ29tcGxldGlvbkhhbmRsZXIgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVy
PHZvaWQoc3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPik+OworCiBjbGFzcyBX
ZWJBdXRvbWF0aW9uU2Vzc2lvbiBmaW5hbCA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpP
YmplY3Q6OlR5cGU6OkF1dG9tYXRpb25TZXNzaW9uPiwgcHVibGljIElQQzo6TWVzc2FnZVJlY2Vp
dmVyCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAgICAgLCBwdWJsaWMgSW5zcGVjdG9y
OjpSZW1vdGVBdXRvbWF0aW9uVGFyZ2V0CiAjZW5kaWYKICAgICAsIHB1YmxpYyBJbnNwZWN0b3I6
OkF1dG9tYXRpb25CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIKKyAgICAsIHB1YmxpYyBTaW11bGF0
ZWRJbnB1dERpc3BhdGNoZXI6OkNsaWVudAogewogcHVibGljOgogICAgIFdlYkF1dG9tYXRpb25T
ZXNzaW9uKCk7CkBAIC0xMzEsNiArMTM1LDEwIEBAIHB1YmxpYzoKICNlbmRpZgogICAgIHZvaWQg
dGVybWluYXRlKCk7CiAKKyAgICAvLyBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OkNsaWVudCBB
UEkKKyAgICB2b2lkIHNpbXVsYXRlTW91c2VJbnRlcmFjdGlvbihXZWJQYWdlUHJveHkmLCBNb3Vz
ZUludGVyYWN0aW9uLCBXZWJNb3VzZUV2ZW50OjpCdXR0b24sIGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiBsb2NhdGlvbkluVmlldywgQXV0b21hdGlvbkNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFs
OworICAgIHZvaWQgc2ltdWxhdGVLZXlib2FyZEludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYsIEtl
eWJvYXJkSW50ZXJhY3Rpb24sIHN0ZDo6b3B0aW9uYWw8VmlydHVhbEtleT4sIHN0ZDo6b3B0aW9u
YWw8Q2hhcktleT4sIEF1dG9tYXRpb25Db21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKKwogICAg
IC8vIEluc3BlY3Rvcjo6QXV0b21hdGlvbkJhY2tlbmREaXNwYXRjaGVySGFuZGxlciBBUEkKICAg
ICAvLyBOT1RFOiB0aGUgc2V0IG9mIGRlY2xhcmF0aW9ucyBpbmNsdWRlZCBpbiB0aGlzIGludGVy
ZmFjZSBkZXBlbmQgb24gdGhlICJwbGF0Zm9ybSIgcHJvcGVydHkgaW4gQXV0b21hdGlvbi5qc29u
CiAgICAgLy8gYW5kIHRoZSAtLXBsYXRmb3JtIGFyZ3VtZW50IHBhc3NlZCB0byB0aGUgcHJvdG9j
b2wgYmluZGluZ3MgZ2VuZXJhdG9yLgpAQCAtMTUxLDYgKzE1OSw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIGV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250
ZXh0SGFuZGxlLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsRnJhbWVIYW5kbGUsIGNvbnN0IFN0cmlu
ZyYgZnVuY3Rpb24sIGNvbnN0IEpTT046OkFycmF5JiBhcmd1bWVudHMsIGNvbnN0IGJvb2wqIG9w
dGlvbmFsRXhwZWN0c0ltcGxpY2l0Q2FsbGJhY2tBcmd1bWVudCwgY29uc3QgaW50KiBvcHRpb25h
bENhbGxiYWNrVGltZW91dCwgUmVmPEluc3BlY3Rvcjo6QXV0b21hdGlvbkJhY2tlbmREaXNwYXRj
aGVySGFuZGxlcjo6RXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb25DYWxsYmFjaz4mJikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBwZXJmb3JtTW91c2VJbnRlcmFjdGlvbihjb25zdCBTdHJpbmcmIGhhbmRs
ZSwgY29uc3QgSlNPTjo6T2JqZWN0JiByZXF1ZXN0ZWRQb3NpdGlvbiwgY29uc3QgU3RyaW5nJiBt
b3VzZUJ1dHRvbiwgY29uc3QgU3RyaW5nJiBtb3VzZUludGVyYWN0aW9uLCBjb25zdCBKU09OOjpB
cnJheSYga2V5TW9kaWZpZXJzLCBSZWY8UGVyZm9ybU1vdXNlSW50ZXJhY3Rpb25DYWxsYmFjaz4m
JikgZmluYWw7CiAgICAgdm9pZCBwZXJmb3JtS2V5Ym9hcmRJbnRlcmFjdGlvbnMoY29uc3QgU3Ry
aW5nJiBoYW5kbGUsIGNvbnN0IEpTT046OkFycmF5JiBpbnRlcmFjdGlvbnMsIFJlZjxQZXJmb3Jt
S2V5Ym9hcmRJbnRlcmFjdGlvbnNDYWxsYmFjaz4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBwZXJm
b3JtSW50ZXJhY3Rpb25TZXF1ZW5jZShjb25zdCBTdHJpbmcmIGhhbmRsZSwgY29uc3QgSlNPTjo6
QXJyYXkmIHNvdXJjZXMsIGNvbnN0IEpTT046OkFycmF5JiBzdGVwcywgUmVmPFBlcmZvcm1JbnRl
cmFjdGlvblNlcXVlbmNlQ2FsbGJhY2s+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgY2FuY2VsSW50
ZXJhY3Rpb25TZXF1ZW5jZShjb25zdCBTdHJpbmcmIGhhbmRsZSwgUmVmPENhbmNlbEludGVyYWN0
aW9uU2VxdWVuY2VDYWxsYmFjaz4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCB0YWtlU2NyZWVuc2hv
dChjb25zdCBTdHJpbmcmIGhhbmRsZSwgY29uc3QgU3RyaW5nKiBvcHRpb25hbEZyYW1lSGFuZGxl
LCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsTm9kZUhhbmRsZSwgY29uc3QgYm9vbCogb3B0aW9uYWxT
Y3JvbGxJbnRvVmlld0lmTmVlZGVkLCBjb25zdCBib29sKiBvcHRpb25hbENsaXBUb1ZpZXdwb3J0
LCBSZWY8VGFrZVNjcmVlbnNob3RDYWxsYmFjaz4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXNv
bHZlQ2hpbGRGcmFtZUhhbmRsZShjb25zdCBTdHJpbmcmIGJyb3dzaW5nQ29udGV4dEhhbmRsZSwg
Y29uc3QgU3RyaW5nKiBvcHRpb25hbEZyYW1lSGFuZGxlLCBjb25zdCBpbnQqIG9wdGlvbmFsT3Jk
aW5hbCwgY29uc3QgU3RyaW5nKiBvcHRpb25hbE5hbWUsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxO
b2RlSGFuZGxlLCBSZWY8UmVzb2x2ZUNoaWxkRnJhbWVIYW5kbGVDYWxsYmFjaz4mJikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCByZXNvbHZlUGFyZW50RnJhbWVIYW5kbGUoY29uc3QgU3RyaW5nJiBicm93
c2luZ0NvbnRleHRIYW5kbGUsIGNvbnN0IFN0cmluZyYgZnJhbWVIYW5kbGUsIFJlZjxSZXNvbHZl
UGFyZW50RnJhbWVIYW5kbGVDYWxsYmFjaz4mJikgb3ZlcnJpZGU7CkBAIC0xNzUsNyArMTg1LDEw
IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgLy8gRXZlbnQgU2ltdWxhdGlvbiBTdXBwb3J0Lgot
ICAgIGJvb2wgaXNTaW11bGF0aW5nVXNlckludGVyYWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9z
aW11bGF0aW5nVXNlckludGVyYWN0aW9uOyB9CisgICAgYm9vbCBpc1NpbXVsYXRpbmdVc2VySW50
ZXJhY3Rpb24oKSBjb25zdDsKKyAgICBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXImIGlucHV0RGlz
cGF0Y2hlckZvclBhZ2UoV2ViUGFnZVByb3h5Jik7CisgICAgU2ltdWxhdGVkSW5wdXRTb3VyY2Uq
IGlucHV0U291cmNlRm9yVHlwZShTaW11bGF0ZWRJbnB1dFNvdXJjZTo6VHlwZSkgY29uc3Q7CisK
ICNpZiBQTEFURk9STShNQUMpCiAgICAgYm9vbCB3YXNFdmVudFN5bnRoZXNpemVkRm9yQXV0b21h
dGlvbihOU0V2ZW50ICopOwogICAgIHZvaWQgbWFya0V2ZW50QXNTeW50aGVzaXplZEZvckF1dG9t
YXRpb24oTlNFdmVudCAqKTsKQEAgLTIxNSw5ICsyMjgsOSBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZGlkRGVsZXRlQ29va2llKHVpbnQ2NF90IGNhbGxiYWNrSUQsIGNvbnN0IFN0cmluZyYgZXJyb3JU
eXBlKTsKIAogICAgIC8vIFBsYXRmb3JtLWRlcGVuZGVudCBpbXBsZW1lbnRhdGlvbnMuCi0gICAg
dm9pZCBwbGF0Zm9ybVNpbXVsYXRlTW91c2VJbnRlcmFjdGlvbihXZWJQYWdlUHJveHkmLCBjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYgdmlld1Bvc2l0aW9uLCBJbnNwZWN0b3I6OlByb3RvY29sOjpB
dXRvbWF0aW9uOjpNb3VzZUludGVyYWN0aW9uLCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uOjpNb3VzZUJ1dHRvbiwgV2ViRXZlbnQ6Ok1vZGlmaWVycyk7Ci0gICAgLy8gU2ltdWxhdGVz
IGEgc2luZ2xlIHZpcnR1YWwga2V5IGJlaW5nIHByZXNzZWQsIHN1Y2ggYXMgQ29udHJvbCwgRi1r
ZXlzLCBOdW1wYWQga2V5cywgZXRjLiBhcyBhbGxvd2VkIGJ5IHRoZSBwcm90b2NvbC4KLSAgICB2
b2lkIHBsYXRmb3JtU2ltdWxhdGVLZXlTdHJva2UoV2ViUGFnZVByb3h5JiwgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXV0b21hdGlvbjo6S2V5Ym9hcmRJbnRlcmFjdGlvblR5cGUsIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXkpOworICAgIHZvaWQgcGxhdGZvcm1TaW11
bGF0ZU1vdXNlSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiwgTW91c2VJbnRlcmFjdGlvbiwgV2Vi
TW91c2VFdmVudDo6QnV0dG9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbG9jYXRpb25JblZp
ZXcsIFdlYkV2ZW50OjpNb2RpZmllcnMga2V5TW9kaWZpZXJzKTsKKyAgICAvLyBTaW11bGF0ZXMg
YSBzaW5nbGUgdmlydHVhbCBvciBjaGFyIGtleSBiZWluZyBwcmVzc2VkL3JlbGVhc2VkLCBzdWNo
IGFzICdhJywgQ29udHJvbCwgRi1rZXlzLCBOdW1wYWQga2V5cywgZXRjLiBhcyBhbGxvd2VkIGJ5
IHRoZSBwcm90b2NvbC4KKyAgICB2b2lkIHBsYXRmb3JtU2ltdWxhdGVLZXlib2FyZEludGVyYWN0
aW9uKFdlYlBhZ2VQcm94eSYsIEtleWJvYXJkSW50ZXJhY3Rpb24sIHN0ZDo6b3B0aW9uYWw8Vmly
dHVhbEtleT4sIHN0ZDo6b3B0aW9uYWw8Q2hhcktleT4pOwogICAgIC8vIFNpbXVsYXRlcyBrZXkg
cHJlc3NlcyB0byBwcm9kdWNlIHRoZSBjb2RlcG9pbnRzIGluIGEgc3RyaW5nLiBPbmUgb3IgbW9y
ZSBjb2RlIHBvaW50cyBhcmUgZGVsaXZlcmVkIGF0b21pY2FsbHkgYXQgZ3JhcGhlbWUgY2x1c3Rl
ciBib3VuZGFyaWVzLgogICAgIHZvaWQgcGxhdGZvcm1TaW11bGF0ZUtleVNlcXVlbmNlKFdlYlBh
Z2VQcm94eSYsIGNvbnN0IFN0cmluZyYpOwogICAgIC8vIEdldCBiYXNlNjQgZW5jb2RlZCBQTkcg
ZGF0YSBmcm9tIGEgYml0bWFwLgpAQCAtMjg5LDEzICszMDIsMTUgQEAgcHJpdmF0ZToKIAogICAg
IGJvb2wgbV9wZXJtaXNzaW9uRm9yR2V0VXNlck1lZGlhIHsgdHJ1ZSB9OwogCi0gICAgLy8gVHJ1
ZSBpZiBhIHN5bnRoZXNpemVkIGtleSBldmVudCBpcyBzdGlsbCBiZWluZyBwcm9jZXNzZWQuCi0g
ICAgYm9vbCBtX3NpbXVsYXRpbmdVc2VySW50ZXJhY3Rpb24geyBmYWxzZSB9OwotCiAgICAgLy8g
S2VlcCB0cmFjayBvZiBjdXJyZW50bHkgYWN0aXZlIG1vZGlmaWVycyBhY3Jvc3MgbXVsdGlwbGUg
a2V5c3Ryb2tlcy4KICAgICAvLyBNb3N0IHBsYXRmb3JtcyBkbyBub3QgdHJhY2sgY3VycmVudCBt
b2RpZmllcnMgZnJvbSBzeW50aGVzaXplZCBldmVudHMuCiAgICAgdW5zaWduZWQgbV9jdXJyZW50
TW9kaWZpZXJzIHsgMCB9OwogCisgICAgLy8gU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyIEFQSXMg
dGFrZSBhIHNldCBvZiBpbnB1dCBzb3VyY2VzLiBXZSBhbHNvIGludGVybiB0aGVzZQorICAgIC8v
IHNvIHRoYXQgcHJldmlvdXMgaW5wdXQgc291cmNlIHN0YXRlIGlzIHVzZWQgYXMgaW5pdGlhbCBz
dGF0ZSBmb3IgbGF0ZXIgY29tbWFuZHMuCisgICAgSGFzaFNldDxSZWY8U2ltdWxhdGVkSW5wdXRT
b3VyY2U+PiBtX2lucHV0U291cmNlczsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBzdGQ6OnVuaXF1
ZV9wdHI8U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyPj4gbV9pbnB1dERpc3BhdGNoZXJzQnlQYWdl
OworCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAgICAgSW5zcGVjdG9yOjpGcm9udGVu
ZENoYW5uZWwqIG1fcmVtb3RlQ2hhbm5lbCB7IG51bGxwdHIgfTsKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9ndGsvV2ViQXV0b21hdGlvblNl
c3Npb25HdGsuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9ndGsvV2Vi
QXV0b21hdGlvblNlc3Npb25HdGsuY3BwCmluZGV4IDI4Y2Y3OTQ4YzgzYjdjZDE5MmMwM2MwN2E1
MmE5MDFkYjY4ZGVjZGEuLjhjNjI4NjRkZTEyYjdiYTM1YTI2MThhYTEzNTlmZTRlMDM0YTNmZGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vZ3RrL1dlYkF1
dG9tYXRpb25TZXNzaW9uR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRv
bWF0aW9uL2d0ay9XZWJBdXRvbWF0aW9uU2Vzc2lvbkd0ay5jcHAKQEAgLTQ4LDE1ICs0OCwxNSBA
QCBzdGF0aWMgdW5zaWduZWQgbW9kaWZpZXJzVG9FdmVudFN0YXRlKFdlYkV2ZW50OjpNb2RpZmll
cnMgbW9kaWZpZXJzKQogICAgIHJldHVybiBzdGF0ZTsKIH0KIAotc3RhdGljIHVuc2lnbmVkIG1v
dXNlQnV0dG9uVG9HZGtCdXR0b24oSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91
c2VCdXR0b24gYnV0dG9uKQorc3RhdGljIHVuc2lnbmVkIG1vdXNlQnV0dG9uVG9HZGtCdXR0b24o
V2ViTW91c2VFdmVudDo6QnV0dG9uIGJ1dHRvbikKIHsKICAgICBzd2l0Y2ggKGJ1dHRvbikgewot
ICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VCdXR0b246Ok5v
bmU6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1dHRv
bjo6TGVmdDoKKyAgICBjYXNlIFdlYk1vdXNlRXZlbnQ6Ok5vQnV0dG9uOgorICAgIGNhc2UgV2Vi
TW91c2VFdmVudDo6TGVmdEJ1dHRvbjoKICAgICAgICAgcmV0dXJuIEdES19CVVRUT05fUFJJTUFS
WTsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9u
OjpNaWRkbGU6CisgICAgY2FzZSBXZWJNb3VzZUV2ZW50OjpNaWRkbGVCdXR0b246CiAgICAgICAg
IHJldHVybiBHREtfQlVUVE9OX01JRERMRTsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9uOjpSaWdodDoKKyAgICBjYXNlIFdlYk1vdXNlRXZlbnQ6
OlJpZ2h0QnV0dG9uOgogICAgICAgICByZXR1cm4gR0RLX0JVVFRPTl9TRUNPTkRBUlk7CiAgICAg
fQogICAgIHJldHVybiBHREtfQlVUVE9OX1BSSU1BUlk7CkBAIC0xMDEsMzAgKzEwMSwzMCBAQCBz
dGF0aWMgdm9pZCBkb01vdGlvbkV2ZW50KEd0a1dpZGdldCogd2lkZ2V0LCBjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYgbG9jYXRpb24sCiAgICAgZ3RrX21haW5fZG9fZXZlbnQoZXZlbnQuZ2V0KCkp
OwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlTW91c2VJ
bnRlcmFjdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiB2
aWV3UG9zaXRpb24sIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlSW50ZXJh
Y3Rpb24gaW50ZXJhY3Rpb24sIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNl
QnV0dG9uIGJ1dHRvbiwgV2ViRXZlbnQ6Ok1vZGlmaWVycyBrZXlNb2RpZmllcnMpCit2b2lkIFdl
YkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlTW91c2VJbnRlcmFjdGlvbihXZWJQ
YWdlUHJveHkmIHBhZ2UsIE1vdXNlSW50ZXJhY3Rpb24gaW50ZXJhY3Rpb24sIFdlYk1vdXNlRXZl
bnQ6OkJ1dHRvbiBidXR0b24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBsb2NhdGlvbkluVmll
dywgV2ViRXZlbnQ6Ok1vZGlmaWVycyBrZXlNb2RpZmllcnMpCiB7CiAgICAgdW5zaWduZWQgZ2Rr
QnV0dG9uID0gbW91c2VCdXR0b25Ub0dka0J1dHRvbihidXR0b24pOwogICAgIHVuc2lnbmVkIHN0
YXRlID0gbW9kaWZpZXJzVG9FdmVudFN0YXRlKGtleU1vZGlmaWVycyk7CiAKICAgICBzd2l0Y2gg
KGludGVyYWN0aW9uKSB7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
OjpNb3VzZUludGVyYWN0aW9uOjpNb3ZlOgotICAgICAgICBkb01vdGlvbkV2ZW50KHBhZ2Uudmll
d1dpZGdldCgpLCB2aWV3UG9zaXRpb24sIHN0YXRlKTsKKyAgICBjYXNlIE1vdXNlSW50ZXJhY3Rp
b246Ok1vdmU6CisgICAgICAgIGRvTW90aW9uRXZlbnQocGFnZS52aWV3V2lkZ2V0KCksIGxvY2F0
aW9uSW5WaWV3LCBzdGF0ZSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VJbnRlcmFjdGlvbjo6RG93bjoKLSAgICAgICAgZG9N
b3VzZUV2ZW50KEdES19CVVRUT05fUFJFU1MsIHBhZ2Uudmlld1dpZGdldCgpLCB2aWV3UG9zaXRp
b24sIGdka0J1dHRvbiwgc3RhdGUpOworICAgIGNhc2UgTW91c2VJbnRlcmFjdGlvbjo6RG93bjoK
KyAgICAgICAgZG9Nb3VzZUV2ZW50KEdES19CVVRUT05fUFJFU1MsIHBhZ2Uudmlld1dpZGdldCgp
LCBsb2NhdGlvbkluVmlldywgZ2RrQnV0dG9uLCBzdGF0ZSk7CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VJbnRlcmFjdGlvbjo6
VXA6Ci0gICAgICAgIGRvTW91c2VFdmVudChHREtfQlVUVE9OX1JFTEVBU0UsIHBhZ2Uudmlld1dp
ZGdldCgpLCB2aWV3UG9zaXRpb24sIGdka0J1dHRvbiwgc3RhdGUpOworICAgIGNhc2UgTW91c2VJ
bnRlcmFjdGlvbjo6VXA6CisgICAgICAgIGRvTW91c2VFdmVudChHREtfQlVUVE9OX1JFTEVBU0Us
IHBhZ2Uudmlld1dpZGdldCgpLCBsb2NhdGlvbkluVmlldywgZ2RrQnV0dG9uLCBzdGF0ZSk7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6
TW91c2VJbnRlcmFjdGlvbjo6U2luZ2xlQ2xpY2s6Ci0gICAgICAgIGRvTW91c2VFdmVudChHREtf
QlVUVE9OX1BSRVNTLCBwYWdlLnZpZXdXaWRnZXQoKSwgdmlld1Bvc2l0aW9uLCBnZGtCdXR0b24s
IHN0YXRlKTsKLSAgICAgICAgZG9Nb3VzZUV2ZW50KEdES19CVVRUT05fUkVMRUFTRSwgcGFnZS52
aWV3V2lkZ2V0KCksIHZpZXdQb3NpdGlvbiwgZ2RrQnV0dG9uLCBzdGF0ZSk7CisgICAgY2FzZSBN
b3VzZUludGVyYWN0aW9uOjpTaW5nbGVDbGljazoKKyAgICAgICAgZG9Nb3VzZUV2ZW50KEdES19C
VVRUT05fUFJFU1MsIHBhZ2Uudmlld1dpZGdldCgpLCBsb2NhdGlvbkluVmlldywgZ2RrQnV0dG9u
LCBzdGF0ZSk7CisgICAgICAgIGRvTW91c2VFdmVudChHREtfQlVUVE9OX1JFTEVBU0UsIHBhZ2Uu
dmlld1dpZGdldCgpLCBsb2NhdGlvbkluVmlldywgZ2RrQnV0dG9uLCBzdGF0ZSk7CiAgICAgICAg
IGJyZWFrOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VJ
bnRlcmFjdGlvbjo6RG91YmxlQ2xpY2s6Ci0gICAgICAgIGRvTW91c2VFdmVudChHREtfQlVUVE9O
X1BSRVNTLCBwYWdlLnZpZXdXaWRnZXQoKSwgdmlld1Bvc2l0aW9uLCBnZGtCdXR0b24sIHN0YXRl
KTsKLSAgICAgICAgZG9Nb3VzZUV2ZW50KEdES19CVVRUT05fUkVMRUFTRSwgcGFnZS52aWV3V2lk
Z2V0KCksIHZpZXdQb3NpdGlvbiwgZ2RrQnV0dG9uLCBzdGF0ZSk7Ci0gICAgICAgIGRvTW91c2VF
dmVudChHREtfQlVUVE9OX1BSRVNTLCBwYWdlLnZpZXdXaWRnZXQoKSwgdmlld1Bvc2l0aW9uLCBn
ZGtCdXR0b24sIHN0YXRlKTsKLSAgICAgICAgZG9Nb3VzZUV2ZW50KEdES19CVVRUT05fUkVMRUFT
RSwgcGFnZS52aWV3V2lkZ2V0KCksIHZpZXdQb3NpdGlvbiwgZ2RrQnV0dG9uLCBzdGF0ZSk7Cisg
ICAgY2FzZSBNb3VzZUludGVyYWN0aW9uOjpEb3VibGVDbGljazoKKyAgICAgICAgZG9Nb3VzZUV2
ZW50KEdES19CVVRUT05fUFJFU1MsIHBhZ2Uudmlld1dpZGdldCgpLCBsb2NhdGlvbkluVmlldywg
Z2RrQnV0dG9uLCBzdGF0ZSk7CisgICAgICAgIGRvTW91c2VFdmVudChHREtfQlVUVE9OX1JFTEVB
U0UsIHBhZ2Uudmlld1dpZGdldCgpLCBsb2NhdGlvbkluVmlldywgZ2RrQnV0dG9uLCBzdGF0ZSk7
CisgICAgICAgIGRvTW91c2VFdmVudChHREtfQlVUVE9OX1BSRVNTLCBwYWdlLnZpZXdXaWRnZXQo
KSwgbG9jYXRpb25JblZpZXcsIGdka0J1dHRvbiwgc3RhdGUpOworICAgICAgICBkb01vdXNlRXZl
bnQoR0RLX0JVVFRPTl9SRUxFQVNFLCBwYWdlLnZpZXdXaWRnZXQoKSwgbG9jYXRpb25JblZpZXcs
IGdka0J1dHRvbiwgc3RhdGUpOwogICAgICAgICBicmVhazsKICAgICB9CiB9CkBAIC0yODAsMjAg
KzI4MCwyNyBAQCBzdGF0aWMgaW50IGtleUNvZGVGb3JWaXJ0dWFsS2V5KEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXkga2V5LAogICAgIHJldHVybiAwOwogfQogCi12
b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlS2V5U3Ryb2tlKFdlYlBh
Z2VQcm94eSYgcGFnZSwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6S2V5Ym9hcmRJ
bnRlcmFjdGlvblR5cGUgaW50ZXJhY3Rpb24sIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRp
b246OlZpcnR1YWxLZXkga2V5KQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1T
aW11bGF0ZUtleWJvYXJkSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBLZXlib2FyZElu
dGVyYWN0aW9uIGludGVyYWN0aW9uLCBzdGQ6Om9wdGlvbmFsPFZpcnR1YWxLZXk+IHZpcnR1YWxL
ZXksIHN0ZDo6b3B0aW9uYWw8Q2hhcktleT4gY2hhcktleSkKIHsKKyAgICBBU1NFUlQodmlydHVh
bEtleS5oYXNfdmFsdWUoKSB8fCBjaGFyS2V5Lmhhc192YWx1ZSgpKTsKKwogICAgIEdka01vZGlm
aWVyVHlwZSB1cGRhdGVTdGF0ZTsKLSAgICBhdXRvIGtleUNvZGUgPSBrZXlDb2RlRm9yVmlydHVh
bEtleShrZXksIHVwZGF0ZVN0YXRlKTsKKyAgICBhdXRvIGtleUNvZGU7CisgICAgaWYgKHZpcnR1
YWxLZXkuaGFzX3ZhbHVlKCkpCisgICAgICAgIGtleUNvZGUgPSBrZXlDb2RlRm9yVmlydHVhbEtl
eSh2aXJ0dWFsS2V5LnZhbHVlKCksIHVwZGF0ZVN0YXRlKTsKKyAgICBlbHNlCisgICAgICAgIGtl
eUNvZGUgPSBnZGtfdW5pY29kZV90b19rZXl2YWwoZ191dGY4X2dldF9jaGFyKCZjaGFyS2V5LnZh
bHVlKCkpKTsKKwogICAgIHN3aXRjaCAoaW50ZXJhY3Rpb24pIHsKLSAgICBjYXNlIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OktleWJvYXJkSW50ZXJhY3Rpb25UeXBlOjpLZXlQcmVz
czoKKyAgICBjYXNlIEtleUludGVyYWN0aW9uOjpLZXlQcmVzczoKICAgICAgICAgbV9jdXJyZW50
TW9kaWZpZXJzIHw9IHVwZGF0ZVN0YXRlOwogICAgICAgICBkb0tleVN0cm9rZUV2ZW50KEdES19L
RVlfUFJFU1MsIHBhZ2Uudmlld1dpZGdldCgpLCBrZXlDb2RlLCBtX2N1cnJlbnRNb2RpZmllcnMp
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRp
b246OktleWJvYXJkSW50ZXJhY3Rpb25UeXBlOjpLZXlSZWxlYXNlOgorICAgIGNhc2UgS2V5SW50
ZXJhY3Rpb246OktleVJlbGVhc2U6CiAgICAgICAgIG1fY3VycmVudE1vZGlmaWVycyAmPSB+dXBk
YXRlU3RhdGU7CiAgICAgICAgIGRvS2V5U3Ryb2tlRXZlbnQoR0RLX0tFWV9SRUxFQVNFLCBwYWdl
LnZpZXdXaWRnZXQoKSwga2V5Q29kZSwgbV9jdXJyZW50TW9kaWZpZXJzKTsKICAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpLZXlib2FyZElu
dGVyYWN0aW9uVHlwZTo6SW5zZXJ0QnlLZXk6CisgICAgY2FzZSBLZXlJbnRlcmFjdGlvbjo6SW5z
ZXJ0QnlLZXk6CiAgICAgICAgIGRvS2V5U3Ryb2tlRXZlbnQoR0RLX0tFWV9QUkVTUywgcGFnZS52
aWV3V2lkZ2V0KCksIGtleUNvZGUsIG1fY3VycmVudE1vZGlmaWVycywgdHJ1ZSk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9t
YXRpb24vaW9zL1dlYkF1dG9tYXRpb25TZXNzaW9uSU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQXV0b21hdGlvbi9pb3MvV2ViQXV0b21hdGlvblNlc3Npb25JT1MubW0KaW5kZXggNWY3
NGFkZWRmNzVmZTU2OTJjMjhkODQ0ODU5MmYyMjM1NGI2OGQ2Yy4uMGRlMzliNjk5M2IyOTIzZjg5
MWU5ODQ2N2U1ZGZlNWFmYjNhZjlhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQXV0b21hdGlvbi9pb3MvV2ViQXV0b21hdGlvblNlc3Npb25JT1MubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9pb3MvV2ViQXV0b21hdGlvblNlc3Npb25JT1Mu
bW0KQEAgLTY1LDI2ICs2NSwyOCBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpzZW5kU3lu
dGhlc2l6ZWRFdmVudHNUb1BhZ2UoV2ViUGFnZVByb3h5JiBwYWdlLCBOU0FycgogCiAjcHJhZ21h
IG1hcmsgQ29tbWFuZHMgZm9yIFBsYXRmb3JtOiAnaU9TJwogCi12b2lkIFdlYkF1dG9tYXRpb25T
ZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlS2V5U3Ryb2tlKFdlYlBhZ2VQcm94eSYgcGFnZSwgSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6S2V5Ym9hcmRJbnRlcmFjdGlvblR5cGUgaW50
ZXJhY3Rpb24sIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXkga2V5
KQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZUtleWJvYXJkSW50
ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBLZXlib2FyZEludGVyYWN0aW9uIGludGVyYWN0
aW9uLCBzdGQ6Om9wdGlvbmFsPFZpcnR1YWxLZXk+IHZpcnR1YWxLZXksIHN0ZDo6b3B0aW9uYWw8
Q2hhcktleT4gY2hhcktleSkKIHsKKyAgICBBU1NFUlQodmlydHVhbEtleS5oYXNfdmFsdWUoKSB8
fCBjaGFyS2V5Lmhhc192YWx1ZSgpKTsKKwogICAgIC8vIFRoZSBtb2RpZmllcnMgY2hhbmdlZCBi
eSB0aGUgdmlydHVhbCBrZXkgd2hlbiBpdCBpcyBwcmVzc2VkIG9yIHJlbGVhc2VkLgogICAgIFdl
YkV2ZW50RmxhZ3MgY2hhbmdlZE1vZGlmaWVycyA9IDA7CiAKICAgICAvLyBGaWd1cmUgb3V0IHRo
ZSBlZmZlY3RzIG9mIHN0aWNreSBtb2RpZmllcnMuCiAgICAgc3dpdGNoIChrZXkpIHsKLSAgICBj
YXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OlNoaWZ0Ogor
ICAgIGNhc2UgVmlydHVhbEtleTo6U2hpZnQ6CiAgICAgICAgIGNoYW5nZWRNb2RpZmllcnMgfD0g
V2ViRXZlbnRGbGFnTWFza1NoaWZ0OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkNvbnRyb2w6CisgICAgY2FzZSBW
aXJ0dWFsS2V5OjpDb250cm9sOgogICAgICAgICBjaGFuZ2VkTW9kaWZpZXJzIHw9IFdlYkV2ZW50
RmxhZ01hc2tDb250cm9sOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkFsdGVybmF0ZToKKyAgICBjYXNlIFZpcnR1
YWxLZXk6OkFsdGVybmF0ZToKICAgICAgICAgY2hhbmdlZE1vZGlmaWVycyB8PSBXZWJFdmVudEZs
YWdNYXNrQWx0ZXJuYXRlOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok1ldGE6CisgICAgY2FzZSBWaXJ0dWFsS2V5
OjpNZXRhOgogICAgICAgICAvLyBUaGUgJ21ldGEnIGtleSBkb2VzIG5vdCBleGlzdCBvbiBBcHBs
ZSBrZXlib2FyZHMgYW5kIGlzIHVzdWFsbHkKICAgICAgICAgLy8gbWFwcGVkIHRvIHRoZSBDb21t
YW5kIGtleSB3aGVuIHVzaW5nIHRoaXJkLXBhcnR5IGtleWJvYXJkcy4KLSAgICBjYXNlIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkNvbW1hbmQ6CisgICAgY2Fz
ZSBWaXJ0dWFsS2V5OjpDb21tYW5kOgogICAgICAgICBjaGFuZ2VkTW9kaWZpZXJzIHw9IFdlYkV2
ZW50RmxhZ01hc2tDb21tYW5kOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgpAQCAtOTQs
OCArOTYsMTggQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZUtl
eVN0cm9rZShXZWJQYWdlUHJveHkmIHBhZ2UsIEluc3BlY3QKICAgICAvLyBVSUtpdCBkb2VzIG5v
dCBzZW5kIGtleSBjb2RlcyBmb3IgdmlydHVhbCBrZXlzIGV2ZW4gZm9yIGEgaGFyZHdhcmUga2V5
Ym9hcmQuCiAgICAgLy8gSW5zdGVhZCwgaXQgc2VuZHMgc2luZ2xlIHVuaWNoYXJzIGFuZCBXZWJD
b3JlIG1hcHMgdGhlc2UgdG8gIndpbmRvd3MiIGtleSBjb2Rlcy4KICAgICAvLyBTeW50aGVzaXpl
IGEgc2luZ2xlIHVuaWNoYXIgc3VjaCB0aGF0IHRoZSBjb3JyZWN0IGtleSBjb2RlIGlzIGluZmVy
cmVkLgotICAgIHN0ZDo6b3B0aW9uYWw8dW5pY2hhcj4gY2hhckNvZGUgPSBjaGFyQ29kZUZvclZp
cnR1YWxLZXkoa2V5KTsKLSAgICBzdGQ6Om9wdGlvbmFsPHVuaWNoYXI+IGNoYXJDb2RlSWdub3Jp
bmdNb2RpZmllcnMgPSBjaGFyQ29kZUlnbm9yaW5nTW9kaWZpZXJzRm9yVmlydHVhbEtleShrZXkp
OworICAgIHN0ZDo6b3B0aW9uYWw8dW5pY2hhcj4gY2hhckNvZGU7CisgICAgc3RkOjpvcHRpb25h
bDx1bmljaGFyPiBjaGFyQ29kZUlnbm9yaW5nTW9kaWZpZXJzOworCisgICAgaWYgKHZpcnR1YWxL
ZXkuaGFzX3ZhbHVlKCkpIHsKKyAgICAgICAgY2hhckNvZGUgPSBjaGFyQ29kZUZvclZpcnR1YWxL
ZXkodmlydHVhbEtleS52YWx1ZSgpKTsKKyAgICAgICAgY2hhckNvZGVJZ25vcmluZ01vZGlmaWVy
cyA9IGNoYXJDb2RlSWdub3JpbmdNb2RpZmllcnNGb3JWaXJ0dWFsS2V5KHZpcnR1YWxLZXkudmFs
dWUoKSk7CisgICAgfQorCisgICAgaWYgKGNoYXJLZXkuaGFzX3ZhbHVlKCkpIHsKKyAgICAgICAg
Y2hhckNvZGUgPSAodW5pY2hhciljaGFyS2V5LnZhbHVlKCk7CisgICAgICAgIGNoYXJDb2RlSWdu
b3JpbmdNb2RpZmllcnMgPSAodW5pY2hhciljaGFyS2V5LnZhbHVlKCk7CisgICAgfQogCiAgICAg
Ly8gRklYTUU6IGNvbnNpZGVyIHVzaW5nIFVJS2l0IFNQSSB0byBub3JtYWxpemUgJ2NoYXJhY3Rl
cnMnLCBpLmUuLCBjaGFuZ2luZyAqIHRvIFNoaWZ0LTgsCiAgICAgLy8gYW5kIHBhc3NpbmcgdGhh
dCBpbiB0byBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMuIFRoaXMgaXMgcHJvYmFibHkgbm90
IHdvcnRoIHRoZSB0cm91YmxlCkBAIC0xMTUsMTkgKzEyNywxOSBAQCB2b2lkIFdlYkF1dG9tYXRp
b25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlS2V5U3Ryb2tlKFdlYlBhZ2VQcm94eSYgcGFnZSwg
SW5zcGVjdAogICAgIGF1dG8gZXZlbnRzVG9CZVNlbnQgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJy
YXkgYWxsb2NdIGluaXRdKTsKIAogICAgIHN3aXRjaCAoaW50ZXJhY3Rpb24pIHsKLSAgICBjYXNl
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OktleWJvYXJkSW50ZXJhY3Rpb25UeXBl
OjpLZXlQcmVzczogeworICAgIGNhc2UgS2V5Ym9hcmRJbnRlcmFjdGlvbjo6S2V5UHJlc3M6IHsK
ICAgICAgICAgbV9jdXJyZW50TW9kaWZpZXJzIHw9IGNoYW5nZWRNb2RpZmllcnM7CiAKICAgICAg
ICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbW1s6OldlYkV2ZW50IGFsbG9jXSBpbml0V2l0
aEtleUV2ZW50VHlwZTpXZWJFdmVudEtleURvd24gdGltZVN0YW1wOkNGQWJzb2x1dGVUaW1lR2V0
Q3VycmVudCgpIGNoYXJhY3RlcnM6Y2hhcmFjdGVycyBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmll
cnM6dW5tb2RpZmllZENoYXJhY3RlcnMgbW9kaWZpZXJzOm1fY3VycmVudE1vZGlmaWVycyBpc1Jl
cGVhdGluZzpOTyB3aXRoRmxhZ3M6aW5wdXRGbGFncyB3aXRoSW5wdXRNYW5hZ2VySGludDpuaWwg
a2V5Q29kZTprZXlDb2RlIGlzVGFiS2V5OmlzVGFiS2V5XSBhdXRvcmVsZWFzZV1dOwogICAgICAg
ICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
OjpLZXlib2FyZEludGVyYWN0aW9uVHlwZTo6S2V5UmVsZWFzZTogeworICAgIGNhc2UgS2V5Ym9h
cmRJbnRlcmFjdGlvbjo6S2V5UmVsZWFzZTogewogICAgICAgICBtX2N1cnJlbnRNb2RpZmllcnMg
Jj0gfmNoYW5nZWRNb2RpZmllcnM7CiAKICAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVj
dDpbW1s6OldlYkV2ZW50IGFsbG9jXSBpbml0V2l0aEtleUV2ZW50VHlwZTpXZWJFdmVudEtleVVw
IHRpbWVTdGFtcDpDRkFic29sdXRlVGltZUdldEN1cnJlbnQoKSBjaGFyYWN0ZXJzOmNoYXJhY3Rl
cnMgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOnVubW9kaWZpZWRDaGFyYWN0ZXJzIG1vZGlm
aWVyczptX2N1cnJlbnRNb2RpZmllcnMgaXNSZXBlYXRpbmc6Tk8gd2l0aEZsYWdzOmlucHV0Rmxh
Z3Mgd2l0aElucHV0TWFuYWdlckhpbnQ6bmlsIGtleUNvZGU6a2V5Q29kZSBpc1RhYktleTppc1Rh
YktleV0gYXV0b3JlbGVhc2VdXTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6S2V5Ym9hcmRJbnRlcmFjdGlvblR5cGU6Oklu
c2VydEJ5S2V5OiB7CisgICAgY2FzZSBLZXlib2FyZEludGVyYWN0aW9uOjpJbnNlcnRCeUtleTog
ewogICAgICAgICAvLyBNb2RpZmllcnMgb25seSBjaGFuZ2Ugd2l0aCBLZXlQcmVzcyBvciBLZXlS
ZWxlYXNlLCB0aGlzIGNvZGUgcGF0aCBpcyBmb3Igc2luZ2xlIGNoYXJhY3RlcnMuCiAgICAgICAg
IFtldmVudHNUb0JlU2VudCBhZGRPYmplY3Q6W1tbOjpXZWJFdmVudCBhbGxvY10gaW5pdFdpdGhL
ZXlFdmVudFR5cGU6V2ViRXZlbnRLZXlEb3duIHRpbWVTdGFtcDpDRkFic29sdXRlVGltZUdldEN1
cnJlbnQoKSBjaGFyYWN0ZXJzOmNoYXJhY3RlcnMgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJz
OnVubW9kaWZpZWRDaGFyYWN0ZXJzIG1vZGlmaWVyczptX2N1cnJlbnRNb2RpZmllcnMgaXNSZXBl
YXRpbmc6Tk8gd2l0aEZsYWdzOmlucHV0RmxhZ3Mgd2l0aElucHV0TWFuYWdlckhpbnQ6bmlsIGtl
eUNvZGU6a2V5Q29kZSBpc1RhYktleTppc1RhYktleV0gYXV0b3JlbGVhc2VdXTsKICAgICAgICAg
W2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbW1s6OldlYkV2ZW50IGFsbG9jXSBpbml0V2l0aEtl
eUV2ZW50VHlwZTpXZWJFdmVudEtleVVwIHRpbWVTdGFtcDpDRkFic29sdXRlVGltZUdldEN1cnJl
bnQoKSBjaGFyYWN0ZXJzOmNoYXJhY3RlcnMgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOnVu
bW9kaWZpZWRDaGFyYWN0ZXJzIG1vZGlmaWVyczptX2N1cnJlbnRNb2RpZmllcnMgaXNSZXBlYXRp
bmc6Tk8gd2l0aEZsYWdzOmlucHV0RmxhZ3Mgd2l0aElucHV0TWFuYWdlckhpbnQ6bmlsIGtleUNv
ZGU6a2V5Q29kZSBpc1RhYktleTppc1RhYktleV0gYXV0b3JlbGVhc2VdXTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vbWFjL1dlYkF1dG9tYXRpb25TZXNz
aW9uTWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9tYWMvV2ViQXV0
b21hdGlvblNlc3Npb25NYWMubW0KaW5kZXggM2I1ZTU1OGM2NGMzZGE3NjdhOTg5ZWQ2NDIwYTc3
NWYyYzFhNjEzMi4uY2RjNTVmNjE1M2MxZGY1OTU0NGZhYzk3Njg4ZDQ5YjAyNTMyOTM0OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9tYWMvV2ViQXV0b21h
dGlvblNlc3Npb25NYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlv
bi9tYWMvV2ViQXV0b21hdGlvblNlc3Npb25NYWMubW0KQEAgLTExOCwxMSArMTE4LDExIEBAIGJv
b2wgV2ViQXV0b21hdGlvblNlc3Npb246Ondhc0V2ZW50U3ludGhlc2l6ZWRGb3JBdXRvbWF0aW9u
KE5TRXZlbnQgKmV2ZW50KQogCiAjcHJhZ21hIG1hcmsgUGxhdGZvcm0tZGVwZW5kZW50IEltcGxl
bWVudGF0aW9ucwogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRl
TW91c2VJbnRlcmFjdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiB2aWV3UG9zaXRpb24sIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNl
SW50ZXJhY3Rpb24gaW50ZXJhY3Rpb24sIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246
Ok1vdXNlQnV0dG9uIGJ1dHRvbiwgV2ViRXZlbnQ6Ok1vZGlmaWVycyBrZXlNb2RpZmllcnMpCit2
b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlTW91c2VJbnRlcmFjdGlv
bihXZWJQYWdlUHJveHkmIHBhZ2UsIE1vdXNlSW50ZXJhY3Rpb24gaW50ZXJhY3Rpb24sIFdlYk1v
dXNlRXZlbnQ6OkJ1dHRvbiBidXR0b24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBsb2NhdGlv
bkluVmlldywgV2ViRXZlbnQ6Ok1vZGlmaWVycyBrZXlNb2RpZmllcnMpCiB7CiAgICAgSW50UmVj
dCB3aW5kb3dSZWN0OwotICAgIHBhZ2Uucm9vdFZpZXdUb1dpbmRvdyhJbnRSZWN0KHZpZXdQb3Np
dGlvbiwgSW50U2l6ZSgpKSwgd2luZG93UmVjdCk7Ci0gICAgSW50UG9pbnQgd2luZG93UG9zaXRp
b24gPSB3aW5kb3dSZWN0LmxvY2F0aW9uKCk7CisgICAgcGFnZS5yb290Vmlld1RvV2luZG93KElu
dFJlY3QobG9jYXRpb25JblZpZXcsIEludFNpemUoKSksIHdpbmRvd1JlY3QpOworICAgIEludFBv
aW50IGxvY2F0aW9uSW5XaW5kb3cgPSB3aW5kb3dSZWN0LmxvY2F0aW9uKCk7CiAKICAgICBOU0V2
ZW50TW9kaWZpZXJGbGFncyBtb2RpZmllcnMgPSAwOwogICAgIGlmIChrZXlNb2RpZmllcnMgJiBX
ZWJFdmVudDo6TWV0YUtleSkKQEAgLTE0NCwyMCArMTQ0LDIwIEBAIHZvaWQgV2ViQXV0b21hdGlv
blNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVNb3VzZUludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYg
cGFnZSwKICAgICBOU0V2ZW50VHlwZSBkcmFnRXZlbnRUeXBlID0gKE5TRXZlbnRUeXBlKTA7CiAg
ICAgTlNFdmVudFR5cGUgdXBFdmVudFR5cGUgPSAoTlNFdmVudFR5cGUpMDsKICAgICBzd2l0Y2gg
KGJ1dHRvbikgewotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91
c2VCdXR0b246Ok5vbmU6CisgICAgY2FzZSBXZWJNb3VzZUV2ZW50OjpOb0J1dHRvbjoKICAgICAg
ICAgZG93bkV2ZW50VHlwZSA9IHVwRXZlbnRUeXBlID0gZHJhZ0V2ZW50VHlwZSA9IE5TRXZlbnRU
eXBlTW91c2VNb3ZlZDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1dHRvbjo6TGVmdDoKKyAgICBjYXNlIFdlYk1vdXNlRXZl
bnQ6OkxlZnRCdXR0b246CiAgICAgICAgIGRvd25FdmVudFR5cGUgPSBOU0V2ZW50VHlwZUxlZnRN
b3VzZURvd247CiAgICAgICAgIGRyYWdFdmVudFR5cGUgPSBOU0V2ZW50VHlwZUxlZnRNb3VzZURy
YWdnZWQ7CiAgICAgICAgIHVwRXZlbnRUeXBlID0gTlNFdmVudFR5cGVMZWZ0TW91c2VVcDsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpN
b3VzZUJ1dHRvbjo6TWlkZGxlOgorICAgIGNhc2UgV2ViTW91c2VFdmVudDo6TWlkZGxlQnV0dG9u
OgogICAgICAgICBkb3duRXZlbnRUeXBlID0gTlNFdmVudFR5cGVPdGhlck1vdXNlRG93bjsKICAg
ICAgICAgZHJhZ0V2ZW50VHlwZSA9IE5TRXZlbnRUeXBlTGVmdE1vdXNlRHJhZ2dlZDsKICAgICAg
ICAgdXBFdmVudFR5cGUgPSBOU0V2ZW50VHlwZU90aGVyTW91c2VVcDsKICAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1dHRvbjo6
UmlnaHQ6CisgICAgY2FzZSBXZWJNb3VzZUV2ZW50OjpSaWdodEJ1dHRvbjoKICAgICAgICAgZG93
bkV2ZW50VHlwZSA9IE5TRXZlbnRUeXBlUmlnaHRNb3VzZURvd247CiAgICAgICAgIHVwRXZlbnRU
eXBlID0gTlNFdmVudFR5cGVSaWdodE1vdXNlVXA7CiAgICAgICAgIGJyZWFrOwpAQCAtMTY4LDU2
ICsxNjgsNTYgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZU1v
dXNlSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdlLAogICAgIE5TSW50ZWdlciBldmVudE51
bWJlciA9IHN5bnRoZXNpemVkTW91c2VFdmVudE1hZ2ljRXZlbnROdW1iZXI7CiAKICAgICBzd2l0
Y2ggKGludGVyYWN0aW9uKSB7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uOjpNb3VzZUludGVyYWN0aW9uOjpNb3ZlOgorICAgIGNhc2UgTW91c2VJbnRlcmFjdGlvbjo6
TW92ZToKICAgICAgICAgQVNTRVJUKGRyYWdFdmVudFR5cGUpOwotICAgICAgICBbZXZlbnRzVG9C
ZVNlbnQgYWRkT2JqZWN0OltOU0V2ZW50IG1vdXNlRXZlbnRXaXRoVHlwZTpkcmFnRXZlbnRUeXBl
IGxvY2F0aW9uOndpbmRvd1Bvc2l0aW9uIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJzIHRpbWVzdGFt
cDp0aW1lc3RhbXAgd2luZG93TnVtYmVyOndpbmRvd051bWJlciBjb250ZXh0Om5pbCBldmVudE51
bWJlcjpldmVudE51bWJlciBjbGlja0NvdW50OjAgcHJlc3N1cmU6MC4wZl1dOworICAgICAgICBb
ZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltOU0V2ZW50IG1vdXNlRXZlbnRXaXRoVHlwZTpkcmFn
RXZlbnRUeXBlIGxvY2F0aW9uOmxvY2F0aW9uSW5XaW5kb3cgbW9kaWZpZXJGbGFnczptb2RpZmll
cnMgdGltZXN0YW1wOnRpbWVzdGFtcCB3aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6
bmlsIGV2ZW50TnVtYmVyOmV2ZW50TnVtYmVyIGNsaWNrQ291bnQ6MCBwcmVzc3VyZTowLjBmXV07
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlv
bjo6TW91c2VJbnRlcmFjdGlvbjo6RG93bjoKKyAgICBjYXNlIE1vdXNlSW50ZXJhY3Rpb246OkRv
d246CiAgICAgICAgIEFTU0VSVChkb3duRXZlbnRUeXBlKTsKIAogICAgICAgICAvLyBIYXJkLWNv
ZGUgdGhlIGNsaWNrIGNvdW50IHRvIG9uZSwgc2luY2UgY2xpZW50cyBkb24ndCBleHBlY3Qgc3Vj
Y2Vzc2l2ZSBzaW11bGF0ZWQKICAgICAgICAgLy8gZG93bi91cCBldmVudHMgdG8gYmUgcG90ZW50
aWFsbHkgY291bnRlZCBhcyBhIGRvdWJsZSBjbGljayBldmVudC4KLSAgICAgICAgW2V2ZW50c1Rv
QmVTZW50IGFkZE9iamVjdDpbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6ZG93bkV2ZW50VHlw
ZSBsb2NhdGlvbjp3aW5kb3dQb3NpdGlvbiBtb2RpZmllckZsYWdzOm1vZGlmaWVycyB0aW1lc3Rh
bXA6dGltZXN0YW1wIHdpbmRvd051bWJlcjp3aW5kb3dOdW1iZXIgY29udGV4dDpuaWwgZXZlbnRO
dW1iZXI6ZXZlbnROdW1iZXIgY2xpY2tDb3VudDoxIHByZXNzdXJlOldlYkNvcmU6OkZvcmNlQXRD
bGlja11dOworICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltOU0V2ZW50IG1vdXNl
RXZlbnRXaXRoVHlwZTpkb3duRXZlbnRUeXBlIGxvY2F0aW9uOmxvY2F0aW9uSW5XaW5kb3cgbW9k
aWZpZXJGbGFnczptb2RpZmllcnMgdGltZXN0YW1wOnRpbWVzdGFtcCB3aW5kb3dOdW1iZXI6d2lu
ZG93TnVtYmVyIGNvbnRleHQ6bmlsIGV2ZW50TnVtYmVyOmV2ZW50TnVtYmVyIGNsaWNrQ291bnQ6
MSBwcmVzc3VyZTpXZWJDb3JlOjpGb3JjZUF0Q2xpY2tdXTsKICAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUludGVyYWN0aW9uOjpV
cDoKKyAgICBjYXNlIE1vdXNlSW50ZXJhY3Rpb246OlVwOgogICAgICAgICBBU1NFUlQodXBFdmVu
dFR5cGUpOwogCiAgICAgICAgIC8vIEhhcmQtY29kZSB0aGUgY2xpY2sgY291bnQgdG8gb25lLCBz
aW5jZSBjbGllbnRzIGRvbid0IGV4cGVjdCBzdWNjZXNzaXZlIHNpbXVsYXRlZAogICAgICAgICAv
LyBkb3duL3VwIGV2ZW50cyB0byBiZSBwb3RlbnRpYWxseSBjb3VudGVkIGFzIGEgZG91YmxlIGNs
aWNrIGV2ZW50LgotICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltOU0V2ZW50IG1v
dXNlRXZlbnRXaXRoVHlwZTp1cEV2ZW50VHlwZSBsb2NhdGlvbjp3aW5kb3dQb3NpdGlvbiBtb2Rp
ZmllckZsYWdzOm1vZGlmaWVycyB0aW1lc3RhbXA6dGltZXN0YW1wIHdpbmRvd051bWJlcjp3aW5k
b3dOdW1iZXIgY29udGV4dDpuaWwgZXZlbnROdW1iZXI6ZXZlbnROdW1iZXIgY2xpY2tDb3VudDox
IHByZXNzdXJlOjAuMGZdXTsKKyAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbTlNF
dmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6dXBFdmVudFR5cGUgbG9jYXRpb246bG9jYXRpb25Jbldp
bmRvdyBtb2RpZmllckZsYWdzOm1vZGlmaWVycyB0aW1lc3RhbXA6dGltZXN0YW1wIHdpbmRvd051
bWJlcjp3aW5kb3dOdW1iZXIgY29udGV4dDpuaWwgZXZlbnROdW1iZXI6ZXZlbnROdW1iZXIgY2xp
Y2tDb3VudDoxIHByZXNzdXJlOjAuMGZdXTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJbnNw
ZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUludGVyYWN0aW9uOjpTaW5nbGVDbGlj
azoKKyAgICBjYXNlIE1vdXNlSW50ZXJhY3Rpb246OlNpbmdsZUNsaWNrOgogICAgICAgICBBU1NF
UlQodXBFdmVudFR5cGUpOwogICAgICAgICBBU1NFUlQoZG93bkV2ZW50VHlwZSk7CiAKICAgICAg
ICAgLy8gU2VuZCBzZXBhcmF0ZSBkb3duIGFuZCB1cCBldmVudHMuIFdlYkNvcmUgd2lsbCBzZWUg
dGhpcyBhcyBhIHNpbmdsZS1jbGljayBldmVudC4KLSAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFk
ZE9iamVjdDpbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6ZG93bkV2ZW50VHlwZSBsb2NhdGlv
bjp3aW5kb3dQb3NpdGlvbiBtb2RpZmllckZsYWdzOm1vZGlmaWVycyB0aW1lc3RhbXA6dGltZXN0
YW1wIHdpbmRvd051bWJlcjp3aW5kb3dOdW1iZXIgY29udGV4dDpuaWwgZXZlbnROdW1iZXI6ZXZl
bnROdW1iZXIgY2xpY2tDb3VudDoxIHByZXNzdXJlOldlYkNvcmU6OkZvcmNlQXRDbGlja11dOwot
ICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltOU0V2ZW50IG1vdXNlRXZlbnRXaXRo
VHlwZTp1cEV2ZW50VHlwZSBsb2NhdGlvbjp3aW5kb3dQb3NpdGlvbiBtb2RpZmllckZsYWdzOm1v
ZGlmaWVycyB0aW1lc3RhbXA6dGltZXN0YW1wIHdpbmRvd051bWJlcjp3aW5kb3dOdW1iZXIgY29u
dGV4dDpuaWwgZXZlbnROdW1iZXI6ZXZlbnROdW1iZXIgY2xpY2tDb3VudDoxIHByZXNzdXJlOjAu
MGZdXTsKKyAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbTlNFdmVudCBtb3VzZUV2
ZW50V2l0aFR5cGU6ZG93bkV2ZW50VHlwZSBsb2NhdGlvbjpsb2NhdGlvbkluV2luZG93IG1vZGlm
aWVyRmxhZ3M6bW9kaWZpZXJzIHRpbWVzdGFtcDp0aW1lc3RhbXAgd2luZG93TnVtYmVyOndpbmRv
d051bWJlciBjb250ZXh0Om5pbCBldmVudE51bWJlcjpldmVudE51bWJlciBjbGlja0NvdW50OjEg
cHJlc3N1cmU6V2ViQ29yZTo6Rm9yY2VBdENsaWNrXV07CisgICAgICAgIFtldmVudHNUb0JlU2Vu
dCBhZGRPYmplY3Q6W05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOnVwRXZlbnRUeXBlIGxvY2F0
aW9uOmxvY2F0aW9uSW5XaW5kb3cgbW9kaWZpZXJGbGFnczptb2RpZmllcnMgdGltZXN0YW1wOnRp
bWVzdGFtcCB3aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmlsIGV2ZW50TnVtYmVy
OmV2ZW50TnVtYmVyIGNsaWNrQ291bnQ6MSBwcmVzc3VyZTowLjBmXV07CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VJbnRlcmFj
dGlvbjo6RG91YmxlQ2xpY2s6CisgICAgY2FzZSBNb3VzZUludGVyYWN0aW9uOjpEb3VibGVDbGlj
azoKICAgICAgICAgQVNTRVJUKHVwRXZlbnRUeXBlKTsKICAgICAgICAgQVNTRVJUKGRvd25FdmVu
dFR5cGUpOwogCiAgICAgICAgIC8vIFNlbmQgbXVsdGlwbGUgZG93biBhbmQgdXAgZXZlbnRzIHdp
dGggcHJvcGVyIGNsaWNrIGNvdW50LgogICAgICAgICAvLyBXZWJDb3JlIHdpbGwgc2VlIHRoaXMg
YXMgYSBzaW5nbGUtY2xpY2sgZXZlbnQgdGhlbiBkb3VibGUtY2xpY2sgZXZlbnQuCi0gICAgICAg
IFtldmVudHNUb0JlU2VudCBhZGRPYmplY3Q6W05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOmRv
d25FdmVudFR5cGUgbG9jYXRpb246d2luZG93UG9zaXRpb24gbW9kaWZpZXJGbGFnczptb2RpZmll
cnMgdGltZXN0YW1wOnRpbWVzdGFtcCB3aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6
bmlsIGV2ZW50TnVtYmVyOmV2ZW50TnVtYmVyIGNsaWNrQ291bnQ6MSBwcmVzc3VyZTpXZWJDb3Jl
OjpGb3JjZUF0Q2xpY2tdXTsKLSAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbTlNF
dmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6dXBFdmVudFR5cGUgbG9jYXRpb246d2luZG93UG9zaXRp
b24gbW9kaWZpZXJGbGFnczptb2RpZmllcnMgdGltZXN0YW1wOnRpbWVzdGFtcCB3aW5kb3dOdW1i
ZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmlsIGV2ZW50TnVtYmVyOmV2ZW50TnVtYmVyIGNsaWNr
Q291bnQ6MSBwcmVzc3VyZTowLjBmXV07Ci0gICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmpl
Y3Q6W05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOmRvd25FdmVudFR5cGUgbG9jYXRpb246d2lu
ZG93UG9zaXRpb24gbW9kaWZpZXJGbGFnczptb2RpZmllcnMgdGltZXN0YW1wOnRpbWVzdGFtcCB3
aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmlsIGV2ZW50TnVtYmVyOmV2ZW50TnVt
YmVyIGNsaWNrQ291bnQ6MiBwcmVzc3VyZTpXZWJDb3JlOjpGb3JjZUF0Q2xpY2tdXTsKLSAgICAg
ICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6
dXBFdmVudFR5cGUgbG9jYXRpb246d2luZG93UG9zaXRpb24gbW9kaWZpZXJGbGFnczptb2RpZmll
cnMgdGltZXN0YW1wOnRpbWVzdGFtcCB3aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6
bmlsIGV2ZW50TnVtYmVyOmV2ZW50TnVtYmVyIGNsaWNrQ291bnQ6MiBwcmVzc3VyZTowLjBmXV07
CisgICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmplY3Q6W05TRXZlbnQgbW91c2VFdmVudFdp
dGhUeXBlOmRvd25FdmVudFR5cGUgbG9jYXRpb246bG9jYXRpb25JbldpbmRvdyBtb2RpZmllckZs
YWdzOm1vZGlmaWVycyB0aW1lc3RhbXA6dGltZXN0YW1wIHdpbmRvd051bWJlcjp3aW5kb3dOdW1i
ZXIgY29udGV4dDpuaWwgZXZlbnROdW1iZXI6ZXZlbnROdW1iZXIgY2xpY2tDb3VudDoxIHByZXNz
dXJlOldlYkNvcmU6OkZvcmNlQXRDbGlja11dOworICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRk
T2JqZWN0OltOU0V2ZW50IG1vdXNlRXZlbnRXaXRoVHlwZTp1cEV2ZW50VHlwZSBsb2NhdGlvbjps
b2NhdGlvbkluV2luZG93IG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJzIHRpbWVzdGFtcDp0aW1lc3Rh
bXAgd2luZG93TnVtYmVyOndpbmRvd051bWJlciBjb250ZXh0Om5pbCBldmVudE51bWJlcjpldmVu
dE51bWJlciBjbGlja0NvdW50OjEgcHJlc3N1cmU6MC4wZl1dOworICAgICAgICBbZXZlbnRzVG9C
ZVNlbnQgYWRkT2JqZWN0OltOU0V2ZW50IG1vdXNlRXZlbnRXaXRoVHlwZTpkb3duRXZlbnRUeXBl
IGxvY2F0aW9uOmxvY2F0aW9uSW5XaW5kb3cgbW9kaWZpZXJGbGFnczptb2RpZmllcnMgdGltZXN0
YW1wOnRpbWVzdGFtcCB3aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmlsIGV2ZW50
TnVtYmVyOmV2ZW50TnVtYmVyIGNsaWNrQ291bnQ6MiBwcmVzc3VyZTpXZWJDb3JlOjpGb3JjZUF0
Q2xpY2tdXTsKKyAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbTlNFdmVudCBtb3Vz
ZUV2ZW50V2l0aFR5cGU6dXBFdmVudFR5cGUgbG9jYXRpb246bG9jYXRpb25JbldpbmRvdyBtb2Rp
ZmllckZsYWdzOm1vZGlmaWVycyB0aW1lc3RhbXA6dGltZXN0YW1wIHdpbmRvd051bWJlcjp3aW5k
b3dOdW1iZXIgY29udGV4dDpuaWwgZXZlbnROdW1iZXI6ZXZlbnROdW1iZXIgY2xpY2tDb3VudDoy
IHByZXNzdXJlOjAuMGZdXTsKICAgICB9CiAKICAgICBzZW5kU3ludGhlc2l6ZWRFdmVudHNUb1Bh
Z2UocGFnZSwgZXZlbnRzVG9CZVNlbnQuZ2V0KCkpOwogfQogCi1zdGF0aWMgYm9vbCBrZXlIYXNT
dGlja3lNb2RpZmllcihJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5
IGtleSkKK3N0YXRpYyBib29sIHZpcnR1YWxLZXlIYXNTdGlja3lNb2RpZmllcihWaXJ0dWFsS2V5
IGtleSkKIHsKICAgICAvLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGtleSdzIG1vZGlmaWVyIGZsYWdz
IHNob3VsZCBhZmZlY3Qgb3RoZXIgZXZlbnRzIHdoaWxlIHByZXNzZWQgZG93bi4KICAgICBzd2l0
Y2ggKGtleSkgewotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6Vmly
dHVhbEtleTo6U2hpZnQ6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
OjpWaXJ0dWFsS2V5OjpDb250cm9sOgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbjo6VmlydHVhbEtleTo6QWx0ZXJuYXRlOgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TWV0YToKLSAgICBjYXNlIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkNvbW1hbmQ6CisgICAgY2FzZSBWaXJ0
dWFsS2V5OjpTaGlmdDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkNvbnRyb2w6CisgICAgY2FzZSBW
aXJ0dWFsS2V5OjpBbHRlcm5hdGU6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpNZXRhOgorICAgIGNh
c2UgVmlydHVhbEtleTo6Q29tbWFuZDoKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBkZWZh
dWx0OgpAQCAtMjI1LDIwMSArMjI1LDIwMSBAQCBzdGF0aWMgYm9vbCBrZXlIYXNTdGlja3lNb2Rp
ZmllcihJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5IGtleQogICAg
IH0KIH0KIAotc3RhdGljIGludCBrZXlDb2RlRm9yVmlydHVhbEtleShJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5IGtleSkKK3N0YXRpYyBpbnQga2V5Q29kZUZvclZp
cnR1YWxLZXkoVmlydHVhbEtleSBrZXkpCiB7CiAgICAgLy8gVGhlIGxpa2VseSBrZXlDb2RlIGZv
ciB0aGUgdmlydHVhbCBrZXkgYXMgZGVmaW5lZCBpbiA8SElUb29sYm94L0V2ZW50cy5oPi4KICAg
ICBzd2l0Y2ggKGtleSkgewotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlv
bjo6VmlydHVhbEtleTo6U2hpZnQ6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpTaGlmdDoKICAgICAg
ICAgcmV0dXJuIGtWS19TaGlmdDsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9t
YXRpb246OlZpcnR1YWxLZXk6OkNvbnRyb2w6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpDb250cm9s
OgogICAgICAgICByZXR1cm4ga1ZLX0NvbnRyb2w7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpBbHRlcm5hdGU6CisgICAgY2FzZSBWaXJ0dWFs
S2V5OjpBbHRlcm5hdGU6CiAgICAgICAgIHJldHVybiBrVktfT3B0aW9uOwotICAgIGNhc2UgSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TWV0YToKKyAgICBjYXNl
IFZpcnR1YWxLZXk6Ok1ldGE6CiAgICAgICAgIC8vIFRoZSAnbWV0YScga2V5IGRvZXMgbm90IGV4
aXN0IG9uIEFwcGxlIGtleWJvYXJkcyBhbmQgaXMgdXN1YWxseQogICAgICAgICAvLyBtYXBwZWQg
dG8gdGhlIENvbW1hbmQga2V5IHdoZW4gdXNpbmcgdGhpcmQtcGFydHkga2V5Ym9hcmRzLgotICAg
IGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6Q29tbWFu
ZDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkNvbW1hbmQ6CiAgICAgICAgIHJldHVybiBrVktfQ29t
bWFuZDsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxL
ZXk6OkhlbHA6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpIZWxwOgogICAgICAgICByZXR1cm4ga1ZL
X0hlbHA7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFs
S2V5OjpCYWNrc3BhY2U6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpCYWNrc3BhY2U6CiAgICAgICAg
IHJldHVybiBrVktfRGVsZXRlOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21h
dGlvbjo6VmlydHVhbEtleTo6VGFiOgorICAgIGNhc2UgVmlydHVhbEtleTo6VGFiOgogICAgICAg
ICByZXR1cm4ga1ZLX1RhYjsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRp
b246OlZpcnR1YWxLZXk6OkNsZWFyOgorICAgIGNhc2UgVmlydHVhbEtleTo6Q2xlYXI6CiAgICAg
ICAgIHJldHVybiBrVktfQU5TSV9LZXlwYWRDbGVhcjsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkVudGVyOgorICAgIGNhc2UgVmlydHVhbEtl
eTo6RW50ZXI6CiAgICAgICAgIHJldHVybiBrVktfQU5TSV9LZXlwYWRFbnRlcjsKLSAgICBjYXNl
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OlBhdXNlOgorICAg
IGNhc2UgVmlydHVhbEtleTo6UGF1c2U6CiAgICAgICAgIC8vIFRoZSAncGF1c2UnIGtleSBkb2Vz
IG5vdCBleGlzdCBvbiBBcHBsZSBrZXlib2FyZHMgYW5kIGhhcyBubyBrZXlDb2RlLgogICAgICAg
ICAvLyBUaGUgc2VtYW50aWNzIGFyZSB1bmNsZWFyIHNvIGp1c3QgYWJvcnQgYW5kIGRvIG5vdGhp
bmcuCiAgICAgICAgIHJldHVybiAwOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbjo6VmlydHVhbEtleTo6Q2FuY2VsOgorICAgIGNhc2UgVmlydHVhbEtleTo6Q2FuY2Vs
OgogICAgICAgICAvLyBUaGUgJ2NhbmNlbCcga2V5IGRvZXMgbm90IGV4aXN0IG9uIEFwcGxlIGtl
eWJvYXJkcyBhbmQgaGFzIG5vIGtleUNvZGUuCiAgICAgICAgIC8vIEFjY29yZGluZyB0byB0aGUg
aW50ZXJuZXQgaXRzIGZ1bmN0aW9uYWxpdHkgaXMgc2ltaWxhciB0byAnRXNjYXBlJy4KLSAgICBj
YXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkVzY2FwZToK
KyAgICBjYXNlIFZpcnR1YWxLZXk6OkVzY2FwZToKICAgICAgICAgcmV0dXJuIGtWS19Fc2NhcGU7
Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpQ
YWdlVXA6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpQYWdlVXA6CiAgICAgICAgIHJldHVybiBrVktf
UGFnZVVwOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVh
bEtleTo6UGFnZURvd246CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpQYWdlRG93bjoKICAgICAgICAg
cmV0dXJuIGtWS19QYWdlRG93bjsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9t
YXRpb246OlZpcnR1YWxLZXk6OkVuZDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkVuZDoKICAgICAg
ICAgcmV0dXJuIGtWS19FbmQ7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uOjpWaXJ0dWFsS2V5OjpIb21lOgorICAgIGNhc2UgVmlydHVhbEtleTo6SG9tZToKICAgICAg
ICAgcmV0dXJuIGtWS19Ib21lOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21h
dGlvbjo6VmlydHVhbEtleTo6TGVmdEFycm93OgorICAgIGNhc2UgVmlydHVhbEtleTo6TGVmdEFy
cm93OgogICAgICAgICByZXR1cm4ga1ZLX0xlZnRBcnJvdzsKLSAgICBjYXNlIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OlVwQXJyb3c6CisgICAgY2FzZSBWaXJ0
dWFsS2V5OjpVcEFycm93OgogICAgICAgICByZXR1cm4ga1ZLX1VwQXJyb3c7Ci0gICAgY2FzZSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpSaWdodEFycm93Ogor
ICAgIGNhc2UgVmlydHVhbEtleTo6UmlnaHRBcnJvdzoKICAgICAgICAgcmV0dXJuIGtWS19SaWdo
dEFycm93OwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVh
bEtleTo6RG93bkFycm93OgorICAgIGNhc2UgVmlydHVhbEtleTo6RG93bkFycm93OgogICAgICAg
ICByZXR1cm4ga1ZLX0Rvd25BcnJvdzsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1
dG9tYXRpb246OlZpcnR1YWxLZXk6Okluc2VydDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6Okluc2Vy
dDoKICAgICAgICAgLy8gVGhlICdpbnNlcnQnIGtleSBkb2VzIG5vdCBleGlzdCBvbiBBcHBsZSBr
ZXlib2FyZHMgYW5kIGhhcyBubyBrZXlDb2RlLgogICAgICAgICAvLyBUaGUgc2VtYW50aWNzIGFy
ZSB1bmNsZWFyIHNvIGp1c3QgYWJvcnQgYW5kIGRvIG5vdGhpbmcuCiAgICAgICAgIHJldHVybiAw
OwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6
RGVsZXRlOgorICAgIGNhc2UgVmlydHVhbEtleTo6RGVsZXRlOgogICAgICAgICByZXR1cm4ga1ZL
X0ZvcndhcmREZWxldGU7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
OjpWaXJ0dWFsS2V5OjpTcGFjZToKKyAgICBjYXNlIFZpcnR1YWxLZXk6OlNwYWNlOgogICAgICAg
ICByZXR1cm4ga1ZLX1NwYWNlOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21h
dGlvbjo6VmlydHVhbEtleTo6U2VtaWNvbG9uOgorICAgIGNhc2UgVmlydHVhbEtleTo6U2VtaWNv
bG9uOgogICAgICAgICByZXR1cm4ga1ZLX0FOU0lfU2VtaWNvbG9uOwotICAgIGNhc2UgSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RXF1YWxzOgorICAgIGNhc2Ug
VmlydHVhbEtleTo6RXF1YWxzOgogICAgICAgICByZXR1cm4ga1ZLX0FOU0lfRXF1YWw7Ci0gICAg
Y2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpSZXR1cm46
CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpSZXR1cm46CiAgICAgICAgIHJldHVybiBrVktfUmV0dXJu
OwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6
TnVtYmVyUGFkMDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZDA6CiAgICAgICAgIHJl
dHVybiBrVktfQU5TSV9LZXlwYWQwOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkMToKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51
bWJlclBhZDE6CiAgICAgICAgIHJldHVybiBrVktfQU5TSV9LZXlwYWQxOwotICAgIGNhc2UgSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkMjoKKyAg
ICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZDI6CiAgICAgICAgIHJldHVybiBrVktfQU5TSV9L
ZXlwYWQyOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVh
bEtleTo6TnVtYmVyUGFkMzoKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZDM6CiAgICAg
ICAgIHJldHVybiBrVktfQU5TSV9LZXlwYWQzOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkNDoKKyAgICBjYXNlIFZpcnR1YWxL
ZXk6Ok51bWJlclBhZDQ6CiAgICAgICAgIHJldHVybiBrVktfQU5TSV9LZXlwYWQ0OwotICAgIGNh
c2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFk
NToKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZDU6CiAgICAgICAgIHJldHVybiBrVktf
QU5TSV9LZXlwYWQ1OwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6
VmlydHVhbEtleTo6TnVtYmVyUGFkNjoKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZDY6
CiAgICAgICAgIHJldHVybiBrVktfQU5TSV9LZXlwYWQ2OwotICAgIGNhc2UgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkNzoKKyAgICBjYXNlIFZp
cnR1YWxLZXk6Ok51bWJlclBhZDc6CiAgICAgICAgIHJldHVybiBrVktfQU5TSV9LZXlwYWQ3Owot
ICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVt
YmVyUGFkODoKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZDg6CiAgICAgICAgIHJldHVy
biBrVktfQU5TSV9LZXlwYWQ4OwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21h
dGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkOToKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJl
clBhZDk6CiAgICAgICAgIHJldHVybiBrVktfQU5TSV9LZXlwYWQ5OwotICAgIGNhc2UgSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkTXVsdGlwbHk6
CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWRNdWx0aXBseToKICAgICAgICAgcmV0dXJu
IGtWS19BTlNJX0tleXBhZE11bHRpcGx5OwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkQWRkOgorICAgIGNhc2UgVmlydHVhbEtl
eTo6TnVtYmVyUGFkQWRkOgogICAgICAgICByZXR1cm4ga1ZLX0FOU0lfS2V5cGFkUGx1czsKLSAg
ICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJl
clBhZFN1YnRyYWN0OgorICAgIGNhc2UgVmlydHVhbEtleTo6TnVtYmVyUGFkU3VidHJhY3Q6CiAg
ICAgICAgIHJldHVybiBrVktfQU5TSV9LZXlwYWRNaW51czsKLSAgICBjYXNlIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZFNlcGFyYXRvcjoKKyAg
ICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZFNlcGFyYXRvcjoKICAgICAgICAgLy8gVGhlICdT
ZXBhcmF0b3InIGtleSBpcyBvbmx5IHByZXNlbnQgb24gYSBmZXcgaW50ZXJuYXRpb25hbCBrZXli
b2FyZHMuCiAgICAgICAgIC8vIEl0IGlzIHVzdWFsbHkgbWFwcGVkIHRvIHRoZSBzYW1lIGNoYXJh
Y3RlciBhcyBEZWNpbWFsICgnLicgb3IgJywnKS4KICAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAg
Y2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQ
YWREZWNpbWFsOgorICAgIGNhc2UgVmlydHVhbEtleTo6TnVtYmVyUGFkRGVjaW1hbDoKICAgICAg
ICAgcmV0dXJuIGtWS19BTlNJX0tleXBhZERlY2ltYWw7CiAgICAgICAgIC8vIEZJWE1FOiB0aGlz
IG1pZ2h0IGJlIGxvY2FsZS1kZXBlbmRlbnQuIFNlZSB0aGUgYWJvdmUgY29tbWVudC4KLSAgICBj
YXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBh
ZERpdmlkZToKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZERpdmlkZToKICAgICAgICAg
cmV0dXJuIGtWS19BTlNJX0tleXBhZERpdmlkZTsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkZ1bmN0aW9uMToKKyAgICBjYXNlIFZpcnR1YWxL
ZXk6OkZ1bmN0aW9uMToKICAgICAgICAgcmV0dXJuIGtWS19GMTsKLSAgICBjYXNlIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkZ1bmN0aW9uMjoKKyAgICBjYXNl
IFZpcnR1YWxLZXk6OkZ1bmN0aW9uMjoKICAgICAgICAgcmV0dXJuIGtWS19GMjsKLSAgICBjYXNl
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkZ1bmN0aW9uMzoK
KyAgICBjYXNlIFZpcnR1YWxLZXk6OkZ1bmN0aW9uMzoKICAgICAgICAgcmV0dXJuIGtWS19GMzsK
LSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkZ1
bmN0aW9uNDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkZ1bmN0aW9uNDoKICAgICAgICAgcmV0dXJu
IGtWS19GNDsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1
YWxLZXk6OkZ1bmN0aW9uNToKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkZ1bmN0aW9uNToKICAgICAg
ICAgcmV0dXJuIGtWS19GNTsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRp
b246OlZpcnR1YWxLZXk6OkZ1bmN0aW9uNjoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkZ1bmN0aW9u
NjoKICAgICAgICAgcmV0dXJuIGtWS19GNjsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkZ1bmN0aW9uNzoKKyAgICBjYXNlIFZpcnR1YWxLZXk6
OkZ1bmN0aW9uNzoKICAgICAgICAgcmV0dXJuIGtWS19GNzsKLSAgICBjYXNlIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkZ1bmN0aW9uODoKKyAgICBjYXNlIFZp
cnR1YWxLZXk6OkZ1bmN0aW9uODoKICAgICAgICAgcmV0dXJuIGtWS19GODsKLSAgICBjYXNlIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkZ1bmN0aW9uOToKKyAg
ICBjYXNlIFZpcnR1YWxLZXk6OkZ1bmN0aW9uOToKICAgICAgICAgcmV0dXJuIGtWS19GOTsKLSAg
ICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkZ1bmN0
aW9uMTA6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpGdW5jdGlvbjEwOgogICAgICAgICByZXR1cm4g
a1ZLX0YxMDsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1
YWxLZXk6OkZ1bmN0aW9uMTE6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpGdW5jdGlvbjExOgogICAg
ICAgICByZXR1cm4ga1ZLX0YxMTsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9t
YXRpb246OlZpcnR1YWxLZXk6OkZ1bmN0aW9uMTI6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpGdW5j
dGlvbjEyOgogICAgICAgICByZXR1cm4ga1ZLX0YxMjsKICAgICB9CiB9CiAKLXN0YXRpYyBOU0V2
ZW50TW9kaWZpZXJGbGFncyBldmVudE1vZGlmaWVyRmxhZ3NGb3JWaXJ0dWFsS2V5KEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXkga2V5KQorc3RhdGljIE5TRXZlbnRN
b2RpZmllckZsYWdzIGV2ZW50TW9kaWZpZXJGbGFnc0ZvclZpcnR1YWxLZXkoVmlydHVhbEtleSBr
ZXkpCiB7CiAgICAgLy8gQ29tcHV0ZXMgdGhlIG1vZGlmaWVycyBjaGFuZ2VkIGJ5IHRoZSB2aXJ0
dWFsIGtleSB3aGVuIGl0IGlzIHByZXNzZWQgb3IgcmVsZWFzZWQuCiAgICAgLy8gVGhlIG1hcHBp
bmcgZnJvbSBrZXlzIHRvIG1vZGlmaWVycyBpcyBzcGVjaWZpZWQgaW4gdGhlIGRvY3VtZW50YXRp
b24gZm9yIE5TRXZlbnQuCiAgICAgc3dpdGNoIChrZXkpIHsKLSAgICBjYXNlIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OlNoaWZ0OgorICAgIGNhc2UgVmlydHVh
bEtleTo6U2hpZnQ6CiAgICAgICAgIHJldHVybiBOU0V2ZW50TW9kaWZpZXJGbGFnU2hpZnQ7CiAK
LSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkNv
bnRyb2w6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpDb250cm9sOgogICAgICAgICByZXR1cm4gTlNF
dmVudE1vZGlmaWVyRmxhZ0NvbnRyb2w7CiAKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkFsdGVybmF0ZToKKyAgICBjYXNlIFZpcnR1YWxLZXk6
OkFsdGVybmF0ZToKICAgICAgICAgcmV0dXJuIE5TRXZlbnRNb2RpZmllckZsYWdPcHRpb247CiAK
LSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok1l
dGE6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpNZXRhOgogICAgICAgICAvLyBUaGUgJ21ldGEnIGtl
eSBkb2VzIG5vdCBleGlzdCBvbiBBcHBsZSBrZXlib2FyZHMgYW5kIGlzIHVzdWFsbHkKICAgICAg
ICAgLy8gbWFwcGVkIHRvIHRoZSBDb21tYW5kIGtleSB3aGVuIHVzaW5nIHRoaXJkLXBhcnR5IGtl
eWJvYXJkcy4KLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1
YWxLZXk6OkNvbW1hbmQ6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpDb21tYW5kOgogICAgICAgICBy
ZXR1cm4gTlNFdmVudE1vZGlmaWVyRmxhZ0NvbW1hbmQ7CiAKLSAgICBjYXNlIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkhlbHA6CisgICAgY2FzZSBWaXJ0dWFs
S2V5OjpIZWxwOgogICAgICAgICByZXR1cm4gTlNFdmVudE1vZGlmaWVyRmxhZ0hlbHAgfCBOU0V2
ZW50TW9kaWZpZXJGbGFnRnVuY3Rpb247CiAKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OlBhZ2VVcDoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OlBhZ2VEb3duOgotICAgIGNhc2UgSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RW5kOgotICAgIGNhc2UgSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6SG9tZToKKyAgICBjYXNl
IFZpcnR1YWxLZXk6OlBhZ2VVcDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OlBhZ2VEb3duOgorICAg
IGNhc2UgVmlydHVhbEtleTo6RW5kOgorICAgIGNhc2UgVmlydHVhbEtleTo6SG9tZToKICAgICAg
ICAgcmV0dXJuIE5TRXZlbnRNb2RpZmllckZsYWdGdW5jdGlvbjsKIAotICAgIGNhc2UgSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TGVmdEFycm93OgotICAgIGNh
c2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6VXBBcnJvdzoK
LSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OlJp
Z2h0QXJyb3c6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0
dWFsS2V5OjpEb3duQXJyb3c6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpMZWZ0QXJyb3c6CisgICAg
Y2FzZSBWaXJ0dWFsS2V5OjpVcEFycm93OgorICAgIGNhc2UgVmlydHVhbEtleTo6UmlnaHRBcnJv
dzoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkRvd25BcnJvdzoKICAgICAgICAgcmV0dXJuIE5TRXZl
bnRNb2RpZmllckZsYWdOdW1lcmljUGFkIHwgTlNFdmVudE1vZGlmaWVyRmxhZ0Z1bmN0aW9uOwog
Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpE
ZWxldGU6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpEZWxldGU6CiAgICAgICAgIHJldHVybiBOU0V2
ZW50TW9kaWZpZXJGbGFnRnVuY3Rpb247CiAKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkNsZWFyOgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkMDoKLSAgICBjYXNlIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZDE6Ci0gICAg
Y2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQ
YWQyOgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtl
eTo6TnVtYmVyUGFkMzoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246
OlZpcnR1YWxLZXk6Ok51bWJlclBhZDQ6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpB
dXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWQ1OgotICAgIGNhc2UgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkNjoKLSAgICBjYXNlIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZDc6Ci0g
ICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1i
ZXJQYWQ4OgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVh
bEtleTo6TnVtYmVyUGFkOToKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRp
b246OlZpcnR1YWxLZXk6Ok51bWJlclBhZE11bHRpcGx5OgotICAgIGNhc2UgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkQWRkOgotICAgIGNhc2Ug
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkU3Vi
dHJhY3Q6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFs
S2V5OjpOdW1iZXJQYWRTZXBhcmF0b3I6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpB
dXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWREZWNpbWFsOgotICAgIGNhc2UgSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkRGl2aWRlOgor
ICAgIGNhc2UgVmlydHVhbEtleTo6Q2xlYXI6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQ
YWQwOgorICAgIGNhc2UgVmlydHVhbEtleTo6TnVtYmVyUGFkMToKKyAgICBjYXNlIFZpcnR1YWxL
ZXk6Ok51bWJlclBhZDI6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWQzOgorICAgIGNh
c2UgVmlydHVhbEtleTo6TnVtYmVyUGFkNDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJlclBh
ZDU6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWQ2OgorICAgIGNhc2UgVmlydHVhbEtl
eTo6TnVtYmVyUGFkNzoKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZDg6CisgICAgY2Fz
ZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWQ5OgorICAgIGNhc2UgVmlydHVhbEtleTo6TnVtYmVyUGFk
TXVsdGlwbHk6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWRBZGQ6CisgICAgY2FzZSBW
aXJ0dWFsS2V5OjpOdW1iZXJQYWRTdWJ0cmFjdDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJl
clBhZFNlcGFyYXRvcjoKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZERlY2ltYWw6Cisg
ICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWREaXZpZGU6CiAgICAgICAgIHJldHVybiBOU0V2
ZW50TW9kaWZpZXJGbGFnTnVtZXJpY1BhZDsKIAotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RnVuY3Rpb24xOgotICAgIGNhc2UgSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RnVuY3Rpb24yOgotICAgIGNhc2Ug
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RnVuY3Rpb24zOgot
ICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RnVu
Y3Rpb240OgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVh
bEtleTo6RnVuY3Rpb241OgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlv
bjo6VmlydHVhbEtleTo6RnVuY3Rpb242OgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RnVuY3Rpb243OgotICAgIGNhc2UgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RnVuY3Rpb244OgotICAgIGNhc2UgSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RnVuY3Rpb245OgotICAg
IGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RnVuY3Rp
b24xMDoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxL
ZXk6OkZ1bmN0aW9uMTE6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
OjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjEyOgorICAgIGNhc2UgVmlydHVhbEtleTo6RnVuY3Rpb24x
OgorICAgIGNhc2UgVmlydHVhbEtleTo6RnVuY3Rpb24yOgorICAgIGNhc2UgVmlydHVhbEtleTo6
RnVuY3Rpb24zOgorICAgIGNhc2UgVmlydHVhbEtleTo6RnVuY3Rpb240OgorICAgIGNhc2UgVmly
dHVhbEtleTo6RnVuY3Rpb241OgorICAgIGNhc2UgVmlydHVhbEtleTo6RnVuY3Rpb242OgorICAg
IGNhc2UgVmlydHVhbEtleTo6RnVuY3Rpb243OgorICAgIGNhc2UgVmlydHVhbEtleTo6RnVuY3Rp
b244OgorICAgIGNhc2UgVmlydHVhbEtleTo6RnVuY3Rpb245OgorICAgIGNhc2UgVmlydHVhbEtl
eTo6RnVuY3Rpb24xMDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkZ1bmN0aW9uMTE6CisgICAgY2Fz
ZSBWaXJ0dWFsS2V5OjpGdW5jdGlvbjEyOgogICAgICAgICByZXR1cm4gTlNFdmVudE1vZGlmaWVy
RmxhZ0Z1bmN0aW9uOwogCiAgICAgZGVmYXVsdDoKQEAgLTQyNywxOSArNDI3LDM0IEBAIHN0YXRp
YyBOU0V2ZW50TW9kaWZpZXJGbGFncyBldmVudE1vZGlmaWVyRmxhZ3NGb3JWaXJ0dWFsS2V5KElu
c3BlY3Rvcjo6UHJvdG9jb2w6CiAgICAgfQogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9u
OjpwbGF0Zm9ybVNpbXVsYXRlS2V5U3Ryb2tlKFdlYlBhZ2VQcm94eSYgcGFnZSwgSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXV0b21hdGlvbjo6S2V5Ym9hcmRJbnRlcmFjdGlvblR5cGUgaW50ZXJhY3Rp
b24sIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXkga2V5KQordm9p
ZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZUtleWJvYXJkSW50ZXJhY3Rp
b24oV2ViUGFnZVByb3h5JiBwYWdlLCBLZXlib2FyZEludGVyYWN0aW9uIGludGVyYWN0aW9uLCBz
dGQ6Om9wdGlvbmFsPFZpcnR1YWxLZXk+IHZpcnR1YWxLZXksIHN0ZDo6b3B0aW9uYWw8Q2hhcktl
eT4gY2hhcktleSkKIHsKICAgICAvLyBGSVhNRTogdGhpcyBmdW5jdGlvbiBhbmQgdGhlIEF1dG9t
YXRpb24gcHJvdG9jb2wgZW51bSBzaG91bGQgcHJvYmFibHkgYWRvcHQga2V5IG5hbWVzCiAgICAg
Ly8gZnJvbSBXM0MgVUlFdmVudHMgc3RhbmRhcmQuIEZvciBtb3JlIGRldGFpbHM6IGh0dHBzOi8v
dzNjLmdpdGh1Yi5pby91aWV2ZW50cy1jb2RlLwogCi0gICAgYm9vbCBpc1N0aWNreU1vZGlmaWVy
ID0ga2V5SGFzU3RpY2t5TW9kaWZpZXIoa2V5KTsKLSAgICBOU0V2ZW50TW9kaWZpZXJGbGFncyBj
aGFuZ2VkTW9kaWZpZXJzID0gZXZlbnRNb2RpZmllckZsYWdzRm9yVmlydHVhbEtleShrZXkpOwot
ICAgIGludCBrZXlDb2RlID0ga2V5Q29kZUZvclZpcnR1YWxLZXkoa2V5KTsKKyAgICBBU1NFUlQo
dmlydHVhbEtleS5oYXNfdmFsdWUoKSB8fCBjaGFyS2V5Lmhhc192YWx1ZSgpKTsKKworICAgIGJv
b2wgaXNTdGlja3lNb2RpZmllciA9IGZhbHNlOworICAgIE5TRXZlbnRNb2RpZmllckZsYWdzIGNo
YW5nZWRNb2RpZmllcnMgPSAwOworICAgIGludCBrZXlDb2RlOworICAgIHN0ZDo6b3B0aW9uYWw8
dW5pY2hhcj4gY2hhckNvZGU7CisgICAgc3RkOjpvcHRpb25hbDx1bmljaGFyPiBjaGFyQ29kZUln
bm9yaW5nTW9kaWZpZXJzOworICAgIAorICAgIGlmICh2aXJ0dWFsS2V5Lmhhc192YWx1ZSgpKSB7
CisgICAgICAgIGlzU3RpY2t5TW9kaWZpZXIgPSB2aXJ0dWFsS2V5SGFzU3RpY2t5TW9kaWZpZXIo
dmlydHVhbEtleS52YWx1ZSgpKTsKKyAgICAgICAgY2hhbmdlZE1vZGlmaWVycyA9IGV2ZW50TW9k
aWZpZXJGbGFnc0ZvclZpcnR1YWxLZXkodmlydHVhbEtleS52YWx1ZSgpKTsKKyAgICAgICAga2V5
Q29kZSA9IGtleUNvZGVGb3JWaXJ0dWFsS2V5KHZpcnR1YWxLZXkudmFsdWUoKSk7CisgICAgICAg
IGNoYXJDb2RlID0gY2hhckNvZGVGb3JWaXJ0dWFsS2V5KHZpcnR1YWxLZXkudmFsdWUoKSk7Cisg
ICAgICAgIGNoYXJDb2RlSWdub3JpbmdNb2RpZmllcnMgPSBjaGFyQ29kZUlnbm9yaW5nTW9kaWZp
ZXJzRm9yVmlydHVhbEtleSh2aXJ0dWFsS2V5LnZhbHVlKCkpOworICAgIH0KKyAgICAKKyAgICBp
ZiAoY2hhcktleS5oYXNfdmFsdWUoKSkgeworICAgICAgICBjaGFyQ29kZSA9ICh1bmljaGFyKWNo
YXJLZXkudmFsdWUoKTsKKyAgICAgICAgY2hhckNvZGVJZ25vcmluZ01vZGlmaWVycyA9ICh1bmlj
aGFyKWNoYXJLZXkudmFsdWUoKTsKKyAgICB9CiAKICAgICAvLyBGSVhNRTogY29uc2lkZXIgdXNp
bmcgQXBwS2l0IFNQSSB0byBub3JtYWxpemUgJ2NoYXJhY3RlcnMnLCBpLmUuLCBjaGFuZ2luZyAq
IHRvIFNoaWZ0LTgsCiAgICAgLy8gYW5kIHBhc3NpbmcgdGhhdCBpbiB0byBjaGFyYWN0ZXJzSWdu
b3JpbmdNb2RpZmllcnMuIFdlIGNvdWxkIGhhcmRjb2RlIHRoaXMgZm9yIEFTQ0lJIGlmIG5lZWRl
ZC4KLSAgICBzdGQ6Om9wdGlvbmFsPHVuaWNoYXI+IGNoYXJDb2RlID0gY2hhckNvZGVGb3JWaXJ0
dWFsS2V5KGtleSk7Ci0gICAgc3RkOjpvcHRpb25hbDx1bmljaGFyPiBjaGFyQ29kZUlnbm9yaW5n
TW9kaWZpZXJzID0gY2hhckNvZGVJZ25vcmluZ01vZGlmaWVyc0ZvclZpcnR1YWxLZXkoa2V5KTsK
ICAgICBOU1N0cmluZyAqY2hhcmFjdGVycyA9IGNoYXJDb2RlID8gW05TU3RyaW5nIHN0cmluZ1dp
dGhDaGFyYWN0ZXJzOiZjaGFyQ29kZS52YWx1ZSgpIGxlbmd0aDoxXSA6IG5pbDsKICAgICBOU1N0
cmluZyAqdW5tb2RpZmllZENoYXJhY3RlcnMgPSBjaGFyQ29kZUlnbm9yaW5nTW9kaWZpZXJzID8g
W05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaGFyQ29kZUlnbm9yaW5nTW9kaWZpZXJz
LnZhbHVlKCkgbGVuZ3RoOjFdIDogbmlsOwogCkBAIC00NTIsMTkgKzQ2NywxOSBAQCB2b2lkIFdl
YkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlS2V5U3Ryb2tlKFdlYlBhZ2VQcm94
eSYgcGFnZSwgSW5zcGVjdAogICAgIE5TUG9pbnQgZXZlbnRQb3NpdGlvbiA9IE5TTWFrZVBvaW50
KDAsIHdpbmRvdy5mcmFtZS5zaXplLmhlaWdodCk7CiAKICAgICBzd2l0Y2ggKGludGVyYWN0aW9u
KSB7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpLZXlib2FyZElu
dGVyYWN0aW9uVHlwZTo6S2V5UHJlc3M6IHsKKyAgICBjYXNlIEtleWJvYXJkSW50ZXJhY3Rpb246
OktleVByZXNzOiB7CiAgICAgICAgIE5TRXZlbnRUeXBlIGV2ZW50VHlwZSA9IGlzU3RpY2t5TW9k
aWZpZXIgPyBOU0V2ZW50VHlwZUZsYWdzQ2hhbmdlZCA6IE5TRXZlbnRUeXBlS2V5RG93bjsKICAg
ICAgICAgbV9jdXJyZW50TW9kaWZpZXJzIHw9IGNoYW5nZWRNb2RpZmllcnM7CiAgICAgICAgIFtl
dmVudHNUb0JlU2VudCBhZGRPYmplY3Q6W05TRXZlbnQga2V5RXZlbnRXaXRoVHlwZTpldmVudFR5
cGUgbG9jYXRpb246ZXZlbnRQb3NpdGlvbiBtb2RpZmllckZsYWdzOm1fY3VycmVudE1vZGlmaWVy
cyB0aW1lc3RhbXA6dGltZXN0YW1wIHdpbmRvd051bWJlcjp3aW5kb3dOdW1iZXIgY29udGV4dDpu
aWwgY2hhcmFjdGVyczpjaGFyYWN0ZXJzIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczp1bm1v
ZGlmaWVkQ2hhcmFjdGVycyBpc0FSZXBlYXQ6Tk8ga2V5Q29kZTprZXlDb2RlXV07CiAgICAgICAg
IGJyZWFrOwogICAgIH0KLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246
OktleWJvYXJkSW50ZXJhY3Rpb25UeXBlOjpLZXlSZWxlYXNlOiB7CisgICAgY2FzZSBLZXlib2Fy
ZEludGVyYWN0aW9uOjpLZXlSZWxlYXNlOiB7CiAgICAgICAgIE5TRXZlbnRUeXBlIGV2ZW50VHlw
ZSA9IGlzU3RpY2t5TW9kaWZpZXIgPyBOU0V2ZW50VHlwZUZsYWdzQ2hhbmdlZCA6IE5TRXZlbnRU
eXBlS2V5VXA7CiAgICAgICAgIG1fY3VycmVudE1vZGlmaWVycyAmPSB+Y2hhbmdlZE1vZGlmaWVy
czsKICAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbTlNFdmVudCBrZXlFdmVudFdp
dGhUeXBlOmV2ZW50VHlwZSBsb2NhdGlvbjpldmVudFBvc2l0aW9uIG1vZGlmaWVyRmxhZ3M6bV9j
dXJyZW50TW9kaWZpZXJzIHRpbWVzdGFtcDp0aW1lc3RhbXAgd2luZG93TnVtYmVyOndpbmRvd051
bWJlciBjb250ZXh0Om5pbCBjaGFyYWN0ZXJzOmNoYXJhY3RlcnMgY2hhcmFjdGVyc0lnbm9yaW5n
TW9kaWZpZXJzOnVubW9kaWZpZWRDaGFyYWN0ZXJzIGlzQVJlcGVhdDpOTyBrZXlDb2RlOmtleUNv
ZGVdXTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXV0b21hdGlvbjo6S2V5Ym9hcmRJbnRlcmFjdGlvblR5cGU6Okluc2VydEJ5S2V5OiB7Cisg
ICAgY2FzZSBLZXlib2FyZEludGVyYWN0aW9uOjpJbnNlcnRCeUtleTogewogICAgICAgICAvLyBT
dGlja3kgbW9kaWZpZXJzIHNob3VsZCBlaXRoZXIgYmUgJ0tleVByZXNzJyBvciAnS2V5UmVsZWFz
ZScuCiAgICAgICAgIEFTU0VSVCghaXNTdGlja3lNb2RpZmllcik7CiAgICAgICAgIGlmIChpc1N0
aWNreU1vZGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggZDRkMjgyOTRkMzZlYTFlN2IzMmE3YjQwMmQ5MzM3ZTZiNjRiN2Y4NS4u
YjM4NTBhYjljYmU3NmUyNGM2ZWE0N2ZiMzU4OTY2MDZmMTZlNzIxOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNTI4LDYgKzE1Mjgs
OCBAQAogCQk5OTQ2RUY4NjFFN0IwMjcwMDA1NDFFNzkgLyogV2ViQXV0b21hdGlvblNlc3Npb25J
T1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTQ2
RUY4NTFFN0IwMjY2MDA1NDFFNzkgLyogV2ViQXV0b21hdGlvblNlc3Npb25JT1MubW0gKi87IH07
CiAJCTk5NEJBREYzMUY3RDc4MTEwMEI1NzFFNyAvKiBXS0luc3BlY3RvclZpZXdDb250cm9sbGVy
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk0QkFE
RjIxRjdENzdFQjAwQjU3MUU3IC8qIFdLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0gKi87IH07
CiAJCTk5NEJBREY0MUY3RDc4MTQwMEI1NzFFNyAvKiBXS0luc3BlY3RvclZpZXdDb250cm9sbGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTRCQURG
MTFGN0Q3N0VBMDBCNTcxRTcgLyogV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5oICovOyB9Owor
CQk5OTUyMjZENjIwN0QxODQ2MDBGNzg0MjAgLyogU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTUyMjZENDIw
N0QxODQ1MDBGNzg0MjAgLyogU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmggKi87IH07CisJCTk5
NTIyNkQ3MjA3RDE4NDYwMEY3ODQyMCAvKiBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk1MjI2RDUyMDdE
MTg0NjAwRjc4NDIwIC8qIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5jcHAgKi87IH07CiAJCTk5
NTVBNkVDMUM3OTgwQzIwMEVCNkE5MyAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk1NUE2RUIxQzc5ODBCQjAw
RUI2QTkzIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uLmggKi87IH07CiAJCTk5NTVBNkVEMUM3OTgw
Q0EwMEVCNkE5MyAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTU1QTZFQTFDNzk4MEJCMDBFQjZBOTMgLyog
V2ViQXV0b21hdGlvblNlc3Npb24uY3BwICovOyB9OwogCQk5OTU1QTZFRjFDNzk4MTA4MDBFQjZB
OTMgLyogQXV0b21hdGlvbi5qc29uIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTk1NUE2RTkxQzc5ODBCQjAwRUI2QTkzIC8qIEF1dG9tYXRpb24uanNvbiAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNDAxMyw2
ICs0MDE1LDggQEAKIAkJOTk0NkVGODUxRTdCMDI2NjAwNTQxRTc5IC8qIFdlYkF1dG9tYXRpb25T
ZXNzaW9uSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2Vi
QXV0b21hdGlvblNlc3Npb25JT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5
NEJBREYxMUY3RDc3RUEwMEI1NzFFNyAvKiBXS0luc3BlY3RvclZpZXdDb250cm9sbGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk0QkFERjIxRjdENzdFQjAwQjU3MUU3
IC8qIFdLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBXS0luc3BlY3RvclZpZXdDb250cm9sbGVyLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk5OTUyMjZENDIwN0QxODQ1MDBGNzg0MjAgLyogU2ltdWxhdGVk
SW5wdXREaXNwYXRjaGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNpbXVs
YXRlZElucHV0RGlzcGF0Y2hlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OTUy
MjZENTIwN0QxODQ2MDBGNzg0MjAgLyogU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNpbXVsYXRlZElucHV0RGlzcGF0Y2hl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5NTVBNkU5MUM3OTgwQkIwMEVC
NkE5MyAvKiBBdXRvbWF0aW9uLmpzb24gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmpzb247IHBhdGggPSBBdXRv
bWF0aW9uLmpzb247IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5NTVBNkVBMUM3OTgw
QkIwMEVCNkE5MyAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTk5NTVBNkVCMUM3OTgwQkIwMEVCNkE5MyAvKiBXZWJBdXRvbWF0
aW9uU2Vzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBdXRvbWF0
aW9uU2Vzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjk1OSw2ICs2OTYz
LDggQEAKIAkJCQk5OTQ2RUY4MjFFN0IwMjNEMDA1NDFFNzkgLyogaW9zICovLAogCQkJCTk5QzNB
RTIyMURBRDhFMTQwMEFGNUMxNiAvKiBtYWMgKi8sCiAJCQkJOTk1NUE2RTkxQzc5ODBCQjAwRUI2
QTkzIC8qIEF1dG9tYXRpb24uanNvbiAqLywKKwkJCQk5OTUyMjZENTIwN0QxODQ2MDBGNzg0MjAg
LyogU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmNwcCAqLywKKwkJCQk5OTUyMjZENDIwN0QxODQ1
MDBGNzg0MjAgLyogU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmggKi8sCiAJCQkJOTk1NUE2RUEx
Qzc5ODBCQjAwRUI2QTkzIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uLmNwcCAqLywKIAkJCQk5OTU1
QTZFQjFDNzk4MEJCMDBFQjZBOTMgLyogV2ViQXV0b21hdGlvblNlc3Npb24uaCAqLywKIAkJCQkx
QzBBMTk1OTFDOTAwNkVBMDBGRTBFQkIgLyogV2ViQXV0b21hdGlvblNlc3Npb24ubWVzc2FnZXMu
aW4gKi8sCkBAIC05NTU4LDYgKzk1NjQsNyBAQAogCQkJCUJDNTRDQzEyMTJENjc0RUUwMDVDNjdC
MCAvKiBXS0dlb2xvY2F0aW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMwNkY0NEUx
MkRCREYzRjAwMkQ3OERFIC8qIFdLR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkMwRTYxOTgxMkQ2Q0QxMjAwMTJBNzJBIC8qIFdLR2VvbG9jYXRpb25Q
b3NpdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTk1MjI2RDYyMDdEMTg0NjAwRjc4NDIwIC8q
IFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDQjRFNEYx
OEJCRTA0NDAwMEZDRkM5IC8qIFdLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkNDOEIzNzQxMjVGQjY5MDAwREU0NkE0IC8qIFdLR2VvbWV0cnkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBNDIyRjhCMThCMjlCNTQwMEQ4Q0Q5NiAvKiBXS0hpc3RvcnlEZWxlZ2F0
ZVByaXZhdGUuaCBpbiBIZWFkZXJzICovLApAQCAtMTEyNjcsNiArMTEyNzQsNyBAQAogCQkJCUM1
NUNCNUI3MThDMjY5Q0YwMENBODFFMSAvKiBXS0Zvcm1TZWxlY3RQb3BvdmVyLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQkNFNDY5NTkxMjE0RURGNDAwMEI5OEVCIC8qIFdLRm9ybVN1Ym1pc3Npb25M
aXN0ZW5lci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0QwMTM5QzExMEZBNDIwMDAzQjhBNjcg
LyogV0tGcmFtZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5OTUyMjZENzIwN0QxODQ2MDBGNzg0
MjAgLyogU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3
QTVFQkJCMUM3QkE0M0UwMEI5Q0E2OSAvKiBXS0ZyYW1lSGFuZGxlUmVmLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTFBNEQ2NjRCMThBMzAzMEUwMEQ4MkUyMSAvKiBXS0ZyYW1lSW5mby5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTJEM0E2NUU2MUE3QzNBQTcwMENBQzYzNyAvKiBXS0ZyYW1lSW5mb1Jl
Zi5jcHAgaW4gU291cmNlcyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338082</attachid>
            <date>2018-04-16 23:49:16 -0700</date>
            <delta_ts>2018-04-17 00:13:08 -0700</delta_ts>
            <desc>Proposed Fix</desc>
            <filename>bug-184603-20180416234916.patch</filename>
            <type>text/plain</type>
            <size>103110</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwNjc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDU2NTVlOTAzZGU0NTgyY2Q4
MDMxYzVkNGI3ZmJiNGRjNjc0YWVmODQuLjc2M2IxNzU3Zjg4YzBmNWRiZTA0OTY2ZmZmNzI5MDhl
NmNkYzU4MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTI5IEBACisyMDE4LTA0LTEzICBCcmlhbiBC
dXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBBdXRvbWF0aW9uOiBhZGQgc3Vw
cG9ydCBmb3IgbW91c2Uva2V5Ym9hcmQgaW50ZXJhY3Rpb24gc2VxdWVuY2VzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQ2MDMKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzM5NDIxODM5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCBuZXcgcHJvdG9jb2wgbWV0aG9kcyBhbmQgV2ViS2l0IHN1cHBv
cnQgZm9yIGltcGxlbWVudGluZyB0aGUgVzNDIEFjdGlvbnMgQVBJLgorICAgICAgICBUaGlzIGlz
IGEgZ2VuZXJpYyBjb21tYW5kIGZvciBzZW5kaW5nIGxvdy1sZXZlbCBtb3VzZSwga2V5LCBhbmQg
dG91Y2ggZXZlbnRzIHRvCisgICAgICAgIHRlc3QgcGFnZSBiZWhhdmlvciB3aGVuIHBlcmZvcm1p
bmcgZHJhZy1hbmQtZHJvcCwgZ2VzdHVyZXMsIG9yIHNwZWNpZmljIGtleWRvd24va2V5dXBzLgor
CisgICAgICAgIFRvIGltcGxlbWVudCB0aGlzIGZ1bmN0aW9uYWxpdHksIHRoaXMgcGF0Y2ggYWRk
cyBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIsIGEgY2xhc3MKKyAgICAgICAgZm9yIGRpc3BhdGNo
aW5nIGlucHV0IGV2ZW50cyBhc3luY2hyb25vdXNseS4gU2ltaWxhciB0byB0aGUgV2ViRHJpdmVy
IHNwZWNpZmljYXRpb24sCisgICAgICAgIHRoaXMgaXMgZGVzaWduZWQgYXMgYSBrZXlmcmFtaW5n
IEFQSS4gQ2FsbGVycyBzZXQgdXAgc2V2ZXJhbCAiaW5wdXQgc291cmNlcyIgc3VjaAorICAgICAg
ICBhcyBrZXlib2FyZCBvciBtb3VzZSwgYW5kIHRoZW4gc3BlY2lmeSB0aGUgc3RhdGVzIG9mIHRo
YXQgaW5wdXQgc291cmNlIG92ZXIgdGltZS4gVGhlCisgICAgICAgIGRpc3BhdGNoZXIgY2FsY3Vs
YXRlcyBkaWZmcyBiZXR3ZWVuIHRoZSBwcmV2aW91cyBhbmQgY3VycmVudCBrZXlmcmFtZXMgYW5k
IGdlbmVyYXRlcworICAgICAgICB0aGUgYXBwcm9wcmlhdGUgZXZlbnRzIHRoYXQgd291bGQgaGFw
cGVuIGlmIGEgdXNlciBjYXVzZWQgdGhlIHN0YXRlIHRyYW5zaXRpb24uCisKKyAgICAgICAgRm9y
IGV4YW1wbGUsIGlmIGEgbW91c2UgaW5wdXQgc291cmNlJ3Mgc3RhdGUgY2hhbmdlcywgdGhlIGRp
c3BhdGNoZXIgc2VuZHMgc3ludGhldGljIG1vdXNlbW92ZSwKKyAgICAgICAgbW91c2Vkb3duLCBv
ciBtb3VzZXVwIGV2ZW50cyBkZXBlbmRpbmcgb24gdGhlIHByZS0gYW5kIHBvc3Qtc3RhdGUuIFRo
aXMgaXMgdW5pbnRlcmVzdGluZworICAgICAgICBhbmQgb3ZlcmNvbXBsaWNhdGVkIGZvciBzaW1w
bGUga2V5IGFuZCBtb3VzZSBwcmVzc2VzLCBidXQgaXQncyByZWFsbHkgZGVzaWduZWQgd2l0aCBh
bgorICAgICAgICBleWUgdG93YXJkcyBzdXBwb3J0aW5nIG1vdXNlbW92ZSBpbnRlcnBvbGF0aW9u
IGFuZCB0b3VjaCBldmVudCBpbnRlcnBvbGF0aW9uIGluIGxhdGVyIHBhdGNoZXMuCisKKyAgICAg
ICAgVGhlIHN0cmF0ZWd5IGZvciBkaXNwYXRjaGluZyBldmVudHMgZGVwZW5kcyBvbiB0aGUgaW5w
dXQgc291cmNlIHR5cGU7IHJpZ2h0IG5vdywgdGhlc2UKKyAgICAgICAgbWFwIGRpcmVjdGx5IHRv
IHRoZSBleGlzdGluZyBwbGF0Zm9ybVNpbXVsYXRle01vdXNlLCBLZXlib2FyZH1JbnRlcmFjdGlv
biBtZXRob2RzLiBJbgorICAgICAgICB0aGUgZnV0dXJlLCB0aGUgZGlzcGF0Y2ggc3RyYXRlZ3kg
bWF5IGJlIGVsYWJvcmF0ZWQgZm9yIGludGVycG9sYXRlZCBtb3VzZW1vdmUgZXZlbnRzLgorCisg
ICAgICAgIFRoaXMgcGF0Y2ggZGVwZW5kcyBvbiBzdXBwb3J0IGFkZGVkIGluIGJ1ZyAxODQ0NjIu
CisKKyAgICAgICAgTm8gdGVzdHMgeWV0LiBXaGVuIHRoaXMgY29tbWFuZCBpcyBob29rZWQgdXAg
dG8gYSBkcml2ZXIsIHRoZSBjb2RlIHdpbGwgYmUgZXhlcmNpc2VkIGJ5CisgICAgICAgIFczQyBh
Y3Rpb25zIHRlc3Qgc3VpdGUsIHdoaWNoIGlzIGZhaXJseSBjb21wbGV4IGF0IHRoaXMgcG9pbnQg
cmVsYXRpdmUgdG8gZW5kLXVzZXIgY29kZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0
aW9uL0F1dG9tYXRpb24uanNvbjogQWRkIG5ldyB0eXBlcyBhbmQgY29tbWFuZHMuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9TaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuaDogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6OlNpbXVsYXRlZElucHV0U291cmNlU3RhdGU6OmVtcHR5U3Rh
dGUpOgorICAgICAgICAoV2ViS2l0OjpTaW11bGF0ZWRJbnB1dFNvdXJjZTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYktpdDo6U2ltdWxhdGVkSW5wdXRTb3VyY2U6OlNpbXVsYXRlZElucHV0U291cmNl
KToKKyAgICAgICAgKFdlYktpdDo6U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjpDbGllbnQ6On5D
bGllbnQpOgorICAgICAgICBBZGQgc3RydWN0cyBmb3IgaW5wdXQgc291cmNlLCBzb3VyY2Ugc3Rh
dGUsIGFuZCBrZXlmcmFtZS4KKyAgICAgICAgVGhlIGRpc3BhdGNoZXIncyBjbGllbnQgaW50ZXJm
YWNlIGlzIGltcGxlbWVudGVkIGJ5IFdlYkF1dG9tYXRpb25TZXNzaW9uLgorCisgICAgICAgIChX
ZWJLaXQ6OlNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQXV0b21hdGlvbi9TaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6U2ltdWxhdGVkSW5wdXRLZXlGcmFtZTo6U2ltdWxhdGVkSW5wdXRLZXlG
cmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlNpbXVsYXRlZElucHV0S2V5RnJhbWU6Om1heGltdW1E
dXJhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNpbXVsYXRlZElucHV0S2V5RnJhbWU6
OmtleUZyYW1lRnJvbVN0YXRlT2ZJbnB1dFNvdXJjZXMpOgorICAgICAgICAoV2ViS2l0OjpTaW11
bGF0ZWRJbnB1dEtleUZyYW1lOjprZXlGcmFtZVRvUmVzZXRJbnB1dFNvdXJjZXMpOgorICAgICAg
ICAoV2ViS2l0OjpTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OlNpbXVsYXRlZElucHV0RGlzcGF0
Y2hlcik6CisgICAgICAgIChXZWJLaXQ6OlNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6flNpbXVs
YXRlZElucHV0RGlzcGF0Y2hlcik6CisgICAgICAgIChXZWJLaXQ6OlNpbXVsYXRlZElucHV0RGlz
cGF0Y2hlcjo6aXNBY3RpdmUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTaW11bGF0ZWRJbnB1
dERpc3BhdGNoZXI6OmtleUZyYW1lVHJhbnNpdGlvbkR1cmF0aW9uVGltZXJGaXJlZCk6CisgICAg
ICAgIChXZWJLaXQ6OlNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6aXNLZXlGcmFtZVRyYW5zaXRp
b25Db21wbGV0ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNpbXVsYXRlZElucHV0RGlzcGF0
Y2hlcjo6dHJhbnNpdGlvblRvTmV4dEtleUZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6U2ltdWxh
dGVkSW5wdXREaXNwYXRjaGVyOjp0cmFuc2l0aW9uVG9OZXh0SW5wdXRTb3VyY2VTdGF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6dHJhbnNpdGlvbkJldHdl
ZW5LZXlGcmFtZXMpOgorICAgICAgICAoV2ViS2l0OjpTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6
OnRyYW5zaXRpb25JbnB1dFNvdXJjZVRvU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpTaW11bGF0
ZWRJbnB1dERpc3BhdGNoZXI6OnJ1bik6CisgICAgICAgIChXZWJLaXQ6OlNpbXVsYXRlZElucHV0
RGlzcGF0Y2hlcjo6Y2FuY2VsKToKKyAgICAgICAgKFdlYktpdDo6U2ltdWxhdGVkSW5wdXREaXNw
YXRjaGVyOjpmaW5pc2hEaXNwYXRjaGluZyk6CisgICAgICAgIFRoZSBkaXNwYXRjaGVyIGhhbmRs
ZXMgb25lIGludGVyYWN0aW9uIGF0IGEgdGltZS4gVGhlIGludGVyYWN0aW9uIGlzIGRlc2NyaWJl
ZAorICAgICAgICBieSBhbiBhcnJheSBvZiBrZXlmcmFtZXMsIGFuZCBlYWNoIGtleWZyYW1lIGhh
cyBhbiBhcnJheSBvZiBzdGF0ZXMuIFRoZSBkaXNwYXRjaGVyCisgICAgICAgIHRyYW5zaXRpb25z
IGJldHdlZW4ga2V5ZnJhbWVzIGJ5IHNlcXVlbnRpYWxseSBhbmQgYXN5bmNocm9ub3VzbHkgZW1p
dHRpbmcgZXZlbnRzCisgICAgICAgIHRoYXQgY2F1c2UgZWFjaCBpbnB1dCBzb3VyY2Ugc3RhdGUg
dG8gdHJhbnNpdGlvbiBhcyBkZXNpcmVkLiBLZXlmcmFtZSB0cmFuc2l0aW9ucworICAgICAgICBh
cmUgYWRkaXRpb25hbGx5IGdhdGVkIGJ5IGEgIm1heGltdW0gZHVyYXRpb24iIHRpbWVyLiBFYWNo
IHN0ZXAgdGhhdCB0aGUgZGlzcGF0Y2hlcgorICAgICAgICBleGVjdXRlcyBpcyBhc3luY2hyb25v
dXMsIHNvIHRoZSBkaXNwYXRjaGVyIGtlZXBzIG1vc3Qgc3RhdGUgaW4gbWVtYmVycyBhbmQgdXNl
cworICAgICAgICBlcnJvciBhcmd1bWVudCBsYW1iZGFzIGFzIGNvbXBsZXRpb24gaGFuZGxlcnMg
Zm9yIHZhcmlvdXMgYXN5bmMgdGhpbmdzLgorCisgICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRp
b24vV2ViQXV0b21hdGlvblNlc3Npb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlv
bi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRp
b25TZXNzaW9uOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkF1
dG9tYXRpb25TZXNzaW9uOjppbnB1dERpc3BhdGNoZXJGb3JQYWdlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViQXV0b21hdGlvblNlc3Npb246OmlucHV0U291cmNlRm9yVHlwZSBjb25zdCk6CisgICAg
ICAgIEFkZCBjYW5vbmljYWwgaW5wdXQgc291cmNlcyB0aGF0IGFyZSB1c2VkIHRvIGtlZXAgdHJh
Y2sgb2Ygc3RhdGUgYWNyb3NzCisgICAgICAgIGludGVyYWN0aW9uIHNlcXVlbmNlcy4KKworICAg
ICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6aXNTaW11bGF0aW5nVXNlckludGVy
YWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246Om1v
dXNlRXZlbnRzRmx1c2hlZEZvclBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9u
U2Vzc2lvbjo6a2V5Ym9hcmRFdmVudHNGbHVzaGVkRm9yUGFnZSk6CisgICAgICAgIFJlbW92ZSBt
X3NpbXVsYXRpbmdVc2VySW50ZXJhY3Rpb24gc2luY2UgaXQgY2FuIGJlIGNvbXB1dGVkIGJhc2Vk
IG9uIG90aGVyIG1lbWJlcnMuCisKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Np
b246OndpbGxDbG9zZVBhZ2UpOgorICAgICAgICBJZiB0aGUgcGFnZSBpcyBiZWluZyB0b3JuIGRv
d24sIHN0b3AgdGhlIGRpc3BhdGNoZXIgaWYgbmVlZGVkIGFuZCBjYW5jZWwgYW55CisgICAgICAg
IGNhbGxiYWNrcyB3YWl0aW5nIGZvciBtb3VzZS9rZXkgZXZlbnRzIHRvIGJlIHJldGlyZWQuCisK
KyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OnNpbXVsYXRlTW91c2VJbnRl
cmFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpzaW11bGF0
ZUtleWJvYXJkSW50ZXJhY3Rpb24pOgorICAgICAgICBBZGQgZWFzeS10by11c2UgYXN5bmMgbWV0
aG9kcyBmb3Igc2ltdWxhdGluZyBtb3VzZSBhbmQga2V5IGV2ZW50cy4gVGhlc2UgYXJlCisgICAg
ICAgIGhvb2tlZCB1cCB0byBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIgdXNpbmcgYXN5bmMgY29t
cGxldGlvbiBoYW5kbGVycy4KKworICAgICAgICAoV2ViS2l0Ojpwcm90b2NvbE1vdXNlQnV0dG9u
VG9XZWJNb3VzZUV2ZW50QnV0dG9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNl
c3Npb246OnBlcmZvcm1Nb3VzZUludGVyYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0
b21hdGlvblNlc3Npb246OnBlcmZvcm1LZXlib2FyZEludGVyYWN0aW9ucyk6CisgICAgICAgIEFk
anVzdCBzb21lIG5hbWluZy4KKworICAgICAgICAoV2ViS2l0OjpzaW11bGF0ZWRJbnB1dFNvdXJj
ZVR5cGVGcm9tUHJvdG9jb2xTb3VyY2VUeXBlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21h
dGlvblNlc3Npb246OnBlcmZvcm1JbnRlcmFjdGlvblNlcXVlbmNlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViQXV0b21hdGlvblNlc3Npb246OmNhbmNlbEludGVyYWN0aW9uU2VxdWVuY2UpOgorICAg
ICAgICBBZGQgY29tbWFuZCBoYW5kbGVycyBmb3IgdGhlIG5ldyBhY3Rpb24gY29tbWFuZHMgaW4g
QXV0b21hdGlvbiBwcm90b2NvbC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL2d0
ay9XZWJBdXRvbWF0aW9uU2Vzc2lvbkd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1vdXNlQnV0
dG9uVG9HZGtCdXR0b24pOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6
cGxhdGZvcm1TaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJB
dXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZUtleWJvYXJkSW50ZXJhY3Rpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZUtl
eVN0cm9rZSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRpb24vaW9zL1dl
YkF1dG9tYXRpb25TZXNzaW9uSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9u
U2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZUtleWJvYXJkSW50ZXJhY3Rpb24pOgorICAgICAgICAo
V2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZUtleVN0cm9rZSk6
IERlbGV0ZWQuCisgICAgICAgIFJlbmFtZSB0aGUga2V5Ym9hcmQgcGxhdGZvcm0gbWV0aG9kIHRv
IG1hdGNoIHRoZSBuYW1pbmcgb2YgdGhlIG1vdXNlIHBsYXRmb3JtIG1ldGhvZC4KKyAgICAgICAg
VGFrZSBhZHZhbnRhZ2Ugb2YgdGhlICd1c2luZycgYWxpYXMgdG8gbWFrZSB0aGUgdGVkaW91cyBz
d2l0Y2hlcyBlYXNpZXIgdG8gcmVhZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9u
L21hYy9XZWJBdXRvbWF0aW9uU2Vzc2lvbk1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0
b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVNb3VzZUludGVyYWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6dmlydHVhbEtleUhhc1N0aWNreU1vZGlmaWVyKToKKyAgICAgICAgKFdlYktp
dDo6a2V5Q29kZUZvclZpcnR1YWxLZXkpOgorICAgICAgICAoV2ViS2l0OjpldmVudE1vZGlmaWVy
RmxhZ3NGb3JWaXJ0dWFsS2V5KToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Np
b246OnBsYXRmb3JtU2ltdWxhdGVLZXlib2FyZEludGVyYWN0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6V2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVLZXlTZXF1ZW5jZSk6Cisg
ICAgICAgIChXZWJLaXQ6OmtleUhhc1N0aWNreU1vZGlmaWVyKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVLZXlTdHJva2Up
OiBEZWxldGVkLgorICAgICAgICBBbGxvdyB0aGUga2V5Ym9hcmQgc2ltdWxhdGlvbiBtZXRob2Qg
dG8gdGFrZSBhIHZpcnR1YWwga2V5IGFuZCB1bmljaGFyIHRvIGJldHRlcgorICAgICAgICBtYXRj
aCBob3cgdGhpcyBpcyB1c2VkIGJ5IHRoZSBQZXJmb3JtIEFjdGlvbnMgY29tbWFuZCBhbmQgaXRz
IG1hY2hpbmVyeS4KKworICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorCiAyMDE4LTA0LTExICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgogCiAgICAgICAg
IFdlYiBBdXRvbWF0aW9uOiBzaW11bGF0ZWQgbW91c2UgaW50ZXJhY3Rpb25zIHNob3VsZCBub3Qg
YmUgZG9uZSB1bnRpbCBhc3NvY2lhdGVkIERPTSBldmVudHMgaGF2ZSBiZWVuIGRpc3BhdGNoZWQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vQXV0b21hdGlv
bi5qc29uIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9BdXRvbWF0aW9uLmpz
b24KaW5kZXggN2U4NmQxNDljMjVjMTkxNDA0MjFkMzg4NGE1MWJiNmMwZjllNjI5MC4uYzMxN2Ux
YTI2MjBkOWRlN2NhNmM4YWE2M2FkMzI4NzA5YjEyNmJlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9BdXRvbWF0aW9uLmpzb24KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9BdXRvbWF0aW9uLmpzb24KQEAgLTcyLDcgKzcyLDgg
QEAKICAgICAgICAgICAgICAgICAiRWxlbWVudE5vdEludGVyYWN0YWJsZSIsCiAgICAgICAgICAg
ICAgICAgIkVsZW1lbnROb3RTZWxlY3RhYmxlIiwKICAgICAgICAgICAgICAgICAiU2NyZWVuc2hv
dEVycm9yIiwKLSAgICAgICAgICAgICAgICAiVW5leHBlY3RlZEFsZXJ0T3BlbiIKKyAgICAgICAg
ICAgICAgICAiVW5leHBlY3RlZEFsZXJ0T3BlbiIsCisgICAgICAgICAgICAgICAgIlRhcmdldE91
dE9mQm91bmRzIgogICAgICAgICAgICAgXQogICAgICAgICB9LAogICAgICAgICB7CkBAIC0yNDQs
NiArMjQ1LDQ2IEBACiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJwZXJtaXNzaW9uIiwgIiRy
ZWYiOiAiU2Vzc2lvblBlcm1pc3Npb24iIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ2
YWx1ZSIsICJ0eXBlIjogImJvb2xlYW4iIH0KICAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAg
ICAgICAgeworICAgICAgICAgICAgImlkIjogIklucHV0U291cmNlVHlwZSIsCisgICAgICAgICAg
ICAidHlwZSI6ICJzdHJpbmciLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlRoZSB0eXBl
IG9mIGFuIGlucHV0IHNvdXJjZS4gVGhpcyBkZXRlcm1pbmVzIHdoaWNoIHN0YXRlIHByb3BlcnRp
ZXMgYXJlIGFwcGxpY2FibGUgdG8gdGhlIGlucHV0IHNvdXJjZS4gVGhlICdOdWxsJyBpbnB1dCBz
b3VyY2UgdHlwZSBoYXMgbm8gcHJvcGVydGllcywgb25seSBhIGR1cmF0aW9uLiBUaGlzIGNhbiBl
eHRlbmQgdGhlIGVmZmVjdGl2ZSB3YWl0IGZvciBhIHRpY2suIiwKKyAgICAgICAgICAgICJlbnVt
IjogWworICAgICAgICAgICAgICAgICJOdWxsIiwKKyAgICAgICAgICAgICAgICAiTW91c2UiLAor
ICAgICAgICAgICAgICAgICJLZXlib2FyZCIsCisgICAgICAgICAgICAgICAgIlRvdWNoIgorICAg
ICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAiaWQiOiAiSW5w
dXRTb3VyY2UiLAorICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKKyAgICAgICAgICAgICJw
cm9wZXJ0aWVzIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic291cmNlSWQiLCAidHlw
ZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiQSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhp
cyBpbnB1dCBzb3VyY2UuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic291cmNlVHlw
ZSIsICIkcmVmIjogIklucHV0U291cmNlVHlwZSIsICJkZXNjcmlwdGlvbiI6ICJUaGUgdHlwZSBv
ZiB0aGlzIGlucHV0IHNvdXJjZS4gVGhpcyBhZmZlY3RzIHdoYXQgaW5wdXQgc291cmNlIHN0YXRl
IGZpZWxkcyBhcmUgdmFsaWQgZm9yIHRoaXMgaW5wdXQgc291cmNlLiIgfQorICAgICAgICAgICAg
XQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAiaWQiOiAiSW50ZXJhY3Rpb25T
dGVwIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJBIHNldCBvZiBpbnB1dCBzb3VyY2Ug
c3RhdGVzIHRvIHdoaWNoIGFsbCBhcHBsaWNhYmxlIGlucHV0IHNvdXJjZXMgbXVzdCB0cmFuc2l0
aW9uIGJlZm9yZSBmdXJ0aGVyIHN0ZXBzIG1heSBiZSBwcm9jZXNzZWQuIElmIGFuIGlucHV0IHNv
dXJjZSBkb2VzIG5vdCBoYXZlIGEgY29ycmVzcG9uZGluZyBzdGF0ZSBpbiBhIHN0ZXAsIGl0cyBz
dGF0ZSBhc3N1bWVkIHRvIGJlICdyZWxlYXNlZCcgZm9yIHRoYXQgc3RlcC4iLAorICAgICAgICAg
ICAgInR5cGUiOiAib2JqZWN0IiwKKyAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogWworICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAic3RhdGVzIiwgInR5cGUiOiAiYXJyYXkiLCAiaXRlbXMiOiB7
ICIkcmVmIjogIklucHV0U291cmNlU3RhdGUiIH0sICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlw
dGlvbiI6ICJBIGxpc3Qgb2YgbmV3IGlucHV0IHN0YXRlcyBmb3IgaW5wdXQgc291cmNlcyB0aGF0
IG11c3QgdHJhbnNpdGlvbiBkdXJpbmcgdGhpcyBzdGVwLiBTb3VyY2Ugc3RhdGUgdHJhbnNpdGlv
bnMgdGhhdCBjYW5ub3QgYmUgcGVyZm9ybWVkIGNvbmN1cnJlbnRseSAoaS5lLiwgdG91Y2ggZ2Vz
dHVyZXMpIGFyZSBwZXJmb3JtZWQgc2VxdWVudGlhbGx5IGluIHRoZSBvcmRlciB0aGV5IGFyZSBs
aXN0ZWQuIiB9CisgICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAg
ICAgICJpZCI6ICJJbnB1dFNvdXJjZVN0YXRlIiwKKyAgICAgICAgICAgICJ0eXBlIjogIm9iamVj
dCIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQSBuZXcgc3RhdGUgZm9yIGEgc3BlY2lm
aWMgaW5wdXQgc291cmNlLiBBbGwgc3RhdGUtcmVsYXRlZCBmaWVsZHMgYXJlIG9wdGlvbmFsIGFu
ZCBtdXN0IGJlIGFwcGxpY2FibGUgdG8gdGhlIElucHV0U291cmNlIHJlZmVyZW5jZWQgYnkgJ3Nv
dXJjZUlkJy4gSWYgbm8gc3RhdGUtcmVsYXRlZCBmaWVsZHMgYXJlIHNwZWNpZmllZCwgdGhlIHN0
YXRlIGlzIGFzc3VtZWQgdG8gcmVtYWluIHRoZSBzYW1lIGFzIGluIHRoZSBwcmV2aW91cyBzdGVw
IChpLmUuLCAnc3VzdGFpbmVkJykuIiwKKyAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogWworICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAic291cmNlSWQiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVz
Y3JpcHRpb24iOiAiVGhlIGlucHV0IHNvdXJjZSB3aG9zZSBzdGF0ZSBpcyBkZXNjcmliZWQgYnkg
dGhpcyBvYmplY3QuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicHJlc3NlZENoYXJL
ZXkiLCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAi
Rm9yICdrZXlib2FyZCcgaW5wdXQgc291cmNlcywgc3BlY2lmaWVzIGEgY2hhcmFjdGVyIGtleSB0
aGF0IGhhcyAncHJlc3NlZCcgc3RhdGUuIFVubWVudGlvbmVkIGNoYXJhY3RlciBrZXlzIGFyZSBh
c3N1bWVkIHRvIGhhdmUgYSAncmVsZWFzZWQnIHN0YXRlLiIgfSwKKyAgICAgICAgICAgICAgICB7
ICJuYW1lIjogInByZXNzZWRWaXJ0dWFsS2V5IiwgIiRyZWYiOiAiVmlydHVhbEtleSIsICJvcHRp
b25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJGb3IgJ2tleWJvYXJkJyBpbnB1dCBzb3VyY2Vz
LCBzcGVjaWZpZXMgYSB2aXJ0dWFsIGtleSB0aGF0IGhhcyBhICdwcmVzc2VkJyBzdGF0ZS4gVW5t
ZW50aW9uZWQgdmlydHVhbCBrZXlzIGFyZSBhc3N1bWVkIHRvIGhhdmUgYSAncmVsZWFzZWQnIHN0
YXRlLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInByZXNzZWRCdXR0b24iLCAiJHJl
ZiI6ICJNb3VzZUJ1dHRvbiIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJGb3Ig
J21vdXNlJyBpbnB1dCBzb3VyY2VzLCBzcGVjaWZpZXMgd2hpY2ggbW91c2UgYnV0dG9uIGhhcyBh
ICdwcmVzc2VkJyBzdGF0ZS4gVW5tZW50aW9uZWQgbW91c2UgYnV0dG9ucyBhcmUgYXNzdW1lZCB0
byBoYXZlIGEgJ3JlbGVhc2VkJyBzdGF0ZS4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJsb2NhdGlvbiIsICIkcmVmIjogIlBvaW50IiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0
aW9uIjogIkZvciAnbW91c2UnIG9yICd0b3VjaCcgaW5wdXQgc291cmNlcywgc3BlY2lmaWVzIGEg
bG9jYXRpb24gaW4gdmlldyBjb29yZGluYXRlcyB0byB3aGljaCB0aGUgaW5wdXQgc291cmNlIHNo
b3VsZCB0cmFuc2l0aW9uLiBUcmFuc2l0aW9uaW5nIHRvIHRoaXMgc3RhdGUgbWF5IGludGVycG9s
YXRlIGludGVtZWRpYXRlIGlucHV0IHNvdXJjZSBzdGF0ZXMgdG8gYmV0dGVyIHNpbXVsYXRlIHJl
YWwgdXNlciBtb3ZlbWVudHMgYW5kIGdlc3R1cmVzLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJu
YW1lIjogImR1cmF0aW9uIiwgInR5cGUiOiAiaW50ZWdlciIsICJvcHRpb25hbCI6IHRydWUsICJk
ZXNjcmlwdGlvbiI6ICJUaGUgbWluaW11bSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRoYXQgbXVz
dCBlbGFwc2Ugd2hpbGUgdGhlIHJlbGV2YW50IGlucHV0IHNvdXJjZSB0cmFuc2l0aW9ucyB0byB0
aGlzIHN0YXRlLiIgfQorICAgICAgICAgICAgXQogICAgICAgICB9CiAgICAgXSwKICAgICAiY29t
bWFuZHMiOiBbCkBAIC00MTMsNiArNDU0LDI0IEBACiAgICAgICAgICAgICBdLAogICAgICAgICAg
ICAgImFzeW5jIjogdHJ1ZQogICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAibmFt
ZSI6ICJwZXJmb3JtSW50ZXJhY3Rpb25TZXF1ZW5jZSIsCisgICAgICAgICAgICAiZGVzY3JpcHRp
b24iOiAiUGVyZm9ybSBtdWx0aXBsZSBzaW11bGF0ZWQgaW50ZXJhY3Rpb25zIG92ZXIgdGltZSB1
c2luZyBhIGxpc3Qgb2YgaW5wdXQgc291cmNlcyBhbmQgYSBsaXN0IG9mIHN0ZXBzLCB3aGVyZSBl
YWNoIHN0ZXAgc3BlY2lmaWVzIGEgc3RhdGUgZm9yIGVhY2ggaW5wdXQgc291cmNlIGF0IHRoZSB0
aW1lIHRoYXQgc3RlcCBpcyBwZXJmb3JtZWQuIiwKKyAgICAgICAgICAgICJwYXJhbWV0ZXJzIjog
WworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaGFuZGxlIiwgIiRyZWYiOiAiQnJvd3NpbmdD
b250ZXh0SGFuZGxlIiwgImRlc2NyaXB0aW9uIjogIlRoZSBicm93c2luZyBjb250ZXh0IHRvIGJl
IGludGVyYWN0ZWQgd2l0aC4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJpbnB1dFNv
dXJjZXMiLCAidHlwZSI6ICJhcnJheSIsICJpdGVtcyI6IHsgIiRyZWYiOiAiSW5wdXRTb3VyY2Ui
IH0sICJkZXNjcmlwdGlvbiI6ICJBbGwgaW5wdXQgc291cmNlcyB0aGF0IGFyZSB1c2VkIHRvIHBl
cmZvcm0gdGhpcyBpbnRlcmFjdGlvbiBzZXF1ZW5jZS4iIH0sCisgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJzdGVwcyIsICJ0eXBlIjogImFycmF5IiwgIml0ZW1zIjogeyAiJHJlZiI6ICJJbnRl
cmFjdGlvblN0ZXAiIH0sICJkZXNjcmlwdGlvbiI6ICJBIGxpc3Qgb2Ygc3RlcHMgdGhhdCBhcmUg
ZXhlY3V0ZWQgaW4gb3JkZXIuIiB9CisgICAgICAgICAgICBdLAorICAgICAgICAgICAgImFzeW5j
IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJjYW5j
ZWxJbnRlcmFjdGlvblNlcXVlbmNlIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJDYW5j
ZWwgYW4gYWN0aXZlIGludGVyYWN0aW9uIHNlcXVlbmNlIHRoYXQgaXMgY3VycmVudGx5IGluIHBy
b2dyZXNzLiIsCisgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICB7
ICJuYW1lIjogImhhbmRsZSIsICIkcmVmIjogIkJyb3dzaW5nQ29udGV4dEhhbmRsZSIsICJkZXNj
cmlwdGlvbiI6ICJUaGUgYnJvd3NpbmcgY29udGV4dCB0byBiZSBpbnRlcmFjdGVkIHdpdGguIiB9
CisgICAgICAgICAgICBdLAorICAgICAgICAgICAgImFzeW5jIjogdHJ1ZQorICAgICAgICB9LAog
ICAgICAgICB7CiAgICAgICAgICAgICAibmFtZSI6ICJ0YWtlU2NyZWVuc2hvdCIsCiAgICAgICAg
ICAgICAiZGVzY3JpcHRpb24iOiAiVGFrZSBhIHNjcmVlbnNob3Qgb2YgdGhlIGN1cnJlbnQgcGFn
ZSBvciBnaXZlbiBlbGVtZW50IGluIGEgYnJvd3NpbmcgY29udGV4dC4iLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9TaW11bGF0ZWRJbnB1dERpc3BhdGNo
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9TaW11bGF0ZWRJbnB1
dERpc3BhdGNoZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ4ZDQ4M2I5ZTNmNDg4Yjk4YmRmN2FmYzFkMTQ1
MmIyZWMzZjIxM2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
dXRvbWF0aW9uL1NpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5jcHAKQEAgLTAsMCArMSwyNjQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2ltdWxhdGVkSW5w
dXREaXNwYXRjaGVyLmgiCisKKyNpbmNsdWRlICJBdXRvbWF0aW9uUHJvdG9jb2xPYmplY3RzLmgi
CisjaW5jbHVkZSAiV2ViQXV0b21hdGlvblNlc3Npb24uaCIKKyNpbmNsdWRlICJXZWJBdXRvbWF0
aW9uU2Vzc2lvbk1hY3Jvcy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworU2ltdWxhdGVkSW5w
dXRLZXlGcmFtZTo6U2ltdWxhdGVkSW5wdXRLZXlGcmFtZShWZWN0b3I8U3RhdGVFbnRyeT4mJiBl
bnRyaWVzKQorICAgIDogc3RhdGVzKFdURk1vdmUoZW50cmllcykpCit7Cit9CisKK1NlY29uZHMg
U2ltdWxhdGVkSW5wdXRLZXlGcmFtZTo6bWF4aW11bUR1cmF0aW9uKCkgY29uc3QKK3sKKyAgICBT
ZWNvbmRzIHJlc3VsdDsKKyAgICBmb3IgKGF1dG8mIGVudHJ5IDogc3RhdGVzKQorICAgICAgICBy
ZXN1bHQgPSBzdGQ6Om1heChyZXN1bHQsIGVudHJ5LnNlY29uZC5kdXJhdGlvbi52YWx1ZV9vcihT
ZWNvbmRzKDApKSk7CisgICAgCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworU2ltdWxhdGVkSW5w
dXRLZXlGcmFtZSBTaW11bGF0ZWRJbnB1dEtleUZyYW1lOjprZXlGcmFtZUZyb21TdGF0ZU9mSW5w
dXRTb3VyY2VzKEhhc2hTZXQ8UmVmPFNpbXVsYXRlZElucHV0U291cmNlPj4mIGlucHV0U291cmNl
cykKK3sKKyAgICAvLyBUaGUgY2xpZW50IG9mIHRoaXMgY2xhc3MgaXMgcmVxdWlyZWQgdG8gaW50
ZXJuIFNpbXVsYXRlZElucHV0U291cmNlIGluc3RhbmNlcyBpZiB0aGUgbGFzdCBzdGF0ZQorICAg
IC8vIGZyb20gdGhlIHByZXZpb3VzIGNvbW1hbmQgc2hvdWxkIGJlIHVzZWQgYXMgdGhlIGluaXRh
bCBzdGF0ZSBmb3IgdGhlIG5leHQgY29tbWFuZC4gVGhpcyBpcyB0aGUKKyAgICAvLyBjYXNlIGZv
ciBQZXJmb3JtIEFjdGlvbnMgYW5kIFJlbGVhc2UgQWN0aW9ucywgYnV0IG5vdCBFbGVtZW50IENs
aWNrIG9yIEVsZW1lbnQgU2VuZCBLZXlzLgorICAgIFZlY3RvcjxTaW11bGF0ZWRJbnB1dEtleUZy
YW1lOjpTdGF0ZUVudHJ5PiBlbnRyaWVzOworICAgIGVudHJpZXMucmVzZXJ2ZUNhcGFjaXR5KGlu
cHV0U291cmNlcy5zaXplKCkpOworCisgICAgZm9yIChhdXRvJiBpbnB1dFNvdXJjZSA6IGlucHV0
U291cmNlcykKKyAgICAgICAgZW50cmllcy51bmNoZWNrZWRBcHBlbmQoc3RkOjpwYWlyPFNpbXVs
YXRlZElucHV0U291cmNlJiwgU2ltdWxhdGVkSW5wdXRTb3VyY2VTdGF0ZT4geyBpbnB1dFNvdXJj
ZS5nZXQoKSwgaW5wdXRTb3VyY2UtPnN0YXRlIH0pOworCisgICAgcmV0dXJuIFNpbXVsYXRlZElu
cHV0S2V5RnJhbWUoV1RGTW92ZShlbnRyaWVzKSk7Cit9CisKK1NpbXVsYXRlZElucHV0S2V5RnJh
bWUgU2ltdWxhdGVkSW5wdXRLZXlGcmFtZTo6a2V5RnJhbWVUb1Jlc2V0SW5wdXRTb3VyY2VzKEhh
c2hTZXQ8UmVmPFNpbXVsYXRlZElucHV0U291cmNlPj4mIGlucHV0U291cmNlcykKK3sKKyAgICBW
ZWN0b3I8U2ltdWxhdGVkSW5wdXRLZXlGcmFtZTo6U3RhdGVFbnRyeT4gZW50cmllczsKKyAgICBl
bnRyaWVzLnJlc2VydmVDYXBhY2l0eShpbnB1dFNvdXJjZXMuc2l6ZSgpKTsKKworICAgIGZvciAo
YXV0byYgaW5wdXRTb3VyY2UgOiBpbnB1dFNvdXJjZXMpCisgICAgICAgIGVudHJpZXMudW5jaGVj
a2VkQXBwZW5kKHN0ZDo6cGFpcjxTaW11bGF0ZWRJbnB1dFNvdXJjZSYsIFNpbXVsYXRlZElucHV0
U291cmNlU3RhdGU+IHsgaW5wdXRTb3VyY2UuZ2V0KCksIFNpbXVsYXRlZElucHV0U291cmNlU3Rh
dGU6OmVtcHR5U3RhdGUoKSB9KTsKKworICAgIHJldHVybiBTaW11bGF0ZWRJbnB1dEtleUZyYW1l
KFdURk1vdmUoZW50cmllcykpOworfQorICAgIAorU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjpT
aW11bGF0ZWRJbnB1dERpc3BhdGNoZXIoV2ViUGFnZVByb3h5JiBwYWdlLCBTaW11bGF0ZWRJbnB1
dERpc3BhdGNoZXI6OkNsaWVudCYgY2xpZW50KQorICAgIDogbV9wYWdlKHBhZ2UpCisgICAgLCBt
X2NsaWVudChjbGllbnQpCisgICAgLCBtX2tleUZyYW1lVHJhbnNpdGlvbkR1cmF0aW9uVGltZXIo
UnVuTG9vcDo6Y3VycmVudCgpLCB0aGlzLCAmU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjprZXlG
cmFtZVRyYW5zaXRpb25EdXJhdGlvblRpbWVyRmlyZWQpCit7Cit9CisKK1NpbXVsYXRlZElucHV0
RGlzcGF0Y2hlcjo6flNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcigpCit7CisgICAgQVNTRVJUKCFt
X3J1bkNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICBBU1NFUlQoIW1fa2V5RnJhbWVUcmFuc2l0aW9u
RHVyYXRpb25UaW1lci5pc0FjdGl2ZSgpKTsKK30KKworYm9vbCBTaW11bGF0ZWRJbnB1dERpc3Bh
dGNoZXI6OmlzQWN0aXZlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gISFtX3J1bkNvbXBsZXRpb25I
YW5kbGVyOworfQorCit2b2lkIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6a2V5RnJhbWVUcmFu
c2l0aW9uRHVyYXRpb25UaW1lckZpcmVkKCkKK3sKKyAgICBBU1NFUlQobV9rZXlGcmFtZVRyYW5z
aXRpb25Db21wbGV0aW9uSGFuZGxlcik7CisKKyAgICBtX2tleUZyYW1lVHJhbnNpdGlvbkR1cmF0
aW9uVGltZXIuc3RvcCgpOworCisgICAgaWYgKGlzS2V5RnJhbWVUcmFuc2l0aW9uQ29tcGxldGUo
KSkKKyAgICAgICAgbV9rZXlGcmFtZVRyYW5zaXRpb25Db21wbGV0aW9uSGFuZGxlcihzdGQ6Om51
bGxvcHQpOworfQorCitib29sIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6aXNLZXlGcmFtZVRy
YW5zaXRpb25Db21wbGV0ZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fa2V5ZnJhbWVJbmRleCA8
IG1fa2V5ZnJhbWVzLnNpemUoKSk7CisKKyAgICBpZiAobV9pbnB1dFNvdXJjZVN0YXRlSW5kZXgg
PCBtX2tleWZyYW1lc1ttX2tleWZyYW1lSW5kZXhdLnN0YXRlcy5zaXplKCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGlmIChtX2tleUZyYW1lVHJhbnNpdGlvbkR1cmF0aW9uVGltZXIu
aXNBY3RpdmUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9
CisKK3ZvaWQgU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjp0cmFuc2l0aW9uVG9OZXh0S2V5RnJh
bWUoKQoreworICAgICsrbV9rZXlmcmFtZUluZGV4OworICAgIGlmIChtX2tleWZyYW1lSW5kZXgg
PT0gbV9rZXlmcmFtZXMuc2l6ZSgpKSB7CisgICAgICAgIGZpbmlzaERpc3BhdGNoaW5nKHN0ZDo6
bnVsbG9wdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB0cmFuc2l0aW9uQmV0d2Vl
bktleUZyYW1lcyhtX2tleWZyYW1lc1ttX2tleWZyYW1lSW5kZXggLSAxXSwgbV9rZXlmcmFtZXNb
bV9rZXlmcmFtZUluZGV4XSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0o
c3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPiBlcnJvcikgeworICAgICAgICBp
ZiAoZXJyb3IpIHsKKyAgICAgICAgICAgIGZpbmlzaERpc3BhdGNoaW5nKGVycm9yKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHRyYW5zaXRpb25Ub05leHRLZXlG
cmFtZSgpOworICAgIH0pOworfQorCit2b2lkIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6dHJh
bnNpdGlvblRvTmV4dElucHV0U291cmNlU3RhdGUoKQoreworICAgIGlmIChpc0tleUZyYW1lVHJh
bnNpdGlvbkNvbXBsZXRlKCkpIHsKKyAgICAgICAgYXV0byBmaW5pc2ggPSBXVEZNb3ZlKG1fa2V5
RnJhbWVUcmFuc2l0aW9uQ29tcGxldGlvbkhhbmRsZXIpOworICAgICAgICBmaW5pc2goc3RkOjpu
dWxsb3B0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEluIHRoaXMgY2FzZSwg
dHJhbnNpdGlvbnMgYXJlIGRvbmUgYnV0IHdlIG5lZWQgdG8gd2FpdCBmb3IgdGhlIHRpY2sgdGlt
ZXIuCisgICAgaWYgKG1faW5wdXRTb3VyY2VTdGF0ZUluZGV4ID09IG1fa2V5ZnJhbWVzW21fa2V5
ZnJhbWVJbmRleF0uc3RhdGVzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYg
bmV4dEtleUZyYW1lID0gbV9rZXlmcmFtZXNbbV9rZXlmcmFtZUluZGV4XTsKKyAgICBhdXRvJiBw
b3N0U3RhdGVFbnRyeSA9IG5leHRLZXlGcmFtZS5zdGF0ZXNbbV9pbnB1dFNvdXJjZVN0YXRlSW5k
ZXhdOworICAgIFNpbXVsYXRlZElucHV0U291cmNlJiBpbnB1dFNvdXJjZSA9IHBvc3RTdGF0ZUVu
dHJ5LmZpcnN0OworCisgICAgdHJhbnNpdGlvbklucHV0U291cmNlVG9TdGF0ZShpbnB1dFNvdXJj
ZSwgcG9zdFN0YXRlRW50cnkuc2Vjb25kLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpXShzdGQ6Om9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+IGVycm9yKSB7Cisg
ICAgICAgIGlmIChlcnJvcikgeworICAgICAgICAgICAgYXV0byBmaW5pc2ggPSBXVEZNb3ZlKG1f
a2V5RnJhbWVUcmFuc2l0aW9uQ29tcGxldGlvbkhhbmRsZXIpOworICAgICAgICAgICAgZmluaXNo
KGVycm9yKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFBl
cmZvcm0gc3RhdGUgdHJhbnNpdGlvbnMgaW4gdGhlIG9yZGVyIHNwZWNpZmllZCBieSB0aGUgY3Vy
cmVudEtleUZyYW1lLgorICAgICAgICArK21faW5wdXRTb3VyY2VTdGF0ZUluZGV4OworCisgICAg
ICAgIHRyYW5zaXRpb25Ub05leHRJbnB1dFNvdXJjZVN0YXRlKCk7CisgICAgfSk7Cit9CisKK3Zv
aWQgU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjp0cmFuc2l0aW9uQmV0d2VlbktleUZyYW1lcyhj
b25zdCBTaW11bGF0ZWRJbnB1dEtleUZyYW1lJiBhLCBjb25zdCBTaW11bGF0ZWRJbnB1dEtleUZy
YW1lJiBiLCBBdXRvbWF0aW9uQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikK
K3sKKyAgICBtX2lucHV0U291cmNlU3RhdGVJbmRleCA9IDA7CisKKyAgICBtX2tleUZyYW1lVHJh
bnNpdGlvbkNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcik7Cisg
ICAgbV9rZXlGcmFtZVRyYW5zaXRpb25EdXJhdGlvblRpbWVyLnN0YXJ0T25lU2hvdChiLm1heGlt
dW1EdXJhdGlvbigpKTsKKworICAgIHRyYW5zaXRpb25Ub05leHRJbnB1dFNvdXJjZVN0YXRlKCk7
Cit9CisKK3ZvaWQgU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjp0cmFuc2l0aW9uSW5wdXRTb3Vy
Y2VUb1N0YXRlKFNpbXVsYXRlZElucHV0U291cmNlJiBpbnB1dFNvdXJjZSwgY29uc3QgU2ltdWxh
dGVkSW5wdXRTb3VyY2VTdGF0ZSYgbmV3U3RhdGUsIEF1dG9tYXRpb25Db21wbGV0aW9uSGFuZGxl
ciYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIC8vIE1ha2UgY2FzZXMgYW5kIGNvbmRpdGlv
bmFscyBtb3JlIHJlYWRhYmxlIGJ5IGFsaWFzaW5nIHByZS9wb3N0IHN0YXRlcyBhcyAnYScgYW5k
ICdiJy4KKyAgICBTaW11bGF0ZWRJbnB1dFNvdXJjZVN0YXRlIGEgPSBpbnB1dFNvdXJjZS5zdGF0
ZTsKKyAgICBTaW11bGF0ZWRJbnB1dFNvdXJjZVN0YXRlIGIgPSBuZXdTdGF0ZTsKKworICAgIEF1
dG9tYXRpb25Db21wbGV0aW9uSGFuZGxlciBldmVudERpc3BhdGNoRmluaXNoZWQgPSBbJmlucHV0
U291cmNlLCAmbmV3U3RhdGUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildKHN0ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4gZXJyb3IpIHsK
KyAgICAgICAgaWYgKGVycm9yKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihlcnJv
cik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpbnB1dFNvdXJj
ZS5zdGF0ZSA9IG5ld1N0YXRlOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxv
cHQpOworICAgIH07CisKKyAgICBzd2l0Y2ggKGlucHV0U291cmNlLnR5cGUpIHsKKyAgICBjYXNl
IFNpbXVsYXRlZElucHV0U291cmNlOjpUeXBlOjpOdWxsOgorICAgICAgICAvLyBUaGUgbWF4aW11
bSBkdXJhdGlvbiBpcyBoYW5kbGVkIGF0IHRoZSBrZXlmcmFtZSBsZXZlbCBieSBtX2tleUZyYW1l
VHJhbnNpdGlvbkR1cmF0aW9uVGltZXIuCisgICAgICAgIGV2ZW50RGlzcGF0Y2hGaW5pc2hlZChz
dGQ6Om51bGxvcHQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNpbXVsYXRlZElucHV0U291
cmNlOjpUeXBlOjpNb3VzZTogeworICAgICAgICBpZiAoIWEucHJlc3NlZE1vdXNlQnV0dG9uICYm
IGIucHJlc3NlZE1vdXNlQnV0dG9uKQorICAgICAgICAgICAgbV9jbGllbnQuc2ltdWxhdGVNb3Vz
ZUludGVyYWN0aW9uKG1fcGFnZSwgTW91c2VJbnRlcmFjdGlvbjo6RG93biwgYi5wcmVzc2VkTW91
c2VCdXR0b24udmFsdWUoKSwgYi5sb2NhdGlvbi52YWx1ZSgpLCBXVEZNb3ZlKGV2ZW50RGlzcGF0
Y2hGaW5pc2hlZCkpOworICAgICAgICBlbHNlIGlmIChhLnByZXNzZWRNb3VzZUJ1dHRvbiAmJiAh
Yi5wcmVzc2VkTW91c2VCdXR0b24pCisgICAgICAgICAgICBtX2NsaWVudC5zaW11bGF0ZU1vdXNl
SW50ZXJhY3Rpb24obV9wYWdlLCBNb3VzZUludGVyYWN0aW9uOjpVcCwgYS5wcmVzc2VkTW91c2VC
dXR0b24udmFsdWUoKSwgYi5sb2NhdGlvbi52YWx1ZSgpLCBXVEZNb3ZlKGV2ZW50RGlzcGF0Y2hG
aW5pc2hlZCkpOworICAgICAgICBlbHNlIGlmIChhLmxvY2F0aW9uICE9IGIubG9jYXRpb24pCisg
ICAgICAgICAgICBtX2NsaWVudC5zaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24obV9wYWdlLCBNb3Vz
ZUludGVyYWN0aW9uOjpNb3ZlLCBiLnByZXNzZWRNb3VzZUJ1dHRvbi52YWx1ZV9vcihNb3VzZUJ1
dHRvbjo6Tm9CdXR0b24pLCBiLmxvY2F0aW9uLnZhbHVlKCksIFdURk1vdmUoZXZlbnREaXNwYXRj
aEZpbmlzaGVkKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGV2ZW50RGlzcGF0Y2hGaW5p
c2hlZChzdGQ6Om51bGxvcHQpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBTaW11
bGF0ZWRJbnB1dFNvdXJjZTo6VHlwZTo6S2V5Ym9hcmQ6CisgICAgICAgIGlmICgoIWEucHJlc3Nl
ZENoYXJLZXkgJiYgYi5wcmVzc2VkQ2hhcktleSkgfHwgKCFhLnByZXNzZWRWaXJ0dWFsS2V5ICYm
IGIucHJlc3NlZFZpcnR1YWxLZXkpKQorICAgICAgICAgICAgbV9jbGllbnQuc2ltdWxhdGVLZXli
b2FyZEludGVyYWN0aW9uKG1fcGFnZSwgS2V5Ym9hcmRJbnRlcmFjdGlvbjo6S2V5UHJlc3MsIGIu
cHJlc3NlZFZpcnR1YWxLZXksIGIucHJlc3NlZENoYXJLZXksIFdURk1vdmUoZXZlbnREaXNwYXRj
aEZpbmlzaGVkKSk7CisgICAgICAgIGVsc2UgaWYgKChhLnByZXNzZWRDaGFyS2V5ICYmICFiLnBy
ZXNzZWRDaGFyS2V5KSB8fCAoYS5wcmVzc2VkVmlydHVhbEtleSAmJiAhYi5wcmVzc2VkVmlydHVh
bEtleSkpCisgICAgICAgICAgICBtX2NsaWVudC5zaW11bGF0ZUtleWJvYXJkSW50ZXJhY3Rpb24o
bV9wYWdlLCBLZXlib2FyZEludGVyYWN0aW9uOjpLZXlSZWxlYXNlLCBhLnByZXNzZWRWaXJ0dWFs
S2V5LCBhLnByZXNzZWRDaGFyS2V5LCBXVEZNb3ZlKGV2ZW50RGlzcGF0Y2hGaW5pc2hlZCkpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBldmVudERpc3BhdGNoRmluaXNoZWQoc3RkOjpudWxs
b3B0KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTaW11bGF0ZWRJbnB1dFNvdXJjZTo6VHlw
ZTo6VG91Y2g6CisgICAgICAgIC8vIE5vdCBzdXBwb3J0ZWQgeWV0LgorICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgZXZlbnREaXNwYXRjaEZpbmlzaGVkKEFVVE9NQVRJT05f
Q09NTUFORF9FUlJPUl9XSVRIX05BTUUoTm90SW1wbGVtZW50ZWQpKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorfQorCit2b2lkIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6cnVuKFZlY3RvcjxT
aW11bGF0ZWRJbnB1dEtleUZyYW1lPiYmIGtleUZyYW1lcywgSGFzaFNldDxSZWY8U2ltdWxhdGVk
SW5wdXRTb3VyY2U+PiYgaW5wdXRTb3VyY2VzLCBBdXRvbWF0aW9uQ29tcGxldGlvbkhhbmRsZXIm
JiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQoIWlzQWN0aXZlKCkpOworICAgIGlm
IChpc0FjdGl2ZSgpKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKEFVVE9NQVRJT05fQ09N
TUFORF9FUlJPUl9XSVRIX05BTUUoSW50ZXJuYWxFcnJvcikpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgbV9ydW5Db21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpOworICAgIGZvciAoY29uc3QgUmVmPFNpbXVsYXRlZElucHV0U291cmNlPiYgaW5wdXRT
b3VyY2UgOiBpbnB1dFNvdXJjZXMpCisgICAgICAgIG1faW5wdXRTb3VyY2VzLmFkZChpbnB1dFNv
dXJjZS5jb3B5UmVmKCkpOworCisgICAgbV9rZXlmcmFtZXMucmVzZXJ2ZUNhcGFjaXR5KGtleUZy
YW1lcy5zaXplKCkgKyAxKTsKKyAgICBtX2tleWZyYW1lcy5hcHBlbmQoU2ltdWxhdGVkSW5wdXRL
ZXlGcmFtZTo6a2V5RnJhbWVGcm9tU3RhdGVPZklucHV0U291cmNlcyhtX2lucHV0U291cmNlcykp
OworICAgIG1fa2V5ZnJhbWVzLmFwcGVuZFZlY3RvcihXVEZNb3ZlKGtleUZyYW1lcykpOworCisg
ICAgdHJhbnNpdGlvblRvTmV4dEtleUZyYW1lKCk7Cit9CisKK3ZvaWQgU2ltdWxhdGVkSW5wdXRE
aXNwYXRjaGVyOjpjYW5jZWwoKQoreworICAgIC8vIElmIHdlIHdlcmUgd2FpdGluZyBmb3IgbV9j
bGllbnQgdG8gZmluaXNoIGFuIGludGVyYWN0aW9uIGFuZCB0aGUgaW50ZXJhY3Rpb24gaGFkIGFu
IGVycm9yLAorICAgIC8vIHRoZW4gdGhlIHJlc3Qgb2YgdGhlIGFzeW5jIGNoYWluIHdpbGwgaGF2
ZSBiZWVuIHRvcm4gZG93bi4gSWYgd2UgYXJlIGp1c3Qgd2FpdGluZyBvbiBhCisgICAgLy8gZGlz
cGF0Y2ggdGltZXIsIHRoZW4gdGhpcyB3aWxsIGNhbmNlbCB0aGUgdGltZXIgYW5kIGNsZWFyCisK
KyAgICBpZiAoaXNBY3RpdmUoKSkKKyAgICAgICAgZmluaXNoRGlzcGF0Y2hpbmcoQVVUT01BVElP
Tl9DT01NQU5EX0VSUk9SX1dJVEhfTkFNRShJbnRlcm5hbEVycm9yKSk7Cit9CisKK3ZvaWQgU2lt
dWxhdGVkSW5wdXREaXNwYXRjaGVyOjpmaW5pc2hEaXNwYXRjaGluZyhzdGQ6Om9wdGlvbmFsPEF1
dG9tYXRpb25Db21tYW5kRXJyb3I+IGVycm9yKQoreworICAgIGlmIChtX2tleUZyYW1lVHJhbnNp
dGlvbkR1cmF0aW9uVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV9rZXlGcmFtZVRyYW5zaXRp
b25EdXJhdGlvblRpbWVyLnN0b3AoKTsKKworICAgIGF1dG8gZmluaXNoID0gV1RGTW92ZShtX3J1
bkNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICBtX2tleWZyYW1lcy5jbGVhcigpOworICAgIG1faW5w
dXRTb3VyY2VzLmNsZWFyKCk7CisgICAgbV9rZXlmcmFtZUluZGV4ID0gMDsKKyAgICBtX2lucHV0
U291cmNlU3RhdGVJbmRleCA9IDA7CisKKyAgICBmaW5pc2goZXJyb3IpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJraXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9t
YXRpb24vU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BdXRvbWF0aW9uL1NpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRmYzQ2
MmFkNTUxNmJjMzdjNDU2MGNhZmUwNDdjMjQyMzMwNzc5NTcKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1NpbXVsYXRlZElucHV0RGlzcGF0Y2hl
ci5oCkBAIC0wLDAgKzEsMTYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJXZWJFdmVudC5oIgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgorI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUg
PHd0Zi9TZWNvbmRzLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgSW5zcGVjdG9yIHsgbmFtZXNwYWNlIFByb3Rv
Y29sIHsgbmFtZXNwYWNlIEF1dG9tYXRpb24geworZW51bSBjbGFzcyBFcnJvck1lc3NhZ2U7Citl
bnVtIGNsYXNzIEtleWJvYXJkSW50ZXJhY3Rpb25UeXBlOworZW51bSBjbGFzcyBNb3VzZUludGVy
YWN0aW9uOworZW51bSBjbGFzcyBWaXJ0dWFsS2V5OworfSB9IH0KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK2NsYXNzIEF1dG9tYXRpb25Db21tYW5kRXJyb3I7Cit1c2luZyBBdXRvbWF0aW9uQ29t
cGxldGlvbkhhbmRsZXIgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25h
bDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPik+OworCitjbGFzcyBXZWJQYWdlUHJveHk7CisKK3Vz
aW5nIEtleWJvYXJkSW50ZXJhY3Rpb24gPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
OjpLZXlib2FyZEludGVyYWN0aW9uVHlwZTsKK3VzaW5nIFZpcnR1YWxLZXkgPSBJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OwordXNpbmcgQ2hhcktleSA9IGNoYXI7
IC8vIEZvciBXZWJEcml2ZXIsIHRoaXMgb25seSBuZWVkcyB0byBzdXBwb3J0IEFTQ0lJIGNoYXJh
Y3RlcnMgb24gMTAyLWtleSBrZXlib2FyZC4KK3VzaW5nIE1vdXNlQnV0dG9uID0gV2ViTW91c2VF
dmVudDo6QnV0dG9uOwordXNpbmcgTW91c2VJbnRlcmFjdGlvbiA9IEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkF1dG9tYXRpb246Ok1vdXNlSW50ZXJhY3Rpb247CisKK3N0cnVjdCBTaW11bGF0ZWRJbnB1
dFNvdXJjZVN0YXRlIHsKKyAgICBzdGQ6Om9wdGlvbmFsPENoYXJLZXk+IHByZXNzZWRDaGFyS2V5
OworICAgIHN0ZDo6b3B0aW9uYWw8VmlydHVhbEtleT4gcHJlc3NlZFZpcnR1YWxLZXk7CisgICAg
c3RkOjpvcHRpb25hbDxNb3VzZUJ1dHRvbj4gcHJlc3NlZE1vdXNlQnV0dG9uOworICAgIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+IGxvY2F0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8
U2Vjb25kcz4gZHVyYXRpb247CisKKyAgICBzdGF0aWMgU2ltdWxhdGVkSW5wdXRTb3VyY2VTdGF0
ZSBlbXB0eVN0YXRlKCkgeyByZXR1cm4gU2ltdWxhdGVkSW5wdXRTb3VyY2VTdGF0ZSgpOyB9Cit9
OworCitzdHJ1Y3QgU2ltdWxhdGVkSW5wdXRTb3VyY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxTaW11
bGF0ZWRJbnB1dFNvdXJjZT4geworcHVibGljOgorICAgIGVudW0gY2xhc3MgVHlwZSB7CisgICAg
ICAgIE51bGwsIC8vIFVzZWQgdG8gaW5kdWNlIGEgbWluaW11bSBkdXJhdGlvbi4KKyAgICAgICAg
S2V5Ym9hcmQsCisgICAgICAgIE1vdXNlLAorICAgICAgICBUb3VjaCwKKyAgICB9OworCisgICAg
VHlwZSB0eXBlOworCisgICAgLy8gVGhlIGxhc3Qgc3RhdGUgYXNzb2NpYXRlZCB3aXRoIHRoaXMg
aW5wdXQgc291cmNlLgorICAgIFNpbXVsYXRlZElucHV0U291cmNlU3RhdGUgc3RhdGU7CisKKyAg
ICBzdGF0aWMgUmVmPFNpbXVsYXRlZElucHV0U291cmNlPiBjcmVhdGUoVHlwZSB0eXBlKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2ltdWxhdGVkSW5wdXRTb3VyY2UodHlw
ZSwgU2ltdWxhdGVkSW5wdXRTb3VyY2VTdGF0ZTo6ZW1wdHlTdGF0ZSgpKSk7CisgICAgfQorCitw
cml2YXRlOgorICAgIFNpbXVsYXRlZElucHV0U291cmNlKFR5cGUgdHlwZSwgU2ltdWxhdGVkSW5w
dXRTb3VyY2VTdGF0ZSBzdGF0ZSkKKyAgICAgICAgOiB0eXBlKHR5cGUpCisgICAgICAgICwgc3Rh
dGUoc3RhdGUpCisgICAgeyB9Cit9OworCitzdHJ1Y3QgU2ltdWxhdGVkSW5wdXRLZXlGcmFtZSB7
CitwdWJsaWM6CisgICAgdXNpbmcgU3RhdGVFbnRyeSA9IHN0ZDo6cGFpcjxTaW11bGF0ZWRJbnB1
dFNvdXJjZSYsIFNpbXVsYXRlZElucHV0U291cmNlU3RhdGU+OworCisgICAgZXhwbGljaXQgU2lt
dWxhdGVkSW5wdXRLZXlGcmFtZShWZWN0b3I8U3RhdGVFbnRyeT4mJik7CisgICAgU2Vjb25kcyBt
YXhpbXVtRHVyYXRpb24oKSBjb25zdDsKKworICAgIHN0YXRpYyBTaW11bGF0ZWRJbnB1dEtleUZy
YW1lIGtleUZyYW1lRnJvbVN0YXRlT2ZJbnB1dFNvdXJjZXMoSGFzaFNldDxSZWY8U2ltdWxhdGVk
SW5wdXRTb3VyY2U+PiYpOworICAgIHN0YXRpYyBTaW11bGF0ZWRJbnB1dEtleUZyYW1lIGtleUZy
YW1lVG9SZXNldElucHV0U291cmNlcyhIYXNoU2V0PFJlZjxTaW11bGF0ZWRJbnB1dFNvdXJjZT4+
Jik7CisKKyAgICBWZWN0b3I8U3RhdGVFbnRyeT4gc3RhdGVzOworfTsKKworY2xhc3MgU2ltdWxh
dGVkSW5wdXREaXNwYXRjaGVyIDogcHVibGljIFJlZkNvdW50ZWQ8U2ltdWxhdGVkSW5wdXREaXNw
YXRjaGVyPiB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2ltdWxhdGVkSW5wdXREaXNwYXRj
aGVyKTsKK3B1YmxpYzoKKyAgICBjbGFzcyBDbGllbnQgeworICAgIHB1YmxpYzoKKyAgICAgICAg
dmlydHVhbCB+Q2xpZW50KCkgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBzaW11bGF0ZU1vdXNl
SW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiwgTW91c2VJbnRlcmFjdGlvbiwgV2ViTW91c2VFdmVu
dDo6QnV0dG9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbG9jYXRpb25JblZpZXcsIEF1dG9t
YXRpb25Db21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzaW11
bGF0ZUtleWJvYXJkSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiwgS2V5Ym9hcmRJbnRlcmFjdGlv
biwgc3RkOjpvcHRpb25hbDxWaXJ0dWFsS2V5Piwgc3RkOjpvcHRpb25hbDxDaGFyS2V5PiwgQXV0
b21hdGlvbkNvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKKyAgICB9OworCisgICAgc3RhdGljIFJl
ZjxTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI+IGNyZWF0ZShXZWJQYWdlUHJveHkmIHBhZ2UsIFNp
bXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6Q2xpZW50JiBjbGllbnQpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIocGFnZSwgY2xpZW50
KSk7CisgICAgfQorCisgICAgflNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcigpOworCisgICAgdm9p
ZCBydW4oVmVjdG9yPFNpbXVsYXRlZElucHV0S2V5RnJhbWU+JiYga2V5RnJhbWVzLCBIYXNoU2V0
PFJlZjxTaW11bGF0ZWRJbnB1dFNvdXJjZT4+JiBpbnB1dFNvdXJjZXMsIEF1dG9tYXRpb25Db21w
bGV0aW9uSGFuZGxlciYmKTsKKyAgICB2b2lkIGNhbmNlbCgpOworCisgICAgYm9vbCBpc0FjdGl2
ZSgpIGNvbnN0OworCitwcml2YXRlOgorICAgIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcihXZWJQ
YWdlUHJveHkmLCBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OkNsaWVudCYpOworCisgICAgdm9p
ZCB0cmFuc2l0aW9uVG9OZXh0S2V5RnJhbWUoKTsKKyAgICB2b2lkIHRyYW5zaXRpb25CZXR3ZWVu
S2V5RnJhbWVzKGNvbnN0IFNpbXVsYXRlZElucHV0S2V5RnJhbWUmLCBjb25zdCBTaW11bGF0ZWRJ
bnB1dEtleUZyYW1lJiwgQXV0b21hdGlvbkNvbXBsZXRpb25IYW5kbGVyJiYpOworCisgICAgdm9p
ZCB0cmFuc2l0aW9uVG9OZXh0SW5wdXRTb3VyY2VTdGF0ZSgpOworICAgIHZvaWQgdHJhbnNpdGlv
bklucHV0U291cmNlVG9TdGF0ZShTaW11bGF0ZWRJbnB1dFNvdXJjZSYsIGNvbnN0IFNpbXVsYXRl
ZElucHV0U291cmNlU3RhdGUmIG5ld1N0YXRlLCBBdXRvbWF0aW9uQ29tcGxldGlvbkhhbmRsZXIm
Jik7CisgICAgdm9pZCBmaW5pc2hEaXNwYXRjaGluZyhzdGQ6Om9wdGlvbmFsPEF1dG9tYXRpb25D
b21tYW5kRXJyb3I+KTsKKworICAgIHZvaWQga2V5RnJhbWVUcmFuc2l0aW9uRHVyYXRpb25UaW1l
ckZpcmVkKCk7CisgICAgYm9vbCBpc0tleUZyYW1lVHJhbnNpdGlvbkNvbXBsZXRlKCkgY29uc3Q7
CisKKyAgICBXZWJQYWdlUHJveHkmIG1fcGFnZTsKKyAgICBTaW11bGF0ZWRJbnB1dERpc3BhdGNo
ZXI6OkNsaWVudCYgbV9jbGllbnQ7CisKKyAgICBBdXRvbWF0aW9uQ29tcGxldGlvbkhhbmRsZXIg
bV9ydW5Db21wbGV0aW9uSGFuZGxlcjsKKyAgICBBdXRvbWF0aW9uQ29tcGxldGlvbkhhbmRsZXIg
bV9rZXlGcmFtZVRyYW5zaXRpb25Db21wbGV0aW9uSGFuZGxlcjsKKyAgICBSdW5Mb29wOjpUaW1l
cjxTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI+IG1fa2V5RnJhbWVUcmFuc2l0aW9uRHVyYXRpb25U
aW1lcjsKKworICAgIFZlY3RvcjxTaW11bGF0ZWRJbnB1dEtleUZyYW1lPiBtX2tleWZyYW1lczsK
KyAgICBIYXNoU2V0PFJlZjxTaW11bGF0ZWRJbnB1dFNvdXJjZT4+IG1faW5wdXRTb3VyY2VzOwor
CisgICAgLy8gVGhlIHBvc2l0aW9uIHdpdGhpbiBtX2tleWZyYW1lcy4KKyAgICB1bnNpZ25lZCBt
X2tleWZyYW1lSW5kZXggeyAwIH07CisKKyAgICAvLyBUaGUgcG9zaXRpb24gd2l0aGluIHRoZSBp
bnB1dCBzb3VyY2Ugc3RhdGUgdmVjdG9yIGF0IG1fa2V5ZnJhbWVzW21fa2V5ZnJhbWVJbmRleF0u
CisgICAgLy8gRXZlbnRzIHRoYXQgcmVmbGVjdCBpbnB1dCBzb3VyY2Ugc3RhdGUgdHJhbnNpdGlv
bnMgYXJlIGRpc3BhdGNoZWQgc2VyaWFsbHkgYmFzZWQgb24gdGhpcyBvcmRlci4KKyAgICB1bnNp
Z25lZCBtX2lucHV0U291cmNlU3RhdGVJbmRleCB7IDAgfTsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9X
ZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0
aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRleCBmNWI3ZDM3MTgyNTUwYWNkMzQxZWE4
MTAyY2YwMGQwMjViNDM4YjEyLi4yYTNhZmYyMjQ2NjVlYWU3YWQ2ZjgxMzcxNGUzNWQ4ODAzZjhl
MTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1
dG9tYXRpb25TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0
aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcApAQCAtNzYsNiArNzYsMTAgQEAgV2ViQXV0b21h
dGlvblNlc3Npb246OldlYkF1dG9tYXRpb25TZXNzaW9uKCkKICAgICAsIG1fZG9tYWluTm90aWZp
ZXIoc3RkOjptYWtlX3VuaXF1ZTxBdXRvbWF0aW9uRnJvbnRlbmREaXNwYXRjaGVyPihtX2Zyb250
ZW5kUm91dGVyKSkKICAgICAsIG1fbG9hZFRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJldl
YkF1dG9tYXRpb25TZXNzaW9uOjpsb2FkVGltZXJGaXJlZCkKIHsKKyAgICAvLyBTZXQgdXAgY2Fu
b25pY2FsIGlucHV0IHNvdXJjZXMgdG8gYmUgdXNlZCBmb3IgJ3BlcmZvcm1JbnRlcmFjdGlvblNl
cXVlbmNlJyBhbmQgJ2NhbmNlbEludGVyYWN0aW9uU2VxdWVuY2UnLgorICAgIG1faW5wdXRTb3Vy
Y2VzLmFkZChTaW11bGF0ZWRJbnB1dFNvdXJjZTo6Y3JlYXRlKFNpbXVsYXRlZElucHV0U291cmNl
OjpUeXBlOjpNb3VzZSkpOworICAgIG1faW5wdXRTb3VyY2VzLmFkZChTaW11bGF0ZWRJbnB1dFNv
dXJjZTo6Y3JlYXRlKFNpbXVsYXRlZElucHV0U291cmNlOjpUeXBlOjpLZXlib2FyZCkpOworICAg
IG1faW5wdXRTb3VyY2VzLmFkZChTaW11bGF0ZWRJbnB1dFNvdXJjZTo6Y3JlYXRlKFNpbXVsYXRl
ZElucHV0U291cmNlOjpUeXBlOjpOdWxsKSk7CiB9CiAKIFdlYkF1dG9tYXRpb25TZXNzaW9uOjp+
V2ViQXV0b21hdGlvblNlc3Npb24oKQpAQCAtNzIzLDI4ICs3MjcsMzIgQEAgdm9pZCBXZWJBdXRv
bWF0aW9uU2Vzc2lvbjo6aW5zcGVjdG9yRnJvbnRlbmRMb2FkZWQoY29uc3QgV2ViUGFnZVByb3h5
JiBwYWdlKQogCiB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjptb3VzZUV2ZW50c0ZsdXNoZWRG
b3JQYWdlKGNvbnN0IFdlYlBhZ2VQcm94eSYgcGFnZSkKIHsKLSAgICBpZiAoYXV0byBjYWxsYmFj
ayA9IG1fcGVuZGluZ01vdXNlRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2UudGFrZShwYWdl
LnBhZ2VJRCgpKSkgewotICAgICAgICBpZiAobV9wZW5kaW5nTW91c2VFdmVudHNGbHVzaGVkQ2Fs
bGJhY2tzUGVyUGFnZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICBtX3NpbXVsYXRpbmdVc2VySW50
ZXJhY3Rpb24gPSBmYWxzZTsKLQorICAgIGlmIChhdXRvIGNhbGxiYWNrID0gbV9wZW5kaW5nTW91
c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS50YWtlKHBhZ2UucGFnZUlEKCkpKQogICAg
ICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQpOwotICAgIH0KIH0KIAogdm9pZCBXZWJBdXRvbWF0
aW9uU2Vzc2lvbjo6a2V5Ym9hcmRFdmVudHNGbHVzaGVkRm9yUGFnZShjb25zdCBXZWJQYWdlUHJv
eHkmIHBhZ2UpCiB7Ci0gICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBtX3BlbmRpbmdLZXlib2FyZEV2
ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlLnRha2UocGFnZS5wYWdlSUQoKSkpIHsKLSAgICAg
ICAgaWYgKG1fcGVuZGluZ0tleWJvYXJkRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2UuaXNF
bXB0eSgpKQotICAgICAgICAgICAgbV9zaW11bGF0aW5nVXNlckludGVyYWN0aW9uID0gZmFsc2U7
Ci0KKyAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1fcGVuZGluZ0tleWJvYXJkRXZlbnRzRmx1c2hl
ZENhbGxiYWNrc1BlclBhZ2UudGFrZShwYWdlLnBhZ2VJRCgpKSkKICAgICAgICAgY2FsbGJhY2so
c3RkOjpudWxsb3B0KTsKLSAgICB9CiB9CiAKIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246Ondp
bGxDbG9zZVBhZ2UoY29uc3QgV2ViUGFnZVByb3h5JiBwYWdlKQogewogICAgIFN0cmluZyBoYW5k
bGUgPSBoYW5kbGVGb3JXZWJQYWdlUHJveHkocGFnZSk7CiAgICAgbV9kb21haW5Ob3RpZmllci0+
YnJvd3NpbmdDb250ZXh0Q2xlYXJlZChoYW5kbGUpOworCisgICAgLy8gQ2FuY2VsIHBlbmRpbmcg
aW50ZXJhY3Rpb25zIG9uIHRoaXMgcGFnZS4gQnkgcHJvdmlkaW5nIGFuIGVycm9yLCB0aGlzIHdp
bGwgY2F1c2Ugc3Vic2VxdWVudAorICAgIC8vIGFjdGlvbnMgdG8gYmUgYWJvcnRlZCBhbmQgdGhl
IFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6cnVuKCkgY2FsbCB3aWxsIHVud2luZCBhbmQgZmFp
bC4KKyAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1fcGVuZGluZ01vdXNlRXZlbnRzRmx1c2hlZENh
bGxiYWNrc1BlclBhZ2UudGFrZShwYWdlLnBhZ2VJRCgpKSkKKyAgICAgICAgY2FsbGJhY2soQVVU
T01BVElPTl9DT01NQU5EX0VSUk9SX1dJVEhfTkFNRShXaW5kb3dOb3RGb3VuZCkpOworICAgIGlm
IChhdXRvIGNhbGxiYWNrID0gbV9wZW5kaW5nTW91c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVy
UGFnZS50YWtlKHBhZ2UucGFnZUlEKCkpKQorICAgICAgICBjYWxsYmFjayhBVVRPTUFUSU9OX0NP
TU1BTkRfRVJST1JfV0lUSF9OQU1FKFdpbmRvd05vdEZvdW5kKSk7CisKKyAgICAvLyBUaGVuIHRl
bGwgdGhlIGlucHV0IGRpc3BhdGNoZXIgdG8gY2FuY2VsIHNvIHRpbWVycyBhcmUgc3RvcHBlZCwg
YW5kIGxldCBpdCBnbyBvdXQgb2Ygc2NvcGUuCisgICAgc3RkOjpvcHRpb25hbDxSZWY8U2ltdWxh
dGVkSW5wdXREaXNwYXRjaGVyPj4gaW5wdXREaXNwYXRjaGVyID0gbV9pbnB1dERpc3BhdGNoZXJz
QnlQYWdlLnRha2UocGFnZS5wYWdlSUQoKSk7CisgICAgaWYgKGlucHV0RGlzcGF0Y2hlci5oYXNf
dmFsdWUoKSkKKyAgICAgICAgaW5wdXREaXNwYXRjaGVyLnZhbHVlKCktPmNhbmNlbCgpOwogfQog
CiBzdGF0aWMgYm9vbCBmaWxlQ2FuQmVBY2NlcHRlZEZvclVwbG9hZChjb25zdCBTdHJpbmcmIGZp
bGVuYW1lLCBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGFsbG93ZWRNSU1FVHlwZXMsIGNvbnN0IEhh
c2hTZXQ8U3RyaW5nPiYgYWxsb3dlZEZpbGVFeHRlbnNpb25zKQpAQCAtMTM2Niw2ICsxMzc0LDg2
IEBAIGJvb2wgV2ViQXV0b21hdGlvblNlc3Npb246OnNob3VsZEFsbG93R2V0VXNlck1lZGlhRm9y
UGFnZShjb25zdCBXZWJQYWdlUHJveHkmKSBjCiAgICAgcmV0dXJuIG1fcGVybWlzc2lvbkZvckdl
dFVzZXJNZWRpYTsKIH0KIAorYm9vbCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6aXNTaW11bGF0aW5n
VXNlckludGVyYWN0aW9uKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcGVuZGluZ01vdXNlRXZlbnRz
Rmx1c2hlZENhbGxiYWNrc1BlclBhZ2UuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgaWYgKCFtX3BlbmRpbmdLZXlib2FyZEV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdl
LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9
CisKK1NpbXVsYXRlZElucHV0RGlzcGF0Y2hlciYgV2ViQXV0b21hdGlvblNlc3Npb246OmlucHV0
RGlzcGF0Y2hlckZvclBhZ2UoV2ViUGFnZVByb3h5JiBwYWdlKQoreworICAgIGlmICghbV9pbnB1
dERpc3BhdGNoZXJzQnlQYWdlLmNvbnRhaW5zKHBhZ2UucGFnZUlEKCkpKQorICAgICAgICBtX2lu
cHV0RGlzcGF0Y2hlcnNCeVBhZ2Uuc2V0KHBhZ2UucGFnZUlEKCksIFNpbXVsYXRlZElucHV0RGlz
cGF0Y2hlcjo6Y3JlYXRlKHBhZ2UsICp0aGlzKSk7CisKKyAgICByZXR1cm4gKm1faW5wdXREaXNw
YXRjaGVyc0J5UGFnZS5nZXQocGFnZS5wYWdlSUQoKSk7Cit9CisKK1NpbXVsYXRlZElucHV0U291
cmNlKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6aW5wdXRTb3VyY2VGb3JUeXBlKFNpbXVsYXRlZElu
cHV0U291cmNlOjpUeXBlIHR5cGUpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IHRoaXMgc2hvdWxk
IHVzZSBzb21ldGhpbmcgbGlrZSBWZWN0b3IncyBmaW5kTWF0Y2hpbmcoKS4KKyAgICBmb3IgKGF1
dG8mIGlucHV0U291cmNlIDogbV9pbnB1dFNvdXJjZXMpIHsKKyAgICAgICAgaWYgKGlucHV0U291
cmNlLT50eXBlID09IHR5cGUpCisgICAgICAgICAgICByZXR1cm4gJmlucHV0U291cmNlLmdldCgp
OworICAgIH0KKworICAgIHJldHVybiBudWxscHRyOworfQorCisvLyBTaW11bGF0ZWRJbnB1dERp
c3BhdGNoZXI6OkNsaWVudCBBUEkKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnNpbXVsYXRl
TW91c2VJbnRlcmFjdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIE1vdXNlSW50ZXJhY3Rpb24gaW50
ZXJhY3Rpb24sIFdlYk1vdXNlRXZlbnQ6OkJ1dHRvbiBtb3VzZUJ1dHRvbiwgY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmIGxvY2F0aW9uSW5WaWV3cG9ydCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChz
dGQ6Om9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+KT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3sKKyAgICBXZWJDb3JlOjpJbnRQb2ludCBsb2NhdGlvbkluVmlldyA9IFdlYkNvcmU6Oklu
dFBvaW50KGxvY2F0aW9uSW5WaWV3cG9ydC54KCksIGxvY2F0aW9uSW5WaWV3cG9ydC55KCkgKyBw
YWdlLnRvcENvbnRlbnRJbnNldCgpKTsKKyAgICBwYWdlLmdldFdpbmRvd0ZyYW1lV2l0aENhbGxi
YWNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHBhZ2UgPSBtYWtlUmVmKHBhZ2UpLCBp
bnRlcmFjdGlvbiwgbW91c2VCdXR0b24sIGxvY2F0aW9uSW5WaWV3XShXZWJDb3JlOjpGbG9hdFJl
Y3Qgd2luZG93RnJhbWUpIG11dGFibGUgeworICAgICAgICBhdXRvIGNsaXBwZWRYID0gc3RkOjpt
aW4oc3RkOjptYXgoMC4wZiwgKGZsb2F0KWxvY2F0aW9uSW5WaWV3LngoKSksIHdpbmRvd0ZyYW1l
LnNpemUoKS53aWR0aCgpKTsKKyAgICAgICAgYXV0byBjbGlwcGVkWSA9IHN0ZDo6bWluKHN0ZDo6
bWF4KDAuMGYsIChmbG9hdClsb2NhdGlvbkluVmlldy55KCkpLCB3aW5kb3dGcmFtZS5zaXplKCku
aGVpZ2h0KCkpOworICAgICAgICBpZiAoY2xpcHBlZFggIT0gbG9jYXRpb25JblZpZXcueCgpIHx8
IGNsaXBwZWRZICE9IGxvY2F0aW9uSW5WaWV3LnkoKSkgeworICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoQVVUT01BVElPTl9DT01NQU5EX0VSUk9SX1dJVEhfTkFNRShUYXJnZXRPdXRPZkJv
dW5kcykpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLy8gQnJp
ZGdlIHRoZSBmbHVzaGVkIGNhbGxiYWNrIHRvIG91ciBjb21tYW5kJ3MgY29tcGxldGlvbiBoYW5k
bGVyLgorICAgICAgICBhdXRvIG1vdXNlRXZlbnRzRmx1c2hlZENhbGxiYWNrID0gW2NvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKHN0ZDo6b3B0aW9uYWw8QXV0
b21hdGlvbkNvbW1hbmRFcnJvcj4gZXJyb3IpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKGVycm9yKTsKKyAgICAgICAgfTsKKworICAgICAgICBhdXRvJiBjYWxsYmFja0luTWFwID0g
bV9wZW5kaW5nTW91c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS5hZGQocGFnZS0+cGFn
ZUlEKCksIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgaWYgKGNhbGxiYWNrSW5N
YXApCisgICAgICAgICAgICBjYWxsYmFja0luTWFwKEFVVE9NQVRJT05fQ09NTUFORF9FUlJPUl9X
SVRIX05BTUUoVGltZW91dCkpOworICAgICAgICBjYWxsYmFja0luTWFwID0gV1RGTW92ZShtb3Vz
ZUV2ZW50c0ZsdXNoZWRDYWxsYmFjayk7CisKKyAgICAgICAgcGxhdGZvcm1TaW11bGF0ZU1vdXNl
SW50ZXJhY3Rpb24ocGFnZSwgaW50ZXJhY3Rpb24sIG1vdXNlQnV0dG9uLCBsb2NhdGlvbkluVmll
dywgKFdlYkV2ZW50OjpNb2RpZmllcnMpbV9jdXJyZW50TW9kaWZpZXJzKTsKKworICAgICAgICAv
LyBJZiB0aGUgZXZlbnQgZG9lcyBub3QgaGl0IHRlc3QgYW55dGhpbmcgaW4gdGhlIHdpbmRvdywg
dGhlbiBpdCBtYXkgbm90IGhhdmUgYmVlbiBkZWxpdmVyZWQuCisgICAgICAgIGlmIChjYWxsYmFj
a0luTWFwICYmICFwYWdlLT5pc1Byb2Nlc3NpbmdNb3VzZUV2ZW50cygpKSB7CisgICAgICAgICAg
ICBhdXRvIGNhbGxiYWNrVG9DYW5jZWwgPSBtX3BlbmRpbmdNb3VzZUV2ZW50c0ZsdXNoZWRDYWxs
YmFja3NQZXJQYWdlLnRha2UocGFnZS0+cGFnZUlEKCkpOworICAgICAgICAgICAgY2FsbGJhY2tU
b0NhbmNlbChzdGQ6Om51bGxvcHQpOworICAgICAgICB9CisKKyAgICAgICAgLy8gT3RoZXJ3aXNl
LCB3YWl0IGZvciBtb3VzZUV2ZW50c0ZsdXNoZWRDYWxsYmFjayB0byBydW4gd2hlbiBhbGwgZXZl
bnRzIGFyZSBoYW5kbGVkLgorICAgIH0pOworfQorCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9u
OjpzaW11bGF0ZUtleWJvYXJkSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBLZXlib2Fy
ZEludGVyYWN0aW9uIGludGVyYWN0aW9uLCBzdGQ6Om9wdGlvbmFsPFZpcnR1YWxLZXk+IHZpcnR1
YWxLZXksIHN0ZDo6b3B0aW9uYWw8Q2hhcktleT4gY2hhcktleSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChzdGQ6Om9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+KT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3sKKyAgICAvLyBCcmlkZ2UgdGhlIGZsdXNoZWQgY2FsbGJhY2sgdG8gb3VyIGNv
bW1hbmQncyBjb21wbGV0aW9uIGhhbmRsZXIuCisgICAgYXV0byBrZXlib2FyZEV2ZW50c0ZsdXNo
ZWRDYWxsYmFjayA9IFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXShzdGQ6Om9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+IGVycm9yKSB7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKGVycm9yKTsKKyAgICB9OworCisgICAgYXV0byYgY2FsbGJh
Y2tJbk1hcCA9IG1fcGVuZGluZ0tleWJvYXJkRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2Uu
YWRkKHBhZ2UucGFnZUlEKCksIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBpZiAoY2Fs
bGJhY2tJbk1hcCkKKyAgICAgICAgY2FsbGJhY2tJbk1hcChBVVRPTUFUSU9OX0NPTU1BTkRfRVJS
T1JfV0lUSF9OQU1FKFRpbWVvdXQpKTsKKyAgICBjYWxsYmFja0luTWFwID0gV1RGTW92ZShrZXli
b2FyZEV2ZW50c0ZsdXNoZWRDYWxsYmFjayk7CisKKyAgICBwbGF0Zm9ybVNpbXVsYXRlS2V5Ym9h
cmRJbnRlcmFjdGlvbihwYWdlLCBpbnRlcmFjdGlvbiwgdmlydHVhbEtleSwgY2hhcktleSk7CisK
KyAgICAvLyBXYWl0IGZvciBrZXlib2FyZEV2ZW50c0ZsdXNoZWRDYWxsYmFjayB0byBydW4gd2hl
biBhbGwgZXZlbnRzIGFyZSBoYW5kbGVkLgorfQorCiAjaWYgVVNFKEFQUEtJVCkgfHwgUExBVEZP
Uk0oR1RLKQogc3RhdGljIFdlYkV2ZW50OjpNb2RpZmllcnMgcHJvdG9jb2xNb2RpZmllclRvV2Vi
RXZlbnRNb2RpZmllcihJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpLZXlNb2RpZmll
ciBtb2RpZmllcikKIHsKQEAgLTEzODQsNiArMTQ3MiwyMCBAQCBzdGF0aWMgV2ViRXZlbnQ6Ok1v
ZGlmaWVycyBwcm90b2NvbE1vZGlmaWVyVG9XZWJFdmVudE1vZGlmaWVyKEluc3BlY3Rvcjo6UHJv
dG9jbwogCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KKworc3RhdGljIFdl
Yk1vdXNlRXZlbnQ6OkJ1dHRvbiBwcm90b2NvbE1vdXNlQnV0dG9uVG9XZWJNb3VzZUV2ZW50QnV0
dG9uKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9uIGJ1dHRvbikK
K3sKKyAgICBzd2l0Y2ggKGJ1dHRvbikgeworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbjo6TW91c2VCdXR0b246Ok5vbmU6CisgICAgICAgIHJldHVybiBXZWJNb3VzZUV2
ZW50OjpOb0J1dHRvbjsKKyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246
Ok1vdXNlQnV0dG9uOjpMZWZ0OgorICAgICAgICByZXR1cm4gV2ViTW91c2VFdmVudDo6TGVmdEJ1
dHRvbjsKKyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0
dG9uOjpNaWRkbGU6CisgICAgICAgIHJldHVybiBXZWJNb3VzZUV2ZW50OjpNaWRkbGVCdXR0b247
CisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1dHRvbjo6
UmlnaHQ6CisgICAgICAgIHJldHVybiBXZWJNb3VzZUV2ZW50OjpSaWdodEJ1dHRvbjsKKyAgICB9
Cit9CiAjZW5kaWYgLy8gVVNFKEFQUEtJVCkgfHwgUExBVEZPUk0oR1RLKQogCiB2b2lkIFdlYkF1
dG9tYXRpb25TZXNzaW9uOjpwZXJmb3JtTW91c2VJbnRlcmFjdGlvbihjb25zdCBTdHJpbmcmIGhh
bmRsZSwgY29uc3QgSlNPTjo6T2JqZWN0JiByZXF1ZXN0ZWRQb3NpdGlvbk9iamVjdCwgY29uc3Qg
U3RyaW5nJiBtb3VzZUJ1dHRvblN0cmluZywgY29uc3QgU3RyaW5nJiBtb3VzZUludGVyYWN0aW9u
U3RyaW5nLCBjb25zdCBKU09OOjpBcnJheSYga2V5TW9kaWZpZXJTdHJpbmdzLCBSZWY8UGVyZm9y
bU1vdXNlSW50ZXJhY3Rpb25DYWxsYmFjaz4mJiBjYWxsYmFjaykKQEAgLTE0MTUsMTMgKzE1MTcs
MTMgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGVyZm9ybU1vdXNlSW50ZXJhY3Rpb24o
Y29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbnN0IEoKICAgICAgICAgV2ViRXZlbnQ6Ok1vZGlmaWVy
cyBlbnVtVmFsdWUgPSBwcm90b2NvbE1vZGlmaWVyVG9XZWJFdmVudE1vZGlmaWVyKHBhcnNlZE1v
ZGlmaWVyLnZhbHVlKCkpOwogICAgICAgICBrZXlNb2RpZmllcnMgPSAoV2ViRXZlbnQ6Ok1vZGlm
aWVycykoZW51bVZhbHVlIHwga2V5TW9kaWZpZXJzKTsKICAgICB9Ci0gICAgCisKICAgICBwYWdl
LT5nZXRXaW5kb3dGcmFtZVdpdGhDYWxsYmFjayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBwYWdlID0gbWFrZVJlZigq
cGFnZSksIHgsIHksIG1vdXNlSW50ZXJhY3Rpb25TdHJpbmcsIG1vdXNlQnV0dG9uU3RyaW5nLCBr
ZXlNb2RpZmllcnNdKFdlYkNvcmU6OkZsb2F0UmVjdCB3aW5kb3dGcmFtZSkgbXV0YWJsZSB7CiAK
ICAgICAgICAgeCA9IHN0ZDo6bWluKHN0ZDo6bWF4KDAuMGYsIHgpLCB3aW5kb3dGcmFtZS5zaXpl
KCkud2lkdGgoKSk7CiAgICAgICAgIHkgPSBzdGQ6Om1pbihzdGQ6Om1heCgwLjBmLCB5ICsgcGFn
ZS0+dG9wQ29udGVudEluc2V0KCkpLCB3aW5kb3dGcmFtZS5zaXplKCkuaGVpZ2h0KCkpOwogCi0g
ICAgICAgIFdlYkNvcmU6OkludFBvaW50IHZpZXdQb3NpdGlvbiA9IFdlYkNvcmU6OkludFBvaW50
KHN0YXRpY19jYXN0PGludD4oeCksIHN0YXRpY19jYXN0PGludD4oeSkpOworICAgICAgICBXZWJD
b3JlOjpJbnRQb2ludCBwb3NpdGlvbkluVmlldyA9IFdlYkNvcmU6OkludFBvaW50KHN0YXRpY19j
YXN0PGludD4oeCksIHN0YXRpY19jYXN0PGludD4oeSkpOwogCiAgICAgICAgIGF1dG8gcGFyc2Vk
SW50ZXJhY3Rpb24gPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6cGFy
c2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1v
dXNlSW50ZXJhY3Rpb24+KG1vdXNlSW50ZXJhY3Rpb25TdHJpbmcpOwogICAgICAgICBpZiAoIXBh
cnNlZEludGVyYWN0aW9uKQpAQCAtMTQ0NywxMSArMTU0OSw4IEBAIHZvaWQgV2ViQXV0b21hdGlv
blNlc3Npb246OnBlcmZvcm1Nb3VzZUludGVyYWN0aW9uKGNvbnN0IFN0cmluZyYgaGFuZGxlLCBj
b25zdCBKCiAgICAgICAgICAgICBjYWxsYmFja0luTWFwKEFVVE9NQVRJT05fQ09NTUFORF9FUlJP
Ul9XSVRIX05BTUUoVGltZW91dCkpOwogICAgICAgICBjYWxsYmFja0luTWFwID0gV1RGTW92ZSht
b3VzZUV2ZW50c0ZsdXNoZWRDYWxsYmFjayk7CiAKLSAgICAgICAgLy8gVGhpcyBpcyBjbGVhcmVk
IHdoZW4gYWxsIG1vdXNlIGV2ZW50cyBhcmUgZmx1c2hlZC4KLSAgICAgICAgbV9zaW11bGF0aW5n
VXNlckludGVyYWN0aW9uID0gdHJ1ZTsKKyAgICAgICAgcGxhdGZvcm1TaW11bGF0ZU1vdXNlSW50
ZXJhY3Rpb24ocGFnZSwgcGFyc2VkSW50ZXJhY3Rpb24udmFsdWUoKSwgcHJvdG9jb2xNb3VzZUJ1
dHRvblRvV2ViTW91c2VFdmVudEJ1dHRvbihwYXJzZWRCdXR0b24udmFsdWUoKSksIHBvc2l0aW9u
SW5WaWV3LCBrZXlNb2RpZmllcnMpOwogCi0gICAgICAgIHBsYXRmb3JtU2ltdWxhdGVNb3VzZUlu
dGVyYWN0aW9uKHBhZ2UsIHZpZXdQb3NpdGlvbiwgcGFyc2VkSW50ZXJhY3Rpb24udmFsdWUoKSwg
cGFyc2VkQnV0dG9uLnZhbHVlKCksIGtleU1vZGlmaWVycyk7Ci0gICAgICAgIAogICAgICAgICAv
LyBJZiB0aGUgZXZlbnQgbG9jYXRpb24gd2FzIHByZXZpb3VzbHkgY2xpcHBlZCBhbmQgZG9lcyBu
b3QgaGl0IHRlc3QgYW55dGhpbmcgaW4gdGhlIHdpbmRvdywgdGhlbiBpdCB3aWxsIG5vdCBiZSBw
cm9jZXNzZWQuCiAgICAgICAgIC8vIEZvciBjb21wYXRpYmlsaXR5IHdpdGggcHJlLVczQyBkcml2
ZXIgaW1wbGVtZW50YXRpb25zLCBkb24ndCBtYWtlIHRoaXMgYSBoYXJkIGVycm9yOyBqdXN0IGRv
IG5vdGhpbmcgc2lsZW50bHkuCiAgICAgICAgIC8vIEluIFczQy1vbmx5IGNvZGUgcGF0aHMsIHdl
IGNhbiByZWplY3QgYW55IHBvaW50ZXIgYWN0aW9ucyB3aG9zZSBjb29yZGluYXRlcyBhcmUgb3V0
c2lkZSB0aGUgdmlld3BvcnQgcmVjdC4KQEAgLTE0OTksNyArMTU5OCw3IEBAIHZvaWQgV2ViQXV0
b21hdGlvblNlc3Npb246OnBlcmZvcm1LZXlib2FyZEludGVyYWN0aW9ucyhjb25zdCBTdHJpbmcm
IGhhbmRsZSwgY29uCiAgICAgICAgICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURf
RVJST1JfQU5EX0RFVEFJTFMoSW52YWxpZFBhcmFtZXRlciwgIkFuIGludGVyYWN0aW9uIGluIHRo
ZSAnaW50ZXJhY3Rpb25zJyBwYXJhbWV0ZXIgaGFzIGFuIGludmFsaWQgJ2tleScgdmFsdWUuIik7
CiAKICAgICAgICAgICAgIGFjdGlvbnNUb1BlcmZvcm0udW5jaGVja2VkQXBwZW5kKFt0aGlzLCBw
YWdlLCBpbnRlcmFjdGlvblR5cGUsIHZpcnR1YWxLZXldIHsKLSAgICAgICAgICAgICAgICBwbGF0
Zm9ybVNpbXVsYXRlS2V5U3Ryb2tlKCpwYWdlLCBpbnRlcmFjdGlvblR5cGUudmFsdWUoKSwgdmly
dHVhbEtleS52YWx1ZSgpKTsKKyAgICAgICAgICAgICAgICBwbGF0Zm9ybVNpbXVsYXRlS2V5Ym9h
cmRJbnRlcmFjdGlvbigqcGFnZSwgaW50ZXJhY3Rpb25UeXBlLnZhbHVlKCksIHZpcnR1YWxLZXks
IHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQogCkBAIC0xNTQwLDE0
ICsxNjM5LDE2MyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwZXJmb3JtS2V5Ym9hcmRJ
bnRlcmFjdGlvbnMoY29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbgogICAgICAgICBjYWxsYmFja0lu
TWFwKEFVVE9NQVRJT05fQ09NTUFORF9FUlJPUl9XSVRIX05BTUUoVGltZW91dCkpOwogICAgIGNh
bGxiYWNrSW5NYXAgPSBXVEZNb3ZlKGtleWJvYXJkRXZlbnRzRmx1c2hlZENhbGxiYWNrKTsKIAot
ICAgIC8vIFRoaXMgaXMgY2xlYXJlZCB3aGVuIGFsbCBrZXlib2FyZCBldmVudHMgYXJlIGZsdXNo
ZWQuCi0gICAgbV9zaW11bGF0aW5nVXNlckludGVyYWN0aW9uID0gdHJ1ZTsKLQogICAgIGZvciAo
YXV0byYgYWN0aW9uIDogYWN0aW9uc1RvUGVyZm9ybSkKICAgICAgICAgYWN0aW9uKCk7CiAjZW5k
aWYgLy8gUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKEdUSykKIH0KIAorc3RhdGljIFNpbXVs
YXRlZElucHV0U291cmNlOjpUeXBlIHNpbXVsYXRlZElucHV0U291cmNlVHlwZUZyb21Qcm90b2Nv
bFNvdXJjZVR5cGUoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6SW5wdXRTb3VyY2VU
eXBlIHByb3RvY29sVHlwZSkKK3sKKyAgICBzd2l0Y2ggKHByb3RvY29sVHlwZSkgeworICAgIGNh
c2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6SW5wdXRTb3VyY2VUeXBlOjpOdWxs
OgorICAgICAgICByZXR1cm4gU2ltdWxhdGVkSW5wdXRTb3VyY2U6OlR5cGU6Ok51bGw7CisgICAg
Y2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpJbnB1dFNvdXJjZVR5cGU6Oktl
eWJvYXJkOgorICAgICAgICByZXR1cm4gU2ltdWxhdGVkSW5wdXRTb3VyY2U6OlR5cGU6OktleWJv
YXJkOworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6SW5wdXRTb3Vy
Y2VUeXBlOjpNb3VzZToKKyAgICAgICAgcmV0dXJuIFNpbXVsYXRlZElucHV0U291cmNlOjpUeXBl
OjpNb3VzZTsKKyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OklucHV0
U291cmNlVHlwZTo6VG91Y2g6CisgICAgICAgIHJldHVybiBTaW11bGF0ZWRJbnB1dFNvdXJjZTo6
VHlwZTo6VG91Y2g7CisgICAgfQorfQorCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwZXJm
b3JtSW50ZXJhY3Rpb25TZXF1ZW5jZShjb25zdCBTdHJpbmcmIGhhbmRsZSwgY29uc3QgSlNPTjo6
QXJyYXkmIGlucHV0U291cmNlcywgY29uc3QgSlNPTjo6QXJyYXkmIHN0ZXBzLCBSZWY8V2ViQXV0
b21hdGlvblNlc3Npb246OlBlcmZvcm1JbnRlcmFjdGlvblNlcXVlbmNlQ2FsbGJhY2s+JiYgY2Fs
bGJhY2spCit7CisgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gd2ViUGFnZVByb3h5Rm9ySGFuZGxl
KGhhbmRsZSk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVG
SU5FRF9FUlJPUihXaW5kb3dOb3RGb3VuZCk7CisKKyAgICBIYXNoTWFwPFN0cmluZywgUmVmPFNp
bXVsYXRlZElucHV0U291cmNlPj4gc291cmNlSWRUb0lucHV0U291cmNlTWFwOworICAgIEhhc2hN
YXA8U2ltdWxhdGVkSW5wdXRTb3VyY2U6OlR5cGUsIFN0cmluZywgV1RGOjpJbnRIYXNoPFNpbXVs
YXRlZElucHV0U291cmNlOjpUeXBlPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxTaW11bGF0
ZWRJbnB1dFNvdXJjZTo6VHlwZT4+IHR5cGVUb1NvdXJjZUlkTWFwOworCisgICAgaWYgKCFpbnB1
dFNvdXJjZXMubGVuZ3RoKCkpCisgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VS
Uk9SX0FORF9ERVRBSUxTKEludmFsaWRQYXJhbWV0ZXIsICJUaGUgcGFyYW1ldGVyICdpbnB1dFNv
dXJjZXMnIHdhcyBub3QgZm91bmQgb3IgZW1wdHkuIik7CisKKyAgICBmb3IgKGF1dG8gaW5wdXRT
b3VyY2UgOiBpbnB1dFNvdXJjZXMpIHsKKyAgICAgICAgUmVmUHRyPEpTT046Ok9iamVjdD4gaW5w
dXRTb3VyY2VPYmplY3Q7CisgICAgICAgIGlmICghaW5wdXRTb3VyY2UtPmFzT2JqZWN0KGlucHV0
U291cmNlT2JqZWN0KSkKKyAgICAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VS
Uk9SX0FORF9ERVRBSUxTKEludmFsaWRQYXJhbWV0ZXIsICJBbiBpbnB1dCBzb3VyY2UgaW4gdGhl
ICdpbnB1dFNvdXJjZXMnIHBhcmFtZXRlciB3YXMgaW52YWxpZC4iKTsKKyAgICAgICAgCisgICAg
ICAgIFN0cmluZyBzb3VyY2VJZDsKKyAgICAgICAgaWYgKCFpbnB1dFNvdXJjZU9iamVjdC0+Z2V0
U3RyaW5nKEFTQ0lJTGl0ZXJhbCgic291cmNlSWQiKSwgc291cmNlSWQpKQorICAgICAgICAgICAg
QVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxpZFBhcmFt
ZXRlciwgIkFuIGlucHV0IHNvdXJjZSBpbiB0aGUgJ2lucHV0U291cmNlcycgcGFyYW1ldGVyIGlz
IG1pc3NpbmcgYSAnc291cmNlSWQnLiIpOworCisgICAgICAgIFN0cmluZyBzb3VyY2VUeXBlOwor
ICAgICAgICBpZiAoIWlucHV0U291cmNlT2JqZWN0LT5nZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJz
b3VyY2VUeXBlIiksIHNvdXJjZVR5cGUpKQorICAgICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BS
RURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxpZFBhcmFtZXRlciwgIkFuIGlucHV0IHNv
dXJjZSBpbiB0aGUgJ2lucHV0U291cmNlcycgcGFyYW1ldGVyIGlzIG1pc3NpbmcgYSAnc291cmNl
VHlwZScuIik7CisKKyAgICAgICAgYXV0byBwYXJzZWRJbnB1dFNvdXJjZVR5cGUgPSBJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5n
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OklucHV0U291cmNlVHlwZT4oc291cmNl
VHlwZSk7CisgICAgICAgIGlmICghcGFyc2VkSW5wdXRTb3VyY2VUeXBlKQorICAgICAgICAgICAg
QVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxpZFBhcmFt
ZXRlciwgIkFuIGlucHV0IHNvdXJjZSBpbiB0aGUgJ2lucHV0U291cmNlcycgcGFyYW1ldGVyIGhh
cyBhbiBpbnZhbGlkICdzb3VyY2VUeXBlJy4iKTsKKworICAgICAgICBTaW11bGF0ZWRJbnB1dFNv
dXJjZTo6VHlwZSBpbnB1dFNvdXJjZVR5cGUgPSBzaW11bGF0ZWRJbnB1dFNvdXJjZVR5cGVGcm9t
UHJvdG9jb2xTb3VyY2VUeXBlKCpwYXJzZWRJbnB1dFNvdXJjZVR5cGUpOworICAgICAgICBpZiAo
aW5wdXRTb3VyY2VUeXBlID09IFNpbXVsYXRlZElucHV0U291cmNlOjpUeXBlOjpUb3VjaCkKKyAg
ICAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKE5v
dEltcGxlbWVudGVkLCAiVG91Y2ggaW5wdXQgc291cmNlcyBhcmUgbm90IHlldCBzdXBwb3J0ZWQu
Iik7CisKKyAgICAgICAgaWYgKHR5cGVUb1NvdXJjZUlkTWFwLmNvbnRhaW5zKGlucHV0U291cmNl
VHlwZSkpCisgICAgICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9BTkRf
REVUQUlMUyhJbnZhbGlkUGFyYW1ldGVyLCAiVHdvIGlucHV0IHNvdXJjZXMgd2l0aCB0aGUgc2Ft
ZSB0eXBlIHdlcmUgc3BlY2lmaWVkLiIpOworICAgICAgICBpZiAoc291cmNlSWRUb0lucHV0U291
cmNlTWFwLmNvbnRhaW5zKHNvdXJjZUlkKSkKKyAgICAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9Q
UkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKEludmFsaWRQYXJhbWV0ZXIsICJUd28gaW5wdXQg
c291cmNlcyB3aXRoIHRoZSBzYW1lIHNvdXJjZUlkIHdlcmUgc3BlY2lmaWVkLiIpOworCisgICAg
ICAgIHR5cGVUb1NvdXJjZUlkTWFwLmFkZChpbnB1dFNvdXJjZVR5cGUsIHNvdXJjZUlkKTsKKyAg
ICAgICAgc291cmNlSWRUb0lucHV0U291cmNlTWFwLmFkZChzb3VyY2VJZCwgKmlucHV0U291cmNl
Rm9yVHlwZShpbnB1dFNvdXJjZVR5cGUpKTsKKyAgICB9CisKKyAgICBWZWN0b3I8U2ltdWxhdGVk
SW5wdXRLZXlGcmFtZT4ga2V5RnJhbWVzOworCisgICAgaWYgKCFzdGVwcy5sZW5ndGgoKSkKKyAg
ICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxp
ZFBhcmFtZXRlciwgIlRoZSBwYXJhbWV0ZXIgJ3N0ZXBzJyB3YXMgbm90IGZvdW5kIG9yIGVtcHR5
LiIpOworCisgICAgZm9yIChhdXRvIHN0ZXAgOiBzdGVwcykgeworICAgICAgICBSZWZQdHI8SlNP
Tjo6T2JqZWN0PiBzdGVwT2JqZWN0OworICAgICAgICBpZiAoIXN0ZXAtPmFzT2JqZWN0KHN0ZXBP
YmplY3QpKQorICAgICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5E
X0RFVEFJTFMoSW52YWxpZFBhcmFtZXRlciwgIkEgc3RlcCBpbiB0aGUgJ3N0ZXBzJyBwYXJhbWV0
ZXIgd2FzIG5vdCBhbiBvYmplY3QuIik7CisKKyAgICAgICAgUmVmUHRyPEpTT046OkFycmF5PiBz
dGVwU3RhdGVzOworICAgICAgICBpZiAoIXN0ZXBPYmplY3QtPmdldEFycmF5KEFTQ0lJTGl0ZXJh
bCgic3RhdGVzIiksIHN0ZXBTdGF0ZXMpKQorICAgICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BS
RURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxpZFBhcmFtZXRlciwgIkEgc3RlcCBpcyBt
aXNzaW5nIHRoZSAnc3RhdGVzJyBwcm9wZXJ0eS4iKTsKKworICAgICAgICBWZWN0b3I8U2ltdWxh
dGVkSW5wdXRLZXlGcmFtZTo6U3RhdGVFbnRyeT4gZW50cmllczsKKyAgICAgICAgZW50cmllcy5y
ZXNlcnZlQ2FwYWNpdHkoc3RlcFN0YXRlcy0+bGVuZ3RoKCkpOworCisgICAgICAgIGZvciAoYXV0
byBzdGF0ZSA6ICpzdGVwU3RhdGVzKSB7CisgICAgICAgICAgICBSZWZQdHI8SlNPTjo6T2JqZWN0
PiBzdGF0ZU9iamVjdDsKKyAgICAgICAgICAgIGlmICghc3RhdGUtPmFzT2JqZWN0KHN0YXRlT2Jq
ZWN0KSkKKyAgICAgICAgICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9B
TkRfREVUQUlMUyhJbnZhbGlkUGFyYW1ldGVyLCAiRW5jb3VudGVyZWQgYSBub24tb2JqZWN0IHN0
ZXAgc3RhdGUuIik7CisKKyAgICAgICAgICAgIFN0cmluZyBzb3VyY2VJZDsKKyAgICAgICAgICAg
IGlmICghc3RhdGVPYmplY3QtPmdldFN0cmluZyhBU0NJSUxpdGVyYWwoInNvdXJjZUlkIiksIHNv
dXJjZUlkKSkKKyAgICAgICAgICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJP
Ul9BTkRfREVUQUlMUyhJbnZhbGlkUGFyYW1ldGVyLCAiU3RlcCBzdGF0ZSBsYWNrcyByZXF1aXJl
ZCAnc291cmNlSWQnIHByb3BlcnR5LiIpOworCisgICAgICAgICAgICBpZiAoIXNvdXJjZUlkVG9J
bnB1dFNvdXJjZU1hcC5jb250YWlucyhzb3VyY2VJZCkpCisgICAgICAgICAgICAgICAgQVNZTkNf
RkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxpZFBhcmFtZXRlciwg
IlVua25vd24gJ3NvdXJjZUlkJyBzcGVjaWZpZWQuIik7CisKKyAgICAgICAgICAgIFNpbXVsYXRl
ZElucHV0U291cmNlJiBpbnB1dFNvdXJjZSA9ICpzb3VyY2VJZFRvSW5wdXRTb3VyY2VNYXAuZ2V0
KHNvdXJjZUlkKTsKKyAgICAgICAgICAgIFNpbXVsYXRlZElucHV0U291cmNlU3RhdGUgc291cmNl
U3RhdGUgeyB9OworCisgICAgICAgICAgICBTdHJpbmcgcHJlc3NlZENoYXJLZXlTdHJpbmc7Cisg
ICAgICAgICAgICBpZiAoc3RhdGVPYmplY3QtPmdldFN0cmluZyhBU0NJSUxpdGVyYWwoInByZXNz
ZWRDaGFyS2V5IiksIHByZXNzZWRDaGFyS2V5U3RyaW5nKSkKKyAgICAgICAgICAgICAgICBzb3Vy
Y2VTdGF0ZS5wcmVzc2VkQ2hhcktleSA9IHByZXNzZWRDaGFyS2V5U3RyaW5nLmNoYXJhY3RlckF0
KDApOworCisgICAgICAgICAgICBTdHJpbmcgcHJlc3NlZFZpcnR1YWxLZXlTdHJpbmc7CisgICAg
ICAgICAgICBpZiAoc3RhdGVPYmplY3QtPmdldFN0cmluZyhBU0NJSUxpdGVyYWwoInByZXNzZWRW
aXJ0dWFsS2V5IiksIHByZXNzZWRWaXJ0dWFsS2V5U3RyaW5nKSkKKyAgICAgICAgICAgICAgICBz
b3VyY2VTdGF0ZS5wcmVzc2VkVmlydHVhbEtleSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9t
YXRpb25IZWxwZXJzOjpwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXV0b21hdGlvbjo6VmlydHVhbEtleT4ocHJlc3NlZFZpcnR1YWxLZXlTdHJpbmcpOworCisg
ICAgICAgICAgICBTdHJpbmcgcHJlc3NlZEJ1dHRvblN0cmluZzsKKyAgICAgICAgICAgIGlmIChz
dGF0ZU9iamVjdC0+Z2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgicHJlc3NlZEJ1dHRvbiIpLCBwcmVz
c2VkQnV0dG9uU3RyaW5nKSkgeworICAgICAgICAgICAgICAgIGF1dG8gcHJvdG9jb2xCdXR0b24g
PSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6cGFyc2VFbnVtVmFsdWVG
cm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9uPihw
cmVzc2VkQnV0dG9uU3RyaW5nKTsKKyAgICAgICAgICAgICAgICBzb3VyY2VTdGF0ZS5wcmVzc2Vk
TW91c2VCdXR0b24gPSBwcm90b2NvbE1vdXNlQnV0dG9uVG9XZWJNb3VzZUV2ZW50QnV0dG9uKHBy
b3RvY29sQnV0dG9uLnZhbHVlX29yKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1v
dXNlQnV0dG9uOjpOb25lKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFJlZlB0cjxK
U09OOjpPYmplY3Q+IGxvY2F0aW9uT2JqZWN0OworICAgICAgICAgICAgaWYgKHN0YXRlT2JqZWN0
LT5nZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJsb2NhdGlvbiIpLCBsb2NhdGlvbk9iamVjdCkpIHsK
KyAgICAgICAgICAgICAgICBpbnQgeCwgeTsKKyAgICAgICAgICAgICAgICBpZiAobG9jYXRpb25P
YmplY3QtPmdldEludGVnZXIoQVNDSUlMaXRlcmFsKCJ4IiksIHgpICYmIGxvY2F0aW9uT2JqZWN0
LT5nZXRJbnRlZ2VyKEFTQ0lJTGl0ZXJhbCgieSIpLCB5KSkKKyAgICAgICAgICAgICAgICAgICAg
c291cmNlU3RhdGUubG9jYXRpb24gPSBXZWJDb3JlOjpJbnRQb2ludCh4LCB5KTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgaW50IHBhcnNlZER1cmF0aW9uOworICAgICAgICAgICAgaWYg
KHN0YXRlT2JqZWN0LT5nZXRJbnRlZ2VyKEFTQ0lJTGl0ZXJhbCgiZHVyYXRpb24iKSwgcGFyc2Vk
RHVyYXRpb24pKQorICAgICAgICAgICAgICAgIHNvdXJjZVN0YXRlLmR1cmF0aW9uID0gU2Vjb25k
czo6ZnJvbU1pbGxpc2Vjb25kcyhwYXJzZWREdXJhdGlvbik7CisKKyAgICAgICAgICAgIGVudHJp
ZXMudW5jaGVja2VkQXBwZW5kKHN0ZDo6cGFpcjxTaW11bGF0ZWRJbnB1dFNvdXJjZSYsIFNpbXVs
YXRlZElucHV0U291cmNlU3RhdGU+IHsgaW5wdXRTb3VyY2UsIHNvdXJjZVN0YXRlIH0pOworICAg
ICAgICB9CisgICAgICAgIAorICAgICAgICBrZXlGcmFtZXMuYXBwZW5kKFNpbXVsYXRlZElucHV0
S2V5RnJhbWUoV1RGTW92ZShlbnRyaWVzKSkpOworICAgIH0KKworICAgIFNpbXVsYXRlZElucHV0
RGlzcGF0Y2hlciYgaW5wdXREaXNwYXRjaGVyID0gaW5wdXREaXNwYXRjaGVyRm9yUGFnZSgqcGFn
ZSk7CisgICAgaWYgKGlucHV0RGlzcGF0Y2hlci5pc0FjdGl2ZSgpKSB7CisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJP
Ul9BTkRfREVUQUlMUyhJbnRlcm5hbEVycm9yLCAiQSBwcmV2aW91cyBpbnRlcmFjdGlvbiBpcyBz
dGlsbCB1bmRlcndheS4iKTsKKyAgICB9CisKKyAgICBpbnB1dERpc3BhdGNoZXIucnVuKFdURk1v
dmUoa2V5RnJhbWVzKSwgbV9pbnB1dFNvdXJjZXMsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKHN0ZDo6b3B0aW9uYWw8
QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4gZXJyb3IpIHsKKyAgICAgICAgaWYgKGVycm9yKQorICAg
ICAgICAgICAgY2FsbGJhY2stPnNlbmRGYWlsdXJlKGVycm9yLnZhbHVlKCkudG9Qcm90b2NvbFN0
cmluZygpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY2FsbGJhY2stPnNlbmRTdWNjZXNz
KCk7CisgICAgfSk7Cit9CisKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmNhbmNlbEludGVy
YWN0aW9uU2VxdWVuY2UoY29uc3QgU3RyaW5nJiBoYW5kbGUsIFJlZjxDYW5jZWxJbnRlcmFjdGlv
blNlcXVlbmNlQ2FsbGJhY2s+JiYgY2FsbGJhY2spCit7CisgICAgV2ViUGFnZVByb3h5KiBwYWdl
ID0gd2ViUGFnZVByb3h5Rm9ySGFuZGxlKGhhbmRsZSk7CisgICAgaWYgKCFwYWdlKQorICAgICAg
ICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihXaW5kb3dOb3RGb3VuZCk7CisKKyAg
ICBWZWN0b3I8U2ltdWxhdGVkSW5wdXRLZXlGcmFtZT4ga2V5RnJhbWVzKHsgU2ltdWxhdGVkSW5w
dXRLZXlGcmFtZTo6a2V5RnJhbWVUb1Jlc2V0SW5wdXRTb3VyY2VzKG1faW5wdXRTb3VyY2VzKSB9
KTsKKyAgICBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXImIGlucHV0RGlzcGF0Y2hlciA9IGlucHV0
RGlzcGF0Y2hlckZvclBhZ2UoKnBhZ2UpOworICAgIGlmIChpbnB1dERpc3BhdGNoZXIuaXNBY3Rp
dmUoKSkKKyAgICAgICAgaW5wdXREaXNwYXRjaGVyLmNhbmNlbCgpOworICAgIAorICAgIGlucHV0
RGlzcGF0Y2hlci5ydW4oV1RGTW92ZShrZXlGcmFtZXMpLCBtX2lucHV0U291cmNlcywgW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKV0oc3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPiBlcnJvcikgeworICAg
ICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICBjYWxsYmFjay0+c2VuZEZhaWx1cmUoZXJyb3Iu
dmFsdWUoKS50b1Byb3RvY29sU3RyaW5nKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBj
YWxsYmFjay0+c2VuZFN1Y2Nlc3MoKTsKKyAgICB9KTsKK30KKwogdm9pZCBXZWJBdXRvbWF0aW9u
U2Vzc2lvbjo6dGFrZVNjcmVlbnNob3QoY29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbnN0IFN0cmlu
Zyogb3B0aW9uYWxGcmFtZUhhbmRsZSwgY29uc3QgU3RyaW5nKiBvcHRpb25hbE5vZGVIYW5kbGUs
IGNvbnN0IGJvb2wqIG9wdGlvbmFsU2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgY29uc3QgYm9vbCog
b3B0aW9uYWxDbGlwVG9WaWV3cG9ydCwgUmVmPFRha2VTY3JlZW5zaG90Q2FsbGJhY2s+JiYgY2Fs
bGJhY2spCiB7CiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gd2ViUGFnZVByb3h5Rm9ySGFuZGxl
KGhhbmRsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9u
L1dlYkF1dG9tYXRpb25TZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0
aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmgKaW5kZXggM2FlMzVlNmY3ZWNkYzU4YTNkZDk1ZTk4
MDgwZWY0YTMyOTVjYTcxOS4uNGQyNDhjYzkxMDJmZDMyNDU5Yzk1MDUyYWQ2Y2FlMGYzM2IyZTE2
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRv
bWF0aW9uU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24v
V2ViQXV0b21hdGlvblNlc3Npb24uaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkF1dG9t
YXRpb25Gcm9udGVuZERpc3BhdGNoZXJzLmgiCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2lu
Y2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgorI2luY2x1ZGUgIlNpbXVsYXRlZElucHV0RGlzcGF0
Y2hlci5oIgogI2luY2x1ZGUgIldlYkV2ZW50LmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25I
YW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTc2LDcgKzc3LDcgQEAgY2xh
c3MgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eTsKIGNsYXNzIFdlYlBhZ2VQcm94eTsK
IGNsYXNzIFdlYlByb2Nlc3NQb29sOwogCi1zdHJ1Y3QgQXV0b21hdGlvbkNvbW1hbmRFcnJvciB7
CitjbGFzcyBBdXRvbWF0aW9uQ29tbWFuZEVycm9yIHsKIHB1YmxpYzoKICAgICBJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2UgdHlwZTsKICAgICBzdGQ6Om9wdGlv
bmFsPFN0cmluZz4gbWVzc2FnZSB7IHN0ZDo6bnVsbG9wdCB9OwpAQCAtOTEsMTEgKzkyLDE0IEBA
IHB1YmxpYzoKICAgICBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZygpOwogfTsKIAordXNpbmcgQXV0
b21hdGlvbkNvbXBsZXRpb25IYW5kbGVyID0gV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0
ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4pPjsKKwogY2xhc3MgV2ViQXV0b21h
dGlvblNlc3Npb24gZmluYWwgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpU
eXBlOjpBdXRvbWF0aW9uU2Vzc2lvbj4sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogI2lm
IEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogICAgICwgcHVibGljIEluc3BlY3Rvcjo6UmVtb3Rl
QXV0b21hdGlvblRhcmdldAogI2VuZGlmCiAgICAgLCBwdWJsaWMgSW5zcGVjdG9yOjpBdXRvbWF0
aW9uQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyCisgICAgLCBwdWJsaWMgU2ltdWxhdGVkSW5wdXRE
aXNwYXRjaGVyOjpDbGllbnQKIHsKIHB1YmxpYzoKICAgICBXZWJBdXRvbWF0aW9uU2Vzc2lvbigp
OwpAQCAtMTMxLDYgKzEzNSwxMCBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB2b2lkIHRlcm1pbmF0
ZSgpOwogCisgICAgLy8gU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjpDbGllbnQgQVBJCisgICAg
dm9pZCBzaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiwgTW91c2VJbnRlcmFj
dGlvbiwgV2ViTW91c2VFdmVudDo6QnV0dG9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbG9j
YXRpb25JblZpZXcsIEF1dG9tYXRpb25Db21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKKyAgICB2
b2lkIHNpbXVsYXRlS2V5Ym9hcmRJbnRlcmFjdGlvbihXZWJQYWdlUHJveHkmLCBLZXlib2FyZElu
dGVyYWN0aW9uLCBzdGQ6Om9wdGlvbmFsPFZpcnR1YWxLZXk+LCBzdGQ6Om9wdGlvbmFsPENoYXJL
ZXk+LCBBdXRvbWF0aW9uQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CisKICAgICAvLyBJbnNw
ZWN0b3I6OkF1dG9tYXRpb25CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgQVBJCiAgICAgLy8gTk9U
RTogdGhlIHNldCBvZiBkZWNsYXJhdGlvbnMgaW5jbHVkZWQgaW4gdGhpcyBpbnRlcmZhY2UgZGVw
ZW5kIG9uIHRoZSAicGxhdGZvcm0iIHByb3BlcnR5IGluIEF1dG9tYXRpb24uanNvbgogICAgIC8v
IGFuZCB0aGUgLS1wbGF0Zm9ybSBhcmd1bWVudCBwYXNzZWQgdG8gdGhlIHByb3RvY29sIGJpbmRp
bmdzIGdlbmVyYXRvci4KQEAgLTE1MSw2ICsxNTksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBldmFs
dWF0ZUphdmFTY3JpcHRGdW5jdGlvbihjb25zdCBTdHJpbmcmIGJyb3dzaW5nQ29udGV4dEhhbmRs
ZSwgY29uc3QgU3RyaW5nKiBvcHRpb25hbEZyYW1lSGFuZGxlLCBjb25zdCBTdHJpbmcmIGZ1bmN0
aW9uLCBjb25zdCBKU09OOjpBcnJheSYgYXJndW1lbnRzLCBjb25zdCBib29sKiBvcHRpb25hbEV4
cGVjdHNJbXBsaWNpdENhbGxiYWNrQXJndW1lbnQsIGNvbnN0IGludCogb3B0aW9uYWxDYWxsYmFj
a1RpbWVvdXQsIFJlZjxJbnNwZWN0b3I6OkF1dG9tYXRpb25CYWNrZW5kRGlzcGF0Y2hlckhhbmRs
ZXI6OkV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uQ2FsbGJhY2s+JiYpIG92ZXJyaWRlOwogICAg
IHZvaWQgcGVyZm9ybU1vdXNlSW50ZXJhY3Rpb24oY29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbnN0
IEpTT046Ok9iamVjdCYgcmVxdWVzdGVkUG9zaXRpb24sIGNvbnN0IFN0cmluZyYgbW91c2VCdXR0
b24sIGNvbnN0IFN0cmluZyYgbW91c2VJbnRlcmFjdGlvbiwgY29uc3QgSlNPTjo6QXJyYXkmIGtl
eU1vZGlmaWVycywgUmVmPFBlcmZvcm1Nb3VzZUludGVyYWN0aW9uQ2FsbGJhY2s+JiYpIGZpbmFs
OwogICAgIHZvaWQgcGVyZm9ybUtleWJvYXJkSW50ZXJhY3Rpb25zKGNvbnN0IFN0cmluZyYgaGFu
ZGxlLCBjb25zdCBKU09OOjpBcnJheSYgaW50ZXJhY3Rpb25zLCBSZWY8UGVyZm9ybUtleWJvYXJk
SW50ZXJhY3Rpb25zQ2FsbGJhY2s+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgcGVyZm9ybUludGVy
YWN0aW9uU2VxdWVuY2UoY29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbnN0IEpTT046OkFycmF5JiBz
b3VyY2VzLCBjb25zdCBKU09OOjpBcnJheSYgc3RlcHMsIFJlZjxQZXJmb3JtSW50ZXJhY3Rpb25T
ZXF1ZW5jZUNhbGxiYWNrPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNhbmNlbEludGVyYWN0aW9u
U2VxdWVuY2UoY29uc3QgU3RyaW5nJiBoYW5kbGUsIFJlZjxDYW5jZWxJbnRlcmFjdGlvblNlcXVl
bmNlQ2FsbGJhY2s+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgdGFrZVNjcmVlbnNob3QoY29uc3Qg
U3RyaW5nJiBoYW5kbGUsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxGcmFtZUhhbmRsZSwgY29uc3Qg
U3RyaW5nKiBvcHRpb25hbE5vZGVIYW5kbGUsIGNvbnN0IGJvb2wqIG9wdGlvbmFsU2Nyb2xsSW50
b1ZpZXdJZk5lZWRlZCwgY29uc3QgYm9vbCogb3B0aW9uYWxDbGlwVG9WaWV3cG9ydCwgUmVmPFRh
a2VTY3JlZW5zaG90Q2FsbGJhY2s+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVzb2x2ZUNoaWxk
RnJhbWVIYW5kbGUoY29uc3QgU3RyaW5nJiBicm93c2luZ0NvbnRleHRIYW5kbGUsIGNvbnN0IFN0
cmluZyogb3B0aW9uYWxGcmFtZUhhbmRsZSwgY29uc3QgaW50KiBvcHRpb25hbE9yZGluYWwsIGNv
bnN0IFN0cmluZyogb3B0aW9uYWxOYW1lLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsTm9kZUhhbmRs
ZSwgUmVmPFJlc29sdmVDaGlsZEZyYW1lSGFuZGxlQ2FsbGJhY2s+JiYpIG92ZXJyaWRlOwogICAg
IHZvaWQgcmVzb2x2ZVBhcmVudEZyYW1lSGFuZGxlKGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250
ZXh0SGFuZGxlLCBjb25zdCBTdHJpbmcmIGZyYW1lSGFuZGxlLCBSZWY8UmVzb2x2ZVBhcmVudEZy
YW1lSGFuZGxlQ2FsbGJhY2s+JiYpIG92ZXJyaWRlOwpAQCAtMTc1LDcgKzE4NSwxMCBAQCBwdWJs
aWM6CiAjZW5kaWYKIAogICAgIC8vIEV2ZW50IFNpbXVsYXRpb24gU3VwcG9ydC4KLSAgICBib29s
IGlzU2ltdWxhdGluZ1VzZXJJbnRlcmFjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2ltdWxhdGlu
Z1VzZXJJbnRlcmFjdGlvbjsgfQorICAgIGJvb2wgaXNTaW11bGF0aW5nVXNlckludGVyYWN0aW9u
KCkgY29uc3Q7CisgICAgU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyJiBpbnB1dERpc3BhdGNoZXJG
b3JQYWdlKFdlYlBhZ2VQcm94eSYpOworICAgIFNpbXVsYXRlZElucHV0U291cmNlKiBpbnB1dFNv
dXJjZUZvclR5cGUoU2ltdWxhdGVkSW5wdXRTb3VyY2U6OlR5cGUpIGNvbnN0OworCiAjaWYgUExB
VEZPUk0oTUFDKQogICAgIGJvb2wgd2FzRXZlbnRTeW50aGVzaXplZEZvckF1dG9tYXRpb24oTlNF
dmVudCAqKTsKICAgICB2b2lkIG1hcmtFdmVudEFzU3ludGhlc2l6ZWRGb3JBdXRvbWF0aW9uKE5T
RXZlbnQgKik7CkBAIC0yMTUsOSArMjI4LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZERlbGV0
ZUNvb2tpZSh1aW50NjRfdCBjYWxsYmFja0lELCBjb25zdCBTdHJpbmcmIGVycm9yVHlwZSk7CiAK
ICAgICAvLyBQbGF0Zm9ybS1kZXBlbmRlbnQgaW1wbGVtZW50YXRpb25zLgotICAgIHZvaWQgcGxh
dGZvcm1TaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiwgY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmIHZpZXdQb3NpdGlvbiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlv
bjo6TW91c2VJbnRlcmFjdGlvbiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91
c2VCdXR0b24sIFdlYkV2ZW50OjpNb2RpZmllcnMpOwotICAgIC8vIFNpbXVsYXRlcyBhIHNpbmds
ZSB2aXJ0dWFsIGtleSBiZWluZyBwcmVzc2VkLCBzdWNoIGFzIENvbnRyb2wsIEYta2V5cywgTnVt
cGFkIGtleXMsIGV0Yy4gYXMgYWxsb3dlZCBieSB0aGUgcHJvdG9jb2wuCi0gICAgdm9pZCBwbGF0
Zm9ybVNpbXVsYXRlS2V5U3Ryb2tlKFdlYlBhZ2VQcm94eSYsIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkF1dG9tYXRpb246OktleWJvYXJkSW50ZXJhY3Rpb25UeXBlLCBJbnNwZWN0b3I6OlByb3RvY29s
OjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5KTsKKyAgICB2b2lkIHBsYXRmb3JtU2ltdWxhdGVNb3Vz
ZUludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYsIE1vdXNlSW50ZXJhY3Rpb24sIFdlYk1vdXNlRXZl
bnQ6OkJ1dHRvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGxvY2F0aW9uSW5WaWV3LCBXZWJF
dmVudDo6TW9kaWZpZXJzIGtleU1vZGlmaWVycyk7CisgICAgLy8gU2ltdWxhdGVzIGEgc2luZ2xl
IHZpcnR1YWwgb3IgY2hhciBrZXkgYmVpbmcgcHJlc3NlZC9yZWxlYXNlZCwgc3VjaCBhcyAnYScs
IENvbnRyb2wsIEYta2V5cywgTnVtcGFkIGtleXMsIGV0Yy4gYXMgYWxsb3dlZCBieSB0aGUgcHJv
dG9jb2wuCisgICAgdm9pZCBwbGF0Zm9ybVNpbXVsYXRlS2V5Ym9hcmRJbnRlcmFjdGlvbihXZWJQ
YWdlUHJveHkmLCBLZXlib2FyZEludGVyYWN0aW9uLCBzdGQ6Om9wdGlvbmFsPFZpcnR1YWxLZXk+
LCBzdGQ6Om9wdGlvbmFsPENoYXJLZXk+KTsKICAgICAvLyBTaW11bGF0ZXMga2V5IHByZXNzZXMg
dG8gcHJvZHVjZSB0aGUgY29kZXBvaW50cyBpbiBhIHN0cmluZy4gT25lIG9yIG1vcmUgY29kZSBw
b2ludHMgYXJlIGRlbGl2ZXJlZCBhdG9taWNhbGx5IGF0IGdyYXBoZW1lIGNsdXN0ZXIgYm91bmRh
cmllcy4KICAgICB2b2lkIHBsYXRmb3JtU2ltdWxhdGVLZXlTZXF1ZW5jZShXZWJQYWdlUHJveHkm
LCBjb25zdCBTdHJpbmcmKTsKICAgICAvLyBHZXQgYmFzZTY0IGVuY29kZWQgUE5HIGRhdGEgZnJv
bSBhIGJpdG1hcC4KQEAgLTI4OSwxMyArMzAyLDE1IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1f
cGVybWlzc2lvbkZvckdldFVzZXJNZWRpYSB7IHRydWUgfTsKIAotICAgIC8vIFRydWUgaWYgYSBz
eW50aGVzaXplZCBrZXkgZXZlbnQgaXMgc3RpbGwgYmVpbmcgcHJvY2Vzc2VkLgotICAgIGJvb2wg
bV9zaW11bGF0aW5nVXNlckludGVyYWN0aW9uIHsgZmFsc2UgfTsKLQogICAgIC8vIEtlZXAgdHJh
Y2sgb2YgY3VycmVudGx5IGFjdGl2ZSBtb2RpZmllcnMgYWNyb3NzIG11bHRpcGxlIGtleXN0cm9r
ZXMuCiAgICAgLy8gTW9zdCBwbGF0Zm9ybXMgZG8gbm90IHRyYWNrIGN1cnJlbnQgbW9kaWZpZXJz
IGZyb20gc3ludGhlc2l6ZWQgZXZlbnRzLgogICAgIHVuc2lnbmVkIG1fY3VycmVudE1vZGlmaWVy
cyB7IDAgfTsKIAorICAgIC8vIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlciBBUElzIHRha2UgYSBz
ZXQgb2YgaW5wdXQgc291cmNlcy4gV2UgYWxzbyBpbnRlcm4gdGhlc2UKKyAgICAvLyBzbyB0aGF0
IHByZXZpb3VzIGlucHV0IHNvdXJjZSBzdGF0ZSBpcyB1c2VkIGFzIGluaXRpYWwgc3RhdGUgZm9y
IGxhdGVyIGNvbW1hbmRzLgorICAgIEhhc2hTZXQ8UmVmPFNpbXVsYXRlZElucHV0U291cmNlPj4g
bV9pbnB1dFNvdXJjZXM7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmPFNpbXVsYXRlZElucHV0
RGlzcGF0Y2hlcj4+IG1faW5wdXREaXNwYXRjaGVyc0J5UGFnZTsKKwogI2lmIEVOQUJMRShSRU1P
VEVfSU5TUEVDVE9SKQogICAgIEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBtX3JlbW90ZUNo
YW5uZWwgeyBudWxscHRyIH07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0F1dG9tYXRpb24vZ3RrL1dlYkF1dG9tYXRpb25TZXNzaW9uR3RrLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vZ3RrL1dlYkF1dG9tYXRpb25TZXNzaW9uR3Rr
LmNwcAppbmRleCAyOGNmNzk0OGM4M2I3Y2QxOTJjMDNjMDdhNTJhOTAxZGI2OGRlY2RhLi44YzYy
ODY0ZGUxMmI3YmEzNWEyNjE4YWExMzU5ZmU0ZTAzNGEzZmRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2d0ay9XZWJBdXRvbWF0aW9uU2Vzc2lvbkd0ay5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9ndGsvV2ViQXV0b21h
dGlvblNlc3Npb25HdGsuY3BwCkBAIC00OCwxNSArNDgsMTUgQEAgc3RhdGljIHVuc2lnbmVkIG1v
ZGlmaWVyc1RvRXZlbnRTdGF0ZShXZWJFdmVudDo6TW9kaWZpZXJzIG1vZGlmaWVycykKICAgICBy
ZXR1cm4gc3RhdGU7CiB9CiAKLXN0YXRpYyB1bnNpZ25lZCBtb3VzZUJ1dHRvblRvR2RrQnV0dG9u
KEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9uIGJ1dHRvbikKK3N0
YXRpYyB1bnNpZ25lZCBtb3VzZUJ1dHRvblRvR2RrQnV0dG9uKFdlYk1vdXNlRXZlbnQ6OkJ1dHRv
biBidXR0b24pCiB7CiAgICAgc3dpdGNoIChidXR0b24pIHsKLSAgICBjYXNlIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9uOjpOb25lOgotICAgIGNhc2UgSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VCdXR0b246OkxlZnQ6CisgICAgY2FzZSBX
ZWJNb3VzZUV2ZW50OjpOb0J1dHRvbjoKKyAgICBjYXNlIFdlYk1vdXNlRXZlbnQ6OkxlZnRCdXR0
b246CiAgICAgICAgIHJldHVybiBHREtfQlVUVE9OX1BSSU1BUlk7Ci0gICAgY2FzZSBJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1dHRvbjo6TWlkZGxlOgorICAgIGNhc2Ug
V2ViTW91c2VFdmVudDo6TWlkZGxlQnV0dG9uOgogICAgICAgICByZXR1cm4gR0RLX0JVVFRPTl9N
SURETEU7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1
dHRvbjo6UmlnaHQ6CisgICAgY2FzZSBXZWJNb3VzZUV2ZW50OjpSaWdodEJ1dHRvbjoKICAgICAg
ICAgcmV0dXJuIEdES19CVVRUT05fU0VDT05EQVJZOwogICAgIH0KICAgICByZXR1cm4gR0RLX0JV
VFRPTl9QUklNQVJZOwpAQCAtMTAxLDMwICsxMDEsMzAgQEAgc3RhdGljIHZvaWQgZG9Nb3Rpb25F
dmVudChHdGtXaWRnZXQqIHdpZGdldCwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGxvY2F0aW9u
LAogICAgIGd0a19tYWluX2RvX2V2ZW50KGV2ZW50LmdldCgpKTsKIH0KIAotdm9pZCBXZWJBdXRv
bWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24oV2ViUGFnZVBy
b3h5JiBwYWdlLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgdmlld1Bvc2l0aW9uLCBJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUludGVyYWN0aW9uIGludGVyYWN0aW9uLCBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1dHRvbiBidXR0b24sIFdlYkV2
ZW50OjpNb2RpZmllcnMga2V5TW9kaWZpZXJzKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6
cGxhdGZvcm1TaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBNb3Vz
ZUludGVyYWN0aW9uIGludGVyYWN0aW9uLCBXZWJNb3VzZUV2ZW50OjpCdXR0b24gYnV0dG9uLCBj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbG9jYXRpb25JblZpZXcsIFdlYkV2ZW50OjpNb2RpZmll
cnMga2V5TW9kaWZpZXJzKQogewogICAgIHVuc2lnbmVkIGdka0J1dHRvbiA9IG1vdXNlQnV0dG9u
VG9HZGtCdXR0b24oYnV0dG9uKTsKICAgICB1bnNpZ25lZCBzdGF0ZSA9IG1vZGlmaWVyc1RvRXZl
bnRTdGF0ZShrZXlNb2RpZmllcnMpOwogCiAgICAgc3dpdGNoIChpbnRlcmFjdGlvbikgewotICAg
IGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VJbnRlcmFjdGlvbjo6
TW92ZToKLSAgICAgICAgZG9Nb3Rpb25FdmVudChwYWdlLnZpZXdXaWRnZXQoKSwgdmlld1Bvc2l0
aW9uLCBzdGF0ZSk7CisgICAgY2FzZSBNb3VzZUludGVyYWN0aW9uOjpNb3ZlOgorICAgICAgICBk
b01vdGlvbkV2ZW50KHBhZ2Uudmlld1dpZGdldCgpLCBsb2NhdGlvbkluVmlldywgc3RhdGUpOwog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246
Ok1vdXNlSW50ZXJhY3Rpb246OkRvd246Ci0gICAgICAgIGRvTW91c2VFdmVudChHREtfQlVUVE9O
X1BSRVNTLCBwYWdlLnZpZXdXaWRnZXQoKSwgdmlld1Bvc2l0aW9uLCBnZGtCdXR0b24sIHN0YXRl
KTsKKyAgICBjYXNlIE1vdXNlSW50ZXJhY3Rpb246OkRvd246CisgICAgICAgIGRvTW91c2VFdmVu
dChHREtfQlVUVE9OX1BSRVNTLCBwYWdlLnZpZXdXaWRnZXQoKSwgbG9jYXRpb25JblZpZXcsIGdk
a0J1dHRvbiwgc3RhdGUpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlSW50ZXJhY3Rpb246OlVwOgotICAgICAgICBkb01vdXNl
RXZlbnQoR0RLX0JVVFRPTl9SRUxFQVNFLCBwYWdlLnZpZXdXaWRnZXQoKSwgdmlld1Bvc2l0aW9u
LCBnZGtCdXR0b24sIHN0YXRlKTsKKyAgICBjYXNlIE1vdXNlSW50ZXJhY3Rpb246OlVwOgorICAg
ICAgICBkb01vdXNlRXZlbnQoR0RLX0JVVFRPTl9SRUxFQVNFLCBwYWdlLnZpZXdXaWRnZXQoKSwg
bG9jYXRpb25JblZpZXcsIGdka0J1dHRvbiwgc3RhdGUpOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlSW50ZXJhY3Rpb246OlNp
bmdsZUNsaWNrOgotICAgICAgICBkb01vdXNlRXZlbnQoR0RLX0JVVFRPTl9QUkVTUywgcGFnZS52
aWV3V2lkZ2V0KCksIHZpZXdQb3NpdGlvbiwgZ2RrQnV0dG9uLCBzdGF0ZSk7Ci0gICAgICAgIGRv
TW91c2VFdmVudChHREtfQlVUVE9OX1JFTEVBU0UsIHBhZ2Uudmlld1dpZGdldCgpLCB2aWV3UG9z
aXRpb24sIGdka0J1dHRvbiwgc3RhdGUpOworICAgIGNhc2UgTW91c2VJbnRlcmFjdGlvbjo6U2lu
Z2xlQ2xpY2s6CisgICAgICAgIGRvTW91c2VFdmVudChHREtfQlVUVE9OX1BSRVNTLCBwYWdlLnZp
ZXdXaWRnZXQoKSwgbG9jYXRpb25JblZpZXcsIGdka0J1dHRvbiwgc3RhdGUpOworICAgICAgICBk
b01vdXNlRXZlbnQoR0RLX0JVVFRPTl9SRUxFQVNFLCBwYWdlLnZpZXdXaWRnZXQoKSwgbG9jYXRp
b25JblZpZXcsIGdka0J1dHRvbiwgc3RhdGUpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlSW50ZXJhY3Rpb246OkRvdWJsZUNs
aWNrOgotICAgICAgICBkb01vdXNlRXZlbnQoR0RLX0JVVFRPTl9QUkVTUywgcGFnZS52aWV3V2lk
Z2V0KCksIHZpZXdQb3NpdGlvbiwgZ2RrQnV0dG9uLCBzdGF0ZSk7Ci0gICAgICAgIGRvTW91c2VF
dmVudChHREtfQlVUVE9OX1JFTEVBU0UsIHBhZ2Uudmlld1dpZGdldCgpLCB2aWV3UG9zaXRpb24s
IGdka0J1dHRvbiwgc3RhdGUpOwotICAgICAgICBkb01vdXNlRXZlbnQoR0RLX0JVVFRPTl9QUkVT
UywgcGFnZS52aWV3V2lkZ2V0KCksIHZpZXdQb3NpdGlvbiwgZ2RrQnV0dG9uLCBzdGF0ZSk7Ci0g
ICAgICAgIGRvTW91c2VFdmVudChHREtfQlVUVE9OX1JFTEVBU0UsIHBhZ2Uudmlld1dpZGdldCgp
LCB2aWV3UG9zaXRpb24sIGdka0J1dHRvbiwgc3RhdGUpOworICAgIGNhc2UgTW91c2VJbnRlcmFj
dGlvbjo6RG91YmxlQ2xpY2s6CisgICAgICAgIGRvTW91c2VFdmVudChHREtfQlVUVE9OX1BSRVNT
LCBwYWdlLnZpZXdXaWRnZXQoKSwgbG9jYXRpb25JblZpZXcsIGdka0J1dHRvbiwgc3RhdGUpOwor
ICAgICAgICBkb01vdXNlRXZlbnQoR0RLX0JVVFRPTl9SRUxFQVNFLCBwYWdlLnZpZXdXaWRnZXQo
KSwgbG9jYXRpb25JblZpZXcsIGdka0J1dHRvbiwgc3RhdGUpOworICAgICAgICBkb01vdXNlRXZl
bnQoR0RLX0JVVFRPTl9QUkVTUywgcGFnZS52aWV3V2lkZ2V0KCksIGxvY2F0aW9uSW5WaWV3LCBn
ZGtCdXR0b24sIHN0YXRlKTsKKyAgICAgICAgZG9Nb3VzZUV2ZW50KEdES19CVVRUT05fUkVMRUFT
RSwgcGFnZS52aWV3V2lkZ2V0KCksIGxvY2F0aW9uSW5WaWV3LCBnZGtCdXR0b24sIHN0YXRlKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogfQpAQCAtMjgwLDIwICsyODAsMjcgQEAgc3RhdGljIGlu
dCBrZXlDb2RlRm9yVmlydHVhbEtleShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpW
aXJ0dWFsS2V5IGtleSwKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vz
c2lvbjo6cGxhdGZvcm1TaW11bGF0ZUtleVN0cm9rZShXZWJQYWdlUHJveHkmIHBhZ2UsIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OktleWJvYXJkSW50ZXJhY3Rpb25UeXBlIGludGVy
YWN0aW9uLCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5IGtleSkK
K3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVLZXlib2FyZEludGVy
YWN0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgS2V5Ym9hcmRJbnRlcmFjdGlvbiBpbnRlcmFjdGlv
biwgc3RkOjpvcHRpb25hbDxWaXJ0dWFsS2V5PiB2aXJ0dWFsS2V5LCBzdGQ6Om9wdGlvbmFsPENo
YXJLZXk+IGNoYXJLZXkpCiB7CisgICAgQVNTRVJUKHZpcnR1YWxLZXkuaGFzX3ZhbHVlKCkgfHwg
Y2hhcktleS5oYXNfdmFsdWUoKSk7CisKICAgICBHZGtNb2RpZmllclR5cGUgdXBkYXRlU3RhdGU7
Ci0gICAgYXV0byBrZXlDb2RlID0ga2V5Q29kZUZvclZpcnR1YWxLZXkoa2V5LCB1cGRhdGVTdGF0
ZSk7CisgICAgYXV0byBrZXlDb2RlOworICAgIGlmICh2aXJ0dWFsS2V5Lmhhc192YWx1ZSgpKQor
ICAgICAgICBrZXlDb2RlID0ga2V5Q29kZUZvclZpcnR1YWxLZXkodmlydHVhbEtleS52YWx1ZSgp
LCB1cGRhdGVTdGF0ZSk7CisgICAgZWxzZQorICAgICAgICBrZXlDb2RlID0gZ2RrX3VuaWNvZGVf
dG9fa2V5dmFsKGdfdXRmOF9nZXRfY2hhcigmY2hhcktleS52YWx1ZSgpKSk7CisKICAgICBzd2l0
Y2ggKGludGVyYWN0aW9uKSB7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uOjpLZXlib2FyZEludGVyYWN0aW9uVHlwZTo6S2V5UHJlc3M6CisgICAgY2FzZSBLZXlJbnRl
cmFjdGlvbjo6S2V5UHJlc3M6CiAgICAgICAgIG1fY3VycmVudE1vZGlmaWVycyB8PSB1cGRhdGVT
dGF0ZTsKICAgICAgICAgZG9LZXlTdHJva2VFdmVudChHREtfS0VZX1BSRVNTLCBwYWdlLnZpZXdX
aWRnZXQoKSwga2V5Q29kZSwgbV9jdXJyZW50TW9kaWZpZXJzKTsKICAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpLZXlib2FyZEludGVyYWN0
aW9uVHlwZTo6S2V5UmVsZWFzZToKKyAgICBjYXNlIEtleUludGVyYWN0aW9uOjpLZXlSZWxlYXNl
OgogICAgICAgICBtX2N1cnJlbnRNb2RpZmllcnMgJj0gfnVwZGF0ZVN0YXRlOwogICAgICAgICBk
b0tleVN0cm9rZUV2ZW50KEdES19LRVlfUkVMRUFTRSwgcGFnZS52aWV3V2lkZ2V0KCksIGtleUNv
ZGUsIG1fY3VycmVudE1vZGlmaWVycyk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6S2V5Ym9hcmRJbnRlcmFjdGlvblR5cGU6Okluc2Vy
dEJ5S2V5OgorICAgIGNhc2UgS2V5SW50ZXJhY3Rpb246Okluc2VydEJ5S2V5OgogICAgICAgICBk
b0tleVN0cm9rZUV2ZW50KEdES19LRVlfUFJFU1MsIHBhZ2Uudmlld1dpZGdldCgpLCBrZXlDb2Rl
LCBtX2N1cnJlbnRNb2RpZmllcnMsIHRydWUpOwogICAgICAgICBicmVhazsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2lvcy9XZWJBdXRvbWF0
aW9uU2Vzc2lvbklPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vaW9z
L1dlYkF1dG9tYXRpb25TZXNzaW9uSU9TLm1tCmluZGV4IDVmNzRhZGVkZjc1ZmU1NjkyYzI4ZDg0
NDg1OTJmMjIzNTRiNjhkNmMuLjBkZTM5YjY5OTNiMjkyM2Y4OTFlOTg0NjdlNWRmZTVhZmIzYWY5
YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vaW9zL1dl
YkF1dG9tYXRpb25TZXNzaW9uSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1
dG9tYXRpb24vaW9zL1dlYkF1dG9tYXRpb25TZXNzaW9uSU9TLm1tCkBAIC02NSwyNiArNjUsMjgg
QEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6c2VuZFN5bnRoZXNpemVkRXZlbnRzVG9QYWdl
KFdlYlBhZ2VQcm94eSYgcGFnZSwgTlNBcnIKIAogI3ByYWdtYSBtYXJrIENvbW1hbmRzIGZvciBQ
bGF0Zm9ybTogJ2lPUycKIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11
bGF0ZUtleVN0cm9rZShXZWJQYWdlUHJveHkmIHBhZ2UsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1
dG9tYXRpb246OktleWJvYXJkSW50ZXJhY3Rpb25UeXBlIGludGVyYWN0aW9uLCBJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5IGtleSkKK3ZvaWQgV2ViQXV0b21hdGlv
blNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVLZXlib2FyZEludGVyYWN0aW9uKFdlYlBhZ2VQcm94
eSYgcGFnZSwgS2V5Ym9hcmRJbnRlcmFjdGlvbiBpbnRlcmFjdGlvbiwgc3RkOjpvcHRpb25hbDxW
aXJ0dWFsS2V5PiB2aXJ0dWFsS2V5LCBzdGQ6Om9wdGlvbmFsPENoYXJLZXk+IGNoYXJLZXkpCiB7
CisgICAgQVNTRVJUKHZpcnR1YWxLZXkuaGFzX3ZhbHVlKCkgfHwgY2hhcktleS5oYXNfdmFsdWUo
KSk7CisKICAgICAvLyBUaGUgbW9kaWZpZXJzIGNoYW5nZWQgYnkgdGhlIHZpcnR1YWwga2V5IHdo
ZW4gaXQgaXMgcHJlc3NlZCBvciByZWxlYXNlZC4KICAgICBXZWJFdmVudEZsYWdzIGNoYW5nZWRN
b2RpZmllcnMgPSAwOwogCiAgICAgLy8gRmlndXJlIG91dCB0aGUgZWZmZWN0cyBvZiBzdGlja3kg
bW9kaWZpZXJzLgogICAgIHN3aXRjaCAoa2V5KSB7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpTaGlmdDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6
OlNoaWZ0OgogICAgICAgICBjaGFuZ2VkTW9kaWZpZXJzIHw9IFdlYkV2ZW50RmxhZ01hc2tTaGlm
dDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uOjpWaXJ0dWFsS2V5OjpDb250cm9sOgorICAgIGNhc2UgVmlydHVhbEtleTo6Q29udHJvbDoK
ICAgICAgICAgY2hhbmdlZE1vZGlmaWVycyB8PSBXZWJFdmVudEZsYWdNYXNrQ29udHJvbDsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpW
aXJ0dWFsS2V5OjpBbHRlcm5hdGU6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpBbHRlcm5hdGU6CiAg
ICAgICAgIGNoYW5nZWRNb2RpZmllcnMgfD0gV2ViRXZlbnRGbGFnTWFza0FsdGVybmF0ZTsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpW
aXJ0dWFsS2V5OjpNZXRhOgorICAgIGNhc2UgVmlydHVhbEtleTo6TWV0YToKICAgICAgICAgLy8g
VGhlICdtZXRhJyBrZXkgZG9lcyBub3QgZXhpc3Qgb24gQXBwbGUga2V5Ym9hcmRzIGFuZCBpcyB1
c3VhbGx5CiAgICAgICAgIC8vIG1hcHBlZCB0byB0aGUgQ29tbWFuZCBrZXkgd2hlbiB1c2luZyB0
aGlyZC1wYXJ0eSBrZXlib2FyZHMuCi0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRv
bWF0aW9uOjpWaXJ0dWFsS2V5OjpDb21tYW5kOgorICAgIGNhc2UgVmlydHVhbEtleTo6Q29tbWFu
ZDoKICAgICAgICAgY2hhbmdlZE1vZGlmaWVycyB8PSBXZWJFdmVudEZsYWdNYXNrQ29tbWFuZDsK
ICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKQEAgLTk0LDggKzk2LDE4IEBAIHZvaWQgV2Vi
QXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVLZXlTdHJva2UoV2ViUGFnZVByb3h5
JiBwYWdlLCBJbnNwZWN0CiAgICAgLy8gVUlLaXQgZG9lcyBub3Qgc2VuZCBrZXkgY29kZXMgZm9y
IHZpcnR1YWwga2V5cyBldmVuIGZvciBhIGhhcmR3YXJlIGtleWJvYXJkLgogICAgIC8vIEluc3Rl
YWQsIGl0IHNlbmRzIHNpbmdsZSB1bmljaGFycyBhbmQgV2ViQ29yZSBtYXBzIHRoZXNlIHRvICJ3
aW5kb3dzIiBrZXkgY29kZXMuCiAgICAgLy8gU3ludGhlc2l6ZSBhIHNpbmdsZSB1bmljaGFyIHN1
Y2ggdGhhdCB0aGUgY29ycmVjdCBrZXkgY29kZSBpcyBpbmZlcnJlZC4KLSAgICBzdGQ6Om9wdGlv
bmFsPHVuaWNoYXI+IGNoYXJDb2RlID0gY2hhckNvZGVGb3JWaXJ0dWFsS2V5KGtleSk7Ci0gICAg
c3RkOjpvcHRpb25hbDx1bmljaGFyPiBjaGFyQ29kZUlnbm9yaW5nTW9kaWZpZXJzID0gY2hhckNv
ZGVJZ25vcmluZ01vZGlmaWVyc0ZvclZpcnR1YWxLZXkoa2V5KTsKKyAgICBzdGQ6Om9wdGlvbmFs
PHVuaWNoYXI+IGNoYXJDb2RlOworICAgIHN0ZDo6b3B0aW9uYWw8dW5pY2hhcj4gY2hhckNvZGVJ
Z25vcmluZ01vZGlmaWVyczsKKworICAgIGlmICh2aXJ0dWFsS2V5Lmhhc192YWx1ZSgpKSB7Cisg
ICAgICAgIGNoYXJDb2RlID0gY2hhckNvZGVGb3JWaXJ0dWFsS2V5KHZpcnR1YWxLZXkudmFsdWUo
KSk7CisgICAgICAgIGNoYXJDb2RlSWdub3JpbmdNb2RpZmllcnMgPSBjaGFyQ29kZUlnbm9yaW5n
TW9kaWZpZXJzRm9yVmlydHVhbEtleSh2aXJ0dWFsS2V5LnZhbHVlKCkpOworICAgIH0KKworICAg
IGlmIChjaGFyS2V5Lmhhc192YWx1ZSgpKSB7CisgICAgICAgIGNoYXJDb2RlID0gKHVuaWNoYXIp
Y2hhcktleS52YWx1ZSgpOworICAgICAgICBjaGFyQ29kZUlnbm9yaW5nTW9kaWZpZXJzID0gKHVu
aWNoYXIpY2hhcktleS52YWx1ZSgpOworICAgIH0KIAogICAgIC8vIEZJWE1FOiBjb25zaWRlciB1
c2luZyBVSUtpdCBTUEkgdG8gbm9ybWFsaXplICdjaGFyYWN0ZXJzJywgaS5lLiwgY2hhbmdpbmcg
KiB0byBTaGlmdC04LAogICAgIC8vIGFuZCBwYXNzaW5nIHRoYXQgaW4gdG8gY2hhcmFjdGVyc0ln
bm9yaW5nTW9kaWZpZXJzLiBUaGlzIGlzIHByb2JhYmx5IG5vdCB3b3J0aCB0aGUgdHJvdWJsZQpA
QCAtMTE1LDE5ICsxMjcsMTkgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1T
aW11bGF0ZUtleVN0cm9rZShXZWJQYWdlUHJveHkmIHBhZ2UsIEluc3BlY3QKICAgICBhdXRvIGV2
ZW50c1RvQmVTZW50ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CiAK
ICAgICBzd2l0Y2ggKGludGVyYWN0aW9uKSB7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29s
OjpBdXRvbWF0aW9uOjpLZXlib2FyZEludGVyYWN0aW9uVHlwZTo6S2V5UHJlc3M6IHsKKyAgICBj
YXNlIEtleWJvYXJkSW50ZXJhY3Rpb246OktleVByZXNzOiB7CiAgICAgICAgIG1fY3VycmVudE1v
ZGlmaWVycyB8PSBjaGFuZ2VkTW9kaWZpZXJzOwogCiAgICAgICAgIFtldmVudHNUb0JlU2VudCBh
ZGRPYmplY3Q6W1tbOjpXZWJFdmVudCBhbGxvY10gaW5pdFdpdGhLZXlFdmVudFR5cGU6V2ViRXZl
bnRLZXlEb3duIHRpbWVTdGFtcDpDRkFic29sdXRlVGltZUdldEN1cnJlbnQoKSBjaGFyYWN0ZXJz
OmNoYXJhY3RlcnMgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOnVubW9kaWZpZWRDaGFyYWN0
ZXJzIG1vZGlmaWVyczptX2N1cnJlbnRNb2RpZmllcnMgaXNSZXBlYXRpbmc6Tk8gd2l0aEZsYWdz
OmlucHV0RmxhZ3Mgd2l0aElucHV0TWFuYWdlckhpbnQ6bmlsIGtleUNvZGU6a2V5Q29kZSBpc1Rh
YktleTppc1RhYktleV0gYXV0b3JlbGVhc2VdXTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAg
IGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6S2V5Ym9hcmRJbnRlcmFjdGlv
blR5cGU6OktleVJlbGVhc2U6IHsKKyAgICBjYXNlIEtleWJvYXJkSW50ZXJhY3Rpb246OktleVJl
bGVhc2U6IHsKICAgICAgICAgbV9jdXJyZW50TW9kaWZpZXJzICY9IH5jaGFuZ2VkTW9kaWZpZXJz
OwogCiAgICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmplY3Q6W1tbOjpXZWJFdmVudCBhbGxv
Y10gaW5pdFdpdGhLZXlFdmVudFR5cGU6V2ViRXZlbnRLZXlVcCB0aW1lU3RhbXA6Q0ZBYnNvbHV0
ZVRpbWVHZXRDdXJyZW50KCkgY2hhcmFjdGVyczpjaGFyYWN0ZXJzIGNoYXJhY3RlcnNJZ25vcmlu
Z01vZGlmaWVyczp1bm1vZGlmaWVkQ2hhcmFjdGVycyBtb2RpZmllcnM6bV9jdXJyZW50TW9kaWZp
ZXJzIGlzUmVwZWF0aW5nOk5PIHdpdGhGbGFnczppbnB1dEZsYWdzIHdpdGhJbnB1dE1hbmFnZXJI
aW50Om5pbCBrZXlDb2RlOmtleUNvZGUgaXNUYWJLZXk6aXNUYWJLZXldIGF1dG9yZWxlYXNlXV07
CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1
dG9tYXRpb246OktleWJvYXJkSW50ZXJhY3Rpb25UeXBlOjpJbnNlcnRCeUtleTogeworICAgIGNh
c2UgS2V5Ym9hcmRJbnRlcmFjdGlvbjo6SW5zZXJ0QnlLZXk6IHsKICAgICAgICAgLy8gTW9kaWZp
ZXJzIG9ubHkgY2hhbmdlIHdpdGggS2V5UHJlc3Mgb3IgS2V5UmVsZWFzZSwgdGhpcyBjb2RlIHBh
dGggaXMgZm9yIHNpbmdsZSBjaGFyYWN0ZXJzLgogICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRk
T2JqZWN0OltbWzo6V2ViRXZlbnQgYWxsb2NdIGluaXRXaXRoS2V5RXZlbnRUeXBlOldlYkV2ZW50
S2V5RG93biB0aW1lU3RhbXA6Q0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCkgY2hhcmFjdGVyczpj
aGFyYWN0ZXJzIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczp1bm1vZGlmaWVkQ2hhcmFjdGVy
cyBtb2RpZmllcnM6bV9jdXJyZW50TW9kaWZpZXJzIGlzUmVwZWF0aW5nOk5PIHdpdGhGbGFnczpp
bnB1dEZsYWdzIHdpdGhJbnB1dE1hbmFnZXJIaW50Om5pbCBrZXlDb2RlOmtleUNvZGUgaXNUYWJL
ZXk6aXNUYWJLZXldIGF1dG9yZWxlYXNlXV07CiAgICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRP
YmplY3Q6W1tbOjpXZWJFdmVudCBhbGxvY10gaW5pdFdpdGhLZXlFdmVudFR5cGU6V2ViRXZlbnRL
ZXlVcCB0aW1lU3RhbXA6Q0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCkgY2hhcmFjdGVyczpjaGFy
YWN0ZXJzIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczp1bm1vZGlmaWVkQ2hhcmFjdGVycyBt
b2RpZmllcnM6bV9jdXJyZW50TW9kaWZpZXJzIGlzUmVwZWF0aW5nOk5PIHdpdGhGbGFnczppbnB1
dEZsYWdzIHdpdGhJbnB1dE1hbmFnZXJIaW50Om5pbCBrZXlDb2RlOmtleUNvZGUgaXNUYWJLZXk6
aXNUYWJLZXldIGF1dG9yZWxlYXNlXV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BdXRvbWF0aW9uL21hYy9XZWJBdXRvbWF0aW9uU2Vzc2lvbk1hYy5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vbWFjL1dlYkF1dG9tYXRpb25TZXNzaW9uTWFjLm1t
CmluZGV4IDNiNWU1NThjNjRjM2RhNzY3YTk4OWVkNjQyMGE3NzVmMmMxYTYxMzIuLmY0NjBhMzg2
NTNkYzY0ZWU2NjE3OTA3MzBjMThjYmZiNGUwZjJiNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vbWFjL1dlYkF1dG9tYXRpb25TZXNzaW9uTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vbWFjL1dlYkF1dG9tYXRpb25T
ZXNzaW9uTWFjLm1tCkBAIC0xMTgsMTEgKzExOCwxMSBAQCBib29sIFdlYkF1dG9tYXRpb25TZXNz
aW9uOjp3YXNFdmVudFN5bnRoZXNpemVkRm9yQXV0b21hdGlvbihOU0V2ZW50ICpldmVudCkKIAog
I3ByYWdtYSBtYXJrIFBsYXRmb3JtLWRlcGVuZGVudCBJbXBsZW1lbnRhdGlvbnMKIAotdm9pZCBX
ZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24oV2Vi
UGFnZVByb3h5JiBwYWdlLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgdmlld1Bvc2l0aW9uLCBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUludGVyYWN0aW9uIGludGVyYWN0
aW9uLCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1dHRvbiBidXR0b24s
IFdlYkV2ZW50OjpNb2RpZmllcnMga2V5TW9kaWZpZXJzKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vz
c2lvbjo6cGxhdGZvcm1TaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdl
LCBNb3VzZUludGVyYWN0aW9uIGludGVyYWN0aW9uLCBXZWJNb3VzZUV2ZW50OjpCdXR0b24gYnV0
dG9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbG9jYXRpb25JblZpZXcsIFdlYkV2ZW50OjpN
b2RpZmllcnMga2V5TW9kaWZpZXJzKQogewogICAgIEludFJlY3Qgd2luZG93UmVjdDsKLSAgICBw
YWdlLnJvb3RWaWV3VG9XaW5kb3coSW50UmVjdCh2aWV3UG9zaXRpb24sIEludFNpemUoKSksIHdp
bmRvd1JlY3QpOwotICAgIEludFBvaW50IHdpbmRvd1Bvc2l0aW9uID0gd2luZG93UmVjdC5sb2Nh
dGlvbigpOworICAgIHBhZ2Uucm9vdFZpZXdUb1dpbmRvdyhJbnRSZWN0KGxvY2F0aW9uSW5WaWV3
LCBJbnRTaXplKCkpLCB3aW5kb3dSZWN0KTsKKyAgICBJbnRQb2ludCBsb2NhdGlvbkluV2luZG93
ID0gd2luZG93UmVjdC5sb2NhdGlvbigpOwogCiAgICAgTlNFdmVudE1vZGlmaWVyRmxhZ3MgbW9k
aWZpZXJzID0gMDsKICAgICBpZiAoa2V5TW9kaWZpZXJzICYgV2ViRXZlbnQ6Ok1ldGFLZXkpCkBA
IC0xNDQsMjAgKzE0NCwyMCBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNp
bXVsYXRlTW91c2VJbnRlcmFjdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsCiAgICAgTlNFdmVudFR5
cGUgZHJhZ0V2ZW50VHlwZSA9IChOU0V2ZW50VHlwZSkwOwogICAgIE5TRXZlbnRUeXBlIHVwRXZl
bnRUeXBlID0gKE5TRXZlbnRUeXBlKTA7CiAgICAgc3dpdGNoIChidXR0b24pIHsKLSAgICBjYXNl
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9uOjpOb25lOgorICAg
IGNhc2UgV2ViTW91c2VFdmVudDo6Tm9CdXR0b246CiAgICAgICAgIGRvd25FdmVudFR5cGUgPSB1
cEV2ZW50VHlwZSA9IGRyYWdFdmVudFR5cGUgPSBOU0V2ZW50VHlwZU1vdXNlTW92ZWQ7CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91
c2VCdXR0b246OkxlZnQ6CisgICAgY2FzZSBXZWJNb3VzZUV2ZW50OjpMZWZ0QnV0dG9uOgogICAg
ICAgICBkb3duRXZlbnRUeXBlID0gTlNFdmVudFR5cGVMZWZ0TW91c2VEb3duOwogICAgICAgICBk
cmFnRXZlbnRUeXBlID0gTlNFdmVudFR5cGVMZWZ0TW91c2VEcmFnZ2VkOwogICAgICAgICB1cEV2
ZW50VHlwZSA9IE5TRXZlbnRUeXBlTGVmdE1vdXNlVXA7CiAgICAgICAgIGJyZWFrOwotICAgIGNh
c2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VCdXR0b246Ok1pZGRsZToK
KyAgICBjYXNlIFdlYk1vdXNlRXZlbnQ6Ok1pZGRsZUJ1dHRvbjoKICAgICAgICAgZG93bkV2ZW50
VHlwZSA9IE5TRXZlbnRUeXBlT3RoZXJNb3VzZURvd247CiAgICAgICAgIGRyYWdFdmVudFR5cGUg
PSBOU0V2ZW50VHlwZUxlZnRNb3VzZURyYWdnZWQ7CiAgICAgICAgIHVwRXZlbnRUeXBlID0gTlNF
dmVudFR5cGVPdGhlck1vdXNlVXA7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VCdXR0b246OlJpZ2h0OgorICAgIGNhc2UgV2Vi
TW91c2VFdmVudDo6UmlnaHRCdXR0b246CiAgICAgICAgIGRvd25FdmVudFR5cGUgPSBOU0V2ZW50
VHlwZVJpZ2h0TW91c2VEb3duOwogICAgICAgICB1cEV2ZW50VHlwZSA9IE5TRXZlbnRUeXBlUmln
aHRNb3VzZVVwOwogICAgICAgICBicmVhazsKQEAgLTE2OCw1NiArMTY4LDU2IEBAIHZvaWQgV2Vi
QXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVNb3VzZUludGVyYWN0aW9uKFdlYlBh
Z2VQcm94eSYgcGFnZSwKICAgICBOU0ludGVnZXIgZXZlbnROdW1iZXIgPSBzeW50aGVzaXplZE1v
dXNlRXZlbnRNYWdpY0V2ZW50TnVtYmVyOwogCiAgICAgc3dpdGNoIChpbnRlcmFjdGlvbikgewot
ICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VJbnRlcmFjdGlv
bjo6TW92ZToKKyAgICBjYXNlIE1vdXNlSW50ZXJhY3Rpb246Ok1vdmU6CiAgICAgICAgIEFTU0VS
VChkcmFnRXZlbnRUeXBlKTsKLSAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbTlNF
dmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6ZHJhZ0V2ZW50VHlwZSBsb2NhdGlvbjp3aW5kb3dQb3Np
dGlvbiBtb2RpZmllckZsYWdzOm1vZGlmaWVycyB0aW1lc3RhbXA6dGltZXN0YW1wIHdpbmRvd051
bWJlcjp3aW5kb3dOdW1iZXIgY29udGV4dDpuaWwgZXZlbnROdW1iZXI6ZXZlbnROdW1iZXIgY2xp
Y2tDb3VudDowIHByZXNzdXJlOjAuMGZdXTsKKyAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9i
amVjdDpbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6ZHJhZ0V2ZW50VHlwZSBsb2NhdGlvbjps
b2NhdGlvbkluV2luZG93IG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJzIHRpbWVzdGFtcDp0aW1lc3Rh
bXAgd2luZG93TnVtYmVyOndpbmRvd051bWJlciBjb250ZXh0Om5pbCBldmVudE51bWJlcjpldmVu
dE51bWJlciBjbGlja0NvdW50OjAgcHJlc3N1cmU6MC4wZl1dOwogICAgICAgICBicmVhazsKLSAg
ICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlSW50ZXJhY3Rpb246
OkRvd246CisgICAgY2FzZSBNb3VzZUludGVyYWN0aW9uOjpEb3duOgogICAgICAgICBBU1NFUlQo
ZG93bkV2ZW50VHlwZSk7CiAKICAgICAgICAgLy8gSGFyZC1jb2RlIHRoZSBjbGljayBjb3VudCB0
byBvbmUsIHNpbmNlIGNsaWVudHMgZG9uJ3QgZXhwZWN0IHN1Y2Nlc3NpdmUgc2ltdWxhdGVkCiAg
ICAgICAgIC8vIGRvd24vdXAgZXZlbnRzIHRvIGJlIHBvdGVudGlhbGx5IGNvdW50ZWQgYXMgYSBk
b3VibGUgY2xpY2sgZXZlbnQuCi0gICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmplY3Q6W05T
RXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOmRvd25FdmVudFR5cGUgbG9jYXRpb246d2luZG93UG9z
aXRpb24gbW9kaWZpZXJGbGFnczptb2RpZmllcnMgdGltZXN0YW1wOnRpbWVzdGFtcCB3aW5kb3dO
dW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmlsIGV2ZW50TnVtYmVyOmV2ZW50TnVtYmVyIGNs
aWNrQ291bnQ6MSBwcmVzc3VyZTpXZWJDb3JlOjpGb3JjZUF0Q2xpY2tdXTsKKyAgICAgICAgW2V2
ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6ZG93bkV2
ZW50VHlwZSBsb2NhdGlvbjpsb2NhdGlvbkluV2luZG93IG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJz
IHRpbWVzdGFtcDp0aW1lc3RhbXAgd2luZG93TnVtYmVyOndpbmRvd051bWJlciBjb250ZXh0Om5p
bCBldmVudE51bWJlcjpldmVudE51bWJlciBjbGlja0NvdW50OjEgcHJlc3N1cmU6V2ViQ29yZTo6
Rm9yY2VBdENsaWNrXV07CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbjo6TW91c2VJbnRlcmFjdGlvbjo6VXA6CisgICAgY2FzZSBNb3VzZUlu
dGVyYWN0aW9uOjpVcDoKICAgICAgICAgQVNTRVJUKHVwRXZlbnRUeXBlKTsKIAogICAgICAgICAv
LyBIYXJkLWNvZGUgdGhlIGNsaWNrIGNvdW50IHRvIG9uZSwgc2luY2UgY2xpZW50cyBkb24ndCBl
eHBlY3Qgc3VjY2Vzc2l2ZSBzaW11bGF0ZWQKICAgICAgICAgLy8gZG93bi91cCBldmVudHMgdG8g
YmUgcG90ZW50aWFsbHkgY291bnRlZCBhcyBhIGRvdWJsZSBjbGljayBldmVudC4KLSAgICAgICAg
W2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6dXBF
dmVudFR5cGUgbG9jYXRpb246d2luZG93UG9zaXRpb24gbW9kaWZpZXJGbGFnczptb2RpZmllcnMg
dGltZXN0YW1wOnRpbWVzdGFtcCB3aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmls
IGV2ZW50TnVtYmVyOmV2ZW50TnVtYmVyIGNsaWNrQ291bnQ6MSBwcmVzc3VyZTowLjBmXV07Cisg
ICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmplY3Q6W05TRXZlbnQgbW91c2VFdmVudFdpdGhU
eXBlOnVwRXZlbnRUeXBlIGxvY2F0aW9uOmxvY2F0aW9uSW5XaW5kb3cgbW9kaWZpZXJGbGFnczpt
b2RpZmllcnMgdGltZXN0YW1wOnRpbWVzdGFtcCB3aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNv
bnRleHQ6bmlsIGV2ZW50TnVtYmVyOmV2ZW50TnVtYmVyIGNsaWNrQ291bnQ6MSBwcmVzc3VyZTow
LjBmXV07CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbjo6TW91c2VJbnRlcmFjdGlvbjo6U2luZ2xlQ2xpY2s6CisgICAgY2FzZSBNb3VzZUlu
dGVyYWN0aW9uOjpTaW5nbGVDbGljazoKICAgICAgICAgQVNTRVJUKHVwRXZlbnRUeXBlKTsKICAg
ICAgICAgQVNTRVJUKGRvd25FdmVudFR5cGUpOwogCiAgICAgICAgIC8vIFNlbmQgc2VwYXJhdGUg
ZG93biBhbmQgdXAgZXZlbnRzLiBXZWJDb3JlIHdpbGwgc2VlIHRoaXMgYXMgYSBzaW5nbGUtY2xp
Y2sgZXZlbnQuCi0gICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmplY3Q6W05TRXZlbnQgbW91
c2VFdmVudFdpdGhUeXBlOmRvd25FdmVudFR5cGUgbG9jYXRpb246d2luZG93UG9zaXRpb24gbW9k
aWZpZXJGbGFnczptb2RpZmllcnMgdGltZXN0YW1wOnRpbWVzdGFtcCB3aW5kb3dOdW1iZXI6d2lu
ZG93TnVtYmVyIGNvbnRleHQ6bmlsIGV2ZW50TnVtYmVyOmV2ZW50TnVtYmVyIGNsaWNrQ291bnQ6
MSBwcmVzc3VyZTpXZWJDb3JlOjpGb3JjZUF0Q2xpY2tdXTsKLSAgICAgICAgW2V2ZW50c1RvQmVT
ZW50IGFkZE9iamVjdDpbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6dXBFdmVudFR5cGUgbG9j
YXRpb246d2luZG93UG9zaXRpb24gbW9kaWZpZXJGbGFnczptb2RpZmllcnMgdGltZXN0YW1wOnRp
bWVzdGFtcCB3aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmlsIGV2ZW50TnVtYmVy
OmV2ZW50TnVtYmVyIGNsaWNrQ291bnQ6MSBwcmVzc3VyZTowLjBmXV07CisgICAgICAgIFtldmVu
dHNUb0JlU2VudCBhZGRPYmplY3Q6W05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOmRvd25FdmVu
dFR5cGUgbG9jYXRpb246bG9jYXRpb25JbldpbmRvdyBtb2RpZmllckZsYWdzOm1vZGlmaWVycyB0
aW1lc3RhbXA6dGltZXN0YW1wIHdpbmRvd051bWJlcjp3aW5kb3dOdW1iZXIgY29udGV4dDpuaWwg
ZXZlbnROdW1iZXI6ZXZlbnROdW1iZXIgY2xpY2tDb3VudDoxIHByZXNzdXJlOldlYkNvcmU6OkZv
cmNlQXRDbGlja11dOworICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltOU0V2ZW50
IG1vdXNlRXZlbnRXaXRoVHlwZTp1cEV2ZW50VHlwZSBsb2NhdGlvbjpsb2NhdGlvbkluV2luZG93
IG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJzIHRpbWVzdGFtcDp0aW1lc3RhbXAgd2luZG93TnVtYmVy
OndpbmRvd051bWJlciBjb250ZXh0Om5pbCBldmVudE51bWJlcjpldmVudE51bWJlciBjbGlja0Nv
dW50OjEgcHJlc3N1cmU6MC4wZl1dOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlSW50ZXJhY3Rpb246OkRvdWJsZUNsaWNrOgor
ICAgIGNhc2UgTW91c2VJbnRlcmFjdGlvbjo6RG91YmxlQ2xpY2s6CiAgICAgICAgIEFTU0VSVCh1
cEV2ZW50VHlwZSk7CiAgICAgICAgIEFTU0VSVChkb3duRXZlbnRUeXBlKTsKIAogICAgICAgICAv
LyBTZW5kIG11bHRpcGxlIGRvd24gYW5kIHVwIGV2ZW50cyB3aXRoIHByb3BlciBjbGljayBjb3Vu
dC4KICAgICAgICAgLy8gV2ViQ29yZSB3aWxsIHNlZSB0aGlzIGFzIGEgc2luZ2xlLWNsaWNrIGV2
ZW50IHRoZW4gZG91YmxlLWNsaWNrIGV2ZW50LgotICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRk
T2JqZWN0OltOU0V2ZW50IG1vdXNlRXZlbnRXaXRoVHlwZTpkb3duRXZlbnRUeXBlIGxvY2F0aW9u
OndpbmRvd1Bvc2l0aW9uIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJzIHRpbWVzdGFtcDp0aW1lc3Rh
bXAgd2luZG93TnVtYmVyOndpbmRvd051bWJlciBjb250ZXh0Om5pbCBldmVudE51bWJlcjpldmVu
dE51bWJlciBjbGlja0NvdW50OjEgcHJlc3N1cmU6V2ViQ29yZTo6Rm9yY2VBdENsaWNrXV07Ci0g
ICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmplY3Q6W05TRXZlbnQgbW91c2VFdmVudFdpdGhU
eXBlOnVwRXZlbnRUeXBlIGxvY2F0aW9uOndpbmRvd1Bvc2l0aW9uIG1vZGlmaWVyRmxhZ3M6bW9k
aWZpZXJzIHRpbWVzdGFtcDp0aW1lc3RhbXAgd2luZG93TnVtYmVyOndpbmRvd051bWJlciBjb250
ZXh0Om5pbCBldmVudE51bWJlcjpldmVudE51bWJlciBjbGlja0NvdW50OjEgcHJlc3N1cmU6MC4w
Zl1dOwotICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltOU0V2ZW50IG1vdXNlRXZl
bnRXaXRoVHlwZTpkb3duRXZlbnRUeXBlIGxvY2F0aW9uOndpbmRvd1Bvc2l0aW9uIG1vZGlmaWVy
RmxhZ3M6bW9kaWZpZXJzIHRpbWVzdGFtcDp0aW1lc3RhbXAgd2luZG93TnVtYmVyOndpbmRvd051
bWJlciBjb250ZXh0Om5pbCBldmVudE51bWJlcjpldmVudE51bWJlciBjbGlja0NvdW50OjIgcHJl
c3N1cmU6V2ViQ29yZTo6Rm9yY2VBdENsaWNrXV07Ci0gICAgICAgIFtldmVudHNUb0JlU2VudCBh
ZGRPYmplY3Q6W05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOnVwRXZlbnRUeXBlIGxvY2F0aW9u
OndpbmRvd1Bvc2l0aW9uIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJzIHRpbWVzdGFtcDp0aW1lc3Rh
bXAgd2luZG93TnVtYmVyOndpbmRvd051bWJlciBjb250ZXh0Om5pbCBldmVudE51bWJlcjpldmVu
dE51bWJlciBjbGlja0NvdW50OjIgcHJlc3N1cmU6MC4wZl1dOworICAgICAgICBbZXZlbnRzVG9C
ZVNlbnQgYWRkT2JqZWN0OltOU0V2ZW50IG1vdXNlRXZlbnRXaXRoVHlwZTpkb3duRXZlbnRUeXBl
IGxvY2F0aW9uOmxvY2F0aW9uSW5XaW5kb3cgbW9kaWZpZXJGbGFnczptb2RpZmllcnMgdGltZXN0
YW1wOnRpbWVzdGFtcCB3aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmlsIGV2ZW50
TnVtYmVyOmV2ZW50TnVtYmVyIGNsaWNrQ291bnQ6MSBwcmVzc3VyZTpXZWJDb3JlOjpGb3JjZUF0
Q2xpY2tdXTsKKyAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbTlNFdmVudCBtb3Vz
ZUV2ZW50V2l0aFR5cGU6dXBFdmVudFR5cGUgbG9jYXRpb246bG9jYXRpb25JbldpbmRvdyBtb2Rp
ZmllckZsYWdzOm1vZGlmaWVycyB0aW1lc3RhbXA6dGltZXN0YW1wIHdpbmRvd051bWJlcjp3aW5k
b3dOdW1iZXIgY29udGV4dDpuaWwgZXZlbnROdW1iZXI6ZXZlbnROdW1iZXIgY2xpY2tDb3VudDox
IHByZXNzdXJlOjAuMGZdXTsKKyAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbTlNF
dmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6ZG93bkV2ZW50VHlwZSBsb2NhdGlvbjpsb2NhdGlvbklu
V2luZG93IG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJzIHRpbWVzdGFtcDp0aW1lc3RhbXAgd2luZG93
TnVtYmVyOndpbmRvd051bWJlciBjb250ZXh0Om5pbCBldmVudE51bWJlcjpldmVudE51bWJlciBj
bGlja0NvdW50OjIgcHJlc3N1cmU6V2ViQ29yZTo6Rm9yY2VBdENsaWNrXV07CisgICAgICAgIFtl
dmVudHNUb0JlU2VudCBhZGRPYmplY3Q6W05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOnVwRXZl
bnRUeXBlIGxvY2F0aW9uOmxvY2F0aW9uSW5XaW5kb3cgbW9kaWZpZXJGbGFnczptb2RpZmllcnMg
dGltZXN0YW1wOnRpbWVzdGFtcCB3aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmls
IGV2ZW50TnVtYmVyOmV2ZW50TnVtYmVyIGNsaWNrQ291bnQ6MiBwcmVzc3VyZTowLjBmXV07CiAg
ICAgfQogCiAgICAgc2VuZFN5bnRoZXNpemVkRXZlbnRzVG9QYWdlKHBhZ2UsIGV2ZW50c1RvQmVT
ZW50LmdldCgpKTsKIH0KIAotc3RhdGljIGJvb2wga2V5SGFzU3RpY2t5TW9kaWZpZXIoSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleSBrZXkpCitzdGF0aWMgYm9vbCB2
aXJ0dWFsS2V5SGFzU3RpY2t5TW9kaWZpZXIoVmlydHVhbEtleSBrZXkpCiB7CiAgICAgLy8gUmV0
dXJucyB3aGV0aGVyIHRoZSBrZXkncyBtb2RpZmllciBmbGFncyBzaG91bGQgYWZmZWN0IG90aGVy
IGV2ZW50cyB3aGlsZSBwcmVzc2VkIGRvd24uCiAgICAgc3dpdGNoIChrZXkpIHsKLSAgICBjYXNl
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OlNoaWZ0OgotICAg
IGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6Q29udHJv
bDoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6
OkFsdGVybmF0ZToKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZp
cnR1YWxLZXk6Ok1ldGE6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
OjpWaXJ0dWFsS2V5OjpDb21tYW5kOgorICAgIGNhc2UgVmlydHVhbEtleTo6U2hpZnQ6CisgICAg
Y2FzZSBWaXJ0dWFsS2V5OjpDb250cm9sOgorICAgIGNhc2UgVmlydHVhbEtleTo6QWx0ZXJuYXRl
OgorICAgIGNhc2UgVmlydHVhbEtleTo6TWV0YToKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkNvbW1h
bmQ6CiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgZGVmYXVsdDoKQEAgLTIyNSwyMDEgKzIy
NSwyMDEgQEAgc3RhdGljIGJvb2wga2V5SGFzU3RpY2t5TW9kaWZpZXIoSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleSBrZXkKICAgICB9CiB9CiAKLXN0YXRpYyBpbnQg
a2V5Q29kZUZvclZpcnR1YWxLZXkoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6Vmly
dHVhbEtleSBrZXkpCitzdGF0aWMgaW50IGtleUNvZGVGb3JWaXJ0dWFsS2V5KFZpcnR1YWxLZXkg
a2V5KQogewogICAgIC8vIFRoZSBsaWtlbHkga2V5Q29kZSBmb3IgdGhlIHZpcnR1YWwga2V5IGFz
IGRlZmluZWQgaW4gPEhJVG9vbGJveC9FdmVudHMuaD4uCiAgICAgc3dpdGNoIChrZXkpIHsKLSAg
ICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OlNoaWZ0
OgorICAgIGNhc2UgVmlydHVhbEtleTo6U2hpZnQ6CiAgICAgICAgIHJldHVybiBrVktfU2hpZnQ7
Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpD
b250cm9sOgorICAgIGNhc2UgVmlydHVhbEtleTo6Q29udHJvbDoKICAgICAgICAgcmV0dXJuIGtW
S19Db250cm9sOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6Vmly
dHVhbEtleTo6QWx0ZXJuYXRlOgorICAgIGNhc2UgVmlydHVhbEtleTo6QWx0ZXJuYXRlOgogICAg
ICAgICByZXR1cm4ga1ZLX09wdGlvbjsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1
dG9tYXRpb246OlZpcnR1YWxLZXk6Ok1ldGE6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpNZXRhOgog
ICAgICAgICAvLyBUaGUgJ21ldGEnIGtleSBkb2VzIG5vdCBleGlzdCBvbiBBcHBsZSBrZXlib2Fy
ZHMgYW5kIGlzIHVzdWFsbHkKICAgICAgICAgLy8gbWFwcGVkIHRvIHRoZSBDb21tYW5kIGtleSB3
aGVuIHVzaW5nIHRoaXJkLXBhcnR5IGtleWJvYXJkcy4KLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkNvbW1hbmQ6CisgICAgY2FzZSBWaXJ0dWFs
S2V5OjpDb21tYW5kOgogICAgICAgICByZXR1cm4ga1ZLX0NvbW1hbmQ7Ci0gICAgY2FzZSBJbnNw
ZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpIZWxwOgorICAgIGNhc2Ug
VmlydHVhbEtleTo6SGVscDoKICAgICAgICAgcmV0dXJuIGtWS19IZWxwOwotICAgIGNhc2UgSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6QmFja3NwYWNlOgorICAg
IGNhc2UgVmlydHVhbEtleTo6QmFja3NwYWNlOgogICAgICAgICByZXR1cm4ga1ZLX0RlbGV0ZTsK
LSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OlRh
YjoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OlRhYjoKICAgICAgICAgcmV0dXJuIGtWS19UYWI7Ci0g
ICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpDbGVh
cjoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkNsZWFyOgogICAgICAgICByZXR1cm4ga1ZLX0FOU0lf
S2V5cGFkQ2xlYXI7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpW
aXJ0dWFsS2V5OjpFbnRlcjoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkVudGVyOgogICAgICAgICBy
ZXR1cm4ga1ZLX0FOU0lfS2V5cGFkRW50ZXI7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29s
OjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpQYXVzZToKKyAgICBjYXNlIFZpcnR1YWxLZXk6OlBh
dXNlOgogICAgICAgICAvLyBUaGUgJ3BhdXNlJyBrZXkgZG9lcyBub3QgZXhpc3Qgb24gQXBwbGUg
a2V5Ym9hcmRzIGFuZCBoYXMgbm8ga2V5Q29kZS4KICAgICAgICAgLy8gVGhlIHNlbWFudGljcyBh
cmUgdW5jbGVhciBzbyBqdXN0IGFib3J0IGFuZCBkbyBub3RoaW5nLgogICAgICAgICByZXR1cm4g
MDsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6
OkNhbmNlbDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkNhbmNlbDoKICAgICAgICAgLy8gVGhlICdj
YW5jZWwnIGtleSBkb2VzIG5vdCBleGlzdCBvbiBBcHBsZSBrZXlib2FyZHMgYW5kIGhhcyBubyBr
ZXlDb2RlLgogICAgICAgICAvLyBBY2NvcmRpbmcgdG8gdGhlIGludGVybmV0IGl0cyBmdW5jdGlv
bmFsaXR5IGlzIHNpbWlsYXIgdG8gJ0VzY2FwZScuCi0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpFc2NhcGU6CisgICAgY2FzZSBWaXJ0dWFsS2V5
OjpFc2NhcGU6CiAgICAgICAgIHJldHVybiBrVktfRXNjYXBlOwotICAgIGNhc2UgSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6UGFnZVVwOgorICAgIGNhc2UgVmly
dHVhbEtleTo6UGFnZVVwOgogICAgICAgICByZXR1cm4ga1ZLX1BhZ2VVcDsKLSAgICBjYXNlIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OlBhZ2VEb3duOgorICAg
IGNhc2UgVmlydHVhbEtleTo6UGFnZURvd246CiAgICAgICAgIHJldHVybiBrVktfUGFnZURvd247
Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpF
bmQ6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpFbmQ6CiAgICAgICAgIHJldHVybiBrVktfRW5kOwot
ICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6SG9t
ZToKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkhvbWU6CiAgICAgICAgIHJldHVybiBrVktfSG9tZTsK
LSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Okxl
ZnRBcnJvdzoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkxlZnRBcnJvdzoKICAgICAgICAgcmV0dXJu
IGtWS19MZWZ0QXJyb3c7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
OjpWaXJ0dWFsS2V5OjpVcEFycm93OgorICAgIGNhc2UgVmlydHVhbEtleTo6VXBBcnJvdzoKICAg
ICAgICAgcmV0dXJuIGtWS19VcEFycm93OwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbjo6VmlydHVhbEtleTo6UmlnaHRBcnJvdzoKKyAgICBjYXNlIFZpcnR1YWxLZXk6
OlJpZ2h0QXJyb3c6CiAgICAgICAgIHJldHVybiBrVktfUmlnaHRBcnJvdzsKLSAgICBjYXNlIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkRvd25BcnJvdzoKKyAg
ICBjYXNlIFZpcnR1YWxLZXk6OkRvd25BcnJvdzoKICAgICAgICAgcmV0dXJuIGtWS19Eb3duQXJy
b3c7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5
OjpJbnNlcnQ6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpJbnNlcnQ6CiAgICAgICAgIC8vIFRoZSAn
aW5zZXJ0JyBrZXkgZG9lcyBub3QgZXhpc3Qgb24gQXBwbGUga2V5Ym9hcmRzIGFuZCBoYXMgbm8g
a2V5Q29kZS4KICAgICAgICAgLy8gVGhlIHNlbWFudGljcyBhcmUgdW5jbGVhciBzbyBqdXN0IGFi
b3J0IGFuZCBkbyBub3RoaW5nLgogICAgICAgICByZXR1cm4gMDsKLSAgICBjYXNlIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkRlbGV0ZToKKyAgICBjYXNlIFZp
cnR1YWxLZXk6OkRlbGV0ZToKICAgICAgICAgcmV0dXJuIGtWS19Gb3J3YXJkRGVsZXRlOwotICAg
IGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6U3BhY2U6
CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpTcGFjZToKICAgICAgICAgcmV0dXJuIGtWS19TcGFjZTsK
LSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OlNl
bWljb2xvbjoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OlNlbWljb2xvbjoKICAgICAgICAgcmV0dXJu
IGtWS19BTlNJX1NlbWljb2xvbjsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9t
YXRpb246OlZpcnR1YWxLZXk6OkVxdWFsczoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkVxdWFsczoK
ICAgICAgICAgcmV0dXJuIGtWS19BTlNJX0VxdWFsOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6UmV0dXJuOgorICAgIGNhc2UgVmlydHVhbEtl
eTo6UmV0dXJuOgogICAgICAgICByZXR1cm4ga1ZLX1JldHVybjsKLSAgICBjYXNlIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZDA6CisgICAgY2Fz
ZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWQwOgogICAgICAgICByZXR1cm4ga1ZLX0FOU0lfS2V5cGFk
MDsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6
Ok51bWJlclBhZDE6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWQxOgogICAgICAgICBy
ZXR1cm4ga1ZLX0FOU0lfS2V5cGFkMTsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1
dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZDI6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpO
dW1iZXJQYWQyOgogICAgICAgICByZXR1cm4ga1ZLX0FOU0lfS2V5cGFkMjsKLSAgICBjYXNlIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZDM6Cisg
ICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWQzOgogICAgICAgICByZXR1cm4ga1ZLX0FOU0lf
S2V5cGFkMzsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1
YWxLZXk6Ok51bWJlclBhZDQ6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWQ0OgogICAg
ICAgICByZXR1cm4ga1ZLX0FOU0lfS2V5cGFkNDsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZDU6CisgICAgY2FzZSBWaXJ0dWFs
S2V5OjpOdW1iZXJQYWQ1OgogICAgICAgICByZXR1cm4ga1ZLX0FOU0lfS2V5cGFkNTsKLSAgICBj
YXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBh
ZDY6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWQ2OgogICAgICAgICByZXR1cm4ga1ZL
X0FOU0lfS2V5cGFkNjsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246
OlZpcnR1YWxLZXk6Ok51bWJlclBhZDc6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWQ3
OgogICAgICAgICByZXR1cm4ga1ZLX0FOU0lfS2V5cGFkNzsKLSAgICBjYXNlIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZDg6CisgICAgY2FzZSBW
aXJ0dWFsS2V5OjpOdW1iZXJQYWQ4OgogICAgICAgICByZXR1cm4ga1ZLX0FOU0lfS2V5cGFkODsK
LSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51
bWJlclBhZDk6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWQ5OgogICAgICAgICByZXR1
cm4ga1ZLX0FOU0lfS2V5cGFkOTsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9t
YXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZE11bHRpcGx5OgorICAgIGNhc2UgVmlydHVhbEtl
eTo6TnVtYmVyUGFkTXVsdGlwbHk6CiAgICAgICAgIHJldHVybiBrVktfQU5TSV9LZXlwYWRNdWx0
aXBseTsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxL
ZXk6Ok51bWJlclBhZEFkZDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZEFkZDoKICAg
ICAgICAgcmV0dXJuIGtWS19BTlNJX0tleXBhZFBsdXM7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlBy
b3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWRTdWJ0cmFjdDoKKyAgICBj
YXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZFN1YnRyYWN0OgogICAgICAgICByZXR1cm4ga1ZLX0FO
U0lfS2V5cGFkTWludXM7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
OjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWRTZXBhcmF0b3I6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpO
dW1iZXJQYWRTZXBhcmF0b3I6CiAgICAgICAgIC8vIFRoZSAnU2VwYXJhdG9yJyBrZXkgaXMgb25s
eSBwcmVzZW50IG9uIGEgZmV3IGludGVybmF0aW9uYWwga2V5Ym9hcmRzLgogICAgICAgICAvLyBJ
dCBpcyB1c3VhbGx5IG1hcHBlZCB0byB0aGUgc2FtZSBjaGFyYWN0ZXIgYXMgRGVjaW1hbCAoJy4n
IG9yICcsJykuCiAgICAgICAgIEZBTExUSFJPVUdIOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkRGVjaW1hbDoKKyAgICBjYXNl
IFZpcnR1YWxLZXk6Ok51bWJlclBhZERlY2ltYWw6CiAgICAgICAgIHJldHVybiBrVktfQU5TSV9L
ZXlwYWREZWNpbWFsOwogICAgICAgICAvLyBGSVhNRTogdGhpcyBtaWdodCBiZSBsb2NhbGUtZGVw
ZW5kZW50LiBTZWUgdGhlIGFib3ZlIGNvbW1lbnQuCi0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWREaXZpZGU6CisgICAgY2FzZSBW
aXJ0dWFsS2V5OjpOdW1iZXJQYWREaXZpZGU6CiAgICAgICAgIHJldHVybiBrVktfQU5TSV9LZXlw
YWREaXZpZGU7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0
dWFsS2V5OjpGdW5jdGlvbjE6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpGdW5jdGlvbjE6CiAgICAg
ICAgIHJldHVybiBrVktfRjE7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uOjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjI6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpGdW5jdGlv
bjI6CiAgICAgICAgIHJldHVybiBrVktfRjI7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29s
OjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjM6CisgICAgY2FzZSBWaXJ0dWFsS2V5
OjpGdW5jdGlvbjM6CiAgICAgICAgIHJldHVybiBrVktfRjM7Ci0gICAgY2FzZSBJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjQ6CisgICAgY2FzZSBW
aXJ0dWFsS2V5OjpGdW5jdGlvbjQ6CiAgICAgICAgIHJldHVybiBrVktfRjQ7Ci0gICAgY2FzZSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjU6Cisg
ICAgY2FzZSBWaXJ0dWFsS2V5OjpGdW5jdGlvbjU6CiAgICAgICAgIHJldHVybiBrVktfRjU7Ci0g
ICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5j
dGlvbjY6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpGdW5jdGlvbjY6CiAgICAgICAgIHJldHVybiBr
VktfRjY7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFs
S2V5OjpGdW5jdGlvbjc6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpGdW5jdGlvbjc6CiAgICAgICAg
IHJldHVybiBrVktfRjc7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
OjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjg6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpGdW5jdGlvbjg6
CiAgICAgICAgIHJldHVybiBrVktfRjg7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpB
dXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjk6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpG
dW5jdGlvbjk6CiAgICAgICAgIHJldHVybiBrVktfRjk7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlBy
b3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjEwOgorICAgIGNhc2UgVmly
dHVhbEtleTo6RnVuY3Rpb24xMDoKICAgICAgICAgcmV0dXJuIGtWS19GMTA7Ci0gICAgY2FzZSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjExOgor
ICAgIGNhc2UgVmlydHVhbEtleTo6RnVuY3Rpb24xMToKICAgICAgICAgcmV0dXJuIGtWS19GMTE7
Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpG
dW5jdGlvbjEyOgorICAgIGNhc2UgVmlydHVhbEtleTo6RnVuY3Rpb24xMjoKICAgICAgICAgcmV0
dXJuIGtWS19GMTI7CiAgICAgfQogfQogCi1zdGF0aWMgTlNFdmVudE1vZGlmaWVyRmxhZ3MgZXZl
bnRNb2RpZmllckZsYWdzRm9yVmlydHVhbEtleShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uOjpWaXJ0dWFsS2V5IGtleSkKK3N0YXRpYyBOU0V2ZW50TW9kaWZpZXJGbGFncyBldmVudE1v
ZGlmaWVyRmxhZ3NGb3JWaXJ0dWFsS2V5KFZpcnR1YWxLZXkga2V5KQogewogICAgIC8vIENvbXB1
dGVzIHRoZSBtb2RpZmllcnMgY2hhbmdlZCBieSB0aGUgdmlydHVhbCBrZXkgd2hlbiBpdCBpcyBw
cmVzc2VkIG9yIHJlbGVhc2VkLgogICAgIC8vIFRoZSBtYXBwaW5nIGZyb20ga2V5cyB0byBtb2Rp
ZmllcnMgaXMgc3BlY2lmaWVkIGluIHRoZSBkb2N1bWVudGF0aW9uIGZvciBOU0V2ZW50LgogICAg
IHN3aXRjaCAoa2V5KSB7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
OjpWaXJ0dWFsS2V5OjpTaGlmdDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OlNoaWZ0OgogICAgICAg
ICByZXR1cm4gTlNFdmVudE1vZGlmaWVyRmxhZ1NoaWZ0OwogCi0gICAgY2FzZSBJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpDb250cm9sOgorICAgIGNhc2UgVmly
dHVhbEtleTo6Q29udHJvbDoKICAgICAgICAgcmV0dXJuIE5TRXZlbnRNb2RpZmllckZsYWdDb250
cm9sOwogCi0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFs
S2V5OjpBbHRlcm5hdGU6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpBbHRlcm5hdGU6CiAgICAgICAg
IHJldHVybiBOU0V2ZW50TW9kaWZpZXJGbGFnT3B0aW9uOwogCi0gICAgY2FzZSBJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpNZXRhOgorICAgIGNhc2UgVmlydHVh
bEtleTo6TWV0YToKICAgICAgICAgLy8gVGhlICdtZXRhJyBrZXkgZG9lcyBub3QgZXhpc3Qgb24g
QXBwbGUga2V5Ym9hcmRzIGFuZCBpcyB1c3VhbGx5CiAgICAgICAgIC8vIG1hcHBlZCB0byB0aGUg
Q29tbWFuZCBrZXkgd2hlbiB1c2luZyB0aGlyZC1wYXJ0eSBrZXlib2FyZHMuCi0gICAgY2FzZSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpDb21tYW5kOgorICAg
IGNhc2UgVmlydHVhbEtleTo6Q29tbWFuZDoKICAgICAgICAgcmV0dXJuIE5TRXZlbnRNb2RpZmll
ckZsYWdDb21tYW5kOwogCi0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
OjpWaXJ0dWFsS2V5OjpIZWxwOgorICAgIGNhc2UgVmlydHVhbEtleTo6SGVscDoKICAgICAgICAg
cmV0dXJuIE5TRXZlbnRNb2RpZmllckZsYWdIZWxwIHwgTlNFdmVudE1vZGlmaWVyRmxhZ0Z1bmN0
aW9uOwogCi0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFs
S2V5OjpQYWdlVXA6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpW
aXJ0dWFsS2V5OjpQYWdlRG93bjoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9t
YXRpb246OlZpcnR1YWxLZXk6OkVuZDoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1
dG9tYXRpb246OlZpcnR1YWxLZXk6OkhvbWU6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpQYWdlVXA6
CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpQYWdlRG93bjoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkVu
ZDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkhvbWU6CiAgICAgICAgIHJldHVybiBOU0V2ZW50TW9k
aWZpZXJGbGFnRnVuY3Rpb247CiAKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9t
YXRpb246OlZpcnR1YWxLZXk6OkxlZnRBcnJvdzoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OlVwQXJyb3c6Ci0gICAgY2FzZSBJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpSaWdodEFycm93OgotICAgIGNhc2Ug
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RG93bkFycm93Ogor
ICAgIGNhc2UgVmlydHVhbEtleTo6TGVmdEFycm93OgorICAgIGNhc2UgVmlydHVhbEtleTo6VXBB
cnJvdzoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OlJpZ2h0QXJyb3c6CisgICAgY2FzZSBWaXJ0dWFs
S2V5OjpEb3duQXJyb3c6CiAgICAgICAgIHJldHVybiBOU0V2ZW50TW9kaWZpZXJGbGFnTnVtZXJp
Y1BhZCB8IE5TRXZlbnRNb2RpZmllckZsYWdGdW5jdGlvbjsKIAotICAgIGNhc2UgSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RGVsZXRlOgorICAgIGNhc2UgVmly
dHVhbEtleTo6RGVsZXRlOgogICAgICAgICByZXR1cm4gTlNFdmVudE1vZGlmaWVyRmxhZ0Z1bmN0
aW9uOwogCi0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFs
S2V5OjpDbGVhcjoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZp
cnR1YWxLZXk6Ok51bWJlclBhZDA6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRv
bWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWQxOgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkMjoKLSAgICBjYXNlIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZDM6Ci0gICAg
Y2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQ
YWQ0OgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtl
eTo6TnVtYmVyUGFkNToKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246
OlZpcnR1YWxLZXk6Ok51bWJlclBhZDY6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpB
dXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWQ3OgotICAgIGNhc2UgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkODoKLSAgICBjYXNlIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZDk6Ci0g
ICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1i
ZXJQYWRNdWx0aXBseToKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246
OlZpcnR1YWxLZXk6Ok51bWJlclBhZEFkZDoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZFN1YnRyYWN0OgotICAgIGNhc2UgSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkU2VwYXJh
dG9yOgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtl
eTo6TnVtYmVyUGFkRGVjaW1hbDoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9t
YXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZERpdmlkZToKKyAgICBjYXNlIFZpcnR1YWxLZXk6
OkNsZWFyOgorICAgIGNhc2UgVmlydHVhbEtleTo6TnVtYmVyUGFkMDoKKyAgICBjYXNlIFZpcnR1
YWxLZXk6Ok51bWJlclBhZDE6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWQyOgorICAg
IGNhc2UgVmlydHVhbEtleTo6TnVtYmVyUGFkMzoKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJl
clBhZDQ6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWQ1OgorICAgIGNhc2UgVmlydHVh
bEtleTo6TnVtYmVyUGFkNjoKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZDc6CisgICAg
Y2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWQ4OgorICAgIGNhc2UgVmlydHVhbEtleTo6TnVtYmVy
UGFkOToKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZE11bHRpcGx5OgorICAgIGNhc2Ug
VmlydHVhbEtleTo6TnVtYmVyUGFkQWRkOgorICAgIGNhc2UgVmlydHVhbEtleTo6TnVtYmVyUGFk
U3VidHJhY3Q6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWRTZXBhcmF0b3I6CisgICAg
Y2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWREZWNpbWFsOgorICAgIGNhc2UgVmlydHVhbEtleTo6
TnVtYmVyUGFkRGl2aWRlOgogICAgICAgICByZXR1cm4gTlNFdmVudE1vZGlmaWVyRmxhZ051bWVy
aWNQYWQ7CiAKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1
YWxLZXk6OkZ1bmN0aW9uMToKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRp
b246OlZpcnR1YWxLZXk6OkZ1bmN0aW9uMjoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkZ1bmN0aW9uMzoKLSAgICBjYXNlIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkZ1bmN0aW9uNDoKLSAgICBjYXNlIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkZ1bmN0aW9uNToKLSAg
ICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkZ1bmN0
aW9uNjoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxL
ZXk6OkZ1bmN0aW9uNzoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246
OlZpcnR1YWxLZXk6OkZ1bmN0aW9uODoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1
dG9tYXRpb246OlZpcnR1YWxLZXk6OkZ1bmN0aW9uOToKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkZ1bmN0aW9uMTA6Ci0gICAgY2FzZSBJbnNw
ZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjExOgotICAg
IGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RnVuY3Rp
b24xMjoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkZ1bmN0aW9uMToKKyAgICBjYXNlIFZpcnR1YWxL
ZXk6OkZ1bmN0aW9uMjoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkZ1bmN0aW9uMzoKKyAgICBjYXNl
IFZpcnR1YWxLZXk6OkZ1bmN0aW9uNDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkZ1bmN0aW9uNToK
KyAgICBjYXNlIFZpcnR1YWxLZXk6OkZ1bmN0aW9uNjoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkZ1
bmN0aW9uNzoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkZ1bmN0aW9uODoKKyAgICBjYXNlIFZpcnR1
YWxLZXk6OkZ1bmN0aW9uOToKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkZ1bmN0aW9uMTA6CisgICAg
Y2FzZSBWaXJ0dWFsS2V5OjpGdW5jdGlvbjExOgorICAgIGNhc2UgVmlydHVhbEtleTo6RnVuY3Rp
b24xMjoKICAgICAgICAgcmV0dXJuIE5TRXZlbnRNb2RpZmllckZsYWdGdW5jdGlvbjsKIAogICAg
IGRlZmF1bHQ6CkBAIC00MjcsMTkgKzQyNywzNCBAQCBzdGF0aWMgTlNFdmVudE1vZGlmaWVyRmxh
Z3MgZXZlbnRNb2RpZmllckZsYWdzRm9yVmlydHVhbEtleShJbnNwZWN0b3I6OlByb3RvY29sOgog
ICAgIH0KIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZUtl
eVN0cm9rZShXZWJQYWdlUHJveHkmIHBhZ2UsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRp
b246OktleWJvYXJkSW50ZXJhY3Rpb25UeXBlIGludGVyYWN0aW9uLCBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5IGtleSkKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Np
b246OnBsYXRmb3JtU2ltdWxhdGVLZXlib2FyZEludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYgcGFn
ZSwgS2V5Ym9hcmRJbnRlcmFjdGlvbiBpbnRlcmFjdGlvbiwgc3RkOjpvcHRpb25hbDxWaXJ0dWFs
S2V5PiB2aXJ0dWFsS2V5LCBzdGQ6Om9wdGlvbmFsPENoYXJLZXk+IGNoYXJLZXkpCiB7CiAgICAg
Ly8gRklYTUU6IHRoaXMgZnVuY3Rpb24gYW5kIHRoZSBBdXRvbWF0aW9uIHByb3RvY29sIGVudW0g
c2hvdWxkIHByb2JhYmx5IGFkb3B0IGtleSBuYW1lcwogICAgIC8vIGZyb20gVzNDIFVJRXZlbnRz
IHN0YW5kYXJkLiBGb3IgbW9yZSBkZXRhaWxzOiBodHRwczovL3czYy5naXRodWIuaW8vdWlldmVu
dHMtY29kZS8KIAotICAgIGJvb2wgaXNTdGlja3lNb2RpZmllciA9IGtleUhhc1N0aWNreU1vZGlm
aWVyKGtleSk7Ci0gICAgTlNFdmVudE1vZGlmaWVyRmxhZ3MgY2hhbmdlZE1vZGlmaWVycyA9IGV2
ZW50TW9kaWZpZXJGbGFnc0ZvclZpcnR1YWxLZXkoa2V5KTsKLSAgICBpbnQga2V5Q29kZSA9IGtl
eUNvZGVGb3JWaXJ0dWFsS2V5KGtleSk7CisgICAgQVNTRVJUKHZpcnR1YWxLZXkuaGFzX3ZhbHVl
KCkgfHwgY2hhcktleS5oYXNfdmFsdWUoKSk7CisKKyAgICBib29sIGlzU3RpY2t5TW9kaWZpZXIg
PSBmYWxzZTsKKyAgICBOU0V2ZW50TW9kaWZpZXJGbGFncyBjaGFuZ2VkTW9kaWZpZXJzID0gMDsK
KyAgICBpbnQga2V5Q29kZTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuaWNoYXI+IGNoYXJDb2RlOwor
ICAgIHN0ZDo6b3B0aW9uYWw8dW5pY2hhcj4gY2hhckNvZGVJZ25vcmluZ01vZGlmaWVyczsKKwor
ICAgIGlmICh2aXJ0dWFsS2V5Lmhhc192YWx1ZSgpKSB7CisgICAgICAgIGlzU3RpY2t5TW9kaWZp
ZXIgPSB2aXJ0dWFsS2V5SGFzU3RpY2t5TW9kaWZpZXIodmlydHVhbEtleS52YWx1ZSgpKTsKKyAg
ICAgICAgY2hhbmdlZE1vZGlmaWVycyA9IGV2ZW50TW9kaWZpZXJGbGFnc0ZvclZpcnR1YWxLZXko
dmlydHVhbEtleS52YWx1ZSgpKTsKKyAgICAgICAga2V5Q29kZSA9IGtleUNvZGVGb3JWaXJ0dWFs
S2V5KHZpcnR1YWxLZXkudmFsdWUoKSk7CisgICAgICAgIGNoYXJDb2RlID0gY2hhckNvZGVGb3JW
aXJ0dWFsS2V5KHZpcnR1YWxLZXkudmFsdWUoKSk7CisgICAgICAgIGNoYXJDb2RlSWdub3JpbmdN
b2RpZmllcnMgPSBjaGFyQ29kZUlnbm9yaW5nTW9kaWZpZXJzRm9yVmlydHVhbEtleSh2aXJ0dWFs
S2V5LnZhbHVlKCkpOworICAgIH0KKworICAgIGlmIChjaGFyS2V5Lmhhc192YWx1ZSgpKSB7Cisg
ICAgICAgIGNoYXJDb2RlID0gKHVuaWNoYXIpY2hhcktleS52YWx1ZSgpOworICAgICAgICBjaGFy
Q29kZUlnbm9yaW5nTW9kaWZpZXJzID0gKHVuaWNoYXIpY2hhcktleS52YWx1ZSgpOworICAgIH0K
IAogICAgIC8vIEZJWE1FOiBjb25zaWRlciB1c2luZyBBcHBLaXQgU1BJIHRvIG5vcm1hbGl6ZSAn
Y2hhcmFjdGVycycsIGkuZS4sIGNoYW5naW5nICogdG8gU2hpZnQtOCwKICAgICAvLyBhbmQgcGFz
c2luZyB0aGF0IGluIHRvIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycy4gV2UgY291bGQgaGFy
ZGNvZGUgdGhpcyBmb3IgQVNDSUkgaWYgbmVlZGVkLgotICAgIHN0ZDo6b3B0aW9uYWw8dW5pY2hh
cj4gY2hhckNvZGUgPSBjaGFyQ29kZUZvclZpcnR1YWxLZXkoa2V5KTsKLSAgICBzdGQ6Om9wdGlv
bmFsPHVuaWNoYXI+IGNoYXJDb2RlSWdub3JpbmdNb2RpZmllcnMgPSBjaGFyQ29kZUlnbm9yaW5n
TW9kaWZpZXJzRm9yVmlydHVhbEtleShrZXkpOwogICAgIE5TU3RyaW5nICpjaGFyYWN0ZXJzID0g
Y2hhckNvZGUgPyBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoYXJDb2RlLnZhbHVl
KCkgbGVuZ3RoOjFdIDogbmlsOwogICAgIE5TU3RyaW5nICp1bm1vZGlmaWVkQ2hhcmFjdGVycyA9
IGNoYXJDb2RlSWdub3JpbmdNb2RpZmllcnMgPyBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3Rl
cnM6JmNoYXJDb2RlSWdub3JpbmdNb2RpZmllcnMudmFsdWUoKSBsZW5ndGg6MV0gOiBuaWw7CiAK
QEAgLTQ1MiwxOSArNDY3LDE5IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3Jt
U2ltdWxhdGVLZXlTdHJva2UoV2ViUGFnZVByb3h5JiBwYWdlLCBJbnNwZWN0CiAgICAgTlNQb2lu
dCBldmVudFBvc2l0aW9uID0gTlNNYWtlUG9pbnQoMCwgd2luZG93LmZyYW1lLnNpemUuaGVpZ2h0
KTsKIAogICAgIHN3aXRjaCAoaW50ZXJhY3Rpb24pIHsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246OktleWJvYXJkSW50ZXJhY3Rpb25UeXBlOjpLZXlQcmVzczogewor
ICAgIGNhc2UgS2V5Ym9hcmRJbnRlcmFjdGlvbjo6S2V5UHJlc3M6IHsKICAgICAgICAgTlNFdmVu
dFR5cGUgZXZlbnRUeXBlID0gaXNTdGlja3lNb2RpZmllciA/IE5TRXZlbnRUeXBlRmxhZ3NDaGFu
Z2VkIDogTlNFdmVudFR5cGVLZXlEb3duOwogICAgICAgICBtX2N1cnJlbnRNb2RpZmllcnMgfD0g
Y2hhbmdlZE1vZGlmaWVyczsKICAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbTlNF
dmVudCBrZXlFdmVudFdpdGhUeXBlOmV2ZW50VHlwZSBsb2NhdGlvbjpldmVudFBvc2l0aW9uIG1v
ZGlmaWVyRmxhZ3M6bV9jdXJyZW50TW9kaWZpZXJzIHRpbWVzdGFtcDp0aW1lc3RhbXAgd2luZG93
TnVtYmVyOndpbmRvd051bWJlciBjb250ZXh0Om5pbCBjaGFyYWN0ZXJzOmNoYXJhY3RlcnMgY2hh
cmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOnVubW9kaWZpZWRDaGFyYWN0ZXJzIGlzQVJlcGVhdDpO
TyBrZXlDb2RlOmtleUNvZGVdXTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6S2V5Ym9hcmRJbnRlcmFjdGlvblR5cGU6Oktl
eVJlbGVhc2U6IHsKKyAgICBjYXNlIEtleWJvYXJkSW50ZXJhY3Rpb246OktleVJlbGVhc2U6IHsK
ICAgICAgICAgTlNFdmVudFR5cGUgZXZlbnRUeXBlID0gaXNTdGlja3lNb2RpZmllciA/IE5TRXZl
bnRUeXBlRmxhZ3NDaGFuZ2VkIDogTlNFdmVudFR5cGVLZXlVcDsKICAgICAgICAgbV9jdXJyZW50
TW9kaWZpZXJzICY9IH5jaGFuZ2VkTW9kaWZpZXJzOwogICAgICAgICBbZXZlbnRzVG9CZVNlbnQg
YWRkT2JqZWN0OltOU0V2ZW50IGtleUV2ZW50V2l0aFR5cGU6ZXZlbnRUeXBlIGxvY2F0aW9uOmV2
ZW50UG9zaXRpb24gbW9kaWZpZXJGbGFnczptX2N1cnJlbnRNb2RpZmllcnMgdGltZXN0YW1wOnRp
bWVzdGFtcCB3aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmlsIGNoYXJhY3RlcnM6
Y2hhcmFjdGVycyBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6dW5tb2RpZmllZENoYXJhY3Rl
cnMgaXNBUmVwZWF0Ok5PIGtleUNvZGU6a2V5Q29kZV1dOwogICAgICAgICBicmVhazsKICAgICB9
Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpLZXlib2FyZEludGVy
YWN0aW9uVHlwZTo6SW5zZXJ0QnlLZXk6IHsKKyAgICBjYXNlIEtleWJvYXJkSW50ZXJhY3Rpb246
Okluc2VydEJ5S2V5OiB7CiAgICAgICAgIC8vIFN0aWNreSBtb2RpZmllcnMgc2hvdWxkIGVpdGhl
ciBiZSAnS2V5UHJlc3MnIG9yICdLZXlSZWxlYXNlJy4KICAgICAgICAgQVNTRVJUKCFpc1N0aWNr
eU1vZGlmaWVyKTsKICAgICAgICAgaWYgKGlzU3RpY2t5TW9kaWZpZXIpCkBAIC01NTEsNyArNTY2
LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZUtleVNlcXVl
bmNlKFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QKIAogICAgICAgICBbZXZlbnRzVG9CZVNlbnQg
YWRkT2JqZWN0OltOU0V2ZW50IGtleUV2ZW50V2l0aFR5cGU6TlNFdmVudFR5cGVLZXlEb3duIGxv
Y2F0aW9uOmV2ZW50UG9zaXRpb24gbW9kaWZpZXJGbGFnczptb2RpZmllcnNGb3JLZXlzdHJva2Ug
dGltZXN0YW1wOnRpbWVzdGFtcCB3aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmls
IGNoYXJhY3RlcnM6c3Vic3RyaW5nIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczpzdWJzdHJp
bmcgaXNBUmVwZWF0Ok5PIGtleUNvZGU6MF1dOwogICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRk
T2JqZWN0OltOU0V2ZW50IGtleUV2ZW50V2l0aFR5cGU6TlNFdmVudFR5cGVLZXlVcCBsb2NhdGlv
bjpldmVudFBvc2l0aW9uIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJzRm9yS2V5c3Ryb2tlIHRpbWVz
dGFtcDp0aW1lc3RhbXAgd2luZG93TnVtYmVyOndpbmRvd051bWJlciBjb250ZXh0Om5pbCBjaGFy
YWN0ZXJzOnN1YnN0cmluZyBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6c3Vic3RyaW5nIGlz
QVJlcGVhdDpOTyBrZXlDb2RlOjBdXTsKLSAgICAgICAgCisKICAgICAgICAgaWYgKHNob3VsZFBy
ZXNzU2hpZnQpCiAgICAgICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltOU0V2ZW50
IGtleUV2ZW50V2l0aFR5cGU6TlNFdmVudFR5cGVGbGFnc0NoYW5nZWQgbG9jYXRpb246ZXZlbnRQ
b3NpdGlvbiBtb2RpZmllckZsYWdzOm1fY3VycmVudE1vZGlmaWVycyB0aW1lc3RhbXA6dGltZXN0
YW1wIHdpbmRvd051bWJlcjp3aW5kb3dOdW1iZXIgY29udGV4dDpuaWwgY2hhcmFjdGVyczpAIiIg
Y2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOkAiIiBpc0FSZXBlYXQ6Tk8ga2V5Q29kZTprVktf
U2hpZnRdXTsKICAgICB9XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IGFkMTU0NzU5MGM2ZmQzYTA4NWQxZDRlZjlkNmNjYzkwNWEzNzY2
ZWQuLmU3OWFhOWE2NWU5ZTE3YzQ0ODEzOTE2YzNiNTUzNTJjYjBiODg1ZmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTUyOSw2ICsx
NTI5LDggQEAKIAkJOTk0NkVGODYxRTdCMDI3MDAwNTQxRTc5IC8qIFdlYkF1dG9tYXRpb25TZXNz
aW9uSU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTk0NkVGODUxRTdCMDI2NjAwNTQxRTc5IC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uSU9TLm1tICov
OyB9OwogCQk5OTRCQURGMzFGN0Q3ODExMDBCNTcxRTcgLyogV0tJbnNwZWN0b3JWaWV3Q29udHJv
bGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5
NEJBREYyMUY3RDc3RUIwMEI1NzFFNyAvKiBXS0luc3BlY3RvclZpZXdDb250cm9sbGVyLm1tICov
OyB9OwogCQk5OTRCQURGNDFGN0Q3ODE0MDBCNTcxRTcgLyogV0tJbnNwZWN0b3JWaWV3Q29udHJv
bGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk0
QkFERjExRjdENzdFQTAwQjU3MUU3IC8qIFdLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIuaCAqLzsg
fTsKKwkJOTk1MjI2RDYyMDdEMTg0NjAwRjc4NDIwIC8qIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk1MjI2
RDQyMDdEMTg0NTAwRjc4NDIwIC8qIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5oICovOyB9Owor
CQk5OTUyMjZENzIwN0QxODQ2MDBGNzg0MjAgLyogU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5NTIyNkQ1
MjA3RDE4NDYwMEY3ODQyMCAvKiBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuY3BwICovOyB9Owog
CQk5OTU1QTZFQzFDNzk4MEMyMDBFQjZBOTMgLyogV2ViQXV0b21hdGlvblNlc3Npb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5NTVBNkVCMUM3OTgw
QkIwMEVCNkE5MyAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbi5oICovOyB9OwogCQk5OTU1QTZFRDFD
Nzk4MENBMDBFQjZBOTMgLyogV2ViQXV0b21hdGlvblNlc3Npb24uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk1NUE2RUExQzc5ODBCQjAwRUI2QTkz
IC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uLmNwcCAqLzsgfTsKIAkJOTk1NUE2RUYxQzc5ODEwODAw
RUI2QTkzIC8qIEF1dG9tYXRpb24uanNvbiBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDk5NTVBNkU5MUM3OTgwQkIwMEVCNkE5MyAvKiBBdXRvbWF0aW9uLmpz
b24gKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQw
MTksNiArNDAyMSw4IEBACiAJCTk5NDZFRjg1MUU3QjAyNjYwMDU0MUU3OSAvKiBXZWJBdXRvbWF0
aW9uU2Vzc2lvbklPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFdlYkF1dG9tYXRpb25TZXNzaW9uSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5OTRCQURGMTFGN0Q3N0VBMDBCNTcxRTcgLyogV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0luc3BlY3RvclZpZXdDb250cm9s
bGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5NEJBREYyMUY3RDc3RUIwMEI1
NzFFNyAvKiBXS0luc3BlY3RvclZpZXdDb250cm9sbGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTk1MjI2RDQyMDdEMTg0NTAwRjc4NDIwIC8qIFNpbXVs
YXRlZElucHV0RGlzcGF0Y2hlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
aW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
OTk1MjI2RDUyMDdEMTg0NjAwRjc4NDIwIC8qIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaW11bGF0ZWRJbnB1dERpc3Bh
dGNoZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTU1QTZFOTFDNzk4MEJC
MDBFQjZBOTMgLyogQXV0b21hdGlvbi5qc29uICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5qc29uOyBwYXRoID0g
QXV0b21hdGlvbi5qc29uOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTU1QTZFQTFD
Nzk4MEJCMDBFQjZBOTMgLyogV2ViQXV0b21hdGlvblNlc3Npb24uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQXV0b21hdGlvblNlc3Npb24uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5OTU1QTZFQjFDNzk4MEJCMDBFQjZBOTMgLyogV2ViQXV0
b21hdGlvblNlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQXV0
b21hdGlvblNlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY5NzAsNiAr
Njk3NCw4IEBACiAJCQkJOTk0NkVGODIxRTdCMDIzRDAwNTQxRTc5IC8qIGlvcyAqLywKIAkJCQk5
OUMzQUUyMjFEQUQ4RTE0MDBBRjVDMTYgLyogbWFjICovLAogCQkJCTk5NTVBNkU5MUM3OTgwQkIw
MEVCNkE5MyAvKiBBdXRvbWF0aW9uLmpzb24gKi8sCisJCQkJOTk1MjI2RDUyMDdEMTg0NjAwRjc4
NDIwIC8qIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5jcHAgKi8sCisJCQkJOTk1MjI2RDQyMDdE
MTg0NTAwRjc4NDIwIC8qIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5oICovLAogCQkJCTk5NTVB
NkVBMUM3OTgwQkIwMEVCNkE5MyAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgKi8sCiAJCQkJ
OTk1NUE2RUIxQzc5ODBCQjAwRUI2QTkzIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uLmggKi8sCiAJ
CQkJMUMwQTE5NTkxQzkwMDZFQTAwRkUwRUJCIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uLm1lc3Nh
Z2VzLmluICovLApAQCAtOTE3NCw2ICs5MTgwLDcgQEAKIAkJCQk4MzEzRjdFQzFGN0RBRTA4MDBC
OTQ0RUIgLyogU2hhcmVkU3RyaW5nSGFzaFN0b3JlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzEz
RjdFRTFGN0RBRTA4MDBCOTQ0RUIgLyogU2hhcmVkU3RyaW5nSGFzaFRhYmxlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk4M0Y5NjQ0RTFGQTBGNzZFMDBDNDc3NTAgLyogU2hhcmVkU3RyaW5nSGFzaFRh
YmxlUmVhZE9ubHkuaCBpbiBIZWFkZXJzICovLAorCQkJCTk5NTIyNkQ2MjA3RDE4NDYwMEY3ODQy
MCAvKiBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEQUYw
NkQ2MThCRDFBNDcwMDgxQ0VCMSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQkyREU2OTQzRTE4QkQyQTY4MDA1QzE1RTUgLyogU21hcnRNYWduaWZp
Y2F0aW9uQ29udHJvbGxlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MjcyQjI4QjE0
MDY5ODVEMDA5NkE1RDAgLyogU3RhdGlzdGljc0RhdGEuaCBpbiBIZWFkZXJzICovLApAQCAtMTA4
NzYsNiArMTA4ODMsNyBAQAogCQkJCTgzMTNGN0VCMUY3REFFMDgwMEI5NDRFQiAvKiBTaGFyZWRT
dHJpbmdIYXNoU3RvcmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODMxM0Y3RUQxRjdEQUUwODAw
Qjk0NEVCIC8qIFNoYXJlZFN0cmluZ0hhc2hUYWJsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4
M0Y5NjQ0RDFGQTBGNzZFMDBDNDc3NTAgLyogU2hhcmVkU3RyaW5nSGFzaFRhYmxlUmVhZE9ubHku
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTk1MjI2RDcyMDdEMTg0NjAwRjc4NDIwIC8qIFNpbXVs
YXRlZElucHV0RGlzcGF0Y2hlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyREFGMDZENzE4QkQx
QTQ3MDA4MUNFQjEgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTJERTY5NDNEMThCRDJBNjgwMDVDMTVFNSAvKiBTbWFydE1hZ25pZmljYXRpb25D
b250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUyNzJCMjhB
MTQwNjk4NUQwMDk2QTVEMCAvKiBTdGF0aXN0aWNzRGF0YS5jcHAgaW4gU291cmNlcyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338083</attachid>
            <date>2018-04-17 00:13:09 -0700</date>
            <delta_ts>2018-04-17 03:43:46 -0700</delta_ts>
            <desc>Proposed Fix - depends on 184462</desc>
            <filename>bug-184603-20180417001308.patch</filename>
            <type>text/plain</type>
            <size>103110</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwNzAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNiYjE1OTBlZTMwOTA1NDUx
YmE0NTQyYjA5YzNmOGE1YzIzNDNlNDUuLjUwZDI0MGE0ZjgxZDMxMjhkZDg5YjVhNjFiMjkxMzBj
NzA1NzNmY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTI5IEBACisyMDE4LTA0LTEzICBCcmlhbiBC
dXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBBdXRvbWF0aW9uOiBhZGQgc3Vw
cG9ydCBmb3IgbW91c2Uva2V5Ym9hcmQgaW50ZXJhY3Rpb24gc2VxdWVuY2VzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQ2MDMKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzM5NDIxODM5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCBuZXcgcHJvdG9jb2wgbWV0aG9kcyBhbmQgV2ViS2l0IHN1cHBv
cnQgZm9yIGltcGxlbWVudGluZyB0aGUgVzNDIEFjdGlvbnMgQVBJLgorICAgICAgICBUaGlzIGlz
IGEgZ2VuZXJpYyBjb21tYW5kIGZvciBzZW5kaW5nIGxvdy1sZXZlbCBtb3VzZSwga2V5LCBhbmQg
dG91Y2ggZXZlbnRzIHRvCisgICAgICAgIHRlc3QgcGFnZSBiZWhhdmlvciB3aGVuIHBlcmZvcm1p
bmcgZHJhZy1hbmQtZHJvcCwgZ2VzdHVyZXMsIG9yIHNwZWNpZmljIGtleWRvd24va2V5dXBzLgor
CisgICAgICAgIFRvIGltcGxlbWVudCB0aGlzIGZ1bmN0aW9uYWxpdHksIHRoaXMgcGF0Y2ggYWRk
cyBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIsIGEgY2xhc3MKKyAgICAgICAgZm9yIGRpc3BhdGNo
aW5nIGlucHV0IGV2ZW50cyBhc3luY2hyb25vdXNseS4gU2ltaWxhciB0byB0aGUgV2ViRHJpdmVy
IHNwZWNpZmljYXRpb24sCisgICAgICAgIHRoaXMgaXMgZGVzaWduZWQgYXMgYSBrZXlmcmFtaW5n
IEFQSS4gQ2FsbGVycyBzZXQgdXAgc2V2ZXJhbCAiaW5wdXQgc291cmNlcyIgc3VjaAorICAgICAg
ICBhcyBrZXlib2FyZCBvciBtb3VzZSwgYW5kIHRoZW4gc3BlY2lmeSB0aGUgc3RhdGVzIG9mIHRo
YXQgaW5wdXQgc291cmNlIG92ZXIgdGltZS4gVGhlCisgICAgICAgIGRpc3BhdGNoZXIgY2FsY3Vs
YXRlcyBkaWZmcyBiZXR3ZWVuIHRoZSBwcmV2aW91cyBhbmQgY3VycmVudCBrZXlmcmFtZXMgYW5k
IGdlbmVyYXRlcworICAgICAgICB0aGUgYXBwcm9wcmlhdGUgZXZlbnRzIHRoYXQgd291bGQgaGFw
cGVuIGlmIGEgdXNlciBjYXVzZWQgdGhlIHN0YXRlIHRyYW5zaXRpb24uCisKKyAgICAgICAgRm9y
IGV4YW1wbGUsIGlmIGEgbW91c2UgaW5wdXQgc291cmNlJ3Mgc3RhdGUgY2hhbmdlcywgdGhlIGRp
c3BhdGNoZXIgc2VuZHMgc3ludGhldGljIG1vdXNlbW92ZSwKKyAgICAgICAgbW91c2Vkb3duLCBv
ciBtb3VzZXVwIGV2ZW50cyBkZXBlbmRpbmcgb24gdGhlIHByZS0gYW5kIHBvc3Qtc3RhdGUuIFRo
aXMgaXMgdW5pbnRlcmVzdGluZworICAgICAgICBhbmQgb3ZlcmNvbXBsaWNhdGVkIGZvciBzaW1w
bGUga2V5IGFuZCBtb3VzZSBwcmVzc2VzLCBidXQgaXQncyByZWFsbHkgZGVzaWduZWQgd2l0aCBh
bgorICAgICAgICBleWUgdG93YXJkcyBzdXBwb3J0aW5nIG1vdXNlbW92ZSBpbnRlcnBvbGF0aW9u
IGFuZCB0b3VjaCBldmVudCBpbnRlcnBvbGF0aW9uIGluIGxhdGVyIHBhdGNoZXMuCisKKyAgICAg
ICAgVGhlIHN0cmF0ZWd5IGZvciBkaXNwYXRjaGluZyBldmVudHMgZGVwZW5kcyBvbiB0aGUgaW5w
dXQgc291cmNlIHR5cGU7IHJpZ2h0IG5vdywgdGhlc2UKKyAgICAgICAgbWFwIGRpcmVjdGx5IHRv
IHRoZSBleGlzdGluZyBwbGF0Zm9ybVNpbXVsYXRle01vdXNlLCBLZXlib2FyZH1JbnRlcmFjdGlv
biBtZXRob2RzLiBJbgorICAgICAgICB0aGUgZnV0dXJlLCB0aGUgZGlzcGF0Y2ggc3RyYXRlZ3kg
bWF5IGJlIGVsYWJvcmF0ZWQgZm9yIGludGVycG9sYXRlZCBtb3VzZW1vdmUgZXZlbnRzLgorCisg
ICAgICAgIFRoaXMgcGF0Y2ggZGVwZW5kcyBvbiBzdXBwb3J0IGFkZGVkIGluIGJ1ZyAxODQ0NjIu
CisKKyAgICAgICAgTm8gdGVzdHMgeWV0LiBXaGVuIHRoaXMgY29tbWFuZCBpcyBob29rZWQgdXAg
dG8gYSBkcml2ZXIsIHRoZSBjb2RlIHdpbGwgYmUgZXhlcmNpc2VkIGJ5CisgICAgICAgIFczQyBh
Y3Rpb25zIHRlc3Qgc3VpdGUsIHdoaWNoIGlzIGZhaXJseSBjb21wbGV4IGF0IHRoaXMgcG9pbnQg
cmVsYXRpdmUgdG8gZW5kLXVzZXIgY29kZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0
aW9uL0F1dG9tYXRpb24uanNvbjogQWRkIG5ldyB0eXBlcyBhbmQgY29tbWFuZHMuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9TaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuaDogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6OlNpbXVsYXRlZElucHV0U291cmNlU3RhdGU6OmVtcHR5U3Rh
dGUpOgorICAgICAgICAoV2ViS2l0OjpTaW11bGF0ZWRJbnB1dFNvdXJjZTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYktpdDo6U2ltdWxhdGVkSW5wdXRTb3VyY2U6OlNpbXVsYXRlZElucHV0U291cmNl
KToKKyAgICAgICAgKFdlYktpdDo6U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjpDbGllbnQ6On5D
bGllbnQpOgorICAgICAgICBBZGQgc3RydWN0cyBmb3IgaW5wdXQgc291cmNlLCBzb3VyY2Ugc3Rh
dGUsIGFuZCBrZXlmcmFtZS4KKyAgICAgICAgVGhlIGRpc3BhdGNoZXIncyBjbGllbnQgaW50ZXJm
YWNlIGlzIGltcGxlbWVudGVkIGJ5IFdlYkF1dG9tYXRpb25TZXNzaW9uLgorCisgICAgICAgIChX
ZWJLaXQ6OlNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQXV0b21hdGlvbi9TaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6U2ltdWxhdGVkSW5wdXRLZXlGcmFtZTo6U2ltdWxhdGVkSW5wdXRLZXlG
cmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlNpbXVsYXRlZElucHV0S2V5RnJhbWU6Om1heGltdW1E
dXJhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNpbXVsYXRlZElucHV0S2V5RnJhbWU6
OmtleUZyYW1lRnJvbVN0YXRlT2ZJbnB1dFNvdXJjZXMpOgorICAgICAgICAoV2ViS2l0OjpTaW11
bGF0ZWRJbnB1dEtleUZyYW1lOjprZXlGcmFtZVRvUmVzZXRJbnB1dFNvdXJjZXMpOgorICAgICAg
ICAoV2ViS2l0OjpTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OlNpbXVsYXRlZElucHV0RGlzcGF0
Y2hlcik6CisgICAgICAgIChXZWJLaXQ6OlNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6flNpbXVs
YXRlZElucHV0RGlzcGF0Y2hlcik6CisgICAgICAgIChXZWJLaXQ6OlNpbXVsYXRlZElucHV0RGlz
cGF0Y2hlcjo6aXNBY3RpdmUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTaW11bGF0ZWRJbnB1
dERpc3BhdGNoZXI6OmtleUZyYW1lVHJhbnNpdGlvbkR1cmF0aW9uVGltZXJGaXJlZCk6CisgICAg
ICAgIChXZWJLaXQ6OlNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6aXNLZXlGcmFtZVRyYW5zaXRp
b25Db21wbGV0ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNpbXVsYXRlZElucHV0RGlzcGF0
Y2hlcjo6dHJhbnNpdGlvblRvTmV4dEtleUZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6U2ltdWxh
dGVkSW5wdXREaXNwYXRjaGVyOjp0cmFuc2l0aW9uVG9OZXh0SW5wdXRTb3VyY2VTdGF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6dHJhbnNpdGlvbkJldHdl
ZW5LZXlGcmFtZXMpOgorICAgICAgICAoV2ViS2l0OjpTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6
OnRyYW5zaXRpb25JbnB1dFNvdXJjZVRvU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpTaW11bGF0
ZWRJbnB1dERpc3BhdGNoZXI6OnJ1bik6CisgICAgICAgIChXZWJLaXQ6OlNpbXVsYXRlZElucHV0
RGlzcGF0Y2hlcjo6Y2FuY2VsKToKKyAgICAgICAgKFdlYktpdDo6U2ltdWxhdGVkSW5wdXREaXNw
YXRjaGVyOjpmaW5pc2hEaXNwYXRjaGluZyk6CisgICAgICAgIFRoZSBkaXNwYXRjaGVyIGhhbmRs
ZXMgb25lIGludGVyYWN0aW9uIGF0IGEgdGltZS4gVGhlIGludGVyYWN0aW9uIGlzIGRlc2NyaWJl
ZAorICAgICAgICBieSBhbiBhcnJheSBvZiBrZXlmcmFtZXMsIGFuZCBlYWNoIGtleWZyYW1lIGhh
cyBhbiBhcnJheSBvZiBzdGF0ZXMuIFRoZSBkaXNwYXRjaGVyCisgICAgICAgIHRyYW5zaXRpb25z
IGJldHdlZW4ga2V5ZnJhbWVzIGJ5IHNlcXVlbnRpYWxseSBhbmQgYXN5bmNocm9ub3VzbHkgZW1p
dHRpbmcgZXZlbnRzCisgICAgICAgIHRoYXQgY2F1c2UgZWFjaCBpbnB1dCBzb3VyY2Ugc3RhdGUg
dG8gdHJhbnNpdGlvbiBhcyBkZXNpcmVkLiBLZXlmcmFtZSB0cmFuc2l0aW9ucworICAgICAgICBh
cmUgYWRkaXRpb25hbGx5IGdhdGVkIGJ5IGEgIm1heGltdW0gZHVyYXRpb24iIHRpbWVyLiBFYWNo
IHN0ZXAgdGhhdCB0aGUgZGlzcGF0Y2hlcgorICAgICAgICBleGVjdXRlcyBpcyBhc3luY2hyb25v
dXMsIHNvIHRoZSBkaXNwYXRjaGVyIGtlZXBzIG1vc3Qgc3RhdGUgaW4gbWVtYmVycyBhbmQgdXNl
cworICAgICAgICBlcnJvciBhcmd1bWVudCBsYW1iZGFzIGFzIGNvbXBsZXRpb24gaGFuZGxlcnMg
Zm9yIHZhcmlvdXMgYXN5bmMgdGhpbmdzLgorCisgICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRp
b24vV2ViQXV0b21hdGlvblNlc3Npb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlv
bi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRp
b25TZXNzaW9uOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkF1
dG9tYXRpb25TZXNzaW9uOjppbnB1dERpc3BhdGNoZXJGb3JQYWdlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViQXV0b21hdGlvblNlc3Npb246OmlucHV0U291cmNlRm9yVHlwZSBjb25zdCk6CisgICAg
ICAgIEFkZCBjYW5vbmljYWwgaW5wdXQgc291cmNlcyB0aGF0IGFyZSB1c2VkIHRvIGtlZXAgdHJh
Y2sgb2Ygc3RhdGUgYWNyb3NzCisgICAgICAgIGludGVyYWN0aW9uIHNlcXVlbmNlcy4KKworICAg
ICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6aXNTaW11bGF0aW5nVXNlckludGVy
YWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246Om1v
dXNlRXZlbnRzRmx1c2hlZEZvclBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9u
U2Vzc2lvbjo6a2V5Ym9hcmRFdmVudHNGbHVzaGVkRm9yUGFnZSk6CisgICAgICAgIFJlbW92ZSBt
X3NpbXVsYXRpbmdVc2VySW50ZXJhY3Rpb24gc2luY2UgaXQgY2FuIGJlIGNvbXB1dGVkIGJhc2Vk
IG9uIG90aGVyIG1lbWJlcnMuCisKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Np
b246OndpbGxDbG9zZVBhZ2UpOgorICAgICAgICBJZiB0aGUgcGFnZSBpcyBiZWluZyB0b3JuIGRv
d24sIHN0b3AgdGhlIGRpc3BhdGNoZXIgaWYgbmVlZGVkIGFuZCBjYW5jZWwgYW55CisgICAgICAg
IGNhbGxiYWNrcyB3YWl0aW5nIGZvciBtb3VzZS9rZXkgZXZlbnRzIHRvIGJlIHJldGlyZWQuCisK
KyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OnNpbXVsYXRlTW91c2VJbnRl
cmFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpzaW11bGF0
ZUtleWJvYXJkSW50ZXJhY3Rpb24pOgorICAgICAgICBBZGQgZWFzeS10by11c2UgYXN5bmMgbWV0
aG9kcyBmb3Igc2ltdWxhdGluZyBtb3VzZSBhbmQga2V5IGV2ZW50cy4gVGhlc2UgYXJlCisgICAg
ICAgIGhvb2tlZCB1cCB0byBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIgdXNpbmcgYXN5bmMgY29t
cGxldGlvbiBoYW5kbGVycy4KKworICAgICAgICAoV2ViS2l0Ojpwcm90b2NvbE1vdXNlQnV0dG9u
VG9XZWJNb3VzZUV2ZW50QnV0dG9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNl
c3Npb246OnBlcmZvcm1Nb3VzZUludGVyYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0
b21hdGlvblNlc3Npb246OnBlcmZvcm1LZXlib2FyZEludGVyYWN0aW9ucyk6CisgICAgICAgIEFk
anVzdCBzb21lIG5hbWluZy4KKworICAgICAgICAoV2ViS2l0OjpzaW11bGF0ZWRJbnB1dFNvdXJj
ZVR5cGVGcm9tUHJvdG9jb2xTb3VyY2VUeXBlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21h
dGlvblNlc3Npb246OnBlcmZvcm1JbnRlcmFjdGlvblNlcXVlbmNlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViQXV0b21hdGlvblNlc3Npb246OmNhbmNlbEludGVyYWN0aW9uU2VxdWVuY2UpOgorICAg
ICAgICBBZGQgY29tbWFuZCBoYW5kbGVycyBmb3IgdGhlIG5ldyBhY3Rpb24gY29tbWFuZHMgaW4g
QXV0b21hdGlvbiBwcm90b2NvbC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL2d0
ay9XZWJBdXRvbWF0aW9uU2Vzc2lvbkd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1vdXNlQnV0
dG9uVG9HZGtCdXR0b24pOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6
cGxhdGZvcm1TaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJB
dXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZUtleWJvYXJkSW50ZXJhY3Rpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZUtl
eVN0cm9rZSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRpb24vaW9zL1dl
YkF1dG9tYXRpb25TZXNzaW9uSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9u
U2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZUtleWJvYXJkSW50ZXJhY3Rpb24pOgorICAgICAgICAo
V2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZUtleVN0cm9rZSk6
IERlbGV0ZWQuCisgICAgICAgIFJlbmFtZSB0aGUga2V5Ym9hcmQgcGxhdGZvcm0gbWV0aG9kIHRv
IG1hdGNoIHRoZSBuYW1pbmcgb2YgdGhlIG1vdXNlIHBsYXRmb3JtIG1ldGhvZC4KKyAgICAgICAg
VGFrZSBhZHZhbnRhZ2Ugb2YgdGhlICd1c2luZycgYWxpYXMgdG8gbWFrZSB0aGUgdGVkaW91cyBz
d2l0Y2hlcyBlYXNpZXIgdG8gcmVhZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9u
L21hYy9XZWJBdXRvbWF0aW9uU2Vzc2lvbk1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0
b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVNb3VzZUludGVyYWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6dmlydHVhbEtleUhhc1N0aWNreU1vZGlmaWVyKToKKyAgICAgICAgKFdlYktp
dDo6a2V5Q29kZUZvclZpcnR1YWxLZXkpOgorICAgICAgICAoV2ViS2l0OjpldmVudE1vZGlmaWVy
RmxhZ3NGb3JWaXJ0dWFsS2V5KToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Np
b246OnBsYXRmb3JtU2ltdWxhdGVLZXlib2FyZEludGVyYWN0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6V2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVLZXlTZXF1ZW5jZSk6Cisg
ICAgICAgIChXZWJLaXQ6OmtleUhhc1N0aWNreU1vZGlmaWVyKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVLZXlTdHJva2Up
OiBEZWxldGVkLgorICAgICAgICBBbGxvdyB0aGUga2V5Ym9hcmQgc2ltdWxhdGlvbiBtZXRob2Qg
dG8gdGFrZSBhIHZpcnR1YWwga2V5IGFuZCB1bmljaGFyIHRvIGJldHRlcgorICAgICAgICBtYXRj
aCBob3cgdGhpcyBpcyB1c2VkIGJ5IHRoZSBQZXJmb3JtIEFjdGlvbnMgY29tbWFuZCBhbmQgaXRz
IG1hY2hpbmVyeS4KKworICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorCiAyMDE4LTA0LTExICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgogCiAgICAgICAg
IFdlYiBBdXRvbWF0aW9uOiBzaW11bGF0ZWQgbW91c2UgaW50ZXJhY3Rpb25zIHNob3VsZCBub3Qg
YmUgZG9uZSB1bnRpbCBhc3NvY2lhdGVkIERPTSBldmVudHMgaGF2ZSBiZWVuIGRpc3BhdGNoZWQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vQXV0b21hdGlv
bi5qc29uIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9BdXRvbWF0aW9uLmpz
b24KaW5kZXggN2U4NmQxNDljMjVjMTkxNDA0MjFkMzg4NGE1MWJiNmMwZjllNjI5MC4uYzMxN2Ux
YTI2MjBkOWRlN2NhNmM4YWE2M2FkMzI4NzA5YjEyNmJlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9BdXRvbWF0aW9uLmpzb24KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9BdXRvbWF0aW9uLmpzb24KQEAgLTcyLDcgKzcyLDgg
QEAKICAgICAgICAgICAgICAgICAiRWxlbWVudE5vdEludGVyYWN0YWJsZSIsCiAgICAgICAgICAg
ICAgICAgIkVsZW1lbnROb3RTZWxlY3RhYmxlIiwKICAgICAgICAgICAgICAgICAiU2NyZWVuc2hv
dEVycm9yIiwKLSAgICAgICAgICAgICAgICAiVW5leHBlY3RlZEFsZXJ0T3BlbiIKKyAgICAgICAg
ICAgICAgICAiVW5leHBlY3RlZEFsZXJ0T3BlbiIsCisgICAgICAgICAgICAgICAgIlRhcmdldE91
dE9mQm91bmRzIgogICAgICAgICAgICAgXQogICAgICAgICB9LAogICAgICAgICB7CkBAIC0yNDQs
NiArMjQ1LDQ2IEBACiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJwZXJtaXNzaW9uIiwgIiRy
ZWYiOiAiU2Vzc2lvblBlcm1pc3Npb24iIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ2
YWx1ZSIsICJ0eXBlIjogImJvb2xlYW4iIH0KICAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAg
ICAgICAgeworICAgICAgICAgICAgImlkIjogIklucHV0U291cmNlVHlwZSIsCisgICAgICAgICAg
ICAidHlwZSI6ICJzdHJpbmciLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlRoZSB0eXBl
IG9mIGFuIGlucHV0IHNvdXJjZS4gVGhpcyBkZXRlcm1pbmVzIHdoaWNoIHN0YXRlIHByb3BlcnRp
ZXMgYXJlIGFwcGxpY2FibGUgdG8gdGhlIGlucHV0IHNvdXJjZS4gVGhlICdOdWxsJyBpbnB1dCBz
b3VyY2UgdHlwZSBoYXMgbm8gcHJvcGVydGllcywgb25seSBhIGR1cmF0aW9uLiBUaGlzIGNhbiBl
eHRlbmQgdGhlIGVmZmVjdGl2ZSB3YWl0IGZvciBhIHRpY2suIiwKKyAgICAgICAgICAgICJlbnVt
IjogWworICAgICAgICAgICAgICAgICJOdWxsIiwKKyAgICAgICAgICAgICAgICAiTW91c2UiLAor
ICAgICAgICAgICAgICAgICJLZXlib2FyZCIsCisgICAgICAgICAgICAgICAgIlRvdWNoIgorICAg
ICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAiaWQiOiAiSW5w
dXRTb3VyY2UiLAorICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKKyAgICAgICAgICAgICJw
cm9wZXJ0aWVzIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic291cmNlSWQiLCAidHlw
ZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiQSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhp
cyBpbnB1dCBzb3VyY2UuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic291cmNlVHlw
ZSIsICIkcmVmIjogIklucHV0U291cmNlVHlwZSIsICJkZXNjcmlwdGlvbiI6ICJUaGUgdHlwZSBv
ZiB0aGlzIGlucHV0IHNvdXJjZS4gVGhpcyBhZmZlY3RzIHdoYXQgaW5wdXQgc291cmNlIHN0YXRl
IGZpZWxkcyBhcmUgdmFsaWQgZm9yIHRoaXMgaW5wdXQgc291cmNlLiIgfQorICAgICAgICAgICAg
XQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAiaWQiOiAiSW50ZXJhY3Rpb25T
dGVwIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJBIHNldCBvZiBpbnB1dCBzb3VyY2Ug
c3RhdGVzIHRvIHdoaWNoIGFsbCBhcHBsaWNhYmxlIGlucHV0IHNvdXJjZXMgbXVzdCB0cmFuc2l0
aW9uIGJlZm9yZSBmdXJ0aGVyIHN0ZXBzIG1heSBiZSBwcm9jZXNzZWQuIElmIGFuIGlucHV0IHNv
dXJjZSBkb2VzIG5vdCBoYXZlIGEgY29ycmVzcG9uZGluZyBzdGF0ZSBpbiBhIHN0ZXAsIGl0cyBz
dGF0ZSBhc3N1bWVkIHRvIGJlICdyZWxlYXNlZCcgZm9yIHRoYXQgc3RlcC4iLAorICAgICAgICAg
ICAgInR5cGUiOiAib2JqZWN0IiwKKyAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogWworICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAic3RhdGVzIiwgInR5cGUiOiAiYXJyYXkiLCAiaXRlbXMiOiB7
ICIkcmVmIjogIklucHV0U291cmNlU3RhdGUiIH0sICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlw
dGlvbiI6ICJBIGxpc3Qgb2YgbmV3IGlucHV0IHN0YXRlcyBmb3IgaW5wdXQgc291cmNlcyB0aGF0
IG11c3QgdHJhbnNpdGlvbiBkdXJpbmcgdGhpcyBzdGVwLiBTb3VyY2Ugc3RhdGUgdHJhbnNpdGlv
bnMgdGhhdCBjYW5ub3QgYmUgcGVyZm9ybWVkIGNvbmN1cnJlbnRseSAoaS5lLiwgdG91Y2ggZ2Vz
dHVyZXMpIGFyZSBwZXJmb3JtZWQgc2VxdWVudGlhbGx5IGluIHRoZSBvcmRlciB0aGV5IGFyZSBs
aXN0ZWQuIiB9CisgICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAg
ICAgICJpZCI6ICJJbnB1dFNvdXJjZVN0YXRlIiwKKyAgICAgICAgICAgICJ0eXBlIjogIm9iamVj
dCIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQSBuZXcgc3RhdGUgZm9yIGEgc3BlY2lm
aWMgaW5wdXQgc291cmNlLiBBbGwgc3RhdGUtcmVsYXRlZCBmaWVsZHMgYXJlIG9wdGlvbmFsIGFu
ZCBtdXN0IGJlIGFwcGxpY2FibGUgdG8gdGhlIElucHV0U291cmNlIHJlZmVyZW5jZWQgYnkgJ3Nv
dXJjZUlkJy4gSWYgbm8gc3RhdGUtcmVsYXRlZCBmaWVsZHMgYXJlIHNwZWNpZmllZCwgdGhlIHN0
YXRlIGlzIGFzc3VtZWQgdG8gcmVtYWluIHRoZSBzYW1lIGFzIGluIHRoZSBwcmV2aW91cyBzdGVw
IChpLmUuLCAnc3VzdGFpbmVkJykuIiwKKyAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogWworICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAic291cmNlSWQiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVz
Y3JpcHRpb24iOiAiVGhlIGlucHV0IHNvdXJjZSB3aG9zZSBzdGF0ZSBpcyBkZXNjcmliZWQgYnkg
dGhpcyBvYmplY3QuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicHJlc3NlZENoYXJL
ZXkiLCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAi
Rm9yICdrZXlib2FyZCcgaW5wdXQgc291cmNlcywgc3BlY2lmaWVzIGEgY2hhcmFjdGVyIGtleSB0
aGF0IGhhcyAncHJlc3NlZCcgc3RhdGUuIFVubWVudGlvbmVkIGNoYXJhY3RlciBrZXlzIGFyZSBh
c3N1bWVkIHRvIGhhdmUgYSAncmVsZWFzZWQnIHN0YXRlLiIgfSwKKyAgICAgICAgICAgICAgICB7
ICJuYW1lIjogInByZXNzZWRWaXJ0dWFsS2V5IiwgIiRyZWYiOiAiVmlydHVhbEtleSIsICJvcHRp
b25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJGb3IgJ2tleWJvYXJkJyBpbnB1dCBzb3VyY2Vz
LCBzcGVjaWZpZXMgYSB2aXJ0dWFsIGtleSB0aGF0IGhhcyBhICdwcmVzc2VkJyBzdGF0ZS4gVW5t
ZW50aW9uZWQgdmlydHVhbCBrZXlzIGFyZSBhc3N1bWVkIHRvIGhhdmUgYSAncmVsZWFzZWQnIHN0
YXRlLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInByZXNzZWRCdXR0b24iLCAiJHJl
ZiI6ICJNb3VzZUJ1dHRvbiIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJGb3Ig
J21vdXNlJyBpbnB1dCBzb3VyY2VzLCBzcGVjaWZpZXMgd2hpY2ggbW91c2UgYnV0dG9uIGhhcyBh
ICdwcmVzc2VkJyBzdGF0ZS4gVW5tZW50aW9uZWQgbW91c2UgYnV0dG9ucyBhcmUgYXNzdW1lZCB0
byBoYXZlIGEgJ3JlbGVhc2VkJyBzdGF0ZS4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJsb2NhdGlvbiIsICIkcmVmIjogIlBvaW50IiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0
aW9uIjogIkZvciAnbW91c2UnIG9yICd0b3VjaCcgaW5wdXQgc291cmNlcywgc3BlY2lmaWVzIGEg
bG9jYXRpb24gaW4gdmlldyBjb29yZGluYXRlcyB0byB3aGljaCB0aGUgaW5wdXQgc291cmNlIHNo
b3VsZCB0cmFuc2l0aW9uLiBUcmFuc2l0aW9uaW5nIHRvIHRoaXMgc3RhdGUgbWF5IGludGVycG9s
YXRlIGludGVtZWRpYXRlIGlucHV0IHNvdXJjZSBzdGF0ZXMgdG8gYmV0dGVyIHNpbXVsYXRlIHJl
YWwgdXNlciBtb3ZlbWVudHMgYW5kIGdlc3R1cmVzLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJu
YW1lIjogImR1cmF0aW9uIiwgInR5cGUiOiAiaW50ZWdlciIsICJvcHRpb25hbCI6IHRydWUsICJk
ZXNjcmlwdGlvbiI6ICJUaGUgbWluaW11bSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRoYXQgbXVz
dCBlbGFwc2Ugd2hpbGUgdGhlIHJlbGV2YW50IGlucHV0IHNvdXJjZSB0cmFuc2l0aW9ucyB0byB0
aGlzIHN0YXRlLiIgfQorICAgICAgICAgICAgXQogICAgICAgICB9CiAgICAgXSwKICAgICAiY29t
bWFuZHMiOiBbCkBAIC00MTMsNiArNDU0LDI0IEBACiAgICAgICAgICAgICBdLAogICAgICAgICAg
ICAgImFzeW5jIjogdHJ1ZQogICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAibmFt
ZSI6ICJwZXJmb3JtSW50ZXJhY3Rpb25TZXF1ZW5jZSIsCisgICAgICAgICAgICAiZGVzY3JpcHRp
b24iOiAiUGVyZm9ybSBtdWx0aXBsZSBzaW11bGF0ZWQgaW50ZXJhY3Rpb25zIG92ZXIgdGltZSB1
c2luZyBhIGxpc3Qgb2YgaW5wdXQgc291cmNlcyBhbmQgYSBsaXN0IG9mIHN0ZXBzLCB3aGVyZSBl
YWNoIHN0ZXAgc3BlY2lmaWVzIGEgc3RhdGUgZm9yIGVhY2ggaW5wdXQgc291cmNlIGF0IHRoZSB0
aW1lIHRoYXQgc3RlcCBpcyBwZXJmb3JtZWQuIiwKKyAgICAgICAgICAgICJwYXJhbWV0ZXJzIjog
WworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaGFuZGxlIiwgIiRyZWYiOiAiQnJvd3NpbmdD
b250ZXh0SGFuZGxlIiwgImRlc2NyaXB0aW9uIjogIlRoZSBicm93c2luZyBjb250ZXh0IHRvIGJl
IGludGVyYWN0ZWQgd2l0aC4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJpbnB1dFNv
dXJjZXMiLCAidHlwZSI6ICJhcnJheSIsICJpdGVtcyI6IHsgIiRyZWYiOiAiSW5wdXRTb3VyY2Ui
IH0sICJkZXNjcmlwdGlvbiI6ICJBbGwgaW5wdXQgc291cmNlcyB0aGF0IGFyZSB1c2VkIHRvIHBl
cmZvcm0gdGhpcyBpbnRlcmFjdGlvbiBzZXF1ZW5jZS4iIH0sCisgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJzdGVwcyIsICJ0eXBlIjogImFycmF5IiwgIml0ZW1zIjogeyAiJHJlZiI6ICJJbnRl
cmFjdGlvblN0ZXAiIH0sICJkZXNjcmlwdGlvbiI6ICJBIGxpc3Qgb2Ygc3RlcHMgdGhhdCBhcmUg
ZXhlY3V0ZWQgaW4gb3JkZXIuIiB9CisgICAgICAgICAgICBdLAorICAgICAgICAgICAgImFzeW5j
IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJjYW5j
ZWxJbnRlcmFjdGlvblNlcXVlbmNlIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJDYW5j
ZWwgYW4gYWN0aXZlIGludGVyYWN0aW9uIHNlcXVlbmNlIHRoYXQgaXMgY3VycmVudGx5IGluIHBy
b2dyZXNzLiIsCisgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICB7
ICJuYW1lIjogImhhbmRsZSIsICIkcmVmIjogIkJyb3dzaW5nQ29udGV4dEhhbmRsZSIsICJkZXNj
cmlwdGlvbiI6ICJUaGUgYnJvd3NpbmcgY29udGV4dCB0byBiZSBpbnRlcmFjdGVkIHdpdGguIiB9
CisgICAgICAgICAgICBdLAorICAgICAgICAgICAgImFzeW5jIjogdHJ1ZQorICAgICAgICB9LAog
ICAgICAgICB7CiAgICAgICAgICAgICAibmFtZSI6ICJ0YWtlU2NyZWVuc2hvdCIsCiAgICAgICAg
ICAgICAiZGVzY3JpcHRpb24iOiAiVGFrZSBhIHNjcmVlbnNob3Qgb2YgdGhlIGN1cnJlbnQgcGFn
ZSBvciBnaXZlbiBlbGVtZW50IGluIGEgYnJvd3NpbmcgY29udGV4dC4iLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9TaW11bGF0ZWRJbnB1dERpc3BhdGNo
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9TaW11bGF0ZWRJbnB1
dERpc3BhdGNoZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ4ZDQ4M2I5ZTNmNDg4Yjk4YmRmN2FmYzFkMTQ1
MmIyZWMzZjIxM2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
dXRvbWF0aW9uL1NpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5jcHAKQEAgLTAsMCArMSwyNjQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2ltdWxhdGVkSW5w
dXREaXNwYXRjaGVyLmgiCisKKyNpbmNsdWRlICJBdXRvbWF0aW9uUHJvdG9jb2xPYmplY3RzLmgi
CisjaW5jbHVkZSAiV2ViQXV0b21hdGlvblNlc3Npb24uaCIKKyNpbmNsdWRlICJXZWJBdXRvbWF0
aW9uU2Vzc2lvbk1hY3Jvcy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworU2ltdWxhdGVkSW5w
dXRLZXlGcmFtZTo6U2ltdWxhdGVkSW5wdXRLZXlGcmFtZShWZWN0b3I8U3RhdGVFbnRyeT4mJiBl
bnRyaWVzKQorICAgIDogc3RhdGVzKFdURk1vdmUoZW50cmllcykpCit7Cit9CisKK1NlY29uZHMg
U2ltdWxhdGVkSW5wdXRLZXlGcmFtZTo6bWF4aW11bUR1cmF0aW9uKCkgY29uc3QKK3sKKyAgICBT
ZWNvbmRzIHJlc3VsdDsKKyAgICBmb3IgKGF1dG8mIGVudHJ5IDogc3RhdGVzKQorICAgICAgICBy
ZXN1bHQgPSBzdGQ6Om1heChyZXN1bHQsIGVudHJ5LnNlY29uZC5kdXJhdGlvbi52YWx1ZV9vcihT
ZWNvbmRzKDApKSk7CisgICAgCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworU2ltdWxhdGVkSW5w
dXRLZXlGcmFtZSBTaW11bGF0ZWRJbnB1dEtleUZyYW1lOjprZXlGcmFtZUZyb21TdGF0ZU9mSW5w
dXRTb3VyY2VzKEhhc2hTZXQ8UmVmPFNpbXVsYXRlZElucHV0U291cmNlPj4mIGlucHV0U291cmNl
cykKK3sKKyAgICAvLyBUaGUgY2xpZW50IG9mIHRoaXMgY2xhc3MgaXMgcmVxdWlyZWQgdG8gaW50
ZXJuIFNpbXVsYXRlZElucHV0U291cmNlIGluc3RhbmNlcyBpZiB0aGUgbGFzdCBzdGF0ZQorICAg
IC8vIGZyb20gdGhlIHByZXZpb3VzIGNvbW1hbmQgc2hvdWxkIGJlIHVzZWQgYXMgdGhlIGluaXRh
bCBzdGF0ZSBmb3IgdGhlIG5leHQgY29tbWFuZC4gVGhpcyBpcyB0aGUKKyAgICAvLyBjYXNlIGZv
ciBQZXJmb3JtIEFjdGlvbnMgYW5kIFJlbGVhc2UgQWN0aW9ucywgYnV0IG5vdCBFbGVtZW50IENs
aWNrIG9yIEVsZW1lbnQgU2VuZCBLZXlzLgorICAgIFZlY3RvcjxTaW11bGF0ZWRJbnB1dEtleUZy
YW1lOjpTdGF0ZUVudHJ5PiBlbnRyaWVzOworICAgIGVudHJpZXMucmVzZXJ2ZUNhcGFjaXR5KGlu
cHV0U291cmNlcy5zaXplKCkpOworCisgICAgZm9yIChhdXRvJiBpbnB1dFNvdXJjZSA6IGlucHV0
U291cmNlcykKKyAgICAgICAgZW50cmllcy51bmNoZWNrZWRBcHBlbmQoc3RkOjpwYWlyPFNpbXVs
YXRlZElucHV0U291cmNlJiwgU2ltdWxhdGVkSW5wdXRTb3VyY2VTdGF0ZT4geyBpbnB1dFNvdXJj
ZS5nZXQoKSwgaW5wdXRTb3VyY2UtPnN0YXRlIH0pOworCisgICAgcmV0dXJuIFNpbXVsYXRlZElu
cHV0S2V5RnJhbWUoV1RGTW92ZShlbnRyaWVzKSk7Cit9CisKK1NpbXVsYXRlZElucHV0S2V5RnJh
bWUgU2ltdWxhdGVkSW5wdXRLZXlGcmFtZTo6a2V5RnJhbWVUb1Jlc2V0SW5wdXRTb3VyY2VzKEhh
c2hTZXQ8UmVmPFNpbXVsYXRlZElucHV0U291cmNlPj4mIGlucHV0U291cmNlcykKK3sKKyAgICBW
ZWN0b3I8U2ltdWxhdGVkSW5wdXRLZXlGcmFtZTo6U3RhdGVFbnRyeT4gZW50cmllczsKKyAgICBl
bnRyaWVzLnJlc2VydmVDYXBhY2l0eShpbnB1dFNvdXJjZXMuc2l6ZSgpKTsKKworICAgIGZvciAo
YXV0byYgaW5wdXRTb3VyY2UgOiBpbnB1dFNvdXJjZXMpCisgICAgICAgIGVudHJpZXMudW5jaGVj
a2VkQXBwZW5kKHN0ZDo6cGFpcjxTaW11bGF0ZWRJbnB1dFNvdXJjZSYsIFNpbXVsYXRlZElucHV0
U291cmNlU3RhdGU+IHsgaW5wdXRTb3VyY2UuZ2V0KCksIFNpbXVsYXRlZElucHV0U291cmNlU3Rh
dGU6OmVtcHR5U3RhdGUoKSB9KTsKKworICAgIHJldHVybiBTaW11bGF0ZWRJbnB1dEtleUZyYW1l
KFdURk1vdmUoZW50cmllcykpOworfQorICAgIAorU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjpT
aW11bGF0ZWRJbnB1dERpc3BhdGNoZXIoV2ViUGFnZVByb3h5JiBwYWdlLCBTaW11bGF0ZWRJbnB1
dERpc3BhdGNoZXI6OkNsaWVudCYgY2xpZW50KQorICAgIDogbV9wYWdlKHBhZ2UpCisgICAgLCBt
X2NsaWVudChjbGllbnQpCisgICAgLCBtX2tleUZyYW1lVHJhbnNpdGlvbkR1cmF0aW9uVGltZXIo
UnVuTG9vcDo6Y3VycmVudCgpLCB0aGlzLCAmU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjprZXlG
cmFtZVRyYW5zaXRpb25EdXJhdGlvblRpbWVyRmlyZWQpCit7Cit9CisKK1NpbXVsYXRlZElucHV0
RGlzcGF0Y2hlcjo6flNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcigpCit7CisgICAgQVNTRVJUKCFt
X3J1bkNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICBBU1NFUlQoIW1fa2V5RnJhbWVUcmFuc2l0aW9u
RHVyYXRpb25UaW1lci5pc0FjdGl2ZSgpKTsKK30KKworYm9vbCBTaW11bGF0ZWRJbnB1dERpc3Bh
dGNoZXI6OmlzQWN0aXZlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gISFtX3J1bkNvbXBsZXRpb25I
YW5kbGVyOworfQorCit2b2lkIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6a2V5RnJhbWVUcmFu
c2l0aW9uRHVyYXRpb25UaW1lckZpcmVkKCkKK3sKKyAgICBBU1NFUlQobV9rZXlGcmFtZVRyYW5z
aXRpb25Db21wbGV0aW9uSGFuZGxlcik7CisKKyAgICBtX2tleUZyYW1lVHJhbnNpdGlvbkR1cmF0
aW9uVGltZXIuc3RvcCgpOworCisgICAgaWYgKGlzS2V5RnJhbWVUcmFuc2l0aW9uQ29tcGxldGUo
KSkKKyAgICAgICAgbV9rZXlGcmFtZVRyYW5zaXRpb25Db21wbGV0aW9uSGFuZGxlcihzdGQ6Om51
bGxvcHQpOworfQorCitib29sIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6aXNLZXlGcmFtZVRy
YW5zaXRpb25Db21wbGV0ZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fa2V5ZnJhbWVJbmRleCA8
IG1fa2V5ZnJhbWVzLnNpemUoKSk7CisKKyAgICBpZiAobV9pbnB1dFNvdXJjZVN0YXRlSW5kZXgg
PCBtX2tleWZyYW1lc1ttX2tleWZyYW1lSW5kZXhdLnN0YXRlcy5zaXplKCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGlmIChtX2tleUZyYW1lVHJhbnNpdGlvbkR1cmF0aW9uVGltZXIu
aXNBY3RpdmUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9
CisKK3ZvaWQgU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjp0cmFuc2l0aW9uVG9OZXh0S2V5RnJh
bWUoKQoreworICAgICsrbV9rZXlmcmFtZUluZGV4OworICAgIGlmIChtX2tleWZyYW1lSW5kZXgg
PT0gbV9rZXlmcmFtZXMuc2l6ZSgpKSB7CisgICAgICAgIGZpbmlzaERpc3BhdGNoaW5nKHN0ZDo6
bnVsbG9wdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB0cmFuc2l0aW9uQmV0d2Vl
bktleUZyYW1lcyhtX2tleWZyYW1lc1ttX2tleWZyYW1lSW5kZXggLSAxXSwgbV9rZXlmcmFtZXNb
bV9rZXlmcmFtZUluZGV4XSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0o
c3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPiBlcnJvcikgeworICAgICAgICBp
ZiAoZXJyb3IpIHsKKyAgICAgICAgICAgIGZpbmlzaERpc3BhdGNoaW5nKGVycm9yKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHRyYW5zaXRpb25Ub05leHRLZXlG
cmFtZSgpOworICAgIH0pOworfQorCit2b2lkIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6dHJh
bnNpdGlvblRvTmV4dElucHV0U291cmNlU3RhdGUoKQoreworICAgIGlmIChpc0tleUZyYW1lVHJh
bnNpdGlvbkNvbXBsZXRlKCkpIHsKKyAgICAgICAgYXV0byBmaW5pc2ggPSBXVEZNb3ZlKG1fa2V5
RnJhbWVUcmFuc2l0aW9uQ29tcGxldGlvbkhhbmRsZXIpOworICAgICAgICBmaW5pc2goc3RkOjpu
dWxsb3B0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEluIHRoaXMgY2FzZSwg
dHJhbnNpdGlvbnMgYXJlIGRvbmUgYnV0IHdlIG5lZWQgdG8gd2FpdCBmb3IgdGhlIHRpY2sgdGlt
ZXIuCisgICAgaWYgKG1faW5wdXRTb3VyY2VTdGF0ZUluZGV4ID09IG1fa2V5ZnJhbWVzW21fa2V5
ZnJhbWVJbmRleF0uc3RhdGVzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYg
bmV4dEtleUZyYW1lID0gbV9rZXlmcmFtZXNbbV9rZXlmcmFtZUluZGV4XTsKKyAgICBhdXRvJiBw
b3N0U3RhdGVFbnRyeSA9IG5leHRLZXlGcmFtZS5zdGF0ZXNbbV9pbnB1dFNvdXJjZVN0YXRlSW5k
ZXhdOworICAgIFNpbXVsYXRlZElucHV0U291cmNlJiBpbnB1dFNvdXJjZSA9IHBvc3RTdGF0ZUVu
dHJ5LmZpcnN0OworCisgICAgdHJhbnNpdGlvbklucHV0U291cmNlVG9TdGF0ZShpbnB1dFNvdXJj
ZSwgcG9zdFN0YXRlRW50cnkuc2Vjb25kLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpXShzdGQ6Om9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+IGVycm9yKSB7Cisg
ICAgICAgIGlmIChlcnJvcikgeworICAgICAgICAgICAgYXV0byBmaW5pc2ggPSBXVEZNb3ZlKG1f
a2V5RnJhbWVUcmFuc2l0aW9uQ29tcGxldGlvbkhhbmRsZXIpOworICAgICAgICAgICAgZmluaXNo
KGVycm9yKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFBl
cmZvcm0gc3RhdGUgdHJhbnNpdGlvbnMgaW4gdGhlIG9yZGVyIHNwZWNpZmllZCBieSB0aGUgY3Vy
cmVudEtleUZyYW1lLgorICAgICAgICArK21faW5wdXRTb3VyY2VTdGF0ZUluZGV4OworCisgICAg
ICAgIHRyYW5zaXRpb25Ub05leHRJbnB1dFNvdXJjZVN0YXRlKCk7CisgICAgfSk7Cit9CisKK3Zv
aWQgU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjp0cmFuc2l0aW9uQmV0d2VlbktleUZyYW1lcyhj
b25zdCBTaW11bGF0ZWRJbnB1dEtleUZyYW1lJiBhLCBjb25zdCBTaW11bGF0ZWRJbnB1dEtleUZy
YW1lJiBiLCBBdXRvbWF0aW9uQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikK
K3sKKyAgICBtX2lucHV0U291cmNlU3RhdGVJbmRleCA9IDA7CisKKyAgICBtX2tleUZyYW1lVHJh
bnNpdGlvbkNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcik7Cisg
ICAgbV9rZXlGcmFtZVRyYW5zaXRpb25EdXJhdGlvblRpbWVyLnN0YXJ0T25lU2hvdChiLm1heGlt
dW1EdXJhdGlvbigpKTsKKworICAgIHRyYW5zaXRpb25Ub05leHRJbnB1dFNvdXJjZVN0YXRlKCk7
Cit9CisKK3ZvaWQgU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjp0cmFuc2l0aW9uSW5wdXRTb3Vy
Y2VUb1N0YXRlKFNpbXVsYXRlZElucHV0U291cmNlJiBpbnB1dFNvdXJjZSwgY29uc3QgU2ltdWxh
dGVkSW5wdXRTb3VyY2VTdGF0ZSYgbmV3U3RhdGUsIEF1dG9tYXRpb25Db21wbGV0aW9uSGFuZGxl
ciYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIC8vIE1ha2UgY2FzZXMgYW5kIGNvbmRpdGlv
bmFscyBtb3JlIHJlYWRhYmxlIGJ5IGFsaWFzaW5nIHByZS9wb3N0IHN0YXRlcyBhcyAnYScgYW5k
ICdiJy4KKyAgICBTaW11bGF0ZWRJbnB1dFNvdXJjZVN0YXRlIGEgPSBpbnB1dFNvdXJjZS5zdGF0
ZTsKKyAgICBTaW11bGF0ZWRJbnB1dFNvdXJjZVN0YXRlIGIgPSBuZXdTdGF0ZTsKKworICAgIEF1
dG9tYXRpb25Db21wbGV0aW9uSGFuZGxlciBldmVudERpc3BhdGNoRmluaXNoZWQgPSBbJmlucHV0
U291cmNlLCAmbmV3U3RhdGUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildKHN0ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4gZXJyb3IpIHsK
KyAgICAgICAgaWYgKGVycm9yKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihlcnJv
cik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpbnB1dFNvdXJj
ZS5zdGF0ZSA9IG5ld1N0YXRlOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxv
cHQpOworICAgIH07CisKKyAgICBzd2l0Y2ggKGlucHV0U291cmNlLnR5cGUpIHsKKyAgICBjYXNl
IFNpbXVsYXRlZElucHV0U291cmNlOjpUeXBlOjpOdWxsOgorICAgICAgICAvLyBUaGUgbWF4aW11
bSBkdXJhdGlvbiBpcyBoYW5kbGVkIGF0IHRoZSBrZXlmcmFtZSBsZXZlbCBieSBtX2tleUZyYW1l
VHJhbnNpdGlvbkR1cmF0aW9uVGltZXIuCisgICAgICAgIGV2ZW50RGlzcGF0Y2hGaW5pc2hlZChz
dGQ6Om51bGxvcHQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNpbXVsYXRlZElucHV0U291
cmNlOjpUeXBlOjpNb3VzZTogeworICAgICAgICBpZiAoIWEucHJlc3NlZE1vdXNlQnV0dG9uICYm
IGIucHJlc3NlZE1vdXNlQnV0dG9uKQorICAgICAgICAgICAgbV9jbGllbnQuc2ltdWxhdGVNb3Vz
ZUludGVyYWN0aW9uKG1fcGFnZSwgTW91c2VJbnRlcmFjdGlvbjo6RG93biwgYi5wcmVzc2VkTW91
c2VCdXR0b24udmFsdWUoKSwgYi5sb2NhdGlvbi52YWx1ZSgpLCBXVEZNb3ZlKGV2ZW50RGlzcGF0
Y2hGaW5pc2hlZCkpOworICAgICAgICBlbHNlIGlmIChhLnByZXNzZWRNb3VzZUJ1dHRvbiAmJiAh
Yi5wcmVzc2VkTW91c2VCdXR0b24pCisgICAgICAgICAgICBtX2NsaWVudC5zaW11bGF0ZU1vdXNl
SW50ZXJhY3Rpb24obV9wYWdlLCBNb3VzZUludGVyYWN0aW9uOjpVcCwgYS5wcmVzc2VkTW91c2VC
dXR0b24udmFsdWUoKSwgYi5sb2NhdGlvbi52YWx1ZSgpLCBXVEZNb3ZlKGV2ZW50RGlzcGF0Y2hG
aW5pc2hlZCkpOworICAgICAgICBlbHNlIGlmIChhLmxvY2F0aW9uICE9IGIubG9jYXRpb24pCisg
ICAgICAgICAgICBtX2NsaWVudC5zaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24obV9wYWdlLCBNb3Vz
ZUludGVyYWN0aW9uOjpNb3ZlLCBiLnByZXNzZWRNb3VzZUJ1dHRvbi52YWx1ZV9vcihNb3VzZUJ1
dHRvbjo6Tm9CdXR0b24pLCBiLmxvY2F0aW9uLnZhbHVlKCksIFdURk1vdmUoZXZlbnREaXNwYXRj
aEZpbmlzaGVkKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGV2ZW50RGlzcGF0Y2hGaW5p
c2hlZChzdGQ6Om51bGxvcHQpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBTaW11
bGF0ZWRJbnB1dFNvdXJjZTo6VHlwZTo6S2V5Ym9hcmQ6CisgICAgICAgIGlmICgoIWEucHJlc3Nl
ZENoYXJLZXkgJiYgYi5wcmVzc2VkQ2hhcktleSkgfHwgKCFhLnByZXNzZWRWaXJ0dWFsS2V5ICYm
IGIucHJlc3NlZFZpcnR1YWxLZXkpKQorICAgICAgICAgICAgbV9jbGllbnQuc2ltdWxhdGVLZXli
b2FyZEludGVyYWN0aW9uKG1fcGFnZSwgS2V5Ym9hcmRJbnRlcmFjdGlvbjo6S2V5UHJlc3MsIGIu
cHJlc3NlZFZpcnR1YWxLZXksIGIucHJlc3NlZENoYXJLZXksIFdURk1vdmUoZXZlbnREaXNwYXRj
aEZpbmlzaGVkKSk7CisgICAgICAgIGVsc2UgaWYgKChhLnByZXNzZWRDaGFyS2V5ICYmICFiLnBy
ZXNzZWRDaGFyS2V5KSB8fCAoYS5wcmVzc2VkVmlydHVhbEtleSAmJiAhYi5wcmVzc2VkVmlydHVh
bEtleSkpCisgICAgICAgICAgICBtX2NsaWVudC5zaW11bGF0ZUtleWJvYXJkSW50ZXJhY3Rpb24o
bV9wYWdlLCBLZXlib2FyZEludGVyYWN0aW9uOjpLZXlSZWxlYXNlLCBhLnByZXNzZWRWaXJ0dWFs
S2V5LCBhLnByZXNzZWRDaGFyS2V5LCBXVEZNb3ZlKGV2ZW50RGlzcGF0Y2hGaW5pc2hlZCkpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBldmVudERpc3BhdGNoRmluaXNoZWQoc3RkOjpudWxs
b3B0KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTaW11bGF0ZWRJbnB1dFNvdXJjZTo6VHlw
ZTo6VG91Y2g6CisgICAgICAgIC8vIE5vdCBzdXBwb3J0ZWQgeWV0LgorICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgZXZlbnREaXNwYXRjaEZpbmlzaGVkKEFVVE9NQVRJT05f
Q09NTUFORF9FUlJPUl9XSVRIX05BTUUoTm90SW1wbGVtZW50ZWQpKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorfQorCit2b2lkIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6cnVuKFZlY3RvcjxT
aW11bGF0ZWRJbnB1dEtleUZyYW1lPiYmIGtleUZyYW1lcywgSGFzaFNldDxSZWY8U2ltdWxhdGVk
SW5wdXRTb3VyY2U+PiYgaW5wdXRTb3VyY2VzLCBBdXRvbWF0aW9uQ29tcGxldGlvbkhhbmRsZXIm
JiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQoIWlzQWN0aXZlKCkpOworICAgIGlm
IChpc0FjdGl2ZSgpKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKEFVVE9NQVRJT05fQ09N
TUFORF9FUlJPUl9XSVRIX05BTUUoSW50ZXJuYWxFcnJvcikpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgbV9ydW5Db21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpOworICAgIGZvciAoY29uc3QgUmVmPFNpbXVsYXRlZElucHV0U291cmNlPiYgaW5wdXRT
b3VyY2UgOiBpbnB1dFNvdXJjZXMpCisgICAgICAgIG1faW5wdXRTb3VyY2VzLmFkZChpbnB1dFNv
dXJjZS5jb3B5UmVmKCkpOworCisgICAgbV9rZXlmcmFtZXMucmVzZXJ2ZUNhcGFjaXR5KGtleUZy
YW1lcy5zaXplKCkgKyAxKTsKKyAgICBtX2tleWZyYW1lcy5hcHBlbmQoU2ltdWxhdGVkSW5wdXRL
ZXlGcmFtZTo6a2V5RnJhbWVGcm9tU3RhdGVPZklucHV0U291cmNlcyhtX2lucHV0U291cmNlcykp
OworICAgIG1fa2V5ZnJhbWVzLmFwcGVuZFZlY3RvcihXVEZNb3ZlKGtleUZyYW1lcykpOworCisg
ICAgdHJhbnNpdGlvblRvTmV4dEtleUZyYW1lKCk7Cit9CisKK3ZvaWQgU2ltdWxhdGVkSW5wdXRE
aXNwYXRjaGVyOjpjYW5jZWwoKQoreworICAgIC8vIElmIHdlIHdlcmUgd2FpdGluZyBmb3IgbV9j
bGllbnQgdG8gZmluaXNoIGFuIGludGVyYWN0aW9uIGFuZCB0aGUgaW50ZXJhY3Rpb24gaGFkIGFu
IGVycm9yLAorICAgIC8vIHRoZW4gdGhlIHJlc3Qgb2YgdGhlIGFzeW5jIGNoYWluIHdpbGwgaGF2
ZSBiZWVuIHRvcm4gZG93bi4gSWYgd2UgYXJlIGp1c3Qgd2FpdGluZyBvbiBhCisgICAgLy8gZGlz
cGF0Y2ggdGltZXIsIHRoZW4gdGhpcyB3aWxsIGNhbmNlbCB0aGUgdGltZXIgYW5kIGNsZWFyCisK
KyAgICBpZiAoaXNBY3RpdmUoKSkKKyAgICAgICAgZmluaXNoRGlzcGF0Y2hpbmcoQVVUT01BVElP
Tl9DT01NQU5EX0VSUk9SX1dJVEhfTkFNRShJbnRlcm5hbEVycm9yKSk7Cit9CisKK3ZvaWQgU2lt
dWxhdGVkSW5wdXREaXNwYXRjaGVyOjpmaW5pc2hEaXNwYXRjaGluZyhzdGQ6Om9wdGlvbmFsPEF1
dG9tYXRpb25Db21tYW5kRXJyb3I+IGVycm9yKQoreworICAgIGlmIChtX2tleUZyYW1lVHJhbnNp
dGlvbkR1cmF0aW9uVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV9rZXlGcmFtZVRyYW5zaXRp
b25EdXJhdGlvblRpbWVyLnN0b3AoKTsKKworICAgIGF1dG8gZmluaXNoID0gV1RGTW92ZShtX3J1
bkNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICBtX2tleWZyYW1lcy5jbGVhcigpOworICAgIG1faW5w
dXRTb3VyY2VzLmNsZWFyKCk7CisgICAgbV9rZXlmcmFtZUluZGV4ID0gMDsKKyAgICBtX2lucHV0
U291cmNlU3RhdGVJbmRleCA9IDA7CisKKyAgICBmaW5pc2goZXJyb3IpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJraXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9t
YXRpb24vU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BdXRvbWF0aW9uL1NpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRmYzQ2
MmFkNTUxNmJjMzdjNDU2MGNhZmUwNDdjMjQyMzMwNzc5NTcKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1NpbXVsYXRlZElucHV0RGlzcGF0Y2hl
ci5oCkBAIC0wLDAgKzEsMTYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJXZWJFdmVudC5oIgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgorI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUg
PHd0Zi9TZWNvbmRzLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgSW5zcGVjdG9yIHsgbmFtZXNwYWNlIFByb3Rv
Y29sIHsgbmFtZXNwYWNlIEF1dG9tYXRpb24geworZW51bSBjbGFzcyBFcnJvck1lc3NhZ2U7Citl
bnVtIGNsYXNzIEtleWJvYXJkSW50ZXJhY3Rpb25UeXBlOworZW51bSBjbGFzcyBNb3VzZUludGVy
YWN0aW9uOworZW51bSBjbGFzcyBWaXJ0dWFsS2V5OworfSB9IH0KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK2NsYXNzIEF1dG9tYXRpb25Db21tYW5kRXJyb3I7Cit1c2luZyBBdXRvbWF0aW9uQ29t
cGxldGlvbkhhbmRsZXIgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25h
bDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPik+OworCitjbGFzcyBXZWJQYWdlUHJveHk7CisKK3Vz
aW5nIEtleWJvYXJkSW50ZXJhY3Rpb24gPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
OjpLZXlib2FyZEludGVyYWN0aW9uVHlwZTsKK3VzaW5nIFZpcnR1YWxLZXkgPSBJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OwordXNpbmcgQ2hhcktleSA9IGNoYXI7
IC8vIEZvciBXZWJEcml2ZXIsIHRoaXMgb25seSBuZWVkcyB0byBzdXBwb3J0IEFTQ0lJIGNoYXJh
Y3RlcnMgb24gMTAyLWtleSBrZXlib2FyZC4KK3VzaW5nIE1vdXNlQnV0dG9uID0gV2ViTW91c2VF
dmVudDo6QnV0dG9uOwordXNpbmcgTW91c2VJbnRlcmFjdGlvbiA9IEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkF1dG9tYXRpb246Ok1vdXNlSW50ZXJhY3Rpb247CisKK3N0cnVjdCBTaW11bGF0ZWRJbnB1
dFNvdXJjZVN0YXRlIHsKKyAgICBzdGQ6Om9wdGlvbmFsPENoYXJLZXk+IHByZXNzZWRDaGFyS2V5
OworICAgIHN0ZDo6b3B0aW9uYWw8VmlydHVhbEtleT4gcHJlc3NlZFZpcnR1YWxLZXk7CisgICAg
c3RkOjpvcHRpb25hbDxNb3VzZUJ1dHRvbj4gcHJlc3NlZE1vdXNlQnV0dG9uOworICAgIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+IGxvY2F0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8
U2Vjb25kcz4gZHVyYXRpb247CisKKyAgICBzdGF0aWMgU2ltdWxhdGVkSW5wdXRTb3VyY2VTdGF0
ZSBlbXB0eVN0YXRlKCkgeyByZXR1cm4gU2ltdWxhdGVkSW5wdXRTb3VyY2VTdGF0ZSgpOyB9Cit9
OworCitzdHJ1Y3QgU2ltdWxhdGVkSW5wdXRTb3VyY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxTaW11
bGF0ZWRJbnB1dFNvdXJjZT4geworcHVibGljOgorICAgIGVudW0gY2xhc3MgVHlwZSB7CisgICAg
ICAgIE51bGwsIC8vIFVzZWQgdG8gaW5kdWNlIGEgbWluaW11bSBkdXJhdGlvbi4KKyAgICAgICAg
S2V5Ym9hcmQsCisgICAgICAgIE1vdXNlLAorICAgICAgICBUb3VjaCwKKyAgICB9OworCisgICAg
VHlwZSB0eXBlOworCisgICAgLy8gVGhlIGxhc3Qgc3RhdGUgYXNzb2NpYXRlZCB3aXRoIHRoaXMg
aW5wdXQgc291cmNlLgorICAgIFNpbXVsYXRlZElucHV0U291cmNlU3RhdGUgc3RhdGU7CisKKyAg
ICBzdGF0aWMgUmVmPFNpbXVsYXRlZElucHV0U291cmNlPiBjcmVhdGUoVHlwZSB0eXBlKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2ltdWxhdGVkSW5wdXRTb3VyY2UodHlw
ZSwgU2ltdWxhdGVkSW5wdXRTb3VyY2VTdGF0ZTo6ZW1wdHlTdGF0ZSgpKSk7CisgICAgfQorCitw
cml2YXRlOgorICAgIFNpbXVsYXRlZElucHV0U291cmNlKFR5cGUgdHlwZSwgU2ltdWxhdGVkSW5w
dXRTb3VyY2VTdGF0ZSBzdGF0ZSkKKyAgICAgICAgOiB0eXBlKHR5cGUpCisgICAgICAgICwgc3Rh
dGUoc3RhdGUpCisgICAgeyB9Cit9OworCitzdHJ1Y3QgU2ltdWxhdGVkSW5wdXRLZXlGcmFtZSB7
CitwdWJsaWM6CisgICAgdXNpbmcgU3RhdGVFbnRyeSA9IHN0ZDo6cGFpcjxTaW11bGF0ZWRJbnB1
dFNvdXJjZSYsIFNpbXVsYXRlZElucHV0U291cmNlU3RhdGU+OworCisgICAgZXhwbGljaXQgU2lt
dWxhdGVkSW5wdXRLZXlGcmFtZShWZWN0b3I8U3RhdGVFbnRyeT4mJik7CisgICAgU2Vjb25kcyBt
YXhpbXVtRHVyYXRpb24oKSBjb25zdDsKKworICAgIHN0YXRpYyBTaW11bGF0ZWRJbnB1dEtleUZy
YW1lIGtleUZyYW1lRnJvbVN0YXRlT2ZJbnB1dFNvdXJjZXMoSGFzaFNldDxSZWY8U2ltdWxhdGVk
SW5wdXRTb3VyY2U+PiYpOworICAgIHN0YXRpYyBTaW11bGF0ZWRJbnB1dEtleUZyYW1lIGtleUZy
YW1lVG9SZXNldElucHV0U291cmNlcyhIYXNoU2V0PFJlZjxTaW11bGF0ZWRJbnB1dFNvdXJjZT4+
Jik7CisKKyAgICBWZWN0b3I8U3RhdGVFbnRyeT4gc3RhdGVzOworfTsKKworY2xhc3MgU2ltdWxh
dGVkSW5wdXREaXNwYXRjaGVyIDogcHVibGljIFJlZkNvdW50ZWQ8U2ltdWxhdGVkSW5wdXREaXNw
YXRjaGVyPiB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2ltdWxhdGVkSW5wdXREaXNwYXRj
aGVyKTsKK3B1YmxpYzoKKyAgICBjbGFzcyBDbGllbnQgeworICAgIHB1YmxpYzoKKyAgICAgICAg
dmlydHVhbCB+Q2xpZW50KCkgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBzaW11bGF0ZU1vdXNl
SW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiwgTW91c2VJbnRlcmFjdGlvbiwgV2ViTW91c2VFdmVu
dDo6QnV0dG9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbG9jYXRpb25JblZpZXcsIEF1dG9t
YXRpb25Db21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzaW11
bGF0ZUtleWJvYXJkSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiwgS2V5Ym9hcmRJbnRlcmFjdGlv
biwgc3RkOjpvcHRpb25hbDxWaXJ0dWFsS2V5Piwgc3RkOjpvcHRpb25hbDxDaGFyS2V5PiwgQXV0
b21hdGlvbkNvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKKyAgICB9OworCisgICAgc3RhdGljIFJl
ZjxTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI+IGNyZWF0ZShXZWJQYWdlUHJveHkmIHBhZ2UsIFNp
bXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6Q2xpZW50JiBjbGllbnQpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIocGFnZSwgY2xpZW50
KSk7CisgICAgfQorCisgICAgflNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcigpOworCisgICAgdm9p
ZCBydW4oVmVjdG9yPFNpbXVsYXRlZElucHV0S2V5RnJhbWU+JiYga2V5RnJhbWVzLCBIYXNoU2V0
PFJlZjxTaW11bGF0ZWRJbnB1dFNvdXJjZT4+JiBpbnB1dFNvdXJjZXMsIEF1dG9tYXRpb25Db21w
bGV0aW9uSGFuZGxlciYmKTsKKyAgICB2b2lkIGNhbmNlbCgpOworCisgICAgYm9vbCBpc0FjdGl2
ZSgpIGNvbnN0OworCitwcml2YXRlOgorICAgIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcihXZWJQ
YWdlUHJveHkmLCBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OkNsaWVudCYpOworCisgICAgdm9p
ZCB0cmFuc2l0aW9uVG9OZXh0S2V5RnJhbWUoKTsKKyAgICB2b2lkIHRyYW5zaXRpb25CZXR3ZWVu
S2V5RnJhbWVzKGNvbnN0IFNpbXVsYXRlZElucHV0S2V5RnJhbWUmLCBjb25zdCBTaW11bGF0ZWRJ
bnB1dEtleUZyYW1lJiwgQXV0b21hdGlvbkNvbXBsZXRpb25IYW5kbGVyJiYpOworCisgICAgdm9p
ZCB0cmFuc2l0aW9uVG9OZXh0SW5wdXRTb3VyY2VTdGF0ZSgpOworICAgIHZvaWQgdHJhbnNpdGlv
bklucHV0U291cmNlVG9TdGF0ZShTaW11bGF0ZWRJbnB1dFNvdXJjZSYsIGNvbnN0IFNpbXVsYXRl
ZElucHV0U291cmNlU3RhdGUmIG5ld1N0YXRlLCBBdXRvbWF0aW9uQ29tcGxldGlvbkhhbmRsZXIm
Jik7CisgICAgdm9pZCBmaW5pc2hEaXNwYXRjaGluZyhzdGQ6Om9wdGlvbmFsPEF1dG9tYXRpb25D
b21tYW5kRXJyb3I+KTsKKworICAgIHZvaWQga2V5RnJhbWVUcmFuc2l0aW9uRHVyYXRpb25UaW1l
ckZpcmVkKCk7CisgICAgYm9vbCBpc0tleUZyYW1lVHJhbnNpdGlvbkNvbXBsZXRlKCkgY29uc3Q7
CisKKyAgICBXZWJQYWdlUHJveHkmIG1fcGFnZTsKKyAgICBTaW11bGF0ZWRJbnB1dERpc3BhdGNo
ZXI6OkNsaWVudCYgbV9jbGllbnQ7CisKKyAgICBBdXRvbWF0aW9uQ29tcGxldGlvbkhhbmRsZXIg
bV9ydW5Db21wbGV0aW9uSGFuZGxlcjsKKyAgICBBdXRvbWF0aW9uQ29tcGxldGlvbkhhbmRsZXIg
bV9rZXlGcmFtZVRyYW5zaXRpb25Db21wbGV0aW9uSGFuZGxlcjsKKyAgICBSdW5Mb29wOjpUaW1l
cjxTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI+IG1fa2V5RnJhbWVUcmFuc2l0aW9uRHVyYXRpb25U
aW1lcjsKKworICAgIFZlY3RvcjxTaW11bGF0ZWRJbnB1dEtleUZyYW1lPiBtX2tleWZyYW1lczsK
KyAgICBIYXNoU2V0PFJlZjxTaW11bGF0ZWRJbnB1dFNvdXJjZT4+IG1faW5wdXRTb3VyY2VzOwor
CisgICAgLy8gVGhlIHBvc2l0aW9uIHdpdGhpbiBtX2tleWZyYW1lcy4KKyAgICB1bnNpZ25lZCBt
X2tleWZyYW1lSW5kZXggeyAwIH07CisKKyAgICAvLyBUaGUgcG9zaXRpb24gd2l0aGluIHRoZSBp
bnB1dCBzb3VyY2Ugc3RhdGUgdmVjdG9yIGF0IG1fa2V5ZnJhbWVzW21fa2V5ZnJhbWVJbmRleF0u
CisgICAgLy8gRXZlbnRzIHRoYXQgcmVmbGVjdCBpbnB1dCBzb3VyY2Ugc3RhdGUgdHJhbnNpdGlv
bnMgYXJlIGRpc3BhdGNoZWQgc2VyaWFsbHkgYmFzZWQgb24gdGhpcyBvcmRlci4KKyAgICB1bnNp
Z25lZCBtX2lucHV0U291cmNlU3RhdGVJbmRleCB7IDAgfTsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9X
ZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0
aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRleCBmNWI3ZDM3MTgyNTUwYWNkMzQxZWE4
MTAyY2YwMGQwMjViNDM4YjEyLi4yYTNhZmYyMjQ2NjVlYWU3YWQ2ZjgxMzcxNGUzNWQ4ODAzZjhl
MTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1
dG9tYXRpb25TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0
aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcApAQCAtNzYsNiArNzYsMTAgQEAgV2ViQXV0b21h
dGlvblNlc3Npb246OldlYkF1dG9tYXRpb25TZXNzaW9uKCkKICAgICAsIG1fZG9tYWluTm90aWZp
ZXIoc3RkOjptYWtlX3VuaXF1ZTxBdXRvbWF0aW9uRnJvbnRlbmREaXNwYXRjaGVyPihtX2Zyb250
ZW5kUm91dGVyKSkKICAgICAsIG1fbG9hZFRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJldl
YkF1dG9tYXRpb25TZXNzaW9uOjpsb2FkVGltZXJGaXJlZCkKIHsKKyAgICAvLyBTZXQgdXAgY2Fu
b25pY2FsIGlucHV0IHNvdXJjZXMgdG8gYmUgdXNlZCBmb3IgJ3BlcmZvcm1JbnRlcmFjdGlvblNl
cXVlbmNlJyBhbmQgJ2NhbmNlbEludGVyYWN0aW9uU2VxdWVuY2UnLgorICAgIG1faW5wdXRTb3Vy
Y2VzLmFkZChTaW11bGF0ZWRJbnB1dFNvdXJjZTo6Y3JlYXRlKFNpbXVsYXRlZElucHV0U291cmNl
OjpUeXBlOjpNb3VzZSkpOworICAgIG1faW5wdXRTb3VyY2VzLmFkZChTaW11bGF0ZWRJbnB1dFNv
dXJjZTo6Y3JlYXRlKFNpbXVsYXRlZElucHV0U291cmNlOjpUeXBlOjpLZXlib2FyZCkpOworICAg
IG1faW5wdXRTb3VyY2VzLmFkZChTaW11bGF0ZWRJbnB1dFNvdXJjZTo6Y3JlYXRlKFNpbXVsYXRl
ZElucHV0U291cmNlOjpUeXBlOjpOdWxsKSk7CiB9CiAKIFdlYkF1dG9tYXRpb25TZXNzaW9uOjp+
V2ViQXV0b21hdGlvblNlc3Npb24oKQpAQCAtNzIzLDI4ICs3MjcsMzIgQEAgdm9pZCBXZWJBdXRv
bWF0aW9uU2Vzc2lvbjo6aW5zcGVjdG9yRnJvbnRlbmRMb2FkZWQoY29uc3QgV2ViUGFnZVByb3h5
JiBwYWdlKQogCiB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjptb3VzZUV2ZW50c0ZsdXNoZWRG
b3JQYWdlKGNvbnN0IFdlYlBhZ2VQcm94eSYgcGFnZSkKIHsKLSAgICBpZiAoYXV0byBjYWxsYmFj
ayA9IG1fcGVuZGluZ01vdXNlRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2UudGFrZShwYWdl
LnBhZ2VJRCgpKSkgewotICAgICAgICBpZiAobV9wZW5kaW5nTW91c2VFdmVudHNGbHVzaGVkQ2Fs
bGJhY2tzUGVyUGFnZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICBtX3NpbXVsYXRpbmdVc2VySW50
ZXJhY3Rpb24gPSBmYWxzZTsKLQorICAgIGlmIChhdXRvIGNhbGxiYWNrID0gbV9wZW5kaW5nTW91
c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS50YWtlKHBhZ2UucGFnZUlEKCkpKQogICAg
ICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQpOwotICAgIH0KIH0KIAogdm9pZCBXZWJBdXRvbWF0
aW9uU2Vzc2lvbjo6a2V5Ym9hcmRFdmVudHNGbHVzaGVkRm9yUGFnZShjb25zdCBXZWJQYWdlUHJv
eHkmIHBhZ2UpCiB7Ci0gICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBtX3BlbmRpbmdLZXlib2FyZEV2
ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlLnRha2UocGFnZS5wYWdlSUQoKSkpIHsKLSAgICAg
ICAgaWYgKG1fcGVuZGluZ0tleWJvYXJkRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2UuaXNF
bXB0eSgpKQotICAgICAgICAgICAgbV9zaW11bGF0aW5nVXNlckludGVyYWN0aW9uID0gZmFsc2U7
Ci0KKyAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1fcGVuZGluZ0tleWJvYXJkRXZlbnRzRmx1c2hl
ZENhbGxiYWNrc1BlclBhZ2UudGFrZShwYWdlLnBhZ2VJRCgpKSkKICAgICAgICAgY2FsbGJhY2so
c3RkOjpudWxsb3B0KTsKLSAgICB9CiB9CiAKIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246Ondp
bGxDbG9zZVBhZ2UoY29uc3QgV2ViUGFnZVByb3h5JiBwYWdlKQogewogICAgIFN0cmluZyBoYW5k
bGUgPSBoYW5kbGVGb3JXZWJQYWdlUHJveHkocGFnZSk7CiAgICAgbV9kb21haW5Ob3RpZmllci0+
YnJvd3NpbmdDb250ZXh0Q2xlYXJlZChoYW5kbGUpOworCisgICAgLy8gQ2FuY2VsIHBlbmRpbmcg
aW50ZXJhY3Rpb25zIG9uIHRoaXMgcGFnZS4gQnkgcHJvdmlkaW5nIGFuIGVycm9yLCB0aGlzIHdp
bGwgY2F1c2Ugc3Vic2VxdWVudAorICAgIC8vIGFjdGlvbnMgdG8gYmUgYWJvcnRlZCBhbmQgdGhl
IFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6cnVuKCkgY2FsbCB3aWxsIHVud2luZCBhbmQgZmFp
bC4KKyAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1fcGVuZGluZ01vdXNlRXZlbnRzRmx1c2hlZENh
bGxiYWNrc1BlclBhZ2UudGFrZShwYWdlLnBhZ2VJRCgpKSkKKyAgICAgICAgY2FsbGJhY2soQVVU
T01BVElPTl9DT01NQU5EX0VSUk9SX1dJVEhfTkFNRShXaW5kb3dOb3RGb3VuZCkpOworICAgIGlm
IChhdXRvIGNhbGxiYWNrID0gbV9wZW5kaW5nTW91c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVy
UGFnZS50YWtlKHBhZ2UucGFnZUlEKCkpKQorICAgICAgICBjYWxsYmFjayhBVVRPTUFUSU9OX0NP
TU1BTkRfRVJST1JfV0lUSF9OQU1FKFdpbmRvd05vdEZvdW5kKSk7CisKKyAgICAvLyBUaGVuIHRl
bGwgdGhlIGlucHV0IGRpc3BhdGNoZXIgdG8gY2FuY2VsIHNvIHRpbWVycyBhcmUgc3RvcHBlZCwg
YW5kIGxldCBpdCBnbyBvdXQgb2Ygc2NvcGUuCisgICAgc3RkOjpvcHRpb25hbDxSZWY8U2ltdWxh
dGVkSW5wdXREaXNwYXRjaGVyPj4gaW5wdXREaXNwYXRjaGVyID0gbV9pbnB1dERpc3BhdGNoZXJz
QnlQYWdlLnRha2UocGFnZS5wYWdlSUQoKSk7CisgICAgaWYgKGlucHV0RGlzcGF0Y2hlci5oYXNf
dmFsdWUoKSkKKyAgICAgICAgaW5wdXREaXNwYXRjaGVyLnZhbHVlKCktPmNhbmNlbCgpOwogfQog
CiBzdGF0aWMgYm9vbCBmaWxlQ2FuQmVBY2NlcHRlZEZvclVwbG9hZChjb25zdCBTdHJpbmcmIGZp
bGVuYW1lLCBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGFsbG93ZWRNSU1FVHlwZXMsIGNvbnN0IEhh
c2hTZXQ8U3RyaW5nPiYgYWxsb3dlZEZpbGVFeHRlbnNpb25zKQpAQCAtMTM2Niw2ICsxMzc0LDg2
IEBAIGJvb2wgV2ViQXV0b21hdGlvblNlc3Npb246OnNob3VsZEFsbG93R2V0VXNlck1lZGlhRm9y
UGFnZShjb25zdCBXZWJQYWdlUHJveHkmKSBjCiAgICAgcmV0dXJuIG1fcGVybWlzc2lvbkZvckdl
dFVzZXJNZWRpYTsKIH0KIAorYm9vbCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6aXNTaW11bGF0aW5n
VXNlckludGVyYWN0aW9uKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcGVuZGluZ01vdXNlRXZlbnRz
Rmx1c2hlZENhbGxiYWNrc1BlclBhZ2UuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgaWYgKCFtX3BlbmRpbmdLZXlib2FyZEV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdl
LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9
CisKK1NpbXVsYXRlZElucHV0RGlzcGF0Y2hlciYgV2ViQXV0b21hdGlvblNlc3Npb246OmlucHV0
RGlzcGF0Y2hlckZvclBhZ2UoV2ViUGFnZVByb3h5JiBwYWdlKQoreworICAgIGlmICghbV9pbnB1
dERpc3BhdGNoZXJzQnlQYWdlLmNvbnRhaW5zKHBhZ2UucGFnZUlEKCkpKQorICAgICAgICBtX2lu
cHV0RGlzcGF0Y2hlcnNCeVBhZ2Uuc2V0KHBhZ2UucGFnZUlEKCksIFNpbXVsYXRlZElucHV0RGlz
cGF0Y2hlcjo6Y3JlYXRlKHBhZ2UsICp0aGlzKSk7CisKKyAgICByZXR1cm4gKm1faW5wdXREaXNw
YXRjaGVyc0J5UGFnZS5nZXQocGFnZS5wYWdlSUQoKSk7Cit9CisKK1NpbXVsYXRlZElucHV0U291
cmNlKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6aW5wdXRTb3VyY2VGb3JUeXBlKFNpbXVsYXRlZElu
cHV0U291cmNlOjpUeXBlIHR5cGUpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IHRoaXMgc2hvdWxk
IHVzZSBzb21ldGhpbmcgbGlrZSBWZWN0b3IncyBmaW5kTWF0Y2hpbmcoKS4KKyAgICBmb3IgKGF1
dG8mIGlucHV0U291cmNlIDogbV9pbnB1dFNvdXJjZXMpIHsKKyAgICAgICAgaWYgKGlucHV0U291
cmNlLT50eXBlID09IHR5cGUpCisgICAgICAgICAgICByZXR1cm4gJmlucHV0U291cmNlLmdldCgp
OworICAgIH0KKworICAgIHJldHVybiBudWxscHRyOworfQorCisvLyBTaW11bGF0ZWRJbnB1dERp
c3BhdGNoZXI6OkNsaWVudCBBUEkKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnNpbXVsYXRl
TW91c2VJbnRlcmFjdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIE1vdXNlSW50ZXJhY3Rpb24gaW50
ZXJhY3Rpb24sIFdlYk1vdXNlRXZlbnQ6OkJ1dHRvbiBtb3VzZUJ1dHRvbiwgY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmIGxvY2F0aW9uSW5WaWV3cG9ydCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChz
dGQ6Om9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+KT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3sKKyAgICBXZWJDb3JlOjpJbnRQb2ludCBsb2NhdGlvbkluVmlldyA9IFdlYkNvcmU6Oklu
dFBvaW50KGxvY2F0aW9uSW5WaWV3cG9ydC54KCksIGxvY2F0aW9uSW5WaWV3cG9ydC55KCkgKyBw
YWdlLnRvcENvbnRlbnRJbnNldCgpKTsKKyAgICBwYWdlLmdldFdpbmRvd0ZyYW1lV2l0aENhbGxi
YWNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHBhZ2UgPSBtYWtlUmVmKHBhZ2UpLCBp
bnRlcmFjdGlvbiwgbW91c2VCdXR0b24sIGxvY2F0aW9uSW5WaWV3XShXZWJDb3JlOjpGbG9hdFJl
Y3Qgd2luZG93RnJhbWUpIG11dGFibGUgeworICAgICAgICBhdXRvIGNsaXBwZWRYID0gc3RkOjpt
aW4oc3RkOjptYXgoMC4wZiwgKGZsb2F0KWxvY2F0aW9uSW5WaWV3LngoKSksIHdpbmRvd0ZyYW1l
LnNpemUoKS53aWR0aCgpKTsKKyAgICAgICAgYXV0byBjbGlwcGVkWSA9IHN0ZDo6bWluKHN0ZDo6
bWF4KDAuMGYsIChmbG9hdClsb2NhdGlvbkluVmlldy55KCkpLCB3aW5kb3dGcmFtZS5zaXplKCku
aGVpZ2h0KCkpOworICAgICAgICBpZiAoY2xpcHBlZFggIT0gbG9jYXRpb25JblZpZXcueCgpIHx8
IGNsaXBwZWRZICE9IGxvY2F0aW9uSW5WaWV3LnkoKSkgeworICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoQVVUT01BVElPTl9DT01NQU5EX0VSUk9SX1dJVEhfTkFNRShUYXJnZXRPdXRPZkJv
dW5kcykpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLy8gQnJp
ZGdlIHRoZSBmbHVzaGVkIGNhbGxiYWNrIHRvIG91ciBjb21tYW5kJ3MgY29tcGxldGlvbiBoYW5k
bGVyLgorICAgICAgICBhdXRvIG1vdXNlRXZlbnRzRmx1c2hlZENhbGxiYWNrID0gW2NvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKHN0ZDo6b3B0aW9uYWw8QXV0
b21hdGlvbkNvbW1hbmRFcnJvcj4gZXJyb3IpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKGVycm9yKTsKKyAgICAgICAgfTsKKworICAgICAgICBhdXRvJiBjYWxsYmFja0luTWFwID0g
bV9wZW5kaW5nTW91c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS5hZGQocGFnZS0+cGFn
ZUlEKCksIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgaWYgKGNhbGxiYWNrSW5N
YXApCisgICAgICAgICAgICBjYWxsYmFja0luTWFwKEFVVE9NQVRJT05fQ09NTUFORF9FUlJPUl9X
SVRIX05BTUUoVGltZW91dCkpOworICAgICAgICBjYWxsYmFja0luTWFwID0gV1RGTW92ZShtb3Vz
ZUV2ZW50c0ZsdXNoZWRDYWxsYmFjayk7CisKKyAgICAgICAgcGxhdGZvcm1TaW11bGF0ZU1vdXNl
SW50ZXJhY3Rpb24ocGFnZSwgaW50ZXJhY3Rpb24sIG1vdXNlQnV0dG9uLCBsb2NhdGlvbkluVmll
dywgKFdlYkV2ZW50OjpNb2RpZmllcnMpbV9jdXJyZW50TW9kaWZpZXJzKTsKKworICAgICAgICAv
LyBJZiB0aGUgZXZlbnQgZG9lcyBub3QgaGl0IHRlc3QgYW55dGhpbmcgaW4gdGhlIHdpbmRvdywg
dGhlbiBpdCBtYXkgbm90IGhhdmUgYmVlbiBkZWxpdmVyZWQuCisgICAgICAgIGlmIChjYWxsYmFj
a0luTWFwICYmICFwYWdlLT5pc1Byb2Nlc3NpbmdNb3VzZUV2ZW50cygpKSB7CisgICAgICAgICAg
ICBhdXRvIGNhbGxiYWNrVG9DYW5jZWwgPSBtX3BlbmRpbmdNb3VzZUV2ZW50c0ZsdXNoZWRDYWxs
YmFja3NQZXJQYWdlLnRha2UocGFnZS0+cGFnZUlEKCkpOworICAgICAgICAgICAgY2FsbGJhY2tU
b0NhbmNlbChzdGQ6Om51bGxvcHQpOworICAgICAgICB9CisKKyAgICAgICAgLy8gT3RoZXJ3aXNl
LCB3YWl0IGZvciBtb3VzZUV2ZW50c0ZsdXNoZWRDYWxsYmFjayB0byBydW4gd2hlbiBhbGwgZXZl
bnRzIGFyZSBoYW5kbGVkLgorICAgIH0pOworfQorCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9u
OjpzaW11bGF0ZUtleWJvYXJkSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBLZXlib2Fy
ZEludGVyYWN0aW9uIGludGVyYWN0aW9uLCBzdGQ6Om9wdGlvbmFsPFZpcnR1YWxLZXk+IHZpcnR1
YWxLZXksIHN0ZDo6b3B0aW9uYWw8Q2hhcktleT4gY2hhcktleSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChzdGQ6Om9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+KT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3sKKyAgICAvLyBCcmlkZ2UgdGhlIGZsdXNoZWQgY2FsbGJhY2sgdG8gb3VyIGNv
bW1hbmQncyBjb21wbGV0aW9uIGhhbmRsZXIuCisgICAgYXV0byBrZXlib2FyZEV2ZW50c0ZsdXNo
ZWRDYWxsYmFjayA9IFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXShzdGQ6Om9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+IGVycm9yKSB7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKGVycm9yKTsKKyAgICB9OworCisgICAgYXV0byYgY2FsbGJh
Y2tJbk1hcCA9IG1fcGVuZGluZ0tleWJvYXJkRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2Uu
YWRkKHBhZ2UucGFnZUlEKCksIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBpZiAoY2Fs
bGJhY2tJbk1hcCkKKyAgICAgICAgY2FsbGJhY2tJbk1hcChBVVRPTUFUSU9OX0NPTU1BTkRfRVJS
T1JfV0lUSF9OQU1FKFRpbWVvdXQpKTsKKyAgICBjYWxsYmFja0luTWFwID0gV1RGTW92ZShrZXli
b2FyZEV2ZW50c0ZsdXNoZWRDYWxsYmFjayk7CisKKyAgICBwbGF0Zm9ybVNpbXVsYXRlS2V5Ym9h
cmRJbnRlcmFjdGlvbihwYWdlLCBpbnRlcmFjdGlvbiwgdmlydHVhbEtleSwgY2hhcktleSk7CisK
KyAgICAvLyBXYWl0IGZvciBrZXlib2FyZEV2ZW50c0ZsdXNoZWRDYWxsYmFjayB0byBydW4gd2hl
biBhbGwgZXZlbnRzIGFyZSBoYW5kbGVkLgorfQorCiAjaWYgVVNFKEFQUEtJVCkgfHwgUExBVEZP
Uk0oR1RLKQogc3RhdGljIFdlYkV2ZW50OjpNb2RpZmllcnMgcHJvdG9jb2xNb2RpZmllclRvV2Vi
RXZlbnRNb2RpZmllcihJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpLZXlNb2RpZmll
ciBtb2RpZmllcikKIHsKQEAgLTEzODQsNiArMTQ3MiwyMCBAQCBzdGF0aWMgV2ViRXZlbnQ6Ok1v
ZGlmaWVycyBwcm90b2NvbE1vZGlmaWVyVG9XZWJFdmVudE1vZGlmaWVyKEluc3BlY3Rvcjo6UHJv
dG9jbwogCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KKworc3RhdGljIFdl
Yk1vdXNlRXZlbnQ6OkJ1dHRvbiBwcm90b2NvbE1vdXNlQnV0dG9uVG9XZWJNb3VzZUV2ZW50QnV0
dG9uKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9uIGJ1dHRvbikK
K3sKKyAgICBzd2l0Y2ggKGJ1dHRvbikgeworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbjo6TW91c2VCdXR0b246Ok5vbmU6CisgICAgICAgIHJldHVybiBXZWJNb3VzZUV2
ZW50OjpOb0J1dHRvbjsKKyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246
Ok1vdXNlQnV0dG9uOjpMZWZ0OgorICAgICAgICByZXR1cm4gV2ViTW91c2VFdmVudDo6TGVmdEJ1
dHRvbjsKKyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0
dG9uOjpNaWRkbGU6CisgICAgICAgIHJldHVybiBXZWJNb3VzZUV2ZW50OjpNaWRkbGVCdXR0b247
CisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1dHRvbjo6
UmlnaHQ6CisgICAgICAgIHJldHVybiBXZWJNb3VzZUV2ZW50OjpSaWdodEJ1dHRvbjsKKyAgICB9
Cit9CiAjZW5kaWYgLy8gVVNFKEFQUEtJVCkgfHwgUExBVEZPUk0oR1RLKQogCiB2b2lkIFdlYkF1
dG9tYXRpb25TZXNzaW9uOjpwZXJmb3JtTW91c2VJbnRlcmFjdGlvbihjb25zdCBTdHJpbmcmIGhh
bmRsZSwgY29uc3QgSlNPTjo6T2JqZWN0JiByZXF1ZXN0ZWRQb3NpdGlvbk9iamVjdCwgY29uc3Qg
U3RyaW5nJiBtb3VzZUJ1dHRvblN0cmluZywgY29uc3QgU3RyaW5nJiBtb3VzZUludGVyYWN0aW9u
U3RyaW5nLCBjb25zdCBKU09OOjpBcnJheSYga2V5TW9kaWZpZXJTdHJpbmdzLCBSZWY8UGVyZm9y
bU1vdXNlSW50ZXJhY3Rpb25DYWxsYmFjaz4mJiBjYWxsYmFjaykKQEAgLTE0MTUsMTMgKzE1MTcs
MTMgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGVyZm9ybU1vdXNlSW50ZXJhY3Rpb24o
Y29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbnN0IEoKICAgICAgICAgV2ViRXZlbnQ6Ok1vZGlmaWVy
cyBlbnVtVmFsdWUgPSBwcm90b2NvbE1vZGlmaWVyVG9XZWJFdmVudE1vZGlmaWVyKHBhcnNlZE1v
ZGlmaWVyLnZhbHVlKCkpOwogICAgICAgICBrZXlNb2RpZmllcnMgPSAoV2ViRXZlbnQ6Ok1vZGlm
aWVycykoZW51bVZhbHVlIHwga2V5TW9kaWZpZXJzKTsKICAgICB9Ci0gICAgCisKICAgICBwYWdl
LT5nZXRXaW5kb3dGcmFtZVdpdGhDYWxsYmFjayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBwYWdlID0gbWFrZVJlZigq
cGFnZSksIHgsIHksIG1vdXNlSW50ZXJhY3Rpb25TdHJpbmcsIG1vdXNlQnV0dG9uU3RyaW5nLCBr
ZXlNb2RpZmllcnNdKFdlYkNvcmU6OkZsb2F0UmVjdCB3aW5kb3dGcmFtZSkgbXV0YWJsZSB7CiAK
ICAgICAgICAgeCA9IHN0ZDo6bWluKHN0ZDo6bWF4KDAuMGYsIHgpLCB3aW5kb3dGcmFtZS5zaXpl
KCkud2lkdGgoKSk7CiAgICAgICAgIHkgPSBzdGQ6Om1pbihzdGQ6Om1heCgwLjBmLCB5ICsgcGFn
ZS0+dG9wQ29udGVudEluc2V0KCkpLCB3aW5kb3dGcmFtZS5zaXplKCkuaGVpZ2h0KCkpOwogCi0g
ICAgICAgIFdlYkNvcmU6OkludFBvaW50IHZpZXdQb3NpdGlvbiA9IFdlYkNvcmU6OkludFBvaW50
KHN0YXRpY19jYXN0PGludD4oeCksIHN0YXRpY19jYXN0PGludD4oeSkpOworICAgICAgICBXZWJD
b3JlOjpJbnRQb2ludCBwb3NpdGlvbkluVmlldyA9IFdlYkNvcmU6OkludFBvaW50KHN0YXRpY19j
YXN0PGludD4oeCksIHN0YXRpY19jYXN0PGludD4oeSkpOwogCiAgICAgICAgIGF1dG8gcGFyc2Vk
SW50ZXJhY3Rpb24gPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6cGFy
c2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1v
dXNlSW50ZXJhY3Rpb24+KG1vdXNlSW50ZXJhY3Rpb25TdHJpbmcpOwogICAgICAgICBpZiAoIXBh
cnNlZEludGVyYWN0aW9uKQpAQCAtMTQ0NywxMSArMTU0OSw4IEBAIHZvaWQgV2ViQXV0b21hdGlv
blNlc3Npb246OnBlcmZvcm1Nb3VzZUludGVyYWN0aW9uKGNvbnN0IFN0cmluZyYgaGFuZGxlLCBj
b25zdCBKCiAgICAgICAgICAgICBjYWxsYmFja0luTWFwKEFVVE9NQVRJT05fQ09NTUFORF9FUlJP
Ul9XSVRIX05BTUUoVGltZW91dCkpOwogICAgICAgICBjYWxsYmFja0luTWFwID0gV1RGTW92ZSht
b3VzZUV2ZW50c0ZsdXNoZWRDYWxsYmFjayk7CiAKLSAgICAgICAgLy8gVGhpcyBpcyBjbGVhcmVk
IHdoZW4gYWxsIG1vdXNlIGV2ZW50cyBhcmUgZmx1c2hlZC4KLSAgICAgICAgbV9zaW11bGF0aW5n
VXNlckludGVyYWN0aW9uID0gdHJ1ZTsKKyAgICAgICAgcGxhdGZvcm1TaW11bGF0ZU1vdXNlSW50
ZXJhY3Rpb24ocGFnZSwgcGFyc2VkSW50ZXJhY3Rpb24udmFsdWUoKSwgcHJvdG9jb2xNb3VzZUJ1
dHRvblRvV2ViTW91c2VFdmVudEJ1dHRvbihwYXJzZWRCdXR0b24udmFsdWUoKSksIHBvc2l0aW9u
SW5WaWV3LCBrZXlNb2RpZmllcnMpOwogCi0gICAgICAgIHBsYXRmb3JtU2ltdWxhdGVNb3VzZUlu
dGVyYWN0aW9uKHBhZ2UsIHZpZXdQb3NpdGlvbiwgcGFyc2VkSW50ZXJhY3Rpb24udmFsdWUoKSwg
cGFyc2VkQnV0dG9uLnZhbHVlKCksIGtleU1vZGlmaWVycyk7Ci0gICAgICAgIAogICAgICAgICAv
LyBJZiB0aGUgZXZlbnQgbG9jYXRpb24gd2FzIHByZXZpb3VzbHkgY2xpcHBlZCBhbmQgZG9lcyBu
b3QgaGl0IHRlc3QgYW55dGhpbmcgaW4gdGhlIHdpbmRvdywgdGhlbiBpdCB3aWxsIG5vdCBiZSBw
cm9jZXNzZWQuCiAgICAgICAgIC8vIEZvciBjb21wYXRpYmlsaXR5IHdpdGggcHJlLVczQyBkcml2
ZXIgaW1wbGVtZW50YXRpb25zLCBkb24ndCBtYWtlIHRoaXMgYSBoYXJkIGVycm9yOyBqdXN0IGRv
IG5vdGhpbmcgc2lsZW50bHkuCiAgICAgICAgIC8vIEluIFczQy1vbmx5IGNvZGUgcGF0aHMsIHdl
IGNhbiByZWplY3QgYW55IHBvaW50ZXIgYWN0aW9ucyB3aG9zZSBjb29yZGluYXRlcyBhcmUgb3V0
c2lkZSB0aGUgdmlld3BvcnQgcmVjdC4KQEAgLTE0OTksNyArMTU5OCw3IEBAIHZvaWQgV2ViQXV0
b21hdGlvblNlc3Npb246OnBlcmZvcm1LZXlib2FyZEludGVyYWN0aW9ucyhjb25zdCBTdHJpbmcm
IGhhbmRsZSwgY29uCiAgICAgICAgICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURf
RVJST1JfQU5EX0RFVEFJTFMoSW52YWxpZFBhcmFtZXRlciwgIkFuIGludGVyYWN0aW9uIGluIHRo
ZSAnaW50ZXJhY3Rpb25zJyBwYXJhbWV0ZXIgaGFzIGFuIGludmFsaWQgJ2tleScgdmFsdWUuIik7
CiAKICAgICAgICAgICAgIGFjdGlvbnNUb1BlcmZvcm0udW5jaGVja2VkQXBwZW5kKFt0aGlzLCBw
YWdlLCBpbnRlcmFjdGlvblR5cGUsIHZpcnR1YWxLZXldIHsKLSAgICAgICAgICAgICAgICBwbGF0
Zm9ybVNpbXVsYXRlS2V5U3Ryb2tlKCpwYWdlLCBpbnRlcmFjdGlvblR5cGUudmFsdWUoKSwgdmly
dHVhbEtleS52YWx1ZSgpKTsKKyAgICAgICAgICAgICAgICBwbGF0Zm9ybVNpbXVsYXRlS2V5Ym9h
cmRJbnRlcmFjdGlvbigqcGFnZSwgaW50ZXJhY3Rpb25UeXBlLnZhbHVlKCksIHZpcnR1YWxLZXks
IHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQogCkBAIC0xNTQwLDE0
ICsxNjM5LDE2MyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwZXJmb3JtS2V5Ym9hcmRJ
bnRlcmFjdGlvbnMoY29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbgogICAgICAgICBjYWxsYmFja0lu
TWFwKEFVVE9NQVRJT05fQ09NTUFORF9FUlJPUl9XSVRIX05BTUUoVGltZW91dCkpOwogICAgIGNh
bGxiYWNrSW5NYXAgPSBXVEZNb3ZlKGtleWJvYXJkRXZlbnRzRmx1c2hlZENhbGxiYWNrKTsKIAot
ICAgIC8vIFRoaXMgaXMgY2xlYXJlZCB3aGVuIGFsbCBrZXlib2FyZCBldmVudHMgYXJlIGZsdXNo
ZWQuCi0gICAgbV9zaW11bGF0aW5nVXNlckludGVyYWN0aW9uID0gdHJ1ZTsKLQogICAgIGZvciAo
YXV0byYgYWN0aW9uIDogYWN0aW9uc1RvUGVyZm9ybSkKICAgICAgICAgYWN0aW9uKCk7CiAjZW5k
aWYgLy8gUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKEdUSykKIH0KIAorc3RhdGljIFNpbXVs
YXRlZElucHV0U291cmNlOjpUeXBlIHNpbXVsYXRlZElucHV0U291cmNlVHlwZUZyb21Qcm90b2Nv
bFNvdXJjZVR5cGUoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6SW5wdXRTb3VyY2VU
eXBlIHByb3RvY29sVHlwZSkKK3sKKyAgICBzd2l0Y2ggKHByb3RvY29sVHlwZSkgeworICAgIGNh
c2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6SW5wdXRTb3VyY2VUeXBlOjpOdWxs
OgorICAgICAgICByZXR1cm4gU2ltdWxhdGVkSW5wdXRTb3VyY2U6OlR5cGU6Ok51bGw7CisgICAg
Y2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpJbnB1dFNvdXJjZVR5cGU6Oktl
eWJvYXJkOgorICAgICAgICByZXR1cm4gU2ltdWxhdGVkSW5wdXRTb3VyY2U6OlR5cGU6OktleWJv
YXJkOworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6SW5wdXRTb3Vy
Y2VUeXBlOjpNb3VzZToKKyAgICAgICAgcmV0dXJuIFNpbXVsYXRlZElucHV0U291cmNlOjpUeXBl
OjpNb3VzZTsKKyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OklucHV0
U291cmNlVHlwZTo6VG91Y2g6CisgICAgICAgIHJldHVybiBTaW11bGF0ZWRJbnB1dFNvdXJjZTo6
VHlwZTo6VG91Y2g7CisgICAgfQorfQorCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwZXJm
b3JtSW50ZXJhY3Rpb25TZXF1ZW5jZShjb25zdCBTdHJpbmcmIGhhbmRsZSwgY29uc3QgSlNPTjo6
QXJyYXkmIGlucHV0U291cmNlcywgY29uc3QgSlNPTjo6QXJyYXkmIHN0ZXBzLCBSZWY8V2ViQXV0
b21hdGlvblNlc3Npb246OlBlcmZvcm1JbnRlcmFjdGlvblNlcXVlbmNlQ2FsbGJhY2s+JiYgY2Fs
bGJhY2spCit7CisgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gd2ViUGFnZVByb3h5Rm9ySGFuZGxl
KGhhbmRsZSk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVG
SU5FRF9FUlJPUihXaW5kb3dOb3RGb3VuZCk7CisKKyAgICBIYXNoTWFwPFN0cmluZywgUmVmPFNp
bXVsYXRlZElucHV0U291cmNlPj4gc291cmNlSWRUb0lucHV0U291cmNlTWFwOworICAgIEhhc2hN
YXA8U2ltdWxhdGVkSW5wdXRTb3VyY2U6OlR5cGUsIFN0cmluZywgV1RGOjpJbnRIYXNoPFNpbXVs
YXRlZElucHV0U291cmNlOjpUeXBlPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxTaW11bGF0
ZWRJbnB1dFNvdXJjZTo6VHlwZT4+IHR5cGVUb1NvdXJjZUlkTWFwOworCisgICAgaWYgKCFpbnB1
dFNvdXJjZXMubGVuZ3RoKCkpCisgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VS
Uk9SX0FORF9ERVRBSUxTKEludmFsaWRQYXJhbWV0ZXIsICJUaGUgcGFyYW1ldGVyICdpbnB1dFNv
dXJjZXMnIHdhcyBub3QgZm91bmQgb3IgZW1wdHkuIik7CisKKyAgICBmb3IgKGF1dG8gaW5wdXRT
b3VyY2UgOiBpbnB1dFNvdXJjZXMpIHsKKyAgICAgICAgUmVmUHRyPEpTT046Ok9iamVjdD4gaW5w
dXRTb3VyY2VPYmplY3Q7CisgICAgICAgIGlmICghaW5wdXRTb3VyY2UtPmFzT2JqZWN0KGlucHV0
U291cmNlT2JqZWN0KSkKKyAgICAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VS
Uk9SX0FORF9ERVRBSUxTKEludmFsaWRQYXJhbWV0ZXIsICJBbiBpbnB1dCBzb3VyY2UgaW4gdGhl
ICdpbnB1dFNvdXJjZXMnIHBhcmFtZXRlciB3YXMgaW52YWxpZC4iKTsKKyAgICAgICAgCisgICAg
ICAgIFN0cmluZyBzb3VyY2VJZDsKKyAgICAgICAgaWYgKCFpbnB1dFNvdXJjZU9iamVjdC0+Z2V0
U3RyaW5nKEFTQ0lJTGl0ZXJhbCgic291cmNlSWQiKSwgc291cmNlSWQpKQorICAgICAgICAgICAg
QVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxpZFBhcmFt
ZXRlciwgIkFuIGlucHV0IHNvdXJjZSBpbiB0aGUgJ2lucHV0U291cmNlcycgcGFyYW1ldGVyIGlz
IG1pc3NpbmcgYSAnc291cmNlSWQnLiIpOworCisgICAgICAgIFN0cmluZyBzb3VyY2VUeXBlOwor
ICAgICAgICBpZiAoIWlucHV0U291cmNlT2JqZWN0LT5nZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJz
b3VyY2VUeXBlIiksIHNvdXJjZVR5cGUpKQorICAgICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BS
RURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxpZFBhcmFtZXRlciwgIkFuIGlucHV0IHNv
dXJjZSBpbiB0aGUgJ2lucHV0U291cmNlcycgcGFyYW1ldGVyIGlzIG1pc3NpbmcgYSAnc291cmNl
VHlwZScuIik7CisKKyAgICAgICAgYXV0byBwYXJzZWRJbnB1dFNvdXJjZVR5cGUgPSBJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5n
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OklucHV0U291cmNlVHlwZT4oc291cmNl
VHlwZSk7CisgICAgICAgIGlmICghcGFyc2VkSW5wdXRTb3VyY2VUeXBlKQorICAgICAgICAgICAg
QVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxpZFBhcmFt
ZXRlciwgIkFuIGlucHV0IHNvdXJjZSBpbiB0aGUgJ2lucHV0U291cmNlcycgcGFyYW1ldGVyIGhh
cyBhbiBpbnZhbGlkICdzb3VyY2VUeXBlJy4iKTsKKworICAgICAgICBTaW11bGF0ZWRJbnB1dFNv
dXJjZTo6VHlwZSBpbnB1dFNvdXJjZVR5cGUgPSBzaW11bGF0ZWRJbnB1dFNvdXJjZVR5cGVGcm9t
UHJvdG9jb2xTb3VyY2VUeXBlKCpwYXJzZWRJbnB1dFNvdXJjZVR5cGUpOworICAgICAgICBpZiAo
aW5wdXRTb3VyY2VUeXBlID09IFNpbXVsYXRlZElucHV0U291cmNlOjpUeXBlOjpUb3VjaCkKKyAg
ICAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKE5v
dEltcGxlbWVudGVkLCAiVG91Y2ggaW5wdXQgc291cmNlcyBhcmUgbm90IHlldCBzdXBwb3J0ZWQu
Iik7CisKKyAgICAgICAgaWYgKHR5cGVUb1NvdXJjZUlkTWFwLmNvbnRhaW5zKGlucHV0U291cmNl
VHlwZSkpCisgICAgICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9BTkRf
REVUQUlMUyhJbnZhbGlkUGFyYW1ldGVyLCAiVHdvIGlucHV0IHNvdXJjZXMgd2l0aCB0aGUgc2Ft
ZSB0eXBlIHdlcmUgc3BlY2lmaWVkLiIpOworICAgICAgICBpZiAoc291cmNlSWRUb0lucHV0U291
cmNlTWFwLmNvbnRhaW5zKHNvdXJjZUlkKSkKKyAgICAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9Q
UkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKEludmFsaWRQYXJhbWV0ZXIsICJUd28gaW5wdXQg
c291cmNlcyB3aXRoIHRoZSBzYW1lIHNvdXJjZUlkIHdlcmUgc3BlY2lmaWVkLiIpOworCisgICAg
ICAgIHR5cGVUb1NvdXJjZUlkTWFwLmFkZChpbnB1dFNvdXJjZVR5cGUsIHNvdXJjZUlkKTsKKyAg
ICAgICAgc291cmNlSWRUb0lucHV0U291cmNlTWFwLmFkZChzb3VyY2VJZCwgKmlucHV0U291cmNl
Rm9yVHlwZShpbnB1dFNvdXJjZVR5cGUpKTsKKyAgICB9CisKKyAgICBWZWN0b3I8U2ltdWxhdGVk
SW5wdXRLZXlGcmFtZT4ga2V5RnJhbWVzOworCisgICAgaWYgKCFzdGVwcy5sZW5ndGgoKSkKKyAg
ICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxp
ZFBhcmFtZXRlciwgIlRoZSBwYXJhbWV0ZXIgJ3N0ZXBzJyB3YXMgbm90IGZvdW5kIG9yIGVtcHR5
LiIpOworCisgICAgZm9yIChhdXRvIHN0ZXAgOiBzdGVwcykgeworICAgICAgICBSZWZQdHI8SlNP
Tjo6T2JqZWN0PiBzdGVwT2JqZWN0OworICAgICAgICBpZiAoIXN0ZXAtPmFzT2JqZWN0KHN0ZXBP
YmplY3QpKQorICAgICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5E
X0RFVEFJTFMoSW52YWxpZFBhcmFtZXRlciwgIkEgc3RlcCBpbiB0aGUgJ3N0ZXBzJyBwYXJhbWV0
ZXIgd2FzIG5vdCBhbiBvYmplY3QuIik7CisKKyAgICAgICAgUmVmUHRyPEpTT046OkFycmF5PiBz
dGVwU3RhdGVzOworICAgICAgICBpZiAoIXN0ZXBPYmplY3QtPmdldEFycmF5KEFTQ0lJTGl0ZXJh
bCgic3RhdGVzIiksIHN0ZXBTdGF0ZXMpKQorICAgICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BS
RURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxpZFBhcmFtZXRlciwgIkEgc3RlcCBpcyBt
aXNzaW5nIHRoZSAnc3RhdGVzJyBwcm9wZXJ0eS4iKTsKKworICAgICAgICBWZWN0b3I8U2ltdWxh
dGVkSW5wdXRLZXlGcmFtZTo6U3RhdGVFbnRyeT4gZW50cmllczsKKyAgICAgICAgZW50cmllcy5y
ZXNlcnZlQ2FwYWNpdHkoc3RlcFN0YXRlcy0+bGVuZ3RoKCkpOworCisgICAgICAgIGZvciAoYXV0
byBzdGF0ZSA6ICpzdGVwU3RhdGVzKSB7CisgICAgICAgICAgICBSZWZQdHI8SlNPTjo6T2JqZWN0
PiBzdGF0ZU9iamVjdDsKKyAgICAgICAgICAgIGlmICghc3RhdGUtPmFzT2JqZWN0KHN0YXRlT2Jq
ZWN0KSkKKyAgICAgICAgICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9B
TkRfREVUQUlMUyhJbnZhbGlkUGFyYW1ldGVyLCAiRW5jb3VudGVyZWQgYSBub24tb2JqZWN0IHN0
ZXAgc3RhdGUuIik7CisKKyAgICAgICAgICAgIFN0cmluZyBzb3VyY2VJZDsKKyAgICAgICAgICAg
IGlmICghc3RhdGVPYmplY3QtPmdldFN0cmluZyhBU0NJSUxpdGVyYWwoInNvdXJjZUlkIiksIHNv
dXJjZUlkKSkKKyAgICAgICAgICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJP
Ul9BTkRfREVUQUlMUyhJbnZhbGlkUGFyYW1ldGVyLCAiU3RlcCBzdGF0ZSBsYWNrcyByZXF1aXJl
ZCAnc291cmNlSWQnIHByb3BlcnR5LiIpOworCisgICAgICAgICAgICBpZiAoIXNvdXJjZUlkVG9J
bnB1dFNvdXJjZU1hcC5jb250YWlucyhzb3VyY2VJZCkpCisgICAgICAgICAgICAgICAgQVNZTkNf
RkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxpZFBhcmFtZXRlciwg
IlVua25vd24gJ3NvdXJjZUlkJyBzcGVjaWZpZWQuIik7CisKKyAgICAgICAgICAgIFNpbXVsYXRl
ZElucHV0U291cmNlJiBpbnB1dFNvdXJjZSA9ICpzb3VyY2VJZFRvSW5wdXRTb3VyY2VNYXAuZ2V0
KHNvdXJjZUlkKTsKKyAgICAgICAgICAgIFNpbXVsYXRlZElucHV0U291cmNlU3RhdGUgc291cmNl
U3RhdGUgeyB9OworCisgICAgICAgICAgICBTdHJpbmcgcHJlc3NlZENoYXJLZXlTdHJpbmc7Cisg
ICAgICAgICAgICBpZiAoc3RhdGVPYmplY3QtPmdldFN0cmluZyhBU0NJSUxpdGVyYWwoInByZXNz
ZWRDaGFyS2V5IiksIHByZXNzZWRDaGFyS2V5U3RyaW5nKSkKKyAgICAgICAgICAgICAgICBzb3Vy
Y2VTdGF0ZS5wcmVzc2VkQ2hhcktleSA9IHByZXNzZWRDaGFyS2V5U3RyaW5nLmNoYXJhY3RlckF0
KDApOworCisgICAgICAgICAgICBTdHJpbmcgcHJlc3NlZFZpcnR1YWxLZXlTdHJpbmc7CisgICAg
ICAgICAgICBpZiAoc3RhdGVPYmplY3QtPmdldFN0cmluZyhBU0NJSUxpdGVyYWwoInByZXNzZWRW
aXJ0dWFsS2V5IiksIHByZXNzZWRWaXJ0dWFsS2V5U3RyaW5nKSkKKyAgICAgICAgICAgICAgICBz
b3VyY2VTdGF0ZS5wcmVzc2VkVmlydHVhbEtleSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9t
YXRpb25IZWxwZXJzOjpwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXV0b21hdGlvbjo6VmlydHVhbEtleT4ocHJlc3NlZFZpcnR1YWxLZXlTdHJpbmcpOworCisg
ICAgICAgICAgICBTdHJpbmcgcHJlc3NlZEJ1dHRvblN0cmluZzsKKyAgICAgICAgICAgIGlmIChz
dGF0ZU9iamVjdC0+Z2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgicHJlc3NlZEJ1dHRvbiIpLCBwcmVz
c2VkQnV0dG9uU3RyaW5nKSkgeworICAgICAgICAgICAgICAgIGF1dG8gcHJvdG9jb2xCdXR0b24g
PSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6cGFyc2VFbnVtVmFsdWVG
cm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9uPihw
cmVzc2VkQnV0dG9uU3RyaW5nKTsKKyAgICAgICAgICAgICAgICBzb3VyY2VTdGF0ZS5wcmVzc2Vk
TW91c2VCdXR0b24gPSBwcm90b2NvbE1vdXNlQnV0dG9uVG9XZWJNb3VzZUV2ZW50QnV0dG9uKHBy
b3RvY29sQnV0dG9uLnZhbHVlX29yKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1v
dXNlQnV0dG9uOjpOb25lKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFJlZlB0cjxK
U09OOjpPYmplY3Q+IGxvY2F0aW9uT2JqZWN0OworICAgICAgICAgICAgaWYgKHN0YXRlT2JqZWN0
LT5nZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJsb2NhdGlvbiIpLCBsb2NhdGlvbk9iamVjdCkpIHsK
KyAgICAgICAgICAgICAgICBpbnQgeCwgeTsKKyAgICAgICAgICAgICAgICBpZiAobG9jYXRpb25P
YmplY3QtPmdldEludGVnZXIoQVNDSUlMaXRlcmFsKCJ4IiksIHgpICYmIGxvY2F0aW9uT2JqZWN0
LT5nZXRJbnRlZ2VyKEFTQ0lJTGl0ZXJhbCgieSIpLCB5KSkKKyAgICAgICAgICAgICAgICAgICAg
c291cmNlU3RhdGUubG9jYXRpb24gPSBXZWJDb3JlOjpJbnRQb2ludCh4LCB5KTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgaW50IHBhcnNlZER1cmF0aW9uOworICAgICAgICAgICAgaWYg
KHN0YXRlT2JqZWN0LT5nZXRJbnRlZ2VyKEFTQ0lJTGl0ZXJhbCgiZHVyYXRpb24iKSwgcGFyc2Vk
RHVyYXRpb24pKQorICAgICAgICAgICAgICAgIHNvdXJjZVN0YXRlLmR1cmF0aW9uID0gU2Vjb25k
czo6ZnJvbU1pbGxpc2Vjb25kcyhwYXJzZWREdXJhdGlvbik7CisKKyAgICAgICAgICAgIGVudHJp
ZXMudW5jaGVja2VkQXBwZW5kKHN0ZDo6cGFpcjxTaW11bGF0ZWRJbnB1dFNvdXJjZSYsIFNpbXVs
YXRlZElucHV0U291cmNlU3RhdGU+IHsgaW5wdXRTb3VyY2UsIHNvdXJjZVN0YXRlIH0pOworICAg
ICAgICB9CisgICAgICAgIAorICAgICAgICBrZXlGcmFtZXMuYXBwZW5kKFNpbXVsYXRlZElucHV0
S2V5RnJhbWUoV1RGTW92ZShlbnRyaWVzKSkpOworICAgIH0KKworICAgIFNpbXVsYXRlZElucHV0
RGlzcGF0Y2hlciYgaW5wdXREaXNwYXRjaGVyID0gaW5wdXREaXNwYXRjaGVyRm9yUGFnZSgqcGFn
ZSk7CisgICAgaWYgKGlucHV0RGlzcGF0Y2hlci5pc0FjdGl2ZSgpKSB7CisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJP
Ul9BTkRfREVUQUlMUyhJbnRlcm5hbEVycm9yLCAiQSBwcmV2aW91cyBpbnRlcmFjdGlvbiBpcyBz
dGlsbCB1bmRlcndheS4iKTsKKyAgICB9CisKKyAgICBpbnB1dERpc3BhdGNoZXIucnVuKFdURk1v
dmUoa2V5RnJhbWVzKSwgbV9pbnB1dFNvdXJjZXMsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKHN0ZDo6b3B0aW9uYWw8
QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4gZXJyb3IpIHsKKyAgICAgICAgaWYgKGVycm9yKQorICAg
ICAgICAgICAgY2FsbGJhY2stPnNlbmRGYWlsdXJlKGVycm9yLnZhbHVlKCkudG9Qcm90b2NvbFN0
cmluZygpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY2FsbGJhY2stPnNlbmRTdWNjZXNz
KCk7CisgICAgfSk7Cit9CisKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmNhbmNlbEludGVy
YWN0aW9uU2VxdWVuY2UoY29uc3QgU3RyaW5nJiBoYW5kbGUsIFJlZjxDYW5jZWxJbnRlcmFjdGlv
blNlcXVlbmNlQ2FsbGJhY2s+JiYgY2FsbGJhY2spCit7CisgICAgV2ViUGFnZVByb3h5KiBwYWdl
ID0gd2ViUGFnZVByb3h5Rm9ySGFuZGxlKGhhbmRsZSk7CisgICAgaWYgKCFwYWdlKQorICAgICAg
ICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihXaW5kb3dOb3RGb3VuZCk7CisKKyAg
ICBWZWN0b3I8U2ltdWxhdGVkSW5wdXRLZXlGcmFtZT4ga2V5RnJhbWVzKHsgU2ltdWxhdGVkSW5w
dXRLZXlGcmFtZTo6a2V5RnJhbWVUb1Jlc2V0SW5wdXRTb3VyY2VzKG1faW5wdXRTb3VyY2VzKSB9
KTsKKyAgICBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXImIGlucHV0RGlzcGF0Y2hlciA9IGlucHV0
RGlzcGF0Y2hlckZvclBhZ2UoKnBhZ2UpOworICAgIGlmIChpbnB1dERpc3BhdGNoZXIuaXNBY3Rp
dmUoKSkKKyAgICAgICAgaW5wdXREaXNwYXRjaGVyLmNhbmNlbCgpOworICAgIAorICAgIGlucHV0
RGlzcGF0Y2hlci5ydW4oV1RGTW92ZShrZXlGcmFtZXMpLCBtX2lucHV0U291cmNlcywgW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKV0oc3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPiBlcnJvcikgeworICAg
ICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICBjYWxsYmFjay0+c2VuZEZhaWx1cmUoZXJyb3Iu
dmFsdWUoKS50b1Byb3RvY29sU3RyaW5nKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBj
YWxsYmFjay0+c2VuZFN1Y2Nlc3MoKTsKKyAgICB9KTsKK30KKwogdm9pZCBXZWJBdXRvbWF0aW9u
U2Vzc2lvbjo6dGFrZVNjcmVlbnNob3QoY29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbnN0IFN0cmlu
Zyogb3B0aW9uYWxGcmFtZUhhbmRsZSwgY29uc3QgU3RyaW5nKiBvcHRpb25hbE5vZGVIYW5kbGUs
IGNvbnN0IGJvb2wqIG9wdGlvbmFsU2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgY29uc3QgYm9vbCog
b3B0aW9uYWxDbGlwVG9WaWV3cG9ydCwgUmVmPFRha2VTY3JlZW5zaG90Q2FsbGJhY2s+JiYgY2Fs
bGJhY2spCiB7CiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gd2ViUGFnZVByb3h5Rm9ySGFuZGxl
KGhhbmRsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9u
L1dlYkF1dG9tYXRpb25TZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0
aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmgKaW5kZXggM2FlMzVlNmY3ZWNkYzU4YTNkZDk1ZTk4
MDgwZWY0YTMyOTVjYTcxOS4uNGQyNDhjYzkxMDJmZDMyNDU5Yzk1MDUyYWQ2Y2FlMGYzM2IyZTE2
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRv
bWF0aW9uU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24v
V2ViQXV0b21hdGlvblNlc3Npb24uaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkF1dG9t
YXRpb25Gcm9udGVuZERpc3BhdGNoZXJzLmgiCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2lu
Y2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgorI2luY2x1ZGUgIlNpbXVsYXRlZElucHV0RGlzcGF0
Y2hlci5oIgogI2luY2x1ZGUgIldlYkV2ZW50LmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25I
YW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTc2LDcgKzc3LDcgQEAgY2xh
c3MgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eTsKIGNsYXNzIFdlYlBhZ2VQcm94eTsK
IGNsYXNzIFdlYlByb2Nlc3NQb29sOwogCi1zdHJ1Y3QgQXV0b21hdGlvbkNvbW1hbmRFcnJvciB7
CitjbGFzcyBBdXRvbWF0aW9uQ29tbWFuZEVycm9yIHsKIHB1YmxpYzoKICAgICBJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2UgdHlwZTsKICAgICBzdGQ6Om9wdGlv
bmFsPFN0cmluZz4gbWVzc2FnZSB7IHN0ZDo6bnVsbG9wdCB9OwpAQCAtOTEsMTEgKzkyLDE0IEBA
IHB1YmxpYzoKICAgICBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZygpOwogfTsKIAordXNpbmcgQXV0
b21hdGlvbkNvbXBsZXRpb25IYW5kbGVyID0gV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0
ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4pPjsKKwogY2xhc3MgV2ViQXV0b21h
dGlvblNlc3Npb24gZmluYWwgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpU
eXBlOjpBdXRvbWF0aW9uU2Vzc2lvbj4sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogI2lm
IEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogICAgICwgcHVibGljIEluc3BlY3Rvcjo6UmVtb3Rl
QXV0b21hdGlvblRhcmdldAogI2VuZGlmCiAgICAgLCBwdWJsaWMgSW5zcGVjdG9yOjpBdXRvbWF0
aW9uQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyCisgICAgLCBwdWJsaWMgU2ltdWxhdGVkSW5wdXRE
aXNwYXRjaGVyOjpDbGllbnQKIHsKIHB1YmxpYzoKICAgICBXZWJBdXRvbWF0aW9uU2Vzc2lvbigp
OwpAQCAtMTMxLDYgKzEzNSwxMCBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB2b2lkIHRlcm1pbmF0
ZSgpOwogCisgICAgLy8gU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjpDbGllbnQgQVBJCisgICAg
dm9pZCBzaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiwgTW91c2VJbnRlcmFj
dGlvbiwgV2ViTW91c2VFdmVudDo6QnV0dG9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbG9j
YXRpb25JblZpZXcsIEF1dG9tYXRpb25Db21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKKyAgICB2
b2lkIHNpbXVsYXRlS2V5Ym9hcmRJbnRlcmFjdGlvbihXZWJQYWdlUHJveHkmLCBLZXlib2FyZElu
dGVyYWN0aW9uLCBzdGQ6Om9wdGlvbmFsPFZpcnR1YWxLZXk+LCBzdGQ6Om9wdGlvbmFsPENoYXJL
ZXk+LCBBdXRvbWF0aW9uQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CisKICAgICAvLyBJbnNw
ZWN0b3I6OkF1dG9tYXRpb25CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgQVBJCiAgICAgLy8gTk9U
RTogdGhlIHNldCBvZiBkZWNsYXJhdGlvbnMgaW5jbHVkZWQgaW4gdGhpcyBpbnRlcmZhY2UgZGVw
ZW5kIG9uIHRoZSAicGxhdGZvcm0iIHByb3BlcnR5IGluIEF1dG9tYXRpb24uanNvbgogICAgIC8v
IGFuZCB0aGUgLS1wbGF0Zm9ybSBhcmd1bWVudCBwYXNzZWQgdG8gdGhlIHByb3RvY29sIGJpbmRp
bmdzIGdlbmVyYXRvci4KQEAgLTE1MSw2ICsxNTksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBldmFs
dWF0ZUphdmFTY3JpcHRGdW5jdGlvbihjb25zdCBTdHJpbmcmIGJyb3dzaW5nQ29udGV4dEhhbmRs
ZSwgY29uc3QgU3RyaW5nKiBvcHRpb25hbEZyYW1lSGFuZGxlLCBjb25zdCBTdHJpbmcmIGZ1bmN0
aW9uLCBjb25zdCBKU09OOjpBcnJheSYgYXJndW1lbnRzLCBjb25zdCBib29sKiBvcHRpb25hbEV4
cGVjdHNJbXBsaWNpdENhbGxiYWNrQXJndW1lbnQsIGNvbnN0IGludCogb3B0aW9uYWxDYWxsYmFj
a1RpbWVvdXQsIFJlZjxJbnNwZWN0b3I6OkF1dG9tYXRpb25CYWNrZW5kRGlzcGF0Y2hlckhhbmRs
ZXI6OkV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uQ2FsbGJhY2s+JiYpIG92ZXJyaWRlOwogICAg
IHZvaWQgcGVyZm9ybU1vdXNlSW50ZXJhY3Rpb24oY29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbnN0
IEpTT046Ok9iamVjdCYgcmVxdWVzdGVkUG9zaXRpb24sIGNvbnN0IFN0cmluZyYgbW91c2VCdXR0
b24sIGNvbnN0IFN0cmluZyYgbW91c2VJbnRlcmFjdGlvbiwgY29uc3QgSlNPTjo6QXJyYXkmIGtl
eU1vZGlmaWVycywgUmVmPFBlcmZvcm1Nb3VzZUludGVyYWN0aW9uQ2FsbGJhY2s+JiYpIGZpbmFs
OwogICAgIHZvaWQgcGVyZm9ybUtleWJvYXJkSW50ZXJhY3Rpb25zKGNvbnN0IFN0cmluZyYgaGFu
ZGxlLCBjb25zdCBKU09OOjpBcnJheSYgaW50ZXJhY3Rpb25zLCBSZWY8UGVyZm9ybUtleWJvYXJk
SW50ZXJhY3Rpb25zQ2FsbGJhY2s+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgcGVyZm9ybUludGVy
YWN0aW9uU2VxdWVuY2UoY29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbnN0IEpTT046OkFycmF5JiBz
b3VyY2VzLCBjb25zdCBKU09OOjpBcnJheSYgc3RlcHMsIFJlZjxQZXJmb3JtSW50ZXJhY3Rpb25T
ZXF1ZW5jZUNhbGxiYWNrPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNhbmNlbEludGVyYWN0aW9u
U2VxdWVuY2UoY29uc3QgU3RyaW5nJiBoYW5kbGUsIFJlZjxDYW5jZWxJbnRlcmFjdGlvblNlcXVl
bmNlQ2FsbGJhY2s+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgdGFrZVNjcmVlbnNob3QoY29uc3Qg
U3RyaW5nJiBoYW5kbGUsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxGcmFtZUhhbmRsZSwgY29uc3Qg
U3RyaW5nKiBvcHRpb25hbE5vZGVIYW5kbGUsIGNvbnN0IGJvb2wqIG9wdGlvbmFsU2Nyb2xsSW50
b1ZpZXdJZk5lZWRlZCwgY29uc3QgYm9vbCogb3B0aW9uYWxDbGlwVG9WaWV3cG9ydCwgUmVmPFRh
a2VTY3JlZW5zaG90Q2FsbGJhY2s+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVzb2x2ZUNoaWxk
RnJhbWVIYW5kbGUoY29uc3QgU3RyaW5nJiBicm93c2luZ0NvbnRleHRIYW5kbGUsIGNvbnN0IFN0
cmluZyogb3B0aW9uYWxGcmFtZUhhbmRsZSwgY29uc3QgaW50KiBvcHRpb25hbE9yZGluYWwsIGNv
bnN0IFN0cmluZyogb3B0aW9uYWxOYW1lLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsTm9kZUhhbmRs
ZSwgUmVmPFJlc29sdmVDaGlsZEZyYW1lSGFuZGxlQ2FsbGJhY2s+JiYpIG92ZXJyaWRlOwogICAg
IHZvaWQgcmVzb2x2ZVBhcmVudEZyYW1lSGFuZGxlKGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250
ZXh0SGFuZGxlLCBjb25zdCBTdHJpbmcmIGZyYW1lSGFuZGxlLCBSZWY8UmVzb2x2ZVBhcmVudEZy
YW1lSGFuZGxlQ2FsbGJhY2s+JiYpIG92ZXJyaWRlOwpAQCAtMTc1LDcgKzE4NSwxMCBAQCBwdWJs
aWM6CiAjZW5kaWYKIAogICAgIC8vIEV2ZW50IFNpbXVsYXRpb24gU3VwcG9ydC4KLSAgICBib29s
IGlzU2ltdWxhdGluZ1VzZXJJbnRlcmFjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2ltdWxhdGlu
Z1VzZXJJbnRlcmFjdGlvbjsgfQorICAgIGJvb2wgaXNTaW11bGF0aW5nVXNlckludGVyYWN0aW9u
KCkgY29uc3Q7CisgICAgU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyJiBpbnB1dERpc3BhdGNoZXJG
b3JQYWdlKFdlYlBhZ2VQcm94eSYpOworICAgIFNpbXVsYXRlZElucHV0U291cmNlKiBpbnB1dFNv
dXJjZUZvclR5cGUoU2ltdWxhdGVkSW5wdXRTb3VyY2U6OlR5cGUpIGNvbnN0OworCiAjaWYgUExB
VEZPUk0oTUFDKQogICAgIGJvb2wgd2FzRXZlbnRTeW50aGVzaXplZEZvckF1dG9tYXRpb24oTlNF
dmVudCAqKTsKICAgICB2b2lkIG1hcmtFdmVudEFzU3ludGhlc2l6ZWRGb3JBdXRvbWF0aW9uKE5T
RXZlbnQgKik7CkBAIC0yMTUsOSArMjI4LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZERlbGV0
ZUNvb2tpZSh1aW50NjRfdCBjYWxsYmFja0lELCBjb25zdCBTdHJpbmcmIGVycm9yVHlwZSk7CiAK
ICAgICAvLyBQbGF0Zm9ybS1kZXBlbmRlbnQgaW1wbGVtZW50YXRpb25zLgotICAgIHZvaWQgcGxh
dGZvcm1TaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiwgY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmIHZpZXdQb3NpdGlvbiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlv
bjo6TW91c2VJbnRlcmFjdGlvbiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91
c2VCdXR0b24sIFdlYkV2ZW50OjpNb2RpZmllcnMpOwotICAgIC8vIFNpbXVsYXRlcyBhIHNpbmds
ZSB2aXJ0dWFsIGtleSBiZWluZyBwcmVzc2VkLCBzdWNoIGFzIENvbnRyb2wsIEYta2V5cywgTnVt
cGFkIGtleXMsIGV0Yy4gYXMgYWxsb3dlZCBieSB0aGUgcHJvdG9jb2wuCi0gICAgdm9pZCBwbGF0
Zm9ybVNpbXVsYXRlS2V5U3Ryb2tlKFdlYlBhZ2VQcm94eSYsIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkF1dG9tYXRpb246OktleWJvYXJkSW50ZXJhY3Rpb25UeXBlLCBJbnNwZWN0b3I6OlByb3RvY29s
OjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5KTsKKyAgICB2b2lkIHBsYXRmb3JtU2ltdWxhdGVNb3Vz
ZUludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYsIE1vdXNlSW50ZXJhY3Rpb24sIFdlYk1vdXNlRXZl
bnQ6OkJ1dHRvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGxvY2F0aW9uSW5WaWV3LCBXZWJF
dmVudDo6TW9kaWZpZXJzIGtleU1vZGlmaWVycyk7CisgICAgLy8gU2ltdWxhdGVzIGEgc2luZ2xl
IHZpcnR1YWwgb3IgY2hhciBrZXkgYmVpbmcgcHJlc3NlZC9yZWxlYXNlZCwgc3VjaCBhcyAnYScs
IENvbnRyb2wsIEYta2V5cywgTnVtcGFkIGtleXMsIGV0Yy4gYXMgYWxsb3dlZCBieSB0aGUgcHJv
dG9jb2wuCisgICAgdm9pZCBwbGF0Zm9ybVNpbXVsYXRlS2V5Ym9hcmRJbnRlcmFjdGlvbihXZWJQ
YWdlUHJveHkmLCBLZXlib2FyZEludGVyYWN0aW9uLCBzdGQ6Om9wdGlvbmFsPFZpcnR1YWxLZXk+
LCBzdGQ6Om9wdGlvbmFsPENoYXJLZXk+KTsKICAgICAvLyBTaW11bGF0ZXMga2V5IHByZXNzZXMg
dG8gcHJvZHVjZSB0aGUgY29kZXBvaW50cyBpbiBhIHN0cmluZy4gT25lIG9yIG1vcmUgY29kZSBw
b2ludHMgYXJlIGRlbGl2ZXJlZCBhdG9taWNhbGx5IGF0IGdyYXBoZW1lIGNsdXN0ZXIgYm91bmRh
cmllcy4KICAgICB2b2lkIHBsYXRmb3JtU2ltdWxhdGVLZXlTZXF1ZW5jZShXZWJQYWdlUHJveHkm
LCBjb25zdCBTdHJpbmcmKTsKICAgICAvLyBHZXQgYmFzZTY0IGVuY29kZWQgUE5HIGRhdGEgZnJv
bSBhIGJpdG1hcC4KQEAgLTI4OSwxMyArMzAyLDE1IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1f
cGVybWlzc2lvbkZvckdldFVzZXJNZWRpYSB7IHRydWUgfTsKIAotICAgIC8vIFRydWUgaWYgYSBz
eW50aGVzaXplZCBrZXkgZXZlbnQgaXMgc3RpbGwgYmVpbmcgcHJvY2Vzc2VkLgotICAgIGJvb2wg
bV9zaW11bGF0aW5nVXNlckludGVyYWN0aW9uIHsgZmFsc2UgfTsKLQogICAgIC8vIEtlZXAgdHJh
Y2sgb2YgY3VycmVudGx5IGFjdGl2ZSBtb2RpZmllcnMgYWNyb3NzIG11bHRpcGxlIGtleXN0cm9r
ZXMuCiAgICAgLy8gTW9zdCBwbGF0Zm9ybXMgZG8gbm90IHRyYWNrIGN1cnJlbnQgbW9kaWZpZXJz
IGZyb20gc3ludGhlc2l6ZWQgZXZlbnRzLgogICAgIHVuc2lnbmVkIG1fY3VycmVudE1vZGlmaWVy
cyB7IDAgfTsKIAorICAgIC8vIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlciBBUElzIHRha2UgYSBz
ZXQgb2YgaW5wdXQgc291cmNlcy4gV2UgYWxzbyBpbnRlcm4gdGhlc2UKKyAgICAvLyBzbyB0aGF0
IHByZXZpb3VzIGlucHV0IHNvdXJjZSBzdGF0ZSBpcyB1c2VkIGFzIGluaXRpYWwgc3RhdGUgZm9y
IGxhdGVyIGNvbW1hbmRzLgorICAgIEhhc2hTZXQ8UmVmPFNpbXVsYXRlZElucHV0U291cmNlPj4g
bV9pbnB1dFNvdXJjZXM7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmPFNpbXVsYXRlZElucHV0
RGlzcGF0Y2hlcj4+IG1faW5wdXREaXNwYXRjaGVyc0J5UGFnZTsKKwogI2lmIEVOQUJMRShSRU1P
VEVfSU5TUEVDVE9SKQogICAgIEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBtX3JlbW90ZUNo
YW5uZWwgeyBudWxscHRyIH07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0F1dG9tYXRpb24vZ3RrL1dlYkF1dG9tYXRpb25TZXNzaW9uR3RrLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vZ3RrL1dlYkF1dG9tYXRpb25TZXNzaW9uR3Rr
LmNwcAppbmRleCAyOGNmNzk0OGM4M2I3Y2QxOTJjMDNjMDdhNTJhOTAxZGI2OGRlY2RhLi44YzYy
ODY0ZGUxMmI3YmEzNWEyNjE4YWExMzU5ZmU0ZTAzNGEzZmRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2d0ay9XZWJBdXRvbWF0aW9uU2Vzc2lvbkd0ay5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9ndGsvV2ViQXV0b21h
dGlvblNlc3Npb25HdGsuY3BwCkBAIC00OCwxNSArNDgsMTUgQEAgc3RhdGljIHVuc2lnbmVkIG1v
ZGlmaWVyc1RvRXZlbnRTdGF0ZShXZWJFdmVudDo6TW9kaWZpZXJzIG1vZGlmaWVycykKICAgICBy
ZXR1cm4gc3RhdGU7CiB9CiAKLXN0YXRpYyB1bnNpZ25lZCBtb3VzZUJ1dHRvblRvR2RrQnV0dG9u
KEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9uIGJ1dHRvbikKK3N0
YXRpYyB1bnNpZ25lZCBtb3VzZUJ1dHRvblRvR2RrQnV0dG9uKFdlYk1vdXNlRXZlbnQ6OkJ1dHRv
biBidXR0b24pCiB7CiAgICAgc3dpdGNoIChidXR0b24pIHsKLSAgICBjYXNlIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9uOjpOb25lOgotICAgIGNhc2UgSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VCdXR0b246OkxlZnQ6CisgICAgY2FzZSBX
ZWJNb3VzZUV2ZW50OjpOb0J1dHRvbjoKKyAgICBjYXNlIFdlYk1vdXNlRXZlbnQ6OkxlZnRCdXR0
b246CiAgICAgICAgIHJldHVybiBHREtfQlVUVE9OX1BSSU1BUlk7Ci0gICAgY2FzZSBJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1dHRvbjo6TWlkZGxlOgorICAgIGNhc2Ug
V2ViTW91c2VFdmVudDo6TWlkZGxlQnV0dG9uOgogICAgICAgICByZXR1cm4gR0RLX0JVVFRPTl9N
SURETEU7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1
dHRvbjo6UmlnaHQ6CisgICAgY2FzZSBXZWJNb3VzZUV2ZW50OjpSaWdodEJ1dHRvbjoKICAgICAg
ICAgcmV0dXJuIEdES19CVVRUT05fU0VDT05EQVJZOwogICAgIH0KICAgICByZXR1cm4gR0RLX0JV
VFRPTl9QUklNQVJZOwpAQCAtMTAxLDMwICsxMDEsMzAgQEAgc3RhdGljIHZvaWQgZG9Nb3Rpb25F
dmVudChHdGtXaWRnZXQqIHdpZGdldCwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGxvY2F0aW9u
LAogICAgIGd0a19tYWluX2RvX2V2ZW50KGV2ZW50LmdldCgpKTsKIH0KIAotdm9pZCBXZWJBdXRv
bWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24oV2ViUGFnZVBy
b3h5JiBwYWdlLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgdmlld1Bvc2l0aW9uLCBJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUludGVyYWN0aW9uIGludGVyYWN0aW9uLCBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1dHRvbiBidXR0b24sIFdlYkV2
ZW50OjpNb2RpZmllcnMga2V5TW9kaWZpZXJzKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6
cGxhdGZvcm1TaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBNb3Vz
ZUludGVyYWN0aW9uIGludGVyYWN0aW9uLCBXZWJNb3VzZUV2ZW50OjpCdXR0b24gYnV0dG9uLCBj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbG9jYXRpb25JblZpZXcsIFdlYkV2ZW50OjpNb2RpZmll
cnMga2V5TW9kaWZpZXJzKQogewogICAgIHVuc2lnbmVkIGdka0J1dHRvbiA9IG1vdXNlQnV0dG9u
VG9HZGtCdXR0b24oYnV0dG9uKTsKICAgICB1bnNpZ25lZCBzdGF0ZSA9IG1vZGlmaWVyc1RvRXZl
bnRTdGF0ZShrZXlNb2RpZmllcnMpOwogCiAgICAgc3dpdGNoIChpbnRlcmFjdGlvbikgewotICAg
IGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VJbnRlcmFjdGlvbjo6
TW92ZToKLSAgICAgICAgZG9Nb3Rpb25FdmVudChwYWdlLnZpZXdXaWRnZXQoKSwgdmlld1Bvc2l0
aW9uLCBzdGF0ZSk7CisgICAgY2FzZSBNb3VzZUludGVyYWN0aW9uOjpNb3ZlOgorICAgICAgICBk
b01vdGlvbkV2ZW50KHBhZ2Uudmlld1dpZGdldCgpLCBsb2NhdGlvbkluVmlldywgc3RhdGUpOwog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246
Ok1vdXNlSW50ZXJhY3Rpb246OkRvd246Ci0gICAgICAgIGRvTW91c2VFdmVudChHREtfQlVUVE9O
X1BSRVNTLCBwYWdlLnZpZXdXaWRnZXQoKSwgdmlld1Bvc2l0aW9uLCBnZGtCdXR0b24sIHN0YXRl
KTsKKyAgICBjYXNlIE1vdXNlSW50ZXJhY3Rpb246OkRvd246CisgICAgICAgIGRvTW91c2VFdmVu
dChHREtfQlVUVE9OX1BSRVNTLCBwYWdlLnZpZXdXaWRnZXQoKSwgbG9jYXRpb25JblZpZXcsIGdk
a0J1dHRvbiwgc3RhdGUpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlSW50ZXJhY3Rpb246OlVwOgotICAgICAgICBkb01vdXNl
RXZlbnQoR0RLX0JVVFRPTl9SRUxFQVNFLCBwYWdlLnZpZXdXaWRnZXQoKSwgdmlld1Bvc2l0aW9u
LCBnZGtCdXR0b24sIHN0YXRlKTsKKyAgICBjYXNlIE1vdXNlSW50ZXJhY3Rpb246OlVwOgorICAg
ICAgICBkb01vdXNlRXZlbnQoR0RLX0JVVFRPTl9SRUxFQVNFLCBwYWdlLnZpZXdXaWRnZXQoKSwg
bG9jYXRpb25JblZpZXcsIGdka0J1dHRvbiwgc3RhdGUpOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlSW50ZXJhY3Rpb246OlNp
bmdsZUNsaWNrOgotICAgICAgICBkb01vdXNlRXZlbnQoR0RLX0JVVFRPTl9QUkVTUywgcGFnZS52
aWV3V2lkZ2V0KCksIHZpZXdQb3NpdGlvbiwgZ2RrQnV0dG9uLCBzdGF0ZSk7Ci0gICAgICAgIGRv
TW91c2VFdmVudChHREtfQlVUVE9OX1JFTEVBU0UsIHBhZ2Uudmlld1dpZGdldCgpLCB2aWV3UG9z
aXRpb24sIGdka0J1dHRvbiwgc3RhdGUpOworICAgIGNhc2UgTW91c2VJbnRlcmFjdGlvbjo6U2lu
Z2xlQ2xpY2s6CisgICAgICAgIGRvTW91c2VFdmVudChHREtfQlVUVE9OX1BSRVNTLCBwYWdlLnZp
ZXdXaWRnZXQoKSwgbG9jYXRpb25JblZpZXcsIGdka0J1dHRvbiwgc3RhdGUpOworICAgICAgICBk
b01vdXNlRXZlbnQoR0RLX0JVVFRPTl9SRUxFQVNFLCBwYWdlLnZpZXdXaWRnZXQoKSwgbG9jYXRp
b25JblZpZXcsIGdka0J1dHRvbiwgc3RhdGUpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlSW50ZXJhY3Rpb246OkRvdWJsZUNs
aWNrOgotICAgICAgICBkb01vdXNlRXZlbnQoR0RLX0JVVFRPTl9QUkVTUywgcGFnZS52aWV3V2lk
Z2V0KCksIHZpZXdQb3NpdGlvbiwgZ2RrQnV0dG9uLCBzdGF0ZSk7Ci0gICAgICAgIGRvTW91c2VF
dmVudChHREtfQlVUVE9OX1JFTEVBU0UsIHBhZ2Uudmlld1dpZGdldCgpLCB2aWV3UG9zaXRpb24s
IGdka0J1dHRvbiwgc3RhdGUpOwotICAgICAgICBkb01vdXNlRXZlbnQoR0RLX0JVVFRPTl9QUkVT
UywgcGFnZS52aWV3V2lkZ2V0KCksIHZpZXdQb3NpdGlvbiwgZ2RrQnV0dG9uLCBzdGF0ZSk7Ci0g
ICAgICAgIGRvTW91c2VFdmVudChHREtfQlVUVE9OX1JFTEVBU0UsIHBhZ2Uudmlld1dpZGdldCgp
LCB2aWV3UG9zaXRpb24sIGdka0J1dHRvbiwgc3RhdGUpOworICAgIGNhc2UgTW91c2VJbnRlcmFj
dGlvbjo6RG91YmxlQ2xpY2s6CisgICAgICAgIGRvTW91c2VFdmVudChHREtfQlVUVE9OX1BSRVNT
LCBwYWdlLnZpZXdXaWRnZXQoKSwgbG9jYXRpb25JblZpZXcsIGdka0J1dHRvbiwgc3RhdGUpOwor
ICAgICAgICBkb01vdXNlRXZlbnQoR0RLX0JVVFRPTl9SRUxFQVNFLCBwYWdlLnZpZXdXaWRnZXQo
KSwgbG9jYXRpb25JblZpZXcsIGdka0J1dHRvbiwgc3RhdGUpOworICAgICAgICBkb01vdXNlRXZl
bnQoR0RLX0JVVFRPTl9QUkVTUywgcGFnZS52aWV3V2lkZ2V0KCksIGxvY2F0aW9uSW5WaWV3LCBn
ZGtCdXR0b24sIHN0YXRlKTsKKyAgICAgICAgZG9Nb3VzZUV2ZW50KEdES19CVVRUT05fUkVMRUFT
RSwgcGFnZS52aWV3V2lkZ2V0KCksIGxvY2F0aW9uSW5WaWV3LCBnZGtCdXR0b24sIHN0YXRlKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogfQpAQCAtMjgwLDIwICsyODAsMjcgQEAgc3RhdGljIGlu
dCBrZXlDb2RlRm9yVmlydHVhbEtleShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpW
aXJ0dWFsS2V5IGtleSwKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vz
c2lvbjo6cGxhdGZvcm1TaW11bGF0ZUtleVN0cm9rZShXZWJQYWdlUHJveHkmIHBhZ2UsIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OktleWJvYXJkSW50ZXJhY3Rpb25UeXBlIGludGVy
YWN0aW9uLCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5IGtleSkK
K3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVLZXlib2FyZEludGVy
YWN0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgS2V5Ym9hcmRJbnRlcmFjdGlvbiBpbnRlcmFjdGlv
biwgc3RkOjpvcHRpb25hbDxWaXJ0dWFsS2V5PiB2aXJ0dWFsS2V5LCBzdGQ6Om9wdGlvbmFsPENo
YXJLZXk+IGNoYXJLZXkpCiB7CisgICAgQVNTRVJUKHZpcnR1YWxLZXkuaGFzX3ZhbHVlKCkgfHwg
Y2hhcktleS5oYXNfdmFsdWUoKSk7CisKICAgICBHZGtNb2RpZmllclR5cGUgdXBkYXRlU3RhdGU7
Ci0gICAgYXV0byBrZXlDb2RlID0ga2V5Q29kZUZvclZpcnR1YWxLZXkoa2V5LCB1cGRhdGVTdGF0
ZSk7CisgICAgYXV0byBrZXlDb2RlOworICAgIGlmICh2aXJ0dWFsS2V5Lmhhc192YWx1ZSgpKQor
ICAgICAgICBrZXlDb2RlID0ga2V5Q29kZUZvclZpcnR1YWxLZXkodmlydHVhbEtleS52YWx1ZSgp
LCB1cGRhdGVTdGF0ZSk7CisgICAgZWxzZQorICAgICAgICBrZXlDb2RlID0gZ2RrX3VuaWNvZGVf
dG9fa2V5dmFsKGdfdXRmOF9nZXRfY2hhcigmY2hhcktleS52YWx1ZSgpKSk7CisKICAgICBzd2l0
Y2ggKGludGVyYWN0aW9uKSB7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uOjpLZXlib2FyZEludGVyYWN0aW9uVHlwZTo6S2V5UHJlc3M6CisgICAgY2FzZSBLZXlJbnRl
cmFjdGlvbjo6S2V5UHJlc3M6CiAgICAgICAgIG1fY3VycmVudE1vZGlmaWVycyB8PSB1cGRhdGVT
dGF0ZTsKICAgICAgICAgZG9LZXlTdHJva2VFdmVudChHREtfS0VZX1BSRVNTLCBwYWdlLnZpZXdX
aWRnZXQoKSwga2V5Q29kZSwgbV9jdXJyZW50TW9kaWZpZXJzKTsKICAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpLZXlib2FyZEludGVyYWN0
aW9uVHlwZTo6S2V5UmVsZWFzZToKKyAgICBjYXNlIEtleUludGVyYWN0aW9uOjpLZXlSZWxlYXNl
OgogICAgICAgICBtX2N1cnJlbnRNb2RpZmllcnMgJj0gfnVwZGF0ZVN0YXRlOwogICAgICAgICBk
b0tleVN0cm9rZUV2ZW50KEdES19LRVlfUkVMRUFTRSwgcGFnZS52aWV3V2lkZ2V0KCksIGtleUNv
ZGUsIG1fY3VycmVudE1vZGlmaWVycyk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6S2V5Ym9hcmRJbnRlcmFjdGlvblR5cGU6Okluc2Vy
dEJ5S2V5OgorICAgIGNhc2UgS2V5SW50ZXJhY3Rpb246Okluc2VydEJ5S2V5OgogICAgICAgICBk
b0tleVN0cm9rZUV2ZW50KEdES19LRVlfUFJFU1MsIHBhZ2Uudmlld1dpZGdldCgpLCBrZXlDb2Rl
LCBtX2N1cnJlbnRNb2RpZmllcnMsIHRydWUpOwogICAgICAgICBicmVhazsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2lvcy9XZWJBdXRvbWF0
aW9uU2Vzc2lvbklPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vaW9z
L1dlYkF1dG9tYXRpb25TZXNzaW9uSU9TLm1tCmluZGV4IDVmNzRhZGVkZjc1ZmU1NjkyYzI4ZDg0
NDg1OTJmMjIzNTRiNjhkNmMuLjBkZTM5YjY5OTNiMjkyM2Y4OTFlOTg0NjdlNWRmZTVhZmIzYWY5
YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vaW9zL1dl
YkF1dG9tYXRpb25TZXNzaW9uSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1
dG9tYXRpb24vaW9zL1dlYkF1dG9tYXRpb25TZXNzaW9uSU9TLm1tCkBAIC02NSwyNiArNjUsMjgg
QEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6c2VuZFN5bnRoZXNpemVkRXZlbnRzVG9QYWdl
KFdlYlBhZ2VQcm94eSYgcGFnZSwgTlNBcnIKIAogI3ByYWdtYSBtYXJrIENvbW1hbmRzIGZvciBQ
bGF0Zm9ybTogJ2lPUycKIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11
bGF0ZUtleVN0cm9rZShXZWJQYWdlUHJveHkmIHBhZ2UsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1
dG9tYXRpb246OktleWJvYXJkSW50ZXJhY3Rpb25UeXBlIGludGVyYWN0aW9uLCBJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5IGtleSkKK3ZvaWQgV2ViQXV0b21hdGlv
blNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVLZXlib2FyZEludGVyYWN0aW9uKFdlYlBhZ2VQcm94
eSYgcGFnZSwgS2V5Ym9hcmRJbnRlcmFjdGlvbiBpbnRlcmFjdGlvbiwgc3RkOjpvcHRpb25hbDxW
aXJ0dWFsS2V5PiB2aXJ0dWFsS2V5LCBzdGQ6Om9wdGlvbmFsPENoYXJLZXk+IGNoYXJLZXkpCiB7
CisgICAgQVNTRVJUKHZpcnR1YWxLZXkuaGFzX3ZhbHVlKCkgfHwgY2hhcktleS5oYXNfdmFsdWUo
KSk7CisKICAgICAvLyBUaGUgbW9kaWZpZXJzIGNoYW5nZWQgYnkgdGhlIHZpcnR1YWwga2V5IHdo
ZW4gaXQgaXMgcHJlc3NlZCBvciByZWxlYXNlZC4KICAgICBXZWJFdmVudEZsYWdzIGNoYW5nZWRN
b2RpZmllcnMgPSAwOwogCiAgICAgLy8gRmlndXJlIG91dCB0aGUgZWZmZWN0cyBvZiBzdGlja3kg
bW9kaWZpZXJzLgogICAgIHN3aXRjaCAoa2V5KSB7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpTaGlmdDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6
OlNoaWZ0OgogICAgICAgICBjaGFuZ2VkTW9kaWZpZXJzIHw9IFdlYkV2ZW50RmxhZ01hc2tTaGlm
dDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uOjpWaXJ0dWFsS2V5OjpDb250cm9sOgorICAgIGNhc2UgVmlydHVhbEtleTo6Q29udHJvbDoK
ICAgICAgICAgY2hhbmdlZE1vZGlmaWVycyB8PSBXZWJFdmVudEZsYWdNYXNrQ29udHJvbDsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpW
aXJ0dWFsS2V5OjpBbHRlcm5hdGU6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpBbHRlcm5hdGU6CiAg
ICAgICAgIGNoYW5nZWRNb2RpZmllcnMgfD0gV2ViRXZlbnRGbGFnTWFza0FsdGVybmF0ZTsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpW
aXJ0dWFsS2V5OjpNZXRhOgorICAgIGNhc2UgVmlydHVhbEtleTo6TWV0YToKICAgICAgICAgLy8g
VGhlICdtZXRhJyBrZXkgZG9lcyBub3QgZXhpc3Qgb24gQXBwbGUga2V5Ym9hcmRzIGFuZCBpcyB1
c3VhbGx5CiAgICAgICAgIC8vIG1hcHBlZCB0byB0aGUgQ29tbWFuZCBrZXkgd2hlbiB1c2luZyB0
aGlyZC1wYXJ0eSBrZXlib2FyZHMuCi0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRv
bWF0aW9uOjpWaXJ0dWFsS2V5OjpDb21tYW5kOgorICAgIGNhc2UgVmlydHVhbEtleTo6Q29tbWFu
ZDoKICAgICAgICAgY2hhbmdlZE1vZGlmaWVycyB8PSBXZWJFdmVudEZsYWdNYXNrQ29tbWFuZDsK
ICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKQEAgLTk0LDggKzk2LDE4IEBAIHZvaWQgV2Vi
QXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVLZXlTdHJva2UoV2ViUGFnZVByb3h5
JiBwYWdlLCBJbnNwZWN0CiAgICAgLy8gVUlLaXQgZG9lcyBub3Qgc2VuZCBrZXkgY29kZXMgZm9y
IHZpcnR1YWwga2V5cyBldmVuIGZvciBhIGhhcmR3YXJlIGtleWJvYXJkLgogICAgIC8vIEluc3Rl
YWQsIGl0IHNlbmRzIHNpbmdsZSB1bmljaGFycyBhbmQgV2ViQ29yZSBtYXBzIHRoZXNlIHRvICJ3
aW5kb3dzIiBrZXkgY29kZXMuCiAgICAgLy8gU3ludGhlc2l6ZSBhIHNpbmdsZSB1bmljaGFyIHN1
Y2ggdGhhdCB0aGUgY29ycmVjdCBrZXkgY29kZSBpcyBpbmZlcnJlZC4KLSAgICBzdGQ6Om9wdGlv
bmFsPHVuaWNoYXI+IGNoYXJDb2RlID0gY2hhckNvZGVGb3JWaXJ0dWFsS2V5KGtleSk7Ci0gICAg
c3RkOjpvcHRpb25hbDx1bmljaGFyPiBjaGFyQ29kZUlnbm9yaW5nTW9kaWZpZXJzID0gY2hhckNv
ZGVJZ25vcmluZ01vZGlmaWVyc0ZvclZpcnR1YWxLZXkoa2V5KTsKKyAgICBzdGQ6Om9wdGlvbmFs
PHVuaWNoYXI+IGNoYXJDb2RlOworICAgIHN0ZDo6b3B0aW9uYWw8dW5pY2hhcj4gY2hhckNvZGVJ
Z25vcmluZ01vZGlmaWVyczsKKworICAgIGlmICh2aXJ0dWFsS2V5Lmhhc192YWx1ZSgpKSB7Cisg
ICAgICAgIGNoYXJDb2RlID0gY2hhckNvZGVGb3JWaXJ0dWFsS2V5KHZpcnR1YWxLZXkudmFsdWUo
KSk7CisgICAgICAgIGNoYXJDb2RlSWdub3JpbmdNb2RpZmllcnMgPSBjaGFyQ29kZUlnbm9yaW5n
TW9kaWZpZXJzRm9yVmlydHVhbEtleSh2aXJ0dWFsS2V5LnZhbHVlKCkpOworICAgIH0KKworICAg
IGlmIChjaGFyS2V5Lmhhc192YWx1ZSgpKSB7CisgICAgICAgIGNoYXJDb2RlID0gKHVuaWNoYXIp
Y2hhcktleS52YWx1ZSgpOworICAgICAgICBjaGFyQ29kZUlnbm9yaW5nTW9kaWZpZXJzID0gKHVu
aWNoYXIpY2hhcktleS52YWx1ZSgpOworICAgIH0KIAogICAgIC8vIEZJWE1FOiBjb25zaWRlciB1
c2luZyBVSUtpdCBTUEkgdG8gbm9ybWFsaXplICdjaGFyYWN0ZXJzJywgaS5lLiwgY2hhbmdpbmcg
KiB0byBTaGlmdC04LAogICAgIC8vIGFuZCBwYXNzaW5nIHRoYXQgaW4gdG8gY2hhcmFjdGVyc0ln
bm9yaW5nTW9kaWZpZXJzLiBUaGlzIGlzIHByb2JhYmx5IG5vdCB3b3J0aCB0aGUgdHJvdWJsZQpA
QCAtMTE1LDE5ICsxMjcsMTkgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1T
aW11bGF0ZUtleVN0cm9rZShXZWJQYWdlUHJveHkmIHBhZ2UsIEluc3BlY3QKICAgICBhdXRvIGV2
ZW50c1RvQmVTZW50ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CiAK
ICAgICBzd2l0Y2ggKGludGVyYWN0aW9uKSB7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29s
OjpBdXRvbWF0aW9uOjpLZXlib2FyZEludGVyYWN0aW9uVHlwZTo6S2V5UHJlc3M6IHsKKyAgICBj
YXNlIEtleWJvYXJkSW50ZXJhY3Rpb246OktleVByZXNzOiB7CiAgICAgICAgIG1fY3VycmVudE1v
ZGlmaWVycyB8PSBjaGFuZ2VkTW9kaWZpZXJzOwogCiAgICAgICAgIFtldmVudHNUb0JlU2VudCBh
ZGRPYmplY3Q6W1tbOjpXZWJFdmVudCBhbGxvY10gaW5pdFdpdGhLZXlFdmVudFR5cGU6V2ViRXZl
bnRLZXlEb3duIHRpbWVTdGFtcDpDRkFic29sdXRlVGltZUdldEN1cnJlbnQoKSBjaGFyYWN0ZXJz
OmNoYXJhY3RlcnMgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOnVubW9kaWZpZWRDaGFyYWN0
ZXJzIG1vZGlmaWVyczptX2N1cnJlbnRNb2RpZmllcnMgaXNSZXBlYXRpbmc6Tk8gd2l0aEZsYWdz
OmlucHV0RmxhZ3Mgd2l0aElucHV0TWFuYWdlckhpbnQ6bmlsIGtleUNvZGU6a2V5Q29kZSBpc1Rh
YktleTppc1RhYktleV0gYXV0b3JlbGVhc2VdXTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAg
IGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6S2V5Ym9hcmRJbnRlcmFjdGlv
blR5cGU6OktleVJlbGVhc2U6IHsKKyAgICBjYXNlIEtleWJvYXJkSW50ZXJhY3Rpb246OktleVJl
bGVhc2U6IHsKICAgICAgICAgbV9jdXJyZW50TW9kaWZpZXJzICY9IH5jaGFuZ2VkTW9kaWZpZXJz
OwogCiAgICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmplY3Q6W1tbOjpXZWJFdmVudCBhbGxv
Y10gaW5pdFdpdGhLZXlFdmVudFR5cGU6V2ViRXZlbnRLZXlVcCB0aW1lU3RhbXA6Q0ZBYnNvbHV0
ZVRpbWVHZXRDdXJyZW50KCkgY2hhcmFjdGVyczpjaGFyYWN0ZXJzIGNoYXJhY3RlcnNJZ25vcmlu
Z01vZGlmaWVyczp1bm1vZGlmaWVkQ2hhcmFjdGVycyBtb2RpZmllcnM6bV9jdXJyZW50TW9kaWZp
ZXJzIGlzUmVwZWF0aW5nOk5PIHdpdGhGbGFnczppbnB1dEZsYWdzIHdpdGhJbnB1dE1hbmFnZXJI
aW50Om5pbCBrZXlDb2RlOmtleUNvZGUgaXNUYWJLZXk6aXNUYWJLZXldIGF1dG9yZWxlYXNlXV07
CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1
dG9tYXRpb246OktleWJvYXJkSW50ZXJhY3Rpb25UeXBlOjpJbnNlcnRCeUtleTogeworICAgIGNh
c2UgS2V5Ym9hcmRJbnRlcmFjdGlvbjo6SW5zZXJ0QnlLZXk6IHsKICAgICAgICAgLy8gTW9kaWZp
ZXJzIG9ubHkgY2hhbmdlIHdpdGggS2V5UHJlc3Mgb3IgS2V5UmVsZWFzZSwgdGhpcyBjb2RlIHBh
dGggaXMgZm9yIHNpbmdsZSBjaGFyYWN0ZXJzLgogICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRk
T2JqZWN0OltbWzo6V2ViRXZlbnQgYWxsb2NdIGluaXRXaXRoS2V5RXZlbnRUeXBlOldlYkV2ZW50
S2V5RG93biB0aW1lU3RhbXA6Q0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCkgY2hhcmFjdGVyczpj
aGFyYWN0ZXJzIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczp1bm1vZGlmaWVkQ2hhcmFjdGVy
cyBtb2RpZmllcnM6bV9jdXJyZW50TW9kaWZpZXJzIGlzUmVwZWF0aW5nOk5PIHdpdGhGbGFnczpp
bnB1dEZsYWdzIHdpdGhJbnB1dE1hbmFnZXJIaW50Om5pbCBrZXlDb2RlOmtleUNvZGUgaXNUYWJL
ZXk6aXNUYWJLZXldIGF1dG9yZWxlYXNlXV07CiAgICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRP
YmplY3Q6W1tbOjpXZWJFdmVudCBhbGxvY10gaW5pdFdpdGhLZXlFdmVudFR5cGU6V2ViRXZlbnRL
ZXlVcCB0aW1lU3RhbXA6Q0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCkgY2hhcmFjdGVyczpjaGFy
YWN0ZXJzIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczp1bm1vZGlmaWVkQ2hhcmFjdGVycyBt
b2RpZmllcnM6bV9jdXJyZW50TW9kaWZpZXJzIGlzUmVwZWF0aW5nOk5PIHdpdGhGbGFnczppbnB1
dEZsYWdzIHdpdGhJbnB1dE1hbmFnZXJIaW50Om5pbCBrZXlDb2RlOmtleUNvZGUgaXNUYWJLZXk6
aXNUYWJLZXldIGF1dG9yZWxlYXNlXV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BdXRvbWF0aW9uL21hYy9XZWJBdXRvbWF0aW9uU2Vzc2lvbk1hYy5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vbWFjL1dlYkF1dG9tYXRpb25TZXNzaW9uTWFjLm1t
CmluZGV4IDNiNWU1NThjNjRjM2RhNzY3YTk4OWVkNjQyMGE3NzVmMmMxYTYxMzIuLmY0NjBhMzg2
NTNkYzY0ZWU2NjE3OTA3MzBjMThjYmZiNGUwZjJiNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vbWFjL1dlYkF1dG9tYXRpb25TZXNzaW9uTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vbWFjL1dlYkF1dG9tYXRpb25T
ZXNzaW9uTWFjLm1tCkBAIC0xMTgsMTEgKzExOCwxMSBAQCBib29sIFdlYkF1dG9tYXRpb25TZXNz
aW9uOjp3YXNFdmVudFN5bnRoZXNpemVkRm9yQXV0b21hdGlvbihOU0V2ZW50ICpldmVudCkKIAog
I3ByYWdtYSBtYXJrIFBsYXRmb3JtLWRlcGVuZGVudCBJbXBsZW1lbnRhdGlvbnMKIAotdm9pZCBX
ZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24oV2Vi
UGFnZVByb3h5JiBwYWdlLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgdmlld1Bvc2l0aW9uLCBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUludGVyYWN0aW9uIGludGVyYWN0
aW9uLCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1dHRvbiBidXR0b24s
IFdlYkV2ZW50OjpNb2RpZmllcnMga2V5TW9kaWZpZXJzKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vz
c2lvbjo6cGxhdGZvcm1TaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdl
LCBNb3VzZUludGVyYWN0aW9uIGludGVyYWN0aW9uLCBXZWJNb3VzZUV2ZW50OjpCdXR0b24gYnV0
dG9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbG9jYXRpb25JblZpZXcsIFdlYkV2ZW50OjpN
b2RpZmllcnMga2V5TW9kaWZpZXJzKQogewogICAgIEludFJlY3Qgd2luZG93UmVjdDsKLSAgICBw
YWdlLnJvb3RWaWV3VG9XaW5kb3coSW50UmVjdCh2aWV3UG9zaXRpb24sIEludFNpemUoKSksIHdp
bmRvd1JlY3QpOwotICAgIEludFBvaW50IHdpbmRvd1Bvc2l0aW9uID0gd2luZG93UmVjdC5sb2Nh
dGlvbigpOworICAgIHBhZ2Uucm9vdFZpZXdUb1dpbmRvdyhJbnRSZWN0KGxvY2F0aW9uSW5WaWV3
LCBJbnRTaXplKCkpLCB3aW5kb3dSZWN0KTsKKyAgICBJbnRQb2ludCBsb2NhdGlvbkluV2luZG93
ID0gd2luZG93UmVjdC5sb2NhdGlvbigpOwogCiAgICAgTlNFdmVudE1vZGlmaWVyRmxhZ3MgbW9k
aWZpZXJzID0gMDsKICAgICBpZiAoa2V5TW9kaWZpZXJzICYgV2ViRXZlbnQ6Ok1ldGFLZXkpCkBA
IC0xNDQsMjAgKzE0NCwyMCBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNp
bXVsYXRlTW91c2VJbnRlcmFjdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsCiAgICAgTlNFdmVudFR5
cGUgZHJhZ0V2ZW50VHlwZSA9IChOU0V2ZW50VHlwZSkwOwogICAgIE5TRXZlbnRUeXBlIHVwRXZl
bnRUeXBlID0gKE5TRXZlbnRUeXBlKTA7CiAgICAgc3dpdGNoIChidXR0b24pIHsKLSAgICBjYXNl
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9uOjpOb25lOgorICAg
IGNhc2UgV2ViTW91c2VFdmVudDo6Tm9CdXR0b246CiAgICAgICAgIGRvd25FdmVudFR5cGUgPSB1
cEV2ZW50VHlwZSA9IGRyYWdFdmVudFR5cGUgPSBOU0V2ZW50VHlwZU1vdXNlTW92ZWQ7CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91
c2VCdXR0b246OkxlZnQ6CisgICAgY2FzZSBXZWJNb3VzZUV2ZW50OjpMZWZ0QnV0dG9uOgogICAg
ICAgICBkb3duRXZlbnRUeXBlID0gTlNFdmVudFR5cGVMZWZ0TW91c2VEb3duOwogICAgICAgICBk
cmFnRXZlbnRUeXBlID0gTlNFdmVudFR5cGVMZWZ0TW91c2VEcmFnZ2VkOwogICAgICAgICB1cEV2
ZW50VHlwZSA9IE5TRXZlbnRUeXBlTGVmdE1vdXNlVXA7CiAgICAgICAgIGJyZWFrOwotICAgIGNh
c2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VCdXR0b246Ok1pZGRsZToK
KyAgICBjYXNlIFdlYk1vdXNlRXZlbnQ6Ok1pZGRsZUJ1dHRvbjoKICAgICAgICAgZG93bkV2ZW50
VHlwZSA9IE5TRXZlbnRUeXBlT3RoZXJNb3VzZURvd247CiAgICAgICAgIGRyYWdFdmVudFR5cGUg
PSBOU0V2ZW50VHlwZUxlZnRNb3VzZURyYWdnZWQ7CiAgICAgICAgIHVwRXZlbnRUeXBlID0gTlNF
dmVudFR5cGVPdGhlck1vdXNlVXA7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VCdXR0b246OlJpZ2h0OgorICAgIGNhc2UgV2Vi
TW91c2VFdmVudDo6UmlnaHRCdXR0b246CiAgICAgICAgIGRvd25FdmVudFR5cGUgPSBOU0V2ZW50
VHlwZVJpZ2h0TW91c2VEb3duOwogICAgICAgICB1cEV2ZW50VHlwZSA9IE5TRXZlbnRUeXBlUmln
aHRNb3VzZVVwOwogICAgICAgICBicmVhazsKQEAgLTE2OCw1NiArMTY4LDU2IEBAIHZvaWQgV2Vi
QXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVNb3VzZUludGVyYWN0aW9uKFdlYlBh
Z2VQcm94eSYgcGFnZSwKICAgICBOU0ludGVnZXIgZXZlbnROdW1iZXIgPSBzeW50aGVzaXplZE1v
dXNlRXZlbnRNYWdpY0V2ZW50TnVtYmVyOwogCiAgICAgc3dpdGNoIChpbnRlcmFjdGlvbikgewot
ICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VJbnRlcmFjdGlv
bjo6TW92ZToKKyAgICBjYXNlIE1vdXNlSW50ZXJhY3Rpb246Ok1vdmU6CiAgICAgICAgIEFTU0VS
VChkcmFnRXZlbnRUeXBlKTsKLSAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbTlNF
dmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6ZHJhZ0V2ZW50VHlwZSBsb2NhdGlvbjp3aW5kb3dQb3Np
dGlvbiBtb2RpZmllckZsYWdzOm1vZGlmaWVycyB0aW1lc3RhbXA6dGltZXN0YW1wIHdpbmRvd051
bWJlcjp3aW5kb3dOdW1iZXIgY29udGV4dDpuaWwgZXZlbnROdW1iZXI6ZXZlbnROdW1iZXIgY2xp
Y2tDb3VudDowIHByZXNzdXJlOjAuMGZdXTsKKyAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9i
amVjdDpbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6ZHJhZ0V2ZW50VHlwZSBsb2NhdGlvbjps
b2NhdGlvbkluV2luZG93IG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJzIHRpbWVzdGFtcDp0aW1lc3Rh
bXAgd2luZG93TnVtYmVyOndpbmRvd051bWJlciBjb250ZXh0Om5pbCBldmVudE51bWJlcjpldmVu
dE51bWJlciBjbGlja0NvdW50OjAgcHJlc3N1cmU6MC4wZl1dOwogICAgICAgICBicmVhazsKLSAg
ICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlSW50ZXJhY3Rpb246
OkRvd246CisgICAgY2FzZSBNb3VzZUludGVyYWN0aW9uOjpEb3duOgogICAgICAgICBBU1NFUlQo
ZG93bkV2ZW50VHlwZSk7CiAKICAgICAgICAgLy8gSGFyZC1jb2RlIHRoZSBjbGljayBjb3VudCB0
byBvbmUsIHNpbmNlIGNsaWVudHMgZG9uJ3QgZXhwZWN0IHN1Y2Nlc3NpdmUgc2ltdWxhdGVkCiAg
ICAgICAgIC8vIGRvd24vdXAgZXZlbnRzIHRvIGJlIHBvdGVudGlhbGx5IGNvdW50ZWQgYXMgYSBk
b3VibGUgY2xpY2sgZXZlbnQuCi0gICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmplY3Q6W05T
RXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOmRvd25FdmVudFR5cGUgbG9jYXRpb246d2luZG93UG9z
aXRpb24gbW9kaWZpZXJGbGFnczptb2RpZmllcnMgdGltZXN0YW1wOnRpbWVzdGFtcCB3aW5kb3dO
dW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmlsIGV2ZW50TnVtYmVyOmV2ZW50TnVtYmVyIGNs
aWNrQ291bnQ6MSBwcmVzc3VyZTpXZWJDb3JlOjpGb3JjZUF0Q2xpY2tdXTsKKyAgICAgICAgW2V2
ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6ZG93bkV2
ZW50VHlwZSBsb2NhdGlvbjpsb2NhdGlvbkluV2luZG93IG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJz
IHRpbWVzdGFtcDp0aW1lc3RhbXAgd2luZG93TnVtYmVyOndpbmRvd051bWJlciBjb250ZXh0Om5p
bCBldmVudE51bWJlcjpldmVudE51bWJlciBjbGlja0NvdW50OjEgcHJlc3N1cmU6V2ViQ29yZTo6
Rm9yY2VBdENsaWNrXV07CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbjo6TW91c2VJbnRlcmFjdGlvbjo6VXA6CisgICAgY2FzZSBNb3VzZUlu
dGVyYWN0aW9uOjpVcDoKICAgICAgICAgQVNTRVJUKHVwRXZlbnRUeXBlKTsKIAogICAgICAgICAv
LyBIYXJkLWNvZGUgdGhlIGNsaWNrIGNvdW50IHRvIG9uZSwgc2luY2UgY2xpZW50cyBkb24ndCBl
eHBlY3Qgc3VjY2Vzc2l2ZSBzaW11bGF0ZWQKICAgICAgICAgLy8gZG93bi91cCBldmVudHMgdG8g
YmUgcG90ZW50aWFsbHkgY291bnRlZCBhcyBhIGRvdWJsZSBjbGljayBldmVudC4KLSAgICAgICAg
W2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6dXBF
dmVudFR5cGUgbG9jYXRpb246d2luZG93UG9zaXRpb24gbW9kaWZpZXJGbGFnczptb2RpZmllcnMg
dGltZXN0YW1wOnRpbWVzdGFtcCB3aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmls
IGV2ZW50TnVtYmVyOmV2ZW50TnVtYmVyIGNsaWNrQ291bnQ6MSBwcmVzc3VyZTowLjBmXV07Cisg
ICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmplY3Q6W05TRXZlbnQgbW91c2VFdmVudFdpdGhU
eXBlOnVwRXZlbnRUeXBlIGxvY2F0aW9uOmxvY2F0aW9uSW5XaW5kb3cgbW9kaWZpZXJGbGFnczpt
b2RpZmllcnMgdGltZXN0YW1wOnRpbWVzdGFtcCB3aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNv
bnRleHQ6bmlsIGV2ZW50TnVtYmVyOmV2ZW50TnVtYmVyIGNsaWNrQ291bnQ6MSBwcmVzc3VyZTow
LjBmXV07CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbjo6TW91c2VJbnRlcmFjdGlvbjo6U2luZ2xlQ2xpY2s6CisgICAgY2FzZSBNb3VzZUlu
dGVyYWN0aW9uOjpTaW5nbGVDbGljazoKICAgICAgICAgQVNTRVJUKHVwRXZlbnRUeXBlKTsKICAg
ICAgICAgQVNTRVJUKGRvd25FdmVudFR5cGUpOwogCiAgICAgICAgIC8vIFNlbmQgc2VwYXJhdGUg
ZG93biBhbmQgdXAgZXZlbnRzLiBXZWJDb3JlIHdpbGwgc2VlIHRoaXMgYXMgYSBzaW5nbGUtY2xp
Y2sgZXZlbnQuCi0gICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmplY3Q6W05TRXZlbnQgbW91
c2VFdmVudFdpdGhUeXBlOmRvd25FdmVudFR5cGUgbG9jYXRpb246d2luZG93UG9zaXRpb24gbW9k
aWZpZXJGbGFnczptb2RpZmllcnMgdGltZXN0YW1wOnRpbWVzdGFtcCB3aW5kb3dOdW1iZXI6d2lu
ZG93TnVtYmVyIGNvbnRleHQ6bmlsIGV2ZW50TnVtYmVyOmV2ZW50TnVtYmVyIGNsaWNrQ291bnQ6
MSBwcmVzc3VyZTpXZWJDb3JlOjpGb3JjZUF0Q2xpY2tdXTsKLSAgICAgICAgW2V2ZW50c1RvQmVT
ZW50IGFkZE9iamVjdDpbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6dXBFdmVudFR5cGUgbG9j
YXRpb246d2luZG93UG9zaXRpb24gbW9kaWZpZXJGbGFnczptb2RpZmllcnMgdGltZXN0YW1wOnRp
bWVzdGFtcCB3aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmlsIGV2ZW50TnVtYmVy
OmV2ZW50TnVtYmVyIGNsaWNrQ291bnQ6MSBwcmVzc3VyZTowLjBmXV07CisgICAgICAgIFtldmVu
dHNUb0JlU2VudCBhZGRPYmplY3Q6W05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOmRvd25FdmVu
dFR5cGUgbG9jYXRpb246bG9jYXRpb25JbldpbmRvdyBtb2RpZmllckZsYWdzOm1vZGlmaWVycyB0
aW1lc3RhbXA6dGltZXN0YW1wIHdpbmRvd051bWJlcjp3aW5kb3dOdW1iZXIgY29udGV4dDpuaWwg
ZXZlbnROdW1iZXI6ZXZlbnROdW1iZXIgY2xpY2tDb3VudDoxIHByZXNzdXJlOldlYkNvcmU6OkZv
cmNlQXRDbGlja11dOworICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltOU0V2ZW50
IG1vdXNlRXZlbnRXaXRoVHlwZTp1cEV2ZW50VHlwZSBsb2NhdGlvbjpsb2NhdGlvbkluV2luZG93
IG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJzIHRpbWVzdGFtcDp0aW1lc3RhbXAgd2luZG93TnVtYmVy
OndpbmRvd051bWJlciBjb250ZXh0Om5pbCBldmVudE51bWJlcjpldmVudE51bWJlciBjbGlja0Nv
dW50OjEgcHJlc3N1cmU6MC4wZl1dOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlSW50ZXJhY3Rpb246OkRvdWJsZUNsaWNrOgor
ICAgIGNhc2UgTW91c2VJbnRlcmFjdGlvbjo6RG91YmxlQ2xpY2s6CiAgICAgICAgIEFTU0VSVCh1
cEV2ZW50VHlwZSk7CiAgICAgICAgIEFTU0VSVChkb3duRXZlbnRUeXBlKTsKIAogICAgICAgICAv
LyBTZW5kIG11bHRpcGxlIGRvd24gYW5kIHVwIGV2ZW50cyB3aXRoIHByb3BlciBjbGljayBjb3Vu
dC4KICAgICAgICAgLy8gV2ViQ29yZSB3aWxsIHNlZSB0aGlzIGFzIGEgc2luZ2xlLWNsaWNrIGV2
ZW50IHRoZW4gZG91YmxlLWNsaWNrIGV2ZW50LgotICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRk
T2JqZWN0OltOU0V2ZW50IG1vdXNlRXZlbnRXaXRoVHlwZTpkb3duRXZlbnRUeXBlIGxvY2F0aW9u
OndpbmRvd1Bvc2l0aW9uIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJzIHRpbWVzdGFtcDp0aW1lc3Rh
bXAgd2luZG93TnVtYmVyOndpbmRvd051bWJlciBjb250ZXh0Om5pbCBldmVudE51bWJlcjpldmVu
dE51bWJlciBjbGlja0NvdW50OjEgcHJlc3N1cmU6V2ViQ29yZTo6Rm9yY2VBdENsaWNrXV07Ci0g
ICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmplY3Q6W05TRXZlbnQgbW91c2VFdmVudFdpdGhU
eXBlOnVwRXZlbnRUeXBlIGxvY2F0aW9uOndpbmRvd1Bvc2l0aW9uIG1vZGlmaWVyRmxhZ3M6bW9k
aWZpZXJzIHRpbWVzdGFtcDp0aW1lc3RhbXAgd2luZG93TnVtYmVyOndpbmRvd051bWJlciBjb250
ZXh0Om5pbCBldmVudE51bWJlcjpldmVudE51bWJlciBjbGlja0NvdW50OjEgcHJlc3N1cmU6MC4w
Zl1dOwotICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltOU0V2ZW50IG1vdXNlRXZl
bnRXaXRoVHlwZTpkb3duRXZlbnRUeXBlIGxvY2F0aW9uOndpbmRvd1Bvc2l0aW9uIG1vZGlmaWVy
RmxhZ3M6bW9kaWZpZXJzIHRpbWVzdGFtcDp0aW1lc3RhbXAgd2luZG93TnVtYmVyOndpbmRvd051
bWJlciBjb250ZXh0Om5pbCBldmVudE51bWJlcjpldmVudE51bWJlciBjbGlja0NvdW50OjIgcHJl
c3N1cmU6V2ViQ29yZTo6Rm9yY2VBdENsaWNrXV07Ci0gICAgICAgIFtldmVudHNUb0JlU2VudCBh
ZGRPYmplY3Q6W05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOnVwRXZlbnRUeXBlIGxvY2F0aW9u
OndpbmRvd1Bvc2l0aW9uIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJzIHRpbWVzdGFtcDp0aW1lc3Rh
bXAgd2luZG93TnVtYmVyOndpbmRvd051bWJlciBjb250ZXh0Om5pbCBldmVudE51bWJlcjpldmVu
dE51bWJlciBjbGlja0NvdW50OjIgcHJlc3N1cmU6MC4wZl1dOworICAgICAgICBbZXZlbnRzVG9C
ZVNlbnQgYWRkT2JqZWN0OltOU0V2ZW50IG1vdXNlRXZlbnRXaXRoVHlwZTpkb3duRXZlbnRUeXBl
IGxvY2F0aW9uOmxvY2F0aW9uSW5XaW5kb3cgbW9kaWZpZXJGbGFnczptb2RpZmllcnMgdGltZXN0
YW1wOnRpbWVzdGFtcCB3aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmlsIGV2ZW50
TnVtYmVyOmV2ZW50TnVtYmVyIGNsaWNrQ291bnQ6MSBwcmVzc3VyZTpXZWJDb3JlOjpGb3JjZUF0
Q2xpY2tdXTsKKyAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbTlNFdmVudCBtb3Vz
ZUV2ZW50V2l0aFR5cGU6dXBFdmVudFR5cGUgbG9jYXRpb246bG9jYXRpb25JbldpbmRvdyBtb2Rp
ZmllckZsYWdzOm1vZGlmaWVycyB0aW1lc3RhbXA6dGltZXN0YW1wIHdpbmRvd051bWJlcjp3aW5k
b3dOdW1iZXIgY29udGV4dDpuaWwgZXZlbnROdW1iZXI6ZXZlbnROdW1iZXIgY2xpY2tDb3VudDox
IHByZXNzdXJlOjAuMGZdXTsKKyAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbTlNF
dmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6ZG93bkV2ZW50VHlwZSBsb2NhdGlvbjpsb2NhdGlvbklu
V2luZG93IG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJzIHRpbWVzdGFtcDp0aW1lc3RhbXAgd2luZG93
TnVtYmVyOndpbmRvd051bWJlciBjb250ZXh0Om5pbCBldmVudE51bWJlcjpldmVudE51bWJlciBj
bGlja0NvdW50OjIgcHJlc3N1cmU6V2ViQ29yZTo6Rm9yY2VBdENsaWNrXV07CisgICAgICAgIFtl
dmVudHNUb0JlU2VudCBhZGRPYmplY3Q6W05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOnVwRXZl
bnRUeXBlIGxvY2F0aW9uOmxvY2F0aW9uSW5XaW5kb3cgbW9kaWZpZXJGbGFnczptb2RpZmllcnMg
dGltZXN0YW1wOnRpbWVzdGFtcCB3aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmls
IGV2ZW50TnVtYmVyOmV2ZW50TnVtYmVyIGNsaWNrQ291bnQ6MiBwcmVzc3VyZTowLjBmXV07CiAg
ICAgfQogCiAgICAgc2VuZFN5bnRoZXNpemVkRXZlbnRzVG9QYWdlKHBhZ2UsIGV2ZW50c1RvQmVT
ZW50LmdldCgpKTsKIH0KIAotc3RhdGljIGJvb2wga2V5SGFzU3RpY2t5TW9kaWZpZXIoSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleSBrZXkpCitzdGF0aWMgYm9vbCB2
aXJ0dWFsS2V5SGFzU3RpY2t5TW9kaWZpZXIoVmlydHVhbEtleSBrZXkpCiB7CiAgICAgLy8gUmV0
dXJucyB3aGV0aGVyIHRoZSBrZXkncyBtb2RpZmllciBmbGFncyBzaG91bGQgYWZmZWN0IG90aGVy
IGV2ZW50cyB3aGlsZSBwcmVzc2VkIGRvd24uCiAgICAgc3dpdGNoIChrZXkpIHsKLSAgICBjYXNl
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OlNoaWZ0OgotICAg
IGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6Q29udHJv
bDoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6
OkFsdGVybmF0ZToKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZp
cnR1YWxLZXk6Ok1ldGE6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
OjpWaXJ0dWFsS2V5OjpDb21tYW5kOgorICAgIGNhc2UgVmlydHVhbEtleTo6U2hpZnQ6CisgICAg
Y2FzZSBWaXJ0dWFsS2V5OjpDb250cm9sOgorICAgIGNhc2UgVmlydHVhbEtleTo6QWx0ZXJuYXRl
OgorICAgIGNhc2UgVmlydHVhbEtleTo6TWV0YToKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkNvbW1h
bmQ6CiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgZGVmYXVsdDoKQEAgLTIyNSwyMDEgKzIy
NSwyMDEgQEAgc3RhdGljIGJvb2wga2V5SGFzU3RpY2t5TW9kaWZpZXIoSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleSBrZXkKICAgICB9CiB9CiAKLXN0YXRpYyBpbnQg
a2V5Q29kZUZvclZpcnR1YWxLZXkoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6Vmly
dHVhbEtleSBrZXkpCitzdGF0aWMgaW50IGtleUNvZGVGb3JWaXJ0dWFsS2V5KFZpcnR1YWxLZXkg
a2V5KQogewogICAgIC8vIFRoZSBsaWtlbHkga2V5Q29kZSBmb3IgdGhlIHZpcnR1YWwga2V5IGFz
IGRlZmluZWQgaW4gPEhJVG9vbGJveC9FdmVudHMuaD4uCiAgICAgc3dpdGNoIChrZXkpIHsKLSAg
ICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OlNoaWZ0
OgorICAgIGNhc2UgVmlydHVhbEtleTo6U2hpZnQ6CiAgICAgICAgIHJldHVybiBrVktfU2hpZnQ7
Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpD
b250cm9sOgorICAgIGNhc2UgVmlydHVhbEtleTo6Q29udHJvbDoKICAgICAgICAgcmV0dXJuIGtW
S19Db250cm9sOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6Vmly
dHVhbEtleTo6QWx0ZXJuYXRlOgorICAgIGNhc2UgVmlydHVhbEtleTo6QWx0ZXJuYXRlOgogICAg
ICAgICByZXR1cm4ga1ZLX09wdGlvbjsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1
dG9tYXRpb246OlZpcnR1YWxLZXk6Ok1ldGE6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpNZXRhOgog
ICAgICAgICAvLyBUaGUgJ21ldGEnIGtleSBkb2VzIG5vdCBleGlzdCBvbiBBcHBsZSBrZXlib2Fy
ZHMgYW5kIGlzIHVzdWFsbHkKICAgICAgICAgLy8gbWFwcGVkIHRvIHRoZSBDb21tYW5kIGtleSB3
aGVuIHVzaW5nIHRoaXJkLXBhcnR5IGtleWJvYXJkcy4KLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkNvbW1hbmQ6CisgICAgY2FzZSBWaXJ0dWFs
S2V5OjpDb21tYW5kOgogICAgICAgICByZXR1cm4ga1ZLX0NvbW1hbmQ7Ci0gICAgY2FzZSBJbnNw
ZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpIZWxwOgorICAgIGNhc2Ug
VmlydHVhbEtleTo6SGVscDoKICAgICAgICAgcmV0dXJuIGtWS19IZWxwOwotICAgIGNhc2UgSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6QmFja3NwYWNlOgorICAg
IGNhc2UgVmlydHVhbEtleTo6QmFja3NwYWNlOgogICAgICAgICByZXR1cm4ga1ZLX0RlbGV0ZTsK
LSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OlRh
YjoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OlRhYjoKICAgICAgICAgcmV0dXJuIGtWS19UYWI7Ci0g
ICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpDbGVh
cjoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkNsZWFyOgogICAgICAgICByZXR1cm4ga1ZLX0FOU0lf
S2V5cGFkQ2xlYXI7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpW
aXJ0dWFsS2V5OjpFbnRlcjoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkVudGVyOgogICAgICAgICBy
ZXR1cm4ga1ZLX0FOU0lfS2V5cGFkRW50ZXI7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29s
OjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpQYXVzZToKKyAgICBjYXNlIFZpcnR1YWxLZXk6OlBh
dXNlOgogICAgICAgICAvLyBUaGUgJ3BhdXNlJyBrZXkgZG9lcyBub3QgZXhpc3Qgb24gQXBwbGUg
a2V5Ym9hcmRzIGFuZCBoYXMgbm8ga2V5Q29kZS4KICAgICAgICAgLy8gVGhlIHNlbWFudGljcyBh
cmUgdW5jbGVhciBzbyBqdXN0IGFib3J0IGFuZCBkbyBub3RoaW5nLgogICAgICAgICByZXR1cm4g
MDsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6
OkNhbmNlbDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkNhbmNlbDoKICAgICAgICAgLy8gVGhlICdj
YW5jZWwnIGtleSBkb2VzIG5vdCBleGlzdCBvbiBBcHBsZSBrZXlib2FyZHMgYW5kIGhhcyBubyBr
ZXlDb2RlLgogICAgICAgICAvLyBBY2NvcmRpbmcgdG8gdGhlIGludGVybmV0IGl0cyBmdW5jdGlv
bmFsaXR5IGlzIHNpbWlsYXIgdG8gJ0VzY2FwZScuCi0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpFc2NhcGU6CisgICAgY2FzZSBWaXJ0dWFsS2V5
OjpFc2NhcGU6CiAgICAgICAgIHJldHVybiBrVktfRXNjYXBlOwotICAgIGNhc2UgSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6UGFnZVVwOgorICAgIGNhc2UgVmly
dHVhbEtleTo6UGFnZVVwOgogICAgICAgICByZXR1cm4ga1ZLX1BhZ2VVcDsKLSAgICBjYXNlIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OlBhZ2VEb3duOgorICAg
IGNhc2UgVmlydHVhbEtleTo6UGFnZURvd246CiAgICAgICAgIHJldHVybiBrVktfUGFnZURvd247
Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpF
bmQ6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpFbmQ6CiAgICAgICAgIHJldHVybiBrVktfRW5kOwot
ICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6SG9t
ZToKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkhvbWU6CiAgICAgICAgIHJldHVybiBrVktfSG9tZTsK
LSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Okxl
ZnRBcnJvdzoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkxlZnRBcnJvdzoKICAgICAgICAgcmV0dXJu
IGtWS19MZWZ0QXJyb3c7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
OjpWaXJ0dWFsS2V5OjpVcEFycm93OgorICAgIGNhc2UgVmlydHVhbEtleTo6VXBBcnJvdzoKICAg
ICAgICAgcmV0dXJuIGtWS19VcEFycm93OwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbjo6VmlydHVhbEtleTo6UmlnaHRBcnJvdzoKKyAgICBjYXNlIFZpcnR1YWxLZXk6
OlJpZ2h0QXJyb3c6CiAgICAgICAgIHJldHVybiBrVktfUmlnaHRBcnJvdzsKLSAgICBjYXNlIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkRvd25BcnJvdzoKKyAg
ICBjYXNlIFZpcnR1YWxLZXk6OkRvd25BcnJvdzoKICAgICAgICAgcmV0dXJuIGtWS19Eb3duQXJy
b3c7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5
OjpJbnNlcnQ6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpJbnNlcnQ6CiAgICAgICAgIC8vIFRoZSAn
aW5zZXJ0JyBrZXkgZG9lcyBub3QgZXhpc3Qgb24gQXBwbGUga2V5Ym9hcmRzIGFuZCBoYXMgbm8g
a2V5Q29kZS4KICAgICAgICAgLy8gVGhlIHNlbWFudGljcyBhcmUgdW5jbGVhciBzbyBqdXN0IGFi
b3J0IGFuZCBkbyBub3RoaW5nLgogICAgICAgICByZXR1cm4gMDsKLSAgICBjYXNlIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkRlbGV0ZToKKyAgICBjYXNlIFZp
cnR1YWxLZXk6OkRlbGV0ZToKICAgICAgICAgcmV0dXJuIGtWS19Gb3J3YXJkRGVsZXRlOwotICAg
IGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6U3BhY2U6
CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpTcGFjZToKICAgICAgICAgcmV0dXJuIGtWS19TcGFjZTsK
LSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OlNl
bWljb2xvbjoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OlNlbWljb2xvbjoKICAgICAgICAgcmV0dXJu
IGtWS19BTlNJX1NlbWljb2xvbjsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9t
YXRpb246OlZpcnR1YWxLZXk6OkVxdWFsczoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkVxdWFsczoK
ICAgICAgICAgcmV0dXJuIGtWS19BTlNJX0VxdWFsOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6UmV0dXJuOgorICAgIGNhc2UgVmlydHVhbEtl
eTo6UmV0dXJuOgogICAgICAgICByZXR1cm4ga1ZLX1JldHVybjsKLSAgICBjYXNlIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZDA6CisgICAgY2Fz
ZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWQwOgogICAgICAgICByZXR1cm4ga1ZLX0FOU0lfS2V5cGFk
MDsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6
Ok51bWJlclBhZDE6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWQxOgogICAgICAgICBy
ZXR1cm4ga1ZLX0FOU0lfS2V5cGFkMTsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1
dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZDI6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpO
dW1iZXJQYWQyOgogICAgICAgICByZXR1cm4ga1ZLX0FOU0lfS2V5cGFkMjsKLSAgICBjYXNlIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZDM6Cisg
ICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWQzOgogICAgICAgICByZXR1cm4ga1ZLX0FOU0lf
S2V5cGFkMzsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1
YWxLZXk6Ok51bWJlclBhZDQ6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWQ0OgogICAg
ICAgICByZXR1cm4ga1ZLX0FOU0lfS2V5cGFkNDsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZDU6CisgICAgY2FzZSBWaXJ0dWFs
S2V5OjpOdW1iZXJQYWQ1OgogICAgICAgICByZXR1cm4ga1ZLX0FOU0lfS2V5cGFkNTsKLSAgICBj
YXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBh
ZDY6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWQ2OgogICAgICAgICByZXR1cm4ga1ZL
X0FOU0lfS2V5cGFkNjsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246
OlZpcnR1YWxLZXk6Ok51bWJlclBhZDc6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWQ3
OgogICAgICAgICByZXR1cm4ga1ZLX0FOU0lfS2V5cGFkNzsKLSAgICBjYXNlIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZDg6CisgICAgY2FzZSBW
aXJ0dWFsS2V5OjpOdW1iZXJQYWQ4OgogICAgICAgICByZXR1cm4ga1ZLX0FOU0lfS2V5cGFkODsK
LSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51
bWJlclBhZDk6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWQ5OgogICAgICAgICByZXR1
cm4ga1ZLX0FOU0lfS2V5cGFkOTsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9t
YXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZE11bHRpcGx5OgorICAgIGNhc2UgVmlydHVhbEtl
eTo6TnVtYmVyUGFkTXVsdGlwbHk6CiAgICAgICAgIHJldHVybiBrVktfQU5TSV9LZXlwYWRNdWx0
aXBseTsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxL
ZXk6Ok51bWJlclBhZEFkZDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZEFkZDoKICAg
ICAgICAgcmV0dXJuIGtWS19BTlNJX0tleXBhZFBsdXM7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlBy
b3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWRTdWJ0cmFjdDoKKyAgICBj
YXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZFN1YnRyYWN0OgogICAgICAgICByZXR1cm4ga1ZLX0FO
U0lfS2V5cGFkTWludXM7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
OjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWRTZXBhcmF0b3I6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpO
dW1iZXJQYWRTZXBhcmF0b3I6CiAgICAgICAgIC8vIFRoZSAnU2VwYXJhdG9yJyBrZXkgaXMgb25s
eSBwcmVzZW50IG9uIGEgZmV3IGludGVybmF0aW9uYWwga2V5Ym9hcmRzLgogICAgICAgICAvLyBJ
dCBpcyB1c3VhbGx5IG1hcHBlZCB0byB0aGUgc2FtZSBjaGFyYWN0ZXIgYXMgRGVjaW1hbCAoJy4n
IG9yICcsJykuCiAgICAgICAgIEZBTExUSFJPVUdIOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkRGVjaW1hbDoKKyAgICBjYXNl
IFZpcnR1YWxLZXk6Ok51bWJlclBhZERlY2ltYWw6CiAgICAgICAgIHJldHVybiBrVktfQU5TSV9L
ZXlwYWREZWNpbWFsOwogICAgICAgICAvLyBGSVhNRTogdGhpcyBtaWdodCBiZSBsb2NhbGUtZGVw
ZW5kZW50LiBTZWUgdGhlIGFib3ZlIGNvbW1lbnQuCi0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWREaXZpZGU6CisgICAgY2FzZSBW
aXJ0dWFsS2V5OjpOdW1iZXJQYWREaXZpZGU6CiAgICAgICAgIHJldHVybiBrVktfQU5TSV9LZXlw
YWREaXZpZGU7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0
dWFsS2V5OjpGdW5jdGlvbjE6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpGdW5jdGlvbjE6CiAgICAg
ICAgIHJldHVybiBrVktfRjE7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uOjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjI6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpGdW5jdGlv
bjI6CiAgICAgICAgIHJldHVybiBrVktfRjI7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29s
OjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjM6CisgICAgY2FzZSBWaXJ0dWFsS2V5
OjpGdW5jdGlvbjM6CiAgICAgICAgIHJldHVybiBrVktfRjM7Ci0gICAgY2FzZSBJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjQ6CisgICAgY2FzZSBW
aXJ0dWFsS2V5OjpGdW5jdGlvbjQ6CiAgICAgICAgIHJldHVybiBrVktfRjQ7Ci0gICAgY2FzZSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjU6Cisg
ICAgY2FzZSBWaXJ0dWFsS2V5OjpGdW5jdGlvbjU6CiAgICAgICAgIHJldHVybiBrVktfRjU7Ci0g
ICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5j
dGlvbjY6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpGdW5jdGlvbjY6CiAgICAgICAgIHJldHVybiBr
VktfRjY7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFs
S2V5OjpGdW5jdGlvbjc6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpGdW5jdGlvbjc6CiAgICAgICAg
IHJldHVybiBrVktfRjc7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
OjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjg6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpGdW5jdGlvbjg6
CiAgICAgICAgIHJldHVybiBrVktfRjg7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpB
dXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjk6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpG
dW5jdGlvbjk6CiAgICAgICAgIHJldHVybiBrVktfRjk7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlBy
b3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjEwOgorICAgIGNhc2UgVmly
dHVhbEtleTo6RnVuY3Rpb24xMDoKICAgICAgICAgcmV0dXJuIGtWS19GMTA7Ci0gICAgY2FzZSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjExOgor
ICAgIGNhc2UgVmlydHVhbEtleTo6RnVuY3Rpb24xMToKICAgICAgICAgcmV0dXJuIGtWS19GMTE7
Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpG
dW5jdGlvbjEyOgorICAgIGNhc2UgVmlydHVhbEtleTo6RnVuY3Rpb24xMjoKICAgICAgICAgcmV0
dXJuIGtWS19GMTI7CiAgICAgfQogfQogCi1zdGF0aWMgTlNFdmVudE1vZGlmaWVyRmxhZ3MgZXZl
bnRNb2RpZmllckZsYWdzRm9yVmlydHVhbEtleShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uOjpWaXJ0dWFsS2V5IGtleSkKK3N0YXRpYyBOU0V2ZW50TW9kaWZpZXJGbGFncyBldmVudE1v
ZGlmaWVyRmxhZ3NGb3JWaXJ0dWFsS2V5KFZpcnR1YWxLZXkga2V5KQogewogICAgIC8vIENvbXB1
dGVzIHRoZSBtb2RpZmllcnMgY2hhbmdlZCBieSB0aGUgdmlydHVhbCBrZXkgd2hlbiBpdCBpcyBw
cmVzc2VkIG9yIHJlbGVhc2VkLgogICAgIC8vIFRoZSBtYXBwaW5nIGZyb20ga2V5cyB0byBtb2Rp
ZmllcnMgaXMgc3BlY2lmaWVkIGluIHRoZSBkb2N1bWVudGF0aW9uIGZvciBOU0V2ZW50LgogICAg
IHN3aXRjaCAoa2V5KSB7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
OjpWaXJ0dWFsS2V5OjpTaGlmdDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OlNoaWZ0OgogICAgICAg
ICByZXR1cm4gTlNFdmVudE1vZGlmaWVyRmxhZ1NoaWZ0OwogCi0gICAgY2FzZSBJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpDb250cm9sOgorICAgIGNhc2UgVmly
dHVhbEtleTo6Q29udHJvbDoKICAgICAgICAgcmV0dXJuIE5TRXZlbnRNb2RpZmllckZsYWdDb250
cm9sOwogCi0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFs
S2V5OjpBbHRlcm5hdGU6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpBbHRlcm5hdGU6CiAgICAgICAg
IHJldHVybiBOU0V2ZW50TW9kaWZpZXJGbGFnT3B0aW9uOwogCi0gICAgY2FzZSBJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpNZXRhOgorICAgIGNhc2UgVmlydHVh
bEtleTo6TWV0YToKICAgICAgICAgLy8gVGhlICdtZXRhJyBrZXkgZG9lcyBub3QgZXhpc3Qgb24g
QXBwbGUga2V5Ym9hcmRzIGFuZCBpcyB1c3VhbGx5CiAgICAgICAgIC8vIG1hcHBlZCB0byB0aGUg
Q29tbWFuZCBrZXkgd2hlbiB1c2luZyB0aGlyZC1wYXJ0eSBrZXlib2FyZHMuCi0gICAgY2FzZSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpDb21tYW5kOgorICAg
IGNhc2UgVmlydHVhbEtleTo6Q29tbWFuZDoKICAgICAgICAgcmV0dXJuIE5TRXZlbnRNb2RpZmll
ckZsYWdDb21tYW5kOwogCi0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
OjpWaXJ0dWFsS2V5OjpIZWxwOgorICAgIGNhc2UgVmlydHVhbEtleTo6SGVscDoKICAgICAgICAg
cmV0dXJuIE5TRXZlbnRNb2RpZmllckZsYWdIZWxwIHwgTlNFdmVudE1vZGlmaWVyRmxhZ0Z1bmN0
aW9uOwogCi0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFs
S2V5OjpQYWdlVXA6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpW
aXJ0dWFsS2V5OjpQYWdlRG93bjoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9t
YXRpb246OlZpcnR1YWxLZXk6OkVuZDoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1
dG9tYXRpb246OlZpcnR1YWxLZXk6OkhvbWU6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpQYWdlVXA6
CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpQYWdlRG93bjoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkVu
ZDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkhvbWU6CiAgICAgICAgIHJldHVybiBOU0V2ZW50TW9k
aWZpZXJGbGFnRnVuY3Rpb247CiAKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9t
YXRpb246OlZpcnR1YWxLZXk6OkxlZnRBcnJvdzoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OlVwQXJyb3c6Ci0gICAgY2FzZSBJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpSaWdodEFycm93OgotICAgIGNhc2Ug
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RG93bkFycm93Ogor
ICAgIGNhc2UgVmlydHVhbEtleTo6TGVmdEFycm93OgorICAgIGNhc2UgVmlydHVhbEtleTo6VXBB
cnJvdzoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OlJpZ2h0QXJyb3c6CisgICAgY2FzZSBWaXJ0dWFs
S2V5OjpEb3duQXJyb3c6CiAgICAgICAgIHJldHVybiBOU0V2ZW50TW9kaWZpZXJGbGFnTnVtZXJp
Y1BhZCB8IE5TRXZlbnRNb2RpZmllckZsYWdGdW5jdGlvbjsKIAotICAgIGNhc2UgSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RGVsZXRlOgorICAgIGNhc2UgVmly
dHVhbEtleTo6RGVsZXRlOgogICAgICAgICByZXR1cm4gTlNFdmVudE1vZGlmaWVyRmxhZ0Z1bmN0
aW9uOwogCi0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFs
S2V5OjpDbGVhcjoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZp
cnR1YWxLZXk6Ok51bWJlclBhZDA6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRv
bWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWQxOgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkMjoKLSAgICBjYXNlIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZDM6Ci0gICAg
Y2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQ
YWQ0OgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtl
eTo6TnVtYmVyUGFkNToKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246
OlZpcnR1YWxLZXk6Ok51bWJlclBhZDY6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpB
dXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWQ3OgotICAgIGNhc2UgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkODoKLSAgICBjYXNlIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZDk6Ci0g
ICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1i
ZXJQYWRNdWx0aXBseToKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246
OlZpcnR1YWxLZXk6Ok51bWJlclBhZEFkZDoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZFN1YnRyYWN0OgotICAgIGNhc2UgSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkU2VwYXJh
dG9yOgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtl
eTo6TnVtYmVyUGFkRGVjaW1hbDoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9t
YXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZERpdmlkZToKKyAgICBjYXNlIFZpcnR1YWxLZXk6
OkNsZWFyOgorICAgIGNhc2UgVmlydHVhbEtleTo6TnVtYmVyUGFkMDoKKyAgICBjYXNlIFZpcnR1
YWxLZXk6Ok51bWJlclBhZDE6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWQyOgorICAg
IGNhc2UgVmlydHVhbEtleTo6TnVtYmVyUGFkMzoKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJl
clBhZDQ6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWQ1OgorICAgIGNhc2UgVmlydHVh
bEtleTo6TnVtYmVyUGFkNjoKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZDc6CisgICAg
Y2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWQ4OgorICAgIGNhc2UgVmlydHVhbEtleTo6TnVtYmVy
UGFkOToKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZE11bHRpcGx5OgorICAgIGNhc2Ug
VmlydHVhbEtleTo6TnVtYmVyUGFkQWRkOgorICAgIGNhc2UgVmlydHVhbEtleTo6TnVtYmVyUGFk
U3VidHJhY3Q6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWRTZXBhcmF0b3I6CisgICAg
Y2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWREZWNpbWFsOgorICAgIGNhc2UgVmlydHVhbEtleTo6
TnVtYmVyUGFkRGl2aWRlOgogICAgICAgICByZXR1cm4gTlNFdmVudE1vZGlmaWVyRmxhZ051bWVy
aWNQYWQ7CiAKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1
YWxLZXk6OkZ1bmN0aW9uMToKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRp
b246OlZpcnR1YWxLZXk6OkZ1bmN0aW9uMjoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkZ1bmN0aW9uMzoKLSAgICBjYXNlIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkZ1bmN0aW9uNDoKLSAgICBjYXNlIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkZ1bmN0aW9uNToKLSAg
ICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkZ1bmN0
aW9uNjoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxL
ZXk6OkZ1bmN0aW9uNzoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246
OlZpcnR1YWxLZXk6OkZ1bmN0aW9uODoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1
dG9tYXRpb246OlZpcnR1YWxLZXk6OkZ1bmN0aW9uOToKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkZ1bmN0aW9uMTA6Ci0gICAgY2FzZSBJbnNw
ZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjExOgotICAg
IGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RnVuY3Rp
b24xMjoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkZ1bmN0aW9uMToKKyAgICBjYXNlIFZpcnR1YWxL
ZXk6OkZ1bmN0aW9uMjoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkZ1bmN0aW9uMzoKKyAgICBjYXNl
IFZpcnR1YWxLZXk6OkZ1bmN0aW9uNDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkZ1bmN0aW9uNToK
KyAgICBjYXNlIFZpcnR1YWxLZXk6OkZ1bmN0aW9uNjoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkZ1
bmN0aW9uNzoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkZ1bmN0aW9uODoKKyAgICBjYXNlIFZpcnR1
YWxLZXk6OkZ1bmN0aW9uOToKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkZ1bmN0aW9uMTA6CisgICAg
Y2FzZSBWaXJ0dWFsS2V5OjpGdW5jdGlvbjExOgorICAgIGNhc2UgVmlydHVhbEtleTo6RnVuY3Rp
b24xMjoKICAgICAgICAgcmV0dXJuIE5TRXZlbnRNb2RpZmllckZsYWdGdW5jdGlvbjsKIAogICAg
IGRlZmF1bHQ6CkBAIC00MjcsMTkgKzQyNywzNCBAQCBzdGF0aWMgTlNFdmVudE1vZGlmaWVyRmxh
Z3MgZXZlbnRNb2RpZmllckZsYWdzRm9yVmlydHVhbEtleShJbnNwZWN0b3I6OlByb3RvY29sOgog
ICAgIH0KIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZUtl
eVN0cm9rZShXZWJQYWdlUHJveHkmIHBhZ2UsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRp
b246OktleWJvYXJkSW50ZXJhY3Rpb25UeXBlIGludGVyYWN0aW9uLCBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5IGtleSkKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Np
b246OnBsYXRmb3JtU2ltdWxhdGVLZXlib2FyZEludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYgcGFn
ZSwgS2V5Ym9hcmRJbnRlcmFjdGlvbiBpbnRlcmFjdGlvbiwgc3RkOjpvcHRpb25hbDxWaXJ0dWFs
S2V5PiB2aXJ0dWFsS2V5LCBzdGQ6Om9wdGlvbmFsPENoYXJLZXk+IGNoYXJLZXkpCiB7CiAgICAg
Ly8gRklYTUU6IHRoaXMgZnVuY3Rpb24gYW5kIHRoZSBBdXRvbWF0aW9uIHByb3RvY29sIGVudW0g
c2hvdWxkIHByb2JhYmx5IGFkb3B0IGtleSBuYW1lcwogICAgIC8vIGZyb20gVzNDIFVJRXZlbnRz
IHN0YW5kYXJkLiBGb3IgbW9yZSBkZXRhaWxzOiBodHRwczovL3czYy5naXRodWIuaW8vdWlldmVu
dHMtY29kZS8KIAotICAgIGJvb2wgaXNTdGlja3lNb2RpZmllciA9IGtleUhhc1N0aWNreU1vZGlm
aWVyKGtleSk7Ci0gICAgTlNFdmVudE1vZGlmaWVyRmxhZ3MgY2hhbmdlZE1vZGlmaWVycyA9IGV2
ZW50TW9kaWZpZXJGbGFnc0ZvclZpcnR1YWxLZXkoa2V5KTsKLSAgICBpbnQga2V5Q29kZSA9IGtl
eUNvZGVGb3JWaXJ0dWFsS2V5KGtleSk7CisgICAgQVNTRVJUKHZpcnR1YWxLZXkuaGFzX3ZhbHVl
KCkgfHwgY2hhcktleS5oYXNfdmFsdWUoKSk7CisKKyAgICBib29sIGlzU3RpY2t5TW9kaWZpZXIg
PSBmYWxzZTsKKyAgICBOU0V2ZW50TW9kaWZpZXJGbGFncyBjaGFuZ2VkTW9kaWZpZXJzID0gMDsK
KyAgICBpbnQga2V5Q29kZTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuaWNoYXI+IGNoYXJDb2RlOwor
ICAgIHN0ZDo6b3B0aW9uYWw8dW5pY2hhcj4gY2hhckNvZGVJZ25vcmluZ01vZGlmaWVyczsKKwor
ICAgIGlmICh2aXJ0dWFsS2V5Lmhhc192YWx1ZSgpKSB7CisgICAgICAgIGlzU3RpY2t5TW9kaWZp
ZXIgPSB2aXJ0dWFsS2V5SGFzU3RpY2t5TW9kaWZpZXIodmlydHVhbEtleS52YWx1ZSgpKTsKKyAg
ICAgICAgY2hhbmdlZE1vZGlmaWVycyA9IGV2ZW50TW9kaWZpZXJGbGFnc0ZvclZpcnR1YWxLZXko
dmlydHVhbEtleS52YWx1ZSgpKTsKKyAgICAgICAga2V5Q29kZSA9IGtleUNvZGVGb3JWaXJ0dWFs
S2V5KHZpcnR1YWxLZXkudmFsdWUoKSk7CisgICAgICAgIGNoYXJDb2RlID0gY2hhckNvZGVGb3JW
aXJ0dWFsS2V5KHZpcnR1YWxLZXkudmFsdWUoKSk7CisgICAgICAgIGNoYXJDb2RlSWdub3JpbmdN
b2RpZmllcnMgPSBjaGFyQ29kZUlnbm9yaW5nTW9kaWZpZXJzRm9yVmlydHVhbEtleSh2aXJ0dWFs
S2V5LnZhbHVlKCkpOworICAgIH0KKworICAgIGlmIChjaGFyS2V5Lmhhc192YWx1ZSgpKSB7Cisg
ICAgICAgIGNoYXJDb2RlID0gKHVuaWNoYXIpY2hhcktleS52YWx1ZSgpOworICAgICAgICBjaGFy
Q29kZUlnbm9yaW5nTW9kaWZpZXJzID0gKHVuaWNoYXIpY2hhcktleS52YWx1ZSgpOworICAgIH0K
IAogICAgIC8vIEZJWE1FOiBjb25zaWRlciB1c2luZyBBcHBLaXQgU1BJIHRvIG5vcm1hbGl6ZSAn
Y2hhcmFjdGVycycsIGkuZS4sIGNoYW5naW5nICogdG8gU2hpZnQtOCwKICAgICAvLyBhbmQgcGFz
c2luZyB0aGF0IGluIHRvIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycy4gV2UgY291bGQgaGFy
ZGNvZGUgdGhpcyBmb3IgQVNDSUkgaWYgbmVlZGVkLgotICAgIHN0ZDo6b3B0aW9uYWw8dW5pY2hh
cj4gY2hhckNvZGUgPSBjaGFyQ29kZUZvclZpcnR1YWxLZXkoa2V5KTsKLSAgICBzdGQ6Om9wdGlv
bmFsPHVuaWNoYXI+IGNoYXJDb2RlSWdub3JpbmdNb2RpZmllcnMgPSBjaGFyQ29kZUlnbm9yaW5n
TW9kaWZpZXJzRm9yVmlydHVhbEtleShrZXkpOwogICAgIE5TU3RyaW5nICpjaGFyYWN0ZXJzID0g
Y2hhckNvZGUgPyBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoYXJDb2RlLnZhbHVl
KCkgbGVuZ3RoOjFdIDogbmlsOwogICAgIE5TU3RyaW5nICp1bm1vZGlmaWVkQ2hhcmFjdGVycyA9
IGNoYXJDb2RlSWdub3JpbmdNb2RpZmllcnMgPyBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3Rl
cnM6JmNoYXJDb2RlSWdub3JpbmdNb2RpZmllcnMudmFsdWUoKSBsZW5ndGg6MV0gOiBuaWw7CiAK
QEAgLTQ1MiwxOSArNDY3LDE5IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3Jt
U2ltdWxhdGVLZXlTdHJva2UoV2ViUGFnZVByb3h5JiBwYWdlLCBJbnNwZWN0CiAgICAgTlNQb2lu
dCBldmVudFBvc2l0aW9uID0gTlNNYWtlUG9pbnQoMCwgd2luZG93LmZyYW1lLnNpemUuaGVpZ2h0
KTsKIAogICAgIHN3aXRjaCAoaW50ZXJhY3Rpb24pIHsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246OktleWJvYXJkSW50ZXJhY3Rpb25UeXBlOjpLZXlQcmVzczogewor
ICAgIGNhc2UgS2V5Ym9hcmRJbnRlcmFjdGlvbjo6S2V5UHJlc3M6IHsKICAgICAgICAgTlNFdmVu
dFR5cGUgZXZlbnRUeXBlID0gaXNTdGlja3lNb2RpZmllciA/IE5TRXZlbnRUeXBlRmxhZ3NDaGFu
Z2VkIDogTlNFdmVudFR5cGVLZXlEb3duOwogICAgICAgICBtX2N1cnJlbnRNb2RpZmllcnMgfD0g
Y2hhbmdlZE1vZGlmaWVyczsKICAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbTlNF
dmVudCBrZXlFdmVudFdpdGhUeXBlOmV2ZW50VHlwZSBsb2NhdGlvbjpldmVudFBvc2l0aW9uIG1v
ZGlmaWVyRmxhZ3M6bV9jdXJyZW50TW9kaWZpZXJzIHRpbWVzdGFtcDp0aW1lc3RhbXAgd2luZG93
TnVtYmVyOndpbmRvd051bWJlciBjb250ZXh0Om5pbCBjaGFyYWN0ZXJzOmNoYXJhY3RlcnMgY2hh
cmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOnVubW9kaWZpZWRDaGFyYWN0ZXJzIGlzQVJlcGVhdDpO
TyBrZXlDb2RlOmtleUNvZGVdXTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6S2V5Ym9hcmRJbnRlcmFjdGlvblR5cGU6Oktl
eVJlbGVhc2U6IHsKKyAgICBjYXNlIEtleWJvYXJkSW50ZXJhY3Rpb246OktleVJlbGVhc2U6IHsK
ICAgICAgICAgTlNFdmVudFR5cGUgZXZlbnRUeXBlID0gaXNTdGlja3lNb2RpZmllciA/IE5TRXZl
bnRUeXBlRmxhZ3NDaGFuZ2VkIDogTlNFdmVudFR5cGVLZXlVcDsKICAgICAgICAgbV9jdXJyZW50
TW9kaWZpZXJzICY9IH5jaGFuZ2VkTW9kaWZpZXJzOwogICAgICAgICBbZXZlbnRzVG9CZVNlbnQg
YWRkT2JqZWN0OltOU0V2ZW50IGtleUV2ZW50V2l0aFR5cGU6ZXZlbnRUeXBlIGxvY2F0aW9uOmV2
ZW50UG9zaXRpb24gbW9kaWZpZXJGbGFnczptX2N1cnJlbnRNb2RpZmllcnMgdGltZXN0YW1wOnRp
bWVzdGFtcCB3aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmlsIGNoYXJhY3RlcnM6
Y2hhcmFjdGVycyBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6dW5tb2RpZmllZENoYXJhY3Rl
cnMgaXNBUmVwZWF0Ok5PIGtleUNvZGU6a2V5Q29kZV1dOwogICAgICAgICBicmVhazsKICAgICB9
Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpLZXlib2FyZEludGVy
YWN0aW9uVHlwZTo6SW5zZXJ0QnlLZXk6IHsKKyAgICBjYXNlIEtleWJvYXJkSW50ZXJhY3Rpb246
Okluc2VydEJ5S2V5OiB7CiAgICAgICAgIC8vIFN0aWNreSBtb2RpZmllcnMgc2hvdWxkIGVpdGhl
ciBiZSAnS2V5UHJlc3MnIG9yICdLZXlSZWxlYXNlJy4KICAgICAgICAgQVNTRVJUKCFpc1N0aWNr
eU1vZGlmaWVyKTsKICAgICAgICAgaWYgKGlzU3RpY2t5TW9kaWZpZXIpCkBAIC01NTEsNyArNTY2
LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZUtleVNlcXVl
bmNlKFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QKIAogICAgICAgICBbZXZlbnRzVG9CZVNlbnQg
YWRkT2JqZWN0OltOU0V2ZW50IGtleUV2ZW50V2l0aFR5cGU6TlNFdmVudFR5cGVLZXlEb3duIGxv
Y2F0aW9uOmV2ZW50UG9zaXRpb24gbW9kaWZpZXJGbGFnczptb2RpZmllcnNGb3JLZXlzdHJva2Ug
dGltZXN0YW1wOnRpbWVzdGFtcCB3aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmls
IGNoYXJhY3RlcnM6c3Vic3RyaW5nIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczpzdWJzdHJp
bmcgaXNBUmVwZWF0Ok5PIGtleUNvZGU6MF1dOwogICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRk
T2JqZWN0OltOU0V2ZW50IGtleUV2ZW50V2l0aFR5cGU6TlNFdmVudFR5cGVLZXlVcCBsb2NhdGlv
bjpldmVudFBvc2l0aW9uIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJzRm9yS2V5c3Ryb2tlIHRpbWVz
dGFtcDp0aW1lc3RhbXAgd2luZG93TnVtYmVyOndpbmRvd051bWJlciBjb250ZXh0Om5pbCBjaGFy
YWN0ZXJzOnN1YnN0cmluZyBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6c3Vic3RyaW5nIGlz
QVJlcGVhdDpOTyBrZXlDb2RlOjBdXTsKLSAgICAgICAgCisKICAgICAgICAgaWYgKHNob3VsZFBy
ZXNzU2hpZnQpCiAgICAgICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltOU0V2ZW50
IGtleUV2ZW50V2l0aFR5cGU6TlNFdmVudFR5cGVGbGFnc0NoYW5nZWQgbG9jYXRpb246ZXZlbnRQ
b3NpdGlvbiBtb2RpZmllckZsYWdzOm1fY3VycmVudE1vZGlmaWVycyB0aW1lc3RhbXA6dGltZXN0
YW1wIHdpbmRvd051bWJlcjp3aW5kb3dOdW1iZXIgY29udGV4dDpuaWwgY2hhcmFjdGVyczpAIiIg
Y2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOkAiIiBpc0FSZXBlYXQ6Tk8ga2V5Q29kZTprVktf
U2hpZnRdXTsKICAgICB9XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IGFkMTU0NzU5MGM2ZmQzYTA4NWQxZDRlZjlkNmNjYzkwNWEzNzY2
ZWQuLmU3OWFhOWE2NWU5ZTE3YzQ0ODEzOTE2YzNiNTUzNTJjYjBiODg1ZmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTUyOSw2ICsx
NTI5LDggQEAKIAkJOTk0NkVGODYxRTdCMDI3MDAwNTQxRTc5IC8qIFdlYkF1dG9tYXRpb25TZXNz
aW9uSU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTk0NkVGODUxRTdCMDI2NjAwNTQxRTc5IC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uSU9TLm1tICov
OyB9OwogCQk5OTRCQURGMzFGN0Q3ODExMDBCNTcxRTcgLyogV0tJbnNwZWN0b3JWaWV3Q29udHJv
bGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5
NEJBREYyMUY3RDc3RUIwMEI1NzFFNyAvKiBXS0luc3BlY3RvclZpZXdDb250cm9sbGVyLm1tICov
OyB9OwogCQk5OTRCQURGNDFGN0Q3ODE0MDBCNTcxRTcgLyogV0tJbnNwZWN0b3JWaWV3Q29udHJv
bGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk0
QkFERjExRjdENzdFQTAwQjU3MUU3IC8qIFdLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIuaCAqLzsg
fTsKKwkJOTk1MjI2RDYyMDdEMTg0NjAwRjc4NDIwIC8qIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk1MjI2
RDQyMDdEMTg0NTAwRjc4NDIwIC8qIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5oICovOyB9Owor
CQk5OTUyMjZENzIwN0QxODQ2MDBGNzg0MjAgLyogU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5NTIyNkQ1
MjA3RDE4NDYwMEY3ODQyMCAvKiBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuY3BwICovOyB9Owog
CQk5OTU1QTZFQzFDNzk4MEMyMDBFQjZBOTMgLyogV2ViQXV0b21hdGlvblNlc3Npb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5NTVBNkVCMUM3OTgw
QkIwMEVCNkE5MyAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbi5oICovOyB9OwogCQk5OTU1QTZFRDFD
Nzk4MENBMDBFQjZBOTMgLyogV2ViQXV0b21hdGlvblNlc3Npb24uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk1NUE2RUExQzc5ODBCQjAwRUI2QTkz
IC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uLmNwcCAqLzsgfTsKIAkJOTk1NUE2RUYxQzc5ODEwODAw
RUI2QTkzIC8qIEF1dG9tYXRpb24uanNvbiBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDk5NTVBNkU5MUM3OTgwQkIwMEVCNkE5MyAvKiBBdXRvbWF0aW9uLmpz
b24gKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQw
MTksNiArNDAyMSw4IEBACiAJCTk5NDZFRjg1MUU3QjAyNjYwMDU0MUU3OSAvKiBXZWJBdXRvbWF0
aW9uU2Vzc2lvbklPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFdlYkF1dG9tYXRpb25TZXNzaW9uSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5OTRCQURGMTFGN0Q3N0VBMDBCNTcxRTcgLyogV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0luc3BlY3RvclZpZXdDb250cm9s
bGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5NEJBREYyMUY3RDc3RUIwMEI1
NzFFNyAvKiBXS0luc3BlY3RvclZpZXdDb250cm9sbGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTk1MjI2RDQyMDdEMTg0NTAwRjc4NDIwIC8qIFNpbXVs
YXRlZElucHV0RGlzcGF0Y2hlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
aW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
OTk1MjI2RDUyMDdEMTg0NjAwRjc4NDIwIC8qIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaW11bGF0ZWRJbnB1dERpc3Bh
dGNoZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTU1QTZFOTFDNzk4MEJC
MDBFQjZBOTMgLyogQXV0b21hdGlvbi5qc29uICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5qc29uOyBwYXRoID0g
QXV0b21hdGlvbi5qc29uOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTU1QTZFQTFD
Nzk4MEJCMDBFQjZBOTMgLyogV2ViQXV0b21hdGlvblNlc3Npb24uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQXV0b21hdGlvblNlc3Npb24uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5OTU1QTZFQjFDNzk4MEJCMDBFQjZBOTMgLyogV2ViQXV0
b21hdGlvblNlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQXV0
b21hdGlvblNlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY5NzAsNiAr
Njk3NCw4IEBACiAJCQkJOTk0NkVGODIxRTdCMDIzRDAwNTQxRTc5IC8qIGlvcyAqLywKIAkJCQk5
OUMzQUUyMjFEQUQ4RTE0MDBBRjVDMTYgLyogbWFjICovLAogCQkJCTk5NTVBNkU5MUM3OTgwQkIw
MEVCNkE5MyAvKiBBdXRvbWF0aW9uLmpzb24gKi8sCisJCQkJOTk1MjI2RDUyMDdEMTg0NjAwRjc4
NDIwIC8qIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5jcHAgKi8sCisJCQkJOTk1MjI2RDQyMDdE
MTg0NTAwRjc4NDIwIC8qIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5oICovLAogCQkJCTk5NTVB
NkVBMUM3OTgwQkIwMEVCNkE5MyAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgKi8sCiAJCQkJ
OTk1NUE2RUIxQzc5ODBCQjAwRUI2QTkzIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uLmggKi8sCiAJ
CQkJMUMwQTE5NTkxQzkwMDZFQTAwRkUwRUJCIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uLm1lc3Nh
Z2VzLmluICovLApAQCAtOTE3NCw2ICs5MTgwLDcgQEAKIAkJCQk4MzEzRjdFQzFGN0RBRTA4MDBC
OTQ0RUIgLyogU2hhcmVkU3RyaW5nSGFzaFN0b3JlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzEz
RjdFRTFGN0RBRTA4MDBCOTQ0RUIgLyogU2hhcmVkU3RyaW5nSGFzaFRhYmxlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk4M0Y5NjQ0RTFGQTBGNzZFMDBDNDc3NTAgLyogU2hhcmVkU3RyaW5nSGFzaFRh
YmxlUmVhZE9ubHkuaCBpbiBIZWFkZXJzICovLAorCQkJCTk5NTIyNkQ2MjA3RDE4NDYwMEY3ODQy
MCAvKiBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEQUYw
NkQ2MThCRDFBNDcwMDgxQ0VCMSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQkyREU2OTQzRTE4QkQyQTY4MDA1QzE1RTUgLyogU21hcnRNYWduaWZp
Y2F0aW9uQ29udHJvbGxlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MjcyQjI4QjE0
MDY5ODVEMDA5NkE1RDAgLyogU3RhdGlzdGljc0RhdGEuaCBpbiBIZWFkZXJzICovLApAQCAtMTA4
NzYsNiArMTA4ODMsNyBAQAogCQkJCTgzMTNGN0VCMUY3REFFMDgwMEI5NDRFQiAvKiBTaGFyZWRT
dHJpbmdIYXNoU3RvcmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODMxM0Y3RUQxRjdEQUUwODAw
Qjk0NEVCIC8qIFNoYXJlZFN0cmluZ0hhc2hUYWJsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4
M0Y5NjQ0RDFGQTBGNzZFMDBDNDc3NTAgLyogU2hhcmVkU3RyaW5nSGFzaFRhYmxlUmVhZE9ubHku
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTk1MjI2RDcyMDdEMTg0NjAwRjc4NDIwIC8qIFNpbXVs
YXRlZElucHV0RGlzcGF0Y2hlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyREFGMDZENzE4QkQx
QTQ3MDA4MUNFQjEgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTJERTY5NDNEMThCRDJBNjgwMDVDMTVFNSAvKiBTbWFydE1hZ25pZmljYXRpb25D
b250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUyNzJCMjhB
MTQwNjk4NUQwMDk2QTVEMCAvKiBTdGF0aXN0aWNzRGF0YS5jcHAgaW4gU291cmNlcyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338097</attachid>
            <date>2018-04-17 03:43:46 -0700</date>
            <delta_ts>2018-04-17 17:53:26 -0700</delta_ts>
            <desc>Fix the GTK build</desc>
            <filename>wd-actions.diff</filename>
            <type>text/plain</type>
            <size>102983</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0
L0NNYWtlTGlzdHMudHh0CmluZGV4IGUwZDEzMWVjYWY1Li5iOTM5ODIwMGM2OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L0NNYWtl
TGlzdHMudHh0CkBAIC00MzEsNiArNDMxLDcgQEAgc2V0KFdlYktpdF9TT1VSQ0VTCiAgICAgVUlQ
cm9jZXNzL0F1dGhlbnRpY2F0aW9uL1dlYkNyZWRlbnRpYWwuY3BwCiAgICAgVUlQcm9jZXNzL0F1
dGhlbnRpY2F0aW9uL1dlYlByb3RlY3Rpb25TcGFjZS5jcHAKIAorICAgIFVJUHJvY2Vzcy9BdXRv
bWF0aW9uL1NpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5jcHAKICAgICBVSVByb2Nlc3MvQXV0b21h
dGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKIAogICAgIFVJUHJvY2Vzcy9Eb3dubG9hZHMv
RG93bmxvYWRQcm94eS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggODI4MTE3ZjkzMmQuLjAxOGZkYjY1NWMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwpAQCAtMSwzICsxLDEyOSBAQAorMjAxOC0wNC0xNyAgQnJpYW4gQnVyZyAgPGJidXJn
QGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgQXV0b21hdGlvbjogYWRkIHN1cHBvcnQgZm9yIG1v
dXNlL2tleWJvYXJkIGludGVyYWN0aW9uIHNlcXVlbmNlcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0NjAzCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8zOTQyMTgzOT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgbmV3IHByb3RvY29sIG1ldGhvZHMgYW5kIFdlYktpdCBzdXBwb3J0IGZvciBpbXBs
ZW1lbnRpbmcgdGhlIFczQyBBY3Rpb25zIEFQSS4KKyAgICAgICAgVGhpcyBpcyBhIGdlbmVyaWMg
Y29tbWFuZCBmb3Igc2VuZGluZyBsb3ctbGV2ZWwgbW91c2UsIGtleSwgYW5kIHRvdWNoIGV2ZW50
cyB0bworICAgICAgICB0ZXN0IHBhZ2UgYmVoYXZpb3Igd2hlbiBwZXJmb3JtaW5nIGRyYWctYW5k
LWRyb3AsIGdlc3R1cmVzLCBvciBzcGVjaWZpYyBrZXlkb3duL2tleXVwcy4KKworICAgICAgICBU
byBpbXBsZW1lbnQgdGhpcyBmdW5jdGlvbmFsaXR5LCB0aGlzIHBhdGNoIGFkZHMgU2ltdWxhdGVk
SW5wdXREaXNwYXRjaGVyLCBhIGNsYXNzCisgICAgICAgIGZvciBkaXNwYXRjaGluZyBpbnB1dCBl
dmVudHMgYXN5bmNocm9ub3VzbHkuIFNpbWlsYXIgdG8gdGhlIFdlYkRyaXZlciBzcGVjaWZpY2F0
aW9uLAorICAgICAgICB0aGlzIGlzIGRlc2lnbmVkIGFzIGEga2V5ZnJhbWluZyBBUEkuIENhbGxl
cnMgc2V0IHVwIHNldmVyYWwgImlucHV0IHNvdXJjZXMiIHN1Y2gKKyAgICAgICAgYXMga2V5Ym9h
cmQgb3IgbW91c2UsIGFuZCB0aGVuIHNwZWNpZnkgdGhlIHN0YXRlcyBvZiB0aGF0IGlucHV0IHNv
dXJjZSBvdmVyIHRpbWUuIFRoZQorICAgICAgICBkaXNwYXRjaGVyIGNhbGN1bGF0ZXMgZGlmZnMg
YmV0d2VlbiB0aGUgcHJldmlvdXMgYW5kIGN1cnJlbnQga2V5ZnJhbWVzIGFuZCBnZW5lcmF0ZXMK
KyAgICAgICAgdGhlIGFwcHJvcHJpYXRlIGV2ZW50cyB0aGF0IHdvdWxkIGhhcHBlbiBpZiBhIHVz
ZXIgY2F1c2VkIHRoZSBzdGF0ZSB0cmFuc2l0aW9uLgorCisgICAgICAgIEZvciBleGFtcGxlLCBp
ZiBhIG1vdXNlIGlucHV0IHNvdXJjZSdzIHN0YXRlIGNoYW5nZXMsIHRoZSBkaXNwYXRjaGVyIHNl
bmRzIHN5bnRoZXRpYyBtb3VzZW1vdmUsCisgICAgICAgIG1vdXNlZG93biwgb3IgbW91c2V1cCBl
dmVudHMgZGVwZW5kaW5nIG9uIHRoZSBwcmUtIGFuZCBwb3N0LXN0YXRlLiBUaGlzIGlzIHVuaW50
ZXJlc3RpbmcKKyAgICAgICAgYW5kIG92ZXJjb21wbGljYXRlZCBmb3Igc2ltcGxlIGtleSBhbmQg
bW91c2UgcHJlc3NlcywgYnV0IGl0J3MgcmVhbGx5IGRlc2lnbmVkIHdpdGggYW4KKyAgICAgICAg
ZXllIHRvd2FyZHMgc3VwcG9ydGluZyBtb3VzZW1vdmUgaW50ZXJwb2xhdGlvbiBhbmQgdG91Y2gg
ZXZlbnQgaW50ZXJwb2xhdGlvbiBpbiBsYXRlciBwYXRjaGVzLgorCisgICAgICAgIFRoZSBzdHJh
dGVneSBmb3IgZGlzcGF0Y2hpbmcgZXZlbnRzIGRlcGVuZHMgb24gdGhlIGlucHV0IHNvdXJjZSB0
eXBlOyByaWdodCBub3csIHRoZXNlCisgICAgICAgIG1hcCBkaXJlY3RseSB0byB0aGUgZXhpc3Rp
bmcgcGxhdGZvcm1TaW11bGF0ZXtNb3VzZSwgS2V5Ym9hcmR9SW50ZXJhY3Rpb24gbWV0aG9kcy4g
SW4KKyAgICAgICAgdGhlIGZ1dHVyZSwgdGhlIGRpc3BhdGNoIHN0cmF0ZWd5IG1heSBiZSBlbGFi
b3JhdGVkIGZvciBpbnRlcnBvbGF0ZWQgbW91c2Vtb3ZlIGV2ZW50cy4KKworICAgICAgICBUaGlz
IHBhdGNoIGRlcGVuZHMgb24gc3VwcG9ydCBhZGRlZCBpbiBidWcgMTg0NDYyLgorCisgICAgICAg
IE5vIHRlc3RzIHlldC4gV2hlbiB0aGlzIGNvbW1hbmQgaXMgaG9va2VkIHVwIHRvIGEgZHJpdmVy
LCB0aGUgY29kZSB3aWxsIGJlIGV4ZXJjaXNlZCBieQorICAgICAgICBXM0MgYWN0aW9ucyB0ZXN0
IHN1aXRlLCB3aGljaCBpcyBmYWlybHkgY29tcGxleCBhdCB0aGlzIHBvaW50IHJlbGF0aXZlIHRv
IGVuZC11c2VyIGNvZGUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9BdXRvbWF0
aW9uLmpzb246IEFkZCBuZXcgdHlwZXMgYW5kIGNvbW1hbmRzLgorCisgICAgICAgICogVUlQcm9j
ZXNzL0F1dG9tYXRpb24vU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0OjpTaW11bGF0ZWRJbnB1dFNvdXJjZVN0YXRlOjplbXB0eVN0YXRlKToKKyAgICAg
ICAgKFdlYktpdDo6U2ltdWxhdGVkSW5wdXRTb3VyY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJL
aXQ6OlNpbXVsYXRlZElucHV0U291cmNlOjpTaW11bGF0ZWRJbnB1dFNvdXJjZSk6CisgICAgICAg
IChXZWJLaXQ6OlNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6Q2xpZW50Ojp+Q2xpZW50KToKKyAg
ICAgICAgQWRkIHN0cnVjdHMgZm9yIGlucHV0IHNvdXJjZSwgc291cmNlIHN0YXRlLCBhbmQga2V5
ZnJhbWUuCisgICAgICAgIFRoZSBkaXNwYXRjaGVyJ3MgY2xpZW50IGludGVyZmFjZSBpcyBpbXBs
ZW1lbnRlZCBieSBXZWJBdXRvbWF0aW9uU2Vzc2lvbi4KKworICAgICAgICAoV2ViS2l0OjpTaW11
bGF0ZWRJbnB1dERpc3BhdGNoZXI6OmNyZWF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0F1dG9t
YXRpb24vU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OlNpbXVsYXRlZElucHV0S2V5RnJhbWU6OlNpbXVsYXRlZElucHV0S2V5RnJhbWUpOgorICAg
ICAgICAoV2ViS2l0OjpTaW11bGF0ZWRJbnB1dEtleUZyYW1lOjptYXhpbXVtRHVyYXRpb24gY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpTaW11bGF0ZWRJbnB1dEtleUZyYW1lOjprZXlGcmFtZUZy
b21TdGF0ZU9mSW5wdXRTb3VyY2VzKToKKyAgICAgICAgKFdlYktpdDo6U2ltdWxhdGVkSW5wdXRL
ZXlGcmFtZTo6a2V5RnJhbWVUb1Jlc2V0SW5wdXRTb3VyY2VzKToKKyAgICAgICAgKFdlYktpdDo6
U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjpTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIpOgorICAg
ICAgICAoV2ViS2l0OjpTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6On5TaW11bGF0ZWRJbnB1dERp
c3BhdGNoZXIpOgorICAgICAgICAoV2ViS2l0OjpTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6Omlz
QWN0aXZlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVy
OjprZXlGcmFtZVRyYW5zaXRpb25EdXJhdGlvblRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViS2l0
OjpTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OmlzS2V5RnJhbWVUcmFuc2l0aW9uQ29tcGxldGUg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OnRyYW5z
aXRpb25Ub05leHRLZXlGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlNpbXVsYXRlZElucHV0RGlz
cGF0Y2hlcjo6dHJhbnNpdGlvblRvTmV4dElucHV0U291cmNlU3RhdGUpOgorICAgICAgICAoV2Vi
S2l0OjpTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OnRyYW5zaXRpb25CZXR3ZWVuS2V5RnJhbWVz
KToKKyAgICAgICAgKFdlYktpdDo6U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjp0cmFuc2l0aW9u
SW5wdXRTb3VyY2VUb1N0YXRlKToKKyAgICAgICAgKFdlYktpdDo6U2ltdWxhdGVkSW5wdXREaXNw
YXRjaGVyOjpydW4pOgorICAgICAgICAoV2ViS2l0OjpTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6
OmNhbmNlbCk6CisgICAgICAgIChXZWJLaXQ6OlNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6Zmlu
aXNoRGlzcGF0Y2hpbmcpOgorICAgICAgICBUaGUgZGlzcGF0Y2hlciBoYW5kbGVzIG9uZSBpbnRl
cmFjdGlvbiBhdCBhIHRpbWUuIFRoZSBpbnRlcmFjdGlvbiBpcyBkZXNjcmliZWQKKyAgICAgICAg
YnkgYW4gYXJyYXkgb2Yga2V5ZnJhbWVzLCBhbmQgZWFjaCBrZXlmcmFtZSBoYXMgYW4gYXJyYXkg
b2Ygc3RhdGVzLiBUaGUgZGlzcGF0Y2hlcgorICAgICAgICB0cmFuc2l0aW9ucyBiZXR3ZWVuIGtl
eWZyYW1lcyBieSBzZXF1ZW50aWFsbHkgYW5kIGFzeW5jaHJvbm91c2x5IGVtaXR0aW5nIGV2ZW50
cworICAgICAgICB0aGF0IGNhdXNlIGVhY2ggaW5wdXQgc291cmNlIHN0YXRlIHRvIHRyYW5zaXRp
b24gYXMgZGVzaXJlZC4gS2V5ZnJhbWUgdHJhbnNpdGlvbnMKKyAgICAgICAgYXJlIGFkZGl0aW9u
YWxseSBnYXRlZCBieSBhICJtYXhpbXVtIGR1cmF0aW9uIiB0aW1lci4gRWFjaCBzdGVwIHRoYXQg
dGhlIGRpc3BhdGNoZXIKKyAgICAgICAgZXhlY3V0ZXMgaXMgYXN5bmNocm9ub3VzLCBzbyB0aGUg
ZGlzcGF0Y2hlciBrZWVwcyBtb3N0IHN0YXRlIGluIG1lbWJlcnMgYW5kIHVzZXMKKyAgICAgICAg
ZXJyb3IgYXJndW1lbnQgbGFtYmRhcyBhcyBjb21wbGV0aW9uIGhhbmRsZXJzIGZvciB2YXJpb3Vz
IGFzeW5jIHRoaW5ncy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9t
YXRpb25TZXNzaW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21h
dGlvblNlc3Npb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6
V2ViQXV0b21hdGlvblNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vz
c2lvbjo6aW5wdXREaXNwYXRjaGVyRm9yUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9t
YXRpb25TZXNzaW9uOjppbnB1dFNvdXJjZUZvclR5cGUgY29uc3QpOgorICAgICAgICBBZGQgY2Fu
b25pY2FsIGlucHV0IHNvdXJjZXMgdGhhdCBhcmUgdXNlZCB0byBrZWVwIHRyYWNrIG9mIHN0YXRl
IGFjcm9zcworICAgICAgICBpbnRlcmFjdGlvbiBzZXF1ZW5jZXMuCisKKyAgICAgICAgKFdlYktp
dDo6V2ViQXV0b21hdGlvblNlc3Npb246OmlzU2ltdWxhdGluZ1VzZXJJbnRlcmFjdGlvbiBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjptb3VzZUV2ZW50c0Zs
dXNoZWRGb3JQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246Omtl
eWJvYXJkRXZlbnRzRmx1c2hlZEZvclBhZ2UpOgorICAgICAgICBSZW1vdmUgbV9zaW11bGF0aW5n
VXNlckludGVyYWN0aW9uIHNpbmNlIGl0IGNhbiBiZSBjb21wdXRlZCBiYXNlZCBvbiBvdGhlciBt
ZW1iZXJzLgorCisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjp3aWxsQ2xv
c2VQYWdlKToKKyAgICAgICAgSWYgdGhlIHBhZ2UgaXMgYmVpbmcgdG9ybiBkb3duLCBzdG9wIHRo
ZSBkaXNwYXRjaGVyIGlmIG5lZWRlZCBhbmQgY2FuY2VsIGFueQorICAgICAgICBjYWxsYmFja3Mg
d2FpdGluZyBmb3IgbW91c2Uva2V5IGV2ZW50cyB0byBiZSByZXRpcmVkLgorCisgICAgICAgIChX
ZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpzaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6c2ltdWxhdGVLZXlib2FyZElu
dGVyYWN0aW9uKToKKyAgICAgICAgQWRkIGVhc3ktdG8tdXNlIGFzeW5jIG1ldGhvZHMgZm9yIHNp
bXVsYXRpbmcgbW91c2UgYW5kIGtleSBldmVudHMuIFRoZXNlIGFyZQorICAgICAgICBob29rZWQg
dXAgdG8gU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyIHVzaW5nIGFzeW5jIGNvbXBsZXRpb24gaGFu
ZGxlcnMuCisKKyAgICAgICAgKFdlYktpdDo6cHJvdG9jb2xNb3VzZUJ1dHRvblRvV2ViTW91c2VF
dmVudEJ1dHRvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpwZXJm
b3JtTW91c2VJbnRlcmFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNz
aW9uOjpwZXJmb3JtS2V5Ym9hcmRJbnRlcmFjdGlvbnMpOgorICAgICAgICBBZGp1c3Qgc29tZSBu
YW1pbmcuCisKKyAgICAgICAgKFdlYktpdDo6c2ltdWxhdGVkSW5wdXRTb3VyY2VUeXBlRnJvbVBy
b3RvY29sU291cmNlVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9u
OjpwZXJmb3JtSW50ZXJhY3Rpb25TZXF1ZW5jZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9t
YXRpb25TZXNzaW9uOjpjYW5jZWxJbnRlcmFjdGlvblNlcXVlbmNlKToKKyAgICAgICAgQWRkIGNv
bW1hbmQgaGFuZGxlcnMgZm9yIHRoZSBuZXcgYWN0aW9uIGNvbW1hbmRzIGluIEF1dG9tYXRpb24g
cHJvdG9jb2wuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9ndGsvV2ViQXV0b21h
dGlvblNlc3Npb25HdGsuY3BwOgorICAgICAgICAoV2ViS2l0Ojptb3VzZUJ1dHRvblRvR2RrQnV0
dG9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2lt
dWxhdGVNb3VzZUludGVyYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNl
c3Npb246OnBsYXRmb3JtU2ltdWxhdGVLZXlib2FyZEludGVyYWN0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVLZXlTdHJva2UpOiBE
ZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL2lvcy9XZWJBdXRvbWF0aW9u
U2Vzc2lvbklPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OnBs
YXRmb3JtU2ltdWxhdGVLZXlib2FyZEludGVyYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
QXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVLZXlTdHJva2UpOiBEZWxldGVkLgor
ICAgICAgICBSZW5hbWUgdGhlIGtleWJvYXJkIHBsYXRmb3JtIG1ldGhvZCB0byBtYXRjaCB0aGUg
bmFtaW5nIG9mIHRoZSBtb3VzZSBwbGF0Zm9ybSBtZXRob2QuCisgICAgICAgIFRha2UgYWR2YW50
YWdlIG9mIHRoZSAndXNpbmcnIGFsaWFzIHRvIG1ha2UgdGhlIHRlZGlvdXMgc3dpdGNoZXMgZWFz
aWVyIHRvIHJlYWQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9tYWMvV2ViQXV0
b21hdGlvblNlc3Npb25NYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNz
aW9uOjpwbGF0Zm9ybVNpbXVsYXRlTW91c2VJbnRlcmFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OnZpcnR1YWxLZXlIYXNTdGlja3lNb2RpZmllcik6CisgICAgICAgIChXZWJLaXQ6OmtleUNvZGVG
b3JWaXJ0dWFsS2V5KToKKyAgICAgICAgKFdlYktpdDo6ZXZlbnRNb2RpZmllckZsYWdzRm9yVmly
dHVhbEtleSk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9y
bVNpbXVsYXRlS2V5Ym9hcmRJbnRlcmFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9t
YXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlS2V5U2VxdWVuY2UpOgorICAgICAgICAoV2Vi
S2l0OjprZXlIYXNTdGlja3lNb2RpZmllcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Oldl
YkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlS2V5U3Ryb2tlKTogRGVsZXRlZC4K
KyAgICAgICAgQWxsb3cgdGhlIGtleWJvYXJkIHNpbXVsYXRpb24gbWV0aG9kIHRvIHRha2UgYSB2
aXJ0dWFsIGtleSBhbmQgdW5pY2hhciB0byBiZXR0ZXIKKyAgICAgICAgbWF0Y2ggaG93IHRoaXMg
aXMgdXNlZCBieSB0aGUgUGVyZm9ybSBBY3Rpb25zIGNvbW1hbmQgYW5kIGl0cyBtYWNoaW5lcnku
CisKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOC0w
NC0xNyAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgQXV0b21h
dGlvbjogc2ltdWxhdGVkIG1vdXNlIGludGVyYWN0aW9ucyBzaG91bGQgbm90IGJlIGRvbmUgdW50
aWwgYXNzb2NpYXRlZCBET00gZXZlbnRzIGhhdmUgYmVlbiBkaXNwYXRjaGVkCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL0F1dG9tYXRpb24uanNvbiBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vQXV0b21hdGlvbi5qc29uCmluZGV4IDdl
ODZkMTQ5YzI1Li5jMzE3ZTFhMjYyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQXV0b21hdGlvbi9BdXRvbWF0aW9uLmpzb24KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQXV0b21hdGlvbi9BdXRvbWF0aW9uLmpzb24KQEAgLTcyLDcgKzcyLDggQEAKICAgICAgICAg
ICAgICAgICAiRWxlbWVudE5vdEludGVyYWN0YWJsZSIsCiAgICAgICAgICAgICAgICAgIkVsZW1l
bnROb3RTZWxlY3RhYmxlIiwKICAgICAgICAgICAgICAgICAiU2NyZWVuc2hvdEVycm9yIiwKLSAg
ICAgICAgICAgICAgICAiVW5leHBlY3RlZEFsZXJ0T3BlbiIKKyAgICAgICAgICAgICAgICAiVW5l
eHBlY3RlZEFsZXJ0T3BlbiIsCisgICAgICAgICAgICAgICAgIlRhcmdldE91dE9mQm91bmRzIgog
ICAgICAgICAgICAgXQogICAgICAgICB9LAogICAgICAgICB7CkBAIC0yNDQsNiArMjQ1LDQ2IEBA
CiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJwZXJtaXNzaW9uIiwgIiRyZWYiOiAiU2Vzc2lv
blBlcm1pc3Npb24iIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ2YWx1ZSIsICJ0eXBl
IjogImJvb2xlYW4iIH0KICAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAg
ICAgICAgICAgImlkIjogIklucHV0U291cmNlVHlwZSIsCisgICAgICAgICAgICAidHlwZSI6ICJz
dHJpbmciLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlRoZSB0eXBlIG9mIGFuIGlucHV0
IHNvdXJjZS4gVGhpcyBkZXRlcm1pbmVzIHdoaWNoIHN0YXRlIHByb3BlcnRpZXMgYXJlIGFwcGxp
Y2FibGUgdG8gdGhlIGlucHV0IHNvdXJjZS4gVGhlICdOdWxsJyBpbnB1dCBzb3VyY2UgdHlwZSBo
YXMgbm8gcHJvcGVydGllcywgb25seSBhIGR1cmF0aW9uLiBUaGlzIGNhbiBleHRlbmQgdGhlIGVm
ZmVjdGl2ZSB3YWl0IGZvciBhIHRpY2suIiwKKyAgICAgICAgICAgICJlbnVtIjogWworICAgICAg
ICAgICAgICAgICJOdWxsIiwKKyAgICAgICAgICAgICAgICAiTW91c2UiLAorICAgICAgICAgICAg
ICAgICJLZXlib2FyZCIsCisgICAgICAgICAgICAgICAgIlRvdWNoIgorICAgICAgICAgICAgXQor
ICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAiaWQiOiAiSW5wdXRTb3VyY2UiLAor
ICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKKyAgICAgICAgICAgICJwcm9wZXJ0aWVzIjog
WworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic291cmNlSWQiLCAidHlwZSI6ICJzdHJpbmci
LCAiZGVzY3JpcHRpb24iOiAiQSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhpcyBpbnB1dCBzb3Vy
Y2UuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic291cmNlVHlwZSIsICIkcmVmIjog
IklucHV0U291cmNlVHlwZSIsICJkZXNjcmlwdGlvbiI6ICJUaGUgdHlwZSBvZiB0aGlzIGlucHV0
IHNvdXJjZS4gVGhpcyBhZmZlY3RzIHdoYXQgaW5wdXQgc291cmNlIHN0YXRlIGZpZWxkcyBhcmUg
dmFsaWQgZm9yIHRoaXMgaW5wdXQgc291cmNlLiIgfQorICAgICAgICAgICAgXQorICAgICAgICB9
LAorICAgICAgICB7CisgICAgICAgICAgICAiaWQiOiAiSW50ZXJhY3Rpb25TdGVwIiwKKyAgICAg
ICAgICAgICJkZXNjcmlwdGlvbiI6ICJBIHNldCBvZiBpbnB1dCBzb3VyY2Ugc3RhdGVzIHRvIHdo
aWNoIGFsbCBhcHBsaWNhYmxlIGlucHV0IHNvdXJjZXMgbXVzdCB0cmFuc2l0aW9uIGJlZm9yZSBm
dXJ0aGVyIHN0ZXBzIG1heSBiZSBwcm9jZXNzZWQuIElmIGFuIGlucHV0IHNvdXJjZSBkb2VzIG5v
dCBoYXZlIGEgY29ycmVzcG9uZGluZyBzdGF0ZSBpbiBhIHN0ZXAsIGl0cyBzdGF0ZSBhc3N1bWVk
IHRvIGJlICdyZWxlYXNlZCcgZm9yIHRoYXQgc3RlcC4iLAorICAgICAgICAgICAgInR5cGUiOiAi
b2JqZWN0IiwKKyAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogWworICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAic3RhdGVzIiwgInR5cGUiOiAiYXJyYXkiLCAiaXRlbXMiOiB7ICIkcmVmIjogIklu
cHV0U291cmNlU3RhdGUiIH0sICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJBIGxp
c3Qgb2YgbmV3IGlucHV0IHN0YXRlcyBmb3IgaW5wdXQgc291cmNlcyB0aGF0IG11c3QgdHJhbnNp
dGlvbiBkdXJpbmcgdGhpcyBzdGVwLiBTb3VyY2Ugc3RhdGUgdHJhbnNpdGlvbnMgdGhhdCBjYW5u
b3QgYmUgcGVyZm9ybWVkIGNvbmN1cnJlbnRseSAoaS5lLiwgdG91Y2ggZ2VzdHVyZXMpIGFyZSBw
ZXJmb3JtZWQgc2VxdWVudGlhbGx5IGluIHRoZSBvcmRlciB0aGV5IGFyZSBsaXN0ZWQuIiB9Cisg
ICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJJ
bnB1dFNvdXJjZVN0YXRlIiwKKyAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCisgICAgICAg
ICAgICAiZGVzY3JpcHRpb24iOiAiQSBuZXcgc3RhdGUgZm9yIGEgc3BlY2lmaWMgaW5wdXQgc291
cmNlLiBBbGwgc3RhdGUtcmVsYXRlZCBmaWVsZHMgYXJlIG9wdGlvbmFsIGFuZCBtdXN0IGJlIGFw
cGxpY2FibGUgdG8gdGhlIElucHV0U291cmNlIHJlZmVyZW5jZWQgYnkgJ3NvdXJjZUlkJy4gSWYg
bm8gc3RhdGUtcmVsYXRlZCBmaWVsZHMgYXJlIHNwZWNpZmllZCwgdGhlIHN0YXRlIGlzIGFzc3Vt
ZWQgdG8gcmVtYWluIHRoZSBzYW1lIGFzIGluIHRoZSBwcmV2aW91cyBzdGVwIChpLmUuLCAnc3Vz
dGFpbmVkJykuIiwKKyAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogWworICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAic291cmNlSWQiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAi
VGhlIGlucHV0IHNvdXJjZSB3aG9zZSBzdGF0ZSBpcyBkZXNjcmliZWQgYnkgdGhpcyBvYmplY3Qu
IiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicHJlc3NlZENoYXJLZXkiLCAidHlwZSI6
ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiRm9yICdrZXlib2Fy
ZCcgaW5wdXQgc291cmNlcywgc3BlY2lmaWVzIGEgY2hhcmFjdGVyIGtleSB0aGF0IGhhcyAncHJl
c3NlZCcgc3RhdGUuIFVubWVudGlvbmVkIGNoYXJhY3RlciBrZXlzIGFyZSBhc3N1bWVkIHRvIGhh
dmUgYSAncmVsZWFzZWQnIHN0YXRlLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInBy
ZXNzZWRWaXJ0dWFsS2V5IiwgIiRyZWYiOiAiVmlydHVhbEtleSIsICJvcHRpb25hbCI6IHRydWUs
ICJkZXNjcmlwdGlvbiI6ICJGb3IgJ2tleWJvYXJkJyBpbnB1dCBzb3VyY2VzLCBzcGVjaWZpZXMg
YSB2aXJ0dWFsIGtleSB0aGF0IGhhcyBhICdwcmVzc2VkJyBzdGF0ZS4gVW5tZW50aW9uZWQgdmly
dHVhbCBrZXlzIGFyZSBhc3N1bWVkIHRvIGhhdmUgYSAncmVsZWFzZWQnIHN0YXRlLiIgfSwKKyAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogInByZXNzZWRCdXR0b24iLCAiJHJlZiI6ICJNb3VzZUJ1
dHRvbiIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJGb3IgJ21vdXNlJyBpbnB1
dCBzb3VyY2VzLCBzcGVjaWZpZXMgd2hpY2ggbW91c2UgYnV0dG9uIGhhcyBhICdwcmVzc2VkJyBz
dGF0ZS4gVW5tZW50aW9uZWQgbW91c2UgYnV0dG9ucyBhcmUgYXNzdW1lZCB0byBoYXZlIGEgJ3Jl
bGVhc2VkJyBzdGF0ZS4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJsb2NhdGlvbiIs
ICIkcmVmIjogIlBvaW50IiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIkZvciAn
bW91c2UnIG9yICd0b3VjaCcgaW5wdXQgc291cmNlcywgc3BlY2lmaWVzIGEgbG9jYXRpb24gaW4g
dmlldyBjb29yZGluYXRlcyB0byB3aGljaCB0aGUgaW5wdXQgc291cmNlIHNob3VsZCB0cmFuc2l0
aW9uLiBUcmFuc2l0aW9uaW5nIHRvIHRoaXMgc3RhdGUgbWF5IGludGVycG9sYXRlIGludGVtZWRp
YXRlIGlucHV0IHNvdXJjZSBzdGF0ZXMgdG8gYmV0dGVyIHNpbXVsYXRlIHJlYWwgdXNlciBtb3Zl
bWVudHMgYW5kIGdlc3R1cmVzLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImR1cmF0
aW9uIiwgInR5cGUiOiAiaW50ZWdlciIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6
ICJUaGUgbWluaW11bSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRoYXQgbXVzdCBlbGFwc2Ugd2hp
bGUgdGhlIHJlbGV2YW50IGlucHV0IHNvdXJjZSB0cmFuc2l0aW9ucyB0byB0aGlzIHN0YXRlLiIg
fQorICAgICAgICAgICAgXQogICAgICAgICB9CiAgICAgXSwKICAgICAiY29tbWFuZHMiOiBbCkBA
IC00MTMsNiArNDU0LDI0IEBACiAgICAgICAgICAgICBdLAogICAgICAgICAgICAgImFzeW5jIjog
dHJ1ZQogICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJwZXJmb3Jt
SW50ZXJhY3Rpb25TZXF1ZW5jZSIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUGVyZm9y
bSBtdWx0aXBsZSBzaW11bGF0ZWQgaW50ZXJhY3Rpb25zIG92ZXIgdGltZSB1c2luZyBhIGxpc3Qg
b2YgaW5wdXQgc291cmNlcyBhbmQgYSBsaXN0IG9mIHN0ZXBzLCB3aGVyZSBlYWNoIHN0ZXAgc3Bl
Y2lmaWVzIGEgc3RhdGUgZm9yIGVhY2ggaW5wdXQgc291cmNlIGF0IHRoZSB0aW1lIHRoYXQgc3Rl
cCBpcyBwZXJmb3JtZWQuIiwKKyAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAiaGFuZGxlIiwgIiRyZWYiOiAiQnJvd3NpbmdDb250ZXh0SGFuZGxl
IiwgImRlc2NyaXB0aW9uIjogIlRoZSBicm93c2luZyBjb250ZXh0IHRvIGJlIGludGVyYWN0ZWQg
d2l0aC4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJpbnB1dFNvdXJjZXMiLCAidHlw
ZSI6ICJhcnJheSIsICJpdGVtcyI6IHsgIiRyZWYiOiAiSW5wdXRTb3VyY2UiIH0sICJkZXNjcmlw
dGlvbiI6ICJBbGwgaW5wdXQgc291cmNlcyB0aGF0IGFyZSB1c2VkIHRvIHBlcmZvcm0gdGhpcyBp
bnRlcmFjdGlvbiBzZXF1ZW5jZS4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzdGVw
cyIsICJ0eXBlIjogImFycmF5IiwgIml0ZW1zIjogeyAiJHJlZiI6ICJJbnRlcmFjdGlvblN0ZXAi
IH0sICJkZXNjcmlwdGlvbiI6ICJBIGxpc3Qgb2Ygc3RlcHMgdGhhdCBhcmUgZXhlY3V0ZWQgaW4g
b3JkZXIuIiB9CisgICAgICAgICAgICBdLAorICAgICAgICAgICAgImFzeW5jIjogdHJ1ZQorICAg
ICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJjYW5jZWxJbnRlcmFjdGlv
blNlcXVlbmNlIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJDYW5jZWwgYW4gYWN0aXZl
IGludGVyYWN0aW9uIHNlcXVlbmNlIHRoYXQgaXMgY3VycmVudGx5IGluIHByb2dyZXNzLiIsCisg
ICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImhh
bmRsZSIsICIkcmVmIjogIkJyb3dzaW5nQ29udGV4dEhhbmRsZSIsICJkZXNjcmlwdGlvbiI6ICJU
aGUgYnJvd3NpbmcgY29udGV4dCB0byBiZSBpbnRlcmFjdGVkIHdpdGguIiB9CisgICAgICAgICAg
ICBdLAorICAgICAgICAgICAgImFzeW5jIjogdHJ1ZQorICAgICAgICB9LAogICAgICAgICB7CiAg
ICAgICAgICAgICAibmFtZSI6ICJ0YWtlU2NyZWVuc2hvdCIsCiAgICAgICAgICAgICAiZGVzY3Jp
cHRpb24iOiAiVGFrZSBhIHNjcmVlbnNob3Qgb2YgdGhlIGN1cnJlbnQgcGFnZSBvciBnaXZlbiBl
bGVtZW50IGluIGEgYnJvd3NpbmcgY29udGV4dC4iLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQXV0b21hdGlvbi9TaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9TaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5kOGQ0ODNiOWUzZgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vU2lt
dWxhdGVkSW5wdXREaXNwYXRjaGVyLmNwcApAQCAtMCwwICsxLDI2NCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIu
aCIKKworI2luY2x1ZGUgIkF1dG9tYXRpb25Qcm90b2NvbE9iamVjdHMuaCIKKyNpbmNsdWRlICJX
ZWJBdXRvbWF0aW9uU2Vzc2lvbi5oIgorI2luY2x1ZGUgIldlYkF1dG9tYXRpb25TZXNzaW9uTWFj
cm9zLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitTaW11bGF0ZWRJbnB1dEtleUZyYW1lOjpT
aW11bGF0ZWRJbnB1dEtleUZyYW1lKFZlY3RvcjxTdGF0ZUVudHJ5PiYmIGVudHJpZXMpCisgICAg
OiBzdGF0ZXMoV1RGTW92ZShlbnRyaWVzKSkKK3sKK30KKworU2Vjb25kcyBTaW11bGF0ZWRJbnB1
dEtleUZyYW1lOjptYXhpbXVtRHVyYXRpb24oKSBjb25zdAoreworICAgIFNlY29uZHMgcmVzdWx0
OworICAgIGZvciAoYXV0byYgZW50cnkgOiBzdGF0ZXMpCisgICAgICAgIHJlc3VsdCA9IHN0ZDo6
bWF4KHJlc3VsdCwgZW50cnkuc2Vjb25kLmR1cmF0aW9uLnZhbHVlX29yKFNlY29uZHMoMCkpKTsK
KyAgICAKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitTaW11bGF0ZWRJbnB1dEtleUZyYW1lIFNp
bXVsYXRlZElucHV0S2V5RnJhbWU6OmtleUZyYW1lRnJvbVN0YXRlT2ZJbnB1dFNvdXJjZXMoSGFz
aFNldDxSZWY8U2ltdWxhdGVkSW5wdXRTb3VyY2U+PiYgaW5wdXRTb3VyY2VzKQoreworICAgIC8v
IFRoZSBjbGllbnQgb2YgdGhpcyBjbGFzcyBpcyByZXF1aXJlZCB0byBpbnRlcm4gU2ltdWxhdGVk
SW5wdXRTb3VyY2UgaW5zdGFuY2VzIGlmIHRoZSBsYXN0IHN0YXRlCisgICAgLy8gZnJvbSB0aGUg
cHJldmlvdXMgY29tbWFuZCBzaG91bGQgYmUgdXNlZCBhcyB0aGUgaW5pdGFsIHN0YXRlIGZvciB0
aGUgbmV4dCBjb21tYW5kLiBUaGlzIGlzIHRoZQorICAgIC8vIGNhc2UgZm9yIFBlcmZvcm0gQWN0
aW9ucyBhbmQgUmVsZWFzZSBBY3Rpb25zLCBidXQgbm90IEVsZW1lbnQgQ2xpY2sgb3IgRWxlbWVu
dCBTZW5kIEtleXMuCisgICAgVmVjdG9yPFNpbXVsYXRlZElucHV0S2V5RnJhbWU6OlN0YXRlRW50
cnk+IGVudHJpZXM7CisgICAgZW50cmllcy5yZXNlcnZlQ2FwYWNpdHkoaW5wdXRTb3VyY2VzLnNp
emUoKSk7CisKKyAgICBmb3IgKGF1dG8mIGlucHV0U291cmNlIDogaW5wdXRTb3VyY2VzKQorICAg
ICAgICBlbnRyaWVzLnVuY2hlY2tlZEFwcGVuZChzdGQ6OnBhaXI8U2ltdWxhdGVkSW5wdXRTb3Vy
Y2UmLCBTaW11bGF0ZWRJbnB1dFNvdXJjZVN0YXRlPiB7IGlucHV0U291cmNlLmdldCgpLCBpbnB1
dFNvdXJjZS0+c3RhdGUgfSk7CisKKyAgICByZXR1cm4gU2ltdWxhdGVkSW5wdXRLZXlGcmFtZShX
VEZNb3ZlKGVudHJpZXMpKTsKK30KKworU2ltdWxhdGVkSW5wdXRLZXlGcmFtZSBTaW11bGF0ZWRJ
bnB1dEtleUZyYW1lOjprZXlGcmFtZVRvUmVzZXRJbnB1dFNvdXJjZXMoSGFzaFNldDxSZWY8U2lt
dWxhdGVkSW5wdXRTb3VyY2U+PiYgaW5wdXRTb3VyY2VzKQoreworICAgIFZlY3RvcjxTaW11bGF0
ZWRJbnB1dEtleUZyYW1lOjpTdGF0ZUVudHJ5PiBlbnRyaWVzOworICAgIGVudHJpZXMucmVzZXJ2
ZUNhcGFjaXR5KGlucHV0U291cmNlcy5zaXplKCkpOworCisgICAgZm9yIChhdXRvJiBpbnB1dFNv
dXJjZSA6IGlucHV0U291cmNlcykKKyAgICAgICAgZW50cmllcy51bmNoZWNrZWRBcHBlbmQoc3Rk
OjpwYWlyPFNpbXVsYXRlZElucHV0U291cmNlJiwgU2ltdWxhdGVkSW5wdXRTb3VyY2VTdGF0ZT4g
eyBpbnB1dFNvdXJjZS5nZXQoKSwgU2ltdWxhdGVkSW5wdXRTb3VyY2VTdGF0ZTo6ZW1wdHlTdGF0
ZSgpIH0pOworCisgICAgcmV0dXJuIFNpbXVsYXRlZElucHV0S2V5RnJhbWUoV1RGTW92ZShlbnRy
aWVzKSk7Cit9CisgICAgCitTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OlNpbXVsYXRlZElucHV0
RGlzcGF0Y2hlcihXZWJQYWdlUHJveHkmIHBhZ2UsIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6
Q2xpZW50JiBjbGllbnQpCisgICAgOiBtX3BhZ2UocGFnZSkKKyAgICAsIG1fY2xpZW50KGNsaWVu
dCkKKyAgICAsIG1fa2V5RnJhbWVUcmFuc2l0aW9uRHVyYXRpb25UaW1lcihSdW5Mb29wOjpjdXJy
ZW50KCksIHRoaXMsICZTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OmtleUZyYW1lVHJhbnNpdGlv
bkR1cmF0aW9uVGltZXJGaXJlZCkKK3sKK30KKworU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjp+
U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyKCkKK3sKKyAgICBBU1NFUlQoIW1fcnVuQ29tcGxldGlv
bkhhbmRsZXIpOworICAgIEFTU0VSVCghbV9rZXlGcmFtZVRyYW5zaXRpb25EdXJhdGlvblRpbWVy
LmlzQWN0aXZlKCkpOworfQorCitib29sIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6aXNBY3Rp
dmUoKSBjb25zdAoreworICAgIHJldHVybiAhIW1fcnVuQ29tcGxldGlvbkhhbmRsZXI7Cit9CisK
K3ZvaWQgU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjprZXlGcmFtZVRyYW5zaXRpb25EdXJhdGlv
blRpbWVyRmlyZWQoKQoreworICAgIEFTU0VSVChtX2tleUZyYW1lVHJhbnNpdGlvbkNvbXBsZXRp
b25IYW5kbGVyKTsKKworICAgIG1fa2V5RnJhbWVUcmFuc2l0aW9uRHVyYXRpb25UaW1lci5zdG9w
KCk7CisKKyAgICBpZiAoaXNLZXlGcmFtZVRyYW5zaXRpb25Db21wbGV0ZSgpKQorICAgICAgICBt
X2tleUZyYW1lVHJhbnNpdGlvbkNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7Cit9CisK
K2Jvb2wgU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjppc0tleUZyYW1lVHJhbnNpdGlvbkNvbXBs
ZXRlKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9rZXlmcmFtZUluZGV4IDwgbV9rZXlmcmFtZXMu
c2l6ZSgpKTsKKworICAgIGlmIChtX2lucHV0U291cmNlU3RhdGVJbmRleCA8IG1fa2V5ZnJhbWVz
W21fa2V5ZnJhbWVJbmRleF0uc3RhdGVzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgaWYgKG1fa2V5RnJhbWVUcmFuc2l0aW9uRHVyYXRpb25UaW1lci5pc0FjdGl2ZSgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBTaW11
bGF0ZWRJbnB1dERpc3BhdGNoZXI6OnRyYW5zaXRpb25Ub05leHRLZXlGcmFtZSgpCit7CisgICAg
KyttX2tleWZyYW1lSW5kZXg7CisgICAgaWYgKG1fa2V5ZnJhbWVJbmRleCA9PSBtX2tleWZyYW1l
cy5zaXplKCkpIHsKKyAgICAgICAgZmluaXNoRGlzcGF0Y2hpbmcoc3RkOjpudWxsb3B0KTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHRyYW5zaXRpb25CZXR3ZWVuS2V5RnJhbWVzKG1f
a2V5ZnJhbWVzW21fa2V5ZnJhbWVJbmRleCAtIDFdLCBtX2tleWZyYW1lc1ttX2tleWZyYW1lSW5k
ZXhdLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXShzdGQ6Om9wdGlvbmFs
PEF1dG9tYXRpb25Db21tYW5kRXJyb3I+IGVycm9yKSB7CisgICAgICAgIGlmIChlcnJvcikgewor
ICAgICAgICAgICAgZmluaXNoRGlzcGF0Y2hpbmcoZXJyb3IpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgdHJhbnNpdGlvblRvTmV4dEtleUZyYW1lKCk7CisgICAg
fSk7Cit9CisKK3ZvaWQgU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjp0cmFuc2l0aW9uVG9OZXh0
SW5wdXRTb3VyY2VTdGF0ZSgpCit7CisgICAgaWYgKGlzS2V5RnJhbWVUcmFuc2l0aW9uQ29tcGxl
dGUoKSkgeworICAgICAgICBhdXRvIGZpbmlzaCA9IFdURk1vdmUobV9rZXlGcmFtZVRyYW5zaXRp
b25Db21wbGV0aW9uSGFuZGxlcik7CisgICAgICAgIGZpbmlzaChzdGQ6Om51bGxvcHQpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gSW4gdGhpcyBjYXNlLCB0cmFuc2l0aW9ucyBh
cmUgZG9uZSBidXQgd2UgbmVlZCB0byB3YWl0IGZvciB0aGUgdGljayB0aW1lci4KKyAgICBpZiAo
bV9pbnB1dFNvdXJjZVN0YXRlSW5kZXggPT0gbV9rZXlmcmFtZXNbbV9rZXlmcmFtZUluZGV4XS5z
dGF0ZXMuc2l6ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvJiBuZXh0S2V5RnJhbWUg
PSBtX2tleWZyYW1lc1ttX2tleWZyYW1lSW5kZXhdOworICAgIGF1dG8mIHBvc3RTdGF0ZUVudHJ5
ID0gbmV4dEtleUZyYW1lLnN0YXRlc1ttX2lucHV0U291cmNlU3RhdGVJbmRleF07CisgICAgU2lt
dWxhdGVkSW5wdXRTb3VyY2UmIGlucHV0U291cmNlID0gcG9zdFN0YXRlRW50cnkuZmlyc3Q7CisK
KyAgICB0cmFuc2l0aW9uSW5wdXRTb3VyY2VUb1N0YXRlKGlucHV0U291cmNlLCBwb3N0U3RhdGVF
bnRyeS5zZWNvbmQsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKHN0ZDo6
b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4gZXJyb3IpIHsKKyAgICAgICAgaWYgKGVy
cm9yKSB7CisgICAgICAgICAgICBhdXRvIGZpbmlzaCA9IFdURk1vdmUobV9rZXlGcmFtZVRyYW5z
aXRpb25Db21wbGV0aW9uSGFuZGxlcik7CisgICAgICAgICAgICBmaW5pc2goZXJyb3IpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLy8gUGVyZm9ybSBzdGF0ZSB0
cmFuc2l0aW9ucyBpbiB0aGUgb3JkZXIgc3BlY2lmaWVkIGJ5IHRoZSBjdXJyZW50S2V5RnJhbWUu
CisgICAgICAgICsrbV9pbnB1dFNvdXJjZVN0YXRlSW5kZXg7CisKKyAgICAgICAgdHJhbnNpdGlv
blRvTmV4dElucHV0U291cmNlU3RhdGUoKTsKKyAgICB9KTsKK30KKwordm9pZCBTaW11bGF0ZWRJ
bnB1dERpc3BhdGNoZXI6OnRyYW5zaXRpb25CZXR3ZWVuS2V5RnJhbWVzKGNvbnN0IFNpbXVsYXRl
ZElucHV0S2V5RnJhbWUmIGEsIGNvbnN0IFNpbXVsYXRlZElucHV0S2V5RnJhbWUmIGIsIEF1dG9t
YXRpb25Db21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIG1faW5w
dXRTb3VyY2VTdGF0ZUluZGV4ID0gMDsKKworICAgIG1fa2V5RnJhbWVUcmFuc2l0aW9uQ29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICBtX2tleUZyYW1l
VHJhbnNpdGlvbkR1cmF0aW9uVGltZXIuc3RhcnRPbmVTaG90KGIubWF4aW11bUR1cmF0aW9uKCkp
OworCisgICAgdHJhbnNpdGlvblRvTmV4dElucHV0U291cmNlU3RhdGUoKTsKK30KKwordm9pZCBT
aW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OnRyYW5zaXRpb25JbnB1dFNvdXJjZVRvU3RhdGUoU2lt
dWxhdGVkSW5wdXRTb3VyY2UmIGlucHV0U291cmNlLCBjb25zdCBTaW11bGF0ZWRJbnB1dFNvdXJj
ZVN0YXRlJiBuZXdTdGF0ZSwgQXV0b21hdGlvbkNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlv
bkhhbmRsZXIpCit7CisgICAgLy8gTWFrZSBjYXNlcyBhbmQgY29uZGl0aW9uYWxzIG1vcmUgcmVh
ZGFibGUgYnkgYWxpYXNpbmcgcHJlL3Bvc3Qgc3RhdGVzIGFzICdhJyBhbmQgJ2InLgorICAgIFNp
bXVsYXRlZElucHV0U291cmNlU3RhdGUgYSA9IGlucHV0U291cmNlLnN0YXRlOworICAgIFNpbXVs
YXRlZElucHV0U291cmNlU3RhdGUgYiA9IG5ld1N0YXRlOworCisgICAgQXV0b21hdGlvbkNvbXBs
ZXRpb25IYW5kbGVyIGV2ZW50RGlzcGF0Y2hGaW5pc2hlZCA9IFsmaW5wdXRTb3VyY2UsICZuZXdT
dGF0ZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oc3Rk
OjpvcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPiBlcnJvcikgeworICAgICAgICBpZiAo
ZXJyb3IpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGVycm9yKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlucHV0U291cmNlLnN0YXRlID0gbmV3
U3RhdGU7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7CisgICAgfTsK
KworICAgIHN3aXRjaCAoaW5wdXRTb3VyY2UudHlwZSkgeworICAgIGNhc2UgU2ltdWxhdGVkSW5w
dXRTb3VyY2U6OlR5cGU6Ok51bGw6CisgICAgICAgIC8vIFRoZSBtYXhpbXVtIGR1cmF0aW9uIGlz
IGhhbmRsZWQgYXQgdGhlIGtleWZyYW1lIGxldmVsIGJ5IG1fa2V5RnJhbWVUcmFuc2l0aW9uRHVy
YXRpb25UaW1lci4KKyAgICAgICAgZXZlbnREaXNwYXRjaEZpbmlzaGVkKHN0ZDo6bnVsbG9wdCk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2ltdWxhdGVkSW5wdXRTb3VyY2U6OlR5cGU6Ok1v
dXNlOiB7CisgICAgICAgIGlmICghYS5wcmVzc2VkTW91c2VCdXR0b24gJiYgYi5wcmVzc2VkTW91
c2VCdXR0b24pCisgICAgICAgICAgICBtX2NsaWVudC5zaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24o
bV9wYWdlLCBNb3VzZUludGVyYWN0aW9uOjpEb3duLCBiLnByZXNzZWRNb3VzZUJ1dHRvbi52YWx1
ZSgpLCBiLmxvY2F0aW9uLnZhbHVlKCksIFdURk1vdmUoZXZlbnREaXNwYXRjaEZpbmlzaGVkKSk7
CisgICAgICAgIGVsc2UgaWYgKGEucHJlc3NlZE1vdXNlQnV0dG9uICYmICFiLnByZXNzZWRNb3Vz
ZUJ1dHRvbikKKyAgICAgICAgICAgIG1fY2xpZW50LnNpbXVsYXRlTW91c2VJbnRlcmFjdGlvbiht
X3BhZ2UsIE1vdXNlSW50ZXJhY3Rpb246OlVwLCBhLnByZXNzZWRNb3VzZUJ1dHRvbi52YWx1ZSgp
LCBiLmxvY2F0aW9uLnZhbHVlKCksIFdURk1vdmUoZXZlbnREaXNwYXRjaEZpbmlzaGVkKSk7Cisg
ICAgICAgIGVsc2UgaWYgKGEubG9jYXRpb24gIT0gYi5sb2NhdGlvbikKKyAgICAgICAgICAgIG1f
Y2xpZW50LnNpbXVsYXRlTW91c2VJbnRlcmFjdGlvbihtX3BhZ2UsIE1vdXNlSW50ZXJhY3Rpb246
Ok1vdmUsIGIucHJlc3NlZE1vdXNlQnV0dG9uLnZhbHVlX29yKE1vdXNlQnV0dG9uOjpOb0J1dHRv
biksIGIubG9jYXRpb24udmFsdWUoKSwgV1RGTW92ZShldmVudERpc3BhdGNoRmluaXNoZWQpKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgZXZlbnREaXNwYXRjaEZpbmlzaGVkKHN0ZDo6bnVs
bG9wdCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFNpbXVsYXRlZElucHV0U291
cmNlOjpUeXBlOjpLZXlib2FyZDoKKyAgICAgICAgaWYgKCghYS5wcmVzc2VkQ2hhcktleSAmJiBi
LnByZXNzZWRDaGFyS2V5KSB8fCAoIWEucHJlc3NlZFZpcnR1YWxLZXkgJiYgYi5wcmVzc2VkVmly
dHVhbEtleSkpCisgICAgICAgICAgICBtX2NsaWVudC5zaW11bGF0ZUtleWJvYXJkSW50ZXJhY3Rp
b24obV9wYWdlLCBLZXlib2FyZEludGVyYWN0aW9uOjpLZXlQcmVzcywgYi5wcmVzc2VkVmlydHVh
bEtleSwgYi5wcmVzc2VkQ2hhcktleSwgV1RGTW92ZShldmVudERpc3BhdGNoRmluaXNoZWQpKTsK
KyAgICAgICAgZWxzZSBpZiAoKGEucHJlc3NlZENoYXJLZXkgJiYgIWIucHJlc3NlZENoYXJLZXkp
IHx8IChhLnByZXNzZWRWaXJ0dWFsS2V5ICYmICFiLnByZXNzZWRWaXJ0dWFsS2V5KSkKKyAgICAg
ICAgICAgIG1fY2xpZW50LnNpbXVsYXRlS2V5Ym9hcmRJbnRlcmFjdGlvbihtX3BhZ2UsIEtleWJv
YXJkSW50ZXJhY3Rpb246OktleVJlbGVhc2UsIGEucHJlc3NlZFZpcnR1YWxLZXksIGEucHJlc3Nl
ZENoYXJLZXksIFdURk1vdmUoZXZlbnREaXNwYXRjaEZpbmlzaGVkKSk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIGV2ZW50RGlzcGF0Y2hGaW5pc2hlZChzdGQ6Om51bGxvcHQpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFNpbXVsYXRlZElucHV0U291cmNlOjpUeXBlOjpUb3VjaDoKKyAg
ICAgICAgLy8gTm90IHN1cHBvcnRlZCB5ZXQuCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICBldmVudERpc3BhdGNoRmluaXNoZWQoQVVUT01BVElPTl9DT01NQU5EX0VSUk9S
X1dJVEhfTkFNRShOb3RJbXBsZW1lbnRlZCkpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisK
K3ZvaWQgU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjpydW4oVmVjdG9yPFNpbXVsYXRlZElucHV0
S2V5RnJhbWU+JiYga2V5RnJhbWVzLCBIYXNoU2V0PFJlZjxTaW11bGF0ZWRJbnB1dFNvdXJjZT4+
JiBpbnB1dFNvdXJjZXMsIEF1dG9tYXRpb25Db21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25I
YW5kbGVyKQoreworICAgIEFTU0VSVCghaXNBY3RpdmUoKSk7CisgICAgaWYgKGlzQWN0aXZlKCkp
IHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQVVUT01BVElPTl9DT01NQU5EX0VSUk9SX1dJ
VEhfTkFNRShJbnRlcm5hbEVycm9yKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBt
X3J1bkNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcik7CisgICAg
Zm9yIChjb25zdCBSZWY8U2ltdWxhdGVkSW5wdXRTb3VyY2U+JiBpbnB1dFNvdXJjZSA6IGlucHV0
U291cmNlcykKKyAgICAgICAgbV9pbnB1dFNvdXJjZXMuYWRkKGlucHV0U291cmNlLmNvcHlSZWYo
KSk7CisKKyAgICBtX2tleWZyYW1lcy5yZXNlcnZlQ2FwYWNpdHkoa2V5RnJhbWVzLnNpemUoKSAr
IDEpOworICAgIG1fa2V5ZnJhbWVzLmFwcGVuZChTaW11bGF0ZWRJbnB1dEtleUZyYW1lOjprZXlG
cmFtZUZyb21TdGF0ZU9mSW5wdXRTb3VyY2VzKG1faW5wdXRTb3VyY2VzKSk7CisgICAgbV9rZXlm
cmFtZXMuYXBwZW5kVmVjdG9yKFdURk1vdmUoa2V5RnJhbWVzKSk7CisKKyAgICB0cmFuc2l0aW9u
VG9OZXh0S2V5RnJhbWUoKTsKK30KKwordm9pZCBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OmNh
bmNlbCgpCit7CisgICAgLy8gSWYgd2Ugd2VyZSB3YWl0aW5nIGZvciBtX2NsaWVudCB0byBmaW5p
c2ggYW4gaW50ZXJhY3Rpb24gYW5kIHRoZSBpbnRlcmFjdGlvbiBoYWQgYW4gZXJyb3IsCisgICAg
Ly8gdGhlbiB0aGUgcmVzdCBvZiB0aGUgYXN5bmMgY2hhaW4gd2lsbCBoYXZlIGJlZW4gdG9ybiBk
b3duLiBJZiB3ZSBhcmUganVzdCB3YWl0aW5nIG9uIGEKKyAgICAvLyBkaXNwYXRjaCB0aW1lciwg
dGhlbiB0aGlzIHdpbGwgY2FuY2VsIHRoZSB0aW1lciBhbmQgY2xlYXIKKworICAgIGlmIChpc0Fj
dGl2ZSgpKQorICAgICAgICBmaW5pc2hEaXNwYXRjaGluZyhBVVRPTUFUSU9OX0NPTU1BTkRfRVJS
T1JfV0lUSF9OQU1FKEludGVybmFsRXJyb3IpKTsKK30KKwordm9pZCBTaW11bGF0ZWRJbnB1dERp
c3BhdGNoZXI6OmZpbmlzaERpc3BhdGNoaW5nKHN0ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1h
bmRFcnJvcj4gZXJyb3IpCit7CisgICAgaWYgKG1fa2V5RnJhbWVUcmFuc2l0aW9uRHVyYXRpb25U
aW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX2tleUZyYW1lVHJhbnNpdGlvbkR1cmF0aW9uVGlt
ZXIuc3RvcCgpOworCisgICAgYXV0byBmaW5pc2ggPSBXVEZNb3ZlKG1fcnVuQ29tcGxldGlvbkhh
bmRsZXIpOworICAgIG1fa2V5ZnJhbWVzLmNsZWFyKCk7CisgICAgbV9pbnB1dFNvdXJjZXMuY2xl
YXIoKTsKKyAgICBtX2tleWZyYW1lSW5kZXggPSAwOworICAgIG1faW5wdXRTb3VyY2VTdGF0ZUlu
ZGV4ID0gMDsKKworICAgIGZpbmlzaChlcnJvcik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYmtp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9TaW11bGF0
ZWRJbnB1dERpc3BhdGNoZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24v
U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAuLjRmYzQ2MmFkNTUxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQXV0b21hdGlvbi9TaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuaApAQCAtMCwwICsx
LDE2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiV2ViRXZlbnQu
aCIKKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvSGFz
aFNldC5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvU2Vjb25kcy5o
PgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KKworbmFtZXNwYWNlIEluc3BlY3RvciB7IG5hbWVzcGFjZSBQcm90b2NvbCB7IG5hbWVzcGFj
ZSBBdXRvbWF0aW9uIHsKK2VudW0gY2xhc3MgRXJyb3JNZXNzYWdlOworZW51bSBjbGFzcyBLZXli
b2FyZEludGVyYWN0aW9uVHlwZTsKK2VudW0gY2xhc3MgTW91c2VJbnRlcmFjdGlvbjsKK2VudW0g
Y2xhc3MgVmlydHVhbEtleTsKK30gfSB9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBB
dXRvbWF0aW9uQ29tbWFuZEVycm9yOwordXNpbmcgQXV0b21hdGlvbkNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNv
bW1hbmRFcnJvcj4pPjsKKworY2xhc3MgV2ViUGFnZVByb3h5OworCit1c2luZyBLZXlib2FyZElu
dGVyYWN0aW9uID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6S2V5Ym9hcmRJbnRl
cmFjdGlvblR5cGU7Cit1c2luZyBWaXJ0dWFsS2V5ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbjo6VmlydHVhbEtleTsKK3VzaW5nIENoYXJLZXkgPSBjaGFyOyAvLyBGb3IgV2ViRHJp
dmVyLCB0aGlzIG9ubHkgbmVlZHMgdG8gc3VwcG9ydCBBU0NJSSBjaGFyYWN0ZXJzIG9uIDEwMi1r
ZXkga2V5Ym9hcmQuCit1c2luZyBNb3VzZUJ1dHRvbiA9IFdlYk1vdXNlRXZlbnQ6OkJ1dHRvbjsK
K3VzaW5nIE1vdXNlSW50ZXJhY3Rpb24gPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
OjpNb3VzZUludGVyYWN0aW9uOworCitzdHJ1Y3QgU2ltdWxhdGVkSW5wdXRTb3VyY2VTdGF0ZSB7
CisgICAgc3RkOjpvcHRpb25hbDxDaGFyS2V5PiBwcmVzc2VkQ2hhcktleTsKKyAgICBzdGQ6Om9w
dGlvbmFsPFZpcnR1YWxLZXk+IHByZXNzZWRWaXJ0dWFsS2V5OworICAgIHN0ZDo6b3B0aW9uYWw8
TW91c2VCdXR0b24+IHByZXNzZWRNb3VzZUJ1dHRvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OkludFBvaW50PiBsb2NhdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IGR1cmF0
aW9uOworCisgICAgc3RhdGljIFNpbXVsYXRlZElucHV0U291cmNlU3RhdGUgZW1wdHlTdGF0ZSgp
IHsgcmV0dXJuIFNpbXVsYXRlZElucHV0U291cmNlU3RhdGUoKTsgfQorfTsKKworc3RydWN0IFNp
bXVsYXRlZElucHV0U291cmNlIDogcHVibGljIFJlZkNvdW50ZWQ8U2ltdWxhdGVkSW5wdXRTb3Vy
Y2U+IHsKK3B1YmxpYzoKKyAgICBlbnVtIGNsYXNzIFR5cGUgeworICAgICAgICBOdWxsLCAvLyBV
c2VkIHRvIGluZHVjZSBhIG1pbmltdW0gZHVyYXRpb24uCisgICAgICAgIEtleWJvYXJkLAorICAg
ICAgICBNb3VzZSwKKyAgICAgICAgVG91Y2gsCisgICAgfTsKKworICAgIFR5cGUgdHlwZTsKKwor
ICAgIC8vIFRoZSBsYXN0IHN0YXRlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGlucHV0IHNvdXJjZS4K
KyAgICBTaW11bGF0ZWRJbnB1dFNvdXJjZVN0YXRlIHN0YXRlOworCisgICAgc3RhdGljIFJlZjxT
aW11bGF0ZWRJbnB1dFNvdXJjZT4gY3JlYXRlKFR5cGUgdHlwZSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFNpbXVsYXRlZElucHV0U291cmNlKHR5cGUsIFNpbXVsYXRlZElu
cHV0U291cmNlU3RhdGU6OmVtcHR5U3RhdGUoKSkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBT
aW11bGF0ZWRJbnB1dFNvdXJjZShUeXBlIHR5cGUsIFNpbXVsYXRlZElucHV0U291cmNlU3RhdGUg
c3RhdGUpCisgICAgICAgIDogdHlwZSh0eXBlKQorICAgICAgICAsIHN0YXRlKHN0YXRlKQorICAg
IHsgfQorfTsKKworc3RydWN0IFNpbXVsYXRlZElucHV0S2V5RnJhbWUgeworcHVibGljOgorICAg
IHVzaW5nIFN0YXRlRW50cnkgPSBzdGQ6OnBhaXI8U2ltdWxhdGVkSW5wdXRTb3VyY2UmLCBTaW11
bGF0ZWRJbnB1dFNvdXJjZVN0YXRlPjsKKworICAgIGV4cGxpY2l0IFNpbXVsYXRlZElucHV0S2V5
RnJhbWUoVmVjdG9yPFN0YXRlRW50cnk+JiYpOworICAgIFNlY29uZHMgbWF4aW11bUR1cmF0aW9u
KCkgY29uc3Q7CisKKyAgICBzdGF0aWMgU2ltdWxhdGVkSW5wdXRLZXlGcmFtZSBrZXlGcmFtZUZy
b21TdGF0ZU9mSW5wdXRTb3VyY2VzKEhhc2hTZXQ8UmVmPFNpbXVsYXRlZElucHV0U291cmNlPj4m
KTsKKyAgICBzdGF0aWMgU2ltdWxhdGVkSW5wdXRLZXlGcmFtZSBrZXlGcmFtZVRvUmVzZXRJbnB1
dFNvdXJjZXMoSGFzaFNldDxSZWY8U2ltdWxhdGVkSW5wdXRTb3VyY2U+PiYpOworCisgICAgVmVj
dG9yPFN0YXRlRW50cnk+IHN0YXRlczsKK307CisKK2NsYXNzIFNpbXVsYXRlZElucHV0RGlzcGF0
Y2hlciA6IHB1YmxpYyBSZWZDb3VudGVkPFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcj4geworICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcik7CitwdWJsaWM6
CisgICAgY2xhc3MgQ2xpZW50IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgfkNsaWVu
dCgpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgc2ltdWxhdGVNb3VzZUludGVyYWN0aW9uKFdl
YlBhZ2VQcm94eSYsIE1vdXNlSW50ZXJhY3Rpb24sIFdlYk1vdXNlRXZlbnQ6OkJ1dHRvbiwgY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmIGxvY2F0aW9uSW5WaWV3LCBBdXRvbWF0aW9uQ29tcGxldGlv
bkhhbmRsZXImJikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgc2ltdWxhdGVLZXlib2FyZElu
dGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYsIEtleWJvYXJkSW50ZXJhY3Rpb24sIHN0ZDo6b3B0aW9u
YWw8VmlydHVhbEtleT4sIHN0ZDo6b3B0aW9uYWw8Q2hhcktleT4sIEF1dG9tYXRpb25Db21wbGV0
aW9uSGFuZGxlciYmKSA9IDA7CisgICAgfTsKKworICAgIHN0YXRpYyBSZWY8U2ltdWxhdGVkSW5w
dXREaXNwYXRjaGVyPiBjcmVhdGUoV2ViUGFnZVByb3h5JiBwYWdlLCBTaW11bGF0ZWRJbnB1dERp
c3BhdGNoZXI6OkNsaWVudCYgY2xpZW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyKHBhZ2UsIGNsaWVudCkpOworICAgIH0KKwor
ICAgIH5TaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIoKTsKKworICAgIHZvaWQgcnVuKFZlY3RvcjxT
aW11bGF0ZWRJbnB1dEtleUZyYW1lPiYmIGtleUZyYW1lcywgSGFzaFNldDxSZWY8U2ltdWxhdGVk
SW5wdXRTb3VyY2U+PiYgaW5wdXRTb3VyY2VzLCBBdXRvbWF0aW9uQ29tcGxldGlvbkhhbmRsZXIm
Jik7CisgICAgdm9pZCBjYW5jZWwoKTsKKworICAgIGJvb2wgaXNBY3RpdmUoKSBjb25zdDsKKwor
cHJpdmF0ZToKKyAgICBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIoV2ViUGFnZVByb3h5JiwgU2lt
dWxhdGVkSW5wdXREaXNwYXRjaGVyOjpDbGllbnQmKTsKKworICAgIHZvaWQgdHJhbnNpdGlvblRv
TmV4dEtleUZyYW1lKCk7CisgICAgdm9pZCB0cmFuc2l0aW9uQmV0d2VlbktleUZyYW1lcyhjb25z
dCBTaW11bGF0ZWRJbnB1dEtleUZyYW1lJiwgY29uc3QgU2ltdWxhdGVkSW5wdXRLZXlGcmFtZSYs
IEF1dG9tYXRpb25Db21wbGV0aW9uSGFuZGxlciYmKTsKKworICAgIHZvaWQgdHJhbnNpdGlvblRv
TmV4dElucHV0U291cmNlU3RhdGUoKTsKKyAgICB2b2lkIHRyYW5zaXRpb25JbnB1dFNvdXJjZVRv
U3RhdGUoU2ltdWxhdGVkSW5wdXRTb3VyY2UmLCBjb25zdCBTaW11bGF0ZWRJbnB1dFNvdXJjZVN0
YXRlJiBuZXdTdGF0ZSwgQXV0b21hdGlvbkNvbXBsZXRpb25IYW5kbGVyJiYpOworICAgIHZvaWQg
ZmluaXNoRGlzcGF0Y2hpbmcoc3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPik7
CisKKyAgICB2b2lkIGtleUZyYW1lVHJhbnNpdGlvbkR1cmF0aW9uVGltZXJGaXJlZCgpOworICAg
IGJvb2wgaXNLZXlGcmFtZVRyYW5zaXRpb25Db21wbGV0ZSgpIGNvbnN0OworCisgICAgV2ViUGFn
ZVByb3h5JiBtX3BhZ2U7CisgICAgU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjpDbGllbnQmIG1f
Y2xpZW50OworCisgICAgQXV0b21hdGlvbkNvbXBsZXRpb25IYW5kbGVyIG1fcnVuQ29tcGxldGlv
bkhhbmRsZXI7CisgICAgQXV0b21hdGlvbkNvbXBsZXRpb25IYW5kbGVyIG1fa2V5RnJhbWVUcmFu
c2l0aW9uQ29tcGxldGlvbkhhbmRsZXI7CisgICAgUnVuTG9vcDo6VGltZXI8U2ltdWxhdGVkSW5w
dXREaXNwYXRjaGVyPiBtX2tleUZyYW1lVHJhbnNpdGlvbkR1cmF0aW9uVGltZXI7CisKKyAgICBW
ZWN0b3I8U2ltdWxhdGVkSW5wdXRLZXlGcmFtZT4gbV9rZXlmcmFtZXM7CisgICAgSGFzaFNldDxS
ZWY8U2ltdWxhdGVkSW5wdXRTb3VyY2U+PiBtX2lucHV0U291cmNlczsKKworICAgIC8vIFRoZSBw
b3NpdGlvbiB3aXRoaW4gbV9rZXlmcmFtZXMuCisgICAgdW5zaWduZWQgbV9rZXlmcmFtZUluZGV4
IHsgMCB9OworCisgICAgLy8gVGhlIHBvc2l0aW9uIHdpdGhpbiB0aGUgaW5wdXQgc291cmNlIHN0
YXRlIHZlY3RvciBhdCBtX2tleWZyYW1lc1ttX2tleWZyYW1lSW5kZXhdLgorICAgIC8vIEV2ZW50
cyB0aGF0IHJlZmxlY3QgaW5wdXQgc291cmNlIHN0YXRlIHRyYW5zaXRpb25zIGFyZSBkaXNwYXRj
aGVkIHNlcmlhbGx5IGJhc2VkIG9uIHRoaXMgb3JkZXIuCisgICAgdW5zaWduZWQgbV9pbnB1dFNv
dXJjZVN0YXRlSW5kZXggeyAwIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNl
c3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0
aW9uU2Vzc2lvbi5jcHAKaW5kZXggZjViN2QzNzE4MjUuLjJhM2FmZjIyNDY2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRp
b25TZXNzaW9uLmNwcApAQCAtNzYsNiArNzYsMTAgQEAgV2ViQXV0b21hdGlvblNlc3Npb246Oldl
YkF1dG9tYXRpb25TZXNzaW9uKCkKICAgICAsIG1fZG9tYWluTm90aWZpZXIoc3RkOjptYWtlX3Vu
aXF1ZTxBdXRvbWF0aW9uRnJvbnRlbmREaXNwYXRjaGVyPihtX2Zyb250ZW5kUm91dGVyKSkKICAg
ICAsIG1fbG9hZFRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJldlYkF1dG9tYXRpb25TZXNz
aW9uOjpsb2FkVGltZXJGaXJlZCkKIHsKKyAgICAvLyBTZXQgdXAgY2Fub25pY2FsIGlucHV0IHNv
dXJjZXMgdG8gYmUgdXNlZCBmb3IgJ3BlcmZvcm1JbnRlcmFjdGlvblNlcXVlbmNlJyBhbmQgJ2Nh
bmNlbEludGVyYWN0aW9uU2VxdWVuY2UnLgorICAgIG1faW5wdXRTb3VyY2VzLmFkZChTaW11bGF0
ZWRJbnB1dFNvdXJjZTo6Y3JlYXRlKFNpbXVsYXRlZElucHV0U291cmNlOjpUeXBlOjpNb3VzZSkp
OworICAgIG1faW5wdXRTb3VyY2VzLmFkZChTaW11bGF0ZWRJbnB1dFNvdXJjZTo6Y3JlYXRlKFNp
bXVsYXRlZElucHV0U291cmNlOjpUeXBlOjpLZXlib2FyZCkpOworICAgIG1faW5wdXRTb3VyY2Vz
LmFkZChTaW11bGF0ZWRJbnB1dFNvdXJjZTo6Y3JlYXRlKFNpbXVsYXRlZElucHV0U291cmNlOjpU
eXBlOjpOdWxsKSk7CiB9CiAKIFdlYkF1dG9tYXRpb25TZXNzaW9uOjp+V2ViQXV0b21hdGlvblNl
c3Npb24oKQpAQCAtNzIzLDI4ICs3MjcsMzIgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6
aW5zcGVjdG9yRnJvbnRlbmRMb2FkZWQoY29uc3QgV2ViUGFnZVByb3h5JiBwYWdlKQogCiB2b2lk
IFdlYkF1dG9tYXRpb25TZXNzaW9uOjptb3VzZUV2ZW50c0ZsdXNoZWRGb3JQYWdlKGNvbnN0IFdl
YlBhZ2VQcm94eSYgcGFnZSkKIHsKLSAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1fcGVuZGluZ01v
dXNlRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2UudGFrZShwYWdlLnBhZ2VJRCgpKSkgewot
ICAgICAgICBpZiAobV9wZW5kaW5nTW91c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS5p
c0VtcHR5KCkpCi0gICAgICAgICAgICBtX3NpbXVsYXRpbmdVc2VySW50ZXJhY3Rpb24gPSBmYWxz
ZTsKLQorICAgIGlmIChhdXRvIGNhbGxiYWNrID0gbV9wZW5kaW5nTW91c2VFdmVudHNGbHVzaGVk
Q2FsbGJhY2tzUGVyUGFnZS50YWtlKHBhZ2UucGFnZUlEKCkpKQogICAgICAgICBjYWxsYmFjayhz
dGQ6Om51bGxvcHQpOwotICAgIH0KIH0KIAogdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6a2V5
Ym9hcmRFdmVudHNGbHVzaGVkRm9yUGFnZShjb25zdCBXZWJQYWdlUHJveHkmIHBhZ2UpCiB7Ci0g
ICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBtX3BlbmRpbmdLZXlib2FyZEV2ZW50c0ZsdXNoZWRDYWxs
YmFja3NQZXJQYWdlLnRha2UocGFnZS5wYWdlSUQoKSkpIHsKLSAgICAgICAgaWYgKG1fcGVuZGlu
Z0tleWJvYXJkRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2UuaXNFbXB0eSgpKQotICAgICAg
ICAgICAgbV9zaW11bGF0aW5nVXNlckludGVyYWN0aW9uID0gZmFsc2U7Ci0KKyAgICBpZiAoYXV0
byBjYWxsYmFjayA9IG1fcGVuZGluZ0tleWJvYXJkRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBh
Z2UudGFrZShwYWdlLnBhZ2VJRCgpKSkKICAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsK
LSAgICB9CiB9CiAKIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OndpbGxDbG9zZVBhZ2UoY29u
c3QgV2ViUGFnZVByb3h5JiBwYWdlKQogewogICAgIFN0cmluZyBoYW5kbGUgPSBoYW5kbGVGb3JX
ZWJQYWdlUHJveHkocGFnZSk7CiAgICAgbV9kb21haW5Ob3RpZmllci0+YnJvd3NpbmdDb250ZXh0
Q2xlYXJlZChoYW5kbGUpOworCisgICAgLy8gQ2FuY2VsIHBlbmRpbmcgaW50ZXJhY3Rpb25zIG9u
IHRoaXMgcGFnZS4gQnkgcHJvdmlkaW5nIGFuIGVycm9yLCB0aGlzIHdpbGwgY2F1c2Ugc3Vic2Vx
dWVudAorICAgIC8vIGFjdGlvbnMgdG8gYmUgYWJvcnRlZCBhbmQgdGhlIFNpbXVsYXRlZElucHV0
RGlzcGF0Y2hlcjo6cnVuKCkgY2FsbCB3aWxsIHVud2luZCBhbmQgZmFpbC4KKyAgICBpZiAoYXV0
byBjYWxsYmFjayA9IG1fcGVuZGluZ01vdXNlRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2Uu
dGFrZShwYWdlLnBhZ2VJRCgpKSkKKyAgICAgICAgY2FsbGJhY2soQVVUT01BVElPTl9DT01NQU5E
X0VSUk9SX1dJVEhfTkFNRShXaW5kb3dOb3RGb3VuZCkpOworICAgIGlmIChhdXRvIGNhbGxiYWNr
ID0gbV9wZW5kaW5nTW91c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS50YWtlKHBhZ2Uu
cGFnZUlEKCkpKQorICAgICAgICBjYWxsYmFjayhBVVRPTUFUSU9OX0NPTU1BTkRfRVJST1JfV0lU
SF9OQU1FKFdpbmRvd05vdEZvdW5kKSk7CisKKyAgICAvLyBUaGVuIHRlbGwgdGhlIGlucHV0IGRp
c3BhdGNoZXIgdG8gY2FuY2VsIHNvIHRpbWVycyBhcmUgc3RvcHBlZCwgYW5kIGxldCBpdCBnbyBv
dXQgb2Ygc2NvcGUuCisgICAgc3RkOjpvcHRpb25hbDxSZWY8U2ltdWxhdGVkSW5wdXREaXNwYXRj
aGVyPj4gaW5wdXREaXNwYXRjaGVyID0gbV9pbnB1dERpc3BhdGNoZXJzQnlQYWdlLnRha2UocGFn
ZS5wYWdlSUQoKSk7CisgICAgaWYgKGlucHV0RGlzcGF0Y2hlci5oYXNfdmFsdWUoKSkKKyAgICAg
ICAgaW5wdXREaXNwYXRjaGVyLnZhbHVlKCktPmNhbmNlbCgpOwogfQogCiBzdGF0aWMgYm9vbCBm
aWxlQ2FuQmVBY2NlcHRlZEZvclVwbG9hZChjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBI
YXNoU2V0PFN0cmluZz4mIGFsbG93ZWRNSU1FVHlwZXMsIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYg
YWxsb3dlZEZpbGVFeHRlbnNpb25zKQpAQCAtMTM2Niw2ICsxMzc0LDg2IEBAIGJvb2wgV2ViQXV0
b21hdGlvblNlc3Npb246OnNob3VsZEFsbG93R2V0VXNlck1lZGlhRm9yUGFnZShjb25zdCBXZWJQ
YWdlUHJveHkmKSBjCiAgICAgcmV0dXJuIG1fcGVybWlzc2lvbkZvckdldFVzZXJNZWRpYTsKIH0K
IAorYm9vbCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6aXNTaW11bGF0aW5nVXNlckludGVyYWN0aW9u
KCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcGVuZGluZ01vdXNlRXZlbnRzRmx1c2hlZENhbGxiYWNr
c1BlclBhZ2UuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFtX3Bl
bmRpbmdLZXlib2FyZEV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlLmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK1NpbXVsYXRlZElu
cHV0RGlzcGF0Y2hlciYgV2ViQXV0b21hdGlvblNlc3Npb246OmlucHV0RGlzcGF0Y2hlckZvclBh
Z2UoV2ViUGFnZVByb3h5JiBwYWdlKQoreworICAgIGlmICghbV9pbnB1dERpc3BhdGNoZXJzQnlQ
YWdlLmNvbnRhaW5zKHBhZ2UucGFnZUlEKCkpKQorICAgICAgICBtX2lucHV0RGlzcGF0Y2hlcnNC
eVBhZ2Uuc2V0KHBhZ2UucGFnZUlEKCksIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6Y3JlYXRl
KHBhZ2UsICp0aGlzKSk7CisKKyAgICByZXR1cm4gKm1faW5wdXREaXNwYXRjaGVyc0J5UGFnZS5n
ZXQocGFnZS5wYWdlSUQoKSk7Cit9CisKK1NpbXVsYXRlZElucHV0U291cmNlKiBXZWJBdXRvbWF0
aW9uU2Vzc2lvbjo6aW5wdXRTb3VyY2VGb3JUeXBlKFNpbXVsYXRlZElucHV0U291cmNlOjpUeXBl
IHR5cGUpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IHRoaXMgc2hvdWxkIHVzZSBzb21ldGhpbmcg
bGlrZSBWZWN0b3IncyBmaW5kTWF0Y2hpbmcoKS4KKyAgICBmb3IgKGF1dG8mIGlucHV0U291cmNl
IDogbV9pbnB1dFNvdXJjZXMpIHsKKyAgICAgICAgaWYgKGlucHV0U291cmNlLT50eXBlID09IHR5
cGUpCisgICAgICAgICAgICByZXR1cm4gJmlucHV0U291cmNlLmdldCgpOworICAgIH0KKworICAg
IHJldHVybiBudWxscHRyOworfQorCisvLyBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OkNsaWVu
dCBBUEkKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnNpbXVsYXRlTW91c2VJbnRlcmFjdGlv
bihXZWJQYWdlUHJveHkmIHBhZ2UsIE1vdXNlSW50ZXJhY3Rpb24gaW50ZXJhY3Rpb24sIFdlYk1v
dXNlRXZlbnQ6OkJ1dHRvbiBtb3VzZUJ1dHRvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGxv
Y2F0aW9uSW5WaWV3cG9ydCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPEF1
dG9tYXRpb25Db21tYW5kRXJyb3I+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBXZWJD
b3JlOjpJbnRQb2ludCBsb2NhdGlvbkluVmlldyA9IFdlYkNvcmU6OkludFBvaW50KGxvY2F0aW9u
SW5WaWV3cG9ydC54KCksIGxvY2F0aW9uSW5WaWV3cG9ydC55KCkgKyBwYWdlLnRvcENvbnRlbnRJ
bnNldCgpKTsKKyAgICBwYWdlLmdldFdpbmRvd0ZyYW1lV2l0aENhbGxiYWNrKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlciksIHBhZ2UgPSBtYWtlUmVmKHBhZ2UpLCBpbnRlcmFjdGlvbiwgbW91
c2VCdXR0b24sIGxvY2F0aW9uSW5WaWV3XShXZWJDb3JlOjpGbG9hdFJlY3Qgd2luZG93RnJhbWUp
IG11dGFibGUgeworICAgICAgICBhdXRvIGNsaXBwZWRYID0gc3RkOjptaW4oc3RkOjptYXgoMC4w
ZiwgKGZsb2F0KWxvY2F0aW9uSW5WaWV3LngoKSksIHdpbmRvd0ZyYW1lLnNpemUoKS53aWR0aCgp
KTsKKyAgICAgICAgYXV0byBjbGlwcGVkWSA9IHN0ZDo6bWluKHN0ZDo6bWF4KDAuMGYsIChmbG9h
dClsb2NhdGlvbkluVmlldy55KCkpLCB3aW5kb3dGcmFtZS5zaXplKCkuaGVpZ2h0KCkpOworICAg
ICAgICBpZiAoY2xpcHBlZFggIT0gbG9jYXRpb25JblZpZXcueCgpIHx8IGNsaXBwZWRZICE9IGxv
Y2F0aW9uSW5WaWV3LnkoKSkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQVVUT01B
VElPTl9DT01NQU5EX0VSUk9SX1dJVEhfTkFNRShUYXJnZXRPdXRPZkJvdW5kcykpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLy8gQnJpZGdlIHRoZSBmbHVzaGVk
IGNhbGxiYWNrIHRvIG91ciBjb21tYW5kJ3MgY29tcGxldGlvbiBoYW5kbGVyLgorICAgICAgICBh
dXRvIG1vdXNlRXZlbnRzRmx1c2hlZENhbGxiYWNrID0gW2NvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKHN0ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRF
cnJvcj4gZXJyb3IpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGVycm9yKTsKKyAg
ICAgICAgfTsKKworICAgICAgICBhdXRvJiBjYWxsYmFja0luTWFwID0gbV9wZW5kaW5nTW91c2VF
dmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS5hZGQocGFnZS0+cGFnZUlEKCksIG51bGxwdHIp
Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgaWYgKGNhbGxiYWNrSW5NYXApCisgICAgICAgICAg
ICBjYWxsYmFja0luTWFwKEFVVE9NQVRJT05fQ09NTUFORF9FUlJPUl9XSVRIX05BTUUoVGltZW91
dCkpOworICAgICAgICBjYWxsYmFja0luTWFwID0gV1RGTW92ZShtb3VzZUV2ZW50c0ZsdXNoZWRD
YWxsYmFjayk7CisKKyAgICAgICAgcGxhdGZvcm1TaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24ocGFn
ZSwgaW50ZXJhY3Rpb24sIG1vdXNlQnV0dG9uLCBsb2NhdGlvbkluVmlldywgKFdlYkV2ZW50OjpN
b2RpZmllcnMpbV9jdXJyZW50TW9kaWZpZXJzKTsKKworICAgICAgICAvLyBJZiB0aGUgZXZlbnQg
ZG9lcyBub3QgaGl0IHRlc3QgYW55dGhpbmcgaW4gdGhlIHdpbmRvdywgdGhlbiBpdCBtYXkgbm90
IGhhdmUgYmVlbiBkZWxpdmVyZWQuCisgICAgICAgIGlmIChjYWxsYmFja0luTWFwICYmICFwYWdl
LT5pc1Byb2Nlc3NpbmdNb3VzZUV2ZW50cygpKSB7CisgICAgICAgICAgICBhdXRvIGNhbGxiYWNr
VG9DYW5jZWwgPSBtX3BlbmRpbmdNb3VzZUV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlLnRh
a2UocGFnZS0+cGFnZUlEKCkpOworICAgICAgICAgICAgY2FsbGJhY2tUb0NhbmNlbChzdGQ6Om51
bGxvcHQpOworICAgICAgICB9CisKKyAgICAgICAgLy8gT3RoZXJ3aXNlLCB3YWl0IGZvciBtb3Vz
ZUV2ZW50c0ZsdXNoZWRDYWxsYmFjayB0byBydW4gd2hlbiBhbGwgZXZlbnRzIGFyZSBoYW5kbGVk
LgorICAgIH0pOworfQorCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpzaW11bGF0ZUtleWJv
YXJkSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBLZXlib2FyZEludGVyYWN0aW9uIGlu
dGVyYWN0aW9uLCBzdGQ6Om9wdGlvbmFsPFZpcnR1YWxLZXk+IHZpcnR1YWxLZXksIHN0ZDo6b3B0
aW9uYWw8Q2hhcktleT4gY2hhcktleSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlv
bmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAg
ICAvLyBCcmlkZ2UgdGhlIGZsdXNoZWQgY2FsbGJhY2sgdG8gb3VyIGNvbW1hbmQncyBjb21wbGV0
aW9uIGhhbmRsZXIuCisgICAgYXV0byBrZXlib2FyZEV2ZW50c0ZsdXNoZWRDYWxsYmFjayA9IFtj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShzdGQ6Om9wdGlv
bmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+IGVycm9yKSB7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKGVycm9yKTsKKyAgICB9OworCisgICAgYXV0byYgY2FsbGJhY2tJbk1hcCA9IG1fcGVu
ZGluZ0tleWJvYXJkRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2UuYWRkKHBhZ2UucGFnZUlE
KCksIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBpZiAoY2FsbGJhY2tJbk1hcCkKKyAg
ICAgICAgY2FsbGJhY2tJbk1hcChBVVRPTUFUSU9OX0NPTU1BTkRfRVJST1JfV0lUSF9OQU1FKFRp
bWVvdXQpKTsKKyAgICBjYWxsYmFja0luTWFwID0gV1RGTW92ZShrZXlib2FyZEV2ZW50c0ZsdXNo
ZWRDYWxsYmFjayk7CisKKyAgICBwbGF0Zm9ybVNpbXVsYXRlS2V5Ym9hcmRJbnRlcmFjdGlvbihw
YWdlLCBpbnRlcmFjdGlvbiwgdmlydHVhbEtleSwgY2hhcktleSk7CisKKyAgICAvLyBXYWl0IGZv
ciBrZXlib2FyZEV2ZW50c0ZsdXNoZWRDYWxsYmFjayB0byBydW4gd2hlbiBhbGwgZXZlbnRzIGFy
ZSBoYW5kbGVkLgorfQorCiAjaWYgVVNFKEFQUEtJVCkgfHwgUExBVEZPUk0oR1RLKQogc3RhdGlj
IFdlYkV2ZW50OjpNb2RpZmllcnMgcHJvdG9jb2xNb2RpZmllclRvV2ViRXZlbnRNb2RpZmllcihJ
bnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpLZXlNb2RpZmllciBtb2RpZmllcikKIHsK
QEAgLTEzODQsNiArMTQ3MiwyMCBAQCBzdGF0aWMgV2ViRXZlbnQ6Ok1vZGlmaWVycyBwcm90b2Nv
bE1vZGlmaWVyVG9XZWJFdmVudE1vZGlmaWVyKEluc3BlY3Rvcjo6UHJvdG9jbwogCiAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KKworc3RhdGljIFdlYk1vdXNlRXZlbnQ6OkJ1
dHRvbiBwcm90b2NvbE1vdXNlQnV0dG9uVG9XZWJNb3VzZUV2ZW50QnV0dG9uKEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9uIGJ1dHRvbikKK3sKKyAgICBzd2l0Y2gg
KGJ1dHRvbikgeworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91
c2VCdXR0b246Ok5vbmU6CisgICAgICAgIHJldHVybiBXZWJNb3VzZUV2ZW50OjpOb0J1dHRvbjsK
KyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9uOjpM
ZWZ0OgorICAgICAgICByZXR1cm4gV2ViTW91c2VFdmVudDo6TGVmdEJ1dHRvbjsKKyAgICBjYXNl
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9uOjpNaWRkbGU6Cisg
ICAgICAgIHJldHVybiBXZWJNb3VzZUV2ZW50OjpNaWRkbGVCdXR0b247CisgICAgY2FzZSBJbnNw
ZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1dHRvbjo6UmlnaHQ6CisgICAgICAg
IHJldHVybiBXZWJNb3VzZUV2ZW50OjpSaWdodEJ1dHRvbjsKKyAgICB9Cit9CiAjZW5kaWYgLy8g
VVNFKEFQUEtJVCkgfHwgUExBVEZPUk0oR1RLKQogCiB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9u
OjpwZXJmb3JtTW91c2VJbnRlcmFjdGlvbihjb25zdCBTdHJpbmcmIGhhbmRsZSwgY29uc3QgSlNP
Tjo6T2JqZWN0JiByZXF1ZXN0ZWRQb3NpdGlvbk9iamVjdCwgY29uc3QgU3RyaW5nJiBtb3VzZUJ1
dHRvblN0cmluZywgY29uc3QgU3RyaW5nJiBtb3VzZUludGVyYWN0aW9uU3RyaW5nLCBjb25zdCBK
U09OOjpBcnJheSYga2V5TW9kaWZpZXJTdHJpbmdzLCBSZWY8UGVyZm9ybU1vdXNlSW50ZXJhY3Rp
b25DYWxsYmFjaz4mJiBjYWxsYmFjaykKQEAgLTE0MTUsMTMgKzE1MTcsMTMgQEAgdm9pZCBXZWJB
dXRvbWF0aW9uU2Vzc2lvbjo6cGVyZm9ybU1vdXNlSW50ZXJhY3Rpb24oY29uc3QgU3RyaW5nJiBo
YW5kbGUsIGNvbnN0IEoKICAgICAgICAgV2ViRXZlbnQ6Ok1vZGlmaWVycyBlbnVtVmFsdWUgPSBw
cm90b2NvbE1vZGlmaWVyVG9XZWJFdmVudE1vZGlmaWVyKHBhcnNlZE1vZGlmaWVyLnZhbHVlKCkp
OwogICAgICAgICBrZXlNb2RpZmllcnMgPSAoV2ViRXZlbnQ6Ok1vZGlmaWVycykoZW51bVZhbHVl
IHwga2V5TW9kaWZpZXJzKTsKICAgICB9Ci0gICAgCisKICAgICBwYWdlLT5nZXRXaW5kb3dGcmFt
ZVdpdGhDYWxsYmFjayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBwYWdlID0gbWFrZVJlZigqcGFnZSksIHgsIHksIG1v
dXNlSW50ZXJhY3Rpb25TdHJpbmcsIG1vdXNlQnV0dG9uU3RyaW5nLCBrZXlNb2RpZmllcnNdKFdl
YkNvcmU6OkZsb2F0UmVjdCB3aW5kb3dGcmFtZSkgbXV0YWJsZSB7CiAKICAgICAgICAgeCA9IHN0
ZDo6bWluKHN0ZDo6bWF4KDAuMGYsIHgpLCB3aW5kb3dGcmFtZS5zaXplKCkud2lkdGgoKSk7CiAg
ICAgICAgIHkgPSBzdGQ6Om1pbihzdGQ6Om1heCgwLjBmLCB5ICsgcGFnZS0+dG9wQ29udGVudElu
c2V0KCkpLCB3aW5kb3dGcmFtZS5zaXplKCkuaGVpZ2h0KCkpOwogCi0gICAgICAgIFdlYkNvcmU6
OkludFBvaW50IHZpZXdQb3NpdGlvbiA9IFdlYkNvcmU6OkludFBvaW50KHN0YXRpY19jYXN0PGlu
dD4oeCksIHN0YXRpY19jYXN0PGludD4oeSkpOworICAgICAgICBXZWJDb3JlOjpJbnRQb2ludCBw
b3NpdGlvbkluVmlldyA9IFdlYkNvcmU6OkludFBvaW50KHN0YXRpY19jYXN0PGludD4oeCksIHN0
YXRpY19jYXN0PGludD4oeSkpOwogCiAgICAgICAgIGF1dG8gcGFyc2VkSW50ZXJhY3Rpb24gPSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6cGFyc2VFbnVtVmFsdWVGcm9t
U3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlSW50ZXJhY3Rpb24+
KG1vdXNlSW50ZXJhY3Rpb25TdHJpbmcpOwogICAgICAgICBpZiAoIXBhcnNlZEludGVyYWN0aW9u
KQpAQCAtMTQ0NywxMSArMTU0OSw4IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBlcmZv
cm1Nb3VzZUludGVyYWN0aW9uKGNvbnN0IFN0cmluZyYgaGFuZGxlLCBjb25zdCBKCiAgICAgICAg
ICAgICBjYWxsYmFja0luTWFwKEFVVE9NQVRJT05fQ09NTUFORF9FUlJPUl9XSVRIX05BTUUoVGlt
ZW91dCkpOwogICAgICAgICBjYWxsYmFja0luTWFwID0gV1RGTW92ZShtb3VzZUV2ZW50c0ZsdXNo
ZWRDYWxsYmFjayk7CiAKLSAgICAgICAgLy8gVGhpcyBpcyBjbGVhcmVkIHdoZW4gYWxsIG1vdXNl
IGV2ZW50cyBhcmUgZmx1c2hlZC4KLSAgICAgICAgbV9zaW11bGF0aW5nVXNlckludGVyYWN0aW9u
ID0gdHJ1ZTsKKyAgICAgICAgcGxhdGZvcm1TaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24ocGFnZSwg
cGFyc2VkSW50ZXJhY3Rpb24udmFsdWUoKSwgcHJvdG9jb2xNb3VzZUJ1dHRvblRvV2ViTW91c2VF
dmVudEJ1dHRvbihwYXJzZWRCdXR0b24udmFsdWUoKSksIHBvc2l0aW9uSW5WaWV3LCBrZXlNb2Rp
ZmllcnMpOwogCi0gICAgICAgIHBsYXRmb3JtU2ltdWxhdGVNb3VzZUludGVyYWN0aW9uKHBhZ2Us
IHZpZXdQb3NpdGlvbiwgcGFyc2VkSW50ZXJhY3Rpb24udmFsdWUoKSwgcGFyc2VkQnV0dG9uLnZh
bHVlKCksIGtleU1vZGlmaWVycyk7Ci0gICAgICAgIAogICAgICAgICAvLyBJZiB0aGUgZXZlbnQg
bG9jYXRpb24gd2FzIHByZXZpb3VzbHkgY2xpcHBlZCBhbmQgZG9lcyBub3QgaGl0IHRlc3QgYW55
dGhpbmcgaW4gdGhlIHdpbmRvdywgdGhlbiBpdCB3aWxsIG5vdCBiZSBwcm9jZXNzZWQuCiAgICAg
ICAgIC8vIEZvciBjb21wYXRpYmlsaXR5IHdpdGggcHJlLVczQyBkcml2ZXIgaW1wbGVtZW50YXRp
b25zLCBkb24ndCBtYWtlIHRoaXMgYSBoYXJkIGVycm9yOyBqdXN0IGRvIG5vdGhpbmcgc2lsZW50
bHkuCiAgICAgICAgIC8vIEluIFczQy1vbmx5IGNvZGUgcGF0aHMsIHdlIGNhbiByZWplY3QgYW55
IHBvaW50ZXIgYWN0aW9ucyB3aG9zZSBjb29yZGluYXRlcyBhcmUgb3V0c2lkZSB0aGUgdmlld3Bv
cnQgcmVjdC4KQEAgLTE0OTksNyArMTU5OCw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246
OnBlcmZvcm1LZXlib2FyZEludGVyYWN0aW9ucyhjb25zdCBTdHJpbmcmIGhhbmRsZSwgY29uCiAg
ICAgICAgICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJ
TFMoSW52YWxpZFBhcmFtZXRlciwgIkFuIGludGVyYWN0aW9uIGluIHRoZSAnaW50ZXJhY3Rpb25z
JyBwYXJhbWV0ZXIgaGFzIGFuIGludmFsaWQgJ2tleScgdmFsdWUuIik7CiAKICAgICAgICAgICAg
IGFjdGlvbnNUb1BlcmZvcm0udW5jaGVja2VkQXBwZW5kKFt0aGlzLCBwYWdlLCBpbnRlcmFjdGlv
blR5cGUsIHZpcnR1YWxLZXldIHsKLSAgICAgICAgICAgICAgICBwbGF0Zm9ybVNpbXVsYXRlS2V5
U3Ryb2tlKCpwYWdlLCBpbnRlcmFjdGlvblR5cGUudmFsdWUoKSwgdmlydHVhbEtleS52YWx1ZSgp
KTsKKyAgICAgICAgICAgICAgICBwbGF0Zm9ybVNpbXVsYXRlS2V5Ym9hcmRJbnRlcmFjdGlvbigq
cGFnZSwgaW50ZXJhY3Rpb25UeXBlLnZhbHVlKCksIHZpcnR1YWxLZXksIHN0ZDo6bnVsbG9wdCk7
CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQogCkBAIC0xNTQwLDE0ICsxNjM5LDE2MyBAQCB2
b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwZXJmb3JtS2V5Ym9hcmRJbnRlcmFjdGlvbnMoY29u
c3QgU3RyaW5nJiBoYW5kbGUsIGNvbgogICAgICAgICBjYWxsYmFja0luTWFwKEFVVE9NQVRJT05f
Q09NTUFORF9FUlJPUl9XSVRIX05BTUUoVGltZW91dCkpOwogICAgIGNhbGxiYWNrSW5NYXAgPSBX
VEZNb3ZlKGtleWJvYXJkRXZlbnRzRmx1c2hlZENhbGxiYWNrKTsKIAotICAgIC8vIFRoaXMgaXMg
Y2xlYXJlZCB3aGVuIGFsbCBrZXlib2FyZCBldmVudHMgYXJlIGZsdXNoZWQuCi0gICAgbV9zaW11
bGF0aW5nVXNlckludGVyYWN0aW9uID0gdHJ1ZTsKLQogICAgIGZvciAoYXV0byYgYWN0aW9uIDog
YWN0aW9uc1RvUGVyZm9ybSkKICAgICAgICAgYWN0aW9uKCk7CiAjZW5kaWYgLy8gUExBVEZPUk0o
Q09DT0EpIHx8IFBMQVRGT1JNKEdUSykKIH0KIAorc3RhdGljIFNpbXVsYXRlZElucHV0U291cmNl
OjpUeXBlIHNpbXVsYXRlZElucHV0U291cmNlVHlwZUZyb21Qcm90b2NvbFNvdXJjZVR5cGUoSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6SW5wdXRTb3VyY2VUeXBlIHByb3RvY29sVHlw
ZSkKK3sKKyAgICBzd2l0Y2ggKHByb3RvY29sVHlwZSkgeworICAgIGNhc2UgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXV0b21hdGlvbjo6SW5wdXRTb3VyY2VUeXBlOjpOdWxsOgorICAgICAgICByZXR1
cm4gU2ltdWxhdGVkSW5wdXRTb3VyY2U6OlR5cGU6Ok51bGw7CisgICAgY2FzZSBJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uOjpJbnB1dFNvdXJjZVR5cGU6OktleWJvYXJkOgorICAgICAg
ICByZXR1cm4gU2ltdWxhdGVkSW5wdXRTb3VyY2U6OlR5cGU6OktleWJvYXJkOworICAgIGNhc2Ug
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6SW5wdXRTb3VyY2VUeXBlOjpNb3VzZToK
KyAgICAgICAgcmV0dXJuIFNpbXVsYXRlZElucHV0U291cmNlOjpUeXBlOjpNb3VzZTsKKyAgICBj
YXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OklucHV0U291cmNlVHlwZTo6VG91
Y2g6CisgICAgICAgIHJldHVybiBTaW11bGF0ZWRJbnB1dFNvdXJjZTo6VHlwZTo6VG91Y2g7Cisg
ICAgfQorfQorCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwZXJmb3JtSW50ZXJhY3Rpb25T
ZXF1ZW5jZShjb25zdCBTdHJpbmcmIGhhbmRsZSwgY29uc3QgSlNPTjo6QXJyYXkmIGlucHV0U291
cmNlcywgY29uc3QgSlNPTjo6QXJyYXkmIHN0ZXBzLCBSZWY8V2ViQXV0b21hdGlvblNlc3Npb246
OlBlcmZvcm1JbnRlcmFjdGlvblNlcXVlbmNlQ2FsbGJhY2s+JiYgY2FsbGJhY2spCit7CisgICAg
V2ViUGFnZVByb3h5KiBwYWdlID0gd2ViUGFnZVByb3h5Rm9ySGFuZGxlKGhhbmRsZSk7CisgICAg
aWYgKCFwYWdlKQorICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihXaW5k
b3dOb3RGb3VuZCk7CisKKyAgICBIYXNoTWFwPFN0cmluZywgUmVmPFNpbXVsYXRlZElucHV0U291
cmNlPj4gc291cmNlSWRUb0lucHV0U291cmNlTWFwOworICAgIEhhc2hNYXA8U2ltdWxhdGVkSW5w
dXRTb3VyY2U6OlR5cGUsIFN0cmluZywgV1RGOjpJbnRIYXNoPFNpbXVsYXRlZElucHV0U291cmNl
OjpUeXBlPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxTaW11bGF0ZWRJbnB1dFNvdXJjZTo6
VHlwZT4+IHR5cGVUb1NvdXJjZUlkTWFwOworCisgICAgaWYgKCFpbnB1dFNvdXJjZXMubGVuZ3Ro
KCkpCisgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxT
KEludmFsaWRQYXJhbWV0ZXIsICJUaGUgcGFyYW1ldGVyICdpbnB1dFNvdXJjZXMnIHdhcyBub3Qg
Zm91bmQgb3IgZW1wdHkuIik7CisKKyAgICBmb3IgKGF1dG8gaW5wdXRTb3VyY2UgOiBpbnB1dFNv
dXJjZXMpIHsKKyAgICAgICAgUmVmUHRyPEpTT046Ok9iamVjdD4gaW5wdXRTb3VyY2VPYmplY3Q7
CisgICAgICAgIGlmICghaW5wdXRTb3VyY2UtPmFzT2JqZWN0KGlucHV0U291cmNlT2JqZWN0KSkK
KyAgICAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxT
KEludmFsaWRQYXJhbWV0ZXIsICJBbiBpbnB1dCBzb3VyY2UgaW4gdGhlICdpbnB1dFNvdXJjZXMn
IHBhcmFtZXRlciB3YXMgaW52YWxpZC4iKTsKKyAgICAgICAgCisgICAgICAgIFN0cmluZyBzb3Vy
Y2VJZDsKKyAgICAgICAgaWYgKCFpbnB1dFNvdXJjZU9iamVjdC0+Z2V0U3RyaW5nKEFTQ0lJTGl0
ZXJhbCgic291cmNlSWQiKSwgc291cmNlSWQpKQorICAgICAgICAgICAgQVNZTkNfRkFJTF9XSVRI
X1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxpZFBhcmFtZXRlciwgIkFuIGlucHV0
IHNvdXJjZSBpbiB0aGUgJ2lucHV0U291cmNlcycgcGFyYW1ldGVyIGlzIG1pc3NpbmcgYSAnc291
cmNlSWQnLiIpOworCisgICAgICAgIFN0cmluZyBzb3VyY2VUeXBlOworICAgICAgICBpZiAoIWlu
cHV0U291cmNlT2JqZWN0LT5nZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJzb3VyY2VUeXBlIiksIHNv
dXJjZVR5cGUpKQorICAgICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1Jf
QU5EX0RFVEFJTFMoSW52YWxpZFBhcmFtZXRlciwgIkFuIGlucHV0IHNvdXJjZSBpbiB0aGUgJ2lu
cHV0U291cmNlcycgcGFyYW1ldGVyIGlzIG1pc3NpbmcgYSAnc291cmNlVHlwZScuIik7CisKKyAg
ICAgICAgYXV0byBwYXJzZWRJbnB1dFNvdXJjZVR5cGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpB
dXRvbWF0aW9uSGVscGVyczo6cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246OklucHV0U291cmNlVHlwZT4oc291cmNlVHlwZSk7CisgICAgICAg
IGlmICghcGFyc2VkSW5wdXRTb3VyY2VUeXBlKQorICAgICAgICAgICAgQVNZTkNfRkFJTF9XSVRI
X1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxpZFBhcmFtZXRlciwgIkFuIGlucHV0
IHNvdXJjZSBpbiB0aGUgJ2lucHV0U291cmNlcycgcGFyYW1ldGVyIGhhcyBhbiBpbnZhbGlkICdz
b3VyY2VUeXBlJy4iKTsKKworICAgICAgICBTaW11bGF0ZWRJbnB1dFNvdXJjZTo6VHlwZSBpbnB1
dFNvdXJjZVR5cGUgPSBzaW11bGF0ZWRJbnB1dFNvdXJjZVR5cGVGcm9tUHJvdG9jb2xTb3VyY2VU
eXBlKCpwYXJzZWRJbnB1dFNvdXJjZVR5cGUpOworICAgICAgICBpZiAoaW5wdXRTb3VyY2VUeXBl
ID09IFNpbXVsYXRlZElucHV0U291cmNlOjpUeXBlOjpUb3VjaCkKKyAgICAgICAgICAgIEFTWU5D
X0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKE5vdEltcGxlbWVudGVkLCAi
VG91Y2ggaW5wdXQgc291cmNlcyBhcmUgbm90IHlldCBzdXBwb3J0ZWQuIik7CisKKyAgICAgICAg
aWYgKHR5cGVUb1NvdXJjZUlkTWFwLmNvbnRhaW5zKGlucHV0U291cmNlVHlwZSkpCisgICAgICAg
ICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhJbnZhbGlk
UGFyYW1ldGVyLCAiVHdvIGlucHV0IHNvdXJjZXMgd2l0aCB0aGUgc2FtZSB0eXBlIHdlcmUgc3Bl
Y2lmaWVkLiIpOworICAgICAgICBpZiAoc291cmNlSWRUb0lucHV0U291cmNlTWFwLmNvbnRhaW5z
KHNvdXJjZUlkKSkKKyAgICAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9S
X0FORF9ERVRBSUxTKEludmFsaWRQYXJhbWV0ZXIsICJUd28gaW5wdXQgc291cmNlcyB3aXRoIHRo
ZSBzYW1lIHNvdXJjZUlkIHdlcmUgc3BlY2lmaWVkLiIpOworCisgICAgICAgIHR5cGVUb1NvdXJj
ZUlkTWFwLmFkZChpbnB1dFNvdXJjZVR5cGUsIHNvdXJjZUlkKTsKKyAgICAgICAgc291cmNlSWRU
b0lucHV0U291cmNlTWFwLmFkZChzb3VyY2VJZCwgKmlucHV0U291cmNlRm9yVHlwZShpbnB1dFNv
dXJjZVR5cGUpKTsKKyAgICB9CisKKyAgICBWZWN0b3I8U2ltdWxhdGVkSW5wdXRLZXlGcmFtZT4g
a2V5RnJhbWVzOworCisgICAgaWYgKCFzdGVwcy5sZW5ndGgoKSkKKyAgICAgICAgQVNZTkNfRkFJ
TF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxpZFBhcmFtZXRlciwgIlRo
ZSBwYXJhbWV0ZXIgJ3N0ZXBzJyB3YXMgbm90IGZvdW5kIG9yIGVtcHR5LiIpOworCisgICAgZm9y
IChhdXRvIHN0ZXAgOiBzdGVwcykgeworICAgICAgICBSZWZQdHI8SlNPTjo6T2JqZWN0PiBzdGVw
T2JqZWN0OworICAgICAgICBpZiAoIXN0ZXAtPmFzT2JqZWN0KHN0ZXBPYmplY3QpKQorICAgICAg
ICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxp
ZFBhcmFtZXRlciwgIkEgc3RlcCBpbiB0aGUgJ3N0ZXBzJyBwYXJhbWV0ZXIgd2FzIG5vdCBhbiBv
YmplY3QuIik7CisKKyAgICAgICAgUmVmUHRyPEpTT046OkFycmF5PiBzdGVwU3RhdGVzOworICAg
ICAgICBpZiAoIXN0ZXBPYmplY3QtPmdldEFycmF5KEFTQ0lJTGl0ZXJhbCgic3RhdGVzIiksIHN0
ZXBTdGF0ZXMpKQorICAgICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1Jf
QU5EX0RFVEFJTFMoSW52YWxpZFBhcmFtZXRlciwgIkEgc3RlcCBpcyBtaXNzaW5nIHRoZSAnc3Rh
dGVzJyBwcm9wZXJ0eS4iKTsKKworICAgICAgICBWZWN0b3I8U2ltdWxhdGVkSW5wdXRLZXlGcmFt
ZTo6U3RhdGVFbnRyeT4gZW50cmllczsKKyAgICAgICAgZW50cmllcy5yZXNlcnZlQ2FwYWNpdHko
c3RlcFN0YXRlcy0+bGVuZ3RoKCkpOworCisgICAgICAgIGZvciAoYXV0byBzdGF0ZSA6ICpzdGVw
U3RhdGVzKSB7CisgICAgICAgICAgICBSZWZQdHI8SlNPTjo6T2JqZWN0PiBzdGF0ZU9iamVjdDsK
KyAgICAgICAgICAgIGlmICghc3RhdGUtPmFzT2JqZWN0KHN0YXRlT2JqZWN0KSkKKyAgICAgICAg
ICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhJbnZh
bGlkUGFyYW1ldGVyLCAiRW5jb3VudGVyZWQgYSBub24tb2JqZWN0IHN0ZXAgc3RhdGUuIik7CisK
KyAgICAgICAgICAgIFN0cmluZyBzb3VyY2VJZDsKKyAgICAgICAgICAgIGlmICghc3RhdGVPYmpl
Y3QtPmdldFN0cmluZyhBU0NJSUxpdGVyYWwoInNvdXJjZUlkIiksIHNvdXJjZUlkKSkKKyAgICAg
ICAgICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhJ
bnZhbGlkUGFyYW1ldGVyLCAiU3RlcCBzdGF0ZSBsYWNrcyByZXF1aXJlZCAnc291cmNlSWQnIHBy
b3BlcnR5LiIpOworCisgICAgICAgICAgICBpZiAoIXNvdXJjZUlkVG9JbnB1dFNvdXJjZU1hcC5j
b250YWlucyhzb3VyY2VJZCkpCisgICAgICAgICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURF
RklORURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxpZFBhcmFtZXRlciwgIlVua25vd24gJ3NvdXJj
ZUlkJyBzcGVjaWZpZWQuIik7CisKKyAgICAgICAgICAgIFNpbXVsYXRlZElucHV0U291cmNlJiBp
bnB1dFNvdXJjZSA9ICpzb3VyY2VJZFRvSW5wdXRTb3VyY2VNYXAuZ2V0KHNvdXJjZUlkKTsKKyAg
ICAgICAgICAgIFNpbXVsYXRlZElucHV0U291cmNlU3RhdGUgc291cmNlU3RhdGUgeyB9OworCisg
ICAgICAgICAgICBTdHJpbmcgcHJlc3NlZENoYXJLZXlTdHJpbmc7CisgICAgICAgICAgICBpZiAo
c3RhdGVPYmplY3QtPmdldFN0cmluZyhBU0NJSUxpdGVyYWwoInByZXNzZWRDaGFyS2V5IiksIHBy
ZXNzZWRDaGFyS2V5U3RyaW5nKSkKKyAgICAgICAgICAgICAgICBzb3VyY2VTdGF0ZS5wcmVzc2Vk
Q2hhcktleSA9IHByZXNzZWRDaGFyS2V5U3RyaW5nLmNoYXJhY3RlckF0KDApOworCisgICAgICAg
ICAgICBTdHJpbmcgcHJlc3NlZFZpcnR1YWxLZXlTdHJpbmc7CisgICAgICAgICAgICBpZiAoc3Rh
dGVPYmplY3QtPmdldFN0cmluZyhBU0NJSUxpdGVyYWwoInByZXNzZWRWaXJ0dWFsS2V5IiksIHBy
ZXNzZWRWaXJ0dWFsS2V5U3RyaW5nKSkKKyAgICAgICAgICAgICAgICBzb3VyY2VTdGF0ZS5wcmVz
c2VkVmlydHVhbEtleSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb25IZWxwZXJzOjpw
YXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6
VmlydHVhbEtleT4ocHJlc3NlZFZpcnR1YWxLZXlTdHJpbmcpOworCisgICAgICAgICAgICBTdHJp
bmcgcHJlc3NlZEJ1dHRvblN0cmluZzsKKyAgICAgICAgICAgIGlmIChzdGF0ZU9iamVjdC0+Z2V0
U3RyaW5nKEFTQ0lJTGl0ZXJhbCgicHJlc3NlZEJ1dHRvbiIpLCBwcmVzc2VkQnV0dG9uU3RyaW5n
KSkgeworICAgICAgICAgICAgICAgIGF1dG8gcHJvdG9jb2xCdXR0b24gPSBJbnNwZWN0b3I6OlBy
b3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9uPihwcmVzc2VkQnV0dG9uU3Ry
aW5nKTsKKyAgICAgICAgICAgICAgICBzb3VyY2VTdGF0ZS5wcmVzc2VkTW91c2VCdXR0b24gPSBw
cm90b2NvbE1vdXNlQnV0dG9uVG9XZWJNb3VzZUV2ZW50QnV0dG9uKHByb3RvY29sQnV0dG9uLnZh
bHVlX29yKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9uOjpOb25l
KSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFJlZlB0cjxKU09OOjpPYmplY3Q+IGxv
Y2F0aW9uT2JqZWN0OworICAgICAgICAgICAgaWYgKHN0YXRlT2JqZWN0LT5nZXRPYmplY3QoQVND
SUlMaXRlcmFsKCJsb2NhdGlvbiIpLCBsb2NhdGlvbk9iamVjdCkpIHsKKyAgICAgICAgICAgICAg
ICBpbnQgeCwgeTsKKyAgICAgICAgICAgICAgICBpZiAobG9jYXRpb25PYmplY3QtPmdldEludGVn
ZXIoQVNDSUlMaXRlcmFsKCJ4IiksIHgpICYmIGxvY2F0aW9uT2JqZWN0LT5nZXRJbnRlZ2VyKEFT
Q0lJTGl0ZXJhbCgieSIpLCB5KSkKKyAgICAgICAgICAgICAgICAgICAgc291cmNlU3RhdGUubG9j
YXRpb24gPSBXZWJDb3JlOjpJbnRQb2ludCh4LCB5KTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgaW50IHBhcnNlZER1cmF0aW9uOworICAgICAgICAgICAgaWYgKHN0YXRlT2JqZWN0LT5n
ZXRJbnRlZ2VyKEFTQ0lJTGl0ZXJhbCgiZHVyYXRpb24iKSwgcGFyc2VkRHVyYXRpb24pKQorICAg
ICAgICAgICAgICAgIHNvdXJjZVN0YXRlLmR1cmF0aW9uID0gU2Vjb25kczo6ZnJvbU1pbGxpc2Vj
b25kcyhwYXJzZWREdXJhdGlvbik7CisKKyAgICAgICAgICAgIGVudHJpZXMudW5jaGVja2VkQXBw
ZW5kKHN0ZDo6cGFpcjxTaW11bGF0ZWRJbnB1dFNvdXJjZSYsIFNpbXVsYXRlZElucHV0U291cmNl
U3RhdGU+IHsgaW5wdXRTb3VyY2UsIHNvdXJjZVN0YXRlIH0pOworICAgICAgICB9CisgICAgICAg
IAorICAgICAgICBrZXlGcmFtZXMuYXBwZW5kKFNpbXVsYXRlZElucHV0S2V5RnJhbWUoV1RGTW92
ZShlbnRyaWVzKSkpOworICAgIH0KKworICAgIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlciYgaW5w
dXREaXNwYXRjaGVyID0gaW5wdXREaXNwYXRjaGVyRm9yUGFnZSgqcGFnZSk7CisgICAgaWYgKGlu
cHV0RGlzcGF0Y2hlci5pc0FjdGl2ZSgpKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhJ
bnRlcm5hbEVycm9yLCAiQSBwcmV2aW91cyBpbnRlcmFjdGlvbiBpcyBzdGlsbCB1bmRlcndheS4i
KTsKKyAgICB9CisKKyAgICBpbnB1dERpc3BhdGNoZXIucnVuKFdURk1vdmUoa2V5RnJhbWVzKSwg
bV9pbnB1dFNvdXJjZXMsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKHN0ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1h
bmRFcnJvcj4gZXJyb3IpIHsKKyAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAgY2FsbGJh
Y2stPnNlbmRGYWlsdXJlKGVycm9yLnZhbHVlKCkudG9Qcm90b2NvbFN0cmluZygpKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgY2FsbGJhY2stPnNlbmRTdWNjZXNzKCk7CisgICAgfSk7Cit9
CisKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmNhbmNlbEludGVyYWN0aW9uU2VxdWVuY2Uo
Y29uc3QgU3RyaW5nJiBoYW5kbGUsIFJlZjxDYW5jZWxJbnRlcmFjdGlvblNlcXVlbmNlQ2FsbGJh
Y2s+JiYgY2FsbGJhY2spCit7CisgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gd2ViUGFnZVByb3h5
Rm9ySGFuZGxlKGhhbmRsZSk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICBBU1lOQ19GQUlMX1dJ
VEhfUFJFREVGSU5FRF9FUlJPUihXaW5kb3dOb3RGb3VuZCk7CisKKyAgICBWZWN0b3I8U2ltdWxh
dGVkSW5wdXRLZXlGcmFtZT4ga2V5RnJhbWVzKHsgU2ltdWxhdGVkSW5wdXRLZXlGcmFtZTo6a2V5
RnJhbWVUb1Jlc2V0SW5wdXRTb3VyY2VzKG1faW5wdXRTb3VyY2VzKSB9KTsKKyAgICBTaW11bGF0
ZWRJbnB1dERpc3BhdGNoZXImIGlucHV0RGlzcGF0Y2hlciA9IGlucHV0RGlzcGF0Y2hlckZvclBh
Z2UoKnBhZ2UpOworICAgIGlmIChpbnB1dERpc3BhdGNoZXIuaXNBY3RpdmUoKSkKKyAgICAgICAg
aW5wdXREaXNwYXRjaGVyLmNhbmNlbCgpOworICAgIAorICAgIGlucHV0RGlzcGF0Y2hlci5ydW4o
V1RGTW92ZShrZXlGcmFtZXMpLCBtX2lucHV0U291cmNlcywgW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oc3RkOjpvcHRp
b25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPiBlcnJvcikgeworICAgICAgICBpZiAoZXJyb3Ip
CisgICAgICAgICAgICBjYWxsYmFjay0+c2VuZEZhaWx1cmUoZXJyb3IudmFsdWUoKS50b1Byb3Rv
Y29sU3RyaW5nKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjYWxsYmFjay0+c2VuZFN1
Y2Nlc3MoKTsKKyAgICB9KTsKK30KKwogdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6dGFrZVNj
cmVlbnNob3QoY29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxGcmFt
ZUhhbmRsZSwgY29uc3QgU3RyaW5nKiBvcHRpb25hbE5vZGVIYW5kbGUsIGNvbnN0IGJvb2wqIG9w
dGlvbmFsU2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgY29uc3QgYm9vbCogb3B0aW9uYWxDbGlwVG9W
aWV3cG9ydCwgUmVmPFRha2VTY3JlZW5zaG90Q2FsbGJhY2s+JiYgY2FsbGJhY2spCiB7CiAgICAg
V2ViUGFnZVByb3h5KiBwYWdlID0gd2ViUGFnZVByb3h5Rm9ySGFuZGxlKGhhbmRsZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25T
ZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRp
b25TZXNzaW9uLmgKaW5kZXggM2FlMzVlNmY3ZWMuLjRkMjQ4Y2M5MTAyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vz
c2lvbi5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQXV0b21hdGlvbkZyb250ZW5kRGlz
cGF0Y2hlcnMuaCIKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxl
Qml0bWFwLmgiCisjaW5jbHVkZSAiU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmgiCiAjaW5jbHVk
ZSAiV2ViRXZlbnQuaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtNzYsNyArNzcsNyBAQCBjbGFzcyBXZWJPcGVuUGFuZWxS
ZXN1bHRMaXN0ZW5lclByb3h5OwogY2xhc3MgV2ViUGFnZVByb3h5OwogY2xhc3MgV2ViUHJvY2Vz
c1Bvb2w7CiAKLXN0cnVjdCBBdXRvbWF0aW9uQ29tbWFuZEVycm9yIHsKK2NsYXNzIEF1dG9tYXRp
b25Db21tYW5kRXJyb3IgewogcHVibGljOgogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9t
YXRpb246OkVycm9yTWVzc2FnZSB0eXBlOwogICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBtZXNz
YWdlIHsgc3RkOjpudWxsb3B0IH07CkBAIC05MSwxMSArOTIsMTQgQEAgcHVibGljOgogICAgIFN0
cmluZyB0b1Byb3RvY29sU3RyaW5nKCk7CiB9OwogCit1c2luZyBBdXRvbWF0aW9uQ29tcGxldGlv
bkhhbmRsZXIgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxBdXRv
bWF0aW9uQ29tbWFuZEVycm9yPik+OworCiBjbGFzcyBXZWJBdXRvbWF0aW9uU2Vzc2lvbiBmaW5h
bCA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkF1dG9tYXRpb25T
ZXNzaW9uPiwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAjaWYgRU5BQkxFKFJFTU9URV9J
TlNQRUNUT1IpCiAgICAgLCBwdWJsaWMgSW5zcGVjdG9yOjpSZW1vdGVBdXRvbWF0aW9uVGFyZ2V0
CiAjZW5kaWYKICAgICAsIHB1YmxpYyBJbnNwZWN0b3I6OkF1dG9tYXRpb25CYWNrZW5kRGlzcGF0
Y2hlckhhbmRsZXIKKyAgICAsIHB1YmxpYyBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OkNsaWVu
dAogewogcHVibGljOgogICAgIFdlYkF1dG9tYXRpb25TZXNzaW9uKCk7CkBAIC0xMzEsNiArMTM1
LDEwIEBAIHB1YmxpYzoKICNlbmRpZgogICAgIHZvaWQgdGVybWluYXRlKCk7CiAKKyAgICAvLyBT
aW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OkNsaWVudCBBUEkKKyAgICB2b2lkIHNpbXVsYXRlTW91
c2VJbnRlcmFjdGlvbihXZWJQYWdlUHJveHkmLCBNb3VzZUludGVyYWN0aW9uLCBXZWJNb3VzZUV2
ZW50OjpCdXR0b24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBsb2NhdGlvbkluVmlldywgQXV0
b21hdGlvbkNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOworICAgIHZvaWQgc2ltdWxhdGVLZXli
b2FyZEludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYsIEtleWJvYXJkSW50ZXJhY3Rpb24sIHN0ZDo6
b3B0aW9uYWw8VmlydHVhbEtleT4sIHN0ZDo6b3B0aW9uYWw8Q2hhcktleT4sIEF1dG9tYXRpb25D
b21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKKwogICAgIC8vIEluc3BlY3Rvcjo6QXV0b21hdGlv
bkJhY2tlbmREaXNwYXRjaGVySGFuZGxlciBBUEkKICAgICAvLyBOT1RFOiB0aGUgc2V0IG9mIGRl
Y2xhcmF0aW9ucyBpbmNsdWRlZCBpbiB0aGlzIGludGVyZmFjZSBkZXBlbmQgb24gdGhlICJwbGF0
Zm9ybSIgcHJvcGVydHkgaW4gQXV0b21hdGlvbi5qc29uCiAgICAgLy8gYW5kIHRoZSAtLXBsYXRm
b3JtIGFyZ3VtZW50IHBhc3NlZCB0byB0aGUgcHJvdG9jb2wgYmluZGluZ3MgZ2VuZXJhdG9yLgpA
QCAtMTUxLDYgKzE1OSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGV2YWx1YXRlSmF2YVNjcmlwdEZ1
bmN0aW9uKGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0SGFuZGxlLCBjb25zdCBTdHJpbmcq
IG9wdGlvbmFsRnJhbWVIYW5kbGUsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb24sIGNvbnN0IEpTT046
OkFycmF5JiBhcmd1bWVudHMsIGNvbnN0IGJvb2wqIG9wdGlvbmFsRXhwZWN0c0ltcGxpY2l0Q2Fs
bGJhY2tBcmd1bWVudCwgY29uc3QgaW50KiBvcHRpb25hbENhbGxiYWNrVGltZW91dCwgUmVmPElu
c3BlY3Rvcjo6QXV0b21hdGlvbkJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6RXZhbHVhdGVKYXZh
U2NyaXB0RnVuY3Rpb25DYWxsYmFjaz4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBwZXJmb3JtTW91
c2VJbnRlcmFjdGlvbihjb25zdCBTdHJpbmcmIGhhbmRsZSwgY29uc3QgSlNPTjo6T2JqZWN0JiBy
ZXF1ZXN0ZWRQb3NpdGlvbiwgY29uc3QgU3RyaW5nJiBtb3VzZUJ1dHRvbiwgY29uc3QgU3RyaW5n
JiBtb3VzZUludGVyYWN0aW9uLCBjb25zdCBKU09OOjpBcnJheSYga2V5TW9kaWZpZXJzLCBSZWY8
UGVyZm9ybU1vdXNlSW50ZXJhY3Rpb25DYWxsYmFjaz4mJikgZmluYWw7CiAgICAgdm9pZCBwZXJm
b3JtS2V5Ym9hcmRJbnRlcmFjdGlvbnMoY29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbnN0IEpTT046
OkFycmF5JiBpbnRlcmFjdGlvbnMsIFJlZjxQZXJmb3JtS2V5Ym9hcmRJbnRlcmFjdGlvbnNDYWxs
YmFjaz4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBwZXJmb3JtSW50ZXJhY3Rpb25TZXF1ZW5jZShj
b25zdCBTdHJpbmcmIGhhbmRsZSwgY29uc3QgSlNPTjo6QXJyYXkmIHNvdXJjZXMsIGNvbnN0IEpT
T046OkFycmF5JiBzdGVwcywgUmVmPFBlcmZvcm1JbnRlcmFjdGlvblNlcXVlbmNlQ2FsbGJhY2s+
JiYpIG92ZXJyaWRlOworICAgIHZvaWQgY2FuY2VsSW50ZXJhY3Rpb25TZXF1ZW5jZShjb25zdCBT
dHJpbmcmIGhhbmRsZSwgUmVmPENhbmNlbEludGVyYWN0aW9uU2VxdWVuY2VDYWxsYmFjaz4mJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCB0YWtlU2NyZWVuc2hvdChjb25zdCBTdHJpbmcmIGhhbmRsZSwg
Y29uc3QgU3RyaW5nKiBvcHRpb25hbEZyYW1lSGFuZGxlLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFs
Tm9kZUhhbmRsZSwgY29uc3QgYm9vbCogb3B0aW9uYWxTY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBj
b25zdCBib29sKiBvcHRpb25hbENsaXBUb1ZpZXdwb3J0LCBSZWY8VGFrZVNjcmVlbnNob3RDYWxs
YmFjaz4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXNvbHZlQ2hpbGRGcmFtZUhhbmRsZShjb25z
dCBTdHJpbmcmIGJyb3dzaW5nQ29udGV4dEhhbmRsZSwgY29uc3QgU3RyaW5nKiBvcHRpb25hbEZy
YW1lSGFuZGxlLCBjb25zdCBpbnQqIG9wdGlvbmFsT3JkaW5hbCwgY29uc3QgU3RyaW5nKiBvcHRp
b25hbE5hbWUsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxOb2RlSGFuZGxlLCBSZWY8UmVzb2x2ZUNo
aWxkRnJhbWVIYW5kbGVDYWxsYmFjaz4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXNvbHZlUGFy
ZW50RnJhbWVIYW5kbGUoY29uc3QgU3RyaW5nJiBicm93c2luZ0NvbnRleHRIYW5kbGUsIGNvbnN0
IFN0cmluZyYgZnJhbWVIYW5kbGUsIFJlZjxSZXNvbHZlUGFyZW50RnJhbWVIYW5kbGVDYWxsYmFj
az4mJikgb3ZlcnJpZGU7CkBAIC0xNzUsNyArMTg1LDEwIEBAIHB1YmxpYzoKICNlbmRpZgogCiAg
ICAgLy8gRXZlbnQgU2ltdWxhdGlvbiBTdXBwb3J0LgotICAgIGJvb2wgaXNTaW11bGF0aW5nVXNl
ckludGVyYWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zaW11bGF0aW5nVXNlckludGVyYWN0aW9u
OyB9CisgICAgYm9vbCBpc1NpbXVsYXRpbmdVc2VySW50ZXJhY3Rpb24oKSBjb25zdDsKKyAgICBT
aW11bGF0ZWRJbnB1dERpc3BhdGNoZXImIGlucHV0RGlzcGF0Y2hlckZvclBhZ2UoV2ViUGFnZVBy
b3h5Jik7CisgICAgU2ltdWxhdGVkSW5wdXRTb3VyY2UqIGlucHV0U291cmNlRm9yVHlwZShTaW11
bGF0ZWRJbnB1dFNvdXJjZTo6VHlwZSkgY29uc3Q7CisKICNpZiBQTEFURk9STShNQUMpCiAgICAg
Ym9vbCB3YXNFdmVudFN5bnRoZXNpemVkRm9yQXV0b21hdGlvbihOU0V2ZW50ICopOwogICAgIHZv
aWQgbWFya0V2ZW50QXNTeW50aGVzaXplZEZvckF1dG9tYXRpb24oTlNFdmVudCAqKTsKQEAgLTIx
NSw5ICsyMjgsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRGVsZXRlQ29va2llKHVpbnQ2NF90
IGNhbGxiYWNrSUQsIGNvbnN0IFN0cmluZyYgZXJyb3JUeXBlKTsKIAogICAgIC8vIFBsYXRmb3Jt
LWRlcGVuZGVudCBpbXBsZW1lbnRhdGlvbnMuCi0gICAgdm9pZCBwbGF0Zm9ybVNpbXVsYXRlTW91
c2VJbnRlcmFjdGlvbihXZWJQYWdlUHJveHkmLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgdmll
d1Bvc2l0aW9uLCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUludGVyYWN0
aW9uLCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1dHRvbiwgV2ViRXZl
bnQ6Ok1vZGlmaWVycyk7Ci0gICAgLy8gU2ltdWxhdGVzIGEgc2luZ2xlIHZpcnR1YWwga2V5IGJl
aW5nIHByZXNzZWQsIHN1Y2ggYXMgQ29udHJvbCwgRi1rZXlzLCBOdW1wYWQga2V5cywgZXRjLiBh
cyBhbGxvd2VkIGJ5IHRoZSBwcm90b2NvbC4KLSAgICB2b2lkIHBsYXRmb3JtU2ltdWxhdGVLZXlT
dHJva2UoV2ViUGFnZVByb3h5JiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6S2V5
Ym9hcmRJbnRlcmFjdGlvblR5cGUsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZp
cnR1YWxLZXkpOworICAgIHZvaWQgcGxhdGZvcm1TaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24oV2Vi
UGFnZVByb3h5JiwgTW91c2VJbnRlcmFjdGlvbiwgV2ViTW91c2VFdmVudDo6QnV0dG9uLCBjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYgbG9jYXRpb25JblZpZXcsIFdlYkV2ZW50OjpNb2RpZmllcnMg
a2V5TW9kaWZpZXJzKTsKKyAgICAvLyBTaW11bGF0ZXMgYSBzaW5nbGUgdmlydHVhbCBvciBjaGFy
IGtleSBiZWluZyBwcmVzc2VkL3JlbGVhc2VkLCBzdWNoIGFzICdhJywgQ29udHJvbCwgRi1rZXlz
LCBOdW1wYWQga2V5cywgZXRjLiBhcyBhbGxvd2VkIGJ5IHRoZSBwcm90b2NvbC4KKyAgICB2b2lk
IHBsYXRmb3JtU2ltdWxhdGVLZXlib2FyZEludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYsIEtleWJv
YXJkSW50ZXJhY3Rpb24sIHN0ZDo6b3B0aW9uYWw8VmlydHVhbEtleT4sIHN0ZDo6b3B0aW9uYWw8
Q2hhcktleT4pOwogICAgIC8vIFNpbXVsYXRlcyBrZXkgcHJlc3NlcyB0byBwcm9kdWNlIHRoZSBj
b2RlcG9pbnRzIGluIGEgc3RyaW5nLiBPbmUgb3IgbW9yZSBjb2RlIHBvaW50cyBhcmUgZGVsaXZl
cmVkIGF0b21pY2FsbHkgYXQgZ3JhcGhlbWUgY2x1c3RlciBib3VuZGFyaWVzLgogICAgIHZvaWQg
cGxhdGZvcm1TaW11bGF0ZUtleVNlcXVlbmNlKFdlYlBhZ2VQcm94eSYsIGNvbnN0IFN0cmluZyYp
OwogICAgIC8vIEdldCBiYXNlNjQgZW5jb2RlZCBQTkcgZGF0YSBmcm9tIGEgYml0bWFwLgpAQCAt
Mjg5LDEzICszMDIsMTUgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9wZXJtaXNzaW9uRm9yR2V0
VXNlck1lZGlhIHsgdHJ1ZSB9OwogCi0gICAgLy8gVHJ1ZSBpZiBhIHN5bnRoZXNpemVkIGtleSBl
dmVudCBpcyBzdGlsbCBiZWluZyBwcm9jZXNzZWQuCi0gICAgYm9vbCBtX3NpbXVsYXRpbmdVc2Vy
SW50ZXJhY3Rpb24geyBmYWxzZSB9OwotCiAgICAgLy8gS2VlcCB0cmFjayBvZiBjdXJyZW50bHkg
YWN0aXZlIG1vZGlmaWVycyBhY3Jvc3MgbXVsdGlwbGUga2V5c3Ryb2tlcy4KICAgICAvLyBNb3N0
IHBsYXRmb3JtcyBkbyBub3QgdHJhY2sgY3VycmVudCBtb2RpZmllcnMgZnJvbSBzeW50aGVzaXpl
ZCBldmVudHMuCiAgICAgdW5zaWduZWQgbV9jdXJyZW50TW9kaWZpZXJzIHsgMCB9OwogCisgICAg
Ly8gU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyIEFQSXMgdGFrZSBhIHNldCBvZiBpbnB1dCBzb3Vy
Y2VzLiBXZSBhbHNvIGludGVybiB0aGVzZQorICAgIC8vIHNvIHRoYXQgcHJldmlvdXMgaW5wdXQg
c291cmNlIHN0YXRlIGlzIHVzZWQgYXMgaW5pdGlhbCBzdGF0ZSBmb3IgbGF0ZXIgY29tbWFuZHMu
CisgICAgSGFzaFNldDxSZWY8U2ltdWxhdGVkSW5wdXRTb3VyY2U+PiBtX2lucHV0U291cmNlczsK
KyAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWY8U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyPj4gbV9p
bnB1dERpc3BhdGNoZXJzQnlQYWdlOworCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAg
ICAgSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqIG1fcmVtb3RlQ2hhbm5lbCB7IG51bGxwdHIg
fTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlv
bi9ndGsvV2ViQXV0b21hdGlvblNlc3Npb25HdGsuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQXV0b21hdGlvbi9ndGsvV2ViQXV0b21hdGlvblNlc3Npb25HdGsuY3BwCmluZGV4IDI4Y2Y3
OTQ4YzgzLi40N2VkZDFjYTg5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QXV0b21hdGlvbi9ndGsvV2ViQXV0b21hdGlvblNlc3Npb25HdGsuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vZ3RrL1dlYkF1dG9tYXRpb25TZXNzaW9uR3RrLmNw
cApAQCAtNDgsMTUgKzQ4LDE1IEBAIHN0YXRpYyB1bnNpZ25lZCBtb2RpZmllcnNUb0V2ZW50U3Rh
dGUoV2ViRXZlbnQ6Ok1vZGlmaWVycyBtb2RpZmllcnMpCiAgICAgcmV0dXJuIHN0YXRlOwogfQog
Ci1zdGF0aWMgdW5zaWduZWQgbW91c2VCdXR0b25Ub0dka0J1dHRvbihJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1dHRvbiBidXR0b24pCitzdGF0aWMgdW5zaWduZWQgbW91
c2VCdXR0b25Ub0dka0J1dHRvbihXZWJNb3VzZUV2ZW50OjpCdXR0b24gYnV0dG9uKQogewogICAg
IHN3aXRjaCAoYnV0dG9uKSB7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uOjpNb3VzZUJ1dHRvbjo6Tm9uZToKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1
dG9tYXRpb246Ok1vdXNlQnV0dG9uOjpMZWZ0OgorICAgIGNhc2UgV2ViTW91c2VFdmVudDo6Tm9C
dXR0b246CisgICAgY2FzZSBXZWJNb3VzZUV2ZW50OjpMZWZ0QnV0dG9uOgogICAgICAgICByZXR1
cm4gR0RLX0JVVFRPTl9QUklNQVJZOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbjo6TW91c2VCdXR0b246Ok1pZGRsZToKKyAgICBjYXNlIFdlYk1vdXNlRXZlbnQ6Ok1p
ZGRsZUJ1dHRvbjoKICAgICAgICAgcmV0dXJuIEdES19CVVRUT05fTUlERExFOwotICAgIGNhc2Ug
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VCdXR0b246OlJpZ2h0OgorICAg
IGNhc2UgV2ViTW91c2VFdmVudDo6UmlnaHRCdXR0b246CiAgICAgICAgIHJldHVybiBHREtfQlVU
VE9OX1NFQ09OREFSWTsKICAgICB9CiAgICAgcmV0dXJuIEdES19CVVRUT05fUFJJTUFSWTsKQEAg
LTEwMSwzMCArMTAxLDMwIEBAIHN0YXRpYyB2b2lkIGRvTW90aW9uRXZlbnQoR3RrV2lkZ2V0KiB3
aWRnZXQsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBsb2NhdGlvbiwKICAgICBndGtfbWFpbl9k
b19ldmVudChldmVudC5nZXQoKSk7CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBs
YXRmb3JtU2ltdWxhdGVNb3VzZUludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmIHZpZXdQb3NpdGlvbiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbjo6TW91c2VJbnRlcmFjdGlvbiBpbnRlcmFjdGlvbiwgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXV0b21hdGlvbjo6TW91c2VCdXR0b24gYnV0dG9uLCBXZWJFdmVudDo6TW9kaWZpZXJzIGtl
eU1vZGlmaWVycykKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVN
b3VzZUludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgTW91c2VJbnRlcmFjdGlvbiBpbnRl
cmFjdGlvbiwgV2ViTW91c2VFdmVudDo6QnV0dG9uIGJ1dHRvbiwgY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmIGxvY2F0aW9uSW5WaWV3LCBXZWJFdmVudDo6TW9kaWZpZXJzIGtleU1vZGlmaWVycykK
IHsKICAgICB1bnNpZ25lZCBnZGtCdXR0b24gPSBtb3VzZUJ1dHRvblRvR2RrQnV0dG9uKGJ1dHRv
bik7CiAgICAgdW5zaWduZWQgc3RhdGUgPSBtb2RpZmllcnNUb0V2ZW50U3RhdGUoa2V5TW9kaWZp
ZXJzKTsKIAogICAgIHN3aXRjaCAoaW50ZXJhY3Rpb24pIHsKLSAgICBjYXNlIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlSW50ZXJhY3Rpb246Ok1vdmU6Ci0gICAgICAgIGRv
TW90aW9uRXZlbnQocGFnZS52aWV3V2lkZ2V0KCksIHZpZXdQb3NpdGlvbiwgc3RhdGUpOworICAg
IGNhc2UgTW91c2VJbnRlcmFjdGlvbjo6TW92ZToKKyAgICAgICAgZG9Nb3Rpb25FdmVudChwYWdl
LnZpZXdXaWRnZXQoKSwgbG9jYXRpb25JblZpZXcsIHN0YXRlKTsKICAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUludGVyYWN0aW9u
OjpEb3duOgotICAgICAgICBkb01vdXNlRXZlbnQoR0RLX0JVVFRPTl9QUkVTUywgcGFnZS52aWV3
V2lkZ2V0KCksIHZpZXdQb3NpdGlvbiwgZ2RrQnV0dG9uLCBzdGF0ZSk7CisgICAgY2FzZSBNb3Vz
ZUludGVyYWN0aW9uOjpEb3duOgorICAgICAgICBkb01vdXNlRXZlbnQoR0RLX0JVVFRPTl9QUkVT
UywgcGFnZS52aWV3V2lkZ2V0KCksIGxvY2F0aW9uSW5WaWV3LCBnZGtCdXR0b24sIHN0YXRlKTsK
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
OjpNb3VzZUludGVyYWN0aW9uOjpVcDoKLSAgICAgICAgZG9Nb3VzZUV2ZW50KEdES19CVVRUT05f
UkVMRUFTRSwgcGFnZS52aWV3V2lkZ2V0KCksIHZpZXdQb3NpdGlvbiwgZ2RrQnV0dG9uLCBzdGF0
ZSk7CisgICAgY2FzZSBNb3VzZUludGVyYWN0aW9uOjpVcDoKKyAgICAgICAgZG9Nb3VzZUV2ZW50
KEdES19CVVRUT05fUkVMRUFTRSwgcGFnZS52aWV3V2lkZ2V0KCksIGxvY2F0aW9uSW5WaWV3LCBn
ZGtCdXR0b24sIHN0YXRlKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlBy
b3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUludGVyYWN0aW9uOjpTaW5nbGVDbGljazoKLSAgICAg
ICAgZG9Nb3VzZUV2ZW50KEdES19CVVRUT05fUFJFU1MsIHBhZ2Uudmlld1dpZGdldCgpLCB2aWV3
UG9zaXRpb24sIGdka0J1dHRvbiwgc3RhdGUpOwotICAgICAgICBkb01vdXNlRXZlbnQoR0RLX0JV
VFRPTl9SRUxFQVNFLCBwYWdlLnZpZXdXaWRnZXQoKSwgdmlld1Bvc2l0aW9uLCBnZGtCdXR0b24s
IHN0YXRlKTsKKyAgICBjYXNlIE1vdXNlSW50ZXJhY3Rpb246OlNpbmdsZUNsaWNrOgorICAgICAg
ICBkb01vdXNlRXZlbnQoR0RLX0JVVFRPTl9QUkVTUywgcGFnZS52aWV3V2lkZ2V0KCksIGxvY2F0
aW9uSW5WaWV3LCBnZGtCdXR0b24sIHN0YXRlKTsKKyAgICAgICAgZG9Nb3VzZUV2ZW50KEdES19C
VVRUT05fUkVMRUFTRSwgcGFnZS52aWV3V2lkZ2V0KCksIGxvY2F0aW9uSW5WaWV3LCBnZGtCdXR0
b24sIHN0YXRlKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29s
OjpBdXRvbWF0aW9uOjpNb3VzZUludGVyYWN0aW9uOjpEb3VibGVDbGljazoKLSAgICAgICAgZG9N
b3VzZUV2ZW50KEdES19CVVRUT05fUFJFU1MsIHBhZ2Uudmlld1dpZGdldCgpLCB2aWV3UG9zaXRp
b24sIGdka0J1dHRvbiwgc3RhdGUpOwotICAgICAgICBkb01vdXNlRXZlbnQoR0RLX0JVVFRPTl9S
RUxFQVNFLCBwYWdlLnZpZXdXaWRnZXQoKSwgdmlld1Bvc2l0aW9uLCBnZGtCdXR0b24sIHN0YXRl
KTsKLSAgICAgICAgZG9Nb3VzZUV2ZW50KEdES19CVVRUT05fUFJFU1MsIHBhZ2Uudmlld1dpZGdl
dCgpLCB2aWV3UG9zaXRpb24sIGdka0J1dHRvbiwgc3RhdGUpOwotICAgICAgICBkb01vdXNlRXZl
bnQoR0RLX0JVVFRPTl9SRUxFQVNFLCBwYWdlLnZpZXdXaWRnZXQoKSwgdmlld1Bvc2l0aW9uLCBn
ZGtCdXR0b24sIHN0YXRlKTsKKyAgICBjYXNlIE1vdXNlSW50ZXJhY3Rpb246OkRvdWJsZUNsaWNr
OgorICAgICAgICBkb01vdXNlRXZlbnQoR0RLX0JVVFRPTl9QUkVTUywgcGFnZS52aWV3V2lkZ2V0
KCksIGxvY2F0aW9uSW5WaWV3LCBnZGtCdXR0b24sIHN0YXRlKTsKKyAgICAgICAgZG9Nb3VzZUV2
ZW50KEdES19CVVRUT05fUkVMRUFTRSwgcGFnZS52aWV3V2lkZ2V0KCksIGxvY2F0aW9uSW5WaWV3
LCBnZGtCdXR0b24sIHN0YXRlKTsKKyAgICAgICAgZG9Nb3VzZUV2ZW50KEdES19CVVRUT05fUFJF
U1MsIHBhZ2Uudmlld1dpZGdldCgpLCBsb2NhdGlvbkluVmlldywgZ2RrQnV0dG9uLCBzdGF0ZSk7
CisgICAgICAgIGRvTW91c2VFdmVudChHREtfQlVUVE9OX1JFTEVBU0UsIHBhZ2Uudmlld1dpZGdl
dCgpLCBsb2NhdGlvbkluVmlldywgZ2RrQnV0dG9uLCBzdGF0ZSk7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KIH0KQEAgLTI4MCwyMCArMjgwLDI3IEBAIHN0YXRpYyBpbnQga2V5Q29kZUZvclZpcnR1
YWxLZXkoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleSBrZXksCiAg
ICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2lt
dWxhdGVLZXlTdHJva2UoV2ViUGFnZVByb3h5JiBwYWdlLCBJbnNwZWN0b3I6OlByb3RvY29sOjpB
dXRvbWF0aW9uOjpLZXlib2FyZEludGVyYWN0aW9uVHlwZSBpbnRlcmFjdGlvbiwgSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleSBrZXkpCit2b2lkIFdlYkF1dG9tYXRp
b25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlS2V5Ym9hcmRJbnRlcmFjdGlvbihXZWJQYWdlUHJv
eHkmIHBhZ2UsIEtleWJvYXJkSW50ZXJhY3Rpb24gaW50ZXJhY3Rpb24sIHN0ZDo6b3B0aW9uYWw8
VmlydHVhbEtleT4gdmlydHVhbEtleSwgc3RkOjpvcHRpb25hbDxDaGFyS2V5PiBjaGFyS2V5KQog
eworICAgIEFTU0VSVCh2aXJ0dWFsS2V5Lmhhc192YWx1ZSgpIHx8IGNoYXJLZXkuaGFzX3ZhbHVl
KCkpOworCiAgICAgR2RrTW9kaWZpZXJUeXBlIHVwZGF0ZVN0YXRlOwotICAgIGF1dG8ga2V5Q29k
ZSA9IGtleUNvZGVGb3JWaXJ0dWFsS2V5KGtleSwgdXBkYXRlU3RhdGUpOworICAgIHVuc2lnbmVk
IGtleUNvZGU7CisgICAgaWYgKHZpcnR1YWxLZXkpCisgICAgICAgIGtleUNvZGUgPSBrZXlDb2Rl
Rm9yVmlydHVhbEtleSh2aXJ0dWFsS2V5LnZhbHVlKCksIHVwZGF0ZVN0YXRlKTsKKyAgICBlbHNl
CisgICAgICAgIGtleUNvZGUgPSBnZGtfdW5pY29kZV90b19rZXl2YWwoZ191dGY4X2dldF9jaGFy
KCZjaGFyS2V5LnZhbHVlKCkpKTsKKwogICAgIHN3aXRjaCAoaW50ZXJhY3Rpb24pIHsKLSAgICBj
YXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OktleWJvYXJkSW50ZXJhY3Rpb25U
eXBlOjpLZXlQcmVzczoKKyAgICBjYXNlIEtleWJvYXJkSW50ZXJhY3Rpb246OktleVByZXNzOgog
ICAgICAgICBtX2N1cnJlbnRNb2RpZmllcnMgfD0gdXBkYXRlU3RhdGU7CiAgICAgICAgIGRvS2V5
U3Ryb2tlRXZlbnQoR0RLX0tFWV9QUkVTUywgcGFnZS52aWV3V2lkZ2V0KCksIGtleUNvZGUsIG1f
Y3VycmVudE1vZGlmaWVycyk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXV0b21hdGlvbjo6S2V5Ym9hcmRJbnRlcmFjdGlvblR5cGU6OktleVJlbGVhc2U6
CisgICAgY2FzZSBLZXlib2FyZEludGVyYWN0aW9uOjpLZXlSZWxlYXNlOgogICAgICAgICBtX2N1
cnJlbnRNb2RpZmllcnMgJj0gfnVwZGF0ZVN0YXRlOwogICAgICAgICBkb0tleVN0cm9rZUV2ZW50
KEdES19LRVlfUkVMRUFTRSwgcGFnZS52aWV3V2lkZ2V0KCksIGtleUNvZGUsIG1fY3VycmVudE1v
ZGlmaWVycyk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbjo6S2V5Ym9hcmRJbnRlcmFjdGlvblR5cGU6Okluc2VydEJ5S2V5OgorICAgIGNh
c2UgS2V5Ym9hcmRJbnRlcmFjdGlvbjo6SW5zZXJ0QnlLZXk6CiAgICAgICAgIGRvS2V5U3Ryb2tl
RXZlbnQoR0RLX0tFWV9QUkVTUywgcGFnZS52aWV3V2lkZ2V0KCksIGtleUNvZGUsIG1fY3VycmVu
dE1vZGlmaWVycywgdHJ1ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vaW9zL1dlYkF1dG9tYXRpb25TZXNzaW9u
SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9pb3MvV2ViQXV0b21h
dGlvblNlc3Npb25JT1MubW0KaW5kZXggNWY3NGFkZWRmNzUuLjBkZTM5YjY5OTNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2lvcy9XZWJBdXRvbWF0aW9u
U2Vzc2lvbklPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2lv
cy9XZWJBdXRvbWF0aW9uU2Vzc2lvbklPUy5tbQpAQCAtNjUsMjYgKzY1LDI4IEBAIHZvaWQgV2Vi
QXV0b21hdGlvblNlc3Npb246OnNlbmRTeW50aGVzaXplZEV2ZW50c1RvUGFnZShXZWJQYWdlUHJv
eHkmIHBhZ2UsIE5TQXJyCiAKICNwcmFnbWEgbWFyayBDb21tYW5kcyBmb3IgUGxhdGZvcm06ICdp
T1MnCiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVLZXlTdHJv
a2UoV2ViUGFnZVByb3h5JiBwYWdlLCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpL
ZXlib2FyZEludGVyYWN0aW9uVHlwZSBpbnRlcmFjdGlvbiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbjo6VmlydHVhbEtleSBrZXkpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpw
bGF0Zm9ybVNpbXVsYXRlS2V5Ym9hcmRJbnRlcmFjdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIEtl
eWJvYXJkSW50ZXJhY3Rpb24gaW50ZXJhY3Rpb24sIHN0ZDo6b3B0aW9uYWw8VmlydHVhbEtleT4g
dmlydHVhbEtleSwgc3RkOjpvcHRpb25hbDxDaGFyS2V5PiBjaGFyS2V5KQogeworICAgIEFTU0VS
VCh2aXJ0dWFsS2V5Lmhhc192YWx1ZSgpIHx8IGNoYXJLZXkuaGFzX3ZhbHVlKCkpOworCiAgICAg
Ly8gVGhlIG1vZGlmaWVycyBjaGFuZ2VkIGJ5IHRoZSB2aXJ0dWFsIGtleSB3aGVuIGl0IGlzIHBy
ZXNzZWQgb3IgcmVsZWFzZWQuCiAgICAgV2ViRXZlbnRGbGFncyBjaGFuZ2VkTW9kaWZpZXJzID0g
MDsKIAogICAgIC8vIEZpZ3VyZSBvdXQgdGhlIGVmZmVjdHMgb2Ygc3RpY2t5IG1vZGlmaWVycy4K
ICAgICBzd2l0Y2ggKGtleSkgewotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21h
dGlvbjo6VmlydHVhbEtleTo6U2hpZnQ6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpTaGlmdDoKICAg
ICAgICAgY2hhbmdlZE1vZGlmaWVycyB8PSBXZWJFdmVudEZsYWdNYXNrU2hpZnQ7CiAgICAgICAg
IGJyZWFrOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVh
bEtleTo6Q29udHJvbDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkNvbnRyb2w6CiAgICAgICAgIGNo
YW5nZWRNb2RpZmllcnMgfD0gV2ViRXZlbnRGbGFnTWFza0NvbnRyb2w7CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6
QWx0ZXJuYXRlOgorICAgIGNhc2UgVmlydHVhbEtleTo6QWx0ZXJuYXRlOgogICAgICAgICBjaGFu
Z2VkTW9kaWZpZXJzIHw9IFdlYkV2ZW50RmxhZ01hc2tBbHRlcm5hdGU7CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6
TWV0YToKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok1ldGE6CiAgICAgICAgIC8vIFRoZSAnbWV0YScg
a2V5IGRvZXMgbm90IGV4aXN0IG9uIEFwcGxlIGtleWJvYXJkcyBhbmQgaXMgdXN1YWxseQogICAg
ICAgICAvLyBtYXBwZWQgdG8gdGhlIENvbW1hbmQga2V5IHdoZW4gdXNpbmcgdGhpcmQtcGFydHkg
a2V5Ym9hcmRzLgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6Vmly
dHVhbEtleTo6Q29tbWFuZDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkNvbW1hbmQ6CiAgICAgICAg
IGNoYW5nZWRNb2RpZmllcnMgfD0gV2ViRXZlbnRGbGFnTWFza0NvbW1hbmQ7CiAgICAgICAgIGJy
ZWFrOwogICAgIGRlZmF1bHQ6CkBAIC05NCw4ICs5NiwxOCBAQCB2b2lkIFdlYkF1dG9tYXRpb25T
ZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlS2V5U3Ryb2tlKFdlYlBhZ2VQcm94eSYgcGFnZSwgSW5z
cGVjdAogICAgIC8vIFVJS2l0IGRvZXMgbm90IHNlbmQga2V5IGNvZGVzIGZvciB2aXJ0dWFsIGtl
eXMgZXZlbiBmb3IgYSBoYXJkd2FyZSBrZXlib2FyZC4KICAgICAvLyBJbnN0ZWFkLCBpdCBzZW5k
cyBzaW5nbGUgdW5pY2hhcnMgYW5kIFdlYkNvcmUgbWFwcyB0aGVzZSB0byAid2luZG93cyIga2V5
IGNvZGVzLgogICAgIC8vIFN5bnRoZXNpemUgYSBzaW5nbGUgdW5pY2hhciBzdWNoIHRoYXQgdGhl
IGNvcnJlY3Qga2V5IGNvZGUgaXMgaW5mZXJyZWQuCi0gICAgc3RkOjpvcHRpb25hbDx1bmljaGFy
PiBjaGFyQ29kZSA9IGNoYXJDb2RlRm9yVmlydHVhbEtleShrZXkpOwotICAgIHN0ZDo6b3B0aW9u
YWw8dW5pY2hhcj4gY2hhckNvZGVJZ25vcmluZ01vZGlmaWVycyA9IGNoYXJDb2RlSWdub3JpbmdN
b2RpZmllcnNGb3JWaXJ0dWFsS2V5KGtleSk7CisgICAgc3RkOjpvcHRpb25hbDx1bmljaGFyPiBj
aGFyQ29kZTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuaWNoYXI+IGNoYXJDb2RlSWdub3JpbmdNb2Rp
ZmllcnM7CisKKyAgICBpZiAodmlydHVhbEtleS5oYXNfdmFsdWUoKSkgeworICAgICAgICBjaGFy
Q29kZSA9IGNoYXJDb2RlRm9yVmlydHVhbEtleSh2aXJ0dWFsS2V5LnZhbHVlKCkpOworICAgICAg
ICBjaGFyQ29kZUlnbm9yaW5nTW9kaWZpZXJzID0gY2hhckNvZGVJZ25vcmluZ01vZGlmaWVyc0Zv
clZpcnR1YWxLZXkodmlydHVhbEtleS52YWx1ZSgpKTsKKyAgICB9CisKKyAgICBpZiAoY2hhcktl
eS5oYXNfdmFsdWUoKSkgeworICAgICAgICBjaGFyQ29kZSA9ICh1bmljaGFyKWNoYXJLZXkudmFs
dWUoKTsKKyAgICAgICAgY2hhckNvZGVJZ25vcmluZ01vZGlmaWVycyA9ICh1bmljaGFyKWNoYXJL
ZXkudmFsdWUoKTsKKyAgICB9CiAKICAgICAvLyBGSVhNRTogY29uc2lkZXIgdXNpbmcgVUlLaXQg
U1BJIHRvIG5vcm1hbGl6ZSAnY2hhcmFjdGVycycsIGkuZS4sIGNoYW5naW5nICogdG8gU2hpZnQt
OCwKICAgICAvLyBhbmQgcGFzc2luZyB0aGF0IGluIHRvIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlm
aWVycy4gVGhpcyBpcyBwcm9iYWJseSBub3Qgd29ydGggdGhlIHRyb3VibGUKQEAgLTExNSwxOSAr
MTI3LDE5IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVLZXlT
dHJva2UoV2ViUGFnZVByb3h5JiBwYWdlLCBJbnNwZWN0CiAgICAgYXV0byBldmVudHNUb0JlU2Vu
dCA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogCiAgICAgc3dpdGNo
IChpbnRlcmFjdGlvbikgewotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlv
bjo6S2V5Ym9hcmRJbnRlcmFjdGlvblR5cGU6OktleVByZXNzOiB7CisgICAgY2FzZSBLZXlib2Fy
ZEludGVyYWN0aW9uOjpLZXlQcmVzczogewogICAgICAgICBtX2N1cnJlbnRNb2RpZmllcnMgfD0g
Y2hhbmdlZE1vZGlmaWVyczsKIAogICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0Oltb
Wzo6V2ViRXZlbnQgYWxsb2NdIGluaXRXaXRoS2V5RXZlbnRUeXBlOldlYkV2ZW50S2V5RG93biB0
aW1lU3RhbXA6Q0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCkgY2hhcmFjdGVyczpjaGFyYWN0ZXJz
IGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczp1bm1vZGlmaWVkQ2hhcmFjdGVycyBtb2RpZmll
cnM6bV9jdXJyZW50TW9kaWZpZXJzIGlzUmVwZWF0aW5nOk5PIHdpdGhGbGFnczppbnB1dEZsYWdz
IHdpdGhJbnB1dE1hbmFnZXJIaW50Om5pbCBrZXlDb2RlOmtleUNvZGUgaXNUYWJLZXk6aXNUYWJL
ZXldIGF1dG9yZWxlYXNlXV07CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OktleWJvYXJkSW50ZXJhY3Rpb25UeXBlOjpLZXlS
ZWxlYXNlOiB7CisgICAgY2FzZSBLZXlib2FyZEludGVyYWN0aW9uOjpLZXlSZWxlYXNlOiB7CiAg
ICAgICAgIG1fY3VycmVudE1vZGlmaWVycyAmPSB+Y2hhbmdlZE1vZGlmaWVyczsKIAogICAgICAg
ICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltbWzo6V2ViRXZlbnQgYWxsb2NdIGluaXRXaXRo
S2V5RXZlbnRUeXBlOldlYkV2ZW50S2V5VXAgdGltZVN0YW1wOkNGQWJzb2x1dGVUaW1lR2V0Q3Vy
cmVudCgpIGNoYXJhY3RlcnM6Y2hhcmFjdGVycyBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6
dW5tb2RpZmllZENoYXJhY3RlcnMgbW9kaWZpZXJzOm1fY3VycmVudE1vZGlmaWVycyBpc1JlcGVh
dGluZzpOTyB3aXRoRmxhZ3M6aW5wdXRGbGFncyB3aXRoSW5wdXRNYW5hZ2VySGludDpuaWwga2V5
Q29kZTprZXlDb2RlIGlzVGFiS2V5OmlzVGFiS2V5XSBhdXRvcmVsZWFzZV1dOwogICAgICAgICBi
cmVhazsKICAgICB9Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpL
ZXlib2FyZEludGVyYWN0aW9uVHlwZTo6SW5zZXJ0QnlLZXk6IHsKKyAgICBjYXNlIEtleWJvYXJk
SW50ZXJhY3Rpb246Okluc2VydEJ5S2V5OiB7CiAgICAgICAgIC8vIE1vZGlmaWVycyBvbmx5IGNo
YW5nZSB3aXRoIEtleVByZXNzIG9yIEtleVJlbGVhc2UsIHRoaXMgY29kZSBwYXRoIGlzIGZvciBz
aW5nbGUgY2hhcmFjdGVycy4KICAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbW1s6
OldlYkV2ZW50IGFsbG9jXSBpbml0V2l0aEtleUV2ZW50VHlwZTpXZWJFdmVudEtleURvd24gdGlt
ZVN0YW1wOkNGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpIGNoYXJhY3RlcnM6Y2hhcmFjdGVycyBj
aGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6dW5tb2RpZmllZENoYXJhY3RlcnMgbW9kaWZpZXJz
Om1fY3VycmVudE1vZGlmaWVycyBpc1JlcGVhdGluZzpOTyB3aXRoRmxhZ3M6aW5wdXRGbGFncyB3
aXRoSW5wdXRNYW5hZ2VySGludDpuaWwga2V5Q29kZTprZXlDb2RlIGlzVGFiS2V5OmlzVGFiS2V5
XSBhdXRvcmVsZWFzZV1dOwogICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltbWzo6
V2ViRXZlbnQgYWxsb2NdIGluaXRXaXRoS2V5RXZlbnRUeXBlOldlYkV2ZW50S2V5VXAgdGltZVN0
YW1wOkNGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpIGNoYXJhY3RlcnM6Y2hhcmFjdGVycyBjaGFy
YWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6dW5tb2RpZmllZENoYXJhY3RlcnMgbW9kaWZpZXJzOm1f
Y3VycmVudE1vZGlmaWVycyBpc1JlcGVhdGluZzpOTyB3aXRoRmxhZ3M6aW5wdXRGbGFncyB3aXRo
SW5wdXRNYW5hZ2VySGludDpuaWwga2V5Q29kZTprZXlDb2RlIGlzVGFiS2V5OmlzVGFiS2V5XSBh
dXRvcmVsZWFzZV1dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21h
dGlvbi9tYWMvV2ViQXV0b21hdGlvblNlc3Npb25NYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BdXRvbWF0aW9uL21hYy9XZWJBdXRvbWF0aW9uU2Vzc2lvbk1hYy5tbQppbmRleCAzYjVl
NTU4YzY0Yy4uZjQ2MGEzODY1M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0F1dG9tYXRpb24vbWFjL1dlYkF1dG9tYXRpb25TZXNzaW9uTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vbWFjL1dlYkF1dG9tYXRpb25TZXNzaW9uTWFjLm1t
CkBAIC0xMTgsMTEgKzExOCwxMSBAQCBib29sIFdlYkF1dG9tYXRpb25TZXNzaW9uOjp3YXNFdmVu
dFN5bnRoZXNpemVkRm9yQXV0b21hdGlvbihOU0V2ZW50ICpldmVudCkKIAogI3ByYWdtYSBtYXJr
IFBsYXRmb3JtLWRlcGVuZGVudCBJbXBsZW1lbnRhdGlvbnMKIAotdm9pZCBXZWJBdXRvbWF0aW9u
U2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiBw
YWdlLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgdmlld1Bvc2l0aW9uLCBJbnNwZWN0b3I6OlBy
b3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUludGVyYWN0aW9uIGludGVyYWN0aW9uLCBJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1dHRvbiBidXR0b24sIFdlYkV2ZW50OjpN
b2RpZmllcnMga2V5TW9kaWZpZXJzKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZv
cm1TaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBNb3VzZUludGVy
YWN0aW9uIGludGVyYWN0aW9uLCBXZWJNb3VzZUV2ZW50OjpCdXR0b24gYnV0dG9uLCBjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYgbG9jYXRpb25JblZpZXcsIFdlYkV2ZW50OjpNb2RpZmllcnMga2V5
TW9kaWZpZXJzKQogewogICAgIEludFJlY3Qgd2luZG93UmVjdDsKLSAgICBwYWdlLnJvb3RWaWV3
VG9XaW5kb3coSW50UmVjdCh2aWV3UG9zaXRpb24sIEludFNpemUoKSksIHdpbmRvd1JlY3QpOwot
ICAgIEludFBvaW50IHdpbmRvd1Bvc2l0aW9uID0gd2luZG93UmVjdC5sb2NhdGlvbigpOworICAg
IHBhZ2Uucm9vdFZpZXdUb1dpbmRvdyhJbnRSZWN0KGxvY2F0aW9uSW5WaWV3LCBJbnRTaXplKCkp
LCB3aW5kb3dSZWN0KTsKKyAgICBJbnRQb2ludCBsb2NhdGlvbkluV2luZG93ID0gd2luZG93UmVj
dC5sb2NhdGlvbigpOwogCiAgICAgTlNFdmVudE1vZGlmaWVyRmxhZ3MgbW9kaWZpZXJzID0gMDsK
ICAgICBpZiAoa2V5TW9kaWZpZXJzICYgV2ViRXZlbnQ6Ok1ldGFLZXkpCkBAIC0xNDQsMjAgKzE0
NCwyMCBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlTW91c2VJ
bnRlcmFjdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsCiAgICAgTlNFdmVudFR5cGUgZHJhZ0V2ZW50
VHlwZSA9IChOU0V2ZW50VHlwZSkwOwogICAgIE5TRXZlbnRUeXBlIHVwRXZlbnRUeXBlID0gKE5T
RXZlbnRUeXBlKTA7CiAgICAgc3dpdGNoIChidXR0b24pIHsKLSAgICBjYXNlIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9uOjpOb25lOgorICAgIGNhc2UgV2ViTW91
c2VFdmVudDo6Tm9CdXR0b246CiAgICAgICAgIGRvd25FdmVudFR5cGUgPSB1cEV2ZW50VHlwZSA9
IGRyYWdFdmVudFR5cGUgPSBOU0V2ZW50VHlwZU1vdXNlTW92ZWQ7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VCdXR0b246Okxl
ZnQ6CisgICAgY2FzZSBXZWJNb3VzZUV2ZW50OjpMZWZ0QnV0dG9uOgogICAgICAgICBkb3duRXZl
bnRUeXBlID0gTlNFdmVudFR5cGVMZWZ0TW91c2VEb3duOwogICAgICAgICBkcmFnRXZlbnRUeXBl
ID0gTlNFdmVudFR5cGVMZWZ0TW91c2VEcmFnZ2VkOwogICAgICAgICB1cEV2ZW50VHlwZSA9IE5T
RXZlbnRUeXBlTGVmdE1vdXNlVXA7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VCdXR0b246Ok1pZGRsZToKKyAgICBjYXNlIFdl
Yk1vdXNlRXZlbnQ6Ok1pZGRsZUJ1dHRvbjoKICAgICAgICAgZG93bkV2ZW50VHlwZSA9IE5TRXZl
bnRUeXBlT3RoZXJNb3VzZURvd247CiAgICAgICAgIGRyYWdFdmVudFR5cGUgPSBOU0V2ZW50VHlw
ZUxlZnRNb3VzZURyYWdnZWQ7CiAgICAgICAgIHVwRXZlbnRUeXBlID0gTlNFdmVudFR5cGVPdGhl
ck1vdXNlVXA7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbjo6TW91c2VCdXR0b246OlJpZ2h0OgorICAgIGNhc2UgV2ViTW91c2VFdmVudDo6
UmlnaHRCdXR0b246CiAgICAgICAgIGRvd25FdmVudFR5cGUgPSBOU0V2ZW50VHlwZVJpZ2h0TW91
c2VEb3duOwogICAgICAgICB1cEV2ZW50VHlwZSA9IE5TRXZlbnRUeXBlUmlnaHRNb3VzZVVwOwog
ICAgICAgICBicmVhazsKQEAgLTE2OCw1NiArMTY4LDU2IEBAIHZvaWQgV2ViQXV0b21hdGlvblNl
c3Npb246OnBsYXRmb3JtU2ltdWxhdGVNb3VzZUludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYgcGFn
ZSwKICAgICBOU0ludGVnZXIgZXZlbnROdW1iZXIgPSBzeW50aGVzaXplZE1vdXNlRXZlbnRNYWdp
Y0V2ZW50TnVtYmVyOwogCiAgICAgc3dpdGNoIChpbnRlcmFjdGlvbikgewotICAgIGNhc2UgSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VJbnRlcmFjdGlvbjo6TW92ZToKKyAg
ICBjYXNlIE1vdXNlSW50ZXJhY3Rpb246Ok1vdmU6CiAgICAgICAgIEFTU0VSVChkcmFnRXZlbnRU
eXBlKTsKLSAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbTlNFdmVudCBtb3VzZUV2
ZW50V2l0aFR5cGU6ZHJhZ0V2ZW50VHlwZSBsb2NhdGlvbjp3aW5kb3dQb3NpdGlvbiBtb2RpZmll
ckZsYWdzOm1vZGlmaWVycyB0aW1lc3RhbXA6dGltZXN0YW1wIHdpbmRvd051bWJlcjp3aW5kb3dO
dW1iZXIgY29udGV4dDpuaWwgZXZlbnROdW1iZXI6ZXZlbnROdW1iZXIgY2xpY2tDb3VudDowIHBy
ZXNzdXJlOjAuMGZdXTsKKyAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbTlNFdmVu
dCBtb3VzZUV2ZW50V2l0aFR5cGU6ZHJhZ0V2ZW50VHlwZSBsb2NhdGlvbjpsb2NhdGlvbkluV2lu
ZG93IG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJzIHRpbWVzdGFtcDp0aW1lc3RhbXAgd2luZG93TnVt
YmVyOndpbmRvd051bWJlciBjb250ZXh0Om5pbCBldmVudE51bWJlcjpldmVudE51bWJlciBjbGlj
a0NvdW50OjAgcHJlc3N1cmU6MC4wZl1dOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlSW50ZXJhY3Rpb246OkRvd246CisgICAg
Y2FzZSBNb3VzZUludGVyYWN0aW9uOjpEb3duOgogICAgICAgICBBU1NFUlQoZG93bkV2ZW50VHlw
ZSk7CiAKICAgICAgICAgLy8gSGFyZC1jb2RlIHRoZSBjbGljayBjb3VudCB0byBvbmUsIHNpbmNl
IGNsaWVudHMgZG9uJ3QgZXhwZWN0IHN1Y2Nlc3NpdmUgc2ltdWxhdGVkCiAgICAgICAgIC8vIGRv
d24vdXAgZXZlbnRzIHRvIGJlIHBvdGVudGlhbGx5IGNvdW50ZWQgYXMgYSBkb3VibGUgY2xpY2sg
ZXZlbnQuCi0gICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmplY3Q6W05TRXZlbnQgbW91c2VF
dmVudFdpdGhUeXBlOmRvd25FdmVudFR5cGUgbG9jYXRpb246d2luZG93UG9zaXRpb24gbW9kaWZp
ZXJGbGFnczptb2RpZmllcnMgdGltZXN0YW1wOnRpbWVzdGFtcCB3aW5kb3dOdW1iZXI6d2luZG93
TnVtYmVyIGNvbnRleHQ6bmlsIGV2ZW50TnVtYmVyOmV2ZW50TnVtYmVyIGNsaWNrQ291bnQ6MSBw
cmVzc3VyZTpXZWJDb3JlOjpGb3JjZUF0Q2xpY2tdXTsKKyAgICAgICAgW2V2ZW50c1RvQmVTZW50
IGFkZE9iamVjdDpbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6ZG93bkV2ZW50VHlwZSBsb2Nh
dGlvbjpsb2NhdGlvbkluV2luZG93IG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJzIHRpbWVzdGFtcDp0
aW1lc3RhbXAgd2luZG93TnVtYmVyOndpbmRvd051bWJlciBjb250ZXh0Om5pbCBldmVudE51bWJl
cjpldmVudE51bWJlciBjbGlja0NvdW50OjEgcHJlc3N1cmU6V2ViQ29yZTo6Rm9yY2VBdENsaWNr
XV07CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21h
dGlvbjo6TW91c2VJbnRlcmFjdGlvbjo6VXA6CisgICAgY2FzZSBNb3VzZUludGVyYWN0aW9uOjpV
cDoKICAgICAgICAgQVNTRVJUKHVwRXZlbnRUeXBlKTsKIAogICAgICAgICAvLyBIYXJkLWNvZGUg
dGhlIGNsaWNrIGNvdW50IHRvIG9uZSwgc2luY2UgY2xpZW50cyBkb24ndCBleHBlY3Qgc3VjY2Vz
c2l2ZSBzaW11bGF0ZWQKICAgICAgICAgLy8gZG93bi91cCBldmVudHMgdG8gYmUgcG90ZW50aWFs
bHkgY291bnRlZCBhcyBhIGRvdWJsZSBjbGljayBldmVudC4KLSAgICAgICAgW2V2ZW50c1RvQmVT
ZW50IGFkZE9iamVjdDpbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6dXBFdmVudFR5cGUgbG9j
YXRpb246d2luZG93UG9zaXRpb24gbW9kaWZpZXJGbGFnczptb2RpZmllcnMgdGltZXN0YW1wOnRp
bWVzdGFtcCB3aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmlsIGV2ZW50TnVtYmVy
OmV2ZW50TnVtYmVyIGNsaWNrQ291bnQ6MSBwcmVzc3VyZTowLjBmXV07CisgICAgICAgIFtldmVu
dHNUb0JlU2VudCBhZGRPYmplY3Q6W05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOnVwRXZlbnRU
eXBlIGxvY2F0aW9uOmxvY2F0aW9uSW5XaW5kb3cgbW9kaWZpZXJGbGFnczptb2RpZmllcnMgdGlt
ZXN0YW1wOnRpbWVzdGFtcCB3aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmlsIGV2
ZW50TnVtYmVyOmV2ZW50TnVtYmVyIGNsaWNrQ291bnQ6MSBwcmVzc3VyZTowLjBmXV07CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91
c2VJbnRlcmFjdGlvbjo6U2luZ2xlQ2xpY2s6CisgICAgY2FzZSBNb3VzZUludGVyYWN0aW9uOjpT
aW5nbGVDbGljazoKICAgICAgICAgQVNTRVJUKHVwRXZlbnRUeXBlKTsKICAgICAgICAgQVNTRVJU
KGRvd25FdmVudFR5cGUpOwogCiAgICAgICAgIC8vIFNlbmQgc2VwYXJhdGUgZG93biBhbmQgdXAg
ZXZlbnRzLiBXZWJDb3JlIHdpbGwgc2VlIHRoaXMgYXMgYSBzaW5nbGUtY2xpY2sgZXZlbnQuCi0g
ICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmplY3Q6W05TRXZlbnQgbW91c2VFdmVudFdpdGhU
eXBlOmRvd25FdmVudFR5cGUgbG9jYXRpb246d2luZG93UG9zaXRpb24gbW9kaWZpZXJGbGFnczpt
b2RpZmllcnMgdGltZXN0YW1wOnRpbWVzdGFtcCB3aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNv
bnRleHQ6bmlsIGV2ZW50TnVtYmVyOmV2ZW50TnVtYmVyIGNsaWNrQ291bnQ6MSBwcmVzc3VyZTpX
ZWJDb3JlOjpGb3JjZUF0Q2xpY2tdXTsKLSAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVj
dDpbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6dXBFdmVudFR5cGUgbG9jYXRpb246d2luZG93
UG9zaXRpb24gbW9kaWZpZXJGbGFnczptb2RpZmllcnMgdGltZXN0YW1wOnRpbWVzdGFtcCB3aW5k
b3dOdW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmlsIGV2ZW50TnVtYmVyOmV2ZW50TnVtYmVy
IGNsaWNrQ291bnQ6MSBwcmVzc3VyZTowLjBmXV07CisgICAgICAgIFtldmVudHNUb0JlU2VudCBh
ZGRPYmplY3Q6W05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOmRvd25FdmVudFR5cGUgbG9jYXRp
b246bG9jYXRpb25JbldpbmRvdyBtb2RpZmllckZsYWdzOm1vZGlmaWVycyB0aW1lc3RhbXA6dGlt
ZXN0YW1wIHdpbmRvd051bWJlcjp3aW5kb3dOdW1iZXIgY29udGV4dDpuaWwgZXZlbnROdW1iZXI6
ZXZlbnROdW1iZXIgY2xpY2tDb3VudDoxIHByZXNzdXJlOldlYkNvcmU6OkZvcmNlQXRDbGlja11d
OworICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltOU0V2ZW50IG1vdXNlRXZlbnRX
aXRoVHlwZTp1cEV2ZW50VHlwZSBsb2NhdGlvbjpsb2NhdGlvbkluV2luZG93IG1vZGlmaWVyRmxh
Z3M6bW9kaWZpZXJzIHRpbWVzdGFtcDp0aW1lc3RhbXAgd2luZG93TnVtYmVyOndpbmRvd051bWJl
ciBjb250ZXh0Om5pbCBldmVudE51bWJlcjpldmVudE51bWJlciBjbGlja0NvdW50OjEgcHJlc3N1
cmU6MC4wZl1dOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkF1dG9tYXRpb246Ok1vdXNlSW50ZXJhY3Rpb246OkRvdWJsZUNsaWNrOgorICAgIGNhc2UgTW91
c2VJbnRlcmFjdGlvbjo6RG91YmxlQ2xpY2s6CiAgICAgICAgIEFTU0VSVCh1cEV2ZW50VHlwZSk7
CiAgICAgICAgIEFTU0VSVChkb3duRXZlbnRUeXBlKTsKIAogICAgICAgICAvLyBTZW5kIG11bHRp
cGxlIGRvd24gYW5kIHVwIGV2ZW50cyB3aXRoIHByb3BlciBjbGljayBjb3VudC4KICAgICAgICAg
Ly8gV2ViQ29yZSB3aWxsIHNlZSB0aGlzIGFzIGEgc2luZ2xlLWNsaWNrIGV2ZW50IHRoZW4gZG91
YmxlLWNsaWNrIGV2ZW50LgotICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltOU0V2
ZW50IG1vdXNlRXZlbnRXaXRoVHlwZTpkb3duRXZlbnRUeXBlIGxvY2F0aW9uOndpbmRvd1Bvc2l0
aW9uIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJzIHRpbWVzdGFtcDp0aW1lc3RhbXAgd2luZG93TnVt
YmVyOndpbmRvd051bWJlciBjb250ZXh0Om5pbCBldmVudE51bWJlcjpldmVudE51bWJlciBjbGlj
a0NvdW50OjEgcHJlc3N1cmU6V2ViQ29yZTo6Rm9yY2VBdENsaWNrXV07Ci0gICAgICAgIFtldmVu
dHNUb0JlU2VudCBhZGRPYmplY3Q6W05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOnVwRXZlbnRU
eXBlIGxvY2F0aW9uOndpbmRvd1Bvc2l0aW9uIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJzIHRpbWVz
dGFtcDp0aW1lc3RhbXAgd2luZG93TnVtYmVyOndpbmRvd051bWJlciBjb250ZXh0Om5pbCBldmVu
dE51bWJlcjpldmVudE51bWJlciBjbGlja0NvdW50OjEgcHJlc3N1cmU6MC4wZl1dOwotICAgICAg
ICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltOU0V2ZW50IG1vdXNlRXZlbnRXaXRoVHlwZTpk
b3duRXZlbnRUeXBlIGxvY2F0aW9uOndpbmRvd1Bvc2l0aW9uIG1vZGlmaWVyRmxhZ3M6bW9kaWZp
ZXJzIHRpbWVzdGFtcDp0aW1lc3RhbXAgd2luZG93TnVtYmVyOndpbmRvd051bWJlciBjb250ZXh0
Om5pbCBldmVudE51bWJlcjpldmVudE51bWJlciBjbGlja0NvdW50OjIgcHJlc3N1cmU6V2ViQ29y
ZTo6Rm9yY2VBdENsaWNrXV07Ci0gICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmplY3Q6W05T
RXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOnVwRXZlbnRUeXBlIGxvY2F0aW9uOndpbmRvd1Bvc2l0
aW9uIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJzIHRpbWVzdGFtcDp0aW1lc3RhbXAgd2luZG93TnVt
YmVyOndpbmRvd051bWJlciBjb250ZXh0Om5pbCBldmVudE51bWJlcjpldmVudE51bWJlciBjbGlj
a0NvdW50OjIgcHJlc3N1cmU6MC4wZl1dOworICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2Jq
ZWN0OltOU0V2ZW50IG1vdXNlRXZlbnRXaXRoVHlwZTpkb3duRXZlbnRUeXBlIGxvY2F0aW9uOmxv
Y2F0aW9uSW5XaW5kb3cgbW9kaWZpZXJGbGFnczptb2RpZmllcnMgdGltZXN0YW1wOnRpbWVzdGFt
cCB3aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmlsIGV2ZW50TnVtYmVyOmV2ZW50
TnVtYmVyIGNsaWNrQ291bnQ6MSBwcmVzc3VyZTpXZWJDb3JlOjpGb3JjZUF0Q2xpY2tdXTsKKyAg
ICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5
cGU6dXBFdmVudFR5cGUgbG9jYXRpb246bG9jYXRpb25JbldpbmRvdyBtb2RpZmllckZsYWdzOm1v
ZGlmaWVycyB0aW1lc3RhbXA6dGltZXN0YW1wIHdpbmRvd051bWJlcjp3aW5kb3dOdW1iZXIgY29u
dGV4dDpuaWwgZXZlbnROdW1iZXI6ZXZlbnROdW1iZXIgY2xpY2tDb3VudDoxIHByZXNzdXJlOjAu
MGZdXTsKKyAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbTlNFdmVudCBtb3VzZUV2
ZW50V2l0aFR5cGU6ZG93bkV2ZW50VHlwZSBsb2NhdGlvbjpsb2NhdGlvbkluV2luZG93IG1vZGlm
aWVyRmxhZ3M6bW9kaWZpZXJzIHRpbWVzdGFtcDp0aW1lc3RhbXAgd2luZG93TnVtYmVyOndpbmRv
d051bWJlciBjb250ZXh0Om5pbCBldmVudE51bWJlcjpldmVudE51bWJlciBjbGlja0NvdW50OjIg
cHJlc3N1cmU6V2ViQ29yZTo6Rm9yY2VBdENsaWNrXV07CisgICAgICAgIFtldmVudHNUb0JlU2Vu
dCBhZGRPYmplY3Q6W05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOnVwRXZlbnRUeXBlIGxvY2F0
aW9uOmxvY2F0aW9uSW5XaW5kb3cgbW9kaWZpZXJGbGFnczptb2RpZmllcnMgdGltZXN0YW1wOnRp
bWVzdGFtcCB3aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmlsIGV2ZW50TnVtYmVy
OmV2ZW50TnVtYmVyIGNsaWNrQ291bnQ6MiBwcmVzc3VyZTowLjBmXV07CiAgICAgfQogCiAgICAg
c2VuZFN5bnRoZXNpemVkRXZlbnRzVG9QYWdlKHBhZ2UsIGV2ZW50c1RvQmVTZW50LmdldCgpKTsK
IH0KIAotc3RhdGljIGJvb2wga2V5SGFzU3RpY2t5TW9kaWZpZXIoSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXV0b21hdGlvbjo6VmlydHVhbEtleSBrZXkpCitzdGF0aWMgYm9vbCB2aXJ0dWFsS2V5SGFz
U3RpY2t5TW9kaWZpZXIoVmlydHVhbEtleSBrZXkpCiB7CiAgICAgLy8gUmV0dXJucyB3aGV0aGVy
IHRoZSBrZXkncyBtb2RpZmllciBmbGFncyBzaG91bGQgYWZmZWN0IG90aGVyIGV2ZW50cyB3aGls
ZSBwcmVzc2VkIGRvd24uCiAgICAgc3dpdGNoIChrZXkpIHsKLSAgICBjYXNlIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OlNoaWZ0OgotICAgIGNhc2UgSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6Q29udHJvbDoKLSAgICBjYXNl
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkFsdGVybmF0ZToK
LSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok1l
dGE6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5
OjpDb21tYW5kOgorICAgIGNhc2UgVmlydHVhbEtleTo6U2hpZnQ6CisgICAgY2FzZSBWaXJ0dWFs
S2V5OjpDb250cm9sOgorICAgIGNhc2UgVmlydHVhbEtleTo6QWx0ZXJuYXRlOgorICAgIGNhc2Ug
VmlydHVhbEtleTo6TWV0YToKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkNvbW1hbmQ6CiAgICAgICAg
IHJldHVybiB0cnVlOwogCiAgICAgZGVmYXVsdDoKQEAgLTIyNSwyMDEgKzIyNSwyMDEgQEAgc3Rh
dGljIGJvb2wga2V5SGFzU3RpY2t5TW9kaWZpZXIoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21h
dGlvbjo6VmlydHVhbEtleSBrZXkKICAgICB9CiB9CiAKLXN0YXRpYyBpbnQga2V5Q29kZUZvclZp
cnR1YWxLZXkoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleSBrZXkp
CitzdGF0aWMgaW50IGtleUNvZGVGb3JWaXJ0dWFsS2V5KFZpcnR1YWxLZXkga2V5KQogewogICAg
IC8vIFRoZSBsaWtlbHkga2V5Q29kZSBmb3IgdGhlIHZpcnR1YWwga2V5IGFzIGRlZmluZWQgaW4g
PEhJVG9vbGJveC9FdmVudHMuaD4uCiAgICAgc3dpdGNoIChrZXkpIHsKLSAgICBjYXNlIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OlNoaWZ0OgorICAgIGNhc2Ug
VmlydHVhbEtleTo6U2hpZnQ6CiAgICAgICAgIHJldHVybiBrVktfU2hpZnQ7Ci0gICAgY2FzZSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpDb250cm9sOgorICAg
IGNhc2UgVmlydHVhbEtleTo6Q29udHJvbDoKICAgICAgICAgcmV0dXJuIGtWS19Db250cm9sOwot
ICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6QWx0
ZXJuYXRlOgorICAgIGNhc2UgVmlydHVhbEtleTo6QWx0ZXJuYXRlOgogICAgICAgICByZXR1cm4g
a1ZLX09wdGlvbjsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZp
cnR1YWxLZXk6Ok1ldGE6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpNZXRhOgogICAgICAgICAvLyBU
aGUgJ21ldGEnIGtleSBkb2VzIG5vdCBleGlzdCBvbiBBcHBsZSBrZXlib2FyZHMgYW5kIGlzIHVz
dWFsbHkKICAgICAgICAgLy8gbWFwcGVkIHRvIHRoZSBDb21tYW5kIGtleSB3aGVuIHVzaW5nIHRo
aXJkLXBhcnR5IGtleWJvYXJkcy4KLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9t
YXRpb246OlZpcnR1YWxLZXk6OkNvbW1hbmQ6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpDb21tYW5k
OgogICAgICAgICByZXR1cm4ga1ZLX0NvbW1hbmQ7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpIZWxwOgorICAgIGNhc2UgVmlydHVhbEtleTo6
SGVscDoKICAgICAgICAgcmV0dXJuIGtWS19IZWxwOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6QmFja3NwYWNlOgorICAgIGNhc2UgVmlydHVh
bEtleTo6QmFja3NwYWNlOgogICAgICAgICByZXR1cm4ga1ZLX0RlbGV0ZTsKLSAgICBjYXNlIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OlRhYjoKKyAgICBjYXNl
IFZpcnR1YWxLZXk6OlRhYjoKICAgICAgICAgcmV0dXJuIGtWS19UYWI7Ci0gICAgY2FzZSBJbnNw
ZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpDbGVhcjoKKyAgICBjYXNl
IFZpcnR1YWxLZXk6OkNsZWFyOgogICAgICAgICByZXR1cm4ga1ZLX0FOU0lfS2V5cGFkQ2xlYXI7
Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpF
bnRlcjoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkVudGVyOgogICAgICAgICByZXR1cm4ga1ZLX0FO
U0lfS2V5cGFkRW50ZXI7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
OjpWaXJ0dWFsS2V5OjpQYXVzZToKKyAgICBjYXNlIFZpcnR1YWxLZXk6OlBhdXNlOgogICAgICAg
ICAvLyBUaGUgJ3BhdXNlJyBrZXkgZG9lcyBub3QgZXhpc3Qgb24gQXBwbGUga2V5Ym9hcmRzIGFu
ZCBoYXMgbm8ga2V5Q29kZS4KICAgICAgICAgLy8gVGhlIHNlbWFudGljcyBhcmUgdW5jbGVhciBz
byBqdXN0IGFib3J0IGFuZCBkbyBub3RoaW5nLgogICAgICAgICByZXR1cm4gMDsKLSAgICBjYXNl
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkNhbmNlbDoKKyAg
ICBjYXNlIFZpcnR1YWxLZXk6OkNhbmNlbDoKICAgICAgICAgLy8gVGhlICdjYW5jZWwnIGtleSBk
b2VzIG5vdCBleGlzdCBvbiBBcHBsZSBrZXlib2FyZHMgYW5kIGhhcyBubyBrZXlDb2RlLgogICAg
ICAgICAvLyBBY2NvcmRpbmcgdG8gdGhlIGludGVybmV0IGl0cyBmdW5jdGlvbmFsaXR5IGlzIHNp
bWlsYXIgdG8gJ0VzY2FwZScuCi0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uOjpWaXJ0dWFsS2V5OjpFc2NhcGU6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpFc2NhcGU6CiAg
ICAgICAgIHJldHVybiBrVktfRXNjYXBlOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbjo6VmlydHVhbEtleTo6UGFnZVVwOgorICAgIGNhc2UgVmlydHVhbEtleTo6UGFn
ZVVwOgogICAgICAgICByZXR1cm4ga1ZLX1BhZ2VVcDsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OlBhZ2VEb3duOgorICAgIGNhc2UgVmlydHVh
bEtleTo6UGFnZURvd246CiAgICAgICAgIHJldHVybiBrVktfUGFnZURvd247Ci0gICAgY2FzZSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpFbmQ6CisgICAgY2Fz
ZSBWaXJ0dWFsS2V5OjpFbmQ6CiAgICAgICAgIHJldHVybiBrVktfRW5kOwotICAgIGNhc2UgSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6SG9tZToKKyAgICBjYXNl
IFZpcnR1YWxLZXk6OkhvbWU6CiAgICAgICAgIHJldHVybiBrVktfSG9tZTsKLSAgICBjYXNlIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkxlZnRBcnJvdzoKKyAg
ICBjYXNlIFZpcnR1YWxLZXk6OkxlZnRBcnJvdzoKICAgICAgICAgcmV0dXJuIGtWS19MZWZ0QXJy
b3c7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5
OjpVcEFycm93OgorICAgIGNhc2UgVmlydHVhbEtleTo6VXBBcnJvdzoKICAgICAgICAgcmV0dXJu
IGtWS19VcEFycm93OwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6
VmlydHVhbEtleTo6UmlnaHRBcnJvdzoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OlJpZ2h0QXJyb3c6
CiAgICAgICAgIHJldHVybiBrVktfUmlnaHRBcnJvdzsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkRvd25BcnJvdzoKKyAgICBjYXNlIFZpcnR1
YWxLZXk6OkRvd25BcnJvdzoKICAgICAgICAgcmV0dXJuIGtWS19Eb3duQXJyb3c7Ci0gICAgY2Fz
ZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpJbnNlcnQ6Cisg
ICAgY2FzZSBWaXJ0dWFsS2V5OjpJbnNlcnQ6CiAgICAgICAgIC8vIFRoZSAnaW5zZXJ0JyBrZXkg
ZG9lcyBub3QgZXhpc3Qgb24gQXBwbGUga2V5Ym9hcmRzIGFuZCBoYXMgbm8ga2V5Q29kZS4KICAg
ICAgICAgLy8gVGhlIHNlbWFudGljcyBhcmUgdW5jbGVhciBzbyBqdXN0IGFib3J0IGFuZCBkbyBu
b3RoaW5nLgogICAgICAgICByZXR1cm4gMDsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkRlbGV0ZToKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkRl
bGV0ZToKICAgICAgICAgcmV0dXJuIGtWS19Gb3J3YXJkRGVsZXRlOwotICAgIGNhc2UgSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6U3BhY2U6CisgICAgY2FzZSBW
aXJ0dWFsS2V5OjpTcGFjZToKICAgICAgICAgcmV0dXJuIGtWS19TcGFjZTsKLSAgICBjYXNlIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OlNlbWljb2xvbjoKKyAg
ICBjYXNlIFZpcnR1YWxLZXk6OlNlbWljb2xvbjoKICAgICAgICAgcmV0dXJuIGtWS19BTlNJX1Nl
bWljb2xvbjsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1
YWxLZXk6OkVxdWFsczoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkVxdWFsczoKICAgICAgICAgcmV0
dXJuIGtWS19BTlNJX0VxdWFsOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21h
dGlvbjo6VmlydHVhbEtleTo6UmV0dXJuOgorICAgIGNhc2UgVmlydHVhbEtleTo6UmV0dXJuOgog
ICAgICAgICByZXR1cm4ga1ZLX1JldHVybjsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZDA6CisgICAgY2FzZSBWaXJ0dWFsS2V5
OjpOdW1iZXJQYWQwOgogICAgICAgICByZXR1cm4ga1ZLX0FOU0lfS2V5cGFkMDsKLSAgICBjYXNl
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZDE6
CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWQxOgogICAgICAgICByZXR1cm4ga1ZLX0FO
U0lfS2V5cGFkMTsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZp
cnR1YWxLZXk6Ok51bWJlclBhZDI6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWQyOgog
ICAgICAgICByZXR1cm4ga1ZLX0FOU0lfS2V5cGFkMjsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZDM6CisgICAgY2FzZSBWaXJ0
dWFsS2V5OjpOdW1iZXJQYWQzOgogICAgICAgICByZXR1cm4ga1ZLX0FOU0lfS2V5cGFkMzsKLSAg
ICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJl
clBhZDQ6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWQ0OgogICAgICAgICByZXR1cm4g
a1ZLX0FOU0lfS2V5cGFkNDsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRp
b246OlZpcnR1YWxLZXk6Ok51bWJlclBhZDU6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQ
YWQ1OgogICAgICAgICByZXR1cm4ga1ZLX0FOU0lfS2V5cGFkNTsKLSAgICBjYXNlIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZDY6CisgICAgY2Fz
ZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWQ2OgogICAgICAgICByZXR1cm4ga1ZLX0FOU0lfS2V5cGFk
NjsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6
Ok51bWJlclBhZDc6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWQ3OgogICAgICAgICBy
ZXR1cm4ga1ZLX0FOU0lfS2V5cGFkNzsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1
dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZDg6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpO
dW1iZXJQYWQ4OgogICAgICAgICByZXR1cm4ga1ZLX0FOU0lfS2V5cGFkODsKLSAgICBjYXNlIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZDk6Cisg
ICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWQ5OgogICAgICAgICByZXR1cm4ga1ZLX0FOU0lf
S2V5cGFkOTsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1
YWxLZXk6Ok51bWJlclBhZE11bHRpcGx5OgorICAgIGNhc2UgVmlydHVhbEtleTo6TnVtYmVyUGFk
TXVsdGlwbHk6CiAgICAgICAgIHJldHVybiBrVktfQU5TSV9LZXlwYWRNdWx0aXBseTsKLSAgICBj
YXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBh
ZEFkZDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZEFkZDoKICAgICAgICAgcmV0dXJu
IGtWS19BTlNJX0tleXBhZFBsdXM7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRv
bWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWRTdWJ0cmFjdDoKKyAgICBjYXNlIFZpcnR1YWxL
ZXk6Ok51bWJlclBhZFN1YnRyYWN0OgogICAgICAgICByZXR1cm4ga1ZLX0FOU0lfS2V5cGFkTWlu
dXM7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5
OjpOdW1iZXJQYWRTZXBhcmF0b3I6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWRTZXBh
cmF0b3I6CiAgICAgICAgIC8vIFRoZSAnU2VwYXJhdG9yJyBrZXkgaXMgb25seSBwcmVzZW50IG9u
IGEgZmV3IGludGVybmF0aW9uYWwga2V5Ym9hcmRzLgogICAgICAgICAvLyBJdCBpcyB1c3VhbGx5
IG1hcHBlZCB0byB0aGUgc2FtZSBjaGFyYWN0ZXIgYXMgRGVjaW1hbCAoJy4nIG9yICcsJykuCiAg
ICAgICAgIEZBTExUSFJPVUdIOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21h
dGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkRGVjaW1hbDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6
Ok51bWJlclBhZERlY2ltYWw6CiAgICAgICAgIHJldHVybiBrVktfQU5TSV9LZXlwYWREZWNpbWFs
OwogICAgICAgICAvLyBGSVhNRTogdGhpcyBtaWdodCBiZSBsb2NhbGUtZGVwZW5kZW50LiBTZWUg
dGhlIGFib3ZlIGNvbW1lbnQuCi0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWREaXZpZGU6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpO
dW1iZXJQYWREaXZpZGU6CiAgICAgICAgIHJldHVybiBrVktfQU5TSV9LZXlwYWREaXZpZGU7Ci0g
ICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5j
dGlvbjE6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpGdW5jdGlvbjE6CiAgICAgICAgIHJldHVybiBr
VktfRjE7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFs
S2V5OjpGdW5jdGlvbjI6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpGdW5jdGlvbjI6CiAgICAgICAg
IHJldHVybiBrVktfRjI7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
OjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjM6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpGdW5jdGlvbjM6
CiAgICAgICAgIHJldHVybiBrVktfRjM7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpB
dXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjQ6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpG
dW5jdGlvbjQ6CiAgICAgICAgIHJldHVybiBrVktfRjQ7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlBy
b3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjU6CisgICAgY2FzZSBWaXJ0
dWFsS2V5OjpGdW5jdGlvbjU6CiAgICAgICAgIHJldHVybiBrVktfRjU7Ci0gICAgY2FzZSBJbnNw
ZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjY6CisgICAg
Y2FzZSBWaXJ0dWFsS2V5OjpGdW5jdGlvbjY6CiAgICAgICAgIHJldHVybiBrVktfRjY7Ci0gICAg
Y2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5jdGlv
bjc6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpGdW5jdGlvbjc6CiAgICAgICAgIHJldHVybiBrVktf
Rjc7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5
OjpGdW5jdGlvbjg6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpGdW5jdGlvbjg6CiAgICAgICAgIHJl
dHVybiBrVktfRjg7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpW
aXJ0dWFsS2V5OjpGdW5jdGlvbjk6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpGdW5jdGlvbjk6CiAg
ICAgICAgIHJldHVybiBrVktfRjk7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRv
bWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjEwOgorICAgIGNhc2UgVmlydHVhbEtleTo6RnVu
Y3Rpb24xMDoKICAgICAgICAgcmV0dXJuIGtWS19GMTA7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlBy
b3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjExOgorICAgIGNhc2UgVmly
dHVhbEtleTo6RnVuY3Rpb24xMToKICAgICAgICAgcmV0dXJuIGtWS19GMTE7Ci0gICAgY2FzZSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjEyOgor
ICAgIGNhc2UgVmlydHVhbEtleTo6RnVuY3Rpb24xMjoKICAgICAgICAgcmV0dXJuIGtWS19GMTI7
CiAgICAgfQogfQogCi1zdGF0aWMgTlNFdmVudE1vZGlmaWVyRmxhZ3MgZXZlbnRNb2RpZmllckZs
YWdzRm9yVmlydHVhbEtleShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFs
S2V5IGtleSkKK3N0YXRpYyBOU0V2ZW50TW9kaWZpZXJGbGFncyBldmVudE1vZGlmaWVyRmxhZ3NG
b3JWaXJ0dWFsS2V5KFZpcnR1YWxLZXkga2V5KQogewogICAgIC8vIENvbXB1dGVzIHRoZSBtb2Rp
ZmllcnMgY2hhbmdlZCBieSB0aGUgdmlydHVhbCBrZXkgd2hlbiBpdCBpcyBwcmVzc2VkIG9yIHJl
bGVhc2VkLgogICAgIC8vIFRoZSBtYXBwaW5nIGZyb20ga2V5cyB0byBtb2RpZmllcnMgaXMgc3Bl
Y2lmaWVkIGluIHRoZSBkb2N1bWVudGF0aW9uIGZvciBOU0V2ZW50LgogICAgIHN3aXRjaCAoa2V5
KSB7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5
OjpTaGlmdDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OlNoaWZ0OgogICAgICAgICByZXR1cm4gTlNF
dmVudE1vZGlmaWVyRmxhZ1NoaWZ0OwogCi0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpB
dXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpDb250cm9sOgorICAgIGNhc2UgVmlydHVhbEtleTo6Q29u
dHJvbDoKICAgICAgICAgcmV0dXJuIE5TRXZlbnRNb2RpZmllckZsYWdDb250cm9sOwogCi0gICAg
Y2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpBbHRlcm5h
dGU6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpBbHRlcm5hdGU6CiAgICAgICAgIHJldHVybiBOU0V2
ZW50TW9kaWZpZXJGbGFnT3B0aW9uOwogCi0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpB
dXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpNZXRhOgorICAgIGNhc2UgVmlydHVhbEtleTo6TWV0YToK
ICAgICAgICAgLy8gVGhlICdtZXRhJyBrZXkgZG9lcyBub3QgZXhpc3Qgb24gQXBwbGUga2V5Ym9h
cmRzIGFuZCBpcyB1c3VhbGx5CiAgICAgICAgIC8vIG1hcHBlZCB0byB0aGUgQ29tbWFuZCBrZXkg
d2hlbiB1c2luZyB0aGlyZC1wYXJ0eSBrZXlib2FyZHMuCi0gICAgY2FzZSBJbnNwZWN0b3I6OlBy
b3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpDb21tYW5kOgorICAgIGNhc2UgVmlydHVh
bEtleTo6Q29tbWFuZDoKICAgICAgICAgcmV0dXJuIE5TRXZlbnRNb2RpZmllckZsYWdDb21tYW5k
OwogCi0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5
OjpIZWxwOgorICAgIGNhc2UgVmlydHVhbEtleTo6SGVscDoKICAgICAgICAgcmV0dXJuIE5TRXZl
bnRNb2RpZmllckZsYWdIZWxwIHwgTlNFdmVudE1vZGlmaWVyRmxhZ0Z1bmN0aW9uOwogCi0gICAg
Y2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpQYWdlVXA6
Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpQ
YWdlRG93bjoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1
YWxLZXk6OkVuZDoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZp
cnR1YWxLZXk6OkhvbWU6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpQYWdlVXA6CisgICAgY2FzZSBW
aXJ0dWFsS2V5OjpQYWdlRG93bjoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkVuZDoKKyAgICBjYXNl
IFZpcnR1YWxLZXk6OkhvbWU6CiAgICAgICAgIHJldHVybiBOU0V2ZW50TW9kaWZpZXJGbGFnRnVu
Y3Rpb247CiAKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1
YWxLZXk6OkxlZnRBcnJvdzoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRp
b246OlZpcnR1YWxLZXk6OlVwQXJyb3c6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpB
dXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpSaWdodEFycm93OgotICAgIGNhc2UgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RG93bkFycm93OgorICAgIGNhc2UgVmly
dHVhbEtleTo6TGVmdEFycm93OgorICAgIGNhc2UgVmlydHVhbEtleTo6VXBBcnJvdzoKKyAgICBj
YXNlIFZpcnR1YWxLZXk6OlJpZ2h0QXJyb3c6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpEb3duQXJy
b3c6CiAgICAgICAgIHJldHVybiBOU0V2ZW50TW9kaWZpZXJGbGFnTnVtZXJpY1BhZCB8IE5TRXZl
bnRNb2RpZmllckZsYWdGdW5jdGlvbjsKIAotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RGVsZXRlOgorICAgIGNhc2UgVmlydHVhbEtleTo6RGVs
ZXRlOgogICAgICAgICByZXR1cm4gTlNFdmVudE1vZGlmaWVyRmxhZ0Z1bmN0aW9uOwogCi0gICAg
Y2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpDbGVhcjoK
LSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51
bWJlclBhZDA6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0
dWFsS2V5OjpOdW1iZXJQYWQxOgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21h
dGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkMjoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZDM6Ci0gICAgY2FzZSBJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWQ0OgotICAgIGNh
c2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFk
NToKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6
Ok51bWJlclBhZDY6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpW
aXJ0dWFsS2V5OjpOdW1iZXJQYWQ3OgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkODoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZDk6Ci0gICAgY2FzZSBJbnNw
ZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWRNdWx0aXBs
eToKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6
Ok51bWJlclBhZEFkZDoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246
OlZpcnR1YWxLZXk6Ok51bWJlclBhZFN1YnRyYWN0OgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkU2VwYXJhdG9yOgotICAgIGNh
c2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFk
RGVjaW1hbDoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1
YWxLZXk6Ok51bWJlclBhZERpdmlkZToKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkNsZWFyOgorICAg
IGNhc2UgVmlydHVhbEtleTo6TnVtYmVyUGFkMDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJl
clBhZDE6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWQyOgorICAgIGNhc2UgVmlydHVh
bEtleTo6TnVtYmVyUGFkMzoKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZDQ6CisgICAg
Y2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWQ1OgorICAgIGNhc2UgVmlydHVhbEtleTo6TnVtYmVy
UGFkNjoKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZDc6CisgICAgY2FzZSBWaXJ0dWFs
S2V5OjpOdW1iZXJQYWQ4OgorICAgIGNhc2UgVmlydHVhbEtleTo6TnVtYmVyUGFkOToKKyAgICBj
YXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZE11bHRpcGx5OgorICAgIGNhc2UgVmlydHVhbEtleTo6
TnVtYmVyUGFkQWRkOgorICAgIGNhc2UgVmlydHVhbEtleTo6TnVtYmVyUGFkU3VidHJhY3Q6Cisg
ICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWRTZXBhcmF0b3I6CisgICAgY2FzZSBWaXJ0dWFs
S2V5OjpOdW1iZXJQYWREZWNpbWFsOgorICAgIGNhc2UgVmlydHVhbEtleTo6TnVtYmVyUGFkRGl2
aWRlOgogICAgICAgICByZXR1cm4gTlNFdmVudE1vZGlmaWVyRmxhZ051bWVyaWNQYWQ7CiAKLSAg
ICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkZ1bmN0
aW9uMToKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxL
ZXk6OkZ1bmN0aW9uMjoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246
OlZpcnR1YWxLZXk6OkZ1bmN0aW9uMzoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1
dG9tYXRpb246OlZpcnR1YWxLZXk6OkZ1bmN0aW9uNDoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkZ1bmN0aW9uNToKLSAgICBjYXNlIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkZ1bmN0aW9uNjoKLSAgICBj
YXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkZ1bmN0aW9u
NzoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6
OkZ1bmN0aW9uODoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZp
cnR1YWxLZXk6OkZ1bmN0aW9uOToKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9t
YXRpb246OlZpcnR1YWxLZXk6OkZ1bmN0aW9uMTA6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjExOgotICAgIGNhc2UgSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RnVuY3Rpb24xMjoKKyAgICBj
YXNlIFZpcnR1YWxLZXk6OkZ1bmN0aW9uMToKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkZ1bmN0aW9u
MjoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkZ1bmN0aW9uMzoKKyAgICBjYXNlIFZpcnR1YWxLZXk6
OkZ1bmN0aW9uNDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkZ1bmN0aW9uNToKKyAgICBjYXNlIFZp
cnR1YWxLZXk6OkZ1bmN0aW9uNjoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkZ1bmN0aW9uNzoKKyAg
ICBjYXNlIFZpcnR1YWxLZXk6OkZ1bmN0aW9uODoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkZ1bmN0
aW9uOToKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkZ1bmN0aW9uMTA6CisgICAgY2FzZSBWaXJ0dWFs
S2V5OjpGdW5jdGlvbjExOgorICAgIGNhc2UgVmlydHVhbEtleTo6RnVuY3Rpb24xMjoKICAgICAg
ICAgcmV0dXJuIE5TRXZlbnRNb2RpZmllckZsYWdGdW5jdGlvbjsKIAogICAgIGRlZmF1bHQ6CkBA
IC00MjcsMTkgKzQyNywzNCBAQCBzdGF0aWMgTlNFdmVudE1vZGlmaWVyRmxhZ3MgZXZlbnRNb2Rp
ZmllckZsYWdzRm9yVmlydHVhbEtleShJbnNwZWN0b3I6OlByb3RvY29sOgogICAgIH0KIH0KIAot
dm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZUtleVN0cm9rZShXZWJQ
YWdlUHJveHkmIHBhZ2UsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OktleWJvYXJk
SW50ZXJhY3Rpb25UeXBlIGludGVyYWN0aW9uLCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uOjpWaXJ0dWFsS2V5IGtleSkKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3Jt
U2ltdWxhdGVLZXlib2FyZEludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgS2V5Ym9hcmRJ
bnRlcmFjdGlvbiBpbnRlcmFjdGlvbiwgc3RkOjpvcHRpb25hbDxWaXJ0dWFsS2V5PiB2aXJ0dWFs
S2V5LCBzdGQ6Om9wdGlvbmFsPENoYXJLZXk+IGNoYXJLZXkpCiB7CiAgICAgLy8gRklYTUU6IHRo
aXMgZnVuY3Rpb24gYW5kIHRoZSBBdXRvbWF0aW9uIHByb3RvY29sIGVudW0gc2hvdWxkIHByb2Jh
Ymx5IGFkb3B0IGtleSBuYW1lcwogICAgIC8vIGZyb20gVzNDIFVJRXZlbnRzIHN0YW5kYXJkLiBG
b3IgbW9yZSBkZXRhaWxzOiBodHRwczovL3czYy5naXRodWIuaW8vdWlldmVudHMtY29kZS8KIAot
ICAgIGJvb2wgaXNTdGlja3lNb2RpZmllciA9IGtleUhhc1N0aWNreU1vZGlmaWVyKGtleSk7Ci0g
ICAgTlNFdmVudE1vZGlmaWVyRmxhZ3MgY2hhbmdlZE1vZGlmaWVycyA9IGV2ZW50TW9kaWZpZXJG
bGFnc0ZvclZpcnR1YWxLZXkoa2V5KTsKLSAgICBpbnQga2V5Q29kZSA9IGtleUNvZGVGb3JWaXJ0
dWFsS2V5KGtleSk7CisgICAgQVNTRVJUKHZpcnR1YWxLZXkuaGFzX3ZhbHVlKCkgfHwgY2hhcktl
eS5oYXNfdmFsdWUoKSk7CisKKyAgICBib29sIGlzU3RpY2t5TW9kaWZpZXIgPSBmYWxzZTsKKyAg
ICBOU0V2ZW50TW9kaWZpZXJGbGFncyBjaGFuZ2VkTW9kaWZpZXJzID0gMDsKKyAgICBpbnQga2V5
Q29kZTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuaWNoYXI+IGNoYXJDb2RlOworICAgIHN0ZDo6b3B0
aW9uYWw8dW5pY2hhcj4gY2hhckNvZGVJZ25vcmluZ01vZGlmaWVyczsKKworICAgIGlmICh2aXJ0
dWFsS2V5Lmhhc192YWx1ZSgpKSB7CisgICAgICAgIGlzU3RpY2t5TW9kaWZpZXIgPSB2aXJ0dWFs
S2V5SGFzU3RpY2t5TW9kaWZpZXIodmlydHVhbEtleS52YWx1ZSgpKTsKKyAgICAgICAgY2hhbmdl
ZE1vZGlmaWVycyA9IGV2ZW50TW9kaWZpZXJGbGFnc0ZvclZpcnR1YWxLZXkodmlydHVhbEtleS52
YWx1ZSgpKTsKKyAgICAgICAga2V5Q29kZSA9IGtleUNvZGVGb3JWaXJ0dWFsS2V5KHZpcnR1YWxL
ZXkudmFsdWUoKSk7CisgICAgICAgIGNoYXJDb2RlID0gY2hhckNvZGVGb3JWaXJ0dWFsS2V5KHZp
cnR1YWxLZXkudmFsdWUoKSk7CisgICAgICAgIGNoYXJDb2RlSWdub3JpbmdNb2RpZmllcnMgPSBj
aGFyQ29kZUlnbm9yaW5nTW9kaWZpZXJzRm9yVmlydHVhbEtleSh2aXJ0dWFsS2V5LnZhbHVlKCkp
OworICAgIH0KKworICAgIGlmIChjaGFyS2V5Lmhhc192YWx1ZSgpKSB7CisgICAgICAgIGNoYXJD
b2RlID0gKHVuaWNoYXIpY2hhcktleS52YWx1ZSgpOworICAgICAgICBjaGFyQ29kZUlnbm9yaW5n
TW9kaWZpZXJzID0gKHVuaWNoYXIpY2hhcktleS52YWx1ZSgpOworICAgIH0KIAogICAgIC8vIEZJ
WE1FOiBjb25zaWRlciB1c2luZyBBcHBLaXQgU1BJIHRvIG5vcm1hbGl6ZSAnY2hhcmFjdGVycycs
IGkuZS4sIGNoYW5naW5nICogdG8gU2hpZnQtOCwKICAgICAvLyBhbmQgcGFzc2luZyB0aGF0IGlu
IHRvIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycy4gV2UgY291bGQgaGFyZGNvZGUgdGhpcyBm
b3IgQVNDSUkgaWYgbmVlZGVkLgotICAgIHN0ZDo6b3B0aW9uYWw8dW5pY2hhcj4gY2hhckNvZGUg
PSBjaGFyQ29kZUZvclZpcnR1YWxLZXkoa2V5KTsKLSAgICBzdGQ6Om9wdGlvbmFsPHVuaWNoYXI+
IGNoYXJDb2RlSWdub3JpbmdNb2RpZmllcnMgPSBjaGFyQ29kZUlnbm9yaW5nTW9kaWZpZXJzRm9y
VmlydHVhbEtleShrZXkpOwogICAgIE5TU3RyaW5nICpjaGFyYWN0ZXJzID0gY2hhckNvZGUgPyBb
TlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoYXJDb2RlLnZhbHVlKCkgbGVuZ3RoOjFd
IDogbmlsOwogICAgIE5TU3RyaW5nICp1bm1vZGlmaWVkQ2hhcmFjdGVycyA9IGNoYXJDb2RlSWdu
b3JpbmdNb2RpZmllcnMgPyBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoYXJDb2Rl
SWdub3JpbmdNb2RpZmllcnMudmFsdWUoKSBsZW5ndGg6MV0gOiBuaWw7CiAKQEAgLTQ1MiwxOSAr
NDY3LDE5IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVLZXlT
dHJva2UoV2ViUGFnZVByb3h5JiBwYWdlLCBJbnNwZWN0CiAgICAgTlNQb2ludCBldmVudFBvc2l0
aW9uID0gTlNNYWtlUG9pbnQoMCwgd2luZG93LmZyYW1lLnNpemUuaGVpZ2h0KTsKIAogICAgIHN3
aXRjaCAoaW50ZXJhY3Rpb24pIHsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9t
YXRpb246OktleWJvYXJkSW50ZXJhY3Rpb25UeXBlOjpLZXlQcmVzczogeworICAgIGNhc2UgS2V5
Ym9hcmRJbnRlcmFjdGlvbjo6S2V5UHJlc3M6IHsKICAgICAgICAgTlNFdmVudFR5cGUgZXZlbnRU
eXBlID0gaXNTdGlja3lNb2RpZmllciA/IE5TRXZlbnRUeXBlRmxhZ3NDaGFuZ2VkIDogTlNFdmVu
dFR5cGVLZXlEb3duOwogICAgICAgICBtX2N1cnJlbnRNb2RpZmllcnMgfD0gY2hhbmdlZE1vZGlm
aWVyczsKICAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbTlNFdmVudCBrZXlFdmVu
dFdpdGhUeXBlOmV2ZW50VHlwZSBsb2NhdGlvbjpldmVudFBvc2l0aW9uIG1vZGlmaWVyRmxhZ3M6
bV9jdXJyZW50TW9kaWZpZXJzIHRpbWVzdGFtcDp0aW1lc3RhbXAgd2luZG93TnVtYmVyOndpbmRv
d051bWJlciBjb250ZXh0Om5pbCBjaGFyYWN0ZXJzOmNoYXJhY3RlcnMgY2hhcmFjdGVyc0lnbm9y
aW5nTW9kaWZpZXJzOnVubW9kaWZpZWRDaGFyYWN0ZXJzIGlzQVJlcGVhdDpOTyBrZXlDb2RlOmtl
eUNvZGVdXTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbjo6S2V5Ym9hcmRJbnRlcmFjdGlvblR5cGU6OktleVJlbGVhc2U6IHsK
KyAgICBjYXNlIEtleWJvYXJkSW50ZXJhY3Rpb246OktleVJlbGVhc2U6IHsKICAgICAgICAgTlNF
dmVudFR5cGUgZXZlbnRUeXBlID0gaXNTdGlja3lNb2RpZmllciA/IE5TRXZlbnRUeXBlRmxhZ3ND
aGFuZ2VkIDogTlNFdmVudFR5cGVLZXlVcDsKICAgICAgICAgbV9jdXJyZW50TW9kaWZpZXJzICY9
IH5jaGFuZ2VkTW9kaWZpZXJzOwogICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltO
U0V2ZW50IGtleUV2ZW50V2l0aFR5cGU6ZXZlbnRUeXBlIGxvY2F0aW9uOmV2ZW50UG9zaXRpb24g
bW9kaWZpZXJGbGFnczptX2N1cnJlbnRNb2RpZmllcnMgdGltZXN0YW1wOnRpbWVzdGFtcCB3aW5k
b3dOdW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmlsIGNoYXJhY3RlcnM6Y2hhcmFjdGVycyBj
aGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6dW5tb2RpZmllZENoYXJhY3RlcnMgaXNBUmVwZWF0
Ok5PIGtleUNvZGU6a2V5Q29kZV1dOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpLZXlib2FyZEludGVyYWN0aW9uVHlwZTo6
SW5zZXJ0QnlLZXk6IHsKKyAgICBjYXNlIEtleWJvYXJkSW50ZXJhY3Rpb246Okluc2VydEJ5S2V5
OiB7CiAgICAgICAgIC8vIFN0aWNreSBtb2RpZmllcnMgc2hvdWxkIGVpdGhlciBiZSAnS2V5UHJl
c3MnIG9yICdLZXlSZWxlYXNlJy4KICAgICAgICAgQVNTRVJUKCFpc1N0aWNreU1vZGlmaWVyKTsK
ICAgICAgICAgaWYgKGlzU3RpY2t5TW9kaWZpZXIpCkBAIC01NTEsNyArNTY2LDcgQEAgdm9pZCBX
ZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZUtleVNlcXVlbmNlKFdlYlBhZ2VQ
cm94eSYgcGFnZSwgY29uc3QKIAogICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltO
U0V2ZW50IGtleUV2ZW50V2l0aFR5cGU6TlNFdmVudFR5cGVLZXlEb3duIGxvY2F0aW9uOmV2ZW50
UG9zaXRpb24gbW9kaWZpZXJGbGFnczptb2RpZmllcnNGb3JLZXlzdHJva2UgdGltZXN0YW1wOnRp
bWVzdGFtcCB3aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmlsIGNoYXJhY3RlcnM6
c3Vic3RyaW5nIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczpzdWJzdHJpbmcgaXNBUmVwZWF0
Ok5PIGtleUNvZGU6MF1dOwogICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltOU0V2
ZW50IGtleUV2ZW50V2l0aFR5cGU6TlNFdmVudFR5cGVLZXlVcCBsb2NhdGlvbjpldmVudFBvc2l0
aW9uIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJzRm9yS2V5c3Ryb2tlIHRpbWVzdGFtcDp0aW1lc3Rh
bXAgd2luZG93TnVtYmVyOndpbmRvd051bWJlciBjb250ZXh0Om5pbCBjaGFyYWN0ZXJzOnN1YnN0
cmluZyBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6c3Vic3RyaW5nIGlzQVJlcGVhdDpOTyBr
ZXlDb2RlOjBdXTsKLSAgICAgICAgCisKICAgICAgICAgaWYgKHNob3VsZFByZXNzU2hpZnQpCiAg
ICAgICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltOU0V2ZW50IGtleUV2ZW50V2l0
aFR5cGU6TlNFdmVudFR5cGVGbGFnc0NoYW5nZWQgbG9jYXRpb246ZXZlbnRQb3NpdGlvbiBtb2Rp
ZmllckZsYWdzOm1fY3VycmVudE1vZGlmaWVycyB0aW1lc3RhbXA6dGltZXN0YW1wIHdpbmRvd051
bWJlcjp3aW5kb3dOdW1iZXIgY29udGV4dDpuaWwgY2hhcmFjdGVyczpAIiIgY2hhcmFjdGVyc0ln
bm9yaW5nTW9kaWZpZXJzOkAiIiBpc0FSZXBlYXQ6Tk8ga2V5Q29kZTprVktfU2hpZnRdXTsKICAg
ICB9XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IGFkMTU0NzU5MGM2Li5lNzlhYTlhNjVlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNTI5LDYgKzE1MjksOCBAQAogCQk5
OTQ2RUY4NjFFN0IwMjcwMDA1NDFFNzkgLyogV2ViQXV0b21hdGlvblNlc3Npb25JT1MubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTQ2RUY4NTFFN0Iw
MjY2MDA1NDFFNzkgLyogV2ViQXV0b21hdGlvblNlc3Npb25JT1MubW0gKi87IH07CiAJCTk5NEJB
REYzMUY3RDc4MTEwMEI1NzFFNyAvKiBXS0luc3BlY3RvclZpZXdDb250cm9sbGVyLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk0QkFERjIxRjdENzdF
QjAwQjU3MUU3IC8qIFdLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0gKi87IH07CiAJCTk5NEJB
REY0MUY3RDc4MTQwMEI1NzFFNyAvKiBXS0luc3BlY3RvclZpZXdDb250cm9sbGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTRCQURGMTFGN0Q3N0VB
MDBCNTcxRTcgLyogV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5oICovOyB9OworCQk5OTUyMjZE
NjIwN0QxODQ2MDBGNzg0MjAgLyogU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTUyMjZENDIwN0QxODQ1MDBG
Nzg0MjAgLyogU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmggKi87IH07CisJCTk5NTIyNkQ3MjA3
RDE4NDYwMEY3ODQyMCAvKiBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk1MjI2RDUyMDdEMTg0NjAwRjc4
NDIwIC8qIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5jcHAgKi87IH07CiAJCTk5NTVBNkVDMUM3
OTgwQzIwMEVCNkE5MyAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk1NUE2RUIxQzc5ODBCQjAwRUI2QTkzIC8q
IFdlYkF1dG9tYXRpb25TZXNzaW9uLmggKi87IH07CiAJCTk5NTVBNkVEMUM3OTgwQ0EwMEVCNkE5
MyAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5OTU1QTZFQTFDNzk4MEJCMDBFQjZBOTMgLyogV2ViQXV0b21h
dGlvblNlc3Npb24uY3BwICovOyB9OwogCQk5OTU1QTZFRjFDNzk4MTA4MDBFQjZBOTMgLyogQXV0
b21hdGlvbi5qc29uIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTk1NUE2RTkxQzc5ODBCQjAwRUI2QTkzIC8qIEF1dG9tYXRpb24uanNvbiAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNDAxOSw2ICs0MDIxLDgg
QEAKIAkJOTk0NkVGODUxRTdCMDI2NjAwNTQxRTc5IC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uSU9T
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViQXV0b21hdGlv
blNlc3Npb25JT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5NEJBREYxMUY3
RDc3RUEwMEI1NzFFNyAvKiBXS0luc3BlY3RvclZpZXdDb250cm9sbGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk0QkFERjIxRjdENzdFQjAwQjU3MUU3IC8qIFdLSW5z
cGVjdG9yVmlld0NvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBXS0luc3BlY3RvclZpZXdDb250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk5OTUyMjZENDIwN0QxODQ1MDBGNzg0MjAgLyogU2ltdWxhdGVkSW5wdXREaXNw
YXRjaGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNpbXVsYXRlZElucHV0
RGlzcGF0Y2hlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OTUyMjZENTIwN0Qx
ODQ2MDBGNzg0MjAgLyogU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5NTVBNkU5MUM3OTgwQkIwMEVCNkE5MyAvKiBB
dXRvbWF0aW9uLmpzb24gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmpzb247IHBhdGggPSBBdXRvbWF0aW9uLmpz
b247IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5NTVBNkVBMUM3OTgwQkIwMEVCNkE5
MyAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTk5NTVBNkVCMUM3OTgwQkIwMEVCNkE5MyAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBdXRvbWF0aW9uU2Vzc2lv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjk3MCw2ICs2OTc0LDggQEAKIAkJ
CQk5OTQ2RUY4MjFFN0IwMjNEMDA1NDFFNzkgLyogaW9zICovLAogCQkJCTk5QzNBRTIyMURBRDhF
MTQwMEFGNUMxNiAvKiBtYWMgKi8sCiAJCQkJOTk1NUE2RTkxQzc5ODBCQjAwRUI2QTkzIC8qIEF1
dG9tYXRpb24uanNvbiAqLywKKwkJCQk5OTUyMjZENTIwN0QxODQ2MDBGNzg0MjAgLyogU2ltdWxh
dGVkSW5wdXREaXNwYXRjaGVyLmNwcCAqLywKKwkJCQk5OTUyMjZENDIwN0QxODQ1MDBGNzg0MjAg
LyogU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmggKi8sCiAJCQkJOTk1NUE2RUExQzc5ODBCQjAw
RUI2QTkzIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uLmNwcCAqLywKIAkJCQk5OTU1QTZFQjFDNzk4
MEJCMDBFQjZBOTMgLyogV2ViQXV0b21hdGlvblNlc3Npb24uaCAqLywKIAkJCQkxQzBBMTk1OTFD
OTAwNkVBMDBGRTBFQkIgLyogV2ViQXV0b21hdGlvblNlc3Npb24ubWVzc2FnZXMuaW4gKi8sCkBA
IC05MTc0LDYgKzkxODAsNyBAQAogCQkJCTgzMTNGN0VDMUY3REFFMDgwMEI5NDRFQiAvKiBTaGFy
ZWRTdHJpbmdIYXNoU3RvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzMTNGN0VFMUY3REFFMDgw
MEI5NDRFQiAvKiBTaGFyZWRTdHJpbmdIYXNoVGFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTgz
Rjk2NDRFMUZBMEY3NkUwMEM0Nzc1MCAvKiBTaGFyZWRTdHJpbmdIYXNoVGFibGVSZWFkT25seS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJOTk1MjI2RDYyMDdEMTg0NjAwRjc4NDIwIC8qIFNpbXVsYXRl
ZElucHV0RGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRBRjA2RDYxOEJEMUE0NzAw
ODFDRUIxIC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTJERTY5NDNFMThCRDJBNjgwMDVDMTVFNSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9s
bGVyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUyNzJCMjhCMTQwNjk4NUQwMDk2QTVE
MCAvKiBTdGF0aXN0aWNzRGF0YS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDg3Niw2ICsxMDg4Myw3
IEBACiAJCQkJODMxM0Y3RUIxRjdEQUUwODAwQjk0NEVCIC8qIFNoYXJlZFN0cmluZ0hhc2hTdG9y
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4MzEzRjdFRDFGN0RBRTA4MDBCOTQ0RUIgLyogU2hh
cmVkU3RyaW5nSGFzaFRhYmxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTgzRjk2NDREMUZBMEY3
NkUwMEM0Nzc1MCAvKiBTaGFyZWRTdHJpbmdIYXNoVGFibGVSZWFkT25seS5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk5OTUyMjZENzIwN0QxODQ2MDBGNzg0MjAgLyogU2ltdWxhdGVkSW5wdXREaXNw
YXRjaGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEQUYwNkQ3MThCRDFBNDcwMDgxQ0VCMSAv
KiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkRF
Njk0M0QxOEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNz
YWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTI3MkIyOEExNDA2OTg1RDAwOTZB
NUQwIC8qIFN0YXRpc3RpY3NEYXRhLmNwcCBpbiBTb3VyY2VzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338172</attachid>
            <date>2018-04-17 17:53:27 -0700</date>
            <delta_ts>2018-04-17 21:57:04 -0700</delta_ts>
            <desc>Rebased Patch</desc>
            <filename>bug-184603-20180417175327.patch</filename>
            <type>text/plain</type>
            <size>103649</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwNzQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDZhNWNiNGIwNGE4NGRjMTVk
OWE2ODc3ZDg4ODJhMjZkMTVhM2Y0ZjUuLjY4YzQ5MmFkMTMwODU2YWM2NmUxNTMxY2YwYmQwMjI5
OGFjNzI2MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTI5IEBACisyMDE4LTA0LTE3ICBCcmlhbiBC
dXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBBdXRvbWF0aW9uOiBhZGQgc3Vw
cG9ydCBmb3IgbW91c2Uva2V5Ym9hcmQgaW50ZXJhY3Rpb24gc2VxdWVuY2VzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQ2MDMKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzM5NDIxODM5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCBuZXcgcHJvdG9jb2wgbWV0aG9kcyBhbmQgV2ViS2l0IHN1cHBv
cnQgZm9yIGltcGxlbWVudGluZyB0aGUgVzNDIEFjdGlvbnMgQVBJLgorICAgICAgICBUaGlzIGlz
IGEgZ2VuZXJpYyBjb21tYW5kIGZvciBzZW5kaW5nIGxvdy1sZXZlbCBtb3VzZSwga2V5LCBhbmQg
dG91Y2ggZXZlbnRzIHRvCisgICAgICAgIHRlc3QgcGFnZSBiZWhhdmlvciB3aGVuIHBlcmZvcm1p
bmcgZHJhZy1hbmQtZHJvcCwgZ2VzdHVyZXMsIG9yIHNwZWNpZmljIGtleWRvd24va2V5dXBzLgor
CisgICAgICAgIFRvIGltcGxlbWVudCB0aGlzIGZ1bmN0aW9uYWxpdHksIHRoaXMgcGF0Y2ggYWRk
cyBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIsIGEgY2xhc3MKKyAgICAgICAgZm9yIGRpc3BhdGNo
aW5nIGlucHV0IGV2ZW50cyBhc3luY2hyb25vdXNseS4gU2ltaWxhciB0byB0aGUgV2ViRHJpdmVy
IHNwZWNpZmljYXRpb24sCisgICAgICAgIHRoaXMgaXMgZGVzaWduZWQgYXMgYSBrZXlmcmFtaW5n
IEFQSS4gQ2FsbGVycyBzZXQgdXAgc2V2ZXJhbCAiaW5wdXQgc291cmNlcyIgc3VjaAorICAgICAg
ICBhcyBrZXlib2FyZCBvciBtb3VzZSwgYW5kIHRoZW4gc3BlY2lmeSB0aGUgc3RhdGVzIG9mIHRo
YXQgaW5wdXQgc291cmNlIG92ZXIgdGltZS4gVGhlCisgICAgICAgIGRpc3BhdGNoZXIgY2FsY3Vs
YXRlcyBkaWZmcyBiZXR3ZWVuIHRoZSBwcmV2aW91cyBhbmQgY3VycmVudCBrZXlmcmFtZXMgYW5k
IGdlbmVyYXRlcworICAgICAgICB0aGUgYXBwcm9wcmlhdGUgZXZlbnRzIHRoYXQgd291bGQgaGFw
cGVuIGlmIGEgdXNlciBjYXVzZWQgdGhlIHN0YXRlIHRyYW5zaXRpb24uCisKKyAgICAgICAgRm9y
IGV4YW1wbGUsIGlmIGEgbW91c2UgaW5wdXQgc291cmNlJ3Mgc3RhdGUgY2hhbmdlcywgdGhlIGRp
c3BhdGNoZXIgc2VuZHMgc3ludGhldGljIG1vdXNlbW92ZSwKKyAgICAgICAgbW91c2Vkb3duLCBv
ciBtb3VzZXVwIGV2ZW50cyBkZXBlbmRpbmcgb24gdGhlIHByZS0gYW5kIHBvc3Qtc3RhdGUuIFRo
aXMgaXMgdW5pbnRlcmVzdGluZworICAgICAgICBhbmQgb3ZlcmNvbXBsaWNhdGVkIGZvciBzaW1w
bGUga2V5IGFuZCBtb3VzZSBwcmVzc2VzLCBidXQgaXQncyByZWFsbHkgZGVzaWduZWQgd2l0aCBh
bgorICAgICAgICBleWUgdG93YXJkcyBzdXBwb3J0aW5nIG1vdXNlbW92ZSBpbnRlcnBvbGF0aW9u
IGFuZCB0b3VjaCBldmVudCBpbnRlcnBvbGF0aW9uIGluIGxhdGVyIHBhdGNoZXMuCisKKyAgICAg
ICAgVGhlIHN0cmF0ZWd5IGZvciBkaXNwYXRjaGluZyBldmVudHMgZGVwZW5kcyBvbiB0aGUgaW5w
dXQgc291cmNlIHR5cGU7IHJpZ2h0IG5vdywgdGhlc2UKKyAgICAgICAgbWFwIGRpcmVjdGx5IHRv
IHRoZSBleGlzdGluZyBwbGF0Zm9ybVNpbXVsYXRle01vdXNlLCBLZXlib2FyZH1JbnRlcmFjdGlv
biBtZXRob2RzLiBJbgorICAgICAgICB0aGUgZnV0dXJlLCB0aGUgZGlzcGF0Y2ggc3RyYXRlZ3kg
bWF5IGJlIGVsYWJvcmF0ZWQgZm9yIGludGVycG9sYXRlZCBtb3VzZW1vdmUgZXZlbnRzLgorCisg
ICAgICAgIFRoaXMgcGF0Y2ggZGVwZW5kcyBvbiBzdXBwb3J0IGFkZGVkIGluIGJ1ZyAxODQ0NjIu
CisKKyAgICAgICAgTm8gdGVzdHMgeWV0LiBXaGVuIHRoaXMgY29tbWFuZCBpcyBob29rZWQgdXAg
dG8gYSBkcml2ZXIsIHRoZSBjb2RlIHdpbGwgYmUgZXhlcmNpc2VkIGJ5CisgICAgICAgIFczQyBh
Y3Rpb25zIHRlc3Qgc3VpdGUsIHdoaWNoIGlzIGZhaXJseSBjb21wbGV4IGF0IHRoaXMgcG9pbnQg
cmVsYXRpdmUgdG8gZW5kLXVzZXIgY29kZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0
aW9uL0F1dG9tYXRpb24uanNvbjogQWRkIG5ldyB0eXBlcyBhbmQgY29tbWFuZHMuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9TaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuaDogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6OlNpbXVsYXRlZElucHV0U291cmNlU3RhdGU6OmVtcHR5U3Rh
dGUpOgorICAgICAgICAoV2ViS2l0OjpTaW11bGF0ZWRJbnB1dFNvdXJjZTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYktpdDo6U2ltdWxhdGVkSW5wdXRTb3VyY2U6OlNpbXVsYXRlZElucHV0U291cmNl
KToKKyAgICAgICAgKFdlYktpdDo6U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjpDbGllbnQ6On5D
bGllbnQpOgorICAgICAgICBBZGQgc3RydWN0cyBmb3IgaW5wdXQgc291cmNlLCBzb3VyY2Ugc3Rh
dGUsIGFuZCBrZXlmcmFtZS4KKyAgICAgICAgVGhlIGRpc3BhdGNoZXIncyBjbGllbnQgaW50ZXJm
YWNlIGlzIGltcGxlbWVudGVkIGJ5IFdlYkF1dG9tYXRpb25TZXNzaW9uLgorCisgICAgICAgIChX
ZWJLaXQ6OlNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQXV0b21hdGlvbi9TaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6U2ltdWxhdGVkSW5wdXRLZXlGcmFtZTo6U2ltdWxhdGVkSW5wdXRLZXlG
cmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlNpbXVsYXRlZElucHV0S2V5RnJhbWU6Om1heGltdW1E
dXJhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNpbXVsYXRlZElucHV0S2V5RnJhbWU6
OmtleUZyYW1lRnJvbVN0YXRlT2ZJbnB1dFNvdXJjZXMpOgorICAgICAgICAoV2ViS2l0OjpTaW11
bGF0ZWRJbnB1dEtleUZyYW1lOjprZXlGcmFtZVRvUmVzZXRJbnB1dFNvdXJjZXMpOgorICAgICAg
ICAoV2ViS2l0OjpTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OlNpbXVsYXRlZElucHV0RGlzcGF0
Y2hlcik6CisgICAgICAgIChXZWJLaXQ6OlNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6flNpbXVs
YXRlZElucHV0RGlzcGF0Y2hlcik6CisgICAgICAgIChXZWJLaXQ6OlNpbXVsYXRlZElucHV0RGlz
cGF0Y2hlcjo6aXNBY3RpdmUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTaW11bGF0ZWRJbnB1
dERpc3BhdGNoZXI6OmtleUZyYW1lVHJhbnNpdGlvbkR1cmF0aW9uVGltZXJGaXJlZCk6CisgICAg
ICAgIChXZWJLaXQ6OlNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6aXNLZXlGcmFtZVRyYW5zaXRp
b25Db21wbGV0ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNpbXVsYXRlZElucHV0RGlzcGF0
Y2hlcjo6dHJhbnNpdGlvblRvTmV4dEtleUZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6U2ltdWxh
dGVkSW5wdXREaXNwYXRjaGVyOjp0cmFuc2l0aW9uVG9OZXh0SW5wdXRTb3VyY2VTdGF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6dHJhbnNpdGlvbkJldHdl
ZW5LZXlGcmFtZXMpOgorICAgICAgICAoV2ViS2l0OjpTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6
OnRyYW5zaXRpb25JbnB1dFNvdXJjZVRvU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpTaW11bGF0
ZWRJbnB1dERpc3BhdGNoZXI6OnJ1bik6CisgICAgICAgIChXZWJLaXQ6OlNpbXVsYXRlZElucHV0
RGlzcGF0Y2hlcjo6Y2FuY2VsKToKKyAgICAgICAgKFdlYktpdDo6U2ltdWxhdGVkSW5wdXREaXNw
YXRjaGVyOjpmaW5pc2hEaXNwYXRjaGluZyk6CisgICAgICAgIFRoZSBkaXNwYXRjaGVyIGhhbmRs
ZXMgb25lIGludGVyYWN0aW9uIGF0IGEgdGltZS4gVGhlIGludGVyYWN0aW9uIGlzIGRlc2NyaWJl
ZAorICAgICAgICBieSBhbiBhcnJheSBvZiBrZXlmcmFtZXMsIGFuZCBlYWNoIGtleWZyYW1lIGhh
cyBhbiBhcnJheSBvZiBzdGF0ZXMuIFRoZSBkaXNwYXRjaGVyCisgICAgICAgIHRyYW5zaXRpb25z
IGJldHdlZW4ga2V5ZnJhbWVzIGJ5IHNlcXVlbnRpYWxseSBhbmQgYXN5bmNocm9ub3VzbHkgZW1p
dHRpbmcgZXZlbnRzCisgICAgICAgIHRoYXQgY2F1c2UgZWFjaCBpbnB1dCBzb3VyY2Ugc3RhdGUg
dG8gdHJhbnNpdGlvbiBhcyBkZXNpcmVkLiBLZXlmcmFtZSB0cmFuc2l0aW9ucworICAgICAgICBh
cmUgYWRkaXRpb25hbGx5IGdhdGVkIGJ5IGEgIm1heGltdW0gZHVyYXRpb24iIHRpbWVyLiBFYWNo
IHN0ZXAgdGhhdCB0aGUgZGlzcGF0Y2hlcgorICAgICAgICBleGVjdXRlcyBpcyBhc3luY2hyb25v
dXMsIHNvIHRoZSBkaXNwYXRjaGVyIGtlZXBzIG1vc3Qgc3RhdGUgaW4gbWVtYmVycyBhbmQgdXNl
cworICAgICAgICBlcnJvciBhcmd1bWVudCBsYW1iZGFzIGFzIGNvbXBsZXRpb24gaGFuZGxlcnMg
Zm9yIHZhcmlvdXMgYXN5bmMgdGhpbmdzLgorCisgICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRp
b24vV2ViQXV0b21hdGlvblNlc3Npb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlv
bi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRp
b25TZXNzaW9uOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkF1
dG9tYXRpb25TZXNzaW9uOjppbnB1dERpc3BhdGNoZXJGb3JQYWdlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViQXV0b21hdGlvblNlc3Npb246OmlucHV0U291cmNlRm9yVHlwZSBjb25zdCk6CisgICAg
ICAgIEFkZCBjYW5vbmljYWwgaW5wdXQgc291cmNlcyB0aGF0IGFyZSB1c2VkIHRvIGtlZXAgdHJh
Y2sgb2Ygc3RhdGUgYWNyb3NzCisgICAgICAgIGludGVyYWN0aW9uIHNlcXVlbmNlcy4KKworICAg
ICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6aXNTaW11bGF0aW5nVXNlckludGVy
YWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246Om1v
dXNlRXZlbnRzRmx1c2hlZEZvclBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9u
U2Vzc2lvbjo6a2V5Ym9hcmRFdmVudHNGbHVzaGVkRm9yUGFnZSk6CisgICAgICAgIFJlbW92ZSBt
X3NpbXVsYXRpbmdVc2VySW50ZXJhY3Rpb24gc2luY2UgaXQgY2FuIGJlIGNvbXB1dGVkIGJhc2Vk
IG9uIG90aGVyIG1lbWJlcnMuCisKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Np
b246OndpbGxDbG9zZVBhZ2UpOgorICAgICAgICBJZiB0aGUgcGFnZSBpcyBiZWluZyB0b3JuIGRv
d24sIHN0b3AgdGhlIGRpc3BhdGNoZXIgaWYgbmVlZGVkIGFuZCBjYW5jZWwgYW55CisgICAgICAg
IGNhbGxiYWNrcyB3YWl0aW5nIGZvciBtb3VzZS9rZXkgZXZlbnRzIHRvIGJlIHJldGlyZWQuCisK
KyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OnNpbXVsYXRlTW91c2VJbnRl
cmFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpzaW11bGF0
ZUtleWJvYXJkSW50ZXJhY3Rpb24pOgorICAgICAgICBBZGQgZWFzeS10by11c2UgYXN5bmMgbWV0
aG9kcyBmb3Igc2ltdWxhdGluZyBtb3VzZSBhbmQga2V5IGV2ZW50cy4gVGhlc2UgYXJlCisgICAg
ICAgIGhvb2tlZCB1cCB0byBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIgdXNpbmcgYXN5bmMgY29t
cGxldGlvbiBoYW5kbGVycy4KKworICAgICAgICAoV2ViS2l0Ojpwcm90b2NvbE1vdXNlQnV0dG9u
VG9XZWJNb3VzZUV2ZW50QnV0dG9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNl
c3Npb246OnBlcmZvcm1Nb3VzZUludGVyYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0
b21hdGlvblNlc3Npb246OnBlcmZvcm1LZXlib2FyZEludGVyYWN0aW9ucyk6CisgICAgICAgIEFk
anVzdCBzb21lIG5hbWluZy4KKworICAgICAgICAoV2ViS2l0OjpzaW11bGF0ZWRJbnB1dFNvdXJj
ZVR5cGVGcm9tUHJvdG9jb2xTb3VyY2VUeXBlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21h
dGlvblNlc3Npb246OnBlcmZvcm1JbnRlcmFjdGlvblNlcXVlbmNlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViQXV0b21hdGlvblNlc3Npb246OmNhbmNlbEludGVyYWN0aW9uU2VxdWVuY2UpOgorICAg
ICAgICBBZGQgY29tbWFuZCBoYW5kbGVycyBmb3IgdGhlIG5ldyBhY3Rpb24gY29tbWFuZHMgaW4g
QXV0b21hdGlvbiBwcm90b2NvbC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL2d0
ay9XZWJBdXRvbWF0aW9uU2Vzc2lvbkd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1vdXNlQnV0
dG9uVG9HZGtCdXR0b24pOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6
cGxhdGZvcm1TaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJB
dXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZUtleWJvYXJkSW50ZXJhY3Rpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZUtl
eVN0cm9rZSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRpb24vaW9zL1dl
YkF1dG9tYXRpb25TZXNzaW9uSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9u
U2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZUtleWJvYXJkSW50ZXJhY3Rpb24pOgorICAgICAgICAo
V2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZUtleVN0cm9rZSk6
IERlbGV0ZWQuCisgICAgICAgIFJlbmFtZSB0aGUga2V5Ym9hcmQgcGxhdGZvcm0gbWV0aG9kIHRv
IG1hdGNoIHRoZSBuYW1pbmcgb2YgdGhlIG1vdXNlIHBsYXRmb3JtIG1ldGhvZC4KKyAgICAgICAg
VGFrZSBhZHZhbnRhZ2Ugb2YgdGhlICd1c2luZycgYWxpYXMgdG8gbWFrZSB0aGUgdGVkaW91cyBz
d2l0Y2hlcyBlYXNpZXIgdG8gcmVhZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9u
L21hYy9XZWJBdXRvbWF0aW9uU2Vzc2lvbk1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0
b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVNb3VzZUludGVyYWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6dmlydHVhbEtleUhhc1N0aWNreU1vZGlmaWVyKToKKyAgICAgICAgKFdlYktp
dDo6a2V5Q29kZUZvclZpcnR1YWxLZXkpOgorICAgICAgICAoV2ViS2l0OjpldmVudE1vZGlmaWVy
RmxhZ3NGb3JWaXJ0dWFsS2V5KToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Np
b246OnBsYXRmb3JtU2ltdWxhdGVLZXlib2FyZEludGVyYWN0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6V2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVLZXlTZXF1ZW5jZSk6Cisg
ICAgICAgIChXZWJLaXQ6OmtleUhhc1N0aWNreU1vZGlmaWVyKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVLZXlTdHJva2Up
OiBEZWxldGVkLgorICAgICAgICBBbGxvdyB0aGUga2V5Ym9hcmQgc2ltdWxhdGlvbiBtZXRob2Qg
dG8gdGFrZSBhIHZpcnR1YWwga2V5IGFuZCB1bmljaGFyIHRvIGJldHRlcgorICAgICAgICBtYXRj
aCBob3cgdGhpcyBpcyB1c2VkIGJ5IHRoZSBQZXJmb3JtIEFjdGlvbnMgY29tbWFuZCBhbmQgaXRz
IG1hY2hpbmVyeS4KKworICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorCiAyMDE4LTA0LTExICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgogCiAgICAgICAg
IFdlYiBBdXRvbWF0aW9uOiBzaW11bGF0ZWQgbW91c2UgaW50ZXJhY3Rpb25zIHNob3VsZCBub3Qg
YmUgZG9uZSB1bnRpbCBhc3NvY2lhdGVkIERPTSBldmVudHMgaGF2ZSBiZWVuIGRpc3BhdGNoZWQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0
L0NNYWtlTGlzdHMudHh0CmluZGV4IGUwZDEzMWVjYWY1Mjg4NjkzMTc4ZDNiY2Y0Nzk0MDFkZWEz
YzVmZTQuLmI5Mzk4MjAwYzY5ZTg2ZjE0ZGM1OTZmYmVhNTJhMDU0NzcwNDk1Y2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdC9DTWFr
ZUxpc3RzLnR4dApAQCAtNDMxLDYgKzQzMSw3IEBAIHNldChXZWJLaXRfU09VUkNFUwogICAgIFVJ
UHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9XZWJDcmVkZW50aWFsLmNwcAogICAgIFVJUHJvY2Vzcy9B
dXRoZW50aWNhdGlvbi9XZWJQcm90ZWN0aW9uU3BhY2UuY3BwCiAKKyAgICBVSVByb2Nlc3MvQXV0
b21hdGlvbi9TaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuY3BwCiAgICAgVUlQcm9jZXNzL0F1dG9t
YXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCiAKICAgICBVSVByb2Nlc3MvRG93bmxvYWRz
L0Rvd25sb2FkUHJveHkuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
dXRvbWF0aW9uL0F1dG9tYXRpb24uanNvbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9t
YXRpb24vQXV0b21hdGlvbi5qc29uCmluZGV4IDdlODZkMTQ5YzI1YzE5MTQwNDIxZDM4ODRhNTFi
YjZjMGY5ZTYyOTAuLmMzMTdlMWEyNjIwZDlkZTdjYTZjOGFhNjNhZDMyODcwOWIxMjZiZWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vQXV0b21hdGlvbi5q
c29uCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vQXV0b21hdGlvbi5q
c29uCkBAIC03Miw3ICs3Miw4IEBACiAgICAgICAgICAgICAgICAgIkVsZW1lbnROb3RJbnRlcmFj
dGFibGUiLAogICAgICAgICAgICAgICAgICJFbGVtZW50Tm90U2VsZWN0YWJsZSIsCiAgICAgICAg
ICAgICAgICAgIlNjcmVlbnNob3RFcnJvciIsCi0gICAgICAgICAgICAgICAgIlVuZXhwZWN0ZWRB
bGVydE9wZW4iCisgICAgICAgICAgICAgICAgIlVuZXhwZWN0ZWRBbGVydE9wZW4iLAorICAgICAg
ICAgICAgICAgICJUYXJnZXRPdXRPZkJvdW5kcyIKICAgICAgICAgICAgIF0KICAgICAgICAgfSwK
ICAgICAgICAgewpAQCAtMjQ0LDYgKzI0NSw0NiBAQAogICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAicGVybWlzc2lvbiIsICIkcmVmIjogIlNlc3Npb25QZXJtaXNzaW9uIiB9LAogICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAidmFsdWUiLCAidHlwZSI6ICJib29sZWFuIiB9CiAgICAgICAgICAg
ICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJJbnB1dFNvdXJj
ZVR5cGUiLAorICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKKyAgICAgICAgICAgICJkZXNj
cmlwdGlvbiI6ICJUaGUgdHlwZSBvZiBhbiBpbnB1dCBzb3VyY2UuIFRoaXMgZGV0ZXJtaW5lcyB3
aGljaCBzdGF0ZSBwcm9wZXJ0aWVzIGFyZSBhcHBsaWNhYmxlIHRvIHRoZSBpbnB1dCBzb3VyY2Uu
IFRoZSAnTnVsbCcgaW5wdXQgc291cmNlIHR5cGUgaGFzIG5vIHByb3BlcnRpZXMsIG9ubHkgYSBk
dXJhdGlvbi4gVGhpcyBjYW4gZXh0ZW5kIHRoZSBlZmZlY3RpdmUgd2FpdCBmb3IgYSB0aWNrLiIs
CisgICAgICAgICAgICAiZW51bSI6IFsKKyAgICAgICAgICAgICAgICAiTnVsbCIsCisgICAgICAg
ICAgICAgICAgIk1vdXNlIiwKKyAgICAgICAgICAgICAgICAiS2V5Ym9hcmQiLAorICAgICAgICAg
ICAgICAgICJUb3VjaCIKKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAg
ICAgICAgICAgImlkIjogIklucHV0U291cmNlIiwKKyAgICAgICAgICAgICJ0eXBlIjogIm9iamVj
dCIsCisgICAgICAgICAgICAicHJvcGVydGllcyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1l
IjogInNvdXJjZUlkIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIkEgdW5pcXVl
IGlkZW50aWZpZXIgZm9yIHRoaXMgaW5wdXQgc291cmNlLiIgfSwKKyAgICAgICAgICAgICAgICB7
ICJuYW1lIjogInNvdXJjZVR5cGUiLCAiJHJlZiI6ICJJbnB1dFNvdXJjZVR5cGUiLCAiZGVzY3Jp
cHRpb24iOiAiVGhlIHR5cGUgb2YgdGhpcyBpbnB1dCBzb3VyY2UuIFRoaXMgYWZmZWN0cyB3aGF0
IGlucHV0IHNvdXJjZSBzdGF0ZSBmaWVsZHMgYXJlIHZhbGlkIGZvciB0aGlzIGlucHV0IHNvdXJj
ZS4iIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAg
ImlkIjogIkludGVyYWN0aW9uU3RlcCIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQSBz
ZXQgb2YgaW5wdXQgc291cmNlIHN0YXRlcyB0byB3aGljaCBhbGwgYXBwbGljYWJsZSBpbnB1dCBz
b3VyY2VzIG11c3QgdHJhbnNpdGlvbiBiZWZvcmUgZnVydGhlciBzdGVwcyBtYXkgYmUgcHJvY2Vz
c2VkLiBJZiBhbiBpbnB1dCBzb3VyY2UgZG9lcyBub3QgaGF2ZSBhIGNvcnJlc3BvbmRpbmcgc3Rh
dGUgaW4gYSBzdGVwLCBpdHMgc3RhdGUgYXNzdW1lZCB0byBiZSAncmVsZWFzZWQnIGZvciB0aGF0
IHN0ZXAuIiwKKyAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCisgICAgICAgICAgICAicHJv
cGVydGllcyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInN0YXRlcyIsICJ0eXBlIjog
ImFycmF5IiwgIml0ZW1zIjogeyAiJHJlZiI6ICJJbnB1dFNvdXJjZVN0YXRlIiB9LCAib3B0aW9u
YWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiQSBsaXN0IG9mIG5ldyBpbnB1dCBzdGF0ZXMgZm9y
IGlucHV0IHNvdXJjZXMgdGhhdCBtdXN0IHRyYW5zaXRpb24gZHVyaW5nIHRoaXMgc3RlcC4gU291
cmNlIHN0YXRlIHRyYW5zaXRpb25zIHRoYXQgY2Fubm90IGJlIHBlcmZvcm1lZCBjb25jdXJyZW50
bHkgKGkuZS4sIHRvdWNoIGdlc3R1cmVzKSBhcmUgcGVyZm9ybWVkIHNlcXVlbnRpYWxseSBpbiB0
aGUgb3JkZXIgdGhleSBhcmUgbGlzdGVkLiIgfQorICAgICAgICAgICAgXQorICAgICAgICB9LAor
ICAgICAgICB7CisgICAgICAgICAgICAiaWQiOiAiSW5wdXRTb3VyY2VTdGF0ZSIsCisgICAgICAg
ICAgICAidHlwZSI6ICJvYmplY3QiLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkEgbmV3
IHN0YXRlIGZvciBhIHNwZWNpZmljIGlucHV0IHNvdXJjZS4gQWxsIHN0YXRlLXJlbGF0ZWQgZmll
bGRzIGFyZSBvcHRpb25hbCBhbmQgbXVzdCBiZSBhcHBsaWNhYmxlIHRvIHRoZSBJbnB1dFNvdXJj
ZSByZWZlcmVuY2VkIGJ5ICdzb3VyY2VJZCcuIElmIG5vIHN0YXRlLXJlbGF0ZWQgZmllbGRzIGFy
ZSBzcGVjaWZpZWQsIHRoZSBzdGF0ZSBpcyBhc3N1bWVkIHRvIHJlbWFpbiB0aGUgc2FtZSBhcyBp
biB0aGUgcHJldmlvdXMgc3RlcCAoaS5lLiwgJ3N1c3RhaW5lZCcpLiIsCisgICAgICAgICAgICAi
cHJvcGVydGllcyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNvdXJjZUlkIiwgInR5
cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIlRoZSBpbnB1dCBzb3VyY2Ugd2hvc2Ugc3Rh
dGUgaXMgZGVzY3JpYmVkIGJ5IHRoaXMgb2JqZWN0LiIgfSwKKyAgICAgICAgICAgICAgICB7ICJu
YW1lIjogInByZXNzZWRDaGFyS2V5IiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjogdHJ1
ZSwgImRlc2NyaXB0aW9uIjogIkZvciAna2V5Ym9hcmQnIGlucHV0IHNvdXJjZXMsIHNwZWNpZmll
cyBhIGNoYXJhY3RlciBrZXkgdGhhdCBoYXMgJ3ByZXNzZWQnIHN0YXRlLiBVbm1lbnRpb25lZCBj
aGFyYWN0ZXIga2V5cyBhcmUgYXNzdW1lZCB0byBoYXZlIGEgJ3JlbGVhc2VkJyBzdGF0ZS4iIH0s
CisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJwcmVzc2VkVmlydHVhbEtleSIsICIkcmVmIjog
IlZpcnR1YWxLZXkiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiRm9yICdrZXli
b2FyZCcgaW5wdXQgc291cmNlcywgc3BlY2lmaWVzIGEgdmlydHVhbCBrZXkgdGhhdCBoYXMgYSAn
cHJlc3NlZCcgc3RhdGUuIFVubWVudGlvbmVkIHZpcnR1YWwga2V5cyBhcmUgYXNzdW1lZCB0byBo
YXZlIGEgJ3JlbGVhc2VkJyBzdGF0ZS4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJw
cmVzc2VkQnV0dG9uIiwgIiRyZWYiOiAiTW91c2VCdXR0b24iLCAib3B0aW9uYWwiOiB0cnVlLCAi
ZGVzY3JpcHRpb24iOiAiRm9yICdtb3VzZScgaW5wdXQgc291cmNlcywgc3BlY2lmaWVzIHdoaWNo
IG1vdXNlIGJ1dHRvbiBoYXMgYSAncHJlc3NlZCcgc3RhdGUuIFVubWVudGlvbmVkIG1vdXNlIGJ1
dHRvbnMgYXJlIGFzc3VtZWQgdG8gaGF2ZSBhICdyZWxlYXNlZCcgc3RhdGUuIiB9LAorICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAibG9jYXRpb24iLCAiJHJlZiI6ICJQb2ludCIsICJvcHRpb25h
bCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJGb3IgJ21vdXNlJyBvciAndG91Y2gnIGlucHV0IHNv
dXJjZXMsIHNwZWNpZmllcyBhIGxvY2F0aW9uIGluIHZpZXcgY29vcmRpbmF0ZXMgdG8gd2hpY2gg
dGhlIGlucHV0IHNvdXJjZSBzaG91bGQgdHJhbnNpdGlvbi4gVHJhbnNpdGlvbmluZyB0byB0aGlz
IHN0YXRlIG1heSBpbnRlcnBvbGF0ZSBpbnRlbWVkaWF0ZSBpbnB1dCBzb3VyY2Ugc3RhdGVzIHRv
IGJldHRlciBzaW11bGF0ZSByZWFsIHVzZXIgbW92ZW1lbnRzIGFuZCBnZXN0dXJlcy4iIH0sCisg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJkdXJhdGlvbiIsICJ0eXBlIjogImludGVnZXIiLCAi
b3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiVGhlIG1pbmltdW0gbnVtYmVyIG9mIG1p
bGxpc2Vjb25kcyB0aGF0IG11c3QgZWxhcHNlIHdoaWxlIHRoZSByZWxldmFudCBpbnB1dCBzb3Vy
Y2UgdHJhbnNpdGlvbnMgdG8gdGhpcyBzdGF0ZS4iIH0KKyAgICAgICAgICAgIF0KICAgICAgICAg
fQogICAgIF0sCiAgICAgImNvbW1hbmRzIjogWwpAQCAtNDEzLDYgKzQ1NCwyNCBAQAogICAgICAg
ICAgICAgXSwKICAgICAgICAgICAgICJhc3luYyI6IHRydWUKICAgICAgICAgfSwKKyAgICAgICAg
eworICAgICAgICAgICAgIm5hbWUiOiAicGVyZm9ybUludGVyYWN0aW9uU2VxdWVuY2UiLAorICAg
ICAgICAgICAgImRlc2NyaXB0aW9uIjogIlBlcmZvcm0gbXVsdGlwbGUgc2ltdWxhdGVkIGludGVy
YWN0aW9ucyBvdmVyIHRpbWUgdXNpbmcgYSBsaXN0IG9mIGlucHV0IHNvdXJjZXMgYW5kIGEgbGlz
dCBvZiBzdGVwcywgd2hlcmUgZWFjaCBzdGVwIHNwZWNpZmllcyBhIHN0YXRlIGZvciBlYWNoIGlu
cHV0IHNvdXJjZSBhdCB0aGUgdGltZSB0aGF0IHN0ZXAgaXMgcGVyZm9ybWVkLiIsCisgICAgICAg
ICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImhhbmRsZSIs
ICIkcmVmIjogIkJyb3dzaW5nQ29udGV4dEhhbmRsZSIsICJkZXNjcmlwdGlvbiI6ICJUaGUgYnJv
d3NpbmcgY29udGV4dCB0byBiZSBpbnRlcmFjdGVkIHdpdGguIiB9LAorICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAiaW5wdXRTb3VyY2VzIiwgInR5cGUiOiAiYXJyYXkiLCAiaXRlbXMiOiB7ICIk
cmVmIjogIklucHV0U291cmNlIiB9LCAiZGVzY3JpcHRpb24iOiAiQWxsIGlucHV0IHNvdXJjZXMg
dGhhdCBhcmUgdXNlZCB0byBwZXJmb3JtIHRoaXMgaW50ZXJhY3Rpb24gc2VxdWVuY2UuIiB9LAor
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic3RlcHMiLCAidHlwZSI6ICJhcnJheSIsICJpdGVt
cyI6IHsgIiRyZWYiOiAiSW50ZXJhY3Rpb25TdGVwIiB9LCAiZGVzY3JpcHRpb24iOiAiQSBsaXN0
IG9mIHN0ZXBzIHRoYXQgYXJlIGV4ZWN1dGVkIGluIG9yZGVyLiIgfQorICAgICAgICAgICAgXSwK
KyAgICAgICAgICAgICJhc3luYyI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAg
ICAgICAgIm5hbWUiOiAiY2FuY2VsSW50ZXJhY3Rpb25TZXF1ZW5jZSIsCisgICAgICAgICAgICAi
ZGVzY3JpcHRpb24iOiAiQ2FuY2VsIGFuIGFjdGl2ZSBpbnRlcmFjdGlvbiBzZXF1ZW5jZSB0aGF0
IGlzIGN1cnJlbnRseSBpbiBwcm9ncmVzcy4iLAorICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBb
CisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJoYW5kbGUiLCAiJHJlZiI6ICJCcm93c2luZ0Nv
bnRleHRIYW5kbGUiLCAiZGVzY3JpcHRpb24iOiAiVGhlIGJyb3dzaW5nIGNvbnRleHQgdG8gYmUg
aW50ZXJhY3RlZCB3aXRoLiIgfQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJhc3luYyI6
IHRydWUKKyAgICAgICAgfSwKICAgICAgICAgewogICAgICAgICAgICAgIm5hbWUiOiAidGFrZVNj
cmVlbnNob3QiLAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlRha2UgYSBzY3JlZW5zaG90
IG9mIHRoZSBjdXJyZW50IHBhZ2Ugb3IgZ2l2ZW4gZWxlbWVudCBpbiBhIGJyb3dzaW5nIGNvbnRl
eHQuIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vU2lt
dWxhdGVkSW5wdXREaXNwYXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9t
YXRpb24vU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kOGQ0ODNiOWUz
ZjQ4OGI5OGJkZjdhZmMxZDE0NTJiMmVjM2YyMTNmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9TaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuY3Bw
CkBAIC0wLDAgKzEsMjY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlNpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5oIgorCisjaW5jbHVkZSAiQXV0b21hdGlv
blByb3RvY29sT2JqZWN0cy5oIgorI2luY2x1ZGUgIldlYkF1dG9tYXRpb25TZXNzaW9uLmgiCisj
aW5jbHVkZSAiV2ViQXV0b21hdGlvblNlc3Npb25NYWNyb3MuaCIKKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK1NpbXVsYXRlZElucHV0S2V5RnJhbWU6OlNpbXVsYXRlZElucHV0S2V5RnJhbWUoVmVj
dG9yPFN0YXRlRW50cnk+JiYgZW50cmllcykKKyAgICA6IHN0YXRlcyhXVEZNb3ZlKGVudHJpZXMp
KQoreworfQorCitTZWNvbmRzIFNpbXVsYXRlZElucHV0S2V5RnJhbWU6Om1heGltdW1EdXJhdGlv
bigpIGNvbnN0Cit7CisgICAgU2Vjb25kcyByZXN1bHQ7CisgICAgZm9yIChhdXRvJiBlbnRyeSA6
IHN0YXRlcykKKyAgICAgICAgcmVzdWx0ID0gc3RkOjptYXgocmVzdWx0LCBlbnRyeS5zZWNvbmQu
ZHVyYXRpb24udmFsdWVfb3IoU2Vjb25kcygwKSkpOworICAgIAorICAgIHJldHVybiByZXN1bHQ7
Cit9CisKK1NpbXVsYXRlZElucHV0S2V5RnJhbWUgU2ltdWxhdGVkSW5wdXRLZXlGcmFtZTo6a2V5
RnJhbWVGcm9tU3RhdGVPZklucHV0U291cmNlcyhIYXNoU2V0PFJlZjxTaW11bGF0ZWRJbnB1dFNv
dXJjZT4+JiBpbnB1dFNvdXJjZXMpCit7CisgICAgLy8gVGhlIGNsaWVudCBvZiB0aGlzIGNsYXNz
IGlzIHJlcXVpcmVkIHRvIGludGVybiBTaW11bGF0ZWRJbnB1dFNvdXJjZSBpbnN0YW5jZXMgaWYg
dGhlIGxhc3Qgc3RhdGUKKyAgICAvLyBmcm9tIHRoZSBwcmV2aW91cyBjb21tYW5kIHNob3VsZCBi
ZSB1c2VkIGFzIHRoZSBpbml0YWwgc3RhdGUgZm9yIHRoZSBuZXh0IGNvbW1hbmQuIFRoaXMgaXMg
dGhlCisgICAgLy8gY2FzZSBmb3IgUGVyZm9ybSBBY3Rpb25zIGFuZCBSZWxlYXNlIEFjdGlvbnMs
IGJ1dCBub3QgRWxlbWVudCBDbGljayBvciBFbGVtZW50IFNlbmQgS2V5cy4KKyAgICBWZWN0b3I8
U2ltdWxhdGVkSW5wdXRLZXlGcmFtZTo6U3RhdGVFbnRyeT4gZW50cmllczsKKyAgICBlbnRyaWVz
LnJlc2VydmVDYXBhY2l0eShpbnB1dFNvdXJjZXMuc2l6ZSgpKTsKKworICAgIGZvciAoYXV0byYg
aW5wdXRTb3VyY2UgOiBpbnB1dFNvdXJjZXMpCisgICAgICAgIGVudHJpZXMudW5jaGVja2VkQXBw
ZW5kKHN0ZDo6cGFpcjxTaW11bGF0ZWRJbnB1dFNvdXJjZSYsIFNpbXVsYXRlZElucHV0U291cmNl
U3RhdGU+IHsgaW5wdXRTb3VyY2UuZ2V0KCksIGlucHV0U291cmNlLT5zdGF0ZSB9KTsKKworICAg
IHJldHVybiBTaW11bGF0ZWRJbnB1dEtleUZyYW1lKFdURk1vdmUoZW50cmllcykpOworfQorCitT
aW11bGF0ZWRJbnB1dEtleUZyYW1lIFNpbXVsYXRlZElucHV0S2V5RnJhbWU6OmtleUZyYW1lVG9S
ZXNldElucHV0U291cmNlcyhIYXNoU2V0PFJlZjxTaW11bGF0ZWRJbnB1dFNvdXJjZT4+JiBpbnB1
dFNvdXJjZXMpCit7CisgICAgVmVjdG9yPFNpbXVsYXRlZElucHV0S2V5RnJhbWU6OlN0YXRlRW50
cnk+IGVudHJpZXM7CisgICAgZW50cmllcy5yZXNlcnZlQ2FwYWNpdHkoaW5wdXRTb3VyY2VzLnNp
emUoKSk7CisKKyAgICBmb3IgKGF1dG8mIGlucHV0U291cmNlIDogaW5wdXRTb3VyY2VzKQorICAg
ICAgICBlbnRyaWVzLnVuY2hlY2tlZEFwcGVuZChzdGQ6OnBhaXI8U2ltdWxhdGVkSW5wdXRTb3Vy
Y2UmLCBTaW11bGF0ZWRJbnB1dFNvdXJjZVN0YXRlPiB7IGlucHV0U291cmNlLmdldCgpLCBTaW11
bGF0ZWRJbnB1dFNvdXJjZVN0YXRlOjplbXB0eVN0YXRlKCkgfSk7CisKKyAgICByZXR1cm4gU2lt
dWxhdGVkSW5wdXRLZXlGcmFtZShXVEZNb3ZlKGVudHJpZXMpKTsKK30KKyAgICAKK1NpbXVsYXRl
ZElucHV0RGlzcGF0Y2hlcjo6U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyKFdlYlBhZ2VQcm94eSYg
cGFnZSwgU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjpDbGllbnQmIGNsaWVudCkKKyAgICA6IG1f
cGFnZShwYWdlKQorICAgICwgbV9jbGllbnQoY2xpZW50KQorICAgICwgbV9rZXlGcmFtZVRyYW5z
aXRpb25EdXJhdGlvblRpbWVyKFJ1bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJlNpbXVsYXRlZElu
cHV0RGlzcGF0Y2hlcjo6a2V5RnJhbWVUcmFuc2l0aW9uRHVyYXRpb25UaW1lckZpcmVkKQorewor
fQorCitTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6On5TaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIo
KQoreworICAgIEFTU0VSVCghbV9ydW5Db21wbGV0aW9uSGFuZGxlcik7CisgICAgQVNTRVJUKCFt
X2tleUZyYW1lVHJhbnNpdGlvbkR1cmF0aW9uVGltZXIuaXNBY3RpdmUoKSk7Cit9CisKK2Jvb2wg
U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjppc0FjdGl2ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
ICEhbV9ydW5Db21wbGV0aW9uSGFuZGxlcjsKK30KKwordm9pZCBTaW11bGF0ZWRJbnB1dERpc3Bh
dGNoZXI6OmtleUZyYW1lVHJhbnNpdGlvbkR1cmF0aW9uVGltZXJGaXJlZCgpCit7CisgICAgQVNT
RVJUKG1fa2V5RnJhbWVUcmFuc2l0aW9uQ29tcGxldGlvbkhhbmRsZXIpOworCisgICAgbV9rZXlG
cmFtZVRyYW5zaXRpb25EdXJhdGlvblRpbWVyLnN0b3AoKTsKKworICAgIGlmIChpc0tleUZyYW1l
VHJhbnNpdGlvbkNvbXBsZXRlKCkpCisgICAgICAgIG1fa2V5RnJhbWVUcmFuc2l0aW9uQ29tcGxl
dGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKK30KKworYm9vbCBTaW11bGF0ZWRJbnB1dERpc3Bh
dGNoZXI6OmlzS2V5RnJhbWVUcmFuc2l0aW9uQ29tcGxldGUoKSBjb25zdAoreworICAgIEFTU0VS
VChtX2tleWZyYW1lSW5kZXggPCBtX2tleWZyYW1lcy5zaXplKCkpOworCisgICAgaWYgKG1faW5w
dXRTb3VyY2VTdGF0ZUluZGV4IDwgbV9rZXlmcmFtZXNbbV9rZXlmcmFtZUluZGV4XS5zdGF0ZXMu
c2l6ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobV9rZXlGcmFtZVRyYW5z
aXRpb25EdXJhdGlvblRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6dHJh
bnNpdGlvblRvTmV4dEtleUZyYW1lKCkKK3sKKyAgICArK21fa2V5ZnJhbWVJbmRleDsKKyAgICBp
ZiAobV9rZXlmcmFtZUluZGV4ID09IG1fa2V5ZnJhbWVzLnNpemUoKSkgeworICAgICAgICBmaW5p
c2hEaXNwYXRjaGluZyhzdGQ6Om51bGxvcHQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgdHJhbnNpdGlvbkJldHdlZW5LZXlGcmFtZXMobV9rZXlmcmFtZXNbbV9rZXlmcmFtZUluZGV4
IC0gMV0sIG1fa2V5ZnJhbWVzW21fa2V5ZnJhbWVJbmRleF0sIFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyldKHN0ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4g
ZXJyb3IpIHsKKyAgICAgICAgaWYgKGVycm9yKSB7CisgICAgICAgICAgICBmaW5pc2hEaXNwYXRj
aGluZyhlcnJvcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB0
cmFuc2l0aW9uVG9OZXh0S2V5RnJhbWUoKTsKKyAgICB9KTsKK30KKwordm9pZCBTaW11bGF0ZWRJ
bnB1dERpc3BhdGNoZXI6OnRyYW5zaXRpb25Ub05leHRJbnB1dFNvdXJjZVN0YXRlKCkKK3sKKyAg
ICBpZiAoaXNLZXlGcmFtZVRyYW5zaXRpb25Db21wbGV0ZSgpKSB7CisgICAgICAgIGF1dG8gZmlu
aXNoID0gV1RGTW92ZShtX2tleUZyYW1lVHJhbnNpdGlvbkNvbXBsZXRpb25IYW5kbGVyKTsKKyAg
ICAgICAgZmluaXNoKHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICAvLyBJbiB0aGlzIGNhc2UsIHRyYW5zaXRpb25zIGFyZSBkb25lIGJ1dCB3ZSBuZWVkIHRvIHdh
aXQgZm9yIHRoZSB0aWNrIHRpbWVyLgorICAgIGlmIChtX2lucHV0U291cmNlU3RhdGVJbmRleCA9
PSBtX2tleWZyYW1lc1ttX2tleWZyYW1lSW5kZXhdLnN0YXRlcy5zaXplKCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIGF1dG8mIG5leHRLZXlGcmFtZSA9IG1fa2V5ZnJhbWVzW21fa2V5ZnJhbWVJ
bmRleF07CisgICAgYXV0byYgcG9zdFN0YXRlRW50cnkgPSBuZXh0S2V5RnJhbWUuc3RhdGVzW21f
aW5wdXRTb3VyY2VTdGF0ZUluZGV4XTsKKyAgICBTaW11bGF0ZWRJbnB1dFNvdXJjZSYgaW5wdXRT
b3VyY2UgPSBwb3N0U3RhdGVFbnRyeS5maXJzdDsKKworICAgIHRyYW5zaXRpb25JbnB1dFNvdXJj
ZVRvU3RhdGUoaW5wdXRTb3VyY2UsIHBvc3RTdGF0ZUVudHJ5LnNlY29uZCwgW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oc3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFu
ZEVycm9yPiBlcnJvcikgeworICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgICAgIGF1dG8g
ZmluaXNoID0gV1RGTW92ZShtX2tleUZyYW1lVHJhbnNpdGlvbkNvbXBsZXRpb25IYW5kbGVyKTsK
KyAgICAgICAgICAgIGZpbmlzaChlcnJvcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKworICAgICAgICAvLyBQZXJmb3JtIHN0YXRlIHRyYW5zaXRpb25zIGluIHRoZSBvcmRlciBz
cGVjaWZpZWQgYnkgdGhlIGN1cnJlbnRLZXlGcmFtZS4KKyAgICAgICAgKyttX2lucHV0U291cmNl
U3RhdGVJbmRleDsKKworICAgICAgICB0cmFuc2l0aW9uVG9OZXh0SW5wdXRTb3VyY2VTdGF0ZSgp
OworICAgIH0pOworfQorCit2b2lkIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6dHJhbnNpdGlv
bkJldHdlZW5LZXlGcmFtZXMoY29uc3QgU2ltdWxhdGVkSW5wdXRLZXlGcmFtZSYgYSwgY29uc3Qg
U2ltdWxhdGVkSW5wdXRLZXlGcmFtZSYgYiwgQXV0b21hdGlvbkNvbXBsZXRpb25IYW5kbGVyJiYg
Y29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgbV9pbnB1dFNvdXJjZVN0YXRlSW5kZXggPSAwOwor
CisgICAgbV9rZXlGcmFtZVRyYW5zaXRpb25Db21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpOworICAgIG1fa2V5RnJhbWVUcmFuc2l0aW9uRHVyYXRpb25UaW1lci5z
dGFydE9uZVNob3QoYi5tYXhpbXVtRHVyYXRpb24oKSk7CisKKyAgICB0cmFuc2l0aW9uVG9OZXh0
SW5wdXRTb3VyY2VTdGF0ZSgpOworfQorCit2b2lkIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6
dHJhbnNpdGlvbklucHV0U291cmNlVG9TdGF0ZShTaW11bGF0ZWRJbnB1dFNvdXJjZSYgaW5wdXRT
b3VyY2UsIGNvbnN0IFNpbXVsYXRlZElucHV0U291cmNlU3RhdGUmIG5ld1N0YXRlLCBBdXRvbWF0
aW9uQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICAvLyBNYWtl
IGNhc2VzIGFuZCBjb25kaXRpb25hbHMgbW9yZSByZWFkYWJsZSBieSBhbGlhc2luZyBwcmUvcG9z
dCBzdGF0ZXMgYXMgJ2EnIGFuZCAnYicuCisgICAgU2ltdWxhdGVkSW5wdXRTb3VyY2VTdGF0ZSBh
ID0gaW5wdXRTb3VyY2Uuc3RhdGU7CisgICAgU2ltdWxhdGVkSW5wdXRTb3VyY2VTdGF0ZSBiID0g
bmV3U3RhdGU7CisKKyAgICBBdXRvbWF0aW9uQ29tcGxldGlvbkhhbmRsZXIgZXZlbnREaXNwYXRj
aEZpbmlzaGVkID0gWyZpbnB1dFNvdXJjZSwgJm5ld1N0YXRlLCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShzdGQ6Om9wdGlvbmFsPEF1dG9tYXRpb25Db21t
YW5kRXJyb3I+IGVycm9yKSB7CisgICAgICAgIGlmIChlcnJvcikgeworICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoZXJyb3IpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK
KyAgICAgICAgaW5wdXRTb3VyY2Uuc3RhdGUgPSBuZXdTdGF0ZTsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKKyAgICB9OworCisgICAgc3dpdGNoIChpbnB1dFNvdXJj
ZS50eXBlKSB7CisgICAgY2FzZSBTaW11bGF0ZWRJbnB1dFNvdXJjZTo6VHlwZTo6TnVsbDoKKyAg
ICAgICAgLy8gVGhlIG1heGltdW0gZHVyYXRpb24gaXMgaGFuZGxlZCBhdCB0aGUga2V5ZnJhbWUg
bGV2ZWwgYnkgbV9rZXlGcmFtZVRyYW5zaXRpb25EdXJhdGlvblRpbWVyLgorICAgICAgICBldmVu
dERpc3BhdGNoRmluaXNoZWQoc3RkOjpudWxsb3B0KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBTaW11bGF0ZWRJbnB1dFNvdXJjZTo6VHlwZTo6TW91c2U6IHsKKyAgICAgICAgaWYgKCFhLnBy
ZXNzZWRNb3VzZUJ1dHRvbiAmJiBiLnByZXNzZWRNb3VzZUJ1dHRvbikKKyAgICAgICAgICAgIG1f
Y2xpZW50LnNpbXVsYXRlTW91c2VJbnRlcmFjdGlvbihtX3BhZ2UsIE1vdXNlSW50ZXJhY3Rpb246
OkRvd24sIGIucHJlc3NlZE1vdXNlQnV0dG9uLnZhbHVlKCksIGIubG9jYXRpb24udmFsdWUoKSwg
V1RGTW92ZShldmVudERpc3BhdGNoRmluaXNoZWQpKTsKKyAgICAgICAgZWxzZSBpZiAoYS5wcmVz
c2VkTW91c2VCdXR0b24gJiYgIWIucHJlc3NlZE1vdXNlQnV0dG9uKQorICAgICAgICAgICAgbV9j
bGllbnQuc2ltdWxhdGVNb3VzZUludGVyYWN0aW9uKG1fcGFnZSwgTW91c2VJbnRlcmFjdGlvbjo6
VXAsIGEucHJlc3NlZE1vdXNlQnV0dG9uLnZhbHVlKCksIGIubG9jYXRpb24udmFsdWUoKSwgV1RG
TW92ZShldmVudERpc3BhdGNoRmluaXNoZWQpKTsKKyAgICAgICAgZWxzZSBpZiAoYS5sb2NhdGlv
biAhPSBiLmxvY2F0aW9uKQorICAgICAgICAgICAgbV9jbGllbnQuc2ltdWxhdGVNb3VzZUludGVy
YWN0aW9uKG1fcGFnZSwgTW91c2VJbnRlcmFjdGlvbjo6TW92ZSwgYi5wcmVzc2VkTW91c2VCdXR0
b24udmFsdWVfb3IoTW91c2VCdXR0b246Ok5vQnV0dG9uKSwgYi5sb2NhdGlvbi52YWx1ZSgpLCBX
VEZNb3ZlKGV2ZW50RGlzcGF0Y2hGaW5pc2hlZCkpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBldmVudERpc3BhdGNoRmluaXNoZWQoc3RkOjpudWxsb3B0KTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIGNhc2UgU2ltdWxhdGVkSW5wdXRTb3VyY2U6OlR5cGU6OktleWJvYXJkOgorICAg
ICAgICBpZiAoKCFhLnByZXNzZWRDaGFyS2V5ICYmIGIucHJlc3NlZENoYXJLZXkpIHx8ICghYS5w
cmVzc2VkVmlydHVhbEtleSAmJiBiLnByZXNzZWRWaXJ0dWFsS2V5KSkKKyAgICAgICAgICAgIG1f
Y2xpZW50LnNpbXVsYXRlS2V5Ym9hcmRJbnRlcmFjdGlvbihtX3BhZ2UsIEtleWJvYXJkSW50ZXJh
Y3Rpb246OktleVByZXNzLCBiLnByZXNzZWRWaXJ0dWFsS2V5LCBiLnByZXNzZWRDaGFyS2V5LCBX
VEZNb3ZlKGV2ZW50RGlzcGF0Y2hGaW5pc2hlZCkpOworICAgICAgICBlbHNlIGlmICgoYS5wcmVz
c2VkQ2hhcktleSAmJiAhYi5wcmVzc2VkQ2hhcktleSkgfHwgKGEucHJlc3NlZFZpcnR1YWxLZXkg
JiYgIWIucHJlc3NlZFZpcnR1YWxLZXkpKQorICAgICAgICAgICAgbV9jbGllbnQuc2ltdWxhdGVL
ZXlib2FyZEludGVyYWN0aW9uKG1fcGFnZSwgS2V5Ym9hcmRJbnRlcmFjdGlvbjo6S2V5UmVsZWFz
ZSwgYS5wcmVzc2VkVmlydHVhbEtleSwgYS5wcmVzc2VkQ2hhcktleSwgV1RGTW92ZShldmVudERp
c3BhdGNoRmluaXNoZWQpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZXZlbnREaXNwYXRj
aEZpbmlzaGVkKHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2ltdWxh
dGVkSW5wdXRTb3VyY2U6OlR5cGU6OlRvdWNoOgorICAgICAgICAvLyBOb3Qgc3VwcG9ydGVkIHll
dC4KKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGV2ZW50RGlzcGF0Y2hG
aW5pc2hlZChBVVRPTUFUSU9OX0NPTU1BTkRfRVJST1JfV0lUSF9OQU1FKE5vdEltcGxlbWVudGVk
KSk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKwordm9pZCBTaW11bGF0ZWRJbnB1dERpc3Bh
dGNoZXI6OnJ1bihWZWN0b3I8U2ltdWxhdGVkSW5wdXRLZXlGcmFtZT4mJiBrZXlGcmFtZXMsIEhh
c2hTZXQ8UmVmPFNpbXVsYXRlZElucHV0U291cmNlPj4mIGlucHV0U291cmNlcywgQXV0b21hdGlv
bkNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUKCFp
c0FjdGl2ZSgpKTsKKyAgICBpZiAoaXNBY3RpdmUoKSkgeworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihBVVRPTUFUSU9OX0NPTU1BTkRfRVJST1JfV0lUSF9OQU1FKEludGVybmFsRXJyb3IpKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fcnVuQ29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICBmb3IgKGNvbnN0IFJlZjxTaW11bGF0ZWRJ
bnB1dFNvdXJjZT4mIGlucHV0U291cmNlIDogaW5wdXRTb3VyY2VzKQorICAgICAgICBtX2lucHV0
U291cmNlcy5hZGQoaW5wdXRTb3VyY2UuY29weVJlZigpKTsKKworICAgIG1fa2V5ZnJhbWVzLnJl
c2VydmVDYXBhY2l0eShrZXlGcmFtZXMuc2l6ZSgpICsgMSk7CisgICAgbV9rZXlmcmFtZXMuYXBw
ZW5kKFNpbXVsYXRlZElucHV0S2V5RnJhbWU6OmtleUZyYW1lRnJvbVN0YXRlT2ZJbnB1dFNvdXJj
ZXMobV9pbnB1dFNvdXJjZXMpKTsKKyAgICBtX2tleWZyYW1lcy5hcHBlbmRWZWN0b3IoV1RGTW92
ZShrZXlGcmFtZXMpKTsKKworICAgIHRyYW5zaXRpb25Ub05leHRLZXlGcmFtZSgpOworfQorCit2
b2lkIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6Y2FuY2VsKCkKK3sKKyAgICAvLyBJZiB3ZSB3
ZXJlIHdhaXRpbmcgZm9yIG1fY2xpZW50IHRvIGZpbmlzaCBhbiBpbnRlcmFjdGlvbiBhbmQgdGhl
IGludGVyYWN0aW9uIGhhZCBhbiBlcnJvciwKKyAgICAvLyB0aGVuIHRoZSByZXN0IG9mIHRoZSBh
c3luYyBjaGFpbiB3aWxsIGhhdmUgYmVlbiB0b3JuIGRvd24uIElmIHdlIGFyZSBqdXN0IHdhaXRp
bmcgb24gYQorICAgIC8vIGRpc3BhdGNoIHRpbWVyLCB0aGVuIHRoaXMgd2lsbCBjYW5jZWwgdGhl
IHRpbWVyIGFuZCBjbGVhcgorCisgICAgaWYgKGlzQWN0aXZlKCkpCisgICAgICAgIGZpbmlzaERp
c3BhdGNoaW5nKEFVVE9NQVRJT05fQ09NTUFORF9FUlJPUl9XSVRIX05BTUUoSW50ZXJuYWxFcnJv
cikpOworfQorCit2b2lkIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6ZmluaXNoRGlzcGF0Y2hp
bmcoc3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPiBlcnJvcikKK3sKKyAgICBp
ZiAobV9rZXlGcmFtZVRyYW5zaXRpb25EdXJhdGlvblRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAg
IG1fa2V5RnJhbWVUcmFuc2l0aW9uRHVyYXRpb25UaW1lci5zdG9wKCk7CisKKyAgICBhdXRvIGZp
bmlzaCA9IFdURk1vdmUobV9ydW5Db21wbGV0aW9uSGFuZGxlcik7CisgICAgbV9rZXlmcmFtZXMu
Y2xlYXIoKTsKKyAgICBtX2lucHV0U291cmNlcy5jbGVhcigpOworICAgIG1fa2V5ZnJhbWVJbmRl
eCA9IDA7CisgICAgbV9pbnB1dFNvdXJjZVN0YXRlSW5kZXggPSAwOworCisgICAgZmluaXNoKGVy
cm9yKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Via2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1NpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9TaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZmM0NjJhZDU1MTZiYzM3YzQ1NjBjYWZlMDQ3YzI0MjMzMDc3OTU3Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9TaW11
bGF0ZWRJbnB1dERpc3BhdGNoZXIuaApAQCAtMCwwICsxLDE2MCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiV2ViRXZlbnQuaCIKKyNpbmNsdWRlIDx3dGYvQ29tcGxl
dGlvbkhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9P
cHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1J1
bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIEluc3BlY3Rv
ciB7IG5hbWVzcGFjZSBQcm90b2NvbCB7IG5hbWVzcGFjZSBBdXRvbWF0aW9uIHsKK2VudW0gY2xh
c3MgRXJyb3JNZXNzYWdlOworZW51bSBjbGFzcyBLZXlib2FyZEludGVyYWN0aW9uVHlwZTsKK2Vu
dW0gY2xhc3MgTW91c2VJbnRlcmFjdGlvbjsKK2VudW0gY2xhc3MgVmlydHVhbEtleTsKK30gfSB9
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBBdXRvbWF0aW9uQ29tbWFuZEVycm9yOwor
dXNpbmcgQXV0b21hdGlvbkNvbXBsZXRpb25IYW5kbGVyID0gV1RGOjpDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKHN0ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4pPjsKKworY2xhc3Mg
V2ViUGFnZVByb3h5OworCit1c2luZyBLZXlib2FyZEludGVyYWN0aW9uID0gSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXV0b21hdGlvbjo6S2V5Ym9hcmRJbnRlcmFjdGlvblR5cGU7Cit1c2luZyBWaXJ0
dWFsS2V5ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTsKK3Vz
aW5nIENoYXJLZXkgPSBjaGFyOyAvLyBGb3IgV2ViRHJpdmVyLCB0aGlzIG9ubHkgbmVlZHMgdG8g
c3VwcG9ydCBBU0NJSSBjaGFyYWN0ZXJzIG9uIDEwMi1rZXkga2V5Ym9hcmQuCit1c2luZyBNb3Vz
ZUJ1dHRvbiA9IFdlYk1vdXNlRXZlbnQ6OkJ1dHRvbjsKK3VzaW5nIE1vdXNlSW50ZXJhY3Rpb24g
PSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUludGVyYWN0aW9uOworCitz
dHJ1Y3QgU2ltdWxhdGVkSW5wdXRTb3VyY2VTdGF0ZSB7CisgICAgc3RkOjpvcHRpb25hbDxDaGFy
S2V5PiBwcmVzc2VkQ2hhcktleTsKKyAgICBzdGQ6Om9wdGlvbmFsPFZpcnR1YWxLZXk+IHByZXNz
ZWRWaXJ0dWFsS2V5OworICAgIHN0ZDo6b3B0aW9uYWw8TW91c2VCdXR0b24+IHByZXNzZWRNb3Vz
ZUJ1dHRvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiBsb2NhdGlvbjsK
KyAgICBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IGR1cmF0aW9uOworCisgICAgc3RhdGljIFNpbXVs
YXRlZElucHV0U291cmNlU3RhdGUgZW1wdHlTdGF0ZSgpIHsgcmV0dXJuIFNpbXVsYXRlZElucHV0
U291cmNlU3RhdGUoKTsgfQorfTsKKworc3RydWN0IFNpbXVsYXRlZElucHV0U291cmNlIDogcHVi
bGljIFJlZkNvdW50ZWQ8U2ltdWxhdGVkSW5wdXRTb3VyY2U+IHsKK3B1YmxpYzoKKyAgICBlbnVt
IGNsYXNzIFR5cGUgeworICAgICAgICBOdWxsLCAvLyBVc2VkIHRvIGluZHVjZSBhIG1pbmltdW0g
ZHVyYXRpb24uCisgICAgICAgIEtleWJvYXJkLAorICAgICAgICBNb3VzZSwKKyAgICAgICAgVG91
Y2gsCisgICAgfTsKKworICAgIFR5cGUgdHlwZTsKKworICAgIC8vIFRoZSBsYXN0IHN0YXRlIGFz
c29jaWF0ZWQgd2l0aCB0aGlzIGlucHV0IHNvdXJjZS4KKyAgICBTaW11bGF0ZWRJbnB1dFNvdXJj
ZVN0YXRlIHN0YXRlOworCisgICAgc3RhdGljIFJlZjxTaW11bGF0ZWRJbnB1dFNvdXJjZT4gY3Jl
YXRlKFR5cGUgdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNpbXVs
YXRlZElucHV0U291cmNlKHR5cGUsIFNpbXVsYXRlZElucHV0U291cmNlU3RhdGU6OmVtcHR5U3Rh
dGUoKSkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBTaW11bGF0ZWRJbnB1dFNvdXJjZShUeXBl
IHR5cGUsIFNpbXVsYXRlZElucHV0U291cmNlU3RhdGUgc3RhdGUpCisgICAgICAgIDogdHlwZSh0
eXBlKQorICAgICAgICAsIHN0YXRlKHN0YXRlKQorICAgIHsgfQorfTsKKworc3RydWN0IFNpbXVs
YXRlZElucHV0S2V5RnJhbWUgeworcHVibGljOgorICAgIHVzaW5nIFN0YXRlRW50cnkgPSBzdGQ6
OnBhaXI8U2ltdWxhdGVkSW5wdXRTb3VyY2UmLCBTaW11bGF0ZWRJbnB1dFNvdXJjZVN0YXRlPjsK
KworICAgIGV4cGxpY2l0IFNpbXVsYXRlZElucHV0S2V5RnJhbWUoVmVjdG9yPFN0YXRlRW50cnk+
JiYpOworICAgIFNlY29uZHMgbWF4aW11bUR1cmF0aW9uKCkgY29uc3Q7CisKKyAgICBzdGF0aWMg
U2ltdWxhdGVkSW5wdXRLZXlGcmFtZSBrZXlGcmFtZUZyb21TdGF0ZU9mSW5wdXRTb3VyY2VzKEhh
c2hTZXQ8UmVmPFNpbXVsYXRlZElucHV0U291cmNlPj4mKTsKKyAgICBzdGF0aWMgU2ltdWxhdGVk
SW5wdXRLZXlGcmFtZSBrZXlGcmFtZVRvUmVzZXRJbnB1dFNvdXJjZXMoSGFzaFNldDxSZWY8U2lt
dWxhdGVkSW5wdXRTb3VyY2U+PiYpOworCisgICAgVmVjdG9yPFN0YXRlRW50cnk+IHN0YXRlczsK
K307CisKK2NsYXNzIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlciA6IHB1YmxpYyBSZWZDb3VudGVk
PFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcj4geworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNp
bXVsYXRlZElucHV0RGlzcGF0Y2hlcik7CitwdWJsaWM6CisgICAgY2xhc3MgQ2xpZW50IHsKKyAg
ICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgfkNsaWVudCgpIHsgfQorICAgICAgICB2aXJ0dWFs
IHZvaWQgc2ltdWxhdGVNb3VzZUludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYsIE1vdXNlSW50ZXJh
Y3Rpb24sIFdlYk1vdXNlRXZlbnQ6OkJ1dHRvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGxv
Y2F0aW9uSW5WaWV3LCBBdXRvbWF0aW9uQ29tcGxldGlvbkhhbmRsZXImJikgPSAwOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgc2ltdWxhdGVLZXlib2FyZEludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYs
IEtleWJvYXJkSW50ZXJhY3Rpb24sIHN0ZDo6b3B0aW9uYWw8VmlydHVhbEtleT4sIHN0ZDo6b3B0
aW9uYWw8Q2hhcktleT4sIEF1dG9tYXRpb25Db21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CisgICAg
fTsKKworICAgIHN0YXRpYyBSZWY8U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyPiBjcmVhdGUoV2Vi
UGFnZVByb3h5JiBwYWdlLCBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OkNsaWVudCYgY2xpZW50
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2ltdWxhdGVkSW5wdXREaXNw
YXRjaGVyKHBhZ2UsIGNsaWVudCkpOworICAgIH0KKworICAgIH5TaW11bGF0ZWRJbnB1dERpc3Bh
dGNoZXIoKTsKKworICAgIHZvaWQgcnVuKFZlY3RvcjxTaW11bGF0ZWRJbnB1dEtleUZyYW1lPiYm
IGtleUZyYW1lcywgSGFzaFNldDxSZWY8U2ltdWxhdGVkSW5wdXRTb3VyY2U+PiYgaW5wdXRTb3Vy
Y2VzLCBBdXRvbWF0aW9uQ29tcGxldGlvbkhhbmRsZXImJik7CisgICAgdm9pZCBjYW5jZWwoKTsK
KworICAgIGJvb2wgaXNBY3RpdmUoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBTaW11bGF0ZWRJ
bnB1dERpc3BhdGNoZXIoV2ViUGFnZVByb3h5JiwgU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjpD
bGllbnQmKTsKKworICAgIHZvaWQgdHJhbnNpdGlvblRvTmV4dEtleUZyYW1lKCk7CisgICAgdm9p
ZCB0cmFuc2l0aW9uQmV0d2VlbktleUZyYW1lcyhjb25zdCBTaW11bGF0ZWRJbnB1dEtleUZyYW1l
JiwgY29uc3QgU2ltdWxhdGVkSW5wdXRLZXlGcmFtZSYsIEF1dG9tYXRpb25Db21wbGV0aW9uSGFu
ZGxlciYmKTsKKworICAgIHZvaWQgdHJhbnNpdGlvblRvTmV4dElucHV0U291cmNlU3RhdGUoKTsK
KyAgICB2b2lkIHRyYW5zaXRpb25JbnB1dFNvdXJjZVRvU3RhdGUoU2ltdWxhdGVkSW5wdXRTb3Vy
Y2UmLCBjb25zdCBTaW11bGF0ZWRJbnB1dFNvdXJjZVN0YXRlJiBuZXdTdGF0ZSwgQXV0b21hdGlv
bkNvbXBsZXRpb25IYW5kbGVyJiYpOworICAgIHZvaWQgZmluaXNoRGlzcGF0Y2hpbmcoc3RkOjpv
cHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPik7CisKKyAgICB2b2lkIGtleUZyYW1lVHJh
bnNpdGlvbkR1cmF0aW9uVGltZXJGaXJlZCgpOworICAgIGJvb2wgaXNLZXlGcmFtZVRyYW5zaXRp
b25Db21wbGV0ZSgpIGNvbnN0OworCisgICAgV2ViUGFnZVByb3h5JiBtX3BhZ2U7CisgICAgU2lt
dWxhdGVkSW5wdXREaXNwYXRjaGVyOjpDbGllbnQmIG1fY2xpZW50OworCisgICAgQXV0b21hdGlv
bkNvbXBsZXRpb25IYW5kbGVyIG1fcnVuQ29tcGxldGlvbkhhbmRsZXI7CisgICAgQXV0b21hdGlv
bkNvbXBsZXRpb25IYW5kbGVyIG1fa2V5RnJhbWVUcmFuc2l0aW9uQ29tcGxldGlvbkhhbmRsZXI7
CisgICAgUnVuTG9vcDo6VGltZXI8U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyPiBtX2tleUZyYW1l
VHJhbnNpdGlvbkR1cmF0aW9uVGltZXI7CisKKyAgICBWZWN0b3I8U2ltdWxhdGVkSW5wdXRLZXlG
cmFtZT4gbV9rZXlmcmFtZXM7CisgICAgSGFzaFNldDxSZWY8U2ltdWxhdGVkSW5wdXRTb3VyY2U+
PiBtX2lucHV0U291cmNlczsKKworICAgIC8vIFRoZSBwb3NpdGlvbiB3aXRoaW4gbV9rZXlmcmFt
ZXMuCisgICAgdW5zaWduZWQgbV9rZXlmcmFtZUluZGV4IHsgMCB9OworCisgICAgLy8gVGhlIHBv
c2l0aW9uIHdpdGhpbiB0aGUgaW5wdXQgc291cmNlIHN0YXRlIHZlY3RvciBhdCBtX2tleWZyYW1l
c1ttX2tleWZyYW1lSW5kZXhdLgorICAgIC8vIEV2ZW50cyB0aGF0IHJlZmxlY3QgaW5wdXQgc291
cmNlIHN0YXRlIHRyYW5zaXRpb25zIGFyZSBkaXNwYXRjaGVkIHNlcmlhbGx5IGJhc2VkIG9uIHRo
aXMgb3JkZXIuCisgICAgdW5zaWduZWQgbV9pbnB1dFNvdXJjZVN0YXRlSW5kZXggeyAwIH07Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKaW5kZXggMmI4
MTFiMjZjYTk0MWZmNTEwNGJkYjU5YTRiYzM3Njc3ZmRlMGJlZS4uY2ZmMTA4ZTIwZmQyZDQzN2M2
ODJlMTkzOGM1NDQwMzg4Y2YzMzUxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKQEAgLTc2LDYg
Kzc2LDEwIEBAIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbigpCiAg
ICAgLCBtX2RvbWFpbk5vdGlmaWVyKHN0ZDo6bWFrZV91bmlxdWU8QXV0b21hdGlvbkZyb250ZW5k
RGlzcGF0Y2hlcj4obV9mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2xvYWRUaW1lcihSdW5Mb29w
OjptYWluKCksIHRoaXMsICZXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6bG9hZFRpbWVyRmlyZWQpCiB7
CisgICAgLy8gU2V0IHVwIGNhbm9uaWNhbCBpbnB1dCBzb3VyY2VzIHRvIGJlIHVzZWQgZm9yICdw
ZXJmb3JtSW50ZXJhY3Rpb25TZXF1ZW5jZScgYW5kICdjYW5jZWxJbnRlcmFjdGlvblNlcXVlbmNl
Jy4KKyAgICBtX2lucHV0U291cmNlcy5hZGQoU2ltdWxhdGVkSW5wdXRTb3VyY2U6OmNyZWF0ZShT
aW11bGF0ZWRJbnB1dFNvdXJjZTo6VHlwZTo6TW91c2UpKTsKKyAgICBtX2lucHV0U291cmNlcy5h
ZGQoU2ltdWxhdGVkSW5wdXRTb3VyY2U6OmNyZWF0ZShTaW11bGF0ZWRJbnB1dFNvdXJjZTo6VHlw
ZTo6S2V5Ym9hcmQpKTsKKyAgICBtX2lucHV0U291cmNlcy5hZGQoU2ltdWxhdGVkSW5wdXRTb3Vy
Y2U6OmNyZWF0ZShTaW11bGF0ZWRJbnB1dFNvdXJjZTo6VHlwZTo6TnVsbCkpOwogfQogCiBXZWJB
dXRvbWF0aW9uU2Vzc2lvbjo6fldlYkF1dG9tYXRpb25TZXNzaW9uKCkKQEAgLTcyMywyOCArNzI3
LDMyIEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246Omluc3BlY3RvckZyb250ZW5kTG9hZGVk
KGNvbnN0IFdlYlBhZ2VQcm94eSYgcGFnZSkKIAogdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6
bW91c2VFdmVudHNGbHVzaGVkRm9yUGFnZShjb25zdCBXZWJQYWdlUHJveHkmIHBhZ2UpCiB7Ci0g
ICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBtX3BlbmRpbmdNb3VzZUV2ZW50c0ZsdXNoZWRDYWxsYmFj
a3NQZXJQYWdlLnRha2UocGFnZS5wYWdlSUQoKSkpIHsKLSAgICAgICAgaWYgKG1fcGVuZGluZ01v
dXNlRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2UuaXNFbXB0eSgpKQotICAgICAgICAgICAg
bV9zaW11bGF0aW5nVXNlckludGVyYWN0aW9uID0gZmFsc2U7Ci0KKyAgICBpZiAoYXV0byBjYWxs
YmFjayA9IG1fcGVuZGluZ01vdXNlRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2UudGFrZShw
YWdlLnBhZ2VJRCgpKSkKICAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKLSAgICB9CiB9
CiAKIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmtleWJvYXJkRXZlbnRzRmx1c2hlZEZvclBh
Z2UoY29uc3QgV2ViUGFnZVByb3h5JiBwYWdlKQogewotICAgIGlmIChhdXRvIGNhbGxiYWNrID0g
bV9wZW5kaW5nS2V5Ym9hcmRFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS50YWtlKHBhZ2Uu
cGFnZUlEKCkpKSB7Ci0gICAgICAgIGlmIChtX3BlbmRpbmdLZXlib2FyZEV2ZW50c0ZsdXNoZWRD
YWxsYmFja3NQZXJQYWdlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIG1fc2ltdWxhdGluZ1VzZXJJ
bnRlcmFjdGlvbiA9IGZhbHNlOwotCisgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBtX3BlbmRpbmdL
ZXlib2FyZEV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlLnRha2UocGFnZS5wYWdlSUQoKSkp
CiAgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7Ci0gICAgfQogfQogCiB2b2lkIFdlYkF1
dG9tYXRpb25TZXNzaW9uOjp3aWxsQ2xvc2VQYWdlKGNvbnN0IFdlYlBhZ2VQcm94eSYgcGFnZSkK
IHsKICAgICBTdHJpbmcgaGFuZGxlID0gaGFuZGxlRm9yV2ViUGFnZVByb3h5KHBhZ2UpOwogICAg
IG1fZG9tYWluTm90aWZpZXItPmJyb3dzaW5nQ29udGV4dENsZWFyZWQoaGFuZGxlKTsKKworICAg
IC8vIENhbmNlbCBwZW5kaW5nIGludGVyYWN0aW9ucyBvbiB0aGlzIHBhZ2UuIEJ5IHByb3ZpZGlu
ZyBhbiBlcnJvciwgdGhpcyB3aWxsIGNhdXNlIHN1YnNlcXVlbnQKKyAgICAvLyBhY3Rpb25zIHRv
IGJlIGFib3J0ZWQgYW5kIHRoZSBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OnJ1bigpIGNhbGwg
d2lsbCB1bndpbmQgYW5kIGZhaWwuCisgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBtX3BlbmRpbmdN
b3VzZUV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlLnRha2UocGFnZS5wYWdlSUQoKSkpCisg
ICAgICAgIGNhbGxiYWNrKEFVVE9NQVRJT05fQ09NTUFORF9FUlJPUl9XSVRIX05BTUUoV2luZG93
Tm90Rm91bmQpKTsKKyAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1fcGVuZGluZ01vdXNlRXZlbnRz
Rmx1c2hlZENhbGxiYWNrc1BlclBhZ2UudGFrZShwYWdlLnBhZ2VJRCgpKSkKKyAgICAgICAgY2Fs
bGJhY2soQVVUT01BVElPTl9DT01NQU5EX0VSUk9SX1dJVEhfTkFNRShXaW5kb3dOb3RGb3VuZCkp
OworCisgICAgLy8gVGhlbiB0ZWxsIHRoZSBpbnB1dCBkaXNwYXRjaGVyIHRvIGNhbmNlbCBzbyB0
aW1lcnMgYXJlIHN0b3BwZWQsIGFuZCBsZXQgaXQgZ28gb3V0IG9mIHNjb3BlLgorICAgIHN0ZDo6
b3B0aW9uYWw8UmVmPFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcj4+IGlucHV0RGlzcGF0Y2hlciA9
IG1faW5wdXREaXNwYXRjaGVyc0J5UGFnZS50YWtlKHBhZ2UucGFnZUlEKCkpOworICAgIGlmIChp
bnB1dERpc3BhdGNoZXIuaGFzX3ZhbHVlKCkpCisgICAgICAgIGlucHV0RGlzcGF0Y2hlci52YWx1
ZSgpLT5jYW5jZWwoKTsKIH0KIAogc3RhdGljIGJvb2wgZmlsZUNhbkJlQWNjZXB0ZWRGb3JVcGxv
YWQoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBhbGxvd2Vk
TUlNRVR5cGVzLCBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGFsbG93ZWRGaWxlRXh0ZW5zaW9ucykK
QEAgLTEzNjYsNiArMTM3NCw4NiBAQCBib29sIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpzaG91bGRB
bGxvd0dldFVzZXJNZWRpYUZvclBhZ2UoY29uc3QgV2ViUGFnZVByb3h5JikgYwogICAgIHJldHVy
biBtX3Blcm1pc3Npb25Gb3JHZXRVc2VyTWVkaWE7CiB9CiAKK2Jvb2wgV2ViQXV0b21hdGlvblNl
c3Npb246OmlzU2ltdWxhdGluZ1VzZXJJbnRlcmFjdGlvbigpIGNvbnN0Cit7CisgICAgaWYgKCFt
X3BlbmRpbmdNb3VzZUV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlLmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghbV9wZW5kaW5nS2V5Ym9hcmRFdmVudHNGbHVz
aGVkQ2FsbGJhY2tzUGVyUGFnZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIHJldHVybiB0cnVlOworfQorCitTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXImIFdlYkF1dG9t
YXRpb25TZXNzaW9uOjppbnB1dERpc3BhdGNoZXJGb3JQYWdlKFdlYlBhZ2VQcm94eSYgcGFnZSkK
K3sKKyAgICBpZiAoIW1faW5wdXREaXNwYXRjaGVyc0J5UGFnZS5jb250YWlucyhwYWdlLnBhZ2VJ
RCgpKSkKKyAgICAgICAgbV9pbnB1dERpc3BhdGNoZXJzQnlQYWdlLnNldChwYWdlLnBhZ2VJRCgp
LCBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OmNyZWF0ZShwYWdlLCAqdGhpcykpOworCisgICAg
cmV0dXJuICptX2lucHV0RGlzcGF0Y2hlcnNCeVBhZ2UuZ2V0KHBhZ2UucGFnZUlEKCkpOworfQor
CitTaW11bGF0ZWRJbnB1dFNvdXJjZSogV2ViQXV0b21hdGlvblNlc3Npb246OmlucHV0U291cmNl
Rm9yVHlwZShTaW11bGF0ZWRJbnB1dFNvdXJjZTo6VHlwZSB0eXBlKSBjb25zdAoreworICAgIC8v
IEZJWE1FOiB0aGlzIHNob3VsZCB1c2Ugc29tZXRoaW5nIGxpa2UgVmVjdG9yJ3MgZmluZE1hdGNo
aW5nKCkuCisgICAgZm9yIChhdXRvJiBpbnB1dFNvdXJjZSA6IG1faW5wdXRTb3VyY2VzKSB7Cisg
ICAgICAgIGlmIChpbnB1dFNvdXJjZS0+dHlwZSA9PSB0eXBlKQorICAgICAgICAgICAgcmV0dXJu
ICZpbnB1dFNvdXJjZS5nZXQoKTsKKyAgICB9CisKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwor
Ly8gU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjpDbGllbnQgQVBJCit2b2lkIFdlYkF1dG9tYXRp
b25TZXNzaW9uOjpzaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBN
b3VzZUludGVyYWN0aW9uIGludGVyYWN0aW9uLCBXZWJNb3VzZUV2ZW50OjpCdXR0b24gbW91c2VC
dXR0b24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBsb2NhdGlvbkluVmlld3BvcnQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgV2ViQ29yZTo6SW50UG9pbnQgbG9jYXRpb25J
blZpZXcgPSBXZWJDb3JlOjpJbnRQb2ludChsb2NhdGlvbkluVmlld3BvcnQueCgpLCBsb2NhdGlv
bkluVmlld3BvcnQueSgpICsgcGFnZS50b3BDb250ZW50SW5zZXQoKSk7CisgICAgcGFnZS5nZXRX
aW5kb3dGcmFtZVdpdGhDYWxsYmFjayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBwYWdl
ID0gbWFrZVJlZihwYWdlKSwgaW50ZXJhY3Rpb24sIG1vdXNlQnV0dG9uLCBsb2NhdGlvbkluVmll
d10oV2ViQ29yZTo6RmxvYXRSZWN0IHdpbmRvd0ZyYW1lKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0
byBjbGlwcGVkWCA9IHN0ZDo6bWluKHN0ZDo6bWF4KDAuMGYsIChmbG9hdClsb2NhdGlvbkluVmll
dy54KCkpLCB3aW5kb3dGcmFtZS5zaXplKCkud2lkdGgoKSk7CisgICAgICAgIGF1dG8gY2xpcHBl
ZFkgPSBzdGQ6Om1pbihzdGQ6Om1heCgwLjBmLCAoZmxvYXQpbG9jYXRpb25JblZpZXcueSgpKSwg
d2luZG93RnJhbWUuc2l6ZSgpLmhlaWdodCgpKTsKKyAgICAgICAgaWYgKGNsaXBwZWRYICE9IGxv
Y2F0aW9uSW5WaWV3LngoKSB8fCBjbGlwcGVkWSAhPSBsb2NhdGlvbkluVmlldy55KCkpIHsKKyAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKEFVVE9NQVRJT05fQ09NTUFORF9FUlJPUl9XSVRI
X05BTUUoVGFyZ2V0T3V0T2ZCb3VuZHMpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorCisgICAgICAgIC8vIEJyaWRnZSB0aGUgZmx1c2hlZCBjYWxsYmFjayB0byBvdXIgY29tbWFu
ZCdzIGNvbXBsZXRpb24gaGFuZGxlci4KKyAgICAgICAgYXV0byBtb3VzZUV2ZW50c0ZsdXNoZWRD
YWxsYmFjayA9IFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XShzdGQ6Om9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+IGVycm9yKSB7CisgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihlcnJvcik7CisgICAgICAgIH07CisKKyAgICAgICAgYXV0
byYgY2FsbGJhY2tJbk1hcCA9IG1fcGVuZGluZ01vdXNlRXZlbnRzRmx1c2hlZENhbGxiYWNrc1Bl
clBhZ2UuYWRkKHBhZ2UtPnBhZ2VJRCgpLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CisgICAg
ICAgIGlmIChjYWxsYmFja0luTWFwKQorICAgICAgICAgICAgY2FsbGJhY2tJbk1hcChBVVRPTUFU
SU9OX0NPTU1BTkRfRVJST1JfV0lUSF9OQU1FKFRpbWVvdXQpKTsKKyAgICAgICAgY2FsbGJhY2tJ
bk1hcCA9IFdURk1vdmUobW91c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2spOworCisgICAgICAgIHBs
YXRmb3JtU2ltdWxhdGVNb3VzZUludGVyYWN0aW9uKHBhZ2UsIGludGVyYWN0aW9uLCBtb3VzZUJ1
dHRvbiwgbG9jYXRpb25JblZpZXcsIChXZWJFdmVudDo6TW9kaWZpZXJzKW1fY3VycmVudE1vZGlm
aWVycyk7CisKKyAgICAgICAgLy8gSWYgdGhlIGV2ZW50IGRvZXMgbm90IGhpdCB0ZXN0IGFueXRo
aW5nIGluIHRoZSB3aW5kb3csIHRoZW4gaXQgbWF5IG5vdCBoYXZlIGJlZW4gZGVsaXZlcmVkLgor
ICAgICAgICBpZiAoY2FsbGJhY2tJbk1hcCAmJiAhcGFnZS0+aXNQcm9jZXNzaW5nTW91c2VFdmVu
dHMoKSkgeworICAgICAgICAgICAgYXV0byBjYWxsYmFja1RvQ2FuY2VsID0gbV9wZW5kaW5nTW91
c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS50YWtlKHBhZ2UtPnBhZ2VJRCgpKTsKKyAg
ICAgICAgICAgIGNhbGxiYWNrVG9DYW5jZWwoc3RkOjpudWxsb3B0KTsKKyAgICAgICAgfQorCisg
ICAgICAgIC8vIE90aGVyd2lzZSwgd2FpdCBmb3IgbW91c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2sg
dG8gcnVuIHdoZW4gYWxsIGV2ZW50cyBhcmUgaGFuZGxlZC4KKyAgICB9KTsKK30KKwordm9pZCBX
ZWJBdXRvbWF0aW9uU2Vzc2lvbjo6c2ltdWxhdGVLZXlib2FyZEludGVyYWN0aW9uKFdlYlBhZ2VQ
cm94eSYgcGFnZSwgS2V5Ym9hcmRJbnRlcmFjdGlvbiBpbnRlcmFjdGlvbiwgc3RkOjpvcHRpb25h
bDxWaXJ0dWFsS2V5PiB2aXJ0dWFsS2V5LCBzdGQ6Om9wdGlvbmFsPENoYXJLZXk+IGNoYXJLZXks
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVy
cm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgLy8gQnJpZGdlIHRoZSBmbHVzaGVk
IGNhbGxiYWNrIHRvIG91ciBjb21tYW5kJ3MgY29tcGxldGlvbiBoYW5kbGVyLgorICAgIGF1dG8g
a2V5Ym9hcmRFdmVudHNGbHVzaGVkQ2FsbGJhY2sgPSBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oc3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVy
cm9yPiBlcnJvcikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihlcnJvcik7CisgICAgfTsK
KworICAgIGF1dG8mIGNhbGxiYWNrSW5NYXAgPSBtX3BlbmRpbmdLZXlib2FyZEV2ZW50c0ZsdXNo
ZWRDYWxsYmFja3NQZXJQYWdlLmFkZChwYWdlLnBhZ2VJRCgpLCBudWxscHRyKS5pdGVyYXRvci0+
dmFsdWU7CisgICAgaWYgKGNhbGxiYWNrSW5NYXApCisgICAgICAgIGNhbGxiYWNrSW5NYXAoQVVU
T01BVElPTl9DT01NQU5EX0VSUk9SX1dJVEhfTkFNRShUaW1lb3V0KSk7CisgICAgY2FsbGJhY2tJ
bk1hcCA9IFdURk1vdmUoa2V5Ym9hcmRFdmVudHNGbHVzaGVkQ2FsbGJhY2spOworCisgICAgcGxh
dGZvcm1TaW11bGF0ZUtleWJvYXJkSW50ZXJhY3Rpb24ocGFnZSwgaW50ZXJhY3Rpb24sIHZpcnR1
YWxLZXksIGNoYXJLZXkpOworCisgICAgLy8gV2FpdCBmb3Iga2V5Ym9hcmRFdmVudHNGbHVzaGVk
Q2FsbGJhY2sgdG8gcnVuIHdoZW4gYWxsIGV2ZW50cyBhcmUgaGFuZGxlZC4KK30KKwogI2lmIFVT
RShBUFBLSVQpIHx8IFBMQVRGT1JNKEdUSykKIHN0YXRpYyBXZWJFdmVudDo6TW9kaWZpZXJzIHBy
b3RvY29sTW9kaWZpZXJUb1dlYkV2ZW50TW9kaWZpZXIoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbjo6S2V5TW9kaWZpZXIgbW9kaWZpZXIpCiB7CkBAIC0xMzg0LDYgKzE0NzIsMjAgQEAg
c3RhdGljIFdlYkV2ZW50OjpNb2RpZmllcnMgcHJvdG9jb2xNb2RpZmllclRvV2ViRXZlbnRNb2Rp
ZmllcihJbnNwZWN0b3I6OlByb3RvY28KIAogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiB9CisKK3N0YXRpYyBXZWJNb3VzZUV2ZW50OjpCdXR0b24gcHJvdG9jb2xNb3VzZUJ1dHRv
blRvV2ViTW91c2VFdmVudEJ1dHRvbihJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpN
b3VzZUJ1dHRvbiBidXR0b24pCit7CisgICAgc3dpdGNoIChidXR0b24pIHsKKyAgICBjYXNlIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9uOjpOb25lOgorICAgICAg
ICByZXR1cm4gV2ViTW91c2VFdmVudDo6Tm9CdXR0b247CisgICAgY2FzZSBJbnNwZWN0b3I6OlBy
b3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1dHRvbjo6TGVmdDoKKyAgICAgICAgcmV0dXJuIFdl
Yk1vdXNlRXZlbnQ6OkxlZnRCdXR0b247CisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpB
dXRvbWF0aW9uOjpNb3VzZUJ1dHRvbjo6TWlkZGxlOgorICAgICAgICByZXR1cm4gV2ViTW91c2VF
dmVudDo6TWlkZGxlQnV0dG9uOworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21h
dGlvbjo6TW91c2VCdXR0b246OlJpZ2h0OgorICAgICAgICByZXR1cm4gV2ViTW91c2VFdmVudDo6
UmlnaHRCdXR0b247CisgICAgfQorfQogI2VuZGlmIC8vIFVTRShBUFBLSVQpIHx8IFBMQVRGT1JN
KEdUSykKIAogdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGVyZm9ybU1vdXNlSW50ZXJhY3Rp
b24oY29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbnN0IEpTT046Ok9iamVjdCYgcmVxdWVzdGVkUG9z
aXRpb25PYmplY3QsIGNvbnN0IFN0cmluZyYgbW91c2VCdXR0b25TdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgbW91c2VJbnRlcmFjdGlvblN0cmluZywgY29uc3QgSlNPTjo6QXJyYXkmIGtleU1vZGlmaWVy
U3RyaW5ncywgUmVmPFBlcmZvcm1Nb3VzZUludGVyYWN0aW9uQ2FsbGJhY2s+JiYgY2FsbGJhY2sp
CkBAIC0xNDE1LDEzICsxNTE3LDEzIEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBlcmZv
cm1Nb3VzZUludGVyYWN0aW9uKGNvbnN0IFN0cmluZyYgaGFuZGxlLCBjb25zdCBKCiAgICAgICAg
IFdlYkV2ZW50OjpNb2RpZmllcnMgZW51bVZhbHVlID0gcHJvdG9jb2xNb2RpZmllclRvV2ViRXZl
bnRNb2RpZmllcihwYXJzZWRNb2RpZmllci52YWx1ZSgpKTsKICAgICAgICAga2V5TW9kaWZpZXJz
ID0gKFdlYkV2ZW50OjpNb2RpZmllcnMpKGVudW1WYWx1ZSB8IGtleU1vZGlmaWVycyk7CiAgICAg
fQotICAgIAorCiAgICAgcGFnZS0+Z2V0V2luZG93RnJhbWVXaXRoQ2FsbGJhY2soW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KSwgcGFnZSA9IG1ha2VSZWYoKnBhZ2UpLCB4LCB5LCBtb3VzZUludGVyYWN0aW9uU3RyaW5nLCBt
b3VzZUJ1dHRvblN0cmluZywga2V5TW9kaWZpZXJzXShXZWJDb3JlOjpGbG9hdFJlY3Qgd2luZG93
RnJhbWUpIG11dGFibGUgewogCiAgICAgICAgIHggPSBzdGQ6Om1pbihzdGQ6Om1heCgwLjBmLCB4
KSwgd2luZG93RnJhbWUuc2l6ZSgpLndpZHRoKCkpOwogICAgICAgICB5ID0gc3RkOjptaW4oc3Rk
OjptYXgoMC4wZiwgeSArIHBhZ2UtPnRvcENvbnRlbnRJbnNldCgpKSwgd2luZG93RnJhbWUuc2l6
ZSgpLmhlaWdodCgpKTsKIAotICAgICAgICBXZWJDb3JlOjpJbnRQb2ludCB2aWV3UG9zaXRpb24g
PSBXZWJDb3JlOjpJbnRQb2ludChzdGF0aWNfY2FzdDxpbnQ+KHgpLCBzdGF0aWNfY2FzdDxpbnQ+
KHkpKTsKKyAgICAgICAgV2ViQ29yZTo6SW50UG9pbnQgcG9zaXRpb25JblZpZXcgPSBXZWJDb3Jl
OjpJbnRQb2ludChzdGF0aWNfY2FzdDxpbnQ+KHgpLCBzdGF0aWNfY2FzdDxpbnQ+KHkpKTsKIAog
ICAgICAgICBhdXRvIHBhcnNlZEludGVyYWN0aW9uID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbkhlbHBlcnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpNb3VzZUludGVyYWN0aW9uPihtb3VzZUludGVyYWN0aW9uU3RyaW5n
KTsKICAgICAgICAgaWYgKCFwYXJzZWRJbnRlcmFjdGlvbikKQEAgLTE0NDcsMTEgKzE1NDksOCBA
QCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwZXJmb3JtTW91c2VJbnRlcmFjdGlvbihjb25z
dCBTdHJpbmcmIGhhbmRsZSwgY29uc3QgSgogICAgICAgICAgICAgY2FsbGJhY2tJbk1hcChBVVRP
TUFUSU9OX0NPTU1BTkRfRVJST1JfV0lUSF9OQU1FKFRpbWVvdXQpKTsKICAgICAgICAgY2FsbGJh
Y2tJbk1hcCA9IFdURk1vdmUobW91c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2spOwogCi0gICAgICAg
IC8vIFRoaXMgaXMgY2xlYXJlZCB3aGVuIGFsbCBtb3VzZSBldmVudHMgYXJlIGZsdXNoZWQuCi0g
ICAgICAgIG1fc2ltdWxhdGluZ1VzZXJJbnRlcmFjdGlvbiA9IHRydWU7CisgICAgICAgIHBsYXRm
b3JtU2ltdWxhdGVNb3VzZUludGVyYWN0aW9uKHBhZ2UsIHBhcnNlZEludGVyYWN0aW9uLnZhbHVl
KCksIHByb3RvY29sTW91c2VCdXR0b25Ub1dlYk1vdXNlRXZlbnRCdXR0b24ocGFyc2VkQnV0dG9u
LnZhbHVlKCkpLCBwb3NpdGlvbkluVmlldywga2V5TW9kaWZpZXJzKTsKIAotICAgICAgICBwbGF0
Zm9ybVNpbXVsYXRlTW91c2VJbnRlcmFjdGlvbihwYWdlLCB2aWV3UG9zaXRpb24sIHBhcnNlZElu
dGVyYWN0aW9uLnZhbHVlKCksIHBhcnNlZEJ1dHRvbi52YWx1ZSgpLCBrZXlNb2RpZmllcnMpOwot
ICAgICAgICAKICAgICAgICAgLy8gSWYgdGhlIGV2ZW50IGxvY2F0aW9uIHdhcyBwcmV2aW91c2x5
IGNsaXBwZWQgYW5kIGRvZXMgbm90IGhpdCB0ZXN0IGFueXRoaW5nIGluIHRoZSB3aW5kb3csIHRo
ZW4gaXQgd2lsbCBub3QgYmUgcHJvY2Vzc2VkLgogICAgICAgICAvLyBGb3IgY29tcGF0aWJpbGl0
eSB3aXRoIHByZS1XM0MgZHJpdmVyIGltcGxlbWVudGF0aW9ucywgZG9uJ3QgbWFrZSB0aGlzIGEg
aGFyZCBlcnJvcjsganVzdCBkbyBub3RoaW5nIHNpbGVudGx5LgogICAgICAgICAvLyBJbiBXM0Mt
b25seSBjb2RlIHBhdGhzLCB3ZSBjYW4gcmVqZWN0IGFueSBwb2ludGVyIGFjdGlvbnMgd2hvc2Ug
Y29vcmRpbmF0ZXMgYXJlIG91dHNpZGUgdGhlIHZpZXdwb3J0IHJlY3QuCkBAIC0xNDk5LDcgKzE1
OTgsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwZXJmb3JtS2V5Ym9hcmRJbnRlcmFj
dGlvbnMoY29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbgogICAgICAgICAgICAgICAgIEFTWU5DX0ZB
SUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKEludmFsaWRQYXJhbWV0ZXIsICJB
biBpbnRlcmFjdGlvbiBpbiB0aGUgJ2ludGVyYWN0aW9ucycgcGFyYW1ldGVyIGhhcyBhbiBpbnZh
bGlkICdrZXknIHZhbHVlLiIpOwogCiAgICAgICAgICAgICBhY3Rpb25zVG9QZXJmb3JtLnVuY2hl
Y2tlZEFwcGVuZChbdGhpcywgcGFnZSwgaW50ZXJhY3Rpb25UeXBlLCB2aXJ0dWFsS2V5XSB7Ci0g
ICAgICAgICAgICAgICAgcGxhdGZvcm1TaW11bGF0ZUtleVN0cm9rZSgqcGFnZSwgaW50ZXJhY3Rp
b25UeXBlLnZhbHVlKCksIHZpcnR1YWxLZXkudmFsdWUoKSk7CisgICAgICAgICAgICAgICAgcGxh
dGZvcm1TaW11bGF0ZUtleWJvYXJkSW50ZXJhY3Rpb24oKnBhZ2UsIGludGVyYWN0aW9uVHlwZS52
YWx1ZSgpLCB2aXJ0dWFsS2V5LCBzdGQ6Om51bGxvcHQpOwogICAgICAgICAgICAgfSk7CiAgICAg
ICAgIH0KIApAQCAtMTU0MCwxNCArMTYzOSwxNjMgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lv
bjo6cGVyZm9ybUtleWJvYXJkSW50ZXJhY3Rpb25zKGNvbnN0IFN0cmluZyYgaGFuZGxlLCBjb24K
ICAgICAgICAgY2FsbGJhY2tJbk1hcChBVVRPTUFUSU9OX0NPTU1BTkRfRVJST1JfV0lUSF9OQU1F
KFRpbWVvdXQpKTsKICAgICBjYWxsYmFja0luTWFwID0gV1RGTW92ZShrZXlib2FyZEV2ZW50c0Zs
dXNoZWRDYWxsYmFjayk7CiAKLSAgICAvLyBUaGlzIGlzIGNsZWFyZWQgd2hlbiBhbGwga2V5Ym9h
cmQgZXZlbnRzIGFyZSBmbHVzaGVkLgotICAgIG1fc2ltdWxhdGluZ1VzZXJJbnRlcmFjdGlvbiA9
IHRydWU7Ci0KICAgICBmb3IgKGF1dG8mIGFjdGlvbiA6IGFjdGlvbnNUb1BlcmZvcm0pCiAgICAg
ICAgIGFjdGlvbigpOwogI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKSB8fCBQTEFURk9STShHVEsp
CiB9CiAKK3N0YXRpYyBTaW11bGF0ZWRJbnB1dFNvdXJjZTo6VHlwZSBzaW11bGF0ZWRJbnB1dFNv
dXJjZVR5cGVGcm9tUHJvdG9jb2xTb3VyY2VUeXBlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9t
YXRpb246OklucHV0U291cmNlVHlwZSBwcm90b2NvbFR5cGUpCit7CisgICAgc3dpdGNoIChwcm90
b2NvbFR5cGUpIHsKKyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Oklu
cHV0U291cmNlVHlwZTo6TnVsbDoKKyAgICAgICAgcmV0dXJuIFNpbXVsYXRlZElucHV0U291cmNl
OjpUeXBlOjpOdWxsOworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6
SW5wdXRTb3VyY2VUeXBlOjpLZXlib2FyZDoKKyAgICAgICAgcmV0dXJuIFNpbXVsYXRlZElucHV0
U291cmNlOjpUeXBlOjpLZXlib2FyZDsKKyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1
dG9tYXRpb246OklucHV0U291cmNlVHlwZTo6TW91c2U6CisgICAgICAgIHJldHVybiBTaW11bGF0
ZWRJbnB1dFNvdXJjZTo6VHlwZTo6TW91c2U7CisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29s
OjpBdXRvbWF0aW9uOjpJbnB1dFNvdXJjZVR5cGU6OlRvdWNoOgorICAgICAgICByZXR1cm4gU2lt
dWxhdGVkSW5wdXRTb3VyY2U6OlR5cGU6OlRvdWNoOworICAgIH0KK30KKwordm9pZCBXZWJBdXRv
bWF0aW9uU2Vzc2lvbjo6cGVyZm9ybUludGVyYWN0aW9uU2VxdWVuY2UoY29uc3QgU3RyaW5nJiBo
YW5kbGUsIGNvbnN0IEpTT046OkFycmF5JiBpbnB1dFNvdXJjZXMsIGNvbnN0IEpTT046OkFycmF5
JiBzdGVwcywgUmVmPFdlYkF1dG9tYXRpb25TZXNzaW9uOjpQZXJmb3JtSW50ZXJhY3Rpb25TZXF1
ZW5jZUNhbGxiYWNrPiYmIGNhbGxiYWNrKQoreworICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHdl
YlBhZ2VQcm94eUZvckhhbmRsZShoYW5kbGUpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgQVNZ
TkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1IoV2luZG93Tm90Rm91bmQpOworCisgICAgSGFz
aE1hcDxTdHJpbmcsIFJlZjxTaW11bGF0ZWRJbnB1dFNvdXJjZT4+IHNvdXJjZUlkVG9JbnB1dFNv
dXJjZU1hcDsKKyAgICBIYXNoTWFwPFNpbXVsYXRlZElucHV0U291cmNlOjpUeXBlLCBTdHJpbmcs
IFdURjo6SW50SGFzaDxTaW11bGF0ZWRJbnB1dFNvdXJjZTo6VHlwZT4sIFdURjo6U3Ryb25nRW51
bUhhc2hUcmFpdHM8U2ltdWxhdGVkSW5wdXRTb3VyY2U6OlR5cGU+PiB0eXBlVG9Tb3VyY2VJZE1h
cDsKKworICAgIGlmICghaW5wdXRTb3VyY2VzLmxlbmd0aCgpKQorICAgICAgICBBU1lOQ19GQUlM
X1dJVEhfUFJFREVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhJbnZhbGlkUGFyYW1ldGVyLCAiVGhl
IHBhcmFtZXRlciAnaW5wdXRTb3VyY2VzJyB3YXMgbm90IGZvdW5kIG9yIGVtcHR5LiIpOworCisg
ICAgZm9yIChhdXRvIGlucHV0U291cmNlIDogaW5wdXRTb3VyY2VzKSB7CisgICAgICAgIFJlZlB0
cjxKU09OOjpPYmplY3Q+IGlucHV0U291cmNlT2JqZWN0OworICAgICAgICBpZiAoIWlucHV0U291
cmNlLT5hc09iamVjdChpbnB1dFNvdXJjZU9iamVjdCkpCisgICAgICAgICAgICBBU1lOQ19GQUlM
X1dJVEhfUFJFREVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhJbnZhbGlkUGFyYW1ldGVyLCAiQW4g
aW5wdXQgc291cmNlIGluIHRoZSAnaW5wdXRTb3VyY2VzJyBwYXJhbWV0ZXIgd2FzIGludmFsaWQu
Iik7CisgICAgICAgIAorICAgICAgICBTdHJpbmcgc291cmNlSWQ7CisgICAgICAgIGlmICghaW5w
dXRTb3VyY2VPYmplY3QtPmdldFN0cmluZyhBU0NJSUxpdGVyYWwoInNvdXJjZUlkIiksIHNvdXJj
ZUlkKSkKKyAgICAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9E
RVRBSUxTKEludmFsaWRQYXJhbWV0ZXIsICJBbiBpbnB1dCBzb3VyY2UgaW4gdGhlICdpbnB1dFNv
dXJjZXMnIHBhcmFtZXRlciBpcyBtaXNzaW5nIGEgJ3NvdXJjZUlkJy4iKTsKKworICAgICAgICBT
dHJpbmcgc291cmNlVHlwZTsKKyAgICAgICAgaWYgKCFpbnB1dFNvdXJjZU9iamVjdC0+Z2V0U3Ry
aW5nKEFTQ0lJTGl0ZXJhbCgic291cmNlVHlwZSIpLCBzb3VyY2VUeXBlKSkKKyAgICAgICAgICAg
IEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKEludmFsaWRQYXJh
bWV0ZXIsICJBbiBpbnB1dCBzb3VyY2UgaW4gdGhlICdpbnB1dFNvdXJjZXMnIHBhcmFtZXRlciBp
cyBtaXNzaW5nIGEgJ3NvdXJjZVR5cGUnLiIpOworCisgICAgICAgIGF1dG8gcGFyc2VkSW5wdXRT
b3VyY2VUeXBlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbkhlbHBlcnM6OnBhcnNl
RW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpJbnB1
dFNvdXJjZVR5cGU+KHNvdXJjZVR5cGUpOworICAgICAgICBpZiAoIXBhcnNlZElucHV0U291cmNl
VHlwZSkKKyAgICAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9E
RVRBSUxTKEludmFsaWRQYXJhbWV0ZXIsICJBbiBpbnB1dCBzb3VyY2UgaW4gdGhlICdpbnB1dFNv
dXJjZXMnIHBhcmFtZXRlciBoYXMgYW4gaW52YWxpZCAnc291cmNlVHlwZScuIik7CisKKyAgICAg
ICAgU2ltdWxhdGVkSW5wdXRTb3VyY2U6OlR5cGUgaW5wdXRTb3VyY2VUeXBlID0gc2ltdWxhdGVk
SW5wdXRTb3VyY2VUeXBlRnJvbVByb3RvY29sU291cmNlVHlwZSgqcGFyc2VkSW5wdXRTb3VyY2VU
eXBlKTsKKyAgICAgICAgaWYgKGlucHV0U291cmNlVHlwZSA9PSBTaW11bGF0ZWRJbnB1dFNvdXJj
ZTo6VHlwZTo6VG91Y2gpCisgICAgICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9F
UlJPUl9BTkRfREVUQUlMUyhOb3RJbXBsZW1lbnRlZCwgIlRvdWNoIGlucHV0IHNvdXJjZXMgYXJl
IG5vdCB5ZXQgc3VwcG9ydGVkLiIpOworCisgICAgICAgIGlmICh0eXBlVG9Tb3VyY2VJZE1hcC5j
b250YWlucyhpbnB1dFNvdXJjZVR5cGUpKQorICAgICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BS
RURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxpZFBhcmFtZXRlciwgIlR3byBpbnB1dCBz
b3VyY2VzIHdpdGggdGhlIHNhbWUgdHlwZSB3ZXJlIHNwZWNpZmllZC4iKTsKKyAgICAgICAgaWYg
KHNvdXJjZUlkVG9JbnB1dFNvdXJjZU1hcC5jb250YWlucyhzb3VyY2VJZCkpCisgICAgICAgICAg
ICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhJbnZhbGlkUGFy
YW1ldGVyLCAiVHdvIGlucHV0IHNvdXJjZXMgd2l0aCB0aGUgc2FtZSBzb3VyY2VJZCB3ZXJlIHNw
ZWNpZmllZC4iKTsKKworICAgICAgICB0eXBlVG9Tb3VyY2VJZE1hcC5hZGQoaW5wdXRTb3VyY2VU
eXBlLCBzb3VyY2VJZCk7CisgICAgICAgIHNvdXJjZUlkVG9JbnB1dFNvdXJjZU1hcC5hZGQoc291
cmNlSWQsICppbnB1dFNvdXJjZUZvclR5cGUoaW5wdXRTb3VyY2VUeXBlKSk7CisgICAgfQorCisg
ICAgVmVjdG9yPFNpbXVsYXRlZElucHV0S2V5RnJhbWU+IGtleUZyYW1lczsKKworICAgIGlmICgh
c3RlcHMubGVuZ3RoKCkpCisgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9S
X0FORF9ERVRBSUxTKEludmFsaWRQYXJhbWV0ZXIsICJUaGUgcGFyYW1ldGVyICdzdGVwcycgd2Fz
IG5vdCBmb3VuZCBvciBlbXB0eS4iKTsKKworICAgIGZvciAoYXV0byBzdGVwIDogc3RlcHMpIHsK
KyAgICAgICAgUmVmUHRyPEpTT046Ok9iamVjdD4gc3RlcE9iamVjdDsKKyAgICAgICAgaWYgKCFz
dGVwLT5hc09iamVjdChzdGVwT2JqZWN0KSkKKyAgICAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9Q
UkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKEludmFsaWRQYXJhbWV0ZXIsICJBIHN0ZXAgaW4g
dGhlICdzdGVwcycgcGFyYW1ldGVyIHdhcyBub3QgYW4gb2JqZWN0LiIpOworCisgICAgICAgIFJl
ZlB0cjxKU09OOjpBcnJheT4gc3RlcFN0YXRlczsKKyAgICAgICAgaWYgKCFzdGVwT2JqZWN0LT5n
ZXRBcnJheShBU0NJSUxpdGVyYWwoInN0YXRlcyIpLCBzdGVwU3RhdGVzKSkKKyAgICAgICAgICAg
IEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKEludmFsaWRQYXJh
bWV0ZXIsICJBIHN0ZXAgaXMgbWlzc2luZyB0aGUgJ3N0YXRlcycgcHJvcGVydHkuIik7CisKKyAg
ICAgICAgVmVjdG9yPFNpbXVsYXRlZElucHV0S2V5RnJhbWU6OlN0YXRlRW50cnk+IGVudHJpZXM7
CisgICAgICAgIGVudHJpZXMucmVzZXJ2ZUNhcGFjaXR5KHN0ZXBTdGF0ZXMtPmxlbmd0aCgpKTsK
KworICAgICAgICBmb3IgKGF1dG8gc3RhdGUgOiAqc3RlcFN0YXRlcykgeworICAgICAgICAgICAg
UmVmUHRyPEpTT046Ok9iamVjdD4gc3RhdGVPYmplY3Q7CisgICAgICAgICAgICBpZiAoIXN0YXRl
LT5hc09iamVjdChzdGF0ZU9iamVjdCkpCisgICAgICAgICAgICAgICAgQVNZTkNfRkFJTF9XSVRI
X1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxpZFBhcmFtZXRlciwgIkVuY291bnRl
cmVkIGEgbm9uLW9iamVjdCBzdGVwIHN0YXRlLiIpOworCisgICAgICAgICAgICBTdHJpbmcgc291
cmNlSWQ7CisgICAgICAgICAgICBpZiAoIXN0YXRlT2JqZWN0LT5nZXRTdHJpbmcoQVNDSUlMaXRl
cmFsKCJzb3VyY2VJZCIpLCBzb3VyY2VJZCkpCisgICAgICAgICAgICAgICAgQVNZTkNfRkFJTF9X
SVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxpZFBhcmFtZXRlciwgIlN0ZXAg
c3RhdGUgbGFja3MgcmVxdWlyZWQgJ3NvdXJjZUlkJyBwcm9wZXJ0eS4iKTsKKworICAgICAgICAg
ICAgaWYgKCFzb3VyY2VJZFRvSW5wdXRTb3VyY2VNYXAuY29udGFpbnMoc291cmNlSWQpKQorICAg
ICAgICAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxT
KEludmFsaWRQYXJhbWV0ZXIsICJVbmtub3duICdzb3VyY2VJZCcgc3BlY2lmaWVkLiIpOworCisg
ICAgICAgICAgICBTaW11bGF0ZWRJbnB1dFNvdXJjZSYgaW5wdXRTb3VyY2UgPSAqc291cmNlSWRU
b0lucHV0U291cmNlTWFwLmdldChzb3VyY2VJZCk7CisgICAgICAgICAgICBTaW11bGF0ZWRJbnB1
dFNvdXJjZVN0YXRlIHNvdXJjZVN0YXRlIHsgfTsKKworICAgICAgICAgICAgU3RyaW5nIHByZXNz
ZWRDaGFyS2V5U3RyaW5nOworICAgICAgICAgICAgaWYgKHN0YXRlT2JqZWN0LT5nZXRTdHJpbmco
QVNDSUlMaXRlcmFsKCJwcmVzc2VkQ2hhcktleSIpLCBwcmVzc2VkQ2hhcktleVN0cmluZykpCisg
ICAgICAgICAgICAgICAgc291cmNlU3RhdGUucHJlc3NlZENoYXJLZXkgPSBwcmVzc2VkQ2hhcktl
eVN0cmluZy5jaGFyYWN0ZXJBdCgwKTsKKworICAgICAgICAgICAgU3RyaW5nIHByZXNzZWRWaXJ0
dWFsS2V5U3RyaW5nOworICAgICAgICAgICAgaWYgKHN0YXRlT2JqZWN0LT5nZXRTdHJpbmcoQVND
SUlMaXRlcmFsKCJwcmVzc2VkVmlydHVhbEtleSIpLCBwcmVzc2VkVmlydHVhbEtleVN0cmluZykp
CisgICAgICAgICAgICAgICAgc291cmNlU3RhdGUucHJlc3NlZFZpcnR1YWxLZXkgPSBJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5n
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk+KHByZXNzZWRWaXJ0
dWFsS2V5U3RyaW5nKTsKKworICAgICAgICAgICAgU3RyaW5nIHByZXNzZWRCdXR0b25TdHJpbmc7
CisgICAgICAgICAgICBpZiAoc3RhdGVPYmplY3QtPmdldFN0cmluZyhBU0NJSUxpdGVyYWwoInBy
ZXNzZWRCdXR0b24iKSwgcHJlc3NlZEJ1dHRvblN0cmluZykpIHsKKyAgICAgICAgICAgICAgICBh
dXRvIHByb3RvY29sQnV0dG9uID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbkhlbHBl
cnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uOjpNb3VzZUJ1dHRvbj4ocHJlc3NlZEJ1dHRvblN0cmluZyk7CisgICAgICAgICAgICAgICAg
c291cmNlU3RhdGUucHJlc3NlZE1vdXNlQnV0dG9uID0gcHJvdG9jb2xNb3VzZUJ1dHRvblRvV2Vi
TW91c2VFdmVudEJ1dHRvbihwcm90b2NvbEJ1dHRvbi52YWx1ZV9vcihJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1dHRvbjo6Tm9uZSkpOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBSZWZQdHI8SlNPTjo6T2JqZWN0PiBsb2NhdGlvbk9iamVjdDsKKyAgICAgICAg
ICAgIGlmIChzdGF0ZU9iamVjdC0+Z2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgibG9jYXRpb24iKSwg
bG9jYXRpb25PYmplY3QpKSB7CisgICAgICAgICAgICAgICAgaW50IHgsIHk7CisgICAgICAgICAg
ICAgICAgaWYgKGxvY2F0aW9uT2JqZWN0LT5nZXRJbnRlZ2VyKEFTQ0lJTGl0ZXJhbCgieCIpLCB4
KSAmJiBsb2NhdGlvbk9iamVjdC0+Z2V0SW50ZWdlcihBU0NJSUxpdGVyYWwoInkiKSwgeSkpCisg
ICAgICAgICAgICAgICAgICAgIHNvdXJjZVN0YXRlLmxvY2F0aW9uID0gV2ViQ29yZTo6SW50UG9p
bnQoeCwgeSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGludCBwYXJzZWREdXJhdGlv
bjsKKyAgICAgICAgICAgIGlmIChzdGF0ZU9iamVjdC0+Z2V0SW50ZWdlcihBU0NJSUxpdGVyYWwo
ImR1cmF0aW9uIiksIHBhcnNlZER1cmF0aW9uKSkKKyAgICAgICAgICAgICAgICBzb3VyY2VTdGF0
ZS5kdXJhdGlvbiA9IFNlY29uZHM6OmZyb21NaWxsaXNlY29uZHMocGFyc2VkRHVyYXRpb24pOwor
CisgICAgICAgICAgICBlbnRyaWVzLnVuY2hlY2tlZEFwcGVuZChzdGQ6OnBhaXI8U2ltdWxhdGVk
SW5wdXRTb3VyY2UmLCBTaW11bGF0ZWRJbnB1dFNvdXJjZVN0YXRlPiB7IGlucHV0U291cmNlLCBz
b3VyY2VTdGF0ZSB9KTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAga2V5RnJhbWVzLmFw
cGVuZChTaW11bGF0ZWRJbnB1dEtleUZyYW1lKFdURk1vdmUoZW50cmllcykpKTsKKyAgICB9CisK
KyAgICBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXImIGlucHV0RGlzcGF0Y2hlciA9IGlucHV0RGlz
cGF0Y2hlckZvclBhZ2UoKnBhZ2UpOworICAgIGlmIChpbnB1dERpc3BhdGNoZXIuaXNBY3RpdmUo
KSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgQVNZTkNfRkFJTF9X
SVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoSW50ZXJuYWxFcnJvciwgIkEgcHJldmlv
dXMgaW50ZXJhY3Rpb24gaXMgc3RpbGwgdW5kZXJ3YXkuIik7CisgICAgfQorCisgICAgaW5wdXRE
aXNwYXRjaGVyLnJ1bihXVEZNb3ZlKGtleUZyYW1lcyksIG1faW5wdXRTb3VyY2VzLCBbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spXShzdGQ6Om9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+IGVycm9yKSB7CisgICAg
ICAgIGlmIChlcnJvcikKKyAgICAgICAgICAgIGNhbGxiYWNrLT5zZW5kRmFpbHVyZShlcnJvci52
YWx1ZSgpLnRvUHJvdG9jb2xTdHJpbmcoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNh
bGxiYWNrLT5zZW5kU3VjY2VzcygpOworICAgIH0pOworfQorCit2b2lkIFdlYkF1dG9tYXRpb25T
ZXNzaW9uOjpjYW5jZWxJbnRlcmFjdGlvblNlcXVlbmNlKGNvbnN0IFN0cmluZyYgaGFuZGxlLCBS
ZWY8Q2FuY2VsSW50ZXJhY3Rpb25TZXF1ZW5jZUNhbGxiYWNrPiYmIGNhbGxiYWNrKQoreworICAg
IFdlYlBhZ2VQcm94eSogcGFnZSA9IHdlYlBhZ2VQcm94eUZvckhhbmRsZShoYW5kbGUpOworICAg
IGlmICghcGFnZSkKKyAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1IoV2lu
ZG93Tm90Rm91bmQpOworCisgICAgVmVjdG9yPFNpbXVsYXRlZElucHV0S2V5RnJhbWU+IGtleUZy
YW1lcyh7IFNpbXVsYXRlZElucHV0S2V5RnJhbWU6OmtleUZyYW1lVG9SZXNldElucHV0U291cmNl
cyhtX2lucHV0U291cmNlcykgfSk7CisgICAgU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyJiBpbnB1
dERpc3BhdGNoZXIgPSBpbnB1dERpc3BhdGNoZXJGb3JQYWdlKCpwYWdlKTsKKyAgICBpZiAoaW5w
dXREaXNwYXRjaGVyLmlzQWN0aXZlKCkpCisgICAgICAgIGlucHV0RGlzcGF0Y2hlci5jYW5jZWwo
KTsKKyAgICAKKyAgICBpbnB1dERpc3BhdGNoZXIucnVuKFdURk1vdmUoa2V5RnJhbWVzKSwgbV9p
bnB1dFNvdXJjZXMsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldKHN0ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRF
cnJvcj4gZXJyb3IpIHsKKyAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAgY2FsbGJhY2st
PnNlbmRGYWlsdXJlKGVycm9yLnZhbHVlKCkudG9Qcm90b2NvbFN0cmluZygpKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgY2FsbGJhY2stPnNlbmRTdWNjZXNzKCk7CisgICAgfSk7Cit9CisK
IHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnRha2VTY3JlZW5zaG90KGNvbnN0IFN0cmluZyYg
aGFuZGxlLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsRnJhbWVIYW5kbGUsIGNvbnN0IFN0cmluZyog
b3B0aW9uYWxOb2RlSGFuZGxlLCBjb25zdCBib29sKiBvcHRpb25hbFNjcm9sbEludG9WaWV3SWZO
ZWVkZWQsIGNvbnN0IGJvb2wqIG9wdGlvbmFsQ2xpcFRvVmlld3BvcnQsIFJlZjxUYWtlU2NyZWVu
c2hvdENhbGxiYWNrPiYmIGNhbGxiYWNrKQogewogICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHdl
YlBhZ2VQcm94eUZvckhhbmRsZShoYW5kbGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCmluZGV4IDI0ZTgx
ZTcwNTc3OTkyMjZhMGI0YWZiMmFmZWQ0NzUwNjlkNjEyMGEuLmQzNWI1OTFkZmY5Njg5NDVhMzMz
MzM2MTE2ZGJhNDdkMTBkNmYzMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmgKQEAgLTMwLDYgKzMwLDcg
QEAKICNpbmNsdWRlICJBdXRvbWF0aW9uRnJvbnRlbmREaXNwYXRjaGVycy5oIgogI2luY2x1ZGUg
IkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKKyNpbmNsdWRlICJT
aW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuaCIKICNpbmNsdWRlICJXZWJFdmVudC5oIgogI2luY2x1
ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBA
IC03Niw3ICs3Nyw3IEBAIGNsYXNzIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHk7CiBj
bGFzcyBXZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKIAotc3RydWN0IEF1dG9t
YXRpb25Db21tYW5kRXJyb3IgeworY2xhc3MgQXV0b21hdGlvbkNvbW1hbmRFcnJvciB7CiBwdWJs
aWM6CiAgICAgQXV0b21hdGlvbkNvbW1hbmRFcnJvcihJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRv
bWF0aW9uOjpFcnJvck1lc3NhZ2UgdHlwZSkKICAgICAgICAgOiB0eXBlKHR5cGUpIHsgfQpAQCAt
OTEsMTEgKzkyLDE0IEBAIHB1YmxpYzoKICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbWVzc2Fn
ZTsKIH07CiAKK3VzaW5nIEF1dG9tYXRpb25Db21wbGV0aW9uSGFuZGxlciA9IFdURjo6Q29tcGxl
dGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+KT47
CisKIGNsYXNzIFdlYkF1dG9tYXRpb25TZXNzaW9uIGZpbmFsIDogcHVibGljIEFQSTo6T2JqZWN0
SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6QXV0b21hdGlvblNlc3Npb24+LCBwdWJsaWMgSVBDOjpN
ZXNzYWdlUmVjZWl2ZXIKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICAgICAsIHB1Ymxp
YyBJbnNwZWN0b3I6OlJlbW90ZUF1dG9tYXRpb25UYXJnZXQKICNlbmRpZgogICAgICwgcHVibGlj
IEluc3BlY3Rvcjo6QXV0b21hdGlvbkJhY2tlbmREaXNwYXRjaGVySGFuZGxlcgorICAgICwgcHVi
bGljIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6Q2xpZW50CiB7CiBwdWJsaWM6CiAgICAgV2Vi
QXV0b21hdGlvblNlc3Npb24oKTsKQEAgLTEzMSw2ICsxMzUsMTAgQEAgcHVibGljOgogI2VuZGlm
CiAgICAgdm9pZCB0ZXJtaW5hdGUoKTsKIAorICAgIC8vIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hl
cjo6Q2xpZW50IEFQSQorICAgIHZvaWQgc2ltdWxhdGVNb3VzZUludGVyYWN0aW9uKFdlYlBhZ2VQ
cm94eSYsIE1vdXNlSW50ZXJhY3Rpb24sIFdlYk1vdXNlRXZlbnQ6OkJ1dHRvbiwgY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmIGxvY2F0aW9uSW5WaWV3LCBBdXRvbWF0aW9uQ29tcGxldGlvbkhhbmRs
ZXImJikgZmluYWw7CisgICAgdm9pZCBzaW11bGF0ZUtleWJvYXJkSW50ZXJhY3Rpb24oV2ViUGFn
ZVByb3h5JiwgS2V5Ym9hcmRJbnRlcmFjdGlvbiwgc3RkOjpvcHRpb25hbDxWaXJ0dWFsS2V5Piwg
c3RkOjpvcHRpb25hbDxDaGFyS2V5PiwgQXV0b21hdGlvbkNvbXBsZXRpb25IYW5kbGVyJiYpIGZp
bmFsOworCiAgICAgLy8gSW5zcGVjdG9yOjpBdXRvbWF0aW9uQmFja2VuZERpc3BhdGNoZXJIYW5k
bGVyIEFQSQogICAgIC8vIE5PVEU6IHRoZSBzZXQgb2YgZGVjbGFyYXRpb25zIGluY2x1ZGVkIGlu
IHRoaXMgaW50ZXJmYWNlIGRlcGVuZCBvbiB0aGUgInBsYXRmb3JtIiBwcm9wZXJ0eSBpbiBBdXRv
bWF0aW9uLmpzb24KICAgICAvLyBhbmQgdGhlIC0tcGxhdGZvcm0gYXJndW1lbnQgcGFzc2VkIHRv
IHRoZSBwcm90b2NvbCBiaW5kaW5ncyBnZW5lcmF0b3IuCkBAIC0xNTEsNiArMTU5LDggQEAgcHVi
bGljOgogICAgIHZvaWQgZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24oY29uc3QgU3RyaW5nJiBi
cm93c2luZ0NvbnRleHRIYW5kbGUsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxGcmFtZUhhbmRsZSwg
Y29uc3QgU3RyaW5nJiBmdW5jdGlvbiwgY29uc3QgSlNPTjo6QXJyYXkmIGFyZ3VtZW50cywgY29u
c3QgYm9vbCogb3B0aW9uYWxFeHBlY3RzSW1wbGljaXRDYWxsYmFja0FyZ3VtZW50LCBjb25zdCBp
bnQqIG9wdGlvbmFsQ2FsbGJhY2tUaW1lb3V0LCBSZWY8SW5zcGVjdG9yOjpBdXRvbWF0aW9uQmFj
a2VuZERpc3BhdGNoZXJIYW5kbGVyOjpFdmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbkNhbGxiYWNr
PiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHBlcmZvcm1Nb3VzZUludGVyYWN0aW9uKGNvbnN0IFN0
cmluZyYgaGFuZGxlLCBjb25zdCBKU09OOjpPYmplY3QmIHJlcXVlc3RlZFBvc2l0aW9uLCBjb25z
dCBTdHJpbmcmIG1vdXNlQnV0dG9uLCBjb25zdCBTdHJpbmcmIG1vdXNlSW50ZXJhY3Rpb24sIGNv
bnN0IEpTT046OkFycmF5JiBrZXlNb2RpZmllcnMsIFJlZjxQZXJmb3JtTW91c2VJbnRlcmFjdGlv
bkNhbGxiYWNrPiYmKSBmaW5hbDsKICAgICB2b2lkIHBlcmZvcm1LZXlib2FyZEludGVyYWN0aW9u
cyhjb25zdCBTdHJpbmcmIGhhbmRsZSwgY29uc3QgSlNPTjo6QXJyYXkmIGludGVyYWN0aW9ucywg
UmVmPFBlcmZvcm1LZXlib2FyZEludGVyYWN0aW9uc0NhbGxiYWNrPiYmKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHBlcmZvcm1JbnRlcmFjdGlvblNlcXVlbmNlKGNvbnN0IFN0cmluZyYgaGFuZGxlLCBj
b25zdCBKU09OOjpBcnJheSYgc291cmNlcywgY29uc3QgSlNPTjo6QXJyYXkmIHN0ZXBzLCBSZWY8
UGVyZm9ybUludGVyYWN0aW9uU2VxdWVuY2VDYWxsYmFjaz4mJikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBjYW5jZWxJbnRlcmFjdGlvblNlcXVlbmNlKGNvbnN0IFN0cmluZyYgaGFuZGxlLCBSZWY8Q2Fu
Y2VsSW50ZXJhY3Rpb25TZXF1ZW5jZUNhbGxiYWNrPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHRh
a2VTY3JlZW5zaG90KGNvbnN0IFN0cmluZyYgaGFuZGxlLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFs
RnJhbWVIYW5kbGUsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxOb2RlSGFuZGxlLCBjb25zdCBib29s
KiBvcHRpb25hbFNjcm9sbEludG9WaWV3SWZOZWVkZWQsIGNvbnN0IGJvb2wqIG9wdGlvbmFsQ2xp
cFRvVmlld3BvcnQsIFJlZjxUYWtlU2NyZWVuc2hvdENhbGxiYWNrPiYmKSBvdmVycmlkZTsKICAg
ICB2b2lkIHJlc29sdmVDaGlsZEZyYW1lSGFuZGxlKGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250
ZXh0SGFuZGxlLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsRnJhbWVIYW5kbGUsIGNvbnN0IGludCog
b3B0aW9uYWxPcmRpbmFsLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsTmFtZSwgY29uc3QgU3RyaW5n
KiBvcHRpb25hbE5vZGVIYW5kbGUsIFJlZjxSZXNvbHZlQ2hpbGRGcmFtZUhhbmRsZUNhbGxiYWNr
PiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHJlc29sdmVQYXJlbnRGcmFtZUhhbmRsZShjb25zdCBT
dHJpbmcmIGJyb3dzaW5nQ29udGV4dEhhbmRsZSwgY29uc3QgU3RyaW5nJiBmcmFtZUhhbmRsZSwg
UmVmPFJlc29sdmVQYXJlbnRGcmFtZUhhbmRsZUNhbGxiYWNrPiYmKSBvdmVycmlkZTsKQEAgLTE3
NSw3ICsxODUsMTAgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICAvLyBFdmVudCBTaW11bGF0aW9u
IFN1cHBvcnQuCi0gICAgYm9vbCBpc1NpbXVsYXRpbmdVc2VySW50ZXJhY3Rpb24oKSBjb25zdCB7
IHJldHVybiBtX3NpbXVsYXRpbmdVc2VySW50ZXJhY3Rpb247IH0KKyAgICBib29sIGlzU2ltdWxh
dGluZ1VzZXJJbnRlcmFjdGlvbigpIGNvbnN0OworICAgIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hl
ciYgaW5wdXREaXNwYXRjaGVyRm9yUGFnZShXZWJQYWdlUHJveHkmKTsKKyAgICBTaW11bGF0ZWRJ
bnB1dFNvdXJjZSogaW5wdXRTb3VyY2VGb3JUeXBlKFNpbXVsYXRlZElucHV0U291cmNlOjpUeXBl
KSBjb25zdDsKKwogI2lmIFBMQVRGT1JNKE1BQykKICAgICBib29sIHdhc0V2ZW50U3ludGhlc2l6
ZWRGb3JBdXRvbWF0aW9uKE5TRXZlbnQgKik7CiAgICAgdm9pZCBtYXJrRXZlbnRBc1N5bnRoZXNp
emVkRm9yQXV0b21hdGlvbihOU0V2ZW50ICopOwpAQCAtMjE1LDkgKzIyOCw5IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBkaWREZWxldGVDb29raWUodWludDY0X3QgY2FsbGJhY2tJRCwgY29uc3QgU3Ry
aW5nJiBlcnJvclR5cGUpOwogCiAgICAgLy8gUGxhdGZvcm0tZGVwZW5kZW50IGltcGxlbWVudGF0
aW9ucy4KLSAgICB2b2lkIHBsYXRmb3JtU2ltdWxhdGVNb3VzZUludGVyYWN0aW9uKFdlYlBhZ2VQ
cm94eSYsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiB2aWV3UG9zaXRpb24sIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlSW50ZXJhY3Rpb24sIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9uLCBXZWJFdmVudDo6TW9kaWZpZXJzKTsKLSAgICAv
LyBTaW11bGF0ZXMgYSBzaW5nbGUgdmlydHVhbCBrZXkgYmVpbmcgcHJlc3NlZCwgc3VjaCBhcyBD
b250cm9sLCBGLWtleXMsIE51bXBhZCBrZXlzLCBldGMuIGFzIGFsbG93ZWQgYnkgdGhlIHByb3Rv
Y29sLgotICAgIHZvaWQgcGxhdGZvcm1TaW11bGF0ZUtleVN0cm9rZShXZWJQYWdlUHJveHkmLCBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpLZXlib2FyZEludGVyYWN0aW9uVHlwZSwg
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleSk7CisgICAgdm9pZCBw
bGF0Zm9ybVNpbXVsYXRlTW91c2VJbnRlcmFjdGlvbihXZWJQYWdlUHJveHkmLCBNb3VzZUludGVy
YWN0aW9uLCBXZWJNb3VzZUV2ZW50OjpCdXR0b24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBs
b2NhdGlvbkluVmlldywgV2ViRXZlbnQ6Ok1vZGlmaWVycyBrZXlNb2RpZmllcnMpOworICAgIC8v
IFNpbXVsYXRlcyBhIHNpbmdsZSB2aXJ0dWFsIG9yIGNoYXIga2V5IGJlaW5nIHByZXNzZWQvcmVs
ZWFzZWQsIHN1Y2ggYXMgJ2EnLCBDb250cm9sLCBGLWtleXMsIE51bXBhZCBrZXlzLCBldGMuIGFz
IGFsbG93ZWQgYnkgdGhlIHByb3RvY29sLgorICAgIHZvaWQgcGxhdGZvcm1TaW11bGF0ZUtleWJv
YXJkSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiwgS2V5Ym9hcmRJbnRlcmFjdGlvbiwgc3RkOjpv
cHRpb25hbDxWaXJ0dWFsS2V5Piwgc3RkOjpvcHRpb25hbDxDaGFyS2V5Pik7CiAgICAgLy8gU2lt
dWxhdGVzIGtleSBwcmVzc2VzIHRvIHByb2R1Y2UgdGhlIGNvZGVwb2ludHMgaW4gYSBzdHJpbmcu
IE9uZSBvciBtb3JlIGNvZGUgcG9pbnRzIGFyZSBkZWxpdmVyZWQgYXRvbWljYWxseSBhdCBncmFw
aGVtZSBjbHVzdGVyIGJvdW5kYXJpZXMuCiAgICAgdm9pZCBwbGF0Zm9ybVNpbXVsYXRlS2V5U2Vx
dWVuY2UoV2ViUGFnZVByb3h5JiwgY29uc3QgU3RyaW5nJik7CiAgICAgLy8gR2V0IGJhc2U2NCBl
bmNvZGVkIFBORyBkYXRhIGZyb20gYSBiaXRtYXAuCkBAIC0yODksMTMgKzMwMiwxNSBAQCBwcml2
YXRlOgogCiAgICAgYm9vbCBtX3Blcm1pc3Npb25Gb3JHZXRVc2VyTWVkaWEgeyB0cnVlIH07CiAK
LSAgICAvLyBUcnVlIGlmIGEgc3ludGhlc2l6ZWQga2V5IGV2ZW50IGlzIHN0aWxsIGJlaW5nIHBy
b2Nlc3NlZC4KLSAgICBib29sIG1fc2ltdWxhdGluZ1VzZXJJbnRlcmFjdGlvbiB7IGZhbHNlIH07
Ci0KICAgICAvLyBLZWVwIHRyYWNrIG9mIGN1cnJlbnRseSBhY3RpdmUgbW9kaWZpZXJzIGFjcm9z
cyBtdWx0aXBsZSBrZXlzdHJva2VzLgogICAgIC8vIE1vc3QgcGxhdGZvcm1zIGRvIG5vdCB0cmFj
ayBjdXJyZW50IG1vZGlmaWVycyBmcm9tIHN5bnRoZXNpemVkIGV2ZW50cy4KICAgICB1bnNpZ25l
ZCBtX2N1cnJlbnRNb2RpZmllcnMgeyAwIH07CiAKKyAgICAvLyBTaW11bGF0ZWRJbnB1dERpc3Bh
dGNoZXIgQVBJcyB0YWtlIGEgc2V0IG9mIGlucHV0IHNvdXJjZXMuIFdlIGFsc28gaW50ZXJuIHRo
ZXNlCisgICAgLy8gc28gdGhhdCBwcmV2aW91cyBpbnB1dCBzb3VyY2Ugc3RhdGUgaXMgdXNlZCBh
cyBpbml0aWFsIHN0YXRlIGZvciBsYXRlciBjb21tYW5kcy4KKyAgICBIYXNoU2V0PFJlZjxTaW11
bGF0ZWRJbnB1dFNvdXJjZT4+IG1faW5wdXRTb3VyY2VzOworICAgIEhhc2hNYXA8dWludDY0X3Qs
IFJlZjxTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI+PiBtX2lucHV0RGlzcGF0Y2hlcnNCeVBhZ2U7
CisKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICAgICBJbnNwZWN0b3I6OkZyb250ZW5k
Q2hhbm5lbCogbV9yZW1vdGVDaGFubmVsIHsgbnVsbHB0ciB9OwogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2d0ay9XZWJBdXRvbWF0aW9uU2Vz
c2lvbkd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2d0ay9XZWJB
dXRvbWF0aW9uU2Vzc2lvbkd0ay5jcHAKaW5kZXggMjhjZjc5NDhjODNiN2NkMTkyYzAzYzA3YTUy
YTkwMWRiNjhkZWNkYS4uNDdlZGQxY2E4OTc1OWQ0ZTc2NGQ1ODU2MmNhYjZiZTJmNGM2N2EwMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9ndGsvV2ViQXV0
b21hdGlvblNlc3Npb25HdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9t
YXRpb24vZ3RrL1dlYkF1dG9tYXRpb25TZXNzaW9uR3RrLmNwcApAQCAtNDgsMTUgKzQ4LDE1IEBA
IHN0YXRpYyB1bnNpZ25lZCBtb2RpZmllcnNUb0V2ZW50U3RhdGUoV2ViRXZlbnQ6Ok1vZGlmaWVy
cyBtb2RpZmllcnMpCiAgICAgcmV0dXJuIHN0YXRlOwogfQogCi1zdGF0aWMgdW5zaWduZWQgbW91
c2VCdXR0b25Ub0dka0J1dHRvbihJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3Vz
ZUJ1dHRvbiBidXR0b24pCitzdGF0aWMgdW5zaWduZWQgbW91c2VCdXR0b25Ub0dka0J1dHRvbihX
ZWJNb3VzZUV2ZW50OjpCdXR0b24gYnV0dG9uKQogewogICAgIHN3aXRjaCAoYnV0dG9uKSB7Ci0g
ICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1dHRvbjo6Tm9u
ZToKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9u
OjpMZWZ0OgorICAgIGNhc2UgV2ViTW91c2VFdmVudDo6Tm9CdXR0b246CisgICAgY2FzZSBXZWJN
b3VzZUV2ZW50OjpMZWZ0QnV0dG9uOgogICAgICAgICByZXR1cm4gR0RLX0JVVFRPTl9QUklNQVJZ
OwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VCdXR0b246
Ok1pZGRsZToKKyAgICBjYXNlIFdlYk1vdXNlRXZlbnQ6Ok1pZGRsZUJ1dHRvbjoKICAgICAgICAg
cmV0dXJuIEdES19CVVRUT05fTUlERExFOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbjo6TW91c2VCdXR0b246OlJpZ2h0OgorICAgIGNhc2UgV2ViTW91c2VFdmVudDo6
UmlnaHRCdXR0b246CiAgICAgICAgIHJldHVybiBHREtfQlVUVE9OX1NFQ09OREFSWTsKICAgICB9
CiAgICAgcmV0dXJuIEdES19CVVRUT05fUFJJTUFSWTsKQEAgLTEwMSwzMCArMTAxLDMwIEBAIHN0
YXRpYyB2b2lkIGRvTW90aW9uRXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiBsb2NhdGlvbiwKICAgICBndGtfbWFpbl9kb19ldmVudChldmVudC5nZXQoKSk7
CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVNb3VzZUlu
dGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHZp
ZXdQb3NpdGlvbiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VJbnRlcmFj
dGlvbiBpbnRlcmFjdGlvbiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VC
dXR0b24gYnV0dG9uLCBXZWJFdmVudDo6TW9kaWZpZXJzIGtleU1vZGlmaWVycykKK3ZvaWQgV2Vi
QXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVNb3VzZUludGVyYWN0aW9uKFdlYlBh
Z2VQcm94eSYgcGFnZSwgTW91c2VJbnRlcmFjdGlvbiBpbnRlcmFjdGlvbiwgV2ViTW91c2VFdmVu
dDo6QnV0dG9uIGJ1dHRvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGxvY2F0aW9uSW5WaWV3
LCBXZWJFdmVudDo6TW9kaWZpZXJzIGtleU1vZGlmaWVycykKIHsKICAgICB1bnNpZ25lZCBnZGtC
dXR0b24gPSBtb3VzZUJ1dHRvblRvR2RrQnV0dG9uKGJ1dHRvbik7CiAgICAgdW5zaWduZWQgc3Rh
dGUgPSBtb2RpZmllcnNUb0V2ZW50U3RhdGUoa2V5TW9kaWZpZXJzKTsKIAogICAgIHN3aXRjaCAo
aW50ZXJhY3Rpb24pIHsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246
Ok1vdXNlSW50ZXJhY3Rpb246Ok1vdmU6Ci0gICAgICAgIGRvTW90aW9uRXZlbnQocGFnZS52aWV3
V2lkZ2V0KCksIHZpZXdQb3NpdGlvbiwgc3RhdGUpOworICAgIGNhc2UgTW91c2VJbnRlcmFjdGlv
bjo6TW92ZToKKyAgICAgICAgZG9Nb3Rpb25FdmVudChwYWdlLnZpZXdXaWRnZXQoKSwgbG9jYXRp
b25JblZpZXcsIHN0YXRlKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlBy
b3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUludGVyYWN0aW9uOjpEb3duOgotICAgICAgICBkb01v
dXNlRXZlbnQoR0RLX0JVVFRPTl9QUkVTUywgcGFnZS52aWV3V2lkZ2V0KCksIHZpZXdQb3NpdGlv
biwgZ2RrQnV0dG9uLCBzdGF0ZSk7CisgICAgY2FzZSBNb3VzZUludGVyYWN0aW9uOjpEb3duOgor
ICAgICAgICBkb01vdXNlRXZlbnQoR0RLX0JVVFRPTl9QUkVTUywgcGFnZS52aWV3V2lkZ2V0KCks
IGxvY2F0aW9uSW5WaWV3LCBnZGtCdXR0b24sIHN0YXRlKTsKICAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUludGVyYWN0aW9uOjpV
cDoKLSAgICAgICAgZG9Nb3VzZUV2ZW50KEdES19CVVRUT05fUkVMRUFTRSwgcGFnZS52aWV3V2lk
Z2V0KCksIHZpZXdQb3NpdGlvbiwgZ2RrQnV0dG9uLCBzdGF0ZSk7CisgICAgY2FzZSBNb3VzZUlu
dGVyYWN0aW9uOjpVcDoKKyAgICAgICAgZG9Nb3VzZUV2ZW50KEdES19CVVRUT05fUkVMRUFTRSwg
cGFnZS52aWV3V2lkZ2V0KCksIGxvY2F0aW9uSW5WaWV3LCBnZGtCdXR0b24sIHN0YXRlKTsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpN
b3VzZUludGVyYWN0aW9uOjpTaW5nbGVDbGljazoKLSAgICAgICAgZG9Nb3VzZUV2ZW50KEdES19C
VVRUT05fUFJFU1MsIHBhZ2Uudmlld1dpZGdldCgpLCB2aWV3UG9zaXRpb24sIGdka0J1dHRvbiwg
c3RhdGUpOwotICAgICAgICBkb01vdXNlRXZlbnQoR0RLX0JVVFRPTl9SRUxFQVNFLCBwYWdlLnZp
ZXdXaWRnZXQoKSwgdmlld1Bvc2l0aW9uLCBnZGtCdXR0b24sIHN0YXRlKTsKKyAgICBjYXNlIE1v
dXNlSW50ZXJhY3Rpb246OlNpbmdsZUNsaWNrOgorICAgICAgICBkb01vdXNlRXZlbnQoR0RLX0JV
VFRPTl9QUkVTUywgcGFnZS52aWV3V2lkZ2V0KCksIGxvY2F0aW9uSW5WaWV3LCBnZGtCdXR0b24s
IHN0YXRlKTsKKyAgICAgICAgZG9Nb3VzZUV2ZW50KEdES19CVVRUT05fUkVMRUFTRSwgcGFnZS52
aWV3V2lkZ2V0KCksIGxvY2F0aW9uSW5WaWV3LCBnZGtCdXR0b24sIHN0YXRlKTsKICAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUlu
dGVyYWN0aW9uOjpEb3VibGVDbGljazoKLSAgICAgICAgZG9Nb3VzZUV2ZW50KEdES19CVVRUT05f
UFJFU1MsIHBhZ2Uudmlld1dpZGdldCgpLCB2aWV3UG9zaXRpb24sIGdka0J1dHRvbiwgc3RhdGUp
OwotICAgICAgICBkb01vdXNlRXZlbnQoR0RLX0JVVFRPTl9SRUxFQVNFLCBwYWdlLnZpZXdXaWRn
ZXQoKSwgdmlld1Bvc2l0aW9uLCBnZGtCdXR0b24sIHN0YXRlKTsKLSAgICAgICAgZG9Nb3VzZUV2
ZW50KEdES19CVVRUT05fUFJFU1MsIHBhZ2Uudmlld1dpZGdldCgpLCB2aWV3UG9zaXRpb24sIGdk
a0J1dHRvbiwgc3RhdGUpOwotICAgICAgICBkb01vdXNlRXZlbnQoR0RLX0JVVFRPTl9SRUxFQVNF
LCBwYWdlLnZpZXdXaWRnZXQoKSwgdmlld1Bvc2l0aW9uLCBnZGtCdXR0b24sIHN0YXRlKTsKKyAg
ICBjYXNlIE1vdXNlSW50ZXJhY3Rpb246OkRvdWJsZUNsaWNrOgorICAgICAgICBkb01vdXNlRXZl
bnQoR0RLX0JVVFRPTl9QUkVTUywgcGFnZS52aWV3V2lkZ2V0KCksIGxvY2F0aW9uSW5WaWV3LCBn
ZGtCdXR0b24sIHN0YXRlKTsKKyAgICAgICAgZG9Nb3VzZUV2ZW50KEdES19CVVRUT05fUkVMRUFT
RSwgcGFnZS52aWV3V2lkZ2V0KCksIGxvY2F0aW9uSW5WaWV3LCBnZGtCdXR0b24sIHN0YXRlKTsK
KyAgICAgICAgZG9Nb3VzZUV2ZW50KEdES19CVVRUT05fUFJFU1MsIHBhZ2Uudmlld1dpZGdldCgp
LCBsb2NhdGlvbkluVmlldywgZ2RrQnV0dG9uLCBzdGF0ZSk7CisgICAgICAgIGRvTW91c2VFdmVu
dChHREtfQlVUVE9OX1JFTEVBU0UsIHBhZ2Uudmlld1dpZGdldCgpLCBsb2NhdGlvbkluVmlldywg
Z2RrQnV0dG9uLCBzdGF0ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KQEAgLTI4MCwyMCAr
MjgwLDI3IEBAIHN0YXRpYyBpbnQga2V5Q29kZUZvclZpcnR1YWxLZXkoSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleSBrZXksCiAgICAgcmV0dXJuIDA7CiB9CiAKLXZv
aWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVLZXlTdHJva2UoV2ViUGFn
ZVByb3h5JiBwYWdlLCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpLZXlib2FyZElu
dGVyYWN0aW9uVHlwZSBpbnRlcmFjdGlvbiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlv
bjo6VmlydHVhbEtleSBrZXkpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNp
bXVsYXRlS2V5Ym9hcmRJbnRlcmFjdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIEtleWJvYXJkSW50
ZXJhY3Rpb24gaW50ZXJhY3Rpb24sIHN0ZDo6b3B0aW9uYWw8VmlydHVhbEtleT4gdmlydHVhbEtl
eSwgc3RkOjpvcHRpb25hbDxDaGFyS2V5PiBjaGFyS2V5KQogeworICAgIEFTU0VSVCh2aXJ0dWFs
S2V5Lmhhc192YWx1ZSgpIHx8IGNoYXJLZXkuaGFzX3ZhbHVlKCkpOworCiAgICAgR2RrTW9kaWZp
ZXJUeXBlIHVwZGF0ZVN0YXRlOwotICAgIGF1dG8ga2V5Q29kZSA9IGtleUNvZGVGb3JWaXJ0dWFs
S2V5KGtleSwgdXBkYXRlU3RhdGUpOworICAgIHVuc2lnbmVkIGtleUNvZGU7CisgICAgaWYgKHZp
cnR1YWxLZXkpCisgICAgICAgIGtleUNvZGUgPSBrZXlDb2RlRm9yVmlydHVhbEtleSh2aXJ0dWFs
S2V5LnZhbHVlKCksIHVwZGF0ZVN0YXRlKTsKKyAgICBlbHNlCisgICAgICAgIGtleUNvZGUgPSBn
ZGtfdW5pY29kZV90b19rZXl2YWwoZ191dGY4X2dldF9jaGFyKCZjaGFyS2V5LnZhbHVlKCkpKTsK
KwogICAgIHN3aXRjaCAoaW50ZXJhY3Rpb24pIHsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkF1dG9tYXRpb246OktleWJvYXJkSW50ZXJhY3Rpb25UeXBlOjpLZXlQcmVzczoKKyAgICBj
YXNlIEtleWJvYXJkSW50ZXJhY3Rpb246OktleVByZXNzOgogICAgICAgICBtX2N1cnJlbnRNb2Rp
ZmllcnMgfD0gdXBkYXRlU3RhdGU7CiAgICAgICAgIGRvS2V5U3Ryb2tlRXZlbnQoR0RLX0tFWV9Q
UkVTUywgcGFnZS52aWV3V2lkZ2V0KCksIGtleUNvZGUsIG1fY3VycmVudE1vZGlmaWVycyk7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6
S2V5Ym9hcmRJbnRlcmFjdGlvblR5cGU6OktleVJlbGVhc2U6CisgICAgY2FzZSBLZXlib2FyZElu
dGVyYWN0aW9uOjpLZXlSZWxlYXNlOgogICAgICAgICBtX2N1cnJlbnRNb2RpZmllcnMgJj0gfnVw
ZGF0ZVN0YXRlOwogICAgICAgICBkb0tleVN0cm9rZUV2ZW50KEdES19LRVlfUkVMRUFTRSwgcGFn
ZS52aWV3V2lkZ2V0KCksIGtleUNvZGUsIG1fY3VycmVudE1vZGlmaWVycyk7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6S2V5Ym9hcmRJ
bnRlcmFjdGlvblR5cGU6Okluc2VydEJ5S2V5OgorICAgIGNhc2UgS2V5Ym9hcmRJbnRlcmFjdGlv
bjo6SW5zZXJ0QnlLZXk6CiAgICAgICAgIGRvS2V5U3Ryb2tlRXZlbnQoR0RLX0tFWV9QUkVTUywg
cGFnZS52aWV3V2lkZ2V0KCksIGtleUNvZGUsIG1fY3VycmVudE1vZGlmaWVycywgdHJ1ZSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0F1dG9tYXRpb24vaW9zL1dlYkF1dG9tYXRpb25TZXNzaW9uSU9TLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQXV0b21hdGlvbi9pb3MvV2ViQXV0b21hdGlvblNlc3Npb25JT1MubW0KaW5k
ZXggNWY3NGFkZWRmNzVmZTU2OTJjMjhkODQ0ODU5MmYyMjM1NGI2OGQ2Yy4uMGRlMzliNjk5M2Iy
OTIzZjg5MWU5ODQ2N2U1ZGZlNWFmYjNhZjlhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQXV0b21hdGlvbi9pb3MvV2ViQXV0b21hdGlvblNlc3Npb25JT1MubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9pb3MvV2ViQXV0b21hdGlvblNlc3Np
b25JT1MubW0KQEAgLTY1LDI2ICs2NSwyOCBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpz
ZW5kU3ludGhlc2l6ZWRFdmVudHNUb1BhZ2UoV2ViUGFnZVByb3h5JiBwYWdlLCBOU0FycgogCiAj
cHJhZ21hIG1hcmsgQ29tbWFuZHMgZm9yIFBsYXRmb3JtOiAnaU9TJwogCi12b2lkIFdlYkF1dG9t
YXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlS2V5U3Ryb2tlKFdlYlBhZ2VQcm94eSYgcGFn
ZSwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6S2V5Ym9hcmRJbnRlcmFjdGlvblR5
cGUgaW50ZXJhY3Rpb24sIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxL
ZXkga2V5KQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZUtleWJv
YXJkSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBLZXlib2FyZEludGVyYWN0aW9uIGlu
dGVyYWN0aW9uLCBzdGQ6Om9wdGlvbmFsPFZpcnR1YWxLZXk+IHZpcnR1YWxLZXksIHN0ZDo6b3B0
aW9uYWw8Q2hhcktleT4gY2hhcktleSkKIHsKKyAgICBBU1NFUlQodmlydHVhbEtleS5oYXNfdmFs
dWUoKSB8fCBjaGFyS2V5Lmhhc192YWx1ZSgpKTsKKwogICAgIC8vIFRoZSBtb2RpZmllcnMgY2hh
bmdlZCBieSB0aGUgdmlydHVhbCBrZXkgd2hlbiBpdCBpcyBwcmVzc2VkIG9yIHJlbGVhc2VkLgog
ICAgIFdlYkV2ZW50RmxhZ3MgY2hhbmdlZE1vZGlmaWVycyA9IDA7CiAKICAgICAvLyBGaWd1cmUg
b3V0IHRoZSBlZmZlY3RzIG9mIHN0aWNreSBtb2RpZmllcnMuCiAgICAgc3dpdGNoIChrZXkpIHsK
LSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OlNo
aWZ0OgorICAgIGNhc2UgVmlydHVhbEtleTo6U2hpZnQ6CiAgICAgICAgIGNoYW5nZWRNb2RpZmll
cnMgfD0gV2ViRXZlbnRGbGFnTWFza1NoaWZ0OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkNvbnRyb2w6CisgICAg
Y2FzZSBWaXJ0dWFsS2V5OjpDb250cm9sOgogICAgICAgICBjaGFuZ2VkTW9kaWZpZXJzIHw9IFdl
YkV2ZW50RmxhZ01hc2tDb250cm9sOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkFsdGVybmF0ZToKKyAgICBjYXNl
IFZpcnR1YWxLZXk6OkFsdGVybmF0ZToKICAgICAgICAgY2hhbmdlZE1vZGlmaWVycyB8PSBXZWJF
dmVudEZsYWdNYXNrQWx0ZXJuYXRlOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok1ldGE6CisgICAgY2FzZSBWaXJ0
dWFsS2V5OjpNZXRhOgogICAgICAgICAvLyBUaGUgJ21ldGEnIGtleSBkb2VzIG5vdCBleGlzdCBv
biBBcHBsZSBrZXlib2FyZHMgYW5kIGlzIHVzdWFsbHkKICAgICAgICAgLy8gbWFwcGVkIHRvIHRo
ZSBDb21tYW5kIGtleSB3aGVuIHVzaW5nIHRoaXJkLXBhcnR5IGtleWJvYXJkcy4KLSAgICBjYXNl
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkNvbW1hbmQ6Cisg
ICAgY2FzZSBWaXJ0dWFsS2V5OjpDb21tYW5kOgogICAgICAgICBjaGFuZ2VkTW9kaWZpZXJzIHw9
IFdlYkV2ZW50RmxhZ01hc2tDb21tYW5kOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgpA
QCAtOTQsOCArOTYsMTggQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11
bGF0ZUtleVN0cm9rZShXZWJQYWdlUHJveHkmIHBhZ2UsIEluc3BlY3QKICAgICAvLyBVSUtpdCBk
b2VzIG5vdCBzZW5kIGtleSBjb2RlcyBmb3IgdmlydHVhbCBrZXlzIGV2ZW4gZm9yIGEgaGFyZHdh
cmUga2V5Ym9hcmQuCiAgICAgLy8gSW5zdGVhZCwgaXQgc2VuZHMgc2luZ2xlIHVuaWNoYXJzIGFu
ZCBXZWJDb3JlIG1hcHMgdGhlc2UgdG8gIndpbmRvd3MiIGtleSBjb2Rlcy4KICAgICAvLyBTeW50
aGVzaXplIGEgc2luZ2xlIHVuaWNoYXIgc3VjaCB0aGF0IHRoZSBjb3JyZWN0IGtleSBjb2RlIGlz
IGluZmVycmVkLgotICAgIHN0ZDo6b3B0aW9uYWw8dW5pY2hhcj4gY2hhckNvZGUgPSBjaGFyQ29k
ZUZvclZpcnR1YWxLZXkoa2V5KTsKLSAgICBzdGQ6Om9wdGlvbmFsPHVuaWNoYXI+IGNoYXJDb2Rl
SWdub3JpbmdNb2RpZmllcnMgPSBjaGFyQ29kZUlnbm9yaW5nTW9kaWZpZXJzRm9yVmlydHVhbEtl
eShrZXkpOworICAgIHN0ZDo6b3B0aW9uYWw8dW5pY2hhcj4gY2hhckNvZGU7CisgICAgc3RkOjpv
cHRpb25hbDx1bmljaGFyPiBjaGFyQ29kZUlnbm9yaW5nTW9kaWZpZXJzOworCisgICAgaWYgKHZp
cnR1YWxLZXkuaGFzX3ZhbHVlKCkpIHsKKyAgICAgICAgY2hhckNvZGUgPSBjaGFyQ29kZUZvclZp
cnR1YWxLZXkodmlydHVhbEtleS52YWx1ZSgpKTsKKyAgICAgICAgY2hhckNvZGVJZ25vcmluZ01v
ZGlmaWVycyA9IGNoYXJDb2RlSWdub3JpbmdNb2RpZmllcnNGb3JWaXJ0dWFsS2V5KHZpcnR1YWxL
ZXkudmFsdWUoKSk7CisgICAgfQorCisgICAgaWYgKGNoYXJLZXkuaGFzX3ZhbHVlKCkpIHsKKyAg
ICAgICAgY2hhckNvZGUgPSAodW5pY2hhciljaGFyS2V5LnZhbHVlKCk7CisgICAgICAgIGNoYXJD
b2RlSWdub3JpbmdNb2RpZmllcnMgPSAodW5pY2hhciljaGFyS2V5LnZhbHVlKCk7CisgICAgfQog
CiAgICAgLy8gRklYTUU6IGNvbnNpZGVyIHVzaW5nIFVJS2l0IFNQSSB0byBub3JtYWxpemUgJ2No
YXJhY3RlcnMnLCBpLmUuLCBjaGFuZ2luZyAqIHRvIFNoaWZ0LTgsCiAgICAgLy8gYW5kIHBhc3Np
bmcgdGhhdCBpbiB0byBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMuIFRoaXMgaXMgcHJvYmFi
bHkgbm90IHdvcnRoIHRoZSB0cm91YmxlCkBAIC0xMTUsMTkgKzEyNywxOSBAQCB2b2lkIFdlYkF1
dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlS2V5U3Ryb2tlKFdlYlBhZ2VQcm94eSYg
cGFnZSwgSW5zcGVjdAogICAgIGF1dG8gZXZlbnRzVG9CZVNlbnQgPSBhZG9wdE5TKFtbTlNNdXRh
YmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKIAogICAgIHN3aXRjaCAoaW50ZXJhY3Rpb24pIHsKLSAg
ICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OktleWJvYXJkSW50ZXJhY3Rp
b25UeXBlOjpLZXlQcmVzczogeworICAgIGNhc2UgS2V5Ym9hcmRJbnRlcmFjdGlvbjo6S2V5UHJl
c3M6IHsKICAgICAgICAgbV9jdXJyZW50TW9kaWZpZXJzIHw9IGNoYW5nZWRNb2RpZmllcnM7CiAK
ICAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbW1s6OldlYkV2ZW50IGFsbG9jXSBp
bml0V2l0aEtleUV2ZW50VHlwZTpXZWJFdmVudEtleURvd24gdGltZVN0YW1wOkNGQWJzb2x1dGVU
aW1lR2V0Q3VycmVudCgpIGNoYXJhY3RlcnM6Y2hhcmFjdGVycyBjaGFyYWN0ZXJzSWdub3JpbmdN
b2RpZmllcnM6dW5tb2RpZmllZENoYXJhY3RlcnMgbW9kaWZpZXJzOm1fY3VycmVudE1vZGlmaWVy
cyBpc1JlcGVhdGluZzpOTyB3aXRoRmxhZ3M6aW5wdXRGbGFncyB3aXRoSW5wdXRNYW5hZ2VySGlu
dDpuaWwga2V5Q29kZTprZXlDb2RlIGlzVGFiS2V5OmlzVGFiS2V5XSBhdXRvcmVsZWFzZV1dOwog
ICAgICAgICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRv
bWF0aW9uOjpLZXlib2FyZEludGVyYWN0aW9uVHlwZTo6S2V5UmVsZWFzZTogeworICAgIGNhc2Ug
S2V5Ym9hcmRJbnRlcmFjdGlvbjo6S2V5UmVsZWFzZTogewogICAgICAgICBtX2N1cnJlbnRNb2Rp
ZmllcnMgJj0gfmNoYW5nZWRNb2RpZmllcnM7CiAKICAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFk
ZE9iamVjdDpbW1s6OldlYkV2ZW50IGFsbG9jXSBpbml0V2l0aEtleUV2ZW50VHlwZTpXZWJFdmVu
dEtleVVwIHRpbWVTdGFtcDpDRkFic29sdXRlVGltZUdldEN1cnJlbnQoKSBjaGFyYWN0ZXJzOmNo
YXJhY3RlcnMgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOnVubW9kaWZpZWRDaGFyYWN0ZXJz
IG1vZGlmaWVyczptX2N1cnJlbnRNb2RpZmllcnMgaXNSZXBlYXRpbmc6Tk8gd2l0aEZsYWdzOmlu
cHV0RmxhZ3Mgd2l0aElucHV0TWFuYWdlckhpbnQ6bmlsIGtleUNvZGU6a2V5Q29kZSBpc1RhYktl
eTppc1RhYktleV0gYXV0b3JlbGVhc2VdXTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNh
c2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6S2V5Ym9hcmRJbnRlcmFjdGlvblR5
cGU6Okluc2VydEJ5S2V5OiB7CisgICAgY2FzZSBLZXlib2FyZEludGVyYWN0aW9uOjpJbnNlcnRC
eUtleTogewogICAgICAgICAvLyBNb2RpZmllcnMgb25seSBjaGFuZ2Ugd2l0aCBLZXlQcmVzcyBv
ciBLZXlSZWxlYXNlLCB0aGlzIGNvZGUgcGF0aCBpcyBmb3Igc2luZ2xlIGNoYXJhY3RlcnMuCiAg
ICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmplY3Q6W1tbOjpXZWJFdmVudCBhbGxvY10gaW5p
dFdpdGhLZXlFdmVudFR5cGU6V2ViRXZlbnRLZXlEb3duIHRpbWVTdGFtcDpDRkFic29sdXRlVGlt
ZUdldEN1cnJlbnQoKSBjaGFyYWN0ZXJzOmNoYXJhY3RlcnMgY2hhcmFjdGVyc0lnbm9yaW5nTW9k
aWZpZXJzOnVubW9kaWZpZWRDaGFyYWN0ZXJzIG1vZGlmaWVyczptX2N1cnJlbnRNb2RpZmllcnMg
aXNSZXBlYXRpbmc6Tk8gd2l0aEZsYWdzOmlucHV0RmxhZ3Mgd2l0aElucHV0TWFuYWdlckhpbnQ6
bmlsIGtleUNvZGU6a2V5Q29kZSBpc1RhYktleTppc1RhYktleV0gYXV0b3JlbGVhc2VdXTsKICAg
ICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbW1s6OldlYkV2ZW50IGFsbG9jXSBpbml0
V2l0aEtleUV2ZW50VHlwZTpXZWJFdmVudEtleVVwIHRpbWVTdGFtcDpDRkFic29sdXRlVGltZUdl
dEN1cnJlbnQoKSBjaGFyYWN0ZXJzOmNoYXJhY3RlcnMgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZp
ZXJzOnVubW9kaWZpZWRDaGFyYWN0ZXJzIG1vZGlmaWVyczptX2N1cnJlbnRNb2RpZmllcnMgaXNS
ZXBlYXRpbmc6Tk8gd2l0aEZsYWdzOmlucHV0RmxhZ3Mgd2l0aElucHV0TWFuYWdlckhpbnQ6bmls
IGtleUNvZGU6a2V5Q29kZSBpc1RhYktleTppc1RhYktleV0gYXV0b3JlbGVhc2VdXTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vbWFjL1dlYkF1dG9tYXRp
b25TZXNzaW9uTWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9tYWMv
V2ViQXV0b21hdGlvblNlc3Npb25NYWMubW0KaW5kZXggM2I1ZTU1OGM2NGMzZGE3NjdhOTg5ZWQ2
NDIwYTc3NWYyYzFhNjEzMi4uZjQ2MGEzODY1M2RjNjRlZTY2MTc5MDczMGMxOGNiZmI0ZTBmMmI2
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9tYWMvV2Vi
QXV0b21hdGlvblNlc3Npb25NYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0
b21hdGlvbi9tYWMvV2ViQXV0b21hdGlvblNlc3Npb25NYWMubW0KQEAgLTExOCwxMSArMTE4LDEx
IEBAIGJvb2wgV2ViQXV0b21hdGlvblNlc3Npb246Ondhc0V2ZW50U3ludGhlc2l6ZWRGb3JBdXRv
bWF0aW9uKE5TRXZlbnQgKmV2ZW50KQogCiAjcHJhZ21hIG1hcmsgUGxhdGZvcm0tZGVwZW5kZW50
IEltcGxlbWVudGF0aW9ucwogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNp
bXVsYXRlTW91c2VJbnRlcmFjdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiB2aWV3UG9zaXRpb24sIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246
Ok1vdXNlSW50ZXJhY3Rpb24gaW50ZXJhY3Rpb24sIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9t
YXRpb246Ok1vdXNlQnV0dG9uIGJ1dHRvbiwgV2ViRXZlbnQ6Ok1vZGlmaWVycyBrZXlNb2RpZmll
cnMpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlTW91c2VJbnRl
cmFjdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIE1vdXNlSW50ZXJhY3Rpb24gaW50ZXJhY3Rpb24s
IFdlYk1vdXNlRXZlbnQ6OkJ1dHRvbiBidXR0b24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBs
b2NhdGlvbkluVmlldywgV2ViRXZlbnQ6Ok1vZGlmaWVycyBrZXlNb2RpZmllcnMpCiB7CiAgICAg
SW50UmVjdCB3aW5kb3dSZWN0OwotICAgIHBhZ2Uucm9vdFZpZXdUb1dpbmRvdyhJbnRSZWN0KHZp
ZXdQb3NpdGlvbiwgSW50U2l6ZSgpKSwgd2luZG93UmVjdCk7Ci0gICAgSW50UG9pbnQgd2luZG93
UG9zaXRpb24gPSB3aW5kb3dSZWN0LmxvY2F0aW9uKCk7CisgICAgcGFnZS5yb290Vmlld1RvV2lu
ZG93KEludFJlY3QobG9jYXRpb25JblZpZXcsIEludFNpemUoKSksIHdpbmRvd1JlY3QpOworICAg
IEludFBvaW50IGxvY2F0aW9uSW5XaW5kb3cgPSB3aW5kb3dSZWN0LmxvY2F0aW9uKCk7CiAKICAg
ICBOU0V2ZW50TW9kaWZpZXJGbGFncyBtb2RpZmllcnMgPSAwOwogICAgIGlmIChrZXlNb2RpZmll
cnMgJiBXZWJFdmVudDo6TWV0YUtleSkKQEAgLTE0NCwyMCArMTQ0LDIwIEBAIHZvaWQgV2ViQXV0
b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVNb3VzZUludGVyYWN0aW9uKFdlYlBhZ2VQ
cm94eSYgcGFnZSwKICAgICBOU0V2ZW50VHlwZSBkcmFnRXZlbnRUeXBlID0gKE5TRXZlbnRUeXBl
KTA7CiAgICAgTlNFdmVudFR5cGUgdXBFdmVudFR5cGUgPSAoTlNFdmVudFR5cGUpMDsKICAgICBz
d2l0Y2ggKGJ1dHRvbikgewotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlv
bjo6TW91c2VCdXR0b246Ok5vbmU6CisgICAgY2FzZSBXZWJNb3VzZUV2ZW50OjpOb0J1dHRvbjoK
ICAgICAgICAgZG93bkV2ZW50VHlwZSA9IHVwRXZlbnRUeXBlID0gZHJhZ0V2ZW50VHlwZSA9IE5T
RXZlbnRUeXBlTW91c2VNb3ZlZDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1dHRvbjo6TGVmdDoKKyAgICBjYXNlIFdlYk1v
dXNlRXZlbnQ6OkxlZnRCdXR0b246CiAgICAgICAgIGRvd25FdmVudFR5cGUgPSBOU0V2ZW50VHlw
ZUxlZnRNb3VzZURvd247CiAgICAgICAgIGRyYWdFdmVudFR5cGUgPSBOU0V2ZW50VHlwZUxlZnRN
b3VzZURyYWdnZWQ7CiAgICAgICAgIHVwRXZlbnRUeXBlID0gTlNFdmVudFR5cGVMZWZ0TW91c2VV
cDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uOjpNb3VzZUJ1dHRvbjo6TWlkZGxlOgorICAgIGNhc2UgV2ViTW91c2VFdmVudDo6TWlkZGxl
QnV0dG9uOgogICAgICAgICBkb3duRXZlbnRUeXBlID0gTlNFdmVudFR5cGVPdGhlck1vdXNlRG93
bjsKICAgICAgICAgZHJhZ0V2ZW50VHlwZSA9IE5TRXZlbnRUeXBlTGVmdE1vdXNlRHJhZ2dlZDsK
ICAgICAgICAgdXBFdmVudFR5cGUgPSBOU0V2ZW50VHlwZU90aGVyTW91c2VVcDsKICAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1
dHRvbjo6UmlnaHQ6CisgICAgY2FzZSBXZWJNb3VzZUV2ZW50OjpSaWdodEJ1dHRvbjoKICAgICAg
ICAgZG93bkV2ZW50VHlwZSA9IE5TRXZlbnRUeXBlUmlnaHRNb3VzZURvd247CiAgICAgICAgIHVw
RXZlbnRUeXBlID0gTlNFdmVudFR5cGVSaWdodE1vdXNlVXA7CiAgICAgICAgIGJyZWFrOwpAQCAt
MTY4LDU2ICsxNjgsNTYgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11
bGF0ZU1vdXNlSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdlLAogICAgIE5TSW50ZWdlciBl
dmVudE51bWJlciA9IHN5bnRoZXNpemVkTW91c2VFdmVudE1hZ2ljRXZlbnROdW1iZXI7CiAKICAg
ICBzd2l0Y2ggKGludGVyYWN0aW9uKSB7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpB
dXRvbWF0aW9uOjpNb3VzZUludGVyYWN0aW9uOjpNb3ZlOgorICAgIGNhc2UgTW91c2VJbnRlcmFj
dGlvbjo6TW92ZToKICAgICAgICAgQVNTRVJUKGRyYWdFdmVudFR5cGUpOwotICAgICAgICBbZXZl
bnRzVG9CZVNlbnQgYWRkT2JqZWN0OltOU0V2ZW50IG1vdXNlRXZlbnRXaXRoVHlwZTpkcmFnRXZl
bnRUeXBlIGxvY2F0aW9uOndpbmRvd1Bvc2l0aW9uIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJzIHRp
bWVzdGFtcDp0aW1lc3RhbXAgd2luZG93TnVtYmVyOndpbmRvd051bWJlciBjb250ZXh0Om5pbCBl
dmVudE51bWJlcjpldmVudE51bWJlciBjbGlja0NvdW50OjAgcHJlc3N1cmU6MC4wZl1dOworICAg
ICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltOU0V2ZW50IG1vdXNlRXZlbnRXaXRoVHlw
ZTpkcmFnRXZlbnRUeXBlIGxvY2F0aW9uOmxvY2F0aW9uSW5XaW5kb3cgbW9kaWZpZXJGbGFnczpt
b2RpZmllcnMgdGltZXN0YW1wOnRpbWVzdGFtcCB3aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNv
bnRleHQ6bmlsIGV2ZW50TnVtYmVyOmV2ZW50TnVtYmVyIGNsaWNrQ291bnQ6MCBwcmVzc3VyZTow
LjBmXV07CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbjo6TW91c2VJbnRlcmFjdGlvbjo6RG93bjoKKyAgICBjYXNlIE1vdXNlSW50ZXJhY3Rp
b246OkRvd246CiAgICAgICAgIEFTU0VSVChkb3duRXZlbnRUeXBlKTsKIAogICAgICAgICAvLyBI
YXJkLWNvZGUgdGhlIGNsaWNrIGNvdW50IHRvIG9uZSwgc2luY2UgY2xpZW50cyBkb24ndCBleHBl
Y3Qgc3VjY2Vzc2l2ZSBzaW11bGF0ZWQKICAgICAgICAgLy8gZG93bi91cCBldmVudHMgdG8gYmUg
cG90ZW50aWFsbHkgY291bnRlZCBhcyBhIGRvdWJsZSBjbGljayBldmVudC4KLSAgICAgICAgW2V2
ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6ZG93bkV2
ZW50VHlwZSBsb2NhdGlvbjp3aW5kb3dQb3NpdGlvbiBtb2RpZmllckZsYWdzOm1vZGlmaWVycyB0
aW1lc3RhbXA6dGltZXN0YW1wIHdpbmRvd051bWJlcjp3aW5kb3dOdW1iZXIgY29udGV4dDpuaWwg
ZXZlbnROdW1iZXI6ZXZlbnROdW1iZXIgY2xpY2tDb3VudDoxIHByZXNzdXJlOldlYkNvcmU6OkZv
cmNlQXRDbGlja11dOworICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltOU0V2ZW50
IG1vdXNlRXZlbnRXaXRoVHlwZTpkb3duRXZlbnRUeXBlIGxvY2F0aW9uOmxvY2F0aW9uSW5XaW5k
b3cgbW9kaWZpZXJGbGFnczptb2RpZmllcnMgdGltZXN0YW1wOnRpbWVzdGFtcCB3aW5kb3dOdW1i
ZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmlsIGV2ZW50TnVtYmVyOmV2ZW50TnVtYmVyIGNsaWNr
Q291bnQ6MSBwcmVzc3VyZTpXZWJDb3JlOjpGb3JjZUF0Q2xpY2tdXTsKICAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUludGVyYWN0
aW9uOjpVcDoKKyAgICBjYXNlIE1vdXNlSW50ZXJhY3Rpb246OlVwOgogICAgICAgICBBU1NFUlQo
dXBFdmVudFR5cGUpOwogCiAgICAgICAgIC8vIEhhcmQtY29kZSB0aGUgY2xpY2sgY291bnQgdG8g
b25lLCBzaW5jZSBjbGllbnRzIGRvbid0IGV4cGVjdCBzdWNjZXNzaXZlIHNpbXVsYXRlZAogICAg
ICAgICAvLyBkb3duL3VwIGV2ZW50cyB0byBiZSBwb3RlbnRpYWxseSBjb3VudGVkIGFzIGEgZG91
YmxlIGNsaWNrIGV2ZW50LgotICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltOU0V2
ZW50IG1vdXNlRXZlbnRXaXRoVHlwZTp1cEV2ZW50VHlwZSBsb2NhdGlvbjp3aW5kb3dQb3NpdGlv
biBtb2RpZmllckZsYWdzOm1vZGlmaWVycyB0aW1lc3RhbXA6dGltZXN0YW1wIHdpbmRvd051bWJl
cjp3aW5kb3dOdW1iZXIgY29udGV4dDpuaWwgZXZlbnROdW1iZXI6ZXZlbnROdW1iZXIgY2xpY2tD
b3VudDoxIHByZXNzdXJlOjAuMGZdXTsKKyAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVj
dDpbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6dXBFdmVudFR5cGUgbG9jYXRpb246bG9jYXRp
b25JbldpbmRvdyBtb2RpZmllckZsYWdzOm1vZGlmaWVycyB0aW1lc3RhbXA6dGltZXN0YW1wIHdp
bmRvd051bWJlcjp3aW5kb3dOdW1iZXIgY29udGV4dDpuaWwgZXZlbnROdW1iZXI6ZXZlbnROdW1i
ZXIgY2xpY2tDb3VudDoxIHByZXNzdXJlOjAuMGZdXTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUludGVyYWN0aW9uOjpTaW5n
bGVDbGljazoKKyAgICBjYXNlIE1vdXNlSW50ZXJhY3Rpb246OlNpbmdsZUNsaWNrOgogICAgICAg
ICBBU1NFUlQodXBFdmVudFR5cGUpOwogICAgICAgICBBU1NFUlQoZG93bkV2ZW50VHlwZSk7CiAK
ICAgICAgICAgLy8gU2VuZCBzZXBhcmF0ZSBkb3duIGFuZCB1cCBldmVudHMuIFdlYkNvcmUgd2ls
bCBzZWUgdGhpcyBhcyBhIHNpbmdsZS1jbGljayBldmVudC4KLSAgICAgICAgW2V2ZW50c1RvQmVT
ZW50IGFkZE9iamVjdDpbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6ZG93bkV2ZW50VHlwZSBs
b2NhdGlvbjp3aW5kb3dQb3NpdGlvbiBtb2RpZmllckZsYWdzOm1vZGlmaWVycyB0aW1lc3RhbXA6
dGltZXN0YW1wIHdpbmRvd051bWJlcjp3aW5kb3dOdW1iZXIgY29udGV4dDpuaWwgZXZlbnROdW1i
ZXI6ZXZlbnROdW1iZXIgY2xpY2tDb3VudDoxIHByZXNzdXJlOldlYkNvcmU6OkZvcmNlQXRDbGlj
a11dOwotICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltOU0V2ZW50IG1vdXNlRXZl
bnRXaXRoVHlwZTp1cEV2ZW50VHlwZSBsb2NhdGlvbjp3aW5kb3dQb3NpdGlvbiBtb2RpZmllckZs
YWdzOm1vZGlmaWVycyB0aW1lc3RhbXA6dGltZXN0YW1wIHdpbmRvd051bWJlcjp3aW5kb3dOdW1i
ZXIgY29udGV4dDpuaWwgZXZlbnROdW1iZXI6ZXZlbnROdW1iZXIgY2xpY2tDb3VudDoxIHByZXNz
dXJlOjAuMGZdXTsKKyAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbTlNFdmVudCBt
b3VzZUV2ZW50V2l0aFR5cGU6ZG93bkV2ZW50VHlwZSBsb2NhdGlvbjpsb2NhdGlvbkluV2luZG93
IG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJzIHRpbWVzdGFtcDp0aW1lc3RhbXAgd2luZG93TnVtYmVy
OndpbmRvd051bWJlciBjb250ZXh0Om5pbCBldmVudE51bWJlcjpldmVudE51bWJlciBjbGlja0Nv
dW50OjEgcHJlc3N1cmU6V2ViQ29yZTo6Rm9yY2VBdENsaWNrXV07CisgICAgICAgIFtldmVudHNU
b0JlU2VudCBhZGRPYmplY3Q6W05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOnVwRXZlbnRUeXBl
IGxvY2F0aW9uOmxvY2F0aW9uSW5XaW5kb3cgbW9kaWZpZXJGbGFnczptb2RpZmllcnMgdGltZXN0
YW1wOnRpbWVzdGFtcCB3aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmlsIGV2ZW50
TnVtYmVyOmV2ZW50TnVtYmVyIGNsaWNrQ291bnQ6MSBwcmVzc3VyZTowLjBmXV07CiAgICAgICAg
IGJyZWFrOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VJ
bnRlcmFjdGlvbjo6RG91YmxlQ2xpY2s6CisgICAgY2FzZSBNb3VzZUludGVyYWN0aW9uOjpEb3Vi
bGVDbGljazoKICAgICAgICAgQVNTRVJUKHVwRXZlbnRUeXBlKTsKICAgICAgICAgQVNTRVJUKGRv
d25FdmVudFR5cGUpOwogCiAgICAgICAgIC8vIFNlbmQgbXVsdGlwbGUgZG93biBhbmQgdXAgZXZl
bnRzIHdpdGggcHJvcGVyIGNsaWNrIGNvdW50LgogICAgICAgICAvLyBXZWJDb3JlIHdpbGwgc2Vl
IHRoaXMgYXMgYSBzaW5nbGUtY2xpY2sgZXZlbnQgdGhlbiBkb3VibGUtY2xpY2sgZXZlbnQuCi0g
ICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmplY3Q6W05TRXZlbnQgbW91c2VFdmVudFdpdGhU
eXBlOmRvd25FdmVudFR5cGUgbG9jYXRpb246d2luZG93UG9zaXRpb24gbW9kaWZpZXJGbGFnczpt
b2RpZmllcnMgdGltZXN0YW1wOnRpbWVzdGFtcCB3aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNv
bnRleHQ6bmlsIGV2ZW50TnVtYmVyOmV2ZW50TnVtYmVyIGNsaWNrQ291bnQ6MSBwcmVzc3VyZTpX
ZWJDb3JlOjpGb3JjZUF0Q2xpY2tdXTsKLSAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVj
dDpbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6dXBFdmVudFR5cGUgbG9jYXRpb246d2luZG93
UG9zaXRpb24gbW9kaWZpZXJGbGFnczptb2RpZmllcnMgdGltZXN0YW1wOnRpbWVzdGFtcCB3aW5k
b3dOdW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmlsIGV2ZW50TnVtYmVyOmV2ZW50TnVtYmVy
IGNsaWNrQ291bnQ6MSBwcmVzc3VyZTowLjBmXV07Ci0gICAgICAgIFtldmVudHNUb0JlU2VudCBh
ZGRPYmplY3Q6W05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOmRvd25FdmVudFR5cGUgbG9jYXRp
b246d2luZG93UG9zaXRpb24gbW9kaWZpZXJGbGFnczptb2RpZmllcnMgdGltZXN0YW1wOnRpbWVz
dGFtcCB3aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmlsIGV2ZW50TnVtYmVyOmV2
ZW50TnVtYmVyIGNsaWNrQ291bnQ6MiBwcmVzc3VyZTpXZWJDb3JlOjpGb3JjZUF0Q2xpY2tdXTsK
LSAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbTlNFdmVudCBtb3VzZUV2ZW50V2l0
aFR5cGU6dXBFdmVudFR5cGUgbG9jYXRpb246d2luZG93UG9zaXRpb24gbW9kaWZpZXJGbGFnczpt
b2RpZmllcnMgdGltZXN0YW1wOnRpbWVzdGFtcCB3aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNv
bnRleHQ6bmlsIGV2ZW50TnVtYmVyOmV2ZW50TnVtYmVyIGNsaWNrQ291bnQ6MiBwcmVzc3VyZTow
LjBmXV07CisgICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmplY3Q6W05TRXZlbnQgbW91c2VF
dmVudFdpdGhUeXBlOmRvd25FdmVudFR5cGUgbG9jYXRpb246bG9jYXRpb25JbldpbmRvdyBtb2Rp
ZmllckZsYWdzOm1vZGlmaWVycyB0aW1lc3RhbXA6dGltZXN0YW1wIHdpbmRvd051bWJlcjp3aW5k
b3dOdW1iZXIgY29udGV4dDpuaWwgZXZlbnROdW1iZXI6ZXZlbnROdW1iZXIgY2xpY2tDb3VudDox
IHByZXNzdXJlOldlYkNvcmU6OkZvcmNlQXRDbGlja11dOworICAgICAgICBbZXZlbnRzVG9CZVNl
bnQgYWRkT2JqZWN0OltOU0V2ZW50IG1vdXNlRXZlbnRXaXRoVHlwZTp1cEV2ZW50VHlwZSBsb2Nh
dGlvbjpsb2NhdGlvbkluV2luZG93IG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJzIHRpbWVzdGFtcDp0
aW1lc3RhbXAgd2luZG93TnVtYmVyOndpbmRvd051bWJlciBjb250ZXh0Om5pbCBldmVudE51bWJl
cjpldmVudE51bWJlciBjbGlja0NvdW50OjEgcHJlc3N1cmU6MC4wZl1dOworICAgICAgICBbZXZl
bnRzVG9CZVNlbnQgYWRkT2JqZWN0OltOU0V2ZW50IG1vdXNlRXZlbnRXaXRoVHlwZTpkb3duRXZl
bnRUeXBlIGxvY2F0aW9uOmxvY2F0aW9uSW5XaW5kb3cgbW9kaWZpZXJGbGFnczptb2RpZmllcnMg
dGltZXN0YW1wOnRpbWVzdGFtcCB3aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmls
IGV2ZW50TnVtYmVyOmV2ZW50TnVtYmVyIGNsaWNrQ291bnQ6MiBwcmVzc3VyZTpXZWJDb3JlOjpG
b3JjZUF0Q2xpY2tdXTsKKyAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbTlNFdmVu
dCBtb3VzZUV2ZW50V2l0aFR5cGU6dXBFdmVudFR5cGUgbG9jYXRpb246bG9jYXRpb25JbldpbmRv
dyBtb2RpZmllckZsYWdzOm1vZGlmaWVycyB0aW1lc3RhbXA6dGltZXN0YW1wIHdpbmRvd051bWJl
cjp3aW5kb3dOdW1iZXIgY29udGV4dDpuaWwgZXZlbnROdW1iZXI6ZXZlbnROdW1iZXIgY2xpY2tD
b3VudDoyIHByZXNzdXJlOjAuMGZdXTsKICAgICB9CiAKICAgICBzZW5kU3ludGhlc2l6ZWRFdmVu
dHNUb1BhZ2UocGFnZSwgZXZlbnRzVG9CZVNlbnQuZ2V0KCkpOwogfQogCi1zdGF0aWMgYm9vbCBr
ZXlIYXNTdGlja3lNb2RpZmllcihJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0
dWFsS2V5IGtleSkKK3N0YXRpYyBib29sIHZpcnR1YWxLZXlIYXNTdGlja3lNb2RpZmllcihWaXJ0
dWFsS2V5IGtleSkKIHsKICAgICAvLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGtleSdzIG1vZGlmaWVy
IGZsYWdzIHNob3VsZCBhZmZlY3Qgb3RoZXIgZXZlbnRzIHdoaWxlIHByZXNzZWQgZG93bi4KICAg
ICBzd2l0Y2ggKGtleSkgewotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlv
bjo6VmlydHVhbEtleTo6U2hpZnQ6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRv
bWF0aW9uOjpWaXJ0dWFsS2V5OjpDb250cm9sOgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6QWx0ZXJuYXRlOgotICAgIGNhc2UgSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TWV0YToKLSAgICBjYXNlIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkNvbW1hbmQ6CisgICAgY2Fz
ZSBWaXJ0dWFsS2V5OjpTaGlmdDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkNvbnRyb2w6CisgICAg
Y2FzZSBWaXJ0dWFsS2V5OjpBbHRlcm5hdGU6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpNZXRhOgor
ICAgIGNhc2UgVmlydHVhbEtleTo6Q29tbWFuZDoKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAg
ICBkZWZhdWx0OgpAQCAtMjI1LDIwMSArMjI1LDIwMSBAQCBzdGF0aWMgYm9vbCBrZXlIYXNTdGlj
a3lNb2RpZmllcihJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5IGtl
eQogICAgIH0KIH0KIAotc3RhdGljIGludCBrZXlDb2RlRm9yVmlydHVhbEtleShJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5IGtleSkKK3N0YXRpYyBpbnQga2V5Q29k
ZUZvclZpcnR1YWxLZXkoVmlydHVhbEtleSBrZXkpCiB7CiAgICAgLy8gVGhlIGxpa2VseSBrZXlD
b2RlIGZvciB0aGUgdmlydHVhbCBrZXkgYXMgZGVmaW5lZCBpbiA8SElUb29sYm94L0V2ZW50cy5o
Pi4KICAgICBzd2l0Y2ggKGtleSkgewotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbjo6VmlydHVhbEtleTo6U2hpZnQ6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpTaGlmdDoK
ICAgICAgICAgcmV0dXJuIGtWS19TaGlmdDsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkNvbnRyb2w6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpD
b250cm9sOgogICAgICAgICByZXR1cm4ga1ZLX0NvbnRyb2w7Ci0gICAgY2FzZSBJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpBbHRlcm5hdGU6CisgICAgY2FzZSBW
aXJ0dWFsS2V5OjpBbHRlcm5hdGU6CiAgICAgICAgIHJldHVybiBrVktfT3B0aW9uOwotICAgIGNh
c2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TWV0YToKKyAg
ICBjYXNlIFZpcnR1YWxLZXk6Ok1ldGE6CiAgICAgICAgIC8vIFRoZSAnbWV0YScga2V5IGRvZXMg
bm90IGV4aXN0IG9uIEFwcGxlIGtleWJvYXJkcyBhbmQgaXMgdXN1YWxseQogICAgICAgICAvLyBt
YXBwZWQgdG8gdGhlIENvbW1hbmQga2V5IHdoZW4gdXNpbmcgdGhpcmQtcGFydHkga2V5Ym9hcmRz
LgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6
Q29tbWFuZDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkNvbW1hbmQ6CiAgICAgICAgIHJldHVybiBr
VktfQ29tbWFuZDsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZp
cnR1YWxLZXk6OkhlbHA6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpIZWxwOgogICAgICAgICByZXR1
cm4ga1ZLX0hlbHA7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpW
aXJ0dWFsS2V5OjpCYWNrc3BhY2U6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpCYWNrc3BhY2U6CiAg
ICAgICAgIHJldHVybiBrVktfRGVsZXRlOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbjo6VmlydHVhbEtleTo6VGFiOgorICAgIGNhc2UgVmlydHVhbEtleTo6VGFiOgog
ICAgICAgICByZXR1cm4ga1ZLX1RhYjsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1
dG9tYXRpb246OlZpcnR1YWxLZXk6OkNsZWFyOgorICAgIGNhc2UgVmlydHVhbEtleTo6Q2xlYXI6
CiAgICAgICAgIHJldHVybiBrVktfQU5TSV9LZXlwYWRDbGVhcjsKLSAgICBjYXNlIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkVudGVyOgorICAgIGNhc2UgVmly
dHVhbEtleTo6RW50ZXI6CiAgICAgICAgIHJldHVybiBrVktfQU5TSV9LZXlwYWRFbnRlcjsKLSAg
ICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OlBhdXNl
OgorICAgIGNhc2UgVmlydHVhbEtleTo6UGF1c2U6CiAgICAgICAgIC8vIFRoZSAncGF1c2UnIGtl
eSBkb2VzIG5vdCBleGlzdCBvbiBBcHBsZSBrZXlib2FyZHMgYW5kIGhhcyBubyBrZXlDb2RlLgog
ICAgICAgICAvLyBUaGUgc2VtYW50aWNzIGFyZSB1bmNsZWFyIHNvIGp1c3QgYWJvcnQgYW5kIGRv
IG5vdGhpbmcuCiAgICAgICAgIHJldHVybiAwOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6Q2FuY2VsOgorICAgIGNhc2UgVmlydHVhbEtleTo6
Q2FuY2VsOgogICAgICAgICAvLyBUaGUgJ2NhbmNlbCcga2V5IGRvZXMgbm90IGV4aXN0IG9uIEFw
cGxlIGtleWJvYXJkcyBhbmQgaGFzIG5vIGtleUNvZGUuCiAgICAgICAgIC8vIEFjY29yZGluZyB0
byB0aGUgaW50ZXJuZXQgaXRzIGZ1bmN0aW9uYWxpdHkgaXMgc2ltaWxhciB0byAnRXNjYXBlJy4K
LSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkVz
Y2FwZToKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkVzY2FwZToKICAgICAgICAgcmV0dXJuIGtWS19F
c2NhcGU7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFs
S2V5OjpQYWdlVXA6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpQYWdlVXA6CiAgICAgICAgIHJldHVy
biBrVktfUGFnZVVwOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6
VmlydHVhbEtleTo6UGFnZURvd246CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpQYWdlRG93bjoKICAg
ICAgICAgcmV0dXJuIGtWS19QYWdlRG93bjsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkVuZDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkVuZDoK
ICAgICAgICAgcmV0dXJuIGtWS19FbmQ7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpB
dXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpIb21lOgorICAgIGNhc2UgVmlydHVhbEtleTo6SG9tZToK
ICAgICAgICAgcmV0dXJuIGtWS19Ib21lOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TGVmdEFycm93OgorICAgIGNhc2UgVmlydHVhbEtleTo6
TGVmdEFycm93OgogICAgICAgICByZXR1cm4ga1ZLX0xlZnRBcnJvdzsKLSAgICBjYXNlIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OlVwQXJyb3c6CisgICAgY2Fz
ZSBWaXJ0dWFsS2V5OjpVcEFycm93OgogICAgICAgICByZXR1cm4ga1ZLX1VwQXJyb3c7Ci0gICAg
Y2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpSaWdodEFy
cm93OgorICAgIGNhc2UgVmlydHVhbEtleTo6UmlnaHRBcnJvdzoKICAgICAgICAgcmV0dXJuIGtW
S19SaWdodEFycm93OwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6
VmlydHVhbEtleTo6RG93bkFycm93OgorICAgIGNhc2UgVmlydHVhbEtleTo6RG93bkFycm93Ogog
ICAgICAgICByZXR1cm4ga1ZLX0Rvd25BcnJvdzsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Okluc2VydDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6
Okluc2VydDoKICAgICAgICAgLy8gVGhlICdpbnNlcnQnIGtleSBkb2VzIG5vdCBleGlzdCBvbiBB
cHBsZSBrZXlib2FyZHMgYW5kIGhhcyBubyBrZXlDb2RlLgogICAgICAgICAvLyBUaGUgc2VtYW50
aWNzIGFyZSB1bmNsZWFyIHNvIGp1c3QgYWJvcnQgYW5kIGRvIG5vdGhpbmcuCiAgICAgICAgIHJl
dHVybiAwOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVh
bEtleTo6RGVsZXRlOgorICAgIGNhc2UgVmlydHVhbEtleTo6RGVsZXRlOgogICAgICAgICByZXR1
cm4ga1ZLX0ZvcndhcmREZWxldGU7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRv
bWF0aW9uOjpWaXJ0dWFsS2V5OjpTcGFjZToKKyAgICBjYXNlIFZpcnR1YWxLZXk6OlNwYWNlOgog
ICAgICAgICByZXR1cm4ga1ZLX1NwYWNlOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbjo6VmlydHVhbEtleTo6U2VtaWNvbG9uOgorICAgIGNhc2UgVmlydHVhbEtleTo6
U2VtaWNvbG9uOgogICAgICAgICByZXR1cm4ga1ZLX0FOU0lfU2VtaWNvbG9uOwotICAgIGNhc2Ug
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RXF1YWxzOgorICAg
IGNhc2UgVmlydHVhbEtleTo6RXF1YWxzOgogICAgICAgICByZXR1cm4ga1ZLX0FOU0lfRXF1YWw7
Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpS
ZXR1cm46CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpSZXR1cm46CiAgICAgICAgIHJldHVybiBrVktf
UmV0dXJuOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVh
bEtleTo6TnVtYmVyUGFkMDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZDA6CiAgICAg
ICAgIHJldHVybiBrVktfQU5TSV9LZXlwYWQwOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkMToKKyAgICBjYXNlIFZpcnR1YWxL
ZXk6Ok51bWJlclBhZDE6CiAgICAgICAgIHJldHVybiBrVktfQU5TSV9LZXlwYWQxOwotICAgIGNh
c2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFk
MjoKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZDI6CiAgICAgICAgIHJldHVybiBrVktf
QU5TSV9LZXlwYWQyOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6
VmlydHVhbEtleTo6TnVtYmVyUGFkMzoKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZDM6
CiAgICAgICAgIHJldHVybiBrVktfQU5TSV9LZXlwYWQzOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkNDoKKyAgICBjYXNlIFZp
cnR1YWxLZXk6Ok51bWJlclBhZDQ6CiAgICAgICAgIHJldHVybiBrVktfQU5TSV9LZXlwYWQ0Owot
ICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVt
YmVyUGFkNToKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZDU6CiAgICAgICAgIHJldHVy
biBrVktfQU5TSV9LZXlwYWQ1OwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21h
dGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkNjoKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJl
clBhZDY6CiAgICAgICAgIHJldHVybiBrVktfQU5TSV9LZXlwYWQ2OwotICAgIGNhc2UgSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkNzoKKyAgICBj
YXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZDc6CiAgICAgICAgIHJldHVybiBrVktfQU5TSV9LZXlw
YWQ3OwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtl
eTo6TnVtYmVyUGFkODoKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZDg6CiAgICAgICAg
IHJldHVybiBrVktfQU5TSV9LZXlwYWQ4OwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkOToKKyAgICBjYXNlIFZpcnR1YWxLZXk6
Ok51bWJlclBhZDk6CiAgICAgICAgIHJldHVybiBrVktfQU5TSV9LZXlwYWQ5OwotICAgIGNhc2Ug
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkTXVs
dGlwbHk6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWRNdWx0aXBseToKICAgICAgICAg
cmV0dXJuIGtWS19BTlNJX0tleXBhZE11bHRpcGx5OwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkQWRkOgorICAgIGNhc2UgVmly
dHVhbEtleTo6TnVtYmVyUGFkQWRkOgogICAgICAgICByZXR1cm4ga1ZLX0FOU0lfS2V5cGFkUGx1
czsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6
Ok51bWJlclBhZFN1YnRyYWN0OgorICAgIGNhc2UgVmlydHVhbEtleTo6TnVtYmVyUGFkU3VidHJh
Y3Q6CiAgICAgICAgIHJldHVybiBrVktfQU5TSV9LZXlwYWRNaW51czsKLSAgICBjYXNlIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZFNlcGFyYXRv
cjoKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZFNlcGFyYXRvcjoKICAgICAgICAgLy8g
VGhlICdTZXBhcmF0b3InIGtleSBpcyBvbmx5IHByZXNlbnQgb24gYSBmZXcgaW50ZXJuYXRpb25h
bCBrZXlib2FyZHMuCiAgICAgICAgIC8vIEl0IGlzIHVzdWFsbHkgbWFwcGVkIHRvIHRoZSBzYW1l
IGNoYXJhY3RlciBhcyBEZWNpbWFsICgnLicgb3IgJywnKS4KICAgICAgICAgRkFMTFRIUk9VR0g7
Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpO
dW1iZXJQYWREZWNpbWFsOgorICAgIGNhc2UgVmlydHVhbEtleTo6TnVtYmVyUGFkRGVjaW1hbDoK
ICAgICAgICAgcmV0dXJuIGtWS19BTlNJX0tleXBhZERlY2ltYWw7CiAgICAgICAgIC8vIEZJWE1F
OiB0aGlzIG1pZ2h0IGJlIGxvY2FsZS1kZXBlbmRlbnQuIFNlZSB0aGUgYWJvdmUgY29tbWVudC4K
LSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51
bWJlclBhZERpdmlkZToKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZERpdmlkZToKICAg
ICAgICAgcmV0dXJuIGtWS19BTlNJX0tleXBhZERpdmlkZTsKLSAgICBjYXNlIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkZ1bmN0aW9uMToKKyAgICBjYXNlIFZp
cnR1YWxLZXk6OkZ1bmN0aW9uMToKICAgICAgICAgcmV0dXJuIGtWS19GMTsKLSAgICBjYXNlIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkZ1bmN0aW9uMjoKKyAg
ICBjYXNlIFZpcnR1YWxLZXk6OkZ1bmN0aW9uMjoKICAgICAgICAgcmV0dXJuIGtWS19GMjsKLSAg
ICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkZ1bmN0
aW9uMzoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkZ1bmN0aW9uMzoKICAgICAgICAgcmV0dXJuIGtW
S19GMzsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxL
ZXk6OkZ1bmN0aW9uNDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkZ1bmN0aW9uNDoKICAgICAgICAg
cmV0dXJuIGtWS19GNDsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246
OlZpcnR1YWxLZXk6OkZ1bmN0aW9uNToKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkZ1bmN0aW9uNToK
ICAgICAgICAgcmV0dXJuIGtWS19GNTsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1
dG9tYXRpb246OlZpcnR1YWxLZXk6OkZ1bmN0aW9uNjoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkZ1
bmN0aW9uNjoKICAgICAgICAgcmV0dXJuIGtWS19GNjsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkZ1bmN0aW9uNzoKKyAgICBjYXNlIFZpcnR1
YWxLZXk6OkZ1bmN0aW9uNzoKICAgICAgICAgcmV0dXJuIGtWS19GNzsKLSAgICBjYXNlIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkZ1bmN0aW9uODoKKyAgICBj
YXNlIFZpcnR1YWxLZXk6OkZ1bmN0aW9uODoKICAgICAgICAgcmV0dXJuIGtWS19GODsKLSAgICBj
YXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkZ1bmN0aW9u
OToKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkZ1bmN0aW9uOToKICAgICAgICAgcmV0dXJuIGtWS19G
OTsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6
OkZ1bmN0aW9uMTA6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpGdW5jdGlvbjEwOgogICAgICAgICBy
ZXR1cm4ga1ZLX0YxMDsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246
OlZpcnR1YWxLZXk6OkZ1bmN0aW9uMTE6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpGdW5jdGlvbjEx
OgogICAgICAgICByZXR1cm4ga1ZLX0YxMTsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkZ1bmN0aW9uMTI6CisgICAgY2FzZSBWaXJ0dWFsS2V5
OjpGdW5jdGlvbjEyOgogICAgICAgICByZXR1cm4ga1ZLX0YxMjsKICAgICB9CiB9CiAKLXN0YXRp
YyBOU0V2ZW50TW9kaWZpZXJGbGFncyBldmVudE1vZGlmaWVyRmxhZ3NGb3JWaXJ0dWFsS2V5KElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXkga2V5KQorc3RhdGljIE5T
RXZlbnRNb2RpZmllckZsYWdzIGV2ZW50TW9kaWZpZXJGbGFnc0ZvclZpcnR1YWxLZXkoVmlydHVh
bEtleSBrZXkpCiB7CiAgICAgLy8gQ29tcHV0ZXMgdGhlIG1vZGlmaWVycyBjaGFuZ2VkIGJ5IHRo
ZSB2aXJ0dWFsIGtleSB3aGVuIGl0IGlzIHByZXNzZWQgb3IgcmVsZWFzZWQuCiAgICAgLy8gVGhl
IG1hcHBpbmcgZnJvbSBrZXlzIHRvIG1vZGlmaWVycyBpcyBzcGVjaWZpZWQgaW4gdGhlIGRvY3Vt
ZW50YXRpb24gZm9yIE5TRXZlbnQuCiAgICAgc3dpdGNoIChrZXkpIHsKLSAgICBjYXNlIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OlNoaWZ0OgorICAgIGNhc2Ug
VmlydHVhbEtleTo6U2hpZnQ6CiAgICAgICAgIHJldHVybiBOU0V2ZW50TW9kaWZpZXJGbGFnU2hp
ZnQ7CiAKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxL
ZXk6OkNvbnRyb2w6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpDb250cm9sOgogICAgICAgICByZXR1
cm4gTlNFdmVudE1vZGlmaWVyRmxhZ0NvbnRyb2w7CiAKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkFsdGVybmF0ZToKKyAgICBjYXNlIFZpcnR1
YWxLZXk6OkFsdGVybmF0ZToKICAgICAgICAgcmV0dXJuIE5TRXZlbnRNb2RpZmllckZsYWdPcHRp
b247CiAKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxL
ZXk6Ok1ldGE6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpNZXRhOgogICAgICAgICAvLyBUaGUgJ21l
dGEnIGtleSBkb2VzIG5vdCBleGlzdCBvbiBBcHBsZSBrZXlib2FyZHMgYW5kIGlzIHVzdWFsbHkK
ICAgICAgICAgLy8gbWFwcGVkIHRvIHRoZSBDb21tYW5kIGtleSB3aGVuIHVzaW5nIHRoaXJkLXBh
cnR5IGtleWJvYXJkcy4KLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246
OlZpcnR1YWxLZXk6OkNvbW1hbmQ6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpDb21tYW5kOgogICAg
ICAgICByZXR1cm4gTlNFdmVudE1vZGlmaWVyRmxhZ0NvbW1hbmQ7CiAKLSAgICBjYXNlIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkhlbHA6CisgICAgY2FzZSBW
aXJ0dWFsS2V5OjpIZWxwOgogICAgICAgICByZXR1cm4gTlNFdmVudE1vZGlmaWVyRmxhZ0hlbHAg
fCBOU0V2ZW50TW9kaWZpZXJGbGFnRnVuY3Rpb247CiAKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OlBhZ2VVcDoKLSAgICBjYXNlIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OlBhZ2VEb3duOgotICAgIGNhc2Ug
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RW5kOgotICAgIGNh
c2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6SG9tZToKKyAg
ICBjYXNlIFZpcnR1YWxLZXk6OlBhZ2VVcDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OlBhZ2VEb3du
OgorICAgIGNhc2UgVmlydHVhbEtleTo6RW5kOgorICAgIGNhc2UgVmlydHVhbEtleTo6SG9tZToK
ICAgICAgICAgcmV0dXJuIE5TRXZlbnRNb2RpZmllckZsYWdGdW5jdGlvbjsKIAotICAgIGNhc2Ug
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TGVmdEFycm93Ogot
ICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6VXBB
cnJvdzoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxL
ZXk6OlJpZ2h0QXJyb3c6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
OjpWaXJ0dWFsS2V5OjpEb3duQXJyb3c6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpMZWZ0QXJyb3c6
CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpVcEFycm93OgorICAgIGNhc2UgVmlydHVhbEtleTo6Umln
aHRBcnJvdzoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkRvd25BcnJvdzoKICAgICAgICAgcmV0dXJu
IE5TRXZlbnRNb2RpZmllckZsYWdOdW1lcmljUGFkIHwgTlNFdmVudE1vZGlmaWVyRmxhZ0Z1bmN0
aW9uOwogCi0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFs
S2V5OjpEZWxldGU6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpEZWxldGU6CiAgICAgICAgIHJldHVy
biBOU0V2ZW50TW9kaWZpZXJGbGFnRnVuY3Rpb247CiAKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkNsZWFyOgotICAgIGNhc2UgSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkMDoKLSAgICBjYXNl
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZDE6
Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpO
dW1iZXJQYWQyOgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6Vmly
dHVhbEtleTo6TnVtYmVyUGFkMzoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9t
YXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZDQ6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWQ1OgotICAgIGNhc2UgSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkNjoKLSAgICBj
YXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBh
ZDc6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5
OjpOdW1iZXJQYWQ4OgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6
VmlydHVhbEtleTo6TnVtYmVyUGFkOToKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1
dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZE11bHRpcGx5OgotICAgIGNhc2UgSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkQWRkOgotICAg
IGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVy
UGFkU3VidHJhY3Q6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpW
aXJ0dWFsS2V5OjpOdW1iZXJQYWRTZXBhcmF0b3I6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWREZWNpbWFsOgotICAgIGNhc2Ug
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkRGl2
aWRlOgorICAgIGNhc2UgVmlydHVhbEtleTo6Q2xlYXI6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpO
dW1iZXJQYWQwOgorICAgIGNhc2UgVmlydHVhbEtleTo6TnVtYmVyUGFkMToKKyAgICBjYXNlIFZp
cnR1YWxLZXk6Ok51bWJlclBhZDI6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWQzOgor
ICAgIGNhc2UgVmlydHVhbEtleTo6TnVtYmVyUGFkNDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51
bWJlclBhZDU6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWQ2OgorICAgIGNhc2UgVmly
dHVhbEtleTo6TnVtYmVyUGFkNzoKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZDg6Cisg
ICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWQ5OgorICAgIGNhc2UgVmlydHVhbEtleTo6TnVt
YmVyUGFkTXVsdGlwbHk6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWRBZGQ6CisgICAg
Y2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWRTdWJ0cmFjdDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6
Ok51bWJlclBhZFNlcGFyYXRvcjoKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZERlY2lt
YWw6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWREaXZpZGU6CiAgICAgICAgIHJldHVy
biBOU0V2ZW50TW9kaWZpZXJGbGFnTnVtZXJpY1BhZDsKIAotICAgIGNhc2UgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RnVuY3Rpb24xOgotICAgIGNhc2UgSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RnVuY3Rpb24yOgotICAg
IGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RnVuY3Rp
b24zOgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtl
eTo6RnVuY3Rpb240OgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6
VmlydHVhbEtleTo6RnVuY3Rpb241OgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbjo6VmlydHVhbEtleTo6RnVuY3Rpb242OgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RnVuY3Rpb243OgotICAgIGNhc2UgSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RnVuY3Rpb244OgotICAgIGNh
c2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RnVuY3Rpb245
OgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6
RnVuY3Rpb24xMDoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZp
cnR1YWxLZXk6OkZ1bmN0aW9uMTE6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRv
bWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjEyOgorICAgIGNhc2UgVmlydHVhbEtleTo6RnVu
Y3Rpb24xOgorICAgIGNhc2UgVmlydHVhbEtleTo6RnVuY3Rpb24yOgorICAgIGNhc2UgVmlydHVh
bEtleTo6RnVuY3Rpb24zOgorICAgIGNhc2UgVmlydHVhbEtleTo6RnVuY3Rpb240OgorICAgIGNh
c2UgVmlydHVhbEtleTo6RnVuY3Rpb241OgorICAgIGNhc2UgVmlydHVhbEtleTo6RnVuY3Rpb242
OgorICAgIGNhc2UgVmlydHVhbEtleTo6RnVuY3Rpb243OgorICAgIGNhc2UgVmlydHVhbEtleTo6
RnVuY3Rpb244OgorICAgIGNhc2UgVmlydHVhbEtleTo6RnVuY3Rpb245OgorICAgIGNhc2UgVmly
dHVhbEtleTo6RnVuY3Rpb24xMDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkZ1bmN0aW9uMTE6Cisg
ICAgY2FzZSBWaXJ0dWFsS2V5OjpGdW5jdGlvbjEyOgogICAgICAgICByZXR1cm4gTlNFdmVudE1v
ZGlmaWVyRmxhZ0Z1bmN0aW9uOwogCiAgICAgZGVmYXVsdDoKQEAgLTQyNywxOSArNDI3LDM0IEBA
IHN0YXRpYyBOU0V2ZW50TW9kaWZpZXJGbGFncyBldmVudE1vZGlmaWVyRmxhZ3NGb3JWaXJ0dWFs
S2V5KEluc3BlY3Rvcjo6UHJvdG9jb2w6CiAgICAgfQogfQogCi12b2lkIFdlYkF1dG9tYXRpb25T
ZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlS2V5U3Ryb2tlKFdlYlBhZ2VQcm94eSYgcGFnZSwgSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6S2V5Ym9hcmRJbnRlcmFjdGlvblR5cGUgaW50
ZXJhY3Rpb24sIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXkga2V5
KQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZUtleWJvYXJkSW50
ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBLZXlib2FyZEludGVyYWN0aW9uIGludGVyYWN0
aW9uLCBzdGQ6Om9wdGlvbmFsPFZpcnR1YWxLZXk+IHZpcnR1YWxLZXksIHN0ZDo6b3B0aW9uYWw8
Q2hhcktleT4gY2hhcktleSkKIHsKICAgICAvLyBGSVhNRTogdGhpcyBmdW5jdGlvbiBhbmQgdGhl
IEF1dG9tYXRpb24gcHJvdG9jb2wgZW51bSBzaG91bGQgcHJvYmFibHkgYWRvcHQga2V5IG5hbWVz
CiAgICAgLy8gZnJvbSBXM0MgVUlFdmVudHMgc3RhbmRhcmQuIEZvciBtb3JlIGRldGFpbHM6IGh0
dHBzOi8vdzNjLmdpdGh1Yi5pby91aWV2ZW50cy1jb2RlLwogCi0gICAgYm9vbCBpc1N0aWNreU1v
ZGlmaWVyID0ga2V5SGFzU3RpY2t5TW9kaWZpZXIoa2V5KTsKLSAgICBOU0V2ZW50TW9kaWZpZXJG
bGFncyBjaGFuZ2VkTW9kaWZpZXJzID0gZXZlbnRNb2RpZmllckZsYWdzRm9yVmlydHVhbEtleShr
ZXkpOwotICAgIGludCBrZXlDb2RlID0ga2V5Q29kZUZvclZpcnR1YWxLZXkoa2V5KTsKKyAgICBB
U1NFUlQodmlydHVhbEtleS5oYXNfdmFsdWUoKSB8fCBjaGFyS2V5Lmhhc192YWx1ZSgpKTsKKwor
ICAgIGJvb2wgaXNTdGlja3lNb2RpZmllciA9IGZhbHNlOworICAgIE5TRXZlbnRNb2RpZmllckZs
YWdzIGNoYW5nZWRNb2RpZmllcnMgPSAwOworICAgIGludCBrZXlDb2RlOworICAgIHN0ZDo6b3B0
aW9uYWw8dW5pY2hhcj4gY2hhckNvZGU7CisgICAgc3RkOjpvcHRpb25hbDx1bmljaGFyPiBjaGFy
Q29kZUlnbm9yaW5nTW9kaWZpZXJzOworCisgICAgaWYgKHZpcnR1YWxLZXkuaGFzX3ZhbHVlKCkp
IHsKKyAgICAgICAgaXNTdGlja3lNb2RpZmllciA9IHZpcnR1YWxLZXlIYXNTdGlja3lNb2RpZmll
cih2aXJ0dWFsS2V5LnZhbHVlKCkpOworICAgICAgICBjaGFuZ2VkTW9kaWZpZXJzID0gZXZlbnRN
b2RpZmllckZsYWdzRm9yVmlydHVhbEtleSh2aXJ0dWFsS2V5LnZhbHVlKCkpOworICAgICAgICBr
ZXlDb2RlID0ga2V5Q29kZUZvclZpcnR1YWxLZXkodmlydHVhbEtleS52YWx1ZSgpKTsKKyAgICAg
ICAgY2hhckNvZGUgPSBjaGFyQ29kZUZvclZpcnR1YWxLZXkodmlydHVhbEtleS52YWx1ZSgpKTsK
KyAgICAgICAgY2hhckNvZGVJZ25vcmluZ01vZGlmaWVycyA9IGNoYXJDb2RlSWdub3JpbmdNb2Rp
ZmllcnNGb3JWaXJ0dWFsS2V5KHZpcnR1YWxLZXkudmFsdWUoKSk7CisgICAgfQorCisgICAgaWYg
KGNoYXJLZXkuaGFzX3ZhbHVlKCkpIHsKKyAgICAgICAgY2hhckNvZGUgPSAodW5pY2hhciljaGFy
S2V5LnZhbHVlKCk7CisgICAgICAgIGNoYXJDb2RlSWdub3JpbmdNb2RpZmllcnMgPSAodW5pY2hh
ciljaGFyS2V5LnZhbHVlKCk7CisgICAgfQogCiAgICAgLy8gRklYTUU6IGNvbnNpZGVyIHVzaW5n
IEFwcEtpdCBTUEkgdG8gbm9ybWFsaXplICdjaGFyYWN0ZXJzJywgaS5lLiwgY2hhbmdpbmcgKiB0
byBTaGlmdC04LAogICAgIC8vIGFuZCBwYXNzaW5nIHRoYXQgaW4gdG8gY2hhcmFjdGVyc0lnbm9y
aW5nTW9kaWZpZXJzLiBXZSBjb3VsZCBoYXJkY29kZSB0aGlzIGZvciBBU0NJSSBpZiBuZWVkZWQu
Ci0gICAgc3RkOjpvcHRpb25hbDx1bmljaGFyPiBjaGFyQ29kZSA9IGNoYXJDb2RlRm9yVmlydHVh
bEtleShrZXkpOwotICAgIHN0ZDo6b3B0aW9uYWw8dW5pY2hhcj4gY2hhckNvZGVJZ25vcmluZ01v
ZGlmaWVycyA9IGNoYXJDb2RlSWdub3JpbmdNb2RpZmllcnNGb3JWaXJ0dWFsS2V5KGtleSk7CiAg
ICAgTlNTdHJpbmcgKmNoYXJhY3RlcnMgPSBjaGFyQ29kZSA/IFtOU1N0cmluZyBzdHJpbmdXaXRo
Q2hhcmFjdGVyczomY2hhckNvZGUudmFsdWUoKSBsZW5ndGg6MV0gOiBuaWw7CiAgICAgTlNTdHJp
bmcgKnVubW9kaWZpZWRDaGFyYWN0ZXJzID0gY2hhckNvZGVJZ25vcmluZ01vZGlmaWVycyA/IFtO
U1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2hhckNvZGVJZ25vcmluZ01vZGlmaWVycy52
YWx1ZSgpIGxlbmd0aDoxXSA6IG5pbDsKIApAQCAtNDUyLDE5ICs0NjcsMTkgQEAgdm9pZCBXZWJB
dXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZUtleVN0cm9rZShXZWJQYWdlUHJveHkm
IHBhZ2UsIEluc3BlY3QKICAgICBOU1BvaW50IGV2ZW50UG9zaXRpb24gPSBOU01ha2VQb2ludCgw
LCB3aW5kb3cuZnJhbWUuc2l6ZS5oZWlnaHQpOwogCiAgICAgc3dpdGNoIChpbnRlcmFjdGlvbikg
ewotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6S2V5Ym9hcmRJbnRl
cmFjdGlvblR5cGU6OktleVByZXNzOiB7CisgICAgY2FzZSBLZXlib2FyZEludGVyYWN0aW9uOjpL
ZXlQcmVzczogewogICAgICAgICBOU0V2ZW50VHlwZSBldmVudFR5cGUgPSBpc1N0aWNreU1vZGlm
aWVyID8gTlNFdmVudFR5cGVGbGFnc0NoYW5nZWQgOiBOU0V2ZW50VHlwZUtleURvd247CiAgICAg
ICAgIG1fY3VycmVudE1vZGlmaWVycyB8PSBjaGFuZ2VkTW9kaWZpZXJzOwogICAgICAgICBbZXZl
bnRzVG9CZVNlbnQgYWRkT2JqZWN0OltOU0V2ZW50IGtleUV2ZW50V2l0aFR5cGU6ZXZlbnRUeXBl
IGxvY2F0aW9uOmV2ZW50UG9zaXRpb24gbW9kaWZpZXJGbGFnczptX2N1cnJlbnRNb2RpZmllcnMg
dGltZXN0YW1wOnRpbWVzdGFtcCB3aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmls
IGNoYXJhY3RlcnM6Y2hhcmFjdGVycyBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6dW5tb2Rp
ZmllZENoYXJhY3RlcnMgaXNBUmVwZWF0Ok5PIGtleUNvZGU6a2V5Q29kZV1dOwogICAgICAgICBi
cmVhazsKICAgICB9Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpL
ZXlib2FyZEludGVyYWN0aW9uVHlwZTo6S2V5UmVsZWFzZTogeworICAgIGNhc2UgS2V5Ym9hcmRJ
bnRlcmFjdGlvbjo6S2V5UmVsZWFzZTogewogICAgICAgICBOU0V2ZW50VHlwZSBldmVudFR5cGUg
PSBpc1N0aWNreU1vZGlmaWVyID8gTlNFdmVudFR5cGVGbGFnc0NoYW5nZWQgOiBOU0V2ZW50VHlw
ZUtleVVwOwogICAgICAgICBtX2N1cnJlbnRNb2RpZmllcnMgJj0gfmNoYW5nZWRNb2RpZmllcnM7
CiAgICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmplY3Q6W05TRXZlbnQga2V5RXZlbnRXaXRo
VHlwZTpldmVudFR5cGUgbG9jYXRpb246ZXZlbnRQb3NpdGlvbiBtb2RpZmllckZsYWdzOm1fY3Vy
cmVudE1vZGlmaWVycyB0aW1lc3RhbXA6dGltZXN0YW1wIHdpbmRvd051bWJlcjp3aW5kb3dOdW1i
ZXIgY29udGV4dDpuaWwgY2hhcmFjdGVyczpjaGFyYWN0ZXJzIGNoYXJhY3RlcnNJZ25vcmluZ01v
ZGlmaWVyczp1bm1vZGlmaWVkQ2hhcmFjdGVycyBpc0FSZXBlYXQ6Tk8ga2V5Q29kZTprZXlDb2Rl
XV07CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkF1dG9tYXRpb246OktleWJvYXJkSW50ZXJhY3Rpb25UeXBlOjpJbnNlcnRCeUtleTogeworICAg
IGNhc2UgS2V5Ym9hcmRJbnRlcmFjdGlvbjo6SW5zZXJ0QnlLZXk6IHsKICAgICAgICAgLy8gU3Rp
Y2t5IG1vZGlmaWVycyBzaG91bGQgZWl0aGVyIGJlICdLZXlQcmVzcycgb3IgJ0tleVJlbGVhc2Un
LgogICAgICAgICBBU1NFUlQoIWlzU3RpY2t5TW9kaWZpZXIpOwogICAgICAgICBpZiAoaXNTdGlj
a3lNb2RpZmllcikKQEAgLTU1MSw3ICs1NjYsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9u
OjpwbGF0Zm9ybVNpbXVsYXRlS2V5U2VxdWVuY2UoV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdAog
CiAgICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmplY3Q6W05TRXZlbnQga2V5RXZlbnRXaXRo
VHlwZTpOU0V2ZW50VHlwZUtleURvd24gbG9jYXRpb246ZXZlbnRQb3NpdGlvbiBtb2RpZmllckZs
YWdzOm1vZGlmaWVyc0ZvcktleXN0cm9rZSB0aW1lc3RhbXA6dGltZXN0YW1wIHdpbmRvd051bWJl
cjp3aW5kb3dOdW1iZXIgY29udGV4dDpuaWwgY2hhcmFjdGVyczpzdWJzdHJpbmcgY2hhcmFjdGVy
c0lnbm9yaW5nTW9kaWZpZXJzOnN1YnN0cmluZyBpc0FSZXBlYXQ6Tk8ga2V5Q29kZTowXV07CiAg
ICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmplY3Q6W05TRXZlbnQga2V5RXZlbnRXaXRoVHlw
ZTpOU0V2ZW50VHlwZUtleVVwIGxvY2F0aW9uOmV2ZW50UG9zaXRpb24gbW9kaWZpZXJGbGFnczpt
b2RpZmllcnNGb3JLZXlzdHJva2UgdGltZXN0YW1wOnRpbWVzdGFtcCB3aW5kb3dOdW1iZXI6d2lu
ZG93TnVtYmVyIGNvbnRleHQ6bmlsIGNoYXJhY3RlcnM6c3Vic3RyaW5nIGNoYXJhY3RlcnNJZ25v
cmluZ01vZGlmaWVyczpzdWJzdHJpbmcgaXNBUmVwZWF0Ok5PIGtleUNvZGU6MF1dOwotICAgICAg
ICAKKwogICAgICAgICBpZiAoc2hvdWxkUHJlc3NTaGlmdCkKICAgICAgICAgICAgIFtldmVudHNU
b0JlU2VudCBhZGRPYmplY3Q6W05TRXZlbnQga2V5RXZlbnRXaXRoVHlwZTpOU0V2ZW50VHlwZUZs
YWdzQ2hhbmdlZCBsb2NhdGlvbjpldmVudFBvc2l0aW9uIG1vZGlmaWVyRmxhZ3M6bV9jdXJyZW50
TW9kaWZpZXJzIHRpbWVzdGFtcDp0aW1lc3RhbXAgd2luZG93TnVtYmVyOndpbmRvd051bWJlciBj
b250ZXh0Om5pbCBjaGFyYWN0ZXJzOkAiIiBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6QCIi
IGlzQVJlcGVhdDpOTyBrZXlDb2RlOmtWS19TaGlmdF1dOwogICAgIH1dOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYWQxNTQ3NTkwYzZm
ZDNhMDg1ZDFkNGVmOWQ2Y2NjOTA1YTM3NjZlZC4uZTc5YWE5YTY1ZTllMTdjNDQ4MTM5MTZjM2I1
NTM1MmNiMGI4ODVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0xNTI5LDYgKzE1MjksOCBAQAogCQk5OTQ2RUY4NjFFN0IwMjcwMDA1
NDFFNzkgLyogV2ViQXV0b21hdGlvblNlc3Npb25JT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTQ2RUY4NTFFN0IwMjY2MDA1NDFFNzkgLyogV2Vi
QXV0b21hdGlvblNlc3Npb25JT1MubW0gKi87IH07CiAJCTk5NEJBREYzMUY3RDc4MTEwMEI1NzFF
NyAvKiBXS0luc3BlY3RvclZpZXdDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk0QkFERjIxRjdENzdFQjAwQjU3MUU3IC8qIFdLSW5z
cGVjdG9yVmlld0NvbnRyb2xsZXIubW0gKi87IH07CiAJCTk5NEJBREY0MUY3RDc4MTQwMEI1NzFF
NyAvKiBXS0luc3BlY3RvclZpZXdDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTRCQURGMTFGN0Q3N0VBMDBCNTcxRTcgLyogV0tJbnNw
ZWN0b3JWaWV3Q29udHJvbGxlci5oICovOyB9OworCQk5OTUyMjZENjIwN0QxODQ2MDBGNzg0MjAg
LyogU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5OTUyMjZENDIwN0QxODQ1MDBGNzg0MjAgLyogU2ltdWxhdGVk
SW5wdXREaXNwYXRjaGVyLmggKi87IH07CisJCTk5NTIyNkQ3MjA3RDE4NDYwMEY3ODQyMCAvKiBT
aW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTk1MjI2RDUyMDdEMTg0NjAwRjc4NDIwIC8qIFNpbXVsYXRlZElu
cHV0RGlzcGF0Y2hlci5jcHAgKi87IH07CiAJCTk5NTVBNkVDMUM3OTgwQzIwMEVCNkE5MyAvKiBX
ZWJBdXRvbWF0aW9uU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTk1NUE2RUIxQzc5ODBCQjAwRUI2QTkzIC8qIFdlYkF1dG9tYXRpb25TZXNz
aW9uLmggKi87IH07CiAJCTk5NTVBNkVEMUM3OTgwQ0EwMEVCNkE5MyAvKiBXZWJBdXRvbWF0aW9u
U2Vzc2lvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5OTU1QTZFQTFDNzk4MEJCMDBFQjZBOTMgLyogV2ViQXV0b21hdGlvblNlc3Npb24uY3BwICov
OyB9OwogCQk5OTU1QTZFRjFDNzk4MTA4MDBFQjZBOTMgLyogQXV0b21hdGlvbi5qc29uIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk1NUE2RTkxQzc5ODBC
QjAwRUI2QTkzIC8qIEF1dG9tYXRpb24uanNvbiAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNDAxOSw2ICs0MDIxLDggQEAKIAkJOTk0NkVGODUxRTdC
MDI2NjAwNTQxRTc5IC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uSU9TLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViQXV0b21hdGlvblNlc3Npb25JT1MubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5NEJBREYxMUY3RDc3RUEwMEI1NzFFNyAvKiBX
S0luc3BlY3RvclZpZXdDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTk0QkFERjIxRjdENzdFQjAwQjU3MUU3IC8qIFdLSW5zcGVjdG9yVmlld0NvbnRyb2xs
ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS0luc3BlY3Rv
clZpZXdDb250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OTUyMjZE
NDIwN0QxODQ1MDBGNzg0MjAgLyogU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OTUyMjZENTIwN0QxODQ2MDBGNzg0MjAgLyogU2lt
dWxhdGVkSW5wdXREaXNwYXRjaGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTk5NTVBNkU5MUM3OTgwQkIwMEVCNkE5MyAvKiBBdXRvbWF0aW9uLmpzb24gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0Lmpzb247IHBhdGggPSBBdXRvbWF0aW9uLmpzb247IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTk5NTVBNkVBMUM3OTgwQkIwMEVCNkE5MyAvKiBXZWJBdXRvbWF0aW9u
U2Vzc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJBdXRv
bWF0aW9uU2Vzc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5NTVBNkVC
MUM3OTgwQkIwMEVCNkE5MyAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBdXRvbWF0aW9uU2Vzc2lvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNjk3MCw2ICs2OTc0LDggQEAKIAkJCQk5OTQ2RUY4MjFFN0IwMjNE
MDA1NDFFNzkgLyogaW9zICovLAogCQkJCTk5QzNBRTIyMURBRDhFMTQwMEFGNUMxNiAvKiBtYWMg
Ki8sCiAJCQkJOTk1NUE2RTkxQzc5ODBCQjAwRUI2QTkzIC8qIEF1dG9tYXRpb24uanNvbiAqLywK
KwkJCQk5OTUyMjZENTIwN0QxODQ2MDBGNzg0MjAgLyogU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVy
LmNwcCAqLywKKwkJCQk5OTUyMjZENDIwN0QxODQ1MDBGNzg0MjAgLyogU2ltdWxhdGVkSW5wdXRE
aXNwYXRjaGVyLmggKi8sCiAJCQkJOTk1NUE2RUExQzc5ODBCQjAwRUI2QTkzIC8qIFdlYkF1dG9t
YXRpb25TZXNzaW9uLmNwcCAqLywKIAkJCQk5OTU1QTZFQjFDNzk4MEJCMDBFQjZBOTMgLyogV2Vi
QXV0b21hdGlvblNlc3Npb24uaCAqLywKIAkJCQkxQzBBMTk1OTFDOTAwNkVBMDBGRTBFQkIgLyog
V2ViQXV0b21hdGlvblNlc3Npb24ubWVzc2FnZXMuaW4gKi8sCkBAIC05MTc0LDYgKzkxODAsNyBA
QAogCQkJCTgzMTNGN0VDMUY3REFFMDgwMEI5NDRFQiAvKiBTaGFyZWRTdHJpbmdIYXNoU3RvcmUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTgzMTNGN0VFMUY3REFFMDgwMEI5NDRFQiAvKiBTaGFyZWRT
dHJpbmdIYXNoVGFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzRjk2NDRFMUZBMEY3NkUwMEM0
Nzc1MCAvKiBTaGFyZWRTdHJpbmdIYXNoVGFibGVSZWFkT25seS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJOTk1MjI2RDYyMDdEMTg0NjAwRjc4NDIwIC8qIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMkRBRjA2RDYxOEJEMUE0NzAwODFDRUIxIC8qIFNtYXJ0TWFn
bmlmaWNhdGlvbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTJERTY5NDNFMThCRDJB
NjgwMDVDMTVFNSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTUyNzJCMjhCMTQwNjk4NUQwMDk2QTVEMCAvKiBTdGF0aXN0aWNzRGF0
YS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDg3Niw2ICsxMDg4Myw3IEBACiAJCQkJODMxM0Y3RUIx
RjdEQUUwODAwQjk0NEVCIC8qIFNoYXJlZFN0cmluZ0hhc2hTdG9yZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk4MzEzRjdFRDFGN0RBRTA4MDBCOTQ0RUIgLyogU2hhcmVkU3RyaW5nSGFzaFRhYmxl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTgzRjk2NDREMUZBMEY3NkUwMEM0Nzc1MCAvKiBTaGFy
ZWRTdHJpbmdIYXNoVGFibGVSZWFkT25seS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5OTUyMjZE
NzIwN0QxODQ2MDBGNzg0MjAgLyogU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTJEQUYwNkQ3MThCRDFBNDcwMDgxQ0VCMSAvKiBTbWFydE1hZ25pZmljYXRp
b25Db250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkRFNjk0M0QxOEJEMkE2ODAwNUMx
NUU1IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTI3MkIyOEExNDA2OTg1RDAwOTZBNUQwIC8qIFN0YXRpc3RpY3NE
YXRhLmNwcCBpbiBTb3VyY2VzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338194</attachid>
            <date>2018-04-17 21:57:05 -0700</date>
            <delta_ts>2018-04-18 17:14:45 -0700</delta_ts>
            <desc>Fix some builds</desc>
            <filename>bug-184603-20180417215705.patch</filename>
            <type>text/plain</type>
            <size>104792</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwNzQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDdiM2UyY2VlODlhOTNmZDA4
MGRkN2NjYTMzMzhhNGFmNDNmZDUyYTYuLjBjNDFlMTNlYWFlZWU3NjQwZjcwOGU0MDY1MDUzNDE1
Y2ZmNjBhZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTI5IEBACisyMDE4LTA0LTE3ICBCcmlhbiBC
dXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBBdXRvbWF0aW9uOiBhZGQgc3Vw
cG9ydCBmb3IgbW91c2Uva2V5Ym9hcmQgaW50ZXJhY3Rpb24gc2VxdWVuY2VzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQ2MDMKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzM5NDIxODM5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCBuZXcgcHJvdG9jb2wgbWV0aG9kcyBhbmQgV2ViS2l0IHN1cHBv
cnQgZm9yIGltcGxlbWVudGluZyB0aGUgVzNDIEFjdGlvbnMgQVBJLgorICAgICAgICBUaGlzIGlz
IGEgZ2VuZXJpYyBjb21tYW5kIGZvciBzZW5kaW5nIGxvdy1sZXZlbCBtb3VzZSwga2V5LCBhbmQg
dG91Y2ggZXZlbnRzIHRvCisgICAgICAgIHRlc3QgcGFnZSBiZWhhdmlvciB3aGVuIHBlcmZvcm1p
bmcgZHJhZy1hbmQtZHJvcCwgZ2VzdHVyZXMsIG9yIHNwZWNpZmljIGtleWRvd24va2V5dXBzLgor
CisgICAgICAgIFRvIGltcGxlbWVudCB0aGlzIGZ1bmN0aW9uYWxpdHksIHRoaXMgcGF0Y2ggYWRk
cyBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIsIGEgY2xhc3MKKyAgICAgICAgZm9yIGRpc3BhdGNo
aW5nIGlucHV0IGV2ZW50cyBhc3luY2hyb25vdXNseS4gU2ltaWxhciB0byB0aGUgV2ViRHJpdmVy
IHNwZWNpZmljYXRpb24sCisgICAgICAgIHRoaXMgaXMgZGVzaWduZWQgYXMgYSBrZXlmcmFtaW5n
IEFQSS4gQ2FsbGVycyBzZXQgdXAgc2V2ZXJhbCAiaW5wdXQgc291cmNlcyIgc3VjaAorICAgICAg
ICBhcyBrZXlib2FyZCBvciBtb3VzZSwgYW5kIHRoZW4gc3BlY2lmeSB0aGUgc3RhdGVzIG9mIHRo
YXQgaW5wdXQgc291cmNlIG92ZXIgdGltZS4gVGhlCisgICAgICAgIGRpc3BhdGNoZXIgY2FsY3Vs
YXRlcyBkaWZmcyBiZXR3ZWVuIHRoZSBwcmV2aW91cyBhbmQgY3VycmVudCBrZXlmcmFtZXMgYW5k
IGdlbmVyYXRlcworICAgICAgICB0aGUgYXBwcm9wcmlhdGUgZXZlbnRzIHRoYXQgd291bGQgaGFw
cGVuIGlmIGEgdXNlciBjYXVzZWQgdGhlIHN0YXRlIHRyYW5zaXRpb24uCisKKyAgICAgICAgRm9y
IGV4YW1wbGUsIGlmIGEgbW91c2UgaW5wdXQgc291cmNlJ3Mgc3RhdGUgY2hhbmdlcywgdGhlIGRp
c3BhdGNoZXIgc2VuZHMgc3ludGhldGljIG1vdXNlbW92ZSwKKyAgICAgICAgbW91c2Vkb3duLCBv
ciBtb3VzZXVwIGV2ZW50cyBkZXBlbmRpbmcgb24gdGhlIHByZS0gYW5kIHBvc3Qtc3RhdGUuIFRo
aXMgaXMgdW5pbnRlcmVzdGluZworICAgICAgICBhbmQgb3ZlcmNvbXBsaWNhdGVkIGZvciBzaW1w
bGUga2V5IGFuZCBtb3VzZSBwcmVzc2VzLCBidXQgaXQncyByZWFsbHkgZGVzaWduZWQgd2l0aCBh
bgorICAgICAgICBleWUgdG93YXJkcyBzdXBwb3J0aW5nIG1vdXNlbW92ZSBpbnRlcnBvbGF0aW9u
IGFuZCB0b3VjaCBldmVudCBpbnRlcnBvbGF0aW9uIGluIGxhdGVyIHBhdGNoZXMuCisKKyAgICAg
ICAgVGhlIHN0cmF0ZWd5IGZvciBkaXNwYXRjaGluZyBldmVudHMgZGVwZW5kcyBvbiB0aGUgaW5w
dXQgc291cmNlIHR5cGU7IHJpZ2h0IG5vdywgdGhlc2UKKyAgICAgICAgbWFwIGRpcmVjdGx5IHRv
IHRoZSBleGlzdGluZyBwbGF0Zm9ybVNpbXVsYXRle01vdXNlLCBLZXlib2FyZH1JbnRlcmFjdGlv
biBtZXRob2RzLiBJbgorICAgICAgICB0aGUgZnV0dXJlLCB0aGUgZGlzcGF0Y2ggc3RyYXRlZ3kg
bWF5IGJlIGVsYWJvcmF0ZWQgZm9yIGludGVycG9sYXRlZCBtb3VzZW1vdmUgZXZlbnRzLgorCisg
ICAgICAgIFRoaXMgcGF0Y2ggZGVwZW5kcyBvbiBzdXBwb3J0IGFkZGVkIGluIGJ1ZyAxODQ0NjIu
CisKKyAgICAgICAgTm8gdGVzdHMgeWV0LiBXaGVuIHRoaXMgY29tbWFuZCBpcyBob29rZWQgdXAg
dG8gYSBkcml2ZXIsIHRoZSBjb2RlIHdpbGwgYmUgZXhlcmNpc2VkIGJ5CisgICAgICAgIFczQyBh
Y3Rpb25zIHRlc3Qgc3VpdGUsIHdoaWNoIGlzIGZhaXJseSBjb21wbGV4IGF0IHRoaXMgcG9pbnQg
cmVsYXRpdmUgdG8gZW5kLXVzZXIgY29kZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0
aW9uL0F1dG9tYXRpb24uanNvbjogQWRkIG5ldyB0eXBlcyBhbmQgY29tbWFuZHMuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9TaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuaDogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6OlNpbXVsYXRlZElucHV0U291cmNlU3RhdGU6OmVtcHR5U3Rh
dGUpOgorICAgICAgICAoV2ViS2l0OjpTaW11bGF0ZWRJbnB1dFNvdXJjZTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYktpdDo6U2ltdWxhdGVkSW5wdXRTb3VyY2U6OlNpbXVsYXRlZElucHV0U291cmNl
KToKKyAgICAgICAgKFdlYktpdDo6U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjpDbGllbnQ6On5D
bGllbnQpOgorICAgICAgICBBZGQgc3RydWN0cyBmb3IgaW5wdXQgc291cmNlLCBzb3VyY2Ugc3Rh
dGUsIGFuZCBrZXlmcmFtZS4KKyAgICAgICAgVGhlIGRpc3BhdGNoZXIncyBjbGllbnQgaW50ZXJm
YWNlIGlzIGltcGxlbWVudGVkIGJ5IFdlYkF1dG9tYXRpb25TZXNzaW9uLgorCisgICAgICAgIChX
ZWJLaXQ6OlNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQXV0b21hdGlvbi9TaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6U2ltdWxhdGVkSW5wdXRLZXlGcmFtZTo6U2ltdWxhdGVkSW5wdXRLZXlG
cmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlNpbXVsYXRlZElucHV0S2V5RnJhbWU6Om1heGltdW1E
dXJhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNpbXVsYXRlZElucHV0S2V5RnJhbWU6
OmtleUZyYW1lRnJvbVN0YXRlT2ZJbnB1dFNvdXJjZXMpOgorICAgICAgICAoV2ViS2l0OjpTaW11
bGF0ZWRJbnB1dEtleUZyYW1lOjprZXlGcmFtZVRvUmVzZXRJbnB1dFNvdXJjZXMpOgorICAgICAg
ICAoV2ViS2l0OjpTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OlNpbXVsYXRlZElucHV0RGlzcGF0
Y2hlcik6CisgICAgICAgIChXZWJLaXQ6OlNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6flNpbXVs
YXRlZElucHV0RGlzcGF0Y2hlcik6CisgICAgICAgIChXZWJLaXQ6OlNpbXVsYXRlZElucHV0RGlz
cGF0Y2hlcjo6aXNBY3RpdmUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTaW11bGF0ZWRJbnB1
dERpc3BhdGNoZXI6OmtleUZyYW1lVHJhbnNpdGlvbkR1cmF0aW9uVGltZXJGaXJlZCk6CisgICAg
ICAgIChXZWJLaXQ6OlNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6aXNLZXlGcmFtZVRyYW5zaXRp
b25Db21wbGV0ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNpbXVsYXRlZElucHV0RGlzcGF0
Y2hlcjo6dHJhbnNpdGlvblRvTmV4dEtleUZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6U2ltdWxh
dGVkSW5wdXREaXNwYXRjaGVyOjp0cmFuc2l0aW9uVG9OZXh0SW5wdXRTb3VyY2VTdGF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6dHJhbnNpdGlvbkJldHdl
ZW5LZXlGcmFtZXMpOgorICAgICAgICAoV2ViS2l0OjpTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6
OnRyYW5zaXRpb25JbnB1dFNvdXJjZVRvU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpTaW11bGF0
ZWRJbnB1dERpc3BhdGNoZXI6OnJ1bik6CisgICAgICAgIChXZWJLaXQ6OlNpbXVsYXRlZElucHV0
RGlzcGF0Y2hlcjo6Y2FuY2VsKToKKyAgICAgICAgKFdlYktpdDo6U2ltdWxhdGVkSW5wdXREaXNw
YXRjaGVyOjpmaW5pc2hEaXNwYXRjaGluZyk6CisgICAgICAgIFRoZSBkaXNwYXRjaGVyIGhhbmRs
ZXMgb25lIGludGVyYWN0aW9uIGF0IGEgdGltZS4gVGhlIGludGVyYWN0aW9uIGlzIGRlc2NyaWJl
ZAorICAgICAgICBieSBhbiBhcnJheSBvZiBrZXlmcmFtZXMsIGFuZCBlYWNoIGtleWZyYW1lIGhh
cyBhbiBhcnJheSBvZiBzdGF0ZXMuIFRoZSBkaXNwYXRjaGVyCisgICAgICAgIHRyYW5zaXRpb25z
IGJldHdlZW4ga2V5ZnJhbWVzIGJ5IHNlcXVlbnRpYWxseSBhbmQgYXN5bmNocm9ub3VzbHkgZW1p
dHRpbmcgZXZlbnRzCisgICAgICAgIHRoYXQgY2F1c2UgZWFjaCBpbnB1dCBzb3VyY2Ugc3RhdGUg
dG8gdHJhbnNpdGlvbiBhcyBkZXNpcmVkLiBLZXlmcmFtZSB0cmFuc2l0aW9ucworICAgICAgICBh
cmUgYWRkaXRpb25hbGx5IGdhdGVkIGJ5IGEgIm1heGltdW0gZHVyYXRpb24iIHRpbWVyLiBFYWNo
IHN0ZXAgdGhhdCB0aGUgZGlzcGF0Y2hlcgorICAgICAgICBleGVjdXRlcyBpcyBhc3luY2hyb25v
dXMsIHNvIHRoZSBkaXNwYXRjaGVyIGtlZXBzIG1vc3Qgc3RhdGUgaW4gbWVtYmVycyBhbmQgdXNl
cworICAgICAgICBlcnJvciBhcmd1bWVudCBsYW1iZGFzIGFzIGNvbXBsZXRpb24gaGFuZGxlcnMg
Zm9yIHZhcmlvdXMgYXN5bmMgdGhpbmdzLgorCisgICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRp
b24vV2ViQXV0b21hdGlvblNlc3Npb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlv
bi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRp
b25TZXNzaW9uOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkF1
dG9tYXRpb25TZXNzaW9uOjppbnB1dERpc3BhdGNoZXJGb3JQYWdlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViQXV0b21hdGlvblNlc3Npb246OmlucHV0U291cmNlRm9yVHlwZSBjb25zdCk6CisgICAg
ICAgIEFkZCBjYW5vbmljYWwgaW5wdXQgc291cmNlcyB0aGF0IGFyZSB1c2VkIHRvIGtlZXAgdHJh
Y2sgb2Ygc3RhdGUgYWNyb3NzCisgICAgICAgIGludGVyYWN0aW9uIHNlcXVlbmNlcy4KKworICAg
ICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6aXNTaW11bGF0aW5nVXNlckludGVy
YWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246Om1v
dXNlRXZlbnRzRmx1c2hlZEZvclBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9u
U2Vzc2lvbjo6a2V5Ym9hcmRFdmVudHNGbHVzaGVkRm9yUGFnZSk6CisgICAgICAgIFJlbW92ZSBt
X3NpbXVsYXRpbmdVc2VySW50ZXJhY3Rpb24gc2luY2UgaXQgY2FuIGJlIGNvbXB1dGVkIGJhc2Vk
IG9uIG90aGVyIG1lbWJlcnMuCisKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Np
b246OndpbGxDbG9zZVBhZ2UpOgorICAgICAgICBJZiB0aGUgcGFnZSBpcyBiZWluZyB0b3JuIGRv
d24sIHN0b3AgdGhlIGRpc3BhdGNoZXIgaWYgbmVlZGVkIGFuZCBjYW5jZWwgYW55CisgICAgICAg
IGNhbGxiYWNrcyB3YWl0aW5nIGZvciBtb3VzZS9rZXkgZXZlbnRzIHRvIGJlIHJldGlyZWQuCisK
KyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OnNpbXVsYXRlTW91c2VJbnRl
cmFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpzaW11bGF0
ZUtleWJvYXJkSW50ZXJhY3Rpb24pOgorICAgICAgICBBZGQgZWFzeS10by11c2UgYXN5bmMgbWV0
aG9kcyBmb3Igc2ltdWxhdGluZyBtb3VzZSBhbmQga2V5IGV2ZW50cy4gVGhlc2UgYXJlCisgICAg
ICAgIGhvb2tlZCB1cCB0byBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIgdXNpbmcgYXN5bmMgY29t
cGxldGlvbiBoYW5kbGVycy4KKworICAgICAgICAoV2ViS2l0Ojpwcm90b2NvbE1vdXNlQnV0dG9u
VG9XZWJNb3VzZUV2ZW50QnV0dG9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNl
c3Npb246OnBlcmZvcm1Nb3VzZUludGVyYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0
b21hdGlvblNlc3Npb246OnBlcmZvcm1LZXlib2FyZEludGVyYWN0aW9ucyk6CisgICAgICAgIEFk
anVzdCBzb21lIG5hbWluZy4KKworICAgICAgICAoV2ViS2l0OjpzaW11bGF0ZWRJbnB1dFNvdXJj
ZVR5cGVGcm9tUHJvdG9jb2xTb3VyY2VUeXBlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21h
dGlvblNlc3Npb246OnBlcmZvcm1JbnRlcmFjdGlvblNlcXVlbmNlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViQXV0b21hdGlvblNlc3Npb246OmNhbmNlbEludGVyYWN0aW9uU2VxdWVuY2UpOgorICAg
ICAgICBBZGQgY29tbWFuZCBoYW5kbGVycyBmb3IgdGhlIG5ldyBhY3Rpb24gY29tbWFuZHMgaW4g
QXV0b21hdGlvbiBwcm90b2NvbC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL2d0
ay9XZWJBdXRvbWF0aW9uU2Vzc2lvbkd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1vdXNlQnV0
dG9uVG9HZGtCdXR0b24pOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6
cGxhdGZvcm1TaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJB
dXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZUtleWJvYXJkSW50ZXJhY3Rpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZUtl
eVN0cm9rZSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRpb24vaW9zL1dl
YkF1dG9tYXRpb25TZXNzaW9uSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9u
U2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZUtleWJvYXJkSW50ZXJhY3Rpb24pOgorICAgICAgICAo
V2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZUtleVN0cm9rZSk6
IERlbGV0ZWQuCisgICAgICAgIFJlbmFtZSB0aGUga2V5Ym9hcmQgcGxhdGZvcm0gbWV0aG9kIHRv
IG1hdGNoIHRoZSBuYW1pbmcgb2YgdGhlIG1vdXNlIHBsYXRmb3JtIG1ldGhvZC4KKyAgICAgICAg
VGFrZSBhZHZhbnRhZ2Ugb2YgdGhlICd1c2luZycgYWxpYXMgdG8gbWFrZSB0aGUgdGVkaW91cyBz
d2l0Y2hlcyBlYXNpZXIgdG8gcmVhZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9u
L21hYy9XZWJBdXRvbWF0aW9uU2Vzc2lvbk1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0
b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVNb3VzZUludGVyYWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6dmlydHVhbEtleUhhc1N0aWNreU1vZGlmaWVyKToKKyAgICAgICAgKFdlYktp
dDo6a2V5Q29kZUZvclZpcnR1YWxLZXkpOgorICAgICAgICAoV2ViS2l0OjpldmVudE1vZGlmaWVy
RmxhZ3NGb3JWaXJ0dWFsS2V5KToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Np
b246OnBsYXRmb3JtU2ltdWxhdGVLZXlib2FyZEludGVyYWN0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6V2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVLZXlTZXF1ZW5jZSk6Cisg
ICAgICAgIChXZWJLaXQ6OmtleUhhc1N0aWNreU1vZGlmaWVyKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVLZXlTdHJva2Up
OiBEZWxldGVkLgorICAgICAgICBBbGxvdyB0aGUga2V5Ym9hcmQgc2ltdWxhdGlvbiBtZXRob2Qg
dG8gdGFrZSBhIHZpcnR1YWwga2V5IGFuZCB1bmljaGFyIHRvIGJldHRlcgorICAgICAgICBtYXRj
aCBob3cgdGhpcyBpcyB1c2VkIGJ5IHRoZSBQZXJmb3JtIEFjdGlvbnMgY29tbWFuZCBhbmQgaXRz
IG1hY2hpbmVyeS4KKworICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorCiAyMDE4LTA0LTE3ICBDb25yYWQgU2h1bHR6ICA8Y29ucmFkX3NodWx0ekBhcHBsZS5jb20+
CiAKICAgICAgICAgV2ViS2l0OjpEaXNwbGF5TGluayBtYWludGFpbnMgYSBzdHJvbmcgcmVmZXJl
bmNlIHRvIFdlYlBhZ2VQcm94eSwgY3JlYXRpbmcgYSByZWZlcmVuY2UgY3ljbGUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlz
dHMudHh0CmluZGV4IGUwZDEzMWVjYWY1Mjg4NjkzMTc4ZDNiY2Y0Nzk0MDFkZWEzYzVmZTQuLmI5
Mzk4MjAwYzY5ZTg2ZjE0ZGM1OTZmYmVhNTJhMDU0NzcwNDk1Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4
dApAQCAtNDMxLDYgKzQzMSw3IEBAIHNldChXZWJLaXRfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9B
dXRoZW50aWNhdGlvbi9XZWJDcmVkZW50aWFsLmNwcAogICAgIFVJUHJvY2Vzcy9BdXRoZW50aWNh
dGlvbi9XZWJQcm90ZWN0aW9uU3BhY2UuY3BwCiAKKyAgICBVSVByb2Nlc3MvQXV0b21hdGlvbi9T
aW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuY3BwCiAgICAgVUlQcm9jZXNzL0F1dG9tYXRpb24vV2Vi
QXV0b21hdGlvblNlc3Npb24uY3BwCiAKICAgICBVSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
UHJveHkuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9u
L0F1dG9tYXRpb24uanNvbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vQXV0
b21hdGlvbi5qc29uCmluZGV4IDdlODZkMTQ5YzI1YzE5MTQwNDIxZDM4ODRhNTFiYjZjMGY5ZTYy
OTAuLmMzMTdlMWEyNjIwZDlkZTdjYTZjOGFhNjNhZDMyODcwOWIxMjZiZWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vQXV0b21hdGlvbi5qc29uCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vQXV0b21hdGlvbi5qc29uCkBAIC03
Miw3ICs3Miw4IEBACiAgICAgICAgICAgICAgICAgIkVsZW1lbnROb3RJbnRlcmFjdGFibGUiLAog
ICAgICAgICAgICAgICAgICJFbGVtZW50Tm90U2VsZWN0YWJsZSIsCiAgICAgICAgICAgICAgICAg
IlNjcmVlbnNob3RFcnJvciIsCi0gICAgICAgICAgICAgICAgIlVuZXhwZWN0ZWRBbGVydE9wZW4i
CisgICAgICAgICAgICAgICAgIlVuZXhwZWN0ZWRBbGVydE9wZW4iLAorICAgICAgICAgICAgICAg
ICJUYXJnZXRPdXRPZkJvdW5kcyIKICAgICAgICAgICAgIF0KICAgICAgICAgfSwKICAgICAgICAg
ewpAQCAtMjQ0LDYgKzI0NSw0NiBAQAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicGVybWlz
c2lvbiIsICIkcmVmIjogIlNlc3Npb25QZXJtaXNzaW9uIiB9LAogICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAidmFsdWUiLCAidHlwZSI6ICJib29sZWFuIiB9CiAgICAgICAgICAgICBdCisgICAg
ICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJJbnB1dFNvdXJjZVR5cGUiLAor
ICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6
ICJUaGUgdHlwZSBvZiBhbiBpbnB1dCBzb3VyY2UuIFRoaXMgZGV0ZXJtaW5lcyB3aGljaCBzdGF0
ZSBwcm9wZXJ0aWVzIGFyZSBhcHBsaWNhYmxlIHRvIHRoZSBpbnB1dCBzb3VyY2UuIFRoZSAnTnVs
bCcgaW5wdXQgc291cmNlIHR5cGUgaGFzIG5vIHByb3BlcnRpZXMsIG9ubHkgYSBkdXJhdGlvbi4g
VGhpcyBjYW4gZXh0ZW5kIHRoZSBlZmZlY3RpdmUgd2FpdCBmb3IgYSB0aWNrLiIsCisgICAgICAg
ICAgICAiZW51bSI6IFsKKyAgICAgICAgICAgICAgICAiTnVsbCIsCisgICAgICAgICAgICAgICAg
Ik1vdXNlIiwKKyAgICAgICAgICAgICAgICAiS2V5Ym9hcmQiLAorICAgICAgICAgICAgICAgICJU
b3VjaCIKKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAg
ImlkIjogIklucHV0U291cmNlIiwKKyAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCisgICAg
ICAgICAgICAicHJvcGVydGllcyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNvdXJj
ZUlkIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIkEgdW5pcXVlIGlkZW50aWZp
ZXIgZm9yIHRoaXMgaW5wdXQgc291cmNlLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjog
InNvdXJjZVR5cGUiLCAiJHJlZiI6ICJJbnB1dFNvdXJjZVR5cGUiLCAiZGVzY3JpcHRpb24iOiAi
VGhlIHR5cGUgb2YgdGhpcyBpbnB1dCBzb3VyY2UuIFRoaXMgYWZmZWN0cyB3aGF0IGlucHV0IHNv
dXJjZSBzdGF0ZSBmaWVsZHMgYXJlIHZhbGlkIGZvciB0aGlzIGlucHV0IHNvdXJjZS4iIH0KKyAg
ICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgImlkIjogIklu
dGVyYWN0aW9uU3RlcCIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQSBzZXQgb2YgaW5w
dXQgc291cmNlIHN0YXRlcyB0byB3aGljaCBhbGwgYXBwbGljYWJsZSBpbnB1dCBzb3VyY2VzIG11
c3QgdHJhbnNpdGlvbiBiZWZvcmUgZnVydGhlciBzdGVwcyBtYXkgYmUgcHJvY2Vzc2VkLiBJZiBh
biBpbnB1dCBzb3VyY2UgZG9lcyBub3QgaGF2ZSBhIGNvcnJlc3BvbmRpbmcgc3RhdGUgaW4gYSBz
dGVwLCBpdHMgc3RhdGUgYXNzdW1lZCB0byBiZSAncmVsZWFzZWQnIGZvciB0aGF0IHN0ZXAuIiwK
KyAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCisgICAgICAgICAgICAicHJvcGVydGllcyI6
IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInN0YXRlcyIsICJ0eXBlIjogImFycmF5Iiwg
Iml0ZW1zIjogeyAiJHJlZiI6ICJJbnB1dFNvdXJjZVN0YXRlIiB9LCAib3B0aW9uYWwiOiB0cnVl
LCAiZGVzY3JpcHRpb24iOiAiQSBsaXN0IG9mIG5ldyBpbnB1dCBzdGF0ZXMgZm9yIGlucHV0IHNv
dXJjZXMgdGhhdCBtdXN0IHRyYW5zaXRpb24gZHVyaW5nIHRoaXMgc3RlcC4gU291cmNlIHN0YXRl
IHRyYW5zaXRpb25zIHRoYXQgY2Fubm90IGJlIHBlcmZvcm1lZCBjb25jdXJyZW50bHkgKGkuZS4s
IHRvdWNoIGdlc3R1cmVzKSBhcmUgcGVyZm9ybWVkIHNlcXVlbnRpYWxseSBpbiB0aGUgb3JkZXIg
dGhleSBhcmUgbGlzdGVkLiIgfQorICAgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7
CisgICAgICAgICAgICAiaWQiOiAiSW5wdXRTb3VyY2VTdGF0ZSIsCisgICAgICAgICAgICAidHlw
ZSI6ICJvYmplY3QiLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkEgbmV3IHN0YXRlIGZv
ciBhIHNwZWNpZmljIGlucHV0IHNvdXJjZS4gQWxsIHN0YXRlLXJlbGF0ZWQgZmllbGRzIGFyZSBv
cHRpb25hbCBhbmQgbXVzdCBiZSBhcHBsaWNhYmxlIHRvIHRoZSBJbnB1dFNvdXJjZSByZWZlcmVu
Y2VkIGJ5ICdzb3VyY2VJZCcuIElmIG5vIHN0YXRlLXJlbGF0ZWQgZmllbGRzIGFyZSBzcGVjaWZp
ZWQsIHRoZSBzdGF0ZSBpcyBhc3N1bWVkIHRvIHJlbWFpbiB0aGUgc2FtZSBhcyBpbiB0aGUgcHJl
dmlvdXMgc3RlcCAoaS5lLiwgJ3N1c3RhaW5lZCcpLiIsCisgICAgICAgICAgICAicHJvcGVydGll
cyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNvdXJjZUlkIiwgInR5cGUiOiAic3Ry
aW5nIiwgImRlc2NyaXB0aW9uIjogIlRoZSBpbnB1dCBzb3VyY2Ugd2hvc2Ugc3RhdGUgaXMgZGVz
Y3JpYmVkIGJ5IHRoaXMgb2JqZWN0LiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInBy
ZXNzZWRDaGFyS2V5IiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2Ny
aXB0aW9uIjogIkZvciAna2V5Ym9hcmQnIGlucHV0IHNvdXJjZXMsIHNwZWNpZmllcyBhIGNoYXJh
Y3RlciBrZXkgdGhhdCBoYXMgJ3ByZXNzZWQnIHN0YXRlLiBVbm1lbnRpb25lZCBjaGFyYWN0ZXIg
a2V5cyBhcmUgYXNzdW1lZCB0byBoYXZlIGEgJ3JlbGVhc2VkJyBzdGF0ZS4iIH0sCisgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJwcmVzc2VkVmlydHVhbEtleSIsICIkcmVmIjogIlZpcnR1YWxL
ZXkiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiRm9yICdrZXlib2FyZCcgaW5w
dXQgc291cmNlcywgc3BlY2lmaWVzIGEgdmlydHVhbCBrZXkgdGhhdCBoYXMgYSAncHJlc3NlZCcg
c3RhdGUuIFVubWVudGlvbmVkIHZpcnR1YWwga2V5cyBhcmUgYXNzdW1lZCB0byBoYXZlIGEgJ3Jl
bGVhc2VkJyBzdGF0ZS4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJwcmVzc2VkQnV0
dG9uIiwgIiRyZWYiOiAiTW91c2VCdXR0b24iLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRp
b24iOiAiRm9yICdtb3VzZScgaW5wdXQgc291cmNlcywgc3BlY2lmaWVzIHdoaWNoIG1vdXNlIGJ1
dHRvbiBoYXMgYSAncHJlc3NlZCcgc3RhdGUuIFVubWVudGlvbmVkIG1vdXNlIGJ1dHRvbnMgYXJl
IGFzc3VtZWQgdG8gaGF2ZSBhICdyZWxlYXNlZCcgc3RhdGUuIiB9LAorICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAibG9jYXRpb24iLCAiJHJlZiI6ICJQb2ludCIsICJvcHRpb25hbCI6IHRydWUs
ICJkZXNjcmlwdGlvbiI6ICJGb3IgJ21vdXNlJyBvciAndG91Y2gnIGlucHV0IHNvdXJjZXMsIHNw
ZWNpZmllcyBhIGxvY2F0aW9uIGluIHZpZXcgY29vcmRpbmF0ZXMgdG8gd2hpY2ggdGhlIGlucHV0
IHNvdXJjZSBzaG91bGQgdHJhbnNpdGlvbi4gVHJhbnNpdGlvbmluZyB0byB0aGlzIHN0YXRlIG1h
eSBpbnRlcnBvbGF0ZSBpbnRlbWVkaWF0ZSBpbnB1dCBzb3VyY2Ugc3RhdGVzIHRvIGJldHRlciBz
aW11bGF0ZSByZWFsIHVzZXIgbW92ZW1lbnRzIGFuZCBnZXN0dXJlcy4iIH0sCisgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJkdXJhdGlvbiIsICJ0eXBlIjogImludGVnZXIiLCAib3B0aW9uYWwi
OiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiVGhlIG1pbmltdW0gbnVtYmVyIG9mIG1pbGxpc2Vjb25k
cyB0aGF0IG11c3QgZWxhcHNlIHdoaWxlIHRoZSByZWxldmFudCBpbnB1dCBzb3VyY2UgdHJhbnNp
dGlvbnMgdG8gdGhpcyBzdGF0ZS4iIH0KKyAgICAgICAgICAgIF0KICAgICAgICAgfQogICAgIF0s
CiAgICAgImNvbW1hbmRzIjogWwpAQCAtNDEzLDYgKzQ1NCwyNCBAQAogICAgICAgICAgICAgXSwK
ICAgICAgICAgICAgICJhc3luYyI6IHRydWUKICAgICAgICAgfSwKKyAgICAgICAgeworICAgICAg
ICAgICAgIm5hbWUiOiAicGVyZm9ybUludGVyYWN0aW9uU2VxdWVuY2UiLAorICAgICAgICAgICAg
ImRlc2NyaXB0aW9uIjogIlBlcmZvcm0gbXVsdGlwbGUgc2ltdWxhdGVkIGludGVyYWN0aW9ucyBv
dmVyIHRpbWUgdXNpbmcgYSBsaXN0IG9mIGlucHV0IHNvdXJjZXMgYW5kIGEgbGlzdCBvZiBzdGVw
cywgd2hlcmUgZWFjaCBzdGVwIHNwZWNpZmllcyBhIHN0YXRlIGZvciBlYWNoIGlucHV0IHNvdXJj
ZSBhdCB0aGUgdGltZSB0aGF0IHN0ZXAgaXMgcGVyZm9ybWVkLiIsCisgICAgICAgICAgICAicGFy
YW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImhhbmRsZSIsICIkcmVmIjog
IkJyb3dzaW5nQ29udGV4dEhhbmRsZSIsICJkZXNjcmlwdGlvbiI6ICJUaGUgYnJvd3NpbmcgY29u
dGV4dCB0byBiZSBpbnRlcmFjdGVkIHdpdGguIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAiaW5wdXRTb3VyY2VzIiwgInR5cGUiOiAiYXJyYXkiLCAiaXRlbXMiOiB7ICIkcmVmIjogIklu
cHV0U291cmNlIiB9LCAiZGVzY3JpcHRpb24iOiAiQWxsIGlucHV0IHNvdXJjZXMgdGhhdCBhcmUg
dXNlZCB0byBwZXJmb3JtIHRoaXMgaW50ZXJhY3Rpb24gc2VxdWVuY2UuIiB9LAorICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAic3RlcHMiLCAidHlwZSI6ICJhcnJheSIsICJpdGVtcyI6IHsgIiRy
ZWYiOiAiSW50ZXJhY3Rpb25TdGVwIiB9LCAiZGVzY3JpcHRpb24iOiAiQSBsaXN0IG9mIHN0ZXBz
IHRoYXQgYXJlIGV4ZWN1dGVkIGluIG9yZGVyLiIgfQorICAgICAgICAgICAgXSwKKyAgICAgICAg
ICAgICJhc3luYyI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5h
bWUiOiAiY2FuY2VsSW50ZXJhY3Rpb25TZXF1ZW5jZSIsCisgICAgICAgICAgICAiZGVzY3JpcHRp
b24iOiAiQ2FuY2VsIGFuIGFjdGl2ZSBpbnRlcmFjdGlvbiBzZXF1ZW5jZSB0aGF0IGlzIGN1cnJl
bnRseSBpbiBwcm9ncmVzcy4iLAorICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJoYW5kbGUiLCAiJHJlZiI6ICJCcm93c2luZ0NvbnRleHRIYW5k
bGUiLCAiZGVzY3JpcHRpb24iOiAiVGhlIGJyb3dzaW5nIGNvbnRleHQgdG8gYmUgaW50ZXJhY3Rl
ZCB3aXRoLiIgfQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJhc3luYyI6IHRydWUKKyAg
ICAgICAgfSwKICAgICAgICAgewogICAgICAgICAgICAgIm5hbWUiOiAidGFrZVNjcmVlbnNob3Qi
LAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlRha2UgYSBzY3JlZW5zaG90IG9mIHRoZSBj
dXJyZW50IHBhZ2Ugb3IgZ2l2ZW4gZWxlbWVudCBpbiBhIGJyb3dzaW5nIGNvbnRleHQuIiwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vU2ltdWxhdGVkSW5w
dXREaXNwYXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vU2lt
dWxhdGVkSW5wdXREaXNwYXRjaGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kOGQ0ODNiOWUzZjQ4OGI5OGJk
ZjdhZmMxZDE0NTJiMmVjM2YyMTNmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQXV0b21hdGlvbi9TaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuY3BwCkBAIC0wLDAg
KzEsMjY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNp
bXVsYXRlZElucHV0RGlzcGF0Y2hlci5oIgorCisjaW5jbHVkZSAiQXV0b21hdGlvblByb3RvY29s
T2JqZWN0cy5oIgorI2luY2x1ZGUgIldlYkF1dG9tYXRpb25TZXNzaW9uLmgiCisjaW5jbHVkZSAi
V2ViQXV0b21hdGlvblNlc3Npb25NYWNyb3MuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1Np
bXVsYXRlZElucHV0S2V5RnJhbWU6OlNpbXVsYXRlZElucHV0S2V5RnJhbWUoVmVjdG9yPFN0YXRl
RW50cnk+JiYgZW50cmllcykKKyAgICA6IHN0YXRlcyhXVEZNb3ZlKGVudHJpZXMpKQoreworfQor
CitTZWNvbmRzIFNpbXVsYXRlZElucHV0S2V5RnJhbWU6Om1heGltdW1EdXJhdGlvbigpIGNvbnN0
Cit7CisgICAgU2Vjb25kcyByZXN1bHQ7CisgICAgZm9yIChhdXRvJiBlbnRyeSA6IHN0YXRlcykK
KyAgICAgICAgcmVzdWx0ID0gc3RkOjptYXgocmVzdWx0LCBlbnRyeS5zZWNvbmQuZHVyYXRpb24u
dmFsdWVfb3IoU2Vjb25kcygwKSkpOworICAgIAorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1Np
bXVsYXRlZElucHV0S2V5RnJhbWUgU2ltdWxhdGVkSW5wdXRLZXlGcmFtZTo6a2V5RnJhbWVGcm9t
U3RhdGVPZklucHV0U291cmNlcyhIYXNoU2V0PFJlZjxTaW11bGF0ZWRJbnB1dFNvdXJjZT4+JiBp
bnB1dFNvdXJjZXMpCit7CisgICAgLy8gVGhlIGNsaWVudCBvZiB0aGlzIGNsYXNzIGlzIHJlcXVp
cmVkIHRvIGludGVybiBTaW11bGF0ZWRJbnB1dFNvdXJjZSBpbnN0YW5jZXMgaWYgdGhlIGxhc3Qg
c3RhdGUKKyAgICAvLyBmcm9tIHRoZSBwcmV2aW91cyBjb21tYW5kIHNob3VsZCBiZSB1c2VkIGFz
IHRoZSBpbml0YWwgc3RhdGUgZm9yIHRoZSBuZXh0IGNvbW1hbmQuIFRoaXMgaXMgdGhlCisgICAg
Ly8gY2FzZSBmb3IgUGVyZm9ybSBBY3Rpb25zIGFuZCBSZWxlYXNlIEFjdGlvbnMsIGJ1dCBub3Qg
RWxlbWVudCBDbGljayBvciBFbGVtZW50IFNlbmQgS2V5cy4KKyAgICBWZWN0b3I8U2ltdWxhdGVk
SW5wdXRLZXlGcmFtZTo6U3RhdGVFbnRyeT4gZW50cmllczsKKyAgICBlbnRyaWVzLnJlc2VydmVD
YXBhY2l0eShpbnB1dFNvdXJjZXMuc2l6ZSgpKTsKKworICAgIGZvciAoYXV0byYgaW5wdXRTb3Vy
Y2UgOiBpbnB1dFNvdXJjZXMpCisgICAgICAgIGVudHJpZXMudW5jaGVja2VkQXBwZW5kKHN0ZDo6
cGFpcjxTaW11bGF0ZWRJbnB1dFNvdXJjZSYsIFNpbXVsYXRlZElucHV0U291cmNlU3RhdGU+IHsg
aW5wdXRTb3VyY2UuZ2V0KCksIGlucHV0U291cmNlLT5zdGF0ZSB9KTsKKworICAgIHJldHVybiBT
aW11bGF0ZWRJbnB1dEtleUZyYW1lKFdURk1vdmUoZW50cmllcykpOworfQorCitTaW11bGF0ZWRJ
bnB1dEtleUZyYW1lIFNpbXVsYXRlZElucHV0S2V5RnJhbWU6OmtleUZyYW1lVG9SZXNldElucHV0
U291cmNlcyhIYXNoU2V0PFJlZjxTaW11bGF0ZWRJbnB1dFNvdXJjZT4+JiBpbnB1dFNvdXJjZXMp
Cit7CisgICAgVmVjdG9yPFNpbXVsYXRlZElucHV0S2V5RnJhbWU6OlN0YXRlRW50cnk+IGVudHJp
ZXM7CisgICAgZW50cmllcy5yZXNlcnZlQ2FwYWNpdHkoaW5wdXRTb3VyY2VzLnNpemUoKSk7CisK
KyAgICBmb3IgKGF1dG8mIGlucHV0U291cmNlIDogaW5wdXRTb3VyY2VzKQorICAgICAgICBlbnRy
aWVzLnVuY2hlY2tlZEFwcGVuZChzdGQ6OnBhaXI8U2ltdWxhdGVkSW5wdXRTb3VyY2UmLCBTaW11
bGF0ZWRJbnB1dFNvdXJjZVN0YXRlPiB7IGlucHV0U291cmNlLmdldCgpLCBTaW11bGF0ZWRJbnB1
dFNvdXJjZVN0YXRlOjplbXB0eVN0YXRlKCkgfSk7CisKKyAgICByZXR1cm4gU2ltdWxhdGVkSW5w
dXRLZXlGcmFtZShXVEZNb3ZlKGVudHJpZXMpKTsKK30KKyAgICAKK1NpbXVsYXRlZElucHV0RGlz
cGF0Y2hlcjo6U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyKFdlYlBhZ2VQcm94eSYgcGFnZSwgU2lt
dWxhdGVkSW5wdXREaXNwYXRjaGVyOjpDbGllbnQmIGNsaWVudCkKKyAgICA6IG1fcGFnZShwYWdl
KQorICAgICwgbV9jbGllbnQoY2xpZW50KQorICAgICwgbV9rZXlGcmFtZVRyYW5zaXRpb25EdXJh
dGlvblRpbWVyKFJ1bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJlNpbXVsYXRlZElucHV0RGlzcGF0
Y2hlcjo6a2V5RnJhbWVUcmFuc2l0aW9uRHVyYXRpb25UaW1lckZpcmVkKQoreworfQorCitTaW11
bGF0ZWRJbnB1dERpc3BhdGNoZXI6On5TaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIoKQoreworICAg
IEFTU0VSVCghbV9ydW5Db21wbGV0aW9uSGFuZGxlcik7CisgICAgQVNTRVJUKCFtX2tleUZyYW1l
VHJhbnNpdGlvbkR1cmF0aW9uVGltZXIuaXNBY3RpdmUoKSk7Cit9CisKK2Jvb2wgU2ltdWxhdGVk
SW5wdXREaXNwYXRjaGVyOjppc0FjdGl2ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICEhbV9ydW5D
b21wbGV0aW9uSGFuZGxlcjsKK30KKwordm9pZCBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6Omtl
eUZyYW1lVHJhbnNpdGlvbkR1cmF0aW9uVGltZXJGaXJlZCgpCit7CisgICAgQVNTRVJUKG1fa2V5
RnJhbWVUcmFuc2l0aW9uQ29tcGxldGlvbkhhbmRsZXIpOworCisgICAgbV9rZXlGcmFtZVRyYW5z
aXRpb25EdXJhdGlvblRpbWVyLnN0b3AoKTsKKworICAgIGlmIChpc0tleUZyYW1lVHJhbnNpdGlv
bkNvbXBsZXRlKCkpCisgICAgICAgIG1fa2V5RnJhbWVUcmFuc2l0aW9uQ29tcGxldGlvbkhhbmRs
ZXIoc3RkOjpudWxsb3B0KTsKK30KKworYm9vbCBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6Omlz
S2V5RnJhbWVUcmFuc2l0aW9uQ29tcGxldGUoKSBjb25zdAoreworICAgIEFTU0VSVChtX2tleWZy
YW1lSW5kZXggPCBtX2tleWZyYW1lcy5zaXplKCkpOworCisgICAgaWYgKG1faW5wdXRTb3VyY2VT
dGF0ZUluZGV4IDwgbV9rZXlmcmFtZXNbbV9rZXlmcmFtZUluZGV4XS5zdGF0ZXMuc2l6ZSgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobV9rZXlGcmFtZVRyYW5zaXRpb25EdXJh
dGlvblRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVy
biB0cnVlOworfQorCit2b2lkIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6dHJhbnNpdGlvblRv
TmV4dEtleUZyYW1lKCkKK3sKKyAgICArK21fa2V5ZnJhbWVJbmRleDsKKyAgICBpZiAobV9rZXlm
cmFtZUluZGV4ID09IG1fa2V5ZnJhbWVzLnNpemUoKSkgeworICAgICAgICBmaW5pc2hEaXNwYXRj
aGluZyhzdGQ6Om51bGxvcHQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgdHJhbnNp
dGlvbkJldHdlZW5LZXlGcmFtZXMobV9rZXlmcmFtZXNbbV9rZXlmcmFtZUluZGV4IC0gMV0sIG1f
a2V5ZnJhbWVzW21fa2V5ZnJhbWVJbmRleF0sIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyldKHN0ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4gZXJyb3IpIHsK
KyAgICAgICAgaWYgKGVycm9yKSB7CisgICAgICAgICAgICBmaW5pc2hEaXNwYXRjaGluZyhlcnJv
cik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB0cmFuc2l0aW9u
VG9OZXh0S2V5RnJhbWUoKTsKKyAgICB9KTsKK30KKwordm9pZCBTaW11bGF0ZWRJbnB1dERpc3Bh
dGNoZXI6OnRyYW5zaXRpb25Ub05leHRJbnB1dFNvdXJjZVN0YXRlKCkKK3sKKyAgICBpZiAoaXNL
ZXlGcmFtZVRyYW5zaXRpb25Db21wbGV0ZSgpKSB7CisgICAgICAgIGF1dG8gZmluaXNoID0gV1RG
TW92ZShtX2tleUZyYW1lVHJhbnNpdGlvbkNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICAgICAgZmlu
aXNoKHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBJbiB0
aGlzIGNhc2UsIHRyYW5zaXRpb25zIGFyZSBkb25lIGJ1dCB3ZSBuZWVkIHRvIHdhaXQgZm9yIHRo
ZSB0aWNrIHRpbWVyLgorICAgIGlmIChtX2lucHV0U291cmNlU3RhdGVJbmRleCA9PSBtX2tleWZy
YW1lc1ttX2tleWZyYW1lSW5kZXhdLnN0YXRlcy5zaXplKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGF1dG8mIG5leHRLZXlGcmFtZSA9IG1fa2V5ZnJhbWVzW21fa2V5ZnJhbWVJbmRleF07Cisg
ICAgYXV0byYgcG9zdFN0YXRlRW50cnkgPSBuZXh0S2V5RnJhbWUuc3RhdGVzW21faW5wdXRTb3Vy
Y2VTdGF0ZUluZGV4XTsKKyAgICBTaW11bGF0ZWRJbnB1dFNvdXJjZSYgaW5wdXRTb3VyY2UgPSBw
b3N0U3RhdGVFbnRyeS5maXJzdDsKKworICAgIHRyYW5zaXRpb25JbnB1dFNvdXJjZVRvU3RhdGUo
aW5wdXRTb3VyY2UsIHBvc3RTdGF0ZUVudHJ5LnNlY29uZCwgW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKV0oc3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPiBl
cnJvcikgeworICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgICAgIGF1dG8gZmluaXNoID0g
V1RGTW92ZShtX2tleUZyYW1lVHJhbnNpdGlvbkNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICAgICAg
ICAgIGZpbmlzaChlcnJvcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAg
ICAgICAvLyBQZXJmb3JtIHN0YXRlIHRyYW5zaXRpb25zIGluIHRoZSBvcmRlciBzcGVjaWZpZWQg
YnkgdGhlIGN1cnJlbnRLZXlGcmFtZS4KKyAgICAgICAgKyttX2lucHV0U291cmNlU3RhdGVJbmRl
eDsKKworICAgICAgICB0cmFuc2l0aW9uVG9OZXh0SW5wdXRTb3VyY2VTdGF0ZSgpOworICAgIH0p
OworfQorCit2b2lkIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6dHJhbnNpdGlvbkJldHdlZW5L
ZXlGcmFtZXMoY29uc3QgU2ltdWxhdGVkSW5wdXRLZXlGcmFtZSYgYSwgY29uc3QgU2ltdWxhdGVk
SW5wdXRLZXlGcmFtZSYgYiwgQXV0b21hdGlvbkNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlv
bkhhbmRsZXIpCit7CisgICAgbV9pbnB1dFNvdXJjZVN0YXRlSW5kZXggPSAwOworCisgICAgbV9r
ZXlGcmFtZVRyYW5zaXRpb25Db21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpOworICAgIG1fa2V5RnJhbWVUcmFuc2l0aW9uRHVyYXRpb25UaW1lci5zdGFydE9uZVNo
b3QoYi5tYXhpbXVtRHVyYXRpb24oKSk7CisKKyAgICB0cmFuc2l0aW9uVG9OZXh0SW5wdXRTb3Vy
Y2VTdGF0ZSgpOworfQorCit2b2lkIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6dHJhbnNpdGlv
bklucHV0U291cmNlVG9TdGF0ZShTaW11bGF0ZWRJbnB1dFNvdXJjZSYgaW5wdXRTb3VyY2UsIGNv
bnN0IFNpbXVsYXRlZElucHV0U291cmNlU3RhdGUmIG5ld1N0YXRlLCBBdXRvbWF0aW9uQ29tcGxl
dGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICAvLyBNYWtlIGNhc2VzIGFu
ZCBjb25kaXRpb25hbHMgbW9yZSByZWFkYWJsZSBieSBhbGlhc2luZyBwcmUvcG9zdCBzdGF0ZXMg
YXMgJ2EnIGFuZCAnYicuCisgICAgU2ltdWxhdGVkSW5wdXRTb3VyY2VTdGF0ZSBhID0gaW5wdXRT
b3VyY2Uuc3RhdGU7CisgICAgU2ltdWxhdGVkSW5wdXRTb3VyY2VTdGF0ZSBiID0gbmV3U3RhdGU7
CisKKyAgICBBdXRvbWF0aW9uQ29tcGxldGlvbkhhbmRsZXIgZXZlbnREaXNwYXRjaEZpbmlzaGVk
ID0gWyZpbnB1dFNvdXJjZSwgJm5ld1N0YXRlLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXShzdGQ6Om9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+
IGVycm9yKSB7CisgICAgICAgIGlmIChlcnJvcikgeworICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoZXJyb3IpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAg
aW5wdXRTb3VyY2Uuc3RhdGUgPSBuZXdTdGF0ZTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
c3RkOjpudWxsb3B0KTsKKyAgICB9OworCisgICAgc3dpdGNoIChpbnB1dFNvdXJjZS50eXBlKSB7
CisgICAgY2FzZSBTaW11bGF0ZWRJbnB1dFNvdXJjZTo6VHlwZTo6TnVsbDoKKyAgICAgICAgLy8g
VGhlIG1heGltdW0gZHVyYXRpb24gaXMgaGFuZGxlZCBhdCB0aGUga2V5ZnJhbWUgbGV2ZWwgYnkg
bV9rZXlGcmFtZVRyYW5zaXRpb25EdXJhdGlvblRpbWVyLgorICAgICAgICBldmVudERpc3BhdGNo
RmluaXNoZWQoc3RkOjpudWxsb3B0KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTaW11bGF0
ZWRJbnB1dFNvdXJjZTo6VHlwZTo6TW91c2U6IHsKKyAgICAgICAgaWYgKCFhLnByZXNzZWRNb3Vz
ZUJ1dHRvbiAmJiBiLnByZXNzZWRNb3VzZUJ1dHRvbikKKyAgICAgICAgICAgIG1fY2xpZW50LnNp
bXVsYXRlTW91c2VJbnRlcmFjdGlvbihtX3BhZ2UsIE1vdXNlSW50ZXJhY3Rpb246OkRvd24sIGIu
cHJlc3NlZE1vdXNlQnV0dG9uLnZhbHVlKCksIGIubG9jYXRpb24udmFsdWUoKSwgV1RGTW92ZShl
dmVudERpc3BhdGNoRmluaXNoZWQpKTsKKyAgICAgICAgZWxzZSBpZiAoYS5wcmVzc2VkTW91c2VC
dXR0b24gJiYgIWIucHJlc3NlZE1vdXNlQnV0dG9uKQorICAgICAgICAgICAgbV9jbGllbnQuc2lt
dWxhdGVNb3VzZUludGVyYWN0aW9uKG1fcGFnZSwgTW91c2VJbnRlcmFjdGlvbjo6VXAsIGEucHJl
c3NlZE1vdXNlQnV0dG9uLnZhbHVlKCksIGIubG9jYXRpb24udmFsdWUoKSwgV1RGTW92ZShldmVu
dERpc3BhdGNoRmluaXNoZWQpKTsKKyAgICAgICAgZWxzZSBpZiAoYS5sb2NhdGlvbiAhPSBiLmxv
Y2F0aW9uKQorICAgICAgICAgICAgbV9jbGllbnQuc2ltdWxhdGVNb3VzZUludGVyYWN0aW9uKG1f
cGFnZSwgTW91c2VJbnRlcmFjdGlvbjo6TW92ZSwgYi5wcmVzc2VkTW91c2VCdXR0b24udmFsdWVf
b3IoTW91c2VCdXR0b246Ok5vQnV0dG9uKSwgYi5sb2NhdGlvbi52YWx1ZSgpLCBXVEZNb3ZlKGV2
ZW50RGlzcGF0Y2hGaW5pc2hlZCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBldmVudERp
c3BhdGNoRmluaXNoZWQoc3RkOjpudWxsb3B0KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IGNhc2UgU2ltdWxhdGVkSW5wdXRTb3VyY2U6OlR5cGU6OktleWJvYXJkOgorICAgICAgICBpZiAo
KCFhLnByZXNzZWRDaGFyS2V5ICYmIGIucHJlc3NlZENoYXJLZXkpIHx8ICghYS5wcmVzc2VkVmly
dHVhbEtleSAmJiBiLnByZXNzZWRWaXJ0dWFsS2V5KSkKKyAgICAgICAgICAgIG1fY2xpZW50LnNp
bXVsYXRlS2V5Ym9hcmRJbnRlcmFjdGlvbihtX3BhZ2UsIEtleWJvYXJkSW50ZXJhY3Rpb246Oktl
eVByZXNzLCBiLnByZXNzZWRWaXJ0dWFsS2V5LCBiLnByZXNzZWRDaGFyS2V5LCBXVEZNb3ZlKGV2
ZW50RGlzcGF0Y2hGaW5pc2hlZCkpOworICAgICAgICBlbHNlIGlmICgoYS5wcmVzc2VkQ2hhcktl
eSAmJiAhYi5wcmVzc2VkQ2hhcktleSkgfHwgKGEucHJlc3NlZFZpcnR1YWxLZXkgJiYgIWIucHJl
c3NlZFZpcnR1YWxLZXkpKQorICAgICAgICAgICAgbV9jbGllbnQuc2ltdWxhdGVLZXlib2FyZElu
dGVyYWN0aW9uKG1fcGFnZSwgS2V5Ym9hcmRJbnRlcmFjdGlvbjo6S2V5UmVsZWFzZSwgYS5wcmVz
c2VkVmlydHVhbEtleSwgYS5wcmVzc2VkQ2hhcktleSwgV1RGTW92ZShldmVudERpc3BhdGNoRmlu
aXNoZWQpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZXZlbnREaXNwYXRjaEZpbmlzaGVk
KHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2ltdWxhdGVkSW5wdXRT
b3VyY2U6OlR5cGU6OlRvdWNoOgorICAgICAgICAvLyBOb3Qgc3VwcG9ydGVkIHlldC4KKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGV2ZW50RGlzcGF0Y2hGaW5pc2hlZChB
VVRPTUFUSU9OX0NPTU1BTkRfRVJST1JfV0lUSF9OQU1FKE5vdEltcGxlbWVudGVkKSk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KK30KKwordm9pZCBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OnJ1
bihWZWN0b3I8U2ltdWxhdGVkSW5wdXRLZXlGcmFtZT4mJiBrZXlGcmFtZXMsIEhhc2hTZXQ8UmVm
PFNpbXVsYXRlZElucHV0U291cmNlPj4mIGlucHV0U291cmNlcywgQXV0b21hdGlvbkNvbXBsZXRp
b25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUKCFpc0FjdGl2ZSgp
KTsKKyAgICBpZiAoaXNBY3RpdmUoKSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihBVVRP
TUFUSU9OX0NPTU1BTkRfRVJST1JfV0lUSF9OQU1FKEludGVybmFsRXJyb3IpKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIG1fcnVuQ29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKTsKKyAgICBmb3IgKGNvbnN0IFJlZjxTaW11bGF0ZWRJbnB1dFNvdXJj
ZT4mIGlucHV0U291cmNlIDogaW5wdXRTb3VyY2VzKQorICAgICAgICBtX2lucHV0U291cmNlcy5h
ZGQoaW5wdXRTb3VyY2UuY29weVJlZigpKTsKKworICAgIG1fa2V5ZnJhbWVzLnJlc2VydmVDYXBh
Y2l0eShrZXlGcmFtZXMuc2l6ZSgpICsgMSk7CisgICAgbV9rZXlmcmFtZXMuYXBwZW5kKFNpbXVs
YXRlZElucHV0S2V5RnJhbWU6OmtleUZyYW1lRnJvbVN0YXRlT2ZJbnB1dFNvdXJjZXMobV9pbnB1
dFNvdXJjZXMpKTsKKyAgICBtX2tleWZyYW1lcy5hcHBlbmRWZWN0b3IoV1RGTW92ZShrZXlGcmFt
ZXMpKTsKKworICAgIHRyYW5zaXRpb25Ub05leHRLZXlGcmFtZSgpOworfQorCit2b2lkIFNpbXVs
YXRlZElucHV0RGlzcGF0Y2hlcjo6Y2FuY2VsKCkKK3sKKyAgICAvLyBJZiB3ZSB3ZXJlIHdhaXRp
bmcgZm9yIG1fY2xpZW50IHRvIGZpbmlzaCBhbiBpbnRlcmFjdGlvbiBhbmQgdGhlIGludGVyYWN0
aW9uIGhhZCBhbiBlcnJvciwKKyAgICAvLyB0aGVuIHRoZSByZXN0IG9mIHRoZSBhc3luYyBjaGFp
biB3aWxsIGhhdmUgYmVlbiB0b3JuIGRvd24uIElmIHdlIGFyZSBqdXN0IHdhaXRpbmcgb24gYQor
ICAgIC8vIGRpc3BhdGNoIHRpbWVyLCB0aGVuIHRoaXMgd2lsbCBjYW5jZWwgdGhlIHRpbWVyIGFu
ZCBjbGVhcgorCisgICAgaWYgKGlzQWN0aXZlKCkpCisgICAgICAgIGZpbmlzaERpc3BhdGNoaW5n
KEFVVE9NQVRJT05fQ09NTUFORF9FUlJPUl9XSVRIX05BTUUoSW50ZXJuYWxFcnJvcikpOworfQor
Cit2b2lkIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6ZmluaXNoRGlzcGF0Y2hpbmcoc3RkOjpv
cHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPiBlcnJvcikKK3sKKyAgICBpZiAobV9rZXlG
cmFtZVRyYW5zaXRpb25EdXJhdGlvblRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fa2V5RnJh
bWVUcmFuc2l0aW9uRHVyYXRpb25UaW1lci5zdG9wKCk7CisKKyAgICBhdXRvIGZpbmlzaCA9IFdU
Rk1vdmUobV9ydW5Db21wbGV0aW9uSGFuZGxlcik7CisgICAgbV9rZXlmcmFtZXMuY2xlYXIoKTsK
KyAgICBtX2lucHV0U291cmNlcy5jbGVhcigpOworICAgIG1fa2V5ZnJhbWVJbmRleCA9IDA7Cisg
ICAgbV9pbnB1dFNvdXJjZVN0YXRlSW5kZXggPSAwOworCisgICAgZmluaXNoKGVycm9yKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2Via2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BdXRvbWF0aW9uL1NpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQXV0b21hdGlvbi9TaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZmM0NjJhZDU1MTZiYzM3YzQ1NjBjYWZlMDQ3YzI0MjMzMDc3OTU3Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9TaW11bGF0ZWRJbnB1
dERpc3BhdGNoZXIuaApAQCAtMCwwICsxLDE2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiV2ViRXZlbnQuaCIKKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRs
ZXIuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5o
PgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4K
KyNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIEluc3BlY3RvciB7IG5hbWVz
cGFjZSBQcm90b2NvbCB7IG5hbWVzcGFjZSBBdXRvbWF0aW9uIHsKK2VudW0gY2xhc3MgRXJyb3JN
ZXNzYWdlOworZW51bSBjbGFzcyBLZXlib2FyZEludGVyYWN0aW9uVHlwZTsKK2VudW0gY2xhc3Mg
TW91c2VJbnRlcmFjdGlvbjsKK2VudW0gY2xhc3MgVmlydHVhbEtleTsKK30gfSB9CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBBdXRvbWF0aW9uQ29tbWFuZEVycm9yOwordXNpbmcgQXV0
b21hdGlvbkNvbXBsZXRpb25IYW5kbGVyID0gV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0
ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4pPjsKKworY2xhc3MgV2ViUGFnZVBy
b3h5OworCit1c2luZyBLZXlib2FyZEludGVyYWN0aW9uID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbjo6S2V5Ym9hcmRJbnRlcmFjdGlvblR5cGU7Cit1c2luZyBWaXJ0dWFsS2V5ID0g
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTsKK3VzaW5nIENoYXJL
ZXkgPSBjaGFyOyAvLyBGb3IgV2ViRHJpdmVyLCB0aGlzIG9ubHkgbmVlZHMgdG8gc3VwcG9ydCBB
U0NJSSBjaGFyYWN0ZXJzIG9uIDEwMi1rZXkga2V5Ym9hcmQuCit1c2luZyBNb3VzZUJ1dHRvbiA9
IFdlYk1vdXNlRXZlbnQ6OkJ1dHRvbjsKK3VzaW5nIE1vdXNlSW50ZXJhY3Rpb24gPSBJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUludGVyYWN0aW9uOworCitzdHJ1Y3QgU2lt
dWxhdGVkSW5wdXRTb3VyY2VTdGF0ZSB7CisgICAgc3RkOjpvcHRpb25hbDxDaGFyS2V5PiBwcmVz
c2VkQ2hhcktleTsKKyAgICBzdGQ6Om9wdGlvbmFsPFZpcnR1YWxLZXk+IHByZXNzZWRWaXJ0dWFs
S2V5OworICAgIHN0ZDo6b3B0aW9uYWw8TW91c2VCdXR0b24+IHByZXNzZWRNb3VzZUJ1dHRvbjsK
KyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiBsb2NhdGlvbjsKKyAgICBzdGQ6
Om9wdGlvbmFsPFNlY29uZHM+IGR1cmF0aW9uOworCisgICAgc3RhdGljIFNpbXVsYXRlZElucHV0
U291cmNlU3RhdGUgZW1wdHlTdGF0ZSgpIHsgcmV0dXJuIFNpbXVsYXRlZElucHV0U291cmNlU3Rh
dGUoKTsgfQorfTsKKworc3RydWN0IFNpbXVsYXRlZElucHV0U291cmNlIDogcHVibGljIFJlZkNv
dW50ZWQ8U2ltdWxhdGVkSW5wdXRTb3VyY2U+IHsKK3B1YmxpYzoKKyAgICBlbnVtIGNsYXNzIFR5
cGUgeworICAgICAgICBOdWxsLCAvLyBVc2VkIHRvIGluZHVjZSBhIG1pbmltdW0gZHVyYXRpb24u
CisgICAgICAgIEtleWJvYXJkLAorICAgICAgICBNb3VzZSwKKyAgICAgICAgVG91Y2gsCisgICAg
fTsKKworICAgIFR5cGUgdHlwZTsKKworICAgIC8vIFRoZSBsYXN0IHN0YXRlIGFzc29jaWF0ZWQg
d2l0aCB0aGlzIGlucHV0IHNvdXJjZS4KKyAgICBTaW11bGF0ZWRJbnB1dFNvdXJjZVN0YXRlIHN0
YXRlOworCisgICAgc3RhdGljIFJlZjxTaW11bGF0ZWRJbnB1dFNvdXJjZT4gY3JlYXRlKFR5cGUg
dHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNpbXVsYXRlZElucHV0
U291cmNlKHR5cGUsIFNpbXVsYXRlZElucHV0U291cmNlU3RhdGU6OmVtcHR5U3RhdGUoKSkpOwor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBTaW11bGF0ZWRJbnB1dFNvdXJjZShUeXBlIHR5cGUsIFNp
bXVsYXRlZElucHV0U291cmNlU3RhdGUgc3RhdGUpCisgICAgICAgIDogdHlwZSh0eXBlKQorICAg
ICAgICAsIHN0YXRlKHN0YXRlKQorICAgIHsgfQorfTsKKworc3RydWN0IFNpbXVsYXRlZElucHV0
S2V5RnJhbWUgeworcHVibGljOgorICAgIHVzaW5nIFN0YXRlRW50cnkgPSBzdGQ6OnBhaXI8U2lt
dWxhdGVkSW5wdXRTb3VyY2UmLCBTaW11bGF0ZWRJbnB1dFNvdXJjZVN0YXRlPjsKKworICAgIGV4
cGxpY2l0IFNpbXVsYXRlZElucHV0S2V5RnJhbWUoVmVjdG9yPFN0YXRlRW50cnk+JiYpOworICAg
IFNlY29uZHMgbWF4aW11bUR1cmF0aW9uKCkgY29uc3Q7CisKKyAgICBzdGF0aWMgU2ltdWxhdGVk
SW5wdXRLZXlGcmFtZSBrZXlGcmFtZUZyb21TdGF0ZU9mSW5wdXRTb3VyY2VzKEhhc2hTZXQ8UmVm
PFNpbXVsYXRlZElucHV0U291cmNlPj4mKTsKKyAgICBzdGF0aWMgU2ltdWxhdGVkSW5wdXRLZXlG
cmFtZSBrZXlGcmFtZVRvUmVzZXRJbnB1dFNvdXJjZXMoSGFzaFNldDxSZWY8U2ltdWxhdGVkSW5w
dXRTb3VyY2U+PiYpOworCisgICAgVmVjdG9yPFN0YXRlRW50cnk+IHN0YXRlczsKK307CisKK2Ns
YXNzIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlciA6IHB1YmxpYyBSZWZDb3VudGVkPFNpbXVsYXRl
ZElucHV0RGlzcGF0Y2hlcj4geworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNpbXVsYXRlZElu
cHV0RGlzcGF0Y2hlcik7CitwdWJsaWM6CisgICAgY2xhc3MgQ2xpZW50IHsKKyAgICBwdWJsaWM6
CisgICAgICAgIHZpcnR1YWwgfkNsaWVudCgpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgc2lt
dWxhdGVNb3VzZUludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYsIE1vdXNlSW50ZXJhY3Rpb24sIFdl
Yk1vdXNlRXZlbnQ6OkJ1dHRvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGxvY2F0aW9uSW5W
aWV3LCBBdXRvbWF0aW9uQ29tcGxldGlvbkhhbmRsZXImJikgPSAwOworICAgICAgICB2aXJ0dWFs
IHZvaWQgc2ltdWxhdGVLZXlib2FyZEludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYsIEtleWJvYXJk
SW50ZXJhY3Rpb24sIHN0ZDo6b3B0aW9uYWw8VmlydHVhbEtleT4sIHN0ZDo6b3B0aW9uYWw8Q2hh
cktleT4sIEF1dG9tYXRpb25Db21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CisgICAgfTsKKworICAg
IHN0YXRpYyBSZWY8U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyPiBjcmVhdGUoV2ViUGFnZVByb3h5
JiBwYWdlLCBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OkNsaWVudCYgY2xpZW50KQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyKHBh
Z2UsIGNsaWVudCkpOworICAgIH0KKworICAgIH5TaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIoKTsK
KworICAgIHZvaWQgcnVuKFZlY3RvcjxTaW11bGF0ZWRJbnB1dEtleUZyYW1lPiYmIGtleUZyYW1l
cywgSGFzaFNldDxSZWY8U2ltdWxhdGVkSW5wdXRTb3VyY2U+PiYgaW5wdXRTb3VyY2VzLCBBdXRv
bWF0aW9uQ29tcGxldGlvbkhhbmRsZXImJik7CisgICAgdm9pZCBjYW5jZWwoKTsKKworICAgIGJv
b2wgaXNBY3RpdmUoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBTaW11bGF0ZWRJbnB1dERpc3Bh
dGNoZXIoV2ViUGFnZVByb3h5JiwgU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjpDbGllbnQmKTsK
KworICAgIHZvaWQgdHJhbnNpdGlvblRvTmV4dEtleUZyYW1lKCk7CisgICAgdm9pZCB0cmFuc2l0
aW9uQmV0d2VlbktleUZyYW1lcyhjb25zdCBTaW11bGF0ZWRJbnB1dEtleUZyYW1lJiwgY29uc3Qg
U2ltdWxhdGVkSW5wdXRLZXlGcmFtZSYsIEF1dG9tYXRpb25Db21wbGV0aW9uSGFuZGxlciYmKTsK
KworICAgIHZvaWQgdHJhbnNpdGlvblRvTmV4dElucHV0U291cmNlU3RhdGUoKTsKKyAgICB2b2lk
IHRyYW5zaXRpb25JbnB1dFNvdXJjZVRvU3RhdGUoU2ltdWxhdGVkSW5wdXRTb3VyY2UmLCBjb25z
dCBTaW11bGF0ZWRJbnB1dFNvdXJjZVN0YXRlJiBuZXdTdGF0ZSwgQXV0b21hdGlvbkNvbXBsZXRp
b25IYW5kbGVyJiYpOworICAgIHZvaWQgZmluaXNoRGlzcGF0Y2hpbmcoc3RkOjpvcHRpb25hbDxB
dXRvbWF0aW9uQ29tbWFuZEVycm9yPik7CisKKyAgICB2b2lkIGtleUZyYW1lVHJhbnNpdGlvbkR1
cmF0aW9uVGltZXJGaXJlZCgpOworICAgIGJvb2wgaXNLZXlGcmFtZVRyYW5zaXRpb25Db21wbGV0
ZSgpIGNvbnN0OworCisgICAgV2ViUGFnZVByb3h5JiBtX3BhZ2U7CisgICAgU2ltdWxhdGVkSW5w
dXREaXNwYXRjaGVyOjpDbGllbnQmIG1fY2xpZW50OworCisgICAgQXV0b21hdGlvbkNvbXBsZXRp
b25IYW5kbGVyIG1fcnVuQ29tcGxldGlvbkhhbmRsZXI7CisgICAgQXV0b21hdGlvbkNvbXBsZXRp
b25IYW5kbGVyIG1fa2V5RnJhbWVUcmFuc2l0aW9uQ29tcGxldGlvbkhhbmRsZXI7CisgICAgUnVu
TG9vcDo6VGltZXI8U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyPiBtX2tleUZyYW1lVHJhbnNpdGlv
bkR1cmF0aW9uVGltZXI7CisKKyAgICBWZWN0b3I8U2ltdWxhdGVkSW5wdXRLZXlGcmFtZT4gbV9r
ZXlmcmFtZXM7CisgICAgSGFzaFNldDxSZWY8U2ltdWxhdGVkSW5wdXRTb3VyY2U+PiBtX2lucHV0
U291cmNlczsKKworICAgIC8vIFRoZSBwb3NpdGlvbiB3aXRoaW4gbV9rZXlmcmFtZXMuCisgICAg
dW5zaWduZWQgbV9rZXlmcmFtZUluZGV4IHsgMCB9OworCisgICAgLy8gVGhlIHBvc2l0aW9uIHdp
dGhpbiB0aGUgaW5wdXQgc291cmNlIHN0YXRlIHZlY3RvciBhdCBtX2tleWZyYW1lc1ttX2tleWZy
YW1lSW5kZXhdLgorICAgIC8vIEV2ZW50cyB0aGF0IHJlZmxlY3QgaW5wdXQgc291cmNlIHN0YXRl
IHRyYW5zaXRpb25zIGFyZSBkaXNwYXRjaGVkIHNlcmlhbGx5IGJhc2VkIG9uIHRoaXMgb3JkZXIu
CisgICAgdW5zaWduZWQgbV9pbnB1dFNvdXJjZVN0YXRlSW5kZXggeyAwIH07Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1
dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKaW5kZXggMmI4MTFiMjZjYTk0
MWZmNTEwNGJkYjU5YTRiYzM3Njc3ZmRlMGJlZS4uZDhjNWY2ZGYyYjM4ZjA0ZTdkNzE5MmRiNGQy
ZTIwZjEzMDExNWQyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21h
dGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKQEAgLTc2LDYgKzc2LDEwIEBA
IFdlYkF1dG9tYXRpb25TZXNzaW9uOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbigpCiAgICAgLCBtX2Rv
bWFpbk5vdGlmaWVyKHN0ZDo6bWFrZV91bmlxdWU8QXV0b21hdGlvbkZyb250ZW5kRGlzcGF0Y2hl
cj4obV9mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2xvYWRUaW1lcihSdW5Mb29wOjptYWluKCks
IHRoaXMsICZXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6bG9hZFRpbWVyRmlyZWQpCiB7CisgICAgLy8g
U2V0IHVwIGNhbm9uaWNhbCBpbnB1dCBzb3VyY2VzIHRvIGJlIHVzZWQgZm9yICdwZXJmb3JtSW50
ZXJhY3Rpb25TZXF1ZW5jZScgYW5kICdjYW5jZWxJbnRlcmFjdGlvblNlcXVlbmNlJy4KKyAgICBt
X2lucHV0U291cmNlcy5hZGQoU2ltdWxhdGVkSW5wdXRTb3VyY2U6OmNyZWF0ZShTaW11bGF0ZWRJ
bnB1dFNvdXJjZTo6VHlwZTo6TW91c2UpKTsKKyAgICBtX2lucHV0U291cmNlcy5hZGQoU2ltdWxh
dGVkSW5wdXRTb3VyY2U6OmNyZWF0ZShTaW11bGF0ZWRJbnB1dFNvdXJjZTo6VHlwZTo6S2V5Ym9h
cmQpKTsKKyAgICBtX2lucHV0U291cmNlcy5hZGQoU2ltdWxhdGVkSW5wdXRTb3VyY2U6OmNyZWF0
ZShTaW11bGF0ZWRJbnB1dFNvdXJjZTo6VHlwZTo6TnVsbCkpOwogfQogCiBXZWJBdXRvbWF0aW9u
U2Vzc2lvbjo6fldlYkF1dG9tYXRpb25TZXNzaW9uKCkKQEAgLTcyMywyOCArNzI3LDMyIEBAIHZv
aWQgV2ViQXV0b21hdGlvblNlc3Npb246Omluc3BlY3RvckZyb250ZW5kTG9hZGVkKGNvbnN0IFdl
YlBhZ2VQcm94eSYgcGFnZSkKIAogdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6bW91c2VFdmVu
dHNGbHVzaGVkRm9yUGFnZShjb25zdCBXZWJQYWdlUHJveHkmIHBhZ2UpCiB7Ci0gICAgaWYgKGF1
dG8gY2FsbGJhY2sgPSBtX3BlbmRpbmdNb3VzZUV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdl
LnRha2UocGFnZS5wYWdlSUQoKSkpIHsKLSAgICAgICAgaWYgKG1fcGVuZGluZ01vdXNlRXZlbnRz
Rmx1c2hlZENhbGxiYWNrc1BlclBhZ2UuaXNFbXB0eSgpKQotICAgICAgICAgICAgbV9zaW11bGF0
aW5nVXNlckludGVyYWN0aW9uID0gZmFsc2U7Ci0KKyAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1f
cGVuZGluZ01vdXNlRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2UudGFrZShwYWdlLnBhZ2VJ
RCgpKSkKICAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKLSAgICB9CiB9CiAKIHZvaWQg
V2ViQXV0b21hdGlvblNlc3Npb246OmtleWJvYXJkRXZlbnRzRmx1c2hlZEZvclBhZ2UoY29uc3Qg
V2ViUGFnZVByb3h5JiBwYWdlKQogewotICAgIGlmIChhdXRvIGNhbGxiYWNrID0gbV9wZW5kaW5n
S2V5Ym9hcmRFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS50YWtlKHBhZ2UucGFnZUlEKCkp
KSB7Ci0gICAgICAgIGlmIChtX3BlbmRpbmdLZXlib2FyZEV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQ
ZXJQYWdlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIG1fc2ltdWxhdGluZ1VzZXJJbnRlcmFjdGlv
biA9IGZhbHNlOwotCisgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBtX3BlbmRpbmdLZXlib2FyZEV2
ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlLnRha2UocGFnZS5wYWdlSUQoKSkpCiAgICAgICAg
IGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7Ci0gICAgfQogfQogCiB2b2lkIFdlYkF1dG9tYXRpb25T
ZXNzaW9uOjp3aWxsQ2xvc2VQYWdlKGNvbnN0IFdlYlBhZ2VQcm94eSYgcGFnZSkKIHsKICAgICBT
dHJpbmcgaGFuZGxlID0gaGFuZGxlRm9yV2ViUGFnZVByb3h5KHBhZ2UpOwogICAgIG1fZG9tYWlu
Tm90aWZpZXItPmJyb3dzaW5nQ29udGV4dENsZWFyZWQoaGFuZGxlKTsKKworICAgIC8vIENhbmNl
bCBwZW5kaW5nIGludGVyYWN0aW9ucyBvbiB0aGlzIHBhZ2UuIEJ5IHByb3ZpZGluZyBhbiBlcnJv
ciwgdGhpcyB3aWxsIGNhdXNlIHN1YnNlcXVlbnQKKyAgICAvLyBhY3Rpb25zIHRvIGJlIGFib3J0
ZWQgYW5kIHRoZSBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OnJ1bigpIGNhbGwgd2lsbCB1bndp
bmQgYW5kIGZhaWwuCisgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBtX3BlbmRpbmdNb3VzZUV2ZW50
c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlLnRha2UocGFnZS5wYWdlSUQoKSkpCisgICAgICAgIGNh
bGxiYWNrKEFVVE9NQVRJT05fQ09NTUFORF9FUlJPUl9XSVRIX05BTUUoV2luZG93Tm90Rm91bmQp
KTsKKyAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1fcGVuZGluZ01vdXNlRXZlbnRzRmx1c2hlZENh
bGxiYWNrc1BlclBhZ2UudGFrZShwYWdlLnBhZ2VJRCgpKSkKKyAgICAgICAgY2FsbGJhY2soQVVU
T01BVElPTl9DT01NQU5EX0VSUk9SX1dJVEhfTkFNRShXaW5kb3dOb3RGb3VuZCkpOworCisgICAg
Ly8gVGhlbiB0ZWxsIHRoZSBpbnB1dCBkaXNwYXRjaGVyIHRvIGNhbmNlbCBzbyB0aW1lcnMgYXJl
IHN0b3BwZWQsIGFuZCBsZXQgaXQgZ28gb3V0IG9mIHNjb3BlLgorICAgIHN0ZDo6b3B0aW9uYWw8
UmVmPFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcj4+IGlucHV0RGlzcGF0Y2hlciA9IG1faW5wdXRE
aXNwYXRjaGVyc0J5UGFnZS50YWtlKHBhZ2UucGFnZUlEKCkpOworICAgIGlmIChpbnB1dERpc3Bh
dGNoZXIuaGFzX3ZhbHVlKCkpCisgICAgICAgIGlucHV0RGlzcGF0Y2hlci52YWx1ZSgpLT5jYW5j
ZWwoKTsKIH0KIAogc3RhdGljIGJvb2wgZmlsZUNhbkJlQWNjZXB0ZWRGb3JVcGxvYWQoY29uc3Qg
U3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBhbGxvd2VkTUlNRVR5cGVz
LCBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGFsbG93ZWRGaWxlRXh0ZW5zaW9ucykKQEAgLTEzNjYs
NiArMTM3NCw4NiBAQCBib29sIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpzaG91bGRBbGxvd0dldFVz
ZXJNZWRpYUZvclBhZ2UoY29uc3QgV2ViUGFnZVByb3h5JikgYwogICAgIHJldHVybiBtX3Blcm1p
c3Npb25Gb3JHZXRVc2VyTWVkaWE7CiB9CiAKK2Jvb2wgV2ViQXV0b21hdGlvblNlc3Npb246Omlz
U2ltdWxhdGluZ1VzZXJJbnRlcmFjdGlvbigpIGNvbnN0Cit7CisgICAgaWYgKCFtX3BlbmRpbmdN
b3VzZUV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIGlmICghbV9wZW5kaW5nS2V5Ym9hcmRFdmVudHNGbHVzaGVkQ2FsbGJh
Y2tzUGVyUGFnZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVy
biB0cnVlOworfQorCitTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXImIFdlYkF1dG9tYXRpb25TZXNz
aW9uOjppbnB1dERpc3BhdGNoZXJGb3JQYWdlKFdlYlBhZ2VQcm94eSYgcGFnZSkKK3sKKyAgICBp
ZiAoIW1faW5wdXREaXNwYXRjaGVyc0J5UGFnZS5jb250YWlucyhwYWdlLnBhZ2VJRCgpKSkKKyAg
ICAgICAgbV9pbnB1dERpc3BhdGNoZXJzQnlQYWdlLnNldChwYWdlLnBhZ2VJRCgpLCBTaW11bGF0
ZWRJbnB1dERpc3BhdGNoZXI6OmNyZWF0ZShwYWdlLCAqdGhpcykpOworCisgICAgcmV0dXJuICpt
X2lucHV0RGlzcGF0Y2hlcnNCeVBhZ2UuZ2V0KHBhZ2UucGFnZUlEKCkpOworfQorCitTaW11bGF0
ZWRJbnB1dFNvdXJjZSogV2ViQXV0b21hdGlvblNlc3Npb246OmlucHV0U291cmNlRm9yVHlwZShT
aW11bGF0ZWRJbnB1dFNvdXJjZTo6VHlwZSB0eXBlKSBjb25zdAoreworICAgIC8vIEZJWE1FOiB0
aGlzIHNob3VsZCB1c2Ugc29tZXRoaW5nIGxpa2UgVmVjdG9yJ3MgZmluZE1hdGNoaW5nKCkuCisg
ICAgZm9yIChhdXRvJiBpbnB1dFNvdXJjZSA6IG1faW5wdXRTb3VyY2VzKSB7CisgICAgICAgIGlm
IChpbnB1dFNvdXJjZS0+dHlwZSA9PSB0eXBlKQorICAgICAgICAgICAgcmV0dXJuICZpbnB1dFNv
dXJjZS5nZXQoKTsKKyAgICB9CisKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworLy8gU2ltdWxh
dGVkSW5wdXREaXNwYXRjaGVyOjpDbGllbnQgQVBJCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9u
OjpzaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBNb3VzZUludGVy
YWN0aW9uIGludGVyYWN0aW9uLCBXZWJNb3VzZUV2ZW50OjpCdXR0b24gbW91c2VCdXR0b24sIGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiBsb2NhdGlvbkluVmlld3BvcnQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoc3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisgICAgV2ViQ29yZTo6SW50UG9pbnQgbG9jYXRpb25JblZpZXcgPSBX
ZWJDb3JlOjpJbnRQb2ludChsb2NhdGlvbkluVmlld3BvcnQueCgpLCBsb2NhdGlvbkluVmlld3Bv
cnQueSgpICsgcGFnZS50b3BDb250ZW50SW5zZXQoKSk7CisgICAgcGFnZS5nZXRXaW5kb3dGcmFt
ZVdpdGhDYWxsYmFjayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBwYWdlID0gbWFrZVJl
ZihwYWdlKSwgaW50ZXJhY3Rpb24sIG1vdXNlQnV0dG9uLCBsb2NhdGlvbkluVmlld10oV2ViQ29y
ZTo6RmxvYXRSZWN0IHdpbmRvd0ZyYW1lKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBjbGlwcGVk
WCA9IHN0ZDo6bWluKHN0ZDo6bWF4KDAuMGYsIChmbG9hdClsb2NhdGlvbkluVmlldy54KCkpLCB3
aW5kb3dGcmFtZS5zaXplKCkud2lkdGgoKSk7CisgICAgICAgIGF1dG8gY2xpcHBlZFkgPSBzdGQ6
Om1pbihzdGQ6Om1heCgwLjBmLCAoZmxvYXQpbG9jYXRpb25JblZpZXcueSgpKSwgd2luZG93RnJh
bWUuc2l6ZSgpLmhlaWdodCgpKTsKKyAgICAgICAgaWYgKGNsaXBwZWRYICE9IGxvY2F0aW9uSW5W
aWV3LngoKSB8fCBjbGlwcGVkWSAhPSBsb2NhdGlvbkluVmlldy55KCkpIHsKKyAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKEFVVE9NQVRJT05fQ09NTUFORF9FUlJPUl9XSVRIX05BTUUoVGFy
Z2V0T3V0T2ZCb3VuZHMpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAg
ICAgIC8vIEJyaWRnZSB0aGUgZmx1c2hlZCBjYWxsYmFjayB0byBvdXIgY29tbWFuZCdzIGNvbXBs
ZXRpb24gaGFuZGxlci4KKyAgICAgICAgYXV0byBtb3VzZUV2ZW50c0ZsdXNoZWRDYWxsYmFjayA9
IFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShzdGQ6Om9w
dGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+IGVycm9yKSB7CisgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihlcnJvcik7CisgICAgICAgIH07CisKKyAgICAgICAgYXV0byYgY2FsbGJh
Y2tJbk1hcCA9IG1fcGVuZGluZ01vdXNlRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2UuYWRk
KHBhZ2UtPnBhZ2VJRCgpLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CisgICAgICAgIGlmIChj
YWxsYmFja0luTWFwKQorICAgICAgICAgICAgY2FsbGJhY2tJbk1hcChBVVRPTUFUSU9OX0NPTU1B
TkRfRVJST1JfV0lUSF9OQU1FKFRpbWVvdXQpKTsKKyAgICAgICAgY2FsbGJhY2tJbk1hcCA9IFdU
Rk1vdmUobW91c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2spOworCisgICAgICAgIHBsYXRmb3JtU2lt
dWxhdGVNb3VzZUludGVyYWN0aW9uKHBhZ2UsIGludGVyYWN0aW9uLCBtb3VzZUJ1dHRvbiwgbG9j
YXRpb25JblZpZXcsIChXZWJFdmVudDo6TW9kaWZpZXJzKW1fY3VycmVudE1vZGlmaWVycyk7CisK
KyAgICAgICAgLy8gSWYgdGhlIGV2ZW50IGRvZXMgbm90IGhpdCB0ZXN0IGFueXRoaW5nIGluIHRo
ZSB3aW5kb3csIHRoZW4gaXQgbWF5IG5vdCBoYXZlIGJlZW4gZGVsaXZlcmVkLgorICAgICAgICBp
ZiAoY2FsbGJhY2tJbk1hcCAmJiAhcGFnZS0+aXNQcm9jZXNzaW5nTW91c2VFdmVudHMoKSkgewor
ICAgICAgICAgICAgYXV0byBjYWxsYmFja1RvQ2FuY2VsID0gbV9wZW5kaW5nTW91c2VFdmVudHNG
bHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS50YWtlKHBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgICAg
IGNhbGxiYWNrVG9DYW5jZWwoc3RkOjpudWxsb3B0KTsKKyAgICAgICAgfQorCisgICAgICAgIC8v
IE90aGVyd2lzZSwgd2FpdCBmb3IgbW91c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2sgdG8gcnVuIHdo
ZW4gYWxsIGV2ZW50cyBhcmUgaGFuZGxlZC4KKyAgICB9KTsKK30KKwordm9pZCBXZWJBdXRvbWF0
aW9uU2Vzc2lvbjo6c2ltdWxhdGVLZXlib2FyZEludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYgcGFn
ZSwgS2V5Ym9hcmRJbnRlcmFjdGlvbiBpbnRlcmFjdGlvbiwgc3RkOjpvcHRpb25hbDxWaXJ0dWFs
S2V5PiB2aXJ0dWFsS2V5LCBzdGQ6Om9wdGlvbmFsPENoYXJLZXk+IGNoYXJLZXksIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgLy8gQnJpZGdlIHRoZSBmbHVzaGVkIGNhbGxiYWNr
IHRvIG91ciBjb21tYW5kJ3MgY29tcGxldGlvbiBoYW5kbGVyLgorICAgIGF1dG8ga2V5Ym9hcmRF
dmVudHNGbHVzaGVkQ2FsbGJhY2sgPSBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oc3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPiBlcnJv
cikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihlcnJvcik7CisgICAgfTsKKworICAgIGF1
dG8mIGNhbGxiYWNrSW5NYXAgPSBtX3BlbmRpbmdLZXlib2FyZEV2ZW50c0ZsdXNoZWRDYWxsYmFj
a3NQZXJQYWdlLmFkZChwYWdlLnBhZ2VJRCgpLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7Cisg
ICAgaWYgKGNhbGxiYWNrSW5NYXApCisgICAgICAgIGNhbGxiYWNrSW5NYXAoQVVUT01BVElPTl9D
T01NQU5EX0VSUk9SX1dJVEhfTkFNRShUaW1lb3V0KSk7CisgICAgY2FsbGJhY2tJbk1hcCA9IFdU
Rk1vdmUoa2V5Ym9hcmRFdmVudHNGbHVzaGVkQ2FsbGJhY2spOworCisgICAgcGxhdGZvcm1TaW11
bGF0ZUtleWJvYXJkSW50ZXJhY3Rpb24ocGFnZSwgaW50ZXJhY3Rpb24sIHZpcnR1YWxLZXksIGNo
YXJLZXkpOworCisgICAgLy8gV2FpdCBmb3Iga2V5Ym9hcmRFdmVudHNGbHVzaGVkQ2FsbGJhY2sg
dG8gcnVuIHdoZW4gYWxsIGV2ZW50cyBhcmUgaGFuZGxlZC4KK30KKwogI2lmIFVTRShBUFBLSVQp
IHx8IFBMQVRGT1JNKEdUSykKIHN0YXRpYyBXZWJFdmVudDo6TW9kaWZpZXJzIHByb3RvY29sTW9k
aWZpZXJUb1dlYkV2ZW50TW9kaWZpZXIoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6
S2V5TW9kaWZpZXIgbW9kaWZpZXIpCiB7CkBAIC0xMzg2LDkgKzE0NzQsMjMgQEAgc3RhdGljIFdl
YkV2ZW50OjpNb2RpZmllcnMgcHJvdG9jb2xNb2RpZmllclRvV2ViRXZlbnRNb2RpZmllcihJbnNw
ZWN0b3I6OlByb3RvY28KIH0KICNlbmRpZiAvLyBVU0UoQVBQS0lUKSB8fCBQTEFURk9STShHVEsp
CiAKK3N0YXRpYyBXZWJNb3VzZUV2ZW50OjpCdXR0b24gcHJvdG9jb2xNb3VzZUJ1dHRvblRvV2Vi
TW91c2VFdmVudEJ1dHRvbihJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1
dHRvbiBidXR0b24pCit7CisgICAgc3dpdGNoIChidXR0b24pIHsKKyAgICBjYXNlIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9uOjpOb25lOgorICAgICAgICByZXR1
cm4gV2ViTW91c2VFdmVudDo6Tm9CdXR0b247CisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29s
OjpBdXRvbWF0aW9uOjpNb3VzZUJ1dHRvbjo6TGVmdDoKKyAgICAgICAgcmV0dXJuIFdlYk1vdXNl
RXZlbnQ6OkxlZnRCdXR0b247CisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uOjpNb3VzZUJ1dHRvbjo6TWlkZGxlOgorICAgICAgICByZXR1cm4gV2ViTW91c2VFdmVudDo6
TWlkZGxlQnV0dG9uOworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6
TW91c2VCdXR0b246OlJpZ2h0OgorICAgICAgICByZXR1cm4gV2ViTW91c2VFdmVudDo6UmlnaHRC
dXR0b247CisgICAgfQorfQorCiB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwZXJmb3JtTW91
c2VJbnRlcmFjdGlvbihjb25zdCBTdHJpbmcmIGhhbmRsZSwgY29uc3QgSlNPTjo6T2JqZWN0JiBy
ZXF1ZXN0ZWRQb3NpdGlvbk9iamVjdCwgY29uc3QgU3RyaW5nJiBtb3VzZUJ1dHRvblN0cmluZywg
Y29uc3QgU3RyaW5nJiBtb3VzZUludGVyYWN0aW9uU3RyaW5nLCBjb25zdCBKU09OOjpBcnJheSYg
a2V5TW9kaWZpZXJTdHJpbmdzLCBSZWY8UGVyZm9ybU1vdXNlSW50ZXJhY3Rpb25DYWxsYmFjaz4m
JiBjYWxsYmFjaykKIHsKLSNpZiAhVVNFKEFQUEtJVCkgJiYgIVBMQVRGT1JNKEdUSykKKyNpZiAh
VVNFKEFQUEtJVCkgJiYhIFBMQVRGT1JNKEdUSykKICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVG
SU5FRF9FUlJPUihOb3RJbXBsZW1lbnRlZCk7CiAjZWxzZQogICAgIFdlYlBhZ2VQcm94eSogcGFn
ZSA9IHdlYlBhZ2VQcm94eUZvckhhbmRsZShoYW5kbGUpOwpAQCAtMTQxNSwxMyArMTUxNywxMyBA
QCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwZXJmb3JtTW91c2VJbnRlcmFjdGlvbihjb25z
dCBTdHJpbmcmIGhhbmRsZSwgY29uc3QgSgogICAgICAgICBXZWJFdmVudDo6TW9kaWZpZXJzIGVu
dW1WYWx1ZSA9IHByb3RvY29sTW9kaWZpZXJUb1dlYkV2ZW50TW9kaWZpZXIocGFyc2VkTW9kaWZp
ZXIudmFsdWUoKSk7CiAgICAgICAgIGtleU1vZGlmaWVycyA9IChXZWJFdmVudDo6TW9kaWZpZXJz
KShlbnVtVmFsdWUgfCBrZXlNb2RpZmllcnMpOwogICAgIH0KLSAgICAKKwogICAgIHBhZ2UtPmdl
dFdpbmRvd0ZyYW1lV2l0aENhbGxiYWNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHBhZ2UgPSBtYWtlUmVmKCpwYWdl
KSwgeCwgeSwgbW91c2VJbnRlcmFjdGlvblN0cmluZywgbW91c2VCdXR0b25TdHJpbmcsIGtleU1v
ZGlmaWVyc10oV2ViQ29yZTo6RmxvYXRSZWN0IHdpbmRvd0ZyYW1lKSBtdXRhYmxlIHsKIAogICAg
ICAgICB4ID0gc3RkOjptaW4oc3RkOjptYXgoMC4wZiwgeCksIHdpbmRvd0ZyYW1lLnNpemUoKS53
aWR0aCgpKTsKICAgICAgICAgeSA9IHN0ZDo6bWluKHN0ZDo6bWF4KDAuMGYsIHkgKyBwYWdlLT50
b3BDb250ZW50SW5zZXQoKSksIHdpbmRvd0ZyYW1lLnNpemUoKS5oZWlnaHQoKSk7CiAKLSAgICAg
ICAgV2ViQ29yZTo6SW50UG9pbnQgdmlld1Bvc2l0aW9uID0gV2ViQ29yZTo6SW50UG9pbnQoc3Rh
dGljX2Nhc3Q8aW50Pih4KSwgc3RhdGljX2Nhc3Q8aW50Pih5KSk7CisgICAgICAgIFdlYkNvcmU6
OkludFBvaW50IHBvc2l0aW9uSW5WaWV3ID0gV2ViQ29yZTo6SW50UG9pbnQoc3RhdGljX2Nhc3Q8
aW50Pih4KSwgc3RhdGljX2Nhc3Q8aW50Pih5KSk7CiAKICAgICAgICAgYXV0byBwYXJzZWRJbnRl
cmFjdGlvbiA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb25IZWxwZXJzOjpwYXJzZUVu
dW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VJ
bnRlcmFjdGlvbj4obW91c2VJbnRlcmFjdGlvblN0cmluZyk7CiAgICAgICAgIGlmICghcGFyc2Vk
SW50ZXJhY3Rpb24pCkBAIC0xNDQ3LDExICsxNTQ5LDggQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vz
c2lvbjo6cGVyZm9ybU1vdXNlSW50ZXJhY3Rpb24oY29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbnN0
IEoKICAgICAgICAgICAgIGNhbGxiYWNrSW5NYXAoQVVUT01BVElPTl9DT01NQU5EX0VSUk9SX1dJ
VEhfTkFNRShUaW1lb3V0KSk7CiAgICAgICAgIGNhbGxiYWNrSW5NYXAgPSBXVEZNb3ZlKG1vdXNl
RXZlbnRzRmx1c2hlZENhbGxiYWNrKTsKIAotICAgICAgICAvLyBUaGlzIGlzIGNsZWFyZWQgd2hl
biBhbGwgbW91c2UgZXZlbnRzIGFyZSBmbHVzaGVkLgotICAgICAgICBtX3NpbXVsYXRpbmdVc2Vy
SW50ZXJhY3Rpb24gPSB0cnVlOworICAgICAgICBwbGF0Zm9ybVNpbXVsYXRlTW91c2VJbnRlcmFj
dGlvbihwYWdlLCBwYXJzZWRJbnRlcmFjdGlvbi52YWx1ZSgpLCBwcm90b2NvbE1vdXNlQnV0dG9u
VG9XZWJNb3VzZUV2ZW50QnV0dG9uKHBhcnNlZEJ1dHRvbi52YWx1ZSgpKSwgcG9zaXRpb25JblZp
ZXcsIGtleU1vZGlmaWVycyk7CiAKLSAgICAgICAgcGxhdGZvcm1TaW11bGF0ZU1vdXNlSW50ZXJh
Y3Rpb24ocGFnZSwgdmlld1Bvc2l0aW9uLCBwYXJzZWRJbnRlcmFjdGlvbi52YWx1ZSgpLCBwYXJz
ZWRCdXR0b24udmFsdWUoKSwga2V5TW9kaWZpZXJzKTsKLSAgICAgICAgCiAgICAgICAgIC8vIElm
IHRoZSBldmVudCBsb2NhdGlvbiB3YXMgcHJldmlvdXNseSBjbGlwcGVkIGFuZCBkb2VzIG5vdCBo
aXQgdGVzdCBhbnl0aGluZyBpbiB0aGUgd2luZG93LCB0aGVuIGl0IHdpbGwgbm90IGJlIHByb2Nl
c3NlZC4KICAgICAgICAgLy8gRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBwcmUtVzNDIGRyaXZlciBp
bXBsZW1lbnRhdGlvbnMsIGRvbid0IG1ha2UgdGhpcyBhIGhhcmQgZXJyb3I7IGp1c3QgZG8gbm90
aGluZyBzaWxlbnRseS4KICAgICAgICAgLy8gSW4gVzNDLW9ubHkgY29kZSBwYXRocywgd2UgY2Fu
IHJlamVjdCBhbnkgcG9pbnRlciBhY3Rpb25zIHdob3NlIGNvb3JkaW5hdGVzIGFyZSBvdXRzaWRl
IHRoZSB2aWV3cG9ydCByZWN0LgpAQCAtMTQ5OSw3ICsxNTk4LDcgQEAgdm9pZCBXZWJBdXRvbWF0
aW9uU2Vzc2lvbjo6cGVyZm9ybUtleWJvYXJkSW50ZXJhY3Rpb25zKGNvbnN0IFN0cmluZyYgaGFu
ZGxlLCBjb24KICAgICAgICAgICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJP
Ul9BTkRfREVUQUlMUyhJbnZhbGlkUGFyYW1ldGVyLCAiQW4gaW50ZXJhY3Rpb24gaW4gdGhlICdp
bnRlcmFjdGlvbnMnIHBhcmFtZXRlciBoYXMgYW4gaW52YWxpZCAna2V5JyB2YWx1ZS4iKTsKIAog
ICAgICAgICAgICAgYWN0aW9uc1RvUGVyZm9ybS51bmNoZWNrZWRBcHBlbmQoW3RoaXMsIHBhZ2Us
IGludGVyYWN0aW9uVHlwZSwgdmlydHVhbEtleV0gewotICAgICAgICAgICAgICAgIHBsYXRmb3Jt
U2ltdWxhdGVLZXlTdHJva2UoKnBhZ2UsIGludGVyYWN0aW9uVHlwZS52YWx1ZSgpLCB2aXJ0dWFs
S2V5LnZhbHVlKCkpOworICAgICAgICAgICAgICAgIHBsYXRmb3JtU2ltdWxhdGVLZXlib2FyZElu
dGVyYWN0aW9uKCpwYWdlLCBpbnRlcmFjdGlvblR5cGUudmFsdWUoKSwgdmlydHVhbEtleSwgc3Rk
OjpudWxsb3B0KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAKQEAgLTE1NDAsMTQgKzE2
MzksMTY0IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBlcmZvcm1LZXlib2FyZEludGVy
YWN0aW9ucyhjb25zdCBTdHJpbmcmIGhhbmRsZSwgY29uCiAgICAgICAgIGNhbGxiYWNrSW5NYXAo
QVVUT01BVElPTl9DT01NQU5EX0VSUk9SX1dJVEhfTkFNRShUaW1lb3V0KSk7CiAgICAgY2FsbGJh
Y2tJbk1hcCA9IFdURk1vdmUoa2V5Ym9hcmRFdmVudHNGbHVzaGVkQ2FsbGJhY2spOwogCi0gICAg
Ly8gVGhpcyBpcyBjbGVhcmVkIHdoZW4gYWxsIGtleWJvYXJkIGV2ZW50cyBhcmUgZmx1c2hlZC4K
LSAgICBtX3NpbXVsYXRpbmdVc2VySW50ZXJhY3Rpb24gPSB0cnVlOwotCiAgICAgZm9yIChhdXRv
JiBhY3Rpb24gOiBhY3Rpb25zVG9QZXJmb3JtKQogICAgICAgICBhY3Rpb24oKTsKICNlbmRpZiAv
LyBQTEFURk9STShDT0NPQSkgfHwgUExBVEZPUk0oR1RLKQogfQogCitzdGF0aWMgU2ltdWxhdGVk
SW5wdXRTb3VyY2U6OlR5cGUgc2ltdWxhdGVkSW5wdXRTb3VyY2VUeXBlRnJvbVByb3RvY29sU291
cmNlVHlwZShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpJbnB1dFNvdXJjZVR5cGUg
cHJvdG9jb2xUeXBlKQoreworICAgIHN3aXRjaCAocHJvdG9jb2xUeXBlKSB7CisgICAgY2FzZSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpJbnB1dFNvdXJjZVR5cGU6Ok51bGw6Cisg
ICAgICAgIHJldHVybiBTaW11bGF0ZWRJbnB1dFNvdXJjZTo6VHlwZTo6TnVsbDsKKyAgICBjYXNl
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OklucHV0U291cmNlVHlwZTo6S2V5Ym9h
cmQ6CisgICAgICAgIHJldHVybiBTaW11bGF0ZWRJbnB1dFNvdXJjZTo6VHlwZTo6S2V5Ym9hcmQ7
CisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpJbnB1dFNvdXJjZVR5
cGU6Ok1vdXNlOgorICAgICAgICByZXR1cm4gU2ltdWxhdGVkSW5wdXRTb3VyY2U6OlR5cGU6Ok1v
dXNlOworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6SW5wdXRTb3Vy
Y2VUeXBlOjpUb3VjaDoKKyAgICAgICAgcmV0dXJuIFNpbXVsYXRlZElucHV0U291cmNlOjpUeXBl
OjpUb3VjaDsKKyAgICB9Cit9CisKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBlcmZvcm1J
bnRlcmFjdGlvblNlcXVlbmNlKGNvbnN0IFN0cmluZyYgaGFuZGxlLCBjb25zdCBKU09OOjpBcnJh
eSYgaW5wdXRTb3VyY2VzLCBjb25zdCBKU09OOjpBcnJheSYgc3RlcHMsIFJlZjxXZWJBdXRvbWF0
aW9uU2Vzc2lvbjo6UGVyZm9ybUludGVyYWN0aW9uU2VxdWVuY2VDYWxsYmFjaz4mJiBjYWxsYmFj
aykKK3sKKworICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHdlYlBhZ2VQcm94eUZvckhhbmRsZSho
YW5kbGUpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklO
RURfRVJST1IoV2luZG93Tm90Rm91bmQpOworCisgICAgSGFzaE1hcDxTdHJpbmcsIFJlZjxTaW11
bGF0ZWRJbnB1dFNvdXJjZT4+IHNvdXJjZUlkVG9JbnB1dFNvdXJjZU1hcDsKKyAgICBIYXNoTWFw
PFNpbXVsYXRlZElucHV0U291cmNlOjpUeXBlLCBTdHJpbmcsIFdURjo6SW50SGFzaDxTaW11bGF0
ZWRJbnB1dFNvdXJjZTo6VHlwZT4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8U2ltdWxhdGVk
SW5wdXRTb3VyY2U6OlR5cGU+PiB0eXBlVG9Tb3VyY2VJZE1hcDsKKworICAgIGlmICghaW5wdXRT
b3VyY2VzLmxlbmd0aCgpKQorICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJP
Ul9BTkRfREVUQUlMUyhJbnZhbGlkUGFyYW1ldGVyLCAiVGhlIHBhcmFtZXRlciAnaW5wdXRTb3Vy
Y2VzJyB3YXMgbm90IGZvdW5kIG9yIGVtcHR5LiIpOworCisgICAgZm9yIChhdXRvIGlucHV0U291
cmNlIDogaW5wdXRTb3VyY2VzKSB7CisgICAgICAgIFJlZlB0cjxKU09OOjpPYmplY3Q+IGlucHV0
U291cmNlT2JqZWN0OworICAgICAgICBpZiAoIWlucHV0U291cmNlLT5hc09iamVjdChpbnB1dFNv
dXJjZU9iamVjdCkpCisgICAgICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJP
Ul9BTkRfREVUQUlMUyhJbnZhbGlkUGFyYW1ldGVyLCAiQW4gaW5wdXQgc291cmNlIGluIHRoZSAn
aW5wdXRTb3VyY2VzJyBwYXJhbWV0ZXIgd2FzIGludmFsaWQuIik7CisgICAgICAgIAorICAgICAg
ICBTdHJpbmcgc291cmNlSWQ7CisgICAgICAgIGlmICghaW5wdXRTb3VyY2VPYmplY3QtPmdldFN0
cmluZyhBU0NJSUxpdGVyYWwoInNvdXJjZUlkIiksIHNvdXJjZUlkKSkKKyAgICAgICAgICAgIEFT
WU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKEludmFsaWRQYXJhbWV0
ZXIsICJBbiBpbnB1dCBzb3VyY2UgaW4gdGhlICdpbnB1dFNvdXJjZXMnIHBhcmFtZXRlciBpcyBt
aXNzaW5nIGEgJ3NvdXJjZUlkJy4iKTsKKworICAgICAgICBTdHJpbmcgc291cmNlVHlwZTsKKyAg
ICAgICAgaWYgKCFpbnB1dFNvdXJjZU9iamVjdC0+Z2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgic291
cmNlVHlwZSIpLCBzb3VyY2VUeXBlKSkKKyAgICAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVE
RUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKEludmFsaWRQYXJhbWV0ZXIsICJBbiBpbnB1dCBzb3Vy
Y2UgaW4gdGhlICdpbnB1dFNvdXJjZXMnIHBhcmFtZXRlciBpcyBtaXNzaW5nIGEgJ3NvdXJjZVR5
cGUnLiIpOworCisgICAgICAgIGF1dG8gcGFyc2VkSW5wdXRTb3VyY2VUeXBlID0gSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXV0b21hdGlvbkhlbHBlcnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJ
bnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpJbnB1dFNvdXJjZVR5cGU+KHNvdXJjZVR5
cGUpOworICAgICAgICBpZiAoIXBhcnNlZElucHV0U291cmNlVHlwZSkKKyAgICAgICAgICAgIEFT
WU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKEludmFsaWRQYXJhbWV0
ZXIsICJBbiBpbnB1dCBzb3VyY2UgaW4gdGhlICdpbnB1dFNvdXJjZXMnIHBhcmFtZXRlciBoYXMg
YW4gaW52YWxpZCAnc291cmNlVHlwZScuIik7CisKKyAgICAgICAgU2ltdWxhdGVkSW5wdXRTb3Vy
Y2U6OlR5cGUgaW5wdXRTb3VyY2VUeXBlID0gc2ltdWxhdGVkSW5wdXRTb3VyY2VUeXBlRnJvbVBy
b3RvY29sU291cmNlVHlwZSgqcGFyc2VkSW5wdXRTb3VyY2VUeXBlKTsKKyAgICAgICAgaWYgKGlu
cHV0U291cmNlVHlwZSA9PSBTaW11bGF0ZWRJbnB1dFNvdXJjZTo6VHlwZTo6VG91Y2gpCisgICAg
ICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhOb3RJ
bXBsZW1lbnRlZCwgIlRvdWNoIGlucHV0IHNvdXJjZXMgYXJlIG5vdCB5ZXQgc3VwcG9ydGVkLiIp
OworCisgICAgICAgIGlmICh0eXBlVG9Tb3VyY2VJZE1hcC5jb250YWlucyhpbnB1dFNvdXJjZVR5
cGUpKQorICAgICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RF
VEFJTFMoSW52YWxpZFBhcmFtZXRlciwgIlR3byBpbnB1dCBzb3VyY2VzIHdpdGggdGhlIHNhbWUg
dHlwZSB3ZXJlIHNwZWNpZmllZC4iKTsKKyAgICAgICAgaWYgKHNvdXJjZUlkVG9JbnB1dFNvdXJj
ZU1hcC5jb250YWlucyhzb3VyY2VJZCkpCisgICAgICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJF
REVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhJbnZhbGlkUGFyYW1ldGVyLCAiVHdvIGlucHV0IHNv
dXJjZXMgd2l0aCB0aGUgc2FtZSBzb3VyY2VJZCB3ZXJlIHNwZWNpZmllZC4iKTsKKworICAgICAg
ICB0eXBlVG9Tb3VyY2VJZE1hcC5hZGQoaW5wdXRTb3VyY2VUeXBlLCBzb3VyY2VJZCk7CisgICAg
ICAgIHNvdXJjZUlkVG9JbnB1dFNvdXJjZU1hcC5hZGQoc291cmNlSWQsICppbnB1dFNvdXJjZUZv
clR5cGUoaW5wdXRTb3VyY2VUeXBlKSk7CisgICAgfQorCisgICAgVmVjdG9yPFNpbXVsYXRlZElu
cHV0S2V5RnJhbWU+IGtleUZyYW1lczsKKworICAgIGlmICghc3RlcHMubGVuZ3RoKCkpCisgICAg
ICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKEludmFsaWRQ
YXJhbWV0ZXIsICJUaGUgcGFyYW1ldGVyICdzdGVwcycgd2FzIG5vdCBmb3VuZCBvciBlbXB0eS4i
KTsKKworICAgIGZvciAoYXV0byBzdGVwIDogc3RlcHMpIHsKKyAgICAgICAgUmVmUHRyPEpTT046
Ok9iamVjdD4gc3RlcE9iamVjdDsKKyAgICAgICAgaWYgKCFzdGVwLT5hc09iamVjdChzdGVwT2Jq
ZWN0KSkKKyAgICAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9E
RVRBSUxTKEludmFsaWRQYXJhbWV0ZXIsICJBIHN0ZXAgaW4gdGhlICdzdGVwcycgcGFyYW1ldGVy
IHdhcyBub3QgYW4gb2JqZWN0LiIpOworCisgICAgICAgIFJlZlB0cjxKU09OOjpBcnJheT4gc3Rl
cFN0YXRlczsKKyAgICAgICAgaWYgKCFzdGVwT2JqZWN0LT5nZXRBcnJheShBU0NJSUxpdGVyYWwo
InN0YXRlcyIpLCBzdGVwU3RhdGVzKSkKKyAgICAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVE
RUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKEludmFsaWRQYXJhbWV0ZXIsICJBIHN0ZXAgaXMgbWlz
c2luZyB0aGUgJ3N0YXRlcycgcHJvcGVydHkuIik7CisKKyAgICAgICAgVmVjdG9yPFNpbXVsYXRl
ZElucHV0S2V5RnJhbWU6OlN0YXRlRW50cnk+IGVudHJpZXM7CisgICAgICAgIGVudHJpZXMucmVz
ZXJ2ZUNhcGFjaXR5KHN0ZXBTdGF0ZXMtPmxlbmd0aCgpKTsKKworICAgICAgICBmb3IgKGF1dG8g
c3RhdGUgOiAqc3RlcFN0YXRlcykgeworICAgICAgICAgICAgUmVmUHRyPEpTT046Ok9iamVjdD4g
c3RhdGVPYmplY3Q7CisgICAgICAgICAgICBpZiAoIXN0YXRlLT5hc09iamVjdChzdGF0ZU9iamVj
dCkpCisgICAgICAgICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5E
X0RFVEFJTFMoSW52YWxpZFBhcmFtZXRlciwgIkVuY291bnRlcmVkIGEgbm9uLW9iamVjdCBzdGVw
IHN0YXRlLiIpOworCisgICAgICAgICAgICBTdHJpbmcgc291cmNlSWQ7CisgICAgICAgICAgICBp
ZiAoIXN0YXRlT2JqZWN0LT5nZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJzb3VyY2VJZCIpLCBzb3Vy
Y2VJZCkpCisgICAgICAgICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1Jf
QU5EX0RFVEFJTFMoSW52YWxpZFBhcmFtZXRlciwgIlN0ZXAgc3RhdGUgbGFja3MgcmVxdWlyZWQg
J3NvdXJjZUlkJyBwcm9wZXJ0eS4iKTsKKworICAgICAgICAgICAgaWYgKCFzb3VyY2VJZFRvSW5w
dXRTb3VyY2VNYXAuY29udGFpbnMoc291cmNlSWQpKQorICAgICAgICAgICAgICAgIEFTWU5DX0ZB
SUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKEludmFsaWRQYXJhbWV0ZXIsICJV
bmtub3duICdzb3VyY2VJZCcgc3BlY2lmaWVkLiIpOworCisgICAgICAgICAgICBTaW11bGF0ZWRJ
bnB1dFNvdXJjZSYgaW5wdXRTb3VyY2UgPSAqc291cmNlSWRUb0lucHV0U291cmNlTWFwLmdldChz
b3VyY2VJZCk7CisgICAgICAgICAgICBTaW11bGF0ZWRJbnB1dFNvdXJjZVN0YXRlIHNvdXJjZVN0
YXRlIHsgfTsKKworICAgICAgICAgICAgU3RyaW5nIHByZXNzZWRDaGFyS2V5U3RyaW5nOworICAg
ICAgICAgICAgaWYgKHN0YXRlT2JqZWN0LT5nZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJwcmVzc2Vk
Q2hhcktleSIpLCBwcmVzc2VkQ2hhcktleVN0cmluZykpCisgICAgICAgICAgICAgICAgc291cmNl
U3RhdGUucHJlc3NlZENoYXJLZXkgPSBwcmVzc2VkQ2hhcktleVN0cmluZy5jaGFyYWN0ZXJBdCgw
KTsKKworICAgICAgICAgICAgU3RyaW5nIHByZXNzZWRWaXJ0dWFsS2V5U3RyaW5nOworICAgICAg
ICAgICAgaWYgKHN0YXRlT2JqZWN0LT5nZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJwcmVzc2VkVmly
dHVhbEtleSIpLCBwcmVzc2VkVmlydHVhbEtleVN0cmluZykpCisgICAgICAgICAgICAgICAgc291
cmNlU3RhdGUucHJlc3NlZFZpcnR1YWxLZXkgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uSGVscGVyczo6cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkF1dG9tYXRpb246OlZpcnR1YWxLZXk+KHByZXNzZWRWaXJ0dWFsS2V5U3RyaW5nKTsKKworICAg
ICAgICAgICAgU3RyaW5nIHByZXNzZWRCdXR0b25TdHJpbmc7CisgICAgICAgICAgICBpZiAoc3Rh
dGVPYmplY3QtPmdldFN0cmluZyhBU0NJSUxpdGVyYWwoInByZXNzZWRCdXR0b24iKSwgcHJlc3Nl
ZEJ1dHRvblN0cmluZykpIHsKKyAgICAgICAgICAgICAgICBhdXRvIHByb3RvY29sQnV0dG9uID0g
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbkhlbHBlcnM6OnBhcnNlRW51bVZhbHVlRnJv
bVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1dHRvbj4ocHJl
c3NlZEJ1dHRvblN0cmluZyk7CisgICAgICAgICAgICAgICAgc291cmNlU3RhdGUucHJlc3NlZE1v
dXNlQnV0dG9uID0gcHJvdG9jb2xNb3VzZUJ1dHRvblRvV2ViTW91c2VFdmVudEJ1dHRvbihwcm90
b2NvbEJ1dHRvbi52YWx1ZV9vcihJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3Vz
ZUJ1dHRvbjo6Tm9uZSkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBSZWZQdHI8SlNP
Tjo6T2JqZWN0PiBsb2NhdGlvbk9iamVjdDsKKyAgICAgICAgICAgIGlmIChzdGF0ZU9iamVjdC0+
Z2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgibG9jYXRpb24iKSwgbG9jYXRpb25PYmplY3QpKSB7Cisg
ICAgICAgICAgICAgICAgaW50IHgsIHk7CisgICAgICAgICAgICAgICAgaWYgKGxvY2F0aW9uT2Jq
ZWN0LT5nZXRJbnRlZ2VyKEFTQ0lJTGl0ZXJhbCgieCIpLCB4KSAmJiBsb2NhdGlvbk9iamVjdC0+
Z2V0SW50ZWdlcihBU0NJSUxpdGVyYWwoInkiKSwgeSkpCisgICAgICAgICAgICAgICAgICAgIHNv
dXJjZVN0YXRlLmxvY2F0aW9uID0gV2ViQ29yZTo6SW50UG9pbnQoeCwgeSk7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGludCBwYXJzZWREdXJhdGlvbjsKKyAgICAgICAgICAgIGlmIChz
dGF0ZU9iamVjdC0+Z2V0SW50ZWdlcihBU0NJSUxpdGVyYWwoImR1cmF0aW9uIiksIHBhcnNlZER1
cmF0aW9uKSkKKyAgICAgICAgICAgICAgICBzb3VyY2VTdGF0ZS5kdXJhdGlvbiA9IFNlY29uZHM6
OmZyb21NaWxsaXNlY29uZHMocGFyc2VkRHVyYXRpb24pOworCisgICAgICAgICAgICBlbnRyaWVz
LnVuY2hlY2tlZEFwcGVuZChzdGQ6OnBhaXI8U2ltdWxhdGVkSW5wdXRTb3VyY2UmLCBTaW11bGF0
ZWRJbnB1dFNvdXJjZVN0YXRlPiB7IGlucHV0U291cmNlLCBzb3VyY2VTdGF0ZSB9KTsKKyAgICAg
ICAgfQorICAgICAgICAKKyAgICAgICAga2V5RnJhbWVzLmFwcGVuZChTaW11bGF0ZWRJbnB1dEtl
eUZyYW1lKFdURk1vdmUoZW50cmllcykpKTsKKyAgICB9CisKKyAgICBTaW11bGF0ZWRJbnB1dERp
c3BhdGNoZXImIGlucHV0RGlzcGF0Y2hlciA9IGlucHV0RGlzcGF0Y2hlckZvclBhZ2UoKnBhZ2Up
OworICAgIGlmIChpbnB1dERpc3BhdGNoZXIuaXNBY3RpdmUoKSkgeworICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1Jf
QU5EX0RFVEFJTFMoSW50ZXJuYWxFcnJvciwgIkEgcHJldmlvdXMgaW50ZXJhY3Rpb24gaXMgc3Rp
bGwgdW5kZXJ3YXkuIik7CisgICAgfQorCisgICAgaW5wdXREaXNwYXRjaGVyLnJ1bihXVEZNb3Zl
KGtleUZyYW1lcyksIG1faW5wdXRTb3VyY2VzLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShzdGQ6Om9wdGlvbmFsPEF1dG9tYXRp
b25Db21tYW5kRXJyb3I+IGVycm9yKSB7CisgICAgICAgIGlmIChlcnJvcikKKyAgICAgICAgICAg
IGNhbGxiYWNrLT5zZW5kRmFpbHVyZShlcnJvci52YWx1ZSgpLnRvUHJvdG9jb2xTdHJpbmcoKSk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNhbGxiYWNrLT5zZW5kU3VjY2VzcygpOworICAg
IH0pOworfQorCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpjYW5jZWxJbnRlcmFjdGlvblNl
cXVlbmNlKGNvbnN0IFN0cmluZyYgaGFuZGxlLCBSZWY8Q2FuY2VsSW50ZXJhY3Rpb25TZXF1ZW5j
ZUNhbGxiYWNrPiYmIGNhbGxiYWNrKQoreworICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHdlYlBh
Z2VQcm94eUZvckhhbmRsZShoYW5kbGUpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgQVNZTkNf
RkFJTF9XSVRIX1BSRURFRklORURfRVJST1IoV2luZG93Tm90Rm91bmQpOworCisgICAgVmVjdG9y
PFNpbXVsYXRlZElucHV0S2V5RnJhbWU+IGtleUZyYW1lcyh7IFNpbXVsYXRlZElucHV0S2V5RnJh
bWU6OmtleUZyYW1lVG9SZXNldElucHV0U291cmNlcyhtX2lucHV0U291cmNlcykgfSk7CisgICAg
U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyJiBpbnB1dERpc3BhdGNoZXIgPSBpbnB1dERpc3BhdGNo
ZXJGb3JQYWdlKCpwYWdlKTsKKyAgICBpZiAoaW5wdXREaXNwYXRjaGVyLmlzQWN0aXZlKCkpCisg
ICAgICAgIGlucHV0RGlzcGF0Y2hlci5jYW5jZWwoKTsKKyAgICAKKyAgICBpbnB1dERpc3BhdGNo
ZXIucnVuKFdURk1vdmUoa2V5RnJhbWVzKSwgbV9pbnB1dFNvdXJjZXMsIFtwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKHN0ZDo6b3B0
aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4gZXJyb3IpIHsKKyAgICAgICAgaWYgKGVycm9y
KQorICAgICAgICAgICAgY2FsbGJhY2stPnNlbmRGYWlsdXJlKGVycm9yLnZhbHVlKCkudG9Qcm90
b2NvbFN0cmluZygpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY2FsbGJhY2stPnNlbmRT
dWNjZXNzKCk7CisgICAgfSk7Cit9CisKIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnRha2VT
Y3JlZW5zaG90KGNvbnN0IFN0cmluZyYgaGFuZGxlLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsRnJh
bWVIYW5kbGUsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxOb2RlSGFuZGxlLCBjb25zdCBib29sKiBv
cHRpb25hbFNjcm9sbEludG9WaWV3SWZOZWVkZWQsIGNvbnN0IGJvb2wqIG9wdGlvbmFsQ2xpcFRv
Vmlld3BvcnQsIFJlZjxUYWtlU2NyZWVuc2hvdENhbGxiYWNrPiYmIGNhbGxiYWNrKQogewogICAg
IFdlYlBhZ2VQcm94eSogcGFnZSA9IHdlYlBhZ2VQcm94eUZvckhhbmRsZShoYW5kbGUpOwpAQCAt
MTU4OSwxMyArMTgzOCwxMyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpkaWRUYWtlU2Ny
ZWVuc2hvdCh1aW50NjRfdCBjYWxsYmFja0lELCBjb25zdCBTaGFyZWFibAogLy8gUGxhdGZvcm0t
ZGVwZW5kZW50IEltcGxlbWVudGF0aW9uIFN0dWJzLgogCiAjaWYgIVBMQVRGT1JNKE1BQykgJiYg
IVBMQVRGT1JNKEdUSykKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxh
dGVNb3VzZUludGVyYWN0aW9uKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmLCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUludGVyYWN0
aW9uLCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1dHRvbiwgV2ViRXZl
bnQ6Ok1vZGlmaWVycykKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxh
dGVNb3VzZUludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYsIE1vdXNlSW50ZXJhY3Rpb24sIFdlYk1v
dXNlRXZlbnQ6OkJ1dHRvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBXZWJFdmVudDo6TW9k
aWZpZXJzKQogewogfQogI2VuZGlmIC8vICFQTEFURk9STShNQUMpICYmICFQTEFURk9STShHVEsp
CiAKICNpZiAhUExBVEZPUk0oQ09DT0EpICYmICFQTEFURk9STShHVEspCi12b2lkIFdlYkF1dG9t
YXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlS2V5U3Ryb2tlKFdlYlBhZ2VQcm94eSYsIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OktleWJvYXJkSW50ZXJhY3Rpb25UeXBlLCBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5KQordm9pZCBXZWJBdXRv
bWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZUtleWJvYXJkSW50ZXJhY3Rpb24oV2ViUGFn
ZVByb3h5JiwgS2V5Ym9hcmRJbnRlcmFjdGlvbiwgc3RkOjpvcHRpb25hbDxWaXJ0dWFsS2V5Piwg
c3RkOjpvcHRpb25hbDxDaGFyS2V5PikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCmluZGV4IDI0
ZTgxZTcwNTc3OTkyMjZhMGI0YWZiMmFmZWQ0NzUwNjlkNjEyMGEuLmQzNWI1OTFkZmY5Njg5NDVh
MzMzMzM2MTE2ZGJhNDdkMTBkNmYzMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmgKQEAgLTMwLDYgKzMw
LDcgQEAKICNpbmNsdWRlICJBdXRvbWF0aW9uRnJvbnRlbmREaXNwYXRjaGVycy5oIgogI2luY2x1
ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKKyNpbmNsdWRl
ICJTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuaCIKICNpbmNsdWRlICJXZWJFdmVudC5oIgogI2lu
Y2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CkBAIC03Niw3ICs3Nyw3IEBAIGNsYXNzIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHk7
CiBjbGFzcyBXZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKIAotc3RydWN0IEF1
dG9tYXRpb25Db21tYW5kRXJyb3IgeworY2xhc3MgQXV0b21hdGlvbkNvbW1hbmRFcnJvciB7CiBw
dWJsaWM6CiAgICAgQXV0b21hdGlvbkNvbW1hbmRFcnJvcihJbnNwZWN0b3I6OlByb3RvY29sOjpB
dXRvbWF0aW9uOjpFcnJvck1lc3NhZ2UgdHlwZSkKICAgICAgICAgOiB0eXBlKHR5cGUpIHsgfQpA
QCAtOTEsMTEgKzkyLDE0IEBAIHB1YmxpYzoKICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbWVz
c2FnZTsKIH07CiAKK3VzaW5nIEF1dG9tYXRpb25Db21wbGV0aW9uSGFuZGxlciA9IFdURjo6Q29t
cGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+
KT47CisKIGNsYXNzIFdlYkF1dG9tYXRpb25TZXNzaW9uIGZpbmFsIDogcHVibGljIEFQSTo6T2Jq
ZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6QXV0b21hdGlvblNlc3Npb24+LCBwdWJsaWMgSVBD
OjpNZXNzYWdlUmVjZWl2ZXIKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICAgICAsIHB1
YmxpYyBJbnNwZWN0b3I6OlJlbW90ZUF1dG9tYXRpb25UYXJnZXQKICNlbmRpZgogICAgICwgcHVi
bGljIEluc3BlY3Rvcjo6QXV0b21hdGlvbkJhY2tlbmREaXNwYXRjaGVySGFuZGxlcgorICAgICwg
cHVibGljIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6Q2xpZW50CiB7CiBwdWJsaWM6CiAgICAg
V2ViQXV0b21hdGlvblNlc3Npb24oKTsKQEAgLTEzMSw2ICsxMzUsMTAgQEAgcHVibGljOgogI2Vu
ZGlmCiAgICAgdm9pZCB0ZXJtaW5hdGUoKTsKIAorICAgIC8vIFNpbXVsYXRlZElucHV0RGlzcGF0
Y2hlcjo6Q2xpZW50IEFQSQorICAgIHZvaWQgc2ltdWxhdGVNb3VzZUludGVyYWN0aW9uKFdlYlBh
Z2VQcm94eSYsIE1vdXNlSW50ZXJhY3Rpb24sIFdlYk1vdXNlRXZlbnQ6OkJ1dHRvbiwgY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmIGxvY2F0aW9uSW5WaWV3LCBBdXRvbWF0aW9uQ29tcGxldGlvbkhh
bmRsZXImJikgZmluYWw7CisgICAgdm9pZCBzaW11bGF0ZUtleWJvYXJkSW50ZXJhY3Rpb24oV2Vi
UGFnZVByb3h5JiwgS2V5Ym9hcmRJbnRlcmFjdGlvbiwgc3RkOjpvcHRpb25hbDxWaXJ0dWFsS2V5
Piwgc3RkOjpvcHRpb25hbDxDaGFyS2V5PiwgQXV0b21hdGlvbkNvbXBsZXRpb25IYW5kbGVyJiYp
IGZpbmFsOworCiAgICAgLy8gSW5zcGVjdG9yOjpBdXRvbWF0aW9uQmFja2VuZERpc3BhdGNoZXJI
YW5kbGVyIEFQSQogICAgIC8vIE5PVEU6IHRoZSBzZXQgb2YgZGVjbGFyYXRpb25zIGluY2x1ZGVk
IGluIHRoaXMgaW50ZXJmYWNlIGRlcGVuZCBvbiB0aGUgInBsYXRmb3JtIiBwcm9wZXJ0eSBpbiBB
dXRvbWF0aW9uLmpzb24KICAgICAvLyBhbmQgdGhlIC0tcGxhdGZvcm0gYXJndW1lbnQgcGFzc2Vk
IHRvIHRoZSBwcm90b2NvbCBiaW5kaW5ncyBnZW5lcmF0b3IuCkBAIC0xNTEsNiArMTU5LDggQEAg
cHVibGljOgogICAgIHZvaWQgZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24oY29uc3QgU3RyaW5n
JiBicm93c2luZ0NvbnRleHRIYW5kbGUsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxGcmFtZUhhbmRs
ZSwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbiwgY29uc3QgSlNPTjo6QXJyYXkmIGFyZ3VtZW50cywg
Y29uc3QgYm9vbCogb3B0aW9uYWxFeHBlY3RzSW1wbGljaXRDYWxsYmFja0FyZ3VtZW50LCBjb25z
dCBpbnQqIG9wdGlvbmFsQ2FsbGJhY2tUaW1lb3V0LCBSZWY8SW5zcGVjdG9yOjpBdXRvbWF0aW9u
QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpFdmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbkNhbGxi
YWNrPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHBlcmZvcm1Nb3VzZUludGVyYWN0aW9uKGNvbnN0
IFN0cmluZyYgaGFuZGxlLCBjb25zdCBKU09OOjpPYmplY3QmIHJlcXVlc3RlZFBvc2l0aW9uLCBj
b25zdCBTdHJpbmcmIG1vdXNlQnV0dG9uLCBjb25zdCBTdHJpbmcmIG1vdXNlSW50ZXJhY3Rpb24s
IGNvbnN0IEpTT046OkFycmF5JiBrZXlNb2RpZmllcnMsIFJlZjxQZXJmb3JtTW91c2VJbnRlcmFj
dGlvbkNhbGxiYWNrPiYmKSBmaW5hbDsKICAgICB2b2lkIHBlcmZvcm1LZXlib2FyZEludGVyYWN0
aW9ucyhjb25zdCBTdHJpbmcmIGhhbmRsZSwgY29uc3QgSlNPTjo6QXJyYXkmIGludGVyYWN0aW9u
cywgUmVmPFBlcmZvcm1LZXlib2FyZEludGVyYWN0aW9uc0NhbGxiYWNrPiYmKSBvdmVycmlkZTsK
KyAgICB2b2lkIHBlcmZvcm1JbnRlcmFjdGlvblNlcXVlbmNlKGNvbnN0IFN0cmluZyYgaGFuZGxl
LCBjb25zdCBKU09OOjpBcnJheSYgc291cmNlcywgY29uc3QgSlNPTjo6QXJyYXkmIHN0ZXBzLCBS
ZWY8UGVyZm9ybUludGVyYWN0aW9uU2VxdWVuY2VDYWxsYmFjaz4mJikgb3ZlcnJpZGU7CisgICAg
dm9pZCBjYW5jZWxJbnRlcmFjdGlvblNlcXVlbmNlKGNvbnN0IFN0cmluZyYgaGFuZGxlLCBSZWY8
Q2FuY2VsSW50ZXJhY3Rpb25TZXF1ZW5jZUNhbGxiYWNrPiYmKSBvdmVycmlkZTsKICAgICB2b2lk
IHRha2VTY3JlZW5zaG90KGNvbnN0IFN0cmluZyYgaGFuZGxlLCBjb25zdCBTdHJpbmcqIG9wdGlv
bmFsRnJhbWVIYW5kbGUsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxOb2RlSGFuZGxlLCBjb25zdCBi
b29sKiBvcHRpb25hbFNjcm9sbEludG9WaWV3SWZOZWVkZWQsIGNvbnN0IGJvb2wqIG9wdGlvbmFs
Q2xpcFRvVmlld3BvcnQsIFJlZjxUYWtlU2NyZWVuc2hvdENhbGxiYWNrPiYmKSBvdmVycmlkZTsK
ICAgICB2b2lkIHJlc29sdmVDaGlsZEZyYW1lSGFuZGxlKGNvbnN0IFN0cmluZyYgYnJvd3NpbmdD
b250ZXh0SGFuZGxlLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsRnJhbWVIYW5kbGUsIGNvbnN0IGlu
dCogb3B0aW9uYWxPcmRpbmFsLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsTmFtZSwgY29uc3QgU3Ry
aW5nKiBvcHRpb25hbE5vZGVIYW5kbGUsIFJlZjxSZXNvbHZlQ2hpbGRGcmFtZUhhbmRsZUNhbGxi
YWNrPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHJlc29sdmVQYXJlbnRGcmFtZUhhbmRsZShjb25z
dCBTdHJpbmcmIGJyb3dzaW5nQ29udGV4dEhhbmRsZSwgY29uc3QgU3RyaW5nJiBmcmFtZUhhbmRs
ZSwgUmVmPFJlc29sdmVQYXJlbnRGcmFtZUhhbmRsZUNhbGxiYWNrPiYmKSBvdmVycmlkZTsKQEAg
LTE3NSw3ICsxODUsMTAgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICAvLyBFdmVudCBTaW11bGF0
aW9uIFN1cHBvcnQuCi0gICAgYm9vbCBpc1NpbXVsYXRpbmdVc2VySW50ZXJhY3Rpb24oKSBjb25z
dCB7IHJldHVybiBtX3NpbXVsYXRpbmdVc2VySW50ZXJhY3Rpb247IH0KKyAgICBib29sIGlzU2lt
dWxhdGluZ1VzZXJJbnRlcmFjdGlvbigpIGNvbnN0OworICAgIFNpbXVsYXRlZElucHV0RGlzcGF0
Y2hlciYgaW5wdXREaXNwYXRjaGVyRm9yUGFnZShXZWJQYWdlUHJveHkmKTsKKyAgICBTaW11bGF0
ZWRJbnB1dFNvdXJjZSogaW5wdXRTb3VyY2VGb3JUeXBlKFNpbXVsYXRlZElucHV0U291cmNlOjpU
eXBlKSBjb25zdDsKKwogI2lmIFBMQVRGT1JNKE1BQykKICAgICBib29sIHdhc0V2ZW50U3ludGhl
c2l6ZWRGb3JBdXRvbWF0aW9uKE5TRXZlbnQgKik7CiAgICAgdm9pZCBtYXJrRXZlbnRBc1N5bnRo
ZXNpemVkRm9yQXV0b21hdGlvbihOU0V2ZW50ICopOwpAQCAtMjE1LDkgKzIyOCw5IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBkaWREZWxldGVDb29raWUodWludDY0X3QgY2FsbGJhY2tJRCwgY29uc3Qg
U3RyaW5nJiBlcnJvclR5cGUpOwogCiAgICAgLy8gUGxhdGZvcm0tZGVwZW5kZW50IGltcGxlbWVu
dGF0aW9ucy4KLSAgICB2b2lkIHBsYXRmb3JtU2ltdWxhdGVNb3VzZUludGVyYWN0aW9uKFdlYlBh
Z2VQcm94eSYsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiB2aWV3UG9zaXRpb24sIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlSW50ZXJhY3Rpb24sIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9uLCBXZWJFdmVudDo6TW9kaWZpZXJzKTsKLSAg
ICAvLyBTaW11bGF0ZXMgYSBzaW5nbGUgdmlydHVhbCBrZXkgYmVpbmcgcHJlc3NlZCwgc3VjaCBh
cyBDb250cm9sLCBGLWtleXMsIE51bXBhZCBrZXlzLCBldGMuIGFzIGFsbG93ZWQgYnkgdGhlIHBy
b3RvY29sLgotICAgIHZvaWQgcGxhdGZvcm1TaW11bGF0ZUtleVN0cm9rZShXZWJQYWdlUHJveHkm
LCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpLZXlib2FyZEludGVyYWN0aW9uVHlw
ZSwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleSk7CisgICAgdm9p
ZCBwbGF0Zm9ybVNpbXVsYXRlTW91c2VJbnRlcmFjdGlvbihXZWJQYWdlUHJveHkmLCBNb3VzZUlu
dGVyYWN0aW9uLCBXZWJNb3VzZUV2ZW50OjpCdXR0b24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiBsb2NhdGlvbkluVmlldywgV2ViRXZlbnQ6Ok1vZGlmaWVycyBrZXlNb2RpZmllcnMpOworICAg
IC8vIFNpbXVsYXRlcyBhIHNpbmdsZSB2aXJ0dWFsIG9yIGNoYXIga2V5IGJlaW5nIHByZXNzZWQv
cmVsZWFzZWQsIHN1Y2ggYXMgJ2EnLCBDb250cm9sLCBGLWtleXMsIE51bXBhZCBrZXlzLCBldGMu
IGFzIGFsbG93ZWQgYnkgdGhlIHByb3RvY29sLgorICAgIHZvaWQgcGxhdGZvcm1TaW11bGF0ZUtl
eWJvYXJkSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiwgS2V5Ym9hcmRJbnRlcmFjdGlvbiwgc3Rk
OjpvcHRpb25hbDxWaXJ0dWFsS2V5Piwgc3RkOjpvcHRpb25hbDxDaGFyS2V5Pik7CiAgICAgLy8g
U2ltdWxhdGVzIGtleSBwcmVzc2VzIHRvIHByb2R1Y2UgdGhlIGNvZGVwb2ludHMgaW4gYSBzdHJp
bmcuIE9uZSBvciBtb3JlIGNvZGUgcG9pbnRzIGFyZSBkZWxpdmVyZWQgYXRvbWljYWxseSBhdCBn
cmFwaGVtZSBjbHVzdGVyIGJvdW5kYXJpZXMuCiAgICAgdm9pZCBwbGF0Zm9ybVNpbXVsYXRlS2V5
U2VxdWVuY2UoV2ViUGFnZVByb3h5JiwgY29uc3QgU3RyaW5nJik7CiAgICAgLy8gR2V0IGJhc2U2
NCBlbmNvZGVkIFBORyBkYXRhIGZyb20gYSBiaXRtYXAuCkBAIC0yODksMTMgKzMwMiwxNSBAQCBw
cml2YXRlOgogCiAgICAgYm9vbCBtX3Blcm1pc3Npb25Gb3JHZXRVc2VyTWVkaWEgeyB0cnVlIH07
CiAKLSAgICAvLyBUcnVlIGlmIGEgc3ludGhlc2l6ZWQga2V5IGV2ZW50IGlzIHN0aWxsIGJlaW5n
IHByb2Nlc3NlZC4KLSAgICBib29sIG1fc2ltdWxhdGluZ1VzZXJJbnRlcmFjdGlvbiB7IGZhbHNl
IH07Ci0KICAgICAvLyBLZWVwIHRyYWNrIG9mIGN1cnJlbnRseSBhY3RpdmUgbW9kaWZpZXJzIGFj
cm9zcyBtdWx0aXBsZSBrZXlzdHJva2VzLgogICAgIC8vIE1vc3QgcGxhdGZvcm1zIGRvIG5vdCB0
cmFjayBjdXJyZW50IG1vZGlmaWVycyBmcm9tIHN5bnRoZXNpemVkIGV2ZW50cy4KICAgICB1bnNp
Z25lZCBtX2N1cnJlbnRNb2RpZmllcnMgeyAwIH07CiAKKyAgICAvLyBTaW11bGF0ZWRJbnB1dERp
c3BhdGNoZXIgQVBJcyB0YWtlIGEgc2V0IG9mIGlucHV0IHNvdXJjZXMuIFdlIGFsc28gaW50ZXJu
IHRoZXNlCisgICAgLy8gc28gdGhhdCBwcmV2aW91cyBpbnB1dCBzb3VyY2Ugc3RhdGUgaXMgdXNl
ZCBhcyBpbml0aWFsIHN0YXRlIGZvciBsYXRlciBjb21tYW5kcy4KKyAgICBIYXNoU2V0PFJlZjxT
aW11bGF0ZWRJbnB1dFNvdXJjZT4+IG1faW5wdXRTb3VyY2VzOworICAgIEhhc2hNYXA8dWludDY0
X3QsIFJlZjxTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI+PiBtX2lucHV0RGlzcGF0Y2hlcnNCeVBh
Z2U7CisKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICAgICBJbnNwZWN0b3I6OkZyb250
ZW5kQ2hhbm5lbCogbV9yZW1vdGVDaGFubmVsIHsgbnVsbHB0ciB9OwogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2d0ay9XZWJBdXRvbWF0aW9u
U2Vzc2lvbkd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2d0ay9X
ZWJBdXRvbWF0aW9uU2Vzc2lvbkd0ay5jcHAKaW5kZXggMjhjZjc5NDhjODNiN2NkMTkyYzAzYzA3
YTUyYTkwMWRiNjhkZWNkYS4uNDdlZGQxY2E4OTc1OWQ0ZTc2NGQ1ODU2MmNhYjZiZTJmNGM2N2Ew
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9ndGsvV2Vi
QXV0b21hdGlvblNlc3Npb25HdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1
dG9tYXRpb24vZ3RrL1dlYkF1dG9tYXRpb25TZXNzaW9uR3RrLmNwcApAQCAtNDgsMTUgKzQ4LDE1
IEBAIHN0YXRpYyB1bnNpZ25lZCBtb2RpZmllcnNUb0V2ZW50U3RhdGUoV2ViRXZlbnQ6Ok1vZGlm
aWVycyBtb2RpZmllcnMpCiAgICAgcmV0dXJuIHN0YXRlOwogfQogCi1zdGF0aWMgdW5zaWduZWQg
bW91c2VCdXR0b25Ub0dka0J1dHRvbihJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpN
b3VzZUJ1dHRvbiBidXR0b24pCitzdGF0aWMgdW5zaWduZWQgbW91c2VCdXR0b25Ub0dka0J1dHRv
bihXZWJNb3VzZUV2ZW50OjpCdXR0b24gYnV0dG9uKQogewogICAgIHN3aXRjaCAoYnV0dG9uKSB7
Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1dHRvbjo6
Tm9uZToKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0
dG9uOjpMZWZ0OgorICAgIGNhc2UgV2ViTW91c2VFdmVudDo6Tm9CdXR0b246CisgICAgY2FzZSBX
ZWJNb3VzZUV2ZW50OjpMZWZ0QnV0dG9uOgogICAgICAgICByZXR1cm4gR0RLX0JVVFRPTl9QUklN
QVJZOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VCdXR0
b246Ok1pZGRsZToKKyAgICBjYXNlIFdlYk1vdXNlRXZlbnQ6Ok1pZGRsZUJ1dHRvbjoKICAgICAg
ICAgcmV0dXJuIEdES19CVVRUT05fTUlERExFOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXV0b21hdGlvbjo6TW91c2VCdXR0b246OlJpZ2h0OgorICAgIGNhc2UgV2ViTW91c2VFdmVu
dDo6UmlnaHRCdXR0b246CiAgICAgICAgIHJldHVybiBHREtfQlVUVE9OX1NFQ09OREFSWTsKICAg
ICB9CiAgICAgcmV0dXJuIEdES19CVVRUT05fUFJJTUFSWTsKQEAgLTEwMSwzMCArMTAxLDMwIEBA
IHN0YXRpYyB2b2lkIGRvTW90aW9uRXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIGNvbnN0IFdlYkNv
cmU6OkludFBvaW50JiBsb2NhdGlvbiwKICAgICBndGtfbWFpbl9kb19ldmVudChldmVudC5nZXQo
KSk7CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVNb3Vz
ZUludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
IHZpZXdQb3NpdGlvbiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VJbnRl
cmFjdGlvbiBpbnRlcmFjdGlvbiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91
c2VCdXR0b24gYnV0dG9uLCBXZWJFdmVudDo6TW9kaWZpZXJzIGtleU1vZGlmaWVycykKK3ZvaWQg
V2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVNb3VzZUludGVyYWN0aW9uKFdl
YlBhZ2VQcm94eSYgcGFnZSwgTW91c2VJbnRlcmFjdGlvbiBpbnRlcmFjdGlvbiwgV2ViTW91c2VF
dmVudDo6QnV0dG9uIGJ1dHRvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGxvY2F0aW9uSW5W
aWV3LCBXZWJFdmVudDo6TW9kaWZpZXJzIGtleU1vZGlmaWVycykKIHsKICAgICB1bnNpZ25lZCBn
ZGtCdXR0b24gPSBtb3VzZUJ1dHRvblRvR2RrQnV0dG9uKGJ1dHRvbik7CiAgICAgdW5zaWduZWQg
c3RhdGUgPSBtb2RpZmllcnNUb0V2ZW50U3RhdGUoa2V5TW9kaWZpZXJzKTsKIAogICAgIHN3aXRj
aCAoaW50ZXJhY3Rpb24pIHsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRp
b246Ok1vdXNlSW50ZXJhY3Rpb246Ok1vdmU6Ci0gICAgICAgIGRvTW90aW9uRXZlbnQocGFnZS52
aWV3V2lkZ2V0KCksIHZpZXdQb3NpdGlvbiwgc3RhdGUpOworICAgIGNhc2UgTW91c2VJbnRlcmFj
dGlvbjo6TW92ZToKKyAgICAgICAgZG9Nb3Rpb25FdmVudChwYWdlLnZpZXdXaWRnZXQoKSwgbG9j
YXRpb25JblZpZXcsIHN0YXRlKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUludGVyYWN0aW9uOjpEb3duOgotICAgICAgICBk
b01vdXNlRXZlbnQoR0RLX0JVVFRPTl9QUkVTUywgcGFnZS52aWV3V2lkZ2V0KCksIHZpZXdQb3Np
dGlvbiwgZ2RrQnV0dG9uLCBzdGF0ZSk7CisgICAgY2FzZSBNb3VzZUludGVyYWN0aW9uOjpEb3du
OgorICAgICAgICBkb01vdXNlRXZlbnQoR0RLX0JVVFRPTl9QUkVTUywgcGFnZS52aWV3V2lkZ2V0
KCksIGxvY2F0aW9uSW5WaWV3LCBnZGtCdXR0b24sIHN0YXRlKTsKICAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUludGVyYWN0aW9u
OjpVcDoKLSAgICAgICAgZG9Nb3VzZUV2ZW50KEdES19CVVRUT05fUkVMRUFTRSwgcGFnZS52aWV3
V2lkZ2V0KCksIHZpZXdQb3NpdGlvbiwgZ2RrQnV0dG9uLCBzdGF0ZSk7CisgICAgY2FzZSBNb3Vz
ZUludGVyYWN0aW9uOjpVcDoKKyAgICAgICAgZG9Nb3VzZUV2ZW50KEdES19CVVRUT05fUkVMRUFT
RSwgcGFnZS52aWV3V2lkZ2V0KCksIGxvY2F0aW9uSW5WaWV3LCBnZGtCdXR0b24sIHN0YXRlKTsK
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
OjpNb3VzZUludGVyYWN0aW9uOjpTaW5nbGVDbGljazoKLSAgICAgICAgZG9Nb3VzZUV2ZW50KEdE
S19CVVRUT05fUFJFU1MsIHBhZ2Uudmlld1dpZGdldCgpLCB2aWV3UG9zaXRpb24sIGdka0J1dHRv
biwgc3RhdGUpOwotICAgICAgICBkb01vdXNlRXZlbnQoR0RLX0JVVFRPTl9SRUxFQVNFLCBwYWdl
LnZpZXdXaWRnZXQoKSwgdmlld1Bvc2l0aW9uLCBnZGtCdXR0b24sIHN0YXRlKTsKKyAgICBjYXNl
IE1vdXNlSW50ZXJhY3Rpb246OlNpbmdsZUNsaWNrOgorICAgICAgICBkb01vdXNlRXZlbnQoR0RL
X0JVVFRPTl9QUkVTUywgcGFnZS52aWV3V2lkZ2V0KCksIGxvY2F0aW9uSW5WaWV3LCBnZGtCdXR0
b24sIHN0YXRlKTsKKyAgICAgICAgZG9Nb3VzZUV2ZW50KEdES19CVVRUT05fUkVMRUFTRSwgcGFn
ZS52aWV3V2lkZ2V0KCksIGxvY2F0aW9uSW5WaWV3LCBnZGtCdXR0b24sIHN0YXRlKTsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3Vz
ZUludGVyYWN0aW9uOjpEb3VibGVDbGljazoKLSAgICAgICAgZG9Nb3VzZUV2ZW50KEdES19CVVRU
T05fUFJFU1MsIHBhZ2Uudmlld1dpZGdldCgpLCB2aWV3UG9zaXRpb24sIGdka0J1dHRvbiwgc3Rh
dGUpOwotICAgICAgICBkb01vdXNlRXZlbnQoR0RLX0JVVFRPTl9SRUxFQVNFLCBwYWdlLnZpZXdX
aWRnZXQoKSwgdmlld1Bvc2l0aW9uLCBnZGtCdXR0b24sIHN0YXRlKTsKLSAgICAgICAgZG9Nb3Vz
ZUV2ZW50KEdES19CVVRUT05fUFJFU1MsIHBhZ2Uudmlld1dpZGdldCgpLCB2aWV3UG9zaXRpb24s
IGdka0J1dHRvbiwgc3RhdGUpOwotICAgICAgICBkb01vdXNlRXZlbnQoR0RLX0JVVFRPTl9SRUxF
QVNFLCBwYWdlLnZpZXdXaWRnZXQoKSwgdmlld1Bvc2l0aW9uLCBnZGtCdXR0b24sIHN0YXRlKTsK
KyAgICBjYXNlIE1vdXNlSW50ZXJhY3Rpb246OkRvdWJsZUNsaWNrOgorICAgICAgICBkb01vdXNl
RXZlbnQoR0RLX0JVVFRPTl9QUkVTUywgcGFnZS52aWV3V2lkZ2V0KCksIGxvY2F0aW9uSW5WaWV3
LCBnZGtCdXR0b24sIHN0YXRlKTsKKyAgICAgICAgZG9Nb3VzZUV2ZW50KEdES19CVVRUT05fUkVM
RUFTRSwgcGFnZS52aWV3V2lkZ2V0KCksIGxvY2F0aW9uSW5WaWV3LCBnZGtCdXR0b24sIHN0YXRl
KTsKKyAgICAgICAgZG9Nb3VzZUV2ZW50KEdES19CVVRUT05fUFJFU1MsIHBhZ2Uudmlld1dpZGdl
dCgpLCBsb2NhdGlvbkluVmlldywgZ2RrQnV0dG9uLCBzdGF0ZSk7CisgICAgICAgIGRvTW91c2VF
dmVudChHREtfQlVUVE9OX1JFTEVBU0UsIHBhZ2Uudmlld1dpZGdldCgpLCBsb2NhdGlvbkluVmll
dywgZ2RrQnV0dG9uLCBzdGF0ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KQEAgLTI4MCwy
MCArMjgwLDI3IEBAIHN0YXRpYyBpbnQga2V5Q29kZUZvclZpcnR1YWxLZXkoSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleSBrZXksCiAgICAgcmV0dXJuIDA7CiB9CiAK
LXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVLZXlTdHJva2UoV2Vi
UGFnZVByb3h5JiBwYWdlLCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpLZXlib2Fy
ZEludGVyYWN0aW9uVHlwZSBpbnRlcmFjdGlvbiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21h
dGlvbjo6VmlydHVhbEtleSBrZXkpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9y
bVNpbXVsYXRlS2V5Ym9hcmRJbnRlcmFjdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIEtleWJvYXJk
SW50ZXJhY3Rpb24gaW50ZXJhY3Rpb24sIHN0ZDo6b3B0aW9uYWw8VmlydHVhbEtleT4gdmlydHVh
bEtleSwgc3RkOjpvcHRpb25hbDxDaGFyS2V5PiBjaGFyS2V5KQogeworICAgIEFTU0VSVCh2aXJ0
dWFsS2V5Lmhhc192YWx1ZSgpIHx8IGNoYXJLZXkuaGFzX3ZhbHVlKCkpOworCiAgICAgR2RrTW9k
aWZpZXJUeXBlIHVwZGF0ZVN0YXRlOwotICAgIGF1dG8ga2V5Q29kZSA9IGtleUNvZGVGb3JWaXJ0
dWFsS2V5KGtleSwgdXBkYXRlU3RhdGUpOworICAgIHVuc2lnbmVkIGtleUNvZGU7CisgICAgaWYg
KHZpcnR1YWxLZXkpCisgICAgICAgIGtleUNvZGUgPSBrZXlDb2RlRm9yVmlydHVhbEtleSh2aXJ0
dWFsS2V5LnZhbHVlKCksIHVwZGF0ZVN0YXRlKTsKKyAgICBlbHNlCisgICAgICAgIGtleUNvZGUg
PSBnZGtfdW5pY29kZV90b19rZXl2YWwoZ191dGY4X2dldF9jaGFyKCZjaGFyS2V5LnZhbHVlKCkp
KTsKKwogICAgIHN3aXRjaCAoaW50ZXJhY3Rpb24pIHsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246OktleWJvYXJkSW50ZXJhY3Rpb25UeXBlOjpLZXlQcmVzczoKKyAg
ICBjYXNlIEtleWJvYXJkSW50ZXJhY3Rpb246OktleVByZXNzOgogICAgICAgICBtX2N1cnJlbnRN
b2RpZmllcnMgfD0gdXBkYXRlU3RhdGU7CiAgICAgICAgIGRvS2V5U3Ryb2tlRXZlbnQoR0RLX0tF
WV9QUkVTUywgcGFnZS52aWV3V2lkZ2V0KCksIGtleUNvZGUsIG1fY3VycmVudE1vZGlmaWVycyk7
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlv
bjo6S2V5Ym9hcmRJbnRlcmFjdGlvblR5cGU6OktleVJlbGVhc2U6CisgICAgY2FzZSBLZXlib2Fy
ZEludGVyYWN0aW9uOjpLZXlSZWxlYXNlOgogICAgICAgICBtX2N1cnJlbnRNb2RpZmllcnMgJj0g
fnVwZGF0ZVN0YXRlOwogICAgICAgICBkb0tleVN0cm9rZUV2ZW50KEdES19LRVlfUkVMRUFTRSwg
cGFnZS52aWV3V2lkZ2V0KCksIGtleUNvZGUsIG1fY3VycmVudE1vZGlmaWVycyk7CiAgICAgICAg
IGJyZWFrOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6S2V5Ym9h
cmRJbnRlcmFjdGlvblR5cGU6Okluc2VydEJ5S2V5OgorICAgIGNhc2UgS2V5Ym9hcmRJbnRlcmFj
dGlvbjo6SW5zZXJ0QnlLZXk6CiAgICAgICAgIGRvS2V5U3Ryb2tlRXZlbnQoR0RLX0tFWV9QUkVT
UywgcGFnZS52aWV3V2lkZ2V0KCksIGtleUNvZGUsIG1fY3VycmVudE1vZGlmaWVycywgdHJ1ZSk7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0F1dG9tYXRpb24vaW9zL1dlYkF1dG9tYXRpb25TZXNzaW9uSU9TLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9pb3MvV2ViQXV0b21hdGlvblNlc3Npb25JT1MubW0K
aW5kZXggNWY3NGFkZWRmNzVmZTU2OTJjMjhkODQ0ODU5MmYyMjM1NGI2OGQ2Yy4uMGRlMzliNjk5
M2IyOTIzZjg5MWU5ODQ2N2U1ZGZlNWFmYjNhZjlhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQXV0b21hdGlvbi9pb3MvV2ViQXV0b21hdGlvblNlc3Npb25JT1MubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9pb3MvV2ViQXV0b21hdGlvblNl
c3Npb25JT1MubW0KQEAgLTY1LDI2ICs2NSwyOCBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9u
OjpzZW5kU3ludGhlc2l6ZWRFdmVudHNUb1BhZ2UoV2ViUGFnZVByb3h5JiBwYWdlLCBOU0Fycgog
CiAjcHJhZ21hIG1hcmsgQ29tbWFuZHMgZm9yIFBsYXRmb3JtOiAnaU9TJwogCi12b2lkIFdlYkF1
dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlS2V5U3Ryb2tlKFdlYlBhZ2VQcm94eSYg
cGFnZSwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6S2V5Ym9hcmRJbnRlcmFjdGlv
blR5cGUgaW50ZXJhY3Rpb24sIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1
YWxLZXkga2V5KQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZUtl
eWJvYXJkSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBLZXlib2FyZEludGVyYWN0aW9u
IGludGVyYWN0aW9uLCBzdGQ6Om9wdGlvbmFsPFZpcnR1YWxLZXk+IHZpcnR1YWxLZXksIHN0ZDo6
b3B0aW9uYWw8Q2hhcktleT4gY2hhcktleSkKIHsKKyAgICBBU1NFUlQodmlydHVhbEtleS5oYXNf
dmFsdWUoKSB8fCBjaGFyS2V5Lmhhc192YWx1ZSgpKTsKKwogICAgIC8vIFRoZSBtb2RpZmllcnMg
Y2hhbmdlZCBieSB0aGUgdmlydHVhbCBrZXkgd2hlbiBpdCBpcyBwcmVzc2VkIG9yIHJlbGVhc2Vk
LgogICAgIFdlYkV2ZW50RmxhZ3MgY2hhbmdlZE1vZGlmaWVycyA9IDA7CiAKICAgICAvLyBGaWd1
cmUgb3V0IHRoZSBlZmZlY3RzIG9mIHN0aWNreSBtb2RpZmllcnMuCiAgICAgc3dpdGNoIChrZXkp
IHsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6
OlNoaWZ0OgorICAgIGNhc2UgVmlydHVhbEtleTo6U2hpZnQ6CiAgICAgICAgIGNoYW5nZWRNb2Rp
ZmllcnMgfD0gV2ViRXZlbnRGbGFnTWFza1NoaWZ0OwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkNvbnRyb2w6Cisg
ICAgY2FzZSBWaXJ0dWFsS2V5OjpDb250cm9sOgogICAgICAgICBjaGFuZ2VkTW9kaWZpZXJzIHw9
IFdlYkV2ZW50RmxhZ01hc2tDb250cm9sOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkFsdGVybmF0ZToKKyAgICBj
YXNlIFZpcnR1YWxLZXk6OkFsdGVybmF0ZToKICAgICAgICAgY2hhbmdlZE1vZGlmaWVycyB8PSBX
ZWJFdmVudEZsYWdNYXNrQWx0ZXJuYXRlOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok1ldGE6CisgICAgY2FzZSBW
aXJ0dWFsS2V5OjpNZXRhOgogICAgICAgICAvLyBUaGUgJ21ldGEnIGtleSBkb2VzIG5vdCBleGlz
dCBvbiBBcHBsZSBrZXlib2FyZHMgYW5kIGlzIHVzdWFsbHkKICAgICAgICAgLy8gbWFwcGVkIHRv
IHRoZSBDb21tYW5kIGtleSB3aGVuIHVzaW5nIHRoaXJkLXBhcnR5IGtleWJvYXJkcy4KLSAgICBj
YXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkNvbW1hbmQ6
CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpDb21tYW5kOgogICAgICAgICBjaGFuZ2VkTW9kaWZpZXJz
IHw9IFdlYkV2ZW50RmxhZ01hc2tDb21tYW5kOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0
OgpAQCAtOTQsOCArOTYsMTggQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1T
aW11bGF0ZUtleVN0cm9rZShXZWJQYWdlUHJveHkmIHBhZ2UsIEluc3BlY3QKICAgICAvLyBVSUtp
dCBkb2VzIG5vdCBzZW5kIGtleSBjb2RlcyBmb3IgdmlydHVhbCBrZXlzIGV2ZW4gZm9yIGEgaGFy
ZHdhcmUga2V5Ym9hcmQuCiAgICAgLy8gSW5zdGVhZCwgaXQgc2VuZHMgc2luZ2xlIHVuaWNoYXJz
IGFuZCBXZWJDb3JlIG1hcHMgdGhlc2UgdG8gIndpbmRvd3MiIGtleSBjb2Rlcy4KICAgICAvLyBT
eW50aGVzaXplIGEgc2luZ2xlIHVuaWNoYXIgc3VjaCB0aGF0IHRoZSBjb3JyZWN0IGtleSBjb2Rl
IGlzIGluZmVycmVkLgotICAgIHN0ZDo6b3B0aW9uYWw8dW5pY2hhcj4gY2hhckNvZGUgPSBjaGFy
Q29kZUZvclZpcnR1YWxLZXkoa2V5KTsKLSAgICBzdGQ6Om9wdGlvbmFsPHVuaWNoYXI+IGNoYXJD
b2RlSWdub3JpbmdNb2RpZmllcnMgPSBjaGFyQ29kZUlnbm9yaW5nTW9kaWZpZXJzRm9yVmlydHVh
bEtleShrZXkpOworICAgIHN0ZDo6b3B0aW9uYWw8dW5pY2hhcj4gY2hhckNvZGU7CisgICAgc3Rk
OjpvcHRpb25hbDx1bmljaGFyPiBjaGFyQ29kZUlnbm9yaW5nTW9kaWZpZXJzOworCisgICAgaWYg
KHZpcnR1YWxLZXkuaGFzX3ZhbHVlKCkpIHsKKyAgICAgICAgY2hhckNvZGUgPSBjaGFyQ29kZUZv
clZpcnR1YWxLZXkodmlydHVhbEtleS52YWx1ZSgpKTsKKyAgICAgICAgY2hhckNvZGVJZ25vcmlu
Z01vZGlmaWVycyA9IGNoYXJDb2RlSWdub3JpbmdNb2RpZmllcnNGb3JWaXJ0dWFsS2V5KHZpcnR1
YWxLZXkudmFsdWUoKSk7CisgICAgfQorCisgICAgaWYgKGNoYXJLZXkuaGFzX3ZhbHVlKCkpIHsK
KyAgICAgICAgY2hhckNvZGUgPSAodW5pY2hhciljaGFyS2V5LnZhbHVlKCk7CisgICAgICAgIGNo
YXJDb2RlSWdub3JpbmdNb2RpZmllcnMgPSAodW5pY2hhciljaGFyS2V5LnZhbHVlKCk7CisgICAg
fQogCiAgICAgLy8gRklYTUU6IGNvbnNpZGVyIHVzaW5nIFVJS2l0IFNQSSB0byBub3JtYWxpemUg
J2NoYXJhY3RlcnMnLCBpLmUuLCBjaGFuZ2luZyAqIHRvIFNoaWZ0LTgsCiAgICAgLy8gYW5kIHBh
c3NpbmcgdGhhdCBpbiB0byBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMuIFRoaXMgaXMgcHJv
YmFibHkgbm90IHdvcnRoIHRoZSB0cm91YmxlCkBAIC0xMTUsMTkgKzEyNywxOSBAQCB2b2lkIFdl
YkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlS2V5U3Ryb2tlKFdlYlBhZ2VQcm94
eSYgcGFnZSwgSW5zcGVjdAogICAgIGF1dG8gZXZlbnRzVG9CZVNlbnQgPSBhZG9wdE5TKFtbTlNN
dXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKIAogICAgIHN3aXRjaCAoaW50ZXJhY3Rpb24pIHsK
LSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OktleWJvYXJkSW50ZXJh
Y3Rpb25UeXBlOjpLZXlQcmVzczogeworICAgIGNhc2UgS2V5Ym9hcmRJbnRlcmFjdGlvbjo6S2V5
UHJlc3M6IHsKICAgICAgICAgbV9jdXJyZW50TW9kaWZpZXJzIHw9IGNoYW5nZWRNb2RpZmllcnM7
CiAKICAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbW1s6OldlYkV2ZW50IGFsbG9j
XSBpbml0V2l0aEtleUV2ZW50VHlwZTpXZWJFdmVudEtleURvd24gdGltZVN0YW1wOkNGQWJzb2x1
dGVUaW1lR2V0Q3VycmVudCgpIGNoYXJhY3RlcnM6Y2hhcmFjdGVycyBjaGFyYWN0ZXJzSWdub3Jp
bmdNb2RpZmllcnM6dW5tb2RpZmllZENoYXJhY3RlcnMgbW9kaWZpZXJzOm1fY3VycmVudE1vZGlm
aWVycyBpc1JlcGVhdGluZzpOTyB3aXRoRmxhZ3M6aW5wdXRGbGFncyB3aXRoSW5wdXRNYW5hZ2Vy
SGludDpuaWwga2V5Q29kZTprZXlDb2RlIGlzVGFiS2V5OmlzVGFiS2V5XSBhdXRvcmVsZWFzZV1d
OwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpB
dXRvbWF0aW9uOjpLZXlib2FyZEludGVyYWN0aW9uVHlwZTo6S2V5UmVsZWFzZTogeworICAgIGNh
c2UgS2V5Ym9hcmRJbnRlcmFjdGlvbjo6S2V5UmVsZWFzZTogewogICAgICAgICBtX2N1cnJlbnRN
b2RpZmllcnMgJj0gfmNoYW5nZWRNb2RpZmllcnM7CiAKICAgICAgICAgW2V2ZW50c1RvQmVTZW50
IGFkZE9iamVjdDpbW1s6OldlYkV2ZW50IGFsbG9jXSBpbml0V2l0aEtleUV2ZW50VHlwZTpXZWJF
dmVudEtleVVwIHRpbWVTdGFtcDpDRkFic29sdXRlVGltZUdldEN1cnJlbnQoKSBjaGFyYWN0ZXJz
OmNoYXJhY3RlcnMgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOnVubW9kaWZpZWRDaGFyYWN0
ZXJzIG1vZGlmaWVyczptX2N1cnJlbnRNb2RpZmllcnMgaXNSZXBlYXRpbmc6Tk8gd2l0aEZsYWdz
OmlucHV0RmxhZ3Mgd2l0aElucHV0TWFuYWdlckhpbnQ6bmlsIGtleUNvZGU6a2V5Q29kZSBpc1Rh
YktleTppc1RhYktleV0gYXV0b3JlbGVhc2VdXTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAg
IGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6S2V5Ym9hcmRJbnRlcmFjdGlv
blR5cGU6Okluc2VydEJ5S2V5OiB7CisgICAgY2FzZSBLZXlib2FyZEludGVyYWN0aW9uOjpJbnNl
cnRCeUtleTogewogICAgICAgICAvLyBNb2RpZmllcnMgb25seSBjaGFuZ2Ugd2l0aCBLZXlQcmVz
cyBvciBLZXlSZWxlYXNlLCB0aGlzIGNvZGUgcGF0aCBpcyBmb3Igc2luZ2xlIGNoYXJhY3RlcnMu
CiAgICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmplY3Q6W1tbOjpXZWJFdmVudCBhbGxvY10g
aW5pdFdpdGhLZXlFdmVudFR5cGU6V2ViRXZlbnRLZXlEb3duIHRpbWVTdGFtcDpDRkFic29sdXRl
VGltZUdldEN1cnJlbnQoKSBjaGFyYWN0ZXJzOmNoYXJhY3RlcnMgY2hhcmFjdGVyc0lnbm9yaW5n
TW9kaWZpZXJzOnVubW9kaWZpZWRDaGFyYWN0ZXJzIG1vZGlmaWVyczptX2N1cnJlbnRNb2RpZmll
cnMgaXNSZXBlYXRpbmc6Tk8gd2l0aEZsYWdzOmlucHV0RmxhZ3Mgd2l0aElucHV0TWFuYWdlckhp
bnQ6bmlsIGtleUNvZGU6a2V5Q29kZSBpc1RhYktleTppc1RhYktleV0gYXV0b3JlbGVhc2VdXTsK
ICAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbW1s6OldlYkV2ZW50IGFsbG9jXSBp
bml0V2l0aEtleUV2ZW50VHlwZTpXZWJFdmVudEtleVVwIHRpbWVTdGFtcDpDRkFic29sdXRlVGlt
ZUdldEN1cnJlbnQoKSBjaGFyYWN0ZXJzOmNoYXJhY3RlcnMgY2hhcmFjdGVyc0lnbm9yaW5nTW9k
aWZpZXJzOnVubW9kaWZpZWRDaGFyYWN0ZXJzIG1vZGlmaWVyczptX2N1cnJlbnRNb2RpZmllcnMg
aXNSZXBlYXRpbmc6Tk8gd2l0aEZsYWdzOmlucHV0RmxhZ3Mgd2l0aElucHV0TWFuYWdlckhpbnQ6
bmlsIGtleUNvZGU6a2V5Q29kZSBpc1RhYktleTppc1RhYktleV0gYXV0b3JlbGVhc2VdXTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vbWFjL1dlYkF1dG9t
YXRpb25TZXNzaW9uTWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9t
YWMvV2ViQXV0b21hdGlvblNlc3Npb25NYWMubW0KaW5kZXggM2I1ZTU1OGM2NGMzZGE3NjdhOTg5
ZWQ2NDIwYTc3NWYyYzFhNjEzMi4uZjQ2MGEzODY1M2RjNjRlZTY2MTc5MDczMGMxOGNiZmI0ZTBm
MmI2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9tYWMv
V2ViQXV0b21hdGlvblNlc3Npb25NYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QXV0b21hdGlvbi9tYWMvV2ViQXV0b21hdGlvblNlc3Npb25NYWMubW0KQEAgLTExOCwxMSArMTE4
LDExIEBAIGJvb2wgV2ViQXV0b21hdGlvblNlc3Npb246Ondhc0V2ZW50U3ludGhlc2l6ZWRGb3JB
dXRvbWF0aW9uKE5TRXZlbnQgKmV2ZW50KQogCiAjcHJhZ21hIG1hcmsgUGxhdGZvcm0tZGVwZW5k
ZW50IEltcGxlbWVudGF0aW9ucwogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9y
bVNpbXVsYXRlTW91c2VJbnRlcmFjdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IFdlYkNv
cmU6OkludFBvaW50JiB2aWV3UG9zaXRpb24sIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRp
b246Ok1vdXNlSW50ZXJhY3Rpb24gaW50ZXJhY3Rpb24sIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1
dG9tYXRpb246Ok1vdXNlQnV0dG9uIGJ1dHRvbiwgV2ViRXZlbnQ6Ok1vZGlmaWVycyBrZXlNb2Rp
ZmllcnMpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlTW91c2VJ
bnRlcmFjdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIE1vdXNlSW50ZXJhY3Rpb24gaW50ZXJhY3Rp
b24sIFdlYk1vdXNlRXZlbnQ6OkJ1dHRvbiBidXR0b24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiBsb2NhdGlvbkluVmlldywgV2ViRXZlbnQ6Ok1vZGlmaWVycyBrZXlNb2RpZmllcnMpCiB7CiAg
ICAgSW50UmVjdCB3aW5kb3dSZWN0OwotICAgIHBhZ2Uucm9vdFZpZXdUb1dpbmRvdyhJbnRSZWN0
KHZpZXdQb3NpdGlvbiwgSW50U2l6ZSgpKSwgd2luZG93UmVjdCk7Ci0gICAgSW50UG9pbnQgd2lu
ZG93UG9zaXRpb24gPSB3aW5kb3dSZWN0LmxvY2F0aW9uKCk7CisgICAgcGFnZS5yb290Vmlld1Rv
V2luZG93KEludFJlY3QobG9jYXRpb25JblZpZXcsIEludFNpemUoKSksIHdpbmRvd1JlY3QpOwor
ICAgIEludFBvaW50IGxvY2F0aW9uSW5XaW5kb3cgPSB3aW5kb3dSZWN0LmxvY2F0aW9uKCk7CiAK
ICAgICBOU0V2ZW50TW9kaWZpZXJGbGFncyBtb2RpZmllcnMgPSAwOwogICAgIGlmIChrZXlNb2Rp
ZmllcnMgJiBXZWJFdmVudDo6TWV0YUtleSkKQEAgLTE0NCwyMCArMTQ0LDIwIEBAIHZvaWQgV2Vi
QXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVNb3VzZUludGVyYWN0aW9uKFdlYlBh
Z2VQcm94eSYgcGFnZSwKICAgICBOU0V2ZW50VHlwZSBkcmFnRXZlbnRUeXBlID0gKE5TRXZlbnRU
eXBlKTA7CiAgICAgTlNFdmVudFR5cGUgdXBFdmVudFR5cGUgPSAoTlNFdmVudFR5cGUpMDsKICAg
ICBzd2l0Y2ggKGJ1dHRvbikgewotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21h
dGlvbjo6TW91c2VCdXR0b246Ok5vbmU6CisgICAgY2FzZSBXZWJNb3VzZUV2ZW50OjpOb0J1dHRv
bjoKICAgICAgICAgZG93bkV2ZW50VHlwZSA9IHVwRXZlbnRUeXBlID0gZHJhZ0V2ZW50VHlwZSA9
IE5TRXZlbnRUeXBlTW91c2VNb3ZlZDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1dHRvbjo6TGVmdDoKKyAgICBjYXNlIFdl
Yk1vdXNlRXZlbnQ6OkxlZnRCdXR0b246CiAgICAgICAgIGRvd25FdmVudFR5cGUgPSBOU0V2ZW50
VHlwZUxlZnRNb3VzZURvd247CiAgICAgICAgIGRyYWdFdmVudFR5cGUgPSBOU0V2ZW50VHlwZUxl
ZnRNb3VzZURyYWdnZWQ7CiAgICAgICAgIHVwRXZlbnRUeXBlID0gTlNFdmVudFR5cGVMZWZ0TW91
c2VVcDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRv
bWF0aW9uOjpNb3VzZUJ1dHRvbjo6TWlkZGxlOgorICAgIGNhc2UgV2ViTW91c2VFdmVudDo6TWlk
ZGxlQnV0dG9uOgogICAgICAgICBkb3duRXZlbnRUeXBlID0gTlNFdmVudFR5cGVPdGhlck1vdXNl
RG93bjsKICAgICAgICAgZHJhZ0V2ZW50VHlwZSA9IE5TRXZlbnRUeXBlTGVmdE1vdXNlRHJhZ2dl
ZDsKICAgICAgICAgdXBFdmVudFR5cGUgPSBOU0V2ZW50VHlwZU90aGVyTW91c2VVcDsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3Vz
ZUJ1dHRvbjo6UmlnaHQ6CisgICAgY2FzZSBXZWJNb3VzZUV2ZW50OjpSaWdodEJ1dHRvbjoKICAg
ICAgICAgZG93bkV2ZW50VHlwZSA9IE5TRXZlbnRUeXBlUmlnaHRNb3VzZURvd247CiAgICAgICAg
IHVwRXZlbnRUeXBlID0gTlNFdmVudFR5cGVSaWdodE1vdXNlVXA7CiAgICAgICAgIGJyZWFrOwpA
QCAtMTY4LDU2ICsxNjgsNTYgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1T
aW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdlLAogICAgIE5TSW50ZWdl
ciBldmVudE51bWJlciA9IHN5bnRoZXNpemVkTW91c2VFdmVudE1hZ2ljRXZlbnROdW1iZXI7CiAK
ICAgICBzd2l0Y2ggKGludGVyYWN0aW9uKSB7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29s
OjpBdXRvbWF0aW9uOjpNb3VzZUludGVyYWN0aW9uOjpNb3ZlOgorICAgIGNhc2UgTW91c2VJbnRl
cmFjdGlvbjo6TW92ZToKICAgICAgICAgQVNTRVJUKGRyYWdFdmVudFR5cGUpOwotICAgICAgICBb
ZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltOU0V2ZW50IG1vdXNlRXZlbnRXaXRoVHlwZTpkcmFn
RXZlbnRUeXBlIGxvY2F0aW9uOndpbmRvd1Bvc2l0aW9uIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJz
IHRpbWVzdGFtcDp0aW1lc3RhbXAgd2luZG93TnVtYmVyOndpbmRvd051bWJlciBjb250ZXh0Om5p
bCBldmVudE51bWJlcjpldmVudE51bWJlciBjbGlja0NvdW50OjAgcHJlc3N1cmU6MC4wZl1dOwor
ICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltOU0V2ZW50IG1vdXNlRXZlbnRXaXRo
VHlwZTpkcmFnRXZlbnRUeXBlIGxvY2F0aW9uOmxvY2F0aW9uSW5XaW5kb3cgbW9kaWZpZXJGbGFn
czptb2RpZmllcnMgdGltZXN0YW1wOnRpbWVzdGFtcCB3aW5kb3dOdW1iZXI6d2luZG93TnVtYmVy
IGNvbnRleHQ6bmlsIGV2ZW50TnVtYmVyOmV2ZW50TnVtYmVyIGNsaWNrQ291bnQ6MCBwcmVzc3Vy
ZTowLjBmXV07CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbjo6TW91c2VJbnRlcmFjdGlvbjo6RG93bjoKKyAgICBjYXNlIE1vdXNlSW50ZXJh
Y3Rpb246OkRvd246CiAgICAgICAgIEFTU0VSVChkb3duRXZlbnRUeXBlKTsKIAogICAgICAgICAv
LyBIYXJkLWNvZGUgdGhlIGNsaWNrIGNvdW50IHRvIG9uZSwgc2luY2UgY2xpZW50cyBkb24ndCBl
eHBlY3Qgc3VjY2Vzc2l2ZSBzaW11bGF0ZWQKICAgICAgICAgLy8gZG93bi91cCBldmVudHMgdG8g
YmUgcG90ZW50aWFsbHkgY291bnRlZCBhcyBhIGRvdWJsZSBjbGljayBldmVudC4KLSAgICAgICAg
W2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6ZG93
bkV2ZW50VHlwZSBsb2NhdGlvbjp3aW5kb3dQb3NpdGlvbiBtb2RpZmllckZsYWdzOm1vZGlmaWVy
cyB0aW1lc3RhbXA6dGltZXN0YW1wIHdpbmRvd051bWJlcjp3aW5kb3dOdW1iZXIgY29udGV4dDpu
aWwgZXZlbnROdW1iZXI6ZXZlbnROdW1iZXIgY2xpY2tDb3VudDoxIHByZXNzdXJlOldlYkNvcmU6
OkZvcmNlQXRDbGlja11dOworICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltOU0V2
ZW50IG1vdXNlRXZlbnRXaXRoVHlwZTpkb3duRXZlbnRUeXBlIGxvY2F0aW9uOmxvY2F0aW9uSW5X
aW5kb3cgbW9kaWZpZXJGbGFnczptb2RpZmllcnMgdGltZXN0YW1wOnRpbWVzdGFtcCB3aW5kb3dO
dW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmlsIGV2ZW50TnVtYmVyOmV2ZW50TnVtYmVyIGNs
aWNrQ291bnQ6MSBwcmVzc3VyZTpXZWJDb3JlOjpGb3JjZUF0Q2xpY2tdXTsKICAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUludGVy
YWN0aW9uOjpVcDoKKyAgICBjYXNlIE1vdXNlSW50ZXJhY3Rpb246OlVwOgogICAgICAgICBBU1NF
UlQodXBFdmVudFR5cGUpOwogCiAgICAgICAgIC8vIEhhcmQtY29kZSB0aGUgY2xpY2sgY291bnQg
dG8gb25lLCBzaW5jZSBjbGllbnRzIGRvbid0IGV4cGVjdCBzdWNjZXNzaXZlIHNpbXVsYXRlZAog
ICAgICAgICAvLyBkb3duL3VwIGV2ZW50cyB0byBiZSBwb3RlbnRpYWxseSBjb3VudGVkIGFzIGEg
ZG91YmxlIGNsaWNrIGV2ZW50LgotICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltO
U0V2ZW50IG1vdXNlRXZlbnRXaXRoVHlwZTp1cEV2ZW50VHlwZSBsb2NhdGlvbjp3aW5kb3dQb3Np
dGlvbiBtb2RpZmllckZsYWdzOm1vZGlmaWVycyB0aW1lc3RhbXA6dGltZXN0YW1wIHdpbmRvd051
bWJlcjp3aW5kb3dOdW1iZXIgY29udGV4dDpuaWwgZXZlbnROdW1iZXI6ZXZlbnROdW1iZXIgY2xp
Y2tDb3VudDoxIHByZXNzdXJlOjAuMGZdXTsKKyAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9i
amVjdDpbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6dXBFdmVudFR5cGUgbG9jYXRpb246bG9j
YXRpb25JbldpbmRvdyBtb2RpZmllckZsYWdzOm1vZGlmaWVycyB0aW1lc3RhbXA6dGltZXN0YW1w
IHdpbmRvd051bWJlcjp3aW5kb3dOdW1iZXIgY29udGV4dDpuaWwgZXZlbnROdW1iZXI6ZXZlbnRO
dW1iZXIgY2xpY2tDb3VudDoxIHByZXNzdXJlOjAuMGZdXTsKICAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUludGVyYWN0aW9uOjpT
aW5nbGVDbGljazoKKyAgICBjYXNlIE1vdXNlSW50ZXJhY3Rpb246OlNpbmdsZUNsaWNrOgogICAg
ICAgICBBU1NFUlQodXBFdmVudFR5cGUpOwogICAgICAgICBBU1NFUlQoZG93bkV2ZW50VHlwZSk7
CiAKICAgICAgICAgLy8gU2VuZCBzZXBhcmF0ZSBkb3duIGFuZCB1cCBldmVudHMuIFdlYkNvcmUg
d2lsbCBzZWUgdGhpcyBhcyBhIHNpbmdsZS1jbGljayBldmVudC4KLSAgICAgICAgW2V2ZW50c1Rv
QmVTZW50IGFkZE9iamVjdDpbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6ZG93bkV2ZW50VHlw
ZSBsb2NhdGlvbjp3aW5kb3dQb3NpdGlvbiBtb2RpZmllckZsYWdzOm1vZGlmaWVycyB0aW1lc3Rh
bXA6dGltZXN0YW1wIHdpbmRvd051bWJlcjp3aW5kb3dOdW1iZXIgY29udGV4dDpuaWwgZXZlbnRO
dW1iZXI6ZXZlbnROdW1iZXIgY2xpY2tDb3VudDoxIHByZXNzdXJlOldlYkNvcmU6OkZvcmNlQXRD
bGlja11dOwotICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltOU0V2ZW50IG1vdXNl
RXZlbnRXaXRoVHlwZTp1cEV2ZW50VHlwZSBsb2NhdGlvbjp3aW5kb3dQb3NpdGlvbiBtb2RpZmll
ckZsYWdzOm1vZGlmaWVycyB0aW1lc3RhbXA6dGltZXN0YW1wIHdpbmRvd051bWJlcjp3aW5kb3dO
dW1iZXIgY29udGV4dDpuaWwgZXZlbnROdW1iZXI6ZXZlbnROdW1iZXIgY2xpY2tDb3VudDoxIHBy
ZXNzdXJlOjAuMGZdXTsKKyAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbTlNFdmVu
dCBtb3VzZUV2ZW50V2l0aFR5cGU6ZG93bkV2ZW50VHlwZSBsb2NhdGlvbjpsb2NhdGlvbkluV2lu
ZG93IG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJzIHRpbWVzdGFtcDp0aW1lc3RhbXAgd2luZG93TnVt
YmVyOndpbmRvd051bWJlciBjb250ZXh0Om5pbCBldmVudE51bWJlcjpldmVudE51bWJlciBjbGlj
a0NvdW50OjEgcHJlc3N1cmU6V2ViQ29yZTo6Rm9yY2VBdENsaWNrXV07CisgICAgICAgIFtldmVu
dHNUb0JlU2VudCBhZGRPYmplY3Q6W05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOnVwRXZlbnRU
eXBlIGxvY2F0aW9uOmxvY2F0aW9uSW5XaW5kb3cgbW9kaWZpZXJGbGFnczptb2RpZmllcnMgdGlt
ZXN0YW1wOnRpbWVzdGFtcCB3aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmlsIGV2
ZW50TnVtYmVyOmV2ZW50TnVtYmVyIGNsaWNrQ291bnQ6MSBwcmVzc3VyZTowLjBmXV07CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91
c2VJbnRlcmFjdGlvbjo6RG91YmxlQ2xpY2s6CisgICAgY2FzZSBNb3VzZUludGVyYWN0aW9uOjpE
b3VibGVDbGljazoKICAgICAgICAgQVNTRVJUKHVwRXZlbnRUeXBlKTsKICAgICAgICAgQVNTRVJU
KGRvd25FdmVudFR5cGUpOwogCiAgICAgICAgIC8vIFNlbmQgbXVsdGlwbGUgZG93biBhbmQgdXAg
ZXZlbnRzIHdpdGggcHJvcGVyIGNsaWNrIGNvdW50LgogICAgICAgICAvLyBXZWJDb3JlIHdpbGwg
c2VlIHRoaXMgYXMgYSBzaW5nbGUtY2xpY2sgZXZlbnQgdGhlbiBkb3VibGUtY2xpY2sgZXZlbnQu
Ci0gICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmplY3Q6W05TRXZlbnQgbW91c2VFdmVudFdp
dGhUeXBlOmRvd25FdmVudFR5cGUgbG9jYXRpb246d2luZG93UG9zaXRpb24gbW9kaWZpZXJGbGFn
czptb2RpZmllcnMgdGltZXN0YW1wOnRpbWVzdGFtcCB3aW5kb3dOdW1iZXI6d2luZG93TnVtYmVy
IGNvbnRleHQ6bmlsIGV2ZW50TnVtYmVyOmV2ZW50TnVtYmVyIGNsaWNrQ291bnQ6MSBwcmVzc3Vy
ZTpXZWJDb3JlOjpGb3JjZUF0Q2xpY2tdXTsKLSAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9i
amVjdDpbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6dXBFdmVudFR5cGUgbG9jYXRpb246d2lu
ZG93UG9zaXRpb24gbW9kaWZpZXJGbGFnczptb2RpZmllcnMgdGltZXN0YW1wOnRpbWVzdGFtcCB3
aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmlsIGV2ZW50TnVtYmVyOmV2ZW50TnVt
YmVyIGNsaWNrQ291bnQ6MSBwcmVzc3VyZTowLjBmXV07Ci0gICAgICAgIFtldmVudHNUb0JlU2Vu
dCBhZGRPYmplY3Q6W05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOmRvd25FdmVudFR5cGUgbG9j
YXRpb246d2luZG93UG9zaXRpb24gbW9kaWZpZXJGbGFnczptb2RpZmllcnMgdGltZXN0YW1wOnRp
bWVzdGFtcCB3aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmlsIGV2ZW50TnVtYmVy
OmV2ZW50TnVtYmVyIGNsaWNrQ291bnQ6MiBwcmVzc3VyZTpXZWJDb3JlOjpGb3JjZUF0Q2xpY2td
XTsKLSAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbTlNFdmVudCBtb3VzZUV2ZW50
V2l0aFR5cGU6dXBFdmVudFR5cGUgbG9jYXRpb246d2luZG93UG9zaXRpb24gbW9kaWZpZXJGbGFn
czptb2RpZmllcnMgdGltZXN0YW1wOnRpbWVzdGFtcCB3aW5kb3dOdW1iZXI6d2luZG93TnVtYmVy
IGNvbnRleHQ6bmlsIGV2ZW50TnVtYmVyOmV2ZW50TnVtYmVyIGNsaWNrQ291bnQ6MiBwcmVzc3Vy
ZTowLjBmXV07CisgICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmplY3Q6W05TRXZlbnQgbW91
c2VFdmVudFdpdGhUeXBlOmRvd25FdmVudFR5cGUgbG9jYXRpb246bG9jYXRpb25JbldpbmRvdyBt
b2RpZmllckZsYWdzOm1vZGlmaWVycyB0aW1lc3RhbXA6dGltZXN0YW1wIHdpbmRvd051bWJlcjp3
aW5kb3dOdW1iZXIgY29udGV4dDpuaWwgZXZlbnROdW1iZXI6ZXZlbnROdW1iZXIgY2xpY2tDb3Vu
dDoxIHByZXNzdXJlOldlYkNvcmU6OkZvcmNlQXRDbGlja11dOworICAgICAgICBbZXZlbnRzVG9C
ZVNlbnQgYWRkT2JqZWN0OltOU0V2ZW50IG1vdXNlRXZlbnRXaXRoVHlwZTp1cEV2ZW50VHlwZSBs
b2NhdGlvbjpsb2NhdGlvbkluV2luZG93IG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJzIHRpbWVzdGFt
cDp0aW1lc3RhbXAgd2luZG93TnVtYmVyOndpbmRvd051bWJlciBjb250ZXh0Om5pbCBldmVudE51
bWJlcjpldmVudE51bWJlciBjbGlja0NvdW50OjEgcHJlc3N1cmU6MC4wZl1dOworICAgICAgICBb
ZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltOU0V2ZW50IG1vdXNlRXZlbnRXaXRoVHlwZTpkb3du
RXZlbnRUeXBlIGxvY2F0aW9uOmxvY2F0aW9uSW5XaW5kb3cgbW9kaWZpZXJGbGFnczptb2RpZmll
cnMgdGltZXN0YW1wOnRpbWVzdGFtcCB3aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6
bmlsIGV2ZW50TnVtYmVyOmV2ZW50TnVtYmVyIGNsaWNrQ291bnQ6MiBwcmVzc3VyZTpXZWJDb3Jl
OjpGb3JjZUF0Q2xpY2tdXTsKKyAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbTlNF
dmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6dXBFdmVudFR5cGUgbG9jYXRpb246bG9jYXRpb25Jbldp
bmRvdyBtb2RpZmllckZsYWdzOm1vZGlmaWVycyB0aW1lc3RhbXA6dGltZXN0YW1wIHdpbmRvd051
bWJlcjp3aW5kb3dOdW1iZXIgY29udGV4dDpuaWwgZXZlbnROdW1iZXI6ZXZlbnROdW1iZXIgY2xp
Y2tDb3VudDoyIHByZXNzdXJlOjAuMGZdXTsKICAgICB9CiAKICAgICBzZW5kU3ludGhlc2l6ZWRF
dmVudHNUb1BhZ2UocGFnZSwgZXZlbnRzVG9CZVNlbnQuZ2V0KCkpOwogfQogCi1zdGF0aWMgYm9v
bCBrZXlIYXNTdGlja3lNb2RpZmllcihJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpW
aXJ0dWFsS2V5IGtleSkKK3N0YXRpYyBib29sIHZpcnR1YWxLZXlIYXNTdGlja3lNb2RpZmllcihW
aXJ0dWFsS2V5IGtleSkKIHsKICAgICAvLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGtleSdzIG1vZGlm
aWVyIGZsYWdzIHNob3VsZCBhZmZlY3Qgb3RoZXIgZXZlbnRzIHdoaWxlIHByZXNzZWQgZG93bi4K
ICAgICBzd2l0Y2ggKGtleSkgewotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21h
dGlvbjo6VmlydHVhbEtleTo6U2hpZnQ6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpB
dXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpDb250cm9sOgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6QWx0ZXJuYXRlOgotICAgIGNhc2UgSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TWV0YToKLSAgICBjYXNlIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkNvbW1hbmQ6CisgICAg
Y2FzZSBWaXJ0dWFsS2V5OjpTaGlmdDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkNvbnRyb2w6Cisg
ICAgY2FzZSBWaXJ0dWFsS2V5OjpBbHRlcm5hdGU6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpNZXRh
OgorICAgIGNhc2UgVmlydHVhbEtleTo6Q29tbWFuZDoKICAgICAgICAgcmV0dXJuIHRydWU7CiAK
ICAgICBkZWZhdWx0OgpAQCAtMjI1LDIwMSArMjI1LDIwMSBAQCBzdGF0aWMgYm9vbCBrZXlIYXNT
dGlja3lNb2RpZmllcihJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5
IGtleQogICAgIH0KIH0KIAotc3RhdGljIGludCBrZXlDb2RlRm9yVmlydHVhbEtleShJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5IGtleSkKK3N0YXRpYyBpbnQga2V5
Q29kZUZvclZpcnR1YWxLZXkoVmlydHVhbEtleSBrZXkpCiB7CiAgICAgLy8gVGhlIGxpa2VseSBr
ZXlDb2RlIGZvciB0aGUgdmlydHVhbCBrZXkgYXMgZGVmaW5lZCBpbiA8SElUb29sYm94L0V2ZW50
cy5oPi4KICAgICBzd2l0Y2ggKGtleSkgewotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbjo6VmlydHVhbEtleTo6U2hpZnQ6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpTaGlm
dDoKICAgICAgICAgcmV0dXJuIGtWS19TaGlmdDsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkNvbnRyb2w6CisgICAgY2FzZSBWaXJ0dWFsS2V5
OjpDb250cm9sOgogICAgICAgICByZXR1cm4ga1ZLX0NvbnRyb2w7Ci0gICAgY2FzZSBJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpBbHRlcm5hdGU6CisgICAgY2Fz
ZSBWaXJ0dWFsS2V5OjpBbHRlcm5hdGU6CiAgICAgICAgIHJldHVybiBrVktfT3B0aW9uOwotICAg
IGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TWV0YToK
KyAgICBjYXNlIFZpcnR1YWxLZXk6Ok1ldGE6CiAgICAgICAgIC8vIFRoZSAnbWV0YScga2V5IGRv
ZXMgbm90IGV4aXN0IG9uIEFwcGxlIGtleWJvYXJkcyBhbmQgaXMgdXN1YWxseQogICAgICAgICAv
LyBtYXBwZWQgdG8gdGhlIENvbW1hbmQga2V5IHdoZW4gdXNpbmcgdGhpcmQtcGFydHkga2V5Ym9h
cmRzLgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtl
eTo6Q29tbWFuZDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkNvbW1hbmQ6CiAgICAgICAgIHJldHVy
biBrVktfQ29tbWFuZDsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246
OlZpcnR1YWxLZXk6OkhlbHA6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpIZWxwOgogICAgICAgICBy
ZXR1cm4ga1ZLX0hlbHA7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
OjpWaXJ0dWFsS2V5OjpCYWNrc3BhY2U6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpCYWNrc3BhY2U6
CiAgICAgICAgIHJldHVybiBrVktfRGVsZXRlOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6VGFiOgorICAgIGNhc2UgVmlydHVhbEtleTo6VGFi
OgogICAgICAgICByZXR1cm4ga1ZLX1RhYjsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkNsZWFyOgorICAgIGNhc2UgVmlydHVhbEtleTo6Q2xl
YXI6CiAgICAgICAgIHJldHVybiBrVktfQU5TSV9LZXlwYWRDbGVhcjsKLSAgICBjYXNlIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkVudGVyOgorICAgIGNhc2Ug
VmlydHVhbEtleTo6RW50ZXI6CiAgICAgICAgIHJldHVybiBrVktfQU5TSV9LZXlwYWRFbnRlcjsK
LSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OlBh
dXNlOgorICAgIGNhc2UgVmlydHVhbEtleTo6UGF1c2U6CiAgICAgICAgIC8vIFRoZSAncGF1c2Un
IGtleSBkb2VzIG5vdCBleGlzdCBvbiBBcHBsZSBrZXlib2FyZHMgYW5kIGhhcyBubyBrZXlDb2Rl
LgogICAgICAgICAvLyBUaGUgc2VtYW50aWNzIGFyZSB1bmNsZWFyIHNvIGp1c3QgYWJvcnQgYW5k
IGRvIG5vdGhpbmcuCiAgICAgICAgIHJldHVybiAwOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6Q2FuY2VsOgorICAgIGNhc2UgVmlydHVhbEtl
eTo6Q2FuY2VsOgogICAgICAgICAvLyBUaGUgJ2NhbmNlbCcga2V5IGRvZXMgbm90IGV4aXN0IG9u
IEFwcGxlIGtleWJvYXJkcyBhbmQgaGFzIG5vIGtleUNvZGUuCiAgICAgICAgIC8vIEFjY29yZGlu
ZyB0byB0aGUgaW50ZXJuZXQgaXRzIGZ1bmN0aW9uYWxpdHkgaXMgc2ltaWxhciB0byAnRXNjYXBl
Jy4KLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6
OkVzY2FwZToKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkVzY2FwZToKICAgICAgICAgcmV0dXJuIGtW
S19Fc2NhcGU7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0
dWFsS2V5OjpQYWdlVXA6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpQYWdlVXA6CiAgICAgICAgIHJl
dHVybiBrVktfUGFnZVVwOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlv
bjo6VmlydHVhbEtleTo6UGFnZURvd246CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpQYWdlRG93bjoK
ICAgICAgICAgcmV0dXJuIGtWS19QYWdlRG93bjsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkVuZDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkVu
ZDoKICAgICAgICAgcmV0dXJuIGtWS19FbmQ7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29s
OjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpIb21lOgorICAgIGNhc2UgVmlydHVhbEtleTo6SG9t
ZToKICAgICAgICAgcmV0dXJuIGtWS19Ib21lOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TGVmdEFycm93OgorICAgIGNhc2UgVmlydHVhbEtl
eTo6TGVmdEFycm93OgogICAgICAgICByZXR1cm4ga1ZLX0xlZnRBcnJvdzsKLSAgICBjYXNlIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OlVwQXJyb3c6CisgICAg
Y2FzZSBWaXJ0dWFsS2V5OjpVcEFycm93OgogICAgICAgICByZXR1cm4ga1ZLX1VwQXJyb3c7Ci0g
ICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpSaWdo
dEFycm93OgorICAgIGNhc2UgVmlydHVhbEtleTo6UmlnaHRBcnJvdzoKICAgICAgICAgcmV0dXJu
IGtWS19SaWdodEFycm93OwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlv
bjo6VmlydHVhbEtleTo6RG93bkFycm93OgorICAgIGNhc2UgVmlydHVhbEtleTo6RG93bkFycm93
OgogICAgICAgICByZXR1cm4ga1ZLX0Rvd25BcnJvdzsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Okluc2VydDoKKyAgICBjYXNlIFZpcnR1YWxL
ZXk6Okluc2VydDoKICAgICAgICAgLy8gVGhlICdpbnNlcnQnIGtleSBkb2VzIG5vdCBleGlzdCBv
biBBcHBsZSBrZXlib2FyZHMgYW5kIGhhcyBubyBrZXlDb2RlLgogICAgICAgICAvLyBUaGUgc2Vt
YW50aWNzIGFyZSB1bmNsZWFyIHNvIGp1c3QgYWJvcnQgYW5kIGRvIG5vdGhpbmcuCiAgICAgICAg
IHJldHVybiAwOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6Vmly
dHVhbEtleTo6RGVsZXRlOgorICAgIGNhc2UgVmlydHVhbEtleTo6RGVsZXRlOgogICAgICAgICBy
ZXR1cm4ga1ZLX0ZvcndhcmREZWxldGU7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpB
dXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpTcGFjZToKKyAgICBjYXNlIFZpcnR1YWxLZXk6OlNwYWNl
OgogICAgICAgICByZXR1cm4ga1ZLX1NwYWNlOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6U2VtaWNvbG9uOgorICAgIGNhc2UgVmlydHVhbEtl
eTo6U2VtaWNvbG9uOgogICAgICAgICByZXR1cm4ga1ZLX0FOU0lfU2VtaWNvbG9uOwotICAgIGNh
c2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RXF1YWxzOgor
ICAgIGNhc2UgVmlydHVhbEtleTo6RXF1YWxzOgogICAgICAgICByZXR1cm4ga1ZLX0FOU0lfRXF1
YWw7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5
OjpSZXR1cm46CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpSZXR1cm46CiAgICAgICAgIHJldHVybiBr
VktfUmV0dXJuOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6Vmly
dHVhbEtleTo6TnVtYmVyUGFkMDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZDA6CiAg
ICAgICAgIHJldHVybiBrVktfQU5TSV9LZXlwYWQwOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkMToKKyAgICBjYXNlIFZpcnR1
YWxLZXk6Ok51bWJlclBhZDE6CiAgICAgICAgIHJldHVybiBrVktfQU5TSV9LZXlwYWQxOwotICAg
IGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVy
UGFkMjoKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZDI6CiAgICAgICAgIHJldHVybiBr
VktfQU5TSV9LZXlwYWQyOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlv
bjo6VmlydHVhbEtleTo6TnVtYmVyUGFkMzoKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJlclBh
ZDM6CiAgICAgICAgIHJldHVybiBrVktfQU5TSV9LZXlwYWQzOwotICAgIGNhc2UgSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkNDoKKyAgICBjYXNl
IFZpcnR1YWxLZXk6Ok51bWJlclBhZDQ6CiAgICAgICAgIHJldHVybiBrVktfQU5TSV9LZXlwYWQ0
OwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6
TnVtYmVyUGFkNToKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZDU6CiAgICAgICAgIHJl
dHVybiBrVktfQU5TSV9LZXlwYWQ1OwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkNjoKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51
bWJlclBhZDY6CiAgICAgICAgIHJldHVybiBrVktfQU5TSV9LZXlwYWQ2OwotICAgIGNhc2UgSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkNzoKKyAg
ICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZDc6CiAgICAgICAgIHJldHVybiBrVktfQU5TSV9L
ZXlwYWQ3OwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVh
bEtleTo6TnVtYmVyUGFkODoKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZDg6CiAgICAg
ICAgIHJldHVybiBrVktfQU5TSV9LZXlwYWQ4OwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkOToKKyAgICBjYXNlIFZpcnR1YWxL
ZXk6Ok51bWJlclBhZDk6CiAgICAgICAgIHJldHVybiBrVktfQU5TSV9LZXlwYWQ5OwotICAgIGNh
c2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFk
TXVsdGlwbHk6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWRNdWx0aXBseToKICAgICAg
ICAgcmV0dXJuIGtWS19BTlNJX0tleXBhZE11bHRpcGx5OwotICAgIGNhc2UgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkQWRkOgorICAgIGNhc2Ug
VmlydHVhbEtleTo6TnVtYmVyUGFkQWRkOgogICAgICAgICByZXR1cm4ga1ZLX0FOU0lfS2V5cGFk
UGx1czsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxL
ZXk6Ok51bWJlclBhZFN1YnRyYWN0OgorICAgIGNhc2UgVmlydHVhbEtleTo6TnVtYmVyUGFkU3Vi
dHJhY3Q6CiAgICAgICAgIHJldHVybiBrVktfQU5TSV9LZXlwYWRNaW51czsKLSAgICBjYXNlIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZFNlcGFy
YXRvcjoKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZFNlcGFyYXRvcjoKICAgICAgICAg
Ly8gVGhlICdTZXBhcmF0b3InIGtleSBpcyBvbmx5IHByZXNlbnQgb24gYSBmZXcgaW50ZXJuYXRp
b25hbCBrZXlib2FyZHMuCiAgICAgICAgIC8vIEl0IGlzIHVzdWFsbHkgbWFwcGVkIHRvIHRoZSBz
YW1lIGNoYXJhY3RlciBhcyBEZWNpbWFsICgnLicgb3IgJywnKS4KICAgICAgICAgRkFMTFRIUk9V
R0g7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5
OjpOdW1iZXJQYWREZWNpbWFsOgorICAgIGNhc2UgVmlydHVhbEtleTo6TnVtYmVyUGFkRGVjaW1h
bDoKICAgICAgICAgcmV0dXJuIGtWS19BTlNJX0tleXBhZERlY2ltYWw7CiAgICAgICAgIC8vIEZJ
WE1FOiB0aGlzIG1pZ2h0IGJlIGxvY2FsZS1kZXBlbmRlbnQuIFNlZSB0aGUgYWJvdmUgY29tbWVu
dC4KLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6
Ok51bWJlclBhZERpdmlkZToKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZERpdmlkZToK
ICAgICAgICAgcmV0dXJuIGtWS19BTlNJX0tleXBhZERpdmlkZTsKLSAgICBjYXNlIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkZ1bmN0aW9uMToKKyAgICBjYXNl
IFZpcnR1YWxLZXk6OkZ1bmN0aW9uMToKICAgICAgICAgcmV0dXJuIGtWS19GMTsKLSAgICBjYXNl
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkZ1bmN0aW9uMjoK
KyAgICBjYXNlIFZpcnR1YWxLZXk6OkZ1bmN0aW9uMjoKICAgICAgICAgcmV0dXJuIGtWS19GMjsK
LSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkZ1
bmN0aW9uMzoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkZ1bmN0aW9uMzoKICAgICAgICAgcmV0dXJu
IGtWS19GMzsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1
YWxLZXk6OkZ1bmN0aW9uNDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkZ1bmN0aW9uNDoKICAgICAg
ICAgcmV0dXJuIGtWS19GNDsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRp
b246OlZpcnR1YWxLZXk6OkZ1bmN0aW9uNToKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkZ1bmN0aW9u
NToKICAgICAgICAgcmV0dXJuIGtWS19GNTsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkZ1bmN0aW9uNjoKKyAgICBjYXNlIFZpcnR1YWxLZXk6
OkZ1bmN0aW9uNjoKICAgICAgICAgcmV0dXJuIGtWS19GNjsKLSAgICBjYXNlIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkZ1bmN0aW9uNzoKKyAgICBjYXNlIFZp
cnR1YWxLZXk6OkZ1bmN0aW9uNzoKICAgICAgICAgcmV0dXJuIGtWS19GNzsKLSAgICBjYXNlIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkZ1bmN0aW9uODoKKyAg
ICBjYXNlIFZpcnR1YWxLZXk6OkZ1bmN0aW9uODoKICAgICAgICAgcmV0dXJuIGtWS19GODsKLSAg
ICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkZ1bmN0
aW9uOToKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkZ1bmN0aW9uOToKICAgICAgICAgcmV0dXJuIGtW
S19GOTsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxL
ZXk6OkZ1bmN0aW9uMTA6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpGdW5jdGlvbjEwOgogICAgICAg
ICByZXR1cm4ga1ZLX0YxMDsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRp
b246OlZpcnR1YWxLZXk6OkZ1bmN0aW9uMTE6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpGdW5jdGlv
bjExOgogICAgICAgICByZXR1cm4ga1ZLX0YxMTsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkZ1bmN0aW9uMTI6CisgICAgY2FzZSBWaXJ0dWFs
S2V5OjpGdW5jdGlvbjEyOgogICAgICAgICByZXR1cm4ga1ZLX0YxMjsKICAgICB9CiB9CiAKLXN0
YXRpYyBOU0V2ZW50TW9kaWZpZXJGbGFncyBldmVudE1vZGlmaWVyRmxhZ3NGb3JWaXJ0dWFsS2V5
KEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXkga2V5KQorc3RhdGlj
IE5TRXZlbnRNb2RpZmllckZsYWdzIGV2ZW50TW9kaWZpZXJGbGFnc0ZvclZpcnR1YWxLZXkoVmly
dHVhbEtleSBrZXkpCiB7CiAgICAgLy8gQ29tcHV0ZXMgdGhlIG1vZGlmaWVycyBjaGFuZ2VkIGJ5
IHRoZSB2aXJ0dWFsIGtleSB3aGVuIGl0IGlzIHByZXNzZWQgb3IgcmVsZWFzZWQuCiAgICAgLy8g
VGhlIG1hcHBpbmcgZnJvbSBrZXlzIHRvIG1vZGlmaWVycyBpcyBzcGVjaWZpZWQgaW4gdGhlIGRv
Y3VtZW50YXRpb24gZm9yIE5TRXZlbnQuCiAgICAgc3dpdGNoIChrZXkpIHsKLSAgICBjYXNlIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OlNoaWZ0OgorICAgIGNh
c2UgVmlydHVhbEtleTo6U2hpZnQ6CiAgICAgICAgIHJldHVybiBOU0V2ZW50TW9kaWZpZXJGbGFn
U2hpZnQ7CiAKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1
YWxLZXk6OkNvbnRyb2w6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpDb250cm9sOgogICAgICAgICBy
ZXR1cm4gTlNFdmVudE1vZGlmaWVyRmxhZ0NvbnRyb2w7CiAKLSAgICBjYXNlIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkFsdGVybmF0ZToKKyAgICBjYXNlIFZp
cnR1YWxLZXk6OkFsdGVybmF0ZToKICAgICAgICAgcmV0dXJuIE5TRXZlbnRNb2RpZmllckZsYWdP
cHRpb247CiAKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1
YWxLZXk6Ok1ldGE6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpNZXRhOgogICAgICAgICAvLyBUaGUg
J21ldGEnIGtleSBkb2VzIG5vdCBleGlzdCBvbiBBcHBsZSBrZXlib2FyZHMgYW5kIGlzIHVzdWFs
bHkKICAgICAgICAgLy8gbWFwcGVkIHRvIHRoZSBDb21tYW5kIGtleSB3aGVuIHVzaW5nIHRoaXJk
LXBhcnR5IGtleWJvYXJkcy4KLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRp
b246OlZpcnR1YWxLZXk6OkNvbW1hbmQ6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpDb21tYW5kOgog
ICAgICAgICByZXR1cm4gTlNFdmVudE1vZGlmaWVyRmxhZ0NvbW1hbmQ7CiAKLSAgICBjYXNlIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkhlbHA6CisgICAgY2Fz
ZSBWaXJ0dWFsS2V5OjpIZWxwOgogICAgICAgICByZXR1cm4gTlNFdmVudE1vZGlmaWVyRmxhZ0hl
bHAgfCBOU0V2ZW50TW9kaWZpZXJGbGFnRnVuY3Rpb247CiAKLSAgICBjYXNlIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OlBhZ2VVcDoKLSAgICBjYXNlIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OlBhZ2VEb3duOgotICAgIGNh
c2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RW5kOgotICAg
IGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6SG9tZToK
KyAgICBjYXNlIFZpcnR1YWxLZXk6OlBhZ2VVcDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OlBhZ2VE
b3duOgorICAgIGNhc2UgVmlydHVhbEtleTo6RW5kOgorICAgIGNhc2UgVmlydHVhbEtleTo6SG9t
ZToKICAgICAgICAgcmV0dXJuIE5TRXZlbnRNb2RpZmllckZsYWdGdW5jdGlvbjsKIAotICAgIGNh
c2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TGVmdEFycm93
OgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6
VXBBcnJvdzoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1
YWxLZXk6OlJpZ2h0QXJyb3c6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uOjpWaXJ0dWFsS2V5OjpEb3duQXJyb3c6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpMZWZ0QXJy
b3c6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpVcEFycm93OgorICAgIGNhc2UgVmlydHVhbEtleTo6
UmlnaHRBcnJvdzoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkRvd25BcnJvdzoKICAgICAgICAgcmV0
dXJuIE5TRXZlbnRNb2RpZmllckZsYWdOdW1lcmljUGFkIHwgTlNFdmVudE1vZGlmaWVyRmxhZ0Z1
bmN0aW9uOwogCi0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0
dWFsS2V5OjpEZWxldGU6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpEZWxldGU6CiAgICAgICAgIHJl
dHVybiBOU0V2ZW50TW9kaWZpZXJGbGFnRnVuY3Rpb247CiAKLSAgICBjYXNlIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkNsZWFyOgotICAgIGNhc2UgSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkMDoKLSAgICBj
YXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBh
ZDE6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5
OjpOdW1iZXJQYWQyOgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6
VmlydHVhbEtleTo6TnVtYmVyUGFkMzoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1
dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZDQ6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlBy
b3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWQ1OgotICAgIGNhc2UgSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkNjoKLSAg
ICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJl
clBhZDc6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFs
S2V5OjpOdW1iZXJQYWQ4OgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlv
bjo6VmlydHVhbEtleTo6TnVtYmVyUGFkOToKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZE11bHRpcGx5OgotICAgIGNhc2UgSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkQWRkOgot
ICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVt
YmVyUGFkU3VidHJhY3Q6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
OjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWRTZXBhcmF0b3I6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlBy
b3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWREZWNpbWFsOgotICAgIGNh
c2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFk
RGl2aWRlOgorICAgIGNhc2UgVmlydHVhbEtleTo6Q2xlYXI6CisgICAgY2FzZSBWaXJ0dWFsS2V5
OjpOdW1iZXJQYWQwOgorICAgIGNhc2UgVmlydHVhbEtleTo6TnVtYmVyUGFkMToKKyAgICBjYXNl
IFZpcnR1YWxLZXk6Ok51bWJlclBhZDI6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWQz
OgorICAgIGNhc2UgVmlydHVhbEtleTo6TnVtYmVyUGFkNDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6
Ok51bWJlclBhZDU6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWQ2OgorICAgIGNhc2Ug
VmlydHVhbEtleTo6TnVtYmVyUGFkNzoKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZDg6
CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWQ5OgorICAgIGNhc2UgVmlydHVhbEtleTo6
TnVtYmVyUGFkTXVsdGlwbHk6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWRBZGQ6Cisg
ICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWRTdWJ0cmFjdDoKKyAgICBjYXNlIFZpcnR1YWxL
ZXk6Ok51bWJlclBhZFNlcGFyYXRvcjoKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZERl
Y2ltYWw6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWREaXZpZGU6CiAgICAgICAgIHJl
dHVybiBOU0V2ZW50TW9kaWZpZXJGbGFnTnVtZXJpY1BhZDsKIAotICAgIGNhc2UgSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RnVuY3Rpb24xOgotICAgIGNhc2Ug
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RnVuY3Rpb24yOgot
ICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RnVu
Y3Rpb24zOgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVh
bEtleTo6RnVuY3Rpb240OgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlv
bjo6VmlydHVhbEtleTo6RnVuY3Rpb241OgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RnVuY3Rpb242OgotICAgIGNhc2UgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RnVuY3Rpb243OgotICAgIGNhc2UgSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RnVuY3Rpb244OgotICAg
IGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RnVuY3Rp
b245OgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtl
eTo6RnVuY3Rpb24xMDoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246
OlZpcnR1YWxLZXk6OkZ1bmN0aW9uMTE6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpB
dXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjEyOgorICAgIGNhc2UgVmlydHVhbEtleTo6
RnVuY3Rpb24xOgorICAgIGNhc2UgVmlydHVhbEtleTo6RnVuY3Rpb24yOgorICAgIGNhc2UgVmly
dHVhbEtleTo6RnVuY3Rpb24zOgorICAgIGNhc2UgVmlydHVhbEtleTo6RnVuY3Rpb240OgorICAg
IGNhc2UgVmlydHVhbEtleTo6RnVuY3Rpb241OgorICAgIGNhc2UgVmlydHVhbEtleTo6RnVuY3Rp
b242OgorICAgIGNhc2UgVmlydHVhbEtleTo6RnVuY3Rpb243OgorICAgIGNhc2UgVmlydHVhbEtl
eTo6RnVuY3Rpb244OgorICAgIGNhc2UgVmlydHVhbEtleTo6RnVuY3Rpb245OgorICAgIGNhc2Ug
VmlydHVhbEtleTo6RnVuY3Rpb24xMDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkZ1bmN0aW9uMTE6
CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpGdW5jdGlvbjEyOgogICAgICAgICByZXR1cm4gTlNFdmVu
dE1vZGlmaWVyRmxhZ0Z1bmN0aW9uOwogCiAgICAgZGVmYXVsdDoKQEAgLTQyNywxOSArNDI3LDM0
IEBAIHN0YXRpYyBOU0V2ZW50TW9kaWZpZXJGbGFncyBldmVudE1vZGlmaWVyRmxhZ3NGb3JWaXJ0
dWFsS2V5KEluc3BlY3Rvcjo6UHJvdG9jb2w6CiAgICAgfQogfQogCi12b2lkIFdlYkF1dG9tYXRp
b25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlS2V5U3Ryb2tlKFdlYlBhZ2VQcm94eSYgcGFnZSwg
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6S2V5Ym9hcmRJbnRlcmFjdGlvblR5cGUg
aW50ZXJhY3Rpb24sIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXkg
a2V5KQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZUtleWJvYXJk
SW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBLZXlib2FyZEludGVyYWN0aW9uIGludGVy
YWN0aW9uLCBzdGQ6Om9wdGlvbmFsPFZpcnR1YWxLZXk+IHZpcnR1YWxLZXksIHN0ZDo6b3B0aW9u
YWw8Q2hhcktleT4gY2hhcktleSkKIHsKICAgICAvLyBGSVhNRTogdGhpcyBmdW5jdGlvbiBhbmQg
dGhlIEF1dG9tYXRpb24gcHJvdG9jb2wgZW51bSBzaG91bGQgcHJvYmFibHkgYWRvcHQga2V5IG5h
bWVzCiAgICAgLy8gZnJvbSBXM0MgVUlFdmVudHMgc3RhbmRhcmQuIEZvciBtb3JlIGRldGFpbHM6
IGh0dHBzOi8vdzNjLmdpdGh1Yi5pby91aWV2ZW50cy1jb2RlLwogCi0gICAgYm9vbCBpc1N0aWNr
eU1vZGlmaWVyID0ga2V5SGFzU3RpY2t5TW9kaWZpZXIoa2V5KTsKLSAgICBOU0V2ZW50TW9kaWZp
ZXJGbGFncyBjaGFuZ2VkTW9kaWZpZXJzID0gZXZlbnRNb2RpZmllckZsYWdzRm9yVmlydHVhbEtl
eShrZXkpOwotICAgIGludCBrZXlDb2RlID0ga2V5Q29kZUZvclZpcnR1YWxLZXkoa2V5KTsKKyAg
ICBBU1NFUlQodmlydHVhbEtleS5oYXNfdmFsdWUoKSB8fCBjaGFyS2V5Lmhhc192YWx1ZSgpKTsK
KworICAgIGJvb2wgaXNTdGlja3lNb2RpZmllciA9IGZhbHNlOworICAgIE5TRXZlbnRNb2RpZmll
ckZsYWdzIGNoYW5nZWRNb2RpZmllcnMgPSAwOworICAgIGludCBrZXlDb2RlOworICAgIHN0ZDo6
b3B0aW9uYWw8dW5pY2hhcj4gY2hhckNvZGU7CisgICAgc3RkOjpvcHRpb25hbDx1bmljaGFyPiBj
aGFyQ29kZUlnbm9yaW5nTW9kaWZpZXJzOworCisgICAgaWYgKHZpcnR1YWxLZXkuaGFzX3ZhbHVl
KCkpIHsKKyAgICAgICAgaXNTdGlja3lNb2RpZmllciA9IHZpcnR1YWxLZXlIYXNTdGlja3lNb2Rp
Zmllcih2aXJ0dWFsS2V5LnZhbHVlKCkpOworICAgICAgICBjaGFuZ2VkTW9kaWZpZXJzID0gZXZl
bnRNb2RpZmllckZsYWdzRm9yVmlydHVhbEtleSh2aXJ0dWFsS2V5LnZhbHVlKCkpOworICAgICAg
ICBrZXlDb2RlID0ga2V5Q29kZUZvclZpcnR1YWxLZXkodmlydHVhbEtleS52YWx1ZSgpKTsKKyAg
ICAgICAgY2hhckNvZGUgPSBjaGFyQ29kZUZvclZpcnR1YWxLZXkodmlydHVhbEtleS52YWx1ZSgp
KTsKKyAgICAgICAgY2hhckNvZGVJZ25vcmluZ01vZGlmaWVycyA9IGNoYXJDb2RlSWdub3JpbmdN
b2RpZmllcnNGb3JWaXJ0dWFsS2V5KHZpcnR1YWxLZXkudmFsdWUoKSk7CisgICAgfQorCisgICAg
aWYgKGNoYXJLZXkuaGFzX3ZhbHVlKCkpIHsKKyAgICAgICAgY2hhckNvZGUgPSAodW5pY2hhcilj
aGFyS2V5LnZhbHVlKCk7CisgICAgICAgIGNoYXJDb2RlSWdub3JpbmdNb2RpZmllcnMgPSAodW5p
Y2hhciljaGFyS2V5LnZhbHVlKCk7CisgICAgfQogCiAgICAgLy8gRklYTUU6IGNvbnNpZGVyIHVz
aW5nIEFwcEtpdCBTUEkgdG8gbm9ybWFsaXplICdjaGFyYWN0ZXJzJywgaS5lLiwgY2hhbmdpbmcg
KiB0byBTaGlmdC04LAogICAgIC8vIGFuZCBwYXNzaW5nIHRoYXQgaW4gdG8gY2hhcmFjdGVyc0ln
bm9yaW5nTW9kaWZpZXJzLiBXZSBjb3VsZCBoYXJkY29kZSB0aGlzIGZvciBBU0NJSSBpZiBuZWVk
ZWQuCi0gICAgc3RkOjpvcHRpb25hbDx1bmljaGFyPiBjaGFyQ29kZSA9IGNoYXJDb2RlRm9yVmly
dHVhbEtleShrZXkpOwotICAgIHN0ZDo6b3B0aW9uYWw8dW5pY2hhcj4gY2hhckNvZGVJZ25vcmlu
Z01vZGlmaWVycyA9IGNoYXJDb2RlSWdub3JpbmdNb2RpZmllcnNGb3JWaXJ0dWFsS2V5KGtleSk7
CiAgICAgTlNTdHJpbmcgKmNoYXJhY3RlcnMgPSBjaGFyQ29kZSA/IFtOU1N0cmluZyBzdHJpbmdX
aXRoQ2hhcmFjdGVyczomY2hhckNvZGUudmFsdWUoKSBsZW5ndGg6MV0gOiBuaWw7CiAgICAgTlNT
dHJpbmcgKnVubW9kaWZpZWRDaGFyYWN0ZXJzID0gY2hhckNvZGVJZ25vcmluZ01vZGlmaWVycyA/
IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2hhckNvZGVJZ25vcmluZ01vZGlmaWVy
cy52YWx1ZSgpIGxlbmd0aDoxXSA6IG5pbDsKIApAQCAtNDUyLDE5ICs0NjcsMTkgQEAgdm9pZCBX
ZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZUtleVN0cm9rZShXZWJQYWdlUHJv
eHkmIHBhZ2UsIEluc3BlY3QKICAgICBOU1BvaW50IGV2ZW50UG9zaXRpb24gPSBOU01ha2VQb2lu
dCgwLCB3aW5kb3cuZnJhbWUuc2l6ZS5oZWlnaHQpOwogCiAgICAgc3dpdGNoIChpbnRlcmFjdGlv
bikgewotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6S2V5Ym9hcmRJ
bnRlcmFjdGlvblR5cGU6OktleVByZXNzOiB7CisgICAgY2FzZSBLZXlib2FyZEludGVyYWN0aW9u
OjpLZXlQcmVzczogewogICAgICAgICBOU0V2ZW50VHlwZSBldmVudFR5cGUgPSBpc1N0aWNreU1v
ZGlmaWVyID8gTlNFdmVudFR5cGVGbGFnc0NoYW5nZWQgOiBOU0V2ZW50VHlwZUtleURvd247CiAg
ICAgICAgIG1fY3VycmVudE1vZGlmaWVycyB8PSBjaGFuZ2VkTW9kaWZpZXJzOwogICAgICAgICBb
ZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltOU0V2ZW50IGtleUV2ZW50V2l0aFR5cGU6ZXZlbnRU
eXBlIGxvY2F0aW9uOmV2ZW50UG9zaXRpb24gbW9kaWZpZXJGbGFnczptX2N1cnJlbnRNb2RpZmll
cnMgdGltZXN0YW1wOnRpbWVzdGFtcCB3aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6
bmlsIGNoYXJhY3RlcnM6Y2hhcmFjdGVycyBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6dW5t
b2RpZmllZENoYXJhY3RlcnMgaXNBUmVwZWF0Ok5PIGtleUNvZGU6a2V5Q29kZV1dOwogICAgICAg
ICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
OjpLZXlib2FyZEludGVyYWN0aW9uVHlwZTo6S2V5UmVsZWFzZTogeworICAgIGNhc2UgS2V5Ym9h
cmRJbnRlcmFjdGlvbjo6S2V5UmVsZWFzZTogewogICAgICAgICBOU0V2ZW50VHlwZSBldmVudFR5
cGUgPSBpc1N0aWNreU1vZGlmaWVyID8gTlNFdmVudFR5cGVGbGFnc0NoYW5nZWQgOiBOU0V2ZW50
VHlwZUtleVVwOwogICAgICAgICBtX2N1cnJlbnRNb2RpZmllcnMgJj0gfmNoYW5nZWRNb2RpZmll
cnM7CiAgICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmplY3Q6W05TRXZlbnQga2V5RXZlbnRX
aXRoVHlwZTpldmVudFR5cGUgbG9jYXRpb246ZXZlbnRQb3NpdGlvbiBtb2RpZmllckZsYWdzOm1f
Y3VycmVudE1vZGlmaWVycyB0aW1lc3RhbXA6dGltZXN0YW1wIHdpbmRvd051bWJlcjp3aW5kb3dO
dW1iZXIgY29udGV4dDpuaWwgY2hhcmFjdGVyczpjaGFyYWN0ZXJzIGNoYXJhY3RlcnNJZ25vcmlu
Z01vZGlmaWVyczp1bm1vZGlmaWVkQ2hhcmFjdGVycyBpc0FSZXBlYXQ6Tk8ga2V5Q29kZTprZXlD
b2RlXV07CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkF1dG9tYXRpb246OktleWJvYXJkSW50ZXJhY3Rpb25UeXBlOjpJbnNlcnRCeUtleTogewor
ICAgIGNhc2UgS2V5Ym9hcmRJbnRlcmFjdGlvbjo6SW5zZXJ0QnlLZXk6IHsKICAgICAgICAgLy8g
U3RpY2t5IG1vZGlmaWVycyBzaG91bGQgZWl0aGVyIGJlICdLZXlQcmVzcycgb3IgJ0tleVJlbGVh
c2UnLgogICAgICAgICBBU1NFUlQoIWlzU3RpY2t5TW9kaWZpZXIpOwogICAgICAgICBpZiAoaXNT
dGlja3lNb2RpZmllcikKQEAgLTU1MSw3ICs1NjYsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNz
aW9uOjpwbGF0Zm9ybVNpbXVsYXRlS2V5U2VxdWVuY2UoV2ViUGFnZVByb3h5JiBwYWdlLCBjb25z
dAogCiAgICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmplY3Q6W05TRXZlbnQga2V5RXZlbnRX
aXRoVHlwZTpOU0V2ZW50VHlwZUtleURvd24gbG9jYXRpb246ZXZlbnRQb3NpdGlvbiBtb2RpZmll
ckZsYWdzOm1vZGlmaWVyc0ZvcktleXN0cm9rZSB0aW1lc3RhbXA6dGltZXN0YW1wIHdpbmRvd051
bWJlcjp3aW5kb3dOdW1iZXIgY29udGV4dDpuaWwgY2hhcmFjdGVyczpzdWJzdHJpbmcgY2hhcmFj
dGVyc0lnbm9yaW5nTW9kaWZpZXJzOnN1YnN0cmluZyBpc0FSZXBlYXQ6Tk8ga2V5Q29kZTowXV07
CiAgICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmplY3Q6W05TRXZlbnQga2V5RXZlbnRXaXRo
VHlwZTpOU0V2ZW50VHlwZUtleVVwIGxvY2F0aW9uOmV2ZW50UG9zaXRpb24gbW9kaWZpZXJGbGFn
czptb2RpZmllcnNGb3JLZXlzdHJva2UgdGltZXN0YW1wOnRpbWVzdGFtcCB3aW5kb3dOdW1iZXI6
d2luZG93TnVtYmVyIGNvbnRleHQ6bmlsIGNoYXJhY3RlcnM6c3Vic3RyaW5nIGNoYXJhY3RlcnNJ
Z25vcmluZ01vZGlmaWVyczpzdWJzdHJpbmcgaXNBUmVwZWF0Ok5PIGtleUNvZGU6MF1dOwotICAg
ICAgICAKKwogICAgICAgICBpZiAoc2hvdWxkUHJlc3NTaGlmdCkKICAgICAgICAgICAgIFtldmVu
dHNUb0JlU2VudCBhZGRPYmplY3Q6W05TRXZlbnQga2V5RXZlbnRXaXRoVHlwZTpOU0V2ZW50VHlw
ZUZsYWdzQ2hhbmdlZCBsb2NhdGlvbjpldmVudFBvc2l0aW9uIG1vZGlmaWVyRmxhZ3M6bV9jdXJy
ZW50TW9kaWZpZXJzIHRpbWVzdGFtcDp0aW1lc3RhbXAgd2luZG93TnVtYmVyOndpbmRvd051bWJl
ciBjb250ZXh0Om5pbCBjaGFyYWN0ZXJzOkAiIiBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6
QCIiIGlzQVJlcGVhdDpOTyBrZXlDb2RlOmtWS19TaGlmdF1dOwogICAgIH1dOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYWQxNTQ3NTkw
YzZmZDNhMDg1ZDFkNGVmOWQ2Y2NjOTA1YTM3NjZlZC4uZTc5YWE5YTY1ZTllMTdjNDQ4MTM5MTZj
M2I1NTM1MmNiMGI4ODVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0xNTI5LDYgKzE1MjksOCBAQAogCQk5OTQ2RUY4NjFFN0IwMjcw
MDA1NDFFNzkgLyogV2ViQXV0b21hdGlvblNlc3Npb25JT1MubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTQ2RUY4NTFFN0IwMjY2MDA1NDFFNzkgLyog
V2ViQXV0b21hdGlvblNlc3Npb25JT1MubW0gKi87IH07CiAJCTk5NEJBREYzMUY3RDc4MTEwMEI1
NzFFNyAvKiBXS0luc3BlY3RvclZpZXdDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk0QkFERjIxRjdENzdFQjAwQjU3MUU3IC8qIFdL
SW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0gKi87IH07CiAJCTk5NEJBREY0MUY3RDc4MTQwMEI1
NzFFNyAvKiBXS0luc3BlY3RvclZpZXdDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTRCQURGMTFGN0Q3N0VBMDBCNTcxRTcgLyogV0tJ
bnNwZWN0b3JWaWV3Q29udHJvbGxlci5oICovOyB9OworCQk5OTUyMjZENjIwN0QxODQ2MDBGNzg0
MjAgLyogU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTUyMjZENDIwN0QxODQ1MDBGNzg0MjAgLyogU2ltdWxh
dGVkSW5wdXREaXNwYXRjaGVyLmggKi87IH07CisJCTk5NTIyNkQ3MjA3RDE4NDYwMEY3ODQyMCAv
KiBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTk1MjI2RDUyMDdEMTg0NjAwRjc4NDIwIC8qIFNpbXVsYXRl
ZElucHV0RGlzcGF0Y2hlci5jcHAgKi87IH07CiAJCTk5NTVBNkVDMUM3OTgwQzIwMEVCNkE5MyAv
KiBXZWJBdXRvbWF0aW9uU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTk1NUE2RUIxQzc5ODBCQjAwRUI2QTkzIC8qIFdlYkF1dG9tYXRpb25T
ZXNzaW9uLmggKi87IH07CiAJCTk5NTVBNkVEMUM3OTgwQ0EwMEVCNkE5MyAvKiBXZWJBdXRvbWF0
aW9uU2Vzc2lvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5OTU1QTZFQTFDNzk4MEJCMDBFQjZBOTMgLyogV2ViQXV0b21hdGlvblNlc3Npb24uY3Bw
ICovOyB9OwogCQk5OTU1QTZFRjFDNzk4MTA4MDBFQjZBOTMgLyogQXV0b21hdGlvbi5qc29uIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk1NUE2RTkxQzc5
ODBCQjAwRUI2QTkzIC8qIEF1dG9tYXRpb24uanNvbiAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNDAxOSw2ICs0MDIxLDggQEAKIAkJOTk0NkVGODUx
RTdCMDI2NjAwNTQxRTc5IC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uSU9TLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViQXV0b21hdGlvblNlc3Npb25JT1MubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5NEJBREYxMUY3RDc3RUEwMEI1NzFFNyAv
KiBXS0luc3BlY3RvclZpZXdDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTk0QkFERjIxRjdENzdFQjAwQjU3MUU3IC8qIFdLSW5zcGVjdG9yVmlld0NvbnRy
b2xsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS0luc3Bl
Y3RvclZpZXdDb250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OTUy
MjZENDIwN0QxODQ1MDBGNzg0MjAgLyogU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OTUyMjZENTIwN0QxODQ2MDBGNzg0MjAgLyog
U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTk5NTVBNkU5MUM3OTgwQkIwMEVCNkE5MyAvKiBBdXRvbWF0aW9uLmpzb24g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0Lmpzb247IHBhdGggPSBBdXRvbWF0aW9uLmpzb247IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTk5NTVBNkVBMUM3OTgwQkIwMEVCNkE5MyAvKiBXZWJBdXRvbWF0
aW9uU2Vzc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJB
dXRvbWF0aW9uU2Vzc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5NTVB
NkVCMUM3OTgwQkIwMEVCNkE5MyAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBdXRvbWF0aW9uU2Vzc2lvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNjk3MCw2ICs2OTc0LDggQEAKIAkJCQk5OTQ2RUY4MjFFN0Iw
MjNEMDA1NDFFNzkgLyogaW9zICovLAogCQkJCTk5QzNBRTIyMURBRDhFMTQwMEFGNUMxNiAvKiBt
YWMgKi8sCiAJCQkJOTk1NUE2RTkxQzc5ODBCQjAwRUI2QTkzIC8qIEF1dG9tYXRpb24uanNvbiAq
LywKKwkJCQk5OTUyMjZENTIwN0QxODQ2MDBGNzg0MjAgLyogU2ltdWxhdGVkSW5wdXREaXNwYXRj
aGVyLmNwcCAqLywKKwkJCQk5OTUyMjZENDIwN0QxODQ1MDBGNzg0MjAgLyogU2ltdWxhdGVkSW5w
dXREaXNwYXRjaGVyLmggKi8sCiAJCQkJOTk1NUE2RUExQzc5ODBCQjAwRUI2QTkzIC8qIFdlYkF1
dG9tYXRpb25TZXNzaW9uLmNwcCAqLywKIAkJCQk5OTU1QTZFQjFDNzk4MEJCMDBFQjZBOTMgLyog
V2ViQXV0b21hdGlvblNlc3Npb24uaCAqLywKIAkJCQkxQzBBMTk1OTFDOTAwNkVBMDBGRTBFQkIg
LyogV2ViQXV0b21hdGlvblNlc3Npb24ubWVzc2FnZXMuaW4gKi8sCkBAIC05MTc0LDYgKzkxODAs
NyBAQAogCQkJCTgzMTNGN0VDMUY3REFFMDgwMEI5NDRFQiAvKiBTaGFyZWRTdHJpbmdIYXNoU3Rv
cmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzMTNGN0VFMUY3REFFMDgwMEI5NDRFQiAvKiBTaGFy
ZWRTdHJpbmdIYXNoVGFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzRjk2NDRFMUZBMEY3NkUw
MEM0Nzc1MCAvKiBTaGFyZWRTdHJpbmdIYXNoVGFibGVSZWFkT25seS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJOTk1MjI2RDYyMDdEMTg0NjAwRjc4NDIwIC8qIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRBRjA2RDYxOEJEMUE0NzAwODFDRUIxIC8qIFNtYXJ0
TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTJERTY5NDNFMThC
RDJBNjgwMDVDMTVFNSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZXMuaCBp
biBIZWFkZXJzICovLAogCQkJCTUyNzJCMjhCMTQwNjk4NUQwMDk2QTVEMCAvKiBTdGF0aXN0aWNz
RGF0YS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDg3Niw2ICsxMDg4Myw3IEBACiAJCQkJODMxM0Y3
RUIxRjdEQUUwODAwQjk0NEVCIC8qIFNoYXJlZFN0cmluZ0hhc2hTdG9yZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk4MzEzRjdFRDFGN0RBRTA4MDBCOTQ0RUIgLyogU2hhcmVkU3RyaW5nSGFzaFRh
YmxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTgzRjk2NDREMUZBMEY3NkUwMEM0Nzc1MCAvKiBT
aGFyZWRTdHJpbmdIYXNoVGFibGVSZWFkT25seS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5OTUy
MjZENzIwN0QxODQ2MDBGNzg0MjAgLyogU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTJEQUYwNkQ3MThCRDFBNDcwMDgxQ0VCMSAvKiBTbWFydE1hZ25pZmlj
YXRpb25Db250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkRFNjk0M0QxOEJEMkE2ODAw
NUMxNUU1IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTI3MkIyOEExNDA2OTg1RDAwOTZBNUQwIC8qIFN0YXRpc3Rp
Y3NEYXRhLmNwcCBpbiBTb3VyY2VzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338286</attachid>
            <date>2018-04-18 17:14:46 -0700</date>
            <delta_ts>2018-04-19 14:59:15 -0700</delta_ts>
            <desc>Address Carlos&apos; comments</desc>
            <filename>bug-184603-20180418171445.patch</filename>
            <type>text/plain</type>
            <size>103437</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwNzQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDBjZGIxNmRjODZiNGYwNzYx
MmYxNjg2MzUzNzJlNGFmZGU4NWZjNTAuLjFmM2VkMGMwODI5ZTkzNjY2NDI1MTgxMTc5NmNhZWIx
OTU3ZTUzMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTI5IEBACisyMDE4LTA0LTEzICBCcmlhbiBC
dXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBBdXRvbWF0aW9uOiBhZGQgc3Vw
cG9ydCBmb3IgbW91c2Uva2V5Ym9hcmQgaW50ZXJhY3Rpb24gc2VxdWVuY2VzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQ2MDMKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzM5NDIxODM5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCBuZXcgcHJvdG9jb2wgbWV0aG9kcyBhbmQgV2ViS2l0IHN1cHBv
cnQgZm9yIGltcGxlbWVudGluZyB0aGUgVzNDIEFjdGlvbnMgQVBJLgorICAgICAgICBUaGlzIGlz
IGEgZ2VuZXJpYyBjb21tYW5kIGZvciBzZW5kaW5nIGxvdy1sZXZlbCBtb3VzZSwga2V5LCBhbmQg
dG91Y2ggZXZlbnRzIHRvCisgICAgICAgIHRlc3QgcGFnZSBiZWhhdmlvciB3aGVuIHBlcmZvcm1p
bmcgZHJhZy1hbmQtZHJvcCwgZ2VzdHVyZXMsIG9yIHNwZWNpZmljIGtleWRvd24va2V5dXBzLgor
CisgICAgICAgIFRvIGltcGxlbWVudCB0aGlzIGZ1bmN0aW9uYWxpdHksIHRoaXMgcGF0Y2ggYWRk
cyBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIsIGEgY2xhc3MKKyAgICAgICAgZm9yIGRpc3BhdGNo
aW5nIGlucHV0IGV2ZW50cyBhc3luY2hyb25vdXNseS4gU2ltaWxhciB0byB0aGUgV2ViRHJpdmVy
IHNwZWNpZmljYXRpb24sCisgICAgICAgIHRoaXMgaXMgZGVzaWduZWQgYXMgYSBrZXlmcmFtaW5n
IEFQSS4gQ2FsbGVycyBzZXQgdXAgc2V2ZXJhbCAiaW5wdXQgc291cmNlcyIgc3VjaAorICAgICAg
ICBhcyBrZXlib2FyZCBvciBtb3VzZSwgYW5kIHRoZW4gc3BlY2lmeSB0aGUgc3RhdGVzIG9mIHRo
YXQgaW5wdXQgc291cmNlIG92ZXIgdGltZS4gVGhlCisgICAgICAgIGRpc3BhdGNoZXIgY2FsY3Vs
YXRlcyBkaWZmcyBiZXR3ZWVuIHRoZSBwcmV2aW91cyBhbmQgY3VycmVudCBrZXlmcmFtZXMgYW5k
IGdlbmVyYXRlcworICAgICAgICB0aGUgYXBwcm9wcmlhdGUgZXZlbnRzIHRoYXQgd291bGQgaGFw
cGVuIGlmIGEgdXNlciBjYXVzZWQgdGhlIHN0YXRlIHRyYW5zaXRpb24uCisKKyAgICAgICAgRm9y
IGV4YW1wbGUsIGlmIGEgbW91c2UgaW5wdXQgc291cmNlJ3Mgc3RhdGUgY2hhbmdlcywgdGhlIGRp
c3BhdGNoZXIgc2VuZHMgc3ludGhldGljIG1vdXNlbW92ZSwKKyAgICAgICAgbW91c2Vkb3duLCBv
ciBtb3VzZXVwIGV2ZW50cyBkZXBlbmRpbmcgb24gdGhlIHByZS0gYW5kIHBvc3Qtc3RhdGUuIFRo
aXMgaXMgdW5pbnRlcmVzdGluZworICAgICAgICBhbmQgb3ZlcmNvbXBsaWNhdGVkIGZvciBzaW1w
bGUga2V5IGFuZCBtb3VzZSBwcmVzc2VzLCBidXQgaXQncyByZWFsbHkgZGVzaWduZWQgd2l0aCBh
bgorICAgICAgICBleWUgdG93YXJkcyBzdXBwb3J0aW5nIG1vdXNlbW92ZSBpbnRlcnBvbGF0aW9u
IGFuZCB0b3VjaCBldmVudCBpbnRlcnBvbGF0aW9uIGluIGxhdGVyIHBhdGNoZXMuCisKKyAgICAg
ICAgVGhlIHN0cmF0ZWd5IGZvciBkaXNwYXRjaGluZyBldmVudHMgZGVwZW5kcyBvbiB0aGUgaW5w
dXQgc291cmNlIHR5cGU7IHJpZ2h0IG5vdywgdGhlc2UKKyAgICAgICAgbWFwIGRpcmVjdGx5IHRv
IHRoZSBleGlzdGluZyBwbGF0Zm9ybVNpbXVsYXRle01vdXNlLCBLZXlib2FyZH1JbnRlcmFjdGlv
biBtZXRob2RzLiBJbgorICAgICAgICB0aGUgZnV0dXJlLCB0aGUgZGlzcGF0Y2ggc3RyYXRlZ3kg
bWF5IGJlIGVsYWJvcmF0ZWQgZm9yIGludGVycG9sYXRlZCBtb3VzZW1vdmUgZXZlbnRzLgorCisg
ICAgICAgIFRoaXMgcGF0Y2ggZGVwZW5kcyBvbiBzdXBwb3J0IGFkZGVkIGluIGJ1ZyAxODQ0NjIu
CisKKyAgICAgICAgTm8gdGVzdHMgeWV0LiBXaGVuIHRoaXMgY29tbWFuZCBpcyBob29rZWQgdXAg
dG8gYSBkcml2ZXIsIHRoZSBjb2RlIHdpbGwgYmUgZXhlcmNpc2VkIGJ5CisgICAgICAgIFczQyBh
Y3Rpb25zIHRlc3Qgc3VpdGUsIHdoaWNoIGlzIGZhaXJseSBjb21wbGV4IGF0IHRoaXMgcG9pbnQg
cmVsYXRpdmUgdG8gZW5kLXVzZXIgY29kZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0
aW9uL0F1dG9tYXRpb24uanNvbjogQWRkIG5ldyB0eXBlcyBhbmQgY29tbWFuZHMuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9TaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuaDogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6OlNpbXVsYXRlZElucHV0U291cmNlU3RhdGU6OmVtcHR5U3Rh
dGUpOgorICAgICAgICAoV2ViS2l0OjpTaW11bGF0ZWRJbnB1dFNvdXJjZTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYktpdDo6U2ltdWxhdGVkSW5wdXRTb3VyY2U6OlNpbXVsYXRlZElucHV0U291cmNl
KToKKyAgICAgICAgKFdlYktpdDo6U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjpDbGllbnQ6On5D
bGllbnQpOgorICAgICAgICBBZGQgc3RydWN0cyBmb3IgaW5wdXQgc291cmNlLCBzb3VyY2Ugc3Rh
dGUsIGFuZCBrZXlmcmFtZS4KKyAgICAgICAgVGhlIGRpc3BhdGNoZXIncyBjbGllbnQgaW50ZXJm
YWNlIGlzIGltcGxlbWVudGVkIGJ5IFdlYkF1dG9tYXRpb25TZXNzaW9uLgorCisgICAgICAgIChX
ZWJLaXQ6OlNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQXV0b21hdGlvbi9TaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6U2ltdWxhdGVkSW5wdXRLZXlGcmFtZTo6U2ltdWxhdGVkSW5wdXRLZXlG
cmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlNpbXVsYXRlZElucHV0S2V5RnJhbWU6Om1heGltdW1E
dXJhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNpbXVsYXRlZElucHV0S2V5RnJhbWU6
OmtleUZyYW1lRnJvbVN0YXRlT2ZJbnB1dFNvdXJjZXMpOgorICAgICAgICAoV2ViS2l0OjpTaW11
bGF0ZWRJbnB1dEtleUZyYW1lOjprZXlGcmFtZVRvUmVzZXRJbnB1dFNvdXJjZXMpOgorICAgICAg
ICAoV2ViS2l0OjpTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OlNpbXVsYXRlZElucHV0RGlzcGF0
Y2hlcik6CisgICAgICAgIChXZWJLaXQ6OlNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6flNpbXVs
YXRlZElucHV0RGlzcGF0Y2hlcik6CisgICAgICAgIChXZWJLaXQ6OlNpbXVsYXRlZElucHV0RGlz
cGF0Y2hlcjo6aXNBY3RpdmUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTaW11bGF0ZWRJbnB1
dERpc3BhdGNoZXI6OmtleUZyYW1lVHJhbnNpdGlvbkR1cmF0aW9uVGltZXJGaXJlZCk6CisgICAg
ICAgIChXZWJLaXQ6OlNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6aXNLZXlGcmFtZVRyYW5zaXRp
b25Db21wbGV0ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNpbXVsYXRlZElucHV0RGlzcGF0
Y2hlcjo6dHJhbnNpdGlvblRvTmV4dEtleUZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6U2ltdWxh
dGVkSW5wdXREaXNwYXRjaGVyOjp0cmFuc2l0aW9uVG9OZXh0SW5wdXRTb3VyY2VTdGF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6dHJhbnNpdGlvbkJldHdl
ZW5LZXlGcmFtZXMpOgorICAgICAgICAoV2ViS2l0OjpTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6
OnRyYW5zaXRpb25JbnB1dFNvdXJjZVRvU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpTaW11bGF0
ZWRJbnB1dERpc3BhdGNoZXI6OnJ1bik6CisgICAgICAgIChXZWJLaXQ6OlNpbXVsYXRlZElucHV0
RGlzcGF0Y2hlcjo6Y2FuY2VsKToKKyAgICAgICAgKFdlYktpdDo6U2ltdWxhdGVkSW5wdXREaXNw
YXRjaGVyOjpmaW5pc2hEaXNwYXRjaGluZyk6CisgICAgICAgIFRoZSBkaXNwYXRjaGVyIGhhbmRs
ZXMgb25lIGludGVyYWN0aW9uIGF0IGEgdGltZS4gVGhlIGludGVyYWN0aW9uIGlzIGRlc2NyaWJl
ZAorICAgICAgICBieSBhbiBhcnJheSBvZiBrZXlmcmFtZXMsIGFuZCBlYWNoIGtleWZyYW1lIGhh
cyBhbiBhcnJheSBvZiBzdGF0ZXMuIFRoZSBkaXNwYXRjaGVyCisgICAgICAgIHRyYW5zaXRpb25z
IGJldHdlZW4ga2V5ZnJhbWVzIGJ5IHNlcXVlbnRpYWxseSBhbmQgYXN5bmNocm9ub3VzbHkgZW1p
dHRpbmcgZXZlbnRzCisgICAgICAgIHRoYXQgY2F1c2UgZWFjaCBpbnB1dCBzb3VyY2Ugc3RhdGUg
dG8gdHJhbnNpdGlvbiBhcyBkZXNpcmVkLiBLZXlmcmFtZSB0cmFuc2l0aW9ucworICAgICAgICBh
cmUgYWRkaXRpb25hbGx5IGdhdGVkIGJ5IGEgIm1heGltdW0gZHVyYXRpb24iIHRpbWVyLiBFYWNo
IHN0ZXAgdGhhdCB0aGUgZGlzcGF0Y2hlcgorICAgICAgICBleGVjdXRlcyBpcyBhc3luY2hyb25v
dXMsIHNvIHRoZSBkaXNwYXRjaGVyIGtlZXBzIG1vc3Qgc3RhdGUgaW4gbWVtYmVycyBhbmQgdXNl
cworICAgICAgICBlcnJvciBhcmd1bWVudCBsYW1iZGFzIGFzIGNvbXBsZXRpb24gaGFuZGxlcnMg
Zm9yIHZhcmlvdXMgYXN5bmMgdGhpbmdzLgorCisgICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRp
b24vV2ViQXV0b21hdGlvblNlc3Npb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlv
bi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRp
b25TZXNzaW9uOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkF1
dG9tYXRpb25TZXNzaW9uOjppbnB1dERpc3BhdGNoZXJGb3JQYWdlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViQXV0b21hdGlvblNlc3Npb246OmlucHV0U291cmNlRm9yVHlwZSBjb25zdCk6CisgICAg
ICAgIEFkZCBjYW5vbmljYWwgaW5wdXQgc291cmNlcyB0aGF0IGFyZSB1c2VkIHRvIGtlZXAgdHJh
Y2sgb2Ygc3RhdGUgYWNyb3NzCisgICAgICAgIGludGVyYWN0aW9uIHNlcXVlbmNlcy4KKworICAg
ICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6aXNTaW11bGF0aW5nVXNlckludGVy
YWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246Om1v
dXNlRXZlbnRzRmx1c2hlZEZvclBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9u
U2Vzc2lvbjo6a2V5Ym9hcmRFdmVudHNGbHVzaGVkRm9yUGFnZSk6CisgICAgICAgIFJlbW92ZSBt
X3NpbXVsYXRpbmdVc2VySW50ZXJhY3Rpb24gc2luY2UgaXQgY2FuIGJlIGNvbXB1dGVkIGJhc2Vk
IG9uIG90aGVyIG1lbWJlcnMuCisKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Np
b246OndpbGxDbG9zZVBhZ2UpOgorICAgICAgICBJZiB0aGUgcGFnZSBpcyBiZWluZyB0b3JuIGRv
d24sIHN0b3AgdGhlIGRpc3BhdGNoZXIgaWYgbmVlZGVkIGFuZCBjYW5jZWwgYW55CisgICAgICAg
IGNhbGxiYWNrcyB3YWl0aW5nIGZvciBtb3VzZS9rZXkgZXZlbnRzIHRvIGJlIHJldGlyZWQuCisK
KyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OnNpbXVsYXRlTW91c2VJbnRl
cmFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpzaW11bGF0
ZUtleWJvYXJkSW50ZXJhY3Rpb24pOgorICAgICAgICBBZGQgZWFzeS10by11c2UgYXN5bmMgbWV0
aG9kcyBmb3Igc2ltdWxhdGluZyBtb3VzZSBhbmQga2V5IGV2ZW50cy4gVGhlc2UgYXJlCisgICAg
ICAgIGhvb2tlZCB1cCB0byBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIgdXNpbmcgYXN5bmMgY29t
cGxldGlvbiBoYW5kbGVycy4KKworICAgICAgICAoV2ViS2l0Ojpwcm90b2NvbE1vdXNlQnV0dG9u
VG9XZWJNb3VzZUV2ZW50QnV0dG9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNl
c3Npb246OnBlcmZvcm1Nb3VzZUludGVyYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0
b21hdGlvblNlc3Npb246OnBlcmZvcm1LZXlib2FyZEludGVyYWN0aW9ucyk6CisgICAgICAgIEFk
anVzdCBzb21lIG5hbWluZy4KKworICAgICAgICAoV2ViS2l0OjpzaW11bGF0ZWRJbnB1dFNvdXJj
ZVR5cGVGcm9tUHJvdG9jb2xTb3VyY2VUeXBlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21h
dGlvblNlc3Npb246OnBlcmZvcm1JbnRlcmFjdGlvblNlcXVlbmNlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViQXV0b21hdGlvblNlc3Npb246OmNhbmNlbEludGVyYWN0aW9uU2VxdWVuY2UpOgorICAg
ICAgICBBZGQgY29tbWFuZCBoYW5kbGVycyBmb3IgdGhlIG5ldyBhY3Rpb24gY29tbWFuZHMgaW4g
QXV0b21hdGlvbiBwcm90b2NvbC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL2d0
ay9XZWJBdXRvbWF0aW9uU2Vzc2lvbkd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1vdXNlQnV0
dG9uVG9HZGtCdXR0b24pOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6
cGxhdGZvcm1TaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJB
dXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZUtleWJvYXJkSW50ZXJhY3Rpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZUtl
eVN0cm9rZSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRpb24vaW9zL1dl
YkF1dG9tYXRpb25TZXNzaW9uSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9u
U2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZUtleWJvYXJkSW50ZXJhY3Rpb24pOgorICAgICAgICAo
V2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZUtleVN0cm9rZSk6
IERlbGV0ZWQuCisgICAgICAgIFJlbmFtZSB0aGUga2V5Ym9hcmQgcGxhdGZvcm0gbWV0aG9kIHRv
IG1hdGNoIHRoZSBuYW1pbmcgb2YgdGhlIG1vdXNlIHBsYXRmb3JtIG1ldGhvZC4KKyAgICAgICAg
VGFrZSBhZHZhbnRhZ2Ugb2YgdGhlICd1c2luZycgYWxpYXMgdG8gbWFrZSB0aGUgdGVkaW91cyBz
d2l0Y2hlcyBlYXNpZXIgdG8gcmVhZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9u
L21hYy9XZWJBdXRvbWF0aW9uU2Vzc2lvbk1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0
b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVNb3VzZUludGVyYWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6dmlydHVhbEtleUhhc1N0aWNreU1vZGlmaWVyKToKKyAgICAgICAgKFdlYktp
dDo6a2V5Q29kZUZvclZpcnR1YWxLZXkpOgorICAgICAgICAoV2ViS2l0OjpldmVudE1vZGlmaWVy
RmxhZ3NGb3JWaXJ0dWFsS2V5KToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Np
b246OnBsYXRmb3JtU2ltdWxhdGVLZXlib2FyZEludGVyYWN0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6V2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVLZXlTZXF1ZW5jZSk6Cisg
ICAgICAgIChXZWJLaXQ6OmtleUhhc1N0aWNreU1vZGlmaWVyKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVLZXlTdHJva2Up
OiBEZWxldGVkLgorICAgICAgICBBbGxvdyB0aGUga2V5Ym9hcmQgc2ltdWxhdGlvbiBtZXRob2Qg
dG8gdGFrZSBhIHZpcnR1YWwga2V5IGFuZCB1bmljaGFyIHRvIGJldHRlcgorICAgICAgICBtYXRj
aCBob3cgdGhpcyBpcyB1c2VkIGJ5IHRoZSBQZXJmb3JtIEFjdGlvbnMgY29tbWFuZCBhbmQgaXRz
IG1hY2hpbmVyeS4KKworICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorCiAyMDE4LTA0LTExICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgogCiAgICAgICAg
IFdlYiBBdXRvbWF0aW9uOiBzaW11bGF0ZWQgbW91c2UgaW50ZXJhY3Rpb25zIHNob3VsZCBub3Qg
YmUgZG9uZSB1bnRpbCBhc3NvY2lhdGVkIERPTSBldmVudHMgaGF2ZSBiZWVuIGRpc3BhdGNoZWQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vQXV0b21hdGlv
bi5qc29uIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9BdXRvbWF0aW9uLmpz
b24KaW5kZXggN2U4NmQxNDljMjVjMTkxNDA0MjFkMzg4NGE1MWJiNmMwZjllNjI5MC4uYzMxN2Ux
YTI2MjBkOWRlN2NhNmM4YWE2M2FkMzI4NzA5YjEyNmJlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9BdXRvbWF0aW9uLmpzb24KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9BdXRvbWF0aW9uLmpzb24KQEAgLTcyLDcgKzcyLDgg
QEAKICAgICAgICAgICAgICAgICAiRWxlbWVudE5vdEludGVyYWN0YWJsZSIsCiAgICAgICAgICAg
ICAgICAgIkVsZW1lbnROb3RTZWxlY3RhYmxlIiwKICAgICAgICAgICAgICAgICAiU2NyZWVuc2hv
dEVycm9yIiwKLSAgICAgICAgICAgICAgICAiVW5leHBlY3RlZEFsZXJ0T3BlbiIKKyAgICAgICAg
ICAgICAgICAiVW5leHBlY3RlZEFsZXJ0T3BlbiIsCisgICAgICAgICAgICAgICAgIlRhcmdldE91
dE9mQm91bmRzIgogICAgICAgICAgICAgXQogICAgICAgICB9LAogICAgICAgICB7CkBAIC0yNDQs
NiArMjQ1LDQ2IEBACiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJwZXJtaXNzaW9uIiwgIiRy
ZWYiOiAiU2Vzc2lvblBlcm1pc3Npb24iIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ2
YWx1ZSIsICJ0eXBlIjogImJvb2xlYW4iIH0KICAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAg
ICAgICAgeworICAgICAgICAgICAgImlkIjogIklucHV0U291cmNlVHlwZSIsCisgICAgICAgICAg
ICAidHlwZSI6ICJzdHJpbmciLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlRoZSB0eXBl
IG9mIGFuIGlucHV0IHNvdXJjZS4gVGhpcyBkZXRlcm1pbmVzIHdoaWNoIHN0YXRlIHByb3BlcnRp
ZXMgYXJlIGFwcGxpY2FibGUgdG8gdGhlIGlucHV0IHNvdXJjZS4gVGhlICdOdWxsJyBpbnB1dCBz
b3VyY2UgdHlwZSBoYXMgbm8gcHJvcGVydGllcywgb25seSBhIGR1cmF0aW9uLiBUaGlzIGNhbiBl
eHRlbmQgdGhlIGVmZmVjdGl2ZSB3YWl0IGZvciBhIHRpY2suIiwKKyAgICAgICAgICAgICJlbnVt
IjogWworICAgICAgICAgICAgICAgICJOdWxsIiwKKyAgICAgICAgICAgICAgICAiTW91c2UiLAor
ICAgICAgICAgICAgICAgICJLZXlib2FyZCIsCisgICAgICAgICAgICAgICAgIlRvdWNoIgorICAg
ICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAiaWQiOiAiSW5w
dXRTb3VyY2UiLAorICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKKyAgICAgICAgICAgICJw
cm9wZXJ0aWVzIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic291cmNlSWQiLCAidHlw
ZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiQSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhp
cyBpbnB1dCBzb3VyY2UuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic291cmNlVHlw
ZSIsICIkcmVmIjogIklucHV0U291cmNlVHlwZSIsICJkZXNjcmlwdGlvbiI6ICJUaGUgdHlwZSBv
ZiB0aGlzIGlucHV0IHNvdXJjZS4gVGhpcyBhZmZlY3RzIHdoYXQgaW5wdXQgc291cmNlIHN0YXRl
IGZpZWxkcyBhcmUgdmFsaWQgZm9yIHRoaXMgaW5wdXQgc291cmNlLiIgfQorICAgICAgICAgICAg
XQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAiaWQiOiAiSW50ZXJhY3Rpb25T
dGVwIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJBIHNldCBvZiBpbnB1dCBzb3VyY2Ug
c3RhdGVzIHRvIHdoaWNoIGFsbCBhcHBsaWNhYmxlIGlucHV0IHNvdXJjZXMgbXVzdCB0cmFuc2l0
aW9uIGJlZm9yZSBmdXJ0aGVyIHN0ZXBzIG1heSBiZSBwcm9jZXNzZWQuIElmIGFuIGlucHV0IHNv
dXJjZSBkb2VzIG5vdCBoYXZlIGEgY29ycmVzcG9uZGluZyBzdGF0ZSBpbiBhIHN0ZXAsIGl0cyBz
dGF0ZSBhc3N1bWVkIHRvIGJlICdyZWxlYXNlZCcgZm9yIHRoYXQgc3RlcC4iLAorICAgICAgICAg
ICAgInR5cGUiOiAib2JqZWN0IiwKKyAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogWworICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAic3RhdGVzIiwgInR5cGUiOiAiYXJyYXkiLCAiaXRlbXMiOiB7
ICIkcmVmIjogIklucHV0U291cmNlU3RhdGUiIH0sICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlw
dGlvbiI6ICJBIGxpc3Qgb2YgbmV3IGlucHV0IHN0YXRlcyBmb3IgaW5wdXQgc291cmNlcyB0aGF0
IG11c3QgdHJhbnNpdGlvbiBkdXJpbmcgdGhpcyBzdGVwLiBTb3VyY2Ugc3RhdGUgdHJhbnNpdGlv
bnMgdGhhdCBjYW5ub3QgYmUgcGVyZm9ybWVkIGNvbmN1cnJlbnRseSAoaS5lLiwgdG91Y2ggZ2Vz
dHVyZXMpIGFyZSBwZXJmb3JtZWQgc2VxdWVudGlhbGx5IGluIHRoZSBvcmRlciB0aGV5IGFyZSBs
aXN0ZWQuIiB9CisgICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAg
ICAgICJpZCI6ICJJbnB1dFNvdXJjZVN0YXRlIiwKKyAgICAgICAgICAgICJ0eXBlIjogIm9iamVj
dCIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQSBuZXcgc3RhdGUgZm9yIGEgc3BlY2lm
aWMgaW5wdXQgc291cmNlLiBBbGwgc3RhdGUtcmVsYXRlZCBmaWVsZHMgYXJlIG9wdGlvbmFsIGFu
ZCBtdXN0IGJlIGFwcGxpY2FibGUgdG8gdGhlIElucHV0U291cmNlIHJlZmVyZW5jZWQgYnkgJ3Nv
dXJjZUlkJy4gSWYgbm8gc3RhdGUtcmVsYXRlZCBmaWVsZHMgYXJlIHNwZWNpZmllZCwgdGhlIHN0
YXRlIGlzIGFzc3VtZWQgdG8gcmVtYWluIHRoZSBzYW1lIGFzIGluIHRoZSBwcmV2aW91cyBzdGVw
IChpLmUuLCAnc3VzdGFpbmVkJykuIiwKKyAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogWworICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAic291cmNlSWQiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVz
Y3JpcHRpb24iOiAiVGhlIGlucHV0IHNvdXJjZSB3aG9zZSBzdGF0ZSBpcyBkZXNjcmliZWQgYnkg
dGhpcyBvYmplY3QuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicHJlc3NlZENoYXJL
ZXkiLCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAi
Rm9yICdrZXlib2FyZCcgaW5wdXQgc291cmNlcywgc3BlY2lmaWVzIGEgY2hhcmFjdGVyIGtleSB0
aGF0IGhhcyAncHJlc3NlZCcgc3RhdGUuIFVubWVudGlvbmVkIGNoYXJhY3RlciBrZXlzIGFyZSBh
c3N1bWVkIHRvIGhhdmUgYSAncmVsZWFzZWQnIHN0YXRlLiIgfSwKKyAgICAgICAgICAgICAgICB7
ICJuYW1lIjogInByZXNzZWRWaXJ0dWFsS2V5IiwgIiRyZWYiOiAiVmlydHVhbEtleSIsICJvcHRp
b25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJGb3IgJ2tleWJvYXJkJyBpbnB1dCBzb3VyY2Vz
LCBzcGVjaWZpZXMgYSB2aXJ0dWFsIGtleSB0aGF0IGhhcyBhICdwcmVzc2VkJyBzdGF0ZS4gVW5t
ZW50aW9uZWQgdmlydHVhbCBrZXlzIGFyZSBhc3N1bWVkIHRvIGhhdmUgYSAncmVsZWFzZWQnIHN0
YXRlLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInByZXNzZWRCdXR0b24iLCAiJHJl
ZiI6ICJNb3VzZUJ1dHRvbiIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJGb3Ig
J21vdXNlJyBpbnB1dCBzb3VyY2VzLCBzcGVjaWZpZXMgd2hpY2ggbW91c2UgYnV0dG9uIGhhcyBh
ICdwcmVzc2VkJyBzdGF0ZS4gVW5tZW50aW9uZWQgbW91c2UgYnV0dG9ucyBhcmUgYXNzdW1lZCB0
byBoYXZlIGEgJ3JlbGVhc2VkJyBzdGF0ZS4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJsb2NhdGlvbiIsICIkcmVmIjogIlBvaW50IiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0
aW9uIjogIkZvciAnbW91c2UnIG9yICd0b3VjaCcgaW5wdXQgc291cmNlcywgc3BlY2lmaWVzIGEg
bG9jYXRpb24gaW4gdmlldyBjb29yZGluYXRlcyB0byB3aGljaCB0aGUgaW5wdXQgc291cmNlIHNo
b3VsZCB0cmFuc2l0aW9uLiBUcmFuc2l0aW9uaW5nIHRvIHRoaXMgc3RhdGUgbWF5IGludGVycG9s
YXRlIGludGVtZWRpYXRlIGlucHV0IHNvdXJjZSBzdGF0ZXMgdG8gYmV0dGVyIHNpbXVsYXRlIHJl
YWwgdXNlciBtb3ZlbWVudHMgYW5kIGdlc3R1cmVzLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJu
YW1lIjogImR1cmF0aW9uIiwgInR5cGUiOiAiaW50ZWdlciIsICJvcHRpb25hbCI6IHRydWUsICJk
ZXNjcmlwdGlvbiI6ICJUaGUgbWluaW11bSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRoYXQgbXVz
dCBlbGFwc2Ugd2hpbGUgdGhlIHJlbGV2YW50IGlucHV0IHNvdXJjZSB0cmFuc2l0aW9ucyB0byB0
aGlzIHN0YXRlLiIgfQorICAgICAgICAgICAgXQogICAgICAgICB9CiAgICAgXSwKICAgICAiY29t
bWFuZHMiOiBbCkBAIC00MTMsNiArNDU0LDI0IEBACiAgICAgICAgICAgICBdLAogICAgICAgICAg
ICAgImFzeW5jIjogdHJ1ZQogICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAibmFt
ZSI6ICJwZXJmb3JtSW50ZXJhY3Rpb25TZXF1ZW5jZSIsCisgICAgICAgICAgICAiZGVzY3JpcHRp
b24iOiAiUGVyZm9ybSBtdWx0aXBsZSBzaW11bGF0ZWQgaW50ZXJhY3Rpb25zIG92ZXIgdGltZSB1
c2luZyBhIGxpc3Qgb2YgaW5wdXQgc291cmNlcyBhbmQgYSBsaXN0IG9mIHN0ZXBzLCB3aGVyZSBl
YWNoIHN0ZXAgc3BlY2lmaWVzIGEgc3RhdGUgZm9yIGVhY2ggaW5wdXQgc291cmNlIGF0IHRoZSB0
aW1lIHRoYXQgc3RlcCBpcyBwZXJmb3JtZWQuIiwKKyAgICAgICAgICAgICJwYXJhbWV0ZXJzIjog
WworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaGFuZGxlIiwgIiRyZWYiOiAiQnJvd3NpbmdD
b250ZXh0SGFuZGxlIiwgImRlc2NyaXB0aW9uIjogIlRoZSBicm93c2luZyBjb250ZXh0IHRvIGJl
IGludGVyYWN0ZWQgd2l0aC4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJpbnB1dFNv
dXJjZXMiLCAidHlwZSI6ICJhcnJheSIsICJpdGVtcyI6IHsgIiRyZWYiOiAiSW5wdXRTb3VyY2Ui
IH0sICJkZXNjcmlwdGlvbiI6ICJBbGwgaW5wdXQgc291cmNlcyB0aGF0IGFyZSB1c2VkIHRvIHBl
cmZvcm0gdGhpcyBpbnRlcmFjdGlvbiBzZXF1ZW5jZS4iIH0sCisgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJzdGVwcyIsICJ0eXBlIjogImFycmF5IiwgIml0ZW1zIjogeyAiJHJlZiI6ICJJbnRl
cmFjdGlvblN0ZXAiIH0sICJkZXNjcmlwdGlvbiI6ICJBIGxpc3Qgb2Ygc3RlcHMgdGhhdCBhcmUg
ZXhlY3V0ZWQgaW4gb3JkZXIuIiB9CisgICAgICAgICAgICBdLAorICAgICAgICAgICAgImFzeW5j
IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJjYW5j
ZWxJbnRlcmFjdGlvblNlcXVlbmNlIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJDYW5j
ZWwgYW4gYWN0aXZlIGludGVyYWN0aW9uIHNlcXVlbmNlIHRoYXQgaXMgY3VycmVudGx5IGluIHBy
b2dyZXNzLiIsCisgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICB7
ICJuYW1lIjogImhhbmRsZSIsICIkcmVmIjogIkJyb3dzaW5nQ29udGV4dEhhbmRsZSIsICJkZXNj
cmlwdGlvbiI6ICJUaGUgYnJvd3NpbmcgY29udGV4dCB0byBiZSBpbnRlcmFjdGVkIHdpdGguIiB9
CisgICAgICAgICAgICBdLAorICAgICAgICAgICAgImFzeW5jIjogdHJ1ZQorICAgICAgICB9LAog
ICAgICAgICB7CiAgICAgICAgICAgICAibmFtZSI6ICJ0YWtlU2NyZWVuc2hvdCIsCiAgICAgICAg
ICAgICAiZGVzY3JpcHRpb24iOiAiVGFrZSBhIHNjcmVlbnNob3Qgb2YgdGhlIGN1cnJlbnQgcGFn
ZSBvciBnaXZlbiBlbGVtZW50IGluIGEgYnJvd3NpbmcgY29udGV4dC4iLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9TaW11bGF0ZWRJbnB1dERpc3BhdGNo
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9TaW11bGF0ZWRJbnB1
dERpc3BhdGNoZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJkYTJmZGE1MGI4NzI5YTI1OGZiMDgzZTAxZGMz
NzZlZWE1NGUxMTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
dXRvbWF0aW9uL1NpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5jcHAKQEAgLTAsMCArMSwyNjUgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2ltdWxhdGVkSW5w
dXREaXNwYXRjaGVyLmgiCisKKyNpbmNsdWRlICJBdXRvbWF0aW9uUHJvdG9jb2xPYmplY3RzLmgi
CisjaW5jbHVkZSAiV2ViQXV0b21hdGlvblNlc3Npb24uaCIKKyNpbmNsdWRlICJXZWJBdXRvbWF0
aW9uU2Vzc2lvbk1hY3Jvcy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworU2ltdWxhdGVkSW5w
dXRLZXlGcmFtZTo6U2ltdWxhdGVkSW5wdXRLZXlGcmFtZShWZWN0b3I8U3RhdGVFbnRyeT4mJiBl
bnRyaWVzKQorICAgIDogc3RhdGVzKFdURk1vdmUoZW50cmllcykpCit7Cit9CisKK1NlY29uZHMg
U2ltdWxhdGVkSW5wdXRLZXlGcmFtZTo6bWF4aW11bUR1cmF0aW9uKCkgY29uc3QKK3sKKyAgICBT
ZWNvbmRzIHJlc3VsdDsKKyAgICBmb3IgKGF1dG8mIGVudHJ5IDogc3RhdGVzKQorICAgICAgICBy
ZXN1bHQgPSBzdGQ6Om1heChyZXN1bHQsIGVudHJ5LnNlY29uZC5kdXJhdGlvbi52YWx1ZV9vcihT
ZWNvbmRzKDApKSk7CisgICAgCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworU2ltdWxhdGVkSW5w
dXRLZXlGcmFtZSBTaW11bGF0ZWRJbnB1dEtleUZyYW1lOjprZXlGcmFtZUZyb21TdGF0ZU9mSW5w
dXRTb3VyY2VzKEhhc2hTZXQ8UmVmPFNpbXVsYXRlZElucHV0U291cmNlPj4mIGlucHV0U291cmNl
cykKK3sKKyAgICAvLyBUaGUgY2xpZW50IG9mIHRoaXMgY2xhc3MgaXMgcmVxdWlyZWQgdG8gaW50
ZXJuIFNpbXVsYXRlZElucHV0U291cmNlIGluc3RhbmNlcyBpZiB0aGUgbGFzdCBzdGF0ZQorICAg
IC8vIGZyb20gdGhlIHByZXZpb3VzIGNvbW1hbmQgc2hvdWxkIGJlIHVzZWQgYXMgdGhlIGluaXRh
bCBzdGF0ZSBmb3IgdGhlIG5leHQgY29tbWFuZC4gVGhpcyBpcyB0aGUKKyAgICAvLyBjYXNlIGZv
ciBQZXJmb3JtIEFjdGlvbnMgYW5kIFJlbGVhc2UgQWN0aW9ucywgYnV0IG5vdCBFbGVtZW50IENs
aWNrIG9yIEVsZW1lbnQgU2VuZCBLZXlzLgorICAgIFZlY3RvcjxTaW11bGF0ZWRJbnB1dEtleUZy
YW1lOjpTdGF0ZUVudHJ5PiBlbnRyaWVzOworICAgIGVudHJpZXMucmVzZXJ2ZUNhcGFjaXR5KGlu
cHV0U291cmNlcy5zaXplKCkpOworCisgICAgZm9yIChhdXRvJiBpbnB1dFNvdXJjZSA6IGlucHV0
U291cmNlcykKKyAgICAgICAgZW50cmllcy51bmNoZWNrZWRBcHBlbmQoc3RkOjpwYWlyPFNpbXVs
YXRlZElucHV0U291cmNlJiwgU2ltdWxhdGVkSW5wdXRTb3VyY2VTdGF0ZT4geyBpbnB1dFNvdXJj
ZS5nZXQoKSwgaW5wdXRTb3VyY2UtPnN0YXRlIH0pOworCisgICAgcmV0dXJuIFNpbXVsYXRlZElu
cHV0S2V5RnJhbWUoV1RGTW92ZShlbnRyaWVzKSk7Cit9CisKK1NpbXVsYXRlZElucHV0S2V5RnJh
bWUgU2ltdWxhdGVkSW5wdXRLZXlGcmFtZTo6a2V5RnJhbWVUb1Jlc2V0SW5wdXRTb3VyY2VzKEhh
c2hTZXQ8UmVmPFNpbXVsYXRlZElucHV0U291cmNlPj4mIGlucHV0U291cmNlcykKK3sKKyAgICBW
ZWN0b3I8U2ltdWxhdGVkSW5wdXRLZXlGcmFtZTo6U3RhdGVFbnRyeT4gZW50cmllczsKKyAgICBl
bnRyaWVzLnJlc2VydmVDYXBhY2l0eShpbnB1dFNvdXJjZXMuc2l6ZSgpKTsKKworICAgIGZvciAo
YXV0byYgaW5wdXRTb3VyY2UgOiBpbnB1dFNvdXJjZXMpCisgICAgICAgIGVudHJpZXMudW5jaGVj
a2VkQXBwZW5kKHN0ZDo6cGFpcjxTaW11bGF0ZWRJbnB1dFNvdXJjZSYsIFNpbXVsYXRlZElucHV0
U291cmNlU3RhdGU+IHsgaW5wdXRTb3VyY2UuZ2V0KCksIFNpbXVsYXRlZElucHV0U291cmNlU3Rh
dGU6OmVtcHR5U3RhdGUoKSB9KTsKKworICAgIHJldHVybiBTaW11bGF0ZWRJbnB1dEtleUZyYW1l
KFdURk1vdmUoZW50cmllcykpOworfQorICAgIAorU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjpT
aW11bGF0ZWRJbnB1dERpc3BhdGNoZXIoV2ViUGFnZVByb3h5JiBwYWdlLCBTaW11bGF0ZWRJbnB1
dERpc3BhdGNoZXI6OkNsaWVudCYgY2xpZW50KQorICAgIDogbV9wYWdlKHBhZ2UpCisgICAgLCBt
X2NsaWVudChjbGllbnQpCisgICAgLCBtX2tleUZyYW1lVHJhbnNpdGlvbkR1cmF0aW9uVGltZXIo
UnVuTG9vcDo6Y3VycmVudCgpLCB0aGlzLCAmU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjprZXlG
cmFtZVRyYW5zaXRpb25EdXJhdGlvblRpbWVyRmlyZWQpCit7Cit9CisKK1NpbXVsYXRlZElucHV0
RGlzcGF0Y2hlcjo6flNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcigpCit7CisgICAgQVNTRVJUKCFt
X3J1bkNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICBBU1NFUlQoIW1fa2V5RnJhbWVUcmFuc2l0aW9u
RHVyYXRpb25UaW1lci5pc0FjdGl2ZSgpKTsKK30KKworYm9vbCBTaW11bGF0ZWRJbnB1dERpc3Bh
dGNoZXI6OmlzQWN0aXZlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gISFtX3J1bkNvbXBsZXRpb25I
YW5kbGVyOworfQorCit2b2lkIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6a2V5RnJhbWVUcmFu
c2l0aW9uRHVyYXRpb25UaW1lckZpcmVkKCkKK3sKKyAgICBBU1NFUlQobV9rZXlGcmFtZVRyYW5z
aXRpb25Db21wbGV0aW9uSGFuZGxlcik7CisKKyAgICBtX2tleUZyYW1lVHJhbnNpdGlvbkR1cmF0
aW9uVGltZXIuc3RvcCgpOworCisgICAgaWYgKGlzS2V5RnJhbWVUcmFuc2l0aW9uQ29tcGxldGUo
KSkgeworICAgICAgICBhdXRvIGZpbmlzaCA9IHN0ZDo6ZXhjaGFuZ2UobV9rZXlGcmFtZVRyYW5z
aXRpb25Db21wbGV0aW9uSGFuZGxlciwgbnVsbHB0cik7CisgICAgICAgIGZpbmlzaChzdGQ6Om51
bGxvcHQpOworICAgIH0KK30KKworYm9vbCBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OmlzS2V5
RnJhbWVUcmFuc2l0aW9uQ29tcGxldGUoKSBjb25zdAoreworICAgIEFTU0VSVChtX2tleWZyYW1l
SW5kZXggPCBtX2tleWZyYW1lcy5zaXplKCkpOworCisgICAgaWYgKG1faW5wdXRTb3VyY2VTdGF0
ZUluZGV4IDwgbV9rZXlmcmFtZXNbbV9rZXlmcmFtZUluZGV4XS5zdGF0ZXMuc2l6ZSgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobV9rZXlGcmFtZVRyYW5zaXRpb25EdXJhdGlv
blRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0
cnVlOworfQorCit2b2lkIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6dHJhbnNpdGlvblRvTmV4
dEtleUZyYW1lKCkKK3sKKyAgICArK21fa2V5ZnJhbWVJbmRleDsKKyAgICBpZiAobV9rZXlmcmFt
ZUluZGV4ID09IG1fa2V5ZnJhbWVzLnNpemUoKSkgeworICAgICAgICBmaW5pc2hEaXNwYXRjaGlu
ZyhzdGQ6Om51bGxvcHQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgdHJhbnNpdGlv
bkJldHdlZW5LZXlGcmFtZXMobV9rZXlmcmFtZXNbbV9rZXlmcmFtZUluZGV4IC0gMV0sIG1fa2V5
ZnJhbWVzW21fa2V5ZnJhbWVJbmRleF0sIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyldKHN0ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4gZXJyb3IpIHsKKyAg
ICAgICAgaWYgKGVycm9yKSB7CisgICAgICAgICAgICBmaW5pc2hEaXNwYXRjaGluZyhlcnJvcik7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB0cmFuc2l0aW9uVG9O
ZXh0S2V5RnJhbWUoKTsKKyAgICB9KTsKK30KKwordm9pZCBTaW11bGF0ZWRJbnB1dERpc3BhdGNo
ZXI6OnRyYW5zaXRpb25Ub05leHRJbnB1dFNvdXJjZVN0YXRlKCkKK3sKKyAgICBpZiAoaXNLZXlG
cmFtZVRyYW5zaXRpb25Db21wbGV0ZSgpKSB7CisgICAgICAgIGF1dG8gZmluaXNoID0gc3RkOjpl
eGNoYW5nZShtX2tleUZyYW1lVHJhbnNpdGlvbkNvbXBsZXRpb25IYW5kbGVyLCBudWxscHRyKTsK
KyAgICAgICAgZmluaXNoKHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICAvLyBJbiB0aGlzIGNhc2UsIHRyYW5zaXRpb25zIGFyZSBkb25lIGJ1dCB3ZSBuZWVkIHRv
IHdhaXQgZm9yIHRoZSB0aWNrIHRpbWVyLgorICAgIGlmIChtX2lucHV0U291cmNlU3RhdGVJbmRl
eCA9PSBtX2tleWZyYW1lc1ttX2tleWZyYW1lSW5kZXhdLnN0YXRlcy5zaXplKCkpCisgICAgICAg
IHJldHVybjsKKworICAgIGF1dG8mIG5leHRLZXlGcmFtZSA9IG1fa2V5ZnJhbWVzW21fa2V5ZnJh
bWVJbmRleF07CisgICAgYXV0byYgcG9zdFN0YXRlRW50cnkgPSBuZXh0S2V5RnJhbWUuc3RhdGVz
W21faW5wdXRTb3VyY2VTdGF0ZUluZGV4XTsKKyAgICBTaW11bGF0ZWRJbnB1dFNvdXJjZSYgaW5w
dXRTb3VyY2UgPSBwb3N0U3RhdGVFbnRyeS5maXJzdDsKKworICAgIHRyYW5zaXRpb25JbnB1dFNv
dXJjZVRvU3RhdGUoaW5wdXRTb3VyY2UsIHBvc3RTdGF0ZUVudHJ5LnNlY29uZCwgW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oc3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29t
bWFuZEVycm9yPiBlcnJvcikgeworICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgICAgIGF1
dG8gZmluaXNoID0gc3RkOjpleGNoYW5nZShtX2tleUZyYW1lVHJhbnNpdGlvbkNvbXBsZXRpb25I
YW5kbGVyLCBudWxscHRyKTsKKyAgICAgICAgICAgIGZpbmlzaChlcnJvcik7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBQZXJmb3JtIHN0YXRlIHRyYW5zaXRp
b25zIGluIHRoZSBvcmRlciBzcGVjaWZpZWQgYnkgdGhlIGN1cnJlbnRLZXlGcmFtZS4KKyAgICAg
ICAgKyttX2lucHV0U291cmNlU3RhdGVJbmRleDsKKworICAgICAgICB0cmFuc2l0aW9uVG9OZXh0
SW5wdXRTb3VyY2VTdGF0ZSgpOworICAgIH0pOworfQorCit2b2lkIFNpbXVsYXRlZElucHV0RGlz
cGF0Y2hlcjo6dHJhbnNpdGlvbkJldHdlZW5LZXlGcmFtZXMoY29uc3QgU2ltdWxhdGVkSW5wdXRL
ZXlGcmFtZSYgYSwgY29uc3QgU2ltdWxhdGVkSW5wdXRLZXlGcmFtZSYgYiwgQXV0b21hdGlvbkNv
bXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgbV9pbnB1dFNvdXJj
ZVN0YXRlSW5kZXggPSAwOworCisgICAgbV9rZXlGcmFtZVRyYW5zaXRpb25Db21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpOworICAgIG1fa2V5RnJhbWVUcmFuc2l0
aW9uRHVyYXRpb25UaW1lci5zdGFydE9uZVNob3QoYi5tYXhpbXVtRHVyYXRpb24oKSk7CisKKyAg
ICB0cmFuc2l0aW9uVG9OZXh0SW5wdXRTb3VyY2VTdGF0ZSgpOworfQorCit2b2lkIFNpbXVsYXRl
ZElucHV0RGlzcGF0Y2hlcjo6dHJhbnNpdGlvbklucHV0U291cmNlVG9TdGF0ZShTaW11bGF0ZWRJ
bnB1dFNvdXJjZSYgaW5wdXRTb3VyY2UsIGNvbnN0IFNpbXVsYXRlZElucHV0U291cmNlU3RhdGUm
IG5ld1N0YXRlLCBBdXRvbWF0aW9uQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxl
cikKK3sKKyAgICAvLyBNYWtlIGNhc2VzIGFuZCBjb25kaXRpb25hbHMgbW9yZSByZWFkYWJsZSBi
eSBhbGlhc2luZyBwcmUvcG9zdCBzdGF0ZXMgYXMgJ2EnIGFuZCAnYicuCisgICAgU2ltdWxhdGVk
SW5wdXRTb3VyY2VTdGF0ZSBhID0gaW5wdXRTb3VyY2Uuc3RhdGU7CisgICAgU2ltdWxhdGVkSW5w
dXRTb3VyY2VTdGF0ZSBiID0gbmV3U3RhdGU7CisKKyAgICBBdXRvbWF0aW9uQ29tcGxldGlvbkhh
bmRsZXIgZXZlbnREaXNwYXRjaEZpbmlzaGVkID0gWyZpbnB1dFNvdXJjZSwgJm5ld1N0YXRlLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShzdGQ6Om9wdGlv
bmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+IGVycm9yKSB7CisgICAgICAgIGlmIChlcnJvcikg
eworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXJyb3IpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKKyAgICAgICAgaW5wdXRTb3VyY2Uuc3RhdGUgPSBuZXdTdGF0ZTsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKKyAgICB9OworCisgICAg
c3dpdGNoIChpbnB1dFNvdXJjZS50eXBlKSB7CisgICAgY2FzZSBTaW11bGF0ZWRJbnB1dFNvdXJj
ZTo6VHlwZTo6TnVsbDoKKyAgICAgICAgLy8gVGhlIG1heGltdW0gZHVyYXRpb24gaXMgaGFuZGxl
ZCBhdCB0aGUga2V5ZnJhbWUgbGV2ZWwgYnkgbV9rZXlGcmFtZVRyYW5zaXRpb25EdXJhdGlvblRp
bWVyLgorICAgICAgICBldmVudERpc3BhdGNoRmluaXNoZWQoc3RkOjpudWxsb3B0KTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBTaW11bGF0ZWRJbnB1dFNvdXJjZTo6VHlwZTo6TW91c2U6IHsK
KyAgICAgICAgaWYgKCFhLnByZXNzZWRNb3VzZUJ1dHRvbiAmJiBiLnByZXNzZWRNb3VzZUJ1dHRv
bikKKyAgICAgICAgICAgIG1fY2xpZW50LnNpbXVsYXRlTW91c2VJbnRlcmFjdGlvbihtX3BhZ2Us
IE1vdXNlSW50ZXJhY3Rpb246OkRvd24sIGIucHJlc3NlZE1vdXNlQnV0dG9uLnZhbHVlKCksIGIu
bG9jYXRpb24udmFsdWUoKSwgV1RGTW92ZShldmVudERpc3BhdGNoRmluaXNoZWQpKTsKKyAgICAg
ICAgZWxzZSBpZiAoYS5wcmVzc2VkTW91c2VCdXR0b24gJiYgIWIucHJlc3NlZE1vdXNlQnV0dG9u
KQorICAgICAgICAgICAgbV9jbGllbnQuc2ltdWxhdGVNb3VzZUludGVyYWN0aW9uKG1fcGFnZSwg
TW91c2VJbnRlcmFjdGlvbjo6VXAsIGEucHJlc3NlZE1vdXNlQnV0dG9uLnZhbHVlKCksIGIubG9j
YXRpb24udmFsdWUoKSwgV1RGTW92ZShldmVudERpc3BhdGNoRmluaXNoZWQpKTsKKyAgICAgICAg
ZWxzZSBpZiAoYS5sb2NhdGlvbiAhPSBiLmxvY2F0aW9uKQorICAgICAgICAgICAgbV9jbGllbnQu
c2ltdWxhdGVNb3VzZUludGVyYWN0aW9uKG1fcGFnZSwgTW91c2VJbnRlcmFjdGlvbjo6TW92ZSwg
Yi5wcmVzc2VkTW91c2VCdXR0b24udmFsdWVfb3IoTW91c2VCdXR0b246Ok5vQnV0dG9uKSwgYi5s
b2NhdGlvbi52YWx1ZSgpLCBXVEZNb3ZlKGV2ZW50RGlzcGF0Y2hGaW5pc2hlZCkpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBldmVudERpc3BhdGNoRmluaXNoZWQoc3RkOjpudWxsb3B0KTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgU2ltdWxhdGVkSW5wdXRTb3VyY2U6OlR5
cGU6OktleWJvYXJkOgorICAgICAgICBpZiAoKCFhLnByZXNzZWRDaGFyS2V5ICYmIGIucHJlc3Nl
ZENoYXJLZXkpIHx8ICghYS5wcmVzc2VkVmlydHVhbEtleSAmJiBiLnByZXNzZWRWaXJ0dWFsS2V5
KSkKKyAgICAgICAgICAgIG1fY2xpZW50LnNpbXVsYXRlS2V5Ym9hcmRJbnRlcmFjdGlvbihtX3Bh
Z2UsIEtleWJvYXJkSW50ZXJhY3Rpb246OktleVByZXNzLCBiLnByZXNzZWRWaXJ0dWFsS2V5LCBi
LnByZXNzZWRDaGFyS2V5LCBXVEZNb3ZlKGV2ZW50RGlzcGF0Y2hGaW5pc2hlZCkpOworICAgICAg
ICBlbHNlIGlmICgoYS5wcmVzc2VkQ2hhcktleSAmJiAhYi5wcmVzc2VkQ2hhcktleSkgfHwgKGEu
cHJlc3NlZFZpcnR1YWxLZXkgJiYgIWIucHJlc3NlZFZpcnR1YWxLZXkpKQorICAgICAgICAgICAg
bV9jbGllbnQuc2ltdWxhdGVLZXlib2FyZEludGVyYWN0aW9uKG1fcGFnZSwgS2V5Ym9hcmRJbnRl
cmFjdGlvbjo6S2V5UmVsZWFzZSwgYS5wcmVzc2VkVmlydHVhbEtleSwgYS5wcmVzc2VkQ2hhcktl
eSwgV1RGTW92ZShldmVudERpc3BhdGNoRmluaXNoZWQpKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgZXZlbnREaXNwYXRjaEZpbmlzaGVkKHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgU2ltdWxhdGVkSW5wdXRTb3VyY2U6OlR5cGU6OlRvdWNoOgorICAgICAgICAv
LyBOb3Qgc3VwcG9ydGVkIHlldC4KKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgIGV2ZW50RGlzcGF0Y2hGaW5pc2hlZChBVVRPTUFUSU9OX0NPTU1BTkRfRVJST1JfV0lUSF9O
QU1FKE5vdEltcGxlbWVudGVkKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKwordm9pZCBT
aW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OnJ1bihWZWN0b3I8U2ltdWxhdGVkSW5wdXRLZXlGcmFt
ZT4mJiBrZXlGcmFtZXMsIEhhc2hTZXQ8UmVmPFNpbXVsYXRlZElucHV0U291cmNlPj4mIGlucHV0
U291cmNlcywgQXV0b21hdGlvbkNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIp
Cit7CisgICAgQVNTRVJUKCFpc0FjdGl2ZSgpKTsKKyAgICBpZiAoaXNBY3RpdmUoKSkgeworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihBVVRPTUFUSU9OX0NPTU1BTkRfRVJST1JfV0lUSF9OQU1F
KEludGVybmFsRXJyb3IpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fcnVuQ29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICBmb3IgKGNv
bnN0IFJlZjxTaW11bGF0ZWRJbnB1dFNvdXJjZT4mIGlucHV0U291cmNlIDogaW5wdXRTb3VyY2Vz
KQorICAgICAgICBtX2lucHV0U291cmNlcy5hZGQoaW5wdXRTb3VyY2UuY29weVJlZigpKTsKKwor
ICAgIG1fa2V5ZnJhbWVzLnJlc2VydmVDYXBhY2l0eShrZXlGcmFtZXMuc2l6ZSgpICsgMSk7Cisg
ICAgbV9rZXlmcmFtZXMuYXBwZW5kKFNpbXVsYXRlZElucHV0S2V5RnJhbWU6OmtleUZyYW1lRnJv
bVN0YXRlT2ZJbnB1dFNvdXJjZXMobV9pbnB1dFNvdXJjZXMpKTsKKyAgICBtX2tleWZyYW1lcy5h
cHBlbmRWZWN0b3IoV1RGTW92ZShrZXlGcmFtZXMpKTsKKworICAgIHRyYW5zaXRpb25Ub05leHRL
ZXlGcmFtZSgpOworfQorCit2b2lkIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6Y2FuY2VsKCkK
K3sKKyAgICAvLyBJZiB3ZSB3ZXJlIHdhaXRpbmcgZm9yIG1fY2xpZW50IHRvIGZpbmlzaCBhbiBp
bnRlcmFjdGlvbiBhbmQgdGhlIGludGVyYWN0aW9uIGhhZCBhbiBlcnJvciwKKyAgICAvLyB0aGVu
IHRoZSByZXN0IG9mIHRoZSBhc3luYyBjaGFpbiB3aWxsIGhhdmUgYmVlbiB0b3JuIGRvd24uIElm
IHdlIGFyZSBqdXN0IHdhaXRpbmcgb24gYQorICAgIC8vIGRpc3BhdGNoIHRpbWVyLCB0aGVuIHRo
aXMgd2lsbCBjYW5jZWwgdGhlIHRpbWVyIGFuZCBjbGVhcgorCisgICAgaWYgKGlzQWN0aXZlKCkp
CisgICAgICAgIGZpbmlzaERpc3BhdGNoaW5nKEFVVE9NQVRJT05fQ09NTUFORF9FUlJPUl9XSVRI
X05BTUUoSW50ZXJuYWxFcnJvcikpOworfQorCit2b2lkIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hl
cjo6ZmluaXNoRGlzcGF0Y2hpbmcoc3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9y
PiBlcnJvcikKK3sKKyAgICBtX2tleUZyYW1lVHJhbnNpdGlvbkR1cmF0aW9uVGltZXIuc3RvcCgp
OworCisgICAgYXV0byBmaW5pc2ggPSBzdGQ6OmV4Y2hhbmdlKG1fcnVuQ29tcGxldGlvbkhhbmRs
ZXIsIG51bGxwdHIpOworICAgIG1fa2V5ZnJhbWVzLmNsZWFyKCk7CisgICAgbV9pbnB1dFNvdXJj
ZXMuY2xlYXIoKTsKKyAgICBtX2tleWZyYW1lSW5kZXggPSAwOworICAgIG1faW5wdXRTb3VyY2VT
dGF0ZUluZGV4ID0gMDsKKworICAgIGZpbmlzaChlcnJvcik7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYmtpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9T
aW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9t
YXRpb24vU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTYwMmMyYzIyNDBi
ZWExYzBmZmUwZTkwZmFkOTg4MWUxZDU0Y2IyOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmgKQEAg
LTAsMCArMSwxNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIldl
YkV2ZW50LmgiCisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVkZSA8
d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8d3RmL1Nl
Y29uZHMuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CisKK25hbWVzcGFjZSBJbnNwZWN0b3IgeyBuYW1lc3BhY2UgUHJvdG9jb2wgeyBu
YW1lc3BhY2UgQXV0b21hdGlvbiB7CitlbnVtIGNsYXNzIEVycm9yTWVzc2FnZTsKK2VudW0gY2xh
c3MgS2V5Ym9hcmRJbnRlcmFjdGlvblR5cGU7CitlbnVtIGNsYXNzIE1vdXNlSW50ZXJhY3Rpb247
CitlbnVtIGNsYXNzIFZpcnR1YWxLZXk7Cit9IH0gfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Y2xhc3MgQXV0b21hdGlvbkNvbW1hbmRFcnJvcjsKK3VzaW5nIEF1dG9tYXRpb25Db21wbGV0aW9u
SGFuZGxlciA9IFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPEF1dG9t
YXRpb25Db21tYW5kRXJyb3I+KT47CisKK2NsYXNzIFdlYlBhZ2VQcm94eTsKKwordXNpbmcgS2V5
Ym9hcmRJbnRlcmFjdGlvbiA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OktleWJv
YXJkSW50ZXJhY3Rpb25UeXBlOwordXNpbmcgVmlydHVhbEtleSA9IEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk7Cit1c2luZyBDaGFyS2V5ID0gY2hhcjsgLy8gRm9y
IFdlYkRyaXZlciwgdGhpcyBvbmx5IG5lZWRzIHRvIHN1cHBvcnQgQVNDSUkgY2hhcmFjdGVycyBv
biAxMDIta2V5IGtleWJvYXJkLgordXNpbmcgTW91c2VCdXR0b24gPSBXZWJNb3VzZUV2ZW50OjpC
dXR0b247Cit1c2luZyBNb3VzZUludGVyYWN0aW9uID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbjo6TW91c2VJbnRlcmFjdGlvbjsKKworc3RydWN0IFNpbXVsYXRlZElucHV0U291cmNl
U3RhdGUgeworICAgIHN0ZDo6b3B0aW9uYWw8Q2hhcktleT4gcHJlc3NlZENoYXJLZXk7CisgICAg
c3RkOjpvcHRpb25hbDxWaXJ0dWFsS2V5PiBwcmVzc2VkVmlydHVhbEtleTsKKyAgICBzdGQ6Om9w
dGlvbmFsPE1vdXNlQnV0dG9uPiBwcmVzc2VkTW91c2VCdXR0b247CisgICAgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpJbnRQb2ludD4gbG9jYXRpb247CisgICAgc3RkOjpvcHRpb25hbDxTZWNvbmRz
PiBkdXJhdGlvbjsKKworICAgIHN0YXRpYyBTaW11bGF0ZWRJbnB1dFNvdXJjZVN0YXRlIGVtcHR5
U3RhdGUoKSB7IHJldHVybiBTaW11bGF0ZWRJbnB1dFNvdXJjZVN0YXRlKCk7IH0KK307CisKK3N0
cnVjdCBTaW11bGF0ZWRJbnB1dFNvdXJjZSA6IHB1YmxpYyBSZWZDb3VudGVkPFNpbXVsYXRlZElu
cHV0U291cmNlPiB7CitwdWJsaWM6CisgICAgZW51bSBjbGFzcyBUeXBlIHsKKyAgICAgICAgTnVs
bCwgLy8gVXNlZCB0byBpbmR1Y2UgYSBtaW5pbXVtIGR1cmF0aW9uLgorICAgICAgICBLZXlib2Fy
ZCwKKyAgICAgICAgTW91c2UsCisgICAgICAgIFRvdWNoLAorICAgIH07CisKKyAgICBUeXBlIHR5
cGU7CisKKyAgICAvLyBUaGUgbGFzdCBzdGF0ZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBpbnB1dCBz
b3VyY2UuCisgICAgU2ltdWxhdGVkSW5wdXRTb3VyY2VTdGF0ZSBzdGF0ZTsKKworICAgIHN0YXRp
YyBSZWY8U2ltdWxhdGVkSW5wdXRTb3VyY2U+IGNyZWF0ZShUeXBlIHR5cGUpCisgICAgeworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaW11bGF0ZWRJbnB1dFNvdXJjZSh0eXBlKSk7Cisg
ICAgfQorCitwcml2YXRlOgorICAgIFNpbXVsYXRlZElucHV0U291cmNlKFR5cGUgdHlwZSkKKyAg
ICAgICAgOiB0eXBlKHR5cGUpCisgICAgICAgICwgc3RhdGUoU2ltdWxhdGVkSW5wdXRTb3VyY2VT
dGF0ZTo6ZW1wdHlTdGF0ZSgpKQorICAgIHsgfQorfTsKKworc3RydWN0IFNpbXVsYXRlZElucHV0
S2V5RnJhbWUgeworcHVibGljOgorICAgIHVzaW5nIFN0YXRlRW50cnkgPSBzdGQ6OnBhaXI8U2lt
dWxhdGVkSW5wdXRTb3VyY2UmLCBTaW11bGF0ZWRJbnB1dFNvdXJjZVN0YXRlPjsKKworICAgIGV4
cGxpY2l0IFNpbXVsYXRlZElucHV0S2V5RnJhbWUoVmVjdG9yPFN0YXRlRW50cnk+JiYpOworICAg
IFNlY29uZHMgbWF4aW11bUR1cmF0aW9uKCkgY29uc3Q7CisKKyAgICBzdGF0aWMgU2ltdWxhdGVk
SW5wdXRLZXlGcmFtZSBrZXlGcmFtZUZyb21TdGF0ZU9mSW5wdXRTb3VyY2VzKEhhc2hTZXQ8UmVm
PFNpbXVsYXRlZElucHV0U291cmNlPj4mKTsKKyAgICBzdGF0aWMgU2ltdWxhdGVkSW5wdXRLZXlG
cmFtZSBrZXlGcmFtZVRvUmVzZXRJbnB1dFNvdXJjZXMoSGFzaFNldDxSZWY8U2ltdWxhdGVkSW5w
dXRTb3VyY2U+PiYpOworCisgICAgVmVjdG9yPFN0YXRlRW50cnk+IHN0YXRlczsKK307CisKK2Ns
YXNzIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlciA6IHB1YmxpYyBSZWZDb3VudGVkPFNpbXVsYXRl
ZElucHV0RGlzcGF0Y2hlcj4geworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNpbXVsYXRlZElu
cHV0RGlzcGF0Y2hlcik7CitwdWJsaWM6CisgICAgY2xhc3MgQ2xpZW50IHsKKyAgICBwdWJsaWM6
CisgICAgICAgIHZpcnR1YWwgfkNsaWVudCgpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgc2lt
dWxhdGVNb3VzZUludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYsIE1vdXNlSW50ZXJhY3Rpb24sIFdl
Yk1vdXNlRXZlbnQ6OkJ1dHRvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGxvY2F0aW9uSW5W
aWV3LCBBdXRvbWF0aW9uQ29tcGxldGlvbkhhbmRsZXImJikgPSAwOworICAgICAgICB2aXJ0dWFs
IHZvaWQgc2ltdWxhdGVLZXlib2FyZEludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYsIEtleWJvYXJk
SW50ZXJhY3Rpb24sIHN0ZDo6b3B0aW9uYWw8VmlydHVhbEtleT4sIHN0ZDo6b3B0aW9uYWw8Q2hh
cktleT4sIEF1dG9tYXRpb25Db21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CisgICAgfTsKKworICAg
IHN0YXRpYyBSZWY8U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyPiBjcmVhdGUoV2ViUGFnZVByb3h5
JiBwYWdlLCBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OkNsaWVudCYgY2xpZW50KQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyKHBh
Z2UsIGNsaWVudCkpOworICAgIH0KKworICAgIH5TaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIoKTsK
KworICAgIHZvaWQgcnVuKFZlY3RvcjxTaW11bGF0ZWRJbnB1dEtleUZyYW1lPiYmIGtleUZyYW1l
cywgSGFzaFNldDxSZWY8U2ltdWxhdGVkSW5wdXRTb3VyY2U+PiYgaW5wdXRTb3VyY2VzLCBBdXRv
bWF0aW9uQ29tcGxldGlvbkhhbmRsZXImJik7CisgICAgdm9pZCBjYW5jZWwoKTsKKworICAgIGJv
b2wgaXNBY3RpdmUoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBTaW11bGF0ZWRJbnB1dERpc3Bh
dGNoZXIoV2ViUGFnZVByb3h5JiwgU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjpDbGllbnQmKTsK
KworICAgIHZvaWQgdHJhbnNpdGlvblRvTmV4dEtleUZyYW1lKCk7CisgICAgdm9pZCB0cmFuc2l0
aW9uQmV0d2VlbktleUZyYW1lcyhjb25zdCBTaW11bGF0ZWRJbnB1dEtleUZyYW1lJiwgY29uc3Qg
U2ltdWxhdGVkSW5wdXRLZXlGcmFtZSYsIEF1dG9tYXRpb25Db21wbGV0aW9uSGFuZGxlciYmKTsK
KworICAgIHZvaWQgdHJhbnNpdGlvblRvTmV4dElucHV0U291cmNlU3RhdGUoKTsKKyAgICB2b2lk
IHRyYW5zaXRpb25JbnB1dFNvdXJjZVRvU3RhdGUoU2ltdWxhdGVkSW5wdXRTb3VyY2UmLCBjb25z
dCBTaW11bGF0ZWRJbnB1dFNvdXJjZVN0YXRlJiBuZXdTdGF0ZSwgQXV0b21hdGlvbkNvbXBsZXRp
b25IYW5kbGVyJiYpOworICAgIHZvaWQgZmluaXNoRGlzcGF0Y2hpbmcoc3RkOjpvcHRpb25hbDxB
dXRvbWF0aW9uQ29tbWFuZEVycm9yPik7CisKKyAgICB2b2lkIGtleUZyYW1lVHJhbnNpdGlvbkR1
cmF0aW9uVGltZXJGaXJlZCgpOworICAgIGJvb2wgaXNLZXlGcmFtZVRyYW5zaXRpb25Db21wbGV0
ZSgpIGNvbnN0OworCisgICAgV2ViUGFnZVByb3h5JiBtX3BhZ2U7CisgICAgU2ltdWxhdGVkSW5w
dXREaXNwYXRjaGVyOjpDbGllbnQmIG1fY2xpZW50OworCisgICAgQXV0b21hdGlvbkNvbXBsZXRp
b25IYW5kbGVyIG1fcnVuQ29tcGxldGlvbkhhbmRsZXI7CisgICAgQXV0b21hdGlvbkNvbXBsZXRp
b25IYW5kbGVyIG1fa2V5RnJhbWVUcmFuc2l0aW9uQ29tcGxldGlvbkhhbmRsZXI7CisgICAgUnVu
TG9vcDo6VGltZXI8U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyPiBtX2tleUZyYW1lVHJhbnNpdGlv
bkR1cmF0aW9uVGltZXI7CisKKyAgICBWZWN0b3I8U2ltdWxhdGVkSW5wdXRLZXlGcmFtZT4gbV9r
ZXlmcmFtZXM7CisgICAgSGFzaFNldDxSZWY8U2ltdWxhdGVkSW5wdXRTb3VyY2U+PiBtX2lucHV0
U291cmNlczsKKworICAgIC8vIFRoZSBwb3NpdGlvbiB3aXRoaW4gbV9rZXlmcmFtZXMuCisgICAg
dW5zaWduZWQgbV9rZXlmcmFtZUluZGV4IHsgMCB9OworCisgICAgLy8gVGhlIHBvc2l0aW9uIHdp
dGhpbiB0aGUgaW5wdXQgc291cmNlIHN0YXRlIHZlY3RvciBhdCBtX2tleWZyYW1lc1ttX2tleWZy
YW1lSW5kZXhdLgorICAgIC8vIEV2ZW50cyB0aGF0IHJlZmxlY3QgaW5wdXQgc291cmNlIHN0YXRl
IHRyYW5zaXRpb25zIGFyZSBkaXNwYXRjaGVkIHNlcmlhbGx5IGJhc2VkIG9uIHRoaXMgb3JkZXIu
CisgICAgdW5zaWduZWQgbV9pbnB1dFNvdXJjZVN0YXRlSW5kZXggeyAwIH07Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1
dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKaW5kZXggZjViN2QzNzE4MjU1
MGFjZDM0MWVhODEwMmNmMDBkMDI1YjQzOGIxMi4uZjRkNjVlNzIxNzIzZTFkZDE5YWQ0MmYxMmY4
NjRkNzJmZTkxMWM5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21h
dGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKQEAgLTc2LDYgKzc2LDEwIEBA
IFdlYkF1dG9tYXRpb25TZXNzaW9uOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbigpCiAgICAgLCBtX2Rv
bWFpbk5vdGlmaWVyKHN0ZDo6bWFrZV91bmlxdWU8QXV0b21hdGlvbkZyb250ZW5kRGlzcGF0Y2hl
cj4obV9mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2xvYWRUaW1lcihSdW5Mb29wOjptYWluKCks
IHRoaXMsICZXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6bG9hZFRpbWVyRmlyZWQpCiB7CisgICAgLy8g
U2V0IHVwIGNhbm9uaWNhbCBpbnB1dCBzb3VyY2VzIHRvIGJlIHVzZWQgZm9yICdwZXJmb3JtSW50
ZXJhY3Rpb25TZXF1ZW5jZScgYW5kICdjYW5jZWxJbnRlcmFjdGlvblNlcXVlbmNlJy4KKyAgICBt
X2lucHV0U291cmNlcy5hZGQoU2ltdWxhdGVkSW5wdXRTb3VyY2U6OmNyZWF0ZShTaW11bGF0ZWRJ
bnB1dFNvdXJjZTo6VHlwZTo6TW91c2UpKTsKKyAgICBtX2lucHV0U291cmNlcy5hZGQoU2ltdWxh
dGVkSW5wdXRTb3VyY2U6OmNyZWF0ZShTaW11bGF0ZWRJbnB1dFNvdXJjZTo6VHlwZTo6S2V5Ym9h
cmQpKTsKKyAgICBtX2lucHV0U291cmNlcy5hZGQoU2ltdWxhdGVkSW5wdXRTb3VyY2U6OmNyZWF0
ZShTaW11bGF0ZWRJbnB1dFNvdXJjZTo6VHlwZTo6TnVsbCkpOwogfQogCiBXZWJBdXRvbWF0aW9u
U2Vzc2lvbjo6fldlYkF1dG9tYXRpb25TZXNzaW9uKCkKQEAgLTcyMywyOCArNzI3LDMyIEBAIHZv
aWQgV2ViQXV0b21hdGlvblNlc3Npb246Omluc3BlY3RvckZyb250ZW5kTG9hZGVkKGNvbnN0IFdl
YlBhZ2VQcm94eSYgcGFnZSkKIAogdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6bW91c2VFdmVu
dHNGbHVzaGVkRm9yUGFnZShjb25zdCBXZWJQYWdlUHJveHkmIHBhZ2UpCiB7Ci0gICAgaWYgKGF1
dG8gY2FsbGJhY2sgPSBtX3BlbmRpbmdNb3VzZUV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdl
LnRha2UocGFnZS5wYWdlSUQoKSkpIHsKLSAgICAgICAgaWYgKG1fcGVuZGluZ01vdXNlRXZlbnRz
Rmx1c2hlZENhbGxiYWNrc1BlclBhZ2UuaXNFbXB0eSgpKQotICAgICAgICAgICAgbV9zaW11bGF0
aW5nVXNlckludGVyYWN0aW9uID0gZmFsc2U7Ci0KKyAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1f
cGVuZGluZ01vdXNlRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2UudGFrZShwYWdlLnBhZ2VJ
RCgpKSkKICAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKLSAgICB9CiB9CiAKIHZvaWQg
V2ViQXV0b21hdGlvblNlc3Npb246OmtleWJvYXJkRXZlbnRzRmx1c2hlZEZvclBhZ2UoY29uc3Qg
V2ViUGFnZVByb3h5JiBwYWdlKQogewotICAgIGlmIChhdXRvIGNhbGxiYWNrID0gbV9wZW5kaW5n
S2V5Ym9hcmRFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS50YWtlKHBhZ2UucGFnZUlEKCkp
KSB7Ci0gICAgICAgIGlmIChtX3BlbmRpbmdLZXlib2FyZEV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQ
ZXJQYWdlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIG1fc2ltdWxhdGluZ1VzZXJJbnRlcmFjdGlv
biA9IGZhbHNlOwotCisgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBtX3BlbmRpbmdLZXlib2FyZEV2
ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlLnRha2UocGFnZS5wYWdlSUQoKSkpCiAgICAgICAg
IGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7Ci0gICAgfQogfQogCiB2b2lkIFdlYkF1dG9tYXRpb25T
ZXNzaW9uOjp3aWxsQ2xvc2VQYWdlKGNvbnN0IFdlYlBhZ2VQcm94eSYgcGFnZSkKIHsKICAgICBT
dHJpbmcgaGFuZGxlID0gaGFuZGxlRm9yV2ViUGFnZVByb3h5KHBhZ2UpOwogICAgIG1fZG9tYWlu
Tm90aWZpZXItPmJyb3dzaW5nQ29udGV4dENsZWFyZWQoaGFuZGxlKTsKKworICAgIC8vIENhbmNl
bCBwZW5kaW5nIGludGVyYWN0aW9ucyBvbiB0aGlzIHBhZ2UuIEJ5IHByb3ZpZGluZyBhbiBlcnJv
ciwgdGhpcyB3aWxsIGNhdXNlIHN1YnNlcXVlbnQKKyAgICAvLyBhY3Rpb25zIHRvIGJlIGFib3J0
ZWQgYW5kIHRoZSBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OnJ1bigpIGNhbGwgd2lsbCB1bndp
bmQgYW5kIGZhaWwuCisgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBtX3BlbmRpbmdNb3VzZUV2ZW50
c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlLnRha2UocGFnZS5wYWdlSUQoKSkpCisgICAgICAgIGNh
bGxiYWNrKEFVVE9NQVRJT05fQ09NTUFORF9FUlJPUl9XSVRIX05BTUUoV2luZG93Tm90Rm91bmQp
KTsKKyAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1fcGVuZGluZ01vdXNlRXZlbnRzRmx1c2hlZENh
bGxiYWNrc1BlclBhZ2UudGFrZShwYWdlLnBhZ2VJRCgpKSkKKyAgICAgICAgY2FsbGJhY2soQVVU
T01BVElPTl9DT01NQU5EX0VSUk9SX1dJVEhfTkFNRShXaW5kb3dOb3RGb3VuZCkpOworCisgICAg
Ly8gVGhlbiB0ZWxsIHRoZSBpbnB1dCBkaXNwYXRjaGVyIHRvIGNhbmNlbCBzbyB0aW1lcnMgYXJl
IHN0b3BwZWQsIGFuZCBsZXQgaXQgZ28gb3V0IG9mIHNjb3BlLgorICAgIHN0ZDo6b3B0aW9uYWw8
UmVmPFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcj4+IGlucHV0RGlzcGF0Y2hlciA9IG1faW5wdXRE
aXNwYXRjaGVyc0J5UGFnZS50YWtlKHBhZ2UucGFnZUlEKCkpOworICAgIGlmIChpbnB1dERpc3Bh
dGNoZXIuaGFzX3ZhbHVlKCkpCisgICAgICAgIGlucHV0RGlzcGF0Y2hlci52YWx1ZSgpLT5jYW5j
ZWwoKTsKIH0KIAogc3RhdGljIGJvb2wgZmlsZUNhbkJlQWNjZXB0ZWRGb3JVcGxvYWQoY29uc3Qg
U3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBhbGxvd2VkTUlNRVR5cGVz
LCBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGFsbG93ZWRGaWxlRXh0ZW5zaW9ucykKQEAgLTEzNjYs
NiArMTM3NCw4NiBAQCBib29sIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpzaG91bGRBbGxvd0dldFVz
ZXJNZWRpYUZvclBhZ2UoY29uc3QgV2ViUGFnZVByb3h5JikgYwogICAgIHJldHVybiBtX3Blcm1p
c3Npb25Gb3JHZXRVc2VyTWVkaWE7CiB9CiAKK2Jvb2wgV2ViQXV0b21hdGlvblNlc3Npb246Omlz
U2ltdWxhdGluZ1VzZXJJbnRlcmFjdGlvbigpIGNvbnN0Cit7CisgICAgaWYgKCFtX3BlbmRpbmdN
b3VzZUV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIGlmICghbV9wZW5kaW5nS2V5Ym9hcmRFdmVudHNGbHVzaGVkQ2FsbGJh
Y2tzUGVyUGFnZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVy
biB0cnVlOworfQorCitTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXImIFdlYkF1dG9tYXRpb25TZXNz
aW9uOjppbnB1dERpc3BhdGNoZXJGb3JQYWdlKFdlYlBhZ2VQcm94eSYgcGFnZSkKK3sKKyAgICBp
ZiAoIW1faW5wdXREaXNwYXRjaGVyc0J5UGFnZS5jb250YWlucyhwYWdlLnBhZ2VJRCgpKSkKKyAg
ICAgICAgbV9pbnB1dERpc3BhdGNoZXJzQnlQYWdlLnNldChwYWdlLnBhZ2VJRCgpLCBTaW11bGF0
ZWRJbnB1dERpc3BhdGNoZXI6OmNyZWF0ZShwYWdlLCAqdGhpcykpOworCisgICAgcmV0dXJuICpt
X2lucHV0RGlzcGF0Y2hlcnNCeVBhZ2UuZ2V0KHBhZ2UucGFnZUlEKCkpOworfQorCitTaW11bGF0
ZWRJbnB1dFNvdXJjZSogV2ViQXV0b21hdGlvblNlc3Npb246OmlucHV0U291cmNlRm9yVHlwZShT
aW11bGF0ZWRJbnB1dFNvdXJjZTo6VHlwZSB0eXBlKSBjb25zdAoreworICAgIC8vIEZJWE1FOiB0
aGlzIHNob3VsZCB1c2Ugc29tZXRoaW5nIGxpa2UgVmVjdG9yJ3MgZmluZE1hdGNoaW5nKCkuCisg
ICAgZm9yIChhdXRvJiBpbnB1dFNvdXJjZSA6IG1faW5wdXRTb3VyY2VzKSB7CisgICAgICAgIGlm
IChpbnB1dFNvdXJjZS0+dHlwZSA9PSB0eXBlKQorICAgICAgICAgICAgcmV0dXJuICZpbnB1dFNv
dXJjZS5nZXQoKTsKKyAgICB9CisKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworLy8gU2ltdWxh
dGVkSW5wdXREaXNwYXRjaGVyOjpDbGllbnQgQVBJCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9u
OjpzaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBNb3VzZUludGVy
YWN0aW9uIGludGVyYWN0aW9uLCBXZWJNb3VzZUV2ZW50OjpCdXR0b24gbW91c2VCdXR0b24sIGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiBsb2NhdGlvbkluVmlld3BvcnQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoc3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisgICAgV2ViQ29yZTo6SW50UG9pbnQgbG9jYXRpb25JblZpZXcgPSBX
ZWJDb3JlOjpJbnRQb2ludChsb2NhdGlvbkluVmlld3BvcnQueCgpLCBsb2NhdGlvbkluVmlld3Bv
cnQueSgpICsgcGFnZS50b3BDb250ZW50SW5zZXQoKSk7CisgICAgcGFnZS5nZXRXaW5kb3dGcmFt
ZVdpdGhDYWxsYmFjayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBwYWdlID0gbWFrZVJl
ZihwYWdlKSwgaW50ZXJhY3Rpb24sIG1vdXNlQnV0dG9uLCBsb2NhdGlvbkluVmlld10oV2ViQ29y
ZTo6RmxvYXRSZWN0IHdpbmRvd0ZyYW1lKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBjbGlwcGVk
WCA9IHN0ZDo6bWluKHN0ZDo6bWF4KDAuMGYsIChmbG9hdClsb2NhdGlvbkluVmlldy54KCkpLCB3
aW5kb3dGcmFtZS5zaXplKCkud2lkdGgoKSk7CisgICAgICAgIGF1dG8gY2xpcHBlZFkgPSBzdGQ6
Om1pbihzdGQ6Om1heCgwLjBmLCAoZmxvYXQpbG9jYXRpb25JblZpZXcueSgpKSwgd2luZG93RnJh
bWUuc2l6ZSgpLmhlaWdodCgpKTsKKyAgICAgICAgaWYgKGNsaXBwZWRYICE9IGxvY2F0aW9uSW5W
aWV3LngoKSB8fCBjbGlwcGVkWSAhPSBsb2NhdGlvbkluVmlldy55KCkpIHsKKyAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKEFVVE9NQVRJT05fQ09NTUFORF9FUlJPUl9XSVRIX05BTUUoVGFy
Z2V0T3V0T2ZCb3VuZHMpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAg
ICAgIC8vIEJyaWRnZSB0aGUgZmx1c2hlZCBjYWxsYmFjayB0byBvdXIgY29tbWFuZCdzIGNvbXBs
ZXRpb24gaGFuZGxlci4KKyAgICAgICAgYXV0byBtb3VzZUV2ZW50c0ZsdXNoZWRDYWxsYmFjayA9
IFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShzdGQ6Om9w
dGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+IGVycm9yKSB7CisgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihlcnJvcik7CisgICAgICAgIH07CisKKyAgICAgICAgYXV0byYgY2FsbGJh
Y2tJbk1hcCA9IG1fcGVuZGluZ01vdXNlRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2UuYWRk
KHBhZ2UtPnBhZ2VJRCgpLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CisgICAgICAgIGlmIChj
YWxsYmFja0luTWFwKQorICAgICAgICAgICAgY2FsbGJhY2tJbk1hcChBVVRPTUFUSU9OX0NPTU1B
TkRfRVJST1JfV0lUSF9OQU1FKFRpbWVvdXQpKTsKKyAgICAgICAgY2FsbGJhY2tJbk1hcCA9IFdU
Rk1vdmUobW91c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2spOworCisgICAgICAgIHBsYXRmb3JtU2lt
dWxhdGVNb3VzZUludGVyYWN0aW9uKHBhZ2UsIGludGVyYWN0aW9uLCBtb3VzZUJ1dHRvbiwgbG9j
YXRpb25JblZpZXcsIChXZWJFdmVudDo6TW9kaWZpZXJzKW1fY3VycmVudE1vZGlmaWVycyk7CisK
KyAgICAgICAgLy8gSWYgdGhlIGV2ZW50IGRvZXMgbm90IGhpdCB0ZXN0IGFueXRoaW5nIGluIHRo
ZSB3aW5kb3csIHRoZW4gaXQgbWF5IG5vdCBoYXZlIGJlZW4gZGVsaXZlcmVkLgorICAgICAgICBp
ZiAoY2FsbGJhY2tJbk1hcCAmJiAhcGFnZS0+aXNQcm9jZXNzaW5nTW91c2VFdmVudHMoKSkgewor
ICAgICAgICAgICAgYXV0byBjYWxsYmFja1RvQ2FuY2VsID0gbV9wZW5kaW5nTW91c2VFdmVudHNG
bHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS50YWtlKHBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgICAg
IGNhbGxiYWNrVG9DYW5jZWwoc3RkOjpudWxsb3B0KTsKKyAgICAgICAgfQorCisgICAgICAgIC8v
IE90aGVyd2lzZSwgd2FpdCBmb3IgbW91c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2sgdG8gcnVuIHdo
ZW4gYWxsIGV2ZW50cyBhcmUgaGFuZGxlZC4KKyAgICB9KTsKK30KKwordm9pZCBXZWJBdXRvbWF0
aW9uU2Vzc2lvbjo6c2ltdWxhdGVLZXlib2FyZEludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYgcGFn
ZSwgS2V5Ym9hcmRJbnRlcmFjdGlvbiBpbnRlcmFjdGlvbiwgc3RkOjpvcHRpb25hbDxWaXJ0dWFs
S2V5PiB2aXJ0dWFsS2V5LCBzdGQ6Om9wdGlvbmFsPENoYXJLZXk+IGNoYXJLZXksIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgLy8gQnJpZGdlIHRoZSBmbHVzaGVkIGNhbGxiYWNr
IHRvIG91ciBjb21tYW5kJ3MgY29tcGxldGlvbiBoYW5kbGVyLgorICAgIGF1dG8ga2V5Ym9hcmRF
dmVudHNGbHVzaGVkQ2FsbGJhY2sgPSBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oc3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPiBlcnJv
cikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihlcnJvcik7CisgICAgfTsKKworICAgIGF1
dG8mIGNhbGxiYWNrSW5NYXAgPSBtX3BlbmRpbmdLZXlib2FyZEV2ZW50c0ZsdXNoZWRDYWxsYmFj
a3NQZXJQYWdlLmFkZChwYWdlLnBhZ2VJRCgpLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7Cisg
ICAgaWYgKGNhbGxiYWNrSW5NYXApCisgICAgICAgIGNhbGxiYWNrSW5NYXAoQVVUT01BVElPTl9D
T01NQU5EX0VSUk9SX1dJVEhfTkFNRShUaW1lb3V0KSk7CisgICAgY2FsbGJhY2tJbk1hcCA9IFdU
Rk1vdmUoa2V5Ym9hcmRFdmVudHNGbHVzaGVkQ2FsbGJhY2spOworCisgICAgcGxhdGZvcm1TaW11
bGF0ZUtleWJvYXJkSW50ZXJhY3Rpb24ocGFnZSwgaW50ZXJhY3Rpb24sIHZpcnR1YWxLZXksIGNo
YXJLZXkpOworCisgICAgLy8gV2FpdCBmb3Iga2V5Ym9hcmRFdmVudHNGbHVzaGVkQ2FsbGJhY2sg
dG8gcnVuIHdoZW4gYWxsIGV2ZW50cyBhcmUgaGFuZGxlZC4KK30KKwogI2lmIFVTRShBUFBLSVQp
IHx8IFBMQVRGT1JNKEdUSykKIHN0YXRpYyBXZWJFdmVudDo6TW9kaWZpZXJzIHByb3RvY29sTW9k
aWZpZXJUb1dlYkV2ZW50TW9kaWZpZXIoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6
S2V5TW9kaWZpZXIgbW9kaWZpZXIpCiB7CkBAIC0xMzg0LDYgKzE0NzIsMjIgQEAgc3RhdGljIFdl
YkV2ZW50OjpNb2RpZmllcnMgcHJvdG9jb2xNb2RpZmllclRvV2ViRXZlbnRNb2RpZmllcihJbnNw
ZWN0b3I6OlByb3RvY28KIAogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CisK
K3N0YXRpYyBXZWJNb3VzZUV2ZW50OjpCdXR0b24gcHJvdG9jb2xNb3VzZUJ1dHRvblRvV2ViTW91
c2VFdmVudEJ1dHRvbihJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1dHRv
biBidXR0b24pCit7CisgICAgc3dpdGNoIChidXR0b24pIHsKKyAgICBjYXNlIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9uOjpOb25lOgorICAgICAgICByZXR1cm4g
V2ViTW91c2VFdmVudDo6Tm9CdXR0b247CisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpB
dXRvbWF0aW9uOjpNb3VzZUJ1dHRvbjo6TGVmdDoKKyAgICAgICAgcmV0dXJuIFdlYk1vdXNlRXZl
bnQ6OkxlZnRCdXR0b247CisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
OjpNb3VzZUJ1dHRvbjo6TWlkZGxlOgorICAgICAgICByZXR1cm4gV2ViTW91c2VFdmVudDo6TWlk
ZGxlQnV0dG9uOworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91
c2VCdXR0b246OlJpZ2h0OgorICAgICAgICByZXR1cm4gV2ViTW91c2VFdmVudDo6UmlnaHRCdXR0
b247CisgICAgfQorCisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KICNlbmRp
ZiAvLyBVU0UoQVBQS0lUKSB8fCBQTEFURk9STShHVEspCiAKIHZvaWQgV2ViQXV0b21hdGlvblNl
c3Npb246OnBlcmZvcm1Nb3VzZUludGVyYWN0aW9uKGNvbnN0IFN0cmluZyYgaGFuZGxlLCBjb25z
dCBKU09OOjpPYmplY3QmIHJlcXVlc3RlZFBvc2l0aW9uT2JqZWN0LCBjb25zdCBTdHJpbmcmIG1v
dXNlQnV0dG9uU3RyaW5nLCBjb25zdCBTdHJpbmcmIG1vdXNlSW50ZXJhY3Rpb25TdHJpbmcsIGNv
bnN0IEpTT046OkFycmF5JiBrZXlNb2RpZmllclN0cmluZ3MsIFJlZjxQZXJmb3JtTW91c2VJbnRl
cmFjdGlvbkNhbGxiYWNrPiYmIGNhbGxiYWNrKQpAQCAtMTQxNSwxMyArMTUxOSwxMyBAQCB2b2lk
IFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwZXJmb3JtTW91c2VJbnRlcmFjdGlvbihjb25zdCBTdHJp
bmcmIGhhbmRsZSwgY29uc3QgSgogICAgICAgICBXZWJFdmVudDo6TW9kaWZpZXJzIGVudW1WYWx1
ZSA9IHByb3RvY29sTW9kaWZpZXJUb1dlYkV2ZW50TW9kaWZpZXIocGFyc2VkTW9kaWZpZXIudmFs
dWUoKSk7CiAgICAgICAgIGtleU1vZGlmaWVycyA9IChXZWJFdmVudDo6TW9kaWZpZXJzKShlbnVt
VmFsdWUgfCBrZXlNb2RpZmllcnMpOwogICAgIH0KLSAgICAKKwogICAgIHBhZ2UtPmdldFdpbmRv
d0ZyYW1lV2l0aENhbGxiYWNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHBhZ2UgPSBtYWtlUmVmKCpwYWdlKSwgeCwg
eSwgbW91c2VJbnRlcmFjdGlvblN0cmluZywgbW91c2VCdXR0b25TdHJpbmcsIGtleU1vZGlmaWVy
c10oV2ViQ29yZTo6RmxvYXRSZWN0IHdpbmRvd0ZyYW1lKSBtdXRhYmxlIHsKIAogICAgICAgICB4
ID0gc3RkOjptaW4oc3RkOjptYXgoMC4wZiwgeCksIHdpbmRvd0ZyYW1lLnNpemUoKS53aWR0aCgp
KTsKICAgICAgICAgeSA9IHN0ZDo6bWluKHN0ZDo6bWF4KDAuMGYsIHkgKyBwYWdlLT50b3BDb250
ZW50SW5zZXQoKSksIHdpbmRvd0ZyYW1lLnNpemUoKS5oZWlnaHQoKSk7CiAKLSAgICAgICAgV2Vi
Q29yZTo6SW50UG9pbnQgdmlld1Bvc2l0aW9uID0gV2ViQ29yZTo6SW50UG9pbnQoc3RhdGljX2Nh
c3Q8aW50Pih4KSwgc3RhdGljX2Nhc3Q8aW50Pih5KSk7CisgICAgICAgIFdlYkNvcmU6OkludFBv
aW50IHBvc2l0aW9uSW5WaWV3ID0gV2ViQ29yZTo6SW50UG9pbnQoc3RhdGljX2Nhc3Q8aW50Pih4
KSwgc3RhdGljX2Nhc3Q8aW50Pih5KSk7CiAKICAgICAgICAgYXV0byBwYXJzZWRJbnRlcmFjdGlv
biA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb25IZWxwZXJzOjpwYXJzZUVudW1WYWx1
ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VJbnRlcmFj
dGlvbj4obW91c2VJbnRlcmFjdGlvblN0cmluZyk7CiAgICAgICAgIGlmICghcGFyc2VkSW50ZXJh
Y3Rpb24pCkBAIC0xNDQ3LDExICsxNTUxLDggQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6
cGVyZm9ybU1vdXNlSW50ZXJhY3Rpb24oY29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbnN0IEoKICAg
ICAgICAgICAgIGNhbGxiYWNrSW5NYXAoQVVUT01BVElPTl9DT01NQU5EX0VSUk9SX1dJVEhfTkFN
RShUaW1lb3V0KSk7CiAgICAgICAgIGNhbGxiYWNrSW5NYXAgPSBXVEZNb3ZlKG1vdXNlRXZlbnRz
Rmx1c2hlZENhbGxiYWNrKTsKIAotICAgICAgICAvLyBUaGlzIGlzIGNsZWFyZWQgd2hlbiBhbGwg
bW91c2UgZXZlbnRzIGFyZSBmbHVzaGVkLgotICAgICAgICBtX3NpbXVsYXRpbmdVc2VySW50ZXJh
Y3Rpb24gPSB0cnVlOworICAgICAgICBwbGF0Zm9ybVNpbXVsYXRlTW91c2VJbnRlcmFjdGlvbihw
YWdlLCBwYXJzZWRJbnRlcmFjdGlvbi52YWx1ZSgpLCBwcm90b2NvbE1vdXNlQnV0dG9uVG9XZWJN
b3VzZUV2ZW50QnV0dG9uKHBhcnNlZEJ1dHRvbi52YWx1ZSgpKSwgcG9zaXRpb25JblZpZXcsIGtl
eU1vZGlmaWVycyk7CiAKLSAgICAgICAgcGxhdGZvcm1TaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24o
cGFnZSwgdmlld1Bvc2l0aW9uLCBwYXJzZWRJbnRlcmFjdGlvbi52YWx1ZSgpLCBwYXJzZWRCdXR0
b24udmFsdWUoKSwga2V5TW9kaWZpZXJzKTsKLSAgICAgICAgCiAgICAgICAgIC8vIElmIHRoZSBl
dmVudCBsb2NhdGlvbiB3YXMgcHJldmlvdXNseSBjbGlwcGVkIGFuZCBkb2VzIG5vdCBoaXQgdGVz
dCBhbnl0aGluZyBpbiB0aGUgd2luZG93LCB0aGVuIGl0IHdpbGwgbm90IGJlIHByb2Nlc3NlZC4K
ICAgICAgICAgLy8gRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBwcmUtVzNDIGRyaXZlciBpbXBsZW1l
bnRhdGlvbnMsIGRvbid0IG1ha2UgdGhpcyBhIGhhcmQgZXJyb3I7IGp1c3QgZG8gbm90aGluZyBz
aWxlbnRseS4KICAgICAgICAgLy8gSW4gVzNDLW9ubHkgY29kZSBwYXRocywgd2UgY2FuIHJlamVj
dCBhbnkgcG9pbnRlciBhY3Rpb25zIHdob3NlIGNvb3JkaW5hdGVzIGFyZSBvdXRzaWRlIHRoZSB2
aWV3cG9ydCByZWN0LgpAQCAtMTQ5OSw3ICsxNjAwLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vz
c2lvbjo6cGVyZm9ybUtleWJvYXJkSW50ZXJhY3Rpb25zKGNvbnN0IFN0cmluZyYgaGFuZGxlLCBj
b24KICAgICAgICAgICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9BTkRf
REVUQUlMUyhJbnZhbGlkUGFyYW1ldGVyLCAiQW4gaW50ZXJhY3Rpb24gaW4gdGhlICdpbnRlcmFj
dGlvbnMnIHBhcmFtZXRlciBoYXMgYW4gaW52YWxpZCAna2V5JyB2YWx1ZS4iKTsKIAogICAgICAg
ICAgICAgYWN0aW9uc1RvUGVyZm9ybS51bmNoZWNrZWRBcHBlbmQoW3RoaXMsIHBhZ2UsIGludGVy
YWN0aW9uVHlwZSwgdmlydHVhbEtleV0gewotICAgICAgICAgICAgICAgIHBsYXRmb3JtU2ltdWxh
dGVLZXlTdHJva2UoKnBhZ2UsIGludGVyYWN0aW9uVHlwZS52YWx1ZSgpLCB2aXJ0dWFsS2V5LnZh
bHVlKCkpOworICAgICAgICAgICAgICAgIHBsYXRmb3JtU2ltdWxhdGVLZXlib2FyZEludGVyYWN0
aW9uKCpwYWdlLCBpbnRlcmFjdGlvblR5cGUudmFsdWUoKSwgdmlydHVhbEtleSwgc3RkOjpudWxs
b3B0KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAKQEAgLTE1NDAsMTQgKzE2NDEsMTcy
IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBlcmZvcm1LZXlib2FyZEludGVyYWN0aW9u
cyhjb25zdCBTdHJpbmcmIGhhbmRsZSwgY29uCiAgICAgICAgIGNhbGxiYWNrSW5NYXAoQVVUT01B
VElPTl9DT01NQU5EX0VSUk9SX1dJVEhfTkFNRShUaW1lb3V0KSk7CiAgICAgY2FsbGJhY2tJbk1h
cCA9IFdURk1vdmUoa2V5Ym9hcmRFdmVudHNGbHVzaGVkQ2FsbGJhY2spOwogCi0gICAgLy8gVGhp
cyBpcyBjbGVhcmVkIHdoZW4gYWxsIGtleWJvYXJkIGV2ZW50cyBhcmUgZmx1c2hlZC4KLSAgICBt
X3NpbXVsYXRpbmdVc2VySW50ZXJhY3Rpb24gPSB0cnVlOwotCiAgICAgZm9yIChhdXRvJiBhY3Rp
b24gOiBhY3Rpb25zVG9QZXJmb3JtKQogICAgICAgICBhY3Rpb24oKTsKICNlbmRpZiAvLyBQTEFU
Rk9STShDT0NPQSkgfHwgUExBVEZPUk0oR1RLKQogfQogCitzdGF0aWMgU2ltdWxhdGVkSW5wdXRT
b3VyY2U6OlR5cGUgc2ltdWxhdGVkSW5wdXRTb3VyY2VUeXBlRnJvbVByb3RvY29sU291cmNlVHlw
ZShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpJbnB1dFNvdXJjZVR5cGUgcHJvdG9j
b2xUeXBlKQoreworICAgIHN3aXRjaCAocHJvdG9jb2xUeXBlKSB7CisgICAgY2FzZSBJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpJbnB1dFNvdXJjZVR5cGU6Ok51bGw6CisgICAgICAg
IHJldHVybiBTaW11bGF0ZWRJbnB1dFNvdXJjZTo6VHlwZTo6TnVsbDsKKyAgICBjYXNlIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OklucHV0U291cmNlVHlwZTo6S2V5Ym9hcmQ6Cisg
ICAgICAgIHJldHVybiBTaW11bGF0ZWRJbnB1dFNvdXJjZTo6VHlwZTo6S2V5Ym9hcmQ7CisgICAg
Y2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpJbnB1dFNvdXJjZVR5cGU6Ok1v
dXNlOgorICAgICAgICByZXR1cm4gU2ltdWxhdGVkSW5wdXRTb3VyY2U6OlR5cGU6Ok1vdXNlOwor
ICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6SW5wdXRTb3VyY2VUeXBl
OjpUb3VjaDoKKyAgICAgICAgcmV0dXJuIFNpbXVsYXRlZElucHV0U291cmNlOjpUeXBlOjpUb3Vj
aDsKKyAgICB9CisKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2b2lk
IFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwZXJmb3JtSW50ZXJhY3Rpb25TZXF1ZW5jZShjb25zdCBT
dHJpbmcmIGhhbmRsZSwgY29uc3QgSlNPTjo6QXJyYXkmIGlucHV0U291cmNlcywgY29uc3QgSlNP
Tjo6QXJyYXkmIHN0ZXBzLCBSZWY8V2ViQXV0b21hdGlvblNlc3Npb246OlBlcmZvcm1JbnRlcmFj
dGlvblNlcXVlbmNlQ2FsbGJhY2s+JiYgY2FsbGJhY2spCit7CisjaWYgIVVTRShBUFBLSVQpICYm
ICFQTEFURk9STShHVEspCisgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1IoTm90
SW1wbGVtZW50ZWQpOworI2Vsc2UKKyAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSB3ZWJQYWdlUHJv
eHlGb3JIYW5kbGUoaGFuZGxlKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIEFTWU5DX0ZBSUxf
V0lUSF9QUkVERUZJTkVEX0VSUk9SKFdpbmRvd05vdEZvdW5kKTsKKworICAgIEhhc2hNYXA8U3Ry
aW5nLCBSZWY8U2ltdWxhdGVkSW5wdXRTb3VyY2U+PiBzb3VyY2VJZFRvSW5wdXRTb3VyY2VNYXA7
CisgICAgSGFzaE1hcDxTaW11bGF0ZWRJbnB1dFNvdXJjZTo6VHlwZSwgU3RyaW5nLCBXVEY6Oklu
dEhhc2g8U2ltdWxhdGVkSW5wdXRTb3VyY2U6OlR5cGU+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJh
aXRzPFNpbXVsYXRlZElucHV0U291cmNlOjpUeXBlPj4gdHlwZVRvU291cmNlSWRNYXA7CisKKyAg
ICBpZiAoIWlucHV0U291cmNlcy5sZW5ndGgoKSkKKyAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BS
RURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxpZFBhcmFtZXRlciwgIlRoZSBwYXJhbWV0
ZXIgJ2lucHV0U291cmNlcycgd2FzIG5vdCBmb3VuZCBvciBlbXB0eS4iKTsKKworICAgIGZvciAo
YXV0byBpbnB1dFNvdXJjZSA6IGlucHV0U291cmNlcykgeworICAgICAgICBSZWZQdHI8SlNPTjo6
T2JqZWN0PiBpbnB1dFNvdXJjZU9iamVjdDsKKyAgICAgICAgaWYgKCFpbnB1dFNvdXJjZS0+YXNP
YmplY3QoaW5wdXRTb3VyY2VPYmplY3QpKQorICAgICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BS
RURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxpZFBhcmFtZXRlciwgIkFuIGlucHV0IHNv
dXJjZSBpbiB0aGUgJ2lucHV0U291cmNlcycgcGFyYW1ldGVyIHdhcyBpbnZhbGlkLiIpOworICAg
ICAgICAKKyAgICAgICAgU3RyaW5nIHNvdXJjZUlkOworICAgICAgICBpZiAoIWlucHV0U291cmNl
T2JqZWN0LT5nZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJzb3VyY2VJZCIpLCBzb3VyY2VJZCkpCisg
ICAgICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhJ
bnZhbGlkUGFyYW1ldGVyLCAiQW4gaW5wdXQgc291cmNlIGluIHRoZSAnaW5wdXRTb3VyY2VzJyBw
YXJhbWV0ZXIgaXMgbWlzc2luZyBhICdzb3VyY2VJZCcuIik7CisKKyAgICAgICAgU3RyaW5nIHNv
dXJjZVR5cGU7CisgICAgICAgIGlmICghaW5wdXRTb3VyY2VPYmplY3QtPmdldFN0cmluZyhBU0NJ
SUxpdGVyYWwoInNvdXJjZVR5cGUiKSwgc291cmNlVHlwZSkpCisgICAgICAgICAgICBBU1lOQ19G
QUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhJbnZhbGlkUGFyYW1ldGVyLCAi
QW4gaW5wdXQgc291cmNlIGluIHRoZSAnaW5wdXRTb3VyY2VzJyBwYXJhbWV0ZXIgaXMgbWlzc2lu
ZyBhICdzb3VyY2VUeXBlJy4iKTsKKworICAgICAgICBhdXRvIHBhcnNlZElucHV0U291cmNlVHlw
ZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb25IZWxwZXJzOjpwYXJzZUVudW1WYWx1
ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6SW5wdXRTb3VyY2VU
eXBlPihzb3VyY2VUeXBlKTsKKyAgICAgICAgaWYgKCFwYXJzZWRJbnB1dFNvdXJjZVR5cGUpCisg
ICAgICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhJ
bnZhbGlkUGFyYW1ldGVyLCAiQW4gaW5wdXQgc291cmNlIGluIHRoZSAnaW5wdXRTb3VyY2VzJyBw
YXJhbWV0ZXIgaGFzIGFuIGludmFsaWQgJ3NvdXJjZVR5cGUnLiIpOworCisgICAgICAgIFNpbXVs
YXRlZElucHV0U291cmNlOjpUeXBlIGlucHV0U291cmNlVHlwZSA9IHNpbXVsYXRlZElucHV0U291
cmNlVHlwZUZyb21Qcm90b2NvbFNvdXJjZVR5cGUoKnBhcnNlZElucHV0U291cmNlVHlwZSk7Cisg
ICAgICAgIGlmIChpbnB1dFNvdXJjZVR5cGUgPT0gU2ltdWxhdGVkSW5wdXRTb3VyY2U6OlR5cGU6
OlRvdWNoKQorICAgICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5E
X0RFVEFJTFMoTm90SW1wbGVtZW50ZWQsICJUb3VjaCBpbnB1dCBzb3VyY2VzIGFyZSBub3QgeWV0
IHN1cHBvcnRlZC4iKTsKKworICAgICAgICBpZiAodHlwZVRvU291cmNlSWRNYXAuY29udGFpbnMo
aW5wdXRTb3VyY2VUeXBlKSkKKyAgICAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVE
X0VSUk9SX0FORF9ERVRBSUxTKEludmFsaWRQYXJhbWV0ZXIsICJUd28gaW5wdXQgc291cmNlcyB3
aXRoIHRoZSBzYW1lIHR5cGUgd2VyZSBzcGVjaWZpZWQuIik7CisgICAgICAgIGlmIChzb3VyY2VJ
ZFRvSW5wdXRTb3VyY2VNYXAuY29udGFpbnMoc291cmNlSWQpKQorICAgICAgICAgICAgQVNZTkNf
RkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxpZFBhcmFtZXRlciwg
IlR3byBpbnB1dCBzb3VyY2VzIHdpdGggdGhlIHNhbWUgc291cmNlSWQgd2VyZSBzcGVjaWZpZWQu
Iik7CisKKyAgICAgICAgdHlwZVRvU291cmNlSWRNYXAuYWRkKGlucHV0U291cmNlVHlwZSwgc291
cmNlSWQpOworICAgICAgICBzb3VyY2VJZFRvSW5wdXRTb3VyY2VNYXAuYWRkKHNvdXJjZUlkLCAq
aW5wdXRTb3VyY2VGb3JUeXBlKGlucHV0U291cmNlVHlwZSkpOworICAgIH0KKworICAgIFZlY3Rv
cjxTaW11bGF0ZWRJbnB1dEtleUZyYW1lPiBrZXlGcmFtZXM7CisKKyAgICBpZiAoIXN0ZXBzLmxl
bmd0aCgpKQorICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9BTkRfREVU
QUlMUyhJbnZhbGlkUGFyYW1ldGVyLCAiVGhlIHBhcmFtZXRlciAnc3RlcHMnIHdhcyBub3QgZm91
bmQgb3IgZW1wdHkuIik7CisKKyAgICBmb3IgKGF1dG8gc3RlcCA6IHN0ZXBzKSB7CisgICAgICAg
IFJlZlB0cjxKU09OOjpPYmplY3Q+IHN0ZXBPYmplY3Q7CisgICAgICAgIGlmICghc3RlcC0+YXNP
YmplY3Qoc3RlcE9iamVjdCkpCisgICAgICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5F
RF9FUlJPUl9BTkRfREVUQUlMUyhJbnZhbGlkUGFyYW1ldGVyLCAiQSBzdGVwIGluIHRoZSAnc3Rl
cHMnIHBhcmFtZXRlciB3YXMgbm90IGFuIG9iamVjdC4iKTsKKworICAgICAgICBSZWZQdHI8SlNP
Tjo6QXJyYXk+IHN0ZXBTdGF0ZXM7CisgICAgICAgIGlmICghc3RlcE9iamVjdC0+Z2V0QXJyYXko
QVNDSUlMaXRlcmFsKCJzdGF0ZXMiKSwgc3RlcFN0YXRlcykpCisgICAgICAgICAgICBBU1lOQ19G
QUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhJbnZhbGlkUGFyYW1ldGVyLCAi
QSBzdGVwIGlzIG1pc3NpbmcgdGhlICdzdGF0ZXMnIHByb3BlcnR5LiIpOworCisgICAgICAgIFZl
Y3RvcjxTaW11bGF0ZWRJbnB1dEtleUZyYW1lOjpTdGF0ZUVudHJ5PiBlbnRyaWVzOworICAgICAg
ICBlbnRyaWVzLnJlc2VydmVDYXBhY2l0eShzdGVwU3RhdGVzLT5sZW5ndGgoKSk7CisKKyAgICAg
ICAgZm9yIChhdXRvIHN0YXRlIDogKnN0ZXBTdGF0ZXMpIHsKKyAgICAgICAgICAgIFJlZlB0cjxK
U09OOjpPYmplY3Q+IHN0YXRlT2JqZWN0OworICAgICAgICAgICAgaWYgKCFzdGF0ZS0+YXNPYmpl
Y3Qoc3RhdGVPYmplY3QpKQorICAgICAgICAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJ
TkVEX0VSUk9SX0FORF9ERVRBSUxTKEludmFsaWRQYXJhbWV0ZXIsICJFbmNvdW50ZXJlZCBhIG5v
bi1vYmplY3Qgc3RlcCBzdGF0ZS4iKTsKKworICAgICAgICAgICAgU3RyaW5nIHNvdXJjZUlkOwor
ICAgICAgICAgICAgaWYgKCFzdGF0ZU9iamVjdC0+Z2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgic291
cmNlSWQiKSwgc291cmNlSWQpKQorICAgICAgICAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVE
RUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKEludmFsaWRQYXJhbWV0ZXIsICJTdGVwIHN0YXRlIGxh
Y2tzIHJlcXVpcmVkICdzb3VyY2VJZCcgcHJvcGVydHkuIik7CisKKyAgICAgICAgICAgIGlmICgh
c291cmNlSWRUb0lucHV0U291cmNlTWFwLmNvbnRhaW5zKHNvdXJjZUlkKSkKKyAgICAgICAgICAg
ICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhJbnZhbGlk
UGFyYW1ldGVyLCAiVW5rbm93biAnc291cmNlSWQnIHNwZWNpZmllZC4iKTsKKworICAgICAgICAg
ICAgU2ltdWxhdGVkSW5wdXRTb3VyY2UmIGlucHV0U291cmNlID0gKnNvdXJjZUlkVG9JbnB1dFNv
dXJjZU1hcC5nZXQoc291cmNlSWQpOworICAgICAgICAgICAgU2ltdWxhdGVkSW5wdXRTb3VyY2VT
dGF0ZSBzb3VyY2VTdGF0ZSB7IH07CisKKyAgICAgICAgICAgIFN0cmluZyBwcmVzc2VkQ2hhcktl
eVN0cmluZzsKKyAgICAgICAgICAgIGlmIChzdGF0ZU9iamVjdC0+Z2V0U3RyaW5nKEFTQ0lJTGl0
ZXJhbCgicHJlc3NlZENoYXJLZXkiKSwgcHJlc3NlZENoYXJLZXlTdHJpbmcpKQorICAgICAgICAg
ICAgICAgIHNvdXJjZVN0YXRlLnByZXNzZWRDaGFyS2V5ID0gcHJlc3NlZENoYXJLZXlTdHJpbmcu
Y2hhcmFjdGVyQXQoMCk7CisKKyAgICAgICAgICAgIFN0cmluZyBwcmVzc2VkVmlydHVhbEtleVN0
cmluZzsKKyAgICAgICAgICAgIGlmIChzdGF0ZU9iamVjdC0+Z2V0U3RyaW5nKEFTQ0lJTGl0ZXJh
bCgicHJlc3NlZFZpcnR1YWxLZXkiKSwgcHJlc3NlZFZpcnR1YWxLZXlTdHJpbmcpKQorICAgICAg
ICAgICAgICAgIHNvdXJjZVN0YXRlLnByZXNzZWRWaXJ0dWFsS2V5ID0gSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbkhlbHBlcnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5PihwcmVzc2VkVmlydHVhbEtleVN0
cmluZyk7CisKKyAgICAgICAgICAgIFN0cmluZyBwcmVzc2VkQnV0dG9uU3RyaW5nOworICAgICAg
ICAgICAgaWYgKHN0YXRlT2JqZWN0LT5nZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJwcmVzc2VkQnV0
dG9uIiksIHByZXNzZWRCdXR0b25TdHJpbmcpKSB7CisgICAgICAgICAgICAgICAgYXV0byBwcm90
b2NvbEJ1dHRvbiA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb25IZWxwZXJzOjpwYXJz
ZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91
c2VCdXR0b24+KHByZXNzZWRCdXR0b25TdHJpbmcpOworICAgICAgICAgICAgICAgIHNvdXJjZVN0
YXRlLnByZXNzZWRNb3VzZUJ1dHRvbiA9IHByb3RvY29sTW91c2VCdXR0b25Ub1dlYk1vdXNlRXZl
bnRCdXR0b24ocHJvdG9jb2xCdXR0b24udmFsdWVfb3IoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbjo6TW91c2VCdXR0b246Ok5vbmUpKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgUmVmUHRyPEpTT046Ok9iamVjdD4gbG9jYXRpb25PYmplY3Q7CisgICAgICAgICAgICBpZiAo
c3RhdGVPYmplY3QtPmdldE9iamVjdChBU0NJSUxpdGVyYWwoImxvY2F0aW9uIiksIGxvY2F0aW9u
T2JqZWN0KSkgeworICAgICAgICAgICAgICAgIGludCB4LCB5OworICAgICAgICAgICAgICAgIGlm
IChsb2NhdGlvbk9iamVjdC0+Z2V0SW50ZWdlcihBU0NJSUxpdGVyYWwoIngiKSwgeCkgJiYgbG9j
YXRpb25PYmplY3QtPmdldEludGVnZXIoQVNDSUlMaXRlcmFsKCJ5IiksIHkpKQorICAgICAgICAg
ICAgICAgICAgICBzb3VyY2VTdGF0ZS5sb2NhdGlvbiA9IFdlYkNvcmU6OkludFBvaW50KHgsIHkp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpbnQgcGFyc2VkRHVyYXRpb247CisgICAg
ICAgICAgICBpZiAoc3RhdGVPYmplY3QtPmdldEludGVnZXIoQVNDSUlMaXRlcmFsKCJkdXJhdGlv
biIpLCBwYXJzZWREdXJhdGlvbikpCisgICAgICAgICAgICAgICAgc291cmNlU3RhdGUuZHVyYXRp
b24gPSBTZWNvbmRzOjpmcm9tTWlsbGlzZWNvbmRzKHBhcnNlZER1cmF0aW9uKTsKKworICAgICAg
ICAgICAgZW50cmllcy51bmNoZWNrZWRBcHBlbmQoc3RkOjpwYWlyPFNpbXVsYXRlZElucHV0U291
cmNlJiwgU2ltdWxhdGVkSW5wdXRTb3VyY2VTdGF0ZT4geyBpbnB1dFNvdXJjZSwgc291cmNlU3Rh
dGUgfSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGtleUZyYW1lcy5hcHBlbmQoU2lt
dWxhdGVkSW5wdXRLZXlGcmFtZShXVEZNb3ZlKGVudHJpZXMpKSk7CisgICAgfQorCisgICAgU2lt
dWxhdGVkSW5wdXREaXNwYXRjaGVyJiBpbnB1dERpc3BhdGNoZXIgPSBpbnB1dERpc3BhdGNoZXJG
b3JQYWdlKCpwYWdlKTsKKyAgICBpZiAoaW5wdXREaXNwYXRjaGVyLmlzQWN0aXZlKCkpIHsKKyAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVE
RUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKEludGVybmFsRXJyb3IsICJBIHByZXZpb3VzIGludGVy
YWN0aW9uIGlzIHN0aWxsIHVuZGVyd2F5LiIpOworICAgIH0KKworICAgIGlucHV0RGlzcGF0Y2hl
ci5ydW4oV1RGTW92ZShrZXlGcmFtZXMpLCBtX2lucHV0U291cmNlcywgW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oc3Rk
OjpvcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPiBlcnJvcikgeworICAgICAgICBpZiAo
ZXJyb3IpCisgICAgICAgICAgICBjYWxsYmFjay0+c2VuZEZhaWx1cmUoZXJyb3IudmFsdWUoKS50
b1Byb3RvY29sU3RyaW5nKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjYWxsYmFjay0+
c2VuZFN1Y2Nlc3MoKTsKKyAgICB9KTsKKyNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkgfHwgUExB
VEZPUk0oR1RLKQorfQorCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpjYW5jZWxJbnRlcmFj
dGlvblNlcXVlbmNlKGNvbnN0IFN0cmluZyYgaGFuZGxlLCBSZWY8Q2FuY2VsSW50ZXJhY3Rpb25T
ZXF1ZW5jZUNhbGxiYWNrPiYmIGNhbGxiYWNrKQoreworI2lmICFVU0UoQVBQS0lUKSAmJiAhUExB
VEZPUk0oR1RLKQorICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKE5vdEltcGxl
bWVudGVkKTsKKyNlbHNlCisgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gd2ViUGFnZVByb3h5Rm9y
SGFuZGxlKGhhbmRsZSk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICBBU1lOQ19GQUlMX1dJVEhf
UFJFREVGSU5FRF9FUlJPUihXaW5kb3dOb3RGb3VuZCk7CisKKyAgICBWZWN0b3I8U2ltdWxhdGVk
SW5wdXRLZXlGcmFtZT4ga2V5RnJhbWVzKHsgU2ltdWxhdGVkSW5wdXRLZXlGcmFtZTo6a2V5RnJh
bWVUb1Jlc2V0SW5wdXRTb3VyY2VzKG1faW5wdXRTb3VyY2VzKSB9KTsKKyAgICBTaW11bGF0ZWRJ
bnB1dERpc3BhdGNoZXImIGlucHV0RGlzcGF0Y2hlciA9IGlucHV0RGlzcGF0Y2hlckZvclBhZ2Uo
KnBhZ2UpOworICAgIGlucHV0RGlzcGF0Y2hlci5jYW5jZWwoKTsKKyAgICAKKyAgICBpbnB1dERp
c3BhdGNoZXIucnVuKFdURk1vdmUoa2V5RnJhbWVzKSwgbV9pbnB1dFNvdXJjZXMsIFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayldKHN0ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4gZXJyb3IpIHsKKyAgICAg
ICAgaWYgKGVycm9yKQorICAgICAgICAgICAgY2FsbGJhY2stPnNlbmRGYWlsdXJlKGVycm9yLnZh
bHVlKCkudG9Qcm90b2NvbFN0cmluZygpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY2Fs
bGJhY2stPnNlbmRTdWNjZXNzKCk7CisgICAgfSk7CisjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0Ep
IHx8IFBMQVRGT1JNKEdUSykKK30KKwogdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6dGFrZVNj
cmVlbnNob3QoY29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxGcmFt
ZUhhbmRsZSwgY29uc3QgU3RyaW5nKiBvcHRpb25hbE5vZGVIYW5kbGUsIGNvbnN0IGJvb2wqIG9w
dGlvbmFsU2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgY29uc3QgYm9vbCogb3B0aW9uYWxDbGlwVG9W
aWV3cG9ydCwgUmVmPFRha2VTY3JlZW5zaG90Q2FsbGJhY2s+JiYgY2FsbGJhY2spCiB7CiAgICAg
V2ViUGFnZVByb3h5KiBwYWdlID0gd2ViUGFnZVByb3h5Rm9ySGFuZGxlKGhhbmRsZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25T
ZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRp
b25TZXNzaW9uLmgKaW5kZXggM2FlMzVlNmY3ZWNkYzU4YTNkZDk1ZTk4MDgwZWY0YTMyOTVjYTcx
OS4uNGQyNDhjYzkxMDJmZDMyNDU5Yzk1MDUyYWQ2Y2FlMGYzM2IyZTE2NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNl
c3Npb24uaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkF1dG9tYXRpb25Gcm9udGVuZERp
c3BhdGNoZXJzLmgiCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIlNoYXJlYWJs
ZUJpdG1hcC5oIgorI2luY2x1ZGUgIlNpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5oIgogI2luY2x1
ZGUgIldlYkV2ZW50LmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTc2LDcgKzc3LDcgQEAgY2xhc3MgV2ViT3BlblBhbmVs
UmVzdWx0TGlzdGVuZXJQcm94eTsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIGNsYXNzIFdlYlByb2Nl
c3NQb29sOwogCi1zdHJ1Y3QgQXV0b21hdGlvbkNvbW1hbmRFcnJvciB7CitjbGFzcyBBdXRvbWF0
aW9uQ29tbWFuZEVycm9yIHsKIHB1YmxpYzoKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRv
bWF0aW9uOjpFcnJvck1lc3NhZ2UgdHlwZTsKICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbWVz
c2FnZSB7IHN0ZDo6bnVsbG9wdCB9OwpAQCAtOTEsMTEgKzkyLDE0IEBAIHB1YmxpYzoKICAgICBT
dHJpbmcgdG9Qcm90b2NvbFN0cmluZygpOwogfTsKIAordXNpbmcgQXV0b21hdGlvbkNvbXBsZXRp
b25IYW5kbGVyID0gV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8QXV0
b21hdGlvbkNvbW1hbmRFcnJvcj4pPjsKKwogY2xhc3MgV2ViQXV0b21hdGlvblNlc3Npb24gZmlu
YWwgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpBdXRvbWF0aW9u
U2Vzc2lvbj4sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogI2lmIEVOQUJMRShSRU1PVEVf
SU5TUEVDVE9SKQogICAgICwgcHVibGljIEluc3BlY3Rvcjo6UmVtb3RlQXV0b21hdGlvblRhcmdl
dAogI2VuZGlmCiAgICAgLCBwdWJsaWMgSW5zcGVjdG9yOjpBdXRvbWF0aW9uQmFja2VuZERpc3Bh
dGNoZXJIYW5kbGVyCisgICAgLCBwdWJsaWMgU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjpDbGll
bnQKIHsKIHB1YmxpYzoKICAgICBXZWJBdXRvbWF0aW9uU2Vzc2lvbigpOwpAQCAtMTMxLDYgKzEz
NSwxMCBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB2b2lkIHRlcm1pbmF0ZSgpOwogCisgICAgLy8g
U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjpDbGllbnQgQVBJCisgICAgdm9pZCBzaW11bGF0ZU1v
dXNlSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiwgTW91c2VJbnRlcmFjdGlvbiwgV2ViTW91c2VF
dmVudDo6QnV0dG9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbG9jYXRpb25JblZpZXcsIEF1
dG9tYXRpb25Db21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKKyAgICB2b2lkIHNpbXVsYXRlS2V5
Ym9hcmRJbnRlcmFjdGlvbihXZWJQYWdlUHJveHkmLCBLZXlib2FyZEludGVyYWN0aW9uLCBzdGQ6
Om9wdGlvbmFsPFZpcnR1YWxLZXk+LCBzdGQ6Om9wdGlvbmFsPENoYXJLZXk+LCBBdXRvbWF0aW9u
Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CisKICAgICAvLyBJbnNwZWN0b3I6OkF1dG9tYXRp
b25CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgQVBJCiAgICAgLy8gTk9URTogdGhlIHNldCBvZiBk
ZWNsYXJhdGlvbnMgaW5jbHVkZWQgaW4gdGhpcyBpbnRlcmZhY2UgZGVwZW5kIG9uIHRoZSAicGxh
dGZvcm0iIHByb3BlcnR5IGluIEF1dG9tYXRpb24uanNvbgogICAgIC8vIGFuZCB0aGUgLS1wbGF0
Zm9ybSBhcmd1bWVudCBwYXNzZWQgdG8gdGhlIHByb3RvY29sIGJpbmRpbmdzIGdlbmVyYXRvci4K
QEAgLTE1MSw2ICsxNTksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBldmFsdWF0ZUphdmFTY3JpcHRG
dW5jdGlvbihjb25zdCBTdHJpbmcmIGJyb3dzaW5nQ29udGV4dEhhbmRsZSwgY29uc3QgU3RyaW5n
KiBvcHRpb25hbEZyYW1lSGFuZGxlLCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uLCBjb25zdCBKU09O
OjpBcnJheSYgYXJndW1lbnRzLCBjb25zdCBib29sKiBvcHRpb25hbEV4cGVjdHNJbXBsaWNpdENh
bGxiYWNrQXJndW1lbnQsIGNvbnN0IGludCogb3B0aW9uYWxDYWxsYmFja1RpbWVvdXQsIFJlZjxJ
bnNwZWN0b3I6OkF1dG9tYXRpb25CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkV2YWx1YXRlSmF2
YVNjcmlwdEZ1bmN0aW9uQ2FsbGJhY2s+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgcGVyZm9ybU1v
dXNlSW50ZXJhY3Rpb24oY29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbnN0IEpTT046Ok9iamVjdCYg
cmVxdWVzdGVkUG9zaXRpb24sIGNvbnN0IFN0cmluZyYgbW91c2VCdXR0b24sIGNvbnN0IFN0cmlu
ZyYgbW91c2VJbnRlcmFjdGlvbiwgY29uc3QgSlNPTjo6QXJyYXkmIGtleU1vZGlmaWVycywgUmVm
PFBlcmZvcm1Nb3VzZUludGVyYWN0aW9uQ2FsbGJhY2s+JiYpIGZpbmFsOwogICAgIHZvaWQgcGVy
Zm9ybUtleWJvYXJkSW50ZXJhY3Rpb25zKGNvbnN0IFN0cmluZyYgaGFuZGxlLCBjb25zdCBKU09O
OjpBcnJheSYgaW50ZXJhY3Rpb25zLCBSZWY8UGVyZm9ybUtleWJvYXJkSW50ZXJhY3Rpb25zQ2Fs
bGJhY2s+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgcGVyZm9ybUludGVyYWN0aW9uU2VxdWVuY2Uo
Y29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbnN0IEpTT046OkFycmF5JiBzb3VyY2VzLCBjb25zdCBK
U09OOjpBcnJheSYgc3RlcHMsIFJlZjxQZXJmb3JtSW50ZXJhY3Rpb25TZXF1ZW5jZUNhbGxiYWNr
PiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNhbmNlbEludGVyYWN0aW9uU2VxdWVuY2UoY29uc3Qg
U3RyaW5nJiBoYW5kbGUsIFJlZjxDYW5jZWxJbnRlcmFjdGlvblNlcXVlbmNlQ2FsbGJhY2s+JiYp
IG92ZXJyaWRlOwogICAgIHZvaWQgdGFrZVNjcmVlbnNob3QoY29uc3QgU3RyaW5nJiBoYW5kbGUs
IGNvbnN0IFN0cmluZyogb3B0aW9uYWxGcmFtZUhhbmRsZSwgY29uc3QgU3RyaW5nKiBvcHRpb25h
bE5vZGVIYW5kbGUsIGNvbnN0IGJvb2wqIG9wdGlvbmFsU2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwg
Y29uc3QgYm9vbCogb3B0aW9uYWxDbGlwVG9WaWV3cG9ydCwgUmVmPFRha2VTY3JlZW5zaG90Q2Fs
bGJhY2s+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVzb2x2ZUNoaWxkRnJhbWVIYW5kbGUoY29u
c3QgU3RyaW5nJiBicm93c2luZ0NvbnRleHRIYW5kbGUsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxG
cmFtZUhhbmRsZSwgY29uc3QgaW50KiBvcHRpb25hbE9yZGluYWwsIGNvbnN0IFN0cmluZyogb3B0
aW9uYWxOYW1lLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsTm9kZUhhbmRsZSwgUmVmPFJlc29sdmVD
aGlsZEZyYW1lSGFuZGxlQ2FsbGJhY2s+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVzb2x2ZVBh
cmVudEZyYW1lSGFuZGxlKGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0SGFuZGxlLCBjb25z
dCBTdHJpbmcmIGZyYW1lSGFuZGxlLCBSZWY8UmVzb2x2ZVBhcmVudEZyYW1lSGFuZGxlQ2FsbGJh
Y2s+JiYpIG92ZXJyaWRlOwpAQCAtMTc1LDcgKzE4NSwxMCBAQCBwdWJsaWM6CiAjZW5kaWYKIAog
ICAgIC8vIEV2ZW50IFNpbXVsYXRpb24gU3VwcG9ydC4KLSAgICBib29sIGlzU2ltdWxhdGluZ1Vz
ZXJJbnRlcmFjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2ltdWxhdGluZ1VzZXJJbnRlcmFjdGlv
bjsgfQorICAgIGJvb2wgaXNTaW11bGF0aW5nVXNlckludGVyYWN0aW9uKCkgY29uc3Q7CisgICAg
U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyJiBpbnB1dERpc3BhdGNoZXJGb3JQYWdlKFdlYlBhZ2VQ
cm94eSYpOworICAgIFNpbXVsYXRlZElucHV0U291cmNlKiBpbnB1dFNvdXJjZUZvclR5cGUoU2lt
dWxhdGVkSW5wdXRTb3VyY2U6OlR5cGUpIGNvbnN0OworCiAjaWYgUExBVEZPUk0oTUFDKQogICAg
IGJvb2wgd2FzRXZlbnRTeW50aGVzaXplZEZvckF1dG9tYXRpb24oTlNFdmVudCAqKTsKICAgICB2
b2lkIG1hcmtFdmVudEFzU3ludGhlc2l6ZWRGb3JBdXRvbWF0aW9uKE5TRXZlbnQgKik7CkBAIC0y
MTUsOSArMjI4LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZERlbGV0ZUNvb2tpZSh1aW50NjRf
dCBjYWxsYmFja0lELCBjb25zdCBTdHJpbmcmIGVycm9yVHlwZSk7CiAKICAgICAvLyBQbGF0Zm9y
bS1kZXBlbmRlbnQgaW1wbGVtZW50YXRpb25zLgotICAgIHZvaWQgcGxhdGZvcm1TaW11bGF0ZU1v
dXNlSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHZp
ZXdQb3NpdGlvbiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VJbnRlcmFj
dGlvbiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VCdXR0b24sIFdlYkV2
ZW50OjpNb2RpZmllcnMpOwotICAgIC8vIFNpbXVsYXRlcyBhIHNpbmdsZSB2aXJ0dWFsIGtleSBi
ZWluZyBwcmVzc2VkLCBzdWNoIGFzIENvbnRyb2wsIEYta2V5cywgTnVtcGFkIGtleXMsIGV0Yy4g
YXMgYWxsb3dlZCBieSB0aGUgcHJvdG9jb2wuCi0gICAgdm9pZCBwbGF0Zm9ybVNpbXVsYXRlS2V5
U3Ryb2tlKFdlYlBhZ2VQcm94eSYsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Oktl
eWJvYXJkSW50ZXJhY3Rpb25UeXBlLCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpW
aXJ0dWFsS2V5KTsKKyAgICB2b2lkIHBsYXRmb3JtU2ltdWxhdGVNb3VzZUludGVyYWN0aW9uKFdl
YlBhZ2VQcm94eSYsIE1vdXNlSW50ZXJhY3Rpb24sIFdlYk1vdXNlRXZlbnQ6OkJ1dHRvbiwgY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmIGxvY2F0aW9uSW5WaWV3LCBXZWJFdmVudDo6TW9kaWZpZXJz
IGtleU1vZGlmaWVycyk7CisgICAgLy8gU2ltdWxhdGVzIGEgc2luZ2xlIHZpcnR1YWwgb3IgY2hh
ciBrZXkgYmVpbmcgcHJlc3NlZC9yZWxlYXNlZCwgc3VjaCBhcyAnYScsIENvbnRyb2wsIEYta2V5
cywgTnVtcGFkIGtleXMsIGV0Yy4gYXMgYWxsb3dlZCBieSB0aGUgcHJvdG9jb2wuCisgICAgdm9p
ZCBwbGF0Zm9ybVNpbXVsYXRlS2V5Ym9hcmRJbnRlcmFjdGlvbihXZWJQYWdlUHJveHkmLCBLZXli
b2FyZEludGVyYWN0aW9uLCBzdGQ6Om9wdGlvbmFsPFZpcnR1YWxLZXk+LCBzdGQ6Om9wdGlvbmFs
PENoYXJLZXk+KTsKICAgICAvLyBTaW11bGF0ZXMga2V5IHByZXNzZXMgdG8gcHJvZHVjZSB0aGUg
Y29kZXBvaW50cyBpbiBhIHN0cmluZy4gT25lIG9yIG1vcmUgY29kZSBwb2ludHMgYXJlIGRlbGl2
ZXJlZCBhdG9taWNhbGx5IGF0IGdyYXBoZW1lIGNsdXN0ZXIgYm91bmRhcmllcy4KICAgICB2b2lk
IHBsYXRmb3JtU2ltdWxhdGVLZXlTZXF1ZW5jZShXZWJQYWdlUHJveHkmLCBjb25zdCBTdHJpbmcm
KTsKICAgICAvLyBHZXQgYmFzZTY0IGVuY29kZWQgUE5HIGRhdGEgZnJvbSBhIGJpdG1hcC4KQEAg
LTI4OSwxMyArMzAyLDE1IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1fcGVybWlzc2lvbkZvckdl
dFVzZXJNZWRpYSB7IHRydWUgfTsKIAotICAgIC8vIFRydWUgaWYgYSBzeW50aGVzaXplZCBrZXkg
ZXZlbnQgaXMgc3RpbGwgYmVpbmcgcHJvY2Vzc2VkLgotICAgIGJvb2wgbV9zaW11bGF0aW5nVXNl
ckludGVyYWN0aW9uIHsgZmFsc2UgfTsKLQogICAgIC8vIEtlZXAgdHJhY2sgb2YgY3VycmVudGx5
IGFjdGl2ZSBtb2RpZmllcnMgYWNyb3NzIG11bHRpcGxlIGtleXN0cm9rZXMuCiAgICAgLy8gTW9z
dCBwbGF0Zm9ybXMgZG8gbm90IHRyYWNrIGN1cnJlbnQgbW9kaWZpZXJzIGZyb20gc3ludGhlc2l6
ZWQgZXZlbnRzLgogICAgIHVuc2lnbmVkIG1fY3VycmVudE1vZGlmaWVycyB7IDAgfTsKIAorICAg
IC8vIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlciBBUElzIHRha2UgYSBzZXQgb2YgaW5wdXQgc291
cmNlcy4gV2UgYWxzbyBpbnRlcm4gdGhlc2UKKyAgICAvLyBzbyB0aGF0IHByZXZpb3VzIGlucHV0
IHNvdXJjZSBzdGF0ZSBpcyB1c2VkIGFzIGluaXRpYWwgc3RhdGUgZm9yIGxhdGVyIGNvbW1hbmRz
LgorICAgIEhhc2hTZXQ8UmVmPFNpbXVsYXRlZElucHV0U291cmNlPj4gbV9pbnB1dFNvdXJjZXM7
CisgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmPFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcj4+IG1f
aW5wdXREaXNwYXRjaGVyc0J5UGFnZTsKKwogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQog
ICAgIEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBtX3JlbW90ZUNoYW5uZWwgeyBudWxscHRy
IH07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRp
b24vZ3RrL1dlYkF1dG9tYXRpb25TZXNzaW9uR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0F1dG9tYXRpb24vZ3RrL1dlYkF1dG9tYXRpb25TZXNzaW9uR3RrLmNwcAppbmRleCAyOGNm
Nzk0OGM4M2I3Y2QxOTJjMDNjMDdhNTJhOTAxZGI2OGRlY2RhLi44YzYyODY0ZGUxMmI3YmEzNWEy
NjE4YWExMzU5ZmU0ZTAzNGEzZmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BdXRvbWF0aW9uL2d0ay9XZWJBdXRvbWF0aW9uU2Vzc2lvbkd0ay5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9ndGsvV2ViQXV0b21hdGlvblNlc3Npb25HdGsu
Y3BwCkBAIC00OCwxNSArNDgsMTUgQEAgc3RhdGljIHVuc2lnbmVkIG1vZGlmaWVyc1RvRXZlbnRT
dGF0ZShXZWJFdmVudDo6TW9kaWZpZXJzIG1vZGlmaWVycykKICAgICByZXR1cm4gc3RhdGU7CiB9
CiAKLXN0YXRpYyB1bnNpZ25lZCBtb3VzZUJ1dHRvblRvR2RrQnV0dG9uKEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9uIGJ1dHRvbikKK3N0YXRpYyB1bnNpZ25lZCBt
b3VzZUJ1dHRvblRvR2RrQnV0dG9uKFdlYk1vdXNlRXZlbnQ6OkJ1dHRvbiBidXR0b24pCiB7CiAg
ICAgc3dpdGNoIChidXR0b24pIHsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9t
YXRpb246Ok1vdXNlQnV0dG9uOjpOb25lOgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbjo6TW91c2VCdXR0b246OkxlZnQ6CisgICAgY2FzZSBXZWJNb3VzZUV2ZW50OjpO
b0J1dHRvbjoKKyAgICBjYXNlIFdlYk1vdXNlRXZlbnQ6OkxlZnRCdXR0b246CiAgICAgICAgIHJl
dHVybiBHREtfQlVUVE9OX1BSSU1BUlk7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpB
dXRvbWF0aW9uOjpNb3VzZUJ1dHRvbjo6TWlkZGxlOgorICAgIGNhc2UgV2ViTW91c2VFdmVudDo6
TWlkZGxlQnV0dG9uOgogICAgICAgICByZXR1cm4gR0RLX0JVVFRPTl9NSURETEU7Ci0gICAgY2Fz
ZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1dHRvbjo6UmlnaHQ6Cisg
ICAgY2FzZSBXZWJNb3VzZUV2ZW50OjpSaWdodEJ1dHRvbjoKICAgICAgICAgcmV0dXJuIEdES19C
VVRUT05fU0VDT05EQVJZOwogICAgIH0KICAgICByZXR1cm4gR0RLX0JVVFRPTl9QUklNQVJZOwpA
QCAtMTAxLDMwICsxMDEsMzAgQEAgc3RhdGljIHZvaWQgZG9Nb3Rpb25FdmVudChHdGtXaWRnZXQq
IHdpZGdldCwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGxvY2F0aW9uLAogICAgIGd0a19tYWlu
X2RvX2V2ZW50KGV2ZW50LmdldCgpKTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6
cGxhdGZvcm1TaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYgdmlld1Bvc2l0aW9uLCBJbnNwZWN0b3I6OlByb3RvY29sOjpB
dXRvbWF0aW9uOjpNb3VzZUludGVyYWN0aW9uIGludGVyYWN0aW9uLCBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1dHRvbiBidXR0b24sIFdlYkV2ZW50OjpNb2RpZmllcnMg
a2V5TW9kaWZpZXJzKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0
ZU1vdXNlSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBNb3VzZUludGVyYWN0aW9uIGlu
dGVyYWN0aW9uLCBXZWJNb3VzZUV2ZW50OjpCdXR0b24gYnV0dG9uLCBjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYgbG9jYXRpb25JblZpZXcsIFdlYkV2ZW50OjpNb2RpZmllcnMga2V5TW9kaWZpZXJz
KQogewogICAgIHVuc2lnbmVkIGdka0J1dHRvbiA9IG1vdXNlQnV0dG9uVG9HZGtCdXR0b24oYnV0
dG9uKTsKICAgICB1bnNpZ25lZCBzdGF0ZSA9IG1vZGlmaWVyc1RvRXZlbnRTdGF0ZShrZXlNb2Rp
ZmllcnMpOwogCiAgICAgc3dpdGNoIChpbnRlcmFjdGlvbikgewotICAgIGNhc2UgSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VJbnRlcmFjdGlvbjo6TW92ZToKLSAgICAgICAg
ZG9Nb3Rpb25FdmVudChwYWdlLnZpZXdXaWRnZXQoKSwgdmlld1Bvc2l0aW9uLCBzdGF0ZSk7Cisg
ICAgY2FzZSBNb3VzZUludGVyYWN0aW9uOjpNb3ZlOgorICAgICAgICBkb01vdGlvbkV2ZW50KHBh
Z2Uudmlld1dpZGdldCgpLCBsb2NhdGlvbkluVmlldywgc3RhdGUpOwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlSW50ZXJhY3Rp
b246OkRvd246Ci0gICAgICAgIGRvTW91c2VFdmVudChHREtfQlVUVE9OX1BSRVNTLCBwYWdlLnZp
ZXdXaWRnZXQoKSwgdmlld1Bvc2l0aW9uLCBnZGtCdXR0b24sIHN0YXRlKTsKKyAgICBjYXNlIE1v
dXNlSW50ZXJhY3Rpb246OkRvd246CisgICAgICAgIGRvTW91c2VFdmVudChHREtfQlVUVE9OX1BS
RVNTLCBwYWdlLnZpZXdXaWRnZXQoKSwgbG9jYXRpb25JblZpZXcsIGdka0J1dHRvbiwgc3RhdGUp
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRp
b246Ok1vdXNlSW50ZXJhY3Rpb246OlVwOgotICAgICAgICBkb01vdXNlRXZlbnQoR0RLX0JVVFRP
Tl9SRUxFQVNFLCBwYWdlLnZpZXdXaWRnZXQoKSwgdmlld1Bvc2l0aW9uLCBnZGtCdXR0b24sIHN0
YXRlKTsKKyAgICBjYXNlIE1vdXNlSW50ZXJhY3Rpb246OlVwOgorICAgICAgICBkb01vdXNlRXZl
bnQoR0RLX0JVVFRPTl9SRUxFQVNFLCBwYWdlLnZpZXdXaWRnZXQoKSwgbG9jYXRpb25JblZpZXcs
IGdka0J1dHRvbiwgc3RhdGUpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlSW50ZXJhY3Rpb246OlNpbmdsZUNsaWNrOgotICAg
ICAgICBkb01vdXNlRXZlbnQoR0RLX0JVVFRPTl9QUkVTUywgcGFnZS52aWV3V2lkZ2V0KCksIHZp
ZXdQb3NpdGlvbiwgZ2RrQnV0dG9uLCBzdGF0ZSk7Ci0gICAgICAgIGRvTW91c2VFdmVudChHREtf
QlVUVE9OX1JFTEVBU0UsIHBhZ2Uudmlld1dpZGdldCgpLCB2aWV3UG9zaXRpb24sIGdka0J1dHRv
biwgc3RhdGUpOworICAgIGNhc2UgTW91c2VJbnRlcmFjdGlvbjo6U2luZ2xlQ2xpY2s6CisgICAg
ICAgIGRvTW91c2VFdmVudChHREtfQlVUVE9OX1BSRVNTLCBwYWdlLnZpZXdXaWRnZXQoKSwgbG9j
YXRpb25JblZpZXcsIGdka0J1dHRvbiwgc3RhdGUpOworICAgICAgICBkb01vdXNlRXZlbnQoR0RL
X0JVVFRPTl9SRUxFQVNFLCBwYWdlLnZpZXdXaWRnZXQoKSwgbG9jYXRpb25JblZpZXcsIGdka0J1
dHRvbiwgc3RhdGUpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkF1dG9tYXRpb246Ok1vdXNlSW50ZXJhY3Rpb246OkRvdWJsZUNsaWNrOgotICAgICAgICBk
b01vdXNlRXZlbnQoR0RLX0JVVFRPTl9QUkVTUywgcGFnZS52aWV3V2lkZ2V0KCksIHZpZXdQb3Np
dGlvbiwgZ2RrQnV0dG9uLCBzdGF0ZSk7Ci0gICAgICAgIGRvTW91c2VFdmVudChHREtfQlVUVE9O
X1JFTEVBU0UsIHBhZ2Uudmlld1dpZGdldCgpLCB2aWV3UG9zaXRpb24sIGdka0J1dHRvbiwgc3Rh
dGUpOwotICAgICAgICBkb01vdXNlRXZlbnQoR0RLX0JVVFRPTl9QUkVTUywgcGFnZS52aWV3V2lk
Z2V0KCksIHZpZXdQb3NpdGlvbiwgZ2RrQnV0dG9uLCBzdGF0ZSk7Ci0gICAgICAgIGRvTW91c2VF
dmVudChHREtfQlVUVE9OX1JFTEVBU0UsIHBhZ2Uudmlld1dpZGdldCgpLCB2aWV3UG9zaXRpb24s
IGdka0J1dHRvbiwgc3RhdGUpOworICAgIGNhc2UgTW91c2VJbnRlcmFjdGlvbjo6RG91YmxlQ2xp
Y2s6CisgICAgICAgIGRvTW91c2VFdmVudChHREtfQlVUVE9OX1BSRVNTLCBwYWdlLnZpZXdXaWRn
ZXQoKSwgbG9jYXRpb25JblZpZXcsIGdka0J1dHRvbiwgc3RhdGUpOworICAgICAgICBkb01vdXNl
RXZlbnQoR0RLX0JVVFRPTl9SRUxFQVNFLCBwYWdlLnZpZXdXaWRnZXQoKSwgbG9jYXRpb25JblZp
ZXcsIGdka0J1dHRvbiwgc3RhdGUpOworICAgICAgICBkb01vdXNlRXZlbnQoR0RLX0JVVFRPTl9Q
UkVTUywgcGFnZS52aWV3V2lkZ2V0KCksIGxvY2F0aW9uSW5WaWV3LCBnZGtCdXR0b24sIHN0YXRl
KTsKKyAgICAgICAgZG9Nb3VzZUV2ZW50KEdES19CVVRUT05fUkVMRUFTRSwgcGFnZS52aWV3V2lk
Z2V0KCksIGxvY2F0aW9uSW5WaWV3LCBnZGtCdXR0b24sIHN0YXRlKTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQogfQpAQCAtMjgwLDIwICsyODAsMjcgQEAgc3RhdGljIGludCBrZXlDb2RlRm9yVmly
dHVhbEtleShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5IGtleSwK
ICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1T
aW11bGF0ZUtleVN0cm9rZShXZWJQYWdlUHJveHkmIHBhZ2UsIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkF1dG9tYXRpb246OktleWJvYXJkSW50ZXJhY3Rpb25UeXBlIGludGVyYWN0aW9uLCBJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5IGtleSkKK3ZvaWQgV2ViQXV0b21h
dGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVLZXlib2FyZEludGVyYWN0aW9uKFdlYlBhZ2VQ
cm94eSYgcGFnZSwgS2V5Ym9hcmRJbnRlcmFjdGlvbiBpbnRlcmFjdGlvbiwgc3RkOjpvcHRpb25h
bDxWaXJ0dWFsS2V5PiB2aXJ0dWFsS2V5LCBzdGQ6Om9wdGlvbmFsPENoYXJLZXk+IGNoYXJLZXkp
CiB7CisgICAgQVNTRVJUKHZpcnR1YWxLZXkuaGFzX3ZhbHVlKCkgfHwgY2hhcktleS5oYXNfdmFs
dWUoKSk7CisKICAgICBHZGtNb2RpZmllclR5cGUgdXBkYXRlU3RhdGU7Ci0gICAgYXV0byBrZXlD
b2RlID0ga2V5Q29kZUZvclZpcnR1YWxLZXkoa2V5LCB1cGRhdGVTdGF0ZSk7CisgICAgYXV0byBr
ZXlDb2RlOworICAgIGlmICh2aXJ0dWFsS2V5Lmhhc192YWx1ZSgpKQorICAgICAgICBrZXlDb2Rl
ID0ga2V5Q29kZUZvclZpcnR1YWxLZXkodmlydHVhbEtleS52YWx1ZSgpLCB1cGRhdGVTdGF0ZSk7
CisgICAgZWxzZQorICAgICAgICBrZXlDb2RlID0gZ2RrX3VuaWNvZGVfdG9fa2V5dmFsKGdfdXRm
OF9nZXRfY2hhcigmY2hhcktleS52YWx1ZSgpKSk7CisKICAgICBzd2l0Y2ggKGludGVyYWN0aW9u
KSB7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpLZXlib2FyZElu
dGVyYWN0aW9uVHlwZTo6S2V5UHJlc3M6CisgICAgY2FzZSBLZXlJbnRlcmFjdGlvbjo6S2V5UHJl
c3M6CiAgICAgICAgIG1fY3VycmVudE1vZGlmaWVycyB8PSB1cGRhdGVTdGF0ZTsKICAgICAgICAg
ZG9LZXlTdHJva2VFdmVudChHREtfS0VZX1BSRVNTLCBwYWdlLnZpZXdXaWRnZXQoKSwga2V5Q29k
ZSwgbV9jdXJyZW50TW9kaWZpZXJzKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpLZXlib2FyZEludGVyYWN0aW9uVHlwZTo6S2V5UmVs
ZWFzZToKKyAgICBjYXNlIEtleUludGVyYWN0aW9uOjpLZXlSZWxlYXNlOgogICAgICAgICBtX2N1
cnJlbnRNb2RpZmllcnMgJj0gfnVwZGF0ZVN0YXRlOwogICAgICAgICBkb0tleVN0cm9rZUV2ZW50
KEdES19LRVlfUkVMRUFTRSwgcGFnZS52aWV3V2lkZ2V0KCksIGtleUNvZGUsIG1fY3VycmVudE1v
ZGlmaWVycyk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbjo6S2V5Ym9hcmRJbnRlcmFjdGlvblR5cGU6Okluc2VydEJ5S2V5OgorICAgIGNh
c2UgS2V5SW50ZXJhY3Rpb246Okluc2VydEJ5S2V5OgogICAgICAgICBkb0tleVN0cm9rZUV2ZW50
KEdES19LRVlfUFJFU1MsIHBhZ2Uudmlld1dpZGdldCgpLCBrZXlDb2RlLCBtX2N1cnJlbnRNb2Rp
ZmllcnMsIHRydWUpOwogICAgICAgICBicmVhazsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2lvcy9XZWJBdXRvbWF0aW9uU2Vzc2lvbklPUy5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vaW9zL1dlYkF1dG9tYXRpb25T
ZXNzaW9uSU9TLm1tCmluZGV4IDVmNzRhZGVkZjc1ZmU1NjkyYzI4ZDg0NDg1OTJmMjIzNTRiNjhk
NmMuLjBkZTM5YjY5OTNiMjkyM2Y4OTFlOTg0NjdlNWRmZTVhZmIzYWY5YTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vaW9zL1dlYkF1dG9tYXRpb25TZXNz
aW9uSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vaW9zL1dl
YkF1dG9tYXRpb25TZXNzaW9uSU9TLm1tCkBAIC02NSwyNiArNjUsMjggQEAgdm9pZCBXZWJBdXRv
bWF0aW9uU2Vzc2lvbjo6c2VuZFN5bnRoZXNpemVkRXZlbnRzVG9QYWdlKFdlYlBhZ2VQcm94eSYg
cGFnZSwgTlNBcnIKIAogI3ByYWdtYSBtYXJrIENvbW1hbmRzIGZvciBQbGF0Zm9ybTogJ2lPUycK
IAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZUtleVN0cm9rZShX
ZWJQYWdlUHJveHkmIHBhZ2UsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OktleWJv
YXJkSW50ZXJhY3Rpb25UeXBlIGludGVyYWN0aW9uLCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRv
bWF0aW9uOjpWaXJ0dWFsS2V5IGtleSkKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRm
b3JtU2ltdWxhdGVLZXlib2FyZEludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgS2V5Ym9h
cmRJbnRlcmFjdGlvbiBpbnRlcmFjdGlvbiwgc3RkOjpvcHRpb25hbDxWaXJ0dWFsS2V5PiB2aXJ0
dWFsS2V5LCBzdGQ6Om9wdGlvbmFsPENoYXJLZXk+IGNoYXJLZXkpCiB7CisgICAgQVNTRVJUKHZp
cnR1YWxLZXkuaGFzX3ZhbHVlKCkgfHwgY2hhcktleS5oYXNfdmFsdWUoKSk7CisKICAgICAvLyBU
aGUgbW9kaWZpZXJzIGNoYW5nZWQgYnkgdGhlIHZpcnR1YWwga2V5IHdoZW4gaXQgaXMgcHJlc3Nl
ZCBvciByZWxlYXNlZC4KICAgICBXZWJFdmVudEZsYWdzIGNoYW5nZWRNb2RpZmllcnMgPSAwOwog
CiAgICAgLy8gRmlndXJlIG91dCB0aGUgZWZmZWN0cyBvZiBzdGlja3kgbW9kaWZpZXJzLgogICAg
IHN3aXRjaCAoa2V5KSB7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
OjpWaXJ0dWFsS2V5OjpTaGlmdDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OlNoaWZ0OgogICAgICAg
ICBjaGFuZ2VkTW9kaWZpZXJzIHw9IFdlYkV2ZW50RmxhZ01hc2tTaGlmdDsKICAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5
OjpDb250cm9sOgorICAgIGNhc2UgVmlydHVhbEtleTo6Q29udHJvbDoKICAgICAgICAgY2hhbmdl
ZE1vZGlmaWVycyB8PSBXZWJFdmVudEZsYWdNYXNrQ29udHJvbDsKICAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpBbHRl
cm5hdGU6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpBbHRlcm5hdGU6CiAgICAgICAgIGNoYW5nZWRN
b2RpZmllcnMgfD0gV2ViRXZlbnRGbGFnTWFza0FsdGVybmF0ZTsKICAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpNZXRh
OgorICAgIGNhc2UgVmlydHVhbEtleTo6TWV0YToKICAgICAgICAgLy8gVGhlICdtZXRhJyBrZXkg
ZG9lcyBub3QgZXhpc3Qgb24gQXBwbGUga2V5Ym9hcmRzIGFuZCBpcyB1c3VhbGx5CiAgICAgICAg
IC8vIG1hcHBlZCB0byB0aGUgQ29tbWFuZCBrZXkgd2hlbiB1c2luZyB0aGlyZC1wYXJ0eSBrZXli
b2FyZHMuCi0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFs
S2V5OjpDb21tYW5kOgorICAgIGNhc2UgVmlydHVhbEtleTo6Q29tbWFuZDoKICAgICAgICAgY2hh
bmdlZE1vZGlmaWVycyB8PSBXZWJFdmVudEZsYWdNYXNrQ29tbWFuZDsKICAgICAgICAgYnJlYWs7
CiAgICAgZGVmYXVsdDoKQEAgLTk0LDggKzk2LDE4IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Np
b246OnBsYXRmb3JtU2ltdWxhdGVLZXlTdHJva2UoV2ViUGFnZVByb3h5JiBwYWdlLCBJbnNwZWN0
CiAgICAgLy8gVUlLaXQgZG9lcyBub3Qgc2VuZCBrZXkgY29kZXMgZm9yIHZpcnR1YWwga2V5cyBl
dmVuIGZvciBhIGhhcmR3YXJlIGtleWJvYXJkLgogICAgIC8vIEluc3RlYWQsIGl0IHNlbmRzIHNp
bmdsZSB1bmljaGFycyBhbmQgV2ViQ29yZSBtYXBzIHRoZXNlIHRvICJ3aW5kb3dzIiBrZXkgY29k
ZXMuCiAgICAgLy8gU3ludGhlc2l6ZSBhIHNpbmdsZSB1bmljaGFyIHN1Y2ggdGhhdCB0aGUgY29y
cmVjdCBrZXkgY29kZSBpcyBpbmZlcnJlZC4KLSAgICBzdGQ6Om9wdGlvbmFsPHVuaWNoYXI+IGNo
YXJDb2RlID0gY2hhckNvZGVGb3JWaXJ0dWFsS2V5KGtleSk7Ci0gICAgc3RkOjpvcHRpb25hbDx1
bmljaGFyPiBjaGFyQ29kZUlnbm9yaW5nTW9kaWZpZXJzID0gY2hhckNvZGVJZ25vcmluZ01vZGlm
aWVyc0ZvclZpcnR1YWxLZXkoa2V5KTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuaWNoYXI+IGNoYXJD
b2RlOworICAgIHN0ZDo6b3B0aW9uYWw8dW5pY2hhcj4gY2hhckNvZGVJZ25vcmluZ01vZGlmaWVy
czsKKworICAgIGlmICh2aXJ0dWFsS2V5Lmhhc192YWx1ZSgpKSB7CisgICAgICAgIGNoYXJDb2Rl
ID0gY2hhckNvZGVGb3JWaXJ0dWFsS2V5KHZpcnR1YWxLZXkudmFsdWUoKSk7CisgICAgICAgIGNo
YXJDb2RlSWdub3JpbmdNb2RpZmllcnMgPSBjaGFyQ29kZUlnbm9yaW5nTW9kaWZpZXJzRm9yVmly
dHVhbEtleSh2aXJ0dWFsS2V5LnZhbHVlKCkpOworICAgIH0KKworICAgIGlmIChjaGFyS2V5Lmhh
c192YWx1ZSgpKSB7CisgICAgICAgIGNoYXJDb2RlID0gKHVuaWNoYXIpY2hhcktleS52YWx1ZSgp
OworICAgICAgICBjaGFyQ29kZUlnbm9yaW5nTW9kaWZpZXJzID0gKHVuaWNoYXIpY2hhcktleS52
YWx1ZSgpOworICAgIH0KIAogICAgIC8vIEZJWE1FOiBjb25zaWRlciB1c2luZyBVSUtpdCBTUEkg
dG8gbm9ybWFsaXplICdjaGFyYWN0ZXJzJywgaS5lLiwgY2hhbmdpbmcgKiB0byBTaGlmdC04LAog
ICAgIC8vIGFuZCBwYXNzaW5nIHRoYXQgaW4gdG8gY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJz
LiBUaGlzIGlzIHByb2JhYmx5IG5vdCB3b3J0aCB0aGUgdHJvdWJsZQpAQCAtMTE1LDE5ICsxMjcs
MTkgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZUtleVN0cm9r
ZShXZWJQYWdlUHJveHkmIHBhZ2UsIEluc3BlY3QKICAgICBhdXRvIGV2ZW50c1RvQmVTZW50ID0g
YWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CiAKICAgICBzd2l0Y2ggKGlu
dGVyYWN0aW9uKSB7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpL
ZXlib2FyZEludGVyYWN0aW9uVHlwZTo6S2V5UHJlc3M6IHsKKyAgICBjYXNlIEtleWJvYXJkSW50
ZXJhY3Rpb246OktleVByZXNzOiB7CiAgICAgICAgIG1fY3VycmVudE1vZGlmaWVycyB8PSBjaGFu
Z2VkTW9kaWZpZXJzOwogCiAgICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmplY3Q6W1tbOjpX
ZWJFdmVudCBhbGxvY10gaW5pdFdpdGhLZXlFdmVudFR5cGU6V2ViRXZlbnRLZXlEb3duIHRpbWVT
dGFtcDpDRkFic29sdXRlVGltZUdldEN1cnJlbnQoKSBjaGFyYWN0ZXJzOmNoYXJhY3RlcnMgY2hh
cmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOnVubW9kaWZpZWRDaGFyYWN0ZXJzIG1vZGlmaWVyczpt
X2N1cnJlbnRNb2RpZmllcnMgaXNSZXBlYXRpbmc6Tk8gd2l0aEZsYWdzOmlucHV0RmxhZ3Mgd2l0
aElucHV0TWFuYWdlckhpbnQ6bmlsIGtleUNvZGU6a2V5Q29kZSBpc1RhYktleTppc1RhYktleV0g
YXV0b3JlbGVhc2VdXTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXV0b21hdGlvbjo6S2V5Ym9hcmRJbnRlcmFjdGlvblR5cGU6OktleVJlbGVh
c2U6IHsKKyAgICBjYXNlIEtleWJvYXJkSW50ZXJhY3Rpb246OktleVJlbGVhc2U6IHsKICAgICAg
ICAgbV9jdXJyZW50TW9kaWZpZXJzICY9IH5jaGFuZ2VkTW9kaWZpZXJzOwogCiAgICAgICAgIFtl
dmVudHNUb0JlU2VudCBhZGRPYmplY3Q6W1tbOjpXZWJFdmVudCBhbGxvY10gaW5pdFdpdGhLZXlF
dmVudFR5cGU6V2ViRXZlbnRLZXlVcCB0aW1lU3RhbXA6Q0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50
KCkgY2hhcmFjdGVyczpjaGFyYWN0ZXJzIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczp1bm1v
ZGlmaWVkQ2hhcmFjdGVycyBtb2RpZmllcnM6bV9jdXJyZW50TW9kaWZpZXJzIGlzUmVwZWF0aW5n
Ok5PIHdpdGhGbGFnczppbnB1dEZsYWdzIHdpdGhJbnB1dE1hbmFnZXJIaW50Om5pbCBrZXlDb2Rl
OmtleUNvZGUgaXNUYWJLZXk6aXNUYWJLZXldIGF1dG9yZWxlYXNlXV07CiAgICAgICAgIGJyZWFr
OwogICAgIH0KLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OktleWJv
YXJkSW50ZXJhY3Rpb25UeXBlOjpJbnNlcnRCeUtleTogeworICAgIGNhc2UgS2V5Ym9hcmRJbnRl
cmFjdGlvbjo6SW5zZXJ0QnlLZXk6IHsKICAgICAgICAgLy8gTW9kaWZpZXJzIG9ubHkgY2hhbmdl
IHdpdGggS2V5UHJlc3Mgb3IgS2V5UmVsZWFzZSwgdGhpcyBjb2RlIHBhdGggaXMgZm9yIHNpbmds
ZSBjaGFyYWN0ZXJzLgogICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltbWzo6V2Vi
RXZlbnQgYWxsb2NdIGluaXRXaXRoS2V5RXZlbnRUeXBlOldlYkV2ZW50S2V5RG93biB0aW1lU3Rh
bXA6Q0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCkgY2hhcmFjdGVyczpjaGFyYWN0ZXJzIGNoYXJh
Y3RlcnNJZ25vcmluZ01vZGlmaWVyczp1bm1vZGlmaWVkQ2hhcmFjdGVycyBtb2RpZmllcnM6bV9j
dXJyZW50TW9kaWZpZXJzIGlzUmVwZWF0aW5nOk5PIHdpdGhGbGFnczppbnB1dEZsYWdzIHdpdGhJ
bnB1dE1hbmFnZXJIaW50Om5pbCBrZXlDb2RlOmtleUNvZGUgaXNUYWJLZXk6aXNUYWJLZXldIGF1
dG9yZWxlYXNlXV07CiAgICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmplY3Q6W1tbOjpXZWJF
dmVudCBhbGxvY10gaW5pdFdpdGhLZXlFdmVudFR5cGU6V2ViRXZlbnRLZXlVcCB0aW1lU3RhbXA6
Q0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCkgY2hhcmFjdGVyczpjaGFyYWN0ZXJzIGNoYXJhY3Rl
cnNJZ25vcmluZ01vZGlmaWVyczp1bm1vZGlmaWVkQ2hhcmFjdGVycyBtb2RpZmllcnM6bV9jdXJy
ZW50TW9kaWZpZXJzIGlzUmVwZWF0aW5nOk5PIHdpdGhGbGFnczppbnB1dEZsYWdzIHdpdGhJbnB1
dE1hbmFnZXJIaW50Om5pbCBrZXlDb2RlOmtleUNvZGUgaXNUYWJLZXk6aXNUYWJLZXldIGF1dG9y
ZWxlYXNlXV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9u
L21hYy9XZWJBdXRvbWF0aW9uU2Vzc2lvbk1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0F1dG9tYXRpb24vbWFjL1dlYkF1dG9tYXRpb25TZXNzaW9uTWFjLm1tCmluZGV4IDNiNWU1NThj
NjRjM2RhNzY3YTk4OWVkNjQyMGE3NzVmMmMxYTYxMzIuLmY0NjBhMzg2NTNkYzY0ZWU2NjE3OTA3
MzBjMThjYmZiNGUwZjJiNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1
dG9tYXRpb24vbWFjL1dlYkF1dG9tYXRpb25TZXNzaW9uTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vbWFjL1dlYkF1dG9tYXRpb25TZXNzaW9uTWFjLm1tCkBA
IC0xMTgsMTEgKzExOCwxMSBAQCBib29sIFdlYkF1dG9tYXRpb25TZXNzaW9uOjp3YXNFdmVudFN5
bnRoZXNpemVkRm9yQXV0b21hdGlvbihOU0V2ZW50ICpldmVudCkKIAogI3ByYWdtYSBtYXJrIFBs
YXRmb3JtLWRlcGVuZGVudCBJbXBsZW1lbnRhdGlvbnMKIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vz
c2lvbjo6cGxhdGZvcm1TaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdl
LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgdmlld1Bvc2l0aW9uLCBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpNb3VzZUludGVyYWN0aW9uIGludGVyYWN0aW9uLCBJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1dHRvbiBidXR0b24sIFdlYkV2ZW50OjpNb2Rp
ZmllcnMga2V5TW9kaWZpZXJzKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1T
aW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBNb3VzZUludGVyYWN0
aW9uIGludGVyYWN0aW9uLCBXZWJNb3VzZUV2ZW50OjpCdXR0b24gYnV0dG9uLCBjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYgbG9jYXRpb25JblZpZXcsIFdlYkV2ZW50OjpNb2RpZmllcnMga2V5TW9k
aWZpZXJzKQogewogICAgIEludFJlY3Qgd2luZG93UmVjdDsKLSAgICBwYWdlLnJvb3RWaWV3VG9X
aW5kb3coSW50UmVjdCh2aWV3UG9zaXRpb24sIEludFNpemUoKSksIHdpbmRvd1JlY3QpOwotICAg
IEludFBvaW50IHdpbmRvd1Bvc2l0aW9uID0gd2luZG93UmVjdC5sb2NhdGlvbigpOworICAgIHBh
Z2Uucm9vdFZpZXdUb1dpbmRvdyhJbnRSZWN0KGxvY2F0aW9uSW5WaWV3LCBJbnRTaXplKCkpLCB3
aW5kb3dSZWN0KTsKKyAgICBJbnRQb2ludCBsb2NhdGlvbkluV2luZG93ID0gd2luZG93UmVjdC5s
b2NhdGlvbigpOwogCiAgICAgTlNFdmVudE1vZGlmaWVyRmxhZ3MgbW9kaWZpZXJzID0gMDsKICAg
ICBpZiAoa2V5TW9kaWZpZXJzICYgV2ViRXZlbnQ6Ok1ldGFLZXkpCkBAIC0xNDQsMjAgKzE0NCwy
MCBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlTW91c2VJbnRl
cmFjdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsCiAgICAgTlNFdmVudFR5cGUgZHJhZ0V2ZW50VHlw
ZSA9IChOU0V2ZW50VHlwZSkwOwogICAgIE5TRXZlbnRUeXBlIHVwRXZlbnRUeXBlID0gKE5TRXZl
bnRUeXBlKTA7CiAgICAgc3dpdGNoIChidXR0b24pIHsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9uOjpOb25lOgorICAgIGNhc2UgV2ViTW91c2VF
dmVudDo6Tm9CdXR0b246CiAgICAgICAgIGRvd25FdmVudFR5cGUgPSB1cEV2ZW50VHlwZSA9IGRy
YWdFdmVudFR5cGUgPSBOU0V2ZW50VHlwZU1vdXNlTW92ZWQ7CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VCdXR0b246OkxlZnQ6
CisgICAgY2FzZSBXZWJNb3VzZUV2ZW50OjpMZWZ0QnV0dG9uOgogICAgICAgICBkb3duRXZlbnRU
eXBlID0gTlNFdmVudFR5cGVMZWZ0TW91c2VEb3duOwogICAgICAgICBkcmFnRXZlbnRUeXBlID0g
TlNFdmVudFR5cGVMZWZ0TW91c2VEcmFnZ2VkOwogICAgICAgICB1cEV2ZW50VHlwZSA9IE5TRXZl
bnRUeXBlTGVmdE1vdXNlVXA7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VCdXR0b246Ok1pZGRsZToKKyAgICBjYXNlIFdlYk1v
dXNlRXZlbnQ6Ok1pZGRsZUJ1dHRvbjoKICAgICAgICAgZG93bkV2ZW50VHlwZSA9IE5TRXZlbnRU
eXBlT3RoZXJNb3VzZURvd247CiAgICAgICAgIGRyYWdFdmVudFR5cGUgPSBOU0V2ZW50VHlwZUxl
ZnRNb3VzZURyYWdnZWQ7CiAgICAgICAgIHVwRXZlbnRUeXBlID0gTlNFdmVudFR5cGVPdGhlck1v
dXNlVXA7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbjo6TW91c2VCdXR0b246OlJpZ2h0OgorICAgIGNhc2UgV2ViTW91c2VFdmVudDo6Umln
aHRCdXR0b246CiAgICAgICAgIGRvd25FdmVudFR5cGUgPSBOU0V2ZW50VHlwZVJpZ2h0TW91c2VE
b3duOwogICAgICAgICB1cEV2ZW50VHlwZSA9IE5TRXZlbnRUeXBlUmlnaHRNb3VzZVVwOwogICAg
ICAgICBicmVhazsKQEAgLTE2OCw1NiArMTY4LDU2IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Np
b246OnBsYXRmb3JtU2ltdWxhdGVNb3VzZUludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwK
ICAgICBOU0ludGVnZXIgZXZlbnROdW1iZXIgPSBzeW50aGVzaXplZE1vdXNlRXZlbnRNYWdpY0V2
ZW50TnVtYmVyOwogCiAgICAgc3dpdGNoIChpbnRlcmFjdGlvbikgewotICAgIGNhc2UgSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VJbnRlcmFjdGlvbjo6TW92ZToKKyAgICBj
YXNlIE1vdXNlSW50ZXJhY3Rpb246Ok1vdmU6CiAgICAgICAgIEFTU0VSVChkcmFnRXZlbnRUeXBl
KTsKLSAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbTlNFdmVudCBtb3VzZUV2ZW50
V2l0aFR5cGU6ZHJhZ0V2ZW50VHlwZSBsb2NhdGlvbjp3aW5kb3dQb3NpdGlvbiBtb2RpZmllckZs
YWdzOm1vZGlmaWVycyB0aW1lc3RhbXA6dGltZXN0YW1wIHdpbmRvd051bWJlcjp3aW5kb3dOdW1i
ZXIgY29udGV4dDpuaWwgZXZlbnROdW1iZXI6ZXZlbnROdW1iZXIgY2xpY2tDb3VudDowIHByZXNz
dXJlOjAuMGZdXTsKKyAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbTlNFdmVudCBt
b3VzZUV2ZW50V2l0aFR5cGU6ZHJhZ0V2ZW50VHlwZSBsb2NhdGlvbjpsb2NhdGlvbkluV2luZG93
IG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJzIHRpbWVzdGFtcDp0aW1lc3RhbXAgd2luZG93TnVtYmVy
OndpbmRvd051bWJlciBjb250ZXh0Om5pbCBldmVudE51bWJlcjpldmVudE51bWJlciBjbGlja0Nv
dW50OjAgcHJlc3N1cmU6MC4wZl1dOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlSW50ZXJhY3Rpb246OkRvd246CisgICAgY2Fz
ZSBNb3VzZUludGVyYWN0aW9uOjpEb3duOgogICAgICAgICBBU1NFUlQoZG93bkV2ZW50VHlwZSk7
CiAKICAgICAgICAgLy8gSGFyZC1jb2RlIHRoZSBjbGljayBjb3VudCB0byBvbmUsIHNpbmNlIGNs
aWVudHMgZG9uJ3QgZXhwZWN0IHN1Y2Nlc3NpdmUgc2ltdWxhdGVkCiAgICAgICAgIC8vIGRvd24v
dXAgZXZlbnRzIHRvIGJlIHBvdGVudGlhbGx5IGNvdW50ZWQgYXMgYSBkb3VibGUgY2xpY2sgZXZl
bnQuCi0gICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmplY3Q6W05TRXZlbnQgbW91c2VFdmVu
dFdpdGhUeXBlOmRvd25FdmVudFR5cGUgbG9jYXRpb246d2luZG93UG9zaXRpb24gbW9kaWZpZXJG
bGFnczptb2RpZmllcnMgdGltZXN0YW1wOnRpbWVzdGFtcCB3aW5kb3dOdW1iZXI6d2luZG93TnVt
YmVyIGNvbnRleHQ6bmlsIGV2ZW50TnVtYmVyOmV2ZW50TnVtYmVyIGNsaWNrQ291bnQ6MSBwcmVz
c3VyZTpXZWJDb3JlOjpGb3JjZUF0Q2xpY2tdXTsKKyAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFk
ZE9iamVjdDpbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6ZG93bkV2ZW50VHlwZSBsb2NhdGlv
bjpsb2NhdGlvbkluV2luZG93IG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJzIHRpbWVzdGFtcDp0aW1l
c3RhbXAgd2luZG93TnVtYmVyOndpbmRvd051bWJlciBjb250ZXh0Om5pbCBldmVudE51bWJlcjpl
dmVudE51bWJlciBjbGlja0NvdW50OjEgcHJlc3N1cmU6V2ViQ29yZTo6Rm9yY2VBdENsaWNrXV07
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlv
bjo6TW91c2VJbnRlcmFjdGlvbjo6VXA6CisgICAgY2FzZSBNb3VzZUludGVyYWN0aW9uOjpVcDoK
ICAgICAgICAgQVNTRVJUKHVwRXZlbnRUeXBlKTsKIAogICAgICAgICAvLyBIYXJkLWNvZGUgdGhl
IGNsaWNrIGNvdW50IHRvIG9uZSwgc2luY2UgY2xpZW50cyBkb24ndCBleHBlY3Qgc3VjY2Vzc2l2
ZSBzaW11bGF0ZWQKICAgICAgICAgLy8gZG93bi91cCBldmVudHMgdG8gYmUgcG90ZW50aWFsbHkg
Y291bnRlZCBhcyBhIGRvdWJsZSBjbGljayBldmVudC4KLSAgICAgICAgW2V2ZW50c1RvQmVTZW50
IGFkZE9iamVjdDpbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6dXBFdmVudFR5cGUgbG9jYXRp
b246d2luZG93UG9zaXRpb24gbW9kaWZpZXJGbGFnczptb2RpZmllcnMgdGltZXN0YW1wOnRpbWVz
dGFtcCB3aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmlsIGV2ZW50TnVtYmVyOmV2
ZW50TnVtYmVyIGNsaWNrQ291bnQ6MSBwcmVzc3VyZTowLjBmXV07CisgICAgICAgIFtldmVudHNU
b0JlU2VudCBhZGRPYmplY3Q6W05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOnVwRXZlbnRUeXBl
IGxvY2F0aW9uOmxvY2F0aW9uSW5XaW5kb3cgbW9kaWZpZXJGbGFnczptb2RpZmllcnMgdGltZXN0
YW1wOnRpbWVzdGFtcCB3aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmlsIGV2ZW50
TnVtYmVyOmV2ZW50TnVtYmVyIGNsaWNrQ291bnQ6MSBwcmVzc3VyZTowLjBmXV07CiAgICAgICAg
IGJyZWFrOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VJ
bnRlcmFjdGlvbjo6U2luZ2xlQ2xpY2s6CisgICAgY2FzZSBNb3VzZUludGVyYWN0aW9uOjpTaW5n
bGVDbGljazoKICAgICAgICAgQVNTRVJUKHVwRXZlbnRUeXBlKTsKICAgICAgICAgQVNTRVJUKGRv
d25FdmVudFR5cGUpOwogCiAgICAgICAgIC8vIFNlbmQgc2VwYXJhdGUgZG93biBhbmQgdXAgZXZl
bnRzLiBXZWJDb3JlIHdpbGwgc2VlIHRoaXMgYXMgYSBzaW5nbGUtY2xpY2sgZXZlbnQuCi0gICAg
ICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmplY3Q6W05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBl
OmRvd25FdmVudFR5cGUgbG9jYXRpb246d2luZG93UG9zaXRpb24gbW9kaWZpZXJGbGFnczptb2Rp
ZmllcnMgdGltZXN0YW1wOnRpbWVzdGFtcCB3aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNvbnRl
eHQ6bmlsIGV2ZW50TnVtYmVyOmV2ZW50TnVtYmVyIGNsaWNrQ291bnQ6MSBwcmVzc3VyZTpXZWJD
b3JlOjpGb3JjZUF0Q2xpY2tdXTsKLSAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpb
TlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6dXBFdmVudFR5cGUgbG9jYXRpb246d2luZG93UG9z
aXRpb24gbW9kaWZpZXJGbGFnczptb2RpZmllcnMgdGltZXN0YW1wOnRpbWVzdGFtcCB3aW5kb3dO
dW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmlsIGV2ZW50TnVtYmVyOmV2ZW50TnVtYmVyIGNs
aWNrQ291bnQ6MSBwcmVzc3VyZTowLjBmXV07CisgICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRP
YmplY3Q6W05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOmRvd25FdmVudFR5cGUgbG9jYXRpb246
bG9jYXRpb25JbldpbmRvdyBtb2RpZmllckZsYWdzOm1vZGlmaWVycyB0aW1lc3RhbXA6dGltZXN0
YW1wIHdpbmRvd051bWJlcjp3aW5kb3dOdW1iZXIgY29udGV4dDpuaWwgZXZlbnROdW1iZXI6ZXZl
bnROdW1iZXIgY2xpY2tDb3VudDoxIHByZXNzdXJlOldlYkNvcmU6OkZvcmNlQXRDbGlja11dOwor
ICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltOU0V2ZW50IG1vdXNlRXZlbnRXaXRo
VHlwZTp1cEV2ZW50VHlwZSBsb2NhdGlvbjpsb2NhdGlvbkluV2luZG93IG1vZGlmaWVyRmxhZ3M6
bW9kaWZpZXJzIHRpbWVzdGFtcDp0aW1lc3RhbXAgd2luZG93TnVtYmVyOndpbmRvd051bWJlciBj
b250ZXh0Om5pbCBldmVudE51bWJlcjpldmVudE51bWJlciBjbGlja0NvdW50OjEgcHJlc3N1cmU6
MC4wZl1dOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1
dG9tYXRpb246Ok1vdXNlSW50ZXJhY3Rpb246OkRvdWJsZUNsaWNrOgorICAgIGNhc2UgTW91c2VJ
bnRlcmFjdGlvbjo6RG91YmxlQ2xpY2s6CiAgICAgICAgIEFTU0VSVCh1cEV2ZW50VHlwZSk7CiAg
ICAgICAgIEFTU0VSVChkb3duRXZlbnRUeXBlKTsKIAogICAgICAgICAvLyBTZW5kIG11bHRpcGxl
IGRvd24gYW5kIHVwIGV2ZW50cyB3aXRoIHByb3BlciBjbGljayBjb3VudC4KICAgICAgICAgLy8g
V2ViQ29yZSB3aWxsIHNlZSB0aGlzIGFzIGEgc2luZ2xlLWNsaWNrIGV2ZW50IHRoZW4gZG91Ymxl
LWNsaWNrIGV2ZW50LgotICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltOU0V2ZW50
IG1vdXNlRXZlbnRXaXRoVHlwZTpkb3duRXZlbnRUeXBlIGxvY2F0aW9uOndpbmRvd1Bvc2l0aW9u
IG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJzIHRpbWVzdGFtcDp0aW1lc3RhbXAgd2luZG93TnVtYmVy
OndpbmRvd051bWJlciBjb250ZXh0Om5pbCBldmVudE51bWJlcjpldmVudE51bWJlciBjbGlja0Nv
dW50OjEgcHJlc3N1cmU6V2ViQ29yZTo6Rm9yY2VBdENsaWNrXV07Ci0gICAgICAgIFtldmVudHNU
b0JlU2VudCBhZGRPYmplY3Q6W05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOnVwRXZlbnRUeXBl
IGxvY2F0aW9uOndpbmRvd1Bvc2l0aW9uIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJzIHRpbWVzdGFt
cDp0aW1lc3RhbXAgd2luZG93TnVtYmVyOndpbmRvd051bWJlciBjb250ZXh0Om5pbCBldmVudE51
bWJlcjpldmVudE51bWJlciBjbGlja0NvdW50OjEgcHJlc3N1cmU6MC4wZl1dOwotICAgICAgICBb
ZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltOU0V2ZW50IG1vdXNlRXZlbnRXaXRoVHlwZTpkb3du
RXZlbnRUeXBlIGxvY2F0aW9uOndpbmRvd1Bvc2l0aW9uIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJz
IHRpbWVzdGFtcDp0aW1lc3RhbXAgd2luZG93TnVtYmVyOndpbmRvd051bWJlciBjb250ZXh0Om5p
bCBldmVudE51bWJlcjpldmVudE51bWJlciBjbGlja0NvdW50OjIgcHJlc3N1cmU6V2ViQ29yZTo6
Rm9yY2VBdENsaWNrXV07Ci0gICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmplY3Q6W05TRXZl
bnQgbW91c2VFdmVudFdpdGhUeXBlOnVwRXZlbnRUeXBlIGxvY2F0aW9uOndpbmRvd1Bvc2l0aW9u
IG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJzIHRpbWVzdGFtcDp0aW1lc3RhbXAgd2luZG93TnVtYmVy
OndpbmRvd051bWJlciBjb250ZXh0Om5pbCBldmVudE51bWJlcjpldmVudE51bWJlciBjbGlja0Nv
dW50OjIgcHJlc3N1cmU6MC4wZl1dOworICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0
OltOU0V2ZW50IG1vdXNlRXZlbnRXaXRoVHlwZTpkb3duRXZlbnRUeXBlIGxvY2F0aW9uOmxvY2F0
aW9uSW5XaW5kb3cgbW9kaWZpZXJGbGFnczptb2RpZmllcnMgdGltZXN0YW1wOnRpbWVzdGFtcCB3
aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmlsIGV2ZW50TnVtYmVyOmV2ZW50TnVt
YmVyIGNsaWNrQ291bnQ6MSBwcmVzc3VyZTpXZWJDb3JlOjpGb3JjZUF0Q2xpY2tdXTsKKyAgICAg
ICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6
dXBFdmVudFR5cGUgbG9jYXRpb246bG9jYXRpb25JbldpbmRvdyBtb2RpZmllckZsYWdzOm1vZGlm
aWVycyB0aW1lc3RhbXA6dGltZXN0YW1wIHdpbmRvd051bWJlcjp3aW5kb3dOdW1iZXIgY29udGV4
dDpuaWwgZXZlbnROdW1iZXI6ZXZlbnROdW1iZXIgY2xpY2tDb3VudDoxIHByZXNzdXJlOjAuMGZd
XTsKKyAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbTlNFdmVudCBtb3VzZUV2ZW50
V2l0aFR5cGU6ZG93bkV2ZW50VHlwZSBsb2NhdGlvbjpsb2NhdGlvbkluV2luZG93IG1vZGlmaWVy
RmxhZ3M6bW9kaWZpZXJzIHRpbWVzdGFtcDp0aW1lc3RhbXAgd2luZG93TnVtYmVyOndpbmRvd051
bWJlciBjb250ZXh0Om5pbCBldmVudE51bWJlcjpldmVudE51bWJlciBjbGlja0NvdW50OjIgcHJl
c3N1cmU6V2ViQ29yZTo6Rm9yY2VBdENsaWNrXV07CisgICAgICAgIFtldmVudHNUb0JlU2VudCBh
ZGRPYmplY3Q6W05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOnVwRXZlbnRUeXBlIGxvY2F0aW9u
OmxvY2F0aW9uSW5XaW5kb3cgbW9kaWZpZXJGbGFnczptb2RpZmllcnMgdGltZXN0YW1wOnRpbWVz
dGFtcCB3aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmlsIGV2ZW50TnVtYmVyOmV2
ZW50TnVtYmVyIGNsaWNrQ291bnQ6MiBwcmVzc3VyZTowLjBmXV07CiAgICAgfQogCiAgICAgc2Vu
ZFN5bnRoZXNpemVkRXZlbnRzVG9QYWdlKHBhZ2UsIGV2ZW50c1RvQmVTZW50LmdldCgpKTsKIH0K
IAotc3RhdGljIGJvb2wga2V5SGFzU3RpY2t5TW9kaWZpZXIoSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbjo6VmlydHVhbEtleSBrZXkpCitzdGF0aWMgYm9vbCB2aXJ0dWFsS2V5SGFzU3Rp
Y2t5TW9kaWZpZXIoVmlydHVhbEtleSBrZXkpCiB7CiAgICAgLy8gUmV0dXJucyB3aGV0aGVyIHRo
ZSBrZXkncyBtb2RpZmllciBmbGFncyBzaG91bGQgYWZmZWN0IG90aGVyIGV2ZW50cyB3aGlsZSBw
cmVzc2VkIGRvd24uCiAgICAgc3dpdGNoIChrZXkpIHsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OlNoaWZ0OgotICAgIGNhc2UgSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6Q29udHJvbDoKLSAgICBjYXNlIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkFsdGVybmF0ZToKLSAg
ICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok1ldGE6
Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpD
b21tYW5kOgorICAgIGNhc2UgVmlydHVhbEtleTo6U2hpZnQ6CisgICAgY2FzZSBWaXJ0dWFsS2V5
OjpDb250cm9sOgorICAgIGNhc2UgVmlydHVhbEtleTo6QWx0ZXJuYXRlOgorICAgIGNhc2UgVmly
dHVhbEtleTo6TWV0YToKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkNvbW1hbmQ6CiAgICAgICAgIHJl
dHVybiB0cnVlOwogCiAgICAgZGVmYXVsdDoKQEAgLTIyNSwyMDEgKzIyNSwyMDEgQEAgc3RhdGlj
IGJvb2wga2V5SGFzU3RpY2t5TW9kaWZpZXIoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlv
bjo6VmlydHVhbEtleSBrZXkKICAgICB9CiB9CiAKLXN0YXRpYyBpbnQga2V5Q29kZUZvclZpcnR1
YWxLZXkoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleSBrZXkpCitz
dGF0aWMgaW50IGtleUNvZGVGb3JWaXJ0dWFsS2V5KFZpcnR1YWxLZXkga2V5KQogewogICAgIC8v
IFRoZSBsaWtlbHkga2V5Q29kZSBmb3IgdGhlIHZpcnR1YWwga2V5IGFzIGRlZmluZWQgaW4gPEhJ
VG9vbGJveC9FdmVudHMuaD4uCiAgICAgc3dpdGNoIChrZXkpIHsKLSAgICBjYXNlIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OlNoaWZ0OgorICAgIGNhc2UgVmly
dHVhbEtleTo6U2hpZnQ6CiAgICAgICAgIHJldHVybiBrVktfU2hpZnQ7Ci0gICAgY2FzZSBJbnNw
ZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpDb250cm9sOgorICAgIGNh
c2UgVmlydHVhbEtleTo6Q29udHJvbDoKICAgICAgICAgcmV0dXJuIGtWS19Db250cm9sOwotICAg
IGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6QWx0ZXJu
YXRlOgorICAgIGNhc2UgVmlydHVhbEtleTo6QWx0ZXJuYXRlOgogICAgICAgICByZXR1cm4ga1ZL
X09wdGlvbjsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1
YWxLZXk6Ok1ldGE6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpNZXRhOgogICAgICAgICAvLyBUaGUg
J21ldGEnIGtleSBkb2VzIG5vdCBleGlzdCBvbiBBcHBsZSBrZXlib2FyZHMgYW5kIGlzIHVzdWFs
bHkKICAgICAgICAgLy8gbWFwcGVkIHRvIHRoZSBDb21tYW5kIGtleSB3aGVuIHVzaW5nIHRoaXJk
LXBhcnR5IGtleWJvYXJkcy4KLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRp
b246OlZpcnR1YWxLZXk6OkNvbW1hbmQ6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpDb21tYW5kOgog
ICAgICAgICByZXR1cm4ga1ZLX0NvbW1hbmQ7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29s
OjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpIZWxwOgorICAgIGNhc2UgVmlydHVhbEtleTo6SGVs
cDoKICAgICAgICAgcmV0dXJuIGtWS19IZWxwOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6QmFja3NwYWNlOgorICAgIGNhc2UgVmlydHVhbEtl
eTo6QmFja3NwYWNlOgogICAgICAgICByZXR1cm4ga1ZLX0RlbGV0ZTsKLSAgICBjYXNlIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OlRhYjoKKyAgICBjYXNlIFZp
cnR1YWxLZXk6OlRhYjoKICAgICAgICAgcmV0dXJuIGtWS19UYWI7Ci0gICAgY2FzZSBJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpDbGVhcjoKKyAgICBjYXNlIFZp
cnR1YWxLZXk6OkNsZWFyOgogICAgICAgICByZXR1cm4ga1ZLX0FOU0lfS2V5cGFkQ2xlYXI7Ci0g
ICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpFbnRl
cjoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkVudGVyOgogICAgICAgICByZXR1cm4ga1ZLX0FOU0lf
S2V5cGFkRW50ZXI7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpW
aXJ0dWFsS2V5OjpQYXVzZToKKyAgICBjYXNlIFZpcnR1YWxLZXk6OlBhdXNlOgogICAgICAgICAv
LyBUaGUgJ3BhdXNlJyBrZXkgZG9lcyBub3QgZXhpc3Qgb24gQXBwbGUga2V5Ym9hcmRzIGFuZCBo
YXMgbm8ga2V5Q29kZS4KICAgICAgICAgLy8gVGhlIHNlbWFudGljcyBhcmUgdW5jbGVhciBzbyBq
dXN0IGFib3J0IGFuZCBkbyBub3RoaW5nLgogICAgICAgICByZXR1cm4gMDsKLSAgICBjYXNlIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkNhbmNlbDoKKyAgICBj
YXNlIFZpcnR1YWxLZXk6OkNhbmNlbDoKICAgICAgICAgLy8gVGhlICdjYW5jZWwnIGtleSBkb2Vz
IG5vdCBleGlzdCBvbiBBcHBsZSBrZXlib2FyZHMgYW5kIGhhcyBubyBrZXlDb2RlLgogICAgICAg
ICAvLyBBY2NvcmRpbmcgdG8gdGhlIGludGVybmV0IGl0cyBmdW5jdGlvbmFsaXR5IGlzIHNpbWls
YXIgdG8gJ0VzY2FwZScuCi0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
OjpWaXJ0dWFsS2V5OjpFc2NhcGU6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpFc2NhcGU6CiAgICAg
ICAgIHJldHVybiBrVktfRXNjYXBlOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbjo6VmlydHVhbEtleTo6UGFnZVVwOgorICAgIGNhc2UgVmlydHVhbEtleTo6UGFnZVVw
OgogICAgICAgICByZXR1cm4ga1ZLX1BhZ2VVcDsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OlBhZ2VEb3duOgorICAgIGNhc2UgVmlydHVhbEtl
eTo6UGFnZURvd246CiAgICAgICAgIHJldHVybiBrVktfUGFnZURvd247Ci0gICAgY2FzZSBJbnNw
ZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpFbmQ6CisgICAgY2FzZSBW
aXJ0dWFsS2V5OjpFbmQ6CiAgICAgICAgIHJldHVybiBrVktfRW5kOwotICAgIGNhc2UgSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6SG9tZToKKyAgICBjYXNlIFZp
cnR1YWxLZXk6OkhvbWU6CiAgICAgICAgIHJldHVybiBrVktfSG9tZTsKLSAgICBjYXNlIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkxlZnRBcnJvdzoKKyAgICBj
YXNlIFZpcnR1YWxLZXk6OkxlZnRBcnJvdzoKICAgICAgICAgcmV0dXJuIGtWS19MZWZ0QXJyb3c7
Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpV
cEFycm93OgorICAgIGNhc2UgVmlydHVhbEtleTo6VXBBcnJvdzoKICAgICAgICAgcmV0dXJuIGtW
S19VcEFycm93OwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6Vmly
dHVhbEtleTo6UmlnaHRBcnJvdzoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OlJpZ2h0QXJyb3c6CiAg
ICAgICAgIHJldHVybiBrVktfUmlnaHRBcnJvdzsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkRvd25BcnJvdzoKKyAgICBjYXNlIFZpcnR1YWxL
ZXk6OkRvd25BcnJvdzoKICAgICAgICAgcmV0dXJuIGtWS19Eb3duQXJyb3c7Ci0gICAgY2FzZSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpJbnNlcnQ6CisgICAg
Y2FzZSBWaXJ0dWFsS2V5OjpJbnNlcnQ6CiAgICAgICAgIC8vIFRoZSAnaW5zZXJ0JyBrZXkgZG9l
cyBub3QgZXhpc3Qgb24gQXBwbGUga2V5Ym9hcmRzIGFuZCBoYXMgbm8ga2V5Q29kZS4KICAgICAg
ICAgLy8gVGhlIHNlbWFudGljcyBhcmUgdW5jbGVhciBzbyBqdXN0IGFib3J0IGFuZCBkbyBub3Ro
aW5nLgogICAgICAgICByZXR1cm4gMDsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1
dG9tYXRpb246OlZpcnR1YWxLZXk6OkRlbGV0ZToKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkRlbGV0
ZToKICAgICAgICAgcmV0dXJuIGtWS19Gb3J3YXJkRGVsZXRlOwotICAgIGNhc2UgSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6U3BhY2U6CisgICAgY2FzZSBWaXJ0
dWFsS2V5OjpTcGFjZToKICAgICAgICAgcmV0dXJuIGtWS19TcGFjZTsKLSAgICBjYXNlIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OlNlbWljb2xvbjoKKyAgICBj
YXNlIFZpcnR1YWxLZXk6OlNlbWljb2xvbjoKICAgICAgICAgcmV0dXJuIGtWS19BTlNJX1NlbWlj
b2xvbjsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxL
ZXk6OkVxdWFsczoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkVxdWFsczoKICAgICAgICAgcmV0dXJu
IGtWS19BTlNJX0VxdWFsOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlv
bjo6VmlydHVhbEtleTo6UmV0dXJuOgorICAgIGNhc2UgVmlydHVhbEtleTo6UmV0dXJuOgogICAg
ICAgICByZXR1cm4ga1ZLX1JldHVybjsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1
dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZDA6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpO
dW1iZXJQYWQwOgogICAgICAgICByZXR1cm4ga1ZLX0FOU0lfS2V5cGFkMDsKLSAgICBjYXNlIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZDE6Cisg
ICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWQxOgogICAgICAgICByZXR1cm4ga1ZLX0FOU0lf
S2V5cGFkMTsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1
YWxLZXk6Ok51bWJlclBhZDI6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWQyOgogICAg
ICAgICByZXR1cm4ga1ZLX0FOU0lfS2V5cGFkMjsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZDM6CisgICAgY2FzZSBWaXJ0dWFs
S2V5OjpOdW1iZXJQYWQzOgogICAgICAgICByZXR1cm4ga1ZLX0FOU0lfS2V5cGFkMzsKLSAgICBj
YXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBh
ZDQ6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWQ0OgogICAgICAgICByZXR1cm4ga1ZL
X0FOU0lfS2V5cGFkNDsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246
OlZpcnR1YWxLZXk6Ok51bWJlclBhZDU6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWQ1
OgogICAgICAgICByZXR1cm4ga1ZLX0FOU0lfS2V5cGFkNTsKLSAgICBjYXNlIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZDY6CisgICAgY2FzZSBW
aXJ0dWFsS2V5OjpOdW1iZXJQYWQ2OgogICAgICAgICByZXR1cm4ga1ZLX0FOU0lfS2V5cGFkNjsK
LSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51
bWJlclBhZDc6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWQ3OgogICAgICAgICByZXR1
cm4ga1ZLX0FOU0lfS2V5cGFkNzsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9t
YXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZDg6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1i
ZXJQYWQ4OgogICAgICAgICByZXR1cm4ga1ZLX0FOU0lfS2V5cGFkODsKLSAgICBjYXNlIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZDk6CisgICAg
Y2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWQ5OgogICAgICAgICByZXR1cm4ga1ZLX0FOU0lfS2V5
cGFkOTsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxL
ZXk6Ok51bWJlclBhZE11bHRpcGx5OgorICAgIGNhc2UgVmlydHVhbEtleTo6TnVtYmVyUGFkTXVs
dGlwbHk6CiAgICAgICAgIHJldHVybiBrVktfQU5TSV9LZXlwYWRNdWx0aXBseTsKLSAgICBjYXNl
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZEFk
ZDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZEFkZDoKICAgICAgICAgcmV0dXJuIGtW
S19BTlNJX0tleXBhZFBsdXM7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWRTdWJ0cmFjdDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6
Ok51bWJlclBhZFN1YnRyYWN0OgogICAgICAgICByZXR1cm4ga1ZLX0FOU0lfS2V5cGFkTWludXM7
Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpO
dW1iZXJQYWRTZXBhcmF0b3I6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWRTZXBhcmF0
b3I6CiAgICAgICAgIC8vIFRoZSAnU2VwYXJhdG9yJyBrZXkgaXMgb25seSBwcmVzZW50IG9uIGEg
ZmV3IGludGVybmF0aW9uYWwga2V5Ym9hcmRzLgogICAgICAgICAvLyBJdCBpcyB1c3VhbGx5IG1h
cHBlZCB0byB0aGUgc2FtZSBjaGFyYWN0ZXIgYXMgRGVjaW1hbCAoJy4nIG9yICcsJykuCiAgICAg
ICAgIEZBTExUSFJPVUdIOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlv
bjo6VmlydHVhbEtleTo6TnVtYmVyUGFkRGVjaW1hbDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51
bWJlclBhZERlY2ltYWw6CiAgICAgICAgIHJldHVybiBrVktfQU5TSV9LZXlwYWREZWNpbWFsOwog
ICAgICAgICAvLyBGSVhNRTogdGhpcyBtaWdodCBiZSBsb2NhbGUtZGVwZW5kZW50LiBTZWUgdGhl
IGFib3ZlIGNvbW1lbnQuCi0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
OjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWREaXZpZGU6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1i
ZXJQYWREaXZpZGU6CiAgICAgICAgIHJldHVybiBrVktfQU5TSV9LZXlwYWREaXZpZGU7Ci0gICAg
Y2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5jdGlv
bjE6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpGdW5jdGlvbjE6CiAgICAgICAgIHJldHVybiBrVktf
RjE7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5
OjpGdW5jdGlvbjI6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpGdW5jdGlvbjI6CiAgICAgICAgIHJl
dHVybiBrVktfRjI7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpW
aXJ0dWFsS2V5OjpGdW5jdGlvbjM6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpGdW5jdGlvbjM6CiAg
ICAgICAgIHJldHVybiBrVktfRjM7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRv
bWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjQ6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpGdW5j
dGlvbjQ6CiAgICAgICAgIHJldHVybiBrVktfRjQ7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjU6CisgICAgY2FzZSBWaXJ0dWFs
S2V5OjpGdW5jdGlvbjU6CiAgICAgICAgIHJldHVybiBrVktfRjU7Ci0gICAgY2FzZSBJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjY6CisgICAgY2Fz
ZSBWaXJ0dWFsS2V5OjpGdW5jdGlvbjY6CiAgICAgICAgIHJldHVybiBrVktfRjY7Ci0gICAgY2Fz
ZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjc6
CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpGdW5jdGlvbjc6CiAgICAgICAgIHJldHVybiBrVktfRjc7
Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpG
dW5jdGlvbjg6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpGdW5jdGlvbjg6CiAgICAgICAgIHJldHVy
biBrVktfRjg7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0
dWFsS2V5OjpGdW5jdGlvbjk6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpGdW5jdGlvbjk6CiAgICAg
ICAgIHJldHVybiBrVktfRjk7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uOjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjEwOgorICAgIGNhc2UgVmlydHVhbEtleTo6RnVuY3Rp
b24xMDoKICAgICAgICAgcmV0dXJuIGtWS19GMTA7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjExOgorICAgIGNhc2UgVmlydHVh
bEtleTo6RnVuY3Rpb24xMToKICAgICAgICAgcmV0dXJuIGtWS19GMTE7Ci0gICAgY2FzZSBJbnNw
ZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjEyOgorICAg
IGNhc2UgVmlydHVhbEtleTo6RnVuY3Rpb24xMjoKICAgICAgICAgcmV0dXJuIGtWS19GMTI7CiAg
ICAgfQogfQogCi1zdGF0aWMgTlNFdmVudE1vZGlmaWVyRmxhZ3MgZXZlbnRNb2RpZmllckZsYWdz
Rm9yVmlydHVhbEtleShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5
IGtleSkKK3N0YXRpYyBOU0V2ZW50TW9kaWZpZXJGbGFncyBldmVudE1vZGlmaWVyRmxhZ3NGb3JW
aXJ0dWFsS2V5KFZpcnR1YWxLZXkga2V5KQogewogICAgIC8vIENvbXB1dGVzIHRoZSBtb2RpZmll
cnMgY2hhbmdlZCBieSB0aGUgdmlydHVhbCBrZXkgd2hlbiBpdCBpcyBwcmVzc2VkIG9yIHJlbGVh
c2VkLgogICAgIC8vIFRoZSBtYXBwaW5nIGZyb20ga2V5cyB0byBtb2RpZmllcnMgaXMgc3BlY2lm
aWVkIGluIHRoZSBkb2N1bWVudGF0aW9uIGZvciBOU0V2ZW50LgogICAgIHN3aXRjaCAoa2V5KSB7
Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpT
aGlmdDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OlNoaWZ0OgogICAgICAgICByZXR1cm4gTlNFdmVu
dE1vZGlmaWVyRmxhZ1NoaWZ0OwogCi0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRv
bWF0aW9uOjpWaXJ0dWFsS2V5OjpDb250cm9sOgorICAgIGNhc2UgVmlydHVhbEtleTo6Q29udHJv
bDoKICAgICAgICAgcmV0dXJuIE5TRXZlbnRNb2RpZmllckZsYWdDb250cm9sOwogCi0gICAgY2Fz
ZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpBbHRlcm5hdGU6
CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpBbHRlcm5hdGU6CiAgICAgICAgIHJldHVybiBOU0V2ZW50
TW9kaWZpZXJGbGFnT3B0aW9uOwogCi0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRv
bWF0aW9uOjpWaXJ0dWFsS2V5OjpNZXRhOgorICAgIGNhc2UgVmlydHVhbEtleTo6TWV0YToKICAg
ICAgICAgLy8gVGhlICdtZXRhJyBrZXkgZG9lcyBub3QgZXhpc3Qgb24gQXBwbGUga2V5Ym9hcmRz
IGFuZCBpcyB1c3VhbGx5CiAgICAgICAgIC8vIG1hcHBlZCB0byB0aGUgQ29tbWFuZCBrZXkgd2hl
biB1c2luZyB0aGlyZC1wYXJ0eSBrZXlib2FyZHMuCi0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpDb21tYW5kOgorICAgIGNhc2UgVmlydHVhbEtl
eTo6Q29tbWFuZDoKICAgICAgICAgcmV0dXJuIE5TRXZlbnRNb2RpZmllckZsYWdDb21tYW5kOwog
Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpI
ZWxwOgorICAgIGNhc2UgVmlydHVhbEtleTo6SGVscDoKICAgICAgICAgcmV0dXJuIE5TRXZlbnRN
b2RpZmllckZsYWdIZWxwIHwgTlNFdmVudE1vZGlmaWVyRmxhZ0Z1bmN0aW9uOwogCi0gICAgY2Fz
ZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpQYWdlVXA6Ci0g
ICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpQYWdl
RG93bjoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxL
ZXk6OkVuZDoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1
YWxLZXk6OkhvbWU6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpQYWdlVXA6CisgICAgY2FzZSBWaXJ0
dWFsS2V5OjpQYWdlRG93bjoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkVuZDoKKyAgICBjYXNlIFZp
cnR1YWxLZXk6OkhvbWU6CiAgICAgICAgIHJldHVybiBOU0V2ZW50TW9kaWZpZXJGbGFnRnVuY3Rp
b247CiAKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxL
ZXk6OkxlZnRBcnJvdzoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246
OlZpcnR1YWxLZXk6OlVwQXJyb3c6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRv
bWF0aW9uOjpWaXJ0dWFsS2V5OjpSaWdodEFycm93OgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RG93bkFycm93OgorICAgIGNhc2UgVmlydHVh
bEtleTo6TGVmdEFycm93OgorICAgIGNhc2UgVmlydHVhbEtleTo6VXBBcnJvdzoKKyAgICBjYXNl
IFZpcnR1YWxLZXk6OlJpZ2h0QXJyb3c6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpEb3duQXJyb3c6
CiAgICAgICAgIHJldHVybiBOU0V2ZW50TW9kaWZpZXJGbGFnTnVtZXJpY1BhZCB8IE5TRXZlbnRN
b2RpZmllckZsYWdGdW5jdGlvbjsKIAotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbjo6VmlydHVhbEtleTo6RGVsZXRlOgorICAgIGNhc2UgVmlydHVhbEtleTo6RGVsZXRl
OgogICAgICAgICByZXR1cm4gTlNFdmVudE1vZGlmaWVyRmxhZ0Z1bmN0aW9uOwogCi0gICAgY2Fz
ZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpDbGVhcjoKLSAg
ICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJl
clBhZDA6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFs
S2V5OjpOdW1iZXJQYWQxOgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlv
bjo6VmlydHVhbEtleTo6TnVtYmVyUGFkMjoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZDM6Ci0gICAgY2FzZSBJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWQ0OgotICAgIGNhc2Ug
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkNToK
LSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51
bWJlclBhZDY6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0
dWFsS2V5OjpOdW1iZXJQYWQ3OgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21h
dGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkODoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZDk6Ci0gICAgY2FzZSBJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWRNdWx0aXBseToK
LSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51
bWJlclBhZEFkZDoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZp
cnR1YWxLZXk6Ok51bWJlclBhZFN1YnRyYWN0OgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkU2VwYXJhdG9yOgotICAgIGNhc2Ug
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkRGVj
aW1hbDoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxL
ZXk6Ok51bWJlclBhZERpdmlkZToKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkNsZWFyOgorICAgIGNh
c2UgVmlydHVhbEtleTo6TnVtYmVyUGFkMDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJlclBh
ZDE6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWQyOgorICAgIGNhc2UgVmlydHVhbEtl
eTo6TnVtYmVyUGFkMzoKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZDQ6CisgICAgY2Fz
ZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWQ1OgorICAgIGNhc2UgVmlydHVhbEtleTo6TnVtYmVyUGFk
NjoKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZDc6CisgICAgY2FzZSBWaXJ0dWFsS2V5
OjpOdW1iZXJQYWQ4OgorICAgIGNhc2UgVmlydHVhbEtleTo6TnVtYmVyUGFkOToKKyAgICBjYXNl
IFZpcnR1YWxLZXk6Ok51bWJlclBhZE11bHRpcGx5OgorICAgIGNhc2UgVmlydHVhbEtleTo6TnVt
YmVyUGFkQWRkOgorICAgIGNhc2UgVmlydHVhbEtleTo6TnVtYmVyUGFkU3VidHJhY3Q6CisgICAg
Y2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWRTZXBhcmF0b3I6CisgICAgY2FzZSBWaXJ0dWFsS2V5
OjpOdW1iZXJQYWREZWNpbWFsOgorICAgIGNhc2UgVmlydHVhbEtleTo6TnVtYmVyUGFkRGl2aWRl
OgogICAgICAgICByZXR1cm4gTlNFdmVudE1vZGlmaWVyRmxhZ051bWVyaWNQYWQ7CiAKLSAgICBj
YXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkZ1bmN0aW9u
MToKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6
OkZ1bmN0aW9uMjoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZp
cnR1YWxLZXk6OkZ1bmN0aW9uMzoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9t
YXRpb246OlZpcnR1YWxLZXk6OkZ1bmN0aW9uNDoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkZ1bmN0aW9uNToKLSAgICBjYXNlIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkZ1bmN0aW9uNjoKLSAgICBjYXNl
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkZ1bmN0aW9uNzoK
LSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkZ1
bmN0aW9uODoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1
YWxLZXk6OkZ1bmN0aW9uOToKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRp
b246OlZpcnR1YWxLZXk6OkZ1bmN0aW9uMTA6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29s
OjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjExOgotICAgIGNhc2UgSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RnVuY3Rpb24xMjoKKyAgICBjYXNl
IFZpcnR1YWxLZXk6OkZ1bmN0aW9uMToKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkZ1bmN0aW9uMjoK
KyAgICBjYXNlIFZpcnR1YWxLZXk6OkZ1bmN0aW9uMzoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkZ1
bmN0aW9uNDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkZ1bmN0aW9uNToKKyAgICBjYXNlIFZpcnR1
YWxLZXk6OkZ1bmN0aW9uNjoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkZ1bmN0aW9uNzoKKyAgICBj
YXNlIFZpcnR1YWxLZXk6OkZ1bmN0aW9uODoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkZ1bmN0aW9u
OToKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkZ1bmN0aW9uMTA6CisgICAgY2FzZSBWaXJ0dWFsS2V5
OjpGdW5jdGlvbjExOgorICAgIGNhc2UgVmlydHVhbEtleTo6RnVuY3Rpb24xMjoKICAgICAgICAg
cmV0dXJuIE5TRXZlbnRNb2RpZmllckZsYWdGdW5jdGlvbjsKIAogICAgIGRlZmF1bHQ6CkBAIC00
MjcsMTkgKzQyNywzNCBAQCBzdGF0aWMgTlNFdmVudE1vZGlmaWVyRmxhZ3MgZXZlbnRNb2RpZmll
ckZsYWdzRm9yVmlydHVhbEtleShJbnNwZWN0b3I6OlByb3RvY29sOgogICAgIH0KIH0KIAotdm9p
ZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZUtleVN0cm9rZShXZWJQYWdl
UHJveHkmIHBhZ2UsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OktleWJvYXJkSW50
ZXJhY3Rpb25UeXBlIGludGVyYWN0aW9uLCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
OjpWaXJ0dWFsS2V5IGtleSkKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2lt
dWxhdGVLZXlib2FyZEludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgS2V5Ym9hcmRJbnRl
cmFjdGlvbiBpbnRlcmFjdGlvbiwgc3RkOjpvcHRpb25hbDxWaXJ0dWFsS2V5PiB2aXJ0dWFsS2V5
LCBzdGQ6Om9wdGlvbmFsPENoYXJLZXk+IGNoYXJLZXkpCiB7CiAgICAgLy8gRklYTUU6IHRoaXMg
ZnVuY3Rpb24gYW5kIHRoZSBBdXRvbWF0aW9uIHByb3RvY29sIGVudW0gc2hvdWxkIHByb2JhYmx5
IGFkb3B0IGtleSBuYW1lcwogICAgIC8vIGZyb20gVzNDIFVJRXZlbnRzIHN0YW5kYXJkLiBGb3Ig
bW9yZSBkZXRhaWxzOiBodHRwczovL3czYy5naXRodWIuaW8vdWlldmVudHMtY29kZS8KIAotICAg
IGJvb2wgaXNTdGlja3lNb2RpZmllciA9IGtleUhhc1N0aWNreU1vZGlmaWVyKGtleSk7Ci0gICAg
TlNFdmVudE1vZGlmaWVyRmxhZ3MgY2hhbmdlZE1vZGlmaWVycyA9IGV2ZW50TW9kaWZpZXJGbGFn
c0ZvclZpcnR1YWxLZXkoa2V5KTsKLSAgICBpbnQga2V5Q29kZSA9IGtleUNvZGVGb3JWaXJ0dWFs
S2V5KGtleSk7CisgICAgQVNTRVJUKHZpcnR1YWxLZXkuaGFzX3ZhbHVlKCkgfHwgY2hhcktleS5o
YXNfdmFsdWUoKSk7CisKKyAgICBib29sIGlzU3RpY2t5TW9kaWZpZXIgPSBmYWxzZTsKKyAgICBO
U0V2ZW50TW9kaWZpZXJGbGFncyBjaGFuZ2VkTW9kaWZpZXJzID0gMDsKKyAgICBpbnQga2V5Q29k
ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuaWNoYXI+IGNoYXJDb2RlOworICAgIHN0ZDo6b3B0aW9u
YWw8dW5pY2hhcj4gY2hhckNvZGVJZ25vcmluZ01vZGlmaWVyczsKKworICAgIGlmICh2aXJ0dWFs
S2V5Lmhhc192YWx1ZSgpKSB7CisgICAgICAgIGlzU3RpY2t5TW9kaWZpZXIgPSB2aXJ0dWFsS2V5
SGFzU3RpY2t5TW9kaWZpZXIodmlydHVhbEtleS52YWx1ZSgpKTsKKyAgICAgICAgY2hhbmdlZE1v
ZGlmaWVycyA9IGV2ZW50TW9kaWZpZXJGbGFnc0ZvclZpcnR1YWxLZXkodmlydHVhbEtleS52YWx1
ZSgpKTsKKyAgICAgICAga2V5Q29kZSA9IGtleUNvZGVGb3JWaXJ0dWFsS2V5KHZpcnR1YWxLZXku
dmFsdWUoKSk7CisgICAgICAgIGNoYXJDb2RlID0gY2hhckNvZGVGb3JWaXJ0dWFsS2V5KHZpcnR1
YWxLZXkudmFsdWUoKSk7CisgICAgICAgIGNoYXJDb2RlSWdub3JpbmdNb2RpZmllcnMgPSBjaGFy
Q29kZUlnbm9yaW5nTW9kaWZpZXJzRm9yVmlydHVhbEtleSh2aXJ0dWFsS2V5LnZhbHVlKCkpOwor
ICAgIH0KKworICAgIGlmIChjaGFyS2V5Lmhhc192YWx1ZSgpKSB7CisgICAgICAgIGNoYXJDb2Rl
ID0gKHVuaWNoYXIpY2hhcktleS52YWx1ZSgpOworICAgICAgICBjaGFyQ29kZUlnbm9yaW5nTW9k
aWZpZXJzID0gKHVuaWNoYXIpY2hhcktleS52YWx1ZSgpOworICAgIH0KIAogICAgIC8vIEZJWE1F
OiBjb25zaWRlciB1c2luZyBBcHBLaXQgU1BJIHRvIG5vcm1hbGl6ZSAnY2hhcmFjdGVycycsIGku
ZS4sIGNoYW5naW5nICogdG8gU2hpZnQtOCwKICAgICAvLyBhbmQgcGFzc2luZyB0aGF0IGluIHRv
IGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycy4gV2UgY291bGQgaGFyZGNvZGUgdGhpcyBmb3Ig
QVNDSUkgaWYgbmVlZGVkLgotICAgIHN0ZDo6b3B0aW9uYWw8dW5pY2hhcj4gY2hhckNvZGUgPSBj
aGFyQ29kZUZvclZpcnR1YWxLZXkoa2V5KTsKLSAgICBzdGQ6Om9wdGlvbmFsPHVuaWNoYXI+IGNo
YXJDb2RlSWdub3JpbmdNb2RpZmllcnMgPSBjaGFyQ29kZUlnbm9yaW5nTW9kaWZpZXJzRm9yVmly
dHVhbEtleShrZXkpOwogICAgIE5TU3RyaW5nICpjaGFyYWN0ZXJzID0gY2hhckNvZGUgPyBbTlNT
dHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoYXJDb2RlLnZhbHVlKCkgbGVuZ3RoOjFdIDog
bmlsOwogICAgIE5TU3RyaW5nICp1bm1vZGlmaWVkQ2hhcmFjdGVycyA9IGNoYXJDb2RlSWdub3Jp
bmdNb2RpZmllcnMgPyBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoYXJDb2RlSWdu
b3JpbmdNb2RpZmllcnMudmFsdWUoKSBsZW5ndGg6MV0gOiBuaWw7CiAKQEAgLTQ1MiwxOSArNDY3
LDE5IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVLZXlTdHJv
a2UoV2ViUGFnZVByb3h5JiBwYWdlLCBJbnNwZWN0CiAgICAgTlNQb2ludCBldmVudFBvc2l0aW9u
ID0gTlNNYWtlUG9pbnQoMCwgd2luZG93LmZyYW1lLnNpemUuaGVpZ2h0KTsKIAogICAgIHN3aXRj
aCAoaW50ZXJhY3Rpb24pIHsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRp
b246OktleWJvYXJkSW50ZXJhY3Rpb25UeXBlOjpLZXlQcmVzczogeworICAgIGNhc2UgS2V5Ym9h
cmRJbnRlcmFjdGlvbjo6S2V5UHJlc3M6IHsKICAgICAgICAgTlNFdmVudFR5cGUgZXZlbnRUeXBl
ID0gaXNTdGlja3lNb2RpZmllciA/IE5TRXZlbnRUeXBlRmxhZ3NDaGFuZ2VkIDogTlNFdmVudFR5
cGVLZXlEb3duOwogICAgICAgICBtX2N1cnJlbnRNb2RpZmllcnMgfD0gY2hhbmdlZE1vZGlmaWVy
czsKICAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbTlNFdmVudCBrZXlFdmVudFdp
dGhUeXBlOmV2ZW50VHlwZSBsb2NhdGlvbjpldmVudFBvc2l0aW9uIG1vZGlmaWVyRmxhZ3M6bV9j
dXJyZW50TW9kaWZpZXJzIHRpbWVzdGFtcDp0aW1lc3RhbXAgd2luZG93TnVtYmVyOndpbmRvd051
bWJlciBjb250ZXh0Om5pbCBjaGFyYWN0ZXJzOmNoYXJhY3RlcnMgY2hhcmFjdGVyc0lnbm9yaW5n
TW9kaWZpZXJzOnVubW9kaWZpZWRDaGFyYWN0ZXJzIGlzQVJlcGVhdDpOTyBrZXlDb2RlOmtleUNv
ZGVdXTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXV0b21hdGlvbjo6S2V5Ym9hcmRJbnRlcmFjdGlvblR5cGU6OktleVJlbGVhc2U6IHsKKyAg
ICBjYXNlIEtleWJvYXJkSW50ZXJhY3Rpb246OktleVJlbGVhc2U6IHsKICAgICAgICAgTlNFdmVu
dFR5cGUgZXZlbnRUeXBlID0gaXNTdGlja3lNb2RpZmllciA/IE5TRXZlbnRUeXBlRmxhZ3NDaGFu
Z2VkIDogTlNFdmVudFR5cGVLZXlVcDsKICAgICAgICAgbV9jdXJyZW50TW9kaWZpZXJzICY9IH5j
aGFuZ2VkTW9kaWZpZXJzOwogICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltOU0V2
ZW50IGtleUV2ZW50V2l0aFR5cGU6ZXZlbnRUeXBlIGxvY2F0aW9uOmV2ZW50UG9zaXRpb24gbW9k
aWZpZXJGbGFnczptX2N1cnJlbnRNb2RpZmllcnMgdGltZXN0YW1wOnRpbWVzdGFtcCB3aW5kb3dO
dW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmlsIGNoYXJhY3RlcnM6Y2hhcmFjdGVycyBjaGFy
YWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6dW5tb2RpZmllZENoYXJhY3RlcnMgaXNBUmVwZWF0Ok5P
IGtleUNvZGU6a2V5Q29kZV1dOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBJbnNw
ZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpLZXlib2FyZEludGVyYWN0aW9uVHlwZTo6SW5z
ZXJ0QnlLZXk6IHsKKyAgICBjYXNlIEtleWJvYXJkSW50ZXJhY3Rpb246Okluc2VydEJ5S2V5OiB7
CiAgICAgICAgIC8vIFN0aWNreSBtb2RpZmllcnMgc2hvdWxkIGVpdGhlciBiZSAnS2V5UHJlc3Mn
IG9yICdLZXlSZWxlYXNlJy4KICAgICAgICAgQVNTRVJUKCFpc1N0aWNreU1vZGlmaWVyKTsKICAg
ICAgICAgaWYgKGlzU3RpY2t5TW9kaWZpZXIpCkBAIC01NTEsNyArNTY2LDcgQEAgdm9pZCBXZWJB
dXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZUtleVNlcXVlbmNlKFdlYlBhZ2VQcm94
eSYgcGFnZSwgY29uc3QKIAogICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltOU0V2
ZW50IGtleUV2ZW50V2l0aFR5cGU6TlNFdmVudFR5cGVLZXlEb3duIGxvY2F0aW9uOmV2ZW50UG9z
aXRpb24gbW9kaWZpZXJGbGFnczptb2RpZmllcnNGb3JLZXlzdHJva2UgdGltZXN0YW1wOnRpbWVz
dGFtcCB3aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmlsIGNoYXJhY3RlcnM6c3Vi
c3RyaW5nIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczpzdWJzdHJpbmcgaXNBUmVwZWF0Ok5P
IGtleUNvZGU6MF1dOwogICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltOU0V2ZW50
IGtleUV2ZW50V2l0aFR5cGU6TlNFdmVudFR5cGVLZXlVcCBsb2NhdGlvbjpldmVudFBvc2l0aW9u
IG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJzRm9yS2V5c3Ryb2tlIHRpbWVzdGFtcDp0aW1lc3RhbXAg
d2luZG93TnVtYmVyOndpbmRvd051bWJlciBjb250ZXh0Om5pbCBjaGFyYWN0ZXJzOnN1YnN0cmlu
ZyBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6c3Vic3RyaW5nIGlzQVJlcGVhdDpOTyBrZXlD
b2RlOjBdXTsKLSAgICAgICAgCisKICAgICAgICAgaWYgKHNob3VsZFByZXNzU2hpZnQpCiAgICAg
ICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltOU0V2ZW50IGtleUV2ZW50V2l0aFR5
cGU6TlNFdmVudFR5cGVGbGFnc0NoYW5nZWQgbG9jYXRpb246ZXZlbnRQb3NpdGlvbiBtb2RpZmll
ckZsYWdzOm1fY3VycmVudE1vZGlmaWVycyB0aW1lc3RhbXA6dGltZXN0YW1wIHdpbmRvd051bWJl
cjp3aW5kb3dOdW1iZXIgY29udGV4dDpuaWwgY2hhcmFjdGVyczpAIiIgY2hhcmFjdGVyc0lnbm9y
aW5nTW9kaWZpZXJzOkAiIiBpc0FSZXBlYXQ6Tk8ga2V5Q29kZTprVktfU2hpZnRdXTsKICAgICB9
XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGFkMTU0NzU5MGM2ZmQzYTA4NWQxZDRlZjlkNmNjYzkwNWEzNzY2ZWQuLmU3OWFhOWE2NWU5
ZTE3YzQ0ODEzOTE2YzNiNTUzNTJjYjBiODg1ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTUyOSw2ICsxNTI5LDggQEAKIAkJOTk0
NkVGODYxRTdCMDI3MDAwNTQxRTc5IC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uSU9TLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk0NkVGODUxRTdCMDI2
NjAwNTQxRTc5IC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uSU9TLm1tICovOyB9OwogCQk5OTRCQURG
MzFGN0Q3ODExMDBCNTcxRTcgLyogV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5NEJBREYyMUY3RDc3RUIw
MEI1NzFFNyAvKiBXS0luc3BlY3RvclZpZXdDb250cm9sbGVyLm1tICovOyB9OwogCQk5OTRCQURG
NDFGN0Q3ODE0MDBCNTcxRTcgLyogV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk0QkFERjExRjdENzdFQTAw
QjU3MUU3IC8qIFdLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIuaCAqLzsgfTsKKwkJOTk1MjI2RDYy
MDdEMTg0NjAwRjc4NDIwIC8qIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk1MjI2RDQyMDdEMTg0NTAwRjc4
NDIwIC8qIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5oICovOyB9OworCQk5OTUyMjZENzIwN0Qx
ODQ2MDBGNzg0MjAgLyogU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5NTIyNkQ1MjA3RDE4NDYwMEY3ODQy
MCAvKiBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuY3BwICovOyB9OwogCQk5OTU1QTZFQzFDNzk4
MEMyMDBFQjZBOTMgLyogV2ViQXV0b21hdGlvblNlc3Npb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5NTVBNkVCMUM3OTgwQkIwMEVCNkE5MyAvKiBX
ZWJBdXRvbWF0aW9uU2Vzc2lvbi5oICovOyB9OwogCQk5OTU1QTZFRDFDNzk4MENBMDBFQjZBOTMg
LyogV2ViQXV0b21hdGlvblNlc3Npb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTk1NUE2RUExQzc5ODBCQjAwRUI2QTkzIC8qIFdlYkF1dG9tYXRp
b25TZXNzaW9uLmNwcCAqLzsgfTsKIAkJOTk1NUE2RUYxQzc5ODEwODAwRUI2QTkzIC8qIEF1dG9t
YXRpb24uanNvbiBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDk5NTVBNkU5MUM3OTgwQkIwMEVCNkE5MyAvKiBBdXRvbWF0aW9uLmpzb24gKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQwMTksNiArNDAyMSw4IEBA
CiAJCTk5NDZFRjg1MUU3QjAyNjYwMDU0MUU3OSAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbklPUy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkF1dG9tYXRpb25T
ZXNzaW9uSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTRCQURGMTFGN0Q3
N0VBMDBCNTcxRTcgLyogV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXS0luc3BlY3RvclZpZXdDb250cm9sbGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5NEJBREYyMUY3RDc3RUIwMEI1NzFFNyAvKiBXS0luc3Bl
Y3RvclZpZXdDb250cm9sbGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOTk1MjI2RDQyMDdEMTg0NTAwRjc4NDIwIC8qIFNpbXVsYXRlZElucHV0RGlzcGF0
Y2hlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaW11bGF0ZWRJbnB1dERp
c3BhdGNoZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTk1MjI2RDUyMDdEMTg0
NjAwRjc4NDIwIC8qIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTU1QTZFOTFDNzk4MEJCMDBFQjZBOTMgLyogQXV0
b21hdGlvbi5qc29uICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5qc29uOyBwYXRoID0gQXV0b21hdGlvbi5qc29u
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTU1QTZFQTFDNzk4MEJCMDBFQjZBOTMg
LyogV2ViQXV0b21hdGlvblNlc3Npb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV2ViQXV0b21hdGlvblNlc3Npb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5OTU1QTZFQjFDNzk4MEJCMDBFQjZBOTMgLyogV2ViQXV0b21hdGlvblNlc3Npb24u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQXV0b21hdGlvblNlc3Npb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY5NzAsNiArNjk3NCw4IEBACiAJCQkJ
OTk0NkVGODIxRTdCMDIzRDAwNTQxRTc5IC8qIGlvcyAqLywKIAkJCQk5OUMzQUUyMjFEQUQ4RTE0
MDBBRjVDMTYgLyogbWFjICovLAogCQkJCTk5NTVBNkU5MUM3OTgwQkIwMEVCNkE5MyAvKiBBdXRv
bWF0aW9uLmpzb24gKi8sCisJCQkJOTk1MjI2RDUyMDdEMTg0NjAwRjc4NDIwIC8qIFNpbXVsYXRl
ZElucHV0RGlzcGF0Y2hlci5jcHAgKi8sCisJCQkJOTk1MjI2RDQyMDdEMTg0NTAwRjc4NDIwIC8q
IFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5oICovLAogCQkJCTk5NTVBNkVBMUM3OTgwQkIwMEVC
NkE5MyAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgKi8sCiAJCQkJOTk1NUE2RUIxQzc5ODBC
QjAwRUI2QTkzIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uLmggKi8sCiAJCQkJMUMwQTE5NTkxQzkw
MDZFQTAwRkUwRUJCIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uLm1lc3NhZ2VzLmluICovLApAQCAt
OTE3NCw2ICs5MTgwLDcgQEAKIAkJCQk4MzEzRjdFQzFGN0RBRTA4MDBCOTQ0RUIgLyogU2hhcmVk
U3RyaW5nSGFzaFN0b3JlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzEzRjdFRTFGN0RBRTA4MDBC
OTQ0RUIgLyogU2hhcmVkU3RyaW5nSGFzaFRhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0Y5
NjQ0RTFGQTBGNzZFMDBDNDc3NTAgLyogU2hhcmVkU3RyaW5nSGFzaFRhYmxlUmVhZE9ubHkuaCBp
biBIZWFkZXJzICovLAorCQkJCTk5NTIyNkQ2MjA3RDE4NDYwMEY3ODQyMCAvKiBTaW11bGF0ZWRJ
bnB1dERpc3BhdGNoZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEQUYwNkQ2MThCRDFBNDcwMDgx
Q0VCMSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkyREU2OTQzRTE4QkQyQTY4MDA1QzE1RTUgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxl
ck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MjcyQjI4QjE0MDY5ODVEMDA5NkE1RDAg
LyogU3RhdGlzdGljc0RhdGEuaCBpbiBIZWFkZXJzICovLApAQCAtMTA4NzYsNiArMTA4ODMsNyBA
QAogCQkJCTgzMTNGN0VCMUY3REFFMDgwMEI5NDRFQiAvKiBTaGFyZWRTdHJpbmdIYXNoU3RvcmUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODMxM0Y3RUQxRjdEQUUwODAwQjk0NEVCIC8qIFNoYXJl
ZFN0cmluZ0hhc2hUYWJsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4M0Y5NjQ0RDFGQTBGNzZF
MDBDNDc3NTAgLyogU2hhcmVkU3RyaW5nSGFzaFRhYmxlUmVhZE9ubHkuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJOTk1MjI2RDcyMDdEMTg0NjAwRjc4NDIwIC8qIFNpbXVsYXRlZElucHV0RGlzcGF0
Y2hlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyREFGMDZENzE4QkQxQTQ3MDA4MUNFQjEgLyog
U21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJERTY5
NDNEMThCRDJBNjgwMDVDMTVFNSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2Fn
ZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUyNzJCMjhBMTQwNjk4NUQwMDk2QTVE
MCAvKiBTdGF0aXN0aWNzRGF0YS5jcHAgaW4gU291cmNlcyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338363</attachid>
            <date>2018-04-19 14:59:16 -0700</date>
            <delta_ts>2018-04-19 15:34:29 -0700</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-184603-20180419145916.patch</filename>
            <type>text/plain</type>
            <size>104314</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwODIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDIzMzY5YzY5MDNmMjA1MTY3
YmE0YWI1ZDFhMDQ5MTU5OGM2MGIxNmUuLjQ0NTVjN2E0Njk3ZGJiNDE5NGI5MDBhZDNhYjNkNzNk
YmM2MmUyMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTI5IEBACisyMDE4LTA0LTE5ICBCcmlhbiBC
dXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBBdXRvbWF0aW9uOiBhZGQgc3Vw
cG9ydCBmb3IgbW91c2Uva2V5Ym9hcmQgaW50ZXJhY3Rpb24gc2VxdWVuY2VzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQ2MDMKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzM5NDIxODM5PgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0
Y2hlci4KKworICAgICAgICBBZGQgbmV3IHByb3RvY29sIG1ldGhvZHMgYW5kIFdlYktpdCBzdXBw
b3J0IGZvciBpbXBsZW1lbnRpbmcgdGhlIFczQyBBY3Rpb25zIEFQSS4KKyAgICAgICAgVGhpcyBp
cyBhIGdlbmVyaWMgY29tbWFuZCBmb3Igc2VuZGluZyBsb3ctbGV2ZWwgbW91c2UsIGtleSwgYW5k
IHRvdWNoIGV2ZW50cyB0bworICAgICAgICB0ZXN0IHBhZ2UgYmVoYXZpb3Igd2hlbiBwZXJmb3Jt
aW5nIGRyYWctYW5kLWRyb3AsIGdlc3R1cmVzLCBvciBzcGVjaWZpYyBrZXlkb3duL2tleXVwcy4K
KworICAgICAgICBUbyBpbXBsZW1lbnQgdGhpcyBmdW5jdGlvbmFsaXR5LCB0aGlzIHBhdGNoIGFk
ZHMgU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLCBhIGNsYXNzCisgICAgICAgIGZvciBkaXNwYXRj
aGluZyBpbnB1dCBldmVudHMgYXN5bmNocm9ub3VzbHkuIFNpbWlsYXIgdG8gdGhlIFdlYkRyaXZl
ciBzcGVjaWZpY2F0aW9uLAorICAgICAgICB0aGlzIGlzIGRlc2lnbmVkIGFzIGEga2V5ZnJhbWlu
ZyBBUEkuIENhbGxlcnMgc2V0IHVwIHNldmVyYWwgImlucHV0IHNvdXJjZXMiIHN1Y2gKKyAgICAg
ICAgYXMga2V5Ym9hcmQgb3IgbW91c2UsIGFuZCB0aGVuIHNwZWNpZnkgdGhlIHN0YXRlcyBvZiB0
aGF0IGlucHV0IHNvdXJjZSBvdmVyIHRpbWUuIFRoZQorICAgICAgICBkaXNwYXRjaGVyIGNhbGN1
bGF0ZXMgZGlmZnMgYmV0d2VlbiB0aGUgcHJldmlvdXMgYW5kIGN1cnJlbnQga2V5ZnJhbWVzIGFu
ZCBnZW5lcmF0ZXMKKyAgICAgICAgdGhlIGFwcHJvcHJpYXRlIGV2ZW50cyB0aGF0IHdvdWxkIGhh
cHBlbiBpZiBhIHVzZXIgY2F1c2VkIHRoZSBzdGF0ZSB0cmFuc2l0aW9uLgorCisgICAgICAgIEZv
ciBleGFtcGxlLCBpZiBhIG1vdXNlIGlucHV0IHNvdXJjZSdzIHN0YXRlIGNoYW5nZXMsIHRoZSBk
aXNwYXRjaGVyIHNlbmRzIHN5bnRoZXRpYyBtb3VzZW1vdmUsCisgICAgICAgIG1vdXNlZG93biwg
b3IgbW91c2V1cCBldmVudHMgZGVwZW5kaW5nIG9uIHRoZSBwcmUtIGFuZCBwb3N0LXN0YXRlLiBU
aGlzIGlzIHVuaW50ZXJlc3RpbmcKKyAgICAgICAgYW5kIG92ZXJjb21wbGljYXRlZCBmb3Igc2lt
cGxlIGtleSBhbmQgbW91c2UgcHJlc3NlcywgYnV0IGl0J3MgcmVhbGx5IGRlc2lnbmVkIHdpdGgg
YW4KKyAgICAgICAgZXllIHRvd2FyZHMgc3VwcG9ydGluZyBtb3VzZW1vdmUgaW50ZXJwb2xhdGlv
biBhbmQgdG91Y2ggZXZlbnQgaW50ZXJwb2xhdGlvbiBpbiBsYXRlciBwYXRjaGVzLgorCisgICAg
ICAgIFRoZSBzdHJhdGVneSBmb3IgZGlzcGF0Y2hpbmcgZXZlbnRzIGRlcGVuZHMgb24gdGhlIGlu
cHV0IHNvdXJjZSB0eXBlOyByaWdodCBub3csIHRoZXNlCisgICAgICAgIG1hcCBkaXJlY3RseSB0
byB0aGUgZXhpc3RpbmcgcGxhdGZvcm1TaW11bGF0ZXtNb3VzZSwgS2V5Ym9hcmR9SW50ZXJhY3Rp
b24gbWV0aG9kcy4gSW4KKyAgICAgICAgdGhlIGZ1dHVyZSwgdGhlIGRpc3BhdGNoIHN0cmF0ZWd5
IG1heSBiZSBlbGFib3JhdGVkIGZvciBpbnRlcnBvbGF0ZWQgbW91c2Vtb3ZlIGV2ZW50cy4KKwor
ICAgICAgICBUaGlzIHBhdGNoIGRlcGVuZHMgb24gc3VwcG9ydCBhZGRlZCBpbiBidWcgMTg0NDYy
LgorCisgICAgICAgIE5vIHRlc3RzIHlldC4gV2hlbiB0aGlzIGNvbW1hbmQgaXMgaG9va2VkIHVw
IHRvIGEgZHJpdmVyLCB0aGUgY29kZSB3aWxsIGJlIGV4ZXJjaXNlZCBieQorICAgICAgICBXM0Mg
YWN0aW9ucyB0ZXN0IHN1aXRlLCB3aGljaCBpcyBmYWlybHkgY29tcGxleCBhdCB0aGlzIHBvaW50
IHJlbGF0aXZlIHRvIGVuZC11c2VyIGNvZGUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21h
dGlvbi9BdXRvbWF0aW9uLmpzb246IEFkZCBuZXcgdHlwZXMgYW5kIGNvbW1hbmRzLgorCisgICAg
ICAgICogVUlQcm9jZXNzL0F1dG9tYXRpb24vU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0OjpTaW11bGF0ZWRJbnB1dFNvdXJjZVN0YXRlOjplbXB0eVN0
YXRlKToKKyAgICAgICAgKFdlYktpdDo6U2ltdWxhdGVkSW5wdXRTb3VyY2U6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlNpbXVsYXRlZElucHV0U291cmNlOjpTaW11bGF0ZWRJbnB1dFNvdXJj
ZSk6CisgICAgICAgIChXZWJLaXQ6OlNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6Q2xpZW50Ojp+
Q2xpZW50KToKKyAgICAgICAgQWRkIHN0cnVjdHMgZm9yIGlucHV0IHNvdXJjZSwgc291cmNlIHN0
YXRlLCBhbmQga2V5ZnJhbWUuCisgICAgICAgIFRoZSBkaXNwYXRjaGVyJ3MgY2xpZW50IGludGVy
ZmFjZSBpcyBpbXBsZW1lbnRlZCBieSBXZWJBdXRvbWF0aW9uU2Vzc2lvbi4KKworICAgICAgICAo
V2ViS2l0OjpTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OmNyZWF0ZSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0F1dG9tYXRpb24vU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQ6OlNpbXVsYXRlZElucHV0S2V5RnJhbWU6OlNpbXVsYXRlZElucHV0S2V5
RnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpTaW11bGF0ZWRJbnB1dEtleUZyYW1lOjptYXhpbXVt
RHVyYXRpb24gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTaW11bGF0ZWRJbnB1dEtleUZyYW1l
OjprZXlGcmFtZUZyb21TdGF0ZU9mSW5wdXRTb3VyY2VzKToKKyAgICAgICAgKFdlYktpdDo6U2lt
dWxhdGVkSW5wdXRLZXlGcmFtZTo6a2V5RnJhbWVUb1Jlc2V0SW5wdXRTb3VyY2VzKToKKyAgICAg
ICAgKFdlYktpdDo6U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjpTaW11bGF0ZWRJbnB1dERpc3Bh
dGNoZXIpOgorICAgICAgICAoV2ViS2l0OjpTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6On5TaW11
bGF0ZWRJbnB1dERpc3BhdGNoZXIpOgorICAgICAgICAoV2ViS2l0OjpTaW11bGF0ZWRJbnB1dERp
c3BhdGNoZXI6OmlzQWN0aXZlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6U2ltdWxhdGVkSW5w
dXREaXNwYXRjaGVyOjprZXlGcmFtZVRyYW5zaXRpb25EdXJhdGlvblRpbWVyRmlyZWQpOgorICAg
ICAgICAoV2ViS2l0OjpTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OmlzS2V5RnJhbWVUcmFuc2l0
aW9uQ29tcGxldGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTaW11bGF0ZWRJbnB1dERpc3Bh
dGNoZXI6OnRyYW5zaXRpb25Ub05leHRLZXlGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlNpbXVs
YXRlZElucHV0RGlzcGF0Y2hlcjo6dHJhbnNpdGlvblRvTmV4dElucHV0U291cmNlU3RhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OnRyYW5zaXRpb25CZXR3
ZWVuS2V5RnJhbWVzKToKKyAgICAgICAgKFdlYktpdDo6U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVy
Ojp0cmFuc2l0aW9uSW5wdXRTb3VyY2VUb1N0YXRlKToKKyAgICAgICAgKFdlYktpdDo6U2ltdWxh
dGVkSW5wdXREaXNwYXRjaGVyOjpydW4pOgorICAgICAgICAoV2ViS2l0OjpTaW11bGF0ZWRJbnB1
dERpc3BhdGNoZXI6OmNhbmNlbCk6CisgICAgICAgIChXZWJLaXQ6OlNpbXVsYXRlZElucHV0RGlz
cGF0Y2hlcjo6ZmluaXNoRGlzcGF0Y2hpbmcpOgorICAgICAgICBUaGUgZGlzcGF0Y2hlciBoYW5k
bGVzIG9uZSBpbnRlcmFjdGlvbiBhdCBhIHRpbWUuIFRoZSBpbnRlcmFjdGlvbiBpcyBkZXNjcmli
ZWQKKyAgICAgICAgYnkgYW4gYXJyYXkgb2Yga2V5ZnJhbWVzLCBhbmQgZWFjaCBrZXlmcmFtZSBo
YXMgYW4gYXJyYXkgb2Ygc3RhdGVzLiBUaGUgZGlzcGF0Y2hlcgorICAgICAgICB0cmFuc2l0aW9u
cyBiZXR3ZWVuIGtleWZyYW1lcyBieSBzZXF1ZW50aWFsbHkgYW5kIGFzeW5jaHJvbm91c2x5IGVt
aXR0aW5nIGV2ZW50cworICAgICAgICB0aGF0IGNhdXNlIGVhY2ggaW5wdXQgc291cmNlIHN0YXRl
IHRvIHRyYW5zaXRpb24gYXMgZGVzaXJlZC4gS2V5ZnJhbWUgdHJhbnNpdGlvbnMKKyAgICAgICAg
YXJlIGFkZGl0aW9uYWxseSBnYXRlZCBieSBhICJtYXhpbXVtIGR1cmF0aW9uIiB0aW1lci4gRWFj
aCBzdGVwIHRoYXQgdGhlIGRpc3BhdGNoZXIKKyAgICAgICAgZXhlY3V0ZXMgaXMgYXN5bmNocm9u
b3VzLCBzbyB0aGUgZGlzcGF0Y2hlciBrZWVwcyBtb3N0IHN0YXRlIGluIG1lbWJlcnMgYW5kIHVz
ZXMKKyAgICAgICAgZXJyb3IgYXJndW1lbnQgbGFtYmRhcyBhcyBjb21wbGV0aW9uIGhhbmRsZXJz
IGZvciB2YXJpb3VzIGFzeW5jIHRoaW5ncy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0
aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRp
b24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0
aW9uU2Vzc2lvbjo6V2ViQXV0b21hdGlvblNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJB
dXRvbWF0aW9uU2Vzc2lvbjo6aW5wdXREaXNwYXRjaGVyRm9yUGFnZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjppbnB1dFNvdXJjZUZvclR5cGUgY29uc3QpOgorICAg
ICAgICBBZGQgY2Fub25pY2FsIGlucHV0IHNvdXJjZXMgdGhhdCBhcmUgdXNlZCB0byBrZWVwIHRy
YWNrIG9mIHN0YXRlIGFjcm9zcworICAgICAgICBpbnRlcmFjdGlvbiBzZXF1ZW5jZXMuCisKKyAg
ICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OmlzU2ltdWxhdGluZ1VzZXJJbnRl
cmFjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpt
b3VzZUV2ZW50c0ZsdXNoZWRGb3JQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlv
blNlc3Npb246OmtleWJvYXJkRXZlbnRzRmx1c2hlZEZvclBhZ2UpOgorICAgICAgICBSZW1vdmUg
bV9zaW11bGF0aW5nVXNlckludGVyYWN0aW9uIHNpbmNlIGl0IGNhbiBiZSBjb21wdXRlZCBiYXNl
ZCBvbiBvdGhlciBtZW1iZXJzLgorCisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNz
aW9uOjp3aWxsQ2xvc2VQYWdlKToKKyAgICAgICAgSWYgdGhlIHBhZ2UgaXMgYmVpbmcgdG9ybiBk
b3duLCBzdG9wIHRoZSBkaXNwYXRjaGVyIGlmIG5lZWRlZCBhbmQgY2FuY2VsIGFueQorICAgICAg
ICBjYWxsYmFja3Mgd2FpdGluZyBmb3IgbW91c2Uva2V5IGV2ZW50cyB0byBiZSByZXRpcmVkLgor
CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpzaW11bGF0ZU1vdXNlSW50
ZXJhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6c2ltdWxh
dGVLZXlib2FyZEludGVyYWN0aW9uKToKKyAgICAgICAgQWRkIGVhc3ktdG8tdXNlIGFzeW5jIG1l
dGhvZHMgZm9yIHNpbXVsYXRpbmcgbW91c2UgYW5kIGtleSBldmVudHMuIFRoZXNlIGFyZQorICAg
ICAgICBob29rZWQgdXAgdG8gU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyIHVzaW5nIGFzeW5jIGNv
bXBsZXRpb24gaGFuZGxlcnMuCisKKyAgICAgICAgKFdlYktpdDo6cHJvdG9jb2xNb3VzZUJ1dHRv
blRvV2ViTW91c2VFdmVudEJ1dHRvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25T
ZXNzaW9uOjpwZXJmb3JtTW91c2VJbnRlcmFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkF1
dG9tYXRpb25TZXNzaW9uOjpwZXJmb3JtS2V5Ym9hcmRJbnRlcmFjdGlvbnMpOgorICAgICAgICBB
ZGp1c3Qgc29tZSBuYW1pbmcuCisKKyAgICAgICAgKFdlYktpdDo6c2ltdWxhdGVkSW5wdXRTb3Vy
Y2VUeXBlRnJvbVByb3RvY29sU291cmNlVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9t
YXRpb25TZXNzaW9uOjpwZXJmb3JtSW50ZXJhY3Rpb25TZXF1ZW5jZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpjYW5jZWxJbnRlcmFjdGlvblNlcXVlbmNlKToKKyAg
ICAgICAgQWRkIGNvbW1hbmQgaGFuZGxlcnMgZm9yIHRoZSBuZXcgYWN0aW9uIGNvbW1hbmRzIGlu
IEF1dG9tYXRpb24gcHJvdG9jb2wuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9n
dGsvV2ViQXV0b21hdGlvblNlc3Npb25HdGsuY3BwOgorICAgICAgICAoV2ViS2l0Ojptb3VzZUJ1
dHRvblRvR2RrQnV0dG9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246
OnBsYXRmb3JtU2ltdWxhdGVNb3VzZUludGVyYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
QXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVLZXlib2FyZEludGVyYWN0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVL
ZXlTdHJva2UpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL2lvcy9X
ZWJBdXRvbWF0aW9uU2Vzc2lvbklPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlv
blNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVLZXlib2FyZEludGVyYWN0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVLZXlTdHJva2Up
OiBEZWxldGVkLgorICAgICAgICBSZW5hbWUgdGhlIGtleWJvYXJkIHBsYXRmb3JtIG1ldGhvZCB0
byBtYXRjaCB0aGUgbmFtaW5nIG9mIHRoZSBtb3VzZSBwbGF0Zm9ybSBtZXRob2QuCisgICAgICAg
IFRha2UgYWR2YW50YWdlIG9mIHRoZSAndXNpbmcnIGFsaWFzIHRvIG1ha2UgdGhlIHRlZGlvdXMg
c3dpdGNoZXMgZWFzaWVyIHRvIHJlYWQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlv
bi9tYWMvV2ViQXV0b21hdGlvblNlc3Npb25NYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYkF1
dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlTW91c2VJbnRlcmFjdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OnZpcnR1YWxLZXlIYXNTdGlja3lNb2RpZmllcik6CisgICAgICAgIChXZWJL
aXQ6OmtleUNvZGVGb3JWaXJ0dWFsS2V5KToKKyAgICAgICAgKFdlYktpdDo6ZXZlbnRNb2RpZmll
ckZsYWdzRm9yVmlydHVhbEtleSk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNz
aW9uOjpwbGF0Zm9ybVNpbXVsYXRlS2V5Ym9hcmRJbnRlcmFjdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlS2V5U2VxdWVuY2UpOgor
ICAgICAgICAoV2ViS2l0OjprZXlIYXNTdGlja3lNb2RpZmllcik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlS2V5U3Ryb2tl
KTogRGVsZXRlZC4KKyAgICAgICAgQWxsb3cgdGhlIGtleWJvYXJkIHNpbXVsYXRpb24gbWV0aG9k
IHRvIHRha2UgYSB2aXJ0dWFsIGtleSBhbmQgdW5pY2hhciB0byBiZXR0ZXIKKyAgICAgICAgbWF0
Y2ggaG93IHRoaXMgaXMgdXNlZCBieSB0aGUgUGVyZm9ybSBBY3Rpb25zIGNvbW1hbmQgYW5kIGl0
cyBtYWNoaW5lcnkuCisKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKwogMjAxOC0wNC0xOSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAg
ICAgICAgV2ViIEluc3BlY3RvciBiYWNrZW5kIHNob3VsZCBnZXQgaGVhZGVycyAmIGNvb2tpZXMg
ZnJvbSBuZXR3b3JrIHByb2Nlc3Mgc2VwYXJhdGVseSBmcm9tIHJlc291cmNlIHJlcXVlc3RzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL0F1dG9tYXRpb24u
anNvbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vQXV0b21hdGlvbi5qc29u
CmluZGV4IDdlODZkMTQ5YzI1YzE5MTQwNDIxZDM4ODRhNTFiYjZjMGY5ZTYyOTAuLmMzMTdlMWEy
NjIwZDlkZTdjYTZjOGFhNjNhZDMyODcwOWIxMjZiZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vQXV0b21hdGlvbi5qc29uCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vQXV0b21hdGlvbi5qc29uCkBAIC03Miw3ICs3Miw4IEBA
CiAgICAgICAgICAgICAgICAgIkVsZW1lbnROb3RJbnRlcmFjdGFibGUiLAogICAgICAgICAgICAg
ICAgICJFbGVtZW50Tm90U2VsZWN0YWJsZSIsCiAgICAgICAgICAgICAgICAgIlNjcmVlbnNob3RF
cnJvciIsCi0gICAgICAgICAgICAgICAgIlVuZXhwZWN0ZWRBbGVydE9wZW4iCisgICAgICAgICAg
ICAgICAgIlVuZXhwZWN0ZWRBbGVydE9wZW4iLAorICAgICAgICAgICAgICAgICJUYXJnZXRPdXRP
ZkJvdW5kcyIKICAgICAgICAgICAgIF0KICAgICAgICAgfSwKICAgICAgICAgewpAQCAtMjQ0LDYg
KzI0NSw0NiBAQAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicGVybWlzc2lvbiIsICIkcmVm
IjogIlNlc3Npb25QZXJtaXNzaW9uIiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidmFs
dWUiLCAidHlwZSI6ICJib29sZWFuIiB9CiAgICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAg
ICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJJbnB1dFNvdXJjZVR5cGUiLAorICAgICAgICAgICAg
InR5cGUiOiAic3RyaW5nIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJUaGUgdHlwZSBv
ZiBhbiBpbnB1dCBzb3VyY2UuIFRoaXMgZGV0ZXJtaW5lcyB3aGljaCBzdGF0ZSBwcm9wZXJ0aWVz
IGFyZSBhcHBsaWNhYmxlIHRvIHRoZSBpbnB1dCBzb3VyY2UuIFRoZSAnTnVsbCcgaW5wdXQgc291
cmNlIHR5cGUgaGFzIG5vIHByb3BlcnRpZXMsIG9ubHkgYSBkdXJhdGlvbi4gVGhpcyBjYW4gZXh0
ZW5kIHRoZSBlZmZlY3RpdmUgd2FpdCBmb3IgYSB0aWNrLiIsCisgICAgICAgICAgICAiZW51bSI6
IFsKKyAgICAgICAgICAgICAgICAiTnVsbCIsCisgICAgICAgICAgICAgICAgIk1vdXNlIiwKKyAg
ICAgICAgICAgICAgICAiS2V5Ym9hcmQiLAorICAgICAgICAgICAgICAgICJUb3VjaCIKKyAgICAg
ICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgImlkIjogIklucHV0
U291cmNlIiwKKyAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCisgICAgICAgICAgICAicHJv
cGVydGllcyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNvdXJjZUlkIiwgInR5cGUi
OiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIkEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoaXMg
aW5wdXQgc291cmNlLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNvdXJjZVR5cGUi
LCAiJHJlZiI6ICJJbnB1dFNvdXJjZVR5cGUiLCAiZGVzY3JpcHRpb24iOiAiVGhlIHR5cGUgb2Yg
dGhpcyBpbnB1dCBzb3VyY2UuIFRoaXMgYWZmZWN0cyB3aGF0IGlucHV0IHNvdXJjZSBzdGF0ZSBm
aWVsZHMgYXJlIHZhbGlkIGZvciB0aGlzIGlucHV0IHNvdXJjZS4iIH0KKyAgICAgICAgICAgIF0K
KyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgImlkIjogIkludGVyYWN0aW9uU3Rl
cCIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQSBzZXQgb2YgaW5wdXQgc291cmNlIHN0
YXRlcyB0byB3aGljaCBhbGwgYXBwbGljYWJsZSBpbnB1dCBzb3VyY2VzIG11c3QgdHJhbnNpdGlv
biBiZWZvcmUgZnVydGhlciBzdGVwcyBtYXkgYmUgcHJvY2Vzc2VkLiBJZiBhbiBpbnB1dCBzb3Vy
Y2UgZG9lcyBub3QgaGF2ZSBhIGNvcnJlc3BvbmRpbmcgc3RhdGUgaW4gYSBzdGVwLCBpdHMgc3Rh
dGUgYXNzdW1lZCB0byBiZSAncmVsZWFzZWQnIGZvciB0aGF0IHN0ZXAuIiwKKyAgICAgICAgICAg
ICJ0eXBlIjogIm9iamVjdCIsCisgICAgICAgICAgICAicHJvcGVydGllcyI6IFsKKyAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogInN0YXRlcyIsICJ0eXBlIjogImFycmF5IiwgIml0ZW1zIjogeyAi
JHJlZiI6ICJJbnB1dFNvdXJjZVN0YXRlIiB9LCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRp
b24iOiAiQSBsaXN0IG9mIG5ldyBpbnB1dCBzdGF0ZXMgZm9yIGlucHV0IHNvdXJjZXMgdGhhdCBt
dXN0IHRyYW5zaXRpb24gZHVyaW5nIHRoaXMgc3RlcC4gU291cmNlIHN0YXRlIHRyYW5zaXRpb25z
IHRoYXQgY2Fubm90IGJlIHBlcmZvcm1lZCBjb25jdXJyZW50bHkgKGkuZS4sIHRvdWNoIGdlc3R1
cmVzKSBhcmUgcGVyZm9ybWVkIHNlcXVlbnRpYWxseSBpbiB0aGUgb3JkZXIgdGhleSBhcmUgbGlz
dGVkLiIgfQorICAgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAg
ICAiaWQiOiAiSW5wdXRTb3VyY2VTdGF0ZSIsCisgICAgICAgICAgICAidHlwZSI6ICJvYmplY3Qi
LAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkEgbmV3IHN0YXRlIGZvciBhIHNwZWNpZmlj
IGlucHV0IHNvdXJjZS4gQWxsIHN0YXRlLXJlbGF0ZWQgZmllbGRzIGFyZSBvcHRpb25hbCBhbmQg
bXVzdCBiZSBhcHBsaWNhYmxlIHRvIHRoZSBJbnB1dFNvdXJjZSByZWZlcmVuY2VkIGJ5ICdzb3Vy
Y2VJZCcuIElmIG5vIHN0YXRlLXJlbGF0ZWQgZmllbGRzIGFyZSBzcGVjaWZpZWQsIHRoZSBzdGF0
ZSBpcyBhc3N1bWVkIHRvIHJlbWFpbiB0aGUgc2FtZSBhcyBpbiB0aGUgcHJldmlvdXMgc3RlcCAo
aS5lLiwgJ3N1c3RhaW5lZCcpLiIsCisgICAgICAgICAgICAicHJvcGVydGllcyI6IFsKKyAgICAg
ICAgICAgICAgICB7ICJuYW1lIjogInNvdXJjZUlkIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2Ny
aXB0aW9uIjogIlRoZSBpbnB1dCBzb3VyY2Ugd2hvc2Ugc3RhdGUgaXMgZGVzY3JpYmVkIGJ5IHRo
aXMgb2JqZWN0LiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInByZXNzZWRDaGFyS2V5
IiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIkZv
ciAna2V5Ym9hcmQnIGlucHV0IHNvdXJjZXMsIHNwZWNpZmllcyBhIGNoYXJhY3RlciBrZXkgdGhh
dCBoYXMgJ3ByZXNzZWQnIHN0YXRlLiBVbm1lbnRpb25lZCBjaGFyYWN0ZXIga2V5cyBhcmUgYXNz
dW1lZCB0byBoYXZlIGEgJ3JlbGVhc2VkJyBzdGF0ZS4iIH0sCisgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJwcmVzc2VkVmlydHVhbEtleSIsICIkcmVmIjogIlZpcnR1YWxLZXkiLCAib3B0aW9u
YWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiRm9yICdrZXlib2FyZCcgaW5wdXQgc291cmNlcywg
c3BlY2lmaWVzIGEgdmlydHVhbCBrZXkgdGhhdCBoYXMgYSAncHJlc3NlZCcgc3RhdGUuIFVubWVu
dGlvbmVkIHZpcnR1YWwga2V5cyBhcmUgYXNzdW1lZCB0byBoYXZlIGEgJ3JlbGVhc2VkJyBzdGF0
ZS4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJwcmVzc2VkQnV0dG9uIiwgIiRyZWYi
OiAiTW91c2VCdXR0b24iLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiRm9yICdt
b3VzZScgaW5wdXQgc291cmNlcywgc3BlY2lmaWVzIHdoaWNoIG1vdXNlIGJ1dHRvbiBoYXMgYSAn
cHJlc3NlZCcgc3RhdGUuIFVubWVudGlvbmVkIG1vdXNlIGJ1dHRvbnMgYXJlIGFzc3VtZWQgdG8g
aGF2ZSBhICdyZWxlYXNlZCcgc3RhdGUuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
bG9jYXRpb24iLCAiJHJlZiI6ICJQb2ludCIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlv
biI6ICJGb3IgJ21vdXNlJyBvciAndG91Y2gnIGlucHV0IHNvdXJjZXMsIHNwZWNpZmllcyBhIGxv
Y2F0aW9uIGluIHZpZXcgY29vcmRpbmF0ZXMgdG8gd2hpY2ggdGhlIGlucHV0IHNvdXJjZSBzaG91
bGQgdHJhbnNpdGlvbi4gVHJhbnNpdGlvbmluZyB0byB0aGlzIHN0YXRlIG1heSBpbnRlcnBvbGF0
ZSBpbnRlbWVkaWF0ZSBpbnB1dCBzb3VyY2Ugc3RhdGVzIHRvIGJldHRlciBzaW11bGF0ZSByZWFs
IHVzZXIgbW92ZW1lbnRzIGFuZCBnZXN0dXJlcy4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJkdXJhdGlvbiIsICJ0eXBlIjogImludGVnZXIiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVz
Y3JpcHRpb24iOiAiVGhlIG1pbmltdW0gbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0aGF0IG11c3Qg
ZWxhcHNlIHdoaWxlIHRoZSByZWxldmFudCBpbnB1dCBzb3VyY2UgdHJhbnNpdGlvbnMgdG8gdGhp
cyBzdGF0ZS4iIH0KKyAgICAgICAgICAgIF0KICAgICAgICAgfQogICAgIF0sCiAgICAgImNvbW1h
bmRzIjogWwpAQCAtNDEzLDYgKzQ1NCwyNCBAQAogICAgICAgICAgICAgXSwKICAgICAgICAgICAg
ICJhc3luYyI6IHRydWUKICAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUi
OiAicGVyZm9ybUludGVyYWN0aW9uU2VxdWVuY2UiLAorICAgICAgICAgICAgImRlc2NyaXB0aW9u
IjogIlBlcmZvcm0gbXVsdGlwbGUgc2ltdWxhdGVkIGludGVyYWN0aW9ucyBvdmVyIHRpbWUgdXNp
bmcgYSBsaXN0IG9mIGlucHV0IHNvdXJjZXMgYW5kIGEgbGlzdCBvZiBzdGVwcywgd2hlcmUgZWFj
aCBzdGVwIHNwZWNpZmllcyBhIHN0YXRlIGZvciBlYWNoIGlucHV0IHNvdXJjZSBhdCB0aGUgdGlt
ZSB0aGF0IHN0ZXAgaXMgcGVyZm9ybWVkLiIsCisgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsK
KyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImhhbmRsZSIsICIkcmVmIjogIkJyb3dzaW5nQ29u
dGV4dEhhbmRsZSIsICJkZXNjcmlwdGlvbiI6ICJUaGUgYnJvd3NpbmcgY29udGV4dCB0byBiZSBp
bnRlcmFjdGVkIHdpdGguIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaW5wdXRTb3Vy
Y2VzIiwgInR5cGUiOiAiYXJyYXkiLCAiaXRlbXMiOiB7ICIkcmVmIjogIklucHV0U291cmNlIiB9
LCAiZGVzY3JpcHRpb24iOiAiQWxsIGlucHV0IHNvdXJjZXMgdGhhdCBhcmUgdXNlZCB0byBwZXJm
b3JtIHRoaXMgaW50ZXJhY3Rpb24gc2VxdWVuY2UuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAic3RlcHMiLCAidHlwZSI6ICJhcnJheSIsICJpdGVtcyI6IHsgIiRyZWYiOiAiSW50ZXJh
Y3Rpb25TdGVwIiB9LCAiZGVzY3JpcHRpb24iOiAiQSBsaXN0IG9mIHN0ZXBzIHRoYXQgYXJlIGV4
ZWN1dGVkIGluIG9yZGVyLiIgfQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJhc3luYyI6
IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiY2FuY2Vs
SW50ZXJhY3Rpb25TZXF1ZW5jZSIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ2FuY2Vs
IGFuIGFjdGl2ZSBpbnRlcmFjdGlvbiBzZXF1ZW5jZSB0aGF0IGlzIGN1cnJlbnRseSBpbiBwcm9n
cmVzcy4iLAorICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJoYW5kbGUiLCAiJHJlZiI6ICJCcm93c2luZ0NvbnRleHRIYW5kbGUiLCAiZGVzY3Jp
cHRpb24iOiAiVGhlIGJyb3dzaW5nIGNvbnRleHQgdG8gYmUgaW50ZXJhY3RlZCB3aXRoLiIgfQor
ICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJhc3luYyI6IHRydWUKKyAgICAgICAgfSwKICAg
ICAgICAgewogICAgICAgICAgICAgIm5hbWUiOiAidGFrZVNjcmVlbnNob3QiLAogICAgICAgICAg
ICAgImRlc2NyaXB0aW9uIjogIlRha2UgYSBzY3JlZW5zaG90IG9mIHRoZSBjdXJyZW50IHBhZ2Ug
b3IgZ2l2ZW4gZWxlbWVudCBpbiBhIGJyb3dzaW5nIGNvbnRleHQuIiwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vU2ltdWxhdGVkSW5wdXRE
aXNwYXRjaGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZDU4MmJiNjBhNjI3MTFhMzYyOTA2MWJlOTI4NDNj
NjJlMDI5NjEyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0
b21hdGlvbi9TaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuY3BwCkBAIC0wLDAgKzEsMjcyIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNpbXVsYXRlZElucHV0
RGlzcGF0Y2hlci5oIgorCisjaW5jbHVkZSAiQXV0b21hdGlvblByb3RvY29sT2JqZWN0cy5oIgor
I2luY2x1ZGUgIldlYkF1dG9tYXRpb25TZXNzaW9uLmgiCisjaW5jbHVkZSAiV2ViQXV0b21hdGlv
blNlc3Npb25NYWNyb3MuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1NpbXVsYXRlZElucHV0
S2V5RnJhbWU6OlNpbXVsYXRlZElucHV0S2V5RnJhbWUoVmVjdG9yPFN0YXRlRW50cnk+JiYgZW50
cmllcykKKyAgICA6IHN0YXRlcyhXVEZNb3ZlKGVudHJpZXMpKQoreworfQorCitTZWNvbmRzIFNp
bXVsYXRlZElucHV0S2V5RnJhbWU6Om1heGltdW1EdXJhdGlvbigpIGNvbnN0Cit7CisgICAgLy8g
VGhlICJjb21wdXRlIHRoZSB0aWNrIGR1cmF0aW9uIiBhbGdvcml0aG0gKMKnMTcuNCBEaXNwYXRj
aGluZyBBY3Rpb25zKS4KKyAgICBTZWNvbmRzIHJlc3VsdDsKKyAgICBmb3IgKGF1dG8mIGVudHJ5
IDogc3RhdGVzKQorICAgICAgICByZXN1bHQgPSBzdGQ6Om1heChyZXN1bHQsIGVudHJ5LnNlY29u
ZC5kdXJhdGlvbi52YWx1ZV9vcihTZWNvbmRzKDApKSk7CisgICAgCisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKworU2ltdWxhdGVkSW5wdXRLZXlGcmFtZSBTaW11bGF0ZWRJbnB1dEtleUZyYW1lOjpr
ZXlGcmFtZUZyb21TdGF0ZU9mSW5wdXRTb3VyY2VzKEhhc2hTZXQ8UmVmPFNpbXVsYXRlZElucHV0
U291cmNlPj4mIGlucHV0U291cmNlcykKK3sKKyAgICAvLyBUaGUgY2xpZW50IG9mIHRoaXMgY2xh
c3MgaXMgcmVxdWlyZWQgdG8gaW50ZXJuIFNpbXVsYXRlZElucHV0U291cmNlIGluc3RhbmNlcyBp
ZiB0aGUgbGFzdCBzdGF0ZQorICAgIC8vIGZyb20gdGhlIHByZXZpb3VzIGNvbW1hbmQgc2hvdWxk
IGJlIHVzZWQgYXMgdGhlIGluaXRhbCBzdGF0ZSBmb3IgdGhlIG5leHQgY29tbWFuZC4gVGhpcyBp
cyB0aGUKKyAgICAvLyBjYXNlIGZvciBQZXJmb3JtIEFjdGlvbnMgYW5kIFJlbGVhc2UgQWN0aW9u
cywgYnV0IG5vdCBFbGVtZW50IENsaWNrIG9yIEVsZW1lbnQgU2VuZCBLZXlzLgorICAgIFZlY3Rv
cjxTaW11bGF0ZWRJbnB1dEtleUZyYW1lOjpTdGF0ZUVudHJ5PiBlbnRyaWVzOworICAgIGVudHJp
ZXMucmVzZXJ2ZUNhcGFjaXR5KGlucHV0U291cmNlcy5zaXplKCkpOworCisgICAgZm9yIChhdXRv
JiBpbnB1dFNvdXJjZSA6IGlucHV0U291cmNlcykKKyAgICAgICAgZW50cmllcy51bmNoZWNrZWRB
cHBlbmQoc3RkOjpwYWlyPFNpbXVsYXRlZElucHV0U291cmNlJiwgU2ltdWxhdGVkSW5wdXRTb3Vy
Y2VTdGF0ZT4geyBpbnB1dFNvdXJjZS5nZXQoKSwgaW5wdXRTb3VyY2UtPnN0YXRlIH0pOworCisg
ICAgcmV0dXJuIFNpbXVsYXRlZElucHV0S2V5RnJhbWUoV1RGTW92ZShlbnRyaWVzKSk7Cit9CisK
K1NpbXVsYXRlZElucHV0S2V5RnJhbWUgU2ltdWxhdGVkSW5wdXRLZXlGcmFtZTo6a2V5RnJhbWVU
b1Jlc2V0SW5wdXRTb3VyY2VzKEhhc2hTZXQ8UmVmPFNpbXVsYXRlZElucHV0U291cmNlPj4mIGlu
cHV0U291cmNlcykKK3sKKyAgICBWZWN0b3I8U2ltdWxhdGVkSW5wdXRLZXlGcmFtZTo6U3RhdGVF
bnRyeT4gZW50cmllczsKKyAgICBlbnRyaWVzLnJlc2VydmVDYXBhY2l0eShpbnB1dFNvdXJjZXMu
c2l6ZSgpKTsKKworICAgIGZvciAoYXV0byYgaW5wdXRTb3VyY2UgOiBpbnB1dFNvdXJjZXMpCisg
ICAgICAgIGVudHJpZXMudW5jaGVja2VkQXBwZW5kKHN0ZDo6cGFpcjxTaW11bGF0ZWRJbnB1dFNv
dXJjZSYsIFNpbXVsYXRlZElucHV0U291cmNlU3RhdGU+IHsgaW5wdXRTb3VyY2UuZ2V0KCksIFNp
bXVsYXRlZElucHV0U291cmNlU3RhdGU6OmVtcHR5U3RhdGUoKSB9KTsKKworICAgIHJldHVybiBT
aW11bGF0ZWRJbnB1dEtleUZyYW1lKFdURk1vdmUoZW50cmllcykpOworfQorICAgIAorU2ltdWxh
dGVkSW5wdXREaXNwYXRjaGVyOjpTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIoV2ViUGFnZVByb3h5
JiBwYWdlLCBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OkNsaWVudCYgY2xpZW50KQorICAgIDog
bV9wYWdlKHBhZ2UpCisgICAgLCBtX2NsaWVudChjbGllbnQpCisgICAgLCBtX2tleUZyYW1lVHJh
bnNpdGlvbkR1cmF0aW9uVGltZXIoUnVuTG9vcDo6Y3VycmVudCgpLCB0aGlzLCAmU2ltdWxhdGVk
SW5wdXREaXNwYXRjaGVyOjprZXlGcmFtZVRyYW5zaXRpb25EdXJhdGlvblRpbWVyRmlyZWQpCit7
Cit9CisKK1NpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6flNpbXVsYXRlZElucHV0RGlzcGF0Y2hl
cigpCit7CisgICAgQVNTRVJUKCFtX3J1bkNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICBBU1NFUlQo
IW1fa2V5RnJhbWVUcmFuc2l0aW9uRHVyYXRpb25UaW1lci5pc0FjdGl2ZSgpKTsKK30KKworYm9v
bCBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OmlzQWN0aXZlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gISFtX3J1bkNvbXBsZXRpb25IYW5kbGVyOworfQorCit2b2lkIFNpbXVsYXRlZElucHV0RGlz
cGF0Y2hlcjo6a2V5RnJhbWVUcmFuc2l0aW9uRHVyYXRpb25UaW1lckZpcmVkKCkKK3sKKyAgICBB
U1NFUlQobV9rZXlGcmFtZVRyYW5zaXRpb25Db21wbGV0aW9uSGFuZGxlcik7CisKKyAgICBtX2tl
eUZyYW1lVHJhbnNpdGlvbkR1cmF0aW9uVGltZXIuc3RvcCgpOworCisgICAgaWYgKGlzS2V5RnJh
bWVUcmFuc2l0aW9uQ29tcGxldGUoKSkgeworICAgICAgICBhdXRvIGZpbmlzaCA9IHN0ZDo6ZXhj
aGFuZ2UobV9rZXlGcmFtZVRyYW5zaXRpb25Db21wbGV0aW9uSGFuZGxlciwgbnVsbHB0cik7Cisg
ICAgICAgIGZpbmlzaChzdGQ6Om51bGxvcHQpOworICAgIH0KK30KKworYm9vbCBTaW11bGF0ZWRJ
bnB1dERpc3BhdGNoZXI6OmlzS2V5RnJhbWVUcmFuc2l0aW9uQ29tcGxldGUoKSBjb25zdAorewor
ICAgIEFTU0VSVChtX2tleWZyYW1lSW5kZXggPCBtX2tleWZyYW1lcy5zaXplKCkpOworCisgICAg
aWYgKG1faW5wdXRTb3VyY2VTdGF0ZUluZGV4IDwgbV9rZXlmcmFtZXNbbV9rZXlmcmFtZUluZGV4
XS5zdGF0ZXMuc2l6ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobV9rZXlG
cmFtZVRyYW5zaXRpb25EdXJhdGlvblRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFNpbXVsYXRlZElucHV0RGlzcGF0
Y2hlcjo6dHJhbnNpdGlvblRvTmV4dEtleUZyYW1lKCkKK3sKKyAgICArK21fa2V5ZnJhbWVJbmRl
eDsKKyAgICBpZiAobV9rZXlmcmFtZUluZGV4ID09IG1fa2V5ZnJhbWVzLnNpemUoKSkgeworICAg
ICAgICBmaW5pc2hEaXNwYXRjaGluZyhzdGQ6Om51bGxvcHQpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgdHJhbnNpdGlvbkJldHdlZW5LZXlGcmFtZXMobV9rZXlmcmFtZXNbbV9rZXlm
cmFtZUluZGV4IC0gMV0sIG1fa2V5ZnJhbWVzW21fa2V5ZnJhbWVJbmRleF0sIFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKHN0ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1h
bmRFcnJvcj4gZXJyb3IpIHsKKyAgICAgICAgaWYgKGVycm9yKSB7CisgICAgICAgICAgICBmaW5p
c2hEaXNwYXRjaGluZyhlcnJvcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICB0cmFuc2l0aW9uVG9OZXh0S2V5RnJhbWUoKTsKKyAgICB9KTsKK30KKwordm9pZCBT
aW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OnRyYW5zaXRpb25Ub05leHRJbnB1dFNvdXJjZVN0YXRl
KCkKK3sKKyAgICBpZiAoaXNLZXlGcmFtZVRyYW5zaXRpb25Db21wbGV0ZSgpKSB7CisgICAgICAg
IGF1dG8gZmluaXNoID0gc3RkOjpleGNoYW5nZShtX2tleUZyYW1lVHJhbnNpdGlvbkNvbXBsZXRp
b25IYW5kbGVyLCBudWxscHRyKTsKKyAgICAgICAgZmluaXNoKHN0ZDo6bnVsbG9wdCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBJbiB0aGlzIGNhc2UsIHRyYW5zaXRpb25zIGFy
ZSBkb25lIGJ1dCB3ZSBuZWVkIHRvIHdhaXQgZm9yIHRoZSB0aWNrIHRpbWVyLgorICAgIGlmICht
X2lucHV0U291cmNlU3RhdGVJbmRleCA9PSBtX2tleWZyYW1lc1ttX2tleWZyYW1lSW5kZXhdLnN0
YXRlcy5zaXplKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8mIG5leHRLZXlGcmFtZSA9
IG1fa2V5ZnJhbWVzW21fa2V5ZnJhbWVJbmRleF07CisgICAgYXV0byYgcG9zdFN0YXRlRW50cnkg
PSBuZXh0S2V5RnJhbWUuc3RhdGVzW21faW5wdXRTb3VyY2VTdGF0ZUluZGV4XTsKKyAgICBTaW11
bGF0ZWRJbnB1dFNvdXJjZSYgaW5wdXRTb3VyY2UgPSBwb3N0U3RhdGVFbnRyeS5maXJzdDsKKwor
ICAgIHRyYW5zaXRpb25JbnB1dFNvdXJjZVRvU3RhdGUoaW5wdXRTb3VyY2UsIHBvc3RTdGF0ZUVu
dHJ5LnNlY29uZCwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oc3RkOjpv
cHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPiBlcnJvcikgeworICAgICAgICBpZiAoZXJy
b3IpIHsKKyAgICAgICAgICAgIGF1dG8gZmluaXNoID0gc3RkOjpleGNoYW5nZShtX2tleUZyYW1l
VHJhbnNpdGlvbkNvbXBsZXRpb25IYW5kbGVyLCBudWxscHRyKTsKKyAgICAgICAgICAgIGZpbmlz
aChlcnJvcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBQ
ZXJmb3JtIHN0YXRlIHRyYW5zaXRpb25zIGluIHRoZSBvcmRlciBzcGVjaWZpZWQgYnkgdGhlIGN1
cnJlbnRLZXlGcmFtZS4KKyAgICAgICAgKyttX2lucHV0U291cmNlU3RhdGVJbmRleDsKKworICAg
ICAgICB0cmFuc2l0aW9uVG9OZXh0SW5wdXRTb3VyY2VTdGF0ZSgpOworICAgIH0pOworfQorCit2
b2lkIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6dHJhbnNpdGlvbkJldHdlZW5LZXlGcmFtZXMo
Y29uc3QgU2ltdWxhdGVkSW5wdXRLZXlGcmFtZSYgYSwgY29uc3QgU2ltdWxhdGVkSW5wdXRLZXlG
cmFtZSYgYiwgQXV0b21hdGlvbkNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIp
Cit7CisgICAgbV9pbnB1dFNvdXJjZVN0YXRlSW5kZXggPSAwOworCisgICAgLy8gVGhlICJkaXNw
YXRjaCB0aWNrIGFjdGlvbnMiIGFsZ29yaXRobSAowqcxNy40IERpc3BhdGNoaW5nIEFjdGlvbnMp
LgorICAgIG1fa2V5RnJhbWVUcmFuc2l0aW9uQ29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKTsKKyAgICBtX2tleUZyYW1lVHJhbnNpdGlvbkR1cmF0aW9uVGltZXIu
c3RhcnRPbmVTaG90KGIubWF4aW11bUR1cmF0aW9uKCkpOworCisgICAgdHJhbnNpdGlvblRvTmV4
dElucHV0U291cmNlU3RhdGUoKTsKK30KKwordm9pZCBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6
OnRyYW5zaXRpb25JbnB1dFNvdXJjZVRvU3RhdGUoU2ltdWxhdGVkSW5wdXRTb3VyY2UmIGlucHV0
U291cmNlLCBjb25zdCBTaW11bGF0ZWRJbnB1dFNvdXJjZVN0YXRlJiBuZXdTdGF0ZSwgQXV0b21h
dGlvbkNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgLy8gTWFr
ZSBjYXNlcyBhbmQgY29uZGl0aW9uYWxzIG1vcmUgcmVhZGFibGUgYnkgYWxpYXNpbmcgcHJlL3Bv
c3Qgc3RhdGVzIGFzICdhJyBhbmQgJ2InLgorICAgIFNpbXVsYXRlZElucHV0U291cmNlU3RhdGUg
YSA9IGlucHV0U291cmNlLnN0YXRlOworICAgIFNpbXVsYXRlZElucHV0U291cmNlU3RhdGUgYiA9
IG5ld1N0YXRlOworCisgICAgQXV0b21hdGlvbkNvbXBsZXRpb25IYW5kbGVyIGV2ZW50RGlzcGF0
Y2hGaW5pc2hlZCA9IFsmaW5wdXRTb3VyY2UsICZuZXdTdGF0ZSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oc3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29t
bWFuZEVycm9yPiBlcnJvcikgeworICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKGVycm9yKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIGlucHV0U291cmNlLnN0YXRlID0gbmV3U3RhdGU7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7CisgICAgfTsKKworICAgIHN3aXRjaCAoaW5wdXRTb3Vy
Y2UudHlwZSkgeworICAgIGNhc2UgU2ltdWxhdGVkSW5wdXRTb3VyY2U6OlR5cGU6Ok51bGw6Cisg
ICAgICAgIC8vIFRoZSBtYXhpbXVtIGR1cmF0aW9uIGlzIGhhbmRsZWQgYXQgdGhlIGtleWZyYW1l
IGxldmVsIGJ5IG1fa2V5RnJhbWVUcmFuc2l0aW9uRHVyYXRpb25UaW1lci4KKyAgICAgICAgZXZl
bnREaXNwYXRjaEZpbmlzaGVkKHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgU2ltdWxhdGVkSW5wdXRTb3VyY2U6OlR5cGU6Ok1vdXNlOiB7CisgICAgICAgIC8vIFRoZSAi
ZGlzcGF0Y2ggYSBwb2ludGVye0Rvd24sVXAsTW92ZX0gYWN0aW9uIiBhbGdvcml0aG1zICjCpzE3
LjQgRGlzcGF0Y2hpbmcgQWN0aW9ucykuCisgICAgICAgIGlmICghYS5wcmVzc2VkTW91c2VCdXR0
b24gJiYgYi5wcmVzc2VkTW91c2VCdXR0b24pCisgICAgICAgICAgICBtX2NsaWVudC5zaW11bGF0
ZU1vdXNlSW50ZXJhY3Rpb24obV9wYWdlLCBNb3VzZUludGVyYWN0aW9uOjpEb3duLCBiLnByZXNz
ZWRNb3VzZUJ1dHRvbi52YWx1ZSgpLCBiLmxvY2F0aW9uLnZhbHVlKCksIFdURk1vdmUoZXZlbnRE
aXNwYXRjaEZpbmlzaGVkKSk7CisgICAgICAgIGVsc2UgaWYgKGEucHJlc3NlZE1vdXNlQnV0dG9u
ICYmICFiLnByZXNzZWRNb3VzZUJ1dHRvbikKKyAgICAgICAgICAgIG1fY2xpZW50LnNpbXVsYXRl
TW91c2VJbnRlcmFjdGlvbihtX3BhZ2UsIE1vdXNlSW50ZXJhY3Rpb246OlVwLCBhLnByZXNzZWRN
b3VzZUJ1dHRvbi52YWx1ZSgpLCBiLmxvY2F0aW9uLnZhbHVlKCksIFdURk1vdmUoZXZlbnREaXNw
YXRjaEZpbmlzaGVkKSk7CisgICAgICAgIGVsc2UgaWYgKGEubG9jYXRpb24gIT0gYi5sb2NhdGlv
bikgeworICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgZG9lcyBub3QgaW50ZXJwb2xhdGUgbW91
c2Vtb3ZlcyBwZXIgdGhlICJwZXJmb3JtIGEgcG9pbnRlciBtb3ZlIiBhbGdvcml0aG0gKMKnMTcu
NCBEaXNwYXRjaGluZyBBY3Rpb25zKS4KKyAgICAgICAgICAgIG1fY2xpZW50LnNpbXVsYXRlTW91
c2VJbnRlcmFjdGlvbihtX3BhZ2UsIE1vdXNlSW50ZXJhY3Rpb246Ok1vdmUsIGIucHJlc3NlZE1v
dXNlQnV0dG9uLnZhbHVlX29yKE1vdXNlQnV0dG9uOjpOb0J1dHRvbiksIGIubG9jYXRpb24udmFs
dWUoKSwgV1RGTW92ZShldmVudERpc3BhdGNoRmluaXNoZWQpKTsKKyAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICBldmVudERpc3BhdGNoRmluaXNoZWQoc3RkOjpudWxsb3B0KTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorICAgIGNhc2UgU2ltdWxhdGVkSW5wdXRTb3VyY2U6OlR5cGU6OktleWJv
YXJkOgorICAgICAgICAvLyBUaGUgImRpc3BhdGNoIGEga2V5e0Rvd24sVXB9IGFjdGlvbiIgYWxn
b3JpdGhtcyAowqcxNy40IERpc3BhdGNoaW5nIEFjdGlvbnMpLgorICAgICAgICBpZiAoKCFhLnBy
ZXNzZWRDaGFyS2V5ICYmIGIucHJlc3NlZENoYXJLZXkpIHx8ICghYS5wcmVzc2VkVmlydHVhbEtl
eSAmJiBiLnByZXNzZWRWaXJ0dWFsS2V5KSkKKyAgICAgICAgICAgIG1fY2xpZW50LnNpbXVsYXRl
S2V5Ym9hcmRJbnRlcmFjdGlvbihtX3BhZ2UsIEtleWJvYXJkSW50ZXJhY3Rpb246OktleVByZXNz
LCBiLnByZXNzZWRWaXJ0dWFsS2V5LCBiLnByZXNzZWRDaGFyS2V5LCBXVEZNb3ZlKGV2ZW50RGlz
cGF0Y2hGaW5pc2hlZCkpOworICAgICAgICBlbHNlIGlmICgoYS5wcmVzc2VkQ2hhcktleSAmJiAh
Yi5wcmVzc2VkQ2hhcktleSkgfHwgKGEucHJlc3NlZFZpcnR1YWxLZXkgJiYgIWIucHJlc3NlZFZp
cnR1YWxLZXkpKQorICAgICAgICAgICAgbV9jbGllbnQuc2ltdWxhdGVLZXlib2FyZEludGVyYWN0
aW9uKG1fcGFnZSwgS2V5Ym9hcmRJbnRlcmFjdGlvbjo6S2V5UmVsZWFzZSwgYS5wcmVzc2VkVmly
dHVhbEtleSwgYS5wcmVzc2VkQ2hhcktleSwgV1RGTW92ZShldmVudERpc3BhdGNoRmluaXNoZWQp
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZXZlbnREaXNwYXRjaEZpbmlzaGVkKHN0ZDo6
bnVsbG9wdCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2ltdWxhdGVkSW5wdXRTb3VyY2U6
OlR5cGU6OlRvdWNoOgorICAgICAgICAvLyBOb3Qgc3VwcG9ydGVkIHlldC4KKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGV2ZW50RGlzcGF0Y2hGaW5pc2hlZChBVVRPTUFU
SU9OX0NPTU1BTkRfRVJST1JfV0lUSF9OQU1FKE5vdEltcGxlbWVudGVkKSk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KK30KKwordm9pZCBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OnJ1bihWZWN0
b3I8U2ltdWxhdGVkSW5wdXRLZXlGcmFtZT4mJiBrZXlGcmFtZXMsIEhhc2hTZXQ8UmVmPFNpbXVs
YXRlZElucHV0U291cmNlPj4mIGlucHV0U291cmNlcywgQXV0b21hdGlvbkNvbXBsZXRpb25IYW5k
bGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUKCFpc0FjdGl2ZSgpKTsKKyAg
ICBpZiAoaXNBY3RpdmUoKSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihBVVRPTUFUSU9O
X0NPTU1BTkRfRVJST1JfV0lUSF9OQU1FKEludGVybmFsRXJyb3IpKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIG1fcnVuQ29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKTsKKyAgICBmb3IgKGNvbnN0IFJlZjxTaW11bGF0ZWRJbnB1dFNvdXJjZT4mIGlu
cHV0U291cmNlIDogaW5wdXRTb3VyY2VzKQorICAgICAgICBtX2lucHV0U291cmNlcy5hZGQoaW5w
dXRTb3VyY2UuY29weVJlZigpKTsKKworICAgIC8vIFRoZSAiZGlzcGF0Y2ggYWN0aW9ucyIgYWxn
b3JpdGhtICjCpzE3LjQgRGlzcGF0Y2hpbmcgQWN0aW9ucykuCisKKyAgICBtX2tleWZyYW1lcy5y
ZXNlcnZlQ2FwYWNpdHkoa2V5RnJhbWVzLnNpemUoKSArIDEpOworICAgIG1fa2V5ZnJhbWVzLmFw
cGVuZChTaW11bGF0ZWRJbnB1dEtleUZyYW1lOjprZXlGcmFtZUZyb21TdGF0ZU9mSW5wdXRTb3Vy
Y2VzKG1faW5wdXRTb3VyY2VzKSk7CisgICAgbV9rZXlmcmFtZXMuYXBwZW5kVmVjdG9yKFdURk1v
dmUoa2V5RnJhbWVzKSk7CisKKyAgICB0cmFuc2l0aW9uVG9OZXh0S2V5RnJhbWUoKTsKK30KKwor
dm9pZCBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OmNhbmNlbCgpCit7CisgICAgLy8gSWYgd2Ug
d2VyZSB3YWl0aW5nIGZvciBtX2NsaWVudCB0byBmaW5pc2ggYW4gaW50ZXJhY3Rpb24gYW5kIHRo
ZSBpbnRlcmFjdGlvbiBoYWQgYW4gZXJyb3IsCisgICAgLy8gdGhlbiB0aGUgcmVzdCBvZiB0aGUg
YXN5bmMgY2hhaW4gd2lsbCBoYXZlIGJlZW4gdG9ybiBkb3duLiBJZiB3ZSBhcmUganVzdCB3YWl0
aW5nIG9uIGEKKyAgICAvLyBkaXNwYXRjaCB0aW1lciwgdGhlbiB0aGlzIHdpbGwgY2FuY2VsIHRo
ZSB0aW1lciBhbmQgY2xlYXIKKworICAgIGlmIChpc0FjdGl2ZSgpKQorICAgICAgICBmaW5pc2hE
aXNwYXRjaGluZyhBVVRPTUFUSU9OX0NPTU1BTkRfRVJST1JfV0lUSF9OQU1FKEludGVybmFsRXJy
b3IpKTsKK30KKwordm9pZCBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OmZpbmlzaERpc3BhdGNo
aW5nKHN0ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4gZXJyb3IpCit7CisgICAg
bV9rZXlGcmFtZVRyYW5zaXRpb25EdXJhdGlvblRpbWVyLnN0b3AoKTsKKworICAgIGF1dG8gZmlu
aXNoID0gc3RkOjpleGNoYW5nZShtX3J1bkNvbXBsZXRpb25IYW5kbGVyLCBudWxscHRyKTsKKyAg
ICBtX2tleWZyYW1lcy5jbGVhcigpOworICAgIG1faW5wdXRTb3VyY2VzLmNsZWFyKCk7CisgICAg
bV9rZXlmcmFtZUluZGV4ID0gMDsKKyAgICBtX2lucHV0U291cmNlU3RhdGVJbmRleCA9IDA7CisK
KyAgICBmaW5pc2goZXJyb3IpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJraXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vU2ltdWxhdGVkSW5wdXREaXNw
YXRjaGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1NpbXVsYXRlZElu
cHV0RGlzcGF0Y2hlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2MDJjMmMyMjQwYmVhMWMwZmZlMGU5MGZhZDk4
ODFlMWQ1NGNiMjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
dXRvbWF0aW9uL1NpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5oCkBAIC0wLDAgKzEsMTYwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJXZWJFdmVudC5oIgorI2luY2x1
ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Cisj
aW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNp
bmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUgPHd0Zi9TZWNvbmRzLmg+CisjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1l
c3BhY2UgSW5zcGVjdG9yIHsgbmFtZXNwYWNlIFByb3RvY29sIHsgbmFtZXNwYWNlIEF1dG9tYXRp
b24geworZW51bSBjbGFzcyBFcnJvck1lc3NhZ2U7CitlbnVtIGNsYXNzIEtleWJvYXJkSW50ZXJh
Y3Rpb25UeXBlOworZW51bSBjbGFzcyBNb3VzZUludGVyYWN0aW9uOworZW51bSBjbGFzcyBWaXJ0
dWFsS2V5OworfSB9IH0KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIEF1dG9tYXRpb25D
b21tYW5kRXJyb3I7Cit1c2luZyBBdXRvbWF0aW9uQ29tcGxldGlvbkhhbmRsZXIgPSBXVEY6OkNv
bXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9y
Pik+OworCitjbGFzcyBXZWJQYWdlUHJveHk7CisKK3VzaW5nIEtleWJvYXJkSW50ZXJhY3Rpb24g
PSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpLZXlib2FyZEludGVyYWN0aW9uVHlw
ZTsKK3VzaW5nIFZpcnR1YWxLZXkgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpW
aXJ0dWFsS2V5OwordXNpbmcgQ2hhcktleSA9IGNoYXI7IC8vIEZvciBXZWJEcml2ZXIsIHRoaXMg
b25seSBuZWVkcyB0byBzdXBwb3J0IEFTQ0lJIGNoYXJhY3RlcnMgb24gMTAyLWtleSBrZXlib2Fy
ZC4KK3VzaW5nIE1vdXNlQnV0dG9uID0gV2ViTW91c2VFdmVudDo6QnV0dG9uOwordXNpbmcgTW91
c2VJbnRlcmFjdGlvbiA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlSW50
ZXJhY3Rpb247CisKK3N0cnVjdCBTaW11bGF0ZWRJbnB1dFNvdXJjZVN0YXRlIHsKKyAgICBzdGQ6
Om9wdGlvbmFsPENoYXJLZXk+IHByZXNzZWRDaGFyS2V5OworICAgIHN0ZDo6b3B0aW9uYWw8Vmly
dHVhbEtleT4gcHJlc3NlZFZpcnR1YWxLZXk7CisgICAgc3RkOjpvcHRpb25hbDxNb3VzZUJ1dHRv
bj4gcHJlc3NlZE1vdXNlQnV0dG9uOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SW50UG9p
bnQ+IGxvY2F0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gZHVyYXRpb247CisKKyAg
ICBzdGF0aWMgU2ltdWxhdGVkSW5wdXRTb3VyY2VTdGF0ZSBlbXB0eVN0YXRlKCkgeyByZXR1cm4g
U2ltdWxhdGVkSW5wdXRTb3VyY2VTdGF0ZSgpOyB9Cit9OworCitzdHJ1Y3QgU2ltdWxhdGVkSW5w
dXRTb3VyY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxTaW11bGF0ZWRJbnB1dFNvdXJjZT4geworcHVi
bGljOgorICAgIGVudW0gY2xhc3MgVHlwZSB7CisgICAgICAgIE51bGwsIC8vIFVzZWQgdG8gaW5k
dWNlIGEgbWluaW11bSBkdXJhdGlvbi4KKyAgICAgICAgS2V5Ym9hcmQsCisgICAgICAgIE1vdXNl
LAorICAgICAgICBUb3VjaCwKKyAgICB9OworCisgICAgVHlwZSB0eXBlOworCisgICAgLy8gVGhl
IGxhc3Qgc3RhdGUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgaW5wdXQgc291cmNlLgorICAgIFNpbXVs
YXRlZElucHV0U291cmNlU3RhdGUgc3RhdGU7CisKKyAgICBzdGF0aWMgUmVmPFNpbXVsYXRlZElu
cHV0U291cmNlPiBjcmVhdGUoVHlwZSB0eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU2ltdWxhdGVkSW5wdXRTb3VyY2UodHlwZSkpOworICAgIH0KKworcHJpdmF0ZToK
KyAgICBTaW11bGF0ZWRJbnB1dFNvdXJjZShUeXBlIHR5cGUpCisgICAgICAgIDogdHlwZSh0eXBl
KQorICAgICAgICAsIHN0YXRlKFNpbXVsYXRlZElucHV0U291cmNlU3RhdGU6OmVtcHR5U3RhdGUo
KSkKKyAgICB7IH0KK307CisKK3N0cnVjdCBTaW11bGF0ZWRJbnB1dEtleUZyYW1lIHsKK3B1Ymxp
YzoKKyAgICB1c2luZyBTdGF0ZUVudHJ5ID0gc3RkOjpwYWlyPFNpbXVsYXRlZElucHV0U291cmNl
JiwgU2ltdWxhdGVkSW5wdXRTb3VyY2VTdGF0ZT47CisKKyAgICBleHBsaWNpdCBTaW11bGF0ZWRJ
bnB1dEtleUZyYW1lKFZlY3RvcjxTdGF0ZUVudHJ5PiYmKTsKKyAgICBTZWNvbmRzIG1heGltdW1E
dXJhdGlvbigpIGNvbnN0OworCisgICAgc3RhdGljIFNpbXVsYXRlZElucHV0S2V5RnJhbWUga2V5
RnJhbWVGcm9tU3RhdGVPZklucHV0U291cmNlcyhIYXNoU2V0PFJlZjxTaW11bGF0ZWRJbnB1dFNv
dXJjZT4+Jik7CisgICAgc3RhdGljIFNpbXVsYXRlZElucHV0S2V5RnJhbWUga2V5RnJhbWVUb1Jl
c2V0SW5wdXRTb3VyY2VzKEhhc2hTZXQ8UmVmPFNpbXVsYXRlZElucHV0U291cmNlPj4mKTsKKwor
ICAgIFZlY3RvcjxTdGF0ZUVudHJ5PiBzdGF0ZXM7Cit9OworCitjbGFzcyBTaW11bGF0ZWRJbnB1
dERpc3BhdGNoZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI+
IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIpOwor
cHVibGljOgorICAgIGNsYXNzIENsaWVudCB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFs
IH5DbGllbnQoKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIHNpbXVsYXRlTW91c2VJbnRlcmFj
dGlvbihXZWJQYWdlUHJveHkmLCBNb3VzZUludGVyYWN0aW9uLCBXZWJNb3VzZUV2ZW50OjpCdXR0
b24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBsb2NhdGlvbkluVmlldywgQXV0b21hdGlvbkNv
bXBsZXRpb25IYW5kbGVyJiYpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHNpbXVsYXRlS2V5
Ym9hcmRJbnRlcmFjdGlvbihXZWJQYWdlUHJveHkmLCBLZXlib2FyZEludGVyYWN0aW9uLCBzdGQ6
Om9wdGlvbmFsPFZpcnR1YWxLZXk+LCBzdGQ6Om9wdGlvbmFsPENoYXJLZXk+LCBBdXRvbWF0aW9u
Q29tcGxldGlvbkhhbmRsZXImJikgPSAwOworICAgIH07CisKKyAgICBzdGF0aWMgUmVmPFNpbXVs
YXRlZElucHV0RGlzcGF0Y2hlcj4gY3JlYXRlKFdlYlBhZ2VQcm94eSYgcGFnZSwgU2ltdWxhdGVk
SW5wdXREaXNwYXRjaGVyOjpDbGllbnQmIGNsaWVudCkKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcihwYWdlLCBjbGllbnQpKTsKKyAg
ICB9CisKKyAgICB+U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyKCk7CisKKyAgICB2b2lkIHJ1bihW
ZWN0b3I8U2ltdWxhdGVkSW5wdXRLZXlGcmFtZT4mJiBrZXlGcmFtZXMsIEhhc2hTZXQ8UmVmPFNp
bXVsYXRlZElucHV0U291cmNlPj4mIGlucHV0U291cmNlcywgQXV0b21hdGlvbkNvbXBsZXRpb25I
YW5kbGVyJiYpOworICAgIHZvaWQgY2FuY2VsKCk7CisKKyAgICBib29sIGlzQWN0aXZlKCkgY29u
c3Q7CisKK3ByaXZhdGU6CisgICAgU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyKFdlYlBhZ2VQcm94
eSYsIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6Q2xpZW50Jik7CisKKyAgICB2b2lkIHRyYW5z
aXRpb25Ub05leHRLZXlGcmFtZSgpOworICAgIHZvaWQgdHJhbnNpdGlvbkJldHdlZW5LZXlGcmFt
ZXMoY29uc3QgU2ltdWxhdGVkSW5wdXRLZXlGcmFtZSYsIGNvbnN0IFNpbXVsYXRlZElucHV0S2V5
RnJhbWUmLCBBdXRvbWF0aW9uQ29tcGxldGlvbkhhbmRsZXImJik7CisKKyAgICB2b2lkIHRyYW5z
aXRpb25Ub05leHRJbnB1dFNvdXJjZVN0YXRlKCk7CisgICAgdm9pZCB0cmFuc2l0aW9uSW5wdXRT
b3VyY2VUb1N0YXRlKFNpbXVsYXRlZElucHV0U291cmNlJiwgY29uc3QgU2ltdWxhdGVkSW5wdXRT
b3VyY2VTdGF0ZSYgbmV3U3RhdGUsIEF1dG9tYXRpb25Db21wbGV0aW9uSGFuZGxlciYmKTsKKyAg
ICB2b2lkIGZpbmlzaERpc3BhdGNoaW5nKHN0ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRF
cnJvcj4pOworCisgICAgdm9pZCBrZXlGcmFtZVRyYW5zaXRpb25EdXJhdGlvblRpbWVyRmlyZWQo
KTsKKyAgICBib29sIGlzS2V5RnJhbWVUcmFuc2l0aW9uQ29tcGxldGUoKSBjb25zdDsKKworICAg
IFdlYlBhZ2VQcm94eSYgbV9wYWdlOworICAgIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6Q2xp
ZW50JiBtX2NsaWVudDsKKworICAgIEF1dG9tYXRpb25Db21wbGV0aW9uSGFuZGxlciBtX3J1bkNv
bXBsZXRpb25IYW5kbGVyOworICAgIEF1dG9tYXRpb25Db21wbGV0aW9uSGFuZGxlciBtX2tleUZy
YW1lVHJhbnNpdGlvbkNvbXBsZXRpb25IYW5kbGVyOworICAgIFJ1bkxvb3A6OlRpbWVyPFNpbXVs
YXRlZElucHV0RGlzcGF0Y2hlcj4gbV9rZXlGcmFtZVRyYW5zaXRpb25EdXJhdGlvblRpbWVyOwor
CisgICAgVmVjdG9yPFNpbXVsYXRlZElucHV0S2V5RnJhbWU+IG1fa2V5ZnJhbWVzOworICAgIEhh
c2hTZXQ8UmVmPFNpbXVsYXRlZElucHV0U291cmNlPj4gbV9pbnB1dFNvdXJjZXM7CisKKyAgICAv
LyBUaGUgcG9zaXRpb24gd2l0aGluIG1fa2V5ZnJhbWVzLgorICAgIHVuc2lnbmVkIG1fa2V5ZnJh
bWVJbmRleCB7IDAgfTsKKworICAgIC8vIFRoZSBwb3NpdGlvbiB3aXRoaW4gdGhlIGlucHV0IHNv
dXJjZSBzdGF0ZSB2ZWN0b3IgYXQgbV9rZXlmcmFtZXNbbV9rZXlmcmFtZUluZGV4XS4KKyAgICAv
LyBFdmVudHMgdGhhdCByZWZsZWN0IGlucHV0IHNvdXJjZSBzdGF0ZSB0cmFuc2l0aW9ucyBhcmUg
ZGlzcGF0Y2hlZCBzZXJpYWxseSBiYXNlZCBvbiB0aGlzIG9yZGVyLgorICAgIHVuc2lnbmVkIG1f
aW5wdXRTb3VyY2VTdGF0ZUluZGV4IHsgMCB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9t
YXRpb25TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2Vi
QXV0b21hdGlvblNlc3Npb24uY3BwCmluZGV4IGY1YjdkMzcxODI1NTBhY2QzNDFlYTgxMDJjZjAw
ZDAyNWI0MzhiMTIuLjk3NTkzYTQ3NTQ1YWRkMjYwMzFjYjYwNDgzMjhlNWQxNzE0NzY5MjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlv
blNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2Vi
QXV0b21hdGlvblNlc3Npb24uY3BwCkBAIC03Niw2ICs3NiwxMCBAQCBXZWJBdXRvbWF0aW9uU2Vz
c2lvbjo6V2ViQXV0b21hdGlvblNlc3Npb24oKQogICAgICwgbV9kb21haW5Ob3RpZmllcihzdGQ6
Om1ha2VfdW5pcXVlPEF1dG9tYXRpb25Gcm9udGVuZERpc3BhdGNoZXI+KG1fZnJvbnRlbmRSb3V0
ZXIpKQogICAgICwgbV9sb2FkVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmV2ViQXV0b21h
dGlvblNlc3Npb246OmxvYWRUaW1lckZpcmVkKQogeworICAgIC8vIFNldCB1cCBjYW5vbmljYWwg
aW5wdXQgc291cmNlcyB0byBiZSB1c2VkIGZvciAncGVyZm9ybUludGVyYWN0aW9uU2VxdWVuY2Un
IGFuZCAnY2FuY2VsSW50ZXJhY3Rpb25TZXF1ZW5jZScuCisgICAgbV9pbnB1dFNvdXJjZXMuYWRk
KFNpbXVsYXRlZElucHV0U291cmNlOjpjcmVhdGUoU2ltdWxhdGVkSW5wdXRTb3VyY2U6OlR5cGU6
Ok1vdXNlKSk7CisgICAgbV9pbnB1dFNvdXJjZXMuYWRkKFNpbXVsYXRlZElucHV0U291cmNlOjpj
cmVhdGUoU2ltdWxhdGVkSW5wdXRTb3VyY2U6OlR5cGU6OktleWJvYXJkKSk7CisgICAgbV9pbnB1
dFNvdXJjZXMuYWRkKFNpbXVsYXRlZElucHV0U291cmNlOjpjcmVhdGUoU2ltdWxhdGVkSW5wdXRT
b3VyY2U6OlR5cGU6Ok51bGwpKTsKIH0KIAogV2ViQXV0b21hdGlvblNlc3Npb246On5XZWJBdXRv
bWF0aW9uU2Vzc2lvbigpCkBAIC03MjMsMjggKzcyNywzMiBAQCB2b2lkIFdlYkF1dG9tYXRpb25T
ZXNzaW9uOjppbnNwZWN0b3JGcm9udGVuZExvYWRlZChjb25zdCBXZWJQYWdlUHJveHkmIHBhZ2Up
CiAKIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246Om1vdXNlRXZlbnRzRmx1c2hlZEZvclBhZ2Uo
Y29uc3QgV2ViUGFnZVByb3h5JiBwYWdlKQogewotICAgIGlmIChhdXRvIGNhbGxiYWNrID0gbV9w
ZW5kaW5nTW91c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS50YWtlKHBhZ2UucGFnZUlE
KCkpKSB7Ci0gICAgICAgIGlmIChtX3BlbmRpbmdNb3VzZUV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQ
ZXJQYWdlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIG1fc2ltdWxhdGluZ1VzZXJJbnRlcmFjdGlv
biA9IGZhbHNlOwotCisgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBtX3BlbmRpbmdNb3VzZUV2ZW50
c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlLnRha2UocGFnZS5wYWdlSUQoKSkpCiAgICAgICAgIGNh
bGxiYWNrKHN0ZDo6bnVsbG9wdCk7Ci0gICAgfQogfQogCiB2b2lkIFdlYkF1dG9tYXRpb25TZXNz
aW9uOjprZXlib2FyZEV2ZW50c0ZsdXNoZWRGb3JQYWdlKGNvbnN0IFdlYlBhZ2VQcm94eSYgcGFn
ZSkKIHsKLSAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1fcGVuZGluZ0tleWJvYXJkRXZlbnRzRmx1
c2hlZENhbGxiYWNrc1BlclBhZ2UudGFrZShwYWdlLnBhZ2VJRCgpKSkgewotICAgICAgICBpZiAo
bV9wZW5kaW5nS2V5Ym9hcmRFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS5pc0VtcHR5KCkp
Ci0gICAgICAgICAgICBtX3NpbXVsYXRpbmdVc2VySW50ZXJhY3Rpb24gPSBmYWxzZTsKLQorICAg
IGlmIChhdXRvIGNhbGxiYWNrID0gbV9wZW5kaW5nS2V5Ym9hcmRFdmVudHNGbHVzaGVkQ2FsbGJh
Y2tzUGVyUGFnZS50YWtlKHBhZ2UucGFnZUlEKCkpKQogICAgICAgICBjYWxsYmFjayhzdGQ6Om51
bGxvcHQpOwotICAgIH0KIH0KIAogdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6d2lsbENsb3Nl
UGFnZShjb25zdCBXZWJQYWdlUHJveHkmIHBhZ2UpCiB7CiAgICAgU3RyaW5nIGhhbmRsZSA9IGhh
bmRsZUZvcldlYlBhZ2VQcm94eShwYWdlKTsKICAgICBtX2RvbWFpbk5vdGlmaWVyLT5icm93c2lu
Z0NvbnRleHRDbGVhcmVkKGhhbmRsZSk7CisKKyAgICAvLyBDYW5jZWwgcGVuZGluZyBpbnRlcmFj
dGlvbnMgb24gdGhpcyBwYWdlLiBCeSBwcm92aWRpbmcgYW4gZXJyb3IsIHRoaXMgd2lsbCBjYXVz
ZSBzdWJzZXF1ZW50CisgICAgLy8gYWN0aW9ucyB0byBiZSBhYm9ydGVkIGFuZCB0aGUgU2ltdWxh
dGVkSW5wdXREaXNwYXRjaGVyOjpydW4oKSBjYWxsIHdpbGwgdW53aW5kIGFuZCBmYWlsLgorICAg
IGlmIChhdXRvIGNhbGxiYWNrID0gbV9wZW5kaW5nTW91c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2tz
UGVyUGFnZS50YWtlKHBhZ2UucGFnZUlEKCkpKQorICAgICAgICBjYWxsYmFjayhBVVRPTUFUSU9O
X0NPTU1BTkRfRVJST1JfV0lUSF9OQU1FKFdpbmRvd05vdEZvdW5kKSk7CisgICAgaWYgKGF1dG8g
Y2FsbGJhY2sgPSBtX3BlbmRpbmdNb3VzZUV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlLnRh
a2UocGFnZS5wYWdlSUQoKSkpCisgICAgICAgIGNhbGxiYWNrKEFVVE9NQVRJT05fQ09NTUFORF9F
UlJPUl9XSVRIX05BTUUoV2luZG93Tm90Rm91bmQpKTsKKworICAgIC8vIFRoZW4gdGVsbCB0aGUg
aW5wdXQgZGlzcGF0Y2hlciB0byBjYW5jZWwgc28gdGltZXJzIGFyZSBzdG9wcGVkLCBhbmQgbGV0
IGl0IGdvIG91dCBvZiBzY29wZS4KKyAgICBzdGQ6Om9wdGlvbmFsPFJlZjxTaW11bGF0ZWRJbnB1
dERpc3BhdGNoZXI+PiBpbnB1dERpc3BhdGNoZXIgPSBtX2lucHV0RGlzcGF0Y2hlcnNCeVBhZ2Uu
dGFrZShwYWdlLnBhZ2VJRCgpKTsKKyAgICBpZiAoaW5wdXREaXNwYXRjaGVyLmhhc192YWx1ZSgp
KQorICAgICAgICBpbnB1dERpc3BhdGNoZXIudmFsdWUoKS0+Y2FuY2VsKCk7CiB9CiAKIHN0YXRp
YyBib29sIGZpbGVDYW5CZUFjY2VwdGVkRm9yVXBsb2FkKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUs
IGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgYWxsb3dlZE1JTUVUeXBlcywgY29uc3QgSGFzaFNldDxT
dHJpbmc+JiBhbGxvd2VkRmlsZUV4dGVuc2lvbnMpCkBAIC0xMzY2LDYgKzEzNzQsODUgQEAgYm9v
bCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6c2hvdWxkQWxsb3dHZXRVc2VyTWVkaWFGb3JQYWdlKGNv
bnN0IFdlYlBhZ2VQcm94eSYpIGMKICAgICByZXR1cm4gbV9wZXJtaXNzaW9uRm9yR2V0VXNlck1l
ZGlhOwogfQogCitib29sIFdlYkF1dG9tYXRpb25TZXNzaW9uOjppc1NpbXVsYXRpbmdVc2VySW50
ZXJhY3Rpb24oKSBjb25zdAoreworICAgIGlmICghbV9wZW5kaW5nTW91c2VFdmVudHNGbHVzaGVk
Q2FsbGJhY2tzUGVyUGFnZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBp
ZiAoIW1fcGVuZGluZ0tleWJvYXJkRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2UuaXNFbXB0
eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworU2lt
dWxhdGVkSW5wdXREaXNwYXRjaGVyJiBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6aW5wdXREaXNwYXRj
aGVyRm9yUGFnZShXZWJQYWdlUHJveHkmIHBhZ2UpCit7CisgICAgcmV0dXJuIG1faW5wdXREaXNw
YXRjaGVyc0J5UGFnZS5lbnN1cmUocGFnZS5wYWdlSUQoKSwgWyZdIHsKKyAgICAgICAgcmV0dXJu
IFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6Y3JlYXRlKHBhZ2UsICp0aGlzKTsKKyAgICB9KS5p
dGVyYXRvci0+dmFsdWU7Cit9CisKK1NpbXVsYXRlZElucHV0U291cmNlKiBXZWJBdXRvbWF0aW9u
U2Vzc2lvbjo6aW5wdXRTb3VyY2VGb3JUeXBlKFNpbXVsYXRlZElucHV0U291cmNlOjpUeXBlIHR5
cGUpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IHRoaXMgc2hvdWxkIHVzZSBzb21ldGhpbmcgbGlr
ZSBWZWN0b3IncyBmaW5kTWF0Y2hpbmcoKS4KKyAgICBmb3IgKGF1dG8mIGlucHV0U291cmNlIDog
bV9pbnB1dFNvdXJjZXMpIHsKKyAgICAgICAgaWYgKGlucHV0U291cmNlLT50eXBlID09IHR5cGUp
CisgICAgICAgICAgICByZXR1cm4gJmlucHV0U291cmNlLmdldCgpOworICAgIH0KKworICAgIHJl
dHVybiBudWxscHRyOworfQorCisvLyBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OkNsaWVudCBB
UEkKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnNpbXVsYXRlTW91c2VJbnRlcmFjdGlvbihX
ZWJQYWdlUHJveHkmIHBhZ2UsIE1vdXNlSW50ZXJhY3Rpb24gaW50ZXJhY3Rpb24sIFdlYk1vdXNl
RXZlbnQ6OkJ1dHRvbiBtb3VzZUJ1dHRvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGxvY2F0
aW9uSW5WaWV3cG9ydCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPEF1dG9t
YXRpb25Db21tYW5kRXJyb3I+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBXZWJDb3Jl
OjpJbnRQb2ludCBsb2NhdGlvbkluVmlldyA9IFdlYkNvcmU6OkludFBvaW50KGxvY2F0aW9uSW5W
aWV3cG9ydC54KCksIGxvY2F0aW9uSW5WaWV3cG9ydC55KCkgKyBwYWdlLnRvcENvbnRlbnRJbnNl
dCgpKTsKKyAgICBwYWdlLmdldFdpbmRvd0ZyYW1lV2l0aENhbGxiYWNrKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlciksIHBhZ2UgPSBtYWtlUmVmKHBhZ2UpLCBpbnRlcmFjdGlvbiwgbW91c2VC
dXR0b24sIGxvY2F0aW9uSW5WaWV3XShXZWJDb3JlOjpGbG9hdFJlY3Qgd2luZG93RnJhbWUpIG11
dGFibGUgeworICAgICAgICBhdXRvIGNsaXBwZWRYID0gc3RkOjptaW4oc3RkOjptYXgoMC4wZiwg
KGZsb2F0KWxvY2F0aW9uSW5WaWV3LngoKSksIHdpbmRvd0ZyYW1lLnNpemUoKS53aWR0aCgpKTsK
KyAgICAgICAgYXV0byBjbGlwcGVkWSA9IHN0ZDo6bWluKHN0ZDo6bWF4KDAuMGYsIChmbG9hdCls
b2NhdGlvbkluVmlldy55KCkpLCB3aW5kb3dGcmFtZS5zaXplKCkuaGVpZ2h0KCkpOworICAgICAg
ICBpZiAoY2xpcHBlZFggIT0gbG9jYXRpb25JblZpZXcueCgpIHx8IGNsaXBwZWRZICE9IGxvY2F0
aW9uSW5WaWV3LnkoKSkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQVVUT01BVElP
Tl9DT01NQU5EX0VSUk9SX1dJVEhfTkFNRShUYXJnZXRPdXRPZkJvdW5kcykpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLy8gQnJpZGdlIHRoZSBmbHVzaGVkIGNh
bGxiYWNrIHRvIG91ciBjb21tYW5kJ3MgY29tcGxldGlvbiBoYW5kbGVyLgorICAgICAgICBhdXRv
IG1vdXNlRXZlbnRzRmx1c2hlZENhbGxiYWNrID0gW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildKHN0ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJv
cj4gZXJyb3IpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGVycm9yKTsKKyAgICAg
ICAgfTsKKworICAgICAgICBhdXRvJiBjYWxsYmFja0luTWFwID0gbV9wZW5kaW5nTW91c2VFdmVu
dHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS5hZGQocGFnZS0+cGFnZUlEKCksIG51bGxwdHIpLml0
ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgaWYgKGNhbGxiYWNrSW5NYXApCisgICAgICAgICAgICBj
YWxsYmFja0luTWFwKEFVVE9NQVRJT05fQ09NTUFORF9FUlJPUl9XSVRIX05BTUUoVGltZW91dCkp
OworICAgICAgICBjYWxsYmFja0luTWFwID0gV1RGTW92ZShtb3VzZUV2ZW50c0ZsdXNoZWRDYWxs
YmFjayk7CisKKyAgICAgICAgcGxhdGZvcm1TaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24ocGFnZSwg
aW50ZXJhY3Rpb24sIG1vdXNlQnV0dG9uLCBsb2NhdGlvbkluVmlldywgKFdlYkV2ZW50OjpNb2Rp
ZmllcnMpbV9jdXJyZW50TW9kaWZpZXJzKTsKKworICAgICAgICAvLyBJZiB0aGUgZXZlbnQgZG9l
cyBub3QgaGl0IHRlc3QgYW55dGhpbmcgaW4gdGhlIHdpbmRvdywgdGhlbiBpdCBtYXkgbm90IGhh
dmUgYmVlbiBkZWxpdmVyZWQuCisgICAgICAgIGlmIChjYWxsYmFja0luTWFwICYmICFwYWdlLT5p
c1Byb2Nlc3NpbmdNb3VzZUV2ZW50cygpKSB7CisgICAgICAgICAgICBhdXRvIGNhbGxiYWNrVG9D
YW5jZWwgPSBtX3BlbmRpbmdNb3VzZUV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlLnRha2Uo
cGFnZS0+cGFnZUlEKCkpOworICAgICAgICAgICAgY2FsbGJhY2tUb0NhbmNlbChzdGQ6Om51bGxv
cHQpOworICAgICAgICB9CisKKyAgICAgICAgLy8gT3RoZXJ3aXNlLCB3YWl0IGZvciBtb3VzZUV2
ZW50c0ZsdXNoZWRDYWxsYmFjayB0byBydW4gd2hlbiBhbGwgZXZlbnRzIGFyZSBoYW5kbGVkLgor
ICAgIH0pOworfQorCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpzaW11bGF0ZUtleWJvYXJk
SW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBLZXlib2FyZEludGVyYWN0aW9uIGludGVy
YWN0aW9uLCBzdGQ6Om9wdGlvbmFsPFZpcnR1YWxLZXk+IHZpcnR1YWxLZXksIHN0ZDo6b3B0aW9u
YWw8Q2hhcktleT4gY2hhcktleSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFs
PEF1dG9tYXRpb25Db21tYW5kRXJyb3I+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICAv
LyBCcmlkZ2UgdGhlIGZsdXNoZWQgY2FsbGJhY2sgdG8gb3VyIGNvbW1hbmQncyBjb21wbGV0aW9u
IGhhbmRsZXIuCisgICAgYXV0byBrZXlib2FyZEV2ZW50c0ZsdXNoZWRDYWxsYmFjayA9IFtjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShzdGQ6Om9wdGlvbmFs
PEF1dG9tYXRpb25Db21tYW5kRXJyb3I+IGVycm9yKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKGVycm9yKTsKKyAgICB9OworCisgICAgYXV0byYgY2FsbGJhY2tJbk1hcCA9IG1fcGVuZGlu
Z0tleWJvYXJkRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2UuYWRkKHBhZ2UucGFnZUlEKCks
IG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBpZiAoY2FsbGJhY2tJbk1hcCkKKyAgICAg
ICAgY2FsbGJhY2tJbk1hcChBVVRPTUFUSU9OX0NPTU1BTkRfRVJST1JfV0lUSF9OQU1FKFRpbWVv
dXQpKTsKKyAgICBjYWxsYmFja0luTWFwID0gV1RGTW92ZShrZXlib2FyZEV2ZW50c0ZsdXNoZWRD
YWxsYmFjayk7CisKKyAgICBwbGF0Zm9ybVNpbXVsYXRlS2V5Ym9hcmRJbnRlcmFjdGlvbihwYWdl
LCBpbnRlcmFjdGlvbiwgdmlydHVhbEtleSwgY2hhcktleSk7CisKKyAgICAvLyBXYWl0IGZvciBr
ZXlib2FyZEV2ZW50c0ZsdXNoZWRDYWxsYmFjayB0byBydW4gd2hlbiBhbGwgZXZlbnRzIGFyZSBo
YW5kbGVkLgorfQorCiAjaWYgVVNFKEFQUEtJVCkgfHwgUExBVEZPUk0oR1RLKQogc3RhdGljIFdl
YkV2ZW50OjpNb2RpZmllcnMgcHJvdG9jb2xNb2RpZmllclRvV2ViRXZlbnRNb2RpZmllcihJbnNw
ZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpLZXlNb2RpZmllciBtb2RpZmllcikKIHsKQEAg
LTEzODQsNiArMTQ3MSwyMiBAQCBzdGF0aWMgV2ViRXZlbnQ6Ok1vZGlmaWVycyBwcm90b2NvbE1v
ZGlmaWVyVG9XZWJFdmVudE1vZGlmaWVyKEluc3BlY3Rvcjo6UHJvdG9jbwogCiAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KKworc3RhdGljIFdlYk1vdXNlRXZlbnQ6OkJ1dHRv
biBwcm90b2NvbE1vdXNlQnV0dG9uVG9XZWJNb3VzZUV2ZW50QnV0dG9uKEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9uIGJ1dHRvbikKK3sKKyAgICBzd2l0Y2ggKGJ1
dHRvbikgeworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VC
dXR0b246Ok5vbmU6CisgICAgICAgIHJldHVybiBXZWJNb3VzZUV2ZW50OjpOb0J1dHRvbjsKKyAg
ICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9uOjpMZWZ0
OgorICAgICAgICByZXR1cm4gV2ViTW91c2VFdmVudDo6TGVmdEJ1dHRvbjsKKyAgICBjYXNlIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9uOjpNaWRkbGU6CisgICAg
ICAgIHJldHVybiBXZWJNb3VzZUV2ZW50OjpNaWRkbGVCdXR0b247CisgICAgY2FzZSBJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1dHRvbjo6UmlnaHQ6CisgICAgICAgIHJl
dHVybiBXZWJNb3VzZUV2ZW50OjpSaWdodEJ1dHRvbjsKKyAgICB9CisKKyAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworfQogI2VuZGlmIC8vIFVTRShBUFBLSVQpIHx8IFBMQVRGT1JN
KEdUSykKIAogdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGVyZm9ybU1vdXNlSW50ZXJhY3Rp
b24oY29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbnN0IEpTT046Ok9iamVjdCYgcmVxdWVzdGVkUG9z
aXRpb25PYmplY3QsIGNvbnN0IFN0cmluZyYgbW91c2VCdXR0b25TdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgbW91c2VJbnRlcmFjdGlvblN0cmluZywgY29uc3QgSlNPTjo6QXJyYXkmIGtleU1vZGlmaWVy
U3RyaW5ncywgUmVmPFBlcmZvcm1Nb3VzZUludGVyYWN0aW9uQ2FsbGJhY2s+JiYgY2FsbGJhY2sp
CkBAIC0xNDE1LDEzICsxNTE4LDEzIEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBlcmZv
cm1Nb3VzZUludGVyYWN0aW9uKGNvbnN0IFN0cmluZyYgaGFuZGxlLCBjb25zdCBKCiAgICAgICAg
IFdlYkV2ZW50OjpNb2RpZmllcnMgZW51bVZhbHVlID0gcHJvdG9jb2xNb2RpZmllclRvV2ViRXZl
bnRNb2RpZmllcihwYXJzZWRNb2RpZmllci52YWx1ZSgpKTsKICAgICAgICAga2V5TW9kaWZpZXJz
ID0gKFdlYkV2ZW50OjpNb2RpZmllcnMpKGVudW1WYWx1ZSB8IGtleU1vZGlmaWVycyk7CiAgICAg
fQotICAgIAorCiAgICAgcGFnZS0+Z2V0V2luZG93RnJhbWVXaXRoQ2FsbGJhY2soW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KSwgcGFnZSA9IG1ha2VSZWYoKnBhZ2UpLCB4LCB5LCBtb3VzZUludGVyYWN0aW9uU3RyaW5nLCBt
b3VzZUJ1dHRvblN0cmluZywga2V5TW9kaWZpZXJzXShXZWJDb3JlOjpGbG9hdFJlY3Qgd2luZG93
RnJhbWUpIG11dGFibGUgewogCiAgICAgICAgIHggPSBzdGQ6Om1pbihzdGQ6Om1heCgwLjBmLCB4
KSwgd2luZG93RnJhbWUuc2l6ZSgpLndpZHRoKCkpOwogICAgICAgICB5ID0gc3RkOjptaW4oc3Rk
OjptYXgoMC4wZiwgeSArIHBhZ2UtPnRvcENvbnRlbnRJbnNldCgpKSwgd2luZG93RnJhbWUuc2l6
ZSgpLmhlaWdodCgpKTsKIAotICAgICAgICBXZWJDb3JlOjpJbnRQb2ludCB2aWV3UG9zaXRpb24g
PSBXZWJDb3JlOjpJbnRQb2ludChzdGF0aWNfY2FzdDxpbnQ+KHgpLCBzdGF0aWNfY2FzdDxpbnQ+
KHkpKTsKKyAgICAgICAgV2ViQ29yZTo6SW50UG9pbnQgcG9zaXRpb25JblZpZXcgPSBXZWJDb3Jl
OjpJbnRQb2ludChzdGF0aWNfY2FzdDxpbnQ+KHgpLCBzdGF0aWNfY2FzdDxpbnQ+KHkpKTsKIAog
ICAgICAgICBhdXRvIHBhcnNlZEludGVyYWN0aW9uID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbkhlbHBlcnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpNb3VzZUludGVyYWN0aW9uPihtb3VzZUludGVyYWN0aW9uU3RyaW5n
KTsKICAgICAgICAgaWYgKCFwYXJzZWRJbnRlcmFjdGlvbikKQEAgLTE0NDcsMTEgKzE1NTAsOCBA
QCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwZXJmb3JtTW91c2VJbnRlcmFjdGlvbihjb25z
dCBTdHJpbmcmIGhhbmRsZSwgY29uc3QgSgogICAgICAgICAgICAgY2FsbGJhY2tJbk1hcChBVVRP
TUFUSU9OX0NPTU1BTkRfRVJST1JfV0lUSF9OQU1FKFRpbWVvdXQpKTsKICAgICAgICAgY2FsbGJh
Y2tJbk1hcCA9IFdURk1vdmUobW91c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2spOwogCi0gICAgICAg
IC8vIFRoaXMgaXMgY2xlYXJlZCB3aGVuIGFsbCBtb3VzZSBldmVudHMgYXJlIGZsdXNoZWQuCi0g
ICAgICAgIG1fc2ltdWxhdGluZ1VzZXJJbnRlcmFjdGlvbiA9IHRydWU7CisgICAgICAgIHBsYXRm
b3JtU2ltdWxhdGVNb3VzZUludGVyYWN0aW9uKHBhZ2UsIHBhcnNlZEludGVyYWN0aW9uLnZhbHVl
KCksIHByb3RvY29sTW91c2VCdXR0b25Ub1dlYk1vdXNlRXZlbnRCdXR0b24ocGFyc2VkQnV0dG9u
LnZhbHVlKCkpLCBwb3NpdGlvbkluVmlldywga2V5TW9kaWZpZXJzKTsKIAotICAgICAgICBwbGF0
Zm9ybVNpbXVsYXRlTW91c2VJbnRlcmFjdGlvbihwYWdlLCB2aWV3UG9zaXRpb24sIHBhcnNlZElu
dGVyYWN0aW9uLnZhbHVlKCksIHBhcnNlZEJ1dHRvbi52YWx1ZSgpLCBrZXlNb2RpZmllcnMpOwot
ICAgICAgICAKICAgICAgICAgLy8gSWYgdGhlIGV2ZW50IGxvY2F0aW9uIHdhcyBwcmV2aW91c2x5
IGNsaXBwZWQgYW5kIGRvZXMgbm90IGhpdCB0ZXN0IGFueXRoaW5nIGluIHRoZSB3aW5kb3csIHRo
ZW4gaXQgd2lsbCBub3QgYmUgcHJvY2Vzc2VkLgogICAgICAgICAvLyBGb3IgY29tcGF0aWJpbGl0
eSB3aXRoIHByZS1XM0MgZHJpdmVyIGltcGxlbWVudGF0aW9ucywgZG9uJ3QgbWFrZSB0aGlzIGEg
aGFyZCBlcnJvcjsganVzdCBkbyBub3RoaW5nIHNpbGVudGx5LgogICAgICAgICAvLyBJbiBXM0Mt
b25seSBjb2RlIHBhdGhzLCB3ZSBjYW4gcmVqZWN0IGFueSBwb2ludGVyIGFjdGlvbnMgd2hvc2Ug
Y29vcmRpbmF0ZXMgYXJlIG91dHNpZGUgdGhlIHZpZXdwb3J0IHJlY3QuCkBAIC0xNDk5LDcgKzE1
OTksNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwZXJmb3JtS2V5Ym9hcmRJbnRlcmFj
dGlvbnMoY29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbgogICAgICAgICAgICAgICAgIEFTWU5DX0ZB
SUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKEludmFsaWRQYXJhbWV0ZXIsICJB
biBpbnRlcmFjdGlvbiBpbiB0aGUgJ2ludGVyYWN0aW9ucycgcGFyYW1ldGVyIGhhcyBhbiBpbnZh
bGlkICdrZXknIHZhbHVlLiIpOwogCiAgICAgICAgICAgICBhY3Rpb25zVG9QZXJmb3JtLnVuY2hl
Y2tlZEFwcGVuZChbdGhpcywgcGFnZSwgaW50ZXJhY3Rpb25UeXBlLCB2aXJ0dWFsS2V5XSB7Ci0g
ICAgICAgICAgICAgICAgcGxhdGZvcm1TaW11bGF0ZUtleVN0cm9rZSgqcGFnZSwgaW50ZXJhY3Rp
b25UeXBlLnZhbHVlKCksIHZpcnR1YWxLZXkudmFsdWUoKSk7CisgICAgICAgICAgICAgICAgcGxh
dGZvcm1TaW11bGF0ZUtleWJvYXJkSW50ZXJhY3Rpb24oKnBhZ2UsIGludGVyYWN0aW9uVHlwZS52
YWx1ZSgpLCB2aXJ0dWFsS2V5LCBzdGQ6Om51bGxvcHQpOwogICAgICAgICAgICAgfSk7CiAgICAg
ICAgIH0KIApAQCAtMTU0MCwxNCArMTY0MCwxNzkgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lv
bjo6cGVyZm9ybUtleWJvYXJkSW50ZXJhY3Rpb25zKGNvbnN0IFN0cmluZyYgaGFuZGxlLCBjb24K
ICAgICAgICAgY2FsbGJhY2tJbk1hcChBVVRPTUFUSU9OX0NPTU1BTkRfRVJST1JfV0lUSF9OQU1F
KFRpbWVvdXQpKTsKICAgICBjYWxsYmFja0luTWFwID0gV1RGTW92ZShrZXlib2FyZEV2ZW50c0Zs
dXNoZWRDYWxsYmFjayk7CiAKLSAgICAvLyBUaGlzIGlzIGNsZWFyZWQgd2hlbiBhbGwga2V5Ym9h
cmQgZXZlbnRzIGFyZSBmbHVzaGVkLgotICAgIG1fc2ltdWxhdGluZ1VzZXJJbnRlcmFjdGlvbiA9
IHRydWU7Ci0KICAgICBmb3IgKGF1dG8mIGFjdGlvbiA6IGFjdGlvbnNUb1BlcmZvcm0pCiAgICAg
ICAgIGFjdGlvbigpOwogI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKSB8fCBQTEFURk9STShHVEsp
CiB9CiAKK3N0YXRpYyBTaW11bGF0ZWRJbnB1dFNvdXJjZTo6VHlwZSBzaW11bGF0ZWRJbnB1dFNv
dXJjZVR5cGVGcm9tUHJvdG9jb2xTb3VyY2VUeXBlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9t
YXRpb246OklucHV0U291cmNlVHlwZSBwcm90b2NvbFR5cGUpCit7CisgICAgc3dpdGNoIChwcm90
b2NvbFR5cGUpIHsKKyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Oklu
cHV0U291cmNlVHlwZTo6TnVsbDoKKyAgICAgICAgcmV0dXJuIFNpbXVsYXRlZElucHV0U291cmNl
OjpUeXBlOjpOdWxsOworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6
SW5wdXRTb3VyY2VUeXBlOjpLZXlib2FyZDoKKyAgICAgICAgcmV0dXJuIFNpbXVsYXRlZElucHV0
U291cmNlOjpUeXBlOjpLZXlib2FyZDsKKyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1
dG9tYXRpb246OklucHV0U291cmNlVHlwZTo6TW91c2U6CisgICAgICAgIHJldHVybiBTaW11bGF0
ZWRJbnB1dFNvdXJjZTo6VHlwZTo6TW91c2U7CisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29s
OjpBdXRvbWF0aW9uOjpJbnB1dFNvdXJjZVR5cGU6OlRvdWNoOgorICAgICAgICByZXR1cm4gU2lt
dWxhdGVkSW5wdXRTb3VyY2U6OlR5cGU6OlRvdWNoOworICAgIH0KKworICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBlcmZv
cm1JbnRlcmFjdGlvblNlcXVlbmNlKGNvbnN0IFN0cmluZyYgaGFuZGxlLCBjb25zdCBKU09OOjpB
cnJheSYgaW5wdXRTb3VyY2VzLCBjb25zdCBKU09OOjpBcnJheSYgc3RlcHMsIFJlZjxXZWJBdXRv
bWF0aW9uU2Vzc2lvbjo6UGVyZm9ybUludGVyYWN0aW9uU2VxdWVuY2VDYWxsYmFjaz4mJiBjYWxs
YmFjaykKK3sKKyAgICAvLyBUaGlzIGNvbW1hbmQgaW1wbGVtZW50cyBXZWJLaXQgc3VwcG9ydCBm
b3IgwqcxNy41IFBlcmZvcm0gQWN0aW9ucy4KKworI2lmICFVU0UoQVBQS0lUKSAmJiAhUExBVEZP
Uk0oR1RLKQorICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKE5vdEltcGxlbWVu
dGVkKTsKKyNlbHNlCisgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gd2ViUGFnZVByb3h5Rm9ySGFu
ZGxlKGhhbmRsZSk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJF
REVGSU5FRF9FUlJPUihXaW5kb3dOb3RGb3VuZCk7CisKKyAgICBIYXNoTWFwPFN0cmluZywgUmVm
PFNpbXVsYXRlZElucHV0U291cmNlPj4gc291cmNlSWRUb0lucHV0U291cmNlTWFwOworICAgIEhh
c2hNYXA8U2ltdWxhdGVkSW5wdXRTb3VyY2U6OlR5cGUsIFN0cmluZywgV1RGOjpJbnRIYXNoPFNp
bXVsYXRlZElucHV0U291cmNlOjpUeXBlPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxTaW11
bGF0ZWRJbnB1dFNvdXJjZTo6VHlwZT4+IHR5cGVUb1NvdXJjZUlkTWFwOworCisgICAgLy8gUGFy
c2UgYW5kIHZhbGlkYXRlIEF1dG9tYXRpb24gcHJvdG9jb2wgYXJndW1lbnRzLiBCeSB0aGlzIHBv
aW50LCB0aGUgZHJpdmVyIGhhcworICAgIC8vIGFscmVhZHkgcGVyZm9ybWVkIHRoZSBzdGVwcyBp
biDCpzE3LjMgUHJvY2Vzc2luZyBBY3Rpb25zIFJlcXVlc3RzLgorICAgIGlmICghaW5wdXRTb3Vy
Y2VzLmxlbmd0aCgpKQorICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9B
TkRfREVUQUlMUyhJbnZhbGlkUGFyYW1ldGVyLCAiVGhlIHBhcmFtZXRlciAnaW5wdXRTb3VyY2Vz
JyB3YXMgbm90IGZvdW5kIG9yIGVtcHR5LiIpOworCisgICAgZm9yIChhdXRvIGlucHV0U291cmNl
IDogaW5wdXRTb3VyY2VzKSB7CisgICAgICAgIFJlZlB0cjxKU09OOjpPYmplY3Q+IGlucHV0U291
cmNlT2JqZWN0OworICAgICAgICBpZiAoIWlucHV0U291cmNlLT5hc09iamVjdChpbnB1dFNvdXJj
ZU9iamVjdCkpCisgICAgICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9B
TkRfREVUQUlMUyhJbnZhbGlkUGFyYW1ldGVyLCAiQW4gaW5wdXQgc291cmNlIGluIHRoZSAnaW5w
dXRTb3VyY2VzJyBwYXJhbWV0ZXIgd2FzIGludmFsaWQuIik7CisgICAgICAgIAorICAgICAgICBT
dHJpbmcgc291cmNlSWQ7CisgICAgICAgIGlmICghaW5wdXRTb3VyY2VPYmplY3QtPmdldFN0cmlu
ZyhBU0NJSUxpdGVyYWwoInNvdXJjZUlkIiksIHNvdXJjZUlkKSkKKyAgICAgICAgICAgIEFTWU5D
X0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKEludmFsaWRQYXJhbWV0ZXIs
ICJBbiBpbnB1dCBzb3VyY2UgaW4gdGhlICdpbnB1dFNvdXJjZXMnIHBhcmFtZXRlciBpcyBtaXNz
aW5nIGEgJ3NvdXJjZUlkJy4iKTsKKworICAgICAgICBTdHJpbmcgc291cmNlVHlwZTsKKyAgICAg
ICAgaWYgKCFpbnB1dFNvdXJjZU9iamVjdC0+Z2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgic291cmNl
VHlwZSIpLCBzb3VyY2VUeXBlKSkKKyAgICAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJ
TkVEX0VSUk9SX0FORF9ERVRBSUxTKEludmFsaWRQYXJhbWV0ZXIsICJBbiBpbnB1dCBzb3VyY2Ug
aW4gdGhlICdpbnB1dFNvdXJjZXMnIHBhcmFtZXRlciBpcyBtaXNzaW5nIGEgJ3NvdXJjZVR5cGUn
LiIpOworCisgICAgICAgIGF1dG8gcGFyc2VkSW5wdXRTb3VyY2VUeXBlID0gSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXV0b21hdGlvbkhlbHBlcnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNw
ZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpJbnB1dFNvdXJjZVR5cGU+KHNvdXJjZVR5cGUp
OworICAgICAgICBpZiAoIXBhcnNlZElucHV0U291cmNlVHlwZSkKKyAgICAgICAgICAgIEFTWU5D
X0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKEludmFsaWRQYXJhbWV0ZXIs
ICJBbiBpbnB1dCBzb3VyY2UgaW4gdGhlICdpbnB1dFNvdXJjZXMnIHBhcmFtZXRlciBoYXMgYW4g
aW52YWxpZCAnc291cmNlVHlwZScuIik7CisKKyAgICAgICAgU2ltdWxhdGVkSW5wdXRTb3VyY2U6
OlR5cGUgaW5wdXRTb3VyY2VUeXBlID0gc2ltdWxhdGVkSW5wdXRTb3VyY2VUeXBlRnJvbVByb3Rv
Y29sU291cmNlVHlwZSgqcGFyc2VkSW5wdXRTb3VyY2VUeXBlKTsKKyAgICAgICAgaWYgKGlucHV0
U291cmNlVHlwZSA9PSBTaW11bGF0ZWRJbnB1dFNvdXJjZTo6VHlwZTo6VG91Y2gpCisgICAgICAg
ICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhOb3RJbXBs
ZW1lbnRlZCwgIlRvdWNoIGlucHV0IHNvdXJjZXMgYXJlIG5vdCB5ZXQgc3VwcG9ydGVkLiIpOwor
CisgICAgICAgIGlmICh0eXBlVG9Tb3VyY2VJZE1hcC5jb250YWlucyhpbnB1dFNvdXJjZVR5cGUp
KQorICAgICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJ
TFMoSW52YWxpZFBhcmFtZXRlciwgIlR3byBpbnB1dCBzb3VyY2VzIHdpdGggdGhlIHNhbWUgdHlw
ZSB3ZXJlIHNwZWNpZmllZC4iKTsKKyAgICAgICAgaWYgKHNvdXJjZUlkVG9JbnB1dFNvdXJjZU1h
cC5jb250YWlucyhzb3VyY2VJZCkpCisgICAgICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVG
SU5FRF9FUlJPUl9BTkRfREVUQUlMUyhJbnZhbGlkUGFyYW1ldGVyLCAiVHdvIGlucHV0IHNvdXJj
ZXMgd2l0aCB0aGUgc2FtZSBzb3VyY2VJZCB3ZXJlIHNwZWNpZmllZC4iKTsKKworICAgICAgICB0
eXBlVG9Tb3VyY2VJZE1hcC5hZGQoaW5wdXRTb3VyY2VUeXBlLCBzb3VyY2VJZCk7CisgICAgICAg
IHNvdXJjZUlkVG9JbnB1dFNvdXJjZU1hcC5hZGQoc291cmNlSWQsICppbnB1dFNvdXJjZUZvclR5
cGUoaW5wdXRTb3VyY2VUeXBlKSk7CisgICAgfQorCisgICAgVmVjdG9yPFNpbXVsYXRlZElucHV0
S2V5RnJhbWU+IGtleUZyYW1lczsKKworICAgIGlmICghc3RlcHMubGVuZ3RoKCkpCisgICAgICAg
IEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKEludmFsaWRQYXJh
bWV0ZXIsICJUaGUgcGFyYW1ldGVyICdzdGVwcycgd2FzIG5vdCBmb3VuZCBvciBlbXB0eS4iKTsK
KworICAgIGZvciAoYXV0byBzdGVwIDogc3RlcHMpIHsKKyAgICAgICAgUmVmUHRyPEpTT046Ok9i
amVjdD4gc3RlcE9iamVjdDsKKyAgICAgICAgaWYgKCFzdGVwLT5hc09iamVjdChzdGVwT2JqZWN0
KSkKKyAgICAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRB
SUxTKEludmFsaWRQYXJhbWV0ZXIsICJBIHN0ZXAgaW4gdGhlICdzdGVwcycgcGFyYW1ldGVyIHdh
cyBub3QgYW4gb2JqZWN0LiIpOworCisgICAgICAgIFJlZlB0cjxKU09OOjpBcnJheT4gc3RlcFN0
YXRlczsKKyAgICAgICAgaWYgKCFzdGVwT2JqZWN0LT5nZXRBcnJheShBU0NJSUxpdGVyYWwoInN0
YXRlcyIpLCBzdGVwU3RhdGVzKSkKKyAgICAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJ
TkVEX0VSUk9SX0FORF9ERVRBSUxTKEludmFsaWRQYXJhbWV0ZXIsICJBIHN0ZXAgaXMgbWlzc2lu
ZyB0aGUgJ3N0YXRlcycgcHJvcGVydHkuIik7CisKKyAgICAgICAgVmVjdG9yPFNpbXVsYXRlZElu
cHV0S2V5RnJhbWU6OlN0YXRlRW50cnk+IGVudHJpZXM7CisgICAgICAgIGVudHJpZXMucmVzZXJ2
ZUNhcGFjaXR5KHN0ZXBTdGF0ZXMtPmxlbmd0aCgpKTsKKworICAgICAgICBmb3IgKGF1dG8gc3Rh
dGUgOiAqc3RlcFN0YXRlcykgeworICAgICAgICAgICAgUmVmUHRyPEpTT046Ok9iamVjdD4gc3Rh
dGVPYmplY3Q7CisgICAgICAgICAgICBpZiAoIXN0YXRlLT5hc09iamVjdChzdGF0ZU9iamVjdCkp
CisgICAgICAgICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RF
VEFJTFMoSW52YWxpZFBhcmFtZXRlciwgIkVuY291bnRlcmVkIGEgbm9uLW9iamVjdCBzdGVwIHN0
YXRlLiIpOworCisgICAgICAgICAgICBTdHJpbmcgc291cmNlSWQ7CisgICAgICAgICAgICBpZiAo
IXN0YXRlT2JqZWN0LT5nZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJzb3VyY2VJZCIpLCBzb3VyY2VJ
ZCkpCisgICAgICAgICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5E
X0RFVEFJTFMoSW52YWxpZFBhcmFtZXRlciwgIlN0ZXAgc3RhdGUgbGFja3MgcmVxdWlyZWQgJ3Nv
dXJjZUlkJyBwcm9wZXJ0eS4iKTsKKworICAgICAgICAgICAgaWYgKCFzb3VyY2VJZFRvSW5wdXRT
b3VyY2VNYXAuY29udGFpbnMoc291cmNlSWQpKQorICAgICAgICAgICAgICAgIEFTWU5DX0ZBSUxf
V0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKEludmFsaWRQYXJhbWV0ZXIsICJVbmtu
b3duICdzb3VyY2VJZCcgc3BlY2lmaWVkLiIpOworCisgICAgICAgICAgICBTaW11bGF0ZWRJbnB1
dFNvdXJjZSYgaW5wdXRTb3VyY2UgPSAqc291cmNlSWRUb0lucHV0U291cmNlTWFwLmdldChzb3Vy
Y2VJZCk7CisgICAgICAgICAgICBTaW11bGF0ZWRJbnB1dFNvdXJjZVN0YXRlIHNvdXJjZVN0YXRl
IHsgfTsKKworICAgICAgICAgICAgU3RyaW5nIHByZXNzZWRDaGFyS2V5U3RyaW5nOworICAgICAg
ICAgICAgaWYgKHN0YXRlT2JqZWN0LT5nZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJwcmVzc2VkQ2hh
cktleSIpLCBwcmVzc2VkQ2hhcktleVN0cmluZykpCisgICAgICAgICAgICAgICAgc291cmNlU3Rh
dGUucHJlc3NlZENoYXJLZXkgPSBwcmVzc2VkQ2hhcktleVN0cmluZy5jaGFyYWN0ZXJBdCgwKTsK
KworICAgICAgICAgICAgU3RyaW5nIHByZXNzZWRWaXJ0dWFsS2V5U3RyaW5nOworICAgICAgICAg
ICAgaWYgKHN0YXRlT2JqZWN0LT5nZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJwcmVzc2VkVmlydHVh
bEtleSIpLCBwcmVzc2VkVmlydHVhbEtleVN0cmluZykpCisgICAgICAgICAgICAgICAgc291cmNl
U3RhdGUucHJlc3NlZFZpcnR1YWxLZXkgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
SGVscGVyczo6cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1
dG9tYXRpb246OlZpcnR1YWxLZXk+KHByZXNzZWRWaXJ0dWFsS2V5U3RyaW5nKTsKKworICAgICAg
ICAgICAgU3RyaW5nIHByZXNzZWRCdXR0b25TdHJpbmc7CisgICAgICAgICAgICBpZiAoc3RhdGVP
YmplY3QtPmdldFN0cmluZyhBU0NJSUxpdGVyYWwoInByZXNzZWRCdXR0b24iKSwgcHJlc3NlZEJ1
dHRvblN0cmluZykpIHsKKyAgICAgICAgICAgICAgICBhdXRvIHByb3RvY29sQnV0dG9uID0gSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbkhlbHBlcnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0
cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1dHRvbj4ocHJlc3Nl
ZEJ1dHRvblN0cmluZyk7CisgICAgICAgICAgICAgICAgc291cmNlU3RhdGUucHJlc3NlZE1vdXNl
QnV0dG9uID0gcHJvdG9jb2xNb3VzZUJ1dHRvblRvV2ViTW91c2VFdmVudEJ1dHRvbihwcm90b2Nv
bEJ1dHRvbi52YWx1ZV9vcihJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1
dHRvbjo6Tm9uZSkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBSZWZQdHI8SlNPTjo6
T2JqZWN0PiBsb2NhdGlvbk9iamVjdDsKKyAgICAgICAgICAgIGlmIChzdGF0ZU9iamVjdC0+Z2V0
T2JqZWN0KEFTQ0lJTGl0ZXJhbCgibG9jYXRpb24iKSwgbG9jYXRpb25PYmplY3QpKSB7CisgICAg
ICAgICAgICAgICAgaW50IHgsIHk7CisgICAgICAgICAgICAgICAgaWYgKGxvY2F0aW9uT2JqZWN0
LT5nZXRJbnRlZ2VyKEFTQ0lJTGl0ZXJhbCgieCIpLCB4KSAmJiBsb2NhdGlvbk9iamVjdC0+Z2V0
SW50ZWdlcihBU0NJSUxpdGVyYWwoInkiKSwgeSkpCisgICAgICAgICAgICAgICAgICAgIHNvdXJj
ZVN0YXRlLmxvY2F0aW9uID0gV2ViQ29yZTo6SW50UG9pbnQoeCwgeSk7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGludCBwYXJzZWREdXJhdGlvbjsKKyAgICAgICAgICAgIGlmIChzdGF0
ZU9iamVjdC0+Z2V0SW50ZWdlcihBU0NJSUxpdGVyYWwoImR1cmF0aW9uIiksIHBhcnNlZER1cmF0
aW9uKSkKKyAgICAgICAgICAgICAgICBzb3VyY2VTdGF0ZS5kdXJhdGlvbiA9IFNlY29uZHM6OmZy
b21NaWxsaXNlY29uZHMocGFyc2VkRHVyYXRpb24pOworCisgICAgICAgICAgICBlbnRyaWVzLnVu
Y2hlY2tlZEFwcGVuZChzdGQ6OnBhaXI8U2ltdWxhdGVkSW5wdXRTb3VyY2UmLCBTaW11bGF0ZWRJ
bnB1dFNvdXJjZVN0YXRlPiB7IGlucHV0U291cmNlLCBzb3VyY2VTdGF0ZSB9KTsKKyAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAga2V5RnJhbWVzLmFwcGVuZChTaW11bGF0ZWRJbnB1dEtleUZy
YW1lKFdURk1vdmUoZW50cmllcykpKTsKKyAgICB9CisKKyAgICBTaW11bGF0ZWRJbnB1dERpc3Bh
dGNoZXImIGlucHV0RGlzcGF0Y2hlciA9IGlucHV0RGlzcGF0Y2hlckZvclBhZ2UoKnBhZ2UpOwor
ICAgIGlmIChpbnB1dERpc3BhdGNoZXIuaXNBY3RpdmUoKSkgeworICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5E
X0RFVEFJTFMoSW50ZXJuYWxFcnJvciwgIkEgcHJldmlvdXMgaW50ZXJhY3Rpb24gaXMgc3RpbGwg
dW5kZXJ3YXkuIik7CisgICAgfQorCisgICAgLy8gRGVsZWdhdGUgdGhlIHJlc3Qgb2YgwqcxNy40
IERpc3BhdGNoaW5nIEFjdGlvbnMgdG8gdGhlIGRpc3BhdGNoZXIuCisgICAgaW5wdXREaXNwYXRj
aGVyLnJ1bihXVEZNb3ZlKGtleUZyYW1lcyksIG1faW5wdXRTb3VyY2VzLCBbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShz
dGQ6Om9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+IGVycm9yKSB7CisgICAgICAgIGlm
IChlcnJvcikKKyAgICAgICAgICAgIGNhbGxiYWNrLT5zZW5kRmFpbHVyZShlcnJvci52YWx1ZSgp
LnRvUHJvdG9jb2xTdHJpbmcoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNhbGxiYWNr
LT5zZW5kU3VjY2VzcygpOworICAgIH0pOworI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKSB8fCBQ
TEFURk9STShHVEspCit9CisKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmNhbmNlbEludGVy
YWN0aW9uU2VxdWVuY2UoY29uc3QgU3RyaW5nJiBoYW5kbGUsIFJlZjxDYW5jZWxJbnRlcmFjdGlv
blNlcXVlbmNlQ2FsbGJhY2s+JiYgY2FsbGJhY2spCit7CisgICAgLy8gVGhpcyBjb21tYW5kIGlt
cGxlbWVudHMgV2ViS2l0IHN1cHBvcnQgZm9yIMKnMTcuNiBSZWxlYXNlIEFjdGlvbnMuCisKKyNp
ZiAhVVNFKEFQUEtJVCkgJiYgIVBMQVRGT1JNKEdUSykKKyAgICBBU1lOQ19GQUlMX1dJVEhfUFJF
REVGSU5FRF9FUlJPUihOb3RJbXBsZW1lbnRlZCk7CisjZWxzZQorICAgIFdlYlBhZ2VQcm94eSog
cGFnZSA9IHdlYlBhZ2VQcm94eUZvckhhbmRsZShoYW5kbGUpOworICAgIGlmICghcGFnZSkKKyAg
ICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1IoV2luZG93Tm90Rm91bmQpOwor
CisgICAgVmVjdG9yPFNpbXVsYXRlZElucHV0S2V5RnJhbWU+IGtleUZyYW1lcyh7IFNpbXVsYXRl
ZElucHV0S2V5RnJhbWU6OmtleUZyYW1lVG9SZXNldElucHV0U291cmNlcyhtX2lucHV0U291cmNl
cykgfSk7CisgICAgU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyJiBpbnB1dERpc3BhdGNoZXIgPSBp
bnB1dERpc3BhdGNoZXJGb3JQYWdlKCpwYWdlKTsKKyAgICBpbnB1dERpc3BhdGNoZXIuY2FuY2Vs
KCk7CisgICAgCisgICAgaW5wdXREaXNwYXRjaGVyLnJ1bihXVEZNb3ZlKGtleUZyYW1lcyksIG1f
aW5wdXRTb3VyY2VzLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShzdGQ6Om9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5k
RXJyb3I+IGVycm9yKSB7CisgICAgICAgIGlmIChlcnJvcikKKyAgICAgICAgICAgIGNhbGxiYWNr
LT5zZW5kRmFpbHVyZShlcnJvci52YWx1ZSgpLnRvUHJvdG9jb2xTdHJpbmcoKSk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIGNhbGxiYWNrLT5zZW5kU3VjY2VzcygpOworICAgIH0pOworI2Vu
ZGlmIC8vIFBMQVRGT1JNKENPQ09BKSB8fCBQTEFURk9STShHVEspCit9CisKIHZvaWQgV2ViQXV0
b21hdGlvblNlc3Npb246OnRha2VTY3JlZW5zaG90KGNvbnN0IFN0cmluZyYgaGFuZGxlLCBjb25z
dCBTdHJpbmcqIG9wdGlvbmFsRnJhbWVIYW5kbGUsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxOb2Rl
SGFuZGxlLCBjb25zdCBib29sKiBvcHRpb25hbFNjcm9sbEludG9WaWV3SWZOZWVkZWQsIGNvbnN0
IGJvb2wqIG9wdGlvbmFsQ2xpcFRvVmlld3BvcnQsIFJlZjxUYWtlU2NyZWVuc2hvdENhbGxiYWNr
PiYmIGNhbGxiYWNrKQogewogICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHdlYlBhZ2VQcm94eUZv
ckhhbmRsZShoYW5kbGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0
b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCmluZGV4IDNhZTM1ZTZmN2VjZGM1OGEz
ZGQ5NWU5ODA4MGVmNGEzMjk1Y2E3MTkuLjRkMjQ4Y2M5MTAyZmQzMjQ1OWM5NTA1MmFkNmNhZTBm
MzNiMmUxNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24v
V2ViQXV0b21hdGlvblNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRv
bWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRl
ICJBdXRvbWF0aW9uRnJvbnRlbmREaXNwYXRjaGVycy5oIgogI2luY2x1ZGUgIkNvbm5lY3Rpb24u
aCIKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKKyNpbmNsdWRlICJTaW11bGF0ZWRJbnB1
dERpc3BhdGNoZXIuaCIKICNpbmNsdWRlICJXZWJFdmVudC5oIgogI2luY2x1ZGUgPHd0Zi9Db21w
bGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC03Niw3ICs3Nyw3
IEBAIGNsYXNzIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHk7CiBjbGFzcyBXZWJQYWdl
UHJveHk7CiBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKIAotc3RydWN0IEF1dG9tYXRpb25Db21tYW5k
RXJyb3IgeworY2xhc3MgQXV0b21hdGlvbkNvbW1hbmRFcnJvciB7CiBwdWJsaWM6CiAgICAgSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlIHR5cGU7CiAgICAgc3Rk
OjpvcHRpb25hbDxTdHJpbmc+IG1lc3NhZ2UgeyBzdGQ6Om51bGxvcHQgfTsKQEAgLTkxLDExICs5
MiwxNCBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoKTsKIH07CiAKK3Vz
aW5nIEF1dG9tYXRpb25Db21wbGV0aW9uSGFuZGxlciA9IFdURjo6Q29tcGxldGlvbkhhbmRsZXI8
dm9pZChzdGQ6Om9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+KT47CisKIGNsYXNzIFdl
YkF1dG9tYXRpb25TZXNzaW9uIGZpbmFsIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9i
amVjdDo6VHlwZTo6QXV0b21hdGlvblNlc3Npb24+LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2
ZXIKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICAgICAsIHB1YmxpYyBJbnNwZWN0b3I6
OlJlbW90ZUF1dG9tYXRpb25UYXJnZXQKICNlbmRpZgogICAgICwgcHVibGljIEluc3BlY3Rvcjo6
QXV0b21hdGlvbkJhY2tlbmREaXNwYXRjaGVySGFuZGxlcgorICAgICwgcHVibGljIFNpbXVsYXRl
ZElucHV0RGlzcGF0Y2hlcjo6Q2xpZW50CiB7CiBwdWJsaWM6CiAgICAgV2ViQXV0b21hdGlvblNl
c3Npb24oKTsKQEAgLTEzMSw2ICsxMzUsMTAgQEAgcHVibGljOgogI2VuZGlmCiAgICAgdm9pZCB0
ZXJtaW5hdGUoKTsKIAorICAgIC8vIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6Q2xpZW50IEFQ
SQorICAgIHZvaWQgc2ltdWxhdGVNb3VzZUludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYsIE1vdXNl
SW50ZXJhY3Rpb24sIFdlYk1vdXNlRXZlbnQ6OkJ1dHRvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmIGxvY2F0aW9uSW5WaWV3LCBBdXRvbWF0aW9uQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7
CisgICAgdm9pZCBzaW11bGF0ZUtleWJvYXJkSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiwgS2V5
Ym9hcmRJbnRlcmFjdGlvbiwgc3RkOjpvcHRpb25hbDxWaXJ0dWFsS2V5Piwgc3RkOjpvcHRpb25h
bDxDaGFyS2V5PiwgQXV0b21hdGlvbkNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOworCiAgICAg
Ly8gSW5zcGVjdG9yOjpBdXRvbWF0aW9uQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIEFQSQogICAg
IC8vIE5PVEU6IHRoZSBzZXQgb2YgZGVjbGFyYXRpb25zIGluY2x1ZGVkIGluIHRoaXMgaW50ZXJm
YWNlIGRlcGVuZCBvbiB0aGUgInBsYXRmb3JtIiBwcm9wZXJ0eSBpbiBBdXRvbWF0aW9uLmpzb24K
ICAgICAvLyBhbmQgdGhlIC0tcGxhdGZvcm0gYXJndW1lbnQgcGFzc2VkIHRvIHRoZSBwcm90b2Nv
bCBiaW5kaW5ncyBnZW5lcmF0b3IuCkBAIC0xNTEsNiArMTU5LDggQEAgcHVibGljOgogICAgIHZv
aWQgZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24oY29uc3QgU3RyaW5nJiBicm93c2luZ0NvbnRl
eHRIYW5kbGUsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxGcmFtZUhhbmRsZSwgY29uc3QgU3RyaW5n
JiBmdW5jdGlvbiwgY29uc3QgSlNPTjo6QXJyYXkmIGFyZ3VtZW50cywgY29uc3QgYm9vbCogb3B0
aW9uYWxFeHBlY3RzSW1wbGljaXRDYWxsYmFja0FyZ3VtZW50LCBjb25zdCBpbnQqIG9wdGlvbmFs
Q2FsbGJhY2tUaW1lb3V0LCBSZWY8SW5zcGVjdG9yOjpBdXRvbWF0aW9uQmFja2VuZERpc3BhdGNo
ZXJIYW5kbGVyOjpFdmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbkNhbGxiYWNrPiYmKSBvdmVycmlk
ZTsKICAgICB2b2lkIHBlcmZvcm1Nb3VzZUludGVyYWN0aW9uKGNvbnN0IFN0cmluZyYgaGFuZGxl
LCBjb25zdCBKU09OOjpPYmplY3QmIHJlcXVlc3RlZFBvc2l0aW9uLCBjb25zdCBTdHJpbmcmIG1v
dXNlQnV0dG9uLCBjb25zdCBTdHJpbmcmIG1vdXNlSW50ZXJhY3Rpb24sIGNvbnN0IEpTT046OkFy
cmF5JiBrZXlNb2RpZmllcnMsIFJlZjxQZXJmb3JtTW91c2VJbnRlcmFjdGlvbkNhbGxiYWNrPiYm
KSBmaW5hbDsKICAgICB2b2lkIHBlcmZvcm1LZXlib2FyZEludGVyYWN0aW9ucyhjb25zdCBTdHJp
bmcmIGhhbmRsZSwgY29uc3QgSlNPTjo6QXJyYXkmIGludGVyYWN0aW9ucywgUmVmPFBlcmZvcm1L
ZXlib2FyZEludGVyYWN0aW9uc0NhbGxiYWNrPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHBlcmZv
cm1JbnRlcmFjdGlvblNlcXVlbmNlKGNvbnN0IFN0cmluZyYgaGFuZGxlLCBjb25zdCBKU09OOjpB
cnJheSYgc291cmNlcywgY29uc3QgSlNPTjo6QXJyYXkmIHN0ZXBzLCBSZWY8UGVyZm9ybUludGVy
YWN0aW9uU2VxdWVuY2VDYWxsYmFjaz4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBjYW5jZWxJbnRl
cmFjdGlvblNlcXVlbmNlKGNvbnN0IFN0cmluZyYgaGFuZGxlLCBSZWY8Q2FuY2VsSW50ZXJhY3Rp
b25TZXF1ZW5jZUNhbGxiYWNrPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHRha2VTY3JlZW5zaG90
KGNvbnN0IFN0cmluZyYgaGFuZGxlLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsRnJhbWVIYW5kbGUs
IGNvbnN0IFN0cmluZyogb3B0aW9uYWxOb2RlSGFuZGxlLCBjb25zdCBib29sKiBvcHRpb25hbFNj
cm9sbEludG9WaWV3SWZOZWVkZWQsIGNvbnN0IGJvb2wqIG9wdGlvbmFsQ2xpcFRvVmlld3BvcnQs
IFJlZjxUYWtlU2NyZWVuc2hvdENhbGxiYWNrPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHJlc29s
dmVDaGlsZEZyYW1lSGFuZGxlKGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0SGFuZGxlLCBj
b25zdCBTdHJpbmcqIG9wdGlvbmFsRnJhbWVIYW5kbGUsIGNvbnN0IGludCogb3B0aW9uYWxPcmRp
bmFsLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsTmFtZSwgY29uc3QgU3RyaW5nKiBvcHRpb25hbE5v
ZGVIYW5kbGUsIFJlZjxSZXNvbHZlQ2hpbGRGcmFtZUhhbmRsZUNhbGxiYWNrPiYmKSBvdmVycmlk
ZTsKICAgICB2b2lkIHJlc29sdmVQYXJlbnRGcmFtZUhhbmRsZShjb25zdCBTdHJpbmcmIGJyb3dz
aW5nQ29udGV4dEhhbmRsZSwgY29uc3QgU3RyaW5nJiBmcmFtZUhhbmRsZSwgUmVmPFJlc29sdmVQ
YXJlbnRGcmFtZUhhbmRsZUNhbGxiYWNrPiYmKSBvdmVycmlkZTsKQEAgLTE3NSw3ICsxODUsMTAg
QEAgcHVibGljOgogI2VuZGlmCiAKICAgICAvLyBFdmVudCBTaW11bGF0aW9uIFN1cHBvcnQuCi0g
ICAgYm9vbCBpc1NpbXVsYXRpbmdVc2VySW50ZXJhY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3Np
bXVsYXRpbmdVc2VySW50ZXJhY3Rpb247IH0KKyAgICBib29sIGlzU2ltdWxhdGluZ1VzZXJJbnRl
cmFjdGlvbigpIGNvbnN0OworICAgIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlciYgaW5wdXREaXNw
YXRjaGVyRm9yUGFnZShXZWJQYWdlUHJveHkmKTsKKyAgICBTaW11bGF0ZWRJbnB1dFNvdXJjZSog
aW5wdXRTb3VyY2VGb3JUeXBlKFNpbXVsYXRlZElucHV0U291cmNlOjpUeXBlKSBjb25zdDsKKwog
I2lmIFBMQVRGT1JNKE1BQykKICAgICBib29sIHdhc0V2ZW50U3ludGhlc2l6ZWRGb3JBdXRvbWF0
aW9uKE5TRXZlbnQgKik7CiAgICAgdm9pZCBtYXJrRXZlbnRBc1N5bnRoZXNpemVkRm9yQXV0b21h
dGlvbihOU0V2ZW50ICopOwpAQCAtMjE1LDkgKzIyOCw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBk
aWREZWxldGVDb29raWUodWludDY0X3QgY2FsbGJhY2tJRCwgY29uc3QgU3RyaW5nJiBlcnJvclR5
cGUpOwogCiAgICAgLy8gUGxhdGZvcm0tZGVwZW5kZW50IGltcGxlbWVudGF0aW9ucy4KLSAgICB2
b2lkIHBsYXRmb3JtU2ltdWxhdGVNb3VzZUludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYsIGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JiB2aWV3UG9zaXRpb24sIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1
dG9tYXRpb246Ok1vdXNlSW50ZXJhY3Rpb24sIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRp
b246Ok1vdXNlQnV0dG9uLCBXZWJFdmVudDo6TW9kaWZpZXJzKTsKLSAgICAvLyBTaW11bGF0ZXMg
YSBzaW5nbGUgdmlydHVhbCBrZXkgYmVpbmcgcHJlc3NlZCwgc3VjaCBhcyBDb250cm9sLCBGLWtl
eXMsIE51bXBhZCBrZXlzLCBldGMuIGFzIGFsbG93ZWQgYnkgdGhlIHByb3RvY29sLgotICAgIHZv
aWQgcGxhdGZvcm1TaW11bGF0ZUtleVN0cm9rZShXZWJQYWdlUHJveHkmLCBJbnNwZWN0b3I6OlBy
b3RvY29sOjpBdXRvbWF0aW9uOjpLZXlib2FyZEludGVyYWN0aW9uVHlwZSwgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleSk7CisgICAgdm9pZCBwbGF0Zm9ybVNpbXVs
YXRlTW91c2VJbnRlcmFjdGlvbihXZWJQYWdlUHJveHkmLCBNb3VzZUludGVyYWN0aW9uLCBXZWJN
b3VzZUV2ZW50OjpCdXR0b24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBsb2NhdGlvbkluVmll
dywgV2ViRXZlbnQ6Ok1vZGlmaWVycyBrZXlNb2RpZmllcnMpOworICAgIC8vIFNpbXVsYXRlcyBh
IHNpbmdsZSB2aXJ0dWFsIG9yIGNoYXIga2V5IGJlaW5nIHByZXNzZWQvcmVsZWFzZWQsIHN1Y2gg
YXMgJ2EnLCBDb250cm9sLCBGLWtleXMsIE51bXBhZCBrZXlzLCBldGMuIGFzIGFsbG93ZWQgYnkg
dGhlIHByb3RvY29sLgorICAgIHZvaWQgcGxhdGZvcm1TaW11bGF0ZUtleWJvYXJkSW50ZXJhY3Rp
b24oV2ViUGFnZVByb3h5JiwgS2V5Ym9hcmRJbnRlcmFjdGlvbiwgc3RkOjpvcHRpb25hbDxWaXJ0
dWFsS2V5Piwgc3RkOjpvcHRpb25hbDxDaGFyS2V5Pik7CiAgICAgLy8gU2ltdWxhdGVzIGtleSBw
cmVzc2VzIHRvIHByb2R1Y2UgdGhlIGNvZGVwb2ludHMgaW4gYSBzdHJpbmcuIE9uZSBvciBtb3Jl
IGNvZGUgcG9pbnRzIGFyZSBkZWxpdmVyZWQgYXRvbWljYWxseSBhdCBncmFwaGVtZSBjbHVzdGVy
IGJvdW5kYXJpZXMuCiAgICAgdm9pZCBwbGF0Zm9ybVNpbXVsYXRlS2V5U2VxdWVuY2UoV2ViUGFn
ZVByb3h5JiwgY29uc3QgU3RyaW5nJik7CiAgICAgLy8gR2V0IGJhc2U2NCBlbmNvZGVkIFBORyBk
YXRhIGZyb20gYSBiaXRtYXAuCkBAIC0yODksMTMgKzMwMiwxNSBAQCBwcml2YXRlOgogCiAgICAg
Ym9vbCBtX3Blcm1pc3Npb25Gb3JHZXRVc2VyTWVkaWEgeyB0cnVlIH07CiAKLSAgICAvLyBUcnVl
IGlmIGEgc3ludGhlc2l6ZWQga2V5IGV2ZW50IGlzIHN0aWxsIGJlaW5nIHByb2Nlc3NlZC4KLSAg
ICBib29sIG1fc2ltdWxhdGluZ1VzZXJJbnRlcmFjdGlvbiB7IGZhbHNlIH07Ci0KICAgICAvLyBL
ZWVwIHRyYWNrIG9mIGN1cnJlbnRseSBhY3RpdmUgbW9kaWZpZXJzIGFjcm9zcyBtdWx0aXBsZSBr
ZXlzdHJva2VzLgogICAgIC8vIE1vc3QgcGxhdGZvcm1zIGRvIG5vdCB0cmFjayBjdXJyZW50IG1v
ZGlmaWVycyBmcm9tIHN5bnRoZXNpemVkIGV2ZW50cy4KICAgICB1bnNpZ25lZCBtX2N1cnJlbnRN
b2RpZmllcnMgeyAwIH07CiAKKyAgICAvLyBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIgQVBJcyB0
YWtlIGEgc2V0IG9mIGlucHV0IHNvdXJjZXMuIFdlIGFsc28gaW50ZXJuIHRoZXNlCisgICAgLy8g
c28gdGhhdCBwcmV2aW91cyBpbnB1dCBzb3VyY2Ugc3RhdGUgaXMgdXNlZCBhcyBpbml0aWFsIHN0
YXRlIGZvciBsYXRlciBjb21tYW5kcy4KKyAgICBIYXNoU2V0PFJlZjxTaW11bGF0ZWRJbnB1dFNv
dXJjZT4+IG1faW5wdXRTb3VyY2VzOworICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZjxTaW11bGF0
ZWRJbnB1dERpc3BhdGNoZXI+PiBtX2lucHV0RGlzcGF0Y2hlcnNCeVBhZ2U7CisKICNpZiBFTkFC
TEUoUkVNT1RFX0lOU1BFQ1RPUikKICAgICBJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogbV9y
ZW1vdGVDaGFubmVsIHsgbnVsbHB0ciB9OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2d0ay9XZWJBdXRvbWF0aW9uU2Vzc2lvbkd0ay5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2d0ay9XZWJBdXRvbWF0aW9uU2Vz
c2lvbkd0ay5jcHAKaW5kZXggMjhjZjc5NDhjODNiN2NkMTkyYzAzYzA3YTUyYTkwMWRiNjhkZWNk
YS4uOGM2Mjg2NGRlMTJiN2JhMzVhMjYxOGFhMTM1OWZlNGUwMzRhM2ZkZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9ndGsvV2ViQXV0b21hdGlvblNlc3Np
b25HdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vZ3RrL1dl
YkF1dG9tYXRpb25TZXNzaW9uR3RrLmNwcApAQCAtNDgsMTUgKzQ4LDE1IEBAIHN0YXRpYyB1bnNp
Z25lZCBtb2RpZmllcnNUb0V2ZW50U3RhdGUoV2ViRXZlbnQ6Ok1vZGlmaWVycyBtb2RpZmllcnMp
CiAgICAgcmV0dXJuIHN0YXRlOwogfQogCi1zdGF0aWMgdW5zaWduZWQgbW91c2VCdXR0b25Ub0dk
a0J1dHRvbihJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1dHRvbiBidXR0
b24pCitzdGF0aWMgdW5zaWduZWQgbW91c2VCdXR0b25Ub0dka0J1dHRvbihXZWJNb3VzZUV2ZW50
OjpCdXR0b24gYnV0dG9uKQogewogICAgIHN3aXRjaCAoYnV0dG9uKSB7Ci0gICAgY2FzZSBJbnNw
ZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1dHRvbjo6Tm9uZToKLSAgICBjYXNl
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9uOjpMZWZ0OgorICAg
IGNhc2UgV2ViTW91c2VFdmVudDo6Tm9CdXR0b246CisgICAgY2FzZSBXZWJNb3VzZUV2ZW50OjpM
ZWZ0QnV0dG9uOgogICAgICAgICByZXR1cm4gR0RLX0JVVFRPTl9QUklNQVJZOwotICAgIGNhc2Ug
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VCdXR0b246Ok1pZGRsZToKKyAg
ICBjYXNlIFdlYk1vdXNlRXZlbnQ6Ok1pZGRsZUJ1dHRvbjoKICAgICAgICAgcmV0dXJuIEdES19C
VVRUT05fTUlERExFOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6
TW91c2VCdXR0b246OlJpZ2h0OgorICAgIGNhc2UgV2ViTW91c2VFdmVudDo6UmlnaHRCdXR0b246
CiAgICAgICAgIHJldHVybiBHREtfQlVUVE9OX1NFQ09OREFSWTsKICAgICB9CiAgICAgcmV0dXJu
IEdES19CVVRUT05fUFJJTUFSWTsKQEAgLTEwMSwzMCArMTAxLDMwIEBAIHN0YXRpYyB2b2lkIGRv
TW90aW9uRXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBs
b2NhdGlvbiwKICAgICBndGtfbWFpbl9kb19ldmVudChldmVudC5nZXQoKSk7CiB9CiAKLXZvaWQg
V2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVNb3VzZUludGVyYWN0aW9uKFdl
YlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHZpZXdQb3NpdGlvbiwg
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VJbnRlcmFjdGlvbiBpbnRlcmFj
dGlvbiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VCdXR0b24gYnV0dG9u
LCBXZWJFdmVudDo6TW9kaWZpZXJzIGtleU1vZGlmaWVycykKK3ZvaWQgV2ViQXV0b21hdGlvblNl
c3Npb246OnBsYXRmb3JtU2ltdWxhdGVNb3VzZUludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYgcGFn
ZSwgTW91c2VJbnRlcmFjdGlvbiBpbnRlcmFjdGlvbiwgV2ViTW91c2VFdmVudDo6QnV0dG9uIGJ1
dHRvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGxvY2F0aW9uSW5WaWV3LCBXZWJFdmVudDo6
TW9kaWZpZXJzIGtleU1vZGlmaWVycykKIHsKICAgICB1bnNpZ25lZCBnZGtCdXR0b24gPSBtb3Vz
ZUJ1dHRvblRvR2RrQnV0dG9uKGJ1dHRvbik7CiAgICAgdW5zaWduZWQgc3RhdGUgPSBtb2RpZmll
cnNUb0V2ZW50U3RhdGUoa2V5TW9kaWZpZXJzKTsKIAogICAgIHN3aXRjaCAoaW50ZXJhY3Rpb24p
IHsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlSW50ZXJh
Y3Rpb246Ok1vdmU6Ci0gICAgICAgIGRvTW90aW9uRXZlbnQocGFnZS52aWV3V2lkZ2V0KCksIHZp
ZXdQb3NpdGlvbiwgc3RhdGUpOworICAgIGNhc2UgTW91c2VJbnRlcmFjdGlvbjo6TW92ZToKKyAg
ICAgICAgZG9Nb3Rpb25FdmVudChwYWdlLnZpZXdXaWRnZXQoKSwgbG9jYXRpb25JblZpZXcsIHN0
YXRlKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRv
bWF0aW9uOjpNb3VzZUludGVyYWN0aW9uOjpEb3duOgotICAgICAgICBkb01vdXNlRXZlbnQoR0RL
X0JVVFRPTl9QUkVTUywgcGFnZS52aWV3V2lkZ2V0KCksIHZpZXdQb3NpdGlvbiwgZ2RrQnV0dG9u
LCBzdGF0ZSk7CisgICAgY2FzZSBNb3VzZUludGVyYWN0aW9uOjpEb3duOgorICAgICAgICBkb01v
dXNlRXZlbnQoR0RLX0JVVFRPTl9QUkVTUywgcGFnZS52aWV3V2lkZ2V0KCksIGxvY2F0aW9uSW5W
aWV3LCBnZGtCdXR0b24sIHN0YXRlKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUludGVyYWN0aW9uOjpVcDoKLSAgICAgICAg
ZG9Nb3VzZUV2ZW50KEdES19CVVRUT05fUkVMRUFTRSwgcGFnZS52aWV3V2lkZ2V0KCksIHZpZXdQ
b3NpdGlvbiwgZ2RrQnV0dG9uLCBzdGF0ZSk7CisgICAgY2FzZSBNb3VzZUludGVyYWN0aW9uOjpV
cDoKKyAgICAgICAgZG9Nb3VzZUV2ZW50KEdES19CVVRUT05fUkVMRUFTRSwgcGFnZS52aWV3V2lk
Z2V0KCksIGxvY2F0aW9uSW5WaWV3LCBnZGtCdXR0b24sIHN0YXRlKTsKICAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUludGVyYWN0
aW9uOjpTaW5nbGVDbGljazoKLSAgICAgICAgZG9Nb3VzZUV2ZW50KEdES19CVVRUT05fUFJFU1Ms
IHBhZ2Uudmlld1dpZGdldCgpLCB2aWV3UG9zaXRpb24sIGdka0J1dHRvbiwgc3RhdGUpOwotICAg
ICAgICBkb01vdXNlRXZlbnQoR0RLX0JVVFRPTl9SRUxFQVNFLCBwYWdlLnZpZXdXaWRnZXQoKSwg
dmlld1Bvc2l0aW9uLCBnZGtCdXR0b24sIHN0YXRlKTsKKyAgICBjYXNlIE1vdXNlSW50ZXJhY3Rp
b246OlNpbmdsZUNsaWNrOgorICAgICAgICBkb01vdXNlRXZlbnQoR0RLX0JVVFRPTl9QUkVTUywg
cGFnZS52aWV3V2lkZ2V0KCksIGxvY2F0aW9uSW5WaWV3LCBnZGtCdXR0b24sIHN0YXRlKTsKKyAg
ICAgICAgZG9Nb3VzZUV2ZW50KEdES19CVVRUT05fUkVMRUFTRSwgcGFnZS52aWV3V2lkZ2V0KCks
IGxvY2F0aW9uSW5WaWV3LCBnZGtCdXR0b24sIHN0YXRlKTsKICAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUludGVyYWN0aW9uOjpE
b3VibGVDbGljazoKLSAgICAgICAgZG9Nb3VzZUV2ZW50KEdES19CVVRUT05fUFJFU1MsIHBhZ2Uu
dmlld1dpZGdldCgpLCB2aWV3UG9zaXRpb24sIGdka0J1dHRvbiwgc3RhdGUpOwotICAgICAgICBk
b01vdXNlRXZlbnQoR0RLX0JVVFRPTl9SRUxFQVNFLCBwYWdlLnZpZXdXaWRnZXQoKSwgdmlld1Bv
c2l0aW9uLCBnZGtCdXR0b24sIHN0YXRlKTsKLSAgICAgICAgZG9Nb3VzZUV2ZW50KEdES19CVVRU
T05fUFJFU1MsIHBhZ2Uudmlld1dpZGdldCgpLCB2aWV3UG9zaXRpb24sIGdka0J1dHRvbiwgc3Rh
dGUpOwotICAgICAgICBkb01vdXNlRXZlbnQoR0RLX0JVVFRPTl9SRUxFQVNFLCBwYWdlLnZpZXdX
aWRnZXQoKSwgdmlld1Bvc2l0aW9uLCBnZGtCdXR0b24sIHN0YXRlKTsKKyAgICBjYXNlIE1vdXNl
SW50ZXJhY3Rpb246OkRvdWJsZUNsaWNrOgorICAgICAgICBkb01vdXNlRXZlbnQoR0RLX0JVVFRP
Tl9QUkVTUywgcGFnZS52aWV3V2lkZ2V0KCksIGxvY2F0aW9uSW5WaWV3LCBnZGtCdXR0b24sIHN0
YXRlKTsKKyAgICAgICAgZG9Nb3VzZUV2ZW50KEdES19CVVRUT05fUkVMRUFTRSwgcGFnZS52aWV3
V2lkZ2V0KCksIGxvY2F0aW9uSW5WaWV3LCBnZGtCdXR0b24sIHN0YXRlKTsKKyAgICAgICAgZG9N
b3VzZUV2ZW50KEdES19CVVRUT05fUFJFU1MsIHBhZ2Uudmlld1dpZGdldCgpLCBsb2NhdGlvbklu
VmlldywgZ2RrQnV0dG9uLCBzdGF0ZSk7CisgICAgICAgIGRvTW91c2VFdmVudChHREtfQlVUVE9O
X1JFTEVBU0UsIHBhZ2Uudmlld1dpZGdldCgpLCBsb2NhdGlvbkluVmlldywgZ2RrQnV0dG9uLCBz
dGF0ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KQEAgLTI4MCwyMCArMjgwLDI3IEBAIHN0
YXRpYyBpbnQga2V5Q29kZUZvclZpcnR1YWxLZXkoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21h
dGlvbjo6VmlydHVhbEtleSBrZXksCiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgV2ViQXV0b21h
dGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVLZXlTdHJva2UoV2ViUGFnZVByb3h5JiBwYWdl
LCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpLZXlib2FyZEludGVyYWN0aW9uVHlw
ZSBpbnRlcmFjdGlvbiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtl
eSBrZXkpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlS2V5Ym9h
cmRJbnRlcmFjdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIEtleWJvYXJkSW50ZXJhY3Rpb24gaW50
ZXJhY3Rpb24sIHN0ZDo6b3B0aW9uYWw8VmlydHVhbEtleT4gdmlydHVhbEtleSwgc3RkOjpvcHRp
b25hbDxDaGFyS2V5PiBjaGFyS2V5KQogeworICAgIEFTU0VSVCh2aXJ0dWFsS2V5Lmhhc192YWx1
ZSgpIHx8IGNoYXJLZXkuaGFzX3ZhbHVlKCkpOworCiAgICAgR2RrTW9kaWZpZXJUeXBlIHVwZGF0
ZVN0YXRlOwotICAgIGF1dG8ga2V5Q29kZSA9IGtleUNvZGVGb3JWaXJ0dWFsS2V5KGtleSwgdXBk
YXRlU3RhdGUpOworICAgIGF1dG8ga2V5Q29kZTsKKyAgICBpZiAodmlydHVhbEtleS5oYXNfdmFs
dWUoKSkKKyAgICAgICAga2V5Q29kZSA9IGtleUNvZGVGb3JWaXJ0dWFsS2V5KHZpcnR1YWxLZXku
dmFsdWUoKSwgdXBkYXRlU3RhdGUpOworICAgIGVsc2UKKyAgICAgICAga2V5Q29kZSA9IGdka191
bmljb2RlX3RvX2tleXZhbChnX3V0ZjhfZ2V0X2NoYXIoJmNoYXJLZXkudmFsdWUoKSkpOworCiAg
ICAgc3dpdGNoIChpbnRlcmFjdGlvbikgewotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbjo6S2V5Ym9hcmRJbnRlcmFjdGlvblR5cGU6OktleVByZXNzOgorICAgIGNhc2Ug
S2V5SW50ZXJhY3Rpb246OktleVByZXNzOgogICAgICAgICBtX2N1cnJlbnRNb2RpZmllcnMgfD0g
dXBkYXRlU3RhdGU7CiAgICAgICAgIGRvS2V5U3Ryb2tlRXZlbnQoR0RLX0tFWV9QUkVTUywgcGFn
ZS52aWV3V2lkZ2V0KCksIGtleUNvZGUsIG1fY3VycmVudE1vZGlmaWVycyk7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6S2V5Ym9hcmRJ
bnRlcmFjdGlvblR5cGU6OktleVJlbGVhc2U6CisgICAgY2FzZSBLZXlJbnRlcmFjdGlvbjo6S2V5
UmVsZWFzZToKICAgICAgICAgbV9jdXJyZW50TW9kaWZpZXJzICY9IH51cGRhdGVTdGF0ZTsKICAg
ICAgICAgZG9LZXlTdHJva2VFdmVudChHREtfS0VZX1JFTEVBU0UsIHBhZ2Uudmlld1dpZGdldCgp
LCBrZXlDb2RlLCBtX2N1cnJlbnRNb2RpZmllcnMpOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OktleWJvYXJkSW50ZXJhY3Rpb25UeXBl
OjpJbnNlcnRCeUtleToKKyAgICBjYXNlIEtleUludGVyYWN0aW9uOjpJbnNlcnRCeUtleToKICAg
ICAgICAgZG9LZXlTdHJva2VFdmVudChHREtfS0VZX1BSRVNTLCBwYWdlLnZpZXdXaWRnZXQoKSwg
a2V5Q29kZSwgbV9jdXJyZW50TW9kaWZpZXJzLCB0cnVlKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9pb3MvV2Vi
QXV0b21hdGlvblNlc3Npb25JT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0
aW9uL2lvcy9XZWJBdXRvbWF0aW9uU2Vzc2lvbklPUy5tbQppbmRleCA1Zjc0YWRlZGY3NWZlNTY5
MmMyOGQ4NDQ4NTkyZjIyMzU0YjY4ZDZjLi4wZGUzOWI2OTkzYjI5MjNmODkxZTk4NDY3ZTVkZmU1
YWZiM2FmOWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9u
L2lvcy9XZWJBdXRvbWF0aW9uU2Vzc2lvbklPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BdXRvbWF0aW9uL2lvcy9XZWJBdXRvbWF0aW9uU2Vzc2lvbklPUy5tbQpAQCAtNjUsMjYg
KzY1LDI4IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnNlbmRTeW50aGVzaXplZEV2ZW50
c1RvUGFnZShXZWJQYWdlUHJveHkmIHBhZ2UsIE5TQXJyCiAKICNwcmFnbWEgbWFyayBDb21tYW5k
cyBmb3IgUGxhdGZvcm06ICdpT1MnCiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRm
b3JtU2ltdWxhdGVLZXlTdHJva2UoV2ViUGFnZVByb3h5JiBwYWdlLCBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpLZXlib2FyZEludGVyYWN0aW9uVHlwZSBpbnRlcmFjdGlvbiwgSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleSBrZXkpCit2b2lkIFdlYkF1
dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlS2V5Ym9hcmRJbnRlcmFjdGlvbihXZWJQ
YWdlUHJveHkmIHBhZ2UsIEtleWJvYXJkSW50ZXJhY3Rpb24gaW50ZXJhY3Rpb24sIHN0ZDo6b3B0
aW9uYWw8VmlydHVhbEtleT4gdmlydHVhbEtleSwgc3RkOjpvcHRpb25hbDxDaGFyS2V5PiBjaGFy
S2V5KQogeworICAgIEFTU0VSVCh2aXJ0dWFsS2V5Lmhhc192YWx1ZSgpIHx8IGNoYXJLZXkuaGFz
X3ZhbHVlKCkpOworCiAgICAgLy8gVGhlIG1vZGlmaWVycyBjaGFuZ2VkIGJ5IHRoZSB2aXJ0dWFs
IGtleSB3aGVuIGl0IGlzIHByZXNzZWQgb3IgcmVsZWFzZWQuCiAgICAgV2ViRXZlbnRGbGFncyBj
aGFuZ2VkTW9kaWZpZXJzID0gMDsKIAogICAgIC8vIEZpZ3VyZSBvdXQgdGhlIGVmZmVjdHMgb2Yg
c3RpY2t5IG1vZGlmaWVycy4KICAgICBzd2l0Y2ggKGtleSkgewotICAgIGNhc2UgSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6U2hpZnQ6CisgICAgY2FzZSBWaXJ0
dWFsS2V5OjpTaGlmdDoKICAgICAgICAgY2hhbmdlZE1vZGlmaWVycyB8PSBXZWJFdmVudEZsYWdN
YXNrU2hpZnQ7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbjo6VmlydHVhbEtleTo6Q29udHJvbDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkNv
bnRyb2w6CiAgICAgICAgIGNoYW5nZWRNb2RpZmllcnMgfD0gV2ViRXZlbnRGbGFnTWFza0NvbnRy
b2w7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21h
dGlvbjo6VmlydHVhbEtleTo6QWx0ZXJuYXRlOgorICAgIGNhc2UgVmlydHVhbEtleTo6QWx0ZXJu
YXRlOgogICAgICAgICBjaGFuZ2VkTW9kaWZpZXJzIHw9IFdlYkV2ZW50RmxhZ01hc2tBbHRlcm5h
dGU7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21h
dGlvbjo6VmlydHVhbEtleTo6TWV0YToKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok1ldGE6CiAgICAg
ICAgIC8vIFRoZSAnbWV0YScga2V5IGRvZXMgbm90IGV4aXN0IG9uIEFwcGxlIGtleWJvYXJkcyBh
bmQgaXMgdXN1YWxseQogICAgICAgICAvLyBtYXBwZWQgdG8gdGhlIENvbW1hbmQga2V5IHdoZW4g
dXNpbmcgdGhpcmQtcGFydHkga2V5Ym9hcmRzLgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6Q29tbWFuZDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6
OkNvbW1hbmQ6CiAgICAgICAgIGNoYW5nZWRNb2RpZmllcnMgfD0gV2ViRXZlbnRGbGFnTWFza0Nv
bW1hbmQ7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CkBAIC05NCw4ICs5NiwxOCBAQCB2
b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlS2V5U3Ryb2tlKFdlYlBh
Z2VQcm94eSYgcGFnZSwgSW5zcGVjdAogICAgIC8vIFVJS2l0IGRvZXMgbm90IHNlbmQga2V5IGNv
ZGVzIGZvciB2aXJ0dWFsIGtleXMgZXZlbiBmb3IgYSBoYXJkd2FyZSBrZXlib2FyZC4KICAgICAv
LyBJbnN0ZWFkLCBpdCBzZW5kcyBzaW5nbGUgdW5pY2hhcnMgYW5kIFdlYkNvcmUgbWFwcyB0aGVz
ZSB0byAid2luZG93cyIga2V5IGNvZGVzLgogICAgIC8vIFN5bnRoZXNpemUgYSBzaW5nbGUgdW5p
Y2hhciBzdWNoIHRoYXQgdGhlIGNvcnJlY3Qga2V5IGNvZGUgaXMgaW5mZXJyZWQuCi0gICAgc3Rk
OjpvcHRpb25hbDx1bmljaGFyPiBjaGFyQ29kZSA9IGNoYXJDb2RlRm9yVmlydHVhbEtleShrZXkp
OwotICAgIHN0ZDo6b3B0aW9uYWw8dW5pY2hhcj4gY2hhckNvZGVJZ25vcmluZ01vZGlmaWVycyA9
IGNoYXJDb2RlSWdub3JpbmdNb2RpZmllcnNGb3JWaXJ0dWFsS2V5KGtleSk7CisgICAgc3RkOjpv
cHRpb25hbDx1bmljaGFyPiBjaGFyQ29kZTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuaWNoYXI+IGNo
YXJDb2RlSWdub3JpbmdNb2RpZmllcnM7CisKKyAgICBpZiAodmlydHVhbEtleS5oYXNfdmFsdWUo
KSkgeworICAgICAgICBjaGFyQ29kZSA9IGNoYXJDb2RlRm9yVmlydHVhbEtleSh2aXJ0dWFsS2V5
LnZhbHVlKCkpOworICAgICAgICBjaGFyQ29kZUlnbm9yaW5nTW9kaWZpZXJzID0gY2hhckNvZGVJ
Z25vcmluZ01vZGlmaWVyc0ZvclZpcnR1YWxLZXkodmlydHVhbEtleS52YWx1ZSgpKTsKKyAgICB9
CisKKyAgICBpZiAoY2hhcktleS5oYXNfdmFsdWUoKSkgeworICAgICAgICBjaGFyQ29kZSA9ICh1
bmljaGFyKWNoYXJLZXkudmFsdWUoKTsKKyAgICAgICAgY2hhckNvZGVJZ25vcmluZ01vZGlmaWVy
cyA9ICh1bmljaGFyKWNoYXJLZXkudmFsdWUoKTsKKyAgICB9CiAKICAgICAvLyBGSVhNRTogY29u
c2lkZXIgdXNpbmcgVUlLaXQgU1BJIHRvIG5vcm1hbGl6ZSAnY2hhcmFjdGVycycsIGkuZS4sIGNo
YW5naW5nICogdG8gU2hpZnQtOCwKICAgICAvLyBhbmQgcGFzc2luZyB0aGF0IGluIHRvIGNoYXJh
Y3RlcnNJZ25vcmluZ01vZGlmaWVycy4gVGhpcyBpcyBwcm9iYWJseSBub3Qgd29ydGggdGhlIHRy
b3VibGUKQEAgLTExNSwxOSArMTI3LDE5IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBs
YXRmb3JtU2ltdWxhdGVLZXlTdHJva2UoV2ViUGFnZVByb3h5JiBwYWdlLCBJbnNwZWN0CiAgICAg
YXV0byBldmVudHNUb0JlU2VudCA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5p
dF0pOwogCiAgICAgc3dpdGNoIChpbnRlcmFjdGlvbikgewotICAgIGNhc2UgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXV0b21hdGlvbjo6S2V5Ym9hcmRJbnRlcmFjdGlvblR5cGU6OktleVByZXNzOiB7
CisgICAgY2FzZSBLZXlib2FyZEludGVyYWN0aW9uOjpLZXlQcmVzczogewogICAgICAgICBtX2N1
cnJlbnRNb2RpZmllcnMgfD0gY2hhbmdlZE1vZGlmaWVyczsKIAogICAgICAgICBbZXZlbnRzVG9C
ZVNlbnQgYWRkT2JqZWN0OltbWzo6V2ViRXZlbnQgYWxsb2NdIGluaXRXaXRoS2V5RXZlbnRUeXBl
OldlYkV2ZW50S2V5RG93biB0aW1lU3RhbXA6Q0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCkgY2hh
cmFjdGVyczpjaGFyYWN0ZXJzIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczp1bm1vZGlmaWVk
Q2hhcmFjdGVycyBtb2RpZmllcnM6bV9jdXJyZW50TW9kaWZpZXJzIGlzUmVwZWF0aW5nOk5PIHdp
dGhGbGFnczppbnB1dEZsYWdzIHdpdGhJbnB1dE1hbmFnZXJIaW50Om5pbCBrZXlDb2RlOmtleUNv
ZGUgaXNUYWJLZXk6aXNUYWJLZXldIGF1dG9yZWxlYXNlXV07CiAgICAgICAgIGJyZWFrOwogICAg
IH0KLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OktleWJvYXJkSW50
ZXJhY3Rpb25UeXBlOjpLZXlSZWxlYXNlOiB7CisgICAgY2FzZSBLZXlib2FyZEludGVyYWN0aW9u
OjpLZXlSZWxlYXNlOiB7CiAgICAgICAgIG1fY3VycmVudE1vZGlmaWVycyAmPSB+Y2hhbmdlZE1v
ZGlmaWVyczsKIAogICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltbWzo6V2ViRXZl
bnQgYWxsb2NdIGluaXRXaXRoS2V5RXZlbnRUeXBlOldlYkV2ZW50S2V5VXAgdGltZVN0YW1wOkNG
QWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpIGNoYXJhY3RlcnM6Y2hhcmFjdGVycyBjaGFyYWN0ZXJz
SWdub3JpbmdNb2RpZmllcnM6dW5tb2RpZmllZENoYXJhY3RlcnMgbW9kaWZpZXJzOm1fY3VycmVu
dE1vZGlmaWVycyBpc1JlcGVhdGluZzpOTyB3aXRoRmxhZ3M6aW5wdXRGbGFncyB3aXRoSW5wdXRN
YW5hZ2VySGludDpuaWwga2V5Q29kZTprZXlDb2RlIGlzVGFiS2V5OmlzVGFiS2V5XSBhdXRvcmVs
ZWFzZV1dOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpLZXlib2FyZEludGVyYWN0aW9uVHlwZTo6SW5zZXJ0QnlLZXk6IHsK
KyAgICBjYXNlIEtleWJvYXJkSW50ZXJhY3Rpb246Okluc2VydEJ5S2V5OiB7CiAgICAgICAgIC8v
IE1vZGlmaWVycyBvbmx5IGNoYW5nZSB3aXRoIEtleVByZXNzIG9yIEtleVJlbGVhc2UsIHRoaXMg
Y29kZSBwYXRoIGlzIGZvciBzaW5nbGUgY2hhcmFjdGVycy4KICAgICAgICAgW2V2ZW50c1RvQmVT
ZW50IGFkZE9iamVjdDpbW1s6OldlYkV2ZW50IGFsbG9jXSBpbml0V2l0aEtleUV2ZW50VHlwZTpX
ZWJFdmVudEtleURvd24gdGltZVN0YW1wOkNGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpIGNoYXJh
Y3RlcnM6Y2hhcmFjdGVycyBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6dW5tb2RpZmllZENo
YXJhY3RlcnMgbW9kaWZpZXJzOm1fY3VycmVudE1vZGlmaWVycyBpc1JlcGVhdGluZzpOTyB3aXRo
RmxhZ3M6aW5wdXRGbGFncyB3aXRoSW5wdXRNYW5hZ2VySGludDpuaWwga2V5Q29kZTprZXlDb2Rl
IGlzVGFiS2V5OmlzVGFiS2V5XSBhdXRvcmVsZWFzZV1dOwogICAgICAgICBbZXZlbnRzVG9CZVNl
bnQgYWRkT2JqZWN0OltbWzo6V2ViRXZlbnQgYWxsb2NdIGluaXRXaXRoS2V5RXZlbnRUeXBlOldl
YkV2ZW50S2V5VXAgdGltZVN0YW1wOkNGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpIGNoYXJhY3Rl
cnM6Y2hhcmFjdGVycyBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6dW5tb2RpZmllZENoYXJh
Y3RlcnMgbW9kaWZpZXJzOm1fY3VycmVudE1vZGlmaWVycyBpc1JlcGVhdGluZzpOTyB3aXRoRmxh
Z3M6aW5wdXRGbGFncyB3aXRoSW5wdXRNYW5hZ2VySGludDpuaWwga2V5Q29kZTprZXlDb2RlIGlz
VGFiS2V5OmlzVGFiS2V5XSBhdXRvcmVsZWFzZV1dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQXV0b21hdGlvbi9tYWMvV2ViQXV0b21hdGlvblNlc3Npb25NYWMubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL21hYy9XZWJBdXRvbWF0aW9uU2Vzc2lv
bk1hYy5tbQppbmRleCAzYjVlNTU4YzY0YzNkYTc2N2E5ODllZDY0MjBhNzc1ZjJjMWE2MTMyLi5m
NDYwYTM4NjUzZGM2NGVlNjYxNzkwNzMwYzE4Y2JmYjRlMGYyYjYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL21hYy9XZWJBdXRvbWF0aW9uU2Vzc2lvbk1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL21hYy9XZWJBdXRv
bWF0aW9uU2Vzc2lvbk1hYy5tbQpAQCAtMTE4LDExICsxMTgsMTEgQEAgYm9vbCBXZWJBdXRvbWF0
aW9uU2Vzc2lvbjo6d2FzRXZlbnRTeW50aGVzaXplZEZvckF1dG9tYXRpb24oTlNFdmVudCAqZXZl
bnQpCiAKICNwcmFnbWEgbWFyayBQbGF0Zm9ybS1kZXBlbmRlbnQgSW1wbGVtZW50YXRpb25zCiAK
LXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVNb3VzZUludGVyYWN0
aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHZpZXdQb3Np
dGlvbiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VJbnRlcmFjdGlvbiBp
bnRlcmFjdGlvbiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VCdXR0b24g
YnV0dG9uLCBXZWJFdmVudDo6TW9kaWZpZXJzIGtleU1vZGlmaWVycykKK3ZvaWQgV2ViQXV0b21h
dGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVNb3VzZUludGVyYWN0aW9uKFdlYlBhZ2VQcm94
eSYgcGFnZSwgTW91c2VJbnRlcmFjdGlvbiBpbnRlcmFjdGlvbiwgV2ViTW91c2VFdmVudDo6QnV0
dG9uIGJ1dHRvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGxvY2F0aW9uSW5WaWV3LCBXZWJF
dmVudDo6TW9kaWZpZXJzIGtleU1vZGlmaWVycykKIHsKICAgICBJbnRSZWN0IHdpbmRvd1JlY3Q7
Ci0gICAgcGFnZS5yb290Vmlld1RvV2luZG93KEludFJlY3Qodmlld1Bvc2l0aW9uLCBJbnRTaXpl
KCkpLCB3aW5kb3dSZWN0KTsKLSAgICBJbnRQb2ludCB3aW5kb3dQb3NpdGlvbiA9IHdpbmRvd1Jl
Y3QubG9jYXRpb24oKTsKKyAgICBwYWdlLnJvb3RWaWV3VG9XaW5kb3coSW50UmVjdChsb2NhdGlv
bkluVmlldywgSW50U2l6ZSgpKSwgd2luZG93UmVjdCk7CisgICAgSW50UG9pbnQgbG9jYXRpb25J
bldpbmRvdyA9IHdpbmRvd1JlY3QubG9jYXRpb24oKTsKIAogICAgIE5TRXZlbnRNb2RpZmllckZs
YWdzIG1vZGlmaWVycyA9IDA7CiAgICAgaWYgKGtleU1vZGlmaWVycyAmIFdlYkV2ZW50OjpNZXRh
S2V5KQpAQCAtMTQ0LDIwICsxNDQsMjAgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxh
dGZvcm1TaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdlLAogICAgIE5T
RXZlbnRUeXBlIGRyYWdFdmVudFR5cGUgPSAoTlNFdmVudFR5cGUpMDsKICAgICBOU0V2ZW50VHlw
ZSB1cEV2ZW50VHlwZSA9IChOU0V2ZW50VHlwZSkwOwogICAgIHN3aXRjaCAoYnV0dG9uKSB7Ci0g
ICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1dHRvbjo6Tm9u
ZToKKyAgICBjYXNlIFdlYk1vdXNlRXZlbnQ6Ok5vQnV0dG9uOgogICAgICAgICBkb3duRXZlbnRU
eXBlID0gdXBFdmVudFR5cGUgPSBkcmFnRXZlbnRUeXBlID0gTlNFdmVudFR5cGVNb3VzZU1vdmVk
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRp
b246Ok1vdXNlQnV0dG9uOjpMZWZ0OgorICAgIGNhc2UgV2ViTW91c2VFdmVudDo6TGVmdEJ1dHRv
bjoKICAgICAgICAgZG93bkV2ZW50VHlwZSA9IE5TRXZlbnRUeXBlTGVmdE1vdXNlRG93bjsKICAg
ICAgICAgZHJhZ0V2ZW50VHlwZSA9IE5TRXZlbnRUeXBlTGVmdE1vdXNlRHJhZ2dlZDsKICAgICAg
ICAgdXBFdmVudFR5cGUgPSBOU0V2ZW50VHlwZUxlZnRNb3VzZVVwOwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9uOjpN
aWRkbGU6CisgICAgY2FzZSBXZWJNb3VzZUV2ZW50OjpNaWRkbGVCdXR0b246CiAgICAgICAgIGRv
d25FdmVudFR5cGUgPSBOU0V2ZW50VHlwZU90aGVyTW91c2VEb3duOwogICAgICAgICBkcmFnRXZl
bnRUeXBlID0gTlNFdmVudFR5cGVMZWZ0TW91c2VEcmFnZ2VkOwogICAgICAgICB1cEV2ZW50VHlw
ZSA9IE5TRXZlbnRUeXBlT3RoZXJNb3VzZVVwOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9uOjpSaWdodDoKKyAgICBj
YXNlIFdlYk1vdXNlRXZlbnQ6OlJpZ2h0QnV0dG9uOgogICAgICAgICBkb3duRXZlbnRUeXBlID0g
TlNFdmVudFR5cGVSaWdodE1vdXNlRG93bjsKICAgICAgICAgdXBFdmVudFR5cGUgPSBOU0V2ZW50
VHlwZVJpZ2h0TW91c2VVcDsKICAgICAgICAgYnJlYWs7CkBAIC0xNjgsNTYgKzE2OCw1NiBAQCB2
b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlTW91c2VJbnRlcmFjdGlv
bihXZWJQYWdlUHJveHkmIHBhZ2UsCiAgICAgTlNJbnRlZ2VyIGV2ZW50TnVtYmVyID0gc3ludGhl
c2l6ZWRNb3VzZUV2ZW50TWFnaWNFdmVudE51bWJlcjsKIAogICAgIHN3aXRjaCAoaW50ZXJhY3Rp
b24pIHsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlSW50
ZXJhY3Rpb246Ok1vdmU6CisgICAgY2FzZSBNb3VzZUludGVyYWN0aW9uOjpNb3ZlOgogICAgICAg
ICBBU1NFUlQoZHJhZ0V2ZW50VHlwZSk7Ci0gICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmpl
Y3Q6W05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOmRyYWdFdmVudFR5cGUgbG9jYXRpb246d2lu
ZG93UG9zaXRpb24gbW9kaWZpZXJGbGFnczptb2RpZmllcnMgdGltZXN0YW1wOnRpbWVzdGFtcCB3
aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmlsIGV2ZW50TnVtYmVyOmV2ZW50TnVt
YmVyIGNsaWNrQ291bnQ6MCBwcmVzc3VyZTowLjBmXV07CisgICAgICAgIFtldmVudHNUb0JlU2Vu
dCBhZGRPYmplY3Q6W05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOmRyYWdFdmVudFR5cGUgbG9j
YXRpb246bG9jYXRpb25JbldpbmRvdyBtb2RpZmllckZsYWdzOm1vZGlmaWVycyB0aW1lc3RhbXA6
dGltZXN0YW1wIHdpbmRvd051bWJlcjp3aW5kb3dOdW1iZXIgY29udGV4dDpuaWwgZXZlbnROdW1i
ZXI6ZXZlbnROdW1iZXIgY2xpY2tDb3VudDowIHByZXNzdXJlOjAuMGZdXTsKICAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUludGVy
YWN0aW9uOjpEb3duOgorICAgIGNhc2UgTW91c2VJbnRlcmFjdGlvbjo6RG93bjoKICAgICAgICAg
QVNTRVJUKGRvd25FdmVudFR5cGUpOwogCiAgICAgICAgIC8vIEhhcmQtY29kZSB0aGUgY2xpY2sg
Y291bnQgdG8gb25lLCBzaW5jZSBjbGllbnRzIGRvbid0IGV4cGVjdCBzdWNjZXNzaXZlIHNpbXVs
YXRlZAogICAgICAgICAvLyBkb3duL3VwIGV2ZW50cyB0byBiZSBwb3RlbnRpYWxseSBjb3VudGVk
IGFzIGEgZG91YmxlIGNsaWNrIGV2ZW50LgotICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2Jq
ZWN0OltOU0V2ZW50IG1vdXNlRXZlbnRXaXRoVHlwZTpkb3duRXZlbnRUeXBlIGxvY2F0aW9uOndp
bmRvd1Bvc2l0aW9uIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJzIHRpbWVzdGFtcDp0aW1lc3RhbXAg
d2luZG93TnVtYmVyOndpbmRvd051bWJlciBjb250ZXh0Om5pbCBldmVudE51bWJlcjpldmVudE51
bWJlciBjbGlja0NvdW50OjEgcHJlc3N1cmU6V2ViQ29yZTo6Rm9yY2VBdENsaWNrXV07CisgICAg
ICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmplY3Q6W05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBl
OmRvd25FdmVudFR5cGUgbG9jYXRpb246bG9jYXRpb25JbldpbmRvdyBtb2RpZmllckZsYWdzOm1v
ZGlmaWVycyB0aW1lc3RhbXA6dGltZXN0YW1wIHdpbmRvd051bWJlcjp3aW5kb3dOdW1iZXIgY29u
dGV4dDpuaWwgZXZlbnROdW1iZXI6ZXZlbnROdW1iZXIgY2xpY2tDb3VudDoxIHByZXNzdXJlOldl
YkNvcmU6OkZvcmNlQXRDbGlja11dOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlSW50ZXJhY3Rpb246OlVwOgorICAgIGNhc2Ug
TW91c2VJbnRlcmFjdGlvbjo6VXA6CiAgICAgICAgIEFTU0VSVCh1cEV2ZW50VHlwZSk7CiAKICAg
ICAgICAgLy8gSGFyZC1jb2RlIHRoZSBjbGljayBjb3VudCB0byBvbmUsIHNpbmNlIGNsaWVudHMg
ZG9uJ3QgZXhwZWN0IHN1Y2Nlc3NpdmUgc2ltdWxhdGVkCiAgICAgICAgIC8vIGRvd24vdXAgZXZl
bnRzIHRvIGJlIHBvdGVudGlhbGx5IGNvdW50ZWQgYXMgYSBkb3VibGUgY2xpY2sgZXZlbnQuCi0g
ICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmplY3Q6W05TRXZlbnQgbW91c2VFdmVudFdpdGhU
eXBlOnVwRXZlbnRUeXBlIGxvY2F0aW9uOndpbmRvd1Bvc2l0aW9uIG1vZGlmaWVyRmxhZ3M6bW9k
aWZpZXJzIHRpbWVzdGFtcDp0aW1lc3RhbXAgd2luZG93TnVtYmVyOndpbmRvd051bWJlciBjb250
ZXh0Om5pbCBldmVudE51bWJlcjpldmVudE51bWJlciBjbGlja0NvdW50OjEgcHJlc3N1cmU6MC4w
Zl1dOworICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltOU0V2ZW50IG1vdXNlRXZl
bnRXaXRoVHlwZTp1cEV2ZW50VHlwZSBsb2NhdGlvbjpsb2NhdGlvbkluV2luZG93IG1vZGlmaWVy
RmxhZ3M6bW9kaWZpZXJzIHRpbWVzdGFtcDp0aW1lc3RhbXAgd2luZG93TnVtYmVyOndpbmRvd051
bWJlciBjb250ZXh0Om5pbCBldmVudE51bWJlcjpldmVudE51bWJlciBjbGlja0NvdW50OjEgcHJl
c3N1cmU6MC4wZl1dOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkF1dG9tYXRpb246Ok1vdXNlSW50ZXJhY3Rpb246OlNpbmdsZUNsaWNrOgorICAgIGNhc2Ug
TW91c2VJbnRlcmFjdGlvbjo6U2luZ2xlQ2xpY2s6CiAgICAgICAgIEFTU0VSVCh1cEV2ZW50VHlw
ZSk7CiAgICAgICAgIEFTU0VSVChkb3duRXZlbnRUeXBlKTsKIAogICAgICAgICAvLyBTZW5kIHNl
cGFyYXRlIGRvd24gYW5kIHVwIGV2ZW50cy4gV2ViQ29yZSB3aWxsIHNlZSB0aGlzIGFzIGEgc2lu
Z2xlLWNsaWNrIGV2ZW50LgotICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltOU0V2
ZW50IG1vdXNlRXZlbnRXaXRoVHlwZTpkb3duRXZlbnRUeXBlIGxvY2F0aW9uOndpbmRvd1Bvc2l0
aW9uIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJzIHRpbWVzdGFtcDp0aW1lc3RhbXAgd2luZG93TnVt
YmVyOndpbmRvd051bWJlciBjb250ZXh0Om5pbCBldmVudE51bWJlcjpldmVudE51bWJlciBjbGlj
a0NvdW50OjEgcHJlc3N1cmU6V2ViQ29yZTo6Rm9yY2VBdENsaWNrXV07Ci0gICAgICAgIFtldmVu
dHNUb0JlU2VudCBhZGRPYmplY3Q6W05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOnVwRXZlbnRU
eXBlIGxvY2F0aW9uOndpbmRvd1Bvc2l0aW9uIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJzIHRpbWVz
dGFtcDp0aW1lc3RhbXAgd2luZG93TnVtYmVyOndpbmRvd051bWJlciBjb250ZXh0Om5pbCBldmVu
dE51bWJlcjpldmVudE51bWJlciBjbGlja0NvdW50OjEgcHJlc3N1cmU6MC4wZl1dOworICAgICAg
ICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltOU0V2ZW50IG1vdXNlRXZlbnRXaXRoVHlwZTpk
b3duRXZlbnRUeXBlIGxvY2F0aW9uOmxvY2F0aW9uSW5XaW5kb3cgbW9kaWZpZXJGbGFnczptb2Rp
ZmllcnMgdGltZXN0YW1wOnRpbWVzdGFtcCB3aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNvbnRl
eHQ6bmlsIGV2ZW50TnVtYmVyOmV2ZW50TnVtYmVyIGNsaWNrQ291bnQ6MSBwcmVzc3VyZTpXZWJD
b3JlOjpGb3JjZUF0Q2xpY2tdXTsKKyAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpb
TlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6dXBFdmVudFR5cGUgbG9jYXRpb246bG9jYXRpb25J
bldpbmRvdyBtb2RpZmllckZsYWdzOm1vZGlmaWVycyB0aW1lc3RhbXA6dGltZXN0YW1wIHdpbmRv
d051bWJlcjp3aW5kb3dOdW1iZXIgY29udGV4dDpuaWwgZXZlbnROdW1iZXI6ZXZlbnROdW1iZXIg
Y2xpY2tDb3VudDoxIHByZXNzdXJlOjAuMGZdXTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUludGVyYWN0aW9uOjpEb3VibGVD
bGljazoKKyAgICBjYXNlIE1vdXNlSW50ZXJhY3Rpb246OkRvdWJsZUNsaWNrOgogICAgICAgICBB
U1NFUlQodXBFdmVudFR5cGUpOwogICAgICAgICBBU1NFUlQoZG93bkV2ZW50VHlwZSk7CiAKICAg
ICAgICAgLy8gU2VuZCBtdWx0aXBsZSBkb3duIGFuZCB1cCBldmVudHMgd2l0aCBwcm9wZXIgY2xp
Y2sgY291bnQuCiAgICAgICAgIC8vIFdlYkNvcmUgd2lsbCBzZWUgdGhpcyBhcyBhIHNpbmdsZS1j
bGljayBldmVudCB0aGVuIGRvdWJsZS1jbGljayBldmVudC4KLSAgICAgICAgW2V2ZW50c1RvQmVT
ZW50IGFkZE9iamVjdDpbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6ZG93bkV2ZW50VHlwZSBs
b2NhdGlvbjp3aW5kb3dQb3NpdGlvbiBtb2RpZmllckZsYWdzOm1vZGlmaWVycyB0aW1lc3RhbXA6
dGltZXN0YW1wIHdpbmRvd051bWJlcjp3aW5kb3dOdW1iZXIgY29udGV4dDpuaWwgZXZlbnROdW1i
ZXI6ZXZlbnROdW1iZXIgY2xpY2tDb3VudDoxIHByZXNzdXJlOldlYkNvcmU6OkZvcmNlQXRDbGlj
a11dOwotICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltOU0V2ZW50IG1vdXNlRXZl
bnRXaXRoVHlwZTp1cEV2ZW50VHlwZSBsb2NhdGlvbjp3aW5kb3dQb3NpdGlvbiBtb2RpZmllckZs
YWdzOm1vZGlmaWVycyB0aW1lc3RhbXA6dGltZXN0YW1wIHdpbmRvd051bWJlcjp3aW5kb3dOdW1i
ZXIgY29udGV4dDpuaWwgZXZlbnROdW1iZXI6ZXZlbnROdW1iZXIgY2xpY2tDb3VudDoxIHByZXNz
dXJlOjAuMGZdXTsKLSAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbTlNFdmVudCBt
b3VzZUV2ZW50V2l0aFR5cGU6ZG93bkV2ZW50VHlwZSBsb2NhdGlvbjp3aW5kb3dQb3NpdGlvbiBt
b2RpZmllckZsYWdzOm1vZGlmaWVycyB0aW1lc3RhbXA6dGltZXN0YW1wIHdpbmRvd051bWJlcjp3
aW5kb3dOdW1iZXIgY29udGV4dDpuaWwgZXZlbnROdW1iZXI6ZXZlbnROdW1iZXIgY2xpY2tDb3Vu
dDoyIHByZXNzdXJlOldlYkNvcmU6OkZvcmNlQXRDbGlja11dOwotICAgICAgICBbZXZlbnRzVG9C
ZVNlbnQgYWRkT2JqZWN0OltOU0V2ZW50IG1vdXNlRXZlbnRXaXRoVHlwZTp1cEV2ZW50VHlwZSBs
b2NhdGlvbjp3aW5kb3dQb3NpdGlvbiBtb2RpZmllckZsYWdzOm1vZGlmaWVycyB0aW1lc3RhbXA6
dGltZXN0YW1wIHdpbmRvd051bWJlcjp3aW5kb3dOdW1iZXIgY29udGV4dDpuaWwgZXZlbnROdW1i
ZXI6ZXZlbnROdW1iZXIgY2xpY2tDb3VudDoyIHByZXNzdXJlOjAuMGZdXTsKKyAgICAgICAgW2V2
ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6ZG93bkV2
ZW50VHlwZSBsb2NhdGlvbjpsb2NhdGlvbkluV2luZG93IG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJz
IHRpbWVzdGFtcDp0aW1lc3RhbXAgd2luZG93TnVtYmVyOndpbmRvd051bWJlciBjb250ZXh0Om5p
bCBldmVudE51bWJlcjpldmVudE51bWJlciBjbGlja0NvdW50OjEgcHJlc3N1cmU6V2ViQ29yZTo6
Rm9yY2VBdENsaWNrXV07CisgICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmplY3Q6W05TRXZl
bnQgbW91c2VFdmVudFdpdGhUeXBlOnVwRXZlbnRUeXBlIGxvY2F0aW9uOmxvY2F0aW9uSW5XaW5k
b3cgbW9kaWZpZXJGbGFnczptb2RpZmllcnMgdGltZXN0YW1wOnRpbWVzdGFtcCB3aW5kb3dOdW1i
ZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmlsIGV2ZW50TnVtYmVyOmV2ZW50TnVtYmVyIGNsaWNr
Q291bnQ6MSBwcmVzc3VyZTowLjBmXV07CisgICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmpl
Y3Q6W05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOmRvd25FdmVudFR5cGUgbG9jYXRpb246bG9j
YXRpb25JbldpbmRvdyBtb2RpZmllckZsYWdzOm1vZGlmaWVycyB0aW1lc3RhbXA6dGltZXN0YW1w
IHdpbmRvd051bWJlcjp3aW5kb3dOdW1iZXIgY29udGV4dDpuaWwgZXZlbnROdW1iZXI6ZXZlbnRO
dW1iZXIgY2xpY2tDb3VudDoyIHByZXNzdXJlOldlYkNvcmU6OkZvcmNlQXRDbGlja11dOworICAg
ICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltOU0V2ZW50IG1vdXNlRXZlbnRXaXRoVHlw
ZTp1cEV2ZW50VHlwZSBsb2NhdGlvbjpsb2NhdGlvbkluV2luZG93IG1vZGlmaWVyRmxhZ3M6bW9k
aWZpZXJzIHRpbWVzdGFtcDp0aW1lc3RhbXAgd2luZG93TnVtYmVyOndpbmRvd051bWJlciBjb250
ZXh0Om5pbCBldmVudE51bWJlcjpldmVudE51bWJlciBjbGlja0NvdW50OjIgcHJlc3N1cmU6MC4w
Zl1dOwogICAgIH0KIAogICAgIHNlbmRTeW50aGVzaXplZEV2ZW50c1RvUGFnZShwYWdlLCBldmVu
dHNUb0JlU2VudC5nZXQoKSk7CiB9CiAKLXN0YXRpYyBib29sIGtleUhhc1N0aWNreU1vZGlmaWVy
KEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXkga2V5KQorc3RhdGlj
IGJvb2wgdmlydHVhbEtleUhhc1N0aWNreU1vZGlmaWVyKFZpcnR1YWxLZXkga2V5KQogewogICAg
IC8vIFJldHVybnMgd2hldGhlciB0aGUga2V5J3MgbW9kaWZpZXIgZmxhZ3Mgc2hvdWxkIGFmZmVj
dCBvdGhlciBldmVudHMgd2hpbGUgcHJlc3NlZCBkb3duLgogICAgIHN3aXRjaCAoa2V5KSB7Ci0g
ICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpTaGlm
dDoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6
OkNvbnRyb2w6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0
dWFsS2V5OjpBbHRlcm5hdGU6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uOjpWaXJ0dWFsS2V5OjpNZXRhOgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbjo6VmlydHVhbEtleTo6Q29tbWFuZDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OlNoaWZ0
OgorICAgIGNhc2UgVmlydHVhbEtleTo6Q29udHJvbDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkFs
dGVybmF0ZToKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok1ldGE6CisgICAgY2FzZSBWaXJ0dWFsS2V5
OjpDb21tYW5kOgogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGRlZmF1bHQ6CkBAIC0yMjUs
MjAxICsyMjUsMjAxIEBAIHN0YXRpYyBib29sIGtleUhhc1N0aWNreU1vZGlmaWVyKEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXkga2V5CiAgICAgfQogfQogCi1zdGF0
aWMgaW50IGtleUNvZGVGb3JWaXJ0dWFsS2V5KEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRp
b246OlZpcnR1YWxLZXkga2V5KQorc3RhdGljIGludCBrZXlDb2RlRm9yVmlydHVhbEtleShWaXJ0
dWFsS2V5IGtleSkKIHsKICAgICAvLyBUaGUgbGlrZWx5IGtleUNvZGUgZm9yIHRoZSB2aXJ0dWFs
IGtleSBhcyBkZWZpbmVkIGluIDxISVRvb2xib3gvRXZlbnRzLmg+LgogICAgIHN3aXRjaCAoa2V5
KSB7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5
OjpTaGlmdDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OlNoaWZ0OgogICAgICAgICByZXR1cm4ga1ZL
X1NoaWZ0OwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVh
bEtleTo6Q29udHJvbDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkNvbnRyb2w6CiAgICAgICAgIHJl
dHVybiBrVktfQ29udHJvbDsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRp
b246OlZpcnR1YWxLZXk6OkFsdGVybmF0ZToKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkFsdGVybmF0
ZToKICAgICAgICAgcmV0dXJuIGtWS19PcHRpb247Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpNZXRhOgorICAgIGNhc2UgVmlydHVhbEtleTo6
TWV0YToKICAgICAgICAgLy8gVGhlICdtZXRhJyBrZXkgZG9lcyBub3QgZXhpc3Qgb24gQXBwbGUg
a2V5Ym9hcmRzIGFuZCBpcyB1c3VhbGx5CiAgICAgICAgIC8vIG1hcHBlZCB0byB0aGUgQ29tbWFu
ZCBrZXkgd2hlbiB1c2luZyB0aGlyZC1wYXJ0eSBrZXlib2FyZHMuCi0gICAgY2FzZSBJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpDb21tYW5kOgorICAgIGNhc2Ug
VmlydHVhbEtleTo6Q29tbWFuZDoKICAgICAgICAgcmV0dXJuIGtWS19Db21tYW5kOwotICAgIGNh
c2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6SGVscDoKKyAg
ICBjYXNlIFZpcnR1YWxLZXk6OkhlbHA6CiAgICAgICAgIHJldHVybiBrVktfSGVscDsKLSAgICBj
YXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkJhY2tzcGFj
ZToKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkJhY2tzcGFjZToKICAgICAgICAgcmV0dXJuIGtWS19E
ZWxldGU7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFs
S2V5OjpUYWI6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpUYWI6CiAgICAgICAgIHJldHVybiBrVktf
VGFiOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtl
eTo6Q2xlYXI6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpDbGVhcjoKICAgICAgICAgcmV0dXJuIGtW
S19BTlNJX0tleXBhZENsZWFyOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21h
dGlvbjo6VmlydHVhbEtleTo6RW50ZXI6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpFbnRlcjoKICAg
ICAgICAgcmV0dXJuIGtWS19BTlNJX0tleXBhZEVudGVyOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6UGF1c2U6CisgICAgY2FzZSBWaXJ0dWFs
S2V5OjpQYXVzZToKICAgICAgICAgLy8gVGhlICdwYXVzZScga2V5IGRvZXMgbm90IGV4aXN0IG9u
IEFwcGxlIGtleWJvYXJkcyBhbmQgaGFzIG5vIGtleUNvZGUuCiAgICAgICAgIC8vIFRoZSBzZW1h
bnRpY3MgYXJlIHVuY2xlYXIgc28ganVzdCBhYm9ydCBhbmQgZG8gbm90aGluZy4KICAgICAgICAg
cmV0dXJuIDA7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0
dWFsS2V5OjpDYW5jZWw6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpDYW5jZWw6CiAgICAgICAgIC8v
IFRoZSAnY2FuY2VsJyBrZXkgZG9lcyBub3QgZXhpc3Qgb24gQXBwbGUga2V5Ym9hcmRzIGFuZCBo
YXMgbm8ga2V5Q29kZS4KICAgICAgICAgLy8gQWNjb3JkaW5nIHRvIHRoZSBpbnRlcm5ldCBpdHMg
ZnVuY3Rpb25hbGl0eSBpcyBzaW1pbGFyIHRvICdFc2NhcGUnLgotICAgIGNhc2UgSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RXNjYXBlOgorICAgIGNhc2UgVmly
dHVhbEtleTo6RXNjYXBlOgogICAgICAgICByZXR1cm4ga1ZLX0VzY2FwZTsKLSAgICBjYXNlIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OlBhZ2VVcDoKKyAgICBj
YXNlIFZpcnR1YWxLZXk6OlBhZ2VVcDoKICAgICAgICAgcmV0dXJuIGtWS19QYWdlVXA7Ci0gICAg
Y2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpQYWdlRG93
bjoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OlBhZ2VEb3duOgogICAgICAgICByZXR1cm4ga1ZLX1Bh
Z2VEb3duOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVh
bEtleTo6RW5kOgorICAgIGNhc2UgVmlydHVhbEtleTo6RW5kOgogICAgICAgICByZXR1cm4ga1ZL
X0VuZDsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxL
ZXk6OkhvbWU6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpIb21lOgogICAgICAgICByZXR1cm4ga1ZL
X0hvbWU7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFs
S2V5OjpMZWZ0QXJyb3c6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpMZWZ0QXJyb3c6CiAgICAgICAg
IHJldHVybiBrVktfTGVmdEFycm93OwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbjo6VmlydHVhbEtleTo6VXBBcnJvdzoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OlVwQXJy
b3c6CiAgICAgICAgIHJldHVybiBrVktfVXBBcnJvdzsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OlJpZ2h0QXJyb3c6CisgICAgY2FzZSBWaXJ0
dWFsS2V5OjpSaWdodEFycm93OgogICAgICAgICByZXR1cm4ga1ZLX1JpZ2h0QXJyb3c7Ci0gICAg
Y2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpEb3duQXJy
b3c6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpEb3duQXJyb3c6CiAgICAgICAgIHJldHVybiBrVktf
RG93bkFycm93OwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6Vmly
dHVhbEtleTo6SW5zZXJ0OgorICAgIGNhc2UgVmlydHVhbEtleTo6SW5zZXJ0OgogICAgICAgICAv
LyBUaGUgJ2luc2VydCcga2V5IGRvZXMgbm90IGV4aXN0IG9uIEFwcGxlIGtleWJvYXJkcyBhbmQg
aGFzIG5vIGtleUNvZGUuCiAgICAgICAgIC8vIFRoZSBzZW1hbnRpY3MgYXJlIHVuY2xlYXIgc28g
anVzdCBhYm9ydCBhbmQgZG8gbm90aGluZy4KICAgICAgICAgcmV0dXJuIDA7Ci0gICAgY2FzZSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpEZWxldGU6CisgICAg
Y2FzZSBWaXJ0dWFsS2V5OjpEZWxldGU6CiAgICAgICAgIHJldHVybiBrVktfRm9yd2FyZERlbGV0
ZTsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6
OlNwYWNlOgorICAgIGNhc2UgVmlydHVhbEtleTo6U3BhY2U6CiAgICAgICAgIHJldHVybiBrVktf
U3BhY2U7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFs
S2V5OjpTZW1pY29sb246CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpTZW1pY29sb246CiAgICAgICAg
IHJldHVybiBrVktfQU5TSV9TZW1pY29sb247Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29s
OjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpFcXVhbHM6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpF
cXVhbHM6CiAgICAgICAgIHJldHVybiBrVktfQU5TSV9FcXVhbDsKLSAgICBjYXNlIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OlJldHVybjoKKyAgICBjYXNlIFZp
cnR1YWxLZXk6OlJldHVybjoKICAgICAgICAgcmV0dXJuIGtWS19SZXR1cm47Ci0gICAgY2FzZSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWQwOgor
ICAgIGNhc2UgVmlydHVhbEtleTo6TnVtYmVyUGFkMDoKICAgICAgICAgcmV0dXJuIGtWS19BTlNJ
X0tleXBhZDA7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0
dWFsS2V5OjpOdW1iZXJQYWQxOgorICAgIGNhc2UgVmlydHVhbEtleTo6TnVtYmVyUGFkMToKICAg
ICAgICAgcmV0dXJuIGtWS19BTlNJX0tleXBhZDE7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWQyOgorICAgIGNhc2UgVmlydHVh
bEtleTo6TnVtYmVyUGFkMjoKICAgICAgICAgcmV0dXJuIGtWS19BTlNJX0tleXBhZDI7Ci0gICAg
Y2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQ
YWQzOgorICAgIGNhc2UgVmlydHVhbEtleTo6TnVtYmVyUGFkMzoKICAgICAgICAgcmV0dXJuIGtW
S19BTlNJX0tleXBhZDM7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
OjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWQ0OgorICAgIGNhc2UgVmlydHVhbEtleTo6TnVtYmVyUGFk
NDoKICAgICAgICAgcmV0dXJuIGtWS19BTlNJX0tleXBhZDQ7Ci0gICAgY2FzZSBJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWQ1OgorICAgIGNhc2Ug
VmlydHVhbEtleTo6TnVtYmVyUGFkNToKICAgICAgICAgcmV0dXJuIGtWS19BTlNJX0tleXBhZDU7
Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpO
dW1iZXJQYWQ2OgorICAgIGNhc2UgVmlydHVhbEtleTo6TnVtYmVyUGFkNjoKICAgICAgICAgcmV0
dXJuIGtWS19BTlNJX0tleXBhZDY7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRv
bWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWQ3OgorICAgIGNhc2UgVmlydHVhbEtleTo6TnVt
YmVyUGFkNzoKICAgICAgICAgcmV0dXJuIGtWS19BTlNJX0tleXBhZDc7Ci0gICAgY2FzZSBJbnNw
ZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWQ4OgorICAg
IGNhc2UgVmlydHVhbEtleTo6TnVtYmVyUGFkODoKICAgICAgICAgcmV0dXJuIGtWS19BTlNJX0tl
eXBhZDg7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFs
S2V5OjpOdW1iZXJQYWQ5OgorICAgIGNhc2UgVmlydHVhbEtleTo6TnVtYmVyUGFkOToKICAgICAg
ICAgcmV0dXJuIGtWS19BTlNJX0tleXBhZDk7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29s
OjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWRNdWx0aXBseToKKyAgICBjYXNlIFZp
cnR1YWxLZXk6Ok51bWJlclBhZE11bHRpcGx5OgogICAgICAgICByZXR1cm4ga1ZLX0FOU0lfS2V5
cGFkTXVsdGlwbHk7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpW
aXJ0dWFsS2V5OjpOdW1iZXJQYWRBZGQ6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWRB
ZGQ6CiAgICAgICAgIHJldHVybiBrVktfQU5TSV9LZXlwYWRQbHVzOwotICAgIGNhc2UgSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkU3VidHJhY3Q6
CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWRTdWJ0cmFjdDoKICAgICAgICAgcmV0dXJu
IGtWS19BTlNJX0tleXBhZE1pbnVzOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkU2VwYXJhdG9yOgorICAgIGNhc2UgVmlydHVh
bEtleTo6TnVtYmVyUGFkU2VwYXJhdG9yOgogICAgICAgICAvLyBUaGUgJ1NlcGFyYXRvcicga2V5
IGlzIG9ubHkgcHJlc2VudCBvbiBhIGZldyBpbnRlcm5hdGlvbmFsIGtleWJvYXJkcy4KICAgICAg
ICAgLy8gSXQgaXMgdXN1YWxseSBtYXBwZWQgdG8gdGhlIHNhbWUgY2hhcmFjdGVyIGFzIERlY2lt
YWwgKCcuJyBvciAnLCcpLgogICAgICAgICBGQUxMVEhST1VHSDsKLSAgICBjYXNlIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZERlY2ltYWw6Cisg
ICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWREZWNpbWFsOgogICAgICAgICByZXR1cm4ga1ZL
X0FOU0lfS2V5cGFkRGVjaW1hbDsKICAgICAgICAgLy8gRklYTUU6IHRoaXMgbWlnaHQgYmUgbG9j
YWxlLWRlcGVuZGVudC4gU2VlIHRoZSBhYm92ZSBjb21tZW50LgotICAgIGNhc2UgSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkRGl2aWRlOgorICAg
IGNhc2UgVmlydHVhbEtleTo6TnVtYmVyUGFkRGl2aWRlOgogICAgICAgICByZXR1cm4ga1ZLX0FO
U0lfS2V5cGFkRGl2aWRlOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlv
bjo6VmlydHVhbEtleTo6RnVuY3Rpb24xOgorICAgIGNhc2UgVmlydHVhbEtleTo6RnVuY3Rpb24x
OgogICAgICAgICByZXR1cm4ga1ZLX0YxOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RnVuY3Rpb24yOgorICAgIGNhc2UgVmlydHVhbEtleTo6
RnVuY3Rpb24yOgogICAgICAgICByZXR1cm4ga1ZLX0YyOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RnVuY3Rpb24zOgorICAgIGNhc2UgVmly
dHVhbEtleTo6RnVuY3Rpb24zOgogICAgICAgICByZXR1cm4ga1ZLX0YzOwotICAgIGNhc2UgSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RnVuY3Rpb240OgorICAg
IGNhc2UgVmlydHVhbEtleTo6RnVuY3Rpb240OgogICAgICAgICByZXR1cm4ga1ZLX0Y0OwotICAg
IGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RnVuY3Rp
b241OgorICAgIGNhc2UgVmlydHVhbEtleTo6RnVuY3Rpb241OgogICAgICAgICByZXR1cm4ga1ZL
X0Y1OwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtl
eTo6RnVuY3Rpb242OgorICAgIGNhc2UgVmlydHVhbEtleTo6RnVuY3Rpb242OgogICAgICAgICBy
ZXR1cm4ga1ZLX0Y2OwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6
VmlydHVhbEtleTo6RnVuY3Rpb243OgorICAgIGNhc2UgVmlydHVhbEtleTo6RnVuY3Rpb243Ogog
ICAgICAgICByZXR1cm4ga1ZLX0Y3OwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbjo6VmlydHVhbEtleTo6RnVuY3Rpb244OgorICAgIGNhc2UgVmlydHVhbEtleTo6RnVu
Y3Rpb244OgogICAgICAgICByZXR1cm4ga1ZLX0Y4OwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RnVuY3Rpb245OgorICAgIGNhc2UgVmlydHVh
bEtleTo6RnVuY3Rpb245OgogICAgICAgICByZXR1cm4ga1ZLX0Y5OwotICAgIGNhc2UgSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RnVuY3Rpb24xMDoKKyAgICBj
YXNlIFZpcnR1YWxLZXk6OkZ1bmN0aW9uMTA6CiAgICAgICAgIHJldHVybiBrVktfRjEwOwotICAg
IGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RnVuY3Rp
b24xMToKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkZ1bmN0aW9uMTE6CiAgICAgICAgIHJldHVybiBr
VktfRjExOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVh
bEtleTo6RnVuY3Rpb24xMjoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkZ1bmN0aW9uMTI6CiAgICAg
ICAgIHJldHVybiBrVktfRjEyOwogICAgIH0KIH0KIAotc3RhdGljIE5TRXZlbnRNb2RpZmllckZs
YWdzIGV2ZW50TW9kaWZpZXJGbGFnc0ZvclZpcnR1YWxLZXkoSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbjo6VmlydHVhbEtleSBrZXkpCitzdGF0aWMgTlNFdmVudE1vZGlmaWVyRmxhZ3Mg
ZXZlbnRNb2RpZmllckZsYWdzRm9yVmlydHVhbEtleShWaXJ0dWFsS2V5IGtleSkKIHsKICAgICAv
LyBDb21wdXRlcyB0aGUgbW9kaWZpZXJzIGNoYW5nZWQgYnkgdGhlIHZpcnR1YWwga2V5IHdoZW4g
aXQgaXMgcHJlc3NlZCBvciByZWxlYXNlZC4KICAgICAvLyBUaGUgbWFwcGluZyBmcm9tIGtleXMg
dG8gbW9kaWZpZXJzIGlzIHNwZWNpZmllZCBpbiB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgTlNFdmVu
dC4KICAgICBzd2l0Y2ggKGtleSkgewotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbjo6VmlydHVhbEtleTo6U2hpZnQ6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpTaGlmdDoK
ICAgICAgICAgcmV0dXJuIE5TRXZlbnRNb2RpZmllckZsYWdTaGlmdDsKIAotICAgIGNhc2UgSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6Q29udHJvbDoKKyAgICBj
YXNlIFZpcnR1YWxLZXk6OkNvbnRyb2w6CiAgICAgICAgIHJldHVybiBOU0V2ZW50TW9kaWZpZXJG
bGFnQ29udHJvbDsKIAotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6
VmlydHVhbEtleTo6QWx0ZXJuYXRlOgorICAgIGNhc2UgVmlydHVhbEtleTo6QWx0ZXJuYXRlOgog
ICAgICAgICByZXR1cm4gTlNFdmVudE1vZGlmaWVyRmxhZ09wdGlvbjsKIAotICAgIGNhc2UgSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TWV0YToKKyAgICBjYXNl
IFZpcnR1YWxLZXk6Ok1ldGE6CiAgICAgICAgIC8vIFRoZSAnbWV0YScga2V5IGRvZXMgbm90IGV4
aXN0IG9uIEFwcGxlIGtleWJvYXJkcyBhbmQgaXMgdXN1YWxseQogICAgICAgICAvLyBtYXBwZWQg
dG8gdGhlIENvbW1hbmQga2V5IHdoZW4gdXNpbmcgdGhpcmQtcGFydHkga2V5Ym9hcmRzLgotICAg
IGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6Q29tbWFu
ZDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkNvbW1hbmQ6CiAgICAgICAgIHJldHVybiBOU0V2ZW50
TW9kaWZpZXJGbGFnQ29tbWFuZDsKIAotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbjo6VmlydHVhbEtleTo6SGVscDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkhlbHA6CiAg
ICAgICAgIHJldHVybiBOU0V2ZW50TW9kaWZpZXJGbGFnSGVscCB8IE5TRXZlbnRNb2RpZmllckZs
YWdGdW5jdGlvbjsKIAotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6
VmlydHVhbEtleTo6UGFnZVVwOgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21h
dGlvbjo6VmlydHVhbEtleTo6UGFnZURvd246Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29s
OjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpFbmQ6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpIb21lOgorICAgIGNhc2UgVmlydHVhbEtleTo6
UGFnZVVwOgorICAgIGNhc2UgVmlydHVhbEtleTo6UGFnZURvd246CisgICAgY2FzZSBWaXJ0dWFs
S2V5OjpFbmQ6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpIb21lOgogICAgICAgICByZXR1cm4gTlNF
dmVudE1vZGlmaWVyRmxhZ0Z1bmN0aW9uOwogCi0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29s
OjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpMZWZ0QXJyb3c6Ci0gICAgY2FzZSBJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpVcEFycm93OgotICAgIGNhc2UgSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6UmlnaHRBcnJvdzoKLSAg
ICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkRvd25B
cnJvdzoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkxlZnRBcnJvdzoKKyAgICBjYXNlIFZpcnR1YWxL
ZXk6OlVwQXJyb3c6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpSaWdodEFycm93OgorICAgIGNhc2Ug
VmlydHVhbEtleTo6RG93bkFycm93OgogICAgICAgICByZXR1cm4gTlNFdmVudE1vZGlmaWVyRmxh
Z051bWVyaWNQYWQgfCBOU0V2ZW50TW9kaWZpZXJGbGFnRnVuY3Rpb247CiAKLSAgICBjYXNlIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkRlbGV0ZToKKyAgICBj
YXNlIFZpcnR1YWxLZXk6OkRlbGV0ZToKICAgICAgICAgcmV0dXJuIE5TRXZlbnRNb2RpZmllckZs
YWdGdW5jdGlvbjsKIAotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6
VmlydHVhbEtleTo6Q2xlYXI6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWQwOgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkMToKLSAgICBjYXNlIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZDI6Ci0gICAgY2Fz
ZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWQz
OgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6
TnVtYmVyUGFkNDoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZp
cnR1YWxLZXk6Ok51bWJlclBhZDU6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRv
bWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWQ2OgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkNzoKLSAgICBjYXNlIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZDg6Ci0gICAg
Y2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQ
YWQ5OgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtl
eTo6TnVtYmVyUGFkTXVsdGlwbHk6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRv
bWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWRBZGQ6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlBy
b3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWRTdWJ0cmFjdDoKLSAgICBj
YXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBh
ZFNlcGFyYXRvcjoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZp
cnR1YWxLZXk6Ok51bWJlclBhZERlY2ltYWw6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29s
OjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWREaXZpZGU6CisgICAgY2FzZSBWaXJ0
dWFsS2V5OjpDbGVhcjoKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZDA6CisgICAgY2Fz
ZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWQxOgorICAgIGNhc2UgVmlydHVhbEtleTo6TnVtYmVyUGFk
MjoKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZDM6CisgICAgY2FzZSBWaXJ0dWFsS2V5
OjpOdW1iZXJQYWQ0OgorICAgIGNhc2UgVmlydHVhbEtleTo6TnVtYmVyUGFkNToKKyAgICBjYXNl
IFZpcnR1YWxLZXk6Ok51bWJlclBhZDY6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWQ3
OgorICAgIGNhc2UgVmlydHVhbEtleTo6TnVtYmVyUGFkODoKKyAgICBjYXNlIFZpcnR1YWxLZXk6
Ok51bWJlclBhZDk6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWRNdWx0aXBseToKKyAg
ICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZEFkZDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51
bWJlclBhZFN1YnRyYWN0OgorICAgIGNhc2UgVmlydHVhbEtleTo6TnVtYmVyUGFkU2VwYXJhdG9y
OgorICAgIGNhc2UgVmlydHVhbEtleTo6TnVtYmVyUGFkRGVjaW1hbDoKKyAgICBjYXNlIFZpcnR1
YWxLZXk6Ok51bWJlclBhZERpdmlkZToKICAgICAgICAgcmV0dXJuIE5TRXZlbnRNb2RpZmllckZs
YWdOdW1lcmljUGFkOwogCi0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
OjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjE6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpB
dXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjI6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlBy
b3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjM6Ci0gICAgY2FzZSBJbnNw
ZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjQ6Ci0gICAg
Y2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5jdGlv
bjU6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5
OjpGdW5jdGlvbjY6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpW
aXJ0dWFsS2V5OjpGdW5jdGlvbjc6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRv
bWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjg6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjk6Ci0gICAgY2FzZSBJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjEwOgotICAgIGNh
c2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RnVuY3Rpb24x
MToKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6
OkZ1bmN0aW9uMTI6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpGdW5jdGlvbjE6CisgICAgY2FzZSBW
aXJ0dWFsS2V5OjpGdW5jdGlvbjI6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpGdW5jdGlvbjM6Cisg
ICAgY2FzZSBWaXJ0dWFsS2V5OjpGdW5jdGlvbjQ6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpGdW5j
dGlvbjU6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpGdW5jdGlvbjY6CisgICAgY2FzZSBWaXJ0dWFs
S2V5OjpGdW5jdGlvbjc6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpGdW5jdGlvbjg6CisgICAgY2Fz
ZSBWaXJ0dWFsS2V5OjpGdW5jdGlvbjk6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpGdW5jdGlvbjEw
OgorICAgIGNhc2UgVmlydHVhbEtleTo6RnVuY3Rpb24xMToKKyAgICBjYXNlIFZpcnR1YWxLZXk6
OkZ1bmN0aW9uMTI6CiAgICAgICAgIHJldHVybiBOU0V2ZW50TW9kaWZpZXJGbGFnRnVuY3Rpb247
CiAKICAgICBkZWZhdWx0OgpAQCAtNDI3LDE5ICs0MjcsMzQgQEAgc3RhdGljIE5TRXZlbnRNb2Rp
ZmllckZsYWdzIGV2ZW50TW9kaWZpZXJGbGFnc0ZvclZpcnR1YWxLZXkoSW5zcGVjdG9yOjpQcm90
b2NvbDoKICAgICB9CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2lt
dWxhdGVLZXlTdHJva2UoV2ViUGFnZVByb3h5JiBwYWdlLCBJbnNwZWN0b3I6OlByb3RvY29sOjpB
dXRvbWF0aW9uOjpLZXlib2FyZEludGVyYWN0aW9uVHlwZSBpbnRlcmFjdGlvbiwgSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleSBrZXkpCit2b2lkIFdlYkF1dG9tYXRp
b25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlS2V5Ym9hcmRJbnRlcmFjdGlvbihXZWJQYWdlUHJv
eHkmIHBhZ2UsIEtleWJvYXJkSW50ZXJhY3Rpb24gaW50ZXJhY3Rpb24sIHN0ZDo6b3B0aW9uYWw8
VmlydHVhbEtleT4gdmlydHVhbEtleSwgc3RkOjpvcHRpb25hbDxDaGFyS2V5PiBjaGFyS2V5KQog
ewogICAgIC8vIEZJWE1FOiB0aGlzIGZ1bmN0aW9uIGFuZCB0aGUgQXV0b21hdGlvbiBwcm90b2Nv
bCBlbnVtIHNob3VsZCBwcm9iYWJseSBhZG9wdCBrZXkgbmFtZXMKICAgICAvLyBmcm9tIFczQyBV
SUV2ZW50cyBzdGFuZGFyZC4gRm9yIG1vcmUgZGV0YWlsczogaHR0cHM6Ly93M2MuZ2l0aHViLmlv
L3VpZXZlbnRzLWNvZGUvCiAKLSAgICBib29sIGlzU3RpY2t5TW9kaWZpZXIgPSBrZXlIYXNTdGlj
a3lNb2RpZmllcihrZXkpOwotICAgIE5TRXZlbnRNb2RpZmllckZsYWdzIGNoYW5nZWRNb2RpZmll
cnMgPSBldmVudE1vZGlmaWVyRmxhZ3NGb3JWaXJ0dWFsS2V5KGtleSk7Ci0gICAgaW50IGtleUNv
ZGUgPSBrZXlDb2RlRm9yVmlydHVhbEtleShrZXkpOworICAgIEFTU0VSVCh2aXJ0dWFsS2V5Lmhh
c192YWx1ZSgpIHx8IGNoYXJLZXkuaGFzX3ZhbHVlKCkpOworCisgICAgYm9vbCBpc1N0aWNreU1v
ZGlmaWVyID0gZmFsc2U7CisgICAgTlNFdmVudE1vZGlmaWVyRmxhZ3MgY2hhbmdlZE1vZGlmaWVy
cyA9IDA7CisgICAgaW50IGtleUNvZGU7CisgICAgc3RkOjpvcHRpb25hbDx1bmljaGFyPiBjaGFy
Q29kZTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuaWNoYXI+IGNoYXJDb2RlSWdub3JpbmdNb2RpZmll
cnM7CisKKyAgICBpZiAodmlydHVhbEtleS5oYXNfdmFsdWUoKSkgeworICAgICAgICBpc1N0aWNr
eU1vZGlmaWVyID0gdmlydHVhbEtleUhhc1N0aWNreU1vZGlmaWVyKHZpcnR1YWxLZXkudmFsdWUo
KSk7CisgICAgICAgIGNoYW5nZWRNb2RpZmllcnMgPSBldmVudE1vZGlmaWVyRmxhZ3NGb3JWaXJ0
dWFsS2V5KHZpcnR1YWxLZXkudmFsdWUoKSk7CisgICAgICAgIGtleUNvZGUgPSBrZXlDb2RlRm9y
VmlydHVhbEtleSh2aXJ0dWFsS2V5LnZhbHVlKCkpOworICAgICAgICBjaGFyQ29kZSA9IGNoYXJD
b2RlRm9yVmlydHVhbEtleSh2aXJ0dWFsS2V5LnZhbHVlKCkpOworICAgICAgICBjaGFyQ29kZUln
bm9yaW5nTW9kaWZpZXJzID0gY2hhckNvZGVJZ25vcmluZ01vZGlmaWVyc0ZvclZpcnR1YWxLZXko
dmlydHVhbEtleS52YWx1ZSgpKTsKKyAgICB9CisKKyAgICBpZiAoY2hhcktleS5oYXNfdmFsdWUo
KSkgeworICAgICAgICBjaGFyQ29kZSA9ICh1bmljaGFyKWNoYXJLZXkudmFsdWUoKTsKKyAgICAg
ICAgY2hhckNvZGVJZ25vcmluZ01vZGlmaWVycyA9ICh1bmljaGFyKWNoYXJLZXkudmFsdWUoKTsK
KyAgICB9CiAKICAgICAvLyBGSVhNRTogY29uc2lkZXIgdXNpbmcgQXBwS2l0IFNQSSB0byBub3Jt
YWxpemUgJ2NoYXJhY3RlcnMnLCBpLmUuLCBjaGFuZ2luZyAqIHRvIFNoaWZ0LTgsCiAgICAgLy8g
YW5kIHBhc3NpbmcgdGhhdCBpbiB0byBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMuIFdlIGNv
dWxkIGhhcmRjb2RlIHRoaXMgZm9yIEFTQ0lJIGlmIG5lZWRlZC4KLSAgICBzdGQ6Om9wdGlvbmFs
PHVuaWNoYXI+IGNoYXJDb2RlID0gY2hhckNvZGVGb3JWaXJ0dWFsS2V5KGtleSk7Ci0gICAgc3Rk
OjpvcHRpb25hbDx1bmljaGFyPiBjaGFyQ29kZUlnbm9yaW5nTW9kaWZpZXJzID0gY2hhckNvZGVJ
Z25vcmluZ01vZGlmaWVyc0ZvclZpcnR1YWxLZXkoa2V5KTsKICAgICBOU1N0cmluZyAqY2hhcmFj
dGVycyA9IGNoYXJDb2RlID8gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaGFyQ29k
ZS52YWx1ZSgpIGxlbmd0aDoxXSA6IG5pbDsKICAgICBOU1N0cmluZyAqdW5tb2RpZmllZENoYXJh
Y3RlcnMgPSBjaGFyQ29kZUlnbm9yaW5nTW9kaWZpZXJzID8gW05TU3RyaW5nIHN0cmluZ1dpdGhD
aGFyYWN0ZXJzOiZjaGFyQ29kZUlnbm9yaW5nTW9kaWZpZXJzLnZhbHVlKCkgbGVuZ3RoOjFdIDog
bmlsOwogCkBAIC00NTIsMTkgKzQ2NywxOSBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpw
bGF0Zm9ybVNpbXVsYXRlS2V5U3Ryb2tlKFdlYlBhZ2VQcm94eSYgcGFnZSwgSW5zcGVjdAogICAg
IE5TUG9pbnQgZXZlbnRQb3NpdGlvbiA9IE5TTWFrZVBvaW50KDAsIHdpbmRvdy5mcmFtZS5zaXpl
LmhlaWdodCk7CiAKICAgICBzd2l0Y2ggKGludGVyYWN0aW9uKSB7Ci0gICAgY2FzZSBJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpLZXlib2FyZEludGVyYWN0aW9uVHlwZTo6S2V5UHJl
c3M6IHsKKyAgICBjYXNlIEtleWJvYXJkSW50ZXJhY3Rpb246OktleVByZXNzOiB7CiAgICAgICAg
IE5TRXZlbnRUeXBlIGV2ZW50VHlwZSA9IGlzU3RpY2t5TW9kaWZpZXIgPyBOU0V2ZW50VHlwZUZs
YWdzQ2hhbmdlZCA6IE5TRXZlbnRUeXBlS2V5RG93bjsKICAgICAgICAgbV9jdXJyZW50TW9kaWZp
ZXJzIHw9IGNoYW5nZWRNb2RpZmllcnM7CiAgICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmpl
Y3Q6W05TRXZlbnQga2V5RXZlbnRXaXRoVHlwZTpldmVudFR5cGUgbG9jYXRpb246ZXZlbnRQb3Np
dGlvbiBtb2RpZmllckZsYWdzOm1fY3VycmVudE1vZGlmaWVycyB0aW1lc3RhbXA6dGltZXN0YW1w
IHdpbmRvd051bWJlcjp3aW5kb3dOdW1iZXIgY29udGV4dDpuaWwgY2hhcmFjdGVyczpjaGFyYWN0
ZXJzIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczp1bm1vZGlmaWVkQ2hhcmFjdGVycyBpc0FS
ZXBlYXQ6Tk8ga2V5Q29kZTprZXlDb2RlXV07CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBj
YXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OktleWJvYXJkSW50ZXJhY3Rpb25U
eXBlOjpLZXlSZWxlYXNlOiB7CisgICAgY2FzZSBLZXlib2FyZEludGVyYWN0aW9uOjpLZXlSZWxl
YXNlOiB7CiAgICAgICAgIE5TRXZlbnRUeXBlIGV2ZW50VHlwZSA9IGlzU3RpY2t5TW9kaWZpZXIg
PyBOU0V2ZW50VHlwZUZsYWdzQ2hhbmdlZCA6IE5TRXZlbnRUeXBlS2V5VXA7CiAgICAgICAgIG1f
Y3VycmVudE1vZGlmaWVycyAmPSB+Y2hhbmdlZE1vZGlmaWVyczsKICAgICAgICAgW2V2ZW50c1Rv
QmVTZW50IGFkZE9iamVjdDpbTlNFdmVudCBrZXlFdmVudFdpdGhUeXBlOmV2ZW50VHlwZSBsb2Nh
dGlvbjpldmVudFBvc2l0aW9uIG1vZGlmaWVyRmxhZ3M6bV9jdXJyZW50TW9kaWZpZXJzIHRpbWVz
dGFtcDp0aW1lc3RhbXAgd2luZG93TnVtYmVyOndpbmRvd051bWJlciBjb250ZXh0Om5pbCBjaGFy
YWN0ZXJzOmNoYXJhY3RlcnMgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOnVubW9kaWZpZWRD
aGFyYWN0ZXJzIGlzQVJlcGVhdDpOTyBrZXlDb2RlOmtleUNvZGVdXTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6S2V5Ym9h
cmRJbnRlcmFjdGlvblR5cGU6Okluc2VydEJ5S2V5OiB7CisgICAgY2FzZSBLZXlib2FyZEludGVy
YWN0aW9uOjpJbnNlcnRCeUtleTogewogICAgICAgICAvLyBTdGlja3kgbW9kaWZpZXJzIHNob3Vs
ZCBlaXRoZXIgYmUgJ0tleVByZXNzJyBvciAnS2V5UmVsZWFzZScuCiAgICAgICAgIEFTU0VSVCgh
aXNTdGlja3lNb2RpZmllcik7CiAgICAgICAgIGlmIChpc1N0aWNreU1vZGlmaWVyKQpAQCAtNTUx
LDcgKzU2Niw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVL
ZXlTZXF1ZW5jZShXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0CiAKICAgICAgICAgW2V2ZW50c1Rv
QmVTZW50IGFkZE9iamVjdDpbTlNFdmVudCBrZXlFdmVudFdpdGhUeXBlOk5TRXZlbnRUeXBlS2V5
RG93biBsb2NhdGlvbjpldmVudFBvc2l0aW9uIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJzRm9yS2V5
c3Ryb2tlIHRpbWVzdGFtcDp0aW1lc3RhbXAgd2luZG93TnVtYmVyOndpbmRvd051bWJlciBjb250
ZXh0Om5pbCBjaGFyYWN0ZXJzOnN1YnN0cmluZyBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6
c3Vic3RyaW5nIGlzQVJlcGVhdDpOTyBrZXlDb2RlOjBdXTsKICAgICAgICAgW2V2ZW50c1RvQmVT
ZW50IGFkZE9iamVjdDpbTlNFdmVudCBrZXlFdmVudFdpdGhUeXBlOk5TRXZlbnRUeXBlS2V5VXAg
bG9jYXRpb246ZXZlbnRQb3NpdGlvbiBtb2RpZmllckZsYWdzOm1vZGlmaWVyc0ZvcktleXN0cm9r
ZSB0aW1lc3RhbXA6dGltZXN0YW1wIHdpbmRvd051bWJlcjp3aW5kb3dOdW1iZXIgY29udGV4dDpu
aWwgY2hhcmFjdGVyczpzdWJzdHJpbmcgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOnN1YnN0
cmluZyBpc0FSZXBlYXQ6Tk8ga2V5Q29kZTowXV07Ci0gICAgICAgIAorCiAgICAgICAgIGlmIChz
aG91bGRQcmVzc1NoaWZ0KQogICAgICAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpb
TlNFdmVudCBrZXlFdmVudFdpdGhUeXBlOk5TRXZlbnRUeXBlRmxhZ3NDaGFuZ2VkIGxvY2F0aW9u
OmV2ZW50UG9zaXRpb24gbW9kaWZpZXJGbGFnczptX2N1cnJlbnRNb2RpZmllcnMgdGltZXN0YW1w
OnRpbWVzdGFtcCB3aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmlsIGNoYXJhY3Rl
cnM6QCIiIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczpAIiIgaXNBUmVwZWF0Ok5PIGtleUNv
ZGU6a1ZLX1NoaWZ0XV07CiAgICAgfV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1NjEzOTJjOWQzZmQ2NmRkODU4NWIwNjdlMTAwZTI1
Mzk5YjUwNWU4Li4wZWRmMmIyZDEwMTI2NGIzOGJmY2YwMWY5Mzg4ZDEzNGRlMjFjMTFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE1
MjksNiArMTUyOSw4IEBACiAJCTk5NDZFRjg2MUU3QjAyNzAwMDU0MUU3OSAvKiBXZWJBdXRvbWF0
aW9uU2Vzc2lvbklPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk5NDZFRjg1MUU3QjAyNjYwMDU0MUU3OSAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbklP
Uy5tbSAqLzsgfTsKIAkJOTk0QkFERjMxRjdENzgxMTAwQjU3MUU3IC8qIFdLSW5zcGVjdG9yVmll
d0NvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5OTRCQURGMjFGN0Q3N0VCMDBCNTcxRTcgLyogV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxl
ci5tbSAqLzsgfTsKIAkJOTk0QkFERjQxRjdENzgxNDAwQjU3MUU3IC8qIFdLSW5zcGVjdG9yVmll
d0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDk5NEJBREYxMUY3RDc3RUEwMEI1NzFFNyAvKiBXS0luc3BlY3RvclZpZXdDb250cm9sbGVy
LmggKi87IH07CisJCTk5NTIyNkQ2MjA3RDE4NDYwMEY3ODQyMCAvKiBTaW11bGF0ZWRJbnB1dERp
c3BhdGNoZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDk5NTIyNkQ0MjA3RDE4NDUwMEY3ODQyMCAvKiBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuaCAq
LzsgfTsKKwkJOTk1MjI2RDcyMDdEMTg0NjAwRjc4NDIwIC8qIFNpbXVsYXRlZElucHV0RGlzcGF0
Y2hlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
OTUyMjZENTIwN0QxODQ2MDBGNzg0MjAgLyogU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmNwcCAq
LzsgfTsKIAkJOTk1NUE2RUMxQzc5ODBDMjAwRUI2QTkzIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTU1QTZF
QjFDNzk4MEJCMDBFQjZBOTMgLyogV2ViQXV0b21hdGlvblNlc3Npb24uaCAqLzsgfTsKIAkJOTk1
NUE2RUQxQzc5ODBDQTAwRUI2QTkzIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5NTVBNkVBMUM3OTgwQkIw
MEVCNkE5MyAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgKi87IH07CiAJCTk5NTVBNkVGMUM3
OTgxMDgwMEVCNkE5MyAvKiBBdXRvbWF0aW9uLmpzb24gaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTU1QTZFOTFDNzk4MEJCMDBFQjZBOTMgLyogQXV0b21h
dGlvbi5qc29uICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkBAIC00MDE5LDYgKzQwMjEsOCBAQAogCQk5OTQ2RUY4NTFFN0IwMjY2MDA1NDFFNzkgLyogV2Vi
QXV0b21hdGlvblNlc3Npb25JT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBXZWJBdXRvbWF0aW9uU2Vzc2lvbklPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTk0QkFERjExRjdENzdFQTAwQjU3MUU3IC8qIFdLSW5zcGVjdG9yVmlld0NvbnRy
b2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tJbnNwZWN0b3JWaWV3
Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTRCQURGMjFGN0Q3
N0VCMDBCNTcxRTcgLyogV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5NTIyNkQ0MjA3RDE4NDUwMEY3ODQyMCAv
KiBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTk5NTIyNkQ1MjA3RDE4NDYwMEY3ODQyMCAvKiBTaW11bGF0ZWRJbnB1dERpc3BhdGNo
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2ltdWxhdGVkSW5w
dXREaXNwYXRjaGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk1NUE2RTkx
Qzc5ODBCQjAwRUI2QTkzIC8qIEF1dG9tYXRpb24uanNvbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuanNvbjsg
cGF0aCA9IEF1dG9tYXRpb24uanNvbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk1
NUE2RUExQzc5ODBCQjAwRUI2QTkzIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkF1dG9tYXRpb25TZXNzaW9uLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk1NUE2RUIxQzc5ODBCQjAwRUI2QTkzIC8q
IFdlYkF1dG9tYXRpb25TZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYkF1dG9tYXRpb25TZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02
OTcwLDYgKzY5NzQsOCBAQAogCQkJCTk5NDZFRjgyMUU3QjAyM0QwMDU0MUU3OSAvKiBpb3MgKi8s
CiAJCQkJOTlDM0FFMjIxREFEOEUxNDAwQUY1QzE2IC8qIG1hYyAqLywKIAkJCQk5OTU1QTZFOTFD
Nzk4MEJCMDBFQjZBOTMgLyogQXV0b21hdGlvbi5qc29uICovLAorCQkJCTk5NTIyNkQ1MjA3RDE4
NDYwMEY3ODQyMCAvKiBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuY3BwICovLAorCQkJCTk5NTIy
NkQ0MjA3RDE4NDUwMEY3ODQyMCAvKiBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuaCAqLywKIAkJ
CQk5OTU1QTZFQTFDNzk4MEJCMDBFQjZBOTMgLyogV2ViQXV0b21hdGlvblNlc3Npb24uY3BwICov
LAogCQkJCTk5NTVBNkVCMUM3OTgwQkIwMEVCNkE5MyAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbi5o
ICovLAogCQkJCTFDMEExOTU5MUM5MDA2RUEwMEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lv
bi5tZXNzYWdlcy5pbiAqLywKQEAgLTkxNzQsNiArOTE4MCw3IEBACiAJCQkJODMxM0Y3RUMxRjdE
QUUwODAwQjk0NEVCIC8qIFNoYXJlZFN0cmluZ0hhc2hTdG9yZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJODMxM0Y3RUUxRjdEQUUwODAwQjk0NEVCIC8qIFNoYXJlZFN0cmluZ0hhc2hUYWJsZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODNGOTY0NEUxRkEwRjc2RTAwQzQ3NzUwIC8qIFNoYXJlZFN0cmlu
Z0hhc2hUYWJsZVJlYWRPbmx5LmggaW4gSGVhZGVycyAqLywKKwkJCQk5OTUyMjZENjIwN0QxODQ2
MDBGNzg0MjAgLyogU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkyREFGMDZENjE4QkQxQTQ3MDA4MUNFQjEgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRFNjk0M0UxOEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0
TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTI3
MkIyOEIxNDA2OTg1RDAwOTZBNUQwIC8qIFN0YXRpc3RpY3NEYXRhLmggaW4gSGVhZGVycyAqLywK
QEAgLTEwODgwLDYgKzEwODg3LDcgQEAKIAkJCQk4MzEzRjdFQjFGN0RBRTA4MDBCOTQ0RUIgLyog
U2hhcmVkU3RyaW5nSGFzaFN0b3JlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTgzMTNGN0VEMUY3
REFFMDgwMEI5NDRFQiAvKiBTaGFyZWRTdHJpbmdIYXNoVGFibGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJODNGOTY0NEQxRkEwRjc2RTAwQzQ3NzUwIC8qIFNoYXJlZFN0cmluZ0hhc2hUYWJsZVJl
YWRPbmx5LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTk5NTIyNkQ3MjA3RDE4NDYwMEY3ODQyMCAv
KiBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkRBRjA2
RDcxOEJEMUE0NzAwODFDRUIxIC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIubW0gaW4g
U291cmNlcyAqLywKIAkJCQkyREU2OTQzRDE4QkQyQTY4MDA1QzE1RTUgLyogU21hcnRNYWduaWZp
Y2F0aW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1
MjcyQjI4QTE0MDY5ODVEMDA5NkE1RDAgLyogU3RhdGlzdGljc0RhdGEuY3BwIGluIFNvdXJjZXMg
Ki8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338371</attachid>
            <date>2018-04-19 15:34:31 -0700</date>
            <delta_ts>2018-04-19 16:48:59 -0700</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-184603-20180419153430.patch</filename>
            <type>text/plain</type>
            <size>105500</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwODIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDIzMzY5YzY5MDNmMjA1MTY3
YmE0YWI1ZDFhMDQ5MTU5OGM2MGIxNmUuLjQ0NTVjN2E0Njk3ZGJiNDE5NGI5MDBhZDNhYjNkNzNk
YmM2MmUyMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTI5IEBACisyMDE4LTA0LTE5ICBCcmlhbiBC
dXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBBdXRvbWF0aW9uOiBhZGQgc3Vw
cG9ydCBmb3IgbW91c2Uva2V5Ym9hcmQgaW50ZXJhY3Rpb24gc2VxdWVuY2VzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQ2MDMKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzM5NDIxODM5PgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0
Y2hlci4KKworICAgICAgICBBZGQgbmV3IHByb3RvY29sIG1ldGhvZHMgYW5kIFdlYktpdCBzdXBw
b3J0IGZvciBpbXBsZW1lbnRpbmcgdGhlIFczQyBBY3Rpb25zIEFQSS4KKyAgICAgICAgVGhpcyBp
cyBhIGdlbmVyaWMgY29tbWFuZCBmb3Igc2VuZGluZyBsb3ctbGV2ZWwgbW91c2UsIGtleSwgYW5k
IHRvdWNoIGV2ZW50cyB0bworICAgICAgICB0ZXN0IHBhZ2UgYmVoYXZpb3Igd2hlbiBwZXJmb3Jt
aW5nIGRyYWctYW5kLWRyb3AsIGdlc3R1cmVzLCBvciBzcGVjaWZpYyBrZXlkb3duL2tleXVwcy4K
KworICAgICAgICBUbyBpbXBsZW1lbnQgdGhpcyBmdW5jdGlvbmFsaXR5LCB0aGlzIHBhdGNoIGFk
ZHMgU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLCBhIGNsYXNzCisgICAgICAgIGZvciBkaXNwYXRj
aGluZyBpbnB1dCBldmVudHMgYXN5bmNocm9ub3VzbHkuIFNpbWlsYXIgdG8gdGhlIFdlYkRyaXZl
ciBzcGVjaWZpY2F0aW9uLAorICAgICAgICB0aGlzIGlzIGRlc2lnbmVkIGFzIGEga2V5ZnJhbWlu
ZyBBUEkuIENhbGxlcnMgc2V0IHVwIHNldmVyYWwgImlucHV0IHNvdXJjZXMiIHN1Y2gKKyAgICAg
ICAgYXMga2V5Ym9hcmQgb3IgbW91c2UsIGFuZCB0aGVuIHNwZWNpZnkgdGhlIHN0YXRlcyBvZiB0
aGF0IGlucHV0IHNvdXJjZSBvdmVyIHRpbWUuIFRoZQorICAgICAgICBkaXNwYXRjaGVyIGNhbGN1
bGF0ZXMgZGlmZnMgYmV0d2VlbiB0aGUgcHJldmlvdXMgYW5kIGN1cnJlbnQga2V5ZnJhbWVzIGFu
ZCBnZW5lcmF0ZXMKKyAgICAgICAgdGhlIGFwcHJvcHJpYXRlIGV2ZW50cyB0aGF0IHdvdWxkIGhh
cHBlbiBpZiBhIHVzZXIgY2F1c2VkIHRoZSBzdGF0ZSB0cmFuc2l0aW9uLgorCisgICAgICAgIEZv
ciBleGFtcGxlLCBpZiBhIG1vdXNlIGlucHV0IHNvdXJjZSdzIHN0YXRlIGNoYW5nZXMsIHRoZSBk
aXNwYXRjaGVyIHNlbmRzIHN5bnRoZXRpYyBtb3VzZW1vdmUsCisgICAgICAgIG1vdXNlZG93biwg
b3IgbW91c2V1cCBldmVudHMgZGVwZW5kaW5nIG9uIHRoZSBwcmUtIGFuZCBwb3N0LXN0YXRlLiBU
aGlzIGlzIHVuaW50ZXJlc3RpbmcKKyAgICAgICAgYW5kIG92ZXJjb21wbGljYXRlZCBmb3Igc2lt
cGxlIGtleSBhbmQgbW91c2UgcHJlc3NlcywgYnV0IGl0J3MgcmVhbGx5IGRlc2lnbmVkIHdpdGgg
YW4KKyAgICAgICAgZXllIHRvd2FyZHMgc3VwcG9ydGluZyBtb3VzZW1vdmUgaW50ZXJwb2xhdGlv
biBhbmQgdG91Y2ggZXZlbnQgaW50ZXJwb2xhdGlvbiBpbiBsYXRlciBwYXRjaGVzLgorCisgICAg
ICAgIFRoZSBzdHJhdGVneSBmb3IgZGlzcGF0Y2hpbmcgZXZlbnRzIGRlcGVuZHMgb24gdGhlIGlu
cHV0IHNvdXJjZSB0eXBlOyByaWdodCBub3csIHRoZXNlCisgICAgICAgIG1hcCBkaXJlY3RseSB0
byB0aGUgZXhpc3RpbmcgcGxhdGZvcm1TaW11bGF0ZXtNb3VzZSwgS2V5Ym9hcmR9SW50ZXJhY3Rp
b24gbWV0aG9kcy4gSW4KKyAgICAgICAgdGhlIGZ1dHVyZSwgdGhlIGRpc3BhdGNoIHN0cmF0ZWd5
IG1heSBiZSBlbGFib3JhdGVkIGZvciBpbnRlcnBvbGF0ZWQgbW91c2Vtb3ZlIGV2ZW50cy4KKwor
ICAgICAgICBUaGlzIHBhdGNoIGRlcGVuZHMgb24gc3VwcG9ydCBhZGRlZCBpbiBidWcgMTg0NDYy
LgorCisgICAgICAgIE5vIHRlc3RzIHlldC4gV2hlbiB0aGlzIGNvbW1hbmQgaXMgaG9va2VkIHVw
IHRvIGEgZHJpdmVyLCB0aGUgY29kZSB3aWxsIGJlIGV4ZXJjaXNlZCBieQorICAgICAgICBXM0Mg
YWN0aW9ucyB0ZXN0IHN1aXRlLCB3aGljaCBpcyBmYWlybHkgY29tcGxleCBhdCB0aGlzIHBvaW50
IHJlbGF0aXZlIHRvIGVuZC11c2VyIGNvZGUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21h
dGlvbi9BdXRvbWF0aW9uLmpzb246IEFkZCBuZXcgdHlwZXMgYW5kIGNvbW1hbmRzLgorCisgICAg
ICAgICogVUlQcm9jZXNzL0F1dG9tYXRpb24vU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0OjpTaW11bGF0ZWRJbnB1dFNvdXJjZVN0YXRlOjplbXB0eVN0
YXRlKToKKyAgICAgICAgKFdlYktpdDo6U2ltdWxhdGVkSW5wdXRTb3VyY2U6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlNpbXVsYXRlZElucHV0U291cmNlOjpTaW11bGF0ZWRJbnB1dFNvdXJj
ZSk6CisgICAgICAgIChXZWJLaXQ6OlNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6Q2xpZW50Ojp+
Q2xpZW50KToKKyAgICAgICAgQWRkIHN0cnVjdHMgZm9yIGlucHV0IHNvdXJjZSwgc291cmNlIHN0
YXRlLCBhbmQga2V5ZnJhbWUuCisgICAgICAgIFRoZSBkaXNwYXRjaGVyJ3MgY2xpZW50IGludGVy
ZmFjZSBpcyBpbXBsZW1lbnRlZCBieSBXZWJBdXRvbWF0aW9uU2Vzc2lvbi4KKworICAgICAgICAo
V2ViS2l0OjpTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OmNyZWF0ZSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0F1dG9tYXRpb24vU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQ6OlNpbXVsYXRlZElucHV0S2V5RnJhbWU6OlNpbXVsYXRlZElucHV0S2V5
RnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpTaW11bGF0ZWRJbnB1dEtleUZyYW1lOjptYXhpbXVt
RHVyYXRpb24gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTaW11bGF0ZWRJbnB1dEtleUZyYW1l
OjprZXlGcmFtZUZyb21TdGF0ZU9mSW5wdXRTb3VyY2VzKToKKyAgICAgICAgKFdlYktpdDo6U2lt
dWxhdGVkSW5wdXRLZXlGcmFtZTo6a2V5RnJhbWVUb1Jlc2V0SW5wdXRTb3VyY2VzKToKKyAgICAg
ICAgKFdlYktpdDo6U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjpTaW11bGF0ZWRJbnB1dERpc3Bh
dGNoZXIpOgorICAgICAgICAoV2ViS2l0OjpTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6On5TaW11
bGF0ZWRJbnB1dERpc3BhdGNoZXIpOgorICAgICAgICAoV2ViS2l0OjpTaW11bGF0ZWRJbnB1dERp
c3BhdGNoZXI6OmlzQWN0aXZlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6U2ltdWxhdGVkSW5w
dXREaXNwYXRjaGVyOjprZXlGcmFtZVRyYW5zaXRpb25EdXJhdGlvblRpbWVyRmlyZWQpOgorICAg
ICAgICAoV2ViS2l0OjpTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OmlzS2V5RnJhbWVUcmFuc2l0
aW9uQ29tcGxldGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTaW11bGF0ZWRJbnB1dERpc3Bh
dGNoZXI6OnRyYW5zaXRpb25Ub05leHRLZXlGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlNpbXVs
YXRlZElucHV0RGlzcGF0Y2hlcjo6dHJhbnNpdGlvblRvTmV4dElucHV0U291cmNlU3RhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OnRyYW5zaXRpb25CZXR3
ZWVuS2V5RnJhbWVzKToKKyAgICAgICAgKFdlYktpdDo6U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVy
Ojp0cmFuc2l0aW9uSW5wdXRTb3VyY2VUb1N0YXRlKToKKyAgICAgICAgKFdlYktpdDo6U2ltdWxh
dGVkSW5wdXREaXNwYXRjaGVyOjpydW4pOgorICAgICAgICAoV2ViS2l0OjpTaW11bGF0ZWRJbnB1
dERpc3BhdGNoZXI6OmNhbmNlbCk6CisgICAgICAgIChXZWJLaXQ6OlNpbXVsYXRlZElucHV0RGlz
cGF0Y2hlcjo6ZmluaXNoRGlzcGF0Y2hpbmcpOgorICAgICAgICBUaGUgZGlzcGF0Y2hlciBoYW5k
bGVzIG9uZSBpbnRlcmFjdGlvbiBhdCBhIHRpbWUuIFRoZSBpbnRlcmFjdGlvbiBpcyBkZXNjcmli
ZWQKKyAgICAgICAgYnkgYW4gYXJyYXkgb2Yga2V5ZnJhbWVzLCBhbmQgZWFjaCBrZXlmcmFtZSBo
YXMgYW4gYXJyYXkgb2Ygc3RhdGVzLiBUaGUgZGlzcGF0Y2hlcgorICAgICAgICB0cmFuc2l0aW9u
cyBiZXR3ZWVuIGtleWZyYW1lcyBieSBzZXF1ZW50aWFsbHkgYW5kIGFzeW5jaHJvbm91c2x5IGVt
aXR0aW5nIGV2ZW50cworICAgICAgICB0aGF0IGNhdXNlIGVhY2ggaW5wdXQgc291cmNlIHN0YXRl
IHRvIHRyYW5zaXRpb24gYXMgZGVzaXJlZC4gS2V5ZnJhbWUgdHJhbnNpdGlvbnMKKyAgICAgICAg
YXJlIGFkZGl0aW9uYWxseSBnYXRlZCBieSBhICJtYXhpbXVtIGR1cmF0aW9uIiB0aW1lci4gRWFj
aCBzdGVwIHRoYXQgdGhlIGRpc3BhdGNoZXIKKyAgICAgICAgZXhlY3V0ZXMgaXMgYXN5bmNocm9u
b3VzLCBzbyB0aGUgZGlzcGF0Y2hlciBrZWVwcyBtb3N0IHN0YXRlIGluIG1lbWJlcnMgYW5kIHVz
ZXMKKyAgICAgICAgZXJyb3IgYXJndW1lbnQgbGFtYmRhcyBhcyBjb21wbGV0aW9uIGhhbmRsZXJz
IGZvciB2YXJpb3VzIGFzeW5jIHRoaW5ncy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0
aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRp
b24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0
aW9uU2Vzc2lvbjo6V2ViQXV0b21hdGlvblNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJB
dXRvbWF0aW9uU2Vzc2lvbjo6aW5wdXREaXNwYXRjaGVyRm9yUGFnZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjppbnB1dFNvdXJjZUZvclR5cGUgY29uc3QpOgorICAg
ICAgICBBZGQgY2Fub25pY2FsIGlucHV0IHNvdXJjZXMgdGhhdCBhcmUgdXNlZCB0byBrZWVwIHRy
YWNrIG9mIHN0YXRlIGFjcm9zcworICAgICAgICBpbnRlcmFjdGlvbiBzZXF1ZW5jZXMuCisKKyAg
ICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OmlzU2ltdWxhdGluZ1VzZXJJbnRl
cmFjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpt
b3VzZUV2ZW50c0ZsdXNoZWRGb3JQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlv
blNlc3Npb246OmtleWJvYXJkRXZlbnRzRmx1c2hlZEZvclBhZ2UpOgorICAgICAgICBSZW1vdmUg
bV9zaW11bGF0aW5nVXNlckludGVyYWN0aW9uIHNpbmNlIGl0IGNhbiBiZSBjb21wdXRlZCBiYXNl
ZCBvbiBvdGhlciBtZW1iZXJzLgorCisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNz
aW9uOjp3aWxsQ2xvc2VQYWdlKToKKyAgICAgICAgSWYgdGhlIHBhZ2UgaXMgYmVpbmcgdG9ybiBk
b3duLCBzdG9wIHRoZSBkaXNwYXRjaGVyIGlmIG5lZWRlZCBhbmQgY2FuY2VsIGFueQorICAgICAg
ICBjYWxsYmFja3Mgd2FpdGluZyBmb3IgbW91c2Uva2V5IGV2ZW50cyB0byBiZSByZXRpcmVkLgor
CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpzaW11bGF0ZU1vdXNlSW50
ZXJhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6c2ltdWxh
dGVLZXlib2FyZEludGVyYWN0aW9uKToKKyAgICAgICAgQWRkIGVhc3ktdG8tdXNlIGFzeW5jIG1l
dGhvZHMgZm9yIHNpbXVsYXRpbmcgbW91c2UgYW5kIGtleSBldmVudHMuIFRoZXNlIGFyZQorICAg
ICAgICBob29rZWQgdXAgdG8gU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyIHVzaW5nIGFzeW5jIGNv
bXBsZXRpb24gaGFuZGxlcnMuCisKKyAgICAgICAgKFdlYktpdDo6cHJvdG9jb2xNb3VzZUJ1dHRv
blRvV2ViTW91c2VFdmVudEJ1dHRvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25T
ZXNzaW9uOjpwZXJmb3JtTW91c2VJbnRlcmFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkF1
dG9tYXRpb25TZXNzaW9uOjpwZXJmb3JtS2V5Ym9hcmRJbnRlcmFjdGlvbnMpOgorICAgICAgICBB
ZGp1c3Qgc29tZSBuYW1pbmcuCisKKyAgICAgICAgKFdlYktpdDo6c2ltdWxhdGVkSW5wdXRTb3Vy
Y2VUeXBlRnJvbVByb3RvY29sU291cmNlVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9t
YXRpb25TZXNzaW9uOjpwZXJmb3JtSW50ZXJhY3Rpb25TZXF1ZW5jZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpjYW5jZWxJbnRlcmFjdGlvblNlcXVlbmNlKToKKyAg
ICAgICAgQWRkIGNvbW1hbmQgaGFuZGxlcnMgZm9yIHRoZSBuZXcgYWN0aW9uIGNvbW1hbmRzIGlu
IEF1dG9tYXRpb24gcHJvdG9jb2wuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9n
dGsvV2ViQXV0b21hdGlvblNlc3Npb25HdGsuY3BwOgorICAgICAgICAoV2ViS2l0Ojptb3VzZUJ1
dHRvblRvR2RrQnV0dG9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246
OnBsYXRmb3JtU2ltdWxhdGVNb3VzZUludGVyYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
QXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVLZXlib2FyZEludGVyYWN0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVL
ZXlTdHJva2UpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL2lvcy9X
ZWJBdXRvbWF0aW9uU2Vzc2lvbklPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlv
blNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVLZXlib2FyZEludGVyYWN0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVLZXlTdHJva2Up
OiBEZWxldGVkLgorICAgICAgICBSZW5hbWUgdGhlIGtleWJvYXJkIHBsYXRmb3JtIG1ldGhvZCB0
byBtYXRjaCB0aGUgbmFtaW5nIG9mIHRoZSBtb3VzZSBwbGF0Zm9ybSBtZXRob2QuCisgICAgICAg
IFRha2UgYWR2YW50YWdlIG9mIHRoZSAndXNpbmcnIGFsaWFzIHRvIG1ha2UgdGhlIHRlZGlvdXMg
c3dpdGNoZXMgZWFzaWVyIHRvIHJlYWQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlv
bi9tYWMvV2ViQXV0b21hdGlvblNlc3Npb25NYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYkF1
dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlTW91c2VJbnRlcmFjdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OnZpcnR1YWxLZXlIYXNTdGlja3lNb2RpZmllcik6CisgICAgICAgIChXZWJL
aXQ6OmtleUNvZGVGb3JWaXJ0dWFsS2V5KToKKyAgICAgICAgKFdlYktpdDo6ZXZlbnRNb2RpZmll
ckZsYWdzRm9yVmlydHVhbEtleSk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNz
aW9uOjpwbGF0Zm9ybVNpbXVsYXRlS2V5Ym9hcmRJbnRlcmFjdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlS2V5U2VxdWVuY2UpOgor
ICAgICAgICAoV2ViS2l0OjprZXlIYXNTdGlja3lNb2RpZmllcik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlS2V5U3Ryb2tl
KTogRGVsZXRlZC4KKyAgICAgICAgQWxsb3cgdGhlIGtleWJvYXJkIHNpbXVsYXRpb24gbWV0aG9k
IHRvIHRha2UgYSB2aXJ0dWFsIGtleSBhbmQgdW5pY2hhciB0byBiZXR0ZXIKKyAgICAgICAgbWF0
Y2ggaG93IHRoaXMgaXMgdXNlZCBieSB0aGUgUGVyZm9ybSBBY3Rpb25zIGNvbW1hbmQgYW5kIGl0
cyBtYWNoaW5lcnkuCisKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKwogMjAxOC0wNC0xOSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAg
ICAgICAgV2ViIEluc3BlY3RvciBiYWNrZW5kIHNob3VsZCBnZXQgaGVhZGVycyAmIGNvb2tpZXMg
ZnJvbSBuZXR3b3JrIHByb2Nlc3Mgc2VwYXJhdGVseSBmcm9tIHJlc291cmNlIHJlcXVlc3RzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL0F1dG9tYXRpb24u
anNvbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vQXV0b21hdGlvbi5qc29u
CmluZGV4IDdlODZkMTQ5YzI1YzE5MTQwNDIxZDM4ODRhNTFiYjZjMGY5ZTYyOTAuLmMzMTdlMWEy
NjIwZDlkZTdjYTZjOGFhNjNhZDMyODcwOWIxMjZiZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vQXV0b21hdGlvbi5qc29uCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vQXV0b21hdGlvbi5qc29uCkBAIC03Miw3ICs3Miw4IEBA
CiAgICAgICAgICAgICAgICAgIkVsZW1lbnROb3RJbnRlcmFjdGFibGUiLAogICAgICAgICAgICAg
ICAgICJFbGVtZW50Tm90U2VsZWN0YWJsZSIsCiAgICAgICAgICAgICAgICAgIlNjcmVlbnNob3RF
cnJvciIsCi0gICAgICAgICAgICAgICAgIlVuZXhwZWN0ZWRBbGVydE9wZW4iCisgICAgICAgICAg
ICAgICAgIlVuZXhwZWN0ZWRBbGVydE9wZW4iLAorICAgICAgICAgICAgICAgICJUYXJnZXRPdXRP
ZkJvdW5kcyIKICAgICAgICAgICAgIF0KICAgICAgICAgfSwKICAgICAgICAgewpAQCAtMjQ0LDYg
KzI0NSw0NiBAQAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicGVybWlzc2lvbiIsICIkcmVm
IjogIlNlc3Npb25QZXJtaXNzaW9uIiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidmFs
dWUiLCAidHlwZSI6ICJib29sZWFuIiB9CiAgICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAg
ICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJJbnB1dFNvdXJjZVR5cGUiLAorICAgICAgICAgICAg
InR5cGUiOiAic3RyaW5nIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJUaGUgdHlwZSBv
ZiBhbiBpbnB1dCBzb3VyY2UuIFRoaXMgZGV0ZXJtaW5lcyB3aGljaCBzdGF0ZSBwcm9wZXJ0aWVz
IGFyZSBhcHBsaWNhYmxlIHRvIHRoZSBpbnB1dCBzb3VyY2UuIFRoZSAnTnVsbCcgaW5wdXQgc291
cmNlIHR5cGUgaGFzIG5vIHByb3BlcnRpZXMsIG9ubHkgYSBkdXJhdGlvbi4gVGhpcyBjYW4gZXh0
ZW5kIHRoZSBlZmZlY3RpdmUgd2FpdCBmb3IgYSB0aWNrLiIsCisgICAgICAgICAgICAiZW51bSI6
IFsKKyAgICAgICAgICAgICAgICAiTnVsbCIsCisgICAgICAgICAgICAgICAgIk1vdXNlIiwKKyAg
ICAgICAgICAgICAgICAiS2V5Ym9hcmQiLAorICAgICAgICAgICAgICAgICJUb3VjaCIKKyAgICAg
ICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgImlkIjogIklucHV0
U291cmNlIiwKKyAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCisgICAgICAgICAgICAicHJv
cGVydGllcyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNvdXJjZUlkIiwgInR5cGUi
OiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIkEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoaXMg
aW5wdXQgc291cmNlLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNvdXJjZVR5cGUi
LCAiJHJlZiI6ICJJbnB1dFNvdXJjZVR5cGUiLCAiZGVzY3JpcHRpb24iOiAiVGhlIHR5cGUgb2Yg
dGhpcyBpbnB1dCBzb3VyY2UuIFRoaXMgYWZmZWN0cyB3aGF0IGlucHV0IHNvdXJjZSBzdGF0ZSBm
aWVsZHMgYXJlIHZhbGlkIGZvciB0aGlzIGlucHV0IHNvdXJjZS4iIH0KKyAgICAgICAgICAgIF0K
KyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgImlkIjogIkludGVyYWN0aW9uU3Rl
cCIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQSBzZXQgb2YgaW5wdXQgc291cmNlIHN0
YXRlcyB0byB3aGljaCBhbGwgYXBwbGljYWJsZSBpbnB1dCBzb3VyY2VzIG11c3QgdHJhbnNpdGlv
biBiZWZvcmUgZnVydGhlciBzdGVwcyBtYXkgYmUgcHJvY2Vzc2VkLiBJZiBhbiBpbnB1dCBzb3Vy
Y2UgZG9lcyBub3QgaGF2ZSBhIGNvcnJlc3BvbmRpbmcgc3RhdGUgaW4gYSBzdGVwLCBpdHMgc3Rh
dGUgYXNzdW1lZCB0byBiZSAncmVsZWFzZWQnIGZvciB0aGF0IHN0ZXAuIiwKKyAgICAgICAgICAg
ICJ0eXBlIjogIm9iamVjdCIsCisgICAgICAgICAgICAicHJvcGVydGllcyI6IFsKKyAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogInN0YXRlcyIsICJ0eXBlIjogImFycmF5IiwgIml0ZW1zIjogeyAi
JHJlZiI6ICJJbnB1dFNvdXJjZVN0YXRlIiB9LCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRp
b24iOiAiQSBsaXN0IG9mIG5ldyBpbnB1dCBzdGF0ZXMgZm9yIGlucHV0IHNvdXJjZXMgdGhhdCBt
dXN0IHRyYW5zaXRpb24gZHVyaW5nIHRoaXMgc3RlcC4gU291cmNlIHN0YXRlIHRyYW5zaXRpb25z
IHRoYXQgY2Fubm90IGJlIHBlcmZvcm1lZCBjb25jdXJyZW50bHkgKGkuZS4sIHRvdWNoIGdlc3R1
cmVzKSBhcmUgcGVyZm9ybWVkIHNlcXVlbnRpYWxseSBpbiB0aGUgb3JkZXIgdGhleSBhcmUgbGlz
dGVkLiIgfQorICAgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAg
ICAiaWQiOiAiSW5wdXRTb3VyY2VTdGF0ZSIsCisgICAgICAgICAgICAidHlwZSI6ICJvYmplY3Qi
LAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkEgbmV3IHN0YXRlIGZvciBhIHNwZWNpZmlj
IGlucHV0IHNvdXJjZS4gQWxsIHN0YXRlLXJlbGF0ZWQgZmllbGRzIGFyZSBvcHRpb25hbCBhbmQg
bXVzdCBiZSBhcHBsaWNhYmxlIHRvIHRoZSBJbnB1dFNvdXJjZSByZWZlcmVuY2VkIGJ5ICdzb3Vy
Y2VJZCcuIElmIG5vIHN0YXRlLXJlbGF0ZWQgZmllbGRzIGFyZSBzcGVjaWZpZWQsIHRoZSBzdGF0
ZSBpcyBhc3N1bWVkIHRvIHJlbWFpbiB0aGUgc2FtZSBhcyBpbiB0aGUgcHJldmlvdXMgc3RlcCAo
aS5lLiwgJ3N1c3RhaW5lZCcpLiIsCisgICAgICAgICAgICAicHJvcGVydGllcyI6IFsKKyAgICAg
ICAgICAgICAgICB7ICJuYW1lIjogInNvdXJjZUlkIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2Ny
aXB0aW9uIjogIlRoZSBpbnB1dCBzb3VyY2Ugd2hvc2Ugc3RhdGUgaXMgZGVzY3JpYmVkIGJ5IHRo
aXMgb2JqZWN0LiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInByZXNzZWRDaGFyS2V5
IiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIkZv
ciAna2V5Ym9hcmQnIGlucHV0IHNvdXJjZXMsIHNwZWNpZmllcyBhIGNoYXJhY3RlciBrZXkgdGhh
dCBoYXMgJ3ByZXNzZWQnIHN0YXRlLiBVbm1lbnRpb25lZCBjaGFyYWN0ZXIga2V5cyBhcmUgYXNz
dW1lZCB0byBoYXZlIGEgJ3JlbGVhc2VkJyBzdGF0ZS4iIH0sCisgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJwcmVzc2VkVmlydHVhbEtleSIsICIkcmVmIjogIlZpcnR1YWxLZXkiLCAib3B0aW9u
YWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiRm9yICdrZXlib2FyZCcgaW5wdXQgc291cmNlcywg
c3BlY2lmaWVzIGEgdmlydHVhbCBrZXkgdGhhdCBoYXMgYSAncHJlc3NlZCcgc3RhdGUuIFVubWVu
dGlvbmVkIHZpcnR1YWwga2V5cyBhcmUgYXNzdW1lZCB0byBoYXZlIGEgJ3JlbGVhc2VkJyBzdGF0
ZS4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJwcmVzc2VkQnV0dG9uIiwgIiRyZWYi
OiAiTW91c2VCdXR0b24iLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiRm9yICdt
b3VzZScgaW5wdXQgc291cmNlcywgc3BlY2lmaWVzIHdoaWNoIG1vdXNlIGJ1dHRvbiBoYXMgYSAn
cHJlc3NlZCcgc3RhdGUuIFVubWVudGlvbmVkIG1vdXNlIGJ1dHRvbnMgYXJlIGFzc3VtZWQgdG8g
aGF2ZSBhICdyZWxlYXNlZCcgc3RhdGUuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
bG9jYXRpb24iLCAiJHJlZiI6ICJQb2ludCIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlv
biI6ICJGb3IgJ21vdXNlJyBvciAndG91Y2gnIGlucHV0IHNvdXJjZXMsIHNwZWNpZmllcyBhIGxv
Y2F0aW9uIGluIHZpZXcgY29vcmRpbmF0ZXMgdG8gd2hpY2ggdGhlIGlucHV0IHNvdXJjZSBzaG91
bGQgdHJhbnNpdGlvbi4gVHJhbnNpdGlvbmluZyB0byB0aGlzIHN0YXRlIG1heSBpbnRlcnBvbGF0
ZSBpbnRlbWVkaWF0ZSBpbnB1dCBzb3VyY2Ugc3RhdGVzIHRvIGJldHRlciBzaW11bGF0ZSByZWFs
IHVzZXIgbW92ZW1lbnRzIGFuZCBnZXN0dXJlcy4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJkdXJhdGlvbiIsICJ0eXBlIjogImludGVnZXIiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVz
Y3JpcHRpb24iOiAiVGhlIG1pbmltdW0gbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0aGF0IG11c3Qg
ZWxhcHNlIHdoaWxlIHRoZSByZWxldmFudCBpbnB1dCBzb3VyY2UgdHJhbnNpdGlvbnMgdG8gdGhp
cyBzdGF0ZS4iIH0KKyAgICAgICAgICAgIF0KICAgICAgICAgfQogICAgIF0sCiAgICAgImNvbW1h
bmRzIjogWwpAQCAtNDEzLDYgKzQ1NCwyNCBAQAogICAgICAgICAgICAgXSwKICAgICAgICAgICAg
ICJhc3luYyI6IHRydWUKICAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUi
OiAicGVyZm9ybUludGVyYWN0aW9uU2VxdWVuY2UiLAorICAgICAgICAgICAgImRlc2NyaXB0aW9u
IjogIlBlcmZvcm0gbXVsdGlwbGUgc2ltdWxhdGVkIGludGVyYWN0aW9ucyBvdmVyIHRpbWUgdXNp
bmcgYSBsaXN0IG9mIGlucHV0IHNvdXJjZXMgYW5kIGEgbGlzdCBvZiBzdGVwcywgd2hlcmUgZWFj
aCBzdGVwIHNwZWNpZmllcyBhIHN0YXRlIGZvciBlYWNoIGlucHV0IHNvdXJjZSBhdCB0aGUgdGlt
ZSB0aGF0IHN0ZXAgaXMgcGVyZm9ybWVkLiIsCisgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsK
KyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImhhbmRsZSIsICIkcmVmIjogIkJyb3dzaW5nQ29u
dGV4dEhhbmRsZSIsICJkZXNjcmlwdGlvbiI6ICJUaGUgYnJvd3NpbmcgY29udGV4dCB0byBiZSBp
bnRlcmFjdGVkIHdpdGguIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaW5wdXRTb3Vy
Y2VzIiwgInR5cGUiOiAiYXJyYXkiLCAiaXRlbXMiOiB7ICIkcmVmIjogIklucHV0U291cmNlIiB9
LCAiZGVzY3JpcHRpb24iOiAiQWxsIGlucHV0IHNvdXJjZXMgdGhhdCBhcmUgdXNlZCB0byBwZXJm
b3JtIHRoaXMgaW50ZXJhY3Rpb24gc2VxdWVuY2UuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAic3RlcHMiLCAidHlwZSI6ICJhcnJheSIsICJpdGVtcyI6IHsgIiRyZWYiOiAiSW50ZXJh
Y3Rpb25TdGVwIiB9LCAiZGVzY3JpcHRpb24iOiAiQSBsaXN0IG9mIHN0ZXBzIHRoYXQgYXJlIGV4
ZWN1dGVkIGluIG9yZGVyLiIgfQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJhc3luYyI6
IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiY2FuY2Vs
SW50ZXJhY3Rpb25TZXF1ZW5jZSIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ2FuY2Vs
IGFuIGFjdGl2ZSBpbnRlcmFjdGlvbiBzZXF1ZW5jZSB0aGF0IGlzIGN1cnJlbnRseSBpbiBwcm9n
cmVzcy4iLAorICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJoYW5kbGUiLCAiJHJlZiI6ICJCcm93c2luZ0NvbnRleHRIYW5kbGUiLCAiZGVzY3Jp
cHRpb24iOiAiVGhlIGJyb3dzaW5nIGNvbnRleHQgdG8gYmUgaW50ZXJhY3RlZCB3aXRoLiIgfQor
ICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJhc3luYyI6IHRydWUKKyAgICAgICAgfSwKICAg
ICAgICAgewogICAgICAgICAgICAgIm5hbWUiOiAidGFrZVNjcmVlbnNob3QiLAogICAgICAgICAg
ICAgImRlc2NyaXB0aW9uIjogIlRha2UgYSBzY3JlZW5zaG90IG9mIHRoZSBjdXJyZW50IHBhZ2Ug
b3IgZ2l2ZW4gZWxlbWVudCBpbiBhIGJyb3dzaW5nIGNvbnRleHQuIiwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vU2ltdWxhdGVkSW5wdXRE
aXNwYXRjaGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZDU4MmJiNjBhNjI3MTFhMzYyOTA2MWJlOTI4NDNj
NjJlMDI5NjEyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0
b21hdGlvbi9TaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuY3BwCkBAIC0wLDAgKzEsMjcyIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNpbXVsYXRlZElucHV0
RGlzcGF0Y2hlci5oIgorCisjaW5jbHVkZSAiQXV0b21hdGlvblByb3RvY29sT2JqZWN0cy5oIgor
I2luY2x1ZGUgIldlYkF1dG9tYXRpb25TZXNzaW9uLmgiCisjaW5jbHVkZSAiV2ViQXV0b21hdGlv
blNlc3Npb25NYWNyb3MuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1NpbXVsYXRlZElucHV0
S2V5RnJhbWU6OlNpbXVsYXRlZElucHV0S2V5RnJhbWUoVmVjdG9yPFN0YXRlRW50cnk+JiYgZW50
cmllcykKKyAgICA6IHN0YXRlcyhXVEZNb3ZlKGVudHJpZXMpKQoreworfQorCitTZWNvbmRzIFNp
bXVsYXRlZElucHV0S2V5RnJhbWU6Om1heGltdW1EdXJhdGlvbigpIGNvbnN0Cit7CisgICAgLy8g
VGhlICJjb21wdXRlIHRoZSB0aWNrIGR1cmF0aW9uIiBhbGdvcml0aG0gKMKnMTcuNCBEaXNwYXRj
aGluZyBBY3Rpb25zKS4KKyAgICBTZWNvbmRzIHJlc3VsdDsKKyAgICBmb3IgKGF1dG8mIGVudHJ5
IDogc3RhdGVzKQorICAgICAgICByZXN1bHQgPSBzdGQ6Om1heChyZXN1bHQsIGVudHJ5LnNlY29u
ZC5kdXJhdGlvbi52YWx1ZV9vcihTZWNvbmRzKDApKSk7CisgICAgCisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKworU2ltdWxhdGVkSW5wdXRLZXlGcmFtZSBTaW11bGF0ZWRJbnB1dEtleUZyYW1lOjpr
ZXlGcmFtZUZyb21TdGF0ZU9mSW5wdXRTb3VyY2VzKEhhc2hTZXQ8UmVmPFNpbXVsYXRlZElucHV0
U291cmNlPj4mIGlucHV0U291cmNlcykKK3sKKyAgICAvLyBUaGUgY2xpZW50IG9mIHRoaXMgY2xh
c3MgaXMgcmVxdWlyZWQgdG8gaW50ZXJuIFNpbXVsYXRlZElucHV0U291cmNlIGluc3RhbmNlcyBp
ZiB0aGUgbGFzdCBzdGF0ZQorICAgIC8vIGZyb20gdGhlIHByZXZpb3VzIGNvbW1hbmQgc2hvdWxk
IGJlIHVzZWQgYXMgdGhlIGluaXRhbCBzdGF0ZSBmb3IgdGhlIG5leHQgY29tbWFuZC4gVGhpcyBp
cyB0aGUKKyAgICAvLyBjYXNlIGZvciBQZXJmb3JtIEFjdGlvbnMgYW5kIFJlbGVhc2UgQWN0aW9u
cywgYnV0IG5vdCBFbGVtZW50IENsaWNrIG9yIEVsZW1lbnQgU2VuZCBLZXlzLgorICAgIFZlY3Rv
cjxTaW11bGF0ZWRJbnB1dEtleUZyYW1lOjpTdGF0ZUVudHJ5PiBlbnRyaWVzOworICAgIGVudHJp
ZXMucmVzZXJ2ZUNhcGFjaXR5KGlucHV0U291cmNlcy5zaXplKCkpOworCisgICAgZm9yIChhdXRv
JiBpbnB1dFNvdXJjZSA6IGlucHV0U291cmNlcykKKyAgICAgICAgZW50cmllcy51bmNoZWNrZWRB
cHBlbmQoc3RkOjpwYWlyPFNpbXVsYXRlZElucHV0U291cmNlJiwgU2ltdWxhdGVkSW5wdXRTb3Vy
Y2VTdGF0ZT4geyBpbnB1dFNvdXJjZS5nZXQoKSwgaW5wdXRTb3VyY2UtPnN0YXRlIH0pOworCisg
ICAgcmV0dXJuIFNpbXVsYXRlZElucHV0S2V5RnJhbWUoV1RGTW92ZShlbnRyaWVzKSk7Cit9CisK
K1NpbXVsYXRlZElucHV0S2V5RnJhbWUgU2ltdWxhdGVkSW5wdXRLZXlGcmFtZTo6a2V5RnJhbWVU
b1Jlc2V0SW5wdXRTb3VyY2VzKEhhc2hTZXQ8UmVmPFNpbXVsYXRlZElucHV0U291cmNlPj4mIGlu
cHV0U291cmNlcykKK3sKKyAgICBWZWN0b3I8U2ltdWxhdGVkSW5wdXRLZXlGcmFtZTo6U3RhdGVF
bnRyeT4gZW50cmllczsKKyAgICBlbnRyaWVzLnJlc2VydmVDYXBhY2l0eShpbnB1dFNvdXJjZXMu
c2l6ZSgpKTsKKworICAgIGZvciAoYXV0byYgaW5wdXRTb3VyY2UgOiBpbnB1dFNvdXJjZXMpCisg
ICAgICAgIGVudHJpZXMudW5jaGVja2VkQXBwZW5kKHN0ZDo6cGFpcjxTaW11bGF0ZWRJbnB1dFNv
dXJjZSYsIFNpbXVsYXRlZElucHV0U291cmNlU3RhdGU+IHsgaW5wdXRTb3VyY2UuZ2V0KCksIFNp
bXVsYXRlZElucHV0U291cmNlU3RhdGU6OmVtcHR5U3RhdGUoKSB9KTsKKworICAgIHJldHVybiBT
aW11bGF0ZWRJbnB1dEtleUZyYW1lKFdURk1vdmUoZW50cmllcykpOworfQorICAgIAorU2ltdWxh
dGVkSW5wdXREaXNwYXRjaGVyOjpTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIoV2ViUGFnZVByb3h5
JiBwYWdlLCBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OkNsaWVudCYgY2xpZW50KQorICAgIDog
bV9wYWdlKHBhZ2UpCisgICAgLCBtX2NsaWVudChjbGllbnQpCisgICAgLCBtX2tleUZyYW1lVHJh
bnNpdGlvbkR1cmF0aW9uVGltZXIoUnVuTG9vcDo6Y3VycmVudCgpLCB0aGlzLCAmU2ltdWxhdGVk
SW5wdXREaXNwYXRjaGVyOjprZXlGcmFtZVRyYW5zaXRpb25EdXJhdGlvblRpbWVyRmlyZWQpCit7
Cit9CisKK1NpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6flNpbXVsYXRlZElucHV0RGlzcGF0Y2hl
cigpCit7CisgICAgQVNTRVJUKCFtX3J1bkNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICBBU1NFUlQo
IW1fa2V5RnJhbWVUcmFuc2l0aW9uRHVyYXRpb25UaW1lci5pc0FjdGl2ZSgpKTsKK30KKworYm9v
bCBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OmlzQWN0aXZlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gISFtX3J1bkNvbXBsZXRpb25IYW5kbGVyOworfQorCit2b2lkIFNpbXVsYXRlZElucHV0RGlz
cGF0Y2hlcjo6a2V5RnJhbWVUcmFuc2l0aW9uRHVyYXRpb25UaW1lckZpcmVkKCkKK3sKKyAgICBB
U1NFUlQobV9rZXlGcmFtZVRyYW5zaXRpb25Db21wbGV0aW9uSGFuZGxlcik7CisKKyAgICBtX2tl
eUZyYW1lVHJhbnNpdGlvbkR1cmF0aW9uVGltZXIuc3RvcCgpOworCisgICAgaWYgKGlzS2V5RnJh
bWVUcmFuc2l0aW9uQ29tcGxldGUoKSkgeworICAgICAgICBhdXRvIGZpbmlzaCA9IHN0ZDo6ZXhj
aGFuZ2UobV9rZXlGcmFtZVRyYW5zaXRpb25Db21wbGV0aW9uSGFuZGxlciwgbnVsbHB0cik7Cisg
ICAgICAgIGZpbmlzaChzdGQ6Om51bGxvcHQpOworICAgIH0KK30KKworYm9vbCBTaW11bGF0ZWRJ
bnB1dERpc3BhdGNoZXI6OmlzS2V5RnJhbWVUcmFuc2l0aW9uQ29tcGxldGUoKSBjb25zdAorewor
ICAgIEFTU0VSVChtX2tleWZyYW1lSW5kZXggPCBtX2tleWZyYW1lcy5zaXplKCkpOworCisgICAg
aWYgKG1faW5wdXRTb3VyY2VTdGF0ZUluZGV4IDwgbV9rZXlmcmFtZXNbbV9rZXlmcmFtZUluZGV4
XS5zdGF0ZXMuc2l6ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobV9rZXlG
cmFtZVRyYW5zaXRpb25EdXJhdGlvblRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFNpbXVsYXRlZElucHV0RGlzcGF0
Y2hlcjo6dHJhbnNpdGlvblRvTmV4dEtleUZyYW1lKCkKK3sKKyAgICArK21fa2V5ZnJhbWVJbmRl
eDsKKyAgICBpZiAobV9rZXlmcmFtZUluZGV4ID09IG1fa2V5ZnJhbWVzLnNpemUoKSkgeworICAg
ICAgICBmaW5pc2hEaXNwYXRjaGluZyhzdGQ6Om51bGxvcHQpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgdHJhbnNpdGlvbkJldHdlZW5LZXlGcmFtZXMobV9rZXlmcmFtZXNbbV9rZXlm
cmFtZUluZGV4IC0gMV0sIG1fa2V5ZnJhbWVzW21fa2V5ZnJhbWVJbmRleF0sIFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKHN0ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1h
bmRFcnJvcj4gZXJyb3IpIHsKKyAgICAgICAgaWYgKGVycm9yKSB7CisgICAgICAgICAgICBmaW5p
c2hEaXNwYXRjaGluZyhlcnJvcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICB0cmFuc2l0aW9uVG9OZXh0S2V5RnJhbWUoKTsKKyAgICB9KTsKK30KKwordm9pZCBT
aW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OnRyYW5zaXRpb25Ub05leHRJbnB1dFNvdXJjZVN0YXRl
KCkKK3sKKyAgICBpZiAoaXNLZXlGcmFtZVRyYW5zaXRpb25Db21wbGV0ZSgpKSB7CisgICAgICAg
IGF1dG8gZmluaXNoID0gc3RkOjpleGNoYW5nZShtX2tleUZyYW1lVHJhbnNpdGlvbkNvbXBsZXRp
b25IYW5kbGVyLCBudWxscHRyKTsKKyAgICAgICAgZmluaXNoKHN0ZDo6bnVsbG9wdCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBJbiB0aGlzIGNhc2UsIHRyYW5zaXRpb25zIGFy
ZSBkb25lIGJ1dCB3ZSBuZWVkIHRvIHdhaXQgZm9yIHRoZSB0aWNrIHRpbWVyLgorICAgIGlmICht
X2lucHV0U291cmNlU3RhdGVJbmRleCA9PSBtX2tleWZyYW1lc1ttX2tleWZyYW1lSW5kZXhdLnN0
YXRlcy5zaXplKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8mIG5leHRLZXlGcmFtZSA9
IG1fa2V5ZnJhbWVzW21fa2V5ZnJhbWVJbmRleF07CisgICAgYXV0byYgcG9zdFN0YXRlRW50cnkg
PSBuZXh0S2V5RnJhbWUuc3RhdGVzW21faW5wdXRTb3VyY2VTdGF0ZUluZGV4XTsKKyAgICBTaW11
bGF0ZWRJbnB1dFNvdXJjZSYgaW5wdXRTb3VyY2UgPSBwb3N0U3RhdGVFbnRyeS5maXJzdDsKKwor
ICAgIHRyYW5zaXRpb25JbnB1dFNvdXJjZVRvU3RhdGUoaW5wdXRTb3VyY2UsIHBvc3RTdGF0ZUVu
dHJ5LnNlY29uZCwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oc3RkOjpv
cHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPiBlcnJvcikgeworICAgICAgICBpZiAoZXJy
b3IpIHsKKyAgICAgICAgICAgIGF1dG8gZmluaXNoID0gc3RkOjpleGNoYW5nZShtX2tleUZyYW1l
VHJhbnNpdGlvbkNvbXBsZXRpb25IYW5kbGVyLCBudWxscHRyKTsKKyAgICAgICAgICAgIGZpbmlz
aChlcnJvcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBQ
ZXJmb3JtIHN0YXRlIHRyYW5zaXRpb25zIGluIHRoZSBvcmRlciBzcGVjaWZpZWQgYnkgdGhlIGN1
cnJlbnRLZXlGcmFtZS4KKyAgICAgICAgKyttX2lucHV0U291cmNlU3RhdGVJbmRleDsKKworICAg
ICAgICB0cmFuc2l0aW9uVG9OZXh0SW5wdXRTb3VyY2VTdGF0ZSgpOworICAgIH0pOworfQorCit2
b2lkIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6dHJhbnNpdGlvbkJldHdlZW5LZXlGcmFtZXMo
Y29uc3QgU2ltdWxhdGVkSW5wdXRLZXlGcmFtZSYgYSwgY29uc3QgU2ltdWxhdGVkSW5wdXRLZXlG
cmFtZSYgYiwgQXV0b21hdGlvbkNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIp
Cit7CisgICAgbV9pbnB1dFNvdXJjZVN0YXRlSW5kZXggPSAwOworCisgICAgLy8gVGhlICJkaXNw
YXRjaCB0aWNrIGFjdGlvbnMiIGFsZ29yaXRobSAowqcxNy40IERpc3BhdGNoaW5nIEFjdGlvbnMp
LgorICAgIG1fa2V5RnJhbWVUcmFuc2l0aW9uQ29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKTsKKyAgICBtX2tleUZyYW1lVHJhbnNpdGlvbkR1cmF0aW9uVGltZXIu
c3RhcnRPbmVTaG90KGIubWF4aW11bUR1cmF0aW9uKCkpOworCisgICAgdHJhbnNpdGlvblRvTmV4
dElucHV0U291cmNlU3RhdGUoKTsKK30KKwordm9pZCBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6
OnRyYW5zaXRpb25JbnB1dFNvdXJjZVRvU3RhdGUoU2ltdWxhdGVkSW5wdXRTb3VyY2UmIGlucHV0
U291cmNlLCBjb25zdCBTaW11bGF0ZWRJbnB1dFNvdXJjZVN0YXRlJiBuZXdTdGF0ZSwgQXV0b21h
dGlvbkNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgLy8gTWFr
ZSBjYXNlcyBhbmQgY29uZGl0aW9uYWxzIG1vcmUgcmVhZGFibGUgYnkgYWxpYXNpbmcgcHJlL3Bv
c3Qgc3RhdGVzIGFzICdhJyBhbmQgJ2InLgorICAgIFNpbXVsYXRlZElucHV0U291cmNlU3RhdGUg
YSA9IGlucHV0U291cmNlLnN0YXRlOworICAgIFNpbXVsYXRlZElucHV0U291cmNlU3RhdGUgYiA9
IG5ld1N0YXRlOworCisgICAgQXV0b21hdGlvbkNvbXBsZXRpb25IYW5kbGVyIGV2ZW50RGlzcGF0
Y2hGaW5pc2hlZCA9IFsmaW5wdXRTb3VyY2UsICZuZXdTdGF0ZSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oc3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29t
bWFuZEVycm9yPiBlcnJvcikgeworICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKGVycm9yKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIGlucHV0U291cmNlLnN0YXRlID0gbmV3U3RhdGU7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7CisgICAgfTsKKworICAgIHN3aXRjaCAoaW5wdXRTb3Vy
Y2UudHlwZSkgeworICAgIGNhc2UgU2ltdWxhdGVkSW5wdXRTb3VyY2U6OlR5cGU6Ok51bGw6Cisg
ICAgICAgIC8vIFRoZSBtYXhpbXVtIGR1cmF0aW9uIGlzIGhhbmRsZWQgYXQgdGhlIGtleWZyYW1l
IGxldmVsIGJ5IG1fa2V5RnJhbWVUcmFuc2l0aW9uRHVyYXRpb25UaW1lci4KKyAgICAgICAgZXZl
bnREaXNwYXRjaEZpbmlzaGVkKHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgU2ltdWxhdGVkSW5wdXRTb3VyY2U6OlR5cGU6Ok1vdXNlOiB7CisgICAgICAgIC8vIFRoZSAi
ZGlzcGF0Y2ggYSBwb2ludGVye0Rvd24sVXAsTW92ZX0gYWN0aW9uIiBhbGdvcml0aG1zICjCpzE3
LjQgRGlzcGF0Y2hpbmcgQWN0aW9ucykuCisgICAgICAgIGlmICghYS5wcmVzc2VkTW91c2VCdXR0
b24gJiYgYi5wcmVzc2VkTW91c2VCdXR0b24pCisgICAgICAgICAgICBtX2NsaWVudC5zaW11bGF0
ZU1vdXNlSW50ZXJhY3Rpb24obV9wYWdlLCBNb3VzZUludGVyYWN0aW9uOjpEb3duLCBiLnByZXNz
ZWRNb3VzZUJ1dHRvbi52YWx1ZSgpLCBiLmxvY2F0aW9uLnZhbHVlKCksIFdURk1vdmUoZXZlbnRE
aXNwYXRjaEZpbmlzaGVkKSk7CisgICAgICAgIGVsc2UgaWYgKGEucHJlc3NlZE1vdXNlQnV0dG9u
ICYmICFiLnByZXNzZWRNb3VzZUJ1dHRvbikKKyAgICAgICAgICAgIG1fY2xpZW50LnNpbXVsYXRl
TW91c2VJbnRlcmFjdGlvbihtX3BhZ2UsIE1vdXNlSW50ZXJhY3Rpb246OlVwLCBhLnByZXNzZWRN
b3VzZUJ1dHRvbi52YWx1ZSgpLCBiLmxvY2F0aW9uLnZhbHVlKCksIFdURk1vdmUoZXZlbnREaXNw
YXRjaEZpbmlzaGVkKSk7CisgICAgICAgIGVsc2UgaWYgKGEubG9jYXRpb24gIT0gYi5sb2NhdGlv
bikgeworICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgZG9lcyBub3QgaW50ZXJwb2xhdGUgbW91
c2Vtb3ZlcyBwZXIgdGhlICJwZXJmb3JtIGEgcG9pbnRlciBtb3ZlIiBhbGdvcml0aG0gKMKnMTcu
NCBEaXNwYXRjaGluZyBBY3Rpb25zKS4KKyAgICAgICAgICAgIG1fY2xpZW50LnNpbXVsYXRlTW91
c2VJbnRlcmFjdGlvbihtX3BhZ2UsIE1vdXNlSW50ZXJhY3Rpb246Ok1vdmUsIGIucHJlc3NlZE1v
dXNlQnV0dG9uLnZhbHVlX29yKE1vdXNlQnV0dG9uOjpOb0J1dHRvbiksIGIubG9jYXRpb24udmFs
dWUoKSwgV1RGTW92ZShldmVudERpc3BhdGNoRmluaXNoZWQpKTsKKyAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICBldmVudERpc3BhdGNoRmluaXNoZWQoc3RkOjpudWxsb3B0KTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorICAgIGNhc2UgU2ltdWxhdGVkSW5wdXRTb3VyY2U6OlR5cGU6OktleWJv
YXJkOgorICAgICAgICAvLyBUaGUgImRpc3BhdGNoIGEga2V5e0Rvd24sVXB9IGFjdGlvbiIgYWxn
b3JpdGhtcyAowqcxNy40IERpc3BhdGNoaW5nIEFjdGlvbnMpLgorICAgICAgICBpZiAoKCFhLnBy
ZXNzZWRDaGFyS2V5ICYmIGIucHJlc3NlZENoYXJLZXkpIHx8ICghYS5wcmVzc2VkVmlydHVhbEtl
eSAmJiBiLnByZXNzZWRWaXJ0dWFsS2V5KSkKKyAgICAgICAgICAgIG1fY2xpZW50LnNpbXVsYXRl
S2V5Ym9hcmRJbnRlcmFjdGlvbihtX3BhZ2UsIEtleWJvYXJkSW50ZXJhY3Rpb246OktleVByZXNz
LCBiLnByZXNzZWRWaXJ0dWFsS2V5LCBiLnByZXNzZWRDaGFyS2V5LCBXVEZNb3ZlKGV2ZW50RGlz
cGF0Y2hGaW5pc2hlZCkpOworICAgICAgICBlbHNlIGlmICgoYS5wcmVzc2VkQ2hhcktleSAmJiAh
Yi5wcmVzc2VkQ2hhcktleSkgfHwgKGEucHJlc3NlZFZpcnR1YWxLZXkgJiYgIWIucHJlc3NlZFZp
cnR1YWxLZXkpKQorICAgICAgICAgICAgbV9jbGllbnQuc2ltdWxhdGVLZXlib2FyZEludGVyYWN0
aW9uKG1fcGFnZSwgS2V5Ym9hcmRJbnRlcmFjdGlvbjo6S2V5UmVsZWFzZSwgYS5wcmVzc2VkVmly
dHVhbEtleSwgYS5wcmVzc2VkQ2hhcktleSwgV1RGTW92ZShldmVudERpc3BhdGNoRmluaXNoZWQp
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZXZlbnREaXNwYXRjaEZpbmlzaGVkKHN0ZDo6
bnVsbG9wdCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2ltdWxhdGVkSW5wdXRTb3VyY2U6
OlR5cGU6OlRvdWNoOgorICAgICAgICAvLyBOb3Qgc3VwcG9ydGVkIHlldC4KKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGV2ZW50RGlzcGF0Y2hGaW5pc2hlZChBVVRPTUFU
SU9OX0NPTU1BTkRfRVJST1JfV0lUSF9OQU1FKE5vdEltcGxlbWVudGVkKSk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KK30KKwordm9pZCBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OnJ1bihWZWN0
b3I8U2ltdWxhdGVkSW5wdXRLZXlGcmFtZT4mJiBrZXlGcmFtZXMsIEhhc2hTZXQ8UmVmPFNpbXVs
YXRlZElucHV0U291cmNlPj4mIGlucHV0U291cmNlcywgQXV0b21hdGlvbkNvbXBsZXRpb25IYW5k
bGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUKCFpc0FjdGl2ZSgpKTsKKyAg
ICBpZiAoaXNBY3RpdmUoKSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihBVVRPTUFUSU9O
X0NPTU1BTkRfRVJST1JfV0lUSF9OQU1FKEludGVybmFsRXJyb3IpKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIG1fcnVuQ29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKTsKKyAgICBmb3IgKGNvbnN0IFJlZjxTaW11bGF0ZWRJbnB1dFNvdXJjZT4mIGlu
cHV0U291cmNlIDogaW5wdXRTb3VyY2VzKQorICAgICAgICBtX2lucHV0U291cmNlcy5hZGQoaW5w
dXRTb3VyY2UuY29weVJlZigpKTsKKworICAgIC8vIFRoZSAiZGlzcGF0Y2ggYWN0aW9ucyIgYWxn
b3JpdGhtICjCpzE3LjQgRGlzcGF0Y2hpbmcgQWN0aW9ucykuCisKKyAgICBtX2tleWZyYW1lcy5y
ZXNlcnZlQ2FwYWNpdHkoa2V5RnJhbWVzLnNpemUoKSArIDEpOworICAgIG1fa2V5ZnJhbWVzLmFw
cGVuZChTaW11bGF0ZWRJbnB1dEtleUZyYW1lOjprZXlGcmFtZUZyb21TdGF0ZU9mSW5wdXRTb3Vy
Y2VzKG1faW5wdXRTb3VyY2VzKSk7CisgICAgbV9rZXlmcmFtZXMuYXBwZW5kVmVjdG9yKFdURk1v
dmUoa2V5RnJhbWVzKSk7CisKKyAgICB0cmFuc2l0aW9uVG9OZXh0S2V5RnJhbWUoKTsKK30KKwor
dm9pZCBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OmNhbmNlbCgpCit7CisgICAgLy8gSWYgd2Ug
d2VyZSB3YWl0aW5nIGZvciBtX2NsaWVudCB0byBmaW5pc2ggYW4gaW50ZXJhY3Rpb24gYW5kIHRo
ZSBpbnRlcmFjdGlvbiBoYWQgYW4gZXJyb3IsCisgICAgLy8gdGhlbiB0aGUgcmVzdCBvZiB0aGUg
YXN5bmMgY2hhaW4gd2lsbCBoYXZlIGJlZW4gdG9ybiBkb3duLiBJZiB3ZSBhcmUganVzdCB3YWl0
aW5nIG9uIGEKKyAgICAvLyBkaXNwYXRjaCB0aW1lciwgdGhlbiB0aGlzIHdpbGwgY2FuY2VsIHRo
ZSB0aW1lciBhbmQgY2xlYXIKKworICAgIGlmIChpc0FjdGl2ZSgpKQorICAgICAgICBmaW5pc2hE
aXNwYXRjaGluZyhBVVRPTUFUSU9OX0NPTU1BTkRfRVJST1JfV0lUSF9OQU1FKEludGVybmFsRXJy
b3IpKTsKK30KKwordm9pZCBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OmZpbmlzaERpc3BhdGNo
aW5nKHN0ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4gZXJyb3IpCit7CisgICAg
bV9rZXlGcmFtZVRyYW5zaXRpb25EdXJhdGlvblRpbWVyLnN0b3AoKTsKKworICAgIGF1dG8gZmlu
aXNoID0gc3RkOjpleGNoYW5nZShtX3J1bkNvbXBsZXRpb25IYW5kbGVyLCBudWxscHRyKTsKKyAg
ICBtX2tleWZyYW1lcy5jbGVhcigpOworICAgIG1faW5wdXRTb3VyY2VzLmNsZWFyKCk7CisgICAg
bV9rZXlmcmFtZUluZGV4ID0gMDsKKyAgICBtX2lucHV0U291cmNlU3RhdGVJbmRleCA9IDA7CisK
KyAgICBmaW5pc2goZXJyb3IpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJraXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vU2ltdWxhdGVkSW5wdXREaXNw
YXRjaGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1NpbXVsYXRlZElu
cHV0RGlzcGF0Y2hlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2MDJjMmMyMjQwYmVhMWMwZmZlMGU5MGZhZDk4
ODFlMWQ1NGNiMjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
dXRvbWF0aW9uL1NpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5oCkBAIC0wLDAgKzEsMTYwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJXZWJFdmVudC5oIgorI2luY2x1
ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Cisj
aW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNp
bmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUgPHd0Zi9TZWNvbmRzLmg+CisjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1l
c3BhY2UgSW5zcGVjdG9yIHsgbmFtZXNwYWNlIFByb3RvY29sIHsgbmFtZXNwYWNlIEF1dG9tYXRp
b24geworZW51bSBjbGFzcyBFcnJvck1lc3NhZ2U7CitlbnVtIGNsYXNzIEtleWJvYXJkSW50ZXJh
Y3Rpb25UeXBlOworZW51bSBjbGFzcyBNb3VzZUludGVyYWN0aW9uOworZW51bSBjbGFzcyBWaXJ0
dWFsS2V5OworfSB9IH0KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIEF1dG9tYXRpb25D
b21tYW5kRXJyb3I7Cit1c2luZyBBdXRvbWF0aW9uQ29tcGxldGlvbkhhbmRsZXIgPSBXVEY6OkNv
bXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9y
Pik+OworCitjbGFzcyBXZWJQYWdlUHJveHk7CisKK3VzaW5nIEtleWJvYXJkSW50ZXJhY3Rpb24g
PSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpLZXlib2FyZEludGVyYWN0aW9uVHlw
ZTsKK3VzaW5nIFZpcnR1YWxLZXkgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpW
aXJ0dWFsS2V5OwordXNpbmcgQ2hhcktleSA9IGNoYXI7IC8vIEZvciBXZWJEcml2ZXIsIHRoaXMg
b25seSBuZWVkcyB0byBzdXBwb3J0IEFTQ0lJIGNoYXJhY3RlcnMgb24gMTAyLWtleSBrZXlib2Fy
ZC4KK3VzaW5nIE1vdXNlQnV0dG9uID0gV2ViTW91c2VFdmVudDo6QnV0dG9uOwordXNpbmcgTW91
c2VJbnRlcmFjdGlvbiA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlSW50
ZXJhY3Rpb247CisKK3N0cnVjdCBTaW11bGF0ZWRJbnB1dFNvdXJjZVN0YXRlIHsKKyAgICBzdGQ6
Om9wdGlvbmFsPENoYXJLZXk+IHByZXNzZWRDaGFyS2V5OworICAgIHN0ZDo6b3B0aW9uYWw8Vmly
dHVhbEtleT4gcHJlc3NlZFZpcnR1YWxLZXk7CisgICAgc3RkOjpvcHRpb25hbDxNb3VzZUJ1dHRv
bj4gcHJlc3NlZE1vdXNlQnV0dG9uOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SW50UG9p
bnQ+IGxvY2F0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gZHVyYXRpb247CisKKyAg
ICBzdGF0aWMgU2ltdWxhdGVkSW5wdXRTb3VyY2VTdGF0ZSBlbXB0eVN0YXRlKCkgeyByZXR1cm4g
U2ltdWxhdGVkSW5wdXRTb3VyY2VTdGF0ZSgpOyB9Cit9OworCitzdHJ1Y3QgU2ltdWxhdGVkSW5w
dXRTb3VyY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxTaW11bGF0ZWRJbnB1dFNvdXJjZT4geworcHVi
bGljOgorICAgIGVudW0gY2xhc3MgVHlwZSB7CisgICAgICAgIE51bGwsIC8vIFVzZWQgdG8gaW5k
dWNlIGEgbWluaW11bSBkdXJhdGlvbi4KKyAgICAgICAgS2V5Ym9hcmQsCisgICAgICAgIE1vdXNl
LAorICAgICAgICBUb3VjaCwKKyAgICB9OworCisgICAgVHlwZSB0eXBlOworCisgICAgLy8gVGhl
IGxhc3Qgc3RhdGUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgaW5wdXQgc291cmNlLgorICAgIFNpbXVs
YXRlZElucHV0U291cmNlU3RhdGUgc3RhdGU7CisKKyAgICBzdGF0aWMgUmVmPFNpbXVsYXRlZElu
cHV0U291cmNlPiBjcmVhdGUoVHlwZSB0eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU2ltdWxhdGVkSW5wdXRTb3VyY2UodHlwZSkpOworICAgIH0KKworcHJpdmF0ZToK
KyAgICBTaW11bGF0ZWRJbnB1dFNvdXJjZShUeXBlIHR5cGUpCisgICAgICAgIDogdHlwZSh0eXBl
KQorICAgICAgICAsIHN0YXRlKFNpbXVsYXRlZElucHV0U291cmNlU3RhdGU6OmVtcHR5U3RhdGUo
KSkKKyAgICB7IH0KK307CisKK3N0cnVjdCBTaW11bGF0ZWRJbnB1dEtleUZyYW1lIHsKK3B1Ymxp
YzoKKyAgICB1c2luZyBTdGF0ZUVudHJ5ID0gc3RkOjpwYWlyPFNpbXVsYXRlZElucHV0U291cmNl
JiwgU2ltdWxhdGVkSW5wdXRTb3VyY2VTdGF0ZT47CisKKyAgICBleHBsaWNpdCBTaW11bGF0ZWRJ
bnB1dEtleUZyYW1lKFZlY3RvcjxTdGF0ZUVudHJ5PiYmKTsKKyAgICBTZWNvbmRzIG1heGltdW1E
dXJhdGlvbigpIGNvbnN0OworCisgICAgc3RhdGljIFNpbXVsYXRlZElucHV0S2V5RnJhbWUga2V5
RnJhbWVGcm9tU3RhdGVPZklucHV0U291cmNlcyhIYXNoU2V0PFJlZjxTaW11bGF0ZWRJbnB1dFNv
dXJjZT4+Jik7CisgICAgc3RhdGljIFNpbXVsYXRlZElucHV0S2V5RnJhbWUga2V5RnJhbWVUb1Jl
c2V0SW5wdXRTb3VyY2VzKEhhc2hTZXQ8UmVmPFNpbXVsYXRlZElucHV0U291cmNlPj4mKTsKKwor
ICAgIFZlY3RvcjxTdGF0ZUVudHJ5PiBzdGF0ZXM7Cit9OworCitjbGFzcyBTaW11bGF0ZWRJbnB1
dERpc3BhdGNoZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI+
IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIpOwor
cHVibGljOgorICAgIGNsYXNzIENsaWVudCB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFs
IH5DbGllbnQoKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIHNpbXVsYXRlTW91c2VJbnRlcmFj
dGlvbihXZWJQYWdlUHJveHkmLCBNb3VzZUludGVyYWN0aW9uLCBXZWJNb3VzZUV2ZW50OjpCdXR0
b24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBsb2NhdGlvbkluVmlldywgQXV0b21hdGlvbkNv
bXBsZXRpb25IYW5kbGVyJiYpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHNpbXVsYXRlS2V5
Ym9hcmRJbnRlcmFjdGlvbihXZWJQYWdlUHJveHkmLCBLZXlib2FyZEludGVyYWN0aW9uLCBzdGQ6
Om9wdGlvbmFsPFZpcnR1YWxLZXk+LCBzdGQ6Om9wdGlvbmFsPENoYXJLZXk+LCBBdXRvbWF0aW9u
Q29tcGxldGlvbkhhbmRsZXImJikgPSAwOworICAgIH07CisKKyAgICBzdGF0aWMgUmVmPFNpbXVs
YXRlZElucHV0RGlzcGF0Y2hlcj4gY3JlYXRlKFdlYlBhZ2VQcm94eSYgcGFnZSwgU2ltdWxhdGVk
SW5wdXREaXNwYXRjaGVyOjpDbGllbnQmIGNsaWVudCkKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcihwYWdlLCBjbGllbnQpKTsKKyAg
ICB9CisKKyAgICB+U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyKCk7CisKKyAgICB2b2lkIHJ1bihW
ZWN0b3I8U2ltdWxhdGVkSW5wdXRLZXlGcmFtZT4mJiBrZXlGcmFtZXMsIEhhc2hTZXQ8UmVmPFNp
bXVsYXRlZElucHV0U291cmNlPj4mIGlucHV0U291cmNlcywgQXV0b21hdGlvbkNvbXBsZXRpb25I
YW5kbGVyJiYpOworICAgIHZvaWQgY2FuY2VsKCk7CisKKyAgICBib29sIGlzQWN0aXZlKCkgY29u
c3Q7CisKK3ByaXZhdGU6CisgICAgU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyKFdlYlBhZ2VQcm94
eSYsIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6Q2xpZW50Jik7CisKKyAgICB2b2lkIHRyYW5z
aXRpb25Ub05leHRLZXlGcmFtZSgpOworICAgIHZvaWQgdHJhbnNpdGlvbkJldHdlZW5LZXlGcmFt
ZXMoY29uc3QgU2ltdWxhdGVkSW5wdXRLZXlGcmFtZSYsIGNvbnN0IFNpbXVsYXRlZElucHV0S2V5
RnJhbWUmLCBBdXRvbWF0aW9uQ29tcGxldGlvbkhhbmRsZXImJik7CisKKyAgICB2b2lkIHRyYW5z
aXRpb25Ub05leHRJbnB1dFNvdXJjZVN0YXRlKCk7CisgICAgdm9pZCB0cmFuc2l0aW9uSW5wdXRT
b3VyY2VUb1N0YXRlKFNpbXVsYXRlZElucHV0U291cmNlJiwgY29uc3QgU2ltdWxhdGVkSW5wdXRT
b3VyY2VTdGF0ZSYgbmV3U3RhdGUsIEF1dG9tYXRpb25Db21wbGV0aW9uSGFuZGxlciYmKTsKKyAg
ICB2b2lkIGZpbmlzaERpc3BhdGNoaW5nKHN0ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRF
cnJvcj4pOworCisgICAgdm9pZCBrZXlGcmFtZVRyYW5zaXRpb25EdXJhdGlvblRpbWVyRmlyZWQo
KTsKKyAgICBib29sIGlzS2V5RnJhbWVUcmFuc2l0aW9uQ29tcGxldGUoKSBjb25zdDsKKworICAg
IFdlYlBhZ2VQcm94eSYgbV9wYWdlOworICAgIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6Q2xp
ZW50JiBtX2NsaWVudDsKKworICAgIEF1dG9tYXRpb25Db21wbGV0aW9uSGFuZGxlciBtX3J1bkNv
bXBsZXRpb25IYW5kbGVyOworICAgIEF1dG9tYXRpb25Db21wbGV0aW9uSGFuZGxlciBtX2tleUZy
YW1lVHJhbnNpdGlvbkNvbXBsZXRpb25IYW5kbGVyOworICAgIFJ1bkxvb3A6OlRpbWVyPFNpbXVs
YXRlZElucHV0RGlzcGF0Y2hlcj4gbV9rZXlGcmFtZVRyYW5zaXRpb25EdXJhdGlvblRpbWVyOwor
CisgICAgVmVjdG9yPFNpbXVsYXRlZElucHV0S2V5RnJhbWU+IG1fa2V5ZnJhbWVzOworICAgIEhh
c2hTZXQ8UmVmPFNpbXVsYXRlZElucHV0U291cmNlPj4gbV9pbnB1dFNvdXJjZXM7CisKKyAgICAv
LyBUaGUgcG9zaXRpb24gd2l0aGluIG1fa2V5ZnJhbWVzLgorICAgIHVuc2lnbmVkIG1fa2V5ZnJh
bWVJbmRleCB7IDAgfTsKKworICAgIC8vIFRoZSBwb3NpdGlvbiB3aXRoaW4gdGhlIGlucHV0IHNv
dXJjZSBzdGF0ZSB2ZWN0b3IgYXQgbV9rZXlmcmFtZXNbbV9rZXlmcmFtZUluZGV4XS4KKyAgICAv
LyBFdmVudHMgdGhhdCByZWZsZWN0IGlucHV0IHNvdXJjZSBzdGF0ZSB0cmFuc2l0aW9ucyBhcmUg
ZGlzcGF0Y2hlZCBzZXJpYWxseSBiYXNlZCBvbiB0aGlzIG9yZGVyLgorICAgIHVuc2lnbmVkIG1f
aW5wdXRTb3VyY2VTdGF0ZUluZGV4IHsgMCB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9t
YXRpb25TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2Vi
QXV0b21hdGlvblNlc3Npb24uY3BwCmluZGV4IGY1YjdkMzcxODI1NTBhY2QzNDFlYTgxMDJjZjAw
ZDAyNWI0MzhiMTIuLjA5NTY3ZmVmYzIwMGFlNGI2OWRjYzRjYTg0OGFhODUzNGVhNTNhYzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlv
blNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2Vi
QXV0b21hdGlvblNlc3Npb24uY3BwCkBAIC03Niw2ICs3NiwxMCBAQCBXZWJBdXRvbWF0aW9uU2Vz
c2lvbjo6V2ViQXV0b21hdGlvblNlc3Npb24oKQogICAgICwgbV9kb21haW5Ob3RpZmllcihzdGQ6
Om1ha2VfdW5pcXVlPEF1dG9tYXRpb25Gcm9udGVuZERpc3BhdGNoZXI+KG1fZnJvbnRlbmRSb3V0
ZXIpKQogICAgICwgbV9sb2FkVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmV2ViQXV0b21h
dGlvblNlc3Npb246OmxvYWRUaW1lckZpcmVkKQogeworICAgIC8vIFNldCB1cCBjYW5vbmljYWwg
aW5wdXQgc291cmNlcyB0byBiZSB1c2VkIGZvciAncGVyZm9ybUludGVyYWN0aW9uU2VxdWVuY2Un
IGFuZCAnY2FuY2VsSW50ZXJhY3Rpb25TZXF1ZW5jZScuCisgICAgbV9pbnB1dFNvdXJjZXMuYWRk
KFNpbXVsYXRlZElucHV0U291cmNlOjpjcmVhdGUoU2ltdWxhdGVkSW5wdXRTb3VyY2U6OlR5cGU6
Ok1vdXNlKSk7CisgICAgbV9pbnB1dFNvdXJjZXMuYWRkKFNpbXVsYXRlZElucHV0U291cmNlOjpj
cmVhdGUoU2ltdWxhdGVkSW5wdXRTb3VyY2U6OlR5cGU6OktleWJvYXJkKSk7CisgICAgbV9pbnB1
dFNvdXJjZXMuYWRkKFNpbXVsYXRlZElucHV0U291cmNlOjpjcmVhdGUoU2ltdWxhdGVkSW5wdXRT
b3VyY2U6OlR5cGU6Ok51bGwpKTsKIH0KIAogV2ViQXV0b21hdGlvblNlc3Npb246On5XZWJBdXRv
bWF0aW9uU2Vzc2lvbigpCkBAIC03MjMsMjggKzcyNywzMiBAQCB2b2lkIFdlYkF1dG9tYXRpb25T
ZXNzaW9uOjppbnNwZWN0b3JGcm9udGVuZExvYWRlZChjb25zdCBXZWJQYWdlUHJveHkmIHBhZ2Up
CiAKIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246Om1vdXNlRXZlbnRzRmx1c2hlZEZvclBhZ2Uo
Y29uc3QgV2ViUGFnZVByb3h5JiBwYWdlKQogewotICAgIGlmIChhdXRvIGNhbGxiYWNrID0gbV9w
ZW5kaW5nTW91c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS50YWtlKHBhZ2UucGFnZUlE
KCkpKSB7Ci0gICAgICAgIGlmIChtX3BlbmRpbmdNb3VzZUV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQ
ZXJQYWdlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIG1fc2ltdWxhdGluZ1VzZXJJbnRlcmFjdGlv
biA9IGZhbHNlOwotCisgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBtX3BlbmRpbmdNb3VzZUV2ZW50
c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlLnRha2UocGFnZS5wYWdlSUQoKSkpCiAgICAgICAgIGNh
bGxiYWNrKHN0ZDo6bnVsbG9wdCk7Ci0gICAgfQogfQogCiB2b2lkIFdlYkF1dG9tYXRpb25TZXNz
aW9uOjprZXlib2FyZEV2ZW50c0ZsdXNoZWRGb3JQYWdlKGNvbnN0IFdlYlBhZ2VQcm94eSYgcGFn
ZSkKIHsKLSAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1fcGVuZGluZ0tleWJvYXJkRXZlbnRzRmx1
c2hlZENhbGxiYWNrc1BlclBhZ2UudGFrZShwYWdlLnBhZ2VJRCgpKSkgewotICAgICAgICBpZiAo
bV9wZW5kaW5nS2V5Ym9hcmRFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS5pc0VtcHR5KCkp
Ci0gICAgICAgICAgICBtX3NpbXVsYXRpbmdVc2VySW50ZXJhY3Rpb24gPSBmYWxzZTsKLQorICAg
IGlmIChhdXRvIGNhbGxiYWNrID0gbV9wZW5kaW5nS2V5Ym9hcmRFdmVudHNGbHVzaGVkQ2FsbGJh
Y2tzUGVyUGFnZS50YWtlKHBhZ2UucGFnZUlEKCkpKQogICAgICAgICBjYWxsYmFjayhzdGQ6Om51
bGxvcHQpOwotICAgIH0KIH0KIAogdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6d2lsbENsb3Nl
UGFnZShjb25zdCBXZWJQYWdlUHJveHkmIHBhZ2UpCiB7CiAgICAgU3RyaW5nIGhhbmRsZSA9IGhh
bmRsZUZvcldlYlBhZ2VQcm94eShwYWdlKTsKICAgICBtX2RvbWFpbk5vdGlmaWVyLT5icm93c2lu
Z0NvbnRleHRDbGVhcmVkKGhhbmRsZSk7CisKKyAgICAvLyBDYW5jZWwgcGVuZGluZyBpbnRlcmFj
dGlvbnMgb24gdGhpcyBwYWdlLiBCeSBwcm92aWRpbmcgYW4gZXJyb3IsIHRoaXMgd2lsbCBjYXVz
ZSBzdWJzZXF1ZW50CisgICAgLy8gYWN0aW9ucyB0byBiZSBhYm9ydGVkIGFuZCB0aGUgU2ltdWxh
dGVkSW5wdXREaXNwYXRjaGVyOjpydW4oKSBjYWxsIHdpbGwgdW53aW5kIGFuZCBmYWlsLgorICAg
IGlmIChhdXRvIGNhbGxiYWNrID0gbV9wZW5kaW5nTW91c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2tz
UGVyUGFnZS50YWtlKHBhZ2UucGFnZUlEKCkpKQorICAgICAgICBjYWxsYmFjayhBVVRPTUFUSU9O
X0NPTU1BTkRfRVJST1JfV0lUSF9OQU1FKFdpbmRvd05vdEZvdW5kKSk7CisgICAgaWYgKGF1dG8g
Y2FsbGJhY2sgPSBtX3BlbmRpbmdNb3VzZUV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlLnRh
a2UocGFnZS5wYWdlSUQoKSkpCisgICAgICAgIGNhbGxiYWNrKEFVVE9NQVRJT05fQ09NTUFORF9F
UlJPUl9XSVRIX05BTUUoV2luZG93Tm90Rm91bmQpKTsKKworICAgIC8vIFRoZW4gdGVsbCB0aGUg
aW5wdXQgZGlzcGF0Y2hlciB0byBjYW5jZWwgc28gdGltZXJzIGFyZSBzdG9wcGVkLCBhbmQgbGV0
IGl0IGdvIG91dCBvZiBzY29wZS4KKyAgICBzdGQ6Om9wdGlvbmFsPFJlZjxTaW11bGF0ZWRJbnB1
dERpc3BhdGNoZXI+PiBpbnB1dERpc3BhdGNoZXIgPSBtX2lucHV0RGlzcGF0Y2hlcnNCeVBhZ2Uu
dGFrZShwYWdlLnBhZ2VJRCgpKTsKKyAgICBpZiAoaW5wdXREaXNwYXRjaGVyLmhhc192YWx1ZSgp
KQorICAgICAgICBpbnB1dERpc3BhdGNoZXIudmFsdWUoKS0+Y2FuY2VsKCk7CiB9CiAKIHN0YXRp
YyBib29sIGZpbGVDYW5CZUFjY2VwdGVkRm9yVXBsb2FkKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUs
IGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgYWxsb3dlZE1JTUVUeXBlcywgY29uc3QgSGFzaFNldDxT
dHJpbmc+JiBhbGxvd2VkRmlsZUV4dGVuc2lvbnMpCkBAIC0xMzY2LDYgKzEzNzQsODUgQEAgYm9v
bCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6c2hvdWxkQWxsb3dHZXRVc2VyTWVkaWFGb3JQYWdlKGNv
bnN0IFdlYlBhZ2VQcm94eSYpIGMKICAgICByZXR1cm4gbV9wZXJtaXNzaW9uRm9yR2V0VXNlck1l
ZGlhOwogfQogCitib29sIFdlYkF1dG9tYXRpb25TZXNzaW9uOjppc1NpbXVsYXRpbmdVc2VySW50
ZXJhY3Rpb24oKSBjb25zdAoreworICAgIGlmICghbV9wZW5kaW5nTW91c2VFdmVudHNGbHVzaGVk
Q2FsbGJhY2tzUGVyUGFnZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBp
ZiAoIW1fcGVuZGluZ0tleWJvYXJkRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2UuaXNFbXB0
eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworU2lt
dWxhdGVkSW5wdXREaXNwYXRjaGVyJiBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6aW5wdXREaXNwYXRj
aGVyRm9yUGFnZShXZWJQYWdlUHJveHkmIHBhZ2UpCit7CisgICAgcmV0dXJuIG1faW5wdXREaXNw
YXRjaGVyc0J5UGFnZS5lbnN1cmUocGFnZS5wYWdlSUQoKSwgWyZdIHsKKyAgICAgICAgcmV0dXJu
IFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6Y3JlYXRlKHBhZ2UsICp0aGlzKTsKKyAgICB9KS5p
dGVyYXRvci0+dmFsdWU7Cit9CisKK1NpbXVsYXRlZElucHV0U291cmNlKiBXZWJBdXRvbWF0aW9u
U2Vzc2lvbjo6aW5wdXRTb3VyY2VGb3JUeXBlKFNpbXVsYXRlZElucHV0U291cmNlOjpUeXBlIHR5
cGUpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IHRoaXMgc2hvdWxkIHVzZSBzb21ldGhpbmcgbGlr
ZSBWZWN0b3IncyBmaW5kTWF0Y2hpbmcoKS4KKyAgICBmb3IgKGF1dG8mIGlucHV0U291cmNlIDog
bV9pbnB1dFNvdXJjZXMpIHsKKyAgICAgICAgaWYgKGlucHV0U291cmNlLT50eXBlID09IHR5cGUp
CisgICAgICAgICAgICByZXR1cm4gJmlucHV0U291cmNlLmdldCgpOworICAgIH0KKworICAgIHJl
dHVybiBudWxscHRyOworfQorCisvLyBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OkNsaWVudCBB
UEkKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnNpbXVsYXRlTW91c2VJbnRlcmFjdGlvbihX
ZWJQYWdlUHJveHkmIHBhZ2UsIE1vdXNlSW50ZXJhY3Rpb24gaW50ZXJhY3Rpb24sIFdlYk1vdXNl
RXZlbnQ6OkJ1dHRvbiBtb3VzZUJ1dHRvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGxvY2F0
aW9uSW5WaWV3cG9ydCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPEF1dG9t
YXRpb25Db21tYW5kRXJyb3I+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBXZWJDb3Jl
OjpJbnRQb2ludCBsb2NhdGlvbkluVmlldyA9IFdlYkNvcmU6OkludFBvaW50KGxvY2F0aW9uSW5W
aWV3cG9ydC54KCksIGxvY2F0aW9uSW5WaWV3cG9ydC55KCkgKyBwYWdlLnRvcENvbnRlbnRJbnNl
dCgpKTsKKyAgICBwYWdlLmdldFdpbmRvd0ZyYW1lV2l0aENhbGxiYWNrKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlciksIHBhZ2UgPSBtYWtlUmVmKHBhZ2UpLCBpbnRlcmFjdGlvbiwgbW91c2VC
dXR0b24sIGxvY2F0aW9uSW5WaWV3XShXZWJDb3JlOjpGbG9hdFJlY3Qgd2luZG93RnJhbWUpIG11
dGFibGUgeworICAgICAgICBhdXRvIGNsaXBwZWRYID0gc3RkOjptaW4oc3RkOjptYXgoMC4wZiwg
KGZsb2F0KWxvY2F0aW9uSW5WaWV3LngoKSksIHdpbmRvd0ZyYW1lLnNpemUoKS53aWR0aCgpKTsK
KyAgICAgICAgYXV0byBjbGlwcGVkWSA9IHN0ZDo6bWluKHN0ZDo6bWF4KDAuMGYsIChmbG9hdCls
b2NhdGlvbkluVmlldy55KCkpLCB3aW5kb3dGcmFtZS5zaXplKCkuaGVpZ2h0KCkpOworICAgICAg
ICBpZiAoY2xpcHBlZFggIT0gbG9jYXRpb25JblZpZXcueCgpIHx8IGNsaXBwZWRZICE9IGxvY2F0
aW9uSW5WaWV3LnkoKSkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQVVUT01BVElP
Tl9DT01NQU5EX0VSUk9SX1dJVEhfTkFNRShUYXJnZXRPdXRPZkJvdW5kcykpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLy8gQnJpZGdlIHRoZSBmbHVzaGVkIGNh
bGxiYWNrIHRvIG91ciBjb21tYW5kJ3MgY29tcGxldGlvbiBoYW5kbGVyLgorICAgICAgICBhdXRv
IG1vdXNlRXZlbnRzRmx1c2hlZENhbGxiYWNrID0gW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildKHN0ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJv
cj4gZXJyb3IpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGVycm9yKTsKKyAgICAg
ICAgfTsKKworICAgICAgICBhdXRvJiBjYWxsYmFja0luTWFwID0gbV9wZW5kaW5nTW91c2VFdmVu
dHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS5hZGQocGFnZS0+cGFnZUlEKCksIG51bGxwdHIpLml0
ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgaWYgKGNhbGxiYWNrSW5NYXApCisgICAgICAgICAgICBj
YWxsYmFja0luTWFwKEFVVE9NQVRJT05fQ09NTUFORF9FUlJPUl9XSVRIX05BTUUoVGltZW91dCkp
OworICAgICAgICBjYWxsYmFja0luTWFwID0gV1RGTW92ZShtb3VzZUV2ZW50c0ZsdXNoZWRDYWxs
YmFjayk7CisKKyAgICAgICAgcGxhdGZvcm1TaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24ocGFnZSwg
aW50ZXJhY3Rpb24sIG1vdXNlQnV0dG9uLCBsb2NhdGlvbkluVmlldywgKFdlYkV2ZW50OjpNb2Rp
ZmllcnMpbV9jdXJyZW50TW9kaWZpZXJzKTsKKworICAgICAgICAvLyBJZiB0aGUgZXZlbnQgZG9l
cyBub3QgaGl0IHRlc3QgYW55dGhpbmcgaW4gdGhlIHdpbmRvdywgdGhlbiBpdCBtYXkgbm90IGhh
dmUgYmVlbiBkZWxpdmVyZWQuCisgICAgICAgIGlmIChjYWxsYmFja0luTWFwICYmICFwYWdlLT5p
c1Byb2Nlc3NpbmdNb3VzZUV2ZW50cygpKSB7CisgICAgICAgICAgICBhdXRvIGNhbGxiYWNrVG9D
YW5jZWwgPSBtX3BlbmRpbmdNb3VzZUV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlLnRha2Uo
cGFnZS0+cGFnZUlEKCkpOworICAgICAgICAgICAgY2FsbGJhY2tUb0NhbmNlbChzdGQ6Om51bGxv
cHQpOworICAgICAgICB9CisKKyAgICAgICAgLy8gT3RoZXJ3aXNlLCB3YWl0IGZvciBtb3VzZUV2
ZW50c0ZsdXNoZWRDYWxsYmFjayB0byBydW4gd2hlbiBhbGwgZXZlbnRzIGFyZSBoYW5kbGVkLgor
ICAgIH0pOworfQorCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpzaW11bGF0ZUtleWJvYXJk
SW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBLZXlib2FyZEludGVyYWN0aW9uIGludGVy
YWN0aW9uLCBzdGQ6Om9wdGlvbmFsPFZpcnR1YWxLZXk+IHZpcnR1YWxLZXksIHN0ZDo6b3B0aW9u
YWw8Q2hhcktleT4gY2hhcktleSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFs
PEF1dG9tYXRpb25Db21tYW5kRXJyb3I+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICAv
LyBCcmlkZ2UgdGhlIGZsdXNoZWQgY2FsbGJhY2sgdG8gb3VyIGNvbW1hbmQncyBjb21wbGV0aW9u
IGhhbmRsZXIuCisgICAgYXV0byBrZXlib2FyZEV2ZW50c0ZsdXNoZWRDYWxsYmFjayA9IFtjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShzdGQ6Om9wdGlvbmFs
PEF1dG9tYXRpb25Db21tYW5kRXJyb3I+IGVycm9yKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKGVycm9yKTsKKyAgICB9OworCisgICAgYXV0byYgY2FsbGJhY2tJbk1hcCA9IG1fcGVuZGlu
Z0tleWJvYXJkRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2UuYWRkKHBhZ2UucGFnZUlEKCks
IG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBpZiAoY2FsbGJhY2tJbk1hcCkKKyAgICAg
ICAgY2FsbGJhY2tJbk1hcChBVVRPTUFUSU9OX0NPTU1BTkRfRVJST1JfV0lUSF9OQU1FKFRpbWVv
dXQpKTsKKyAgICBjYWxsYmFja0luTWFwID0gV1RGTW92ZShrZXlib2FyZEV2ZW50c0ZsdXNoZWRD
YWxsYmFjayk7CisKKyAgICBwbGF0Zm9ybVNpbXVsYXRlS2V5Ym9hcmRJbnRlcmFjdGlvbihwYWdl
LCBpbnRlcmFjdGlvbiwgdmlydHVhbEtleSwgY2hhcktleSk7CisKKyAgICAvLyBXYWl0IGZvciBr
ZXlib2FyZEV2ZW50c0ZsdXNoZWRDYWxsYmFjayB0byBydW4gd2hlbiBhbGwgZXZlbnRzIGFyZSBo
YW5kbGVkLgorfQorCiAjaWYgVVNFKEFQUEtJVCkgfHwgUExBVEZPUk0oR1RLKQogc3RhdGljIFdl
YkV2ZW50OjpNb2RpZmllcnMgcHJvdG9jb2xNb2RpZmllclRvV2ViRXZlbnRNb2RpZmllcihJbnNw
ZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpLZXlNb2RpZmllciBtb2RpZmllcikKIHsKQEAg
LTEzODQsNiArMTQ3MSwyMiBAQCBzdGF0aWMgV2ViRXZlbnQ6Ok1vZGlmaWVycyBwcm90b2NvbE1v
ZGlmaWVyVG9XZWJFdmVudE1vZGlmaWVyKEluc3BlY3Rvcjo6UHJvdG9jbwogCiAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KKworc3RhdGljIFdlYk1vdXNlRXZlbnQ6OkJ1dHRv
biBwcm90b2NvbE1vdXNlQnV0dG9uVG9XZWJNb3VzZUV2ZW50QnV0dG9uKEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9uIGJ1dHRvbikKK3sKKyAgICBzd2l0Y2ggKGJ1
dHRvbikgeworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VC
dXR0b246Ok5vbmU6CisgICAgICAgIHJldHVybiBXZWJNb3VzZUV2ZW50OjpOb0J1dHRvbjsKKyAg
ICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9uOjpMZWZ0
OgorICAgICAgICByZXR1cm4gV2ViTW91c2VFdmVudDo6TGVmdEJ1dHRvbjsKKyAgICBjYXNlIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9uOjpNaWRkbGU6CisgICAg
ICAgIHJldHVybiBXZWJNb3VzZUV2ZW50OjpNaWRkbGVCdXR0b247CisgICAgY2FzZSBJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1dHRvbjo6UmlnaHQ6CisgICAgICAgIHJl
dHVybiBXZWJNb3VzZUV2ZW50OjpSaWdodEJ1dHRvbjsKKyAgICB9CisKKyAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworfQogI2VuZGlmIC8vIFVTRShBUFBLSVQpIHx8IFBMQVRGT1JN
KEdUSykKIAogdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGVyZm9ybU1vdXNlSW50ZXJhY3Rp
b24oY29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbnN0IEpTT046Ok9iamVjdCYgcmVxdWVzdGVkUG9z
aXRpb25PYmplY3QsIGNvbnN0IFN0cmluZyYgbW91c2VCdXR0b25TdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgbW91c2VJbnRlcmFjdGlvblN0cmluZywgY29uc3QgSlNPTjo6QXJyYXkmIGtleU1vZGlmaWVy
U3RyaW5ncywgUmVmPFBlcmZvcm1Nb3VzZUludGVyYWN0aW9uQ2FsbGJhY2s+JiYgY2FsbGJhY2sp
CkBAIC0xNDE1LDEzICsxNTE4LDEzIEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBlcmZv
cm1Nb3VzZUludGVyYWN0aW9uKGNvbnN0IFN0cmluZyYgaGFuZGxlLCBjb25zdCBKCiAgICAgICAg
IFdlYkV2ZW50OjpNb2RpZmllcnMgZW51bVZhbHVlID0gcHJvdG9jb2xNb2RpZmllclRvV2ViRXZl
bnRNb2RpZmllcihwYXJzZWRNb2RpZmllci52YWx1ZSgpKTsKICAgICAgICAga2V5TW9kaWZpZXJz
ID0gKFdlYkV2ZW50OjpNb2RpZmllcnMpKGVudW1WYWx1ZSB8IGtleU1vZGlmaWVycyk7CiAgICAg
fQotICAgIAorCiAgICAgcGFnZS0+Z2V0V2luZG93RnJhbWVXaXRoQ2FsbGJhY2soW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KSwgcGFnZSA9IG1ha2VSZWYoKnBhZ2UpLCB4LCB5LCBtb3VzZUludGVyYWN0aW9uU3RyaW5nLCBt
b3VzZUJ1dHRvblN0cmluZywga2V5TW9kaWZpZXJzXShXZWJDb3JlOjpGbG9hdFJlY3Qgd2luZG93
RnJhbWUpIG11dGFibGUgewogCiAgICAgICAgIHggPSBzdGQ6Om1pbihzdGQ6Om1heCgwLjBmLCB4
KSwgd2luZG93RnJhbWUuc2l6ZSgpLndpZHRoKCkpOwogICAgICAgICB5ID0gc3RkOjptaW4oc3Rk
OjptYXgoMC4wZiwgeSArIHBhZ2UtPnRvcENvbnRlbnRJbnNldCgpKSwgd2luZG93RnJhbWUuc2l6
ZSgpLmhlaWdodCgpKTsKIAotICAgICAgICBXZWJDb3JlOjpJbnRQb2ludCB2aWV3UG9zaXRpb24g
PSBXZWJDb3JlOjpJbnRQb2ludChzdGF0aWNfY2FzdDxpbnQ+KHgpLCBzdGF0aWNfY2FzdDxpbnQ+
KHkpKTsKKyAgICAgICAgV2ViQ29yZTo6SW50UG9pbnQgcG9zaXRpb25JblZpZXcgPSBXZWJDb3Jl
OjpJbnRQb2ludChzdGF0aWNfY2FzdDxpbnQ+KHgpLCBzdGF0aWNfY2FzdDxpbnQ+KHkpKTsKIAog
ICAgICAgICBhdXRvIHBhcnNlZEludGVyYWN0aW9uID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbkhlbHBlcnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpNb3VzZUludGVyYWN0aW9uPihtb3VzZUludGVyYWN0aW9uU3RyaW5n
KTsKICAgICAgICAgaWYgKCFwYXJzZWRJbnRlcmFjdGlvbikKQEAgLTE0NDcsMTEgKzE1NTAsOCBA
QCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwZXJmb3JtTW91c2VJbnRlcmFjdGlvbihjb25z
dCBTdHJpbmcmIGhhbmRsZSwgY29uc3QgSgogICAgICAgICAgICAgY2FsbGJhY2tJbk1hcChBVVRP
TUFUSU9OX0NPTU1BTkRfRVJST1JfV0lUSF9OQU1FKFRpbWVvdXQpKTsKICAgICAgICAgY2FsbGJh
Y2tJbk1hcCA9IFdURk1vdmUobW91c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2spOwogCi0gICAgICAg
IC8vIFRoaXMgaXMgY2xlYXJlZCB3aGVuIGFsbCBtb3VzZSBldmVudHMgYXJlIGZsdXNoZWQuCi0g
ICAgICAgIG1fc2ltdWxhdGluZ1VzZXJJbnRlcmFjdGlvbiA9IHRydWU7CisgICAgICAgIHBsYXRm
b3JtU2ltdWxhdGVNb3VzZUludGVyYWN0aW9uKHBhZ2UsIHBhcnNlZEludGVyYWN0aW9uLnZhbHVl
KCksIHByb3RvY29sTW91c2VCdXR0b25Ub1dlYk1vdXNlRXZlbnRCdXR0b24ocGFyc2VkQnV0dG9u
LnZhbHVlKCkpLCBwb3NpdGlvbkluVmlldywga2V5TW9kaWZpZXJzKTsKIAotICAgICAgICBwbGF0
Zm9ybVNpbXVsYXRlTW91c2VJbnRlcmFjdGlvbihwYWdlLCB2aWV3UG9zaXRpb24sIHBhcnNlZElu
dGVyYWN0aW9uLnZhbHVlKCksIHBhcnNlZEJ1dHRvbi52YWx1ZSgpLCBrZXlNb2RpZmllcnMpOwot
ICAgICAgICAKICAgICAgICAgLy8gSWYgdGhlIGV2ZW50IGxvY2F0aW9uIHdhcyBwcmV2aW91c2x5
IGNsaXBwZWQgYW5kIGRvZXMgbm90IGhpdCB0ZXN0IGFueXRoaW5nIGluIHRoZSB3aW5kb3csIHRo
ZW4gaXQgd2lsbCBub3QgYmUgcHJvY2Vzc2VkLgogICAgICAgICAvLyBGb3IgY29tcGF0aWJpbGl0
eSB3aXRoIHByZS1XM0MgZHJpdmVyIGltcGxlbWVudGF0aW9ucywgZG9uJ3QgbWFrZSB0aGlzIGEg
aGFyZCBlcnJvcjsganVzdCBkbyBub3RoaW5nIHNpbGVudGx5LgogICAgICAgICAvLyBJbiBXM0Mt
b25seSBjb2RlIHBhdGhzLCB3ZSBjYW4gcmVqZWN0IGFueSBwb2ludGVyIGFjdGlvbnMgd2hvc2Ug
Y29vcmRpbmF0ZXMgYXJlIG91dHNpZGUgdGhlIHZpZXdwb3J0IHJlY3QuCkBAIC0xNDk5LDcgKzE1
OTksNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwZXJmb3JtS2V5Ym9hcmRJbnRlcmFj
dGlvbnMoY29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbgogICAgICAgICAgICAgICAgIEFTWU5DX0ZB
SUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKEludmFsaWRQYXJhbWV0ZXIsICJB
biBpbnRlcmFjdGlvbiBpbiB0aGUgJ2ludGVyYWN0aW9ucycgcGFyYW1ldGVyIGhhcyBhbiBpbnZh
bGlkICdrZXknIHZhbHVlLiIpOwogCiAgICAgICAgICAgICBhY3Rpb25zVG9QZXJmb3JtLnVuY2hl
Y2tlZEFwcGVuZChbdGhpcywgcGFnZSwgaW50ZXJhY3Rpb25UeXBlLCB2aXJ0dWFsS2V5XSB7Ci0g
ICAgICAgICAgICAgICAgcGxhdGZvcm1TaW11bGF0ZUtleVN0cm9rZSgqcGFnZSwgaW50ZXJhY3Rp
b25UeXBlLnZhbHVlKCksIHZpcnR1YWxLZXkudmFsdWUoKSk7CisgICAgICAgICAgICAgICAgcGxh
dGZvcm1TaW11bGF0ZUtleWJvYXJkSW50ZXJhY3Rpb24oKnBhZ2UsIGludGVyYWN0aW9uVHlwZS52
YWx1ZSgpLCB2aXJ0dWFsS2V5LCBzdGQ6Om51bGxvcHQpOwogICAgICAgICAgICAgfSk7CiAgICAg
ICAgIH0KIApAQCAtMTU0MCwxNCArMTY0MCwxNzkgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lv
bjo6cGVyZm9ybUtleWJvYXJkSW50ZXJhY3Rpb25zKGNvbnN0IFN0cmluZyYgaGFuZGxlLCBjb24K
ICAgICAgICAgY2FsbGJhY2tJbk1hcChBVVRPTUFUSU9OX0NPTU1BTkRfRVJST1JfV0lUSF9OQU1F
KFRpbWVvdXQpKTsKICAgICBjYWxsYmFja0luTWFwID0gV1RGTW92ZShrZXlib2FyZEV2ZW50c0Zs
dXNoZWRDYWxsYmFjayk7CiAKLSAgICAvLyBUaGlzIGlzIGNsZWFyZWQgd2hlbiBhbGwga2V5Ym9h
cmQgZXZlbnRzIGFyZSBmbHVzaGVkLgotICAgIG1fc2ltdWxhdGluZ1VzZXJJbnRlcmFjdGlvbiA9
IHRydWU7Ci0KICAgICBmb3IgKGF1dG8mIGFjdGlvbiA6IGFjdGlvbnNUb1BlcmZvcm0pCiAgICAg
ICAgIGFjdGlvbigpOwogI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKSB8fCBQTEFURk9STShHVEsp
CiB9CiAKK3N0YXRpYyBTaW11bGF0ZWRJbnB1dFNvdXJjZTo6VHlwZSBzaW11bGF0ZWRJbnB1dFNv
dXJjZVR5cGVGcm9tUHJvdG9jb2xTb3VyY2VUeXBlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9t
YXRpb246OklucHV0U291cmNlVHlwZSBwcm90b2NvbFR5cGUpCit7CisgICAgc3dpdGNoIChwcm90
b2NvbFR5cGUpIHsKKyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Oklu
cHV0U291cmNlVHlwZTo6TnVsbDoKKyAgICAgICAgcmV0dXJuIFNpbXVsYXRlZElucHV0U291cmNl
OjpUeXBlOjpOdWxsOworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6
SW5wdXRTb3VyY2VUeXBlOjpLZXlib2FyZDoKKyAgICAgICAgcmV0dXJuIFNpbXVsYXRlZElucHV0
U291cmNlOjpUeXBlOjpLZXlib2FyZDsKKyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1
dG9tYXRpb246OklucHV0U291cmNlVHlwZTo6TW91c2U6CisgICAgICAgIHJldHVybiBTaW11bGF0
ZWRJbnB1dFNvdXJjZTo6VHlwZTo6TW91c2U7CisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29s
OjpBdXRvbWF0aW9uOjpJbnB1dFNvdXJjZVR5cGU6OlRvdWNoOgorICAgICAgICByZXR1cm4gU2lt
dWxhdGVkSW5wdXRTb3VyY2U6OlR5cGU6OlRvdWNoOworICAgIH0KKworICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBlcmZv
cm1JbnRlcmFjdGlvblNlcXVlbmNlKGNvbnN0IFN0cmluZyYgaGFuZGxlLCBjb25zdCBKU09OOjpB
cnJheSYgaW5wdXRTb3VyY2VzLCBjb25zdCBKU09OOjpBcnJheSYgc3RlcHMsIFJlZjxXZWJBdXRv
bWF0aW9uU2Vzc2lvbjo6UGVyZm9ybUludGVyYWN0aW9uU2VxdWVuY2VDYWxsYmFjaz4mJiBjYWxs
YmFjaykKK3sKKyAgICAvLyBUaGlzIGNvbW1hbmQgaW1wbGVtZW50cyBXZWJLaXQgc3VwcG9ydCBm
b3IgwqcxNy41IFBlcmZvcm0gQWN0aW9ucy4KKworI2lmICFVU0UoQVBQS0lUKSAmJiAhUExBVEZP
Uk0oR1RLKQorICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKE5vdEltcGxlbWVu
dGVkKTsKKyNlbHNlCisgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gd2ViUGFnZVByb3h5Rm9ySGFu
ZGxlKGhhbmRsZSk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJF
REVGSU5FRF9FUlJPUihXaW5kb3dOb3RGb3VuZCk7CisKKyAgICBIYXNoTWFwPFN0cmluZywgUmVm
PFNpbXVsYXRlZElucHV0U291cmNlPj4gc291cmNlSWRUb0lucHV0U291cmNlTWFwOworICAgIEhh
c2hNYXA8U2ltdWxhdGVkSW5wdXRTb3VyY2U6OlR5cGUsIFN0cmluZywgV1RGOjpJbnRIYXNoPFNp
bXVsYXRlZElucHV0U291cmNlOjpUeXBlPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxTaW11
bGF0ZWRJbnB1dFNvdXJjZTo6VHlwZT4+IHR5cGVUb1NvdXJjZUlkTWFwOworCisgICAgLy8gUGFy
c2UgYW5kIHZhbGlkYXRlIEF1dG9tYXRpb24gcHJvdG9jb2wgYXJndW1lbnRzLiBCeSB0aGlzIHBv
aW50LCB0aGUgZHJpdmVyIGhhcworICAgIC8vIGFscmVhZHkgcGVyZm9ybWVkIHRoZSBzdGVwcyBp
biDCpzE3LjMgUHJvY2Vzc2luZyBBY3Rpb25zIFJlcXVlc3RzLgorICAgIGlmICghaW5wdXRTb3Vy
Y2VzLmxlbmd0aCgpKQorICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9B
TkRfREVUQUlMUyhJbnZhbGlkUGFyYW1ldGVyLCAiVGhlIHBhcmFtZXRlciAnaW5wdXRTb3VyY2Vz
JyB3YXMgbm90IGZvdW5kIG9yIGVtcHR5LiIpOworCisgICAgZm9yIChhdXRvIGlucHV0U291cmNl
IDogaW5wdXRTb3VyY2VzKSB7CisgICAgICAgIFJlZlB0cjxKU09OOjpPYmplY3Q+IGlucHV0U291
cmNlT2JqZWN0OworICAgICAgICBpZiAoIWlucHV0U291cmNlLT5hc09iamVjdChpbnB1dFNvdXJj
ZU9iamVjdCkpCisgICAgICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9B
TkRfREVUQUlMUyhJbnZhbGlkUGFyYW1ldGVyLCAiQW4gaW5wdXQgc291cmNlIGluIHRoZSAnaW5w
dXRTb3VyY2VzJyBwYXJhbWV0ZXIgd2FzIGludmFsaWQuIik7CisgICAgICAgIAorICAgICAgICBT
dHJpbmcgc291cmNlSWQ7CisgICAgICAgIGlmICghaW5wdXRTb3VyY2VPYmplY3QtPmdldFN0cmlu
ZyhBU0NJSUxpdGVyYWwoInNvdXJjZUlkIiksIHNvdXJjZUlkKSkKKyAgICAgICAgICAgIEFTWU5D
X0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKEludmFsaWRQYXJhbWV0ZXIs
ICJBbiBpbnB1dCBzb3VyY2UgaW4gdGhlICdpbnB1dFNvdXJjZXMnIHBhcmFtZXRlciBpcyBtaXNz
aW5nIGEgJ3NvdXJjZUlkJy4iKTsKKworICAgICAgICBTdHJpbmcgc291cmNlVHlwZTsKKyAgICAg
ICAgaWYgKCFpbnB1dFNvdXJjZU9iamVjdC0+Z2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgic291cmNl
VHlwZSIpLCBzb3VyY2VUeXBlKSkKKyAgICAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJ
TkVEX0VSUk9SX0FORF9ERVRBSUxTKEludmFsaWRQYXJhbWV0ZXIsICJBbiBpbnB1dCBzb3VyY2Ug
aW4gdGhlICdpbnB1dFNvdXJjZXMnIHBhcmFtZXRlciBpcyBtaXNzaW5nIGEgJ3NvdXJjZVR5cGUn
LiIpOworCisgICAgICAgIGF1dG8gcGFyc2VkSW5wdXRTb3VyY2VUeXBlID0gSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXV0b21hdGlvbkhlbHBlcnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNw
ZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpJbnB1dFNvdXJjZVR5cGU+KHNvdXJjZVR5cGUp
OworICAgICAgICBpZiAoIXBhcnNlZElucHV0U291cmNlVHlwZSkKKyAgICAgICAgICAgIEFTWU5D
X0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKEludmFsaWRQYXJhbWV0ZXIs
ICJBbiBpbnB1dCBzb3VyY2UgaW4gdGhlICdpbnB1dFNvdXJjZXMnIHBhcmFtZXRlciBoYXMgYW4g
aW52YWxpZCAnc291cmNlVHlwZScuIik7CisKKyAgICAgICAgU2ltdWxhdGVkSW5wdXRTb3VyY2U6
OlR5cGUgaW5wdXRTb3VyY2VUeXBlID0gc2ltdWxhdGVkSW5wdXRTb3VyY2VUeXBlRnJvbVByb3Rv
Y29sU291cmNlVHlwZSgqcGFyc2VkSW5wdXRTb3VyY2VUeXBlKTsKKyAgICAgICAgaWYgKGlucHV0
U291cmNlVHlwZSA9PSBTaW11bGF0ZWRJbnB1dFNvdXJjZTo6VHlwZTo6VG91Y2gpCisgICAgICAg
ICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhOb3RJbXBs
ZW1lbnRlZCwgIlRvdWNoIGlucHV0IHNvdXJjZXMgYXJlIG5vdCB5ZXQgc3VwcG9ydGVkLiIpOwor
CisgICAgICAgIGlmICh0eXBlVG9Tb3VyY2VJZE1hcC5jb250YWlucyhpbnB1dFNvdXJjZVR5cGUp
KQorICAgICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJ
TFMoSW52YWxpZFBhcmFtZXRlciwgIlR3byBpbnB1dCBzb3VyY2VzIHdpdGggdGhlIHNhbWUgdHlw
ZSB3ZXJlIHNwZWNpZmllZC4iKTsKKyAgICAgICAgaWYgKHNvdXJjZUlkVG9JbnB1dFNvdXJjZU1h
cC5jb250YWlucyhzb3VyY2VJZCkpCisgICAgICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVG
SU5FRF9FUlJPUl9BTkRfREVUQUlMUyhJbnZhbGlkUGFyYW1ldGVyLCAiVHdvIGlucHV0IHNvdXJj
ZXMgd2l0aCB0aGUgc2FtZSBzb3VyY2VJZCB3ZXJlIHNwZWNpZmllZC4iKTsKKworICAgICAgICB0
eXBlVG9Tb3VyY2VJZE1hcC5hZGQoaW5wdXRTb3VyY2VUeXBlLCBzb3VyY2VJZCk7CisgICAgICAg
IHNvdXJjZUlkVG9JbnB1dFNvdXJjZU1hcC5hZGQoc291cmNlSWQsICppbnB1dFNvdXJjZUZvclR5
cGUoaW5wdXRTb3VyY2VUeXBlKSk7CisgICAgfQorCisgICAgVmVjdG9yPFNpbXVsYXRlZElucHV0
S2V5RnJhbWU+IGtleUZyYW1lczsKKworICAgIGlmICghc3RlcHMubGVuZ3RoKCkpCisgICAgICAg
IEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKEludmFsaWRQYXJh
bWV0ZXIsICJUaGUgcGFyYW1ldGVyICdzdGVwcycgd2FzIG5vdCBmb3VuZCBvciBlbXB0eS4iKTsK
KworICAgIGZvciAoYXV0byBzdGVwIDogc3RlcHMpIHsKKyAgICAgICAgUmVmUHRyPEpTT046Ok9i
amVjdD4gc3RlcE9iamVjdDsKKyAgICAgICAgaWYgKCFzdGVwLT5hc09iamVjdChzdGVwT2JqZWN0
KSkKKyAgICAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRB
SUxTKEludmFsaWRQYXJhbWV0ZXIsICJBIHN0ZXAgaW4gdGhlICdzdGVwcycgcGFyYW1ldGVyIHdh
cyBub3QgYW4gb2JqZWN0LiIpOworCisgICAgICAgIFJlZlB0cjxKU09OOjpBcnJheT4gc3RlcFN0
YXRlczsKKyAgICAgICAgaWYgKCFzdGVwT2JqZWN0LT5nZXRBcnJheShBU0NJSUxpdGVyYWwoInN0
YXRlcyIpLCBzdGVwU3RhdGVzKSkKKyAgICAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJ
TkVEX0VSUk9SX0FORF9ERVRBSUxTKEludmFsaWRQYXJhbWV0ZXIsICJBIHN0ZXAgaXMgbWlzc2lu
ZyB0aGUgJ3N0YXRlcycgcHJvcGVydHkuIik7CisKKyAgICAgICAgVmVjdG9yPFNpbXVsYXRlZElu
cHV0S2V5RnJhbWU6OlN0YXRlRW50cnk+IGVudHJpZXM7CisgICAgICAgIGVudHJpZXMucmVzZXJ2
ZUNhcGFjaXR5KHN0ZXBTdGF0ZXMtPmxlbmd0aCgpKTsKKworICAgICAgICBmb3IgKGF1dG8gc3Rh
dGUgOiAqc3RlcFN0YXRlcykgeworICAgICAgICAgICAgUmVmUHRyPEpTT046Ok9iamVjdD4gc3Rh
dGVPYmplY3Q7CisgICAgICAgICAgICBpZiAoIXN0YXRlLT5hc09iamVjdChzdGF0ZU9iamVjdCkp
CisgICAgICAgICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RF
VEFJTFMoSW52YWxpZFBhcmFtZXRlciwgIkVuY291bnRlcmVkIGEgbm9uLW9iamVjdCBzdGVwIHN0
YXRlLiIpOworCisgICAgICAgICAgICBTdHJpbmcgc291cmNlSWQ7CisgICAgICAgICAgICBpZiAo
IXN0YXRlT2JqZWN0LT5nZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJzb3VyY2VJZCIpLCBzb3VyY2VJ
ZCkpCisgICAgICAgICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5E
X0RFVEFJTFMoSW52YWxpZFBhcmFtZXRlciwgIlN0ZXAgc3RhdGUgbGFja3MgcmVxdWlyZWQgJ3Nv
dXJjZUlkJyBwcm9wZXJ0eS4iKTsKKworICAgICAgICAgICAgaWYgKCFzb3VyY2VJZFRvSW5wdXRT
b3VyY2VNYXAuY29udGFpbnMoc291cmNlSWQpKQorICAgICAgICAgICAgICAgIEFTWU5DX0ZBSUxf
V0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKEludmFsaWRQYXJhbWV0ZXIsICJVbmtu
b3duICdzb3VyY2VJZCcgc3BlY2lmaWVkLiIpOworCisgICAgICAgICAgICBTaW11bGF0ZWRJbnB1
dFNvdXJjZSYgaW5wdXRTb3VyY2UgPSAqc291cmNlSWRUb0lucHV0U291cmNlTWFwLmdldChzb3Vy
Y2VJZCk7CisgICAgICAgICAgICBTaW11bGF0ZWRJbnB1dFNvdXJjZVN0YXRlIHNvdXJjZVN0YXRl
IHsgfTsKKworICAgICAgICAgICAgU3RyaW5nIHByZXNzZWRDaGFyS2V5U3RyaW5nOworICAgICAg
ICAgICAgaWYgKHN0YXRlT2JqZWN0LT5nZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJwcmVzc2VkQ2hh
cktleSIpLCBwcmVzc2VkQ2hhcktleVN0cmluZykpCisgICAgICAgICAgICAgICAgc291cmNlU3Rh
dGUucHJlc3NlZENoYXJLZXkgPSBwcmVzc2VkQ2hhcktleVN0cmluZy5jaGFyYWN0ZXJBdCgwKTsK
KworICAgICAgICAgICAgU3RyaW5nIHByZXNzZWRWaXJ0dWFsS2V5U3RyaW5nOworICAgICAgICAg
ICAgaWYgKHN0YXRlT2JqZWN0LT5nZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJwcmVzc2VkVmlydHVh
bEtleSIpLCBwcmVzc2VkVmlydHVhbEtleVN0cmluZykpCisgICAgICAgICAgICAgICAgc291cmNl
U3RhdGUucHJlc3NlZFZpcnR1YWxLZXkgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
SGVscGVyczo6cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1
dG9tYXRpb246OlZpcnR1YWxLZXk+KHByZXNzZWRWaXJ0dWFsS2V5U3RyaW5nKTsKKworICAgICAg
ICAgICAgU3RyaW5nIHByZXNzZWRCdXR0b25TdHJpbmc7CisgICAgICAgICAgICBpZiAoc3RhdGVP
YmplY3QtPmdldFN0cmluZyhBU0NJSUxpdGVyYWwoInByZXNzZWRCdXR0b24iKSwgcHJlc3NlZEJ1
dHRvblN0cmluZykpIHsKKyAgICAgICAgICAgICAgICBhdXRvIHByb3RvY29sQnV0dG9uID0gSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbkhlbHBlcnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0
cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1dHRvbj4ocHJlc3Nl
ZEJ1dHRvblN0cmluZyk7CisgICAgICAgICAgICAgICAgc291cmNlU3RhdGUucHJlc3NlZE1vdXNl
QnV0dG9uID0gcHJvdG9jb2xNb3VzZUJ1dHRvblRvV2ViTW91c2VFdmVudEJ1dHRvbihwcm90b2Nv
bEJ1dHRvbi52YWx1ZV9vcihJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1
dHRvbjo6Tm9uZSkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBSZWZQdHI8SlNPTjo6
T2JqZWN0PiBsb2NhdGlvbk9iamVjdDsKKyAgICAgICAgICAgIGlmIChzdGF0ZU9iamVjdC0+Z2V0
T2JqZWN0KEFTQ0lJTGl0ZXJhbCgibG9jYXRpb24iKSwgbG9jYXRpb25PYmplY3QpKSB7CisgICAg
ICAgICAgICAgICAgaW50IHgsIHk7CisgICAgICAgICAgICAgICAgaWYgKGxvY2F0aW9uT2JqZWN0
LT5nZXRJbnRlZ2VyKEFTQ0lJTGl0ZXJhbCgieCIpLCB4KSAmJiBsb2NhdGlvbk9iamVjdC0+Z2V0
SW50ZWdlcihBU0NJSUxpdGVyYWwoInkiKSwgeSkpCisgICAgICAgICAgICAgICAgICAgIHNvdXJj
ZVN0YXRlLmxvY2F0aW9uID0gV2ViQ29yZTo6SW50UG9pbnQoeCwgeSk7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGludCBwYXJzZWREdXJhdGlvbjsKKyAgICAgICAgICAgIGlmIChzdGF0
ZU9iamVjdC0+Z2V0SW50ZWdlcihBU0NJSUxpdGVyYWwoImR1cmF0aW9uIiksIHBhcnNlZER1cmF0
aW9uKSkKKyAgICAgICAgICAgICAgICBzb3VyY2VTdGF0ZS5kdXJhdGlvbiA9IFNlY29uZHM6OmZy
b21NaWxsaXNlY29uZHMocGFyc2VkRHVyYXRpb24pOworCisgICAgICAgICAgICBlbnRyaWVzLnVu
Y2hlY2tlZEFwcGVuZChzdGQ6OnBhaXI8U2ltdWxhdGVkSW5wdXRTb3VyY2UmLCBTaW11bGF0ZWRJ
bnB1dFNvdXJjZVN0YXRlPiB7IGlucHV0U291cmNlLCBzb3VyY2VTdGF0ZSB9KTsKKyAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAga2V5RnJhbWVzLmFwcGVuZChTaW11bGF0ZWRJbnB1dEtleUZy
YW1lKFdURk1vdmUoZW50cmllcykpKTsKKyAgICB9CisKKyAgICBTaW11bGF0ZWRJbnB1dERpc3Bh
dGNoZXImIGlucHV0RGlzcGF0Y2hlciA9IGlucHV0RGlzcGF0Y2hlckZvclBhZ2UoKnBhZ2UpOwor
ICAgIGlmIChpbnB1dERpc3BhdGNoZXIuaXNBY3RpdmUoKSkgeworICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5E
X0RFVEFJTFMoSW50ZXJuYWxFcnJvciwgIkEgcHJldmlvdXMgaW50ZXJhY3Rpb24gaXMgc3RpbGwg
dW5kZXJ3YXkuIik7CisgICAgfQorCisgICAgLy8gRGVsZWdhdGUgdGhlIHJlc3Qgb2YgwqcxNy40
IERpc3BhdGNoaW5nIEFjdGlvbnMgdG8gdGhlIGRpc3BhdGNoZXIuCisgICAgaW5wdXREaXNwYXRj
aGVyLnJ1bihXVEZNb3ZlKGtleUZyYW1lcyksIG1faW5wdXRTb3VyY2VzLCBbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShz
dGQ6Om9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+IGVycm9yKSB7CisgICAgICAgIGlm
IChlcnJvcikKKyAgICAgICAgICAgIGNhbGxiYWNrLT5zZW5kRmFpbHVyZShlcnJvci52YWx1ZSgp
LnRvUHJvdG9jb2xTdHJpbmcoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNhbGxiYWNr
LT5zZW5kU3VjY2VzcygpOworICAgIH0pOworI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKSB8fCBQ
TEFURk9STShHVEspCit9CisKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmNhbmNlbEludGVy
YWN0aW9uU2VxdWVuY2UoY29uc3QgU3RyaW5nJiBoYW5kbGUsIFJlZjxDYW5jZWxJbnRlcmFjdGlv
blNlcXVlbmNlQ2FsbGJhY2s+JiYgY2FsbGJhY2spCit7CisgICAgLy8gVGhpcyBjb21tYW5kIGlt
cGxlbWVudHMgV2ViS2l0IHN1cHBvcnQgZm9yIMKnMTcuNiBSZWxlYXNlIEFjdGlvbnMuCisKKyNp
ZiAhVVNFKEFQUEtJVCkgJiYgIVBMQVRGT1JNKEdUSykKKyAgICBBU1lOQ19GQUlMX1dJVEhfUFJF
REVGSU5FRF9FUlJPUihOb3RJbXBsZW1lbnRlZCk7CisjZWxzZQorICAgIFdlYlBhZ2VQcm94eSog
cGFnZSA9IHdlYlBhZ2VQcm94eUZvckhhbmRsZShoYW5kbGUpOworICAgIGlmICghcGFnZSkKKyAg
ICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1IoV2luZG93Tm90Rm91bmQpOwor
CisgICAgVmVjdG9yPFNpbXVsYXRlZElucHV0S2V5RnJhbWU+IGtleUZyYW1lcyh7IFNpbXVsYXRl
ZElucHV0S2V5RnJhbWU6OmtleUZyYW1lVG9SZXNldElucHV0U291cmNlcyhtX2lucHV0U291cmNl
cykgfSk7CisgICAgU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyJiBpbnB1dERpc3BhdGNoZXIgPSBp
bnB1dERpc3BhdGNoZXJGb3JQYWdlKCpwYWdlKTsKKyAgICBpbnB1dERpc3BhdGNoZXIuY2FuY2Vs
KCk7CisgICAgCisgICAgaW5wdXREaXNwYXRjaGVyLnJ1bihXVEZNb3ZlKGtleUZyYW1lcyksIG1f
aW5wdXRTb3VyY2VzLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShzdGQ6Om9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5k
RXJyb3I+IGVycm9yKSB7CisgICAgICAgIGlmIChlcnJvcikKKyAgICAgICAgICAgIGNhbGxiYWNr
LT5zZW5kRmFpbHVyZShlcnJvci52YWx1ZSgpLnRvUHJvdG9jb2xTdHJpbmcoKSk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIGNhbGxiYWNrLT5zZW5kU3VjY2VzcygpOworICAgIH0pOworI2Vu
ZGlmIC8vIFBMQVRGT1JNKENPQ09BKSB8fCBQTEFURk9STShHVEspCit9CisKIHZvaWQgV2ViQXV0
b21hdGlvblNlc3Npb246OnRha2VTY3JlZW5zaG90KGNvbnN0IFN0cmluZyYgaGFuZGxlLCBjb25z
dCBTdHJpbmcqIG9wdGlvbmFsRnJhbWVIYW5kbGUsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxOb2Rl
SGFuZGxlLCBjb25zdCBib29sKiBvcHRpb25hbFNjcm9sbEludG9WaWV3SWZOZWVkZWQsIGNvbnN0
IGJvb2wqIG9wdGlvbmFsQ2xpcFRvVmlld3BvcnQsIFJlZjxUYWtlU2NyZWVuc2hvdENhbGxiYWNr
PiYmIGNhbGxiYWNrKQogewogICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHdlYlBhZ2VQcm94eUZv
ckhhbmRsZShoYW5kbGUpOwpAQCAtMTU4OSwxNyArMTg1NCwxNSBAQCB2b2lkIFdlYkF1dG9tYXRp
b25TZXNzaW9uOjpkaWRUYWtlU2NyZWVuc2hvdCh1aW50NjRfdCBjYWxsYmFja0lELCBjb25zdCBT
aGFyZWFibAogLy8gUGxhdGZvcm0tZGVwZW5kZW50IEltcGxlbWVudGF0aW9uIFN0dWJzLgogCiAj
aWYgIVBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKEdUSykKLXZvaWQgV2ViQXV0b21hdGlvblNl
c3Npb246OnBsYXRmb3JtU2ltdWxhdGVNb3VzZUludGVyYWN0aW9uKFdlYktpdDo6V2ViUGFnZVBy
b3h5JiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRv
bWF0aW9uOjpNb3VzZUludGVyYWN0aW9uLCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
OjpNb3VzZUJ1dHRvbiwgV2ViRXZlbnQ6Ok1vZGlmaWVycykKK3ZvaWQgV2ViQXV0b21hdGlvblNl
c3Npb246OnBsYXRmb3JtU2ltdWxhdGVNb3VzZUludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYsIE1v
dXNlSW50ZXJhY3Rpb24sIFdlYk1vdXNlRXZlbnQ6OkJ1dHRvbiwgY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmLCBXZWJFdmVudDo6TW9kaWZpZXJzKQogewogfQogI2VuZGlmIC8vICFQTEFURk9STShN
QUMpICYmICFQTEFURk9STShHVEspCiAKICNpZiAhUExBVEZPUk0oQ09DT0EpICYmICFQTEFURk9S
TShHVEspCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlS2V5U3Ry
b2tlKFdlYlBhZ2VQcm94eSYsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OktleWJv
YXJkSW50ZXJhY3Rpb25UeXBlLCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0
dWFsS2V5KQotewotfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVs
YXRlS2V5U2VxdWVuY2UoV2ViUGFnZVByb3h5JiwgY29uc3QgU3RyaW5nJikKKwordm9pZCBXZWJB
dXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZUtleWJvYXJkSW50ZXJhY3Rpb24oV2Vi
UGFnZVByb3h5JiwgS2V5Ym9hcmRJbnRlcmFjdGlvbiwgc3RkOjpvcHRpb25hbDxWaXJ0dWFsS2V5
Piwgc3RkOjpvcHRpb25hbDxDaGFyS2V5PikKIHsKIH0KICNlbmRpZiAvLyAhUExBVEZPUk0oQ09D
T0EpICYmICFQTEFURk9STShHVEspCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmgKaW5kZXggM2FlMzVlNmY3ZWNk
YzU4YTNkZDk1ZTk4MDgwZWY0YTMyOTVjYTcxOS4uNGQyNDhjYzkxMDJmZDMyNDU5Yzk1MDUyYWQ2
Y2FlMGYzM2IyZTE2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21h
dGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaApAQCAtMzAsNiArMzAsNyBAQAogI2lu
Y2x1ZGUgIkF1dG9tYXRpb25Gcm9udGVuZERpc3BhdGNoZXJzLmgiCiAjaW5jbHVkZSAiQ29ubmVj
dGlvbi5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgorI2luY2x1ZGUgIlNpbXVsYXRl
ZElucHV0RGlzcGF0Y2hlci5oIgogI2luY2x1ZGUgIldlYkV2ZW50LmgiCiAjaW5jbHVkZSA8d3Rm
L0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTc2LDcg
Kzc3LDcgQEAgY2xhc3MgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eTsKIGNsYXNzIFdl
YlBhZ2VQcm94eTsKIGNsYXNzIFdlYlByb2Nlc3NQb29sOwogCi1zdHJ1Y3QgQXV0b21hdGlvbkNv
bW1hbmRFcnJvciB7CitjbGFzcyBBdXRvbWF0aW9uQ29tbWFuZEVycm9yIHsKIHB1YmxpYzoKICAg
ICBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2UgdHlwZTsKICAg
ICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbWVzc2FnZSB7IHN0ZDo6bnVsbG9wdCB9OwpAQCAtOTEs
MTEgKzkyLDE0IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZygpOwogfTsK
IAordXNpbmcgQXV0b21hdGlvbkNvbXBsZXRpb25IYW5kbGVyID0gV1RGOjpDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4pPjsKKwogY2xh
c3MgV2ViQXV0b21hdGlvblNlc3Npb24gZmluYWwgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQ
STo6T2JqZWN0OjpUeXBlOjpBdXRvbWF0aW9uU2Vzc2lvbj4sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VS
ZWNlaXZlcgogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogICAgICwgcHVibGljIEluc3Bl
Y3Rvcjo6UmVtb3RlQXV0b21hdGlvblRhcmdldAogI2VuZGlmCiAgICAgLCBwdWJsaWMgSW5zcGVj
dG9yOjpBdXRvbWF0aW9uQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyCisgICAgLCBwdWJsaWMgU2lt
dWxhdGVkSW5wdXREaXNwYXRjaGVyOjpDbGllbnQKIHsKIHB1YmxpYzoKICAgICBXZWJBdXRvbWF0
aW9uU2Vzc2lvbigpOwpAQCAtMTMxLDYgKzEzNSwxMCBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB2
b2lkIHRlcm1pbmF0ZSgpOwogCisgICAgLy8gU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjpDbGll
bnQgQVBJCisgICAgdm9pZCBzaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5Jiwg
TW91c2VJbnRlcmFjdGlvbiwgV2ViTW91c2VFdmVudDo6QnV0dG9uLCBjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYgbG9jYXRpb25JblZpZXcsIEF1dG9tYXRpb25Db21wbGV0aW9uSGFuZGxlciYmKSBm
aW5hbDsKKyAgICB2b2lkIHNpbXVsYXRlS2V5Ym9hcmRJbnRlcmFjdGlvbihXZWJQYWdlUHJveHkm
LCBLZXlib2FyZEludGVyYWN0aW9uLCBzdGQ6Om9wdGlvbmFsPFZpcnR1YWxLZXk+LCBzdGQ6Om9w
dGlvbmFsPENoYXJLZXk+LCBBdXRvbWF0aW9uQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CisK
ICAgICAvLyBJbnNwZWN0b3I6OkF1dG9tYXRpb25CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgQVBJ
CiAgICAgLy8gTk9URTogdGhlIHNldCBvZiBkZWNsYXJhdGlvbnMgaW5jbHVkZWQgaW4gdGhpcyBp
bnRlcmZhY2UgZGVwZW5kIG9uIHRoZSAicGxhdGZvcm0iIHByb3BlcnR5IGluIEF1dG9tYXRpb24u
anNvbgogICAgIC8vIGFuZCB0aGUgLS1wbGF0Zm9ybSBhcmd1bWVudCBwYXNzZWQgdG8gdGhlIHBy
b3RvY29sIGJpbmRpbmdzIGdlbmVyYXRvci4KQEAgLTE1MSw2ICsxNTksOCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbihjb25zdCBTdHJpbmcmIGJyb3dzaW5n
Q29udGV4dEhhbmRsZSwgY29uc3QgU3RyaW5nKiBvcHRpb25hbEZyYW1lSGFuZGxlLCBjb25zdCBT
dHJpbmcmIGZ1bmN0aW9uLCBjb25zdCBKU09OOjpBcnJheSYgYXJndW1lbnRzLCBjb25zdCBib29s
KiBvcHRpb25hbEV4cGVjdHNJbXBsaWNpdENhbGxiYWNrQXJndW1lbnQsIGNvbnN0IGludCogb3B0
aW9uYWxDYWxsYmFja1RpbWVvdXQsIFJlZjxJbnNwZWN0b3I6OkF1dG9tYXRpb25CYWNrZW5kRGlz
cGF0Y2hlckhhbmRsZXI6OkV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uQ2FsbGJhY2s+JiYpIG92
ZXJyaWRlOwogICAgIHZvaWQgcGVyZm9ybU1vdXNlSW50ZXJhY3Rpb24oY29uc3QgU3RyaW5nJiBo
YW5kbGUsIGNvbnN0IEpTT046Ok9iamVjdCYgcmVxdWVzdGVkUG9zaXRpb24sIGNvbnN0IFN0cmlu
ZyYgbW91c2VCdXR0b24sIGNvbnN0IFN0cmluZyYgbW91c2VJbnRlcmFjdGlvbiwgY29uc3QgSlNP
Tjo6QXJyYXkmIGtleU1vZGlmaWVycywgUmVmPFBlcmZvcm1Nb3VzZUludGVyYWN0aW9uQ2FsbGJh
Y2s+JiYpIGZpbmFsOwogICAgIHZvaWQgcGVyZm9ybUtleWJvYXJkSW50ZXJhY3Rpb25zKGNvbnN0
IFN0cmluZyYgaGFuZGxlLCBjb25zdCBKU09OOjpBcnJheSYgaW50ZXJhY3Rpb25zLCBSZWY8UGVy
Zm9ybUtleWJvYXJkSW50ZXJhY3Rpb25zQ2FsbGJhY2s+JiYpIG92ZXJyaWRlOworICAgIHZvaWQg
cGVyZm9ybUludGVyYWN0aW9uU2VxdWVuY2UoY29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbnN0IEpT
T046OkFycmF5JiBzb3VyY2VzLCBjb25zdCBKU09OOjpBcnJheSYgc3RlcHMsIFJlZjxQZXJmb3Jt
SW50ZXJhY3Rpb25TZXF1ZW5jZUNhbGxiYWNrPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNhbmNl
bEludGVyYWN0aW9uU2VxdWVuY2UoY29uc3QgU3RyaW5nJiBoYW5kbGUsIFJlZjxDYW5jZWxJbnRl
cmFjdGlvblNlcXVlbmNlQ2FsbGJhY2s+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgdGFrZVNjcmVl
bnNob3QoY29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxGcmFtZUhh
bmRsZSwgY29uc3QgU3RyaW5nKiBvcHRpb25hbE5vZGVIYW5kbGUsIGNvbnN0IGJvb2wqIG9wdGlv
bmFsU2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgY29uc3QgYm9vbCogb3B0aW9uYWxDbGlwVG9WaWV3
cG9ydCwgUmVmPFRha2VTY3JlZW5zaG90Q2FsbGJhY2s+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQg
cmVzb2x2ZUNoaWxkRnJhbWVIYW5kbGUoY29uc3QgU3RyaW5nJiBicm93c2luZ0NvbnRleHRIYW5k
bGUsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxGcmFtZUhhbmRsZSwgY29uc3QgaW50KiBvcHRpb25h
bE9yZGluYWwsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxOYW1lLCBjb25zdCBTdHJpbmcqIG9wdGlv
bmFsTm9kZUhhbmRsZSwgUmVmPFJlc29sdmVDaGlsZEZyYW1lSGFuZGxlQ2FsbGJhY2s+JiYpIG92
ZXJyaWRlOwogICAgIHZvaWQgcmVzb2x2ZVBhcmVudEZyYW1lSGFuZGxlKGNvbnN0IFN0cmluZyYg
YnJvd3NpbmdDb250ZXh0SGFuZGxlLCBjb25zdCBTdHJpbmcmIGZyYW1lSGFuZGxlLCBSZWY8UmVz
b2x2ZVBhcmVudEZyYW1lSGFuZGxlQ2FsbGJhY2s+JiYpIG92ZXJyaWRlOwpAQCAtMTc1LDcgKzE4
NSwxMCBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIC8vIEV2ZW50IFNpbXVsYXRpb24gU3VwcG9y
dC4KLSAgICBib29sIGlzU2ltdWxhdGluZ1VzZXJJbnRlcmFjdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fc2ltdWxhdGluZ1VzZXJJbnRlcmFjdGlvbjsgfQorICAgIGJvb2wgaXNTaW11bGF0aW5nVXNl
ckludGVyYWN0aW9uKCkgY29uc3Q7CisgICAgU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyJiBpbnB1
dERpc3BhdGNoZXJGb3JQYWdlKFdlYlBhZ2VQcm94eSYpOworICAgIFNpbXVsYXRlZElucHV0U291
cmNlKiBpbnB1dFNvdXJjZUZvclR5cGUoU2ltdWxhdGVkSW5wdXRTb3VyY2U6OlR5cGUpIGNvbnN0
OworCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGJvb2wgd2FzRXZlbnRTeW50aGVzaXplZEZvckF1
dG9tYXRpb24oTlNFdmVudCAqKTsKICAgICB2b2lkIG1hcmtFdmVudEFzU3ludGhlc2l6ZWRGb3JB
dXRvbWF0aW9uKE5TRXZlbnQgKik7CkBAIC0yMTUsOSArMjI4LDkgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGRpZERlbGV0ZUNvb2tpZSh1aW50NjRfdCBjYWxsYmFja0lELCBjb25zdCBTdHJpbmcmIGVy
cm9yVHlwZSk7CiAKICAgICAvLyBQbGF0Zm9ybS1kZXBlbmRlbnQgaW1wbGVtZW50YXRpb25zLgot
ICAgIHZvaWQgcGxhdGZvcm1TaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5Jiwg
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHZpZXdQb3NpdGlvbiwgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXV0b21hdGlvbjo6TW91c2VJbnRlcmFjdGlvbiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbjo6TW91c2VCdXR0b24sIFdlYkV2ZW50OjpNb2RpZmllcnMpOwotICAgIC8vIFNpbXVs
YXRlcyBhIHNpbmdsZSB2aXJ0dWFsIGtleSBiZWluZyBwcmVzc2VkLCBzdWNoIGFzIENvbnRyb2ws
IEYta2V5cywgTnVtcGFkIGtleXMsIGV0Yy4gYXMgYWxsb3dlZCBieSB0aGUgcHJvdG9jb2wuCi0g
ICAgdm9pZCBwbGF0Zm9ybVNpbXVsYXRlS2V5U3Ryb2tlKFdlYlBhZ2VQcm94eSYsIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OktleWJvYXJkSW50ZXJhY3Rpb25UeXBlLCBJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5KTsKKyAgICB2b2lkIHBsYXRmb3Jt
U2ltdWxhdGVNb3VzZUludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYsIE1vdXNlSW50ZXJhY3Rpb24s
IFdlYk1vdXNlRXZlbnQ6OkJ1dHRvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGxvY2F0aW9u
SW5WaWV3LCBXZWJFdmVudDo6TW9kaWZpZXJzIGtleU1vZGlmaWVycyk7CisgICAgLy8gU2ltdWxh
dGVzIGEgc2luZ2xlIHZpcnR1YWwgb3IgY2hhciBrZXkgYmVpbmcgcHJlc3NlZC9yZWxlYXNlZCwg
c3VjaCBhcyAnYScsIENvbnRyb2wsIEYta2V5cywgTnVtcGFkIGtleXMsIGV0Yy4gYXMgYWxsb3dl
ZCBieSB0aGUgcHJvdG9jb2wuCisgICAgdm9pZCBwbGF0Zm9ybVNpbXVsYXRlS2V5Ym9hcmRJbnRl
cmFjdGlvbihXZWJQYWdlUHJveHkmLCBLZXlib2FyZEludGVyYWN0aW9uLCBzdGQ6Om9wdGlvbmFs
PFZpcnR1YWxLZXk+LCBzdGQ6Om9wdGlvbmFsPENoYXJLZXk+KTsKICAgICAvLyBTaW11bGF0ZXMg
a2V5IHByZXNzZXMgdG8gcHJvZHVjZSB0aGUgY29kZXBvaW50cyBpbiBhIHN0cmluZy4gT25lIG9y
IG1vcmUgY29kZSBwb2ludHMgYXJlIGRlbGl2ZXJlZCBhdG9taWNhbGx5IGF0IGdyYXBoZW1lIGNs
dXN0ZXIgYm91bmRhcmllcy4KICAgICB2b2lkIHBsYXRmb3JtU2ltdWxhdGVLZXlTZXF1ZW5jZShX
ZWJQYWdlUHJveHkmLCBjb25zdCBTdHJpbmcmKTsKICAgICAvLyBHZXQgYmFzZTY0IGVuY29kZWQg
UE5HIGRhdGEgZnJvbSBhIGJpdG1hcC4KQEAgLTI4OSwxMyArMzAyLDE1IEBAIHByaXZhdGU6CiAK
ICAgICBib29sIG1fcGVybWlzc2lvbkZvckdldFVzZXJNZWRpYSB7IHRydWUgfTsKIAotICAgIC8v
IFRydWUgaWYgYSBzeW50aGVzaXplZCBrZXkgZXZlbnQgaXMgc3RpbGwgYmVpbmcgcHJvY2Vzc2Vk
LgotICAgIGJvb2wgbV9zaW11bGF0aW5nVXNlckludGVyYWN0aW9uIHsgZmFsc2UgfTsKLQogICAg
IC8vIEtlZXAgdHJhY2sgb2YgY3VycmVudGx5IGFjdGl2ZSBtb2RpZmllcnMgYWNyb3NzIG11bHRp
cGxlIGtleXN0cm9rZXMuCiAgICAgLy8gTW9zdCBwbGF0Zm9ybXMgZG8gbm90IHRyYWNrIGN1cnJl
bnQgbW9kaWZpZXJzIGZyb20gc3ludGhlc2l6ZWQgZXZlbnRzLgogICAgIHVuc2lnbmVkIG1fY3Vy
cmVudE1vZGlmaWVycyB7IDAgfTsKIAorICAgIC8vIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlciBB
UElzIHRha2UgYSBzZXQgb2YgaW5wdXQgc291cmNlcy4gV2UgYWxzbyBpbnRlcm4gdGhlc2UKKyAg
ICAvLyBzbyB0aGF0IHByZXZpb3VzIGlucHV0IHNvdXJjZSBzdGF0ZSBpcyB1c2VkIGFzIGluaXRp
YWwgc3RhdGUgZm9yIGxhdGVyIGNvbW1hbmRzLgorICAgIEhhc2hTZXQ8UmVmPFNpbXVsYXRlZElu
cHV0U291cmNlPj4gbV9pbnB1dFNvdXJjZXM7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmPFNp
bXVsYXRlZElucHV0RGlzcGF0Y2hlcj4+IG1faW5wdXREaXNwYXRjaGVyc0J5UGFnZTsKKwogI2lm
IEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogICAgIEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVs
KiBtX3JlbW90ZUNoYW5uZWwgeyBudWxscHRyIH07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vZ3RrL1dlYkF1dG9tYXRpb25TZXNzaW9uR3Rr
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vZ3RrL1dlYkF1dG9tYXRp
b25TZXNzaW9uR3RrLmNwcAppbmRleCAyOGNmNzk0OGM4M2I3Y2QxOTJjMDNjMDdhNTJhOTAxZGI2
OGRlY2RhLi5iZjBkNWU2NjlkNTZmZmJhMDEyNWYzYjNlODFjYzY1MDdjYjMwZGRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2d0ay9XZWJBdXRvbWF0aW9u
U2Vzc2lvbkd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9n
dGsvV2ViQXV0b21hdGlvblNlc3Npb25HdGsuY3BwCkBAIC00OCwxNSArNDgsMTUgQEAgc3RhdGlj
IHVuc2lnbmVkIG1vZGlmaWVyc1RvRXZlbnRTdGF0ZShXZWJFdmVudDo6TW9kaWZpZXJzIG1vZGlm
aWVycykKICAgICByZXR1cm4gc3RhdGU7CiB9CiAKLXN0YXRpYyB1bnNpZ25lZCBtb3VzZUJ1dHRv
blRvR2RrQnV0dG9uKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9u
IGJ1dHRvbikKK3N0YXRpYyB1bnNpZ25lZCBtb3VzZUJ1dHRvblRvR2RrQnV0dG9uKFdlYk1vdXNl
RXZlbnQ6OkJ1dHRvbiBidXR0b24pCiB7CiAgICAgc3dpdGNoIChidXR0b24pIHsKLSAgICBjYXNl
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9uOjpOb25lOgotICAg
IGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VCdXR0b246OkxlZnQ6
CisgICAgY2FzZSBXZWJNb3VzZUV2ZW50OjpOb0J1dHRvbjoKKyAgICBjYXNlIFdlYk1vdXNlRXZl
bnQ6OkxlZnRCdXR0b246CiAgICAgICAgIHJldHVybiBHREtfQlVUVE9OX1BSSU1BUlk7Ci0gICAg
Y2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1dHRvbjo6TWlkZGxl
OgorICAgIGNhc2UgV2ViTW91c2VFdmVudDo6TWlkZGxlQnV0dG9uOgogICAgICAgICByZXR1cm4g
R0RLX0JVVFRPTl9NSURETEU7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uOjpNb3VzZUJ1dHRvbjo6UmlnaHQ6CisgICAgY2FzZSBXZWJNb3VzZUV2ZW50OjpSaWdodEJ1
dHRvbjoKICAgICAgICAgcmV0dXJuIEdES19CVVRUT05fU0VDT05EQVJZOwogICAgIH0KICAgICBy
ZXR1cm4gR0RLX0JVVFRPTl9QUklNQVJZOwpAQCAtMTAxLDMwICsxMDEsMzAgQEAgc3RhdGljIHZv
aWQgZG9Nb3Rpb25FdmVudChHdGtXaWRnZXQqIHdpZGdldCwgY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmIGxvY2F0aW9uLAogICAgIGd0a19tYWluX2RvX2V2ZW50KGV2ZW50LmdldCgpKTsKIH0KIAot
dm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZU1vdXNlSW50ZXJhY3Rp
b24oV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgdmlld1Bvc2l0
aW9uLCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUludGVyYWN0aW9uIGlu
dGVyYWN0aW9uLCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1dHRvbiBi
dXR0b24sIFdlYkV2ZW50OjpNb2RpZmllcnMga2V5TW9kaWZpZXJzKQordm9pZCBXZWJBdXRvbWF0
aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5
JiBwYWdlLCBNb3VzZUludGVyYWN0aW9uIGludGVyYWN0aW9uLCBXZWJNb3VzZUV2ZW50OjpCdXR0
b24gYnV0dG9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbG9jYXRpb25JblZpZXcsIFdlYkV2
ZW50OjpNb2RpZmllcnMga2V5TW9kaWZpZXJzKQogewogICAgIHVuc2lnbmVkIGdka0J1dHRvbiA9
IG1vdXNlQnV0dG9uVG9HZGtCdXR0b24oYnV0dG9uKTsKICAgICB1bnNpZ25lZCBzdGF0ZSA9IG1v
ZGlmaWVyc1RvRXZlbnRTdGF0ZShrZXlNb2RpZmllcnMpOwogCiAgICAgc3dpdGNoIChpbnRlcmFj
dGlvbikgewotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VJ
bnRlcmFjdGlvbjo6TW92ZToKLSAgICAgICAgZG9Nb3Rpb25FdmVudChwYWdlLnZpZXdXaWRnZXQo
KSwgdmlld1Bvc2l0aW9uLCBzdGF0ZSk7CisgICAgY2FzZSBNb3VzZUludGVyYWN0aW9uOjpNb3Zl
OgorICAgICAgICBkb01vdGlvbkV2ZW50KHBhZ2Uudmlld1dpZGdldCgpLCBsb2NhdGlvbkluVmll
dywgc3RhdGUpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkF1dG9tYXRpb246Ok1vdXNlSW50ZXJhY3Rpb246OkRvd246Ci0gICAgICAgIGRvTW91c2VFdmVu
dChHREtfQlVUVE9OX1BSRVNTLCBwYWdlLnZpZXdXaWRnZXQoKSwgdmlld1Bvc2l0aW9uLCBnZGtC
dXR0b24sIHN0YXRlKTsKKyAgICBjYXNlIE1vdXNlSW50ZXJhY3Rpb246OkRvd246CisgICAgICAg
IGRvTW91c2VFdmVudChHREtfQlVUVE9OX1BSRVNTLCBwYWdlLnZpZXdXaWRnZXQoKSwgbG9jYXRp
b25JblZpZXcsIGdka0J1dHRvbiwgc3RhdGUpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlSW50ZXJhY3Rpb246OlVwOgotICAg
ICAgICBkb01vdXNlRXZlbnQoR0RLX0JVVFRPTl9SRUxFQVNFLCBwYWdlLnZpZXdXaWRnZXQoKSwg
dmlld1Bvc2l0aW9uLCBnZGtCdXR0b24sIHN0YXRlKTsKKyAgICBjYXNlIE1vdXNlSW50ZXJhY3Rp
b246OlVwOgorICAgICAgICBkb01vdXNlRXZlbnQoR0RLX0JVVFRPTl9SRUxFQVNFLCBwYWdlLnZp
ZXdXaWRnZXQoKSwgbG9jYXRpb25JblZpZXcsIGdka0J1dHRvbiwgc3RhdGUpOwogICAgICAgICBi
cmVhazsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlSW50
ZXJhY3Rpb246OlNpbmdsZUNsaWNrOgotICAgICAgICBkb01vdXNlRXZlbnQoR0RLX0JVVFRPTl9Q
UkVTUywgcGFnZS52aWV3V2lkZ2V0KCksIHZpZXdQb3NpdGlvbiwgZ2RrQnV0dG9uLCBzdGF0ZSk7
Ci0gICAgICAgIGRvTW91c2VFdmVudChHREtfQlVUVE9OX1JFTEVBU0UsIHBhZ2Uudmlld1dpZGdl
dCgpLCB2aWV3UG9zaXRpb24sIGdka0J1dHRvbiwgc3RhdGUpOworICAgIGNhc2UgTW91c2VJbnRl
cmFjdGlvbjo6U2luZ2xlQ2xpY2s6CisgICAgICAgIGRvTW91c2VFdmVudChHREtfQlVUVE9OX1BS
RVNTLCBwYWdlLnZpZXdXaWRnZXQoKSwgbG9jYXRpb25JblZpZXcsIGdka0J1dHRvbiwgc3RhdGUp
OworICAgICAgICBkb01vdXNlRXZlbnQoR0RLX0JVVFRPTl9SRUxFQVNFLCBwYWdlLnZpZXdXaWRn
ZXQoKSwgbG9jYXRpb25JblZpZXcsIGdka0J1dHRvbiwgc3RhdGUpOwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlSW50ZXJhY3Rp
b246OkRvdWJsZUNsaWNrOgotICAgICAgICBkb01vdXNlRXZlbnQoR0RLX0JVVFRPTl9QUkVTUywg
cGFnZS52aWV3V2lkZ2V0KCksIHZpZXdQb3NpdGlvbiwgZ2RrQnV0dG9uLCBzdGF0ZSk7Ci0gICAg
ICAgIGRvTW91c2VFdmVudChHREtfQlVUVE9OX1JFTEVBU0UsIHBhZ2Uudmlld1dpZGdldCgpLCB2
aWV3UG9zaXRpb24sIGdka0J1dHRvbiwgc3RhdGUpOwotICAgICAgICBkb01vdXNlRXZlbnQoR0RL
X0JVVFRPTl9QUkVTUywgcGFnZS52aWV3V2lkZ2V0KCksIHZpZXdQb3NpdGlvbiwgZ2RrQnV0dG9u
LCBzdGF0ZSk7Ci0gICAgICAgIGRvTW91c2VFdmVudChHREtfQlVUVE9OX1JFTEVBU0UsIHBhZ2Uu
dmlld1dpZGdldCgpLCB2aWV3UG9zaXRpb24sIGdka0J1dHRvbiwgc3RhdGUpOworICAgIGNhc2Ug
TW91c2VJbnRlcmFjdGlvbjo6RG91YmxlQ2xpY2s6CisgICAgICAgIGRvTW91c2VFdmVudChHREtf
QlVUVE9OX1BSRVNTLCBwYWdlLnZpZXdXaWRnZXQoKSwgbG9jYXRpb25JblZpZXcsIGdka0J1dHRv
biwgc3RhdGUpOworICAgICAgICBkb01vdXNlRXZlbnQoR0RLX0JVVFRPTl9SRUxFQVNFLCBwYWdl
LnZpZXdXaWRnZXQoKSwgbG9jYXRpb25JblZpZXcsIGdka0J1dHRvbiwgc3RhdGUpOworICAgICAg
ICBkb01vdXNlRXZlbnQoR0RLX0JVVFRPTl9QUkVTUywgcGFnZS52aWV3V2lkZ2V0KCksIGxvY2F0
aW9uSW5WaWV3LCBnZGtCdXR0b24sIHN0YXRlKTsKKyAgICAgICAgZG9Nb3VzZUV2ZW50KEdES19C
VVRUT05fUkVMRUFTRSwgcGFnZS52aWV3V2lkZ2V0KCksIGxvY2F0aW9uSW5WaWV3LCBnZGtCdXR0
b24sIHN0YXRlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogfQpAQCAtMjgwLDIwICsyODAsMjcg
QEAgc3RhdGljIGludCBrZXlDb2RlRm9yVmlydHVhbEtleShJbnNwZWN0b3I6OlByb3RvY29sOjpB
dXRvbWF0aW9uOjpWaXJ0dWFsS2V5IGtleSwKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBXZWJB
dXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZUtleVN0cm9rZShXZWJQYWdlUHJveHkm
IHBhZ2UsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OktleWJvYXJkSW50ZXJhY3Rp
b25UeXBlIGludGVyYWN0aW9uLCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0
dWFsS2V5IGtleSkKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVL
ZXlib2FyZEludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgS2V5Ym9hcmRJbnRlcmFjdGlv
biBpbnRlcmFjdGlvbiwgc3RkOjpvcHRpb25hbDxWaXJ0dWFsS2V5PiB2aXJ0dWFsS2V5LCBzdGQ6
Om9wdGlvbmFsPENoYXJLZXk+IGNoYXJLZXkpCiB7CisgICAgQVNTRVJUKHZpcnR1YWxLZXkuaGFz
X3ZhbHVlKCkgfHwgY2hhcktleS5oYXNfdmFsdWUoKSk7CisKICAgICBHZGtNb2RpZmllclR5cGUg
dXBkYXRlU3RhdGU7Ci0gICAgYXV0byBrZXlDb2RlID0ga2V5Q29kZUZvclZpcnR1YWxLZXkoa2V5
LCB1cGRhdGVTdGF0ZSk7CisgICAgaW50IGtleUNvZGU7CisgICAgaWYgKHZpcnR1YWxLZXkuaGFz
X3ZhbHVlKCkpCisgICAgICAgIGtleUNvZGUgPSBrZXlDb2RlRm9yVmlydHVhbEtleSh2aXJ0dWFs
S2V5LnZhbHVlKCksIHVwZGF0ZVN0YXRlKTsKKyAgICBlbHNlCisgICAgICAgIGtleUNvZGUgPSBn
ZGtfdW5pY29kZV90b19rZXl2YWwoZ191dGY4X2dldF9jaGFyKCZjaGFyS2V5LnZhbHVlKCkpKTsK
KwogICAgIHN3aXRjaCAoaW50ZXJhY3Rpb24pIHsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkF1dG9tYXRpb246OktleWJvYXJkSW50ZXJhY3Rpb25UeXBlOjpLZXlQcmVzczoKKyAgICBj
YXNlIEtleWJvYXJkSW50ZXJhY3Rpb246OktleVByZXNzOgogICAgICAgICBtX2N1cnJlbnRNb2Rp
ZmllcnMgfD0gdXBkYXRlU3RhdGU7CiAgICAgICAgIGRvS2V5U3Ryb2tlRXZlbnQoR0RLX0tFWV9Q
UkVTUywgcGFnZS52aWV3V2lkZ2V0KCksIGtleUNvZGUsIG1fY3VycmVudE1vZGlmaWVycyk7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6
S2V5Ym9hcmRJbnRlcmFjdGlvblR5cGU6OktleVJlbGVhc2U6CisgICAgY2FzZSBLZXlib2FyZElu
dGVyYWN0aW9uOjpLZXlSZWxlYXNlOgogICAgICAgICBtX2N1cnJlbnRNb2RpZmllcnMgJj0gfnVw
ZGF0ZVN0YXRlOwogICAgICAgICBkb0tleVN0cm9rZUV2ZW50KEdES19LRVlfUkVMRUFTRSwgcGFn
ZS52aWV3V2lkZ2V0KCksIGtleUNvZGUsIG1fY3VycmVudE1vZGlmaWVycyk7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6S2V5Ym9hcmRJ
bnRlcmFjdGlvblR5cGU6Okluc2VydEJ5S2V5OgorICAgIGNhc2UgS2V5Ym9hcmRJbnRlcmFjdGlv
bjo6SW5zZXJ0QnlLZXk6CiAgICAgICAgIGRvS2V5U3Ryb2tlRXZlbnQoR0RLX0tFWV9QUkVTUywg
cGFnZS52aWV3V2lkZ2V0KCksIGtleUNvZGUsIG1fY3VycmVudE1vZGlmaWVycywgdHJ1ZSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0F1dG9tYXRpb24vaW9zL1dlYkF1dG9tYXRpb25TZXNzaW9uSU9TLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQXV0b21hdGlvbi9pb3MvV2ViQXV0b21hdGlvblNlc3Npb25JT1MubW0KaW5k
ZXggNWY3NGFkZWRmNzVmZTU2OTJjMjhkODQ0ODU5MmYyMjM1NGI2OGQ2Yy4uYTRjZGRhMmM1ZjFm
ZDZiMGFjZmY1ZjJhMDUxNGEwZGJhYjhiYjk1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQXV0b21hdGlvbi9pb3MvV2ViQXV0b21hdGlvblNlc3Npb25JT1MubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9pb3MvV2ViQXV0b21hdGlvblNlc3Np
b25JT1MubW0KQEAgLTY1LDI2ICs2NSwyOCBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpz
ZW5kU3ludGhlc2l6ZWRFdmVudHNUb1BhZ2UoV2ViUGFnZVByb3h5JiBwYWdlLCBOU0FycgogCiAj
cHJhZ21hIG1hcmsgQ29tbWFuZHMgZm9yIFBsYXRmb3JtOiAnaU9TJwogCi12b2lkIFdlYkF1dG9t
YXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlS2V5U3Ryb2tlKFdlYlBhZ2VQcm94eSYgcGFn
ZSwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6S2V5Ym9hcmRJbnRlcmFjdGlvblR5
cGUgaW50ZXJhY3Rpb24sIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxL
ZXkga2V5KQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZUtleWJv
YXJkSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBLZXlib2FyZEludGVyYWN0aW9uIGlu
dGVyYWN0aW9uLCBzdGQ6Om9wdGlvbmFsPFZpcnR1YWxLZXk+IHZpcnR1YWxLZXksIHN0ZDo6b3B0
aW9uYWw8Q2hhcktleT4gY2hhcktleSkKIHsKKyAgICBBU1NFUlQodmlydHVhbEtleS5oYXNfdmFs
dWUoKSB8fCBjaGFyS2V5Lmhhc192YWx1ZSgpKTsKKwogICAgIC8vIFRoZSBtb2RpZmllcnMgY2hh
bmdlZCBieSB0aGUgdmlydHVhbCBrZXkgd2hlbiBpdCBpcyBwcmVzc2VkIG9yIHJlbGVhc2VkLgog
ICAgIFdlYkV2ZW50RmxhZ3MgY2hhbmdlZE1vZGlmaWVycyA9IDA7CiAKICAgICAvLyBGaWd1cmUg
b3V0IHRoZSBlZmZlY3RzIG9mIHN0aWNreSBtb2RpZmllcnMuCi0gICAgc3dpdGNoIChrZXkpIHsK
LSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OlNo
aWZ0OgorICAgIHN3aXRjaCAodmlydHVhbEtleSkgeworICAgIGNhc2UgVmlydHVhbEtleTo6U2hp
ZnQ6CiAgICAgICAgIGNoYW5nZWRNb2RpZmllcnMgfD0gV2ViRXZlbnRGbGFnTWFza1NoaWZ0Owog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246
OlZpcnR1YWxLZXk6OkNvbnRyb2w6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpDb250cm9sOgogICAg
ICAgICBjaGFuZ2VkTW9kaWZpZXJzIHw9IFdlYkV2ZW50RmxhZ01hc2tDb250cm9sOwogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1
YWxLZXk6OkFsdGVybmF0ZToKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkFsdGVybmF0ZToKICAgICAg
ICAgY2hhbmdlZE1vZGlmaWVycyB8PSBXZWJFdmVudEZsYWdNYXNrQWx0ZXJuYXRlOwogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1
YWxLZXk6Ok1ldGE6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpNZXRhOgogICAgICAgICAvLyBUaGUg
J21ldGEnIGtleSBkb2VzIG5vdCBleGlzdCBvbiBBcHBsZSBrZXlib2FyZHMgYW5kIGlzIHVzdWFs
bHkKICAgICAgICAgLy8gbWFwcGVkIHRvIHRoZSBDb21tYW5kIGtleSB3aGVuIHVzaW5nIHRoaXJk
LXBhcnR5IGtleWJvYXJkcy4KLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRp
b246OlZpcnR1YWxLZXk6OkNvbW1hbmQ6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpDb21tYW5kOgog
ICAgICAgICBjaGFuZ2VkTW9kaWZpZXJzIHw9IFdlYkV2ZW50RmxhZ01hc2tDb21tYW5kOwogICAg
ICAgICBicmVhazsKICAgICBkZWZhdWx0OgpAQCAtOTQsOCArOTYsMTggQEAgdm9pZCBXZWJBdXRv
bWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZUtleVN0cm9rZShXZWJQYWdlUHJveHkmIHBh
Z2UsIEluc3BlY3QKICAgICAvLyBVSUtpdCBkb2VzIG5vdCBzZW5kIGtleSBjb2RlcyBmb3Igdmly
dHVhbCBrZXlzIGV2ZW4gZm9yIGEgaGFyZHdhcmUga2V5Ym9hcmQuCiAgICAgLy8gSW5zdGVhZCwg
aXQgc2VuZHMgc2luZ2xlIHVuaWNoYXJzIGFuZCBXZWJDb3JlIG1hcHMgdGhlc2UgdG8gIndpbmRv
d3MiIGtleSBjb2Rlcy4KICAgICAvLyBTeW50aGVzaXplIGEgc2luZ2xlIHVuaWNoYXIgc3VjaCB0
aGF0IHRoZSBjb3JyZWN0IGtleSBjb2RlIGlzIGluZmVycmVkLgotICAgIHN0ZDo6b3B0aW9uYWw8
dW5pY2hhcj4gY2hhckNvZGUgPSBjaGFyQ29kZUZvclZpcnR1YWxLZXkoa2V5KTsKLSAgICBzdGQ6
Om9wdGlvbmFsPHVuaWNoYXI+IGNoYXJDb2RlSWdub3JpbmdNb2RpZmllcnMgPSBjaGFyQ29kZUln
bm9yaW5nTW9kaWZpZXJzRm9yVmlydHVhbEtleShrZXkpOworICAgIHN0ZDo6b3B0aW9uYWw8dW5p
Y2hhcj4gY2hhckNvZGU7CisgICAgc3RkOjpvcHRpb25hbDx1bmljaGFyPiBjaGFyQ29kZUlnbm9y
aW5nTW9kaWZpZXJzOworCisgICAgaWYgKHZpcnR1YWxLZXkuaGFzX3ZhbHVlKCkpIHsKKyAgICAg
ICAgY2hhckNvZGUgPSBjaGFyQ29kZUZvclZpcnR1YWxLZXkodmlydHVhbEtleS52YWx1ZSgpKTsK
KyAgICAgICAgY2hhckNvZGVJZ25vcmluZ01vZGlmaWVycyA9IGNoYXJDb2RlSWdub3JpbmdNb2Rp
ZmllcnNGb3JWaXJ0dWFsS2V5KHZpcnR1YWxLZXkudmFsdWUoKSk7CisgICAgfQorCisgICAgaWYg
KGNoYXJLZXkuaGFzX3ZhbHVlKCkpIHsKKyAgICAgICAgY2hhckNvZGUgPSAodW5pY2hhciljaGFy
S2V5LnZhbHVlKCk7CisgICAgICAgIGNoYXJDb2RlSWdub3JpbmdNb2RpZmllcnMgPSAodW5pY2hh
ciljaGFyS2V5LnZhbHVlKCk7CisgICAgfQogCiAgICAgLy8gRklYTUU6IGNvbnNpZGVyIHVzaW5n
IFVJS2l0IFNQSSB0byBub3JtYWxpemUgJ2NoYXJhY3RlcnMnLCBpLmUuLCBjaGFuZ2luZyAqIHRv
IFNoaWZ0LTgsCiAgICAgLy8gYW5kIHBhc3NpbmcgdGhhdCBpbiB0byBjaGFyYWN0ZXJzSWdub3Jp
bmdNb2RpZmllcnMuIFRoaXMgaXMgcHJvYmFibHkgbm90IHdvcnRoIHRoZSB0cm91YmxlCkBAIC0x
MTUsMTkgKzEyNywxOSBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVs
YXRlS2V5U3Ryb2tlKFdlYlBhZ2VQcm94eSYgcGFnZSwgSW5zcGVjdAogICAgIGF1dG8gZXZlbnRz
VG9CZVNlbnQgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKIAogICAg
IHN3aXRjaCAoaW50ZXJhY3Rpb24pIHsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1
dG9tYXRpb246OktleWJvYXJkSW50ZXJhY3Rpb25UeXBlOjpLZXlQcmVzczogeworICAgIGNhc2Ug
S2V5Ym9hcmRJbnRlcmFjdGlvbjo6S2V5UHJlc3M6IHsKICAgICAgICAgbV9jdXJyZW50TW9kaWZp
ZXJzIHw9IGNoYW5nZWRNb2RpZmllcnM7CiAKICAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9i
amVjdDpbW1s6OldlYkV2ZW50IGFsbG9jXSBpbml0V2l0aEtleUV2ZW50VHlwZTpXZWJFdmVudEtl
eURvd24gdGltZVN0YW1wOkNGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpIGNoYXJhY3RlcnM6Y2hh
cmFjdGVycyBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6dW5tb2RpZmllZENoYXJhY3RlcnMg
bW9kaWZpZXJzOm1fY3VycmVudE1vZGlmaWVycyBpc1JlcGVhdGluZzpOTyB3aXRoRmxhZ3M6aW5w
dXRGbGFncyB3aXRoSW5wdXRNYW5hZ2VySGludDpuaWwga2V5Q29kZTprZXlDb2RlIGlzVGFiS2V5
OmlzVGFiS2V5XSBhdXRvcmVsZWFzZV1dOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgY2Fz
ZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpLZXlib2FyZEludGVyYWN0aW9uVHlw
ZTo6S2V5UmVsZWFzZTogeworICAgIGNhc2UgS2V5Ym9hcmRJbnRlcmFjdGlvbjo6S2V5UmVsZWFz
ZTogewogICAgICAgICBtX2N1cnJlbnRNb2RpZmllcnMgJj0gfmNoYW5nZWRNb2RpZmllcnM7CiAK
ICAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbW1s6OldlYkV2ZW50IGFsbG9jXSBp
bml0V2l0aEtleUV2ZW50VHlwZTpXZWJFdmVudEtleVVwIHRpbWVTdGFtcDpDRkFic29sdXRlVGlt
ZUdldEN1cnJlbnQoKSBjaGFyYWN0ZXJzOmNoYXJhY3RlcnMgY2hhcmFjdGVyc0lnbm9yaW5nTW9k
aWZpZXJzOnVubW9kaWZpZWRDaGFyYWN0ZXJzIG1vZGlmaWVyczptX2N1cnJlbnRNb2RpZmllcnMg
aXNSZXBlYXRpbmc6Tk8gd2l0aEZsYWdzOmlucHV0RmxhZ3Mgd2l0aElucHV0TWFuYWdlckhpbnQ6
bmlsIGtleUNvZGU6a2V5Q29kZSBpc1RhYktleTppc1RhYktleV0gYXV0b3JlbGVhc2VdXTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21h
dGlvbjo6S2V5Ym9hcmRJbnRlcmFjdGlvblR5cGU6Okluc2VydEJ5S2V5OiB7CisgICAgY2FzZSBL
ZXlib2FyZEludGVyYWN0aW9uOjpJbnNlcnRCeUtleTogewogICAgICAgICAvLyBNb2RpZmllcnMg
b25seSBjaGFuZ2Ugd2l0aCBLZXlQcmVzcyBvciBLZXlSZWxlYXNlLCB0aGlzIGNvZGUgcGF0aCBp
cyBmb3Igc2luZ2xlIGNoYXJhY3RlcnMuCiAgICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmpl
Y3Q6W1tbOjpXZWJFdmVudCBhbGxvY10gaW5pdFdpdGhLZXlFdmVudFR5cGU6V2ViRXZlbnRLZXlE
b3duIHRpbWVTdGFtcDpDRkFic29sdXRlVGltZUdldEN1cnJlbnQoKSBjaGFyYWN0ZXJzOmNoYXJh
Y3RlcnMgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOnVubW9kaWZpZWRDaGFyYWN0ZXJzIG1v
ZGlmaWVyczptX2N1cnJlbnRNb2RpZmllcnMgaXNSZXBlYXRpbmc6Tk8gd2l0aEZsYWdzOmlucHV0
RmxhZ3Mgd2l0aElucHV0TWFuYWdlckhpbnQ6bmlsIGtleUNvZGU6a2V5Q29kZSBpc1RhYktleTpp
c1RhYktleV0gYXV0b3JlbGVhc2VdXTsKICAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVj
dDpbW1s6OldlYkV2ZW50IGFsbG9jXSBpbml0V2l0aEtleUV2ZW50VHlwZTpXZWJFdmVudEtleVVw
IHRpbWVTdGFtcDpDRkFic29sdXRlVGltZUdldEN1cnJlbnQoKSBjaGFyYWN0ZXJzOmNoYXJhY3Rl
cnMgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOnVubW9kaWZpZWRDaGFyYWN0ZXJzIG1vZGlm
aWVyczptX2N1cnJlbnRNb2RpZmllcnMgaXNSZXBlYXRpbmc6Tk8gd2l0aEZsYWdzOmlucHV0Rmxh
Z3Mgd2l0aElucHV0TWFuYWdlckhpbnQ6bmlsIGtleUNvZGU6a2V5Q29kZSBpc1RhYktleTppc1Rh
YktleV0gYXV0b3JlbGVhc2VdXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0F1dG9tYXRpb24vbWFjL1dlYkF1dG9tYXRpb25TZXNzaW9uTWFjLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQXV0b21hdGlvbi9tYWMvV2ViQXV0b21hdGlvblNlc3Npb25NYWMubW0KaW5k
ZXggM2I1ZTU1OGM2NGMzZGE3NjdhOTg5ZWQ2NDIwYTc3NWYyYzFhNjEzMi4uZjQ2MGEzODY1M2Rj
NjRlZTY2MTc5MDczMGMxOGNiZmI0ZTBmMmI2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQXV0b21hdGlvbi9tYWMvV2ViQXV0b21hdGlvblNlc3Npb25NYWMubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9tYWMvV2ViQXV0b21hdGlvblNlc3Np
b25NYWMubW0KQEAgLTExOCwxMSArMTE4LDExIEBAIGJvb2wgV2ViQXV0b21hdGlvblNlc3Npb246
Ondhc0V2ZW50U3ludGhlc2l6ZWRGb3JBdXRvbWF0aW9uKE5TRXZlbnQgKmV2ZW50KQogCiAjcHJh
Z21hIG1hcmsgUGxhdGZvcm0tZGVwZW5kZW50IEltcGxlbWVudGF0aW9ucwogCi12b2lkIFdlYkF1
dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlTW91c2VJbnRlcmFjdGlvbihXZWJQYWdl
UHJveHkmIHBhZ2UsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiB2aWV3UG9zaXRpb24sIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlSW50ZXJhY3Rpb24gaW50ZXJhY3Rpb24s
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9uIGJ1dHRvbiwgV2Vi
RXZlbnQ6Ok1vZGlmaWVycyBrZXlNb2RpZmllcnMpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9u
OjpwbGF0Zm9ybVNpbXVsYXRlTW91c2VJbnRlcmFjdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIE1v
dXNlSW50ZXJhY3Rpb24gaW50ZXJhY3Rpb24sIFdlYk1vdXNlRXZlbnQ6OkJ1dHRvbiBidXR0b24s
IGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBsb2NhdGlvbkluVmlldywgV2ViRXZlbnQ6Ok1vZGlm
aWVycyBrZXlNb2RpZmllcnMpCiB7CiAgICAgSW50UmVjdCB3aW5kb3dSZWN0OwotICAgIHBhZ2Uu
cm9vdFZpZXdUb1dpbmRvdyhJbnRSZWN0KHZpZXdQb3NpdGlvbiwgSW50U2l6ZSgpKSwgd2luZG93
UmVjdCk7Ci0gICAgSW50UG9pbnQgd2luZG93UG9zaXRpb24gPSB3aW5kb3dSZWN0LmxvY2F0aW9u
KCk7CisgICAgcGFnZS5yb290Vmlld1RvV2luZG93KEludFJlY3QobG9jYXRpb25JblZpZXcsIElu
dFNpemUoKSksIHdpbmRvd1JlY3QpOworICAgIEludFBvaW50IGxvY2F0aW9uSW5XaW5kb3cgPSB3
aW5kb3dSZWN0LmxvY2F0aW9uKCk7CiAKICAgICBOU0V2ZW50TW9kaWZpZXJGbGFncyBtb2RpZmll
cnMgPSAwOwogICAgIGlmIChrZXlNb2RpZmllcnMgJiBXZWJFdmVudDo6TWV0YUtleSkKQEAgLTE0
NCwyMCArMTQ0LDIwIEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxh
dGVNb3VzZUludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwKICAgICBOU0V2ZW50VHlwZSBk
cmFnRXZlbnRUeXBlID0gKE5TRXZlbnRUeXBlKTA7CiAgICAgTlNFdmVudFR5cGUgdXBFdmVudFR5
cGUgPSAoTlNFdmVudFR5cGUpMDsKICAgICBzd2l0Y2ggKGJ1dHRvbikgewotICAgIGNhc2UgSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VCdXR0b246Ok5vbmU6CisgICAgY2Fz
ZSBXZWJNb3VzZUV2ZW50OjpOb0J1dHRvbjoKICAgICAgICAgZG93bkV2ZW50VHlwZSA9IHVwRXZl
bnRUeXBlID0gZHJhZ0V2ZW50VHlwZSA9IE5TRXZlbnRUeXBlTW91c2VNb3ZlZDsKICAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1
dHRvbjo6TGVmdDoKKyAgICBjYXNlIFdlYk1vdXNlRXZlbnQ6OkxlZnRCdXR0b246CiAgICAgICAg
IGRvd25FdmVudFR5cGUgPSBOU0V2ZW50VHlwZUxlZnRNb3VzZURvd247CiAgICAgICAgIGRyYWdF
dmVudFR5cGUgPSBOU0V2ZW50VHlwZUxlZnRNb3VzZURyYWdnZWQ7CiAgICAgICAgIHVwRXZlbnRU
eXBlID0gTlNFdmVudFR5cGVMZWZ0TW91c2VVcDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1dHRvbjo6TWlkZGxlOgorICAg
IGNhc2UgV2ViTW91c2VFdmVudDo6TWlkZGxlQnV0dG9uOgogICAgICAgICBkb3duRXZlbnRUeXBl
ID0gTlNFdmVudFR5cGVPdGhlck1vdXNlRG93bjsKICAgICAgICAgZHJhZ0V2ZW50VHlwZSA9IE5T
RXZlbnRUeXBlTGVmdE1vdXNlRHJhZ2dlZDsKICAgICAgICAgdXBFdmVudFR5cGUgPSBOU0V2ZW50
VHlwZU90aGVyTW91c2VVcDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlBy
b3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1dHRvbjo6UmlnaHQ6CisgICAgY2FzZSBXZWJNb3Vz
ZUV2ZW50OjpSaWdodEJ1dHRvbjoKICAgICAgICAgZG93bkV2ZW50VHlwZSA9IE5TRXZlbnRUeXBl
UmlnaHRNb3VzZURvd247CiAgICAgICAgIHVwRXZlbnRUeXBlID0gTlNFdmVudFR5cGVSaWdodE1v
dXNlVXA7CiAgICAgICAgIGJyZWFrOwpAQCAtMTY4LDU2ICsxNjgsNTYgQEAgdm9pZCBXZWJBdXRv
bWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24oV2ViUGFnZVBy
b3h5JiBwYWdlLAogICAgIE5TSW50ZWdlciBldmVudE51bWJlciA9IHN5bnRoZXNpemVkTW91c2VF
dmVudE1hZ2ljRXZlbnROdW1iZXI7CiAKICAgICBzd2l0Y2ggKGludGVyYWN0aW9uKSB7Ci0gICAg
Y2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUludGVyYWN0aW9uOjpN
b3ZlOgorICAgIGNhc2UgTW91c2VJbnRlcmFjdGlvbjo6TW92ZToKICAgICAgICAgQVNTRVJUKGRy
YWdFdmVudFR5cGUpOwotICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltOU0V2ZW50
IG1vdXNlRXZlbnRXaXRoVHlwZTpkcmFnRXZlbnRUeXBlIGxvY2F0aW9uOndpbmRvd1Bvc2l0aW9u
IG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJzIHRpbWVzdGFtcDp0aW1lc3RhbXAgd2luZG93TnVtYmVy
OndpbmRvd051bWJlciBjb250ZXh0Om5pbCBldmVudE51bWJlcjpldmVudE51bWJlciBjbGlja0Nv
dW50OjAgcHJlc3N1cmU6MC4wZl1dOworICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0
OltOU0V2ZW50IG1vdXNlRXZlbnRXaXRoVHlwZTpkcmFnRXZlbnRUeXBlIGxvY2F0aW9uOmxvY2F0
aW9uSW5XaW5kb3cgbW9kaWZpZXJGbGFnczptb2RpZmllcnMgdGltZXN0YW1wOnRpbWVzdGFtcCB3
aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmlsIGV2ZW50TnVtYmVyOmV2ZW50TnVt
YmVyIGNsaWNrQ291bnQ6MCBwcmVzc3VyZTowLjBmXV07CiAgICAgICAgIGJyZWFrOwotICAgIGNh
c2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VJbnRlcmFjdGlvbjo6RG93
bjoKKyAgICBjYXNlIE1vdXNlSW50ZXJhY3Rpb246OkRvd246CiAgICAgICAgIEFTU0VSVChkb3du
RXZlbnRUeXBlKTsKIAogICAgICAgICAvLyBIYXJkLWNvZGUgdGhlIGNsaWNrIGNvdW50IHRvIG9u
ZSwgc2luY2UgY2xpZW50cyBkb24ndCBleHBlY3Qgc3VjY2Vzc2l2ZSBzaW11bGF0ZWQKICAgICAg
ICAgLy8gZG93bi91cCBldmVudHMgdG8gYmUgcG90ZW50aWFsbHkgY291bnRlZCBhcyBhIGRvdWJs
ZSBjbGljayBldmVudC4KLSAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbTlNFdmVu
dCBtb3VzZUV2ZW50V2l0aFR5cGU6ZG93bkV2ZW50VHlwZSBsb2NhdGlvbjp3aW5kb3dQb3NpdGlv
biBtb2RpZmllckZsYWdzOm1vZGlmaWVycyB0aW1lc3RhbXA6dGltZXN0YW1wIHdpbmRvd051bWJl
cjp3aW5kb3dOdW1iZXIgY29udGV4dDpuaWwgZXZlbnROdW1iZXI6ZXZlbnROdW1iZXIgY2xpY2tD
b3VudDoxIHByZXNzdXJlOldlYkNvcmU6OkZvcmNlQXRDbGlja11dOworICAgICAgICBbZXZlbnRz
VG9CZVNlbnQgYWRkT2JqZWN0OltOU0V2ZW50IG1vdXNlRXZlbnRXaXRoVHlwZTpkb3duRXZlbnRU
eXBlIGxvY2F0aW9uOmxvY2F0aW9uSW5XaW5kb3cgbW9kaWZpZXJGbGFnczptb2RpZmllcnMgdGlt
ZXN0YW1wOnRpbWVzdGFtcCB3aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmlsIGV2
ZW50TnVtYmVyOmV2ZW50TnVtYmVyIGNsaWNrQ291bnQ6MSBwcmVzc3VyZTpXZWJDb3JlOjpGb3Jj
ZUF0Q2xpY2tdXTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29s
OjpBdXRvbWF0aW9uOjpNb3VzZUludGVyYWN0aW9uOjpVcDoKKyAgICBjYXNlIE1vdXNlSW50ZXJh
Y3Rpb246OlVwOgogICAgICAgICBBU1NFUlQodXBFdmVudFR5cGUpOwogCiAgICAgICAgIC8vIEhh
cmQtY29kZSB0aGUgY2xpY2sgY291bnQgdG8gb25lLCBzaW5jZSBjbGllbnRzIGRvbid0IGV4cGVj
dCBzdWNjZXNzaXZlIHNpbXVsYXRlZAogICAgICAgICAvLyBkb3duL3VwIGV2ZW50cyB0byBiZSBw
b3RlbnRpYWxseSBjb3VudGVkIGFzIGEgZG91YmxlIGNsaWNrIGV2ZW50LgotICAgICAgICBbZXZl
bnRzVG9CZVNlbnQgYWRkT2JqZWN0OltOU0V2ZW50IG1vdXNlRXZlbnRXaXRoVHlwZTp1cEV2ZW50
VHlwZSBsb2NhdGlvbjp3aW5kb3dQb3NpdGlvbiBtb2RpZmllckZsYWdzOm1vZGlmaWVycyB0aW1l
c3RhbXA6dGltZXN0YW1wIHdpbmRvd051bWJlcjp3aW5kb3dOdW1iZXIgY29udGV4dDpuaWwgZXZl
bnROdW1iZXI6ZXZlbnROdW1iZXIgY2xpY2tDb3VudDoxIHByZXNzdXJlOjAuMGZdXTsKKyAgICAg
ICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6
dXBFdmVudFR5cGUgbG9jYXRpb246bG9jYXRpb25JbldpbmRvdyBtb2RpZmllckZsYWdzOm1vZGlm
aWVycyB0aW1lc3RhbXA6dGltZXN0YW1wIHdpbmRvd051bWJlcjp3aW5kb3dOdW1iZXIgY29udGV4
dDpuaWwgZXZlbnROdW1iZXI6ZXZlbnROdW1iZXIgY2xpY2tDb3VudDoxIHByZXNzdXJlOjAuMGZd
XTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uOjpNb3VzZUludGVyYWN0aW9uOjpTaW5nbGVDbGljazoKKyAgICBjYXNlIE1vdXNlSW50ZXJh
Y3Rpb246OlNpbmdsZUNsaWNrOgogICAgICAgICBBU1NFUlQodXBFdmVudFR5cGUpOwogICAgICAg
ICBBU1NFUlQoZG93bkV2ZW50VHlwZSk7CiAKICAgICAgICAgLy8gU2VuZCBzZXBhcmF0ZSBkb3du
IGFuZCB1cCBldmVudHMuIFdlYkNvcmUgd2lsbCBzZWUgdGhpcyBhcyBhIHNpbmdsZS1jbGljayBl
dmVudC4KLSAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbTlNFdmVudCBtb3VzZUV2
ZW50V2l0aFR5cGU6ZG93bkV2ZW50VHlwZSBsb2NhdGlvbjp3aW5kb3dQb3NpdGlvbiBtb2RpZmll
ckZsYWdzOm1vZGlmaWVycyB0aW1lc3RhbXA6dGltZXN0YW1wIHdpbmRvd051bWJlcjp3aW5kb3dO
dW1iZXIgY29udGV4dDpuaWwgZXZlbnROdW1iZXI6ZXZlbnROdW1iZXIgY2xpY2tDb3VudDoxIHBy
ZXNzdXJlOldlYkNvcmU6OkZvcmNlQXRDbGlja11dOwotICAgICAgICBbZXZlbnRzVG9CZVNlbnQg
YWRkT2JqZWN0OltOU0V2ZW50IG1vdXNlRXZlbnRXaXRoVHlwZTp1cEV2ZW50VHlwZSBsb2NhdGlv
bjp3aW5kb3dQb3NpdGlvbiBtb2RpZmllckZsYWdzOm1vZGlmaWVycyB0aW1lc3RhbXA6dGltZXN0
YW1wIHdpbmRvd051bWJlcjp3aW5kb3dOdW1iZXIgY29udGV4dDpuaWwgZXZlbnROdW1iZXI6ZXZl
bnROdW1iZXIgY2xpY2tDb3VudDoxIHByZXNzdXJlOjAuMGZdXTsKKyAgICAgICAgW2V2ZW50c1Rv
QmVTZW50IGFkZE9iamVjdDpbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6ZG93bkV2ZW50VHlw
ZSBsb2NhdGlvbjpsb2NhdGlvbkluV2luZG93IG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJzIHRpbWVz
dGFtcDp0aW1lc3RhbXAgd2luZG93TnVtYmVyOndpbmRvd051bWJlciBjb250ZXh0Om5pbCBldmVu
dE51bWJlcjpldmVudE51bWJlciBjbGlja0NvdW50OjEgcHJlc3N1cmU6V2ViQ29yZTo6Rm9yY2VB
dENsaWNrXV07CisgICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmplY3Q6W05TRXZlbnQgbW91
c2VFdmVudFdpdGhUeXBlOnVwRXZlbnRUeXBlIGxvY2F0aW9uOmxvY2F0aW9uSW5XaW5kb3cgbW9k
aWZpZXJGbGFnczptb2RpZmllcnMgdGltZXN0YW1wOnRpbWVzdGFtcCB3aW5kb3dOdW1iZXI6d2lu
ZG93TnVtYmVyIGNvbnRleHQ6bmlsIGV2ZW50TnVtYmVyOmV2ZW50TnVtYmVyIGNsaWNrQ291bnQ6
MSBwcmVzc3VyZTowLjBmXV07CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VJbnRlcmFjdGlvbjo6RG91YmxlQ2xpY2s6CisgICAg
Y2FzZSBNb3VzZUludGVyYWN0aW9uOjpEb3VibGVDbGljazoKICAgICAgICAgQVNTRVJUKHVwRXZl
bnRUeXBlKTsKICAgICAgICAgQVNTRVJUKGRvd25FdmVudFR5cGUpOwogCiAgICAgICAgIC8vIFNl
bmQgbXVsdGlwbGUgZG93biBhbmQgdXAgZXZlbnRzIHdpdGggcHJvcGVyIGNsaWNrIGNvdW50Lgog
ICAgICAgICAvLyBXZWJDb3JlIHdpbGwgc2VlIHRoaXMgYXMgYSBzaW5nbGUtY2xpY2sgZXZlbnQg
dGhlbiBkb3VibGUtY2xpY2sgZXZlbnQuCi0gICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmpl
Y3Q6W05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOmRvd25FdmVudFR5cGUgbG9jYXRpb246d2lu
ZG93UG9zaXRpb24gbW9kaWZpZXJGbGFnczptb2RpZmllcnMgdGltZXN0YW1wOnRpbWVzdGFtcCB3
aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmlsIGV2ZW50TnVtYmVyOmV2ZW50TnVt
YmVyIGNsaWNrQ291bnQ6MSBwcmVzc3VyZTpXZWJDb3JlOjpGb3JjZUF0Q2xpY2tdXTsKLSAgICAg
ICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6
dXBFdmVudFR5cGUgbG9jYXRpb246d2luZG93UG9zaXRpb24gbW9kaWZpZXJGbGFnczptb2RpZmll
cnMgdGltZXN0YW1wOnRpbWVzdGFtcCB3aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6
bmlsIGV2ZW50TnVtYmVyOmV2ZW50TnVtYmVyIGNsaWNrQ291bnQ6MSBwcmVzc3VyZTowLjBmXV07
Ci0gICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmplY3Q6W05TRXZlbnQgbW91c2VFdmVudFdp
dGhUeXBlOmRvd25FdmVudFR5cGUgbG9jYXRpb246d2luZG93UG9zaXRpb24gbW9kaWZpZXJGbGFn
czptb2RpZmllcnMgdGltZXN0YW1wOnRpbWVzdGFtcCB3aW5kb3dOdW1iZXI6d2luZG93TnVtYmVy
IGNvbnRleHQ6bmlsIGV2ZW50TnVtYmVyOmV2ZW50TnVtYmVyIGNsaWNrQ291bnQ6MiBwcmVzc3Vy
ZTpXZWJDb3JlOjpGb3JjZUF0Q2xpY2tdXTsKLSAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9i
amVjdDpbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6dXBFdmVudFR5cGUgbG9jYXRpb246d2lu
ZG93UG9zaXRpb24gbW9kaWZpZXJGbGFnczptb2RpZmllcnMgdGltZXN0YW1wOnRpbWVzdGFtcCB3
aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmlsIGV2ZW50TnVtYmVyOmV2ZW50TnVt
YmVyIGNsaWNrQ291bnQ6MiBwcmVzc3VyZTowLjBmXV07CisgICAgICAgIFtldmVudHNUb0JlU2Vu
dCBhZGRPYmplY3Q6W05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOmRvd25FdmVudFR5cGUgbG9j
YXRpb246bG9jYXRpb25JbldpbmRvdyBtb2RpZmllckZsYWdzOm1vZGlmaWVycyB0aW1lc3RhbXA6
dGltZXN0YW1wIHdpbmRvd051bWJlcjp3aW5kb3dOdW1iZXIgY29udGV4dDpuaWwgZXZlbnROdW1i
ZXI6ZXZlbnROdW1iZXIgY2xpY2tDb3VudDoxIHByZXNzdXJlOldlYkNvcmU6OkZvcmNlQXRDbGlj
a11dOworICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltOU0V2ZW50IG1vdXNlRXZl
bnRXaXRoVHlwZTp1cEV2ZW50VHlwZSBsb2NhdGlvbjpsb2NhdGlvbkluV2luZG93IG1vZGlmaWVy
RmxhZ3M6bW9kaWZpZXJzIHRpbWVzdGFtcDp0aW1lc3RhbXAgd2luZG93TnVtYmVyOndpbmRvd051
bWJlciBjb250ZXh0Om5pbCBldmVudE51bWJlcjpldmVudE51bWJlciBjbGlja0NvdW50OjEgcHJl
c3N1cmU6MC4wZl1dOworICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltOU0V2ZW50
IG1vdXNlRXZlbnRXaXRoVHlwZTpkb3duRXZlbnRUeXBlIGxvY2F0aW9uOmxvY2F0aW9uSW5XaW5k
b3cgbW9kaWZpZXJGbGFnczptb2RpZmllcnMgdGltZXN0YW1wOnRpbWVzdGFtcCB3aW5kb3dOdW1i
ZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmlsIGV2ZW50TnVtYmVyOmV2ZW50TnVtYmVyIGNsaWNr
Q291bnQ6MiBwcmVzc3VyZTpXZWJDb3JlOjpGb3JjZUF0Q2xpY2tdXTsKKyAgICAgICAgW2V2ZW50
c1RvQmVTZW50IGFkZE9iamVjdDpbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6dXBFdmVudFR5
cGUgbG9jYXRpb246bG9jYXRpb25JbldpbmRvdyBtb2RpZmllckZsYWdzOm1vZGlmaWVycyB0aW1l
c3RhbXA6dGltZXN0YW1wIHdpbmRvd051bWJlcjp3aW5kb3dOdW1iZXIgY29udGV4dDpuaWwgZXZl
bnROdW1iZXI6ZXZlbnROdW1iZXIgY2xpY2tDb3VudDoyIHByZXNzdXJlOjAuMGZdXTsKICAgICB9
CiAKICAgICBzZW5kU3ludGhlc2l6ZWRFdmVudHNUb1BhZ2UocGFnZSwgZXZlbnRzVG9CZVNlbnQu
Z2V0KCkpOwogfQogCi1zdGF0aWMgYm9vbCBrZXlIYXNTdGlja3lNb2RpZmllcihJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5IGtleSkKK3N0YXRpYyBib29sIHZpcnR1
YWxLZXlIYXNTdGlja3lNb2RpZmllcihWaXJ0dWFsS2V5IGtleSkKIHsKICAgICAvLyBSZXR1cm5z
IHdoZXRoZXIgdGhlIGtleSdzIG1vZGlmaWVyIGZsYWdzIHNob3VsZCBhZmZlY3Qgb3RoZXIgZXZl
bnRzIHdoaWxlIHByZXNzZWQgZG93bi4KICAgICBzd2l0Y2ggKGtleSkgewotICAgIGNhc2UgSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6U2hpZnQ6Ci0gICAgY2Fz
ZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpDb250cm9sOgot
ICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6QWx0
ZXJuYXRlOgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVh
bEtleTo6TWV0YToKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZp
cnR1YWxLZXk6OkNvbW1hbmQ6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpTaGlmdDoKKyAgICBjYXNl
IFZpcnR1YWxLZXk6OkNvbnRyb2w6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpBbHRlcm5hdGU6Cisg
ICAgY2FzZSBWaXJ0dWFsS2V5OjpNZXRhOgorICAgIGNhc2UgVmlydHVhbEtleTo6Q29tbWFuZDoK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBkZWZhdWx0OgpAQCAtMjI1LDIwMSArMjI1LDIw
MSBAQCBzdGF0aWMgYm9vbCBrZXlIYXNTdGlja3lNb2RpZmllcihJbnNwZWN0b3I6OlByb3RvY29s
OjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5IGtleQogICAgIH0KIH0KIAotc3RhdGljIGludCBrZXlD
b2RlRm9yVmlydHVhbEtleShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFs
S2V5IGtleSkKK3N0YXRpYyBpbnQga2V5Q29kZUZvclZpcnR1YWxLZXkoVmlydHVhbEtleSBrZXkp
CiB7CiAgICAgLy8gVGhlIGxpa2VseSBrZXlDb2RlIGZvciB0aGUgdmlydHVhbCBrZXkgYXMgZGVm
aW5lZCBpbiA8SElUb29sYm94L0V2ZW50cy5oPi4KICAgICBzd2l0Y2ggKGtleSkgewotICAgIGNh
c2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6U2hpZnQ6Cisg
ICAgY2FzZSBWaXJ0dWFsS2V5OjpTaGlmdDoKICAgICAgICAgcmV0dXJuIGtWS19TaGlmdDsKLSAg
ICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkNvbnRy
b2w6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpDb250cm9sOgogICAgICAgICByZXR1cm4ga1ZLX0Nv
bnRyb2w7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFs
S2V5OjpBbHRlcm5hdGU6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpBbHRlcm5hdGU6CiAgICAgICAg
IHJldHVybiBrVktfT3B0aW9uOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21h
dGlvbjo6VmlydHVhbEtleTo6TWV0YToKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok1ldGE6CiAgICAg
ICAgIC8vIFRoZSAnbWV0YScga2V5IGRvZXMgbm90IGV4aXN0IG9uIEFwcGxlIGtleWJvYXJkcyBh
bmQgaXMgdXN1YWxseQogICAgICAgICAvLyBtYXBwZWQgdG8gdGhlIENvbW1hbmQga2V5IHdoZW4g
dXNpbmcgdGhpcmQtcGFydHkga2V5Ym9hcmRzLgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6Q29tbWFuZDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6
OkNvbW1hbmQ6CiAgICAgICAgIHJldHVybiBrVktfQ29tbWFuZDsKLSAgICBjYXNlIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkhlbHA6CisgICAgY2FzZSBWaXJ0
dWFsS2V5OjpIZWxwOgogICAgICAgICByZXR1cm4ga1ZLX0hlbHA7Ci0gICAgY2FzZSBJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpCYWNrc3BhY2U6CisgICAgY2Fz
ZSBWaXJ0dWFsS2V5OjpCYWNrc3BhY2U6CiAgICAgICAgIHJldHVybiBrVktfRGVsZXRlOwotICAg
IGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6VGFiOgor
ICAgIGNhc2UgVmlydHVhbEtleTo6VGFiOgogICAgICAgICByZXR1cm4ga1ZLX1RhYjsKLSAgICBj
YXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkNsZWFyOgor
ICAgIGNhc2UgVmlydHVhbEtleTo6Q2xlYXI6CiAgICAgICAgIHJldHVybiBrVktfQU5TSV9LZXlw
YWRDbGVhcjsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1
YWxLZXk6OkVudGVyOgorICAgIGNhc2UgVmlydHVhbEtleTo6RW50ZXI6CiAgICAgICAgIHJldHVy
biBrVktfQU5TSV9LZXlwYWRFbnRlcjsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1
dG9tYXRpb246OlZpcnR1YWxLZXk6OlBhdXNlOgorICAgIGNhc2UgVmlydHVhbEtleTo6UGF1c2U6
CiAgICAgICAgIC8vIFRoZSAncGF1c2UnIGtleSBkb2VzIG5vdCBleGlzdCBvbiBBcHBsZSBrZXli
b2FyZHMgYW5kIGhhcyBubyBrZXlDb2RlLgogICAgICAgICAvLyBUaGUgc2VtYW50aWNzIGFyZSB1
bmNsZWFyIHNvIGp1c3QgYWJvcnQgYW5kIGRvIG5vdGhpbmcuCiAgICAgICAgIHJldHVybiAwOwot
ICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6Q2Fu
Y2VsOgorICAgIGNhc2UgVmlydHVhbEtleTo6Q2FuY2VsOgogICAgICAgICAvLyBUaGUgJ2NhbmNl
bCcga2V5IGRvZXMgbm90IGV4aXN0IG9uIEFwcGxlIGtleWJvYXJkcyBhbmQgaGFzIG5vIGtleUNv
ZGUuCiAgICAgICAgIC8vIEFjY29yZGluZyB0byB0aGUgaW50ZXJuZXQgaXRzIGZ1bmN0aW9uYWxp
dHkgaXMgc2ltaWxhciB0byAnRXNjYXBlJy4KLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkVzY2FwZToKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkVz
Y2FwZToKICAgICAgICAgcmV0dXJuIGtWS19Fc2NhcGU7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlBy
b3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpQYWdlVXA6CisgICAgY2FzZSBWaXJ0dWFs
S2V5OjpQYWdlVXA6CiAgICAgICAgIHJldHVybiBrVktfUGFnZVVwOwotICAgIGNhc2UgSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6UGFnZURvd246CisgICAgY2Fz
ZSBWaXJ0dWFsS2V5OjpQYWdlRG93bjoKICAgICAgICAgcmV0dXJuIGtWS19QYWdlRG93bjsKLSAg
ICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkVuZDoK
KyAgICBjYXNlIFZpcnR1YWxLZXk6OkVuZDoKICAgICAgICAgcmV0dXJuIGtWS19FbmQ7Ci0gICAg
Y2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpIb21lOgor
ICAgIGNhc2UgVmlydHVhbEtleTo6SG9tZToKICAgICAgICAgcmV0dXJuIGtWS19Ib21lOwotICAg
IGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TGVmdEFy
cm93OgorICAgIGNhc2UgVmlydHVhbEtleTo6TGVmdEFycm93OgogICAgICAgICByZXR1cm4ga1ZL
X0xlZnRBcnJvdzsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZp
cnR1YWxLZXk6OlVwQXJyb3c6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpVcEFycm93OgogICAgICAg
ICByZXR1cm4ga1ZLX1VwQXJyb3c7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRv
bWF0aW9uOjpWaXJ0dWFsS2V5OjpSaWdodEFycm93OgorICAgIGNhc2UgVmlydHVhbEtleTo6Umln
aHRBcnJvdzoKICAgICAgICAgcmV0dXJuIGtWS19SaWdodEFycm93OwotICAgIGNhc2UgSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RG93bkFycm93OgorICAgIGNh
c2UgVmlydHVhbEtleTo6RG93bkFycm93OgogICAgICAgICByZXR1cm4ga1ZLX0Rvd25BcnJvdzsK
LSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Oklu
c2VydDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6Okluc2VydDoKICAgICAgICAgLy8gVGhlICdpbnNl
cnQnIGtleSBkb2VzIG5vdCBleGlzdCBvbiBBcHBsZSBrZXlib2FyZHMgYW5kIGhhcyBubyBrZXlD
b2RlLgogICAgICAgICAvLyBUaGUgc2VtYW50aWNzIGFyZSB1bmNsZWFyIHNvIGp1c3QgYWJvcnQg
YW5kIGRvIG5vdGhpbmcuCiAgICAgICAgIHJldHVybiAwOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RGVsZXRlOgorICAgIGNhc2UgVmlydHVh
bEtleTo6RGVsZXRlOgogICAgICAgICByZXR1cm4ga1ZLX0ZvcndhcmREZWxldGU7Ci0gICAgY2Fz
ZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpTcGFjZToKKyAg
ICBjYXNlIFZpcnR1YWxLZXk6OlNwYWNlOgogICAgICAgICByZXR1cm4ga1ZLX1NwYWNlOwotICAg
IGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6U2VtaWNv
bG9uOgorICAgIGNhc2UgVmlydHVhbEtleTo6U2VtaWNvbG9uOgogICAgICAgICByZXR1cm4ga1ZL
X0FOU0lfU2VtaWNvbG9uOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlv
bjo6VmlydHVhbEtleTo6RXF1YWxzOgorICAgIGNhc2UgVmlydHVhbEtleTo6RXF1YWxzOgogICAg
ICAgICByZXR1cm4ga1ZLX0FOU0lfRXF1YWw7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29s
OjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpSZXR1cm46CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpS
ZXR1cm46CiAgICAgICAgIHJldHVybiBrVktfUmV0dXJuOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkMDoKKyAgICBjYXNlIFZp
cnR1YWxLZXk6Ok51bWJlclBhZDA6CiAgICAgICAgIHJldHVybiBrVktfQU5TSV9LZXlwYWQwOwot
ICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVt
YmVyUGFkMToKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZDE6CiAgICAgICAgIHJldHVy
biBrVktfQU5TSV9LZXlwYWQxOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21h
dGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkMjoKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJl
clBhZDI6CiAgICAgICAgIHJldHVybiBrVktfQU5TSV9LZXlwYWQyOwotICAgIGNhc2UgSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkMzoKKyAgICBj
YXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZDM6CiAgICAgICAgIHJldHVybiBrVktfQU5TSV9LZXlw
YWQzOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtl
eTo6TnVtYmVyUGFkNDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZDQ6CiAgICAgICAg
IHJldHVybiBrVktfQU5TSV9LZXlwYWQ0OwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkNToKKyAgICBjYXNlIFZpcnR1YWxLZXk6
Ok51bWJlclBhZDU6CiAgICAgICAgIHJldHVybiBrVktfQU5TSV9LZXlwYWQ1OwotICAgIGNhc2Ug
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkNjoK
KyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZDY6CiAgICAgICAgIHJldHVybiBrVktfQU5T
SV9LZXlwYWQ2OwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6Vmly
dHVhbEtleTo6TnVtYmVyUGFkNzoKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZDc6CiAg
ICAgICAgIHJldHVybiBrVktfQU5TSV9LZXlwYWQ3OwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkODoKKyAgICBjYXNlIFZpcnR1
YWxLZXk6Ok51bWJlclBhZDg6CiAgICAgICAgIHJldHVybiBrVktfQU5TSV9LZXlwYWQ4OwotICAg
IGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVy
UGFkOToKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZDk6CiAgICAgICAgIHJldHVybiBr
VktfQU5TSV9LZXlwYWQ5OwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlv
bjo6VmlydHVhbEtleTo6TnVtYmVyUGFkTXVsdGlwbHk6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpO
dW1iZXJQYWRNdWx0aXBseToKICAgICAgICAgcmV0dXJuIGtWS19BTlNJX0tleXBhZE11bHRpcGx5
OwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6
TnVtYmVyUGFkQWRkOgorICAgIGNhc2UgVmlydHVhbEtleTo6TnVtYmVyUGFkQWRkOgogICAgICAg
ICByZXR1cm4ga1ZLX0FOU0lfS2V5cGFkUGx1czsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZFN1YnRyYWN0OgorICAgIGNhc2Ug
VmlydHVhbEtleTo6TnVtYmVyUGFkU3VidHJhY3Q6CiAgICAgICAgIHJldHVybiBrVktfQU5TSV9L
ZXlwYWRNaW51czsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZp
cnR1YWxLZXk6Ok51bWJlclBhZFNlcGFyYXRvcjoKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJl
clBhZFNlcGFyYXRvcjoKICAgICAgICAgLy8gVGhlICdTZXBhcmF0b3InIGtleSBpcyBvbmx5IHBy
ZXNlbnQgb24gYSBmZXcgaW50ZXJuYXRpb25hbCBrZXlib2FyZHMuCiAgICAgICAgIC8vIEl0IGlz
IHVzdWFsbHkgbWFwcGVkIHRvIHRoZSBzYW1lIGNoYXJhY3RlciBhcyBEZWNpbWFsICgnLicgb3Ig
JywnKS4KICAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29s
OjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWREZWNpbWFsOgorICAgIGNhc2UgVmly
dHVhbEtleTo6TnVtYmVyUGFkRGVjaW1hbDoKICAgICAgICAgcmV0dXJuIGtWS19BTlNJX0tleXBh
ZERlY2ltYWw7CiAgICAgICAgIC8vIEZJWE1FOiB0aGlzIG1pZ2h0IGJlIGxvY2FsZS1kZXBlbmRl
bnQuIFNlZSB0aGUgYWJvdmUgY29tbWVudC4KLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZERpdmlkZToKKyAgICBjYXNlIFZpcnR1
YWxLZXk6Ok51bWJlclBhZERpdmlkZToKICAgICAgICAgcmV0dXJuIGtWS19BTlNJX0tleXBhZERp
dmlkZTsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxL
ZXk6OkZ1bmN0aW9uMToKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkZ1bmN0aW9uMToKICAgICAgICAg
cmV0dXJuIGtWS19GMTsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246
OlZpcnR1YWxLZXk6OkZ1bmN0aW9uMjoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkZ1bmN0aW9uMjoK
ICAgICAgICAgcmV0dXJuIGtWS19GMjsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1
dG9tYXRpb246OlZpcnR1YWxLZXk6OkZ1bmN0aW9uMzoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkZ1
bmN0aW9uMzoKICAgICAgICAgcmV0dXJuIGtWS19GMzsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkZ1bmN0aW9uNDoKKyAgICBjYXNlIFZpcnR1
YWxLZXk6OkZ1bmN0aW9uNDoKICAgICAgICAgcmV0dXJuIGtWS19GNDsKLSAgICBjYXNlIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkZ1bmN0aW9uNToKKyAgICBj
YXNlIFZpcnR1YWxLZXk6OkZ1bmN0aW9uNToKICAgICAgICAgcmV0dXJuIGtWS19GNTsKLSAgICBj
YXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkZ1bmN0aW9u
NjoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkZ1bmN0aW9uNjoKICAgICAgICAgcmV0dXJuIGtWS19G
NjsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6
OkZ1bmN0aW9uNzoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkZ1bmN0aW9uNzoKICAgICAgICAgcmV0
dXJuIGtWS19GNzsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZp
cnR1YWxLZXk6OkZ1bmN0aW9uODoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkZ1bmN0aW9uODoKICAg
ICAgICAgcmV0dXJuIGtWS19GODsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9t
YXRpb246OlZpcnR1YWxLZXk6OkZ1bmN0aW9uOToKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkZ1bmN0
aW9uOToKICAgICAgICAgcmV0dXJuIGtWS19GOTsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkZ1bmN0aW9uMTA6CisgICAgY2FzZSBWaXJ0dWFs
S2V5OjpGdW5jdGlvbjEwOgogICAgICAgICByZXR1cm4ga1ZLX0YxMDsKLSAgICBjYXNlIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkZ1bmN0aW9uMTE6CisgICAg
Y2FzZSBWaXJ0dWFsS2V5OjpGdW5jdGlvbjExOgogICAgICAgICByZXR1cm4ga1ZLX0YxMTsKLSAg
ICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkZ1bmN0
aW9uMTI6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpGdW5jdGlvbjEyOgogICAgICAgICByZXR1cm4g
a1ZLX0YxMjsKICAgICB9CiB9CiAKLXN0YXRpYyBOU0V2ZW50TW9kaWZpZXJGbGFncyBldmVudE1v
ZGlmaWVyRmxhZ3NGb3JWaXJ0dWFsS2V5KEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246
OlZpcnR1YWxLZXkga2V5KQorc3RhdGljIE5TRXZlbnRNb2RpZmllckZsYWdzIGV2ZW50TW9kaWZp
ZXJGbGFnc0ZvclZpcnR1YWxLZXkoVmlydHVhbEtleSBrZXkpCiB7CiAgICAgLy8gQ29tcHV0ZXMg
dGhlIG1vZGlmaWVycyBjaGFuZ2VkIGJ5IHRoZSB2aXJ0dWFsIGtleSB3aGVuIGl0IGlzIHByZXNz
ZWQgb3IgcmVsZWFzZWQuCiAgICAgLy8gVGhlIG1hcHBpbmcgZnJvbSBrZXlzIHRvIG1vZGlmaWVy
cyBpcyBzcGVjaWZpZWQgaW4gdGhlIGRvY3VtZW50YXRpb24gZm9yIE5TRXZlbnQuCiAgICAgc3dp
dGNoIChrZXkpIHsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZp
cnR1YWxLZXk6OlNoaWZ0OgorICAgIGNhc2UgVmlydHVhbEtleTo6U2hpZnQ6CiAgICAgICAgIHJl
dHVybiBOU0V2ZW50TW9kaWZpZXJGbGFnU2hpZnQ7CiAKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkNvbnRyb2w6CisgICAgY2FzZSBWaXJ0dWFs
S2V5OjpDb250cm9sOgogICAgICAgICByZXR1cm4gTlNFdmVudE1vZGlmaWVyRmxhZ0NvbnRyb2w7
CiAKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6
OkFsdGVybmF0ZToKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkFsdGVybmF0ZToKICAgICAgICAgcmV0
dXJuIE5TRXZlbnRNb2RpZmllckZsYWdPcHRpb247CiAKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok1ldGE6CisgICAgY2FzZSBWaXJ0dWFsS2V5
OjpNZXRhOgogICAgICAgICAvLyBUaGUgJ21ldGEnIGtleSBkb2VzIG5vdCBleGlzdCBvbiBBcHBs
ZSBrZXlib2FyZHMgYW5kIGlzIHVzdWFsbHkKICAgICAgICAgLy8gbWFwcGVkIHRvIHRoZSBDb21t
YW5kIGtleSB3aGVuIHVzaW5nIHRoaXJkLXBhcnR5IGtleWJvYXJkcy4KLSAgICBjYXNlIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkNvbW1hbmQ6CisgICAgY2Fz
ZSBWaXJ0dWFsS2V5OjpDb21tYW5kOgogICAgICAgICByZXR1cm4gTlNFdmVudE1vZGlmaWVyRmxh
Z0NvbW1hbmQ7CiAKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZp
cnR1YWxLZXk6OkhlbHA6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpIZWxwOgogICAgICAgICByZXR1
cm4gTlNFdmVudE1vZGlmaWVyRmxhZ0hlbHAgfCBOU0V2ZW50TW9kaWZpZXJGbGFnRnVuY3Rpb247
CiAKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6
OlBhZ2VVcDoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1
YWxLZXk6OlBhZ2VEb3duOgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlv
bjo6VmlydHVhbEtleTo6RW5kOgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21h
dGlvbjo6VmlydHVhbEtleTo6SG9tZToKKyAgICBjYXNlIFZpcnR1YWxLZXk6OlBhZ2VVcDoKKyAg
ICBjYXNlIFZpcnR1YWxLZXk6OlBhZ2VEb3duOgorICAgIGNhc2UgVmlydHVhbEtleTo6RW5kOgor
ICAgIGNhc2UgVmlydHVhbEtleTo6SG9tZToKICAgICAgICAgcmV0dXJuIE5TRXZlbnRNb2RpZmll
ckZsYWdGdW5jdGlvbjsKIAotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlv
bjo6VmlydHVhbEtleTo6TGVmdEFycm93OgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbjo6VmlydHVhbEtleTo6VXBBcnJvdzoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OlJpZ2h0QXJyb3c6Ci0gICAgY2FzZSBJbnNw
ZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpEb3duQXJyb3c6CisgICAg
Y2FzZSBWaXJ0dWFsS2V5OjpMZWZ0QXJyb3c6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpVcEFycm93
OgorICAgIGNhc2UgVmlydHVhbEtleTo6UmlnaHRBcnJvdzoKKyAgICBjYXNlIFZpcnR1YWxLZXk6
OkRvd25BcnJvdzoKICAgICAgICAgcmV0dXJuIE5TRXZlbnRNb2RpZmllckZsYWdOdW1lcmljUGFk
IHwgTlNFdmVudE1vZGlmaWVyRmxhZ0Z1bmN0aW9uOwogCi0gICAgY2FzZSBJbnNwZWN0b3I6OlBy
b3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpEZWxldGU6CisgICAgY2FzZSBWaXJ0dWFs
S2V5OjpEZWxldGU6CiAgICAgICAgIHJldHVybiBOU0V2ZW50TW9kaWZpZXJGbGFnRnVuY3Rpb247
CiAKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6
OkNsZWFyOgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVh
bEtleTo6TnVtYmVyUGFkMDoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRp
b246OlZpcnR1YWxLZXk6Ok51bWJlclBhZDE6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29s
OjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWQyOgotICAgIGNhc2UgSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkMzoKLSAgICBjYXNl
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZDQ6
Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpO
dW1iZXJQYWQ1OgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6Vmly
dHVhbEtleTo6TnVtYmVyUGFkNjoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9t
YXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZDc6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWQ4OgotICAgIGNhc2UgSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkOToKLSAgICBj
YXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBh
ZE11bHRpcGx5OgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6Vmly
dHVhbEtleTo6TnVtYmVyUGFkQWRkOgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkU3VidHJhY3Q6Ci0gICAgY2FzZSBJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWRTZXBhcmF0b3I6
Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpO
dW1iZXJQYWREZWNpbWFsOgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlv
bjo6VmlydHVhbEtleTo6TnVtYmVyUGFkRGl2aWRlOgorICAgIGNhc2UgVmlydHVhbEtleTo6Q2xl
YXI6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWQwOgorICAgIGNhc2UgVmlydHVhbEtl
eTo6TnVtYmVyUGFkMToKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZDI6CisgICAgY2Fz
ZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWQzOgorICAgIGNhc2UgVmlydHVhbEtleTo6TnVtYmVyUGFk
NDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZDU6CisgICAgY2FzZSBWaXJ0dWFsS2V5
OjpOdW1iZXJQYWQ2OgorICAgIGNhc2UgVmlydHVhbEtleTo6TnVtYmVyUGFkNzoKKyAgICBjYXNl
IFZpcnR1YWxLZXk6Ok51bWJlclBhZDg6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWQ5
OgorICAgIGNhc2UgVmlydHVhbEtleTo6TnVtYmVyUGFkTXVsdGlwbHk6CisgICAgY2FzZSBWaXJ0
dWFsS2V5OjpOdW1iZXJQYWRBZGQ6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWRTdWJ0
cmFjdDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZFNlcGFyYXRvcjoKKyAgICBjYXNl
IFZpcnR1YWxLZXk6Ok51bWJlclBhZERlY2ltYWw6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1i
ZXJQYWREaXZpZGU6CiAgICAgICAgIHJldHVybiBOU0V2ZW50TW9kaWZpZXJGbGFnTnVtZXJpY1Bh
ZDsKIAotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtl
eTo6RnVuY3Rpb24xOgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6
VmlydHVhbEtleTo6RnVuY3Rpb24yOgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbjo6VmlydHVhbEtleTo6RnVuY3Rpb24zOgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RnVuY3Rpb240OgotICAgIGNhc2UgSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RnVuY3Rpb241OgotICAgIGNh
c2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RnVuY3Rpb242
OgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6
RnVuY3Rpb243OgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6Vmly
dHVhbEtleTo6RnVuY3Rpb244OgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21h
dGlvbjo6VmlydHVhbEtleTo6RnVuY3Rpb245OgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RnVuY3Rpb24xMDoKLSAgICBjYXNlIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkZ1bmN0aW9uMTE6Ci0gICAgY2Fz
ZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjEy
OgorICAgIGNhc2UgVmlydHVhbEtleTo6RnVuY3Rpb24xOgorICAgIGNhc2UgVmlydHVhbEtleTo6
RnVuY3Rpb24yOgorICAgIGNhc2UgVmlydHVhbEtleTo6RnVuY3Rpb24zOgorICAgIGNhc2UgVmly
dHVhbEtleTo6RnVuY3Rpb240OgorICAgIGNhc2UgVmlydHVhbEtleTo6RnVuY3Rpb241OgorICAg
IGNhc2UgVmlydHVhbEtleTo6RnVuY3Rpb242OgorICAgIGNhc2UgVmlydHVhbEtleTo6RnVuY3Rp
b243OgorICAgIGNhc2UgVmlydHVhbEtleTo6RnVuY3Rpb244OgorICAgIGNhc2UgVmlydHVhbEtl
eTo6RnVuY3Rpb245OgorICAgIGNhc2UgVmlydHVhbEtleTo6RnVuY3Rpb24xMDoKKyAgICBjYXNl
IFZpcnR1YWxLZXk6OkZ1bmN0aW9uMTE6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpGdW5jdGlvbjEy
OgogICAgICAgICByZXR1cm4gTlNFdmVudE1vZGlmaWVyRmxhZ0Z1bmN0aW9uOwogCiAgICAgZGVm
YXVsdDoKQEAgLTQyNywxOSArNDI3LDM0IEBAIHN0YXRpYyBOU0V2ZW50TW9kaWZpZXJGbGFncyBl
dmVudE1vZGlmaWVyRmxhZ3NGb3JWaXJ0dWFsS2V5KEluc3BlY3Rvcjo6UHJvdG9jb2w6CiAgICAg
fQogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlS2V5U3Ry
b2tlKFdlYlBhZ2VQcm94eSYgcGFnZSwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6
S2V5Ym9hcmRJbnRlcmFjdGlvblR5cGUgaW50ZXJhY3Rpb24sIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkF1dG9tYXRpb246OlZpcnR1YWxLZXkga2V5KQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6
cGxhdGZvcm1TaW11bGF0ZUtleWJvYXJkSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBL
ZXlib2FyZEludGVyYWN0aW9uIGludGVyYWN0aW9uLCBzdGQ6Om9wdGlvbmFsPFZpcnR1YWxLZXk+
IHZpcnR1YWxLZXksIHN0ZDo6b3B0aW9uYWw8Q2hhcktleT4gY2hhcktleSkKIHsKICAgICAvLyBG
SVhNRTogdGhpcyBmdW5jdGlvbiBhbmQgdGhlIEF1dG9tYXRpb24gcHJvdG9jb2wgZW51bSBzaG91
bGQgcHJvYmFibHkgYWRvcHQga2V5IG5hbWVzCiAgICAgLy8gZnJvbSBXM0MgVUlFdmVudHMgc3Rh
bmRhcmQuIEZvciBtb3JlIGRldGFpbHM6IGh0dHBzOi8vdzNjLmdpdGh1Yi5pby91aWV2ZW50cy1j
b2RlLwogCi0gICAgYm9vbCBpc1N0aWNreU1vZGlmaWVyID0ga2V5SGFzU3RpY2t5TW9kaWZpZXIo
a2V5KTsKLSAgICBOU0V2ZW50TW9kaWZpZXJGbGFncyBjaGFuZ2VkTW9kaWZpZXJzID0gZXZlbnRN
b2RpZmllckZsYWdzRm9yVmlydHVhbEtleShrZXkpOwotICAgIGludCBrZXlDb2RlID0ga2V5Q29k
ZUZvclZpcnR1YWxLZXkoa2V5KTsKKyAgICBBU1NFUlQodmlydHVhbEtleS5oYXNfdmFsdWUoKSB8
fCBjaGFyS2V5Lmhhc192YWx1ZSgpKTsKKworICAgIGJvb2wgaXNTdGlja3lNb2RpZmllciA9IGZh
bHNlOworICAgIE5TRXZlbnRNb2RpZmllckZsYWdzIGNoYW5nZWRNb2RpZmllcnMgPSAwOworICAg
IGludCBrZXlDb2RlOworICAgIHN0ZDo6b3B0aW9uYWw8dW5pY2hhcj4gY2hhckNvZGU7CisgICAg
c3RkOjpvcHRpb25hbDx1bmljaGFyPiBjaGFyQ29kZUlnbm9yaW5nTW9kaWZpZXJzOworCisgICAg
aWYgKHZpcnR1YWxLZXkuaGFzX3ZhbHVlKCkpIHsKKyAgICAgICAgaXNTdGlja3lNb2RpZmllciA9
IHZpcnR1YWxLZXlIYXNTdGlja3lNb2RpZmllcih2aXJ0dWFsS2V5LnZhbHVlKCkpOworICAgICAg
ICBjaGFuZ2VkTW9kaWZpZXJzID0gZXZlbnRNb2RpZmllckZsYWdzRm9yVmlydHVhbEtleSh2aXJ0
dWFsS2V5LnZhbHVlKCkpOworICAgICAgICBrZXlDb2RlID0ga2V5Q29kZUZvclZpcnR1YWxLZXko
dmlydHVhbEtleS52YWx1ZSgpKTsKKyAgICAgICAgY2hhckNvZGUgPSBjaGFyQ29kZUZvclZpcnR1
YWxLZXkodmlydHVhbEtleS52YWx1ZSgpKTsKKyAgICAgICAgY2hhckNvZGVJZ25vcmluZ01vZGlm
aWVycyA9IGNoYXJDb2RlSWdub3JpbmdNb2RpZmllcnNGb3JWaXJ0dWFsS2V5KHZpcnR1YWxLZXku
dmFsdWUoKSk7CisgICAgfQorCisgICAgaWYgKGNoYXJLZXkuaGFzX3ZhbHVlKCkpIHsKKyAgICAg
ICAgY2hhckNvZGUgPSAodW5pY2hhciljaGFyS2V5LnZhbHVlKCk7CisgICAgICAgIGNoYXJDb2Rl
SWdub3JpbmdNb2RpZmllcnMgPSAodW5pY2hhciljaGFyS2V5LnZhbHVlKCk7CisgICAgfQogCiAg
ICAgLy8gRklYTUU6IGNvbnNpZGVyIHVzaW5nIEFwcEtpdCBTUEkgdG8gbm9ybWFsaXplICdjaGFy
YWN0ZXJzJywgaS5lLiwgY2hhbmdpbmcgKiB0byBTaGlmdC04LAogICAgIC8vIGFuZCBwYXNzaW5n
IHRoYXQgaW4gdG8gY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzLiBXZSBjb3VsZCBoYXJkY29k
ZSB0aGlzIGZvciBBU0NJSSBpZiBuZWVkZWQuCi0gICAgc3RkOjpvcHRpb25hbDx1bmljaGFyPiBj
aGFyQ29kZSA9IGNoYXJDb2RlRm9yVmlydHVhbEtleShrZXkpOwotICAgIHN0ZDo6b3B0aW9uYWw8
dW5pY2hhcj4gY2hhckNvZGVJZ25vcmluZ01vZGlmaWVycyA9IGNoYXJDb2RlSWdub3JpbmdNb2Rp
ZmllcnNGb3JWaXJ0dWFsS2V5KGtleSk7CiAgICAgTlNTdHJpbmcgKmNoYXJhY3RlcnMgPSBjaGFy
Q29kZSA/IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2hhckNvZGUudmFsdWUoKSBs
ZW5ndGg6MV0gOiBuaWw7CiAgICAgTlNTdHJpbmcgKnVubW9kaWZpZWRDaGFyYWN0ZXJzID0gY2hh
ckNvZGVJZ25vcmluZ01vZGlmaWVycyA/IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczom
Y2hhckNvZGVJZ25vcmluZ01vZGlmaWVycy52YWx1ZSgpIGxlbmd0aDoxXSA6IG5pbDsKIApAQCAt
NDUyLDE5ICs0NjcsMTkgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11
bGF0ZUtleVN0cm9rZShXZWJQYWdlUHJveHkmIHBhZ2UsIEluc3BlY3QKICAgICBOU1BvaW50IGV2
ZW50UG9zaXRpb24gPSBOU01ha2VQb2ludCgwLCB3aW5kb3cuZnJhbWUuc2l6ZS5oZWlnaHQpOwog
CiAgICAgc3dpdGNoIChpbnRlcmFjdGlvbikgewotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXV0b21hdGlvbjo6S2V5Ym9hcmRJbnRlcmFjdGlvblR5cGU6OktleVByZXNzOiB7CisgICAg
Y2FzZSBLZXlib2FyZEludGVyYWN0aW9uOjpLZXlQcmVzczogewogICAgICAgICBOU0V2ZW50VHlw
ZSBldmVudFR5cGUgPSBpc1N0aWNreU1vZGlmaWVyID8gTlNFdmVudFR5cGVGbGFnc0NoYW5nZWQg
OiBOU0V2ZW50VHlwZUtleURvd247CiAgICAgICAgIG1fY3VycmVudE1vZGlmaWVycyB8PSBjaGFu
Z2VkTW9kaWZpZXJzOwogICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltOU0V2ZW50
IGtleUV2ZW50V2l0aFR5cGU6ZXZlbnRUeXBlIGxvY2F0aW9uOmV2ZW50UG9zaXRpb24gbW9kaWZp
ZXJGbGFnczptX2N1cnJlbnRNb2RpZmllcnMgdGltZXN0YW1wOnRpbWVzdGFtcCB3aW5kb3dOdW1i
ZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmlsIGNoYXJhY3RlcnM6Y2hhcmFjdGVycyBjaGFyYWN0
ZXJzSWdub3JpbmdNb2RpZmllcnM6dW5tb2RpZmllZENoYXJhY3RlcnMgaXNBUmVwZWF0Ok5PIGtl
eUNvZGU6a2V5Q29kZV1dOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpLZXlib2FyZEludGVyYWN0aW9uVHlwZTo6S2V5UmVs
ZWFzZTogeworICAgIGNhc2UgS2V5Ym9hcmRJbnRlcmFjdGlvbjo6S2V5UmVsZWFzZTogewogICAg
ICAgICBOU0V2ZW50VHlwZSBldmVudFR5cGUgPSBpc1N0aWNreU1vZGlmaWVyID8gTlNFdmVudFR5
cGVGbGFnc0NoYW5nZWQgOiBOU0V2ZW50VHlwZUtleVVwOwogICAgICAgICBtX2N1cnJlbnRNb2Rp
ZmllcnMgJj0gfmNoYW5nZWRNb2RpZmllcnM7CiAgICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRP
YmplY3Q6W05TRXZlbnQga2V5RXZlbnRXaXRoVHlwZTpldmVudFR5cGUgbG9jYXRpb246ZXZlbnRQ
b3NpdGlvbiBtb2RpZmllckZsYWdzOm1fY3VycmVudE1vZGlmaWVycyB0aW1lc3RhbXA6dGltZXN0
YW1wIHdpbmRvd051bWJlcjp3aW5kb3dOdW1iZXIgY29udGV4dDpuaWwgY2hhcmFjdGVyczpjaGFy
YWN0ZXJzIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczp1bm1vZGlmaWVkQ2hhcmFjdGVycyBp
c0FSZXBlYXQ6Tk8ga2V5Q29kZTprZXlDb2RlXV07CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAg
ICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OktleWJvYXJkSW50ZXJhY3Rp
b25UeXBlOjpJbnNlcnRCeUtleTogeworICAgIGNhc2UgS2V5Ym9hcmRJbnRlcmFjdGlvbjo6SW5z
ZXJ0QnlLZXk6IHsKICAgICAgICAgLy8gU3RpY2t5IG1vZGlmaWVycyBzaG91bGQgZWl0aGVyIGJl
ICdLZXlQcmVzcycgb3IgJ0tleVJlbGVhc2UnLgogICAgICAgICBBU1NFUlQoIWlzU3RpY2t5TW9k
aWZpZXIpOwogICAgICAgICBpZiAoaXNTdGlja3lNb2RpZmllcikKQEAgLTU1MSw3ICs1NjYsNyBA
QCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlS2V5U2VxdWVuY2Uo
V2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdAogCiAgICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRP
YmplY3Q6W05TRXZlbnQga2V5RXZlbnRXaXRoVHlwZTpOU0V2ZW50VHlwZUtleURvd24gbG9jYXRp
b246ZXZlbnRQb3NpdGlvbiBtb2RpZmllckZsYWdzOm1vZGlmaWVyc0ZvcktleXN0cm9rZSB0aW1l
c3RhbXA6dGltZXN0YW1wIHdpbmRvd051bWJlcjp3aW5kb3dOdW1iZXIgY29udGV4dDpuaWwgY2hh
cmFjdGVyczpzdWJzdHJpbmcgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOnN1YnN0cmluZyBp
c0FSZXBlYXQ6Tk8ga2V5Q29kZTowXV07CiAgICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmpl
Y3Q6W05TRXZlbnQga2V5RXZlbnRXaXRoVHlwZTpOU0V2ZW50VHlwZUtleVVwIGxvY2F0aW9uOmV2
ZW50UG9zaXRpb24gbW9kaWZpZXJGbGFnczptb2RpZmllcnNGb3JLZXlzdHJva2UgdGltZXN0YW1w
OnRpbWVzdGFtcCB3aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmlsIGNoYXJhY3Rl
cnM6c3Vic3RyaW5nIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczpzdWJzdHJpbmcgaXNBUmVw
ZWF0Ok5PIGtleUNvZGU6MF1dOwotICAgICAgICAKKwogICAgICAgICBpZiAoc2hvdWxkUHJlc3NT
aGlmdCkKICAgICAgICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmplY3Q6W05TRXZlbnQga2V5
RXZlbnRXaXRoVHlwZTpOU0V2ZW50VHlwZUZsYWdzQ2hhbmdlZCBsb2NhdGlvbjpldmVudFBvc2l0
aW9uIG1vZGlmaWVyRmxhZ3M6bV9jdXJyZW50TW9kaWZpZXJzIHRpbWVzdGFtcDp0aW1lc3RhbXAg
d2luZG93TnVtYmVyOndpbmRvd051bWJlciBjb250ZXh0Om5pbCBjaGFyYWN0ZXJzOkAiIiBjaGFy
YWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6QCIiIGlzQVJlcGVhdDpOTyBrZXlDb2RlOmtWS19TaGlm
dF1dOwogICAgIH1dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggNTYxMzkyYzlkM2ZkNjZkZDg1ODViMDY3ZTEwMGUyNTM5OWI1MDVlOC4u
MGVkZjJiMmQxMDEyNjRiMzhiZmNmMDFmOTM4OGQxMzRkZTIxYzExZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNTI5LDYgKzE1Mjks
OCBAQAogCQk5OTQ2RUY4NjFFN0IwMjcwMDA1NDFFNzkgLyogV2ViQXV0b21hdGlvblNlc3Npb25J
T1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTQ2
RUY4NTFFN0IwMjY2MDA1NDFFNzkgLyogV2ViQXV0b21hdGlvblNlc3Npb25JT1MubW0gKi87IH07
CiAJCTk5NEJBREYzMUY3RDc4MTEwMEI1NzFFNyAvKiBXS0luc3BlY3RvclZpZXdDb250cm9sbGVy
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk0QkFE
RjIxRjdENzdFQjAwQjU3MUU3IC8qIFdLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0gKi87IH07
CiAJCTk5NEJBREY0MUY3RDc4MTQwMEI1NzFFNyAvKiBXS0luc3BlY3RvclZpZXdDb250cm9sbGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTRCQURG
MTFGN0Q3N0VBMDBCNTcxRTcgLyogV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5oICovOyB9Owor
CQk5OTUyMjZENjIwN0QxODQ2MDBGNzg0MjAgLyogU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTUyMjZENDIw
N0QxODQ1MDBGNzg0MjAgLyogU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmggKi87IH07CisJCTk5
NTIyNkQ3MjA3RDE4NDYwMEY3ODQyMCAvKiBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk1MjI2RDUyMDdE
MTg0NjAwRjc4NDIwIC8qIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5jcHAgKi87IH07CiAJCTk5
NTVBNkVDMUM3OTgwQzIwMEVCNkE5MyAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk1NUE2RUIxQzc5ODBCQjAw
RUI2QTkzIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uLmggKi87IH07CiAJCTk5NTVBNkVEMUM3OTgw
Q0EwMEVCNkE5MyAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTU1QTZFQTFDNzk4MEJCMDBFQjZBOTMgLyog
V2ViQXV0b21hdGlvblNlc3Npb24uY3BwICovOyB9OwogCQk5OTU1QTZFRjFDNzk4MTA4MDBFQjZB
OTMgLyogQXV0b21hdGlvbi5qc29uIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTk1NUE2RTkxQzc5ODBCQjAwRUI2QTkzIC8qIEF1dG9tYXRpb24uanNvbiAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNDAxOSw2
ICs0MDIxLDggQEAKIAkJOTk0NkVGODUxRTdCMDI2NjAwNTQxRTc5IC8qIFdlYkF1dG9tYXRpb25T
ZXNzaW9uSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2Vi
QXV0b21hdGlvblNlc3Npb25JT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5
NEJBREYxMUY3RDc3RUEwMEI1NzFFNyAvKiBXS0luc3BlY3RvclZpZXdDb250cm9sbGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk0QkFERjIxRjdENzdFQjAwQjU3MUU3
IC8qIFdLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBXS0luc3BlY3RvclZpZXdDb250cm9sbGVyLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk5OTUyMjZENDIwN0QxODQ1MDBGNzg0MjAgLyogU2ltdWxhdGVk
SW5wdXREaXNwYXRjaGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNpbXVs
YXRlZElucHV0RGlzcGF0Y2hlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OTUy
MjZENTIwN0QxODQ2MDBGNzg0MjAgLyogU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNpbXVsYXRlZElucHV0RGlzcGF0Y2hl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5NTVBNkU5MUM3OTgwQkIwMEVC
NkE5MyAvKiBBdXRvbWF0aW9uLmpzb24gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmpzb247IHBhdGggPSBBdXRv
bWF0aW9uLmpzb247IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5NTVBNkVBMUM3OTgw
QkIwMEVCNkE5MyAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTk5NTVBNkVCMUM3OTgwQkIwMEVCNkE5MyAvKiBXZWJBdXRvbWF0
aW9uU2Vzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBdXRvbWF0
aW9uU2Vzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjk3MCw2ICs2OTc0
LDggQEAKIAkJCQk5OTQ2RUY4MjFFN0IwMjNEMDA1NDFFNzkgLyogaW9zICovLAogCQkJCTk5QzNB
RTIyMURBRDhFMTQwMEFGNUMxNiAvKiBtYWMgKi8sCiAJCQkJOTk1NUE2RTkxQzc5ODBCQjAwRUI2
QTkzIC8qIEF1dG9tYXRpb24uanNvbiAqLywKKwkJCQk5OTUyMjZENTIwN0QxODQ2MDBGNzg0MjAg
LyogU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmNwcCAqLywKKwkJCQk5OTUyMjZENDIwN0QxODQ1
MDBGNzg0MjAgLyogU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmggKi8sCiAJCQkJOTk1NUE2RUEx
Qzc5ODBCQjAwRUI2QTkzIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uLmNwcCAqLywKIAkJCQk5OTU1
QTZFQjFDNzk4MEJCMDBFQjZBOTMgLyogV2ViQXV0b21hdGlvblNlc3Npb24uaCAqLywKIAkJCQkx
QzBBMTk1OTFDOTAwNkVBMDBGRTBFQkIgLyogV2ViQXV0b21hdGlvblNlc3Npb24ubWVzc2FnZXMu
aW4gKi8sCkBAIC05MTc0LDYgKzkxODAsNyBAQAogCQkJCTgzMTNGN0VDMUY3REFFMDgwMEI5NDRF
QiAvKiBTaGFyZWRTdHJpbmdIYXNoU3RvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzMTNGN0VF
MUY3REFFMDgwMEI5NDRFQiAvKiBTaGFyZWRTdHJpbmdIYXNoVGFibGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTgzRjk2NDRFMUZBMEY3NkUwMEM0Nzc1MCAvKiBTaGFyZWRTdHJpbmdIYXNoVGFibGVS
ZWFkT25seS5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTk1MjI2RDYyMDdEMTg0NjAwRjc4NDIwIC8q
IFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRBRjA2RDYx
OEJEMUE0NzAwODFDRUIxIC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTJERTY5NDNFMThCRDJBNjgwMDVDMTVFNSAvKiBTbWFydE1hZ25pZmljYXRp
b25Db250cm9sbGVyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUyNzJCMjhCMTQwNjk4
NUQwMDk2QTVEMCAvKiBTdGF0aXN0aWNzRGF0YS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDg4MCw2
ICsxMDg4Nyw3IEBACiAJCQkJODMxM0Y3RUIxRjdEQUUwODAwQjk0NEVCIC8qIFNoYXJlZFN0cmlu
Z0hhc2hTdG9yZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4MzEzRjdFRDFGN0RBRTA4MDBCOTQ0
RUIgLyogU2hhcmVkU3RyaW5nSGFzaFRhYmxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTgzRjk2
NDREMUZBMEY3NkUwMEM0Nzc1MCAvKiBTaGFyZWRTdHJpbmdIYXNoVGFibGVSZWFkT25seS5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQk5OTUyMjZENzIwN0QxODQ2MDBGNzg0MjAgLyogU2ltdWxhdGVk
SW5wdXREaXNwYXRjaGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEQUYwNkQ3MThCRDFBNDcw
MDgxQ0VCMSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJMkRFNjk0M0QxOEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRy
b2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTI3MkIyOEExNDA2
OTg1RDAwOTZBNUQwIC8qIFN0YXRpc3RpY3NEYXRhLmNwcCBpbiBTb3VyY2VzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338379</attachid>
            <date>2018-04-19 16:49:00 -0700</date>
            <delta_ts>2018-04-19 17:11:51 -0700</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-184603-20180419164859.patch</filename>
            <type>text/plain</type>
            <size>106102</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwODIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDIzMzY5YzY5MDNmMjA1MTY3
YmE0YWI1ZDFhMDQ5MTU5OGM2MGIxNmUuLjQ0NTVjN2E0Njk3ZGJiNDE5NGI5MDBhZDNhYjNkNzNk
YmM2MmUyMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTI5IEBACisyMDE4LTA0LTE5ICBCcmlhbiBC
dXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBBdXRvbWF0aW9uOiBhZGQgc3Vw
cG9ydCBmb3IgbW91c2Uva2V5Ym9hcmQgaW50ZXJhY3Rpb24gc2VxdWVuY2VzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQ2MDMKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzM5NDIxODM5PgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0
Y2hlci4KKworICAgICAgICBBZGQgbmV3IHByb3RvY29sIG1ldGhvZHMgYW5kIFdlYktpdCBzdXBw
b3J0IGZvciBpbXBsZW1lbnRpbmcgdGhlIFczQyBBY3Rpb25zIEFQSS4KKyAgICAgICAgVGhpcyBp
cyBhIGdlbmVyaWMgY29tbWFuZCBmb3Igc2VuZGluZyBsb3ctbGV2ZWwgbW91c2UsIGtleSwgYW5k
IHRvdWNoIGV2ZW50cyB0bworICAgICAgICB0ZXN0IHBhZ2UgYmVoYXZpb3Igd2hlbiBwZXJmb3Jt
aW5nIGRyYWctYW5kLWRyb3AsIGdlc3R1cmVzLCBvciBzcGVjaWZpYyBrZXlkb3duL2tleXVwcy4K
KworICAgICAgICBUbyBpbXBsZW1lbnQgdGhpcyBmdW5jdGlvbmFsaXR5LCB0aGlzIHBhdGNoIGFk
ZHMgU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLCBhIGNsYXNzCisgICAgICAgIGZvciBkaXNwYXRj
aGluZyBpbnB1dCBldmVudHMgYXN5bmNocm9ub3VzbHkuIFNpbWlsYXIgdG8gdGhlIFdlYkRyaXZl
ciBzcGVjaWZpY2F0aW9uLAorICAgICAgICB0aGlzIGlzIGRlc2lnbmVkIGFzIGEga2V5ZnJhbWlu
ZyBBUEkuIENhbGxlcnMgc2V0IHVwIHNldmVyYWwgImlucHV0IHNvdXJjZXMiIHN1Y2gKKyAgICAg
ICAgYXMga2V5Ym9hcmQgb3IgbW91c2UsIGFuZCB0aGVuIHNwZWNpZnkgdGhlIHN0YXRlcyBvZiB0
aGF0IGlucHV0IHNvdXJjZSBvdmVyIHRpbWUuIFRoZQorICAgICAgICBkaXNwYXRjaGVyIGNhbGN1
bGF0ZXMgZGlmZnMgYmV0d2VlbiB0aGUgcHJldmlvdXMgYW5kIGN1cnJlbnQga2V5ZnJhbWVzIGFu
ZCBnZW5lcmF0ZXMKKyAgICAgICAgdGhlIGFwcHJvcHJpYXRlIGV2ZW50cyB0aGF0IHdvdWxkIGhh
cHBlbiBpZiBhIHVzZXIgY2F1c2VkIHRoZSBzdGF0ZSB0cmFuc2l0aW9uLgorCisgICAgICAgIEZv
ciBleGFtcGxlLCBpZiBhIG1vdXNlIGlucHV0IHNvdXJjZSdzIHN0YXRlIGNoYW5nZXMsIHRoZSBk
aXNwYXRjaGVyIHNlbmRzIHN5bnRoZXRpYyBtb3VzZW1vdmUsCisgICAgICAgIG1vdXNlZG93biwg
b3IgbW91c2V1cCBldmVudHMgZGVwZW5kaW5nIG9uIHRoZSBwcmUtIGFuZCBwb3N0LXN0YXRlLiBU
aGlzIGlzIHVuaW50ZXJlc3RpbmcKKyAgICAgICAgYW5kIG92ZXJjb21wbGljYXRlZCBmb3Igc2lt
cGxlIGtleSBhbmQgbW91c2UgcHJlc3NlcywgYnV0IGl0J3MgcmVhbGx5IGRlc2lnbmVkIHdpdGgg
YW4KKyAgICAgICAgZXllIHRvd2FyZHMgc3VwcG9ydGluZyBtb3VzZW1vdmUgaW50ZXJwb2xhdGlv
biBhbmQgdG91Y2ggZXZlbnQgaW50ZXJwb2xhdGlvbiBpbiBsYXRlciBwYXRjaGVzLgorCisgICAg
ICAgIFRoZSBzdHJhdGVneSBmb3IgZGlzcGF0Y2hpbmcgZXZlbnRzIGRlcGVuZHMgb24gdGhlIGlu
cHV0IHNvdXJjZSB0eXBlOyByaWdodCBub3csIHRoZXNlCisgICAgICAgIG1hcCBkaXJlY3RseSB0
byB0aGUgZXhpc3RpbmcgcGxhdGZvcm1TaW11bGF0ZXtNb3VzZSwgS2V5Ym9hcmR9SW50ZXJhY3Rp
b24gbWV0aG9kcy4gSW4KKyAgICAgICAgdGhlIGZ1dHVyZSwgdGhlIGRpc3BhdGNoIHN0cmF0ZWd5
IG1heSBiZSBlbGFib3JhdGVkIGZvciBpbnRlcnBvbGF0ZWQgbW91c2Vtb3ZlIGV2ZW50cy4KKwor
ICAgICAgICBUaGlzIHBhdGNoIGRlcGVuZHMgb24gc3VwcG9ydCBhZGRlZCBpbiBidWcgMTg0NDYy
LgorCisgICAgICAgIE5vIHRlc3RzIHlldC4gV2hlbiB0aGlzIGNvbW1hbmQgaXMgaG9va2VkIHVw
IHRvIGEgZHJpdmVyLCB0aGUgY29kZSB3aWxsIGJlIGV4ZXJjaXNlZCBieQorICAgICAgICBXM0Mg
YWN0aW9ucyB0ZXN0IHN1aXRlLCB3aGljaCBpcyBmYWlybHkgY29tcGxleCBhdCB0aGlzIHBvaW50
IHJlbGF0aXZlIHRvIGVuZC11c2VyIGNvZGUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21h
dGlvbi9BdXRvbWF0aW9uLmpzb246IEFkZCBuZXcgdHlwZXMgYW5kIGNvbW1hbmRzLgorCisgICAg
ICAgICogVUlQcm9jZXNzL0F1dG9tYXRpb24vU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0OjpTaW11bGF0ZWRJbnB1dFNvdXJjZVN0YXRlOjplbXB0eVN0
YXRlKToKKyAgICAgICAgKFdlYktpdDo6U2ltdWxhdGVkSW5wdXRTb3VyY2U6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlNpbXVsYXRlZElucHV0U291cmNlOjpTaW11bGF0ZWRJbnB1dFNvdXJj
ZSk6CisgICAgICAgIChXZWJLaXQ6OlNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6Q2xpZW50Ojp+
Q2xpZW50KToKKyAgICAgICAgQWRkIHN0cnVjdHMgZm9yIGlucHV0IHNvdXJjZSwgc291cmNlIHN0
YXRlLCBhbmQga2V5ZnJhbWUuCisgICAgICAgIFRoZSBkaXNwYXRjaGVyJ3MgY2xpZW50IGludGVy
ZmFjZSBpcyBpbXBsZW1lbnRlZCBieSBXZWJBdXRvbWF0aW9uU2Vzc2lvbi4KKworICAgICAgICAo
V2ViS2l0OjpTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OmNyZWF0ZSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0F1dG9tYXRpb24vU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQ6OlNpbXVsYXRlZElucHV0S2V5RnJhbWU6OlNpbXVsYXRlZElucHV0S2V5
RnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpTaW11bGF0ZWRJbnB1dEtleUZyYW1lOjptYXhpbXVt
RHVyYXRpb24gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTaW11bGF0ZWRJbnB1dEtleUZyYW1l
OjprZXlGcmFtZUZyb21TdGF0ZU9mSW5wdXRTb3VyY2VzKToKKyAgICAgICAgKFdlYktpdDo6U2lt
dWxhdGVkSW5wdXRLZXlGcmFtZTo6a2V5RnJhbWVUb1Jlc2V0SW5wdXRTb3VyY2VzKToKKyAgICAg
ICAgKFdlYktpdDo6U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjpTaW11bGF0ZWRJbnB1dERpc3Bh
dGNoZXIpOgorICAgICAgICAoV2ViS2l0OjpTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6On5TaW11
bGF0ZWRJbnB1dERpc3BhdGNoZXIpOgorICAgICAgICAoV2ViS2l0OjpTaW11bGF0ZWRJbnB1dERp
c3BhdGNoZXI6OmlzQWN0aXZlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6U2ltdWxhdGVkSW5w
dXREaXNwYXRjaGVyOjprZXlGcmFtZVRyYW5zaXRpb25EdXJhdGlvblRpbWVyRmlyZWQpOgorICAg
ICAgICAoV2ViS2l0OjpTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OmlzS2V5RnJhbWVUcmFuc2l0
aW9uQ29tcGxldGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTaW11bGF0ZWRJbnB1dERpc3Bh
dGNoZXI6OnRyYW5zaXRpb25Ub05leHRLZXlGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlNpbXVs
YXRlZElucHV0RGlzcGF0Y2hlcjo6dHJhbnNpdGlvblRvTmV4dElucHV0U291cmNlU3RhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OnRyYW5zaXRpb25CZXR3
ZWVuS2V5RnJhbWVzKToKKyAgICAgICAgKFdlYktpdDo6U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVy
Ojp0cmFuc2l0aW9uSW5wdXRTb3VyY2VUb1N0YXRlKToKKyAgICAgICAgKFdlYktpdDo6U2ltdWxh
dGVkSW5wdXREaXNwYXRjaGVyOjpydW4pOgorICAgICAgICAoV2ViS2l0OjpTaW11bGF0ZWRJbnB1
dERpc3BhdGNoZXI6OmNhbmNlbCk6CisgICAgICAgIChXZWJLaXQ6OlNpbXVsYXRlZElucHV0RGlz
cGF0Y2hlcjo6ZmluaXNoRGlzcGF0Y2hpbmcpOgorICAgICAgICBUaGUgZGlzcGF0Y2hlciBoYW5k
bGVzIG9uZSBpbnRlcmFjdGlvbiBhdCBhIHRpbWUuIFRoZSBpbnRlcmFjdGlvbiBpcyBkZXNjcmli
ZWQKKyAgICAgICAgYnkgYW4gYXJyYXkgb2Yga2V5ZnJhbWVzLCBhbmQgZWFjaCBrZXlmcmFtZSBo
YXMgYW4gYXJyYXkgb2Ygc3RhdGVzLiBUaGUgZGlzcGF0Y2hlcgorICAgICAgICB0cmFuc2l0aW9u
cyBiZXR3ZWVuIGtleWZyYW1lcyBieSBzZXF1ZW50aWFsbHkgYW5kIGFzeW5jaHJvbm91c2x5IGVt
aXR0aW5nIGV2ZW50cworICAgICAgICB0aGF0IGNhdXNlIGVhY2ggaW5wdXQgc291cmNlIHN0YXRl
IHRvIHRyYW5zaXRpb24gYXMgZGVzaXJlZC4gS2V5ZnJhbWUgdHJhbnNpdGlvbnMKKyAgICAgICAg
YXJlIGFkZGl0aW9uYWxseSBnYXRlZCBieSBhICJtYXhpbXVtIGR1cmF0aW9uIiB0aW1lci4gRWFj
aCBzdGVwIHRoYXQgdGhlIGRpc3BhdGNoZXIKKyAgICAgICAgZXhlY3V0ZXMgaXMgYXN5bmNocm9u
b3VzLCBzbyB0aGUgZGlzcGF0Y2hlciBrZWVwcyBtb3N0IHN0YXRlIGluIG1lbWJlcnMgYW5kIHVz
ZXMKKyAgICAgICAgZXJyb3IgYXJndW1lbnQgbGFtYmRhcyBhcyBjb21wbGV0aW9uIGhhbmRsZXJz
IGZvciB2YXJpb3VzIGFzeW5jIHRoaW5ncy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0
aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRp
b24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0
aW9uU2Vzc2lvbjo6V2ViQXV0b21hdGlvblNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJB
dXRvbWF0aW9uU2Vzc2lvbjo6aW5wdXREaXNwYXRjaGVyRm9yUGFnZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjppbnB1dFNvdXJjZUZvclR5cGUgY29uc3QpOgorICAg
ICAgICBBZGQgY2Fub25pY2FsIGlucHV0IHNvdXJjZXMgdGhhdCBhcmUgdXNlZCB0byBrZWVwIHRy
YWNrIG9mIHN0YXRlIGFjcm9zcworICAgICAgICBpbnRlcmFjdGlvbiBzZXF1ZW5jZXMuCisKKyAg
ICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OmlzU2ltdWxhdGluZ1VzZXJJbnRl
cmFjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpt
b3VzZUV2ZW50c0ZsdXNoZWRGb3JQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlv
blNlc3Npb246OmtleWJvYXJkRXZlbnRzRmx1c2hlZEZvclBhZ2UpOgorICAgICAgICBSZW1vdmUg
bV9zaW11bGF0aW5nVXNlckludGVyYWN0aW9uIHNpbmNlIGl0IGNhbiBiZSBjb21wdXRlZCBiYXNl
ZCBvbiBvdGhlciBtZW1iZXJzLgorCisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNz
aW9uOjp3aWxsQ2xvc2VQYWdlKToKKyAgICAgICAgSWYgdGhlIHBhZ2UgaXMgYmVpbmcgdG9ybiBk
b3duLCBzdG9wIHRoZSBkaXNwYXRjaGVyIGlmIG5lZWRlZCBhbmQgY2FuY2VsIGFueQorICAgICAg
ICBjYWxsYmFja3Mgd2FpdGluZyBmb3IgbW91c2Uva2V5IGV2ZW50cyB0byBiZSByZXRpcmVkLgor
CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpzaW11bGF0ZU1vdXNlSW50
ZXJhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6c2ltdWxh
dGVLZXlib2FyZEludGVyYWN0aW9uKToKKyAgICAgICAgQWRkIGVhc3ktdG8tdXNlIGFzeW5jIG1l
dGhvZHMgZm9yIHNpbXVsYXRpbmcgbW91c2UgYW5kIGtleSBldmVudHMuIFRoZXNlIGFyZQorICAg
ICAgICBob29rZWQgdXAgdG8gU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyIHVzaW5nIGFzeW5jIGNv
bXBsZXRpb24gaGFuZGxlcnMuCisKKyAgICAgICAgKFdlYktpdDo6cHJvdG9jb2xNb3VzZUJ1dHRv
blRvV2ViTW91c2VFdmVudEJ1dHRvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25T
ZXNzaW9uOjpwZXJmb3JtTW91c2VJbnRlcmFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkF1
dG9tYXRpb25TZXNzaW9uOjpwZXJmb3JtS2V5Ym9hcmRJbnRlcmFjdGlvbnMpOgorICAgICAgICBB
ZGp1c3Qgc29tZSBuYW1pbmcuCisKKyAgICAgICAgKFdlYktpdDo6c2ltdWxhdGVkSW5wdXRTb3Vy
Y2VUeXBlRnJvbVByb3RvY29sU291cmNlVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9t
YXRpb25TZXNzaW9uOjpwZXJmb3JtSW50ZXJhY3Rpb25TZXF1ZW5jZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpjYW5jZWxJbnRlcmFjdGlvblNlcXVlbmNlKToKKyAg
ICAgICAgQWRkIGNvbW1hbmQgaGFuZGxlcnMgZm9yIHRoZSBuZXcgYWN0aW9uIGNvbW1hbmRzIGlu
IEF1dG9tYXRpb24gcHJvdG9jb2wuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9n
dGsvV2ViQXV0b21hdGlvblNlc3Npb25HdGsuY3BwOgorICAgICAgICAoV2ViS2l0Ojptb3VzZUJ1
dHRvblRvR2RrQnV0dG9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246
OnBsYXRmb3JtU2ltdWxhdGVNb3VzZUludGVyYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
QXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVLZXlib2FyZEludGVyYWN0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVL
ZXlTdHJva2UpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL2lvcy9X
ZWJBdXRvbWF0aW9uU2Vzc2lvbklPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlv
blNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVLZXlib2FyZEludGVyYWN0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVLZXlTdHJva2Up
OiBEZWxldGVkLgorICAgICAgICBSZW5hbWUgdGhlIGtleWJvYXJkIHBsYXRmb3JtIG1ldGhvZCB0
byBtYXRjaCB0aGUgbmFtaW5nIG9mIHRoZSBtb3VzZSBwbGF0Zm9ybSBtZXRob2QuCisgICAgICAg
IFRha2UgYWR2YW50YWdlIG9mIHRoZSAndXNpbmcnIGFsaWFzIHRvIG1ha2UgdGhlIHRlZGlvdXMg
c3dpdGNoZXMgZWFzaWVyIHRvIHJlYWQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlv
bi9tYWMvV2ViQXV0b21hdGlvblNlc3Npb25NYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYkF1
dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlTW91c2VJbnRlcmFjdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OnZpcnR1YWxLZXlIYXNTdGlja3lNb2RpZmllcik6CisgICAgICAgIChXZWJL
aXQ6OmtleUNvZGVGb3JWaXJ0dWFsS2V5KToKKyAgICAgICAgKFdlYktpdDo6ZXZlbnRNb2RpZmll
ckZsYWdzRm9yVmlydHVhbEtleSk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNz
aW9uOjpwbGF0Zm9ybVNpbXVsYXRlS2V5Ym9hcmRJbnRlcmFjdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlS2V5U2VxdWVuY2UpOgor
ICAgICAgICAoV2ViS2l0OjprZXlIYXNTdGlja3lNb2RpZmllcik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlS2V5U3Ryb2tl
KTogRGVsZXRlZC4KKyAgICAgICAgQWxsb3cgdGhlIGtleWJvYXJkIHNpbXVsYXRpb24gbWV0aG9k
IHRvIHRha2UgYSB2aXJ0dWFsIGtleSBhbmQgdW5pY2hhciB0byBiZXR0ZXIKKyAgICAgICAgbWF0
Y2ggaG93IHRoaXMgaXMgdXNlZCBieSB0aGUgUGVyZm9ybSBBY3Rpb25zIGNvbW1hbmQgYW5kIGl0
cyBtYWNoaW5lcnkuCisKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKwogMjAxOC0wNC0xOSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAg
ICAgICAgV2ViIEluc3BlY3RvciBiYWNrZW5kIHNob3VsZCBnZXQgaGVhZGVycyAmIGNvb2tpZXMg
ZnJvbSBuZXR3b3JrIHByb2Nlc3Mgc2VwYXJhdGVseSBmcm9tIHJlc291cmNlIHJlcXVlc3RzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL0F1dG9tYXRpb24u
anNvbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vQXV0b21hdGlvbi5qc29u
CmluZGV4IDdlODZkMTQ5YzI1YzE5MTQwNDIxZDM4ODRhNTFiYjZjMGY5ZTYyOTAuLmMzMTdlMWEy
NjIwZDlkZTdjYTZjOGFhNjNhZDMyODcwOWIxMjZiZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vQXV0b21hdGlvbi5qc29uCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vQXV0b21hdGlvbi5qc29uCkBAIC03Miw3ICs3Miw4IEBA
CiAgICAgICAgICAgICAgICAgIkVsZW1lbnROb3RJbnRlcmFjdGFibGUiLAogICAgICAgICAgICAg
ICAgICJFbGVtZW50Tm90U2VsZWN0YWJsZSIsCiAgICAgICAgICAgICAgICAgIlNjcmVlbnNob3RF
cnJvciIsCi0gICAgICAgICAgICAgICAgIlVuZXhwZWN0ZWRBbGVydE9wZW4iCisgICAgICAgICAg
ICAgICAgIlVuZXhwZWN0ZWRBbGVydE9wZW4iLAorICAgICAgICAgICAgICAgICJUYXJnZXRPdXRP
ZkJvdW5kcyIKICAgICAgICAgICAgIF0KICAgICAgICAgfSwKICAgICAgICAgewpAQCAtMjQ0LDYg
KzI0NSw0NiBAQAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicGVybWlzc2lvbiIsICIkcmVm
IjogIlNlc3Npb25QZXJtaXNzaW9uIiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidmFs
dWUiLCAidHlwZSI6ICJib29sZWFuIiB9CiAgICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAg
ICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJJbnB1dFNvdXJjZVR5cGUiLAorICAgICAgICAgICAg
InR5cGUiOiAic3RyaW5nIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJUaGUgdHlwZSBv
ZiBhbiBpbnB1dCBzb3VyY2UuIFRoaXMgZGV0ZXJtaW5lcyB3aGljaCBzdGF0ZSBwcm9wZXJ0aWVz
IGFyZSBhcHBsaWNhYmxlIHRvIHRoZSBpbnB1dCBzb3VyY2UuIFRoZSAnTnVsbCcgaW5wdXQgc291
cmNlIHR5cGUgaGFzIG5vIHByb3BlcnRpZXMsIG9ubHkgYSBkdXJhdGlvbi4gVGhpcyBjYW4gZXh0
ZW5kIHRoZSBlZmZlY3RpdmUgd2FpdCBmb3IgYSB0aWNrLiIsCisgICAgICAgICAgICAiZW51bSI6
IFsKKyAgICAgICAgICAgICAgICAiTnVsbCIsCisgICAgICAgICAgICAgICAgIk1vdXNlIiwKKyAg
ICAgICAgICAgICAgICAiS2V5Ym9hcmQiLAorICAgICAgICAgICAgICAgICJUb3VjaCIKKyAgICAg
ICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgImlkIjogIklucHV0
U291cmNlIiwKKyAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCisgICAgICAgICAgICAicHJv
cGVydGllcyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNvdXJjZUlkIiwgInR5cGUi
OiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIkEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoaXMg
aW5wdXQgc291cmNlLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNvdXJjZVR5cGUi
LCAiJHJlZiI6ICJJbnB1dFNvdXJjZVR5cGUiLCAiZGVzY3JpcHRpb24iOiAiVGhlIHR5cGUgb2Yg
dGhpcyBpbnB1dCBzb3VyY2UuIFRoaXMgYWZmZWN0cyB3aGF0IGlucHV0IHNvdXJjZSBzdGF0ZSBm
aWVsZHMgYXJlIHZhbGlkIGZvciB0aGlzIGlucHV0IHNvdXJjZS4iIH0KKyAgICAgICAgICAgIF0K
KyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgImlkIjogIkludGVyYWN0aW9uU3Rl
cCIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQSBzZXQgb2YgaW5wdXQgc291cmNlIHN0
YXRlcyB0byB3aGljaCBhbGwgYXBwbGljYWJsZSBpbnB1dCBzb3VyY2VzIG11c3QgdHJhbnNpdGlv
biBiZWZvcmUgZnVydGhlciBzdGVwcyBtYXkgYmUgcHJvY2Vzc2VkLiBJZiBhbiBpbnB1dCBzb3Vy
Y2UgZG9lcyBub3QgaGF2ZSBhIGNvcnJlc3BvbmRpbmcgc3RhdGUgaW4gYSBzdGVwLCBpdHMgc3Rh
dGUgYXNzdW1lZCB0byBiZSAncmVsZWFzZWQnIGZvciB0aGF0IHN0ZXAuIiwKKyAgICAgICAgICAg
ICJ0eXBlIjogIm9iamVjdCIsCisgICAgICAgICAgICAicHJvcGVydGllcyI6IFsKKyAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogInN0YXRlcyIsICJ0eXBlIjogImFycmF5IiwgIml0ZW1zIjogeyAi
JHJlZiI6ICJJbnB1dFNvdXJjZVN0YXRlIiB9LCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRp
b24iOiAiQSBsaXN0IG9mIG5ldyBpbnB1dCBzdGF0ZXMgZm9yIGlucHV0IHNvdXJjZXMgdGhhdCBt
dXN0IHRyYW5zaXRpb24gZHVyaW5nIHRoaXMgc3RlcC4gU291cmNlIHN0YXRlIHRyYW5zaXRpb25z
IHRoYXQgY2Fubm90IGJlIHBlcmZvcm1lZCBjb25jdXJyZW50bHkgKGkuZS4sIHRvdWNoIGdlc3R1
cmVzKSBhcmUgcGVyZm9ybWVkIHNlcXVlbnRpYWxseSBpbiB0aGUgb3JkZXIgdGhleSBhcmUgbGlz
dGVkLiIgfQorICAgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAg
ICAiaWQiOiAiSW5wdXRTb3VyY2VTdGF0ZSIsCisgICAgICAgICAgICAidHlwZSI6ICJvYmplY3Qi
LAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkEgbmV3IHN0YXRlIGZvciBhIHNwZWNpZmlj
IGlucHV0IHNvdXJjZS4gQWxsIHN0YXRlLXJlbGF0ZWQgZmllbGRzIGFyZSBvcHRpb25hbCBhbmQg
bXVzdCBiZSBhcHBsaWNhYmxlIHRvIHRoZSBJbnB1dFNvdXJjZSByZWZlcmVuY2VkIGJ5ICdzb3Vy
Y2VJZCcuIElmIG5vIHN0YXRlLXJlbGF0ZWQgZmllbGRzIGFyZSBzcGVjaWZpZWQsIHRoZSBzdGF0
ZSBpcyBhc3N1bWVkIHRvIHJlbWFpbiB0aGUgc2FtZSBhcyBpbiB0aGUgcHJldmlvdXMgc3RlcCAo
aS5lLiwgJ3N1c3RhaW5lZCcpLiIsCisgICAgICAgICAgICAicHJvcGVydGllcyI6IFsKKyAgICAg
ICAgICAgICAgICB7ICJuYW1lIjogInNvdXJjZUlkIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2Ny
aXB0aW9uIjogIlRoZSBpbnB1dCBzb3VyY2Ugd2hvc2Ugc3RhdGUgaXMgZGVzY3JpYmVkIGJ5IHRo
aXMgb2JqZWN0LiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInByZXNzZWRDaGFyS2V5
IiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIkZv
ciAna2V5Ym9hcmQnIGlucHV0IHNvdXJjZXMsIHNwZWNpZmllcyBhIGNoYXJhY3RlciBrZXkgdGhh
dCBoYXMgJ3ByZXNzZWQnIHN0YXRlLiBVbm1lbnRpb25lZCBjaGFyYWN0ZXIga2V5cyBhcmUgYXNz
dW1lZCB0byBoYXZlIGEgJ3JlbGVhc2VkJyBzdGF0ZS4iIH0sCisgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJwcmVzc2VkVmlydHVhbEtleSIsICIkcmVmIjogIlZpcnR1YWxLZXkiLCAib3B0aW9u
YWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiRm9yICdrZXlib2FyZCcgaW5wdXQgc291cmNlcywg
c3BlY2lmaWVzIGEgdmlydHVhbCBrZXkgdGhhdCBoYXMgYSAncHJlc3NlZCcgc3RhdGUuIFVubWVu
dGlvbmVkIHZpcnR1YWwga2V5cyBhcmUgYXNzdW1lZCB0byBoYXZlIGEgJ3JlbGVhc2VkJyBzdGF0
ZS4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJwcmVzc2VkQnV0dG9uIiwgIiRyZWYi
OiAiTW91c2VCdXR0b24iLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiRm9yICdt
b3VzZScgaW5wdXQgc291cmNlcywgc3BlY2lmaWVzIHdoaWNoIG1vdXNlIGJ1dHRvbiBoYXMgYSAn
cHJlc3NlZCcgc3RhdGUuIFVubWVudGlvbmVkIG1vdXNlIGJ1dHRvbnMgYXJlIGFzc3VtZWQgdG8g
aGF2ZSBhICdyZWxlYXNlZCcgc3RhdGUuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
bG9jYXRpb24iLCAiJHJlZiI6ICJQb2ludCIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlv
biI6ICJGb3IgJ21vdXNlJyBvciAndG91Y2gnIGlucHV0IHNvdXJjZXMsIHNwZWNpZmllcyBhIGxv
Y2F0aW9uIGluIHZpZXcgY29vcmRpbmF0ZXMgdG8gd2hpY2ggdGhlIGlucHV0IHNvdXJjZSBzaG91
bGQgdHJhbnNpdGlvbi4gVHJhbnNpdGlvbmluZyB0byB0aGlzIHN0YXRlIG1heSBpbnRlcnBvbGF0
ZSBpbnRlbWVkaWF0ZSBpbnB1dCBzb3VyY2Ugc3RhdGVzIHRvIGJldHRlciBzaW11bGF0ZSByZWFs
IHVzZXIgbW92ZW1lbnRzIGFuZCBnZXN0dXJlcy4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJkdXJhdGlvbiIsICJ0eXBlIjogImludGVnZXIiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVz
Y3JpcHRpb24iOiAiVGhlIG1pbmltdW0gbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0aGF0IG11c3Qg
ZWxhcHNlIHdoaWxlIHRoZSByZWxldmFudCBpbnB1dCBzb3VyY2UgdHJhbnNpdGlvbnMgdG8gdGhp
cyBzdGF0ZS4iIH0KKyAgICAgICAgICAgIF0KICAgICAgICAgfQogICAgIF0sCiAgICAgImNvbW1h
bmRzIjogWwpAQCAtNDEzLDYgKzQ1NCwyNCBAQAogICAgICAgICAgICAgXSwKICAgICAgICAgICAg
ICJhc3luYyI6IHRydWUKICAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUi
OiAicGVyZm9ybUludGVyYWN0aW9uU2VxdWVuY2UiLAorICAgICAgICAgICAgImRlc2NyaXB0aW9u
IjogIlBlcmZvcm0gbXVsdGlwbGUgc2ltdWxhdGVkIGludGVyYWN0aW9ucyBvdmVyIHRpbWUgdXNp
bmcgYSBsaXN0IG9mIGlucHV0IHNvdXJjZXMgYW5kIGEgbGlzdCBvZiBzdGVwcywgd2hlcmUgZWFj
aCBzdGVwIHNwZWNpZmllcyBhIHN0YXRlIGZvciBlYWNoIGlucHV0IHNvdXJjZSBhdCB0aGUgdGlt
ZSB0aGF0IHN0ZXAgaXMgcGVyZm9ybWVkLiIsCisgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsK
KyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImhhbmRsZSIsICIkcmVmIjogIkJyb3dzaW5nQ29u
dGV4dEhhbmRsZSIsICJkZXNjcmlwdGlvbiI6ICJUaGUgYnJvd3NpbmcgY29udGV4dCB0byBiZSBp
bnRlcmFjdGVkIHdpdGguIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaW5wdXRTb3Vy
Y2VzIiwgInR5cGUiOiAiYXJyYXkiLCAiaXRlbXMiOiB7ICIkcmVmIjogIklucHV0U291cmNlIiB9
LCAiZGVzY3JpcHRpb24iOiAiQWxsIGlucHV0IHNvdXJjZXMgdGhhdCBhcmUgdXNlZCB0byBwZXJm
b3JtIHRoaXMgaW50ZXJhY3Rpb24gc2VxdWVuY2UuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAic3RlcHMiLCAidHlwZSI6ICJhcnJheSIsICJpdGVtcyI6IHsgIiRyZWYiOiAiSW50ZXJh
Y3Rpb25TdGVwIiB9LCAiZGVzY3JpcHRpb24iOiAiQSBsaXN0IG9mIHN0ZXBzIHRoYXQgYXJlIGV4
ZWN1dGVkIGluIG9yZGVyLiIgfQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJhc3luYyI6
IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiY2FuY2Vs
SW50ZXJhY3Rpb25TZXF1ZW5jZSIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ2FuY2Vs
IGFuIGFjdGl2ZSBpbnRlcmFjdGlvbiBzZXF1ZW5jZSB0aGF0IGlzIGN1cnJlbnRseSBpbiBwcm9n
cmVzcy4iLAorICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJoYW5kbGUiLCAiJHJlZiI6ICJCcm93c2luZ0NvbnRleHRIYW5kbGUiLCAiZGVzY3Jp
cHRpb24iOiAiVGhlIGJyb3dzaW5nIGNvbnRleHQgdG8gYmUgaW50ZXJhY3RlZCB3aXRoLiIgfQor
ICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJhc3luYyI6IHRydWUKKyAgICAgICAgfSwKICAg
ICAgICAgewogICAgICAgICAgICAgIm5hbWUiOiAidGFrZVNjcmVlbnNob3QiLAogICAgICAgICAg
ICAgImRlc2NyaXB0aW9uIjogIlRha2UgYSBzY3JlZW5zaG90IG9mIHRoZSBjdXJyZW50IHBhZ2Ug
b3IgZ2l2ZW4gZWxlbWVudCBpbiBhIGJyb3dzaW5nIGNvbnRleHQuIiwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vU2ltdWxhdGVkSW5wdXRE
aXNwYXRjaGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZDU4MmJiNjBhNjI3MTFhMzYyOTA2MWJlOTI4NDNj
NjJlMDI5NjEyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0
b21hdGlvbi9TaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuY3BwCkBAIC0wLDAgKzEsMjcyIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNpbXVsYXRlZElucHV0
RGlzcGF0Y2hlci5oIgorCisjaW5jbHVkZSAiQXV0b21hdGlvblByb3RvY29sT2JqZWN0cy5oIgor
I2luY2x1ZGUgIldlYkF1dG9tYXRpb25TZXNzaW9uLmgiCisjaW5jbHVkZSAiV2ViQXV0b21hdGlv
blNlc3Npb25NYWNyb3MuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1NpbXVsYXRlZElucHV0
S2V5RnJhbWU6OlNpbXVsYXRlZElucHV0S2V5RnJhbWUoVmVjdG9yPFN0YXRlRW50cnk+JiYgZW50
cmllcykKKyAgICA6IHN0YXRlcyhXVEZNb3ZlKGVudHJpZXMpKQoreworfQorCitTZWNvbmRzIFNp
bXVsYXRlZElucHV0S2V5RnJhbWU6Om1heGltdW1EdXJhdGlvbigpIGNvbnN0Cit7CisgICAgLy8g
VGhlICJjb21wdXRlIHRoZSB0aWNrIGR1cmF0aW9uIiBhbGdvcml0aG0gKMKnMTcuNCBEaXNwYXRj
aGluZyBBY3Rpb25zKS4KKyAgICBTZWNvbmRzIHJlc3VsdDsKKyAgICBmb3IgKGF1dG8mIGVudHJ5
IDogc3RhdGVzKQorICAgICAgICByZXN1bHQgPSBzdGQ6Om1heChyZXN1bHQsIGVudHJ5LnNlY29u
ZC5kdXJhdGlvbi52YWx1ZV9vcihTZWNvbmRzKDApKSk7CisgICAgCisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKworU2ltdWxhdGVkSW5wdXRLZXlGcmFtZSBTaW11bGF0ZWRJbnB1dEtleUZyYW1lOjpr
ZXlGcmFtZUZyb21TdGF0ZU9mSW5wdXRTb3VyY2VzKEhhc2hTZXQ8UmVmPFNpbXVsYXRlZElucHV0
U291cmNlPj4mIGlucHV0U291cmNlcykKK3sKKyAgICAvLyBUaGUgY2xpZW50IG9mIHRoaXMgY2xh
c3MgaXMgcmVxdWlyZWQgdG8gaW50ZXJuIFNpbXVsYXRlZElucHV0U291cmNlIGluc3RhbmNlcyBp
ZiB0aGUgbGFzdCBzdGF0ZQorICAgIC8vIGZyb20gdGhlIHByZXZpb3VzIGNvbW1hbmQgc2hvdWxk
IGJlIHVzZWQgYXMgdGhlIGluaXRhbCBzdGF0ZSBmb3IgdGhlIG5leHQgY29tbWFuZC4gVGhpcyBp
cyB0aGUKKyAgICAvLyBjYXNlIGZvciBQZXJmb3JtIEFjdGlvbnMgYW5kIFJlbGVhc2UgQWN0aW9u
cywgYnV0IG5vdCBFbGVtZW50IENsaWNrIG9yIEVsZW1lbnQgU2VuZCBLZXlzLgorICAgIFZlY3Rv
cjxTaW11bGF0ZWRJbnB1dEtleUZyYW1lOjpTdGF0ZUVudHJ5PiBlbnRyaWVzOworICAgIGVudHJp
ZXMucmVzZXJ2ZUNhcGFjaXR5KGlucHV0U291cmNlcy5zaXplKCkpOworCisgICAgZm9yIChhdXRv
JiBpbnB1dFNvdXJjZSA6IGlucHV0U291cmNlcykKKyAgICAgICAgZW50cmllcy51bmNoZWNrZWRB
cHBlbmQoc3RkOjpwYWlyPFNpbXVsYXRlZElucHV0U291cmNlJiwgU2ltdWxhdGVkSW5wdXRTb3Vy
Y2VTdGF0ZT4geyBpbnB1dFNvdXJjZS5nZXQoKSwgaW5wdXRTb3VyY2UtPnN0YXRlIH0pOworCisg
ICAgcmV0dXJuIFNpbXVsYXRlZElucHV0S2V5RnJhbWUoV1RGTW92ZShlbnRyaWVzKSk7Cit9CisK
K1NpbXVsYXRlZElucHV0S2V5RnJhbWUgU2ltdWxhdGVkSW5wdXRLZXlGcmFtZTo6a2V5RnJhbWVU
b1Jlc2V0SW5wdXRTb3VyY2VzKEhhc2hTZXQ8UmVmPFNpbXVsYXRlZElucHV0U291cmNlPj4mIGlu
cHV0U291cmNlcykKK3sKKyAgICBWZWN0b3I8U2ltdWxhdGVkSW5wdXRLZXlGcmFtZTo6U3RhdGVF
bnRyeT4gZW50cmllczsKKyAgICBlbnRyaWVzLnJlc2VydmVDYXBhY2l0eShpbnB1dFNvdXJjZXMu
c2l6ZSgpKTsKKworICAgIGZvciAoYXV0byYgaW5wdXRTb3VyY2UgOiBpbnB1dFNvdXJjZXMpCisg
ICAgICAgIGVudHJpZXMudW5jaGVja2VkQXBwZW5kKHN0ZDo6cGFpcjxTaW11bGF0ZWRJbnB1dFNv
dXJjZSYsIFNpbXVsYXRlZElucHV0U291cmNlU3RhdGU+IHsgaW5wdXRTb3VyY2UuZ2V0KCksIFNp
bXVsYXRlZElucHV0U291cmNlU3RhdGU6OmVtcHR5U3RhdGUoKSB9KTsKKworICAgIHJldHVybiBT
aW11bGF0ZWRJbnB1dEtleUZyYW1lKFdURk1vdmUoZW50cmllcykpOworfQorICAgIAorU2ltdWxh
dGVkSW5wdXREaXNwYXRjaGVyOjpTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIoV2ViUGFnZVByb3h5
JiBwYWdlLCBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OkNsaWVudCYgY2xpZW50KQorICAgIDog
bV9wYWdlKHBhZ2UpCisgICAgLCBtX2NsaWVudChjbGllbnQpCisgICAgLCBtX2tleUZyYW1lVHJh
bnNpdGlvbkR1cmF0aW9uVGltZXIoUnVuTG9vcDo6Y3VycmVudCgpLCB0aGlzLCAmU2ltdWxhdGVk
SW5wdXREaXNwYXRjaGVyOjprZXlGcmFtZVRyYW5zaXRpb25EdXJhdGlvblRpbWVyRmlyZWQpCit7
Cit9CisKK1NpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6flNpbXVsYXRlZElucHV0RGlzcGF0Y2hl
cigpCit7CisgICAgQVNTRVJUKCFtX3J1bkNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICBBU1NFUlQo
IW1fa2V5RnJhbWVUcmFuc2l0aW9uRHVyYXRpb25UaW1lci5pc0FjdGl2ZSgpKTsKK30KKworYm9v
bCBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OmlzQWN0aXZlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gISFtX3J1bkNvbXBsZXRpb25IYW5kbGVyOworfQorCit2b2lkIFNpbXVsYXRlZElucHV0RGlz
cGF0Y2hlcjo6a2V5RnJhbWVUcmFuc2l0aW9uRHVyYXRpb25UaW1lckZpcmVkKCkKK3sKKyAgICBB
U1NFUlQobV9rZXlGcmFtZVRyYW5zaXRpb25Db21wbGV0aW9uSGFuZGxlcik7CisKKyAgICBtX2tl
eUZyYW1lVHJhbnNpdGlvbkR1cmF0aW9uVGltZXIuc3RvcCgpOworCisgICAgaWYgKGlzS2V5RnJh
bWVUcmFuc2l0aW9uQ29tcGxldGUoKSkgeworICAgICAgICBhdXRvIGZpbmlzaCA9IHN0ZDo6ZXhj
aGFuZ2UobV9rZXlGcmFtZVRyYW5zaXRpb25Db21wbGV0aW9uSGFuZGxlciwgbnVsbHB0cik7Cisg
ICAgICAgIGZpbmlzaChzdGQ6Om51bGxvcHQpOworICAgIH0KK30KKworYm9vbCBTaW11bGF0ZWRJ
bnB1dERpc3BhdGNoZXI6OmlzS2V5RnJhbWVUcmFuc2l0aW9uQ29tcGxldGUoKSBjb25zdAorewor
ICAgIEFTU0VSVChtX2tleWZyYW1lSW5kZXggPCBtX2tleWZyYW1lcy5zaXplKCkpOworCisgICAg
aWYgKG1faW5wdXRTb3VyY2VTdGF0ZUluZGV4IDwgbV9rZXlmcmFtZXNbbV9rZXlmcmFtZUluZGV4
XS5zdGF0ZXMuc2l6ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobV9rZXlG
cmFtZVRyYW5zaXRpb25EdXJhdGlvblRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFNpbXVsYXRlZElucHV0RGlzcGF0
Y2hlcjo6dHJhbnNpdGlvblRvTmV4dEtleUZyYW1lKCkKK3sKKyAgICArK21fa2V5ZnJhbWVJbmRl
eDsKKyAgICBpZiAobV9rZXlmcmFtZUluZGV4ID09IG1fa2V5ZnJhbWVzLnNpemUoKSkgeworICAg
ICAgICBmaW5pc2hEaXNwYXRjaGluZyhzdGQ6Om51bGxvcHQpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgdHJhbnNpdGlvbkJldHdlZW5LZXlGcmFtZXMobV9rZXlmcmFtZXNbbV9rZXlm
cmFtZUluZGV4IC0gMV0sIG1fa2V5ZnJhbWVzW21fa2V5ZnJhbWVJbmRleF0sIFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKHN0ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1h
bmRFcnJvcj4gZXJyb3IpIHsKKyAgICAgICAgaWYgKGVycm9yKSB7CisgICAgICAgICAgICBmaW5p
c2hEaXNwYXRjaGluZyhlcnJvcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICB0cmFuc2l0aW9uVG9OZXh0S2V5RnJhbWUoKTsKKyAgICB9KTsKK30KKwordm9pZCBT
aW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OnRyYW5zaXRpb25Ub05leHRJbnB1dFNvdXJjZVN0YXRl
KCkKK3sKKyAgICBpZiAoaXNLZXlGcmFtZVRyYW5zaXRpb25Db21wbGV0ZSgpKSB7CisgICAgICAg
IGF1dG8gZmluaXNoID0gc3RkOjpleGNoYW5nZShtX2tleUZyYW1lVHJhbnNpdGlvbkNvbXBsZXRp
b25IYW5kbGVyLCBudWxscHRyKTsKKyAgICAgICAgZmluaXNoKHN0ZDo6bnVsbG9wdCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBJbiB0aGlzIGNhc2UsIHRyYW5zaXRpb25zIGFy
ZSBkb25lIGJ1dCB3ZSBuZWVkIHRvIHdhaXQgZm9yIHRoZSB0aWNrIHRpbWVyLgorICAgIGlmICht
X2lucHV0U291cmNlU3RhdGVJbmRleCA9PSBtX2tleWZyYW1lc1ttX2tleWZyYW1lSW5kZXhdLnN0
YXRlcy5zaXplKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8mIG5leHRLZXlGcmFtZSA9
IG1fa2V5ZnJhbWVzW21fa2V5ZnJhbWVJbmRleF07CisgICAgYXV0byYgcG9zdFN0YXRlRW50cnkg
PSBuZXh0S2V5RnJhbWUuc3RhdGVzW21faW5wdXRTb3VyY2VTdGF0ZUluZGV4XTsKKyAgICBTaW11
bGF0ZWRJbnB1dFNvdXJjZSYgaW5wdXRTb3VyY2UgPSBwb3N0U3RhdGVFbnRyeS5maXJzdDsKKwor
ICAgIHRyYW5zaXRpb25JbnB1dFNvdXJjZVRvU3RhdGUoaW5wdXRTb3VyY2UsIHBvc3RTdGF0ZUVu
dHJ5LnNlY29uZCwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oc3RkOjpv
cHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPiBlcnJvcikgeworICAgICAgICBpZiAoZXJy
b3IpIHsKKyAgICAgICAgICAgIGF1dG8gZmluaXNoID0gc3RkOjpleGNoYW5nZShtX2tleUZyYW1l
VHJhbnNpdGlvbkNvbXBsZXRpb25IYW5kbGVyLCBudWxscHRyKTsKKyAgICAgICAgICAgIGZpbmlz
aChlcnJvcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBQ
ZXJmb3JtIHN0YXRlIHRyYW5zaXRpb25zIGluIHRoZSBvcmRlciBzcGVjaWZpZWQgYnkgdGhlIGN1
cnJlbnRLZXlGcmFtZS4KKyAgICAgICAgKyttX2lucHV0U291cmNlU3RhdGVJbmRleDsKKworICAg
ICAgICB0cmFuc2l0aW9uVG9OZXh0SW5wdXRTb3VyY2VTdGF0ZSgpOworICAgIH0pOworfQorCit2
b2lkIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6dHJhbnNpdGlvbkJldHdlZW5LZXlGcmFtZXMo
Y29uc3QgU2ltdWxhdGVkSW5wdXRLZXlGcmFtZSYgYSwgY29uc3QgU2ltdWxhdGVkSW5wdXRLZXlG
cmFtZSYgYiwgQXV0b21hdGlvbkNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIp
Cit7CisgICAgbV9pbnB1dFNvdXJjZVN0YXRlSW5kZXggPSAwOworCisgICAgLy8gVGhlICJkaXNw
YXRjaCB0aWNrIGFjdGlvbnMiIGFsZ29yaXRobSAowqcxNy40IERpc3BhdGNoaW5nIEFjdGlvbnMp
LgorICAgIG1fa2V5RnJhbWVUcmFuc2l0aW9uQ29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKTsKKyAgICBtX2tleUZyYW1lVHJhbnNpdGlvbkR1cmF0aW9uVGltZXIu
c3RhcnRPbmVTaG90KGIubWF4aW11bUR1cmF0aW9uKCkpOworCisgICAgdHJhbnNpdGlvblRvTmV4
dElucHV0U291cmNlU3RhdGUoKTsKK30KKwordm9pZCBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6
OnRyYW5zaXRpb25JbnB1dFNvdXJjZVRvU3RhdGUoU2ltdWxhdGVkSW5wdXRTb3VyY2UmIGlucHV0
U291cmNlLCBjb25zdCBTaW11bGF0ZWRJbnB1dFNvdXJjZVN0YXRlJiBuZXdTdGF0ZSwgQXV0b21h
dGlvbkNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgLy8gTWFr
ZSBjYXNlcyBhbmQgY29uZGl0aW9uYWxzIG1vcmUgcmVhZGFibGUgYnkgYWxpYXNpbmcgcHJlL3Bv
c3Qgc3RhdGVzIGFzICdhJyBhbmQgJ2InLgorICAgIFNpbXVsYXRlZElucHV0U291cmNlU3RhdGUg
YSA9IGlucHV0U291cmNlLnN0YXRlOworICAgIFNpbXVsYXRlZElucHV0U291cmNlU3RhdGUgYiA9
IG5ld1N0YXRlOworCisgICAgQXV0b21hdGlvbkNvbXBsZXRpb25IYW5kbGVyIGV2ZW50RGlzcGF0
Y2hGaW5pc2hlZCA9IFsmaW5wdXRTb3VyY2UsICZuZXdTdGF0ZSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oc3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29t
bWFuZEVycm9yPiBlcnJvcikgeworICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKGVycm9yKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIGlucHV0U291cmNlLnN0YXRlID0gbmV3U3RhdGU7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7CisgICAgfTsKKworICAgIHN3aXRjaCAoaW5wdXRTb3Vy
Y2UudHlwZSkgeworICAgIGNhc2UgU2ltdWxhdGVkSW5wdXRTb3VyY2U6OlR5cGU6Ok51bGw6Cisg
ICAgICAgIC8vIFRoZSBtYXhpbXVtIGR1cmF0aW9uIGlzIGhhbmRsZWQgYXQgdGhlIGtleWZyYW1l
IGxldmVsIGJ5IG1fa2V5RnJhbWVUcmFuc2l0aW9uRHVyYXRpb25UaW1lci4KKyAgICAgICAgZXZl
bnREaXNwYXRjaEZpbmlzaGVkKHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgU2ltdWxhdGVkSW5wdXRTb3VyY2U6OlR5cGU6Ok1vdXNlOiB7CisgICAgICAgIC8vIFRoZSAi
ZGlzcGF0Y2ggYSBwb2ludGVye0Rvd24sVXAsTW92ZX0gYWN0aW9uIiBhbGdvcml0aG1zICjCpzE3
LjQgRGlzcGF0Y2hpbmcgQWN0aW9ucykuCisgICAgICAgIGlmICghYS5wcmVzc2VkTW91c2VCdXR0
b24gJiYgYi5wcmVzc2VkTW91c2VCdXR0b24pCisgICAgICAgICAgICBtX2NsaWVudC5zaW11bGF0
ZU1vdXNlSW50ZXJhY3Rpb24obV9wYWdlLCBNb3VzZUludGVyYWN0aW9uOjpEb3duLCBiLnByZXNz
ZWRNb3VzZUJ1dHRvbi52YWx1ZSgpLCBiLmxvY2F0aW9uLnZhbHVlKCksIFdURk1vdmUoZXZlbnRE
aXNwYXRjaEZpbmlzaGVkKSk7CisgICAgICAgIGVsc2UgaWYgKGEucHJlc3NlZE1vdXNlQnV0dG9u
ICYmICFiLnByZXNzZWRNb3VzZUJ1dHRvbikKKyAgICAgICAgICAgIG1fY2xpZW50LnNpbXVsYXRl
TW91c2VJbnRlcmFjdGlvbihtX3BhZ2UsIE1vdXNlSW50ZXJhY3Rpb246OlVwLCBhLnByZXNzZWRN
b3VzZUJ1dHRvbi52YWx1ZSgpLCBiLmxvY2F0aW9uLnZhbHVlKCksIFdURk1vdmUoZXZlbnREaXNw
YXRjaEZpbmlzaGVkKSk7CisgICAgICAgIGVsc2UgaWYgKGEubG9jYXRpb24gIT0gYi5sb2NhdGlv
bikgeworICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgZG9lcyBub3QgaW50ZXJwb2xhdGUgbW91
c2Vtb3ZlcyBwZXIgdGhlICJwZXJmb3JtIGEgcG9pbnRlciBtb3ZlIiBhbGdvcml0aG0gKMKnMTcu
NCBEaXNwYXRjaGluZyBBY3Rpb25zKS4KKyAgICAgICAgICAgIG1fY2xpZW50LnNpbXVsYXRlTW91
c2VJbnRlcmFjdGlvbihtX3BhZ2UsIE1vdXNlSW50ZXJhY3Rpb246Ok1vdmUsIGIucHJlc3NlZE1v
dXNlQnV0dG9uLnZhbHVlX29yKE1vdXNlQnV0dG9uOjpOb0J1dHRvbiksIGIubG9jYXRpb24udmFs
dWUoKSwgV1RGTW92ZShldmVudERpc3BhdGNoRmluaXNoZWQpKTsKKyAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICBldmVudERpc3BhdGNoRmluaXNoZWQoc3RkOjpudWxsb3B0KTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorICAgIGNhc2UgU2ltdWxhdGVkSW5wdXRTb3VyY2U6OlR5cGU6OktleWJv
YXJkOgorICAgICAgICAvLyBUaGUgImRpc3BhdGNoIGEga2V5e0Rvd24sVXB9IGFjdGlvbiIgYWxn
b3JpdGhtcyAowqcxNy40IERpc3BhdGNoaW5nIEFjdGlvbnMpLgorICAgICAgICBpZiAoKCFhLnBy
ZXNzZWRDaGFyS2V5ICYmIGIucHJlc3NlZENoYXJLZXkpIHx8ICghYS5wcmVzc2VkVmlydHVhbEtl
eSAmJiBiLnByZXNzZWRWaXJ0dWFsS2V5KSkKKyAgICAgICAgICAgIG1fY2xpZW50LnNpbXVsYXRl
S2V5Ym9hcmRJbnRlcmFjdGlvbihtX3BhZ2UsIEtleWJvYXJkSW50ZXJhY3Rpb246OktleVByZXNz
LCBiLnByZXNzZWRWaXJ0dWFsS2V5LCBiLnByZXNzZWRDaGFyS2V5LCBXVEZNb3ZlKGV2ZW50RGlz
cGF0Y2hGaW5pc2hlZCkpOworICAgICAgICBlbHNlIGlmICgoYS5wcmVzc2VkQ2hhcktleSAmJiAh
Yi5wcmVzc2VkQ2hhcktleSkgfHwgKGEucHJlc3NlZFZpcnR1YWxLZXkgJiYgIWIucHJlc3NlZFZp
cnR1YWxLZXkpKQorICAgICAgICAgICAgbV9jbGllbnQuc2ltdWxhdGVLZXlib2FyZEludGVyYWN0
aW9uKG1fcGFnZSwgS2V5Ym9hcmRJbnRlcmFjdGlvbjo6S2V5UmVsZWFzZSwgYS5wcmVzc2VkVmly
dHVhbEtleSwgYS5wcmVzc2VkQ2hhcktleSwgV1RGTW92ZShldmVudERpc3BhdGNoRmluaXNoZWQp
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZXZlbnREaXNwYXRjaEZpbmlzaGVkKHN0ZDo6
bnVsbG9wdCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2ltdWxhdGVkSW5wdXRTb3VyY2U6
OlR5cGU6OlRvdWNoOgorICAgICAgICAvLyBOb3Qgc3VwcG9ydGVkIHlldC4KKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGV2ZW50RGlzcGF0Y2hGaW5pc2hlZChBVVRPTUFU
SU9OX0NPTU1BTkRfRVJST1JfV0lUSF9OQU1FKE5vdEltcGxlbWVudGVkKSk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KK30KKwordm9pZCBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OnJ1bihWZWN0
b3I8U2ltdWxhdGVkSW5wdXRLZXlGcmFtZT4mJiBrZXlGcmFtZXMsIEhhc2hTZXQ8UmVmPFNpbXVs
YXRlZElucHV0U291cmNlPj4mIGlucHV0U291cmNlcywgQXV0b21hdGlvbkNvbXBsZXRpb25IYW5k
bGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUKCFpc0FjdGl2ZSgpKTsKKyAg
ICBpZiAoaXNBY3RpdmUoKSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihBVVRPTUFUSU9O
X0NPTU1BTkRfRVJST1JfV0lUSF9OQU1FKEludGVybmFsRXJyb3IpKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIG1fcnVuQ29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKTsKKyAgICBmb3IgKGNvbnN0IFJlZjxTaW11bGF0ZWRJbnB1dFNvdXJjZT4mIGlu
cHV0U291cmNlIDogaW5wdXRTb3VyY2VzKQorICAgICAgICBtX2lucHV0U291cmNlcy5hZGQoaW5w
dXRTb3VyY2UuY29weVJlZigpKTsKKworICAgIC8vIFRoZSAiZGlzcGF0Y2ggYWN0aW9ucyIgYWxn
b3JpdGhtICjCpzE3LjQgRGlzcGF0Y2hpbmcgQWN0aW9ucykuCisKKyAgICBtX2tleWZyYW1lcy5y
ZXNlcnZlQ2FwYWNpdHkoa2V5RnJhbWVzLnNpemUoKSArIDEpOworICAgIG1fa2V5ZnJhbWVzLmFw
cGVuZChTaW11bGF0ZWRJbnB1dEtleUZyYW1lOjprZXlGcmFtZUZyb21TdGF0ZU9mSW5wdXRTb3Vy
Y2VzKG1faW5wdXRTb3VyY2VzKSk7CisgICAgbV9rZXlmcmFtZXMuYXBwZW5kVmVjdG9yKFdURk1v
dmUoa2V5RnJhbWVzKSk7CisKKyAgICB0cmFuc2l0aW9uVG9OZXh0S2V5RnJhbWUoKTsKK30KKwor
dm9pZCBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OmNhbmNlbCgpCit7CisgICAgLy8gSWYgd2Ug
d2VyZSB3YWl0aW5nIGZvciBtX2NsaWVudCB0byBmaW5pc2ggYW4gaW50ZXJhY3Rpb24gYW5kIHRo
ZSBpbnRlcmFjdGlvbiBoYWQgYW4gZXJyb3IsCisgICAgLy8gdGhlbiB0aGUgcmVzdCBvZiB0aGUg
YXN5bmMgY2hhaW4gd2lsbCBoYXZlIGJlZW4gdG9ybiBkb3duLiBJZiB3ZSBhcmUganVzdCB3YWl0
aW5nIG9uIGEKKyAgICAvLyBkaXNwYXRjaCB0aW1lciwgdGhlbiB0aGlzIHdpbGwgY2FuY2VsIHRo
ZSB0aW1lciBhbmQgY2xlYXIKKworICAgIGlmIChpc0FjdGl2ZSgpKQorICAgICAgICBmaW5pc2hE
aXNwYXRjaGluZyhBVVRPTUFUSU9OX0NPTU1BTkRfRVJST1JfV0lUSF9OQU1FKEludGVybmFsRXJy
b3IpKTsKK30KKwordm9pZCBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OmZpbmlzaERpc3BhdGNo
aW5nKHN0ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4gZXJyb3IpCit7CisgICAg
bV9rZXlGcmFtZVRyYW5zaXRpb25EdXJhdGlvblRpbWVyLnN0b3AoKTsKKworICAgIGF1dG8gZmlu
aXNoID0gc3RkOjpleGNoYW5nZShtX3J1bkNvbXBsZXRpb25IYW5kbGVyLCBudWxscHRyKTsKKyAg
ICBtX2tleWZyYW1lcy5jbGVhcigpOworICAgIG1faW5wdXRTb3VyY2VzLmNsZWFyKCk7CisgICAg
bV9rZXlmcmFtZUluZGV4ID0gMDsKKyAgICBtX2lucHV0U291cmNlU3RhdGVJbmRleCA9IDA7CisK
KyAgICBmaW5pc2goZXJyb3IpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJraXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vU2ltdWxhdGVkSW5wdXREaXNw
YXRjaGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1NpbXVsYXRlZElu
cHV0RGlzcGF0Y2hlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2MDJjMmMyMjQwYmVhMWMwZmZlMGU5MGZhZDk4
ODFlMWQ1NGNiMjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
dXRvbWF0aW9uL1NpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5oCkBAIC0wLDAgKzEsMTYwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJXZWJFdmVudC5oIgorI2luY2x1
ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Cisj
aW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNp
bmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUgPHd0Zi9TZWNvbmRzLmg+CisjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1l
c3BhY2UgSW5zcGVjdG9yIHsgbmFtZXNwYWNlIFByb3RvY29sIHsgbmFtZXNwYWNlIEF1dG9tYXRp
b24geworZW51bSBjbGFzcyBFcnJvck1lc3NhZ2U7CitlbnVtIGNsYXNzIEtleWJvYXJkSW50ZXJh
Y3Rpb25UeXBlOworZW51bSBjbGFzcyBNb3VzZUludGVyYWN0aW9uOworZW51bSBjbGFzcyBWaXJ0
dWFsS2V5OworfSB9IH0KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIEF1dG9tYXRpb25D
b21tYW5kRXJyb3I7Cit1c2luZyBBdXRvbWF0aW9uQ29tcGxldGlvbkhhbmRsZXIgPSBXVEY6OkNv
bXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9y
Pik+OworCitjbGFzcyBXZWJQYWdlUHJveHk7CisKK3VzaW5nIEtleWJvYXJkSW50ZXJhY3Rpb24g
PSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpLZXlib2FyZEludGVyYWN0aW9uVHlw
ZTsKK3VzaW5nIFZpcnR1YWxLZXkgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpW
aXJ0dWFsS2V5OwordXNpbmcgQ2hhcktleSA9IGNoYXI7IC8vIEZvciBXZWJEcml2ZXIsIHRoaXMg
b25seSBuZWVkcyB0byBzdXBwb3J0IEFTQ0lJIGNoYXJhY3RlcnMgb24gMTAyLWtleSBrZXlib2Fy
ZC4KK3VzaW5nIE1vdXNlQnV0dG9uID0gV2ViTW91c2VFdmVudDo6QnV0dG9uOwordXNpbmcgTW91
c2VJbnRlcmFjdGlvbiA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlSW50
ZXJhY3Rpb247CisKK3N0cnVjdCBTaW11bGF0ZWRJbnB1dFNvdXJjZVN0YXRlIHsKKyAgICBzdGQ6
Om9wdGlvbmFsPENoYXJLZXk+IHByZXNzZWRDaGFyS2V5OworICAgIHN0ZDo6b3B0aW9uYWw8Vmly
dHVhbEtleT4gcHJlc3NlZFZpcnR1YWxLZXk7CisgICAgc3RkOjpvcHRpb25hbDxNb3VzZUJ1dHRv
bj4gcHJlc3NlZE1vdXNlQnV0dG9uOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SW50UG9p
bnQ+IGxvY2F0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gZHVyYXRpb247CisKKyAg
ICBzdGF0aWMgU2ltdWxhdGVkSW5wdXRTb3VyY2VTdGF0ZSBlbXB0eVN0YXRlKCkgeyByZXR1cm4g
U2ltdWxhdGVkSW5wdXRTb3VyY2VTdGF0ZSgpOyB9Cit9OworCitzdHJ1Y3QgU2ltdWxhdGVkSW5w
dXRTb3VyY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxTaW11bGF0ZWRJbnB1dFNvdXJjZT4geworcHVi
bGljOgorICAgIGVudW0gY2xhc3MgVHlwZSB7CisgICAgICAgIE51bGwsIC8vIFVzZWQgdG8gaW5k
dWNlIGEgbWluaW11bSBkdXJhdGlvbi4KKyAgICAgICAgS2V5Ym9hcmQsCisgICAgICAgIE1vdXNl
LAorICAgICAgICBUb3VjaCwKKyAgICB9OworCisgICAgVHlwZSB0eXBlOworCisgICAgLy8gVGhl
IGxhc3Qgc3RhdGUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgaW5wdXQgc291cmNlLgorICAgIFNpbXVs
YXRlZElucHV0U291cmNlU3RhdGUgc3RhdGU7CisKKyAgICBzdGF0aWMgUmVmPFNpbXVsYXRlZElu
cHV0U291cmNlPiBjcmVhdGUoVHlwZSB0eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU2ltdWxhdGVkSW5wdXRTb3VyY2UodHlwZSkpOworICAgIH0KKworcHJpdmF0ZToK
KyAgICBTaW11bGF0ZWRJbnB1dFNvdXJjZShUeXBlIHR5cGUpCisgICAgICAgIDogdHlwZSh0eXBl
KQorICAgICAgICAsIHN0YXRlKFNpbXVsYXRlZElucHV0U291cmNlU3RhdGU6OmVtcHR5U3RhdGUo
KSkKKyAgICB7IH0KK307CisKK3N0cnVjdCBTaW11bGF0ZWRJbnB1dEtleUZyYW1lIHsKK3B1Ymxp
YzoKKyAgICB1c2luZyBTdGF0ZUVudHJ5ID0gc3RkOjpwYWlyPFNpbXVsYXRlZElucHV0U291cmNl
JiwgU2ltdWxhdGVkSW5wdXRTb3VyY2VTdGF0ZT47CisKKyAgICBleHBsaWNpdCBTaW11bGF0ZWRJ
bnB1dEtleUZyYW1lKFZlY3RvcjxTdGF0ZUVudHJ5PiYmKTsKKyAgICBTZWNvbmRzIG1heGltdW1E
dXJhdGlvbigpIGNvbnN0OworCisgICAgc3RhdGljIFNpbXVsYXRlZElucHV0S2V5RnJhbWUga2V5
RnJhbWVGcm9tU3RhdGVPZklucHV0U291cmNlcyhIYXNoU2V0PFJlZjxTaW11bGF0ZWRJbnB1dFNv
dXJjZT4+Jik7CisgICAgc3RhdGljIFNpbXVsYXRlZElucHV0S2V5RnJhbWUga2V5RnJhbWVUb1Jl
c2V0SW5wdXRTb3VyY2VzKEhhc2hTZXQ8UmVmPFNpbXVsYXRlZElucHV0U291cmNlPj4mKTsKKwor
ICAgIFZlY3RvcjxTdGF0ZUVudHJ5PiBzdGF0ZXM7Cit9OworCitjbGFzcyBTaW11bGF0ZWRJbnB1
dERpc3BhdGNoZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI+
IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIpOwor
cHVibGljOgorICAgIGNsYXNzIENsaWVudCB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFs
IH5DbGllbnQoKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIHNpbXVsYXRlTW91c2VJbnRlcmFj
dGlvbihXZWJQYWdlUHJveHkmLCBNb3VzZUludGVyYWN0aW9uLCBXZWJNb3VzZUV2ZW50OjpCdXR0
b24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBsb2NhdGlvbkluVmlldywgQXV0b21hdGlvbkNv
bXBsZXRpb25IYW5kbGVyJiYpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHNpbXVsYXRlS2V5
Ym9hcmRJbnRlcmFjdGlvbihXZWJQYWdlUHJveHkmLCBLZXlib2FyZEludGVyYWN0aW9uLCBzdGQ6
Om9wdGlvbmFsPFZpcnR1YWxLZXk+LCBzdGQ6Om9wdGlvbmFsPENoYXJLZXk+LCBBdXRvbWF0aW9u
Q29tcGxldGlvbkhhbmRsZXImJikgPSAwOworICAgIH07CisKKyAgICBzdGF0aWMgUmVmPFNpbXVs
YXRlZElucHV0RGlzcGF0Y2hlcj4gY3JlYXRlKFdlYlBhZ2VQcm94eSYgcGFnZSwgU2ltdWxhdGVk
SW5wdXREaXNwYXRjaGVyOjpDbGllbnQmIGNsaWVudCkKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcihwYWdlLCBjbGllbnQpKTsKKyAg
ICB9CisKKyAgICB+U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyKCk7CisKKyAgICB2b2lkIHJ1bihW
ZWN0b3I8U2ltdWxhdGVkSW5wdXRLZXlGcmFtZT4mJiBrZXlGcmFtZXMsIEhhc2hTZXQ8UmVmPFNp
bXVsYXRlZElucHV0U291cmNlPj4mIGlucHV0U291cmNlcywgQXV0b21hdGlvbkNvbXBsZXRpb25I
YW5kbGVyJiYpOworICAgIHZvaWQgY2FuY2VsKCk7CisKKyAgICBib29sIGlzQWN0aXZlKCkgY29u
c3Q7CisKK3ByaXZhdGU6CisgICAgU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyKFdlYlBhZ2VQcm94
eSYsIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6Q2xpZW50Jik7CisKKyAgICB2b2lkIHRyYW5z
aXRpb25Ub05leHRLZXlGcmFtZSgpOworICAgIHZvaWQgdHJhbnNpdGlvbkJldHdlZW5LZXlGcmFt
ZXMoY29uc3QgU2ltdWxhdGVkSW5wdXRLZXlGcmFtZSYsIGNvbnN0IFNpbXVsYXRlZElucHV0S2V5
RnJhbWUmLCBBdXRvbWF0aW9uQ29tcGxldGlvbkhhbmRsZXImJik7CisKKyAgICB2b2lkIHRyYW5z
aXRpb25Ub05leHRJbnB1dFNvdXJjZVN0YXRlKCk7CisgICAgdm9pZCB0cmFuc2l0aW9uSW5wdXRT
b3VyY2VUb1N0YXRlKFNpbXVsYXRlZElucHV0U291cmNlJiwgY29uc3QgU2ltdWxhdGVkSW5wdXRT
b3VyY2VTdGF0ZSYgbmV3U3RhdGUsIEF1dG9tYXRpb25Db21wbGV0aW9uSGFuZGxlciYmKTsKKyAg
ICB2b2lkIGZpbmlzaERpc3BhdGNoaW5nKHN0ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRF
cnJvcj4pOworCisgICAgdm9pZCBrZXlGcmFtZVRyYW5zaXRpb25EdXJhdGlvblRpbWVyRmlyZWQo
KTsKKyAgICBib29sIGlzS2V5RnJhbWVUcmFuc2l0aW9uQ29tcGxldGUoKSBjb25zdDsKKworICAg
IFdlYlBhZ2VQcm94eSYgbV9wYWdlOworICAgIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6Q2xp
ZW50JiBtX2NsaWVudDsKKworICAgIEF1dG9tYXRpb25Db21wbGV0aW9uSGFuZGxlciBtX3J1bkNv
bXBsZXRpb25IYW5kbGVyOworICAgIEF1dG9tYXRpb25Db21wbGV0aW9uSGFuZGxlciBtX2tleUZy
YW1lVHJhbnNpdGlvbkNvbXBsZXRpb25IYW5kbGVyOworICAgIFJ1bkxvb3A6OlRpbWVyPFNpbXVs
YXRlZElucHV0RGlzcGF0Y2hlcj4gbV9rZXlGcmFtZVRyYW5zaXRpb25EdXJhdGlvblRpbWVyOwor
CisgICAgVmVjdG9yPFNpbXVsYXRlZElucHV0S2V5RnJhbWU+IG1fa2V5ZnJhbWVzOworICAgIEhh
c2hTZXQ8UmVmPFNpbXVsYXRlZElucHV0U291cmNlPj4gbV9pbnB1dFNvdXJjZXM7CisKKyAgICAv
LyBUaGUgcG9zaXRpb24gd2l0aGluIG1fa2V5ZnJhbWVzLgorICAgIHVuc2lnbmVkIG1fa2V5ZnJh
bWVJbmRleCB7IDAgfTsKKworICAgIC8vIFRoZSBwb3NpdGlvbiB3aXRoaW4gdGhlIGlucHV0IHNv
dXJjZSBzdGF0ZSB2ZWN0b3IgYXQgbV9rZXlmcmFtZXNbbV9rZXlmcmFtZUluZGV4XS4KKyAgICAv
LyBFdmVudHMgdGhhdCByZWZsZWN0IGlucHV0IHNvdXJjZSBzdGF0ZSB0cmFuc2l0aW9ucyBhcmUg
ZGlzcGF0Y2hlZCBzZXJpYWxseSBiYXNlZCBvbiB0aGlzIG9yZGVyLgorICAgIHVuc2lnbmVkIG1f
aW5wdXRTb3VyY2VTdGF0ZUluZGV4IHsgMCB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9t
YXRpb25TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2Vi
QXV0b21hdGlvblNlc3Npb24uY3BwCmluZGV4IGY1YjdkMzcxODI1NTBhY2QzNDFlYTgxMDJjZjAw
ZDAyNWI0MzhiMTIuLmM3MGFkMDEwZDhhOTE4NWU2ODZjNGIzNzU3ZTk2MDU4NzE3ZDc2NGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlv
blNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2Vi
QXV0b21hdGlvblNlc3Npb24uY3BwCkBAIC03Niw2ICs3NiwxMCBAQCBXZWJBdXRvbWF0aW9uU2Vz
c2lvbjo6V2ViQXV0b21hdGlvblNlc3Npb24oKQogICAgICwgbV9kb21haW5Ob3RpZmllcihzdGQ6
Om1ha2VfdW5pcXVlPEF1dG9tYXRpb25Gcm9udGVuZERpc3BhdGNoZXI+KG1fZnJvbnRlbmRSb3V0
ZXIpKQogICAgICwgbV9sb2FkVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmV2ViQXV0b21h
dGlvblNlc3Npb246OmxvYWRUaW1lckZpcmVkKQogeworICAgIC8vIFNldCB1cCBjYW5vbmljYWwg
aW5wdXQgc291cmNlcyB0byBiZSB1c2VkIGZvciAncGVyZm9ybUludGVyYWN0aW9uU2VxdWVuY2Un
IGFuZCAnY2FuY2VsSW50ZXJhY3Rpb25TZXF1ZW5jZScuCisgICAgbV9pbnB1dFNvdXJjZXMuYWRk
KFNpbXVsYXRlZElucHV0U291cmNlOjpjcmVhdGUoU2ltdWxhdGVkSW5wdXRTb3VyY2U6OlR5cGU6
Ok1vdXNlKSk7CisgICAgbV9pbnB1dFNvdXJjZXMuYWRkKFNpbXVsYXRlZElucHV0U291cmNlOjpj
cmVhdGUoU2ltdWxhdGVkSW5wdXRTb3VyY2U6OlR5cGU6OktleWJvYXJkKSk7CisgICAgbV9pbnB1
dFNvdXJjZXMuYWRkKFNpbXVsYXRlZElucHV0U291cmNlOjpjcmVhdGUoU2ltdWxhdGVkSW5wdXRT
b3VyY2U6OlR5cGU6Ok51bGwpKTsKIH0KIAogV2ViQXV0b21hdGlvblNlc3Npb246On5XZWJBdXRv
bWF0aW9uU2Vzc2lvbigpCkBAIC03MjMsMjggKzcyNywzMiBAQCB2b2lkIFdlYkF1dG9tYXRpb25T
ZXNzaW9uOjppbnNwZWN0b3JGcm9udGVuZExvYWRlZChjb25zdCBXZWJQYWdlUHJveHkmIHBhZ2Up
CiAKIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246Om1vdXNlRXZlbnRzRmx1c2hlZEZvclBhZ2Uo
Y29uc3QgV2ViUGFnZVByb3h5JiBwYWdlKQogewotICAgIGlmIChhdXRvIGNhbGxiYWNrID0gbV9w
ZW5kaW5nTW91c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS50YWtlKHBhZ2UucGFnZUlE
KCkpKSB7Ci0gICAgICAgIGlmIChtX3BlbmRpbmdNb3VzZUV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQ
ZXJQYWdlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIG1fc2ltdWxhdGluZ1VzZXJJbnRlcmFjdGlv
biA9IGZhbHNlOwotCisgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBtX3BlbmRpbmdNb3VzZUV2ZW50
c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlLnRha2UocGFnZS5wYWdlSUQoKSkpCiAgICAgICAgIGNh
bGxiYWNrKHN0ZDo6bnVsbG9wdCk7Ci0gICAgfQogfQogCiB2b2lkIFdlYkF1dG9tYXRpb25TZXNz
aW9uOjprZXlib2FyZEV2ZW50c0ZsdXNoZWRGb3JQYWdlKGNvbnN0IFdlYlBhZ2VQcm94eSYgcGFn
ZSkKIHsKLSAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1fcGVuZGluZ0tleWJvYXJkRXZlbnRzRmx1
c2hlZENhbGxiYWNrc1BlclBhZ2UudGFrZShwYWdlLnBhZ2VJRCgpKSkgewotICAgICAgICBpZiAo
bV9wZW5kaW5nS2V5Ym9hcmRFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS5pc0VtcHR5KCkp
Ci0gICAgICAgICAgICBtX3NpbXVsYXRpbmdVc2VySW50ZXJhY3Rpb24gPSBmYWxzZTsKLQorICAg
IGlmIChhdXRvIGNhbGxiYWNrID0gbV9wZW5kaW5nS2V5Ym9hcmRFdmVudHNGbHVzaGVkQ2FsbGJh
Y2tzUGVyUGFnZS50YWtlKHBhZ2UucGFnZUlEKCkpKQogICAgICAgICBjYWxsYmFjayhzdGQ6Om51
bGxvcHQpOwotICAgIH0KIH0KIAogdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6d2lsbENsb3Nl
UGFnZShjb25zdCBXZWJQYWdlUHJveHkmIHBhZ2UpCiB7CiAgICAgU3RyaW5nIGhhbmRsZSA9IGhh
bmRsZUZvcldlYlBhZ2VQcm94eShwYWdlKTsKICAgICBtX2RvbWFpbk5vdGlmaWVyLT5icm93c2lu
Z0NvbnRleHRDbGVhcmVkKGhhbmRsZSk7CisKKyAgICAvLyBDYW5jZWwgcGVuZGluZyBpbnRlcmFj
dGlvbnMgb24gdGhpcyBwYWdlLiBCeSBwcm92aWRpbmcgYW4gZXJyb3IsIHRoaXMgd2lsbCBjYXVz
ZSBzdWJzZXF1ZW50CisgICAgLy8gYWN0aW9ucyB0byBiZSBhYm9ydGVkIGFuZCB0aGUgU2ltdWxh
dGVkSW5wdXREaXNwYXRjaGVyOjpydW4oKSBjYWxsIHdpbGwgdW53aW5kIGFuZCBmYWlsLgorICAg
IGlmIChhdXRvIGNhbGxiYWNrID0gbV9wZW5kaW5nTW91c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2tz
UGVyUGFnZS50YWtlKHBhZ2UucGFnZUlEKCkpKQorICAgICAgICBjYWxsYmFjayhBVVRPTUFUSU9O
X0NPTU1BTkRfRVJST1JfV0lUSF9OQU1FKFdpbmRvd05vdEZvdW5kKSk7CisgICAgaWYgKGF1dG8g
Y2FsbGJhY2sgPSBtX3BlbmRpbmdNb3VzZUV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlLnRh
a2UocGFnZS5wYWdlSUQoKSkpCisgICAgICAgIGNhbGxiYWNrKEFVVE9NQVRJT05fQ09NTUFORF9F
UlJPUl9XSVRIX05BTUUoV2luZG93Tm90Rm91bmQpKTsKKworICAgIC8vIFRoZW4gdGVsbCB0aGUg
aW5wdXQgZGlzcGF0Y2hlciB0byBjYW5jZWwgc28gdGltZXJzIGFyZSBzdG9wcGVkLCBhbmQgbGV0
IGl0IGdvIG91dCBvZiBzY29wZS4KKyAgICBzdGQ6Om9wdGlvbmFsPFJlZjxTaW11bGF0ZWRJbnB1
dERpc3BhdGNoZXI+PiBpbnB1dERpc3BhdGNoZXIgPSBtX2lucHV0RGlzcGF0Y2hlcnNCeVBhZ2Uu
dGFrZShwYWdlLnBhZ2VJRCgpKTsKKyAgICBpZiAoaW5wdXREaXNwYXRjaGVyLmhhc192YWx1ZSgp
KQorICAgICAgICBpbnB1dERpc3BhdGNoZXIudmFsdWUoKS0+Y2FuY2VsKCk7CiB9CiAKIHN0YXRp
YyBib29sIGZpbGVDYW5CZUFjY2VwdGVkRm9yVXBsb2FkKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUs
IGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgYWxsb3dlZE1JTUVUeXBlcywgY29uc3QgSGFzaFNldDxT
dHJpbmc+JiBhbGxvd2VkRmlsZUV4dGVuc2lvbnMpCkBAIC0xMzY2LDYgKzEzNzQsODUgQEAgYm9v
bCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6c2hvdWxkQWxsb3dHZXRVc2VyTWVkaWFGb3JQYWdlKGNv
bnN0IFdlYlBhZ2VQcm94eSYpIGMKICAgICByZXR1cm4gbV9wZXJtaXNzaW9uRm9yR2V0VXNlck1l
ZGlhOwogfQogCitib29sIFdlYkF1dG9tYXRpb25TZXNzaW9uOjppc1NpbXVsYXRpbmdVc2VySW50
ZXJhY3Rpb24oKSBjb25zdAoreworICAgIGlmICghbV9wZW5kaW5nTW91c2VFdmVudHNGbHVzaGVk
Q2FsbGJhY2tzUGVyUGFnZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBp
ZiAoIW1fcGVuZGluZ0tleWJvYXJkRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2UuaXNFbXB0
eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworU2lt
dWxhdGVkSW5wdXREaXNwYXRjaGVyJiBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6aW5wdXREaXNwYXRj
aGVyRm9yUGFnZShXZWJQYWdlUHJveHkmIHBhZ2UpCit7CisgICAgcmV0dXJuIG1faW5wdXREaXNw
YXRjaGVyc0J5UGFnZS5lbnN1cmUocGFnZS5wYWdlSUQoKSwgWyZdIHsKKyAgICAgICAgcmV0dXJu
IFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6Y3JlYXRlKHBhZ2UsICp0aGlzKTsKKyAgICB9KS5p
dGVyYXRvci0+dmFsdWU7Cit9CisKK1NpbXVsYXRlZElucHV0U291cmNlKiBXZWJBdXRvbWF0aW9u
U2Vzc2lvbjo6aW5wdXRTb3VyY2VGb3JUeXBlKFNpbXVsYXRlZElucHV0U291cmNlOjpUeXBlIHR5
cGUpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IHRoaXMgc2hvdWxkIHVzZSBzb21ldGhpbmcgbGlr
ZSBWZWN0b3IncyBmaW5kTWF0Y2hpbmcoKS4KKyAgICBmb3IgKGF1dG8mIGlucHV0U291cmNlIDog
bV9pbnB1dFNvdXJjZXMpIHsKKyAgICAgICAgaWYgKGlucHV0U291cmNlLT50eXBlID09IHR5cGUp
CisgICAgICAgICAgICByZXR1cm4gJmlucHV0U291cmNlLmdldCgpOworICAgIH0KKworICAgIHJl
dHVybiBudWxscHRyOworfQorCisvLyBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OkNsaWVudCBB
UEkKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnNpbXVsYXRlTW91c2VJbnRlcmFjdGlvbihX
ZWJQYWdlUHJveHkmIHBhZ2UsIE1vdXNlSW50ZXJhY3Rpb24gaW50ZXJhY3Rpb24sIFdlYk1vdXNl
RXZlbnQ6OkJ1dHRvbiBtb3VzZUJ1dHRvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGxvY2F0
aW9uSW5WaWV3cG9ydCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPEF1dG9t
YXRpb25Db21tYW5kRXJyb3I+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBXZWJDb3Jl
OjpJbnRQb2ludCBsb2NhdGlvbkluVmlldyA9IFdlYkNvcmU6OkludFBvaW50KGxvY2F0aW9uSW5W
aWV3cG9ydC54KCksIGxvY2F0aW9uSW5WaWV3cG9ydC55KCkgKyBwYWdlLnRvcENvbnRlbnRJbnNl
dCgpKTsKKyAgICBwYWdlLmdldFdpbmRvd0ZyYW1lV2l0aENhbGxiYWNrKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlciksIHBhZ2UgPSBtYWtlUmVmKHBhZ2UpLCBpbnRlcmFjdGlvbiwgbW91c2VC
dXR0b24sIGxvY2F0aW9uSW5WaWV3XShXZWJDb3JlOjpGbG9hdFJlY3Qgd2luZG93RnJhbWUpIG11
dGFibGUgeworICAgICAgICBhdXRvIGNsaXBwZWRYID0gc3RkOjptaW4oc3RkOjptYXgoMC4wZiwg
KGZsb2F0KWxvY2F0aW9uSW5WaWV3LngoKSksIHdpbmRvd0ZyYW1lLnNpemUoKS53aWR0aCgpKTsK
KyAgICAgICAgYXV0byBjbGlwcGVkWSA9IHN0ZDo6bWluKHN0ZDo6bWF4KDAuMGYsIChmbG9hdCls
b2NhdGlvbkluVmlldy55KCkpLCB3aW5kb3dGcmFtZS5zaXplKCkuaGVpZ2h0KCkpOworICAgICAg
ICBpZiAoY2xpcHBlZFggIT0gbG9jYXRpb25JblZpZXcueCgpIHx8IGNsaXBwZWRZICE9IGxvY2F0
aW9uSW5WaWV3LnkoKSkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQVVUT01BVElP
Tl9DT01NQU5EX0VSUk9SX1dJVEhfTkFNRShUYXJnZXRPdXRPZkJvdW5kcykpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLy8gQnJpZGdlIHRoZSBmbHVzaGVkIGNh
bGxiYWNrIHRvIG91ciBjb21tYW5kJ3MgY29tcGxldGlvbiBoYW5kbGVyLgorICAgICAgICBhdXRv
IG1vdXNlRXZlbnRzRmx1c2hlZENhbGxiYWNrID0gW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildKHN0ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJv
cj4gZXJyb3IpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGVycm9yKTsKKyAgICAg
ICAgfTsKKworICAgICAgICBhdXRvJiBjYWxsYmFja0luTWFwID0gbV9wZW5kaW5nTW91c2VFdmVu
dHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS5hZGQocGFnZS0+cGFnZUlEKCksIG51bGxwdHIpLml0
ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgaWYgKGNhbGxiYWNrSW5NYXApCisgICAgICAgICAgICBj
YWxsYmFja0luTWFwKEFVVE9NQVRJT05fQ09NTUFORF9FUlJPUl9XSVRIX05BTUUoVGltZW91dCkp
OworICAgICAgICBjYWxsYmFja0luTWFwID0gV1RGTW92ZShtb3VzZUV2ZW50c0ZsdXNoZWRDYWxs
YmFjayk7CisKKyAgICAgICAgcGxhdGZvcm1TaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24ocGFnZSwg
aW50ZXJhY3Rpb24sIG1vdXNlQnV0dG9uLCBsb2NhdGlvbkluVmlldywgKFdlYkV2ZW50OjpNb2Rp
ZmllcnMpbV9jdXJyZW50TW9kaWZpZXJzKTsKKworICAgICAgICAvLyBJZiB0aGUgZXZlbnQgZG9l
cyBub3QgaGl0IHRlc3QgYW55dGhpbmcgaW4gdGhlIHdpbmRvdywgdGhlbiBpdCBtYXkgbm90IGhh
dmUgYmVlbiBkZWxpdmVyZWQuCisgICAgICAgIGlmIChjYWxsYmFja0luTWFwICYmICFwYWdlLT5p
c1Byb2Nlc3NpbmdNb3VzZUV2ZW50cygpKSB7CisgICAgICAgICAgICBhdXRvIGNhbGxiYWNrVG9D
YW5jZWwgPSBtX3BlbmRpbmdNb3VzZUV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlLnRha2Uo
cGFnZS0+cGFnZUlEKCkpOworICAgICAgICAgICAgY2FsbGJhY2tUb0NhbmNlbChzdGQ6Om51bGxv
cHQpOworICAgICAgICB9CisKKyAgICAgICAgLy8gT3RoZXJ3aXNlLCB3YWl0IGZvciBtb3VzZUV2
ZW50c0ZsdXNoZWRDYWxsYmFjayB0byBydW4gd2hlbiBhbGwgZXZlbnRzIGFyZSBoYW5kbGVkLgor
ICAgIH0pOworfQorCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpzaW11bGF0ZUtleWJvYXJk
SW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBLZXlib2FyZEludGVyYWN0aW9uIGludGVy
YWN0aW9uLCBzdGQ6Om9wdGlvbmFsPFZpcnR1YWxLZXk+IHZpcnR1YWxLZXksIHN0ZDo6b3B0aW9u
YWw8Q2hhcktleT4gY2hhcktleSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFs
PEF1dG9tYXRpb25Db21tYW5kRXJyb3I+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICAv
LyBCcmlkZ2UgdGhlIGZsdXNoZWQgY2FsbGJhY2sgdG8gb3VyIGNvbW1hbmQncyBjb21wbGV0aW9u
IGhhbmRsZXIuCisgICAgYXV0byBrZXlib2FyZEV2ZW50c0ZsdXNoZWRDYWxsYmFjayA9IFtjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShzdGQ6Om9wdGlvbmFs
PEF1dG9tYXRpb25Db21tYW5kRXJyb3I+IGVycm9yKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKGVycm9yKTsKKyAgICB9OworCisgICAgYXV0byYgY2FsbGJhY2tJbk1hcCA9IG1fcGVuZGlu
Z0tleWJvYXJkRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2UuYWRkKHBhZ2UucGFnZUlEKCks
IG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBpZiAoY2FsbGJhY2tJbk1hcCkKKyAgICAg
ICAgY2FsbGJhY2tJbk1hcChBVVRPTUFUSU9OX0NPTU1BTkRfRVJST1JfV0lUSF9OQU1FKFRpbWVv
dXQpKTsKKyAgICBjYWxsYmFja0luTWFwID0gV1RGTW92ZShrZXlib2FyZEV2ZW50c0ZsdXNoZWRD
YWxsYmFjayk7CisKKyAgICBwbGF0Zm9ybVNpbXVsYXRlS2V5Ym9hcmRJbnRlcmFjdGlvbihwYWdl
LCBpbnRlcmFjdGlvbiwgdmlydHVhbEtleSwgY2hhcktleSk7CisKKyAgICAvLyBXYWl0IGZvciBr
ZXlib2FyZEV2ZW50c0ZsdXNoZWRDYWxsYmFjayB0byBydW4gd2hlbiBhbGwgZXZlbnRzIGFyZSBo
YW5kbGVkLgorfQorCiAjaWYgVVNFKEFQUEtJVCkgfHwgUExBVEZPUk0oR1RLKQogc3RhdGljIFdl
YkV2ZW50OjpNb2RpZmllcnMgcHJvdG9jb2xNb2RpZmllclRvV2ViRXZlbnRNb2RpZmllcihJbnNw
ZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpLZXlNb2RpZmllciBtb2RpZmllcikKIHsKQEAg
LTEzODQsNiArMTQ3MSwyMiBAQCBzdGF0aWMgV2ViRXZlbnQ6Ok1vZGlmaWVycyBwcm90b2NvbE1v
ZGlmaWVyVG9XZWJFdmVudE1vZGlmaWVyKEluc3BlY3Rvcjo6UHJvdG9jbwogCiAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KKworc3RhdGljIFdlYk1vdXNlRXZlbnQ6OkJ1dHRv
biBwcm90b2NvbE1vdXNlQnV0dG9uVG9XZWJNb3VzZUV2ZW50QnV0dG9uKEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9uIGJ1dHRvbikKK3sKKyAgICBzd2l0Y2ggKGJ1
dHRvbikgeworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VC
dXR0b246Ok5vbmU6CisgICAgICAgIHJldHVybiBXZWJNb3VzZUV2ZW50OjpOb0J1dHRvbjsKKyAg
ICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9uOjpMZWZ0
OgorICAgICAgICByZXR1cm4gV2ViTW91c2VFdmVudDo6TGVmdEJ1dHRvbjsKKyAgICBjYXNlIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9uOjpNaWRkbGU6CisgICAg
ICAgIHJldHVybiBXZWJNb3VzZUV2ZW50OjpNaWRkbGVCdXR0b247CisgICAgY2FzZSBJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1dHRvbjo6UmlnaHQ6CisgICAgICAgIHJl
dHVybiBXZWJNb3VzZUV2ZW50OjpSaWdodEJ1dHRvbjsKKyAgICB9CisKKyAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworfQogI2VuZGlmIC8vIFVTRShBUFBLSVQpIHx8IFBMQVRGT1JN
KEdUSykKIAogdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGVyZm9ybU1vdXNlSW50ZXJhY3Rp
b24oY29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbnN0IEpTT046Ok9iamVjdCYgcmVxdWVzdGVkUG9z
aXRpb25PYmplY3QsIGNvbnN0IFN0cmluZyYgbW91c2VCdXR0b25TdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgbW91c2VJbnRlcmFjdGlvblN0cmluZywgY29uc3QgSlNPTjo6QXJyYXkmIGtleU1vZGlmaWVy
U3RyaW5ncywgUmVmPFBlcmZvcm1Nb3VzZUludGVyYWN0aW9uQ2FsbGJhY2s+JiYgY2FsbGJhY2sp
CkBAIC0xNDE1LDEzICsxNTE4LDEzIEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBlcmZv
cm1Nb3VzZUludGVyYWN0aW9uKGNvbnN0IFN0cmluZyYgaGFuZGxlLCBjb25zdCBKCiAgICAgICAg
IFdlYkV2ZW50OjpNb2RpZmllcnMgZW51bVZhbHVlID0gcHJvdG9jb2xNb2RpZmllclRvV2ViRXZl
bnRNb2RpZmllcihwYXJzZWRNb2RpZmllci52YWx1ZSgpKTsKICAgICAgICAga2V5TW9kaWZpZXJz
ID0gKFdlYkV2ZW50OjpNb2RpZmllcnMpKGVudW1WYWx1ZSB8IGtleU1vZGlmaWVycyk7CiAgICAg
fQotICAgIAorCiAgICAgcGFnZS0+Z2V0V2luZG93RnJhbWVXaXRoQ2FsbGJhY2soW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KSwgcGFnZSA9IG1ha2VSZWYoKnBhZ2UpLCB4LCB5LCBtb3VzZUludGVyYWN0aW9uU3RyaW5nLCBt
b3VzZUJ1dHRvblN0cmluZywga2V5TW9kaWZpZXJzXShXZWJDb3JlOjpGbG9hdFJlY3Qgd2luZG93
RnJhbWUpIG11dGFibGUgewogCiAgICAgICAgIHggPSBzdGQ6Om1pbihzdGQ6Om1heCgwLjBmLCB4
KSwgd2luZG93RnJhbWUuc2l6ZSgpLndpZHRoKCkpOwogICAgICAgICB5ID0gc3RkOjptaW4oc3Rk
OjptYXgoMC4wZiwgeSArIHBhZ2UtPnRvcENvbnRlbnRJbnNldCgpKSwgd2luZG93RnJhbWUuc2l6
ZSgpLmhlaWdodCgpKTsKIAotICAgICAgICBXZWJDb3JlOjpJbnRQb2ludCB2aWV3UG9zaXRpb24g
PSBXZWJDb3JlOjpJbnRQb2ludChzdGF0aWNfY2FzdDxpbnQ+KHgpLCBzdGF0aWNfY2FzdDxpbnQ+
KHkpKTsKKyAgICAgICAgV2ViQ29yZTo6SW50UG9pbnQgcG9zaXRpb25JblZpZXcgPSBXZWJDb3Jl
OjpJbnRQb2ludChzdGF0aWNfY2FzdDxpbnQ+KHgpLCBzdGF0aWNfY2FzdDxpbnQ+KHkpKTsKIAog
ICAgICAgICBhdXRvIHBhcnNlZEludGVyYWN0aW9uID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbkhlbHBlcnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpNb3VzZUludGVyYWN0aW9uPihtb3VzZUludGVyYWN0aW9uU3RyaW5n
KTsKICAgICAgICAgaWYgKCFwYXJzZWRJbnRlcmFjdGlvbikKQEAgLTE0NDcsMTEgKzE1NTAsOCBA
QCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwZXJmb3JtTW91c2VJbnRlcmFjdGlvbihjb25z
dCBTdHJpbmcmIGhhbmRsZSwgY29uc3QgSgogICAgICAgICAgICAgY2FsbGJhY2tJbk1hcChBVVRP
TUFUSU9OX0NPTU1BTkRfRVJST1JfV0lUSF9OQU1FKFRpbWVvdXQpKTsKICAgICAgICAgY2FsbGJh
Y2tJbk1hcCA9IFdURk1vdmUobW91c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2spOwogCi0gICAgICAg
IC8vIFRoaXMgaXMgY2xlYXJlZCB3aGVuIGFsbCBtb3VzZSBldmVudHMgYXJlIGZsdXNoZWQuCi0g
ICAgICAgIG1fc2ltdWxhdGluZ1VzZXJJbnRlcmFjdGlvbiA9IHRydWU7CisgICAgICAgIHBsYXRm
b3JtU2ltdWxhdGVNb3VzZUludGVyYWN0aW9uKHBhZ2UsIHBhcnNlZEludGVyYWN0aW9uLnZhbHVl
KCksIHByb3RvY29sTW91c2VCdXR0b25Ub1dlYk1vdXNlRXZlbnRCdXR0b24ocGFyc2VkQnV0dG9u
LnZhbHVlKCkpLCBwb3NpdGlvbkluVmlldywga2V5TW9kaWZpZXJzKTsKIAotICAgICAgICBwbGF0
Zm9ybVNpbXVsYXRlTW91c2VJbnRlcmFjdGlvbihwYWdlLCB2aWV3UG9zaXRpb24sIHBhcnNlZElu
dGVyYWN0aW9uLnZhbHVlKCksIHBhcnNlZEJ1dHRvbi52YWx1ZSgpLCBrZXlNb2RpZmllcnMpOwot
ICAgICAgICAKICAgICAgICAgLy8gSWYgdGhlIGV2ZW50IGxvY2F0aW9uIHdhcyBwcmV2aW91c2x5
IGNsaXBwZWQgYW5kIGRvZXMgbm90IGhpdCB0ZXN0IGFueXRoaW5nIGluIHRoZSB3aW5kb3csIHRo
ZW4gaXQgd2lsbCBub3QgYmUgcHJvY2Vzc2VkLgogICAgICAgICAvLyBGb3IgY29tcGF0aWJpbGl0
eSB3aXRoIHByZS1XM0MgZHJpdmVyIGltcGxlbWVudGF0aW9ucywgZG9uJ3QgbWFrZSB0aGlzIGEg
aGFyZCBlcnJvcjsganVzdCBkbyBub3RoaW5nIHNpbGVudGx5LgogICAgICAgICAvLyBJbiBXM0Mt
b25seSBjb2RlIHBhdGhzLCB3ZSBjYW4gcmVqZWN0IGFueSBwb2ludGVyIGFjdGlvbnMgd2hvc2Ug
Y29vcmRpbmF0ZXMgYXJlIG91dHNpZGUgdGhlIHZpZXdwb3J0IHJlY3QuCkBAIC0xNDk5LDcgKzE1
OTksNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwZXJmb3JtS2V5Ym9hcmRJbnRlcmFj
dGlvbnMoY29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbgogICAgICAgICAgICAgICAgIEFTWU5DX0ZB
SUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKEludmFsaWRQYXJhbWV0ZXIsICJB
biBpbnRlcmFjdGlvbiBpbiB0aGUgJ2ludGVyYWN0aW9ucycgcGFyYW1ldGVyIGhhcyBhbiBpbnZh
bGlkICdrZXknIHZhbHVlLiIpOwogCiAgICAgICAgICAgICBhY3Rpb25zVG9QZXJmb3JtLnVuY2hl
Y2tlZEFwcGVuZChbdGhpcywgcGFnZSwgaW50ZXJhY3Rpb25UeXBlLCB2aXJ0dWFsS2V5XSB7Ci0g
ICAgICAgICAgICAgICAgcGxhdGZvcm1TaW11bGF0ZUtleVN0cm9rZSgqcGFnZSwgaW50ZXJhY3Rp
b25UeXBlLnZhbHVlKCksIHZpcnR1YWxLZXkudmFsdWUoKSk7CisgICAgICAgICAgICAgICAgcGxh
dGZvcm1TaW11bGF0ZUtleWJvYXJkSW50ZXJhY3Rpb24oKnBhZ2UsIGludGVyYWN0aW9uVHlwZS52
YWx1ZSgpLCB2aXJ0dWFsS2V5LCBzdGQ6Om51bGxvcHQpOwogICAgICAgICAgICAgfSk7CiAgICAg
ICAgIH0KIApAQCAtMTU0MCwxNCArMTY0MCwxODEgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lv
bjo6cGVyZm9ybUtleWJvYXJkSW50ZXJhY3Rpb25zKGNvbnN0IFN0cmluZyYgaGFuZGxlLCBjb24K
ICAgICAgICAgY2FsbGJhY2tJbk1hcChBVVRPTUFUSU9OX0NPTU1BTkRfRVJST1JfV0lUSF9OQU1F
KFRpbWVvdXQpKTsKICAgICBjYWxsYmFja0luTWFwID0gV1RGTW92ZShrZXlib2FyZEV2ZW50c0Zs
dXNoZWRDYWxsYmFjayk7CiAKLSAgICAvLyBUaGlzIGlzIGNsZWFyZWQgd2hlbiBhbGwga2V5Ym9h
cmQgZXZlbnRzIGFyZSBmbHVzaGVkLgotICAgIG1fc2ltdWxhdGluZ1VzZXJJbnRlcmFjdGlvbiA9
IHRydWU7Ci0KICAgICBmb3IgKGF1dG8mIGFjdGlvbiA6IGFjdGlvbnNUb1BlcmZvcm0pCiAgICAg
ICAgIGFjdGlvbigpOwogI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKSB8fCBQTEFURk9STShHVEsp
CiB9CiAKKyNpZiBVU0UoQVBQS0lUKSB8fCBQTEFURk9STShHVEspCitzdGF0aWMgU2ltdWxhdGVk
SW5wdXRTb3VyY2U6OlR5cGUgc2ltdWxhdGVkSW5wdXRTb3VyY2VUeXBlRnJvbVByb3RvY29sU291
cmNlVHlwZShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpJbnB1dFNvdXJjZVR5cGUg
cHJvdG9jb2xUeXBlKQoreworICAgIHN3aXRjaCAocHJvdG9jb2xUeXBlKSB7CisgICAgY2FzZSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpJbnB1dFNvdXJjZVR5cGU6Ok51bGw6Cisg
ICAgICAgIHJldHVybiBTaW11bGF0ZWRJbnB1dFNvdXJjZTo6VHlwZTo6TnVsbDsKKyAgICBjYXNl
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OklucHV0U291cmNlVHlwZTo6S2V5Ym9h
cmQ6CisgICAgICAgIHJldHVybiBTaW11bGF0ZWRJbnB1dFNvdXJjZTo6VHlwZTo6S2V5Ym9hcmQ7
CisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpJbnB1dFNvdXJjZVR5
cGU6Ok1vdXNlOgorICAgICAgICByZXR1cm4gU2ltdWxhdGVkSW5wdXRTb3VyY2U6OlR5cGU6Ok1v
dXNlOworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6SW5wdXRTb3Vy
Y2VUeXBlOjpUb3VjaDoKKyAgICAgICAgcmV0dXJuIFNpbXVsYXRlZElucHV0U291cmNlOjpUeXBl
OjpUb3VjaDsKKyAgICB9CisKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQor
I2VuZGlmIC8vIFVTRShBUFBLSVQpIHx8IFBMQVRGT1JNKEdUSykKKwordm9pZCBXZWJBdXRvbWF0
aW9uU2Vzc2lvbjo6cGVyZm9ybUludGVyYWN0aW9uU2VxdWVuY2UoY29uc3QgU3RyaW5nJiBoYW5k
bGUsIGNvbnN0IEpTT046OkFycmF5JiBpbnB1dFNvdXJjZXMsIGNvbnN0IEpTT046OkFycmF5JiBz
dGVwcywgUmVmPFdlYkF1dG9tYXRpb25TZXNzaW9uOjpQZXJmb3JtSW50ZXJhY3Rpb25TZXF1ZW5j
ZUNhbGxiYWNrPiYmIGNhbGxiYWNrKQoreworICAgIC8vIFRoaXMgY29tbWFuZCBpbXBsZW1lbnRz
IFdlYktpdCBzdXBwb3J0IGZvciDCpzE3LjUgUGVyZm9ybSBBY3Rpb25zLgorCisjaWYgIVVTRShB
UFBLSVQpICYmICFQTEFURk9STShHVEspCisgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURf
RVJST1IoTm90SW1wbGVtZW50ZWQpOworI2Vsc2UKKyAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSB3
ZWJQYWdlUHJveHlGb3JIYW5kbGUoaGFuZGxlKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIEFT
WU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKFdpbmRvd05vdEZvdW5kKTsKKworICAgIEhh
c2hNYXA8U3RyaW5nLCBSZWY8U2ltdWxhdGVkSW5wdXRTb3VyY2U+PiBzb3VyY2VJZFRvSW5wdXRT
b3VyY2VNYXA7CisgICAgSGFzaE1hcDxTaW11bGF0ZWRJbnB1dFNvdXJjZTo6VHlwZSwgU3RyaW5n
LCBXVEY6OkludEhhc2g8U2ltdWxhdGVkSW5wdXRTb3VyY2U6OlR5cGU+LCBXVEY6OlN0cm9uZ0Vu
dW1IYXNoVHJhaXRzPFNpbXVsYXRlZElucHV0U291cmNlOjpUeXBlPj4gdHlwZVRvU291cmNlSWRN
YXA7CisKKyAgICAvLyBQYXJzZSBhbmQgdmFsaWRhdGUgQXV0b21hdGlvbiBwcm90b2NvbCBhcmd1
bWVudHMuIEJ5IHRoaXMgcG9pbnQsIHRoZSBkcml2ZXIgaGFzCisgICAgLy8gYWxyZWFkeSBwZXJm
b3JtZWQgdGhlIHN0ZXBzIGluIMKnMTcuMyBQcm9jZXNzaW5nIEFjdGlvbnMgUmVxdWVzdHMuCisg
ICAgaWYgKCFpbnB1dFNvdXJjZXMubGVuZ3RoKCkpCisgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9Q
UkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKEludmFsaWRQYXJhbWV0ZXIsICJUaGUgcGFyYW1l
dGVyICdpbnB1dFNvdXJjZXMnIHdhcyBub3QgZm91bmQgb3IgZW1wdHkuIik7CisKKyAgICBmb3Ig
KGF1dG8gaW5wdXRTb3VyY2UgOiBpbnB1dFNvdXJjZXMpIHsKKyAgICAgICAgUmVmUHRyPEpTT046
Ok9iamVjdD4gaW5wdXRTb3VyY2VPYmplY3Q7CisgICAgICAgIGlmICghaW5wdXRTb3VyY2UtPmFz
T2JqZWN0KGlucHV0U291cmNlT2JqZWN0KSkKKyAgICAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9Q
UkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKEludmFsaWRQYXJhbWV0ZXIsICJBbiBpbnB1dCBz
b3VyY2UgaW4gdGhlICdpbnB1dFNvdXJjZXMnIHBhcmFtZXRlciB3YXMgaW52YWxpZC4iKTsKKyAg
ICAgICAgCisgICAgICAgIFN0cmluZyBzb3VyY2VJZDsKKyAgICAgICAgaWYgKCFpbnB1dFNvdXJj
ZU9iamVjdC0+Z2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgic291cmNlSWQiKSwgc291cmNlSWQpKQor
ICAgICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMo
SW52YWxpZFBhcmFtZXRlciwgIkFuIGlucHV0IHNvdXJjZSBpbiB0aGUgJ2lucHV0U291cmNlcycg
cGFyYW1ldGVyIGlzIG1pc3NpbmcgYSAnc291cmNlSWQnLiIpOworCisgICAgICAgIFN0cmluZyBz
b3VyY2VUeXBlOworICAgICAgICBpZiAoIWlucHV0U291cmNlT2JqZWN0LT5nZXRTdHJpbmcoQVND
SUlMaXRlcmFsKCJzb3VyY2VUeXBlIiksIHNvdXJjZVR5cGUpKQorICAgICAgICAgICAgQVNZTkNf
RkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxpZFBhcmFtZXRlciwg
IkFuIGlucHV0IHNvdXJjZSBpbiB0aGUgJ2lucHV0U291cmNlcycgcGFyYW1ldGVyIGlzIG1pc3Np
bmcgYSAnc291cmNlVHlwZScuIik7CisKKyAgICAgICAgYXV0byBwYXJzZWRJbnB1dFNvdXJjZVR5
cGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6cGFyc2VFbnVtVmFs
dWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OklucHV0U291cmNl
VHlwZT4oc291cmNlVHlwZSk7CisgICAgICAgIGlmICghcGFyc2VkSW5wdXRTb3VyY2VUeXBlKQor
ICAgICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMo
SW52YWxpZFBhcmFtZXRlciwgIkFuIGlucHV0IHNvdXJjZSBpbiB0aGUgJ2lucHV0U291cmNlcycg
cGFyYW1ldGVyIGhhcyBhbiBpbnZhbGlkICdzb3VyY2VUeXBlJy4iKTsKKworICAgICAgICBTaW11
bGF0ZWRJbnB1dFNvdXJjZTo6VHlwZSBpbnB1dFNvdXJjZVR5cGUgPSBzaW11bGF0ZWRJbnB1dFNv
dXJjZVR5cGVGcm9tUHJvdG9jb2xTb3VyY2VUeXBlKCpwYXJzZWRJbnB1dFNvdXJjZVR5cGUpOwor
ICAgICAgICBpZiAoaW5wdXRTb3VyY2VUeXBlID09IFNpbXVsYXRlZElucHV0U291cmNlOjpUeXBl
OjpUb3VjaCkKKyAgICAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FO
RF9ERVRBSUxTKE5vdEltcGxlbWVudGVkLCAiVG91Y2ggaW5wdXQgc291cmNlcyBhcmUgbm90IHll
dCBzdXBwb3J0ZWQuIik7CisKKyAgICAgICAgaWYgKHR5cGVUb1NvdXJjZUlkTWFwLmNvbnRhaW5z
KGlucHV0U291cmNlVHlwZSkpCisgICAgICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5F
RF9FUlJPUl9BTkRfREVUQUlMUyhJbnZhbGlkUGFyYW1ldGVyLCAiVHdvIGlucHV0IHNvdXJjZXMg
d2l0aCB0aGUgc2FtZSB0eXBlIHdlcmUgc3BlY2lmaWVkLiIpOworICAgICAgICBpZiAoc291cmNl
SWRUb0lucHV0U291cmNlTWFwLmNvbnRhaW5zKHNvdXJjZUlkKSkKKyAgICAgICAgICAgIEFTWU5D
X0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKEludmFsaWRQYXJhbWV0ZXIs
ICJUd28gaW5wdXQgc291cmNlcyB3aXRoIHRoZSBzYW1lIHNvdXJjZUlkIHdlcmUgc3BlY2lmaWVk
LiIpOworCisgICAgICAgIHR5cGVUb1NvdXJjZUlkTWFwLmFkZChpbnB1dFNvdXJjZVR5cGUsIHNv
dXJjZUlkKTsKKyAgICAgICAgc291cmNlSWRUb0lucHV0U291cmNlTWFwLmFkZChzb3VyY2VJZCwg
KmlucHV0U291cmNlRm9yVHlwZShpbnB1dFNvdXJjZVR5cGUpKTsKKyAgICB9CisKKyAgICBWZWN0
b3I8U2ltdWxhdGVkSW5wdXRLZXlGcmFtZT4ga2V5RnJhbWVzOworCisgICAgaWYgKCFzdGVwcy5s
ZW5ndGgoKSkKKyAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RF
VEFJTFMoSW52YWxpZFBhcmFtZXRlciwgIlRoZSBwYXJhbWV0ZXIgJ3N0ZXBzJyB3YXMgbm90IGZv
dW5kIG9yIGVtcHR5LiIpOworCisgICAgZm9yIChhdXRvIHN0ZXAgOiBzdGVwcykgeworICAgICAg
ICBSZWZQdHI8SlNPTjo6T2JqZWN0PiBzdGVwT2JqZWN0OworICAgICAgICBpZiAoIXN0ZXAtPmFz
T2JqZWN0KHN0ZXBPYmplY3QpKQorICAgICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklO
RURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxpZFBhcmFtZXRlciwgIkEgc3RlcCBpbiB0aGUgJ3N0
ZXBzJyBwYXJhbWV0ZXIgd2FzIG5vdCBhbiBvYmplY3QuIik7CisKKyAgICAgICAgUmVmUHRyPEpT
T046OkFycmF5PiBzdGVwU3RhdGVzOworICAgICAgICBpZiAoIXN0ZXBPYmplY3QtPmdldEFycmF5
KEFTQ0lJTGl0ZXJhbCgic3RhdGVzIiksIHN0ZXBTdGF0ZXMpKQorICAgICAgICAgICAgQVNZTkNf
RkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxpZFBhcmFtZXRlciwg
IkEgc3RlcCBpcyBtaXNzaW5nIHRoZSAnc3RhdGVzJyBwcm9wZXJ0eS4iKTsKKworICAgICAgICBW
ZWN0b3I8U2ltdWxhdGVkSW5wdXRLZXlGcmFtZTo6U3RhdGVFbnRyeT4gZW50cmllczsKKyAgICAg
ICAgZW50cmllcy5yZXNlcnZlQ2FwYWNpdHkoc3RlcFN0YXRlcy0+bGVuZ3RoKCkpOworCisgICAg
ICAgIGZvciAoYXV0byBzdGF0ZSA6ICpzdGVwU3RhdGVzKSB7CisgICAgICAgICAgICBSZWZQdHI8
SlNPTjo6T2JqZWN0PiBzdGF0ZU9iamVjdDsKKyAgICAgICAgICAgIGlmICghc3RhdGUtPmFzT2Jq
ZWN0KHN0YXRlT2JqZWN0KSkKKyAgICAgICAgICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVG
SU5FRF9FUlJPUl9BTkRfREVUQUlMUyhJbnZhbGlkUGFyYW1ldGVyLCAiRW5jb3VudGVyZWQgYSBu
b24tb2JqZWN0IHN0ZXAgc3RhdGUuIik7CisKKyAgICAgICAgICAgIFN0cmluZyBzb3VyY2VJZDsK
KyAgICAgICAgICAgIGlmICghc3RhdGVPYmplY3QtPmdldFN0cmluZyhBU0NJSUxpdGVyYWwoInNv
dXJjZUlkIiksIHNvdXJjZUlkKSkKKyAgICAgICAgICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJF
REVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhJbnZhbGlkUGFyYW1ldGVyLCAiU3RlcCBzdGF0ZSBs
YWNrcyByZXF1aXJlZCAnc291cmNlSWQnIHByb3BlcnR5LiIpOworCisgICAgICAgICAgICBpZiAo
IXNvdXJjZUlkVG9JbnB1dFNvdXJjZU1hcC5jb250YWlucyhzb3VyY2VJZCkpCisgICAgICAgICAg
ICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxp
ZFBhcmFtZXRlciwgIlVua25vd24gJ3NvdXJjZUlkJyBzcGVjaWZpZWQuIik7CisKKyAgICAgICAg
ICAgIFNpbXVsYXRlZElucHV0U291cmNlJiBpbnB1dFNvdXJjZSA9ICpzb3VyY2VJZFRvSW5wdXRT
b3VyY2VNYXAuZ2V0KHNvdXJjZUlkKTsKKyAgICAgICAgICAgIFNpbXVsYXRlZElucHV0U291cmNl
U3RhdGUgc291cmNlU3RhdGUgeyB9OworCisgICAgICAgICAgICBTdHJpbmcgcHJlc3NlZENoYXJL
ZXlTdHJpbmc7CisgICAgICAgICAgICBpZiAoc3RhdGVPYmplY3QtPmdldFN0cmluZyhBU0NJSUxp
dGVyYWwoInByZXNzZWRDaGFyS2V5IiksIHByZXNzZWRDaGFyS2V5U3RyaW5nKSkKKyAgICAgICAg
ICAgICAgICBzb3VyY2VTdGF0ZS5wcmVzc2VkQ2hhcktleSA9IHByZXNzZWRDaGFyS2V5U3RyaW5n
LmNoYXJhY3RlckF0KDApOworCisgICAgICAgICAgICBTdHJpbmcgcHJlc3NlZFZpcnR1YWxLZXlT
dHJpbmc7CisgICAgICAgICAgICBpZiAoc3RhdGVPYmplY3QtPmdldFN0cmluZyhBU0NJSUxpdGVy
YWwoInByZXNzZWRWaXJ0dWFsS2V5IiksIHByZXNzZWRWaXJ0dWFsS2V5U3RyaW5nKSkKKyAgICAg
ICAgICAgICAgICBzb3VyY2VTdGF0ZS5wcmVzc2VkVmlydHVhbEtleSA9IEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb25IZWxwZXJzOjpwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVj
dG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleT4ocHJlc3NlZFZpcnR1YWxLZXlT
dHJpbmcpOworCisgICAgICAgICAgICBTdHJpbmcgcHJlc3NlZEJ1dHRvblN0cmluZzsKKyAgICAg
ICAgICAgIGlmIChzdGF0ZU9iamVjdC0+Z2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgicHJlc3NlZEJ1
dHRvbiIpLCBwcmVzc2VkQnV0dG9uU3RyaW5nKSkgeworICAgICAgICAgICAgICAgIGF1dG8gcHJv
dG9jb2xCdXR0b24gPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6cGFy
c2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1v
dXNlQnV0dG9uPihwcmVzc2VkQnV0dG9uU3RyaW5nKTsKKyAgICAgICAgICAgICAgICBzb3VyY2VT
dGF0ZS5wcmVzc2VkTW91c2VCdXR0b24gPSBwcm90b2NvbE1vdXNlQnV0dG9uVG9XZWJNb3VzZUV2
ZW50QnV0dG9uKHByb3RvY29sQnV0dG9uLnZhbHVlX29yKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1
dG9tYXRpb246Ok1vdXNlQnV0dG9uOjpOb25lKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIFJlZlB0cjxKU09OOjpPYmplY3Q+IGxvY2F0aW9uT2JqZWN0OworICAgICAgICAgICAgaWYg
KHN0YXRlT2JqZWN0LT5nZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJsb2NhdGlvbiIpLCBsb2NhdGlv
bk9iamVjdCkpIHsKKyAgICAgICAgICAgICAgICBpbnQgeCwgeTsKKyAgICAgICAgICAgICAgICBp
ZiAobG9jYXRpb25PYmplY3QtPmdldEludGVnZXIoQVNDSUlMaXRlcmFsKCJ4IiksIHgpICYmIGxv
Y2F0aW9uT2JqZWN0LT5nZXRJbnRlZ2VyKEFTQ0lJTGl0ZXJhbCgieSIpLCB5KSkKKyAgICAgICAg
ICAgICAgICAgICAgc291cmNlU3RhdGUubG9jYXRpb24gPSBXZWJDb3JlOjpJbnRQb2ludCh4LCB5
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaW50IHBhcnNlZER1cmF0aW9uOworICAg
ICAgICAgICAgaWYgKHN0YXRlT2JqZWN0LT5nZXRJbnRlZ2VyKEFTQ0lJTGl0ZXJhbCgiZHVyYXRp
b24iKSwgcGFyc2VkRHVyYXRpb24pKQorICAgICAgICAgICAgICAgIHNvdXJjZVN0YXRlLmR1cmF0
aW9uID0gU2Vjb25kczo6ZnJvbU1pbGxpc2Vjb25kcyhwYXJzZWREdXJhdGlvbik7CisKKyAgICAg
ICAgICAgIGVudHJpZXMudW5jaGVja2VkQXBwZW5kKHN0ZDo6cGFpcjxTaW11bGF0ZWRJbnB1dFNv
dXJjZSYsIFNpbXVsYXRlZElucHV0U291cmNlU3RhdGU+IHsgaW5wdXRTb3VyY2UsIHNvdXJjZVN0
YXRlIH0pOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBrZXlGcmFtZXMuYXBwZW5kKFNp
bXVsYXRlZElucHV0S2V5RnJhbWUoV1RGTW92ZShlbnRyaWVzKSkpOworICAgIH0KKworICAgIFNp
bXVsYXRlZElucHV0RGlzcGF0Y2hlciYgaW5wdXREaXNwYXRjaGVyID0gaW5wdXREaXNwYXRjaGVy
Rm9yUGFnZSgqcGFnZSk7CisgICAgaWYgKGlucHV0RGlzcGF0Y2hlci5pc0FjdGl2ZSgpKSB7Cisg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJF
REVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhJbnRlcm5hbEVycm9yLCAiQSBwcmV2aW91cyBpbnRl
cmFjdGlvbiBpcyBzdGlsbCB1bmRlcndheS4iKTsKKyAgICB9CisKKyAgICAvLyBEZWxlZ2F0ZSB0
aGUgcmVzdCBvZiDCpzE3LjQgRGlzcGF0Y2hpbmcgQWN0aW9ucyB0byB0aGUgZGlzcGF0Y2hlci4K
KyAgICBpbnB1dERpc3BhdGNoZXIucnVuKFdURk1vdmUoa2V5RnJhbWVzKSwgbV9pbnB1dFNvdXJj
ZXMsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayldKHN0ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4gZXJy
b3IpIHsKKyAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAgY2FsbGJhY2stPnNlbmRGYWls
dXJlKGVycm9yLnZhbHVlKCkudG9Qcm90b2NvbFN0cmluZygpKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgY2FsbGJhY2stPnNlbmRTdWNjZXNzKCk7CisgICAgfSk7CisjZW5kaWYgLy8gUExB
VEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKEdUSykKK30KKwordm9pZCBXZWJBdXRvbWF0aW9uU2Vz
c2lvbjo6Y2FuY2VsSW50ZXJhY3Rpb25TZXF1ZW5jZShjb25zdCBTdHJpbmcmIGhhbmRsZSwgUmVm
PENhbmNlbEludGVyYWN0aW9uU2VxdWVuY2VDYWxsYmFjaz4mJiBjYWxsYmFjaykKK3sKKyAgICAv
LyBUaGlzIGNvbW1hbmQgaW1wbGVtZW50cyBXZWJLaXQgc3VwcG9ydCBmb3IgwqcxNy42IFJlbGVh
c2UgQWN0aW9ucy4KKworI2lmICFVU0UoQVBQS0lUKSAmJiAhUExBVEZPUk0oR1RLKQorICAgIEFT
WU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKE5vdEltcGxlbWVudGVkKTsKKyNlbHNlCisg
ICAgV2ViUGFnZVByb3h5KiBwYWdlID0gd2ViUGFnZVByb3h5Rm9ySGFuZGxlKGhhbmRsZSk7Cisg
ICAgaWYgKCFwYWdlKQorICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihX
aW5kb3dOb3RGb3VuZCk7CisKKyAgICBWZWN0b3I8U2ltdWxhdGVkSW5wdXRLZXlGcmFtZT4ga2V5
RnJhbWVzKHsgU2ltdWxhdGVkSW5wdXRLZXlGcmFtZTo6a2V5RnJhbWVUb1Jlc2V0SW5wdXRTb3Vy
Y2VzKG1faW5wdXRTb3VyY2VzKSB9KTsKKyAgICBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXImIGlu
cHV0RGlzcGF0Y2hlciA9IGlucHV0RGlzcGF0Y2hlckZvclBhZ2UoKnBhZ2UpOworICAgIGlucHV0
RGlzcGF0Y2hlci5jYW5jZWwoKTsKKyAgICAKKyAgICBpbnB1dERpc3BhdGNoZXIucnVuKFdURk1v
dmUoa2V5RnJhbWVzKSwgbV9pbnB1dFNvdXJjZXMsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKHN0ZDo6b3B0aW9uYWw8
QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4gZXJyb3IpIHsKKyAgICAgICAgaWYgKGVycm9yKQorICAg
ICAgICAgICAgY2FsbGJhY2stPnNlbmRGYWlsdXJlKGVycm9yLnZhbHVlKCkudG9Qcm90b2NvbFN0
cmluZygpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY2FsbGJhY2stPnNlbmRTdWNjZXNz
KCk7CisgICAgfSk7CisjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKEdUSykK
K30KKwogdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6dGFrZVNjcmVlbnNob3QoY29uc3QgU3Ry
aW5nJiBoYW5kbGUsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxGcmFtZUhhbmRsZSwgY29uc3QgU3Ry
aW5nKiBvcHRpb25hbE5vZGVIYW5kbGUsIGNvbnN0IGJvb2wqIG9wdGlvbmFsU2Nyb2xsSW50b1Zp
ZXdJZk5lZWRlZCwgY29uc3QgYm9vbCogb3B0aW9uYWxDbGlwVG9WaWV3cG9ydCwgUmVmPFRha2VT
Y3JlZW5zaG90Q2FsbGJhY2s+JiYgY2FsbGJhY2spCiB7CiAgICAgV2ViUGFnZVByb3h5KiBwYWdl
ID0gd2ViUGFnZVByb3h5Rm9ySGFuZGxlKGhhbmRsZSk7CkBAIC0xNTg5LDE3ICsxODU2LDE1IEBA
IHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmRpZFRha2VTY3JlZW5zaG90KHVpbnQ2NF90IGNh
bGxiYWNrSUQsIGNvbnN0IFNoYXJlYWJsCiAvLyBQbGF0Zm9ybS1kZXBlbmRlbnQgSW1wbGVtZW50
YXRpb24gU3R1YnMuCiAKICNpZiAhUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oR1RLKQotdm9p
ZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24o
V2ViS2l0OjpXZWJQYWdlUHJveHkmLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlSW50ZXJhY3Rpb24sIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9uLCBXZWJFdmVudDo6TW9kaWZpZXJzKQordm9p
ZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24o
V2ViUGFnZVByb3h5JiwgTW91c2VJbnRlcmFjdGlvbiwgV2ViTW91c2VFdmVudDo6QnV0dG9uLCBj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIFdlYkV2ZW50OjpNb2RpZmllcnMpCiB7CiB9CiAjZW5k
aWYgLy8gIVBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKEdUSykKIAogI2lmICFQTEFURk9STShD
T0NPQSkgJiYgIVBMQVRGT1JNKEdUSykKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRm
b3JtU2ltdWxhdGVLZXlTdHJva2UoV2ViUGFnZVByb3h5JiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbjo6S2V5Ym9hcmRJbnRlcmFjdGlvblR5cGUsIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkF1dG9tYXRpb246OlZpcnR1YWxLZXkpCi17Ci19CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Np
b246OnBsYXRmb3JtU2ltdWxhdGVLZXlTZXF1ZW5jZShXZWJQYWdlUHJveHkmLCBjb25zdCBTdHJp
bmcmKQorCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlS2V5Ym9h
cmRJbnRlcmFjdGlvbihXZWJQYWdlUHJveHkmLCBLZXlib2FyZEludGVyYWN0aW9uLCBzdGQ6Om9w
dGlvbmFsPFZpcnR1YWxLZXk+LCBzdGQ6Om9wdGlvbmFsPENoYXJLZXk+KQogewogfQogI2VuZGlm
IC8vICFQTEFURk9STShDT0NPQSkgJiYgIVBMQVRGT1JNKEdUSykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaApp
bmRleCAzYWUzNWU2ZjdlY2RjNThhM2RkOTVlOTgwODBlZjRhMzI5NWNhNzE5Li40ZDI0OGNjOTEw
MmZkMzI0NTljOTUwNTJhZDZjYWUwZjMzYjJlMTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCkBAIC0z
MCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQXV0b21hdGlvbkZyb250ZW5kRGlzcGF0Y2hlcnMuaCIK
ICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCisj
aW5jbHVkZSAiU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmgiCiAjaW5jbHVkZSAiV2ViRXZlbnQu
aCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgpAQCAtNzYsNyArNzcsNyBAQCBjbGFzcyBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5l
clByb3h5OwogY2xhc3MgV2ViUGFnZVByb3h5OwogY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7CiAKLXN0
cnVjdCBBdXRvbWF0aW9uQ29tbWFuZEVycm9yIHsKK2NsYXNzIEF1dG9tYXRpb25Db21tYW5kRXJy
b3IgewogcHVibGljOgogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkVycm9y
TWVzc2FnZSB0eXBlOwogICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBtZXNzYWdlIHsgc3RkOjpu
dWxsb3B0IH07CkBAIC05MSwxMSArOTIsMTQgQEAgcHVibGljOgogICAgIFN0cmluZyB0b1Byb3Rv
Y29sU3RyaW5nKCk7CiB9OwogCit1c2luZyBBdXRvbWF0aW9uQ29tcGxldGlvbkhhbmRsZXIgPSBX
VEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFu
ZEVycm9yPik+OworCiBjbGFzcyBXZWJBdXRvbWF0aW9uU2Vzc2lvbiBmaW5hbCA6IHB1YmxpYyBB
UEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkF1dG9tYXRpb25TZXNzaW9uPiwgcHVi
bGljIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAg
ICAgLCBwdWJsaWMgSW5zcGVjdG9yOjpSZW1vdGVBdXRvbWF0aW9uVGFyZ2V0CiAjZW5kaWYKICAg
ICAsIHB1YmxpYyBJbnNwZWN0b3I6OkF1dG9tYXRpb25CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIK
KyAgICAsIHB1YmxpYyBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OkNsaWVudAogewogcHVibGlj
OgogICAgIFdlYkF1dG9tYXRpb25TZXNzaW9uKCk7CkBAIC0xMzEsNiArMTM1LDEwIEBAIHB1Ymxp
YzoKICNlbmRpZgogICAgIHZvaWQgdGVybWluYXRlKCk7CiAKKyAgICAvLyBTaW11bGF0ZWRJbnB1
dERpc3BhdGNoZXI6OkNsaWVudCBBUEkKKyAgICB2b2lkIHNpbXVsYXRlTW91c2VJbnRlcmFjdGlv
bihXZWJQYWdlUHJveHkmLCBNb3VzZUludGVyYWN0aW9uLCBXZWJNb3VzZUV2ZW50OjpCdXR0b24s
IGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBsb2NhdGlvbkluVmlldywgQXV0b21hdGlvbkNvbXBs
ZXRpb25IYW5kbGVyJiYpIGZpbmFsOworICAgIHZvaWQgc2ltdWxhdGVLZXlib2FyZEludGVyYWN0
aW9uKFdlYlBhZ2VQcm94eSYsIEtleWJvYXJkSW50ZXJhY3Rpb24sIHN0ZDo6b3B0aW9uYWw8Vmly
dHVhbEtleT4sIHN0ZDo6b3B0aW9uYWw8Q2hhcktleT4sIEF1dG9tYXRpb25Db21wbGV0aW9uSGFu
ZGxlciYmKSBmaW5hbDsKKwogICAgIC8vIEluc3BlY3Rvcjo6QXV0b21hdGlvbkJhY2tlbmREaXNw
YXRjaGVySGFuZGxlciBBUEkKICAgICAvLyBOT1RFOiB0aGUgc2V0IG9mIGRlY2xhcmF0aW9ucyBp
bmNsdWRlZCBpbiB0aGlzIGludGVyZmFjZSBkZXBlbmQgb24gdGhlICJwbGF0Zm9ybSIgcHJvcGVy
dHkgaW4gQXV0b21hdGlvbi5qc29uCiAgICAgLy8gYW5kIHRoZSAtLXBsYXRmb3JtIGFyZ3VtZW50
IHBhc3NlZCB0byB0aGUgcHJvdG9jb2wgYmluZGluZ3MgZ2VuZXJhdG9yLgpAQCAtMTUxLDYgKzE1
OSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKGNvbnN0
IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0SGFuZGxlLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsRnJh
bWVIYW5kbGUsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb24sIGNvbnN0IEpTT046OkFycmF5JiBhcmd1
bWVudHMsIGNvbnN0IGJvb2wqIG9wdGlvbmFsRXhwZWN0c0ltcGxpY2l0Q2FsbGJhY2tBcmd1bWVu
dCwgY29uc3QgaW50KiBvcHRpb25hbENhbGxiYWNrVGltZW91dCwgUmVmPEluc3BlY3Rvcjo6QXV0
b21hdGlvbkJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6RXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rp
b25DYWxsYmFjaz4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBwZXJmb3JtTW91c2VJbnRlcmFjdGlv
bihjb25zdCBTdHJpbmcmIGhhbmRsZSwgY29uc3QgSlNPTjo6T2JqZWN0JiByZXF1ZXN0ZWRQb3Np
dGlvbiwgY29uc3QgU3RyaW5nJiBtb3VzZUJ1dHRvbiwgY29uc3QgU3RyaW5nJiBtb3VzZUludGVy
YWN0aW9uLCBjb25zdCBKU09OOjpBcnJheSYga2V5TW9kaWZpZXJzLCBSZWY8UGVyZm9ybU1vdXNl
SW50ZXJhY3Rpb25DYWxsYmFjaz4mJikgZmluYWw7CiAgICAgdm9pZCBwZXJmb3JtS2V5Ym9hcmRJ
bnRlcmFjdGlvbnMoY29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbnN0IEpTT046OkFycmF5JiBpbnRl
cmFjdGlvbnMsIFJlZjxQZXJmb3JtS2V5Ym9hcmRJbnRlcmFjdGlvbnNDYWxsYmFjaz4mJikgb3Zl
cnJpZGU7CisgICAgdm9pZCBwZXJmb3JtSW50ZXJhY3Rpb25TZXF1ZW5jZShjb25zdCBTdHJpbmcm
IGhhbmRsZSwgY29uc3QgSlNPTjo6QXJyYXkmIHNvdXJjZXMsIGNvbnN0IEpTT046OkFycmF5JiBz
dGVwcywgUmVmPFBlcmZvcm1JbnRlcmFjdGlvblNlcXVlbmNlQ2FsbGJhY2s+JiYpIG92ZXJyaWRl
OworICAgIHZvaWQgY2FuY2VsSW50ZXJhY3Rpb25TZXF1ZW5jZShjb25zdCBTdHJpbmcmIGhhbmRs
ZSwgUmVmPENhbmNlbEludGVyYWN0aW9uU2VxdWVuY2VDYWxsYmFjaz4mJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCB0YWtlU2NyZWVuc2hvdChjb25zdCBTdHJpbmcmIGhhbmRsZSwgY29uc3QgU3RyaW5n
KiBvcHRpb25hbEZyYW1lSGFuZGxlLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsTm9kZUhhbmRsZSwg
Y29uc3QgYm9vbCogb3B0aW9uYWxTY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBjb25zdCBib29sKiBv
cHRpb25hbENsaXBUb1ZpZXdwb3J0LCBSZWY8VGFrZVNjcmVlbnNob3RDYWxsYmFjaz4mJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCByZXNvbHZlQ2hpbGRGcmFtZUhhbmRsZShjb25zdCBTdHJpbmcmIGJy
b3dzaW5nQ29udGV4dEhhbmRsZSwgY29uc3QgU3RyaW5nKiBvcHRpb25hbEZyYW1lSGFuZGxlLCBj
b25zdCBpbnQqIG9wdGlvbmFsT3JkaW5hbCwgY29uc3QgU3RyaW5nKiBvcHRpb25hbE5hbWUsIGNv
bnN0IFN0cmluZyogb3B0aW9uYWxOb2RlSGFuZGxlLCBSZWY8UmVzb2x2ZUNoaWxkRnJhbWVIYW5k
bGVDYWxsYmFjaz4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXNvbHZlUGFyZW50RnJhbWVIYW5k
bGUoY29uc3QgU3RyaW5nJiBicm93c2luZ0NvbnRleHRIYW5kbGUsIGNvbnN0IFN0cmluZyYgZnJh
bWVIYW5kbGUsIFJlZjxSZXNvbHZlUGFyZW50RnJhbWVIYW5kbGVDYWxsYmFjaz4mJikgb3ZlcnJp
ZGU7CkBAIC0xNzUsNyArMTg1LDEwIEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgLy8gRXZlbnQg
U2ltdWxhdGlvbiBTdXBwb3J0LgotICAgIGJvb2wgaXNTaW11bGF0aW5nVXNlckludGVyYWN0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9zaW11bGF0aW5nVXNlckludGVyYWN0aW9uOyB9CisgICAgYm9v
bCBpc1NpbXVsYXRpbmdVc2VySW50ZXJhY3Rpb24oKSBjb25zdDsKKyAgICBTaW11bGF0ZWRJbnB1
dERpc3BhdGNoZXImIGlucHV0RGlzcGF0Y2hlckZvclBhZ2UoV2ViUGFnZVByb3h5Jik7CisgICAg
U2ltdWxhdGVkSW5wdXRTb3VyY2UqIGlucHV0U291cmNlRm9yVHlwZShTaW11bGF0ZWRJbnB1dFNv
dXJjZTo6VHlwZSkgY29uc3Q7CisKICNpZiBQTEFURk9STShNQUMpCiAgICAgYm9vbCB3YXNFdmVu
dFN5bnRoZXNpemVkRm9yQXV0b21hdGlvbihOU0V2ZW50ICopOwogICAgIHZvaWQgbWFya0V2ZW50
QXNTeW50aGVzaXplZEZvckF1dG9tYXRpb24oTlNFdmVudCAqKTsKQEAgLTIxNSw5ICsyMjgsOSBA
QCBwcml2YXRlOgogICAgIHZvaWQgZGlkRGVsZXRlQ29va2llKHVpbnQ2NF90IGNhbGxiYWNrSUQs
IGNvbnN0IFN0cmluZyYgZXJyb3JUeXBlKTsKIAogICAgIC8vIFBsYXRmb3JtLWRlcGVuZGVudCBp
bXBsZW1lbnRhdGlvbnMuCi0gICAgdm9pZCBwbGF0Zm9ybVNpbXVsYXRlTW91c2VJbnRlcmFjdGlv
bihXZWJQYWdlUHJveHkmLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgdmlld1Bvc2l0aW9uLCBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUludGVyYWN0aW9uLCBJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1dHRvbiwgV2ViRXZlbnQ6Ok1vZGlmaWVy
cyk7Ci0gICAgLy8gU2ltdWxhdGVzIGEgc2luZ2xlIHZpcnR1YWwga2V5IGJlaW5nIHByZXNzZWQs
IHN1Y2ggYXMgQ29udHJvbCwgRi1rZXlzLCBOdW1wYWQga2V5cywgZXRjLiBhcyBhbGxvd2VkIGJ5
IHRoZSBwcm90b2NvbC4KLSAgICB2b2lkIHBsYXRmb3JtU2ltdWxhdGVLZXlTdHJva2UoV2ViUGFn
ZVByb3h5JiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6S2V5Ym9hcmRJbnRlcmFj
dGlvblR5cGUsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXkpOwor
ICAgIHZvaWQgcGxhdGZvcm1TaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5Jiwg
TW91c2VJbnRlcmFjdGlvbiwgV2ViTW91c2VFdmVudDo6QnV0dG9uLCBjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYgbG9jYXRpb25JblZpZXcsIFdlYkV2ZW50OjpNb2RpZmllcnMga2V5TW9kaWZpZXJz
KTsKKyAgICAvLyBTaW11bGF0ZXMgYSBzaW5nbGUgdmlydHVhbCBvciBjaGFyIGtleSBiZWluZyBw
cmVzc2VkL3JlbGVhc2VkLCBzdWNoIGFzICdhJywgQ29udHJvbCwgRi1rZXlzLCBOdW1wYWQga2V5
cywgZXRjLiBhcyBhbGxvd2VkIGJ5IHRoZSBwcm90b2NvbC4KKyAgICB2b2lkIHBsYXRmb3JtU2lt
dWxhdGVLZXlib2FyZEludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYsIEtleWJvYXJkSW50ZXJhY3Rp
b24sIHN0ZDo6b3B0aW9uYWw8VmlydHVhbEtleT4sIHN0ZDo6b3B0aW9uYWw8Q2hhcktleT4pOwog
ICAgIC8vIFNpbXVsYXRlcyBrZXkgcHJlc3NlcyB0byBwcm9kdWNlIHRoZSBjb2RlcG9pbnRzIGlu
IGEgc3RyaW5nLiBPbmUgb3IgbW9yZSBjb2RlIHBvaW50cyBhcmUgZGVsaXZlcmVkIGF0b21pY2Fs
bHkgYXQgZ3JhcGhlbWUgY2x1c3RlciBib3VuZGFyaWVzLgogICAgIHZvaWQgcGxhdGZvcm1TaW11
bGF0ZUtleVNlcXVlbmNlKFdlYlBhZ2VQcm94eSYsIGNvbnN0IFN0cmluZyYpOwogICAgIC8vIEdl
dCBiYXNlNjQgZW5jb2RlZCBQTkcgZGF0YSBmcm9tIGEgYml0bWFwLgpAQCAtMjg5LDEzICszMDIs
MTUgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9wZXJtaXNzaW9uRm9yR2V0VXNlck1lZGlhIHsg
dHJ1ZSB9OwogCi0gICAgLy8gVHJ1ZSBpZiBhIHN5bnRoZXNpemVkIGtleSBldmVudCBpcyBzdGls
bCBiZWluZyBwcm9jZXNzZWQuCi0gICAgYm9vbCBtX3NpbXVsYXRpbmdVc2VySW50ZXJhY3Rpb24g
eyBmYWxzZSB9OwotCiAgICAgLy8gS2VlcCB0cmFjayBvZiBjdXJyZW50bHkgYWN0aXZlIG1vZGlm
aWVycyBhY3Jvc3MgbXVsdGlwbGUga2V5c3Ryb2tlcy4KICAgICAvLyBNb3N0IHBsYXRmb3JtcyBk
byBub3QgdHJhY2sgY3VycmVudCBtb2RpZmllcnMgZnJvbSBzeW50aGVzaXplZCBldmVudHMuCiAg
ICAgdW5zaWduZWQgbV9jdXJyZW50TW9kaWZpZXJzIHsgMCB9OwogCisgICAgLy8gU2ltdWxhdGVk
SW5wdXREaXNwYXRjaGVyIEFQSXMgdGFrZSBhIHNldCBvZiBpbnB1dCBzb3VyY2VzLiBXZSBhbHNv
IGludGVybiB0aGVzZQorICAgIC8vIHNvIHRoYXQgcHJldmlvdXMgaW5wdXQgc291cmNlIHN0YXRl
IGlzIHVzZWQgYXMgaW5pdGlhbCBzdGF0ZSBmb3IgbGF0ZXIgY29tbWFuZHMuCisgICAgSGFzaFNl
dDxSZWY8U2ltdWxhdGVkSW5wdXRTb3VyY2U+PiBtX2lucHV0U291cmNlczsKKyAgICBIYXNoTWFw
PHVpbnQ2NF90LCBSZWY8U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyPj4gbV9pbnB1dERpc3BhdGNo
ZXJzQnlQYWdlOworCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAgICAgSW5zcGVjdG9y
OjpGcm9udGVuZENoYW5uZWwqIG1fcmVtb3RlQ2hhbm5lbCB7IG51bGxwdHIgfTsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9ndGsvV2ViQXV0
b21hdGlvblNlc3Npb25HdGsuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlv
bi9ndGsvV2ViQXV0b21hdGlvblNlc3Npb25HdGsuY3BwCmluZGV4IDI4Y2Y3OTQ4YzgzYjdjZDE5
MmMwM2MwN2E1MmE5MDFkYjY4ZGVjZGEuLmJmMGQ1ZTY2OWQ1NmZmYmEwMTI1ZjNiM2U4MWNjNjUw
N2NiMzBkZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24v
Z3RrL1dlYkF1dG9tYXRpb25TZXNzaW9uR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BdXRvbWF0aW9uL2d0ay9XZWJBdXRvbWF0aW9uU2Vzc2lvbkd0ay5jcHAKQEAgLTQ4LDE1
ICs0OCwxNSBAQCBzdGF0aWMgdW5zaWduZWQgbW9kaWZpZXJzVG9FdmVudFN0YXRlKFdlYkV2ZW50
OjpNb2RpZmllcnMgbW9kaWZpZXJzKQogICAgIHJldHVybiBzdGF0ZTsKIH0KIAotc3RhdGljIHVu
c2lnbmVkIG1vdXNlQnV0dG9uVG9HZGtCdXR0b24oSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21h
dGlvbjo6TW91c2VCdXR0b24gYnV0dG9uKQorc3RhdGljIHVuc2lnbmVkIG1vdXNlQnV0dG9uVG9H
ZGtCdXR0b24oV2ViTW91c2VFdmVudDo6QnV0dG9uIGJ1dHRvbikKIHsKICAgICBzd2l0Y2ggKGJ1
dHRvbikgewotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VC
dXR0b246Ok5vbmU6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpN
b3VzZUJ1dHRvbjo6TGVmdDoKKyAgICBjYXNlIFdlYk1vdXNlRXZlbnQ6Ok5vQnV0dG9uOgorICAg
IGNhc2UgV2ViTW91c2VFdmVudDo6TGVmdEJ1dHRvbjoKICAgICAgICAgcmV0dXJuIEdES19CVVRU
T05fUFJJTUFSWTsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1v
dXNlQnV0dG9uOjpNaWRkbGU6CisgICAgY2FzZSBXZWJNb3VzZUV2ZW50OjpNaWRkbGVCdXR0b246
CiAgICAgICAgIHJldHVybiBHREtfQlVUVE9OX01JRERMRTsKLSAgICBjYXNlIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9uOjpSaWdodDoKKyAgICBjYXNlIFdlYk1v
dXNlRXZlbnQ6OlJpZ2h0QnV0dG9uOgogICAgICAgICByZXR1cm4gR0RLX0JVVFRPTl9TRUNPTkRB
Ulk7CiAgICAgfQogICAgIHJldHVybiBHREtfQlVUVE9OX1BSSU1BUlk7CkBAIC0xMDEsMzAgKzEw
MSwzMCBAQCBzdGF0aWMgdm9pZCBkb01vdGlvbkV2ZW50KEd0a1dpZGdldCogd2lkZ2V0LCBjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYgbG9jYXRpb24sCiAgICAgZ3RrX21haW5fZG9fZXZlbnQoZXZl
bnQuZ2V0KCkpOwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVs
YXRlTW91c2VJbnRlcmFjdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiB2aWV3UG9zaXRpb24sIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1v
dXNlSW50ZXJhY3Rpb24gaW50ZXJhY3Rpb24sIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRp
b246Ok1vdXNlQnV0dG9uIGJ1dHRvbiwgV2ViRXZlbnQ6Ok1vZGlmaWVycyBrZXlNb2RpZmllcnMp
Cit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlTW91c2VJbnRlcmFj
dGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIE1vdXNlSW50ZXJhY3Rpb24gaW50ZXJhY3Rpb24sIFdl
Yk1vdXNlRXZlbnQ6OkJ1dHRvbiBidXR0b24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBsb2Nh
dGlvbkluVmlldywgV2ViRXZlbnQ6Ok1vZGlmaWVycyBrZXlNb2RpZmllcnMpCiB7CiAgICAgdW5z
aWduZWQgZ2RrQnV0dG9uID0gbW91c2VCdXR0b25Ub0dka0J1dHRvbihidXR0b24pOwogICAgIHVu
c2lnbmVkIHN0YXRlID0gbW9kaWZpZXJzVG9FdmVudFN0YXRlKGtleU1vZGlmaWVycyk7CiAKICAg
ICBzd2l0Y2ggKGludGVyYWN0aW9uKSB7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpB
dXRvbWF0aW9uOjpNb3VzZUludGVyYWN0aW9uOjpNb3ZlOgotICAgICAgICBkb01vdGlvbkV2ZW50
KHBhZ2Uudmlld1dpZGdldCgpLCB2aWV3UG9zaXRpb24sIHN0YXRlKTsKKyAgICBjYXNlIE1vdXNl
SW50ZXJhY3Rpb246Ok1vdmU6CisgICAgICAgIGRvTW90aW9uRXZlbnQocGFnZS52aWV3V2lkZ2V0
KCksIGxvY2F0aW9uSW5WaWV3LCBzdGF0ZSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VJbnRlcmFjdGlvbjo6RG93bjoKLSAg
ICAgICAgZG9Nb3VzZUV2ZW50KEdES19CVVRUT05fUFJFU1MsIHBhZ2Uudmlld1dpZGdldCgpLCB2
aWV3UG9zaXRpb24sIGdka0J1dHRvbiwgc3RhdGUpOworICAgIGNhc2UgTW91c2VJbnRlcmFjdGlv
bjo6RG93bjoKKyAgICAgICAgZG9Nb3VzZUV2ZW50KEdES19CVVRUT05fUFJFU1MsIHBhZ2Uudmll
d1dpZGdldCgpLCBsb2NhdGlvbkluVmlldywgZ2RrQnV0dG9uLCBzdGF0ZSk7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VJbnRl
cmFjdGlvbjo6VXA6Ci0gICAgICAgIGRvTW91c2VFdmVudChHREtfQlVUVE9OX1JFTEVBU0UsIHBh
Z2Uudmlld1dpZGdldCgpLCB2aWV3UG9zaXRpb24sIGdka0J1dHRvbiwgc3RhdGUpOworICAgIGNh
c2UgTW91c2VJbnRlcmFjdGlvbjo6VXA6CisgICAgICAgIGRvTW91c2VFdmVudChHREtfQlVUVE9O
X1JFTEVBU0UsIHBhZ2Uudmlld1dpZGdldCgpLCBsb2NhdGlvbkluVmlldywgZ2RrQnV0dG9uLCBz
dGF0ZSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbjo6TW91c2VJbnRlcmFjdGlvbjo6U2luZ2xlQ2xpY2s6Ci0gICAgICAgIGRvTW91c2VF
dmVudChHREtfQlVUVE9OX1BSRVNTLCBwYWdlLnZpZXdXaWRnZXQoKSwgdmlld1Bvc2l0aW9uLCBn
ZGtCdXR0b24sIHN0YXRlKTsKLSAgICAgICAgZG9Nb3VzZUV2ZW50KEdES19CVVRUT05fUkVMRUFT
RSwgcGFnZS52aWV3V2lkZ2V0KCksIHZpZXdQb3NpdGlvbiwgZ2RrQnV0dG9uLCBzdGF0ZSk7Cisg
ICAgY2FzZSBNb3VzZUludGVyYWN0aW9uOjpTaW5nbGVDbGljazoKKyAgICAgICAgZG9Nb3VzZUV2
ZW50KEdES19CVVRUT05fUFJFU1MsIHBhZ2Uudmlld1dpZGdldCgpLCBsb2NhdGlvbkluVmlldywg
Z2RrQnV0dG9uLCBzdGF0ZSk7CisgICAgICAgIGRvTW91c2VFdmVudChHREtfQlVUVE9OX1JFTEVB
U0UsIHBhZ2Uudmlld1dpZGdldCgpLCBsb2NhdGlvbkluVmlldywgZ2RrQnV0dG9uLCBzdGF0ZSk7
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlv
bjo6TW91c2VJbnRlcmFjdGlvbjo6RG91YmxlQ2xpY2s6Ci0gICAgICAgIGRvTW91c2VFdmVudChH
REtfQlVUVE9OX1BSRVNTLCBwYWdlLnZpZXdXaWRnZXQoKSwgdmlld1Bvc2l0aW9uLCBnZGtCdXR0
b24sIHN0YXRlKTsKLSAgICAgICAgZG9Nb3VzZUV2ZW50KEdES19CVVRUT05fUkVMRUFTRSwgcGFn
ZS52aWV3V2lkZ2V0KCksIHZpZXdQb3NpdGlvbiwgZ2RrQnV0dG9uLCBzdGF0ZSk7Ci0gICAgICAg
IGRvTW91c2VFdmVudChHREtfQlVUVE9OX1BSRVNTLCBwYWdlLnZpZXdXaWRnZXQoKSwgdmlld1Bv
c2l0aW9uLCBnZGtCdXR0b24sIHN0YXRlKTsKLSAgICAgICAgZG9Nb3VzZUV2ZW50KEdES19CVVRU
T05fUkVMRUFTRSwgcGFnZS52aWV3V2lkZ2V0KCksIHZpZXdQb3NpdGlvbiwgZ2RrQnV0dG9uLCBz
dGF0ZSk7CisgICAgY2FzZSBNb3VzZUludGVyYWN0aW9uOjpEb3VibGVDbGljazoKKyAgICAgICAg
ZG9Nb3VzZUV2ZW50KEdES19CVVRUT05fUFJFU1MsIHBhZ2Uudmlld1dpZGdldCgpLCBsb2NhdGlv
bkluVmlldywgZ2RrQnV0dG9uLCBzdGF0ZSk7CisgICAgICAgIGRvTW91c2VFdmVudChHREtfQlVU
VE9OX1JFTEVBU0UsIHBhZ2Uudmlld1dpZGdldCgpLCBsb2NhdGlvbkluVmlldywgZ2RrQnV0dG9u
LCBzdGF0ZSk7CisgICAgICAgIGRvTW91c2VFdmVudChHREtfQlVUVE9OX1BSRVNTLCBwYWdlLnZp
ZXdXaWRnZXQoKSwgbG9jYXRpb25JblZpZXcsIGdka0J1dHRvbiwgc3RhdGUpOworICAgICAgICBk
b01vdXNlRXZlbnQoR0RLX0JVVFRPTl9SRUxFQVNFLCBwYWdlLnZpZXdXaWRnZXQoKSwgbG9jYXRp
b25JblZpZXcsIGdka0J1dHRvbiwgc3RhdGUpOwogICAgICAgICBicmVhazsKICAgICB9CiB9CkBA
IC0yODAsMjAgKzI4MCwyNyBAQCBzdGF0aWMgaW50IGtleUNvZGVGb3JWaXJ0dWFsS2V5KEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXkga2V5LAogICAgIHJldHVybiAw
OwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlS2V5U3Ry
b2tlKFdlYlBhZ2VQcm94eSYgcGFnZSwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6
S2V5Ym9hcmRJbnRlcmFjdGlvblR5cGUgaW50ZXJhY3Rpb24sIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkF1dG9tYXRpb246OlZpcnR1YWxLZXkga2V5KQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6
cGxhdGZvcm1TaW11bGF0ZUtleWJvYXJkSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBL
ZXlib2FyZEludGVyYWN0aW9uIGludGVyYWN0aW9uLCBzdGQ6Om9wdGlvbmFsPFZpcnR1YWxLZXk+
IHZpcnR1YWxLZXksIHN0ZDo6b3B0aW9uYWw8Q2hhcktleT4gY2hhcktleSkKIHsKKyAgICBBU1NF
UlQodmlydHVhbEtleS5oYXNfdmFsdWUoKSB8fCBjaGFyS2V5Lmhhc192YWx1ZSgpKTsKKwogICAg
IEdka01vZGlmaWVyVHlwZSB1cGRhdGVTdGF0ZTsKLSAgICBhdXRvIGtleUNvZGUgPSBrZXlDb2Rl
Rm9yVmlydHVhbEtleShrZXksIHVwZGF0ZVN0YXRlKTsKKyAgICBpbnQga2V5Q29kZTsKKyAgICBp
ZiAodmlydHVhbEtleS5oYXNfdmFsdWUoKSkKKyAgICAgICAga2V5Q29kZSA9IGtleUNvZGVGb3JW
aXJ0dWFsS2V5KHZpcnR1YWxLZXkudmFsdWUoKSwgdXBkYXRlU3RhdGUpOworICAgIGVsc2UKKyAg
ICAgICAga2V5Q29kZSA9IGdka191bmljb2RlX3RvX2tleXZhbChnX3V0ZjhfZ2V0X2NoYXIoJmNo
YXJLZXkudmFsdWUoKSkpOworCiAgICAgc3dpdGNoIChpbnRlcmFjdGlvbikgewotICAgIGNhc2Ug
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6S2V5Ym9hcmRJbnRlcmFjdGlvblR5cGU6
OktleVByZXNzOgorICAgIGNhc2UgS2V5Ym9hcmRJbnRlcmFjdGlvbjo6S2V5UHJlc3M6CiAgICAg
ICAgIG1fY3VycmVudE1vZGlmaWVycyB8PSB1cGRhdGVTdGF0ZTsKICAgICAgICAgZG9LZXlTdHJv
a2VFdmVudChHREtfS0VZX1BSRVNTLCBwYWdlLnZpZXdXaWRnZXQoKSwga2V5Q29kZSwgbV9jdXJy
ZW50TW9kaWZpZXJzKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpLZXlib2FyZEludGVyYWN0aW9uVHlwZTo6S2V5UmVsZWFzZToKKyAg
ICBjYXNlIEtleWJvYXJkSW50ZXJhY3Rpb246OktleVJlbGVhc2U6CiAgICAgICAgIG1fY3VycmVu
dE1vZGlmaWVycyAmPSB+dXBkYXRlU3RhdGU7CiAgICAgICAgIGRvS2V5U3Ryb2tlRXZlbnQoR0RL
X0tFWV9SRUxFQVNFLCBwYWdlLnZpZXdXaWRnZXQoKSwga2V5Q29kZSwgbV9jdXJyZW50TW9kaWZp
ZXJzKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRv
bWF0aW9uOjpLZXlib2FyZEludGVyYWN0aW9uVHlwZTo6SW5zZXJ0QnlLZXk6CisgICAgY2FzZSBL
ZXlib2FyZEludGVyYWN0aW9uOjpJbnNlcnRCeUtleToKICAgICAgICAgZG9LZXlTdHJva2VFdmVu
dChHREtfS0VZX1BSRVNTLCBwYWdlLnZpZXdXaWRnZXQoKSwga2V5Q29kZSwgbV9jdXJyZW50TW9k
aWZpZXJzLCB0cnVlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9pb3MvV2ViQXV0b21hdGlvblNlc3Npb25JT1Mu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2lvcy9XZWJBdXRvbWF0aW9u
U2Vzc2lvbklPUy5tbQppbmRleCA1Zjc0YWRlZGY3NWZlNTY5MmMyOGQ4NDQ4NTkyZjIyMzU0YjY4
ZDZjLi5hMDgzYzI5OWUzOWY0NTc5MmQ4ZDA4OGVmN2I2NDFhNjUwNTg4ZjJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2lvcy9XZWJBdXRvbWF0aW9uU2Vz
c2lvbklPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2lvcy9X
ZWJBdXRvbWF0aW9uU2Vzc2lvbklPUy5tbQpAQCAtNjUsMzcgKzY1LDQ5IEBAIHZvaWQgV2ViQXV0
b21hdGlvblNlc3Npb246OnNlbmRTeW50aGVzaXplZEV2ZW50c1RvUGFnZShXZWJQYWdlUHJveHkm
IHBhZ2UsIE5TQXJyCiAKICNwcmFnbWEgbWFyayBDb21tYW5kcyBmb3IgUGxhdGZvcm06ICdpT1Mn
CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVLZXlTdHJva2Uo
V2ViUGFnZVByb3h5JiBwYWdlLCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpLZXli
b2FyZEludGVyYWN0aW9uVHlwZSBpbnRlcmFjdGlvbiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbjo6VmlydHVhbEtleSBrZXkpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0
Zm9ybVNpbXVsYXRlS2V5Ym9hcmRJbnRlcmFjdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIEtleWJv
YXJkSW50ZXJhY3Rpb24gaW50ZXJhY3Rpb24sIHN0ZDo6b3B0aW9uYWw8VmlydHVhbEtleT4gdmly
dHVhbEtleSwgc3RkOjpvcHRpb25hbDxDaGFyS2V5PiBjaGFyS2V5KQogeworICAgIEFTU0VSVCh2
aXJ0dWFsS2V5Lmhhc192YWx1ZSgpIHx8IGNoYXJLZXkuaGFzX3ZhbHVlKCkpOworCiAgICAgLy8g
VGhlIG1vZGlmaWVycyBjaGFuZ2VkIGJ5IHRoZSB2aXJ0dWFsIGtleSB3aGVuIGl0IGlzIHByZXNz
ZWQgb3IgcmVsZWFzZWQuCiAgICAgV2ViRXZlbnRGbGFncyBjaGFuZ2VkTW9kaWZpZXJzID0gMDsK
IAotICAgIC8vIEZpZ3VyZSBvdXQgdGhlIGVmZmVjdHMgb2Ygc3RpY2t5IG1vZGlmaWVycy4KLSAg
ICBzd2l0Y2ggKGtleSkgewotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlv
bjo6VmlydHVhbEtleTo6U2hpZnQ6Ci0gICAgICAgIGNoYW5nZWRNb2RpZmllcnMgfD0gV2ViRXZl
bnRGbGFnTWFza1NoaWZ0OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkNvbnRyb2w6Ci0gICAgICAgIGNoYW5nZWRN
b2RpZmllcnMgfD0gV2ViRXZlbnRGbGFnTWFza0NvbnRyb2w7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6QWx0ZXJu
YXRlOgotICAgICAgICBjaGFuZ2VkTW9kaWZpZXJzIHw9IFdlYkV2ZW50RmxhZ01hc2tBbHRlcm5h
dGU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21h
dGlvbjo6VmlydHVhbEtleTo6TWV0YToKLSAgICAgICAgLy8gVGhlICdtZXRhJyBrZXkgZG9lcyBu
b3QgZXhpc3Qgb24gQXBwbGUga2V5Ym9hcmRzIGFuZCBpcyB1c3VhbGx5Ci0gICAgICAgIC8vIG1h
cHBlZCB0byB0aGUgQ29tbWFuZCBrZXkgd2hlbiB1c2luZyB0aGlyZC1wYXJ0eSBrZXlib2FyZHMu
Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpD
b21tYW5kOgotICAgICAgICBjaGFuZ2VkTW9kaWZpZXJzIHw9IFdlYkV2ZW50RmxhZ01hc2tDb21t
YW5kOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBicmVhazsKLSAgICB9
Ci0KICAgICAvLyBVSUtpdCBkb2VzIG5vdCBzZW5kIGtleSBjb2RlcyBmb3IgdmlydHVhbCBrZXlz
IGV2ZW4gZm9yIGEgaGFyZHdhcmUga2V5Ym9hcmQuCiAgICAgLy8gSW5zdGVhZCwgaXQgc2VuZHMg
c2luZ2xlIHVuaWNoYXJzIGFuZCBXZWJDb3JlIG1hcHMgdGhlc2UgdG8gIndpbmRvd3MiIGtleSBj
b2Rlcy4KICAgICAvLyBTeW50aGVzaXplIGEgc2luZ2xlIHVuaWNoYXIgc3VjaCB0aGF0IHRoZSBj
b3JyZWN0IGtleSBjb2RlIGlzIGluZmVycmVkLgotICAgIHN0ZDo6b3B0aW9uYWw8dW5pY2hhcj4g
Y2hhckNvZGUgPSBjaGFyQ29kZUZvclZpcnR1YWxLZXkoa2V5KTsKLSAgICBzdGQ6Om9wdGlvbmFs
PHVuaWNoYXI+IGNoYXJDb2RlSWdub3JpbmdNb2RpZmllcnMgPSBjaGFyQ29kZUlnbm9yaW5nTW9k
aWZpZXJzRm9yVmlydHVhbEtleShrZXkpOworICAgIHN0ZDo6b3B0aW9uYWw8dW5pY2hhcj4gY2hh
ckNvZGU7CisgICAgc3RkOjpvcHRpb25hbDx1bmljaGFyPiBjaGFyQ29kZUlnbm9yaW5nTW9kaWZp
ZXJzOworCisgICAgLy8gRmlndXJlIG91dCB0aGUgZWZmZWN0cyBvZiBzdGlja3kgbW9kaWZpZXJz
LgorICAgIGlmICh2aXJ0dWFsS2V5Lmhhc192YWx1ZSgpKSB7CisgICAgICAgIGNoYXJDb2RlID0g
Y2hhckNvZGVGb3JWaXJ0dWFsS2V5KHZpcnR1YWxLZXkudmFsdWUoKSk7CisgICAgICAgIGNoYXJD
b2RlSWdub3JpbmdNb2RpZmllcnMgPSBjaGFyQ29kZUlnbm9yaW5nTW9kaWZpZXJzRm9yVmlydHVh
bEtleSh2aXJ0dWFsS2V5LnZhbHVlKCkpOworCisgICAgICAgIHN3aXRjaCAodmlydHVhbEtleS52
YWx1ZSgpKSB7CisgICAgICAgIGNhc2UgVmlydHVhbEtleTo6U2hpZnQ6CisgICAgICAgICAgICBj
aGFuZ2VkTW9kaWZpZXJzIHw9IFdlYkV2ZW50RmxhZ01hc2tTaGlmdDsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIFZpcnR1YWxLZXk6OkNvbnRyb2w6CisgICAgICAgICAgICBjaGFu
Z2VkTW9kaWZpZXJzIHw9IFdlYkV2ZW50RmxhZ01hc2tDb250cm9sOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgVmlydHVhbEtleTo6QWx0ZXJuYXRlOgorICAgICAgICAgICAgY2hh
bmdlZE1vZGlmaWVycyB8PSBXZWJFdmVudEZsYWdNYXNrQWx0ZXJuYXRlOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgVmlydHVhbEtleTo6TWV0YToKKyAgICAgICAgICAgIC8vIFRo
ZSAnbWV0YScga2V5IGRvZXMgbm90IGV4aXN0IG9uIEFwcGxlIGtleWJvYXJkcyBhbmQgaXMgdXN1
YWxseQorICAgICAgICAgICAgLy8gbWFwcGVkIHRvIHRoZSBDb21tYW5kIGtleSB3aGVuIHVzaW5n
IHRoaXJkLXBhcnR5IGtleWJvYXJkcy4KKyAgICAgICAgY2FzZSBWaXJ0dWFsS2V5OjpDb21tYW5k
OgorICAgICAgICAgICAgY2hhbmdlZE1vZGlmaWVycyB8PSBXZWJFdmVudEZsYWdNYXNrQ29tbWFu
ZDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoY2hhcktleS5oYXNfdmFsdWUoKSkgewor
ICAgICAgICBjaGFyQ29kZSA9ICh1bmljaGFyKWNoYXJLZXkudmFsdWUoKTsKKyAgICAgICAgY2hh
ckNvZGVJZ25vcmluZ01vZGlmaWVycyA9ICh1bmljaGFyKWNoYXJLZXkudmFsdWUoKTsKKyAgICB9
CiAKICAgICAvLyBGSVhNRTogY29uc2lkZXIgdXNpbmcgVUlLaXQgU1BJIHRvIG5vcm1hbGl6ZSAn
Y2hhcmFjdGVycycsIGkuZS4sIGNoYW5naW5nICogdG8gU2hpZnQtOCwKICAgICAvLyBhbmQgcGFz
c2luZyB0aGF0IGluIHRvIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycy4gVGhpcyBpcyBwcm9i
YWJseSBub3Qgd29ydGggdGhlIHRyb3VibGUKQEAgLTExNSwxOSArMTI3LDE5IEBAIHZvaWQgV2Vi
QXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVLZXlTdHJva2UoV2ViUGFnZVByb3h5
JiBwYWdlLCBJbnNwZWN0CiAgICAgYXV0byBldmVudHNUb0JlU2VudCA9IGFkb3B0TlMoW1tOU011
dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogCiAgICAgc3dpdGNoIChpbnRlcmFjdGlvbikgewot
ICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6S2V5Ym9hcmRJbnRlcmFj
dGlvblR5cGU6OktleVByZXNzOiB7CisgICAgY2FzZSBLZXlib2FyZEludGVyYWN0aW9uOjpLZXlQ
cmVzczogewogICAgICAgICBtX2N1cnJlbnRNb2RpZmllcnMgfD0gY2hhbmdlZE1vZGlmaWVyczsK
IAogICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltbWzo6V2ViRXZlbnQgYWxsb2Nd
IGluaXRXaXRoS2V5RXZlbnRUeXBlOldlYkV2ZW50S2V5RG93biB0aW1lU3RhbXA6Q0ZBYnNvbHV0
ZVRpbWVHZXRDdXJyZW50KCkgY2hhcmFjdGVyczpjaGFyYWN0ZXJzIGNoYXJhY3RlcnNJZ25vcmlu
Z01vZGlmaWVyczp1bm1vZGlmaWVkQ2hhcmFjdGVycyBtb2RpZmllcnM6bV9jdXJyZW50TW9kaWZp
ZXJzIGlzUmVwZWF0aW5nOk5PIHdpdGhGbGFnczppbnB1dEZsYWdzIHdpdGhJbnB1dE1hbmFnZXJI
aW50Om5pbCBrZXlDb2RlOmtleUNvZGUgaXNUYWJLZXk6aXNUYWJLZXldIGF1dG9yZWxlYXNlXV07
CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1
dG9tYXRpb246OktleWJvYXJkSW50ZXJhY3Rpb25UeXBlOjpLZXlSZWxlYXNlOiB7CisgICAgY2Fz
ZSBLZXlib2FyZEludGVyYWN0aW9uOjpLZXlSZWxlYXNlOiB7CiAgICAgICAgIG1fY3VycmVudE1v
ZGlmaWVycyAmPSB+Y2hhbmdlZE1vZGlmaWVyczsKIAogICAgICAgICBbZXZlbnRzVG9CZVNlbnQg
YWRkT2JqZWN0OltbWzo6V2ViRXZlbnQgYWxsb2NdIGluaXRXaXRoS2V5RXZlbnRUeXBlOldlYkV2
ZW50S2V5VXAgdGltZVN0YW1wOkNGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpIGNoYXJhY3RlcnM6
Y2hhcmFjdGVycyBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6dW5tb2RpZmllZENoYXJhY3Rl
cnMgbW9kaWZpZXJzOm1fY3VycmVudE1vZGlmaWVycyBpc1JlcGVhdGluZzpOTyB3aXRoRmxhZ3M6
aW5wdXRGbGFncyB3aXRoSW5wdXRNYW5hZ2VySGludDpuaWwga2V5Q29kZTprZXlDb2RlIGlzVGFi
S2V5OmlzVGFiS2V5XSBhdXRvcmVsZWFzZV1dOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAg
Y2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpLZXlib2FyZEludGVyYWN0aW9u
VHlwZTo6SW5zZXJ0QnlLZXk6IHsKKyAgICBjYXNlIEtleWJvYXJkSW50ZXJhY3Rpb246Okluc2Vy
dEJ5S2V5OiB7CiAgICAgICAgIC8vIE1vZGlmaWVycyBvbmx5IGNoYW5nZSB3aXRoIEtleVByZXNz
IG9yIEtleVJlbGVhc2UsIHRoaXMgY29kZSBwYXRoIGlzIGZvciBzaW5nbGUgY2hhcmFjdGVycy4K
ICAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbW1s6OldlYkV2ZW50IGFsbG9jXSBp
bml0V2l0aEtleUV2ZW50VHlwZTpXZWJFdmVudEtleURvd24gdGltZVN0YW1wOkNGQWJzb2x1dGVU
aW1lR2V0Q3VycmVudCgpIGNoYXJhY3RlcnM6Y2hhcmFjdGVycyBjaGFyYWN0ZXJzSWdub3JpbmdN
b2RpZmllcnM6dW5tb2RpZmllZENoYXJhY3RlcnMgbW9kaWZpZXJzOm1fY3VycmVudE1vZGlmaWVy
cyBpc1JlcGVhdGluZzpOTyB3aXRoRmxhZ3M6aW5wdXRGbGFncyB3aXRoSW5wdXRNYW5hZ2VySGlu
dDpuaWwga2V5Q29kZTprZXlDb2RlIGlzVGFiS2V5OmlzVGFiS2V5XSBhdXRvcmVsZWFzZV1dOwog
ICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltbWzo6V2ViRXZlbnQgYWxsb2NdIGlu
aXRXaXRoS2V5RXZlbnRUeXBlOldlYkV2ZW50S2V5VXAgdGltZVN0YW1wOkNGQWJzb2x1dGVUaW1l
R2V0Q3VycmVudCgpIGNoYXJhY3RlcnM6Y2hhcmFjdGVycyBjaGFyYWN0ZXJzSWdub3JpbmdNb2Rp
ZmllcnM6dW5tb2RpZmllZENoYXJhY3RlcnMgbW9kaWZpZXJzOm1fY3VycmVudE1vZGlmaWVycyBp
c1JlcGVhdGluZzpOTyB3aXRoRmxhZ3M6aW5wdXRGbGFncyB3aXRoSW5wdXRNYW5hZ2VySGludDpu
aWwga2V5Q29kZTprZXlDb2RlIGlzVGFiS2V5OmlzVGFiS2V5XSBhdXRvcmVsZWFzZV1dOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9tYWMvV2ViQXV0b21h
dGlvblNlc3Npb25NYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL21h
Yy9XZWJBdXRvbWF0aW9uU2Vzc2lvbk1hYy5tbQppbmRleCAzYjVlNTU4YzY0YzNkYTc2N2E5ODll
ZDY0MjBhNzc1ZjJjMWE2MTMyLi5mNDYwYTM4NjUzZGM2NGVlNjYxNzkwNzMwYzE4Y2JmYjRlMGYy
YjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL21hYy9X
ZWJBdXRvbWF0aW9uU2Vzc2lvbk1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
dXRvbWF0aW9uL21hYy9XZWJBdXRvbWF0aW9uU2Vzc2lvbk1hYy5tbQpAQCAtMTE4LDExICsxMTgs
MTEgQEAgYm9vbCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6d2FzRXZlbnRTeW50aGVzaXplZEZvckF1
dG9tYXRpb24oTlNFdmVudCAqZXZlbnQpCiAKICNwcmFnbWEgbWFyayBQbGF0Zm9ybS1kZXBlbmRl
bnQgSW1wbGVtZW50YXRpb25zCiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3Jt
U2ltdWxhdGVNb3VzZUludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmIHZpZXdQb3NpdGlvbiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlv
bjo6TW91c2VJbnRlcmFjdGlvbiBpbnRlcmFjdGlvbiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbjo6TW91c2VCdXR0b24gYnV0dG9uLCBXZWJFdmVudDo6TW9kaWZpZXJzIGtleU1vZGlm
aWVycykKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVNb3VzZUlu
dGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgTW91c2VJbnRlcmFjdGlvbiBpbnRlcmFjdGlv
biwgV2ViTW91c2VFdmVudDo6QnV0dG9uIGJ1dHRvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
IGxvY2F0aW9uSW5WaWV3LCBXZWJFdmVudDo6TW9kaWZpZXJzIGtleU1vZGlmaWVycykKIHsKICAg
ICBJbnRSZWN0IHdpbmRvd1JlY3Q7Ci0gICAgcGFnZS5yb290Vmlld1RvV2luZG93KEludFJlY3Qo
dmlld1Bvc2l0aW9uLCBJbnRTaXplKCkpLCB3aW5kb3dSZWN0KTsKLSAgICBJbnRQb2ludCB3aW5k
b3dQb3NpdGlvbiA9IHdpbmRvd1JlY3QubG9jYXRpb24oKTsKKyAgICBwYWdlLnJvb3RWaWV3VG9X
aW5kb3coSW50UmVjdChsb2NhdGlvbkluVmlldywgSW50U2l6ZSgpKSwgd2luZG93UmVjdCk7Cisg
ICAgSW50UG9pbnQgbG9jYXRpb25JbldpbmRvdyA9IHdpbmRvd1JlY3QubG9jYXRpb24oKTsKIAog
ICAgIE5TRXZlbnRNb2RpZmllckZsYWdzIG1vZGlmaWVycyA9IDA7CiAgICAgaWYgKGtleU1vZGlm
aWVycyAmIFdlYkV2ZW50OjpNZXRhS2V5KQpAQCAtMTQ0LDIwICsxNDQsMjAgQEAgdm9pZCBXZWJB
dXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24oV2ViUGFn
ZVByb3h5JiBwYWdlLAogICAgIE5TRXZlbnRUeXBlIGRyYWdFdmVudFR5cGUgPSAoTlNFdmVudFR5
cGUpMDsKICAgICBOU0V2ZW50VHlwZSB1cEV2ZW50VHlwZSA9IChOU0V2ZW50VHlwZSkwOwogICAg
IHN3aXRjaCAoYnV0dG9uKSB7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uOjpNb3VzZUJ1dHRvbjo6Tm9uZToKKyAgICBjYXNlIFdlYk1vdXNlRXZlbnQ6Ok5vQnV0dG9u
OgogICAgICAgICBkb3duRXZlbnRUeXBlID0gdXBFdmVudFR5cGUgPSBkcmFnRXZlbnRUeXBlID0g
TlNFdmVudFR5cGVNb3VzZU1vdmVkOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9uOjpMZWZ0OgorICAgIGNhc2UgV2Vi
TW91c2VFdmVudDo6TGVmdEJ1dHRvbjoKICAgICAgICAgZG93bkV2ZW50VHlwZSA9IE5TRXZlbnRU
eXBlTGVmdE1vdXNlRG93bjsKICAgICAgICAgZHJhZ0V2ZW50VHlwZSA9IE5TRXZlbnRUeXBlTGVm
dE1vdXNlRHJhZ2dlZDsKICAgICAgICAgdXBFdmVudFR5cGUgPSBOU0V2ZW50VHlwZUxlZnRNb3Vz
ZVVwOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9t
YXRpb246Ok1vdXNlQnV0dG9uOjpNaWRkbGU6CisgICAgY2FzZSBXZWJNb3VzZUV2ZW50OjpNaWRk
bGVCdXR0b246CiAgICAgICAgIGRvd25FdmVudFR5cGUgPSBOU0V2ZW50VHlwZU90aGVyTW91c2VE
b3duOwogICAgICAgICBkcmFnRXZlbnRUeXBlID0gTlNFdmVudFR5cGVMZWZ0TW91c2VEcmFnZ2Vk
OwogICAgICAgICB1cEV2ZW50VHlwZSA9IE5TRXZlbnRUeXBlT3RoZXJNb3VzZVVwOwogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNl
QnV0dG9uOjpSaWdodDoKKyAgICBjYXNlIFdlYk1vdXNlRXZlbnQ6OlJpZ2h0QnV0dG9uOgogICAg
ICAgICBkb3duRXZlbnRUeXBlID0gTlNFdmVudFR5cGVSaWdodE1vdXNlRG93bjsKICAgICAgICAg
dXBFdmVudFR5cGUgPSBOU0V2ZW50VHlwZVJpZ2h0TW91c2VVcDsKICAgICAgICAgYnJlYWs7CkBA
IC0xNjgsNTYgKzE2OCw1NiBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNp
bXVsYXRlTW91c2VJbnRlcmFjdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsCiAgICAgTlNJbnRlZ2Vy
IGV2ZW50TnVtYmVyID0gc3ludGhlc2l6ZWRNb3VzZUV2ZW50TWFnaWNFdmVudE51bWJlcjsKIAog
ICAgIHN3aXRjaCAoaW50ZXJhY3Rpb24pIHsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkF1dG9tYXRpb246Ok1vdXNlSW50ZXJhY3Rpb246Ok1vdmU6CisgICAgY2FzZSBNb3VzZUludGVy
YWN0aW9uOjpNb3ZlOgogICAgICAgICBBU1NFUlQoZHJhZ0V2ZW50VHlwZSk7Ci0gICAgICAgIFtl
dmVudHNUb0JlU2VudCBhZGRPYmplY3Q6W05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOmRyYWdF
dmVudFR5cGUgbG9jYXRpb246d2luZG93UG9zaXRpb24gbW9kaWZpZXJGbGFnczptb2RpZmllcnMg
dGltZXN0YW1wOnRpbWVzdGFtcCB3aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmls
IGV2ZW50TnVtYmVyOmV2ZW50TnVtYmVyIGNsaWNrQ291bnQ6MCBwcmVzc3VyZTowLjBmXV07Cisg
ICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmplY3Q6W05TRXZlbnQgbW91c2VFdmVudFdpdGhU
eXBlOmRyYWdFdmVudFR5cGUgbG9jYXRpb246bG9jYXRpb25JbldpbmRvdyBtb2RpZmllckZsYWdz
Om1vZGlmaWVycyB0aW1lc3RhbXA6dGltZXN0YW1wIHdpbmRvd051bWJlcjp3aW5kb3dOdW1iZXIg
Y29udGV4dDpuaWwgZXZlbnROdW1iZXI6ZXZlbnROdW1iZXIgY2xpY2tDb3VudDowIHByZXNzdXJl
OjAuMGZdXTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpB
dXRvbWF0aW9uOjpNb3VzZUludGVyYWN0aW9uOjpEb3duOgorICAgIGNhc2UgTW91c2VJbnRlcmFj
dGlvbjo6RG93bjoKICAgICAgICAgQVNTRVJUKGRvd25FdmVudFR5cGUpOwogCiAgICAgICAgIC8v
IEhhcmQtY29kZSB0aGUgY2xpY2sgY291bnQgdG8gb25lLCBzaW5jZSBjbGllbnRzIGRvbid0IGV4
cGVjdCBzdWNjZXNzaXZlIHNpbXVsYXRlZAogICAgICAgICAvLyBkb3duL3VwIGV2ZW50cyB0byBi
ZSBwb3RlbnRpYWxseSBjb3VudGVkIGFzIGEgZG91YmxlIGNsaWNrIGV2ZW50LgotICAgICAgICBb
ZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltOU0V2ZW50IG1vdXNlRXZlbnRXaXRoVHlwZTpkb3du
RXZlbnRUeXBlIGxvY2F0aW9uOndpbmRvd1Bvc2l0aW9uIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJz
IHRpbWVzdGFtcDp0aW1lc3RhbXAgd2luZG93TnVtYmVyOndpbmRvd051bWJlciBjb250ZXh0Om5p
bCBldmVudE51bWJlcjpldmVudE51bWJlciBjbGlja0NvdW50OjEgcHJlc3N1cmU6V2ViQ29yZTo6
Rm9yY2VBdENsaWNrXV07CisgICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmplY3Q6W05TRXZl
bnQgbW91c2VFdmVudFdpdGhUeXBlOmRvd25FdmVudFR5cGUgbG9jYXRpb246bG9jYXRpb25Jbldp
bmRvdyBtb2RpZmllckZsYWdzOm1vZGlmaWVycyB0aW1lc3RhbXA6dGltZXN0YW1wIHdpbmRvd051
bWJlcjp3aW5kb3dOdW1iZXIgY29udGV4dDpuaWwgZXZlbnROdW1iZXI6ZXZlbnROdW1iZXIgY2xp
Y2tDb3VudDoxIHByZXNzdXJlOldlYkNvcmU6OkZvcmNlQXRDbGlja11dOwogICAgICAgICBicmVh
azsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlSW50ZXJh
Y3Rpb246OlVwOgorICAgIGNhc2UgTW91c2VJbnRlcmFjdGlvbjo6VXA6CiAgICAgICAgIEFTU0VS
VCh1cEV2ZW50VHlwZSk7CiAKICAgICAgICAgLy8gSGFyZC1jb2RlIHRoZSBjbGljayBjb3VudCB0
byBvbmUsIHNpbmNlIGNsaWVudHMgZG9uJ3QgZXhwZWN0IHN1Y2Nlc3NpdmUgc2ltdWxhdGVkCiAg
ICAgICAgIC8vIGRvd24vdXAgZXZlbnRzIHRvIGJlIHBvdGVudGlhbGx5IGNvdW50ZWQgYXMgYSBk
b3VibGUgY2xpY2sgZXZlbnQuCi0gICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmplY3Q6W05T
RXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOnVwRXZlbnRUeXBlIGxvY2F0aW9uOndpbmRvd1Bvc2l0
aW9uIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJzIHRpbWVzdGFtcDp0aW1lc3RhbXAgd2luZG93TnVt
YmVyOndpbmRvd051bWJlciBjb250ZXh0Om5pbCBldmVudE51bWJlcjpldmVudE51bWJlciBjbGlj
a0NvdW50OjEgcHJlc3N1cmU6MC4wZl1dOworICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2Jq
ZWN0OltOU0V2ZW50IG1vdXNlRXZlbnRXaXRoVHlwZTp1cEV2ZW50VHlwZSBsb2NhdGlvbjpsb2Nh
dGlvbkluV2luZG93IG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJzIHRpbWVzdGFtcDp0aW1lc3RhbXAg
d2luZG93TnVtYmVyOndpbmRvd051bWJlciBjb250ZXh0Om5pbCBldmVudE51bWJlcjpldmVudE51
bWJlciBjbGlja0NvdW50OjEgcHJlc3N1cmU6MC4wZl1dOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlSW50ZXJhY3Rpb246OlNp
bmdsZUNsaWNrOgorICAgIGNhc2UgTW91c2VJbnRlcmFjdGlvbjo6U2luZ2xlQ2xpY2s6CiAgICAg
ICAgIEFTU0VSVCh1cEV2ZW50VHlwZSk7CiAgICAgICAgIEFTU0VSVChkb3duRXZlbnRUeXBlKTsK
IAogICAgICAgICAvLyBTZW5kIHNlcGFyYXRlIGRvd24gYW5kIHVwIGV2ZW50cy4gV2ViQ29yZSB3
aWxsIHNlZSB0aGlzIGFzIGEgc2luZ2xlLWNsaWNrIGV2ZW50LgotICAgICAgICBbZXZlbnRzVG9C
ZVNlbnQgYWRkT2JqZWN0OltOU0V2ZW50IG1vdXNlRXZlbnRXaXRoVHlwZTpkb3duRXZlbnRUeXBl
IGxvY2F0aW9uOndpbmRvd1Bvc2l0aW9uIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJzIHRpbWVzdGFt
cDp0aW1lc3RhbXAgd2luZG93TnVtYmVyOndpbmRvd051bWJlciBjb250ZXh0Om5pbCBldmVudE51
bWJlcjpldmVudE51bWJlciBjbGlja0NvdW50OjEgcHJlc3N1cmU6V2ViQ29yZTo6Rm9yY2VBdENs
aWNrXV07Ci0gICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmplY3Q6W05TRXZlbnQgbW91c2VF
dmVudFdpdGhUeXBlOnVwRXZlbnRUeXBlIGxvY2F0aW9uOndpbmRvd1Bvc2l0aW9uIG1vZGlmaWVy
RmxhZ3M6bW9kaWZpZXJzIHRpbWVzdGFtcDp0aW1lc3RhbXAgd2luZG93TnVtYmVyOndpbmRvd051
bWJlciBjb250ZXh0Om5pbCBldmVudE51bWJlcjpldmVudE51bWJlciBjbGlja0NvdW50OjEgcHJl
c3N1cmU6MC4wZl1dOworICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltOU0V2ZW50
IG1vdXNlRXZlbnRXaXRoVHlwZTpkb3duRXZlbnRUeXBlIGxvY2F0aW9uOmxvY2F0aW9uSW5XaW5k
b3cgbW9kaWZpZXJGbGFnczptb2RpZmllcnMgdGltZXN0YW1wOnRpbWVzdGFtcCB3aW5kb3dOdW1i
ZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmlsIGV2ZW50TnVtYmVyOmV2ZW50TnVtYmVyIGNsaWNr
Q291bnQ6MSBwcmVzc3VyZTpXZWJDb3JlOjpGb3JjZUF0Q2xpY2tdXTsKKyAgICAgICAgW2V2ZW50
c1RvQmVTZW50IGFkZE9iamVjdDpbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6dXBFdmVudFR5
cGUgbG9jYXRpb246bG9jYXRpb25JbldpbmRvdyBtb2RpZmllckZsYWdzOm1vZGlmaWVycyB0aW1l
c3RhbXA6dGltZXN0YW1wIHdpbmRvd051bWJlcjp3aW5kb3dOdW1iZXIgY29udGV4dDpuaWwgZXZl
bnROdW1iZXI6ZXZlbnROdW1iZXIgY2xpY2tDb3VudDoxIHByZXNzdXJlOjAuMGZdXTsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3Vz
ZUludGVyYWN0aW9uOjpEb3VibGVDbGljazoKKyAgICBjYXNlIE1vdXNlSW50ZXJhY3Rpb246OkRv
dWJsZUNsaWNrOgogICAgICAgICBBU1NFUlQodXBFdmVudFR5cGUpOwogICAgICAgICBBU1NFUlQo
ZG93bkV2ZW50VHlwZSk7CiAKICAgICAgICAgLy8gU2VuZCBtdWx0aXBsZSBkb3duIGFuZCB1cCBl
dmVudHMgd2l0aCBwcm9wZXIgY2xpY2sgY291bnQuCiAgICAgICAgIC8vIFdlYkNvcmUgd2lsbCBz
ZWUgdGhpcyBhcyBhIHNpbmdsZS1jbGljayBldmVudCB0aGVuIGRvdWJsZS1jbGljayBldmVudC4K
LSAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbTlNFdmVudCBtb3VzZUV2ZW50V2l0
aFR5cGU6ZG93bkV2ZW50VHlwZSBsb2NhdGlvbjp3aW5kb3dQb3NpdGlvbiBtb2RpZmllckZsYWdz
Om1vZGlmaWVycyB0aW1lc3RhbXA6dGltZXN0YW1wIHdpbmRvd051bWJlcjp3aW5kb3dOdW1iZXIg
Y29udGV4dDpuaWwgZXZlbnROdW1iZXI6ZXZlbnROdW1iZXIgY2xpY2tDb3VudDoxIHByZXNzdXJl
OldlYkNvcmU6OkZvcmNlQXRDbGlja11dOwotICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2Jq
ZWN0OltOU0V2ZW50IG1vdXNlRXZlbnRXaXRoVHlwZTp1cEV2ZW50VHlwZSBsb2NhdGlvbjp3aW5k
b3dQb3NpdGlvbiBtb2RpZmllckZsYWdzOm1vZGlmaWVycyB0aW1lc3RhbXA6dGltZXN0YW1wIHdp
bmRvd051bWJlcjp3aW5kb3dOdW1iZXIgY29udGV4dDpuaWwgZXZlbnROdW1iZXI6ZXZlbnROdW1i
ZXIgY2xpY2tDb3VudDoxIHByZXNzdXJlOjAuMGZdXTsKLSAgICAgICAgW2V2ZW50c1RvQmVTZW50
IGFkZE9iamVjdDpbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6ZG93bkV2ZW50VHlwZSBsb2Nh
dGlvbjp3aW5kb3dQb3NpdGlvbiBtb2RpZmllckZsYWdzOm1vZGlmaWVycyB0aW1lc3RhbXA6dGlt
ZXN0YW1wIHdpbmRvd051bWJlcjp3aW5kb3dOdW1iZXIgY29udGV4dDpuaWwgZXZlbnROdW1iZXI6
ZXZlbnROdW1iZXIgY2xpY2tDb3VudDoyIHByZXNzdXJlOldlYkNvcmU6OkZvcmNlQXRDbGlja11d
OwotICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltOU0V2ZW50IG1vdXNlRXZlbnRX
aXRoVHlwZTp1cEV2ZW50VHlwZSBsb2NhdGlvbjp3aW5kb3dQb3NpdGlvbiBtb2RpZmllckZsYWdz
Om1vZGlmaWVycyB0aW1lc3RhbXA6dGltZXN0YW1wIHdpbmRvd051bWJlcjp3aW5kb3dOdW1iZXIg
Y29udGV4dDpuaWwgZXZlbnROdW1iZXI6ZXZlbnROdW1iZXIgY2xpY2tDb3VudDoyIHByZXNzdXJl
OjAuMGZdXTsKKyAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbTlNFdmVudCBtb3Vz
ZUV2ZW50V2l0aFR5cGU6ZG93bkV2ZW50VHlwZSBsb2NhdGlvbjpsb2NhdGlvbkluV2luZG93IG1v
ZGlmaWVyRmxhZ3M6bW9kaWZpZXJzIHRpbWVzdGFtcDp0aW1lc3RhbXAgd2luZG93TnVtYmVyOndp
bmRvd051bWJlciBjb250ZXh0Om5pbCBldmVudE51bWJlcjpldmVudE51bWJlciBjbGlja0NvdW50
OjEgcHJlc3N1cmU6V2ViQ29yZTo6Rm9yY2VBdENsaWNrXV07CisgICAgICAgIFtldmVudHNUb0Jl
U2VudCBhZGRPYmplY3Q6W05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOnVwRXZlbnRUeXBlIGxv
Y2F0aW9uOmxvY2F0aW9uSW5XaW5kb3cgbW9kaWZpZXJGbGFnczptb2RpZmllcnMgdGltZXN0YW1w
OnRpbWVzdGFtcCB3aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmlsIGV2ZW50TnVt
YmVyOmV2ZW50TnVtYmVyIGNsaWNrQ291bnQ6MSBwcmVzc3VyZTowLjBmXV07CisgICAgICAgIFtl
dmVudHNUb0JlU2VudCBhZGRPYmplY3Q6W05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOmRvd25F
dmVudFR5cGUgbG9jYXRpb246bG9jYXRpb25JbldpbmRvdyBtb2RpZmllckZsYWdzOm1vZGlmaWVy
cyB0aW1lc3RhbXA6dGltZXN0YW1wIHdpbmRvd051bWJlcjp3aW5kb3dOdW1iZXIgY29udGV4dDpu
aWwgZXZlbnROdW1iZXI6ZXZlbnROdW1iZXIgY2xpY2tDb3VudDoyIHByZXNzdXJlOldlYkNvcmU6
OkZvcmNlQXRDbGlja11dOworICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltOU0V2
ZW50IG1vdXNlRXZlbnRXaXRoVHlwZTp1cEV2ZW50VHlwZSBsb2NhdGlvbjpsb2NhdGlvbkluV2lu
ZG93IG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJzIHRpbWVzdGFtcDp0aW1lc3RhbXAgd2luZG93TnVt
YmVyOndpbmRvd051bWJlciBjb250ZXh0Om5pbCBldmVudE51bWJlcjpldmVudE51bWJlciBjbGlj
a0NvdW50OjIgcHJlc3N1cmU6MC4wZl1dOwogICAgIH0KIAogICAgIHNlbmRTeW50aGVzaXplZEV2
ZW50c1RvUGFnZShwYWdlLCBldmVudHNUb0JlU2VudC5nZXQoKSk7CiB9CiAKLXN0YXRpYyBib29s
IGtleUhhc1N0aWNreU1vZGlmaWVyKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZp
cnR1YWxLZXkga2V5KQorc3RhdGljIGJvb2wgdmlydHVhbEtleUhhc1N0aWNreU1vZGlmaWVyKFZp
cnR1YWxLZXkga2V5KQogewogICAgIC8vIFJldHVybnMgd2hldGhlciB0aGUga2V5J3MgbW9kaWZp
ZXIgZmxhZ3Mgc2hvdWxkIGFmZmVjdCBvdGhlciBldmVudHMgd2hpbGUgcHJlc3NlZCBkb3duLgog
ICAgIHN3aXRjaCAoa2V5KSB7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uOjpWaXJ0dWFsS2V5OjpTaGlmdDoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1
dG9tYXRpb246OlZpcnR1YWxLZXk6OkNvbnRyb2w6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpBbHRlcm5hdGU6Ci0gICAgY2FzZSBJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpNZXRhOgotICAgIGNhc2UgSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6Q29tbWFuZDoKKyAgICBj
YXNlIFZpcnR1YWxLZXk6OlNoaWZ0OgorICAgIGNhc2UgVmlydHVhbEtleTo6Q29udHJvbDoKKyAg
ICBjYXNlIFZpcnR1YWxLZXk6OkFsdGVybmF0ZToKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok1ldGE6
CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpDb21tYW5kOgogICAgICAgICByZXR1cm4gdHJ1ZTsKIAog
ICAgIGRlZmF1bHQ6CkBAIC0yMjUsMjAxICsyMjUsMjAxIEBAIHN0YXRpYyBib29sIGtleUhhc1N0
aWNreU1vZGlmaWVyKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXkg
a2V5CiAgICAgfQogfQogCi1zdGF0aWMgaW50IGtleUNvZGVGb3JWaXJ0dWFsS2V5KEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXkga2V5KQorc3RhdGljIGludCBrZXlD
b2RlRm9yVmlydHVhbEtleShWaXJ0dWFsS2V5IGtleSkKIHsKICAgICAvLyBUaGUgbGlrZWx5IGtl
eUNvZGUgZm9yIHRoZSB2aXJ0dWFsIGtleSBhcyBkZWZpbmVkIGluIDxISVRvb2xib3gvRXZlbnRz
Lmg+LgogICAgIHN3aXRjaCAoa2V5KSB7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpB
dXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpTaGlmdDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OlNoaWZ0
OgogICAgICAgICByZXR1cm4ga1ZLX1NoaWZ0OwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6Q29udHJvbDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6
OkNvbnRyb2w6CiAgICAgICAgIHJldHVybiBrVktfQ29udHJvbDsKLSAgICBjYXNlIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkFsdGVybmF0ZToKKyAgICBjYXNl
IFZpcnR1YWxLZXk6OkFsdGVybmF0ZToKICAgICAgICAgcmV0dXJuIGtWS19PcHRpb247Ci0gICAg
Y2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpNZXRhOgor
ICAgIGNhc2UgVmlydHVhbEtleTo6TWV0YToKICAgICAgICAgLy8gVGhlICdtZXRhJyBrZXkgZG9l
cyBub3QgZXhpc3Qgb24gQXBwbGUga2V5Ym9hcmRzIGFuZCBpcyB1c3VhbGx5CiAgICAgICAgIC8v
IG1hcHBlZCB0byB0aGUgQ29tbWFuZCBrZXkgd2hlbiB1c2luZyB0aGlyZC1wYXJ0eSBrZXlib2Fy
ZHMuCi0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5
OjpDb21tYW5kOgorICAgIGNhc2UgVmlydHVhbEtleTo6Q29tbWFuZDoKICAgICAgICAgcmV0dXJu
IGtWS19Db21tYW5kOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6
VmlydHVhbEtleTo6SGVscDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkhlbHA6CiAgICAgICAgIHJl
dHVybiBrVktfSGVscDsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246
OlZpcnR1YWxLZXk6OkJhY2tzcGFjZToKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkJhY2tzcGFjZToK
ICAgICAgICAgcmV0dXJuIGtWS19EZWxldGU7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29s
OjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpUYWI6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpUYWI6
CiAgICAgICAgIHJldHVybiBrVktfVGFiOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbjo6VmlydHVhbEtleTo6Q2xlYXI6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpDbGVh
cjoKICAgICAgICAgcmV0dXJuIGtWS19BTlNJX0tleXBhZENsZWFyOwotICAgIGNhc2UgSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RW50ZXI6CisgICAgY2FzZSBW
aXJ0dWFsS2V5OjpFbnRlcjoKICAgICAgICAgcmV0dXJuIGtWS19BTlNJX0tleXBhZEVudGVyOwot
ICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6UGF1
c2U6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpQYXVzZToKICAgICAgICAgLy8gVGhlICdwYXVzZScg
a2V5IGRvZXMgbm90IGV4aXN0IG9uIEFwcGxlIGtleWJvYXJkcyBhbmQgaGFzIG5vIGtleUNvZGUu
CiAgICAgICAgIC8vIFRoZSBzZW1hbnRpY3MgYXJlIHVuY2xlYXIgc28ganVzdCBhYm9ydCBhbmQg
ZG8gbm90aGluZy4KICAgICAgICAgcmV0dXJuIDA7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpDYW5jZWw6CisgICAgY2FzZSBWaXJ0dWFsS2V5
OjpDYW5jZWw6CiAgICAgICAgIC8vIFRoZSAnY2FuY2VsJyBrZXkgZG9lcyBub3QgZXhpc3Qgb24g
QXBwbGUga2V5Ym9hcmRzIGFuZCBoYXMgbm8ga2V5Q29kZS4KICAgICAgICAgLy8gQWNjb3JkaW5n
IHRvIHRoZSBpbnRlcm5ldCBpdHMgZnVuY3Rpb25hbGl0eSBpcyBzaW1pbGFyIHRvICdFc2NhcGUn
LgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6
RXNjYXBlOgorICAgIGNhc2UgVmlydHVhbEtleTo6RXNjYXBlOgogICAgICAgICByZXR1cm4ga1ZL
X0VzY2FwZTsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1
YWxLZXk6OlBhZ2VVcDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OlBhZ2VVcDoKICAgICAgICAgcmV0
dXJuIGtWS19QYWdlVXA7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
OjpWaXJ0dWFsS2V5OjpQYWdlRG93bjoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OlBhZ2VEb3duOgog
ICAgICAgICByZXR1cm4ga1ZLX1BhZ2VEb3duOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RW5kOgorICAgIGNhc2UgVmlydHVhbEtleTo6RW5k
OgogICAgICAgICByZXR1cm4ga1ZLX0VuZDsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkhvbWU6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpIb21l
OgogICAgICAgICByZXR1cm4ga1ZLX0hvbWU7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29s
OjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpMZWZ0QXJyb3c6CisgICAgY2FzZSBWaXJ0dWFsS2V5
OjpMZWZ0QXJyb3c6CiAgICAgICAgIHJldHVybiBrVktfTGVmdEFycm93OwotICAgIGNhc2UgSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6VXBBcnJvdzoKKyAgICBj
YXNlIFZpcnR1YWxLZXk6OlVwQXJyb3c6CiAgICAgICAgIHJldHVybiBrVktfVXBBcnJvdzsKLSAg
ICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OlJpZ2h0
QXJyb3c6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpSaWdodEFycm93OgogICAgICAgICByZXR1cm4g
a1ZLX1JpZ2h0QXJyb3c7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
OjpWaXJ0dWFsS2V5OjpEb3duQXJyb3c6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpEb3duQXJyb3c6
CiAgICAgICAgIHJldHVybiBrVktfRG93bkFycm93OwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6SW5zZXJ0OgorICAgIGNhc2UgVmlydHVhbEtl
eTo6SW5zZXJ0OgogICAgICAgICAvLyBUaGUgJ2luc2VydCcga2V5IGRvZXMgbm90IGV4aXN0IG9u
IEFwcGxlIGtleWJvYXJkcyBhbmQgaGFzIG5vIGtleUNvZGUuCiAgICAgICAgIC8vIFRoZSBzZW1h
bnRpY3MgYXJlIHVuY2xlYXIgc28ganVzdCBhYm9ydCBhbmQgZG8gbm90aGluZy4KICAgICAgICAg
cmV0dXJuIDA7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0
dWFsS2V5OjpEZWxldGU6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpEZWxldGU6CiAgICAgICAgIHJl
dHVybiBrVktfRm9yd2FyZERlbGV0ZTsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1
dG9tYXRpb246OlZpcnR1YWxLZXk6OlNwYWNlOgorICAgIGNhc2UgVmlydHVhbEtleTo6U3BhY2U6
CiAgICAgICAgIHJldHVybiBrVktfU3BhY2U7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29s
OjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpTZW1pY29sb246CisgICAgY2FzZSBWaXJ0dWFsS2V5
OjpTZW1pY29sb246CiAgICAgICAgIHJldHVybiBrVktfQU5TSV9TZW1pY29sb247Ci0gICAgY2Fz
ZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpFcXVhbHM6Cisg
ICAgY2FzZSBWaXJ0dWFsS2V5OjpFcXVhbHM6CiAgICAgICAgIHJldHVybiBrVktfQU5TSV9FcXVh
bDsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6
OlJldHVybjoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OlJldHVybjoKICAgICAgICAgcmV0dXJuIGtW
S19SZXR1cm47Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0
dWFsS2V5OjpOdW1iZXJQYWQwOgorICAgIGNhc2UgVmlydHVhbEtleTo6TnVtYmVyUGFkMDoKICAg
ICAgICAgcmV0dXJuIGtWS19BTlNJX0tleXBhZDA7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWQxOgorICAgIGNhc2UgVmlydHVh
bEtleTo6TnVtYmVyUGFkMToKICAgICAgICAgcmV0dXJuIGtWS19BTlNJX0tleXBhZDE7Ci0gICAg
Y2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQ
YWQyOgorICAgIGNhc2UgVmlydHVhbEtleTo6TnVtYmVyUGFkMjoKICAgICAgICAgcmV0dXJuIGtW
S19BTlNJX0tleXBhZDI7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
OjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWQzOgorICAgIGNhc2UgVmlydHVhbEtleTo6TnVtYmVyUGFk
MzoKICAgICAgICAgcmV0dXJuIGtWS19BTlNJX0tleXBhZDM7Ci0gICAgY2FzZSBJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWQ0OgorICAgIGNhc2Ug
VmlydHVhbEtleTo6TnVtYmVyUGFkNDoKICAgICAgICAgcmV0dXJuIGtWS19BTlNJX0tleXBhZDQ7
Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpO
dW1iZXJQYWQ1OgorICAgIGNhc2UgVmlydHVhbEtleTo6TnVtYmVyUGFkNToKICAgICAgICAgcmV0
dXJuIGtWS19BTlNJX0tleXBhZDU7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRv
bWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWQ2OgorICAgIGNhc2UgVmlydHVhbEtleTo6TnVt
YmVyUGFkNjoKICAgICAgICAgcmV0dXJuIGtWS19BTlNJX0tleXBhZDY7Ci0gICAgY2FzZSBJbnNw
ZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWQ3OgorICAg
IGNhc2UgVmlydHVhbEtleTo6TnVtYmVyUGFkNzoKICAgICAgICAgcmV0dXJuIGtWS19BTlNJX0tl
eXBhZDc7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFs
S2V5OjpOdW1iZXJQYWQ4OgorICAgIGNhc2UgVmlydHVhbEtleTo6TnVtYmVyUGFkODoKICAgICAg
ICAgcmV0dXJuIGtWS19BTlNJX0tleXBhZDg7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29s
OjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWQ5OgorICAgIGNhc2UgVmlydHVhbEtl
eTo6TnVtYmVyUGFkOToKICAgICAgICAgcmV0dXJuIGtWS19BTlNJX0tleXBhZDk7Ci0gICAgY2Fz
ZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWRN
dWx0aXBseToKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZE11bHRpcGx5OgogICAgICAg
ICByZXR1cm4ga1ZLX0FOU0lfS2V5cGFkTXVsdGlwbHk7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlBy
b3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWRBZGQ6CisgICAgY2FzZSBW
aXJ0dWFsS2V5OjpOdW1iZXJQYWRBZGQ6CiAgICAgICAgIHJldHVybiBrVktfQU5TSV9LZXlwYWRQ
bHVzOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtl
eTo6TnVtYmVyUGFkU3VidHJhY3Q6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWRTdWJ0
cmFjdDoKICAgICAgICAgcmV0dXJuIGtWS19BTlNJX0tleXBhZE1pbnVzOwotICAgIGNhc2UgSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkU2VwYXJh
dG9yOgorICAgIGNhc2UgVmlydHVhbEtleTo6TnVtYmVyUGFkU2VwYXJhdG9yOgogICAgICAgICAv
LyBUaGUgJ1NlcGFyYXRvcicga2V5IGlzIG9ubHkgcHJlc2VudCBvbiBhIGZldyBpbnRlcm5hdGlv
bmFsIGtleWJvYXJkcy4KICAgICAgICAgLy8gSXQgaXMgdXN1YWxseSBtYXBwZWQgdG8gdGhlIHNh
bWUgY2hhcmFjdGVyIGFzIERlY2ltYWwgKCcuJyBvciAnLCcpLgogICAgICAgICBGQUxMVEhST1VH
SDsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6
Ok51bWJlclBhZERlY2ltYWw6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWREZWNpbWFs
OgogICAgICAgICByZXR1cm4ga1ZLX0FOU0lfS2V5cGFkRGVjaW1hbDsKICAgICAgICAgLy8gRklY
TUU6IHRoaXMgbWlnaHQgYmUgbG9jYWxlLWRlcGVuZGVudC4gU2VlIHRoZSBhYm92ZSBjb21tZW50
LgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6
TnVtYmVyUGFkRGl2aWRlOgorICAgIGNhc2UgVmlydHVhbEtleTo6TnVtYmVyUGFkRGl2aWRlOgog
ICAgICAgICByZXR1cm4ga1ZLX0FOU0lfS2V5cGFkRGl2aWRlOwotICAgIGNhc2UgSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RnVuY3Rpb24xOgorICAgIGNhc2Ug
VmlydHVhbEtleTo6RnVuY3Rpb24xOgogICAgICAgICByZXR1cm4ga1ZLX0YxOwotICAgIGNhc2Ug
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RnVuY3Rpb24yOgor
ICAgIGNhc2UgVmlydHVhbEtleTo6RnVuY3Rpb24yOgogICAgICAgICByZXR1cm4ga1ZLX0YyOwot
ICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RnVu
Y3Rpb24zOgorICAgIGNhc2UgVmlydHVhbEtleTo6RnVuY3Rpb24zOgogICAgICAgICByZXR1cm4g
a1ZLX0YzOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVh
bEtleTo6RnVuY3Rpb240OgorICAgIGNhc2UgVmlydHVhbEtleTo6RnVuY3Rpb240OgogICAgICAg
ICByZXR1cm4ga1ZLX0Y0OwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlv
bjo6VmlydHVhbEtleTo6RnVuY3Rpb241OgorICAgIGNhc2UgVmlydHVhbEtleTo6RnVuY3Rpb241
OgogICAgICAgICByZXR1cm4ga1ZLX0Y1OwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RnVuY3Rpb242OgorICAgIGNhc2UgVmlydHVhbEtleTo6
RnVuY3Rpb242OgogICAgICAgICByZXR1cm4ga1ZLX0Y2OwotICAgIGNhc2UgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RnVuY3Rpb243OgorICAgIGNhc2UgVmly
dHVhbEtleTo6RnVuY3Rpb243OgogICAgICAgICByZXR1cm4ga1ZLX0Y3OwotICAgIGNhc2UgSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RnVuY3Rpb244OgorICAg
IGNhc2UgVmlydHVhbEtleTo6RnVuY3Rpb244OgogICAgICAgICByZXR1cm4ga1ZLX0Y4OwotICAg
IGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RnVuY3Rp
b245OgorICAgIGNhc2UgVmlydHVhbEtleTo6RnVuY3Rpb245OgogICAgICAgICByZXR1cm4ga1ZL
X0Y5OwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtl
eTo6RnVuY3Rpb24xMDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkZ1bmN0aW9uMTA6CiAgICAgICAg
IHJldHVybiBrVktfRjEwOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlv
bjo6VmlydHVhbEtleTo6RnVuY3Rpb24xMToKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkZ1bmN0aW9u
MTE6CiAgICAgICAgIHJldHVybiBrVktfRjExOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RnVuY3Rpb24xMjoKKyAgICBjYXNlIFZpcnR1YWxL
ZXk6OkZ1bmN0aW9uMTI6CiAgICAgICAgIHJldHVybiBrVktfRjEyOwogICAgIH0KIH0KIAotc3Rh
dGljIE5TRXZlbnRNb2RpZmllckZsYWdzIGV2ZW50TW9kaWZpZXJGbGFnc0ZvclZpcnR1YWxLZXko
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleSBrZXkpCitzdGF0aWMg
TlNFdmVudE1vZGlmaWVyRmxhZ3MgZXZlbnRNb2RpZmllckZsYWdzRm9yVmlydHVhbEtleShWaXJ0
dWFsS2V5IGtleSkKIHsKICAgICAvLyBDb21wdXRlcyB0aGUgbW9kaWZpZXJzIGNoYW5nZWQgYnkg
dGhlIHZpcnR1YWwga2V5IHdoZW4gaXQgaXMgcHJlc3NlZCBvciByZWxlYXNlZC4KICAgICAvLyBU
aGUgbWFwcGluZyBmcm9tIGtleXMgdG8gbW9kaWZpZXJzIGlzIHNwZWNpZmllZCBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBmb3IgTlNFdmVudC4KICAgICBzd2l0Y2ggKGtleSkgewotICAgIGNhc2UgSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6U2hpZnQ6CisgICAgY2Fz
ZSBWaXJ0dWFsS2V5OjpTaGlmdDoKICAgICAgICAgcmV0dXJuIE5TRXZlbnRNb2RpZmllckZsYWdT
aGlmdDsKIAotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVh
bEtleTo6Q29udHJvbDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkNvbnRyb2w6CiAgICAgICAgIHJl
dHVybiBOU0V2ZW50TW9kaWZpZXJGbGFnQ29udHJvbDsKIAotICAgIGNhc2UgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6QWx0ZXJuYXRlOgorICAgIGNhc2UgVmly
dHVhbEtleTo6QWx0ZXJuYXRlOgogICAgICAgICByZXR1cm4gTlNFdmVudE1vZGlmaWVyRmxhZ09w
dGlvbjsKIAotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVh
bEtleTo6TWV0YToKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok1ldGE6CiAgICAgICAgIC8vIFRoZSAn
bWV0YScga2V5IGRvZXMgbm90IGV4aXN0IG9uIEFwcGxlIGtleWJvYXJkcyBhbmQgaXMgdXN1YWxs
eQogICAgICAgICAvLyBtYXBwZWQgdG8gdGhlIENvbW1hbmQga2V5IHdoZW4gdXNpbmcgdGhpcmQt
cGFydHkga2V5Ym9hcmRzLgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlv
bjo6VmlydHVhbEtleTo6Q29tbWFuZDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkNvbW1hbmQ6CiAg
ICAgICAgIHJldHVybiBOU0V2ZW50TW9kaWZpZXJGbGFnQ29tbWFuZDsKIAotICAgIGNhc2UgSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6SGVscDoKKyAgICBjYXNl
IFZpcnR1YWxLZXk6OkhlbHA6CiAgICAgICAgIHJldHVybiBOU0V2ZW50TW9kaWZpZXJGbGFnSGVs
cCB8IE5TRXZlbnRNb2RpZmllckZsYWdGdW5jdGlvbjsKIAotICAgIGNhc2UgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6UGFnZVVwOgotICAgIGNhc2UgSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6UGFnZURvd246Ci0gICAgY2Fz
ZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpFbmQ6Ci0gICAg
Y2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpIb21lOgor
ICAgIGNhc2UgVmlydHVhbEtleTo6UGFnZVVwOgorICAgIGNhc2UgVmlydHVhbEtleTo6UGFnZURv
d246CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpFbmQ6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpIb21l
OgogICAgICAgICByZXR1cm4gTlNFdmVudE1vZGlmaWVyRmxhZ0Z1bmN0aW9uOwogCi0gICAgY2Fz
ZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpMZWZ0QXJyb3c6
Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpV
cEFycm93OgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVh
bEtleTo6UmlnaHRBcnJvdzoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRp
b246OlZpcnR1YWxLZXk6OkRvd25BcnJvdzoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkxlZnRBcnJv
dzoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OlVwQXJyb3c6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpS
aWdodEFycm93OgorICAgIGNhc2UgVmlydHVhbEtleTo6RG93bkFycm93OgogICAgICAgICByZXR1
cm4gTlNFdmVudE1vZGlmaWVyRmxhZ051bWVyaWNQYWQgfCBOU0V2ZW50TW9kaWZpZXJGbGFnRnVu
Y3Rpb247CiAKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1
YWxLZXk6OkRlbGV0ZToKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkRlbGV0ZToKICAgICAgICAgcmV0
dXJuIE5TRXZlbnRNb2RpZmllckZsYWdGdW5jdGlvbjsKIAotICAgIGNhc2UgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6Q2xlYXI6Ci0gICAgY2FzZSBJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWQwOgotICAgIGNh
c2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFk
MToKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6
Ok51bWJlclBhZDI6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpW
aXJ0dWFsS2V5OjpOdW1iZXJQYWQzOgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkNDoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZDU6Ci0gICAgY2FzZSBJbnNw
ZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWQ2OgotICAg
IGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVy
UGFkNzoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxL
ZXk6Ok51bWJlclBhZDg6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
OjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWQ5OgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkTXVsdGlwbHk6Ci0gICAgY2FzZSBJbnNw
ZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWRBZGQ6Ci0g
ICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1i
ZXJQYWRTdWJ0cmFjdDoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246
OlZpcnR1YWxLZXk6Ok51bWJlclBhZFNlcGFyYXRvcjoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZERlY2ltYWw6Ci0gICAgY2Fz
ZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWRE
aXZpZGU6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpDbGVhcjoKKyAgICBjYXNlIFZpcnR1YWxLZXk6
Ok51bWJlclBhZDA6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWQxOgorICAgIGNhc2Ug
VmlydHVhbEtleTo6TnVtYmVyUGFkMjoKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZDM6
CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWQ0OgorICAgIGNhc2UgVmlydHVhbEtleTo6
TnVtYmVyUGFkNToKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZDY6CisgICAgY2FzZSBW
aXJ0dWFsS2V5OjpOdW1iZXJQYWQ3OgorICAgIGNhc2UgVmlydHVhbEtleTo6TnVtYmVyUGFkODoK
KyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZDk6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpO
dW1iZXJQYWRNdWx0aXBseToKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZEFkZDoKKyAg
ICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZFN1YnRyYWN0OgorICAgIGNhc2UgVmlydHVhbEtl
eTo6TnVtYmVyUGFkU2VwYXJhdG9yOgorICAgIGNhc2UgVmlydHVhbEtleTo6TnVtYmVyUGFkRGVj
aW1hbDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZERpdmlkZToKICAgICAgICAgcmV0
dXJuIE5TRXZlbnRNb2RpZmllckZsYWdOdW1lcmljUGFkOwogCi0gICAgY2FzZSBJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjE6Ci0gICAgY2FzZSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjI6Ci0g
ICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5j
dGlvbjM6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFs
S2V5OjpGdW5jdGlvbjQ6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
OjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjU6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpB
dXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjY6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlBy
b3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjc6Ci0gICAgY2FzZSBJbnNw
ZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjg6Ci0gICAg
Y2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5jdGlv
bjk6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5
OjpGdW5jdGlvbjEwOgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6
VmlydHVhbEtleTo6RnVuY3Rpb24xMToKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1
dG9tYXRpb246OlZpcnR1YWxLZXk6OkZ1bmN0aW9uMTI6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpG
dW5jdGlvbjE6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpGdW5jdGlvbjI6CisgICAgY2FzZSBWaXJ0
dWFsS2V5OjpGdW5jdGlvbjM6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpGdW5jdGlvbjQ6CisgICAg
Y2FzZSBWaXJ0dWFsS2V5OjpGdW5jdGlvbjU6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpGdW5jdGlv
bjY6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpGdW5jdGlvbjc6CisgICAgY2FzZSBWaXJ0dWFsS2V5
OjpGdW5jdGlvbjg6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpGdW5jdGlvbjk6CisgICAgY2FzZSBW
aXJ0dWFsS2V5OjpGdW5jdGlvbjEwOgorICAgIGNhc2UgVmlydHVhbEtleTo6RnVuY3Rpb24xMToK
KyAgICBjYXNlIFZpcnR1YWxLZXk6OkZ1bmN0aW9uMTI6CiAgICAgICAgIHJldHVybiBOU0V2ZW50
TW9kaWZpZXJGbGFnRnVuY3Rpb247CiAKICAgICBkZWZhdWx0OgpAQCAtNDI3LDE5ICs0MjcsMzQg
QEAgc3RhdGljIE5TRXZlbnRNb2RpZmllckZsYWdzIGV2ZW50TW9kaWZpZXJGbGFnc0ZvclZpcnR1
YWxLZXkoSW5zcGVjdG9yOjpQcm90b2NvbDoKICAgICB9CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlv
blNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVLZXlTdHJva2UoV2ViUGFnZVByb3h5JiBwYWdlLCBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpLZXlib2FyZEludGVyYWN0aW9uVHlwZSBp
bnRlcmFjdGlvbiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleSBr
ZXkpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlS2V5Ym9hcmRJ
bnRlcmFjdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIEtleWJvYXJkSW50ZXJhY3Rpb24gaW50ZXJh
Y3Rpb24sIHN0ZDo6b3B0aW9uYWw8VmlydHVhbEtleT4gdmlydHVhbEtleSwgc3RkOjpvcHRpb25h
bDxDaGFyS2V5PiBjaGFyS2V5KQogewogICAgIC8vIEZJWE1FOiB0aGlzIGZ1bmN0aW9uIGFuZCB0
aGUgQXV0b21hdGlvbiBwcm90b2NvbCBlbnVtIHNob3VsZCBwcm9iYWJseSBhZG9wdCBrZXkgbmFt
ZXMKICAgICAvLyBmcm9tIFczQyBVSUV2ZW50cyBzdGFuZGFyZC4gRm9yIG1vcmUgZGV0YWlsczog
aHR0cHM6Ly93M2MuZ2l0aHViLmlvL3VpZXZlbnRzLWNvZGUvCiAKLSAgICBib29sIGlzU3RpY2t5
TW9kaWZpZXIgPSBrZXlIYXNTdGlja3lNb2RpZmllcihrZXkpOwotICAgIE5TRXZlbnRNb2RpZmll
ckZsYWdzIGNoYW5nZWRNb2RpZmllcnMgPSBldmVudE1vZGlmaWVyRmxhZ3NGb3JWaXJ0dWFsS2V5
KGtleSk7Ci0gICAgaW50IGtleUNvZGUgPSBrZXlDb2RlRm9yVmlydHVhbEtleShrZXkpOworICAg
IEFTU0VSVCh2aXJ0dWFsS2V5Lmhhc192YWx1ZSgpIHx8IGNoYXJLZXkuaGFzX3ZhbHVlKCkpOwor
CisgICAgYm9vbCBpc1N0aWNreU1vZGlmaWVyID0gZmFsc2U7CisgICAgTlNFdmVudE1vZGlmaWVy
RmxhZ3MgY2hhbmdlZE1vZGlmaWVycyA9IDA7CisgICAgaW50IGtleUNvZGU7CisgICAgc3RkOjpv
cHRpb25hbDx1bmljaGFyPiBjaGFyQ29kZTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuaWNoYXI+IGNo
YXJDb2RlSWdub3JpbmdNb2RpZmllcnM7CisKKyAgICBpZiAodmlydHVhbEtleS5oYXNfdmFsdWUo
KSkgeworICAgICAgICBpc1N0aWNreU1vZGlmaWVyID0gdmlydHVhbEtleUhhc1N0aWNreU1vZGlm
aWVyKHZpcnR1YWxLZXkudmFsdWUoKSk7CisgICAgICAgIGNoYW5nZWRNb2RpZmllcnMgPSBldmVu
dE1vZGlmaWVyRmxhZ3NGb3JWaXJ0dWFsS2V5KHZpcnR1YWxLZXkudmFsdWUoKSk7CisgICAgICAg
IGtleUNvZGUgPSBrZXlDb2RlRm9yVmlydHVhbEtleSh2aXJ0dWFsS2V5LnZhbHVlKCkpOworICAg
ICAgICBjaGFyQ29kZSA9IGNoYXJDb2RlRm9yVmlydHVhbEtleSh2aXJ0dWFsS2V5LnZhbHVlKCkp
OworICAgICAgICBjaGFyQ29kZUlnbm9yaW5nTW9kaWZpZXJzID0gY2hhckNvZGVJZ25vcmluZ01v
ZGlmaWVyc0ZvclZpcnR1YWxLZXkodmlydHVhbEtleS52YWx1ZSgpKTsKKyAgICB9CisKKyAgICBp
ZiAoY2hhcktleS5oYXNfdmFsdWUoKSkgeworICAgICAgICBjaGFyQ29kZSA9ICh1bmljaGFyKWNo
YXJLZXkudmFsdWUoKTsKKyAgICAgICAgY2hhckNvZGVJZ25vcmluZ01vZGlmaWVycyA9ICh1bmlj
aGFyKWNoYXJLZXkudmFsdWUoKTsKKyAgICB9CiAKICAgICAvLyBGSVhNRTogY29uc2lkZXIgdXNp
bmcgQXBwS2l0IFNQSSB0byBub3JtYWxpemUgJ2NoYXJhY3RlcnMnLCBpLmUuLCBjaGFuZ2luZyAq
IHRvIFNoaWZ0LTgsCiAgICAgLy8gYW5kIHBhc3NpbmcgdGhhdCBpbiB0byBjaGFyYWN0ZXJzSWdu
b3JpbmdNb2RpZmllcnMuIFdlIGNvdWxkIGhhcmRjb2RlIHRoaXMgZm9yIEFTQ0lJIGlmIG5lZWRl
ZC4KLSAgICBzdGQ6Om9wdGlvbmFsPHVuaWNoYXI+IGNoYXJDb2RlID0gY2hhckNvZGVGb3JWaXJ0
dWFsS2V5KGtleSk7Ci0gICAgc3RkOjpvcHRpb25hbDx1bmljaGFyPiBjaGFyQ29kZUlnbm9yaW5n
TW9kaWZpZXJzID0gY2hhckNvZGVJZ25vcmluZ01vZGlmaWVyc0ZvclZpcnR1YWxLZXkoa2V5KTsK
ICAgICBOU1N0cmluZyAqY2hhcmFjdGVycyA9IGNoYXJDb2RlID8gW05TU3RyaW5nIHN0cmluZ1dp
dGhDaGFyYWN0ZXJzOiZjaGFyQ29kZS52YWx1ZSgpIGxlbmd0aDoxXSA6IG5pbDsKICAgICBOU1N0
cmluZyAqdW5tb2RpZmllZENoYXJhY3RlcnMgPSBjaGFyQ29kZUlnbm9yaW5nTW9kaWZpZXJzID8g
W05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaGFyQ29kZUlnbm9yaW5nTW9kaWZpZXJz
LnZhbHVlKCkgbGVuZ3RoOjFdIDogbmlsOwogCkBAIC00NTIsMTkgKzQ2NywxOSBAQCB2b2lkIFdl
YkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlS2V5U3Ryb2tlKFdlYlBhZ2VQcm94
eSYgcGFnZSwgSW5zcGVjdAogICAgIE5TUG9pbnQgZXZlbnRQb3NpdGlvbiA9IE5TTWFrZVBvaW50
KDAsIHdpbmRvdy5mcmFtZS5zaXplLmhlaWdodCk7CiAKICAgICBzd2l0Y2ggKGludGVyYWN0aW9u
KSB7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpLZXlib2FyZElu
dGVyYWN0aW9uVHlwZTo6S2V5UHJlc3M6IHsKKyAgICBjYXNlIEtleWJvYXJkSW50ZXJhY3Rpb246
OktleVByZXNzOiB7CiAgICAgICAgIE5TRXZlbnRUeXBlIGV2ZW50VHlwZSA9IGlzU3RpY2t5TW9k
aWZpZXIgPyBOU0V2ZW50VHlwZUZsYWdzQ2hhbmdlZCA6IE5TRXZlbnRUeXBlS2V5RG93bjsKICAg
ICAgICAgbV9jdXJyZW50TW9kaWZpZXJzIHw9IGNoYW5nZWRNb2RpZmllcnM7CiAgICAgICAgIFtl
dmVudHNUb0JlU2VudCBhZGRPYmplY3Q6W05TRXZlbnQga2V5RXZlbnRXaXRoVHlwZTpldmVudFR5
cGUgbG9jYXRpb246ZXZlbnRQb3NpdGlvbiBtb2RpZmllckZsYWdzOm1fY3VycmVudE1vZGlmaWVy
cyB0aW1lc3RhbXA6dGltZXN0YW1wIHdpbmRvd051bWJlcjp3aW5kb3dOdW1iZXIgY29udGV4dDpu
aWwgY2hhcmFjdGVyczpjaGFyYWN0ZXJzIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczp1bm1v
ZGlmaWVkQ2hhcmFjdGVycyBpc0FSZXBlYXQ6Tk8ga2V5Q29kZTprZXlDb2RlXV07CiAgICAgICAg
IGJyZWFrOwogICAgIH0KLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246
OktleWJvYXJkSW50ZXJhY3Rpb25UeXBlOjpLZXlSZWxlYXNlOiB7CisgICAgY2FzZSBLZXlib2Fy
ZEludGVyYWN0aW9uOjpLZXlSZWxlYXNlOiB7CiAgICAgICAgIE5TRXZlbnRUeXBlIGV2ZW50VHlw
ZSA9IGlzU3RpY2t5TW9kaWZpZXIgPyBOU0V2ZW50VHlwZUZsYWdzQ2hhbmdlZCA6IE5TRXZlbnRU
eXBlS2V5VXA7CiAgICAgICAgIG1fY3VycmVudE1vZGlmaWVycyAmPSB+Y2hhbmdlZE1vZGlmaWVy
czsKICAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbTlNFdmVudCBrZXlFdmVudFdp
dGhUeXBlOmV2ZW50VHlwZSBsb2NhdGlvbjpldmVudFBvc2l0aW9uIG1vZGlmaWVyRmxhZ3M6bV9j
dXJyZW50TW9kaWZpZXJzIHRpbWVzdGFtcDp0aW1lc3RhbXAgd2luZG93TnVtYmVyOndpbmRvd051
bWJlciBjb250ZXh0Om5pbCBjaGFyYWN0ZXJzOmNoYXJhY3RlcnMgY2hhcmFjdGVyc0lnbm9yaW5n
TW9kaWZpZXJzOnVubW9kaWZpZWRDaGFyYWN0ZXJzIGlzQVJlcGVhdDpOTyBrZXlDb2RlOmtleUNv
ZGVdXTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXV0b21hdGlvbjo6S2V5Ym9hcmRJbnRlcmFjdGlvblR5cGU6Okluc2VydEJ5S2V5OiB7Cisg
ICAgY2FzZSBLZXlib2FyZEludGVyYWN0aW9uOjpJbnNlcnRCeUtleTogewogICAgICAgICAvLyBT
dGlja3kgbW9kaWZpZXJzIHNob3VsZCBlaXRoZXIgYmUgJ0tleVByZXNzJyBvciAnS2V5UmVsZWFz
ZScuCiAgICAgICAgIEFTU0VSVCghaXNTdGlja3lNb2RpZmllcik7CiAgICAgICAgIGlmIChpc1N0
aWNreU1vZGlmaWVyKQpAQCAtNTUxLDcgKzU2Niw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Np
b246OnBsYXRmb3JtU2ltdWxhdGVLZXlTZXF1ZW5jZShXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0
CiAKICAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbTlNFdmVudCBrZXlFdmVudFdp
dGhUeXBlOk5TRXZlbnRUeXBlS2V5RG93biBsb2NhdGlvbjpldmVudFBvc2l0aW9uIG1vZGlmaWVy
RmxhZ3M6bW9kaWZpZXJzRm9yS2V5c3Ryb2tlIHRpbWVzdGFtcDp0aW1lc3RhbXAgd2luZG93TnVt
YmVyOndpbmRvd051bWJlciBjb250ZXh0Om5pbCBjaGFyYWN0ZXJzOnN1YnN0cmluZyBjaGFyYWN0
ZXJzSWdub3JpbmdNb2RpZmllcnM6c3Vic3RyaW5nIGlzQVJlcGVhdDpOTyBrZXlDb2RlOjBdXTsK
ICAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbTlNFdmVudCBrZXlFdmVudFdpdGhU
eXBlOk5TRXZlbnRUeXBlS2V5VXAgbG9jYXRpb246ZXZlbnRQb3NpdGlvbiBtb2RpZmllckZsYWdz
Om1vZGlmaWVyc0ZvcktleXN0cm9rZSB0aW1lc3RhbXA6dGltZXN0YW1wIHdpbmRvd051bWJlcjp3
aW5kb3dOdW1iZXIgY29udGV4dDpuaWwgY2hhcmFjdGVyczpzdWJzdHJpbmcgY2hhcmFjdGVyc0ln
bm9yaW5nTW9kaWZpZXJzOnN1YnN0cmluZyBpc0FSZXBlYXQ6Tk8ga2V5Q29kZTowXV07Ci0gICAg
ICAgIAorCiAgICAgICAgIGlmIChzaG91bGRQcmVzc1NoaWZ0KQogICAgICAgICAgICAgW2V2ZW50
c1RvQmVTZW50IGFkZE9iamVjdDpbTlNFdmVudCBrZXlFdmVudFdpdGhUeXBlOk5TRXZlbnRUeXBl
RmxhZ3NDaGFuZ2VkIGxvY2F0aW9uOmV2ZW50UG9zaXRpb24gbW9kaWZpZXJGbGFnczptX2N1cnJl
bnRNb2RpZmllcnMgdGltZXN0YW1wOnRpbWVzdGFtcCB3aW5kb3dOdW1iZXI6d2luZG93TnVtYmVy
IGNvbnRleHQ6bmlsIGNoYXJhY3RlcnM6QCIiIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczpA
IiIgaXNBUmVwZWF0Ok5PIGtleUNvZGU6a1ZLX1NoaWZ0XV07CiAgICAgfV07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1NjEzOTJjOWQz
ZmQ2NmRkODU4NWIwNjdlMTAwZTI1Mzk5YjUwNWU4Li4wZWRmMmIyZDEwMTI2NGIzOGJmY2YwMWY5
Mzg4ZDEzNGRlMjFjMTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTE1MjksNiArMTUyOSw4IEBACiAJCTk5NDZFRjg2MUU3QjAyNzAw
MDU0MUU3OSAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbklPUy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5NDZFRjg1MUU3QjAyNjYwMDU0MUU3OSAvKiBX
ZWJBdXRvbWF0aW9uU2Vzc2lvbklPUy5tbSAqLzsgfTsKIAkJOTk0QkFERjMxRjdENzgxMTAwQjU3
MUU3IC8qIFdLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTRCQURGMjFGN0Q3N0VCMDBCNTcxRTcgLyogV0tJ
bnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbSAqLzsgfTsKIAkJOTk0QkFERjQxRjdENzgxNDAwQjU3
MUU3IC8qIFdLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5NEJBREYxMUY3RDc3RUEwMEI1NzFFNyAvKiBXS0lu
c3BlY3RvclZpZXdDb250cm9sbGVyLmggKi87IH07CisJCTk5NTIyNkQ2MjA3RDE4NDYwMEY3ODQy
MCAvKiBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5NTIyNkQ0MjA3RDE4NDUwMEY3ODQyMCAvKiBTaW11bGF0
ZWRJbnB1dERpc3BhdGNoZXIuaCAqLzsgfTsKKwkJOTk1MjI2RDcyMDdEMTg0NjAwRjc4NDIwIC8q
IFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5OTUyMjZENTIwN0QxODQ2MDBGNzg0MjAgLyogU2ltdWxhdGVk
SW5wdXREaXNwYXRjaGVyLmNwcCAqLzsgfTsKIAkJOTk1NUE2RUMxQzc5ODBDMjAwRUI2QTkzIC8q
IFdlYkF1dG9tYXRpb25TZXNzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5OTU1QTZFQjFDNzk4MEJCMDBFQjZBOTMgLyogV2ViQXV0b21hdGlvblNl
c3Npb24uaCAqLzsgfTsKIAkJOTk1NUE2RUQxQzc5ODBDQTAwRUI2QTkzIC8qIFdlYkF1dG9tYXRp
b25TZXNzaW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDk5NTVBNkVBMUM3OTgwQkIwMEVCNkE5MyAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAg
Ki87IH07CiAJCTk5NTVBNkVGMUM3OTgxMDgwMEVCNkE5MyAvKiBBdXRvbWF0aW9uLmpzb24gaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTU1QTZFOTFDNzk4
MEJCMDBFQjZBOTMgLyogQXV0b21hdGlvbi5qc29uICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC00MDE5LDYgKzQwMjEsOCBAQAogCQk5OTQ2RUY4NTFF
N0IwMjY2MDA1NDFFNzkgLyogV2ViQXV0b21hdGlvblNlc3Npb25JT1MubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJBdXRvbWF0aW9uU2Vzc2lvbklPUy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk0QkFERjExRjdENzdFQTAwQjU3MUU3IC8q
IFdLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5OTRCQURGMjFGN0Q3N0VCMDBCNTcxRTcgLyogV0tJbnNwZWN0b3JWaWV3Q29udHJv
bGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLSW5zcGVj
dG9yVmlld0NvbnRyb2xsZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5NTIy
NkQ0MjA3RDE4NDUwMEY3ODQyMCAvKiBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5NTIyNkQ1MjA3RDE4NDYwMEY3ODQyMCAvKiBT
aW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTk1NUE2RTkxQzc5ODBCQjAwRUI2QTkzIC8qIEF1dG9tYXRpb24uanNvbiAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQuanNvbjsgcGF0aCA9IEF1dG9tYXRpb24uanNvbjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTk1NUE2RUExQzc5ODBCQjAwRUI2QTkzIC8qIFdlYkF1dG9tYXRp
b25TZXNzaW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkF1
dG9tYXRpb25TZXNzaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk1NUE2
RUIxQzc5ODBCQjAwRUI2QTkzIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkF1dG9tYXRpb25TZXNzaW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC02OTcwLDYgKzY5NzQsOCBAQAogCQkJCTk5NDZFRjgyMUU3QjAy
M0QwMDU0MUU3OSAvKiBpb3MgKi8sCiAJCQkJOTlDM0FFMjIxREFEOEUxNDAwQUY1QzE2IC8qIG1h
YyAqLywKIAkJCQk5OTU1QTZFOTFDNzk4MEJCMDBFQjZBOTMgLyogQXV0b21hdGlvbi5qc29uICov
LAorCQkJCTk5NTIyNkQ1MjA3RDE4NDYwMEY3ODQyMCAvKiBTaW11bGF0ZWRJbnB1dERpc3BhdGNo
ZXIuY3BwICovLAorCQkJCTk5NTIyNkQ0MjA3RDE4NDUwMEY3ODQyMCAvKiBTaW11bGF0ZWRJbnB1
dERpc3BhdGNoZXIuaCAqLywKIAkJCQk5OTU1QTZFQTFDNzk4MEJCMDBFQjZBOTMgLyogV2ViQXV0
b21hdGlvblNlc3Npb24uY3BwICovLAogCQkJCTk5NTVBNkVCMUM3OTgwQkIwMEVCNkE5MyAvKiBX
ZWJBdXRvbWF0aW9uU2Vzc2lvbi5oICovLAogCQkJCTFDMEExOTU5MUM5MDA2RUEwMEZFMEVCQiAv
KiBXZWJBdXRvbWF0aW9uU2Vzc2lvbi5tZXNzYWdlcy5pbiAqLywKQEAgLTkxNzQsNiArOTE4MCw3
IEBACiAJCQkJODMxM0Y3RUMxRjdEQUUwODAwQjk0NEVCIC8qIFNoYXJlZFN0cmluZ0hhc2hTdG9y
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODMxM0Y3RUUxRjdEQUUwODAwQjk0NEVCIC8qIFNoYXJl
ZFN0cmluZ0hhc2hUYWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNGOTY0NEUxRkEwRjc2RTAw
QzQ3NzUwIC8qIFNoYXJlZFN0cmluZ0hhc2hUYWJsZVJlYWRPbmx5LmggaW4gSGVhZGVycyAqLywK
KwkJCQk5OTUyMjZENjIwN0QxODQ2MDBGNzg0MjAgLyogU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQkyREFGMDZENjE4QkQxQTQ3MDA4MUNFQjEgLyogU21hcnRN
YWduaWZpY2F0aW9uQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRFNjk0M0UxOEJE
MkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTI3MkIyOEIxNDA2OTg1RDAwOTZBNUQwIC8qIFN0YXRpc3RpY3NE
YXRhLmggaW4gSGVhZGVycyAqLywKQEAgLTEwODgwLDYgKzEwODg3LDcgQEAKIAkJCQk4MzEzRjdF
QjFGN0RBRTA4MDBCOTQ0RUIgLyogU2hhcmVkU3RyaW5nSGFzaFN0b3JlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTgzMTNGN0VEMUY3REFFMDgwMEI5NDRFQiAvKiBTaGFyZWRTdHJpbmdIYXNoVGFi
bGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODNGOTY0NEQxRkEwRjc2RTAwQzQ3NzUwIC8qIFNo
YXJlZFN0cmluZ0hhc2hUYWJsZVJlYWRPbmx5LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTk5NTIy
NkQ3MjA3RDE4NDYwMEY3ODQyMCAvKiBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMkRBRjA2RDcxOEJEMUE0NzAwODFDRUIxIC8qIFNtYXJ0TWFnbmlmaWNh
dGlvbkNvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQkyREU2OTQzRDE4QkQyQTY4MDA1
QzE1RTUgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk1MjcyQjI4QTE0MDY5ODVEMDA5NkE1RDAgLyogU3RhdGlzdGlj
c0RhdGEuY3BwIGluIFNvdXJjZXMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338383</attachid>
            <date>2018-04-19 17:11:53 -0700</date>
            <delta_ts>2018-04-19 20:22:47 -0700</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-184603-20180419171152.patch</filename>
            <type>text/plain</type>
            <size>106090</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwODIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDIzMzY5YzY5MDNmMjA1MTY3
YmE0YWI1ZDFhMDQ5MTU5OGM2MGIxNmUuLjQ0NTVjN2E0Njk3ZGJiNDE5NGI5MDBhZDNhYjNkNzNk
YmM2MmUyMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTI5IEBACisyMDE4LTA0LTE5ICBCcmlhbiBC
dXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBBdXRvbWF0aW9uOiBhZGQgc3Vw
cG9ydCBmb3IgbW91c2Uva2V5Ym9hcmQgaW50ZXJhY3Rpb24gc2VxdWVuY2VzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQ2MDMKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzM5NDIxODM5PgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0
Y2hlci4KKworICAgICAgICBBZGQgbmV3IHByb3RvY29sIG1ldGhvZHMgYW5kIFdlYktpdCBzdXBw
b3J0IGZvciBpbXBsZW1lbnRpbmcgdGhlIFczQyBBY3Rpb25zIEFQSS4KKyAgICAgICAgVGhpcyBp
cyBhIGdlbmVyaWMgY29tbWFuZCBmb3Igc2VuZGluZyBsb3ctbGV2ZWwgbW91c2UsIGtleSwgYW5k
IHRvdWNoIGV2ZW50cyB0bworICAgICAgICB0ZXN0IHBhZ2UgYmVoYXZpb3Igd2hlbiBwZXJmb3Jt
aW5nIGRyYWctYW5kLWRyb3AsIGdlc3R1cmVzLCBvciBzcGVjaWZpYyBrZXlkb3duL2tleXVwcy4K
KworICAgICAgICBUbyBpbXBsZW1lbnQgdGhpcyBmdW5jdGlvbmFsaXR5LCB0aGlzIHBhdGNoIGFk
ZHMgU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLCBhIGNsYXNzCisgICAgICAgIGZvciBkaXNwYXRj
aGluZyBpbnB1dCBldmVudHMgYXN5bmNocm9ub3VzbHkuIFNpbWlsYXIgdG8gdGhlIFdlYkRyaXZl
ciBzcGVjaWZpY2F0aW9uLAorICAgICAgICB0aGlzIGlzIGRlc2lnbmVkIGFzIGEga2V5ZnJhbWlu
ZyBBUEkuIENhbGxlcnMgc2V0IHVwIHNldmVyYWwgImlucHV0IHNvdXJjZXMiIHN1Y2gKKyAgICAg
ICAgYXMga2V5Ym9hcmQgb3IgbW91c2UsIGFuZCB0aGVuIHNwZWNpZnkgdGhlIHN0YXRlcyBvZiB0
aGF0IGlucHV0IHNvdXJjZSBvdmVyIHRpbWUuIFRoZQorICAgICAgICBkaXNwYXRjaGVyIGNhbGN1
bGF0ZXMgZGlmZnMgYmV0d2VlbiB0aGUgcHJldmlvdXMgYW5kIGN1cnJlbnQga2V5ZnJhbWVzIGFu
ZCBnZW5lcmF0ZXMKKyAgICAgICAgdGhlIGFwcHJvcHJpYXRlIGV2ZW50cyB0aGF0IHdvdWxkIGhh
cHBlbiBpZiBhIHVzZXIgY2F1c2VkIHRoZSBzdGF0ZSB0cmFuc2l0aW9uLgorCisgICAgICAgIEZv
ciBleGFtcGxlLCBpZiBhIG1vdXNlIGlucHV0IHNvdXJjZSdzIHN0YXRlIGNoYW5nZXMsIHRoZSBk
aXNwYXRjaGVyIHNlbmRzIHN5bnRoZXRpYyBtb3VzZW1vdmUsCisgICAgICAgIG1vdXNlZG93biwg
b3IgbW91c2V1cCBldmVudHMgZGVwZW5kaW5nIG9uIHRoZSBwcmUtIGFuZCBwb3N0LXN0YXRlLiBU
aGlzIGlzIHVuaW50ZXJlc3RpbmcKKyAgICAgICAgYW5kIG92ZXJjb21wbGljYXRlZCBmb3Igc2lt
cGxlIGtleSBhbmQgbW91c2UgcHJlc3NlcywgYnV0IGl0J3MgcmVhbGx5IGRlc2lnbmVkIHdpdGgg
YW4KKyAgICAgICAgZXllIHRvd2FyZHMgc3VwcG9ydGluZyBtb3VzZW1vdmUgaW50ZXJwb2xhdGlv
biBhbmQgdG91Y2ggZXZlbnQgaW50ZXJwb2xhdGlvbiBpbiBsYXRlciBwYXRjaGVzLgorCisgICAg
ICAgIFRoZSBzdHJhdGVneSBmb3IgZGlzcGF0Y2hpbmcgZXZlbnRzIGRlcGVuZHMgb24gdGhlIGlu
cHV0IHNvdXJjZSB0eXBlOyByaWdodCBub3csIHRoZXNlCisgICAgICAgIG1hcCBkaXJlY3RseSB0
byB0aGUgZXhpc3RpbmcgcGxhdGZvcm1TaW11bGF0ZXtNb3VzZSwgS2V5Ym9hcmR9SW50ZXJhY3Rp
b24gbWV0aG9kcy4gSW4KKyAgICAgICAgdGhlIGZ1dHVyZSwgdGhlIGRpc3BhdGNoIHN0cmF0ZWd5
IG1heSBiZSBlbGFib3JhdGVkIGZvciBpbnRlcnBvbGF0ZWQgbW91c2Vtb3ZlIGV2ZW50cy4KKwor
ICAgICAgICBUaGlzIHBhdGNoIGRlcGVuZHMgb24gc3VwcG9ydCBhZGRlZCBpbiBidWcgMTg0NDYy
LgorCisgICAgICAgIE5vIHRlc3RzIHlldC4gV2hlbiB0aGlzIGNvbW1hbmQgaXMgaG9va2VkIHVw
IHRvIGEgZHJpdmVyLCB0aGUgY29kZSB3aWxsIGJlIGV4ZXJjaXNlZCBieQorICAgICAgICBXM0Mg
YWN0aW9ucyB0ZXN0IHN1aXRlLCB3aGljaCBpcyBmYWlybHkgY29tcGxleCBhdCB0aGlzIHBvaW50
IHJlbGF0aXZlIHRvIGVuZC11c2VyIGNvZGUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21h
dGlvbi9BdXRvbWF0aW9uLmpzb246IEFkZCBuZXcgdHlwZXMgYW5kIGNvbW1hbmRzLgorCisgICAg
ICAgICogVUlQcm9jZXNzL0F1dG9tYXRpb24vU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0OjpTaW11bGF0ZWRJbnB1dFNvdXJjZVN0YXRlOjplbXB0eVN0
YXRlKToKKyAgICAgICAgKFdlYktpdDo6U2ltdWxhdGVkSW5wdXRTb3VyY2U6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlNpbXVsYXRlZElucHV0U291cmNlOjpTaW11bGF0ZWRJbnB1dFNvdXJj
ZSk6CisgICAgICAgIChXZWJLaXQ6OlNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6Q2xpZW50Ojp+
Q2xpZW50KToKKyAgICAgICAgQWRkIHN0cnVjdHMgZm9yIGlucHV0IHNvdXJjZSwgc291cmNlIHN0
YXRlLCBhbmQga2V5ZnJhbWUuCisgICAgICAgIFRoZSBkaXNwYXRjaGVyJ3MgY2xpZW50IGludGVy
ZmFjZSBpcyBpbXBsZW1lbnRlZCBieSBXZWJBdXRvbWF0aW9uU2Vzc2lvbi4KKworICAgICAgICAo
V2ViS2l0OjpTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OmNyZWF0ZSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0F1dG9tYXRpb24vU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQ6OlNpbXVsYXRlZElucHV0S2V5RnJhbWU6OlNpbXVsYXRlZElucHV0S2V5
RnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpTaW11bGF0ZWRJbnB1dEtleUZyYW1lOjptYXhpbXVt
RHVyYXRpb24gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTaW11bGF0ZWRJbnB1dEtleUZyYW1l
OjprZXlGcmFtZUZyb21TdGF0ZU9mSW5wdXRTb3VyY2VzKToKKyAgICAgICAgKFdlYktpdDo6U2lt
dWxhdGVkSW5wdXRLZXlGcmFtZTo6a2V5RnJhbWVUb1Jlc2V0SW5wdXRTb3VyY2VzKToKKyAgICAg
ICAgKFdlYktpdDo6U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjpTaW11bGF0ZWRJbnB1dERpc3Bh
dGNoZXIpOgorICAgICAgICAoV2ViS2l0OjpTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6On5TaW11
bGF0ZWRJbnB1dERpc3BhdGNoZXIpOgorICAgICAgICAoV2ViS2l0OjpTaW11bGF0ZWRJbnB1dERp
c3BhdGNoZXI6OmlzQWN0aXZlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6U2ltdWxhdGVkSW5w
dXREaXNwYXRjaGVyOjprZXlGcmFtZVRyYW5zaXRpb25EdXJhdGlvblRpbWVyRmlyZWQpOgorICAg
ICAgICAoV2ViS2l0OjpTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OmlzS2V5RnJhbWVUcmFuc2l0
aW9uQ29tcGxldGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTaW11bGF0ZWRJbnB1dERpc3Bh
dGNoZXI6OnRyYW5zaXRpb25Ub05leHRLZXlGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlNpbXVs
YXRlZElucHV0RGlzcGF0Y2hlcjo6dHJhbnNpdGlvblRvTmV4dElucHV0U291cmNlU3RhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OnRyYW5zaXRpb25CZXR3
ZWVuS2V5RnJhbWVzKToKKyAgICAgICAgKFdlYktpdDo6U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVy
Ojp0cmFuc2l0aW9uSW5wdXRTb3VyY2VUb1N0YXRlKToKKyAgICAgICAgKFdlYktpdDo6U2ltdWxh
dGVkSW5wdXREaXNwYXRjaGVyOjpydW4pOgorICAgICAgICAoV2ViS2l0OjpTaW11bGF0ZWRJbnB1
dERpc3BhdGNoZXI6OmNhbmNlbCk6CisgICAgICAgIChXZWJLaXQ6OlNpbXVsYXRlZElucHV0RGlz
cGF0Y2hlcjo6ZmluaXNoRGlzcGF0Y2hpbmcpOgorICAgICAgICBUaGUgZGlzcGF0Y2hlciBoYW5k
bGVzIG9uZSBpbnRlcmFjdGlvbiBhdCBhIHRpbWUuIFRoZSBpbnRlcmFjdGlvbiBpcyBkZXNjcmli
ZWQKKyAgICAgICAgYnkgYW4gYXJyYXkgb2Yga2V5ZnJhbWVzLCBhbmQgZWFjaCBrZXlmcmFtZSBo
YXMgYW4gYXJyYXkgb2Ygc3RhdGVzLiBUaGUgZGlzcGF0Y2hlcgorICAgICAgICB0cmFuc2l0aW9u
cyBiZXR3ZWVuIGtleWZyYW1lcyBieSBzZXF1ZW50aWFsbHkgYW5kIGFzeW5jaHJvbm91c2x5IGVt
aXR0aW5nIGV2ZW50cworICAgICAgICB0aGF0IGNhdXNlIGVhY2ggaW5wdXQgc291cmNlIHN0YXRl
IHRvIHRyYW5zaXRpb24gYXMgZGVzaXJlZC4gS2V5ZnJhbWUgdHJhbnNpdGlvbnMKKyAgICAgICAg
YXJlIGFkZGl0aW9uYWxseSBnYXRlZCBieSBhICJtYXhpbXVtIGR1cmF0aW9uIiB0aW1lci4gRWFj
aCBzdGVwIHRoYXQgdGhlIGRpc3BhdGNoZXIKKyAgICAgICAgZXhlY3V0ZXMgaXMgYXN5bmNocm9u
b3VzLCBzbyB0aGUgZGlzcGF0Y2hlciBrZWVwcyBtb3N0IHN0YXRlIGluIG1lbWJlcnMgYW5kIHVz
ZXMKKyAgICAgICAgZXJyb3IgYXJndW1lbnQgbGFtYmRhcyBhcyBjb21wbGV0aW9uIGhhbmRsZXJz
IGZvciB2YXJpb3VzIGFzeW5jIHRoaW5ncy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0
aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRp
b24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0
aW9uU2Vzc2lvbjo6V2ViQXV0b21hdGlvblNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJB
dXRvbWF0aW9uU2Vzc2lvbjo6aW5wdXREaXNwYXRjaGVyRm9yUGFnZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjppbnB1dFNvdXJjZUZvclR5cGUgY29uc3QpOgorICAg
ICAgICBBZGQgY2Fub25pY2FsIGlucHV0IHNvdXJjZXMgdGhhdCBhcmUgdXNlZCB0byBrZWVwIHRy
YWNrIG9mIHN0YXRlIGFjcm9zcworICAgICAgICBpbnRlcmFjdGlvbiBzZXF1ZW5jZXMuCisKKyAg
ICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OmlzU2ltdWxhdGluZ1VzZXJJbnRl
cmFjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpt
b3VzZUV2ZW50c0ZsdXNoZWRGb3JQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlv
blNlc3Npb246OmtleWJvYXJkRXZlbnRzRmx1c2hlZEZvclBhZ2UpOgorICAgICAgICBSZW1vdmUg
bV9zaW11bGF0aW5nVXNlckludGVyYWN0aW9uIHNpbmNlIGl0IGNhbiBiZSBjb21wdXRlZCBiYXNl
ZCBvbiBvdGhlciBtZW1iZXJzLgorCisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNz
aW9uOjp3aWxsQ2xvc2VQYWdlKToKKyAgICAgICAgSWYgdGhlIHBhZ2UgaXMgYmVpbmcgdG9ybiBk
b3duLCBzdG9wIHRoZSBkaXNwYXRjaGVyIGlmIG5lZWRlZCBhbmQgY2FuY2VsIGFueQorICAgICAg
ICBjYWxsYmFja3Mgd2FpdGluZyBmb3IgbW91c2Uva2V5IGV2ZW50cyB0byBiZSByZXRpcmVkLgor
CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpzaW11bGF0ZU1vdXNlSW50
ZXJhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6c2ltdWxh
dGVLZXlib2FyZEludGVyYWN0aW9uKToKKyAgICAgICAgQWRkIGVhc3ktdG8tdXNlIGFzeW5jIG1l
dGhvZHMgZm9yIHNpbXVsYXRpbmcgbW91c2UgYW5kIGtleSBldmVudHMuIFRoZXNlIGFyZQorICAg
ICAgICBob29rZWQgdXAgdG8gU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyIHVzaW5nIGFzeW5jIGNv
bXBsZXRpb24gaGFuZGxlcnMuCisKKyAgICAgICAgKFdlYktpdDo6cHJvdG9jb2xNb3VzZUJ1dHRv
blRvV2ViTW91c2VFdmVudEJ1dHRvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25T
ZXNzaW9uOjpwZXJmb3JtTW91c2VJbnRlcmFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkF1
dG9tYXRpb25TZXNzaW9uOjpwZXJmb3JtS2V5Ym9hcmRJbnRlcmFjdGlvbnMpOgorICAgICAgICBB
ZGp1c3Qgc29tZSBuYW1pbmcuCisKKyAgICAgICAgKFdlYktpdDo6c2ltdWxhdGVkSW5wdXRTb3Vy
Y2VUeXBlRnJvbVByb3RvY29sU291cmNlVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9t
YXRpb25TZXNzaW9uOjpwZXJmb3JtSW50ZXJhY3Rpb25TZXF1ZW5jZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpjYW5jZWxJbnRlcmFjdGlvblNlcXVlbmNlKToKKyAg
ICAgICAgQWRkIGNvbW1hbmQgaGFuZGxlcnMgZm9yIHRoZSBuZXcgYWN0aW9uIGNvbW1hbmRzIGlu
IEF1dG9tYXRpb24gcHJvdG9jb2wuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9n
dGsvV2ViQXV0b21hdGlvblNlc3Npb25HdGsuY3BwOgorICAgICAgICAoV2ViS2l0Ojptb3VzZUJ1
dHRvblRvR2RrQnV0dG9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246
OnBsYXRmb3JtU2ltdWxhdGVNb3VzZUludGVyYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
QXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVLZXlib2FyZEludGVyYWN0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVL
ZXlTdHJva2UpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL2lvcy9X
ZWJBdXRvbWF0aW9uU2Vzc2lvbklPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlv
blNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVLZXlib2FyZEludGVyYWN0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVLZXlTdHJva2Up
OiBEZWxldGVkLgorICAgICAgICBSZW5hbWUgdGhlIGtleWJvYXJkIHBsYXRmb3JtIG1ldGhvZCB0
byBtYXRjaCB0aGUgbmFtaW5nIG9mIHRoZSBtb3VzZSBwbGF0Zm9ybSBtZXRob2QuCisgICAgICAg
IFRha2UgYWR2YW50YWdlIG9mIHRoZSAndXNpbmcnIGFsaWFzIHRvIG1ha2UgdGhlIHRlZGlvdXMg
c3dpdGNoZXMgZWFzaWVyIHRvIHJlYWQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlv
bi9tYWMvV2ViQXV0b21hdGlvblNlc3Npb25NYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYkF1
dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlTW91c2VJbnRlcmFjdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OnZpcnR1YWxLZXlIYXNTdGlja3lNb2RpZmllcik6CisgICAgICAgIChXZWJL
aXQ6OmtleUNvZGVGb3JWaXJ0dWFsS2V5KToKKyAgICAgICAgKFdlYktpdDo6ZXZlbnRNb2RpZmll
ckZsYWdzRm9yVmlydHVhbEtleSk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNz
aW9uOjpwbGF0Zm9ybVNpbXVsYXRlS2V5Ym9hcmRJbnRlcmFjdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlS2V5U2VxdWVuY2UpOgor
ICAgICAgICAoV2ViS2l0OjprZXlIYXNTdGlja3lNb2RpZmllcik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlS2V5U3Ryb2tl
KTogRGVsZXRlZC4KKyAgICAgICAgQWxsb3cgdGhlIGtleWJvYXJkIHNpbXVsYXRpb24gbWV0aG9k
IHRvIHRha2UgYSB2aXJ0dWFsIGtleSBhbmQgdW5pY2hhciB0byBiZXR0ZXIKKyAgICAgICAgbWF0
Y2ggaG93IHRoaXMgaXMgdXNlZCBieSB0aGUgUGVyZm9ybSBBY3Rpb25zIGNvbW1hbmQgYW5kIGl0
cyBtYWNoaW5lcnkuCisKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKwogMjAxOC0wNC0xOSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAg
ICAgICAgV2ViIEluc3BlY3RvciBiYWNrZW5kIHNob3VsZCBnZXQgaGVhZGVycyAmIGNvb2tpZXMg
ZnJvbSBuZXR3b3JrIHByb2Nlc3Mgc2VwYXJhdGVseSBmcm9tIHJlc291cmNlIHJlcXVlc3RzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL0F1dG9tYXRpb24u
anNvbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vQXV0b21hdGlvbi5qc29u
CmluZGV4IDdlODZkMTQ5YzI1YzE5MTQwNDIxZDM4ODRhNTFiYjZjMGY5ZTYyOTAuLmMzMTdlMWEy
NjIwZDlkZTdjYTZjOGFhNjNhZDMyODcwOWIxMjZiZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vQXV0b21hdGlvbi5qc29uCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vQXV0b21hdGlvbi5qc29uCkBAIC03Miw3ICs3Miw4IEBA
CiAgICAgICAgICAgICAgICAgIkVsZW1lbnROb3RJbnRlcmFjdGFibGUiLAogICAgICAgICAgICAg
ICAgICJFbGVtZW50Tm90U2VsZWN0YWJsZSIsCiAgICAgICAgICAgICAgICAgIlNjcmVlbnNob3RF
cnJvciIsCi0gICAgICAgICAgICAgICAgIlVuZXhwZWN0ZWRBbGVydE9wZW4iCisgICAgICAgICAg
ICAgICAgIlVuZXhwZWN0ZWRBbGVydE9wZW4iLAorICAgICAgICAgICAgICAgICJUYXJnZXRPdXRP
ZkJvdW5kcyIKICAgICAgICAgICAgIF0KICAgICAgICAgfSwKICAgICAgICAgewpAQCAtMjQ0LDYg
KzI0NSw0NiBAQAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicGVybWlzc2lvbiIsICIkcmVm
IjogIlNlc3Npb25QZXJtaXNzaW9uIiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidmFs
dWUiLCAidHlwZSI6ICJib29sZWFuIiB9CiAgICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAg
ICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJJbnB1dFNvdXJjZVR5cGUiLAorICAgICAgICAgICAg
InR5cGUiOiAic3RyaW5nIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJUaGUgdHlwZSBv
ZiBhbiBpbnB1dCBzb3VyY2UuIFRoaXMgZGV0ZXJtaW5lcyB3aGljaCBzdGF0ZSBwcm9wZXJ0aWVz
IGFyZSBhcHBsaWNhYmxlIHRvIHRoZSBpbnB1dCBzb3VyY2UuIFRoZSAnTnVsbCcgaW5wdXQgc291
cmNlIHR5cGUgaGFzIG5vIHByb3BlcnRpZXMsIG9ubHkgYSBkdXJhdGlvbi4gVGhpcyBjYW4gZXh0
ZW5kIHRoZSBlZmZlY3RpdmUgd2FpdCBmb3IgYSB0aWNrLiIsCisgICAgICAgICAgICAiZW51bSI6
IFsKKyAgICAgICAgICAgICAgICAiTnVsbCIsCisgICAgICAgICAgICAgICAgIk1vdXNlIiwKKyAg
ICAgICAgICAgICAgICAiS2V5Ym9hcmQiLAorICAgICAgICAgICAgICAgICJUb3VjaCIKKyAgICAg
ICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgImlkIjogIklucHV0
U291cmNlIiwKKyAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCisgICAgICAgICAgICAicHJv
cGVydGllcyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNvdXJjZUlkIiwgInR5cGUi
OiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIkEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoaXMg
aW5wdXQgc291cmNlLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNvdXJjZVR5cGUi
LCAiJHJlZiI6ICJJbnB1dFNvdXJjZVR5cGUiLCAiZGVzY3JpcHRpb24iOiAiVGhlIHR5cGUgb2Yg
dGhpcyBpbnB1dCBzb3VyY2UuIFRoaXMgYWZmZWN0cyB3aGF0IGlucHV0IHNvdXJjZSBzdGF0ZSBm
aWVsZHMgYXJlIHZhbGlkIGZvciB0aGlzIGlucHV0IHNvdXJjZS4iIH0KKyAgICAgICAgICAgIF0K
KyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgImlkIjogIkludGVyYWN0aW9uU3Rl
cCIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQSBzZXQgb2YgaW5wdXQgc291cmNlIHN0
YXRlcyB0byB3aGljaCBhbGwgYXBwbGljYWJsZSBpbnB1dCBzb3VyY2VzIG11c3QgdHJhbnNpdGlv
biBiZWZvcmUgZnVydGhlciBzdGVwcyBtYXkgYmUgcHJvY2Vzc2VkLiBJZiBhbiBpbnB1dCBzb3Vy
Y2UgZG9lcyBub3QgaGF2ZSBhIGNvcnJlc3BvbmRpbmcgc3RhdGUgaW4gYSBzdGVwLCBpdHMgc3Rh
dGUgYXNzdW1lZCB0byBiZSAncmVsZWFzZWQnIGZvciB0aGF0IHN0ZXAuIiwKKyAgICAgICAgICAg
ICJ0eXBlIjogIm9iamVjdCIsCisgICAgICAgICAgICAicHJvcGVydGllcyI6IFsKKyAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogInN0YXRlcyIsICJ0eXBlIjogImFycmF5IiwgIml0ZW1zIjogeyAi
JHJlZiI6ICJJbnB1dFNvdXJjZVN0YXRlIiB9LCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRp
b24iOiAiQSBsaXN0IG9mIG5ldyBpbnB1dCBzdGF0ZXMgZm9yIGlucHV0IHNvdXJjZXMgdGhhdCBt
dXN0IHRyYW5zaXRpb24gZHVyaW5nIHRoaXMgc3RlcC4gU291cmNlIHN0YXRlIHRyYW5zaXRpb25z
IHRoYXQgY2Fubm90IGJlIHBlcmZvcm1lZCBjb25jdXJyZW50bHkgKGkuZS4sIHRvdWNoIGdlc3R1
cmVzKSBhcmUgcGVyZm9ybWVkIHNlcXVlbnRpYWxseSBpbiB0aGUgb3JkZXIgdGhleSBhcmUgbGlz
dGVkLiIgfQorICAgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAg
ICAiaWQiOiAiSW5wdXRTb3VyY2VTdGF0ZSIsCisgICAgICAgICAgICAidHlwZSI6ICJvYmplY3Qi
LAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkEgbmV3IHN0YXRlIGZvciBhIHNwZWNpZmlj
IGlucHV0IHNvdXJjZS4gQWxsIHN0YXRlLXJlbGF0ZWQgZmllbGRzIGFyZSBvcHRpb25hbCBhbmQg
bXVzdCBiZSBhcHBsaWNhYmxlIHRvIHRoZSBJbnB1dFNvdXJjZSByZWZlcmVuY2VkIGJ5ICdzb3Vy
Y2VJZCcuIElmIG5vIHN0YXRlLXJlbGF0ZWQgZmllbGRzIGFyZSBzcGVjaWZpZWQsIHRoZSBzdGF0
ZSBpcyBhc3N1bWVkIHRvIHJlbWFpbiB0aGUgc2FtZSBhcyBpbiB0aGUgcHJldmlvdXMgc3RlcCAo
aS5lLiwgJ3N1c3RhaW5lZCcpLiIsCisgICAgICAgICAgICAicHJvcGVydGllcyI6IFsKKyAgICAg
ICAgICAgICAgICB7ICJuYW1lIjogInNvdXJjZUlkIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2Ny
aXB0aW9uIjogIlRoZSBpbnB1dCBzb3VyY2Ugd2hvc2Ugc3RhdGUgaXMgZGVzY3JpYmVkIGJ5IHRo
aXMgb2JqZWN0LiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInByZXNzZWRDaGFyS2V5
IiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIkZv
ciAna2V5Ym9hcmQnIGlucHV0IHNvdXJjZXMsIHNwZWNpZmllcyBhIGNoYXJhY3RlciBrZXkgdGhh
dCBoYXMgJ3ByZXNzZWQnIHN0YXRlLiBVbm1lbnRpb25lZCBjaGFyYWN0ZXIga2V5cyBhcmUgYXNz
dW1lZCB0byBoYXZlIGEgJ3JlbGVhc2VkJyBzdGF0ZS4iIH0sCisgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJwcmVzc2VkVmlydHVhbEtleSIsICIkcmVmIjogIlZpcnR1YWxLZXkiLCAib3B0aW9u
YWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiRm9yICdrZXlib2FyZCcgaW5wdXQgc291cmNlcywg
c3BlY2lmaWVzIGEgdmlydHVhbCBrZXkgdGhhdCBoYXMgYSAncHJlc3NlZCcgc3RhdGUuIFVubWVu
dGlvbmVkIHZpcnR1YWwga2V5cyBhcmUgYXNzdW1lZCB0byBoYXZlIGEgJ3JlbGVhc2VkJyBzdGF0
ZS4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJwcmVzc2VkQnV0dG9uIiwgIiRyZWYi
OiAiTW91c2VCdXR0b24iLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiRm9yICdt
b3VzZScgaW5wdXQgc291cmNlcywgc3BlY2lmaWVzIHdoaWNoIG1vdXNlIGJ1dHRvbiBoYXMgYSAn
cHJlc3NlZCcgc3RhdGUuIFVubWVudGlvbmVkIG1vdXNlIGJ1dHRvbnMgYXJlIGFzc3VtZWQgdG8g
aGF2ZSBhICdyZWxlYXNlZCcgc3RhdGUuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
bG9jYXRpb24iLCAiJHJlZiI6ICJQb2ludCIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlv
biI6ICJGb3IgJ21vdXNlJyBvciAndG91Y2gnIGlucHV0IHNvdXJjZXMsIHNwZWNpZmllcyBhIGxv
Y2F0aW9uIGluIHZpZXcgY29vcmRpbmF0ZXMgdG8gd2hpY2ggdGhlIGlucHV0IHNvdXJjZSBzaG91
bGQgdHJhbnNpdGlvbi4gVHJhbnNpdGlvbmluZyB0byB0aGlzIHN0YXRlIG1heSBpbnRlcnBvbGF0
ZSBpbnRlbWVkaWF0ZSBpbnB1dCBzb3VyY2Ugc3RhdGVzIHRvIGJldHRlciBzaW11bGF0ZSByZWFs
IHVzZXIgbW92ZW1lbnRzIGFuZCBnZXN0dXJlcy4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJkdXJhdGlvbiIsICJ0eXBlIjogImludGVnZXIiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVz
Y3JpcHRpb24iOiAiVGhlIG1pbmltdW0gbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0aGF0IG11c3Qg
ZWxhcHNlIHdoaWxlIHRoZSByZWxldmFudCBpbnB1dCBzb3VyY2UgdHJhbnNpdGlvbnMgdG8gdGhp
cyBzdGF0ZS4iIH0KKyAgICAgICAgICAgIF0KICAgICAgICAgfQogICAgIF0sCiAgICAgImNvbW1h
bmRzIjogWwpAQCAtNDEzLDYgKzQ1NCwyNCBAQAogICAgICAgICAgICAgXSwKICAgICAgICAgICAg
ICJhc3luYyI6IHRydWUKICAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUi
OiAicGVyZm9ybUludGVyYWN0aW9uU2VxdWVuY2UiLAorICAgICAgICAgICAgImRlc2NyaXB0aW9u
IjogIlBlcmZvcm0gbXVsdGlwbGUgc2ltdWxhdGVkIGludGVyYWN0aW9ucyBvdmVyIHRpbWUgdXNp
bmcgYSBsaXN0IG9mIGlucHV0IHNvdXJjZXMgYW5kIGEgbGlzdCBvZiBzdGVwcywgd2hlcmUgZWFj
aCBzdGVwIHNwZWNpZmllcyBhIHN0YXRlIGZvciBlYWNoIGlucHV0IHNvdXJjZSBhdCB0aGUgdGlt
ZSB0aGF0IHN0ZXAgaXMgcGVyZm9ybWVkLiIsCisgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsK
KyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImhhbmRsZSIsICIkcmVmIjogIkJyb3dzaW5nQ29u
dGV4dEhhbmRsZSIsICJkZXNjcmlwdGlvbiI6ICJUaGUgYnJvd3NpbmcgY29udGV4dCB0byBiZSBp
bnRlcmFjdGVkIHdpdGguIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaW5wdXRTb3Vy
Y2VzIiwgInR5cGUiOiAiYXJyYXkiLCAiaXRlbXMiOiB7ICIkcmVmIjogIklucHV0U291cmNlIiB9
LCAiZGVzY3JpcHRpb24iOiAiQWxsIGlucHV0IHNvdXJjZXMgdGhhdCBhcmUgdXNlZCB0byBwZXJm
b3JtIHRoaXMgaW50ZXJhY3Rpb24gc2VxdWVuY2UuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAic3RlcHMiLCAidHlwZSI6ICJhcnJheSIsICJpdGVtcyI6IHsgIiRyZWYiOiAiSW50ZXJh
Y3Rpb25TdGVwIiB9LCAiZGVzY3JpcHRpb24iOiAiQSBsaXN0IG9mIHN0ZXBzIHRoYXQgYXJlIGV4
ZWN1dGVkIGluIG9yZGVyLiIgfQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJhc3luYyI6
IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiY2FuY2Vs
SW50ZXJhY3Rpb25TZXF1ZW5jZSIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ2FuY2Vs
IGFuIGFjdGl2ZSBpbnRlcmFjdGlvbiBzZXF1ZW5jZSB0aGF0IGlzIGN1cnJlbnRseSBpbiBwcm9n
cmVzcy4iLAorICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJoYW5kbGUiLCAiJHJlZiI6ICJCcm93c2luZ0NvbnRleHRIYW5kbGUiLCAiZGVzY3Jp
cHRpb24iOiAiVGhlIGJyb3dzaW5nIGNvbnRleHQgdG8gYmUgaW50ZXJhY3RlZCB3aXRoLiIgfQor
ICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJhc3luYyI6IHRydWUKKyAgICAgICAgfSwKICAg
ICAgICAgewogICAgICAgICAgICAgIm5hbWUiOiAidGFrZVNjcmVlbnNob3QiLAogICAgICAgICAg
ICAgImRlc2NyaXB0aW9uIjogIlRha2UgYSBzY3JlZW5zaG90IG9mIHRoZSBjdXJyZW50IHBhZ2Ug
b3IgZ2l2ZW4gZWxlbWVudCBpbiBhIGJyb3dzaW5nIGNvbnRleHQuIiwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vU2ltdWxhdGVkSW5wdXRE
aXNwYXRjaGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZDU4MmJiNjBhNjI3MTFhMzYyOTA2MWJlOTI4NDNj
NjJlMDI5NjEyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0
b21hdGlvbi9TaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuY3BwCkBAIC0wLDAgKzEsMjcyIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNpbXVsYXRlZElucHV0
RGlzcGF0Y2hlci5oIgorCisjaW5jbHVkZSAiQXV0b21hdGlvblByb3RvY29sT2JqZWN0cy5oIgor
I2luY2x1ZGUgIldlYkF1dG9tYXRpb25TZXNzaW9uLmgiCisjaW5jbHVkZSAiV2ViQXV0b21hdGlv
blNlc3Npb25NYWNyb3MuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1NpbXVsYXRlZElucHV0
S2V5RnJhbWU6OlNpbXVsYXRlZElucHV0S2V5RnJhbWUoVmVjdG9yPFN0YXRlRW50cnk+JiYgZW50
cmllcykKKyAgICA6IHN0YXRlcyhXVEZNb3ZlKGVudHJpZXMpKQoreworfQorCitTZWNvbmRzIFNp
bXVsYXRlZElucHV0S2V5RnJhbWU6Om1heGltdW1EdXJhdGlvbigpIGNvbnN0Cit7CisgICAgLy8g
VGhlICJjb21wdXRlIHRoZSB0aWNrIGR1cmF0aW9uIiBhbGdvcml0aG0gKMKnMTcuNCBEaXNwYXRj
aGluZyBBY3Rpb25zKS4KKyAgICBTZWNvbmRzIHJlc3VsdDsKKyAgICBmb3IgKGF1dG8mIGVudHJ5
IDogc3RhdGVzKQorICAgICAgICByZXN1bHQgPSBzdGQ6Om1heChyZXN1bHQsIGVudHJ5LnNlY29u
ZC5kdXJhdGlvbi52YWx1ZV9vcihTZWNvbmRzKDApKSk7CisgICAgCisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKworU2ltdWxhdGVkSW5wdXRLZXlGcmFtZSBTaW11bGF0ZWRJbnB1dEtleUZyYW1lOjpr
ZXlGcmFtZUZyb21TdGF0ZU9mSW5wdXRTb3VyY2VzKEhhc2hTZXQ8UmVmPFNpbXVsYXRlZElucHV0
U291cmNlPj4mIGlucHV0U291cmNlcykKK3sKKyAgICAvLyBUaGUgY2xpZW50IG9mIHRoaXMgY2xh
c3MgaXMgcmVxdWlyZWQgdG8gaW50ZXJuIFNpbXVsYXRlZElucHV0U291cmNlIGluc3RhbmNlcyBp
ZiB0aGUgbGFzdCBzdGF0ZQorICAgIC8vIGZyb20gdGhlIHByZXZpb3VzIGNvbW1hbmQgc2hvdWxk
IGJlIHVzZWQgYXMgdGhlIGluaXRhbCBzdGF0ZSBmb3IgdGhlIG5leHQgY29tbWFuZC4gVGhpcyBp
cyB0aGUKKyAgICAvLyBjYXNlIGZvciBQZXJmb3JtIEFjdGlvbnMgYW5kIFJlbGVhc2UgQWN0aW9u
cywgYnV0IG5vdCBFbGVtZW50IENsaWNrIG9yIEVsZW1lbnQgU2VuZCBLZXlzLgorICAgIFZlY3Rv
cjxTaW11bGF0ZWRJbnB1dEtleUZyYW1lOjpTdGF0ZUVudHJ5PiBlbnRyaWVzOworICAgIGVudHJp
ZXMucmVzZXJ2ZUNhcGFjaXR5KGlucHV0U291cmNlcy5zaXplKCkpOworCisgICAgZm9yIChhdXRv
JiBpbnB1dFNvdXJjZSA6IGlucHV0U291cmNlcykKKyAgICAgICAgZW50cmllcy51bmNoZWNrZWRB
cHBlbmQoc3RkOjpwYWlyPFNpbXVsYXRlZElucHV0U291cmNlJiwgU2ltdWxhdGVkSW5wdXRTb3Vy
Y2VTdGF0ZT4geyBpbnB1dFNvdXJjZS5nZXQoKSwgaW5wdXRTb3VyY2UtPnN0YXRlIH0pOworCisg
ICAgcmV0dXJuIFNpbXVsYXRlZElucHV0S2V5RnJhbWUoV1RGTW92ZShlbnRyaWVzKSk7Cit9CisK
K1NpbXVsYXRlZElucHV0S2V5RnJhbWUgU2ltdWxhdGVkSW5wdXRLZXlGcmFtZTo6a2V5RnJhbWVU
b1Jlc2V0SW5wdXRTb3VyY2VzKEhhc2hTZXQ8UmVmPFNpbXVsYXRlZElucHV0U291cmNlPj4mIGlu
cHV0U291cmNlcykKK3sKKyAgICBWZWN0b3I8U2ltdWxhdGVkSW5wdXRLZXlGcmFtZTo6U3RhdGVF
bnRyeT4gZW50cmllczsKKyAgICBlbnRyaWVzLnJlc2VydmVDYXBhY2l0eShpbnB1dFNvdXJjZXMu
c2l6ZSgpKTsKKworICAgIGZvciAoYXV0byYgaW5wdXRTb3VyY2UgOiBpbnB1dFNvdXJjZXMpCisg
ICAgICAgIGVudHJpZXMudW5jaGVja2VkQXBwZW5kKHN0ZDo6cGFpcjxTaW11bGF0ZWRJbnB1dFNv
dXJjZSYsIFNpbXVsYXRlZElucHV0U291cmNlU3RhdGU+IHsgaW5wdXRTb3VyY2UuZ2V0KCksIFNp
bXVsYXRlZElucHV0U291cmNlU3RhdGU6OmVtcHR5U3RhdGUoKSB9KTsKKworICAgIHJldHVybiBT
aW11bGF0ZWRJbnB1dEtleUZyYW1lKFdURk1vdmUoZW50cmllcykpOworfQorICAgIAorU2ltdWxh
dGVkSW5wdXREaXNwYXRjaGVyOjpTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIoV2ViUGFnZVByb3h5
JiBwYWdlLCBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OkNsaWVudCYgY2xpZW50KQorICAgIDog
bV9wYWdlKHBhZ2UpCisgICAgLCBtX2NsaWVudChjbGllbnQpCisgICAgLCBtX2tleUZyYW1lVHJh
bnNpdGlvbkR1cmF0aW9uVGltZXIoUnVuTG9vcDo6Y3VycmVudCgpLCB0aGlzLCAmU2ltdWxhdGVk
SW5wdXREaXNwYXRjaGVyOjprZXlGcmFtZVRyYW5zaXRpb25EdXJhdGlvblRpbWVyRmlyZWQpCit7
Cit9CisKK1NpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6flNpbXVsYXRlZElucHV0RGlzcGF0Y2hl
cigpCit7CisgICAgQVNTRVJUKCFtX3J1bkNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICBBU1NFUlQo
IW1fa2V5RnJhbWVUcmFuc2l0aW9uRHVyYXRpb25UaW1lci5pc0FjdGl2ZSgpKTsKK30KKworYm9v
bCBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OmlzQWN0aXZlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gISFtX3J1bkNvbXBsZXRpb25IYW5kbGVyOworfQorCit2b2lkIFNpbXVsYXRlZElucHV0RGlz
cGF0Y2hlcjo6a2V5RnJhbWVUcmFuc2l0aW9uRHVyYXRpb25UaW1lckZpcmVkKCkKK3sKKyAgICBB
U1NFUlQobV9rZXlGcmFtZVRyYW5zaXRpb25Db21wbGV0aW9uSGFuZGxlcik7CisKKyAgICBtX2tl
eUZyYW1lVHJhbnNpdGlvbkR1cmF0aW9uVGltZXIuc3RvcCgpOworCisgICAgaWYgKGlzS2V5RnJh
bWVUcmFuc2l0aW9uQ29tcGxldGUoKSkgeworICAgICAgICBhdXRvIGZpbmlzaCA9IHN0ZDo6ZXhj
aGFuZ2UobV9rZXlGcmFtZVRyYW5zaXRpb25Db21wbGV0aW9uSGFuZGxlciwgbnVsbHB0cik7Cisg
ICAgICAgIGZpbmlzaChzdGQ6Om51bGxvcHQpOworICAgIH0KK30KKworYm9vbCBTaW11bGF0ZWRJ
bnB1dERpc3BhdGNoZXI6OmlzS2V5RnJhbWVUcmFuc2l0aW9uQ29tcGxldGUoKSBjb25zdAorewor
ICAgIEFTU0VSVChtX2tleWZyYW1lSW5kZXggPCBtX2tleWZyYW1lcy5zaXplKCkpOworCisgICAg
aWYgKG1faW5wdXRTb3VyY2VTdGF0ZUluZGV4IDwgbV9rZXlmcmFtZXNbbV9rZXlmcmFtZUluZGV4
XS5zdGF0ZXMuc2l6ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobV9rZXlG
cmFtZVRyYW5zaXRpb25EdXJhdGlvblRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFNpbXVsYXRlZElucHV0RGlzcGF0
Y2hlcjo6dHJhbnNpdGlvblRvTmV4dEtleUZyYW1lKCkKK3sKKyAgICArK21fa2V5ZnJhbWVJbmRl
eDsKKyAgICBpZiAobV9rZXlmcmFtZUluZGV4ID09IG1fa2V5ZnJhbWVzLnNpemUoKSkgeworICAg
ICAgICBmaW5pc2hEaXNwYXRjaGluZyhzdGQ6Om51bGxvcHQpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgdHJhbnNpdGlvbkJldHdlZW5LZXlGcmFtZXMobV9rZXlmcmFtZXNbbV9rZXlm
cmFtZUluZGV4IC0gMV0sIG1fa2V5ZnJhbWVzW21fa2V5ZnJhbWVJbmRleF0sIFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKHN0ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1h
bmRFcnJvcj4gZXJyb3IpIHsKKyAgICAgICAgaWYgKGVycm9yKSB7CisgICAgICAgICAgICBmaW5p
c2hEaXNwYXRjaGluZyhlcnJvcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICB0cmFuc2l0aW9uVG9OZXh0S2V5RnJhbWUoKTsKKyAgICB9KTsKK30KKwordm9pZCBT
aW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OnRyYW5zaXRpb25Ub05leHRJbnB1dFNvdXJjZVN0YXRl
KCkKK3sKKyAgICBpZiAoaXNLZXlGcmFtZVRyYW5zaXRpb25Db21wbGV0ZSgpKSB7CisgICAgICAg
IGF1dG8gZmluaXNoID0gc3RkOjpleGNoYW5nZShtX2tleUZyYW1lVHJhbnNpdGlvbkNvbXBsZXRp
b25IYW5kbGVyLCBudWxscHRyKTsKKyAgICAgICAgZmluaXNoKHN0ZDo6bnVsbG9wdCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBJbiB0aGlzIGNhc2UsIHRyYW5zaXRpb25zIGFy
ZSBkb25lIGJ1dCB3ZSBuZWVkIHRvIHdhaXQgZm9yIHRoZSB0aWNrIHRpbWVyLgorICAgIGlmICht
X2lucHV0U291cmNlU3RhdGVJbmRleCA9PSBtX2tleWZyYW1lc1ttX2tleWZyYW1lSW5kZXhdLnN0
YXRlcy5zaXplKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8mIG5leHRLZXlGcmFtZSA9
IG1fa2V5ZnJhbWVzW21fa2V5ZnJhbWVJbmRleF07CisgICAgYXV0byYgcG9zdFN0YXRlRW50cnkg
PSBuZXh0S2V5RnJhbWUuc3RhdGVzW21faW5wdXRTb3VyY2VTdGF0ZUluZGV4XTsKKyAgICBTaW11
bGF0ZWRJbnB1dFNvdXJjZSYgaW5wdXRTb3VyY2UgPSBwb3N0U3RhdGVFbnRyeS5maXJzdDsKKwor
ICAgIHRyYW5zaXRpb25JbnB1dFNvdXJjZVRvU3RhdGUoaW5wdXRTb3VyY2UsIHBvc3RTdGF0ZUVu
dHJ5LnNlY29uZCwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oc3RkOjpv
cHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPiBlcnJvcikgeworICAgICAgICBpZiAoZXJy
b3IpIHsKKyAgICAgICAgICAgIGF1dG8gZmluaXNoID0gc3RkOjpleGNoYW5nZShtX2tleUZyYW1l
VHJhbnNpdGlvbkNvbXBsZXRpb25IYW5kbGVyLCBudWxscHRyKTsKKyAgICAgICAgICAgIGZpbmlz
aChlcnJvcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBQ
ZXJmb3JtIHN0YXRlIHRyYW5zaXRpb25zIGluIHRoZSBvcmRlciBzcGVjaWZpZWQgYnkgdGhlIGN1
cnJlbnRLZXlGcmFtZS4KKyAgICAgICAgKyttX2lucHV0U291cmNlU3RhdGVJbmRleDsKKworICAg
ICAgICB0cmFuc2l0aW9uVG9OZXh0SW5wdXRTb3VyY2VTdGF0ZSgpOworICAgIH0pOworfQorCit2
b2lkIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6dHJhbnNpdGlvbkJldHdlZW5LZXlGcmFtZXMo
Y29uc3QgU2ltdWxhdGVkSW5wdXRLZXlGcmFtZSYgYSwgY29uc3QgU2ltdWxhdGVkSW5wdXRLZXlG
cmFtZSYgYiwgQXV0b21hdGlvbkNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIp
Cit7CisgICAgbV9pbnB1dFNvdXJjZVN0YXRlSW5kZXggPSAwOworCisgICAgLy8gVGhlICJkaXNw
YXRjaCB0aWNrIGFjdGlvbnMiIGFsZ29yaXRobSAowqcxNy40IERpc3BhdGNoaW5nIEFjdGlvbnMp
LgorICAgIG1fa2V5RnJhbWVUcmFuc2l0aW9uQ29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKTsKKyAgICBtX2tleUZyYW1lVHJhbnNpdGlvbkR1cmF0aW9uVGltZXIu
c3RhcnRPbmVTaG90KGIubWF4aW11bUR1cmF0aW9uKCkpOworCisgICAgdHJhbnNpdGlvblRvTmV4
dElucHV0U291cmNlU3RhdGUoKTsKK30KKwordm9pZCBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6
OnRyYW5zaXRpb25JbnB1dFNvdXJjZVRvU3RhdGUoU2ltdWxhdGVkSW5wdXRTb3VyY2UmIGlucHV0
U291cmNlLCBjb25zdCBTaW11bGF0ZWRJbnB1dFNvdXJjZVN0YXRlJiBuZXdTdGF0ZSwgQXV0b21h
dGlvbkNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgLy8gTWFr
ZSBjYXNlcyBhbmQgY29uZGl0aW9uYWxzIG1vcmUgcmVhZGFibGUgYnkgYWxpYXNpbmcgcHJlL3Bv
c3Qgc3RhdGVzIGFzICdhJyBhbmQgJ2InLgorICAgIFNpbXVsYXRlZElucHV0U291cmNlU3RhdGUg
YSA9IGlucHV0U291cmNlLnN0YXRlOworICAgIFNpbXVsYXRlZElucHV0U291cmNlU3RhdGUgYiA9
IG5ld1N0YXRlOworCisgICAgQXV0b21hdGlvbkNvbXBsZXRpb25IYW5kbGVyIGV2ZW50RGlzcGF0
Y2hGaW5pc2hlZCA9IFsmaW5wdXRTb3VyY2UsICZuZXdTdGF0ZSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oc3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29t
bWFuZEVycm9yPiBlcnJvcikgeworICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKGVycm9yKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIGlucHV0U291cmNlLnN0YXRlID0gbmV3U3RhdGU7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7CisgICAgfTsKKworICAgIHN3aXRjaCAoaW5wdXRTb3Vy
Y2UudHlwZSkgeworICAgIGNhc2UgU2ltdWxhdGVkSW5wdXRTb3VyY2U6OlR5cGU6Ok51bGw6Cisg
ICAgICAgIC8vIFRoZSBtYXhpbXVtIGR1cmF0aW9uIGlzIGhhbmRsZWQgYXQgdGhlIGtleWZyYW1l
IGxldmVsIGJ5IG1fa2V5RnJhbWVUcmFuc2l0aW9uRHVyYXRpb25UaW1lci4KKyAgICAgICAgZXZl
bnREaXNwYXRjaEZpbmlzaGVkKHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgU2ltdWxhdGVkSW5wdXRTb3VyY2U6OlR5cGU6Ok1vdXNlOiB7CisgICAgICAgIC8vIFRoZSAi
ZGlzcGF0Y2ggYSBwb2ludGVye0Rvd24sVXAsTW92ZX0gYWN0aW9uIiBhbGdvcml0aG1zICjCpzE3
LjQgRGlzcGF0Y2hpbmcgQWN0aW9ucykuCisgICAgICAgIGlmICghYS5wcmVzc2VkTW91c2VCdXR0
b24gJiYgYi5wcmVzc2VkTW91c2VCdXR0b24pCisgICAgICAgICAgICBtX2NsaWVudC5zaW11bGF0
ZU1vdXNlSW50ZXJhY3Rpb24obV9wYWdlLCBNb3VzZUludGVyYWN0aW9uOjpEb3duLCBiLnByZXNz
ZWRNb3VzZUJ1dHRvbi52YWx1ZSgpLCBiLmxvY2F0aW9uLnZhbHVlKCksIFdURk1vdmUoZXZlbnRE
aXNwYXRjaEZpbmlzaGVkKSk7CisgICAgICAgIGVsc2UgaWYgKGEucHJlc3NlZE1vdXNlQnV0dG9u
ICYmICFiLnByZXNzZWRNb3VzZUJ1dHRvbikKKyAgICAgICAgICAgIG1fY2xpZW50LnNpbXVsYXRl
TW91c2VJbnRlcmFjdGlvbihtX3BhZ2UsIE1vdXNlSW50ZXJhY3Rpb246OlVwLCBhLnByZXNzZWRN
b3VzZUJ1dHRvbi52YWx1ZSgpLCBiLmxvY2F0aW9uLnZhbHVlKCksIFdURk1vdmUoZXZlbnREaXNw
YXRjaEZpbmlzaGVkKSk7CisgICAgICAgIGVsc2UgaWYgKGEubG9jYXRpb24gIT0gYi5sb2NhdGlv
bikgeworICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgZG9lcyBub3QgaW50ZXJwb2xhdGUgbW91
c2Vtb3ZlcyBwZXIgdGhlICJwZXJmb3JtIGEgcG9pbnRlciBtb3ZlIiBhbGdvcml0aG0gKMKnMTcu
NCBEaXNwYXRjaGluZyBBY3Rpb25zKS4KKyAgICAgICAgICAgIG1fY2xpZW50LnNpbXVsYXRlTW91
c2VJbnRlcmFjdGlvbihtX3BhZ2UsIE1vdXNlSW50ZXJhY3Rpb246Ok1vdmUsIGIucHJlc3NlZE1v
dXNlQnV0dG9uLnZhbHVlX29yKE1vdXNlQnV0dG9uOjpOb0J1dHRvbiksIGIubG9jYXRpb24udmFs
dWUoKSwgV1RGTW92ZShldmVudERpc3BhdGNoRmluaXNoZWQpKTsKKyAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICBldmVudERpc3BhdGNoRmluaXNoZWQoc3RkOjpudWxsb3B0KTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorICAgIGNhc2UgU2ltdWxhdGVkSW5wdXRTb3VyY2U6OlR5cGU6OktleWJv
YXJkOgorICAgICAgICAvLyBUaGUgImRpc3BhdGNoIGEga2V5e0Rvd24sVXB9IGFjdGlvbiIgYWxn
b3JpdGhtcyAowqcxNy40IERpc3BhdGNoaW5nIEFjdGlvbnMpLgorICAgICAgICBpZiAoKCFhLnBy
ZXNzZWRDaGFyS2V5ICYmIGIucHJlc3NlZENoYXJLZXkpIHx8ICghYS5wcmVzc2VkVmlydHVhbEtl
eSAmJiBiLnByZXNzZWRWaXJ0dWFsS2V5KSkKKyAgICAgICAgICAgIG1fY2xpZW50LnNpbXVsYXRl
S2V5Ym9hcmRJbnRlcmFjdGlvbihtX3BhZ2UsIEtleWJvYXJkSW50ZXJhY3Rpb246OktleVByZXNz
LCBiLnByZXNzZWRWaXJ0dWFsS2V5LCBiLnByZXNzZWRDaGFyS2V5LCBXVEZNb3ZlKGV2ZW50RGlz
cGF0Y2hGaW5pc2hlZCkpOworICAgICAgICBlbHNlIGlmICgoYS5wcmVzc2VkQ2hhcktleSAmJiAh
Yi5wcmVzc2VkQ2hhcktleSkgfHwgKGEucHJlc3NlZFZpcnR1YWxLZXkgJiYgIWIucHJlc3NlZFZp
cnR1YWxLZXkpKQorICAgICAgICAgICAgbV9jbGllbnQuc2ltdWxhdGVLZXlib2FyZEludGVyYWN0
aW9uKG1fcGFnZSwgS2V5Ym9hcmRJbnRlcmFjdGlvbjo6S2V5UmVsZWFzZSwgYS5wcmVzc2VkVmly
dHVhbEtleSwgYS5wcmVzc2VkQ2hhcktleSwgV1RGTW92ZShldmVudERpc3BhdGNoRmluaXNoZWQp
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZXZlbnREaXNwYXRjaEZpbmlzaGVkKHN0ZDo6
bnVsbG9wdCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2ltdWxhdGVkSW5wdXRTb3VyY2U6
OlR5cGU6OlRvdWNoOgorICAgICAgICAvLyBOb3Qgc3VwcG9ydGVkIHlldC4KKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGV2ZW50RGlzcGF0Y2hGaW5pc2hlZChBVVRPTUFU
SU9OX0NPTU1BTkRfRVJST1JfV0lUSF9OQU1FKE5vdEltcGxlbWVudGVkKSk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KK30KKwordm9pZCBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OnJ1bihWZWN0
b3I8U2ltdWxhdGVkSW5wdXRLZXlGcmFtZT4mJiBrZXlGcmFtZXMsIEhhc2hTZXQ8UmVmPFNpbXVs
YXRlZElucHV0U291cmNlPj4mIGlucHV0U291cmNlcywgQXV0b21hdGlvbkNvbXBsZXRpb25IYW5k
bGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUKCFpc0FjdGl2ZSgpKTsKKyAg
ICBpZiAoaXNBY3RpdmUoKSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihBVVRPTUFUSU9O
X0NPTU1BTkRfRVJST1JfV0lUSF9OQU1FKEludGVybmFsRXJyb3IpKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIG1fcnVuQ29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKTsKKyAgICBmb3IgKGNvbnN0IFJlZjxTaW11bGF0ZWRJbnB1dFNvdXJjZT4mIGlu
cHV0U291cmNlIDogaW5wdXRTb3VyY2VzKQorICAgICAgICBtX2lucHV0U291cmNlcy5hZGQoaW5w
dXRTb3VyY2UuY29weVJlZigpKTsKKworICAgIC8vIFRoZSAiZGlzcGF0Y2ggYWN0aW9ucyIgYWxn
b3JpdGhtICjCpzE3LjQgRGlzcGF0Y2hpbmcgQWN0aW9ucykuCisKKyAgICBtX2tleWZyYW1lcy5y
ZXNlcnZlQ2FwYWNpdHkoa2V5RnJhbWVzLnNpemUoKSArIDEpOworICAgIG1fa2V5ZnJhbWVzLmFw
cGVuZChTaW11bGF0ZWRJbnB1dEtleUZyYW1lOjprZXlGcmFtZUZyb21TdGF0ZU9mSW5wdXRTb3Vy
Y2VzKG1faW5wdXRTb3VyY2VzKSk7CisgICAgbV9rZXlmcmFtZXMuYXBwZW5kVmVjdG9yKFdURk1v
dmUoa2V5RnJhbWVzKSk7CisKKyAgICB0cmFuc2l0aW9uVG9OZXh0S2V5RnJhbWUoKTsKK30KKwor
dm9pZCBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OmNhbmNlbCgpCit7CisgICAgLy8gSWYgd2Ug
d2VyZSB3YWl0aW5nIGZvciBtX2NsaWVudCB0byBmaW5pc2ggYW4gaW50ZXJhY3Rpb24gYW5kIHRo
ZSBpbnRlcmFjdGlvbiBoYWQgYW4gZXJyb3IsCisgICAgLy8gdGhlbiB0aGUgcmVzdCBvZiB0aGUg
YXN5bmMgY2hhaW4gd2lsbCBoYXZlIGJlZW4gdG9ybiBkb3duLiBJZiB3ZSBhcmUganVzdCB3YWl0
aW5nIG9uIGEKKyAgICAvLyBkaXNwYXRjaCB0aW1lciwgdGhlbiB0aGlzIHdpbGwgY2FuY2VsIHRo
ZSB0aW1lciBhbmQgY2xlYXIKKworICAgIGlmIChpc0FjdGl2ZSgpKQorICAgICAgICBmaW5pc2hE
aXNwYXRjaGluZyhBVVRPTUFUSU9OX0NPTU1BTkRfRVJST1JfV0lUSF9OQU1FKEludGVybmFsRXJy
b3IpKTsKK30KKwordm9pZCBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OmZpbmlzaERpc3BhdGNo
aW5nKHN0ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4gZXJyb3IpCit7CisgICAg
bV9rZXlGcmFtZVRyYW5zaXRpb25EdXJhdGlvblRpbWVyLnN0b3AoKTsKKworICAgIGF1dG8gZmlu
aXNoID0gc3RkOjpleGNoYW5nZShtX3J1bkNvbXBsZXRpb25IYW5kbGVyLCBudWxscHRyKTsKKyAg
ICBtX2tleWZyYW1lcy5jbGVhcigpOworICAgIG1faW5wdXRTb3VyY2VzLmNsZWFyKCk7CisgICAg
bV9rZXlmcmFtZUluZGV4ID0gMDsKKyAgICBtX2lucHV0U291cmNlU3RhdGVJbmRleCA9IDA7CisK
KyAgICBmaW5pc2goZXJyb3IpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJraXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vU2ltdWxhdGVkSW5wdXREaXNw
YXRjaGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1NpbXVsYXRlZElu
cHV0RGlzcGF0Y2hlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2MDJjMmMyMjQwYmVhMWMwZmZlMGU5MGZhZDk4
ODFlMWQ1NGNiMjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
dXRvbWF0aW9uL1NpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5oCkBAIC0wLDAgKzEsMTYwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJXZWJFdmVudC5oIgorI2luY2x1
ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Cisj
aW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNp
bmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUgPHd0Zi9TZWNvbmRzLmg+CisjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1l
c3BhY2UgSW5zcGVjdG9yIHsgbmFtZXNwYWNlIFByb3RvY29sIHsgbmFtZXNwYWNlIEF1dG9tYXRp
b24geworZW51bSBjbGFzcyBFcnJvck1lc3NhZ2U7CitlbnVtIGNsYXNzIEtleWJvYXJkSW50ZXJh
Y3Rpb25UeXBlOworZW51bSBjbGFzcyBNb3VzZUludGVyYWN0aW9uOworZW51bSBjbGFzcyBWaXJ0
dWFsS2V5OworfSB9IH0KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIEF1dG9tYXRpb25D
b21tYW5kRXJyb3I7Cit1c2luZyBBdXRvbWF0aW9uQ29tcGxldGlvbkhhbmRsZXIgPSBXVEY6OkNv
bXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9y
Pik+OworCitjbGFzcyBXZWJQYWdlUHJveHk7CisKK3VzaW5nIEtleWJvYXJkSW50ZXJhY3Rpb24g
PSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpLZXlib2FyZEludGVyYWN0aW9uVHlw
ZTsKK3VzaW5nIFZpcnR1YWxLZXkgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpW
aXJ0dWFsS2V5OwordXNpbmcgQ2hhcktleSA9IGNoYXI7IC8vIEZvciBXZWJEcml2ZXIsIHRoaXMg
b25seSBuZWVkcyB0byBzdXBwb3J0IEFTQ0lJIGNoYXJhY3RlcnMgb24gMTAyLWtleSBrZXlib2Fy
ZC4KK3VzaW5nIE1vdXNlQnV0dG9uID0gV2ViTW91c2VFdmVudDo6QnV0dG9uOwordXNpbmcgTW91
c2VJbnRlcmFjdGlvbiA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlSW50
ZXJhY3Rpb247CisKK3N0cnVjdCBTaW11bGF0ZWRJbnB1dFNvdXJjZVN0YXRlIHsKKyAgICBzdGQ6
Om9wdGlvbmFsPENoYXJLZXk+IHByZXNzZWRDaGFyS2V5OworICAgIHN0ZDo6b3B0aW9uYWw8Vmly
dHVhbEtleT4gcHJlc3NlZFZpcnR1YWxLZXk7CisgICAgc3RkOjpvcHRpb25hbDxNb3VzZUJ1dHRv
bj4gcHJlc3NlZE1vdXNlQnV0dG9uOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SW50UG9p
bnQ+IGxvY2F0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gZHVyYXRpb247CisKKyAg
ICBzdGF0aWMgU2ltdWxhdGVkSW5wdXRTb3VyY2VTdGF0ZSBlbXB0eVN0YXRlKCkgeyByZXR1cm4g
U2ltdWxhdGVkSW5wdXRTb3VyY2VTdGF0ZSgpOyB9Cit9OworCitzdHJ1Y3QgU2ltdWxhdGVkSW5w
dXRTb3VyY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxTaW11bGF0ZWRJbnB1dFNvdXJjZT4geworcHVi
bGljOgorICAgIGVudW0gY2xhc3MgVHlwZSB7CisgICAgICAgIE51bGwsIC8vIFVzZWQgdG8gaW5k
dWNlIGEgbWluaW11bSBkdXJhdGlvbi4KKyAgICAgICAgS2V5Ym9hcmQsCisgICAgICAgIE1vdXNl
LAorICAgICAgICBUb3VjaCwKKyAgICB9OworCisgICAgVHlwZSB0eXBlOworCisgICAgLy8gVGhl
IGxhc3Qgc3RhdGUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgaW5wdXQgc291cmNlLgorICAgIFNpbXVs
YXRlZElucHV0U291cmNlU3RhdGUgc3RhdGU7CisKKyAgICBzdGF0aWMgUmVmPFNpbXVsYXRlZElu
cHV0U291cmNlPiBjcmVhdGUoVHlwZSB0eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU2ltdWxhdGVkSW5wdXRTb3VyY2UodHlwZSkpOworICAgIH0KKworcHJpdmF0ZToK
KyAgICBTaW11bGF0ZWRJbnB1dFNvdXJjZShUeXBlIHR5cGUpCisgICAgICAgIDogdHlwZSh0eXBl
KQorICAgICAgICAsIHN0YXRlKFNpbXVsYXRlZElucHV0U291cmNlU3RhdGU6OmVtcHR5U3RhdGUo
KSkKKyAgICB7IH0KK307CisKK3N0cnVjdCBTaW11bGF0ZWRJbnB1dEtleUZyYW1lIHsKK3B1Ymxp
YzoKKyAgICB1c2luZyBTdGF0ZUVudHJ5ID0gc3RkOjpwYWlyPFNpbXVsYXRlZElucHV0U291cmNl
JiwgU2ltdWxhdGVkSW5wdXRTb3VyY2VTdGF0ZT47CisKKyAgICBleHBsaWNpdCBTaW11bGF0ZWRJ
bnB1dEtleUZyYW1lKFZlY3RvcjxTdGF0ZUVudHJ5PiYmKTsKKyAgICBTZWNvbmRzIG1heGltdW1E
dXJhdGlvbigpIGNvbnN0OworCisgICAgc3RhdGljIFNpbXVsYXRlZElucHV0S2V5RnJhbWUga2V5
RnJhbWVGcm9tU3RhdGVPZklucHV0U291cmNlcyhIYXNoU2V0PFJlZjxTaW11bGF0ZWRJbnB1dFNv
dXJjZT4+Jik7CisgICAgc3RhdGljIFNpbXVsYXRlZElucHV0S2V5RnJhbWUga2V5RnJhbWVUb1Jl
c2V0SW5wdXRTb3VyY2VzKEhhc2hTZXQ8UmVmPFNpbXVsYXRlZElucHV0U291cmNlPj4mKTsKKwor
ICAgIFZlY3RvcjxTdGF0ZUVudHJ5PiBzdGF0ZXM7Cit9OworCitjbGFzcyBTaW11bGF0ZWRJbnB1
dERpc3BhdGNoZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI+
IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIpOwor
cHVibGljOgorICAgIGNsYXNzIENsaWVudCB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFs
IH5DbGllbnQoKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIHNpbXVsYXRlTW91c2VJbnRlcmFj
dGlvbihXZWJQYWdlUHJveHkmLCBNb3VzZUludGVyYWN0aW9uLCBXZWJNb3VzZUV2ZW50OjpCdXR0
b24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBsb2NhdGlvbkluVmlldywgQXV0b21hdGlvbkNv
bXBsZXRpb25IYW5kbGVyJiYpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHNpbXVsYXRlS2V5
Ym9hcmRJbnRlcmFjdGlvbihXZWJQYWdlUHJveHkmLCBLZXlib2FyZEludGVyYWN0aW9uLCBzdGQ6
Om9wdGlvbmFsPFZpcnR1YWxLZXk+LCBzdGQ6Om9wdGlvbmFsPENoYXJLZXk+LCBBdXRvbWF0aW9u
Q29tcGxldGlvbkhhbmRsZXImJikgPSAwOworICAgIH07CisKKyAgICBzdGF0aWMgUmVmPFNpbXVs
YXRlZElucHV0RGlzcGF0Y2hlcj4gY3JlYXRlKFdlYlBhZ2VQcm94eSYgcGFnZSwgU2ltdWxhdGVk
SW5wdXREaXNwYXRjaGVyOjpDbGllbnQmIGNsaWVudCkKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcihwYWdlLCBjbGllbnQpKTsKKyAg
ICB9CisKKyAgICB+U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyKCk7CisKKyAgICB2b2lkIHJ1bihW
ZWN0b3I8U2ltdWxhdGVkSW5wdXRLZXlGcmFtZT4mJiBrZXlGcmFtZXMsIEhhc2hTZXQ8UmVmPFNp
bXVsYXRlZElucHV0U291cmNlPj4mIGlucHV0U291cmNlcywgQXV0b21hdGlvbkNvbXBsZXRpb25I
YW5kbGVyJiYpOworICAgIHZvaWQgY2FuY2VsKCk7CisKKyAgICBib29sIGlzQWN0aXZlKCkgY29u
c3Q7CisKK3ByaXZhdGU6CisgICAgU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyKFdlYlBhZ2VQcm94
eSYsIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6Q2xpZW50Jik7CisKKyAgICB2b2lkIHRyYW5z
aXRpb25Ub05leHRLZXlGcmFtZSgpOworICAgIHZvaWQgdHJhbnNpdGlvbkJldHdlZW5LZXlGcmFt
ZXMoY29uc3QgU2ltdWxhdGVkSW5wdXRLZXlGcmFtZSYsIGNvbnN0IFNpbXVsYXRlZElucHV0S2V5
RnJhbWUmLCBBdXRvbWF0aW9uQ29tcGxldGlvbkhhbmRsZXImJik7CisKKyAgICB2b2lkIHRyYW5z
aXRpb25Ub05leHRJbnB1dFNvdXJjZVN0YXRlKCk7CisgICAgdm9pZCB0cmFuc2l0aW9uSW5wdXRT
b3VyY2VUb1N0YXRlKFNpbXVsYXRlZElucHV0U291cmNlJiwgY29uc3QgU2ltdWxhdGVkSW5wdXRT
b3VyY2VTdGF0ZSYgbmV3U3RhdGUsIEF1dG9tYXRpb25Db21wbGV0aW9uSGFuZGxlciYmKTsKKyAg
ICB2b2lkIGZpbmlzaERpc3BhdGNoaW5nKHN0ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRF
cnJvcj4pOworCisgICAgdm9pZCBrZXlGcmFtZVRyYW5zaXRpb25EdXJhdGlvblRpbWVyRmlyZWQo
KTsKKyAgICBib29sIGlzS2V5RnJhbWVUcmFuc2l0aW9uQ29tcGxldGUoKSBjb25zdDsKKworICAg
IFdlYlBhZ2VQcm94eSYgbV9wYWdlOworICAgIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6Q2xp
ZW50JiBtX2NsaWVudDsKKworICAgIEF1dG9tYXRpb25Db21wbGV0aW9uSGFuZGxlciBtX3J1bkNv
bXBsZXRpb25IYW5kbGVyOworICAgIEF1dG9tYXRpb25Db21wbGV0aW9uSGFuZGxlciBtX2tleUZy
YW1lVHJhbnNpdGlvbkNvbXBsZXRpb25IYW5kbGVyOworICAgIFJ1bkxvb3A6OlRpbWVyPFNpbXVs
YXRlZElucHV0RGlzcGF0Y2hlcj4gbV9rZXlGcmFtZVRyYW5zaXRpb25EdXJhdGlvblRpbWVyOwor
CisgICAgVmVjdG9yPFNpbXVsYXRlZElucHV0S2V5RnJhbWU+IG1fa2V5ZnJhbWVzOworICAgIEhh
c2hTZXQ8UmVmPFNpbXVsYXRlZElucHV0U291cmNlPj4gbV9pbnB1dFNvdXJjZXM7CisKKyAgICAv
LyBUaGUgcG9zaXRpb24gd2l0aGluIG1fa2V5ZnJhbWVzLgorICAgIHVuc2lnbmVkIG1fa2V5ZnJh
bWVJbmRleCB7IDAgfTsKKworICAgIC8vIFRoZSBwb3NpdGlvbiB3aXRoaW4gdGhlIGlucHV0IHNv
dXJjZSBzdGF0ZSB2ZWN0b3IgYXQgbV9rZXlmcmFtZXNbbV9rZXlmcmFtZUluZGV4XS4KKyAgICAv
LyBFdmVudHMgdGhhdCByZWZsZWN0IGlucHV0IHNvdXJjZSBzdGF0ZSB0cmFuc2l0aW9ucyBhcmUg
ZGlzcGF0Y2hlZCBzZXJpYWxseSBiYXNlZCBvbiB0aGlzIG9yZGVyLgorICAgIHVuc2lnbmVkIG1f
aW5wdXRTb3VyY2VTdGF0ZUluZGV4IHsgMCB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9t
YXRpb25TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2Vi
QXV0b21hdGlvblNlc3Npb24uY3BwCmluZGV4IGY1YjdkMzcxODI1NTBhY2QzNDFlYTgxMDJjZjAw
ZDAyNWI0MzhiMTIuLjFlOWMzOWRiNzcyMWFjYzZjYmQwNDZiMWYxNTg1NjM3ZjE5Y2Q1ZDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlv
blNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2Vi
QXV0b21hdGlvblNlc3Npb24uY3BwCkBAIC03Niw2ICs3NiwxMCBAQCBXZWJBdXRvbWF0aW9uU2Vz
c2lvbjo6V2ViQXV0b21hdGlvblNlc3Npb24oKQogICAgICwgbV9kb21haW5Ob3RpZmllcihzdGQ6
Om1ha2VfdW5pcXVlPEF1dG9tYXRpb25Gcm9udGVuZERpc3BhdGNoZXI+KG1fZnJvbnRlbmRSb3V0
ZXIpKQogICAgICwgbV9sb2FkVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmV2ViQXV0b21h
dGlvblNlc3Npb246OmxvYWRUaW1lckZpcmVkKQogeworICAgIC8vIFNldCB1cCBjYW5vbmljYWwg
aW5wdXQgc291cmNlcyB0byBiZSB1c2VkIGZvciAncGVyZm9ybUludGVyYWN0aW9uU2VxdWVuY2Un
IGFuZCAnY2FuY2VsSW50ZXJhY3Rpb25TZXF1ZW5jZScuCisgICAgbV9pbnB1dFNvdXJjZXMuYWRk
KFNpbXVsYXRlZElucHV0U291cmNlOjpjcmVhdGUoU2ltdWxhdGVkSW5wdXRTb3VyY2U6OlR5cGU6
Ok1vdXNlKSk7CisgICAgbV9pbnB1dFNvdXJjZXMuYWRkKFNpbXVsYXRlZElucHV0U291cmNlOjpj
cmVhdGUoU2ltdWxhdGVkSW5wdXRTb3VyY2U6OlR5cGU6OktleWJvYXJkKSk7CisgICAgbV9pbnB1
dFNvdXJjZXMuYWRkKFNpbXVsYXRlZElucHV0U291cmNlOjpjcmVhdGUoU2ltdWxhdGVkSW5wdXRT
b3VyY2U6OlR5cGU6Ok51bGwpKTsKIH0KIAogV2ViQXV0b21hdGlvblNlc3Npb246On5XZWJBdXRv
bWF0aW9uU2Vzc2lvbigpCkBAIC03MjMsMjggKzcyNywzMiBAQCB2b2lkIFdlYkF1dG9tYXRpb25T
ZXNzaW9uOjppbnNwZWN0b3JGcm9udGVuZExvYWRlZChjb25zdCBXZWJQYWdlUHJveHkmIHBhZ2Up
CiAKIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246Om1vdXNlRXZlbnRzRmx1c2hlZEZvclBhZ2Uo
Y29uc3QgV2ViUGFnZVByb3h5JiBwYWdlKQogewotICAgIGlmIChhdXRvIGNhbGxiYWNrID0gbV9w
ZW5kaW5nTW91c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS50YWtlKHBhZ2UucGFnZUlE
KCkpKSB7Ci0gICAgICAgIGlmIChtX3BlbmRpbmdNb3VzZUV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQ
ZXJQYWdlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIG1fc2ltdWxhdGluZ1VzZXJJbnRlcmFjdGlv
biA9IGZhbHNlOwotCisgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBtX3BlbmRpbmdNb3VzZUV2ZW50
c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlLnRha2UocGFnZS5wYWdlSUQoKSkpCiAgICAgICAgIGNh
bGxiYWNrKHN0ZDo6bnVsbG9wdCk7Ci0gICAgfQogfQogCiB2b2lkIFdlYkF1dG9tYXRpb25TZXNz
aW9uOjprZXlib2FyZEV2ZW50c0ZsdXNoZWRGb3JQYWdlKGNvbnN0IFdlYlBhZ2VQcm94eSYgcGFn
ZSkKIHsKLSAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1fcGVuZGluZ0tleWJvYXJkRXZlbnRzRmx1
c2hlZENhbGxiYWNrc1BlclBhZ2UudGFrZShwYWdlLnBhZ2VJRCgpKSkgewotICAgICAgICBpZiAo
bV9wZW5kaW5nS2V5Ym9hcmRFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS5pc0VtcHR5KCkp
Ci0gICAgICAgICAgICBtX3NpbXVsYXRpbmdVc2VySW50ZXJhY3Rpb24gPSBmYWxzZTsKLQorICAg
IGlmIChhdXRvIGNhbGxiYWNrID0gbV9wZW5kaW5nS2V5Ym9hcmRFdmVudHNGbHVzaGVkQ2FsbGJh
Y2tzUGVyUGFnZS50YWtlKHBhZ2UucGFnZUlEKCkpKQogICAgICAgICBjYWxsYmFjayhzdGQ6Om51
bGxvcHQpOwotICAgIH0KIH0KIAogdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6d2lsbENsb3Nl
UGFnZShjb25zdCBXZWJQYWdlUHJveHkmIHBhZ2UpCiB7CiAgICAgU3RyaW5nIGhhbmRsZSA9IGhh
bmRsZUZvcldlYlBhZ2VQcm94eShwYWdlKTsKICAgICBtX2RvbWFpbk5vdGlmaWVyLT5icm93c2lu
Z0NvbnRleHRDbGVhcmVkKGhhbmRsZSk7CisKKyAgICAvLyBDYW5jZWwgcGVuZGluZyBpbnRlcmFj
dGlvbnMgb24gdGhpcyBwYWdlLiBCeSBwcm92aWRpbmcgYW4gZXJyb3IsIHRoaXMgd2lsbCBjYXVz
ZSBzdWJzZXF1ZW50CisgICAgLy8gYWN0aW9ucyB0byBiZSBhYm9ydGVkIGFuZCB0aGUgU2ltdWxh
dGVkSW5wdXREaXNwYXRjaGVyOjpydW4oKSBjYWxsIHdpbGwgdW53aW5kIGFuZCBmYWlsLgorICAg
IGlmIChhdXRvIGNhbGxiYWNrID0gbV9wZW5kaW5nTW91c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2tz
UGVyUGFnZS50YWtlKHBhZ2UucGFnZUlEKCkpKQorICAgICAgICBjYWxsYmFjayhBVVRPTUFUSU9O
X0NPTU1BTkRfRVJST1JfV0lUSF9OQU1FKFdpbmRvd05vdEZvdW5kKSk7CisgICAgaWYgKGF1dG8g
Y2FsbGJhY2sgPSBtX3BlbmRpbmdNb3VzZUV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlLnRh
a2UocGFnZS5wYWdlSUQoKSkpCisgICAgICAgIGNhbGxiYWNrKEFVVE9NQVRJT05fQ09NTUFORF9F
UlJPUl9XSVRIX05BTUUoV2luZG93Tm90Rm91bmQpKTsKKworICAgIC8vIFRoZW4gdGVsbCB0aGUg
aW5wdXQgZGlzcGF0Y2hlciB0byBjYW5jZWwgc28gdGltZXJzIGFyZSBzdG9wcGVkLCBhbmQgbGV0
IGl0IGdvIG91dCBvZiBzY29wZS4KKyAgICBzdGQ6Om9wdGlvbmFsPFJlZjxTaW11bGF0ZWRJbnB1
dERpc3BhdGNoZXI+PiBpbnB1dERpc3BhdGNoZXIgPSBtX2lucHV0RGlzcGF0Y2hlcnNCeVBhZ2Uu
dGFrZShwYWdlLnBhZ2VJRCgpKTsKKyAgICBpZiAoaW5wdXREaXNwYXRjaGVyLmhhc192YWx1ZSgp
KQorICAgICAgICBpbnB1dERpc3BhdGNoZXIudmFsdWUoKS0+Y2FuY2VsKCk7CiB9CiAKIHN0YXRp
YyBib29sIGZpbGVDYW5CZUFjY2VwdGVkRm9yVXBsb2FkKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUs
IGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgYWxsb3dlZE1JTUVUeXBlcywgY29uc3QgSGFzaFNldDxT
dHJpbmc+JiBhbGxvd2VkRmlsZUV4dGVuc2lvbnMpCkBAIC0xMzY2LDYgKzEzNzQsODUgQEAgYm9v
bCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6c2hvdWxkQWxsb3dHZXRVc2VyTWVkaWFGb3JQYWdlKGNv
bnN0IFdlYlBhZ2VQcm94eSYpIGMKICAgICByZXR1cm4gbV9wZXJtaXNzaW9uRm9yR2V0VXNlck1l
ZGlhOwogfQogCitib29sIFdlYkF1dG9tYXRpb25TZXNzaW9uOjppc1NpbXVsYXRpbmdVc2VySW50
ZXJhY3Rpb24oKSBjb25zdAoreworICAgIGlmICghbV9wZW5kaW5nTW91c2VFdmVudHNGbHVzaGVk
Q2FsbGJhY2tzUGVyUGFnZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBp
ZiAoIW1fcGVuZGluZ0tleWJvYXJkRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2UuaXNFbXB0
eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworU2lt
dWxhdGVkSW5wdXREaXNwYXRjaGVyJiBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6aW5wdXREaXNwYXRj
aGVyRm9yUGFnZShXZWJQYWdlUHJveHkmIHBhZ2UpCit7CisgICAgcmV0dXJuIG1faW5wdXREaXNw
YXRjaGVyc0J5UGFnZS5lbnN1cmUocGFnZS5wYWdlSUQoKSwgWyZdIHsKKyAgICAgICAgcmV0dXJu
IFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6Y3JlYXRlKHBhZ2UsICp0aGlzKTsKKyAgICB9KS5p
dGVyYXRvci0+dmFsdWU7Cit9CisKK1NpbXVsYXRlZElucHV0U291cmNlKiBXZWJBdXRvbWF0aW9u
U2Vzc2lvbjo6aW5wdXRTb3VyY2VGb3JUeXBlKFNpbXVsYXRlZElucHV0U291cmNlOjpUeXBlIHR5
cGUpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IHRoaXMgc2hvdWxkIHVzZSBzb21ldGhpbmcgbGlr
ZSBWZWN0b3IncyBmaW5kTWF0Y2hpbmcoKS4KKyAgICBmb3IgKGF1dG8mIGlucHV0U291cmNlIDog
bV9pbnB1dFNvdXJjZXMpIHsKKyAgICAgICAgaWYgKGlucHV0U291cmNlLT50eXBlID09IHR5cGUp
CisgICAgICAgICAgICByZXR1cm4gJmlucHV0U291cmNlLmdldCgpOworICAgIH0KKworICAgIHJl
dHVybiBudWxscHRyOworfQorCisvLyBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OkNsaWVudCBB
UEkKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnNpbXVsYXRlTW91c2VJbnRlcmFjdGlvbihX
ZWJQYWdlUHJveHkmIHBhZ2UsIE1vdXNlSW50ZXJhY3Rpb24gaW50ZXJhY3Rpb24sIFdlYk1vdXNl
RXZlbnQ6OkJ1dHRvbiBtb3VzZUJ1dHRvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGxvY2F0
aW9uSW5WaWV3cG9ydCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPEF1dG9t
YXRpb25Db21tYW5kRXJyb3I+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBXZWJDb3Jl
OjpJbnRQb2ludCBsb2NhdGlvbkluVmlldyA9IFdlYkNvcmU6OkludFBvaW50KGxvY2F0aW9uSW5W
aWV3cG9ydC54KCksIGxvY2F0aW9uSW5WaWV3cG9ydC55KCkgKyBwYWdlLnRvcENvbnRlbnRJbnNl
dCgpKTsKKyAgICBwYWdlLmdldFdpbmRvd0ZyYW1lV2l0aENhbGxiYWNrKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlciksIHBhZ2UgPSBtYWtlUmVmKHBhZ2UpLCBpbnRlcmFjdGlvbiwgbW91c2VC
dXR0b24sIGxvY2F0aW9uSW5WaWV3XShXZWJDb3JlOjpGbG9hdFJlY3Qgd2luZG93RnJhbWUpIG11
dGFibGUgeworICAgICAgICBhdXRvIGNsaXBwZWRYID0gc3RkOjptaW4oc3RkOjptYXgoMC4wZiwg
KGZsb2F0KWxvY2F0aW9uSW5WaWV3LngoKSksIHdpbmRvd0ZyYW1lLnNpemUoKS53aWR0aCgpKTsK
KyAgICAgICAgYXV0byBjbGlwcGVkWSA9IHN0ZDo6bWluKHN0ZDo6bWF4KDAuMGYsIChmbG9hdCls
b2NhdGlvbkluVmlldy55KCkpLCB3aW5kb3dGcmFtZS5zaXplKCkuaGVpZ2h0KCkpOworICAgICAg
ICBpZiAoY2xpcHBlZFggIT0gbG9jYXRpb25JblZpZXcueCgpIHx8IGNsaXBwZWRZICE9IGxvY2F0
aW9uSW5WaWV3LnkoKSkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQVVUT01BVElP
Tl9DT01NQU5EX0VSUk9SX1dJVEhfTkFNRShUYXJnZXRPdXRPZkJvdW5kcykpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLy8gQnJpZGdlIHRoZSBmbHVzaGVkIGNh
bGxiYWNrIHRvIG91ciBjb21tYW5kJ3MgY29tcGxldGlvbiBoYW5kbGVyLgorICAgICAgICBhdXRv
IG1vdXNlRXZlbnRzRmx1c2hlZENhbGxiYWNrID0gW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildKHN0ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJv
cj4gZXJyb3IpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGVycm9yKTsKKyAgICAg
ICAgfTsKKworICAgICAgICBhdXRvJiBjYWxsYmFja0luTWFwID0gbV9wZW5kaW5nTW91c2VFdmVu
dHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS5hZGQocGFnZS0+cGFnZUlEKCksIG51bGxwdHIpLml0
ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgaWYgKGNhbGxiYWNrSW5NYXApCisgICAgICAgICAgICBj
YWxsYmFja0luTWFwKEFVVE9NQVRJT05fQ09NTUFORF9FUlJPUl9XSVRIX05BTUUoVGltZW91dCkp
OworICAgICAgICBjYWxsYmFja0luTWFwID0gV1RGTW92ZShtb3VzZUV2ZW50c0ZsdXNoZWRDYWxs
YmFjayk7CisKKyAgICAgICAgcGxhdGZvcm1TaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24ocGFnZSwg
aW50ZXJhY3Rpb24sIG1vdXNlQnV0dG9uLCBsb2NhdGlvbkluVmlldywgKFdlYkV2ZW50OjpNb2Rp
ZmllcnMpbV9jdXJyZW50TW9kaWZpZXJzKTsKKworICAgICAgICAvLyBJZiB0aGUgZXZlbnQgZG9l
cyBub3QgaGl0IHRlc3QgYW55dGhpbmcgaW4gdGhlIHdpbmRvdywgdGhlbiBpdCBtYXkgbm90IGhh
dmUgYmVlbiBkZWxpdmVyZWQuCisgICAgICAgIGlmIChjYWxsYmFja0luTWFwICYmICFwYWdlLT5p
c1Byb2Nlc3NpbmdNb3VzZUV2ZW50cygpKSB7CisgICAgICAgICAgICBhdXRvIGNhbGxiYWNrVG9D
YW5jZWwgPSBtX3BlbmRpbmdNb3VzZUV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlLnRha2Uo
cGFnZS0+cGFnZUlEKCkpOworICAgICAgICAgICAgY2FsbGJhY2tUb0NhbmNlbChzdGQ6Om51bGxv
cHQpOworICAgICAgICB9CisKKyAgICAgICAgLy8gT3RoZXJ3aXNlLCB3YWl0IGZvciBtb3VzZUV2
ZW50c0ZsdXNoZWRDYWxsYmFjayB0byBydW4gd2hlbiBhbGwgZXZlbnRzIGFyZSBoYW5kbGVkLgor
ICAgIH0pOworfQorCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpzaW11bGF0ZUtleWJvYXJk
SW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBLZXlib2FyZEludGVyYWN0aW9uIGludGVy
YWN0aW9uLCBzdGQ6Om9wdGlvbmFsPFZpcnR1YWxLZXk+IHZpcnR1YWxLZXksIHN0ZDo6b3B0aW9u
YWw8Q2hhcktleT4gY2hhcktleSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFs
PEF1dG9tYXRpb25Db21tYW5kRXJyb3I+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICAv
LyBCcmlkZ2UgdGhlIGZsdXNoZWQgY2FsbGJhY2sgdG8gb3VyIGNvbW1hbmQncyBjb21wbGV0aW9u
IGhhbmRsZXIuCisgICAgYXV0byBrZXlib2FyZEV2ZW50c0ZsdXNoZWRDYWxsYmFjayA9IFtjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShzdGQ6Om9wdGlvbmFs
PEF1dG9tYXRpb25Db21tYW5kRXJyb3I+IGVycm9yKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKGVycm9yKTsKKyAgICB9OworCisgICAgYXV0byYgY2FsbGJhY2tJbk1hcCA9IG1fcGVuZGlu
Z0tleWJvYXJkRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2UuYWRkKHBhZ2UucGFnZUlEKCks
IG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBpZiAoY2FsbGJhY2tJbk1hcCkKKyAgICAg
ICAgY2FsbGJhY2tJbk1hcChBVVRPTUFUSU9OX0NPTU1BTkRfRVJST1JfV0lUSF9OQU1FKFRpbWVv
dXQpKTsKKyAgICBjYWxsYmFja0luTWFwID0gV1RGTW92ZShrZXlib2FyZEV2ZW50c0ZsdXNoZWRD
YWxsYmFjayk7CisKKyAgICBwbGF0Zm9ybVNpbXVsYXRlS2V5Ym9hcmRJbnRlcmFjdGlvbihwYWdl
LCBpbnRlcmFjdGlvbiwgdmlydHVhbEtleSwgY2hhcktleSk7CisKKyAgICAvLyBXYWl0IGZvciBr
ZXlib2FyZEV2ZW50c0ZsdXNoZWRDYWxsYmFjayB0byBydW4gd2hlbiBhbGwgZXZlbnRzIGFyZSBo
YW5kbGVkLgorfQorCiAjaWYgVVNFKEFQUEtJVCkgfHwgUExBVEZPUk0oR1RLKQogc3RhdGljIFdl
YkV2ZW50OjpNb2RpZmllcnMgcHJvdG9jb2xNb2RpZmllclRvV2ViRXZlbnRNb2RpZmllcihJbnNw
ZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpLZXlNb2RpZmllciBtb2RpZmllcikKIHsKQEAg
LTEzODQsNiArMTQ3MSwyMiBAQCBzdGF0aWMgV2ViRXZlbnQ6Ok1vZGlmaWVycyBwcm90b2NvbE1v
ZGlmaWVyVG9XZWJFdmVudE1vZGlmaWVyKEluc3BlY3Rvcjo6UHJvdG9jbwogCiAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KKworc3RhdGljIFdlYk1vdXNlRXZlbnQ6OkJ1dHRv
biBwcm90b2NvbE1vdXNlQnV0dG9uVG9XZWJNb3VzZUV2ZW50QnV0dG9uKEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9uIGJ1dHRvbikKK3sKKyAgICBzd2l0Y2ggKGJ1
dHRvbikgeworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VC
dXR0b246Ok5vbmU6CisgICAgICAgIHJldHVybiBXZWJNb3VzZUV2ZW50OjpOb0J1dHRvbjsKKyAg
ICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9uOjpMZWZ0
OgorICAgICAgICByZXR1cm4gV2ViTW91c2VFdmVudDo6TGVmdEJ1dHRvbjsKKyAgICBjYXNlIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9uOjpNaWRkbGU6CisgICAg
ICAgIHJldHVybiBXZWJNb3VzZUV2ZW50OjpNaWRkbGVCdXR0b247CisgICAgY2FzZSBJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1dHRvbjo6UmlnaHQ6CisgICAgICAgIHJl
dHVybiBXZWJNb3VzZUV2ZW50OjpSaWdodEJ1dHRvbjsKKyAgICB9CisKKyAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworfQogI2VuZGlmIC8vIFVTRShBUFBLSVQpIHx8IFBMQVRGT1JN
KEdUSykKIAogdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGVyZm9ybU1vdXNlSW50ZXJhY3Rp
b24oY29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbnN0IEpTT046Ok9iamVjdCYgcmVxdWVzdGVkUG9z
aXRpb25PYmplY3QsIGNvbnN0IFN0cmluZyYgbW91c2VCdXR0b25TdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgbW91c2VJbnRlcmFjdGlvblN0cmluZywgY29uc3QgSlNPTjo6QXJyYXkmIGtleU1vZGlmaWVy
U3RyaW5ncywgUmVmPFBlcmZvcm1Nb3VzZUludGVyYWN0aW9uQ2FsbGJhY2s+JiYgY2FsbGJhY2sp
CkBAIC0xNDE1LDEzICsxNTE4LDEzIEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBlcmZv
cm1Nb3VzZUludGVyYWN0aW9uKGNvbnN0IFN0cmluZyYgaGFuZGxlLCBjb25zdCBKCiAgICAgICAg
IFdlYkV2ZW50OjpNb2RpZmllcnMgZW51bVZhbHVlID0gcHJvdG9jb2xNb2RpZmllclRvV2ViRXZl
bnRNb2RpZmllcihwYXJzZWRNb2RpZmllci52YWx1ZSgpKTsKICAgICAgICAga2V5TW9kaWZpZXJz
ID0gKFdlYkV2ZW50OjpNb2RpZmllcnMpKGVudW1WYWx1ZSB8IGtleU1vZGlmaWVycyk7CiAgICAg
fQotICAgIAorCiAgICAgcGFnZS0+Z2V0V2luZG93RnJhbWVXaXRoQ2FsbGJhY2soW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KSwgcGFnZSA9IG1ha2VSZWYoKnBhZ2UpLCB4LCB5LCBtb3VzZUludGVyYWN0aW9uU3RyaW5nLCBt
b3VzZUJ1dHRvblN0cmluZywga2V5TW9kaWZpZXJzXShXZWJDb3JlOjpGbG9hdFJlY3Qgd2luZG93
RnJhbWUpIG11dGFibGUgewogCiAgICAgICAgIHggPSBzdGQ6Om1pbihzdGQ6Om1heCgwLjBmLCB4
KSwgd2luZG93RnJhbWUuc2l6ZSgpLndpZHRoKCkpOwogICAgICAgICB5ID0gc3RkOjptaW4oc3Rk
OjptYXgoMC4wZiwgeSArIHBhZ2UtPnRvcENvbnRlbnRJbnNldCgpKSwgd2luZG93RnJhbWUuc2l6
ZSgpLmhlaWdodCgpKTsKIAotICAgICAgICBXZWJDb3JlOjpJbnRQb2ludCB2aWV3UG9zaXRpb24g
PSBXZWJDb3JlOjpJbnRQb2ludChzdGF0aWNfY2FzdDxpbnQ+KHgpLCBzdGF0aWNfY2FzdDxpbnQ+
KHkpKTsKKyAgICAgICAgV2ViQ29yZTo6SW50UG9pbnQgcG9zaXRpb25JblZpZXcgPSBXZWJDb3Jl
OjpJbnRQb2ludChzdGF0aWNfY2FzdDxpbnQ+KHgpLCBzdGF0aWNfY2FzdDxpbnQ+KHkpKTsKIAog
ICAgICAgICBhdXRvIHBhcnNlZEludGVyYWN0aW9uID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbkhlbHBlcnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpNb3VzZUludGVyYWN0aW9uPihtb3VzZUludGVyYWN0aW9uU3RyaW5n
KTsKICAgICAgICAgaWYgKCFwYXJzZWRJbnRlcmFjdGlvbikKQEAgLTE0NDcsMTEgKzE1NTAsOCBA
QCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwZXJmb3JtTW91c2VJbnRlcmFjdGlvbihjb25z
dCBTdHJpbmcmIGhhbmRsZSwgY29uc3QgSgogICAgICAgICAgICAgY2FsbGJhY2tJbk1hcChBVVRP
TUFUSU9OX0NPTU1BTkRfRVJST1JfV0lUSF9OQU1FKFRpbWVvdXQpKTsKICAgICAgICAgY2FsbGJh
Y2tJbk1hcCA9IFdURk1vdmUobW91c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2spOwogCi0gICAgICAg
IC8vIFRoaXMgaXMgY2xlYXJlZCB3aGVuIGFsbCBtb3VzZSBldmVudHMgYXJlIGZsdXNoZWQuCi0g
ICAgICAgIG1fc2ltdWxhdGluZ1VzZXJJbnRlcmFjdGlvbiA9IHRydWU7CisgICAgICAgIHBsYXRm
b3JtU2ltdWxhdGVNb3VzZUludGVyYWN0aW9uKHBhZ2UsIHBhcnNlZEludGVyYWN0aW9uLnZhbHVl
KCksIHByb3RvY29sTW91c2VCdXR0b25Ub1dlYk1vdXNlRXZlbnRCdXR0b24ocGFyc2VkQnV0dG9u
LnZhbHVlKCkpLCBwb3NpdGlvbkluVmlldywga2V5TW9kaWZpZXJzKTsKIAotICAgICAgICBwbGF0
Zm9ybVNpbXVsYXRlTW91c2VJbnRlcmFjdGlvbihwYWdlLCB2aWV3UG9zaXRpb24sIHBhcnNlZElu
dGVyYWN0aW9uLnZhbHVlKCksIHBhcnNlZEJ1dHRvbi52YWx1ZSgpLCBrZXlNb2RpZmllcnMpOwot
ICAgICAgICAKICAgICAgICAgLy8gSWYgdGhlIGV2ZW50IGxvY2F0aW9uIHdhcyBwcmV2aW91c2x5
IGNsaXBwZWQgYW5kIGRvZXMgbm90IGhpdCB0ZXN0IGFueXRoaW5nIGluIHRoZSB3aW5kb3csIHRo
ZW4gaXQgd2lsbCBub3QgYmUgcHJvY2Vzc2VkLgogICAgICAgICAvLyBGb3IgY29tcGF0aWJpbGl0
eSB3aXRoIHByZS1XM0MgZHJpdmVyIGltcGxlbWVudGF0aW9ucywgZG9uJ3QgbWFrZSB0aGlzIGEg
aGFyZCBlcnJvcjsganVzdCBkbyBub3RoaW5nIHNpbGVudGx5LgogICAgICAgICAvLyBJbiBXM0Mt
b25seSBjb2RlIHBhdGhzLCB3ZSBjYW4gcmVqZWN0IGFueSBwb2ludGVyIGFjdGlvbnMgd2hvc2Ug
Y29vcmRpbmF0ZXMgYXJlIG91dHNpZGUgdGhlIHZpZXdwb3J0IHJlY3QuCkBAIC0xNDk5LDcgKzE1
OTksNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwZXJmb3JtS2V5Ym9hcmRJbnRlcmFj
dGlvbnMoY29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbgogICAgICAgICAgICAgICAgIEFTWU5DX0ZB
SUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKEludmFsaWRQYXJhbWV0ZXIsICJB
biBpbnRlcmFjdGlvbiBpbiB0aGUgJ2ludGVyYWN0aW9ucycgcGFyYW1ldGVyIGhhcyBhbiBpbnZh
bGlkICdrZXknIHZhbHVlLiIpOwogCiAgICAgICAgICAgICBhY3Rpb25zVG9QZXJmb3JtLnVuY2hl
Y2tlZEFwcGVuZChbdGhpcywgcGFnZSwgaW50ZXJhY3Rpb25UeXBlLCB2aXJ0dWFsS2V5XSB7Ci0g
ICAgICAgICAgICAgICAgcGxhdGZvcm1TaW11bGF0ZUtleVN0cm9rZSgqcGFnZSwgaW50ZXJhY3Rp
b25UeXBlLnZhbHVlKCksIHZpcnR1YWxLZXkudmFsdWUoKSk7CisgICAgICAgICAgICAgICAgcGxh
dGZvcm1TaW11bGF0ZUtleWJvYXJkSW50ZXJhY3Rpb24oKnBhZ2UsIGludGVyYWN0aW9uVHlwZS52
YWx1ZSgpLCB2aXJ0dWFsS2V5LCBzdGQ6Om51bGxvcHQpOwogICAgICAgICAgICAgfSk7CiAgICAg
ICAgIH0KIApAQCAtMTU0MCwxNCArMTY0MCwxODEgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lv
bjo6cGVyZm9ybUtleWJvYXJkSW50ZXJhY3Rpb25zKGNvbnN0IFN0cmluZyYgaGFuZGxlLCBjb24K
ICAgICAgICAgY2FsbGJhY2tJbk1hcChBVVRPTUFUSU9OX0NPTU1BTkRfRVJST1JfV0lUSF9OQU1F
KFRpbWVvdXQpKTsKICAgICBjYWxsYmFja0luTWFwID0gV1RGTW92ZShrZXlib2FyZEV2ZW50c0Zs
dXNoZWRDYWxsYmFjayk7CiAKLSAgICAvLyBUaGlzIGlzIGNsZWFyZWQgd2hlbiBhbGwga2V5Ym9h
cmQgZXZlbnRzIGFyZSBmbHVzaGVkLgotICAgIG1fc2ltdWxhdGluZ1VzZXJJbnRlcmFjdGlvbiA9
IHRydWU7Ci0KICAgICBmb3IgKGF1dG8mIGFjdGlvbiA6IGFjdGlvbnNUb1BlcmZvcm0pCiAgICAg
ICAgIGFjdGlvbigpOwogI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKSB8fCBQTEFURk9STShHVEsp
CiB9CiAKKyNpZiBVU0UoQVBQS0lUKSB8fCBQTEFURk9STShHVEspCitzdGF0aWMgU2ltdWxhdGVk
SW5wdXRTb3VyY2U6OlR5cGUgc2ltdWxhdGVkSW5wdXRTb3VyY2VUeXBlRnJvbVByb3RvY29sU291
cmNlVHlwZShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpJbnB1dFNvdXJjZVR5cGUg
cHJvdG9jb2xUeXBlKQoreworICAgIHN3aXRjaCAocHJvdG9jb2xUeXBlKSB7CisgICAgY2FzZSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpJbnB1dFNvdXJjZVR5cGU6Ok51bGw6Cisg
ICAgICAgIHJldHVybiBTaW11bGF0ZWRJbnB1dFNvdXJjZTo6VHlwZTo6TnVsbDsKKyAgICBjYXNl
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OklucHV0U291cmNlVHlwZTo6S2V5Ym9h
cmQ6CisgICAgICAgIHJldHVybiBTaW11bGF0ZWRJbnB1dFNvdXJjZTo6VHlwZTo6S2V5Ym9hcmQ7
CisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpJbnB1dFNvdXJjZVR5
cGU6Ok1vdXNlOgorICAgICAgICByZXR1cm4gU2ltdWxhdGVkSW5wdXRTb3VyY2U6OlR5cGU6Ok1v
dXNlOworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6SW5wdXRTb3Vy
Y2VUeXBlOjpUb3VjaDoKKyAgICAgICAgcmV0dXJuIFNpbXVsYXRlZElucHV0U291cmNlOjpUeXBl
OjpUb3VjaDsKKyAgICB9CisKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQor
I2VuZGlmIC8vIFVTRShBUFBLSVQpIHx8IFBMQVRGT1JNKEdUSykKKwordm9pZCBXZWJBdXRvbWF0
aW9uU2Vzc2lvbjo6cGVyZm9ybUludGVyYWN0aW9uU2VxdWVuY2UoY29uc3QgU3RyaW5nJiBoYW5k
bGUsIGNvbnN0IEpTT046OkFycmF5JiBpbnB1dFNvdXJjZXMsIGNvbnN0IEpTT046OkFycmF5JiBz
dGVwcywgUmVmPFdlYkF1dG9tYXRpb25TZXNzaW9uOjpQZXJmb3JtSW50ZXJhY3Rpb25TZXF1ZW5j
ZUNhbGxiYWNrPiYmIGNhbGxiYWNrKQoreworICAgIC8vIFRoaXMgY29tbWFuZCBpbXBsZW1lbnRz
IFdlYktpdCBzdXBwb3J0IGZvciDCpzE3LjUgUGVyZm9ybSBBY3Rpb25zLgorCisjaWYgIVVTRShB
UFBLSVQpICYmICFQTEFURk9STShHVEspCisgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURf
RVJST1IoTm90SW1wbGVtZW50ZWQpOworI2Vsc2UKKyAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSB3
ZWJQYWdlUHJveHlGb3JIYW5kbGUoaGFuZGxlKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIEFT
WU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKFdpbmRvd05vdEZvdW5kKTsKKworICAgIEhh
c2hNYXA8U3RyaW5nLCBSZWY8U2ltdWxhdGVkSW5wdXRTb3VyY2U+PiBzb3VyY2VJZFRvSW5wdXRT
b3VyY2VNYXA7CisgICAgSGFzaE1hcDxTaW11bGF0ZWRJbnB1dFNvdXJjZTo6VHlwZSwgU3RyaW5n
LCBXVEY6OkludEhhc2g8U2ltdWxhdGVkSW5wdXRTb3VyY2U6OlR5cGU+LCBXVEY6OlN0cm9uZ0Vu
dW1IYXNoVHJhaXRzPFNpbXVsYXRlZElucHV0U291cmNlOjpUeXBlPj4gdHlwZVRvU291cmNlSWRN
YXA7CisKKyAgICAvLyBQYXJzZSBhbmQgdmFsaWRhdGUgQXV0b21hdGlvbiBwcm90b2NvbCBhcmd1
bWVudHMuIEJ5IHRoaXMgcG9pbnQsIHRoZSBkcml2ZXIgaGFzCisgICAgLy8gYWxyZWFkeSBwZXJm
b3JtZWQgdGhlIHN0ZXBzIGluIMKnMTcuMyBQcm9jZXNzaW5nIEFjdGlvbnMgUmVxdWVzdHMuCisg
ICAgaWYgKCFpbnB1dFNvdXJjZXMubGVuZ3RoKCkpCisgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9Q
UkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKEludmFsaWRQYXJhbWV0ZXIsICJUaGUgcGFyYW1l
dGVyICdpbnB1dFNvdXJjZXMnIHdhcyBub3QgZm91bmQgb3IgZW1wdHkuIik7CisKKyAgICBmb3Ig
KGF1dG8gaW5wdXRTb3VyY2UgOiBpbnB1dFNvdXJjZXMpIHsKKyAgICAgICAgUmVmUHRyPEpTT046
Ok9iamVjdD4gaW5wdXRTb3VyY2VPYmplY3Q7CisgICAgICAgIGlmICghaW5wdXRTb3VyY2UtPmFz
T2JqZWN0KGlucHV0U291cmNlT2JqZWN0KSkKKyAgICAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9Q
UkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKEludmFsaWRQYXJhbWV0ZXIsICJBbiBpbnB1dCBz
b3VyY2UgaW4gdGhlICdpbnB1dFNvdXJjZXMnIHBhcmFtZXRlciB3YXMgaW52YWxpZC4iKTsKKyAg
ICAgICAgCisgICAgICAgIFN0cmluZyBzb3VyY2VJZDsKKyAgICAgICAgaWYgKCFpbnB1dFNvdXJj
ZU9iamVjdC0+Z2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgic291cmNlSWQiKSwgc291cmNlSWQpKQor
ICAgICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMo
SW52YWxpZFBhcmFtZXRlciwgIkFuIGlucHV0IHNvdXJjZSBpbiB0aGUgJ2lucHV0U291cmNlcycg
cGFyYW1ldGVyIGlzIG1pc3NpbmcgYSAnc291cmNlSWQnLiIpOworCisgICAgICAgIFN0cmluZyBz
b3VyY2VUeXBlOworICAgICAgICBpZiAoIWlucHV0U291cmNlT2JqZWN0LT5nZXRTdHJpbmcoQVND
SUlMaXRlcmFsKCJzb3VyY2VUeXBlIiksIHNvdXJjZVR5cGUpKQorICAgICAgICAgICAgQVNZTkNf
RkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxpZFBhcmFtZXRlciwg
IkFuIGlucHV0IHNvdXJjZSBpbiB0aGUgJ2lucHV0U291cmNlcycgcGFyYW1ldGVyIGlzIG1pc3Np
bmcgYSAnc291cmNlVHlwZScuIik7CisKKyAgICAgICAgYXV0byBwYXJzZWRJbnB1dFNvdXJjZVR5
cGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6cGFyc2VFbnVtVmFs
dWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OklucHV0U291cmNl
VHlwZT4oc291cmNlVHlwZSk7CisgICAgICAgIGlmICghcGFyc2VkSW5wdXRTb3VyY2VUeXBlKQor
ICAgICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMo
SW52YWxpZFBhcmFtZXRlciwgIkFuIGlucHV0IHNvdXJjZSBpbiB0aGUgJ2lucHV0U291cmNlcycg
cGFyYW1ldGVyIGhhcyBhbiBpbnZhbGlkICdzb3VyY2VUeXBlJy4iKTsKKworICAgICAgICBTaW11
bGF0ZWRJbnB1dFNvdXJjZTo6VHlwZSBpbnB1dFNvdXJjZVR5cGUgPSBzaW11bGF0ZWRJbnB1dFNv
dXJjZVR5cGVGcm9tUHJvdG9jb2xTb3VyY2VUeXBlKCpwYXJzZWRJbnB1dFNvdXJjZVR5cGUpOwor
ICAgICAgICBpZiAoaW5wdXRTb3VyY2VUeXBlID09IFNpbXVsYXRlZElucHV0U291cmNlOjpUeXBl
OjpUb3VjaCkKKyAgICAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FO
RF9ERVRBSUxTKE5vdEltcGxlbWVudGVkLCAiVG91Y2ggaW5wdXQgc291cmNlcyBhcmUgbm90IHll
dCBzdXBwb3J0ZWQuIik7CisKKyAgICAgICAgaWYgKHR5cGVUb1NvdXJjZUlkTWFwLmNvbnRhaW5z
KGlucHV0U291cmNlVHlwZSkpCisgICAgICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5F
RF9FUlJPUl9BTkRfREVUQUlMUyhJbnZhbGlkUGFyYW1ldGVyLCAiVHdvIGlucHV0IHNvdXJjZXMg
d2l0aCB0aGUgc2FtZSB0eXBlIHdlcmUgc3BlY2lmaWVkLiIpOworICAgICAgICBpZiAoc291cmNl
SWRUb0lucHV0U291cmNlTWFwLmNvbnRhaW5zKHNvdXJjZUlkKSkKKyAgICAgICAgICAgIEFTWU5D
X0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKEludmFsaWRQYXJhbWV0ZXIs
ICJUd28gaW5wdXQgc291cmNlcyB3aXRoIHRoZSBzYW1lIHNvdXJjZUlkIHdlcmUgc3BlY2lmaWVk
LiIpOworCisgICAgICAgIHR5cGVUb1NvdXJjZUlkTWFwLmFkZChpbnB1dFNvdXJjZVR5cGUsIHNv
dXJjZUlkKTsKKyAgICAgICAgc291cmNlSWRUb0lucHV0U291cmNlTWFwLmFkZChzb3VyY2VJZCwg
KmlucHV0U291cmNlRm9yVHlwZShpbnB1dFNvdXJjZVR5cGUpKTsKKyAgICB9CisKKyAgICBWZWN0
b3I8U2ltdWxhdGVkSW5wdXRLZXlGcmFtZT4ga2V5RnJhbWVzOworCisgICAgaWYgKCFzdGVwcy5s
ZW5ndGgoKSkKKyAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RF
VEFJTFMoSW52YWxpZFBhcmFtZXRlciwgIlRoZSBwYXJhbWV0ZXIgJ3N0ZXBzJyB3YXMgbm90IGZv
dW5kIG9yIGVtcHR5LiIpOworCisgICAgZm9yIChhdXRvIHN0ZXAgOiBzdGVwcykgeworICAgICAg
ICBSZWZQdHI8SlNPTjo6T2JqZWN0PiBzdGVwT2JqZWN0OworICAgICAgICBpZiAoIXN0ZXAtPmFz
T2JqZWN0KHN0ZXBPYmplY3QpKQorICAgICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklO
RURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxpZFBhcmFtZXRlciwgIkEgc3RlcCBpbiB0aGUgJ3N0
ZXBzJyBwYXJhbWV0ZXIgd2FzIG5vdCBhbiBvYmplY3QuIik7CisKKyAgICAgICAgUmVmUHRyPEpT
T046OkFycmF5PiBzdGVwU3RhdGVzOworICAgICAgICBpZiAoIXN0ZXBPYmplY3QtPmdldEFycmF5
KEFTQ0lJTGl0ZXJhbCgic3RhdGVzIiksIHN0ZXBTdGF0ZXMpKQorICAgICAgICAgICAgQVNZTkNf
RkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxpZFBhcmFtZXRlciwg
IkEgc3RlcCBpcyBtaXNzaW5nIHRoZSAnc3RhdGVzJyBwcm9wZXJ0eS4iKTsKKworICAgICAgICBW
ZWN0b3I8U2ltdWxhdGVkSW5wdXRLZXlGcmFtZTo6U3RhdGVFbnRyeT4gZW50cmllczsKKyAgICAg
ICAgZW50cmllcy5yZXNlcnZlQ2FwYWNpdHkoc3RlcFN0YXRlcy0+bGVuZ3RoKCkpOworCisgICAg
ICAgIGZvciAoYXV0byBzdGF0ZSA6ICpzdGVwU3RhdGVzKSB7CisgICAgICAgICAgICBSZWZQdHI8
SlNPTjo6T2JqZWN0PiBzdGF0ZU9iamVjdDsKKyAgICAgICAgICAgIGlmICghc3RhdGUtPmFzT2Jq
ZWN0KHN0YXRlT2JqZWN0KSkKKyAgICAgICAgICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVG
SU5FRF9FUlJPUl9BTkRfREVUQUlMUyhJbnZhbGlkUGFyYW1ldGVyLCAiRW5jb3VudGVyZWQgYSBu
b24tb2JqZWN0IHN0ZXAgc3RhdGUuIik7CisKKyAgICAgICAgICAgIFN0cmluZyBzb3VyY2VJZDsK
KyAgICAgICAgICAgIGlmICghc3RhdGVPYmplY3QtPmdldFN0cmluZyhBU0NJSUxpdGVyYWwoInNv
dXJjZUlkIiksIHNvdXJjZUlkKSkKKyAgICAgICAgICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJF
REVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhJbnZhbGlkUGFyYW1ldGVyLCAiU3RlcCBzdGF0ZSBs
YWNrcyByZXF1aXJlZCAnc291cmNlSWQnIHByb3BlcnR5LiIpOworCisgICAgICAgICAgICBpZiAo
IXNvdXJjZUlkVG9JbnB1dFNvdXJjZU1hcC5jb250YWlucyhzb3VyY2VJZCkpCisgICAgICAgICAg
ICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxp
ZFBhcmFtZXRlciwgIlVua25vd24gJ3NvdXJjZUlkJyBzcGVjaWZpZWQuIik7CisKKyAgICAgICAg
ICAgIFNpbXVsYXRlZElucHV0U291cmNlJiBpbnB1dFNvdXJjZSA9ICpzb3VyY2VJZFRvSW5wdXRT
b3VyY2VNYXAuZ2V0KHNvdXJjZUlkKTsKKyAgICAgICAgICAgIFNpbXVsYXRlZElucHV0U291cmNl
U3RhdGUgc291cmNlU3RhdGUgeyB9OworCisgICAgICAgICAgICBTdHJpbmcgcHJlc3NlZENoYXJL
ZXlTdHJpbmc7CisgICAgICAgICAgICBpZiAoc3RhdGVPYmplY3QtPmdldFN0cmluZyhBU0NJSUxp
dGVyYWwoInByZXNzZWRDaGFyS2V5IiksIHByZXNzZWRDaGFyS2V5U3RyaW5nKSkKKyAgICAgICAg
ICAgICAgICBzb3VyY2VTdGF0ZS5wcmVzc2VkQ2hhcktleSA9IHByZXNzZWRDaGFyS2V5U3RyaW5n
LmNoYXJhY3RlckF0KDApOworCisgICAgICAgICAgICBTdHJpbmcgcHJlc3NlZFZpcnR1YWxLZXlT
dHJpbmc7CisgICAgICAgICAgICBpZiAoc3RhdGVPYmplY3QtPmdldFN0cmluZyhBU0NJSUxpdGVy
YWwoInByZXNzZWRWaXJ0dWFsS2V5IiksIHByZXNzZWRWaXJ0dWFsS2V5U3RyaW5nKSkKKyAgICAg
ICAgICAgICAgICBzb3VyY2VTdGF0ZS5wcmVzc2VkVmlydHVhbEtleSA9IEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb25IZWxwZXJzOjpwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVj
dG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleT4ocHJlc3NlZFZpcnR1YWxLZXlT
dHJpbmcpOworCisgICAgICAgICAgICBTdHJpbmcgcHJlc3NlZEJ1dHRvblN0cmluZzsKKyAgICAg
ICAgICAgIGlmIChzdGF0ZU9iamVjdC0+Z2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgicHJlc3NlZEJ1
dHRvbiIpLCBwcmVzc2VkQnV0dG9uU3RyaW5nKSkgeworICAgICAgICAgICAgICAgIGF1dG8gcHJv
dG9jb2xCdXR0b24gPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6cGFy
c2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1v
dXNlQnV0dG9uPihwcmVzc2VkQnV0dG9uU3RyaW5nKTsKKyAgICAgICAgICAgICAgICBzb3VyY2VT
dGF0ZS5wcmVzc2VkTW91c2VCdXR0b24gPSBwcm90b2NvbE1vdXNlQnV0dG9uVG9XZWJNb3VzZUV2
ZW50QnV0dG9uKHByb3RvY29sQnV0dG9uLnZhbHVlX29yKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1
dG9tYXRpb246Ok1vdXNlQnV0dG9uOjpOb25lKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIFJlZlB0cjxKU09OOjpPYmplY3Q+IGxvY2F0aW9uT2JqZWN0OworICAgICAgICAgICAgaWYg
KHN0YXRlT2JqZWN0LT5nZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJsb2NhdGlvbiIpLCBsb2NhdGlv
bk9iamVjdCkpIHsKKyAgICAgICAgICAgICAgICBpbnQgeCwgeTsKKyAgICAgICAgICAgICAgICBp
ZiAobG9jYXRpb25PYmplY3QtPmdldEludGVnZXIoQVNDSUlMaXRlcmFsKCJ4IiksIHgpICYmIGxv
Y2F0aW9uT2JqZWN0LT5nZXRJbnRlZ2VyKEFTQ0lJTGl0ZXJhbCgieSIpLCB5KSkKKyAgICAgICAg
ICAgICAgICAgICAgc291cmNlU3RhdGUubG9jYXRpb24gPSBXZWJDb3JlOjpJbnRQb2ludCh4LCB5
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaW50IHBhcnNlZER1cmF0aW9uOworICAg
ICAgICAgICAgaWYgKHN0YXRlT2JqZWN0LT5nZXRJbnRlZ2VyKEFTQ0lJTGl0ZXJhbCgiZHVyYXRp
b24iKSwgcGFyc2VkRHVyYXRpb24pKQorICAgICAgICAgICAgICAgIHNvdXJjZVN0YXRlLmR1cmF0
aW9uID0gU2Vjb25kczo6ZnJvbU1pbGxpc2Vjb25kcyhwYXJzZWREdXJhdGlvbik7CisKKyAgICAg
ICAgICAgIGVudHJpZXMudW5jaGVja2VkQXBwZW5kKHN0ZDo6cGFpcjxTaW11bGF0ZWRJbnB1dFNv
dXJjZSYsIFNpbXVsYXRlZElucHV0U291cmNlU3RhdGU+IHsgaW5wdXRTb3VyY2UsIHNvdXJjZVN0
YXRlIH0pOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBrZXlGcmFtZXMuYXBwZW5kKFNp
bXVsYXRlZElucHV0S2V5RnJhbWUoV1RGTW92ZShlbnRyaWVzKSkpOworICAgIH0KKworICAgIFNp
bXVsYXRlZElucHV0RGlzcGF0Y2hlciYgaW5wdXREaXNwYXRjaGVyID0gaW5wdXREaXNwYXRjaGVy
Rm9yUGFnZSgqcGFnZSk7CisgICAgaWYgKGlucHV0RGlzcGF0Y2hlci5pc0FjdGl2ZSgpKSB7Cisg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJF
REVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhJbnRlcm5hbEVycm9yLCAiQSBwcmV2aW91cyBpbnRl
cmFjdGlvbiBpcyBzdGlsbCB1bmRlcndheS4iKTsKKyAgICB9CisKKyAgICAvLyBEZWxlZ2F0ZSB0
aGUgcmVzdCBvZiDCpzE3LjQgRGlzcGF0Y2hpbmcgQWN0aW9ucyB0byB0aGUgZGlzcGF0Y2hlci4K
KyAgICBpbnB1dERpc3BhdGNoZXIucnVuKFdURk1vdmUoa2V5RnJhbWVzKSwgbV9pbnB1dFNvdXJj
ZXMsIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayldKHN0ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4gZXJyb3IpIHsK
KyAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAgY2FsbGJhY2stPnNlbmRGYWlsdXJlKGVy
cm9yLnZhbHVlKCkudG9Qcm90b2NvbFN0cmluZygpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgY2FsbGJhY2stPnNlbmRTdWNjZXNzKCk7CisgICAgfSk7CisjZW5kaWYgLy8gUExBVEZPUk0o
Q09DT0EpIHx8IFBMQVRGT1JNKEdUSykKK30KKwordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6
Y2FuY2VsSW50ZXJhY3Rpb25TZXF1ZW5jZShjb25zdCBTdHJpbmcmIGhhbmRsZSwgUmVmPENhbmNl
bEludGVyYWN0aW9uU2VxdWVuY2VDYWxsYmFjaz4mJiBjYWxsYmFjaykKK3sKKyAgICAvLyBUaGlz
IGNvbW1hbmQgaW1wbGVtZW50cyBXZWJLaXQgc3VwcG9ydCBmb3IgwqcxNy42IFJlbGVhc2UgQWN0
aW9ucy4KKworI2lmICFVU0UoQVBQS0lUKSAmJiAhUExBVEZPUk0oR1RLKQorICAgIEFTWU5DX0ZB
SUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKE5vdEltcGxlbWVudGVkKTsKKyNlbHNlCisgICAgV2Vi
UGFnZVByb3h5KiBwYWdlID0gd2ViUGFnZVByb3h5Rm9ySGFuZGxlKGhhbmRsZSk7CisgICAgaWYg
KCFwYWdlKQorICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihXaW5kb3dO
b3RGb3VuZCk7CisKKyAgICBWZWN0b3I8U2ltdWxhdGVkSW5wdXRLZXlGcmFtZT4ga2V5RnJhbWVz
KHsgU2ltdWxhdGVkSW5wdXRLZXlGcmFtZTo6a2V5RnJhbWVUb1Jlc2V0SW5wdXRTb3VyY2VzKG1f
aW5wdXRTb3VyY2VzKSB9KTsKKyAgICBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXImIGlucHV0RGlz
cGF0Y2hlciA9IGlucHV0RGlzcGF0Y2hlckZvclBhZ2UoKnBhZ2UpOworICAgIGlucHV0RGlzcGF0
Y2hlci5jYW5jZWwoKTsKKyAgICAKKyAgICBpbnB1dERpc3BhdGNoZXIucnVuKFdURk1vdmUoa2V5
RnJhbWVzKSwgbV9pbnB1dFNvdXJjZXMsIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKHN0ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNv
bW1hbmRFcnJvcj4gZXJyb3IpIHsKKyAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAgY2Fs
bGJhY2stPnNlbmRGYWlsdXJlKGVycm9yLnZhbHVlKCkudG9Qcm90b2NvbFN0cmluZygpKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgY2FsbGJhY2stPnNlbmRTdWNjZXNzKCk7CisgICAgfSk7
CisjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKEdUSykKK30KKwogdm9pZCBX
ZWJBdXRvbWF0aW9uU2Vzc2lvbjo6dGFrZVNjcmVlbnNob3QoY29uc3QgU3RyaW5nJiBoYW5kbGUs
IGNvbnN0IFN0cmluZyogb3B0aW9uYWxGcmFtZUhhbmRsZSwgY29uc3QgU3RyaW5nKiBvcHRpb25h
bE5vZGVIYW5kbGUsIGNvbnN0IGJvb2wqIG9wdGlvbmFsU2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwg
Y29uc3QgYm9vbCogb3B0aW9uYWxDbGlwVG9WaWV3cG9ydCwgUmVmPFRha2VTY3JlZW5zaG90Q2Fs
bGJhY2s+JiYgY2FsbGJhY2spCiB7CiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gd2ViUGFnZVBy
b3h5Rm9ySGFuZGxlKGhhbmRsZSk7CkBAIC0xNTg5LDE3ICsxODU2LDE1IEBAIHZvaWQgV2ViQXV0
b21hdGlvblNlc3Npb246OmRpZFRha2VTY3JlZW5zaG90KHVpbnQ2NF90IGNhbGxiYWNrSUQsIGNv
bnN0IFNoYXJlYWJsCiAvLyBQbGF0Zm9ybS1kZXBlbmRlbnQgSW1wbGVtZW50YXRpb24gU3R1YnMu
CiAKICNpZiAhUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oR1RLKQotdm9pZCBXZWJBdXRvbWF0
aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24oV2ViS2l0OjpXZWJQ
YWdlUHJveHkmLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkF1dG9tYXRpb246Ok1vdXNlSW50ZXJhY3Rpb24sIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9t
YXRpb246Ok1vdXNlQnV0dG9uLCBXZWJFdmVudDo6TW9kaWZpZXJzKQordm9pZCBXZWJBdXRvbWF0
aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5
JiwgTW91c2VJbnRlcmFjdGlvbiwgV2ViTW91c2VFdmVudDo6QnV0dG9uLCBjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYsIFdlYkV2ZW50OjpNb2RpZmllcnMpCiB7CiB9CiAjZW5kaWYgLy8gIVBMQVRG
T1JNKE1BQykgJiYgIVBMQVRGT1JNKEdUSykKIAogI2lmICFQTEFURk9STShDT0NPQSkgJiYgIVBM
QVRGT1JNKEdUSykKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVL
ZXlTdHJva2UoV2ViUGFnZVByb3h5JiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6
S2V5Ym9hcmRJbnRlcmFjdGlvblR5cGUsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246
OlZpcnR1YWxLZXkpCi17Ci19CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3Jt
U2ltdWxhdGVLZXlTZXF1ZW5jZShXZWJQYWdlUHJveHkmLCBjb25zdCBTdHJpbmcmKQorCit2b2lk
IFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlS2V5Ym9hcmRJbnRlcmFjdGlv
bihXZWJQYWdlUHJveHkmLCBLZXlib2FyZEludGVyYWN0aW9uLCBzdGQ6Om9wdGlvbmFsPFZpcnR1
YWxLZXk+LCBzdGQ6Om9wdGlvbmFsPENoYXJLZXk+KQogewogfQogI2VuZGlmIC8vICFQTEFURk9S
TShDT0NPQSkgJiYgIVBMQVRGT1JNKEdUSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaAppbmRleCAzYWUzNWU2
ZjdlY2RjNThhM2RkOTVlOTgwODBlZjRhMzI5NWNhNzE5Li40ZDI0OGNjOTEwMmZkMzI0NTljOTUw
NTJhZDZjYWUwZjMzYjJlMTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
dXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCkBAIC0zMCw2ICszMCw3IEBA
CiAjaW5jbHVkZSAiQXV0b21hdGlvbkZyb250ZW5kRGlzcGF0Y2hlcnMuaCIKICNpbmNsdWRlICJD
b25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCisjaW5jbHVkZSAiU2lt
dWxhdGVkSW5wdXREaXNwYXRjaGVyLmgiCiAjaW5jbHVkZSAiV2ViRXZlbnQuaCIKICNpbmNsdWRl
IDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAt
NzYsNyArNzcsNyBAQCBjbGFzcyBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5OwogY2xh
c3MgV2ViUGFnZVByb3h5OwogY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7CiAKLXN0cnVjdCBBdXRvbWF0
aW9uQ29tbWFuZEVycm9yIHsKK2NsYXNzIEF1dG9tYXRpb25Db21tYW5kRXJyb3IgewogcHVibGlj
OgogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkVycm9yTWVzc2FnZSB0eXBl
OwogICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBtZXNzYWdlIHsgc3RkOjpudWxsb3B0IH07CkBA
IC05MSwxMSArOTIsMTQgQEAgcHVibGljOgogICAgIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKCk7
CiB9OwogCit1c2luZyBBdXRvbWF0aW9uQ29tcGxldGlvbkhhbmRsZXIgPSBXVEY6OkNvbXBsZXRp
b25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPik+Owor
CiBjbGFzcyBXZWJBdXRvbWF0aW9uU2Vzc2lvbiBmaW5hbCA6IHB1YmxpYyBBUEk6Ok9iamVjdElt
cGw8QVBJOjpPYmplY3Q6OlR5cGU6OkF1dG9tYXRpb25TZXNzaW9uPiwgcHVibGljIElQQzo6TWVz
c2FnZVJlY2VpdmVyCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAgICAgLCBwdWJsaWMg
SW5zcGVjdG9yOjpSZW1vdGVBdXRvbWF0aW9uVGFyZ2V0CiAjZW5kaWYKICAgICAsIHB1YmxpYyBJ
bnNwZWN0b3I6OkF1dG9tYXRpb25CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIKKyAgICAsIHB1Ymxp
YyBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OkNsaWVudAogewogcHVibGljOgogICAgIFdlYkF1
dG9tYXRpb25TZXNzaW9uKCk7CkBAIC0xMzEsNiArMTM1LDEwIEBAIHB1YmxpYzoKICNlbmRpZgog
ICAgIHZvaWQgdGVybWluYXRlKCk7CiAKKyAgICAvLyBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6
OkNsaWVudCBBUEkKKyAgICB2b2lkIHNpbXVsYXRlTW91c2VJbnRlcmFjdGlvbihXZWJQYWdlUHJv
eHkmLCBNb3VzZUludGVyYWN0aW9uLCBXZWJNb3VzZUV2ZW50OjpCdXR0b24sIGNvbnN0IFdlYkNv
cmU6OkludFBvaW50JiBsb2NhdGlvbkluVmlldywgQXV0b21hdGlvbkNvbXBsZXRpb25IYW5kbGVy
JiYpIGZpbmFsOworICAgIHZvaWQgc2ltdWxhdGVLZXlib2FyZEludGVyYWN0aW9uKFdlYlBhZ2VQ
cm94eSYsIEtleWJvYXJkSW50ZXJhY3Rpb24sIHN0ZDo6b3B0aW9uYWw8VmlydHVhbEtleT4sIHN0
ZDo6b3B0aW9uYWw8Q2hhcktleT4sIEF1dG9tYXRpb25Db21wbGV0aW9uSGFuZGxlciYmKSBmaW5h
bDsKKwogICAgIC8vIEluc3BlY3Rvcjo6QXV0b21hdGlvbkJhY2tlbmREaXNwYXRjaGVySGFuZGxl
ciBBUEkKICAgICAvLyBOT1RFOiB0aGUgc2V0IG9mIGRlY2xhcmF0aW9ucyBpbmNsdWRlZCBpbiB0
aGlzIGludGVyZmFjZSBkZXBlbmQgb24gdGhlICJwbGF0Zm9ybSIgcHJvcGVydHkgaW4gQXV0b21h
dGlvbi5qc29uCiAgICAgLy8gYW5kIHRoZSAtLXBsYXRmb3JtIGFyZ3VtZW50IHBhc3NlZCB0byB0
aGUgcHJvdG9jb2wgYmluZGluZ3MgZ2VuZXJhdG9yLgpAQCAtMTUxLDYgKzE1OSw4IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKGNvbnN0IFN0cmluZyYgYnJv
d3NpbmdDb250ZXh0SGFuZGxlLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsRnJhbWVIYW5kbGUsIGNv
bnN0IFN0cmluZyYgZnVuY3Rpb24sIGNvbnN0IEpTT046OkFycmF5JiBhcmd1bWVudHMsIGNvbnN0
IGJvb2wqIG9wdGlvbmFsRXhwZWN0c0ltcGxpY2l0Q2FsbGJhY2tBcmd1bWVudCwgY29uc3QgaW50
KiBvcHRpb25hbENhbGxiYWNrVGltZW91dCwgUmVmPEluc3BlY3Rvcjo6QXV0b21hdGlvbkJhY2tl
bmREaXNwYXRjaGVySGFuZGxlcjo6RXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb25DYWxsYmFjaz4m
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBwZXJmb3JtTW91c2VJbnRlcmFjdGlvbihjb25zdCBTdHJp
bmcmIGhhbmRsZSwgY29uc3QgSlNPTjo6T2JqZWN0JiByZXF1ZXN0ZWRQb3NpdGlvbiwgY29uc3Qg
U3RyaW5nJiBtb3VzZUJ1dHRvbiwgY29uc3QgU3RyaW5nJiBtb3VzZUludGVyYWN0aW9uLCBjb25z
dCBKU09OOjpBcnJheSYga2V5TW9kaWZpZXJzLCBSZWY8UGVyZm9ybU1vdXNlSW50ZXJhY3Rpb25D
YWxsYmFjaz4mJikgZmluYWw7CiAgICAgdm9pZCBwZXJmb3JtS2V5Ym9hcmRJbnRlcmFjdGlvbnMo
Y29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbnN0IEpTT046OkFycmF5JiBpbnRlcmFjdGlvbnMsIFJl
ZjxQZXJmb3JtS2V5Ym9hcmRJbnRlcmFjdGlvbnNDYWxsYmFjaz4mJikgb3ZlcnJpZGU7CisgICAg
dm9pZCBwZXJmb3JtSW50ZXJhY3Rpb25TZXF1ZW5jZShjb25zdCBTdHJpbmcmIGhhbmRsZSwgY29u
c3QgSlNPTjo6QXJyYXkmIHNvdXJjZXMsIGNvbnN0IEpTT046OkFycmF5JiBzdGVwcywgUmVmPFBl
cmZvcm1JbnRlcmFjdGlvblNlcXVlbmNlQ2FsbGJhY2s+JiYpIG92ZXJyaWRlOworICAgIHZvaWQg
Y2FuY2VsSW50ZXJhY3Rpb25TZXF1ZW5jZShjb25zdCBTdHJpbmcmIGhhbmRsZSwgUmVmPENhbmNl
bEludGVyYWN0aW9uU2VxdWVuY2VDYWxsYmFjaz4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCB0YWtl
U2NyZWVuc2hvdChjb25zdCBTdHJpbmcmIGhhbmRsZSwgY29uc3QgU3RyaW5nKiBvcHRpb25hbEZy
YW1lSGFuZGxlLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsTm9kZUhhbmRsZSwgY29uc3QgYm9vbCog
b3B0aW9uYWxTY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBjb25zdCBib29sKiBvcHRpb25hbENsaXBU
b1ZpZXdwb3J0LCBSZWY8VGFrZVNjcmVlbnNob3RDYWxsYmFjaz4mJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCByZXNvbHZlQ2hpbGRGcmFtZUhhbmRsZShjb25zdCBTdHJpbmcmIGJyb3dzaW5nQ29udGV4
dEhhbmRsZSwgY29uc3QgU3RyaW5nKiBvcHRpb25hbEZyYW1lSGFuZGxlLCBjb25zdCBpbnQqIG9w
dGlvbmFsT3JkaW5hbCwgY29uc3QgU3RyaW5nKiBvcHRpb25hbE5hbWUsIGNvbnN0IFN0cmluZyog
b3B0aW9uYWxOb2RlSGFuZGxlLCBSZWY8UmVzb2x2ZUNoaWxkRnJhbWVIYW5kbGVDYWxsYmFjaz4m
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXNvbHZlUGFyZW50RnJhbWVIYW5kbGUoY29uc3QgU3Ry
aW5nJiBicm93c2luZ0NvbnRleHRIYW5kbGUsIGNvbnN0IFN0cmluZyYgZnJhbWVIYW5kbGUsIFJl
ZjxSZXNvbHZlUGFyZW50RnJhbWVIYW5kbGVDYWxsYmFjaz4mJikgb3ZlcnJpZGU7CkBAIC0xNzUs
NyArMTg1LDEwIEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgLy8gRXZlbnQgU2ltdWxhdGlvbiBT
dXBwb3J0LgotICAgIGJvb2wgaXNTaW11bGF0aW5nVXNlckludGVyYWN0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9zaW11bGF0aW5nVXNlckludGVyYWN0aW9uOyB9CisgICAgYm9vbCBpc1NpbXVsYXRp
bmdVc2VySW50ZXJhY3Rpb24oKSBjb25zdDsKKyAgICBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIm
IGlucHV0RGlzcGF0Y2hlckZvclBhZ2UoV2ViUGFnZVByb3h5Jik7CisgICAgU2ltdWxhdGVkSW5w
dXRTb3VyY2UqIGlucHV0U291cmNlRm9yVHlwZShTaW11bGF0ZWRJbnB1dFNvdXJjZTo6VHlwZSkg
Y29uc3Q7CisKICNpZiBQTEFURk9STShNQUMpCiAgICAgYm9vbCB3YXNFdmVudFN5bnRoZXNpemVk
Rm9yQXV0b21hdGlvbihOU0V2ZW50ICopOwogICAgIHZvaWQgbWFya0V2ZW50QXNTeW50aGVzaXpl
ZEZvckF1dG9tYXRpb24oTlNFdmVudCAqKTsKQEAgLTIxNSw5ICsyMjgsOSBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZGlkRGVsZXRlQ29va2llKHVpbnQ2NF90IGNhbGxiYWNrSUQsIGNvbnN0IFN0cmlu
ZyYgZXJyb3JUeXBlKTsKIAogICAgIC8vIFBsYXRmb3JtLWRlcGVuZGVudCBpbXBsZW1lbnRhdGlv
bnMuCi0gICAgdm9pZCBwbGF0Zm9ybVNpbXVsYXRlTW91c2VJbnRlcmFjdGlvbihXZWJQYWdlUHJv
eHkmLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgdmlld1Bvc2l0aW9uLCBJbnNwZWN0b3I6OlBy
b3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUludGVyYWN0aW9uLCBJbnNwZWN0b3I6OlByb3RvY29s
OjpBdXRvbWF0aW9uOjpNb3VzZUJ1dHRvbiwgV2ViRXZlbnQ6Ok1vZGlmaWVycyk7Ci0gICAgLy8g
U2ltdWxhdGVzIGEgc2luZ2xlIHZpcnR1YWwga2V5IGJlaW5nIHByZXNzZWQsIHN1Y2ggYXMgQ29u
dHJvbCwgRi1rZXlzLCBOdW1wYWQga2V5cywgZXRjLiBhcyBhbGxvd2VkIGJ5IHRoZSBwcm90b2Nv
bC4KLSAgICB2b2lkIHBsYXRmb3JtU2ltdWxhdGVLZXlTdHJva2UoV2ViUGFnZVByb3h5JiwgSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6S2V5Ym9hcmRJbnRlcmFjdGlvblR5cGUsIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXkpOworICAgIHZvaWQgcGxh
dGZvcm1TaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiwgTW91c2VJbnRlcmFj
dGlvbiwgV2ViTW91c2VFdmVudDo6QnV0dG9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbG9j
YXRpb25JblZpZXcsIFdlYkV2ZW50OjpNb2RpZmllcnMga2V5TW9kaWZpZXJzKTsKKyAgICAvLyBT
aW11bGF0ZXMgYSBzaW5nbGUgdmlydHVhbCBvciBjaGFyIGtleSBiZWluZyBwcmVzc2VkL3JlbGVh
c2VkLCBzdWNoIGFzICdhJywgQ29udHJvbCwgRi1rZXlzLCBOdW1wYWQga2V5cywgZXRjLiBhcyBh
bGxvd2VkIGJ5IHRoZSBwcm90b2NvbC4KKyAgICB2b2lkIHBsYXRmb3JtU2ltdWxhdGVLZXlib2Fy
ZEludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYsIEtleWJvYXJkSW50ZXJhY3Rpb24sIHN0ZDo6b3B0
aW9uYWw8VmlydHVhbEtleT4sIHN0ZDo6b3B0aW9uYWw8Q2hhcktleT4pOwogICAgIC8vIFNpbXVs
YXRlcyBrZXkgcHJlc3NlcyB0byBwcm9kdWNlIHRoZSBjb2RlcG9pbnRzIGluIGEgc3RyaW5nLiBP
bmUgb3IgbW9yZSBjb2RlIHBvaW50cyBhcmUgZGVsaXZlcmVkIGF0b21pY2FsbHkgYXQgZ3JhcGhl
bWUgY2x1c3RlciBib3VuZGFyaWVzLgogICAgIHZvaWQgcGxhdGZvcm1TaW11bGF0ZUtleVNlcXVl
bmNlKFdlYlBhZ2VQcm94eSYsIGNvbnN0IFN0cmluZyYpOwogICAgIC8vIEdldCBiYXNlNjQgZW5j
b2RlZCBQTkcgZGF0YSBmcm9tIGEgYml0bWFwLgpAQCAtMjg5LDEzICszMDIsMTUgQEAgcHJpdmF0
ZToKIAogICAgIGJvb2wgbV9wZXJtaXNzaW9uRm9yR2V0VXNlck1lZGlhIHsgdHJ1ZSB9OwogCi0g
ICAgLy8gVHJ1ZSBpZiBhIHN5bnRoZXNpemVkIGtleSBldmVudCBpcyBzdGlsbCBiZWluZyBwcm9j
ZXNzZWQuCi0gICAgYm9vbCBtX3NpbXVsYXRpbmdVc2VySW50ZXJhY3Rpb24geyBmYWxzZSB9Owot
CiAgICAgLy8gS2VlcCB0cmFjayBvZiBjdXJyZW50bHkgYWN0aXZlIG1vZGlmaWVycyBhY3Jvc3Mg
bXVsdGlwbGUga2V5c3Ryb2tlcy4KICAgICAvLyBNb3N0IHBsYXRmb3JtcyBkbyBub3QgdHJhY2sg
Y3VycmVudCBtb2RpZmllcnMgZnJvbSBzeW50aGVzaXplZCBldmVudHMuCiAgICAgdW5zaWduZWQg
bV9jdXJyZW50TW9kaWZpZXJzIHsgMCB9OwogCisgICAgLy8gU2ltdWxhdGVkSW5wdXREaXNwYXRj
aGVyIEFQSXMgdGFrZSBhIHNldCBvZiBpbnB1dCBzb3VyY2VzLiBXZSBhbHNvIGludGVybiB0aGVz
ZQorICAgIC8vIHNvIHRoYXQgcHJldmlvdXMgaW5wdXQgc291cmNlIHN0YXRlIGlzIHVzZWQgYXMg
aW5pdGlhbCBzdGF0ZSBmb3IgbGF0ZXIgY29tbWFuZHMuCisgICAgSGFzaFNldDxSZWY8U2ltdWxh
dGVkSW5wdXRTb3VyY2U+PiBtX2lucHV0U291cmNlczsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBS
ZWY8U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyPj4gbV9pbnB1dERpc3BhdGNoZXJzQnlQYWdlOwor
CiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAgICAgSW5zcGVjdG9yOjpGcm9udGVuZENo
YW5uZWwqIG1fcmVtb3RlQ2hhbm5lbCB7IG51bGxwdHIgfTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9ndGsvV2ViQXV0b21hdGlvblNlc3Np
b25HdGsuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9ndGsvV2ViQXV0
b21hdGlvblNlc3Npb25HdGsuY3BwCmluZGV4IDI4Y2Y3OTQ4YzgzYjdjZDE5MmMwM2MwN2E1MmE5
MDFkYjY4ZGVjZGEuLmJmMGQ1ZTY2OWQ1NmZmYmEwMTI1ZjNiM2U4MWNjNjUwN2NiMzBkZGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vZ3RrL1dlYkF1dG9t
YXRpb25TZXNzaW9uR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0
aW9uL2d0ay9XZWJBdXRvbWF0aW9uU2Vzc2lvbkd0ay5jcHAKQEAgLTQ4LDE1ICs0OCwxNSBAQCBz
dGF0aWMgdW5zaWduZWQgbW9kaWZpZXJzVG9FdmVudFN0YXRlKFdlYkV2ZW50OjpNb2RpZmllcnMg
bW9kaWZpZXJzKQogICAgIHJldHVybiBzdGF0ZTsKIH0KIAotc3RhdGljIHVuc2lnbmVkIG1vdXNl
QnV0dG9uVG9HZGtCdXR0b24oSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VC
dXR0b24gYnV0dG9uKQorc3RhdGljIHVuc2lnbmVkIG1vdXNlQnV0dG9uVG9HZGtCdXR0b24oV2Vi
TW91c2VFdmVudDo6QnV0dG9uIGJ1dHRvbikKIHsKICAgICBzd2l0Y2ggKGJ1dHRvbikgewotICAg
IGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VCdXR0b246Ok5vbmU6
Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1dHRvbjo6
TGVmdDoKKyAgICBjYXNlIFdlYk1vdXNlRXZlbnQ6Ok5vQnV0dG9uOgorICAgIGNhc2UgV2ViTW91
c2VFdmVudDo6TGVmdEJ1dHRvbjoKICAgICAgICAgcmV0dXJuIEdES19CVVRUT05fUFJJTUFSWTsK
LSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9uOjpN
aWRkbGU6CisgICAgY2FzZSBXZWJNb3VzZUV2ZW50OjpNaWRkbGVCdXR0b246CiAgICAgICAgIHJl
dHVybiBHREtfQlVUVE9OX01JRERMRTsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1
dG9tYXRpb246Ok1vdXNlQnV0dG9uOjpSaWdodDoKKyAgICBjYXNlIFdlYk1vdXNlRXZlbnQ6OlJp
Z2h0QnV0dG9uOgogICAgICAgICByZXR1cm4gR0RLX0JVVFRPTl9TRUNPTkRBUlk7CiAgICAgfQog
ICAgIHJldHVybiBHREtfQlVUVE9OX1BSSU1BUlk7CkBAIC0xMDEsMzAgKzEwMSwzMCBAQCBzdGF0
aWMgdm9pZCBkb01vdGlvbkV2ZW50KEd0a1dpZGdldCogd2lkZ2V0LCBjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYgbG9jYXRpb24sCiAgICAgZ3RrX21haW5fZG9fZXZlbnQoZXZlbnQuZ2V0KCkpOwog
fQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlTW91c2VJbnRl
cmFjdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiB2aWV3
UG9zaXRpb24sIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlSW50ZXJhY3Rp
b24gaW50ZXJhY3Rpb24sIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0
dG9uIGJ1dHRvbiwgV2ViRXZlbnQ6Ok1vZGlmaWVycyBrZXlNb2RpZmllcnMpCit2b2lkIFdlYkF1
dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlTW91c2VJbnRlcmFjdGlvbihXZWJQYWdl
UHJveHkmIHBhZ2UsIE1vdXNlSW50ZXJhY3Rpb24gaW50ZXJhY3Rpb24sIFdlYk1vdXNlRXZlbnQ6
OkJ1dHRvbiBidXR0b24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBsb2NhdGlvbkluVmlldywg
V2ViRXZlbnQ6Ok1vZGlmaWVycyBrZXlNb2RpZmllcnMpCiB7CiAgICAgdW5zaWduZWQgZ2RrQnV0
dG9uID0gbW91c2VCdXR0b25Ub0dka0J1dHRvbihidXR0b24pOwogICAgIHVuc2lnbmVkIHN0YXRl
ID0gbW9kaWZpZXJzVG9FdmVudFN0YXRlKGtleU1vZGlmaWVycyk7CiAKICAgICBzd2l0Y2ggKGlu
dGVyYWN0aW9uKSB7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpN
b3VzZUludGVyYWN0aW9uOjpNb3ZlOgotICAgICAgICBkb01vdGlvbkV2ZW50KHBhZ2Uudmlld1dp
ZGdldCgpLCB2aWV3UG9zaXRpb24sIHN0YXRlKTsKKyAgICBjYXNlIE1vdXNlSW50ZXJhY3Rpb246
Ok1vdmU6CisgICAgICAgIGRvTW90aW9uRXZlbnQocGFnZS52aWV3V2lkZ2V0KCksIGxvY2F0aW9u
SW5WaWV3LCBzdGF0ZSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbjo6TW91c2VJbnRlcmFjdGlvbjo6RG93bjoKLSAgICAgICAgZG9Nb3Vz
ZUV2ZW50KEdES19CVVRUT05fUFJFU1MsIHBhZ2Uudmlld1dpZGdldCgpLCB2aWV3UG9zaXRpb24s
IGdka0J1dHRvbiwgc3RhdGUpOworICAgIGNhc2UgTW91c2VJbnRlcmFjdGlvbjo6RG93bjoKKyAg
ICAgICAgZG9Nb3VzZUV2ZW50KEdES19CVVRUT05fUFJFU1MsIHBhZ2Uudmlld1dpZGdldCgpLCBs
b2NhdGlvbkluVmlldywgZ2RrQnV0dG9uLCBzdGF0ZSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNh
c2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VJbnRlcmFjdGlvbjo6VXA6
Ci0gICAgICAgIGRvTW91c2VFdmVudChHREtfQlVUVE9OX1JFTEVBU0UsIHBhZ2Uudmlld1dpZGdl
dCgpLCB2aWV3UG9zaXRpb24sIGdka0J1dHRvbiwgc3RhdGUpOworICAgIGNhc2UgTW91c2VJbnRl
cmFjdGlvbjo6VXA6CisgICAgICAgIGRvTW91c2VFdmVudChHREtfQlVUVE9OX1JFTEVBU0UsIHBh
Z2Uudmlld1dpZGdldCgpLCBsb2NhdGlvbkluVmlldywgZ2RrQnV0dG9uLCBzdGF0ZSk7CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91
c2VJbnRlcmFjdGlvbjo6U2luZ2xlQ2xpY2s6Ci0gICAgICAgIGRvTW91c2VFdmVudChHREtfQlVU
VE9OX1BSRVNTLCBwYWdlLnZpZXdXaWRnZXQoKSwgdmlld1Bvc2l0aW9uLCBnZGtCdXR0b24sIHN0
YXRlKTsKLSAgICAgICAgZG9Nb3VzZUV2ZW50KEdES19CVVRUT05fUkVMRUFTRSwgcGFnZS52aWV3
V2lkZ2V0KCksIHZpZXdQb3NpdGlvbiwgZ2RrQnV0dG9uLCBzdGF0ZSk7CisgICAgY2FzZSBNb3Vz
ZUludGVyYWN0aW9uOjpTaW5nbGVDbGljazoKKyAgICAgICAgZG9Nb3VzZUV2ZW50KEdES19CVVRU
T05fUFJFU1MsIHBhZ2Uudmlld1dpZGdldCgpLCBsb2NhdGlvbkluVmlldywgZ2RrQnV0dG9uLCBz
dGF0ZSk7CisgICAgICAgIGRvTW91c2VFdmVudChHREtfQlVUVE9OX1JFTEVBU0UsIHBhZ2Uudmll
d1dpZGdldCgpLCBsb2NhdGlvbkluVmlldywgZ2RrQnV0dG9uLCBzdGF0ZSk7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VJbnRl
cmFjdGlvbjo6RG91YmxlQ2xpY2s6Ci0gICAgICAgIGRvTW91c2VFdmVudChHREtfQlVUVE9OX1BS
RVNTLCBwYWdlLnZpZXdXaWRnZXQoKSwgdmlld1Bvc2l0aW9uLCBnZGtCdXR0b24sIHN0YXRlKTsK
LSAgICAgICAgZG9Nb3VzZUV2ZW50KEdES19CVVRUT05fUkVMRUFTRSwgcGFnZS52aWV3V2lkZ2V0
KCksIHZpZXdQb3NpdGlvbiwgZ2RrQnV0dG9uLCBzdGF0ZSk7Ci0gICAgICAgIGRvTW91c2VFdmVu
dChHREtfQlVUVE9OX1BSRVNTLCBwYWdlLnZpZXdXaWRnZXQoKSwgdmlld1Bvc2l0aW9uLCBnZGtC
dXR0b24sIHN0YXRlKTsKLSAgICAgICAgZG9Nb3VzZUV2ZW50KEdES19CVVRUT05fUkVMRUFTRSwg
cGFnZS52aWV3V2lkZ2V0KCksIHZpZXdQb3NpdGlvbiwgZ2RrQnV0dG9uLCBzdGF0ZSk7CisgICAg
Y2FzZSBNb3VzZUludGVyYWN0aW9uOjpEb3VibGVDbGljazoKKyAgICAgICAgZG9Nb3VzZUV2ZW50
KEdES19CVVRUT05fUFJFU1MsIHBhZ2Uudmlld1dpZGdldCgpLCBsb2NhdGlvbkluVmlldywgZ2Rr
QnV0dG9uLCBzdGF0ZSk7CisgICAgICAgIGRvTW91c2VFdmVudChHREtfQlVUVE9OX1JFTEVBU0Us
IHBhZ2Uudmlld1dpZGdldCgpLCBsb2NhdGlvbkluVmlldywgZ2RrQnV0dG9uLCBzdGF0ZSk7Cisg
ICAgICAgIGRvTW91c2VFdmVudChHREtfQlVUVE9OX1BSRVNTLCBwYWdlLnZpZXdXaWRnZXQoKSwg
bG9jYXRpb25JblZpZXcsIGdka0J1dHRvbiwgc3RhdGUpOworICAgICAgICBkb01vdXNlRXZlbnQo
R0RLX0JVVFRPTl9SRUxFQVNFLCBwYWdlLnZpZXdXaWRnZXQoKSwgbG9jYXRpb25JblZpZXcsIGdk
a0J1dHRvbiwgc3RhdGUpOwogICAgICAgICBicmVhazsKICAgICB9CiB9CkBAIC0yODAsMjAgKzI4
MCwyNyBAQCBzdGF0aWMgaW50IGtleUNvZGVGb3JWaXJ0dWFsS2V5KEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXkga2V5LAogICAgIHJldHVybiAwOwogfQogCi12b2lk
IFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlS2V5U3Ryb2tlKFdlYlBhZ2VQ
cm94eSYgcGFnZSwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6S2V5Ym9hcmRJbnRl
cmFjdGlvblR5cGUgaW50ZXJhY3Rpb24sIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246
OlZpcnR1YWxLZXkga2V5KQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11
bGF0ZUtleWJvYXJkSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBLZXlib2FyZEludGVy
YWN0aW9uIGludGVyYWN0aW9uLCBzdGQ6Om9wdGlvbmFsPFZpcnR1YWxLZXk+IHZpcnR1YWxLZXks
IHN0ZDo6b3B0aW9uYWw8Q2hhcktleT4gY2hhcktleSkKIHsKKyAgICBBU1NFUlQodmlydHVhbEtl
eS5oYXNfdmFsdWUoKSB8fCBjaGFyS2V5Lmhhc192YWx1ZSgpKTsKKwogICAgIEdka01vZGlmaWVy
VHlwZSB1cGRhdGVTdGF0ZTsKLSAgICBhdXRvIGtleUNvZGUgPSBrZXlDb2RlRm9yVmlydHVhbEtl
eShrZXksIHVwZGF0ZVN0YXRlKTsKKyAgICBpbnQga2V5Q29kZTsKKyAgICBpZiAodmlydHVhbEtl
eS5oYXNfdmFsdWUoKSkKKyAgICAgICAga2V5Q29kZSA9IGtleUNvZGVGb3JWaXJ0dWFsS2V5KHZp
cnR1YWxLZXkudmFsdWUoKSwgdXBkYXRlU3RhdGUpOworICAgIGVsc2UKKyAgICAgICAga2V5Q29k
ZSA9IGdka191bmljb2RlX3RvX2tleXZhbChnX3V0ZjhfZ2V0X2NoYXIoJmNoYXJLZXkudmFsdWUo
KSkpOworCiAgICAgc3dpdGNoIChpbnRlcmFjdGlvbikgewotICAgIGNhc2UgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXV0b21hdGlvbjo6S2V5Ym9hcmRJbnRlcmFjdGlvblR5cGU6OktleVByZXNzOgor
ICAgIGNhc2UgS2V5Ym9hcmRJbnRlcmFjdGlvbjo6S2V5UHJlc3M6CiAgICAgICAgIG1fY3VycmVu
dE1vZGlmaWVycyB8PSB1cGRhdGVTdGF0ZTsKICAgICAgICAgZG9LZXlTdHJva2VFdmVudChHREtf
S0VZX1BSRVNTLCBwYWdlLnZpZXdXaWRnZXQoKSwga2V5Q29kZSwgbV9jdXJyZW50TW9kaWZpZXJz
KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uOjpLZXlib2FyZEludGVyYWN0aW9uVHlwZTo6S2V5UmVsZWFzZToKKyAgICBjYXNlIEtleWJv
YXJkSW50ZXJhY3Rpb246OktleVJlbGVhc2U6CiAgICAgICAgIG1fY3VycmVudE1vZGlmaWVycyAm
PSB+dXBkYXRlU3RhdGU7CiAgICAgICAgIGRvS2V5U3Ryb2tlRXZlbnQoR0RLX0tFWV9SRUxFQVNF
LCBwYWdlLnZpZXdXaWRnZXQoKSwga2V5Q29kZSwgbV9jdXJyZW50TW9kaWZpZXJzKTsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpLZXli
b2FyZEludGVyYWN0aW9uVHlwZTo6SW5zZXJ0QnlLZXk6CisgICAgY2FzZSBLZXlib2FyZEludGVy
YWN0aW9uOjpJbnNlcnRCeUtleToKICAgICAgICAgZG9LZXlTdHJva2VFdmVudChHREtfS0VZX1BS
RVNTLCBwYWdlLnZpZXdXaWRnZXQoKSwga2V5Q29kZSwgbV9jdXJyZW50TW9kaWZpZXJzLCB0cnVl
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQXV0b21hdGlvbi9pb3MvV2ViQXV0b21hdGlvblNlc3Npb25JT1MubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2lvcy9XZWJBdXRvbWF0aW9uU2Vzc2lvbklPUy5t
bQppbmRleCA1Zjc0YWRlZGY3NWZlNTY5MmMyOGQ4NDQ4NTkyZjIyMzU0YjY4ZDZjLi5hMDgzYzI5
OWUzOWY0NTc5MmQ4ZDA4OGVmN2I2NDFhNjUwNTg4ZjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2lvcy9XZWJBdXRvbWF0aW9uU2Vzc2lvbklPUy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2lvcy9XZWJBdXRvbWF0aW9u
U2Vzc2lvbklPUy5tbQpAQCAtNjUsMzcgKzY1LDQ5IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Np
b246OnNlbmRTeW50aGVzaXplZEV2ZW50c1RvUGFnZShXZWJQYWdlUHJveHkmIHBhZ2UsIE5TQXJy
CiAKICNwcmFnbWEgbWFyayBDb21tYW5kcyBmb3IgUGxhdGZvcm06ICdpT1MnCiAKLXZvaWQgV2Vi
QXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVLZXlTdHJva2UoV2ViUGFnZVByb3h5
JiBwYWdlLCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpLZXlib2FyZEludGVyYWN0
aW9uVHlwZSBpbnRlcmFjdGlvbiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6Vmly
dHVhbEtleSBrZXkpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRl
S2V5Ym9hcmRJbnRlcmFjdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIEtleWJvYXJkSW50ZXJhY3Rp
b24gaW50ZXJhY3Rpb24sIHN0ZDo6b3B0aW9uYWw8VmlydHVhbEtleT4gdmlydHVhbEtleSwgc3Rk
OjpvcHRpb25hbDxDaGFyS2V5PiBjaGFyS2V5KQogeworICAgIEFTU0VSVCh2aXJ0dWFsS2V5Lmhh
c192YWx1ZSgpIHx8IGNoYXJLZXkuaGFzX3ZhbHVlKCkpOworCiAgICAgLy8gVGhlIG1vZGlmaWVy
cyBjaGFuZ2VkIGJ5IHRoZSB2aXJ0dWFsIGtleSB3aGVuIGl0IGlzIHByZXNzZWQgb3IgcmVsZWFz
ZWQuCiAgICAgV2ViRXZlbnRGbGFncyBjaGFuZ2VkTW9kaWZpZXJzID0gMDsKIAotICAgIC8vIEZp
Z3VyZSBvdXQgdGhlIGVmZmVjdHMgb2Ygc3RpY2t5IG1vZGlmaWVycy4KLSAgICBzd2l0Y2ggKGtl
eSkgewotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtl
eTo6U2hpZnQ6Ci0gICAgICAgIGNoYW5nZWRNb2RpZmllcnMgfD0gV2ViRXZlbnRGbGFnTWFza1No
aWZ0OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9t
YXRpb246OlZpcnR1YWxLZXk6OkNvbnRyb2w6Ci0gICAgICAgIGNoYW5nZWRNb2RpZmllcnMgfD0g
V2ViRXZlbnRGbGFnTWFza0NvbnRyb2w7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6QWx0ZXJuYXRlOgotICAgICAg
ICBjaGFuZ2VkTW9kaWZpZXJzIHw9IFdlYkV2ZW50RmxhZ01hc2tBbHRlcm5hdGU7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVh
bEtleTo6TWV0YToKLSAgICAgICAgLy8gVGhlICdtZXRhJyBrZXkgZG9lcyBub3QgZXhpc3Qgb24g
QXBwbGUga2V5Ym9hcmRzIGFuZCBpcyB1c3VhbGx5Ci0gICAgICAgIC8vIG1hcHBlZCB0byB0aGUg
Q29tbWFuZCBrZXkgd2hlbiB1c2luZyB0aGlyZC1wYXJ0eSBrZXlib2FyZHMuCi0gICAgY2FzZSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpDb21tYW5kOgotICAg
ICAgICBjaGFuZ2VkTW9kaWZpZXJzIHw9IFdlYkV2ZW50RmxhZ01hc2tDb21tYW5kOwotICAgICAg
ICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBicmVhazsKLSAgICB9Ci0KICAgICAvLyBV
SUtpdCBkb2VzIG5vdCBzZW5kIGtleSBjb2RlcyBmb3IgdmlydHVhbCBrZXlzIGV2ZW4gZm9yIGEg
aGFyZHdhcmUga2V5Ym9hcmQuCiAgICAgLy8gSW5zdGVhZCwgaXQgc2VuZHMgc2luZ2xlIHVuaWNo
YXJzIGFuZCBXZWJDb3JlIG1hcHMgdGhlc2UgdG8gIndpbmRvd3MiIGtleSBjb2Rlcy4KICAgICAv
LyBTeW50aGVzaXplIGEgc2luZ2xlIHVuaWNoYXIgc3VjaCB0aGF0IHRoZSBjb3JyZWN0IGtleSBj
b2RlIGlzIGluZmVycmVkLgotICAgIHN0ZDo6b3B0aW9uYWw8dW5pY2hhcj4gY2hhckNvZGUgPSBj
aGFyQ29kZUZvclZpcnR1YWxLZXkoa2V5KTsKLSAgICBzdGQ6Om9wdGlvbmFsPHVuaWNoYXI+IGNo
YXJDb2RlSWdub3JpbmdNb2RpZmllcnMgPSBjaGFyQ29kZUlnbm9yaW5nTW9kaWZpZXJzRm9yVmly
dHVhbEtleShrZXkpOworICAgIHN0ZDo6b3B0aW9uYWw8dW5pY2hhcj4gY2hhckNvZGU7CisgICAg
c3RkOjpvcHRpb25hbDx1bmljaGFyPiBjaGFyQ29kZUlnbm9yaW5nTW9kaWZpZXJzOworCisgICAg
Ly8gRmlndXJlIG91dCB0aGUgZWZmZWN0cyBvZiBzdGlja3kgbW9kaWZpZXJzLgorICAgIGlmICh2
aXJ0dWFsS2V5Lmhhc192YWx1ZSgpKSB7CisgICAgICAgIGNoYXJDb2RlID0gY2hhckNvZGVGb3JW
aXJ0dWFsS2V5KHZpcnR1YWxLZXkudmFsdWUoKSk7CisgICAgICAgIGNoYXJDb2RlSWdub3JpbmdN
b2RpZmllcnMgPSBjaGFyQ29kZUlnbm9yaW5nTW9kaWZpZXJzRm9yVmlydHVhbEtleSh2aXJ0dWFs
S2V5LnZhbHVlKCkpOworCisgICAgICAgIHN3aXRjaCAodmlydHVhbEtleS52YWx1ZSgpKSB7Cisg
ICAgICAgIGNhc2UgVmlydHVhbEtleTo6U2hpZnQ6CisgICAgICAgICAgICBjaGFuZ2VkTW9kaWZp
ZXJzIHw9IFdlYkV2ZW50RmxhZ01hc2tTaGlmdDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIFZpcnR1YWxLZXk6OkNvbnRyb2w6CisgICAgICAgICAgICBjaGFuZ2VkTW9kaWZpZXJz
IHw9IFdlYkV2ZW50RmxhZ01hc2tDb250cm9sOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgVmlydHVhbEtleTo6QWx0ZXJuYXRlOgorICAgICAgICAgICAgY2hhbmdlZE1vZGlmaWVy
cyB8PSBXZWJFdmVudEZsYWdNYXNrQWx0ZXJuYXRlOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgVmlydHVhbEtleTo6TWV0YToKKyAgICAgICAgICAgIC8vIFRoZSAnbWV0YScga2V5
IGRvZXMgbm90IGV4aXN0IG9uIEFwcGxlIGtleWJvYXJkcyBhbmQgaXMgdXN1YWxseQorICAgICAg
ICAgICAgLy8gbWFwcGVkIHRvIHRoZSBDb21tYW5kIGtleSB3aGVuIHVzaW5nIHRoaXJkLXBhcnR5
IGtleWJvYXJkcy4KKyAgICAgICAgY2FzZSBWaXJ0dWFsS2V5OjpDb21tYW5kOgorICAgICAgICAg
ICAgY2hhbmdlZE1vZGlmaWVycyB8PSBXZWJFdmVudEZsYWdNYXNrQ29tbWFuZDsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBpZiAoY2hhcktleS5oYXNfdmFsdWUoKSkgeworICAgICAgICBjaGFy
Q29kZSA9ICh1bmljaGFyKWNoYXJLZXkudmFsdWUoKTsKKyAgICAgICAgY2hhckNvZGVJZ25vcmlu
Z01vZGlmaWVycyA9ICh1bmljaGFyKWNoYXJLZXkudmFsdWUoKTsKKyAgICB9CiAKICAgICAvLyBG
SVhNRTogY29uc2lkZXIgdXNpbmcgVUlLaXQgU1BJIHRvIG5vcm1hbGl6ZSAnY2hhcmFjdGVycycs
IGkuZS4sIGNoYW5naW5nICogdG8gU2hpZnQtOCwKICAgICAvLyBhbmQgcGFzc2luZyB0aGF0IGlu
IHRvIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycy4gVGhpcyBpcyBwcm9iYWJseSBub3Qgd29y
dGggdGhlIHRyb3VibGUKQEAgLTExNSwxOSArMTI3LDE5IEBAIHZvaWQgV2ViQXV0b21hdGlvblNl
c3Npb246OnBsYXRmb3JtU2ltdWxhdGVLZXlTdHJva2UoV2ViUGFnZVByb3h5JiBwYWdlLCBJbnNw
ZWN0CiAgICAgYXV0byBldmVudHNUb0JlU2VudCA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBh
bGxvY10gaW5pdF0pOwogCiAgICAgc3dpdGNoIChpbnRlcmFjdGlvbikgewotICAgIGNhc2UgSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6S2V5Ym9hcmRJbnRlcmFjdGlvblR5cGU6Oktl
eVByZXNzOiB7CisgICAgY2FzZSBLZXlib2FyZEludGVyYWN0aW9uOjpLZXlQcmVzczogewogICAg
ICAgICBtX2N1cnJlbnRNb2RpZmllcnMgfD0gY2hhbmdlZE1vZGlmaWVyczsKIAogICAgICAgICBb
ZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltbWzo6V2ViRXZlbnQgYWxsb2NdIGluaXRXaXRoS2V5
RXZlbnRUeXBlOldlYkV2ZW50S2V5RG93biB0aW1lU3RhbXA6Q0ZBYnNvbHV0ZVRpbWVHZXRDdXJy
ZW50KCkgY2hhcmFjdGVyczpjaGFyYWN0ZXJzIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczp1
bm1vZGlmaWVkQ2hhcmFjdGVycyBtb2RpZmllcnM6bV9jdXJyZW50TW9kaWZpZXJzIGlzUmVwZWF0
aW5nOk5PIHdpdGhGbGFnczppbnB1dEZsYWdzIHdpdGhJbnB1dE1hbmFnZXJIaW50Om5pbCBrZXlD
b2RlOmtleUNvZGUgaXNUYWJLZXk6aXNUYWJLZXldIGF1dG9yZWxlYXNlXV07CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Oktl
eWJvYXJkSW50ZXJhY3Rpb25UeXBlOjpLZXlSZWxlYXNlOiB7CisgICAgY2FzZSBLZXlib2FyZElu
dGVyYWN0aW9uOjpLZXlSZWxlYXNlOiB7CiAgICAgICAgIG1fY3VycmVudE1vZGlmaWVycyAmPSB+
Y2hhbmdlZE1vZGlmaWVyczsKIAogICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0Oltb
Wzo6V2ViRXZlbnQgYWxsb2NdIGluaXRXaXRoS2V5RXZlbnRUeXBlOldlYkV2ZW50S2V5VXAgdGlt
ZVN0YW1wOkNGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpIGNoYXJhY3RlcnM6Y2hhcmFjdGVycyBj
aGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6dW5tb2RpZmllZENoYXJhY3RlcnMgbW9kaWZpZXJz
Om1fY3VycmVudE1vZGlmaWVycyBpc1JlcGVhdGluZzpOTyB3aXRoRmxhZ3M6aW5wdXRGbGFncyB3
aXRoSW5wdXRNYW5hZ2VySGludDpuaWwga2V5Q29kZTprZXlDb2RlIGlzVGFiS2V5OmlzVGFiS2V5
XSBhdXRvcmVsZWFzZV1dOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpLZXlib2FyZEludGVyYWN0aW9uVHlwZTo6SW5zZXJ0
QnlLZXk6IHsKKyAgICBjYXNlIEtleWJvYXJkSW50ZXJhY3Rpb246Okluc2VydEJ5S2V5OiB7CiAg
ICAgICAgIC8vIE1vZGlmaWVycyBvbmx5IGNoYW5nZSB3aXRoIEtleVByZXNzIG9yIEtleVJlbGVh
c2UsIHRoaXMgY29kZSBwYXRoIGlzIGZvciBzaW5nbGUgY2hhcmFjdGVycy4KICAgICAgICAgW2V2
ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbW1s6OldlYkV2ZW50IGFsbG9jXSBpbml0V2l0aEtleUV2
ZW50VHlwZTpXZWJFdmVudEtleURvd24gdGltZVN0YW1wOkNGQWJzb2x1dGVUaW1lR2V0Q3VycmVu
dCgpIGNoYXJhY3RlcnM6Y2hhcmFjdGVycyBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6dW5t
b2RpZmllZENoYXJhY3RlcnMgbW9kaWZpZXJzOm1fY3VycmVudE1vZGlmaWVycyBpc1JlcGVhdGlu
ZzpOTyB3aXRoRmxhZ3M6aW5wdXRGbGFncyB3aXRoSW5wdXRNYW5hZ2VySGludDpuaWwga2V5Q29k
ZTprZXlDb2RlIGlzVGFiS2V5OmlzVGFiS2V5XSBhdXRvcmVsZWFzZV1dOwogICAgICAgICBbZXZl
bnRzVG9CZVNlbnQgYWRkT2JqZWN0OltbWzo6V2ViRXZlbnQgYWxsb2NdIGluaXRXaXRoS2V5RXZl
bnRUeXBlOldlYkV2ZW50S2V5VXAgdGltZVN0YW1wOkNGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgp
IGNoYXJhY3RlcnM6Y2hhcmFjdGVycyBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6dW5tb2Rp
ZmllZENoYXJhY3RlcnMgbW9kaWZpZXJzOm1fY3VycmVudE1vZGlmaWVycyBpc1JlcGVhdGluZzpO
TyB3aXRoRmxhZ3M6aW5wdXRGbGFncyB3aXRoSW5wdXRNYW5hZ2VySGludDpuaWwga2V5Q29kZTpr
ZXlDb2RlIGlzVGFiS2V5OmlzVGFiS2V5XSBhdXRvcmVsZWFzZV1dOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9tYWMvV2ViQXV0b21hdGlvblNlc3Npb25N
YWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL21hYy9XZWJBdXRvbWF0
aW9uU2Vzc2lvbk1hYy5tbQppbmRleCAzYjVlNTU4YzY0YzNkYTc2N2E5ODllZDY0MjBhNzc1ZjJj
MWE2MTMyLi5mNDYwYTM4NjUzZGM2NGVlNjYxNzkwNzMwYzE4Y2JmYjRlMGYyYjYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL21hYy9XZWJBdXRvbWF0aW9u
U2Vzc2lvbk1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL21h
Yy9XZWJBdXRvbWF0aW9uU2Vzc2lvbk1hYy5tbQpAQCAtMTE4LDExICsxMTgsMTEgQEAgYm9vbCBX
ZWJBdXRvbWF0aW9uU2Vzc2lvbjo6d2FzRXZlbnRTeW50aGVzaXplZEZvckF1dG9tYXRpb24oTlNF
dmVudCAqZXZlbnQpCiAKICNwcmFnbWEgbWFyayBQbGF0Zm9ybS1kZXBlbmRlbnQgSW1wbGVtZW50
YXRpb25zCiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVNb3Vz
ZUludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
IHZpZXdQb3NpdGlvbiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VJbnRl
cmFjdGlvbiBpbnRlcmFjdGlvbiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91
c2VCdXR0b24gYnV0dG9uLCBXZWJFdmVudDo6TW9kaWZpZXJzIGtleU1vZGlmaWVycykKK3ZvaWQg
V2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVNb3VzZUludGVyYWN0aW9uKFdl
YlBhZ2VQcm94eSYgcGFnZSwgTW91c2VJbnRlcmFjdGlvbiBpbnRlcmFjdGlvbiwgV2ViTW91c2VF
dmVudDo6QnV0dG9uIGJ1dHRvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGxvY2F0aW9uSW5W
aWV3LCBXZWJFdmVudDo6TW9kaWZpZXJzIGtleU1vZGlmaWVycykKIHsKICAgICBJbnRSZWN0IHdp
bmRvd1JlY3Q7Ci0gICAgcGFnZS5yb290Vmlld1RvV2luZG93KEludFJlY3Qodmlld1Bvc2l0aW9u
LCBJbnRTaXplKCkpLCB3aW5kb3dSZWN0KTsKLSAgICBJbnRQb2ludCB3aW5kb3dQb3NpdGlvbiA9
IHdpbmRvd1JlY3QubG9jYXRpb24oKTsKKyAgICBwYWdlLnJvb3RWaWV3VG9XaW5kb3coSW50UmVj
dChsb2NhdGlvbkluVmlldywgSW50U2l6ZSgpKSwgd2luZG93UmVjdCk7CisgICAgSW50UG9pbnQg
bG9jYXRpb25JbldpbmRvdyA9IHdpbmRvd1JlY3QubG9jYXRpb24oKTsKIAogICAgIE5TRXZlbnRN
b2RpZmllckZsYWdzIG1vZGlmaWVycyA9IDA7CiAgICAgaWYgKGtleU1vZGlmaWVycyAmIFdlYkV2
ZW50OjpNZXRhS2V5KQpAQCAtMTQ0LDIwICsxNDQsMjAgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vz
c2lvbjo6cGxhdGZvcm1TaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdl
LAogICAgIE5TRXZlbnRUeXBlIGRyYWdFdmVudFR5cGUgPSAoTlNFdmVudFR5cGUpMDsKICAgICBO
U0V2ZW50VHlwZSB1cEV2ZW50VHlwZSA9IChOU0V2ZW50VHlwZSkwOwogICAgIHN3aXRjaCAoYnV0
dG9uKSB7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1
dHRvbjo6Tm9uZToKKyAgICBjYXNlIFdlYk1vdXNlRXZlbnQ6Ok5vQnV0dG9uOgogICAgICAgICBk
b3duRXZlbnRUeXBlID0gdXBFdmVudFR5cGUgPSBkcmFnRXZlbnRUeXBlID0gTlNFdmVudFR5cGVN
b3VzZU1vdmVkOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9uOjpMZWZ0OgorICAgIGNhc2UgV2ViTW91c2VFdmVudDo6
TGVmdEJ1dHRvbjoKICAgICAgICAgZG93bkV2ZW50VHlwZSA9IE5TRXZlbnRUeXBlTGVmdE1vdXNl
RG93bjsKICAgICAgICAgZHJhZ0V2ZW50VHlwZSA9IE5TRXZlbnRUeXBlTGVmdE1vdXNlRHJhZ2dl
ZDsKICAgICAgICAgdXBFdmVudFR5cGUgPSBOU0V2ZW50VHlwZUxlZnRNb3VzZVVwOwogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNl
QnV0dG9uOjpNaWRkbGU6CisgICAgY2FzZSBXZWJNb3VzZUV2ZW50OjpNaWRkbGVCdXR0b246CiAg
ICAgICAgIGRvd25FdmVudFR5cGUgPSBOU0V2ZW50VHlwZU90aGVyTW91c2VEb3duOwogICAgICAg
ICBkcmFnRXZlbnRUeXBlID0gTlNFdmVudFR5cGVMZWZ0TW91c2VEcmFnZ2VkOwogICAgICAgICB1
cEV2ZW50VHlwZSA9IE5TRXZlbnRUeXBlT3RoZXJNb3VzZVVwOwogICAgICAgICBicmVhazsKLSAg
ICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9uOjpSaWdo
dDoKKyAgICBjYXNlIFdlYk1vdXNlRXZlbnQ6OlJpZ2h0QnV0dG9uOgogICAgICAgICBkb3duRXZl
bnRUeXBlID0gTlNFdmVudFR5cGVSaWdodE1vdXNlRG93bjsKICAgICAgICAgdXBFdmVudFR5cGUg
PSBOU0V2ZW50VHlwZVJpZ2h0TW91c2VVcDsKICAgICAgICAgYnJlYWs7CkBAIC0xNjgsNTYgKzE2
OCw1NiBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlTW91c2VJ
bnRlcmFjdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsCiAgICAgTlNJbnRlZ2VyIGV2ZW50TnVtYmVy
ID0gc3ludGhlc2l6ZWRNb3VzZUV2ZW50TWFnaWNFdmVudE51bWJlcjsKIAogICAgIHN3aXRjaCAo
aW50ZXJhY3Rpb24pIHsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246
Ok1vdXNlSW50ZXJhY3Rpb246Ok1vdmU6CisgICAgY2FzZSBNb3VzZUludGVyYWN0aW9uOjpNb3Zl
OgogICAgICAgICBBU1NFUlQoZHJhZ0V2ZW50VHlwZSk7Ci0gICAgICAgIFtldmVudHNUb0JlU2Vu
dCBhZGRPYmplY3Q6W05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOmRyYWdFdmVudFR5cGUgbG9j
YXRpb246d2luZG93UG9zaXRpb24gbW9kaWZpZXJGbGFnczptb2RpZmllcnMgdGltZXN0YW1wOnRp
bWVzdGFtcCB3aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmlsIGV2ZW50TnVtYmVy
OmV2ZW50TnVtYmVyIGNsaWNrQ291bnQ6MCBwcmVzc3VyZTowLjBmXV07CisgICAgICAgIFtldmVu
dHNUb0JlU2VudCBhZGRPYmplY3Q6W05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOmRyYWdFdmVu
dFR5cGUgbG9jYXRpb246bG9jYXRpb25JbldpbmRvdyBtb2RpZmllckZsYWdzOm1vZGlmaWVycyB0
aW1lc3RhbXA6dGltZXN0YW1wIHdpbmRvd051bWJlcjp3aW5kb3dOdW1iZXIgY29udGV4dDpuaWwg
ZXZlbnROdW1iZXI6ZXZlbnROdW1iZXIgY2xpY2tDb3VudDowIHByZXNzdXJlOjAuMGZdXTsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpN
b3VzZUludGVyYWN0aW9uOjpEb3duOgorICAgIGNhc2UgTW91c2VJbnRlcmFjdGlvbjo6RG93bjoK
ICAgICAgICAgQVNTRVJUKGRvd25FdmVudFR5cGUpOwogCiAgICAgICAgIC8vIEhhcmQtY29kZSB0
aGUgY2xpY2sgY291bnQgdG8gb25lLCBzaW5jZSBjbGllbnRzIGRvbid0IGV4cGVjdCBzdWNjZXNz
aXZlIHNpbXVsYXRlZAogICAgICAgICAvLyBkb3duL3VwIGV2ZW50cyB0byBiZSBwb3RlbnRpYWxs
eSBjb3VudGVkIGFzIGEgZG91YmxlIGNsaWNrIGV2ZW50LgotICAgICAgICBbZXZlbnRzVG9CZVNl
bnQgYWRkT2JqZWN0OltOU0V2ZW50IG1vdXNlRXZlbnRXaXRoVHlwZTpkb3duRXZlbnRUeXBlIGxv
Y2F0aW9uOndpbmRvd1Bvc2l0aW9uIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJzIHRpbWVzdGFtcDp0
aW1lc3RhbXAgd2luZG93TnVtYmVyOndpbmRvd051bWJlciBjb250ZXh0Om5pbCBldmVudE51bWJl
cjpldmVudE51bWJlciBjbGlja0NvdW50OjEgcHJlc3N1cmU6V2ViQ29yZTo6Rm9yY2VBdENsaWNr
XV07CisgICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmplY3Q6W05TRXZlbnQgbW91c2VFdmVu
dFdpdGhUeXBlOmRvd25FdmVudFR5cGUgbG9jYXRpb246bG9jYXRpb25JbldpbmRvdyBtb2RpZmll
ckZsYWdzOm1vZGlmaWVycyB0aW1lc3RhbXA6dGltZXN0YW1wIHdpbmRvd051bWJlcjp3aW5kb3dO
dW1iZXIgY29udGV4dDpuaWwgZXZlbnROdW1iZXI6ZXZlbnROdW1iZXIgY2xpY2tDb3VudDoxIHBy
ZXNzdXJlOldlYkNvcmU6OkZvcmNlQXRDbGlja11dOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlSW50ZXJhY3Rpb246OlVwOgor
ICAgIGNhc2UgTW91c2VJbnRlcmFjdGlvbjo6VXA6CiAgICAgICAgIEFTU0VSVCh1cEV2ZW50VHlw
ZSk7CiAKICAgICAgICAgLy8gSGFyZC1jb2RlIHRoZSBjbGljayBjb3VudCB0byBvbmUsIHNpbmNl
IGNsaWVudHMgZG9uJ3QgZXhwZWN0IHN1Y2Nlc3NpdmUgc2ltdWxhdGVkCiAgICAgICAgIC8vIGRv
d24vdXAgZXZlbnRzIHRvIGJlIHBvdGVudGlhbGx5IGNvdW50ZWQgYXMgYSBkb3VibGUgY2xpY2sg
ZXZlbnQuCi0gICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmplY3Q6W05TRXZlbnQgbW91c2VF
dmVudFdpdGhUeXBlOnVwRXZlbnRUeXBlIGxvY2F0aW9uOndpbmRvd1Bvc2l0aW9uIG1vZGlmaWVy
RmxhZ3M6bW9kaWZpZXJzIHRpbWVzdGFtcDp0aW1lc3RhbXAgd2luZG93TnVtYmVyOndpbmRvd051
bWJlciBjb250ZXh0Om5pbCBldmVudE51bWJlcjpldmVudE51bWJlciBjbGlja0NvdW50OjEgcHJl
c3N1cmU6MC4wZl1dOworICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltOU0V2ZW50
IG1vdXNlRXZlbnRXaXRoVHlwZTp1cEV2ZW50VHlwZSBsb2NhdGlvbjpsb2NhdGlvbkluV2luZG93
IG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJzIHRpbWVzdGFtcDp0aW1lc3RhbXAgd2luZG93TnVtYmVy
OndpbmRvd051bWJlciBjb250ZXh0Om5pbCBldmVudE51bWJlcjpldmVudE51bWJlciBjbGlja0Nv
dW50OjEgcHJlc3N1cmU6MC4wZl1dOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlSW50ZXJhY3Rpb246OlNpbmdsZUNsaWNrOgor
ICAgIGNhc2UgTW91c2VJbnRlcmFjdGlvbjo6U2luZ2xlQ2xpY2s6CiAgICAgICAgIEFTU0VSVCh1
cEV2ZW50VHlwZSk7CiAgICAgICAgIEFTU0VSVChkb3duRXZlbnRUeXBlKTsKIAogICAgICAgICAv
LyBTZW5kIHNlcGFyYXRlIGRvd24gYW5kIHVwIGV2ZW50cy4gV2ViQ29yZSB3aWxsIHNlZSB0aGlz
IGFzIGEgc2luZ2xlLWNsaWNrIGV2ZW50LgotICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2Jq
ZWN0OltOU0V2ZW50IG1vdXNlRXZlbnRXaXRoVHlwZTpkb3duRXZlbnRUeXBlIGxvY2F0aW9uOndp
bmRvd1Bvc2l0aW9uIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJzIHRpbWVzdGFtcDp0aW1lc3RhbXAg
d2luZG93TnVtYmVyOndpbmRvd051bWJlciBjb250ZXh0Om5pbCBldmVudE51bWJlcjpldmVudE51
bWJlciBjbGlja0NvdW50OjEgcHJlc3N1cmU6V2ViQ29yZTo6Rm9yY2VBdENsaWNrXV07Ci0gICAg
ICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmplY3Q6W05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBl
OnVwRXZlbnRUeXBlIGxvY2F0aW9uOndpbmRvd1Bvc2l0aW9uIG1vZGlmaWVyRmxhZ3M6bW9kaWZp
ZXJzIHRpbWVzdGFtcDp0aW1lc3RhbXAgd2luZG93TnVtYmVyOndpbmRvd051bWJlciBjb250ZXh0
Om5pbCBldmVudE51bWJlcjpldmVudE51bWJlciBjbGlja0NvdW50OjEgcHJlc3N1cmU6MC4wZl1d
OworICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltOU0V2ZW50IG1vdXNlRXZlbnRX
aXRoVHlwZTpkb3duRXZlbnRUeXBlIGxvY2F0aW9uOmxvY2F0aW9uSW5XaW5kb3cgbW9kaWZpZXJG
bGFnczptb2RpZmllcnMgdGltZXN0YW1wOnRpbWVzdGFtcCB3aW5kb3dOdW1iZXI6d2luZG93TnVt
YmVyIGNvbnRleHQ6bmlsIGV2ZW50TnVtYmVyOmV2ZW50TnVtYmVyIGNsaWNrQ291bnQ6MSBwcmVz
c3VyZTpXZWJDb3JlOjpGb3JjZUF0Q2xpY2tdXTsKKyAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFk
ZE9iamVjdDpbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6dXBFdmVudFR5cGUgbG9jYXRpb246
bG9jYXRpb25JbldpbmRvdyBtb2RpZmllckZsYWdzOm1vZGlmaWVycyB0aW1lc3RhbXA6dGltZXN0
YW1wIHdpbmRvd051bWJlcjp3aW5kb3dOdW1iZXIgY29udGV4dDpuaWwgZXZlbnROdW1iZXI6ZXZl
bnROdW1iZXIgY2xpY2tDb3VudDoxIHByZXNzdXJlOjAuMGZdXTsKICAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUludGVyYWN0aW9u
OjpEb3VibGVDbGljazoKKyAgICBjYXNlIE1vdXNlSW50ZXJhY3Rpb246OkRvdWJsZUNsaWNrOgog
ICAgICAgICBBU1NFUlQodXBFdmVudFR5cGUpOwogICAgICAgICBBU1NFUlQoZG93bkV2ZW50VHlw
ZSk7CiAKICAgICAgICAgLy8gU2VuZCBtdWx0aXBsZSBkb3duIGFuZCB1cCBldmVudHMgd2l0aCBw
cm9wZXIgY2xpY2sgY291bnQuCiAgICAgICAgIC8vIFdlYkNvcmUgd2lsbCBzZWUgdGhpcyBhcyBh
IHNpbmdsZS1jbGljayBldmVudCB0aGVuIGRvdWJsZS1jbGljayBldmVudC4KLSAgICAgICAgW2V2
ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6ZG93bkV2
ZW50VHlwZSBsb2NhdGlvbjp3aW5kb3dQb3NpdGlvbiBtb2RpZmllckZsYWdzOm1vZGlmaWVycyB0
aW1lc3RhbXA6dGltZXN0YW1wIHdpbmRvd051bWJlcjp3aW5kb3dOdW1iZXIgY29udGV4dDpuaWwg
ZXZlbnROdW1iZXI6ZXZlbnROdW1iZXIgY2xpY2tDb3VudDoxIHByZXNzdXJlOldlYkNvcmU6OkZv
cmNlQXRDbGlja11dOwotICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltOU0V2ZW50
IG1vdXNlRXZlbnRXaXRoVHlwZTp1cEV2ZW50VHlwZSBsb2NhdGlvbjp3aW5kb3dQb3NpdGlvbiBt
b2RpZmllckZsYWdzOm1vZGlmaWVycyB0aW1lc3RhbXA6dGltZXN0YW1wIHdpbmRvd051bWJlcjp3
aW5kb3dOdW1iZXIgY29udGV4dDpuaWwgZXZlbnROdW1iZXI6ZXZlbnROdW1iZXIgY2xpY2tDb3Vu
dDoxIHByZXNzdXJlOjAuMGZdXTsKLSAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpb
TlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6ZG93bkV2ZW50VHlwZSBsb2NhdGlvbjp3aW5kb3dQ
b3NpdGlvbiBtb2RpZmllckZsYWdzOm1vZGlmaWVycyB0aW1lc3RhbXA6dGltZXN0YW1wIHdpbmRv
d051bWJlcjp3aW5kb3dOdW1iZXIgY29udGV4dDpuaWwgZXZlbnROdW1iZXI6ZXZlbnROdW1iZXIg
Y2xpY2tDb3VudDoyIHByZXNzdXJlOldlYkNvcmU6OkZvcmNlQXRDbGlja11dOwotICAgICAgICBb
ZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltOU0V2ZW50IG1vdXNlRXZlbnRXaXRoVHlwZTp1cEV2
ZW50VHlwZSBsb2NhdGlvbjp3aW5kb3dQb3NpdGlvbiBtb2RpZmllckZsYWdzOm1vZGlmaWVycyB0
aW1lc3RhbXA6dGltZXN0YW1wIHdpbmRvd051bWJlcjp3aW5kb3dOdW1iZXIgY29udGV4dDpuaWwg
ZXZlbnROdW1iZXI6ZXZlbnROdW1iZXIgY2xpY2tDb3VudDoyIHByZXNzdXJlOjAuMGZdXTsKKyAg
ICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5
cGU6ZG93bkV2ZW50VHlwZSBsb2NhdGlvbjpsb2NhdGlvbkluV2luZG93IG1vZGlmaWVyRmxhZ3M6
bW9kaWZpZXJzIHRpbWVzdGFtcDp0aW1lc3RhbXAgd2luZG93TnVtYmVyOndpbmRvd051bWJlciBj
b250ZXh0Om5pbCBldmVudE51bWJlcjpldmVudE51bWJlciBjbGlja0NvdW50OjEgcHJlc3N1cmU6
V2ViQ29yZTo6Rm9yY2VBdENsaWNrXV07CisgICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmpl
Y3Q6W05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOnVwRXZlbnRUeXBlIGxvY2F0aW9uOmxvY2F0
aW9uSW5XaW5kb3cgbW9kaWZpZXJGbGFnczptb2RpZmllcnMgdGltZXN0YW1wOnRpbWVzdGFtcCB3
aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmlsIGV2ZW50TnVtYmVyOmV2ZW50TnVt
YmVyIGNsaWNrQ291bnQ6MSBwcmVzc3VyZTowLjBmXV07CisgICAgICAgIFtldmVudHNUb0JlU2Vu
dCBhZGRPYmplY3Q6W05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOmRvd25FdmVudFR5cGUgbG9j
YXRpb246bG9jYXRpb25JbldpbmRvdyBtb2RpZmllckZsYWdzOm1vZGlmaWVycyB0aW1lc3RhbXA6
dGltZXN0YW1wIHdpbmRvd051bWJlcjp3aW5kb3dOdW1iZXIgY29udGV4dDpuaWwgZXZlbnROdW1i
ZXI6ZXZlbnROdW1iZXIgY2xpY2tDb3VudDoyIHByZXNzdXJlOldlYkNvcmU6OkZvcmNlQXRDbGlj
a11dOworICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltOU0V2ZW50IG1vdXNlRXZl
bnRXaXRoVHlwZTp1cEV2ZW50VHlwZSBsb2NhdGlvbjpsb2NhdGlvbkluV2luZG93IG1vZGlmaWVy
RmxhZ3M6bW9kaWZpZXJzIHRpbWVzdGFtcDp0aW1lc3RhbXAgd2luZG93TnVtYmVyOndpbmRvd051
bWJlciBjb250ZXh0Om5pbCBldmVudE51bWJlcjpldmVudE51bWJlciBjbGlja0NvdW50OjIgcHJl
c3N1cmU6MC4wZl1dOwogICAgIH0KIAogICAgIHNlbmRTeW50aGVzaXplZEV2ZW50c1RvUGFnZShw
YWdlLCBldmVudHNUb0JlU2VudC5nZXQoKSk7CiB9CiAKLXN0YXRpYyBib29sIGtleUhhc1N0aWNr
eU1vZGlmaWVyKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXkga2V5
KQorc3RhdGljIGJvb2wgdmlydHVhbEtleUhhc1N0aWNreU1vZGlmaWVyKFZpcnR1YWxLZXkga2V5
KQogewogICAgIC8vIFJldHVybnMgd2hldGhlciB0aGUga2V5J3MgbW9kaWZpZXIgZmxhZ3Mgc2hv
dWxkIGFmZmVjdCBvdGhlciBldmVudHMgd2hpbGUgcHJlc3NlZCBkb3duLgogICAgIHN3aXRjaCAo
a2V5KSB7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFs
S2V5OjpTaGlmdDoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZp
cnR1YWxLZXk6OkNvbnRyb2w6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uOjpWaXJ0dWFsS2V5OjpBbHRlcm5hdGU6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29s
OjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpNZXRhOgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6Q29tbWFuZDoKKyAgICBjYXNlIFZpcnR1YWxL
ZXk6OlNoaWZ0OgorICAgIGNhc2UgVmlydHVhbEtleTo6Q29udHJvbDoKKyAgICBjYXNlIFZpcnR1
YWxLZXk6OkFsdGVybmF0ZToKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok1ldGE6CisgICAgY2FzZSBW
aXJ0dWFsS2V5OjpDb21tYW5kOgogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGRlZmF1bHQ6
CkBAIC0yMjUsMjAxICsyMjUsMjAxIEBAIHN0YXRpYyBib29sIGtleUhhc1N0aWNreU1vZGlmaWVy
KEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXkga2V5CiAgICAgfQog
fQogCi1zdGF0aWMgaW50IGtleUNvZGVGb3JWaXJ0dWFsS2V5KEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkF1dG9tYXRpb246OlZpcnR1YWxLZXkga2V5KQorc3RhdGljIGludCBrZXlDb2RlRm9yVmlydHVh
bEtleShWaXJ0dWFsS2V5IGtleSkKIHsKICAgICAvLyBUaGUgbGlrZWx5IGtleUNvZGUgZm9yIHRo
ZSB2aXJ0dWFsIGtleSBhcyBkZWZpbmVkIGluIDxISVRvb2xib3gvRXZlbnRzLmg+LgogICAgIHN3
aXRjaCAoa2V5KSB7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpW
aXJ0dWFsS2V5OjpTaGlmdDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OlNoaWZ0OgogICAgICAgICBy
ZXR1cm4ga1ZLX1NoaWZ0OwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlv
bjo6VmlydHVhbEtleTo6Q29udHJvbDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkNvbnRyb2w6CiAg
ICAgICAgIHJldHVybiBrVktfQ29udHJvbDsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkFsdGVybmF0ZToKKyAgICBjYXNlIFZpcnR1YWxLZXk6
OkFsdGVybmF0ZToKICAgICAgICAgcmV0dXJuIGtWS19PcHRpb247Ci0gICAgY2FzZSBJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpNZXRhOgorICAgIGNhc2UgVmly
dHVhbEtleTo6TWV0YToKICAgICAgICAgLy8gVGhlICdtZXRhJyBrZXkgZG9lcyBub3QgZXhpc3Qg
b24gQXBwbGUga2V5Ym9hcmRzIGFuZCBpcyB1c3VhbGx5CiAgICAgICAgIC8vIG1hcHBlZCB0byB0
aGUgQ29tbWFuZCBrZXkgd2hlbiB1c2luZyB0aGlyZC1wYXJ0eSBrZXlib2FyZHMuCi0gICAgY2Fz
ZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpDb21tYW5kOgor
ICAgIGNhc2UgVmlydHVhbEtleTo6Q29tbWFuZDoKICAgICAgICAgcmV0dXJuIGtWS19Db21tYW5k
OwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6
SGVscDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkhlbHA6CiAgICAgICAgIHJldHVybiBrVktfSGVs
cDsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6
OkJhY2tzcGFjZToKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkJhY2tzcGFjZToKICAgICAgICAgcmV0
dXJuIGtWS19EZWxldGU7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
OjpWaXJ0dWFsS2V5OjpUYWI6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpUYWI6CiAgICAgICAgIHJl
dHVybiBrVktfVGFiOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6
VmlydHVhbEtleTo6Q2xlYXI6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpDbGVhcjoKICAgICAgICAg
cmV0dXJuIGtWS19BTlNJX0tleXBhZENsZWFyOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RW50ZXI6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpF
bnRlcjoKICAgICAgICAgcmV0dXJuIGtWS19BTlNJX0tleXBhZEVudGVyOwotICAgIGNhc2UgSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6UGF1c2U6CisgICAgY2Fz
ZSBWaXJ0dWFsS2V5OjpQYXVzZToKICAgICAgICAgLy8gVGhlICdwYXVzZScga2V5IGRvZXMgbm90
IGV4aXN0IG9uIEFwcGxlIGtleWJvYXJkcyBhbmQgaGFzIG5vIGtleUNvZGUuCiAgICAgICAgIC8v
IFRoZSBzZW1hbnRpY3MgYXJlIHVuY2xlYXIgc28ganVzdCBhYm9ydCBhbmQgZG8gbm90aGluZy4K
ICAgICAgICAgcmV0dXJuIDA7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uOjpWaXJ0dWFsS2V5OjpDYW5jZWw6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpDYW5jZWw6CiAg
ICAgICAgIC8vIFRoZSAnY2FuY2VsJyBrZXkgZG9lcyBub3QgZXhpc3Qgb24gQXBwbGUga2V5Ym9h
cmRzIGFuZCBoYXMgbm8ga2V5Q29kZS4KICAgICAgICAgLy8gQWNjb3JkaW5nIHRvIHRoZSBpbnRl
cm5ldCBpdHMgZnVuY3Rpb25hbGl0eSBpcyBzaW1pbGFyIHRvICdFc2NhcGUnLgotICAgIGNhc2Ug
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RXNjYXBlOgorICAg
IGNhc2UgVmlydHVhbEtleTo6RXNjYXBlOgogICAgICAgICByZXR1cm4ga1ZLX0VzY2FwZTsKLSAg
ICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OlBhZ2VV
cDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OlBhZ2VVcDoKICAgICAgICAgcmV0dXJuIGtWS19QYWdl
VXA7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5
OjpQYWdlRG93bjoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OlBhZ2VEb3duOgogICAgICAgICByZXR1
cm4ga1ZLX1BhZ2VEb3duOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlv
bjo6VmlydHVhbEtleTo6RW5kOgorICAgIGNhc2UgVmlydHVhbEtleTo6RW5kOgogICAgICAgICBy
ZXR1cm4ga1ZLX0VuZDsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246
OlZpcnR1YWxLZXk6OkhvbWU6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpIb21lOgogICAgICAgICBy
ZXR1cm4ga1ZLX0hvbWU7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
OjpWaXJ0dWFsS2V5OjpMZWZ0QXJyb3c6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpMZWZ0QXJyb3c6
CiAgICAgICAgIHJldHVybiBrVktfTGVmdEFycm93OwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6VXBBcnJvdzoKKyAgICBjYXNlIFZpcnR1YWxL
ZXk6OlVwQXJyb3c6CiAgICAgICAgIHJldHVybiBrVktfVXBBcnJvdzsKLSAgICBjYXNlIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OlJpZ2h0QXJyb3c6CisgICAg
Y2FzZSBWaXJ0dWFsS2V5OjpSaWdodEFycm93OgogICAgICAgICByZXR1cm4ga1ZLX1JpZ2h0QXJy
b3c7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5
OjpEb3duQXJyb3c6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpEb3duQXJyb3c6CiAgICAgICAgIHJl
dHVybiBrVktfRG93bkFycm93OwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21h
dGlvbjo6VmlydHVhbEtleTo6SW5zZXJ0OgorICAgIGNhc2UgVmlydHVhbEtleTo6SW5zZXJ0Ogog
ICAgICAgICAvLyBUaGUgJ2luc2VydCcga2V5IGRvZXMgbm90IGV4aXN0IG9uIEFwcGxlIGtleWJv
YXJkcyBhbmQgaGFzIG5vIGtleUNvZGUuCiAgICAgICAgIC8vIFRoZSBzZW1hbnRpY3MgYXJlIHVu
Y2xlYXIgc28ganVzdCBhYm9ydCBhbmQgZG8gbm90aGluZy4KICAgICAgICAgcmV0dXJuIDA7Ci0g
ICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpEZWxl
dGU6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpEZWxldGU6CiAgICAgICAgIHJldHVybiBrVktfRm9y
d2FyZERlbGV0ZTsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZp
cnR1YWxLZXk6OlNwYWNlOgorICAgIGNhc2UgVmlydHVhbEtleTo6U3BhY2U6CiAgICAgICAgIHJl
dHVybiBrVktfU3BhY2U7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
OjpWaXJ0dWFsS2V5OjpTZW1pY29sb246CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpTZW1pY29sb246
CiAgICAgICAgIHJldHVybiBrVktfQU5TSV9TZW1pY29sb247Ci0gICAgY2FzZSBJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpFcXVhbHM6CisgICAgY2FzZSBWaXJ0
dWFsS2V5OjpFcXVhbHM6CiAgICAgICAgIHJldHVybiBrVktfQU5TSV9FcXVhbDsKLSAgICBjYXNl
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OlJldHVybjoKKyAg
ICBjYXNlIFZpcnR1YWxLZXk6OlJldHVybjoKICAgICAgICAgcmV0dXJuIGtWS19SZXR1cm47Ci0g
ICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1i
ZXJQYWQwOgorICAgIGNhc2UgVmlydHVhbEtleTo6TnVtYmVyUGFkMDoKICAgICAgICAgcmV0dXJu
IGtWS19BTlNJX0tleXBhZDA7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWQxOgorICAgIGNhc2UgVmlydHVhbEtleTo6TnVtYmVy
UGFkMToKICAgICAgICAgcmV0dXJuIGtWS19BTlNJX0tleXBhZDE7Ci0gICAgY2FzZSBJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWQyOgorICAgIGNh
c2UgVmlydHVhbEtleTo6TnVtYmVyUGFkMjoKICAgICAgICAgcmV0dXJuIGtWS19BTlNJX0tleXBh
ZDI7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5
OjpOdW1iZXJQYWQzOgorICAgIGNhc2UgVmlydHVhbEtleTo6TnVtYmVyUGFkMzoKICAgICAgICAg
cmV0dXJuIGtWS19BTlNJX0tleXBhZDM7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpB
dXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWQ0OgorICAgIGNhc2UgVmlydHVhbEtleTo6
TnVtYmVyUGFkNDoKICAgICAgICAgcmV0dXJuIGtWS19BTlNJX0tleXBhZDQ7Ci0gICAgY2FzZSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWQ1Ogor
ICAgIGNhc2UgVmlydHVhbEtleTo6TnVtYmVyUGFkNToKICAgICAgICAgcmV0dXJuIGtWS19BTlNJ
X0tleXBhZDU7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0
dWFsS2V5OjpOdW1iZXJQYWQ2OgorICAgIGNhc2UgVmlydHVhbEtleTo6TnVtYmVyUGFkNjoKICAg
ICAgICAgcmV0dXJuIGtWS19BTlNJX0tleXBhZDY7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWQ3OgorICAgIGNhc2UgVmlydHVh
bEtleTo6TnVtYmVyUGFkNzoKICAgICAgICAgcmV0dXJuIGtWS19BTlNJX0tleXBhZDc7Ci0gICAg
Y2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQ
YWQ4OgorICAgIGNhc2UgVmlydHVhbEtleTo6TnVtYmVyUGFkODoKICAgICAgICAgcmV0dXJuIGtW
S19BTlNJX0tleXBhZDg7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
OjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWQ5OgorICAgIGNhc2UgVmlydHVhbEtleTo6TnVtYmVyUGFk
OToKICAgICAgICAgcmV0dXJuIGtWS19BTlNJX0tleXBhZDk7Ci0gICAgY2FzZSBJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWRNdWx0aXBseToKKyAg
ICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZE11bHRpcGx5OgogICAgICAgICByZXR1cm4ga1ZL
X0FOU0lfS2V5cGFkTXVsdGlwbHk7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRv
bWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWRBZGQ6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpO
dW1iZXJQYWRBZGQ6CiAgICAgICAgIHJldHVybiBrVktfQU5TSV9LZXlwYWRQbHVzOwotICAgIGNh
c2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFk
U3VidHJhY3Q6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWRTdWJ0cmFjdDoKICAgICAg
ICAgcmV0dXJuIGtWS19BTlNJX0tleXBhZE1pbnVzOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkU2VwYXJhdG9yOgorICAgIGNh
c2UgVmlydHVhbEtleTo6TnVtYmVyUGFkU2VwYXJhdG9yOgogICAgICAgICAvLyBUaGUgJ1NlcGFy
YXRvcicga2V5IGlzIG9ubHkgcHJlc2VudCBvbiBhIGZldyBpbnRlcm5hdGlvbmFsIGtleWJvYXJk
cy4KICAgICAgICAgLy8gSXQgaXMgdXN1YWxseSBtYXBwZWQgdG8gdGhlIHNhbWUgY2hhcmFjdGVy
IGFzIERlY2ltYWwgKCcuJyBvciAnLCcpLgogICAgICAgICBGQUxMVEhST1VHSDsKLSAgICBjYXNl
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZERl
Y2ltYWw6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWREZWNpbWFsOgogICAgICAgICBy
ZXR1cm4ga1ZLX0FOU0lfS2V5cGFkRGVjaW1hbDsKICAgICAgICAgLy8gRklYTUU6IHRoaXMgbWln
aHQgYmUgbG9jYWxlLWRlcGVuZGVudC4gU2VlIHRoZSBhYm92ZSBjb21tZW50LgotICAgIGNhc2Ug
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkRGl2
aWRlOgorICAgIGNhc2UgVmlydHVhbEtleTo6TnVtYmVyUGFkRGl2aWRlOgogICAgICAgICByZXR1
cm4ga1ZLX0FOU0lfS2V5cGFkRGl2aWRlOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RnVuY3Rpb24xOgorICAgIGNhc2UgVmlydHVhbEtleTo6
RnVuY3Rpb24xOgogICAgICAgICByZXR1cm4ga1ZLX0YxOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RnVuY3Rpb24yOgorICAgIGNhc2UgVmly
dHVhbEtleTo6RnVuY3Rpb24yOgogICAgICAgICByZXR1cm4ga1ZLX0YyOwotICAgIGNhc2UgSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RnVuY3Rpb24zOgorICAg
IGNhc2UgVmlydHVhbEtleTo6RnVuY3Rpb24zOgogICAgICAgICByZXR1cm4ga1ZLX0YzOwotICAg
IGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RnVuY3Rp
b240OgorICAgIGNhc2UgVmlydHVhbEtleTo6RnVuY3Rpb240OgogICAgICAgICByZXR1cm4ga1ZL
X0Y0OwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtl
eTo6RnVuY3Rpb241OgorICAgIGNhc2UgVmlydHVhbEtleTo6RnVuY3Rpb241OgogICAgICAgICBy
ZXR1cm4ga1ZLX0Y1OwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6
VmlydHVhbEtleTo6RnVuY3Rpb242OgorICAgIGNhc2UgVmlydHVhbEtleTo6RnVuY3Rpb242Ogog
ICAgICAgICByZXR1cm4ga1ZLX0Y2OwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbjo6VmlydHVhbEtleTo6RnVuY3Rpb243OgorICAgIGNhc2UgVmlydHVhbEtleTo6RnVu
Y3Rpb243OgogICAgICAgICByZXR1cm4ga1ZLX0Y3OwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RnVuY3Rpb244OgorICAgIGNhc2UgVmlydHVh
bEtleTo6RnVuY3Rpb244OgogICAgICAgICByZXR1cm4ga1ZLX0Y4OwotICAgIGNhc2UgSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RnVuY3Rpb245OgorICAgIGNh
c2UgVmlydHVhbEtleTo6RnVuY3Rpb245OgogICAgICAgICByZXR1cm4ga1ZLX0Y5OwotICAgIGNh
c2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RnVuY3Rpb24x
MDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkZ1bmN0aW9uMTA6CiAgICAgICAgIHJldHVybiBrVktf
RjEwOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtl
eTo6RnVuY3Rpb24xMToKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkZ1bmN0aW9uMTE6CiAgICAgICAg
IHJldHVybiBrVktfRjExOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlv
bjo6VmlydHVhbEtleTo6RnVuY3Rpb24xMjoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkZ1bmN0aW9u
MTI6CiAgICAgICAgIHJldHVybiBrVktfRjEyOwogICAgIH0KIH0KIAotc3RhdGljIE5TRXZlbnRN
b2RpZmllckZsYWdzIGV2ZW50TW9kaWZpZXJGbGFnc0ZvclZpcnR1YWxLZXkoSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleSBrZXkpCitzdGF0aWMgTlNFdmVudE1vZGlm
aWVyRmxhZ3MgZXZlbnRNb2RpZmllckZsYWdzRm9yVmlydHVhbEtleShWaXJ0dWFsS2V5IGtleSkK
IHsKICAgICAvLyBDb21wdXRlcyB0aGUgbW9kaWZpZXJzIGNoYW5nZWQgYnkgdGhlIHZpcnR1YWwg
a2V5IHdoZW4gaXQgaXMgcHJlc3NlZCBvciByZWxlYXNlZC4KICAgICAvLyBUaGUgbWFwcGluZyBm
cm9tIGtleXMgdG8gbW9kaWZpZXJzIGlzIHNwZWNpZmllZCBpbiB0aGUgZG9jdW1lbnRhdGlvbiBm
b3IgTlNFdmVudC4KICAgICBzd2l0Y2ggKGtleSkgewotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6U2hpZnQ6CisgICAgY2FzZSBWaXJ0dWFsS2V5
OjpTaGlmdDoKICAgICAgICAgcmV0dXJuIE5TRXZlbnRNb2RpZmllckZsYWdTaGlmdDsKIAotICAg
IGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6Q29udHJv
bDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkNvbnRyb2w6CiAgICAgICAgIHJldHVybiBOU0V2ZW50
TW9kaWZpZXJGbGFnQ29udHJvbDsKIAotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbjo6VmlydHVhbEtleTo6QWx0ZXJuYXRlOgorICAgIGNhc2UgVmlydHVhbEtleTo6QWx0
ZXJuYXRlOgogICAgICAgICByZXR1cm4gTlNFdmVudE1vZGlmaWVyRmxhZ09wdGlvbjsKIAotICAg
IGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TWV0YToK
KyAgICBjYXNlIFZpcnR1YWxLZXk6Ok1ldGE6CiAgICAgICAgIC8vIFRoZSAnbWV0YScga2V5IGRv
ZXMgbm90IGV4aXN0IG9uIEFwcGxlIGtleWJvYXJkcyBhbmQgaXMgdXN1YWxseQogICAgICAgICAv
LyBtYXBwZWQgdG8gdGhlIENvbW1hbmQga2V5IHdoZW4gdXNpbmcgdGhpcmQtcGFydHkga2V5Ym9h
cmRzLgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtl
eTo6Q29tbWFuZDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkNvbW1hbmQ6CiAgICAgICAgIHJldHVy
biBOU0V2ZW50TW9kaWZpZXJGbGFnQ29tbWFuZDsKIAotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6SGVscDoKKyAgICBjYXNlIFZpcnR1YWxLZXk6
OkhlbHA6CiAgICAgICAgIHJldHVybiBOU0V2ZW50TW9kaWZpZXJGbGFnSGVscCB8IE5TRXZlbnRN
b2RpZmllckZsYWdGdW5jdGlvbjsKIAotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbjo6VmlydHVhbEtleTo6UGFnZVVwOgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6UGFnZURvd246Ci0gICAgY2FzZSBJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpFbmQ6Ci0gICAgY2FzZSBJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpIb21lOgorICAgIGNhc2UgVmly
dHVhbEtleTo6UGFnZVVwOgorICAgIGNhc2UgVmlydHVhbEtleTo6UGFnZURvd246CisgICAgY2Fz
ZSBWaXJ0dWFsS2V5OjpFbmQ6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpIb21lOgogICAgICAgICBy
ZXR1cm4gTlNFdmVudE1vZGlmaWVyRmxhZ0Z1bmN0aW9uOwogCi0gICAgY2FzZSBJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpMZWZ0QXJyb3c6Ci0gICAgY2FzZSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpVcEFycm93OgotICAg
IGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6UmlnaHRB
cnJvdzoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxL
ZXk6OkRvd25BcnJvdzoKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkxlZnRBcnJvdzoKKyAgICBjYXNl
IFZpcnR1YWxLZXk6OlVwQXJyb3c6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpSaWdodEFycm93Ogor
ICAgIGNhc2UgVmlydHVhbEtleTo6RG93bkFycm93OgogICAgICAgICByZXR1cm4gTlNFdmVudE1v
ZGlmaWVyRmxhZ051bWVyaWNQYWQgfCBOU0V2ZW50TW9kaWZpZXJGbGFnRnVuY3Rpb247CiAKLSAg
ICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkRlbGV0
ZToKKyAgICBjYXNlIFZpcnR1YWxLZXk6OkRlbGV0ZToKICAgICAgICAgcmV0dXJuIE5TRXZlbnRN
b2RpZmllckZsYWdGdW5jdGlvbjsKIAotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbjo6VmlydHVhbEtleTo6Q2xlYXI6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29s
OjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWQwOgotICAgIGNhc2UgSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkMToKLSAgICBjYXNl
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZDI6
Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpO
dW1iZXJQYWQzOgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6Vmly
dHVhbEtleTo6TnVtYmVyUGFkNDoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9t
YXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZDU6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWQ2OgotICAgIGNhc2UgSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TnVtYmVyUGFkNzoKLSAgICBj
YXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBh
ZDg6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5
OjpOdW1iZXJQYWQ5OgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6
VmlydHVhbEtleTo6TnVtYmVyUGFkTXVsdGlwbHk6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWRBZGQ6Ci0gICAgY2FzZSBJbnNw
ZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWRTdWJ0cmFj
dDoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6
Ok51bWJlclBhZFNlcGFyYXRvcjoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9t
YXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZERlY2ltYWw6Ci0gICAgY2FzZSBJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWREaXZpZGU6CisgICAg
Y2FzZSBWaXJ0dWFsS2V5OjpDbGVhcjoKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZDA6
CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWQxOgorICAgIGNhc2UgVmlydHVhbEtleTo6
TnVtYmVyUGFkMjoKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZDM6CisgICAgY2FzZSBW
aXJ0dWFsS2V5OjpOdW1iZXJQYWQ0OgorICAgIGNhc2UgVmlydHVhbEtleTo6TnVtYmVyUGFkNToK
KyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZDY6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpO
dW1iZXJQYWQ3OgorICAgIGNhc2UgVmlydHVhbEtleTo6TnVtYmVyUGFkODoKKyAgICBjYXNlIFZp
cnR1YWxLZXk6Ok51bWJlclBhZDk6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpOdW1iZXJQYWRNdWx0
aXBseToKKyAgICBjYXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZEFkZDoKKyAgICBjYXNlIFZpcnR1
YWxLZXk6Ok51bWJlclBhZFN1YnRyYWN0OgorICAgIGNhc2UgVmlydHVhbEtleTo6TnVtYmVyUGFk
U2VwYXJhdG9yOgorICAgIGNhc2UgVmlydHVhbEtleTo6TnVtYmVyUGFkRGVjaW1hbDoKKyAgICBj
YXNlIFZpcnR1YWxLZXk6Ok51bWJlclBhZERpdmlkZToKICAgICAgICAgcmV0dXJuIE5TRXZlbnRN
b2RpZmllckZsYWdOdW1lcmljUGFkOwogCi0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpB
dXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjE6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlBy
b3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjI6Ci0gICAgY2FzZSBJbnNw
ZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjM6Ci0gICAg
Y2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5jdGlv
bjQ6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5
OjpGdW5jdGlvbjU6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpW
aXJ0dWFsS2V5OjpGdW5jdGlvbjY6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRv
bWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjc6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjg6Ci0gICAgY2FzZSBJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjk6Ci0gICAgY2Fz
ZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjEw
OgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6
RnVuY3Rpb24xMToKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZp
cnR1YWxLZXk6OkZ1bmN0aW9uMTI6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpGdW5jdGlvbjE6Cisg
ICAgY2FzZSBWaXJ0dWFsS2V5OjpGdW5jdGlvbjI6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpGdW5j
dGlvbjM6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpGdW5jdGlvbjQ6CisgICAgY2FzZSBWaXJ0dWFs
S2V5OjpGdW5jdGlvbjU6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpGdW5jdGlvbjY6CisgICAgY2Fz
ZSBWaXJ0dWFsS2V5OjpGdW5jdGlvbjc6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpGdW5jdGlvbjg6
CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpGdW5jdGlvbjk6CisgICAgY2FzZSBWaXJ0dWFsS2V5OjpG
dW5jdGlvbjEwOgorICAgIGNhc2UgVmlydHVhbEtleTo6RnVuY3Rpb24xMToKKyAgICBjYXNlIFZp
cnR1YWxLZXk6OkZ1bmN0aW9uMTI6CiAgICAgICAgIHJldHVybiBOU0V2ZW50TW9kaWZpZXJGbGFn
RnVuY3Rpb247CiAKICAgICBkZWZhdWx0OgpAQCAtNDI3LDE5ICs0MjcsMzQgQEAgc3RhdGljIE5T
RXZlbnRNb2RpZmllckZsYWdzIGV2ZW50TW9kaWZpZXJGbGFnc0ZvclZpcnR1YWxLZXkoSW5zcGVj
dG9yOjpQcm90b2NvbDoKICAgICB9CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBs
YXRmb3JtU2ltdWxhdGVLZXlTdHJva2UoV2ViUGFnZVByb3h5JiBwYWdlLCBJbnNwZWN0b3I6OlBy
b3RvY29sOjpBdXRvbWF0aW9uOjpLZXlib2FyZEludGVyYWN0aW9uVHlwZSBpbnRlcmFjdGlvbiwg
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleSBrZXkpCit2b2lkIFdl
YkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlS2V5Ym9hcmRJbnRlcmFjdGlvbihX
ZWJQYWdlUHJveHkmIHBhZ2UsIEtleWJvYXJkSW50ZXJhY3Rpb24gaW50ZXJhY3Rpb24sIHN0ZDo6
b3B0aW9uYWw8VmlydHVhbEtleT4gdmlydHVhbEtleSwgc3RkOjpvcHRpb25hbDxDaGFyS2V5PiBj
aGFyS2V5KQogewogICAgIC8vIEZJWE1FOiB0aGlzIGZ1bmN0aW9uIGFuZCB0aGUgQXV0b21hdGlv
biBwcm90b2NvbCBlbnVtIHNob3VsZCBwcm9iYWJseSBhZG9wdCBrZXkgbmFtZXMKICAgICAvLyBm
cm9tIFczQyBVSUV2ZW50cyBzdGFuZGFyZC4gRm9yIG1vcmUgZGV0YWlsczogaHR0cHM6Ly93M2Mu
Z2l0aHViLmlvL3VpZXZlbnRzLWNvZGUvCiAKLSAgICBib29sIGlzU3RpY2t5TW9kaWZpZXIgPSBr
ZXlIYXNTdGlja3lNb2RpZmllcihrZXkpOwotICAgIE5TRXZlbnRNb2RpZmllckZsYWdzIGNoYW5n
ZWRNb2RpZmllcnMgPSBldmVudE1vZGlmaWVyRmxhZ3NGb3JWaXJ0dWFsS2V5KGtleSk7Ci0gICAg
aW50IGtleUNvZGUgPSBrZXlDb2RlRm9yVmlydHVhbEtleShrZXkpOworICAgIEFTU0VSVCh2aXJ0
dWFsS2V5Lmhhc192YWx1ZSgpIHx8IGNoYXJLZXkuaGFzX3ZhbHVlKCkpOworCisgICAgYm9vbCBp
c1N0aWNreU1vZGlmaWVyID0gZmFsc2U7CisgICAgTlNFdmVudE1vZGlmaWVyRmxhZ3MgY2hhbmdl
ZE1vZGlmaWVycyA9IDA7CisgICAgaW50IGtleUNvZGU7CisgICAgc3RkOjpvcHRpb25hbDx1bmlj
aGFyPiBjaGFyQ29kZTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuaWNoYXI+IGNoYXJDb2RlSWdub3Jp
bmdNb2RpZmllcnM7CisKKyAgICBpZiAodmlydHVhbEtleS5oYXNfdmFsdWUoKSkgeworICAgICAg
ICBpc1N0aWNreU1vZGlmaWVyID0gdmlydHVhbEtleUhhc1N0aWNreU1vZGlmaWVyKHZpcnR1YWxL
ZXkudmFsdWUoKSk7CisgICAgICAgIGNoYW5nZWRNb2RpZmllcnMgPSBldmVudE1vZGlmaWVyRmxh
Z3NGb3JWaXJ0dWFsS2V5KHZpcnR1YWxLZXkudmFsdWUoKSk7CisgICAgICAgIGtleUNvZGUgPSBr
ZXlDb2RlRm9yVmlydHVhbEtleSh2aXJ0dWFsS2V5LnZhbHVlKCkpOworICAgICAgICBjaGFyQ29k
ZSA9IGNoYXJDb2RlRm9yVmlydHVhbEtleSh2aXJ0dWFsS2V5LnZhbHVlKCkpOworICAgICAgICBj
aGFyQ29kZUlnbm9yaW5nTW9kaWZpZXJzID0gY2hhckNvZGVJZ25vcmluZ01vZGlmaWVyc0ZvclZp
cnR1YWxLZXkodmlydHVhbEtleS52YWx1ZSgpKTsKKyAgICB9CisKKyAgICBpZiAoY2hhcktleS5o
YXNfdmFsdWUoKSkgeworICAgICAgICBjaGFyQ29kZSA9ICh1bmljaGFyKWNoYXJLZXkudmFsdWUo
KTsKKyAgICAgICAgY2hhckNvZGVJZ25vcmluZ01vZGlmaWVycyA9ICh1bmljaGFyKWNoYXJLZXku
dmFsdWUoKTsKKyAgICB9CiAKICAgICAvLyBGSVhNRTogY29uc2lkZXIgdXNpbmcgQXBwS2l0IFNQ
SSB0byBub3JtYWxpemUgJ2NoYXJhY3RlcnMnLCBpLmUuLCBjaGFuZ2luZyAqIHRvIFNoaWZ0LTgs
CiAgICAgLy8gYW5kIHBhc3NpbmcgdGhhdCBpbiB0byBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmll
cnMuIFdlIGNvdWxkIGhhcmRjb2RlIHRoaXMgZm9yIEFTQ0lJIGlmIG5lZWRlZC4KLSAgICBzdGQ6
Om9wdGlvbmFsPHVuaWNoYXI+IGNoYXJDb2RlID0gY2hhckNvZGVGb3JWaXJ0dWFsS2V5KGtleSk7
Ci0gICAgc3RkOjpvcHRpb25hbDx1bmljaGFyPiBjaGFyQ29kZUlnbm9yaW5nTW9kaWZpZXJzID0g
Y2hhckNvZGVJZ25vcmluZ01vZGlmaWVyc0ZvclZpcnR1YWxLZXkoa2V5KTsKICAgICBOU1N0cmlu
ZyAqY2hhcmFjdGVycyA9IGNoYXJDb2RlID8gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJz
OiZjaGFyQ29kZS52YWx1ZSgpIGxlbmd0aDoxXSA6IG5pbDsKICAgICBOU1N0cmluZyAqdW5tb2Rp
ZmllZENoYXJhY3RlcnMgPSBjaGFyQ29kZUlnbm9yaW5nTW9kaWZpZXJzID8gW05TU3RyaW5nIHN0
cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaGFyQ29kZUlnbm9yaW5nTW9kaWZpZXJzLnZhbHVlKCkgbGVu
Z3RoOjFdIDogbmlsOwogCkBAIC00NTIsMTkgKzQ2NywxOSBAQCB2b2lkIFdlYkF1dG9tYXRpb25T
ZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlS2V5U3Ryb2tlKFdlYlBhZ2VQcm94eSYgcGFnZSwgSW5z
cGVjdAogICAgIE5TUG9pbnQgZXZlbnRQb3NpdGlvbiA9IE5TTWFrZVBvaW50KDAsIHdpbmRvdy5m
cmFtZS5zaXplLmhlaWdodCk7CiAKICAgICBzd2l0Y2ggKGludGVyYWN0aW9uKSB7Ci0gICAgY2Fz
ZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpLZXlib2FyZEludGVyYWN0aW9uVHlw
ZTo6S2V5UHJlc3M6IHsKKyAgICBjYXNlIEtleWJvYXJkSW50ZXJhY3Rpb246OktleVByZXNzOiB7
CiAgICAgICAgIE5TRXZlbnRUeXBlIGV2ZW50VHlwZSA9IGlzU3RpY2t5TW9kaWZpZXIgPyBOU0V2
ZW50VHlwZUZsYWdzQ2hhbmdlZCA6IE5TRXZlbnRUeXBlS2V5RG93bjsKICAgICAgICAgbV9jdXJy
ZW50TW9kaWZpZXJzIHw9IGNoYW5nZWRNb2RpZmllcnM7CiAgICAgICAgIFtldmVudHNUb0JlU2Vu
dCBhZGRPYmplY3Q6W05TRXZlbnQga2V5RXZlbnRXaXRoVHlwZTpldmVudFR5cGUgbG9jYXRpb246
ZXZlbnRQb3NpdGlvbiBtb2RpZmllckZsYWdzOm1fY3VycmVudE1vZGlmaWVycyB0aW1lc3RhbXA6
dGltZXN0YW1wIHdpbmRvd051bWJlcjp3aW5kb3dOdW1iZXIgY29udGV4dDpuaWwgY2hhcmFjdGVy
czpjaGFyYWN0ZXJzIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczp1bm1vZGlmaWVkQ2hhcmFj
dGVycyBpc0FSZXBlYXQ6Tk8ga2V5Q29kZTprZXlDb2RlXV07CiAgICAgICAgIGJyZWFrOwogICAg
IH0KLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OktleWJvYXJkSW50
ZXJhY3Rpb25UeXBlOjpLZXlSZWxlYXNlOiB7CisgICAgY2FzZSBLZXlib2FyZEludGVyYWN0aW9u
OjpLZXlSZWxlYXNlOiB7CiAgICAgICAgIE5TRXZlbnRUeXBlIGV2ZW50VHlwZSA9IGlzU3RpY2t5
TW9kaWZpZXIgPyBOU0V2ZW50VHlwZUZsYWdzQ2hhbmdlZCA6IE5TRXZlbnRUeXBlS2V5VXA7CiAg
ICAgICAgIG1fY3VycmVudE1vZGlmaWVycyAmPSB+Y2hhbmdlZE1vZGlmaWVyczsKICAgICAgICAg
W2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbTlNFdmVudCBrZXlFdmVudFdpdGhUeXBlOmV2ZW50
VHlwZSBsb2NhdGlvbjpldmVudFBvc2l0aW9uIG1vZGlmaWVyRmxhZ3M6bV9jdXJyZW50TW9kaWZp
ZXJzIHRpbWVzdGFtcDp0aW1lc3RhbXAgd2luZG93TnVtYmVyOndpbmRvd051bWJlciBjb250ZXh0
Om5pbCBjaGFyYWN0ZXJzOmNoYXJhY3RlcnMgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOnVu
bW9kaWZpZWRDaGFyYWN0ZXJzIGlzQVJlcGVhdDpOTyBrZXlDb2RlOmtleUNvZGVdXTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlv
bjo6S2V5Ym9hcmRJbnRlcmFjdGlvblR5cGU6Okluc2VydEJ5S2V5OiB7CisgICAgY2FzZSBLZXli
b2FyZEludGVyYWN0aW9uOjpJbnNlcnRCeUtleTogewogICAgICAgICAvLyBTdGlja3kgbW9kaWZp
ZXJzIHNob3VsZCBlaXRoZXIgYmUgJ0tleVByZXNzJyBvciAnS2V5UmVsZWFzZScuCiAgICAgICAg
IEFTU0VSVCghaXNTdGlja3lNb2RpZmllcik7CiAgICAgICAgIGlmIChpc1N0aWNreU1vZGlmaWVy
KQpAQCAtNTUxLDcgKzU2Niw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3Jt
U2ltdWxhdGVLZXlTZXF1ZW5jZShXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0CiAKICAgICAgICAg
W2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbTlNFdmVudCBrZXlFdmVudFdpdGhUeXBlOk5TRXZl
bnRUeXBlS2V5RG93biBsb2NhdGlvbjpldmVudFBvc2l0aW9uIG1vZGlmaWVyRmxhZ3M6bW9kaWZp
ZXJzRm9yS2V5c3Ryb2tlIHRpbWVzdGFtcDp0aW1lc3RhbXAgd2luZG93TnVtYmVyOndpbmRvd051
bWJlciBjb250ZXh0Om5pbCBjaGFyYWN0ZXJzOnN1YnN0cmluZyBjaGFyYWN0ZXJzSWdub3JpbmdN
b2RpZmllcnM6c3Vic3RyaW5nIGlzQVJlcGVhdDpOTyBrZXlDb2RlOjBdXTsKICAgICAgICAgW2V2
ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbTlNFdmVudCBrZXlFdmVudFdpdGhUeXBlOk5TRXZlbnRU
eXBlS2V5VXAgbG9jYXRpb246ZXZlbnRQb3NpdGlvbiBtb2RpZmllckZsYWdzOm1vZGlmaWVyc0Zv
cktleXN0cm9rZSB0aW1lc3RhbXA6dGltZXN0YW1wIHdpbmRvd051bWJlcjp3aW5kb3dOdW1iZXIg
Y29udGV4dDpuaWwgY2hhcmFjdGVyczpzdWJzdHJpbmcgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZp
ZXJzOnN1YnN0cmluZyBpc0FSZXBlYXQ6Tk8ga2V5Q29kZTowXV07Ci0gICAgICAgIAorCiAgICAg
ICAgIGlmIChzaG91bGRQcmVzc1NoaWZ0KQogICAgICAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFk
ZE9iamVjdDpbTlNFdmVudCBrZXlFdmVudFdpdGhUeXBlOk5TRXZlbnRUeXBlRmxhZ3NDaGFuZ2Vk
IGxvY2F0aW9uOmV2ZW50UG9zaXRpb24gbW9kaWZpZXJGbGFnczptX2N1cnJlbnRNb2RpZmllcnMg
dGltZXN0YW1wOnRpbWVzdGFtcCB3aW5kb3dOdW1iZXI6d2luZG93TnVtYmVyIGNvbnRleHQ6bmls
IGNoYXJhY3RlcnM6QCIiIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczpAIiIgaXNBUmVwZWF0
Ok5PIGtleUNvZGU6a1ZLX1NoaWZ0XV07CiAgICAgfV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1NjEzOTJjOWQzZmQ2NmRkODU4NWIw
NjdlMTAwZTI1Mzk5YjUwNWU4Li4wZWRmMmIyZDEwMTI2NGIzOGJmY2YwMWY5Mzg4ZDEzNGRlMjFj
MTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTE1MjksNiArMTUyOSw4IEBACiAJCTk5NDZFRjg2MUU3QjAyNzAwMDU0MUU3OSAvKiBX
ZWJBdXRvbWF0aW9uU2Vzc2lvbklPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDk5NDZFRjg1MUU3QjAyNjYwMDU0MUU3OSAvKiBXZWJBdXRvbWF0aW9u
U2Vzc2lvbklPUy5tbSAqLzsgfTsKIAkJOTk0QkFERjMxRjdENzgxMTAwQjU3MUU3IC8qIFdLSW5z
cGVjdG9yVmlld0NvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5OTRCQURGMjFGN0Q3N0VCMDBCNTcxRTcgLyogV0tJbnNwZWN0b3JWaWV3
Q29udHJvbGxlci5tbSAqLzsgfTsKIAkJOTk0QkFERjQxRjdENzgxNDAwQjU3MUU3IC8qIFdLSW5z
cGVjdG9yVmlld0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDk5NEJBREYxMUY3RDc3RUEwMEI1NzFFNyAvKiBXS0luc3BlY3RvclZpZXdD
b250cm9sbGVyLmggKi87IH07CisJCTk5NTIyNkQ2MjA3RDE4NDYwMEY3ODQyMCAvKiBTaW11bGF0
ZWRJbnB1dERpc3BhdGNoZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDk5NTIyNkQ0MjA3RDE4NDUwMEY3ODQyMCAvKiBTaW11bGF0ZWRJbnB1dERpc3Bh
dGNoZXIuaCAqLzsgfTsKKwkJOTk1MjI2RDcyMDdEMTg0NjAwRjc4NDIwIC8qIFNpbXVsYXRlZElu
cHV0RGlzcGF0Y2hlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5OTUyMjZENTIwN0QxODQ2MDBGNzg0MjAgLyogU2ltdWxhdGVkSW5wdXREaXNwYXRj
aGVyLmNwcCAqLzsgfTsKIAkJOTk1NUE2RUMxQzc5ODBDMjAwRUI2QTkzIC8qIFdlYkF1dG9tYXRp
b25TZXNzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5OTU1QTZFQjFDNzk4MEJCMDBFQjZBOTMgLyogV2ViQXV0b21hdGlvblNlc3Npb24uaCAqLzsg
fTsKIAkJOTk1NUE2RUQxQzc5ODBDQTAwRUI2QTkzIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5NTVBNkVB
MUM3OTgwQkIwMEVCNkE5MyAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgKi87IH07CiAJCTk5
NTVBNkVGMUM3OTgxMDgwMEVCNkE5MyAvKiBBdXRvbWF0aW9uLmpzb24gaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTU1QTZFOTFDNzk4MEJCMDBFQjZBOTMg
LyogQXV0b21hdGlvbi5qc29uICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC00MDE5LDYgKzQwMjEsOCBAQAogCQk5OTQ2RUY4NTFFN0IwMjY2MDA1NDFF
NzkgLyogV2ViQXV0b21hdGlvblNlc3Npb25JT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBXZWJBdXRvbWF0aW9uU2Vzc2lvbklPUy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTk0QkFERjExRjdENzdFQTAwQjU3MUU3IC8qIFdLSW5zcGVjdG9y
Vmlld0NvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tJbnNw
ZWN0b3JWaWV3Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTRC
QURGMjFGN0Q3N0VCMDBCNTcxRTcgLyogV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLSW5zcGVjdG9yVmlld0NvbnRy
b2xsZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5NTIyNkQ0MjA3RDE4NDUw
MEY3ODQyMCAvKiBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTk5NTIyNkQ1MjA3RDE4NDYwMEY3ODQyMCAvKiBTaW11bGF0ZWRJbnB1
dERpc3BhdGNoZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2lt
dWxhdGVkSW5wdXREaXNwYXRjaGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTk1NUE2RTkxQzc5ODBCQjAwRUI2QTkzIC8qIEF1dG9tYXRpb24uanNvbiAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQuanNvbjsgcGF0aCA9IEF1dG9tYXRpb24uanNvbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTk1NUE2RUExQzc5ODBCQjAwRUI2QTkzIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkF1dG9tYXRpb25TZXNz
aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk1NUE2RUIxQzc5ODBCQjAw
RUI2QTkzIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYkF1dG9tYXRpb25TZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC02OTcwLDYgKzY5NzQsOCBAQAogCQkJCTk5NDZFRjgyMUU3QjAyM0QwMDU0MUU3OSAv
KiBpb3MgKi8sCiAJCQkJOTlDM0FFMjIxREFEOEUxNDAwQUY1QzE2IC8qIG1hYyAqLywKIAkJCQk5
OTU1QTZFOTFDNzk4MEJCMDBFQjZBOTMgLyogQXV0b21hdGlvbi5qc29uICovLAorCQkJCTk5NTIy
NkQ1MjA3RDE4NDYwMEY3ODQyMCAvKiBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuY3BwICovLAor
CQkJCTk5NTIyNkQ0MjA3RDE4NDUwMEY3ODQyMCAvKiBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIu
aCAqLywKIAkJCQk5OTU1QTZFQTFDNzk4MEJCMDBFQjZBOTMgLyogV2ViQXV0b21hdGlvblNlc3Np
b24uY3BwICovLAogCQkJCTk5NTVBNkVCMUM3OTgwQkIwMEVCNkE5MyAvKiBXZWJBdXRvbWF0aW9u
U2Vzc2lvbi5oICovLAogCQkJCTFDMEExOTU5MUM5MDA2RUEwMEZFMEVCQiAvKiBXZWJBdXRvbWF0
aW9uU2Vzc2lvbi5tZXNzYWdlcy5pbiAqLywKQEAgLTkxNzQsNiArOTE4MCw3IEBACiAJCQkJODMx
M0Y3RUMxRjdEQUUwODAwQjk0NEVCIC8qIFNoYXJlZFN0cmluZ0hhc2hTdG9yZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJODMxM0Y3RUUxRjdEQUUwODAwQjk0NEVCIC8qIFNoYXJlZFN0cmluZ0hhc2hU
YWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNGOTY0NEUxRkEwRjc2RTAwQzQ3NzUwIC8qIFNo
YXJlZFN0cmluZ0hhc2hUYWJsZVJlYWRPbmx5LmggaW4gSGVhZGVycyAqLywKKwkJCQk5OTUyMjZE
NjIwN0QxODQ2MDBGNzg0MjAgLyogU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkyREFGMDZENjE4QkQxQTQ3MDA4MUNFQjEgLyogU21hcnRNYWduaWZpY2F0aW9u
Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRFNjk0M0UxOEJEMkE2ODAwNUMxNUU1
IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTI3MkIyOEIxNDA2OTg1RDAwOTZBNUQwIC8qIFN0YXRpc3RpY3NEYXRhLmggaW4gSGVh
ZGVycyAqLywKQEAgLTEwODgwLDYgKzEwODg3LDcgQEAKIAkJCQk4MzEzRjdFQjFGN0RBRTA4MDBC
OTQ0RUIgLyogU2hhcmVkU3RyaW5nSGFzaFN0b3JlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTgz
MTNGN0VEMUY3REFFMDgwMEI5NDRFQiAvKiBTaGFyZWRTdHJpbmdIYXNoVGFibGUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJODNGOTY0NEQxRkEwRjc2RTAwQzQ3NzUwIC8qIFNoYXJlZFN0cmluZ0hh
c2hUYWJsZVJlYWRPbmx5LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTk5NTIyNkQ3MjA3RDE4NDYw
MEY3ODQyMCAvKiBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMkRBRjA2RDcxOEJEMUE0NzAwODFDRUIxIC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xs
ZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQkyREU2OTQzRDE4QkQyQTY4MDA1QzE1RTUgLyogU21h
cnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1MjcyQjI4QTE0MDY5ODVEMDA5NkE1RDAgLyogU3RhdGlzdGljc0RhdGEuY3BwIGlu
IFNvdXJjZXMgKi8sCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>