<?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>214508</bug_id>
          
          <creation_ts>2020-07-17 16:18:57 -0700</creation_ts>
          <short_desc>Finalizers shouldn&apos;t run if events can&apos;t fire</short_desc>
          <delta_ts>2020-10-09 11:11:01 -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>JavaScriptCore</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Keith Miller">keith_miller</reporter>
          <assigned_to name="Keith Miller">keith_miller</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>kangil.han</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>rniwa</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1672709</commentid>
    <comment_count>0</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-07-17 16:18:57 -0700</bug_when>
    <thetext>Currently, we don&apos;t have a mechanism for WebCore to tell JSC which windows are suspended/killed. This means that JSC will continue to run finalizers for iframes that have been detached from the document. Normally, those windows don&apos;t trigger and events on the runloop. This is already a bug for Wasm but that&apos;s less obvious than finalizers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1674898</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-07-24 16:19:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/66079646&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693849</commentid>
    <comment_count>2</comment_count>
      <attachid>410261</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-10-01 13:16:27 -0700</bug_when>
    <thetext>Created attachment 410261
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1694831</commentid>
    <comment_count>3</comment_count>
      <attachid>410549</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-10-05 13:38:14 -0700</bug_when>
    <thetext>Created attachment 410549
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696005</commentid>
    <comment_count>4</comment_count>
      <attachid>410876</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-10-08 13:07:25 -0700</bug_when>
    <thetext>Created attachment 410876
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696021</commentid>
    <comment_count>5</comment_count>
      <attachid>410880</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-10-08 14:02:53 -0700</bug_when>
    <thetext>Created attachment 410880
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696035</commentid>
    <comment_count>6</comment_count>
      <attachid>410886</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-10-08 14:29:16 -0700</bug_when>
    <thetext>Created attachment 410886
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696049</commentid>
    <comment_count>7</comment_count>
      <attachid>410891</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-10-08 15:20:37 -0700</bug_when>
    <thetext>Created attachment 410891
Build-fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696075</commentid>
    <comment_count>8</comment_count>
      <attachid>410891</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-10-08 17:14:09 -0700</bug_when>
    <thetext>Comment on attachment 410891
Build-fix

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

&gt; Source/WebCore/ChangeLog:13
&gt; +        the ticket).  The only exception to this is if the global object

Nit: Two spaces after period. We use single space.

&gt; Source/JavaScriptCore/runtime/DeferredWorkTimer.cpp:62
&gt; +        // We may have already canceled this task or its owner may have been canceled.
&gt; +        if (pendingTicket == m_pendingTickets.end())

It&apos;s better to define a descriptive bool in that case like so:
bool ticketOrTickerOwnerHasBeenCanceled = pendingTicket == m_pendingTickets.end();
if (ticketOrTickerOwnerHasBeenCanceled)

&gt; Source/JavaScriptCore/runtime/DeferredWorkTimer.cpp:73
&gt; +        default:
&gt; +            break;

Can we explicitly call out Running so that we&apos;d catch it when a new value is added to enum without updating this code?

&gt; Source/JavaScriptCore/runtime/DeferredWorkTimer.cpp:130
&gt; +    dataLogLnIf(DeferredWorkTimerInternal::verbose, &quot;Adding new pending ticket: &quot;, RawPointer(ticket));

This data log doesn&apos;t seem to belong here? Should be inside ensure, right?

&gt; Source/JavaScriptCore/runtime/JSGlobalObject.h:201
&gt; +    Canceled,

Can we call this stopped to match WebCore concepts?
Canceled isn&apos;t a conceptually right terminology here.
Script execution isn&apos;t canceled. It has been stopped.

&gt; Source/WTF/wtf/Locker.h:91
&gt; -        m_lockable-&gt;unlock();
&gt; +        unlock();

Hm... this code will now check m_lockable.
Are you sure that won&apos;t have a negative perf impact?

&gt; Source/WTF/wtf/Locker.h:164
&gt; +class DropLockScope : private AbstractLocker {

Hm... DropLockScope sounds oxymoron. Either you&apos;ve dropped or not.
How about UnlockScope or UnlockForScope? Maybe UnlockerScope or just Unlocker?

&gt; Source/WebCore/bindings/js/JSDOMWindowBase.cpp:240
&gt; +

This blank line seems unnecessary.

&gt; Source/WebCore/dom/ScriptExecutionContext.cpp:80
&gt; -static HashMap&lt;ScriptExecutionContextIdentifier, ScriptExecutionContext*&gt;&amp; allScriptExecutionContextsMap()
&gt; +static HashMap&lt;ScriptExecutionContextIdentifier, ScriptExecutionContext*&gt;&amp; allScriptExecutionContextsMap(const Locker&lt;Lock&gt;&amp;)

What is this code change about??

&gt; Source/WebCore/dom/ScriptExecutionContext.cpp:299
&gt; +    vm().deferredWorkTimer-&gt;scriptExecutionOwnerWasUnsuspended();

I&apos;d called this scriptExecutionIsResumed or simply resumeScriptExecution.

&gt; LayoutTests/ChangeLog:7
&gt; +

Say that we&apos;re adding regression tests?

&gt; LayoutTests/fast/frames/detached-frame-wasm-resolve.html:1
&gt; +&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;

Missing DOCTYPE.

&gt; LayoutTests/fast/frames/detached-frame-wasm-resolve.html:13
&gt; +    promise.then(() =&gt; subFrameCalled = true);

Can we make wrap this as an async function so that we can do:
(async () =&gt; {
await detachedWindow.WebAssembly.compile(~);
subFrameCalled = true;
})();

&gt; LayoutTests/fast/frames/detached-frame-wasm-resolve.html:15
&gt; +    promise = WebAssembly.compile(new Uint8Array([ 0,97,115,109,1,0,0,0,1,136,128,128,128,0,2,96,0,0,96,0,1,124,3,131,128,128,128,0,2,0,1,7,138,128,128,128,0,1,6,114,117,110,102,54,52,0,1,10,165,128,128,128,0,2,130,128,128,128,0,0,11,152,128,128,128,0,0,3,124,68,0,0,0,0,0,0,0,0,65,0,14,0,1,16,0,11,12,0,0,11 ]));

Ditto. It&apos;s confusing to override the same variable here.

&gt; LayoutTests/fast/frames/detached-frame-wasm-resolve.html:25
&gt; +        // Add small timeout to be safe.
&gt; +        }, 100);

100ms isn&apos;t nearly enough on bots.
Can we instead schedule a new WASM compilation here and wait for it complete?
Presumably, that new completion should (or likely) complete later than the pervious compilation?

&gt; LayoutTests/fast/history/page-cache-wasm-promise-resolve.html:42
&gt; +window.addEventListener(&quot;pagehide&quot;, function(event) {

Can we make this async?

&gt; LayoutTests/fast/history/page-cache-wasm-promise-resolve.html:52
&gt; +    promise.then(check);

So that we can have the content of check here instead?
Well, after setting notSuspended = false first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696085</commentid>
    <comment_count>9</comment_count>
      <attachid>410891</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-10-08 17:40:45 -0700</bug_when>
    <thetext>Comment on attachment 410891
Build-fix

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

&gt;&gt; Source/WebCore/ChangeLog:13
&gt;&gt; +        the ticket).  The only exception to this is if the global object
&gt; 
&gt; Nit: Two spaces after period. We use single space.

Sure.

&gt;&gt; Source/JavaScriptCore/runtime/DeferredWorkTimer.cpp:62
&gt;&gt; +        if (pendingTicket == m_pendingTickets.end())
&gt; 
&gt; It&apos;s better to define a descriptive bool in that case like so:
&gt; bool ticketOrTickerOwnerHasBeenCanceled = pendingTicket == m_pendingTickets.end();
&gt; if (ticketOrTickerOwnerHasBeenCanceled)

Sure.

&gt;&gt; Source/JavaScriptCore/runtime/DeferredWorkTimer.cpp:73
&gt;&gt; +            break;
&gt; 
&gt; Can we explicitly call out Running so that we&apos;d catch it when a new value is added to enum without updating this code?

Sure, although, it&apos;s a little hard to imagine what that new case could be. :P

&gt;&gt; Source/JavaScriptCore/runtime/DeferredWorkTimer.cpp:130
&gt;&gt; +    dataLogLnIf(DeferredWorkTimerInternal::verbose, &quot;Adding new pending ticket: &quot;, RawPointer(ticket));
&gt; 
&gt; This data log doesn&apos;t seem to belong here? Should be inside ensure, right?

Yeah, I guess I lost track of the other one while refactoring. I&apos;ll add this to the ensure and put the old one back.

&gt;&gt; Source/JavaScriptCore/runtime/JSGlobalObject.h:201
&gt;&gt; +    Canceled,
&gt; 
&gt; Can we call this stopped to match WebCore concepts?
&gt; Canceled isn&apos;t a conceptually right terminology here.
&gt; Script execution isn&apos;t canceled. It has been stopped.

I went with canceled because stopped, to me at least, implies that it can be resumed. But AFAICT that&apos;s not true. So I went with Canceled for JSC.

&gt;&gt; Source/WTF/wtf/Locker.h:91
&gt;&gt; +        unlock();
&gt; 
&gt; Hm... this code will now check m_lockable.
&gt; Are you sure that won&apos;t have a negative perf impact?

I don&apos;t think so, there&apos;s only ~5 uses of &quot;unlockEarly()&quot; in the codebase. None of them seem obviously hot and all of them are in the same code as the lock acquire. So my guess is the null check gets eliminated. Also, the atomic instructions of the locking are likely way more expensive than a predicted branch will ever be.

&gt;&gt; Source/WTF/wtf/Locker.h:164
&gt;&gt; +class DropLockScope : private AbstractLocker {
&gt; 
&gt; Hm... DropLockScope sounds oxymoron. Either you&apos;ve dropped or not.
&gt; How about UnlockScope or UnlockForScope? Maybe UnlockerScope or just Unlocker?

That&apos;s the terminology used in JSC for dropping the API lock. So I&apos;d like to keep it consistent. If we think `Unlock` is the right name then we should do a comprehensive rename.

&gt;&gt; Source/WebCore/bindings/js/JSDOMWindowBase.cpp:240
&gt;&gt; +
&gt; 
&gt; This blank line seems unnecessary.

fixed.

&gt;&gt; Source/WebCore/dom/ScriptExecutionContext.cpp:80
&gt;&gt; +static HashMap&lt;ScriptExecutionContextIdentifier, ScriptExecutionContext*&gt;&amp; allScriptExecutionContextsMap(const Locker&lt;Lock&gt;&amp;)
&gt; 
&gt; What is this code change about??

Just API cleanup. If you have code that expects a lock to be held while called you should take the locker to force people to do it.

&gt;&gt; Source/WebCore/dom/ScriptExecutionContext.cpp:299
&gt;&gt; +    vm().deferredWorkTimer-&gt;scriptExecutionOwnerWasUnsuspended();
&gt; 
&gt; I&apos;d called this scriptExecutionIsResumed or simply resumeScriptExecution.

How about `scriptExecutionResumed`?

&gt;&gt; LayoutTests/ChangeLog:7
&gt;&gt; +
&gt; 
&gt; Say that we&apos;re adding regression tests?

Isn&apos;t that implied by the tests added below?

&gt;&gt; LayoutTests/fast/frames/detached-frame-wasm-resolve.html:1
&gt;&gt; +&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
&gt; 
&gt; Missing DOCTYPE.

Sure.

&gt;&gt; LayoutTests/fast/frames/detached-frame-wasm-resolve.html:13
&gt;&gt; +    promise.then(() =&gt; subFrameCalled = true);
&gt; 
&gt; Can we make wrap this as an async function so that we can do:
&gt; (async () =&gt; {
&gt; await detachedWindow.WebAssembly.compile(~);
&gt; subFrameCalled = true;
&gt; })();

That seems more complicated?

&gt;&gt; LayoutTests/fast/frames/detached-frame-wasm-resolve.html:15
&gt;&gt; +    promise = WebAssembly.compile(new Uint8Array([ 0,97,115,109,1,0,0,0,1,136,128,128,128,0,2,96,0,0,96,0,1,124,3,131,128,128,128,0,2,0,1,7,138,128,128,128,0,1,6,114,117,110,102,54,52,0,1,10,165,128,128,128,0,2,130,128,128,128,0,0,11,152,128,128,128,0,0,3,124,68,0,0,0,0,0,0,0,0,65,0,14,0,1,16,0,11,12,0,0,11 ]));
&gt; 
&gt; Ditto. It&apos;s confusing to override the same variable here.

Sure. I can give a different name.

&gt;&gt; LayoutTests/fast/frames/detached-frame-wasm-resolve.html:25
&gt;&gt; +        }, 100);
&gt; 
&gt; 100ms isn&apos;t nearly enough on bots.
&gt; Can we instead schedule a new WASM compilation here and wait for it complete?
&gt; Presumably, that new completion should (or likely) complete later than the pervious compilation?

The timeout shouldn&apos;t really be needed. I can probably just get rid of it.

&gt;&gt; LayoutTests/fast/history/page-cache-wasm-promise-resolve.html:52
&gt;&gt; +    promise.then(check);
&gt; 
&gt; So that we can have the content of check here instead?
&gt; Well, after setting notSuspended = false first.

Sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696092</commentid>
    <comment_count>10</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-10-08 17:53:46 -0700</bug_when>
    <thetext>(In reply to Keith Miller from comment #9)
&gt; Comment on attachment 410891 [details]
&gt; Build-fix
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=410891&amp;action=review
&gt;
&gt; &gt;&gt; Source/JavaScriptCore/runtime/JSGlobalObject.h:201
&gt; &gt;&gt; +    Canceled,
&gt; &gt; 
&gt; &gt; Can we call this stopped to match WebCore concepts?
&gt; &gt; Canceled isn&apos;t a conceptually right terminology here.
&gt; &gt; Script execution isn&apos;t canceled. It has been stopped.
&gt; 
&gt; I went with canceled because stopped, to me at least, implies that it can be
&gt; resumed. But AFAICT that&apos;s not true. So I went with Canceled for JSC.

Given the other value in this enum is suspended, I think stopped would make it clear it&apos;s not resumable.
It&apos;s better to match terminology across components so that it&apos;s easier to navigate between them.

&gt; &gt;&gt; Source/WTF/wtf/Locker.h:164
&gt; &gt;&gt; +class DropLockScope : private AbstractLocker {
&gt; &gt; 
&gt; &gt; Hm... DropLockScope sounds oxymoron. Either you&apos;ve dropped or not.
&gt; &gt; How about UnlockScope or UnlockForScope? Maybe UnlockerScope or just Unlocker?
&gt; 
&gt; That&apos;s the terminology used in JSC for dropping the API lock. So I&apos;d like to
&gt; keep it consistent. If we think `Unlock` is the right name then we should do
&gt; a comprehensive rename.

Then we should probably call this DropLockForScope.

&gt; &gt;&gt; Source/WebCore/dom/ScriptExecutionContext.cpp:80
&gt; &gt;&gt; +static HashMap&lt;ScriptExecutionContextIdentifier, ScriptExecutionContext*&gt;&amp; allScriptExecutionContextsMap(const Locker&lt;Lock&gt;&amp;)
&gt; &gt; 
&gt; &gt; What is this code change about??
&gt; 
&gt; Just API cleanup. If you have code that expects a lock to be held while
&gt; called you should take the locker to force people to do it.

I don&apos;t think we do that elsewhere in the codebase so I don&apos;t think we should that here either.

&gt; &gt;&gt; Source/WebCore/dom/ScriptExecutionContext.cpp:299
&gt; &gt;&gt; +    vm().deferredWorkTimer-&gt;scriptExecutionOwnerWasUnsuspended();
&gt; &gt; 
&gt; &gt; I&apos;d called this scriptExecutionIsResumed or simply resumeScriptExecution.
&gt; 
&gt; How about `scriptExecutionResumed`?

Sure, that&apos;s okay although we tend to use &quot;did&quot; so probably more like didResumeScriptExecution or scriptExecutionDidResume.

&gt; &gt;&gt; LayoutTests/ChangeLog:7
&gt; &gt;&gt; +
&gt; &gt; 
&gt; &gt; Say that we&apos;re adding regression tests?
&gt; 
&gt; Isn&apos;t that implied by the tests added below?

Yeah, but we should still put a description in the change log as to what kind of tests are being added.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696094</commentid>
    <comment_count>11</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-10-08 17:58:31 -0700</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #10)
&gt; (In reply to Keith Miller from comment #9)
&gt; &gt; Comment on attachment 410891 [details]
&gt; &gt; Build-fix
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=410891&amp;action=review
&gt; &gt;
&gt; &gt; &gt;&gt; Source/JavaScriptCore/runtime/JSGlobalObject.h:201
&gt; &gt; &gt;&gt; +    Canceled,
&gt; &gt; &gt; 
&gt; &gt; &gt; Can we call this stopped to match WebCore concepts?
&gt; &gt; &gt; Canceled isn&apos;t a conceptually right terminology here.
&gt; &gt; &gt; Script execution isn&apos;t canceled. It has been stopped.
&gt; &gt; 
&gt; &gt; I went with canceled because stopped, to me at least, implies that it can be
&gt; &gt; resumed. But AFAICT that&apos;s not true. So I went with Canceled for JSC.
&gt; 
&gt; Given the other value in this enum is suspended, I think stopped would make
&gt; it clear it&apos;s not resumable.
&gt; It&apos;s better to match terminology across components so that it&apos;s easier to
&gt; navigate between them.

Fair enough, I made the same argument below so I guess I can&apos;t complain :P

&gt; 
&gt; &gt; &gt;&gt; Source/WTF/wtf/Locker.h:164
&gt; &gt; &gt;&gt; +class DropLockScope : private AbstractLocker {
&gt; &gt; &gt; 
&gt; &gt; &gt; Hm... DropLockScope sounds oxymoron. Either you&apos;ve dropped or not.
&gt; &gt; &gt; How about UnlockScope or UnlockForScope? Maybe UnlockerScope or just Unlocker?
&gt; &gt; 
&gt; &gt; That&apos;s the terminology used in JSC for dropping the API lock. So I&apos;d like to
&gt; &gt; keep it consistent. If we think `Unlock` is the right name then we should do
&gt; &gt; a comprehensive rename.
&gt; 
&gt; Then we should probably call this DropLockForScope.

Sure.

&gt; 
&gt; &gt; &gt;&gt; Source/WebCore/dom/ScriptExecutionContext.cpp:80
&gt; &gt; &gt;&gt; +static HashMap&lt;ScriptExecutionContextIdentifier, ScriptExecutionContext*&gt;&amp; allScriptExecutionContextsMap(const Locker&lt;Lock&gt;&amp;)
&gt; &gt; &gt; 
&gt; &gt; &gt; What is this code change about??
&gt; &gt; 
&gt; &gt; Just API cleanup. If you have code that expects a lock to be held while
&gt; &gt; called you should take the locker to force people to do it.
&gt; 
&gt; I don&apos;t think we do that elsewhere in the codebase so I don&apos;t think we
&gt; should that here either.

It&apos;s a very common idiom in JSC, at least, that&apos;s why we have the NoLockingNecessary enum so you can call things that would normally require a lock without actually taking the lock (when you know it&apos;s safe obviously).

&gt; 
&gt; &gt; &gt;&gt; Source/WebCore/dom/ScriptExecutionContext.cpp:299
&gt; &gt; &gt;&gt; +    vm().deferredWorkTimer-&gt;scriptExecutionOwnerWasUnsuspended();
&gt; &gt; &gt; 
&gt; &gt; &gt; I&apos;d called this scriptExecutionIsResumed or simply resumeScriptExecution.
&gt; &gt; 
&gt; &gt; How about `scriptExecutionResumed`?
&gt; 
&gt; Sure, that&apos;s okay although we tend to use &quot;did&quot; so probably more like
&gt; didResumeScriptExecution or scriptExecutionDidResume.

Sure didResumeScriptExecution sounds good.

&gt; 
&gt; &gt; &gt;&gt; LayoutTests/ChangeLog:7
&gt; &gt; &gt;&gt; +
&gt; &gt; &gt; 
&gt; &gt; &gt; Say that we&apos;re adding regression tests?
&gt; &gt; 
&gt; &gt; Isn&apos;t that implied by the tests added below?
&gt; 
&gt; Yeah, but we should still put a description in the change log as to what
&gt; kind of tests are being added.

Ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696127</commentid>
    <comment_count>12</comment_count>
      <attachid>410910</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-10-08 21:29:22 -0700</bug_when>
    <thetext>Created attachment 410910
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696144</commentid>
    <comment_count>13</comment_count>
      <attachid>410910</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-10-09 00:20:59 -0700</bug_when>
    <thetext>Comment on attachment 410910
Patch

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

&gt; Source/JavaScriptCore/runtime/DeferredWorkTimer.cpp:65
&gt; +        ScriptExecutionStatus status = globalObject-&gt;globalObjectMethodTable()-&gt;scriptExecutionStatus(globalObject, pendingTicket-&gt;value.scriptExecutionOwner.get());

It seems like this local variable is unnecessary. You can call the whole thing in the switch.
If you&apos;re doing this for readability, I&apos;d suggest using auto for the type name here.

&gt; Source/JavaScriptCore/runtime/JSGlobalObject.h:241
&gt; +    // For most contexts this is just the global object. For JSDOMWindow, however, this is the JSDocument.

This is a verbose way of saying that it&apos;s either JSGlobalObject or JSDocument.

&gt; Source/WebCore/bindings/js/JSDOMWindowBase.cpp:240
&gt; +

This blank line seems unnecessary?

&gt; Source/WebCore/bindings/js/JSDOMWindowBase.cpp:247
&gt; +    auto* document = jsCast&lt;JSDocument*&gt;(owner);
&gt; +    return document-&gt;wrapped().jscScriptExecutionStatus();

I would have done this in a single line instead.

&gt; Source/WebCore/bindings/js/JSWorkerGlobalScopeBase.cpp:140
&gt; +    JSWorkerGlobalScopeBase* thisObject = jsCast&lt;JSWorkerGlobalScopeBase*&gt;(globalObject);
&gt; +    return thisObject-&gt;scriptExecutionContext()-&gt;jscScriptExecutionStatus();

Ditto.

&gt; Source/WebCore/bindings/js/JSWorkletGlobalScopeBase.cpp:109
&gt; +    auto* thisObject = jsCast&lt;JSWorkletGlobalScopeBase*&gt;(globalObject);
&gt; +    return thisObject-&gt;scriptExecutionContext()-&gt;jscScriptExecutionStatus();

Ditto.

&gt; Source/WebCore/dom/ScriptExecutionContext.cpp:80
&gt; -static HashMap&lt;ScriptExecutionContextIdentifier, ScriptExecutionContext*&gt;&amp; allScriptExecutionContextsMap()
&gt; +static HashMap&lt;ScriptExecutionContextIdentifier, ScriptExecutionContext*&gt;&amp; allScriptExecutionContextsMap(const Locker&lt;Lock&gt;&amp;)

I think we should revert this since we don&apos;t do this in WebCore.
If you landed it, someone will come in and undo it anyway.
No need to cause a churn like that.

&gt; Source/WebCore/dom/ScriptExecutionContext.cpp:261
&gt; +    if (activeDOMObjectsAreStopped())
&gt; +        return JSC::ScriptExecutionStatus::Stopped;

We should check stopped first since that&apos;s more broader state than suspended.
e.g. ScriptExecutionContext can get suspend and then stopped for example.

&gt; LayoutTests/fast/frames/detached-frame-wasm-resolve.html:19
&gt; +        setTimeout(() =&gt; {
&gt; +            if (subFrameCalled)

I thought we&apos;re gonna disable concurrent JIT?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696251</commentid>
    <comment_count>14</comment_count>
      <attachid>410910</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-10-09 10:01:14 -0700</bug_when>
    <thetext>Comment on attachment 410910
Patch

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

&gt;&gt; Source/JavaScriptCore/runtime/DeferredWorkTimer.cpp:65
&gt;&gt; +        ScriptExecutionStatus status = globalObject-&gt;globalObjectMethodTable()-&gt;scriptExecutionStatus(globalObject, pendingTicket-&gt;value.scriptExecutionOwner.get());
&gt; 
&gt; It seems like this local variable is unnecessary. You can call the whole thing in the switch.
&gt; If you&apos;re doing this for readability, I&apos;d suggest using auto for the type name here.

Sure, I can move it into the switch.

&gt;&gt; Source/JavaScriptCore/runtime/JSGlobalObject.h:241
&gt;&gt; +    // For most contexts this is just the global object. For JSDOMWindow, however, this is the JSDocument.
&gt; 
&gt; This is a verbose way of saying that it&apos;s either JSGlobalObject or JSDocument.

Kinda but it&apos;s a bit more precise since it tells you exactly when it&apos;s the JSDocument. Perhaps that&apos;s unnecessary though.

&gt;&gt; Source/WebCore/bindings/js/JSDOMWindowBase.cpp:240
&gt;&gt; +
&gt; 
&gt; This blank line seems unnecessary?

Sorry forgot to remove before. Will do.

&gt;&gt; Source/WebCore/bindings/js/JSDOMWindowBase.cpp:247
&gt;&gt; +    return document-&gt;wrapped().jscScriptExecutionStatus();
&gt; 
&gt; I would have done this in a single line instead.

Ok.

&gt;&gt; Source/WebCore/bindings/js/JSWorkerGlobalScopeBase.cpp:140
&gt;&gt; +    return thisObject-&gt;scriptExecutionContext()-&gt;jscScriptExecutionStatus();
&gt; 
&gt; Ditto.

Done.

&gt;&gt; Source/WebCore/bindings/js/JSWorkletGlobalScopeBase.cpp:109
&gt;&gt; +    return thisObject-&gt;scriptExecutionContext()-&gt;jscScriptExecutionStatus();
&gt; 
&gt; Ditto.

Done.

&gt;&gt; Source/WebCore/dom/ScriptExecutionContext.cpp:80
&gt;&gt; +static HashMap&lt;ScriptExecutionContextIdentifier, ScriptExecutionContext*&gt;&amp; allScriptExecutionContextsMap(const Locker&lt;Lock&gt;&amp;)
&gt; 
&gt; I think we should revert this since we don&apos;t do this in WebCore.
&gt; If you landed it, someone will come in and undo it anyway.
&gt; No need to cause a churn like that.

Alright that&apos;s fine. I&apos;ll revert.

&gt;&gt; Source/WebCore/dom/ScriptExecutionContext.cpp:261
&gt;&gt; +        return JSC::ScriptExecutionStatus::Stopped;
&gt; 
&gt; We should check stopped first since that&apos;s more broader state than suspended.
&gt; e.g. ScriptExecutionContext can get suspend and then stopped for example.

Gotcha. Wasn&apos;t sure if the order mattered. From skimming the code it looks like we stop suspending but I may have missed some cases. I&apos;ll flip.

&gt;&gt; LayoutTests/fast/frames/detached-frame-wasm-resolve.html:19
&gt;&gt; +            if (subFrameCalled)
&gt; 
&gt; I thought we&apos;re gonna disable concurrent JIT?

Oh for some reason this test got untracked on git. It&apos;s not using concurrent JIT anymore. Also, most of the timeouts/promises are now awaited other than the first one since the expectation is that one never gets resolved.

&gt; LayoutTests/platform/win/TestExpectations:704
&gt; +fast/history/page-cache-active-finalization-registry-callback.html [ Skip ]

Whoops this is the wrong test. That&apos;s what I get for uploading a patch at 11pm... lol</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696254</commentid>
    <comment_count>15</comment_count>
      <attachid>410947</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-10-09 10:16:14 -0700</bug_when>
    <thetext>Created attachment 410947
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696275</commentid>
    <comment_count>16</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-10-09 11:10:59 -0700</bug_when>
    <thetext>Committed r268271: &lt;https://trac.webkit.org/changeset/268271&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 410947.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410261</attachid>
            <date>2020-10-01 13:16:27 -0700</date>
            <delta_ts>2020-10-05 13:38:12 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-214508-20201001131626.patch</filename>
            <type>text/plain</type>
            <size>16045</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3NzcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
NmU1ZWEyN2M4YmEwM2QwM2Y3ODA5MTAxMzVkZmFjYzI2YjFkMGVkLi4zMzEyNWIyOThmN2YzYTYx
MjE2YTUxZThmZjg1ZjBkNGI0MzNmNTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOSBAQAorMjAyMC0xMC0wMSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBGaW5hbGl6ZXJzIHNob3VsZG4ndCBydW4gaWYgZXZlbnRzIGNhbid0
IGZpcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
NDUwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
cnVudGltZS9EZWZlcnJlZFdvcmtUaW1lci5jcHA6CisgICAgICAgIChKU0M6OkRlZmVycmVkV29y
a1RpbWVyOjpkb1dvcmspOgorICAgICAgICAoSlNDOjpEZWZlcnJlZFdvcmtUaW1lcjo6YWRkUGVu
ZGluZ1dvcmspOgorICAgICAgICAoSlNDOjpEZWZlcnJlZFdvcmtUaW1lcjo6YWRkRGVwZW5kYW5j
aWVzVG9QZW5kaW5nV29yayk6CisgICAgICAgIChKU0M6OkRlZmVycmVkV29ya1RpbWVyOjpzdXNw
ZW5kVGFza3NGcm9tR2xvYmFsT2JqZWN0KToKKyAgICAgICAgKEpTQzo6RGVmZXJyZWRXb3JrVGlt
ZXI6OnJlc3VtZVRhc2tzRnJvbUdsb2JhbE9iamVjdCk6CisgICAgICAgIChKU0M6OkRlZmVycmVk
V29ya1RpbWVyOjpjYW5jZWxUYXNrc0Zyb21HbG9iYWxPYmplY3QpOgorICAgICAgICAqIHJ1bnRp
bWUvRGVmZXJyZWRXb3JrVGltZXIuaDoKKwogMjAyMC0wOS0yNiAgRGFyaW4gQWRsZXIgIDxkYXJp
bkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVmYWN0b3IgdGVzdCBydW5uZXIgY29kZSB0byBjdXQg
ZG93biBvbiBjb3B5L3Bhc3RlIGNvZGUgYW5kIGxvbmctd2luZGVkIHJlcGV0aXRpdmUgaWRpb21z
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
CmluZGV4IGQ5NWE2ZDE4NTA1YzIwYzM2MzA0ODUwOWI5NWEwYjU2ZTQzYmZmYzUuLmQzYmNiZjMx
YTQ0OWZhNWUzYTMwZmZmMTQxMjQxNjVmNjQ3ODI1MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIw
MjAtMTAtMDEgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CisKKyAgICAg
ICAgRmluYWxpemVycyBzaG91bGRuJ3QgcnVuIGlmIGV2ZW50cyBjYW4ndCBmaXJlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQ1MDgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9Mb2NrZXIuaDoK
KyAgICAgICAgKFdURjo6TG9ja2VyOjp+TG9ja2VyKToKKyAgICAgICAgKFdURjo6TG9ja2VyOjp1
bmxvY2tFYXJseSk6CisgICAgICAgIChXVEY6OkxvY2tlcjo6TG9ja2VyKToKKyAgICAgICAgKFdU
Rjo6TG9ja2VyOjpvcGVyYXRvcj0pOgorICAgICAgICAoV1RGOjpMb2NrZXI6OnVubG9jayk6Cisg
ICAgICAgIChXVEY6OkRyb3BMb2NrU2NvcGU6OkRyb3BMb2NrU2NvcGUpOgorICAgICAgICAoV1RG
OjpEcm9wTG9ja1Njb3BlOjp+RHJvcExvY2tTY29wZSk6CisKIDIwMjAtMDktMjkgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgcGxp
c3QtYmFzZWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyBzdG9yYWdlLCB3aGljaCBoYXMgYmVlbiBy
ZXBsYWNlZCBieSBkYXRhYmFzZS1iYXNlZCBzdG9yYWdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGEwMzg4NWJm
YTI0ODUwOGU3YzlhOTg3M2NlY2M2MjhmM2JlMjIxMy4uNTMyMTZlZDE0Yjg5YzE5YjM5Y2MxZGYx
YWU1ZTM2ZTZkZDE0ZDFjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIwLTEwLTAx
ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgorCisgICAgICAgIEZpbmFs
aXplcnMgc2hvdWxkbid0IHJ1biBpZiBldmVudHMgY2FuJ3QgZmlyZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0NTA4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisK
KyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpzdXNwZW5kQWN0aXZlRE9NT2JqZWN0cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpyZXN1bWVBY3RpdmVET01P
YmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnN0b3BB
Y3RpdmVET01PYmplY3RzKToKKwogMjAyMC0wOS0yOSAgUGVuZyBMaXUgIDxwZW5nLmxpdTZAYXBw
bGUuY29tPgogCiAgICAgICAgIFtNZWRpYSBpbiBHUFUgUHJvY2Vzc10gVXNlIFZpZGVvTGF5ZXJN
YW5hZ2VyIHRvIG1hbmFnZSBsYXllcnMgb2YgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EZWZlcnJlZFdvcmtUaW1lci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EZWZlcnJlZFdvcmtUaW1lci5jcHAK
aW5kZXggY2VkNzdiYWU0NGQ3MzJlZGUzN2Y0NDAzNzdkMDczNWE3ZmVhMmRjOC4uODdmMGFkZjJh
M2MyNmMxNjIwMTFmNmMzYWU1NzhjNzQ0MDQyODZhZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRGVmZXJyZWRXb3JrVGltZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0RlZmVycmVkV29ya1RpbWVyLmNwcApAQCAtNDUsNDYgKzQ1LDU5
IEBAIERlZmVycmVkV29ya1RpbWVyOjpEZWZlcnJlZFdvcmtUaW1lcihWTSYgdm0pCiB2b2lkIERl
ZmVycmVkV29ya1RpbWVyOjpkb1dvcmsoVk0mIHZtKQogewogICAgIEFTU0VSVCh2bS5jdXJyZW50
VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKLSAgICBtX3Rhc2tMb2NrLmxvY2soKTsKKyAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fdGFza0xvY2spOwogICAgIGNhbmNlbFRpbWVyKCk7Ci0g
ICAgaWYgKCFtX3J1blRhc2tzKSB7Ci0gICAgICAgIG1fdGFza0xvY2sudW5sb2NrKCk7CisgICAg
aWYgKCFtX3J1blRhc2tzKQogICAgICAgICByZXR1cm47Ci0gICAgfQorCisgICAgVmVjdG9yPHN0
ZDo6dHVwbGU8VGlja2V0LCBUYXNrPj4gc3VzcGVuZGVkVGFza3M7CiAKICAgICB3aGlsZSAoIW1f
dGFza3MuaXNFbXB0eSgpKSB7CiAgICAgICAgIGF1dG8gW3RpY2tldCwgdGFza10gPSBtX3Rhc2tz
LnRha2VGaXJzdCgpOwogICAgICAgICBkYXRhTG9nTG5JZihEZWZlcnJlZFdvcmtUaW1lckludGVy
bmFsOjp2ZXJib3NlLCAiRG9pbmcgd29yayBvbjogIiwgUmF3UG9pbnRlcih0aWNrZXQpKTsKIAor
ICAgICAgICBhdXRvIHN0YXR1cyA9IG1fc3VzcGVuZGVkR2xvYmFscy5maW5kKHRpY2tldC0+Z2xv
YmFsT2JqZWN0KCkpOworICAgICAgICBhdXRvIHBlbmRpbmdUaWNrZXQgPSBtX3BlbmRpbmdUaWNr
ZXRzLmZpbmQodGlja2V0KTsKKyAgICAgICAgaWYgKHN0YXR1cyAhPSBtX3N1c3BlbmRlZEdsb2Jh
bHMuZW5kKCkpIHsKKyAgICAgICAgICAgIGlmIChzdGF0dXMtPnZhbHVlID09IFN0YXR1czo6U3Vz
cGVuZGVkKQorICAgICAgICAgICAgICAgIHN1c3BlbmRlZFRhc2tzLmFwcGVuZChzdGQ6Om1ha2Vf
dHVwbGUodGlja2V0LCBXVEZNb3ZlKHRhc2spKSk7CisgICAgICAgICAgICBlbHNlIGlmIChwZW5k
aW5nVGlja2V0ICE9IG1fcGVuZGluZ1RpY2tldHMuZW5kKCkpCisgICAgICAgICAgICAgICAgbV9w
ZW5kaW5nVGlja2V0cy5yZW1vdmUocGVuZGluZ1RpY2tldCk7CisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgfQorCiAgICAgICAgIC8vIFdlIG1heSBoYXZlIGFscmVhZHkgY2FuY2VsZWQg
dGhlc2UgcHJvbWlzZXMuCi0gICAgICAgIGlmIChtX3BlbmRpbmdUaWNrZXRzLmNvbnRhaW5zKHRp
Y2tldCkpIHsKLSAgICAgICAgICAgIC8vIEFsbG93IHRhc2tzIHdlIHJ1biBub3cgdG8gc2NoZWR1
bGUgd29yay4KKyAgICAgICAgaWYgKHBlbmRpbmdUaWNrZXQgIT0gbV9wZW5kaW5nVGlja2V0cy5l
bmQoKSkgeworICAgICAgICAgICAgLy8gQWxsb3cgdGFza3Mgd2UgYXJlIGFib3V0IHRvIHJ1biB0
byBzY2hlZHVsZSB3b3JrLgogICAgICAgICAgICAgbV9jdXJyZW50bHlSdW5uaW5nVGFzayA9IHRy
dWU7Ci0gICAgICAgICAgICBtX3Rhc2tMb2NrLnVubG9jaygpOyAKLQotICAgICAgICAgICAgLy8g
VGhpcyBpcyB0aGUgc3RhcnQgb2YgYSBydW5sb29wIHR1cm4sIHdlIGNhbiByZWxlYXNlIGFueSB3
ZWFrcmVmcyBoZXJlLgotICAgICAgICAgICAgdm0uZmluYWxpemVTeW5jaHJvbm91c0pTRXhlY3V0
aW9uKCk7Ci0KLSAgICAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZt
KTsKLSAgICAgICAgICAgIHRhc2soKTsKLSAgICAgICAgICAgIGlmIChFeGNlcHRpb24qIGV4Y2Vw
dGlvbiA9IHNjb3BlLmV4Y2VwdGlvbigpKSB7Ci0gICAgICAgICAgICAgICAgYXV0byogZ2xvYmFs
T2JqZWN0ID0gdGlja2V0LT5nbG9iYWxPYmplY3QoKTsKLSAgICAgICAgICAgICAgICBzY29wZS5j
bGVhckV4Y2VwdGlvbigpOwotICAgICAgICAgICAgICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsT2Jq
ZWN0TWV0aG9kVGFibGUoKS0+cmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcChnbG9i
YWxPYmplY3QsIGV4Y2VwdGlvbik7CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgYXV0
byBkcm9wcGVyID0gRHJvcExvY2tTY29wZShsb2NrZXIpOworCisgICAgICAgICAgICAgICAgLy8g
VGhpcyBpcyB0aGUgc3RhcnQgb2YgYSBydW5sb29wIHR1cm4sIHdlIGNhbiByZWxlYXNlIGFueSB3
ZWFrcmVmcyBoZXJlLgorICAgICAgICAgICAgICAgIHZtLmZpbmFsaXplU3luY2hyb25vdXNKU0V4
ZWN1dGlvbigpOworCisgICAgICAgICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hf
U0NPUEUodm0pOworICAgICAgICAgICAgICAgIHRhc2soKTsKKyAgICAgICAgICAgICAgICBpZiAo
RXhjZXB0aW9uKiBleGNlcHRpb24gPSBzY29wZS5leGNlcHRpb24oKSkgeworICAgICAgICAgICAg
ICAgICAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSB0aWNrZXQtPmdsb2JhbE9iamVjdCgpOworICAg
ICAgICAgICAgICAgICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOworICAgICAgICAgICAgICAg
ICAgICBnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPnJlcG9ydFVuY2F1
Z2h0RXhjZXB0aW9uQXRFdmVudExvb3AoZ2xvYmFsT2JqZWN0LCBleGNlcHRpb24pOworICAgICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHZtLmRyYWluTWljcm90YXNrcygpOworICAg
ICAgICAgICAgICAgIEFTU0VSVCghdm0uZXhjZXB0aW9uRm9ySW5zcGVjdGlvbigpKTsKICAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgdm0uZHJhaW5NaWNyb3Rhc2tzKCk7Ci0gICAgICAgICAg
ICBBU1NFUlQoIXZtLmV4Y2VwdGlvbkZvckluc3BlY3Rpb24oKSk7Ci0KLSAgICAgICAgICAgIG1f
dGFza0xvY2subG9jaygpOwogICAgICAgICAgICAgbV9jdXJyZW50bHlSdW5uaW5nVGFzayA9IGZh
bHNlOwogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKG1fcGVuZGluZ1RpY2tldHMuaXNFbXB0
eSgpICYmIG1fc2hvdWxkU3RvcFJ1bkxvb3BXaGVuQWxsVGlja2V0c0ZpbmlzaCkKLSAgICAgICAg
UnVuTG9vcDo6Y3VycmVudCgpLnN0b3AoKTsKKyAgICB3aGlsZSAoIXN1c3BlbmRlZFRhc2tzLmlz
RW1wdHkoKSkKKyAgICAgICAgbV90YXNrcy5wcmVwZW5kKHN1c3BlbmRlZFRhc2tzLnRha2VMYXN0
KCkpOwogCi0gICAgbV90YXNrTG9jay51bmxvY2soKTsKKyAgICBpZiAobV9wZW5kaW5nVGlja2V0
cy5pc0VtcHR5KCkgJiYgbV9zaG91bGRTdG9wUnVuTG9vcFdoZW5BbGxUaWNrZXRzRmluaXNoKSB7
CisgICAgICAgIEFTU0VSVChtX3Rhc2tzLmlzRW1wdHkoKSk7CisgICAgICAgIFJ1bkxvb3A6OmN1
cnJlbnQoKS5zdG9wKCk7CisgICAgfQogfQogCiB2b2lkIERlZmVycmVkV29ya1RpbWVyOjpydW5S
dW5Mb29wKCkKQEAgLTEwMiwxNSArMTE1LDEwIEBAIHZvaWQgRGVmZXJyZWRXb3JrVGltZXI6OmFk
ZFBlbmRpbmdXb3JrKFZNJiB2bSwgVGlja2V0IHRpY2tldCwgVmVjdG9yPFN0cm9uZzxKU0NlCiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRlcGVuZGVuY2llcy5zaXplKCk7ICsraSkKICAg
ICAgICAgQVNTRVJUKGRlcGVuZGVuY2llc1tpXS5nZXQoKSAhPSB0aWNrZXQpOwogCi0gICAgYXV0
byByZXN1bHQgPSBtX3BlbmRpbmdUaWNrZXRzLmFkZCh0aWNrZXQsIFZlY3RvcjxTdHJvbmc8SlND
ZWxsPj4oKSk7Ci0gICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KSB7Ci0gICAgICAgIGRhdGFMb2dM
bklmKERlZmVycmVkV29ya1RpbWVySW50ZXJuYWw6OnZlcmJvc2UsICJBZGRpbmcgbmV3IHBlbmRp
bmcgdGlja2V0OiAiLCBSYXdQb2ludGVyKHRpY2tldCkpOwotICAgICAgICBkZXBlbmRlbmNpZXMu
YXBwZW5kKFN0cm9uZzxKU0NlbGw+KHZtLCB0aWNrZXQpKTsKLSAgICAgICAgcmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZSA9IFdURk1vdmUoZGVwZW5kZW5jaWVzKTsKLSAgICB9IGVsc2UgewotICAgICAg
ICBkYXRhTG9nTG5JZihEZWZlcnJlZFdvcmtUaW1lckludGVybmFsOjp2ZXJib3NlLCAiQWRkaW5n
IG5ldyBkZXBlbmRlbmNpZXMgZm9yIHRpY2tldDogIiwgUmF3UG9pbnRlcih0aWNrZXQpKTsKLSAg
ICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5hcHBlbmRWZWN0b3IoZGVwZW5kZW5jaWVzKTsK
LSAgICB9CisgICAgZGVwZW5kZW5jaWVzLmFwcGVuZChTdHJvbmc8SlNDZWxsPih2bSwgdGlja2V0
KSk7CisgICAgYXV0byByZXN1bHQgPSBtX3BlbmRpbmdUaWNrZXRzLmFkZCh0aWNrZXQsIFdURk1v
dmUoZGVwZW5kZW5jaWVzKSk7CisgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0LmlzTmV3RW50cnkp
OworICAgIGRhdGFMb2dMbklmKERlZmVycmVkV29ya1RpbWVySW50ZXJuYWw6OnZlcmJvc2UsICJB
ZGRpbmcgbmV3IHBlbmRpbmcgdGlja2V0OiAiLCBSYXdQb2ludGVyKHRpY2tldCkpOwogfQogCiBi
b29sIERlZmVycmVkV29ya1RpbWVyOjpoYXNQZW5kaW5nV29yayhUaWNrZXQgdGlja2V0KQpAQCAt
MTI4LDYgKzEzNiwxNiBAQCBib29sIERlZmVycmVkV29ya1RpbWVyOjpoYXNEZXBlbmRhbmN5SW5Q
ZW5kaW5nV29yayhUaWNrZXQgdGlja2V0LCBKU0NlbGwqIGRlcGVuZAogICAgIHJldHVybiByZXN1
bHQuY29udGFpbnMoZGVwZW5kZW5jeSk7CiB9CiAKK3ZvaWQgRGVmZXJyZWRXb3JrVGltZXI6OmFk
ZERlcGVuZGFuY2llc1RvUGVuZGluZ1dvcmsoVGlja2V0IHRpY2tldCwgVmVjdG9yPFN0cm9uZzxK
U0NlbGw+PiYmIGRlcGVuZGVuY2llcykKK3sKKyAgICBBU1NFUlQodGlja2V0LT52bSgpLmN1cnJl
bnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkgfHwgKFRocmVhZDo6bWF5QmVHQ1RocmVhZCgpICYm
IHRpY2tldC0+dm0oKS5oZWFwLndvcmxkSXNTdG9wcGVkKCkpKTsKKyAgICBBU1NFUlQobV9wZW5k
aW5nVGlja2V0cy5jb250YWlucyh0aWNrZXQpKTsKKworICAgIGF1dG8gaXRlciA9IG1fcGVuZGlu
Z1RpY2tldHMuZmluZCh0aWNrZXQpOworICAgIGl0ZXItPnZhbHVlLmFwcGVuZFZlY3RvcihkZXBl
bmRlbmNpZXMpOworICAgIGRhdGFMb2dMbklmKERlZmVycmVkV29ya1RpbWVySW50ZXJuYWw6OnZl
cmJvc2UsICJBZGRpbmcgbmV3IGRlcGVuZGVuY2llcyBmb3IgZXhpc3RpbmcgdGlja2V0OiAiLCBS
YXdQb2ludGVyKHRpY2tldCkpOworfQorCiBib29sIERlZmVycmVkV29ya1RpbWVyOjpjYW5jZWxQ
ZW5kaW5nV29yayhUaWNrZXQgdGlja2V0KQogewogICAgIEFTU0VSVCh0aWNrZXQtPnZtKCkuY3Vy
cmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSB8fCAoVGhyZWFkOjptYXlCZUdDVGhyZWFkKCkg
JiYgdGlja2V0LT52bSgpLmhlYXAud29ybGRJc1N0b3BwZWQoKSkpOwpAQCAtMTQ3LDQgKzE2NSwz
MCBAQCB2b2lkIERlZmVycmVkV29ya1RpbWVyOjpzY2hlZHVsZVdvcmtTb29uKFRpY2tldCB0aWNr
ZXQsIFRhc2smJiB0YXNrKQogICAgICAgICBzZXRUaW1lVW50aWxGaXJlKDBfcyk7CiB9CiAKK3Zv
aWQgRGVmZXJyZWRXb3JrVGltZXI6OnN1c3BlbmRUYXNrc0Zyb21HbG9iYWxPYmplY3QoY29uc3Qg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0
LT52bSgpLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOworICAgIG1fc3VzcGVuZGVk
R2xvYmFscy5hZGQoZ2xvYmFsT2JqZWN0LCBTdGF0dXM6OlN1c3BlbmRlZCk7CisgICAgZGF0YUxv
Z0xuSWYoRGVmZXJyZWRXb3JrVGltZXJJbnRlcm5hbDo6dmVyYm9zZSwgIlN1c3BlbmRpbmcgdGFz
a3MgZm9yIGdsb2JhbE9iamVjdDogIiwgUmF3UG9pbnRlcihnbG9iYWxPYmplY3QpKTsKK30KKwor
dm9pZCBEZWZlcnJlZFdvcmtUaW1lcjo6cmVzdW1lVGFza3NGcm9tR2xvYmFsT2JqZWN0KGNvbnN0
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgQVNTRVJUKGdsb2JhbE9iamVj
dC0+dm0oKS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKKyAgICBhdXRvIGl0ZXIg
PSBtX3N1c3BlbmRlZEdsb2JhbHMuZmluZChnbG9iYWxPYmplY3QpOworICAgIGlmIChpdGVyICE9
IG1fc3VzcGVuZGVkR2xvYmFscy5lbmQoKSB8fCBpdGVyLT52YWx1ZSA9PSBTdGF0dXM6OkNhbmNl
bGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3N1c3BlbmRlZEdsb2JhbHMucmVtb3ZlKGl0
ZXIpOworICAgIGlmIChtX3Rhc2tzLnNpemUoKSAmJiAhaXNTY2hlZHVsZWQoKSAmJiAhbV9jdXJy
ZW50bHlSdW5uaW5nVGFzaykKKyAgICAgICAgc2V0VGltZVVudGlsRmlyZSgwX3MpOworICAgIGRh
dGFMb2dMbklmKERlZmVycmVkV29ya1RpbWVySW50ZXJuYWw6OnZlcmJvc2UsICJSZXN1bWluZyB0
YXNrcyBmb3IgZ2xvYmFsT2JqZWN0OiAiLCBSYXdQb2ludGVyKGdsb2JhbE9iamVjdCkpOworfQor
dm9pZCBEZWZlcnJlZFdvcmtUaW1lcjo6Y2FuY2VsVGFza3NGcm9tR2xvYmFsT2JqZWN0KGNvbnN0
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgQVNTRVJUKGdsb2JhbE9iamVj
dC0+dm0oKS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKKyAgICBtX3N1c3BlbmRl
ZEdsb2JhbHMuc2V0KGdsb2JhbE9iamVjdCwgU3RhdHVzOjpDYW5jZWxlZCk7CisgICAgZGF0YUxv
Z0xuSWYoRGVmZXJyZWRXb3JrVGltZXJJbnRlcm5hbDo6dmVyYm9zZSwgIkNhbmNlbGluZyB0YXNr
cyBmb3IgZ2xvYmFsT2JqZWN0OiAiLCBSYXdQb2ludGVyKGdsb2JhbE9iamVjdCkpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0RlZmVycmVkV29ya1RpbWVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9E
ZWZlcnJlZFdvcmtUaW1lci5oCmluZGV4IDI3MWE4YWJjOWVjNDI4NTZlOWRkM2ExY2MzYmM1Y2U4
NmRiNGY2OTMuLmM5Y2JkZDc3M2Q4N2UzNTRmYWZiZDFiMmM0NDNhNjdmMzMzNDM0ZmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RlZmVycmVkV29ya1RpbWVyLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVmZXJyZWRXb3JrVGltZXIuaApA
QCAtNDksOCArNDksMTQgQEAgcHVibGljOgogICAgIHZvaWQgYWRkUGVuZGluZ1dvcmsoVk0mLCBU
aWNrZXQsIFZlY3RvcjxTdHJvbmc8SlNDZWxsPj4mJiBkZXBlbmRlbmNpZXMpOwogICAgIGJvb2wg
aGFzUGVuZGluZ1dvcmsoVGlja2V0KTsKICAgICBib29sIGhhc0RlcGVuZGFuY3lJblBlbmRpbmdX
b3JrKFRpY2tldCwgSlNDZWxsKiBkZXBlbmRlbmN5KTsKKyAgICB2b2lkIGFkZERlcGVuZGFuY2ll
c1RvUGVuZGluZ1dvcmsoVGlja2V0LCBWZWN0b3I8U3Ryb25nPEpTQ2VsbD4+JiYpOwogICAgIGJv
b2wgY2FuY2VsUGVuZGluZ1dvcmsoVGlja2V0KTsKIAorICAgIC8vIElmIHRoZSBnbG9iYWwgb2Jq
ZWN0IHlvdXIgdGlja2V0IGlzIGFzc29jaWF0ZWQgd2l0aCBnZXRzIGNhbmNlbGVkCisgICAgLy8g
dGhlIFRhc2sgd2lsbCBub3QgYmUgY2FsbGVkIGFuZCB3aWxsIGJlIGRlYWxsb2NhdGVkLiBTbyBp
dCdzIGltcG9ydGFudAorICAgIC8vIHRvIG1ha2Ugc3VyZSB5b3VyIG1lbW9yeSBvd25lcnNoaXAg
bW9kZWwgd29uJ3QgbGVhayBtZW1vcnkgd2hlbgorICAgIC8vIHRoaXMgb2NjdXJzLiBUaGUgZWFz
aWVzdCB3YXkgaXMgdG8gbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgaXMgZWl0aGVyIG93bmVkCisgICAg
Ly8gYnkgYSBHQydkIHZhbHVlIGluIGRlcGVuZGVuY2llcyBvciBieSB0aGUgVGFzay4KICAgICB1
c2luZyBUYXNrID0gRnVuY3Rpb248dm9pZCgpPjsKICAgICB2b2lkIHNjaGVkdWxlV29ya1Nvb24o
VGlja2V0LCBUYXNrJiYpOwogCkBAIC02Myw2ICs2OSwxMCBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IERlZmVycmVkV29ya1RpbWVyKHZtKSk7CiAgICAgfQogCisgICAg
dm9pZCBzdXNwZW5kVGFza3NGcm9tR2xvYmFsT2JqZWN0KGNvbnN0IEpTR2xvYmFsT2JqZWN0Kik7
CisgICAgdm9pZCByZXN1bWVUYXNrc0Zyb21HbG9iYWxPYmplY3QoY29uc3QgSlNHbG9iYWxPYmpl
Y3QqKTsKKyAgICB2b2lkIGNhbmNlbFRhc2tzRnJvbUdsb2JhbE9iamVjdChjb25zdCBKU0dsb2Jh
bE9iamVjdCopOworCiBwcml2YXRlOgogICAgIERlZmVycmVkV29ya1RpbWVyKFZNJik7CiAKQEAg
LTcyLDYgKzgyLDExIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2N1cnJlbnRseVJ1bm5pbmdUYXNr
IHsgZmFsc2UgfTsKICAgICBEZXF1ZTxzdGQ6OnR1cGxlPFRpY2tldCwgVGFzaz4+IG1fdGFza3M7
CiAgICAgSGFzaE1hcDxUaWNrZXQsIFZlY3RvcjxTdHJvbmc8SlNDZWxsPj4+IG1fcGVuZGluZ1Rp
Y2tldHM7CisgICAgZW51bSBjbGFzcyBTdGF0dXMgeworICAgICAgICBTdXNwZW5kZWQsCisgICAg
ICAgIENhbmNlbGVkCisgICAgfTsKKyAgICBIYXNoTWFwPGNvbnN0IEpTR2xvYmFsT2JqZWN0Kiwg
U3RhdHVzPiBtX3N1c3BlbmRlZEdsb2JhbHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0xvY2tlci5oIGIvU291cmNlL1dURi93dGYvTG9ja2Vy
LmgKaW5kZXggYTc4OWUwM2UwOTU4ZWNiZTRmMzJmNGQ5NGYzMTYxMzU0NGJkMzY4OC4uYWU3MjQ5
Mzk2NGNiN2Q1N2ZhZTAzZGIwYTdkNjgxMWE4Y2RjOGY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvTG9ja2VyLmgKKysrIGIvU291cmNlL1dURi93dGYvTG9ja2VyLmgKQEAgLTMxLDYgKzMx
LDcgQEAKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9BdG9taWNz
Lmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBpbGVyLmg+CisjaW5jbHVkZSA8d3RmL0ZvcmJpZEhlYXBB
bGxvY2F0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3Rm
L1RocmVhZFNhbml0aXplclN1cHBvcnQuaD4KIApAQCAtNTEsNyArNTIsMTAgQEAgcHJvdGVjdGVk
OgogICAgIH0KIH07CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBMb2NrZXIgOiBwdWJs
aWMgQWJzdHJhY3RMb2NrZXIgewordGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgRHJvcExvY2tT
Y29wZTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2NsYXNzIExvY2tlciA6IHB1YmxpYyBBYnN0
cmFjdExvY2tlciB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgTG9ja2VyKFQmIGxvY2thYmxlKSA6
IG1fbG9ja2FibGUoJmxvY2thYmxlKSB7IGxvY2soKTsgfQogICAgIGV4cGxpY2l0IExvY2tlcihU
KiBsb2NrYWJsZSkgOiBtX2xvY2thYmxlKGxvY2thYmxlKSB7IGxvY2soKTsgfQpAQCAtNjMsMTUg
KzY3LDExIEBAIHB1YmxpYzoKICAgICAvLyBiZSBhY2Nlc3NlZCBjb25jdXJyZW50bHkuCiAgICAg
TG9ja2VyKE5vTG9ja2luZ05lY2Vzc2FyeVRhZykgOiBtX2xvY2thYmxlKG51bGxwdHIpIHsgfQog
ICAgIAotICAgIExvY2tlcihpbnQpID0gZGVsZXRlOworICAgIExvY2tlcihzdGQ6OnVuZGVybHlp
bmdfdHlwZV90PE5vTG9ja2luZ05lY2Vzc2FyeVRhZz4pID0gZGVsZXRlOwogCiAgICAgfkxvY2tl
cigpCiAgICAgewotICAgICAgICBjb21waWxlckZlbmNlKCk7Ci0gICAgICAgIGlmIChtX2xvY2th
YmxlKSB7Ci0gICAgICAgICAgICBUU0FOX0FOTk9UQVRFX0hBUFBFTlNfQkVGT1JFKG1fbG9ja2Fi
bGUpOwotICAgICAgICAgICAgbV9sb2NrYWJsZS0+dW5sb2NrKCk7Ci0gICAgICAgIH0KKyAgICAg
ICAgdW5sb2NrKCk7CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBMb2NrZXIgdHJ5TG9jayhUJiBs
b2NrYWJsZSkKQEAgLTg4LDggKzg4LDcgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgdW5sb2Nr
RWFybHkoKQogICAgIHsKLSAgICAgICAgVFNBTl9BTk5PVEFURV9IQVBQRU5TX0JFRk9SRShtX2xv
Y2thYmxlKTsKLSAgICAgICAgbV9sb2NrYWJsZS0+dW5sb2NrKCk7CisgICAgICAgIHVubG9jaygp
OwogICAgICAgICBtX2xvY2thYmxlID0gbnVsbHB0cjsKICAgICB9CiAgICAgCkBAIC05OCwyMSAr
OTcsMzEgQEAgcHVibGljOgogICAgIExvY2tlcihMb2NrZXImJiBvdGhlcikKICAgICAgICAgOiBt
X2xvY2thYmxlKG90aGVyLm1fbG9ja2FibGUpCiAgICAgeworICAgICAgICBBU1NFUlQoJm90aGVy
ICE9IHRoaXMpOwogICAgICAgICBvdGhlci5tX2xvY2thYmxlID0gbnVsbHB0cjsKICAgICB9CiAg
ICAgCiAgICAgTG9ja2VyJiBvcGVyYXRvcj0oTG9ja2VyJiYgb3RoZXIpCiAgICAgewotICAgICAg
ICBpZiAobV9sb2NrYWJsZSkgewotICAgICAgICAgICAgVFNBTl9BTk5PVEFURV9IQVBQRU5TX0JF
Rk9SRShtX2xvY2thYmxlKTsKLSAgICAgICAgICAgIG1fbG9ja2FibGUtPnVubG9jaygpOwotICAg
ICAgICB9CisgICAgICAgIEFTU0VSVCgmb3RoZXIgIT0gdGhpcyk7CiAgICAgICAgIG1fbG9ja2Fi
bGUgPSBvdGhlci5tX2xvY2thYmxlOwogICAgICAgICBvdGhlci5tX2xvY2thYmxlID0gbnVsbHB0
cjsKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KICAgICAKIHByaXZhdGU6CisgICAgdGVt
cGxhdGU8dHlwZW5hbWU+CisgICAgZnJpZW5kIGNsYXNzIERyb3BMb2NrU2NvcGU7CisKKyAgICB2
b2lkIHVubG9jaygpCisgICAgeworICAgICAgICBjb21waWxlckZlbmNlKCk7CisgICAgICAgIGlm
IChtX2xvY2thYmxlKSB7CisgICAgICAgICAgICBUU0FOX0FOTk9UQVRFX0hBUFBFTlNfQkVGT1JF
KG1fbG9ja2FibGUpOworICAgICAgICAgICAgbV9sb2NrYWJsZS0+dW5sb2NrKCk7CisgICAgICAg
IH0KKyAgICB9CisKICAgICB2b2lkIGxvY2soKQogICAgIHsKICAgICAgICAgaWYgKG1fbG9ja2Fi
bGUpIHsKQEAgLTE1MSw2ICsxNjAsMjUgQEAgTG9ja2VyPExvY2tUeXBlPiB0cnlIb2xkTG9jayhM
b2NrVHlwZSYgbG9jaykKICAgICByZXR1cm4gTG9ja2VyPExvY2tUeXBlPjo6dHJ5TG9jayhsb2Nr
KTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgTG9ja1R5cGU+CitjbGFzcyBEcm9wTG9ja1Njb3Bl
IDogcHJpdmF0ZSBBYnN0cmFjdExvY2tlciB7CisgICAgV1RGX0ZPUkJJRF9IRUFQX0FMTE9DQVRJ
T04oRHJvcExvY2tTY29wZSk7CitwdWJsaWM6CisgICAgRHJvcExvY2tTY29wZShMb2NrZXI8TG9j
a1R5cGU+JiBsb2NrKQorICAgICAgICA6IG1fbG9jayhsb2NrKQorICAgIHsKKyAgICAgICAgbV9s
b2NrLnVubG9jaygpOworICAgIH0KKworICAgIH5Ecm9wTG9ja1Njb3BlKCkKKyAgICB7CisgICAg
ICAgIG1fbG9jay5sb2NrKCk7CisgICAgfQorCitwcml2YXRlOgorICAgIExvY2tlcjxMb2NrVHlw
ZT4mIG1fbG9jazsKK307CisKIH0KIAogdXNpbmcgV1RGOjpBYnN0cmFjdExvY2tlcjsKQEAgLTE1
OSwzICsxODcsNCBAQCB1c2luZyBXVEY6Ok5vTG9ja2luZ05lY2Vzc2FyeVRhZzsKIHVzaW5nIFdU
Rjo6Tm9Mb2NraW5nTmVjZXNzYXJ5OwogdXNpbmcgV1RGOjpob2xkTG9jazsKIHVzaW5nIFdURjo6
aG9sZExvY2tJZjsKK3VzaW5nIFdURjo6RHJvcExvY2tTY29wZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAppbmRleCA3NjJkNTM4MWY2ZDQwYjU0YTAw
NTNkMjNlNzFmNTEzOWY3ZTUyYWJiLi5kMjFmNmE5ZTljOGNlNWFkMjA3ODU3MDA0OGRhNWIwMTdj
M2I1ODlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
Y3BwCkBAIC01OSw2ICs1OSw3IEBACiAjaW5jbHVkZSAiV29ya2xldEdsb2JhbFNjb3BlLmgiCiAj
aW5jbHVkZSAiV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9DYXRjaFNjb3BlLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRGVmZXJyZWRXb3Jr
VGltZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9FeGNlcHRpb24uaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU1Byb21pc2UuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9T
Y3JpcHRDYWxsU3RhY2suaD4KQEAgLTI2NSw2ICsyNjYsOCBAQCB2b2lkIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OnN1c3BlbmRBY3RpdmVET01PYmplY3RzKFJlYXNvbkZvclN1c3BlbnNpb24gd2h5
KQogICAgICAgICByZXR1cm4gU2hvdWxkQ29udGludWU6OlllczsKICAgICB9KTsKIAorICAgIHZt
KCkuZGVmZXJyZWRXb3JrVGltZXItPnN1c3BlbmRUYXNrc0Zyb21HbG9iYWxPYmplY3QoZXhlY1N0
YXRlKCkpOworCiAgICAgbV9yZWFzb25Gb3JTdXNwZW5kaW5nQWN0aXZlRE9NT2JqZWN0cyA9IHdo
eTsKIH0KIApAQCAtMjgwLDYgKzI4Myw4IEBAIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
cmVzdW1lQWN0aXZlRE9NT2JqZWN0cyhSZWFzb25Gb3JTdXNwZW5zaW9uIHdoeSkKICAgICAgICAg
cmV0dXJuIFNob3VsZENvbnRpbnVlOjpZZXM7CiAgICAgfSk7CiAKKyAgICB2bSgpLmRlZmVycmVk
V29ya1RpbWVyLT5yZXN1bWVUYXNrc0Zyb21HbG9iYWxPYmplY3QoZXhlY1N0YXRlKCkpOworCiAg
ICAgbV9hY3RpdmVET01PYmplY3RzQXJlU3VzcGVuZGVkID0gZmFsc2U7CiAKICAgICAvLyBJbiBj
YXNlIHRoZXJlIHdlcmUgcGVuZGluZyBtZXNzYWdlcyBhdCB0aGUgdGltZSB0aGUgc2NyaXB0IGV4
ZWN1dGlvbiBjb250ZXh0IGVudGVyZWQgdGhlIEJhY2tGb3J3YXJkQ2FjaGUsCkBAIC0yOTksNiAr
MzA0LDggQEAgdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpzdG9wQWN0aXZlRE9NT2JqZWN0
cygpCiAgICAgICAgIGFjdGl2ZURPTU9iamVjdC5zdG9wKCk7CiAgICAgICAgIHJldHVybiBTaG91
bGRDb250aW51ZTo6WWVzOwogICAgIH0pOworCisgICAgdm0oKS5kZWZlcnJlZFdvcmtUaW1lci0+
Y2FuY2VsVGFza3NGcm9tR2xvYmFsT2JqZWN0KGV4ZWNTdGF0ZSgpKTsKIH0KIAogdm9pZCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpzdXNwZW5kQWN0aXZlRE9NT2JqZWN0SWZOZWVkZWQoQWN0aXZl
RE9NT2JqZWN0JiBhY3RpdmVET01PYmplY3QpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410549</attachid>
            <date>2020-10-05 13:38:14 -0700</date>
            <delta_ts>2020-10-08 13:07:23 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-214508-20201005133813.patch</filename>
            <type>text/plain</type>
            <size>26463</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3NzcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
NmU1ZWEyN2M4YmEwM2QwM2Y3ODA5MTAxMzVkZmFjYzI2YjFkMGVkLi4zMzEyNWIyOThmN2YzYTYx
MjE2YTUxZThmZjg1ZjBkNGI0MzNmNTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOSBAQAorMjAyMC0xMC0wMSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBGaW5hbGl6ZXJzIHNob3VsZG4ndCBydW4gaWYgZXZlbnRzIGNhbid0
IGZpcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
NDUwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
cnVudGltZS9EZWZlcnJlZFdvcmtUaW1lci5jcHA6CisgICAgICAgIChKU0M6OkRlZmVycmVkV29y
a1RpbWVyOjpkb1dvcmspOgorICAgICAgICAoSlNDOjpEZWZlcnJlZFdvcmtUaW1lcjo6YWRkUGVu
ZGluZ1dvcmspOgorICAgICAgICAoSlNDOjpEZWZlcnJlZFdvcmtUaW1lcjo6YWRkRGVwZW5kYW5j
aWVzVG9QZW5kaW5nV29yayk6CisgICAgICAgIChKU0M6OkRlZmVycmVkV29ya1RpbWVyOjpzdXNw
ZW5kVGFza3NGcm9tR2xvYmFsT2JqZWN0KToKKyAgICAgICAgKEpTQzo6RGVmZXJyZWRXb3JrVGlt
ZXI6OnJlc3VtZVRhc2tzRnJvbUdsb2JhbE9iamVjdCk6CisgICAgICAgIChKU0M6OkRlZmVycmVk
V29ya1RpbWVyOjpjYW5jZWxUYXNrc0Zyb21HbG9iYWxPYmplY3QpOgorICAgICAgICAqIHJ1bnRp
bWUvRGVmZXJyZWRXb3JrVGltZXIuaDoKKwogMjAyMC0wOS0yNiAgRGFyaW4gQWRsZXIgIDxkYXJp
bkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVmYWN0b3IgdGVzdCBydW5uZXIgY29kZSB0byBjdXQg
ZG93biBvbiBjb3B5L3Bhc3RlIGNvZGUgYW5kIGxvbmctd2luZGVkIHJlcGV0aXRpdmUgaWRpb21z
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
CmluZGV4IGQ5NWE2ZDE4NTA1YzIwYzM2MzA0ODUwOWI5NWEwYjU2ZTQzYmZmYzUuLmQzYmNiZjMx
YTQ0OWZhNWUzYTMwZmZmMTQxMjQxNjVmNjQ3ODI1MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIw
MjAtMTAtMDEgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CisKKyAgICAg
ICAgRmluYWxpemVycyBzaG91bGRuJ3QgcnVuIGlmIGV2ZW50cyBjYW4ndCBmaXJlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQ1MDgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9Mb2NrZXIuaDoK
KyAgICAgICAgKFdURjo6TG9ja2VyOjp+TG9ja2VyKToKKyAgICAgICAgKFdURjo6TG9ja2VyOjp1
bmxvY2tFYXJseSk6CisgICAgICAgIChXVEY6OkxvY2tlcjo6TG9ja2VyKToKKyAgICAgICAgKFdU
Rjo6TG9ja2VyOjpvcGVyYXRvcj0pOgorICAgICAgICAoV1RGOjpMb2NrZXI6OnVubG9jayk6Cisg
ICAgICAgIChXVEY6OkRyb3BMb2NrU2NvcGU6OkRyb3BMb2NrU2NvcGUpOgorICAgICAgICAoV1RG
OjpEcm9wTG9ja1Njb3BlOjp+RHJvcExvY2tTY29wZSk6CisKIDIwMjAtMDktMjkgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgcGxp
c3QtYmFzZWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyBzdG9yYWdlLCB3aGljaCBoYXMgYmVlbiBy
ZXBsYWNlZCBieSBkYXRhYmFzZS1iYXNlZCBzdG9yYWdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGEwMzg4NWJm
YTI0ODUwOGU3YzlhOTg3M2NlY2M2MjhmM2JlMjIxMy4uNTMyMTZlZDE0Yjg5YzE5YjM5Y2MxZGYx
YWU1ZTM2ZTZkZDE0ZDFjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIwLTEwLTAx
ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgorCisgICAgICAgIEZpbmFs
aXplcnMgc2hvdWxkbid0IHJ1biBpZiBldmVudHMgY2FuJ3QgZmlyZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0NTA4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisK
KyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpzdXNwZW5kQWN0aXZlRE9NT2JqZWN0cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpyZXN1bWVBY3RpdmVET01P
YmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnN0b3BB
Y3RpdmVET01PYmplY3RzKToKKwogMjAyMC0wOS0yOSAgUGVuZyBMaXUgIDxwZW5nLmxpdTZAYXBw
bGUuY29tPgogCiAgICAgICAgIFtNZWRpYSBpbiBHUFUgUHJvY2Vzc10gVXNlIFZpZGVvTGF5ZXJN
YW5hZ2VyIHRvIG1hbmFnZSBsYXllcnMgb2YgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3QuY3BwCmluZGV4IDli
NGYzMzhmZDkwMzEyMjY5NjY3OWE4NzhiMWMyOGJmNmUwNDkzYzEuLmRkZTEwOTJiMWI5ODFiZTgz
OTI2YjVmNTc0NjNjNTM1YTM1ZWMwZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNBUElHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNBUElHbG9iYWxPYmplY3QuY3BwCkBAIC00NSw2ICs0NSw3IEBAIGNvbnN0IEdsb2JhbE9i
amVjdE1ldGhvZFRhYmxlIEpTQVBJR2xvYmFsT2JqZWN0OjpzX2dsb2JhbE9iamVjdE1ldGhvZFRh
YmxlID0gewogICAgIG51bGxwdHIsIC8vIG1vZHVsZUxvYWRlckV2YWx1YXRlCiAgICAgbnVsbHB0
ciwgLy8gcHJvbWlzZVJlamVjdGlvblRyYWNrZXIKICAgICAmcmVwb3J0VW5jYXVnaHRFeGNlcHRp
b25BdEV2ZW50TG9vcCwKKyAgICAmY3VycmVudFNjcmlwdEV4ZWN1dGlvbk93bmVyLAogICAgIG51
bGxwdHIsIC8vIGRlZmF1bHRMYW5ndWFnZQogICAgIG51bGxwdHIsIC8vIGNvbXBpbGVTdHJlYW1p
bmcKICAgICBudWxscHRyLCAvLyBpbnN0YW50aWF0ZVN0cmVhbWluZwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5tbSBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3QubW0KaW5kZXggZGRlMmJkMzIzYmM3YjY1
YjRmMDkwMjNiODdhZWEyN2IwNDIzNjM5ZS4uNzUyZGU4NWE5YmY5ODM5YmRkZGY1NzY2OGJlZTg5
MGRmZjY0ZDEzNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUds
b2JhbE9iamVjdC5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFs
T2JqZWN0Lm1tCkBAIC02NSw2ICs2NSw3IEBAIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxl
IEpTQVBJR2xvYmFsT2JqZWN0OjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0gewogICAgICZt
b2R1bGVMb2FkZXJFdmFsdWF0ZSwgLy8gbW9kdWxlTG9hZGVyRXZhbHVhdGUKICAgICBudWxscHRy
LCAvLyBwcm9taXNlUmVqZWN0aW9uVHJhY2tlcgogICAgICZyZXBvcnRVbmNhdWdodEV4Y2VwdGlv
bkF0RXZlbnRMb29wLAorICAgICZjdXJyZW50U2NyaXB0RXhlY3V0aW9uT3duZXIsCiAgICAgbnVs
bHB0ciwgLy8gZGVmYXVsdExhbmd1YWdlCiAgICAgbnVsbHB0ciwgLy8gY29tcGlsZVN0cmVhbWlu
ZwogICAgIG51bGxwdHIsIC8vIGluc3RhbnRpYXRlU3RyZWFtaW5nCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXAuY3BwCmluZGV4IDBjY2FiNDI4YjMzZTZmNWU3OTUxZmNkZjBjNzc0OTdlOGUyMjk1
MzMuLmM0ZTJhNjY4YzJjYWE2ZmFiYjRlMzA2NzAwYTM5YzkxMjhlZWE5M2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXAuY3BwCkBAIC01OTQsNiArNTk0LDggQEAgdm9pZCBIZWFwOjpmaW5h
bGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzKENlbGxTZXQmIGNlbGxTZXQpCiAKIHZv
aWQgSGVhcDo6ZmluYWxpemVVbmNvbmRpdGlvbmFsRmluYWxpemVycygpCiB7CisgICAgdm0oKS5k
ZWZlcnJlZFdvcmtUaW1lci0+ZmluYWxpemVEZWFkU2NyaXB0RXhlY3V0aW9uT3duZXJzKHZtKCkp
OworCiAgICAgdm0oKS5idWlsdGluRXhlY3V0YWJsZXMoKS0+ZmluYWxpemVVbmNvbmRpdGlvbmFs
bHkoKTsKICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEZ1bmN0aW9u
RXhlY3V0YWJsZT4odm0oKS5mdW5jdGlvbkV4ZWN1dGFibGVTcGFjZS5zcGFjZSk7CiAgICAgZmlu
YWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxTeW1ib2xUYWJsZT4odm0oKS5zeW1i
b2xUYWJsZVNwYWNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggZDU4OTZiOTUyMjg1Yjc1ZWE3
YTJiZWExZTdkYzE3ZjE4MGQ0MTAzMi4uOGViMDM3YzVlNThmMzk5NTlhM2MyZTNhMGVhMmY3Mjc2
Mjc4OTQzNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTU2NCw2ICs1NjQsMTEgQEAgcHJpdmF0
ZToKICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJkcmFpbk1pY3JvdGFza3MiLCBmdW5jdGlvbkRy
YWluTWljcm90YXNrcywgMCk7CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAic2V0VGltZW91dCIs
IGZ1bmN0aW9uU2V0VGltZW91dCwgMik7CiAKKyAgICAgICAgLy8gVGhlc2Ugc2ltdWxhdGUgdGhl
IERPTSBuYXZpZ2F0aW5nIC8gZW50ZXJpbmcgdGhlIGJhY2sgZm9yd2FyZCBjYWNoZS4KKyAgICAg
ICAgLy8gYWRkRnVuY3Rpb24odm0sICJzdXNwZW5kRXZlbnRzT25Pd25lclJlYWxtIiwgZnVuY3Rp
b25TdXNwZW5kT3duZXJSZWFsbSwgMSk7CisgICAgICAgIC8vIGFkZEZ1bmN0aW9uKHZtLCAicmVz
dW1lRXZlbnRzT25Pd25lclJlYWxtIiwgZnVuY3Rpb25TdXNwZW5kT3duZXJSZWFsbSwgMSk7Cisg
ICAgICAgIC8vIGFkZEZ1bmN0aW9uKHZtLCAiY2FuY2VsRXZlbnRzT25Pd25lclJlYWxtIiwgZnVu
Y3Rpb25TdXNwZW5kT3duZXJSZWFsbSwgMSk7CisKICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJy
ZWxlYXNlV2Vha1JlZnMiLCBmdW5jdGlvblJlbGVhc2VXZWFrUmVmcywgMCk7CiAgICAgICAgIGFk
ZEZ1bmN0aW9uKHZtLCAiZmluYWxpemF0aW9uUmVnaXN0cnlMaXZlQ291bnQiLCBmdW5jdGlvbkZp
bmFsaXphdGlvblJlZ2lzdHJ5TGl2ZUNvdW50LCAwKTsKICAgICAgICAgYWRkRnVuY3Rpb24odm0s
ICJmaW5hbGl6YXRpb25SZWdpc3RyeURlYWRDb3VudCIsIGZ1bmN0aW9uRmluYWxpemF0aW9uUmVn
aXN0cnlEZWFkQ291bnQsIDApOwpAQCAtNzE1LDYgKzcyMCw3IEBAIGNvbnN0IEdsb2JhbE9iamVj
dE1ldGhvZFRhYmxlIEdsb2JhbE9iamVjdDo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSA9IHsK
ICAgICBudWxscHRyLCAvLyBtb2R1bGVMb2FkZXJFdmFsdWF0ZQogICAgIG51bGxwdHIsIC8vIHBy
b21pc2VSZWplY3Rpb25UcmFja2VyCiAgICAgJnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVu
dExvb3AsCisgICAgJmN1cnJlbnRTY3JpcHRFeGVjdXRpb25Pd25lciwKICAgICBudWxscHRyLCAv
LyBkZWZhdWx0TGFuZ3VhZ2UKICAgICBudWxscHRyLCAvLyBjb21waWxlU3RyZWFtaW5nCiAgICAg
bnVsbHB0ciwgLy8gaW5zdGFudGluYXRlU3RyZWFtaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9EZWZlcnJlZFdvcmtUaW1lci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9EZWZlcnJlZFdvcmtUaW1lci5jcHAKaW5kZXggY2VkNzdiYWU0NGQ3
MzJlZGUzN2Y0NDAzNzdkMDczNWE3ZmVhMmRjOC4uNjZjZWFmZmUxY2I2YTUzYmI1NjZjZjhlMjFj
YzQ5YjlkZGZlOWQzYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RGVmZXJyZWRXb3JrVGltZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0RlZmVycmVkV29ya1RpbWVyLmNwcApAQCAtNDUsMjIgKzQ1LDM1IEBAIERlZmVycmVkV29ya1Rp
bWVyOjpEZWZlcnJlZFdvcmtUaW1lcihWTSYgdm0pCiB2b2lkIERlZmVycmVkV29ya1RpbWVyOjpk
b1dvcmsoVk0mIHZtKQogewogICAgIEFTU0VSVCh2bS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJ
TG9jaygpKTsKLSAgICBtX3Rhc2tMb2NrLmxvY2soKTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRM
b2NrKG1fdGFza0xvY2spOwogICAgIGNhbmNlbFRpbWVyKCk7Ci0gICAgaWYgKCFtX3J1blRhc2tz
KSB7Ci0gICAgICAgIG1fdGFza0xvY2sudW5sb2NrKCk7CisgICAgaWYgKCFtX3J1blRhc2tzKQog
ICAgICAgICByZXR1cm47Ci0gICAgfQorCisgICAgVmVjdG9yPHN0ZDo6dHVwbGU8VGlja2V0LCBU
YXNrPj4gc3VzcGVuZGVkVGFza3M7CiAKICAgICB3aGlsZSAoIW1fdGFza3MuaXNFbXB0eSgpKSB7
CiAgICAgICAgIGF1dG8gW3RpY2tldCwgdGFza10gPSBtX3Rhc2tzLnRha2VGaXJzdCgpOwogICAg
ICAgICBkYXRhTG9nTG5JZihEZWZlcnJlZFdvcmtUaW1lckludGVybmFsOjp2ZXJib3NlLCAiRG9p
bmcgd29yayBvbjogIiwgUmF3UG9pbnRlcih0aWNrZXQpKTsKIAotICAgICAgICAvLyBXZSBtYXkg
aGF2ZSBhbHJlYWR5IGNhbmNlbGVkIHRoZXNlIHByb21pc2VzLgotICAgICAgICBpZiAobV9wZW5k
aW5nVGlja2V0cy5jb250YWlucyh0aWNrZXQpKSB7Ci0gICAgICAgICAgICAvLyBBbGxvdyB0YXNr
cyB3ZSBydW4gbm93IHRvIHNjaGVkdWxlIHdvcmsuCi0gICAgICAgICAgICBtX2N1cnJlbnRseVJ1
bm5pbmdUYXNrID0gdHJ1ZTsKLSAgICAgICAgICAgIG1fdGFza0xvY2sudW5sb2NrKCk7IAorICAg
ICAgICBhdXRvIHBlbmRpbmdUaWNrZXQgPSBtX3BlbmRpbmdUaWNrZXRzLmZpbmQodGlja2V0KTsK
KyAgICAgICAgLy8gV2UgbWF5IGhhdmUgYWxyZWFkeSBjYW5jZWxlZCB0aGlzIHRhc2suCisgICAg
ICAgIGlmIChwZW5kaW5nVGlja2V0ID09IG1fcGVuZGluZ1RpY2tldHMuZW5kKCkpCisgICAgICAg
ICAgICBjb250aW51ZTsKKworICAgICAgICBhdXRvIHN0YXR1cyA9IG1fc3VzcGVuZGVkT3duZXJz
LmZpbmQocGVuZGluZ1RpY2tldC0+dmFsdWUuc2NyaXB0RXhlY3V0aW9uT3duZXIuZ2V0KCkpOwor
ICAgICAgICBpZiAoc3RhdHVzICE9IG1fc3VzcGVuZGVkT3duZXJzLmVuZCgpKSB7CisgICAgICAg
ICAgICBpZiAoc3RhdHVzLT52YWx1ZSA9PSBTdGF0dXM6OlN1c3BlbmRlZCkKKyAgICAgICAgICAg
ICAgICBzdXNwZW5kZWRUYXNrcy5hcHBlbmQoc3RkOjptYWtlX3R1cGxlKHRpY2tldCwgV1RGTW92
ZSh0YXNrKSkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG1fcGVuZGluZ1Rp
Y2tldHMucmVtb3ZlKHBlbmRpbmdUaWNrZXQpOworICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgIH0KKworICAgICAgICAvLyBBbGxvdyB0YXNrcyB3ZSBhcmUgYWJvdXQgdG8gcnVuIHRvIHNj
aGVkdWxlIHdvcmsuCisgICAgICAgIG1fY3VycmVudGx5UnVubmluZ1Rhc2sgPSB0cnVlOworICAg
ICAgICB7CisgICAgICAgICAgICBhdXRvIGRyb3BwZXIgPSBEcm9wTG9ja1Njb3BlKGxvY2tlcik7
CiAKICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIHN0YXJ0IG9mIGEgcnVubG9vcCB0dXJuLCB3
ZSBjYW4gcmVsZWFzZSBhbnkgd2Vha3JlZnMgaGVyZS4KICAgICAgICAgICAgIHZtLmZpbmFsaXpl
U3luY2hyb25vdXNKU0V4ZWN1dGlvbigpOwpAQCAtNzUsMTYgKzg4LDE3IEBAIHZvaWQgRGVmZXJy
ZWRXb3JrVGltZXI6OmRvV29yayhWTSYgdm0pCiAKICAgICAgICAgICAgIHZtLmRyYWluTWljcm90
YXNrcygpOwogICAgICAgICAgICAgQVNTRVJUKCF2bS5leGNlcHRpb25Gb3JJbnNwZWN0aW9uKCkp
OwotCi0gICAgICAgICAgICBtX3Rhc2tMb2NrLmxvY2soKTsKLSAgICAgICAgICAgIG1fY3VycmVu
dGx5UnVubmluZ1Rhc2sgPSBmYWxzZTsKICAgICAgICAgfQorICAgICAgICBtX2N1cnJlbnRseVJ1
bm5pbmdUYXNrID0gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKG1fcGVuZGluZ1RpY2tldHMuaXNF
bXB0eSgpICYmIG1fc2hvdWxkU3RvcFJ1bkxvb3BXaGVuQWxsVGlja2V0c0ZpbmlzaCkKLSAgICAg
ICAgUnVuTG9vcDo6Y3VycmVudCgpLnN0b3AoKTsKKyAgICB3aGlsZSAoIXN1c3BlbmRlZFRhc2tz
LmlzRW1wdHkoKSkKKyAgICAgICAgbV90YXNrcy5wcmVwZW5kKHN1c3BlbmRlZFRhc2tzLnRha2VM
YXN0KCkpOwogCi0gICAgbV90YXNrTG9jay51bmxvY2soKTsKKyAgICBpZiAobV9wZW5kaW5nVGlj
a2V0cy5pc0VtcHR5KCkgJiYgbV9zaG91bGRTdG9wUnVuTG9vcFdoZW5BbGxUaWNrZXRzRmluaXNo
KSB7CisgICAgICAgIEFTU0VSVChtX3Rhc2tzLmlzRW1wdHkoKSk7CisgICAgICAgIFJ1bkxvb3A6
OmN1cnJlbnQoKS5zdG9wKCk7CisgICAgfQogfQogCiB2b2lkIERlZmVycmVkV29ya1RpbWVyOjpy
dW5SdW5Mb29wKCkKQEAgLTEwMiwxNSArMTE2LDE1IEBAIHZvaWQgRGVmZXJyZWRXb3JrVGltZXI6
OmFkZFBlbmRpbmdXb3JrKFZNJiB2bSwgVGlja2V0IHRpY2tldCwgVmVjdG9yPFN0cm9uZzxKU0Nl
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRlcGVuZGVuY2llcy5zaXplKCk7ICsraSkK
ICAgICAgICAgQVNTRVJUKGRlcGVuZGVuY2llc1tpXS5nZXQoKSAhPSB0aWNrZXQpOwogCi0gICAg
YXV0byByZXN1bHQgPSBtX3BlbmRpbmdUaWNrZXRzLmFkZCh0aWNrZXQsIFZlY3RvcjxTdHJvbmc8
SlNDZWxsPj4oKSk7Ci0gICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KSB7Ci0gICAgICAgIGRhdGFM
b2dMbklmKERlZmVycmVkV29ya1RpbWVySW50ZXJuYWw6OnZlcmJvc2UsICJBZGRpbmcgbmV3IHBl
bmRpbmcgdGlja2V0OiAiLCBSYXdQb2ludGVyKHRpY2tldCkpOworICAgIGF1dG8gZ2xvYmFsT2Jq
ZWN0ID0gdGlja2V0LT5nbG9iYWxPYmplY3QoKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fcGVuZGlu
Z1RpY2tldHMuZW5zdXJlKHRpY2tldCwgWyZdIHsKKyAgICAgICAgSlNPYmplY3QqIHNjcmlwdEV4
ZWN1dGlvbk93bmVyID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5j
dXJyZW50U2NyaXB0RXhlY3V0aW9uT3duZXIoZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgZGVwZW5k
ZW5jaWVzLmFwcGVuZChTdHJvbmc8SlNDZWxsPih2bSwgdGlja2V0KSk7Ci0gICAgICAgIHJlc3Vs
dC5pdGVyYXRvci0+dmFsdWUgPSBXVEZNb3ZlKGRlcGVuZGVuY2llcyk7Ci0gICAgfSBlbHNlIHsK
LSAgICAgICAgZGF0YUxvZ0xuSWYoRGVmZXJyZWRXb3JrVGltZXJJbnRlcm5hbDo6dmVyYm9zZSwg
IkFkZGluZyBuZXcgZGVwZW5kZW5jaWVzIGZvciB0aWNrZXQ6ICIsIFJhd1BvaW50ZXIodGlja2V0
KSk7Ci0gICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuYXBwZW5kVmVjdG9yKGRlcGVuZGVu
Y2llcyk7Ci0gICAgfQorICAgICAgICByZXR1cm4gVGlja2V0RGF0YSB7IFdURk1vdmUoZGVwZW5k
ZW5jaWVzKSwgU3Ryb25nPEpTT2JqZWN0Pih2bSwgc2NyaXB0RXhlY3V0aW9uT3duZXIpIH07Cisg
ICAgfSk7CisgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgcmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZS5kZXBlbmRlbmNpZXMuYXBwZW5kVmVjdG9yKFdURk1vdmUoZGVwZW5kZW5jaWVz
KSk7CisgICAgZGF0YUxvZ0xuSWYoRGVmZXJyZWRXb3JrVGltZXJJbnRlcm5hbDo6dmVyYm9zZSwg
IkFkZGluZyBuZXcgcGVuZGluZyB0aWNrZXQ6ICIsIFJhd1BvaW50ZXIodGlja2V0KSk7CiB9CiAK
IGJvb2wgRGVmZXJyZWRXb3JrVGltZXI6Omhhc1BlbmRpbmdXb3JrKFRpY2tldCB0aWNrZXQpCkBA
IC0xMjUsNyArMTM5LDE3IEBAIGJvb2wgRGVmZXJyZWRXb3JrVGltZXI6Omhhc0RlcGVuZGFuY3lJ
blBlbmRpbmdXb3JrKFRpY2tldCB0aWNrZXQsIEpTQ2VsbCogZGVwZW5kCiAgICAgQVNTRVJUKG1f
cGVuZGluZ1RpY2tldHMuY29udGFpbnModGlja2V0KSk7CiAKICAgICBhdXRvIHJlc3VsdCA9IG1f
cGVuZGluZ1RpY2tldHMuZ2V0KHRpY2tldCk7Ci0gICAgcmV0dXJuIHJlc3VsdC5jb250YWlucyhk
ZXBlbmRlbmN5KTsKKyAgICByZXR1cm4gcmVzdWx0LmRlcGVuZGVuY2llcy5jb250YWlucyhkZXBl
bmRlbmN5KTsKK30KKwordm9pZCBEZWZlcnJlZFdvcmtUaW1lcjo6YWRkRGVwZW5kYW5jaWVzVG9Q
ZW5kaW5nV29yayhUaWNrZXQgdGlja2V0LCBWZWN0b3I8U3Ryb25nPEpTQ2VsbD4+JiYgZGVwZW5k
ZW5jaWVzKQoreworICAgIEFTU0VSVCh0aWNrZXQtPnZtKCkuY3VycmVudFRocmVhZElzSG9sZGlu
Z0FQSUxvY2soKSB8fCAoVGhyZWFkOjptYXlCZUdDVGhyZWFkKCkgJiYgdGlja2V0LT52bSgpLmhl
YXAud29ybGRJc1N0b3BwZWQoKSkpOworICAgIEFTU0VSVChtX3BlbmRpbmdUaWNrZXRzLmNvbnRh
aW5zKHRpY2tldCkpOworCisgICAgYXV0byBpdGVyID0gbV9wZW5kaW5nVGlja2V0cy5maW5kKHRp
Y2tldCk7CisgICAgaXRlci0+dmFsdWUuZGVwZW5kZW5jaWVzLmFwcGVuZFZlY3RvcihkZXBlbmRl
bmNpZXMpOworICAgIGRhdGFMb2dMbklmKERlZmVycmVkV29ya1RpbWVySW50ZXJuYWw6OnZlcmJv
c2UsICJBZGRpbmcgbmV3IGRlcGVuZGVuY2llcyBmb3IgZXhpc3RpbmcgdGlja2V0OiAiLCBSYXdQ
b2ludGVyKHRpY2tldCkpOwogfQogCiBib29sIERlZmVycmVkV29ya1RpbWVyOjpjYW5jZWxQZW5k
aW5nV29yayhUaWNrZXQgdGlja2V0KQpAQCAtMTQ3LDQgKzE3MSwzOSBAQCB2b2lkIERlZmVycmVk
V29ya1RpbWVyOjpzY2hlZHVsZVdvcmtTb29uKFRpY2tldCB0aWNrZXQsIFRhc2smJiB0YXNrKQog
ICAgICAgICBzZXRUaW1lVW50aWxGaXJlKDBfcyk7CiB9CiAKK3ZvaWQgRGVmZXJyZWRXb3JrVGlt
ZXI6OnN1c3BlbmRUYXNrc1VuZGVyU2NyaXB0RXhlY3V0aW9uT3duZXIoVk0mIHZtLCBKU09iamVj
dCogb3duZXIpCit7CisgICAgSlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7CisgICAgbV9zdXNwZW5k
ZWRPd25lcnMuYWRkKG93bmVyLCBTdGF0dXM6OlN1c3BlbmRlZCk7CisgICAgZGF0YUxvZ0xuSWYo
RGVmZXJyZWRXb3JrVGltZXJJbnRlcm5hbDo6dmVyYm9zZSwgIlN1c3BlbmRpbmcgdGFza3MgZm9y
IHNjcmlwdCBleGVjdXRpb24gb3duZXI6ICIsIFJhd1BvaW50ZXIob3duZXIpKTsKK30KKwordm9p
ZCBEZWZlcnJlZFdvcmtUaW1lcjo6cmVzdW1lVGFza3NVbmRlclNjcmlwdEV4ZWN1dGlvbk93bmVy
KFZNJiB2bSwgSlNPYmplY3QqIG93bmVyKQoreworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIodm0p
OworICAgIGF1dG8gaXRlciA9IG1fc3VzcGVuZGVkT3duZXJzLmZpbmQob3duZXIpOworICAgIGlm
IChpdGVyICE9IG1fc3VzcGVuZGVkT3duZXJzLmVuZCgpIHx8IGl0ZXItPnZhbHVlID09IFN0YXR1
czo6Q2FuY2VsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc3VzcGVuZGVkT3duZXJzLnJl
bW92ZShpdGVyKTsKKyAgICBpZiAobV90YXNrcy5zaXplKCkgJiYgIWlzU2NoZWR1bGVkKCkgJiYg
IW1fY3VycmVudGx5UnVubmluZ1Rhc2spCisgICAgICAgIHNldFRpbWVVbnRpbEZpcmUoMF9zKTsK
KyAgICBkYXRhTG9nTG5JZihEZWZlcnJlZFdvcmtUaW1lckludGVybmFsOjp2ZXJib3NlLCAiUmVz
dW1pbmcgdGFza3MgZm9yIHNjcmlwdCBleGVjdXRpb24gb3duZXI6ICIsIFJhd1BvaW50ZXIob3du
ZXIpKTsKK30KK3ZvaWQgRGVmZXJyZWRXb3JrVGltZXI6OmNhbmNlbFRhc2tzVW5kZXJTY3JpcHRF
eGVjdXRpb25Pd25lcihWTSYgdm0sIEpTT2JqZWN0KiBvd25lcikKK3sKKyAgICBKU0xvY2tIb2xk
ZXIgbG9ja2VyKHZtKTsKKyAgICBtX3N1c3BlbmRlZE93bmVycy5zZXQob3duZXIsIFN0YXR1czo6
Q2FuY2VsZWQpOworICAgIGRhdGFMb2dMbklmKERlZmVycmVkV29ya1RpbWVySW50ZXJuYWw6OnZl
cmJvc2UsICJDYW5jZWxpbmcgdGFza3MgZm9yIHNjcmlwdCBleGVjdXRpb24gb3duZXI6ICIsIFJh
d1BvaW50ZXIob3duZXIpKTsKK30KKwordm9pZCBEZWZlcnJlZFdvcmtUaW1lcjo6ZmluYWxpemVE
ZWFkU2NyaXB0RXhlY3V0aW9uT3duZXJzKFZNJiB2bSkKK3sKKyAgICBBU1NFUlQodm0uY3VycmVu
dFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSB8fCBUaHJlYWQ6Om1heUJlR0NUaHJlYWQoKSk7Cisg
ICAgQVNTRVJUKHZtLmhlYXAud29ybGRJc1N0b3BwZWQoKSk7CisgICAgbV9zdXNwZW5kZWRPd25l
cnMucmVtb3ZlSWYoWyZdIChhdXRvIGl0ZXIpIHsKKyAgICAgICAgcmV0dXJuICF2bS5oZWFwLmlz
TWFya2VkKGl0ZXIua2V5KTsKKyAgICB9KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EZWZlcnJlZFdvcmtUaW1lci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVmZXJyZWRXb3JrVGltZXIuaAppbmRl
eCAyNzFhOGFiYzllYzQyODU2ZTlkZDNhMWNjM2JjNWNlODZkYjRmNjkzLi5iM2MxYjRjMWQwOWFh
ZGE4NzY4ZGY4ZWU3NDc1ZWJkOTI2ODZhYmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9EZWZlcnJlZFdvcmtUaW1lci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0RlZmVycmVkV29ya1RpbWVyLmgKQEAgLTQ5LDggKzQ5LDE0IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGFkZFBlbmRpbmdXb3JrKFZNJiwgVGlja2V0LCBWZWN0b3I8U3Ryb25nPEpT
Q2VsbD4+JiYgZGVwZW5kZW5jaWVzKTsKICAgICBib29sIGhhc1BlbmRpbmdXb3JrKFRpY2tldCk7
CiAgICAgYm9vbCBoYXNEZXBlbmRhbmN5SW5QZW5kaW5nV29yayhUaWNrZXQsIEpTQ2VsbCogZGVw
ZW5kZW5jeSk7CisgICAgdm9pZCBhZGREZXBlbmRhbmNpZXNUb1BlbmRpbmdXb3JrKFRpY2tldCwg
VmVjdG9yPFN0cm9uZzxKU0NlbGw+PiYmKTsKICAgICBib29sIGNhbmNlbFBlbmRpbmdXb3JrKFRp
Y2tldCk7CiAKKyAgICAvLyBJZiB0aGUgZ2xvYmFsIG9iamVjdCB5b3VyIHRpY2tldCBpcyBhc3Nv
Y2lhdGVkIHdpdGggZ2V0cyBjYW5jZWxlZAorICAgIC8vIHRoZSBUYXNrIHdpbGwgbm90IGJlIGNh
bGxlZCBhbmQgd2lsbCBiZSBkZWFsbG9jYXRlZC4gU28gaXQncyBpbXBvcnRhbnQKKyAgICAvLyB0
byBtYWtlIHN1cmUgeW91ciBtZW1vcnkgb3duZXJzaGlwIG1vZGVsIHdvbid0IGxlYWsgbWVtb3J5
IHdoZW4KKyAgICAvLyB0aGlzIG9jY3Vycy4gVGhlIGVhc2llc3Qgd2F5IGlzIHRvIG1ha2Ugc3Vy
ZSBldmVyeXRoaW5nIGlzIGVpdGhlciBvd25lZAorICAgIC8vIGJ5IGEgR0MnZCB2YWx1ZSBpbiBk
ZXBlbmRlbmNpZXMgb3IgYnkgdGhlIFRhc2suCiAgICAgdXNpbmcgVGFzayA9IEZ1bmN0aW9uPHZv
aWQoKT47CiAgICAgdm9pZCBzY2hlZHVsZVdvcmtTb29uKFRpY2tldCwgVGFzayYmKTsKIApAQCAt
NjMsNiArNjksMTIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEZWZl
cnJlZFdvcmtUaW1lcih2bSkpOwogICAgIH0KIAorICAgIHZvaWQgc3VzcGVuZFRhc2tzVW5kZXJT
Y3JpcHRFeGVjdXRpb25Pd25lcihWTSYsIEpTT2JqZWN0Kik7CisgICAgdm9pZCByZXN1bWVUYXNr
c1VuZGVyU2NyaXB0RXhlY3V0aW9uT3duZXIoVk0mLCBKU09iamVjdCopOworICAgIHZvaWQgY2Fu
Y2VsVGFza3NVbmRlclNjcmlwdEV4ZWN1dGlvbk93bmVyKFZNJiwgSlNPYmplY3QqKTsKKworICAg
IHZvaWQgZmluYWxpemVEZWFkU2NyaXB0RXhlY3V0aW9uT3duZXJzKFZNJik7CisKIHByaXZhdGU6
CiAgICAgRGVmZXJyZWRXb3JrVGltZXIoVk0mKTsKIApAQCAtNzEsNyArODMsMTYgQEAgcHJpdmF0
ZToKICAgICBib29sIG1fc2hvdWxkU3RvcFJ1bkxvb3BXaGVuQWxsVGlja2V0c0ZpbmlzaCB7IGZh
bHNlIH07CiAgICAgYm9vbCBtX2N1cnJlbnRseVJ1bm5pbmdUYXNrIHsgZmFsc2UgfTsKICAgICBE
ZXF1ZTxzdGQ6OnR1cGxlPFRpY2tldCwgVGFzaz4+IG1fdGFza3M7Ci0gICAgSGFzaE1hcDxUaWNr
ZXQsIFZlY3RvcjxTdHJvbmc8SlNDZWxsPj4+IG1fcGVuZGluZ1RpY2tldHM7CisgICAgc3RydWN0
IFRpY2tldERhdGEgeworICAgICAgICBWZWN0b3I8U3Ryb25nPEpTQ2VsbD4+IGRlcGVuZGVuY2ll
czsKKyAgICAgICAgU3Ryb25nPEpTT2JqZWN0PiBzY3JpcHRFeGVjdXRpb25Pd25lcjsKKyAgICB9
OworICAgIEhhc2hNYXA8VGlja2V0LCBUaWNrZXREYXRhPiBtX3BlbmRpbmdUaWNrZXRzOworICAg
IGVudW0gY2xhc3MgU3RhdHVzIHsKKyAgICAgICAgU3VzcGVuZGVkLAorICAgICAgICBDYW5jZWxl
ZCwKKyAgICB9OworICAgIEhhc2hNYXA8SlNPYmplY3QqLCBTdGF0dXM+IG1fc3VzcGVuZGVkT3du
ZXJzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggMDY5YmI4MjgxMmE2ZjRhNWMzMmZk
ZjQ1MjQyZTcxMzk4OTA0NjAwNy4uM2ZlMTIwOWQ2NzQ2MDhlM2Y0MGM3MWFhZjE1ZjYzNTU4YzRk
NmI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcApAQCAtNDEyLDYgKzQxMiw3IEBAIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxl
IEpTR2xvYmFsT2JqZWN0OjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0gewogICAgIG51bGxw
dHIsIC8vIG1vZHVsZUxvYWRlckV2YWx1YXRlCiAgICAgbnVsbHB0ciwgLy8gcHJvbWlzZVJlamVj
dGlvblRyYWNrZXIKICAgICAmcmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcCwKKyAg
ICAmY3VycmVudFNjcmlwdEV4ZWN1dGlvbk93bmVyLAogICAgIG51bGxwdHIsIC8vIGRlZmF1bHRM
YW5ndWFnZQogICAgIG51bGxwdHIsIC8vIGNvbXBpbGVTdHJlYW1pbmcKICAgICBudWxscHRyLCAv
LyBpbnN0YW50aWF0ZVN0cmVhbWluZwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggOGU5YjE2Njk5ZjVmZjMyZDgyOTlhYjc5MDUxMmIxZTY3
NmE2NzgzYi4uNWEwNWQyNDA1MzFiZjMwMjg4M2E0YjQwYTgwZWQxZmZkMzY0YTYwNCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC0yMzIs
NiArMjMyLDkgQEAgc3RydWN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIHsKICAgICB0eXBlZGVm
IHZvaWQgKCpSZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wUHRyKShKU0dsb2JhbE9i
amVjdCosIEV4Y2VwdGlvbiopOwogICAgIFJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExv
b3BQdHIgcmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcDsKIAorICAgIHR5cGVkZWYg
SlNPYmplY3QqICgqQ3VycmVudFNjcmlwdEV4ZWN1dGlvbk93bmVyUHRyKShKU0dsb2JhbE9iamVj
dCopOworICAgIEN1cnJlbnRTY3JpcHRFeGVjdXRpb25Pd25lclB0ciBjdXJyZW50U2NyaXB0RXhl
Y3V0aW9uT3duZXI7CisKICAgICB0eXBlZGVmIFN0cmluZyAoKkRlZmF1bHRMYW5ndWFnZUZ1bmN0
aW9uUHRyKSgpOwogICAgIERlZmF1bHRMYW5ndWFnZUZ1bmN0aW9uUHRyIGRlZmF1bHRMYW5ndWFn
ZTsKIApAQCAtMjQwLDYgKzI0Myw3IEBAIHN0cnVjdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSB7
CiAKICAgICB0eXBlZGVmIHZvaWQgKCpJbnN0YW50aWF0ZVN0cmVhbWluZ1B0cikoSlNHbG9iYWxP
YmplY3QqLCBKU1Byb21pc2UqLCBKU1ZhbHVlLCBKU09iamVjdCopOwogICAgIEluc3RhbnRpYXRl
U3RyZWFtaW5nUHRyIGluc3RhbnRpYXRlU3RyZWFtaW5nOworCiB9OwogCiBjbGFzcyBKU0dsb2Jh
bE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKQEAgLTg1MSw2ICs4
NTUsNyBAQCBwdWJsaWM6CiAgICAgSlNPYmplY3QqIHVuaGFuZGxlZFJlamVjdGlvbkNhbGxiYWNr
KCkgY29uc3QgeyByZXR1cm4gbV91bmhhbmRsZWRSZWplY3Rpb25DYWxsYmFjay5nZXQoKTsgfQog
CiAgICAgc3RhdGljIHZvaWQgcmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcChKU0ds
b2JhbE9iamVjdCosIEV4Y2VwdGlvbiopOworICAgIHN0YXRpYyBKU09iamVjdCogY3VycmVudFNj
cmlwdEV4ZWN1dGlvbk93bmVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWwpIHsgcmV0dXJuIGdsb2Jh
bDsgfQogCiAgICAgSlNPYmplY3QqIGFycmF5QnVmZmVyQ29uc3RydWN0b3IoKSBjb25zdCB7IHJl
dHVybiBtX2FycmF5QnVmZmVyU3RydWN0dXJlLmNvbnN0cnVjdG9yKHRoaXMpOyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL0xvY2tlci5oIGIvU291cmNlL1dURi93dGYvTG9ja2VyLmgK
aW5kZXggYTc4OWUwM2UwOTU4ZWNiZTRmMzJmNGQ5NGYzMTYxMzU0NGJkMzY4OC4uYWU3MjQ5Mzk2
NGNiN2Q1N2ZhZTAzZGIwYTdkNjgxMWE4Y2RjOGY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvTG9ja2VyLmgKKysrIGIvU291cmNlL1dURi93dGYvTG9ja2VyLmgKQEAgLTMxLDYgKzMxLDcg
QEAKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+
CiAjaW5jbHVkZSA8d3RmL0NvbXBpbGVyLmg+CisjaW5jbHVkZSA8d3RmL0ZvcmJpZEhlYXBBbGxv
Y2F0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1Ro
cmVhZFNhbml0aXplclN1cHBvcnQuaD4KIApAQCAtNTEsNyArNTIsMTAgQEAgcHJvdGVjdGVkOgog
ICAgIH0KIH07CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBMb2NrZXIgOiBwdWJsaWMg
QWJzdHJhY3RMb2NrZXIgewordGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgRHJvcExvY2tTY29w
ZTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2NsYXNzIExvY2tlciA6IHB1YmxpYyBBYnN0cmFj
dExvY2tlciB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgTG9ja2VyKFQmIGxvY2thYmxlKSA6IG1f
bG9ja2FibGUoJmxvY2thYmxlKSB7IGxvY2soKTsgfQogICAgIGV4cGxpY2l0IExvY2tlcihUKiBs
b2NrYWJsZSkgOiBtX2xvY2thYmxlKGxvY2thYmxlKSB7IGxvY2soKTsgfQpAQCAtNjMsMTUgKzY3
LDExIEBAIHB1YmxpYzoKICAgICAvLyBiZSBhY2Nlc3NlZCBjb25jdXJyZW50bHkuCiAgICAgTG9j
a2VyKE5vTG9ja2luZ05lY2Vzc2FyeVRhZykgOiBtX2xvY2thYmxlKG51bGxwdHIpIHsgfQogICAg
IAotICAgIExvY2tlcihpbnQpID0gZGVsZXRlOworICAgIExvY2tlcihzdGQ6OnVuZGVybHlpbmdf
dHlwZV90PE5vTG9ja2luZ05lY2Vzc2FyeVRhZz4pID0gZGVsZXRlOwogCiAgICAgfkxvY2tlcigp
CiAgICAgewotICAgICAgICBjb21waWxlckZlbmNlKCk7Ci0gICAgICAgIGlmIChtX2xvY2thYmxl
KSB7Ci0gICAgICAgICAgICBUU0FOX0FOTk9UQVRFX0hBUFBFTlNfQkVGT1JFKG1fbG9ja2FibGUp
OwotICAgICAgICAgICAgbV9sb2NrYWJsZS0+dW5sb2NrKCk7Ci0gICAgICAgIH0KKyAgICAgICAg
dW5sb2NrKCk7CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBMb2NrZXIgdHJ5TG9jayhUJiBsb2Nr
YWJsZSkKQEAgLTg4LDggKzg4LDcgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgdW5sb2NrRWFy
bHkoKQogICAgIHsKLSAgICAgICAgVFNBTl9BTk5PVEFURV9IQVBQRU5TX0JFRk9SRShtX2xvY2th
YmxlKTsKLSAgICAgICAgbV9sb2NrYWJsZS0+dW5sb2NrKCk7CisgICAgICAgIHVubG9jaygpOwog
ICAgICAgICBtX2xvY2thYmxlID0gbnVsbHB0cjsKICAgICB9CiAgICAgCkBAIC05OCwyMSArOTcs
MzEgQEAgcHVibGljOgogICAgIExvY2tlcihMb2NrZXImJiBvdGhlcikKICAgICAgICAgOiBtX2xv
Y2thYmxlKG90aGVyLm1fbG9ja2FibGUpCiAgICAgeworICAgICAgICBBU1NFUlQoJm90aGVyICE9
IHRoaXMpOwogICAgICAgICBvdGhlci5tX2xvY2thYmxlID0gbnVsbHB0cjsKICAgICB9CiAgICAg
CiAgICAgTG9ja2VyJiBvcGVyYXRvcj0oTG9ja2VyJiYgb3RoZXIpCiAgICAgewotICAgICAgICBp
ZiAobV9sb2NrYWJsZSkgewotICAgICAgICAgICAgVFNBTl9BTk5PVEFURV9IQVBQRU5TX0JFRk9S
RShtX2xvY2thYmxlKTsKLSAgICAgICAgICAgIG1fbG9ja2FibGUtPnVubG9jaygpOwotICAgICAg
ICB9CisgICAgICAgIEFTU0VSVCgmb3RoZXIgIT0gdGhpcyk7CiAgICAgICAgIG1fbG9ja2FibGUg
PSBvdGhlci5tX2xvY2thYmxlOwogICAgICAgICBvdGhlci5tX2xvY2thYmxlID0gbnVsbHB0cjsK
ICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KICAgICAKIHByaXZhdGU6CisgICAgdGVtcGxh
dGU8dHlwZW5hbWU+CisgICAgZnJpZW5kIGNsYXNzIERyb3BMb2NrU2NvcGU7CisKKyAgICB2b2lk
IHVubG9jaygpCisgICAgeworICAgICAgICBjb21waWxlckZlbmNlKCk7CisgICAgICAgIGlmICht
X2xvY2thYmxlKSB7CisgICAgICAgICAgICBUU0FOX0FOTk9UQVRFX0hBUFBFTlNfQkVGT1JFKG1f
bG9ja2FibGUpOworICAgICAgICAgICAgbV9sb2NrYWJsZS0+dW5sb2NrKCk7CisgICAgICAgIH0K
KyAgICB9CisKICAgICB2b2lkIGxvY2soKQogICAgIHsKICAgICAgICAgaWYgKG1fbG9ja2FibGUp
IHsKQEAgLTE1MSw2ICsxNjAsMjUgQEAgTG9ja2VyPExvY2tUeXBlPiB0cnlIb2xkTG9jayhMb2Nr
VHlwZSYgbG9jaykKICAgICByZXR1cm4gTG9ja2VyPExvY2tUeXBlPjo6dHJ5TG9jayhsb2NrKTsK
IH0KIAordGVtcGxhdGU8dHlwZW5hbWUgTG9ja1R5cGU+CitjbGFzcyBEcm9wTG9ja1Njb3BlIDog
cHJpdmF0ZSBBYnN0cmFjdExvY2tlciB7CisgICAgV1RGX0ZPUkJJRF9IRUFQX0FMTE9DQVRJT04o
RHJvcExvY2tTY29wZSk7CitwdWJsaWM6CisgICAgRHJvcExvY2tTY29wZShMb2NrZXI8TG9ja1R5
cGU+JiBsb2NrKQorICAgICAgICA6IG1fbG9jayhsb2NrKQorICAgIHsKKyAgICAgICAgbV9sb2Nr
LnVubG9jaygpOworICAgIH0KKworICAgIH5Ecm9wTG9ja1Njb3BlKCkKKyAgICB7CisgICAgICAg
IG1fbG9jay5sb2NrKCk7CisgICAgfQorCitwcml2YXRlOgorICAgIExvY2tlcjxMb2NrVHlwZT4m
IG1fbG9jazsKK307CisKIH0KIAogdXNpbmcgV1RGOjpBYnN0cmFjdExvY2tlcjsKQEAgLTE1OSwz
ICsxODcsNCBAQCB1c2luZyBXVEY6Ok5vTG9ja2luZ05lY2Vzc2FyeVRhZzsKIHVzaW5nIFdURjo6
Tm9Mb2NraW5nTmVjZXNzYXJ5OwogdXNpbmcgV1RGOjpob2xkTG9jazsKIHVzaW5nIFdURjo6aG9s
ZExvY2tJZjsKK3VzaW5nIFdURjo6RHJvcExvY2tTY29wZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCmluZGV4IGY5M2UzZmQzMWM2NWU0YjJlNTIy
NzQ1Nzk4NzNhYWExZGM0ZjcxNmMuLmZiOTIxYjk0NzU5NWFlZTkwMjFjMGI5ZmYwODg4MGYxZGMx
MmU0ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNl
LmNwcApAQCAtODAsNiArODAsNyBAQCBjb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBKU0RP
TVdpbmRvd0Jhc2U6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7CiAgICAgJm1vZHVsZUxv
YWRlckV2YWx1YXRlLAogICAgICZwcm9taXNlUmVqZWN0aW9uVHJhY2tlciwKICAgICAmcmVwb3J0
VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcCwKKyAgICAmY3VycmVudFNjcmlwdEV4ZWN1dGlv
bk93bmVyLAogICAgICZkZWZhdWx0TGFuZ3VhZ2UsCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQog
ICAgICZjb21waWxlU3RyZWFtaW5nLApAQCAtMjMxLDYgKzIzMiwxMyBAQCB2b2lkIEpTRE9NV2lu
ZG93QmFzZTo6cXVldWVNaWNyb3Rhc2tUb0V2ZW50TG9vcChKU0dsb2JhbE9iamVjdCYgb2JqZWN0
LCBSZWY8SlNDOgogICAgIH0pOwogfQogCitKU0M6OkpTT2JqZWN0KiBKU0RPTVdpbmRvd0Jhc2U6
OmN1cnJlbnRTY3JpcHRFeGVjdXRpb25Pd25lcihKU0dsb2JhbE9iamVjdCogb2JqZWN0KQorewor
ICAgIEpTRE9NV2luZG93QmFzZSogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTRE9NV2luZG93
QmFzZSo+KG9iamVjdCk7CisKKyAgICByZXR1cm4ganNDYXN0PEpTQzo6SlNPYmplY3QqPih0b0pT
KHRoaXNPYmplY3QsIHRoaXNPYmplY3QsIHRoaXNPYmplY3QtPndyYXBwZWQoKS5kb2N1bWVudCgp
KSk7Cit9CisKIHZvaWQgSlNET01XaW5kb3dCYXNlOjp3aWxsUmVtb3ZlRnJvbVdpbmRvd1Byb3h5
KCkKIHsKICAgICBzZXRDdXJyZW50RXZlbnQoMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV2luZG93QmFzZS5oCmluZGV4IGVjNmRkYzE3MDIxMDhlOTljZjk5ZGMzNjMzNWUy
NWUwMDY0NWQ4NWEuLjk1OGFlMDFkZGMyOTIwOWI1MGVlMzhmZDBiY2NiOWRkOTUwYTI4YWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5oCkBAIC03OCw2
ICs3OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcnJ1cHRTY3JpcHRC
ZWZvcmVUaW1lb3V0KGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICBzdGF0aWMgSlND
OjpSdW50aW1lRmxhZ3MgamF2YVNjcmlwdFJ1bnRpbWVGbGFncyhjb25zdCBKU0M6OkpTR2xvYmFs
T2JqZWN0Kik7CiAgICAgc3RhdGljIHZvaWQgcXVldWVNaWNyb3Rhc2tUb0V2ZW50TG9vcChKU0M6
OkpTR2xvYmFsT2JqZWN0JiwgUmVmPEpTQzo6TWljcm90YXNrPiYmKTsKKyAgICBzdGF0aWMgSlND
OjpKU09iamVjdCogY3VycmVudFNjcmlwdEV4ZWN1dGlvbk93bmVyKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqKTsKIAogICAgIHZvaWQgcHJpbnRFcnJvck1lc3NhZ2UoY29uc3QgU3RyaW5nJikgY29uc3Q7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFs
U2NvcGVCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFs
U2NvcGVCYXNlLmNwcAppbmRleCBjNDRmMmZiM2EwYjA1ZGFhYjFhOGE5ZTJmODliNTJkODUxZWI0
MzY4Li5kNmIxNTkzNDljMGM0YjRmNzZmMDE2MTQzMGFjMmQyZTkyNDNkMTNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2Uu
Y3BwCkBAIC02Niw2ICs2Niw3IEBAIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTV29y
a2VyR2xvYmFsU2NvcGVCYXNlOjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlCiAgICAgbnVsbHB0
ciwgLy8gbW9kdWxlTG9hZGVyRXZhbHVhdGUKICAgICAmcHJvbWlzZVJlamVjdGlvblRyYWNrZXIs
CiAgICAgJnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3AsCisgICAgJmN1cnJlbnRT
Y3JpcHRFeGVjdXRpb25Pd25lciwKICAgICAmZGVmYXVsdExhbmd1YWdlLAogICAgIG51bGxwdHIs
IC8vIGNvbXBpbGVTdHJlYW1pbmcKICAgICBudWxscHRyLCAvLyBpbnN0YW50aWF0ZVN0cmVhbWlu
ZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFs
U2NvcGVCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2xldEdsb2Jh
bFNjb3BlQmFzZS5jcHAKaW5kZXggYjE0YjgxNTQyZGI4ODllYzZkMjU5YmM1YjcwZWYyYTUwOTlj
OTZkMS4uMmJjOTg4ODE1MWM2OTYxMzQzNTEzNjdhMWQ1OWFmMDg5MWMyOTYwOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29wZUJh
c2UuY3BwCkBAIC01OCw2ICs1OCw3IEBAIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpT
V29ya2xldEdsb2JhbFNjb3BlQmFzZTo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJsCiAgICAgbnVs
bHB0ciwgLy8gbW9kdWxlTG9hZGVyRXZhbHVhdGUKICAgICAmcHJvbWlzZVJlamVjdGlvblRyYWNr
ZXIsCiAgICAgJnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3AsCisgICAgJmN1cnJl
bnRTY3JpcHRFeGVjdXRpb25Pd25lciwKICAgICAmZGVmYXVsdExhbmd1YWdlLAogICAgIG51bGxw
dHIsIC8vIGNvbXBpbGVTdHJlYW1pbmcKICAgICBudWxscHRyLCAvLyBpbnN0YW50aWF0ZVN0cmVh
bWluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCmlu
ZGV4IDc2MmQ1MzgxZjZkNDBiNTRhMDA1M2QyM2U3MWY1MTM5ZjdlNTJhYmIuLmNjN2Q1NDVlYmZj
MzI3OGMzYTQ0NTIxYzUwNTUyMGM3NTQ3NTBhNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKQEAgLTUzLDEyICs1MywxNCBAQAogI2luY2x1ZGUg
IlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJQcm92
aWRlci5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50
RGF0YS5oIgogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2Vy
TmF2aWdhdG9yLmgiCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCiAjaW5jbHVkZSAiV29ya2xl
dEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCIKICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9DYXRjaFNjb3BlLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvRGVmZXJyZWRXb3JrVGltZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9FeGNl
cHRpb24uaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1Byb21pc2UuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRDYWxsU3RhY2suaD4KQEAgLTI0Niw2ICsyNDgsMzIgQEAg
dm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpmb3JFYWNoQWN0aXZlRE9NT2JqZWN0KGNvbnN0
IEZ1bmN0aW9uPFNob3VsZENvbnRpbnUKICAgICB9CiB9CiAKK2lubGluZSB2b2lkIG5vdGlmeUpT
Q0RlZmVycmVkV29ya1RpbWVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIHZvaWQg
KEpTQzo6RGVmZXJyZWRXb3JrVGltZXI6OiogZnVuY3RvcikoSlNDOjpWTSAmLCBKU0M6OkpTT2Jq
ZWN0ICopKQoreworICAgIGF1dG8mIHZtID0gY29udGV4dC0+dm0oKTsKKyAgICBKU1ZNQ2xpZW50
RGF0YSogY2xpZW50RGF0YSA9IHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50
RGF0YSk7CisgICAgVmVjdG9yPFJlZjxET01XcmFwcGVyV29ybGQ+PiB3cmFwcGVyV29ybGRzOwor
ICAgIGNsaWVudERhdGEtPmdldEFsbFdvcmxkcyh3cmFwcGVyV29ybGRzKTsKKyAgICBTY3JpcHRX
cmFwcGFibGUqIGJhc2UgPSAoWyZdICgpIC0+IFNjcmlwdFdyYXBwYWJsZSogeworICAgICAgICBp
ZiAoaXM8RG9jdW1lbnQ+KGNvbnRleHQpKQorICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PERv
Y3VtZW50Pihjb250ZXh0KTsKKyAgICAgICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPihjb250
ZXh0KSkKKyAgICAgICAgICAgIHJldHVybiBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29u
dGV4dCk7CisgICAgICAgIHJldHVybiBkb3duY2FzdDxXb3JrbGV0R2xvYmFsU2NvcGU+KGNvbnRl
eHQpOworICAgIH0pKCk7CisgICAgaWYgKGJhc2UtPndyYXBwZXIoKSkKKyAgICAgICAgKCh2bS5k
ZWZlcnJlZFdvcmtUaW1lci5nZXQoKSkuKmZ1bmN0b3IpKHZtLCBiYXNlLT53cmFwcGVyKCkpOwor
ICAgIGZvciAoYXV0byYgd29ybGQgOiB3cmFwcGVyV29ybGRzKSB7CisgICAgICAgIGlmICh3b3Js
ZC5pc05vcm1hbCgpKQorICAgICAgICAvLyBJZiB0aGVyZSdzIG5vIHdyYXBwZXIgd2UgY2FuIHNh
ZmVseSBjb25jbHVkZSB0aGF0IG5vIEpTQyBBUEkgY3JlYXRlZCBhbnkgZGVmZXJyZWQgd29yay4K
KyAgICAgICAgYXV0byYgd3JhcHBlcnMgPSB3b3JsZC0+d3JhcHBlcnMoKTsKKyAgICAgICAgYXV0
byByZXN1bHQgPSB3cmFwcGVycy5maW5kKGJhc2UpOworICAgICAgICBpZiAocmVzdWx0ID09IHdy
YXBwZXJzLmVuZCgpIHx8IHJlc3VsdC0+dmFsdWUuZ2V0KCkpCisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgKCh2bS5kZWZlcnJlZFdvcmtUaW1lci5nZXQoKSkuKmZ1bmN0b3IpKHZtLCBy
ZXN1bHQtPnZhbHVlLmdldCgpKTsKKyAgICB9Cit9CisKIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6c3VzcGVuZEFjdGl2ZURPTU9iamVjdHMoUmVhc29uRm9yU3VzcGVuc2lvbiB3aHkpCiB7
CiAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwpAQCAtMjY1LDYgKzI5Myw4IEBAIHZvaWQgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6c3VzcGVuZEFjdGl2ZURPTU9iamVjdHMoUmVhc29uRm9yU3VzcGVu
c2lvbiB3aHkpCiAgICAgICAgIHJldHVybiBTaG91bGRDb250aW51ZTo6WWVzOwogICAgIH0pOwog
CisgICAgbm90aWZ5SlNDRGVmZXJyZWRXb3JrVGltZXIodGhpcywgJkpTQzo6RGVmZXJyZWRXb3Jr
VGltZXI6OnN1c3BlbmRUYXNrc1VuZGVyU2NyaXB0RXhlY3V0aW9uT3duZXIpOworCiAgICAgbV9y
ZWFzb25Gb3JTdXNwZW5kaW5nQWN0aXZlRE9NT2JqZWN0cyA9IHdoeTsKIH0KIApAQCAtMjgwLDYg
KzMxMCw4IEBAIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cmVzdW1lQWN0aXZlRE9NT2Jq
ZWN0cyhSZWFzb25Gb3JTdXNwZW5zaW9uIHdoeSkKICAgICAgICAgcmV0dXJuIFNob3VsZENvbnRp
bnVlOjpZZXM7CiAgICAgfSk7CiAKKyAgICBub3RpZnlKU0NEZWZlcnJlZFdvcmtUaW1lcih0aGlz
LCAmSlNDOjpEZWZlcnJlZFdvcmtUaW1lcjo6cmVzdW1lVGFza3NVbmRlclNjcmlwdEV4ZWN1dGlv
bk93bmVyKTsKKwogICAgIG1fYWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCA9IGZhbHNlOwog
CiAgICAgLy8gSW4gY2FzZSB0aGVyZSB3ZXJlIHBlbmRpbmcgbWVzc2FnZXMgYXQgdGhlIHRpbWUg
dGhlIHNjcmlwdCBleGVjdXRpb24gY29udGV4dCBlbnRlcmVkIHRoZSBCYWNrRm9yd2FyZENhY2hl
LApAQCAtMjk5LDYgKzMzMSw4IEBAIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6c3RvcEFj
dGl2ZURPTU9iamVjdHMoKQogICAgICAgICBhY3RpdmVET01PYmplY3Quc3RvcCgpOwogICAgICAg
ICByZXR1cm4gU2hvdWxkQ29udGludWU6OlllczsKICAgICB9KTsKKworICAgIG5vdGlmeUpTQ0Rl
ZmVycmVkV29ya1RpbWVyKHRoaXMsICZKU0M6OkRlZmVycmVkV29ya1RpbWVyOjpjYW5jZWxUYXNr
c1VuZGVyU2NyaXB0RXhlY3V0aW9uT3duZXIpOwogfQogCiB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OnN1c3BlbmRBY3RpdmVET01PYmplY3RJZk5lZWRlZChBY3RpdmVET01PYmplY3QmIGFj
dGl2ZURPTU9iamVjdCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410876</attachid>
            <date>2020-10-08 13:07:25 -0700</date>
            <delta_ts>2020-10-08 14:02:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214508-20201008130724.patch</filename>
            <type>text/plain</type>
            <size>47345</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3NzcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
NmU1ZWEyN2M4YmEwM2QwM2Y3ODA5MTAxMzVkZmFjYzI2YjFkMGVkLi40MjFiYTZhYzg1ZjIxNjZh
ZTdjYzdjOGU2MDc2ZWE5MzNjYzZhZmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MSBAQAorMjAyMC0xMC0wOCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBGaW5hbGl6ZXJzIHNob3VsZG4ndCBydW4gaWYgZXZlbnRzIGNhbid0
IGZpcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
NDUwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgcGF0Y2ggbWFrZXMgaXQgc28gdGhlIERlZmVycmVkV29ya1RpbWVyIHdvbid0IHJ1biBzY2hl
ZHVsZWQKKyAgICAgICAgdGFza3MgaWYgdGhvc2Ugd291bGQgbm90IGhhdmUgcnVuIGlmIHRoZXkg
d2VyZSBzY2hlZHVsZWQgaW4KKyAgICAgICAgV2ViQ29yZS4gVG8gZG8gdGhpcyB0aGVyZSBpcyBu
b3cgYSBjb25jZXB0IG9mIGEKKyAgICAgICAgU2NyaXB0RXhlY3V0aW9uT3duZXIuIFRoZSBTY3Jp
cHRFeGVjdXRpb25Pd25lciBpcyBhbG1vc3QgYWx3YXlzCisgICAgICAgIHRoZSBzYW1lIGFzIHRo
ZSBnbG9iYWwgb2JqZWN0IG9mIHRoZSBwZW5kaW5nIHRhc2sgKHJlZmVycmVkIHRvIGFzCisgICAg
ICAgIHRoZSB0aWNrZXQpLiAgVGhlIG9ubHkgZXhjZXB0aW9uIHRvIHRoaXMgaXMgaWYgdGhlIGds
b2JhbCBvYmplY3QKKyAgICAgICAgaXMgYSBKU0RPTVdpbmRvd0Jhc2UsIHRoZW4gdGhlIFNjcmlw
dEV4ZWN1dGlvbk93bmVyIGlzIHRoZQorICAgICAgICBEb2N1bWVudCdzIEpTIHdyYXBwZXIuIFRv
IHRlbGwgdGhlIHN0YXR1cyBvZiBhCisgICAgICAgIFNjcmlwdEV4ZWN1dGlvbk93bmVyLCB0aGUg
RGVmZXJyZWRXb3JrVGltZXIgY2FsbHMgYSB2aXJ0dWFsCisgICAgICAgIGZ1bmN0aW9uIG9uIHRo
ZSBnbG9iYWwgb2JqZWN0IG9mIHRoZSB0aWNrZXQsIGZvciBKU0Mtb25seSB0aGlzCisgICAgICAg
IGp1c3QgYWx3YXlzIHJldHVybnMgUnVubmluZy4gRm9yIFdlYkNvcmUsIHdlIGFzayB0aGUKKyAg
ICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCBhc3NvY2lhdGVkIHdpdGggdGhlIFNjcmlwdEV4
ZWN1dGlvbk93bmVyLgorCisgICAgICAgICogQVBJL0pTQVBJR2xvYmFsT2JqZWN0LmNwcDoKKyAg
ICAgICAgKiBBUEkvSlNBUElHbG9iYWxPYmplY3QubW06CisgICAgICAgICoganNjLmNwcDoKKyAg
ICAgICAgKiBydW50aW1lL0RlZmVycmVkV29ya1RpbWVyLmNwcDoKKyAgICAgICAgKEpTQzo6RGVm
ZXJyZWRXb3JrVGltZXI6OmRvV29yayk6CisgICAgICAgIChKU0M6OkRlZmVycmVkV29ya1RpbWVy
OjphZGRQZW5kaW5nV29yayk6CisgICAgICAgIChKU0M6OkRlZmVycmVkV29ya1RpbWVyOjpoYXNE
ZXBlbmRhbmN5SW5QZW5kaW5nV29yayk6CisgICAgICAgIChKU0M6OkRlZmVycmVkV29ya1RpbWVy
OjpzY3JpcHRFeGVjdXRpb25Pd25lcldhc1Vuc3VzcGVuZGVkKToKKyAgICAgICAgKiBydW50aW1l
L0RlZmVycmVkV29ya1RpbWVyLmg6CisgICAgICAgICogcnVudGltZS9KU0ZpbmFsaXphdGlvblJl
Z2lzdHJ5LmNwcDoKKyAgICAgICAgKEpTQzo6SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6Y3JlYXRl
KToKKyAgICAgICAgKEpTQzo6SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6ZmluaXNoQ3JlYXRpb24p
OgorICAgICAgICAqIHJ1bnRpbWUvSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxP
YmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmN1cnJlbnRTY3JpcHRFeGVj
dXRpb25Pd25lcik6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpzY3JpcHRFeGVjdXRp
b25TdGF0dXMpOgorCiAyMDIwLTA5LTI2ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZWZhY3RvciB0ZXN0IHJ1bm5lciBjb2RlIHRvIGN1dCBkb3duIG9uIGNvcHkv
cGFzdGUgY29kZSBhbmQgbG9uZy13aW5kZWQgcmVwZXRpdGl2ZSBpZGlvbXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggZDk1YTZk
MTg1MDVjMjBjMzYzMDQ4NTA5Yjk1YTBiNTZlNDNiZmZjNS4uZTFmYTUxMjRjMGM0MmZjOTU0ZjE4
ODlmMzE4OTg2YjlhYWY3NWVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAyMC0xMC0wOCAgS2Vp
dGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KKworICAgICAgICBGaW5hbGl6ZXJz
IHNob3VsZG4ndCBydW4gaWYgZXZlbnRzIGNhbid0IGZpcmUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDUwOAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIERyb3BMb2NrU2NvcGUgdG8gbWFrZSBp
dCBlYXNpZXIgdG8gZHJvcCBhIGxvY2sgZm9yIGEgc2hvcnQKKyAgICAgICAgcGllY2Ugb2YgY29k
ZS4gIEFsc28sIGluc3RlYWQgb2YgZGVsZXRpbmcgaW50IExvY2tlciBjb25zdHJ1Y3RvcgorICAg
ICAgICB3ZSBzaG91bGQganVzdCBkZWxldGUgdGhlIHVuZGVybHlpbmcgdHlwZSBvZiB0aGUKKyAg
ICAgICAgTm9Mb2NraW5nTmVjZXNzYXJ5IGVudW0uCisKKyAgICAgICAgKiB3dGYvTG9ja2VyLmg6
CisgICAgICAgIChXVEY6OkxvY2tlcjo6fkxvY2tlcik6CisgICAgICAgIChXVEY6OkxvY2tlcjo6
dW5sb2NrRWFybHkpOgorICAgICAgICAoV1RGOjpMb2NrZXI6OkxvY2tlcik6CisgICAgICAgIChX
VEY6OkxvY2tlcjo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdURjo6TG9ja2VyOjp1bmxvY2spOgor
ICAgICAgICAoV1RGOjpEcm9wTG9ja1Njb3BlOjpEcm9wTG9ja1Njb3BlKToKKyAgICAgICAgKFdU
Rjo6RHJvcExvY2tTY29wZTo6fkRyb3BMb2NrU2NvcGUpOgorCiAyMDIwLTA5LTI5ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIHBs
aXN0LWJhc2VkIFJlc291cmNlTG9hZFN0YXRpc3RpY3Mgc3RvcmFnZSwgd2hpY2ggaGFzIGJlZW4g
cmVwbGFjZWQgYnkgZGF0YWJhc2UtYmFzZWQgc3RvcmFnZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDBhMDM4ODVi
ZmEyNDg1MDhlN2M5YTk4NzNjZWNjNjI4ZjNiZTIyMTMuLjEzYzQ0MTdkYjU2NjYzZDNlZjQxNjBk
MWFiYWM0YzZmNDIwOTY2MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MyBAQAorMjAyMC0xMC0w
OCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KKworICAgICAgICBGaW5h
bGl6ZXJzIHNob3VsZG4ndCBydW4gaWYgZXZlbnRzIGNhbid0IGZpcmUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDUwOAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMgaXQgc28g
dGhlIERlZmVycmVkV29ya1RpbWVyIHdvbid0IHJ1biBzY2hlZHVsZWQKKyAgICAgICAgdGFza3Mg
aWYgdGhvc2Ugd291bGQgbm90IGhhdmUgcnVuIGlmIHRoZXkgd2VyZSBzY2hlZHVsZWQgaW4KKyAg
ICAgICAgV2ViQ29yZS4gVG8gZG8gdGhpcyB0aGVyZSBpcyBub3cgYSBjb25jZXB0IG9mIGEKKyAg
ICAgICAgU2NyaXB0RXhlY3V0aW9uT3duZXIuIFRoZSBTY3JpcHRFeGVjdXRpb25Pd25lciBpcyBh
bG1vc3QgYWx3YXlzCisgICAgICAgIHRoZSBzYW1lIGFzIHRoZSBnbG9iYWwgb2JqZWN0IG9mIHRo
ZSBwZW5kaW5nIHRhc2sgKHJlZmVycmVkIHRvIGFzCisgICAgICAgIHRoZSB0aWNrZXQpLiAgVGhl
IG9ubHkgZXhjZXB0aW9uIHRvIHRoaXMgaXMgaWYgdGhlIGdsb2JhbCBvYmplY3QKKyAgICAgICAg
aXMgYSBKU0RPTVdpbmRvd0Jhc2UsIHRoZW4gdGhlIFNjcmlwdEV4ZWN1dGlvbk93bmVyIGlzIHRo
ZQorICAgICAgICBEb2N1bWVudCdzIEpTIHdyYXBwZXIuIFRvIHRlbGwgdGhlIHN0YXR1cyBvZiBh
CisgICAgICAgIFNjcmlwdEV4ZWN1dGlvbk93bmVyLCB0aGUgRGVmZXJyZWRXb3JrVGltZXIgY2Fs
bHMgYSB2aXJ0dWFsCisgICAgICAgIGZ1bmN0aW9uIG9uIHRoZSBnbG9iYWwgb2JqZWN0IG9mIHRo
ZSB0aWNrZXQsIGZvciBKU0Mtb25seSB0aGlzCisgICAgICAgIGp1c3QgYWx3YXlzIHJldHVybnMg
UnVubmluZy4gRm9yIFdlYkNvcmUsIHdlIGFzayB0aGUKKyAgICAgICAgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCBhc3NvY2lhdGVkIHdpdGggdGhlIFNjcmlwdEV4ZWN1dGlvbk93bmVyLgorCisgICAg
ICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTRE9NV2luZG93QmFzZTo6Y3VycmVudFNjcmlwdEV4ZWN1dGlvbk93bmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6c2NyaXB0RXhlY3V0aW9uU3RhdHVzKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTVdyYXBwZXJDYWNoZS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyR2xv
YmFsU2NvcGVCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2VyR2xvYmFsU2NvcGVC
YXNlOjpzY3JpcHRFeGVjdXRpb25TdGF0dXMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29y
a2VyR2xvYmFsU2NvcGVCYXNlLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNXb3JrbGV0R2xv
YmFsU2NvcGVCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2xldEdsb2JhbFNjb3Bl
QmFzZTo6c2NyaXB0RXhlY3V0aW9uU3RhdHVzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dv
cmtsZXRHbG9iYWxTY29wZUJhc2UuaDoKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpjb250
ZXh0SWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpyZW1vdmVGcm9tQ29udGV4dHNNYXApOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6flNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6anNjU2NyaXB0RXhlY3V0aW9uU3RhdHVzIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnJlc3VtZUFj
dGl2ZURPTU9iamVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6cG9zdFRhc2tUbyk6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaDoK
KwogMjAyMC0wOS0yOSAgUGVuZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgogCiAgICAgICAg
IFtNZWRpYSBpbiBHUFUgUHJvY2Vzc10gVXNlIFZpZGVvTGF5ZXJNYW5hZ2VyIHRvIG1hbmFnZSBs
YXllcnMgb2YgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3QuY3BwCmluZGV4IDliNGYzMzhmZDkwMzEyMjY5NjY3
OWE4NzhiMWMyOGJmNmUwNDkzYzEuLjlmNWUwYWQzMGQ3ZDcyMzUwZTllZTk5YWFkMzQ1MjhkZWQ3
MGZiZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9iYWxP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmpl
Y3QuY3BwCkBAIC00NSw2ICs0NSw4IEBAIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpT
QVBJR2xvYmFsT2JqZWN0OjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0gewogICAgIG51bGxw
dHIsIC8vIG1vZHVsZUxvYWRlckV2YWx1YXRlCiAgICAgbnVsbHB0ciwgLy8gcHJvbWlzZVJlamVj
dGlvblRyYWNrZXIKICAgICAmcmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcCwKKyAg
ICAmY3VycmVudFNjcmlwdEV4ZWN1dGlvbk93bmVyLAorICAgICZzY3JpcHRFeGVjdXRpb25TdGF0
dXMsCiAgICAgbnVsbHB0ciwgLy8gZGVmYXVsdExhbmd1YWdlCiAgICAgbnVsbHB0ciwgLy8gY29t
cGlsZVN0cmVhbWluZwogICAgIG51bGxwdHIsIC8vIGluc3RhbnRpYXRlU3RyZWFtaW5nCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0Lm1tIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5tbQppbmRleCBkZGUy
YmQzMjNiYzdiNjViNGYwOTAyM2I4N2FlYTI3YjA0MjM2MzllLi41NDYxMzc5ZmRiZGU0YzFlOTIz
NTVhZjAxNzAxNDMyNjAwY2FlMTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQVBJR2xvYmFsT2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNBUElHbG9iYWxPYmplY3QubW0KQEAgLTY1LDYgKzY1LDggQEAgY29uc3QgR2xvYmFsT2JqZWN0
TWV0aG9kVGFibGUgSlNBUElHbG9iYWxPYmplY3Q6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUg
PSB7CiAgICAgJm1vZHVsZUxvYWRlckV2YWx1YXRlLCAvLyBtb2R1bGVMb2FkZXJFdmFsdWF0ZQog
ICAgIG51bGxwdHIsIC8vIHByb21pc2VSZWplY3Rpb25UcmFja2VyCiAgICAgJnJlcG9ydFVuY2F1
Z2h0RXhjZXB0aW9uQXRFdmVudExvb3AsCisgICAgJmN1cnJlbnRTY3JpcHRFeGVjdXRpb25Pd25l
ciwKKyAgICAmc2NyaXB0RXhlY3V0aW9uU3RhdHVzLAogICAgIG51bGxwdHIsIC8vIGRlZmF1bHRM
YW5ndWFnZQogICAgIG51bGxwdHIsIC8vIGNvbXBpbGVTdHJlYW1pbmcKICAgICBudWxscHRyLCAv
LyBpbnN0YW50aWF0ZVN0cmVhbWluZwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCBkNTg5NmI5NTIy
ODViNzVlYTdhMmJlYTFlN2RjMTdmMTgwZDQxMDMyLi4wYzlkZTkzOGQyY2UxZWUzMDdhZDMyNDUx
YThlNjFkYzdmNzU2MjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtNzE1LDYgKzcxNSw4IEBA
IGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEdsb2JhbE9iamVjdDo6c19nbG9iYWxPYmpl
Y3RNZXRob2RUYWJsZSA9IHsKICAgICBudWxscHRyLCAvLyBtb2R1bGVMb2FkZXJFdmFsdWF0ZQog
ICAgIG51bGxwdHIsIC8vIHByb21pc2VSZWplY3Rpb25UcmFja2VyCiAgICAgJnJlcG9ydFVuY2F1
Z2h0RXhjZXB0aW9uQXRFdmVudExvb3AsCisgICAgJmN1cnJlbnRTY3JpcHRFeGVjdXRpb25Pd25l
ciwKKyAgICAmc2NyaXB0RXhlY3V0aW9uU3RhdHVzLAogICAgIG51bGxwdHIsIC8vIGRlZmF1bHRM
YW5ndWFnZQogICAgIG51bGxwdHIsIC8vIGNvbXBpbGVTdHJlYW1pbmcKICAgICBudWxscHRyLCAv
LyBpbnN0YW50aW5hdGVTdHJlYW1pbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0RlZmVycmVkV29ya1RpbWVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0RlZmVycmVkV29ya1RpbWVyLmNwcAppbmRleCBjZWQ3N2JhZTQ0ZDczMmVkZTM3ZjQ0
MDM3N2QwNzM1YTdmZWEyZGM4Li45NTgwYzYyZTE1YjYwMzg2MGI1OGViYjk4NjcxY2M2NGEzMzhi
ZGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EZWZlcnJlZFdv
cmtUaW1lci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVmZXJyZWRX
b3JrVGltZXIuY3BwCkBAIC00NSwyMiArNDUsMzggQEAgRGVmZXJyZWRXb3JrVGltZXI6OkRlZmVy
cmVkV29ya1RpbWVyKFZNJiB2bSkKIHZvaWQgRGVmZXJyZWRXb3JrVGltZXI6OmRvV29yayhWTSYg
dm0pCiB7CiAgICAgQVNTRVJUKHZtLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOwot
ICAgIG1fdGFza0xvY2subG9jaygpOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV90YXNr
TG9jayk7CiAgICAgY2FuY2VsVGltZXIoKTsKLSAgICBpZiAoIW1fcnVuVGFza3MpIHsKLSAgICAg
ICAgbV90YXNrTG9jay51bmxvY2soKTsKKyAgICBpZiAoIW1fcnVuVGFza3MpCiAgICAgICAgIHJl
dHVybjsKLSAgICB9CisKKyAgICBWZWN0b3I8c3RkOjp0dXBsZTxUaWNrZXQsIFRhc2s+PiBzdXNw
ZW5kZWRUYXNrczsKIAogICAgIHdoaWxlICghbV90YXNrcy5pc0VtcHR5KCkpIHsKICAgICAgICAg
YXV0byBbdGlja2V0LCB0YXNrXSA9IG1fdGFza3MudGFrZUZpcnN0KCk7CisgICAgICAgIGF1dG8g
Z2xvYmFsT2JqZWN0ID0gdGlja2V0LT5zdHJ1Y3R1cmUodm0pLT5nbG9iYWxPYmplY3QoKTsKICAg
ICAgICAgZGF0YUxvZ0xuSWYoRGVmZXJyZWRXb3JrVGltZXJJbnRlcm5hbDo6dmVyYm9zZSwgIkRv
aW5nIHdvcmsgb246ICIsIFJhd1BvaW50ZXIodGlja2V0KSk7CiAKLSAgICAgICAgLy8gV2UgbWF5
IGhhdmUgYWxyZWFkeSBjYW5jZWxlZCB0aGVzZSBwcm9taXNlcy4KLSAgICAgICAgaWYgKG1fcGVu
ZGluZ1RpY2tldHMuY29udGFpbnModGlja2V0KSkgewotICAgICAgICAgICAgLy8gQWxsb3cgdGFz
a3Mgd2UgcnVuIG5vdyB0byBzY2hlZHVsZSB3b3JrLgotICAgICAgICAgICAgbV9jdXJyZW50bHlS
dW5uaW5nVGFzayA9IHRydWU7Ci0gICAgICAgICAgICBtX3Rhc2tMb2NrLnVubG9jaygpOyAKKyAg
ICAgICAgYXV0byBwZW5kaW5nVGlja2V0ID0gbV9wZW5kaW5nVGlja2V0cy5maW5kKHRpY2tldCk7
CisgICAgICAgIC8vIFdlIG1heSBoYXZlIGFscmVhZHkgY2FuY2VsZWQgdGhpcyB0YXNrIG9yIGl0
cyBvd25lciBtYXkgaGF2ZSBiZWVuIGNhbmNlbGVkLgorICAgICAgICBpZiAocGVuZGluZ1RpY2tl
dCA9PSBtX3BlbmRpbmdUaWNrZXRzLmVuZCgpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAg
ICAgICAgU2NyaXB0RXhlY3V0aW9uU3RhdHVzIHN0YXR1cyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFs
T2JqZWN0TWV0aG9kVGFibGUoKS0+c2NyaXB0RXhlY3V0aW9uU3RhdHVzKGdsb2JhbE9iamVjdCwg
cGVuZGluZ1RpY2tldC0+dmFsdWUuc2NyaXB0RXhlY3V0aW9uT3duZXIuZ2V0KCkpOworICAgICAg
ICBzd2l0Y2ggKHN0YXR1cykgeworICAgICAgICBjYXNlIFNjcmlwdEV4ZWN1dGlvblN0YXR1czo6
U3VzcGVuZGVkOgorICAgICAgICAgICAgc3VzcGVuZGVkVGFza3MuYXBwZW5kKHN0ZDo6bWFrZV90
dXBsZSh0aWNrZXQsIFdURk1vdmUodGFzaykpKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICBjYXNlIFNjcmlwdEV4ZWN1dGlvblN0YXR1czo6Q2FuY2VsZWQ6CisgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisKKyAgICAgICAgLy8gQWxsb3cgdGFza3Mgd2UgYXJlIGFib3V0IHRvIHJ1biB0byBzY2hlZHVs
ZSB3b3JrLgorICAgICAgICBtX2N1cnJlbnRseVJ1bm5pbmdUYXNrID0gdHJ1ZTsKKyAgICAgICAg
eworICAgICAgICAgICAgYXV0byBkcm9wcGVyID0gRHJvcExvY2tTY29wZShsb2NrZXIpOwogCiAg
ICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBzdGFydCBvZiBhIHJ1bmxvb3AgdHVybiwgd2UgY2Fu
IHJlbGVhc2UgYW55IHdlYWtyZWZzIGhlcmUuCiAgICAgICAgICAgICB2bS5maW5hbGl6ZVN5bmNo
cm9ub3VzSlNFeGVjdXRpb24oKTsKQEAgLTc1LDE2ICs5MSwxNyBAQCB2b2lkIERlZmVycmVkV29y
a1RpbWVyOjpkb1dvcmsoVk0mIHZtKQogCiAgICAgICAgICAgICB2bS5kcmFpbk1pY3JvdGFza3Mo
KTsKICAgICAgICAgICAgIEFTU0VSVCghdm0uZXhjZXB0aW9uRm9ySW5zcGVjdGlvbigpKTsKLQot
ICAgICAgICAgICAgbV90YXNrTG9jay5sb2NrKCk7Ci0gICAgICAgICAgICBtX2N1cnJlbnRseVJ1
bm5pbmdUYXNrID0gZmFsc2U7CiAgICAgICAgIH0KKyAgICAgICAgbV9jdXJyZW50bHlSdW5uaW5n
VGFzayA9IGZhbHNlOwogICAgIH0KIAotICAgIGlmIChtX3BlbmRpbmdUaWNrZXRzLmlzRW1wdHko
KSAmJiBtX3Nob3VsZFN0b3BSdW5Mb29wV2hlbkFsbFRpY2tldHNGaW5pc2gpCi0gICAgICAgIFJ1
bkxvb3A6OmN1cnJlbnQoKS5zdG9wKCk7CisgICAgd2hpbGUgKCFzdXNwZW5kZWRUYXNrcy5pc0Vt
cHR5KCkpCisgICAgICAgIG1fdGFza3MucHJlcGVuZChzdXNwZW5kZWRUYXNrcy50YWtlTGFzdCgp
KTsKIAotICAgIG1fdGFza0xvY2sudW5sb2NrKCk7CisgICAgaWYgKG1fcGVuZGluZ1RpY2tldHMu
aXNFbXB0eSgpICYmIG1fc2hvdWxkU3RvcFJ1bkxvb3BXaGVuQWxsVGlja2V0c0ZpbmlzaCkgewor
ICAgICAgICBBU1NFUlQobV90YXNrcy5pc0VtcHR5KCkpOworICAgICAgICBSdW5Mb29wOjpjdXJy
ZW50KCkuc3RvcCgpOworICAgIH0KIH0KIAogdm9pZCBEZWZlcnJlZFdvcmtUaW1lcjo6cnVuUnVu
TG9vcCgpCkBAIC0xMDIsMTUgKzExOSwxNSBAQCB2b2lkIERlZmVycmVkV29ya1RpbWVyOjphZGRQ
ZW5kaW5nV29yayhWTSYgdm0sIFRpY2tldCB0aWNrZXQsIFZlY3RvcjxTdHJvbmc8SlNDZQogICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkZXBlbmRlbmNpZXMuc2l6ZSgpOyArK2kpCiAgICAg
ICAgIEFTU0VSVChkZXBlbmRlbmNpZXNbaV0uZ2V0KCkgIT0gdGlja2V0KTsKIAotICAgIGF1dG8g
cmVzdWx0ID0gbV9wZW5kaW5nVGlja2V0cy5hZGQodGlja2V0LCBWZWN0b3I8U3Ryb25nPEpTQ2Vs
bD4+KCkpOwotICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkgewotICAgICAgICBkYXRhTG9nTG5J
ZihEZWZlcnJlZFdvcmtUaW1lckludGVybmFsOjp2ZXJib3NlLCAiQWRkaW5nIG5ldyBwZW5kaW5n
IHRpY2tldDogIiwgUmF3UG9pbnRlcih0aWNrZXQpKTsKKyAgICBhdXRvIGdsb2JhbE9iamVjdCA9
IHRpY2tldC0+Z2xvYmFsT2JqZWN0KCk7CisgICAgYXV0byByZXN1bHQgPSBtX3BlbmRpbmdUaWNr
ZXRzLmVuc3VyZSh0aWNrZXQsIFsmXSB7CisgICAgICAgIEpTT2JqZWN0KiBzY3JpcHRFeGVjdXRp
b25Pd25lciA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+Y3VycmVu
dFNjcmlwdEV4ZWN1dGlvbk93bmVyKGdsb2JhbE9iamVjdCk7CiAgICAgICAgIGRlcGVuZGVuY2ll
cy5hcHBlbmQoU3Ryb25nPEpTQ2VsbD4odm0sIHRpY2tldCkpOwotICAgICAgICByZXN1bHQuaXRl
cmF0b3ItPnZhbHVlID0gV1RGTW92ZShkZXBlbmRlbmNpZXMpOwotICAgIH0gZWxzZSB7Ci0gICAg
ICAgIGRhdGFMb2dMbklmKERlZmVycmVkV29ya1RpbWVySW50ZXJuYWw6OnZlcmJvc2UsICJBZGRp
bmcgbmV3IGRlcGVuZGVuY2llcyBmb3IgdGlja2V0OiAiLCBSYXdQb2ludGVyKHRpY2tldCkpOwot
ICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmFwcGVuZFZlY3RvcihkZXBlbmRlbmNpZXMp
OwotICAgIH0KKyAgICAgICAgcmV0dXJuIFRpY2tldERhdGEgeyBXVEZNb3ZlKGRlcGVuZGVuY2ll
cyksIFN0cm9uZzxKU09iamVjdD4odm0sIHNjcmlwdEV4ZWN1dGlvbk93bmVyKSB9OworICAgIH0p
OworICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+
dmFsdWUuZGVwZW5kZW5jaWVzLmFwcGVuZFZlY3RvcihXVEZNb3ZlKGRlcGVuZGVuY2llcykpOwor
ICAgIGRhdGFMb2dMbklmKERlZmVycmVkV29ya1RpbWVySW50ZXJuYWw6OnZlcmJvc2UsICJBZGRp
bmcgbmV3IHBlbmRpbmcgdGlja2V0OiAiLCBSYXdQb2ludGVyKHRpY2tldCkpOwogfQogCiBib29s
IERlZmVycmVkV29ya1RpbWVyOjpoYXNQZW5kaW5nV29yayhUaWNrZXQgdGlja2V0KQpAQCAtMTI1
LDcgKzE0Miw3IEBAIGJvb2wgRGVmZXJyZWRXb3JrVGltZXI6Omhhc0RlcGVuZGFuY3lJblBlbmRp
bmdXb3JrKFRpY2tldCB0aWNrZXQsIEpTQ2VsbCogZGVwZW5kCiAgICAgQVNTRVJUKG1fcGVuZGlu
Z1RpY2tldHMuY29udGFpbnModGlja2V0KSk7CiAKICAgICBhdXRvIHJlc3VsdCA9IG1fcGVuZGlu
Z1RpY2tldHMuZ2V0KHRpY2tldCk7Ci0gICAgcmV0dXJuIHJlc3VsdC5jb250YWlucyhkZXBlbmRl
bmN5KTsKKyAgICByZXR1cm4gcmVzdWx0LmRlcGVuZGVuY2llcy5jb250YWlucyhkZXBlbmRlbmN5
KTsKIH0KIAogYm9vbCBEZWZlcnJlZFdvcmtUaW1lcjo6Y2FuY2VsUGVuZGluZ1dvcmsoVGlja2V0
IHRpY2tldCkKQEAgLTE0Nyw0ICsxNjQsMTIgQEAgdm9pZCBEZWZlcnJlZFdvcmtUaW1lcjo6c2No
ZWR1bGVXb3JrU29vbihUaWNrZXQgdGlja2V0LCBUYXNrJiYgdGFzaykKICAgICAgICAgc2V0VGlt
ZVVudGlsRmlyZSgwX3MpOwogfQogCit2b2lkIERlZmVycmVkV29ya1RpbWVyOjpzY3JpcHRFeGVj
dXRpb25Pd25lcldhc1Vuc3VzcGVuZGVkKCkKK3sKKyAgICBBU1NFUlQoIW1fY3VycmVudGx5UnVu
bmluZ1Rhc2spOworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fdGFza0xvY2spOworICAgIGlmICgh
aXNTY2hlZHVsZWQoKSAmJiBtX3Rhc2tzLnNpemUoKSkKKyAgICAgICAgc2V0VGltZVVudGlsRmly
ZSgwX3MpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0RlZmVycmVkV29ya1RpbWVyLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9EZWZlcnJlZFdvcmtUaW1lci5oCmluZGV4IDI3MWE4YWJjOWVjNDI4NTZl
OWRkM2ExY2MzYmM1Y2U4NmRiNGY2OTMuLjc4MzIyNjYxYTNlYTU0NzAyMzU1NmFhZDg1YmUyODg4
MGFkMjgwZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RlZmVy
cmVkV29ya1RpbWVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVmZXJy
ZWRXb3JrVGltZXIuaApAQCAtNTEsMTggKzUxLDE5IEBAIHB1YmxpYzoKICAgICBib29sIGhhc0Rl
cGVuZGFuY3lJblBlbmRpbmdXb3JrKFRpY2tldCwgSlNDZWxsKiBkZXBlbmRlbmN5KTsKICAgICBi
b29sIGNhbmNlbFBlbmRpbmdXb3JrKFRpY2tldCk7CiAKKyAgICAvLyBJZiB0aGUgc2NyaXB0IGV4
ZWN1dGlvbiBvd25lciB5b3VyIHRpY2tldCBpcyBhc3NvY2lhdGVkIHdpdGggZ2V0cyBjYW5jZWxl
ZAorICAgIC8vIHRoZSBUYXNrIHdpbGwgbm90IGJlIGNhbGxlZCBhbmQgd2lsbCBiZSBkZWFsbG9j
YXRlZC4gU28gaXQncyBpbXBvcnRhbnQKKyAgICAvLyB0byBtYWtlIHN1cmUgeW91ciBtZW1vcnkg
b3duZXJzaGlwIG1vZGVsIHdvbid0IGxlYWsgbWVtb3J5IHdoZW4KKyAgICAvLyB0aGlzIG9jY3Vy
cy4gVGhlIGVhc2llc3Qgd2F5IGlzIHRvIG1ha2Ugc3VyZSBldmVyeXRoaW5nIGlzIGVpdGhlciBv
d25lZAorICAgIC8vIGJ5IGEgR0MnZCB2YWx1ZSBpbiBkZXBlbmRlbmNpZXMgb3IgYnkgdGhlIFRh
c2sgbGFtYmRhLgogICAgIHVzaW5nIFRhc2sgPSBGdW5jdGlvbjx2b2lkKCk+OwogICAgIHZvaWQg
c2NoZWR1bGVXb3JrU29vbihUaWNrZXQsIFRhc2smJik7CisgICAgdm9pZCBzY3JpcHRFeGVjdXRp
b25Pd25lcldhc1Vuc3VzcGVuZGVkKCk7CiAKICAgICB2b2lkIHN0b3BSdW5uaW5nVGFza3MoKSB7
IG1fcnVuVGFza3MgPSBmYWxzZTsgfQotCiAgICAgdm9pZCBydW5SdW5Mb29wKCk7CiAKLSAgICBz
dGF0aWMgUmVmPERlZmVycmVkV29ya1RpbWVyPiBjcmVhdGUoVk0mIHZtKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGVmZXJyZWRXb3JrVGltZXIodm0pKTsKLSAgICB9Ci0K
KyAgICBzdGF0aWMgUmVmPERlZmVycmVkV29ya1RpbWVyPiBjcmVhdGUoVk0mIHZtKSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IERlZmVycmVkV29ya1RpbWVyKHZtKSk7IH0KIHByaXZhdGU6CiAgICAg
RGVmZXJyZWRXb3JrVGltZXIoVk0mKTsKIApAQCAtNzEsNyArNzIsMTEgQEAgcHJpdmF0ZToKICAg
ICBib29sIG1fc2hvdWxkU3RvcFJ1bkxvb3BXaGVuQWxsVGlja2V0c0ZpbmlzaCB7IGZhbHNlIH07
CiAgICAgYm9vbCBtX2N1cnJlbnRseVJ1bm5pbmdUYXNrIHsgZmFsc2UgfTsKICAgICBEZXF1ZTxz
dGQ6OnR1cGxlPFRpY2tldCwgVGFzaz4+IG1fdGFza3M7Ci0gICAgSGFzaE1hcDxUaWNrZXQsIFZl
Y3RvcjxTdHJvbmc8SlNDZWxsPj4+IG1fcGVuZGluZ1RpY2tldHM7CisgICAgc3RydWN0IFRpY2tl
dERhdGEgeworICAgICAgICBWZWN0b3I8U3Ryb25nPEpTQ2VsbD4+IGRlcGVuZGVuY2llczsKKyAg
ICAgICAgU3Ryb25nPEpTT2JqZWN0PiBzY3JpcHRFeGVjdXRpb25Pd25lcjsKKyAgICB9OworICAg
IEhhc2hNYXA8VGlja2V0LCBUaWNrZXREYXRhPiBtX3BlbmRpbmdUaWNrZXRzOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRmluYWxpemF0aW9uUmVnaXN0cnkuY3BwCmluZGV4IDU0OWI5ZDkwOTI1YzYyNzhkMTcx
ZjNjZTc4MDE5OWFjYTU0ODhhMDIuLjRlMjg4MjlkNTcyZWQzYmQ0OTU3YjAwYWUxNDZiNDJhMTNh
MWVjOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRmluYWxp
emF0aW9uUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RmluYWxpemF0aW9uUmVnaXN0cnkuY3BwCkBAIC00MiwxMSArNDIsMTEgQEAgU3RydWN0dXJlKiBK
U0ZpbmFsaXphdGlvblJlZ2lzdHJ5OjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmEKIEpTRmluYWxpemF0aW9uUmVnaXN0cnkqIEpTRmluYWxpemF0aW9uUmVnaXN0
cnk6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU09iamVjdCogY2FsbGJh
Y2spCiB7CiAgICAgSlNGaW5hbGl6YXRpb25SZWdpc3RyeSogaW5zdGFuY2UgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Pih2bS5oZWFwKSkgSlNGaW5h
bGl6YXRpb25SZWdpc3RyeSh2bSwgc3RydWN0dXJlKTsKLSAgICBpbnN0YW5jZS0+ZmluaXNoQ3Jl
YXRpb24odm0sIGNhbGxiYWNrKTsKKyAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24odm0sIHN0
cnVjdHVyZS0+Z2xvYmFsT2JqZWN0KCksIGNhbGxiYWNrKTsKICAgICByZXR1cm4gaW5zdGFuY2U7
CiB9CiAKLXZvaWQgSlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBKU09iamVjdCogY2FsbGJhY2spCit2b2lkIEpTRmluYWxpemF0aW9uUmVnaXN0cnk6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3Qq
IGNhbGxiYWNrKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICBBU1NFUlQo
Y2FsbGJhY2stPmlzQ2FsbGFibGUodm0pKTsKQEAgLTU0LDYgKzU0LDEwIEBAIHZvaWQgSlNGaW5h
bGl6YXRpb25SZWdpc3RyeTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU09iamVjdCogY2FsbGJh
Y2spCiAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgdmFsdWVzLnNpemUoKTsg
KytpbmRleCkKICAgICAgICAgQmFzZTo6aW50ZXJuYWxGaWVsZChpbmRleCkuc2V0V2l0aG91dFdy
aXRlQmFycmllcih2YWx1ZXNbaW5kZXhdKTsKICAgICBpbnRlcm5hbEZpZWxkKEZpZWxkOjpDYWxs
YmFjaykuc2V0V2l0aG91dFdyaXRlQmFycmllcihjYWxsYmFjayk7CisKKyAgICAvLyBNYWtlIHN1
cmUgd2UgaW5pdCB0aGUgRE9NIHdyYXBwZXIgZm9yIG91ciBkb2N1bWVudCBzaW5jZSBpdCBtdXN0
IGJlIGFsbG9jYXRlZCBiZWZvcmUgZmluYWxpemVVbmNvbmRpdGlvbmFsbHkgaXMgY2FsbGVkLiBm
aW5hbGl6ZVVuY29uZGl0aW9uYWxseSwKKyAgICAvLyBpcyBjYWxsZWQgZHVyaW5nIHRoZSBHQyBm
bGlwIHNvIG5vIEpTIG9iamVjdHMgY2FuIGJlIGFsbG9jYXRlZCB0aGVyZS4gVGhpcyBvbmx5IHdv
cmtzIGJlY2F1c2Ugd2Ugbm8gbG9uZ2VyIHdlYWtseSBob2xkIG9uIHRvIERPTSB3cmFwcGVycy4K
KyAgICBnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPmN1cnJlbnRTY3Jp
cHRFeGVjdXRpb25Pd25lcihnbG9iYWxPYmplY3QpOwogfQogCiB2b2lkIEpTRmluYWxpemF0aW9u
UmVnaXN0cnk6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRv
cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRmluYWxpemF0
aW9uUmVnaXN0cnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRmluYWxpemF0
aW9uUmVnaXN0cnkuaAppbmRleCA2ZDVjZDM4Y2YwYmE3ZDgyOTkxY2RiNWMwYWFhMWZmNjQ0MmFm
NjMzLi43NWQ2NzZiYjg1Y2ZjY2YwZmFmNmU2MDBlMGNmMTJlNDAxZDhjOWZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGaW5hbGl6YXRpb25SZWdpc3Ry
eS5oCkBAIC04OSw3ICs4OSw3IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIEpTX0VY
UE9SVF9QUklWQVRFIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU09iamVjdCogY2FsbGJhY2sp
OworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2Jh
bE9iamVjdCosIEpTT2JqZWN0KiBjYWxsYmFjayk7CiAKICAgICBzdGF0aWMgU3RyaW5nIHRvU3Ry
aW5nTmFtZShjb25zdCBKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0Kik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCAwNjliYjgy
ODEyYTZmNGE1YzMyZmRmNDUyNDJlNzEzOTg5MDQ2MDA3Li44ZmQzNDEwN2U3NTczN2EyZWFkYmY2
ZTZlNjE3ZTc4ZjFhZmI3NmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC00MTIsNiArNDEyLDggQEAgY29uc3QgR2xvYmFsT2Jq
ZWN0TWV0aG9kVGFibGUgSlNHbG9iYWxPYmplY3Q6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUg
PSB7CiAgICAgbnVsbHB0ciwgLy8gbW9kdWxlTG9hZGVyRXZhbHVhdGUKICAgICBudWxscHRyLCAv
LyBwcm9taXNlUmVqZWN0aW9uVHJhY2tlcgogICAgICZyZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0
RXZlbnRMb29wLAorICAgICZjdXJyZW50U2NyaXB0RXhlY3V0aW9uT3duZXIsCisgICAgJnNjcmlw
dEV4ZWN1dGlvblN0YXR1cywKICAgICBudWxscHRyLCAvLyBkZWZhdWx0TGFuZ3VhZ2UKICAgICBu
dWxscHRyLCAvLyBjb21waWxlU3RyZWFtaW5nCiAgICAgbnVsbHB0ciwgLy8gaW5zdGFudGlhdGVT
dHJlYW1pbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oCmluZGV4IDhlOWIxNjY5OWY1ZmYzMmQ4Mjk5YWI3OTA1MTJiMWU2NzZhNjc4M2IuLjhmYzc3
ZDNjMjJlYmNlZGRhOTE5OWZlODM3NDZkNjM5MDNhNGM3YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMTk1LDYgKzE5NSwxMiBAQCBl
bnVtIGNsYXNzIEpTUHJvbWlzZVJlamVjdGlvbk9wZXJhdGlvbiA6IHVuc2lnbmVkIHsKICAgICBI
YW5kbGUsIC8vIFdoZW4gYSBoYW5kbGVyIGlzIGFkZGVkIHRvIGEgcmVqZWN0ZWQgcHJvbWlzZSBm
b3IgdGhlIGZpcnN0IHRpbWUuCiB9OwogCitlbnVtIGNsYXNzIFNjcmlwdEV4ZWN1dGlvblN0YXR1
cyB7CisgICAgUnVubmluZywKKyAgICBTdXNwZW5kZWQsCisgICAgQ2FuY2VsZWQsCit9OworCiBz
dHJ1Y3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgewogICAgIHR5cGVkZWYgYm9vbCAoKlN1cHBv
cnRzUmljaFNvdXJjZUluZm9GdW5jdGlvblB0cikoY29uc3QgSlNHbG9iYWxPYmplY3QqKTsKICAg
ICBTdXBwb3J0c1JpY2hTb3VyY2VJbmZvRnVuY3Rpb25QdHIgc3VwcG9ydHNSaWNoU291cmNlSW5m
bzsKQEAgLTIzMiw2ICsyMzgsMTMgQEAgc3RydWN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIHsK
ICAgICB0eXBlZGVmIHZvaWQgKCpSZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wUHRy
KShKU0dsb2JhbE9iamVjdCosIEV4Y2VwdGlvbiopOwogICAgIFJlcG9ydFVuY2F1Z2h0RXhjZXB0
aW9uQXRFdmVudExvb3BQdHIgcmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcDsKIAor
ICAgIC8vIEZvciBtb3N0IGNvbnRleHRzIHRoaXMgaXMganVzdCB0aGUgZ2xvYmFsIG9iamVjdC4g
Rm9yIEpTRE9NV2luZG93LCBob3dldmVyLCB0aGlzIGlzIHRoZSBKU0RvY3VtZW50LgorICAgIHR5
cGVkZWYgSlNPYmplY3QqICgqQ3VycmVudFNjcmlwdEV4ZWN1dGlvbk93bmVyUHRyKShKU0dsb2Jh
bE9iamVjdCopOworICAgIEN1cnJlbnRTY3JpcHRFeGVjdXRpb25Pd25lclB0ciBjdXJyZW50U2Ny
aXB0RXhlY3V0aW9uT3duZXI7CisKKyAgICB0eXBlZGVmIFNjcmlwdEV4ZWN1dGlvblN0YXR1cyAo
KlNjcmlwdEV4ZWN1dGlvblN0YXR1c1B0cikoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogc2Ny
aXB0RXhlY3V0aW9uT3duZXIpOworICAgIFNjcmlwdEV4ZWN1dGlvblN0YXR1c1B0ciBzY3JpcHRF
eGVjdXRpb25TdGF0dXM7CisKICAgICB0eXBlZGVmIFN0cmluZyAoKkRlZmF1bHRMYW5ndWFnZUZ1
bmN0aW9uUHRyKSgpOwogICAgIERlZmF1bHRMYW5ndWFnZUZ1bmN0aW9uUHRyIGRlZmF1bHRMYW5n
dWFnZTsKIApAQCAtODUxLDYgKzg2NCw4IEBAIHB1YmxpYzoKICAgICBKU09iamVjdCogdW5oYW5k
bGVkUmVqZWN0aW9uQ2FsbGJhY2soKSBjb25zdCB7IHJldHVybiBtX3VuaGFuZGxlZFJlamVjdGlv
bkNhbGxiYWNrLmdldCgpOyB9CiAKICAgICBzdGF0aWMgdm9pZCByZXBvcnRVbmNhdWdodEV4Y2Vw
dGlvbkF0RXZlbnRMb29wKEpTR2xvYmFsT2JqZWN0KiwgRXhjZXB0aW9uKik7CisgICAgc3RhdGlj
IEpTT2JqZWN0KiBjdXJyZW50U2NyaXB0RXhlY3V0aW9uT3duZXIoSlNHbG9iYWxPYmplY3QqIGds
b2JhbCkgeyByZXR1cm4gZ2xvYmFsOyB9CisgICAgc3RhdGljIFNjcmlwdEV4ZWN1dGlvblN0YXR1
cyBzY3JpcHRFeGVjdXRpb25TdGF0dXMoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCopIHsgcmV0
dXJuIFNjcmlwdEV4ZWN1dGlvblN0YXR1czo6UnVubmluZzsgfQogCiAgICAgSlNPYmplY3QqIGFy
cmF5QnVmZmVyQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2FycmF5QnVmZmVyU3RydWN0
dXJlLmNvbnN0cnVjdG9yKHRoaXMpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0xv
Y2tlci5oIGIvU291cmNlL1dURi93dGYvTG9ja2VyLmgKaW5kZXggYTc4OWUwM2UwOTU4ZWNiZTRm
MzJmNGQ5NGYzMTYxMzU0NGJkMzY4OC4uYWU3MjQ5Mzk2NGNiN2Q1N2ZhZTAzZGIwYTdkNjgxMWE4
Y2RjOGY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTG9ja2VyLmgKKysrIGIvU291cmNl
L1dURi93dGYvTG9ja2VyLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlIDx3dGYvQXNzZXJ0
aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBpbGVy
Lmg+CisjaW5jbHVkZSA8d3RmL0ZvcmJpZEhlYXBBbGxvY2F0aW9uLmg+CiAjaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhbml0aXplclN1cHBvcnQuaD4K
IApAQCAtNTEsNyArNTIsMTAgQEAgcHJvdGVjdGVkOgogICAgIH0KIH07CiAKLXRlbXBsYXRlIDx0
eXBlbmFtZSBUPiBjbGFzcyBMb2NrZXIgOiBwdWJsaWMgQWJzdHJhY3RMb2NrZXIgewordGVtcGxh
dGU8dHlwZW5hbWUgVD4gY2xhc3MgRHJvcExvY2tTY29wZTsKKwordGVtcGxhdGU8dHlwZW5hbWUg
VD4KK2NsYXNzIExvY2tlciA6IHB1YmxpYyBBYnN0cmFjdExvY2tlciB7CiBwdWJsaWM6CiAgICAg
ZXhwbGljaXQgTG9ja2VyKFQmIGxvY2thYmxlKSA6IG1fbG9ja2FibGUoJmxvY2thYmxlKSB7IGxv
Y2soKTsgfQogICAgIGV4cGxpY2l0IExvY2tlcihUKiBsb2NrYWJsZSkgOiBtX2xvY2thYmxlKGxv
Y2thYmxlKSB7IGxvY2soKTsgfQpAQCAtNjMsMTUgKzY3LDExIEBAIHB1YmxpYzoKICAgICAvLyBi
ZSBhY2Nlc3NlZCBjb25jdXJyZW50bHkuCiAgICAgTG9ja2VyKE5vTG9ja2luZ05lY2Vzc2FyeVRh
ZykgOiBtX2xvY2thYmxlKG51bGxwdHIpIHsgfQogICAgIAotICAgIExvY2tlcihpbnQpID0gZGVs
ZXRlOworICAgIExvY2tlcihzdGQ6OnVuZGVybHlpbmdfdHlwZV90PE5vTG9ja2luZ05lY2Vzc2Fy
eVRhZz4pID0gZGVsZXRlOwogCiAgICAgfkxvY2tlcigpCiAgICAgewotICAgICAgICBjb21waWxl
ckZlbmNlKCk7Ci0gICAgICAgIGlmIChtX2xvY2thYmxlKSB7Ci0gICAgICAgICAgICBUU0FOX0FO
Tk9UQVRFX0hBUFBFTlNfQkVGT1JFKG1fbG9ja2FibGUpOwotICAgICAgICAgICAgbV9sb2NrYWJs
ZS0+dW5sb2NrKCk7Ci0gICAgICAgIH0KKyAgICAgICAgdW5sb2NrKCk7CiAgICAgfQogICAgIAog
ICAgIHN0YXRpYyBMb2NrZXIgdHJ5TG9jayhUJiBsb2NrYWJsZSkKQEAgLTg4LDggKzg4LDcgQEAg
cHVibGljOgogICAgIAogICAgIHZvaWQgdW5sb2NrRWFybHkoKQogICAgIHsKLSAgICAgICAgVFNB
Tl9BTk5PVEFURV9IQVBQRU5TX0JFRk9SRShtX2xvY2thYmxlKTsKLSAgICAgICAgbV9sb2NrYWJs
ZS0+dW5sb2NrKCk7CisgICAgICAgIHVubG9jaygpOwogICAgICAgICBtX2xvY2thYmxlID0gbnVs
bHB0cjsKICAgICB9CiAgICAgCkBAIC05OCwyMSArOTcsMzEgQEAgcHVibGljOgogICAgIExvY2tl
cihMb2NrZXImJiBvdGhlcikKICAgICAgICAgOiBtX2xvY2thYmxlKG90aGVyLm1fbG9ja2FibGUp
CiAgICAgeworICAgICAgICBBU1NFUlQoJm90aGVyICE9IHRoaXMpOwogICAgICAgICBvdGhlci5t
X2xvY2thYmxlID0gbnVsbHB0cjsKICAgICB9CiAgICAgCiAgICAgTG9ja2VyJiBvcGVyYXRvcj0o
TG9ja2VyJiYgb3RoZXIpCiAgICAgewotICAgICAgICBpZiAobV9sb2NrYWJsZSkgewotICAgICAg
ICAgICAgVFNBTl9BTk5PVEFURV9IQVBQRU5TX0JFRk9SRShtX2xvY2thYmxlKTsKLSAgICAgICAg
ICAgIG1fbG9ja2FibGUtPnVubG9jaygpOwotICAgICAgICB9CisgICAgICAgIEFTU0VSVCgmb3Ro
ZXIgIT0gdGhpcyk7CiAgICAgICAgIG1fbG9ja2FibGUgPSBvdGhlci5tX2xvY2thYmxlOwogICAg
ICAgICBvdGhlci5tX2xvY2thYmxlID0gbnVsbHB0cjsKICAgICAgICAgcmV0dXJuICp0aGlzOwog
ICAgIH0KICAgICAKIHByaXZhdGU6CisgICAgdGVtcGxhdGU8dHlwZW5hbWU+CisgICAgZnJpZW5k
IGNsYXNzIERyb3BMb2NrU2NvcGU7CisKKyAgICB2b2lkIHVubG9jaygpCisgICAgeworICAgICAg
ICBjb21waWxlckZlbmNlKCk7CisgICAgICAgIGlmIChtX2xvY2thYmxlKSB7CisgICAgICAgICAg
ICBUU0FOX0FOTk9UQVRFX0hBUFBFTlNfQkVGT1JFKG1fbG9ja2FibGUpOworICAgICAgICAgICAg
bV9sb2NrYWJsZS0+dW5sb2NrKCk7CisgICAgICAgIH0KKyAgICB9CisKICAgICB2b2lkIGxvY2so
KQogICAgIHsKICAgICAgICAgaWYgKG1fbG9ja2FibGUpIHsKQEAgLTE1MSw2ICsxNjAsMjUgQEAg
TG9ja2VyPExvY2tUeXBlPiB0cnlIb2xkTG9jayhMb2NrVHlwZSYgbG9jaykKICAgICByZXR1cm4g
TG9ja2VyPExvY2tUeXBlPjo6dHJ5TG9jayhsb2NrKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUg
TG9ja1R5cGU+CitjbGFzcyBEcm9wTG9ja1Njb3BlIDogcHJpdmF0ZSBBYnN0cmFjdExvY2tlciB7
CisgICAgV1RGX0ZPUkJJRF9IRUFQX0FMTE9DQVRJT04oRHJvcExvY2tTY29wZSk7CitwdWJsaWM6
CisgICAgRHJvcExvY2tTY29wZShMb2NrZXI8TG9ja1R5cGU+JiBsb2NrKQorICAgICAgICA6IG1f
bG9jayhsb2NrKQorICAgIHsKKyAgICAgICAgbV9sb2NrLnVubG9jaygpOworICAgIH0KKworICAg
IH5Ecm9wTG9ja1Njb3BlKCkKKyAgICB7CisgICAgICAgIG1fbG9jay5sb2NrKCk7CisgICAgfQor
Citwcml2YXRlOgorICAgIExvY2tlcjxMb2NrVHlwZT4mIG1fbG9jazsKK307CisKIH0KIAogdXNp
bmcgV1RGOjpBYnN0cmFjdExvY2tlcjsKQEAgLTE1OSwzICsxODcsNCBAQCB1c2luZyBXVEY6Ok5v
TG9ja2luZ05lY2Vzc2FyeVRhZzsKIHVzaW5nIFdURjo6Tm9Mb2NraW5nTmVjZXNzYXJ5OwogdXNp
bmcgV1RGOjpob2xkTG9jazsKIHVzaW5nIFdURjo6aG9sZExvY2tJZjsKK3VzaW5nIFdURjo6RHJv
cExvY2tTY29wZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V2luZG93QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jh
c2UuY3BwCmluZGV4IGY5M2UzZmQzMWM2NWU0YjJlNTIyNzQ1Nzk4NzNhYWExZGM0ZjcxNmMuLjk5
ODkwZmI0Y2U1YWRlMWQzNWYzOTRlNjY0ZGI3MjQwZDZlMjZlNTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcApAQCAtODAsNiArODAsOCBAQCBj
b25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBKU0RPTVdpbmRvd0Jhc2U6OnNfZ2xvYmFsT2Jq
ZWN0TWV0aG9kVGFibGUgPSB7CiAgICAgJm1vZHVsZUxvYWRlckV2YWx1YXRlLAogICAgICZwcm9t
aXNlUmVqZWN0aW9uVHJhY2tlciwKICAgICAmcmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50
TG9vcCwKKyAgICAmY3VycmVudFNjcmlwdEV4ZWN1dGlvbk93bmVyLAorICAgICZzY3JpcHRFeGVj
dXRpb25TdGF0dXMsCiAgICAgJmRlZmF1bHRMYW5ndWFnZSwKICNpZiBFTkFCTEUoV0VCQVNTRU1C
TFkpCiAgICAgJmNvbXBpbGVTdHJlYW1pbmcsCkBAIC0yMzEsNiArMjMzLDE5IEBAIHZvaWQgSlNE
T01XaW5kb3dCYXNlOjpxdWV1ZU1pY3JvdGFza1RvRXZlbnRMb29wKEpTR2xvYmFsT2JqZWN0JiBv
YmplY3QsIFJlZjxKU0M6CiAgICAgfSk7CiB9CiAKK0pTQzo6SlNPYmplY3QqIEpTRE9NV2luZG93
QmFzZTo6Y3VycmVudFNjcmlwdEV4ZWN1dGlvbk93bmVyKEpTR2xvYmFsT2JqZWN0KiBvYmplY3Qp
Cit7CisgICAgSlNET01XaW5kb3dCYXNlKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNET01X
aW5kb3dCYXNlKj4ob2JqZWN0KTsKKworICAgIHJldHVybiBqc0Nhc3Q8SlNPYmplY3QqPih0b0pT
KHRoaXNPYmplY3QsIHRoaXNPYmplY3QsIHRoaXNPYmplY3QtPndyYXBwZWQoKS5kb2N1bWVudCgp
KSk7Cit9CisKK0pTQzo6U2NyaXB0RXhlY3V0aW9uU3RhdHVzIEpTRE9NV2luZG93QmFzZTo6c2Ny
aXB0RXhlY3V0aW9uU3RhdHVzKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkpTT2JqZWN0KiBv
d25lcikKK3sKKyAgICBhdXRvKiBkb2N1bWVudCA9IGpzQ2FzdDxKU0RvY3VtZW50Kj4ob3duZXIp
OworICAgIHJldHVybiBkb2N1bWVudC0+d3JhcHBlZCgpLmpzY1NjcmlwdEV4ZWN1dGlvblN0YXR1
cygpOworfQorCiB2b2lkIEpTRE9NV2luZG93QmFzZTo6d2lsbFJlbW92ZUZyb21XaW5kb3dQcm94
eSgpCiB7CiAgICAgc2V0Q3VycmVudEV2ZW50KDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd0Jhc2UuaAppbmRleCBlYzZkZGMxNzAyMTA4ZTk5Y2Y5OWRjMzYzMzVl
MjVlMDA2NDVkODVhLi4xMDUwM2ZlMzljODlkZTYzMThlM2Y3Mjg3YmFjNDVkNzc5NTIyY2RiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaApAQCAtNzgs
NiArNzgsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJydXB0U2NyaXB0
QmVmb3JlVGltZW91dChjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAgICAgc3RhdGljIEpT
Qzo6UnVudGltZUZsYWdzIGphdmFTY3JpcHRSdW50aW1lRmxhZ3MoY29uc3QgSlNDOjpKU0dsb2Jh
bE9iamVjdCopOwogICAgIHN0YXRpYyB2b2lkIHF1ZXVlTWljcm90YXNrVG9FdmVudExvb3AoSlND
OjpKU0dsb2JhbE9iamVjdCYsIFJlZjxKU0M6Ok1pY3JvdGFzaz4mJik7CisgICAgc3RhdGljIEpT
Qzo6SlNPYmplY3QqIGN1cnJlbnRTY3JpcHRFeGVjdXRpb25Pd25lcihKU0M6OkpTR2xvYmFsT2Jq
ZWN0Kik7CisgICAgc3RhdGljIEpTQzo6U2NyaXB0RXhlY3V0aW9uU3RhdHVzIHNjcmlwdEV4ZWN1
dGlvblN0YXR1cyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpKU09iamVjdCopOwogCiAgICAg
dm9pZCBwcmludEVycm9yTWVzc2FnZShjb25zdCBTdHJpbmcmKSBjb25zdDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyQ2FjaGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlckNhY2hlLmgKaW5kZXggYWM2OTdhZmQ3
MmFlOTI3NGNhNDJlNzIyMDU4ZTRkZGE4YTc5MmYwZS4uYWVmMTJiZDIzMDI1ZTcwZjljZDczMDFl
NjlmOGZjOWYyMjE1OWYzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XcmFwcGVyQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVdyYXBwZXJDYWNoZS5oCkBAIC01OCw2ICs1OCw4IEBAIGJvb2wgY2xlYXJJbmxpbmVDYWNoZWRX
cmFwcGVyKERPTVdyYXBwZXJXb3JsZCYsIHZvaWQqLCBKU0RPTU9iamVjdCopOwogYm9vbCBjbGVh
cklubGluZUNhY2hlZFdyYXBwZXIoRE9NV3JhcHBlcldvcmxkJiwgU2NyaXB0V3JhcHBhYmxlKiwg
SlNET01PYmplY3QqIHdyYXBwZXIpOwogYm9vbCBjbGVhcklubGluZUNhY2hlZFdyYXBwZXIoRE9N
V3JhcHBlcldvcmxkJiwgSlNDOjpBcnJheUJ1ZmZlciosIEpTQzo6SlNBcnJheUJ1ZmZlciogd3Jh
cHBlcik7CiAKK3RlbXBsYXRlPHR5cGVuYW1lIERPTUNsYXNzPiBKU0M6OkpTT2JqZWN0KiBnZXRP
ckNyZWF0ZVdyYXBwZXIoRE9NV3JhcHBlcldvcmxkJiwgRE9NQ2xhc3MmKTsKKwogdGVtcGxhdGU8
dHlwZW5hbWUgRE9NQ2xhc3M+IEpTQzo6SlNPYmplY3QqIGdldENhY2hlZFdyYXBwZXIoRE9NV3Jh
cHBlcldvcmxkJiwgRE9NQ2xhc3MmKTsKIHRlbXBsYXRlPHR5cGVuYW1lIERPTUNsYXNzPiBpbmxp
bmUgSlNDOjpKU09iamVjdCogZ2V0Q2FjaGVkV3JhcHBlcihET01XcmFwcGVyV29ybGQmIHdvcmxk
LCBSZWY8RE9NQ2xhc3M+JiBvYmplY3QpIHsgcmV0dXJuIGdldENhY2hlZFdyYXBwZXIod29ybGQs
IG9iamVjdC5nZXQoKSk7IH0KIHRlbXBsYXRlPHR5cGVuYW1lIERPTUNsYXNzLCB0eXBlbmFtZSBX
cmFwcGVyQ2xhc3M+IHZvaWQgY2FjaGVXcmFwcGVyKERPTVdyYXBwZXJXb3JsZCYsIERPTUNsYXNz
KiwgV3JhcHBlckNsYXNzKik7CkBAIC02NSw2ICs2Nyw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIERP
TUNsYXNzLCB0eXBlbmFtZSBXcmFwcGVyQ2xhc3M+IHZvaWQgdW5jYWNoZVdyYXBwZXIoRE9NV3Jh
cHBlCiB0ZW1wbGF0ZTx0eXBlbmFtZSBET01DbGFzcywgdHlwZW5hbWUgVD4gYXV0byBjcmVhdGVX
cmFwcGVyKEpTRE9NR2xvYmFsT2JqZWN0KiwgUmVmPFQ+JiYpIC0+IHR5cGVuYW1lIHN0ZDo6ZW5h
YmxlX2lmPHN0ZDo6aXNfc2FtZTxET01DbGFzcywgVD46OnZhbHVlLCB0eXBlbmFtZSBKU0RPTVdy
YXBwZXJDb252ZXJ0ZXJUcmFpdHM8RE9NQ2xhc3M+OjpXcmFwcGVyQ2xhc3MqPjo6dHlwZTsKIHRl
bXBsYXRlPHR5cGVuYW1lIERPTUNsYXNzLCB0eXBlbmFtZSBUPiBhdXRvIGNyZWF0ZVdyYXBwZXIo
SlNET01HbG9iYWxPYmplY3QqLCBSZWY8VD4mJikgLT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8
IXN0ZDo6aXNfc2FtZTxET01DbGFzcywgVD46OnZhbHVlLCB0eXBlbmFtZSBKU0RPTVdyYXBwZXJD
b252ZXJ0ZXJUcmFpdHM8RE9NQ2xhc3M+OjpXcmFwcGVyQ2xhc3MqPjo6dHlwZTsKIAordGVtcGxh
dGU8dHlwZW5hbWUgRE9NQ2xhc3M+IEpTQzo6SlNWYWx1ZSB3cmFwKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBET01XcmFwcGVyV29ybGQmLCBET01DbGFzcyYpOwogdGVtcGxhdGU8dHlwZW5hbWUgRE9N
Q2xhc3M+IEpTQzo6SlNWYWx1ZSB3cmFwKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2Jh
bE9iamVjdCosIERPTUNsYXNzJik7CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCmluZGV4IGM0NGYyZmIzYTBiMDVk
YWFiMWE4YTllMmY4OWI1MmQ4NTFlYjQzNjguLjdlNDg5NmRhYTYyODAwMWY4NDNkZGNhY2EyZDVl
YTAzMzEzYmJkOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29y
a2VyR2xvYmFsU2NvcGVCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKQEAgLTY2LDYgKzY2LDggQEAgY29uc3QgR2xvYmFs
T2JqZWN0TWV0aG9kVGFibGUgSlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OnNfZ2xvYmFsT2JqZWN0
TWV0aG9kVGFibGUKICAgICBudWxscHRyLCAvLyBtb2R1bGVMb2FkZXJFdmFsdWF0ZQogICAgICZw
cm9taXNlUmVqZWN0aW9uVHJhY2tlciwKICAgICAmcmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2
ZW50TG9vcCwKKyAgICAmY3VycmVudFNjcmlwdEV4ZWN1dGlvbk93bmVyLAorICAgICZzY3JpcHRF
eGVjdXRpb25TdGF0dXMsCiAgICAgJmRlZmF1bHRMYW5ndWFnZSwKICAgICBudWxscHRyLCAvLyBj
b21waWxlU3RyZWFtaW5nCiAgICAgbnVsbHB0ciwgLy8gaW5zdGFudGlhdGVTdHJlYW1pbmcKQEAg
LTEzMSw2ICsxMzMsMTMgQEAgUnVudGltZUZsYWdzIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjpq
YXZhU2NyaXB0UnVudGltZUZsYWdzKGNvbnN0IEpTR2xvYmFsT2JqZWMKICAgICByZXR1cm4gdGhp
c09iamVjdC0+bV93cmFwcGVkLT50aHJlYWQoKS5ydW50aW1lRmxhZ3MoKTsKIH0KIAorSlNDOjpT
Y3JpcHRFeGVjdXRpb25TdGF0dXMgSlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OnNjcmlwdEV4ZWN1
dGlvblN0YXR1cyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNPYmpl
Y3QqIG93bmVyKQoreworICAgIEFTU0VSVF9VTlVTRUQob3duZXIsIGdsb2JhbE9iamVjdCA9PSBv
d25lcik7CisgICAgSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNXb3JrZXJHbG9iYWxTY29wZUJhc2UqPihnbG9iYWxPYmplY3QpOworICAgIHJldHVybiB0aGlz
T2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmpzY1NjcmlwdEV4ZWN1dGlvblN0YXR1
cygpOworfQorCiB2b2lkIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjpxdWV1ZU1pY3JvdGFza1Rv
RXZlbnRMb29wKEpTR2xvYmFsT2JqZWN0JiBvYmplY3QsIFJlZjxKU0M6Ok1pY3JvdGFzaz4mJiB0
YXNrKQogewogICAgIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlJiB0aGlzT2JqZWN0ID0gc3RhdGlj
X2Nhc3Q8SlNXb3JrZXJHbG9iYWxTY29wZUJhc2UmPihvYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmgKaW5kZXggOWZl
MTI5Y2RmNjFjMWEwOGJlYTQ4ZjcwMGQ0ZWFkY2M2ZWE2ZmYyMi4uZDQ0OTg3MTI5NDZhZTVmNmYw
MTg3ODY4NGU0Njk5N2IxZmVjMTdhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5oCkBAIC03Myw2ICs3Myw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcnJ1cHRTY3JpcHQoY29uc3QgSlNDOjpKU0ds
b2JhbE9iamVjdCopOwogICAgIHN0YXRpYyBib29sIHNob3VsZEludGVycnVwdFNjcmlwdEJlZm9y
ZVRpbWVvdXQoY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRpYyBKU0M6OlJ1
bnRpbWVGbGFncyBqYXZhU2NyaXB0UnVudGltZUZsYWdzKGNvbnN0IEpTQzo6SlNHbG9iYWxPYmpl
Y3QqKTsKKyAgICBzdGF0aWMgSlNDOjpTY3JpcHRFeGVjdXRpb25TdGF0dXMgc2NyaXB0RXhlY3V0
aW9uU3RhdHVzKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkpTT2JqZWN0Kik7CiAgICAgc3Rh
dGljIHZvaWQgcXVldWVNaWNyb3Rhc2tUb0V2ZW50TG9vcChKU0M6OkpTR2xvYmFsT2JqZWN0Jiwg
UmVmPEpTQzo6TWljcm90YXNrPiYmKTsKIAogICAgIHZvaWQgY2xlYXJET01HdWFyZGVkT2JqZWN0
cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrbGV0R2xv
YmFsU2NvcGVCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2xldEds
b2JhbFNjb3BlQmFzZS5jcHAKaW5kZXggYjE0YjgxNTQyZGI4ODllYzZkMjU5YmM1YjcwZWYyYTUw
OTljOTZkMS4uYzMzOTI2MjBiOWJkZjY0MzM0MTE4MGZlYmE5YTBiYTY2NDQ5ZmRmOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29w
ZUJhc2UuY3BwCkBAIC01OCw2ICs1OCw4IEBAIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxl
IEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJsCiAgICAg
bnVsbHB0ciwgLy8gbW9kdWxlTG9hZGVyRXZhbHVhdGUKICAgICAmcHJvbWlzZVJlamVjdGlvblRy
YWNrZXIsCiAgICAgJnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3AsCisgICAgJmN1
cnJlbnRTY3JpcHRFeGVjdXRpb25Pd25lciwKKyAgICAmc2NyaXB0RXhlY3V0aW9uU3RhdHVzLAog
ICAgICZkZWZhdWx0TGFuZ3VhZ2UsCiAgICAgbnVsbHB0ciwgLy8gY29tcGlsZVN0cmVhbWluZwog
ICAgIG51bGxwdHIsIC8vIGluc3RhbnRpYXRlU3RyZWFtaW5nCkBAIC0xMDIsNiArMTA0LDEzIEBA
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fd3JhcHBlZC5nZXQoKTsKIH0K
IAorSlNDOjpTY3JpcHRFeGVjdXRpb25TdGF0dXMgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpz
Y3JpcHRFeGVjdXRpb25TdGF0dXMoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0M6OkpTT2JqZWN0KiBvd25lcikKK3sKKyAgICBBU1NFUlRfVU5VU0VEKG93bmVyLCBnbG9iYWxP
YmplY3QgPT0gb3duZXIpOworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNXb3JrbGV0
R2xvYmFsU2NvcGVCYXNlKj4oZ2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4gdGhpc09iamVjdC0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5qc2NTY3JpcHRFeGVjdXRpb25TdGF0dXMoKTsKK30K
KwogYm9vbCBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OnN1cHBvcnRzUmljaFNvdXJjZUluZm8o
Y29uc3QgSlNHbG9iYWxPYmplY3QqIG9iamVjdCkKIHsKICAgICByZXR1cm4gSlNHbG9iYWxPYmpl
Y3Q6OnN1cHBvcnRzUmljaFNvdXJjZUluZm8ob2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmgKaW5kZXggOGZlZjky
MDFmZWRjMzYxZTkyNWNjODA2MmYyY2YyNmRhMzFjZWM2MC4uMzM5YTM1ZWEyZjQ4OWNhZTkxNTY3
N2QwYWE3N2EwMWYyMWYwZWJmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmgKQEAgLTYzLDYgKzYzLDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBib29sIHNob3VsZEludGVycnVwdFNjcmlwdChjb25zdCBKU0M6OkpTR2xv
YmFsT2JqZWN0Kik7CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJydXB0U2NyaXB0QmVmb3Jl
VGltZW91dChjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAgICAgc3RhdGljIEpTQzo6UnVu
dGltZUZsYWdzIGphdmFTY3JpcHRSdW50aW1lRmxhZ3MoY29uc3QgSlNDOjpKU0dsb2JhbE9iamVj
dCopOworICAgIHN0YXRpYyBKU0M6OlNjcmlwdEV4ZWN1dGlvblN0YXR1cyBzY3JpcHRFeGVjdXRp
b25TdGF0dXMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6SlNPYmplY3QqKTsKICAgICBzdGF0
aWMgdm9pZCBxdWV1ZU1pY3JvdGFza1RvRXZlbnRMb29wKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBS
ZWY8SlNDOjpNaWNyb3Rhc2s+JiYpOwogCiAgICAgdm9pZCBjbGVhckRPTUd1YXJkZWRPYmplY3Rz
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKaW5k
ZXggNzYyZDUzODFmNmQ0MGI1NGEwMDUzZDIzZTcxZjUxMzlmN2U1MmFiYi4uMjVlNGY4ODJiOGIw
MjM3MDNkOWVkMDExNjk1YmY3MzM4MzJhZjIyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcApAQCAtMzcsNiArMzcsOCBAQAogI2luY2x1ZGUgIkVy
cm9yRXZlbnQuaCIKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVk
ZSAiSlNET01XaW5kb3cuaCIKKyNpbmNsdWRlICJKU1dvcmtlckdsb2JhbFNjb3BlLmgiCisjaW5j
bHVkZSAiSlNXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJMZWdhY3lTY2hlbWVSZWdp
c3RyeS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCiAjaW5jbHVkZSAiTmF2aWdhdG9yLmgi
CkBAIC01MywxMiArNTUsMTQgQEAKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUu
aCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuaCIKICNpbmNsdWRlICJTZXR0aW5n
cy5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlICJXb3JrZXJH
bG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIldvcmtlck5hdmlnYXRvci5oIgogI2luY2x1ZGUgIldv
cmtlclRocmVhZC5oIgogI2luY2x1ZGUgIldvcmtsZXRHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUg
IldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ2F0
Y2hTY29wZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0RlZmVycmVkV29ya1RpbWVyLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRXhjZXB0aW9uLmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNQcm9taXNlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2NyaXB0Q2Fs
bFN0YWNrLmg+CkBAIC03MSwxMCArNzUsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBu
YW1lc3BhY2UgSW5zcGVjdG9yOwogCiBzdGF0aWMgTG9jayBhbGxTY3JpcHRFeGVjdXRpb25Db250
ZXh0c01hcExvY2s7Ci1zdGF0aWMgSGFzaE1hcDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRp
ZmllciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCo+JiBhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0
c01hcCgpCitzdGF0aWMgSGFzaE1hcDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCo+JiBhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcChj
b25zdCBMb2NrZXI8TG9jaz4mKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFw
PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
Kj4+IGNvbnRleHRzOwotICAgIEFTU0VSVChhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcExv
Y2suaXNMb2NrZWQoKSk7CiAgICAgcmV0dXJuIGNvbnRleHRzOwogfQogCkBAIC0xMDgsOCArMTEx
LDggQEAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6Y29udGV4dElkZW50aWZpZXIoKSBjb24KIAogICAgICAgICBtX2NvbnRleHRJZGVudGlm
aWVyID0gU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI6OmdlbmVyYXRlKCk7CiAKLSAg
ICAgICAgQVNTRVJUKCFhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcCgpLmNvbnRhaW5zKG1f
Y29udGV4dElkZW50aWZpZXIpKTsKLSAgICAgICAgYWxsU2NyaXB0RXhlY3V0aW9uQ29udGV4dHNN
YXAoKS5hZGQobV9jb250ZXh0SWRlbnRpZmllciwgY29uc3RfY2FzdDxTY3JpcHRFeGVjdXRpb25D
b250ZXh0Kj4odGhpcykpOworICAgICAgICBBU1NFUlQoIWFsbFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRzTWFwKGxvY2tlcikuY29udGFpbnMobV9jb250ZXh0SWRlbnRpZmllcikpOworICAgICAgICBh
bGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcChsb2NrZXIpLmFkZChtX2NvbnRleHRJZGVudGlm
aWVyLCBjb25zdF9jYXN0PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqPih0aGlzKSk7CiAgICAgfQog
ICAgIHJldHVybiBtX2NvbnRleHRJZGVudGlmaWVyOwogfQpAQCAtMTE4LDggKzEyMSw4IEBAIHZv
aWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cmVtb3ZlRnJvbUNvbnRleHRzTWFwKCkKIHsKICAg
ICBpZiAobV9jb250ZXh0SWRlbnRpZmllcikgewogICAgICAgICBMb2NrZXI8TG9jaz4gbG9ja2Vy
KGFsbFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRzTWFwTG9jayk7Ci0gICAgICAgIEFTU0VSVChhbGxT
Y3JpcHRFeGVjdXRpb25Db250ZXh0c01hcCgpLmNvbnRhaW5zKG1fY29udGV4dElkZW50aWZpZXIp
KTsKLSAgICAgICAgYWxsU2NyaXB0RXhlY3V0aW9uQ29udGV4dHNNYXAoKS5yZW1vdmUobV9jb250
ZXh0SWRlbnRpZmllcik7CisgICAgICAgIEFTU0VSVChhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0
c01hcChsb2NrZXIpLmNvbnRhaW5zKG1fY29udGV4dElkZW50aWZpZXIpKTsKKyAgICAgICAgYWxs
U2NyaXB0RXhlY3V0aW9uQ29udGV4dHNNYXAobG9ja2VyKS5yZW1vdmUobV9jb250ZXh0SWRlbnRp
Zmllcik7CiAgICAgfQogfQogCkBAIC0xNTQsNyArMTU3LDcgQEAgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6flNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKQogI2lmIEFTU0VSVF9FTkFCTEVECiAgICAg
aWYgKG1fY29udGV4dElkZW50aWZpZXIpIHsKICAgICAgICAgTG9ja2VyPExvY2s+IGxvY2tlcihh
bGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcExvY2spOwotICAgICAgICBBU1NFUlRfV0lUSF9N
RVNTQUdFKCFhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcCgpLmNvbnRhaW5zKG1fY29udGV4
dElkZW50aWZpZXIpLAorICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFhbGxTY3JpcHRFeGVj
dXRpb25Db250ZXh0c01hcChsb2NrZXIpLmNvbnRhaW5zKG1fY29udGV4dElkZW50aWZpZXIpLAog
ICAgICAgICAgICAgIkEgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCBzdWJjbGFzcyBpbnN0YW5jZSBp
bXBsZW1lbnRpbmcgcG9zdFRhc2sgc2hvdWxkIGhhdmUgYWxyZWFkeSByZW1vdmVkIGl0c2VsZiBm
cm9tIHRoZSBtYXAiKTsKICAgICB9CiAKQEAgLTI0Niw2ICsyNDksMTUgQEAgdm9pZCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0Ojpmb3JFYWNoQWN0aXZlRE9NT2JqZWN0KGNvbnN0IEZ1bmN0aW9uPFNo
b3VsZENvbnRpbnUKICAgICB9CiB9CiAKK0pTQzo6U2NyaXB0RXhlY3V0aW9uU3RhdHVzIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OmpzY1NjcmlwdEV4ZWN1dGlvblN0YXR1cygpIGNvbnN0Cit7Cisg
ICAgaWYgKGFjdGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQoKSkKKyAgICAgICAgcmV0dXJuIEpT
Qzo6U2NyaXB0RXhlY3V0aW9uU3RhdHVzOjpTdXNwZW5kZWQ7CisgICAgaWYgKGFjdGl2ZURPTU9i
amVjdHNBcmVTdG9wcGVkKCkpCisgICAgICAgIHJldHVybiBKU0M6OlNjcmlwdEV4ZWN1dGlvblN0
YXR1czo6Q2FuY2VsZWQ7CisgICAgcmV0dXJuIEpTQzo6U2NyaXB0RXhlY3V0aW9uU3RhdHVzOjpS
dW5uaW5nOworfQorCiB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnN1c3BlbmRBY3RpdmVE
T01PYmplY3RzKFJlYXNvbkZvclN1c3BlbnNpb24gd2h5KQogewogICAgIGNoZWNrQ29uc2lzdGVu
Y3koKTsKQEAgLTI4MCw2ICsyOTIsOCBAQCB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnJl
c3VtZUFjdGl2ZURPTU9iamVjdHMoUmVhc29uRm9yU3VzcGVuc2lvbiB3aHkpCiAgICAgICAgIHJl
dHVybiBTaG91bGRDb250aW51ZTo6WWVzOwogICAgIH0pOwogCisgICAgdm0oKS5kZWZlcnJlZFdv
cmtUaW1lci0+c2NyaXB0RXhlY3V0aW9uT3duZXJXYXNVbnN1c3BlbmRlZCgpOworCiAgICAgbV9h
Y3RpdmVET01PYmplY3RzQXJlU3VzcGVuZGVkID0gZmFsc2U7CiAKICAgICAvLyBJbiBjYXNlIHRo
ZXJlIHdlcmUgcGVuZGluZyBtZXNzYWdlcyBhdCB0aGUgdGltZSB0aGUgc2NyaXB0IGV4ZWN1dGlv
biBjb250ZXh0IGVudGVyZWQgdGhlIEJhY2tGb3J3YXJkQ2FjaGUsCkBAIC01OTcsNyArNjExLDcg
QEAgU2VydmljZVdvcmtlckNvbnRhaW5lciogU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZW5zdXJl
U2VydmljZVdvcmtlckNvbnRhaW5lcigpCiBib29sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnBv
c3RUYXNrVG8oU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIgaWRlbnRpZmllciwgVGFz
ayYmIHRhc2spCiB7CiAgICAgTG9ja2VyPExvY2s+IGxvY2tlcihhbGxTY3JpcHRFeGVjdXRpb25D
b250ZXh0c01hcExvY2spOwotICAgIGF1dG8qIGNvbnRleHQgPSBhbGxTY3JpcHRFeGVjdXRpb25D
b250ZXh0c01hcCgpLmdldChpZGVudGlmaWVyKTsKKyAgICBhdXRvKiBjb250ZXh0ID0gYWxsU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dHNNYXAobG9ja2VyKS5nZXQoaWRlbnRpZmllcik7CiAKICAgICBp
ZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCmluZGV4IDI1YWFiNDQ2MGZmOTdhMThlZDBiZjEzYWZh
OWU0MmRmMDgyMWMyN2UuLjVlOTBmNDFiMmZkYmY5ZmVlN2ZiNDAzNGJmZDBjMTE4MGJlYmY4ZjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaApAQCAtNDQs
NiArNDQsNyBAQCBjbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBFeGNlcHRpb247CiBjbGFzcyBKU1By
b21pc2U7CiBjbGFzcyBWTTsKK2VudW0gY2xhc3MgU2NyaXB0RXhlY3V0aW9uU3RhdHVzOwogfQog
CiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKQEAgLTEzNiw2ICsxMzcsOCBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBhY3RpdmVET01PYmplY3RzQXJlU3VzcGVuZGVkKCkgY29uc3QgeyByZXR1cm4gbV9hY3Rp
dmVET01PYmplY3RzQXJlU3VzcGVuZGVkOyB9CiAgICAgYm9vbCBhY3RpdmVET01PYmplY3RzQXJl
U3RvcHBlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZlRE9NT2JqZWN0c0FyZVN0b3BwZWQ7IH0K
IAorICAgIEpTQzo6U2NyaXB0RXhlY3V0aW9uU3RhdHVzIGpzY1NjcmlwdEV4ZWN1dGlvblN0YXR1
cygpIGNvbnN0OworCiAgICAgLy8gQ2FsbGVkIGZyb20gdGhlIGNvbnN0cnVjdG9yIGFuZCBkZXN0
cnVjdG9ycyBvZiBBY3RpdmVET01PYmplY3QuCiAgICAgdm9pZCBkaWRDcmVhdGVBY3RpdmVET01P
YmplY3QoQWN0aXZlRE9NT2JqZWN0Jik7CiAgICAgdm9pZCB3aWxsRGVzdHJveUFjdGl2ZURPTU9i
amVjdChBY3RpdmVET01PYmplY3QmKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkNzgwNzZiZjQ2OWVmNmEzNjI4NGI5Njhl
YmYxYjJmYWEzZWUyNDMwLi40ZTdjMDQ3MDQwMTdjOWRlNWFjYmIxOWU0YTY1M2Y0NTljYTNjMTNm
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjAtMTAtMDggIEtlaXRoIE1pbGxlciAgPGtlaXRo
X21pbGxlckBhcHBsZS5jb20+CisKKyAgICAgICAgRmluYWxpemVycyBzaG91bGRuJ3QgcnVuIGlm
IGV2ZW50cyBjYW4ndCBmaXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTQ1MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIGZhc3QvZnJhbWVzL2RldGFjaGVkLWZyYW1lLXdhc20tcmVzb2x2ZS1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL2RldGFjaGVkLWZyYW1lLXdh
c20tcmVzb2x2ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2hpc3RvcnkvcGFnZS1jYWNo
ZS1hY3RpdmUtZmluYWxpemF0aW9uLXJlZ2lzdHJ5LWNhbGxiYWNrLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9oaXN0b3J5L3BhZ2UtY2FjaGUtYWN0aXZlLWZpbmFsaXphdGlv
bi1yZWdpc3RyeS1jYWxsYmFjay5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2hpc3Rvcnkv
cGFnZS1jYWNoZS13YXNtLXByb21pc2UtcmVzb2x2ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvaGlzdG9yeS9wYWdlLWNhY2hlLXdhc20tcHJvbWlzZS1yZXNvbHZlLmh0bWw6
IEFkZGVkLgorCiAyMDIwLTA5LTI5ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUu
Y29tPgogCiAgICAgICAgIENTUyBzZXJpYWxpemF0aW9uIGV4cGVjdHMgY29tbWVudHMgYmV0d2Vl
biBjZXJ0YWluIHRva2VucwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvZGV0
YWNoZWQtZnJhbWUtd2FzbS1yZXNvbHZlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZnJhbWVzL2RldGFjaGVkLWZyYW1lLXdhc20tcmVzb2x2ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNTU5NmI2ZGQzNWY2MTIzZGI4OWJmN2M0Y2NlNTRiOTg0NGQ3MWRjOAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2RldGFjaGVkLWZyYW1lLXdhc20tcmVzb2x2
ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMSBAQAorQ2hlY2tzIFdBU00gY29tcGlsYXRpb24g
cHJvbWlzZXMgZG8gbm90IHJlc29sdmUgb24gZGV0YWNoZWQgZnJhbWVzLgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworUEFTUyBXQVNNIHByb21pc2Ugd2FzIHJlc29sdmVkIG9uIHRo
ZSBtYWluIGZyYW1lCitQQVNTIFdBU00gcHJvbWlzZSBkaWQgbm90IGFwcGVhciB0byBiZSByZXNv
bHZlZCBhZnRlciBzdWJmcmFtZSB3YXMgZGV0YWNoZWQKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2ZyYW1lcy9kZXRhY2hlZC1mcmFtZS13YXNtLXJlc29sdmUuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvZnJhbWVzL2RldGFjaGVkLWZyYW1lLXdhc20tcmVzb2x2ZS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0
YWJiMWIwZDk4ZjRmYmI4ZWVmMzE4NzAzNWViYTQyNDE5MDgxYzgKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9kZXRhY2hlZC1mcmFtZS13YXNtLXJlc29sdmUuaHRt
bApAQCAtMCwwICsxLDMxIEBACis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qu
anMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJDaGVja3MgV0FTTSBjb21waWxh
dGlvbiBwcm9taXNlcyBkbyBub3QgcmVzb2x2ZSBvbiBkZXRhY2hlZCBmcmFtZXMuIik7Cit3aW5k
b3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKK29ubG9hZCA9IGZ1bmN0aW9uKCkKK3sKKyAgICB2
YXIgZGV0YWNoZWRXaW5kb3cgPSBmcmFtZXNbMF07CisKKyAgICAvLyBSYW5kb20gd2FzbSBtb2R1
bGUgdGhhdCBjb21waWxlcy4gU3RvbGVuIGZyb20gSlNUZXN0cy93YXNtL3N0cmVzcy90ZXJtaW5h
bC1qdW1wLXN3aXRjaC10YXJnZXQuanMKKyAgICBsZXQgcHJvbWlzZSA9IGRldGFjaGVkV2luZG93
LldlYkFzc2VtYmx5LmNvbXBpbGUobmV3IFVpbnQ4QXJyYXkoWyAwLDk3LDExNSwxMDksMSwwLDAs
MCwxLDEzNiwxMjgsMTI4LDEyOCwwLDIsOTYsMCwwLDk2LDAsMSwxMjQsMywxMzEsMTI4LDEyOCwx
MjgsMCwyLDAsMSw3LDEzOCwxMjgsMTI4LDEyOCwwLDEsNiwxMTQsMTE3LDExMCwxMDIsNTQsNTIs
MCwxLDEwLDE2NSwxMjgsMTI4LDEyOCwwLDIsMTMwLDEyOCwxMjgsMTI4LDAsMCwxMSwxNTIsMTI4
LDEyOCwxMjgsMCwwLDMsMTI0LDY4LDAsMCwwLDAsMCwwLDAsMCw2NSwwLDE0LDAsMSwxNiwwLDEx
LDEyLDAsMCwxMSBdKSk7CisgICAgdmFyIHN1YkZyYW1lQ2FsbGVkID0gZmFsc2U7CisgICAgcHJv
bWlzZS50aGVuKCgpID0+IHN1YkZyYW1lQ2FsbGVkID0gdHJ1ZSk7CisKKyAgICBwcm9taXNlID0g
V2ViQXNzZW1ibHkuY29tcGlsZShuZXcgVWludDhBcnJheShbIDAsOTcsMTE1LDEwOSwxLDAsMCww
LDEsMTM2LDEyOCwxMjgsMTI4LDAsMiw5NiwwLDAsOTYsMCwxLDEyNCwzLDEzMSwxMjgsMTI4LDEy
OCwwLDIsMCwxLDcsMTM4LDEyOCwxMjgsMTI4LDAsMSw2LDExNCwxMTcsMTEwLDEwMiw1NCw1Miww
LDEsMTAsMTY1LDEyOCwxMjgsMTI4LDAsMiwxMzAsMTI4LDEyOCwxMjgsMCwwLDExLDE1MiwxMjgs
MTI4LDEyOCwwLDAsMywxMjQsNjgsMCwwLDAsMCwwLDAsMCwwLDY1LDAsMTQsMCwxLDE2LDAsMTEs
MTIsMCwwLDExIF0pKTsKKyAgICBwcm9taXNlLnRoZW4oKCkgPT4geworICAgICAgICB0ZXN0UGFz
c2VkKCJXQVNNIHByb21pc2Ugd2FzIHJlc29sdmVkIG9uIHRoZSBtYWluIGZyYW1lIik7CisgICAg
ICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgaWYgKHN1YkZyYW1lQ2FsbGVkKQor
ICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIldBU00gcHJvbWlzZSBzaG91bGQgbm90IGJlIHJl
c29sdmVkIGlmIHRoZSBzdWJmcmFtZSBpcyBkZXRhY2hlZCIpOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIldBU00gcHJvbWlzZSBkaWQgbm90IGFwcGVhciB0
byBiZSByZXNvbHZlZCBhZnRlciBzdWJmcmFtZSB3YXMgZGV0YWNoZWQiKTsKKyAgICAgICAgICAg
IGZpbmlzaEpTVGVzdCgpOworICAgICAgICAvLyBBZGQgc21hbGwgdGltZW91dCB0byBiZSBzYWZl
LgorICAgICAgICB9LCAxMDApOworICAgIH0pOworCisgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVD
aGlsZChkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaWZyYW1lIilbMF0pOworfQorPC9z
Y3JpcHQ+Cis8aWZyYW1lIHNyYz0iYWJvdXQ6YmxhbmsiPjwvaWZyYW1lPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3BhZ2UtY2FjaGUtYWN0aXZlLWZpbmFsaXphdGlvbi1y
ZWdpc3RyeS1jYWxsYmFjay1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2hpc3Rvcnkv
cGFnZS1jYWNoZS1hY3RpdmUtZmluYWxpemF0aW9uLXJlZ2lzdHJ5LWNhbGxiYWNrLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40NTBjMzE1OWJmODU0NzRlZWYxZDQxNWIxOGIwZWY0YWQ5NDNlOWUz
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3BhZ2UtY2FjaGUt
YWN0aXZlLWZpbmFsaXphdGlvbi1yZWdpc3RyeS1jYWxsYmFjay1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwxNSBAQAorVGVzdHMgdGhhdCBhIHBhZ2Ugd2l0aCBhIHBlbmRpbmcgRmluYWxpemF0aW9u
UmVnaXN0cnkgY2FsbGJhY2sgaXMgYWJsZSB0byBlbnRlciB0aGUgYmFjay9mb3J3YXJkIGNhY2hl
IGFuZCBnZXRzIHN1c3BlbmRlZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK3Bh
Z2VzaG93IC0gbm90IGZyb20gY2FjaGUKK3BhZ2VoaWRlIC0gZW50ZXJpbmcgY2FjaGUKK0ZpbGxp
bmcgZmluYWxpemF0aW9uIHJlZ2lzdHJ5CitwYWdlc2hvdyAtIGZyb20gY2FjaGUKK1BBU1MgUGFn
ZSBkaWQgZW50ZXIgYW5kIHdhcyByZXN0b3JlZCBmcm9tIHRoZSBiYWNrL2ZvcndhcmQgY2FjaGUK
K1BBU1MgQ29kZSBkaWQgbm90IHJ1biB3aGlsZSBpbiB0aGUgYmFjay9mb3J3YXJkIGNhY2hlCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3BhZ2UtY2FjaGUtYWN0aXZlLWZpbmFsaXph
dGlvbi1yZWdpc3RyeS1jYWxsYmFjay5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3Bh
Z2UtY2FjaGUtYWN0aXZlLWZpbmFsaXphdGlvbi1yZWdpc3RyeS1jYWxsYmFjay5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjAyMDdhMjE3NjgwZDc5ZmYxYmQ4ODg0NjVhYzg0NjRlYjE4Y2FkMzEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvcGFnZS1jYWNoZS1hY3RpdmUtZmlu
YWxpemF0aW9uLXJlZ2lzdHJ5LWNhbGxiYWNrLmh0bWwKQEAgLTAsMCArMSw2OCBAQAorPCEtLSB3
ZWJraXQtdGVzdC1ydW5uZXIgWyBlbmFibGVCYWNrRm9yd2FyZENhY2hlPXRydWUganNjT3B0aW9u
cz0tLXVzZVdlYWtSZWZzPXRydWUgXSAtLT4KKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9k
eT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3RzIHRoYXQgYSBwYWdlIHdpdGggYSBwZW5kaW5nIEZp
bmFsaXphdGlvblJlZ2lzdHJ5IGNhbGxiYWNrIGlzIGFibGUgdG8gZW50ZXIgdGhlIGJhY2svZm9y
d2FyZCBjYWNoZSBhbmQgZ2V0cyBzdXNwZW5kZWQuJyk7Cit3aW5kb3cuanNUZXN0SXNBc3luYyA9
IHRydWU7CitsZXQgbm90U3VzcGVuZGVkID0gdHJ1ZTsKK2xldCByZXN0b3JlZEZyb21DYWNoZSA9
IGZhbHNlOworCitsZXQgdW5yZWdpc3RlclRva2VuID0ge307CitsZXQgZmcgPSBuZXcgRmluYWxp
emF0aW9uUmVnaXN0cnkoKCkgPT4geworICAgIGlmICghcmVzdG9yZWRGcm9tQ2FjaGUpCisgICAg
ICAgIHRlc3RGYWlsZWQoIkZpbmFsaXphdGlvblJlZ2lzdHJ5IHdhcyBydW4gYmVmb3JlIHJlc3Rv
cmluZyBmcm9tIGNhY2hlIik7CisKKyAgICBpZiAobm90U3VzcGVuZGVkKQorICAgICAgICB0ZXN0
UGFzc2VkKCJDb2RlIGRpZCBub3QgcnVuIHdoaWxlIGluIHRoZSBiYWNrL2ZvcndhcmQgY2FjaGUi
KTsKKyAgICBlbHNlCisgICAgICAgIHRlc3RGYWlsZWQoIlRoaXMgY29kZSBzaG91bGQgbm90IGJl
IHJ1bm5pbmcgd2hpbGUgdGhlIHBhZ2UgaXMgaW4gdGhlIGJhY2svZm9yd2FyZCIpOworCisgICAg
ZmcudW5yZWdpc3Rlcih1bnJlZ2lzdGVyVG9rZW4pOworICAgIGZpbmlzaEpTVGVzdCgpOworfSk7
CisKK3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJwYWdlc2hvdyIsIGZ1bmN0aW9uKGV2ZW50KSB7
CisgICAgZGVidWcoInBhZ2VzaG93IC0gIiArIChldmVudC5wZXJzaXN0ZWQgPyAiIiA6ICJub3Qg
IikgKyAiZnJvbSBjYWNoZSIpOworCisgICAgaWYgKGV2ZW50LnBlcnNpc3RlZCkgeworICAgICAg
ICB0ZXN0UGFzc2VkKCJQYWdlIGRpZCBlbnRlciBhbmQgd2FzIHJlc3RvcmVkIGZyb20gdGhlIGJh
Y2svZm9yd2FyZCBjYWNoZSIpOworICAgICAgICByZXN0b3JlZEZyb21DYWNoZSA9IHRydWU7Cisg
ICAgfQorICAgIG5vdFN1c3BlbmRlZCA9IHRydWU7Cit9LCBmYWxzZSk7CisKK3dpbmRvdy5hZGRF
dmVudExpc3RlbmVyKCJwYWdlaGlkZSIsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgZGVidWcoInBh
Z2VoaWRlIC0gIiArIChldmVudC5wZXJzaXN0ZWQgPyAiIiA6ICJub3QgIikgKyAiZW50ZXJpbmcg
Y2FjaGUiKTsKKyAgICBpZiAoIWV2ZW50LnBlcnNpc3RlZCkgeworICAgICAgICB0ZXN0RmFpbGVk
KCJQYWdlIGRpZCBub3QgZW50ZXIgdGhlIGJhY2svZm9yd2FyZCBjYWNoZS4iKTsKKyAgICAgICAg
ZmluaXNoSlNUZXN0KCk7CisgICAgfQorICAgIGZpbGxGaW5hbGl6YXRpb25SZWdpc3RyeSgpOwor
ICAgIG5vdFN1c3BlbmRlZCA9IGZhbHNlOworfSwgZmFsc2UpOworCit2YXIgdGV4dERhdGEgPSBK
U09OLnN0cmluZ2lmeSgiVGhpcyBpcyB0aGUgYm9keSIpOworCitmdW5jdGlvbiBmaWxsRmluYWxp
emF0aW9uUmVnaXN0cnkoKQoreworICAgIGRlYnVnKCJGaWxsaW5nIGZpbmFsaXphdGlvbiByZWdp
c3RyeSIpOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgKytpKQorICAgICAgICBmZy5y
ZWdpc3Rlcih7IH0sIHVuZGVmaW5lZCwgdW5yZWdpc3RlclRva2VuKTsKKworICAgIEdDQ29udHJv
bGxlci5jb2xsZWN0KCk7Cit9CisKK3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVu
Y3Rpb24oKSB7CisgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgIHdpbmRvdy5sb2NhdGlv
bi5ocmVmID0gInJlc291cmNlcy9wYWdlLWNhY2hlLWhlbHBlci5odG1sIjsKKyAgICB9LCAwKTsK
K30sIGZhbHNlKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKKworCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvcGFnZS1jYWNoZS13YXNtLXByb21pc2UtcmVz
b2x2ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvcGFnZS1jYWNoZS13
YXNtLXByb21pc2UtcmVzb2x2ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDBjNjlkODAxYzZh
M2I3MzA4M2RjZWJmNWFjOTBlNGU2YTljOWFmMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvaGlzdG9yeS9wYWdlLWNhY2hlLXdhc20tcHJvbWlzZS1yZXNvbHZlLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDE1IEBACitUZXN0cyB0aGF0IGEgcGFnZSB3aXRoIGEgcGVuZGluZyBX
QVNNIG1vZHVsZSByZXNvbHV0aW9uIGlzIGFibGUgdG8gZW50ZXIgdGhlIGJhY2svZm9yd2FyZCBj
YWNoZSBhbmQgZ2V0cyBzdXNwZW5kZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
CitwYWdlc2hvdyAtIG5vdCBmcm9tIGNhY2hlCitwYWdlaGlkZSAtIGVudGVyaW5nIGNhY2hlCitw
YWdlc2hvdyAtIGZyb20gY2FjaGUKK1BBU1MgUGFnZSBkaWQgZW50ZXIgYW5kIHdhcyByZXN0b3Jl
ZCBmcm9tIHRoZSBiYWNrL2ZvcndhcmQgY2FjaGUKK1BBU1MgV0FTTSBibG9iIGNvbXBpbGVkIHN1
Y2Nlc3NmdWxseQorUEFTUyBXQVNNIGRpZCBub3QgcmVzb2x2ZSB3aGlsZSBpbiB0aGUgYmFjay9m
b3J3YXJkIGNhY2hlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3BhZ2UtY2FjaGUt
d2FzbS1wcm9taXNlLXJlc29sdmUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9wYWdl
LWNhY2hlLXdhc20tcHJvbWlzZS1yZXNvbHZlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTY2NjkzOGNmYWNh
ZWU2NTY3ZTA0ZDM2MGNmYTBkOGM3YzA0NTJiYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvaGlzdG9yeS9wYWdlLWNhY2hlLXdhc20tcHJvbWlzZS1yZXNvbHZlLmh0bWwKQEAg
LTAsMCArMSw2OCBAQAorPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBlbmFibGVCYWNrRm9yd2Fy
ZENhY2hlPXRydWUganNjT3B0aW9ucz0tLXVzZVdlYWtSZWZzPXRydWUgXSAtLT4KKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3RzIHRoYXQgYSBw
YWdlIHdpdGggYSBwZW5kaW5nIFdBU00gbW9kdWxlIHJlc29sdXRpb24gaXMgYWJsZSB0byBlbnRl
ciB0aGUgYmFjay9mb3J3YXJkIGNhY2hlIGFuZCBnZXRzIHN1c3BlbmRlZC4nKTsKK3dpbmRvdy5q
c1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK2xldCBub3RTdXNwZW5kZWQgPSB0cnVlOworbGV0IHJlc3Rv
cmVkRnJvbUNhY2hlID0gZmFsc2U7CisKK2Z1bmN0aW9uIGNoZWNrKHZhbHVlLCBlcnJvcikgewor
ICAgIGlmIChlcnJvcikKKyAgICAgICAgdGVzdEZhaWxlZCgiV0FTTSBibG9iIGRpZG4ndCBjb21w
aWxlIik7CisKKyAgICBpZiAodmFsdWUpCisgICAgICAgIHRlc3RQYXNzZWQoIldBU00gYmxvYiBj
b21waWxlZCBzdWNjZXNzZnVsbHkiKTsKKyAgICBlbHNlCisgICAgICAgIHRlc3RGYWlsZWQoIldB
U00gYmxvYiBkaWQgbm90IHJldHVybiBhIG1vZHVsZSBmb3Igc29tZSByZWFzb24iKTsKKworICAg
IGlmICghcmVzdG9yZWRGcm9tQ2FjaGUpCisgICAgICAgIHRlc3RGYWlsZWQoIldBU00gcHJvbWlz
ZSB3YXMgcmVzb2x2ZWQgYmVmb3JlIHJlc3RvcmluZyBmcm9tIGNhY2hlIik7CisKKyAgICBpZiAo
bm90U3VzcGVuZGVkKQorICAgICAgICB0ZXN0UGFzc2VkKCJXQVNNIGRpZCBub3QgcmVzb2x2ZSB3
aGlsZSBpbiB0aGUgYmFjay9mb3J3YXJkIGNhY2hlIik7CisgICAgZWxzZQorICAgICAgICB0ZXN0
RmFpbGVkKCJXQVNNIHByb21pc2UgcmVzb2x1dGlvbiBzaG91bGQgbm90IHJ1biB3aGlsZSB0aGUg
cGFnZSBpcyBpbiB0aGUgYmFjay9mb3J3YXJkIik7CisKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK307
CisKK3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJwYWdlc2hvdyIsIGZ1bmN0aW9uKGV2ZW50KSB7
CisgICAgZGVidWcoInBhZ2VzaG93IC0gIiArIChldmVudC5wZXJzaXN0ZWQgPyAiIiA6ICJub3Qg
IikgKyAiZnJvbSBjYWNoZSIpOworCisgICAgaWYgKGV2ZW50LnBlcnNpc3RlZCkgeworICAgICAg
ICB0ZXN0UGFzc2VkKCJQYWdlIGRpZCBlbnRlciBhbmQgd2FzIHJlc3RvcmVkIGZyb20gdGhlIGJh
Y2svZm9yd2FyZCBjYWNoZSIpOworICAgICAgICByZXN0b3JlZEZyb21DYWNoZSA9IHRydWU7Cisg
ICAgfQorICAgIG5vdFN1c3BlbmRlZCA9IHRydWU7Cit9LCBmYWxzZSk7CisKK3dpbmRvdy5hZGRF
dmVudExpc3RlbmVyKCJwYWdlaGlkZSIsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgZGVidWcoInBh
Z2VoaWRlIC0gIiArIChldmVudC5wZXJzaXN0ZWQgPyAiIiA6ICJub3QgIikgKyAiZW50ZXJpbmcg
Y2FjaGUiKTsKKyAgICBpZiAoIWV2ZW50LnBlcnNpc3RlZCkgeworICAgICAgICB0ZXN0RmFpbGVk
KCJQYWdlIGRpZCBub3QgZW50ZXIgdGhlIGJhY2svZm9yd2FyZCBjYWNoZS4iKTsKKyAgICAgICAg
ZmluaXNoSlNUZXN0KCk7CisgICAgfQorCisgICAgLy8gUmFuZG9tIHdhc20gbW9kdWxlIHRoYXQg
Y29tcGlsZXMuIFN0b2xlbiBmcm9tIEpTVGVzdHMvd2FzbS9zdHJlc3MvdGVybWluYWwtanVtcC1z
d2l0Y2gtdGFyZ2V0LmpzCisgICAgbGV0IHByb21pc2UgPSBXZWJBc3NlbWJseS5jb21waWxlKG5l
dyBVaW50OEFycmF5KFsgMCw5NywxMTUsMTA5LDEsMCwwLDAsMSwxMzYsMTI4LDEyOCwxMjgsMCwy
LDk2LDAsMCw5NiwwLDEsMTI0LDMsMTMxLDEyOCwxMjgsMTI4LDAsMiwwLDEsNywxMzgsMTI4LDEy
OCwxMjgsMCwxLDYsMTE0LDExNywxMTAsMTAyLDU0LDUyLDAsMSwxMCwxNjUsMTI4LDEyOCwxMjgs
MCwyLDEzMCwxMjgsMTI4LDEyOCwwLDAsMTEsMTUyLDEyOCwxMjgsMTI4LDAsMCwzLDEyNCw2OCww
LDAsMCwwLDAsMCwwLDAsNjUsMCwxNCwwLDEsMTYsMCwxMSwxMiwwLDAsMTEgXSkpOworCisgICAg
cHJvbWlzZS50aGVuKGNoZWNrKTsKKworICAgIG5vdFN1c3BlbmRlZCA9IGZhbHNlOworfSwgZmFs
c2UpOworCit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGZ1bmN0aW9uKCkgeworICAg
IHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICJyZXNv
dXJjZXMvcGFnZS1jYWNoZS1oZWxwZXIuaHRtbCI7CisgICAgfSwgMCk7Cit9LCBmYWxzZSk7CisK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCisKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410880</attachid>
            <date>2020-10-08 14:02:53 -0700</date>
            <delta_ts>2020-10-08 14:43:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214508-20201008140252.patch</filename>
            <type>text/plain</type>
            <size>47251</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4MjA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
NmZhZGY4MWFhNDgwZTg1NjdiM2Q3NzFkY2FjMTZiYWI2ODUwZmMwLi5iODJjZmRkODljYzVjNTRj
MzZkNGIxMDA0YzVhMmMyOGE5MTYwMzNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MSBAQAorMjAyMC0xMC0wOCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBGaW5hbGl6ZXJzIHNob3VsZG4ndCBydW4gaWYgZXZlbnRzIGNhbid0
IGZpcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
NDUwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgcGF0Y2ggbWFrZXMgaXQgc28gdGhlIERlZmVycmVkV29ya1RpbWVyIHdvbid0IHJ1biBzY2hl
ZHVsZWQKKyAgICAgICAgdGFza3MgaWYgdGhvc2Ugd291bGQgbm90IGhhdmUgcnVuIGlmIHRoZXkg
d2VyZSBzY2hlZHVsZWQgaW4KKyAgICAgICAgV2ViQ29yZS4gVG8gZG8gdGhpcyB0aGVyZSBpcyBu
b3cgYSBjb25jZXB0IG9mIGEKKyAgICAgICAgU2NyaXB0RXhlY3V0aW9uT3duZXIuIFRoZSBTY3Jp
cHRFeGVjdXRpb25Pd25lciBpcyBhbG1vc3QgYWx3YXlzCisgICAgICAgIHRoZSBzYW1lIGFzIHRo
ZSBnbG9iYWwgb2JqZWN0IG9mIHRoZSBwZW5kaW5nIHRhc2sgKHJlZmVycmVkIHRvIGFzCisgICAg
ICAgIHRoZSB0aWNrZXQpLiAgVGhlIG9ubHkgZXhjZXB0aW9uIHRvIHRoaXMgaXMgaWYgdGhlIGds
b2JhbCBvYmplY3QKKyAgICAgICAgaXMgYSBKU0RPTVdpbmRvd0Jhc2UsIHRoZW4gdGhlIFNjcmlw
dEV4ZWN1dGlvbk93bmVyIGlzIHRoZQorICAgICAgICBEb2N1bWVudCdzIEpTIHdyYXBwZXIuIFRv
IHRlbGwgdGhlIHN0YXR1cyBvZiBhCisgICAgICAgIFNjcmlwdEV4ZWN1dGlvbk93bmVyLCB0aGUg
RGVmZXJyZWRXb3JrVGltZXIgY2FsbHMgYSB2aXJ0dWFsCisgICAgICAgIGZ1bmN0aW9uIG9uIHRo
ZSBnbG9iYWwgb2JqZWN0IG9mIHRoZSB0aWNrZXQsIGZvciBKU0Mtb25seSB0aGlzCisgICAgICAg
IGp1c3QgYWx3YXlzIHJldHVybnMgUnVubmluZy4gRm9yIFdlYkNvcmUsIHdlIGFzayB0aGUKKyAg
ICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCBhc3NvY2lhdGVkIHdpdGggdGhlIFNjcmlwdEV4
ZWN1dGlvbk93bmVyLgorCisgICAgICAgICogQVBJL0pTQVBJR2xvYmFsT2JqZWN0LmNwcDoKKyAg
ICAgICAgKiBBUEkvSlNBUElHbG9iYWxPYmplY3QubW06CisgICAgICAgICoganNjLmNwcDoKKyAg
ICAgICAgKiBydW50aW1lL0RlZmVycmVkV29ya1RpbWVyLmNwcDoKKyAgICAgICAgKEpTQzo6RGVm
ZXJyZWRXb3JrVGltZXI6OmRvV29yayk6CisgICAgICAgIChKU0M6OkRlZmVycmVkV29ya1RpbWVy
OjphZGRQZW5kaW5nV29yayk6CisgICAgICAgIChKU0M6OkRlZmVycmVkV29ya1RpbWVyOjpoYXNE
ZXBlbmRhbmN5SW5QZW5kaW5nV29yayk6CisgICAgICAgIChKU0M6OkRlZmVycmVkV29ya1RpbWVy
OjpzY3JpcHRFeGVjdXRpb25Pd25lcldhc1Vuc3VzcGVuZGVkKToKKyAgICAgICAgKiBydW50aW1l
L0RlZmVycmVkV29ya1RpbWVyLmg6CisgICAgICAgICogcnVudGltZS9KU0ZpbmFsaXphdGlvblJl
Z2lzdHJ5LmNwcDoKKyAgICAgICAgKEpTQzo6SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6Y3JlYXRl
KToKKyAgICAgICAgKEpTQzo6SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6ZmluaXNoQ3JlYXRpb24p
OgorICAgICAgICAqIHJ1bnRpbWUvSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxP
YmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmN1cnJlbnRTY3JpcHRFeGVj
dXRpb25Pd25lcik6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpzY3JpcHRFeGVjdXRp
b25TdGF0dXMpOgorCiAyMDIwLTEwLTA3ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5j
b20+CiAKICAgICAgICAgW0pTQ10gUmVzdHJpY3QgbW9yZSBwdHItdGFnZ2luZyBhbmQgYXZvaWQg
dXNpbmcgT3BlcmF0aW9uUHRyVGFnIGZvciBKSVQgY29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA1ZDU3YjgxZTIyZGVmMjc1
NDFjYzkyNmMzZmNlZjA1ZTdkOWU0MmJiLi5iYjBlZTk0ODEwNDNkYzhjZjVmYThhMDMzOWU4NjU4
MjM1ZjUzNDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIwLTEwLTA4ICBLZWl0aCBNaWxsZXIg
IDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgorCisgICAgICAgIEZpbmFsaXplcnMgc2hvdWxkbid0
IHJ1biBpZiBldmVudHMgY2FuJ3QgZmlyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE0NTA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIGEgRHJvcExvY2tTY29wZSB0byBtYWtlIGl0IGVhc2llciB0
byBkcm9wIGEgbG9jayBmb3IgYSBzaG9ydAorICAgICAgICBwaWVjZSBvZiBjb2RlLiAgQWxzbywg
aW5zdGVhZCBvZiBkZWxldGluZyBpbnQgTG9ja2VyIGNvbnN0cnVjdG9yCisgICAgICAgIHdlIHNo
b3VsZCBqdXN0IGRlbGV0ZSB0aGUgdW5kZXJseWluZyB0eXBlIG9mIHRoZQorICAgICAgICBOb0xv
Y2tpbmdOZWNlc3NhcnkgZW51bS4KKworICAgICAgICAqIHd0Zi9Mb2NrZXIuaDoKKyAgICAgICAg
KFdURjo6TG9ja2VyOjp+TG9ja2VyKToKKyAgICAgICAgKFdURjo6TG9ja2VyOjp1bmxvY2tFYXJs
eSk6CisgICAgICAgIChXVEY6OkxvY2tlcjo6TG9ja2VyKToKKyAgICAgICAgKFdURjo6TG9ja2Vy
OjpvcGVyYXRvcj0pOgorICAgICAgICAoV1RGOjpMb2NrZXI6OnVubG9jayk6CisgICAgICAgIChX
VEY6OkRyb3BMb2NrU2NvcGU6OkRyb3BMb2NrU2NvcGUpOgorICAgICAgICAoV1RGOjpEcm9wTG9j
a1Njb3BlOjp+RHJvcExvY2tTY29wZSk6CisKIDIwMjAtMTAtMDggIFl1c3VrZSBTdXp1a2kgIDx5
c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBidWlsZCBmaXggZm9yIEFS
TTY0RQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IGUyMzkxZmZmNDEwZTY2OTQwZjY4NjUzNzFmODgyYjA4YjU1Y2Q4
ZTAuLjIwODI5YmI4MzQxZjI4MTBiY2JkOTQ3MGYwNGRlZDM4ZDZiZGRmOTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw0MyBAQAorMjAyMC0xMC0wOCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVy
QGFwcGxlLmNvbT4KKworICAgICAgICBGaW5hbGl6ZXJzIHNob3VsZG4ndCBydW4gaWYgZXZlbnRz
IGNhbid0IGZpcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxNDUwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggbWFrZXMgaXQgc28gdGhlIERlZmVycmVkV29ya1RpbWVyIHdvbid0IHJ1
biBzY2hlZHVsZWQKKyAgICAgICAgdGFza3MgaWYgdGhvc2Ugd291bGQgbm90IGhhdmUgcnVuIGlm
IHRoZXkgd2VyZSBzY2hlZHVsZWQgaW4KKyAgICAgICAgV2ViQ29yZS4gVG8gZG8gdGhpcyB0aGVy
ZSBpcyBub3cgYSBjb25jZXB0IG9mIGEKKyAgICAgICAgU2NyaXB0RXhlY3V0aW9uT3duZXIuIFRo
ZSBTY3JpcHRFeGVjdXRpb25Pd25lciBpcyBhbG1vc3QgYWx3YXlzCisgICAgICAgIHRoZSBzYW1l
IGFzIHRoZSBnbG9iYWwgb2JqZWN0IG9mIHRoZSBwZW5kaW5nIHRhc2sgKHJlZmVycmVkIHRvIGFz
CisgICAgICAgIHRoZSB0aWNrZXQpLiAgVGhlIG9ubHkgZXhjZXB0aW9uIHRvIHRoaXMgaXMgaWYg
dGhlIGdsb2JhbCBvYmplY3QKKyAgICAgICAgaXMgYSBKU0RPTVdpbmRvd0Jhc2UsIHRoZW4gdGhl
IFNjcmlwdEV4ZWN1dGlvbk93bmVyIGlzIHRoZQorICAgICAgICBEb2N1bWVudCdzIEpTIHdyYXBw
ZXIuIFRvIHRlbGwgdGhlIHN0YXR1cyBvZiBhCisgICAgICAgIFNjcmlwdEV4ZWN1dGlvbk93bmVy
LCB0aGUgRGVmZXJyZWRXb3JrVGltZXIgY2FsbHMgYSB2aXJ0dWFsCisgICAgICAgIGZ1bmN0aW9u
IG9uIHRoZSBnbG9iYWwgb2JqZWN0IG9mIHRoZSB0aWNrZXQsIGZvciBKU0Mtb25seSB0aGlzCisg
ICAgICAgIGp1c3QgYWx3YXlzIHJldHVybnMgUnVubmluZy4gRm9yIFdlYkNvcmUsIHdlIGFzayB0
aGUKKyAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCBhc3NvY2lhdGVkIHdpdGggdGhlIFNj
cmlwdEV4ZWN1dGlvbk93bmVyLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dC
YXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6Y3VycmVudFNjcmlw
dEV4ZWN1dGlvbk93bmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6c2Ny
aXB0RXhlY3V0aW9uU3RhdHVzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jh
c2UuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXJDYWNoZS5oOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjpzY3JpcHRFeGVjdXRpb25TdGF0dXMpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmg6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6c2NyaXB0RXhlY3V0aW9uU3RhdHVzKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuaDoKKyAgICAg
ICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRFeGVjdXRpb25Db250ZXh0Ojpjb250ZXh0SWRlbnRpZmllciBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpyZW1vdmVGcm9tQ29udGV4dHNNYXAp
OgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6flNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
anNjU2NyaXB0RXhlY3V0aW9uU3RhdHVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OnJlc3VtZUFjdGl2ZURPTU9iamVjdHMpOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cG9zdFRhc2tUbyk6CisgICAgICAgICogZG9t
L1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaDoKKwogMjAyMC0xMC0wOCAgQW5kcmVzIEdvbnphbGV6
ICA8YW5kcmVzZ18yMkBhcHBsZS5jb20+CiAKICAgICAgICAgUHJlc2lkZW50aWFsIEV4ZWN1dGl2
ZSBPcmRlciBwYWdlcyBub3QgYWNjZXNzaWJsZSB3aXRoIFNhZmFyaS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5jcHAKaW5kZXggOWI0ZjMzOGZkOTAz
MTIyNjk2Njc5YTg3OGIxYzI4YmY2ZTA0OTNjMS4uOWY1ZTBhZDMwZDdkNzIzNTBlOWVlOTlhYWQz
NDUyOGRlZDcwZmJlYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQ
SUdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUds
b2JhbE9iamVjdC5jcHAKQEAgLTQ1LDYgKzQ1LDggQEAgY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9k
VGFibGUgSlNBUElHbG9iYWxPYmplY3Q6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7CiAg
ICAgbnVsbHB0ciwgLy8gbW9kdWxlTG9hZGVyRXZhbHVhdGUKICAgICBudWxscHRyLCAvLyBwcm9t
aXNlUmVqZWN0aW9uVHJhY2tlcgogICAgICZyZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRM
b29wLAorICAgICZjdXJyZW50U2NyaXB0RXhlY3V0aW9uT3duZXIsCisgICAgJnNjcmlwdEV4ZWN1
dGlvblN0YXR1cywKICAgICBudWxscHRyLCAvLyBkZWZhdWx0TGFuZ3VhZ2UKICAgICBudWxscHRy
LCAvLyBjb21waWxlU3RyZWFtaW5nCiAgICAgbnVsbHB0ciwgLy8gaW5zdGFudGlhdGVTdHJlYW1p
bmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmpl
Y3QubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0Lm1tCmlu
ZGV4IGRkZTJiZDMyM2JjN2I2NWI0ZjA5MDIzYjg3YWVhMjdiMDQyMzYzOWUuLjU0NjEzNzlmZGJk
ZTRjMWU5MjM1NWFmMDE3MDE0MzI2MDBjYWUxMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3QubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5tbQpAQCAtNjUsNiArNjUsOCBAQCBjb25zdCBHbG9i
YWxPYmplY3RNZXRob2RUYWJsZSBKU0FQSUdsb2JhbE9iamVjdDo6c19nbG9iYWxPYmplY3RNZXRo
b2RUYWJsZSA9IHsKICAgICAmbW9kdWxlTG9hZGVyRXZhbHVhdGUsIC8vIG1vZHVsZUxvYWRlckV2
YWx1YXRlCiAgICAgbnVsbHB0ciwgLy8gcHJvbWlzZVJlamVjdGlvblRyYWNrZXIKICAgICAmcmVw
b3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcCwKKyAgICAmY3VycmVudFNjcmlwdEV4ZWN1
dGlvbk93bmVyLAorICAgICZzY3JpcHRFeGVjdXRpb25TdGF0dXMsCiAgICAgbnVsbHB0ciwgLy8g
ZGVmYXVsdExhbmd1YWdlCiAgICAgbnVsbHB0ciwgLy8gY29tcGlsZVN0cmVhbWluZwogICAgIG51
bGxwdHIsIC8vIGluc3RhbnRpYXRlU3RyZWFtaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4IGJh
NjMzMjEyZTI4MmEwMDY0NGQyMDg5NDBlMmIwZTI0NDQ4Zjg0NmYuLjRiNzA2ZTJmZjI5ZTZlMDk5
ZGQ4YmRhYmFhMjA0ZGY5MjYxYmI4NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC03MjAsNiAr
NzIwLDggQEAgY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgR2xvYmFsT2JqZWN0OjpzX2ds
b2JhbE9iamVjdE1ldGhvZFRhYmxlID0gewogICAgIG51bGxwdHIsIC8vIG1vZHVsZUxvYWRlckV2
YWx1YXRlCiAgICAgbnVsbHB0ciwgLy8gcHJvbWlzZVJlamVjdGlvblRyYWNrZXIKICAgICAmcmVw
b3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcCwKKyAgICAmY3VycmVudFNjcmlwdEV4ZWN1
dGlvbk93bmVyLAorICAgICZzY3JpcHRFeGVjdXRpb25TdGF0dXMsCiAgICAgbnVsbHB0ciwgLy8g
ZGVmYXVsdExhbmd1YWdlCiAgICAgbnVsbHB0ciwgLy8gY29tcGlsZVN0cmVhbWluZwogICAgIG51
bGxwdHIsIC8vIGluc3RhbnRpbmF0ZVN0cmVhbWluZwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRGVmZXJyZWRXb3JrVGltZXIuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRGVmZXJyZWRXb3JrVGltZXIuY3BwCmluZGV4IGNlZDc3YmFlNDRkNzMy
ZWRlMzdmNDQwMzc3ZDA3MzVhN2ZlYTJkYzguLjk1ODBjNjJlMTViNjAzODYwYjU4ZWJiOTg2NzFj
YzY0YTMzOGJkYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rl
ZmVycmVkV29ya1RpbWVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9E
ZWZlcnJlZFdvcmtUaW1lci5jcHAKQEAgLTQ1LDIyICs0NSwzOCBAQCBEZWZlcnJlZFdvcmtUaW1l
cjo6RGVmZXJyZWRXb3JrVGltZXIoVk0mIHZtKQogdm9pZCBEZWZlcnJlZFdvcmtUaW1lcjo6ZG9X
b3JrKFZNJiB2bSkKIHsKICAgICBBU1NFUlQodm0uY3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxv
Y2soKSk7Ci0gICAgbV90YXNrTG9jay5sb2NrKCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9j
ayhtX3Rhc2tMb2NrKTsKICAgICBjYW5jZWxUaW1lcigpOwotICAgIGlmICghbV9ydW5UYXNrcykg
ewotICAgICAgICBtX3Rhc2tMb2NrLnVubG9jaygpOworICAgIGlmICghbV9ydW5UYXNrcykKICAg
ICAgICAgcmV0dXJuOwotICAgIH0KKworICAgIFZlY3RvcjxzdGQ6OnR1cGxlPFRpY2tldCwgVGFz
az4+IHN1c3BlbmRlZFRhc2tzOwogCiAgICAgd2hpbGUgKCFtX3Rhc2tzLmlzRW1wdHkoKSkgewog
ICAgICAgICBhdXRvIFt0aWNrZXQsIHRhc2tdID0gbV90YXNrcy50YWtlRmlyc3QoKTsKKyAgICAg
ICAgYXV0byBnbG9iYWxPYmplY3QgPSB0aWNrZXQtPnN0cnVjdHVyZSh2bSktPmdsb2JhbE9iamVj
dCgpOwogICAgICAgICBkYXRhTG9nTG5JZihEZWZlcnJlZFdvcmtUaW1lckludGVybmFsOjp2ZXJi
b3NlLCAiRG9pbmcgd29yayBvbjogIiwgUmF3UG9pbnRlcih0aWNrZXQpKTsKIAotICAgICAgICAv
LyBXZSBtYXkgaGF2ZSBhbHJlYWR5IGNhbmNlbGVkIHRoZXNlIHByb21pc2VzLgotICAgICAgICBp
ZiAobV9wZW5kaW5nVGlja2V0cy5jb250YWlucyh0aWNrZXQpKSB7Ci0gICAgICAgICAgICAvLyBB
bGxvdyB0YXNrcyB3ZSBydW4gbm93IHRvIHNjaGVkdWxlIHdvcmsuCi0gICAgICAgICAgICBtX2N1
cnJlbnRseVJ1bm5pbmdUYXNrID0gdHJ1ZTsKLSAgICAgICAgICAgIG1fdGFza0xvY2sudW5sb2Nr
KCk7IAorICAgICAgICBhdXRvIHBlbmRpbmdUaWNrZXQgPSBtX3BlbmRpbmdUaWNrZXRzLmZpbmQo
dGlja2V0KTsKKyAgICAgICAgLy8gV2UgbWF5IGhhdmUgYWxyZWFkeSBjYW5jZWxlZCB0aGlzIHRh
c2sgb3IgaXRzIG93bmVyIG1heSBoYXZlIGJlZW4gY2FuY2VsZWQuCisgICAgICAgIGlmIChwZW5k
aW5nVGlja2V0ID09IG1fcGVuZGluZ1RpY2tldHMuZW5kKCkpCisgICAgICAgICAgICBjb250aW51
ZTsKKworICAgICAgICBTY3JpcHRFeGVjdXRpb25TdGF0dXMgc3RhdHVzID0gZ2xvYmFsT2JqZWN0
LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5zY3JpcHRFeGVjdXRpb25TdGF0dXMoZ2xvYmFs
T2JqZWN0LCBwZW5kaW5nVGlja2V0LT52YWx1ZS5zY3JpcHRFeGVjdXRpb25Pd25lci5nZXQoKSk7
CisgICAgICAgIHN3aXRjaCAoc3RhdHVzKSB7CisgICAgICAgIGNhc2UgU2NyaXB0RXhlY3V0aW9u
U3RhdHVzOjpTdXNwZW5kZWQ6CisgICAgICAgICAgICBzdXNwZW5kZWRUYXNrcy5hcHBlbmQoc3Rk
OjptYWtlX3R1cGxlKHRpY2tldCwgV1RGTW92ZSh0YXNrKSkpOworICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgIGNhc2UgU2NyaXB0RXhlY3V0aW9uU3RhdHVzOjpDYW5jZWxlZDoKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKworICAgICAgICAvLyBBbGxvdyB0YXNrcyB3ZSBhcmUgYWJvdXQgdG8gcnVuIHRv
IHNjaGVkdWxlIHdvcmsuCisgICAgICAgIG1fY3VycmVudGx5UnVubmluZ1Rhc2sgPSB0cnVlOwor
ICAgICAgICB7CisgICAgICAgICAgICBhdXRvIGRyb3BwZXIgPSBEcm9wTG9ja1Njb3BlKGxvY2tl
cik7CiAKICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIHN0YXJ0IG9mIGEgcnVubG9vcCB0dXJu
LCB3ZSBjYW4gcmVsZWFzZSBhbnkgd2Vha3JlZnMgaGVyZS4KICAgICAgICAgICAgIHZtLmZpbmFs
aXplU3luY2hyb25vdXNKU0V4ZWN1dGlvbigpOwpAQCAtNzUsMTYgKzkxLDE3IEBAIHZvaWQgRGVm
ZXJyZWRXb3JrVGltZXI6OmRvV29yayhWTSYgdm0pCiAKICAgICAgICAgICAgIHZtLmRyYWluTWlj
cm90YXNrcygpOwogICAgICAgICAgICAgQVNTRVJUKCF2bS5leGNlcHRpb25Gb3JJbnNwZWN0aW9u
KCkpOwotCi0gICAgICAgICAgICBtX3Rhc2tMb2NrLmxvY2soKTsKLSAgICAgICAgICAgIG1fY3Vy
cmVudGx5UnVubmluZ1Rhc2sgPSBmYWxzZTsKICAgICAgICAgfQorICAgICAgICBtX2N1cnJlbnRs
eVJ1bm5pbmdUYXNrID0gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKG1fcGVuZGluZ1RpY2tldHMu
aXNFbXB0eSgpICYmIG1fc2hvdWxkU3RvcFJ1bkxvb3BXaGVuQWxsVGlja2V0c0ZpbmlzaCkKLSAg
ICAgICAgUnVuTG9vcDo6Y3VycmVudCgpLnN0b3AoKTsKKyAgICB3aGlsZSAoIXN1c3BlbmRlZFRh
c2tzLmlzRW1wdHkoKSkKKyAgICAgICAgbV90YXNrcy5wcmVwZW5kKHN1c3BlbmRlZFRhc2tzLnRh
a2VMYXN0KCkpOwogCi0gICAgbV90YXNrTG9jay51bmxvY2soKTsKKyAgICBpZiAobV9wZW5kaW5n
VGlja2V0cy5pc0VtcHR5KCkgJiYgbV9zaG91bGRTdG9wUnVuTG9vcFdoZW5BbGxUaWNrZXRzRmlu
aXNoKSB7CisgICAgICAgIEFTU0VSVChtX3Rhc2tzLmlzRW1wdHkoKSk7CisgICAgICAgIFJ1bkxv
b3A6OmN1cnJlbnQoKS5zdG9wKCk7CisgICAgfQogfQogCiB2b2lkIERlZmVycmVkV29ya1RpbWVy
OjpydW5SdW5Mb29wKCkKQEAgLTEwMiwxNSArMTE5LDE1IEBAIHZvaWQgRGVmZXJyZWRXb3JrVGlt
ZXI6OmFkZFBlbmRpbmdXb3JrKFZNJiB2bSwgVGlja2V0IHRpY2tldCwgVmVjdG9yPFN0cm9uZzxK
U0NlCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRlcGVuZGVuY2llcy5zaXplKCk7ICsr
aSkKICAgICAgICAgQVNTRVJUKGRlcGVuZGVuY2llc1tpXS5nZXQoKSAhPSB0aWNrZXQpOwogCi0g
ICAgYXV0byByZXN1bHQgPSBtX3BlbmRpbmdUaWNrZXRzLmFkZCh0aWNrZXQsIFZlY3RvcjxTdHJv
bmc8SlNDZWxsPj4oKSk7Ci0gICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KSB7Ci0gICAgICAgIGRh
dGFMb2dMbklmKERlZmVycmVkV29ya1RpbWVySW50ZXJuYWw6OnZlcmJvc2UsICJBZGRpbmcgbmV3
IHBlbmRpbmcgdGlja2V0OiAiLCBSYXdQb2ludGVyKHRpY2tldCkpOworICAgIGF1dG8gZ2xvYmFs
T2JqZWN0ID0gdGlja2V0LT5nbG9iYWxPYmplY3QoKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fcGVu
ZGluZ1RpY2tldHMuZW5zdXJlKHRpY2tldCwgWyZdIHsKKyAgICAgICAgSlNPYmplY3QqIHNjcmlw
dEV4ZWN1dGlvbk93bmVyID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgp
LT5jdXJyZW50U2NyaXB0RXhlY3V0aW9uT3duZXIoZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgZGVw
ZW5kZW5jaWVzLmFwcGVuZChTdHJvbmc8SlNDZWxsPih2bSwgdGlja2V0KSk7Ci0gICAgICAgIHJl
c3VsdC5pdGVyYXRvci0+dmFsdWUgPSBXVEZNb3ZlKGRlcGVuZGVuY2llcyk7Ci0gICAgfSBlbHNl
IHsKLSAgICAgICAgZGF0YUxvZ0xuSWYoRGVmZXJyZWRXb3JrVGltZXJJbnRlcm5hbDo6dmVyYm9z
ZSwgIkFkZGluZyBuZXcgZGVwZW5kZW5jaWVzIGZvciB0aWNrZXQ6ICIsIFJhd1BvaW50ZXIodGlj
a2V0KSk7Ci0gICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuYXBwZW5kVmVjdG9yKGRlcGVu
ZGVuY2llcyk7Ci0gICAgfQorICAgICAgICByZXR1cm4gVGlja2V0RGF0YSB7IFdURk1vdmUoZGVw
ZW5kZW5jaWVzKSwgU3Ryb25nPEpTT2JqZWN0Pih2bSwgc2NyaXB0RXhlY3V0aW9uT3duZXIpIH07
CisgICAgfSk7CisgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgcmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZS5kZXBlbmRlbmNpZXMuYXBwZW5kVmVjdG9yKFdURk1vdmUoZGVwZW5kZW5j
aWVzKSk7CisgICAgZGF0YUxvZ0xuSWYoRGVmZXJyZWRXb3JrVGltZXJJbnRlcm5hbDo6dmVyYm9z
ZSwgIkFkZGluZyBuZXcgcGVuZGluZyB0aWNrZXQ6ICIsIFJhd1BvaW50ZXIodGlja2V0KSk7CiB9
CiAKIGJvb2wgRGVmZXJyZWRXb3JrVGltZXI6Omhhc1BlbmRpbmdXb3JrKFRpY2tldCB0aWNrZXQp
CkBAIC0xMjUsNyArMTQyLDcgQEAgYm9vbCBEZWZlcnJlZFdvcmtUaW1lcjo6aGFzRGVwZW5kYW5j
eUluUGVuZGluZ1dvcmsoVGlja2V0IHRpY2tldCwgSlNDZWxsKiBkZXBlbmQKICAgICBBU1NFUlQo
bV9wZW5kaW5nVGlja2V0cy5jb250YWlucyh0aWNrZXQpKTsKIAogICAgIGF1dG8gcmVzdWx0ID0g
bV9wZW5kaW5nVGlja2V0cy5nZXQodGlja2V0KTsKLSAgICByZXR1cm4gcmVzdWx0LmNvbnRhaW5z
KGRlcGVuZGVuY3kpOworICAgIHJldHVybiByZXN1bHQuZGVwZW5kZW5jaWVzLmNvbnRhaW5zKGRl
cGVuZGVuY3kpOwogfQogCiBib29sIERlZmVycmVkV29ya1RpbWVyOjpjYW5jZWxQZW5kaW5nV29y
ayhUaWNrZXQgdGlja2V0KQpAQCAtMTQ3LDQgKzE2NCwxMiBAQCB2b2lkIERlZmVycmVkV29ya1Rp
bWVyOjpzY2hlZHVsZVdvcmtTb29uKFRpY2tldCB0aWNrZXQsIFRhc2smJiB0YXNrKQogICAgICAg
ICBzZXRUaW1lVW50aWxGaXJlKDBfcyk7CiB9CiAKK3ZvaWQgRGVmZXJyZWRXb3JrVGltZXI6OnNj
cmlwdEV4ZWN1dGlvbk93bmVyV2FzVW5zdXNwZW5kZWQoKQoreworICAgIEFTU0VSVCghbV9jdXJy
ZW50bHlSdW5uaW5nVGFzayk7CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV90YXNrTG9jayk7Cisg
ICAgaWYgKCFpc1NjaGVkdWxlZCgpICYmIG1fdGFza3Muc2l6ZSgpKQorICAgICAgICBzZXRUaW1l
VW50aWxGaXJlKDBfcyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVmZXJyZWRXb3JrVGltZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0RlZmVycmVkV29ya1RpbWVyLmgKaW5kZXggMjcxYThhYmM5
ZWM0Mjg1NmU5ZGQzYTFjYzNiYzVjZTg2ZGI0ZjY5My4uNzgzMjI2NjFhM2VhNTQ3MDIzNTU2YWFk
ODViZTI4ODgwYWQyODBkZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRGVmZXJyZWRXb3JrVGltZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9EZWZlcnJlZFdvcmtUaW1lci5oCkBAIC01MSwxOCArNTEsMTkgQEAgcHVibGljOgogICAgIGJv
b2wgaGFzRGVwZW5kYW5jeUluUGVuZGluZ1dvcmsoVGlja2V0LCBKU0NlbGwqIGRlcGVuZGVuY3kp
OwogICAgIGJvb2wgY2FuY2VsUGVuZGluZ1dvcmsoVGlja2V0KTsKIAorICAgIC8vIElmIHRoZSBz
Y3JpcHQgZXhlY3V0aW9uIG93bmVyIHlvdXIgdGlja2V0IGlzIGFzc29jaWF0ZWQgd2l0aCBnZXRz
IGNhbmNlbGVkCisgICAgLy8gdGhlIFRhc2sgd2lsbCBub3QgYmUgY2FsbGVkIGFuZCB3aWxsIGJl
IGRlYWxsb2NhdGVkLiBTbyBpdCdzIGltcG9ydGFudAorICAgIC8vIHRvIG1ha2Ugc3VyZSB5b3Vy
IG1lbW9yeSBvd25lcnNoaXAgbW9kZWwgd29uJ3QgbGVhayBtZW1vcnkgd2hlbgorICAgIC8vIHRo
aXMgb2NjdXJzLiBUaGUgZWFzaWVzdCB3YXkgaXMgdG8gbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgaXMg
ZWl0aGVyIG93bmVkCisgICAgLy8gYnkgYSBHQydkIHZhbHVlIGluIGRlcGVuZGVuY2llcyBvciBi
eSB0aGUgVGFzayBsYW1iZGEuCiAgICAgdXNpbmcgVGFzayA9IEZ1bmN0aW9uPHZvaWQoKT47CiAg
ICAgdm9pZCBzY2hlZHVsZVdvcmtTb29uKFRpY2tldCwgVGFzayYmKTsKKyAgICB2b2lkIHNjcmlw
dEV4ZWN1dGlvbk93bmVyV2FzVW5zdXNwZW5kZWQoKTsKIAogICAgIHZvaWQgc3RvcFJ1bm5pbmdU
YXNrcygpIHsgbV9ydW5UYXNrcyA9IGZhbHNlOyB9Ci0KICAgICB2b2lkIHJ1blJ1bkxvb3AoKTsK
IAotICAgIHN0YXRpYyBSZWY8RGVmZXJyZWRXb3JrVGltZXI+IGNyZWF0ZShWTSYgdm0pCi0gICAg
ewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEZWZlcnJlZFdvcmtUaW1lcih2bSkpOwot
ICAgIH0KLQorICAgIHN0YXRpYyBSZWY8RGVmZXJyZWRXb3JrVGltZXI+IGNyZWF0ZShWTSYgdm0p
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGVmZXJyZWRXb3JrVGltZXIodm0pKTsgfQogcHJpdmF0
ZToKICAgICBEZWZlcnJlZFdvcmtUaW1lcihWTSYpOwogCkBAIC03MSw3ICs3MiwxMSBAQCBwcml2
YXRlOgogICAgIGJvb2wgbV9zaG91bGRTdG9wUnVuTG9vcFdoZW5BbGxUaWNrZXRzRmluaXNoIHsg
ZmFsc2UgfTsKICAgICBib29sIG1fY3VycmVudGx5UnVubmluZ1Rhc2sgeyBmYWxzZSB9OwogICAg
IERlcXVlPHN0ZDo6dHVwbGU8VGlja2V0LCBUYXNrPj4gbV90YXNrczsKLSAgICBIYXNoTWFwPFRp
Y2tldCwgVmVjdG9yPFN0cm9uZzxKU0NlbGw+Pj4gbV9wZW5kaW5nVGlja2V0czsKKyAgICBzdHJ1
Y3QgVGlja2V0RGF0YSB7CisgICAgICAgIFZlY3RvcjxTdHJvbmc8SlNDZWxsPj4gZGVwZW5kZW5j
aWVzOworICAgICAgICBTdHJvbmc8SlNPYmplY3Q+IHNjcmlwdEV4ZWN1dGlvbk93bmVyOworICAg
IH07CisgICAgSGFzaE1hcDxUaWNrZXQsIFRpY2tldERhdGE+IG1fcGVuZGluZ1RpY2tldHM7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRmluYWxpemF0aW9uUmVnaXN0cnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5jcHAKaW5kZXggNTQ5YjlkOTA5MjVj
NjI3OGQxNzFmM2NlNzgwMTk5YWNhNTQ4OGEwMi4uNGUyODgyOWQ1NzJlZDNiZDQ5NTdiMDBhZTE0
NmI0MmExM2ExZWM4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGaW5hbGl6YXRpb25SZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5jcHAKQEAgLTQyLDExICs0MiwxMSBAQCBTdHJ1
Y3R1cmUqIEpTRmluYWxpemF0aW9uUmVnaXN0cnk6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYQogSlNGaW5hbGl6YXRpb25SZWdpc3RyeSogSlNGaW5hbGl6YXRp
b25SZWdpc3RyeTo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTT2JqZWN0
KiBjYWxsYmFjaykKIHsKICAgICBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5KiBpbnN0YW5jZSA9IG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTRmluYWxpemF0aW9uUmVnaXN0cnk+KHZtLmhlYXAp
KSBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5KHZtLCBzdHJ1Y3R1cmUpOwotICAgIGluc3RhbmNlLT5m
aW5pc2hDcmVhdGlvbih2bSwgY2FsbGJhY2spOworICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlv
bih2bSwgc3RydWN0dXJlLT5nbG9iYWxPYmplY3QoKSwgY2FsbGJhY2spOwogICAgIHJldHVybiBp
bnN0YW5jZTsKIH0KIAotdm9pZCBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5OjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIEpTT2JqZWN0KiBjYWxsYmFjaykKK3ZvaWQgSlNGaW5hbGl6YXRpb25SZWdpc3Ry
eTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U09iamVjdCogY2FsbGJhY2spCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAg
IEFTU0VSVChjYWxsYmFjay0+aXNDYWxsYWJsZSh2bSkpOwpAQCAtNTQsNiArNTQsMTAgQEAgdm9p
ZCBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTT2JqZWN0
KiBjYWxsYmFjaykKICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCB2YWx1ZXMu
c2l6ZSgpOyArK2luZGV4KQogICAgICAgICBCYXNlOjppbnRlcm5hbEZpZWxkKGluZGV4KS5zZXRX
aXRob3V0V3JpdGVCYXJyaWVyKHZhbHVlc1tpbmRleF0pOwogICAgIGludGVybmFsRmllbGQoRmll
bGQ6OkNhbGxiYWNrKS5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKGNhbGxiYWNrKTsKKworICAgIC8v
IE1ha2Ugc3VyZSB3ZSBpbml0IHRoZSBET00gd3JhcHBlciBmb3Igb3VyIGRvY3VtZW50IHNpbmNl
IGl0IG11c3QgYmUgYWxsb2NhdGVkIGJlZm9yZSBmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSBpcyBj
YWxsZWQuIGZpbmFsaXplVW5jb25kaXRpb25hbGx5LAorICAgIC8vIGlzIGNhbGxlZCBkdXJpbmcg
dGhlIEdDIGZsaXAgc28gbm8gSlMgb2JqZWN0cyBjYW4gYmUgYWxsb2NhdGVkIHRoZXJlLiBUaGlz
IG9ubHkgd29ya3MgYmVjYXVzZSB3ZSBubyBsb25nZXIgd2Vha2x5IGhvbGQgb24gdG8gRE9NIHdy
YXBwZXJzLgorICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+Y3Vy
cmVudFNjcmlwdEV4ZWN1dGlvbk93bmVyKGdsb2JhbE9iamVjdCk7CiB9CiAKIHZvaWQgSlNGaW5h
bGl6YXRpb25SZWdpc3RyeTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNG
aW5hbGl6YXRpb25SZWdpc3RyeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNG
aW5hbGl6YXRpb25SZWdpc3RyeS5oCmluZGV4IDZkNWNkMzhjZjBiYTdkODI5OTFjZGI1YzBhYWEx
ZmY2NDQyYWY2MzMuLjc1ZDY3NmJiODVjZmNjZjBmYWY2ZTYwMGUwY2YxMmU0MDFkOGM5ZmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRmluYWxpemF0aW9uUmVn
aXN0cnkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ZpbmFsaXphdGlv
blJlZ2lzdHJ5LmgKQEAgLTg5LDcgKzg5LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQogCi0g
ICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTT2JqZWN0KiBj
YWxsYmFjayk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYs
IEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIGNhbGxiYWNrKTsKIAogICAgIHN0YXRpYyBTdHJp
bmcgdG9TdHJpbmdOYW1lKGNvbnN0IEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4
IDA2OWJiODI4MTJhNmY0YTVjMzJmZGY0NTI0MmU3MTM5ODkwNDYwMDcuLjhmZDM0MTA3ZTc1NzM3
YTJlYWRiZjZlNmU2MTdlNzhmMWFmYjc2ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTQxMiw2ICs0MTIsOCBAQCBjb25zdCBH
bG9iYWxPYmplY3RNZXRob2RUYWJsZSBKU0dsb2JhbE9iamVjdDo6c19nbG9iYWxPYmplY3RNZXRo
b2RUYWJsZSA9IHsKICAgICBudWxscHRyLCAvLyBtb2R1bGVMb2FkZXJFdmFsdWF0ZQogICAgIG51
bGxwdHIsIC8vIHByb21pc2VSZWplY3Rpb25UcmFja2VyCiAgICAgJnJlcG9ydFVuY2F1Z2h0RXhj
ZXB0aW9uQXRFdmVudExvb3AsCisgICAgJmN1cnJlbnRTY3JpcHRFeGVjdXRpb25Pd25lciwKKyAg
ICAmc2NyaXB0RXhlY3V0aW9uU3RhdHVzLAogICAgIG51bGxwdHIsIC8vIGRlZmF1bHRMYW5ndWFn
ZQogICAgIG51bGxwdHIsIC8vIGNvbXBpbGVTdHJlYW1pbmcKICAgICBudWxscHRyLCAvLyBpbnN0
YW50aWF0ZVN0cmVhbWluZwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmgKaW5kZXggOTc1NjRlOWMyZGU1NmM5MWVlYWU1MmRiOTUyMDY2MGJhZDU4N2Nm
Yy4uOTQ4N2ZiYzk1NDczY2VhNWViMTJlMTQxOTEyMDAyZDYzNTRmMzEwMyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC0xOTUsNiArMTk1
LDEyIEBAIGVudW0gY2xhc3MgSlNQcm9taXNlUmVqZWN0aW9uT3BlcmF0aW9uIDogdW5zaWduZWQg
ewogICAgIEhhbmRsZSwgLy8gV2hlbiBhIGhhbmRsZXIgaXMgYWRkZWQgdG8gYSByZWplY3RlZCBw
cm9taXNlIGZvciB0aGUgZmlyc3QgdGltZS4KIH07CiAKK2VudW0gY2xhc3MgU2NyaXB0RXhlY3V0
aW9uU3RhdHVzIHsKKyAgICBSdW5uaW5nLAorICAgIFN1c3BlbmRlZCwKKyAgICBDYW5jZWxlZCwK
K307CisKIHN0cnVjdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSB7CiAgICAgdHlwZWRlZiBib29s
ICgqU3VwcG9ydHNSaWNoU291cmNlSW5mb0Z1bmN0aW9uUHRyKShjb25zdCBKU0dsb2JhbE9iamVj
dCopOwogICAgIFN1cHBvcnRzUmljaFNvdXJjZUluZm9GdW5jdGlvblB0ciBzdXBwb3J0c1JpY2hT
b3VyY2VJbmZvOwpAQCAtMjMyLDYgKzIzOCwxMyBAQCBzdHJ1Y3QgR2xvYmFsT2JqZWN0TWV0aG9k
VGFibGUgewogICAgIHR5cGVkZWYgdm9pZCAoKlJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVu
dExvb3BQdHIpKEpTR2xvYmFsT2JqZWN0KiwgRXhjZXB0aW9uKik7CiAgICAgUmVwb3J0VW5jYXVn
aHRFeGNlcHRpb25BdEV2ZW50TG9vcFB0ciByZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRM
b29wOwogCisgICAgLy8gRm9yIG1vc3QgY29udGV4dHMgdGhpcyBpcyBqdXN0IHRoZSBnbG9iYWwg
b2JqZWN0LiBGb3IgSlNET01XaW5kb3csIGhvd2V2ZXIsIHRoaXMgaXMgdGhlIEpTRG9jdW1lbnQu
CisgICAgdHlwZWRlZiBKU09iamVjdCogKCpDdXJyZW50U2NyaXB0RXhlY3V0aW9uT3duZXJQdHIp
KEpTR2xvYmFsT2JqZWN0Kik7CisgICAgQ3VycmVudFNjcmlwdEV4ZWN1dGlvbk93bmVyUHRyIGN1
cnJlbnRTY3JpcHRFeGVjdXRpb25Pd25lcjsKKworICAgIHR5cGVkZWYgU2NyaXB0RXhlY3V0aW9u
U3RhdHVzICgqU2NyaXB0RXhlY3V0aW9uU3RhdHVzUHRyKShKU0dsb2JhbE9iamVjdCosIEpTT2Jq
ZWN0KiBzY3JpcHRFeGVjdXRpb25Pd25lcik7CisgICAgU2NyaXB0RXhlY3V0aW9uU3RhdHVzUHRy
IHNjcmlwdEV4ZWN1dGlvblN0YXR1czsKKwogICAgIHR5cGVkZWYgU3RyaW5nICgqRGVmYXVsdExh
bmd1YWdlRnVuY3Rpb25QdHIpKCk7CiAgICAgRGVmYXVsdExhbmd1YWdlRnVuY3Rpb25QdHIgZGVm
YXVsdExhbmd1YWdlOwogCkBAIC04NTMsNiArODY2LDggQEAgcHVibGljOgogICAgIEpTT2JqZWN0
KiB1bmhhbmRsZWRSZWplY3Rpb25DYWxsYmFjaygpIGNvbnN0IHsgcmV0dXJuIG1fdW5oYW5kbGVk
UmVqZWN0aW9uQ2FsbGJhY2suZ2V0KCk7IH0KIAogICAgIHN0YXRpYyB2b2lkIHJlcG9ydFVuY2F1
Z2h0RXhjZXB0aW9uQXRFdmVudExvb3AoSlNHbG9iYWxPYmplY3QqLCBFeGNlcHRpb24qKTsKKyAg
ICBzdGF0aWMgSlNPYmplY3QqIGN1cnJlbnRTY3JpcHRFeGVjdXRpb25Pd25lcihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsKSB7IHJldHVybiBnbG9iYWw7IH0KKyAgICBzdGF0aWMgU2NyaXB0RXhlY3V0
aW9uU3RhdHVzIHNjcmlwdEV4ZWN1dGlvblN0YXR1cyhKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0
KikgeyByZXR1cm4gU2NyaXB0RXhlY3V0aW9uU3RhdHVzOjpSdW5uaW5nOyB9CiAKICAgICBKU09i
amVjdCogYXJyYXlCdWZmZXJDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fYXJyYXlCdWZm
ZXJTdHJ1Y3R1cmUuY29uc3RydWN0b3IodGhpcyk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvTG9ja2VyLmggYi9Tb3VyY2UvV1RGL3d0Zi9Mb2NrZXIuaAppbmRleCBhNzg5ZTAzZTA5
NThlY2JlNGYzMmY0ZDk0ZjMxNjEzNTQ0YmQzNjg4Li5hZTcyNDkzOTY0Y2I3ZDU3ZmFlMDNkYjBh
N2Q2ODExYThjZGM4Zjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Mb2NrZXIuaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9Mb2NrZXIuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgPHd0
Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0F0b21pY3MuaD4KICNpbmNsdWRlIDx3dGYv
Q29tcGlsZXIuaD4KKyNpbmNsdWRlIDx3dGYvRm9yYmlkSGVhcEFsbG9jYXRpb24uaD4KICNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FuaXRpemVyU3Vw
cG9ydC5oPgogCkBAIC01MSw3ICs1MiwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgfQogfTsKIAotdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIExvY2tlciA6IHB1YmxpYyBBYnN0cmFjdExvY2tlciB7
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBEcm9wTG9ja1Njb3BlOworCit0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgorY2xhc3MgTG9ja2VyIDogcHVibGljIEFic3RyYWN0TG9ja2VyIHsKIHB1Ymxp
YzoKICAgICBleHBsaWNpdCBMb2NrZXIoVCYgbG9ja2FibGUpIDogbV9sb2NrYWJsZSgmbG9ja2Fi
bGUpIHsgbG9jaygpOyB9CiAgICAgZXhwbGljaXQgTG9ja2VyKFQqIGxvY2thYmxlKSA6IG1fbG9j
a2FibGUobG9ja2FibGUpIHsgbG9jaygpOyB9CkBAIC02MywxNSArNjcsMTEgQEAgcHVibGljOgog
ICAgIC8vIGJlIGFjY2Vzc2VkIGNvbmN1cnJlbnRseS4KICAgICBMb2NrZXIoTm9Mb2NraW5nTmVj
ZXNzYXJ5VGFnKSA6IG1fbG9ja2FibGUobnVsbHB0cikgeyB9CiAgICAgCi0gICAgTG9ja2VyKGlu
dCkgPSBkZWxldGU7CisgICAgTG9ja2VyKHN0ZDo6dW5kZXJseWluZ190eXBlX3Q8Tm9Mb2NraW5n
TmVjZXNzYXJ5VGFnPikgPSBkZWxldGU7CiAKICAgICB+TG9ja2VyKCkKICAgICB7Ci0gICAgICAg
IGNvbXBpbGVyRmVuY2UoKTsKLSAgICAgICAgaWYgKG1fbG9ja2FibGUpIHsKLSAgICAgICAgICAg
IFRTQU5fQU5OT1RBVEVfSEFQUEVOU19CRUZPUkUobV9sb2NrYWJsZSk7Ci0gICAgICAgICAgICBt
X2xvY2thYmxlLT51bmxvY2soKTsKLSAgICAgICAgfQorICAgICAgICB1bmxvY2soKTsKICAgICB9
CiAgICAgCiAgICAgc3RhdGljIExvY2tlciB0cnlMb2NrKFQmIGxvY2thYmxlKQpAQCAtODgsOCAr
ODgsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCB1bmxvY2tFYXJseSgpCiAgICAgewotICAg
ICAgICBUU0FOX0FOTk9UQVRFX0hBUFBFTlNfQkVGT1JFKG1fbG9ja2FibGUpOwotICAgICAgICBt
X2xvY2thYmxlLT51bmxvY2soKTsKKyAgICAgICAgdW5sb2NrKCk7CiAgICAgICAgIG1fbG9ja2Fi
bGUgPSBudWxscHRyOwogICAgIH0KICAgICAKQEAgLTk4LDIxICs5NywzMSBAQCBwdWJsaWM6CiAg
ICAgTG9ja2VyKExvY2tlciYmIG90aGVyKQogICAgICAgICA6IG1fbG9ja2FibGUob3RoZXIubV9s
b2NrYWJsZSkKICAgICB7CisgICAgICAgIEFTU0VSVCgmb3RoZXIgIT0gdGhpcyk7CiAgICAgICAg
IG90aGVyLm1fbG9ja2FibGUgPSBudWxscHRyOwogICAgIH0KICAgICAKICAgICBMb2NrZXImIG9w
ZXJhdG9yPShMb2NrZXImJiBvdGhlcikKICAgICB7Ci0gICAgICAgIGlmIChtX2xvY2thYmxlKSB7
Ci0gICAgICAgICAgICBUU0FOX0FOTk9UQVRFX0hBUFBFTlNfQkVGT1JFKG1fbG9ja2FibGUpOwot
ICAgICAgICAgICAgbV9sb2NrYWJsZS0+dW5sb2NrKCk7Ci0gICAgICAgIH0KKyAgICAgICAgQVNT
RVJUKCZvdGhlciAhPSB0aGlzKTsKICAgICAgICAgbV9sb2NrYWJsZSA9IG90aGVyLm1fbG9ja2Fi
bGU7CiAgICAgICAgIG90aGVyLm1fbG9ja2FibGUgPSBudWxscHRyOwogICAgICAgICByZXR1cm4g
KnRoaXM7CiAgICAgfQogICAgIAogcHJpdmF0ZToKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZT4KKyAg
ICBmcmllbmQgY2xhc3MgRHJvcExvY2tTY29wZTsKKworICAgIHZvaWQgdW5sb2NrKCkKKyAgICB7
CisgICAgICAgIGNvbXBpbGVyRmVuY2UoKTsKKyAgICAgICAgaWYgKG1fbG9ja2FibGUpIHsKKyAg
ICAgICAgICAgIFRTQU5fQU5OT1RBVEVfSEFQUEVOU19CRUZPUkUobV9sb2NrYWJsZSk7CisgICAg
ICAgICAgICBtX2xvY2thYmxlLT51bmxvY2soKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHZv
aWQgbG9jaygpCiAgICAgewogICAgICAgICBpZiAobV9sb2NrYWJsZSkgewpAQCAtMTUxLDYgKzE2
MCwyNSBAQCBMb2NrZXI8TG9ja1R5cGU+IHRyeUhvbGRMb2NrKExvY2tUeXBlJiBsb2NrKQogICAg
IHJldHVybiBMb2NrZXI8TG9ja1R5cGU+Ojp0cnlMb2NrKGxvY2spOwogfQogCit0ZW1wbGF0ZTx0
eXBlbmFtZSBMb2NrVHlwZT4KK2NsYXNzIERyb3BMb2NrU2NvcGUgOiBwcml2YXRlIEFic3RyYWN0
TG9ja2VyIHsKKyAgICBXVEZfRk9SQklEX0hFQVBfQUxMT0NBVElPTihEcm9wTG9ja1Njb3BlKTsK
K3B1YmxpYzoKKyAgICBEcm9wTG9ja1Njb3BlKExvY2tlcjxMb2NrVHlwZT4mIGxvY2spCisgICAg
ICAgIDogbV9sb2NrKGxvY2spCisgICAgeworICAgICAgICBtX2xvY2sudW5sb2NrKCk7CisgICAg
fQorCisgICAgfkRyb3BMb2NrU2NvcGUoKQorICAgIHsKKyAgICAgICAgbV9sb2NrLmxvY2soKTsK
KyAgICB9CisKK3ByaXZhdGU6CisgICAgTG9ja2VyPExvY2tUeXBlPiYgbV9sb2NrOworfTsKKwog
fQogCiB1c2luZyBXVEY6OkFic3RyYWN0TG9ja2VyOwpAQCAtMTU5LDMgKzE4Nyw0IEBAIHVzaW5n
IFdURjo6Tm9Mb2NraW5nTmVjZXNzYXJ5VGFnOwogdXNpbmcgV1RGOjpOb0xvY2tpbmdOZWNlc3Nh
cnk7CiB1c2luZyBXVEY6OmhvbGRMb2NrOwogdXNpbmcgV1RGOjpob2xkTG9ja0lmOwordXNpbmcg
V1RGOjpEcm9wTG9ja1Njb3BlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V2luZG93QmFzZS5jcHAKaW5kZXggZjkzZTNmZDMxYzY1ZTRiMmU1MjI3NDU3OTg3M2FhYTFkYzRm
NzE2Yy4uOTk4OTBmYjRjZTVhZGUxZDM1ZjM5NGU2NjRkYjcyNDBkNmUyNmU1MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCkBAIC04MCw2ICs4
MCw4IEBAIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTRE9NV2luZG93QmFzZTo6c19n
bG9iYWxPYmplY3RNZXRob2RUYWJsZSA9IHsKICAgICAmbW9kdWxlTG9hZGVyRXZhbHVhdGUsCiAg
ICAgJnByb21pc2VSZWplY3Rpb25UcmFja2VyLAogICAgICZyZXBvcnRVbmNhdWdodEV4Y2VwdGlv
bkF0RXZlbnRMb29wLAorICAgICZjdXJyZW50U2NyaXB0RXhlY3V0aW9uT3duZXIsCisgICAgJnNj
cmlwdEV4ZWN1dGlvblN0YXR1cywKICAgICAmZGVmYXVsdExhbmd1YWdlLAogI2lmIEVOQUJMRShX
RUJBU1NFTUJMWSkKICAgICAmY29tcGlsZVN0cmVhbWluZywKQEAgLTIzMSw2ICsyMzMsMTkgQEAg
dm9pZCBKU0RPTVdpbmRvd0Jhc2U6OnF1ZXVlTWljcm90YXNrVG9FdmVudExvb3AoSlNHbG9iYWxP
YmplY3QmIG9iamVjdCwgUmVmPEpTQzoKICAgICB9KTsKIH0KIAorSlNDOjpKU09iamVjdCogSlNE
T01XaW5kb3dCYXNlOjpjdXJyZW50U2NyaXB0RXhlY3V0aW9uT3duZXIoSlNHbG9iYWxPYmplY3Qq
IG9iamVjdCkKK3sKKyAgICBKU0RPTVdpbmRvd0Jhc2UqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2Fz
dDxKU0RPTVdpbmRvd0Jhc2UqPihvYmplY3QpOworCisgICAgcmV0dXJuIGpzQ2FzdDxKU09iamVj
dCo+KHRvSlModGhpc09iamVjdCwgdGhpc09iamVjdCwgdGhpc09iamVjdC0+d3JhcHBlZCgpLmRv
Y3VtZW50KCkpKTsKK30KKworSlNDOjpTY3JpcHRFeGVjdXRpb25TdGF0dXMgSlNET01XaW5kb3dC
YXNlOjpzY3JpcHRFeGVjdXRpb25TdGF0dXMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6SlNP
YmplY3QqIG93bmVyKQoreworICAgIGF1dG8qIGRvY3VtZW50ID0ganNDYXN0PEpTRG9jdW1lbnQq
Pihvd25lcik7CisgICAgcmV0dXJuIGRvY3VtZW50LT53cmFwcGVkKCkuanNjU2NyaXB0RXhlY3V0
aW9uU3RhdHVzKCk7Cit9CisKIHZvaWQgSlNET01XaW5kb3dCYXNlOjp3aWxsUmVtb3ZlRnJvbVdp
bmRvd1Byb3h5KCkKIHsKICAgICBzZXRDdXJyZW50RXZlbnQoMCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5oCmluZGV4IGVjNmRkYzE3MDIxMDhlOTljZjk5
ZGMzNjMzNWUyNWUwMDY0NWQ4NWEuLjEwNTAzZmUzOWM4OWRlNjMxOGUzZjcyODdiYWM0NWQ3Nzk1
MjJjZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5o
CkBAIC03OCw2ICs3OCw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcnJ1
cHRTY3JpcHRCZWZvcmVUaW1lb3V0KGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICBz
dGF0aWMgSlNDOjpSdW50aW1lRmxhZ3MgamF2YVNjcmlwdFJ1bnRpbWVGbGFncyhjb25zdCBKU0M6
OkpTR2xvYmFsT2JqZWN0Kik7CiAgICAgc3RhdGljIHZvaWQgcXVldWVNaWNyb3Rhc2tUb0V2ZW50
TG9vcChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgUmVmPEpTQzo6TWljcm90YXNrPiYmKTsKKyAgICBz
dGF0aWMgSlNDOjpKU09iamVjdCogY3VycmVudFNjcmlwdEV4ZWN1dGlvbk93bmVyKEpTQzo6SlNH
bG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMgSlNDOjpTY3JpcHRFeGVjdXRpb25TdGF0dXMgc2Ny
aXB0RXhlY3V0aW9uU3RhdHVzKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkpTT2JqZWN0Kik7
CiAKICAgICB2b2lkIHByaW50RXJyb3JNZXNzYWdlKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXJDYWNoZS5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyQ2FjaGUuaAppbmRleCBh
YzY5N2FmZDcyYWU5Mjc0Y2E0MmU3MjIwNThlNGRkYThhNzkyZjBlLi5hZWYxMmJkMjMwMjVlNzBm
OWNkNzMwMWU2OWY4ZmM5ZjIyMTU5ZjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVdyYXBwZXJDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV3JhcHBlckNhY2hlLmgKQEAgLTU4LDYgKzU4LDggQEAgYm9vbCBjbGVhcklubGlu
ZUNhY2hlZFdyYXBwZXIoRE9NV3JhcHBlcldvcmxkJiwgdm9pZCosIEpTRE9NT2JqZWN0Kik7CiBi
b29sIGNsZWFySW5saW5lQ2FjaGVkV3JhcHBlcihET01XcmFwcGVyV29ybGQmLCBTY3JpcHRXcmFw
cGFibGUqLCBKU0RPTU9iamVjdCogd3JhcHBlcik7CiBib29sIGNsZWFySW5saW5lQ2FjaGVkV3Jh
cHBlcihET01XcmFwcGVyV29ybGQmLCBKU0M6OkFycmF5QnVmZmVyKiwgSlNDOjpKU0FycmF5QnVm
ZmVyKiB3cmFwcGVyKTsKIAordGVtcGxhdGU8dHlwZW5hbWUgRE9NQ2xhc3M+IEpTQzo6SlNPYmpl
Y3QqIGdldE9yQ3JlYXRlV3JhcHBlcihET01XcmFwcGVyV29ybGQmLCBET01DbGFzcyYpOworCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBET01DbGFzcz4gSlNDOjpKU09iamVjdCogZ2V0Q2FjaGVkV3JhcHBl
cihET01XcmFwcGVyV29ybGQmLCBET01DbGFzcyYpOwogdGVtcGxhdGU8dHlwZW5hbWUgRE9NQ2xh
c3M+IGlubGluZSBKU0M6OkpTT2JqZWN0KiBnZXRDYWNoZWRXcmFwcGVyKERPTVdyYXBwZXJXb3Js
ZCYgd29ybGQsIFJlZjxET01DbGFzcz4mIG9iamVjdCkgeyByZXR1cm4gZ2V0Q2FjaGVkV3JhcHBl
cih3b3JsZCwgb2JqZWN0LmdldCgpKTsgfQogdGVtcGxhdGU8dHlwZW5hbWUgRE9NQ2xhc3MsIHR5
cGVuYW1lIFdyYXBwZXJDbGFzcz4gdm9pZCBjYWNoZVdyYXBwZXIoRE9NV3JhcHBlcldvcmxkJiwg
RE9NQ2xhc3MqLCBXcmFwcGVyQ2xhc3MqKTsKQEAgLTY1LDYgKzY3LDcgQEAgdGVtcGxhdGU8dHlw
ZW5hbWUgRE9NQ2xhc3MsIHR5cGVuYW1lIFdyYXBwZXJDbGFzcz4gdm9pZCB1bmNhY2hlV3JhcHBl
cihET01XcmFwcGUKIHRlbXBsYXRlPHR5cGVuYW1lIERPTUNsYXNzLCB0eXBlbmFtZSBUPiBhdXRv
IGNyZWF0ZVdyYXBwZXIoSlNET01HbG9iYWxPYmplY3QqLCBSZWY8VD4mJikgLT4gdHlwZW5hbWUg
c3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPERPTUNsYXNzLCBUPjo6dmFsdWUsIHR5cGVuYW1l
IEpTRE9NV3JhcHBlckNvbnZlcnRlclRyYWl0czxET01DbGFzcz46OldyYXBwZXJDbGFzcyo+Ojp0
eXBlOwogdGVtcGxhdGU8dHlwZW5hbWUgRE9NQ2xhc3MsIHR5cGVuYW1lIFQ+IGF1dG8gY3JlYXRl
V3JhcHBlcihKU0RPTUdsb2JhbE9iamVjdCosIFJlZjxUPiYmKSAtPiB0eXBlbmFtZSBzdGQ6OmVu
YWJsZV9pZjwhc3RkOjppc19zYW1lPERPTUNsYXNzLCBUPjo6dmFsdWUsIHR5cGVuYW1lIEpTRE9N
V3JhcHBlckNvbnZlcnRlclRyYWl0czxET01DbGFzcz46OldyYXBwZXJDbGFzcyo+Ojp0eXBlOwog
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBET01DbGFzcz4gSlNDOjpKU1ZhbHVlIHdyYXAoSlNDOjpKU0ds
b2JhbE9iamVjdCosIERPTVdyYXBwZXJXb3JsZCYsIERPTUNsYXNzJik7CiB0ZW1wbGF0ZTx0eXBl
bmFtZSBET01DbGFzcz4gSlNDOjpKU1ZhbHVlIHdyYXAoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
RE9NR2xvYmFsT2JqZWN0KiwgRE9NQ2xhc3MmKTsKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKaW5kZXggYzQ0ZjJm
YjNhMGIwNWRhYWIxYThhOWUyZjg5YjUyZDg1MWViNDM2OC4uN2U0ODk2ZGFhNjI4MDAxZjg0M2Rk
Y2FjYTJkNWVhMDMzMTNiYmQ4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcApAQCAtNjYsNiArNjYsOCBAQCBjb25z
dCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6c19nbG9i
YWxPYmplY3RNZXRob2RUYWJsZQogICAgIG51bGxwdHIsIC8vIG1vZHVsZUxvYWRlckV2YWx1YXRl
CiAgICAgJnByb21pc2VSZWplY3Rpb25UcmFja2VyLAogICAgICZyZXBvcnRVbmNhdWdodEV4Y2Vw
dGlvbkF0RXZlbnRMb29wLAorICAgICZjdXJyZW50U2NyaXB0RXhlY3V0aW9uT3duZXIsCisgICAg
JnNjcmlwdEV4ZWN1dGlvblN0YXR1cywKICAgICAmZGVmYXVsdExhbmd1YWdlLAogICAgIG51bGxw
dHIsIC8vIGNvbXBpbGVTdHJlYW1pbmcKICAgICBudWxscHRyLCAvLyBpbnN0YW50aWF0ZVN0cmVh
bWluZwpAQCAtMTMxLDYgKzEzMywxMyBAQCBSdW50aW1lRmxhZ3MgSlNXb3JrZXJHbG9iYWxTY29w
ZUJhc2U6OmphdmFTY3JpcHRSdW50aW1lRmxhZ3MoY29uc3QgSlNHbG9iYWxPYmplYwogICAgIHJl
dHVybiB0aGlzT2JqZWN0LT5tX3dyYXBwZWQtPnRocmVhZCgpLnJ1bnRpbWVGbGFncygpOwogfQog
CitKU0M6OlNjcmlwdEV4ZWN1dGlvblN0YXR1cyBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6c2Ny
aXB0RXhlY3V0aW9uU3RhdHVzKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
OjpKU09iamVjdCogb3duZXIpCit7CisgICAgQVNTRVJUX1VOVVNFRChvd25lciwgZ2xvYmFsT2Jq
ZWN0ID09IG93bmVyKTsKKyAgICBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZSogdGhpc09iamVjdCA9
IGpzQ2FzdDxKU1dvcmtlckdsb2JhbFNjb3BlQmFzZSo+KGdsb2JhbE9iamVjdCk7CisgICAgcmV0
dXJuIHRoaXNPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+anNjU2NyaXB0RXhlY3V0
aW9uU3RhdHVzKCk7Cit9CisKIHZvaWQgSlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OnF1ZXVlTWlj
cm90YXNrVG9FdmVudExvb3AoSlNHbG9iYWxPYmplY3QmIG9iamVjdCwgUmVmPEpTQzo6TWljcm90
YXNrPiYmIHRhc2spCiB7CiAgICAgSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UmIHRoaXNPYmplY3Qg
PSBzdGF0aWNfY2FzdDxKU1dvcmtlckdsb2JhbFNjb3BlQmFzZSY+KG9iamVjdCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuaApp
bmRleCA5ZmUxMjljZGY2MWMxYTA4YmVhNDhmNzAwZDRlYWRjYzZlYTZmZjIyLi5kNDQ5ODcxMjk0
NmFlNWY2ZjAxODc4Njg0ZTQ2OTk3YjFmZWMxN2EwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmgKQEAgLTczLDYgKzczLDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIHNob3VsZEludGVycnVwdFNjcmlwdChjb25zdCBK
U0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJydXB0U2Ny
aXB0QmVmb3JlVGltZW91dChjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAgICAgc3RhdGlj
IEpTQzo6UnVudGltZUZsYWdzIGphdmFTY3JpcHRSdW50aW1lRmxhZ3MoY29uc3QgSlNDOjpKU0ds
b2JhbE9iamVjdCopOworICAgIHN0YXRpYyBKU0M6OlNjcmlwdEV4ZWN1dGlvblN0YXR1cyBzY3Jp
cHRFeGVjdXRpb25TdGF0dXMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6SlNPYmplY3QqKTsK
ICAgICBzdGF0aWMgdm9pZCBxdWV1ZU1pY3JvdGFza1RvRXZlbnRMb29wKEpTQzo6SlNHbG9iYWxP
YmplY3QmLCBSZWY8SlNDOjpNaWNyb3Rhc2s+JiYpOwogCiAgICAgdm9pZCBjbGVhckRPTUd1YXJk
ZWRPYmplY3RzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dv
cmtsZXRHbG9iYWxTY29wZUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNX
b3JrbGV0R2xvYmFsU2NvcGVCYXNlLmNwcAppbmRleCAzMjNkZWU3OGQ4YmJlYzllY2VlMTU2Yjkz
M2VhZDA4NjE0MTk3YThlLi42MzEyZTU4OTc3NTVlMWFmOTNhZjQwMTYxOWI1YzQ5M2I5YzFjNmIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxT
Y29wZUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2xldEds
b2JhbFNjb3BlQmFzZS5jcHAKQEAgLTU2LDYgKzU2LDggQEAgY29uc3QgR2xvYmFsT2JqZWN0TWV0
aG9kVGFibGUgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpzX2dsb2JhbE9iamVjdE1ldGhvZFRh
YmwKICAgICBudWxscHRyLCAvLyBtb2R1bGVMb2FkZXJFdmFsdWF0ZQogICAgICZwcm9taXNlUmVq
ZWN0aW9uVHJhY2tlciwKICAgICAmcmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcCwK
KyAgICAmY3VycmVudFNjcmlwdEV4ZWN1dGlvbk93bmVyLAorICAgICZzY3JpcHRFeGVjdXRpb25T
dGF0dXMsCiAgICAgJmRlZmF1bHRMYW5ndWFnZSwKICAgICBudWxscHRyLCAvLyBjb21waWxlU3Ry
ZWFtaW5nCiAgICAgbnVsbHB0ciwgLy8gaW5zdGFudGlhdGVTdHJlYW1pbmcKQEAgLTEwMCw2ICsx
MDIsMTMgQEAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNl
OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKICAgICByZXR1cm4gbV93cmFwcGVkLmdl
dCgpOwogfQogCitKU0M6OlNjcmlwdEV4ZWN1dGlvblN0YXR1cyBKU1dvcmtsZXRHbG9iYWxTY29w
ZUJhc2U6OnNjcmlwdEV4ZWN1dGlvblN0YXR1cyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQzo6SlNPYmplY3QqIG93bmVyKQoreworICAgIEFTU0VSVF9VTlVTRUQob3duZXIs
IGdsb2JhbE9iamVjdCA9PSBvd25lcik7CisgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxK
U1dvcmtsZXRHbG9iYWxTY29wZUJhc2UqPihnbG9iYWxPYmplY3QpOworICAgIHJldHVybiB0aGlz
T2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmpzY1NjcmlwdEV4ZWN1dGlvblN0YXR1
cygpOworfQorCiBib29sIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6c3VwcG9ydHNSaWNoU291
cmNlSW5mbyhjb25zdCBKU0dsb2JhbE9iamVjdCogb2JqZWN0KQogewogICAgIHJldHVybiBKU0ds
b2JhbE9iamVjdDo6c3VwcG9ydHNSaWNoU291cmNlSW5mbyhvYmplY3QpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuaAppbmRl
eCBiOGExN2VjNGU3ZTJmYWNjYmU4NDY3NGNhMDE0ZDEzNWJlNzA1OWYzLi40NGUyZGY0MmI2ZDVh
ODE5YmZlNjU2YzdhMDY5MWE1Y2E1Y2MzNWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuaApAQCAtNjEsNiArNjEsNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJydXB0U2NyaXB0KGNvbnN0IEpT
Qzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcnJ1cHRTY3Jp
cHRCZWZvcmVUaW1lb3V0KGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICBzdGF0aWMg
SlNDOjpSdW50aW1lRmxhZ3MgamF2YVNjcmlwdFJ1bnRpbWVGbGFncyhjb25zdCBKU0M6OkpTR2xv
YmFsT2JqZWN0Kik7CisgICAgc3RhdGljIEpTQzo6U2NyaXB0RXhlY3V0aW9uU3RhdHVzIHNjcmlw
dEV4ZWN1dGlvblN0YXR1cyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpKU09iamVjdCopOwog
ICAgIHN0YXRpYyB2b2lkIHF1ZXVlTWljcm90YXNrVG9FdmVudExvb3AoSlNDOjpKU0dsb2JhbE9i
amVjdCYsIFJlZjxKU0M6Ok1pY3JvdGFzaz4mJik7CiAKICAgICB2b2lkIGNsZWFyRE9NR3VhcmRl
ZE9iamVjdHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRp
b25Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0
LmNwcAppbmRleCA3NTcyM2I4NDIxYzRlNGZlZWQxMTY3NmM5OTUyNGQ4Y2U5OGNhOWEyLi5hZWRh
OTgwMjcyYWFkNDgyYjQ2ZjU4OGU1Y2Y2OGZkNzc4ZmUyYWFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC0zNyw2ICszNyw4IEBACiAjaW5j
bHVkZSAiRXJyb3JFdmVudC5oIgogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIK
ICNpbmNsdWRlICJKU0RPTVdpbmRvdy5oIgorI2luY2x1ZGUgIkpTV29ya2VyR2xvYmFsU2NvcGUu
aCIKKyNpbmNsdWRlICJKU1dvcmtsZXRHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIkxlZ2FjeVNj
aGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKICNpbmNsdWRlICJOYXZp
Z2F0b3IuaCIKQEAgLTUzLDYgKzU1LDcgQEAKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGUuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuaCIKICNpbmNsdWRlICJT
ZXR0aW5ncy5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlICJX
b3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIldvcmtlck5hdmlnYXRvci5oIgogI2luY2x1
ZGUgIldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgiCkBAIC02MSw2ICs2NCw3IEBACiAjaW5j
bHVkZSAiV29ya2xldEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2xldFNjcmlwdENvbnRy
b2xsZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9DYXRjaFNjb3BlLmg+CisjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvRGVmZXJyZWRXb3JrVGltZXIuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9FeGNlcHRpb24uaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1Byb21pc2Uu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRDYWxsU3RhY2suaD4KQEAgLTczLDEw
ICs3Nyw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7
CiAKIHN0YXRpYyBMb2NrIGFsbFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRzTWFwTG9jazsKLXN0YXRp
YyBIYXNoTWFwPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0Kj4mIGFsbFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRzTWFwKCkKK3N0YXRpYyBIYXNo
TWFwPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0Kj4mIGFsbFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRzTWFwKGNvbnN0IExvY2tlcjxMb2NrPiYp
CiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dElkZW50aWZpZXIsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqPj4gY29udGV4dHM7Ci0gICAg
QVNTRVJUKGFsbFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRzTWFwTG9jay5pc0xvY2tlZCgpKTsKICAg
ICByZXR1cm4gY29udGV4dHM7CiB9CiAKQEAgLTExMCw4ICsxMTMsOCBAQCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0SWRlbnRpZmllciBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpjb250ZXh0SWRlbnRp
ZmllcigpIGNvbgogCiAgICAgICAgIG1fY29udGV4dElkZW50aWZpZXIgPSBTY3JpcHRFeGVjdXRp
b25Db250ZXh0SWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKIAotICAgICAgICBBU1NFUlQoIWFsbFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRzTWFwKCkuY29udGFpbnMobV9jb250ZXh0SWRlbnRpZmllcikp
OwotICAgICAgICBhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcCgpLmFkZChtX2NvbnRleHRJ
ZGVudGlmaWVyLCBjb25zdF9jYXN0PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqPih0aGlzKSk7Cisg
ICAgICAgIEFTU0VSVCghYWxsU2NyaXB0RXhlY3V0aW9uQ29udGV4dHNNYXAobG9ja2VyKS5jb250
YWlucyhtX2NvbnRleHRJZGVudGlmaWVyKSk7CisgICAgICAgIGFsbFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRzTWFwKGxvY2tlcikuYWRkKG1fY29udGV4dElkZW50aWZpZXIsIGNvbnN0X2Nhc3Q8U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCo+KHRoaXMpKTsKICAgICB9CiAgICAgcmV0dXJuIG1fY29udGV4
dElkZW50aWZpZXI7CiB9CkBAIC0xMjAsOCArMTIzLDggQEAgdm9pZCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpyZW1vdmVGcm9tQ29udGV4dHNNYXAoKQogewogICAgIGlmIChtX2NvbnRleHRJZGVu
dGlmaWVyKSB7CiAgICAgICAgIExvY2tlcjxMb2NrPiBsb2NrZXIoYWxsU2NyaXB0RXhlY3V0aW9u
Q29udGV4dHNNYXBMb2NrKTsKLSAgICAgICAgQVNTRVJUKGFsbFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRzTWFwKCkuY29udGFpbnMobV9jb250ZXh0SWRlbnRpZmllcikpOwotICAgICAgICBhbGxTY3Jp
cHRFeGVjdXRpb25Db250ZXh0c01hcCgpLnJlbW92ZShtX2NvbnRleHRJZGVudGlmaWVyKTsKKyAg
ICAgICAgQVNTRVJUKGFsbFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRzTWFwKGxvY2tlcikuY29udGFp
bnMobV9jb250ZXh0SWRlbnRpZmllcikpOworICAgICAgICBhbGxTY3JpcHRFeGVjdXRpb25Db250
ZXh0c01hcChsb2NrZXIpLnJlbW92ZShtX2NvbnRleHRJZGVudGlmaWVyKTsKICAgICB9CiB9CiAK
QEAgLTE1Niw3ICsxNTksNyBAQCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojp+U2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpCiAjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBpZiAobV9jb250ZXh0SWRlbnRp
ZmllcikgewogICAgICAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKGFsbFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRzTWFwTG9jayk7Ci0gICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIWFsbFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRzTWFwKCkuY29udGFpbnMobV9jb250ZXh0SWRlbnRpZmllciksCisgICAg
ICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIWFsbFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRzTWFwKGxv
Y2tlcikuY29udGFpbnMobV9jb250ZXh0SWRlbnRpZmllciksCiAgICAgICAgICAgICAiQSBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0IHN1YmNsYXNzIGluc3RhbmNlIGltcGxlbWVudGluZyBwb3N0VGFz
ayBzaG91bGQgaGF2ZSBhbHJlYWR5IHJlbW92ZWQgaXRzZWxmIGZyb20gdGhlIG1hcCIpOwogICAg
IH0KIApAQCAtMjUwLDYgKzI1MywxNSBAQCB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmZv
ckVhY2hBY3RpdmVET01PYmplY3QoY29uc3QgRnVuY3Rpb248U2hvdWxkQ29udGludQogICAgIH0K
IH0KIAorSlNDOjpTY3JpcHRFeGVjdXRpb25TdGF0dXMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
anNjU2NyaXB0RXhlY3V0aW9uU3RhdHVzKCkgY29uc3QKK3sKKyAgICBpZiAoYWN0aXZlRE9NT2Jq
ZWN0c0FyZVN1c3BlbmRlZCgpKQorICAgICAgICByZXR1cm4gSlNDOjpTY3JpcHRFeGVjdXRpb25T
dGF0dXM6OlN1c3BlbmRlZDsKKyAgICBpZiAoYWN0aXZlRE9NT2JqZWN0c0FyZVN0b3BwZWQoKSkK
KyAgICAgICAgcmV0dXJuIEpTQzo6U2NyaXB0RXhlY3V0aW9uU3RhdHVzOjpDYW5jZWxlZDsKKyAg
ICByZXR1cm4gSlNDOjpTY3JpcHRFeGVjdXRpb25TdGF0dXM6OlJ1bm5pbmc7Cit9CisKIHZvaWQg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6c3VzcGVuZEFjdGl2ZURPTU9iamVjdHMoUmVhc29uRm9y
U3VzcGVuc2lvbiB3aHkpCiB7CiAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwpAQCAtMjg0LDYgKzI5
Niw4IEBAIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cmVzdW1lQWN0aXZlRE9NT2JqZWN0
cyhSZWFzb25Gb3JTdXNwZW5zaW9uIHdoeSkKICAgICAgICAgcmV0dXJuIFNob3VsZENvbnRpbnVl
OjpZZXM7CiAgICAgfSk7CiAKKyAgICB2bSgpLmRlZmVycmVkV29ya1RpbWVyLT5zY3JpcHRFeGVj
dXRpb25Pd25lcldhc1Vuc3VzcGVuZGVkKCk7CisKICAgICBtX2FjdGl2ZURPTU9iamVjdHNBcmVT
dXNwZW5kZWQgPSBmYWxzZTsKIAogICAgIC8vIEluIGNhc2UgdGhlcmUgd2VyZSBwZW5kaW5nIG1l
c3NhZ2VzIGF0IHRoZSB0aW1lIHRoZSBzY3JpcHQgZXhlY3V0aW9uIGNvbnRleHQgZW50ZXJlZCB0
aGUgQmFja0ZvcndhcmRDYWNoZSwKQEAgLTYwMSw3ICs2MTUsNyBAQCBTZXJ2aWNlV29ya2VyQ29u
dGFpbmVyKiBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjplbnN1cmVTZXJ2aWNlV29ya2VyQ29udGFp
bmVyKCkKIGJvb2wgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cG9zdFRhc2tUbyhTY3JpcHRFeGVj
dXRpb25Db250ZXh0SWRlbnRpZmllciBpZGVudGlmaWVyLCBUYXNrJiYgdGFzaykKIHsKICAgICBM
b2NrZXI8TG9jaz4gbG9ja2VyKGFsbFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRzTWFwTG9jayk7Ci0g
ICAgYXV0byogY29udGV4dCA9IGFsbFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRzTWFwKCkuZ2V0KGlk
ZW50aWZpZXIpOworICAgIGF1dG8qIGNvbnRleHQgPSBhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0
c01hcChsb2NrZXIpLmdldChpZGVudGlmaWVyKTsKIAogICAgIGlmICghY29udGV4dCkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0LmgKaW5kZXggMjVhYWI0NDYwZmY5N2ExOGVkMGJmMTNhZmE5ZTQyZGYwODIxYzI3ZS4uNWU5
MGY0MWIyZmRiZjlmZWU3ZmI0MDM0YmZkMGMxMTgwYmViZjhmMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCkBAIC00NCw2ICs0NCw3IEBAIGNsYXNzIENh
bGxGcmFtZTsKIGNsYXNzIEV4Y2VwdGlvbjsKIGNsYXNzIEpTUHJvbWlzZTsKIGNsYXNzIFZNOwor
ZW51bSBjbGFzcyBTY3JpcHRFeGVjdXRpb25TdGF0dXM7CiB9CiAKIG5hbWVzcGFjZSBJbnNwZWN0
b3IgewpAQCAtMTM2LDYgKzEzNyw4IEBAIHB1YmxpYzoKICAgICBib29sIGFjdGl2ZURPTU9iamVj
dHNBcmVTdXNwZW5kZWQoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2ZURPTU9iamVjdHNBcmVTdXNw
ZW5kZWQ7IH0KICAgICBib29sIGFjdGl2ZURPTU9iamVjdHNBcmVTdG9wcGVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9hY3RpdmVET01PYmplY3RzQXJlU3RvcHBlZDsgfQogCisgICAgSlNDOjpTY3JpcHRF
eGVjdXRpb25TdGF0dXMganNjU2NyaXB0RXhlY3V0aW9uU3RhdHVzKCkgY29uc3Q7CisKICAgICAv
LyBDYWxsZWQgZnJvbSB0aGUgY29uc3RydWN0b3IgYW5kIGRlc3RydWN0b3JzIG9mIEFjdGl2ZURP
TU9iamVjdC4KICAgICB2b2lkIGRpZENyZWF0ZUFjdGl2ZURPTU9iamVjdChBY3RpdmVET01PYmpl
Y3QmKTsKICAgICB2b2lkIHdpbGxEZXN0cm95QWN0aXZlRE9NT2JqZWN0KEFjdGl2ZURPTU9iamVj
dCYpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IDc5ZTg4ZWY5NWE4NzMyN2FlMzQ1NTcxYzI4M2E3M2YxNjlmYWJkN2IuLjMx
ODIwY2FmODFiZTQ3YTIwNzJkM2U0MmVkOTk5M2YzOWQ3ZWY0MWEgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NyBAQAorMjAyMC0xMC0wOCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4K
KworICAgICAgICBGaW5hbGl6ZXJzIHNob3VsZG4ndCBydW4gaWYgZXZlbnRzIGNhbid0IGZpcmUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDUwOAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9m
cmFtZXMvZGV0YWNoZWQtZnJhbWUtd2FzbS1yZXNvbHZlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9mcmFtZXMvZGV0YWNoZWQtZnJhbWUtd2FzbS1yZXNvbHZlLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvaGlzdG9yeS9wYWdlLWNhY2hlLWFjdGl2ZS1maW5hbGl6YXRp
b24tcmVnaXN0cnktY2FsbGJhY2stZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2hpc3RvcnkvcGFnZS1jYWNoZS1hY3RpdmUtZmluYWxpemF0aW9uLXJlZ2lzdHJ5LWNhbGxiYWNr
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvaGlzdG9yeS9wYWdlLWNhY2hlLXdhc20tcHJv
bWlzZS1yZXNvbHZlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9oaXN0b3J5
L3BhZ2UtY2FjaGUtd2FzbS1wcm9taXNlLXJlc29sdmUuaHRtbDogQWRkZWQuCisKIDIwMjAtMTAt
MDggIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJbnRl
Z3JhdGlvbl0gRW5hYmxlIGZsb2F0IGNsZWFyIGZvciA8YnI+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2ZyYW1lcy9kZXRhY2hlZC1mcmFtZS13YXNtLXJlc29sdmUtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvZGV0YWNoZWQtZnJhbWUtd2FzbS1yZXNvbHZlLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NTk2YjZkZDM1ZjYxMjNkYjg5YmY3YzRjY2U1NGI5ODQ0
ZDcxZGM4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvZGV0YWNo
ZWQtZnJhbWUtd2FzbS1yZXNvbHZlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDExIEBACitDaGVj
a3MgV0FTTSBjb21waWxhdGlvbiBwcm9taXNlcyBkbyBub3QgcmVzb2x2ZSBvbiBkZXRhY2hlZCBm
cmFtZXMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIFdBU00gcHJvbWlz
ZSB3YXMgcmVzb2x2ZWQgb24gdGhlIG1haW4gZnJhbWUKK1BBU1MgV0FTTSBwcm9taXNlIGRpZCBu
b3QgYXBwZWFyIHRvIGJlIHJlc29sdmVkIGFmdGVyIHN1YmZyYW1lIHdhcyBkZXRhY2hlZAorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2RldGFjaGVkLWZyYW1lLXdhc20tcmVzb2x2ZS5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvZGV0YWNoZWQtZnJhbWUtd2FzbS1yZXNvbHZl
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYzRhYmIxYjBkOThmNGZiYjhlZWYzMTg3MDM1ZWJhNDI0MTkwODFj
OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2RldGFjaGVkLWZy
YW1lLXdhc20tcmVzb2x2ZS5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24o
IkNoZWNrcyBXQVNNIGNvbXBpbGF0aW9uIHByb21pc2VzIGRvIG5vdCByZXNvbHZlIG9uIGRldGFj
aGVkIGZyYW1lcy4iKTsKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworb25sb2FkID0g
ZnVuY3Rpb24oKQoreworICAgIHZhciBkZXRhY2hlZFdpbmRvdyA9IGZyYW1lc1swXTsKKworICAg
IC8vIFJhbmRvbSB3YXNtIG1vZHVsZSB0aGF0IGNvbXBpbGVzLiBTdG9sZW4gZnJvbSBKU1Rlc3Rz
L3dhc20vc3RyZXNzL3Rlcm1pbmFsLWp1bXAtc3dpdGNoLXRhcmdldC5qcworICAgIGxldCBwcm9t
aXNlID0gZGV0YWNoZWRXaW5kb3cuV2ViQXNzZW1ibHkuY29tcGlsZShuZXcgVWludDhBcnJheShb
IDAsOTcsMTE1LDEwOSwxLDAsMCwwLDEsMTM2LDEyOCwxMjgsMTI4LDAsMiw5NiwwLDAsOTYsMCwx
LDEyNCwzLDEzMSwxMjgsMTI4LDEyOCwwLDIsMCwxLDcsMTM4LDEyOCwxMjgsMTI4LDAsMSw2LDEx
NCwxMTcsMTEwLDEwMiw1NCw1MiwwLDEsMTAsMTY1LDEyOCwxMjgsMTI4LDAsMiwxMzAsMTI4LDEy
OCwxMjgsMCwwLDExLDE1MiwxMjgsMTI4LDEyOCwwLDAsMywxMjQsNjgsMCwwLDAsMCwwLDAsMCww
LDY1LDAsMTQsMCwxLDE2LDAsMTEsMTIsMCwwLDExIF0pKTsKKyAgICB2YXIgc3ViRnJhbWVDYWxs
ZWQgPSBmYWxzZTsKKyAgICBwcm9taXNlLnRoZW4oKCkgPT4gc3ViRnJhbWVDYWxsZWQgPSB0cnVl
KTsKKworICAgIHByb21pc2UgPSBXZWJBc3NlbWJseS5jb21waWxlKG5ldyBVaW50OEFycmF5KFsg
MCw5NywxMTUsMTA5LDEsMCwwLDAsMSwxMzYsMTI4LDEyOCwxMjgsMCwyLDk2LDAsMCw5NiwwLDEs
MTI0LDMsMTMxLDEyOCwxMjgsMTI4LDAsMiwwLDEsNywxMzgsMTI4LDEyOCwxMjgsMCwxLDYsMTE0
LDExNywxMTAsMTAyLDU0LDUyLDAsMSwxMCwxNjUsMTI4LDEyOCwxMjgsMCwyLDEzMCwxMjgsMTI4
LDEyOCwwLDAsMTEsMTUyLDEyOCwxMjgsMTI4LDAsMCwzLDEyNCw2OCwwLDAsMCwwLDAsMCwwLDAs
NjUsMCwxNCwwLDEsMTYsMCwxMSwxMiwwLDAsMTEgXSkpOworICAgIHByb21pc2UudGhlbigoKSA9
PiB7CisgICAgICAgIHRlc3RQYXNzZWQoIldBU00gcHJvbWlzZSB3YXMgcmVzb2x2ZWQgb24gdGhl
IG1haW4gZnJhbWUiKTsKKyAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgICAgICBp
ZiAoc3ViRnJhbWVDYWxsZWQpCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiV0FTTSBwcm9t
aXNlIHNob3VsZCBub3QgYmUgcmVzb2x2ZWQgaWYgdGhlIHN1YmZyYW1lIGlzIGRldGFjaGVkIik7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiV0FTTSBwcm9t
aXNlIGRpZCBub3QgYXBwZWFyIHRvIGJlIHJlc29sdmVkIGFmdGVyIHN1YmZyYW1lIHdhcyBkZXRh
Y2hlZCIpOworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIC8vIEFkZCBzbWFs
bCB0aW1lb3V0IHRvIGJlIHNhZmUuCisgICAgICAgIH0sIDEwMCk7CisgICAgfSk7CisKKyAgICBk
b2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJp
ZnJhbWUiKVswXSk7Cit9Cis8L3NjcmlwdD4KKzxpZnJhbWUgc3JjPSJhYm91dDpibGFuayI+PC9p
ZnJhbWU+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvcGFnZS1jYWNoZS1h
Y3RpdmUtZmluYWxpemF0aW9uLXJlZ2lzdHJ5LWNhbGxiYWNrLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2Zhc3QvaGlzdG9yeS9wYWdlLWNhY2hlLWFjdGl2ZS1maW5hbGl6YXRpb24tcmVnaXN0
cnktY2FsbGJhY2stZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ1MGMzMTU5YmY4NTQ3NGVlZjFk
NDE1YjE4YjBlZjRhZDk0M2U5ZTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2hpc3RvcnkvcGFnZS1jYWNoZS1hY3RpdmUtZmluYWxpemF0aW9uLXJlZ2lzdHJ5LWNhbGxiYWNr
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1IEBACitUZXN0cyB0aGF0IGEgcGFnZSB3aXRoIGEg
cGVuZGluZyBGaW5hbGl6YXRpb25SZWdpc3RyeSBjYWxsYmFjayBpcyBhYmxlIHRvIGVudGVyIHRo
ZSBiYWNrL2ZvcndhcmQgY2FjaGUgYW5kIGdldHMgc3VzcGVuZGVkLgorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKKworcGFnZXNob3cgLSBub3QgZnJvbSBjYWNoZQorcGFnZWhpZGUgLSBl
bnRlcmluZyBjYWNoZQorRmlsbGluZyBmaW5hbGl6YXRpb24gcmVnaXN0cnkKK3BhZ2VzaG93IC0g
ZnJvbSBjYWNoZQorUEFTUyBQYWdlIGRpZCBlbnRlciBhbmQgd2FzIHJlc3RvcmVkIGZyb20gdGhl
IGJhY2svZm9yd2FyZCBjYWNoZQorUEFTUyBDb2RlIGRpZCBub3QgcnVuIHdoaWxlIGluIHRoZSBi
YWNrL2ZvcndhcmQgY2FjaGUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvcGFnZS1j
YWNoZS1hY3RpdmUtZmluYWxpemF0aW9uLXJlZ2lzdHJ5LWNhbGxiYWNrLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2hpc3RvcnkvcGFnZS1jYWNoZS1hY3RpdmUtZmluYWxpemF0aW9uLXJlZ2lzdHJ5
LWNhbGxiYWNrLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDIwN2EyMTc2ODBkNzlmZjFiZDg4ODQ2NWFjODQ2
NGViMThjYWQzMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9w
YWdlLWNhY2hlLWFjdGl2ZS1maW5hbGl6YXRpb24tcmVnaXN0cnktY2FsbGJhY2suaHRtbApAQCAt
MCwwICsxLDY4IEBACis8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGVuYWJsZUJhY2tGb3J3YXJk
Q2FjaGU9dHJ1ZSBqc2NPcHRpb25zPS0tdXNlV2Vha1JlZnM9dHJ1ZSBdIC0tPgorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGVzdHMgdGhhdCBhIHBh
Z2Ugd2l0aCBhIHBlbmRpbmcgRmluYWxpemF0aW9uUmVnaXN0cnkgY2FsbGJhY2sgaXMgYWJsZSB0
byBlbnRlciB0aGUgYmFjay9mb3J3YXJkIGNhY2hlIGFuZCBnZXRzIHN1c3BlbmRlZC4nKTsKK3dp
bmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK2xldCBub3RTdXNwZW5kZWQgPSB0cnVlOworbGV0
IHJlc3RvcmVkRnJvbUNhY2hlID0gZmFsc2U7CisKK2xldCB1bnJlZ2lzdGVyVG9rZW4gPSB7fTsK
K2xldCBmZyA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeSgoKSA9PiB7CisgICAgaWYgKCFyZXN0
b3JlZEZyb21DYWNoZSkKKyAgICAgICAgdGVzdEZhaWxlZCgiRmluYWxpemF0aW9uUmVnaXN0cnkg
d2FzIHJ1biBiZWZvcmUgcmVzdG9yaW5nIGZyb20gY2FjaGUiKTsKKworICAgIGlmIChub3RTdXNw
ZW5kZWQpCisgICAgICAgIHRlc3RQYXNzZWQoIkNvZGUgZGlkIG5vdCBydW4gd2hpbGUgaW4gdGhl
IGJhY2svZm9yd2FyZCBjYWNoZSIpOworICAgIGVsc2UKKyAgICAgICAgdGVzdEZhaWxlZCgiVGhp
cyBjb2RlIHNob3VsZCBub3QgYmUgcnVubmluZyB3aGlsZSB0aGUgcGFnZSBpcyBpbiB0aGUgYmFj
ay9mb3J3YXJkIik7CisKKyAgICBmZy51bnJlZ2lzdGVyKHVucmVnaXN0ZXJUb2tlbik7CisgICAg
ZmluaXNoSlNUZXN0KCk7Cit9KTsKKword2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInBhZ2VzaG93
IiwgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBkZWJ1ZygicGFnZXNob3cgLSAiICsgKGV2ZW50LnBl
cnNpc3RlZCA/ICIiIDogIm5vdCAiKSArICJmcm9tIGNhY2hlIik7CisKKyAgICBpZiAoZXZlbnQu
cGVyc2lzdGVkKSB7CisgICAgICAgIHRlc3RQYXNzZWQoIlBhZ2UgZGlkIGVudGVyIGFuZCB3YXMg
cmVzdG9yZWQgZnJvbSB0aGUgYmFjay9mb3J3YXJkIGNhY2hlIik7CisgICAgICAgIHJlc3RvcmVk
RnJvbUNhY2hlID0gdHJ1ZTsKKyAgICB9CisgICAgbm90U3VzcGVuZGVkID0gdHJ1ZTsKK30sIGZh
bHNlKTsKKword2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInBhZ2VoaWRlIiwgZnVuY3Rpb24oZXZl
bnQpIHsKKyAgICBkZWJ1ZygicGFnZWhpZGUgLSAiICsgKGV2ZW50LnBlcnNpc3RlZCA/ICIiIDog
Im5vdCAiKSArICJlbnRlcmluZyBjYWNoZSIpOworICAgIGlmICghZXZlbnQucGVyc2lzdGVkKSB7
CisgICAgICAgIHRlc3RGYWlsZWQoIlBhZ2UgZGlkIG5vdCBlbnRlciB0aGUgYmFjay9mb3J3YXJk
IGNhY2hlLiIpOworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9CisgICAgZmlsbEZpbmFs
aXphdGlvblJlZ2lzdHJ5KCk7CisgICAgbm90U3VzcGVuZGVkID0gZmFsc2U7Cit9LCBmYWxzZSk7
CisKK3ZhciB0ZXh0RGF0YSA9IEpTT04uc3RyaW5naWZ5KCJUaGlzIGlzIHRoZSBib2R5Iik7CisK
K2Z1bmN0aW9uIGZpbGxGaW5hbGl6YXRpb25SZWdpc3RyeSgpCit7CisgICAgZGVidWcoIkZpbGxp
bmcgZmluYWxpemF0aW9uIHJlZ2lzdHJ5Iik7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAw
OyArK2kpCisgICAgICAgIGZnLnJlZ2lzdGVyKHsgfSwgdW5kZWZpbmVkLCB1bnJlZ2lzdGVyVG9r
ZW4pOworCisgICAgR0NDb250cm9sbGVyLmNvbGxlY3QoKTsKK30KKword2luZG93LmFkZEV2ZW50
TGlzdGVuZXIoJ2xvYWQnLCBmdW5jdGlvbigpIHsKKyAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAg
ICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAicmVzb3VyY2VzL3BhZ2UtY2FjaGUtaGVscGVy
Lmh0bWwiOworICAgIH0sIDApOworfSwgZmFsc2UpOworCis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KKworCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9wYWdlLWNh
Y2hlLXdhc20tcHJvbWlzZS1yZXNvbHZlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qv
aGlzdG9yeS9wYWdlLWNhY2hlLXdhc20tcHJvbWlzZS1yZXNvbHZlLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40MGM2OWQ4MDFjNmEzYjczMDgzZGNlYmY1YWM5MGU0ZTZhOWM5YWYyCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3BhZ2UtY2FjaGUtd2FzbS1wcm9t
aXNlLXJlc29sdmUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAKK1Rlc3RzIHRoYXQgYSBw
YWdlIHdpdGggYSBwZW5kaW5nIFdBU00gbW9kdWxlIHJlc29sdXRpb24gaXMgYWJsZSB0byBlbnRl
ciB0aGUgYmFjay9mb3J3YXJkIGNhY2hlIGFuZCBnZXRzIHN1c3BlbmRlZC4KKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK3BhZ2VzaG93IC0gbm90IGZyb20gY2FjaGUKK3BhZ2VoaWRl
IC0gZW50ZXJpbmcgY2FjaGUKK3BhZ2VzaG93IC0gZnJvbSBjYWNoZQorUEFTUyBQYWdlIGRpZCBl
bnRlciBhbmQgd2FzIHJlc3RvcmVkIGZyb20gdGhlIGJhY2svZm9yd2FyZCBjYWNoZQorUEFTUyBX
QVNNIGJsb2IgY29tcGlsZWQgc3VjY2Vzc2Z1bGx5CitQQVNTIFdBU00gZGlkIG5vdCByZXNvbHZl
IHdoaWxlIGluIHRoZSBiYWNrL2ZvcndhcmQgY2FjaGUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2hpc3RvcnkvcGFnZS1jYWNoZS13YXNtLXByb21pc2UtcmVzb2x2ZS5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9oaXN0b3J5L3BhZ2UtY2FjaGUtd2FzbS1wcm9taXNlLXJlc29sdmUuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xNjY2OTM4Y2ZhY2FlZTY1NjdlMDRkMzYwY2ZhMGQ4YzdjMDQ1MmJiCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3BhZ2UtY2FjaGUtd2FzbS1wcm9t
aXNlLXJlc29sdmUuaHRtbApAQCAtMCwwICsxLDY4IEBACis8IS0tIHdlYmtpdC10ZXN0LXJ1bm5l
ciBbIGVuYWJsZUJhY2tGb3J3YXJkQ2FjaGU9dHJ1ZSBqc2NPcHRpb25zPS0tdXNlV2Vha1JlZnM9
dHJ1ZSBdIC0tPgorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitkZXNjcmlw
dGlvbignVGVzdHMgdGhhdCBhIHBhZ2Ugd2l0aCBhIHBlbmRpbmcgV0FTTSBtb2R1bGUgcmVzb2x1
dGlvbiBpcyBhYmxlIHRvIGVudGVyIHRoZSBiYWNrL2ZvcndhcmQgY2FjaGUgYW5kIGdldHMgc3Vz
cGVuZGVkLicpOword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworbGV0IG5vdFN1c3BlbmRl
ZCA9IHRydWU7CitsZXQgcmVzdG9yZWRGcm9tQ2FjaGUgPSBmYWxzZTsKKworZnVuY3Rpb24gY2hl
Y2sodmFsdWUsIGVycm9yKSB7CisgICAgaWYgKGVycm9yKQorICAgICAgICB0ZXN0RmFpbGVkKCJX
QVNNIGJsb2IgZGlkbid0IGNvbXBpbGUiKTsKKworICAgIGlmICh2YWx1ZSkKKyAgICAgICAgdGVz
dFBhc3NlZCgiV0FTTSBibG9iIGNvbXBpbGVkIHN1Y2Nlc3NmdWxseSIpOworICAgIGVsc2UKKyAg
ICAgICAgdGVzdEZhaWxlZCgiV0FTTSBibG9iIGRpZCBub3QgcmV0dXJuIGEgbW9kdWxlIGZvciBz
b21lIHJlYXNvbiIpOworCisgICAgaWYgKCFyZXN0b3JlZEZyb21DYWNoZSkKKyAgICAgICAgdGVz
dEZhaWxlZCgiV0FTTSBwcm9taXNlIHdhcyByZXNvbHZlZCBiZWZvcmUgcmVzdG9yaW5nIGZyb20g
Y2FjaGUiKTsKKworICAgIGlmIChub3RTdXNwZW5kZWQpCisgICAgICAgIHRlc3RQYXNzZWQoIldB
U00gZGlkIG5vdCByZXNvbHZlIHdoaWxlIGluIHRoZSBiYWNrL2ZvcndhcmQgY2FjaGUiKTsKKyAg
ICBlbHNlCisgICAgICAgIHRlc3RGYWlsZWQoIldBU00gcHJvbWlzZSByZXNvbHV0aW9uIHNob3Vs
ZCBub3QgcnVuIHdoaWxlIHRoZSBwYWdlIGlzIGluIHRoZSBiYWNrL2ZvcndhcmQiKTsKKworICAg
IGZpbmlzaEpTVGVzdCgpOworfTsKKword2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInBhZ2VzaG93
IiwgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBkZWJ1ZygicGFnZXNob3cgLSAiICsgKGV2ZW50LnBl
cnNpc3RlZCA/ICIiIDogIm5vdCAiKSArICJmcm9tIGNhY2hlIik7CisKKyAgICBpZiAoZXZlbnQu
cGVyc2lzdGVkKSB7CisgICAgICAgIHRlc3RQYXNzZWQoIlBhZ2UgZGlkIGVudGVyIGFuZCB3YXMg
cmVzdG9yZWQgZnJvbSB0aGUgYmFjay9mb3J3YXJkIGNhY2hlIik7CisgICAgICAgIHJlc3RvcmVk
RnJvbUNhY2hlID0gdHJ1ZTsKKyAgICB9CisgICAgbm90U3VzcGVuZGVkID0gdHJ1ZTsKK30sIGZh
bHNlKTsKKword2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInBhZ2VoaWRlIiwgZnVuY3Rpb24oZXZl
bnQpIHsKKyAgICBkZWJ1ZygicGFnZWhpZGUgLSAiICsgKGV2ZW50LnBlcnNpc3RlZCA/ICIiIDog
Im5vdCAiKSArICJlbnRlcmluZyBjYWNoZSIpOworICAgIGlmICghZXZlbnQucGVyc2lzdGVkKSB7
CisgICAgICAgIHRlc3RGYWlsZWQoIlBhZ2UgZGlkIG5vdCBlbnRlciB0aGUgYmFjay9mb3J3YXJk
IGNhY2hlLiIpOworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9CisKKyAgICAvLyBSYW5k
b20gd2FzbSBtb2R1bGUgdGhhdCBjb21waWxlcy4gU3RvbGVuIGZyb20gSlNUZXN0cy93YXNtL3N0
cmVzcy90ZXJtaW5hbC1qdW1wLXN3aXRjaC10YXJnZXQuanMKKyAgICBsZXQgcHJvbWlzZSA9IFdl
YkFzc2VtYmx5LmNvbXBpbGUobmV3IFVpbnQ4QXJyYXkoWyAwLDk3LDExNSwxMDksMSwwLDAsMCwx
LDEzNiwxMjgsMTI4LDEyOCwwLDIsOTYsMCwwLDk2LDAsMSwxMjQsMywxMzEsMTI4LDEyOCwxMjgs
MCwyLDAsMSw3LDEzOCwxMjgsMTI4LDEyOCwwLDEsNiwxMTQsMTE3LDExMCwxMDIsNTQsNTIsMCwx
LDEwLDE2NSwxMjgsMTI4LDEyOCwwLDIsMTMwLDEyOCwxMjgsMTI4LDAsMCwxMSwxNTIsMTI4LDEy
OCwxMjgsMCwwLDMsMTI0LDY4LDAsMCwwLDAsMCwwLDAsMCw2NSwwLDE0LDAsMSwxNiwwLDExLDEy
LDAsMCwxMSBdKSk7CisKKyAgICBwcm9taXNlLnRoZW4oY2hlY2spOworCisgICAgbm90U3VzcGVu
ZGVkID0gZmFsc2U7Cit9LCBmYWxzZSk7CisKK3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2Fk
JywgZnVuY3Rpb24oKSB7CisgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgIHdpbmRvdy5s
b2NhdGlvbi5ocmVmID0gInJlc291cmNlcy9wYWdlLWNhY2hlLWhlbHBlci5odG1sIjsKKyAgICB9
LCAwKTsKK30sIGZhbHNlKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKKworCg==
</data>
<flag name="commit-queue"
          id="426958"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410886</attachid>
            <date>2020-10-08 14:29:16 -0700</date>
            <delta_ts>2020-10-08 21:29:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214508-20201008142915.patch</filename>
            <type>text/plain</type>
            <size>48035</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4MjA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
NmZhZGY4MWFhNDgwZTg1NjdiM2Q3NzFkY2FjMTZiYWI2ODUwZmMwLi5iODJjZmRkODljYzVjNTRj
MzZkNGIxMDA0YzVhMmMyOGE5MTYwMzNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MSBAQAorMjAyMC0xMC0wOCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBGaW5hbGl6ZXJzIHNob3VsZG4ndCBydW4gaWYgZXZlbnRzIGNhbid0
IGZpcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
NDUwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgcGF0Y2ggbWFrZXMgaXQgc28gdGhlIERlZmVycmVkV29ya1RpbWVyIHdvbid0IHJ1biBzY2hl
ZHVsZWQKKyAgICAgICAgdGFza3MgaWYgdGhvc2Ugd291bGQgbm90IGhhdmUgcnVuIGlmIHRoZXkg
d2VyZSBzY2hlZHVsZWQgaW4KKyAgICAgICAgV2ViQ29yZS4gVG8gZG8gdGhpcyB0aGVyZSBpcyBu
b3cgYSBjb25jZXB0IG9mIGEKKyAgICAgICAgU2NyaXB0RXhlY3V0aW9uT3duZXIuIFRoZSBTY3Jp
cHRFeGVjdXRpb25Pd25lciBpcyBhbG1vc3QgYWx3YXlzCisgICAgICAgIHRoZSBzYW1lIGFzIHRo
ZSBnbG9iYWwgb2JqZWN0IG9mIHRoZSBwZW5kaW5nIHRhc2sgKHJlZmVycmVkIHRvIGFzCisgICAg
ICAgIHRoZSB0aWNrZXQpLiAgVGhlIG9ubHkgZXhjZXB0aW9uIHRvIHRoaXMgaXMgaWYgdGhlIGds
b2JhbCBvYmplY3QKKyAgICAgICAgaXMgYSBKU0RPTVdpbmRvd0Jhc2UsIHRoZW4gdGhlIFNjcmlw
dEV4ZWN1dGlvbk93bmVyIGlzIHRoZQorICAgICAgICBEb2N1bWVudCdzIEpTIHdyYXBwZXIuIFRv
IHRlbGwgdGhlIHN0YXR1cyBvZiBhCisgICAgICAgIFNjcmlwdEV4ZWN1dGlvbk93bmVyLCB0aGUg
RGVmZXJyZWRXb3JrVGltZXIgY2FsbHMgYSB2aXJ0dWFsCisgICAgICAgIGZ1bmN0aW9uIG9uIHRo
ZSBnbG9iYWwgb2JqZWN0IG9mIHRoZSB0aWNrZXQsIGZvciBKU0Mtb25seSB0aGlzCisgICAgICAg
IGp1c3QgYWx3YXlzIHJldHVybnMgUnVubmluZy4gRm9yIFdlYkNvcmUsIHdlIGFzayB0aGUKKyAg
ICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCBhc3NvY2lhdGVkIHdpdGggdGhlIFNjcmlwdEV4
ZWN1dGlvbk93bmVyLgorCisgICAgICAgICogQVBJL0pTQVBJR2xvYmFsT2JqZWN0LmNwcDoKKyAg
ICAgICAgKiBBUEkvSlNBUElHbG9iYWxPYmplY3QubW06CisgICAgICAgICoganNjLmNwcDoKKyAg
ICAgICAgKiBydW50aW1lL0RlZmVycmVkV29ya1RpbWVyLmNwcDoKKyAgICAgICAgKEpTQzo6RGVm
ZXJyZWRXb3JrVGltZXI6OmRvV29yayk6CisgICAgICAgIChKU0M6OkRlZmVycmVkV29ya1RpbWVy
OjphZGRQZW5kaW5nV29yayk6CisgICAgICAgIChKU0M6OkRlZmVycmVkV29ya1RpbWVyOjpoYXNE
ZXBlbmRhbmN5SW5QZW5kaW5nV29yayk6CisgICAgICAgIChKU0M6OkRlZmVycmVkV29ya1RpbWVy
OjpzY3JpcHRFeGVjdXRpb25Pd25lcldhc1Vuc3VzcGVuZGVkKToKKyAgICAgICAgKiBydW50aW1l
L0RlZmVycmVkV29ya1RpbWVyLmg6CisgICAgICAgICogcnVudGltZS9KU0ZpbmFsaXphdGlvblJl
Z2lzdHJ5LmNwcDoKKyAgICAgICAgKEpTQzo6SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6Y3JlYXRl
KToKKyAgICAgICAgKEpTQzo6SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6ZmluaXNoQ3JlYXRpb24p
OgorICAgICAgICAqIHJ1bnRpbWUvSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxP
YmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmN1cnJlbnRTY3JpcHRFeGVj
dXRpb25Pd25lcik6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpzY3JpcHRFeGVjdXRp
b25TdGF0dXMpOgorCiAyMDIwLTEwLTA3ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5j
b20+CiAKICAgICAgICAgW0pTQ10gUmVzdHJpY3QgbW9yZSBwdHItdGFnZ2luZyBhbmQgYXZvaWQg
dXNpbmcgT3BlcmF0aW9uUHRyVGFnIGZvciBKSVQgY29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA1ZDU3YjgxZTIyZGVmMjc1
NDFjYzkyNmMzZmNlZjA1ZTdkOWU0MmJiLi5iYjBlZTk0ODEwNDNkYzhjZjVmYThhMDMzOWU4NjU4
MjM1ZjUzNDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIwLTEwLTA4ICBLZWl0aCBNaWxsZXIg
IDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgorCisgICAgICAgIEZpbmFsaXplcnMgc2hvdWxkbid0
IHJ1biBpZiBldmVudHMgY2FuJ3QgZmlyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE0NTA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIGEgRHJvcExvY2tTY29wZSB0byBtYWtlIGl0IGVhc2llciB0
byBkcm9wIGEgbG9jayBmb3IgYSBzaG9ydAorICAgICAgICBwaWVjZSBvZiBjb2RlLiAgQWxzbywg
aW5zdGVhZCBvZiBkZWxldGluZyBpbnQgTG9ja2VyIGNvbnN0cnVjdG9yCisgICAgICAgIHdlIHNo
b3VsZCBqdXN0IGRlbGV0ZSB0aGUgdW5kZXJseWluZyB0eXBlIG9mIHRoZQorICAgICAgICBOb0xv
Y2tpbmdOZWNlc3NhcnkgZW51bS4KKworICAgICAgICAqIHd0Zi9Mb2NrZXIuaDoKKyAgICAgICAg
KFdURjo6TG9ja2VyOjp+TG9ja2VyKToKKyAgICAgICAgKFdURjo6TG9ja2VyOjp1bmxvY2tFYXJs
eSk6CisgICAgICAgIChXVEY6OkxvY2tlcjo6TG9ja2VyKToKKyAgICAgICAgKFdURjo6TG9ja2Vy
OjpvcGVyYXRvcj0pOgorICAgICAgICAoV1RGOjpMb2NrZXI6OnVubG9jayk6CisgICAgICAgIChX
VEY6OkRyb3BMb2NrU2NvcGU6OkRyb3BMb2NrU2NvcGUpOgorICAgICAgICAoV1RGOjpEcm9wTG9j
a1Njb3BlOjp+RHJvcExvY2tTY29wZSk6CisKIDIwMjAtMTAtMDggIFl1c3VrZSBTdXp1a2kgIDx5
c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBidWlsZCBmaXggZm9yIEFS
TTY0RQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IGUyMzkxZmZmNDEwZTY2OTQwZjY4NjUzNzFmODgyYjA4YjU1Y2Q4
ZTAuLmQwY2M5M2JmNDBmYmM3ZWQ1ZDMzYWNjNTczYjVjMTgyZWYzYzBhNjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw0NCBAQAorMjAyMC0xMC0wOCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVy
QGFwcGxlLmNvbT4KKworICAgICAgICBGaW5hbGl6ZXJzIHNob3VsZG4ndCBydW4gaWYgZXZlbnRz
IGNhbid0IGZpcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxNDUwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggbWFrZXMgaXQgc28gdGhlIERlZmVycmVkV29ya1RpbWVyIHdvbid0IHJ1
biBzY2hlZHVsZWQKKyAgICAgICAgdGFza3MgaWYgdGhvc2Ugd291bGQgbm90IGhhdmUgcnVuIGlm
IHRoZXkgd2VyZSBzY2hlZHVsZWQgaW4KKyAgICAgICAgV2ViQ29yZS4gVG8gZG8gdGhpcyB0aGVy
ZSBpcyBub3cgYSBjb25jZXB0IG9mIGEKKyAgICAgICAgU2NyaXB0RXhlY3V0aW9uT3duZXIuIFRo
ZSBTY3JpcHRFeGVjdXRpb25Pd25lciBpcyBhbG1vc3QgYWx3YXlzCisgICAgICAgIHRoZSBzYW1l
IGFzIHRoZSBnbG9iYWwgb2JqZWN0IG9mIHRoZSBwZW5kaW5nIHRhc2sgKHJlZmVycmVkIHRvIGFz
CisgICAgICAgIHRoZSB0aWNrZXQpLiAgVGhlIG9ubHkgZXhjZXB0aW9uIHRvIHRoaXMgaXMgaWYg
dGhlIGdsb2JhbCBvYmplY3QKKyAgICAgICAgaXMgYSBKU0RPTVdpbmRvd0Jhc2UsIHRoZW4gdGhl
IFNjcmlwdEV4ZWN1dGlvbk93bmVyIGlzIHRoZQorICAgICAgICBEb2N1bWVudCdzIEpTIHdyYXBw
ZXIuIFRvIHRlbGwgdGhlIHN0YXR1cyBvZiBhCisgICAgICAgIFNjcmlwdEV4ZWN1dGlvbk93bmVy
LCB0aGUgRGVmZXJyZWRXb3JrVGltZXIgY2FsbHMgYSB2aXJ0dWFsCisgICAgICAgIGZ1bmN0aW9u
IG9uIHRoZSBnbG9iYWwgb2JqZWN0IG9mIHRoZSB0aWNrZXQsIGZvciBKU0Mtb25seSB0aGlzCisg
ICAgICAgIGp1c3QgYWx3YXlzIHJldHVybnMgUnVubmluZy4gRm9yIFdlYkNvcmUsIHdlIGFzayB0
aGUKKyAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCBhc3NvY2lhdGVkIHdpdGggdGhlIFNj
cmlwdEV4ZWN1dGlvbk93bmVyLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dC
YXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6Y3VycmVudFNjcmlw
dEV4ZWN1dGlvbk93bmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6c2Ny
aXB0RXhlY3V0aW9uU3RhdHVzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jh
c2UuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXJDYWNoZS5oOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTUmVtb3RlRE9NV2luZG93QmFzZS5jcHA6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OnNjcmlwdEV4ZWN1dGlvblN0YXR1cyk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuaDoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpzY3JpcHRFeGVjdXRpb25TdGF0dXMpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5oOgorICAgICAgICAqIGRv
bS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OmNvbnRleHRJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnJlbW92ZUZyb21Db250ZXh0c01hcCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojp+U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpqc2NTY3Jp
cHRFeGVjdXRpb25TdGF0dXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6cmVzdW1lQWN0aXZlRE9NT2JqZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRFeGVjdXRpb25Db250ZXh0Ojpwb3N0VGFza1RvKToKKyAgICAgICAgKiBkb20vU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5oOgorCiAyMDIwLTEwLTA4ICBBbmRyZXMgR29uemFsZXogIDxhbmRy
ZXNnXzIyQGFwcGxlLmNvbT4KIAogICAgICAgICBQcmVzaWRlbnRpYWwgRXhlY3V0aXZlIE9yZGVy
IHBhZ2VzIG5vdCBhY2Nlc3NpYmxlIHdpdGggU2FmYXJpLgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0LmNwcAppbmRleCA5YjRmMzM4ZmQ5MDMxMjI2OTY2
NzlhODc4YjFjMjhiZjZlMDQ5M2MxLi45ZjVlMGFkMzBkN2Q3MjM1MGU5ZWU5OWFhZDM0NTI4ZGVk
NzBmYmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFs
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2Jq
ZWN0LmNwcApAQCAtNDUsNiArNDUsOCBAQCBjb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBK
U0FQSUdsb2JhbE9iamVjdDo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSA9IHsKICAgICBudWxs
cHRyLCAvLyBtb2R1bGVMb2FkZXJFdmFsdWF0ZQogICAgIG51bGxwdHIsIC8vIHByb21pc2VSZWpl
Y3Rpb25UcmFja2VyCiAgICAgJnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3AsCisg
ICAgJmN1cnJlbnRTY3JpcHRFeGVjdXRpb25Pd25lciwKKyAgICAmc2NyaXB0RXhlY3V0aW9uU3Rh
dHVzLAogICAgIG51bGxwdHIsIC8vIGRlZmF1bHRMYW5ndWFnZQogICAgIG51bGxwdHIsIC8vIGNv
bXBpbGVTdHJlYW1pbmcKICAgICBudWxscHRyLCAvLyBpbnN0YW50aWF0ZVN0cmVhbWluZwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5tbSBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3QubW0KaW5kZXggZGRl
MmJkMzIzYmM3YjY1YjRmMDkwMjNiODdhZWEyN2IwNDIzNjM5ZS4uNTQ2MTM3OWZkYmRlNGMxZTky
MzU1YWYwMTcwMTQzMjYwMGNhZTEyMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0FQSUdsb2JhbE9iamVjdC5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQVBJR2xvYmFsT2JqZWN0Lm1tCkBAIC02NSw2ICs2NSw4IEBAIGNvbnN0IEdsb2JhbE9iamVj
dE1ldGhvZFRhYmxlIEpTQVBJR2xvYmFsT2JqZWN0OjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxl
ID0gewogICAgICZtb2R1bGVMb2FkZXJFdmFsdWF0ZSwgLy8gbW9kdWxlTG9hZGVyRXZhbHVhdGUK
ICAgICBudWxscHRyLCAvLyBwcm9taXNlUmVqZWN0aW9uVHJhY2tlcgogICAgICZyZXBvcnRVbmNh
dWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wLAorICAgICZjdXJyZW50U2NyaXB0RXhlY3V0aW9uT3du
ZXIsCisgICAgJnNjcmlwdEV4ZWN1dGlvblN0YXR1cywKICAgICBudWxscHRyLCAvLyBkZWZhdWx0
TGFuZ3VhZ2UKICAgICBudWxscHRyLCAvLyBjb21waWxlU3RyZWFtaW5nCiAgICAgbnVsbHB0ciwg
Ly8gaW5zdGFudGlhdGVTdHJlYW1pbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggYmE2MzMyMTJl
MjgyYTAwNjQ0ZDIwODk0MGUyYjBlMjQ0NDhmODQ2Zi4uNGI3MDZlMmZmMjllNmUwOTlkZDhiZGFi
YWEyMDRkZjkyNjFiYjg2ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTcyMCw2ICs3MjAsOCBA
QCBjb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBHbG9iYWxPYmplY3Q6OnNfZ2xvYmFsT2Jq
ZWN0TWV0aG9kVGFibGUgPSB7CiAgICAgbnVsbHB0ciwgLy8gbW9kdWxlTG9hZGVyRXZhbHVhdGUK
ICAgICBudWxscHRyLCAvLyBwcm9taXNlUmVqZWN0aW9uVHJhY2tlcgogICAgICZyZXBvcnRVbmNh
dWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wLAorICAgICZjdXJyZW50U2NyaXB0RXhlY3V0aW9uT3du
ZXIsCisgICAgJnNjcmlwdEV4ZWN1dGlvblN0YXR1cywKICAgICBudWxscHRyLCAvLyBkZWZhdWx0
TGFuZ3VhZ2UKICAgICBudWxscHRyLCAvLyBjb21waWxlU3RyZWFtaW5nCiAgICAgbnVsbHB0ciwg
Ly8gaW5zdGFudGluYXRlU3RyZWFtaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9EZWZlcnJlZFdvcmtUaW1lci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9EZWZlcnJlZFdvcmtUaW1lci5jcHAKaW5kZXggY2VkNzdiYWU0NGQ3MzJlZGUzN2Y0
NDAzNzdkMDczNWE3ZmVhMmRjOC4uOTU4MGM2MmUxNWI2MDM4NjBiNThlYmI5ODY3MWNjNjRhMzM4
YmRiNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVmZXJyZWRX
b3JrVGltZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RlZmVycmVk
V29ya1RpbWVyLmNwcApAQCAtNDUsMjIgKzQ1LDM4IEBAIERlZmVycmVkV29ya1RpbWVyOjpEZWZl
cnJlZFdvcmtUaW1lcihWTSYgdm0pCiB2b2lkIERlZmVycmVkV29ya1RpbWVyOjpkb1dvcmsoVk0m
IHZtKQogewogICAgIEFTU0VSVCh2bS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsK
LSAgICBtX3Rhc2tMb2NrLmxvY2soKTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fdGFz
a0xvY2spOwogICAgIGNhbmNlbFRpbWVyKCk7Ci0gICAgaWYgKCFtX3J1blRhc2tzKSB7Ci0gICAg
ICAgIG1fdGFza0xvY2sudW5sb2NrKCk7CisgICAgaWYgKCFtX3J1blRhc2tzKQogICAgICAgICBy
ZXR1cm47Ci0gICAgfQorCisgICAgVmVjdG9yPHN0ZDo6dHVwbGU8VGlja2V0LCBUYXNrPj4gc3Vz
cGVuZGVkVGFza3M7CiAKICAgICB3aGlsZSAoIW1fdGFza3MuaXNFbXB0eSgpKSB7CiAgICAgICAg
IGF1dG8gW3RpY2tldCwgdGFza10gPSBtX3Rhc2tzLnRha2VGaXJzdCgpOworICAgICAgICBhdXRv
IGdsb2JhbE9iamVjdCA9IHRpY2tldC0+c3RydWN0dXJlKHZtKS0+Z2xvYmFsT2JqZWN0KCk7CiAg
ICAgICAgIGRhdGFMb2dMbklmKERlZmVycmVkV29ya1RpbWVySW50ZXJuYWw6OnZlcmJvc2UsICJE
b2luZyB3b3JrIG9uOiAiLCBSYXdQb2ludGVyKHRpY2tldCkpOwogCi0gICAgICAgIC8vIFdlIG1h
eSBoYXZlIGFscmVhZHkgY2FuY2VsZWQgdGhlc2UgcHJvbWlzZXMuCi0gICAgICAgIGlmIChtX3Bl
bmRpbmdUaWNrZXRzLmNvbnRhaW5zKHRpY2tldCkpIHsKLSAgICAgICAgICAgIC8vIEFsbG93IHRh
c2tzIHdlIHJ1biBub3cgdG8gc2NoZWR1bGUgd29yay4KLSAgICAgICAgICAgIG1fY3VycmVudGx5
UnVubmluZ1Rhc2sgPSB0cnVlOwotICAgICAgICAgICAgbV90YXNrTG9jay51bmxvY2soKTsgCisg
ICAgICAgIGF1dG8gcGVuZGluZ1RpY2tldCA9IG1fcGVuZGluZ1RpY2tldHMuZmluZCh0aWNrZXQp
OworICAgICAgICAvLyBXZSBtYXkgaGF2ZSBhbHJlYWR5IGNhbmNlbGVkIHRoaXMgdGFzayBvciBp
dHMgb3duZXIgbWF5IGhhdmUgYmVlbiBjYW5jZWxlZC4KKyAgICAgICAgaWYgKHBlbmRpbmdUaWNr
ZXQgPT0gbV9wZW5kaW5nVGlja2V0cy5lbmQoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisg
ICAgICAgIFNjcmlwdEV4ZWN1dGlvblN0YXR1cyBzdGF0dXMgPSBnbG9iYWxPYmplY3QtPmdsb2Jh
bE9iamVjdE1ldGhvZFRhYmxlKCktPnNjcmlwdEV4ZWN1dGlvblN0YXR1cyhnbG9iYWxPYmplY3Qs
IHBlbmRpbmdUaWNrZXQtPnZhbHVlLnNjcmlwdEV4ZWN1dGlvbk93bmVyLmdldCgpKTsKKyAgICAg
ICAgc3dpdGNoIChzdGF0dXMpIHsKKyAgICAgICAgY2FzZSBTY3JpcHRFeGVjdXRpb25TdGF0dXM6
OlN1c3BlbmRlZDoKKyAgICAgICAgICAgIHN1c3BlbmRlZFRhc2tzLmFwcGVuZChzdGQ6Om1ha2Vf
dHVwbGUodGlja2V0LCBXVEZNb3ZlKHRhc2spKSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgY2FzZSBTY3JpcHRFeGVjdXRpb25TdGF0dXM6OkNhbmNlbGVkOgorICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorCisgICAgICAgIC8vIEFsbG93IHRhc2tzIHdlIGFyZSBhYm91dCB0byBydW4gdG8gc2NoZWR1
bGUgd29yay4KKyAgICAgICAgbV9jdXJyZW50bHlSdW5uaW5nVGFzayA9IHRydWU7CisgICAgICAg
IHsKKyAgICAgICAgICAgIGF1dG8gZHJvcHBlciA9IERyb3BMb2NrU2NvcGUobG9ja2VyKTsKIAog
ICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgc3RhcnQgb2YgYSBydW5sb29wIHR1cm4sIHdlIGNh
biByZWxlYXNlIGFueSB3ZWFrcmVmcyBoZXJlLgogICAgICAgICAgICAgdm0uZmluYWxpemVTeW5j
aHJvbm91c0pTRXhlY3V0aW9uKCk7CkBAIC03NSwxNiArOTEsMTcgQEAgdm9pZCBEZWZlcnJlZFdv
cmtUaW1lcjo6ZG9Xb3JrKFZNJiB2bSkKIAogICAgICAgICAgICAgdm0uZHJhaW5NaWNyb3Rhc2tz
KCk7CiAgICAgICAgICAgICBBU1NFUlQoIXZtLmV4Y2VwdGlvbkZvckluc3BlY3Rpb24oKSk7Ci0K
LSAgICAgICAgICAgIG1fdGFza0xvY2subG9jaygpOwotICAgICAgICAgICAgbV9jdXJyZW50bHlS
dW5uaW5nVGFzayA9IGZhbHNlOwogICAgICAgICB9CisgICAgICAgIG1fY3VycmVudGx5UnVubmlu
Z1Rhc2sgPSBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAobV9wZW5kaW5nVGlja2V0cy5pc0VtcHR5
KCkgJiYgbV9zaG91bGRTdG9wUnVuTG9vcFdoZW5BbGxUaWNrZXRzRmluaXNoKQotICAgICAgICBS
dW5Mb29wOjpjdXJyZW50KCkuc3RvcCgpOworICAgIHdoaWxlICghc3VzcGVuZGVkVGFza3MuaXNF
bXB0eSgpKQorICAgICAgICBtX3Rhc2tzLnByZXBlbmQoc3VzcGVuZGVkVGFza3MudGFrZUxhc3Qo
KSk7CiAKLSAgICBtX3Rhc2tMb2NrLnVubG9jaygpOworICAgIGlmIChtX3BlbmRpbmdUaWNrZXRz
LmlzRW1wdHkoKSAmJiBtX3Nob3VsZFN0b3BSdW5Mb29wV2hlbkFsbFRpY2tldHNGaW5pc2gpIHsK
KyAgICAgICAgQVNTRVJUKG1fdGFza3MuaXNFbXB0eSgpKTsKKyAgICAgICAgUnVuTG9vcDo6Y3Vy
cmVudCgpLnN0b3AoKTsKKyAgICB9CiB9CiAKIHZvaWQgRGVmZXJyZWRXb3JrVGltZXI6OnJ1blJ1
bkxvb3AoKQpAQCAtMTAyLDE1ICsxMTksMTUgQEAgdm9pZCBEZWZlcnJlZFdvcmtUaW1lcjo6YWRk
UGVuZGluZ1dvcmsoVk0mIHZtLCBUaWNrZXQgdGlja2V0LCBWZWN0b3I8U3Ryb25nPEpTQ2UKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGVwZW5kZW5jaWVzLnNpemUoKTsgKytpKQogICAg
ICAgICBBU1NFUlQoZGVwZW5kZW5jaWVzW2ldLmdldCgpICE9IHRpY2tldCk7CiAKLSAgICBhdXRv
IHJlc3VsdCA9IG1fcGVuZGluZ1RpY2tldHMuYWRkKHRpY2tldCwgVmVjdG9yPFN0cm9uZzxKU0Nl
bGw+PigpKTsKLSAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpIHsKLSAgICAgICAgZGF0YUxvZ0xu
SWYoRGVmZXJyZWRXb3JrVGltZXJJbnRlcm5hbDo6dmVyYm9zZSwgIkFkZGluZyBuZXcgcGVuZGlu
ZyB0aWNrZXQ6ICIsIFJhd1BvaW50ZXIodGlja2V0KSk7CisgICAgYXV0byBnbG9iYWxPYmplY3Qg
PSB0aWNrZXQtPmdsb2JhbE9iamVjdCgpOworICAgIGF1dG8gcmVzdWx0ID0gbV9wZW5kaW5nVGlj
a2V0cy5lbnN1cmUodGlja2V0LCBbJl0geworICAgICAgICBKU09iamVjdCogc2NyaXB0RXhlY3V0
aW9uT3duZXIgPSBnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPmN1cnJl
bnRTY3JpcHRFeGVjdXRpb25Pd25lcihnbG9iYWxPYmplY3QpOwogICAgICAgICBkZXBlbmRlbmNp
ZXMuYXBwZW5kKFN0cm9uZzxKU0NlbGw+KHZtLCB0aWNrZXQpKTsKLSAgICAgICAgcmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZSA9IFdURk1vdmUoZGVwZW5kZW5jaWVzKTsKLSAgICB9IGVsc2UgewotICAg
ICAgICBkYXRhTG9nTG5JZihEZWZlcnJlZFdvcmtUaW1lckludGVybmFsOjp2ZXJib3NlLCAiQWRk
aW5nIG5ldyBkZXBlbmRlbmNpZXMgZm9yIHRpY2tldDogIiwgUmF3UG9pbnRlcih0aWNrZXQpKTsK
LSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5hcHBlbmRWZWN0b3IoZGVwZW5kZW5jaWVz
KTsKLSAgICB9CisgICAgICAgIHJldHVybiBUaWNrZXREYXRhIHsgV1RGTW92ZShkZXBlbmRlbmNp
ZXMpLCBTdHJvbmc8SlNPYmplY3Q+KHZtLCBzY3JpcHRFeGVjdXRpb25Pd25lcikgfTsKKyAgICB9
KTsKKyAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICByZXN1bHQuaXRlcmF0b3It
PnZhbHVlLmRlcGVuZGVuY2llcy5hcHBlbmRWZWN0b3IoV1RGTW92ZShkZXBlbmRlbmNpZXMpKTsK
KyAgICBkYXRhTG9nTG5JZihEZWZlcnJlZFdvcmtUaW1lckludGVybmFsOjp2ZXJib3NlLCAiQWRk
aW5nIG5ldyBwZW5kaW5nIHRpY2tldDogIiwgUmF3UG9pbnRlcih0aWNrZXQpKTsKIH0KIAogYm9v
bCBEZWZlcnJlZFdvcmtUaW1lcjo6aGFzUGVuZGluZ1dvcmsoVGlja2V0IHRpY2tldCkKQEAgLTEy
NSw3ICsxNDIsNyBAQCBib29sIERlZmVycmVkV29ya1RpbWVyOjpoYXNEZXBlbmRhbmN5SW5QZW5k
aW5nV29yayhUaWNrZXQgdGlja2V0LCBKU0NlbGwqIGRlcGVuZAogICAgIEFTU0VSVChtX3BlbmRp
bmdUaWNrZXRzLmNvbnRhaW5zKHRpY2tldCkpOwogCiAgICAgYXV0byByZXN1bHQgPSBtX3BlbmRp
bmdUaWNrZXRzLmdldCh0aWNrZXQpOwotICAgIHJldHVybiByZXN1bHQuY29udGFpbnMoZGVwZW5k
ZW5jeSk7CisgICAgcmV0dXJuIHJlc3VsdC5kZXBlbmRlbmNpZXMuY29udGFpbnMoZGVwZW5kZW5j
eSk7CiB9CiAKIGJvb2wgRGVmZXJyZWRXb3JrVGltZXI6OmNhbmNlbFBlbmRpbmdXb3JrKFRpY2tl
dCB0aWNrZXQpCkBAIC0xNDcsNCArMTY0LDEyIEBAIHZvaWQgRGVmZXJyZWRXb3JrVGltZXI6OnNj
aGVkdWxlV29ya1Nvb24oVGlja2V0IHRpY2tldCwgVGFzayYmIHRhc2spCiAgICAgICAgIHNldFRp
bWVVbnRpbEZpcmUoMF9zKTsKIH0KIAordm9pZCBEZWZlcnJlZFdvcmtUaW1lcjo6c2NyaXB0RXhl
Y3V0aW9uT3duZXJXYXNVbnN1c3BlbmRlZCgpCit7CisgICAgQVNTRVJUKCFtX2N1cnJlbnRseVJ1
bm5pbmdUYXNrKTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3Rhc2tMb2NrKTsKKyAgICBpZiAo
IWlzU2NoZWR1bGVkKCkgJiYgbV90YXNrcy5zaXplKCkpCisgICAgICAgIHNldFRpbWVVbnRpbEZp
cmUoMF9zKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9EZWZlcnJlZFdvcmtUaW1lci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRGVmZXJyZWRXb3JrVGltZXIuaAppbmRleCAyNzFhOGFiYzllYzQyODU2
ZTlkZDNhMWNjM2JjNWNlODZkYjRmNjkzLi43ODMyMjY2MWEzZWE1NDcwMjM1NTZhYWQ4NWJlMjg4
ODBhZDI4MGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EZWZl
cnJlZFdvcmtUaW1lci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RlZmVy
cmVkV29ya1RpbWVyLmgKQEAgLTUxLDE4ICs1MSwxOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNE
ZXBlbmRhbmN5SW5QZW5kaW5nV29yayhUaWNrZXQsIEpTQ2VsbCogZGVwZW5kZW5jeSk7CiAgICAg
Ym9vbCBjYW5jZWxQZW5kaW5nV29yayhUaWNrZXQpOwogCisgICAgLy8gSWYgdGhlIHNjcmlwdCBl
eGVjdXRpb24gb3duZXIgeW91ciB0aWNrZXQgaXMgYXNzb2NpYXRlZCB3aXRoIGdldHMgY2FuY2Vs
ZWQKKyAgICAvLyB0aGUgVGFzayB3aWxsIG5vdCBiZSBjYWxsZWQgYW5kIHdpbGwgYmUgZGVhbGxv
Y2F0ZWQuIFNvIGl0J3MgaW1wb3J0YW50CisgICAgLy8gdG8gbWFrZSBzdXJlIHlvdXIgbWVtb3J5
IG93bmVyc2hpcCBtb2RlbCB3b24ndCBsZWFrIG1lbW9yeSB3aGVuCisgICAgLy8gdGhpcyBvY2N1
cnMuIFRoZSBlYXNpZXN0IHdheSBpcyB0byBtYWtlIHN1cmUgZXZlcnl0aGluZyBpcyBlaXRoZXIg
b3duZWQKKyAgICAvLyBieSBhIEdDJ2QgdmFsdWUgaW4gZGVwZW5kZW5jaWVzIG9yIGJ5IHRoZSBU
YXNrIGxhbWJkYS4KICAgICB1c2luZyBUYXNrID0gRnVuY3Rpb248dm9pZCgpPjsKICAgICB2b2lk
IHNjaGVkdWxlV29ya1Nvb24oVGlja2V0LCBUYXNrJiYpOworICAgIHZvaWQgc2NyaXB0RXhlY3V0
aW9uT3duZXJXYXNVbnN1c3BlbmRlZCgpOwogCiAgICAgdm9pZCBzdG9wUnVubmluZ1Rhc2tzKCkg
eyBtX3J1blRhc2tzID0gZmFsc2U7IH0KLQogICAgIHZvaWQgcnVuUnVuTG9vcCgpOwogCi0gICAg
c3RhdGljIFJlZjxEZWZlcnJlZFdvcmtUaW1lcj4gY3JlYXRlKFZNJiB2bSkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERlZmVycmVkV29ya1RpbWVyKHZtKSk7Ci0gICAgfQot
CisgICAgc3RhdGljIFJlZjxEZWZlcnJlZFdvcmtUaW1lcj4gY3JlYXRlKFZNJiB2bSkgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBEZWZlcnJlZFdvcmtUaW1lcih2bSkpOyB9CiBwcml2YXRlOgogICAg
IERlZmVycmVkV29ya1RpbWVyKFZNJik7CiAKQEAgLTcxLDcgKzcyLDExIEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBtX3Nob3VsZFN0b3BSdW5Mb29wV2hlbkFsbFRpY2tldHNGaW5pc2ggeyBmYWxzZSB9
OwogICAgIGJvb2wgbV9jdXJyZW50bHlSdW5uaW5nVGFzayB7IGZhbHNlIH07CiAgICAgRGVxdWU8
c3RkOjp0dXBsZTxUaWNrZXQsIFRhc2s+PiBtX3Rhc2tzOwotICAgIEhhc2hNYXA8VGlja2V0LCBW
ZWN0b3I8U3Ryb25nPEpTQ2VsbD4+PiBtX3BlbmRpbmdUaWNrZXRzOworICAgIHN0cnVjdCBUaWNr
ZXREYXRhIHsKKyAgICAgICAgVmVjdG9yPFN0cm9uZzxKU0NlbGw+PiBkZXBlbmRlbmNpZXM7Cisg
ICAgICAgIFN0cm9uZzxKU09iamVjdD4gc2NyaXB0RXhlY3V0aW9uT3duZXI7CisgICAgfTsKKyAg
ICBIYXNoTWFwPFRpY2tldCwgVGlja2V0RGF0YT4gbV9wZW5kaW5nVGlja2V0czsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmNwcAppbmRleCA1NDliOWQ5MDkyNWM2Mjc4ZDE3
MWYzY2U3ODAxOTlhY2E1NDg4YTAyLi40ZTI4ODI5ZDU3MmVkM2JkNDk1N2IwMGFlMTQ2YjQyYTEz
YTFlYzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ZpbmFs
aXphdGlvblJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmNwcApAQCAtNDIsMTEgKzQyLDExIEBAIFN0cnVjdHVyZSog
SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhCiBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5KiBKU0ZpbmFsaXphdGlvblJlZ2lz
dHJ5OjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNPYmplY3QqIGNhbGxi
YWNrKQogewogICAgIEpTRmluYWxpemF0aW9uUmVnaXN0cnkqIGluc3RhbmNlID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8SlNGaW5hbGl6YXRpb25SZWdpc3RyeT4odm0uaGVhcCkpIEpTRmlu
YWxpemF0aW9uUmVnaXN0cnkodm0sIHN0cnVjdHVyZSk7Ci0gICAgaW5zdGFuY2UtPmZpbmlzaENy
ZWF0aW9uKHZtLCBjYWxsYmFjayk7CisgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKHZtLCBz
dHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgpLCBjYWxsYmFjayk7CiAgICAgcmV0dXJuIGluc3RhbmNl
OwogfQogCi12b2lkIEpTRmluYWxpemF0aW9uUmVnaXN0cnk6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgSlNPYmplY3QqIGNhbGxiYWNrKQordm9pZCBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5OjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0
KiBjYWxsYmFjaykKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgQVNTRVJU
KGNhbGxiYWNrLT5pc0NhbGxhYmxlKHZtKSk7CkBAIC01NCw2ICs1NCwxMCBAQCB2b2lkIEpTRmlu
YWxpemF0aW9uUmVnaXN0cnk6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNPYmplY3QqIGNhbGxi
YWNrKQogICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IHZhbHVlcy5zaXplKCk7
ICsraW5kZXgpCiAgICAgICAgIEJhc2U6OmludGVybmFsRmllbGQoaW5kZXgpLnNldFdpdGhvdXRX
cml0ZUJhcnJpZXIodmFsdWVzW2luZGV4XSk7CiAgICAgaW50ZXJuYWxGaWVsZChGaWVsZDo6Q2Fs
bGJhY2spLnNldFdpdGhvdXRXcml0ZUJhcnJpZXIoY2FsbGJhY2spOworCisgICAgLy8gTWFrZSBz
dXJlIHdlIGluaXQgdGhlIERPTSB3cmFwcGVyIGZvciBvdXIgZG9jdW1lbnQgc2luY2UgaXQgbXVz
dCBiZSBhbGxvY2F0ZWQgYmVmb3JlIGZpbmFsaXplVW5jb25kaXRpb25hbGx5IGlzIGNhbGxlZC4g
ZmluYWxpemVVbmNvbmRpdGlvbmFsbHksCisgICAgLy8gaXMgY2FsbGVkIGR1cmluZyB0aGUgR0Mg
ZmxpcCBzbyBubyBKUyBvYmplY3RzIGNhbiBiZSBhbGxvY2F0ZWQgdGhlcmUuIFRoaXMgb25seSB3
b3JrcyBiZWNhdXNlIHdlIG5vIGxvbmdlciB3ZWFrbHkgaG9sZCBvbiB0byBET00gd3JhcHBlcnMu
CisgICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5jdXJyZW50U2Ny
aXB0RXhlY3V0aW9uT3duZXIoZ2xvYmFsT2JqZWN0KTsKIH0KIAogdm9pZCBKU0ZpbmFsaXphdGlv
blJlZ2lzdHJ5Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ZpbmFsaXph
dGlvblJlZ2lzdHJ5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ZpbmFsaXph
dGlvblJlZ2lzdHJ5LmgKaW5kZXggNmQ1Y2QzOGNmMGJhN2Q4Mjk5MWNkYjVjMGFhYTFmZjY0NDJh
ZjYzMy4uNzVkNjc2YmI4NWNmY2NmMGZhZjZlNjAwZTBjZjEyZTQwMWQ4YzlmYyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRmluYWxpemF0aW9uUmVnaXN0
cnkuaApAQCAtODksNyArODksNyBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICBKU19F
WFBPUlRfUFJJVkFURSB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNPYmplY3QqIGNhbGxiYWNr
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9i
YWxPYmplY3QqLCBKU09iamVjdCogY2FsbGJhY2spOwogCiAgICAgc3RhdGljIFN0cmluZyB0b1N0
cmluZ05hbWUoY29uc3QgSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggMDY5YmI4
MjgxMmE2ZjRhNWMzMmZkZjQ1MjQyZTcxMzk4OTA0NjAwNy4uOGZkMzQxMDdlNzU3MzdhMmVhZGJm
NmU2ZTYxN2U3OGYxYWZiNzZlMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtNDEyLDYgKzQxMiw4IEBAIGNvbnN0IEdsb2JhbE9i
amVjdE1ldGhvZFRhYmxlIEpTR2xvYmFsT2JqZWN0OjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxl
ID0gewogICAgIG51bGxwdHIsIC8vIG1vZHVsZUxvYWRlckV2YWx1YXRlCiAgICAgbnVsbHB0ciwg
Ly8gcHJvbWlzZVJlamVjdGlvblRyYWNrZXIKICAgICAmcmVwb3J0VW5jYXVnaHRFeGNlcHRpb25B
dEV2ZW50TG9vcCwKKyAgICAmY3VycmVudFNjcmlwdEV4ZWN1dGlvbk93bmVyLAorICAgICZzY3Jp
cHRFeGVjdXRpb25TdGF0dXMsCiAgICAgbnVsbHB0ciwgLy8gZGVmYXVsdExhbmd1YWdlCiAgICAg
bnVsbHB0ciwgLy8gY29tcGlsZVN0cmVhbWluZwogICAgIG51bGxwdHIsIC8vIGluc3RhbnRpYXRl
U3RyZWFtaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaAppbmRleCA5NzU2NGU5YzJkZTU2YzkxZWVhZTUyZGI5NTIwNjYwYmFkNTg3Y2ZjLi45NDg3
ZmJjOTU0NzNjZWE1ZWIxMmUxNDE5MTIwMDJkNjM1NGYzMTAzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTE5NSw2ICsxOTUsMTIgQEAg
ZW51bSBjbGFzcyBKU1Byb21pc2VSZWplY3Rpb25PcGVyYXRpb24gOiB1bnNpZ25lZCB7CiAgICAg
SGFuZGxlLCAvLyBXaGVuIGEgaGFuZGxlciBpcyBhZGRlZCB0byBhIHJlamVjdGVkIHByb21pc2Ug
Zm9yIHRoZSBmaXJzdCB0aW1lLgogfTsKIAorZW51bSBjbGFzcyBTY3JpcHRFeGVjdXRpb25TdGF0
dXMgeworICAgIFJ1bm5pbmcsCisgICAgU3VzcGVuZGVkLAorICAgIENhbmNlbGVkLAorfTsKKwog
c3RydWN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIHsKICAgICB0eXBlZGVmIGJvb2wgKCpTdXBw
b3J0c1JpY2hTb3VyY2VJbmZvRnVuY3Rpb25QdHIpKGNvbnN0IEpTR2xvYmFsT2JqZWN0Kik7CiAg
ICAgU3VwcG9ydHNSaWNoU291cmNlSW5mb0Z1bmN0aW9uUHRyIHN1cHBvcnRzUmljaFNvdXJjZUlu
Zm87CkBAIC0yMzIsNiArMjM4LDEzIEBAIHN0cnVjdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSB7
CiAgICAgdHlwZWRlZiB2b2lkICgqUmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcFB0
cikoSlNHbG9iYWxPYmplY3QqLCBFeGNlcHRpb24qKTsKICAgICBSZXBvcnRVbmNhdWdodEV4Y2Vw
dGlvbkF0RXZlbnRMb29wUHRyIHJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3A7CiAK
KyAgICAvLyBGb3IgbW9zdCBjb250ZXh0cyB0aGlzIGlzIGp1c3QgdGhlIGdsb2JhbCBvYmplY3Qu
IEZvciBKU0RPTVdpbmRvdywgaG93ZXZlciwgdGhpcyBpcyB0aGUgSlNEb2N1bWVudC4KKyAgICB0
eXBlZGVmIEpTT2JqZWN0KiAoKkN1cnJlbnRTY3JpcHRFeGVjdXRpb25Pd25lclB0cikoSlNHbG9i
YWxPYmplY3QqKTsKKyAgICBDdXJyZW50U2NyaXB0RXhlY3V0aW9uT3duZXJQdHIgY3VycmVudFNj
cmlwdEV4ZWN1dGlvbk93bmVyOworCisgICAgdHlwZWRlZiBTY3JpcHRFeGVjdXRpb25TdGF0dXMg
KCpTY3JpcHRFeGVjdXRpb25TdGF0dXNQdHIpKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIHNj
cmlwdEV4ZWN1dGlvbk93bmVyKTsKKyAgICBTY3JpcHRFeGVjdXRpb25TdGF0dXNQdHIgc2NyaXB0
RXhlY3V0aW9uU3RhdHVzOworCiAgICAgdHlwZWRlZiBTdHJpbmcgKCpEZWZhdWx0TGFuZ3VhZ2VG
dW5jdGlvblB0cikoKTsKICAgICBEZWZhdWx0TGFuZ3VhZ2VGdW5jdGlvblB0ciBkZWZhdWx0TGFu
Z3VhZ2U7CiAKQEAgLTg1Myw2ICs4NjYsOCBAQCBwdWJsaWM6CiAgICAgSlNPYmplY3QqIHVuaGFu
ZGxlZFJlamVjdGlvbkNhbGxiYWNrKCkgY29uc3QgeyByZXR1cm4gbV91bmhhbmRsZWRSZWplY3Rp
b25DYWxsYmFjay5nZXQoKTsgfQogCiAgICAgc3RhdGljIHZvaWQgcmVwb3J0VW5jYXVnaHRFeGNl
cHRpb25BdEV2ZW50TG9vcChKU0dsb2JhbE9iamVjdCosIEV4Y2VwdGlvbiopOworICAgIHN0YXRp
YyBKU09iamVjdCogY3VycmVudFNjcmlwdEV4ZWN1dGlvbk93bmVyKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWwpIHsgcmV0dXJuIGdsb2JhbDsgfQorICAgIHN0YXRpYyBTY3JpcHRFeGVjdXRpb25TdGF0
dXMgc2NyaXB0RXhlY3V0aW9uU3RhdHVzKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqKSB7IHJl
dHVybiBTY3JpcHRFeGVjdXRpb25TdGF0dXM6OlJ1bm5pbmc7IH0KIAogICAgIEpTT2JqZWN0KiBh
cnJheUJ1ZmZlckNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9hcnJheUJ1ZmZlclN0cnVj
dHVyZS5jb25zdHJ1Y3Rvcih0aGlzKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9M
b2NrZXIuaCBiL1NvdXJjZS9XVEYvd3RmL0xvY2tlci5oCmluZGV4IGE3ODllMDNlMDk1OGVjYmU0
ZjMyZjRkOTRmMzE2MTM1NDRiZDM2ODguLmFlNzI0OTM5NjRjYjdkNTdmYWUwM2RiMGE3ZDY4MTFh
OGNkYzhmODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0xvY2tlci5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL0xvY2tlci5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSA8d3RmL0Fzc2Vy
dGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgogI2luY2x1ZGUgPHd0Zi9Db21waWxl
ci5oPgorI2luY2x1ZGUgPHd0Zi9Gb3JiaWRIZWFwQWxsb2NhdGlvbi5oPgogI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYW5pdGl6ZXJTdXBwb3J0Lmg+
CiAKQEAgLTUxLDcgKzUyLDEwIEBAIHByb3RlY3RlZDoKICAgICB9CiB9OwogCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4gY2xhc3MgTG9ja2VyIDogcHVibGljIEFic3RyYWN0TG9ja2VyIHsKK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+IGNsYXNzIERyb3BMb2NrU2NvcGU7CisKK3RlbXBsYXRlPHR5cGVuYW1l
IFQ+CitjbGFzcyBMb2NrZXIgOiBwdWJsaWMgQWJzdHJhY3RMb2NrZXIgewogcHVibGljOgogICAg
IGV4cGxpY2l0IExvY2tlcihUJiBsb2NrYWJsZSkgOiBtX2xvY2thYmxlKCZsb2NrYWJsZSkgeyBs
b2NrKCk7IH0KICAgICBleHBsaWNpdCBMb2NrZXIoVCogbG9ja2FibGUpIDogbV9sb2NrYWJsZShs
b2NrYWJsZSkgeyBsb2NrKCk7IH0KQEAgLTYzLDE1ICs2NywxMSBAQCBwdWJsaWM6CiAgICAgLy8g
YmUgYWNjZXNzZWQgY29uY3VycmVudGx5LgogICAgIExvY2tlcihOb0xvY2tpbmdOZWNlc3NhcnlU
YWcpIDogbV9sb2NrYWJsZShudWxscHRyKSB7IH0KICAgICAKLSAgICBMb2NrZXIoaW50KSA9IGRl
bGV0ZTsKKyAgICBMb2NrZXIoc3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxOb0xvY2tpbmdOZWNlc3Nh
cnlUYWc+KSA9IGRlbGV0ZTsKIAogICAgIH5Mb2NrZXIoKQogICAgIHsKLSAgICAgICAgY29tcGls
ZXJGZW5jZSgpOwotICAgICAgICBpZiAobV9sb2NrYWJsZSkgewotICAgICAgICAgICAgVFNBTl9B
Tk5PVEFURV9IQVBQRU5TX0JFRk9SRShtX2xvY2thYmxlKTsKLSAgICAgICAgICAgIG1fbG9ja2Fi
bGUtPnVubG9jaygpOwotICAgICAgICB9CisgICAgICAgIHVubG9jaygpOwogICAgIH0KICAgICAK
ICAgICBzdGF0aWMgTG9ja2VyIHRyeUxvY2soVCYgbG9ja2FibGUpCkBAIC04OCw4ICs4OCw3IEBA
IHB1YmxpYzoKICAgICAKICAgICB2b2lkIHVubG9ja0Vhcmx5KCkKICAgICB7Ci0gICAgICAgIFRT
QU5fQU5OT1RBVEVfSEFQUEVOU19CRUZPUkUobV9sb2NrYWJsZSk7Ci0gICAgICAgIG1fbG9ja2Fi
bGUtPnVubG9jaygpOworICAgICAgICB1bmxvY2soKTsKICAgICAgICAgbV9sb2NrYWJsZSA9IG51
bGxwdHI7CiAgICAgfQogICAgIApAQCAtOTgsMjEgKzk3LDMxIEBAIHB1YmxpYzoKICAgICBMb2Nr
ZXIoTG9ja2VyJiYgb3RoZXIpCiAgICAgICAgIDogbV9sb2NrYWJsZShvdGhlci5tX2xvY2thYmxl
KQogICAgIHsKKyAgICAgICAgQVNTRVJUKCZvdGhlciAhPSB0aGlzKTsKICAgICAgICAgb3RoZXIu
bV9sb2NrYWJsZSA9IG51bGxwdHI7CiAgICAgfQogICAgIAogICAgIExvY2tlciYgb3BlcmF0b3I9
KExvY2tlciYmIG90aGVyKQogICAgIHsKLSAgICAgICAgaWYgKG1fbG9ja2FibGUpIHsKLSAgICAg
ICAgICAgIFRTQU5fQU5OT1RBVEVfSEFQUEVOU19CRUZPUkUobV9sb2NrYWJsZSk7Ci0gICAgICAg
ICAgICBtX2xvY2thYmxlLT51bmxvY2soKTsKLSAgICAgICAgfQorICAgICAgICBBU1NFUlQoJm90
aGVyICE9IHRoaXMpOwogICAgICAgICBtX2xvY2thYmxlID0gb3RoZXIubV9sb2NrYWJsZTsKICAg
ICAgICAgb3RoZXIubV9sb2NrYWJsZSA9IG51bGxwdHI7CiAgICAgICAgIHJldHVybiAqdGhpczsK
ICAgICB9CiAgICAgCiBwcml2YXRlOgorICAgIHRlbXBsYXRlPHR5cGVuYW1lPgorICAgIGZyaWVu
ZCBjbGFzcyBEcm9wTG9ja1Njb3BlOworCisgICAgdm9pZCB1bmxvY2soKQorICAgIHsKKyAgICAg
ICAgY29tcGlsZXJGZW5jZSgpOworICAgICAgICBpZiAobV9sb2NrYWJsZSkgeworICAgICAgICAg
ICAgVFNBTl9BTk5PVEFURV9IQVBQRU5TX0JFRk9SRShtX2xvY2thYmxlKTsKKyAgICAgICAgICAg
IG1fbG9ja2FibGUtPnVubG9jaygpOworICAgICAgICB9CisgICAgfQorCiAgICAgdm9pZCBsb2Nr
KCkKICAgICB7CiAgICAgICAgIGlmIChtX2xvY2thYmxlKSB7CkBAIC0xNTEsNiArMTYwLDI1IEBA
IExvY2tlcjxMb2NrVHlwZT4gdHJ5SG9sZExvY2soTG9ja1R5cGUmIGxvY2spCiAgICAgcmV0dXJu
IExvY2tlcjxMb2NrVHlwZT46OnRyeUxvY2sobG9jayk7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1l
IExvY2tUeXBlPgorY2xhc3MgRHJvcExvY2tTY29wZSA6IHByaXZhdGUgQWJzdHJhY3RMb2NrZXIg
eworICAgIFdURl9GT1JCSURfSEVBUF9BTExPQ0FUSU9OKERyb3BMb2NrU2NvcGUpOworcHVibGlj
OgorICAgIERyb3BMb2NrU2NvcGUoTG9ja2VyPExvY2tUeXBlPiYgbG9jaykKKyAgICAgICAgOiBt
X2xvY2sobG9jaykKKyAgICB7CisgICAgICAgIG1fbG9jay51bmxvY2soKTsKKyAgICB9CisKKyAg
ICB+RHJvcExvY2tTY29wZSgpCisgICAgeworICAgICAgICBtX2xvY2subG9jaygpOworICAgIH0K
KworcHJpdmF0ZToKKyAgICBMb2NrZXI8TG9ja1R5cGU+JiBtX2xvY2s7Cit9OworCiB9CiAKIHVz
aW5nIFdURjo6QWJzdHJhY3RMb2NrZXI7CkBAIC0xNTksMyArMTg3LDQgQEAgdXNpbmcgV1RGOjpO
b0xvY2tpbmdOZWNlc3NhcnlUYWc7CiB1c2luZyBXVEY6Ok5vTG9ja2luZ05lY2Vzc2FyeTsKIHVz
aW5nIFdURjo6aG9sZExvY2s7CiB1c2luZyBXVEY6OmhvbGRMb2NrSWY7Cit1c2luZyBXVEY6OkRy
b3BMb2NrU2NvcGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd0Jhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dC
YXNlLmNwcAppbmRleCBmOTNlM2ZkMzFjNjVlNGIyZTUyMjc0NTc5ODczYWFhMWRjNGY3MTZjLi45
OTg5MGZiNGNlNWFkZTFkMzVmMzk0ZTY2NGRiNzI0MGQ2ZTI2ZTUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKQEAgLTgwLDYgKzgwLDggQEAg
Y29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNET01XaW5kb3dCYXNlOjpzX2dsb2JhbE9i
amVjdE1ldGhvZFRhYmxlID0gewogICAgICZtb2R1bGVMb2FkZXJFdmFsdWF0ZSwKICAgICAmcHJv
bWlzZVJlamVjdGlvblRyYWNrZXIsCiAgICAgJnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVu
dExvb3AsCisgICAgJmN1cnJlbnRTY3JpcHRFeGVjdXRpb25Pd25lciwKKyAgICAmc2NyaXB0RXhl
Y3V0aW9uU3RhdHVzLAogICAgICZkZWZhdWx0TGFuZ3VhZ2UsCiAjaWYgRU5BQkxFKFdFQkFTU0VN
QkxZKQogICAgICZjb21waWxlU3RyZWFtaW5nLApAQCAtMjMxLDYgKzIzMywxOSBAQCB2b2lkIEpT
RE9NV2luZG93QmFzZTo6cXVldWVNaWNyb3Rhc2tUb0V2ZW50TG9vcChKU0dsb2JhbE9iamVjdCYg
b2JqZWN0LCBSZWY8SlNDOgogICAgIH0pOwogfQogCitKU0M6OkpTT2JqZWN0KiBKU0RPTVdpbmRv
d0Jhc2U6OmN1cnJlbnRTY3JpcHRFeGVjdXRpb25Pd25lcihKU0dsb2JhbE9iamVjdCogb2JqZWN0
KQoreworICAgIEpTRE9NV2luZG93QmFzZSogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTRE9N
V2luZG93QmFzZSo+KG9iamVjdCk7CisKKyAgICByZXR1cm4ganNDYXN0PEpTT2JqZWN0Kj4odG9K
Uyh0aGlzT2JqZWN0LCB0aGlzT2JqZWN0LCB0aGlzT2JqZWN0LT53cmFwcGVkKCkuZG9jdW1lbnQo
KSkpOworfQorCitKU0M6OlNjcmlwdEV4ZWN1dGlvblN0YXR1cyBKU0RPTVdpbmRvd0Jhc2U6OnNj
cmlwdEV4ZWN1dGlvblN0YXR1cyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpKU09iamVjdCog
b3duZXIpCit7CisgICAgYXV0byogZG9jdW1lbnQgPSBqc0Nhc3Q8SlNEb2N1bWVudCo+KG93bmVy
KTsKKyAgICByZXR1cm4gZG9jdW1lbnQtPndyYXBwZWQoKS5qc2NTY3JpcHRFeGVjdXRpb25TdGF0
dXMoKTsKK30KKwogdm9pZCBKU0RPTVdpbmRvd0Jhc2U6OndpbGxSZW1vdmVGcm9tV2luZG93UHJv
eHkoKQogewogICAgIHNldEN1cnJlbnRFdmVudCgwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dCYXNlLmgKaW5kZXggZWM2ZGRjMTcwMjEwOGU5OWNmOTlkYzM2MzM1
ZTI1ZTAwNjQ1ZDg1YS4uMTA1MDNmZTM5Yzg5ZGU2MzE4ZTNmNzI4N2JhYzQ1ZDc3OTUyMmNkYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmgKQEAgLTc4
LDYgKzc4LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIHNob3VsZEludGVycnVwdFNjcmlw
dEJlZm9yZVRpbWVvdXQoY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRpYyBK
U0M6OlJ1bnRpbWVGbGFncyBqYXZhU2NyaXB0UnVudGltZUZsYWdzKGNvbnN0IEpTQzo6SlNHbG9i
YWxPYmplY3QqKTsKICAgICBzdGF0aWMgdm9pZCBxdWV1ZU1pY3JvdGFza1RvRXZlbnRMb29wKEpT
Qzo6SlNHbG9iYWxPYmplY3QmLCBSZWY8SlNDOjpNaWNyb3Rhc2s+JiYpOworICAgIHN0YXRpYyBK
U0M6OkpTT2JqZWN0KiBjdXJyZW50U2NyaXB0RXhlY3V0aW9uT3duZXIoSlNDOjpKU0dsb2JhbE9i
amVjdCopOworICAgIHN0YXRpYyBKU0M6OlNjcmlwdEV4ZWN1dGlvblN0YXR1cyBzY3JpcHRFeGVj
dXRpb25TdGF0dXMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6SlNPYmplY3QqKTsKIAogICAg
IHZvaWQgcHJpbnRFcnJvck1lc3NhZ2UoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlckNhY2hlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXJDYWNoZS5oCmluZGV4IGFjNjk3YWZk
NzJhZTkyNzRjYTQyZTcyMjA1OGU0ZGRhOGE3OTJmMGUuLmFlZjEyYmQyMzAyNWU3MGY5Y2Q3MzAx
ZTY5ZjhmYzlmMjIxNTlmMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NV3JhcHBlckNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XcmFwcGVyQ2FjaGUuaApAQCAtNTgsNiArNTgsOCBAQCBib29sIGNsZWFySW5saW5lQ2FjaGVk
V3JhcHBlcihET01XcmFwcGVyV29ybGQmLCB2b2lkKiwgSlNET01PYmplY3QqKTsKIGJvb2wgY2xl
YXJJbmxpbmVDYWNoZWRXcmFwcGVyKERPTVdyYXBwZXJXb3JsZCYsIFNjcmlwdFdyYXBwYWJsZSos
IEpTRE9NT2JqZWN0KiB3cmFwcGVyKTsKIGJvb2wgY2xlYXJJbmxpbmVDYWNoZWRXcmFwcGVyKERP
TVdyYXBwZXJXb3JsZCYsIEpTQzo6QXJyYXlCdWZmZXIqLCBKU0M6OkpTQXJyYXlCdWZmZXIqIHdy
YXBwZXIpOwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBET01DbGFzcz4gSlNDOjpKU09iamVjdCogZ2V0
T3JDcmVhdGVXcmFwcGVyKERPTVdyYXBwZXJXb3JsZCYsIERPTUNsYXNzJik7CisKIHRlbXBsYXRl
PHR5cGVuYW1lIERPTUNsYXNzPiBKU0M6OkpTT2JqZWN0KiBnZXRDYWNoZWRXcmFwcGVyKERPTVdy
YXBwZXJXb3JsZCYsIERPTUNsYXNzJik7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBET01DbGFzcz4gaW5s
aW5lIEpTQzo6SlNPYmplY3QqIGdldENhY2hlZFdyYXBwZXIoRE9NV3JhcHBlcldvcmxkJiB3b3Js
ZCwgUmVmPERPTUNsYXNzPiYgb2JqZWN0KSB7IHJldHVybiBnZXRDYWNoZWRXcmFwcGVyKHdvcmxk
LCBvYmplY3QuZ2V0KCkpOyB9CiB0ZW1wbGF0ZTx0eXBlbmFtZSBET01DbGFzcywgdHlwZW5hbWUg
V3JhcHBlckNsYXNzPiB2b2lkIGNhY2hlV3JhcHBlcihET01XcmFwcGVyV29ybGQmLCBET01DbGFz
cyosIFdyYXBwZXJDbGFzcyopOwpAQCAtNjUsNiArNjcsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBE
T01DbGFzcywgdHlwZW5hbWUgV3JhcHBlckNsYXNzPiB2b2lkIHVuY2FjaGVXcmFwcGVyKERPTVdy
YXBwZQogdGVtcGxhdGU8dHlwZW5hbWUgRE9NQ2xhc3MsIHR5cGVuYW1lIFQ+IGF1dG8gY3JlYXRl
V3JhcHBlcihKU0RPTUdsb2JhbE9iamVjdCosIFJlZjxUPiYmKSAtPiB0eXBlbmFtZSBzdGQ6OmVu
YWJsZV9pZjxzdGQ6OmlzX3NhbWU8RE9NQ2xhc3MsIFQ+Ojp2YWx1ZSwgdHlwZW5hbWUgSlNET01X
cmFwcGVyQ29udmVydGVyVHJhaXRzPERPTUNsYXNzPjo6V3JhcHBlckNsYXNzKj46OnR5cGU7CiB0
ZW1wbGF0ZTx0eXBlbmFtZSBET01DbGFzcywgdHlwZW5hbWUgVD4gYXV0byBjcmVhdGVXcmFwcGVy
KEpTRE9NR2xvYmFsT2JqZWN0KiwgUmVmPFQ+JiYpIC0+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lm
PCFzdGQ6OmlzX3NhbWU8RE9NQ2xhc3MsIFQ+Ojp2YWx1ZSwgdHlwZW5hbWUgSlNET01XcmFwcGVy
Q29udmVydGVyVHJhaXRzPERPTUNsYXNzPjo6V3JhcHBlckNsYXNzKj46OnR5cGU7CiAKK3RlbXBs
YXRlPHR5cGVuYW1lIERPTUNsYXNzPiBKU0M6OkpTVmFsdWUgd3JhcChKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgRE9NV3JhcHBlcldvcmxkJiwgRE9NQ2xhc3MmKTsKIHRlbXBsYXRlPHR5cGVuYW1lIERP
TUNsYXNzPiBKU0M6OkpTVmFsdWUgd3JhcChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9i
YWxPYmplY3QqLCBET01DbGFzcyYpOwogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTUmVtb3RlRE9NV2luZG93QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1JlbW90ZURPTVdpbmRvd0Jhc2UuY3BwCmluZGV4IGRjZTczODIwYmJiZmQ5Yjk1
YzU4NzlkMTNlZjY1ZWFiOThhOTA0MTguLjVjZWM4ZDEyZWE0MTY3NjlkYjI4NDE1MjhhYmIwNDY4
NTVkMzQyNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVtb3Rl
RE9NV2luZG93QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZW1v
dGVET01XaW5kb3dCYXNlLmNwcApAQCAtNDgsNiArNDgsOCBAQCBjb25zdCBHbG9iYWxPYmplY3RN
ZXRob2RUYWJsZSBKU1JlbW90ZURPTVdpbmRvd0Jhc2U6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFi
bGUgPQogICAgIG51bGxwdHIsIC8vIG1vZHVsZUxvYWRlckV2YWx1YXRlCiAgICAgbnVsbHB0ciwg
Ly8gcHJvbWlzZVJlamVjdGlvblRyYWNrZXIKICAgICBudWxscHRyLCAvLyByZXBvcnRVbmNhdWdo
dEV4Y2VwdGlvbkF0RXZlbnRMb29wCisgICAgJmN1cnJlbnRTY3JpcHRFeGVjdXRpb25Pd25lciwK
KyAgICAmc2NyaXB0RXhlY3V0aW9uU3RhdHVzLAogICAgIG51bGxwdHIsIC8vIGRlZmF1bHRMYW5n
dWFnZQogICAgIG51bGxwdHIsIC8vIGNvbXBpbGVTdHJlYW1pbmcKICAgICBudWxscHRyLCAvLyBp
bnN0YW50aWF0ZVN0cmVhbWluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCmluZGV4IGM0NGYyZmIzYTBiMDVkYWFiMWE4
YTllMmY4OWI1MmQ4NTFlYjQzNjguLjdlNDg5NmRhYTYyODAwMWY4NDNkZGNhY2EyZDVlYTAzMzEz
YmJkOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xv
YmFsU2NvcGVCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtl
ckdsb2JhbFNjb3BlQmFzZS5jcHAKQEAgLTY2LDYgKzY2LDggQEAgY29uc3QgR2xvYmFsT2JqZWN0
TWV0aG9kVGFibGUgSlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OnNfZ2xvYmFsT2JqZWN0TWV0aG9k
VGFibGUKICAgICBudWxscHRyLCAvLyBtb2R1bGVMb2FkZXJFdmFsdWF0ZQogICAgICZwcm9taXNl
UmVqZWN0aW9uVHJhY2tlciwKICAgICAmcmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9v
cCwKKyAgICAmY3VycmVudFNjcmlwdEV4ZWN1dGlvbk93bmVyLAorICAgICZzY3JpcHRFeGVjdXRp
b25TdGF0dXMsCiAgICAgJmRlZmF1bHRMYW5ndWFnZSwKICAgICBudWxscHRyLCAvLyBjb21waWxl
U3RyZWFtaW5nCiAgICAgbnVsbHB0ciwgLy8gaW5zdGFudGlhdGVTdHJlYW1pbmcKQEAgLTEzMSw2
ICsxMzMsMTMgQEAgUnVudGltZUZsYWdzIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjpqYXZhU2Ny
aXB0UnVudGltZUZsYWdzKGNvbnN0IEpTR2xvYmFsT2JqZWMKICAgICByZXR1cm4gdGhpc09iamVj
dC0+bV93cmFwcGVkLT50aHJlYWQoKS5ydW50aW1lRmxhZ3MoKTsKIH0KIAorSlNDOjpTY3JpcHRF
eGVjdXRpb25TdGF0dXMgSlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OnNjcmlwdEV4ZWN1dGlvblN0
YXR1cyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNPYmplY3QqIG93
bmVyKQoreworICAgIEFTU0VSVF9VTlVTRUQob3duZXIsIGdsb2JhbE9iamVjdCA9PSBvd25lcik7
CisgICAgSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNXb3Jr
ZXJHbG9iYWxTY29wZUJhc2UqPihnbG9iYWxPYmplY3QpOworICAgIHJldHVybiB0aGlzT2JqZWN0
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmpzY1NjcmlwdEV4ZWN1dGlvblN0YXR1cygpOwor
fQorCiB2b2lkIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjpxdWV1ZU1pY3JvdGFza1RvRXZlbnRM
b29wKEpTR2xvYmFsT2JqZWN0JiBvYmplY3QsIFJlZjxKU0M6Ok1pY3JvdGFzaz4mJiB0YXNrKQog
ewogICAgIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlJiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8
SlNXb3JrZXJHbG9iYWxTY29wZUJhc2UmPihvYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmgKaW5kZXggOWZlMTI5Y2Rm
NjFjMWEwOGJlYTQ4ZjcwMGQ0ZWFkY2M2ZWE2ZmYyMi4uZDQ0OTg3MTI5NDZhZTVmNmYwMTg3ODY4
NGU0Njk5N2IxZmVjMTdhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5oCkBAIC03Myw2ICs3Myw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcnJ1cHRTY3JpcHQoY29uc3QgSlNDOjpKU0dsb2JhbE9i
amVjdCopOwogICAgIHN0YXRpYyBib29sIHNob3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRpbWVv
dXQoY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRpYyBKU0M6OlJ1bnRpbWVG
bGFncyBqYXZhU2NyaXB0UnVudGltZUZsYWdzKGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsK
KyAgICBzdGF0aWMgSlNDOjpTY3JpcHRFeGVjdXRpb25TdGF0dXMgc2NyaXB0RXhlY3V0aW9uU3Rh
dHVzKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkpTT2JqZWN0Kik7CiAgICAgc3RhdGljIHZv
aWQgcXVldWVNaWNyb3Rhc2tUb0V2ZW50TG9vcChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgUmVmPEpT
Qzo6TWljcm90YXNrPiYmKTsKIAogICAgIHZvaWQgY2xlYXJET01HdWFyZGVkT2JqZWN0cygpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2Nv
cGVCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNj
b3BlQmFzZS5jcHAKaW5kZXggMzIzZGVlNzhkOGJiZWM5ZWNlZTE1NmI5MzNlYWQwODYxNDE5N2E4
ZS4uNjMxMmU1ODk3NzU1ZTFhZjkzYWY0MDE2MTliNWM0OTNiOWMxYzZiMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2Uu
Y3BwCkBAIC01Niw2ICs1Niw4IEBAIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTV29y
a2xldEdsb2JhbFNjb3BlQmFzZTo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJsCiAgICAgbnVsbHB0
ciwgLy8gbW9kdWxlTG9hZGVyRXZhbHVhdGUKICAgICAmcHJvbWlzZVJlamVjdGlvblRyYWNrZXIs
CiAgICAgJnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3AsCisgICAgJmN1cnJlbnRT
Y3JpcHRFeGVjdXRpb25Pd25lciwKKyAgICAmc2NyaXB0RXhlY3V0aW9uU3RhdHVzLAogICAgICZk
ZWZhdWx0TGFuZ3VhZ2UsCiAgICAgbnVsbHB0ciwgLy8gY29tcGlsZVN0cmVhbWluZwogICAgIG51
bGxwdHIsIC8vIGluc3RhbnRpYXRlU3RyZWFtaW5nCkBAIC0xMDAsNiArMTAyLDEzIEBAIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fd3JhcHBlZC5nZXQoKTsKIH0KIAorSlND
OjpTY3JpcHRFeGVjdXRpb25TdGF0dXMgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpzY3JpcHRF
eGVjdXRpb25TdGF0dXMoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpT
T2JqZWN0KiBvd25lcikKK3sKKyAgICBBU1NFUlRfVU5VU0VEKG93bmVyLCBnbG9iYWxPYmplY3Qg
PT0gb3duZXIpOworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNXb3JrbGV0R2xvYmFs
U2NvcGVCYXNlKj4oZ2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4gdGhpc09iamVjdC0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLT5qc2NTY3JpcHRFeGVjdXRpb25TdGF0dXMoKTsKK30KKwogYm9v
bCBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OnN1cHBvcnRzUmljaFNvdXJjZUluZm8oY29uc3Qg
SlNHbG9iYWxPYmplY3QqIG9iamVjdCkKIHsKICAgICByZXR1cm4gSlNHbG9iYWxPYmplY3Q6OnN1
cHBvcnRzUmljaFNvdXJjZUluZm8ob2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmgKaW5kZXggYjhhMTdlYzRlN2Uy
ZmFjY2JlODQ2NzRjYTAxNGQxMzViZTcwNTlmMy4uNDRlMmRmNDJiNmQ1YTgxOWJmZTY1NmM3YTA2
OTFhNWNhNWNjMzVjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNX
b3JrbGV0R2xvYmFsU2NvcGVCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmgKQEAgLTYxLDYgKzYxLDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBib29sIHNob3VsZEludGVycnVwdFNjcmlwdChjb25zdCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0Kik7CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91
dChjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAgICAgc3RhdGljIEpTQzo6UnVudGltZUZs
YWdzIGphdmFTY3JpcHRSdW50aW1lRmxhZ3MoY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOwor
ICAgIHN0YXRpYyBKU0M6OlNjcmlwdEV4ZWN1dGlvblN0YXR1cyBzY3JpcHRFeGVjdXRpb25TdGF0
dXMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6SlNPYmplY3QqKTsKICAgICBzdGF0aWMgdm9p
ZCBxdWV1ZU1pY3JvdGFza1RvRXZlbnRMb29wKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBSZWY8SlND
OjpNaWNyb3Rhc2s+JiYpOwogCiAgICAgdm9pZCBjbGVhckRPTUd1YXJkZWRPYmplY3RzKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKaW5kZXggNzU3
MjNiODQyMWM0ZTRmZWVkMTE2NzZjOTk1MjRkOGNlOThjYTlhMi4uYWVkYTk4MDI3MmFhZDQ4MmI0
NmY1ODhlNWNmNjhmZDc3OGZlMmFhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRF
eGVjdXRpb25Db250ZXh0LmNwcApAQCAtMzcsNiArMzcsOCBAQAogI2luY2x1ZGUgIkVycm9yRXZl
bnQuaCIKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNE
T01XaW5kb3cuaCIKKyNpbmNsdWRlICJKU1dvcmtlckdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAi
SlNXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJMZWdhY3lTY2hlbWVSZWdpc3RyeS5o
IgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCiAjaW5jbHVkZSAiTmF2aWdhdG9yLmgiCkBAIC01
Myw2ICs1NSw3IEBACiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5j
bHVkZSAiU2VydmljZVdvcmtlclByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNp
bmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2Nv
cGUuaCIKICNpbmNsdWRlICJXb3JrZXJOYXZpZ2F0b3IuaCIKICNpbmNsdWRlICJXb3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZS5oIgpAQCAtNjEsNiArNjQsNyBAQAogI2luY2x1ZGUgIldvcmtsZXRH
bG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvQ2F0Y2hTY29wZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0RlZmVycmVkV29ya1RpbWVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRXhjZXB0
aW9uLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNQcm9taXNlLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvU2NyaXB0Q2FsbFN0YWNrLmg+CkBAIC03MywxMCArNzcsOSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBzdGF0aWMgTG9j
ayBhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcExvY2s7Ci1zdGF0aWMgSGFzaE1hcDxTY3Jp
cHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCo+JiBh
bGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcCgpCitzdGF0aWMgSGFzaE1hcDxTY3JpcHRFeGVj
dXRpb25Db250ZXh0SWRlbnRpZmllciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCo+JiBhbGxTY3Jp
cHRFeGVjdXRpb25Db250ZXh0c01hcChjb25zdCBMb2NrZXI8TG9jaz4mKQogewogICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVy
LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kj4+IGNvbnRleHRzOwotICAgIEFTU0VSVChhbGxTY3Jp
cHRFeGVjdXRpb25Db250ZXh0c01hcExvY2suaXNMb2NrZWQoKSk7CiAgICAgcmV0dXJuIGNvbnRl
eHRzOwogfQogCkBAIC0xMTAsOCArMTEzLDggQEAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50
aWZpZXIgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6Y29udGV4dElkZW50aWZpZXIoKSBjb24KIAog
ICAgICAgICBtX2NvbnRleHRJZGVudGlmaWVyID0gU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50
aWZpZXI6OmdlbmVyYXRlKCk7CiAKLSAgICAgICAgQVNTRVJUKCFhbGxTY3JpcHRFeGVjdXRpb25D
b250ZXh0c01hcCgpLmNvbnRhaW5zKG1fY29udGV4dElkZW50aWZpZXIpKTsKLSAgICAgICAgYWxs
U2NyaXB0RXhlY3V0aW9uQ29udGV4dHNNYXAoKS5hZGQobV9jb250ZXh0SWRlbnRpZmllciwgY29u
c3RfY2FzdDxTY3JpcHRFeGVjdXRpb25Db250ZXh0Kj4odGhpcykpOworICAgICAgICBBU1NFUlQo
IWFsbFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRzTWFwKGxvY2tlcikuY29udGFpbnMobV9jb250ZXh0
SWRlbnRpZmllcikpOworICAgICAgICBhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcChsb2Nr
ZXIpLmFkZChtX2NvbnRleHRJZGVudGlmaWVyLCBjb25zdF9jYXN0PFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqPih0aGlzKSk7CiAgICAgfQogICAgIHJldHVybiBtX2NvbnRleHRJZGVudGlmaWVyOwog
fQpAQCAtMTIwLDggKzEyMyw4IEBAIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cmVtb3Zl
RnJvbUNvbnRleHRzTWFwKCkKIHsKICAgICBpZiAobV9jb250ZXh0SWRlbnRpZmllcikgewogICAg
ICAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKGFsbFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRzTWFwTG9j
ayk7Ci0gICAgICAgIEFTU0VSVChhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcCgpLmNvbnRh
aW5zKG1fY29udGV4dElkZW50aWZpZXIpKTsKLSAgICAgICAgYWxsU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dHNNYXAoKS5yZW1vdmUobV9jb250ZXh0SWRlbnRpZmllcik7CisgICAgICAgIEFTU0VSVChh
bGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcChsb2NrZXIpLmNvbnRhaW5zKG1fY29udGV4dElk
ZW50aWZpZXIpKTsKKyAgICAgICAgYWxsU2NyaXB0RXhlY3V0aW9uQ29udGV4dHNNYXAobG9ja2Vy
KS5yZW1vdmUobV9jb250ZXh0SWRlbnRpZmllcik7CiAgICAgfQogfQogCkBAIC0xNTYsNyArMTU5
LDcgQEAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6flNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKQog
I2lmIEFTU0VSVF9FTkFCTEVECiAgICAgaWYgKG1fY29udGV4dElkZW50aWZpZXIpIHsKICAgICAg
ICAgTG9ja2VyPExvY2s+IGxvY2tlcihhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcExvY2sp
OwotICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0
c01hcCgpLmNvbnRhaW5zKG1fY29udGV4dElkZW50aWZpZXIpLAorICAgICAgICBBU1NFUlRfV0lU
SF9NRVNTQUdFKCFhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcChsb2NrZXIpLmNvbnRhaW5z
KG1fY29udGV4dElkZW50aWZpZXIpLAogICAgICAgICAgICAgIkEgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCBzdWJjbGFzcyBpbnN0YW5jZSBpbXBsZW1lbnRpbmcgcG9zdFRhc2sgc2hvdWxkIGhhdmUg
YWxyZWFkeSByZW1vdmVkIGl0c2VsZiBmcm9tIHRoZSBtYXAiKTsKICAgICB9CiAKQEAgLTI1MCw2
ICsyNTMsMTUgQEAgdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpmb3JFYWNoQWN0aXZlRE9N
T2JqZWN0KGNvbnN0IEZ1bmN0aW9uPFNob3VsZENvbnRpbnUKICAgICB9CiB9CiAKK0pTQzo6U2Ny
aXB0RXhlY3V0aW9uU3RhdHVzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmpzY1NjcmlwdEV4ZWN1
dGlvblN0YXR1cygpIGNvbnN0Cit7CisgICAgaWYgKGFjdGl2ZURPTU9iamVjdHNBcmVTdXNwZW5k
ZWQoKSkKKyAgICAgICAgcmV0dXJuIEpTQzo6U2NyaXB0RXhlY3V0aW9uU3RhdHVzOjpTdXNwZW5k
ZWQ7CisgICAgaWYgKGFjdGl2ZURPTU9iamVjdHNBcmVTdG9wcGVkKCkpCisgICAgICAgIHJldHVy
biBKU0M6OlNjcmlwdEV4ZWN1dGlvblN0YXR1czo6Q2FuY2VsZWQ7CisgICAgcmV0dXJuIEpTQzo6
U2NyaXB0RXhlY3V0aW9uU3RhdHVzOjpSdW5uaW5nOworfQorCiB2b2lkIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OnN1c3BlbmRBY3RpdmVET01PYmplY3RzKFJlYXNvbkZvclN1c3BlbnNpb24gd2h5
KQogewogICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKQEAgLTI4NCw2ICsyOTYsOCBAQCB2b2lkIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnJlc3VtZUFjdGl2ZURPTU9iamVjdHMoUmVhc29uRm9yU3Vz
cGVuc2lvbiB3aHkpCiAgICAgICAgIHJldHVybiBTaG91bGRDb250aW51ZTo6WWVzOwogICAgIH0p
OwogCisgICAgdm0oKS5kZWZlcnJlZFdvcmtUaW1lci0+c2NyaXB0RXhlY3V0aW9uT3duZXJXYXNV
bnN1c3BlbmRlZCgpOworCiAgICAgbV9hY3RpdmVET01PYmplY3RzQXJlU3VzcGVuZGVkID0gZmFs
c2U7CiAKICAgICAvLyBJbiBjYXNlIHRoZXJlIHdlcmUgcGVuZGluZyBtZXNzYWdlcyBhdCB0aGUg
dGltZSB0aGUgc2NyaXB0IGV4ZWN1dGlvbiBjb250ZXh0IGVudGVyZWQgdGhlIEJhY2tGb3J3YXJk
Q2FjaGUsCkBAIC02MDEsNyArNjE1LDcgQEAgU2VydmljZVdvcmtlckNvbnRhaW5lciogU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6ZW5zdXJlU2VydmljZVdvcmtlckNvbnRhaW5lcigpCiBib29sIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnBvc3RUYXNrVG8oU2NyaXB0RXhlY3V0aW9uQ29udGV4dElk
ZW50aWZpZXIgaWRlbnRpZmllciwgVGFzayYmIHRhc2spCiB7CiAgICAgTG9ja2VyPExvY2s+IGxv
Y2tlcihhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcExvY2spOwotICAgIGF1dG8qIGNvbnRl
eHQgPSBhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcCgpLmdldChpZGVudGlmaWVyKTsKKyAg
ICBhdXRvKiBjb250ZXh0ID0gYWxsU2NyaXB0RXhlY3V0aW9uQ29udGV4dHNNYXAobG9ja2VyKS5n
ZXQoaWRlbnRpZmllcik7CiAKICAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCmluZGV4IDI1
YWFiNDQ2MGZmOTdhMThlZDBiZjEzYWZhOWU0MmRmMDgyMWMyN2UuLjVlOTBmNDFiMmZkYmY5ZmVl
N2ZiNDAzNGJmZDBjMTE4MGJlYmY4ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9T
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBDYWxsRnJhbWU7CiBjbGFz
cyBFeGNlcHRpb247CiBjbGFzcyBKU1Byb21pc2U7CiBjbGFzcyBWTTsKK2VudW0gY2xhc3MgU2Ny
aXB0RXhlY3V0aW9uU3RhdHVzOwogfQogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKQEAgLTEzNiw2
ICsxMzcsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBhY3RpdmVET01PYmplY3RzQXJlU3VzcGVuZGVk
KCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmVET01PYmplY3RzQXJlU3VzcGVuZGVkOyB9CiAgICAg
Ym9vbCBhY3RpdmVET01PYmplY3RzQXJlU3RvcHBlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZl
RE9NT2JqZWN0c0FyZVN0b3BwZWQ7IH0KIAorICAgIEpTQzo6U2NyaXB0RXhlY3V0aW9uU3RhdHVz
IGpzY1NjcmlwdEV4ZWN1dGlvblN0YXR1cygpIGNvbnN0OworCiAgICAgLy8gQ2FsbGVkIGZyb20g
dGhlIGNvbnN0cnVjdG9yIGFuZCBkZXN0cnVjdG9ycyBvZiBBY3RpdmVET01PYmplY3QuCiAgICAg
dm9pZCBkaWRDcmVhdGVBY3RpdmVET01PYmplY3QoQWN0aXZlRE9NT2JqZWN0Jik7CiAgICAgdm9p
ZCB3aWxsRGVzdHJveUFjdGl2ZURPTU9iamVjdChBY3RpdmVET01PYmplY3QmKTsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3
OWU4OGVmOTVhODczMjdhZTM0NTU3MWMyODNhNzNmMTY5ZmFiZDdiLi4zMTgyMGNhZjgxYmU0N2Ey
MDcyZDNlNDJlZDk5OTNmMzlkN2VmNDFhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjAtMTAt
MDggIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CisKKyAgICAgICAgRmlu
YWxpemVycyBzaG91bGRuJ3QgcnVuIGlmIGV2ZW50cyBjYW4ndCBmaXJlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQ1MDgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZnJhbWVzL2RldGFjaGVk
LWZyYW1lLXdhc20tcmVzb2x2ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
ZnJhbWVzL2RldGFjaGVkLWZyYW1lLXdhc20tcmVzb2x2ZS5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2hpc3RvcnkvcGFnZS1jYWNoZS1hY3RpdmUtZmluYWxpemF0aW9uLXJlZ2lzdHJ5LWNh
bGxiYWNrLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9oaXN0b3J5L3BhZ2Ut
Y2FjaGUtYWN0aXZlLWZpbmFsaXphdGlvbi1yZWdpc3RyeS1jYWxsYmFjay5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2hpc3RvcnkvcGFnZS1jYWNoZS13YXNtLXByb21pc2UtcmVzb2x2ZS1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvaGlzdG9yeS9wYWdlLWNhY2hlLXdh
c20tcHJvbWlzZS1yZXNvbHZlLmh0bWw6IEFkZGVkLgorCiAyMDIwLTEwLTA4ICBaYWxhbiBCdWp0
YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSW50ZWdyYXRpb25dIEVuYWJs
ZSBmbG9hdCBjbGVhciBmb3IgPGJyPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mcmFt
ZXMvZGV0YWNoZWQtZnJhbWUtd2FzbS1yZXNvbHZlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2Zhc3QvZnJhbWVzL2RldGFjaGVkLWZyYW1lLXdhc20tcmVzb2x2ZS1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNTU5NmI2ZGQzNWY2MTIzZGI4OWJmN2M0Y2NlNTRiOTg0NGQ3MWRjOAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2RldGFjaGVkLWZyYW1lLXdhc20t
cmVzb2x2ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMSBAQAorQ2hlY2tzIFdBU00gY29tcGls
YXRpb24gcHJvbWlzZXMgZG8gbm90IHJlc29sdmUgb24gZGV0YWNoZWQgZnJhbWVzLgorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBXQVNNIHByb21pc2Ugd2FzIHJlc29sdmVk
IG9uIHRoZSBtYWluIGZyYW1lCitQQVNTIFdBU00gcHJvbWlzZSBkaWQgbm90IGFwcGVhciB0byBi
ZSByZXNvbHZlZCBhZnRlciBzdWJmcmFtZSB3YXMgZGV0YWNoZWQKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2ZyYW1lcy9kZXRhY2hlZC1mcmFtZS13YXNtLXJlc29sdmUuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvZnJhbWVzL2RldGFjaGVkLWZyYW1lLXdhc20tcmVzb2x2ZS5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmM0YWJiMWIwZDk4ZjRmYmI4ZWVmMzE4NzAzNWViYTQyNDE5MDgxYzgKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9kZXRhY2hlZC1mcmFtZS13YXNtLXJlc29s
dmUuaHRtbApAQCAtMCwwICsxLDMxIEBACis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJDaGVja3MgV0FTTSBj
b21waWxhdGlvbiBwcm9taXNlcyBkbyBub3QgcmVzb2x2ZSBvbiBkZXRhY2hlZCBmcmFtZXMuIik7
Cit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKK29ubG9hZCA9IGZ1bmN0aW9uKCkKK3sK
KyAgICB2YXIgZGV0YWNoZWRXaW5kb3cgPSBmcmFtZXNbMF07CisKKyAgICAvLyBSYW5kb20gd2Fz
bSBtb2R1bGUgdGhhdCBjb21waWxlcy4gU3RvbGVuIGZyb20gSlNUZXN0cy93YXNtL3N0cmVzcy90
ZXJtaW5hbC1qdW1wLXN3aXRjaC10YXJnZXQuanMKKyAgICBsZXQgcHJvbWlzZSA9IGRldGFjaGVk
V2luZG93LldlYkFzc2VtYmx5LmNvbXBpbGUobmV3IFVpbnQ4QXJyYXkoWyAwLDk3LDExNSwxMDks
MSwwLDAsMCwxLDEzNiwxMjgsMTI4LDEyOCwwLDIsOTYsMCwwLDk2LDAsMSwxMjQsMywxMzEsMTI4
LDEyOCwxMjgsMCwyLDAsMSw3LDEzOCwxMjgsMTI4LDEyOCwwLDEsNiwxMTQsMTE3LDExMCwxMDIs
NTQsNTIsMCwxLDEwLDE2NSwxMjgsMTI4LDEyOCwwLDIsMTMwLDEyOCwxMjgsMTI4LDAsMCwxMSwx
NTIsMTI4LDEyOCwxMjgsMCwwLDMsMTI0LDY4LDAsMCwwLDAsMCwwLDAsMCw2NSwwLDE0LDAsMSwx
NiwwLDExLDEyLDAsMCwxMSBdKSk7CisgICAgdmFyIHN1YkZyYW1lQ2FsbGVkID0gZmFsc2U7Cisg
ICAgcHJvbWlzZS50aGVuKCgpID0+IHN1YkZyYW1lQ2FsbGVkID0gdHJ1ZSk7CisKKyAgICBwcm9t
aXNlID0gV2ViQXNzZW1ibHkuY29tcGlsZShuZXcgVWludDhBcnJheShbIDAsOTcsMTE1LDEwOSwx
LDAsMCwwLDEsMTM2LDEyOCwxMjgsMTI4LDAsMiw5NiwwLDAsOTYsMCwxLDEyNCwzLDEzMSwxMjgs
MTI4LDEyOCwwLDIsMCwxLDcsMTM4LDEyOCwxMjgsMTI4LDAsMSw2LDExNCwxMTcsMTEwLDEwMiw1
NCw1MiwwLDEsMTAsMTY1LDEyOCwxMjgsMTI4LDAsMiwxMzAsMTI4LDEyOCwxMjgsMCwwLDExLDE1
MiwxMjgsMTI4LDEyOCwwLDAsMywxMjQsNjgsMCwwLDAsMCwwLDAsMCwwLDY1LDAsMTQsMCwxLDE2
LDAsMTEsMTIsMCwwLDExIF0pKTsKKyAgICBwcm9taXNlLnRoZW4oKCkgPT4geworICAgICAgICB0
ZXN0UGFzc2VkKCJXQVNNIHByb21pc2Ugd2FzIHJlc29sdmVkIG9uIHRoZSBtYWluIGZyYW1lIik7
CisgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgaWYgKHN1YkZyYW1lQ2Fs
bGVkKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIldBU00gcHJvbWlzZSBzaG91bGQgbm90
IGJlIHJlc29sdmVkIGlmIHRoZSBzdWJmcmFtZSBpcyBkZXRhY2hlZCIpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIldBU00gcHJvbWlzZSBkaWQgbm90IGFw
cGVhciB0byBiZSByZXNvbHZlZCBhZnRlciBzdWJmcmFtZSB3YXMgZGV0YWNoZWQiKTsKKyAgICAg
ICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAvLyBBZGQgc21hbGwgdGltZW91dCB0byBi
ZSBzYWZlLgorICAgICAgICB9LCAxMDApOworICAgIH0pOworCisgICAgZG9jdW1lbnQuYm9keS5y
ZW1vdmVDaGlsZChkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaWZyYW1lIilbMF0pOwor
fQorPC9zY3JpcHQ+Cis8aWZyYW1lIHNyYz0iYWJvdXQ6YmxhbmsiPjwvaWZyYW1lPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3BhZ2UtY2FjaGUtYWN0aXZlLWZpbmFsaXph
dGlvbi1yZWdpc3RyeS1jYWxsYmFjay1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2hp
c3RvcnkvcGFnZS1jYWNoZS1hY3RpdmUtZmluYWxpemF0aW9uLXJlZ2lzdHJ5LWNhbGxiYWNrLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NTBjMzE1OWJmODU0NzRlZWYxZDQxNWIxOGIwZWY0YWQ5
NDNlOWUzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3BhZ2Ut
Y2FjaGUtYWN0aXZlLWZpbmFsaXphdGlvbi1yZWdpc3RyeS1jYWxsYmFjay1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxNSBAQAorVGVzdHMgdGhhdCBhIHBhZ2Ugd2l0aCBhIHBlbmRpbmcgRmluYWxp
emF0aW9uUmVnaXN0cnkgY2FsbGJhY2sgaXMgYWJsZSB0byBlbnRlciB0aGUgYmFjay9mb3J3YXJk
IGNhY2hlIGFuZCBnZXRzIHN1c3BlbmRlZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CisKK3BhZ2VzaG93IC0gbm90IGZyb20gY2FjaGUKK3BhZ2VoaWRlIC0gZW50ZXJpbmcgY2FjaGUK
K0ZpbGxpbmcgZmluYWxpemF0aW9uIHJlZ2lzdHJ5CitwYWdlc2hvdyAtIGZyb20gY2FjaGUKK1BB
U1MgUGFnZSBkaWQgZW50ZXIgYW5kIHdhcyByZXN0b3JlZCBmcm9tIHRoZSBiYWNrL2ZvcndhcmQg
Y2FjaGUKK1BBU1MgQ29kZSBkaWQgbm90IHJ1biB3aGlsZSBpbiB0aGUgYmFjay9mb3J3YXJkIGNh
Y2hlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3BhZ2UtY2FjaGUtYWN0aXZlLWZp
bmFsaXphdGlvbi1yZWdpc3RyeS1jYWxsYmFjay5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9oaXN0
b3J5L3BhZ2UtY2FjaGUtYWN0aXZlLWZpbmFsaXphdGlvbi1yZWdpc3RyeS1jYWxsYmFjay5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjAyMDdhMjE3NjgwZDc5ZmYxYmQ4ODg0NjVhYzg0NjRlYjE4Y2FkMzEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvcGFnZS1jYWNoZS1hY3Rp
dmUtZmluYWxpemF0aW9uLXJlZ2lzdHJ5LWNhbGxiYWNrLmh0bWwKQEAgLTAsMCArMSw2OCBAQAor
PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBlbmFibGVCYWNrRm9yd2FyZENhY2hlPXRydWUganNj
T3B0aW9ucz0tLXVzZVdlYWtSZWZzPXRydWUgXSAtLT4KKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3RzIHRoYXQgYSBwYWdlIHdpdGggYSBwZW5k
aW5nIEZpbmFsaXphdGlvblJlZ2lzdHJ5IGNhbGxiYWNrIGlzIGFibGUgdG8gZW50ZXIgdGhlIGJh
Y2svZm9yd2FyZCBjYWNoZSBhbmQgZ2V0cyBzdXNwZW5kZWQuJyk7Cit3aW5kb3cuanNUZXN0SXNB
c3luYyA9IHRydWU7CitsZXQgbm90U3VzcGVuZGVkID0gdHJ1ZTsKK2xldCByZXN0b3JlZEZyb21D
YWNoZSA9IGZhbHNlOworCitsZXQgdW5yZWdpc3RlclRva2VuID0ge307CitsZXQgZmcgPSBuZXcg
RmluYWxpemF0aW9uUmVnaXN0cnkoKCkgPT4geworICAgIGlmICghcmVzdG9yZWRGcm9tQ2FjaGUp
CisgICAgICAgIHRlc3RGYWlsZWQoIkZpbmFsaXphdGlvblJlZ2lzdHJ5IHdhcyBydW4gYmVmb3Jl
IHJlc3RvcmluZyBmcm9tIGNhY2hlIik7CisKKyAgICBpZiAobm90U3VzcGVuZGVkKQorICAgICAg
ICB0ZXN0UGFzc2VkKCJDb2RlIGRpZCBub3QgcnVuIHdoaWxlIGluIHRoZSBiYWNrL2ZvcndhcmQg
Y2FjaGUiKTsKKyAgICBlbHNlCisgICAgICAgIHRlc3RGYWlsZWQoIlRoaXMgY29kZSBzaG91bGQg
bm90IGJlIHJ1bm5pbmcgd2hpbGUgdGhlIHBhZ2UgaXMgaW4gdGhlIGJhY2svZm9yd2FyZCIpOwor
CisgICAgZmcudW5yZWdpc3Rlcih1bnJlZ2lzdGVyVG9rZW4pOworICAgIGZpbmlzaEpTVGVzdCgp
OworfSk7CisKK3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJwYWdlc2hvdyIsIGZ1bmN0aW9uKGV2
ZW50KSB7CisgICAgZGVidWcoInBhZ2VzaG93IC0gIiArIChldmVudC5wZXJzaXN0ZWQgPyAiIiA6
ICJub3QgIikgKyAiZnJvbSBjYWNoZSIpOworCisgICAgaWYgKGV2ZW50LnBlcnNpc3RlZCkgewor
ICAgICAgICB0ZXN0UGFzc2VkKCJQYWdlIGRpZCBlbnRlciBhbmQgd2FzIHJlc3RvcmVkIGZyb20g
dGhlIGJhY2svZm9yd2FyZCBjYWNoZSIpOworICAgICAgICByZXN0b3JlZEZyb21DYWNoZSA9IHRy
dWU7CisgICAgfQorICAgIG5vdFN1c3BlbmRlZCA9IHRydWU7Cit9LCBmYWxzZSk7CisKK3dpbmRv
dy5hZGRFdmVudExpc3RlbmVyKCJwYWdlaGlkZSIsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgZGVi
dWcoInBhZ2VoaWRlIC0gIiArIChldmVudC5wZXJzaXN0ZWQgPyAiIiA6ICJub3QgIikgKyAiZW50
ZXJpbmcgY2FjaGUiKTsKKyAgICBpZiAoIWV2ZW50LnBlcnNpc3RlZCkgeworICAgICAgICB0ZXN0
RmFpbGVkKCJQYWdlIGRpZCBub3QgZW50ZXIgdGhlIGJhY2svZm9yd2FyZCBjYWNoZS4iKTsKKyAg
ICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfQorICAgIGZpbGxGaW5hbGl6YXRpb25SZWdpc3Ry
eSgpOworICAgIG5vdFN1c3BlbmRlZCA9IGZhbHNlOworfSwgZmFsc2UpOworCit2YXIgdGV4dERh
dGEgPSBKU09OLnN0cmluZ2lmeSgiVGhpcyBpcyB0aGUgYm9keSIpOworCitmdW5jdGlvbiBmaWxs
RmluYWxpemF0aW9uUmVnaXN0cnkoKQoreworICAgIGRlYnVnKCJGaWxsaW5nIGZpbmFsaXphdGlv
biByZWdpc3RyeSIpOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgKytpKQorICAgICAg
ICBmZy5yZWdpc3Rlcih7IH0sIHVuZGVmaW5lZCwgdW5yZWdpc3RlclRva2VuKTsKKworICAgIEdD
Q29udHJvbGxlci5jb2xsZWN0KCk7Cit9CisKK3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2Fk
JywgZnVuY3Rpb24oKSB7CisgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgIHdpbmRvdy5s
b2NhdGlvbi5ocmVmID0gInJlc291cmNlcy9wYWdlLWNhY2hlLWhlbHBlci5odG1sIjsKKyAgICB9
LCAwKTsKK30sIGZhbHNlKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKKworCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvcGFnZS1jYWNoZS13YXNtLXByb21p
c2UtcmVzb2x2ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvcGFnZS1j
YWNoZS13YXNtLXByb21pc2UtcmVzb2x2ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDBjNjlk
ODAxYzZhM2I3MzA4M2RjZWJmNWFjOTBlNGU2YTljOWFmMgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9wYWdlLWNhY2hlLXdhc20tcHJvbWlzZS1yZXNvbHZlLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1IEBACitUZXN0cyB0aGF0IGEgcGFnZSB3aXRoIGEgcGVu
ZGluZyBXQVNNIG1vZHVsZSByZXNvbHV0aW9uIGlzIGFibGUgdG8gZW50ZXIgdGhlIGJhY2svZm9y
d2FyZCBjYWNoZSBhbmQgZ2V0cyBzdXNwZW5kZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitwYWdlc2hvdyAtIG5vdCBmcm9tIGNhY2hlCitwYWdlaGlkZSAtIGVudGVyaW5nIGNh
Y2hlCitwYWdlc2hvdyAtIGZyb20gY2FjaGUKK1BBU1MgUGFnZSBkaWQgZW50ZXIgYW5kIHdhcyBy
ZXN0b3JlZCBmcm9tIHRoZSBiYWNrL2ZvcndhcmQgY2FjaGUKK1BBU1MgV0FTTSBibG9iIGNvbXBp
bGVkIHN1Y2Nlc3NmdWxseQorUEFTUyBXQVNNIGRpZCBub3QgcmVzb2x2ZSB3aGlsZSBpbiB0aGUg
YmFjay9mb3J3YXJkIGNhY2hlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3BhZ2Ut
Y2FjaGUtd2FzbS1wcm9taXNlLXJlc29sdmUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvaGlzdG9y
eS9wYWdlLWNhY2hlLXdhc20tcHJvbWlzZS1yZXNvbHZlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTY2Njkz
OGNmYWNhZWU2NTY3ZTA0ZDM2MGNmYTBkOGM3YzA0NTJiYgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9wYWdlLWNhY2hlLXdhc20tcHJvbWlzZS1yZXNvbHZlLmh0
bWwKQEAgLTAsMCArMSw2OCBAQAorPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBlbmFibGVCYWNr
Rm9yd2FyZENhY2hlPXRydWUganNjT3B0aW9ucz0tLXVzZVdlYWtSZWZzPXRydWUgXSAtLT4KKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3RzIHRo
YXQgYSBwYWdlIHdpdGggYSBwZW5kaW5nIFdBU00gbW9kdWxlIHJlc29sdXRpb24gaXMgYWJsZSB0
byBlbnRlciB0aGUgYmFjay9mb3J3YXJkIGNhY2hlIGFuZCBnZXRzIHN1c3BlbmRlZC4nKTsKK3dp
bmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK2xldCBub3RTdXNwZW5kZWQgPSB0cnVlOworbGV0
IHJlc3RvcmVkRnJvbUNhY2hlID0gZmFsc2U7CisKK2Z1bmN0aW9uIGNoZWNrKHZhbHVlLCBlcnJv
cikgeworICAgIGlmIChlcnJvcikKKyAgICAgICAgdGVzdEZhaWxlZCgiV0FTTSBibG9iIGRpZG4n
dCBjb21waWxlIik7CisKKyAgICBpZiAodmFsdWUpCisgICAgICAgIHRlc3RQYXNzZWQoIldBU00g
YmxvYiBjb21waWxlZCBzdWNjZXNzZnVsbHkiKTsKKyAgICBlbHNlCisgICAgICAgIHRlc3RGYWls
ZWQoIldBU00gYmxvYiBkaWQgbm90IHJldHVybiBhIG1vZHVsZSBmb3Igc29tZSByZWFzb24iKTsK
KworICAgIGlmICghcmVzdG9yZWRGcm9tQ2FjaGUpCisgICAgICAgIHRlc3RGYWlsZWQoIldBU00g
cHJvbWlzZSB3YXMgcmVzb2x2ZWQgYmVmb3JlIHJlc3RvcmluZyBmcm9tIGNhY2hlIik7CisKKyAg
ICBpZiAobm90U3VzcGVuZGVkKQorICAgICAgICB0ZXN0UGFzc2VkKCJXQVNNIGRpZCBub3QgcmVz
b2x2ZSB3aGlsZSBpbiB0aGUgYmFjay9mb3J3YXJkIGNhY2hlIik7CisgICAgZWxzZQorICAgICAg
ICB0ZXN0RmFpbGVkKCJXQVNNIHByb21pc2UgcmVzb2x1dGlvbiBzaG91bGQgbm90IHJ1biB3aGls
ZSB0aGUgcGFnZSBpcyBpbiB0aGUgYmFjay9mb3J3YXJkIik7CisKKyAgICBmaW5pc2hKU1Rlc3Qo
KTsKK307CisKK3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJwYWdlc2hvdyIsIGZ1bmN0aW9uKGV2
ZW50KSB7CisgICAgZGVidWcoInBhZ2VzaG93IC0gIiArIChldmVudC5wZXJzaXN0ZWQgPyAiIiA6
ICJub3QgIikgKyAiZnJvbSBjYWNoZSIpOworCisgICAgaWYgKGV2ZW50LnBlcnNpc3RlZCkgewor
ICAgICAgICB0ZXN0UGFzc2VkKCJQYWdlIGRpZCBlbnRlciBhbmQgd2FzIHJlc3RvcmVkIGZyb20g
dGhlIGJhY2svZm9yd2FyZCBjYWNoZSIpOworICAgICAgICByZXN0b3JlZEZyb21DYWNoZSA9IHRy
dWU7CisgICAgfQorICAgIG5vdFN1c3BlbmRlZCA9IHRydWU7Cit9LCBmYWxzZSk7CisKK3dpbmRv
dy5hZGRFdmVudExpc3RlbmVyKCJwYWdlaGlkZSIsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgZGVi
dWcoInBhZ2VoaWRlIC0gIiArIChldmVudC5wZXJzaXN0ZWQgPyAiIiA6ICJub3QgIikgKyAiZW50
ZXJpbmcgY2FjaGUiKTsKKyAgICBpZiAoIWV2ZW50LnBlcnNpc3RlZCkgeworICAgICAgICB0ZXN0
RmFpbGVkKCJQYWdlIGRpZCBub3QgZW50ZXIgdGhlIGJhY2svZm9yd2FyZCBjYWNoZS4iKTsKKyAg
ICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfQorCisgICAgLy8gUmFuZG9tIHdhc20gbW9kdWxl
IHRoYXQgY29tcGlsZXMuIFN0b2xlbiBmcm9tIEpTVGVzdHMvd2FzbS9zdHJlc3MvdGVybWluYWwt
anVtcC1zd2l0Y2gtdGFyZ2V0LmpzCisgICAgbGV0IHByb21pc2UgPSBXZWJBc3NlbWJseS5jb21w
aWxlKG5ldyBVaW50OEFycmF5KFsgMCw5NywxMTUsMTA5LDEsMCwwLDAsMSwxMzYsMTI4LDEyOCwx
MjgsMCwyLDk2LDAsMCw5NiwwLDEsMTI0LDMsMTMxLDEyOCwxMjgsMTI4LDAsMiwwLDEsNywxMzgs
MTI4LDEyOCwxMjgsMCwxLDYsMTE0LDExNywxMTAsMTAyLDU0LDUyLDAsMSwxMCwxNjUsMTI4LDEy
OCwxMjgsMCwyLDEzMCwxMjgsMTI4LDEyOCwwLDAsMTEsMTUyLDEyOCwxMjgsMTI4LDAsMCwzLDEy
NCw2OCwwLDAsMCwwLDAsMCwwLDAsNjUsMCwxNCwwLDEsMTYsMCwxMSwxMiwwLDAsMTEgXSkpOwor
CisgICAgcHJvbWlzZS50aGVuKGNoZWNrKTsKKworICAgIG5vdFN1c3BlbmRlZCA9IGZhbHNlOwor
fSwgZmFsc2UpOworCit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGZ1bmN0aW9uKCkg
eworICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9
ICJyZXNvdXJjZXMvcGFnZS1jYWNoZS1oZWxwZXIuaHRtbCI7CisgICAgfSwgMCk7Cit9LCBmYWxz
ZSk7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCisKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410891</attachid>
            <date>2020-10-08 15:20:37 -0700</date>
            <delta_ts>2020-10-08 21:29:20 -0700</delta_ts>
            <desc>Build-fix</desc>
            <filename>bug-214508-20201008152036.patch</filename>
            <type>text/plain</type>
            <size>48266</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4MjA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
NmZhZGY4MWFhNDgwZTg1NjdiM2Q3NzFkY2FjMTZiYWI2ODUwZmMwLi5iODJjZmRkODljYzVjNTRj
MzZkNGIxMDA0YzVhMmMyOGE5MTYwMzNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MSBAQAorMjAyMC0xMC0wOCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBGaW5hbGl6ZXJzIHNob3VsZG4ndCBydW4gaWYgZXZlbnRzIGNhbid0
IGZpcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
NDUwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgcGF0Y2ggbWFrZXMgaXQgc28gdGhlIERlZmVycmVkV29ya1RpbWVyIHdvbid0IHJ1biBzY2hl
ZHVsZWQKKyAgICAgICAgdGFza3MgaWYgdGhvc2Ugd291bGQgbm90IGhhdmUgcnVuIGlmIHRoZXkg
d2VyZSBzY2hlZHVsZWQgaW4KKyAgICAgICAgV2ViQ29yZS4gVG8gZG8gdGhpcyB0aGVyZSBpcyBu
b3cgYSBjb25jZXB0IG9mIGEKKyAgICAgICAgU2NyaXB0RXhlY3V0aW9uT3duZXIuIFRoZSBTY3Jp
cHRFeGVjdXRpb25Pd25lciBpcyBhbG1vc3QgYWx3YXlzCisgICAgICAgIHRoZSBzYW1lIGFzIHRo
ZSBnbG9iYWwgb2JqZWN0IG9mIHRoZSBwZW5kaW5nIHRhc2sgKHJlZmVycmVkIHRvIGFzCisgICAg
ICAgIHRoZSB0aWNrZXQpLiAgVGhlIG9ubHkgZXhjZXB0aW9uIHRvIHRoaXMgaXMgaWYgdGhlIGds
b2JhbCBvYmplY3QKKyAgICAgICAgaXMgYSBKU0RPTVdpbmRvd0Jhc2UsIHRoZW4gdGhlIFNjcmlw
dEV4ZWN1dGlvbk93bmVyIGlzIHRoZQorICAgICAgICBEb2N1bWVudCdzIEpTIHdyYXBwZXIuIFRv
IHRlbGwgdGhlIHN0YXR1cyBvZiBhCisgICAgICAgIFNjcmlwdEV4ZWN1dGlvbk93bmVyLCB0aGUg
RGVmZXJyZWRXb3JrVGltZXIgY2FsbHMgYSB2aXJ0dWFsCisgICAgICAgIGZ1bmN0aW9uIG9uIHRo
ZSBnbG9iYWwgb2JqZWN0IG9mIHRoZSB0aWNrZXQsIGZvciBKU0Mtb25seSB0aGlzCisgICAgICAg
IGp1c3QgYWx3YXlzIHJldHVybnMgUnVubmluZy4gRm9yIFdlYkNvcmUsIHdlIGFzayB0aGUKKyAg
ICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCBhc3NvY2lhdGVkIHdpdGggdGhlIFNjcmlwdEV4
ZWN1dGlvbk93bmVyLgorCisgICAgICAgICogQVBJL0pTQVBJR2xvYmFsT2JqZWN0LmNwcDoKKyAg
ICAgICAgKiBBUEkvSlNBUElHbG9iYWxPYmplY3QubW06CisgICAgICAgICoganNjLmNwcDoKKyAg
ICAgICAgKiBydW50aW1lL0RlZmVycmVkV29ya1RpbWVyLmNwcDoKKyAgICAgICAgKEpTQzo6RGVm
ZXJyZWRXb3JrVGltZXI6OmRvV29yayk6CisgICAgICAgIChKU0M6OkRlZmVycmVkV29ya1RpbWVy
OjphZGRQZW5kaW5nV29yayk6CisgICAgICAgIChKU0M6OkRlZmVycmVkV29ya1RpbWVyOjpoYXNE
ZXBlbmRhbmN5SW5QZW5kaW5nV29yayk6CisgICAgICAgIChKU0M6OkRlZmVycmVkV29ya1RpbWVy
OjpzY3JpcHRFeGVjdXRpb25Pd25lcldhc1Vuc3VzcGVuZGVkKToKKyAgICAgICAgKiBydW50aW1l
L0RlZmVycmVkV29ya1RpbWVyLmg6CisgICAgICAgICogcnVudGltZS9KU0ZpbmFsaXphdGlvblJl
Z2lzdHJ5LmNwcDoKKyAgICAgICAgKEpTQzo6SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6Y3JlYXRl
KToKKyAgICAgICAgKEpTQzo6SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6ZmluaXNoQ3JlYXRpb24p
OgorICAgICAgICAqIHJ1bnRpbWUvSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxP
YmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmN1cnJlbnRTY3JpcHRFeGVj
dXRpb25Pd25lcik6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpzY3JpcHRFeGVjdXRp
b25TdGF0dXMpOgorCiAyMDIwLTEwLTA3ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5j
b20+CiAKICAgICAgICAgW0pTQ10gUmVzdHJpY3QgbW9yZSBwdHItdGFnZ2luZyBhbmQgYXZvaWQg
dXNpbmcgT3BlcmF0aW9uUHRyVGFnIGZvciBKSVQgY29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA1ZDU3YjgxZTIyZGVmMjc1
NDFjYzkyNmMzZmNlZjA1ZTdkOWU0MmJiLi5iYjBlZTk0ODEwNDNkYzhjZjVmYThhMDMzOWU4NjU4
MjM1ZjUzNDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIwLTEwLTA4ICBLZWl0aCBNaWxsZXIg
IDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgorCisgICAgICAgIEZpbmFsaXplcnMgc2hvdWxkbid0
IHJ1biBpZiBldmVudHMgY2FuJ3QgZmlyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE0NTA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIGEgRHJvcExvY2tTY29wZSB0byBtYWtlIGl0IGVhc2llciB0
byBkcm9wIGEgbG9jayBmb3IgYSBzaG9ydAorICAgICAgICBwaWVjZSBvZiBjb2RlLiAgQWxzbywg
aW5zdGVhZCBvZiBkZWxldGluZyBpbnQgTG9ja2VyIGNvbnN0cnVjdG9yCisgICAgICAgIHdlIHNo
b3VsZCBqdXN0IGRlbGV0ZSB0aGUgdW5kZXJseWluZyB0eXBlIG9mIHRoZQorICAgICAgICBOb0xv
Y2tpbmdOZWNlc3NhcnkgZW51bS4KKworICAgICAgICAqIHd0Zi9Mb2NrZXIuaDoKKyAgICAgICAg
KFdURjo6TG9ja2VyOjp+TG9ja2VyKToKKyAgICAgICAgKFdURjo6TG9ja2VyOjp1bmxvY2tFYXJs
eSk6CisgICAgICAgIChXVEY6OkxvY2tlcjo6TG9ja2VyKToKKyAgICAgICAgKFdURjo6TG9ja2Vy
OjpvcGVyYXRvcj0pOgorICAgICAgICAoV1RGOjpMb2NrZXI6OnVubG9jayk6CisgICAgICAgIChX
VEY6OkRyb3BMb2NrU2NvcGU6OkRyb3BMb2NrU2NvcGUpOgorICAgICAgICAoV1RGOjpEcm9wTG9j
a1Njb3BlOjp+RHJvcExvY2tTY29wZSk6CisKIDIwMjAtMTAtMDggIFl1c3VrZSBTdXp1a2kgIDx5
c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBidWlsZCBmaXggZm9yIEFS
TTY0RQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IGUyMzkxZmZmNDEwZTY2OTQwZjY4NjUzNzFmODgyYjA4YjU1Y2Q4
ZTAuLmQwY2M5M2JmNDBmYmM3ZWQ1ZDMzYWNjNTczYjVjMTgyZWYzYzBhNjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw0NCBAQAorMjAyMC0xMC0wOCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVy
QGFwcGxlLmNvbT4KKworICAgICAgICBGaW5hbGl6ZXJzIHNob3VsZG4ndCBydW4gaWYgZXZlbnRz
IGNhbid0IGZpcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxNDUwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggbWFrZXMgaXQgc28gdGhlIERlZmVycmVkV29ya1RpbWVyIHdvbid0IHJ1
biBzY2hlZHVsZWQKKyAgICAgICAgdGFza3MgaWYgdGhvc2Ugd291bGQgbm90IGhhdmUgcnVuIGlm
IHRoZXkgd2VyZSBzY2hlZHVsZWQgaW4KKyAgICAgICAgV2ViQ29yZS4gVG8gZG8gdGhpcyB0aGVy
ZSBpcyBub3cgYSBjb25jZXB0IG9mIGEKKyAgICAgICAgU2NyaXB0RXhlY3V0aW9uT3duZXIuIFRo
ZSBTY3JpcHRFeGVjdXRpb25Pd25lciBpcyBhbG1vc3QgYWx3YXlzCisgICAgICAgIHRoZSBzYW1l
IGFzIHRoZSBnbG9iYWwgb2JqZWN0IG9mIHRoZSBwZW5kaW5nIHRhc2sgKHJlZmVycmVkIHRvIGFz
CisgICAgICAgIHRoZSB0aWNrZXQpLiAgVGhlIG9ubHkgZXhjZXB0aW9uIHRvIHRoaXMgaXMgaWYg
dGhlIGdsb2JhbCBvYmplY3QKKyAgICAgICAgaXMgYSBKU0RPTVdpbmRvd0Jhc2UsIHRoZW4gdGhl
IFNjcmlwdEV4ZWN1dGlvbk93bmVyIGlzIHRoZQorICAgICAgICBEb2N1bWVudCdzIEpTIHdyYXBw
ZXIuIFRvIHRlbGwgdGhlIHN0YXR1cyBvZiBhCisgICAgICAgIFNjcmlwdEV4ZWN1dGlvbk93bmVy
LCB0aGUgRGVmZXJyZWRXb3JrVGltZXIgY2FsbHMgYSB2aXJ0dWFsCisgICAgICAgIGZ1bmN0aW9u
IG9uIHRoZSBnbG9iYWwgb2JqZWN0IG9mIHRoZSB0aWNrZXQsIGZvciBKU0Mtb25seSB0aGlzCisg
ICAgICAgIGp1c3QgYWx3YXlzIHJldHVybnMgUnVubmluZy4gRm9yIFdlYkNvcmUsIHdlIGFzayB0
aGUKKyAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCBhc3NvY2lhdGVkIHdpdGggdGhlIFNj
cmlwdEV4ZWN1dGlvbk93bmVyLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dC
YXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6Y3VycmVudFNjcmlw
dEV4ZWN1dGlvbk93bmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6c2Ny
aXB0RXhlY3V0aW9uU3RhdHVzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jh
c2UuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXJDYWNoZS5oOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTUmVtb3RlRE9NV2luZG93QmFzZS5jcHA6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OnNjcmlwdEV4ZWN1dGlvblN0YXR1cyk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuaDoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpzY3JpcHRFeGVjdXRpb25TdGF0dXMpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5oOgorICAgICAgICAqIGRv
bS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OmNvbnRleHRJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnJlbW92ZUZyb21Db250ZXh0c01hcCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojp+U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpqc2NTY3Jp
cHRFeGVjdXRpb25TdGF0dXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6cmVzdW1lQWN0aXZlRE9NT2JqZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRFeGVjdXRpb25Db250ZXh0Ojpwb3N0VGFza1RvKToKKyAgICAgICAgKiBkb20vU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5oOgorCiAyMDIwLTEwLTA4ICBBbmRyZXMgR29uemFsZXogIDxhbmRy
ZXNnXzIyQGFwcGxlLmNvbT4KIAogICAgICAgICBQcmVzaWRlbnRpYWwgRXhlY3V0aXZlIE9yZGVy
IHBhZ2VzIG5vdCBhY2Nlc3NpYmxlIHdpdGggU2FmYXJpLgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0LmNwcAppbmRleCA5YjRmMzM4ZmQ5MDMxMjI2OTY2
NzlhODc4YjFjMjhiZjZlMDQ5M2MxLi45ZjVlMGFkMzBkN2Q3MjM1MGU5ZWU5OWFhZDM0NTI4ZGVk
NzBmYmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFs
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2Jq
ZWN0LmNwcApAQCAtNDUsNiArNDUsOCBAQCBjb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBK
U0FQSUdsb2JhbE9iamVjdDo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSA9IHsKICAgICBudWxs
cHRyLCAvLyBtb2R1bGVMb2FkZXJFdmFsdWF0ZQogICAgIG51bGxwdHIsIC8vIHByb21pc2VSZWpl
Y3Rpb25UcmFja2VyCiAgICAgJnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3AsCisg
ICAgJmN1cnJlbnRTY3JpcHRFeGVjdXRpb25Pd25lciwKKyAgICAmc2NyaXB0RXhlY3V0aW9uU3Rh
dHVzLAogICAgIG51bGxwdHIsIC8vIGRlZmF1bHRMYW5ndWFnZQogICAgIG51bGxwdHIsIC8vIGNv
bXBpbGVTdHJlYW1pbmcKICAgICBudWxscHRyLCAvLyBpbnN0YW50aWF0ZVN0cmVhbWluZwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5tbSBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3QubW0KaW5kZXggZGRl
MmJkMzIzYmM3YjY1YjRmMDkwMjNiODdhZWEyN2IwNDIzNjM5ZS4uNTQ2MTM3OWZkYmRlNGMxZTky
MzU1YWYwMTcwMTQzMjYwMGNhZTEyMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0FQSUdsb2JhbE9iamVjdC5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQVBJR2xvYmFsT2JqZWN0Lm1tCkBAIC02NSw2ICs2NSw4IEBAIGNvbnN0IEdsb2JhbE9iamVj
dE1ldGhvZFRhYmxlIEpTQVBJR2xvYmFsT2JqZWN0OjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxl
ID0gewogICAgICZtb2R1bGVMb2FkZXJFdmFsdWF0ZSwgLy8gbW9kdWxlTG9hZGVyRXZhbHVhdGUK
ICAgICBudWxscHRyLCAvLyBwcm9taXNlUmVqZWN0aW9uVHJhY2tlcgogICAgICZyZXBvcnRVbmNh
dWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wLAorICAgICZjdXJyZW50U2NyaXB0RXhlY3V0aW9uT3du
ZXIsCisgICAgJnNjcmlwdEV4ZWN1dGlvblN0YXR1cywKICAgICBudWxscHRyLCAvLyBkZWZhdWx0
TGFuZ3VhZ2UKICAgICBudWxscHRyLCAvLyBjb21waWxlU3RyZWFtaW5nCiAgICAgbnVsbHB0ciwg
Ly8gaW5zdGFudGlhdGVTdHJlYW1pbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggYmE2MzMyMTJl
MjgyYTAwNjQ0ZDIwODk0MGUyYjBlMjQ0NDhmODQ2Zi4uNGI3MDZlMmZmMjllNmUwOTlkZDhiZGFi
YWEyMDRkZjkyNjFiYjg2ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTcyMCw2ICs3MjAsOCBA
QCBjb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBHbG9iYWxPYmplY3Q6OnNfZ2xvYmFsT2Jq
ZWN0TWV0aG9kVGFibGUgPSB7CiAgICAgbnVsbHB0ciwgLy8gbW9kdWxlTG9hZGVyRXZhbHVhdGUK
ICAgICBudWxscHRyLCAvLyBwcm9taXNlUmVqZWN0aW9uVHJhY2tlcgogICAgICZyZXBvcnRVbmNh
dWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wLAorICAgICZjdXJyZW50U2NyaXB0RXhlY3V0aW9uT3du
ZXIsCisgICAgJnNjcmlwdEV4ZWN1dGlvblN0YXR1cywKICAgICBudWxscHRyLCAvLyBkZWZhdWx0
TGFuZ3VhZ2UKICAgICBudWxscHRyLCAvLyBjb21waWxlU3RyZWFtaW5nCiAgICAgbnVsbHB0ciwg
Ly8gaW5zdGFudGluYXRlU3RyZWFtaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9EZWZlcnJlZFdvcmtUaW1lci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9EZWZlcnJlZFdvcmtUaW1lci5jcHAKaW5kZXggY2VkNzdiYWU0NGQ3MzJlZGUzN2Y0
NDAzNzdkMDczNWE3ZmVhMmRjOC4uOTU4MGM2MmUxNWI2MDM4NjBiNThlYmI5ODY3MWNjNjRhMzM4
YmRiNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVmZXJyZWRX
b3JrVGltZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RlZmVycmVk
V29ya1RpbWVyLmNwcApAQCAtNDUsMjIgKzQ1LDM4IEBAIERlZmVycmVkV29ya1RpbWVyOjpEZWZl
cnJlZFdvcmtUaW1lcihWTSYgdm0pCiB2b2lkIERlZmVycmVkV29ya1RpbWVyOjpkb1dvcmsoVk0m
IHZtKQogewogICAgIEFTU0VSVCh2bS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsK
LSAgICBtX3Rhc2tMb2NrLmxvY2soKTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fdGFz
a0xvY2spOwogICAgIGNhbmNlbFRpbWVyKCk7Ci0gICAgaWYgKCFtX3J1blRhc2tzKSB7Ci0gICAg
ICAgIG1fdGFza0xvY2sudW5sb2NrKCk7CisgICAgaWYgKCFtX3J1blRhc2tzKQogICAgICAgICBy
ZXR1cm47Ci0gICAgfQorCisgICAgVmVjdG9yPHN0ZDo6dHVwbGU8VGlja2V0LCBUYXNrPj4gc3Vz
cGVuZGVkVGFza3M7CiAKICAgICB3aGlsZSAoIW1fdGFza3MuaXNFbXB0eSgpKSB7CiAgICAgICAg
IGF1dG8gW3RpY2tldCwgdGFza10gPSBtX3Rhc2tzLnRha2VGaXJzdCgpOworICAgICAgICBhdXRv
IGdsb2JhbE9iamVjdCA9IHRpY2tldC0+c3RydWN0dXJlKHZtKS0+Z2xvYmFsT2JqZWN0KCk7CiAg
ICAgICAgIGRhdGFMb2dMbklmKERlZmVycmVkV29ya1RpbWVySW50ZXJuYWw6OnZlcmJvc2UsICJE
b2luZyB3b3JrIG9uOiAiLCBSYXdQb2ludGVyKHRpY2tldCkpOwogCi0gICAgICAgIC8vIFdlIG1h
eSBoYXZlIGFscmVhZHkgY2FuY2VsZWQgdGhlc2UgcHJvbWlzZXMuCi0gICAgICAgIGlmIChtX3Bl
bmRpbmdUaWNrZXRzLmNvbnRhaW5zKHRpY2tldCkpIHsKLSAgICAgICAgICAgIC8vIEFsbG93IHRh
c2tzIHdlIHJ1biBub3cgdG8gc2NoZWR1bGUgd29yay4KLSAgICAgICAgICAgIG1fY3VycmVudGx5
UnVubmluZ1Rhc2sgPSB0cnVlOwotICAgICAgICAgICAgbV90YXNrTG9jay51bmxvY2soKTsgCisg
ICAgICAgIGF1dG8gcGVuZGluZ1RpY2tldCA9IG1fcGVuZGluZ1RpY2tldHMuZmluZCh0aWNrZXQp
OworICAgICAgICAvLyBXZSBtYXkgaGF2ZSBhbHJlYWR5IGNhbmNlbGVkIHRoaXMgdGFzayBvciBp
dHMgb3duZXIgbWF5IGhhdmUgYmVlbiBjYW5jZWxlZC4KKyAgICAgICAgaWYgKHBlbmRpbmdUaWNr
ZXQgPT0gbV9wZW5kaW5nVGlja2V0cy5lbmQoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisg
ICAgICAgIFNjcmlwdEV4ZWN1dGlvblN0YXR1cyBzdGF0dXMgPSBnbG9iYWxPYmplY3QtPmdsb2Jh
bE9iamVjdE1ldGhvZFRhYmxlKCktPnNjcmlwdEV4ZWN1dGlvblN0YXR1cyhnbG9iYWxPYmplY3Qs
IHBlbmRpbmdUaWNrZXQtPnZhbHVlLnNjcmlwdEV4ZWN1dGlvbk93bmVyLmdldCgpKTsKKyAgICAg
ICAgc3dpdGNoIChzdGF0dXMpIHsKKyAgICAgICAgY2FzZSBTY3JpcHRFeGVjdXRpb25TdGF0dXM6
OlN1c3BlbmRlZDoKKyAgICAgICAgICAgIHN1c3BlbmRlZFRhc2tzLmFwcGVuZChzdGQ6Om1ha2Vf
dHVwbGUodGlja2V0LCBXVEZNb3ZlKHRhc2spKSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgY2FzZSBTY3JpcHRFeGVjdXRpb25TdGF0dXM6OkNhbmNlbGVkOgorICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorCisgICAgICAgIC8vIEFsbG93IHRhc2tzIHdlIGFyZSBhYm91dCB0byBydW4gdG8gc2NoZWR1
bGUgd29yay4KKyAgICAgICAgbV9jdXJyZW50bHlSdW5uaW5nVGFzayA9IHRydWU7CisgICAgICAg
IHsKKyAgICAgICAgICAgIGF1dG8gZHJvcHBlciA9IERyb3BMb2NrU2NvcGUobG9ja2VyKTsKIAog
ICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgc3RhcnQgb2YgYSBydW5sb29wIHR1cm4sIHdlIGNh
biByZWxlYXNlIGFueSB3ZWFrcmVmcyBoZXJlLgogICAgICAgICAgICAgdm0uZmluYWxpemVTeW5j
aHJvbm91c0pTRXhlY3V0aW9uKCk7CkBAIC03NSwxNiArOTEsMTcgQEAgdm9pZCBEZWZlcnJlZFdv
cmtUaW1lcjo6ZG9Xb3JrKFZNJiB2bSkKIAogICAgICAgICAgICAgdm0uZHJhaW5NaWNyb3Rhc2tz
KCk7CiAgICAgICAgICAgICBBU1NFUlQoIXZtLmV4Y2VwdGlvbkZvckluc3BlY3Rpb24oKSk7Ci0K
LSAgICAgICAgICAgIG1fdGFza0xvY2subG9jaygpOwotICAgICAgICAgICAgbV9jdXJyZW50bHlS
dW5uaW5nVGFzayA9IGZhbHNlOwogICAgICAgICB9CisgICAgICAgIG1fY3VycmVudGx5UnVubmlu
Z1Rhc2sgPSBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAobV9wZW5kaW5nVGlja2V0cy5pc0VtcHR5
KCkgJiYgbV9zaG91bGRTdG9wUnVuTG9vcFdoZW5BbGxUaWNrZXRzRmluaXNoKQotICAgICAgICBS
dW5Mb29wOjpjdXJyZW50KCkuc3RvcCgpOworICAgIHdoaWxlICghc3VzcGVuZGVkVGFza3MuaXNF
bXB0eSgpKQorICAgICAgICBtX3Rhc2tzLnByZXBlbmQoc3VzcGVuZGVkVGFza3MudGFrZUxhc3Qo
KSk7CiAKLSAgICBtX3Rhc2tMb2NrLnVubG9jaygpOworICAgIGlmIChtX3BlbmRpbmdUaWNrZXRz
LmlzRW1wdHkoKSAmJiBtX3Nob3VsZFN0b3BSdW5Mb29wV2hlbkFsbFRpY2tldHNGaW5pc2gpIHsK
KyAgICAgICAgQVNTRVJUKG1fdGFza3MuaXNFbXB0eSgpKTsKKyAgICAgICAgUnVuTG9vcDo6Y3Vy
cmVudCgpLnN0b3AoKTsKKyAgICB9CiB9CiAKIHZvaWQgRGVmZXJyZWRXb3JrVGltZXI6OnJ1blJ1
bkxvb3AoKQpAQCAtMTAyLDE1ICsxMTksMTUgQEAgdm9pZCBEZWZlcnJlZFdvcmtUaW1lcjo6YWRk
UGVuZGluZ1dvcmsoVk0mIHZtLCBUaWNrZXQgdGlja2V0LCBWZWN0b3I8U3Ryb25nPEpTQ2UKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGVwZW5kZW5jaWVzLnNpemUoKTsgKytpKQogICAg
ICAgICBBU1NFUlQoZGVwZW5kZW5jaWVzW2ldLmdldCgpICE9IHRpY2tldCk7CiAKLSAgICBhdXRv
IHJlc3VsdCA9IG1fcGVuZGluZ1RpY2tldHMuYWRkKHRpY2tldCwgVmVjdG9yPFN0cm9uZzxKU0Nl
bGw+PigpKTsKLSAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpIHsKLSAgICAgICAgZGF0YUxvZ0xu
SWYoRGVmZXJyZWRXb3JrVGltZXJJbnRlcm5hbDo6dmVyYm9zZSwgIkFkZGluZyBuZXcgcGVuZGlu
ZyB0aWNrZXQ6ICIsIFJhd1BvaW50ZXIodGlja2V0KSk7CisgICAgYXV0byBnbG9iYWxPYmplY3Qg
PSB0aWNrZXQtPmdsb2JhbE9iamVjdCgpOworICAgIGF1dG8gcmVzdWx0ID0gbV9wZW5kaW5nVGlj
a2V0cy5lbnN1cmUodGlja2V0LCBbJl0geworICAgICAgICBKU09iamVjdCogc2NyaXB0RXhlY3V0
aW9uT3duZXIgPSBnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPmN1cnJl
bnRTY3JpcHRFeGVjdXRpb25Pd25lcihnbG9iYWxPYmplY3QpOwogICAgICAgICBkZXBlbmRlbmNp
ZXMuYXBwZW5kKFN0cm9uZzxKU0NlbGw+KHZtLCB0aWNrZXQpKTsKLSAgICAgICAgcmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZSA9IFdURk1vdmUoZGVwZW5kZW5jaWVzKTsKLSAgICB9IGVsc2UgewotICAg
ICAgICBkYXRhTG9nTG5JZihEZWZlcnJlZFdvcmtUaW1lckludGVybmFsOjp2ZXJib3NlLCAiQWRk
aW5nIG5ldyBkZXBlbmRlbmNpZXMgZm9yIHRpY2tldDogIiwgUmF3UG9pbnRlcih0aWNrZXQpKTsK
LSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5hcHBlbmRWZWN0b3IoZGVwZW5kZW5jaWVz
KTsKLSAgICB9CisgICAgICAgIHJldHVybiBUaWNrZXREYXRhIHsgV1RGTW92ZShkZXBlbmRlbmNp
ZXMpLCBTdHJvbmc8SlNPYmplY3Q+KHZtLCBzY3JpcHRFeGVjdXRpb25Pd25lcikgfTsKKyAgICB9
KTsKKyAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICByZXN1bHQuaXRlcmF0b3It
PnZhbHVlLmRlcGVuZGVuY2llcy5hcHBlbmRWZWN0b3IoV1RGTW92ZShkZXBlbmRlbmNpZXMpKTsK
KyAgICBkYXRhTG9nTG5JZihEZWZlcnJlZFdvcmtUaW1lckludGVybmFsOjp2ZXJib3NlLCAiQWRk
aW5nIG5ldyBwZW5kaW5nIHRpY2tldDogIiwgUmF3UG9pbnRlcih0aWNrZXQpKTsKIH0KIAogYm9v
bCBEZWZlcnJlZFdvcmtUaW1lcjo6aGFzUGVuZGluZ1dvcmsoVGlja2V0IHRpY2tldCkKQEAgLTEy
NSw3ICsxNDIsNyBAQCBib29sIERlZmVycmVkV29ya1RpbWVyOjpoYXNEZXBlbmRhbmN5SW5QZW5k
aW5nV29yayhUaWNrZXQgdGlja2V0LCBKU0NlbGwqIGRlcGVuZAogICAgIEFTU0VSVChtX3BlbmRp
bmdUaWNrZXRzLmNvbnRhaW5zKHRpY2tldCkpOwogCiAgICAgYXV0byByZXN1bHQgPSBtX3BlbmRp
bmdUaWNrZXRzLmdldCh0aWNrZXQpOwotICAgIHJldHVybiByZXN1bHQuY29udGFpbnMoZGVwZW5k
ZW5jeSk7CisgICAgcmV0dXJuIHJlc3VsdC5kZXBlbmRlbmNpZXMuY29udGFpbnMoZGVwZW5kZW5j
eSk7CiB9CiAKIGJvb2wgRGVmZXJyZWRXb3JrVGltZXI6OmNhbmNlbFBlbmRpbmdXb3JrKFRpY2tl
dCB0aWNrZXQpCkBAIC0xNDcsNCArMTY0LDEyIEBAIHZvaWQgRGVmZXJyZWRXb3JrVGltZXI6OnNj
aGVkdWxlV29ya1Nvb24oVGlja2V0IHRpY2tldCwgVGFzayYmIHRhc2spCiAgICAgICAgIHNldFRp
bWVVbnRpbEZpcmUoMF9zKTsKIH0KIAordm9pZCBEZWZlcnJlZFdvcmtUaW1lcjo6c2NyaXB0RXhl
Y3V0aW9uT3duZXJXYXNVbnN1c3BlbmRlZCgpCit7CisgICAgQVNTRVJUKCFtX2N1cnJlbnRseVJ1
bm5pbmdUYXNrKTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3Rhc2tMb2NrKTsKKyAgICBpZiAo
IWlzU2NoZWR1bGVkKCkgJiYgbV90YXNrcy5zaXplKCkpCisgICAgICAgIHNldFRpbWVVbnRpbEZp
cmUoMF9zKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9EZWZlcnJlZFdvcmtUaW1lci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRGVmZXJyZWRXb3JrVGltZXIuaAppbmRleCAyNzFhOGFiYzllYzQyODU2
ZTlkZDNhMWNjM2JjNWNlODZkYjRmNjkzLi43ODMyMjY2MWEzZWE1NDcwMjM1NTZhYWQ4NWJlMjg4
ODBhZDI4MGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EZWZl
cnJlZFdvcmtUaW1lci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RlZmVy
cmVkV29ya1RpbWVyLmgKQEAgLTUxLDE4ICs1MSwxOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNE
ZXBlbmRhbmN5SW5QZW5kaW5nV29yayhUaWNrZXQsIEpTQ2VsbCogZGVwZW5kZW5jeSk7CiAgICAg
Ym9vbCBjYW5jZWxQZW5kaW5nV29yayhUaWNrZXQpOwogCisgICAgLy8gSWYgdGhlIHNjcmlwdCBl
eGVjdXRpb24gb3duZXIgeW91ciB0aWNrZXQgaXMgYXNzb2NpYXRlZCB3aXRoIGdldHMgY2FuY2Vs
ZWQKKyAgICAvLyB0aGUgVGFzayB3aWxsIG5vdCBiZSBjYWxsZWQgYW5kIHdpbGwgYmUgZGVhbGxv
Y2F0ZWQuIFNvIGl0J3MgaW1wb3J0YW50CisgICAgLy8gdG8gbWFrZSBzdXJlIHlvdXIgbWVtb3J5
IG93bmVyc2hpcCBtb2RlbCB3b24ndCBsZWFrIG1lbW9yeSB3aGVuCisgICAgLy8gdGhpcyBvY2N1
cnMuIFRoZSBlYXNpZXN0IHdheSBpcyB0byBtYWtlIHN1cmUgZXZlcnl0aGluZyBpcyBlaXRoZXIg
b3duZWQKKyAgICAvLyBieSBhIEdDJ2QgdmFsdWUgaW4gZGVwZW5kZW5jaWVzIG9yIGJ5IHRoZSBU
YXNrIGxhbWJkYS4KICAgICB1c2luZyBUYXNrID0gRnVuY3Rpb248dm9pZCgpPjsKICAgICB2b2lk
IHNjaGVkdWxlV29ya1Nvb24oVGlja2V0LCBUYXNrJiYpOworICAgIHZvaWQgc2NyaXB0RXhlY3V0
aW9uT3duZXJXYXNVbnN1c3BlbmRlZCgpOwogCiAgICAgdm9pZCBzdG9wUnVubmluZ1Rhc2tzKCkg
eyBtX3J1blRhc2tzID0gZmFsc2U7IH0KLQogICAgIHZvaWQgcnVuUnVuTG9vcCgpOwogCi0gICAg
c3RhdGljIFJlZjxEZWZlcnJlZFdvcmtUaW1lcj4gY3JlYXRlKFZNJiB2bSkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERlZmVycmVkV29ya1RpbWVyKHZtKSk7Ci0gICAgfQot
CisgICAgc3RhdGljIFJlZjxEZWZlcnJlZFdvcmtUaW1lcj4gY3JlYXRlKFZNJiB2bSkgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBEZWZlcnJlZFdvcmtUaW1lcih2bSkpOyB9CiBwcml2YXRlOgogICAg
IERlZmVycmVkV29ya1RpbWVyKFZNJik7CiAKQEAgLTcxLDcgKzcyLDExIEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBtX3Nob3VsZFN0b3BSdW5Mb29wV2hlbkFsbFRpY2tldHNGaW5pc2ggeyBmYWxzZSB9
OwogICAgIGJvb2wgbV9jdXJyZW50bHlSdW5uaW5nVGFzayB7IGZhbHNlIH07CiAgICAgRGVxdWU8
c3RkOjp0dXBsZTxUaWNrZXQsIFRhc2s+PiBtX3Rhc2tzOwotICAgIEhhc2hNYXA8VGlja2V0LCBW
ZWN0b3I8U3Ryb25nPEpTQ2VsbD4+PiBtX3BlbmRpbmdUaWNrZXRzOworICAgIHN0cnVjdCBUaWNr
ZXREYXRhIHsKKyAgICAgICAgVmVjdG9yPFN0cm9uZzxKU0NlbGw+PiBkZXBlbmRlbmNpZXM7Cisg
ICAgICAgIFN0cm9uZzxKU09iamVjdD4gc2NyaXB0RXhlY3V0aW9uT3duZXI7CisgICAgfTsKKyAg
ICBIYXNoTWFwPFRpY2tldCwgVGlja2V0RGF0YT4gbV9wZW5kaW5nVGlja2V0czsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmNwcAppbmRleCA1NDliOWQ5MDkyNWM2Mjc4ZDE3
MWYzY2U3ODAxOTlhY2E1NDg4YTAyLi40ZTI4ODI5ZDU3MmVkM2JkNDk1N2IwMGFlMTQ2YjQyYTEz
YTFlYzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ZpbmFs
aXphdGlvblJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmNwcApAQCAtNDIsMTEgKzQyLDExIEBAIFN0cnVjdHVyZSog
SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhCiBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5KiBKU0ZpbmFsaXphdGlvblJlZ2lz
dHJ5OjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNPYmplY3QqIGNhbGxi
YWNrKQogewogICAgIEpTRmluYWxpemF0aW9uUmVnaXN0cnkqIGluc3RhbmNlID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8SlNGaW5hbGl6YXRpb25SZWdpc3RyeT4odm0uaGVhcCkpIEpTRmlu
YWxpemF0aW9uUmVnaXN0cnkodm0sIHN0cnVjdHVyZSk7Ci0gICAgaW5zdGFuY2UtPmZpbmlzaENy
ZWF0aW9uKHZtLCBjYWxsYmFjayk7CisgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKHZtLCBz
dHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgpLCBjYWxsYmFjayk7CiAgICAgcmV0dXJuIGluc3RhbmNl
OwogfQogCi12b2lkIEpTRmluYWxpemF0aW9uUmVnaXN0cnk6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgSlNPYmplY3QqIGNhbGxiYWNrKQordm9pZCBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5OjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0
KiBjYWxsYmFjaykKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgQVNTRVJU
KGNhbGxiYWNrLT5pc0NhbGxhYmxlKHZtKSk7CkBAIC01NCw2ICs1NCwxMCBAQCB2b2lkIEpTRmlu
YWxpemF0aW9uUmVnaXN0cnk6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNPYmplY3QqIGNhbGxi
YWNrKQogICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IHZhbHVlcy5zaXplKCk7
ICsraW5kZXgpCiAgICAgICAgIEJhc2U6OmludGVybmFsRmllbGQoaW5kZXgpLnNldFdpdGhvdXRX
cml0ZUJhcnJpZXIodmFsdWVzW2luZGV4XSk7CiAgICAgaW50ZXJuYWxGaWVsZChGaWVsZDo6Q2Fs
bGJhY2spLnNldFdpdGhvdXRXcml0ZUJhcnJpZXIoY2FsbGJhY2spOworCisgICAgLy8gTWFrZSBz
dXJlIHdlIGluaXQgdGhlIERPTSB3cmFwcGVyIGZvciBvdXIgZG9jdW1lbnQgc2luY2UgaXQgbXVz
dCBiZSBhbGxvY2F0ZWQgYmVmb3JlIGZpbmFsaXplVW5jb25kaXRpb25hbGx5IGlzIGNhbGxlZC4g
ZmluYWxpemVVbmNvbmRpdGlvbmFsbHksCisgICAgLy8gaXMgY2FsbGVkIGR1cmluZyB0aGUgR0Mg
ZmxpcCBzbyBubyBKUyBvYmplY3RzIGNhbiBiZSBhbGxvY2F0ZWQgdGhlcmUuIFRoaXMgb25seSB3
b3JrcyBiZWNhdXNlIHdlIG5vIGxvbmdlciB3ZWFrbHkgaG9sZCBvbiB0byBET00gd3JhcHBlcnMu
CisgICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5jdXJyZW50U2Ny
aXB0RXhlY3V0aW9uT3duZXIoZ2xvYmFsT2JqZWN0KTsKIH0KIAogdm9pZCBKU0ZpbmFsaXphdGlv
blJlZ2lzdHJ5Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ZpbmFsaXph
dGlvblJlZ2lzdHJ5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ZpbmFsaXph
dGlvblJlZ2lzdHJ5LmgKaW5kZXggNmQ1Y2QzOGNmMGJhN2Q4Mjk5MWNkYjVjMGFhYTFmZjY0NDJh
ZjYzMy4uNzVkNjc2YmI4NWNmY2NmMGZhZjZlNjAwZTBjZjEyZTQwMWQ4YzlmYyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRmluYWxpemF0aW9uUmVnaXN0
cnkuaApAQCAtODksNyArODksNyBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICBKU19F
WFBPUlRfUFJJVkFURSB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNPYmplY3QqIGNhbGxiYWNr
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9i
YWxPYmplY3QqLCBKU09iamVjdCogY2FsbGJhY2spOwogCiAgICAgc3RhdGljIFN0cmluZyB0b1N0
cmluZ05hbWUoY29uc3QgSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggMDY5YmI4
MjgxMmE2ZjRhNWMzMmZkZjQ1MjQyZTcxMzk4OTA0NjAwNy4uOGZkMzQxMDdlNzU3MzdhMmVhZGJm
NmU2ZTYxN2U3OGYxYWZiNzZlMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtNDEyLDYgKzQxMiw4IEBAIGNvbnN0IEdsb2JhbE9i
amVjdE1ldGhvZFRhYmxlIEpTR2xvYmFsT2JqZWN0OjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxl
ID0gewogICAgIG51bGxwdHIsIC8vIG1vZHVsZUxvYWRlckV2YWx1YXRlCiAgICAgbnVsbHB0ciwg
Ly8gcHJvbWlzZVJlamVjdGlvblRyYWNrZXIKICAgICAmcmVwb3J0VW5jYXVnaHRFeGNlcHRpb25B
dEV2ZW50TG9vcCwKKyAgICAmY3VycmVudFNjcmlwdEV4ZWN1dGlvbk93bmVyLAorICAgICZzY3Jp
cHRFeGVjdXRpb25TdGF0dXMsCiAgICAgbnVsbHB0ciwgLy8gZGVmYXVsdExhbmd1YWdlCiAgICAg
bnVsbHB0ciwgLy8gY29tcGlsZVN0cmVhbWluZwogICAgIG51bGxwdHIsIC8vIGluc3RhbnRpYXRl
U3RyZWFtaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaAppbmRleCA5NzU2NGU5YzJkZTU2YzkxZWVhZTUyZGI5NTIwNjYwYmFkNTg3Y2ZjLi45NDg3
ZmJjOTU0NzNjZWE1ZWIxMmUxNDE5MTIwMDJkNjM1NGYzMTAzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTE5NSw2ICsxOTUsMTIgQEAg
ZW51bSBjbGFzcyBKU1Byb21pc2VSZWplY3Rpb25PcGVyYXRpb24gOiB1bnNpZ25lZCB7CiAgICAg
SGFuZGxlLCAvLyBXaGVuIGEgaGFuZGxlciBpcyBhZGRlZCB0byBhIHJlamVjdGVkIHByb21pc2Ug
Zm9yIHRoZSBmaXJzdCB0aW1lLgogfTsKIAorZW51bSBjbGFzcyBTY3JpcHRFeGVjdXRpb25TdGF0
dXMgeworICAgIFJ1bm5pbmcsCisgICAgU3VzcGVuZGVkLAorICAgIENhbmNlbGVkLAorfTsKKwog
c3RydWN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIHsKICAgICB0eXBlZGVmIGJvb2wgKCpTdXBw
b3J0c1JpY2hTb3VyY2VJbmZvRnVuY3Rpb25QdHIpKGNvbnN0IEpTR2xvYmFsT2JqZWN0Kik7CiAg
ICAgU3VwcG9ydHNSaWNoU291cmNlSW5mb0Z1bmN0aW9uUHRyIHN1cHBvcnRzUmljaFNvdXJjZUlu
Zm87CkBAIC0yMzIsNiArMjM4LDEzIEBAIHN0cnVjdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSB7
CiAgICAgdHlwZWRlZiB2b2lkICgqUmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcFB0
cikoSlNHbG9iYWxPYmplY3QqLCBFeGNlcHRpb24qKTsKICAgICBSZXBvcnRVbmNhdWdodEV4Y2Vw
dGlvbkF0RXZlbnRMb29wUHRyIHJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3A7CiAK
KyAgICAvLyBGb3IgbW9zdCBjb250ZXh0cyB0aGlzIGlzIGp1c3QgdGhlIGdsb2JhbCBvYmplY3Qu
IEZvciBKU0RPTVdpbmRvdywgaG93ZXZlciwgdGhpcyBpcyB0aGUgSlNEb2N1bWVudC4KKyAgICB0
eXBlZGVmIEpTT2JqZWN0KiAoKkN1cnJlbnRTY3JpcHRFeGVjdXRpb25Pd25lclB0cikoSlNHbG9i
YWxPYmplY3QqKTsKKyAgICBDdXJyZW50U2NyaXB0RXhlY3V0aW9uT3duZXJQdHIgY3VycmVudFNj
cmlwdEV4ZWN1dGlvbk93bmVyOworCisgICAgdHlwZWRlZiBTY3JpcHRFeGVjdXRpb25TdGF0dXMg
KCpTY3JpcHRFeGVjdXRpb25TdGF0dXNQdHIpKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIHNj
cmlwdEV4ZWN1dGlvbk93bmVyKTsKKyAgICBTY3JpcHRFeGVjdXRpb25TdGF0dXNQdHIgc2NyaXB0
RXhlY3V0aW9uU3RhdHVzOworCiAgICAgdHlwZWRlZiBTdHJpbmcgKCpEZWZhdWx0TGFuZ3VhZ2VG
dW5jdGlvblB0cikoKTsKICAgICBEZWZhdWx0TGFuZ3VhZ2VGdW5jdGlvblB0ciBkZWZhdWx0TGFu
Z3VhZ2U7CiAKQEAgLTg1Myw2ICs4NjYsOCBAQCBwdWJsaWM6CiAgICAgSlNPYmplY3QqIHVuaGFu
ZGxlZFJlamVjdGlvbkNhbGxiYWNrKCkgY29uc3QgeyByZXR1cm4gbV91bmhhbmRsZWRSZWplY3Rp
b25DYWxsYmFjay5nZXQoKTsgfQogCiAgICAgc3RhdGljIHZvaWQgcmVwb3J0VW5jYXVnaHRFeGNl
cHRpb25BdEV2ZW50TG9vcChKU0dsb2JhbE9iamVjdCosIEV4Y2VwdGlvbiopOworICAgIHN0YXRp
YyBKU09iamVjdCogY3VycmVudFNjcmlwdEV4ZWN1dGlvbk93bmVyKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWwpIHsgcmV0dXJuIGdsb2JhbDsgfQorICAgIHN0YXRpYyBTY3JpcHRFeGVjdXRpb25TdGF0
dXMgc2NyaXB0RXhlY3V0aW9uU3RhdHVzKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqKSB7IHJl
dHVybiBTY3JpcHRFeGVjdXRpb25TdGF0dXM6OlJ1bm5pbmc7IH0KIAogICAgIEpTT2JqZWN0KiBh
cnJheUJ1ZmZlckNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9hcnJheUJ1ZmZlclN0cnVj
dHVyZS5jb25zdHJ1Y3Rvcih0aGlzKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9M
b2NrZXIuaCBiL1NvdXJjZS9XVEYvd3RmL0xvY2tlci5oCmluZGV4IGE3ODllMDNlMDk1OGVjYmU0
ZjMyZjRkOTRmMzE2MTM1NDRiZDM2ODguLmFlNzI0OTM5NjRjYjdkNTdmYWUwM2RiMGE3ZDY4MTFh
OGNkYzhmODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0xvY2tlci5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL0xvY2tlci5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSA8d3RmL0Fzc2Vy
dGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgogI2luY2x1ZGUgPHd0Zi9Db21waWxl
ci5oPgorI2luY2x1ZGUgPHd0Zi9Gb3JiaWRIZWFwQWxsb2NhdGlvbi5oPgogI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYW5pdGl6ZXJTdXBwb3J0Lmg+
CiAKQEAgLTUxLDcgKzUyLDEwIEBAIHByb3RlY3RlZDoKICAgICB9CiB9OwogCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4gY2xhc3MgTG9ja2VyIDogcHVibGljIEFic3RyYWN0TG9ja2VyIHsKK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+IGNsYXNzIERyb3BMb2NrU2NvcGU7CisKK3RlbXBsYXRlPHR5cGVuYW1l
IFQ+CitjbGFzcyBMb2NrZXIgOiBwdWJsaWMgQWJzdHJhY3RMb2NrZXIgewogcHVibGljOgogICAg
IGV4cGxpY2l0IExvY2tlcihUJiBsb2NrYWJsZSkgOiBtX2xvY2thYmxlKCZsb2NrYWJsZSkgeyBs
b2NrKCk7IH0KICAgICBleHBsaWNpdCBMb2NrZXIoVCogbG9ja2FibGUpIDogbV9sb2NrYWJsZShs
b2NrYWJsZSkgeyBsb2NrKCk7IH0KQEAgLTYzLDE1ICs2NywxMSBAQCBwdWJsaWM6CiAgICAgLy8g
YmUgYWNjZXNzZWQgY29uY3VycmVudGx5LgogICAgIExvY2tlcihOb0xvY2tpbmdOZWNlc3NhcnlU
YWcpIDogbV9sb2NrYWJsZShudWxscHRyKSB7IH0KICAgICAKLSAgICBMb2NrZXIoaW50KSA9IGRl
bGV0ZTsKKyAgICBMb2NrZXIoc3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxOb0xvY2tpbmdOZWNlc3Nh
cnlUYWc+KSA9IGRlbGV0ZTsKIAogICAgIH5Mb2NrZXIoKQogICAgIHsKLSAgICAgICAgY29tcGls
ZXJGZW5jZSgpOwotICAgICAgICBpZiAobV9sb2NrYWJsZSkgewotICAgICAgICAgICAgVFNBTl9B
Tk5PVEFURV9IQVBQRU5TX0JFRk9SRShtX2xvY2thYmxlKTsKLSAgICAgICAgICAgIG1fbG9ja2Fi
bGUtPnVubG9jaygpOwotICAgICAgICB9CisgICAgICAgIHVubG9jaygpOwogICAgIH0KICAgICAK
ICAgICBzdGF0aWMgTG9ja2VyIHRyeUxvY2soVCYgbG9ja2FibGUpCkBAIC04OCw4ICs4OCw3IEBA
IHB1YmxpYzoKICAgICAKICAgICB2b2lkIHVubG9ja0Vhcmx5KCkKICAgICB7Ci0gICAgICAgIFRT
QU5fQU5OT1RBVEVfSEFQUEVOU19CRUZPUkUobV9sb2NrYWJsZSk7Ci0gICAgICAgIG1fbG9ja2Fi
bGUtPnVubG9jaygpOworICAgICAgICB1bmxvY2soKTsKICAgICAgICAgbV9sb2NrYWJsZSA9IG51
bGxwdHI7CiAgICAgfQogICAgIApAQCAtOTgsMjEgKzk3LDMxIEBAIHB1YmxpYzoKICAgICBMb2Nr
ZXIoTG9ja2VyJiYgb3RoZXIpCiAgICAgICAgIDogbV9sb2NrYWJsZShvdGhlci5tX2xvY2thYmxl
KQogICAgIHsKKyAgICAgICAgQVNTRVJUKCZvdGhlciAhPSB0aGlzKTsKICAgICAgICAgb3RoZXIu
bV9sb2NrYWJsZSA9IG51bGxwdHI7CiAgICAgfQogICAgIAogICAgIExvY2tlciYgb3BlcmF0b3I9
KExvY2tlciYmIG90aGVyKQogICAgIHsKLSAgICAgICAgaWYgKG1fbG9ja2FibGUpIHsKLSAgICAg
ICAgICAgIFRTQU5fQU5OT1RBVEVfSEFQUEVOU19CRUZPUkUobV9sb2NrYWJsZSk7Ci0gICAgICAg
ICAgICBtX2xvY2thYmxlLT51bmxvY2soKTsKLSAgICAgICAgfQorICAgICAgICBBU1NFUlQoJm90
aGVyICE9IHRoaXMpOwogICAgICAgICBtX2xvY2thYmxlID0gb3RoZXIubV9sb2NrYWJsZTsKICAg
ICAgICAgb3RoZXIubV9sb2NrYWJsZSA9IG51bGxwdHI7CiAgICAgICAgIHJldHVybiAqdGhpczsK
ICAgICB9CiAgICAgCiBwcml2YXRlOgorICAgIHRlbXBsYXRlPHR5cGVuYW1lPgorICAgIGZyaWVu
ZCBjbGFzcyBEcm9wTG9ja1Njb3BlOworCisgICAgdm9pZCB1bmxvY2soKQorICAgIHsKKyAgICAg
ICAgY29tcGlsZXJGZW5jZSgpOworICAgICAgICBpZiAobV9sb2NrYWJsZSkgeworICAgICAgICAg
ICAgVFNBTl9BTk5PVEFURV9IQVBQRU5TX0JFRk9SRShtX2xvY2thYmxlKTsKKyAgICAgICAgICAg
IG1fbG9ja2FibGUtPnVubG9jaygpOworICAgICAgICB9CisgICAgfQorCiAgICAgdm9pZCBsb2Nr
KCkKICAgICB7CiAgICAgICAgIGlmIChtX2xvY2thYmxlKSB7CkBAIC0xNTEsNiArMTYwLDI1IEBA
IExvY2tlcjxMb2NrVHlwZT4gdHJ5SG9sZExvY2soTG9ja1R5cGUmIGxvY2spCiAgICAgcmV0dXJu
IExvY2tlcjxMb2NrVHlwZT46OnRyeUxvY2sobG9jayk7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1l
IExvY2tUeXBlPgorY2xhc3MgRHJvcExvY2tTY29wZSA6IHByaXZhdGUgQWJzdHJhY3RMb2NrZXIg
eworICAgIFdURl9GT1JCSURfSEVBUF9BTExPQ0FUSU9OKERyb3BMb2NrU2NvcGUpOworcHVibGlj
OgorICAgIERyb3BMb2NrU2NvcGUoTG9ja2VyPExvY2tUeXBlPiYgbG9jaykKKyAgICAgICAgOiBt
X2xvY2sobG9jaykKKyAgICB7CisgICAgICAgIG1fbG9jay51bmxvY2soKTsKKyAgICB9CisKKyAg
ICB+RHJvcExvY2tTY29wZSgpCisgICAgeworICAgICAgICBtX2xvY2subG9jaygpOworICAgIH0K
KworcHJpdmF0ZToKKyAgICBMb2NrZXI8TG9ja1R5cGU+JiBtX2xvY2s7Cit9OworCiB9CiAKIHVz
aW5nIFdURjo6QWJzdHJhY3RMb2NrZXI7CkBAIC0xNTksMyArMTg3LDQgQEAgdXNpbmcgV1RGOjpO
b0xvY2tpbmdOZWNlc3NhcnlUYWc7CiB1c2luZyBXVEY6Ok5vTG9ja2luZ05lY2Vzc2FyeTsKIHVz
aW5nIFdURjo6aG9sZExvY2s7CiB1c2luZyBXVEY6OmhvbGRMb2NrSWY7Cit1c2luZyBXVEY6OkRy
b3BMb2NrU2NvcGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd0Jhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dC
YXNlLmNwcAppbmRleCBmOTNlM2ZkMzFjNjVlNGIyZTUyMjc0NTc5ODczYWFhMWRjNGY3MTZjLi41
YzZjNWQwYTM2MDA5OTI1YWFmNmM4YzZlMDU5MDExNmVhMWEwYTU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKQEAgLTM1LDYgKzM1LDcgQEAK
ICNpbmNsdWRlICJKU0RPTUJpbmRpbmdTZWN1cml0eS5oIgogI2luY2x1ZGUgIkpTRE9NR2xvYmFs
T2JqZWN0VGFzay5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93Q3VzdG9tLmgiCisjaW5jbHVkZSAi
SlNEb2N1bWVudC5oIgogI2luY2x1ZGUgIkpTRmV0Y2hSZXNwb25zZS5oIgogI2luY2x1ZGUgIkpT
TWljcm90YXNrQ2FsbGJhY2suaCIKICNpbmNsdWRlICJKU05vZGUuaCIKQEAgLTgwLDYgKzgxLDgg
QEAgY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNET01XaW5kb3dCYXNlOjpzX2dsb2Jh
bE9iamVjdE1ldGhvZFRhYmxlID0gewogICAgICZtb2R1bGVMb2FkZXJFdmFsdWF0ZSwKICAgICAm
cHJvbWlzZVJlamVjdGlvblRyYWNrZXIsCiAgICAgJnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRF
dmVudExvb3AsCisgICAgJmN1cnJlbnRTY3JpcHRFeGVjdXRpb25Pd25lciwKKyAgICAmc2NyaXB0
RXhlY3V0aW9uU3RhdHVzLAogICAgICZkZWZhdWx0TGFuZ3VhZ2UsCiAjaWYgRU5BQkxFKFdFQkFT
U0VNQkxZKQogICAgICZjb21waWxlU3RyZWFtaW5nLApAQCAtMjMxLDYgKzIzNCwxOSBAQCB2b2lk
IEpTRE9NV2luZG93QmFzZTo6cXVldWVNaWNyb3Rhc2tUb0V2ZW50TG9vcChKU0dsb2JhbE9iamVj
dCYgb2JqZWN0LCBSZWY8SlNDOgogICAgIH0pOwogfQogCitKU0M6OkpTT2JqZWN0KiBKU0RPTVdp
bmRvd0Jhc2U6OmN1cnJlbnRTY3JpcHRFeGVjdXRpb25Pd25lcihKU0dsb2JhbE9iamVjdCogb2Jq
ZWN0KQoreworICAgIEpTRE9NV2luZG93QmFzZSogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpT
RE9NV2luZG93QmFzZSo+KG9iamVjdCk7CisKKyAgICByZXR1cm4ganNDYXN0PEpTT2JqZWN0Kj4o
dG9KUyh0aGlzT2JqZWN0LCB0aGlzT2JqZWN0LCB0aGlzT2JqZWN0LT53cmFwcGVkKCkuZG9jdW1l
bnQoKSkpOworfQorCitKU0M6OlNjcmlwdEV4ZWN1dGlvblN0YXR1cyBKU0RPTVdpbmRvd0Jhc2U6
OnNjcmlwdEV4ZWN1dGlvblN0YXR1cyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpKU09iamVj
dCogb3duZXIpCit7CisgICAgYXV0byogZG9jdW1lbnQgPSBqc0Nhc3Q8SlNEb2N1bWVudCo+KG93
bmVyKTsKKyAgICByZXR1cm4gZG9jdW1lbnQtPndyYXBwZWQoKS5qc2NTY3JpcHRFeGVjdXRpb25T
dGF0dXMoKTsKK30KKwogdm9pZCBKU0RPTVdpbmRvd0Jhc2U6OndpbGxSZW1vdmVGcm9tV2luZG93
UHJveHkoKQogewogICAgIHNldEN1cnJlbnRFdmVudCgwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmgKaW5kZXggZWM2ZGRjMTcwMjEwOGU5OWNmOTlkYzM2
MzM1ZTI1ZTAwNjQ1ZDg1YS4uMTA1MDNmZTM5Yzg5ZGU2MzE4ZTNmNzI4N2JhYzQ1ZDc3OTUyMmNk
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmgKQEAg
LTc4LDYgKzc4LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIHNob3VsZEludGVycnVwdFNj
cmlwdEJlZm9yZVRpbWVvdXQoY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRp
YyBKU0M6OlJ1bnRpbWVGbGFncyBqYXZhU2NyaXB0UnVudGltZUZsYWdzKGNvbnN0IEpTQzo6SlNH
bG9iYWxPYmplY3QqKTsKICAgICBzdGF0aWMgdm9pZCBxdWV1ZU1pY3JvdGFza1RvRXZlbnRMb29w
KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBSZWY8SlNDOjpNaWNyb3Rhc2s+JiYpOworICAgIHN0YXRp
YyBKU0M6OkpTT2JqZWN0KiBjdXJyZW50U2NyaXB0RXhlY3V0aW9uT3duZXIoSlNDOjpKU0dsb2Jh
bE9iamVjdCopOworICAgIHN0YXRpYyBKU0M6OlNjcmlwdEV4ZWN1dGlvblN0YXR1cyBzY3JpcHRF
eGVjdXRpb25TdGF0dXMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6SlNPYmplY3QqKTsKIAog
ICAgIHZvaWQgcHJpbnRFcnJvck1lc3NhZ2UoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlckNhY2hlLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXJDYWNoZS5oCmluZGV4IGFjNjk3
YWZkNzJhZTkyNzRjYTQyZTcyMjA1OGU0ZGRhOGE3OTJmMGUuLmFlZjEyYmQyMzAyNWU3MGY5Y2Q3
MzAxZTY5ZjhmYzlmMjIxNTlmMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV3JhcHBlckNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XcmFwcGVyQ2FjaGUuaApAQCAtNTgsNiArNTgsOCBAQCBib29sIGNsZWFySW5saW5lQ2Fj
aGVkV3JhcHBlcihET01XcmFwcGVyV29ybGQmLCB2b2lkKiwgSlNET01PYmplY3QqKTsKIGJvb2wg
Y2xlYXJJbmxpbmVDYWNoZWRXcmFwcGVyKERPTVdyYXBwZXJXb3JsZCYsIFNjcmlwdFdyYXBwYWJs
ZSosIEpTRE9NT2JqZWN0KiB3cmFwcGVyKTsKIGJvb2wgY2xlYXJJbmxpbmVDYWNoZWRXcmFwcGVy
KERPTVdyYXBwZXJXb3JsZCYsIEpTQzo6QXJyYXlCdWZmZXIqLCBKU0M6OkpTQXJyYXlCdWZmZXIq
IHdyYXBwZXIpOwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBET01DbGFzcz4gSlNDOjpKU09iamVjdCog
Z2V0T3JDcmVhdGVXcmFwcGVyKERPTVdyYXBwZXJXb3JsZCYsIERPTUNsYXNzJik7CisKIHRlbXBs
YXRlPHR5cGVuYW1lIERPTUNsYXNzPiBKU0M6OkpTT2JqZWN0KiBnZXRDYWNoZWRXcmFwcGVyKERP
TVdyYXBwZXJXb3JsZCYsIERPTUNsYXNzJik7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBET01DbGFzcz4g
aW5saW5lIEpTQzo6SlNPYmplY3QqIGdldENhY2hlZFdyYXBwZXIoRE9NV3JhcHBlcldvcmxkJiB3
b3JsZCwgUmVmPERPTUNsYXNzPiYgb2JqZWN0KSB7IHJldHVybiBnZXRDYWNoZWRXcmFwcGVyKHdv
cmxkLCBvYmplY3QuZ2V0KCkpOyB9CiB0ZW1wbGF0ZTx0eXBlbmFtZSBET01DbGFzcywgdHlwZW5h
bWUgV3JhcHBlckNsYXNzPiB2b2lkIGNhY2hlV3JhcHBlcihET01XcmFwcGVyV29ybGQmLCBET01D
bGFzcyosIFdyYXBwZXJDbGFzcyopOwpAQCAtNjUsNiArNjcsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFt
ZSBET01DbGFzcywgdHlwZW5hbWUgV3JhcHBlckNsYXNzPiB2b2lkIHVuY2FjaGVXcmFwcGVyKERP
TVdyYXBwZQogdGVtcGxhdGU8dHlwZW5hbWUgRE9NQ2xhc3MsIHR5cGVuYW1lIFQ+IGF1dG8gY3Jl
YXRlV3JhcHBlcihKU0RPTUdsb2JhbE9iamVjdCosIFJlZjxUPiYmKSAtPiB0eXBlbmFtZSBzdGQ6
OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8RE9NQ2xhc3MsIFQ+Ojp2YWx1ZSwgdHlwZW5hbWUgSlNE
T01XcmFwcGVyQ29udmVydGVyVHJhaXRzPERPTUNsYXNzPjo6V3JhcHBlckNsYXNzKj46OnR5cGU7
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBET01DbGFzcywgdHlwZW5hbWUgVD4gYXV0byBjcmVhdGVXcmFw
cGVyKEpTRE9NR2xvYmFsT2JqZWN0KiwgUmVmPFQ+JiYpIC0+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxl
X2lmPCFzdGQ6OmlzX3NhbWU8RE9NQ2xhc3MsIFQ+Ojp2YWx1ZSwgdHlwZW5hbWUgSlNET01XcmFw
cGVyQ29udmVydGVyVHJhaXRzPERPTUNsYXNzPjo6V3JhcHBlckNsYXNzKj46OnR5cGU7CiAKK3Rl
bXBsYXRlPHR5cGVuYW1lIERPTUNsYXNzPiBKU0M6OkpTVmFsdWUgd3JhcChKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgRE9NV3JhcHBlcldvcmxkJiwgRE9NQ2xhc3MmKTsKIHRlbXBsYXRlPHR5cGVuYW1l
IERPTUNsYXNzPiBKU0M6OkpTVmFsdWUgd3JhcChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01H
bG9iYWxPYmplY3QqLCBET01DbGFzcyYpOwogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTUmVtb3RlRE9NV2luZG93QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1JlbW90ZURPTVdpbmRvd0Jhc2UuY3BwCmluZGV4IGRjZTczODIwYmJiZmQ5
Yjk1YzU4NzlkMTNlZjY1ZWFiOThhOTA0MTguLjVjZWM4ZDEyZWE0MTY3NjlkYjI4NDE1MjhhYmIw
NDY4NTVkMzQyNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVt
b3RlRE9NV2luZG93QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNS
ZW1vdGVET01XaW5kb3dCYXNlLmNwcApAQCAtNDgsNiArNDgsOCBAQCBjb25zdCBHbG9iYWxPYmpl
Y3RNZXRob2RUYWJsZSBKU1JlbW90ZURPTVdpbmRvd0Jhc2U6OnNfZ2xvYmFsT2JqZWN0TWV0aG9k
VGFibGUgPQogICAgIG51bGxwdHIsIC8vIG1vZHVsZUxvYWRlckV2YWx1YXRlCiAgICAgbnVsbHB0
ciwgLy8gcHJvbWlzZVJlamVjdGlvblRyYWNrZXIKICAgICBudWxscHRyLCAvLyByZXBvcnRVbmNh
dWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wCisgICAgJmN1cnJlbnRTY3JpcHRFeGVjdXRpb25Pd25l
ciwKKyAgICAmc2NyaXB0RXhlY3V0aW9uU3RhdHVzLAogICAgIG51bGxwdHIsIC8vIGRlZmF1bHRM
YW5ndWFnZQogICAgIG51bGxwdHIsIC8vIGNvbXBpbGVTdHJlYW1pbmcKICAgICBudWxscHRyLCAv
LyBpbnN0YW50aWF0ZVN0cmVhbWluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCmluZGV4IGM0NGYyZmIzYTBiMDVkYWFi
MWE4YTllMmY4OWI1MmQ4NTFlYjQzNjguLjdlNDg5NmRhYTYyODAwMWY4NDNkZGNhY2EyZDVlYTAz
MzEzYmJkOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2Vy
R2xvYmFsU2NvcGVCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dv
cmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKQEAgLTY2LDYgKzY2LDggQEAgY29uc3QgR2xvYmFsT2Jq
ZWN0TWV0aG9kVGFibGUgSlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OnNfZ2xvYmFsT2JqZWN0TWV0
aG9kVGFibGUKICAgICBudWxscHRyLCAvLyBtb2R1bGVMb2FkZXJFdmFsdWF0ZQogICAgICZwcm9t
aXNlUmVqZWN0aW9uVHJhY2tlciwKICAgICAmcmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50
TG9vcCwKKyAgICAmY3VycmVudFNjcmlwdEV4ZWN1dGlvbk93bmVyLAorICAgICZzY3JpcHRFeGVj
dXRpb25TdGF0dXMsCiAgICAgJmRlZmF1bHRMYW5ndWFnZSwKICAgICBudWxscHRyLCAvLyBjb21w
aWxlU3RyZWFtaW5nCiAgICAgbnVsbHB0ciwgLy8gaW5zdGFudGlhdGVTdHJlYW1pbmcKQEAgLTEz
MSw2ICsxMzMsMTMgQEAgUnVudGltZUZsYWdzIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjpqYXZh
U2NyaXB0UnVudGltZUZsYWdzKGNvbnN0IEpTR2xvYmFsT2JqZWMKICAgICByZXR1cm4gdGhpc09i
amVjdC0+bV93cmFwcGVkLT50aHJlYWQoKS5ydW50aW1lRmxhZ3MoKTsKIH0KIAorSlNDOjpTY3Jp
cHRFeGVjdXRpb25TdGF0dXMgSlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OnNjcmlwdEV4ZWN1dGlv
blN0YXR1cyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNPYmplY3Qq
IG93bmVyKQoreworICAgIEFTU0VSVF9VTlVTRUQob3duZXIsIGdsb2JhbE9iamVjdCA9PSBvd25l
cik7CisgICAgSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNX
b3JrZXJHbG9iYWxTY29wZUJhc2UqPihnbG9iYWxPYmplY3QpOworICAgIHJldHVybiB0aGlzT2Jq
ZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmpzY1NjcmlwdEV4ZWN1dGlvblN0YXR1cygp
OworfQorCiB2b2lkIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjpxdWV1ZU1pY3JvdGFza1RvRXZl
bnRMb29wKEpTR2xvYmFsT2JqZWN0JiBvYmplY3QsIFJlZjxKU0M6Ok1pY3JvdGFzaz4mJiB0YXNr
KQogewogICAgIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlJiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nh
c3Q8SlNXb3JrZXJHbG9iYWxTY29wZUJhc2UmPihvYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmgKaW5kZXggOWZlMTI5
Y2RmNjFjMWEwOGJlYTQ4ZjcwMGQ0ZWFkY2M2ZWE2ZmYyMi4uZDQ0OTg3MTI5NDZhZTVmNmYwMTg3
ODY4NGU0Njk5N2IxZmVjMTdhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5oCkBAIC03Myw2ICs3Myw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcnJ1cHRTY3JpcHQoY29uc3QgSlNDOjpKU0dsb2Jh
bE9iamVjdCopOwogICAgIHN0YXRpYyBib29sIHNob3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRp
bWVvdXQoY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRpYyBKU0M6OlJ1bnRp
bWVGbGFncyBqYXZhU2NyaXB0UnVudGltZUZsYWdzKGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3Qq
KTsKKyAgICBzdGF0aWMgSlNDOjpTY3JpcHRFeGVjdXRpb25TdGF0dXMgc2NyaXB0RXhlY3V0aW9u
U3RhdHVzKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkpTT2JqZWN0Kik7CiAgICAgc3RhdGlj
IHZvaWQgcXVldWVNaWNyb3Rhc2tUb0V2ZW50TG9vcChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgUmVm
PEpTQzo6TWljcm90YXNrPiYmKTsKIAogICAgIHZvaWQgY2xlYXJET01HdWFyZGVkT2JqZWN0cygp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFs
U2NvcGVCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2xldEdsb2Jh
bFNjb3BlQmFzZS5jcHAKaW5kZXggMzIzZGVlNzhkOGJiZWM5ZWNlZTE1NmI5MzNlYWQwODYxNDE5
N2E4ZS4uNjMxMmU1ODk3NzU1ZTFhZjkzYWY0MDE2MTliNWM0OTNiOWMxYzZiMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29wZUJh
c2UuY3BwCkBAIC01Niw2ICs1Niw4IEBAIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpT
V29ya2xldEdsb2JhbFNjb3BlQmFzZTo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJsCiAgICAgbnVs
bHB0ciwgLy8gbW9kdWxlTG9hZGVyRXZhbHVhdGUKICAgICAmcHJvbWlzZVJlamVjdGlvblRyYWNr
ZXIsCiAgICAgJnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3AsCisgICAgJmN1cnJl
bnRTY3JpcHRFeGVjdXRpb25Pd25lciwKKyAgICAmc2NyaXB0RXhlY3V0aW9uU3RhdHVzLAogICAg
ICZkZWZhdWx0TGFuZ3VhZ2UsCiAgICAgbnVsbHB0ciwgLy8gY29tcGlsZVN0cmVhbWluZwogICAg
IG51bGxwdHIsIC8vIGluc3RhbnRpYXRlU3RyZWFtaW5nCkBAIC0xMDAsNiArMTAyLDEzIEBAIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fd3JhcHBlZC5nZXQoKTsKIH0KIAor
SlNDOjpTY3JpcHRFeGVjdXRpb25TdGF0dXMgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpzY3Jp
cHRFeGVjdXRpb25TdGF0dXMoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6
OkpTT2JqZWN0KiBvd25lcikKK3sKKyAgICBBU1NFUlRfVU5VU0VEKG93bmVyLCBnbG9iYWxPYmpl
Y3QgPT0gb3duZXIpOworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNXb3JrbGV0R2xv
YmFsU2NvcGVCYXNlKj4oZ2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4gdGhpc09iamVjdC0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLT5qc2NTY3JpcHRFeGVjdXRpb25TdGF0dXMoKTsKK30KKwog
Ym9vbCBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OnN1cHBvcnRzUmljaFNvdXJjZUluZm8oY29u
c3QgSlNHbG9iYWxPYmplY3QqIG9iamVjdCkKIHsKICAgICByZXR1cm4gSlNHbG9iYWxPYmplY3Q6
OnN1cHBvcnRzUmljaFNvdXJjZUluZm8ob2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmgKaW5kZXggYjhhMTdlYzRl
N2UyZmFjY2JlODQ2NzRjYTAxNGQxMzViZTcwNTlmMy4uNDRlMmRmNDJiNmQ1YTgxOWJmZTY1NmM3
YTA2OTFhNWNhNWNjMzVjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmgKQEAgLTYxLDYgKzYxLDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBib29sIHNob3VsZEludGVycnVwdFNjcmlwdChjb25zdCBKU0M6OkpTR2xvYmFs
T2JqZWN0Kik7CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJydXB0U2NyaXB0QmVmb3JlVGlt
ZW91dChjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAgICAgc3RhdGljIEpTQzo6UnVudGlt
ZUZsYWdzIGphdmFTY3JpcHRSdW50aW1lRmxhZ3MoY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCop
OworICAgIHN0YXRpYyBKU0M6OlNjcmlwdEV4ZWN1dGlvblN0YXR1cyBzY3JpcHRFeGVjdXRpb25T
dGF0dXMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6SlNPYmplY3QqKTsKICAgICBzdGF0aWMg
dm9pZCBxdWV1ZU1pY3JvdGFza1RvRXZlbnRMb29wKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBSZWY8
SlNDOjpNaWNyb3Rhc2s+JiYpOwogCiAgICAgdm9pZCBjbGVhckRPTUd1YXJkZWRPYmplY3RzKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKaW5kZXgg
NzU3MjNiODQyMWM0ZTRmZWVkMTE2NzZjOTk1MjRkOGNlOThjYTlhMi4uYWVkYTk4MDI3MmFhZDQ4
MmI0NmY1ODhlNWNmNjhmZDc3OGZlMmFhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmNwcApAQCAtMzcsNiArMzcsOCBAQAogI2luY2x1ZGUgIkVycm9y
RXZlbnQuaCIKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAi
SlNET01XaW5kb3cuaCIKKyNpbmNsdWRlICJKU1dvcmtlckdsb2JhbFNjb3BlLmgiCisjaW5jbHVk
ZSAiSlNXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJMZWdhY3lTY2hlbWVSZWdpc3Ry
eS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCiAjaW5jbHVkZSAiTmF2aWdhdG9yLmgiCkBA
IC01Myw2ICs1NSw3IEBACiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgiCiAj
aW5jbHVkZSAiU2VydmljZVdvcmtlclByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIK
KyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSAiV29ya2VyR2xvYmFs
U2NvcGUuaCIKICNpbmNsdWRlICJXb3JrZXJOYXZpZ2F0b3IuaCIKICNpbmNsdWRlICJXb3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZS5oIgpAQCAtNjEsNiArNjQsNyBAQAogI2luY2x1ZGUgIldvcmts
ZXRHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgiCiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ2F0Y2hTY29wZS5oPgorI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0RlZmVycmVkV29ya1RpbWVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRXhj
ZXB0aW9uLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNQcm9taXNlLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvU2NyaXB0Q2FsbFN0YWNrLmg+CkBAIC03MywxMCArNzcsOSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBzdGF0aWMg
TG9jayBhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcExvY2s7Ci1zdGF0aWMgSGFzaE1hcDxT
Y3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCo+
JiBhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcCgpCitzdGF0aWMgSGFzaE1hcDxTY3JpcHRF
eGVjdXRpb25Db250ZXh0SWRlbnRpZmllciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCo+JiBhbGxT
Y3JpcHRFeGVjdXRpb25Db250ZXh0c01hcChjb25zdCBMb2NrZXI8TG9jaz4mKQogewogICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlm
aWVyLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kj4+IGNvbnRleHRzOwotICAgIEFTU0VSVChhbGxT
Y3JpcHRFeGVjdXRpb25Db250ZXh0c01hcExvY2suaXNMb2NrZWQoKSk7CiAgICAgcmV0dXJuIGNv
bnRleHRzOwogfQogCkBAIC0xMTAsOCArMTEzLDggQEAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dElk
ZW50aWZpZXIgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6Y29udGV4dElkZW50aWZpZXIoKSBjb24K
IAogICAgICAgICBtX2NvbnRleHRJZGVudGlmaWVyID0gU2NyaXB0RXhlY3V0aW9uQ29udGV4dElk
ZW50aWZpZXI6OmdlbmVyYXRlKCk7CiAKLSAgICAgICAgQVNTRVJUKCFhbGxTY3JpcHRFeGVjdXRp
b25Db250ZXh0c01hcCgpLmNvbnRhaW5zKG1fY29udGV4dElkZW50aWZpZXIpKTsKLSAgICAgICAg
YWxsU2NyaXB0RXhlY3V0aW9uQ29udGV4dHNNYXAoKS5hZGQobV9jb250ZXh0SWRlbnRpZmllciwg
Y29uc3RfY2FzdDxTY3JpcHRFeGVjdXRpb25Db250ZXh0Kj4odGhpcykpOworICAgICAgICBBU1NF
UlQoIWFsbFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRzTWFwKGxvY2tlcikuY29udGFpbnMobV9jb250
ZXh0SWRlbnRpZmllcikpOworICAgICAgICBhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcChs
b2NrZXIpLmFkZChtX2NvbnRleHRJZGVudGlmaWVyLCBjb25zdF9jYXN0PFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqPih0aGlzKSk7CiAgICAgfQogICAgIHJldHVybiBtX2NvbnRleHRJZGVudGlmaWVy
OwogfQpAQCAtMTIwLDggKzEyMyw4IEBAIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cmVt
b3ZlRnJvbUNvbnRleHRzTWFwKCkKIHsKICAgICBpZiAobV9jb250ZXh0SWRlbnRpZmllcikgewog
ICAgICAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKGFsbFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRzTWFw
TG9jayk7Ci0gICAgICAgIEFTU0VSVChhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcCgpLmNv
bnRhaW5zKG1fY29udGV4dElkZW50aWZpZXIpKTsKLSAgICAgICAgYWxsU2NyaXB0RXhlY3V0aW9u
Q29udGV4dHNNYXAoKS5yZW1vdmUobV9jb250ZXh0SWRlbnRpZmllcik7CisgICAgICAgIEFTU0VS
VChhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcChsb2NrZXIpLmNvbnRhaW5zKG1fY29udGV4
dElkZW50aWZpZXIpKTsKKyAgICAgICAgYWxsU2NyaXB0RXhlY3V0aW9uQ29udGV4dHNNYXAobG9j
a2VyKS5yZW1vdmUobV9jb250ZXh0SWRlbnRpZmllcik7CiAgICAgfQogfQogCkBAIC0xNTYsNyAr
MTU5LDcgQEAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6flNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KQogI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgaWYgKG1fY29udGV4dElkZW50aWZpZXIpIHsKICAg
ICAgICAgTG9ja2VyPExvY2s+IGxvY2tlcihhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcExv
Y2spOwotICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFhbGxTY3JpcHRFeGVjdXRpb25Db250
ZXh0c01hcCgpLmNvbnRhaW5zKG1fY29udGV4dElkZW50aWZpZXIpLAorICAgICAgICBBU1NFUlRf
V0lUSF9NRVNTQUdFKCFhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcChsb2NrZXIpLmNvbnRh
aW5zKG1fY29udGV4dElkZW50aWZpZXIpLAogICAgICAgICAgICAgIkEgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCBzdWJjbGFzcyBpbnN0YW5jZSBpbXBsZW1lbnRpbmcgcG9zdFRhc2sgc2hvdWxkIGhh
dmUgYWxyZWFkeSByZW1vdmVkIGl0c2VsZiBmcm9tIHRoZSBtYXAiKTsKICAgICB9CiAKQEAgLTI1
MCw2ICsyNTMsMTUgQEAgdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpmb3JFYWNoQWN0aXZl
RE9NT2JqZWN0KGNvbnN0IEZ1bmN0aW9uPFNob3VsZENvbnRpbnUKICAgICB9CiB9CiAKK0pTQzo6
U2NyaXB0RXhlY3V0aW9uU3RhdHVzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmpzY1NjcmlwdEV4
ZWN1dGlvblN0YXR1cygpIGNvbnN0Cit7CisgICAgaWYgKGFjdGl2ZURPTU9iamVjdHNBcmVTdXNw
ZW5kZWQoKSkKKyAgICAgICAgcmV0dXJuIEpTQzo6U2NyaXB0RXhlY3V0aW9uU3RhdHVzOjpTdXNw
ZW5kZWQ7CisgICAgaWYgKGFjdGl2ZURPTU9iamVjdHNBcmVTdG9wcGVkKCkpCisgICAgICAgIHJl
dHVybiBKU0M6OlNjcmlwdEV4ZWN1dGlvblN0YXR1czo6Q2FuY2VsZWQ7CisgICAgcmV0dXJuIEpT
Qzo6U2NyaXB0RXhlY3V0aW9uU3RhdHVzOjpSdW5uaW5nOworfQorCiB2b2lkIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OnN1c3BlbmRBY3RpdmVET01PYmplY3RzKFJlYXNvbkZvclN1c3BlbnNpb24g
d2h5KQogewogICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKQEAgLTI4NCw2ICsyOTYsOCBAQCB2b2lk
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnJlc3VtZUFjdGl2ZURPTU9iamVjdHMoUmVhc29uRm9y
U3VzcGVuc2lvbiB3aHkpCiAgICAgICAgIHJldHVybiBTaG91bGRDb250aW51ZTo6WWVzOwogICAg
IH0pOwogCisgICAgdm0oKS5kZWZlcnJlZFdvcmtUaW1lci0+c2NyaXB0RXhlY3V0aW9uT3duZXJX
YXNVbnN1c3BlbmRlZCgpOworCiAgICAgbV9hY3RpdmVET01PYmplY3RzQXJlU3VzcGVuZGVkID0g
ZmFsc2U7CiAKICAgICAvLyBJbiBjYXNlIHRoZXJlIHdlcmUgcGVuZGluZyBtZXNzYWdlcyBhdCB0
aGUgdGltZSB0aGUgc2NyaXB0IGV4ZWN1dGlvbiBjb250ZXh0IGVudGVyZWQgdGhlIEJhY2tGb3J3
YXJkQ2FjaGUsCkBAIC02MDEsNyArNjE1LDcgQEAgU2VydmljZVdvcmtlckNvbnRhaW5lciogU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6ZW5zdXJlU2VydmljZVdvcmtlckNvbnRhaW5lcigpCiBib29s
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnBvc3RUYXNrVG8oU2NyaXB0RXhlY3V0aW9uQ29udGV4
dElkZW50aWZpZXIgaWRlbnRpZmllciwgVGFzayYmIHRhc2spCiB7CiAgICAgTG9ja2VyPExvY2s+
IGxvY2tlcihhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcExvY2spOwotICAgIGF1dG8qIGNv
bnRleHQgPSBhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcCgpLmdldChpZGVudGlmaWVyKTsK
KyAgICBhdXRvKiBjb250ZXh0ID0gYWxsU2NyaXB0RXhlY3V0aW9uQ29udGV4dHNNYXAobG9ja2Vy
KS5nZXQoaWRlbnRpZmllcik7CiAKICAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCmluZGV4
IDI1YWFiNDQ2MGZmOTdhMThlZDBiZjEzYWZhOWU0MmRmMDgyMWMyN2UuLjVlOTBmNDFiMmZkYmY5
ZmVlN2ZiNDAzNGJmZDBjMTE4MGJlYmY4ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBDYWxsRnJhbWU7CiBj
bGFzcyBFeGNlcHRpb247CiBjbGFzcyBKU1Byb21pc2U7CiBjbGFzcyBWTTsKK2VudW0gY2xhc3Mg
U2NyaXB0RXhlY3V0aW9uU3RhdHVzOwogfQogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKQEAgLTEz
Niw2ICsxMzcsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBhY3RpdmVET01PYmplY3RzQXJlU3VzcGVu
ZGVkKCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmVET01PYmplY3RzQXJlU3VzcGVuZGVkOyB9CiAg
ICAgYm9vbCBhY3RpdmVET01PYmplY3RzQXJlU3RvcHBlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0
aXZlRE9NT2JqZWN0c0FyZVN0b3BwZWQ7IH0KIAorICAgIEpTQzo6U2NyaXB0RXhlY3V0aW9uU3Rh
dHVzIGpzY1NjcmlwdEV4ZWN1dGlvblN0YXR1cygpIGNvbnN0OworCiAgICAgLy8gQ2FsbGVkIGZy
b20gdGhlIGNvbnN0cnVjdG9yIGFuZCBkZXN0cnVjdG9ycyBvZiBBY3RpdmVET01PYmplY3QuCiAg
ICAgdm9pZCBkaWRDcmVhdGVBY3RpdmVET01PYmplY3QoQWN0aXZlRE9NT2JqZWN0Jik7CiAgICAg
dm9pZCB3aWxsRGVzdHJveUFjdGl2ZURPTU9iamVjdChBY3RpdmVET01PYmplY3QmKTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCA3OWU4OGVmOTVhODczMjdhZTM0NTU3MWMyODNhNzNmMTY5ZmFiZDdiLi4zMTgyMGNhZjgxYmU0
N2EyMDcyZDNlNDJlZDk5OTNmMzlkN2VmNDFhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjAt
MTAtMDggIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CisKKyAgICAgICAg
RmluYWxpemVycyBzaG91bGRuJ3QgcnVuIGlmIGV2ZW50cyBjYW4ndCBmaXJlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQ1MDgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZnJhbWVzL2RldGFj
aGVkLWZyYW1lLXdhc20tcmVzb2x2ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZnJhbWVzL2RldGFjaGVkLWZyYW1lLXdhc20tcmVzb2x2ZS5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2hpc3RvcnkvcGFnZS1jYWNoZS1hY3RpdmUtZmluYWxpemF0aW9uLXJlZ2lzdHJ5
LWNhbGxiYWNrLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9oaXN0b3J5L3Bh
Z2UtY2FjaGUtYWN0aXZlLWZpbmFsaXphdGlvbi1yZWdpc3RyeS1jYWxsYmFjay5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2hpc3RvcnkvcGFnZS1jYWNoZS13YXNtLXByb21pc2UtcmVzb2x2
ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvaGlzdG9yeS9wYWdlLWNhY2hl
LXdhc20tcHJvbWlzZS1yZXNvbHZlLmh0bWw6IEFkZGVkLgorCiAyMDIwLTEwLTA4ICBaYWxhbiBC
dWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSW50ZWdyYXRpb25dIEVu
YWJsZSBmbG9hdCBjbGVhciBmb3IgPGJyPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9m
cmFtZXMvZGV0YWNoZWQtZnJhbWUtd2FzbS1yZXNvbHZlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Zhc3QvZnJhbWVzL2RldGFjaGVkLWZyYW1lLXdhc20tcmVzb2x2ZS1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNTU5NmI2ZGQzNWY2MTIzZGI4OWJmN2M0Y2NlNTRiOTg0NGQ3MWRjOAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2RldGFjaGVkLWZyYW1lLXdh
c20tcmVzb2x2ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMSBAQAorQ2hlY2tzIFdBU00gY29t
cGlsYXRpb24gcHJvbWlzZXMgZG8gbm90IHJlc29sdmUgb24gZGV0YWNoZWQgZnJhbWVzLgorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBXQVNNIHByb21pc2Ugd2FzIHJlc29s
dmVkIG9uIHRoZSBtYWluIGZyYW1lCitQQVNTIFdBU00gcHJvbWlzZSBkaWQgbm90IGFwcGVhciB0
byBiZSByZXNvbHZlZCBhZnRlciBzdWJmcmFtZSB3YXMgZGV0YWNoZWQKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2ZyYW1lcy9kZXRhY2hlZC1mcmFtZS13YXNtLXJlc29sdmUuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvZnJhbWVzL2RldGFjaGVkLWZyYW1lLXdhc20tcmVzb2x2ZS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmM0YWJiMWIwZDk4ZjRmYmI4ZWVmMzE4NzAzNWViYTQyNDE5MDgxYzgKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9kZXRhY2hlZC1mcmFtZS13YXNtLXJl
c29sdmUuaHRtbApAQCAtMCwwICsxLDMxIEBACis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJDaGVja3MgV0FT
TSBjb21waWxhdGlvbiBwcm9taXNlcyBkbyBub3QgcmVzb2x2ZSBvbiBkZXRhY2hlZCBmcmFtZXMu
Iik7Cit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKK29ubG9hZCA9IGZ1bmN0aW9uKCkK
K3sKKyAgICB2YXIgZGV0YWNoZWRXaW5kb3cgPSBmcmFtZXNbMF07CisKKyAgICAvLyBSYW5kb20g
d2FzbSBtb2R1bGUgdGhhdCBjb21waWxlcy4gU3RvbGVuIGZyb20gSlNUZXN0cy93YXNtL3N0cmVz
cy90ZXJtaW5hbC1qdW1wLXN3aXRjaC10YXJnZXQuanMKKyAgICBsZXQgcHJvbWlzZSA9IGRldGFj
aGVkV2luZG93LldlYkFzc2VtYmx5LmNvbXBpbGUobmV3IFVpbnQ4QXJyYXkoWyAwLDk3LDExNSwx
MDksMSwwLDAsMCwxLDEzNiwxMjgsMTI4LDEyOCwwLDIsOTYsMCwwLDk2LDAsMSwxMjQsMywxMzEs
MTI4LDEyOCwxMjgsMCwyLDAsMSw3LDEzOCwxMjgsMTI4LDEyOCwwLDEsNiwxMTQsMTE3LDExMCwx
MDIsNTQsNTIsMCwxLDEwLDE2NSwxMjgsMTI4LDEyOCwwLDIsMTMwLDEyOCwxMjgsMTI4LDAsMCwx
MSwxNTIsMTI4LDEyOCwxMjgsMCwwLDMsMTI0LDY4LDAsMCwwLDAsMCwwLDAsMCw2NSwwLDE0LDAs
MSwxNiwwLDExLDEyLDAsMCwxMSBdKSk7CisgICAgdmFyIHN1YkZyYW1lQ2FsbGVkID0gZmFsc2U7
CisgICAgcHJvbWlzZS50aGVuKCgpID0+IHN1YkZyYW1lQ2FsbGVkID0gdHJ1ZSk7CisKKyAgICBw
cm9taXNlID0gV2ViQXNzZW1ibHkuY29tcGlsZShuZXcgVWludDhBcnJheShbIDAsOTcsMTE1LDEw
OSwxLDAsMCwwLDEsMTM2LDEyOCwxMjgsMTI4LDAsMiw5NiwwLDAsOTYsMCwxLDEyNCwzLDEzMSwx
MjgsMTI4LDEyOCwwLDIsMCwxLDcsMTM4LDEyOCwxMjgsMTI4LDAsMSw2LDExNCwxMTcsMTEwLDEw
Miw1NCw1MiwwLDEsMTAsMTY1LDEyOCwxMjgsMTI4LDAsMiwxMzAsMTI4LDEyOCwxMjgsMCwwLDEx
LDE1MiwxMjgsMTI4LDEyOCwwLDAsMywxMjQsNjgsMCwwLDAsMCwwLDAsMCwwLDY1LDAsMTQsMCwx
LDE2LDAsMTEsMTIsMCwwLDExIF0pKTsKKyAgICBwcm9taXNlLnRoZW4oKCkgPT4geworICAgICAg
ICB0ZXN0UGFzc2VkKCJXQVNNIHByb21pc2Ugd2FzIHJlc29sdmVkIG9uIHRoZSBtYWluIGZyYW1l
Iik7CisgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgaWYgKHN1YkZyYW1l
Q2FsbGVkKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIldBU00gcHJvbWlzZSBzaG91bGQg
bm90IGJlIHJlc29sdmVkIGlmIHRoZSBzdWJmcmFtZSBpcyBkZXRhY2hlZCIpOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIldBU00gcHJvbWlzZSBkaWQgbm90
IGFwcGVhciB0byBiZSByZXNvbHZlZCBhZnRlciBzdWJmcmFtZSB3YXMgZGV0YWNoZWQiKTsKKyAg
ICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAvLyBBZGQgc21hbGwgdGltZW91dCB0
byBiZSBzYWZlLgorICAgICAgICB9LCAxMDApOworICAgIH0pOworCisgICAgZG9jdW1lbnQuYm9k
eS5yZW1vdmVDaGlsZChkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaWZyYW1lIilbMF0p
OworfQorPC9zY3JpcHQ+Cis8aWZyYW1lIHNyYz0iYWJvdXQ6YmxhbmsiPjwvaWZyYW1lPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3BhZ2UtY2FjaGUtYWN0aXZlLWZpbmFs
aXphdGlvbi1yZWdpc3RyeS1jYWxsYmFjay1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0
L2hpc3RvcnkvcGFnZS1jYWNoZS1hY3RpdmUtZmluYWxpemF0aW9uLXJlZ2lzdHJ5LWNhbGxiYWNr
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NTBjMzE1OWJmODU0NzRlZWYxZDQxNWIxOGIwZWY0
YWQ5NDNlOWUzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3Bh
Z2UtY2FjaGUtYWN0aXZlLWZpbmFsaXphdGlvbi1yZWdpc3RyeS1jYWxsYmFjay1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxNSBAQAorVGVzdHMgdGhhdCBhIHBhZ2Ugd2l0aCBhIHBlbmRpbmcgRmlu
YWxpemF0aW9uUmVnaXN0cnkgY2FsbGJhY2sgaXMgYWJsZSB0byBlbnRlciB0aGUgYmFjay9mb3J3
YXJkIGNhY2hlIGFuZCBnZXRzIHN1c3BlbmRlZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKK3BhZ2VzaG93IC0gbm90IGZyb20gY2FjaGUKK3BhZ2VoaWRlIC0gZW50ZXJpbmcgY2Fj
aGUKK0ZpbGxpbmcgZmluYWxpemF0aW9uIHJlZ2lzdHJ5CitwYWdlc2hvdyAtIGZyb20gY2FjaGUK
K1BBU1MgUGFnZSBkaWQgZW50ZXIgYW5kIHdhcyByZXN0b3JlZCBmcm9tIHRoZSBiYWNrL2Zvcndh
cmQgY2FjaGUKK1BBU1MgQ29kZSBkaWQgbm90IHJ1biB3aGlsZSBpbiB0aGUgYmFjay9mb3J3YXJk
IGNhY2hlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3BhZ2UtY2FjaGUtYWN0aXZl
LWZpbmFsaXphdGlvbi1yZWdpc3RyeS1jYWxsYmFjay5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9o
aXN0b3J5L3BhZ2UtY2FjaGUtYWN0aXZlLWZpbmFsaXphdGlvbi1yZWdpc3RyeS1jYWxsYmFjay5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjAyMDdhMjE3NjgwZDc5ZmYxYmQ4ODg0NjVhYzg0NjRlYjE4Y2FkMzEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvcGFnZS1jYWNoZS1h
Y3RpdmUtZmluYWxpemF0aW9uLXJlZ2lzdHJ5LWNhbGxiYWNrLmh0bWwKQEAgLTAsMCArMSw2OCBA
QAorPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBlbmFibGVCYWNrRm9yd2FyZENhY2hlPXRydWUg
anNjT3B0aW9ucz0tLXVzZVdlYWtSZWZzPXRydWUgXSAtLT4KKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3RzIHRoYXQgYSBwYWdlIHdpdGggYSBw
ZW5kaW5nIEZpbmFsaXphdGlvblJlZ2lzdHJ5IGNhbGxiYWNrIGlzIGFibGUgdG8gZW50ZXIgdGhl
IGJhY2svZm9yd2FyZCBjYWNoZSBhbmQgZ2V0cyBzdXNwZW5kZWQuJyk7Cit3aW5kb3cuanNUZXN0
SXNBc3luYyA9IHRydWU7CitsZXQgbm90U3VzcGVuZGVkID0gdHJ1ZTsKK2xldCByZXN0b3JlZEZy
b21DYWNoZSA9IGZhbHNlOworCitsZXQgdW5yZWdpc3RlclRva2VuID0ge307CitsZXQgZmcgPSBu
ZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoKCkgPT4geworICAgIGlmICghcmVzdG9yZWRGcm9tQ2Fj
aGUpCisgICAgICAgIHRlc3RGYWlsZWQoIkZpbmFsaXphdGlvblJlZ2lzdHJ5IHdhcyBydW4gYmVm
b3JlIHJlc3RvcmluZyBmcm9tIGNhY2hlIik7CisKKyAgICBpZiAobm90U3VzcGVuZGVkKQorICAg
ICAgICB0ZXN0UGFzc2VkKCJDb2RlIGRpZCBub3QgcnVuIHdoaWxlIGluIHRoZSBiYWNrL2Zvcndh
cmQgY2FjaGUiKTsKKyAgICBlbHNlCisgICAgICAgIHRlc3RGYWlsZWQoIlRoaXMgY29kZSBzaG91
bGQgbm90IGJlIHJ1bm5pbmcgd2hpbGUgdGhlIHBhZ2UgaXMgaW4gdGhlIGJhY2svZm9yd2FyZCIp
OworCisgICAgZmcudW5yZWdpc3Rlcih1bnJlZ2lzdGVyVG9rZW4pOworICAgIGZpbmlzaEpTVGVz
dCgpOworfSk7CisKK3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJwYWdlc2hvdyIsIGZ1bmN0aW9u
KGV2ZW50KSB7CisgICAgZGVidWcoInBhZ2VzaG93IC0gIiArIChldmVudC5wZXJzaXN0ZWQgPyAi
IiA6ICJub3QgIikgKyAiZnJvbSBjYWNoZSIpOworCisgICAgaWYgKGV2ZW50LnBlcnNpc3RlZCkg
eworICAgICAgICB0ZXN0UGFzc2VkKCJQYWdlIGRpZCBlbnRlciBhbmQgd2FzIHJlc3RvcmVkIGZy
b20gdGhlIGJhY2svZm9yd2FyZCBjYWNoZSIpOworICAgICAgICByZXN0b3JlZEZyb21DYWNoZSA9
IHRydWU7CisgICAgfQorICAgIG5vdFN1c3BlbmRlZCA9IHRydWU7Cit9LCBmYWxzZSk7CisKK3dp
bmRvdy5hZGRFdmVudExpc3RlbmVyKCJwYWdlaGlkZSIsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAg
ZGVidWcoInBhZ2VoaWRlIC0gIiArIChldmVudC5wZXJzaXN0ZWQgPyAiIiA6ICJub3QgIikgKyAi
ZW50ZXJpbmcgY2FjaGUiKTsKKyAgICBpZiAoIWV2ZW50LnBlcnNpc3RlZCkgeworICAgICAgICB0
ZXN0RmFpbGVkKCJQYWdlIGRpZCBub3QgZW50ZXIgdGhlIGJhY2svZm9yd2FyZCBjYWNoZS4iKTsK
KyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfQorICAgIGZpbGxGaW5hbGl6YXRpb25SZWdp
c3RyeSgpOworICAgIG5vdFN1c3BlbmRlZCA9IGZhbHNlOworfSwgZmFsc2UpOworCit2YXIgdGV4
dERhdGEgPSBKU09OLnN0cmluZ2lmeSgiVGhpcyBpcyB0aGUgYm9keSIpOworCitmdW5jdGlvbiBm
aWxsRmluYWxpemF0aW9uUmVnaXN0cnkoKQoreworICAgIGRlYnVnKCJGaWxsaW5nIGZpbmFsaXph
dGlvbiByZWdpc3RyeSIpOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgKytpKQorICAg
ICAgICBmZy5yZWdpc3Rlcih7IH0sIHVuZGVmaW5lZCwgdW5yZWdpc3RlclRva2VuKTsKKworICAg
IEdDQ29udHJvbGxlci5jb2xsZWN0KCk7Cit9CisKK3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCds
b2FkJywgZnVuY3Rpb24oKSB7CisgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgIHdpbmRv
dy5sb2NhdGlvbi5ocmVmID0gInJlc291cmNlcy9wYWdlLWNhY2hlLWhlbHBlci5odG1sIjsKKyAg
ICB9LCAwKTsKK30sIGZhbHNlKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKKwor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvcGFnZS1jYWNoZS13YXNtLXBy
b21pc2UtcmVzb2x2ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvcGFn
ZS1jYWNoZS13YXNtLXByb21pc2UtcmVzb2x2ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDBj
NjlkODAxYzZhM2I3MzA4M2RjZWJmNWFjOTBlNGU2YTljOWFmMgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9wYWdlLWNhY2hlLXdhc20tcHJvbWlzZS1yZXNvbHZl
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1IEBACitUZXN0cyB0aGF0IGEgcGFnZSB3aXRoIGEg
cGVuZGluZyBXQVNNIG1vZHVsZSByZXNvbHV0aW9uIGlzIGFibGUgdG8gZW50ZXIgdGhlIGJhY2sv
Zm9yd2FyZCBjYWNoZSBhbmQgZ2V0cyBzdXNwZW5kZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworCitwYWdlc2hvdyAtIG5vdCBmcm9tIGNhY2hlCitwYWdlaGlkZSAtIGVudGVyaW5n
IGNhY2hlCitwYWdlc2hvdyAtIGZyb20gY2FjaGUKK1BBU1MgUGFnZSBkaWQgZW50ZXIgYW5kIHdh
cyByZXN0b3JlZCBmcm9tIHRoZSBiYWNrL2ZvcndhcmQgY2FjaGUKK1BBU1MgV0FTTSBibG9iIGNv
bXBpbGVkIHN1Y2Nlc3NmdWxseQorUEFTUyBXQVNNIGRpZCBub3QgcmVzb2x2ZSB3aGlsZSBpbiB0
aGUgYmFjay9mb3J3YXJkIGNhY2hlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3Bh
Z2UtY2FjaGUtd2FzbS1wcm9taXNlLXJlc29sdmUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvaGlz
dG9yeS9wYWdlLWNhY2hlLXdhc20tcHJvbWlzZS1yZXNvbHZlLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTY2
NjkzOGNmYWNhZWU2NTY3ZTA0ZDM2MGNmYTBkOGM3YzA0NTJiYgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9wYWdlLWNhY2hlLXdhc20tcHJvbWlzZS1yZXNvbHZl
Lmh0bWwKQEAgLTAsMCArMSw2OCBAQAorPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBlbmFibGVC
YWNrRm9yd2FyZENhY2hlPXRydWUganNjT3B0aW9ucz0tLXVzZVdlYWtSZWZzPXRydWUgXSAtLT4K
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3Rz
IHRoYXQgYSBwYWdlIHdpdGggYSBwZW5kaW5nIFdBU00gbW9kdWxlIHJlc29sdXRpb24gaXMgYWJs
ZSB0byBlbnRlciB0aGUgYmFjay9mb3J3YXJkIGNhY2hlIGFuZCBnZXRzIHN1c3BlbmRlZC4nKTsK
K3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK2xldCBub3RTdXNwZW5kZWQgPSB0cnVlOwor
bGV0IHJlc3RvcmVkRnJvbUNhY2hlID0gZmFsc2U7CisKK2Z1bmN0aW9uIGNoZWNrKHZhbHVlLCBl
cnJvcikgeworICAgIGlmIChlcnJvcikKKyAgICAgICAgdGVzdEZhaWxlZCgiV0FTTSBibG9iIGRp
ZG4ndCBjb21waWxlIik7CisKKyAgICBpZiAodmFsdWUpCisgICAgICAgIHRlc3RQYXNzZWQoIldB
U00gYmxvYiBjb21waWxlZCBzdWNjZXNzZnVsbHkiKTsKKyAgICBlbHNlCisgICAgICAgIHRlc3RG
YWlsZWQoIldBU00gYmxvYiBkaWQgbm90IHJldHVybiBhIG1vZHVsZSBmb3Igc29tZSByZWFzb24i
KTsKKworICAgIGlmICghcmVzdG9yZWRGcm9tQ2FjaGUpCisgICAgICAgIHRlc3RGYWlsZWQoIldB
U00gcHJvbWlzZSB3YXMgcmVzb2x2ZWQgYmVmb3JlIHJlc3RvcmluZyBmcm9tIGNhY2hlIik7CisK
KyAgICBpZiAobm90U3VzcGVuZGVkKQorICAgICAgICB0ZXN0UGFzc2VkKCJXQVNNIGRpZCBub3Qg
cmVzb2x2ZSB3aGlsZSBpbiB0aGUgYmFjay9mb3J3YXJkIGNhY2hlIik7CisgICAgZWxzZQorICAg
ICAgICB0ZXN0RmFpbGVkKCJXQVNNIHByb21pc2UgcmVzb2x1dGlvbiBzaG91bGQgbm90IHJ1biB3
aGlsZSB0aGUgcGFnZSBpcyBpbiB0aGUgYmFjay9mb3J3YXJkIik7CisKKyAgICBmaW5pc2hKU1Rl
c3QoKTsKK307CisKK3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJwYWdlc2hvdyIsIGZ1bmN0aW9u
KGV2ZW50KSB7CisgICAgZGVidWcoInBhZ2VzaG93IC0gIiArIChldmVudC5wZXJzaXN0ZWQgPyAi
IiA6ICJub3QgIikgKyAiZnJvbSBjYWNoZSIpOworCisgICAgaWYgKGV2ZW50LnBlcnNpc3RlZCkg
eworICAgICAgICB0ZXN0UGFzc2VkKCJQYWdlIGRpZCBlbnRlciBhbmQgd2FzIHJlc3RvcmVkIGZy
b20gdGhlIGJhY2svZm9yd2FyZCBjYWNoZSIpOworICAgICAgICByZXN0b3JlZEZyb21DYWNoZSA9
IHRydWU7CisgICAgfQorICAgIG5vdFN1c3BlbmRlZCA9IHRydWU7Cit9LCBmYWxzZSk7CisKK3dp
bmRvdy5hZGRFdmVudExpc3RlbmVyKCJwYWdlaGlkZSIsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAg
ZGVidWcoInBhZ2VoaWRlIC0gIiArIChldmVudC5wZXJzaXN0ZWQgPyAiIiA6ICJub3QgIikgKyAi
ZW50ZXJpbmcgY2FjaGUiKTsKKyAgICBpZiAoIWV2ZW50LnBlcnNpc3RlZCkgeworICAgICAgICB0
ZXN0RmFpbGVkKCJQYWdlIGRpZCBub3QgZW50ZXIgdGhlIGJhY2svZm9yd2FyZCBjYWNoZS4iKTsK
KyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfQorCisgICAgLy8gUmFuZG9tIHdhc20gbW9k
dWxlIHRoYXQgY29tcGlsZXMuIFN0b2xlbiBmcm9tIEpTVGVzdHMvd2FzbS9zdHJlc3MvdGVybWlu
YWwtanVtcC1zd2l0Y2gtdGFyZ2V0LmpzCisgICAgbGV0IHByb21pc2UgPSBXZWJBc3NlbWJseS5j
b21waWxlKG5ldyBVaW50OEFycmF5KFsgMCw5NywxMTUsMTA5LDEsMCwwLDAsMSwxMzYsMTI4LDEy
OCwxMjgsMCwyLDk2LDAsMCw5NiwwLDEsMTI0LDMsMTMxLDEyOCwxMjgsMTI4LDAsMiwwLDEsNywx
MzgsMTI4LDEyOCwxMjgsMCwxLDYsMTE0LDExNywxMTAsMTAyLDU0LDUyLDAsMSwxMCwxNjUsMTI4
LDEyOCwxMjgsMCwyLDEzMCwxMjgsMTI4LDEyOCwwLDAsMTEsMTUyLDEyOCwxMjgsMTI4LDAsMCwz
LDEyNCw2OCwwLDAsMCwwLDAsMCwwLDAsNjUsMCwxNCwwLDEsMTYsMCwxMSwxMiwwLDAsMTEgXSkp
OworCisgICAgcHJvbWlzZS50aGVuKGNoZWNrKTsKKworICAgIG5vdFN1c3BlbmRlZCA9IGZhbHNl
OworfSwgZmFsc2UpOworCit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGZ1bmN0aW9u
KCkgeworICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJl
ZiA9ICJyZXNvdXJjZXMvcGFnZS1jYWNoZS1oZWxwZXIuaHRtbCI7CisgICAgfSwgMCk7Cit9LCBm
YWxzZSk7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCisKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410910</attachid>
            <date>2020-10-08 21:29:22 -0700</date>
            <delta_ts>2020-10-09 10:16:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214508-20201008212921.patch</filename>
            <type>text/plain</type>
            <size>49250</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4MjA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
NmZhZGY4MWFhNDgwZTg1NjdiM2Q3NzFkY2FjMTZiYWI2ODUwZmMwLi4xZmEzZWExNjU1NDVhYjcz
NzBmYTczMDFhZGU2OGE0NWNmNDU5OTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MSBAQAorMjAyMC0xMC0wOCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBGaW5hbGl6ZXJzIHNob3VsZG4ndCBydW4gaWYgZXZlbnRzIGNhbid0
IGZpcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
NDUwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgcGF0Y2ggbWFrZXMgaXQgc28gdGhlIERlZmVycmVkV29ya1RpbWVyIHdvbid0IHJ1biBzY2hl
ZHVsZWQKKyAgICAgICAgdGFza3MgaWYgdGhvc2Ugd291bGQgbm90IGhhdmUgcnVuIGlmIHRoZXkg
d2VyZSBzY2hlZHVsZWQgaW4KKyAgICAgICAgV2ViQ29yZS4gVG8gZG8gdGhpcyB0aGVyZSBpcyBu
b3cgYSBjb25jZXB0IG9mIGEKKyAgICAgICAgU2NyaXB0RXhlY3V0aW9uT3duZXIuIFRoZSBTY3Jp
cHRFeGVjdXRpb25Pd25lciBpcyBhbG1vc3QgYWx3YXlzCisgICAgICAgIHRoZSBzYW1lIGFzIHRo
ZSBnbG9iYWwgb2JqZWN0IG9mIHRoZSBwZW5kaW5nIHRhc2sgKHJlZmVycmVkIHRvIGFzCisgICAg
ICAgIHRoZSB0aWNrZXQpLiBUaGUgb25seSBleGNlcHRpb24gdG8gdGhpcyBpcyBpZiB0aGUgZ2xv
YmFsIG9iamVjdAorICAgICAgICBpcyBhIEpTRE9NV2luZG93QmFzZSwgdGhlbiB0aGUgU2NyaXB0
RXhlY3V0aW9uT3duZXIgaXMgdGhlCisgICAgICAgIERvY3VtZW50J3MgSlMgd3JhcHBlci4gVG8g
dGVsbCB0aGUgc3RhdHVzIG9mIGEKKyAgICAgICAgU2NyaXB0RXhlY3V0aW9uT3duZXIsIHRoZSBE
ZWZlcnJlZFdvcmtUaW1lciBjYWxscyBhIHZpcnR1YWwKKyAgICAgICAgZnVuY3Rpb24gb24gdGhl
IGdsb2JhbCBvYmplY3Qgb2YgdGhlIHRpY2tldCwgZm9yIEpTQy1vbmx5IHRoaXMKKyAgICAgICAg
anVzdCBhbHdheXMgcmV0dXJucyBSdW5uaW5nLiBGb3IgV2ViQ29yZSwgd2UgYXNrIHRoZQorICAg
ICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0IGFzc29jaWF0ZWQgd2l0aCB0aGUgU2NyaXB0RXhl
Y3V0aW9uT3duZXIuCisKKyAgICAgICAgKiBBUEkvSlNBUElHbG9iYWxPYmplY3QuY3BwOgorICAg
ICAgICAqIEFQSS9KU0FQSUdsb2JhbE9iamVjdC5tbToKKyAgICAgICAgKiBqc2MuY3BwOgorICAg
ICAgICAqIHJ1bnRpbWUvRGVmZXJyZWRXb3JrVGltZXIuY3BwOgorICAgICAgICAoSlNDOjpEZWZl
cnJlZFdvcmtUaW1lcjo6ZG9Xb3JrKToKKyAgICAgICAgKEpTQzo6RGVmZXJyZWRXb3JrVGltZXI6
OmFkZFBlbmRpbmdXb3JrKToKKyAgICAgICAgKEpTQzo6RGVmZXJyZWRXb3JrVGltZXI6Omhhc0Rl
cGVuZGFuY3lJblBlbmRpbmdXb3JrKToKKyAgICAgICAgKEpTQzo6RGVmZXJyZWRXb3JrVGltZXI6
OmRpZFJlc3VtZVNjcmlwdEV4ZWN1dGlvbk93bmVyKToKKyAgICAgICAgKiBydW50aW1lL0RlZmVy
cmVkV29ya1RpbWVyLmg6CisgICAgICAgICogcnVudGltZS9KU0ZpbmFsaXphdGlvblJlZ2lzdHJ5
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6Y3JlYXRlKToKKyAg
ICAgICAgKEpTQzo6SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5oOgorICAgICAgICAqIHJ1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmN1cnJlbnRTY3JpcHRFeGVjdXRpb25P
d25lcik6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25TdGF0
dXMpOgorCiAyMDIwLTEwLTA3ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAK
ICAgICAgICAgW0pTQ10gUmVzdHJpY3QgbW9yZSBwdHItdGFnZ2luZyBhbmQgYXZvaWQgdXNpbmcg
T3BlcmF0aW9uUHRyVGFnIGZvciBKSVQgY29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA1ZDU3YjgxZTIyZGVmMjc1NDFjYzky
NmMzZmNlZjA1ZTdkOWU0MmJiLi4yYzQ4ZTc2ZDUwOWRkN2JhNjVjMTEyMGMyOWNiMzgwMTQ3N2Ri
YmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0No
YW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIwLTEwLTA4ICBLZWl0aCBNaWxsZXIgIDxrZWl0
aF9taWxsZXJAYXBwbGUuY29tPgorCisgICAgICAgIEZpbmFsaXplcnMgc2hvdWxkbid0IHJ1biBp
ZiBldmVudHMgY2FuJ3QgZmlyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE0NTA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIGEgRHJvcExvY2tTY29wZSB0byBtYWtlIGl0IGVhc2llciB0byBkcm9w
IGEgbG9jayBmb3IgYSBzaG9ydAorICAgICAgICBwaWVjZSBvZiBjb2RlLiAgQWxzbywgaW5zdGVh
ZCBvZiBkZWxldGluZyBpbnQgTG9ja2VyIGNvbnN0cnVjdG9yCisgICAgICAgIHdlIHNob3VsZCBq
dXN0IGRlbGV0ZSB0aGUgdW5kZXJseWluZyB0eXBlIG9mIHRoZQorICAgICAgICBOb0xvY2tpbmdO
ZWNlc3NhcnkgZW51bS4KKworICAgICAgICAqIHd0Zi9Mb2NrZXIuaDoKKyAgICAgICAgKFdURjo6
TG9ja2VyOjp+TG9ja2VyKToKKyAgICAgICAgKFdURjo6TG9ja2VyOjp1bmxvY2tFYXJseSk6Cisg
ICAgICAgIChXVEY6OkxvY2tlcjo6TG9ja2VyKToKKyAgICAgICAgKFdURjo6TG9ja2VyOjpvcGVy
YXRvcj0pOgorICAgICAgICAoV1RGOjpMb2NrZXI6OnVubG9jayk6CisgICAgICAgIChXVEY6OkRy
b3BMb2NrRm9yU2NvcGU6OkRyb3BMb2NrRm9yU2NvcGUpOgorICAgICAgICAoV1RGOjpEcm9wTG9j
a0ZvclNjb3BlOjp+RHJvcExvY2tGb3JTY29wZSk6CisKIDIwMjAtMTAtMDggIFl1c3VrZSBTdXp1
a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBidWlsZCBmaXgg
Zm9yIEFSTTY0RQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGUyMzkxZmZmNDEwZTY2OTQwZjY4NjUzNzFmODgyYjA4
YjU1Y2Q4ZTAuLjMyOWFiODY2MzM4MjRmMWQwN2MzODFlZjNiMjgzYTJkNDJlZDVkOGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw0NCBAQAorMjAyMC0xMC0wOCAgS2VpdGggTWlsbGVyICA8a2VpdGhf
bWlsbGVyQGFwcGxlLmNvbT4KKworICAgICAgICBGaW5hbGl6ZXJzIHNob3VsZG4ndCBydW4gaWYg
ZXZlbnRzIGNhbid0IGZpcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxNDUwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMgaXQgc28gdGhlIERlZmVycmVkV29ya1RpbWVyIHdv
bid0IHJ1biBzY2hlZHVsZWQKKyAgICAgICAgdGFza3MgaWYgdGhvc2Ugd291bGQgbm90IGhhdmUg
cnVuIGlmIHRoZXkgd2VyZSBzY2hlZHVsZWQgaW4KKyAgICAgICAgV2ViQ29yZS4gVG8gZG8gdGhp
cyB0aGVyZSBpcyBub3cgYSBjb25jZXB0IG9mIGEKKyAgICAgICAgU2NyaXB0RXhlY3V0aW9uT3du
ZXIuIFRoZSBTY3JpcHRFeGVjdXRpb25Pd25lciBpcyBhbG1vc3QgYWx3YXlzCisgICAgICAgIHRo
ZSBzYW1lIGFzIHRoZSBnbG9iYWwgb2JqZWN0IG9mIHRoZSBwZW5kaW5nIHRhc2sgKHJlZmVycmVk
IHRvIGFzCisgICAgICAgIHRoZSB0aWNrZXQpLiBUaGUgb25seSBleGNlcHRpb24gdG8gdGhpcyBp
cyBpZiB0aGUgZ2xvYmFsIG9iamVjdAorICAgICAgICBpcyBhIEpTRE9NV2luZG93QmFzZSwgdGhl
biB0aGUgU2NyaXB0RXhlY3V0aW9uT3duZXIgaXMgdGhlCisgICAgICAgIERvY3VtZW50J3MgSlMg
d3JhcHBlci4gVG8gdGVsbCB0aGUgc3RhdHVzIG9mIGEKKyAgICAgICAgU2NyaXB0RXhlY3V0aW9u
T3duZXIsIHRoZSBEZWZlcnJlZFdvcmtUaW1lciBjYWxscyBhIHZpcnR1YWwKKyAgICAgICAgZnVu
Y3Rpb24gb24gdGhlIGdsb2JhbCBvYmplY3Qgb2YgdGhlIHRpY2tldCwgZm9yIEpTQy1vbmx5IHRo
aXMKKyAgICAgICAganVzdCBhbHdheXMgcmV0dXJucyBSdW5uaW5nLiBGb3IgV2ViQ29yZSwgd2Ug
YXNrIHRoZQorICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0IGFzc29jaWF0ZWQgd2l0aCB0
aGUgU2NyaXB0RXhlY3V0aW9uT3duZXIuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd0Jhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpjdXJyZW50
U2NyaXB0RXhlY3V0aW9uT3duZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNl
OjpzY3JpcHRFeGVjdXRpb25TdGF0dXMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93QmFzZS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV3JhcHBlckNhY2hlLmg6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNSZW1vdGVET01XaW5kb3dCYXNlLmNwcDoKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6c2NyaXB0RXhlY3V0aW9uU3RhdHVzKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5oOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OnNjcmlwdEV4ZWN1dGlvblN0YXR1cyk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmg6CisgICAgICAg
ICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6Y29udGV4dElkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cmVtb3ZlRnJvbUNvbnRleHRzTWFwKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6On5TY3JpcHRFeGVjdXRp
b25Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6Ompz
Y1NjcmlwdEV4ZWN1dGlvblN0YXR1cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpyZXN1bWVBY3RpdmVET01PYmplY3RzKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnBvc3RUYXNrVG8pOgorICAgICAgICAqIGRvbS9T
Y3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisKIDIwMjAtMTAtMDggIEFuZHJlcyBHb256YWxleiAg
PGFuZHJlc2dfMjJAYXBwbGUuY29tPgogCiAgICAgICAgIFByZXNpZGVudGlhbCBFeGVjdXRpdmUg
T3JkZXIgcGFnZXMgbm90IGFjY2Vzc2libGUgd2l0aCBTYWZhcmkuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3QuY3BwCmluZGV4IDliNGYzMzhmZDkwMzEy
MjY5NjY3OWE4NzhiMWMyOGJmNmUwNDkzYzEuLjlmNWUwYWQzMGQ3ZDcyMzUwZTllZTk5YWFkMzQ1
MjhkZWQ3MGZiZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElH
bG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9i
YWxPYmplY3QuY3BwCkBAIC00NSw2ICs0NSw4IEBAIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRh
YmxlIEpTQVBJR2xvYmFsT2JqZWN0OjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0gewogICAg
IG51bGxwdHIsIC8vIG1vZHVsZUxvYWRlckV2YWx1YXRlCiAgICAgbnVsbHB0ciwgLy8gcHJvbWlz
ZVJlamVjdGlvblRyYWNrZXIKICAgICAmcmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9v
cCwKKyAgICAmY3VycmVudFNjcmlwdEV4ZWN1dGlvbk93bmVyLAorICAgICZzY3JpcHRFeGVjdXRp
b25TdGF0dXMsCiAgICAgbnVsbHB0ciwgLy8gZGVmYXVsdExhbmd1YWdlCiAgICAgbnVsbHB0ciwg
Ly8gY29tcGlsZVN0cmVhbWluZwogICAgIG51bGxwdHIsIC8vIGluc3RhbnRpYXRlU3RyZWFtaW5n
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0
Lm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5tbQppbmRl
eCBkZGUyYmQzMjNiYzdiNjViNGYwOTAyM2I4N2FlYTI3YjA0MjM2MzllLi41NDYxMzc5ZmRiZGU0
YzFlOTIzNTVhZjAxNzAxNDMyNjAwY2FlMTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNBUElHbG9iYWxPYmplY3QubW0KQEAgLTY1LDYgKzY1LDggQEAgY29uc3QgR2xvYmFs
T2JqZWN0TWV0aG9kVGFibGUgSlNBUElHbG9iYWxPYmplY3Q6OnNfZ2xvYmFsT2JqZWN0TWV0aG9k
VGFibGUgPSB7CiAgICAgJm1vZHVsZUxvYWRlckV2YWx1YXRlLCAvLyBtb2R1bGVMb2FkZXJFdmFs
dWF0ZQogICAgIG51bGxwdHIsIC8vIHByb21pc2VSZWplY3Rpb25UcmFja2VyCiAgICAgJnJlcG9y
dFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3AsCisgICAgJmN1cnJlbnRTY3JpcHRFeGVjdXRp
b25Pd25lciwKKyAgICAmc2NyaXB0RXhlY3V0aW9uU3RhdHVzLAogICAgIG51bGxwdHIsIC8vIGRl
ZmF1bHRMYW5ndWFnZQogICAgIG51bGxwdHIsIC8vIGNvbXBpbGVTdHJlYW1pbmcKICAgICBudWxs
cHRyLCAvLyBpbnN0YW50aWF0ZVN0cmVhbWluZwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCBiYTYz
MzIxMmUyODJhMDA2NDRkMjA4OTQwZTJiMGUyNDQ0OGY4NDZmLi40YjcwNmUyZmYyOWU2ZTA5OWRk
OGJkYWJhYTIwNGRmOTI2MWJiODZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
anNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtNzIwLDYgKzcy
MCw4IEBAIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEdsb2JhbE9iamVjdDo6c19nbG9i
YWxPYmplY3RNZXRob2RUYWJsZSA9IHsKICAgICBudWxscHRyLCAvLyBtb2R1bGVMb2FkZXJFdmFs
dWF0ZQogICAgIG51bGxwdHIsIC8vIHByb21pc2VSZWplY3Rpb25UcmFja2VyCiAgICAgJnJlcG9y
dFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3AsCisgICAgJmN1cnJlbnRTY3JpcHRFeGVjdXRp
b25Pd25lciwKKyAgICAmc2NyaXB0RXhlY3V0aW9uU3RhdHVzLAogICAgIG51bGxwdHIsIC8vIGRl
ZmF1bHRMYW5ndWFnZQogICAgIG51bGxwdHIsIC8vIGNvbXBpbGVTdHJlYW1pbmcKICAgICBudWxs
cHRyLCAvLyBpbnN0YW50aW5hdGVTdHJlYW1pbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0RlZmVycmVkV29ya1RpbWVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0RlZmVycmVkV29ya1RpbWVyLmNwcAppbmRleCBjZWQ3N2JhZTQ0ZDczMmVk
ZTM3ZjQ0MDM3N2QwNzM1YTdmZWEyZGM4Li5lMmQxYjFmNmU1Y2UwN2RiYjJmYThmZGExOTk0YTEx
YWUwNjgzNzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EZWZl
cnJlZFdvcmtUaW1lci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVm
ZXJyZWRXb3JrVGltZXIuY3BwCkBAIC00NSwyMiArNDUsMzggQEAgRGVmZXJyZWRXb3JrVGltZXI6
OkRlZmVycmVkV29ya1RpbWVyKFZNJiB2bSkKIHZvaWQgRGVmZXJyZWRXb3JrVGltZXI6OmRvV29y
ayhWTSYgdm0pCiB7CiAgICAgQVNTRVJUKHZtLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2Nr
KCkpOwotICAgIG1fdGFza0xvY2subG9jaygpOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2so
bV90YXNrTG9jayk7CiAgICAgY2FuY2VsVGltZXIoKTsKLSAgICBpZiAoIW1fcnVuVGFza3MpIHsK
LSAgICAgICAgbV90YXNrTG9jay51bmxvY2soKTsKKyAgICBpZiAoIW1fcnVuVGFza3MpCiAgICAg
ICAgIHJldHVybjsKLSAgICB9CisKKyAgICBWZWN0b3I8c3RkOjp0dXBsZTxUaWNrZXQsIFRhc2s+
PiBzdXNwZW5kZWRUYXNrczsKIAogICAgIHdoaWxlICghbV90YXNrcy5pc0VtcHR5KCkpIHsKICAg
ICAgICAgYXV0byBbdGlja2V0LCB0YXNrXSA9IG1fdGFza3MudGFrZUZpcnN0KCk7CisgICAgICAg
IGF1dG8gZ2xvYmFsT2JqZWN0ID0gdGlja2V0LT5zdHJ1Y3R1cmUodm0pLT5nbG9iYWxPYmplY3Qo
KTsKICAgICAgICAgZGF0YUxvZ0xuSWYoRGVmZXJyZWRXb3JrVGltZXJJbnRlcm5hbDo6dmVyYm9z
ZSwgIkRvaW5nIHdvcmsgb246ICIsIFJhd1BvaW50ZXIodGlja2V0KSk7CiAKLSAgICAgICAgLy8g
V2UgbWF5IGhhdmUgYWxyZWFkeSBjYW5jZWxlZCB0aGVzZSBwcm9taXNlcy4KLSAgICAgICAgaWYg
KG1fcGVuZGluZ1RpY2tldHMuY29udGFpbnModGlja2V0KSkgewotICAgICAgICAgICAgLy8gQWxs
b3cgdGFza3Mgd2UgcnVuIG5vdyB0byBzY2hlZHVsZSB3b3JrLgotICAgICAgICAgICAgbV9jdXJy
ZW50bHlSdW5uaW5nVGFzayA9IHRydWU7Ci0gICAgICAgICAgICBtX3Rhc2tMb2NrLnVubG9jaygp
OyAKKyAgICAgICAgYXV0byBwZW5kaW5nVGlja2V0ID0gbV9wZW5kaW5nVGlja2V0cy5maW5kKHRp
Y2tldCk7CisgICAgICAgIC8vIFdlIG1heSBoYXZlIGFscmVhZHkgY2FuY2VsZWQgdGhpcyB0YXNr
IG9yIGl0cyBvd25lciBtYXkgaGF2ZSBiZWVuIGNhbmNlbGVkLgorICAgICAgICBpZiAocGVuZGlu
Z1RpY2tldCA9PSBtX3BlbmRpbmdUaWNrZXRzLmVuZCgpKQorICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgU2NyaXB0RXhlY3V0aW9uU3RhdHVzIHN0YXR1cyA9IGdsb2JhbE9iamVjdC0+
Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+c2NyaXB0RXhlY3V0aW9uU3RhdHVzKGdsb2JhbE9i
amVjdCwgcGVuZGluZ1RpY2tldC0+dmFsdWUuc2NyaXB0RXhlY3V0aW9uT3duZXIuZ2V0KCkpOwor
ICAgICAgICBzd2l0Y2ggKHN0YXR1cykgeworICAgICAgICBjYXNlIFNjcmlwdEV4ZWN1dGlvblN0
YXR1czo6U3VzcGVuZGVkOgorICAgICAgICAgICAgc3VzcGVuZGVkVGFza3MuYXBwZW5kKHN0ZDo6
bWFrZV90dXBsZSh0aWNrZXQsIFdURk1vdmUodGFzaykpKTsKKyAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICBjYXNlIFNjcmlwdEV4ZWN1dGlvblN0YXR1czo6U3RvcHBlZDoKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICBjYXNlIFNjcmlwdEV4ZWN1dGlvblN0YXR1czo6UnVubmlu
ZzoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgLy8gQWxsb3cgdGFz
a3Mgd2UgYXJlIGFib3V0IHRvIHJ1biB0byBzY2hlZHVsZSB3b3JrLgorICAgICAgICBtX2N1cnJl
bnRseVJ1bm5pbmdUYXNrID0gdHJ1ZTsKKyAgICAgICAgeworICAgICAgICAgICAgYXV0byBkcm9w
cGVyID0gRHJvcExvY2tGb3JTY29wZShsb2NrZXIpOwogCiAgICAgICAgICAgICAvLyBUaGlzIGlz
IHRoZSBzdGFydCBvZiBhIHJ1bmxvb3AgdHVybiwgd2UgY2FuIHJlbGVhc2UgYW55IHdlYWtyZWZz
IGhlcmUuCiAgICAgICAgICAgICB2bS5maW5hbGl6ZVN5bmNocm9ub3VzSlNFeGVjdXRpb24oKTsK
QEAgLTc1LDE2ICs5MSwxNyBAQCB2b2lkIERlZmVycmVkV29ya1RpbWVyOjpkb1dvcmsoVk0mIHZt
KQogCiAgICAgICAgICAgICB2bS5kcmFpbk1pY3JvdGFza3MoKTsKICAgICAgICAgICAgIEFTU0VS
VCghdm0uZXhjZXB0aW9uRm9ySW5zcGVjdGlvbigpKTsKLQotICAgICAgICAgICAgbV90YXNrTG9j
ay5sb2NrKCk7Ci0gICAgICAgICAgICBtX2N1cnJlbnRseVJ1bm5pbmdUYXNrID0gZmFsc2U7CiAg
ICAgICAgIH0KKyAgICAgICAgbV9jdXJyZW50bHlSdW5uaW5nVGFzayA9IGZhbHNlOwogICAgIH0K
IAotICAgIGlmIChtX3BlbmRpbmdUaWNrZXRzLmlzRW1wdHkoKSAmJiBtX3Nob3VsZFN0b3BSdW5M
b29wV2hlbkFsbFRpY2tldHNGaW5pc2gpCi0gICAgICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5zdG9w
KCk7CisgICAgd2hpbGUgKCFzdXNwZW5kZWRUYXNrcy5pc0VtcHR5KCkpCisgICAgICAgIG1fdGFz
a3MucHJlcGVuZChzdXNwZW5kZWRUYXNrcy50YWtlTGFzdCgpKTsKIAotICAgIG1fdGFza0xvY2su
dW5sb2NrKCk7CisgICAgaWYgKG1fcGVuZGluZ1RpY2tldHMuaXNFbXB0eSgpICYmIG1fc2hvdWxk
U3RvcFJ1bkxvb3BXaGVuQWxsVGlja2V0c0ZpbmlzaCkgeworICAgICAgICBBU1NFUlQobV90YXNr
cy5pc0VtcHR5KCkpOworICAgICAgICBSdW5Mb29wOjpjdXJyZW50KCkuc3RvcCgpOworICAgIH0K
IH0KIAogdm9pZCBEZWZlcnJlZFdvcmtUaW1lcjo6cnVuUnVuTG9vcCgpCkBAIC0xMDIsMTQgKzEx
OSwxNiBAQCB2b2lkIERlZmVycmVkV29ya1RpbWVyOjphZGRQZW5kaW5nV29yayhWTSYgdm0sIFRp
Y2tldCB0aWNrZXQsIFZlY3RvcjxTdHJvbmc8SlNDZQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBkZXBlbmRlbmNpZXMuc2l6ZSgpOyArK2kpCiAgICAgICAgIEFTU0VSVChkZXBlbmRlbmNp
ZXNbaV0uZ2V0KCkgIT0gdGlja2V0KTsKIAotICAgIGF1dG8gcmVzdWx0ID0gbV9wZW5kaW5nVGlj
a2V0cy5hZGQodGlja2V0LCBWZWN0b3I8U3Ryb25nPEpTQ2VsbD4+KCkpOwotICAgIGlmIChyZXN1
bHQuaXNOZXdFbnRyeSkgeworICAgIGF1dG8gZ2xvYmFsT2JqZWN0ID0gdGlja2V0LT5nbG9iYWxP
YmplY3QoKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fcGVuZGluZ1RpY2tldHMuZW5zdXJlKHRpY2tl
dCwgWyZdIHsKICAgICAgICAgZGF0YUxvZ0xuSWYoRGVmZXJyZWRXb3JrVGltZXJJbnRlcm5hbDo6
dmVyYm9zZSwgIkFkZGluZyBuZXcgcGVuZGluZyB0aWNrZXQ6ICIsIFJhd1BvaW50ZXIodGlja2V0
KSk7CisgICAgICAgIEpTT2JqZWN0KiBzY3JpcHRFeGVjdXRpb25Pd25lciA9IGdsb2JhbE9iamVj
dC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+Y3VycmVudFNjcmlwdEV4ZWN1dGlvbk93bmVy
KGdsb2JhbE9iamVjdCk7CiAgICAgICAgIGRlcGVuZGVuY2llcy5hcHBlbmQoU3Ryb25nPEpTQ2Vs
bD4odm0sIHRpY2tldCkpOwotICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gV1RGTW92
ZShkZXBlbmRlbmNpZXMpOwotICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVybiBUaWNrZXREYXRh
IHsgV1RGTW92ZShkZXBlbmRlbmNpZXMpLCBTdHJvbmc8SlNPYmplY3Q+KHZtLCBzY3JpcHRFeGVj
dXRpb25Pd25lcikgfTsKKyAgICB9KTsKKyAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KSB7CiAg
ICAgICAgIGRhdGFMb2dMbklmKERlZmVycmVkV29ya1RpbWVySW50ZXJuYWw6OnZlcmJvc2UsICJB
ZGRpbmcgbmV3IGRlcGVuZGVuY2llcyBmb3IgdGlja2V0OiAiLCBSYXdQb2ludGVyKHRpY2tldCkp
OwotICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmFwcGVuZFZlY3RvcihkZXBlbmRlbmNp
ZXMpOworICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmRlcGVuZGVuY2llcy5hcHBlbmRW
ZWN0b3IoV1RGTW92ZShkZXBlbmRlbmNpZXMpKTsKICAgICB9CiB9CiAKQEAgLTEyNSw3ICsxNDQs
NyBAQCBib29sIERlZmVycmVkV29ya1RpbWVyOjpoYXNEZXBlbmRhbmN5SW5QZW5kaW5nV29yayhU
aWNrZXQgdGlja2V0LCBKU0NlbGwqIGRlcGVuZAogICAgIEFTU0VSVChtX3BlbmRpbmdUaWNrZXRz
LmNvbnRhaW5zKHRpY2tldCkpOwogCiAgICAgYXV0byByZXN1bHQgPSBtX3BlbmRpbmdUaWNrZXRz
LmdldCh0aWNrZXQpOwotICAgIHJldHVybiByZXN1bHQuY29udGFpbnMoZGVwZW5kZW5jeSk7Cisg
ICAgcmV0dXJuIHJlc3VsdC5kZXBlbmRlbmNpZXMuY29udGFpbnMoZGVwZW5kZW5jeSk7CiB9CiAK
IGJvb2wgRGVmZXJyZWRXb3JrVGltZXI6OmNhbmNlbFBlbmRpbmdXb3JrKFRpY2tldCB0aWNrZXQp
CkBAIC0xNDcsNCArMTY2LDEyIEBAIHZvaWQgRGVmZXJyZWRXb3JrVGltZXI6OnNjaGVkdWxlV29y
a1Nvb24oVGlja2V0IHRpY2tldCwgVGFzayYmIHRhc2spCiAgICAgICAgIHNldFRpbWVVbnRpbEZp
cmUoMF9zKTsKIH0KIAordm9pZCBEZWZlcnJlZFdvcmtUaW1lcjo6ZGlkUmVzdW1lU2NyaXB0RXhl
Y3V0aW9uT3duZXIoKQoreworICAgIEFTU0VSVCghbV9jdXJyZW50bHlSdW5uaW5nVGFzayk7Cisg
ICAgTG9ja0hvbGRlciBsb2NrZXIobV90YXNrTG9jayk7CisgICAgaWYgKCFpc1NjaGVkdWxlZCgp
ICYmIG1fdGFza3Muc2l6ZSgpKQorICAgICAgICBzZXRUaW1lVW50aWxGaXJlKDBfcyk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRGVmZXJyZWRXb3JrVGltZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0RlZmVycmVkV29ya1RpbWVyLmgKaW5kZXggMjcxYThhYmM5ZWM0Mjg1NmU5ZGQzYTFjYzNiYzVj
ZTg2ZGI0ZjY5My4uYzEzMTIwNDU4MjI1ZWEwMTgwYmVjOWYyMDMxY2FmNThiNDQ1OTE3YiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVmZXJyZWRXb3JrVGltZXIu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EZWZlcnJlZFdvcmtUaW1lci5o
CkBAIC01MSwxOCArNTEsMTkgQEAgcHVibGljOgogICAgIGJvb2wgaGFzRGVwZW5kYW5jeUluUGVu
ZGluZ1dvcmsoVGlja2V0LCBKU0NlbGwqIGRlcGVuZGVuY3kpOwogICAgIGJvb2wgY2FuY2VsUGVu
ZGluZ1dvcmsoVGlja2V0KTsKIAorICAgIC8vIElmIHRoZSBzY3JpcHQgZXhlY3V0aW9uIG93bmVy
IHlvdXIgdGlja2V0IGlzIGFzc29jaWF0ZWQgd2l0aCBnZXRzIGNhbmNlbGVkCisgICAgLy8gdGhl
IFRhc2sgd2lsbCBub3QgYmUgY2FsbGVkIGFuZCB3aWxsIGJlIGRlYWxsb2NhdGVkLiBTbyBpdCdz
IGltcG9ydGFudAorICAgIC8vIHRvIG1ha2Ugc3VyZSB5b3VyIG1lbW9yeSBvd25lcnNoaXAgbW9k
ZWwgd29uJ3QgbGVhayBtZW1vcnkgd2hlbgorICAgIC8vIHRoaXMgb2NjdXJzLiBUaGUgZWFzaWVz
dCB3YXkgaXMgdG8gbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgaXMgZWl0aGVyIG93bmVkCisgICAgLy8g
YnkgYSBHQydkIHZhbHVlIGluIGRlcGVuZGVuY2llcyBvciBieSB0aGUgVGFzayBsYW1iZGEuCiAg
ICAgdXNpbmcgVGFzayA9IEZ1bmN0aW9uPHZvaWQoKT47CiAgICAgdm9pZCBzY2hlZHVsZVdvcmtT
b29uKFRpY2tldCwgVGFzayYmKTsKKyAgICB2b2lkIGRpZFJlc3VtZVNjcmlwdEV4ZWN1dGlvbk93
bmVyKCk7CiAKICAgICB2b2lkIHN0b3BSdW5uaW5nVGFza3MoKSB7IG1fcnVuVGFza3MgPSBmYWxz
ZTsgfQotCiAgICAgdm9pZCBydW5SdW5Mb29wKCk7CiAKLSAgICBzdGF0aWMgUmVmPERlZmVycmVk
V29ya1RpbWVyPiBjcmVhdGUoVk0mIHZtKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgRGVmZXJyZWRXb3JrVGltZXIodm0pKTsKLSAgICB9Ci0KKyAgICBzdGF0aWMgUmVmPERl
ZmVycmVkV29ya1RpbWVyPiBjcmVhdGUoVk0mIHZtKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERl
ZmVycmVkV29ya1RpbWVyKHZtKSk7IH0KIHByaXZhdGU6CiAgICAgRGVmZXJyZWRXb3JrVGltZXIo
Vk0mKTsKIApAQCAtNzEsNyArNzIsMTEgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc2hvdWxkU3Rv
cFJ1bkxvb3BXaGVuQWxsVGlja2V0c0ZpbmlzaCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2N1cnJl
bnRseVJ1bm5pbmdUYXNrIHsgZmFsc2UgfTsKICAgICBEZXF1ZTxzdGQ6OnR1cGxlPFRpY2tldCwg
VGFzaz4+IG1fdGFza3M7Ci0gICAgSGFzaE1hcDxUaWNrZXQsIFZlY3RvcjxTdHJvbmc8SlNDZWxs
Pj4+IG1fcGVuZGluZ1RpY2tldHM7CisgICAgc3RydWN0IFRpY2tldERhdGEgeworICAgICAgICBW
ZWN0b3I8U3Ryb25nPEpTQ2VsbD4+IGRlcGVuZGVuY2llczsKKyAgICAgICAgU3Ryb25nPEpTT2Jq
ZWN0PiBzY3JpcHRFeGVjdXRpb25Pd25lcjsKKyAgICB9OworICAgIEhhc2hNYXA8VGlja2V0LCBU
aWNrZXREYXRhPiBtX3BlbmRpbmdUaWNrZXRzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ZpbmFsaXphdGlvblJl
Z2lzdHJ5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRmluYWxpemF0aW9u
UmVnaXN0cnkuY3BwCmluZGV4IDU0OWI5ZDkwOTI1YzYyNzhkMTcxZjNjZTc4MDE5OWFjYTU0ODhh
MDIuLjRlMjg4MjlkNTcyZWQzYmQ0OTU3YjAwYWUxNDZiNDJhMTNhMWVjOGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRmluYWxpemF0aW9uUmVnaXN0cnkuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRmluYWxpemF0aW9uUmVnaXN0
cnkuY3BwCkBAIC00MiwxMSArNDIsMTEgQEAgU3RydWN0dXJlKiBKU0ZpbmFsaXphdGlvblJlZ2lz
dHJ5OjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmEKIEpTRmlu
YWxpemF0aW9uUmVnaXN0cnkqIEpTRmluYWxpemF0aW9uUmVnaXN0cnk6OmNyZWF0ZShWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU09iamVjdCogY2FsbGJhY2spCiB7CiAgICAgSlNGaW5h
bGl6YXRpb25SZWdpc3RyeSogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxK
U0ZpbmFsaXphdGlvblJlZ2lzdHJ5Pih2bS5oZWFwKSkgSlNGaW5hbGl6YXRpb25SZWdpc3RyeSh2
bSwgc3RydWN0dXJlKTsKLSAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24odm0sIGNhbGxiYWNr
KTsKKyAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24odm0sIHN0cnVjdHVyZS0+Z2xvYmFsT2Jq
ZWN0KCksIGNhbGxiYWNrKTsKICAgICByZXR1cm4gaW5zdGFuY2U7CiB9CiAKLXZvaWQgSlNGaW5h
bGl6YXRpb25SZWdpc3RyeTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU09iamVjdCogY2FsbGJh
Y2spCit2b2lkIEpTRmluYWxpemF0aW9uUmVnaXN0cnk6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIGNhbGxiYWNrKQogewogICAg
IEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICBBU1NFUlQoY2FsbGJhY2stPmlzQ2FsbGFi
bGUodm0pKTsKQEAgLTU0LDYgKzU0LDEwIEBAIHZvaWQgSlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU09iamVjdCogY2FsbGJhY2spCiAgICAgZm9yICh1bnNp
Z25lZCBpbmRleCA9IDA7IGluZGV4IDwgdmFsdWVzLnNpemUoKTsgKytpbmRleCkKICAgICAgICAg
QmFzZTo6aW50ZXJuYWxGaWVsZChpbmRleCkuc2V0V2l0aG91dFdyaXRlQmFycmllcih2YWx1ZXNb
aW5kZXhdKTsKICAgICBpbnRlcm5hbEZpZWxkKEZpZWxkOjpDYWxsYmFjaykuc2V0V2l0aG91dFdy
aXRlQmFycmllcihjYWxsYmFjayk7CisKKyAgICAvLyBNYWtlIHN1cmUgd2UgaW5pdCB0aGUgRE9N
IHdyYXBwZXIgZm9yIG91ciBkb2N1bWVudCBzaW5jZSBpdCBtdXN0IGJlIGFsbG9jYXRlZCBiZWZv
cmUgZmluYWxpemVVbmNvbmRpdGlvbmFsbHkgaXMgY2FsbGVkLiBmaW5hbGl6ZVVuY29uZGl0aW9u
YWxseSwKKyAgICAvLyBpcyBjYWxsZWQgZHVyaW5nIHRoZSBHQyBmbGlwIHNvIG5vIEpTIG9iamVj
dHMgY2FuIGJlIGFsbG9jYXRlZCB0aGVyZS4gVGhpcyBvbmx5IHdvcmtzIGJlY2F1c2Ugd2Ugbm8g
bG9uZ2VyIHdlYWtseSBob2xkIG9uIHRvIERPTSB3cmFwcGVycy4KKyAgICBnbG9iYWxPYmplY3Qt
Pmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPmN1cnJlbnRTY3JpcHRFeGVjdXRpb25Pd25lcihn
bG9iYWxPYmplY3QpOwogfQogCiB2b2lkIEpTRmluYWxpemF0aW9uUmVnaXN0cnk6OnZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRmluYWxpemF0aW9uUmVnaXN0cnkuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRmluYWxpemF0aW9uUmVnaXN0cnkuaAppbmRl
eCA2ZDVjZDM4Y2YwYmE3ZDgyOTkxY2RiNWMwYWFhMWZmNjQ0MmFmNjMzLi43NWQ2NzZiYjg1Y2Zj
Y2YwZmFmNmU2MDBlMGNmMTJlNDAxZDhjOWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5oCkBAIC04OSw3ICs4OSw3
IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQg
ZmluaXNoQ3JlYXRpb24oVk0mLCBKU09iamVjdCogY2FsbGJhY2spOworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0
KiBjYWxsYmFjayk7CiAKICAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nTmFtZShjb25zdCBKU09i
amVjdCosIEpTR2xvYmFsT2JqZWN0Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCAwNjliYjgyODEyYTZmNGE1YzMyZmRmNDUy
NDJlNzEzOTg5MDQ2MDA3Li44ZmQzNDEwN2U3NTczN2EyZWFkYmY2ZTZlNjE3ZTc4ZjFhZmI3NmUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCkBAIC00MTIsNiArNDEyLDggQEAgY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNH
bG9iYWxPYmplY3Q6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7CiAgICAgbnVsbHB0ciwg
Ly8gbW9kdWxlTG9hZGVyRXZhbHVhdGUKICAgICBudWxscHRyLCAvLyBwcm9taXNlUmVqZWN0aW9u
VHJhY2tlcgogICAgICZyZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wLAorICAgICZj
dXJyZW50U2NyaXB0RXhlY3V0aW9uT3duZXIsCisgICAgJnNjcmlwdEV4ZWN1dGlvblN0YXR1cywK
ICAgICBudWxscHRyLCAvLyBkZWZhdWx0TGFuZ3VhZ2UKICAgICBudWxscHRyLCAvLyBjb21waWxl
U3RyZWFtaW5nCiAgICAgbnVsbHB0ciwgLy8gaW5zdGFudGlhdGVTdHJlYW1pbmcKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDk3NTY0ZTlj
MmRlNTZjOTFlZWFlNTJkYjk1MjA2NjBiYWQ1ODdjZmMuLjQxYzhiYTk0NDY4ZmQyMjk1MjY3OWFj
OGExZmJjOTZhMmI0NGM3MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaApAQCAtMTk1LDYgKzE5NSwxMiBAQCBlbnVtIGNsYXNzIEpTUHJvbWlz
ZVJlamVjdGlvbk9wZXJhdGlvbiA6IHVuc2lnbmVkIHsKICAgICBIYW5kbGUsIC8vIFdoZW4gYSBo
YW5kbGVyIGlzIGFkZGVkIHRvIGEgcmVqZWN0ZWQgcHJvbWlzZSBmb3IgdGhlIGZpcnN0IHRpbWUu
CiB9OwogCitlbnVtIGNsYXNzIFNjcmlwdEV4ZWN1dGlvblN0YXR1cyB7CisgICAgUnVubmluZywK
KyAgICBTdXNwZW5kZWQsCisgICAgU3RvcHBlZCwKK307CisKIHN0cnVjdCBHbG9iYWxPYmplY3RN
ZXRob2RUYWJsZSB7CiAgICAgdHlwZWRlZiBib29sICgqU3VwcG9ydHNSaWNoU291cmNlSW5mb0Z1
bmN0aW9uUHRyKShjb25zdCBKU0dsb2JhbE9iamVjdCopOwogICAgIFN1cHBvcnRzUmljaFNvdXJj
ZUluZm9GdW5jdGlvblB0ciBzdXBwb3J0c1JpY2hTb3VyY2VJbmZvOwpAQCAtMjMyLDYgKzIzOCwx
MyBAQCBzdHJ1Y3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgewogICAgIHR5cGVkZWYgdm9pZCAo
KlJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3BQdHIpKEpTR2xvYmFsT2JqZWN0Kiwg
RXhjZXB0aW9uKik7CiAgICAgUmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcFB0ciBy
ZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wOwogCisgICAgLy8gRm9yIG1vc3QgY29u
dGV4dHMgdGhpcyBpcyBqdXN0IHRoZSBnbG9iYWwgb2JqZWN0LiBGb3IgSlNET01XaW5kb3csIGhv
d2V2ZXIsIHRoaXMgaXMgdGhlIEpTRG9jdW1lbnQuCisgICAgdHlwZWRlZiBKU09iamVjdCogKCpD
dXJyZW50U2NyaXB0RXhlY3V0aW9uT3duZXJQdHIpKEpTR2xvYmFsT2JqZWN0Kik7CisgICAgQ3Vy
cmVudFNjcmlwdEV4ZWN1dGlvbk93bmVyUHRyIGN1cnJlbnRTY3JpcHRFeGVjdXRpb25Pd25lcjsK
KworICAgIHR5cGVkZWYgU2NyaXB0RXhlY3V0aW9uU3RhdHVzICgqU2NyaXB0RXhlY3V0aW9uU3Rh
dHVzUHRyKShKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiBzY3JpcHRFeGVjdXRpb25Pd25lcik7
CisgICAgU2NyaXB0RXhlY3V0aW9uU3RhdHVzUHRyIHNjcmlwdEV4ZWN1dGlvblN0YXR1czsKKwog
ICAgIHR5cGVkZWYgU3RyaW5nICgqRGVmYXVsdExhbmd1YWdlRnVuY3Rpb25QdHIpKCk7CiAgICAg
RGVmYXVsdExhbmd1YWdlRnVuY3Rpb25QdHIgZGVmYXVsdExhbmd1YWdlOwogCkBAIC04NTMsNiAr
ODY2LDggQEAgcHVibGljOgogICAgIEpTT2JqZWN0KiB1bmhhbmRsZWRSZWplY3Rpb25DYWxsYmFj
aygpIGNvbnN0IHsgcmV0dXJuIG1fdW5oYW5kbGVkUmVqZWN0aW9uQ2FsbGJhY2suZ2V0KCk7IH0K
IAogICAgIHN0YXRpYyB2b2lkIHJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3AoSlNH
bG9iYWxPYmplY3QqLCBFeGNlcHRpb24qKTsKKyAgICBzdGF0aWMgSlNPYmplY3QqIGN1cnJlbnRT
Y3JpcHRFeGVjdXRpb25Pd25lcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsKSB7IHJldHVybiBnbG9i
YWw7IH0KKyAgICBzdGF0aWMgU2NyaXB0RXhlY3V0aW9uU3RhdHVzIHNjcmlwdEV4ZWN1dGlvblN0
YXR1cyhKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KikgeyByZXR1cm4gU2NyaXB0RXhlY3V0aW9u
U3RhdHVzOjpSdW5uaW5nOyB9CiAKICAgICBKU09iamVjdCogYXJyYXlCdWZmZXJDb25zdHJ1Y3Rv
cigpIGNvbnN0IHsgcmV0dXJuIG1fYXJyYXlCdWZmZXJTdHJ1Y3R1cmUuY29uc3RydWN0b3IodGhp
cyk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTG9ja2VyLmggYi9Tb3VyY2UvV1RG
L3d0Zi9Mb2NrZXIuaAppbmRleCBhNzg5ZTAzZTA5NThlY2JlNGYzMmY0ZDk0ZjMxNjEzNTQ0YmQz
Njg4Li45ODM5MDZlZDFmZTI5NjA1YmZhMDczYzg2NjMzNTdjNjg2NWEyN2NhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9Mb2NrZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Mb2NrZXIuaApA
QCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8
d3RmL0F0b21pY3MuaD4KICNpbmNsdWRlIDx3dGYvQ29tcGlsZXIuaD4KKyNpbmNsdWRlIDx3dGYv
Rm9yYmlkSGVhcEFsbG9jYXRpb24uaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNp
bmNsdWRlIDx3dGYvVGhyZWFkU2FuaXRpemVyU3VwcG9ydC5oPgogCkBAIC01MSw3ICs1MiwxMCBA
QCBwcm90ZWN0ZWQ6CiAgICAgfQogfTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIExv
Y2tlciA6IHB1YmxpYyBBYnN0cmFjdExvY2tlciB7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFz
cyBEcm9wTG9ja0ZvclNjb3BlOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorY2xhc3MgTG9ja2Vy
IDogcHVibGljIEFic3RyYWN0TG9ja2VyIHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBMb2NrZXIo
VCYgbG9ja2FibGUpIDogbV9sb2NrYWJsZSgmbG9ja2FibGUpIHsgbG9jaygpOyB9CiAgICAgZXhw
bGljaXQgTG9ja2VyKFQqIGxvY2thYmxlKSA6IG1fbG9ja2FibGUobG9ja2FibGUpIHsgbG9jaygp
OyB9CkBAIC02MywxNSArNjcsMTEgQEAgcHVibGljOgogICAgIC8vIGJlIGFjY2Vzc2VkIGNvbmN1
cnJlbnRseS4KICAgICBMb2NrZXIoTm9Mb2NraW5nTmVjZXNzYXJ5VGFnKSA6IG1fbG9ja2FibGUo
bnVsbHB0cikgeyB9CiAgICAgCi0gICAgTG9ja2VyKGludCkgPSBkZWxldGU7CisgICAgTG9ja2Vy
KHN0ZDo6dW5kZXJseWluZ190eXBlX3Q8Tm9Mb2NraW5nTmVjZXNzYXJ5VGFnPikgPSBkZWxldGU7
CiAKICAgICB+TG9ja2VyKCkKICAgICB7Ci0gICAgICAgIGNvbXBpbGVyRmVuY2UoKTsKLSAgICAg
ICAgaWYgKG1fbG9ja2FibGUpIHsKLSAgICAgICAgICAgIFRTQU5fQU5OT1RBVEVfSEFQUEVOU19C
RUZPUkUobV9sb2NrYWJsZSk7Ci0gICAgICAgICAgICBtX2xvY2thYmxlLT51bmxvY2soKTsKLSAg
ICAgICAgfQorICAgICAgICB1bmxvY2soKTsKICAgICB9CiAgICAgCiAgICAgc3RhdGljIExvY2tl
ciB0cnlMb2NrKFQmIGxvY2thYmxlKQpAQCAtODgsOCArODgsNyBAQCBwdWJsaWM6CiAgICAgCiAg
ICAgdm9pZCB1bmxvY2tFYXJseSgpCiAgICAgewotICAgICAgICBUU0FOX0FOTk9UQVRFX0hBUFBF
TlNfQkVGT1JFKG1fbG9ja2FibGUpOwotICAgICAgICBtX2xvY2thYmxlLT51bmxvY2soKTsKKyAg
ICAgICAgdW5sb2NrKCk7CiAgICAgICAgIG1fbG9ja2FibGUgPSBudWxscHRyOwogICAgIH0KICAg
ICAKQEAgLTk4LDIxICs5NywzMSBAQCBwdWJsaWM6CiAgICAgTG9ja2VyKExvY2tlciYmIG90aGVy
KQogICAgICAgICA6IG1fbG9ja2FibGUob3RoZXIubV9sb2NrYWJsZSkKICAgICB7CisgICAgICAg
IEFTU0VSVCgmb3RoZXIgIT0gdGhpcyk7CiAgICAgICAgIG90aGVyLm1fbG9ja2FibGUgPSBudWxs
cHRyOwogICAgIH0KICAgICAKICAgICBMb2NrZXImIG9wZXJhdG9yPShMb2NrZXImJiBvdGhlcikK
ICAgICB7Ci0gICAgICAgIGlmIChtX2xvY2thYmxlKSB7Ci0gICAgICAgICAgICBUU0FOX0FOTk9U
QVRFX0hBUFBFTlNfQkVGT1JFKG1fbG9ja2FibGUpOwotICAgICAgICAgICAgbV9sb2NrYWJsZS0+
dW5sb2NrKCk7Ci0gICAgICAgIH0KKyAgICAgICAgQVNTRVJUKCZvdGhlciAhPSB0aGlzKTsKICAg
ICAgICAgbV9sb2NrYWJsZSA9IG90aGVyLm1fbG9ja2FibGU7CiAgICAgICAgIG90aGVyLm1fbG9j
a2FibGUgPSBudWxscHRyOwogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogICAgIAogcHJp
dmF0ZToKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZT4KKyAgICBmcmllbmQgY2xhc3MgRHJvcExvY2tG
b3JTY29wZTsKKworICAgIHZvaWQgdW5sb2NrKCkKKyAgICB7CisgICAgICAgIGNvbXBpbGVyRmVu
Y2UoKTsKKyAgICAgICAgaWYgKG1fbG9ja2FibGUpIHsKKyAgICAgICAgICAgIFRTQU5fQU5OT1RB
VEVfSEFQUEVOU19CRUZPUkUobV9sb2NrYWJsZSk7CisgICAgICAgICAgICBtX2xvY2thYmxlLT51
bmxvY2soKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHZvaWQgbG9jaygpCiAgICAgewogICAg
ICAgICBpZiAobV9sb2NrYWJsZSkgewpAQCAtMTUxLDYgKzE2MCwyNSBAQCBMb2NrZXI8TG9ja1R5
cGU+IHRyeUhvbGRMb2NrKExvY2tUeXBlJiBsb2NrKQogICAgIHJldHVybiBMb2NrZXI8TG9ja1R5
cGU+Ojp0cnlMb2NrKGxvY2spOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBMb2NrVHlwZT4KK2Ns
YXNzIERyb3BMb2NrRm9yU2NvcGUgOiBwcml2YXRlIEFic3RyYWN0TG9ja2VyIHsKKyAgICBXVEZf
Rk9SQklEX0hFQVBfQUxMT0NBVElPTihEcm9wTG9ja0ZvclNjb3BlKTsKK3B1YmxpYzoKKyAgICBE
cm9wTG9ja0ZvclNjb3BlKExvY2tlcjxMb2NrVHlwZT4mIGxvY2spCisgICAgICAgIDogbV9sb2Nr
KGxvY2spCisgICAgeworICAgICAgICBtX2xvY2sudW5sb2NrKCk7CisgICAgfQorCisgICAgfkRy
b3BMb2NrRm9yU2NvcGUoKQorICAgIHsKKyAgICAgICAgbV9sb2NrLmxvY2soKTsKKyAgICB9CisK
K3ByaXZhdGU6CisgICAgTG9ja2VyPExvY2tUeXBlPiYgbV9sb2NrOworfTsKKwogfQogCiB1c2lu
ZyBXVEY6OkFic3RyYWN0TG9ja2VyOwpAQCAtMTU5LDMgKzE4Nyw0IEBAIHVzaW5nIFdURjo6Tm9M
b2NraW5nTmVjZXNzYXJ5VGFnOwogdXNpbmcgV1RGOjpOb0xvY2tpbmdOZWNlc3Nhcnk7CiB1c2lu
ZyBXVEY6OmhvbGRMb2NrOwogdXNpbmcgV1RGOjpob2xkTG9ja0lmOwordXNpbmcgV1RGOjpEcm9w
TG9ja0ZvclNjb3BlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
QmFzZS5jcHAKaW5kZXggZjkzZTNmZDMxYzY1ZTRiMmU1MjI3NDU3OTg3M2FhYTFkYzRmNzE2Yy4u
NWM2YzVkMGEzNjAwOTkyNWFhZjZjOGM2ZTA1OTAxMTZlYTFhMGE1OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCkBAIC0zNSw2ICszNSw3IEBA
CiAjaW5jbHVkZSAiSlNET01CaW5kaW5nU2VjdXJpdHkuaCIKICNpbmNsdWRlICJKU0RPTUdsb2Jh
bE9iamVjdFRhc2suaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvd0N1c3RvbS5oIgorI2luY2x1ZGUg
IkpTRG9jdW1lbnQuaCIKICNpbmNsdWRlICJKU0ZldGNoUmVzcG9uc2UuaCIKICNpbmNsdWRlICJK
U01pY3JvdGFza0NhbGxiYWNrLmgiCiAjaW5jbHVkZSAiSlNOb2RlLmgiCkBAIC04MCw2ICs4MSw4
IEBAIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTRE9NV2luZG93QmFzZTo6c19nbG9i
YWxPYmplY3RNZXRob2RUYWJsZSA9IHsKICAgICAmbW9kdWxlTG9hZGVyRXZhbHVhdGUsCiAgICAg
JnByb21pc2VSZWplY3Rpb25UcmFja2VyLAogICAgICZyZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0
RXZlbnRMb29wLAorICAgICZjdXJyZW50U2NyaXB0RXhlY3V0aW9uT3duZXIsCisgICAgJnNjcmlw
dEV4ZWN1dGlvblN0YXR1cywKICAgICAmZGVmYXVsdExhbmd1YWdlLAogI2lmIEVOQUJMRShXRUJB
U1NFTUJMWSkKICAgICAmY29tcGlsZVN0cmVhbWluZywKQEAgLTIzMSw2ICsyMzQsMTkgQEAgdm9p
ZCBKU0RPTVdpbmRvd0Jhc2U6OnF1ZXVlTWljcm90YXNrVG9FdmVudExvb3AoSlNHbG9iYWxPYmpl
Y3QmIG9iamVjdCwgUmVmPEpTQzoKICAgICB9KTsKIH0KIAorSlNDOjpKU09iamVjdCogSlNET01X
aW5kb3dCYXNlOjpjdXJyZW50U2NyaXB0RXhlY3V0aW9uT3duZXIoSlNHbG9iYWxPYmplY3QqIG9i
amVjdCkKK3sKKyAgICBKU0RPTVdpbmRvd0Jhc2UqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxK
U0RPTVdpbmRvd0Jhc2UqPihvYmplY3QpOworCisgICAgcmV0dXJuIGpzQ2FzdDxKU09iamVjdCo+
KHRvSlModGhpc09iamVjdCwgdGhpc09iamVjdCwgdGhpc09iamVjdC0+d3JhcHBlZCgpLmRvY3Vt
ZW50KCkpKTsKK30KKworSlNDOjpTY3JpcHRFeGVjdXRpb25TdGF0dXMgSlNET01XaW5kb3dCYXNl
OjpzY3JpcHRFeGVjdXRpb25TdGF0dXMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6SlNPYmpl
Y3QqIG93bmVyKQoreworICAgIGF1dG8qIGRvY3VtZW50ID0ganNDYXN0PEpTRG9jdW1lbnQqPihv
d25lcik7CisgICAgcmV0dXJuIGRvY3VtZW50LT53cmFwcGVkKCkuanNjU2NyaXB0RXhlY3V0aW9u
U3RhdHVzKCk7Cit9CisKIHZvaWQgSlNET01XaW5kb3dCYXNlOjp3aWxsUmVtb3ZlRnJvbVdpbmRv
d1Byb3h5KCkKIHsKICAgICBzZXRDdXJyZW50RXZlbnQoMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5oCmluZGV4IGVjNmRkYzE3MDIxMDhlOTljZjk5ZGMz
NjMzNWUyNWUwMDY0NWQ4NWEuLjEwNTAzZmUzOWM4OWRlNjMxOGUzZjcyODdiYWM0NWQ3Nzk1MjJj
ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFz
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5oCkBA
IC03OCw2ICs3OCw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcnJ1cHRT
Y3JpcHRCZWZvcmVUaW1lb3V0KGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICBzdGF0
aWMgSlNDOjpSdW50aW1lRmxhZ3MgamF2YVNjcmlwdFJ1bnRpbWVGbGFncyhjb25zdCBKU0M6OkpT
R2xvYmFsT2JqZWN0Kik7CiAgICAgc3RhdGljIHZvaWQgcXVldWVNaWNyb3Rhc2tUb0V2ZW50TG9v
cChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgUmVmPEpTQzo6TWljcm90YXNrPiYmKTsKKyAgICBzdGF0
aWMgSlNDOjpKU09iamVjdCogY3VycmVudFNjcmlwdEV4ZWN1dGlvbk93bmVyKEpTQzo6SlNHbG9i
YWxPYmplY3QqKTsKKyAgICBzdGF0aWMgSlNDOjpTY3JpcHRFeGVjdXRpb25TdGF0dXMgc2NyaXB0
RXhlY3V0aW9uU3RhdHVzKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkpTT2JqZWN0Kik7CiAK
ICAgICB2b2lkIHByaW50RXJyb3JNZXNzYWdlKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXJDYWNoZS5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyQ2FjaGUuaAppbmRleCBhYzY5
N2FmZDcyYWU5Mjc0Y2E0MmU3MjIwNThlNGRkYThhNzkyZjBlLi5hZWYxMmJkMjMwMjVlNzBmOWNk
NzMwMWU2OWY4ZmM5ZjIyMTU5ZjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdyYXBwZXJDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NV3JhcHBlckNhY2hlLmgKQEAgLTU4LDYgKzU4LDggQEAgYm9vbCBjbGVhcklubGluZUNh
Y2hlZFdyYXBwZXIoRE9NV3JhcHBlcldvcmxkJiwgdm9pZCosIEpTRE9NT2JqZWN0Kik7CiBib29s
IGNsZWFySW5saW5lQ2FjaGVkV3JhcHBlcihET01XcmFwcGVyV29ybGQmLCBTY3JpcHRXcmFwcGFi
bGUqLCBKU0RPTU9iamVjdCogd3JhcHBlcik7CiBib29sIGNsZWFySW5saW5lQ2FjaGVkV3JhcHBl
cihET01XcmFwcGVyV29ybGQmLCBKU0M6OkFycmF5QnVmZmVyKiwgSlNDOjpKU0FycmF5QnVmZmVy
KiB3cmFwcGVyKTsKIAordGVtcGxhdGU8dHlwZW5hbWUgRE9NQ2xhc3M+IEpTQzo6SlNPYmplY3Qq
IGdldE9yQ3JlYXRlV3JhcHBlcihET01XcmFwcGVyV29ybGQmLCBET01DbGFzcyYpOworCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBET01DbGFzcz4gSlNDOjpKU09iamVjdCogZ2V0Q2FjaGVkV3JhcHBlcihE
T01XcmFwcGVyV29ybGQmLCBET01DbGFzcyYpOwogdGVtcGxhdGU8dHlwZW5hbWUgRE9NQ2xhc3M+
IGlubGluZSBKU0M6OkpTT2JqZWN0KiBnZXRDYWNoZWRXcmFwcGVyKERPTVdyYXBwZXJXb3JsZCYg
d29ybGQsIFJlZjxET01DbGFzcz4mIG9iamVjdCkgeyByZXR1cm4gZ2V0Q2FjaGVkV3JhcHBlcih3
b3JsZCwgb2JqZWN0LmdldCgpKTsgfQogdGVtcGxhdGU8dHlwZW5hbWUgRE9NQ2xhc3MsIHR5cGVu
YW1lIFdyYXBwZXJDbGFzcz4gdm9pZCBjYWNoZVdyYXBwZXIoRE9NV3JhcHBlcldvcmxkJiwgRE9N
Q2xhc3MqLCBXcmFwcGVyQ2xhc3MqKTsKQEAgLTY1LDYgKzY3LDcgQEAgdGVtcGxhdGU8dHlwZW5h
bWUgRE9NQ2xhc3MsIHR5cGVuYW1lIFdyYXBwZXJDbGFzcz4gdm9pZCB1bmNhY2hlV3JhcHBlcihE
T01XcmFwcGUKIHRlbXBsYXRlPHR5cGVuYW1lIERPTUNsYXNzLCB0eXBlbmFtZSBUPiBhdXRvIGNy
ZWF0ZVdyYXBwZXIoSlNET01HbG9iYWxPYmplY3QqLCBSZWY8VD4mJikgLT4gdHlwZW5hbWUgc3Rk
OjplbmFibGVfaWY8c3RkOjppc19zYW1lPERPTUNsYXNzLCBUPjo6dmFsdWUsIHR5cGVuYW1lIEpT
RE9NV3JhcHBlckNvbnZlcnRlclRyYWl0czxET01DbGFzcz46OldyYXBwZXJDbGFzcyo+Ojp0eXBl
OwogdGVtcGxhdGU8dHlwZW5hbWUgRE9NQ2xhc3MsIHR5cGVuYW1lIFQ+IGF1dG8gY3JlYXRlV3Jh
cHBlcihKU0RPTUdsb2JhbE9iamVjdCosIFJlZjxUPiYmKSAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJs
ZV9pZjwhc3RkOjppc19zYW1lPERPTUNsYXNzLCBUPjo6dmFsdWUsIHR5cGVuYW1lIEpTRE9NV3Jh
cHBlckNvbnZlcnRlclRyYWl0czxET01DbGFzcz46OldyYXBwZXJDbGFzcyo+Ojp0eXBlOwogCit0
ZW1wbGF0ZTx0eXBlbmFtZSBET01DbGFzcz4gSlNDOjpKU1ZhbHVlIHdyYXAoSlNDOjpKU0dsb2Jh
bE9iamVjdCosIERPTVdyYXBwZXJXb3JsZCYsIERPTUNsYXNzJik7CiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBET01DbGFzcz4gSlNDOjpKU1ZhbHVlIHdyYXAoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9N
R2xvYmFsT2JqZWN0KiwgRE9NQ2xhc3MmKTsKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1JlbW90ZURPTVdpbmRvd0Jhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNSZW1vdGVET01XaW5kb3dCYXNlLmNwcAppbmRleCBkY2U3MzgyMGJiYmZk
OWI5NWM1ODc5ZDEzZWY2NWVhYjk4YTkwNDE4Li41Y2VjOGQxMmVhNDE2NzY5ZGIyODQxNTI4YWJi
MDQ2ODU1ZDM0MjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1Jl
bW90ZURPTVdpbmRvd0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
UmVtb3RlRE9NV2luZG93QmFzZS5jcHAKQEAgLTQ4LDYgKzQ4LDggQEAgY29uc3QgR2xvYmFsT2Jq
ZWN0TWV0aG9kVGFibGUgSlNSZW1vdGVET01XaW5kb3dCYXNlOjpzX2dsb2JhbE9iamVjdE1ldGhv
ZFRhYmxlID0KICAgICBudWxscHRyLCAvLyBtb2R1bGVMb2FkZXJFdmFsdWF0ZQogICAgIG51bGxw
dHIsIC8vIHByb21pc2VSZWplY3Rpb25UcmFja2VyCiAgICAgbnVsbHB0ciwgLy8gcmVwb3J0VW5j
YXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcAorICAgICZjdXJyZW50U2NyaXB0RXhlY3V0aW9uT3du
ZXIsCisgICAgJnNjcmlwdEV4ZWN1dGlvblN0YXR1cywKICAgICBudWxscHRyLCAvLyBkZWZhdWx0
TGFuZ3VhZ2UKICAgICBudWxscHRyLCAvLyBjb21waWxlU3RyZWFtaW5nCiAgICAgbnVsbHB0ciwg
Ly8gaW5zdGFudGlhdGVTdHJlYW1pbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcAppbmRleCBjNDRmMmZiM2EwYjA1ZGFh
YjFhOGE5ZTJmODliNTJkODUxZWI0MzY4Li43ZTQ4OTZkYWE2MjgwMDFmODQzZGRjYWNhMmQ1ZWEw
MzMxM2JiZDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtl
ckdsb2JhbFNjb3BlQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNX
b3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCkBAIC02Niw2ICs2Niw4IEBAIGNvbnN0IEdsb2JhbE9i
amVjdE1ldGhvZFRhYmxlIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjpzX2dsb2JhbE9iamVjdE1l
dGhvZFRhYmxlCiAgICAgbnVsbHB0ciwgLy8gbW9kdWxlTG9hZGVyRXZhbHVhdGUKICAgICAmcHJv
bWlzZVJlamVjdGlvblRyYWNrZXIsCiAgICAgJnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVu
dExvb3AsCisgICAgJmN1cnJlbnRTY3JpcHRFeGVjdXRpb25Pd25lciwKKyAgICAmc2NyaXB0RXhl
Y3V0aW9uU3RhdHVzLAogICAgICZkZWZhdWx0TGFuZ3VhZ2UsCiAgICAgbnVsbHB0ciwgLy8gY29t
cGlsZVN0cmVhbWluZwogICAgIG51bGxwdHIsIC8vIGluc3RhbnRpYXRlU3RyZWFtaW5nCkBAIC0x
MzEsNiArMTMzLDEzIEBAIFJ1bnRpbWVGbGFncyBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6amF2
YVNjcmlwdFJ1bnRpbWVGbGFncyhjb25zdCBKU0dsb2JhbE9iamVjCiAgICAgcmV0dXJuIHRoaXNP
YmplY3QtPm1fd3JhcHBlZC0+dGhyZWFkKCkucnVudGltZUZsYWdzKCk7CiB9CiAKK0pTQzo6U2Ny
aXB0RXhlY3V0aW9uU3RhdHVzIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjpzY3JpcHRFeGVjdXRp
b25TdGF0dXMoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTT2JqZWN0
KiBvd25lcikKK3sKKyAgICBBU1NFUlRfVU5VU0VEKG93bmVyLCBnbG9iYWxPYmplY3QgPT0gb3du
ZXIpOworICAgIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpT
V29ya2VyR2xvYmFsU2NvcGVCYXNlKj4oZ2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4gdGhpc09i
amVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5qc2NTY3JpcHRFeGVjdXRpb25TdGF0dXMo
KTsKK30KKwogdm9pZCBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6cXVldWVNaWNyb3Rhc2tUb0V2
ZW50TG9vcChKU0dsb2JhbE9iamVjdCYgb2JqZWN0LCBSZWY8SlNDOjpNaWNyb3Rhc2s+JiYgdGFz
aykKIHsKICAgICBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZSYgdGhpc09iamVjdCA9IHN0YXRpY19j
YXN0PEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlJj4ob2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5oCmluZGV4IDlmZTEy
OWNkZjYxYzFhMDhiZWE0OGY3MDBkNGVhZGNjNmVhNmZmMjIuLmQ0NDk4NzEyOTQ2YWU1ZjZmMDE4
Nzg2ODRlNDY5OTdiMWZlYzE3YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuaApAQCAtNzMsNiArNzMsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJydXB0U2NyaXB0KGNvbnN0IEpTQzo6SlNHbG9i
YWxPYmplY3QqKTsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcnJ1cHRTY3JpcHRCZWZvcmVU
aW1lb3V0KGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICBzdGF0aWMgSlNDOjpSdW50
aW1lRmxhZ3MgamF2YVNjcmlwdFJ1bnRpbWVGbGFncyhjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0
Kik7CisgICAgc3RhdGljIEpTQzo6U2NyaXB0RXhlY3V0aW9uU3RhdHVzIHNjcmlwdEV4ZWN1dGlv
blN0YXR1cyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpKU09iamVjdCopOwogICAgIHN0YXRp
YyB2b2lkIHF1ZXVlTWljcm90YXNrVG9FdmVudExvb3AoSlNDOjpKU0dsb2JhbE9iamVjdCYsIFJl
ZjxKU0M6Ok1pY3JvdGFzaz4mJik7CiAKICAgICB2b2lkIGNsZWFyRE9NR3VhcmRlZE9iamVjdHMo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2xldEdsb2Jh
bFNjb3BlQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9i
YWxTY29wZUJhc2UuY3BwCmluZGV4IDMyM2RlZTc4ZDhiYmVjOWVjZWUxNTZiOTMzZWFkMDg2MTQx
OTdhOGUuLjYzMTJlNTg5Nzc1NWUxYWY5M2FmNDAxNjE5YjVjNDkzYjljMWM2YjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVC
YXNlLmNwcApAQCAtNTYsNiArNTYsOCBAQCBjb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBK
U1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibAogICAgIG51
bGxwdHIsIC8vIG1vZHVsZUxvYWRlckV2YWx1YXRlCiAgICAgJnByb21pc2VSZWplY3Rpb25UcmFj
a2VyLAogICAgICZyZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wLAorICAgICZjdXJy
ZW50U2NyaXB0RXhlY3V0aW9uT3duZXIsCisgICAgJnNjcmlwdEV4ZWN1dGlvblN0YXR1cywKICAg
ICAmZGVmYXVsdExhbmd1YWdlLAogICAgIG51bGxwdHIsIC8vIGNvbXBpbGVTdHJlYW1pbmcKICAg
ICBudWxscHRyLCAvLyBpbnN0YW50aWF0ZVN0cmVhbWluZwpAQCAtMTAwLDYgKzEwMiwxMyBAQCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogICAgIHJldHVybiBtX3dyYXBwZWQuZ2V0KCk7CiB9CiAK
K0pTQzo6U2NyaXB0RXhlY3V0aW9uU3RhdHVzIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6c2Ny
aXB0RXhlY3V0aW9uU3RhdHVzKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
OjpKU09iamVjdCogb3duZXIpCit7CisgICAgQVNTRVJUX1VOVVNFRChvd25lciwgZ2xvYmFsT2Jq
ZWN0ID09IG93bmVyKTsKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTV29ya2xldEds
b2JhbFNjb3BlQmFzZSo+KGdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+anNjU2NyaXB0RXhlY3V0aW9uU3RhdHVzKCk7Cit9CisK
IGJvb2wgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpzdXBwb3J0c1JpY2hTb3VyY2VJbmZvKGNv
bnN0IEpTR2xvYmFsT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgcmV0dXJuIEpTR2xvYmFsT2JqZWN0
OjpzdXBwb3J0c1JpY2hTb3VyY2VJbmZvKG9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5oCmluZGV4IGI4YTE3ZWM0
ZTdlMmZhY2NiZTg0Njc0Y2EwMTRkMTM1YmU3MDU5ZjMuLjQ0ZTJkZjQyYjZkNWE4MTliZmU2NTZj
N2EwNjkxYTVjYTVjYzM1Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5oCkBAIC02MSw2ICs2MSw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcnJ1cHRTY3JpcHQoY29uc3QgSlNDOjpKU0dsb2Jh
bE9iamVjdCopOwogICAgIHN0YXRpYyBib29sIHNob3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRp
bWVvdXQoY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRpYyBKU0M6OlJ1bnRp
bWVGbGFncyBqYXZhU2NyaXB0UnVudGltZUZsYWdzKGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3Qq
KTsKKyAgICBzdGF0aWMgSlNDOjpTY3JpcHRFeGVjdXRpb25TdGF0dXMgc2NyaXB0RXhlY3V0aW9u
U3RhdHVzKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkpTT2JqZWN0Kik7CiAgICAgc3RhdGlj
IHZvaWQgcXVldWVNaWNyb3Rhc2tUb0V2ZW50TG9vcChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgUmVm
PEpTQzo6TWljcm90YXNrPiYmKTsKIAogICAgIHZvaWQgY2xlYXJET01HdWFyZGVkT2JqZWN0cygp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCmluZGV4
IDc1NzIzYjg0MjFjNGU0ZmVlZDExNjc2Yzk5NTI0ZDhjZTk4Y2E5YTIuLmFkNDUwYmQ2YWY4Nzll
NzI2ZTY5YjhiYmQ3NThhMTI1MGU4MzU3YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKQEAgLTM3LDYgKzM3LDggQEAKICNpbmNsdWRlICJFcnJv
ckV2ZW50LmgiCiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUg
IkpTRE9NV2luZG93LmgiCisjaW5jbHVkZSAiSlNXb3JrZXJHbG9iYWxTY29wZS5oIgorI2luY2x1
ZGUgIkpTV29ya2xldEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiTGVnYWN5U2NoZW1lUmVnaXN0
cnkuaCIKICNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgogI2luY2x1ZGUgIk5hdmlnYXRvci5oIgpA
QCAtNTMsNiArNTUsNyBAQAogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oIgog
I2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJQcm92aWRlci5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgi
CisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgIldvcmtlckdsb2Jh
bFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2VyTmF2aWdhdG9yLmgiCiAjaW5jbHVkZSAiV29ya2Vy
T3JXb3JrbGV0R2xvYmFsU2NvcGUuaCIKQEAgLTYxLDYgKzY0LDcgQEAKICNpbmNsdWRlICJXb3Jr
bGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oIgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NhdGNoU2NvcGUuaD4KKyNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9EZWZlcnJlZFdvcmtUaW1lci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0V4
Y2VwdGlvbi5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTUHJvbWlzZS5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL1NjcmlwdENhbGxTdGFjay5oPgpAQCAtNzMsMTAgKzc3LDkgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogc3RhdGlj
IExvY2sgYWxsU2NyaXB0RXhlY3V0aW9uQ29udGV4dHNNYXBMb2NrOwotc3RhdGljIEhhc2hNYXA8
U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
PiYgYWxsU2NyaXB0RXhlY3V0aW9uQ29udGV4dHNNYXAoKQorc3RhdGljIEhhc2hNYXA8U2NyaXB0
RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqPiYgYWxs
U2NyaXB0RXhlY3V0aW9uQ29udGV4dHNNYXAoY29uc3QgTG9ja2VyPExvY2s+JikKIHsKICAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRp
ZmllciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCo+PiBjb250ZXh0czsKLSAgICBBU1NFUlQoYWxs
U2NyaXB0RXhlY3V0aW9uQ29udGV4dHNNYXBMb2NrLmlzTG9ja2VkKCkpOwogICAgIHJldHVybiBj
b250ZXh0czsKIH0KIApAQCAtMTEwLDggKzExMyw4IEBAIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJ
ZGVudGlmaWVyIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNvbnRleHRJZGVudGlmaWVyKCkgY29u
CiAKICAgICAgICAgbV9jb250ZXh0SWRlbnRpZmllciA9IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJ
ZGVudGlmaWVyOjpnZW5lcmF0ZSgpOwogCi0gICAgICAgIEFTU0VSVCghYWxsU2NyaXB0RXhlY3V0
aW9uQ29udGV4dHNNYXAoKS5jb250YWlucyhtX2NvbnRleHRJZGVudGlmaWVyKSk7Ci0gICAgICAg
IGFsbFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRzTWFwKCkuYWRkKG1fY29udGV4dElkZW50aWZpZXIs
IGNvbnN0X2Nhc3Q8U2NyaXB0RXhlY3V0aW9uQ29udGV4dCo+KHRoaXMpKTsKKyAgICAgICAgQVNT
RVJUKCFhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcChsb2NrZXIpLmNvbnRhaW5zKG1fY29u
dGV4dElkZW50aWZpZXIpKTsKKyAgICAgICAgYWxsU2NyaXB0RXhlY3V0aW9uQ29udGV4dHNNYXAo
bG9ja2VyKS5hZGQobV9jb250ZXh0SWRlbnRpZmllciwgY29uc3RfY2FzdDxTY3JpcHRFeGVjdXRp
b25Db250ZXh0Kj4odGhpcykpOwogICAgIH0KICAgICByZXR1cm4gbV9jb250ZXh0SWRlbnRpZmll
cjsKIH0KQEAgLTEyMCw4ICsxMjMsOCBAQCB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnJl
bW92ZUZyb21Db250ZXh0c01hcCgpCiB7CiAgICAgaWYgKG1fY29udGV4dElkZW50aWZpZXIpIHsK
ICAgICAgICAgTG9ja2VyPExvY2s+IGxvY2tlcihhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01h
cExvY2spOwotICAgICAgICBBU1NFUlQoYWxsU2NyaXB0RXhlY3V0aW9uQ29udGV4dHNNYXAoKS5j
b250YWlucyhtX2NvbnRleHRJZGVudGlmaWVyKSk7Ci0gICAgICAgIGFsbFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRzTWFwKCkucmVtb3ZlKG1fY29udGV4dElkZW50aWZpZXIpOworICAgICAgICBBU1NF
UlQoYWxsU2NyaXB0RXhlY3V0aW9uQ29udGV4dHNNYXAobG9ja2VyKS5jb250YWlucyhtX2NvbnRl
eHRJZGVudGlmaWVyKSk7CisgICAgICAgIGFsbFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRzTWFwKGxv
Y2tlcikucmVtb3ZlKG1fY29udGV4dElkZW50aWZpZXIpOwogICAgIH0KIH0KIApAQCAtMTU2LDcg
KzE1OSw3IEBAIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6On5TY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkKICNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGlmIChtX2NvbnRleHRJZGVudGlmaWVyKSB7CiAg
ICAgICAgIExvY2tlcjxMb2NrPiBsb2NrZXIoYWxsU2NyaXB0RXhlY3V0aW9uQ29udGV4dHNNYXBM
b2NrKTsKLSAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghYWxsU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dHNNYXAoKS5jb250YWlucyhtX2NvbnRleHRJZGVudGlmaWVyKSwKKyAgICAgICAgQVNTRVJU
X1dJVEhfTUVTU0FHRSghYWxsU2NyaXB0RXhlY3V0aW9uQ29udGV4dHNNYXAobG9ja2VyKS5jb250
YWlucyhtX2NvbnRleHRJZGVudGlmaWVyKSwKICAgICAgICAgICAgICJBIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQgc3ViY2xhc3MgaW5zdGFuY2UgaW1wbGVtZW50aW5nIHBvc3RUYXNrIHNob3VsZCBo
YXZlIGFscmVhZHkgcmVtb3ZlZCBpdHNlbGYgZnJvbSB0aGUgbWFwIik7CiAgICAgfQogCkBAIC0y
NTAsNiArMjUzLDE1IEBAIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6Zm9yRWFjaEFjdGl2
ZURPTU9iamVjdChjb25zdCBGdW5jdGlvbjxTaG91bGRDb250aW51CiAgICAgfQogfQogCitKU0M6
OlNjcmlwdEV4ZWN1dGlvblN0YXR1cyBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpqc2NTY3JpcHRF
eGVjdXRpb25TdGF0dXMoKSBjb25zdAoreworICAgIGlmIChhY3RpdmVET01PYmplY3RzQXJlU3Vz
cGVuZGVkKCkpCisgICAgICAgIHJldHVybiBKU0M6OlNjcmlwdEV4ZWN1dGlvblN0YXR1czo6U3Vz
cGVuZGVkOworICAgIGlmIChhY3RpdmVET01PYmplY3RzQXJlU3RvcHBlZCgpKQorICAgICAgICBy
ZXR1cm4gSlNDOjpTY3JpcHRFeGVjdXRpb25TdGF0dXM6OlN0b3BwZWQ7CisgICAgcmV0dXJuIEpT
Qzo6U2NyaXB0RXhlY3V0aW9uU3RhdHVzOjpSdW5uaW5nOworfQorCiB2b2lkIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OnN1c3BlbmRBY3RpdmVET01PYmplY3RzKFJlYXNvbkZvclN1c3BlbnNpb24g
d2h5KQogewogICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKQEAgLTI4NCw2ICsyOTYsOCBAQCB2b2lk
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnJlc3VtZUFjdGl2ZURPTU9iamVjdHMoUmVhc29uRm9y
U3VzcGVuc2lvbiB3aHkpCiAgICAgICAgIHJldHVybiBTaG91bGRDb250aW51ZTo6WWVzOwogICAg
IH0pOwogCisgICAgdm0oKS5kZWZlcnJlZFdvcmtUaW1lci0+ZGlkUmVzdW1lU2NyaXB0RXhlY3V0
aW9uT3duZXIoKTsKKwogICAgIG1fYWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCA9IGZhbHNl
OwogCiAgICAgLy8gSW4gY2FzZSB0aGVyZSB3ZXJlIHBlbmRpbmcgbWVzc2FnZXMgYXQgdGhlIHRp
bWUgdGhlIHNjcmlwdCBleGVjdXRpb24gY29udGV4dCBlbnRlcmVkIHRoZSBCYWNrRm9yd2FyZENh
Y2hlLApAQCAtNjAxLDcgKzYxNSw3IEBAIFNlcnZpY2VXb3JrZXJDb250YWluZXIqIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OmVuc3VyZVNlcnZpY2VXb3JrZXJDb250YWluZXIoKQogYm9vbCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0Ojpwb3N0VGFza1RvKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIFRhc2smJiB0YXNrKQogewogICAgIExvY2tlcjxMb2NrPiBsb2Nr
ZXIoYWxsU2NyaXB0RXhlY3V0aW9uQ29udGV4dHNNYXBMb2NrKTsKLSAgICBhdXRvKiBjb250ZXh0
ID0gYWxsU2NyaXB0RXhlY3V0aW9uQ29udGV4dHNNYXAoKS5nZXQoaWRlbnRpZmllcik7CisgICAg
YXV0byogY29udGV4dCA9IGFsbFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRzTWFwKGxvY2tlcikuZ2V0
KGlkZW50aWZpZXIpOwogCiAgICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm4gZmFsc2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAppbmRleCAyNWFh
YjQ0NjBmZjk3YTE4ZWQwYmYxM2FmYTllNDJkZjA4MjFjMjdlLi41ZTkwZjQxYjJmZGJmOWZlZTdm
YjQwMzRiZmQwYzExODBiZWJmOGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVj
dXRpb25Db250ZXh0LmgKQEAgLTQ0LDYgKzQ0LDcgQEAgY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3Mg
RXhjZXB0aW9uOwogY2xhc3MgSlNQcm9taXNlOwogY2xhc3MgVk07CitlbnVtIGNsYXNzIFNjcmlw
dEV4ZWN1dGlvblN0YXR1czsKIH0KIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CkBAIC0xMzYsNiAr
MTM3LDggQEAgcHVibGljOgogICAgIGJvb2wgYWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZDsgfQogICAgIGJv
b2wgYWN0aXZlRE9NT2JqZWN0c0FyZVN0b3BwZWQoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2ZURP
TU9iamVjdHNBcmVTdG9wcGVkOyB9CiAKKyAgICBKU0M6OlNjcmlwdEV4ZWN1dGlvblN0YXR1cyBq
c2NTY3JpcHRFeGVjdXRpb25TdGF0dXMoKSBjb25zdDsKKwogICAgIC8vIENhbGxlZCBmcm9tIHRo
ZSBjb25zdHJ1Y3RvciBhbmQgZGVzdHJ1Y3RvcnMgb2YgQWN0aXZlRE9NT2JqZWN0LgogICAgIHZv
aWQgZGlkQ3JlYXRlQWN0aXZlRE9NT2JqZWN0KEFjdGl2ZURPTU9iamVjdCYpOwogICAgIHZvaWQg
d2lsbERlc3Ryb3lBY3RpdmVET01PYmplY3QoQWN0aXZlRE9NT2JqZWN0Jik7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNzll
ODhlZjk1YTg3MzI3YWUzNDU1NzFjMjgzYTczZjE2OWZhYmQ3Yi4uMzg2MDBjNWE2OGFjZTljNTJi
ZGRjYzIwZTIwOGZhMWY1M2UxNWYyYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIwLTEwLTA4
ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgorCisgICAgICAgIEZpbmFs
aXplcnMgc2hvdWxkbid0IHJ1biBpZiBldmVudHMgY2FuJ3QgZmlyZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0NTA4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRlc3RzIHRoYXQgY2hlY2sgd2Ug
ZG9uJ3QgcnVuIGFueSB0YXNrcyBmcm9tIEpTQydzIGV2ZW50IGxvb3Agd2hpbGUgY29udGV4dHMK
KyAgICAgICAgYXJlIHN1c3BlbmRlZC9zdG9wcGVkLiBBbHNvIHNraXAgdGhlIFdBU00gdGVzdHMg
b24gV2luIGJlY2F1c2UgV0FTTSBkb2Vzbid0IHdvcmsKKyAgICAgICAgdGhlcmUuCisKKyAgICAg
ICAgKiBmYXN0L2ZyYW1lcy9kZXRhY2hlZC1mcmFtZS13YXNtLXJlc29sdmUtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9kZXRhY2hlZC1mcmFtZS13YXNtLXJlc29s
dmUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9oaXN0b3J5L3BhZ2UtY2FjaGUtYWN0aXZl
LWZpbmFsaXphdGlvbi1yZWdpc3RyeS1jYWxsYmFjay1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvaGlzdG9yeS9wYWdlLWNhY2hlLWFjdGl2ZS1maW5hbGl6YXRpb24tcmVnaXN0
cnktY2FsbGJhY2suaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9oaXN0b3J5L3BhZ2UtY2Fj
aGUtd2FzbS1wcm9taXNlLXJlc29sdmUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2hpc3RvcnkvcGFnZS1jYWNoZS13YXNtLXByb21pc2UtcmVzb2x2ZS5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9uczoKKwogMjAyMC0xMC0wOCAg
WmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0ludGVncmF0
aW9uXSBFbmFibGUgZmxvYXQgY2xlYXIgZm9yIDxicj4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZnJhbWVzL2RldGFjaGVkLWZyYW1lLXdhc20tcmVzb2x2ZS1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9kZXRhY2hlZC1mcmFtZS13YXNtLXJlc29sdmUtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjU1OTZiNmRkMzVmNjEyM2RiODliZjdjNGNjZTU0Yjk4NDRkNzFk
YzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9kZXRhY2hlZC1m
cmFtZS13YXNtLXJlc29sdmUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK0NoZWNrcyBX
QVNNIGNvbXBpbGF0aW9uIHByb21pc2VzIGRvIG5vdCByZXNvbHZlIG9uIGRldGFjaGVkIGZyYW1l
cy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgV0FTTSBwcm9taXNlIHdh
cyByZXNvbHZlZCBvbiB0aGUgbWFpbiBmcmFtZQorUEFTUyBXQVNNIHByb21pc2UgZGlkIG5vdCBh
cHBlYXIgdG8gYmUgcmVzb2x2ZWQgYWZ0ZXIgc3ViZnJhbWUgd2FzIGRldGFjaGVkCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvZGV0YWNoZWQtZnJhbWUtd2FzbS1yZXNvbHZlLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9kZXRhY2hlZC1mcmFtZS13YXNtLXJlc29sdmUuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jNGFiYjFiMGQ5OGY0ZmJiOGVlZjMxODcwMzVlYmE0MjQxOTA4MWM4Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvZGV0YWNoZWQtZnJhbWUt
d2FzbS1yZXNvbHZlLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiQ2hl
Y2tzIFdBU00gY29tcGlsYXRpb24gcHJvbWlzZXMgZG8gbm90IHJlc29sdmUgb24gZGV0YWNoZWQg
ZnJhbWVzLiIpOword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCitvbmxvYWQgPSBmdW5j
dGlvbigpCit7CisgICAgdmFyIGRldGFjaGVkV2luZG93ID0gZnJhbWVzWzBdOworCisgICAgLy8g
UmFuZG9tIHdhc20gbW9kdWxlIHRoYXQgY29tcGlsZXMuIFN0b2xlbiBmcm9tIEpTVGVzdHMvd2Fz
bS9zdHJlc3MvdGVybWluYWwtanVtcC1zd2l0Y2gtdGFyZ2V0LmpzCisgICAgbGV0IHByb21pc2Ug
PSBkZXRhY2hlZFdpbmRvdy5XZWJBc3NlbWJseS5jb21waWxlKG5ldyBVaW50OEFycmF5KFsgMCw5
NywxMTUsMTA5LDEsMCwwLDAsMSwxMzYsMTI4LDEyOCwxMjgsMCwyLDk2LDAsMCw5NiwwLDEsMTI0
LDMsMTMxLDEyOCwxMjgsMTI4LDAsMiwwLDEsNywxMzgsMTI4LDEyOCwxMjgsMCwxLDYsMTE0LDEx
NywxMTAsMTAyLDU0LDUyLDAsMSwxMCwxNjUsMTI4LDEyOCwxMjgsMCwyLDEzMCwxMjgsMTI4LDEy
OCwwLDAsMTEsMTUyLDEyOCwxMjgsMTI4LDAsMCwzLDEyNCw2OCwwLDAsMCwwLDAsMCwwLDAsNjUs
MCwxNCwwLDEsMTYsMCwxMSwxMiwwLDAsMTEgXSkpOworICAgIHZhciBzdWJGcmFtZUNhbGxlZCA9
IGZhbHNlOworICAgIHByb21pc2UudGhlbigoKSA9PiBzdWJGcmFtZUNhbGxlZCA9IHRydWUpOwor
CisgICAgcHJvbWlzZSA9IFdlYkFzc2VtYmx5LmNvbXBpbGUobmV3IFVpbnQ4QXJyYXkoWyAwLDk3
LDExNSwxMDksMSwwLDAsMCwxLDEzNiwxMjgsMTI4LDEyOCwwLDIsOTYsMCwwLDk2LDAsMSwxMjQs
MywxMzEsMTI4LDEyOCwxMjgsMCwyLDAsMSw3LDEzOCwxMjgsMTI4LDEyOCwwLDEsNiwxMTQsMTE3
LDExMCwxMDIsNTQsNTIsMCwxLDEwLDE2NSwxMjgsMTI4LDEyOCwwLDIsMTMwLDEyOCwxMjgsMTI4
LDAsMCwxMSwxNTIsMTI4LDEyOCwxMjgsMCwwLDMsMTI0LDY4LDAsMCwwLDAsMCwwLDAsMCw2NSww
LDE0LDAsMSwxNiwwLDExLDEyLDAsMCwxMSBdKSk7CisgICAgcHJvbWlzZS50aGVuKCgpID0+IHsK
KyAgICAgICAgdGVzdFBhc3NlZCgiV0FTTSBwcm9taXNlIHdhcyByZXNvbHZlZCBvbiB0aGUgbWFp
biBmcmFtZSIpOworICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAgICAgIGlmIChz
dWJGcmFtZUNhbGxlZCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJXQVNNIHByb21pc2Ug
c2hvdWxkIG5vdCBiZSByZXNvbHZlZCBpZiB0aGUgc3ViZnJhbWUgaXMgZGV0YWNoZWQiKTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJXQVNNIHByb21pc2Ug
ZGlkIG5vdCBhcHBlYXIgdG8gYmUgcmVzb2x2ZWQgYWZ0ZXIgc3ViZnJhbWUgd2FzIGRldGFjaGVk
Iik7CisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgLy8gQWRkIHNtYWxsIHRp
bWVvdXQgdG8gYmUgc2FmZS4KKyAgICAgICAgfSwgMTAwKTsKKyAgICB9KTsKKworICAgIGRvY3Vt
ZW50LmJvZHkucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlmcmFt
ZSIpWzBdKTsKK30KKzwvc2NyaXB0PgorPGlmcmFtZSBzcmM9ImFib3V0OmJsYW5rIj48L2lmcmFt
ZT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9wYWdlLWNhY2hlLWFjdGl2
ZS1maW5hbGl6YXRpb24tcmVnaXN0cnktY2FsbGJhY2stZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9oaXN0b3J5L3BhZ2UtY2FjaGUtYWN0aXZlLWZpbmFsaXphdGlvbi1yZWdpc3RyeS1j
YWxsYmFjay1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDUwYzMxNTliZjg1NDc0ZWVmMWQ0MTVi
MThiMGVmNGFkOTQzZTllMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaGlz
dG9yeS9wYWdlLWNhY2hlLWFjdGl2ZS1maW5hbGl6YXRpb24tcmVnaXN0cnktY2FsbGJhY2stZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAKK1Rlc3RzIHRoYXQgYSBwYWdlIHdpdGggYSBwZW5k
aW5nIEZpbmFsaXphdGlvblJlZ2lzdHJ5IGNhbGxiYWNrIGlzIGFibGUgdG8gZW50ZXIgdGhlIGJh
Y2svZm9yd2FyZCBjYWNoZSBhbmQgZ2V0cyBzdXNwZW5kZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworCitwYWdlc2hvdyAtIG5vdCBmcm9tIGNhY2hlCitwYWdlaGlkZSAtIGVudGVy
aW5nIGNhY2hlCitGaWxsaW5nIGZpbmFsaXphdGlvbiByZWdpc3RyeQorcGFnZXNob3cgLSBmcm9t
IGNhY2hlCitQQVNTIFBhZ2UgZGlkIGVudGVyIGFuZCB3YXMgcmVzdG9yZWQgZnJvbSB0aGUgYmFj
ay9mb3J3YXJkIGNhY2hlCitQQVNTIENvZGUgZGlkIG5vdCBydW4gd2hpbGUgaW4gdGhlIGJhY2sv
Zm9yd2FyZCBjYWNoZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9wYWdlLWNhY2hl
LWFjdGl2ZS1maW5hbGl6YXRpb24tcmVnaXN0cnktY2FsbGJhY2suaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvaGlzdG9yeS9wYWdlLWNhY2hlLWFjdGl2ZS1maW5hbGl6YXRpb24tcmVnaXN0cnktY2Fs
bGJhY2suaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMjA3YTIxNzY4MGQ3OWZmMWJkODg4NDY1YWM4NDY0ZWIx
OGNhZDMxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3BhZ2Ut
Y2FjaGUtYWN0aXZlLWZpbmFsaXphdGlvbi1yZWdpc3RyeS1jYWxsYmFjay5odG1sCkBAIC0wLDAg
KzEsNjggQEAKKzwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZW5hYmxlQmFja0ZvcndhcmRDYWNo
ZT10cnVlIGpzY09wdGlvbnM9LS11c2VXZWFrUmVmcz10cnVlIF0gLS0+Cis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qu
anMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0cyB0aGF0IGEgcGFnZSB3
aXRoIGEgcGVuZGluZyBGaW5hbGl6YXRpb25SZWdpc3RyeSBjYWxsYmFjayBpcyBhYmxlIHRvIGVu
dGVyIHRoZSBiYWNrL2ZvcndhcmQgY2FjaGUgYW5kIGdldHMgc3VzcGVuZGVkLicpOword2luZG93
LmpzVGVzdElzQXN5bmMgPSB0cnVlOworbGV0IG5vdFN1c3BlbmRlZCA9IHRydWU7CitsZXQgcmVz
dG9yZWRGcm9tQ2FjaGUgPSBmYWxzZTsKKworbGV0IHVucmVnaXN0ZXJUb2tlbiA9IHt9OworbGV0
IGZnID0gbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KCgpID0+IHsKKyAgICBpZiAoIXJlc3RvcmVk
RnJvbUNhY2hlKQorICAgICAgICB0ZXN0RmFpbGVkKCJGaW5hbGl6YXRpb25SZWdpc3RyeSB3YXMg
cnVuIGJlZm9yZSByZXN0b3JpbmcgZnJvbSBjYWNoZSIpOworCisgICAgaWYgKG5vdFN1c3BlbmRl
ZCkKKyAgICAgICAgdGVzdFBhc3NlZCgiQ29kZSBkaWQgbm90IHJ1biB3aGlsZSBpbiB0aGUgYmFj
ay9mb3J3YXJkIGNhY2hlIik7CisgICAgZWxzZQorICAgICAgICB0ZXN0RmFpbGVkKCJUaGlzIGNv
ZGUgc2hvdWxkIG5vdCBiZSBydW5uaW5nIHdoaWxlIHRoZSBwYWdlIGlzIGluIHRoZSBiYWNrL2Zv
cndhcmQiKTsKKworICAgIGZnLnVucmVnaXN0ZXIodW5yZWdpc3RlclRva2VuKTsKKyAgICBmaW5p
c2hKU1Rlc3QoKTsKK30pOworCit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicGFnZXNob3ciLCBm
dW5jdGlvbihldmVudCkgeworICAgIGRlYnVnKCJwYWdlc2hvdyAtICIgKyAoZXZlbnQucGVyc2lz
dGVkID8gIiIgOiAibm90ICIpICsgImZyb20gY2FjaGUiKTsKKworICAgIGlmIChldmVudC5wZXJz
aXN0ZWQpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgiUGFnZSBkaWQgZW50ZXIgYW5kIHdhcyByZXN0
b3JlZCBmcm9tIHRoZSBiYWNrL2ZvcndhcmQgY2FjaGUiKTsKKyAgICAgICAgcmVzdG9yZWRGcm9t
Q2FjaGUgPSB0cnVlOworICAgIH0KKyAgICBub3RTdXNwZW5kZWQgPSB0cnVlOworfSwgZmFsc2Up
OworCit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicGFnZWhpZGUiLCBmdW5jdGlvbihldmVudCkg
eworICAgIGRlYnVnKCJwYWdlaGlkZSAtICIgKyAoZXZlbnQucGVyc2lzdGVkID8gIiIgOiAibm90
ICIpICsgImVudGVyaW5nIGNhY2hlIik7CisgICAgaWYgKCFldmVudC5wZXJzaXN0ZWQpIHsKKyAg
ICAgICAgdGVzdEZhaWxlZCgiUGFnZSBkaWQgbm90IGVudGVyIHRoZSBiYWNrL2ZvcndhcmQgY2Fj
aGUuIik7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0KKyAgICBmaWxsRmluYWxpemF0
aW9uUmVnaXN0cnkoKTsKKyAgICBub3RTdXNwZW5kZWQgPSBmYWxzZTsKK30sIGZhbHNlKTsKKwor
dmFyIHRleHREYXRhID0gSlNPTi5zdHJpbmdpZnkoIlRoaXMgaXMgdGhlIGJvZHkiKTsKKworZnVu
Y3Rpb24gZmlsbEZpbmFsaXphdGlvblJlZ2lzdHJ5KCkKK3sKKyAgICBkZWJ1ZygiRmlsbGluZyBm
aW5hbGl6YXRpb24gcmVnaXN0cnkiKTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7ICsr
aSkKKyAgICAgICAgZmcucmVnaXN0ZXIoeyB9LCB1bmRlZmluZWQsIHVucmVnaXN0ZXJUb2tlbik7
CisKKyAgICBHQ0NvbnRyb2xsZXIuY29sbGVjdCgpOworfQorCit3aW5kb3cuYWRkRXZlbnRMaXN0
ZW5lcignbG9hZCcsIGZ1bmN0aW9uKCkgeworICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAg
ICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICJyZXNvdXJjZXMvcGFnZS1jYWNoZS1oZWxwZXIuaHRt
bCI7CisgICAgfSwgMCk7Cit9LCBmYWxzZSk7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgorCisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3BhZ2UtY2FjaGUt
d2FzbS1wcm9taXNlLXJlc29sdmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9oaXN0
b3J5L3BhZ2UtY2FjaGUtd2FzbS1wcm9taXNlLXJlc29sdmUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjQwYzY5ZDgwMWM2YTNiNzMwODNkY2ViZjVhYzkwZTRlNmE5YzlhZjIKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvcGFnZS1jYWNoZS13YXNtLXByb21pc2Ut
cmVzb2x2ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNSBAQAorVGVzdHMgdGhhdCBhIHBhZ2Ug
d2l0aCBhIHBlbmRpbmcgV0FTTSBtb2R1bGUgcmVzb2x1dGlvbiBpcyBhYmxlIHRvIGVudGVyIHRo
ZSBiYWNrL2ZvcndhcmQgY2FjaGUgYW5kIGdldHMgc3VzcGVuZGVkLgorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKKworcGFnZXNob3cgLSBub3QgZnJvbSBjYWNoZQorcGFnZWhpZGUgLSBl
bnRlcmluZyBjYWNoZQorcGFnZXNob3cgLSBmcm9tIGNhY2hlCitQQVNTIFBhZ2UgZGlkIGVudGVy
IGFuZCB3YXMgcmVzdG9yZWQgZnJvbSB0aGUgYmFjay9mb3J3YXJkIGNhY2hlCitQQVNTIFdBU00g
YmxvYiBjb21waWxlZCBzdWNjZXNzZnVsbHkKK1BBU1MgV0FTTSBkaWQgbm90IHJlc29sdmUgd2hp
bGUgaW4gdGhlIGJhY2svZm9yd2FyZCBjYWNoZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaGlz
dG9yeS9wYWdlLWNhY2hlLXdhc20tcHJvbWlzZS1yZXNvbHZlLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2hpc3RvcnkvcGFnZS1jYWNoZS13YXNtLXByb21pc2UtcmVzb2x2ZS5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjhlZTA0MWM5NDM3MzdjZDBlZjNlYzRhYWYxMTkyNTA0YWEzYzdiNzgKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvcGFnZS1jYWNoZS13YXNtLXByb21pc2Ut
cmVzb2x2ZS5odG1sCkBAIC0wLDAgKzEsNjEgQEAKKzwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsg
ZW5hYmxlQmFja0ZvcndhcmRDYWNoZT10cnVlIGpzY09wdGlvbnM9LS11c2VXZWFrUmVmcz10cnVl
IF0gLS0+Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9u
KCdUZXN0cyB0aGF0IGEgcGFnZSB3aXRoIGEgcGVuZGluZyBXQVNNIG1vZHVsZSByZXNvbHV0aW9u
IGlzIGFibGUgdG8gZW50ZXIgdGhlIGJhY2svZm9yd2FyZCBjYWNoZSBhbmQgZ2V0cyBzdXNwZW5k
ZWQuJyk7Cit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CitsZXQgbm90U3VzcGVuZGVkID0g
dHJ1ZTsKK2xldCByZXN0b3JlZEZyb21DYWNoZSA9IGZhbHNlOworCit3aW5kb3cuYWRkRXZlbnRM
aXN0ZW5lcigicGFnZXNob3ciLCBmdW5jdGlvbihldmVudCkgeworICAgIGRlYnVnKCJwYWdlc2hv
dyAtICIgKyAoZXZlbnQucGVyc2lzdGVkID8gIiIgOiAibm90ICIpICsgImZyb20gY2FjaGUiKTsK
KworICAgIGlmIChldmVudC5wZXJzaXN0ZWQpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgiUGFnZSBk
aWQgZW50ZXIgYW5kIHdhcyByZXN0b3JlZCBmcm9tIHRoZSBiYWNrL2ZvcndhcmQgY2FjaGUiKTsK
KyAgICAgICAgcmVzdG9yZWRGcm9tQ2FjaGUgPSB0cnVlOworICAgIH0KKyAgICBub3RTdXNwZW5k
ZWQgPSB0cnVlOworfSwgZmFsc2UpOworCit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicGFnZWhp
ZGUiLCBhc3luYyBmdW5jdGlvbihldmVudCkgeworICAgIGRlYnVnKCJwYWdlaGlkZSAtICIgKyAo
ZXZlbnQucGVyc2lzdGVkID8gIiIgOiAibm90ICIpICsgImVudGVyaW5nIGNhY2hlIik7CisgICAg
aWYgKCFldmVudC5wZXJzaXN0ZWQpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiUGFnZSBkaWQgbm90
IGVudGVyIHRoZSBiYWNrL2ZvcndhcmQgY2FjaGUuIik7CisgICAgICAgIGZpbmlzaEpTVGVzdCgp
OworICAgIH0KKworICAgIG5vdFN1c3BlbmRlZCA9IGZhbHNlOworICAgIHRyeSB7CisgICAgICAg
IC8vIFJhbmRvbSB3YXNtIG1vZHVsZSB0aGF0IGNvbXBpbGVzLiBTdG9sZW4gZnJvbSBKU1Rlc3Rz
L3dhc20vc3RyZXNzL3Rlcm1pbmFsLWp1bXAtc3dpdGNoLXRhcmdldC5qcworICAgICAgICBhd2Fp
dCBXZWJBc3NlbWJseS5jb21waWxlKG5ldyBVaW50OEFycmF5KFsgMCw5NywxMTUsMTA5LDEsMCww
LDAsMSwxMzYsMTI4LDEyOCwxMjgsMCwyLDk2LDAsMCw5NiwwLDEsMTI0LDMsMTMxLDEyOCwxMjgs
MTI4LDAsMiwwLDEsNywxMzgsMTI4LDEyOCwxMjgsMCwxLDYsMTE0LDExNywxMTAsMTAyLDU0LDUy
LDAsMSwxMCwxNjUsMTI4LDEyOCwxMjgsMCwyLDEzMCwxMjgsMTI4LDEyOCwwLDAsMTEsMTUyLDEy
OCwxMjgsMTI4LDAsMCwzLDEyNCw2OCwwLDAsMCwwLDAsMCwwLDAsNjUsMCwxNCwwLDEsMTYsMCwx
MSwxMiwwLDAsMTEgXSkpOworCisgICAgICAgIHRlc3RQYXNzZWQoIldBU00gYmxvYiBjb21waWxl
ZCBzdWNjZXNzZnVsbHkiKTsKKworICAgICAgICBpZiAoIXJlc3RvcmVkRnJvbUNhY2hlKQorICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiV0FTTSBwcm9taXNlIHdhcyByZXNvbHZlZCBiZWZvcmUgcmVz
dG9yaW5nIGZyb20gY2FjaGUiKTsKKworICAgICAgICBpZiAobm90U3VzcGVuZGVkKQorICAgICAg
ICAgICAgdGVzdFBhc3NlZCgiV0FTTSBkaWQgbm90IHJlc29sdmUgd2hpbGUgaW4gdGhlIGJhY2sv
Zm9yd2FyZCBjYWNoZSIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJX
QVNNIHByb21pc2UgcmVzb2x1dGlvbiBzaG91bGQgbm90IHJ1biB3aGlsZSB0aGUgcGFnZSBpcyBp
biB0aGUgYmFjay9mb3J3YXJkIik7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICB0ZXN0RmFp
bGVkKCJXQVNNIGJsb2IgdGhyZXcgZXhjZXB0aW9uICIgKyBlKTsKKyAgICB9IGZpbmFsbHkgewor
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9Cit9LCBmYWxzZSk7CisKK3dpbmRvdy5hZGRF
dmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24oKSB7CisgICAgc2V0VGltZW91dCgoKSA9PiB7
CisgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gInJlc291cmNlcy9wYWdlLWNhY2hlLWhl
bHBlci5odG1sIjsKKyAgICB9LCAwKTsKK30sIGZhbHNlKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CisKKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVz
dEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25z
CmluZGV4IGZiY2FiODQwMzFhZjU4NzhiMDcxZmYyZTNmN2Q1ZjMyYTY1ZjJkNmUuLjZhNjFjYzUy
ZGEzODI4NTExMTNlYmJhMDU4Nzg3MjZhZmY3MDYyMzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L3dpbi9UZXN0RXhwZWN0YXRpb25zCkBAIC02OTksNiArNjk5LDEwIEBAIGZhc3QvdmlzdWFsLXZp
ZXdwb3J0L3pvb21lZC1maXhlZC1zY3JvbGwtZG93bi10aGVuLXVwLmh0bWwgWyBGYWlsdXJlIF0K
IHdlYmtpdC5vcmcvYi83NzU2OCBmYXN0L3RleHQvbG9jYWxlLXNoYXBpbmcuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzc3NTY4IGZhc3QvdGV4dC9sb2NhbGUtc2hhcGlu
Zy1jb21wbGV4Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAorIyBXZWJBc3NlbWJseSBkb2Vz
bid0IGV4aXN0IG9uIFdpbmRvd3MKK2Zhc3QvZnJhbWVzL2RldGFjaGVkLWZyYW1lLXdhc20tcmVz
b2x2ZS5odG1sIFsgU2tpcCBdCitmYXN0L2hpc3RvcnkvcGFnZS1jYWNoZS1hY3RpdmUtZmluYWxp
emF0aW9uLXJlZ2lzdHJ5LWNhbGxiYWNrLmh0bWwgWyBTa2lwIF0KKwogIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMKICMjIyMjIyMjIyMjICAgIEVuZCBNaXNzaW5nIEZ1bmN0aW9uYWxpdHkgUHJldmVu
dHMgVGVzdGluZyAgICAgICAgICMjIyMjIyMjIyMjIyMjCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
Iwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410947</attachid>
            <date>2020-10-09 10:16:14 -0700</date>
            <delta_ts>2020-10-09 11:11:00 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-214508-20201009101613.patch</filename>
            <type>text/plain</type>
            <size>36975</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4MjA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
NmZhZGY4MWFhNDgwZTg1NjdiM2Q3NzFkY2FjMTZiYWI2ODUwZmMwLi40NGI5MzlkNzQ4MjA1OWM4
YzgxYWZjYmYwNDc0MTllYTFkMWYzNGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MSBAQAorMjAyMC0xMC0wOCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBGaW5hbGl6ZXJzIHNob3VsZG4ndCBydW4gaWYgZXZlbnRzIGNhbid0
IGZpcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
NDUwOAorCisgICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KKworICAgICAgICBUaGlz
IHBhdGNoIG1ha2VzIGl0IHNvIHRoZSBEZWZlcnJlZFdvcmtUaW1lciB3b24ndCBydW4gc2NoZWR1
bGVkCisgICAgICAgIHRhc2tzIGlmIHRob3NlIHdvdWxkIG5vdCBoYXZlIHJ1biBpZiB0aGV5IHdl
cmUgc2NoZWR1bGVkIGluCisgICAgICAgIFdlYkNvcmUuIFRvIGRvIHRoaXMgdGhlcmUgaXMgbm93
IGEgY29uY2VwdCBvZiBhCisgICAgICAgIFNjcmlwdEV4ZWN1dGlvbk93bmVyLiBUaGUgU2NyaXB0
RXhlY3V0aW9uT3duZXIgaXMgYWxtb3N0IGFsd2F5cworICAgICAgICB0aGUgc2FtZSBhcyB0aGUg
Z2xvYmFsIG9iamVjdCBvZiB0aGUgcGVuZGluZyB0YXNrIChyZWZlcnJlZCB0byBhcworICAgICAg
ICB0aGUgdGlja2V0KS4gVGhlIG9ubHkgZXhjZXB0aW9uIHRvIHRoaXMgaXMgaWYgdGhlIGdsb2Jh
bCBvYmplY3QKKyAgICAgICAgaXMgYSBKU0RPTVdpbmRvd0Jhc2UsIHRoZW4gdGhlIFNjcmlwdEV4
ZWN1dGlvbk93bmVyIGlzIHRoZQorICAgICAgICBEb2N1bWVudCdzIEpTIHdyYXBwZXIuIFRvIHRl
bGwgdGhlIHN0YXR1cyBvZiBhCisgICAgICAgIFNjcmlwdEV4ZWN1dGlvbk93bmVyLCB0aGUgRGVm
ZXJyZWRXb3JrVGltZXIgY2FsbHMgYSB2aXJ0dWFsCisgICAgICAgIGZ1bmN0aW9uIG9uIHRoZSBn
bG9iYWwgb2JqZWN0IG9mIHRoZSB0aWNrZXQsIGZvciBKU0Mtb25seSB0aGlzCisgICAgICAgIGp1
c3QgYWx3YXlzIHJldHVybnMgUnVubmluZy4gRm9yIFdlYkNvcmUsIHdlIGFzayB0aGUKKyAgICAg
ICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCBhc3NvY2lhdGVkIHdpdGggdGhlIFNjcmlwdEV4ZWN1
dGlvbk93bmVyLgorCisgICAgICAgICogQVBJL0pTQVBJR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAg
ICAgKiBBUEkvSlNBUElHbG9iYWxPYmplY3QubW06CisgICAgICAgICoganNjLmNwcDoKKyAgICAg
ICAgKiBydW50aW1lL0RlZmVycmVkV29ya1RpbWVyLmNwcDoKKyAgICAgICAgKEpTQzo6RGVmZXJy
ZWRXb3JrVGltZXI6OmRvV29yayk6CisgICAgICAgIChKU0M6OkRlZmVycmVkV29ya1RpbWVyOjph
ZGRQZW5kaW5nV29yayk6CisgICAgICAgIChKU0M6OkRlZmVycmVkV29ya1RpbWVyOjpoYXNEZXBl
bmRhbmN5SW5QZW5kaW5nV29yayk6CisgICAgICAgIChKU0M6OkRlZmVycmVkV29ya1RpbWVyOjpk
aWRSZXN1bWVTY3JpcHRFeGVjdXRpb25Pd25lcik6CisgICAgICAgICogcnVudGltZS9EZWZlcnJl
ZFdvcmtUaW1lci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5j
cHA6CisgICAgICAgIChKU0M6OkpTRmluYWxpemF0aW9uUmVnaXN0cnk6OmNyZWF0ZSk6CisgICAg
ICAgIChKU0M6OkpTRmluYWxpemF0aW9uUmVnaXN0cnk6OmZpbmlzaENyZWF0aW9uKToKKyAgICAg
ICAgKiBydW50aW1lL0pTRmluYWxpemF0aW9uUmVnaXN0cnkuaDoKKyAgICAgICAgKiBydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6
CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpjdXJyZW50U2NyaXB0RXhlY3V0aW9uT3du
ZXIpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6c2NyaXB0RXhlY3V0aW9uU3RhdHVz
KToKKwogMjAyMC0xMC0wNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAg
ICAgICAgIFtKU0NdIFJlc3RyaWN0IG1vcmUgcHRyLXRhZ2dpbmcgYW5kIGF2b2lkIHVzaW5nIE9w
ZXJhdGlvblB0clRhZyBmb3IgSklUIGNvZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNWQ1N2I4MWUyMmRlZjI3NTQxY2M5MjZj
M2ZjZWYwNWU3ZDllNDJiYi4uMTY0ZGZlNjUzNTIxM2UyYzg2MzMxMjEwNWFkZGUyZDUxNzMzMTA5
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAyMC0xMC0wOCAgS2VpdGggTWlsbGVyICA8a2VpdGhf
bWlsbGVyQGFwcGxlLmNvbT4KKworICAgICAgICBGaW5hbGl6ZXJzIHNob3VsZG4ndCBydW4gaWYg
ZXZlbnRzIGNhbid0IGZpcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxNDUwOAorCisgICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KKwor
ICAgICAgICBBZGQgYSBEcm9wTG9ja1Njb3BlIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGRyb3AgYSBs
b2NrIGZvciBhIHNob3J0CisgICAgICAgIHBpZWNlIG9mIGNvZGUuICBBbHNvLCBpbnN0ZWFkIG9m
IGRlbGV0aW5nIGludCBMb2NrZXIgY29uc3RydWN0b3IKKyAgICAgICAgd2Ugc2hvdWxkIGp1c3Qg
ZGVsZXRlIHRoZSB1bmRlcmx5aW5nIHR5cGUgb2YgdGhlCisgICAgICAgIE5vTG9ja2luZ05lY2Vz
c2FyeSBlbnVtLgorCisgICAgICAgICogd3RmL0xvY2tlci5oOgorICAgICAgICAoV1RGOjpMb2Nr
ZXI6On5Mb2NrZXIpOgorICAgICAgICAoV1RGOjpMb2NrZXI6OnVubG9ja0Vhcmx5KToKKyAgICAg
ICAgKFdURjo6TG9ja2VyOjpMb2NrZXIpOgorICAgICAgICAoV1RGOjpMb2NrZXI6Om9wZXJhdG9y
PSk6CisgICAgICAgIChXVEY6OkxvY2tlcjo6dW5sb2NrKToKKyAgICAgICAgKFdURjo6RHJvcExv
Y2tGb3JTY29wZTo6RHJvcExvY2tGb3JTY29wZSk6CisgICAgICAgIChXVEY6OkRyb3BMb2NrRm9y
U2NvcGU6On5Ecm9wTG9ja0ZvclNjb3BlKToKKwogMjAyMC0xMC0wOCAgWXVzdWtlIFN1enVraSAg
PHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGJ1aWxkIGZpeCBmb3Ig
QVJNNjRFCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggZTIzOTFmZmY0MTBlNjY5NDBmNjg2NTM3MWY4ODJiMDhiNTVj
ZDhlMC4uZWQ3ZTMzYmFmNGJiODA5YmUyOTFmNjY5NWY1MTkzYjU4NWM1NzRmOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDQ0IEBACisyMDIwLTEwLTA4ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxs
ZXJAYXBwbGUuY29tPgorCisgICAgICAgIEZpbmFsaXplcnMgc2hvdWxkbid0IHJ1biBpZiBldmVu
dHMgY2FuJ3QgZmlyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE0NTA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggbWFrZXMgaXQgc28gdGhlIERlZmVycmVkV29ya1RpbWVyIHdvbid0IHJ1
biBzY2hlZHVsZWQKKyAgICAgICAgdGFza3MgaWYgdGhvc2Ugd291bGQgbm90IGhhdmUgcnVuIGlm
IHRoZXkgd2VyZSBzY2hlZHVsZWQgaW4KKyAgICAgICAgV2ViQ29yZS4gVG8gZG8gdGhpcyB0aGVy
ZSBpcyBub3cgYSBjb25jZXB0IG9mIGEKKyAgICAgICAgU2NyaXB0RXhlY3V0aW9uT3duZXIuIFRo
ZSBTY3JpcHRFeGVjdXRpb25Pd25lciBpcyBhbG1vc3QgYWx3YXlzCisgICAgICAgIHRoZSBzYW1l
IGFzIHRoZSBnbG9iYWwgb2JqZWN0IG9mIHRoZSBwZW5kaW5nIHRhc2sgKHJlZmVycmVkIHRvIGFz
CisgICAgICAgIHRoZSB0aWNrZXQpLiBUaGUgb25seSBleGNlcHRpb24gdG8gdGhpcyBpcyBpZiB0
aGUgZ2xvYmFsIG9iamVjdAorICAgICAgICBpcyBhIEpTRE9NV2luZG93QmFzZSwgdGhlbiB0aGUg
U2NyaXB0RXhlY3V0aW9uT3duZXIgaXMgdGhlCisgICAgICAgIERvY3VtZW50J3MgSlMgd3JhcHBl
ci4gVG8gdGVsbCB0aGUgc3RhdHVzIG9mIGEKKyAgICAgICAgU2NyaXB0RXhlY3V0aW9uT3duZXIs
IHRoZSBEZWZlcnJlZFdvcmtUaW1lciBjYWxscyBhIHZpcnR1YWwKKyAgICAgICAgZnVuY3Rpb24g
b24gdGhlIGdsb2JhbCBvYmplY3Qgb2YgdGhlIHRpY2tldCwgZm9yIEpTQy1vbmx5IHRoaXMKKyAg
ICAgICAganVzdCBhbHdheXMgcmV0dXJucyBSdW5uaW5nLiBGb3IgV2ViQ29yZSwgd2UgYXNrIHRo
ZQorICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0IGFzc29jaWF0ZWQgd2l0aCB0aGUgU2Ny
aXB0RXhlY3V0aW9uT3duZXIuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jh
c2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpjdXJyZW50U2NyaXB0
RXhlY3V0aW9uT3duZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpzY3Jp
cHRFeGVjdXRpb25TdGF0dXMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFz
ZS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV3JhcHBlckNhY2hlLmg6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNSZW1vdGVET01XaW5kb3dCYXNlLmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6c2NyaXB0RXhlY3V0aW9uU3RhdHVzKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5oOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OnNjcmlwdEV4ZWN1dGlvblN0YXR1cyk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmg6CisgICAgICAgICogZG9t
L1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6Y29udGV4dElkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cmVtb3ZlRnJvbUNvbnRleHRzTWFwKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6On5TY3JpcHRFeGVjdXRpb25Db250
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmpzY1Njcmlw
dEV4ZWN1dGlvblN0YXR1cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRp
b25Db250ZXh0OjpyZXN1bWVBY3RpdmVET01PYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnBvc3RUYXNrVG8pOgorICAgICAgICAqIGRvbS9TY3JpcHRF
eGVjdXRpb25Db250ZXh0Lmg6CisKIDIwMjAtMTAtMDggIEFuZHJlcyBHb256YWxleiAgPGFuZHJl
c2dfMjJAYXBwbGUuY29tPgogCiAgICAgICAgIFByZXNpZGVudGlhbCBFeGVjdXRpdmUgT3JkZXIg
cGFnZXMgbm90IGFjY2Vzc2libGUgd2l0aCBTYWZhcmkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3QuY3BwCmluZGV4IDliNGYzMzhmZDkwMzEyMjY5NjY3
OWE4NzhiMWMyOGJmNmUwNDkzYzEuLjlmNWUwYWQzMGQ3ZDcyMzUwZTllZTk5YWFkMzQ1MjhkZWQ3
MGZiZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9iYWxP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmpl
Y3QuY3BwCkBAIC00NSw2ICs0NSw4IEBAIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpT
QVBJR2xvYmFsT2JqZWN0OjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0gewogICAgIG51bGxw
dHIsIC8vIG1vZHVsZUxvYWRlckV2YWx1YXRlCiAgICAgbnVsbHB0ciwgLy8gcHJvbWlzZVJlamVj
dGlvblRyYWNrZXIKICAgICAmcmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcCwKKyAg
ICAmY3VycmVudFNjcmlwdEV4ZWN1dGlvbk93bmVyLAorICAgICZzY3JpcHRFeGVjdXRpb25TdGF0
dXMsCiAgICAgbnVsbHB0ciwgLy8gZGVmYXVsdExhbmd1YWdlCiAgICAgbnVsbHB0ciwgLy8gY29t
cGlsZVN0cmVhbWluZwogICAgIG51bGxwdHIsIC8vIGluc3RhbnRpYXRlU3RyZWFtaW5nCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0Lm1tIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5tbQppbmRleCBkZGUy
YmQzMjNiYzdiNjViNGYwOTAyM2I4N2FlYTI3YjA0MjM2MzllLi41NDYxMzc5ZmRiZGU0YzFlOTIz
NTVhZjAxNzAxNDMyNjAwY2FlMTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQVBJR2xvYmFsT2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNBUElHbG9iYWxPYmplY3QubW0KQEAgLTY1LDYgKzY1LDggQEAgY29uc3QgR2xvYmFsT2JqZWN0
TWV0aG9kVGFibGUgSlNBUElHbG9iYWxPYmplY3Q6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUg
PSB7CiAgICAgJm1vZHVsZUxvYWRlckV2YWx1YXRlLCAvLyBtb2R1bGVMb2FkZXJFdmFsdWF0ZQog
ICAgIG51bGxwdHIsIC8vIHByb21pc2VSZWplY3Rpb25UcmFja2VyCiAgICAgJnJlcG9ydFVuY2F1
Z2h0RXhjZXB0aW9uQXRFdmVudExvb3AsCisgICAgJmN1cnJlbnRTY3JpcHRFeGVjdXRpb25Pd25l
ciwKKyAgICAmc2NyaXB0RXhlY3V0aW9uU3RhdHVzLAogICAgIG51bGxwdHIsIC8vIGRlZmF1bHRM
YW5ndWFnZQogICAgIG51bGxwdHIsIC8vIGNvbXBpbGVTdHJlYW1pbmcKICAgICBudWxscHRyLCAv
LyBpbnN0YW50aWF0ZVN0cmVhbWluZwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCBiYTYzMzIxMmUy
ODJhMDA2NDRkMjA4OTQwZTJiMGUyNDQ0OGY4NDZmLi40YjcwNmUyZmYyOWU2ZTA5OWRkOGJkYWJh
YTIwNGRmOTI2MWJiODZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtNzIwLDYgKzcyMCw4IEBA
IGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEdsb2JhbE9iamVjdDo6c19nbG9iYWxPYmpl
Y3RNZXRob2RUYWJsZSA9IHsKICAgICBudWxscHRyLCAvLyBtb2R1bGVMb2FkZXJFdmFsdWF0ZQog
ICAgIG51bGxwdHIsIC8vIHByb21pc2VSZWplY3Rpb25UcmFja2VyCiAgICAgJnJlcG9ydFVuY2F1
Z2h0RXhjZXB0aW9uQXRFdmVudExvb3AsCisgICAgJmN1cnJlbnRTY3JpcHRFeGVjdXRpb25Pd25l
ciwKKyAgICAmc2NyaXB0RXhlY3V0aW9uU3RhdHVzLAogICAgIG51bGxwdHIsIC8vIGRlZmF1bHRM
YW5ndWFnZQogICAgIG51bGxwdHIsIC8vIGNvbXBpbGVTdHJlYW1pbmcKICAgICBudWxscHRyLCAv
LyBpbnN0YW50aW5hdGVTdHJlYW1pbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0RlZmVycmVkV29ya1RpbWVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0RlZmVycmVkV29ya1RpbWVyLmNwcAppbmRleCBjZWQ3N2JhZTQ0ZDczMmVkZTM3ZjQ0
MDM3N2QwNzM1YTdmZWEyZGM4Li5kYTVkODkyZDlhZjAyZWI4ZjQ5MmNiM2FkYjJhYzViODcyMWNl
YTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EZWZlcnJlZFdv
cmtUaW1lci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVmZXJyZWRX
b3JrVGltZXIuY3BwCkBAIC00NSwyMiArNDUsMzcgQEAgRGVmZXJyZWRXb3JrVGltZXI6OkRlZmVy
cmVkV29ya1RpbWVyKFZNJiB2bSkKIHZvaWQgRGVmZXJyZWRXb3JrVGltZXI6OmRvV29yayhWTSYg
dm0pCiB7CiAgICAgQVNTRVJUKHZtLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOwot
ICAgIG1fdGFza0xvY2subG9jaygpOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV90YXNr
TG9jayk7CiAgICAgY2FuY2VsVGltZXIoKTsKLSAgICBpZiAoIW1fcnVuVGFza3MpIHsKLSAgICAg
ICAgbV90YXNrTG9jay51bmxvY2soKTsKKyAgICBpZiAoIW1fcnVuVGFza3MpCiAgICAgICAgIHJl
dHVybjsKLSAgICB9CisKKyAgICBWZWN0b3I8c3RkOjp0dXBsZTxUaWNrZXQsIFRhc2s+PiBzdXNw
ZW5kZWRUYXNrczsKIAogICAgIHdoaWxlICghbV90YXNrcy5pc0VtcHR5KCkpIHsKICAgICAgICAg
YXV0byBbdGlja2V0LCB0YXNrXSA9IG1fdGFza3MudGFrZUZpcnN0KCk7CisgICAgICAgIGF1dG8g
Z2xvYmFsT2JqZWN0ID0gdGlja2V0LT5zdHJ1Y3R1cmUodm0pLT5nbG9iYWxPYmplY3QoKTsKICAg
ICAgICAgZGF0YUxvZ0xuSWYoRGVmZXJyZWRXb3JrVGltZXJJbnRlcm5hbDo6dmVyYm9zZSwgIkRv
aW5nIHdvcmsgb246ICIsIFJhd1BvaW50ZXIodGlja2V0KSk7CiAKLSAgICAgICAgLy8gV2UgbWF5
IGhhdmUgYWxyZWFkeSBjYW5jZWxlZCB0aGVzZSBwcm9taXNlcy4KLSAgICAgICAgaWYgKG1fcGVu
ZGluZ1RpY2tldHMuY29udGFpbnModGlja2V0KSkgewotICAgICAgICAgICAgLy8gQWxsb3cgdGFz
a3Mgd2UgcnVuIG5vdyB0byBzY2hlZHVsZSB3b3JrLgotICAgICAgICAgICAgbV9jdXJyZW50bHlS
dW5uaW5nVGFzayA9IHRydWU7Ci0gICAgICAgICAgICBtX3Rhc2tMb2NrLnVubG9jaygpOyAKKyAg
ICAgICAgYXV0byBwZW5kaW5nVGlja2V0ID0gbV9wZW5kaW5nVGlja2V0cy5maW5kKHRpY2tldCk7
CisgICAgICAgIC8vIFdlIG1heSBoYXZlIGFscmVhZHkgY2FuY2VsZWQgdGhpcyB0YXNrIG9yIGl0
cyBvd25lciBtYXkgaGF2ZSBiZWVuIGNhbmNlbGVkLgorICAgICAgICBpZiAocGVuZGluZ1RpY2tl
dCA9PSBtX3BlbmRpbmdUaWNrZXRzLmVuZCgpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAg
ICAgICAgc3dpdGNoIChnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPnNj
cmlwdEV4ZWN1dGlvblN0YXR1cyhnbG9iYWxPYmplY3QsIHBlbmRpbmdUaWNrZXQtPnZhbHVlLnNj
cmlwdEV4ZWN1dGlvbk93bmVyLmdldCgpKSkgeworICAgICAgICBjYXNlIFNjcmlwdEV4ZWN1dGlv
blN0YXR1czo6U3VzcGVuZGVkOgorICAgICAgICAgICAgc3VzcGVuZGVkVGFza3MuYXBwZW5kKHN0
ZDo6bWFrZV90dXBsZSh0aWNrZXQsIFdURk1vdmUodGFzaykpKTsKKyAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICBjYXNlIFNjcmlwdEV4ZWN1dGlvblN0YXR1czo6U3RvcHBlZDoKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICBjYXNlIFNjcmlwdEV4ZWN1dGlvblN0YXR1czo6UnVu
bmluZzoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgLy8gQWxsb3cg
dGFza3Mgd2UgYXJlIGFib3V0IHRvIHJ1biB0byBzY2hlZHVsZSB3b3JrLgorICAgICAgICBtX2N1
cnJlbnRseVJ1bm5pbmdUYXNrID0gdHJ1ZTsKKyAgICAgICAgeworICAgICAgICAgICAgYXV0byBk
cm9wcGVyID0gRHJvcExvY2tGb3JTY29wZShsb2NrZXIpOwogCiAgICAgICAgICAgICAvLyBUaGlz
IGlzIHRoZSBzdGFydCBvZiBhIHJ1bmxvb3AgdHVybiwgd2UgY2FuIHJlbGVhc2UgYW55IHdlYWty
ZWZzIGhlcmUuCiAgICAgICAgICAgICB2bS5maW5hbGl6ZVN5bmNocm9ub3VzSlNFeGVjdXRpb24o
KTsKQEAgLTc1LDE2ICs5MCwxNyBAQCB2b2lkIERlZmVycmVkV29ya1RpbWVyOjpkb1dvcmsoVk0m
IHZtKQogCiAgICAgICAgICAgICB2bS5kcmFpbk1pY3JvdGFza3MoKTsKICAgICAgICAgICAgIEFT
U0VSVCghdm0uZXhjZXB0aW9uRm9ySW5zcGVjdGlvbigpKTsKLQotICAgICAgICAgICAgbV90YXNr
TG9jay5sb2NrKCk7Ci0gICAgICAgICAgICBtX2N1cnJlbnRseVJ1bm5pbmdUYXNrID0gZmFsc2U7
CiAgICAgICAgIH0KKyAgICAgICAgbV9jdXJyZW50bHlSdW5uaW5nVGFzayA9IGZhbHNlOwogICAg
IH0KIAotICAgIGlmIChtX3BlbmRpbmdUaWNrZXRzLmlzRW1wdHkoKSAmJiBtX3Nob3VsZFN0b3BS
dW5Mb29wV2hlbkFsbFRpY2tldHNGaW5pc2gpCi0gICAgICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5z
dG9wKCk7CisgICAgd2hpbGUgKCFzdXNwZW5kZWRUYXNrcy5pc0VtcHR5KCkpCisgICAgICAgIG1f
dGFza3MucHJlcGVuZChzdXNwZW5kZWRUYXNrcy50YWtlTGFzdCgpKTsKIAotICAgIG1fdGFza0xv
Y2sudW5sb2NrKCk7CisgICAgaWYgKG1fcGVuZGluZ1RpY2tldHMuaXNFbXB0eSgpICYmIG1fc2hv
dWxkU3RvcFJ1bkxvb3BXaGVuQWxsVGlja2V0c0ZpbmlzaCkgeworICAgICAgICBBU1NFUlQobV90
YXNrcy5pc0VtcHR5KCkpOworICAgICAgICBSdW5Mb29wOjpjdXJyZW50KCkuc3RvcCgpOworICAg
IH0KIH0KIAogdm9pZCBEZWZlcnJlZFdvcmtUaW1lcjo6cnVuUnVuTG9vcCgpCkBAIC0xMDIsMTQg
KzExOCwxNiBAQCB2b2lkIERlZmVycmVkV29ya1RpbWVyOjphZGRQZW5kaW5nV29yayhWTSYgdm0s
IFRpY2tldCB0aWNrZXQsIFZlY3RvcjxTdHJvbmc8SlNDZQogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBkZXBlbmRlbmNpZXMuc2l6ZSgpOyArK2kpCiAgICAgICAgIEFTU0VSVChkZXBlbmRl
bmNpZXNbaV0uZ2V0KCkgIT0gdGlja2V0KTsKIAotICAgIGF1dG8gcmVzdWx0ID0gbV9wZW5kaW5n
VGlja2V0cy5hZGQodGlja2V0LCBWZWN0b3I8U3Ryb25nPEpTQ2VsbD4+KCkpOwotICAgIGlmIChy
ZXN1bHQuaXNOZXdFbnRyeSkgeworICAgIGF1dG8gZ2xvYmFsT2JqZWN0ID0gdGlja2V0LT5nbG9i
YWxPYmplY3QoKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fcGVuZGluZ1RpY2tldHMuZW5zdXJlKHRp
Y2tldCwgWyZdIHsKICAgICAgICAgZGF0YUxvZ0xuSWYoRGVmZXJyZWRXb3JrVGltZXJJbnRlcm5h
bDo6dmVyYm9zZSwgIkFkZGluZyBuZXcgcGVuZGluZyB0aWNrZXQ6ICIsIFJhd1BvaW50ZXIodGlj
a2V0KSk7CisgICAgICAgIEpTT2JqZWN0KiBzY3JpcHRFeGVjdXRpb25Pd25lciA9IGdsb2JhbE9i
amVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+Y3VycmVudFNjcmlwdEV4ZWN1dGlvbk93
bmVyKGdsb2JhbE9iamVjdCk7CiAgICAgICAgIGRlcGVuZGVuY2llcy5hcHBlbmQoU3Ryb25nPEpT
Q2VsbD4odm0sIHRpY2tldCkpOwotICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gV1RG
TW92ZShkZXBlbmRlbmNpZXMpOwotICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVybiBUaWNrZXRE
YXRhIHsgV1RGTW92ZShkZXBlbmRlbmNpZXMpLCBTdHJvbmc8SlNPYmplY3Q+KHZtLCBzY3JpcHRF
eGVjdXRpb25Pd25lcikgfTsKKyAgICB9KTsKKyAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KSB7
CiAgICAgICAgIGRhdGFMb2dMbklmKERlZmVycmVkV29ya1RpbWVySW50ZXJuYWw6OnZlcmJvc2Us
ICJBZGRpbmcgbmV3IGRlcGVuZGVuY2llcyBmb3IgdGlja2V0OiAiLCBSYXdQb2ludGVyKHRpY2tl
dCkpOwotICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmFwcGVuZFZlY3RvcihkZXBlbmRl
bmNpZXMpOworICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmRlcGVuZGVuY2llcy5hcHBl
bmRWZWN0b3IoV1RGTW92ZShkZXBlbmRlbmNpZXMpKTsKICAgICB9CiB9CiAKQEAgLTEyNSw3ICsx
NDMsNyBAQCBib29sIERlZmVycmVkV29ya1RpbWVyOjpoYXNEZXBlbmRhbmN5SW5QZW5kaW5nV29y
ayhUaWNrZXQgdGlja2V0LCBKU0NlbGwqIGRlcGVuZAogICAgIEFTU0VSVChtX3BlbmRpbmdUaWNr
ZXRzLmNvbnRhaW5zKHRpY2tldCkpOwogCiAgICAgYXV0byByZXN1bHQgPSBtX3BlbmRpbmdUaWNr
ZXRzLmdldCh0aWNrZXQpOwotICAgIHJldHVybiByZXN1bHQuY29udGFpbnMoZGVwZW5kZW5jeSk7
CisgICAgcmV0dXJuIHJlc3VsdC5kZXBlbmRlbmNpZXMuY29udGFpbnMoZGVwZW5kZW5jeSk7CiB9
CiAKIGJvb2wgRGVmZXJyZWRXb3JrVGltZXI6OmNhbmNlbFBlbmRpbmdXb3JrKFRpY2tldCB0aWNr
ZXQpCkBAIC0xNDcsNCArMTY1LDEyIEBAIHZvaWQgRGVmZXJyZWRXb3JrVGltZXI6OnNjaGVkdWxl
V29ya1Nvb24oVGlja2V0IHRpY2tldCwgVGFzayYmIHRhc2spCiAgICAgICAgIHNldFRpbWVVbnRp
bEZpcmUoMF9zKTsKIH0KIAordm9pZCBEZWZlcnJlZFdvcmtUaW1lcjo6ZGlkUmVzdW1lU2NyaXB0
RXhlY3V0aW9uT3duZXIoKQoreworICAgIEFTU0VSVCghbV9jdXJyZW50bHlSdW5uaW5nVGFzayk7
CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV90YXNrTG9jayk7CisgICAgaWYgKCFpc1NjaGVkdWxl
ZCgpICYmIG1fdGFza3Muc2l6ZSgpKQorICAgICAgICBzZXRUaW1lVW50aWxGaXJlKDBfcyk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRGVmZXJyZWRXb3JrVGltZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0RlZmVycmVkV29ya1RpbWVyLmgKaW5kZXggMjcxYThhYmM5ZWM0Mjg1NmU5ZGQzYTFjYzNi
YzVjZTg2ZGI0ZjY5My4uYzEzMTIwNDU4MjI1ZWEwMTgwYmVjOWYyMDMxY2FmNThiNDQ1OTE3YiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVmZXJyZWRXb3JrVGlt
ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EZWZlcnJlZFdvcmtUaW1l
ci5oCkBAIC01MSwxOCArNTEsMTkgQEAgcHVibGljOgogICAgIGJvb2wgaGFzRGVwZW5kYW5jeUlu
UGVuZGluZ1dvcmsoVGlja2V0LCBKU0NlbGwqIGRlcGVuZGVuY3kpOwogICAgIGJvb2wgY2FuY2Vs
UGVuZGluZ1dvcmsoVGlja2V0KTsKIAorICAgIC8vIElmIHRoZSBzY3JpcHQgZXhlY3V0aW9uIG93
bmVyIHlvdXIgdGlja2V0IGlzIGFzc29jaWF0ZWQgd2l0aCBnZXRzIGNhbmNlbGVkCisgICAgLy8g
dGhlIFRhc2sgd2lsbCBub3QgYmUgY2FsbGVkIGFuZCB3aWxsIGJlIGRlYWxsb2NhdGVkLiBTbyBp
dCdzIGltcG9ydGFudAorICAgIC8vIHRvIG1ha2Ugc3VyZSB5b3VyIG1lbW9yeSBvd25lcnNoaXAg
bW9kZWwgd29uJ3QgbGVhayBtZW1vcnkgd2hlbgorICAgIC8vIHRoaXMgb2NjdXJzLiBUaGUgZWFz
aWVzdCB3YXkgaXMgdG8gbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgaXMgZWl0aGVyIG93bmVkCisgICAg
Ly8gYnkgYSBHQydkIHZhbHVlIGluIGRlcGVuZGVuY2llcyBvciBieSB0aGUgVGFzayBsYW1iZGEu
CiAgICAgdXNpbmcgVGFzayA9IEZ1bmN0aW9uPHZvaWQoKT47CiAgICAgdm9pZCBzY2hlZHVsZVdv
cmtTb29uKFRpY2tldCwgVGFzayYmKTsKKyAgICB2b2lkIGRpZFJlc3VtZVNjcmlwdEV4ZWN1dGlv
bk93bmVyKCk7CiAKICAgICB2b2lkIHN0b3BSdW5uaW5nVGFza3MoKSB7IG1fcnVuVGFza3MgPSBm
YWxzZTsgfQotCiAgICAgdm9pZCBydW5SdW5Mb29wKCk7CiAKLSAgICBzdGF0aWMgUmVmPERlZmVy
cmVkV29ya1RpbWVyPiBjcmVhdGUoVk0mIHZtKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRGVmZXJyZWRXb3JrVGltZXIodm0pKTsKLSAgICB9Ci0KKyAgICBzdGF0aWMgUmVm
PERlZmVycmVkV29ya1RpbWVyPiBjcmVhdGUoVk0mIHZtKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IERlZmVycmVkV29ya1RpbWVyKHZtKSk7IH0KIHByaXZhdGU6CiAgICAgRGVmZXJyZWRXb3JrVGlt
ZXIoVk0mKTsKIApAQCAtNzEsNyArNzIsMTEgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc2hvdWxk
U3RvcFJ1bkxvb3BXaGVuQWxsVGlja2V0c0ZpbmlzaCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2N1
cnJlbnRseVJ1bm5pbmdUYXNrIHsgZmFsc2UgfTsKICAgICBEZXF1ZTxzdGQ6OnR1cGxlPFRpY2tl
dCwgVGFzaz4+IG1fdGFza3M7Ci0gICAgSGFzaE1hcDxUaWNrZXQsIFZlY3RvcjxTdHJvbmc8SlND
ZWxsPj4+IG1fcGVuZGluZ1RpY2tldHM7CisgICAgc3RydWN0IFRpY2tldERhdGEgeworICAgICAg
ICBWZWN0b3I8U3Ryb25nPEpTQ2VsbD4+IGRlcGVuZGVuY2llczsKKyAgICAgICAgU3Ryb25nPEpT
T2JqZWN0PiBzY3JpcHRFeGVjdXRpb25Pd25lcjsKKyAgICB9OworICAgIEhhc2hNYXA8VGlja2V0
LCBUaWNrZXREYXRhPiBtX3BlbmRpbmdUaWNrZXRzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ZpbmFsaXphdGlv
blJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRmluYWxpemF0
aW9uUmVnaXN0cnkuY3BwCmluZGV4IDU0OWI5ZDkwOTI1YzYyNzhkMTcxZjNjZTc4MDE5OWFjYTU0
ODhhMDIuLjRlMjg4MjlkNTcyZWQzYmQ0OTU3YjAwYWUxNDZiNDJhMTNhMWVjOGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRmluYWxpemF0aW9uUmVnaXN0cnku
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRmluYWxpemF0aW9uUmVn
aXN0cnkuY3BwCkBAIC00MiwxMSArNDIsMTEgQEAgU3RydWN0dXJlKiBKU0ZpbmFsaXphdGlvblJl
Z2lzdHJ5OjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmEKIEpT
RmluYWxpemF0aW9uUmVnaXN0cnkqIEpTRmluYWxpemF0aW9uUmVnaXN0cnk6OmNyZWF0ZShWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU09iamVjdCogY2FsbGJhY2spCiB7CiAgICAgSlNG
aW5hbGl6YXRpb25SZWdpc3RyeSogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Pih2bS5oZWFwKSkgSlNGaW5hbGl6YXRpb25SZWdpc3Ry
eSh2bSwgc3RydWN0dXJlKTsKLSAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24odm0sIGNhbGxi
YWNrKTsKKyAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24odm0sIHN0cnVjdHVyZS0+Z2xvYmFs
T2JqZWN0KCksIGNhbGxiYWNrKTsKICAgICByZXR1cm4gaW5zdGFuY2U7CiB9CiAKLXZvaWQgSlNG
aW5hbGl6YXRpb25SZWdpc3RyeTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU09iamVjdCogY2Fs
bGJhY2spCit2b2lkIEpTRmluYWxpemF0aW9uUmVnaXN0cnk6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIGNhbGxiYWNrKQogewog
ICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICBBU1NFUlQoY2FsbGJhY2stPmlzQ2Fs
bGFibGUodm0pKTsKQEAgLTU0LDYgKzU0LDEwIEBAIHZvaWQgSlNGaW5hbGl6YXRpb25SZWdpc3Ry
eTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU09iamVjdCogY2FsbGJhY2spCiAgICAgZm9yICh1
bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgdmFsdWVzLnNpemUoKTsgKytpbmRleCkKICAgICAg
ICAgQmFzZTo6aW50ZXJuYWxGaWVsZChpbmRleCkuc2V0V2l0aG91dFdyaXRlQmFycmllcih2YWx1
ZXNbaW5kZXhdKTsKICAgICBpbnRlcm5hbEZpZWxkKEZpZWxkOjpDYWxsYmFjaykuc2V0V2l0aG91
dFdyaXRlQmFycmllcihjYWxsYmFjayk7CisKKyAgICAvLyBNYWtlIHN1cmUgd2UgaW5pdCB0aGUg
RE9NIHdyYXBwZXIgZm9yIG91ciBkb2N1bWVudCBzaW5jZSBpdCBtdXN0IGJlIGFsbG9jYXRlZCBi
ZWZvcmUgZmluYWxpemVVbmNvbmRpdGlvbmFsbHkgaXMgY2FsbGVkLiBmaW5hbGl6ZVVuY29uZGl0
aW9uYWxseSwKKyAgICAvLyBpcyBjYWxsZWQgZHVyaW5nIHRoZSBHQyBmbGlwIHNvIG5vIEpTIG9i
amVjdHMgY2FuIGJlIGFsbG9jYXRlZCB0aGVyZS4gVGhpcyBvbmx5IHdvcmtzIGJlY2F1c2Ugd2Ug
bm8gbG9uZ2VyIHdlYWtseSBob2xkIG9uIHRvIERPTSB3cmFwcGVycy4KKyAgICBnbG9iYWxPYmpl
Y3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPmN1cnJlbnRTY3JpcHRFeGVjdXRpb25Pd25l
cihnbG9iYWxPYmplY3QpOwogfQogCiB2b2lkIEpTRmluYWxpemF0aW9uUmVnaXN0cnk6OnZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRmluYWxpemF0aW9uUmVnaXN0cnkuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRmluYWxpemF0aW9uUmVnaXN0cnkuaApp
bmRleCA2ZDVjZDM4Y2YwYmE3ZDgyOTkxY2RiNWMwYWFhMWZmNjQ0MmFmNjMzLi43NWQ2NzZiYjg1
Y2ZjY2YwZmFmNmU2MDBlMGNmMTJlNDAxZDhjOWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5oCkBAIC04OSw3ICs4
OSw3IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZv
aWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU09iamVjdCogY2FsbGJhY2spOworICAgIEpTX0VYUE9S
VF9QUklWQVRFIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTT2Jq
ZWN0KiBjYWxsYmFjayk7CiAKICAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nTmFtZShjb25zdCBK
U09iamVjdCosIEpTR2xvYmFsT2JqZWN0Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCAwNjliYjgyODEyYTZmNGE1YzMyZmRm
NDUyNDJlNzEzOTg5MDQ2MDA3Li44ZmQzNDEwN2U3NTczN2EyZWFkYmY2ZTZlNjE3ZTc4ZjFhZmI3
NmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwCkBAIC00MTIsNiArNDEyLDggQEAgY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUg
SlNHbG9iYWxPYmplY3Q6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7CiAgICAgbnVsbHB0
ciwgLy8gbW9kdWxlTG9hZGVyRXZhbHVhdGUKICAgICBudWxscHRyLCAvLyBwcm9taXNlUmVqZWN0
aW9uVHJhY2tlcgogICAgICZyZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wLAorICAg
ICZjdXJyZW50U2NyaXB0RXhlY3V0aW9uT3duZXIsCisgICAgJnNjcmlwdEV4ZWN1dGlvblN0YXR1
cywKICAgICBudWxscHRyLCAvLyBkZWZhdWx0TGFuZ3VhZ2UKICAgICBudWxscHRyLCAvLyBjb21w
aWxlU3RyZWFtaW5nCiAgICAgbnVsbHB0ciwgLy8gaW5zdGFudGlhdGVTdHJlYW1pbmcKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDk3NTY0
ZTljMmRlNTZjOTFlZWFlNTJkYjk1MjA2NjBiYWQ1ODdjZmMuLjQxYzhiYTk0NDY4ZmQyMjk1MjY3
OWFjOGExZmJjOTZhMmI0NGM3MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMTk1LDYgKzE5NSwxMiBAQCBlbnVtIGNsYXNzIEpTUHJv
bWlzZVJlamVjdGlvbk9wZXJhdGlvbiA6IHVuc2lnbmVkIHsKICAgICBIYW5kbGUsIC8vIFdoZW4g
YSBoYW5kbGVyIGlzIGFkZGVkIHRvIGEgcmVqZWN0ZWQgcHJvbWlzZSBmb3IgdGhlIGZpcnN0IHRp
bWUuCiB9OwogCitlbnVtIGNsYXNzIFNjcmlwdEV4ZWN1dGlvblN0YXR1cyB7CisgICAgUnVubmlu
ZywKKyAgICBTdXNwZW5kZWQsCisgICAgU3RvcHBlZCwKK307CisKIHN0cnVjdCBHbG9iYWxPYmpl
Y3RNZXRob2RUYWJsZSB7CiAgICAgdHlwZWRlZiBib29sICgqU3VwcG9ydHNSaWNoU291cmNlSW5m
b0Z1bmN0aW9uUHRyKShjb25zdCBKU0dsb2JhbE9iamVjdCopOwogICAgIFN1cHBvcnRzUmljaFNv
dXJjZUluZm9GdW5jdGlvblB0ciBzdXBwb3J0c1JpY2hTb3VyY2VJbmZvOwpAQCAtMjMyLDYgKzIz
OCwxMyBAQCBzdHJ1Y3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgewogICAgIHR5cGVkZWYgdm9p
ZCAoKlJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3BQdHIpKEpTR2xvYmFsT2JqZWN0
KiwgRXhjZXB0aW9uKik7CiAgICAgUmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcFB0
ciByZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wOwogCisgICAgLy8gRm9yIG1vc3Qg
Y29udGV4dHMgdGhpcyBpcyBqdXN0IHRoZSBnbG9iYWwgb2JqZWN0LiBGb3IgSlNET01XaW5kb3cs
IGhvd2V2ZXIsIHRoaXMgaXMgdGhlIEpTRG9jdW1lbnQuCisgICAgdHlwZWRlZiBKU09iamVjdCog
KCpDdXJyZW50U2NyaXB0RXhlY3V0aW9uT3duZXJQdHIpKEpTR2xvYmFsT2JqZWN0Kik7CisgICAg
Q3VycmVudFNjcmlwdEV4ZWN1dGlvbk93bmVyUHRyIGN1cnJlbnRTY3JpcHRFeGVjdXRpb25Pd25l
cjsKKworICAgIHR5cGVkZWYgU2NyaXB0RXhlY3V0aW9uU3RhdHVzICgqU2NyaXB0RXhlY3V0aW9u
U3RhdHVzUHRyKShKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiBzY3JpcHRFeGVjdXRpb25Pd25l
cik7CisgICAgU2NyaXB0RXhlY3V0aW9uU3RhdHVzUHRyIHNjcmlwdEV4ZWN1dGlvblN0YXR1czsK
KwogICAgIHR5cGVkZWYgU3RyaW5nICgqRGVmYXVsdExhbmd1YWdlRnVuY3Rpb25QdHIpKCk7CiAg
ICAgRGVmYXVsdExhbmd1YWdlRnVuY3Rpb25QdHIgZGVmYXVsdExhbmd1YWdlOwogCkBAIC04NTMs
NiArODY2LDggQEAgcHVibGljOgogICAgIEpTT2JqZWN0KiB1bmhhbmRsZWRSZWplY3Rpb25DYWxs
YmFjaygpIGNvbnN0IHsgcmV0dXJuIG1fdW5oYW5kbGVkUmVqZWN0aW9uQ2FsbGJhY2suZ2V0KCk7
IH0KIAogICAgIHN0YXRpYyB2b2lkIHJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3Ao
SlNHbG9iYWxPYmplY3QqLCBFeGNlcHRpb24qKTsKKyAgICBzdGF0aWMgSlNPYmplY3QqIGN1cnJl
bnRTY3JpcHRFeGVjdXRpb25Pd25lcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsKSB7IHJldHVybiBn
bG9iYWw7IH0KKyAgICBzdGF0aWMgU2NyaXB0RXhlY3V0aW9uU3RhdHVzIHNjcmlwdEV4ZWN1dGlv
blN0YXR1cyhKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KikgeyByZXR1cm4gU2NyaXB0RXhlY3V0
aW9uU3RhdHVzOjpSdW5uaW5nOyB9CiAKICAgICBKU09iamVjdCogYXJyYXlCdWZmZXJDb25zdHJ1
Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fYXJyYXlCdWZmZXJTdHJ1Y3R1cmUuY29uc3RydWN0b3Io
dGhpcyk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTG9ja2VyLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9Mb2NrZXIuaAppbmRleCBhNzg5ZTAzZTA5NThlY2JlNGYzMmY0ZDk0ZjMxNjEzNTQ0
YmQzNjg4Li45ODM5MDZlZDFmZTI5NjA1YmZhMDczYzg2NjMzNTdjNjg2NWEyN2NhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9Mb2NrZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Mb2NrZXIu
aApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVk
ZSA8d3RmL0F0b21pY3MuaD4KICNpbmNsdWRlIDx3dGYvQ29tcGlsZXIuaD4KKyNpbmNsdWRlIDx3
dGYvRm9yYmlkSGVhcEFsbG9jYXRpb24uaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4K
ICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FuaXRpemVyU3VwcG9ydC5oPgogCkBAIC01MSw3ICs1Miwx
MCBAQCBwcm90ZWN0ZWQ6CiAgICAgfQogfTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNz
IExvY2tlciA6IHB1YmxpYyBBYnN0cmFjdExvY2tlciB7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBj
bGFzcyBEcm9wTG9ja0ZvclNjb3BlOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorY2xhc3MgTG9j
a2VyIDogcHVibGljIEFic3RyYWN0TG9ja2VyIHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBMb2Nr
ZXIoVCYgbG9ja2FibGUpIDogbV9sb2NrYWJsZSgmbG9ja2FibGUpIHsgbG9jaygpOyB9CiAgICAg
ZXhwbGljaXQgTG9ja2VyKFQqIGxvY2thYmxlKSA6IG1fbG9ja2FibGUobG9ja2FibGUpIHsgbG9j
aygpOyB9CkBAIC02MywxNSArNjcsMTEgQEAgcHVibGljOgogICAgIC8vIGJlIGFjY2Vzc2VkIGNv
bmN1cnJlbnRseS4KICAgICBMb2NrZXIoTm9Mb2NraW5nTmVjZXNzYXJ5VGFnKSA6IG1fbG9ja2Fi
bGUobnVsbHB0cikgeyB9CiAgICAgCi0gICAgTG9ja2VyKGludCkgPSBkZWxldGU7CisgICAgTG9j
a2VyKHN0ZDo6dW5kZXJseWluZ190eXBlX3Q8Tm9Mb2NraW5nTmVjZXNzYXJ5VGFnPikgPSBkZWxl
dGU7CiAKICAgICB+TG9ja2VyKCkKICAgICB7Ci0gICAgICAgIGNvbXBpbGVyRmVuY2UoKTsKLSAg
ICAgICAgaWYgKG1fbG9ja2FibGUpIHsKLSAgICAgICAgICAgIFRTQU5fQU5OT1RBVEVfSEFQUEVO
U19CRUZPUkUobV9sb2NrYWJsZSk7Ci0gICAgICAgICAgICBtX2xvY2thYmxlLT51bmxvY2soKTsK
LSAgICAgICAgfQorICAgICAgICB1bmxvY2soKTsKICAgICB9CiAgICAgCiAgICAgc3RhdGljIExv
Y2tlciB0cnlMb2NrKFQmIGxvY2thYmxlKQpAQCAtODgsOCArODgsNyBAQCBwdWJsaWM6CiAgICAg
CiAgICAgdm9pZCB1bmxvY2tFYXJseSgpCiAgICAgewotICAgICAgICBUU0FOX0FOTk9UQVRFX0hB
UFBFTlNfQkVGT1JFKG1fbG9ja2FibGUpOwotICAgICAgICBtX2xvY2thYmxlLT51bmxvY2soKTsK
KyAgICAgICAgdW5sb2NrKCk7CiAgICAgICAgIG1fbG9ja2FibGUgPSBudWxscHRyOwogICAgIH0K
ICAgICAKQEAgLTk4LDIxICs5NywzMSBAQCBwdWJsaWM6CiAgICAgTG9ja2VyKExvY2tlciYmIG90
aGVyKQogICAgICAgICA6IG1fbG9ja2FibGUob3RoZXIubV9sb2NrYWJsZSkKICAgICB7CisgICAg
ICAgIEFTU0VSVCgmb3RoZXIgIT0gdGhpcyk7CiAgICAgICAgIG90aGVyLm1fbG9ja2FibGUgPSBu
dWxscHRyOwogICAgIH0KICAgICAKICAgICBMb2NrZXImIG9wZXJhdG9yPShMb2NrZXImJiBvdGhl
cikKICAgICB7Ci0gICAgICAgIGlmIChtX2xvY2thYmxlKSB7Ci0gICAgICAgICAgICBUU0FOX0FO
Tk9UQVRFX0hBUFBFTlNfQkVGT1JFKG1fbG9ja2FibGUpOwotICAgICAgICAgICAgbV9sb2NrYWJs
ZS0+dW5sb2NrKCk7Ci0gICAgICAgIH0KKyAgICAgICAgQVNTRVJUKCZvdGhlciAhPSB0aGlzKTsK
ICAgICAgICAgbV9sb2NrYWJsZSA9IG90aGVyLm1fbG9ja2FibGU7CiAgICAgICAgIG90aGVyLm1f
bG9ja2FibGUgPSBudWxscHRyOwogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogICAgIAog
cHJpdmF0ZToKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZT4KKyAgICBmcmllbmQgY2xhc3MgRHJvcExv
Y2tGb3JTY29wZTsKKworICAgIHZvaWQgdW5sb2NrKCkKKyAgICB7CisgICAgICAgIGNvbXBpbGVy
RmVuY2UoKTsKKyAgICAgICAgaWYgKG1fbG9ja2FibGUpIHsKKyAgICAgICAgICAgIFRTQU5fQU5O
T1RBVEVfSEFQUEVOU19CRUZPUkUobV9sb2NrYWJsZSk7CisgICAgICAgICAgICBtX2xvY2thYmxl
LT51bmxvY2soKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHZvaWQgbG9jaygpCiAgICAgewog
ICAgICAgICBpZiAobV9sb2NrYWJsZSkgewpAQCAtMTUxLDYgKzE2MCwyNSBAQCBMb2NrZXI8TG9j
a1R5cGU+IHRyeUhvbGRMb2NrKExvY2tUeXBlJiBsb2NrKQogICAgIHJldHVybiBMb2NrZXI8TG9j
a1R5cGU+Ojp0cnlMb2NrKGxvY2spOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBMb2NrVHlwZT4K
K2NsYXNzIERyb3BMb2NrRm9yU2NvcGUgOiBwcml2YXRlIEFic3RyYWN0TG9ja2VyIHsKKyAgICBX
VEZfRk9SQklEX0hFQVBfQUxMT0NBVElPTihEcm9wTG9ja0ZvclNjb3BlKTsKK3B1YmxpYzoKKyAg
ICBEcm9wTG9ja0ZvclNjb3BlKExvY2tlcjxMb2NrVHlwZT4mIGxvY2spCisgICAgICAgIDogbV9s
b2NrKGxvY2spCisgICAgeworICAgICAgICBtX2xvY2sudW5sb2NrKCk7CisgICAgfQorCisgICAg
fkRyb3BMb2NrRm9yU2NvcGUoKQorICAgIHsKKyAgICAgICAgbV9sb2NrLmxvY2soKTsKKyAgICB9
CisKK3ByaXZhdGU6CisgICAgTG9ja2VyPExvY2tUeXBlPiYgbV9sb2NrOworfTsKKwogfQogCiB1
c2luZyBXVEY6OkFic3RyYWN0TG9ja2VyOwpAQCAtMTU5LDMgKzE4Nyw0IEBAIHVzaW5nIFdURjo6
Tm9Mb2NraW5nTmVjZXNzYXJ5VGFnOwogdXNpbmcgV1RGOjpOb0xvY2tpbmdOZWNlc3Nhcnk7CiB1
c2luZyBXVEY6OmhvbGRMb2NrOwogdXNpbmcgV1RGOjpob2xkTG9ja0lmOwordXNpbmcgV1RGOjpE
cm9wTG9ja0ZvclNjb3BlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93QmFzZS5jcHAKaW5kZXggZjkzZTNmZDMxYzY1ZTRiMmU1MjI3NDU3OTg3M2FhYTFkYzRmNzE2
Yy4uNTdkNDVjM2RlOThiZTQ3YmUxMGZhNGE2OTNlODJmNzU0MTA3NWYwNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCkBAIC0zNSw2ICszNSw3
IEBACiAjaW5jbHVkZSAiSlNET01CaW5kaW5nU2VjdXJpdHkuaCIKICNpbmNsdWRlICJKU0RPTUds
b2JhbE9iamVjdFRhc2suaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvd0N1c3RvbS5oIgorI2luY2x1
ZGUgIkpTRG9jdW1lbnQuaCIKICNpbmNsdWRlICJKU0ZldGNoUmVzcG9uc2UuaCIKICNpbmNsdWRl
ICJKU01pY3JvdGFza0NhbGxiYWNrLmgiCiAjaW5jbHVkZSAiSlNOb2RlLmgiCkBAIC04MCw2ICs4
MSw4IEBAIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTRE9NV2luZG93QmFzZTo6c19n
bG9iYWxPYmplY3RNZXRob2RUYWJsZSA9IHsKICAgICAmbW9kdWxlTG9hZGVyRXZhbHVhdGUsCiAg
ICAgJnByb21pc2VSZWplY3Rpb25UcmFja2VyLAogICAgICZyZXBvcnRVbmNhdWdodEV4Y2VwdGlv
bkF0RXZlbnRMb29wLAorICAgICZjdXJyZW50U2NyaXB0RXhlY3V0aW9uT3duZXIsCisgICAgJnNj
cmlwdEV4ZWN1dGlvblN0YXR1cywKICAgICAmZGVmYXVsdExhbmd1YWdlLAogI2lmIEVOQUJMRShX
RUJBU1NFTUJMWSkKICAgICAmY29tcGlsZVN0cmVhbWluZywKQEAgLTIzMSw2ICsyMzQsMTcgQEAg
dm9pZCBKU0RPTVdpbmRvd0Jhc2U6OnF1ZXVlTWljcm90YXNrVG9FdmVudExvb3AoSlNHbG9iYWxP
YmplY3QmIG9iamVjdCwgUmVmPEpTQzoKICAgICB9KTsKIH0KIAorSlNDOjpKU09iamVjdCogSlNE
T01XaW5kb3dCYXNlOjpjdXJyZW50U2NyaXB0RXhlY3V0aW9uT3duZXIoSlNHbG9iYWxPYmplY3Qq
IG9iamVjdCkKK3sKKyAgICBKU0RPTVdpbmRvd0Jhc2UqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2Fz
dDxKU0RPTVdpbmRvd0Jhc2UqPihvYmplY3QpOworICAgIHJldHVybiBqc0Nhc3Q8SlNPYmplY3Qq
Pih0b0pTKHRoaXNPYmplY3QsIHRoaXNPYmplY3QsIHRoaXNPYmplY3QtPndyYXBwZWQoKS5kb2N1
bWVudCgpKSk7Cit9CisKK0pTQzo6U2NyaXB0RXhlY3V0aW9uU3RhdHVzIEpTRE9NV2luZG93QmFz
ZTo6c2NyaXB0RXhlY3V0aW9uU3RhdHVzKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkpTT2Jq
ZWN0KiBvd25lcikKK3sKKyAgICByZXR1cm4ganNDYXN0PEpTRG9jdW1lbnQqPihvd25lciktPndy
YXBwZWQoKS5qc2NTY3JpcHRFeGVjdXRpb25TdGF0dXMoKTsKK30KKwogdm9pZCBKU0RPTVdpbmRv
d0Jhc2U6OndpbGxSZW1vdmVGcm9tV2luZG93UHJveHkoKQogewogICAgIHNldEN1cnJlbnRFdmVu
dCgwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmgKaW5k
ZXggZWM2ZGRjMTcwMjEwOGU5OWNmOTlkYzM2MzM1ZTI1ZTAwNjQ1ZDg1YS4uMTA1MDNmZTM5Yzg5
ZGU2MzE4ZTNmNzI4N2JhYzQ1ZDc3OTUyMmNkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dCYXNlLmgKQEAgLTc4LDYgKzc4LDggQEAgcHVibGljOgogICAgIHN0
YXRpYyBib29sIHNob3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRpbWVvdXQoY29uc3QgSlNDOjpK
U0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRpYyBKU0M6OlJ1bnRpbWVGbGFncyBqYXZhU2NyaXB0
UnVudGltZUZsYWdzKGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICBzdGF0aWMgdm9p
ZCBxdWV1ZU1pY3JvdGFza1RvRXZlbnRMb29wKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBSZWY8SlND
OjpNaWNyb3Rhc2s+JiYpOworICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjdXJyZW50U2NyaXB0
RXhlY3V0aW9uT3duZXIoSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHN0YXRpYyBKU0M6OlNj
cmlwdEV4ZWN1dGlvblN0YXR1cyBzY3JpcHRFeGVjdXRpb25TdGF0dXMoSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6SlNPYmplY3QqKTsKIAogICAgIHZvaWQgcHJpbnRFcnJvck1lc3NhZ2UoY29u
c3QgU3RyaW5nJikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV3JhcHBlckNhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVdyYXBwZXJDYWNoZS5oCmluZGV4IGFjNjk3YWZkNzJhZTkyNzRjYTQyZTcyMjA1OGU0ZGRhOGE3
OTJmMGUuLmFlZjEyYmQyMzAyNWU3MGY5Y2Q3MzAxZTY5ZjhmYzlmMjIxNTlmMzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlckNhY2hlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyQ2FjaGUuaApAQCAtNTgsNiAr
NTgsOCBAQCBib29sIGNsZWFySW5saW5lQ2FjaGVkV3JhcHBlcihET01XcmFwcGVyV29ybGQmLCB2
b2lkKiwgSlNET01PYmplY3QqKTsKIGJvb2wgY2xlYXJJbmxpbmVDYWNoZWRXcmFwcGVyKERPTVdy
YXBwZXJXb3JsZCYsIFNjcmlwdFdyYXBwYWJsZSosIEpTRE9NT2JqZWN0KiB3cmFwcGVyKTsKIGJv
b2wgY2xlYXJJbmxpbmVDYWNoZWRXcmFwcGVyKERPTVdyYXBwZXJXb3JsZCYsIEpTQzo6QXJyYXlC
dWZmZXIqLCBKU0M6OkpTQXJyYXlCdWZmZXIqIHdyYXBwZXIpOwogCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBET01DbGFzcz4gSlNDOjpKU09iamVjdCogZ2V0T3JDcmVhdGVXcmFwcGVyKERPTVdyYXBwZXJX
b3JsZCYsIERPTUNsYXNzJik7CisKIHRlbXBsYXRlPHR5cGVuYW1lIERPTUNsYXNzPiBKU0M6OkpT
T2JqZWN0KiBnZXRDYWNoZWRXcmFwcGVyKERPTVdyYXBwZXJXb3JsZCYsIERPTUNsYXNzJik7CiB0
ZW1wbGF0ZTx0eXBlbmFtZSBET01DbGFzcz4gaW5saW5lIEpTQzo6SlNPYmplY3QqIGdldENhY2hl
ZFdyYXBwZXIoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgUmVmPERPTUNsYXNzPiYgb2JqZWN0KSB7
IHJldHVybiBnZXRDYWNoZWRXcmFwcGVyKHdvcmxkLCBvYmplY3QuZ2V0KCkpOyB9CiB0ZW1wbGF0
ZTx0eXBlbmFtZSBET01DbGFzcywgdHlwZW5hbWUgV3JhcHBlckNsYXNzPiB2b2lkIGNhY2hlV3Jh
cHBlcihET01XcmFwcGVyV29ybGQmLCBET01DbGFzcyosIFdyYXBwZXJDbGFzcyopOwpAQCAtNjUs
NiArNjcsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBET01DbGFzcywgdHlwZW5hbWUgV3JhcHBlckNs
YXNzPiB2b2lkIHVuY2FjaGVXcmFwcGVyKERPTVdyYXBwZQogdGVtcGxhdGU8dHlwZW5hbWUgRE9N
Q2xhc3MsIHR5cGVuYW1lIFQ+IGF1dG8gY3JlYXRlV3JhcHBlcihKU0RPTUdsb2JhbE9iamVjdCos
IFJlZjxUPiYmKSAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8RE9NQ2xh
c3MsIFQ+Ojp2YWx1ZSwgdHlwZW5hbWUgSlNET01XcmFwcGVyQ29udmVydGVyVHJhaXRzPERPTUNs
YXNzPjo6V3JhcHBlckNsYXNzKj46OnR5cGU7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBET01DbGFzcywg
dHlwZW5hbWUgVD4gYXV0byBjcmVhdGVXcmFwcGVyKEpTRE9NR2xvYmFsT2JqZWN0KiwgUmVmPFQ+
JiYpIC0+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPCFzdGQ6OmlzX3NhbWU8RE9NQ2xhc3MsIFQ+
Ojp2YWx1ZSwgdHlwZW5hbWUgSlNET01XcmFwcGVyQ29udmVydGVyVHJhaXRzPERPTUNsYXNzPjo6
V3JhcHBlckNsYXNzKj46OnR5cGU7CiAKK3RlbXBsYXRlPHR5cGVuYW1lIERPTUNsYXNzPiBKU0M6
OkpTVmFsdWUgd3JhcChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgRE9NV3JhcHBlcldvcmxkJiwgRE9N
Q2xhc3MmKTsKIHRlbXBsYXRlPHR5cGVuYW1lIERPTUNsYXNzPiBKU0M6OkpTVmFsdWUgd3JhcChK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqLCBET01DbGFzcyYpOwogCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVtb3RlRE9NV2luZG93
QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlbW90ZURPTVdpbmRvd0Jh
c2UuY3BwCmluZGV4IGRjZTczODIwYmJiZmQ5Yjk1YzU4NzlkMTNlZjY1ZWFiOThhOTA0MTguLjVj
ZWM4ZDEyZWE0MTY3NjlkYjI4NDE1MjhhYmIwNDY4NTVkMzQyNDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVtb3RlRE9NV2luZG93QmFzZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZW1vdGVET01XaW5kb3dCYXNlLmNwcApAQCAtNDgs
NiArNDgsOCBAQCBjb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBKU1JlbW90ZURPTVdpbmRv
d0Jhc2U6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPQogICAgIG51bGxwdHIsIC8vIG1vZHVs
ZUxvYWRlckV2YWx1YXRlCiAgICAgbnVsbHB0ciwgLy8gcHJvbWlzZVJlamVjdGlvblRyYWNrZXIK
ICAgICBudWxscHRyLCAvLyByZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wCisgICAg
JmN1cnJlbnRTY3JpcHRFeGVjdXRpb25Pd25lciwKKyAgICAmc2NyaXB0RXhlY3V0aW9uU3RhdHVz
LAogICAgIG51bGxwdHIsIC8vIGRlZmF1bHRMYW5ndWFnZQogICAgIG51bGxwdHIsIC8vIGNvbXBp
bGVTdHJlYW1pbmcKICAgICBudWxscHRyLCAvLyBpbnN0YW50aWF0ZVN0cmVhbWluZwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2Uu
Y3BwCmluZGV4IGM0NGYyZmIzYTBiMDVkYWFiMWE4YTllMmY4OWI1MmQ4NTFlYjQzNjguLjNkMzE2
Zjc5NjExYjQwNDJlYmI5MzdlNjE0NTRmZjU5NGJmMWFhNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKQEAgLTY2
LDYgKzY2LDggQEAgY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNXb3JrZXJHbG9iYWxT
Y29wZUJhc2U6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUKICAgICBudWxscHRyLCAvLyBtb2R1
bGVMb2FkZXJFdmFsdWF0ZQogICAgICZwcm9taXNlUmVqZWN0aW9uVHJhY2tlciwKICAgICAmcmVw
b3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcCwKKyAgICAmY3VycmVudFNjcmlwdEV4ZWN1
dGlvbk93bmVyLAorICAgICZzY3JpcHRFeGVjdXRpb25TdGF0dXMsCiAgICAgJmRlZmF1bHRMYW5n
dWFnZSwKICAgICBudWxscHRyLCAvLyBjb21waWxlU3RyZWFtaW5nCiAgICAgbnVsbHB0ciwgLy8g
aW5zdGFudGlhdGVTdHJlYW1pbmcKQEAgLTEzMSw2ICsxMzMsMTIgQEAgUnVudGltZUZsYWdzIEpT
V29ya2VyR2xvYmFsU2NvcGVCYXNlOjpqYXZhU2NyaXB0UnVudGltZUZsYWdzKGNvbnN0IEpTR2xv
YmFsT2JqZWMKICAgICByZXR1cm4gdGhpc09iamVjdC0+bV93cmFwcGVkLT50aHJlYWQoKS5ydW50
aW1lRmxhZ3MoKTsKIH0KIAorSlNDOjpTY3JpcHRFeGVjdXRpb25TdGF0dXMgSlNXb3JrZXJHbG9i
YWxTY29wZUJhc2U6OnNjcmlwdEV4ZWN1dGlvblN0YXR1cyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQzo6SlNPYmplY3QqIG93bmVyKQoreworICAgIEFTU0VSVF9VTlVTRUQo
b3duZXIsIGdsb2JhbE9iamVjdCA9PSBvd25lcik7CisgICAgcmV0dXJuIGpzQ2FzdDxKU1dvcmtl
ckdsb2JhbFNjb3BlQmFzZSo+KGdsb2JhbE9iamVjdCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KS0+anNjU2NyaXB0RXhlY3V0aW9uU3RhdHVzKCk7Cit9CisKIHZvaWQgSlNXb3JrZXJHbG9iYWxT
Y29wZUJhc2U6OnF1ZXVlTWljcm90YXNrVG9FdmVudExvb3AoSlNHbG9iYWxPYmplY3QmIG9iamVj
dCwgUmVmPEpTQzo6TWljcm90YXNrPiYmIHRhc2spCiB7CiAgICAgSlNXb3JrZXJHbG9iYWxTY29w
ZUJhc2UmIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU1dvcmtlckdsb2JhbFNjb3BlQmFzZSY+
KG9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtl
ckdsb2JhbFNjb3BlQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJH
bG9iYWxTY29wZUJhc2UuaAppbmRleCA5ZmUxMjljZGY2MWMxYTA4YmVhNDhmNzAwZDRlYWRjYzZl
YTZmZjIyLi5kNDQ5ODcxMjk0NmFlNWY2ZjAxODc4Njg0ZTQ2OTk3YjFmZWMxN2EwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNl
LmgKQEAgLTczLDYgKzczLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIHNob3VsZEludGVy
cnVwdFNjcmlwdChjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAgICAgc3RhdGljIGJvb2wg
c2hvdWxkSW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91dChjb25zdCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0Kik7CiAgICAgc3RhdGljIEpTQzo6UnVudGltZUZsYWdzIGphdmFTY3JpcHRSdW50aW1lRmxh
Z3MoY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHN0YXRpYyBKU0M6OlNjcmlwdEV4
ZWN1dGlvblN0YXR1cyBzY3JpcHRFeGVjdXRpb25TdGF0dXMoSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6SlNPYmplY3QqKTsKICAgICBzdGF0aWMgdm9pZCBxdWV1ZU1pY3JvdGFza1RvRXZlbnRM
b29wKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBSZWY8SlNDOjpNaWNyb3Rhc2s+JiYpOwogCiAgICAg
dm9pZCBjbGVhckRPTUd1YXJkZWRPYmplY3RzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmNwcAppbmRleCAzMjNkZWU3
OGQ4YmJlYzllY2VlMTU2YjkzM2VhZDA4NjE0MTk3YThlLi4xODcyYjQxNGVkOTNiZDRmNjA4ZWM5
OGU3ZmU3ZmQ0ZmEyODI2MDUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5jcHAKQEAgLTU2LDYgKzU2LDggQEAgY29u
c3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlOjpzX2ds
b2JhbE9iamVjdE1ldGhvZFRhYmwKICAgICBudWxscHRyLCAvLyBtb2R1bGVMb2FkZXJFdmFsdWF0
ZQogICAgICZwcm9taXNlUmVqZWN0aW9uVHJhY2tlciwKICAgICAmcmVwb3J0VW5jYXVnaHRFeGNl
cHRpb25BdEV2ZW50TG9vcCwKKyAgICAmY3VycmVudFNjcmlwdEV4ZWN1dGlvbk93bmVyLAorICAg
ICZzY3JpcHRFeGVjdXRpb25TdGF0dXMsCiAgICAgJmRlZmF1bHRMYW5ndWFnZSwKICAgICBudWxs
cHRyLCAvLyBjb21waWxlU3RyZWFtaW5nCiAgICAgbnVsbHB0ciwgLy8gaW5zdGFudGlhdGVTdHJl
YW1pbmcKQEAgLTEwMCw2ICsxMDIsMTIgQEAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogSlNXb3Jr
bGV0R2xvYmFsU2NvcGVCYXNlOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKICAgICBy
ZXR1cm4gbV93cmFwcGVkLmdldCgpOwogfQogCitKU0M6OlNjcmlwdEV4ZWN1dGlvblN0YXR1cyBK
U1dvcmtsZXRHbG9iYWxTY29wZUJhc2U6OnNjcmlwdEV4ZWN1dGlvblN0YXR1cyhKU0M6OkpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNPYmplY3QqIG93bmVyKQoreworICAgIEFT
U0VSVF9VTlVTRUQob3duZXIsIGdsb2JhbE9iamVjdCA9PSBvd25lcik7CisgICAgcmV0dXJuIGpz
Q2FzdDxKU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UqPihnbG9iYWxPYmplY3QpLT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCktPmpzY1NjcmlwdEV4ZWN1dGlvblN0YXR1cygpOworfQorCiBib29sIEpT
V29ya2xldEdsb2JhbFNjb3BlQmFzZTo6c3VwcG9ydHNSaWNoU291cmNlSW5mbyhjb25zdCBKU0ds
b2JhbE9iamVjdCogb2JqZWN0KQogewogICAgIHJldHVybiBKU0dsb2JhbE9iamVjdDo6c3VwcG9y
dHNSaWNoU291cmNlSW5mbyhvYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuaAppbmRleCBiOGExN2VjNGU3ZTJmYWNj
YmU4NDY3NGNhMDE0ZDEzNWJlNzA1OWYzLi40NGUyZGY0MmI2ZDVhODE5YmZlNjU2YzdhMDY5MWE1
Y2E1Y2MzNWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmts
ZXRHbG9iYWxTY29wZUJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dv
cmtsZXRHbG9iYWxTY29wZUJhc2UuaApAQCAtNjEsNiArNjEsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIGJvb2wgc2hvdWxkSW50ZXJydXB0U2NyaXB0KGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3Qq
KTsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcnJ1cHRTY3JpcHRCZWZvcmVUaW1lb3V0KGNv
bnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICBzdGF0aWMgSlNDOjpSdW50aW1lRmxhZ3Mg
amF2YVNjcmlwdFJ1bnRpbWVGbGFncyhjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAg
c3RhdGljIEpTQzo6U2NyaXB0RXhlY3V0aW9uU3RhdHVzIHNjcmlwdEV4ZWN1dGlvblN0YXR1cyhK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpKU09iamVjdCopOwogICAgIHN0YXRpYyB2b2lkIHF1
ZXVlTWljcm90YXNrVG9FdmVudExvb3AoSlNDOjpKU0dsb2JhbE9iamVjdCYsIFJlZjxKU0M6Ok1p
Y3JvdGFzaz4mJik7CiAKICAgICB2b2lkIGNsZWFyRE9NR3VhcmRlZE9iamVjdHMoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAppbmRleCA3NTcyM2I4
NDIxYzRlNGZlZWQxMTY3NmM5OTUyNGQ4Y2U5OGNhOWEyLi5mMjFkODExNGY5NjM1MGQyMDBjYzNj
MTZhM2NkMWY2YTUxNzg2YWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuY3BwCkBAIC0zNyw2ICszNyw4IEBACiAjaW5jbHVkZSAiRXJyb3JFdmVudC5o
IgogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdp
bmRvdy5oIgorI2luY2x1ZGUgIkpTV29ya2VyR2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJKU1dv
cmtsZXRHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIkxlZ2FjeVNjaGVtZVJlZ2lzdHJ5LmgiCiAj
aW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKICNpbmNsdWRlICJOYXZpZ2F0b3IuaCIKQEAgLTUzLDYg
KzU1LDcgQEAKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRl
ICJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1
ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5o
IgogI2luY2x1ZGUgIldvcmtlck5hdmlnYXRvci5oIgogI2luY2x1ZGUgIldvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlLmgiCkBAIC02MSw2ICs2NCw3IEBACiAjaW5jbHVkZSAiV29ya2xldEdsb2Jh
bFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9DYXRjaFNjb3BlLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
RGVmZXJyZWRXb3JrVGltZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9FeGNlcHRpb24u
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1Byb21pc2UuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9TY3JpcHRDYWxsU3RhY2suaD4KQEAgLTI1MCw2ICsyNTQsMTUgQEAgdm9pZCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0Ojpmb3JFYWNoQWN0aXZlRE9NT2JqZWN0KGNvbnN0IEZ1bmN0
aW9uPFNob3VsZENvbnRpbnUKICAgICB9CiB9CiAKK0pTQzo6U2NyaXB0RXhlY3V0aW9uU3RhdHVz
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmpzY1NjcmlwdEV4ZWN1dGlvblN0YXR1cygpIGNvbnN0
Cit7CisgICAgaWYgKGFjdGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQoKSkKKyAgICAgICAgcmV0
dXJuIEpTQzo6U2NyaXB0RXhlY3V0aW9uU3RhdHVzOjpTdXNwZW5kZWQ7CisgICAgaWYgKGFjdGl2
ZURPTU9iamVjdHNBcmVTdG9wcGVkKCkpCisgICAgICAgIHJldHVybiBKU0M6OlNjcmlwdEV4ZWN1
dGlvblN0YXR1czo6U3RvcHBlZDsKKyAgICByZXR1cm4gSlNDOjpTY3JpcHRFeGVjdXRpb25TdGF0
dXM6OlJ1bm5pbmc7Cit9CisKIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6c3VzcGVuZEFj
dGl2ZURPTU9iamVjdHMoUmVhc29uRm9yU3VzcGVuc2lvbiB3aHkpCiB7CiAgICAgY2hlY2tDb25z
aXN0ZW5jeSgpOwpAQCAtMjg0LDYgKzI5Nyw4IEBAIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6cmVzdW1lQWN0aXZlRE9NT2JqZWN0cyhSZWFzb25Gb3JTdXNwZW5zaW9uIHdoeSkKICAgICAg
ICAgcmV0dXJuIFNob3VsZENvbnRpbnVlOjpZZXM7CiAgICAgfSk7CiAKKyAgICB2bSgpLmRlZmVy
cmVkV29ya1RpbWVyLT5kaWRSZXN1bWVTY3JpcHRFeGVjdXRpb25Pd25lcigpOworCiAgICAgbV9h
Y3RpdmVET01PYmplY3RzQXJlU3VzcGVuZGVkID0gZmFsc2U7CiAKICAgICAvLyBJbiBjYXNlIHRo
ZXJlIHdlcmUgcGVuZGluZyBtZXNzYWdlcyBhdCB0aGUgdGltZSB0aGUgc2NyaXB0IGV4ZWN1dGlv
biBjb250ZXh0IGVudGVyZWQgdGhlIEJhY2tGb3J3YXJkQ2FjaGUsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAppbmRleCAyNWFhYjQ0NjBmZjk3YTE4ZWQwYmYx
M2FmYTllNDJkZjA4MjFjMjdlLi41ZTkwZjQxYjJmZGJmOWZlZTdmYjQwMzRiZmQwYzExODBiZWJm
OGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKQEAg
LTQ0LDYgKzQ0LDcgQEAgY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgRXhjZXB0aW9uOwogY2xhc3Mg
SlNQcm9taXNlOwogY2xhc3MgVk07CitlbnVtIGNsYXNzIFNjcmlwdEV4ZWN1dGlvblN0YXR1czsK
IH0KIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CkBAIC0xMzYsNiArMTM3LDggQEAgcHVibGljOgog
ICAgIGJvb2wgYWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
YWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZDsgfQogICAgIGJvb2wgYWN0aXZlRE9NT2JqZWN0
c0FyZVN0b3BwZWQoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2ZURPTU9iamVjdHNBcmVTdG9wcGVk
OyB9CiAKKyAgICBKU0M6OlNjcmlwdEV4ZWN1dGlvblN0YXR1cyBqc2NTY3JpcHRFeGVjdXRpb25T
dGF0dXMoKSBjb25zdDsKKwogICAgIC8vIENhbGxlZCBmcm9tIHRoZSBjb25zdHJ1Y3RvciBhbmQg
ZGVzdHJ1Y3RvcnMgb2YgQWN0aXZlRE9NT2JqZWN0LgogICAgIHZvaWQgZGlkQ3JlYXRlQWN0aXZl
RE9NT2JqZWN0KEFjdGl2ZURPTU9iamVjdCYpOwogICAgIHZvaWQgd2lsbERlc3Ryb3lBY3RpdmVE
T01PYmplY3QoQWN0aXZlRE9NT2JqZWN0Jik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNzllODhlZjk1YTg3MzI3YWUzNDU1
NzFjMjgzYTczZjE2OWZhYmQ3Yi4uODRiNDAwMThmYTgxMzJhZGI2ZTJlYjNlMjE4ODQyYjU5OGM1
MDNkYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIwLTEwLTA4ICBLZWl0aCBNaWxsZXIgIDxr
ZWl0aF9taWxsZXJAYXBwbGUuY29tPgorCisgICAgICAgIEZpbmFsaXplcnMgc2hvdWxkbid0IHJ1
biBpZiBldmVudHMgY2FuJ3QgZmlyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE0NTA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdh
LgorCisgICAgICAgIEFkZCB0ZXN0cyB0aGF0IGNoZWNrIHdlIGRvbid0IHJ1biBhbnkgdGFza3Mg
ZnJvbSBKU0MncyBldmVudCBsb29wIHdoaWxlIGNvbnRleHRzCisgICAgICAgIGFyZSBzdXNwZW5k
ZWQvc3RvcHBlZC4gQWxzbyBza2lwIHRoZSBXQVNNIHRlc3RzIG9uIFdpbiBiZWNhdXNlIFdBU00g
ZG9lc24ndCB3b3JrCisgICAgICAgIHRoZXJlLgorCisgICAgICAgICogZmFzdC9mcmFtZXMvZGV0
YWNoZWQtZnJhbWUtd2FzbS1yZXNvbHZlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9mcmFtZXMvZGV0YWNoZWQtZnJhbWUtd2FzbS1yZXNvbHZlLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvaGlzdG9yeS9wYWdlLWNhY2hlLWFjdGl2ZS1maW5hbGl6YXRpb24tcmVnaXN0
cnktY2FsbGJhY2stZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2hpc3Rvcnkv
cGFnZS1jYWNoZS1hY3RpdmUtZmluYWxpemF0aW9uLXJlZ2lzdHJ5LWNhbGxiYWNrLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvaGlzdG9yeS9wYWdlLWNhY2hlLXdhc20tcHJvbWlzZS1yZXNv
bHZlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9oaXN0b3J5L3BhZ2UtY2Fj
aGUtd2FzbS1wcm9taXNlLXJlc29sdmUuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0v
d2luL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMjAtMTAtMDggIFphbGFuIEJ1anRhcyAgPHphbGFu
QGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJbnRlZ3JhdGlvbl0gRW5hYmxlIGZsb2F0IGNs
ZWFyIGZvciA8YnI+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4
cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCmlu
ZGV4IGZiY2FiODQwMzFhZjU4NzhiMDcxZmYyZTNmN2Q1ZjMyYTY1ZjJkNmUuLmMxMzM3ZTM3Mjgy
OGQ0ZGM5ODRhZmM4ZjA3NDk0ZmViZmU0ODg4YzAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dp
bi9UZXN0RXhwZWN0YXRpb25zCkBAIC02OTksNiArNjk5LDEwIEBAIGZhc3QvdmlzdWFsLXZpZXdw
b3J0L3pvb21lZC1maXhlZC1zY3JvbGwtZG93bi10aGVuLXVwLmh0bWwgWyBGYWlsdXJlIF0KIHdl
YmtpdC5vcmcvYi83NzU2OCBmYXN0L3RleHQvbG9jYWxlLXNoYXBpbmcuaHRtbCBbIEltYWdlT25s
eUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzc3NTY4IGZhc3QvdGV4dC9sb2NhbGUtc2hhcGluZy1j
b21wbGV4Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAorIyBXZWJBc3NlbWJseSBkb2Vzbid0
IGV4aXN0IG9uIFdpbmRvd3MKK2Zhc3QvZnJhbWVzL2RldGFjaGVkLWZyYW1lLXdhc20tcmVzb2x2
ZS5odG1sIFsgU2tpcCBdCitmYXN0L2hpc3RvcnkvcGFnZS1jYWNoZS13YXNtLXByb21pc2UtcmVz
b2x2ZS5odG1sIFsgU2tpcCBdCisKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIyMjIyMjIyMj
IyAgICBFbmQgTWlzc2luZyBGdW5jdGlvbmFsaXR5IFByZXZlbnRzIFRlc3RpbmcgICAgICAgICAj
IyMjIyMjIyMjIyMjIwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK
</data>

          </attachment>
      

    </bug>

</bugzilla>