<?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>230646</bug_id>
          
          <creation_ts>2021-09-22 15:31:40 -0700</creation_ts>
          <short_desc>[Cocoa] add _WKInspectorExtension SPI to evaluate script on an extension tab</short_desc>
          <delta_ts>2021-10-19 16:28:26 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=231831</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Blaze Burg">bburg</reporter>
          <assigned_to name="Blaze Burg">bburg</assigned_to>
          <cc>bburg</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pangle</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1796235</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2021-09-22 15:31:40 -0700</bug_when>
    <thetext>Needed to write tests for some bugs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796236</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-22 15:31:59 -0700</bug_when>
    <thetext>&lt;rdar://problem/83420328&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796968</commentid>
    <comment_count>2</comment_count>
      <attachid>439171</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2021-09-24 11:15:36 -0700</bug_when>
    <thetext>Created attachment 439171
Patch v1.0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797010</commentid>
    <comment_count>3</comment_count>
      <attachid>439187</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2021-09-24 13:20:25 -0700</bug_when>
    <thetext>Created attachment 439187
Patch v1.0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797027</commentid>
    <comment_count>4</comment_count>
      <attachid>439187</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-09-24 14:06:20 -0700</bug_when>
    <thetext>Comment on attachment 439187
Patch v1.0

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

r=me, neat stuff! =D

&gt; Source/WebCore/inspector/InspectorFrontendHost.cpp:714
&gt; +    if (!is&lt;HTMLIFrameElement&gt;(extensionFrame))

Instead of doing this check manually, why not just make the `extensionFrame` parameter be a `HTMLIFrameElement?
```
    [Conditional=INSPECTOR_EXTENSIONS] any evaluateScriptInExtensionTab(HTMLIFrameElement extensionFrame, DOMString scriptSource);
```

&gt; Source/WebCore/inspector/InspectorFrontendHost.cpp:718
&gt; +    Frame* contentFrame = extensionFrameElement.contentFrame();

Does this need a `RefPtr`?  Is it possible for the evaluated script to remove the frame?

&gt; Source/WebCore/inspector/InspectorFrontendHost.cpp:727
&gt; +    ValueOrException result =  contentFrame-&gt;script().evaluateInWorld(ScriptSourceCode(scriptSource), mainThreadNormalWorld());

Style: double space

Why not just use `auto` instead of adding the `using` above?

&gt; Source/WebCore/inspector/InspectorFrontendHost.cpp:732
&gt; +    return ExceptionOr&lt;JSC::JSValue&gt;(WTFMove(result.value()));

Is the `ExceptionOr&lt;JSC::JSValue&gt;` cast actually needed?  Isn&apos;t `result.value()` already a `JSC::JSValue`?

&gt; Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController.js:182
&gt; +        let iframe = tabContentView.iframeElement;

NIT: this kinda somewhat feels almost like a layering violation in that you&apos;re exposing internal details of the `WI.WebInspectorExtensionTabContentView`, but I suppose it&apos;s preferable to having the `InspectorFrontendHost` call here instead of inside view code :/

&gt; Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController.js:189
&gt; +            let result = InspectorFrontendHost.evaluateScriptInExtensionTab(iframe, scriptSource);

Style: i&apos;d inline this

&gt; Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController.js:192
&gt; +            return {&quot;error&quot;: error.message};

Style: you can omit the quotes around the key

&gt; Source/WebInspectorUI/UserInterface/Main.html:30
&gt; +        Note that some WebKit ports may set custom &apos;frame-src&apos;, &apos;img-src&apos;, and &apos;connect-src&apos; directives via HTTP response header.

Do we need to file a bug on other ports about this?

&gt; Source/WebInspectorUI/UserInterface/Views/WebInspectorExtensionTabContentView.js:41
&gt;          this._sourceURL = sourceURL;

Do we actually need to save the `sourceURL` to a member property anymore?

&gt; Source/WebInspectorUI/UserInterface/Views/WebInspectorExtensionTabContentView.js:61
&gt; +    get iframeElement()

Style: you can make this into a single line getter up above

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKInspectorExtensionTesting.mm:48
&gt; +            capturedBlock([NSError errorWithDomain:WKErrorDomain code:WKErrorUnknown userInfo:@{ NSLocalizedFailureReasonErrorKey: Inspector::extensionErrorToString(result.error())}], nil);

Style: missing space before `}`

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKInspectorExtensionTesting.mm:58
&gt; +        id body = API::SerializedScriptValue::deserialize(valueOrException.value()-&gt;internalRepresentation(), 0);

NIT: I&apos;d inline this

&gt; Source/WebKit/UIProcess/Inspector/WebInspectorUIExtensionControllerProxy.cpp:212
&gt; +        weakThis-&gt;m_inspectorPage-&gt;sendWithAsyncReply(Messages::WebInspectorUIExtensionController::EvaluateScriptInExtensionTab {extensionTabID, scriptSource}, [completionHandler = WTFMove(completionHandler)](const IPC::DataReference&amp; dataReference, const std::optional&lt;WebCore::ExceptionDetails&gt;&amp; details, const std::optional&lt;Inspector::ExtensionError&gt; error) mutable {

missing `&amp;` for `error`

&gt; Source/WebKit/UIProcess/Inspector/WebInspectorUIExtensionControllerProxy.cpp:219
&gt; +                Expected&lt;RefPtr&lt;API::SerializedScriptValue&gt;, WebCore::ExceptionDetails&gt; returnedValue = makeUnexpected(details.value());

NIT: I&apos;d just inline this

&gt; Source/WebKit/UIProcess/Inspector/WebInspectorUIExtensionControllerProxy.cpp:223
&gt; +            completionHandler({ { API::SerializedScriptValue::adopt(Vector { dataReference.data(), dataReference.size() }).ptr() } });

NIT: Is the `Vector` necessary?

&gt; Source/WebKit/WebProcess/Inspector/WebInspectorUIExtensionController.cpp:382
&gt; +        auto* frontendGlobalObject = weakThis-&gt;m_frontendClient-&gt;frontendAPIDispatcher().frontendGlobalObject();

NIT: Should we `Ref strongThis = *weakThis.get();` somewhere so that we don&apos;t keep having to deref?  Or perhaps also capture `this` and completely drop `weakThis-&gt;`?

&gt; Source/WebKit/WebProcess/Inspector/WebInspectorUIExtensionController.cpp:406
&gt; +        ASSERT(result.has_value());

Why?

&gt; Source/WebKit/WebProcess/Inspector/WebInspectorUIExtensionController.cpp:420
&gt; +        RefPtr&lt;SerializedScriptValue&gt; serializedResultValue = SerializedScriptValue::create(*frontendGlobalObject, resultPayload);

`auto`?

&gt; Tools/ChangeLog:13
&gt; +        This is a bug and will be addressed as part of https://bugs.webkit.org/show_bug.cgi?id=230758.

I&apos;d maybe add this as a FIXME comment somewhere inside `WI.WebInspectorExtensionTabContentView` too

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKInspectorExtension.mm:158
&gt; +    auto scriptSource1 = @&quot;window._secretValue = {&apos;answer&apos;:42}&quot;;

you dont need `&apos;` for simple object keys :)

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKInspectorExtension.mm:166
&gt; +    auto scriptSource2 = @&quot;window._secretValue&quot;;

Could we also do another test just to make sure that we&apos;re indeed actually evaluating inside `InspectorExtension-basic-tab.html` (e.g. `window.top !== window`)?  Maybe instead of setting `window._secretValue` you could have that HTML file set it and then retrieve it in this test so that you&apos;re actually verifying it comes from _that_ file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797032</commentid>
    <comment_count>5</comment_count>
      <attachid>439187</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2021-09-24 14:18:04 -0700</bug_when>
    <thetext>Comment on attachment 439187
Patch v1.0

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

&gt; Source/WebKit/ChangeLog:18
&gt; +        Along the way, tweak Web Inspector&apos;s CSP policy to allow loading images from
&gt; +        custom URL schemes as specified using _WKInspectorConfiguration.

Is this so we can load the tab icons into the main frame even under testing situations? Might be nice to give that example here.

&gt; Source/WebKit/ChangeLog:27
&gt; +        Cribbed from evaluateScript(). Call through to the shared extension controller.

Aside: I don&apos;t think it can be called cribbing when you clearly attribute that fact.

&gt; Source/WebKit/UIProcess/API/APIInspectorExtension.h:52
&gt; -    void reloadIgnoringCache(const std::optional&lt;bool&gt;&amp; ignoreCache, const std::optional&lt;WTF::String&gt;&amp; userAgent, const std::optional&lt;WTF::String&gt;&amp; injectedScript,  WTF::CompletionHandler&lt;void(Inspector::ExtensionEvaluationResult)&gt;&amp;&amp;);
&gt; +    void reloadIgnoringCache(const std::optional&lt;bool&gt;&amp; ignoreCache, const std::optional&lt;WTF::String&gt;&amp; userAgent, const std::optional&lt;WTF::String&gt;&amp; injectedScript, WTF::CompletionHandler&lt;void(Inspector::ExtensionEvaluationResult)&gt;&amp;&amp;);

Huh?

&gt; Tools/TestWebKitAPI/cocoa/TestInspectorURLSchemeHandler.mm:95
&gt; +        [urlSchemeTask didReceiveResponse:urlResponse.get()];
&gt; +        [urlSchemeTask didReceiveData:fileData];
&gt; +        [urlSchemeTask didFinish];

FYI I think this will suffer from rdar://82814846 which hasn&apos;t been fixed yet for InspectorResourceURLSchemeHandler. Probably won&apos;t run into it unless you you plan on starting and stopping these tasks quickly in your test, but just an FYI. I can add a note to implement the fix here as well when I get to it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797215</commentid>
    <comment_count>6</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2021-09-25 12:11:17 -0700</bug_when>
    <thetext>(In reply to Patrick Angle from comment #5)
&gt; Comment on attachment 439187 [details]
&gt; Patch v1.0
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=439187&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/ChangeLog:18
&gt; &gt; +        Along the way, tweak Web Inspector&apos;s CSP policy to allow loading images from
&gt; &gt; +        custom URL schemes as specified using _WKInspectorConfiguration.
&gt; 
&gt; Is this so we can load the tab icons into the main frame even under testing
&gt; situations? Might be nice to give that example here.

Yep, good idea.

&gt; &gt; Source/WebKit/ChangeLog:27
&gt; &gt; +        Cribbed from evaluateScript(). Call through to the shared extension controller.
&gt; 
&gt; Aside: I don&apos;t think it can be called cribbing when you clearly attribute
&gt; that fact.

LOL, point taken.

&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/APIInspectorExtension.h:52
&gt; &gt; -    void reloadIgnoringCache(const std::optional&lt;bool&gt;&amp; ignoreCache, const std::optional&lt;WTF::String&gt;&amp; userAgent, const std::optional&lt;WTF::String&gt;&amp; injectedScript,  WTF::CompletionHandler&lt;void(Inspector::ExtensionEvaluationResult)&gt;&amp;&amp;);
&gt; &gt; +    void reloadIgnoringCache(const std::optional&lt;bool&gt;&amp; ignoreCache, const std::optional&lt;WTF::String&gt;&amp; userAgent, const std::optional&lt;WTF::String&gt;&amp; injectedScript, WTF::CompletionHandler&lt;void(Inspector::ExtensionEvaluationResult)&gt;&amp;&amp;);
&gt; 
&gt; Huh?

I think there was a trailing space or something. ¯\_(ツ)_/¯ 

&gt; &gt; Tools/TestWebKitAPI/cocoa/TestInspectorURLSchemeHandler.mm:95
&gt; &gt; +        [urlSchemeTask didReceiveResponse:urlResponse.get()];
&gt; &gt; +        [urlSchemeTask didReceiveData:fileData];
&gt; &gt; +        [urlSchemeTask didFinish];
&gt; 
&gt; FYI I think this will suffer from rdar://82814846 which hasn&apos;t been fixed
&gt; yet for InspectorResourceURLSchemeHandler. Probably won&apos;t run into it unless
&gt; you you plan on starting and stopping these tasks quickly in your test, but
&gt; just an FYI. I can add a note to implement the fix here as well when I get
&gt; to it.

Thanks for mentioning it. It indeed seems unlikely in an API test, but reducing the potential for flakiness is worth porting the fix to this simpler class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797217</commentid>
    <comment_count>7</comment_count>
      <attachid>439187</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2021-09-25 12:28:49 -0700</bug_when>
    <thetext>Comment on attachment 439187
Patch v1.0

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

&gt;&gt; Source/WebCore/inspector/InspectorFrontendHost.cpp:714
&gt;&gt; +    if (!is&lt;HTMLIFrameElement&gt;(extensionFrame))
&gt; 
&gt; Instead of doing this check manually, why not just make the `extensionFrame` parameter be a `HTMLIFrameElement?
&gt; ```
&gt;     [Conditional=INSPECTOR_EXTENSIONS] any evaluateScriptInExtensionTab(HTMLIFrameElement extensionFrame, DOMString scriptSource);
&gt; ```

Sounds reasonable. I was hesitant at first to use more IDL magic since I had quite a hard time getting the result-wrapping code to work.

&gt;&gt; Source/WebCore/inspector/InspectorFrontendHost.cpp:718
&gt;&gt; +    Frame* contentFrame = extensionFrameElement.contentFrame();
&gt; 
&gt; Does this need a `RefPtr`?  Is it possible for the evaluated script to remove the frame?

Good catch! I pasted the two uses of `contentFrame` into the function separately, and didn&apos;t realize the second use is unguarded.

&gt;&gt; Source/WebCore/inspector/InspectorFrontendHost.cpp:727
&gt;&gt; +    ValueOrException result =  contentFrame-&gt;script().evaluateInWorld(ScriptSourceCode(scriptSource), mainThreadNormalWorld());
&gt; 
&gt; Style: double space
&gt; 
&gt; Why not just use `auto` instead of adding the `using` above?

I found ValueOrException to be helpful in remembering what the type of `result` actually is . The top-level result from the InspectorFrontendAPIDispatcher method is an Expected&lt;Expected&lt;&gt;&gt;, so we have to consider v.error(), v.result().result(), and v.result.error(). But here, result is equivalent to v.result().

&gt;&gt; Source/WebCore/inspector/InspectorFrontendHost.cpp:732
&gt;&gt; +    return ExceptionOr&lt;JSC::JSValue&gt;(WTFMove(result.value()));
&gt; 
&gt; Is the `ExceptionOr&lt;JSC::JSValue&gt;` cast actually needed?  Isn&apos;t `result.value()` already a `JSC::JSValue`?

I&apos;ll try again, but my recollection is that this did not compile without the explicit constructor call.

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController.js:182
&gt;&gt; +        let iframe = tabContentView.iframeElement;
&gt; 
&gt; NIT: this kinda somewhat feels almost like a layering violation in that you&apos;re exposing internal details of the `WI.WebInspectorExtensionTabContentView`, but I suppose it&apos;s preferable to having the `InspectorFrontendHost` call here instead of inside view code :/

This controller creates the extension tab content views in the first place, so it seems fine to me.

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController.js:189
&gt;&gt; +            let result = InspectorFrontendHost.evaluateScriptInExtensionTab(iframe, scriptSource);
&gt; 
&gt; Style: i&apos;d inline this

OK

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController.js:192
&gt;&gt; +            return {&quot;error&quot;: error.message};
&gt; 
&gt; Style: you can omit the quotes around the key

OK

&gt;&gt; Source/WebInspectorUI/UserInterface/Main.html:30
&gt;&gt; +        Note that some WebKit ports may set custom &apos;frame-src&apos;, &apos;img-src&apos;, and &apos;connect-src&apos; directives via HTTP response header.
&gt; 
&gt; Do we need to file a bug on other ports about this?

I don&apos;t recall what happened the last time I relaxed the base CSP policy. Do other ports care about this? The only complication I&apos;d imagine is that maybe some tests depend on loading images from file: protocol.

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/WebInspectorExtensionTabContentView.js:41
&gt;&gt;          this._sourceURL = sourceURL;
&gt; 
&gt; Do we actually need to save the `sourceURL` to a member property anymore?

I suppose in isolation it&apos;s not strictly necessary, but it&apos;s critical to debugging situations with multiple extension tabs.

The ultimate bug that I&apos;m trying to fix is to make the iframe persistent. I am not sure if it is correct to create the iframe in the constructor.

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/WebInspectorExtensionTabContentView.js:61
&gt;&gt; +    get iframeElement()
&gt; 
&gt; Style: you can make this into a single line getter up above

ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797995</commentid>
    <comment_count>8</comment_count>
      <attachid>439507</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2021-09-28 12:36:04 -0700</bug_when>
    <thetext>Created attachment 439507
Patch v2.0

New patch addresses all outstanding feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798017</commentid>
    <comment_count>9</comment_count>
      <attachid>439507</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-09-28 13:38:45 -0700</bug_when>
    <thetext>Comment on attachment 439507
Patch v2.0

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

&gt; Source/WebCore/inspector/InspectorFrontendHost.cpp:718
&gt; +    Ref&lt;Frame&gt; protectedFrame(*frame);

I think you should `RefPtr` above to avoid any TOC/TOU issues

&gt; Source/WebInspectorUI/UserInterface/Protocol/InspectorFrontendAPI.js:246
&gt;      }

Style: missing trailing `,`

&gt; Source/WebInspectorUI/UserInterface/Views/TabBrowser.js:123
&gt; +        let shouldSaveTab = this.selectedTabContentView?.constructor.shouldSaveTab() || this.selectedTabContentView?.constructor.shouldPinTab();

NIT: it&apos;d be nice to avoid doing this outside the `console.assert` so that production builds (where `console.assert` are stripped) don&apos;t have this unnecessarily

&gt; Source/WebInspectorUI/UserInterface/Views/WebInspectorExtensionTabContentView.js:47
&gt; +        this._iframeElement.onload = () =&gt; this._extensionFrameDidLoad();

Style: `this._iframeElement.addEventListener(&quot;load&quot;, this._handleExtensionFrameLoad.bind(this));`</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798056</commentid>
    <comment_count>10</comment_count>
      <attachid>439523</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2021-09-28 14:50:18 -0700</bug_when>
    <thetext>Created attachment 439523
Patch v2.0.1 (tvOS build fix)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798460</commentid>
    <comment_count>11</comment_count>
      <attachid>439628</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2021-09-29 11:12:33 -0700</bug_when>
    <thetext>Created attachment 439628
Patch v2.0.2 (iOS build fix)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798596</commentid>
    <comment_count>12</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2021-09-29 15:12:45 -0700</bug_when>
    <thetext>(In reply to BJ Burg from comment #11)
&gt; Created attachment 439628 [details]
&gt; Patch v2.0.2 (iOS build fix)

Remaining EWS failures are `api-ios`. These look unrelated, so proceeding to cq+.


&gt;    TestWebKitAPI.WebKitLegacy.AudioSessionCategoryIOS
&gt;        2021-09-29 14:35:27.776 TestWebKitAPI[55097:7593733] nil host used in call to allowsSpecificHTTPSCertificateForHost
&gt;        2021-09-29 14:35:27.776 TestWebKitAPI[55097:7593733] nil host used in call to allowsAnyHTTPSCertificateForHost:
&gt;    TestWebKitAPI.WebKitLegacy.PreemptVideoFullscreen
&gt;        2021-09-29 14:36:04.737 TestWebKitAPI[55127:7597038] nil host used in call to allowsSpecificHTTPSCertificateForHost
&gt;        2021-09-29 14:36:04.737 TestWebKitAPI[55127:7597038] nil host used in call to allowsAnyHTTPSCertificateForHost:
&gt;    TestWebKitAPI.WebKitLegacy.ScrollingDoesNotPauseMedia
&gt;        2021-09-29 14:36:39.243 TestWebKitAPI[55139:7598658] nil host used in call to allowsSpecificHTTPSCertificateForHost
&gt;        2021-09-29 14:36:39.243 TestWebKitAPI[55139:7598658] nil host used in call to allowsAnyHTTPSCertificateForHost:</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798665</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-09-29 16:28:30 -0700</bug_when>
    <thetext>Committed r283276 (242305@main): &lt;https://commits.webkit.org/242305@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 439628.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439171</attachid>
            <date>2021-09-24 11:15:36 -0700</date>
            <delta_ts>2021-09-24 13:20:21 -0700</delta_ts>
            <desc>Patch v1.0</desc>
            <filename>bug-230646-20210924111536.patch</filename>
            <type>text/plain</type>
            <size>67527</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzMDQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzEyMDdiOTFhNWY0YmI1
OGE1ZGZiMTZjNGZkNjk5MDc2ZTdlMDlmNy4uMTcwNmU1OGZhYWQwMjEyNjU5YzU2NWJlYjJiMTM4
MDZhNzNlYTFkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIxLTA5LTI0ICBCSiBC
dXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gYWRkIF9XS0luc3BlY3Rv
ckV4dGVuc2lvbiBTUEkgdG8gZXZhbHVhdGUgc2NyaXB0IG9uIGFuIGV4dGVuc2lvbiB0YWIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDY0NgorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vODM0MjAzMjg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgRXhlcmNpc2VkIGJ5IG5ldyBBUEkgdGVzdDogV0tJbnNw
ZWN0b3JFeHRlbnNpb24uQ2FuRXZhbHVhdGVTY3JpcHRJbkV4dGVuc2lvblRhYgorCisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5oOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaWRsOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JGcm9udGVuZEhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRI
b3N0OjpldmFsdWF0ZVNjcmlwdEluRXh0ZW5zaW9uVGFiKToKKyAgICAgICAgRmluZCB0aGUgZ2xv
YmFsIG9iamVjdCB0aGF0IGNvcnJlc3BvbmRzIHRvIHRoZSBwYXNzZWQtaW4gPGlmcmFtZT4gYW5k
CisgICAgICAgIHRyeSB0byBldmFsdWF0ZSBzY3JpcHRTb3VyY2UgaW4gdGhlIG1haW5UaHJlYWRO
b3JtYWxXb3JsZCgpIG9mIHRoYXQgPGlmcmFtZT4uCisKIDIwMjEtMDktMjQgIERldmluIFJvdXNz
byAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCB0eXBlY2hlY2tpbmcgYGlzYCBv
dmVybG9hZHMgZm9yIGBzdGQ6OnVuaXF1ZV9wdHJgLCBgV1RGOjpVbmlxdWVSZWZgLCBhbmQgYFdU
Rjo6V2Vha1B0cmAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDY2YjlhMmZhZDM3M2ZiMGQ0
OGJlNWUyODkyYzM2NWFhZWE3OTNiYjAuLjk0MzZjNDc2ZGFiNGU0NjZkMDVkNTY1OTBmODhkMTdi
Y2JjMmQ4ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDIx
LTA5LTI0ICBCSiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gYWRk
IF9XS0luc3BlY3RvckV4dGVuc2lvbiBTUEkgdG8gZXZhbHVhdGUgc2NyaXB0IG9uIGFuIGV4dGVu
c2lvbiB0YWIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzMDY0NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODM0MjAzMjg+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgbmV3IEluc3BlY3RvckZy
b250ZW5kQVBJIG1ldGhvZCB0byBldmFsdWF0ZSBzY3JpcHQgb24gYW4gaWZyYW1lIHdpdGhpbgor
ICAgICAgICBXZWIgSW5zcGVjdG9yLiBUaGlzIGluIHR1cm4gY2FsbHMgb3V0IHRvIEluc3BlY3Rv
ckZyb250ZW5kSG9zdCB0byBkbyB0aGUgYWN0dWFsIGV2YWx1YXRpb24uCisgICAgICAgIE90aGVy
d2lzZSwgdGhlIENTUCBwb2xpY3kgc2V0IGJ5IHRoZSB0YWIgY29udGVudCBtYXkgYmxvY2sgYW55
IHN1Y2ggZXZhbHVhdGlvbgorICAgICAgICBpZiB0aGUgJ3NjcmlwdC1zcmMnIGRpcmVjdGl2ZSBk
b2VzIG5vdCBpbmNsdWRlICd1bnNhZmUtZXZhbCcuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L1Byb3RvY29sL0luc3BlY3RvckZyb250ZW5kQVBJLmpzOgorICAgICAgICAoSW5zcGVjdG9yRnJv
bnRlbmRBUEkuc2hvd0V4dGVuc2lvblRhYik6CisgICAgICAgIChJbnNwZWN0b3JGcm9udGVuZEFQ
SS5ldmFsdWF0ZVNjcmlwdEluRXh0ZW5zaW9uVGFiKToKKyAgICAgICAgQ2FsbCB0aHJvdWdoIHRv
IHRoZSBXZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyIG1ldGhvZC4KKworICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxl
ci5qczoKKyAgICAgICAgKFdJLldlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIucHJvdG90
eXBlLmV2YWx1YXRlU2NyaXB0SW5FeHRlbnNpb25UYWIpOiBBZGRlZC4KKyAgICAgICAgVHJ5IHRv
IGdldCB0aGUgPGlmcmFtZT4gZm9yIGEgZXh0ZW5zaW9uVGFiSUQsIGFuZCB1c2UgSW5zcGVjdG9y
RnJvbnRlbmRIb3N0IHRvCisgICAgICAgIGV2YWx1YXRlIHNjcmlwdCBpbiB0aGUgY29udGV4dCBv
ZiB0aGUgPGlmcmFtZT4uIEJlIHN1cmUgdG8gY29ycmVjdGx5IHdyYXAgdGhlIHJlc3VsdC4KKwor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29u
dGVudFZpZXcuanM6CisgICAgICAgIChXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50
Vmlldyk6CisgICAgICAgIChXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50Vmlldy5w
cm90b3R5cGUuZ2V0IGlmcmFtZUVsZW1lbnQpOgorICAgICAgICAoV0kuV2ViSW5zcGVjdG9yRXh0
ZW5zaW9uVGFiQ29udGVudFZpZXcuc2hvdWxkU2F2ZVRhYik6CisgICAgICAgIChXSS5XZWJJbnNw
ZWN0b3JFeHRlbnNpb25UYWJDb250ZW50Vmlldy5wcm90b3R5cGUuaW5pdGlhbExheW91dCk6IERl
bGV0ZWQuCisgICAgICAgIFdoaWxlIHdyaXRpbmcgdGhlIEFQSSB0ZXN0LCBJIHNhdyB0aGF0IHRo
ZSBmaXJzdCBldmFsdWF0aW9uIGZyZXF1ZW50bHkgZmFpbGVkCisgICAgICAgIGJlY2F1c2UgdGhl
IDxpZnJhbWU+IGRpZCBub3QgZXhpc3QuIENoYW5nZSB0aGlzIGNsYXNzIHNvIHRoYXQgdGhlIDxp
ZnJhbWU+CisgICAgICAgIGlzIGNyZWF0ZWQgaW4gdGhlIGNvbnN0cnVjdG9yLiBBZGQgYSBnZXR0
ZXIgZm9yIHRoZSA8aWZyYW1lPiBlbGVtZW50LgorCisgICAgICAgICogVXNlckludGVyZmFjZS9N
YWluLmh0bWw6CisgICAgICAgIEFkanVzdCB0aGUgZGVmYXVsdCBDU1AgcG9saWN5IHRvIG5vdCBt
ZW50aW9uIGltZy1zcmMuIFRoaXMgYWxsb3dzIHBvcnRzIHN1Y2ggYXMKKyAgICAgICAgQ29jb2Eg
dG8gc2V0IHRoZWlyIG93biBpbWctc3JjIENTUCBkaXJlY3RpdmUuIFRoZXNlIGNoYW5nZXMgYXJl
IG5lY2Vzc2FyeSB0byBhbGxvdworICAgICAgICBpbWFnZXMgdG8gbG9hZCBmcm9tIGN1c3RvbSBV
Ukwgc2NoZW1lcy4KKwogMjAyMS0wOS0yMSAgQkogQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbQ29jb2FdIEFkZCBTUEkgdG8gc2VsZWN0IGEgdGFiIGNyZWF0ZWQgYnkgX1dLSW5z
cGVjdG9yRXh0ZW5zaW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGVmYjA0M2RhMmE3OWFkMmQxMTQwZWMzYTVlMDA4
MGRiMTE3MjZmMTguLjVlM2U3YTVlNGVmMzdmNjc1NWQ2NDkwNzJiN2VhYThiNjJlZDhmOTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNTcgQEAKKzIwMjEtMDktMjQgIEJKIEJ1cmcgIDxiYnVyZ0BhcHBs
ZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBhZGQgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uIFNQSSB0
byBldmFsdWF0ZSBzY3JpcHQgb24gYW4gZXh0ZW5zaW9uIHRhYgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwNjQ2CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS84MzQyMDMyOD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgbmV3IHRlc3RpbmcgQVBJIGZvciBldmFsdWF0aW5nIHNjcmlwdCBleHByZXNz
aW9ucyBpbiB0aGUgY29udGV4dCBvZiBhCisgICAgICAgIHRhYiBjcmVhdGVkIGJ5IF9XS0luc3Bl
Y3RvckV4dGVuc2lvbi4gRm9yIHRoZSBtb3N0IHBhcnQsIHRoaXMgaXMgaW1wbGVtZW50ZWQKKyAg
ICAgICAgaW4gdGhlIHNhbWUgd2F5IGFzIHRoZSAtZXZhbHVhdGVTY3JpcHQ6IG1ldGhvZCwgYnV0
IHRoZSBzY3JpcHQgaXMgZXZhbHVhdGVkCisgICAgICAgIHdpdGhpbiB0aGUgV2ViIEluc3BlY3Rv
ciBmcm9udGVuZCBpdHNlbGYgcmF0aGVyIHRoYW4gaW4gdGhlIGluc3BlY3RlZCBwYWdlLgorCisg
ICAgICAgIFRvIGF2b2lkIENTUCBpc3N1ZXMsIHRoZSBhY3R1YWwgZXZhbHVhdGlvbiBpcyBwZXJm
b3JtZWQgb24gc3ViZnJhbWVzIHVzaW5nIGEKKyAgICAgICAgbmV3IEluc3BlY3RvckZyb250ZW5k
SG9zdCBtZXRob2Qgd2hpY2ggdGFrZXMgYW4gPGlmcmFtZT4gYW5kIHNjcmlwdCBzb3VyY2UuCisK
KyAgICAgICAgQWxvbmcgdGhlIHdheSwgdHdlYWsgV2ViIEluc3BlY3RvcidzIENTUCBwb2xpY3kg
dG8gYWxsb3cgbG9hZGluZyBpbWFnZXMgZnJvbQorICAgICAgICBjdXN0b20gVVJMIHNjaGVtZXMg
YXMgc3BlY2lmaWVkIHVzaW5nIF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24uCisKKyAgICAgICAg
KiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICBBZGQgbmV3IGZpbGVzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9BUElJbnNwZWN0b3JFeHRlbnNpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUlu
c3BlY3RvckV4dGVuc2lvbi5jcHA6CisgICAgICAgIChBUEk6Okluc3BlY3RvckV4dGVuc2lvbjo6
ZXZhbHVhdGVTY3JpcHRJbkV4dGVuc2lvblRhYik6CisgICAgICAgIENyaWJiZWQgZnJvbSBldmFs
dWF0ZVNjcmlwdCgpLiBDYWxsIHRocm91Z2ggdG8gdGhlIHNoYXJlZCBleHRlbnNpb24gY29udHJv
bGxlci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5z
aW9uUHJpdmF0ZUZvclRlc3RpbmcuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb25UZXN0aW5nLm1tOiBBZGRlZC4KKyAgICAgICAgKC1b
X1dLSW5zcGVjdG9yRXh0ZW5zaW9uIF9ldmFsdWF0ZVNjcmlwdDppbkV4dGVuc2lvblRhYldpdGhJ
ZGVudGlmaWVyOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICBBZGRlZC4gQ2FsbCB0aHJv
dWdoIHRvIHRoZSBzaGFyZWQgZXh0ZW5zaW9uIGNvbnRyb2xsZXIuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNv
bnRyb2xsZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlclByb3h5OjpldmFsdWF0ZVNjcmlwdEluRXh0ZW5zaW9uVGFiKToKKyAgICAg
ICAgQ3JpYmJlZCBmcm9tIGV2YWx1YXRlU2NyaXB0KCkuIFNlbmQgSVBDIHRvIHRoZSBJbnNwZWN0
b3IgV2ViUHJvY2Vzcy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5zcGVj
dG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5tZXNzYWdlcy5pbjoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xs
ZXI6OmV2YWx1YXRlU2NyaXB0SW5FeHRlbnNpb25UYWIpOgorICAgICAgICBDcmliYmVkIGZyb20g
ZXZhbHVhdGVTY3JpcHRGb3JFeHRlbnNpb24uIENhbGwgaW50byB0aGUgZnJvbnRlbmQgQVBJCisg
ICAgICAgIHdoaWNoIHdpbGwgcGVyZm9ybSB0aGUgYWN0dWFsIGV2YWx1YXRpb24gb24gdGhlIDxp
ZnJhbWU+IGNvbnRlbnRXaW5kb3cuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL21h
Yy9XS0luc3BlY3RvclJlc291cmNlVVJMU2NoZW1lSGFuZGxlci5tbToKKyAgICAgICAgKC1bV0tJ
bnNwZWN0b3JSZXNvdXJjZVVSTFNjaGVtZUhhbmRsZXIgd2ViVmlldzpzdGFydFVSTFNjaGVtZVRh
c2s6XSk6CisgICAgICAgIFNwZWNpZnkgdGhlIGxpc3Qgb2YgY3VzdG9tIHByb3RvY29scyBhcyBh
bGxvd2FibGUgc291cmNlcyBmb3IgJ2ltZy1zcmMnLgorICAgICAgICBUaGUgJ2ltZy1zcmMnIGRp
cmVjdGl2ZSBhbHNvIGluY2x1ZGVzICdmaWxlOiBibG9iOiByZXNvdXJjZTonIGFzIGFsbG93YWJs
ZQorICAgICAgICBzb3VyY2VzLCBzaW5jZSB0aGlzIHdhcyB0aGUgcHJldmlvdXMgQ1NQIHBvbGlj
eSBkZWZpbmVkIGluIE1haW4uaHRtbC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9Hcm91
cEFjdGl2aXRpZXMvR3JvdXBBY3Rpdml0aWVzU2Vzc2lvbk5vdGlmaWVyLm1tOgorICAgICAgICBG
aXggVW5pZmllZFNvdXJjZXMgZmFsbG91dCBieSBpbmNsdWRpbmcgYSBtaXNzaW5nIGhlYWRlci4K
KwogMjAyMS0wOS0yMSAgQkogQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29j
b2FdIEFkZCBTUEkgdG8gc2VsZWN0IGEgdGFiIGNyZWF0ZWQgYnkgX1dLSW5zcGVjdG9yRXh0ZW5z
aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRl
bmRIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhv
c3QuY3BwCmluZGV4IGFlMjhiMmY5NzdlZmY5NGI1MzQwMTUxZTMyMzY3ODY0NTlhZWQ3NWUuLmNj
ZmVlMWY5ZTIwYTY2YTk3ODMyYTVmMjE2ZDAzYjkwYmYwODJhOGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCkBAIC00Miw2ICs0
Miw3IEBACiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiRm9jdXNDb250cm9sbGVy
LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJIVE1MSUZyYW1lRWxlbWVudC5oIgog
I2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVy
LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRGVidWdnYWJsZVR5cGUuaCIKQEAgLTY5LDYgKzcwLDcg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKK3Vz
aW5nIFZhbHVlT3JFeGNlcHRpb24gPSBFeHBlY3RlZDxKU0M6OkpTVmFsdWUsIEV4Y2VwdGlvbkRl
dGFpbHM+OwogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiBjbGFzcyBGcm9udGVuZE1lbnVQ
cm92aWRlciA6IHB1YmxpYyBDb250ZXh0TWVudVByb3ZpZGVyIHsKQEAgLTcwNiw2ICs3MDgsMzAg
QEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OmRpZEhpZGVFeHRlbnNpb25UYWIoY29uc3Qg
U3RyaW5nJiBleHRlbnNpb25JRCwgY29uc3QKICAgICAKICAgICBtX2NsaWVudC0+ZGlkSGlkZUV4
dGVuc2lvblRhYihleHRlbnNpb25JRCwgZXh0ZW5zaW9uVGFiSUQpOwogfQorCitFeGNlcHRpb25P
cjxKU0M6OkpTVmFsdWU+IEluc3BlY3RvckZyb250ZW5kSG9zdDo6ZXZhbHVhdGVTY3JpcHRJbkV4
dGVuc2lvblRhYihFbGVtZW50JiBleHRlbnNpb25GcmFtZSwgY29uc3QgU3RyaW5nJiBzY3JpcHRT
b3VyY2UpCit7CisgICAgaWYgKCFpczxIVE1MSUZyYW1lRWxlbWVudD4oZXh0ZW5zaW9uRnJhbWUp
KQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJNdXN0IHBh
c3MgYW4gPGlmcmFtZT4gZWxlbWVudC4iX3MgfTsKKworICAgIGF1dG8mIGV4dGVuc2lvbkZyYW1l
RWxlbWVudCA9IGRvd25jYXN0PEhUTUxJRnJhbWVFbGVtZW50PihleHRlbnNpb25GcmFtZSk7Cisg
ICAgRnJhbWUqIGNvbnRlbnRGcmFtZSA9IGV4dGVuc2lvbkZyYW1lRWxlbWVudC5jb250ZW50RnJh
bWUoKTsKKyAgICBpZiAoIWNvbnRlbnRGcmFtZSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IEludmFsaWRTdGF0ZUVycm9yLCAiVW5hYmxlIHRvIGZpbmQgZ2xvYmFsIG9iamVjdCBmb3IgPGlm
cmFtZT4iX3MgfTsKKworICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBmcmFtZUdsb2JhbE9iamVjdCA9
IGNvbnRlbnRGcmFtZS0+c2NyaXB0KCkuZ2xvYmFsT2JqZWN0KG1haW5UaHJlYWROb3JtYWxXb3Js
ZCgpKTsKKyAgICBpZiAoIWZyYW1lR2xvYmFsT2JqZWN0KQorICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJVbmFibGUgdG8gZmluZCBnbG9iYWwgb2JqZWN0IGZv
ciA8aWZyYW1lPiJfcyB9OworCisgICAgSlNDOjpTdXNwZW5kRXhjZXB0aW9uU2NvcGUgc2NvcGUo
JmZyYW1lR2xvYmFsT2JqZWN0LT52bSgpKTsKKyAgICBWYWx1ZU9yRXhjZXB0aW9uIHJlc3VsdCA9
ICBjb250ZW50RnJhbWUtPnNjcmlwdCgpLmV2YWx1YXRlSW5Xb3JsZChTY3JpcHRTb3VyY2VDb2Rl
KHNjcmlwdFNvdXJjZSksIG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKTsKKyAgICAKKyAgICBpZiAo
IXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCBy
ZXN1bHQuZXJyb3IoKS5tZXNzYWdlIH07CisKKyAgICByZXR1cm4gRXhjZXB0aW9uT3I8SlNDOjpK
U1ZhbHVlPihXVEZNb3ZlKHJlc3VsdC52YWx1ZSgpKSk7Cit9CisKICNlbmRpZiAvLyBFTkFCTEUo
SU5TUEVDVE9SX0VYVEVOU0lPTlMpCiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckZyb250ZW5kSG9zdC5oCmluZGV4IDZkMmU1NmM3YWU4ZmVkZmE2NTkwZjE0YjFh
ZGY4MDhhMmZhMDBiZjYuLjcwMzQ1NTgxMWZhOTEzMTUyOTZlNDUwMjA1ZmJmYzhkMDkyNzBiY2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhv
c3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0
LmgKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkNvbnRleHRNZW51LmgiCiAjaW5jbHVk
ZSAiQ29udGV4dE1lbnVQcm92aWRlci5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC0xNDEsNiArMTQyLDcgQEAgcHVibGljOgogI2lm
IEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKICAgICB2b2lkIGRpZFNob3dFeHRlbnNpb25U
YWIoY29uc3QgU3RyaW5nJiBleHRlbnNpb25JRCwgY29uc3QgU3RyaW5nJiBleHRlbnNpb25UYWJJ
RCk7CiAgICAgdm9pZCBkaWRIaWRlRXh0ZW5zaW9uVGFiKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9u
SUQsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uVGFiSUQpOworICAgIEV4Y2VwdGlvbk9yPEpTQzo6
SlNWYWx1ZT4gZXZhbHVhdGVTY3JpcHRJbkV4dGVuc2lvblRhYihFbGVtZW50JiBleHRlbnNpb25G
cmFtZSwgY29uc3QgU3RyaW5nJiBzY3JpcHRTb3VyY2UpOwogI2VuZGlmCiAKIHByaXZhdGU6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaWRs
CmluZGV4IDk3ZjgwNmYyYWMwZjMxYjg5NmU1OTcxMTk3OWJkZmFmYzdmOGVhMjkuLmFjNmJkZDIw
Y2Y2YTgxNmJkYzI3ZGI0NDEyYmNkMDI5YWJjNTEzZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaWRsCkBAIC0xMDAsNiArMTAwLDcg
QEAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBzdXBwb3J0c1dlYkV4dGVuc2lvbnM7
CiAgICAgW0NvbmRpdGlvbmFsPUlOU1BFQ1RPUl9FWFRFTlNJT05TXSB1bmRlZmluZWQgZGlkU2hv
d0V4dGVuc2lvblRhYihET01TdHJpbmcgZXh0ZW5zaW9uSUQsIERPTVN0cmluZyBleHRlbnNpb25U
YWJJRCk7CiAgICAgW0NvbmRpdGlvbmFsPUlOU1BFQ1RPUl9FWFRFTlNJT05TXSB1bmRlZmluZWQg
ZGlkSGlkZUV4dGVuc2lvblRhYihET01TdHJpbmcgZXh0ZW5zaW9uSUQsIERPTVN0cmluZyBleHRl
bnNpb25UYWJJRCk7CisgICAgW0NvbmRpdGlvbmFsPUlOU1BFQ1RPUl9FWFRFTlNJT05TXSBhbnkg
ZXZhbHVhdGVTY3JpcHRJbkV4dGVuc2lvblRhYihFbGVtZW50IGV4dGVuc2lvbkZyYW1lLCBET01T
dHJpbmcgc2NyaXB0U291cmNlKTsKIH07CiAKIGRpY3Rpb25hcnkgQ29udGV4dE1lbnVJdGVtIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xs
ZXJzL1dlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250
cm9sbGVyLmpzCmluZGV4IGVkYjA5YzA0YzcwYWU5NjViM2MxNzY1NWNhMTIwODE0ZjhhMjA0YTMu
LmVkYTM5NjdkMTg0YTQ2ODY2OTE2YmEzM2QxOTEwMzNjN2QxYmY3ZDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1dlYkluc3BlY3Rv
ckV4dGVuc2lvbkNvbnRyb2xsZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvQ29udHJvbGxlcnMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5qcwpA
QCAtMTcwLDYgKzE3MCwyOCBAQCBXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyID0g
Y2xhc3MgV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlciBleHRlbgogICAgICAgICAgICAg
cmV0dXJuIFdJLldlYkluc3BlY3RvckV4dGVuc2lvbi5FcnJvckNvZGUuSW50ZXJuYWxFcnJvcjsK
ICAgICAgICAgfQogICAgIH0KKworICAgIGV2YWx1YXRlU2NyaXB0SW5FeHRlbnNpb25UYWIoZXh0
ZW5zaW9uVGFiSUQsIHNjcmlwdFNvdXJjZSkKKyAgICB7CisgICAgICAgIGxldCB0YWJDb250ZW50
VmlldyA9IHRoaXMuX2V4dGVuc2lvblRhYkNvbnRlbnRWaWV3Rm9yRXh0ZW5zaW9uVGFiSURNYXAu
Z2V0KGV4dGVuc2lvblRhYklEKTsKKyAgICAgICAgaWYgKCF0YWJDb250ZW50VmlldykgeworICAg
ICAgICAgICAgV0kucmVwb3J0SW50ZXJuYWxFcnJvcigiVW5hYmxlIHRvIGV2YWx1YXRlIHdpdGgg
dW5rbm93biBleHRlbnNpb25UYWJJRDogIiArIGV4dGVuc2lvblRhYklEKTsKKyAgICAgICAgICAg
IHJldHVybiBXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb24uRXJyb3JDb2RlLkludmFsaWRSZXF1ZXN0
OworICAgICAgICB9CisKKyAgICAgICAgbGV0IGlmcmFtZSA9IHRhYkNvbnRlbnRWaWV3LmlmcmFt
ZUVsZW1lbnQ7CisgICAgICAgIGlmICghKGlmcmFtZSBpbnN0YW5jZW9mIEhUTUxJRnJhbWVFbGVt
ZW50KSkgeworICAgICAgICAgICAgV0kucmVwb3J0SW50ZXJuYWxFcnJvcigiVW5hYmxlIHRvIGV2
YWx1YXRlIHdpdGhvdXQgYW4gPGlmcmFtZT4gZm9yIGV4dGVuc2lvblRhYklEOiAiICsgZXh0ZW5z
aW9uVGFiSUQpOworICAgICAgICAgICAgcmV0dXJuIFdJLldlYkluc3BlY3RvckV4dGVuc2lvbi5F
cnJvckNvZGUuSW52YWxpZFJlcXVlc3Q7CisgICAgICAgIH0KKworICAgICAgICB0cnkgeworICAg
ICAgICAgICAgbGV0IHJlc3VsdCA9IEluc3BlY3RvckZyb250ZW5kSG9zdC5ldmFsdWF0ZVNjcmlw
dEluRXh0ZW5zaW9uVGFiKGlmcmFtZSwgc2NyaXB0U291cmNlKTsKKyAgICAgICAgICAgIHJldHVy
biB7cmVzdWx0fTsKKyAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHsKKyAgICAgICAgICAgIHJldHVy
biB7ImVycm9yIjogZXJyb3IubWVzc2FnZX07CisgICAgICAgIH0KKyAgICB9CiB9OwogCiBXSS5X
ZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLkV2ZW50ID0gewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCmluZGV4IGM0MDI1Y2ZmMzY3N2JjNzU2
Y2I3N2ZhNTU1ODhiMzQ1NWU3NTZjNGIuLmNmY2UxOGQ4M2E5NTgwMDUyODIzNzBhNTU0ZGZhNmM2
YzgyYTI5MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L01haW4uaHRtbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWlu
Lmh0bWwKQEAgLTI3LDEwICsyNywxMCBAQAogPGhlYWQ+CiAgICAgPG1ldGEgaHR0cC1lcXVpdj0i
Q29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgogICAgIDwh
LS0KLSAgICAgICAgTm90ZSB0aGF0IHNvbWUgV2ViS2l0IHBvcnRzIG1heSBzZXQgY3VzdG9tICdm
cmFtZS1zcmMnIGFuZCAnY29ubmVjdC1zcmMnIGRpcmVjdGl2ZXMgdmlhIEhUVFAgcmVzcG9uc2Ug
aGVhZGVyLgorICAgICAgICBOb3RlIHRoYXQgc29tZSBXZWJLaXQgcG9ydHMgbWF5IHNldCBjdXN0
b20gJ2ZyYW1lLXNyYycsICdpbWctc3JjJywgYW5kICdjb25uZWN0LXNyYycgZGlyZWN0aXZlcyB2
aWEgSFRUUCByZXNwb25zZSBoZWFkZXIuCiAgICAgICAgIFRoZSBjb21iaW5lZCBDU1AgcG9saWN5
IHJlcXVpcmVzIGEgcmVxdWVzdCB0byBiZSBhbGxvd2VkIGJ5IGJvdGggZGlyZWN0aXZlIGxpc3Rz
LCBzbyAnZGVmYXVsdC1zcmMnIGlzIG9taXR0ZWQuCiAgICAgLS0+Ci0gICAgPG1ldGEgaHR0cC1l
cXVpdj0iQ29udGVudC1TZWN1cml0eS1Qb2xpY3kiIGNvbnRlbnQ9ImltZy1zcmMgKiBmaWxlOiBi
bG9iOiByZXNvdXJjZTo7IG1lZGlhLXNyYyAqIGJsb2I6OyBmb250LXNyYyAqIGJsb2I6OyBzdHls
ZS1zcmMgJ3NlbGYnICd1bnNhZmUtaW5saW5lJzsgc2NyaXB0LXNyYyAnc2VsZicgJ3Vuc2FmZS1p
bmxpbmUnIGRhdGE6OyBvYmplY3Qtc3JjICdub25lJyI+CisgICAgPG1ldGEgaHR0cC1lcXVpdj0i
Q29udGVudC1TZWN1cml0eS1Qb2xpY3kiIGNvbnRlbnQ9Im1lZGlhLXNyYyAqIGJsb2I6OyBmb250
LXNyYyAqIGJsb2I6OyBzdHlsZS1zcmMgJ3NlbGYnICd1bnNhZmUtaW5saW5lJzsgc2NyaXB0LXNy
YyAnc2VsZicgJ3Vuc2FmZS1pbmxpbmUnIGRhdGE6OyBvYmplY3Qtc3JjICdub25lJyI+CiAKICAg
ICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IkV4dGVybmFsL0NvZGVNaXJyb3IvY29kZW1p
cnJvci5jc3MiPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JGcm9udGVuZEFQSS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3RvckZyb250ZW5kQVBJLmpzCmluZGV4
IDQyOGM1NDMzZjZjNGRjYTA4ODA5MjY4ZTIwNmMxMzg2ZjU4ZjdiYjUuLjNhMWMyZDA0ZWY4YmM1
YzI2MWY0MzQ0YmQ0MDI3ZDMxNTIwYWQ1MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3RvckZyb250ZW5kQVBJLmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3RvckZy
b250ZW5kQVBJLmpzCkBAIC0yMzUsNSArMjM1LDEzIEBAIEluc3BlY3RvckZyb250ZW5kQVBJID0g
ewogICAgIHNob3dFeHRlbnNpb25UYWIoZXh0ZW5zaW9uVGFiSUQpCiAgICAgewogICAgICAgICBy
ZXR1cm4gV0kuc2hhcmVkQXBwLmV4dGVuc2lvbkNvbnRyb2xsZXIuc2hvd0V4dGVuc2lvblRhYihl
eHRlbnNpb25UYWJJRCk7CisgICAgfSwKKworICAgIC8vIFJldHVybnMgYSBzdHJpbmcgKFdJLldl
Ykluc3BlY3RvckV4dGVuc2lvbi5FcnJvckNvZGUpIGlmIGFuIGVycm9yIG9jY3VycmVkIHRoYXQg
cHJldmVudGVkIGV2YWx1YXRpb24uCisgICAgLy8gUmV0dXJucyBhbiBvYmplY3Qgd2l0aCBhICdy
ZXN1bHQnIGtleSBhbmQgdmFsdWUgdGhhdCBpcyB0aGUgcmVzdWx0IG9mIHRoZSBzY3JpcHQgZXZh
bHVhdGlvbi4KKyAgICAvLyBSZXR1cm5zIGFuIG9iamVjdCB3aXRoIGFuICdlcnJvcicga2V5IGFu
ZCB2YWx1ZSBpbiB0aGUgY2FzZSB0aGF0IGFuIGV4Y2VwdGlvbiB3YXMgdGhyb3duLgorICAgIGV2
YWx1YXRlU2NyaXB0SW5FeHRlbnNpb25UYWIoZXh0ZW5zaW9uVGFiSUQsIHNjcmlwdFNvdXJjZSkK
KyAgICB7CisgICAgICAgIHJldHVybiBXSS5zaGFyZWRBcHAuZXh0ZW5zaW9uQ29udHJvbGxlci5l
dmFsdWF0ZVNjcmlwdEluRXh0ZW5zaW9uVGFiKGV4dGVuc2lvblRhYklELCBzY3JpcHRTb3VyY2Up
OwogICAgIH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9XZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50Vmlldy5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1dlYkluc3BlY3RvckV4dGVuc2lv
blRhYkNvbnRlbnRWaWV3LmpzCmluZGV4IDE5MjU1NjdlZmYzYmRiY2RiMjA4MmQ2ODRiOTNkNGJh
ZGZlMGJiMjguLmEyNGFjZmQ5YjUyODdlNWZhYWRiNjU0NmJiYTkxYTY3ZjI5MDI5NWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1dlYkluc3Bl
Y3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1dlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3
LmpzCkBAIC0zOSw2ICszOSw5IEBAIFdJLldlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRW
aWV3ID0gY2xhc3MgV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVudFZpCiAgICAgICAgIHRo
aXMuX2V4dGVuc2lvblRhYklEID0gZXh0ZW5zaW9uVGFiSUQ7CiAgICAgICAgIHRoaXMuX3RhYklu
Zm8gPSB0YWJJbmZvOwogICAgICAgICB0aGlzLl9zb3VyY2VVUkwgPSBzb3VyY2VVUkw7CisKKyAg
ICAgICAgdGhpcy5faWZyYW1lRWxlbWVudCA9IHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKSk7CisgICAgICAgIHRoaXMuX2lmcmFtZUVsZW1l
bnQuc3JjID0gdGhpcy5fc291cmNlVVJMOwogICAgIH0KIAogICAgIC8vIFB1YmxpYwpAQCAtNTUs
NiArNTgsMTEgQEAgV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVudFZpZXcgPSBjbGFz
cyBXZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50VmkKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQogCisgICAgZ2V0IGlmcmFtZUVsZW1lbnQoKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHRoaXMuX2lmcmFtZUVsZW1lbnQ7CisgICAgfQorCiAgICAgYXR0YWNoZWQoKQogICAgIHsKICAg
ICAgICAgc3VwZXIuYXR0YWNoZWQoKTsKQEAgLTc3LDE2ICs4NSw2IEBAIFdJLldlYkluc3BlY3Rv
ckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3ID0gY2xhc3MgV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFi
Q29udGVudFZpCiAgICAgfQogCiAgICAgc3RhdGljIHNob3VsZFNhdmVUYWIoKSB7IHJldHVybiBm
YWxzZTsgfQotCi0gICAgLy8gUHJvdGVjdGVkCi0KLSAgICBpbml0aWFsTGF5b3V0KCkKLSAgICB7
Ci0gICAgICAgIHN1cGVyLmluaXRpYWxMYXlvdXQoKTsKLQotICAgICAgICBsZXQgaWZyYW1lRWxl
bWVudCA9IHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJp
ZnJhbWUiKSk7Ci0gICAgICAgIGlmcmFtZUVsZW1lbnQuc3JjID0gdGhpcy5fc291cmNlVVJMOwot
ICAgIH0KIH07CiAKIFdJLldlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3LlR5cGUg
PSAid2ViLWluc3BlY3Rvci1leHRlbnNpb24iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
b3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDEx
ZTcyOTY4NGU0YTJhZGYwYjVjYjg5M2FkNjc5MWQ5MDA1ODI2MDUuLjVlNmI1MmMxMjExNDZjNmQ1
M2FjZTY2NWQ2NWMyNTZmZGU1ZTk1OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNl
c0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTI4OCw2
ICsyODgsNyBAQCBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24u
bW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yVGVzdGluZy5tbQogVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JEZWJ1Z2dhYmxlSW5mby5tbQogVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24ubW0KK1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5z
cGVjdG9yRXh0ZW5zaW9uVGVzdGluZy5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0
b3JXaW5kb3cubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW50ZXJuYWxEZWJ1Z0ZlYXR1cmUu
bW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLTGlua0ljb25QYXJhbWV0ZXJzLm1tCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uY3Bw
CmluZGV4IDg2MjY3MjA4OGViMjk3MmY2ZDU1ZTIzNmNlN2YzMDljNzJkNWQxNzUuLjg3MWMyNzNl
YWYxMWRlYjkxYjlkMDJiZjQ1MGYwZDEwZWJjODM3NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uY3BwCkBAIC04MSw2ICs4
MSwxOCBAQCB2b2lkIEluc3BlY3RvckV4dGVuc2lvbjo6cmVsb2FkSWdub3JpbmdDYWNoZShjb25z
dCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiBpZ25vcmVDYQogICAgIG1fZXh0ZW5zaW9uQ29udHJvbGxl
clByb3h5LT5yZWxvYWRGb3JFeHRlbnNpb24obV9pZGVudGlmaWVyLCBpZ25vcmVDYWNoZSwgdXNl
ckFnZW50LCBpbmplY3RlZFNjcmlwdCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQog
CisvLyBGb3IgdGVzdGluZy4KKwordm9pZCBJbnNwZWN0b3JFeHRlbnNpb246OmV2YWx1YXRlU2Ny
aXB0SW5FeHRlbnNpb25UYWIoY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJRCYgZXh0ZW5z
aW9uVGFiSUQsIGNvbnN0IFdURjo6U3RyaW5nJiBzY3JpcHRTb3VyY2UsIFdURjo6Q29tcGxldGlv
bkhhbmRsZXI8dm9pZChJbnNwZWN0b3I6OkV4dGVuc2lvbkV2YWx1YXRpb25SZXN1bHQpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmICghbV9leHRlbnNpb25Db250cm9sbGVyUHJveHkp
IHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yOjpF
eHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3llZCkpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgbV9leHRlbnNpb25Db250cm9sbGVyUHJveHktPmV2YWx1YXRlU2NyaXB0SW5FeHRl
bnNpb25UYWIoZXh0ZW5zaW9uVGFiSUQsIHNjcmlwdFNvdXJjZSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOworfQorCiB9IC8vIG5hbWVzcGFjZSBBUEkKIAogI2VuZGlmIC8vIEVOQUJMRShJ
TlNQRUNUT1JfRVhURU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElJbnNwZWN0b3JFeHRlbnNpb24uaAppbmRleCA1ZWUwOTZkYzIxZjYyMDI2N2M3ZjA0ODk2
MDNmMTI5YWQ3NjU4ZmU2Li5iYzNmODgwMTYzMTdkMGEzYjU5YzI2YjVlMGYyNTY5YWUxYTAwNzk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0
ZW5zaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckV4
dGVuc2lvbi5oCkBAIC00OSw3ICs0OSwxMCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNyZWF0ZVRh
Yihjb25zdCBXVEY6OlN0cmluZyYgdGFiTmFtZSwgY29uc3QgV1RGOjpVUkwmIHRhYkljb25VUkws
IGNvbnN0IFdURjo6VVJMJiBzb3VyY2VVUkwsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChF
eHBlY3RlZDxJbnNwZWN0b3I6OkV4dGVuc2lvblRhYklELCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVy
cm9yPik+JiYpOwogICAgIHZvaWQgZXZhbHVhdGVTY3JpcHQoY29uc3QgV1RGOjpTdHJpbmcmIHNj
cmlwdFNvdXJjZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxXVEY6OlVSTD4mIGZyYW1lVVJMLCBjb25z
dCBzdGQ6Om9wdGlvbmFsPFdURjo6VVJMPiYgY29udGV4dFNlY3VyaXR5T3JpZ2luLCBjb25zdCBz
dGQ6Om9wdGlvbmFsPGJvb2w+JiB1c2VDb250ZW50U2NyaXB0Q29udGV4dCwgV1RGOjpDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXZhbHVhdGlvblJlc3VsdCk+JiYp
OwotICAgIHZvaWQgcmVsb2FkSWdub3JpbmdDYWNoZShjb25zdCBzdGQ6Om9wdGlvbmFsPGJvb2w+
JiBpZ25vcmVDYWNoZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxXVEY6OlN0cmluZz4mIHVzZXJBZ2Vu
dCwgY29uc3Qgc3RkOjpvcHRpb25hbDxXVEY6OlN0cmluZz4mIGluamVjdGVkU2NyaXB0LCAgV1RG
OjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXZhbHVhdGlvblJl
c3VsdCk+JiYpOworICAgIHZvaWQgcmVsb2FkSWdub3JpbmdDYWNoZShjb25zdCBzdGQ6Om9wdGlv
bmFsPGJvb2w+JiBpZ25vcmVDYWNoZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxXVEY6OlN0cmluZz4m
IHVzZXJBZ2VudCwgY29uc3Qgc3RkOjpvcHRpb25hbDxXVEY6OlN0cmluZz4mIGluamVjdGVkU2Ny
aXB0LCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FdmFs
dWF0aW9uUmVzdWx0KT4mJik7CisKKyAgICAvLyBGb3IgdGVzdGluZy4KKyAgICB2b2lkIGV2YWx1
YXRlU2NyaXB0SW5FeHRlbnNpb25UYWIoY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJRCYs
IGNvbnN0IFdURjo6U3RyaW5nJiBzY3JpcHRTb3VyY2UsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8
dm9pZChJbnNwZWN0b3I6OkV4dGVuc2lvbkV2YWx1YXRpb25SZXN1bHQpPiYmKTsKIAogICAgIElu
c3BlY3RvckV4dGVuc2lvbkNsaWVudCogY2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnQu
Z2V0KCk7IH0KICAgICB2b2lkIHNldENsaWVudChVbmlxdWVSZWY8SW5zcGVjdG9yRXh0ZW5zaW9u
Q2xpZW50PiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tJbnNwZWN0b3JFeHRlbnNpb25Qcml2YXRlRm9yVGVzdGluZy5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvblByaXZhdGVGb3JUZXN0
aW5nLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOGZjN2ZmNzNjMzJjZDljYzIwMzFmZDE3ZjJiN2E5NjU0MmZkMWIw
YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tJbnNwZWN0b3JFeHRlbnNpb25Qcml2YXRlRm9yVGVzdGluZy5oCkBAIC0wLDAgKzEsMzQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW1wb3J0ICJfV0tJbnNwZWN0b3JFeHRlbnNpb24uaCIKKworTlNfQVNT
VU1FX05PTk5VTExfQkVHSU4KKworQGludGVyZmFjZSBfV0tJbnNwZWN0b3JFeHRlbnNpb24gKFdL
VGVzdGluZykKKy0gKHZvaWQpX2V2YWx1YXRlU2NyaXB0OihOU1N0cmluZyAqKXNjcmlwdFNvdXJj
ZSBpbkV4dGVuc2lvblRhYldpdGhJZGVudGlmaWVyOihOU1N0cmluZyAqKWV4dGVuc2lvblRhYklk
ZW50aWZpZXIgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNFcnJvciAqIF9OdWxsYWJsZSwg
TlNEaWN0aW9uYXJ5ICogX051bGxhYmxlIHJlc3VsdCkpY29tcGxldGlvbkhhbmRsZXI7CitAZW5k
CisKK05TX0FTU1VNRV9OT05OVUxMX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvblRlc3RpbmcubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uVGVzdGluZy5t
bQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xYTc1NjdmYmM4YjYzMDFkMmRhNmU0MjZiNzIwNjI5YTQxNjJjMzAzCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0lu
c3BlY3RvckV4dGVuc2lvblRlc3RpbmcubW0KQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbXBvcnQgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQor
CisjaW1wb3J0ICJBUElTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKKyNpbXBvcnQgIkluc3BlY3Rv
ckV4dGVuc2lvblR5cGVzLmgiCisjaW1wb3J0ICJXS0Vycm9yLmgiCisjaW1wb3J0ICJXS1dlYlZp
ZXdJbnRlcm5hbC5oIgorI2ltcG9ydCAiX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaCIK
KyNpbXBvcnQgIl9XS0luc3BlY3RvckV4dGVuc2lvblByaXZhdGVGb3JUZXN0aW5nLmgiCisjaW1w
b3J0IDxXZWJDb3JlL0V4Y2VwdGlvbkRldGFpbHMuaD4KKyNpbXBvcnQgPFdlYkNvcmUvV2ViQ29y
ZU9iakNFeHRyYXMuaD4KKyNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgorCisvLyBUaGlzIGZpbGUg
ZXhpc3RzIHRvIGNlbnRyYWxpemUgYWxsIGZyYWdpbGUgY29kZSB0aGF0IGlzIHVzZWQgYnkgX1dL
SW5zcGVjdG9yRXh0ZW5zaW9uIEFQSSB0ZXN0cy4KKworQGltcGxlbWVudGF0aW9uIF9XS0luc3Bl
Y3RvckV4dGVuc2lvbiAoV0tUZXN0aW5nKQorCistICh2b2lkKV9ldmFsdWF0ZVNjcmlwdDooTlNT
dHJpbmcgKilzY3JpcHRTb3VyY2UgaW5FeHRlbnNpb25UYWJXaXRoSWRlbnRpZmllcjooTlNTdHJp
bmcgKilleHRlbnNpb25UYWJJZGVudGlmaWVyIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5T
RXJyb3IgKiwgTlNEaWN0aW9uYXJ5ICopKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgX2V4dGVu
c2lvbi0+ZXZhbHVhdGVTY3JpcHRJbkV4dGVuc2lvblRhYihleHRlbnNpb25UYWJJZGVudGlmaWVy
LCBzY3JpcHRTb3VyY2UsIFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBjYXB0dXJl
ZEJsb2NrID0gbWFrZUJsb2NrUHRyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKV0gKEluc3Bl
Y3Rvcjo6RXh0ZW5zaW9uRXZhbHVhdGlvblJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAg
ICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgICAgICBjYXB0dXJlZEJsb2NrKFtOU0Vycm9yIGVy
cm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86
QHsgTlNMb2NhbGl6ZWRGYWlsdXJlUmVhc29uRXJyb3JLZXk6IEluc3BlY3Rvcjo6ZXh0ZW5zaW9u
RXJyb3JUb1N0cmluZyhyZXN1bHQuZXJyb3IoKSl9XSwgbmlsKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgYXV0byB2YWx1ZU9yRXhjZXB0aW9uID0g
cmVzdWx0LnZhbHVlKCk7CisgICAgICAgIGlmICghdmFsdWVPckV4Y2VwdGlvbikgeworICAgICAg
ICAgICAgY2FwdHVyZWRCbG9jayhuc0Vycm9yRnJvbUV4Y2VwdGlvbkRldGFpbHModmFsdWVPckV4
Y2VwdGlvbi5lcnJvcigpKS5nZXQoKSwgbmlsKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCisgICAgICAgIGlkIGJvZHkgPSBBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVz
ZXJpYWxpemUodmFsdWVPckV4Y2VwdGlvbi52YWx1ZSgpLT5pbnRlcm5hbFJlcHJlc2VudGF0aW9u
KCksIDApOworICAgICAgICBjYXB0dXJlZEJsb2NrKG5pbCwgYm9keSk7CisgICAgfSk7Cit9CisK
K0BlbmQKKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0dyb3VwQWN0aXZpdGllcy9Hcm91cEFj
dGl2aXRpZXNTZXNzaW9uTm90aWZpZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9Hcm91cEFjdGl2aXRpZXMvR3JvdXBBY3Rpdml0aWVzU2Vzc2lvbk5vdGlmaWVyLm1tCmluZGV4
IDU1MjdlYjg1NTg3ZmZiNDE5ZDUyZjYzZjU4MDE0YzAyNjRjNzQ2YzMuLjY5NzZiYmI0NjgyOGEz
Y2M5MmExNTVlNWI5Y2RkOWM2MzAyMTI5NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL0dyb3VwQWN0aXZpdGllcy9Hcm91cEFjdGl2aXRpZXNTZXNzaW9uTm90aWZp
ZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvR3JvdXBBY3Rpdml0aWVz
L0dyb3VwQWN0aXZpdGllc1Nlc3Npb25Ob3RpZmllci5tbQpAQCAtMjgsNiArMjgsNyBAQAogCiAj
aWYgRU5BQkxFKE1FRElBX1NFU1NJT05fQ09PUkRJTkFUT1IpICYmIEhBVkUoR1JPVVBfQUNUSVZJ
VElFUykKIAorI2ltcG9ydCAiR3JvdXBBY3Rpdml0aWVzQ29vcmRpbmF0b3IuaCIKICNpbXBvcnQg
IldLR3JvdXBTZXNzaW9uLmgiCiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rv
ci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5jcHAKaW5kZXggNzQyYWEy
N2IxZWFjMzU4YWYwNWI0NzYxMjQ0ZWMyMWZkMzAwYTMyZC4uZjhhNmViMjQzOTc3YzkxYWY3ZTc5
OWUyNDFhMGRiNDA1YTE4NzM4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
SW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyUHJveHkuY3BwCkBAIC0xOTksNiArMTk5LDMxIEBAIHZvaWQgV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OnNob3dFeHRlbnNpb25UYWIoY29uc3QgSW5z
cGVjdG9yOjpFCiAgICAgfSk7CiB9CiAKKy8vIEFQSSBmb3IgdGVzdGluZy4KKwordm9pZCBXZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6ZXZhbHVhdGVTY3JpcHRJbkV4dGVu
c2lvblRhYihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvblRhYklEJiBleHRlbnNpb25UYWJJRCwg
Y29uc3QgU3RyaW5nJiBzY3JpcHRTb3VyY2UsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJ
bnNwZWN0b3I6OkV4dGVuc2lvbkV2YWx1YXRpb25SZXN1bHQpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQoreworICAgIHdoZW5Gcm9udGVuZEhhc0xvYWRlZChbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0
aGlzKSwgZXh0ZW5zaW9uVGFiSUQsIHNjcmlwdFNvdXJjZSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vh
a1RoaXMgfHwgIXdlYWtUaGlzLT5tX2luc3BlY3RvclBhZ2UpIHsKKyAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkNv
bnRleHREZXN0cm95ZWQpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAg
ICAgIHdlYWtUaGlzLT5tX2luc3BlY3RvclBhZ2UtPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdl
czo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpFdmFsdWF0ZVNjcmlwdEluRXh0
ZW5zaW9uVGFiIHtleHRlbnNpb25UYWJJRCwgc2NyaXB0U291cmNlfSwgW2NvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYgZGF0YVJlZmVyZW5jZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25E
ZXRhaWxzPiYgZGV0YWlscywgY29uc3Qgc3RkOjpvcHRpb25hbDxJbnNwZWN0b3I6OkV4dGVuc2lv
bkVycm9yPiBlcnJvcikgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChlcnJvci52YWx1ZSgp
KSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBpZiAoZGV0YWlscykgeworICAgICAgICAgICAgICAgIEV4cGVjdGVkPFJlZlB0cjxBUEk6OlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+IHJldHVybmVk
VmFsdWUgPSBtYWtlVW5leHBlY3RlZChkZXRhaWxzLnZhbHVlKCkpOworICAgICAgICAgICAgICAg
IHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IHJldHVybmVkVmFsdWUgfSk7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgeyBBUEk6OlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6YWRvcHQoVmVjdG9yIHsgZGF0YVJlZmVyZW5jZS5kYXRhKCksIGRhdGFSZWZl
cmVuY2Uuc2l6ZSgpIH0pLnB0cigpIH0gfSk7CisgICAgICAgIH0pOworICAgIH0pOworfQogCiAv
LyBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eSBJUEMgbWVzc2FnZXMuCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
SW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmgKaW5kZXgg
Y2EyM2VjN2FmYjJlMWViY2Y5ODU3NGZlNzllOTQwZDg0NmEzMzE3YS4uMzU4YmE0NDdlMDFlYTlh
ZDE1Yjg3YmZkNWEwMmZlNzg0NjA2NDdiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlclByb3h5LmgKQEAgLTYyLDYgKzYyLDkgQEAgcHVibGljOgogICAgIHZv
aWQgcmVsb2FkRm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmLCBjb25z
dCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiBpZ25vcmVDYWNoZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxT
dHJpbmc+JiB1c2VyQWdlbnQsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiYgaW5qZWN0ZWRT
Y3JpcHQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJbnNwZWN0b3I6OkV4dGVuc2lvbkV2
YWx1YXRpb25SZXN1bHQpPiYmKTsKICAgICB2b2lkIHNob3dFeHRlbnNpb25UYWIoY29uc3QgSW5z
cGVjdG9yOjpFeHRlbnNpb25UYWJJRCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8
Ym9vbCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4pPiYmKTsKIAorICAgIC8vIEFQSSBmb3Ig
dGVzdGluZy4KKyAgICB2b2lkIGV2YWx1YXRlU2NyaXB0SW5FeHRlbnNpb25UYWIoY29uc3QgSW5z
cGVjdG9yOjpFeHRlbnNpb25UYWJJRCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0U291cmNlLCBXVEY6
OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FdmFsdWF0aW9uUmVz
dWx0KT4mJik7CisKICAgICAvLyBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94
eSBJUEMgbWVzc2FnZXMuCiAgICAgdm9pZCBkaWRTaG93RXh0ZW5zaW9uVGFiKGNvbnN0IEluc3Bl
Y3Rvcjo6RXh0ZW5zaW9uSUQmLCBjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvblRhYklEJik7CiAg
ICAgdm9pZCBkaWRIaWRlRXh0ZW5zaW9uVGFiKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQm
LCBjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvblRhYklEJik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dLSW5zcGVjdG9yUmVzb3VyY2VVUkxTY2hl
bWVIYW5kbGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XS0lu
c3BlY3RvclJlc291cmNlVVJMU2NoZW1lSGFuZGxlci5tbQppbmRleCBhY2VkN2MwMzc5YWZhZTMz
NWI5OTlmNWMyMDgyYzk1M2NlYzk0ODAzLi5iNDM1MzA5MTExZjRhNzhkNzA3YTFlZDVjOTliZjgz
OTA3MzY4YjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Iv
bWFjL1dLSW5zcGVjdG9yUmVzb3VyY2VVUkxTY2hlbWVIYW5kbGVyLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV0tJbnNwZWN0b3JSZXNvdXJjZVVSTFNjaGVt
ZUhhbmRsZXIubW0KQEAgLTEyMiw3ICsxMjIsOCBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmll
dyAqKXdlYlZpZXcgc3RhcnRVUkxTY2hlbWVUYXNrOihpZCA8V0tVUkxTY2hlbWVUYXNrPil1cgog
CiAgICAgICAgIC8vIEFsbG93IGZldGNoZXMgZm9yIHJlc291cmNlcyB0aGF0IHVzZSBhIHJlZ2lz
dGVyZWQgY3VzdG9tIFVSTCBzY2hlbWUuCiAgICAgICAgIGlmIChfYWxsb3dlZFVSTFNjaGVtZXNG
b3JDU1AgJiYgW3NlbGYubWFpblJlc291cmNlVVJMc0ZvckNTUCBjb250YWluc09iamVjdDpyZXF1
ZXN0VVJMXSkgewotICAgICAgICAgICAgTlNTdHJpbmcgKnN0cmluZ0ZvckNTUFBvbGljeSA9IFtO
U1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiY29ubmVjdC1zcmMgKiAlQDoiLCBbX2FsbG93ZWRV
UkxTY2hlbWVzRm9yQ1NQLmdldCgpLmFsbE9iamVjdHMgY29tcG9uZW50c0pvaW5lZEJ5U3RyaW5n
OkAiOiAiXV07CisgICAgICAgICAgICBOU1N0cmluZyAqbGlzdE9mQ3VzdG9tUHJvdG9jb2xzID0g
W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQDoiLCBbX2FsbG93ZWRVUkxTY2hlbWVzRm9y
Q1NQLmdldCgpLmFsbE9iamVjdHMgY29tcG9uZW50c0pvaW5lZEJ5U3RyaW5nOkAiOiAiXV07Cisg
ICAgICAgICAgICBOU1N0cmluZyAqc3RyaW5nRm9yQ1NQUG9saWN5ID0gW05TU3RyaW5nIHN0cmlu
Z1dpdGhGb3JtYXQ6QCJjb25uZWN0LXNyYyAqICVAOyBpbWctc3JjICogZmlsZTogYmxvYjogcmVz
b3VyY2U6ICVAIiwgbGlzdE9mQ3VzdG9tUHJvdG9jb2xzLCBsaXN0T2ZDdXN0b21Qcm90b2NvbHNd
OwogICAgICAgICAgICAgW2hlYWRlckZpZWxkcyBzZXRPYmplY3Q6c3RyaW5nRm9yQ1NQUG9saWN5
IGZvcktleTpAIkNvbnRlbnQtU2VjdXJpdHktUG9saWN5Il07CiAgICAgICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTJlY2E4
YjdkYWY5ZTZjMTQ2NGM1MDE0YjUxZjA3Yzk0ZTk3NjVlOC4uODEwNTA0MTlkOWFlZDAxNzVmYmFi
MDg3MTRhOGFlZTY1YmFiOTA2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNTczLDYgKzE1NzMsOCBAQAogCQk5OUIxNjc2NDI1MkJC
RTYyMDA3MzE0MEUgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OUIxNjc2MTI1MkJCRTYx
MDA3MzE0MEUgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmggKi87IH07CiAJ
CTk5QzNBRTJEMURBREE2QUQwMEFGNUMxNiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbk1hY3Jvcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlDM0FFMkMx
REFEQTZBNzAwQUY1QzE2IC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uTWFjcm9zLmggKi87IH07CiAJ
CTk5QzYwN0VCMjZGQTlENDkwMEEwOTUzRiAvKiBfV0tJbnNwZWN0b3JJQkFjdGlvbnMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5QzYwN0VBMjZGQTlE
NDgwMEEwOTUzRiAvKiBfV0tJbnNwZWN0b3JJQkFjdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5OUM2MDdGMDI2RkI5MUU4MDBBMDk1M0Yg
LyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uUHJpdmF0ZUZvclRlc3RpbmcuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5QzYwN0VFMjZGQjkxRTgwMEEwOTUz
RiAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb25Qcml2YXRlRm9yVGVzdGluZy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTk5QzYwN0YxMjZGQjkxRTkw
MEEwOTUzRiAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb25UZXN0aW5nLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlDNjA3RUYyNkZCOTFFODAwQTA5NTNG
IC8qIF9XS0luc3BlY3RvckV4dGVuc2lvblRlc3RpbmcubW0gKi87IH07CiAJCTk5QzgxRDVBMUMy
MEU3RTIwMDVDNEM4MiAvKiBBdXRvbWF0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OUM4MUQ1NTFDMjBERkJFMDA1QzRDODIgLyogQXV0
b21hdGlvbkNsaWVudC5oICovOyB9OwogCQk5OUM4MUQ1RDFDMjFGMzhCMDA1QzRDODIgLyogQVBJ
QXV0b21hdGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTlDODFENUIxQzIwRTgxNzAwNUM0QzgyIC8qIEFQSUF1dG9tYXRpb25DbGllbnQu
aCAqLzsgfTsKIAkJOTlFNzE0QzUxQzEyNEEwNDAwNjY1QjNBIC8qIF9XS0F1dG9tYXRpb25EZWxl
Z2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlF
NzE0QzExQzEyNDlFNjAwNjY1QjNBIC8qIF9XS0F1dG9tYXRpb25EZWxlZ2F0ZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC01MTIzLDYgKzUxMjUs
OCBAQAogCQk5OUMzQUUyNjFEQUQ5NDg1MDBBRjVDMTYgLyogV2ViQXV0b21hdGlvblNlc3Npb25D
b2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkF1dG9t
YXRpb25TZXNzaW9uQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5QzNB
RTJDMURBREE2QTcwMEFGNUMxNiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbk1hY3Jvcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBdXRvbWF0aW9uU2Vzc2lvbk1hY3Jvcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OUM2MDdFQTI2RkE5RDQ4MDBBMDk1M0Yg
LyogX1dLSW5zcGVjdG9ySUJBY3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IF9XS0luc3BlY3RvcklCQWN0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk5OUM2MDdFRTI2RkI5MUU4MDBBMDk1M0YgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uUHJpdmF0
ZUZvclRlc3RpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLSW5zcGVj
dG9yRXh0ZW5zaW9uUHJpdmF0ZUZvclRlc3RpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJOTlDNjA3RUYyNkZCOTFFODAwQTA5NTNGIC8qIF9XS0luc3BlY3RvckV4dGVuc2lvblRl
c3RpbmcubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tJbnNw
ZWN0b3JFeHRlbnNpb25UZXN0aW5nLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
OUM4MUQ1NTFDMjBERkJFMDA1QzRDODIgLyogQXV0b21hdGlvbkNsaWVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBBdXRvbWF0aW9uQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTk5QzgxRDU2MUMyMERGQkUwMDVDNEM4MiAvKiBBdXRvbWF0aW9uQ2xp
ZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXV0b21hdGlv
bkNsaWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTlDODFENUIxQzIwRTgx
NzAwNUM0QzgyIC8qIEFQSUF1dG9tYXRpb25DbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQVBJQXV0b21hdGlvbkNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtODIwOSw2ICs4MjEzLDggQEAKIAkJCQk5OTZCMkJBMDI1RTI1OTExMDA3MTkzNzkg
LyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUuaCAqLywKIAkJCQk5OTc5NjVBMjI1MzEy
OEM3MDBCMzFBRTMgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdC5oICovLAogCQkJCTk5QjE2
NzU1MjUyQkI3RTEwMDczMTQwRSAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb25JbnRlcm5hbC5oICov
LAorCQkJCTk5QzYwN0VFMjZGQjkxRTgwMEEwOTUzRiAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb25Q
cml2YXRlRm9yVGVzdGluZy5oICovLAorCQkJCTk5QzYwN0VGMjZGQjkxRTgwMEEwOTUzRiAvKiBf
V0tJbnNwZWN0b3JFeHRlbnNpb25UZXN0aW5nLm1tICovLAogCQkJCTk5QzYwN0VBMjZGQTlENDgw
MEEwOTUzRiAvKiBfV0tJbnNwZWN0b3JJQkFjdGlvbnMuaCAqLywKIAkJCQk1Q0FGREU0NDIxMzA4
NDM2MDBCMUY3RTEgLyogX1dLSW5zcGVjdG9ySW50ZXJuYWwuaCAqLywKIAkJCQk5OTc5Q0E1NzIz
N0Y0OUYwMDAzOUVDMDUgLyogX1dLSW5zcGVjdG9yUHJpdmF0ZS5oICovLApAQCAtMTIwOTgsNiAr
MTIxMDQsNyBAQAogCQkJCTFGN0QzNkMxMThEQTUxM0YwMEQ5RDY1OSAvKiBBUElEb3dubG9hZENs
aWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE2QTRBNUQxMjBBMkNDRDAwQzA1QjdGIC8qIEFQ
SUVycm9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTdGRTdDNTFDNDg3QTZDMDBBMENBODkgLyog
QVBJRXhwZXJpbWVudGFsRmVhdHVyZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTlDNjA3RjAyNkZC
OTFFODAwQTA5NTNGIC8qIF9XS0luc3BlY3RvckV4dGVuc2lvblByaXZhdGVGb3JUZXN0aW5nLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwMEI5NjYxNjE4RTI0Q0JBMDBDRTFGODggLyogQVBJRmluZENs
aWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRENjdBMkUxQkQ4MTk3MzAwNTNCMjUxIC8qIEFQ
SUZpbmRNYXRjaGVzQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkzN0UyNUQ2RTE4RkRFNUQ2
MDA1RDNBMDAgLyogQVBJRm9ybUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNDgzMCw2ICsx
NDgzNyw3IEBACiAJCQkJNjM3MjgxQTMyMUFEQzc0NDAwOUUwREU2IC8qIFdLRG93bmxvYWRQcm9n
cmVzcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDRTkxMjBEMjI5M0MyMTkwMDVCRUM3OCAvKiBX
S01haW4ubW0gaW4gU291cmNlcyAqLywKIAkJCQlERjg0Q0VFNDI0OUFBMjREMDA5MDk2RjYgLyog
V0tQREZIVURWaWV3Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJOTlDNjA3RjEyNkZCOTFFOTAwQTA5
NTNGIC8qIF9XS0luc3BlY3RvckV4dGVuc2lvblRlc3RpbmcubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk1Q0EyNkQ4MzIxN0FEMUI4MDBGOTdBMzUgLyogV0tTYWZlQnJvd3NpbmdXYXJuaW5nLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMURCMDE5NDQyMTFDRjAwNTAwOUZCM0U4IC8qIFdLU2hhcmVTaGVl
dC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdBNzhGRjMzMjI0MTkxOUIwMDk2NDgzRSAvKiBXS1N0
b3JhZ2VBY2Nlc3NBbGVydC5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xs
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JV
SUV4dGVuc2lvbkNvbnRyb2xsZXIuY3BwCmluZGV4IDkwOTBiMTZhNzk1OGU0YmM4MTJlMDJkMDJj
ZDk0NTA5M2NkNWY1MjQuLjI0OTM5MjZkMDk2NTFhOTIzZmQ5NGEwMzhjY2FjNWE1MGFhYThjNGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5jcHAKQEAgLTM1
OSw2ICszNTksNzQgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnNo
b3dFeHRlbnNpb25UYWIoY29uc3QgSW5zcGVjdG9yOjpFeHRlbnMKICAgICB9KTsKIH0KIAorLy8g
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyIElQQyBtZXNzYWdlcyBmb3IgdGVzdGlu
Zy4KKwordm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OmV2YWx1YXRlU2Ny
aXB0SW5FeHRlbnNpb25UYWIoY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJRCYgZXh0ZW5z
aW9uVGFiSUQsIGNvbnN0IFN0cmluZyYgc2NyaXB0U291cmNlLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6RXhjZXB0aW9uRGV0YWlscz4mLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEluc3BlY3Rvcjo6RXh0
ZW5zaW9uRXJyb3I+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKCFtX2Zyb250
ZW5kQ2xpZW50KSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgc3RkOjpudWxsb3B0
LCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpJbnZhbGlkUmVxdWVzdCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBWZWN0b3I8UmVmPEpTT046OlZhbHVlPj4gYXJndW1lbnRzIHsK
KyAgICAgICAgSlNPTjo6VmFsdWU6OmNyZWF0ZShleHRlbnNpb25UYWJJRCksCisgICAgICAgIEpT
T046OlZhbHVlOjpjcmVhdGUoc2NyaXB0U291cmNlKSwKKyAgICB9OworCisgICAgbV9mcm9udGVu
ZENsaWVudC0+ZnJvbnRlbmRBUElEaXNwYXRjaGVyKCkuZGlzcGF0Y2hDb21tYW5kV2l0aFJlc3Vs
dEFzeW5jKCJldmFsdWF0ZVNjcmlwdEluRXh0ZW5zaW9uVGFiIl9zLCBXVEZNb3ZlKGFyZ3VtZW50
cyksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6
OkV2YWx1YXRpb25SZXN1bHQmJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBpZiAoIXdlYWtU
aGlzKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIHN0ZDo6bnVsbG9wdCwg
SW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3llZCk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBhdXRvKiBmcm9udGVuZEdsb2JhbE9iamVj
dCA9IHdlYWtUaGlzLT5tX2Zyb250ZW5kQ2xpZW50LT5mcm9udGVuZEFQSURpc3BhdGNoZXIoKS5m
cm9udGVuZEdsb2JhbE9iamVjdCgpOworICAgICAgICBpZiAoIWZyb250ZW5kR2xvYmFsT2JqZWN0
KSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIHN0ZDo6bnVsbG9wdCwgSW5z
cGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3llZCk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoYXV0byBwYXJzZWRFcnJvciA9IHdlYWtU
aGlzLT5wYXJzZUV4dGVuc2lvbkVycm9yRnJvbUV2YWx1YXRpb25SZXN1bHQocmVzdWx0KSkgewor
ICAgICAgICAgICAgaWYgKCFyZXN1bHQudmFsdWUoKS5oYXNfdmFsdWUoKSkgeworICAgICAgICAg
ICAgICAgIGF1dG8gZXhjZXB0aW9uRGV0YWlscyA9IHJlc3VsdC52YWx1ZSgpLmVycm9yKCk7Cisg
ICAgICAgICAgICAgICAgTE9HKEluc3BlY3RvciwgIkludGVybmFsIGVycm9yIGVuY291bnRlcmVk
IHdoaWxlIGV2YWx1YXRpbmcgdXBvbiB0aGUgZnJvbnRlbmQ6IGF0ICVzOiVkOiVkOiAlcyIsIGV4
Y2VwdGlvbkRldGFpbHMuc291cmNlVVJMLnV0ZjgoKS5kYXRhKCksIGV4Y2VwdGlvbkRldGFpbHMu
bGluZU51bWJlciwgZXhjZXB0aW9uRGV0YWlscy5jb2x1bW5OdW1iZXIsIGV4Y2VwdGlvbkRldGFp
bHMubWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgICAgIExPRyhJbnNwZWN0b3IsICJJbnRlcm5hbCBlcnJvciBlbmNvdW50ZXJlZCB3aGlsZSBl
dmFsdWF0aW5nIHVwb24gdGhlIGZyb250ZW5kLiIpOworCisgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcih7IH0sIHN0ZDo6bnVsbG9wdCwgcGFyc2VkRXJyb3IpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKKyAgICAgICAgLy8gRXhwZWN0ZWQgcmVzdWx0IGlzIGVpdGhlciBh
biBFcnJvclN0cmluZyBvciB7cmVzdWx0OiA8YW55Pn0gb3Ige2Vycm9yOiBzdHJpbmd9LgorICAg
ICAgICBhdXRvIG9iamVjdFJlc3VsdCA9IHdlYWtUaGlzLT51bndyYXBFdmFsdWF0aW9uUmVzdWx0
QXNPYmplY3QocmVzdWx0KTsKKyAgICAgICAgaWYgKCFvYmplY3RSZXN1bHQpIHsKKyAgICAgICAg
ICAgIExPRyhJbnNwZWN0b3IsICJVbmV4cGVjdGVkIG5vbi1vYmplY3QgdmFsdWUgcmV0dXJuZWQg
ZnJvbSBJbnNwZWN0b3JGcm9udGVuZEFQSS5jcmVhdGVUYWJGb3JFeHRlbnNpb24oKS4iKTsKKyAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgc3RkOjpudWxsb3B0LCBJbnNwZWN0b3I6
OkV4dGVuc2lvbkVycm9yOjpJbnRlcm5hbEVycm9yKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorICAgICAgICBBU1NFUlQocmVzdWx0Lmhhc192YWx1ZSgpKTsKKworICAgICAgICBK
U0M6OkpTVmFsdWUgZXJyb3JQYXlsb2FkID0gb2JqZWN0UmVzdWx0LT5nZXQoZnJvbnRlbmRHbG9i
YWxPYmplY3QsIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhmcm9udGVuZEdsb2JhbE9iamVj
dC0+dm0oKSwgImVycm9yIl9zKSk7CisgICAgICAgIGlmICghZXJyb3JQYXlsb2FkLmlzVW5kZWZp
bmVkKCkpIHsKKyAgICAgICAgICAgIGlmICghZXJyb3JQYXlsb2FkLmlzU3RyaW5nKCkpIHsKKyAg
ICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIHN0ZDo6bnVsbG9wdCwgSW5zcGVj
dG9yOjpFeHRlbnNpb25FcnJvcjo6SW50ZXJuYWxFcnJvcik7CisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0s
IEV4Y2VwdGlvbkRldGFpbHMgeyBlcnJvclBheWxvYWQudG9XVEZTdHJpbmcoZnJvbnRlbmRHbG9i
YWxPYmplY3QpIH0sIHN0ZDo6bnVsbG9wdCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKworICAgICAgICBKU0M6OkpTVmFsdWUgcmVzdWx0UGF5bG9hZCA9IG9iamVjdFJlc3VsdC0+
Z2V0KGZyb250ZW5kR2xvYmFsT2JqZWN0LCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcoZnJv
bnRlbmRHbG9iYWxPYmplY3QtPnZtKCksICJyZXN1bHQiX3MpKTsKKyAgICAgICAgUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFJlc3VsdFZhbHVlID0gU2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpjcmVhdGUoKmZyb250ZW5kR2xvYmFsT2JqZWN0LCByZXN1bHRQYXlsb2FkKTsK
KyAgICAgICAgaWYgKCFzZXJpYWxpemVkUmVzdWx0VmFsdWUpIHsKKyAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHsgfSwgc3RkOjpudWxsb3B0LCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9y
OjpJbnRlcm5hbEVycm9yKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZS0+ZGF0YSgpLCBzdGQ6
Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCk7CisgICAgfSk7Cit9CisKIHZvaWQgV2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyOjpkaWRTaG93RXh0ZW5zaW9uVGFiKGNvbnN0IEluc3BlY3Rv
cjo6RXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvblRh
YklEJiBleHRlbnNpb25UYWJJRCkKIHsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXJQcm94eTo6RGlkU2hvd0V4dGVuc2lvblRhYiB7IGV4dGVuc2lvbklELCBl
eHRlbnNpb25UYWJJRCB9LCBtX2luc3BlY3RvclBhZ2VJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5oCmluZGV4IGMzNjEyYWRkMDA1OWQ3NGViNDdh
OTFlNWRlMzQ1NzQxMjQ4ZDBmNDEuLjllYWIwYmY4YjMzODU4ZmUxOGNhYjkzNzFlMTk3M2M2MmVm
ZTc1MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2Vi
SW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuaApAQCAt
NzAsNiArNzAsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWxvYWRGb3JFeHRlbnNpb24oY29uc3Qg
SW5zcGVjdG9yOjpFeHRlbnNpb25JRCYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8Ym9vbD4mIGlnbm9y
ZUNhY2hlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4mIHVzZXJBZ2VudCwgY29uc3Qgc3Rk
OjpvcHRpb25hbDxTdHJpbmc+JiBpbmplY3RlZFNjcmlwdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBzdGQ6Om9wdGlvbmFsPEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+Jik+JiYpOwog
ICAgIHZvaWQgc2hvd0V4dGVuc2lvblRhYihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvblRhYklE
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxib29sLCBJbnNwZWN0b3I6OkV4dGVu
c2lvbkVycm9yPik+JiYpOwogCisgICAgLy8gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyIElQQyBtZXNzYWdlcyBmb3IgdGVzdGluZy4KKyAgICB2b2lkIGV2YWx1YXRlU2NyaXB0SW5F
eHRlbnNpb25UYWIoY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJRCYsIGNvbnN0IFN0cmlu
ZyYgc2NyaXB0U291cmNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJl
ZmVyZW5jZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4m
LCBjb25zdCBzdGQ6Om9wdGlvbmFsPEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+Jik+JiYpOwor
CiAgICAgLy8gQ2FsbGJhY2tzIGZyb20gdGhlIGZyb250ZW5kLgogICAgIHZvaWQgZGlkU2hvd0V4
dGVuc2lvblRhYihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiwgY29uc3QgSW5zcGVjdG9y
OjpFeHRlbnNpb25UYWJJRCYpOwogICAgIHZvaWQgZGlkSGlkZUV4dGVuc2lvblRhYihjb25zdCBJ
bnNwZWN0b3I6OkV4dGVuc2lvbklEJiwgY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJRCYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNw
ZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5tZXNz
YWdlcy5pbgppbmRleCA2YTAwZWNmZmU1ODMwZmYxNjQ1ZTkwMTdiY2U2ZDc2MWYyNzg3MjFjLi5j
OTI0ZjczMDdhOGM4NTg4Y2I4OGNkZTY5MDNjYzAwYjliNmY5Y2YyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVj
dG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5tZXNzYWdlcy5pbgpAQCAtMzAs
NiArMzAsMTAgQEAgbWVzc2FnZXMgLT4gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVy
IE5vdFJlZkNvdW50ZWQgewogICAgIEV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKFN0cmluZyBl
eHRlbnNpb25JRCwgU3RyaW5nIHNjcmlwdFNvdXJjZSwgc3RkOjpvcHRpb25hbDxVUkw+IGZyYW1l
VVJMLCBzdGQ6Om9wdGlvbmFsPFVSTD4gY29udGV4dFNlY3VyaXR5T3JpZ2luLCBzdGQ6Om9wdGlv
bmFsPGJvb2w+IHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0KSAtPiAoSVBDOjpEYXRhUmVmZXJlbmNl
IHJlc3VsdERhdGEsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4gZGV0
YWlscywgc3RkOjpvcHRpb25hbDxJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPiBlcnJvcikgQXN5
bmMKICAgICBSZWxvYWRGb3JFeHRlbnNpb24oU3RyaW5nIGV4dGVuc2lvbklELCBzdGQ6Om9wdGlv
bmFsPGJvb2w+IGlnbm9yZUNhY2hlLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gdXNlckFnZW50LCBz
dGQ6Om9wdGlvbmFsPFN0cmluZz4gaW5qZWN0ZWRTY3JpcHQpIC0+IChzdGQ6Om9wdGlvbmFsPElu
c3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+IGVycm9yKSBBc3luYwogICAgIFNob3dFeHRlbnNpb25U
YWIoU3RyaW5nIGV4dGVuc2lvblRhYklkZW50aWZpZXIpIC0+IChFeHBlY3RlZDxib29sLCBJbnNw
ZWN0b3I6OkV4dGVuc2lvbkVycm9yPiByZXN1bHQpIEFzeW5jCisgICAgCisgICAgLy8gRm9yIHRl
c3RpbmcuCisgICAgRXZhbHVhdGVTY3JpcHRJbkV4dGVuc2lvblRhYihTdHJpbmcgZXh0ZW5zaW9u
VGFiSUQsIFN0cmluZyBzY3JpcHRTb3VyY2UpIC0+IChJUEM6OkRhdGFSZWZlcmVuY2UgcmVzdWx0
RGF0YSwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzLCBz
dGQ6Om9wdGlvbmFsPEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+IGVycm9yKSBBc3luYworICAg
IAogfQogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDgyMDkyODExYmMzOWM4
MmJjZTcwNWFjNDgxNDMwZmU4MzJmZTk2MzIuLjg4ZWM3ZDkxNDE3ZjA1Y2I5YmJkYzY0YWE1YzYz
YWFiZDM4YTIyZTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAyMS0wOS0yNCAgQkogQnVyZyAgPGJidXJnQGFwcGxl
LmNvbT4KKworICAgICAgICBbQ29jb2FdIGFkZCBfV0tJbnNwZWN0b3JFeHRlbnNpb24gU1BJIHRv
IGV2YWx1YXRlIHNjcmlwdCBvbiBhbiBleHRlbnNpb24gdGFiCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzA2NDYKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzgzNDIwMzI4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBhIG5ldyB0ZXN0IHRvIGV4ZXJjaXNlIHRoZSBTUEkuIFRoZSB0ZXN0IHNldHMg
dXAgYW4gX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLAorICAgICAgICBjcmVhdGVzIGEgdGFiLCBldmFs
dWF0ZXMgc2NyaXB0IG9uIHRoZSB0YWIsIGFuZCBsYXRlciByZWFkcyBiYWNrIHRoZSBzdG9yZWQg
dmFsdWUuCisKKyAgICAgICAgTm90YWJseSwgdGhpcyB0ZXN0IHdvdWxkIGZhaWwgaWYgdGhlIGV4
dGVuc2lvbiB0YWIgaXMgbm90IGN1cnJlbnRseSBzaG93aW5nLgorICAgICAgICBUaGlzIGlzIGEg
YnVnIGFuZCB3aWxsIGJlIGFkZHJlc3NlZCBhcyBwYXJ0IG9mIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzA3NTguCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Nv
dXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIEFkZCBuZXcgZmlsZXMuCisKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSW5zcGVjdG9yRXh0ZW5zaW9u
Lm1tOiBBZGRlZC4KKyAgICAgICAgKHJlc2V0R2xvYmFsU3RhdGUpOgorICAgICAgICAoLVtVSURl
bGVnYXRlRm9yVGVzdGluZ0luc3BlY3RvckV4dGVuc2lvbiBfd2ViVmlldzpkaWRBdHRhY2hMb2Nh
bEluc3BlY3RvcjpdKToKKyAgICAgICAgKC1bVUlEZWxlZ2F0ZUZvclRlc3RpbmdJbnNwZWN0b3JF
eHRlbnNpb24gX3dlYlZpZXc6Y29uZmlndXJhdGlvbkZvckxvY2FsSW5zcGVjdG9yOl0pOgorICAg
ICAgICAoLVtJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZUZvclRlc3RpbmdJbnNwZWN0b3JFeHRl
bnNpb24gaW5zcGVjdG9yRXh0ZW5zaW9uOmRpZFNob3dUYWJXaXRoSWRlbnRpZmllcjpdKToKKyAg
ICAgICAgKC1bSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGVGb3JUZXN0aW5nSW5zcGVjdG9yRXh0
ZW5zaW9uIGluc3BlY3RvckV4dGVuc2lvbjpkaWRIaWRlVGFiV2l0aElkZW50aWZpZXI6XSk6Cisg
ICAgICAgIChURVNUKToKKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdEluc3Bl
Y3RvclVSTFNjaGVtZUhhbmRsZXIuaDogQWRkZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9j
b2NvYS9UZXN0SW5zcGVjdG9yVVJMU2NoZW1lSGFuZGxlci5tbTogQ29waWVkIGZyb20gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XS0luc3BlY3RvclJlc291cmNlVVJMU2No
ZW1lSGFuZGxlci5tbS4KKyAgICAgICAgKC1bVGVzdEluc3BlY3RvclVSTFNjaGVtZUhhbmRsZXIg
d2ViVmlldzpzdGFydFVSTFNjaGVtZVRhc2s6XSk6CisgICAgICAgICgtW1Rlc3RJbnNwZWN0b3JV
UkxTY2hlbWVIYW5kbGVyIHdlYlZpZXc6c3RvcFVSTFNjaGVtZVRhc2s6XSk6CisgICAgICAgIEFk
ZCBhIHNpbXBsZSBVUkxTY2hlbWVIYW5kbGVyIHdoaWNoIGFsbG93cyBzZXJ2aW5nIHRlc3QgcmVz
b3VyY2VzIGZyb20gdGhlIFRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIGRpcmVjdG9yeS4KKyAgICAg
ICAgVGhpcyBpcyBuZWNlc3NhcnkgdG8gdGVzdCBfV0tJbnNwZWN0b3JFeHRlbnNpb24gdGFicywg
d2hpY2ggbXVzdCBsb2FkIHRoZWlyIGNvbnRlbnQgZnJvbSBhIGN1c3RvbSBVUkwgc2NoZW1lLgor
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tOgorICAgICAg
ICBGaXggVW5pZmllZFNvdXJjZXMgZmFsbG91dCBieSBhZGRpbmcgYSBtaXNzaW5nIGluY2x1ZGUu
CisKIDIwMjEtMDktMjEgIEJKIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgW0Nv
Y29hXSBBZGQgU1BJIHRvIHNlbGVjdCBhIHRhYiBjcmVhdGVkIGJ5IF9XS0luc3BlY3RvckV4dGVu
c2lvbgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Tb3VyY2VzQ29jb2EudHh0IGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDRlNjE5Y2Q1OTJjNGM0
NjM5ZGU0YjRiYWM5NjVjYWZiNjAyMjgwOWQuLmRiOWU2ZTRiZWQ5M2QyMzJkZmYwYjQ4YzM5MmE2
ZDNjNWU4ZDk2NGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvU291cmNlc0NvY29h
LnR4dAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1NvdXJjZXNDb2NvYS50eHQKQEAgLTI3LDYg
KzI3LDcgQEAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbkV4dHJhcy5tbQogY29jb2EvUGxhdGZvcm1V
dGlsaXRpZXNDb2NvYS5tbQogY29jb2EvVGVzdENvY29hLm1tCiBjb2NvYS9UZXN0RG93bmxvYWRE
ZWxlZ2F0ZS5tbQorY29jb2EvVGVzdEluc3BlY3RvclVSTFNjaGVtZUhhbmRsZXIubW0KIGNvY29h
L1Rlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlLm1tCiBjb2NvYS9UZXN0TmF2aWdhdGlvbkRlbGVn
YXRlLm1tCiBjb2NvYS9UZXN0UHJvdG9jb2wubW0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
MzM3ZTY4NjczMmY0ZWZiMGJhNTcyODM3MTI4ZjQ1MWIwNmEyNjU3ZS4uN2FkMGQxNzM1MWFjNDQ4
NDUxNjdmMmU5N2VmOWIwNzNiY2RkM2Q4MCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTg5
Miw2ICs4OTIsNyBAQAogCQk5OTk5MTA4QjFGMzkzQzk2MDA4QUQ0NTUgLyogQ29weWluZy5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5OTkxMDhBMUYz
OTNDOEIwMDhBRDQ1NSAvKiBDb3B5aW5nLm1tICovOyB9OwogCQk5OTlCN0VFMzI1NTFDNjNCMDBG
NDUwQTQgLyogV0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk5QjdFRTIyNTUxQzYzQjAwRjQ1MEE0IC8qIFdL
SW5zcGVjdG9yRXh0ZW5zaW9uSG9zdC5tbSAqLzsgfTsKIAkJOTlCNEY5QzYyNEVERUQ5NzAwMDIy
QjgyIC8qIFdLSW5zcGVjdG9yRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5OUI0RjlDNTI0RURFRDk2MDAwMjJCODIgLyogV0tJbnNwZWN0
b3JEZWxlZ2F0ZS5tbSAqLzsgfTsKKwkJOTlDNjA3RUQyNkZCOTBBQzAwQTA5NTNGIC8qIFdLSW5z
cGVjdG9yRXh0ZW5zaW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTlDNjA3RUMyNkZCOTBBQzAwQTA5NTNGIC8qIFdLSW5zcGVjdG9yRXh0ZW5zaW9u
Lm1tICovOyB9OwogCQk5OUUyODQ2NDI2RjkxRjdGMDAwM0YxRkEgLyogV0tJbnNwZWN0b3JFeHRl
bnNpb25EZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk5RTI4NDYzMjZGOTFGN0YwMDAzRjFGQSAvKiBXS0luc3BlY3RvckV4dGVuc2lvbkRl
bGVnYXRlLm1tICovOyB9OwogCQk5OUUyODQ2NjI2RjkzREI1MDAwM0YxRkEgLyogSW5zcGVjdG9y
RXh0ZW5zaW9uLVRhYkljb24tMzB4MzAucG5nIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5RTI4NDY1MjZGOTNENzYwMDAzRjFGQSAvKiBJbnNw
ZWN0b3JFeHRlbnNpb24tVGFiSWNvbi0zMHgzMC5wbmcgKi87IH07CiAJCTk5RTI4NDY4MjZGOTQx
NTQwMDAzRjFGQSAvKiBJbnNwZWN0b3JFeHRlbnNpb24tYmFzaWMtdGFiLmh0bWwgaW4gQ29weSBS
ZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlFMjg0NjcyNkY5
NDEzQjAwMDNGMUZBIC8qIEluc3BlY3RvckV4dGVuc2lvbi1iYXNpYy10YWIuaHRtbCAqLzsgfTsK
QEAgLTI2MjEsNiArMjYyMiw5IEBACiAJCTk5OTkxMDhBMUYzOTNDOEIwMDhBRDQ1NSAvKiBDb3B5
aW5nLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ29weWluZy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk5QjdFRTIyNTUxQzYzQjAwRjQ1MEE0
IC8qIFdLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFdLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdC5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTlCNEY5QzUyNEVERUQ5NjAwMDIyQjgyIC8qIFdLSW5zcGVjdG9y
RGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS0lu
c3BlY3RvckRlbGVnYXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OUM2MDdF
QzI2RkI5MEFDMDBBMDk1M0YgLyogV0tJbnNwZWN0b3JFeHRlbnNpb24ubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS0luc3BlY3RvckV4dGVuc2lvbi5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTlDNjA3RjQyNkZENUExRTAwQTA5NTNGIC8qIFRl
c3RJbnNwZWN0b3JVUkxTY2hlbWVIYW5kbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IFRlc3RJbnNwZWN0b3JVUkxTY2hlbWVIYW5kbGVyLmg7IHBhdGggPSBjb2NvYS9UZXN0
SW5zcGVjdG9yVVJMU2NoZW1lSGFuZGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk5OUM2MDdGNTI2RkQ1QTFGMDBBMDk1M0YgLyogVGVzdEluc3BlY3RvclVSTFNjaGVtZUhhbmRs
ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBUZXN0SW5zcGVj
dG9yVVJMU2NoZW1lSGFuZGxlci5tbTsgcGF0aCA9IGNvY29hL1Rlc3RJbnNwZWN0b3JVUkxTY2hl
bWVIYW5kbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OUUyODQ2MzI2Rjkx
RjdGMDAwM0YxRkEgLyogV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdh
dGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5RTI4NDY1MjZGOTNENzYwMDAz
RjFGQSAvKiBJbnNwZWN0b3JFeHRlbnNpb24tVGFiSWNvbi0zMHgzMC5wbmcgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5wbmc7IHBhdGggPSAi
SW5zcGVjdG9yRXh0ZW5zaW9uLVRhYkljb24tMzB4MzAucG5nIjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTlFMjg0NjcyNkY5NDEzQjAwMDNGMUZBIC8qIEluc3BlY3RvckV4dGVuc2lv
bi1iYXNpYy10YWIuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJJbnNwZWN0b3JF
eHRlbnNpb24tYmFzaWMtdGFiLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MzMyMCw2ICszMzI0LDggQEAKIAkJCQk1Q0U3NTk0NzIyQTg4M0E1MDBDMTI0MDkgLyogVGVzdENv
bnRleHRNZW51RHJpdmVyLm1tICovLAogCQkJCURGNkJDNDcwMjUzNEUxMjAwMDhGNjNDQyAvKiBU
ZXN0RG93bmxvYWREZWxlZ2F0ZS5oICovLAogCQkJCURGNkJDNDZGMjUzNEUxMjAwMDhGNjNDQyAv
KiBUZXN0RG93bmxvYWREZWxlZ2F0ZS5tbSAqLywKKwkJCQk5OUM2MDdGNDI2RkQ1QTFFMDBBMDk1
M0YgLyogVGVzdEluc3BlY3RvclVSTFNjaGVtZUhhbmRsZXIuaCAqLywKKwkJCQk5OUM2MDdGNTI2
RkQ1QTFGMDBBMDk1M0YgLyogVGVzdEluc3BlY3RvclVSTFNjaGVtZUhhbmRsZXIubW0gKi8sCiAJ
CQkJNUM3MkU4Q0QyNDRGRkNFMzAwMzgxRUI3IC8qIFRlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRl
LmggKi8sCiAJCQkJNUM3MkU4Q0UyNDRGRkNFNDAwMzgxRUI3IC8qIFRlc3RMZWdhY3lEb3dubG9h
ZERlbGVnYXRlLm1tICovLAogCQkJCTJEMUMwNEE1MUQ3NjI5OEIwMDBBNjgxNiAvKiBUZXN0TmF2
aWdhdGlvbkRlbGVnYXRlLmggKi8sCkBAIC0zNjYzLDYgKzM2NjksNyBAQAogCQkJCTM3MENFMjI5
MUY1NzM0MzQwMEU3NDEwQiAvKiBXS0NvbnRlbnRWaWV3VGFyZ2V0Rm9yQWN0aW9uLm1tICovLAog
CQkJCTUxRDEyNDk3MUU3NjNBRjgwMDJCMjgyMCAvKiBXS0hUVFBDb29raWVTdG9yZS5tbSAqLywK
IAkJCQk5OUI0RjlDNTI0RURFRDk2MDAwMjJCODIgLyogV0tJbnNwZWN0b3JEZWxlZ2F0ZS5tbSAq
LywKKwkJCQk5OUM2MDdFQzI2RkI5MEFDMDBBMDk1M0YgLyogV0tJbnNwZWN0b3JFeHRlbnNpb24u
bW0gKi8sCiAJCQkJOTlFMjg0NjMyNkY5MUY3RjAwMDNGMUZBIC8qIFdLSW5zcGVjdG9yRXh0ZW5z
aW9uRGVsZWdhdGUubW0gKi8sCiAJCQkJOTk5QjdFRTIyNTUxQzYzQjAwRjQ1MEE0IC8qIFdLSW5z
cGVjdG9yRXh0ZW5zaW9uSG9zdC5tbSAqLywKIAkJCQlBNUE3MjlGMDFGNjIyQTlBMDBERTVBMjgg
LyogV0tOYXZpZ2F0aW9uUmVzcG9uc2UubW0gKi8sCkBAIC01NjAwLDYgKzU2MDcsNyBAQAogCQkJ
CUNBOTdCMzk0MjE5MzY2NjAwMDQ1REY2RiAvKiBJbmRleGVkREJVc2VyRGVsZXRlLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJN0E5NUJERTExRTlCRUM1RjAwODY1NDk4IC8qIEluamVjdGVkQnVuZGxl
QXBwbGVFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VGQjFBNDExQUU2MDA0NDdD
NEMgLyogSW5qZWN0ZWRCdW5kbGVCYXNpYy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5OUM2MDdF
RDI2RkI5MEFDMDBBMDk1M0YgLyogV0tJbnNwZWN0b3JFeHRlbnNpb24ubW0gaW4gU291cmNlcyAq
LywKIAkJCQk4MzE0OEIwNjIwMkFDNkE0MDBCQURFOTkgLyogSW5qZWN0ZWRCdW5kbGVEaXNhYmxl
T3ZlcnJpZGVCdWlsdGluc0JlaGF2aW9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUZD
MUE0MTFBRTYwMDQ0N0M0QyAvKiBJbmplY3RlZEJ1bmRsZUZyYW1lSGl0VGVzdC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlGNDYwRjY1NzI2MTExNkVBMDA2NEYyQjYgLyogSW5qZWN0ZWRCdW5kbGVI
aXRUZXN0Lm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1dLSW5zcGVjdG9yRXh0ZW5zaW9uLm1tIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0luc3BlY3RvckV4dGVuc2lvbi5tbQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ODhiOGIyYWVjMzUwOWFlNGE2YmVlYzRlYTU2NjMyZDdmMDRhZWM3Ci0tLSAvZGV2L251
bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0luc3BlY3Rv
ckV4dGVuc2lvbi5tbQpAQCAtMCwwICsxLDE4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNv
bmZpZy5oIgorCisjaW1wb3J0ICJUZXN0Q29jb2EuaCIKKyNpbXBvcnQgIlRlc3RJbnNwZWN0b3JV
UkxTY2hlbWVIYW5kbGVyLmgiCisjaW1wb3J0ICJVdGlsaXRpZXMuaCIKKyNpbXBvcnQgPFdlYktp
dC9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZh
dGUuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tJbnNwZWN0b3IuaD4KKyNpbXBvcnQgPFdlYktpdC9f
V0tJbnNwZWN0b3JDb25maWd1cmF0aW9uLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLSW5zcGVjdG9y
RXh0ZW5zaW9uLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdh
dGUuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tJbnNwZWN0b3JFeHRlbnNpb25Qcml2YXRlRm9yVGVz
dGluZy5oPgorI2ltcG9ydCA8V2ViS2l0L19XS0luc3BlY3RvclByaXZhdGVGb3JUZXN0aW5nLmg+
CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVO
U0lPTlMpCisKK3N0YXRpYyBib29sIGRpZEF0dGFjaExvY2FsSW5zcGVjdG9yQ2FsbGVkID0gZmFs
c2U7CitzdGF0aWMgYm9vbCBkaWRTaG93RXh0ZW5zaW9uVGFiV2FzQ2FsbGVkID0gZmFsc2U7Citz
dGF0aWMgYm9vbCBkaWRIaWRlRXh0ZW5zaW9uVGFiV2FzQ2FsbGVkID0gZmFsc2U7CitzdGF0aWMg
Ym9vbCBwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQgPSBmYWxzZTsKK3N0YXRpYyBSZXRhaW5QdHI8
VGVzdEluc3BlY3RvclVSTFNjaGVtZUhhbmRsZXI+IHNoYXJlZFVSTFNjaGVtZUhhbmRsZXI7Citz
dGF0aWMgUmV0YWluUHRyPF9XS0luc3BlY3RvckV4dGVuc2lvbj4gc2hhcmVkSW5zcGVjdG9yRXh0
ZW5zaW9uOworc3RhdGljIFJldGFpblB0cjxOU1N0cmluZz4gc2hhcmVkRXh0ZW5zaW9uVGFiSWRl
bnRpZmllcjsKKworc3RhdGljIHZvaWQgcmVzZXRHbG9iYWxTdGF0ZSgpCit7CisgICAgZGlkQXR0
YWNoTG9jYWxJbnNwZWN0b3JDYWxsZWQgPSBmYWxzZTsKKyAgICBkaWRTaG93RXh0ZW5zaW9uVGFi
V2FzQ2FsbGVkID0gZmFsc2U7CisgICAgZGlkSGlkZUV4dGVuc2lvblRhYldhc0NhbGxlZCA9IGZh
bHNlOworICAgIHBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCA9IGZhbHNlOworfQorCitAaW50ZXJm
YWNlIFVJRGVsZWdhdGVGb3JUZXN0aW5nSW5zcGVjdG9yRXh0ZW5zaW9uIDogTlNPYmplY3QgPFdL
VUlEZWxlZ2F0ZT4KK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFVJRGVsZWdhdGVGb3JUZXN0aW5n
SW5zcGVjdG9yRXh0ZW5zaW9uCisKKy0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZp
ZXcgZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3I6KF9XS0luc3BlY3RvciAqKWluc3BlY3Rvcgorewor
ICAgIEVYUEVDVF9FUSh3ZWJWaWV3Ll9pbnNwZWN0b3IsIGluc3BlY3Rvcik7CisgICAgZGlkQXR0
YWNoTG9jYWxJbnNwZWN0b3JDYWxsZWQgPSB0cnVlOworfQorCistIChfV0tJbnNwZWN0b3JDb25m
aWd1cmF0aW9uICopX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgY29uZmlndXJhdGlvbkZv
ckxvY2FsSW5zcGVjdG9yOihfV0tJbnNwZWN0b3IgKilpbnNwZWN0b3IKK3sKKyAgICBpZiAoIXNo
YXJlZFVSTFNjaGVtZUhhbmRsZXIpCisgICAgICAgIHNoYXJlZFVSTFNjaGVtZUhhbmRsZXIgPSBh
ZG9wdE5TKFtbVGVzdEluc3BlY3RvclVSTFNjaGVtZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKKwor
ICAgIGF1dG8gaW5zcGVjdG9yQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tJbnNwZWN0b3JD
b25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW2luc3BlY3RvckNvbmZpZ3VyYXRpb24g
c2V0VVJMU2NoZW1lSGFuZGxlcjpzaGFyZWRVUkxTY2hlbWVIYW5kbGVyLmdldCgpIGZvclVSTFNj
aGVtZTpAInRlc3QtcmVzb3VyY2UiXTsKKyAgICByZXR1cm4gaW5zcGVjdG9yQ29uZmlndXJhdGlv
bi5hdXRvcmVsZWFzZSgpOworfQorCitAZW5kCisKKworQGludGVyZmFjZSBJbnNwZWN0b3JFeHRl
bnNpb25EZWxlZ2F0ZUZvclRlc3RpbmdJbnNwZWN0b3JFeHRlbnNpb24gOiBOU09iamVjdCA8X1dL
SW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGU+CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBJbnNw
ZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZUZvclRlc3RpbmdJbnNwZWN0b3JFeHRlbnNpb24geworfQor
CistICh2b2lkKWluc3BlY3RvckV4dGVuc2lvbjooX1dLSW5zcGVjdG9yRXh0ZW5zaW9uICopZXh0
ZW5zaW9uIGRpZFNob3dUYWJXaXRoSWRlbnRpZmllcjooTlNTdHJpbmcgKil0YWJJZGVudGlmaWVy
Cit7CisgICAgZGlkU2hvd0V4dGVuc2lvblRhYldhc0NhbGxlZCA9IHRydWU7Cit9CisKKy0gKHZv
aWQpaW5zcGVjdG9yRXh0ZW5zaW9uOihfV0tJbnNwZWN0b3JFeHRlbnNpb24gKilleHRlbnNpb24g
ZGlkSGlkZVRhYldpdGhJZGVudGlmaWVyOihOU1N0cmluZyAqKXRhYklkZW50aWZpZXIKK3sKKyAg
ICBkaWRIaWRlRXh0ZW5zaW9uVGFiV2FzQ2FsbGVkID0gdHJ1ZTsKK30KKworQGVuZAorCitURVNU
KFdLSW5zcGVjdG9yRXh0ZW5zaW9uLCBDYW5FdmFsdWF0ZVNjcmlwdEluRXh0ZW5zaW9uVGFiKQor
eworICAgIHJlc2V0R2xvYmFsU3RhdGUoKTsKKworICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRp
b24gPSBhZG9wdE5TKFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIG5ld10pOworICAgIHdlYlZpZXdD
b25maWd1cmF0aW9uLmdldCgpLnByZWZlcmVuY2VzLl9kZXZlbG9wZXJFeHRyYXNFbmFibGVkID0g
WUVTOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjp3ZWJWaWV3
Q29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIGF1dG8gdWlEZWxlZ2F0ZSA9IGFkb3B0TlMoW1VJ
RGVsZWdhdGVGb3JUZXN0aW5nSW5zcGVjdG9yRXh0ZW5zaW9uIG5ld10pOworCisgICAgW3dlYlZp
ZXcgc2V0VUlEZWxlZ2F0ZTp1aURlbGVnYXRlLmdldCgpXTsKKyAgICBbd2ViVmlldyBsb2FkSFRN
TFN0cmluZzpAIjxoZWFkPjx0aXRsZT5UZXN0IHBhZ2UgdG8gYmUgaW5zcGVjdGVkPC90aXRsZT48
L2hlYWQ+PGJvZHk+PHA+RmlsbGVyIGNvbnRlbnQ8L3A+PC9ib2R5PiIgYmFzZVVSTDpbTlNVUkwg
VVJMV2l0aFN0cmluZzpAImh0dHA6Ly9leGFtcGxlLmNvbS8iXV07CisKKyAgICBbW3dlYlZpZXcg
X2luc3BlY3Rvcl0gc2hvd107CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkaWRBdHRh
Y2hMb2NhbEluc3BlY3RvckNhbGxlZCk7CisKKyAgICBhdXRvIGV4dGVuc2lvbklEID0gW05TVVVJ
RCBVVUlEXS5VVUlEU3RyaW5nOworICAgIGF1dG8gZXh0ZW5zaW9uRGlzcGxheU5hbWUgPSBAIkZp
cnN0RXh0ZW5zaW9uIjsKKworICAgIC8vIFJlZ2lzdGVyIHRoZSB0ZXN0IGV4dGVuc2lvbi4KKyAg
ICBwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQgPSBmYWxzZTsKKyAgICBbW3dlYlZpZXcgX2luc3Bl
Y3Rvcl0gcmVnaXN0ZXJFeHRlbnNpb25XaXRoSUQ6ZXh0ZW5zaW9uSUQgZGlzcGxheU5hbWU6ZXh0
ZW5zaW9uRGlzcGxheU5hbWUgY29tcGxldGlvbkhhbmRsZXI6XihOU0Vycm9yICogX051bGxhYmxl
IGVycm9yLCBfV0tJbnNwZWN0b3JFeHRlbnNpb24gKiBfTnVsbGFibGUgZXh0ZW5zaW9uKSB7Cisg
ICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAgICAgRVhQRUNUX05PVF9OVUxMKGV4dGVu
c2lvbik7CisgICAgICAgIHNoYXJlZEluc3BlY3RvckV4dGVuc2lvbiA9IGV4dGVuc2lvbjsKKwor
ICAgICAgICBwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQgPSB0cnVlOworICAgIH1dOworICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkKTsKKworICAg
IGF1dG8gZXh0ZW5zaW9uRGVsZWdhdGUgPSBhZG9wdE5TKFtJbnNwZWN0b3JFeHRlbnNpb25EZWxl
Z2F0ZUZvclRlc3RpbmdJbnNwZWN0b3JFeHRlbnNpb24gbmV3XSk7CisgICAgW3NoYXJlZEluc3Bl
Y3RvckV4dGVuc2lvbiBzZXREZWxlZ2F0ZTpleHRlbnNpb25EZWxlZ2F0ZS5nZXQoKV07CisKKyAg
ICAvLyBDcmVhdGUgYW4gZXh0ZW5zaW9uIHRhYi4KKyAgICBhdXRvIGljb25VUkwgPSBbTlNVUkwg
VVJMV2l0aFN0cmluZzpAInRlc3QtcmVzb3VyY2U6Ly9JbnNwZWN0b3JFeHRlbnNpb24tVGFiSWNv
bi0zMHgzMC5wbmciXTsKKyAgICBhdXRvIHNvdXJjZVVSTCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5n
OkAidGVzdC1yZXNvdXJjZTovL0luc3BlY3RvckV4dGVuc2lvbi1iYXNpYy10YWIuaHRtbCJdOwor
CisgICAgcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkID0gZmFsc2U7CisgICAgW3NoYXJlZEluc3Bl
Y3RvckV4dGVuc2lvbiBjcmVhdGVUYWJXaXRoTmFtZTpAIkZpcnN0RXh0ZW5zaW9uLVRhYiIgdGFi
SWNvblVSTDppY29uVVJMIHNvdXJjZVVSTDpzb3VyY2VVUkwgY29tcGxldGlvbkhhbmRsZXI6XihO
U0Vycm9yICogX051bGxhYmxlIGVycm9yLCBOU1N0cmluZyAqIF9OdWxsYWJsZSBleHRlbnNpb25U
YWJJZGVudGlmaWVyKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAgICAgRVhQ
RUNUX05PVF9OVUxMKGV4dGVuc2lvblRhYklkZW50aWZpZXIpOworICAgICAgICBzaGFyZWRFeHRl
bnNpb25UYWJJZGVudGlmaWVyID0gZXh0ZW5zaW9uVGFiSWRlbnRpZmllcjsKKworICAgICAgICBw
ZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkKTsKKworICAgIHBlbmRpbmdD
YWxsYmFja1dhc0NhbGxlZCA9IGZhbHNlOworICAgIGRpZFNob3dFeHRlbnNpb25UYWJXYXNDYWxs
ZWQgPSBmYWxzZTsKKyAgICBbW3dlYlZpZXcgX2luc3BlY3Rvcl0gc2hvd0V4dGVuc2lvblRhYldp
dGhJZGVudGlmaWVyOnNoYXJlZEV4dGVuc2lvblRhYklkZW50aWZpZXIuZ2V0KCkgY29tcGxldGlv
bkhhbmRsZXI6XihOU0Vycm9yICogX051bGxhYmxlIGVycm9yKSB7CisgICAgICAgIEVYUEVDVF9O
VUxMKGVycm9yKTsKKworICAgICAgICBwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQgPSB0cnVlOwor
ICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcGVuZGluZ0NhbGxiYWNrV2Fz
Q2FsbGVkKTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRpZFNob3dFeHRlbnNpb25U
YWJXYXNDYWxsZWQpOworCisgICAgcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkID0gZmFsc2U7Cisg
ICAgYXV0byBzY3JpcHRTb3VyY2UxID0gQCJ3aW5kb3cuX3NlY3JldFZhbHVlID0geydhbnN3ZXIn
OjQyfSI7CisgICAgW3NoYXJlZEluc3BlY3RvckV4dGVuc2lvbiBfZXZhbHVhdGVTY3JpcHQ6c2Ny
aXB0U291cmNlMSBpbkV4dGVuc2lvblRhYldpdGhJZGVudGlmaWVyOnNoYXJlZEV4dGVuc2lvblRh
YklkZW50aWZpZXIuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU0Vycm9yICogX051bGxhYmxl
IGVycm9yLCBOU0RpY3Rpb25hcnkgKiBfTnVsbGFibGUgcmVzdWx0KSB7CisgICAgICAgIEVYUEVD
VF9OVUxMKGVycm9yKTsKKyAgICAgICAgcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkID0gdHJ1ZTsK
KyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnBlbmRpbmdDYWxsYmFja1dh
c0NhbGxlZCk7CisKKyAgICBwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQgPSBmYWxzZTsKKyAgICBh
dXRvIHNjcmlwdFNvdXJjZTIgPSBAIndpbmRvdy5fc2VjcmV0VmFsdWUiOworICAgIFtzaGFyZWRJ
bnNwZWN0b3JFeHRlbnNpb24gX2V2YWx1YXRlU2NyaXB0OnNjcmlwdFNvdXJjZTIgaW5FeHRlbnNp
b25UYWJXaXRoSWRlbnRpZmllcjpzaGFyZWRFeHRlbnNpb25UYWJJZGVudGlmaWVyLmdldCgpIGNv
bXBsZXRpb25IYW5kbGVyOl4oTlNFcnJvciAqIF9OdWxsYWJsZSBlcnJvciwgTlNEaWN0aW9uYXJ5
ICogX051bGxhYmxlIHJlc3VsdCkgeworICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAg
ICAgIEVYUEVDVF9OT1RfTlVMTChyZXN1bHQpOworICAgICAgICBFWFBFQ1RfTlNfRVFVQUwocmVz
dWx0W0AiYW5zd2VyIl0sIEA0Mik7CisKKyAgICAgICAgcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVk
ID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnBlbmRpbmdD
YWxsYmFja1dhc0NhbGxlZCk7CisKKyAgICAvLyBVbnJlZ2lzdGVyIHRoZSB0ZXN0IGV4dGVuc2lv
bi4KKyAgICBwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQgPSBmYWxzZTsKKyAgICBbW3dlYlZpZXcg
X2luc3BlY3Rvcl0gdW5yZWdpc3RlckV4dGVuc2lvbjpzaGFyZWRJbnNwZWN0b3JFeHRlbnNpb24u
Z2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU0Vycm9yICogX051bGxhYmxlIGVycm9yKSB7Cisg
ICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKworICAgICAgICBwZW5kaW5nQ2FsbGJhY2tXYXND
YWxsZWQgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcGVu
ZGluZ0NhbGxiYWNrV2FzQ2FsbGVkKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1Jf
RVhURU5TSU9OUykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdElu
c3BlY3RvclVSTFNjaGVtZUhhbmRsZXIuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVz
dEluc3BlY3RvclVSTFNjaGVtZUhhbmRsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNzkwN2YyNzkwZTBmODNl
YmQ5YzNiMjIwZTRmZDIyYjBlNDM3N2ZhCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9jb2NvYS9UZXN0SW5zcGVjdG9yVVJMU2NoZW1lSGFuZGxlci5oCkBAIC0wLDAgKzEs
MzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2ltcG9ydCA8V2ViS2l0L1dLRm91
bmRhdGlvbi5oPgorI2ltcG9ydCA8V2ViS2l0L1dLVVJMU2NoZW1lSGFuZGxlci5oPgorCitOU19B
U1NVTUVfTk9OTlVMTF9CRUdJTgorCitAaW50ZXJmYWNlIFRlc3RJbnNwZWN0b3JVUkxTY2hlbWVI
YW5kbGVyIDogTlNPYmplY3QgPFdLVVJMU2NoZW1lSGFuZGxlcj4KK0BlbmQKKworTlNfQVNTVU1F
X05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RJ
bnNwZWN0b3JVUkxTY2hlbWVIYW5kbGVyLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9U
ZXN0SW5zcGVjdG9yVVJMU2NoZW1lSGFuZGxlci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNmE0N2IzOTIxOGQ4
MTk0ZDVlOWViODA1YmMxYWU5OWI2NWNiZjA1Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9jb2NvYS9UZXN0SW5zcGVjdG9yVVJMU2NoZW1lSGFuZGxlci5tbQpAQCAtMCww
ICsxLDExMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiVGVz
dEluc3BlY3RvclVSTFNjaGVtZUhhbmRsZXIuaCIKKworI2ltcG9ydCA8V2ViQ29yZS9NSU1FVHlw
ZVJlZ2lzdHJ5Lmg+CisjaW1wb3J0IDxXZWJLaXQvV0tVUkxTY2hlbWVUYXNrLmg+CisjaW1wb3J0
IDx3dGYvQXNzZXJ0aW9ucy5oPgorCisvLyBOb3RlOiB0aGlzIGNsYXNzIGlzIGEgc2ltcGxpZmll
ZCB2ZXJzaW9uIG9mIFdLUmVzb3VyY2VVUkxTY2hlbWVIYW5kbGVyIGZvciB0ZXN0aW5nIHB1cnBv
c2VzLgorCitAaW1wbGVtZW50YXRpb24gVGVzdEluc3BlY3RvclVSTFNjaGVtZUhhbmRsZXIgewor
ICAgIFJldGFpblB0cjxOU01hcFRhYmxlPGlkIDxXS1VSTFNjaGVtZVRhc2s+LCBOU09wZXJhdGlv
biAqPj4gX2ZpbGVMb2FkT3BlcmF0aW9uczsKKyAgICBSZXRhaW5QdHI8TlNCdW5kbGU+IF9jYWNo
ZWRCdW5kbGU7CisgICAgUmV0YWluUHRyPE5TT3BlcmF0aW9uUXVldWU+IF9vcGVyYXRpb25RdWV1
ZTsKK30KKworLy8gTUFSSyAtIFdLVVJMU2NoZW1lSGFuZGxlciBQcm90b2NvbAorCistICh2b2lk
KXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc3RhcnRVUkxTY2hlbWVUYXNrOihpZCA8V0tV
UkxTY2hlbWVUYXNrPil1cmxTY2hlbWVUYXNrCit7CisgICAgaWYgKCFfY2FjaGVkQnVuZGxlKQor
ICAgICAgICBfY2FjaGVkQnVuZGxlID0gW05TQnVuZGxlIG1haW5CdW5kbGVdOworCisgICAgaWYg
KCFfZmlsZUxvYWRPcGVyYXRpb25zKQorICAgICAgICBfZmlsZUxvYWRPcGVyYXRpb25zID0gYWRv
cHROUyhbW05TTWFwVGFibGUgYWxsb2NdIGluaXRXaXRoS2V5T3B0aW9uczpOU1BvaW50ZXJGdW5j
dGlvbnNTdHJvbmdNZW1vcnkgdmFsdWVPcHRpb25zOk5TUG9pbnRlckZ1bmN0aW9uc1N0cm9uZ01l
bW9yeSBjYXBhY2l0eTo1XSk7CisKKyAgICBpZiAoIV9vcGVyYXRpb25RdWV1ZSkgeworICAgICAg
ICBfb3BlcmF0aW9uUXVldWUgPSBhZG9wdE5TKFtbTlNPcGVyYXRpb25RdWV1ZSBhbGxvY10gaW5p
dF0pOworICAgICAgICBfb3BlcmF0aW9uUXVldWUuZ2V0KCkudW5kZXJseWluZ1F1ZXVlID0gZGlz
cGF0Y2hfZ2V0X2dsb2JhbF9xdWV1ZShRT1NfQ0xBU1NfVVNFUl9JTlRFUkFDVElWRSwgMCk7Cisg
ICAgICAgIF9vcGVyYXRpb25RdWV1ZS5nZXQoKS5xdWFsaXR5T2ZTZXJ2aWNlID0gTlNPcGVyYXRp
b25RdWFsaXR5T2ZTZXJ2aWNlVXNlckludGVyYWN0aXZlOworCisgICAgICAgIC8vIFRoZSBkZWZh
dWx0IHZhbHVlIChOU09wZXJhdGlvblF1ZXVlRGVmYXVsdE1heENvbmN1cnJlbnRPcGVyYXRpb25D
b3VudCkgcmVzdWx0cyBpbiBhIGxhcmdlIG51bWJlciBvZiB0aHJlYWRzCisgICAgICAgIC8vIHRo
YXQgY2FuIGV4Y2VlZCB0aGUgc29mdCBsaW1pdCBpZiB0d28gV2ViIEluc3BlY3RvciBpbnN0YW5j
ZXMgYXJlIGJlaW5nIGxvYWRlZCBzaW11bHRhbmVvdXNseS4KKyAgICAgICAgX29wZXJhdGlvblF1
ZXVlLmdldCgpLm1heENvbmN1cnJlbnRPcGVyYXRpb25Db3VudCA9IDQ7CisgICAgfQorCisgICAg
TlNCbG9ja09wZXJhdGlvbiAqb3BlcmF0aW9uID0gW05TQmxvY2tPcGVyYXRpb24gYmxvY2tPcGVy
YXRpb25XaXRoQmxvY2s6XnsKKyAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21h
aW5fcXVldWUoKSwgXnsKKyAgICAgICAgICAgIFtfZmlsZUxvYWRPcGVyYXRpb25zIHJlbW92ZU9i
amVjdEZvcktleTp1cmxTY2hlbWVUYXNrXTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgTlNVUkwg
KnJlcXVlc3RVUkwgPSB1cmxTY2hlbWVUYXNrLnJlcXVlc3QuVVJMOworICAgICAgICBOU1VSTCAq
ZmlsZVVSTEZvclJlcXVlc3QgPSBbX2NhY2hlZEJ1bmRsZSBVUkxGb3JSZXNvdXJjZTpyZXF1ZXN0
VVJMLnJlbGF0aXZlUGF0aCB3aXRoRXh0ZW5zaW9uOkAiIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2Vi
S2l0QVBJLnJlc291cmNlcyJdOworICAgICAgICBpZiAoIWZpbGVVUkxGb3JSZXF1ZXN0KSB7Cisg
ICAgICAgICAgICBbdXJsU2NoZW1lVGFzayBkaWRGYWlsV2l0aEVycm9yOltOU0Vycm9yIGVycm9y
V2l0aERvbWFpbjpOU0NvY29hRXJyb3JEb21haW4gY29kZTpOU1VSTEVycm9yRmlsZURvZXNOb3RF
eGlzdCB1c2VySW5mbzpuaWxdXTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIE5TRXJyb3IgKnJlYWRFcnJvcjsKKyAgICAgICAgTlNEYXRhICpmaWxlRGF0YSA9IFtO
U0RhdGEgZGF0YVdpdGhDb250ZW50c09mVVJMOmZpbGVVUkxGb3JSZXF1ZXN0IG9wdGlvbnM6MCBl
cnJvcjomcmVhZEVycm9yXTsKKyAgICAgICAgaWYgKCFmaWxlRGF0YSkgeworICAgICAgICAgICAg
W3VybFNjaGVtZVRhc2sgZGlkRmFpbFdpdGhFcnJvcjpbTlNFcnJvciBlcnJvcldpdGhEb21haW46
TlNDb2NvYUVycm9yRG9tYWluIGNvZGU6TlNVUkxFcnJvclJlc291cmNlVW5hdmFpbGFibGUgdXNl
ckluZm86QHsKKyAgICAgICAgICAgICAgICBOU1VuZGVybHlpbmdFcnJvcktleTogcmVhZEVycm9y
LAorICAgICAgICAgICAgfV1dOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAg
ICAgICAgTlNTdHJpbmcgKm1pbWVUeXBlID0gV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6bWlt
ZVR5cGVGb3JFeHRlbnNpb24oZmlsZVVSTEZvclJlcXVlc3QucGF0aEV4dGVuc2lvbik7CisgICAg
ICAgIGlmICghbWltZVR5cGUpCisgICAgICAgICAgICBtaW1lVHlwZSA9IEAiYXBwbGljYXRpb24v
b2N0ZXQtc3RyZWFtIjsKKworICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4g
aGVhZGVyRmllbGRzID0gYWRvcHROUyhAeworICAgICAgICAgICAgQCJBY2Nlc3MtQ29udHJvbC1B
bGxvdy1PcmlnaW4iOiBAIioiLAorICAgICAgICAgICAgQCJDb250ZW50LUxlbmd0aCI6IFtOU1N0
cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJXp1IiwgKHNpemVfdClmaWxlRGF0YS5sZW5ndGhdLAor
ICAgICAgICAgICAgQCJDb250ZW50LVR5cGUiOiBtaW1lVHlwZSwKKyAgICAgICAgfS5tdXRhYmxl
Q29weSk7CisKKyAgICAgICAgUmV0YWluUHRyPE5TSFRUUFVSTFJlc3BvbnNlPiB1cmxSZXNwb25z
ZSA9IGFkb3B0TlMoW1tOU0hUVFBVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dXJsU2No
ZW1lVGFzay5yZXF1ZXN0LlVSTCBzdGF0dXNDb2RlOjIwMCBIVFRQVmVyc2lvbjpuaWwgaGVhZGVy
RmllbGRzOmhlYWRlckZpZWxkcy5nZXQoKV0pOworICAgICAgICBbdXJsU2NoZW1lVGFzayBkaWRS
ZWNlaXZlUmVzcG9uc2U6dXJsUmVzcG9uc2UuZ2V0KCldOworICAgICAgICBbdXJsU2NoZW1lVGFz
ayBkaWRSZWNlaXZlRGF0YTpmaWxlRGF0YV07CisgICAgICAgIFt1cmxTY2hlbWVUYXNrIGRpZEZp
bmlzaF07CisgICAgfV07CisgICAgCisgICAgW19maWxlTG9hZE9wZXJhdGlvbnMgc2V0T2JqZWN0
Om9wZXJhdGlvbiBmb3JLZXk6dXJsU2NoZW1lVGFza107CisgICAgW19vcGVyYXRpb25RdWV1ZSBh
ZGRPcGVyYXRpb246b3BlcmF0aW9uXTsKK30KKworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcg
Kil3ZWJWaWV3IHN0b3BVUkxTY2hlbWVUYXNrOihpZCA8V0tVUkxTY2hlbWVUYXNrPil1cmxTY2hl
bWVUYXNrCit7CisgICAgLy8gRW5zdXJlIHRoYXQgYWxsIGJsb2NrcyB3aXRoIHBlbmRpbmcgcmVt
b3ZhbHMgYXJlIGRpc3BhdGNoZWQgYmVmb3JlIGRvaW5nIGEgbWFwIGxvb2t1cC4KKyAgICBkaXNw
YXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgICAgICBpZiAoTlNP
cGVyYXRpb24gKm9wZXJhdGlvbiA9IFtfZmlsZUxvYWRPcGVyYXRpb25zIG9iamVjdEZvcktleTp1
cmxTY2hlbWVUYXNrXSkgeworICAgICAgICAgICAgW29wZXJhdGlvbiBjYW5jZWxdOworICAgICAg
ICAgICAgW19maWxlTG9hZE9wZXJhdGlvbnMgcmVtb3ZlT2JqZWN0Rm9yS2V5OnVybFNjaGVtZVRh
c2tdOworICAgICAgICB9CisgICAgfSk7Cit9CisKK0BlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Y29jb2EvVGVzdFdLV2ViVmlldy5tbQppbmRleCA0Mjk0MGFlNDFmYjZlODQ5Mjg4ZTk3NGU0MjU3
NjRjN2QwN2JlZGYxLi5jMDJlMGRmNDI2NzA2ODNkYjU3ZjAzOTBhMWM2NGU3NzdmYTU4ZjhiIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCkBAIC0zMyw2ICsz
Myw3IEBACiAKICNpbXBvcnQgPFdlYktpdC9XS0NvbnRlbnRXb3JsZC5oPgogI2ltcG9ydCA8V2Vi
S2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tX
ZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmcuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJLaXRQcml2YXRl
Lmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLQWN0aXZhdGVkRWxlbWVudEluZm8uaD4KICNpbXBvcnQg
PFdlYktpdC9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439187</attachid>
            <date>2021-09-24 13:20:25 -0700</date>
            <delta_ts>2021-09-28 12:36:02 -0700</delta_ts>
            <desc>Patch v1.0</desc>
            <filename>bug-230646-20210924132024.patch</filename>
            <type>text/plain</type>
            <size>70578</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzMDUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDVhYTIxNzI4M2ZiYmU0
MTlmN2JiYTE3OWNiNzBhY2U3YWUyNDg5My4uMDNlMzNjMGEwZWEwMTRjYjZkMDA2NzRjZDRjNjBm
MTkzMWZiNWY2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIxLTA5LTI0ICBCSiBC
dXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gYWRkIF9XS0luc3BlY3Rv
ckV4dGVuc2lvbiBTUEkgdG8gZXZhbHVhdGUgc2NyaXB0IG9uIGFuIGV4dGVuc2lvbiB0YWIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDY0NgorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vODM0MjAzMjg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgRXhlcmNpc2VkIGJ5IG5ldyBBUEkgdGVzdDogV0tJbnNw
ZWN0b3JFeHRlbnNpb24uQ2FuRXZhbHVhdGVTY3JpcHRJbkV4dGVuc2lvblRhYgorCisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5oOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaWRsOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JGcm9udGVuZEhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRI
b3N0OjpldmFsdWF0ZVNjcmlwdEluRXh0ZW5zaW9uVGFiKToKKyAgICAgICAgRmluZCB0aGUgZ2xv
YmFsIG9iamVjdCB0aGF0IGNvcnJlc3BvbmRzIHRvIHRoZSBwYXNzZWQtaW4gPGlmcmFtZT4gYW5k
CisgICAgICAgIHRyeSB0byBldmFsdWF0ZSBzY3JpcHRTb3VyY2UgaW4gdGhlIG1haW5UaHJlYWRO
b3JtYWxXb3JsZCgpIG9mIHRoYXQgPGlmcmFtZT4uCisKIDIwMjEtMDktMjQgIE15bGVzIEMuIE1h
eGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBDb2xvciBrZXl3b3JkcyBp
biBvdmVycmlkZS1jb2xvciBjYXVzZSBhIGNyYXNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRl
eCA2NmI5YTJmYWQzNzNmYjBkNDhiZTVlMjg5MmMzNjVhYWVhNzkzYmIwLi45NDM2YzQ3NmRhYjRl
NDY2ZDA1ZDU2NTkwZjg4ZDE3YmNiYzJkOGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw0MCBAQAorMjAyMS0wOS0yNCAgQkogQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbQ29jb2FdIGFkZCBfV0tJbnNwZWN0b3JFeHRlbnNpb24gU1BJIHRvIGV2YWx1YXRl
IHNjcmlwdCBvbiBhbiBleHRlbnNpb24gdGFiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzA2NDYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgzNDIw
MzI4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZCBhIG5ldyBJbnNwZWN0b3JGcm9udGVuZEFQSSBtZXRob2QgdG8gZXZhbHVhdGUgc2NyaXB0IG9u
IGFuIGlmcmFtZSB3aXRoaW4KKyAgICAgICAgV2ViIEluc3BlY3Rvci4gVGhpcyBpbiB0dXJuIGNh
bGxzIG91dCB0byBJbnNwZWN0b3JGcm9udGVuZEhvc3QgdG8gZG8gdGhlIGFjdHVhbCBldmFsdWF0
aW9uLgorICAgICAgICBPdGhlcndpc2UsIHRoZSBDU1AgcG9saWN5IHNldCBieSB0aGUgdGFiIGNv
bnRlbnQgbWF5IGJsb2NrIGFueSBzdWNoIGV2YWx1YXRpb24KKyAgICAgICAgaWYgdGhlICdzY3Jp
cHQtc3JjJyBkaXJlY3RpdmUgZG9lcyBub3QgaW5jbHVkZSAndW5zYWZlLWV2YWwnLgorCisgICAg
ICAgICogVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JGcm9udGVuZEFQSS5qczoKKyAg
ICAgICAgKEluc3BlY3RvckZyb250ZW5kQVBJLnNob3dFeHRlbnNpb25UYWIpOgorICAgICAgICAo
SW5zcGVjdG9yRnJvbnRlbmRBUEkuZXZhbHVhdGVTY3JpcHRJbkV4dGVuc2lvblRhYik6CisgICAg
ICAgIENhbGwgdGhyb3VnaCB0byB0aGUgV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlciBt
ZXRob2QuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1dlYkluc3BlY3Rv
ckV4dGVuc2lvbkNvbnRyb2xsZXIuanM6CisgICAgICAgIChXSS5XZWJJbnNwZWN0b3JFeHRlbnNp
b25Db250cm9sbGVyLnByb3RvdHlwZS5ldmFsdWF0ZVNjcmlwdEluRXh0ZW5zaW9uVGFiKTogQWRk
ZWQuCisgICAgICAgIFRyeSB0byBnZXQgdGhlIDxpZnJhbWU+IGZvciBhIGV4dGVuc2lvblRhYklE
LCBhbmQgdXNlIEluc3BlY3RvckZyb250ZW5kSG9zdCB0bworICAgICAgICBldmFsdWF0ZSBzY3Jp
cHQgaW4gdGhlIGNvbnRleHQgb2YgdGhlIDxpZnJhbWU+LiBCZSBzdXJlIHRvIGNvcnJlY3RseSB3
cmFwIHRoZSByZXN1bHQuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1dlYkluc3Bl
Y3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3LmpzOgorICAgICAgICAoV0kuV2ViSW5zcGVjdG9y
RXh0ZW5zaW9uVGFiQ29udGVudFZpZXcpOgorICAgICAgICAoV0kuV2ViSW5zcGVjdG9yRXh0ZW5z
aW9uVGFiQ29udGVudFZpZXcucHJvdG90eXBlLmdldCBpZnJhbWVFbGVtZW50KToKKyAgICAgICAg
KFdJLldlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3LnNob3VsZFNhdmVUYWIpOgor
ICAgICAgICAoV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVudFZpZXcucHJvdG90eXBl
LmluaXRpYWxMYXlvdXQpOiBEZWxldGVkLgorICAgICAgICBXaGlsZSB3cml0aW5nIHRoZSBBUEkg
dGVzdCwgSSBzYXcgdGhhdCB0aGUgZmlyc3QgZXZhbHVhdGlvbiBmcmVxdWVudGx5IGZhaWxlZAor
ICAgICAgICBiZWNhdXNlIHRoZSA8aWZyYW1lPiBkaWQgbm90IGV4aXN0LiBDaGFuZ2UgdGhpcyBj
bGFzcyBzbyB0aGF0IHRoZSA8aWZyYW1lPgorICAgICAgICBpcyBjcmVhdGVkIGluIHRoZSBjb25z
dHJ1Y3Rvci4gQWRkIGEgZ2V0dGVyIGZvciB0aGUgPGlmcmFtZT4gZWxlbWVudC4KKworICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvTWFpbi5odG1sOgorICAgICAgICBBZGp1c3QgdGhlIGRlZmF1bHQg
Q1NQIHBvbGljeSB0byBub3QgbWVudGlvbiBpbWctc3JjLiBUaGlzIGFsbG93cyBwb3J0cyBzdWNo
IGFzCisgICAgICAgIENvY29hIHRvIHNldCB0aGVpciBvd24gaW1nLXNyYyBDU1AgZGlyZWN0aXZl
LiBUaGVzZSBjaGFuZ2VzIGFyZSBuZWNlc3NhcnkgdG8gYWxsb3cKKyAgICAgICAgaW1hZ2VzIHRv
IGxvYWQgZnJvbSBjdXN0b20gVVJMIHNjaGVtZXMuCisKIDIwMjEtMDktMjEgIEJKIEJ1cmcgIDxi
YnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBBZGQgU1BJIHRvIHNlbGVjdCBhIHRh
YiBjcmVhdGVkIGJ5IF9XS0luc3BlY3RvckV4dGVuc2lvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBlZmIwNDNkYTJh
NzlhZDJkMTE0MGVjM2E1ZTAwODBkYjExNzI2ZjE4Li41ZTNlN2E1ZTRlZjM3ZjY3NTVkNjQ5MDcy
YjdlYWE4YjYyZWQ4Zjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDIxLTA5LTI0ICBC
SiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gYWRkIF9XS0luc3Bl
Y3RvckV4dGVuc2lvbiBTUEkgdG8gZXZhbHVhdGUgc2NyaXB0IG9uIGFuIGV4dGVuc2lvbiB0YWIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDY0Ngor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vODM0MjAzMjg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG5ldyB0ZXN0aW5nIEFQSSBmb3IgZXZhbHVh
dGluZyBzY3JpcHQgZXhwcmVzc2lvbnMgaW4gdGhlIGNvbnRleHQgb2YgYQorICAgICAgICB0YWIg
Y3JlYXRlZCBieSBfV0tJbnNwZWN0b3JFeHRlbnNpb24uIEZvciB0aGUgbW9zdCBwYXJ0LCB0aGlz
IGlzIGltcGxlbWVudGVkCisgICAgICAgIGluIHRoZSBzYW1lIHdheSBhcyB0aGUgLWV2YWx1YXRl
U2NyaXB0OiBtZXRob2QsIGJ1dCB0aGUgc2NyaXB0IGlzIGV2YWx1YXRlZAorICAgICAgICB3aXRo
aW4gdGhlIFdlYiBJbnNwZWN0b3IgZnJvbnRlbmQgaXRzZWxmIHJhdGhlciB0aGFuIGluIHRoZSBp
bnNwZWN0ZWQgcGFnZS4KKworICAgICAgICBUbyBhdm9pZCBDU1AgaXNzdWVzLCB0aGUgYWN0dWFs
IGV2YWx1YXRpb24gaXMgcGVyZm9ybWVkIG9uIHN1YmZyYW1lcyB1c2luZyBhCisgICAgICAgIG5l
dyBJbnNwZWN0b3JGcm9udGVuZEhvc3QgbWV0aG9kIHdoaWNoIHRha2VzIGFuIDxpZnJhbWU+IGFu
ZCBzY3JpcHQgc291cmNlLgorCisgICAgICAgIEFsb25nIHRoZSB3YXksIHR3ZWFrIFdlYiBJbnNw
ZWN0b3IncyBDU1AgcG9saWN5IHRvIGFsbG93IGxvYWRpbmcgaW1hZ2VzIGZyb20KKyAgICAgICAg
Y3VzdG9tIFVSTCBzY2hlbWVzIGFzIHNwZWNpZmllZCB1c2luZyBfV0tJbnNwZWN0b3JDb25maWd1
cmF0aW9uLgorCisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkIG5ldyBmaWxlcy4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmg6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uY3BwOgorICAgICAgICAoQVBJOjpJ
bnNwZWN0b3JFeHRlbnNpb246OmV2YWx1YXRlU2NyaXB0SW5FeHRlbnNpb25UYWIpOgorICAgICAg
ICBDcmliYmVkIGZyb20gZXZhbHVhdGVTY3JpcHQoKS4gQ2FsbCB0aHJvdWdoIHRvIHRoZSBzaGFy
ZWQgZXh0ZW5zaW9uIGNvbnRyb2xsZXIuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L19XS0luc3BlY3RvckV4dGVuc2lvblByaXZhdGVGb3JUZXN0aW5nLmg6IEFkZGVkLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uVGVzdGluZy5tbTog
QWRkZWQuCisgICAgICAgICgtW19XS0luc3BlY3RvckV4dGVuc2lvbiBfZXZhbHVhdGVTY3JpcHQ6
aW5FeHRlbnNpb25UYWJXaXRoSWRlbnRpZmllcjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAg
ICAgQWRkZWQuIENhbGwgdGhyb3VnaCB0byB0aGUgc2hhcmVkIGV4dGVuc2lvbiBjb250cm9sbGVy
LgorCisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5z
cGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6ZXZhbHVhdGVTY3JpcHRJbkV4
dGVuc2lvblRhYik6CisgICAgICAgIENyaWJiZWQgZnJvbSBldmFsdWF0ZVNjcmlwdCgpLiBTZW5k
IElQQyB0byB0aGUgSW5zcGVjdG9yIFdlYlByb2Nlc3MuCisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIu
bWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyOjpldmFsdWF0ZVNjcmlwdEluRXh0ZW5zaW9uVGFiKToKKyAg
ICAgICAgQ3JpYmJlZCBmcm9tIGV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uLiBDYWxsIGludG8g
dGhlIGZyb250ZW5kIEFQSQorICAgICAgICB3aGljaCB3aWxsIHBlcmZvcm0gdGhlIGFjdHVhbCBl
dmFsdWF0aW9uIG9uIHRoZSA8aWZyYW1lPiBjb250ZW50V2luZG93LgorCisgICAgICAgICogVUlQ
cm9jZXNzL0luc3BlY3Rvci9tYWMvV0tJbnNwZWN0b3JSZXNvdXJjZVVSTFNjaGVtZUhhbmRsZXIu
bW06CisgICAgICAgICgtW1dLSW5zcGVjdG9yUmVzb3VyY2VVUkxTY2hlbWVIYW5kbGVyIHdlYlZp
ZXc6c3RhcnRVUkxTY2hlbWVUYXNrOl0pOgorICAgICAgICBTcGVjaWZ5IHRoZSBsaXN0IG9mIGN1
c3RvbSBwcm90b2NvbHMgYXMgYWxsb3dhYmxlIHNvdXJjZXMgZm9yICdpbWctc3JjJy4KKyAgICAg
ICAgVGhlICdpbWctc3JjJyBkaXJlY3RpdmUgYWxzbyBpbmNsdWRlcyAnZmlsZTogYmxvYjogcmVz
b3VyY2U6JyBhcyBhbGxvd2FibGUKKyAgICAgICAgc291cmNlcywgc2luY2UgdGhpcyB3YXMgdGhl
IHByZXZpb3VzIENTUCBwb2xpY3kgZGVmaW5lZCBpbiBNYWluLmh0bWwuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvQ29jb2EvR3JvdXBBY3Rpdml0aWVzL0dyb3VwQWN0aXZpdGllc1Nlc3Npb25Ob3Rp
Zmllci5tbToKKyAgICAgICAgRml4IFVuaWZpZWRTb3VyY2VzIGZhbGxvdXQgYnkgaW5jbHVkaW5n
IGEgbWlzc2luZyBoZWFkZXIuCisKIDIwMjEtMDktMjEgIEJKIEJ1cmcgIDxiYnVyZ0BhcHBsZS5j
b20+CiAKICAgICAgICAgW0NvY29hXSBBZGQgU1BJIHRvIHNlbGVjdCBhIHRhYiBjcmVhdGVkIGJ5
IF9XS0luc3BlY3RvckV4dGVuc2lvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcAppbmRleCBhZTI4YjJmOTc3ZWZmOTRiNTM0MDE1MWUz
MjM2Nzg2NDU5YWVkNzVlLi5jY2ZlZTFmOWUyMGE2NmE5NzgzMmE1ZjIxNmQwM2I5MGJmMDgyYThi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRI
b3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRI
b3N0LmNwcApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1
ZGUgIkZvY3VzQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiSFRN
TElGcmFtZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAi
SW5zcGVjdG9yQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkluc3BlY3RvckRlYnVnZ2FibGVUeXBl
LmgiCkBAIC02OSw2ICs3MCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVz
cGFjZSBJbnNwZWN0b3I7Cit1c2luZyBWYWx1ZU9yRXhjZXB0aW9uID0gRXhwZWN0ZWQ8SlNDOjpK
U1ZhbHVlLCBFeGNlcHRpb25EZXRhaWxzPjsKIAogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQog
Y2xhc3MgRnJvbnRlbmRNZW51UHJvdmlkZXIgOiBwdWJsaWMgQ29udGV4dE1lbnVQcm92aWRlciB7
CkBAIC03MDYsNiArNzA4LDMwIEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpkaWRIaWRl
RXh0ZW5zaW9uVGFiKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uSUQsIGNvbnN0CiAgICAgCiAgICAg
bV9jbGllbnQtPmRpZEhpZGVFeHRlbnNpb25UYWIoZXh0ZW5zaW9uSUQsIGV4dGVuc2lvblRhYklE
KTsKIH0KKworRXhjZXB0aW9uT3I8SlNDOjpKU1ZhbHVlPiBJbnNwZWN0b3JGcm9udGVuZEhvc3Q6
OmV2YWx1YXRlU2NyaXB0SW5FeHRlbnNpb25UYWIoRWxlbWVudCYgZXh0ZW5zaW9uRnJhbWUsIGNv
bnN0IFN0cmluZyYgc2NyaXB0U291cmNlKQoreworICAgIGlmICghaXM8SFRNTElGcmFtZUVsZW1l
bnQ+KGV4dGVuc2lvbkZyYW1lKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRT
dGF0ZUVycm9yLCAiTXVzdCBwYXNzIGFuIDxpZnJhbWU+IGVsZW1lbnQuIl9zIH07CisKKyAgICBh
dXRvJiBleHRlbnNpb25GcmFtZUVsZW1lbnQgPSBkb3duY2FzdDxIVE1MSUZyYW1lRWxlbWVudD4o
ZXh0ZW5zaW9uRnJhbWUpOworICAgIEZyYW1lKiBjb250ZW50RnJhbWUgPSBleHRlbnNpb25GcmFt
ZUVsZW1lbnQuY29udGVudEZyYW1lKCk7CisgICAgaWYgKCFjb250ZW50RnJhbWUpCisgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIlVuYWJsZSB0byBmaW5kIGds
b2JhbCBvYmplY3QgZm9yIDxpZnJhbWU+Il9zIH07CisKKyAgICBKU0RPTUdsb2JhbE9iamVjdCog
ZnJhbWVHbG9iYWxPYmplY3QgPSBjb250ZW50RnJhbWUtPnNjcmlwdCgpLmdsb2JhbE9iamVjdCht
YWluVGhyZWFkTm9ybWFsV29ybGQoKSk7CisgICAgaWYgKCFmcmFtZUdsb2JhbE9iamVjdCkKKyAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiVW5hYmxlIHRvIGZp
bmQgZ2xvYmFsIG9iamVjdCBmb3IgPGlmcmFtZT4iX3MgfTsKKworICAgIEpTQzo6U3VzcGVuZEV4
Y2VwdGlvblNjb3BlIHNjb3BlKCZmcmFtZUdsb2JhbE9iamVjdC0+dm0oKSk7CisgICAgVmFsdWVP
ckV4Y2VwdGlvbiByZXN1bHQgPSAgY29udGVudEZyYW1lLT5zY3JpcHQoKS5ldmFsdWF0ZUluV29y
bGQoU2NyaXB0U291cmNlQ29kZShzY3JpcHRTb3VyY2UpLCBtYWluVGhyZWFkTm9ybWFsV29ybGQo
KSk7CisgICAgCisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJ
bnZhbGlkU3RhdGVFcnJvciwgcmVzdWx0LmVycm9yKCkubWVzc2FnZSB9OworCisgICAgcmV0dXJu
IEV4Y2VwdGlvbk9yPEpTQzo6SlNWYWx1ZT4oV1RGTW92ZShyZXN1bHQudmFsdWUoKSkpOworfQor
CiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQogCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaAppbmRleCA2ZDJlNTZj
N2FlOGZlZGZhNjU5MGYxNGIxYWRmODA4YTJmYTAwYmY2Li43MDM0NTU4MTFmYTkxMzE1Mjk2ZTQ1
MDIwNWZiZmM4ZDA5MjcwYmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRnJvbnRlbmRIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckZyb250ZW5kSG9zdC5oCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJDb250
ZXh0TWVudS5oIgogI2luY2x1ZGUgIkNvbnRleHRNZW51UHJvdmlkZXIuaCIKKyNpbmNsdWRlICJF
eGNlcHRpb25Pci5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtMTQxLDYgKzE0
Miw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCiAgICAgdm9p
ZCBkaWRTaG93RXh0ZW5zaW9uVGFiKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uSUQsIGNvbnN0IFN0
cmluZyYgZXh0ZW5zaW9uVGFiSUQpOwogICAgIHZvaWQgZGlkSGlkZUV4dGVuc2lvblRhYihjb25z
dCBTdHJpbmcmIGV4dGVuc2lvbklELCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvblRhYklEKTsKKyAg
ICBFeGNlcHRpb25PcjxKU0M6OkpTVmFsdWU+IGV2YWx1YXRlU2NyaXB0SW5FeHRlbnNpb25UYWIo
RWxlbWVudCYgZXh0ZW5zaW9uRnJhbWUsIGNvbnN0IFN0cmluZyYgc2NyaXB0U291cmNlKTsKICNl
bmRpZgogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckZyb250ZW5kSG9zdC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRnJvbnRlbmRIb3N0LmlkbAppbmRleCA5N2Y4MDZmMmFjMGYzMWI4OTZlNTk3MTE5NzliZGZh
ZmM3ZjhlYTI5Li5hYzZiZGQyMGNmNmE4MTZiZGMyN2RiNDQxMmJjZDAyOWFiYzUxM2YzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0Lmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0Lmlk
bApAQCAtMTAwLDYgKzEwMCw3IEBACiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gc3Vw
cG9ydHNXZWJFeHRlbnNpb25zOwogICAgIFtDb25kaXRpb25hbD1JTlNQRUNUT1JfRVhURU5TSU9O
U10gdW5kZWZpbmVkIGRpZFNob3dFeHRlbnNpb25UYWIoRE9NU3RyaW5nIGV4dGVuc2lvbklELCBE
T01TdHJpbmcgZXh0ZW5zaW9uVGFiSUQpOwogICAgIFtDb25kaXRpb25hbD1JTlNQRUNUT1JfRVhU
RU5TSU9OU10gdW5kZWZpbmVkIGRpZEhpZGVFeHRlbnNpb25UYWIoRE9NU3RyaW5nIGV4dGVuc2lv
bklELCBET01TdHJpbmcgZXh0ZW5zaW9uVGFiSUQpOworICAgIFtDb25kaXRpb25hbD1JTlNQRUNU
T1JfRVhURU5TSU9OU10gYW55IGV2YWx1YXRlU2NyaXB0SW5FeHRlbnNpb25UYWIoRWxlbWVudCBl
eHRlbnNpb25GcmFtZSwgRE9NU3RyaW5nIHNjcmlwdFNvdXJjZSk7CiB9OwogCiBkaWN0aW9uYXJ5
IENvbnRleHRNZW51SXRlbSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Db250cm9sbGVycy9XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvV2ViSW5z
cGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5qcwppbmRleCBlZGIwOWMwNGM3MGFlOTY1YjNjMTc2
NTVjYTEyMDgxNGY4YTIwNGEzLi5lZGEzOTY3ZDE4NGE0Njg2NjkxNmJhMzNkMTkxMDMzYzdkMWJm
N2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250
cm9sbGVycy9XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1dlYkluc3BlY3RvckV4dGVu
c2lvbkNvbnRyb2xsZXIuanMKQEAgLTE3MCw2ICsxNzAsMjggQEAgV0kuV2ViSW5zcGVjdG9yRXh0
ZW5zaW9uQ29udHJvbGxlciA9IGNsYXNzIFdlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIg
ZXh0ZW4KICAgICAgICAgICAgIHJldHVybiBXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb24uRXJyb3JD
b2RlLkludGVybmFsRXJyb3I7CiAgICAgICAgIH0KICAgICB9CisKKyAgICBldmFsdWF0ZVNjcmlw
dEluRXh0ZW5zaW9uVGFiKGV4dGVuc2lvblRhYklELCBzY3JpcHRTb3VyY2UpCisgICAgeworICAg
ICAgICBsZXQgdGFiQ29udGVudFZpZXcgPSB0aGlzLl9leHRlbnNpb25UYWJDb250ZW50Vmlld0Zv
ckV4dGVuc2lvblRhYklETWFwLmdldChleHRlbnNpb25UYWJJRCk7CisgICAgICAgIGlmICghdGFi
Q29udGVudFZpZXcpIHsKKyAgICAgICAgICAgIFdJLnJlcG9ydEludGVybmFsRXJyb3IoIlVuYWJs
ZSB0byBldmFsdWF0ZSB3aXRoIHVua25vd24gZXh0ZW5zaW9uVGFiSUQ6ICIgKyBleHRlbnNpb25U
YWJJRCk7CisgICAgICAgICAgICByZXR1cm4gV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uLkVycm9y
Q29kZS5JbnZhbGlkUmVxdWVzdDsKKyAgICAgICAgfQorCisgICAgICAgIGxldCBpZnJhbWUgPSB0
YWJDb250ZW50Vmlldy5pZnJhbWVFbGVtZW50OworICAgICAgICBpZiAoIShpZnJhbWUgaW5zdGFu
Y2VvZiBIVE1MSUZyYW1lRWxlbWVudCkpIHsKKyAgICAgICAgICAgIFdJLnJlcG9ydEludGVybmFs
RXJyb3IoIlVuYWJsZSB0byBldmFsdWF0ZSB3aXRob3V0IGFuIDxpZnJhbWU+IGZvciBleHRlbnNp
b25UYWJJRDogIiArIGV4dGVuc2lvblRhYklEKTsKKyAgICAgICAgICAgIHJldHVybiBXSS5XZWJJ
bnNwZWN0b3JFeHRlbnNpb24uRXJyb3JDb2RlLkludmFsaWRSZXF1ZXN0OworICAgICAgICB9CisK
KyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGxldCByZXN1bHQgPSBJbnNwZWN0b3JGcm9udGVu
ZEhvc3QuZXZhbHVhdGVTY3JpcHRJbkV4dGVuc2lvblRhYihpZnJhbWUsIHNjcmlwdFNvdXJjZSk7
CisgICAgICAgICAgICByZXR1cm4ge3Jlc3VsdH07CisgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7
CisgICAgICAgICAgICByZXR1cm4geyJlcnJvciI6IGVycm9yLm1lc3NhZ2V9OworICAgICAgICB9
CisgICAgfQogfTsKIAogV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5FdmVudCA9
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4u
aHRtbCBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAppbmRl
eCBjNDAyNWNmZjM2NzdiYzc1NmNiNzdmYTU1NTg4YjM0NTVlNzU2YzRiLi5jZmNlMThkODNhOTU4
MDA1MjgyMzcwYTU1NGRmYTZjNmM4MmEyOTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCkBAIC0yNywxMCArMjcsMTAgQEAKIDxoZWFkPgogICAg
IDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFy
c2V0PXV0Zi04Ij4KICAgICA8IS0tCi0gICAgICAgIE5vdGUgdGhhdCBzb21lIFdlYktpdCBwb3J0
cyBtYXkgc2V0IGN1c3RvbSAnZnJhbWUtc3JjJyBhbmQgJ2Nvbm5lY3Qtc3JjJyBkaXJlY3RpdmVz
IHZpYSBIVFRQIHJlc3BvbnNlIGhlYWRlci4KKyAgICAgICAgTm90ZSB0aGF0IHNvbWUgV2ViS2l0
IHBvcnRzIG1heSBzZXQgY3VzdG9tICdmcmFtZS1zcmMnLCAnaW1nLXNyYycsIGFuZCAnY29ubmVj
dC1zcmMnIGRpcmVjdGl2ZXMgdmlhIEhUVFAgcmVzcG9uc2UgaGVhZGVyLgogICAgICAgICBUaGUg
Y29tYmluZWQgQ1NQIHBvbGljeSByZXF1aXJlcyBhIHJlcXVlc3QgdG8gYmUgYWxsb3dlZCBieSBi
b3RoIGRpcmVjdGl2ZSBsaXN0cywgc28gJ2RlZmF1bHQtc3JjJyBpcyBvbWl0dGVkLgogICAgIC0t
PgotICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtU2VjdXJpdHktUG9saWN5IiBjb250ZW50
PSJpbWctc3JjICogZmlsZTogYmxvYjogcmVzb3VyY2U6OyBtZWRpYS1zcmMgKiBibG9iOjsgZm9u
dC1zcmMgKiBibG9iOjsgc3R5bGUtc3JjICdzZWxmJyAndW5zYWZlLWlubGluZSc7IHNjcmlwdC1z
cmMgJ3NlbGYnICd1bnNhZmUtaW5saW5lJyBkYXRhOjsgb2JqZWN0LXNyYyAnbm9uZSciPgorICAg
IDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtU2VjdXJpdHktUG9saWN5IiBjb250ZW50PSJtZWRp
YS1zcmMgKiBibG9iOjsgZm9udC1zcmMgKiBibG9iOjsgc3R5bGUtc3JjICdzZWxmJyAndW5zYWZl
LWlubGluZSc7IHNjcmlwdC1zcmMgJ3NlbGYnICd1bnNhZmUtaW5saW5lJyBkYXRhOjsgb2JqZWN0
LXNyYyAnbm9uZSciPgogCiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJFeHRlcm5h
bC9Db2RlTWlycm9yL2NvZGVtaXJyb3IuY3NzIj4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JG
cm9udGVuZEFQSS5qcwppbmRleCA0MjhjNTQzM2Y2YzRkY2EwODgwOTI2OGUyMDZjMTM4NmY1OGY3
YmI1Li4zYTFjMmQwNGVmOGJjNWMyNjFmNDM0NGJkNDAyN2QzMTUyMGFkNTM1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JG
cm9udGVuZEFQSS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Q
cm90b2NvbC9JbnNwZWN0b3JGcm9udGVuZEFQSS5qcwpAQCAtMjM1LDUgKzIzNSwxMyBAQCBJbnNw
ZWN0b3JGcm9udGVuZEFQSSA9IHsKICAgICBzaG93RXh0ZW5zaW9uVGFiKGV4dGVuc2lvblRhYklE
KQogICAgIHsKICAgICAgICAgcmV0dXJuIFdJLnNoYXJlZEFwcC5leHRlbnNpb25Db250cm9sbGVy
LnNob3dFeHRlbnNpb25UYWIoZXh0ZW5zaW9uVGFiSUQpOworICAgIH0sCisKKyAgICAvLyBSZXR1
cm5zIGEgc3RyaW5nIChXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb24uRXJyb3JDb2RlKSBpZiBhbiBl
cnJvciBvY2N1cnJlZCB0aGF0IHByZXZlbnRlZCBldmFsdWF0aW9uLgorICAgIC8vIFJldHVybnMg
YW4gb2JqZWN0IHdpdGggYSAncmVzdWx0JyBrZXkgYW5kIHZhbHVlIHRoYXQgaXMgdGhlIHJlc3Vs
dCBvZiB0aGUgc2NyaXB0IGV2YWx1YXRpb24uCisgICAgLy8gUmV0dXJucyBhbiBvYmplY3Qgd2l0
aCBhbiAnZXJyb3InIGtleSBhbmQgdmFsdWUgaW4gdGhlIGNhc2UgdGhhdCBhbiBleGNlcHRpb24g
d2FzIHRocm93bi4KKyAgICBldmFsdWF0ZVNjcmlwdEluRXh0ZW5zaW9uVGFiKGV4dGVuc2lvblRh
YklELCBzY3JpcHRTb3VyY2UpCisgICAgeworICAgICAgICByZXR1cm4gV0kuc2hhcmVkQXBwLmV4
dGVuc2lvbkNvbnRyb2xsZXIuZXZhbHVhdGVTY3JpcHRJbkV4dGVuc2lvblRhYihleHRlbnNpb25U
YWJJRCwgc2NyaXB0U291cmNlKTsKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29u
dGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9X
ZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50Vmlldy5qcwppbmRleCAxOTI1NTY3ZWZmM2Jk
YmNkYjIwODJkNjg0YjkzZDRiYWRmZTBiYjI4Li5hMjRhY2ZkOWI1Mjg3ZTVmYWFkYjY1NDZiYmE5
MWE2N2YyOTAyOTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9XZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50Vmlldy5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9XZWJJbnNwZWN0b3JFeHRl
bnNpb25UYWJDb250ZW50Vmlldy5qcwpAQCAtMzksNiArMzksOSBAQCBXSS5XZWJJbnNwZWN0b3JF
eHRlbnNpb25UYWJDb250ZW50VmlldyA9IGNsYXNzIFdlYkluc3BlY3RvckV4dGVuc2lvblRhYkNv
bnRlbnRWaQogICAgICAgICB0aGlzLl9leHRlbnNpb25UYWJJRCA9IGV4dGVuc2lvblRhYklEOwog
ICAgICAgICB0aGlzLl90YWJJbmZvID0gdGFiSW5mbzsKICAgICAgICAgdGhpcy5fc291cmNlVVJM
ID0gc291cmNlVVJMOworCisgICAgICAgIHRoaXMuX2lmcmFtZUVsZW1lbnQgPSB0aGlzLmVsZW1l
bnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIikpOworICAgICAg
ICB0aGlzLl9pZnJhbWVFbGVtZW50LnNyYyA9IHRoaXMuX3NvdXJjZVVSTDsKICAgICB9CiAKICAg
ICAvLyBQdWJsaWMKQEAgLTU1LDYgKzU4LDExIEBAIFdJLldlYkluc3BlY3RvckV4dGVuc2lvblRh
YkNvbnRlbnRWaWV3ID0gY2xhc3MgV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVudFZpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAorICAgIGdldCBpZnJhbWVFbGVtZW50KCkKKyAg
ICB7CisgICAgICAgIHJldHVybiB0aGlzLl9pZnJhbWVFbGVtZW50OworICAgIH0KKwogICAgIGF0
dGFjaGVkKCkKICAgICB7CiAgICAgICAgIHN1cGVyLmF0dGFjaGVkKCk7CkBAIC03NywxNiArODUs
NiBAQCBXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50VmlldyA9IGNsYXNzIFdlYklu
c3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaQogICAgIH0KIAogICAgIHN0YXRpYyBzaG91bGRT
YXZlVGFiKCkgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIC8vIFByb3RlY3RlZAotCi0gICAgaW5p
dGlhbExheW91dCgpCi0gICAgewotICAgICAgICBzdXBlci5pbml0aWFsTGF5b3V0KCk7Ci0KLSAg
ICAgICAgbGV0IGlmcmFtZUVsZW1lbnQgPSB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIikpOwotICAgICAgICBpZnJhbWVFbGVtZW50LnNyYyA9
IHRoaXMuX3NvdXJjZVVSTDsKLSAgICB9CiB9OwogCiBXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25U
YWJDb250ZW50Vmlldy5UeXBlID0gIndlYi1pbnNwZWN0b3ItZXh0ZW5zaW9uIjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNl
c0NvY29hLnR4dAppbmRleCAxMWU3Mjk2ODRlNGEyYWRmMGI1Y2I4OTNhZDY3OTFkOTAwNTgyNjA1
Li41ZTZiNTJjMTIxMTQ2YzZkNTNhY2U2NjVkNjVjMjU2ZmRlNWU5NTkzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2Vz
Q29jb2EudHh0CkBAIC0yODgsNiArMjg4LDcgQEAgVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNw
ZWN0b3JDb25maWd1cmF0aW9uLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvclRl
c3RpbmcubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRGVidWdnYWJsZUluZm8u
bW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLm1tCitVSVByb2Nl
c3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvblRlc3RpbmcubW0KIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLSW5zcGVjdG9yV2luZG93Lm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0lu
dGVybmFsRGVidWdGZWF0dXJlLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0xpbmtJY29uUGFy
YW1ldGVycy5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUlu
c3BlY3RvckV4dGVuc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5z
cGVjdG9yRXh0ZW5zaW9uLmNwcAppbmRleCA4NjI2NzIwODhlYjI5NzJmNmQ1NWUyMzZjZTdmMzA5
YzcyZDVkMTc1Li44NzFjMjczZWFmMTFkZWI5MWI5ZDAyYmY0NTBmMGQxMGViYzgzNzQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5z
aW9uLmNwcApAQCAtODEsNiArODEsMTggQEAgdm9pZCBJbnNwZWN0b3JFeHRlbnNpb246OnJlbG9h
ZElnbm9yaW5nQ2FjaGUoY29uc3Qgc3RkOjpvcHRpb25hbDxib29sPiYgaWdub3JlQ2EKICAgICBt
X2V4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS0+cmVsb2FkRm9yRXh0ZW5zaW9uKG1faWRlbnRpZmll
ciwgaWdub3JlQ2FjaGUsIHVzZXJBZ2VudCwgaW5qZWN0ZWRTY3JpcHQsIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKIH0KIAorLy8gRm9yIHRlc3RpbmcuCisKK3ZvaWQgSW5zcGVjdG9yRXh0
ZW5zaW9uOjpldmFsdWF0ZVNjcmlwdEluRXh0ZW5zaW9uVGFiKGNvbnN0IEluc3BlY3Rvcjo6RXh0
ZW5zaW9uVGFiSUQmIGV4dGVuc2lvblRhYklELCBjb25zdCBXVEY6OlN0cmluZyYgc2NyaXB0U291
cmNlLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FdmFs
dWF0aW9uUmVzdWx0KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoIW1fZXh0ZW5z
aW9uQ29udHJvbGxlclByb3h5KSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4
cGVjdGVkKEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0cm95ZWQpKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fZXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LT5l
dmFsdWF0ZVNjcmlwdEluRXh0ZW5zaW9uVGFiKGV4dGVuc2lvblRhYklELCBzY3JpcHRTb3VyY2Us
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgQVBJCiAK
ICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmgKaW5kZXggNWVlMDk2
ZGMyMWY2MjAyNjdjN2YwNDg5NjAzZjEyOWFkNzY1OGZlNi4uYmMzZjg4MDE2MzE3ZDBhM2I1OWMy
NmI1ZTBmMjU2OWFlMWEwMDc5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSUluc3BlY3RvckV4dGVuc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uaApAQCAtNDksNyArNDksMTAgQEAgcHVibGljOgog
CiAgICAgdm9pZCBjcmVhdGVUYWIoY29uc3QgV1RGOjpTdHJpbmcmIHRhYk5hbWUsIGNvbnN0IFdU
Rjo6VVJMJiB0YWJJY29uVVJMLCBjb25zdCBXVEY6OlVSTCYgc291cmNlVVJMLCBXVEY6OkNvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8SW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJRCwgSW5z
cGVjdG9yOjpFeHRlbnNpb25FcnJvcj4pPiYmKTsKICAgICB2b2lkIGV2YWx1YXRlU2NyaXB0KGNv
bnN0IFdURjo6U3RyaW5nJiBzY3JpcHRTb3VyY2UsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V1RGOjpV
Ukw+JiBmcmFtZVVSTCwgY29uc3Qgc3RkOjpvcHRpb25hbDxXVEY6OlVSTD4mIGNvbnRleHRTZWN1
cml0eU9yaWdpbiwgY29uc3Qgc3RkOjpvcHRpb25hbDxib29sPiYgdXNlQ29udGVudFNjcmlwdENv
bnRleHQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJbnNwZWN0b3I6OkV4dGVuc2lvbkV2
YWx1YXRpb25SZXN1bHQpPiYmKTsKLSAgICB2b2lkIHJlbG9hZElnbm9yaW5nQ2FjaGUoY29uc3Qg
c3RkOjpvcHRpb25hbDxib29sPiYgaWdub3JlQ2FjaGUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V1RG
OjpTdHJpbmc+JiB1c2VyQWdlbnQsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V1RGOjpTdHJpbmc+JiBp
bmplY3RlZFNjcmlwdCwgIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJbnNwZWN0b3I6OkV4
dGVuc2lvbkV2YWx1YXRpb25SZXN1bHQpPiYmKTsKKyAgICB2b2lkIHJlbG9hZElnbm9yaW5nQ2Fj
aGUoY29uc3Qgc3RkOjpvcHRpb25hbDxib29sPiYgaWdub3JlQ2FjaGUsIGNvbnN0IHN0ZDo6b3B0
aW9uYWw8V1RGOjpTdHJpbmc+JiB1c2VyQWdlbnQsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V1RGOjpT
dHJpbmc+JiBpbmplY3RlZFNjcmlwdCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEluc3Bl
Y3Rvcjo6RXh0ZW5zaW9uRXZhbHVhdGlvblJlc3VsdCk+JiYpOworCisgICAgLy8gRm9yIHRlc3Rp
bmcuCisgICAgdm9pZCBldmFsdWF0ZVNjcmlwdEluRXh0ZW5zaW9uVGFiKGNvbnN0IEluc3BlY3Rv
cjo6RXh0ZW5zaW9uVGFiSUQmLCBjb25zdCBXVEY6OlN0cmluZyYgc2NyaXB0U291cmNlLCBXVEY6
OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FdmFsdWF0aW9uUmVz
dWx0KT4mJik7CiAKICAgICBJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQqIGNsaWVudCgpIGNvbnN0
IHsgcmV0dXJuIG1fY2xpZW50LmdldCgpOyB9CiAgICAgdm9pZCBzZXRDbGllbnQoVW5pcXVlUmVm
PEluc3BlY3RvckV4dGVuc2lvbkNsaWVudD4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uUHJpdmF0ZUZvclRlc3Rp
bmcuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRl
bnNpb25Qcml2YXRlRm9yVGVzdGluZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhmYzdmZjczYzMyY2Q5Y2MyMDMx
ZmQxN2YyYjdhOTY1NDJmZDFiMGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uUHJpdmF0ZUZvclRlc3Rpbmcu
aApAQCAtMCwwICsxLDM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiX1dLSW5zcGVjdG9yRXh0
ZW5zaW9uLmgiCisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKK0BpbnRlcmZhY2UgX1dLSW5z
cGVjdG9yRXh0ZW5zaW9uIChXS1Rlc3RpbmcpCistICh2b2lkKV9ldmFsdWF0ZVNjcmlwdDooTlNT
dHJpbmcgKilzY3JpcHRTb3VyY2UgaW5FeHRlbnNpb25UYWJXaXRoSWRlbnRpZmllcjooTlNTdHJp
bmcgKilleHRlbnNpb25UYWJJZGVudGlmaWVyIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5T
RXJyb3IgKiBfTnVsbGFibGUsIE5TRGljdGlvbmFyeSAqIF9OdWxsYWJsZSByZXN1bHQpKWNvbXBs
ZXRpb25IYW5kbGVyOworQGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb25U
ZXN0aW5nLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rv
ckV4dGVuc2lvblRlc3RpbmcubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWE3NTY3ZmJjOGI2MzAxZDJkYTZlNDI2
YjcyMDYyOWE0MTYyYzMwMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb25UZXN0aW5nLm1tCkBAIC0wLDAgKzEs
NjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2lmIEVOQUJMRShJTlNQ
RUNUT1JfRVhURU5TSU9OUykKKworI2ltcG9ydCAiQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgi
CisjaW1wb3J0ICJJbnNwZWN0b3JFeHRlbnNpb25UeXBlcy5oIgorI2ltcG9ydCAiV0tFcnJvci5o
IgorI2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKKyNpbXBvcnQgIl9XS0luc3BlY3RvckV4
dGVuc2lvbkludGVybmFsLmgiCisjaW1wb3J0ICJfV0tJbnNwZWN0b3JFeHRlbnNpb25Qcml2YXRl
Rm9yVGVzdGluZy5oIgorI2ltcG9ydCA8V2ViQ29yZS9FeGNlcHRpb25EZXRhaWxzLmg+CisjaW1w
b3J0IDxXZWJDb3JlL1dlYkNvcmVPYmpDRXh0cmFzLmg+CisjaW1wb3J0IDx3dGYvQmxvY2tQdHIu
aD4KKworLy8gVGhpcyBmaWxlIGV4aXN0cyB0byBjZW50cmFsaXplIGFsbCBmcmFnaWxlIGNvZGUg
dGhhdCBpcyB1c2VkIGJ5IF9XS0luc3BlY3RvckV4dGVuc2lvbiBBUEkgdGVzdHMuCisKK0BpbXBs
ZW1lbnRhdGlvbiBfV0tJbnNwZWN0b3JFeHRlbnNpb24gKFdLVGVzdGluZykKKworLSAodm9pZClf
ZXZhbHVhdGVTY3JpcHQ6KE5TU3RyaW5nICopc2NyaXB0U291cmNlIGluRXh0ZW5zaW9uVGFiV2l0
aElkZW50aWZpZXI6KE5TU3RyaW5nICopZXh0ZW5zaW9uVGFiSWRlbnRpZmllciBjb21wbGV0aW9u
SGFuZGxlcjoodm9pZCheKShOU0Vycm9yICosIE5TRGljdGlvbmFyeSAqKSljb21wbGV0aW9uSGFu
ZGxlcgoreworICAgIF9leHRlbnNpb24tPmV2YWx1YXRlU2NyaXB0SW5FeHRlbnNpb25UYWIoZXh0
ZW5zaW9uVGFiSWRlbnRpZmllciwgc2NyaXB0U291cmNlLCBbcHJvdGVjdGVkU2VsZiA9IHJldGFp
blB0cihzZWxmKSwgY2FwdHVyZWRCbG9jayA9IG1ha2VCbG9ja1B0cihXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSldIChJbnNwZWN0b3I6OkV4dGVuc2lvbkV2YWx1YXRpb25SZXN1bHQmJiByZXN1
bHQpIG11dGFibGUgeworICAgICAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICAgICAgY2FwdHVy
ZWRCbG9jayhbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJy
b3JVbmtub3duIHVzZXJJbmZvOkB7IE5TTG9jYWxpemVkRmFpbHVyZVJlYXNvbkVycm9yS2V5OiBJ
bnNwZWN0b3I6OmV4dGVuc2lvbkVycm9yVG9TdHJpbmcocmVzdWx0LmVycm9yKCkpfV0sIG5pbCk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGF1dG8g
dmFsdWVPckV4Y2VwdGlvbiA9IHJlc3VsdC52YWx1ZSgpOworICAgICAgICBpZiAoIXZhbHVlT3JF
eGNlcHRpb24pIHsKKyAgICAgICAgICAgIGNhcHR1cmVkQmxvY2sobnNFcnJvckZyb21FeGNlcHRp
b25EZXRhaWxzKHZhbHVlT3JFeGNlcHRpb24uZXJyb3IoKSkuZ2V0KCksIG5pbCk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZCBib2R5ID0gQVBJOjpTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKHZhbHVlT3JFeGNlcHRpb24udmFsdWUoKS0+aW50
ZXJuYWxSZXByZXNlbnRhdGlvbigpLCAwKTsKKyAgICAgICAgY2FwdHVyZWRCbG9jayhuaWwsIGJv
ZHkpOworICAgIH0pOworfQorCitAZW5kCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0VY
VEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Hcm91
cEFjdGl2aXRpZXMvR3JvdXBBY3Rpdml0aWVzU2Vzc2lvbk5vdGlmaWVyLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvR3JvdXBBY3Rpdml0aWVzL0dyb3VwQWN0aXZpdGllc1Nlc3Np
b25Ob3RpZmllci5tbQppbmRleCA1NTI3ZWI4NTU4N2ZmYjQxOWQ1MmY2M2Y1ODAxNGMwMjY0Yzc0
NmMzLi42OTc2YmJiNDY4MjhhM2NjOTJhMTU1ZTViOWNkZDljNjMwMjEyOTQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Hcm91cEFjdGl2aXRpZXMvR3JvdXBBY3Rp
dml0aWVzU2Vzc2lvbk5vdGlmaWVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL0dyb3VwQWN0aXZpdGllcy9Hcm91cEFjdGl2aXRpZXNTZXNzaW9uTm90aWZpZXIubW0KQEAg
LTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OX0NPT1JESU5BVE9SKSAm
JiBIQVZFKEdST1VQX0FDVElWSVRJRVMpCiAKKyNpbXBvcnQgIkdyb3VwQWN0aXZpdGllc0Nvb3Jk
aW5hdG9yLmgiCiAjaW1wb3J0ICJXS0dyb3VwU2Vzc2lvbi5oIgogI2ltcG9ydCAiV2ViUGFnZVBy
b3h5LmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9X
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJv
eHkuY3BwCmluZGV4IDc0MmFhMjdiMWVhYzM1OGFmMDViNDc2MTI0NGVjMjFmZDMwMGEzMmQuLmY4
YTZlYjI0Mzk3N2M5MWFmN2U3OTllMjQxYTBkYjQwNWExODczOGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmNwcApAQCAtMTk5LDYgKzE5OSwz
MSBAQCB2b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5OjpzaG93RXh0
ZW5zaW9uVGFiKGNvbnN0IEluc3BlY3Rvcjo6RQogICAgIH0pOwogfQogCisvLyBBUEkgZm9yIHRl
c3RpbmcuCisKK3ZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OmV2
YWx1YXRlU2NyaXB0SW5FeHRlbnNpb25UYWIoY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJ
RCYgZXh0ZW5zaW9uVGFiSUQsIGNvbnN0IFN0cmluZyYgc2NyaXB0U291cmNlLCBXVEY6OkNvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0KT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICB3aGVuRnJvbnRlbmRIYXNMb2FkZWQoW3dlYWtU
aGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGV4dGVuc2lvblRhYklELCBzY3JpcHRTb3VyY2UsIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUg
eworICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICF3ZWFrVGhpcy0+bV9pbnNwZWN0b3JQYWdlKSB7
CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3I6
OkV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkKSk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKworICAgICAgICB3ZWFrVGhpcy0+bV9pbnNwZWN0b3JQYWdlLT5zZW5kV2l0
aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6
RXZhbHVhdGVTY3JpcHRJbkV4dGVuc2lvblRhYiB7ZXh0ZW5zaW9uVGFiSUQsIHNjcmlwdFNvdXJj
ZX0sIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4mIGRldGFpbHMsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8
SW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4gZXJyb3IpIG11dGFibGUgeworICAgICAgICAgICAg
aWYgKGVycm9yKSB7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhw
ZWN0ZWQoZXJyb3IudmFsdWUoKSkpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgaWYgKGRldGFpbHMpIHsKKyAgICAgICAgICAgICAgICBFeHBl
Y3RlZDxSZWZQdHI8QVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBXZWJDb3JlOjpFeGNlcHRp
b25EZXRhaWxzPiByZXR1cm5lZFZhbHVlID0gbWFrZVVuZXhwZWN0ZWQoZGV0YWlscy52YWx1ZSgp
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyByZXR1cm5lZFZh
bHVlIH0pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7
IHsgQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmFkb3B0KFZlY3RvciB7IGRhdGFSZWZlcmVu
Y2UuZGF0YSgpLCBkYXRhUmVmZXJlbmNlLnNpemUoKSB9KS5wdHIoKSB9IH0pOworICAgICAgICB9
KTsKKyAgICB9KTsKK30KIAogLy8gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJv
eHkgSVBDIG1lc3NhZ2VzLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9J
bnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXJQcm94eS5oCmluZGV4IGNhMjNlYzdhZmIyZTFlYmNmOTg1NzRmZTc5ZTk0MGQ4NDZhMzMx
N2EuLjM1OGJhNDQ3ZTAxZWE5YWQxNWI4N2JmZDVhMDJmZTc4NDYwNjQ3YjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rv
ci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5oCkBAIC02Miw2ICs2Miw5
IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbG9hZEZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3I6
OkV4dGVuc2lvbklEJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxib29sPiYgaWdub3JlQ2FjaGUsIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiYgdXNlckFnZW50LCBjb25zdCBzdGQ6Om9wdGlvbmFs
PFN0cmluZz4mIGluamVjdGVkU2NyaXB0LCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoSW5z
cGVjdG9yOjpFeHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0KT4mJik7CiAgICAgdm9pZCBzaG93RXh0
ZW5zaW9uVGFiKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uVGFiSUQmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKEV4cGVjdGVkPGJvb2wsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+KT4mJik7
CiAKKyAgICAvLyBBUEkgZm9yIHRlc3RpbmcuCisgICAgdm9pZCBldmFsdWF0ZVNjcmlwdEluRXh0
ZW5zaW9uVGFiKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uVGFiSUQmLCBjb25zdCBTdHJpbmcm
IHNjcmlwdFNvdXJjZSwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEluc3BlY3Rvcjo6RXh0
ZW5zaW9uRXZhbHVhdGlvblJlc3VsdCk+JiYpOworCiAgICAgLy8gV2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyUHJveHkgSVBDIG1lc3NhZ2VzLgogICAgIHZvaWQgZGlkU2hvd0V4dGVu
c2lvblRhYihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiwgY29uc3QgSW5zcGVjdG9yOjpF
eHRlbnNpb25UYWJJRCYpOwogICAgIHZvaWQgZGlkSGlkZUV4dGVuc2lvblRhYihjb25zdCBJbnNw
ZWN0b3I6OkV4dGVuc2lvbklEJiwgY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJRCYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XS0luc3Bl
Y3RvclJlc291cmNlVVJMU2NoZW1lSGFuZGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci9tYWMvV0tJbnNwZWN0b3JSZXNvdXJjZVVSTFNjaGVtZUhhbmRsZXIubW0KaW5k
ZXggYWNlZDdjMDM3OWFmYWUzMzViOTk5ZjVjMjA4MmM5NTNjZWM5NDgwMy4uYjQzNTMwOTExMWY0
YTc4ZDcwN2ExZWQ1Yzk5YmY4MzkwNzM2OGI2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XS0luc3BlY3RvclJlc291cmNlVVJMU2NoZW1lSGFuZGxl
ci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dLSW5zcGVj
dG9yUmVzb3VyY2VVUkxTY2hlbWVIYW5kbGVyLm1tCkBAIC0xMjIsNyArMTIyLDggQEAgLSAodm9p
ZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHN0YXJ0VVJMU2NoZW1lVGFzazooaWQgPFdL
VVJMU2NoZW1lVGFzaz4pdXIKIAogICAgICAgICAvLyBBbGxvdyBmZXRjaGVzIGZvciByZXNvdXJj
ZXMgdGhhdCB1c2UgYSByZWdpc3RlcmVkIGN1c3RvbSBVUkwgc2NoZW1lLgogICAgICAgICBpZiAo
X2FsbG93ZWRVUkxTY2hlbWVzRm9yQ1NQICYmIFtzZWxmLm1haW5SZXNvdXJjZVVSTHNGb3JDU1Ag
Y29udGFpbnNPYmplY3Q6cmVxdWVzdFVSTF0pIHsKLSAgICAgICAgICAgIE5TU3RyaW5nICpzdHJp
bmdGb3JDU1BQb2xpY3kgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImNvbm5lY3Qtc3Jj
ICogJUA6IiwgW19hbGxvd2VkVVJMU2NoZW1lc0ZvckNTUC5nZXQoKS5hbGxPYmplY3RzIGNvbXBv
bmVudHNKb2luZWRCeVN0cmluZzpAIjogIl1dOworICAgICAgICAgICAgTlNTdHJpbmcgKmxpc3RP
ZkN1c3RvbVByb3RvY29scyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUA6IiwgW19h
bGxvd2VkVVJMU2NoZW1lc0ZvckNTUC5nZXQoKS5hbGxPYmplY3RzIGNvbXBvbmVudHNKb2luZWRC
eVN0cmluZzpAIjogIl1dOworICAgICAgICAgICAgTlNTdHJpbmcgKnN0cmluZ0ZvckNTUFBvbGlj
eSA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiY29ubmVjdC1zcmMgKiAlQDsgaW1nLXNy
YyAqIGZpbGU6IGJsb2I6IHJlc291cmNlOiAlQCIsIGxpc3RPZkN1c3RvbVByb3RvY29scywgbGlz
dE9mQ3VzdG9tUHJvdG9jb2xzXTsKICAgICAgICAgICAgIFtoZWFkZXJGaWVsZHMgc2V0T2JqZWN0
OnN0cmluZ0ZvckNTUFBvbGljeSBmb3JLZXk6QCJDb250ZW50LVNlY3VyaXR5LVBvbGljeSJdOwog
ICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IGEyZWNhOGI3ZGFmOWU2YzE0NjRjNTAxNGI1MWYwN2M5NGU5NzY1ZTguLjhm
NzdlMDQwMjdlMjgxYjMyNDQ1MjJiMmEwNzYzZmNiODNhOGRiOTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTU3Myw2ICsxNTczLDgg
QEAKIAkJOTlCMTY3NjQyNTJCQkU2MjAwNzMxNDBFIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9u
Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTlCMTY3NjEyNTJCQkU2MTAwNzMxNDBFIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlci5oICovOyB9OwogCQk5OUMzQUUyRDFEQURBNkFEMDBBRjVDMTYgLyogV2ViQXV0b21h
dGlvblNlc3Npb25NYWNyb3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDk5QzNBRTJDMURBREE2QTcwMEFGNUMxNiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lv
bk1hY3Jvcy5oICovOyB9OwogCQk5OUM2MDdFQjI2RkE5RDQ5MDBBMDk1M0YgLyogX1dLSW5zcGVj
dG9ySUJBY3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5OUM2MDdFQTI2RkE5RDQ4MDBBMDk1M0YgLyogX1dLSW5zcGVjdG9ySUJBY3Rpb25zLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTlDNjA3
RjAyNkZCOTFFODAwQTA5NTNGIC8qIF9XS0luc3BlY3RvckV4dGVuc2lvblByaXZhdGVGb3JUZXN0
aW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OUM2
MDdFRTI2RkI5MUU4MDBBMDk1M0YgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uUHJpdmF0ZUZvclRl
c3RpbmcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQk5OUM2MDdGMTI2RkI5MUU5MDBBMDk1M0YgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uVGVzdGlu
Zy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5QzYw
N0VGMjZGQjkxRTgwMEEwOTUzRiAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb25UZXN0aW5nLm1tICov
OyB9OwogCQk5OUM4MUQ1QTFDMjBFN0UyMDA1QzRDODIgLyogQXV0b21hdGlvbkNsaWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlDODFENTUxQzIw
REZCRTAwNUM0QzgyIC8qIEF1dG9tYXRpb25DbGllbnQuaCAqLzsgfTsKIAkJOTlDODFENUQxQzIx
RjM4QjAwNUM0QzgyIC8qIEFQSUF1dG9tYXRpb25DbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5QzgxRDVCMUMyMEU4MTcwMDVDNEM4MiAvKiBB
UElBdXRvbWF0aW9uQ2xpZW50LmggKi87IH07CiAJCTk5RTcxNEM1MUMxMjRBMDQwMDY2NUIzQSAv
KiBfV0tBdXRvbWF0aW9uRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDk5RTcxNEMxMUMxMjQ5RTYwMDY2NUIzQSAvKiBfV0tBdXRvbWF0aW9u
RGVsZWdhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtNTEyMyw2ICs1MTI1LDggQEAKIAkJOTlDM0FFMjYxREFEOTQ4NTAwQUY1QzE2IC8qIFdl
YkF1dG9tYXRpb25TZXNzaW9uQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBXZWJBdXRvbWF0aW9uU2Vzc2lvbkNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5OUMzQUUyQzFEQURBNkE3MDBBRjVDMTYgLyogV2ViQXV0b21hdGlvblNl
c3Npb25NYWNyb3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQXV0b21h
dGlvblNlc3Npb25NYWNyb3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTlDNjA3
RUEyNkZBOUQ0ODAwQTA5NTNGIC8qIF9XS0luc3BlY3RvcklCQWN0aW9ucy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tJbnNwZWN0b3JJQkFjdGlvbnMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTlDNjA3RUUyNkZCOTFFODAwQTA5NTNGIC8qIF9XS0luc3Bl
Y3RvckV4dGVuc2lvblByaXZhdGVGb3JUZXN0aW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IF9XS0luc3BlY3RvckV4dGVuc2lvblByaXZhdGVGb3JUZXN0aW5nLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5QzYwN0VGMjZGQjkxRTgwMEEwOTUzRiAvKiBfV0tJ
bnNwZWN0b3JFeHRlbnNpb25UZXN0aW5nLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gX1dLSW5zcGVjdG9yRXh0ZW5zaW9uVGVzdGluZy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTlDODFENTUxQzIwREZCRTAwNUM0QzgyIC8qIEF1dG9tYXRpb25D
bGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXV0b21hdGlvbkNsaWVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OUM4MUQ1NjFDMjBERkJFMDA1QzRD
ODIgLyogQXV0b21hdGlvbkNsaWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IEF1dG9tYXRpb25DbGllbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTk5QzgxRDVCMUMyMEU4MTcwMDVDNEM4MiAvKiBBUElBdXRvbWF0aW9uQ2xpZW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUF1dG9tYXRpb25DbGllbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTgyMDksNiArODIxMyw4IEBACiAJCQkJOTk2QjJC
QTAyNUUyNTkxMTAwNzE5Mzc5IC8qIF9XS0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLmggKi8s
CiAJCQkJOTk3OTY1QTIyNTMxMjhDNzAwQjMxQUUzIC8qIF9XS0luc3BlY3RvckV4dGVuc2lvbkhv
c3QuaCAqLywKIAkJCQk5OUIxNjc1NTI1MkJCN0UxMDA3MzE0MEUgLyogX1dLSW5zcGVjdG9yRXh0
ZW5zaW9uSW50ZXJuYWwuaCAqLywKKwkJCQk5OUM2MDdFRTI2RkI5MUU4MDBBMDk1M0YgLyogX1dL
SW5zcGVjdG9yRXh0ZW5zaW9uUHJpdmF0ZUZvclRlc3RpbmcuaCAqLywKKwkJCQk5OUM2MDdFRjI2
RkI5MUU4MDBBMDk1M0YgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uVGVzdGluZy5tbSAqLywKIAkJ
CQk5OUM2MDdFQTI2RkE5RDQ4MDBBMDk1M0YgLyogX1dLSW5zcGVjdG9ySUJBY3Rpb25zLmggKi8s
CiAJCQkJNUNBRkRFNDQyMTMwODQzNjAwQjFGN0UxIC8qIF9XS0luc3BlY3RvckludGVybmFsLmgg
Ki8sCiAJCQkJOTk3OUNBNTcyMzdGNDlGMDAwMzlFQzA1IC8qIF9XS0luc3BlY3RvclByaXZhdGUu
aCAqLywKQEAgLTExOTk5LDYgKzEyMDA1LDcgQEAKIAkJCQk5OTZCMkJBMTI1RTI1OTExMDA3MTkz
NzkgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTk5Nzk2NUEzMjUzMTI4QzcwMEIzMUFFMyAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5OUIxNjc1ODI1MkJCN0UxMDA3MzE0MEUgLyogX1dLSW5zcGVj
dG9yRXh0ZW5zaW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAorCQkJCTk5QzYwN0YwMjZGQjkx
RTgwMEEwOTUzRiAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb25Qcml2YXRlRm9yVGVzdGluZy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTlDNjA3RUIyNkZBOUQ0OTAwQTA5NTNGIC8qIF9XS0luc3BlY3Rv
cklCQWN0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNBRkRFNDcyMTMwODQ2QTAwQjFGN0Ux
IC8qIF9XS0luc3BlY3RvckludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OTc5Q0E1ODIz
N0Y0OUYxMDAzOUVDMDUgLyogX1dLSW5zcGVjdG9yUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCkBA
IC0xNDM5Nyw2ICsxNDQwNCw3IEBACiAJCQkJNTc5MEE2ODEyNTY3QTFBQzAwNzdDNUE3IC8qIF9X
S0F1dGhlbnRpY2F0b3JSZXNwb25zZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTU3OTBBNjY3MjU2
NzlDRUEwMDc3QzVBNyAvKiBfV0tBdXRoZW50aWNhdG9yU2VsZWN0aW9uQ3JpdGVyaWEubW0gaW4g
U291cmNlcyAqLywKIAkJCQk1Q0JENTk1QzIyODBFREY0MDAyQjIyQUEgLyogX1dLQ3VzdG9tSGVh
ZGVyRmllbGRzLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJOTlDNjA3RjEyNkZCOTFFOTAwQTA5NTNG
IC8qIF9XS0luc3BlY3RvckV4dGVuc2lvblRlc3RpbmcubW0gaW4gU291cmNlcyAqLywKIAkJCQk1
NzkwQTY3NTI1Njc5Rjc0MDA3N0M1QTcgLyogX1dLUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9u
T3B0aW9ucy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTU3OTBBNjZEMjU2NzlFQjcwMDc3QzVBNyAv
KiBfV0tQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvci5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTU3OTBBNjU3MjU2Nzk5REEwMDc3QzVBNyAvKiBfV0tQdWJsaWNLZXlDcmVkZW50aWFsRW50aXR5
Lm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJv
bGxlci5jcHAKaW5kZXggOTA5MGIxNmE3OTU4ZTRiYzgxMmUwMmQwMmNkOTQ1MDkzY2Q1ZjUyNC4u
MjQ5MzkyNmQwOTY1MWE5MjNmZDk0YTAzOGNjYWM1YTUwYWFhOGM0YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNv
bnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2Vi
SW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmNwcApAQCAtMzU5LDYgKzM1OSw3NCBAQCB2
b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6c2hvd0V4dGVuc2lvblRhYihj
b25zdCBJbnNwZWN0b3I6OkV4dGVucwogICAgIH0pOwogfQogCisvLyBXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXIgSVBDIG1lc3NhZ2VzIGZvciB0ZXN0aW5nLgorCit2b2lkIFdlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6ZXZhbHVhdGVTY3JpcHRJbkV4dGVuc2lvblRh
Yihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvblRhYklEJiBleHRlbnNpb25UYWJJRCwgY29uc3Qg
U3RyaW5nJiBzY3JpcHRTb3VyY2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRh
aWxzPiYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4mKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoIW1fZnJvbnRlbmRDbGllbnQpIHsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBzdGQ6Om51bGxvcHQsIEluc3BlY3Rvcjo6RXh0
ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIFZlY3RvcjxSZWY8SlNPTjo6VmFsdWU+PiBhcmd1bWVudHMgeworICAgICAgICBKU09OOjpW
YWx1ZTo6Y3JlYXRlKGV4dGVuc2lvblRhYklEKSwKKyAgICAgICAgSlNPTjo6VmFsdWU6OmNyZWF0
ZShzY3JpcHRTb3VyY2UpLAorICAgIH07CisKKyAgICBtX2Zyb250ZW5kQ2xpZW50LT5mcm9udGVu
ZEFQSURpc3BhdGNoZXIoKS5kaXNwYXRjaENvbW1hbmRXaXRoUmVzdWx0QXN5bmMoImV2YWx1YXRl
U2NyaXB0SW5FeHRlbnNpb25UYWIiX3MsIFdURk1vdmUoYXJndW1lbnRzKSwgW3dlYWtUaGlzID0g
bWFrZVdlYWtQdHIodGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildKEluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6RXZhbHVhdGlvblJlc3Vs
dCYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpIHsKKyAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgc3RkOjpudWxsb3B0LCBJbnNwZWN0b3I6OkV4dGVu
c2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCisgICAgICAgIGF1dG8qIGZyb250ZW5kR2xvYmFsT2JqZWN0ID0gd2Vha1RoaXMtPm1f
ZnJvbnRlbmRDbGllbnQtPmZyb250ZW5kQVBJRGlzcGF0Y2hlcigpLmZyb250ZW5kR2xvYmFsT2Jq
ZWN0KCk7CisgICAgICAgIGlmICghZnJvbnRlbmRHbG9iYWxPYmplY3QpIHsKKyAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgc3RkOjpudWxsb3B0LCBJbnNwZWN0b3I6OkV4dGVuc2lv
bkVycm9yOjpDb250ZXh0RGVzdHJveWVkKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorCisgICAgICAgIGlmIChhdXRvIHBhcnNlZEVycm9yID0gd2Vha1RoaXMtPnBhcnNlRXh0ZW5z
aW9uRXJyb3JGcm9tRXZhbHVhdGlvblJlc3VsdChyZXN1bHQpKSB7CisgICAgICAgICAgICBpZiAo
IXJlc3VsdC52YWx1ZSgpLmhhc192YWx1ZSgpKSB7CisgICAgICAgICAgICAgICAgYXV0byBleGNl
cHRpb25EZXRhaWxzID0gcmVzdWx0LnZhbHVlKCkuZXJyb3IoKTsKKyAgICAgICAgICAgICAgICBM
T0coSW5zcGVjdG9yLCAiSW50ZXJuYWwgZXJyb3IgZW5jb3VudGVyZWQgd2hpbGUgZXZhbHVhdGlu
ZyB1cG9uIHRoZSBmcm9udGVuZDogYXQgJXM6JWQ6JWQ6ICVzIiwgZXhjZXB0aW9uRGV0YWlscy5z
b3VyY2VVUkwudXRmOCgpLmRhdGEoKSwgZXhjZXB0aW9uRGV0YWlscy5saW5lTnVtYmVyLCBleGNl
cHRpb25EZXRhaWxzLmNvbHVtbk51bWJlciwgZXhjZXB0aW9uRGV0YWlscy5tZXNzYWdlLnV0Zjgo
KS5kYXRhKCkpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgTE9HKEluc3Bl
Y3RvciwgIkludGVybmFsIGVycm9yIGVuY291bnRlcmVkIHdoaWxlIGV2YWx1YXRpbmcgdXBvbiB0
aGUgZnJvbnRlbmQuIik7CisKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgc3Rk
OjpudWxsb3B0LCBwYXJzZWRFcnJvcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICAvLyBFeHBlY3RlZCByZXN1bHQgaXMgZWl0aGVyIGFuIEVycm9yU3RyaW5nIG9y
IHtyZXN1bHQ6IDxhbnk+fSBvciB7ZXJyb3I6IHN0cmluZ30uCisgICAgICAgIGF1dG8gb2JqZWN0
UmVzdWx0ID0gd2Vha1RoaXMtPnVud3JhcEV2YWx1YXRpb25SZXN1bHRBc09iamVjdChyZXN1bHQp
OworICAgICAgICBpZiAoIW9iamVjdFJlc3VsdCkgeworICAgICAgICAgICAgTE9HKEluc3BlY3Rv
ciwgIlVuZXhwZWN0ZWQgbm9uLW9iamVjdCB2YWx1ZSByZXR1cm5lZCBmcm9tIEluc3BlY3RvckZy
b250ZW5kQVBJLmNyZWF0ZVRhYkZvckV4dGVuc2lvbigpLiIpOworICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoeyB9LCBzdGQ6Om51bGxvcHQsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6
OkludGVybmFsRXJyb3IpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAg
IEFTU0VSVChyZXN1bHQuaGFzX3ZhbHVlKCkpOworCisgICAgICAgIEpTQzo6SlNWYWx1ZSBlcnJv
clBheWxvYWQgPSBvYmplY3RSZXN1bHQtPmdldChmcm9udGVuZEdsb2JhbE9iamVjdCwgSlNDOjpJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKGZyb250ZW5kR2xvYmFsT2JqZWN0LT52bSgpLCAiZXJyb3Ii
X3MpKTsKKyAgICAgICAgaWYgKCFlcnJvclBheWxvYWQuaXNVbmRlZmluZWQoKSkgeworICAgICAg
ICAgICAgaWYgKCFlcnJvclBheWxvYWQuaXNTdHJpbmcoKSkgeworICAgICAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHsgfSwgc3RkOjpudWxsb3B0LCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVy
cm9yOjpJbnRlcm5hbEVycm9yKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgRXhjZXB0aW9uRGV0YWls
cyB7IGVycm9yUGF5bG9hZC50b1dURlN0cmluZyhmcm9udGVuZEdsb2JhbE9iamVjdCkgfSwgc3Rk
OjpudWxsb3B0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIEpT
Qzo6SlNWYWx1ZSByZXN1bHRQYXlsb2FkID0gb2JqZWN0UmVzdWx0LT5nZXQoZnJvbnRlbmRHbG9i
YWxPYmplY3QsIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhmcm9udGVuZEdsb2JhbE9iamVj
dC0+dm0oKSwgInJlc3VsdCJfcykpOworICAgICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBzZXJpYWxpemVkUmVzdWx0VmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0
ZSgqZnJvbnRlbmRHbG9iYWxPYmplY3QsIHJlc3VsdFBheWxvYWQpOworICAgICAgICBpZiAoIXNl
cmlhbGl6ZWRSZXN1bHRWYWx1ZSkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9
LCBzdGQ6Om51bGxvcHQsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3Ip
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoc2VyaWFsaXplZFJlc3VsdFZhbHVlLT5kYXRhKCksIHN0ZDo6bnVsbG9wdCwgc3RkOjpu
dWxsb3B0KTsKKyAgICB9KTsKK30KKwogdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXI6OmRpZFNob3dFeHRlbnNpb25UYWIoY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYg
ZXh0ZW5zaW9uSUQsIGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uVGFiSUQmIGV4dGVuc2lvblRh
YklEKQogewogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclBy
b3h5OjpEaWRTaG93RXh0ZW5zaW9uVGFiIHsgZXh0ZW5zaW9uSUQsIGV4dGVuc2lvblRhYklEIH0s
IG1faW5zcGVjdG9yUGFnZUlkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyLmgKaW5kZXggYzM2MTJhZGQwMDU5ZDc0ZWI0N2E5MWU1ZGUzNDU3NDEyNDhk
MGY0MS4uOWVhYjBiZjhiMzM4NThmZTE4Y2FiOTM3MWUxOTczYzYyZWZlNzUwMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9y
L1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5oCkBAIC03MCw2ICs3MCw5IEBAIHB1
YmxpYzoKICAgICB2b2lkIHJlbG9hZEZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3I6OkV4dGVu
c2lvbklEJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxib29sPiYgaWdub3JlQ2FjaGUsIGNvbnN0IHN0
ZDo6b3B0aW9uYWw8U3RyaW5nPiYgdXNlckFnZW50LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFN0cmlu
Zz4mIGluamVjdGVkU2NyaXB0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0
aW9uYWw8SW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4mKT4mJik7CiAgICAgdm9pZCBzaG93RXh0
ZW5zaW9uVGFiKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uVGFiSUQmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKEV4cGVjdGVkPGJvb2wsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+KT4mJik7
CiAKKyAgICAvLyBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIgSVBDIG1lc3NhZ2Vz
IGZvciB0ZXN0aW5nLgorICAgIHZvaWQgZXZhbHVhdGVTY3JpcHRJbkV4dGVuc2lvblRhYihjb25z
dCBJbnNwZWN0b3I6OkV4dGVuc2lvblRhYklEJiwgY29uc3QgU3RyaW5nJiBzY3JpcHRTb3VyY2Us
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3Qg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiYsIGNvbnN0IHN0ZDo6b3B0
aW9uYWw8SW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4mKT4mJik7CisKICAgICAvLyBDYWxsYmFj
a3MgZnJvbSB0aGUgZnJvbnRlbmQuCiAgICAgdm9pZCBkaWRTaG93RXh0ZW5zaW9uVGFiKGNvbnN0
IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmLCBjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvblRhYklE
Jik7CiAgICAgdm9pZCBkaWRIaWRlRXh0ZW5zaW9uVGFiKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5z
aW9uSUQmLCBjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvblRhYklEJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9u
Q29udHJvbGxlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0
b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLm1lc3NhZ2VzLmluCmluZGV4IDZh
MDBlY2ZmZTU4MzBmZjE2NDVlOTAxN2JjZTZkNzYxZjI3ODcyMWMuLmM5MjRmNzMwN2E4Yzg1ODhj
Yjg4Y2RlNjkwM2NjMDBiOWI2ZjljZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyLm1lc3NhZ2VzLmluCkBAIC0zMCw2ICszMCwxMCBAQCBtZXNz
YWdlcyAtPiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIgTm90UmVmQ291bnRlZCB7
CiAgICAgRXZhbHVhdGVTY3JpcHRGb3JFeHRlbnNpb24oU3RyaW5nIGV4dGVuc2lvbklELCBTdHJp
bmcgc2NyaXB0U291cmNlLCBzdGQ6Om9wdGlvbmFsPFVSTD4gZnJhbWVVUkwsIHN0ZDo6b3B0aW9u
YWw8VVJMPiBjb250ZXh0U2VjdXJpdHlPcmlnaW4sIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gdXNlQ29u
dGVudFNjcmlwdENvbnRleHQpIC0+IChJUEM6OkRhdGFSZWZlcmVuY2UgcmVzdWx0RGF0YSwgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzLCBzdGQ6Om9wdGlv
bmFsPEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+IGVycm9yKSBBc3luYwogICAgIFJlbG9hZEZv
ckV4dGVuc2lvbihTdHJpbmcgZXh0ZW5zaW9uSUQsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaWdub3Jl
Q2FjaGUsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiB1c2VyQWdlbnQsIHN0ZDo6b3B0aW9uYWw8U3Ry
aW5nPiBpbmplY3RlZFNjcmlwdCkgLT4gKHN0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yOjpFeHRlbnNp
b25FcnJvcj4gZXJyb3IpIEFzeW5jCiAgICAgU2hvd0V4dGVuc2lvblRhYihTdHJpbmcgZXh0ZW5z
aW9uVGFiSWRlbnRpZmllcikgLT4gKEV4cGVjdGVkPGJvb2wsIEluc3BlY3Rvcjo6RXh0ZW5zaW9u
RXJyb3I+IHJlc3VsdCkgQXN5bmMKKyAgICAKKyAgICAvLyBGb3IgdGVzdGluZy4KKyAgICBFdmFs
dWF0ZVNjcmlwdEluRXh0ZW5zaW9uVGFiKFN0cmluZyBleHRlbnNpb25UYWJJRCwgU3RyaW5nIHNj
cmlwdFNvdXJjZSkgLT4gKElQQzo6RGF0YVJlZmVyZW5jZSByZXN1bHREYXRhLCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIHN0ZDo6b3B0aW9uYWw8SW5z
cGVjdG9yOjpFeHRlbnNpb25FcnJvcj4gZXJyb3IpIEFzeW5jCisgICAgCiB9CiAKICNlbmRpZiAv
LyBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggODIwOTI4MTFiYzM5YzgyYmNlNzA1YWM0ODE0MzBm
ZTgzMmZlOTYzMi4uODhlYzdkOTE0MTdmMDVjYjliYmRjNjRhYTVjNjNhYWJkMzhhMjJlNCAxMDA2
NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDM5IEBACisyMDIxLTA5LTI0ICBCSiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAg
IFtDb2NvYV0gYWRkIF9XS0luc3BlY3RvckV4dGVuc2lvbiBTUEkgdG8gZXZhbHVhdGUgc2NyaXB0
IG9uIGFuIGV4dGVuc2lvbiB0YWIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzMDY0NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODM0MjAzMjg+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgbmV3
IHRlc3QgdG8gZXhlcmNpc2UgdGhlIFNQSS4gVGhlIHRlc3Qgc2V0cyB1cCBhbiBfV0tJbnNwZWN0
b3JFeHRlbnNpb24sCisgICAgICAgIGNyZWF0ZXMgYSB0YWIsIGV2YWx1YXRlcyBzY3JpcHQgb24g
dGhlIHRhYiwgYW5kIGxhdGVyIHJlYWRzIGJhY2sgdGhlIHN0b3JlZCB2YWx1ZS4KKworICAgICAg
ICBOb3RhYmx5LCB0aGlzIHRlc3Qgd291bGQgZmFpbCBpZiB0aGUgZXh0ZW5zaW9uIHRhYiBpcyBu
b3QgY3VycmVudGx5IHNob3dpbmcuCisgICAgICAgIFRoaXMgaXMgYSBidWcgYW5kIHdpbGwgYmUg
YWRkcmVzc2VkIGFzIHBhcnQgb2YgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzMDc1OC4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvU291cmNlc0NvY29hLnR4dDoK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgQWRkIG5ldyBmaWxlcy4KKworICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tJbnNwZWN0b3JFeHRlbnNpb24ubW06IEFkZGVkLgorICAg
ICAgICAocmVzZXRHbG9iYWxTdGF0ZSk6CisgICAgICAgICgtW1VJRGVsZWdhdGVGb3JUZXN0aW5n
SW5zcGVjdG9yRXh0ZW5zaW9uIF93ZWJWaWV3OmRpZEF0dGFjaExvY2FsSW5zcGVjdG9yOl0pOgor
ICAgICAgICAoLVtVSURlbGVnYXRlRm9yVGVzdGluZ0luc3BlY3RvckV4dGVuc2lvbiBfd2ViVmll
dzpjb25maWd1cmF0aW9uRm9yTG9jYWxJbnNwZWN0b3I6XSk6CisgICAgICAgICgtW0luc3BlY3Rv
ckV4dGVuc2lvbkRlbGVnYXRlRm9yVGVzdGluZ0luc3BlY3RvckV4dGVuc2lvbiBpbnNwZWN0b3JF
eHRlbnNpb246ZGlkU2hvd1RhYldpdGhJZGVudGlmaWVyOl0pOgorICAgICAgICAoLVtJbnNwZWN0
b3JFeHRlbnNpb25EZWxlZ2F0ZUZvclRlc3RpbmdJbnNwZWN0b3JFeHRlbnNpb24gaW5zcGVjdG9y
RXh0ZW5zaW9uOmRpZEhpZGVUYWJXaXRoSWRlbnRpZmllcjpdKToKKyAgICAgICAgKFRFU1QpOgor
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0SW5zcGVjdG9yVVJMU2NoZW1lSGFu
ZGxlci5oOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RJbnNwZWN0
b3JVUkxTY2hlbWVIYW5kbGVyLm1tOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9JbnNwZWN0b3IvbWFjL1dLSW5zcGVjdG9yUmVzb3VyY2VVUkxTY2hlbWVIYW5kbGVyLm1tLgor
ICAgICAgICAoLVtUZXN0SW5zcGVjdG9yVVJMU2NoZW1lSGFuZGxlciB3ZWJWaWV3OnN0YXJ0VVJM
U2NoZW1lVGFzazpdKToKKyAgICAgICAgKC1bVGVzdEluc3BlY3RvclVSTFNjaGVtZUhhbmRsZXIg
d2ViVmlldzpzdG9wVVJMU2NoZW1lVGFzazpdKToKKyAgICAgICAgQWRkIGEgc2ltcGxlIFVSTFNj
aGVtZUhhbmRsZXIgd2hpY2ggYWxsb3dzIHNlcnZpbmcgdGVzdCByZXNvdXJjZXMgZnJvbSB0aGUg
VGVzdFdlYktpdEFQSS5yZXNvdXJjZXMgZGlyZWN0b3J5LgorICAgICAgICBUaGlzIGlzIG5lY2Vz
c2FyeSB0byB0ZXN0IF9XS0luc3BlY3RvckV4dGVuc2lvbiB0YWJzLCB3aGljaCBtdXN0IGxvYWQg
dGhlaXIgY29udGVudCBmcm9tIGEgY3VzdG9tIFVSTCBzY2hlbWUuCisKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW06CisgICAgICAgIEZpeCBVbmlmaWVkU291
cmNlcyBmYWxsb3V0IGJ5IGFkZGluZyBhIG1pc3NpbmcgaW5jbHVkZS4KKwogMjAyMS0wOS0yMSAg
QkogQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIEFkZCBTUEkgdG8g
c2VsZWN0IGEgdGFiIGNyZWF0ZWQgYnkgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1NvdXJjZXNDb2NvYS50eHQgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggNGU2MTljZDU5MmM0YzQ2MzlkZTRiNGJhYzk2NWNh
ZmI2MDIyODA5ZC4uZGI5ZTZlNGJlZDkzZDIzMmRmZjBiNDhjMzkyYTZkM2M1ZThkOTY0YSAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvU291cmNlc0NvY29hLnR4dApAQCAtMjcsNiArMjcsNyBAQCBXS1dlYlZp
ZXdDb25maWd1cmF0aW9uRXh0cmFzLm1tCiBjb2NvYS9QbGF0Zm9ybVV0aWxpdGllc0NvY29hLm1t
CiBjb2NvYS9UZXN0Q29jb2EubW0KIGNvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlLm1tCitjb2Nv
YS9UZXN0SW5zcGVjdG9yVVJMU2NoZW1lSGFuZGxlci5tbQogY29jb2EvVGVzdExlZ2FjeURvd25s
b2FkRGVsZWdhdGUubW0KIGNvY29hL1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUubW0KIGNvY29hL1Rl
c3RQcm90b2NvbC5tbQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzMzdlNjg2NzMyZjRlZmIw
YmE1NzI4MzcxMjhmNDUxYjA2YTI2NTdlLi43YWFmMmIyYTZmZTA0MDg1MmU5ZjBlNTRmZWQ0Mjk1
NzI1ZWFjMDVhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODkyLDYgKzg5Miw3IEBACiAJ
CTk5OTkxMDhCMUYzOTNDOTYwMDhBRDQ1NSAvKiBDb3B5aW5nLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk5OTEwOEExRjM5M0M4QjAwOEFENDU1IC8q
IENvcHlpbmcubW0gKi87IH07CiAJCTk5OUI3RUUzMjU1MUM2M0IwMEY0NTBBNCAvKiBXS0luc3Bl
Y3RvckV4dGVuc2lvbkhvc3QubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5OTlCN0VFMjI1NTFDNjNCMDBGNDUwQTQgLyogV0tJbnNwZWN0b3JFeHRlbnNp
b25Ib3N0Lm1tICovOyB9OwogCQk5OUI0RjlDNjI0RURFRDk3MDAwMjJCODIgLyogV0tJbnNwZWN0
b3JEZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDk5QjRGOUM1MjRFREVEOTYwMDAyMkI4MiAvKiBXS0luc3BlY3RvckRlbGVnYXRlLm1tICov
OyB9OworCQk5OUM2MDdFRDI2RkI5MEFDMDBBMDk1M0YgLyogV0tJbnNwZWN0b3JFeHRlbnNpb24u
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OUM2MDdF
QzI2RkI5MEFDMDBBMDk1M0YgLyogV0tJbnNwZWN0b3JFeHRlbnNpb24ubW0gKi87IH07CiAJCTk5
RTI4NDY0MjZGOTFGN0YwMDAzRjFGQSAvKiBXS0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlFMjg0NjMy
NkY5MUY3RjAwMDNGMUZBIC8qIFdLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUubW0gKi87IH07
CiAJCTk5RTI4NDY2MjZGOTNEQjUwMDAzRjFGQSAvKiBJbnNwZWN0b3JFeHRlbnNpb24tVGFiSWNv
bi0zMHgzMC5wbmcgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTlFMjg0NjUyNkY5M0Q3NjAwMDNGMUZBIC8qIEluc3BlY3RvckV4dGVuc2lvbi1U
YWJJY29uLTMweDMwLnBuZyAqLzsgfTsKIAkJOTlFMjg0NjgyNkY5NDE1NDAwMDNGMUZBIC8qIElu
c3BlY3RvckV4dGVuc2lvbi1iYXNpYy10YWIuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OUUyODQ2NzI2Rjk0MTNCMDAwM0YxRkEgLyog
SW5zcGVjdG9yRXh0ZW5zaW9uLWJhc2ljLXRhYi5odG1sICovOyB9OwpAQCAtMjYyMSw2ICsyNjIy
LDkgQEAKIAkJOTk5OTEwOEExRjM5M0M4QjAwOEFENDU1IC8qIENvcHlpbmcubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDb3B5aW5nLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5OTlCN0VFMjI1NTFDNjNCMDBGNDUwQTQgLyogV0tJbnNwZWN0b3JF
eHRlbnNpb25Ib3N0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
V0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5OUI0RjlDNTI0RURFRDk2MDAwMjJCODIgLyogV0tJbnNwZWN0b3JEZWxlZ2F0ZS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLSW5zcGVjdG9yRGVsZWdhdGUu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5QzYwN0VDMjZGQjkwQUMwMEEwOTUz
RiAvKiBXS0luc3BlY3RvckV4dGVuc2lvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFdLSW5zcGVjdG9yRXh0ZW5zaW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk5OUM2MDdGNDI2RkQ1QTFFMDBBMDk1M0YgLyogVGVzdEluc3BlY3RvclVSTFNj
aGVtZUhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gVGVzdEluc3Bl
Y3RvclVSTFNjaGVtZUhhbmRsZXIuaDsgcGF0aCA9IGNvY29hL1Rlc3RJbnNwZWN0b3JVUkxTY2hl
bWVIYW5kbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5QzYwN0Y1MjZGRDVB
MUYwMEEwOTUzRiAvKiBUZXN0SW5zcGVjdG9yVVJMU2NoZW1lSGFuZGxlci5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFRlc3RJbnNwZWN0b3JVUkxTY2hlbWVIYW5k
bGVyLm1tOyBwYXRoID0gY29jb2EvVGVzdEluc3BlY3RvclVSTFNjaGVtZUhhbmRsZXIubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5RTI4NDYzMjZGOTFGN0YwMDAzRjFGQSAvKiBX
S0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTlFMjg0NjUyNkY5M0Q3NjAwMDNGMUZBIC8qIEluc3BlY3Rv
ckV4dGVuc2lvbi1UYWJJY29uLTMweDMwLnBuZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnBuZzsgcGF0aCA9ICJJbnNwZWN0b3JFeHRlbnNp
b24tVGFiSWNvbi0zMHgzMC5wbmciOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OUUy
ODQ2NzI2Rjk0MTNCMDAwM0YxRkEgLyogSW5zcGVjdG9yRXh0ZW5zaW9uLWJhc2ljLXRhYi5odG1s
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gIkluc3BlY3RvckV4dGVuc2lvbi1iYXNpYy10
YWIuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMzIwLDYgKzMzMjQsOCBA
QAogCQkJCTVDRTc1OTQ3MjJBODgzQTUwMEMxMjQwOSAvKiBUZXN0Q29udGV4dE1lbnVEcml2ZXIu
bW0gKi8sCiAJCQkJREY2QkM0NzAyNTM0RTEyMDAwOEY2M0NDIC8qIFRlc3REb3dubG9hZERlbGVn
YXRlLmggKi8sCiAJCQkJREY2QkM0NkYyNTM0RTEyMDAwOEY2M0NDIC8qIFRlc3REb3dubG9hZERl
bGVnYXRlLm1tICovLAorCQkJCTk5QzYwN0Y0MjZGRDVBMUUwMEEwOTUzRiAvKiBUZXN0SW5zcGVj
dG9yVVJMU2NoZW1lSGFuZGxlci5oICovLAorCQkJCTk5QzYwN0Y1MjZGRDVBMUYwMEEwOTUzRiAv
KiBUZXN0SW5zcGVjdG9yVVJMU2NoZW1lSGFuZGxlci5tbSAqLywKIAkJCQk1QzcyRThDRDI0NEZG
Q0UzMDAzODFFQjcgLyogVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUuaCAqLywKIAkJCQk1Qzcy
RThDRTI0NEZGQ0U0MDAzODFFQjcgLyogVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUubW0gKi8s
CiAJCQkJMkQxQzA0QTUxRDc2Mjk4QjAwMEE2ODE2IC8qIFRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUu
aCAqLywKQEAgLTM0NzgsNyArMzQ4NCw2IEBACiAJCQkJNkIyNUE3NTEyNURDOEQ0RTAwNzA3NDRG
IC8qIEV2ZW50QXR0cmlidXRpb24ubW0gKi8sCiAJCQkJQ0RBMjlCMjgyMEZEMkE5OTAwRjE1Q0VE
IC8qIEV4aXRGdWxsc2NyZWVuT25FbnRlclBpUC5tbSAqLywKIAkJCQkxRDEyQkVCRjI0NUJFRjg1
MDA0QzBCN0EgLyogRXhpdFBpUE9uU3VzcGVuZFZpZGVvRWxlbWVudC5tbSAqLywKLQkJCQk1MTgx
OUYyOTI2RUFDOTgyMDBFNDczNzUgLyogRlRQLm1tICovLAogCQkJCTJEODEwNENCMUJFQzEzRTcw
MDIwREE0NiAvKiBGaW5kSW5QYWdlLm1tICovLAogCQkJCTUxMjQyQ0Q0MjM3NEU2MUUwMEVFRDlD
MSAvKiBGaW5kSW5QYWdlQVBJLm1tICovLAogCQkJCTExODE1MzQ3MjIwOEJBREYwMEIyQ0NEMiAv
KiBGaXJzdFZpc3VhbGx5Tm9uRW1wdHlNaWxlc3RvbmUubW0gKi8sCkBAIC0zNDg2LDYgKzM0OTEs
NyBAQAogCQkJCTJFOTJCOEY4MjE2NDkwRUEwMDVCNjRGMCAvKiBGb250QXR0cmlidXRlcy5tbSAq
LywKIAkJCQlGNEZBMjgyOTI0Q0QwMTI3MDA2MThBNDYgLyogRm9ybVZhbGlkYXRpb24ubW0gKi8s
CiAJCQkJNUNCNUIzQkQxRkZDNTE3RTAwQzI3QkIwIC8qIEZyYW1lSGFuZGxlU2VyaWFsaXphdGlv
bi5tbSAqLywKKwkJCQk1MTgxOUYyOTI2RUFDOTgyMDBFNDczNzUgLyogRlRQLm1tICovLAogCQkJ
CUNEQ0Y3OEE3MjQ0QTJFREIwMDQ4MDMxMSAvKiBGdWxsc2NyZWVuQWxlcnQubW0gKi8sCiAJCQkJ
Q0Q3OEUxMUExREI3RUEzNjAwMTRBMkRFIC8qIEZ1bGxzY3JlZW5EZWxlZ2F0ZS5tbSAqLywKIAkJ
CQkzRjFCNTI2ODFEM0Q3MTI5MDA4RDYwQzQgLyogRnVsbHNjcmVlbkxheW91dENvbnN0cmFpbnRz
Lm1tICovLApAQCAtMzY2Myw2ICszNjY5LDcgQEAKIAkJCQkzNzBDRTIyOTFGNTczNDM0MDBFNzQx
MEIgLyogV0tDb250ZW50Vmlld1RhcmdldEZvckFjdGlvbi5tbSAqLywKIAkJCQk1MUQxMjQ5NzFF
NzYzQUY4MDAyQjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmUubW0gKi8sCiAJCQkJOTlCNEY5QzUy
NEVERUQ5NjAwMDIyQjgyIC8qIFdLSW5zcGVjdG9yRGVsZWdhdGUubW0gKi8sCisJCQkJOTlDNjA3
RUMyNkZCOTBBQzAwQTA5NTNGIC8qIFdLSW5zcGVjdG9yRXh0ZW5zaW9uLm1tICovLAogCQkJCTk5
RTI4NDYzMjZGOTFGN0YwMDAzRjFGQSAvKiBXS0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLm1t
ICovLAogCQkJCTk5OUI3RUUyMjU1MUM2M0IwMEY0NTBBNCAvKiBXS0luc3BlY3RvckV4dGVuc2lv
bkhvc3QubW0gKi8sCiAJCQkJQTVBNzI5RjAxRjYyMkE5QTAwREU1QTI4IC8qIFdLTmF2aWdhdGlv
blJlc3BvbnNlLm1tICovLApAQCAtNTU0OCw2ICs1NTU1LDcgQEAKIAkJCQk3Q0NFN0VDMDFBNDEx
QTdFMDA0NDdDNEMgLyogRnJhZ21lbnROYXZpZ2F0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
N0NDRTdFRjYxQTQxMUFFNjAwNDQ3QzRDIC8qIEZyYW1lTUlNRVR5cGVIVE1MLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTdDQ0U3RUY3MUE0MTFBRTYwMDQ0N0M0QyAvKiBGcmFtZU1JTUVUeXBlUE5H
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxODE5RjJBMjZFQUM5ODMwMEU0NzM3NSAvKiBGVFAu
bW0gaW4gU291cmNlcyAqLywKIAkJCQlDRENGNzhBODI0NEEzMkY3MDA0ODAzMTEgLyogRnVsbHNj
cmVlbkFsZXJ0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q3OEUxMUQxREI3RUE2NjAwMTRBMkRF
IC8qIEZ1bGxzY3JlZW5EZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEQjIxM0JEMjRF
RjUyMjgwMEZERTMwMSAvKiBGdWxsc2NyZWVuRm9jdXMubW0gaW4gU291cmNlcyAqLywKQEAgLTU4
MDUsNyArNTgxMyw2IEBACiAJCQkJN0NDRTdGMTQxQTQxMUFFNjAwNDQ3QzRDIC8qIFNob3VsZEtl
ZXBDdXJyZW50QmFja0ZvcndhcmRMaXN0SXRlbUluTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkzN0JDQTYxQzFCNTk2QkE5MDAyMDEyQ0EgLyogU2hvdWxkT3BlbkV4dGVybmFsVVJMc0luTmV3
V2luZG93QWN0aW9ucy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDODNFMEM1MUQwQTY1NDYwMEZF
QkNGMyAvKiBTaHJpbmtUb0ZpdC5tbSBpbiBTb3VyY2VzICovLAotCQkJCTUxODE5RjJBMjZFQUM5
ODMwMEU0NzM3NSAvKiBGVFAubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VDRDFBNDExQTdF
MDA0NDdDNEMgLyogU2ltcGxpZnlNYXJrdXAubW0gaW4gU291cmNlcyAqLywKIAkJCQlDMTQ5RDU1
MDI0MkU5OERGMDAzRUJCMTIgLyogU2xlZXBEaXNhYmxlci5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTJERkY3QjZEMURBNDg3QUYwMDgxNDYxNCAvKiBTbmFwc2hvdFN0b3JlLm1tIGluIFNvdXJjZXMg
Ki8sCkBAIC01OTQzLDYgKzU5NTAsNyBAQAogCQkJCTUxRDEyNDk4MUU3NjNCMDIwMDJCMjgyMCAv
KiBXS0hUVFBDb29raWVTdG9yZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjFEMUE0MTFB
RTYwMDQ0N0M0QyAvKiBXS0ltYWdlQ3JlYXRlQ0dJbWFnZUNyYXNoLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTk5QjRGOUM2MjRFREVEOTcwMDAyMkI4MiAvKiBXS0luc3BlY3RvckRlbGVnYXRlLm1t
IGluIFNvdXJjZXMgKi8sCisJCQkJOTlDNjA3RUQyNkZCOTBBQzAwQTA5NTNGIC8qIFdLSW5zcGVj
dG9yRXh0ZW5zaW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTlFMjg0NjQyNkY5MUY3RjAwMDNG
MUZBIC8qIFdLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk5OTlCN0VFMzI1NTFDNjNCMDBGNDUwQTQgLyogV0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0Lm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTVBNzI5RjExRjYyMkFBNzAwREU1QTI4IC8qIFdLTmF2aWdh
dGlvblJlc3BvbnNlLm1tIGluIFNvdXJjZXMgKi8sCkBAIC02MDI2LDYgKzYwMzQsNyBAQAogCQkJ
CTVDNDI1OTQ2MjI2NkE2OEEwMDM5QUE3QSAvKiBCYXNpY1Byb3Bvc2VkQ3JlZGVudGlhbFBsdWdJ
bi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTM3NEI3QTYxMURGMzcxQ0YwMEFDQ0I2QyAvKiBCdW5k
bGVFZGl0aW5nRGVsZWdhdGVQbHVnSW4ubW0gaW4gU291cmNlcyAqLywKIAkJCQk3QTg5QkI2ODIz
MzE2NDNBMDA0MkNCMUUgLyogQnVuZGxlRm9ybURlbGVnYXRlUGx1Z0luLm1tIGluIFNvdXJjZXMg
Ki8sCisJCQkJNTE3NUM3QTIyNkY4NzYyMzAwMDNBRjVDIC8qIEJ1bmRsZVBhZ2VDb25zb2xlTWVz
c2FnZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUExM0VCQkIwMUI4NzQzNkYwMDA5NzExMCAvKiBC
dW5kbGVQYXJhbWV0ZXJzUGx1Z0luLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzdBNzA5QUYxRTNF
QTk3RTAwQ0E1OTY5IC8qIEJ1bmRsZVJhbmdlSGFuZGxlUGx1Z0luLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJNUM3NTcxNjEyMjEyNEM1MjAwQjlFNUFDIC8qIEJ1bmRsZVJldGFpblBhZ2VQbHVnSW4u
bW0gaW4gU291cmNlcyAqLywKQEAgLTYwNDMsNyArNjA1Miw2IEBACiAJCQkJMkQzQ0EzQTgyMjFE
RjRCNDAwODhFODAzIC8qIFBhZ2VPdmVybGF5UGx1Z2luLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RjQ0QzdBMDAyMEY5RUVCRjAwMTQ0NzhDIC8qIFBhcnNlcllpZWxkVG9rZW5QbHVnSW4ubW0gaW4g
U291cmNlcyAqLywKIAkJCQlBMTNFQkJBQjFCODc0MzQ2MDAwOTcxMTAgLyogUGxhdGZvcm1VdGls
aXRpZXNDb2NvYS5tbSBpbiBTb3VyY2VzICovLAotCQkJCTUxNzVDN0EyMjZGODc2MjMwMDAzQUY1
QyAvKiBCdW5kbGVQYWdlQ29uc29sZU1lc3NhZ2UubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQTRG
ODFDRjFCREZGRDUzMDA0RTY3MkUgLyogUmVtb3RlT2JqZWN0UmVnaXN0cnlQbHVnSW4ubW0gaW4g
U291cmNlcyAqLywKIAkJCQlBMTJEREMwMjFFODM3QzI0MDBDRjZDQUUgLyogUmVuZGVyZWRJbWFn
ZVdpdGhPcHRpb25zUGx1Z0luLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTI0NTE3ODcyMUI5RjU3
QjAwODJDQjM0IC8qIFJlbmRlcmluZ1Byb2dyZXNzUGx1Z0luLm1tIGluIFNvdXJjZXMgKi8sCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSW5zcGVj
dG9yRXh0ZW5zaW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9X
S0luc3BlY3RvckV4dGVuc2lvbi5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ODhiOGIyYWVjMzUwOWFlNGE2YmVl
YzRlYTU2NjMyZDdmMDRhZWM3Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9XS0luc3BlY3RvckV4dGVuc2lvbi5tbQpAQCAtMCwwICsxLDE4
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisjaW1wb3J0ICJUZXN0Q29j
b2EuaCIKKyNpbXBvcnQgIlRlc3RJbnNwZWN0b3JVUkxTY2hlbWVIYW5kbGVyLmgiCisjaW1wb3J0
ICJVdGlsaXRpZXMuaCIKKyNpbXBvcnQgPFdlYktpdC9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oPgor
I2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tJ
bnNwZWN0b3IuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uLmg+
CisjaW1wb3J0IDxXZWJLaXQvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLmg+CisjaW1wb3J0IDxXZWJL
aXQvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tJ
bnNwZWN0b3JFeHRlbnNpb25Qcml2YXRlRm9yVGVzdGluZy5oPgorI2ltcG9ydCA8V2ViS2l0L19X
S0luc3BlY3RvclByaXZhdGVGb3JUZXN0aW5nLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+
CisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisKK3N0YXRpYyBib29sIGRpZEF0
dGFjaExvY2FsSW5zcGVjdG9yQ2FsbGVkID0gZmFsc2U7CitzdGF0aWMgYm9vbCBkaWRTaG93RXh0
ZW5zaW9uVGFiV2FzQ2FsbGVkID0gZmFsc2U7CitzdGF0aWMgYm9vbCBkaWRIaWRlRXh0ZW5zaW9u
VGFiV2FzQ2FsbGVkID0gZmFsc2U7CitzdGF0aWMgYm9vbCBwZW5kaW5nQ2FsbGJhY2tXYXNDYWxs
ZWQgPSBmYWxzZTsKK3N0YXRpYyBSZXRhaW5QdHI8VGVzdEluc3BlY3RvclVSTFNjaGVtZUhhbmRs
ZXI+IHNoYXJlZFVSTFNjaGVtZUhhbmRsZXI7CitzdGF0aWMgUmV0YWluUHRyPF9XS0luc3BlY3Rv
ckV4dGVuc2lvbj4gc2hhcmVkSW5zcGVjdG9yRXh0ZW5zaW9uOworc3RhdGljIFJldGFpblB0cjxO
U1N0cmluZz4gc2hhcmVkRXh0ZW5zaW9uVGFiSWRlbnRpZmllcjsKKworc3RhdGljIHZvaWQgcmVz
ZXRHbG9iYWxTdGF0ZSgpCit7CisgICAgZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3JDYWxsZWQgPSBm
YWxzZTsKKyAgICBkaWRTaG93RXh0ZW5zaW9uVGFiV2FzQ2FsbGVkID0gZmFsc2U7CisgICAgZGlk
SGlkZUV4dGVuc2lvblRhYldhc0NhbGxlZCA9IGZhbHNlOworICAgIHBlbmRpbmdDYWxsYmFja1dh
c0NhbGxlZCA9IGZhbHNlOworfQorCitAaW50ZXJmYWNlIFVJRGVsZWdhdGVGb3JUZXN0aW5nSW5z
cGVjdG9yRXh0ZW5zaW9uIDogTlNPYmplY3QgPFdLVUlEZWxlZ2F0ZT4KK0BlbmQKKworQGltcGxl
bWVudGF0aW9uIFVJRGVsZWdhdGVGb3JUZXN0aW5nSW5zcGVjdG9yRXh0ZW5zaW9uCisKKy0gKHZv
aWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3I6
KF9XS0luc3BlY3RvciAqKWluc3BlY3RvcgoreworICAgIEVYUEVDVF9FUSh3ZWJWaWV3Ll9pbnNw
ZWN0b3IsIGluc3BlY3Rvcik7CisgICAgZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3JDYWxsZWQgPSB0
cnVlOworfQorCistIChfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uICopX3dlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcgY29uZmlndXJhdGlvbkZvckxvY2FsSW5zcGVjdG9yOihfV0tJbnNwZWN0
b3IgKilpbnNwZWN0b3IKK3sKKyAgICBpZiAoIXNoYXJlZFVSTFNjaGVtZUhhbmRsZXIpCisgICAg
ICAgIHNoYXJlZFVSTFNjaGVtZUhhbmRsZXIgPSBhZG9wdE5TKFtbVGVzdEluc3BlY3RvclVSTFNj
aGVtZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKKworICAgIGF1dG8gaW5zcGVjdG9yQ29uZmlndXJh
dGlvbiA9IGFkb3B0TlMoW1tfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7
CisgICAgW2luc3BlY3RvckNvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpzaGFyZWRV
UkxTY2hlbWVIYW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpAInRlc3QtcmVzb3VyY2UiXTsKKyAg
ICByZXR1cm4gaW5zcGVjdG9yQ29uZmlndXJhdGlvbi5hdXRvcmVsZWFzZSgpOworfQorCitAZW5k
CisKKworQGludGVyZmFjZSBJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZUZvclRlc3RpbmdJbnNw
ZWN0b3JFeHRlbnNpb24gOiBOU09iamVjdCA8X1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGU+
CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZUZvclRl
c3RpbmdJbnNwZWN0b3JFeHRlbnNpb24geworfQorCistICh2b2lkKWluc3BlY3RvckV4dGVuc2lv
bjooX1dLSW5zcGVjdG9yRXh0ZW5zaW9uICopZXh0ZW5zaW9uIGRpZFNob3dUYWJXaXRoSWRlbnRp
ZmllcjooTlNTdHJpbmcgKil0YWJJZGVudGlmaWVyCit7CisgICAgZGlkU2hvd0V4dGVuc2lvblRh
Yldhc0NhbGxlZCA9IHRydWU7Cit9CisKKy0gKHZvaWQpaW5zcGVjdG9yRXh0ZW5zaW9uOihfV0tJ
bnNwZWN0b3JFeHRlbnNpb24gKilleHRlbnNpb24gZGlkSGlkZVRhYldpdGhJZGVudGlmaWVyOihO
U1N0cmluZyAqKXRhYklkZW50aWZpZXIKK3sKKyAgICBkaWRIaWRlRXh0ZW5zaW9uVGFiV2FzQ2Fs
bGVkID0gdHJ1ZTsKK30KKworQGVuZAorCitURVNUKFdLSW5zcGVjdG9yRXh0ZW5zaW9uLCBDYW5F
dmFsdWF0ZVNjcmlwdEluRXh0ZW5zaW9uVGFiKQoreworICAgIHJlc2V0R2xvYmFsU3RhdGUoKTsK
KworICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtXS1dlYlZpZXdDb25m
aWd1cmF0aW9uIG5ld10pOworICAgIHdlYlZpZXdDb25maWd1cmF0aW9uLmdldCgpLnByZWZlcmVu
Y2VzLl9kZXZlbG9wZXJFeHRyYXNFbmFibGVkID0gWUVTOworICAgIGF1dG8gd2ViVmlldyA9IGFk
b3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4
MDAsIDYwMCkgY29uZmlndXJhdGlvbjp3ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQoKV0pOworICAg
IGF1dG8gdWlEZWxlZ2F0ZSA9IGFkb3B0TlMoW1VJRGVsZWdhdGVGb3JUZXN0aW5nSW5zcGVjdG9y
RXh0ZW5zaW9uIG5ld10pOworCisgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTp1aURlbGVnYXRl
LmdldCgpXTsKKyAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpAIjxoZWFkPjx0aXRsZT5UZXN0
IHBhZ2UgdG8gYmUgaW5zcGVjdGVkPC90aXRsZT48L2hlYWQ+PGJvZHk+PHA+RmlsbGVyIGNvbnRl
bnQ8L3A+PC9ib2R5PiIgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly9leGFt
cGxlLmNvbS8iXV07CisKKyAgICBbW3dlYlZpZXcgX2luc3BlY3Rvcl0gc2hvd107CisgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkaWRBdHRhY2hMb2NhbEluc3BlY3RvckNhbGxlZCk7CisK
KyAgICBhdXRvIGV4dGVuc2lvbklEID0gW05TVVVJRCBVVUlEXS5VVUlEU3RyaW5nOworICAgIGF1
dG8gZXh0ZW5zaW9uRGlzcGxheU5hbWUgPSBAIkZpcnN0RXh0ZW5zaW9uIjsKKworICAgIC8vIFJl
Z2lzdGVyIHRoZSB0ZXN0IGV4dGVuc2lvbi4KKyAgICBwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQg
PSBmYWxzZTsKKyAgICBbW3dlYlZpZXcgX2luc3BlY3Rvcl0gcmVnaXN0ZXJFeHRlbnNpb25XaXRo
SUQ6ZXh0ZW5zaW9uSUQgZGlzcGxheU5hbWU6ZXh0ZW5zaW9uRGlzcGxheU5hbWUgY29tcGxldGlv
bkhhbmRsZXI6XihOU0Vycm9yICogX051bGxhYmxlIGVycm9yLCBfV0tJbnNwZWN0b3JFeHRlbnNp
b24gKiBfTnVsbGFibGUgZXh0ZW5zaW9uKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsK
KyAgICAgICAgRVhQRUNUX05PVF9OVUxMKGV4dGVuc2lvbik7CisgICAgICAgIHNoYXJlZEluc3Bl
Y3RvckV4dGVuc2lvbiA9IGV4dGVuc2lvbjsKKworICAgICAgICBwZW5kaW5nQ2FsbGJhY2tXYXND
YWxsZWQgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcGVu
ZGluZ0NhbGxiYWNrV2FzQ2FsbGVkKTsKKworICAgIGF1dG8gZXh0ZW5zaW9uRGVsZWdhdGUgPSBh
ZG9wdE5TKFtJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZUZvclRlc3RpbmdJbnNwZWN0b3JFeHRl
bnNpb24gbmV3XSk7CisgICAgW3NoYXJlZEluc3BlY3RvckV4dGVuc2lvbiBzZXREZWxlZ2F0ZTpl
eHRlbnNpb25EZWxlZ2F0ZS5nZXQoKV07CisKKyAgICAvLyBDcmVhdGUgYW4gZXh0ZW5zaW9uIHRh
Yi4KKyAgICBhdXRvIGljb25VUkwgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzpAInRlc3QtcmVzb3Vy
Y2U6Ly9JbnNwZWN0b3JFeHRlbnNpb24tVGFiSWNvbi0zMHgzMC5wbmciXTsKKyAgICBhdXRvIHNv
dXJjZVVSTCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAidGVzdC1yZXNvdXJjZTovL0luc3BlY3Rv
ckV4dGVuc2lvbi1iYXNpYy10YWIuaHRtbCJdOworCisgICAgcGVuZGluZ0NhbGxiYWNrV2FzQ2Fs
bGVkID0gZmFsc2U7CisgICAgW3NoYXJlZEluc3BlY3RvckV4dGVuc2lvbiBjcmVhdGVUYWJXaXRo
TmFtZTpAIkZpcnN0RXh0ZW5zaW9uLVRhYiIgdGFiSWNvblVSTDppY29uVVJMIHNvdXJjZVVSTDpz
b3VyY2VVUkwgY29tcGxldGlvbkhhbmRsZXI6XihOU0Vycm9yICogX051bGxhYmxlIGVycm9yLCBO
U1N0cmluZyAqIF9OdWxsYWJsZSBleHRlbnNpb25UYWJJZGVudGlmaWVyKSB7CisgICAgICAgIEVY
UEVDVF9OVUxMKGVycm9yKTsKKyAgICAgICAgRVhQRUNUX05PVF9OVUxMKGV4dGVuc2lvblRhYklk
ZW50aWZpZXIpOworICAgICAgICBzaGFyZWRFeHRlbnNpb25UYWJJZGVudGlmaWVyID0gZXh0ZW5z
aW9uVGFiSWRlbnRpZmllcjsKKworICAgICAgICBwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQgPSB0
cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcGVuZGluZ0NhbGxi
YWNrV2FzQ2FsbGVkKTsKKworICAgIHBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCA9IGZhbHNlOwor
ICAgIGRpZFNob3dFeHRlbnNpb25UYWJXYXNDYWxsZWQgPSBmYWxzZTsKKyAgICBbW3dlYlZpZXcg
X2luc3BlY3Rvcl0gc2hvd0V4dGVuc2lvblRhYldpdGhJZGVudGlmaWVyOnNoYXJlZEV4dGVuc2lv
blRhYklkZW50aWZpZXIuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU0Vycm9yICogX051bGxh
YmxlIGVycm9yKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKworICAgICAgICBwZW5k
aW5nQ2FsbGJhY2tXYXNDYWxsZWQgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkKTsKKyAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmRpZFNob3dFeHRlbnNpb25UYWJXYXNDYWxsZWQpOworCisgICAgcGVuZGlu
Z0NhbGxiYWNrV2FzQ2FsbGVkID0gZmFsc2U7CisgICAgYXV0byBzY3JpcHRTb3VyY2UxID0gQCJ3
aW5kb3cuX3NlY3JldFZhbHVlID0geydhbnN3ZXInOjQyfSI7CisgICAgW3NoYXJlZEluc3BlY3Rv
ckV4dGVuc2lvbiBfZXZhbHVhdGVTY3JpcHQ6c2NyaXB0U291cmNlMSBpbkV4dGVuc2lvblRhYldp
dGhJZGVudGlmaWVyOnNoYXJlZEV4dGVuc2lvblRhYklkZW50aWZpZXIuZ2V0KCkgY29tcGxldGlv
bkhhbmRsZXI6XihOU0Vycm9yICogX051bGxhYmxlIGVycm9yLCBOU0RpY3Rpb25hcnkgKiBfTnVs
bGFibGUgcmVzdWx0KSB7CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAgICAgcGVu
ZGluZ0NhbGxiYWNrV2FzQ2FsbGVkID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJnBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCk7CisKKyAgICBwZW5kaW5nQ2Fs
bGJhY2tXYXNDYWxsZWQgPSBmYWxzZTsKKyAgICBhdXRvIHNjcmlwdFNvdXJjZTIgPSBAIndpbmRv
dy5fc2VjcmV0VmFsdWUiOworICAgIFtzaGFyZWRJbnNwZWN0b3JFeHRlbnNpb24gX2V2YWx1YXRl
U2NyaXB0OnNjcmlwdFNvdXJjZTIgaW5FeHRlbnNpb25UYWJXaXRoSWRlbnRpZmllcjpzaGFyZWRF
eHRlbnNpb25UYWJJZGVudGlmaWVyLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNFcnJvciAq
IF9OdWxsYWJsZSBlcnJvciwgTlNEaWN0aW9uYXJ5ICogX051bGxhYmxlIHJlc3VsdCkgeworICAg
ICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAgIEVYUEVDVF9OT1RfTlVMTChyZXN1bHQp
OworICAgICAgICBFWFBFQ1RfTlNfRVFVQUwocmVzdWx0W0AiYW5zd2VyIl0sIEA0Mik7CisKKyAg
ICAgICAgcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJnBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCk7CisKKyAgICAv
LyBVbnJlZ2lzdGVyIHRoZSB0ZXN0IGV4dGVuc2lvbi4KKyAgICBwZW5kaW5nQ2FsbGJhY2tXYXND
YWxsZWQgPSBmYWxzZTsKKyAgICBbW3dlYlZpZXcgX2luc3BlY3Rvcl0gdW5yZWdpc3RlckV4dGVu
c2lvbjpzaGFyZWRJbnNwZWN0b3JFeHRlbnNpb24uZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihO
U0Vycm9yICogX051bGxhYmxlIGVycm9yKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsK
KworICAgICAgICBwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQgPSB0cnVlOworICAgIH1dOworICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkKTsKK30K
KworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdEluc3BlY3RvclVSTFNjaGVtZUhhbmRsZXIuaCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdEluc3BlY3RvclVSTFNjaGVtZUhhbmRsZXIu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kNzkwN2YyNzkwZTBmODNlYmQ5YzNiMjIwZTRmZDIyYjBlNDM3N2ZhCi0t
LSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0SW5zcGVjdG9y
VVJMU2NoZW1lSGFuZGxlci5oCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8V2ViS2l0
L1dLVVJMU2NoZW1lSGFuZGxlci5oPgorCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCitAaW50
ZXJmYWNlIFRlc3RJbnNwZWN0b3JVUkxTY2hlbWVIYW5kbGVyIDogTlNPYmplY3QgPFdLVVJMU2No
ZW1lSGFuZGxlcj4KK0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RJbnNwZWN0b3JVUkxTY2hlbWVIYW5kbGVyLm1t
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0SW5zcGVjdG9yVVJMU2NoZW1lSGFuZGxl
ci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jNmE0N2IzOTIxOGQ4MTk0ZDVlOWViODA1YmMxYWU5OWI2NWNiZjA1
Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0SW5zcGVj
dG9yVVJMU2NoZW1lSGFuZGxlci5tbQpAQCAtMCwwICsxLDExMyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiVGVzdEluc3BlY3RvclVSTFNjaGVtZUhhbmRsZXIu
aCIKKworI2ltcG9ydCA8V2ViQ29yZS9NSU1FVHlwZVJlZ2lzdHJ5Lmg+CisjaW1wb3J0IDxXZWJL
aXQvV0tVUkxTY2hlbWVUYXNrLmg+CisjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgorCisvLyBO
b3RlOiB0aGlzIGNsYXNzIGlzIGEgc2ltcGxpZmllZCB2ZXJzaW9uIG9mIFdLUmVzb3VyY2VVUkxT
Y2hlbWVIYW5kbGVyIGZvciB0ZXN0aW5nIHB1cnBvc2VzLgorCitAaW1wbGVtZW50YXRpb24gVGVz
dEluc3BlY3RvclVSTFNjaGVtZUhhbmRsZXIgeworICAgIFJldGFpblB0cjxOU01hcFRhYmxlPGlk
IDxXS1VSTFNjaGVtZVRhc2s+LCBOU09wZXJhdGlvbiAqPj4gX2ZpbGVMb2FkT3BlcmF0aW9uczsK
KyAgICBSZXRhaW5QdHI8TlNCdW5kbGU+IF9jYWNoZWRCdW5kbGU7CisgICAgUmV0YWluUHRyPE5T
T3BlcmF0aW9uUXVldWU+IF9vcGVyYXRpb25RdWV1ZTsKK30KKworLy8gTUFSSyAtIFdLVVJMU2No
ZW1lSGFuZGxlciBQcm90b2NvbAorCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZp
ZXcgc3RhcnRVUkxTY2hlbWVUYXNrOihpZCA8V0tVUkxTY2hlbWVUYXNrPil1cmxTY2hlbWVUYXNr
Cit7CisgICAgaWYgKCFfY2FjaGVkQnVuZGxlKQorICAgICAgICBfY2FjaGVkQnVuZGxlID0gW05T
QnVuZGxlIG1haW5CdW5kbGVdOworCisgICAgaWYgKCFfZmlsZUxvYWRPcGVyYXRpb25zKQorICAg
ICAgICBfZmlsZUxvYWRPcGVyYXRpb25zID0gYWRvcHROUyhbW05TTWFwVGFibGUgYWxsb2NdIGlu
aXRXaXRoS2V5T3B0aW9uczpOU1BvaW50ZXJGdW5jdGlvbnNTdHJvbmdNZW1vcnkgdmFsdWVPcHRp
b25zOk5TUG9pbnRlckZ1bmN0aW9uc1N0cm9uZ01lbW9yeSBjYXBhY2l0eTo1XSk7CisKKyAgICBp
ZiAoIV9vcGVyYXRpb25RdWV1ZSkgeworICAgICAgICBfb3BlcmF0aW9uUXVldWUgPSBhZG9wdE5T
KFtbTlNPcGVyYXRpb25RdWV1ZSBhbGxvY10gaW5pdF0pOworICAgICAgICBfb3BlcmF0aW9uUXVl
dWUuZ2V0KCkudW5kZXJseWluZ1F1ZXVlID0gZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1ZShRT1Nf
Q0xBU1NfVVNFUl9JTlRFUkFDVElWRSwgMCk7CisgICAgICAgIF9vcGVyYXRpb25RdWV1ZS5nZXQo
KS5xdWFsaXR5T2ZTZXJ2aWNlID0gTlNPcGVyYXRpb25RdWFsaXR5T2ZTZXJ2aWNlVXNlckludGVy
YWN0aXZlOworCisgICAgICAgIC8vIFRoZSBkZWZhdWx0IHZhbHVlIChOU09wZXJhdGlvblF1ZXVl
RGVmYXVsdE1heENvbmN1cnJlbnRPcGVyYXRpb25Db3VudCkgcmVzdWx0cyBpbiBhIGxhcmdlIG51
bWJlciBvZiB0aHJlYWRzCisgICAgICAgIC8vIHRoYXQgY2FuIGV4Y2VlZCB0aGUgc29mdCBsaW1p
dCBpZiB0d28gV2ViIEluc3BlY3RvciBpbnN0YW5jZXMgYXJlIGJlaW5nIGxvYWRlZCBzaW11bHRh
bmVvdXNseS4KKyAgICAgICAgX29wZXJhdGlvblF1ZXVlLmdldCgpLm1heENvbmN1cnJlbnRPcGVy
YXRpb25Db3VudCA9IDQ7CisgICAgfQorCisgICAgTlNCbG9ja09wZXJhdGlvbiAqb3BlcmF0aW9u
ID0gW05TQmxvY2tPcGVyYXRpb24gYmxvY2tPcGVyYXRpb25XaXRoQmxvY2s6XnsKKyAgICAgICAg
ZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAgICAgICAgICAg
IFtfZmlsZUxvYWRPcGVyYXRpb25zIHJlbW92ZU9iamVjdEZvcktleTp1cmxTY2hlbWVUYXNrXTsK
KyAgICAgICAgfSk7CisKKyAgICAgICAgTlNVUkwgKnJlcXVlc3RVUkwgPSB1cmxTY2hlbWVUYXNr
LnJlcXVlc3QuVVJMOworICAgICAgICBOU1VSTCAqZmlsZVVSTEZvclJlcXVlc3QgPSBbX2NhY2hl
ZEJ1bmRsZSBVUkxGb3JSZXNvdXJjZTpyZXF1ZXN0VVJMLnJlbGF0aXZlUGF0aCB3aXRoRXh0ZW5z
aW9uOkAiIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOworICAgICAg
ICBpZiAoIWZpbGVVUkxGb3JSZXF1ZXN0KSB7CisgICAgICAgICAgICBbdXJsU2NoZW1lVGFzayBk
aWRGYWlsV2l0aEVycm9yOltOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpOU0NvY29hRXJyb3JEb21h
aW4gY29kZTpOU1VSTEVycm9yRmlsZURvZXNOb3RFeGlzdCB1c2VySW5mbzpuaWxdXTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIE5TRXJyb3IgKnJlYWRFcnJvcjsK
KyAgICAgICAgTlNEYXRhICpmaWxlRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mVVJM
OmZpbGVVUkxGb3JSZXF1ZXN0IG9wdGlvbnM6MCBlcnJvcjomcmVhZEVycm9yXTsKKyAgICAgICAg
aWYgKCFmaWxlRGF0YSkgeworICAgICAgICAgICAgW3VybFNjaGVtZVRhc2sgZGlkRmFpbFdpdGhF
cnJvcjpbTlNFcnJvciBlcnJvcldpdGhEb21haW46TlNDb2NvYUVycm9yRG9tYWluIGNvZGU6TlNV
UkxFcnJvclJlc291cmNlVW5hdmFpbGFibGUgdXNlckluZm86QHsKKyAgICAgICAgICAgICAgICBO
U1VuZGVybHlpbmdFcnJvcktleTogcmVhZEVycm9yLAorICAgICAgICAgICAgfV1dOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgTlNTdHJpbmcgKm1pbWVUeXBlID0g
V2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6bWltZVR5cGVGb3JFeHRlbnNpb24oZmlsZVVSTEZv
clJlcXVlc3QucGF0aEV4dGVuc2lvbik7CisgICAgICAgIGlmICghbWltZVR5cGUpCisgICAgICAg
ICAgICBtaW1lVHlwZSA9IEAiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIjsKKworICAgICAgICBS
ZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4gaGVhZGVyRmllbGRzID0gYWRvcHROUyhAewor
ICAgICAgICAgICAgQCJBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4iOiBAIioiLAorICAgICAg
ICAgICAgQCJDb250ZW50LUxlbmd0aCI6IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJXp1
IiwgKHNpemVfdClmaWxlRGF0YS5sZW5ndGhdLAorICAgICAgICAgICAgQCJDb250ZW50LVR5cGUi
OiBtaW1lVHlwZSwKKyAgICAgICAgfS5tdXRhYmxlQ29weSk7CisKKyAgICAgICAgUmV0YWluUHRy
PE5TSFRUUFVSTFJlc3BvbnNlPiB1cmxSZXNwb25zZSA9IGFkb3B0TlMoW1tOU0hUVFBVUkxSZXNw
b25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dXJsU2NoZW1lVGFzay5yZXF1ZXN0LlVSTCBzdGF0dXND
b2RlOjIwMCBIVFRQVmVyc2lvbjpuaWwgaGVhZGVyRmllbGRzOmhlYWRlckZpZWxkcy5nZXQoKV0p
OworICAgICAgICBbdXJsU2NoZW1lVGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6dXJsUmVzcG9uc2Uu
Z2V0KCldOworICAgICAgICBbdXJsU2NoZW1lVGFzayBkaWRSZWNlaXZlRGF0YTpmaWxlRGF0YV07
CisgICAgICAgIFt1cmxTY2hlbWVUYXNrIGRpZEZpbmlzaF07CisgICAgfV07CisgICAgCisgICAg
W19maWxlTG9hZE9wZXJhdGlvbnMgc2V0T2JqZWN0Om9wZXJhdGlvbiBmb3JLZXk6dXJsU2NoZW1l
VGFza107CisgICAgW19vcGVyYXRpb25RdWV1ZSBhZGRPcGVyYXRpb246b3BlcmF0aW9uXTsKK30K
KworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHN0b3BVUkxTY2hlbWVUYXNr
OihpZCA8V0tVUkxTY2hlbWVUYXNrPil1cmxTY2hlbWVUYXNrCit7CisgICAgLy8gRW5zdXJlIHRo
YXQgYWxsIGJsb2NrcyB3aXRoIHBlbmRpbmcgcmVtb3ZhbHMgYXJlIGRpc3BhdGNoZWQgYmVmb3Jl
IGRvaW5nIGEgbWFwIGxvb2t1cC4KKyAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFp
bl9xdWV1ZSgpLCBeeworICAgICAgICBpZiAoTlNPcGVyYXRpb24gKm9wZXJhdGlvbiA9IFtfZmls
ZUxvYWRPcGVyYXRpb25zIG9iamVjdEZvcktleTp1cmxTY2hlbWVUYXNrXSkgeworICAgICAgICAg
ICAgW29wZXJhdGlvbiBjYW5jZWxdOworICAgICAgICAgICAgW19maWxlTG9hZE9wZXJhdGlvbnMg
cmVtb3ZlT2JqZWN0Rm9yS2V5OnVybFNjaGVtZVRhc2tdOworICAgICAgICB9CisgICAgfSk7Cit9
CisKK0BlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2Vi
Vmlldy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQppbmRl
eCA0Mjk0MGFlNDFmYjZlODQ5Mjg4ZTk3NGU0MjU3NjRjN2QwN2JlZGYxLi5jMDJlMGRmNDI2NzA2
ODNkYjU3ZjAzOTBhMWM2NGU3NzdmYTU4ZjhiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2Nv
YS9UZXN0V0tXZWJWaWV3Lm1tCkBAIC0zMyw2ICszMyw3IEBACiAKICNpbXBvcnQgPFdlYktpdC9X
S0NvbnRlbnRXb3JsZC5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Q
cml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmcuaD4K
ICNpbXBvcnQgPFdlYktpdC9XZWJLaXRQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLQWN0
aXZhdGVkRWxlbWVudEluZm8uaD4KICNpbXBvcnQgPFdlYktpdC9fV0tQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24uaD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439507</attachid>
            <date>2021-09-28 12:36:04 -0700</date>
            <delta_ts>2021-09-28 14:55:42 -0700</delta_ts>
            <desc>Patch v2.0</desc>
            <filename>bug-230646-20210928123603.patch</filename>
            <type>text/plain</type>
            <size>78645</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzMTg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTk5NzYzMzY3MzJmNjUx
MTBlM2RkMThiNDcxYWI5MThkZmNlMmY5My4uNmI1NDY5YWY5ZDkwNjM0YTZhYTAyNGZiMDAyNWE0
ZWEyMjQzYTI2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIxLTA5LTI3ICBCSiBC
dXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gYWRkIF9XS0luc3BlY3Rv
ckV4dGVuc2lvbiBTUEkgdG8gZXZhbHVhdGUgc2NyaXB0IG9uIGFuIGV4dGVuc2lvbiB0YWIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDY0NgorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vODM0MjAzMjg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGV2
aW4gUm91c3NvLgorCisgICAgICAgIEV4ZXJjaXNlZCBieSBuZXcgQVBJIHRlc3Q6IFdLSW5zcGVj
dG9yRXh0ZW5zaW9uLkNhbkV2YWx1YXRlU2NyaXB0SW5FeHRlbnNpb25UYWIKKworICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
RnJvbnRlbmRIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kSG9z
dDo6ZXZhbHVhdGVTY3JpcHRJbkV4dGVuc2lvblRhYik6CisgICAgICAgIEZpbmQgdGhlIGdsb2Jh
bCBvYmplY3QgdGhhdCBjb3JyZXNwb25kcyB0byB0aGUgcGFzc2VkLWluIDxpZnJhbWU+IGFuZAor
ICAgICAgICB0cnkgdG8gZXZhbHVhdGUgc2NyaXB0U291cmNlIGluIHRoZSBtYWluVGhyZWFkTm9y
bWFsV29ybGQoKSBvZiB0aGF0IDxpZnJhbWU+LgorCisgICAgICAgICogaHRtbC9IVE1MSUZyYW1l
RWxlbWVudC5pZGw6IEFkZCBbSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0XSBzbyB0aGF0CisgICAg
ICAgIGl0J3MgcG9zc2libGUgdG8gcGFzcyBIVE1MSUZyYW1lRWxlbWVudCB0byB0aGUgSURMIGZ1
bmN0aW9uIGFuZCBjb252ZXJ0IGl0CisgICAgICAgIHRvIHRoZSBuYXRpdmUgb2JqZWN0IChIVE1M
SUZyYW1lRWxlbWVudCYpIGZyb20gYSBKU1ZhbHVlLgorCiAyMDIxLTA5LTI4ICBZb3Vlbm4gRmFi
bGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBbQmlnU3VyIHdrMiBEZWJ1ZyBpT1Mx
NCBdIHdlYnJ0Yy92aWRlby1tdXRlLmh0bWwgaXMgYSBmbGFreSBmYWlsdXJlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L0NoYW5nZUxvZwppbmRleCAzYWU2NGE5ZGE5MTIzZDY3N2RmZWQ2MjcyNTk0ZDFlN2FmMjliZjc0
Li44MDNhZDIyYjMzMGI4NmFiMDI4YTU3NTgzZjIzMTliYzhlMzkwZDJlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NiBAQAorMjAyMS0wOS0yNyAgQkogQnVyZyAgPGJidXJn
QGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIGFkZCBfV0tJbnNwZWN0b3JFeHRlbnNpb24g
U1BJIHRvIGV2YWx1YXRlIHNjcmlwdCBvbiBhbiBleHRlbnNpb24gdGFiCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzA2NDYKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzgzNDIwMzI4PgorCisgICAgICAgIFJldmlld2VkIGJ5IERldmluIFJvdXNzby4K
KworICAgICAgICBBZGQgYSBuZXcgSW5zcGVjdG9yRnJvbnRlbmRBUEkgbWV0aG9kIHRvIGV2YWx1
YXRlIHNjcmlwdCBvbiBhbiBpZnJhbWUgd2l0aGluCisgICAgICAgIFdlYiBJbnNwZWN0b3IuIFRo
aXMgaW4gdHVybiBjYWxscyBvdXQgdG8gSW5zcGVjdG9yRnJvbnRlbmRIb3N0IHRvIGRvIHRoZSBh
Y3R1YWwgZXZhbHVhdGlvbi4KKyAgICAgICAgT3RoZXJ3aXNlLCB0aGUgQ1NQIHBvbGljeSBzZXQg
YnkgdGhlIHRhYiBjb250ZW50IG1heSBibG9jayBhbnkgc3VjaCBldmFsdWF0aW9uCisgICAgICAg
IGlmIHRoZSAnc2NyaXB0LXNyYycgZGlyZWN0aXZlIGRvZXMgbm90IGluY2x1ZGUgJ3Vuc2FmZS1l
dmFsJy4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJvbnRl
bmRBUEkuanM6CisgICAgICAgIChJbnNwZWN0b3JGcm9udGVuZEFQSS5zaG93RXh0ZW5zaW9uVGFi
KToKKyAgICAgICAgKEluc3BlY3RvckZyb250ZW5kQVBJLmV2YWx1YXRlU2NyaXB0SW5FeHRlbnNp
b25UYWIpOgorICAgICAgICBDYWxsIHRocm91Z2ggdG8gdGhlIFdlYkluc3BlY3RvckV4dGVuc2lv
bkNvbnRyb2xsZXIgbWV0aG9kLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Db250cm9sbGVy
cy9XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLmpzOgorICAgICAgICAoV0kuV2ViSW5z
cGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5wcm90b3R5cGUuZXZhbHVhdGVTY3JpcHRJbkV4dGVu
c2lvblRhYik6IEFkZGVkLgorICAgICAgICBUcnkgdG8gZ2V0IHRoZSA8aWZyYW1lPiBmb3IgYSBl
eHRlbnNpb25UYWJJRCwgYW5kIHVzZSBJbnNwZWN0b3JGcm9udGVuZEhvc3QgdG8KKyAgICAgICAg
ZXZhbHVhdGUgc2NyaXB0IGluIHRoZSBjb250ZXh0IG9mIHRoZSA8aWZyYW1lPi4gQmUgc3VyZSB0
byBjb3JyZWN0bHkgd3JhcCB0aGUgcmVzdWx0LgorCisgICAgICAgICogVXNlckludGVyZmFjZS9W
aWV3cy9XZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50Vmlldy5qczoKKyAgICAgICAgKFdJ
LldlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3KToKKyAgICAgICAgKFdJLldlYklu
c3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3LnByb3RvdHlwZS5nZXQgaWZyYW1lRWxlbWVu
dCk6CisgICAgICAgIChXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50Vmlldy5zaG91
bGRTYXZlVGFiKToKKyAgICAgICAgKFdJLldlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRW
aWV3LnByb3RvdHlwZS5pbml0aWFsTGF5b3V0KTogRGVsZXRlZC4KKyAgICAgICAgV2hpbGUgd3Jp
dGluZyB0aGUgQVBJIHRlc3QsIEkgc2F3IHRoYXQgdGhlIGZpcnN0IGV2YWx1YXRpb24gZnJlcXVl
bnRseSBmYWlsZWQKKyAgICAgICAgYmVjYXVzZSB0aGUgPGlmcmFtZT4gZGlkIG5vdCBleGlzdC4g
Q2hhbmdlIHRoaXMgY2xhc3Mgc28gdGhhdCB0aGUgPGlmcmFtZT4KKyAgICAgICAgaXMgY3JlYXRl
ZCBpbiB0aGUgY29uc3RydWN0b3IuIEFkZCBhIGdldHRlciBmb3IgdGhlIDxpZnJhbWU+IGVsZW1l
bnQuCisKKyAgICAgICAgKFdJLldlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3LnBy
b3RvdHlwZS5fZXh0ZW5zaW9uRnJhbWVEaWRMb2FkKToKKyAgICAgICAgKFdJLldlYkluc3BlY3Rv
ckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3LnByb3RvdHlwZS5fbWF5YmVEaXNwYXRjaERpZFNob3dF
eHRlbnNpb25UYWIpOgorICAgICAgICBXaGlsZSB3cml0aW5nIHRoaXMgcGF0Y2gsIGl0IGJlY2Ft
ZSBhcHBhcmVudCB0aGF0IGRpZFNob3dFeHRlbnNpb25UYWIoKSB3YXMgYmVpbmcKKyAgICAgICAg
Y2FsbGVkIHByaW9yIHRvIHRoZSBpZnJhbWUgYWN0dWFsbHkgY29tcGxldGluZyBpdHMgaW5pdGlh
bCBsb2FkLiBUaGVuLCB0aGUgdGVzdAorICAgICAgICB3b3VsZCB0cnkgdG8gZXZhbHVhdGUgc2Ny
aXB0IG9uIGFib3V0OmJsYW5rIGluc3RlYWQgb2YgdGhlIGFjdHVhbCB0YWIgY29udGVudC4KKyAg
ICAgICAgVG8gZml4IHRoaXMsIHJlcXVpcmUgdGhhdCB0aGUgPGlmcmFtZT4gYmUgYXR0YWNoZWQg
YW5kIGhhdmUgZmlyZWQgdGhlIGBvbmxvYWRgIGV2ZW50CisgICAgICAgIGJlZm9yZSB3ZSBub3Rp
ZnkgY2xpZW50cyB0aGF0IGl0IGhhcyBiZWVuICdzaG93bicuCisKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL01haW4uaHRtbDoKKyAgICAgICAgQWRqdXN0IHRoZSBkZWZhdWx0IENTUCBwb2xpY3kg
dG8gbm90IG1lbnRpb24gaW1nLXNyYy4gVGhpcyBhbGxvd3MgcG9ydHMgc3VjaCBhcworICAgICAg
ICBDb2NvYSB0byBzZXQgdGhlaXIgb3duIGltZy1zcmMgQ1NQIGRpcmVjdGl2ZS4gVGhlc2UgY2hh
bmdlcyBhcmUgbmVjZXNzYXJ5IHRvIGFsbG93CisgICAgICAgIGltYWdlcyB0byBsb2FkIGZyb20g
Y3VzdG9tIFVSTCBzY2hlbWVzLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9UYWJC
cm93c2VyLmpzOgorICAgICAgICAoV0kuVGFiQnJvd3Nlci5wcm90b3R5cGUuYmVzdFRhYkNvbnRl
bnRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3QpOgorICAgICAgICBUaGUgbmV3IEFQSSB0ZXN0IGV4
cG9zZXMgYSBidWcgaW4gdGhpcyBhc3NlcnRpb24sIG5hbWVseSwgdGhhdCBpdCBkb2VzIG5vdCBh
Y2NvdW50CisgICAgICAgIGZvciB0aGUgc2l0dWF0aW9uIHdoZXJlIGEgdGFiIGRvZXMgbm90IHdp
c2ggdG8gYmUgc2F2ZWQuIEluIHRoYXQgY2FzZSwgdGhlIGRpc3BsYXllZAorICAgICAgICBXZWJJ
bnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50VmlldyBpcyAqbm90KiBhdCBpbmRleCAwIG9mIFdJ
LlRhYkJyb3dzZXIucmVjZW50VGFiQ29udGVudFZpZXdzLgorICAgICAgICBUaGlzIGlzIGNvcnJl
Y3RseSBoYW5kbGVkIHdpdGggYSBzcGVjaWFsIGNhc2UgaW4gV0kuVGFiQnJvd3Nlci5fdGFiQmFy
SXRlbVNlbGVjdGVkLAorICAgICAgICBzbyBpbmNvcnBvcmF0ZSB0aGF0IGxvZ2ljIGludG8gdGhl
IGFzc2VydGlvbi4KKwogMjAyMS0wOS0yNyAgQkogQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbQ29jb2FdIEFkZCBTUEkgdG8gc2VsZWN0IGEgdGFiIGNyZWF0ZWQgYnkgX1dLSW5z
cGVjdG9yRXh0ZW5zaW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDYyYjY2YmM1MmRmZjdkMzNlYmYyODJhZDQ1Mzli
YzJiZjE5ZmI3ZDIuLjA1YWYwN2M4MDQ0MzY1Y2VlY2QzYjdjZDM0MTk5ZjQ2YzEyZmExNzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNTkgQEAKKzIwMjEtMDktMjcgIEJKIEJ1cmcgIDxiYnVyZ0BhcHBs
ZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBhZGQgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uIFNQSSB0
byBldmFsdWF0ZSBzY3JpcHQgb24gYW4gZXh0ZW5zaW9uIHRhYgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwNjQ2CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS84MzQyMDMyOD4KKworICAgICAgICBSZXZpZXdlZCBieSBEZXZpbiBSb3Vzc28uCisKKyAg
ICAgICAgQWRkIG5ldyB0ZXN0aW5nIEFQSSBmb3IgZXZhbHVhdGluZyBzY3JpcHQgZXhwcmVzc2lv
bnMgaW4gdGhlIGNvbnRleHQgb2YgYQorICAgICAgICB0YWIgY3JlYXRlZCBieSBfV0tJbnNwZWN0
b3JFeHRlbnNpb24uIEZvciB0aGUgbW9zdCBwYXJ0LCB0aGlzIGlzIGltcGxlbWVudGVkCisgICAg
ICAgIGluIHRoZSBzYW1lIHdheSBhcyB0aGUgLWV2YWx1YXRlU2NyaXB0OiBtZXRob2QsIGJ1dCB0
aGUgc2NyaXB0IGlzIGV2YWx1YXRlZAorICAgICAgICB3aXRoaW4gdGhlIFdlYiBJbnNwZWN0b3Ig
ZnJvbnRlbmQgaXRzZWxmIHJhdGhlciB0aGFuIGluIHRoZSBpbnNwZWN0ZWQgcGFnZS4KKworICAg
ICAgICBUbyBhdm9pZCBDU1AgaXNzdWVzLCB0aGUgYWN0dWFsIGV2YWx1YXRpb24gaXMgcGVyZm9y
bWVkIG9uIHN1YmZyYW1lcyB1c2luZyBhCisgICAgICAgIG5ldyBJbnNwZWN0b3JGcm9udGVuZEhv
c3QgbWV0aG9kIHdoaWNoIHRha2VzIGFuIDxpZnJhbWU+IGFuZCBzY3JpcHQgc291cmNlLgorCisg
ICAgICAgIEFsb25nIHRoZSB3YXksIHR3ZWFrIFdlYiBJbnNwZWN0b3IncyBDU1AgcG9saWN5IHRv
IGFsbG93IGxvYWRpbmcgaW1hZ2VzIGZyb20KKyAgICAgICAgY3VzdG9tIFVSTCBzY2hlbWVzIGFz
IHNwZWNpZmllZCB1c2luZyBfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uLiBUaGlzIGlzIHNvCisg
ICAgICAgIHRoYXQgdGFiIGljb25zIGZyb20gdGhlIHRlc3QtcmVzb3VyY2U6IHNjaGVtZSBjYW4g
YmUgbG9hZGVkIGluIHRoZSBtYWluIGZyYW1lCisgICAgICAgIG9mIFdlYiBJbnNwZWN0b3IncyBX
S1dlYlZpZXcgdW5kZXIgdGVzdGluZyBzaXR1YXRpb25zLgorCisgICAgICAgICogU291cmNlc0Nv
Y29hLnR4dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgQWRkIG5ldyBmaWxlcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSW5zcGVj
dG9yRXh0ZW5zaW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRl
bnNpb24uY3BwOgorICAgICAgICAoQVBJOjpJbnNwZWN0b3JFeHRlbnNpb246OmV2YWx1YXRlU2Ny
aXB0SW5FeHRlbnNpb25UYWIpOgorICAgICAgICBCYXNlZCBvbiBldmFsdWF0ZVNjcmlwdCgpLiBD
YWxsIHRocm91Z2ggdG8gdGhlIHNoYXJlZCBleHRlbnNpb24gY29udHJvbGxlci4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uUHJpdmF0ZUZvclRl
c3RpbmcuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0
b3JFeHRlbnNpb25UZXN0aW5nLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bX1dLSW5zcGVjdG9yRXh0
ZW5zaW9uIF9ldmFsdWF0ZVNjcmlwdDppbkV4dGVuc2lvblRhYldpdGhJZGVudGlmaWVyOmNvbXBs
ZXRpb25IYW5kbGVyOl0pOgorICAgICAgICBBZGRlZC4gQ2FsbCB0aHJvdWdoIHRvIHRoZSBzaGFy
ZWQgZXh0ZW5zaW9uIGNvbnRyb2xsZXIuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9y
L1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclBy
b3h5OjpldmFsdWF0ZVNjcmlwdEluRXh0ZW5zaW9uVGFiKToKKyAgICAgICAgQmFzZWQgb24gZXZh
bHVhdGVTY3JpcHQoKS4gU2VuZCBJUEMgdG8gdGhlIEluc3BlY3RvciBXZWJQcm9jZXNzLgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5z
cGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6ZXZhbHVhdGVTY3JpcHRJ
bkV4dGVuc2lvblRhYik6CisgICAgICAgIEJhc2VkIG9uIGV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5z
aW9uLiBDYWxsIGludG8gdGhlIGZyb250ZW5kIEFQSQorICAgICAgICB3aGljaCB3aWxsIHBlcmZv
cm0gdGhlIGFjdHVhbCBldmFsdWF0aW9uIG9uIHRoZSA8aWZyYW1lPiBjb250ZW50V2luZG93Lgor
CisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV0tJbnNwZWN0b3JSZXNvdXJjZVVS
TFNjaGVtZUhhbmRsZXIubW06CisgICAgICAgICgtW1dLSW5zcGVjdG9yUmVzb3VyY2VVUkxTY2hl
bWVIYW5kbGVyIHdlYlZpZXc6c3RhcnRVUkxTY2hlbWVUYXNrOl0pOgorICAgICAgICBTcGVjaWZ5
IHRoZSBsaXN0IG9mIGN1c3RvbSBwcm90b2NvbHMgYXMgYWxsb3dhYmxlIHNvdXJjZXMgZm9yICdp
bWctc3JjJy4KKyAgICAgICAgVGhlICdpbWctc3JjJyBkaXJlY3RpdmUgYWxzbyBpbmNsdWRlcyAn
ZmlsZTogYmxvYjogcmVzb3VyY2U6JyBhcyBhbGxvd2FibGUKKyAgICAgICAgc291cmNlcywgc2lu
Y2UgdGhpcyB3YXMgdGhlIHByZXZpb3VzIENTUCBwb2xpY3kgZGVmaW5lZCBpbiBNYWluLmh0bWwu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvR3JvdXBBY3Rpdml0aWVzL0dyb3VwQWN0aXZp
dGllc1Nlc3Npb25Ob3RpZmllci5tbToKKyAgICAgICAgRml4IFVuaWZpZWRTb3VyY2VzIGZhbGxv
dXQgYnkgaW5jbHVkaW5nIGEgbWlzc2luZyBoZWFkZXIuCisKIDIwMjEtMDktMjcgIEJKIEJ1cmcg
IDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBBZGQgU1BJIHRvIHNlbGVjdCBh
IHRhYiBjcmVhdGVkIGJ5IF9XS0luc3BlY3RvckV4dGVuc2lvbgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJRnJhbWVFbGVtZW50LmlkbAppbmRleCA5Yjc3ZmY2NjczMjdiZjRiYTM2NTE3ZGZjZWM2
NDhjMDVmNzUwYTU4Li41Zjc2MDFkODYwNzdjODIyYTlkOTIzMzQwZTc1YTdhN2M4YjA3NDA5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmlkbApAQCAtMTksNyArMTks
OCBAQAogICovCiAKIFsKLSAgICBFeHBvc2VkPVdpbmRvdworICAgIEV4cG9zZWQ9V2luZG93LAor
ICAgIEpTR2VuZXJhdGVUb05hdGl2ZU9iamVjdAogXSBpbnRlcmZhY2UgSFRNTElGcmFtZUVsZW1l
bnQgOiBIVE1MRWxlbWVudCB7CiAgICAgW1JlZmxlY3QsIENFUmVhY3Rpb25zPU5vdE5lZWRlZF0g
YXR0cmlidXRlIERPTVN0cmluZyBhbGlnbjsKICAgICBbUmVmbGVjdCwgQ0VSZWFjdGlvbnM9Tm90
TmVlZGVkXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGZyYW1lQm9yZGVyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcAppbmRleCBhZTI4YjJm
OTc3ZWZmOTRiNTM0MDE1MWUzMjM2Nzg2NDU5YWVkNzVlLi5lNTQ4OGEyMTdhYzk3YjE2MTQ1OGRh
MjcwMmEzZWI4ZGVmNDM3ZjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIkZs
b2F0UmVjdC5oIgogI2luY2x1ZGUgIkZvY3VzQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkZyYW1l
LmgiCisjaW5jbHVkZSAiSFRNTElGcmFtZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVz
dWx0LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkluc3Bl
Y3RvckRlYnVnZ2FibGVUeXBlLmgiCkBAIC02OSw2ICs3MCw3IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7Cit1c2luZyBWYWx1ZU9yRXhjZXB0aW9u
ID0gRXhwZWN0ZWQ8SlNDOjpKU1ZhbHVlLCBFeGNlcHRpb25EZXRhaWxzPjsKIAogI2lmIEVOQUJM
RShDT05URVhUX01FTlVTKQogY2xhc3MgRnJvbnRlbmRNZW51UHJvdmlkZXIgOiBwdWJsaWMgQ29u
dGV4dE1lbnVQcm92aWRlciB7CkBAIC03MDYsNiArNzA4LDI4IEBAIHZvaWQgSW5zcGVjdG9yRnJv
bnRlbmRIb3N0OjpkaWRIaWRlRXh0ZW5zaW9uVGFiKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uSUQs
IGNvbnN0CiAgICAgCiAgICAgbV9jbGllbnQtPmRpZEhpZGVFeHRlbnNpb25UYWIoZXh0ZW5zaW9u
SUQsIGV4dGVuc2lvblRhYklEKTsKIH0KKworRXhjZXB0aW9uT3I8SlNDOjpKU1ZhbHVlPiBJbnNw
ZWN0b3JGcm9udGVuZEhvc3Q6OmV2YWx1YXRlU2NyaXB0SW5FeHRlbnNpb25UYWIoSFRNTElGcmFt
ZUVsZW1lbnQmIGV4dGVuc2lvbkZyYW1lRWxlbWVudCwgY29uc3QgU3RyaW5nJiBzY3JpcHRTb3Vy
Y2UpCit7CisgICAgRnJhbWUqIGZyYW1lID0gZXh0ZW5zaW9uRnJhbWVFbGVtZW50LmNvbnRlbnRG
cmFtZSgpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZh
bGlkU3RhdGVFcnJvciwgIlVuYWJsZSB0byBmaW5kIGdsb2JhbCBvYmplY3QgZm9yIDxpZnJhbWU+
Il9zIH07CisKKyAgICBSZWY8RnJhbWU+IHByb3RlY3RlZEZyYW1lKCpmcmFtZSk7CisKKyAgICBK
U0RPTUdsb2JhbE9iamVjdCogZnJhbWVHbG9iYWxPYmplY3QgPSBmcmFtZS0+c2NyaXB0KCkuZ2xv
YmFsT2JqZWN0KG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKTsKKyAgICBpZiAoIWZyYW1lR2xvYmFs
T2JqZWN0KQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJV
bmFibGUgdG8gZmluZCBnbG9iYWwgb2JqZWN0IGZvciA8aWZyYW1lPiJfcyB9OworCisgICAgSlND
OjpTdXNwZW5kRXhjZXB0aW9uU2NvcGUgc2NvcGUoJmZyYW1lR2xvYmFsT2JqZWN0LT52bSgpKTsK
KyAgICBWYWx1ZU9yRXhjZXB0aW9uIHJlc3VsdCA9IGZyYW1lLT5zY3JpcHQoKS5ldmFsdWF0ZUlu
V29ybGQoU2NyaXB0U291cmNlQ29kZShzY3JpcHRTb3VyY2UpLCBtYWluVGhyZWFkTm9ybWFsV29y
bGQoKSk7CisgICAgCisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBJbnZhbGlkU3RhdGVFcnJvciwgcmVzdWx0LmVycm9yKCkubWVzc2FnZSB9OworCisgICAgcmV0
dXJuIFdURk1vdmUocmVzdWx0LnZhbHVlKCkpOworfQorCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BF
Q1RPUl9FWFRFTlNJT05TKQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JGcm9udGVuZEhvc3QuaAppbmRleCA2ZDJlNTZjN2FlOGZlZGZhNjU5MGYxNGIxYWRmODA4
YTJmYTAwYmY2Li4xNjIyNmFhMmJiY2RkMDVjYjY3MDI1MzFkMDMzYjgyZTg2NDA4MzhmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5oCkBA
IC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJDb250ZXh0TWVudS5oIgogI2luY2x1ZGUgIkNv
bnRleHRNZW51UHJvdmlkZXIuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtMzksNiArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBET01XcmFwcGVyV29ybGQ7CiBjbGFzcyBFdmVudDsKIGNsYXNzIEZyb250ZW5kTWVu
dVByb3ZpZGVyOworY2xhc3MgSFRNTElGcmFtZUVsZW1lbnQ7CiBjbGFzcyBJbnNwZWN0b3JGcm9u
dGVuZENsaWVudDsKIGNsYXNzIFBhZ2U7CiAKQEAgLTE0MSw2ICsxNDMsNyBAQCBwdWJsaWM6CiAj
aWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQogICAgIHZvaWQgZGlkU2hvd0V4dGVuc2lv
blRhYihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbklELCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvblRh
YklEKTsKICAgICB2b2lkIGRpZEhpZGVFeHRlbnNpb25UYWIoY29uc3QgU3RyaW5nJiBleHRlbnNp
b25JRCwgY29uc3QgU3RyaW5nJiBleHRlbnNpb25UYWJJRCk7CisgICAgRXhjZXB0aW9uT3I8SlND
OjpKU1ZhbHVlPiBldmFsdWF0ZVNjcmlwdEluRXh0ZW5zaW9uVGFiKEhUTUxJRnJhbWVFbGVtZW50
JiBleHRlbnNpb25GcmFtZSwgY29uc3QgU3RyaW5nJiBzY3JpcHRTb3VyY2UpOwogI2VuZGlmCiAK
IHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RnJvbnRlbmRIb3N0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZEhvc3QuaWRsCmluZGV4IDk3ZjgwNmYyYWMwZjMxYjg5NmU1OTcxMTk3OWJkZmFmYzdmOGVh
MjkuLjMyZDk3NDJiNDdjNjc5YjdhZjM3MTVkZWUzOTE5ZTY2NzhlYzA3ZjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaWRsCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNy0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBNYXR0IExpbGVrIDx3
ZWJraXRAbWF0dGxpbGVrLmNvbT4KICAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKQEAgLTEwMCw2ICsxMDAsNyBAQAogICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBib29sZWFuIHN1cHBvcnRzV2ViRXh0ZW5zaW9uczsKICAgICBbQ29uZGl0aW9u
YWw9SU5TUEVDVE9SX0VYVEVOU0lPTlNdIHVuZGVmaW5lZCBkaWRTaG93RXh0ZW5zaW9uVGFiKERP
TVN0cmluZyBleHRlbnNpb25JRCwgRE9NU3RyaW5nIGV4dGVuc2lvblRhYklEKTsKICAgICBbQ29u
ZGl0aW9uYWw9SU5TUEVDVE9SX0VYVEVOU0lPTlNdIHVuZGVmaW5lZCBkaWRIaWRlRXh0ZW5zaW9u
VGFiKERPTVN0cmluZyBleHRlbnNpb25JRCwgRE9NU3RyaW5nIGV4dGVuc2lvblRhYklEKTsKKyAg
ICBbQ29uZGl0aW9uYWw9SU5TUEVDVE9SX0VYVEVOU0lPTlNdIGFueSBldmFsdWF0ZVNjcmlwdElu
RXh0ZW5zaW9uVGFiKEhUTUxJRnJhbWVFbGVtZW50IGV4dGVuc2lvbkZyYW1lLCBET01TdHJpbmcg
c2NyaXB0U291cmNlKTsKIH07CiAKIGRpY3Rpb25hcnkgQ29udGV4dE1lbnVJdGVtIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1dl
Ykluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Db250cm9sbGVycy9XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVy
LmpzCmluZGV4IGVkYjA5YzA0YzcwYWU5NjViM2MxNzY1NWNhMTIwODE0ZjhhMjA0YTMuLjU3NWI0
MDgyN2M1MTdkMmFhZTc1NjY5ZDAyNWUyOTliODk3YzU4ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1dlYkluc3BlY3RvckV4dGVu
c2lvbkNvbnRyb2xsZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvQ29udHJvbGxlcnMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5qcwpAQCAtMTcw
LDYgKzE3MCwyNyBAQCBXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyID0gY2xhc3Mg
V2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlciBleHRlbgogICAgICAgICAgICAgcmV0dXJu
IFdJLldlYkluc3BlY3RvckV4dGVuc2lvbi5FcnJvckNvZGUuSW50ZXJuYWxFcnJvcjsKICAgICAg
ICAgfQogICAgIH0KKworICAgIGV2YWx1YXRlU2NyaXB0SW5FeHRlbnNpb25UYWIoZXh0ZW5zaW9u
VGFiSUQsIHNjcmlwdFNvdXJjZSkKKyAgICB7CisgICAgICAgIGxldCB0YWJDb250ZW50VmlldyA9
IHRoaXMuX2V4dGVuc2lvblRhYkNvbnRlbnRWaWV3Rm9yRXh0ZW5zaW9uVGFiSURNYXAuZ2V0KGV4
dGVuc2lvblRhYklEKTsKKyAgICAgICAgaWYgKCF0YWJDb250ZW50VmlldykgeworICAgICAgICAg
ICAgV0kucmVwb3J0SW50ZXJuYWxFcnJvcigiVW5hYmxlIHRvIGV2YWx1YXRlIHdpdGggdW5rbm93
biBleHRlbnNpb25UYWJJRDogIiArIGV4dGVuc2lvblRhYklEKTsKKyAgICAgICAgICAgIHJldHVy
biBXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb24uRXJyb3JDb2RlLkludmFsaWRSZXF1ZXN0OworICAg
ICAgICB9CisKKyAgICAgICAgbGV0IGlmcmFtZSA9IHRhYkNvbnRlbnRWaWV3LmlmcmFtZUVsZW1l
bnQ7CisgICAgICAgIGlmICghKGlmcmFtZSBpbnN0YW5jZW9mIEhUTUxJRnJhbWVFbGVtZW50KSkg
eworICAgICAgICAgICAgV0kucmVwb3J0SW50ZXJuYWxFcnJvcigiVW5hYmxlIHRvIGV2YWx1YXRl
IHdpdGhvdXQgYW4gPGlmcmFtZT4gZm9yIGV4dGVuc2lvblRhYklEOiAiICsgZXh0ZW5zaW9uVGFi
SUQpOworICAgICAgICAgICAgcmV0dXJuIFdJLldlYkluc3BlY3RvckV4dGVuc2lvbi5FcnJvckNv
ZGUuSW52YWxpZFJlcXVlc3Q7CisgICAgICAgIH0KKworICAgICAgICB0cnkgeworICAgICAgICAg
ICAgcmV0dXJuIHtyZXN1bHQ6IEluc3BlY3RvckZyb250ZW5kSG9zdC5ldmFsdWF0ZVNjcmlwdElu
RXh0ZW5zaW9uVGFiKGlmcmFtZSwgc2NyaXB0U291cmNlKX07CisgICAgICAgIH0gY2F0Y2ggKGVy
cm9yKSB7CisgICAgICAgICAgICByZXR1cm4ge2Vycm9yOiBlcnJvci5tZXNzYWdlfTsKKyAgICAg
ICAgfQorICAgIH0KIH07CiAKIFdJLldlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIuRXZl
bnQgPSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9N
YWluLmh0bWwgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwK
aW5kZXggYzQwMjVjZmYzNjc3YmM3NTZjYjc3ZmE1NTU4OGIzNDU1ZTc1NmM0Yi4uY2ZjZTE4ZDgz
YTk1ODAwNTI4MjM3MGE1NTRkZmE2YzZjODJhMjkzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbApAQCAtMjcsMTAgKzI3LDEwIEBACiA8aGVhZD4K
ICAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsg
Y2hhcnNldD11dGYtOCI+CiAgICAgPCEtLQotICAgICAgICBOb3RlIHRoYXQgc29tZSBXZWJLaXQg
cG9ydHMgbWF5IHNldCBjdXN0b20gJ2ZyYW1lLXNyYycgYW5kICdjb25uZWN0LXNyYycgZGlyZWN0
aXZlcyB2aWEgSFRUUCByZXNwb25zZSBoZWFkZXIuCisgICAgICAgIE5vdGUgdGhhdCBzb21lIFdl
YktpdCBwb3J0cyBtYXkgc2V0IGN1c3RvbSAnZnJhbWUtc3JjJywgJ2ltZy1zcmMnLCBhbmQgJ2Nv
bm5lY3Qtc3JjJyBkaXJlY3RpdmVzIHZpYSBIVFRQIHJlc3BvbnNlIGhlYWRlci4KICAgICAgICAg
VGhlIGNvbWJpbmVkIENTUCBwb2xpY3kgcmVxdWlyZXMgYSByZXF1ZXN0IHRvIGJlIGFsbG93ZWQg
YnkgYm90aCBkaXJlY3RpdmUgbGlzdHMsIHNvICdkZWZhdWx0LXNyYycgaXMgb21pdHRlZC4KICAg
ICAtLT4KLSAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVNlY3VyaXR5LVBvbGljeSIgY29u
dGVudD0iaW1nLXNyYyAqIGZpbGU6IGJsb2I6IHJlc291cmNlOjsgbWVkaWEtc3JjICogYmxvYjo7
IGZvbnQtc3JjICogYmxvYjo7IHN0eWxlLXNyYyAnc2VsZicgJ3Vuc2FmZS1pbmxpbmUnOyBzY3Jp
cHQtc3JjICdzZWxmJyAndW5zYWZlLWlubGluZScgZGF0YTo7IG9iamVjdC1zcmMgJ25vbmUnIj4K
KyAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVNlY3VyaXR5LVBvbGljeSIgY29udGVudD0i
bWVkaWEtc3JjICogYmxvYjo7IGZvbnQtc3JjICogYmxvYjo7IHN0eWxlLXNyYyAnc2VsZicgJ3Vu
c2FmZS1pbmxpbmUnOyBzY3JpcHQtc3JjICdzZWxmJyAndW5zYWZlLWlubGluZScgZGF0YTo7IG9i
amVjdC1zcmMgJ25vbmUnIj4KIAogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iRXh0
ZXJuYWwvQ29kZU1pcnJvci9jb2RlbWlycm9yLmNzcyI+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3RvckZyb250ZW5kQVBJ
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVj
dG9yRnJvbnRlbmRBUEkuanMKaW5kZXggNDI4YzU0MzNmNmM0ZGNhMDg4MDkyNjhlMjA2YzEzODZm
NThmN2JiNS4uM2ExYzJkMDRlZjhiYzVjMjYxZjQzNDRiZDQwMjdkMzE1MjBhZDUzNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVj
dG9yRnJvbnRlbmRBUEkuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanMKQEAgLTIzNSw1ICsyMzUsMTMgQEAg
SW5zcGVjdG9yRnJvbnRlbmRBUEkgPSB7CiAgICAgc2hvd0V4dGVuc2lvblRhYihleHRlbnNpb25U
YWJJRCkKICAgICB7CiAgICAgICAgIHJldHVybiBXSS5zaGFyZWRBcHAuZXh0ZW5zaW9uQ29udHJv
bGxlci5zaG93RXh0ZW5zaW9uVGFiKGV4dGVuc2lvblRhYklEKTsKKyAgICB9LAorCisgICAgLy8g
UmV0dXJucyBhIHN0cmluZyAoV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uLkVycm9yQ29kZSkgaWYg
YW4gZXJyb3Igb2NjdXJyZWQgdGhhdCBwcmV2ZW50ZWQgZXZhbHVhdGlvbi4KKyAgICAvLyBSZXR1
cm5zIGFuIG9iamVjdCB3aXRoIGEgJ3Jlc3VsdCcga2V5IGFuZCB2YWx1ZSB0aGF0IGlzIHRoZSBy
ZXN1bHQgb2YgdGhlIHNjcmlwdCBldmFsdWF0aW9uLgorICAgIC8vIFJldHVybnMgYW4gb2JqZWN0
IHdpdGggYW4gJ2Vycm9yJyBrZXkgYW5kIHZhbHVlIGluIHRoZSBjYXNlIHRoYXQgYW4gZXhjZXB0
aW9uIHdhcyB0aHJvd24uCisgICAgZXZhbHVhdGVTY3JpcHRJbkV4dGVuc2lvblRhYihleHRlbnNp
b25UYWJJRCwgc2NyaXB0U291cmNlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFdJLnNoYXJlZEFw
cC5leHRlbnNpb25Db250cm9sbGVyLmV2YWx1YXRlU2NyaXB0SW5FeHRlbnNpb25UYWIoZXh0ZW5z
aW9uVGFiSUQsIHNjcmlwdFNvdXJjZSk7CiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkJyb3dzZXIuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UYWJCcm93c2VyLmpzCmluZGV4IGRj
OWFjYzY2NTgwZGJkOGFiZDBiYTk0NTYyYzBkMWNkMWJjNjMwMTQuLmFlYTI1MmIxNmZjMmIxZDll
NTVmNDFjZDMzODY3NWI3MjQwOWZjNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkJyb3dzZXIuanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGFiQnJvd3Nlci5qcwpAQCAtMTIwLDcgKzEyMCw4
IEBAIFdJLlRhYkJyb3dzZXIgPSBjbGFzcyBUYWJCcm93c2VyIGV4dGVuZHMgV0kuVmlldwogCiAg
ICAgYmVzdFRhYkNvbnRlbnRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3QocmVwcmVzZW50ZWRPYmpl
Y3QsIG9wdGlvbnMgPSB7fSkKICAgICB7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLnNl
bGVjdGVkVGFiQ29udGVudFZpZXcgfHwgdGhpcy5zZWxlY3RlZFRhYkNvbnRlbnRWaWV3ID09PSB0
aGlzLl9yZWNlbnRUYWJDb250ZW50Vmlld3NbMF0pOworICAgICAgICBsZXQgc2hvdWxkU2F2ZVRh
YiA9IHRoaXMuc2VsZWN0ZWRUYWJDb250ZW50Vmlldz8uY29uc3RydWN0b3Iuc2hvdWxkU2F2ZVRh
YigpIHx8IHRoaXMuc2VsZWN0ZWRUYWJDb250ZW50Vmlldz8uY29uc3RydWN0b3Iuc2hvdWxkUGlu
VGFiKCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLnNlbGVjdGVkVGFiQ29udGVudFZp
ZXcgfHwgdGhpcy5zZWxlY3RlZFRhYkNvbnRlbnRWaWV3ID09PSB0aGlzLl9yZWNlbnRUYWJDb250
ZW50Vmlld3NbMF0gfHwgIXNob3VsZFNhdmVUYWIpOwogCiAgICAgICAgIGxldCB0YWJDb250ZW50
VmlldyA9IHRoaXMuX3JlY2VudFRhYkNvbnRlbnRWaWV3cy5maW5kKCh0YWJDb250ZW50Vmlldykg
PT4gdGFiQ29udGVudFZpZXcudHlwZSA9PT0gb3B0aW9ucy5wcmVmZXJyZWRUYWJUeXBlKTsKICAg
ICAgICAgaWYgKHRhYkNvbnRlbnRWaWV3ICYmIHRhYkNvbnRlbnRWaWV3LmNhblNob3dSZXByZXNl
bnRlZE9iamVjdChyZXByZXNlbnRlZE9iamVjdCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9XZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJDb250
ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1dl
Ykluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3LmpzCmluZGV4IDE5MjU1NjdlZmYzYmRi
Y2RiMjA4MmQ2ODRiOTNkNGJhZGZlMGJiMjguLmY3MjA5ODg3YjJiMGJjZGJkMzIwNDM5Y2FmMzA4
N2E4ZWIyMGQwZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1dlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3LmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1dlYkluc3BlY3RvckV4dGVu
c2lvblRhYkNvbnRlbnRWaWV3LmpzCkBAIC0zOSwxMSArMzksMjEgQEAgV0kuV2ViSW5zcGVjdG9y
RXh0ZW5zaW9uVGFiQ29udGVudFZpZXcgPSBjbGFzcyBXZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJD
b250ZW50VmkKICAgICAgICAgdGhpcy5fZXh0ZW5zaW9uVGFiSUQgPSBleHRlbnNpb25UYWJJRDsK
ICAgICAgICAgdGhpcy5fdGFiSW5mbyA9IHRhYkluZm87CiAgICAgICAgIHRoaXMuX3NvdXJjZVVS
TCA9IHNvdXJjZVVSTDsKKworICAgICAgICAvLyBGSVhNRTogdGhlIDxpZnJhbWU+J3MgZG9jdW1l
bnQgaXMgaW1wbGljaXRseSByZWxvYWRlZCB3aGVuIHRoaXMKKyAgICAgICAgLy8gY29udGVudCB2
aWV3J3MgZWxlbWVudCBpcyBkZXRhY2hlZCBhbmQgbGF0ZXIgcmUtYXR0YWNoZWQgdG8gdGhlIERP
TS4KKyAgICAgICAgLy8gVGhpcyBpcyBhIGJ1ZyBhbmQgd2lsbCBiZSBhZGRyZXNzZWQgaW4gPGh0
dHBzOi8vd2Via2l0Lm9yZy9iLzIzMDc1OD4uCisgICAgICAgIHRoaXMuX2lmcmFtZUVsZW1lbnQg
PSB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1l
IikpOworICAgICAgICB0aGlzLl9pZnJhbWVFbGVtZW50Lm9ubG9hZCA9ICgpID0+IHRoaXMuX2V4
dGVuc2lvbkZyYW1lRGlkTG9hZCgpOworICAgICAgICB0aGlzLl9pZnJhbWVFbGVtZW50LnNyYyA9
IHRoaXMuX3NvdXJjZVVSTDsKKworICAgICAgICB0aGlzLl9mcmFtZUNvbnRlbnREaWRMb2FkID0g
ZmFsc2U7CiAgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgZXh0ZW5zaW9uVGFiSUQo
KSB7IHJldHVybiB0aGlzLl9leHRlbnNpb25UYWJJRDsgfQorICAgIGdldCBpZnJhbWVFbGVtZW50
KCkgeyByZXR1cm4gdGhpcy5faWZyYW1lRWxlbWVudDsgfQogCiAgICAgZ2V0IHR5cGUoKQogICAg
IHsKQEAgLTU5LDggKzY5LDcgQEAgV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVudFZp
ZXcgPSBjbGFzcyBXZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50VmkKICAgICB7CiAgICAg
ICAgIHN1cGVyLmF0dGFjaGVkKCk7CiAKLSAgICAgICAgaWYgKEluc3BlY3RvckZyb250ZW5kSG9z
dC5zdXBwb3J0c1dlYkV4dGVuc2lvbnMpCi0gICAgICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEhv
c3QuZGlkU2hvd0V4dGVuc2lvblRhYih0aGlzLl9leHRlbnNpb24uZXh0ZW5zaW9uSUQsIHRoaXMu
X2V4dGVuc2lvblRhYklEKTsKKyAgICAgICAgdGhpcy5fbWF5YmVEaXNwYXRjaERpZFNob3dFeHRl
bnNpb25UYWIoKTsKICAgICB9CiAKICAgICBkZXRhY2hlZCgpCkBAIC03OCwxNCArODcsMjEgQEAg
V0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVudFZpZXcgPSBjbGFzcyBXZWJJbnNwZWN0
b3JFeHRlbnNpb25UYWJDb250ZW50VmkKIAogICAgIHN0YXRpYyBzaG91bGRTYXZlVGFiKCkgeyBy
ZXR1cm4gZmFsc2U7IH0KIAotICAgIC8vIFByb3RlY3RlZAorICAgIC8vIFByaXZhdGUKIAotICAg
IGluaXRpYWxMYXlvdXQoKQorICAgIF9leHRlbnNpb25GcmFtZURpZExvYWQoKQogICAgIHsKLSAg
ICAgICAgc3VwZXIuaW5pdGlhbExheW91dCgpOworICAgICAgICB0aGlzLl9mcmFtZUNvbnRlbnRE
aWRMb2FkID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5fbWF5YmVEaXNwYXRjaERpZFNob3dFeHRlbnNp
b25UYWIoKTsKKyAgICB9CiAKLSAgICAgICAgbGV0IGlmcmFtZUVsZW1lbnQgPSB0aGlzLmVsZW1l
bnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIikpOwotICAgICAg
ICBpZnJhbWVFbGVtZW50LnNyYyA9IHRoaXMuX3NvdXJjZVVSTDsKKyAgICBfbWF5YmVEaXNwYXRj
aERpZFNob3dFeHRlbnNpb25UYWIoKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9mcmFtZUNv
bnRlbnREaWRMb2FkIHx8ICF0aGlzLmVsZW1lbnQuaXNDb25uZWN0ZWQpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgaWYgKEluc3BlY3RvckZyb250ZW5kSG9zdC5zdXBwb3J0c1dlYkV4
dGVuc2lvbnMpCisgICAgICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QuZGlkU2hvd0V4dGVu
c2lvblRhYih0aGlzLl9leHRlbnNpb24uZXh0ZW5zaW9uSUQsIHRoaXMuX2V4dGVuc2lvblRhYklE
KTsKICAgICB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50
eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMTFlNzI5Njg0ZTRhMmFk
ZjBiNWNiODkzYWQ2NzkxZDkwMDU4MjYwNS4uNWU2YjUyYzEyMTE0NmM2ZDUzYWNlNjY1ZDY1YzI1
NmZkZTVlOTU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0Cisr
KyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtMjg4LDYgKzI4OCw3IEBAIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5tbQogVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JUZXN0aW5nLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL19X
S0luc3BlY3RvckRlYnVnZ2FibGVJbmZvLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3Bl
Y3RvckV4dGVuc2lvbi5tbQorVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNp
b25UZXN0aW5nLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvcldpbmRvdy5tbQog
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnRlcm5hbERlYnVnRmVhdHVyZS5tbQogVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tMaW5rSWNvblBhcmFtZXRlcnMubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckV4dGVuc2lvbi5jcHAKaW5kZXggODYyNjcy
MDg4ZWIyOTcyZjZkNTVlMjM2Y2U3ZjMwOWM3MmQ1ZDE3NS4uODcxYzI3M2VhZjExZGViOTFiOWQw
MmJmNDUwZjBkMTBlYmM4Mzc0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSUluc3BlY3RvckV4dGVuc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUluc3BlY3RvckV4dGVuc2lvbi5jcHAKQEAgLTgxLDYgKzgxLDE4IEBAIHZvaWQg
SW5zcGVjdG9yRXh0ZW5zaW9uOjpyZWxvYWRJZ25vcmluZ0NhY2hlKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8Ym9vbD4mIGlnbm9yZUNhCiAgICAgbV9leHRlbnNpb25Db250cm9sbGVyUHJveHktPnJlbG9h
ZEZvckV4dGVuc2lvbihtX2lkZW50aWZpZXIsIGlnbm9yZUNhY2hlLCB1c2VyQWdlbnQsIGluamVj
dGVkU2NyaXB0LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKKy8vIEZvciB0ZXN0
aW5nLgorCit2b2lkIEluc3BlY3RvckV4dGVuc2lvbjo6ZXZhbHVhdGVTY3JpcHRJbkV4dGVuc2lv
blRhYihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvblRhYklEJiBleHRlbnNpb25UYWJJRCwgY29u
c3QgV1RGOjpTdHJpbmcmIHNjcmlwdFNvdXJjZSwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXZhbHVhdGlvblJlc3VsdCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgaWYgKCFtX2V4dGVuc2lvbkNvbnRyb2xsZXJQcm94eSkgeworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9y
OjpDb250ZXh0RGVzdHJveWVkKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2V4
dGVuc2lvbkNvbnRyb2xsZXJQcm94eS0+ZXZhbHVhdGVTY3JpcHRJbkV4dGVuc2lvblRhYihleHRl
bnNpb25UYWJJRCwgc2NyaXB0U291cmNlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIEFQSQogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9FWFRF
TlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluc3Bl
Y3RvckV4dGVuc2lvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluc3BlY3Rv
ckV4dGVuc2lvbi5oCmluZGV4IDVlZTA5NmRjMjFmNjIwMjY3YzdmMDQ4OTYwM2YxMjlhZDc2NThm
ZTYuLmJjM2Y4ODAxNjMxN2QwYTNiNTljMjZiNWUwZjI1NjlhZTFhMDA3OTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmgKQEAg
LTQ5LDcgKzQ5LDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY3JlYXRlVGFiKGNvbnN0IFdURjo6
U3RyaW5nJiB0YWJOYW1lLCBjb25zdCBXVEY6OlVSTCYgdGFiSWNvblVSTCwgY29uc3QgV1RGOjpV
UkwmIHNvdXJjZVVSTCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPEluc3Bl
Y3Rvcjo6RXh0ZW5zaW9uVGFiSUQsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+KT4mJik7CiAg
ICAgdm9pZCBldmFsdWF0ZVNjcmlwdChjb25zdCBXVEY6OlN0cmluZyYgc2NyaXB0U291cmNlLCBj
b25zdCBzdGQ6Om9wdGlvbmFsPFdURjo6VVJMPiYgZnJhbWVVUkwsIGNvbnN0IHN0ZDo6b3B0aW9u
YWw8V1RGOjpVUkw+JiBjb250ZXh0U2VjdXJpdHlPcmlnaW4sIGNvbnN0IHN0ZDo6b3B0aW9uYWw8
Ym9vbD4mIHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0LCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZv
aWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0KT4mJik7Ci0gICAgdm9pZCBy
ZWxvYWRJZ25vcmluZ0NhY2hlKGNvbnN0IHN0ZDo6b3B0aW9uYWw8Ym9vbD4mIGlnbm9yZUNhY2hl
LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdURjo6U3RyaW5nPiYgdXNlckFnZW50LCBjb25zdCBzdGQ6
Om9wdGlvbmFsPFdURjo6U3RyaW5nPiYgaW5qZWN0ZWRTY3JpcHQsICBXVEY6OkNvbXBsZXRpb25I
YW5kbGVyPHZvaWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0KT4mJik7Cisg
ICAgdm9pZCByZWxvYWRJZ25vcmluZ0NhY2hlKGNvbnN0IHN0ZDo6b3B0aW9uYWw8Ym9vbD4mIGln
bm9yZUNhY2hlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdURjo6U3RyaW5nPiYgdXNlckFnZW50LCBj
b25zdCBzdGQ6Om9wdGlvbmFsPFdURjo6U3RyaW5nPiYgaW5qZWN0ZWRTY3JpcHQsIFdURjo6Q29t
cGxldGlvbkhhbmRsZXI8dm9pZChJbnNwZWN0b3I6OkV4dGVuc2lvbkV2YWx1YXRpb25SZXN1bHQp
PiYmKTsKKworICAgIC8vIEZvciB0ZXN0aW5nLgorICAgIHZvaWQgZXZhbHVhdGVTY3JpcHRJbkV4
dGVuc2lvblRhYihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvblRhYklEJiwgY29uc3QgV1RGOjpT
dHJpbmcmIHNjcmlwdFNvdXJjZSwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEluc3BlY3Rv
cjo6RXh0ZW5zaW9uRXZhbHVhdGlvblJlc3VsdCk+JiYpOwogCiAgICAgSW5zcGVjdG9yRXh0ZW5z
aW9uQ2xpZW50KiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudC5nZXQoKTsgfQogICAg
IHZvaWQgc2V0Q2xpZW50KFVuaXF1ZVJlZjxJbnNwZWN0b3JFeHRlbnNpb25DbGllbnQ+JiYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rv
ckV4dGVuc2lvblByaXZhdGVGb3JUZXN0aW5nLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uUHJpdmF0ZUZvclRlc3RpbmcuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44ZmM3ZmY3M2MzMmNkOWNjMjAzMWZkMTdmMmI3YTk2NTQyZmQxYjBjCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4
dGVuc2lvblByaXZhdGVGb3JUZXN0aW5nLmgKQEAgLTAsMCArMSwzNCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbXBvcnQgIl9XS0luc3BlY3RvckV4dGVuc2lvbi5oIgorCitOU19BU1NVTUVfTk9OTlVMTF9C
RUdJTgorCitAaW50ZXJmYWNlIF9XS0luc3BlY3RvckV4dGVuc2lvbiAoV0tUZXN0aW5nKQorLSAo
dm9pZClfZXZhbHVhdGVTY3JpcHQ6KE5TU3RyaW5nICopc2NyaXB0U291cmNlIGluRXh0ZW5zaW9u
VGFiV2l0aElkZW50aWZpZXI6KE5TU3RyaW5nICopZXh0ZW5zaW9uVGFiSWRlbnRpZmllciBjb21w
bGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0Vycm9yICogX051bGxhYmxlLCBOU0RpY3Rpb25hcnkg
KiBfTnVsbGFibGUgcmVzdWx0KSljb21wbGV0aW9uSGFuZGxlcjsKK0BlbmQKKworTlNfQVNTVU1F
X05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uVGVzdGluZy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb25UZXN0aW5nLm1tCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjQxYzZhNmYwOGFhMGI5YTY1OGE4OWJjMGY3YzNhYzAzMTViOGQ4OGUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5z
aW9uVGVzdGluZy5tbQpAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29u
ZmlnLmgiCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisKKyNpbXBvcnQgIkFQ
SVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2ltcG9ydCAiSW5zcGVjdG9yRXh0ZW5zaW9uVHlw
ZXMuaCIKKyNpbXBvcnQgIldLRXJyb3IuaCIKKyNpbXBvcnQgIldLV2ViVmlld0ludGVybmFsLmgi
CisjaW1wb3J0ICJfV0tJbnNwZWN0b3JFeHRlbnNpb25JbnRlcm5hbC5oIgorI2ltcG9ydCAiX1dL
SW5zcGVjdG9yRXh0ZW5zaW9uUHJpdmF0ZUZvclRlc3RpbmcuaCIKKyNpbXBvcnQgPFdlYkNvcmUv
RXhjZXB0aW9uRGV0YWlscy5oPgorI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5o
PgorI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CisKKy8vIFRoaXMgZmlsZSBleGlzdHMgdG8gY2Vu
dHJhbGl6ZSBhbGwgZnJhZ2lsZSBjb2RlIHRoYXQgaXMgdXNlZCBieSBfV0tJbnNwZWN0b3JFeHRl
bnNpb24gQVBJIHRlc3RzLgorCitAaW1wbGVtZW50YXRpb24gX1dLSW5zcGVjdG9yRXh0ZW5zaW9u
IChXS1Rlc3RpbmcpCisKKy0gKHZvaWQpX2V2YWx1YXRlU2NyaXB0OihOU1N0cmluZyAqKXNjcmlw
dFNvdXJjZSBpbkV4dGVuc2lvblRhYldpdGhJZGVudGlmaWVyOihOU1N0cmluZyAqKWV4dGVuc2lv
blRhYklkZW50aWZpZXIgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNFcnJvciAqLCBOU0Rp
Y3Rpb25hcnkgKikpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBfZXh0ZW5zaW9uLT5ldmFsdWF0
ZVNjcmlwdEluRXh0ZW5zaW9uVGFiKGV4dGVuc2lvblRhYklkZW50aWZpZXIsIHNjcmlwdFNvdXJj
ZSwgW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIGNhcHR1cmVkQmxvY2sgPSBtYWtl
QmxvY2tQdHIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpXSAoSW5zcGVjdG9yOjpFeHRlbnNp
b25FdmFsdWF0aW9uUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCFyZXN1
bHQpIHsKKyAgICAgICAgICAgIGNhcHR1cmVkQmxvY2soW05TRXJyb3IgZXJyb3JXaXRoRG9tYWlu
OldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpAeyBOU0xvY2FsaXpl
ZEZhaWx1cmVSZWFzb25FcnJvcktleTogSW5zcGVjdG9yOjpleHRlbnNpb25FcnJvclRvU3RyaW5n
KHJlc3VsdC5lcnJvcigpKSB9XSwgbmlsKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgYXV0byB2YWx1ZU9yRXhjZXB0aW9uID0gcmVzdWx0LnZhbHVl
KCk7CisgICAgICAgIGlmICghdmFsdWVPckV4Y2VwdGlvbikgeworICAgICAgICAgICAgY2FwdHVy
ZWRCbG9jayhuc0Vycm9yRnJvbUV4Y2VwdGlvbkRldGFpbHModmFsdWVPckV4Y2VwdGlvbi5lcnJv
cigpKS5nZXQoKSwgbmlsKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAg
ICAgIGlkIGJvZHkgPSBBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUodmFs
dWVPckV4Y2VwdGlvbi52YWx1ZSgpLT5pbnRlcm5hbFJlcHJlc2VudGF0aW9uKCksIDApOworICAg
ICAgICBjYXB0dXJlZEJsb2NrKG5pbCwgYm9keSk7CisgICAgfSk7Cit9CisKK0BlbmQKKworI2Vu
ZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL0dyb3VwQWN0aXZpdGllcy9Hcm91cEFjdGl2aXRpZXNTZXNz
aW9uTm90aWZpZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Hcm91cEFjdGl2
aXRpZXMvR3JvdXBBY3Rpdml0aWVzU2Vzc2lvbk5vdGlmaWVyLm1tCmluZGV4IDU1MjdlYjg1NTg3
ZmZiNDE5ZDUyZjYzZjU4MDE0YzAyNjRjNzQ2YzMuLjY5NzZiYmI0NjgyOGEzY2M5MmExNTVlNWI5
Y2RkOWM2MzAyMTI5NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L0dyb3VwQWN0aXZpdGllcy9Hcm91cEFjdGl2aXRpZXNTZXNzaW9uTm90aWZpZXIubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvR3JvdXBBY3Rpdml0aWVzL0dyb3VwQWN0aXZp
dGllc1Nlc3Npb25Ob3RpZmllci5tbQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKE1F
RElBX1NFU1NJT05fQ09PUkRJTkFUT1IpICYmIEhBVkUoR1JPVVBfQUNUSVZJVElFUykKIAorI2lt
cG9ydCAiR3JvdXBBY3Rpdml0aWVzQ29vcmRpbmF0b3IuaCIKICNpbXBvcnQgIldLR3JvdXBTZXNz
aW9uLmgiCiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxl
clByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5jcHAKaW5kZXggNzQyYWEyN2IxZWFjMzU4YWYw
NWI0NzYxMjQ0ZWMyMWZkMzAwYTMyZC4uOWFjMzVjYTM1Mzk1ZTlhNDU5ZmE4ZGJlMzViMzcyYjU5
ZjhhMzExMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVy
UHJveHkuY3BwCkBAIC0xOTksNiArMTk5LDMxIEBAIHZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyUHJveHk6OnNob3dFeHRlbnNpb25UYWIoY29uc3QgSW5zcGVjdG9yOjpFCiAg
ICAgfSk7CiB9CiAKKy8vIEFQSSBmb3IgdGVzdGluZy4KKwordm9pZCBXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6ZXZhbHVhdGVTY3JpcHRJbkV4dGVuc2lvblRhYihjb25z
dCBJbnNwZWN0b3I6OkV4dGVuc2lvblRhYklEJiBleHRlbnNpb25UYWJJRCwgY29uc3QgU3RyaW5n
JiBzY3JpcHRTb3VyY2UsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJbnNwZWN0b3I6OkV4
dGVuc2lvbkV2YWx1YXRpb25SZXN1bHQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIHdo
ZW5Gcm9udGVuZEhhc0xvYWRlZChbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgZXh0ZW5z
aW9uVGFiSUQsIHNjcmlwdFNvdXJjZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMgfHwgIXdl
YWtUaGlzLT5tX2luc3BlY3RvclBhZ2UpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KG1ha2VVbmV4cGVjdGVkKEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0cm95
ZWQpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHdlYWtUaGlz
LT5tX2luc3BlY3RvclBhZ2UtPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpFdmFsdWF0ZVNjcmlwdEluRXh0ZW5zaW9uVGFiIHtl
eHRlbnNpb25UYWJJRCwgc2NyaXB0U291cmNlfSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVy
ZW5jZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiYgZGV0
YWlscywgY29uc3Qgc3RkOjpvcHRpb25hbDxJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPiYgZXJy
b3IpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKGVycm9yKSB7CisgICAgICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoZXJyb3IudmFsdWUoKSkpOworICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGRldGFp
bHMpIHsKKyAgICAgICAgICAgICAgICBFeHBlY3RlZDxSZWZQdHI8QVBJOjpTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+LCBXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiByZXR1cm5lZFZhbHVlID0gbWFr
ZVVuZXhwZWN0ZWQoZGV0YWlscy52YWx1ZSgpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gY29t
cGxldGlvbkhhbmRsZXIoeyByZXR1cm5lZFZhbHVlIH0pOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IHsgQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OmFkb3B0KHsgZGF0YVJlZmVyZW5jZS5kYXRhKCksIGRhdGFSZWZlcmVuY2Uuc2l6ZSgpIH0pLnB0
cigpIH0gfSk7CisgICAgICAgIH0pOworICAgIH0pOworfQogCiAvLyBXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXJQcm94eSBJUEMgbWVzc2FnZXMuCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmgKaW5kZXggY2EyM2VjN2FmYjJlMWViY2Y5
ODU3NGZlNzllOTQwZDg0NmEzMzE3YS4uMzU4YmE0NDdlMDFlYTlhZDE1Yjg3YmZkNWEwMmZlNzg0
NjA2NDdiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclBy
b3h5LmgKQEAgLTYyLDYgKzYyLDkgQEAgcHVibGljOgogICAgIHZvaWQgcmVsb2FkRm9yRXh0ZW5z
aW9uKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPGJv
b2w+JiBpZ25vcmVDYWNoZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTdHJpbmc+JiB1c2VyQWdlbnQs
IGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiYgaW5qZWN0ZWRTY3JpcHQsIFdURjo6Q29tcGxl
dGlvbkhhbmRsZXI8dm9pZChJbnNwZWN0b3I6OkV4dGVuc2lvbkV2YWx1YXRpb25SZXN1bHQpPiYm
KTsKICAgICB2b2lkIHNob3dFeHRlbnNpb25UYWIoY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25U
YWJJRCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9yOjpF
eHRlbnNpb25FcnJvcj4pPiYmKTsKIAorICAgIC8vIEFQSSBmb3IgdGVzdGluZy4KKyAgICB2b2lk
IGV2YWx1YXRlU2NyaXB0SW5FeHRlbnNpb25UYWIoY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25U
YWJJRCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0U291cmNlLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVy
PHZvaWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0KT4mJik7CisKICAgICAv
LyBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eSBJUEMgbWVzc2FnZXMuCiAg
ICAgdm9pZCBkaWRTaG93RXh0ZW5zaW9uVGFiKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQm
LCBjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvblRhYklEJik7CiAgICAgdm9pZCBkaWRIaWRlRXh0
ZW5zaW9uVGFiKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmLCBjb25zdCBJbnNwZWN0b3I6
OkV4dGVuc2lvblRhYklEJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9J
bnNwZWN0b3IvbWFjL1dLSW5zcGVjdG9yUmVzb3VyY2VVUkxTY2hlbWVIYW5kbGVyLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XS0luc3BlY3RvclJlc291cmNlVVJM
U2NoZW1lSGFuZGxlci5tbQppbmRleCBhY2VkN2MwMzc5YWZhZTMzNWI5OTlmNWMyMDgyYzk1M2Nl
Yzk0ODAzLi5iNDM1MzA5MTExZjRhNzhkNzA3YTFlZDVjOTliZjgzOTA3MzY4YjYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dLSW5zcGVjdG9yUmVz
b3VyY2VVUkxTY2hlbWVIYW5kbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0lu
c3BlY3Rvci9tYWMvV0tJbnNwZWN0b3JSZXNvdXJjZVVSTFNjaGVtZUhhbmRsZXIubW0KQEAgLTEy
Miw3ICsxMjIsOCBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc3RhcnRV
UkxTY2hlbWVUYXNrOihpZCA8V0tVUkxTY2hlbWVUYXNrPil1cgogCiAgICAgICAgIC8vIEFsbG93
IGZldGNoZXMgZm9yIHJlc291cmNlcyB0aGF0IHVzZSBhIHJlZ2lzdGVyZWQgY3VzdG9tIFVSTCBz
Y2hlbWUuCiAgICAgICAgIGlmIChfYWxsb3dlZFVSTFNjaGVtZXNGb3JDU1AgJiYgW3NlbGYubWFp
blJlc291cmNlVVJMc0ZvckNTUCBjb250YWluc09iamVjdDpyZXF1ZXN0VVJMXSkgewotICAgICAg
ICAgICAgTlNTdHJpbmcgKnN0cmluZ0ZvckNTUFBvbGljeSA9IFtOU1N0cmluZyBzdHJpbmdXaXRo
Rm9ybWF0OkAiY29ubmVjdC1zcmMgKiAlQDoiLCBbX2FsbG93ZWRVUkxTY2hlbWVzRm9yQ1NQLmdl
dCgpLmFsbE9iamVjdHMgY29tcG9uZW50c0pvaW5lZEJ5U3RyaW5nOkAiOiAiXV07CisgICAgICAg
ICAgICBOU1N0cmluZyAqbGlzdE9mQ3VzdG9tUHJvdG9jb2xzID0gW05TU3RyaW5nIHN0cmluZ1dp
dGhGb3JtYXQ6QCIlQDoiLCBbX2FsbG93ZWRVUkxTY2hlbWVzRm9yQ1NQLmdldCgpLmFsbE9iamVj
dHMgY29tcG9uZW50c0pvaW5lZEJ5U3RyaW5nOkAiOiAiXV07CisgICAgICAgICAgICBOU1N0cmlu
ZyAqc3RyaW5nRm9yQ1NQUG9saWN5ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJjb25u
ZWN0LXNyYyAqICVAOyBpbWctc3JjICogZmlsZTogYmxvYjogcmVzb3VyY2U6ICVAIiwgbGlzdE9m
Q3VzdG9tUHJvdG9jb2xzLCBsaXN0T2ZDdXN0b21Qcm90b2NvbHNdOwogICAgICAgICAgICAgW2hl
YWRlckZpZWxkcyBzZXRPYmplY3Q6c3RyaW5nRm9yQ1NQUG9saWN5IGZvcktleTpAIkNvbnRlbnQt
U2VjdXJpdHktUG9saWN5Il07CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMzdkMGRkMjQ3MWVkNDM4ZjljZDZjNzU5
ZTQzMDhmN2I2ZDIyMjJkNS4uMjQ0YTkyNDFhMjBmZTZmYzE3MDViODRmM2FiN2RkNWJkNzMwMDI5
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0xNTc0LDYgKzE1NzQsOCBAQAogCQk5OUIxNjc2NDI1MkJCRTYyMDA3MzE0MEUgLyogV2Vi
SW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OUIxNjc2MTI1MkJCRTYxMDA3MzE0MEUgLyogV2ViSW5z
cGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmggKi87IH07CiAJCTk5QzNBRTJEMURBREE2QUQw
MEFGNUMxNiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbk1hY3Jvcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlDM0FFMkMxREFEQTZBNzAwQUY1QzE2IC8q
IFdlYkF1dG9tYXRpb25TZXNzaW9uTWFjcm9zLmggKi87IH07CiAJCTk5QzYwN0VCMjZGQTlENDkw
MEEwOTUzRiAvKiBfV0tJbnNwZWN0b3JJQkFjdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5QzYwN0VBMjZGQTlENDgwMEEwOTUzRiAvKiBfV0tJ
bnNwZWN0b3JJQkFjdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQk5OUM2MDdGMDI2RkI5MUU4MDBBMDk1M0YgLyogX1dLSW5zcGVjdG9yRXh0
ZW5zaW9uUHJpdmF0ZUZvclRlc3RpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDk5QzYwN0VFMjZGQjkxRTgwMEEwOTUzRiAvKiBfV0tJbnNwZWN0b3JF
eHRlbnNpb25Qcml2YXRlRm9yVGVzdGluZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTk5QzYwN0YxMjZGQjkxRTkwMEEwOTUzRiAvKiBfV0tJbnNw
ZWN0b3JFeHRlbnNpb25UZXN0aW5nLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTlDNjA3RUYyNkZCOTFFODAwQTA5NTNGIC8qIF9XS0luc3BlY3RvckV4
dGVuc2lvblRlc3RpbmcubW0gKi87IH07CiAJCTk5QzgxRDVBMUMyMEU3RTIwMDVDNEM4MiAvKiBB
dXRvbWF0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5OUM4MUQ1NTFDMjBERkJFMDA1QzRDODIgLyogQXV0b21hdGlvbkNsaWVudC5oICov
OyB9OwogCQk5OUM4MUQ1RDFDMjFGMzhCMDA1QzRDODIgLyogQVBJQXV0b21hdGlvbkNsaWVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlDODFENUIx
QzIwRTgxNzAwNUM0QzgyIC8qIEFQSUF1dG9tYXRpb25DbGllbnQuaCAqLzsgfTsKIAkJOTlFNzE0
QzUxQzEyNEEwNDAwNjY1QjNBIC8qIF9XS0F1dG9tYXRpb25EZWxlZ2F0ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlFNzE0QzExQzEyNDlFNjAwNjY1
QjNBIC8qIF9XS0F1dG9tYXRpb25EZWxlZ2F0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC01MTI1LDYgKzUxMjcsOCBAQAogCQk5OUMzQUUyNjFE
QUQ5NDg1MDBBRjVDMTYgLyogV2ViQXV0b21hdGlvblNlc3Npb25Db2NvYS5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkF1dG9tYXRpb25TZXNzaW9uQ29jb2Eu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5QzNBRTJDMURBREE2QTcwMEFGNUMx
NiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbk1hY3Jvcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJBdXRvbWF0aW9uU2Vzc2lvbk1hY3Jvcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5OUM2MDdFQTI2RkE5RDQ4MDBBMDk1M0YgLyogX1dLSW5zcGVjdG9ySUJB
Y3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0luc3BlY3RvcklC
QWN0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OUM2MDdFRTI2RkI5MUU4
MDBBMDk1M0YgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uUHJpdmF0ZUZvclRlc3RpbmcuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLSW5zcGVjdG9yRXh0ZW5zaW9uUHJpdmF0
ZUZvclRlc3RpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTlDNjA3RUYyNkZC
OTFFODAwQTA5NTNGIC8qIF9XS0luc3BlY3RvckV4dGVuc2lvblRlc3RpbmcubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tJbnNwZWN0b3JFeHRlbnNpb25UZXN0
aW5nLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OUM4MUQ1NTFDMjBERkJFMDA1
QzRDODIgLyogQXV0b21hdGlvbkNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBdXRvbWF0aW9uQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5
QzgxRDU2MUMyMERGQkUwMDVDNEM4MiAvKiBBdXRvbWF0aW9uQ2xpZW50Lm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXV0b21hdGlvbkNsaWVudC5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTlDODFENUIxQzIwRTgxNzAwNUM0QzgyIC8qIEFQSUF1
dG9tYXRpb25DbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJQXV0
b21hdGlvbkNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODIxNCw2ICs4
MjE4LDggQEAKIAkJCQk5OTZCMkJBMDI1RTI1OTExMDA3MTkzNzkgLyogX1dLSW5zcGVjdG9yRXh0
ZW5zaW9uRGVsZWdhdGUuaCAqLywKIAkJCQk5OTc5NjVBMjI1MzEyOEM3MDBCMzFBRTMgLyogX1dL
SW5zcGVjdG9yRXh0ZW5zaW9uSG9zdC5oICovLAogCQkJCTk5QjE2NzU1MjUyQkI3RTEwMDczMTQw
RSAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb25JbnRlcm5hbC5oICovLAorCQkJCTk5QzYwN0VFMjZG
QjkxRTgwMEEwOTUzRiAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb25Qcml2YXRlRm9yVGVzdGluZy5o
ICovLAorCQkJCTk5QzYwN0VGMjZGQjkxRTgwMEEwOTUzRiAvKiBfV0tJbnNwZWN0b3JFeHRlbnNp
b25UZXN0aW5nLm1tICovLAogCQkJCTk5QzYwN0VBMjZGQTlENDgwMEEwOTUzRiAvKiBfV0tJbnNw
ZWN0b3JJQkFjdGlvbnMuaCAqLywKIAkJCQk1Q0FGREU0NDIxMzA4NDM2MDBCMUY3RTEgLyogX1dL
SW5zcGVjdG9ySW50ZXJuYWwuaCAqLywKIAkJCQk5OTc5Q0E1NzIzN0Y0OUYwMDAzOUVDMDUgLyog
X1dLSW5zcGVjdG9yUHJpdmF0ZS5oICovLApAQCAtMTIwMDQsNiArMTIwMTAsNyBAQAogCQkJCTk5
NkIyQkExMjVFMjU5MTEwMDcxOTM3OSAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTk3OTY1QTMyNTMxMjhDNzAwQjMxQUUzIC8qIF9XS0luc3Bl
Y3RvckV4dGVuc2lvbkhvc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5QjE2NzU4MjUyQkI3RTEw
MDczMTQwRSAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb25JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJOTlDNjA3RjAyNkZCOTFFODAwQTA5NTNGIC8qIF9XS0luc3BlY3RvckV4dGVuc2lvblBy
aXZhdGVGb3JUZXN0aW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OUM2MDdFQjI2RkE5RDQ5MDBB
MDk1M0YgLyogX1dLSW5zcGVjdG9ySUJBY3Rpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0FG
REU0NzIxMzA4NDZBMDBCMUY3RTEgLyogX1dLSW5zcGVjdG9ySW50ZXJuYWwuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTk5NzlDQTU4MjM3RjQ5RjEwMDM5RUMwNSAvKiBfV0tJbnNwZWN0b3JQcml2YXRl
LmggaW4gSGVhZGVycyAqLywKQEAgLTE0NDAzLDYgKzE0NDEwLDcgQEAKIAkJCQk1NzkwQTY4MTI1
NjdBMUFDMDA3N0M1QTcgLyogX1dLQXV0aGVudGljYXRvclJlc3BvbnNlLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNTc5MEE2NjcyNTY3OUNFQTAwNzdDNUE3IC8qIF9XS0F1dGhlbnRpY2F0b3JTZWxl
Y3Rpb25Dcml0ZXJpYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDQkQ1OTVDMjI4MEVERjQwMDJC
MjJBQSAvKiBfV0tDdXN0b21IZWFkZXJGaWVsZHMubW0gaW4gU291cmNlcyAqLywKKwkJCQk5OUM2
MDdGMTI2RkI5MUU5MDBBMDk1M0YgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uVGVzdGluZy5tbSBp
biBTb3VyY2VzICovLAogCQkJCTU3OTBBNjc1MjU2NzlGNzQwMDc3QzVBNyAvKiBfV0tQdWJsaWNL
ZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTc5MEE2
NkQyNTY3OUVCNzAwNzdDNUE3IC8qIF9XS1B1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTc5MEE2NTcyNTY3OTlEQTAwNzdDNUE3IC8qIF9XS1B1Ymxp
Y0tleUNyZWRlbnRpYWxFbnRpdHkubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmNwcAppbmRleCA5MDkwYjE2YTc5NThlNGJjODEyZTAy
ZDAyY2Q5NDUwOTNjZDVmNTI0Li5iN2ZjOGMwODg0NzJkODA4NWI2MDY1YTkzNzY3NDgxNDJmM2M1
OGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuY3BwCkBA
IC01OSw3ICs1OSw3IEBAIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6fldlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcigpCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pbnNwZWN0b3JQYWdlSWRlbnRp
Zmllcik7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4gV2Vi
SW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpwYXJzZUV4dGVuc2lvbkVycm9yRnJvbUV2
YWx1YXRpb25SZXN1bHQoSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpFdmFsdWF0aW9u
UmVzdWx0IHJlc3VsdCkKK3N0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4g
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpwYXJzZUV4dGVuc2lvbkVycm9yRnJv
bUV2YWx1YXRpb25SZXN1bHQoSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpFdmFsdWF0
aW9uUmVzdWx0IHJlc3VsdCkgY29uc3QKIHsKICAgICBpZiAoIXJlc3VsdCkgewogICAgICAgICBz
d2l0Y2ggKHJlc3VsdC5lcnJvcigpKSB7CkBAIC0xNTgsNyArMTU4LDcgQEAgdm9pZCBXZWJJbnNw
ZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnVucmVnaXN0ZXJFeHRlbnNpb24oY29uc3QgSW5z
cGVjdG9yOjpFeHQKICAgICB9KTsKIH0KIAotSlNDOjpKU09iamVjdCogV2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyOjp1bndyYXBFdmFsdWF0aW9uUmVzdWx0QXNPYmplY3QoSW5zcGVj
dG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpFdmFsdWF0aW9uUmVzdWx0IHJlc3VsdCkKK0pTQzo6
SlNPYmplY3QqIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6dW53cmFwRXZhbHVh
dGlvblJlc3VsdEFzT2JqZWN0KEluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6RXZhbHVh
dGlvblJlc3VsdCByZXN1bHQpIGNvbnN0CiB7CiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwpAQCAtMzU5LDYgKzM1OSw3NCBAQCB2b2lkIFdlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlcjo6c2hvd0V4dGVuc2lvblRhYihjb25zdCBJbnNwZWN0b3I6OkV4dGVu
cwogICAgIH0pOwogfQogCisvLyBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIgSVBD
IG1lc3NhZ2VzIGZvciB0ZXN0aW5nLgorCit2b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlcjo6ZXZhbHVhdGVTY3JpcHRJbkV4dGVuc2lvblRhYihjb25zdCBJbnNwZWN0b3I6OkV4
dGVuc2lvblRhYklEJiBleHRlbnNpb25UYWJJRCwgY29uc3QgU3RyaW5nJiBzY3JpcHRTb3VyY2Us
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3Qg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiYsIGNvbnN0IHN0ZDo6b3B0
aW9uYWw8SW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3sKKyAgICBpZiAoIW1fZnJvbnRlbmRDbGllbnQpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoeyB9LCBzdGQ6Om51bGxvcHQsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkludmFsaWRS
ZXF1ZXN0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFZlY3RvcjxSZWY8SlNPTjo6
VmFsdWU+PiBhcmd1bWVudHMgeworICAgICAgICBKU09OOjpWYWx1ZTo6Y3JlYXRlKGV4dGVuc2lv
blRhYklEKSwKKyAgICAgICAgSlNPTjo6VmFsdWU6OmNyZWF0ZShzY3JpcHRTb3VyY2UpLAorICAg
IH07CisKKyAgICBtX2Zyb250ZW5kQ2xpZW50LT5mcm9udGVuZEFQSURpc3BhdGNoZXIoKS5kaXNw
YXRjaENvbW1hbmRXaXRoUmVzdWx0QXN5bmMoImV2YWx1YXRlU2NyaXB0SW5FeHRlbnNpb25UYWIi
X3MsIFdURk1vdmUoYXJndW1lbnRzKSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKEluc3BlY3RvckZy
b250ZW5kQVBJRGlzcGF0Y2hlcjo6RXZhbHVhdGlvblJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7
CisgICAgICAgIGlmICghd2Vha1RoaXMpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHsgfSwgc3RkOjpudWxsb3B0LCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVz
dHJveWVkKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8q
IGZyb250ZW5kR2xvYmFsT2JqZWN0ID0gd2Vha1RoaXMtPm1fZnJvbnRlbmRDbGllbnQtPmZyb250
ZW5kQVBJRGlzcGF0Y2hlcigpLmZyb250ZW5kR2xvYmFsT2JqZWN0KCk7CisgICAgICAgIGlmICgh
ZnJvbnRlbmRHbG9iYWxPYmplY3QpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsg
fSwgc3RkOjpudWxsb3B0LCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJv
eWVkKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChhdXRv
IHBhcnNlZEVycm9yID0gd2Vha1RoaXMtPnBhcnNlRXh0ZW5zaW9uRXJyb3JGcm9tRXZhbHVhdGlv
blJlc3VsdChyZXN1bHQpKSB7CisgICAgICAgICAgICBpZiAoIXJlc3VsdC52YWx1ZSgpLmhhc192
YWx1ZSgpKSB7CisgICAgICAgICAgICAgICAgYXV0byBleGNlcHRpb25EZXRhaWxzID0gcmVzdWx0
LnZhbHVlKCkuZXJyb3IoKTsKKyAgICAgICAgICAgICAgICBMT0coSW5zcGVjdG9yLCAiSW50ZXJu
YWwgZXJyb3IgZW5jb3VudGVyZWQgd2hpbGUgZXZhbHVhdGluZyB1cG9uIHRoZSBmcm9udGVuZDog
YXQgJXM6JWQ6JWQ6ICVzIiwgZXhjZXB0aW9uRGV0YWlscy5zb3VyY2VVUkwudXRmOCgpLmRhdGEo
KSwgZXhjZXB0aW9uRGV0YWlscy5saW5lTnVtYmVyLCBleGNlcHRpb25EZXRhaWxzLmNvbHVtbk51
bWJlciwgZXhjZXB0aW9uRGV0YWlscy5tZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAg
ICAgfSBlbHNlCisgICAgICAgICAgICAgICAgTE9HKEluc3BlY3RvciwgIkludGVybmFsIGVycm9y
IGVuY291bnRlcmVkIHdoaWxlIGV2YWx1YXRpbmcgdXBvbiB0aGUgZnJvbnRlbmQuIik7CisKKyAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgc3RkOjpudWxsb3B0LCBwYXJzZWRFcnJv
cik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBFeHBlY3Rl
ZCByZXN1bHQgaXMgZWl0aGVyIGFuIEVycm9yU3RyaW5nIG9yIHtyZXN1bHQ6IDxhbnk+fSBvciB7
ZXJyb3I6IHN0cmluZ30uCisgICAgICAgIGF1dG8gb2JqZWN0UmVzdWx0ID0gd2Vha1RoaXMtPnVu
d3JhcEV2YWx1YXRpb25SZXN1bHRBc09iamVjdChyZXN1bHQpOworICAgICAgICBpZiAoIW9iamVj
dFJlc3VsdCkgeworICAgICAgICAgICAgTE9HKEluc3BlY3RvciwgIlVuZXhwZWN0ZWQgbm9uLW9i
amVjdCB2YWx1ZSByZXR1cm5lZCBmcm9tIEluc3BlY3RvckZyb250ZW5kQVBJLmNyZWF0ZVRhYkZv
ckV4dGVuc2lvbigpLiIpOworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBzdGQ6
Om51bGxvcHQsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3IpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIEFTU0VSVChyZXN1bHQuaGFzX3Zh
bHVlKCkpOworCisgICAgICAgIEpTQzo6SlNWYWx1ZSBlcnJvclBheWxvYWQgPSBvYmplY3RSZXN1
bHQtPmdldChmcm9udGVuZEdsb2JhbE9iamVjdCwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KGZyb250ZW5kR2xvYmFsT2JqZWN0LT52bSgpLCAiZXJyb3IiX3MpKTsKKyAgICAgICAgaWYgKCFl
cnJvclBheWxvYWQuaXNVbmRlZmluZWQoKSkgeworICAgICAgICAgICAgaWYgKCFlcnJvclBheWxv
YWQuaXNTdHJpbmcoKSkgeworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwg
c3RkOjpudWxsb3B0LCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpJbnRlcm5hbEVycm9yKTsK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHsgfSwgRXhjZXB0aW9uRGV0YWlscyB7IGVycm9yUGF5bG9hZC50b1dU
RlN0cmluZyhmcm9udGVuZEdsb2JhbE9iamVjdCkgfSwgc3RkOjpudWxsb3B0KTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIEpTQzo6SlNWYWx1ZSByZXN1bHRQYXls
b2FkID0gb2JqZWN0UmVzdWx0LT5nZXQoZnJvbnRlbmRHbG9iYWxPYmplY3QsIEpTQzo6SWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyhmcm9udGVuZEdsb2JhbE9iamVjdC0+dm0oKSwgInJlc3VsdCJfcykp
OworICAgICAgICBhdXRvIHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6Y3JlYXRlKCpmcm9udGVuZEdsb2JhbE9iamVjdCwgcmVzdWx0UGF5bG9hZCk7CisgICAg
ICAgIGlmICghc2VyaWFsaXplZFJlc3VsdFZhbHVlKSB7CisgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcih7IH0sIHN0ZDo6bnVsbG9wdCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6SW50
ZXJuYWxFcnJvcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihzZXJpYWxpemVkUmVzdWx0VmFsdWUtPmRhdGEoKSwgc3RkOjpudWxs
b3B0LCBzdGQ6Om51bGxvcHQpOworICAgIH0pOworfQorCiB2b2lkIFdlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlcjo6ZGlkU2hvd0V4dGVuc2lvblRhYihjb25zdCBJbnNwZWN0b3I6OkV4
dGVuc2lvbklEJiBleHRlbnNpb25JRCwgY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJRCYg
ZXh0ZW5zaW9uVGFiSUQpCiB7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25D
b250cm9sbGVyUHJveHk6OkRpZFNob3dFeHRlbnNpb25UYWIgeyBleHRlbnNpb25JRCwgZXh0ZW5z
aW9uVGFiSUQgfSwgbV9pbnNwZWN0b3JQYWdlSWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuaAppbmRleCBjMzYxMmFkZDAwNTlkNzRlYjQ3YTkxZTVk
ZTM0NTc0MTI0OGQwZjQxLi5kMjg0OWEwZTUyZTQ4ZDc2NzM0NzdmOTlhMjFlYmFlNDY2M2VmM2M5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmgKQEAgLTcwLDEz
ICs3MCwxNiBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWxvYWRGb3JFeHRlbnNpb24oY29uc3QgSW5z
cGVjdG9yOjpFeHRlbnNpb25JRCYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8Ym9vbD4mIGlnbm9yZUNh
Y2hlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4mIHVzZXJBZ2VudCwgY29uc3Qgc3RkOjpv
cHRpb25hbDxTdHJpbmc+JiBpbmplY3RlZFNjcmlwdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBzdGQ6Om9wdGlvbmFsPEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+Jik+JiYpOwogICAg
IHZvaWQgc2hvd0V4dGVuc2lvblRhYihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvblRhYklEJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxib29sLCBJbnNwZWN0b3I6OkV4dGVuc2lv
bkVycm9yPik+JiYpOwogCisgICAgLy8gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVy
IElQQyBtZXNzYWdlcyBmb3IgdGVzdGluZy4KKyAgICB2b2lkIGV2YWx1YXRlU2NyaXB0SW5FeHRl
bnNpb25UYWIoY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJRCYsIGNvbnN0IFN0cmluZyYg
c2NyaXB0U291cmNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4mLCBj
b25zdCBzdGQ6Om9wdGlvbmFsPEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+Jik+JiYpOworCiAg
ICAgLy8gQ2FsbGJhY2tzIGZyb20gdGhlIGZyb250ZW5kLgogICAgIHZvaWQgZGlkU2hvd0V4dGVu
c2lvblRhYihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiwgY29uc3QgSW5zcGVjdG9yOjpF
eHRlbnNpb25UYWJJRCYpOwogICAgIHZvaWQgZGlkSGlkZUV4dGVuc2lvblRhYihjb25zdCBJbnNw
ZWN0b3I6OkV4dGVuc2lvbklEJiwgY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJRCYpOwog
CiBwcml2YXRlOgotICAgIEpTQzo6SlNPYmplY3QqIHVud3JhcEV2YWx1YXRpb25SZXN1bHRBc09i
amVjdChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OkV2YWx1YXRpb25S
ZXN1bHQpOwotICAgIHN0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4gcGFy
c2VFeHRlbnNpb25FcnJvckZyb21FdmFsdWF0aW9uUmVzdWx0KFdlYkNvcmU6Okluc3BlY3RvckZy
b250ZW5kQVBJRGlzcGF0Y2hlcjo6RXZhbHVhdGlvblJlc3VsdCk7CisgICAgSlNDOjpKU09iamVj
dCogdW53cmFwRXZhbHVhdGlvblJlc3VsdEFzT2JqZWN0KFdlYkNvcmU6Okluc3BlY3RvckZyb250
ZW5kQVBJRGlzcGF0Y2hlcjo6RXZhbHVhdGlvblJlc3VsdCkgY29uc3Q7CisgICAgc3RkOjpvcHRp
b25hbDxJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPiBwYXJzZUV4dGVuc2lvbkVycm9yRnJvbUV2
YWx1YXRpb25SZXN1bHQoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpF
dmFsdWF0aW9uUmVzdWx0KSBjb25zdDsKIAogICAgIFdlYWtQdHI8V2ViQ29yZTo6SW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQ+IG1fZnJvbnRlbmRDbGllbnQ7CiAgICAgV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIgbV9pbnNwZWN0b3JQYWdlSWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVy
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNw
ZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIubWVzc2FnZXMuaW4KaW5kZXggNmEwMGVjZmZlNTgz
MGZmMTY0NWU5MDE3YmNlNmQ3NjFmMjc4NzIxYy4uYzkyNGY3MzA3YThjODU4OGNiODhjZGU2OTAz
Y2MwMGI5YjZmOWNmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3Bl
Y3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXIubWVzc2FnZXMuaW4KQEAgLTMwLDYgKzMwLDEwIEBAIG1lc3NhZ2VzIC0+IFdl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlciBOb3RSZWZDb3VudGVkIHsKICAgICBFdmFs
dWF0ZVNjcmlwdEZvckV4dGVuc2lvbihTdHJpbmcgZXh0ZW5zaW9uSUQsIFN0cmluZyBzY3JpcHRT
b3VyY2UsIHN0ZDo6b3B0aW9uYWw8VVJMPiBmcmFtZVVSTCwgc3RkOjpvcHRpb25hbDxVUkw+IGNv
bnRleHRTZWN1cml0eU9yaWdpbiwgc3RkOjpvcHRpb25hbDxib29sPiB1c2VDb250ZW50U2NyaXB0
Q29udGV4dCkgLT4gKElQQzo6RGF0YVJlZmVyZW5jZSByZXN1bHREYXRhLCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIHN0ZDo6b3B0aW9uYWw8SW5zcGVj
dG9yOjpFeHRlbnNpb25FcnJvcj4gZXJyb3IpIEFzeW5jCiAgICAgUmVsb2FkRm9yRXh0ZW5zaW9u
KFN0cmluZyBleHRlbnNpb25JRCwgc3RkOjpvcHRpb25hbDxib29sPiBpZ25vcmVDYWNoZSwgc3Rk
OjpvcHRpb25hbDxTdHJpbmc+IHVzZXJBZ2VudCwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGluamVj
dGVkU2NyaXB0KSAtPiAoc3RkOjpvcHRpb25hbDxJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPiBl
cnJvcikgQXN5bmMKICAgICBTaG93RXh0ZW5zaW9uVGFiKFN0cmluZyBleHRlbnNpb25UYWJJZGVu
dGlmaWVyKSAtPiAoRXhwZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4gcmVz
dWx0KSBBc3luYworICAgIAorICAgIC8vIEZvciB0ZXN0aW5nLgorICAgIEV2YWx1YXRlU2NyaXB0
SW5FeHRlbnNpb25UYWIoU3RyaW5nIGV4dGVuc2lvblRhYklELCBTdHJpbmcgc2NyaXB0U291cmNl
KSAtPiAoSVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VsdERhdGEsIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6RXhjZXB0aW9uRGV0YWlscz4gZGV0YWlscywgc3RkOjpvcHRpb25hbDxJbnNwZWN0b3I6OkV4
dGVuc2lvbkVycm9yPiBlcnJvcikgQXN5bmMKKyAgICAKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShJ
TlNQRUNUT1JfRVhURU5TSU9OUykKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xz
L0NoYW5nZUxvZwppbmRleCAxMmVlNzI0NDU3YzMwYWUyZDAyNmY1NzZmY2I1ZTlkYzZmYWMyM2Ew
Li4yNTBjN2ZmODI4NmMzZTdhNDg4OTlkOWI3ZWRiMWNmNDc1ZjkzZTY2IDEwMDY0NAotLS0gYS9U
b29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcgQEAKKzIw
MjEtMDktMjcgIEJKIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBh
ZGQgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uIFNQSSB0byBldmFsdWF0ZSBzY3JpcHQgb24gYW4gZXh0
ZW5zaW9uIHRhYgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjMwNjQ2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84MzQyMDMyOD4KKworICAgICAgICBS
ZXZpZXdlZCBieSBEZXZpbiBSb3Vzc28uCisKKyAgICAgICAgQWRkIGEgbmV3IHRlc3QgdG8gZXhl
cmNpc2UgdGhlIFNQSS4gVGhlIHRlc3Qgc2V0cyB1cCBhbiBfV0tJbnNwZWN0b3JFeHRlbnNpb24s
CisgICAgICAgIGNyZWF0ZXMgYSB0YWIsIGV2YWx1YXRlcyBzY3JpcHQgb24gdGhlIHRhYiwgYW5k
IGxhdGVyIHJlYWRzIGJhY2sgdGhlIHN0b3JlZCB2YWx1ZS4KKworICAgICAgICBOb3RhYmx5LCB0
aGlzIHRlc3Qgd291bGQgZmFpbCBpZiB0aGUgZXh0ZW5zaW9uIHRhYiBpcyBub3QgY3VycmVudGx5
IHNob3dpbmcuCisgICAgICAgIFRoaXMgaXMgYSBidWcgYW5kIHdpbGwgYmUgYWRkcmVzc2VkIGFz
IHBhcnQgb2YgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDc1OC4K
KworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgQWRkIG5ldyBmaWxlcy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvSW5zcGVjdG9yRXh0ZW5zaW9uLWJhc2ljLXRhYi5odG1sOgorICAgICAgICBBZGQg
aW5saW5lIDxzY3JpcHQ+IHRvIHNldCB3aW5kb3cuX3NlY3JldFZhbHVlLiBUaGlzIGlzIGNoZWNr
ZWQgYnkgdGhlIEFQSSB0ZXN0LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9XS0luc3BlY3RvckV4dGVuc2lvbi5tbTogQWRkZWQuCisgICAgICAgIChyZXNldEds
b2JhbFN0YXRlKToKKyAgICAgICAgKC1bVUlEZWxlZ2F0ZUZvclRlc3RpbmdJbnNwZWN0b3JFeHRl
bnNpb24gX3dlYlZpZXc6ZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3I6XSk6CisgICAgICAgICgtW1VJ
RGVsZWdhdGVGb3JUZXN0aW5nSW5zcGVjdG9yRXh0ZW5zaW9uIF93ZWJWaWV3OmNvbmZpZ3VyYXRp
b25Gb3JMb2NhbEluc3BlY3RvcjpdKToKKyAgICAgICAgKC1bSW5zcGVjdG9yRXh0ZW5zaW9uRGVs
ZWdhdGVGb3JUZXN0aW5nSW5zcGVjdG9yRXh0ZW5zaW9uIGluc3BlY3RvckV4dGVuc2lvbjpkaWRT
aG93VGFiV2l0aElkZW50aWZpZXI6XSk6CisgICAgICAgICgtW0luc3BlY3RvckV4dGVuc2lvbkRl
bGVnYXRlRm9yVGVzdGluZ0luc3BlY3RvckV4dGVuc2lvbiBpbnNwZWN0b3JFeHRlbnNpb246ZGlk
SGlkZVRhYldpdGhJZGVudGlmaWVyOl0pOgorICAgICAgICAoVEVTVCk6CisKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdh
dGUubW06CisgICAgICAgICgtW1VJRGVsZWdhdGVGb3JUZXN0aW5nSW5zcGVjdG9yRXh0ZW5zaW9u
RGVsZWdhdGUgX3dlYlZpZXc6Y29uZmlndXJhdGlvbkZvckxvY2FsSW5zcGVjdG9yOl0pOgorICAg
ICAgICAoVEVTVCk6CisgICAgICAgIEFkb3B0IGZpeGVzIGZyb20gV0tJbnNwZWN0b3JFeHRlbnNp
b24gdGhhdCBhbGxvdyBleHRlbnNpb24gdGFiIGNvbnRlbnQgYW5kIGljb25zIHRvIGxvYWQuCisK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RJbnNwZWN0b3JVUkxTY2hlbWVIYW5k
bGVyLmg6IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdEluc3BlY3Rv
clVSTFNjaGVtZUhhbmRsZXIubW06IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci9tYWMvV0tJbnNwZWN0b3JSZXNvdXJjZVVSTFNjaGVtZUhhbmRsZXIubW0uCisg
ICAgICAgICgtW1Rlc3RJbnNwZWN0b3JVUkxTY2hlbWVIYW5kbGVyIHdlYlZpZXc6c3RhcnRVUkxT
Y2hlbWVUYXNrOl0pOgorICAgICAgICAoLVtUZXN0SW5zcGVjdG9yVVJMU2NoZW1lSGFuZGxlciB3
ZWJWaWV3OnN0b3BVUkxTY2hlbWVUYXNrOl0pOgorICAgICAgICBBZGQgYSBzaW1wbGUgVVJMU2No
ZW1lSGFuZGxlciB3aGljaCBhbGxvd3Mgc2VydmluZyB0ZXN0IHJlc291cmNlcyBmcm9tIHRoZSBU
ZXN0V2ViS2l0QVBJLnJlc291cmNlcyBkaXJlY3RvcnkuCisgICAgICAgIFRoaXMgaXMgbmVjZXNz
YXJ5IHRvIHRlc3QgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uIHRhYnMsIHdoaWNoIG11c3QgbG9hZCB0
aGVpciBjb250ZW50IGZyb20gYSBjdXN0b20gVVJMIHNjaGVtZS4KKworICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbToKKyAgICAgICAgRml4IFVuaWZpZWRTb3Vy
Y2VzIGZhbGxvdXQgYnkgYWRkaW5nIGEgbWlzc2luZyBpbmNsdWRlLgorCiAyMDIxLTA5LTI3ICBC
SiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gQWRkIFNQSSB0byBz
ZWxlY3QgYSB0YWIgY3JlYXRlZCBieSBfV0tJbnNwZWN0b3JFeHRlbnNpb24KZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvU291cmNlc0NvY29hLnR4dCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvU291cmNlc0NvY29hLnR4dAppbmRleCA0ZTYxOWNkNTkyYzRjNDYzOWRlNGI0YmFjOTY1Y2Fm
YjYwMjI4MDlkLi5kYjllNmU0YmVkOTNkMjMyZGZmMGI0OGMzOTJhNmQzYzVlOGQ5NjRhIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0yNyw2ICsyNyw3IEBAIFdLV2ViVmll
d0NvbmZpZ3VyYXRpb25FeHRyYXMubW0KIGNvY29hL1BsYXRmb3JtVXRpbGl0aWVzQ29jb2EubW0K
IGNvY29hL1Rlc3RDb2NvYS5tbQogY29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUubW0KK2NvY29h
L1Rlc3RJbnNwZWN0b3JVUkxTY2hlbWVIYW5kbGVyLm1tCiBjb2NvYS9UZXN0TGVnYWN5RG93bmxv
YWREZWxlZ2F0ZS5tbQogY29jb2EvVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5tbQogY29jb2EvVGVz
dFByb3RvY29sLm1tCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdl
YktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGE1MzYzNTM0OWZlODRiZDE2
MGQ5MjNlYjgyZWExOGFkYTBhOTljMjguLjg4MjRkYjYxYTZiOTA4Yzc2NTkwMWQ0MjE5YmVjMjVi
YjBmZmZiNzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdl
YktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04OTMsNiArODkzLDcgQEAKIAkJ
OTk5OTEwOEIxRjM5M0M5NjAwOEFENDU1IC8qIENvcHlpbmcubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTk5MTA4QTFGMzkzQzhCMDA4QUQ0NTUgLyog
Q29weWluZy5tbSAqLzsgfTsKIAkJOTk5QjdFRTMyNTUxQzYzQjAwRjQ1MEE0IC8qIFdLSW5zcGVj
dG9yRXh0ZW5zaW9uSG9zdC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDk5OUI3RUUyMjU1MUM2M0IwMEY0NTBBNCAvKiBXS0luc3BlY3RvckV4dGVuc2lv
bkhvc3QubW0gKi87IH07CiAJCTk5QjRGOUM2MjRFREVEOTcwMDAyMkI4MiAvKiBXS0luc3BlY3Rv
ckRlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTlCNEY5QzUyNEVERUQ5NjAwMDIyQjgyIC8qIFdLSW5zcGVjdG9yRGVsZWdhdGUubW0gKi87
IH07CisJCTk5QzYwN0VEMjZGQjkwQUMwMEEwOTUzRiAvKiBXS0luc3BlY3RvckV4dGVuc2lvbi5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5QzYwN0VD
MjZGQjkwQUMwMEEwOTUzRiAvKiBXS0luc3BlY3RvckV4dGVuc2lvbi5tbSAqLzsgfTsKIAkJOTlF
Mjg0NjQyNkY5MUY3RjAwMDNGMUZBIC8qIFdLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OUUyODQ2MzI2
RjkxRjdGMDAwM0YxRkEgLyogV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5tbSAqLzsgfTsK
IAkJOTlFMjg0NjYyNkY5M0RCNTAwMDNGMUZBIC8qIEluc3BlY3RvckV4dGVuc2lvbi1UYWJJY29u
LTMweDMwLnBuZyBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5OUUyODQ2NTI2RjkzRDc2MDAwM0YxRkEgLyogSW5zcGVjdG9yRXh0ZW5zaW9uLVRh
Ykljb24tMzB4MzAucG5nICovOyB9OwogCQk5OUUyODQ2ODI2Rjk0MTU0MDAwM0YxRkEgLyogSW5z
cGVjdG9yRXh0ZW5zaW9uLWJhc2ljLXRhYi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5RTI4NDY3MjZGOTQxM0IwMDAzRjFGQSAvKiBJ
bnNwZWN0b3JFeHRlbnNpb24tYmFzaWMtdGFiLmh0bWwgKi87IH07CkBAIC0yNjI0LDYgKzI2MjUs
OSBAQAogCQk5OTk5MTA4QTFGMzkzQzhCMDA4QUQ0NTUgLyogQ29weWluZy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENvcHlpbmcubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTk5OUI3RUUyMjU1MUM2M0IwMEY0NTBBNCAvKiBXS0luc3BlY3RvckV4
dGVuc2lvbkhvc3QubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBX
S0luc3BlY3RvckV4dGVuc2lvbkhvc3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTk5QjRGOUM1MjRFREVEOTYwMDAyMkI4MiAvKiBXS0luc3BlY3RvckRlbGVnYXRlLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tJbnNwZWN0b3JEZWxlZ2F0ZS5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTlDNjA3RUMyNkZCOTBBQzAwQTA5NTNG
IC8qIFdLSW5zcGVjdG9yRXh0ZW5zaW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gV0tJbnNwZWN0b3JFeHRlbnNpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTk5QzYwN0Y0MjZGRDVBMUUwMEEwOTUzRiAvKiBUZXN0SW5zcGVjdG9yVVJMU2No
ZW1lSGFuZGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBUZXN0SW5zcGVj
dG9yVVJMU2NoZW1lSGFuZGxlci5oOyBwYXRoID0gY29jb2EvVGVzdEluc3BlY3RvclVSTFNjaGVt
ZUhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTlDNjA3RjUyNkZENUEx
RjAwQTA5NTNGIC8qIFRlc3RJbnNwZWN0b3JVUkxTY2hlbWVIYW5kbGVyLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gVGVzdEluc3BlY3RvclVSTFNjaGVtZUhhbmRs
ZXIubW07IHBhdGggPSBjb2NvYS9UZXN0SW5zcGVjdG9yVVJMU2NoZW1lSGFuZGxlci5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTlFMjg0NjMyNkY5MUY3RjAwMDNGMUZBIC8qIFdL
SW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBXS0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5OUUyODQ2NTI2RjkzRDc2MDAwM0YxRkEgLyogSW5zcGVjdG9y
RXh0ZW5zaW9uLVRhYkljb24tMzB4MzAucG5nICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucG5nOyBwYXRoID0gIkluc3BlY3RvckV4dGVuc2lv
bi1UYWJJY29uLTMweDMwLnBuZyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5RTI4
NDY3MjZGOTQxM0IwMDAzRjFGQSAvKiBJbnNwZWN0b3JFeHRlbnNpb24tYmFzaWMtdGFiLmh0bWwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiSW5zcGVjdG9yRXh0ZW5zaW9uLWJhc2ljLXRh
Yi5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMzMjMsNiArMzMyNyw4IEBA
CiAJCQkJNUNFNzU5NDcyMkE4ODNBNTAwQzEyNDA5IC8qIFRlc3RDb250ZXh0TWVudURyaXZlci5t
bSAqLywKIAkJCQlERjZCQzQ3MDI1MzRFMTIwMDA4RjYzQ0MgLyogVGVzdERvd25sb2FkRGVsZWdh
dGUuaCAqLywKIAkJCQlERjZCQzQ2RjI1MzRFMTIwMDA4RjYzQ0MgLyogVGVzdERvd25sb2FkRGVs
ZWdhdGUubW0gKi8sCisJCQkJOTlDNjA3RjQyNkZENUExRTAwQTA5NTNGIC8qIFRlc3RJbnNwZWN0
b3JVUkxTY2hlbWVIYW5kbGVyLmggKi8sCisJCQkJOTlDNjA3RjUyNkZENUExRjAwQTA5NTNGIC8q
IFRlc3RJbnNwZWN0b3JVUkxTY2hlbWVIYW5kbGVyLm1tICovLAogCQkJCTVDNzJFOENEMjQ0RkZD
RTMwMDM4MUVCNyAvKiBUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5oICovLAogCQkJCTVDNzJF
OENFMjQ0RkZDRTQwMDM4MUVCNyAvKiBUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5tbSAqLywK
IAkJCQkyRDFDMDRBNTFENzYyOThCMDAwQTY4MTYgLyogVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5o
ICovLApAQCAtMzY2Niw2ICszNjcyLDcgQEAKIAkJCQkzNzBDRTIyOTFGNTczNDM0MDBFNzQxMEIg
LyogV0tDb250ZW50Vmlld1RhcmdldEZvckFjdGlvbi5tbSAqLywKIAkJCQk1MUQxMjQ5NzFFNzYz
QUY4MDAyQjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmUubW0gKi8sCiAJCQkJOTlCNEY5QzUyNEVE
RUQ5NjAwMDIyQjgyIC8qIFdLSW5zcGVjdG9yRGVsZWdhdGUubW0gKi8sCisJCQkJOTlDNjA3RUMy
NkZCOTBBQzAwQTA5NTNGIC8qIFdLSW5zcGVjdG9yRXh0ZW5zaW9uLm1tICovLAogCQkJCTk5RTI4
NDYzMjZGOTFGN0YwMDAzRjFGQSAvKiBXS0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLm1tICov
LAogCQkJCTk5OUI3RUUyMjU1MUM2M0IwMEY0NTBBNCAvKiBXS0luc3BlY3RvckV4dGVuc2lvbkhv
c3QubW0gKi8sCiAJCQkJQTVBNzI5RjAxRjYyMkE5QTAwREU1QTI4IC8qIFdLTmF2aWdhdGlvblJl
c3BvbnNlLm1tICovLApAQCAtNTk0Nyw2ICs1OTU0LDcgQEAKIAkJCQk1MUQxMjQ5ODFFNzYzQjAy
MDAyQjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmUubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NF
N0YxRDFBNDExQUU2MDA0NDdDNEMgLyogV0tJbWFnZUNyZWF0ZUNHSW1hZ2VDcmFzaC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk5OUI0RjlDNjI0RURFRDk3MDAwMjJCODIgLyogV0tJbnNwZWN0b3JE
ZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTk5QzYwN0VEMjZGQjkwQUMwMEEwOTUzRiAv
KiBXS0luc3BlY3RvckV4dGVuc2lvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTk5RTI4NDY0MjZG
OTFGN0YwMDAzRjFGQSAvKiBXS0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJOTk5QjdFRTMyNTUxQzYzQjAwRjQ1MEE0IC8qIFdLSW5zcGVjdG9yRXh0ZW5z
aW9uSG9zdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUE1QTcyOUYxMUY2MjJBQTcwMERFNUEyOCAv
KiBXS05hdmlnYXRpb25SZXNwb25zZS5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbnNwZWN0b3JFeHRlbnNpb24tYmFz
aWMtdGFiLmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luc3Bl
Y3RvckV4dGVuc2lvbi1iYXNpYy10YWIuaHRtbAppbmRleCBmZTg4YWQwZTlkZmQ0YmI3ODQ2ODIx
MjgxMDUxNDE2YWI3MGYwYTM1Li40MmJmMTlkMGIyNzc1NDIxOWM1MjJkN2EzYWQwOGEyOWM0YTVh
MGU0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0lu
c3BlY3RvckV4dGVuc2lvbi1iYXNpYy10YWIuaHRtbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL0luc3BlY3RvckV4dGVuc2lvbi1iYXNpYy10YWIuaHRtbApAQCAt
MSw0ICsxLDggQEAKIDxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorICAgIHdpbmRvdy5fc2VjcmV0
VmFsdWUgPSB7YW5zd2VyOjQyfTsKKzwvc2NyaXB0PgogPGJvZHk+CiA8aDE+VGhpcyBpcyBhIHRl
c3QgZXh0ZW5zaW9uLjwvaDE+CiA8cD5JbiBhIG5vcm1hbCBleHRlbnNpb24sIHRoaXMgYXJlYSB3
b3VsZCBzaG93IHRoZSBleHRlbnNpb24ncyB1c2VyIGludGVyZmFjZS48L3A+CmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSW5zcGVjdG9yRXh0ZW5z
aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0luc3BlY3Rv
ckV4dGVuc2lvbi5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NTM4NTRmYjJkMjE0NmVjM2ExYzU0NDhlODA2MjAz
NGY5YzRkNGU2Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9XS0luc3BlY3RvckV4dGVuc2lvbi5tbQpAQCAtMCwwICsxLDE5MSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisjaW1wb3J0ICJUZXN0Q29jb2EuaCIKKyNp
bXBvcnQgIlRlc3RJbnNwZWN0b3JVUkxTY2hlbWVIYW5kbGVyLmgiCisjaW1wb3J0ICJVdGlsaXRp
ZXMuaCIKKyNpbXBvcnQgPFdlYktpdC9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oPgorI2ltcG9ydCA8
V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tJbnNwZWN0b3Iu
aD4KKyNpbXBvcnQgPFdlYktpdC9fV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uLmg+CisjaW1wb3J0
IDxXZWJLaXQvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLSW5z
cGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tJbnNwZWN0b3JF
eHRlbnNpb25Qcml2YXRlRm9yVGVzdGluZy5oPgorI2ltcG9ydCA8V2ViS2l0L19XS0luc3BlY3Rv
clByaXZhdGVGb3JUZXN0aW5nLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKKyNpZiBF
TkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisKK3N0YXRpYyBib29sIGRpZEF0dGFjaExvY2Fs
SW5zcGVjdG9yQ2FsbGVkID0gZmFsc2U7CitzdGF0aWMgYm9vbCBkaWRTaG93RXh0ZW5zaW9uVGFi
V2FzQ2FsbGVkID0gZmFsc2U7CitzdGF0aWMgYm9vbCBkaWRIaWRlRXh0ZW5zaW9uVGFiV2FzQ2Fs
bGVkID0gZmFsc2U7CitzdGF0aWMgYm9vbCBwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQgPSBmYWxz
ZTsKK3N0YXRpYyBSZXRhaW5QdHI8VGVzdEluc3BlY3RvclVSTFNjaGVtZUhhbmRsZXI+IHNoYXJl
ZFVSTFNjaGVtZUhhbmRsZXI7CitzdGF0aWMgUmV0YWluUHRyPF9XS0luc3BlY3RvckV4dGVuc2lv
bj4gc2hhcmVkSW5zcGVjdG9yRXh0ZW5zaW9uOworc3RhdGljIFJldGFpblB0cjxOU1N0cmluZz4g
c2hhcmVkRXh0ZW5zaW9uVGFiSWRlbnRpZmllcjsKKworc3RhdGljIHZvaWQgcmVzZXRHbG9iYWxT
dGF0ZSgpCit7CisgICAgZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3JDYWxsZWQgPSBmYWxzZTsKKyAg
ICBkaWRTaG93RXh0ZW5zaW9uVGFiV2FzQ2FsbGVkID0gZmFsc2U7CisgICAgZGlkSGlkZUV4dGVu
c2lvblRhYldhc0NhbGxlZCA9IGZhbHNlOworICAgIHBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCA9
IGZhbHNlOworfQorCitAaW50ZXJmYWNlIFVJRGVsZWdhdGVGb3JUZXN0aW5nSW5zcGVjdG9yRXh0
ZW5zaW9uIDogTlNPYmplY3QgPFdLVUlEZWxlZ2F0ZT4KK0BlbmQKKworQGltcGxlbWVudGF0aW9u
IFVJRGVsZWdhdGVGb3JUZXN0aW5nSW5zcGVjdG9yRXh0ZW5zaW9uCisKKy0gKHZvaWQpX3dlYlZp
ZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3I6KF9XS0luc3Bl
Y3RvciAqKWluc3BlY3RvcgoreworICAgIEVYUEVDVF9FUSh3ZWJWaWV3Ll9pbnNwZWN0b3IsIGlu
c3BlY3Rvcik7CisgICAgZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3JDYWxsZWQgPSB0cnVlOworfQor
CistIChfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uICopX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdl
YlZpZXcgY29uZmlndXJhdGlvbkZvckxvY2FsSW5zcGVjdG9yOihfV0tJbnNwZWN0b3IgKilpbnNw
ZWN0b3IKK3sKKyAgICBpZiAoIXNoYXJlZFVSTFNjaGVtZUhhbmRsZXIpCisgICAgICAgIHNoYXJl
ZFVSTFNjaGVtZUhhbmRsZXIgPSBhZG9wdE5TKFtbVGVzdEluc3BlY3RvclVSTFNjaGVtZUhhbmRs
ZXIgYWxsb2NdIGluaXRdKTsKKworICAgIGF1dG8gaW5zcGVjdG9yQ29uZmlndXJhdGlvbiA9IGFk
b3B0TlMoW1tfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW2lu
c3BlY3RvckNvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpzaGFyZWRVUkxTY2hlbWVI
YW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpAInRlc3QtcmVzb3VyY2UiXTsKKyAgICByZXR1cm4g
aW5zcGVjdG9yQ29uZmlndXJhdGlvbi5hdXRvcmVsZWFzZSgpOworfQorCitAZW5kCisKKworQGlu
dGVyZmFjZSBJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZUZvclRlc3RpbmdJbnNwZWN0b3JFeHRl
bnNpb24gOiBOU09iamVjdCA8X1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGU+CitAZW5kCisK
K0BpbXBsZW1lbnRhdGlvbiBJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZUZvclRlc3RpbmdJbnNw
ZWN0b3JFeHRlbnNpb24geworfQorCistICh2b2lkKWluc3BlY3RvckV4dGVuc2lvbjooX1dLSW5z
cGVjdG9yRXh0ZW5zaW9uICopZXh0ZW5zaW9uIGRpZFNob3dUYWJXaXRoSWRlbnRpZmllcjooTlNT
dHJpbmcgKil0YWJJZGVudGlmaWVyCit7CisgICAgZGlkU2hvd0V4dGVuc2lvblRhYldhc0NhbGxl
ZCA9IHRydWU7Cit9CisKKy0gKHZvaWQpaW5zcGVjdG9yRXh0ZW5zaW9uOihfV0tJbnNwZWN0b3JF
eHRlbnNpb24gKilleHRlbnNpb24gZGlkSGlkZVRhYldpdGhJZGVudGlmaWVyOihOU1N0cmluZyAq
KXRhYklkZW50aWZpZXIKK3sKKyAgICBkaWRIaWRlRXh0ZW5zaW9uVGFiV2FzQ2FsbGVkID0gdHJ1
ZTsKK30KKworQGVuZAorCitURVNUKFdLSW5zcGVjdG9yRXh0ZW5zaW9uLCBDYW5FdmFsdWF0ZVNj
cmlwdEluRXh0ZW5zaW9uVGFiKQoreworICAgIHJlc2V0R2xvYmFsU3RhdGUoKTsKKworICAgIGF1
dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtXS1dlYlZpZXdDb25maWd1cmF0aW9u
IG5ld10pOworICAgIHdlYlZpZXdDb25maWd1cmF0aW9uLmdldCgpLnByZWZlcmVuY2VzLl9kZXZl
bG9wZXJFeHRyYXNFbmFibGVkID0gWUVTOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tX
S1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkg
Y29uZmlndXJhdGlvbjp3ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIGF1dG8gdWlE
ZWxlZ2F0ZSA9IGFkb3B0TlMoW1VJRGVsZWdhdGVGb3JUZXN0aW5nSW5zcGVjdG9yRXh0ZW5zaW9u
IG5ld10pOworCisgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTp1aURlbGVnYXRlLmdldCgpXTsK
KyAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpAIjxoZWFkPjx0aXRsZT5UZXN0IHBhZ2UgdG8g
YmUgaW5zcGVjdGVkPC90aXRsZT48L2hlYWQ+PGJvZHk+PHA+RmlsbGVyIGNvbnRlbnQ8L3A+PC9i
b2R5PiIgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly9leGFtcGxlLmNvbS8i
XV07CisKKyAgICBbW3dlYlZpZXcgX2luc3BlY3Rvcl0gc2hvd107CisgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZkaWRBdHRhY2hMb2NhbEluc3BlY3RvckNhbGxlZCk7CisKKyAgICBhdXRv
IGV4dGVuc2lvbklEID0gW05TVVVJRCBVVUlEXS5VVUlEU3RyaW5nOworICAgIGF1dG8gZXh0ZW5z
aW9uRGlzcGxheU5hbWUgPSBAIkZpcnN0RXh0ZW5zaW9uIjsKKworICAgIC8vIFJlZ2lzdGVyIHRo
ZSB0ZXN0IGV4dGVuc2lvbi4KKyAgICBwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQgPSBmYWxzZTsK
KyAgICBbW3dlYlZpZXcgX2luc3BlY3Rvcl0gcmVnaXN0ZXJFeHRlbnNpb25XaXRoSUQ6ZXh0ZW5z
aW9uSUQgZGlzcGxheU5hbWU6ZXh0ZW5zaW9uRGlzcGxheU5hbWUgY29tcGxldGlvbkhhbmRsZXI6
XihOU0Vycm9yICogX051bGxhYmxlIGVycm9yLCBfV0tJbnNwZWN0b3JFeHRlbnNpb24gKiBfTnVs
bGFibGUgZXh0ZW5zaW9uKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAgICAg
RVhQRUNUX05PVF9OVUxMKGV4dGVuc2lvbik7CisgICAgICAgIHNoYXJlZEluc3BlY3RvckV4dGVu
c2lvbiA9IGV4dGVuc2lvbjsKKworICAgICAgICBwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQgPSB0
cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcGVuZGluZ0NhbGxi
YWNrV2FzQ2FsbGVkKTsKKworICAgIGF1dG8gZXh0ZW5zaW9uRGVsZWdhdGUgPSBhZG9wdE5TKFtJ
bnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZUZvclRlc3RpbmdJbnNwZWN0b3JFeHRlbnNpb24gbmV3
XSk7CisgICAgW3NoYXJlZEluc3BlY3RvckV4dGVuc2lvbiBzZXREZWxlZ2F0ZTpleHRlbnNpb25E
ZWxlZ2F0ZS5nZXQoKV07CisKKyAgICAvLyBDcmVhdGUgYW5kIHNob3cgYW4gZXh0ZW5zaW9uIHRh
Yi4KKyAgICBhdXRvIGljb25VUkwgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzpAInRlc3QtcmVzb3Vy
Y2U6Ly9GaXJzdEV4dGVuc2lvbi9JbnNwZWN0b3JFeHRlbnNpb24tVGFiSWNvbi0zMHgzMC5wbmci
XTsKKyAgICBhdXRvIHNvdXJjZVVSTCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAidGVzdC1yZXNv
dXJjZTovL0ZpcnN0RXh0ZW5zaW9uL0luc3BlY3RvckV4dGVuc2lvbi1iYXNpYy10YWIuaHRtbCJd
OworCisgICAgcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkID0gZmFsc2U7CisgICAgW3NoYXJlZElu
c3BlY3RvckV4dGVuc2lvbiBjcmVhdGVUYWJXaXRoTmFtZTpAIkZpcnN0RXh0ZW5zaW9uLVRhYiIg
dGFiSWNvblVSTDppY29uVVJMIHNvdXJjZVVSTDpzb3VyY2VVUkwgY29tcGxldGlvbkhhbmRsZXI6
XihOU0Vycm9yICogX051bGxhYmxlIGVycm9yLCBOU1N0cmluZyAqIF9OdWxsYWJsZSBleHRlbnNp
b25UYWJJZGVudGlmaWVyKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAgICAg
RVhQRUNUX05PVF9OVUxMKGV4dGVuc2lvblRhYklkZW50aWZpZXIpOworICAgICAgICBzaGFyZWRF
eHRlbnNpb25UYWJJZGVudGlmaWVyID0gZXh0ZW5zaW9uVGFiSWRlbnRpZmllcjsKKworICAgICAg
ICBwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkKTsKKworICAgIHBlbmRp
bmdDYWxsYmFja1dhc0NhbGxlZCA9IGZhbHNlOworICAgIGRpZFNob3dFeHRlbnNpb25UYWJXYXND
YWxsZWQgPSBmYWxzZTsKKyAgICBbW3dlYlZpZXcgX2luc3BlY3Rvcl0gc2hvd0V4dGVuc2lvblRh
YldpdGhJZGVudGlmaWVyOnNoYXJlZEV4dGVuc2lvblRhYklkZW50aWZpZXIuZ2V0KCkgY29tcGxl
dGlvbkhhbmRsZXI6XihOU0Vycm9yICogX051bGxhYmxlIGVycm9yKSB7CisgICAgICAgIEVYUEVD
VF9OVUxMKGVycm9yKTsKKworICAgICAgICBwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQgPSB0cnVl
OworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcGVuZGluZ0NhbGxiYWNr
V2FzQ2FsbGVkKTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRpZFNob3dFeHRlbnNp
b25UYWJXYXNDYWxsZWQpOworCisgICAgLy8gUmVhZCBiYWNrIGEgdmFsdWUgdGhhdCBpcyBzZXQg
aW4gdGhlIDxpZnJhbWU+J3Mgc2NyaXB0IGNvbnRleHQuCisgICAgcGVuZGluZ0NhbGxiYWNrV2Fz
Q2FsbGVkID0gZmFsc2U7CisgICAgYXV0byBzY3JpcHRTb3VyY2UyID0gQCJ3aW5kb3cuX3NlY3Jl
dFZhbHVlIjsKKyAgICBbc2hhcmVkSW5zcGVjdG9yRXh0ZW5zaW9uIF9ldmFsdWF0ZVNjcmlwdDpz
Y3JpcHRTb3VyY2UyIGluRXh0ZW5zaW9uVGFiV2l0aElkZW50aWZpZXI6c2hhcmVkRXh0ZW5zaW9u
VGFiSWRlbnRpZmllci5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRXJyb3IgKiBfTnVsbGFi
bGUgZXJyb3IsIE5TRGljdGlvbmFyeSAqIF9OdWxsYWJsZSByZXN1bHQpIHsKKyAgICAgICAgRVhQ
RUNUX05VTEwoZXJyb3IpOworICAgICAgICBFWFBFQ1RfTk9UX05VTEwocmVzdWx0KTsKKyAgICAg
ICAgRVhQRUNUX05TX0VRVUFMKHJlc3VsdFtAImFuc3dlciJdLCBANDIpOworCisgICAgICAgIHBl
bmRpbmdDYWxsYmFja1dhc0NhbGxlZCA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQpOworCisgICAgLy8gQ2hlY2sg
dG8gc2VlIHRoYXQgc2NyaXB0IGlzIGFjdHVhbGx5IGJlaW5nIGV2YWx1YXRlZCBpbiB0aGUgPGlm
cmFtZT4ncyBzY3JpcHQgY29udGV4dC4KKyAgICBwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQgPSBm
YWxzZTsKKyAgICBhdXRvIHNjcmlwdFNvdXJjZTMgPSBAIndpbmRvdy50b3AgIT09IHdpbmRvdyI7
CisgICAgW3NoYXJlZEluc3BlY3RvckV4dGVuc2lvbiBfZXZhbHVhdGVTY3JpcHQ6c2NyaXB0U291
cmNlMyBpbkV4dGVuc2lvblRhYldpdGhJZGVudGlmaWVyOnNoYXJlZEV4dGVuc2lvblRhYklkZW50
aWZpZXIuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU0Vycm9yICogX051bGxhYmxlIGVycm9y
LCBOU0RpY3Rpb25hcnkgKiBfTnVsbGFibGUgcmVzdWx0KSB7CisgICAgICAgIEVYUEVDVF9OVUxM
KGVycm9yKTsKKyAgICAgICAgRVhQRUNUX05PVF9OVUxMKHJlc3VsdCk7CisgICAgICAgIEVYUEVD
VF9OU19FUVVBTChyZXN1bHQsIEBZRVMpOworCisgICAgICAgIHBlbmRpbmdDYWxsYmFja1dhc0Nh
bGxlZCA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZwZW5k
aW5nQ2FsbGJhY2tXYXNDYWxsZWQpOworCisgICAgLy8gVW5yZWdpc3RlciB0aGUgdGVzdCBleHRl
bnNpb24uCisgICAgcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkID0gZmFsc2U7CisgICAgW1t3ZWJW
aWV3IF9pbnNwZWN0b3JdIHVucmVnaXN0ZXJFeHRlbnNpb246c2hhcmVkSW5zcGVjdG9yRXh0ZW5z
aW9uLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNFcnJvciAqIF9OdWxsYWJsZSBlcnJvcikg
eworICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisKKyAgICAgICAgcGVuZGluZ0NhbGxiYWNr
V2FzQ2FsbGVkID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JnBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVD
VE9SX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUubW0gYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUubW0K
aW5kZXggZjk0NjRiYjZkY2FmMTc3OTY4NjI2NTA1OWI1M2Y3MDM3ZTk4Yzc2NS4uZmYyMzlhZmUy
MTQ1NzZlMThiYzllZDIzMTM4NTNlNTg1MmFjZWQ5MCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLm1t
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tJbnNwZWN0b3JF
eHRlbnNpb25EZWxlZ2F0ZS5tbQpAQCAtMjYsMTAgKzI2LDEyIEBACiAjaW1wb3J0ICJjb25maWcu
aCIKIAogI2ltcG9ydCAiVGVzdC5oIgorI2ltcG9ydCAiVGVzdEluc3BlY3RvclVSTFNjaGVtZUhh
bmRsZXIuaCIKICNpbXBvcnQgIlV0aWxpdGllcy5oIgogI2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVy
ZW5jZXNQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgogI2lt
cG9ydCA8V2ViS2l0L19XS0luc3BlY3Rvci5oPgorI2ltcG9ydCA8V2ViS2l0L19XS0luc3BlY3Rv
ckNvbmZpZ3VyYXRpb24uaD4KICNpbXBvcnQgPFdlYktpdC9fV0tJbnNwZWN0b3JFeHRlbnNpb24u
aD4KICNpbXBvcnQgPFdlYktpdC9fV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5oPgogI2lt
cG9ydCA8V2ViS2l0L19XS0luc3BlY3RvclByaXZhdGVGb3JUZXN0aW5nLmg+CkBAIC00MSw2ICs0
Myw3IEBAIHN0YXRpYyBib29sIGRpZEF0dGFjaExvY2FsSW5zcGVjdG9yQ2FsbGVkID0gZmFsc2U7
CiBzdGF0aWMgYm9vbCBkaWRTaG93RXh0ZW5zaW9uVGFiV2FzQ2FsbGVkID0gZmFsc2U7CiBzdGF0
aWMgYm9vbCBkaWRIaWRlRXh0ZW5zaW9uVGFiV2FzQ2FsbGVkID0gZmFsc2U7CiBzdGF0aWMgYm9v
bCBwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQgPSBmYWxzZTsKK3N0YXRpYyBSZXRhaW5QdHI8VGVz
dEluc3BlY3RvclVSTFNjaGVtZUhhbmRsZXI+IHNoYXJlZFVSTFNjaGVtZUhhbmRsZXI7CiBzdGF0
aWMgUmV0YWluUHRyPF9XS0luc3BlY3RvckV4dGVuc2lvbj4gc2hhcmVkSW5zcGVjdG9yRXh0ZW5z
aW9uOwogc3RhdGljIFJldGFpblB0cjxOU1N0cmluZz4gc2hhcmVkRXh0ZW5zaW9uVGFiSWRlbnRp
ZmllcjsKIApAQCAtNjMsNiArNjYsMTYgQEAgLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICop
d2ViVmlldyBkaWRBdHRhY2hMb2NhbEluc3BlY3RvcjooX1dLSW5zcGVjdG9yICopaW4KICAgICBk
aWRBdHRhY2hMb2NhbEluc3BlY3RvckNhbGxlZCA9IHRydWU7CiB9CiAKKy0gKF9XS0luc3BlY3Rv
ckNvbmZpZ3VyYXRpb24gKilfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBjb25maWd1cmF0
aW9uRm9yTG9jYWxJbnNwZWN0b3I6KF9XS0luc3BlY3RvciAqKWluc3BlY3RvcgoreworICAgIGlm
ICghc2hhcmVkVVJMU2NoZW1lSGFuZGxlcikKKyAgICAgICAgc2hhcmVkVVJMU2NoZW1lSGFuZGxl
ciA9IGFkb3B0TlMoW1tUZXN0SW5zcGVjdG9yVVJMU2NoZW1lSGFuZGxlciBhbGxvY10gaW5pdF0p
OworCisgICAgYXV0byBpbnNwZWN0b3JDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS0luc3Bl
Y3RvckNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbaW5zcGVjdG9yQ29uZmlndXJh
dGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOnNoYXJlZFVSTFNjaGVtZUhhbmRsZXIuZ2V0KCkgZm9y
VVJMU2NoZW1lOkAidGVzdC1yZXNvdXJjZSJdOworICAgIHJldHVybiBpbnNwZWN0b3JDb25maWd1
cmF0aW9uLmF1dG9yZWxlYXNlKCk7Cit9CisKIEBlbmQKIAogCkBAIC0xMTcsOCArMTMwLDggQEAg
VEVTVChXS0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLCBTaG93QW5kSGlkZVRhYkNhbGxiYWNr
cykKICAgICBbc2hhcmVkSW5zcGVjdG9yRXh0ZW5zaW9uIHNldERlbGVnYXRlOmV4dGVuc2lvbkRl
bGVnYXRlLmdldCgpXTsKIAogICAgIC8vIENyZWF0ZSBhbiBleHRlbnNpb24gdGFiLgotICAgIGF1
dG8gaWNvblVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJJbnNw
ZWN0b3JFeHRlbnNpb24tVGFiSWNvbi0zMHgzMCIgd2l0aEV4dGVuc2lvbjpAInBuZyIgc3ViZGly
ZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKLSAgICBhdXRvIHNvdXJjZVVSTCA9
IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJJbnNwZWN0b3JFeHRlbnNp
b24tYmFzaWMtdGFiIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdl
YktpdEFQSS5yZXNvdXJjZXMiXTsKKyAgICBhdXRvIGljb25VUkwgPSBbTlNVUkwgVVJMV2l0aFN0
cmluZzpAInRlc3QtcmVzb3VyY2U6Ly9GaXJzdEV4dGVuc2lvbi9JbnNwZWN0b3JFeHRlbnNpb24t
VGFiSWNvbi0zMHgzMC5wbmciXTsKKyAgICBhdXRvIHNvdXJjZVVSTCA9IFtOU1VSTCBVUkxXaXRo
U3RyaW5nOkAidGVzdC1yZXNvdXJjZTovL0ZpcnN0RXh0ZW5zaW9uL0luc3BlY3RvckV4dGVuc2lv
bi1iYXNpYy10YWIuaHRtbCJdOwogCiAgICAgcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkID0gZmFs
c2U7CiAgICAgW3NoYXJlZEluc3BlY3RvckV4dGVuc2lvbiBjcmVhdGVUYWJXaXRoTmFtZTpAIkZp
cnN0RXh0ZW5zaW9uLVRhYiIgdGFiSWNvblVSTDppY29uVVJMIHNvdXJjZVVSTDpzb3VyY2VVUkwg
Y29tcGxldGlvbkhhbmRsZXI6XihOU0Vycm9yICogX051bGxhYmxlIGVycm9yLCBOU1N0cmluZyAq
IF9OdWxsYWJsZSBleHRlbnNpb25UYWJJZGVudGlmaWVyKSB7CkBAIC0xMzAsMTAgKzE0Myw2IEBA
IFRFU1QoV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZSwgU2hvd0FuZEhpZGVUYWJDYWxsYmFj
a3MpCiAgICAgfV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZwZW5kaW5nQ2FsbGJh
Y2tXYXNDYWxsZWQpOwogCi0gICAgLy8gRm9yY2UgYSBrbm93biBub24tZXh0ZW5zaW9uIHRhYiB0
byBiZSBzaG93biBiZWZvcmUgc2hvd2luZyB0aGUgZXh0ZW5zaW9uIHRhYi4gT3RoZXJ3aXNlLAot
ICAgIC8vIGlmIHRoZSBleHRlbnNpb24gdGFiIHdhcyBhbHJlYWR5IG9wZW4sIHRoZW4gdGhpcyB0
ZXN0IHdvdWxkIGhhbmcgd2FpdGluZyBmb3IgYSBkaWRTaG93IGNhbGxiYWNrLgotICAgIFtbd2Vi
VmlldyBfaW5zcGVjdG9yXSBzaG93Q29uc29sZV07Ci0KICAgICBwZW5kaW5nQ2FsbGJhY2tXYXND
YWxsZWQgPSBmYWxzZTsKICAgICBbW3dlYlZpZXcgX2luc3BlY3Rvcl0gc2hvd0V4dGVuc2lvblRh
YldpdGhJZGVudGlmaWVyOnNoYXJlZEV4dGVuc2lvblRhYklkZW50aWZpZXIuZ2V0KCkgY29tcGxl
dGlvbkhhbmRsZXI6XihOU0Vycm9yICogX051bGxhYmxlIGVycm9yKSB7CiAgICAgICAgIEVYUEVD
VF9OVUxMKGVycm9yKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVz
dEluc3BlY3RvclVSTFNjaGVtZUhhbmRsZXIuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2Ev
VGVzdEluc3BlY3RvclVSTFNjaGVtZUhhbmRsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNzkwN2YyNzkwZTBm
ODNlYmQ5YzNiMjIwZTRmZDIyYjBlNDM3N2ZhCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9jb2NvYS9UZXN0SW5zcGVjdG9yVVJMU2NoZW1lSGFuZGxlci5oCkBAIC0wLDAg
KzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2ltcG9ydCA8V2ViS2l0L1dL
Rm91bmRhdGlvbi5oPgorI2ltcG9ydCA8V2ViS2l0L1dLVVJMU2NoZW1lSGFuZGxlci5oPgorCitO
U19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCitAaW50ZXJmYWNlIFRlc3RJbnNwZWN0b3JVUkxTY2hl
bWVIYW5kbGVyIDogTlNPYmplY3QgPFdLVVJMU2NoZW1lSGFuZGxlcj4KK0BlbmQKKworTlNfQVNT
VU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rl
c3RJbnNwZWN0b3JVUkxTY2hlbWVIYW5kbGVyLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2Nv
YS9UZXN0SW5zcGVjdG9yVVJMU2NoZW1lSGFuZGxlci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNmE0N2IzOTIx
OGQ4MTk0ZDVlOWViODA1YmMxYWU5OWI2NWNiZjA1Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0SW5zcGVjdG9yVVJMU2NoZW1lSGFuZGxlci5tbQpAQCAt
MCwwICsxLDExMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAi
VGVzdEluc3BlY3RvclVSTFNjaGVtZUhhbmRsZXIuaCIKKworI2ltcG9ydCA8V2ViQ29yZS9NSU1F
VHlwZVJlZ2lzdHJ5Lmg+CisjaW1wb3J0IDxXZWJLaXQvV0tVUkxTY2hlbWVUYXNrLmg+CisjaW1w
b3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgorCisvLyBOb3RlOiB0aGlzIGNsYXNzIGlzIGEgc2ltcGxp
ZmllZCB2ZXJzaW9uIG9mIFdLUmVzb3VyY2VVUkxTY2hlbWVIYW5kbGVyIGZvciB0ZXN0aW5nIHB1
cnBvc2VzLgorCitAaW1wbGVtZW50YXRpb24gVGVzdEluc3BlY3RvclVSTFNjaGVtZUhhbmRsZXIg
eworICAgIFJldGFpblB0cjxOU01hcFRhYmxlPGlkIDxXS1VSTFNjaGVtZVRhc2s+LCBOU09wZXJh
dGlvbiAqPj4gX2ZpbGVMb2FkT3BlcmF0aW9uczsKKyAgICBSZXRhaW5QdHI8TlNCdW5kbGU+IF9j
YWNoZWRCdW5kbGU7CisgICAgUmV0YWluUHRyPE5TT3BlcmF0aW9uUXVldWU+IF9vcGVyYXRpb25R
dWV1ZTsKK30KKworLy8gTUFSSyAtIFdLVVJMU2NoZW1lSGFuZGxlciBQcm90b2NvbAorCistICh2
b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc3RhcnRVUkxTY2hlbWVUYXNrOihpZCA8
V0tVUkxTY2hlbWVUYXNrPil1cmxTY2hlbWVUYXNrCit7CisgICAgaWYgKCFfY2FjaGVkQnVuZGxl
KQorICAgICAgICBfY2FjaGVkQnVuZGxlID0gW05TQnVuZGxlIG1haW5CdW5kbGVdOworCisgICAg
aWYgKCFfZmlsZUxvYWRPcGVyYXRpb25zKQorICAgICAgICBfZmlsZUxvYWRPcGVyYXRpb25zID0g
YWRvcHROUyhbW05TTWFwVGFibGUgYWxsb2NdIGluaXRXaXRoS2V5T3B0aW9uczpOU1BvaW50ZXJG
dW5jdGlvbnNTdHJvbmdNZW1vcnkgdmFsdWVPcHRpb25zOk5TUG9pbnRlckZ1bmN0aW9uc1N0cm9u
Z01lbW9yeSBjYXBhY2l0eTo1XSk7CisKKyAgICBpZiAoIV9vcGVyYXRpb25RdWV1ZSkgeworICAg
ICAgICBfb3BlcmF0aW9uUXVldWUgPSBhZG9wdE5TKFtbTlNPcGVyYXRpb25RdWV1ZSBhbGxvY10g
aW5pdF0pOworICAgICAgICBfb3BlcmF0aW9uUXVldWUuZ2V0KCkudW5kZXJseWluZ1F1ZXVlID0g
ZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1ZShRT1NfQ0xBU1NfVVNFUl9JTlRFUkFDVElWRSwgMCk7
CisgICAgICAgIF9vcGVyYXRpb25RdWV1ZS5nZXQoKS5xdWFsaXR5T2ZTZXJ2aWNlID0gTlNPcGVy
YXRpb25RdWFsaXR5T2ZTZXJ2aWNlVXNlckludGVyYWN0aXZlOworCisgICAgICAgIC8vIFRoZSBk
ZWZhdWx0IHZhbHVlIChOU09wZXJhdGlvblF1ZXVlRGVmYXVsdE1heENvbmN1cnJlbnRPcGVyYXRp
b25Db3VudCkgcmVzdWx0cyBpbiBhIGxhcmdlIG51bWJlciBvZiB0aHJlYWRzCisgICAgICAgIC8v
IHRoYXQgY2FuIGV4Y2VlZCB0aGUgc29mdCBsaW1pdCBpZiB0d28gV2ViIEluc3BlY3RvciBpbnN0
YW5jZXMgYXJlIGJlaW5nIGxvYWRlZCBzaW11bHRhbmVvdXNseS4KKyAgICAgICAgX29wZXJhdGlv
blF1ZXVlLmdldCgpLm1heENvbmN1cnJlbnRPcGVyYXRpb25Db3VudCA9IDQ7CisgICAgfQorCisg
ICAgTlNCbG9ja09wZXJhdGlvbiAqb3BlcmF0aW9uID0gW05TQmxvY2tPcGVyYXRpb24gYmxvY2tP
cGVyYXRpb25XaXRoQmxvY2s6XnsKKyAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0
X21haW5fcXVldWUoKSwgXnsKKyAgICAgICAgICAgIFtfZmlsZUxvYWRPcGVyYXRpb25zIHJlbW92
ZU9iamVjdEZvcktleTp1cmxTY2hlbWVUYXNrXTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgTlNV
UkwgKnJlcXVlc3RVUkwgPSB1cmxTY2hlbWVUYXNrLnJlcXVlc3QuVVJMOworICAgICAgICBOU1VS
TCAqZmlsZVVSTEZvclJlcXVlc3QgPSBbX2NhY2hlZEJ1bmRsZSBVUkxGb3JSZXNvdXJjZTpyZXF1
ZXN0VVJMLnJlbGF0aXZlUGF0aCB3aXRoRXh0ZW5zaW9uOkAiIiBzdWJkaXJlY3Rvcnk6QCJUZXN0
V2ViS2l0QVBJLnJlc291cmNlcyJdOworICAgICAgICBpZiAoIWZpbGVVUkxGb3JSZXF1ZXN0KSB7
CisgICAgICAgICAgICBbdXJsU2NoZW1lVGFzayBkaWRGYWlsV2l0aEVycm9yOltOU0Vycm9yIGVy
cm9yV2l0aERvbWFpbjpOU0NvY29hRXJyb3JEb21haW4gY29kZTpOU1VSTEVycm9yRmlsZURvZXNO
b3RFeGlzdCB1c2VySW5mbzpuaWxdXTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIE5TRXJyb3IgKnJlYWRFcnJvcjsKKyAgICAgICAgTlNEYXRhICpmaWxlRGF0YSA9
IFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mVVJMOmZpbGVVUkxGb3JSZXF1ZXN0IG9wdGlvbnM6
MCBlcnJvcjomcmVhZEVycm9yXTsKKyAgICAgICAgaWYgKCFmaWxlRGF0YSkgeworICAgICAgICAg
ICAgW3VybFNjaGVtZVRhc2sgZGlkRmFpbFdpdGhFcnJvcjpbTlNFcnJvciBlcnJvcldpdGhEb21h
aW46TlNDb2NvYUVycm9yRG9tYWluIGNvZGU6TlNVUkxFcnJvclJlc291cmNlVW5hdmFpbGFibGUg
dXNlckluZm86QHsKKyAgICAgICAgICAgICAgICBOU1VuZGVybHlpbmdFcnJvcktleTogcmVhZEVy
cm9yLAorICAgICAgICAgICAgfV1dOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK
KyAgICAgICAgTlNTdHJpbmcgKm1pbWVUeXBlID0gV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6
bWltZVR5cGVGb3JFeHRlbnNpb24oZmlsZVVSTEZvclJlcXVlc3QucGF0aEV4dGVuc2lvbik7Cisg
ICAgICAgIGlmICghbWltZVR5cGUpCisgICAgICAgICAgICBtaW1lVHlwZSA9IEAiYXBwbGljYXRp
b24vb2N0ZXQtc3RyZWFtIjsKKworICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFy
eT4gaGVhZGVyRmllbGRzID0gYWRvcHROUyhAeworICAgICAgICAgICAgQCJBY2Nlc3MtQ29udHJv
bC1BbGxvdy1PcmlnaW4iOiBAIioiLAorICAgICAgICAgICAgQCJDb250ZW50LUxlbmd0aCI6IFtO
U1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJXp1IiwgKHNpemVfdClmaWxlRGF0YS5sZW5ndGhd
LAorICAgICAgICAgICAgQCJDb250ZW50LVR5cGUiOiBtaW1lVHlwZSwKKyAgICAgICAgfS5tdXRh
YmxlQ29weSk7CisKKyAgICAgICAgUmV0YWluUHRyPE5TSFRUUFVSTFJlc3BvbnNlPiB1cmxSZXNw
b25zZSA9IGFkb3B0TlMoW1tOU0hUVFBVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dXJs
U2NoZW1lVGFzay5yZXF1ZXN0LlVSTCBzdGF0dXNDb2RlOjIwMCBIVFRQVmVyc2lvbjpuaWwgaGVh
ZGVyRmllbGRzOmhlYWRlckZpZWxkcy5nZXQoKV0pOworICAgICAgICBbdXJsU2NoZW1lVGFzayBk
aWRSZWNlaXZlUmVzcG9uc2U6dXJsUmVzcG9uc2UuZ2V0KCldOworICAgICAgICBbdXJsU2NoZW1l
VGFzayBkaWRSZWNlaXZlRGF0YTpmaWxlRGF0YV07CisgICAgICAgIFt1cmxTY2hlbWVUYXNrIGRp
ZEZpbmlzaF07CisgICAgfV07CisgICAgCisgICAgW19maWxlTG9hZE9wZXJhdGlvbnMgc2V0T2Jq
ZWN0Om9wZXJhdGlvbiBmb3JLZXk6dXJsU2NoZW1lVGFza107CisgICAgW19vcGVyYXRpb25RdWV1
ZSBhZGRPcGVyYXRpb246b3BlcmF0aW9uXTsKK30KKworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZp
ZXcgKil3ZWJWaWV3IHN0b3BVUkxTY2hlbWVUYXNrOihpZCA8V0tVUkxTY2hlbWVUYXNrPil1cmxT
Y2hlbWVUYXNrCit7CisgICAgLy8gRW5zdXJlIHRoYXQgYWxsIGJsb2NrcyB3aXRoIHBlbmRpbmcg
cmVtb3ZhbHMgYXJlIGRpc3BhdGNoZWQgYmVmb3JlIGRvaW5nIGEgbWFwIGxvb2t1cC4KKyAgICBk
aXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgICAgICBpZiAo
TlNPcGVyYXRpb24gKm9wZXJhdGlvbiA9IFtfZmlsZUxvYWRPcGVyYXRpb25zIG9iamVjdEZvcktl
eTp1cmxTY2hlbWVUYXNrXSkgeworICAgICAgICAgICAgW29wZXJhdGlvbiBjYW5jZWxdOworICAg
ICAgICAgICAgW19maWxlTG9hZE9wZXJhdGlvbnMgcmVtb3ZlT2JqZWN0Rm9yS2V5OnVybFNjaGVt
ZVRhc2tdOworICAgICAgICB9CisgICAgfSk7Cit9CisKK0BlbmQKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQppbmRleCA0Mjk0MGFlNDFmYjZlODQ5Mjg4ZTk3NGU0
MjU3NjRjN2QwN2JlZGYxLi5jMDJlMGRmNDI2NzA2ODNkYjU3ZjAzOTBhMWM2NGU3NzdmYTU4Zjhi
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0K
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCkBAIC0zMyw2
ICszMyw3IEBACiAKICNpbXBvcnQgPFdlYktpdC9XS0NvbnRlbnRXb3JsZC5oPgogI2ltcG9ydCA8
V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQv
V0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmcuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJLaXRQcml2
YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLQWN0aXZhdGVkRWxlbWVudEluZm8uaD4KICNpbXBv
cnQgPFdlYktpdC9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaD4K
</data>
<flag name="commit-queue"
          id="463182"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439523</attachid>
            <date>2021-09-28 14:50:18 -0700</date>
            <delta_ts>2021-09-29 11:12:30 -0700</delta_ts>
            <desc>Patch v2.0.1 (tvOS build fix)</desc>
            <filename>bug-230646-20210928145017.patch</filename>
            <type>text/plain</type>
            <size>80744</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzMTg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTk5NzYzMzY3MzJmNjUx
MTBlM2RkMThiNDcxYWI5MThkZmNlMmY5My4uNmI1NDY5YWY5ZDkwNjM0YTZhYTAyNGZiMDAyNWE0
ZWEyMjQzYTI2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIxLTA5LTI3ICBCSiBC
dXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gYWRkIF9XS0luc3BlY3Rv
ckV4dGVuc2lvbiBTUEkgdG8gZXZhbHVhdGUgc2NyaXB0IG9uIGFuIGV4dGVuc2lvbiB0YWIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDY0NgorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vODM0MjAzMjg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGV2
aW4gUm91c3NvLgorCisgICAgICAgIEV4ZXJjaXNlZCBieSBuZXcgQVBJIHRlc3Q6IFdLSW5zcGVj
dG9yRXh0ZW5zaW9uLkNhbkV2YWx1YXRlU2NyaXB0SW5FeHRlbnNpb25UYWIKKworICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
RnJvbnRlbmRIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kSG9z
dDo6ZXZhbHVhdGVTY3JpcHRJbkV4dGVuc2lvblRhYik6CisgICAgICAgIEZpbmQgdGhlIGdsb2Jh
bCBvYmplY3QgdGhhdCBjb3JyZXNwb25kcyB0byB0aGUgcGFzc2VkLWluIDxpZnJhbWU+IGFuZAor
ICAgICAgICB0cnkgdG8gZXZhbHVhdGUgc2NyaXB0U291cmNlIGluIHRoZSBtYWluVGhyZWFkTm9y
bWFsV29ybGQoKSBvZiB0aGF0IDxpZnJhbWU+LgorCisgICAgICAgICogaHRtbC9IVE1MSUZyYW1l
RWxlbWVudC5pZGw6IEFkZCBbSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0XSBzbyB0aGF0CisgICAg
ICAgIGl0J3MgcG9zc2libGUgdG8gcGFzcyBIVE1MSUZyYW1lRWxlbWVudCB0byB0aGUgSURMIGZ1
bmN0aW9uIGFuZCBjb252ZXJ0IGl0CisgICAgICAgIHRvIHRoZSBuYXRpdmUgb2JqZWN0IChIVE1M
SUZyYW1lRWxlbWVudCYpIGZyb20gYSBKU1ZhbHVlLgorCiAyMDIxLTA5LTI4ICBZb3Vlbm4gRmFi
bGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBbQmlnU3VyIHdrMiBEZWJ1ZyBpT1Mx
NCBdIHdlYnJ0Yy92aWRlby1tdXRlLmh0bWwgaXMgYSBmbGFreSBmYWlsdXJlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L0NoYW5nZUxvZwppbmRleCAzYWU2NGE5ZGE5MTIzZDY3N2RmZWQ2MjcyNTk0ZDFlN2FmMjliZjc0
Li44MDNhZDIyYjMzMGI4NmFiMDI4YTU3NTgzZjIzMTliYzhlMzkwZDJlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NiBAQAorMjAyMS0wOS0yNyAgQkogQnVyZyAgPGJidXJn
QGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIGFkZCBfV0tJbnNwZWN0b3JFeHRlbnNpb24g
U1BJIHRvIGV2YWx1YXRlIHNjcmlwdCBvbiBhbiBleHRlbnNpb24gdGFiCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzA2NDYKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzgzNDIwMzI4PgorCisgICAgICAgIFJldmlld2VkIGJ5IERldmluIFJvdXNzby4K
KworICAgICAgICBBZGQgYSBuZXcgSW5zcGVjdG9yRnJvbnRlbmRBUEkgbWV0aG9kIHRvIGV2YWx1
YXRlIHNjcmlwdCBvbiBhbiBpZnJhbWUgd2l0aGluCisgICAgICAgIFdlYiBJbnNwZWN0b3IuIFRo
aXMgaW4gdHVybiBjYWxscyBvdXQgdG8gSW5zcGVjdG9yRnJvbnRlbmRIb3N0IHRvIGRvIHRoZSBh
Y3R1YWwgZXZhbHVhdGlvbi4KKyAgICAgICAgT3RoZXJ3aXNlLCB0aGUgQ1NQIHBvbGljeSBzZXQg
YnkgdGhlIHRhYiBjb250ZW50IG1heSBibG9jayBhbnkgc3VjaCBldmFsdWF0aW9uCisgICAgICAg
IGlmIHRoZSAnc2NyaXB0LXNyYycgZGlyZWN0aXZlIGRvZXMgbm90IGluY2x1ZGUgJ3Vuc2FmZS1l
dmFsJy4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJvbnRl
bmRBUEkuanM6CisgICAgICAgIChJbnNwZWN0b3JGcm9udGVuZEFQSS5zaG93RXh0ZW5zaW9uVGFi
KToKKyAgICAgICAgKEluc3BlY3RvckZyb250ZW5kQVBJLmV2YWx1YXRlU2NyaXB0SW5FeHRlbnNp
b25UYWIpOgorICAgICAgICBDYWxsIHRocm91Z2ggdG8gdGhlIFdlYkluc3BlY3RvckV4dGVuc2lv
bkNvbnRyb2xsZXIgbWV0aG9kLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Db250cm9sbGVy
cy9XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLmpzOgorICAgICAgICAoV0kuV2ViSW5z
cGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5wcm90b3R5cGUuZXZhbHVhdGVTY3JpcHRJbkV4dGVu
c2lvblRhYik6IEFkZGVkLgorICAgICAgICBUcnkgdG8gZ2V0IHRoZSA8aWZyYW1lPiBmb3IgYSBl
eHRlbnNpb25UYWJJRCwgYW5kIHVzZSBJbnNwZWN0b3JGcm9udGVuZEhvc3QgdG8KKyAgICAgICAg
ZXZhbHVhdGUgc2NyaXB0IGluIHRoZSBjb250ZXh0IG9mIHRoZSA8aWZyYW1lPi4gQmUgc3VyZSB0
byBjb3JyZWN0bHkgd3JhcCB0aGUgcmVzdWx0LgorCisgICAgICAgICogVXNlckludGVyZmFjZS9W
aWV3cy9XZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50Vmlldy5qczoKKyAgICAgICAgKFdJ
LldlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3KToKKyAgICAgICAgKFdJLldlYklu
c3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3LnByb3RvdHlwZS5nZXQgaWZyYW1lRWxlbWVu
dCk6CisgICAgICAgIChXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50Vmlldy5zaG91
bGRTYXZlVGFiKToKKyAgICAgICAgKFdJLldlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRW
aWV3LnByb3RvdHlwZS5pbml0aWFsTGF5b3V0KTogRGVsZXRlZC4KKyAgICAgICAgV2hpbGUgd3Jp
dGluZyB0aGUgQVBJIHRlc3QsIEkgc2F3IHRoYXQgdGhlIGZpcnN0IGV2YWx1YXRpb24gZnJlcXVl
bnRseSBmYWlsZWQKKyAgICAgICAgYmVjYXVzZSB0aGUgPGlmcmFtZT4gZGlkIG5vdCBleGlzdC4g
Q2hhbmdlIHRoaXMgY2xhc3Mgc28gdGhhdCB0aGUgPGlmcmFtZT4KKyAgICAgICAgaXMgY3JlYXRl
ZCBpbiB0aGUgY29uc3RydWN0b3IuIEFkZCBhIGdldHRlciBmb3IgdGhlIDxpZnJhbWU+IGVsZW1l
bnQuCisKKyAgICAgICAgKFdJLldlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3LnBy
b3RvdHlwZS5fZXh0ZW5zaW9uRnJhbWVEaWRMb2FkKToKKyAgICAgICAgKFdJLldlYkluc3BlY3Rv
ckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3LnByb3RvdHlwZS5fbWF5YmVEaXNwYXRjaERpZFNob3dF
eHRlbnNpb25UYWIpOgorICAgICAgICBXaGlsZSB3cml0aW5nIHRoaXMgcGF0Y2gsIGl0IGJlY2Ft
ZSBhcHBhcmVudCB0aGF0IGRpZFNob3dFeHRlbnNpb25UYWIoKSB3YXMgYmVpbmcKKyAgICAgICAg
Y2FsbGVkIHByaW9yIHRvIHRoZSBpZnJhbWUgYWN0dWFsbHkgY29tcGxldGluZyBpdHMgaW5pdGlh
bCBsb2FkLiBUaGVuLCB0aGUgdGVzdAorICAgICAgICB3b3VsZCB0cnkgdG8gZXZhbHVhdGUgc2Ny
aXB0IG9uIGFib3V0OmJsYW5rIGluc3RlYWQgb2YgdGhlIGFjdHVhbCB0YWIgY29udGVudC4KKyAg
ICAgICAgVG8gZml4IHRoaXMsIHJlcXVpcmUgdGhhdCB0aGUgPGlmcmFtZT4gYmUgYXR0YWNoZWQg
YW5kIGhhdmUgZmlyZWQgdGhlIGBvbmxvYWRgIGV2ZW50CisgICAgICAgIGJlZm9yZSB3ZSBub3Rp
ZnkgY2xpZW50cyB0aGF0IGl0IGhhcyBiZWVuICdzaG93bicuCisKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL01haW4uaHRtbDoKKyAgICAgICAgQWRqdXN0IHRoZSBkZWZhdWx0IENTUCBwb2xpY3kg
dG8gbm90IG1lbnRpb24gaW1nLXNyYy4gVGhpcyBhbGxvd3MgcG9ydHMgc3VjaCBhcworICAgICAg
ICBDb2NvYSB0byBzZXQgdGhlaXIgb3duIGltZy1zcmMgQ1NQIGRpcmVjdGl2ZS4gVGhlc2UgY2hh
bmdlcyBhcmUgbmVjZXNzYXJ5IHRvIGFsbG93CisgICAgICAgIGltYWdlcyB0byBsb2FkIGZyb20g
Y3VzdG9tIFVSTCBzY2hlbWVzLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9UYWJC
cm93c2VyLmpzOgorICAgICAgICAoV0kuVGFiQnJvd3Nlci5wcm90b3R5cGUuYmVzdFRhYkNvbnRl
bnRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3QpOgorICAgICAgICBUaGUgbmV3IEFQSSB0ZXN0IGV4
cG9zZXMgYSBidWcgaW4gdGhpcyBhc3NlcnRpb24sIG5hbWVseSwgdGhhdCBpdCBkb2VzIG5vdCBh
Y2NvdW50CisgICAgICAgIGZvciB0aGUgc2l0dWF0aW9uIHdoZXJlIGEgdGFiIGRvZXMgbm90IHdp
c2ggdG8gYmUgc2F2ZWQuIEluIHRoYXQgY2FzZSwgdGhlIGRpc3BsYXllZAorICAgICAgICBXZWJJ
bnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50VmlldyBpcyAqbm90KiBhdCBpbmRleCAwIG9mIFdJ
LlRhYkJyb3dzZXIucmVjZW50VGFiQ29udGVudFZpZXdzLgorICAgICAgICBUaGlzIGlzIGNvcnJl
Y3RseSBoYW5kbGVkIHdpdGggYSBzcGVjaWFsIGNhc2UgaW4gV0kuVGFiQnJvd3Nlci5fdGFiQmFy
SXRlbVNlbGVjdGVkLAorICAgICAgICBzbyBpbmNvcnBvcmF0ZSB0aGF0IGxvZ2ljIGludG8gdGhl
IGFzc2VydGlvbi4KKwogMjAyMS0wOS0yNyAgQkogQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbQ29jb2FdIEFkZCBTUEkgdG8gc2VsZWN0IGEgdGFiIGNyZWF0ZWQgYnkgX1dLSW5z
cGVjdG9yRXh0ZW5zaW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDYyYjY2YmM1MmRmZjdkMzNlYmYyODJhZDQ1Mzli
YzJiZjE5ZmI3ZDIuLjA1YWYwN2M4MDQ0MzY1Y2VlY2QzYjdjZDM0MTk5ZjQ2YzEyZmExNzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNTkgQEAKKzIwMjEtMDktMjcgIEJKIEJ1cmcgIDxiYnVyZ0BhcHBs
ZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBhZGQgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uIFNQSSB0
byBldmFsdWF0ZSBzY3JpcHQgb24gYW4gZXh0ZW5zaW9uIHRhYgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwNjQ2CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS84MzQyMDMyOD4KKworICAgICAgICBSZXZpZXdlZCBieSBEZXZpbiBSb3Vzc28uCisKKyAg
ICAgICAgQWRkIG5ldyB0ZXN0aW5nIEFQSSBmb3IgZXZhbHVhdGluZyBzY3JpcHQgZXhwcmVzc2lv
bnMgaW4gdGhlIGNvbnRleHQgb2YgYQorICAgICAgICB0YWIgY3JlYXRlZCBieSBfV0tJbnNwZWN0
b3JFeHRlbnNpb24uIEZvciB0aGUgbW9zdCBwYXJ0LCB0aGlzIGlzIGltcGxlbWVudGVkCisgICAg
ICAgIGluIHRoZSBzYW1lIHdheSBhcyB0aGUgLWV2YWx1YXRlU2NyaXB0OiBtZXRob2QsIGJ1dCB0
aGUgc2NyaXB0IGlzIGV2YWx1YXRlZAorICAgICAgICB3aXRoaW4gdGhlIFdlYiBJbnNwZWN0b3Ig
ZnJvbnRlbmQgaXRzZWxmIHJhdGhlciB0aGFuIGluIHRoZSBpbnNwZWN0ZWQgcGFnZS4KKworICAg
ICAgICBUbyBhdm9pZCBDU1AgaXNzdWVzLCB0aGUgYWN0dWFsIGV2YWx1YXRpb24gaXMgcGVyZm9y
bWVkIG9uIHN1YmZyYW1lcyB1c2luZyBhCisgICAgICAgIG5ldyBJbnNwZWN0b3JGcm9udGVuZEhv
c3QgbWV0aG9kIHdoaWNoIHRha2VzIGFuIDxpZnJhbWU+IGFuZCBzY3JpcHQgc291cmNlLgorCisg
ICAgICAgIEFsb25nIHRoZSB3YXksIHR3ZWFrIFdlYiBJbnNwZWN0b3IncyBDU1AgcG9saWN5IHRv
IGFsbG93IGxvYWRpbmcgaW1hZ2VzIGZyb20KKyAgICAgICAgY3VzdG9tIFVSTCBzY2hlbWVzIGFz
IHNwZWNpZmllZCB1c2luZyBfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uLiBUaGlzIGlzIHNvCisg
ICAgICAgIHRoYXQgdGFiIGljb25zIGZyb20gdGhlIHRlc3QtcmVzb3VyY2U6IHNjaGVtZSBjYW4g
YmUgbG9hZGVkIGluIHRoZSBtYWluIGZyYW1lCisgICAgICAgIG9mIFdlYiBJbnNwZWN0b3IncyBX
S1dlYlZpZXcgdW5kZXIgdGVzdGluZyBzaXR1YXRpb25zLgorCisgICAgICAgICogU291cmNlc0Nv
Y29hLnR4dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgQWRkIG5ldyBmaWxlcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSW5zcGVj
dG9yRXh0ZW5zaW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRl
bnNpb24uY3BwOgorICAgICAgICAoQVBJOjpJbnNwZWN0b3JFeHRlbnNpb246OmV2YWx1YXRlU2Ny
aXB0SW5FeHRlbnNpb25UYWIpOgorICAgICAgICBCYXNlZCBvbiBldmFsdWF0ZVNjcmlwdCgpLiBD
YWxsIHRocm91Z2ggdG8gdGhlIHNoYXJlZCBleHRlbnNpb24gY29udHJvbGxlci4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uUHJpdmF0ZUZvclRl
c3RpbmcuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0
b3JFeHRlbnNpb25UZXN0aW5nLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bX1dLSW5zcGVjdG9yRXh0
ZW5zaW9uIF9ldmFsdWF0ZVNjcmlwdDppbkV4dGVuc2lvblRhYldpdGhJZGVudGlmaWVyOmNvbXBs
ZXRpb25IYW5kbGVyOl0pOgorICAgICAgICBBZGRlZC4gQ2FsbCB0aHJvdWdoIHRvIHRoZSBzaGFy
ZWQgZXh0ZW5zaW9uIGNvbnRyb2xsZXIuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9y
L1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclBy
b3h5OjpldmFsdWF0ZVNjcmlwdEluRXh0ZW5zaW9uVGFiKToKKyAgICAgICAgQmFzZWQgb24gZXZh
bHVhdGVTY3JpcHQoKS4gU2VuZCBJUEMgdG8gdGhlIEluc3BlY3RvciBXZWJQcm9jZXNzLgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5z
cGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6ZXZhbHVhdGVTY3JpcHRJ
bkV4dGVuc2lvblRhYik6CisgICAgICAgIEJhc2VkIG9uIGV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5z
aW9uLiBDYWxsIGludG8gdGhlIGZyb250ZW5kIEFQSQorICAgICAgICB3aGljaCB3aWxsIHBlcmZv
cm0gdGhlIGFjdHVhbCBldmFsdWF0aW9uIG9uIHRoZSA8aWZyYW1lPiBjb250ZW50V2luZG93Lgor
CisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV0tJbnNwZWN0b3JSZXNvdXJjZVVS
TFNjaGVtZUhhbmRsZXIubW06CisgICAgICAgICgtW1dLSW5zcGVjdG9yUmVzb3VyY2VVUkxTY2hl
bWVIYW5kbGVyIHdlYlZpZXc6c3RhcnRVUkxTY2hlbWVUYXNrOl0pOgorICAgICAgICBTcGVjaWZ5
IHRoZSBsaXN0IG9mIGN1c3RvbSBwcm90b2NvbHMgYXMgYWxsb3dhYmxlIHNvdXJjZXMgZm9yICdp
bWctc3JjJy4KKyAgICAgICAgVGhlICdpbWctc3JjJyBkaXJlY3RpdmUgYWxzbyBpbmNsdWRlcyAn
ZmlsZTogYmxvYjogcmVzb3VyY2U6JyBhcyBhbGxvd2FibGUKKyAgICAgICAgc291cmNlcywgc2lu
Y2UgdGhpcyB3YXMgdGhlIHByZXZpb3VzIENTUCBwb2xpY3kgZGVmaW5lZCBpbiBNYWluLmh0bWwu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvR3JvdXBBY3Rpdml0aWVzL0dyb3VwQWN0aXZp
dGllc1Nlc3Npb25Ob3RpZmllci5tbToKKyAgICAgICAgRml4IFVuaWZpZWRTb3VyY2VzIGZhbGxv
dXQgYnkgaW5jbHVkaW5nIGEgbWlzc2luZyBoZWFkZXIuCisKIDIwMjEtMDktMjcgIEJKIEJ1cmcg
IDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBBZGQgU1BJIHRvIHNlbGVjdCBh
IHRhYiBjcmVhdGVkIGJ5IF9XS0luc3BlY3RvckV4dGVuc2lvbgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJRnJhbWVFbGVtZW50LmlkbAppbmRleCA5Yjc3ZmY2NjczMjdiZjRiYTM2NTE3ZGZjZWM2
NDhjMDVmNzUwYTU4Li41Zjc2MDFkODYwNzdjODIyYTlkOTIzMzQwZTc1YTdhN2M4YjA3NDA5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmlkbApAQCAtMTksNyArMTks
OCBAQAogICovCiAKIFsKLSAgICBFeHBvc2VkPVdpbmRvdworICAgIEV4cG9zZWQ9V2luZG93LAor
ICAgIEpTR2VuZXJhdGVUb05hdGl2ZU9iamVjdAogXSBpbnRlcmZhY2UgSFRNTElGcmFtZUVsZW1l
bnQgOiBIVE1MRWxlbWVudCB7CiAgICAgW1JlZmxlY3QsIENFUmVhY3Rpb25zPU5vdE5lZWRlZF0g
YXR0cmlidXRlIERPTVN0cmluZyBhbGlnbjsKICAgICBbUmVmbGVjdCwgQ0VSZWFjdGlvbnM9Tm90
TmVlZGVkXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGZyYW1lQm9yZGVyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcAppbmRleCBhZTI4YjJm
OTc3ZWZmOTRiNTM0MDE1MWUzMjM2Nzg2NDU5YWVkNzVlLi5lNTQ4OGEyMTdhYzk3YjE2MTQ1OGRh
MjcwMmEzZWI4ZGVmNDM3ZjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIkZs
b2F0UmVjdC5oIgogI2luY2x1ZGUgIkZvY3VzQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkZyYW1l
LmgiCisjaW5jbHVkZSAiSFRNTElGcmFtZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVz
dWx0LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkluc3Bl
Y3RvckRlYnVnZ2FibGVUeXBlLmgiCkBAIC02OSw2ICs3MCw3IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7Cit1c2luZyBWYWx1ZU9yRXhjZXB0aW9u
ID0gRXhwZWN0ZWQ8SlNDOjpKU1ZhbHVlLCBFeGNlcHRpb25EZXRhaWxzPjsKIAogI2lmIEVOQUJM
RShDT05URVhUX01FTlVTKQogY2xhc3MgRnJvbnRlbmRNZW51UHJvdmlkZXIgOiBwdWJsaWMgQ29u
dGV4dE1lbnVQcm92aWRlciB7CkBAIC03MDYsNiArNzA4LDI4IEBAIHZvaWQgSW5zcGVjdG9yRnJv
bnRlbmRIb3N0OjpkaWRIaWRlRXh0ZW5zaW9uVGFiKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uSUQs
IGNvbnN0CiAgICAgCiAgICAgbV9jbGllbnQtPmRpZEhpZGVFeHRlbnNpb25UYWIoZXh0ZW5zaW9u
SUQsIGV4dGVuc2lvblRhYklEKTsKIH0KKworRXhjZXB0aW9uT3I8SlNDOjpKU1ZhbHVlPiBJbnNw
ZWN0b3JGcm9udGVuZEhvc3Q6OmV2YWx1YXRlU2NyaXB0SW5FeHRlbnNpb25UYWIoSFRNTElGcmFt
ZUVsZW1lbnQmIGV4dGVuc2lvbkZyYW1lRWxlbWVudCwgY29uc3QgU3RyaW5nJiBzY3JpcHRTb3Vy
Y2UpCit7CisgICAgRnJhbWUqIGZyYW1lID0gZXh0ZW5zaW9uRnJhbWVFbGVtZW50LmNvbnRlbnRG
cmFtZSgpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZh
bGlkU3RhdGVFcnJvciwgIlVuYWJsZSB0byBmaW5kIGdsb2JhbCBvYmplY3QgZm9yIDxpZnJhbWU+
Il9zIH07CisKKyAgICBSZWY8RnJhbWU+IHByb3RlY3RlZEZyYW1lKCpmcmFtZSk7CisKKyAgICBK
U0RPTUdsb2JhbE9iamVjdCogZnJhbWVHbG9iYWxPYmplY3QgPSBmcmFtZS0+c2NyaXB0KCkuZ2xv
YmFsT2JqZWN0KG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKTsKKyAgICBpZiAoIWZyYW1lR2xvYmFs
T2JqZWN0KQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJV
bmFibGUgdG8gZmluZCBnbG9iYWwgb2JqZWN0IGZvciA8aWZyYW1lPiJfcyB9OworCisgICAgSlND
OjpTdXNwZW5kRXhjZXB0aW9uU2NvcGUgc2NvcGUoJmZyYW1lR2xvYmFsT2JqZWN0LT52bSgpKTsK
KyAgICBWYWx1ZU9yRXhjZXB0aW9uIHJlc3VsdCA9IGZyYW1lLT5zY3JpcHQoKS5ldmFsdWF0ZUlu
V29ybGQoU2NyaXB0U291cmNlQ29kZShzY3JpcHRTb3VyY2UpLCBtYWluVGhyZWFkTm9ybWFsV29y
bGQoKSk7CisgICAgCisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBJbnZhbGlkU3RhdGVFcnJvciwgcmVzdWx0LmVycm9yKCkubWVzc2FnZSB9OworCisgICAgcmV0
dXJuIFdURk1vdmUocmVzdWx0LnZhbHVlKCkpOworfQorCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BF
Q1RPUl9FWFRFTlNJT05TKQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JGcm9udGVuZEhvc3QuaAppbmRleCA2ZDJlNTZjN2FlOGZlZGZhNjU5MGYxNGIxYWRmODA4
YTJmYTAwYmY2Li4xNjIyNmFhMmJiY2RkMDVjYjY3MDI1MzFkMDMzYjgyZTg2NDA4MzhmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5oCkBA
IC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJDb250ZXh0TWVudS5oIgogI2luY2x1ZGUgIkNv
bnRleHRNZW51UHJvdmlkZXIuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtMzksNiArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBET01XcmFwcGVyV29ybGQ7CiBjbGFzcyBFdmVudDsKIGNsYXNzIEZyb250ZW5kTWVu
dVByb3ZpZGVyOworY2xhc3MgSFRNTElGcmFtZUVsZW1lbnQ7CiBjbGFzcyBJbnNwZWN0b3JGcm9u
dGVuZENsaWVudDsKIGNsYXNzIFBhZ2U7CiAKQEAgLTE0MSw2ICsxNDMsNyBAQCBwdWJsaWM6CiAj
aWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQogICAgIHZvaWQgZGlkU2hvd0V4dGVuc2lv
blRhYihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbklELCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvblRh
YklEKTsKICAgICB2b2lkIGRpZEhpZGVFeHRlbnNpb25UYWIoY29uc3QgU3RyaW5nJiBleHRlbnNp
b25JRCwgY29uc3QgU3RyaW5nJiBleHRlbnNpb25UYWJJRCk7CisgICAgRXhjZXB0aW9uT3I8SlND
OjpKU1ZhbHVlPiBldmFsdWF0ZVNjcmlwdEluRXh0ZW5zaW9uVGFiKEhUTUxJRnJhbWVFbGVtZW50
JiBleHRlbnNpb25GcmFtZSwgY29uc3QgU3RyaW5nJiBzY3JpcHRTb3VyY2UpOwogI2VuZGlmCiAK
IHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RnJvbnRlbmRIb3N0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZEhvc3QuaWRsCmluZGV4IDk3ZjgwNmYyYWMwZjMxYjg5NmU1OTcxMTk3OWJkZmFmYzdmOGVh
MjkuLjMyZDk3NDJiNDdjNjc5YjdhZjM3MTVkZWUzOTE5ZTY2NzhlYzA3ZjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaWRsCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNy0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBNYXR0IExpbGVrIDx3
ZWJraXRAbWF0dGxpbGVrLmNvbT4KICAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKQEAgLTEwMCw2ICsxMDAsNyBAQAogICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBib29sZWFuIHN1cHBvcnRzV2ViRXh0ZW5zaW9uczsKICAgICBbQ29uZGl0aW9u
YWw9SU5TUEVDVE9SX0VYVEVOU0lPTlNdIHVuZGVmaW5lZCBkaWRTaG93RXh0ZW5zaW9uVGFiKERP
TVN0cmluZyBleHRlbnNpb25JRCwgRE9NU3RyaW5nIGV4dGVuc2lvblRhYklEKTsKICAgICBbQ29u
ZGl0aW9uYWw9SU5TUEVDVE9SX0VYVEVOU0lPTlNdIHVuZGVmaW5lZCBkaWRIaWRlRXh0ZW5zaW9u
VGFiKERPTVN0cmluZyBleHRlbnNpb25JRCwgRE9NU3RyaW5nIGV4dGVuc2lvblRhYklEKTsKKyAg
ICBbQ29uZGl0aW9uYWw9SU5TUEVDVE9SX0VYVEVOU0lPTlNdIGFueSBldmFsdWF0ZVNjcmlwdElu
RXh0ZW5zaW9uVGFiKEhUTUxJRnJhbWVFbGVtZW50IGV4dGVuc2lvbkZyYW1lLCBET01TdHJpbmcg
c2NyaXB0U291cmNlKTsKIH07CiAKIGRpY3Rpb25hcnkgQ29udGV4dE1lbnVJdGVtIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1dl
Ykluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Db250cm9sbGVycy9XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVy
LmpzCmluZGV4IGVkYjA5YzA0YzcwYWU5NjViM2MxNzY1NWNhMTIwODE0ZjhhMjA0YTMuLjU3NWI0
MDgyN2M1MTdkMmFhZTc1NjY5ZDAyNWUyOTliODk3YzU4ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1dlYkluc3BlY3RvckV4dGVu
c2lvbkNvbnRyb2xsZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvQ29udHJvbGxlcnMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5qcwpAQCAtMTcw
LDYgKzE3MCwyNyBAQCBXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyID0gY2xhc3Mg
V2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlciBleHRlbgogICAgICAgICAgICAgcmV0dXJu
IFdJLldlYkluc3BlY3RvckV4dGVuc2lvbi5FcnJvckNvZGUuSW50ZXJuYWxFcnJvcjsKICAgICAg
ICAgfQogICAgIH0KKworICAgIGV2YWx1YXRlU2NyaXB0SW5FeHRlbnNpb25UYWIoZXh0ZW5zaW9u
VGFiSUQsIHNjcmlwdFNvdXJjZSkKKyAgICB7CisgICAgICAgIGxldCB0YWJDb250ZW50VmlldyA9
IHRoaXMuX2V4dGVuc2lvblRhYkNvbnRlbnRWaWV3Rm9yRXh0ZW5zaW9uVGFiSURNYXAuZ2V0KGV4
dGVuc2lvblRhYklEKTsKKyAgICAgICAgaWYgKCF0YWJDb250ZW50VmlldykgeworICAgICAgICAg
ICAgV0kucmVwb3J0SW50ZXJuYWxFcnJvcigiVW5hYmxlIHRvIGV2YWx1YXRlIHdpdGggdW5rbm93
biBleHRlbnNpb25UYWJJRDogIiArIGV4dGVuc2lvblRhYklEKTsKKyAgICAgICAgICAgIHJldHVy
biBXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb24uRXJyb3JDb2RlLkludmFsaWRSZXF1ZXN0OworICAg
ICAgICB9CisKKyAgICAgICAgbGV0IGlmcmFtZSA9IHRhYkNvbnRlbnRWaWV3LmlmcmFtZUVsZW1l
bnQ7CisgICAgICAgIGlmICghKGlmcmFtZSBpbnN0YW5jZW9mIEhUTUxJRnJhbWVFbGVtZW50KSkg
eworICAgICAgICAgICAgV0kucmVwb3J0SW50ZXJuYWxFcnJvcigiVW5hYmxlIHRvIGV2YWx1YXRl
IHdpdGhvdXQgYW4gPGlmcmFtZT4gZm9yIGV4dGVuc2lvblRhYklEOiAiICsgZXh0ZW5zaW9uVGFi
SUQpOworICAgICAgICAgICAgcmV0dXJuIFdJLldlYkluc3BlY3RvckV4dGVuc2lvbi5FcnJvckNv
ZGUuSW52YWxpZFJlcXVlc3Q7CisgICAgICAgIH0KKworICAgICAgICB0cnkgeworICAgICAgICAg
ICAgcmV0dXJuIHtyZXN1bHQ6IEluc3BlY3RvckZyb250ZW5kSG9zdC5ldmFsdWF0ZVNjcmlwdElu
RXh0ZW5zaW9uVGFiKGlmcmFtZSwgc2NyaXB0U291cmNlKX07CisgICAgICAgIH0gY2F0Y2ggKGVy
cm9yKSB7CisgICAgICAgICAgICByZXR1cm4ge2Vycm9yOiBlcnJvci5tZXNzYWdlfTsKKyAgICAg
ICAgfQorICAgIH0KIH07CiAKIFdJLldlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIuRXZl
bnQgPSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9N
YWluLmh0bWwgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwK
aW5kZXggYzQwMjVjZmYzNjc3YmM3NTZjYjc3ZmE1NTU4OGIzNDU1ZTc1NmM0Yi4uY2ZjZTE4ZDgz
YTk1ODAwNTI4MjM3MGE1NTRkZmE2YzZjODJhMjkzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbApAQCAtMjcsMTAgKzI3LDEwIEBACiA8aGVhZD4K
ICAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsg
Y2hhcnNldD11dGYtOCI+CiAgICAgPCEtLQotICAgICAgICBOb3RlIHRoYXQgc29tZSBXZWJLaXQg
cG9ydHMgbWF5IHNldCBjdXN0b20gJ2ZyYW1lLXNyYycgYW5kICdjb25uZWN0LXNyYycgZGlyZWN0
aXZlcyB2aWEgSFRUUCByZXNwb25zZSBoZWFkZXIuCisgICAgICAgIE5vdGUgdGhhdCBzb21lIFdl
YktpdCBwb3J0cyBtYXkgc2V0IGN1c3RvbSAnZnJhbWUtc3JjJywgJ2ltZy1zcmMnLCBhbmQgJ2Nv
bm5lY3Qtc3JjJyBkaXJlY3RpdmVzIHZpYSBIVFRQIHJlc3BvbnNlIGhlYWRlci4KICAgICAgICAg
VGhlIGNvbWJpbmVkIENTUCBwb2xpY3kgcmVxdWlyZXMgYSByZXF1ZXN0IHRvIGJlIGFsbG93ZWQg
YnkgYm90aCBkaXJlY3RpdmUgbGlzdHMsIHNvICdkZWZhdWx0LXNyYycgaXMgb21pdHRlZC4KICAg
ICAtLT4KLSAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVNlY3VyaXR5LVBvbGljeSIgY29u
dGVudD0iaW1nLXNyYyAqIGZpbGU6IGJsb2I6IHJlc291cmNlOjsgbWVkaWEtc3JjICogYmxvYjo7
IGZvbnQtc3JjICogYmxvYjo7IHN0eWxlLXNyYyAnc2VsZicgJ3Vuc2FmZS1pbmxpbmUnOyBzY3Jp
cHQtc3JjICdzZWxmJyAndW5zYWZlLWlubGluZScgZGF0YTo7IG9iamVjdC1zcmMgJ25vbmUnIj4K
KyAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVNlY3VyaXR5LVBvbGljeSIgY29udGVudD0i
bWVkaWEtc3JjICogYmxvYjo7IGZvbnQtc3JjICogYmxvYjo7IHN0eWxlLXNyYyAnc2VsZicgJ3Vu
c2FmZS1pbmxpbmUnOyBzY3JpcHQtc3JjICdzZWxmJyAndW5zYWZlLWlubGluZScgZGF0YTo7IG9i
amVjdC1zcmMgJ25vbmUnIj4KIAogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iRXh0
ZXJuYWwvQ29kZU1pcnJvci9jb2RlbWlycm9yLmNzcyI+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3RvckZyb250ZW5kQVBJ
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVj
dG9yRnJvbnRlbmRBUEkuanMKaW5kZXggNDI4YzU0MzNmNmM0ZGNhMDg4MDkyNjhlMjA2YzEzODZm
NThmN2JiNS4uOTJhOTU4ZWQ1OWJkODk0NTQ4NjlkMTNmYzYwYjE5Y2UwZGE4ZTk4ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVj
dG9yRnJvbnRlbmRBUEkuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanMKQEAgLTIzNSw1ICsyMzUsMTMgQEAg
SW5zcGVjdG9yRnJvbnRlbmRBUEkgPSB7CiAgICAgc2hvd0V4dGVuc2lvblRhYihleHRlbnNpb25U
YWJJRCkKICAgICB7CiAgICAgICAgIHJldHVybiBXSS5zaGFyZWRBcHAuZXh0ZW5zaW9uQ29udHJv
bGxlci5zaG93RXh0ZW5zaW9uVGFiKGV4dGVuc2lvblRhYklEKTsKLSAgICB9CisgICAgfSwKKwor
ICAgIC8vIFJldHVybnMgYSBzdHJpbmcgKFdJLldlYkluc3BlY3RvckV4dGVuc2lvbi5FcnJvckNv
ZGUpIGlmIGFuIGVycm9yIG9jY3VycmVkIHRoYXQgcHJldmVudGVkIGV2YWx1YXRpb24uCisgICAg
Ly8gUmV0dXJucyBhbiBvYmplY3Qgd2l0aCBhICdyZXN1bHQnIGtleSBhbmQgdmFsdWUgdGhhdCBp
cyB0aGUgcmVzdWx0IG9mIHRoZSBzY3JpcHQgZXZhbHVhdGlvbi4KKyAgICAvLyBSZXR1cm5zIGFu
IG9iamVjdCB3aXRoIGFuICdlcnJvcicga2V5IGFuZCB2YWx1ZSBpbiB0aGUgY2FzZSB0aGF0IGFu
IGV4Y2VwdGlvbiB3YXMgdGhyb3duLgorICAgIGV2YWx1YXRlU2NyaXB0SW5FeHRlbnNpb25UYWIo
ZXh0ZW5zaW9uVGFiSUQsIHNjcmlwdFNvdXJjZSkKKyAgICB7CisgICAgICAgIHJldHVybiBXSS5z
aGFyZWRBcHAuZXh0ZW5zaW9uQ29udHJvbGxlci5ldmFsdWF0ZVNjcmlwdEluRXh0ZW5zaW9uVGFi
KGV4dGVuc2lvblRhYklELCBzY3JpcHRTb3VyY2UpOworICAgIH0sCiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGFiQnJvd3Nlci5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkJyb3dzZXIuanMK
aW5kZXggZGM5YWNjNjY1ODBkYmQ4YWJkMGJhOTQ1NjJjMGQxY2QxYmM2MzAxNC4uYWVhMjUyYjE2
ZmMyYjFkOWU1NWY0MWNkMzM4Njc1YjcyNDA5ZmM1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGFiQnJvd3Nlci5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UYWJCcm93c2VyLmpzCkBAIC0xMjAs
NyArMTIwLDggQEAgV0kuVGFiQnJvd3NlciA9IGNsYXNzIFRhYkJyb3dzZXIgZXh0ZW5kcyBXSS5W
aWV3CiAKICAgICBiZXN0VGFiQ29udGVudFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdChyZXByZXNl
bnRlZE9iamVjdCwgb3B0aW9ucyA9IHt9KQogICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQo
IXRoaXMuc2VsZWN0ZWRUYWJDb250ZW50VmlldyB8fCB0aGlzLnNlbGVjdGVkVGFiQ29udGVudFZp
ZXcgPT09IHRoaXMuX3JlY2VudFRhYkNvbnRlbnRWaWV3c1swXSk7CisgICAgICAgIGxldCBzaG91
bGRTYXZlVGFiID0gdGhpcy5zZWxlY3RlZFRhYkNvbnRlbnRWaWV3Py5jb25zdHJ1Y3Rvci5zaG91
bGRTYXZlVGFiKCkgfHwgdGhpcy5zZWxlY3RlZFRhYkNvbnRlbnRWaWV3Py5jb25zdHJ1Y3Rvci5z
aG91bGRQaW5UYWIoKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuc2VsZWN0ZWRUYWJD
b250ZW50VmlldyB8fCB0aGlzLnNlbGVjdGVkVGFiQ29udGVudFZpZXcgPT09IHRoaXMuX3JlY2Vu
dFRhYkNvbnRlbnRWaWV3c1swXSB8fCAhc2hvdWxkU2F2ZVRhYik7CiAKICAgICAgICAgbGV0IHRh
YkNvbnRlbnRWaWV3ID0gdGhpcy5fcmVjZW50VGFiQ29udGVudFZpZXdzLmZpbmQoKHRhYkNvbnRl
bnRWaWV3KSA9PiB0YWJDb250ZW50Vmlldy50eXBlID09PSBvcHRpb25zLnByZWZlcnJlZFRhYlR5
cGUpOwogICAgICAgICBpZiAodGFiQ29udGVudFZpZXcgJiYgdGFiQ29udGVudFZpZXcuY2FuU2hv
d1JlcHJlc2VudGVkT2JqZWN0KHJlcHJlc2VudGVkT2JqZWN0KSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1dlYkluc3BlY3RvckV4dGVuc2lv
blRhYkNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVudFZpZXcuanMKaW5kZXggMTkyNTU2
N2VmZjNiZGJjZGIyMDgyZDY4NGI5M2Q0YmFkZmUwYmIyOC4uNzRhZmE0Y2NmYmQyOGNmNjM0YjE4
NzM0OGQwNjU3MGI2ZWJlMjBhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVudFZpZXcuanMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvV2ViSW5zcGVj
dG9yRXh0ZW5zaW9uVGFiQ29udGVudFZpZXcuanMKQEAgLTM5LDExICszOSwyMSBAQCBXSS5XZWJJ
bnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50VmlldyA9IGNsYXNzIFdlYkluc3BlY3RvckV4dGVu
c2lvblRhYkNvbnRlbnRWaQogICAgICAgICB0aGlzLl9leHRlbnNpb25UYWJJRCA9IGV4dGVuc2lv
blRhYklEOwogICAgICAgICB0aGlzLl90YWJJbmZvID0gdGFiSW5mbzsKICAgICAgICAgdGhpcy5f
c291cmNlVVJMID0gc291cmNlVVJMOworCisgICAgICAgIC8vIEZJWE1FOiB0aGUgPGlmcmFtZT4n
cyBkb2N1bWVudCBpcyBpbXBsaWNpdGx5IHJlbG9hZGVkIHdoZW4gdGhpcworICAgICAgICAvLyBj
b250ZW50IHZpZXcncyBlbGVtZW50IGlzIGRldGFjaGVkIGFuZCBsYXRlciByZS1hdHRhY2hlZCB0
byB0aGUgRE9NLgorICAgICAgICAvLyBUaGlzIGlzIGEgYnVnIGFuZCB3aWxsIGJlIGFkZHJlc3Nl
ZCBpbiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjMwNzU4Pi4KKyAgICAgICAgdGhpcy5faWZyYW1l
RWxlbWVudCA9IHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJpZnJhbWUiKSk7CisgICAgICAgIHRoaXMuX2lmcmFtZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5l
cigibG9hZCIsIHRoaXMuX2V4dGVuc2lvbkZyYW1lRGlkTG9hZC5iaW5kKHRoaXMpKTsKKyAgICAg
ICAgdGhpcy5faWZyYW1lRWxlbWVudC5zcmMgPSB0aGlzLl9zb3VyY2VVUkw7CisKKyAgICAgICAg
dGhpcy5fZnJhbWVDb250ZW50RGlkTG9hZCA9IGZhbHNlOwogICAgIH0KIAogICAgIC8vIFB1Ymxp
YwogCiAgICAgZ2V0IGV4dGVuc2lvblRhYklEKCkgeyByZXR1cm4gdGhpcy5fZXh0ZW5zaW9uVGFi
SUQ7IH0KKyAgICBnZXQgaWZyYW1lRWxlbWVudCgpIHsgcmV0dXJuIHRoaXMuX2lmcmFtZUVsZW1l
bnQ7IH0KIAogICAgIGdldCB0eXBlKCkKICAgICB7CkBAIC01OSw4ICs2OSw3IEBAIFdJLldlYklu
c3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3ID0gY2xhc3MgV2ViSW5zcGVjdG9yRXh0ZW5z
aW9uVGFiQ29udGVudFZpCiAgICAgewogICAgICAgICBzdXBlci5hdHRhY2hlZCgpOwogCi0gICAg
ICAgIGlmIChJbnNwZWN0b3JGcm9udGVuZEhvc3Quc3VwcG9ydHNXZWJFeHRlbnNpb25zKQotICAg
ICAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmRpZFNob3dFeHRlbnNpb25UYWIodGhpcy5f
ZXh0ZW5zaW9uLmV4dGVuc2lvbklELCB0aGlzLl9leHRlbnNpb25UYWJJRCk7CisgICAgICAgIHRo
aXMuX21heWJlRGlzcGF0Y2hEaWRTaG93RXh0ZW5zaW9uVGFiKCk7CiAgICAgfQogCiAgICAgZGV0
YWNoZWQoKQpAQCAtNzgsMTQgKzg3LDIxIEBAIFdJLldlYkluc3BlY3RvckV4dGVuc2lvblRhYkNv
bnRlbnRWaWV3ID0gY2xhc3MgV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVudFZpCiAKICAg
ICBzdGF0aWMgc2hvdWxkU2F2ZVRhYigpIHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICAvLyBQcm90
ZWN0ZWQKKyAgICAvLyBQcml2YXRlCiAKLSAgICBpbml0aWFsTGF5b3V0KCkKKyAgICBfZXh0ZW5z
aW9uRnJhbWVEaWRMb2FkKCkKICAgICB7Ci0gICAgICAgIHN1cGVyLmluaXRpYWxMYXlvdXQoKTsK
KyAgICAgICAgdGhpcy5fZnJhbWVDb250ZW50RGlkTG9hZCA9IHRydWU7CisgICAgICAgIHRoaXMu
X21heWJlRGlzcGF0Y2hEaWRTaG93RXh0ZW5zaW9uVGFiKCk7CisgICAgfQogCi0gICAgICAgIGxl
dCBpZnJhbWVFbGVtZW50ID0gdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImlmcmFtZSIpKTsKLSAgICAgICAgaWZyYW1lRWxlbWVudC5zcmMgPSB0aGlzLl9z
b3VyY2VVUkw7CisgICAgX21heWJlRGlzcGF0Y2hEaWRTaG93RXh0ZW5zaW9uVGFiKCkKKyAgICB7
CisgICAgICAgIGlmICghdGhpcy5fZnJhbWVDb250ZW50RGlkTG9hZCB8fCAhdGhpcy5lbGVtZW50
LmlzQ29ubmVjdGVkKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmIChJbnNwZWN0
b3JGcm9udGVuZEhvc3Quc3VwcG9ydHNXZWJFeHRlbnNpb25zKQorICAgICAgICAgICAgSW5zcGVj
dG9yRnJvbnRlbmRIb3N0LmRpZFNob3dFeHRlbnNpb25UYWIodGhpcy5fZXh0ZW5zaW9uLmV4dGVu
c2lvbklELCB0aGlzLl9leHRlbnNpb25UYWJJRCk7CiAgICAgfQogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29j
b2EudHh0CmluZGV4IDExZTcyOTY4NGU0YTJhZGYwYjVjYjg5M2FkNjc5MWQ5MDA1ODI2MDUuLjVl
NmI1MmMxMjExNDZjNmQ1M2FjZTY2NWQ2NWMyNTZmZGU1ZTk1OTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2Nv
YS50eHQKQEAgLTI4OCw2ICsyODgsNyBAQCBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rv
ckNvbmZpZ3VyYXRpb24ubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yVGVzdGlu
Zy5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JEZWJ1Z2dhYmxlSW5mby5tbQog
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24ubW0KK1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uVGVzdGluZy5tbQogVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tJbnNwZWN0b3JXaW5kb3cubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW50ZXJu
YWxEZWJ1Z0ZlYXR1cmUubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLTGlua0ljb25QYXJhbWV0
ZXJzLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVj
dG9yRXh0ZW5zaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0
b3JFeHRlbnNpb24uY3BwCmluZGV4IDg2MjY3MjA4OGViMjk3MmY2ZDU1ZTIzNmNlN2YzMDljNzJk
NWQxNzUuLjg3MWMyNzNlYWYxMWRlYjkxYjlkMDJiZjQ1MGYwZDEwZWJjODM3NDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24u
Y3BwCkBAIC04MSw2ICs4MSwxOCBAQCB2b2lkIEluc3BlY3RvckV4dGVuc2lvbjo6cmVsb2FkSWdu
b3JpbmdDYWNoZShjb25zdCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiBpZ25vcmVDYQogICAgIG1fZXh0
ZW5zaW9uQ29udHJvbGxlclByb3h5LT5yZWxvYWRGb3JFeHRlbnNpb24obV9pZGVudGlmaWVyLCBp
Z25vcmVDYWNoZSwgdXNlckFnZW50LCBpbmplY3RlZFNjcmlwdCwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwogfQogCisvLyBGb3IgdGVzdGluZy4KKwordm9pZCBJbnNwZWN0b3JFeHRlbnNp
b246OmV2YWx1YXRlU2NyaXB0SW5FeHRlbnNpb25UYWIoY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNp
b25UYWJJRCYgZXh0ZW5zaW9uVGFiSUQsIGNvbnN0IFdURjo6U3RyaW5nJiBzY3JpcHRTb3VyY2Us
IFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJbnNwZWN0b3I6OkV4dGVuc2lvbkV2YWx1YXRp
b25SZXN1bHQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmICghbV9leHRlbnNpb25D
b250cm9sbGVyUHJveHkpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0
ZWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3llZCkpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgbV9leHRlbnNpb25Db250cm9sbGVyUHJveHktPmV2YWx1
YXRlU2NyaXB0SW5FeHRlbnNpb25UYWIoZXh0ZW5zaW9uVGFiSUQsIHNjcmlwdFNvdXJjZSwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCiB9IC8vIG5hbWVzcGFjZSBBUEkKIAogI2Vu
ZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uaAppbmRleCA1ZWUwOTZkYzIx
ZjYyMDI2N2M3ZjA0ODk2MDNmMTI5YWQ3NjU4ZmU2Li5iYzNmODgwMTYzMTdkMGEzYjU5YzI2YjVl
MGYyNTY5YWUxYTAwNzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUluc3BlY3RvckV4dGVuc2lvbi5oCkBAIC00OSw3ICs0OSwxMCBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIGNyZWF0ZVRhYihjb25zdCBXVEY6OlN0cmluZyYgdGFiTmFtZSwgY29uc3QgV1RGOjpV
UkwmIHRhYkljb25VUkwsIGNvbnN0IFdURjo6VVJMJiBzb3VyY2VVUkwsIFdURjo6Q29tcGxldGlv
bkhhbmRsZXI8dm9pZChFeHBlY3RlZDxJbnNwZWN0b3I6OkV4dGVuc2lvblRhYklELCBJbnNwZWN0
b3I6OkV4dGVuc2lvbkVycm9yPik+JiYpOwogICAgIHZvaWQgZXZhbHVhdGVTY3JpcHQoY29uc3Qg
V1RGOjpTdHJpbmcmIHNjcmlwdFNvdXJjZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxXVEY6OlVSTD4m
IGZyYW1lVVJMLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdURjo6VVJMPiYgY29udGV4dFNlY3VyaXR5
T3JpZ2luLCBjb25zdCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiB1c2VDb250ZW50U2NyaXB0Q29udGV4
dCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXZhbHVh
dGlvblJlc3VsdCk+JiYpOwotICAgIHZvaWQgcmVsb2FkSWdub3JpbmdDYWNoZShjb25zdCBzdGQ6
Om9wdGlvbmFsPGJvb2w+JiBpZ25vcmVDYWNoZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxXVEY6OlN0
cmluZz4mIHVzZXJBZ2VudCwgY29uc3Qgc3RkOjpvcHRpb25hbDxXVEY6OlN0cmluZz4mIGluamVj
dGVkU2NyaXB0LCAgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEluc3BlY3Rvcjo6RXh0ZW5z
aW9uRXZhbHVhdGlvblJlc3VsdCk+JiYpOworICAgIHZvaWQgcmVsb2FkSWdub3JpbmdDYWNoZShj
b25zdCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiBpZ25vcmVDYWNoZSwgY29uc3Qgc3RkOjpvcHRpb25h
bDxXVEY6OlN0cmluZz4mIHVzZXJBZ2VudCwgY29uc3Qgc3RkOjpvcHRpb25hbDxXVEY6OlN0cmlu
Zz4mIGluamVjdGVkU2NyaXB0LCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoSW5zcGVjdG9y
OjpFeHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0KT4mJik7CisKKyAgICAvLyBGb3IgdGVzdGluZy4K
KyAgICB2b2lkIGV2YWx1YXRlU2NyaXB0SW5FeHRlbnNpb25UYWIoY29uc3QgSW5zcGVjdG9yOjpF
eHRlbnNpb25UYWJJRCYsIGNvbnN0IFdURjo6U3RyaW5nJiBzY3JpcHRTb3VyY2UsIFdURjo6Q29t
cGxldGlvbkhhbmRsZXI8dm9pZChJbnNwZWN0b3I6OkV4dGVuc2lvbkV2YWx1YXRpb25SZXN1bHQp
PiYmKTsKIAogICAgIEluc3BlY3RvckV4dGVuc2lvbkNsaWVudCogY2xpZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9jbGllbnQuZ2V0KCk7IH0KICAgICB2b2lkIHNldENsaWVudChVbmlxdWVSZWY8SW5z
cGVjdG9yRXh0ZW5zaW9uQ2xpZW50PiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb25Qcml2YXRlRm9yVGVzdGluZy5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lv
blByaXZhdGVGb3JUZXN0aW5nLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGZjN2ZmNzNjMzJjZDljYzIwMzFmZDE3
ZjJiN2E5NjU0MmZkMWIwYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb25Qcml2YXRlRm9yVGVzdGluZy5oCkBA
IC0wLDAgKzEsMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJfV0tJbnNwZWN0b3JFeHRlbnNp
b24uaCIKKworTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKworQGludGVyZmFjZSBfV0tJbnNwZWN0
b3JFeHRlbnNpb24gKFdLVGVzdGluZykKKy0gKHZvaWQpX2V2YWx1YXRlU2NyaXB0OihOU1N0cmlu
ZyAqKXNjcmlwdFNvdXJjZSBpbkV4dGVuc2lvblRhYldpdGhJZGVudGlmaWVyOihOU1N0cmluZyAq
KWV4dGVuc2lvblRhYklkZW50aWZpZXIgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNFcnJv
ciAqIF9OdWxsYWJsZSwgTlNEaWN0aW9uYXJ5ICogX051bGxhYmxlIHJlc3VsdCkpY29tcGxldGlv
bkhhbmRsZXI7CitAZW5kCisKK05TX0FTU1VNRV9OT05OVUxMX0VORApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvblRlc3Rp
bmcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0
ZW5zaW9uVGVzdGluZy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MWM2YTZmMDhhYTBiOWE2NThhODliYzBmN2Mz
YWMwMzE1YjhkODhlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvblRlc3RpbmcubW0KQEAgLTAsMCArMSw2NSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKElOU1BFQ1RP
Ul9FWFRFTlNJT05TKQorCisjaW1wb3J0ICJBUElTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKKyNp
bXBvcnQgIkluc3BlY3RvckV4dGVuc2lvblR5cGVzLmgiCisjaW1wb3J0ICJXS0Vycm9yLmgiCisj
aW1wb3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgorI2ltcG9ydCAiX1dLSW5zcGVjdG9yRXh0ZW5z
aW9uSW50ZXJuYWwuaCIKKyNpbXBvcnQgIl9XS0luc3BlY3RvckV4dGVuc2lvblByaXZhdGVGb3JU
ZXN0aW5nLmgiCisjaW1wb3J0IDxXZWJDb3JlL0V4Y2VwdGlvbkRldGFpbHMuaD4KKyNpbXBvcnQg
PFdlYkNvcmUvV2ViQ29yZU9iakNFeHRyYXMuaD4KKyNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgor
CisvLyBUaGlzIGZpbGUgZXhpc3RzIHRvIGNlbnRyYWxpemUgYWxsIGZyYWdpbGUgY29kZSB0aGF0
IGlzIHVzZWQgYnkgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uIEFQSSB0ZXN0cy4KKworQGltcGxlbWVu
dGF0aW9uIF9XS0luc3BlY3RvckV4dGVuc2lvbiAoV0tUZXN0aW5nKQorCistICh2b2lkKV9ldmFs
dWF0ZVNjcmlwdDooTlNTdHJpbmcgKilzY3JpcHRTb3VyY2UgaW5FeHRlbnNpb25UYWJXaXRoSWRl
bnRpZmllcjooTlNTdHJpbmcgKilleHRlbnNpb25UYWJJZGVudGlmaWVyIGNvbXBsZXRpb25IYW5k
bGVyOih2b2lkKF4pKE5TRXJyb3IgKiwgTlNEaWN0aW9uYXJ5ICopKWNvbXBsZXRpb25IYW5kbGVy
Cit7CisgICAgX2V4dGVuc2lvbi0+ZXZhbHVhdGVTY3JpcHRJbkV4dGVuc2lvblRhYihleHRlbnNp
b25UYWJJZGVudGlmaWVyLCBzY3JpcHRTb3VyY2UsIFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRy
KHNlbGYpLCBjYXB0dXJlZEJsb2NrID0gbWFrZUJsb2NrUHRyKFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKV0gKEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXZhbHVhdGlvblJlc3VsdCYmIHJlc3VsdCkg
bXV0YWJsZSB7CisgICAgICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgICAgICBjYXB0dXJlZEJs
b2NrKFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVu
a25vd24gdXNlckluZm86QHsgTlNMb2NhbGl6ZWRGYWlsdXJlUmVhc29uRXJyb3JLZXk6IEluc3Bl
Y3Rvcjo6ZXh0ZW5zaW9uRXJyb3JUb1N0cmluZyhyZXN1bHQuZXJyb3IoKSkgfV0sIG5pbCk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGF1dG8gdmFs
dWVPckV4Y2VwdGlvbiA9IHJlc3VsdC52YWx1ZSgpOworICAgICAgICBpZiAoIXZhbHVlT3JFeGNl
cHRpb24pIHsKKyAgICAgICAgICAgIGNhcHR1cmVkQmxvY2sobnNFcnJvckZyb21FeGNlcHRpb25E
ZXRhaWxzKHZhbHVlT3JFeGNlcHRpb24uZXJyb3IoKSkuZ2V0KCksIG5pbCk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZCBib2R5ID0gQVBJOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKHZhbHVlT3JFeGNlcHRpb24udmFsdWUoKS0+aW50ZXJu
YWxSZXByZXNlbnRhdGlvbigpLCAwKTsKKyAgICAgICAgY2FwdHVyZWRCbG9jayhuaWwsIGJvZHkp
OworICAgIH0pOworfQorCitAZW5kCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0VYVEVO
U0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Hcm91cEFj
dGl2aXRpZXMvR3JvdXBBY3Rpdml0aWVzU2Vzc2lvbk5vdGlmaWVyLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvR3JvdXBBY3Rpdml0aWVzL0dyb3VwQWN0aXZpdGllc1Nlc3Npb25O
b3RpZmllci5tbQppbmRleCA1NTI3ZWI4NTU4N2ZmYjQxOWQ1MmY2M2Y1ODAxNGMwMjY0Yzc0NmMz
Li42OTc2YmJiNDY4MjhhM2NjOTJhMTU1ZTViOWNkZDljNjMwMjEyOTQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Hcm91cEFjdGl2aXRpZXMvR3JvdXBBY3Rpdml0
aWVzU2Vzc2lvbk5vdGlmaWVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L0dyb3VwQWN0aXZpdGllcy9Hcm91cEFjdGl2aXRpZXNTZXNzaW9uTm90aWZpZXIubW0KQEAgLTI4
LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OX0NPT1JESU5BVE9SKSAmJiBI
QVZFKEdST1VQX0FDVElWSVRJRVMpCiAKKyNpbXBvcnQgIkdyb3VwQWN0aXZpdGllc0Nvb3JkaW5h
dG9yLmgiCiAjaW1wb3J0ICJXS0dyb3VwU2Vzc2lvbi5oIgogI2ltcG9ydCAiV2ViUGFnZVByb3h5
LmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHku
Y3BwCmluZGV4IDc0MmFhMjdiMWVhYzM1OGFmMDViNDc2MTI0NGVjMjFmZDMwMGEzMmQuLjlhYzM1
Y2EzNTM5NWU5YTQ1OWZhOGRiZTM1YjM3MmI1OWY4YTMxMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xs
ZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmNwcApAQCAtMTk5LDYgKzE5OSwzMSBA
QCB2b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5OjpzaG93RXh0ZW5z
aW9uVGFiKGNvbnN0IEluc3BlY3Rvcjo6RQogICAgIH0pOwogfQogCisvLyBBUEkgZm9yIHRlc3Rp
bmcuCisKK3ZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OmV2YWx1
YXRlU2NyaXB0SW5FeHRlbnNpb25UYWIoY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJRCYg
ZXh0ZW5zaW9uVGFiSUQsIGNvbnN0IFN0cmluZyYgc2NyaXB0U291cmNlLCBXVEY6OkNvbXBsZXRp
b25IYW5kbGVyPHZvaWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0KT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICB3aGVuRnJvbnRlbmRIYXNMb2FkZWQoW3dlYWtUaGlz
ID0gbWFrZVdlYWtQdHIodGhpcyksIGV4dGVuc2lvblRhYklELCBzY3JpcHRTb3VyY2UsIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewor
ICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICF3ZWFrVGhpcy0+bV9pbnNwZWN0b3JQYWdlKSB7Cisg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3I6OkV4
dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkKSk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKworICAgICAgICB3ZWFrVGhpcy0+bV9pbnNwZWN0b3JQYWdlLT5zZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6RXZh
bHVhdGVTY3JpcHRJbkV4dGVuc2lvblRhYiB7ZXh0ZW5zaW9uVGFiSUQsIHNjcmlwdFNvdXJjZX0s
IFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6RXhjZXB0aW9uRGV0YWlscz4mIGRldGFpbHMsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8SW5z
cGVjdG9yOjpFeHRlbnNpb25FcnJvcj4mIGVycm9yKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlm
IChlcnJvcikgeworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVj
dGVkKGVycm9yLnZhbHVlKCkpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGlmIChkZXRhaWxzKSB7CisgICAgICAgICAgICAgICAgRXhwZWN0
ZWQ8UmVmUHRyPEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgV2ViQ29yZTo6RXhjZXB0aW9u
RGV0YWlscz4gcmV0dXJuZWRWYWx1ZSA9IG1ha2VVbmV4cGVjdGVkKGRldGFpbHMudmFsdWUoKSk7
CisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgcmV0dXJuZWRWYWx1
ZSB9KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB7
IEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjphZG9wdCh7IGRhdGFSZWZlcmVuY2UuZGF0YSgp
LCBkYXRhUmVmZXJlbmNlLnNpemUoKSB9KS5wdHIoKSB9IH0pOworICAgICAgICB9KTsKKyAgICB9
KTsKK30KIAogLy8gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkgSVBDIG1l
c3NhZ2VzLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Iv
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94
eS5oCmluZGV4IGNhMjNlYzdhZmIyZTFlYmNmOTg1NzRmZTc5ZTk0MGQ4NDZhMzMxN2EuLjM1OGJh
NDQ3ZTAxZWE5YWQxNWI4N2JmZDVhMDJmZTc4NDYwNjQ3YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xs
ZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNw
ZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5oCkBAIC02Miw2ICs2Miw5IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHJlbG9hZEZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lv
bklEJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxib29sPiYgaWdub3JlQ2FjaGUsIGNvbnN0IHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiYgdXNlckFnZW50LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4m
IGluamVjdGVkU2NyaXB0LCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoSW5zcGVjdG9yOjpF
eHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0KT4mJik7CiAgICAgdm9pZCBzaG93RXh0ZW5zaW9uVGFi
KGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uVGFiSUQmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KEV4cGVjdGVkPGJvb2wsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+KT4mJik7CiAKKyAgICAv
LyBBUEkgZm9yIHRlc3RpbmcuCisgICAgdm9pZCBldmFsdWF0ZVNjcmlwdEluRXh0ZW5zaW9uVGFi
KGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uVGFiSUQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdFNv
dXJjZSwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXZh
bHVhdGlvblJlc3VsdCk+JiYpOworCiAgICAgLy8gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyUHJveHkgSVBDIG1lc3NhZ2VzLgogICAgIHZvaWQgZGlkU2hvd0V4dGVuc2lvblRhYihj
b25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiwgY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25U
YWJJRCYpOwogICAgIHZvaWQgZGlkSGlkZUV4dGVuc2lvblRhYihjb25zdCBJbnNwZWN0b3I6OkV4
dGVuc2lvbklEJiwgY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJRCYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XS0luc3BlY3RvclJlc291
cmNlVVJMU2NoZW1lSGFuZGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rv
ci9tYWMvV0tJbnNwZWN0b3JSZXNvdXJjZVVSTFNjaGVtZUhhbmRsZXIubW0KaW5kZXggYWNlZDdj
MDM3OWFmYWUzMzViOTk5ZjVjMjA4MmM5NTNjZWM5NDgwMy4uYjQzNTMwOTExMWY0YTc4ZDcwN2Ex
ZWQ1Yzk5YmY4MzkwNzM2OGI2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
SW5zcGVjdG9yL21hYy9XS0luc3BlY3RvclJlc291cmNlVVJMU2NoZW1lSGFuZGxlci5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dLSW5zcGVjdG9yUmVzb3Vy
Y2VVUkxTY2hlbWVIYW5kbGVyLm1tCkBAIC0xMjIsNyArMTIyLDggQEAgLSAodm9pZCl3ZWJWaWV3
OihXS1dlYlZpZXcgKil3ZWJWaWV3IHN0YXJ0VVJMU2NoZW1lVGFzazooaWQgPFdLVVJMU2NoZW1l
VGFzaz4pdXIKIAogICAgICAgICAvLyBBbGxvdyBmZXRjaGVzIGZvciByZXNvdXJjZXMgdGhhdCB1
c2UgYSByZWdpc3RlcmVkIGN1c3RvbSBVUkwgc2NoZW1lLgogICAgICAgICBpZiAoX2FsbG93ZWRV
UkxTY2hlbWVzRm9yQ1NQICYmIFtzZWxmLm1haW5SZXNvdXJjZVVSTHNGb3JDU1AgY29udGFpbnNP
YmplY3Q6cmVxdWVzdFVSTF0pIHsKLSAgICAgICAgICAgIE5TU3RyaW5nICpzdHJpbmdGb3JDU1BQ
b2xpY3kgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImNvbm5lY3Qtc3JjICogJUA6Iiwg
W19hbGxvd2VkVVJMU2NoZW1lc0ZvckNTUC5nZXQoKS5hbGxPYmplY3RzIGNvbXBvbmVudHNKb2lu
ZWRCeVN0cmluZzpAIjogIl1dOworICAgICAgICAgICAgTlNTdHJpbmcgKmxpc3RPZkN1c3RvbVBy
b3RvY29scyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUA6IiwgW19hbGxvd2VkVVJM
U2NoZW1lc0ZvckNTUC5nZXQoKS5hbGxPYmplY3RzIGNvbXBvbmVudHNKb2luZWRCeVN0cmluZzpA
IjogIl1dOworICAgICAgICAgICAgTlNTdHJpbmcgKnN0cmluZ0ZvckNTUFBvbGljeSA9IFtOU1N0
cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiY29ubmVjdC1zcmMgKiAlQDsgaW1nLXNyYyAqIGZpbGU6
IGJsb2I6IHJlc291cmNlOiAlQCIsIGxpc3RPZkN1c3RvbVByb3RvY29scywgbGlzdE9mQ3VzdG9t
UHJvdG9jb2xzXTsKICAgICAgICAgICAgIFtoZWFkZXJGaWVsZHMgc2V0T2JqZWN0OnN0cmluZ0Zv
ckNTUFBvbGljeSBmb3JLZXk6QCJDb250ZW50LVNlY3VyaXR5LVBvbGljeSJdOwogICAgICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDM3ZDBkZDI0NzFlZDQzOGY5Y2Q2Yzc1OWU0MzA4ZjdiNmQyMjIyZDUuLjI0NGE5MjQxYTIw
ZmU2ZmMxNzA1Yjg0ZjNhYjdkZDViZDczMDAyOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTU3NCw2ICsxNTc0LDggQEAKIAkJOTlC
MTY3NjQyNTJCQkU2MjAwNzMxNDBFIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlCMTY3
NjEyNTJCQkU2MTAwNzMxNDBFIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5o
ICovOyB9OwogCQk5OUMzQUUyRDFEQURBNkFEMDBBRjVDMTYgLyogV2ViQXV0b21hdGlvblNlc3Np
b25NYWNyb3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDk5QzNBRTJDMURBREE2QTcwMEFGNUMxNiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbk1hY3Jvcy5o
ICovOyB9OwogCQk5OUM2MDdFQjI2RkE5RDQ5MDBBMDk1M0YgLyogX1dLSW5zcGVjdG9ySUJBY3Rp
b25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OUM2
MDdFQTI2RkE5RDQ4MDBBMDk1M0YgLyogX1dLSW5zcGVjdG9ySUJBY3Rpb25zLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTlDNjA3RjAyNkZCOTFF
ODAwQTA5NTNGIC8qIF9XS0luc3BlY3RvckV4dGVuc2lvblByaXZhdGVGb3JUZXN0aW5nLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OUM2MDdFRTI2RkI5
MUU4MDBBMDk1M0YgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uUHJpdmF0ZUZvclRlc3RpbmcuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5OUM2MDdG
MTI2RkI5MUU5MDBBMDk1M0YgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uVGVzdGluZy5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5QzYwN0VGMjZGQjkx
RTgwMEEwOTUzRiAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb25UZXN0aW5nLm1tICovOyB9OwogCQk5
OUM4MUQ1QTFDMjBFN0UyMDA1QzRDODIgLyogQXV0b21hdGlvbkNsaWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlDODFENTUxQzIwREZCRTAwNUM0
QzgyIC8qIEF1dG9tYXRpb25DbGllbnQuaCAqLzsgfTsKIAkJOTlDODFENUQxQzIxRjM4QjAwNUM0
QzgyIC8qIEFQSUF1dG9tYXRpb25DbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk5QzgxRDVCMUMyMEU4MTcwMDVDNEM4MiAvKiBBUElBdXRvbWF0
aW9uQ2xpZW50LmggKi87IH07CiAJCTk5RTcxNEM1MUMxMjRBMDQwMDY2NUIzQSAvKiBfV0tBdXRv
bWF0aW9uRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk5RTcxNEMxMUMxMjQ5RTYwMDY2NUIzQSAvKiBfV0tBdXRvbWF0aW9uRGVsZWdhdGUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNTEy
NSw2ICs1MTI3LDggQEAKIAkJOTlDM0FFMjYxREFEOTQ4NTAwQUY1QzE2IC8qIFdlYkF1dG9tYXRp
b25TZXNzaW9uQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBXZWJBdXRvbWF0aW9uU2Vzc2lvbkNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5OUMzQUUyQzFEQURBNkE3MDBBRjVDMTYgLyogV2ViQXV0b21hdGlvblNlc3Npb25NYWNy
b3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQXV0b21hdGlvblNlc3Np
b25NYWNyb3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTlDNjA3RUEyNkZBOUQ0
ODAwQTA5NTNGIC8qIF9XS0luc3BlY3RvcklCQWN0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBfV0tJbnNwZWN0b3JJQkFjdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJOTlDNjA3RUUyNkZCOTFFODAwQTA5NTNGIC8qIF9XS0luc3BlY3RvckV4dGVu
c2lvblByaXZhdGVGb3JUZXN0aW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IF9XS0luc3BlY3RvckV4dGVuc2lvblByaXZhdGVGb3JUZXN0aW5nLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTk5QzYwN0VGMjZGQjkxRTgwMEEwOTUzRiAvKiBfV0tJbnNwZWN0b3JF
eHRlbnNpb25UZXN0aW5nLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gX1dLSW5zcGVjdG9yRXh0ZW5zaW9uVGVzdGluZy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTlDODFENTUxQzIwREZCRTAwNUM0QzgyIC8qIEF1dG9tYXRpb25DbGllbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXV0b21hdGlvbkNsaWVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OUM4MUQ1NjFDMjBERkJFMDA1QzRDODIgLyogQXV0
b21hdGlvbkNsaWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IEF1dG9tYXRpb25DbGllbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5Qzgx
RDVCMUMyMEU4MTcwMDVDNEM4MiAvKiBBUElBdXRvbWF0aW9uQ2xpZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUF1dG9tYXRpb25DbGllbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTgyMTQsNiArODIxOCw4IEBACiAJCQkJOTk2QjJCQTAyNUUyNTkx
MTAwNzE5Mzc5IC8qIF9XS0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLmggKi8sCiAJCQkJOTk3
OTY1QTIyNTMxMjhDNzAwQjMxQUUzIC8qIF9XS0luc3BlY3RvckV4dGVuc2lvbkhvc3QuaCAqLywK
IAkJCQk5OUIxNjc1NTI1MkJCN0UxMDA3MzE0MEUgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50
ZXJuYWwuaCAqLywKKwkJCQk5OUM2MDdFRTI2RkI5MUU4MDBBMDk1M0YgLyogX1dLSW5zcGVjdG9y
RXh0ZW5zaW9uUHJpdmF0ZUZvclRlc3RpbmcuaCAqLywKKwkJCQk5OUM2MDdFRjI2RkI5MUU4MDBB
MDk1M0YgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uVGVzdGluZy5tbSAqLywKIAkJCQk5OUM2MDdF
QTI2RkE5RDQ4MDBBMDk1M0YgLyogX1dLSW5zcGVjdG9ySUJBY3Rpb25zLmggKi8sCiAJCQkJNUNB
RkRFNDQyMTMwODQzNjAwQjFGN0UxIC8qIF9XS0luc3BlY3RvckludGVybmFsLmggKi8sCiAJCQkJ
OTk3OUNBNTcyMzdGNDlGMDAwMzlFQzA1IC8qIF9XS0luc3BlY3RvclByaXZhdGUuaCAqLywKQEAg
LTEyMDA0LDYgKzEyMDEwLDcgQEAKIAkJCQk5OTZCMkJBMTI1RTI1OTExMDA3MTkzNzkgLyogX1dL
SW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5Nzk2NUEz
MjUzMTI4QzcwMEIzMUFFMyAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5OUIxNjc1ODI1MkJCN0UxMDA3MzE0MEUgLyogX1dLSW5zcGVjdG9yRXh0ZW5z
aW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAorCQkJCTk5QzYwN0YwMjZGQjkxRTgwMEEwOTUz
RiAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb25Qcml2YXRlRm9yVGVzdGluZy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTlDNjA3RUIyNkZBOUQ0OTAwQTA5NTNGIC8qIF9XS0luc3BlY3RvcklCQWN0aW9u
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNBRkRFNDcyMTMwODQ2QTAwQjFGN0UxIC8qIF9XS0lu
c3BlY3RvckludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OTc5Q0E1ODIzN0Y0OUYxMDAz
OUVDMDUgLyogX1dLSW5zcGVjdG9yUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNDQwMyw2
ICsxNDQxMCw3IEBACiAJCQkJNTc5MEE2ODEyNTY3QTFBQzAwNzdDNUE3IC8qIF9XS0F1dGhlbnRp
Y2F0b3JSZXNwb25zZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTU3OTBBNjY3MjU2NzlDRUEwMDc3
QzVBNyAvKiBfV0tBdXRoZW50aWNhdG9yU2VsZWN0aW9uQ3JpdGVyaWEubW0gaW4gU291cmNlcyAq
LywKIAkJCQk1Q0JENTk1QzIyODBFREY0MDAyQjIyQUEgLyogX1dLQ3VzdG9tSGVhZGVyRmllbGRz
Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJOTlDNjA3RjEyNkZCOTFFOTAwQTA5NTNGIC8qIF9XS0lu
c3BlY3RvckV4dGVuc2lvblRlc3RpbmcubW0gaW4gU291cmNlcyAqLywKIAkJCQk1NzkwQTY3NTI1
Njc5Rjc0MDA3N0M1QTcgLyogX1dLUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTU3OTBBNjZEMjU2NzlFQjcwMDc3QzVBNyAvKiBfV0tQdWJs
aWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTU3OTBBNjU3
MjU2Nzk5REEwMDc3QzVBNyAvKiBfV0tQdWJsaWNLZXlDcmVkZW50aWFsRW50aXR5Lm1tIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9y
L1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5jcHAK
aW5kZXggOTA5MGIxNmE3OTU4ZTRiYzgxMmUwMmQwMmNkOTQ1MDkzY2Q1ZjUyNC4uYjdmYzhjMDg4
NDcyZDgwODViNjA2NWE5Mzc2NzQ4MTQyZjNjNThkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyLmNwcApAQCAtNTksNyArNTksNyBAQCBXZWJJbnNwZWN0b3JV
SUV4dGVuc2lvbkNvbnRyb2xsZXI6On5XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIo
KQogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNz
YWdlczo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCksIG1faW5zcGVjdG9yUGFnZUlkZW50aWZpZXIpOwogfQogCi1zdGQ6Om9wdGlvbmFsPElu
c3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxl
cjo6cGFyc2VFeHRlbnNpb25FcnJvckZyb21FdmFsdWF0aW9uUmVzdWx0KEluc3BlY3RvckZyb250
ZW5kQVBJRGlzcGF0Y2hlcjo6RXZhbHVhdGlvblJlc3VsdCByZXN1bHQpCitzdGQ6Om9wdGlvbmFs
PEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJv
bGxlcjo6cGFyc2VFeHRlbnNpb25FcnJvckZyb21FdmFsdWF0aW9uUmVzdWx0KEluc3BlY3RvckZy
b250ZW5kQVBJRGlzcGF0Y2hlcjo6RXZhbHVhdGlvblJlc3VsdCByZXN1bHQpIGNvbnN0CiB7CiAg
ICAgaWYgKCFyZXN1bHQpIHsKICAgICAgICAgc3dpdGNoIChyZXN1bHQuZXJyb3IoKSkgewpAQCAt
MTU4LDcgKzE1OCw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjp1
bnJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3Rvcjo6RXh0CiAgICAgfSk7CiB9CiAKLUpT
Qzo6SlNPYmplY3QqIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6dW53cmFwRXZh
bHVhdGlvblJlc3VsdEFzT2JqZWN0KEluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6RXZh
bHVhdGlvblJlc3VsdCByZXN1bHQpCitKU0M6OkpTT2JqZWN0KiBXZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXI6OnVud3JhcEV2YWx1YXRpb25SZXN1bHRBc09iamVjdChJbnNwZWN0b3JG
cm9udGVuZEFQSURpc3BhdGNoZXI6OkV2YWx1YXRpb25SZXN1bHQgcmVzdWx0KSBjb25zdAogewog
ICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTM1OSw2ICszNTks
NzQgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnNob3dFeHRlbnNp
b25UYWIoY29uc3QgSW5zcGVjdG9yOjpFeHRlbnMKICAgICB9KTsKIH0KIAorLy8gV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyIElQQyBtZXNzYWdlcyBmb3IgdGVzdGluZy4KKwordm9p
ZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OmV2YWx1YXRlU2NyaXB0SW5FeHRl
bnNpb25UYWIoY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJRCYgZXh0ZW5zaW9uVGFiSUQs
IGNvbnN0IFN0cmluZyYgc2NyaXB0U291cmNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0
aW9uRGV0YWlscz4mLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJy
b3I+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKCFtX2Zyb250ZW5kQ2xpZW50
KSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgc3RkOjpudWxsb3B0LCBJbnNwZWN0
b3I6OkV4dGVuc2lvbkVycm9yOjpJbnZhbGlkUmVxdWVzdCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBWZWN0b3I8UmVmPEpTT046OlZhbHVlPj4gYXJndW1lbnRzIHsKKyAgICAgICAg
SlNPTjo6VmFsdWU6OmNyZWF0ZShleHRlbnNpb25UYWJJRCksCisgICAgICAgIEpTT046OlZhbHVl
OjpjcmVhdGUoc2NyaXB0U291cmNlKSwKKyAgICB9OworCisgICAgbV9mcm9udGVuZENsaWVudC0+
ZnJvbnRlbmRBUElEaXNwYXRjaGVyKCkuZGlzcGF0Y2hDb21tYW5kV2l0aFJlc3VsdEFzeW5jKCJl
dmFsdWF0ZVNjcmlwdEluRXh0ZW5zaW9uVGFiIl9zLCBXVEZNb3ZlKGFyZ3VtZW50cyksIFt3ZWFr
VGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXShJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OkV2YWx1YXRp
b25SZXN1bHQmJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBpZiAoIXdlYWtUaGlzKSB7Cisg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIHN0ZDo6bnVsbG9wdCwgSW5zcGVjdG9y
OjpFeHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3llZCk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKworICAgICAgICBhdXRvKiBmcm9udGVuZEdsb2JhbE9iamVjdCA9IHdlYWtU
aGlzLT5tX2Zyb250ZW5kQ2xpZW50LT5mcm9udGVuZEFQSURpc3BhdGNoZXIoKS5mcm9udGVuZEds
b2JhbE9iamVjdCgpOworICAgICAgICBpZiAoIWZyb250ZW5kR2xvYmFsT2JqZWN0KSB7CisgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIHN0ZDo6bnVsbG9wdCwgSW5zcGVjdG9yOjpF
eHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3llZCk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAoYXV0byBwYXJzZWRFcnJvciA9IHdlYWtUaGlzLT5wYXJz
ZUV4dGVuc2lvbkVycm9yRnJvbUV2YWx1YXRpb25SZXN1bHQocmVzdWx0KSkgeworICAgICAgICAg
ICAgaWYgKCFyZXN1bHQudmFsdWUoKS5oYXNfdmFsdWUoKSkgeworICAgICAgICAgICAgICAgIGF1
dG8gZXhjZXB0aW9uRGV0YWlscyA9IHJlc3VsdC52YWx1ZSgpLmVycm9yKCk7CisgICAgICAgICAg
ICAgICAgTE9HKEluc3BlY3RvciwgIkludGVybmFsIGVycm9yIGVuY291bnRlcmVkIHdoaWxlIGV2
YWx1YXRpbmcgdXBvbiB0aGUgZnJvbnRlbmQ6IGF0ICVzOiVkOiVkOiAlcyIsIGV4Y2VwdGlvbkRl
dGFpbHMuc291cmNlVVJMLnV0ZjgoKS5kYXRhKCksIGV4Y2VwdGlvbkRldGFpbHMubGluZU51bWJl
ciwgZXhjZXB0aW9uRGV0YWlscy5jb2x1bW5OdW1iZXIsIGV4Y2VwdGlvbkRldGFpbHMubWVzc2Fn
ZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIExP
RyhJbnNwZWN0b3IsICJJbnRlcm5hbCBlcnJvciBlbmNvdW50ZXJlZCB3aGlsZSBldmFsdWF0aW5n
IHVwb24gdGhlIGZyb250ZW5kLiIpOworCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7
IH0sIHN0ZDo6bnVsbG9wdCwgcGFyc2VkRXJyb3IpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgLy8gRXhwZWN0ZWQgcmVzdWx0IGlzIGVpdGhlciBhbiBFcnJvclN0
cmluZyBvciB7cmVzdWx0OiA8YW55Pn0gb3Ige2Vycm9yOiBzdHJpbmd9LgorICAgICAgICBhdXRv
IG9iamVjdFJlc3VsdCA9IHdlYWtUaGlzLT51bndyYXBFdmFsdWF0aW9uUmVzdWx0QXNPYmplY3Qo
cmVzdWx0KTsKKyAgICAgICAgaWYgKCFvYmplY3RSZXN1bHQpIHsKKyAgICAgICAgICAgIExPRyhJ
bnNwZWN0b3IsICJVbmV4cGVjdGVkIG5vbi1vYmplY3QgdmFsdWUgcmV0dXJuZWQgZnJvbSBJbnNw
ZWN0b3JGcm9udGVuZEFQSS5jcmVhdGVUYWJGb3JFeHRlbnNpb24oKS4iKTsKKyAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgc3RkOjpudWxsb3B0LCBJbnNwZWN0b3I6OkV4dGVuc2lv
bkVycm9yOjpJbnRlcm5hbEVycm9yKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgICAgICBBU1NFUlQocmVzdWx0Lmhhc192YWx1ZSgpKTsKKworICAgICAgICBKU0M6OkpTVmFs
dWUgZXJyb3JQYXlsb2FkID0gb2JqZWN0UmVzdWx0LT5nZXQoZnJvbnRlbmRHbG9iYWxPYmplY3Qs
IEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhmcm9udGVuZEdsb2JhbE9iamVjdC0+dm0oKSwg
ImVycm9yIl9zKSk7CisgICAgICAgIGlmICghZXJyb3JQYXlsb2FkLmlzVW5kZWZpbmVkKCkpIHsK
KyAgICAgICAgICAgIGlmICghZXJyb3JQYXlsb2FkLmlzU3RyaW5nKCkpIHsKKyAgICAgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIHN0ZDo6bnVsbG9wdCwgSW5zcGVjdG9yOjpFeHRl
bnNpb25FcnJvcjo6SW50ZXJuYWxFcnJvcik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIEV4Y2VwdGlv
bkRldGFpbHMgeyBlcnJvclBheWxvYWQudG9XVEZTdHJpbmcoZnJvbnRlbmRHbG9iYWxPYmplY3Qp
IH0sIHN0ZDo6bnVsbG9wdCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAg
ICAgICBKU0M6OkpTVmFsdWUgcmVzdWx0UGF5bG9hZCA9IG9iamVjdFJlc3VsdC0+Z2V0KGZyb250
ZW5kR2xvYmFsT2JqZWN0LCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcoZnJvbnRlbmRHbG9i
YWxPYmplY3QtPnZtKCksICJyZXN1bHQiX3MpKTsKKyAgICAgICAgYXV0byBzZXJpYWxpemVkUmVz
dWx0VmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSgqZnJvbnRlbmRHbG9iYWxP
YmplY3QsIHJlc3VsdFBheWxvYWQpOworICAgICAgICBpZiAoIXNlcmlhbGl6ZWRSZXN1bHRWYWx1
ZSkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBzdGQ6Om51bGxvcHQsIElu
c3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3IpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc2VyaWFsaXplZFJl
c3VsdFZhbHVlLT5kYXRhKCksIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0KTsKKyAgICB9KTsK
K30KKwogdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OmRpZFNob3dFeHRl
bnNpb25UYWIoY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYgZXh0ZW5zaW9uSUQsIGNvbnN0
IEluc3BlY3Rvcjo6RXh0ZW5zaW9uVGFiSUQmIGV4dGVuc2lvblRhYklEKQogewogICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5OjpEaWRTaG93RXh0ZW5z
aW9uVGFiIHsgZXh0ZW5zaW9uSUQsIGV4dGVuc2lvblRhYklEIH0sIG1faW5zcGVjdG9yUGFnZUlk
ZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rv
ci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmgKaW5k
ZXggYzM2MTJhZGQwMDU5ZDc0ZWI0N2E5MWU1ZGUzNDU3NDEyNDhkMGY0MS4uZDI4NDlhMGU1MmU0
OGQ3NjczNDc3Zjk5YTIxZWJhZTQ2NjNlZjNjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlci5oCkBAIC03MCwxMyArNzAsMTYgQEAgcHVibGljOgogICAgIHZvaWQg
cmVsb2FkRm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmLCBjb25zdCBz
dGQ6Om9wdGlvbmFsPGJvb2w+JiBpZ25vcmVDYWNoZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTdHJp
bmc+JiB1c2VyQWdlbnQsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiYgaW5qZWN0ZWRTY3Jp
cHQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJbnNwZWN0b3I6
OkV4dGVuc2lvbkVycm9yPiYpPiYmKTsKICAgICB2b2lkIHNob3dFeHRlbnNpb25UYWIoY29uc3Qg
SW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJRCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0
ZWQ8Ym9vbCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4pPiYmKTsKIAorICAgIC8vIFdlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlciBJUEMgbWVzc2FnZXMgZm9yIHRlc3RpbmcuCisg
ICAgdm9pZCBldmFsdWF0ZVNjcmlwdEluRXh0ZW5zaW9uVGFiKGNvbnN0IEluc3BlY3Rvcjo6RXh0
ZW5zaW9uVGFiSUQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdFNvdXJjZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+JiwgY29uc3Qgc3RkOjpvcHRpb25hbDxJbnNwZWN0b3I6
OkV4dGVuc2lvbkVycm9yPiYpPiYmKTsKKwogICAgIC8vIENhbGxiYWNrcyBmcm9tIHRoZSBmcm9u
dGVuZC4KICAgICB2b2lkIGRpZFNob3dFeHRlbnNpb25UYWIoY29uc3QgSW5zcGVjdG9yOjpFeHRl
bnNpb25JRCYsIGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uVGFiSUQmKTsKICAgICB2b2lkIGRp
ZEhpZGVFeHRlbnNpb25UYWIoY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYsIGNvbnN0IElu
c3BlY3Rvcjo6RXh0ZW5zaW9uVGFiSUQmKTsKIAogcHJpdmF0ZToKLSAgICBKU0M6OkpTT2JqZWN0
KiB1bndyYXBFdmFsdWF0aW9uUmVzdWx0QXNPYmplY3QoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRl
bmRBUElEaXNwYXRjaGVyOjpFdmFsdWF0aW9uUmVzdWx0KTsKLSAgICBzdGQ6Om9wdGlvbmFsPElu
c3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+IHBhcnNlRXh0ZW5zaW9uRXJyb3JGcm9tRXZhbHVhdGlv
blJlc3VsdChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OkV2YWx1YXRp
b25SZXN1bHQpOworICAgIEpTQzo6SlNPYmplY3QqIHVud3JhcEV2YWx1YXRpb25SZXN1bHRBc09i
amVjdChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OkV2YWx1YXRpb25S
ZXN1bHQpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yOjpFeHRlbnNpb25FcnJv
cj4gcGFyc2VFeHRlbnNpb25FcnJvckZyb21FdmFsdWF0aW9uUmVzdWx0KFdlYkNvcmU6Okluc3Bl
Y3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6RXZhbHVhdGlvblJlc3VsdCkgY29uc3Q7CiAKICAg
ICBXZWFrUHRyPFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50PiBtX2Zyb250ZW5kQ2xp
ZW50OwogICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1faW5zcGVjdG9yUGFnZUlkZW50aWZp
ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLm1l
c3NhZ2VzLmluCmluZGV4IDZhMDBlY2ZmZTU4MzBmZjE2NDVlOTAxN2JjZTZkNzYxZjI3ODcyMWMu
LmM5MjRmNzMwN2E4Yzg1ODhjYjg4Y2RlNjkwM2NjMDBiOWI2ZjljZjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25D
b250cm9sbGVyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNw
ZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLm1lc3NhZ2VzLmluCkBAIC0z
MCw2ICszMCwxMCBAQCBtZXNzYWdlcyAtPiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xs
ZXIgTm90UmVmQ291bnRlZCB7CiAgICAgRXZhbHVhdGVTY3JpcHRGb3JFeHRlbnNpb24oU3RyaW5n
IGV4dGVuc2lvbklELCBTdHJpbmcgc2NyaXB0U291cmNlLCBzdGQ6Om9wdGlvbmFsPFVSTD4gZnJh
bWVVUkwsIHN0ZDo6b3B0aW9uYWw8VVJMPiBjb250ZXh0U2VjdXJpdHlPcmlnaW4sIHN0ZDo6b3B0
aW9uYWw8Ym9vbD4gdXNlQ29udGVudFNjcmlwdENvbnRleHQpIC0+IChJUEM6OkRhdGFSZWZlcmVu
Y2UgcmVzdWx0RGF0YSwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiBk
ZXRhaWxzLCBzdGQ6Om9wdGlvbmFsPEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+IGVycm9yKSBB
c3luYwogICAgIFJlbG9hZEZvckV4dGVuc2lvbihTdHJpbmcgZXh0ZW5zaW9uSUQsIHN0ZDo6b3B0
aW9uYWw8Ym9vbD4gaWdub3JlQ2FjaGUsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiB1c2VyQWdlbnQs
IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBpbmplY3RlZFNjcmlwdCkgLT4gKHN0ZDo6b3B0aW9uYWw8
SW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4gZXJyb3IpIEFzeW5jCiAgICAgU2hvd0V4dGVuc2lv
blRhYihTdHJpbmcgZXh0ZW5zaW9uVGFiSWRlbnRpZmllcikgLT4gKEV4cGVjdGVkPGJvb2wsIElu
c3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+IHJlc3VsdCkgQXN5bmMKKyAgICAKKyAgICAvLyBGb3Ig
dGVzdGluZy4KKyAgICBFdmFsdWF0ZVNjcmlwdEluRXh0ZW5zaW9uVGFiKFN0cmluZyBleHRlbnNp
b25UYWJJRCwgU3RyaW5nIHNjcmlwdFNvdXJjZSkgLT4gKElQQzo6RGF0YVJlZmVyZW5jZSByZXN1
bHREYXRhLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMs
IHN0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4gZXJyb3IpIEFzeW5jCisg
ICAgCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMTJlZTcyNDQ1N2Mz
MGFlMmQwMjZmNTc2ZmNiNWU5ZGM2ZmFjMjNhMC4uMjUwYzdmZjgyODZjM2U3YTQ4ODk5ZDliN2Vk
YjFjZjQ3NWY5M2U2NiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIxLTA5LTI3ICBCSiBCdXJnICA8YmJ1cmdAYXBw
bGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gYWRkIF9XS0luc3BlY3RvckV4dGVuc2lvbiBTUEkg
dG8gZXZhbHVhdGUgc2NyaXB0IG9uIGFuIGV4dGVuc2lvbiB0YWIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDY0NgorICAgICAgICA8cmRhcjovL3By
b2JsZW0vODM0MjAzMjg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGV2aW4gUm91c3NvLgorCisg
ICAgICAgIEFkZCBhIG5ldyB0ZXN0IHRvIGV4ZXJjaXNlIHRoZSBTUEkuIFRoZSB0ZXN0IHNldHMg
dXAgYW4gX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLAorICAgICAgICBjcmVhdGVzIGEgdGFiLCBldmFs
dWF0ZXMgc2NyaXB0IG9uIHRoZSB0YWIsIGFuZCBsYXRlciByZWFkcyBiYWNrIHRoZSBzdG9yZWQg
dmFsdWUuCisKKyAgICAgICAgTm90YWJseSwgdGhpcyB0ZXN0IHdvdWxkIGZhaWwgaWYgdGhlIGV4
dGVuc2lvbiB0YWIgaXMgbm90IGN1cnJlbnRseSBzaG93aW5nLgorICAgICAgICBUaGlzIGlzIGEg
YnVnIGFuZCB3aWxsIGJlIGFkZHJlc3NlZCBhcyBwYXJ0IG9mIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzA3NTguCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Nv
dXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIEFkZCBuZXcgZmlsZXMuCisKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luc3BlY3RvckV4dGVuc2lvbi1i
YXNpYy10YWIuaHRtbDoKKyAgICAgICAgQWRkIGlubGluZSA8c2NyaXB0PiB0byBzZXQgd2luZG93
Ll9zZWNyZXRWYWx1ZS4gVGhpcyBpcyBjaGVja2VkIGJ5IHRoZSBBUEkgdGVzdC4KKworICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tJbnNwZWN0b3JFeHRlbnNpb24u
bW06IEFkZGVkLgorICAgICAgICAocmVzZXRHbG9iYWxTdGF0ZSk6CisgICAgICAgICgtW1VJRGVs
ZWdhdGVGb3JUZXN0aW5nSW5zcGVjdG9yRXh0ZW5zaW9uIF93ZWJWaWV3OmRpZEF0dGFjaExvY2Fs
SW5zcGVjdG9yOl0pOgorICAgICAgICAoLVtVSURlbGVnYXRlRm9yVGVzdGluZ0luc3BlY3RvckV4
dGVuc2lvbiBfd2ViVmlldzpjb25maWd1cmF0aW9uRm9yTG9jYWxJbnNwZWN0b3I6XSk6CisgICAg
ICAgICgtW0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlRm9yVGVzdGluZ0luc3BlY3RvckV4dGVu
c2lvbiBpbnNwZWN0b3JFeHRlbnNpb246ZGlkU2hvd1RhYldpdGhJZGVudGlmaWVyOl0pOgorICAg
ICAgICAoLVtJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZUZvclRlc3RpbmdJbnNwZWN0b3JFeHRl
bnNpb24gaW5zcGVjdG9yRXh0ZW5zaW9uOmRpZEhpZGVUYWJXaXRoSWRlbnRpZmllcjpdKToKKyAg
ICAgICAgKFRFU1QpOgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9XS0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLm1tOgorICAgICAgICAoLVtVSURlbGVnYXRl
Rm9yVGVzdGluZ0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlIF93ZWJWaWV3OmNvbmZpZ3VyYXRp
b25Gb3JMb2NhbEluc3BlY3RvcjpdKToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICBBZG9wdCBm
aXhlcyBmcm9tIFdLSW5zcGVjdG9yRXh0ZW5zaW9uIHRoYXQgYWxsb3cgZXh0ZW5zaW9uIHRhYiBj
b250ZW50IGFuZCBpY29ucyB0byBsb2FkLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2Nv
YS9UZXN0SW5zcGVjdG9yVVJMU2NoZW1lSGFuZGxlci5oOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL2NvY29hL1Rlc3RJbnNwZWN0b3JVUkxTY2hlbWVIYW5kbGVyLm1tOiBDb3BpZWQg
ZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dLSW5zcGVjdG9yUmVz
b3VyY2VVUkxTY2hlbWVIYW5kbGVyLm1tLgorICAgICAgICAoLVtUZXN0SW5zcGVjdG9yVVJMU2No
ZW1lSGFuZGxlciB3ZWJWaWV3OnN0YXJ0VVJMU2NoZW1lVGFzazpdKToKKyAgICAgICAgKC1bVGVz
dEluc3BlY3RvclVSTFNjaGVtZUhhbmRsZXIgd2ViVmlldzpzdG9wVVJMU2NoZW1lVGFzazpdKToK
KyAgICAgICAgQWRkIGEgc2ltcGxlIFVSTFNjaGVtZUhhbmRsZXIgd2hpY2ggYWxsb3dzIHNlcnZp
bmcgdGVzdCByZXNvdXJjZXMgZnJvbSB0aGUgVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMgZGlyZWN0
b3J5LgorICAgICAgICBUaGlzIGlzIG5lY2Vzc2FyeSB0byB0ZXN0IF9XS0luc3BlY3RvckV4dGVu
c2lvbiB0YWJzLCB3aGljaCBtdXN0IGxvYWQgdGhlaXIgY29udGVudCBmcm9tIGEgY3VzdG9tIFVS
TCBzY2hlbWUuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcu
bW06CisgICAgICAgIEZpeCBVbmlmaWVkU291cmNlcyBmYWxsb3V0IGJ5IGFkZGluZyBhIG1pc3Np
bmcgaW5jbHVkZS4KKwogMjAyMS0wOS0yNyAgQkogQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbQ29jb2FdIEFkZCBTUEkgdG8gc2VsZWN0IGEgdGFiIGNyZWF0ZWQgYnkgX1dLSW5z
cGVjdG9yRXh0ZW5zaW9uCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1NvdXJjZXND
b2NvYS50eHQgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggNGU2
MTljZDU5MmM0YzQ2MzlkZTRiNGJhYzk2NWNhZmI2MDIyODA5ZC4uZGI5ZTZlNGJlZDkzZDIzMmRm
ZjBiNDhjMzkyYTZkM2M1ZThkOTY0YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9T
b3VyY2VzQ29jb2EudHh0CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvU291cmNlc0NvY29hLnR4
dApAQCAtMjcsNiArMjcsNyBAQCBXS1dlYlZpZXdDb25maWd1cmF0aW9uRXh0cmFzLm1tCiBjb2Nv
YS9QbGF0Zm9ybVV0aWxpdGllc0NvY29hLm1tCiBjb2NvYS9UZXN0Q29jb2EubW0KIGNvY29hL1Rl
c3REb3dubG9hZERlbGVnYXRlLm1tCitjb2NvYS9UZXN0SW5zcGVjdG9yVVJMU2NoZW1lSGFuZGxl
ci5tbQogY29jb2EvVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUubW0KIGNvY29hL1Rlc3ROYXZp
Z2F0aW9uRGVsZWdhdGUubW0KIGNvY29hL1Rlc3RQcm90b2NvbC5tbQpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCBhNTM2MzUzNDlmZTg0YmQxNjBkOTIzZWI4MmVhMThhZGEwYTk5YzI4Li5lZTE2
MGExNzliYmY0NmNhMWY4Y2M2ZmM3NjJkNDdmYjliNGY4NWU3IDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtODkzLDYgKzg5Myw3IEBACiAJCTk5OTkxMDhCMUYzOTNDOTYwMDhBRDQ1NSAvKiBD
b3B5aW5nLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTk5OTEwOEExRjM5M0M4QjAwOEFENDU1IC8qIENvcHlpbmcubW0gKi87IH07CiAJCTk5OUI3RUUz
MjU1MUM2M0IwMEY0NTBBNCAvKiBXS0luc3BlY3RvckV4dGVuc2lvbkhvc3QubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTlCN0VFMjI1NTFDNjNCMDBG
NDUwQTQgLyogV0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0Lm1tICovOyB9OwogCQk5OUI0RjlDNjI0
RURFRDk3MDAwMjJCODIgLyogV0tJbnNwZWN0b3JEZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5QjRGOUM1MjRFREVEOTYwMDAyMkI4MiAv
KiBXS0luc3BlY3RvckRlbGVnYXRlLm1tICovOyB9OworCQk5OUM2MDdFRDI2RkI5MEFDMDBBMDk1
M0YgLyogV0tJbnNwZWN0b3JFeHRlbnNpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5OUM2MDdFQzI2RkI5MEFDMDBBMDk1M0YgLyogV0tJbnNwZWN0
b3JFeHRlbnNpb24ubW0gKi87IH07CiAJCTk5RTI4NDY0MjZGOTFGN0YwMDAzRjFGQSAvKiBXS0lu
c3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTlFMjg0NjMyNkY5MUY3RjAwMDNGMUZBIC8qIFdLSW5zcGVjdG9y
RXh0ZW5zaW9uRGVsZWdhdGUubW0gKi87IH07CiAJCTk5RTI4NDY2MjZGOTNEQjUwMDAzRjFGQSAv
KiBJbnNwZWN0b3JFeHRlbnNpb24tVGFiSWNvbi0zMHgzMC5wbmcgaW4gQ29weSBSZXNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlFMjg0NjUyNkY5M0Q3NjAwMDNG
MUZBIC8qIEluc3BlY3RvckV4dGVuc2lvbi1UYWJJY29uLTMweDMwLnBuZyAqLzsgfTsKIAkJOTlF
Mjg0NjgyNkY5NDE1NDAwMDNGMUZBIC8qIEluc3BlY3RvckV4dGVuc2lvbi1iYXNpYy10YWIuaHRt
bCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
OUUyODQ2NzI2Rjk0MTNCMDAwM0YxRkEgLyogSW5zcGVjdG9yRXh0ZW5zaW9uLWJhc2ljLXRhYi5o
dG1sICovOyB9OwpAQCAtMTUxOSw3ICsxNTIwLDYgQEAKIAkJCQkwN0UxRjZBMjFGRkM0NEZBMDA5
NkM3RUMgLyogZ2V0RGlzcGxheU1lZGlhLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJ
NDY3QzU2NTMyMUI1RUQxMzAwNTc1MTZEIC8qIEdldFNlc3Npb25Db29raWUuaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLywKIAkJCQk0MTY2MUM2NjIzNTVFODVFMDBEMzNDMjcgLyogZ2V0VXNlck1l
ZGlhLXdlYmF1ZGlvLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCi0JCQkJMDc0OTk0NDIxRUE1
MDM0QjAwMERBNDREIC8qIGludmFsaWREZXZpY2VJREhhc2hTYWx0cyBpbiBDb3B5IFJlc291cmNl
cyAqLywKIAkJCQkwNzQ5OTQ0MjFFQTUwMzRCMDAwREE0NEUgLyogZ2V0VXNlck1lZGlhLmh0bWwg
aW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJMDc0OTk0NTIxRUE1MDM0QjAwMERBNDRFIC8qIGdl
dFVzZXJNZWRpYTIuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQkwNzQ5OTQ0MjFFQTUw
MzRCMDAwREE0NUUgLyogZ2V0VXNlck1lZGlhQXVkaW9WaWRlb0NhcHR1cmUuaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLywKQEAgLTE1NzgsNiArMTU3OCw3IEBACiAJCQkJQ0U2RDBFRTMyNDI2Qjkz
MjAwMkFEOTAxIC8qIGluc2VydC10ZXh0Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJ
OTlFMjg0NjgyNkY5NDE1NDAwMDNGMUZBIC8qIEluc3BlY3RvckV4dGVuc2lvbi1iYXNpYy10YWIu
aHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk5OUUyODQ2NjI2RjkzREI1MDAwM0YxRkEg
LyogSW5zcGVjdG9yRXh0ZW5zaW9uLVRhYkljb24tMzB4MzAucG5nIGluIENvcHkgUmVzb3VyY2Vz
ICovLAorCQkJCTA3NDk5NDQyMUVBNTAzNEIwMDBEQTQ0RCAvKiBpbnZhbGlkRGV2aWNlSURIYXNo
U2FsdHMgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNTdGNTZBNUMxQzdGOENDMTAwRjMxRDdF
IC8qIElzTmF2aWdhdGlvbkFjdGlvblRydXN0ZWQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywK
IAkJCQlDOUI0QUQyQzFFQ0E2RjdGMDBGNUZFQTAgLyoganMtYXV0b3BsYXktYXVkaW8uaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlDOTlCNjc1RDFFMzk3MjIwMDBGQzZDODAgLyoganMt
cGxheS13aXRoLWNvbnRyb2xzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCkBAIC0yNjI0LDYg
KzI2MjUsOSBAQAogCQk5OTk5MTA4QTFGMzkzQzhCMDA4QUQ0NTUgLyogQ29weWluZy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENvcHlpbmcubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5OUI3RUUyMjU1MUM2M0IwMEY0NTBBNCAvKiBXS0luc3Bl
Y3RvckV4dGVuc2lvbkhvc3QubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBXS0luc3BlY3RvckV4dGVuc2lvbkhvc3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTk5QjRGOUM1MjRFREVEOTYwMDAyMkI4MiAvKiBXS0luc3BlY3RvckRlbGVnYXRlLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tJbnNwZWN0b3JEZWxl
Z2F0ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTlDNjA3RUMyNkZCOTBBQzAw
QTA5NTNGIC8qIFdLSW5zcGVjdG9yRXh0ZW5zaW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gV0tJbnNwZWN0b3JFeHRlbnNpb24ubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTk5QzYwN0Y0MjZGRDVBMUUwMEEwOTUzRiAvKiBUZXN0SW5zcGVjdG9y
VVJMU2NoZW1lSGFuZGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBUZXN0
SW5zcGVjdG9yVVJMU2NoZW1lSGFuZGxlci5oOyBwYXRoID0gY29jb2EvVGVzdEluc3BlY3RvclVS
TFNjaGVtZUhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTlDNjA3RjUy
NkZENUExRjAwQTA5NTNGIC8qIFRlc3RJbnNwZWN0b3JVUkxTY2hlbWVIYW5kbGVyLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gVGVzdEluc3BlY3RvclVSTFNjaGVt
ZUhhbmRsZXIubW07IHBhdGggPSBjb2NvYS9UZXN0SW5zcGVjdG9yVVJMU2NoZW1lSGFuZGxlci5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTlFMjg0NjMyNkY5MUY3RjAwMDNGMUZB
IC8qIFdLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBXS0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OUUyODQ2NTI2RjkzRDc2MDAwM0YxRkEgLyogSW5z
cGVjdG9yRXh0ZW5zaW9uLVRhYkljb24tMzB4MzAucG5nICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucG5nOyBwYXRoID0gIkluc3BlY3RvckV4
dGVuc2lvbi1UYWJJY29uLTMweDMwLnBuZyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTk5RTI4NDY3MjZGOTQxM0IwMDAzRjFGQSAvKiBJbnNwZWN0b3JFeHRlbnNpb24tYmFzaWMtdGFi
Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiSW5zcGVjdG9yRXh0ZW5zaW9uLWJh
c2ljLXRhYi5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMzMjMsNiArMzMy
Nyw4IEBACiAJCQkJNUNFNzU5NDcyMkE4ODNBNTAwQzEyNDA5IC8qIFRlc3RDb250ZXh0TWVudURy
aXZlci5tbSAqLywKIAkJCQlERjZCQzQ3MDI1MzRFMTIwMDA4RjYzQ0MgLyogVGVzdERvd25sb2Fk
RGVsZWdhdGUuaCAqLywKIAkJCQlERjZCQzQ2RjI1MzRFMTIwMDA4RjYzQ0MgLyogVGVzdERvd25s
b2FkRGVsZWdhdGUubW0gKi8sCisJCQkJOTlDNjA3RjQyNkZENUExRTAwQTA5NTNGIC8qIFRlc3RJ
bnNwZWN0b3JVUkxTY2hlbWVIYW5kbGVyLmggKi8sCisJCQkJOTlDNjA3RjUyNkZENUExRjAwQTA5
NTNGIC8qIFRlc3RJbnNwZWN0b3JVUkxTY2hlbWVIYW5kbGVyLm1tICovLAogCQkJCTVDNzJFOENE
MjQ0RkZDRTMwMDM4MUVCNyAvKiBUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5oICovLAogCQkJ
CTVDNzJFOENFMjQ0RkZDRTQwMDM4MUVCNyAvKiBUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5t
bSAqLywKIAkJCQkyRDFDMDRBNTFENzYyOThCMDAwQTY4MTYgLyogVGVzdE5hdmlnYXRpb25EZWxl
Z2F0ZS5oICovLApAQCAtMzY2Niw2ICszNjcyLDcgQEAKIAkJCQkzNzBDRTIyOTFGNTczNDM0MDBF
NzQxMEIgLyogV0tDb250ZW50Vmlld1RhcmdldEZvckFjdGlvbi5tbSAqLywKIAkJCQk1MUQxMjQ5
NzFFNzYzQUY4MDAyQjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmUubW0gKi8sCiAJCQkJOTlCNEY5
QzUyNEVERUQ5NjAwMDIyQjgyIC8qIFdLSW5zcGVjdG9yRGVsZWdhdGUubW0gKi8sCisJCQkJOTlD
NjA3RUMyNkZCOTBBQzAwQTA5NTNGIC8qIFdLSW5zcGVjdG9yRXh0ZW5zaW9uLm1tICovLAogCQkJ
CTk5RTI4NDYzMjZGOTFGN0YwMDAzRjFGQSAvKiBXS0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRl
Lm1tICovLAogCQkJCTk5OUI3RUUyMjU1MUM2M0IwMEY0NTBBNCAvKiBXS0luc3BlY3RvckV4dGVu
c2lvbkhvc3QubW0gKi8sCiAJCQkJQTVBNzI5RjAxRjYyMkE5QTAwREU1QTI4IC8qIFdLTmF2aWdh
dGlvblJlc3BvbnNlLm1tICovLApAQCAtNDU4MSw2ICs0NTg4LDcgQEAKIAkJQkM5MDk3N0IxMjU1
NzFBRTAwMDgzNzU2IC8qIFJlc291cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJNEE0MTBGNEQxOUFGN0JFRjAwMkVCQUI0IC8qIGludmFsaWREZXZp
Y2VJREhhc2hTYWx0cyAqLywKIAkJCQlDMDQ1Rjk0NjEzODVDMkY4MDBDMEYzQ0QgLyogMTgtY2hh
cmFjdGVycy5odG1sICovLAogCQkJCTFDMkI4MTg1MUM4OTI1MjMwMEE1NTI5RiAvKiBBaGVtLnR0
ZiAqLywKIAkJCQk5M0QzRDE5QjE3QjFBN0IwMDBDN0M0MTUgLyogYWxsLWNvbnRlbnQtaW4tb25l
LWlmcmFtZS5odG1sICovLApAQCAtNDYyOSw3ICs0NjM3LDYgQEAKIAkJCQlCQ0JEMzcyRTEyNUFC
QkU2MDBEMkMyOUYgLyogaWNvbi5wbmcgKi8sCiAJCQkJMUNDODBDRTkyNDc0RjFGNzAwNERDNDg5
IC8qIGlkZW1wb3RlbnQtbW9kZS1hdXRvc2l6aW5nLW9ubHktaG9ub3JzLXBlcmNlbnRhZ2VzLmh0
bWwgKi8sCiAJCQkJQ0UzNTI0RjUxQjE0MkJCQjAwMjhBN0M1IC8qIGlucHV0LWZvY3VzLWJsdXIu
aHRtbCAqLywKLQkJCQk0QTQxMEY0RDE5QUY3QkVGMDAyRUJBQjQgLyogaW52YWxpZERldmljZUlE
SGFzaFNhbHRzICovLAogCQkJCUM5QjRBRDJCMUVDQTZGNzYwMEY1RkVBMCAvKiBqcy1hdXRvcGxh
eS1hdWRpby5odG1sICovLAogCQkJCUM5OUI2NzVCMUUzOTcxRkMwMEZDNkM4MCAvKiBqcy1wbGF5
LXdpdGgtY29udHJvbHMuaHRtbCAqLywKIAkJCQk1NTIyNkEyRTFFQjk2OUI2MDBDMzZBRDAgLyog
bGFyZ2UtcmVkLXNxdWFyZS1pbWFnZS5odG1sICovLApAQCAtNTk0Nyw2ICs1OTU0LDcgQEAKIAkJ
CQk1MUQxMjQ5ODFFNzYzQjAyMDAyQjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmUubW0gaW4gU291
cmNlcyAqLywKIAkJCQk3Q0NFN0YxRDFBNDExQUU2MDA0NDdDNEMgLyogV0tJbWFnZUNyZWF0ZUNH
SW1hZ2VDcmFzaC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5OUI0RjlDNjI0RURFRDk3MDAwMjJC
ODIgLyogV0tJbnNwZWN0b3JEZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTk5QzYwN0VE
MjZGQjkwQUMwMEEwOTUzRiAvKiBXS0luc3BlY3RvckV4dGVuc2lvbi5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTk5RTI4NDY0MjZGOTFGN0YwMDAzRjFGQSAvKiBXS0luc3BlY3RvckV4dGVuc2lvbkRl
bGVnYXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTk5QjdFRTMyNTUxQzYzQjAwRjQ1MEE0IC8q
IFdLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUE1QTcyOUYx
MUY2MjJBQTcwMERFNUEyOCAvKiBXS05hdmlnYXRpb25SZXNwb25zZS5tbSBpbiBTb3VyY2VzICov
LApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbnNw
ZWN0b3JFeHRlbnNpb24tYmFzaWMtdGFiLmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0luc3BlY3RvckV4dGVuc2lvbi1iYXNpYy10YWIuaHRtbAppbmRleCBmZTg4
YWQwZTlkZmQ0YmI3ODQ2ODIxMjgxMDUxNDE2YWI3MGYwYTM1Li40MmJmMTlkMGIyNzc1NDIxOWM1
MjJkN2EzYWQwOGEyOWM0YTVhMGU0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0luc3BlY3RvckV4dGVuc2lvbi1iYXNpYy10YWIuaHRtbAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luc3BlY3RvckV4dGVuc2lvbi1i
YXNpYy10YWIuaHRtbApAQCAtMSw0ICsxLDggQEAKIDxodG1sPgorPGhlYWQ+Cis8c2NyaXB0Pgor
ICAgIHdpbmRvdy5fc2VjcmV0VmFsdWUgPSB7YW5zd2VyOjQyfTsKKzwvc2NyaXB0PgogPGJvZHk+
CiA8aDE+VGhpcyBpcyBhIHRlc3QgZXh0ZW5zaW9uLjwvaDE+CiA8cD5JbiBhIG5vcm1hbCBleHRl
bnNpb24sIHRoaXMgYXJlYSB3b3VsZCBzaG93IHRoZSBleHRlbnNpb24ncyB1c2VyIGludGVyZmFj
ZS48L3A+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1dLSW5zcGVjdG9yRXh0ZW5zaW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9XS0luc3BlY3RvckV4dGVuc2lvbi5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNDIxNzI4OGM5Y2Zj
MTBmOTc1YmM3NzhiMTg0NTI2MDcwNGU5MzlmCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0luc3BlY3RvckV4dGVuc2lvbi5tbQpAQCAt
MCwwICsxLDE5MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisjaWYgRU5B
QkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorCisjaW1wb3J0ICJUZXN0Q29jb2EuaCIKKyNpbXBv
cnQgIlRlc3RJbnNwZWN0b3JVUkxTY2hlbWVIYW5kbGVyLmgiCisjaW1wb3J0ICJVdGlsaXRpZXMu
aCIKKyNpbXBvcnQgPFdlYktpdC9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2Vi
S2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tJbnNwZWN0b3IuaD4K
KyNpbXBvcnQgPFdlYktpdC9fV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uLmg+CisjaW1wb3J0IDxX
ZWJLaXQvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLSW5zcGVj
dG9yRXh0ZW5zaW9uRGVsZWdhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tJbnNwZWN0b3JFeHRl
bnNpb25Qcml2YXRlRm9yVGVzdGluZy5oPgorI2ltcG9ydCA8V2ViS2l0L19XS0luc3BlY3RvclBy
aXZhdGVGb3JUZXN0aW5nLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKK3N0YXRpYyBi
b29sIGRpZEF0dGFjaExvY2FsSW5zcGVjdG9yQ2FsbGVkID0gZmFsc2U7CitzdGF0aWMgYm9vbCBk
aWRTaG93RXh0ZW5zaW9uVGFiV2FzQ2FsbGVkID0gZmFsc2U7CitzdGF0aWMgYm9vbCBkaWRIaWRl
RXh0ZW5zaW9uVGFiV2FzQ2FsbGVkID0gZmFsc2U7CitzdGF0aWMgYm9vbCBwZW5kaW5nQ2FsbGJh
Y2tXYXNDYWxsZWQgPSBmYWxzZTsKK3N0YXRpYyBSZXRhaW5QdHI8VGVzdEluc3BlY3RvclVSTFNj
aGVtZUhhbmRsZXI+IHNoYXJlZFVSTFNjaGVtZUhhbmRsZXI7CitzdGF0aWMgUmV0YWluUHRyPF9X
S0luc3BlY3RvckV4dGVuc2lvbj4gc2hhcmVkSW5zcGVjdG9yRXh0ZW5zaW9uOworc3RhdGljIFJl
dGFpblB0cjxOU1N0cmluZz4gc2hhcmVkRXh0ZW5zaW9uVGFiSWRlbnRpZmllcjsKKworc3RhdGlj
IHZvaWQgcmVzZXRHbG9iYWxTdGF0ZSgpCit7CisgICAgZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3JD
YWxsZWQgPSBmYWxzZTsKKyAgICBkaWRTaG93RXh0ZW5zaW9uVGFiV2FzQ2FsbGVkID0gZmFsc2U7
CisgICAgZGlkSGlkZUV4dGVuc2lvblRhYldhc0NhbGxlZCA9IGZhbHNlOworICAgIHBlbmRpbmdD
YWxsYmFja1dhc0NhbGxlZCA9IGZhbHNlOworfQorCitAaW50ZXJmYWNlIFVJRGVsZWdhdGVGb3JU
ZXN0aW5nSW5zcGVjdG9yRXh0ZW5zaW9uIDogTlNPYmplY3QgPFdLVUlEZWxlZ2F0ZT4KK0BlbmQK
KworQGltcGxlbWVudGF0aW9uIFVJRGVsZWdhdGVGb3JUZXN0aW5nSW5zcGVjdG9yRXh0ZW5zaW9u
CisKKy0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkQXR0YWNoTG9jYWxJ
bnNwZWN0b3I6KF9XS0luc3BlY3RvciAqKWluc3BlY3RvcgoreworICAgIEVYUEVDVF9FUSh3ZWJW
aWV3Ll9pbnNwZWN0b3IsIGluc3BlY3Rvcik7CisgICAgZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3JD
YWxsZWQgPSB0cnVlOworfQorCistIChfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uICopX3dlYlZp
ZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgY29uZmlndXJhdGlvbkZvckxvY2FsSW5zcGVjdG9yOihf
V0tJbnNwZWN0b3IgKilpbnNwZWN0b3IKK3sKKyAgICBpZiAoIXNoYXJlZFVSTFNjaGVtZUhhbmRs
ZXIpCisgICAgICAgIHNoYXJlZFVSTFNjaGVtZUhhbmRsZXIgPSBhZG9wdE5TKFtbVGVzdEluc3Bl
Y3RvclVSTFNjaGVtZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKKworICAgIGF1dG8gaW5zcGVjdG9y
Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uIGFsbG9j
XSBpbml0XSk7CisgICAgW2luc3BlY3RvckNvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxl
cjpzaGFyZWRVUkxTY2hlbWVIYW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpAInRlc3QtcmVzb3Vy
Y2UiXTsKKyAgICByZXR1cm4gaW5zcGVjdG9yQ29uZmlndXJhdGlvbi5hdXRvcmVsZWFzZSgpOwor
fQorCitAZW5kCisKKworQGludGVyZmFjZSBJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZUZvclRl
c3RpbmdJbnNwZWN0b3JFeHRlbnNpb24gOiBOU09iamVjdCA8X1dLSW5zcGVjdG9yRXh0ZW5zaW9u
RGVsZWdhdGU+CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBJbnNwZWN0b3JFeHRlbnNpb25EZWxl
Z2F0ZUZvclRlc3RpbmdJbnNwZWN0b3JFeHRlbnNpb24geworfQorCistICh2b2lkKWluc3BlY3Rv
ckV4dGVuc2lvbjooX1dLSW5zcGVjdG9yRXh0ZW5zaW9uICopZXh0ZW5zaW9uIGRpZFNob3dUYWJX
aXRoSWRlbnRpZmllcjooTlNTdHJpbmcgKil0YWJJZGVudGlmaWVyCit7CisgICAgZGlkU2hvd0V4
dGVuc2lvblRhYldhc0NhbGxlZCA9IHRydWU7Cit9CisKKy0gKHZvaWQpaW5zcGVjdG9yRXh0ZW5z
aW9uOihfV0tJbnNwZWN0b3JFeHRlbnNpb24gKilleHRlbnNpb24gZGlkSGlkZVRhYldpdGhJZGVu
dGlmaWVyOihOU1N0cmluZyAqKXRhYklkZW50aWZpZXIKK3sKKyAgICBkaWRIaWRlRXh0ZW5zaW9u
VGFiV2FzQ2FsbGVkID0gdHJ1ZTsKK30KKworQGVuZAorCitURVNUKFdLSW5zcGVjdG9yRXh0ZW5z
aW9uLCBDYW5FdmFsdWF0ZVNjcmlwdEluRXh0ZW5zaW9uVGFiKQoreworICAgIHJlc2V0R2xvYmFs
U3RhdGUoKTsKKworICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtXS1dl
YlZpZXdDb25maWd1cmF0aW9uIG5ld10pOworICAgIHdlYlZpZXdDb25maWd1cmF0aW9uLmdldCgp
LnByZWZlcmVuY2VzLl9kZXZlbG9wZXJFeHRyYXNFbmFibGVkID0gWUVTOworICAgIGF1dG8gd2Vi
VmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFr
ZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjp3ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQo
KV0pOworICAgIGF1dG8gdWlEZWxlZ2F0ZSA9IGFkb3B0TlMoW1VJRGVsZWdhdGVGb3JUZXN0aW5n
SW5zcGVjdG9yRXh0ZW5zaW9uIG5ld10pOworCisgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTp1
aURlbGVnYXRlLmdldCgpXTsKKyAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpAIjxoZWFkPjx0
aXRsZT5UZXN0IHBhZ2UgdG8gYmUgaW5zcGVjdGVkPC90aXRsZT48L2hlYWQ+PGJvZHk+PHA+Rmls
bGVyIGNvbnRlbnQ8L3A+PC9ib2R5PiIgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0
dHA6Ly9leGFtcGxlLmNvbS8iXV07CisKKyAgICBbW3dlYlZpZXcgX2luc3BlY3Rvcl0gc2hvd107
CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkaWRBdHRhY2hMb2NhbEluc3BlY3RvckNh
bGxlZCk7CisKKyAgICBhdXRvIGV4dGVuc2lvbklEID0gW05TVVVJRCBVVUlEXS5VVUlEU3RyaW5n
OworICAgIGF1dG8gZXh0ZW5zaW9uRGlzcGxheU5hbWUgPSBAIkZpcnN0RXh0ZW5zaW9uIjsKKwor
ICAgIC8vIFJlZ2lzdGVyIHRoZSB0ZXN0IGV4dGVuc2lvbi4KKyAgICBwZW5kaW5nQ2FsbGJhY2tX
YXNDYWxsZWQgPSBmYWxzZTsKKyAgICBbW3dlYlZpZXcgX2luc3BlY3Rvcl0gcmVnaXN0ZXJFeHRl
bnNpb25XaXRoSUQ6ZXh0ZW5zaW9uSUQgZGlzcGxheU5hbWU6ZXh0ZW5zaW9uRGlzcGxheU5hbWUg
Y29tcGxldGlvbkhhbmRsZXI6XihOU0Vycm9yICogX051bGxhYmxlIGVycm9yLCBfV0tJbnNwZWN0
b3JFeHRlbnNpb24gKiBfTnVsbGFibGUgZXh0ZW5zaW9uKSB7CisgICAgICAgIEVYUEVDVF9OVUxM
KGVycm9yKTsKKyAgICAgICAgRVhQRUNUX05PVF9OVUxMKGV4dGVuc2lvbik7CisgICAgICAgIHNo
YXJlZEluc3BlY3RvckV4dGVuc2lvbiA9IGV4dGVuc2lvbjsKKworICAgICAgICBwZW5kaW5nQ2Fs
bGJhY2tXYXNDYWxsZWQgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkKTsKKworICAgIGF1dG8gZXh0ZW5zaW9uRGVs
ZWdhdGUgPSBhZG9wdE5TKFtJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZUZvclRlc3RpbmdJbnNw
ZWN0b3JFeHRlbnNpb24gbmV3XSk7CisgICAgW3NoYXJlZEluc3BlY3RvckV4dGVuc2lvbiBzZXRE
ZWxlZ2F0ZTpleHRlbnNpb25EZWxlZ2F0ZS5nZXQoKV07CisKKyAgICAvLyBDcmVhdGUgYW5kIHNo
b3cgYW4gZXh0ZW5zaW9uIHRhYi4KKyAgICBhdXRvIGljb25VUkwgPSBbTlNVUkwgVVJMV2l0aFN0
cmluZzpAInRlc3QtcmVzb3VyY2U6Ly9GaXJzdEV4dGVuc2lvbi9JbnNwZWN0b3JFeHRlbnNpb24t
VGFiSWNvbi0zMHgzMC5wbmciXTsKKyAgICBhdXRvIHNvdXJjZVVSTCA9IFtOU1VSTCBVUkxXaXRo
U3RyaW5nOkAidGVzdC1yZXNvdXJjZTovL0ZpcnN0RXh0ZW5zaW9uL0luc3BlY3RvckV4dGVuc2lv
bi1iYXNpYy10YWIuaHRtbCJdOworCisgICAgcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkID0gZmFs
c2U7CisgICAgW3NoYXJlZEluc3BlY3RvckV4dGVuc2lvbiBjcmVhdGVUYWJXaXRoTmFtZTpAIkZp
cnN0RXh0ZW5zaW9uLVRhYiIgdGFiSWNvblVSTDppY29uVVJMIHNvdXJjZVVSTDpzb3VyY2VVUkwg
Y29tcGxldGlvbkhhbmRsZXI6XihOU0Vycm9yICogX051bGxhYmxlIGVycm9yLCBOU1N0cmluZyAq
IF9OdWxsYWJsZSBleHRlbnNpb25UYWJJZGVudGlmaWVyKSB7CisgICAgICAgIEVYUEVDVF9OVUxM
KGVycm9yKTsKKyAgICAgICAgRVhQRUNUX05PVF9OVUxMKGV4dGVuc2lvblRhYklkZW50aWZpZXIp
OworICAgICAgICBzaGFyZWRFeHRlbnNpb25UYWJJZGVudGlmaWVyID0gZXh0ZW5zaW9uVGFiSWRl
bnRpZmllcjsKKworICAgICAgICBwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQgPSB0cnVlOworICAg
IH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcGVuZGluZ0NhbGxiYWNrV2FzQ2Fs
bGVkKTsKKworICAgIHBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCA9IGZhbHNlOworICAgIGRpZFNo
b3dFeHRlbnNpb25UYWJXYXNDYWxsZWQgPSBmYWxzZTsKKyAgICBbW3dlYlZpZXcgX2luc3BlY3Rv
cl0gc2hvd0V4dGVuc2lvblRhYldpdGhJZGVudGlmaWVyOnNoYXJlZEV4dGVuc2lvblRhYklkZW50
aWZpZXIuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU0Vycm9yICogX051bGxhYmxlIGVycm9y
KSB7CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKworICAgICAgICBwZW5kaW5nQ2FsbGJh
Y2tXYXNDYWxsZWQgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkKTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJmRpZFNob3dFeHRlbnNpb25UYWJXYXNDYWxsZWQpOworCisgICAgLy8gUmVhZCBiYWNrIGEg
dmFsdWUgdGhhdCBpcyBzZXQgaW4gdGhlIDxpZnJhbWU+J3Mgc2NyaXB0IGNvbnRleHQuCisgICAg
cGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkID0gZmFsc2U7CisgICAgYXV0byBzY3JpcHRTb3VyY2Uy
ID0gQCJ3aW5kb3cuX3NlY3JldFZhbHVlIjsKKyAgICBbc2hhcmVkSW5zcGVjdG9yRXh0ZW5zaW9u
IF9ldmFsdWF0ZVNjcmlwdDpzY3JpcHRTb3VyY2UyIGluRXh0ZW5zaW9uVGFiV2l0aElkZW50aWZp
ZXI6c2hhcmVkRXh0ZW5zaW9uVGFiSWRlbnRpZmllci5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpe
KE5TRXJyb3IgKiBfTnVsbGFibGUgZXJyb3IsIE5TRGljdGlvbmFyeSAqIF9OdWxsYWJsZSByZXN1
bHQpIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBFWFBFQ1RfTk9UX05V
TEwocmVzdWx0KTsKKyAgICAgICAgRVhQRUNUX05TX0VRVUFMKHJlc3VsdFtAImFuc3dlciJdLCBA
NDIpOworCisgICAgICAgIHBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCA9IHRydWU7CisgICAgfV07
CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQp
OworCisgICAgLy8gQ2hlY2sgdG8gc2VlIHRoYXQgc2NyaXB0IGlzIGFjdHVhbGx5IGJlaW5nIGV2
YWx1YXRlZCBpbiB0aGUgPGlmcmFtZT4ncyBzY3JpcHQgY29udGV4dC4KKyAgICBwZW5kaW5nQ2Fs
bGJhY2tXYXNDYWxsZWQgPSBmYWxzZTsKKyAgICBhdXRvIHNjcmlwdFNvdXJjZTMgPSBAIndpbmRv
dy50b3AgIT09IHdpbmRvdyI7CisgICAgW3NoYXJlZEluc3BlY3RvckV4dGVuc2lvbiBfZXZhbHVh
dGVTY3JpcHQ6c2NyaXB0U291cmNlMyBpbkV4dGVuc2lvblRhYldpdGhJZGVudGlmaWVyOnNoYXJl
ZEV4dGVuc2lvblRhYklkZW50aWZpZXIuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU0Vycm9y
ICogX051bGxhYmxlIGVycm9yLCBOU0RpY3Rpb25hcnkgKiBfTnVsbGFibGUgcmVzdWx0KSB7Cisg
ICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAgICAgRVhQRUNUX05PVF9OVUxMKHJlc3Vs
dCk7CisgICAgICAgIEVYUEVDVF9OU19FUVVBTChyZXN1bHQsIEBZRVMpOworCisgICAgICAgIHBl
bmRpbmdDYWxsYmFja1dhc0NhbGxlZCA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQpOworCisgICAgLy8gVW5yZWdp
c3RlciB0aGUgdGVzdCBleHRlbnNpb24uCisgICAgcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkID0g
ZmFsc2U7CisgICAgW1t3ZWJWaWV3IF9pbnNwZWN0b3JdIHVucmVnaXN0ZXJFeHRlbnNpb246c2hh
cmVkSW5zcGVjdG9yRXh0ZW5zaW9uLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNFcnJvciAq
IF9OdWxsYWJsZSBlcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisKKyAgICAg
ICAgcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJnBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCk7Cit9CisKKyNlbmRp
ZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUu
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSW5zcGVjdG9yRXh0
ZW5zaW9uRGVsZWdhdGUubW0KaW5kZXggZjk0NjRiYjZkY2FmMTc3OTY4NjI2NTA1OWI1M2Y3MDM3
ZTk4Yzc2NS4uNGIzOWY1MjExMWNjODhhNmE3MDI2MTQzMDhmNWE3MDEwY2I5ZWY2NSAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0luc3BlY3RvckV4
dGVuc2lvbkRlbGVnYXRlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5tbQpAQCAtMjUsMjIgKzI1LDI1IEBA
CiAKICNpbXBvcnQgImNvbmZpZy5oIgogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05T
KQorCiAjaW1wb3J0ICJUZXN0LmgiCisjaW1wb3J0ICJUZXN0SW5zcGVjdG9yVVJMU2NoZW1lSGFu
ZGxlci5oIgogI2ltcG9ydCAiVXRpbGl0aWVzLmgiCiAjaW1wb3J0IDxXZWJLaXQvV0tQcmVmZXJl
bmNlc1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CiAjaW1w
b3J0IDxXZWJLaXQvX1dLSW5zcGVjdG9yLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLSW5zcGVjdG9y
Q29uZmlndXJhdGlvbi5oPgogI2ltcG9ydCA8V2ViS2l0L19XS0luc3BlY3RvckV4dGVuc2lvbi5o
PgogI2ltcG9ydCA8V2ViS2l0L19XS0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLmg+CiAjaW1w
b3J0IDxXZWJLaXQvX1dLSW5zcGVjdG9yUHJpdmF0ZUZvclRlc3RpbmcuaD4KICNpbXBvcnQgPHd0
Zi9SZXRhaW5QdHIuaD4KIAotI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKLQogc3Rh
dGljIGJvb2wgZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3JDYWxsZWQgPSBmYWxzZTsKIHN0YXRpYyBi
b29sIGRpZFNob3dFeHRlbnNpb25UYWJXYXNDYWxsZWQgPSBmYWxzZTsKIHN0YXRpYyBib29sIGRp
ZEhpZGVFeHRlbnNpb25UYWJXYXNDYWxsZWQgPSBmYWxzZTsKIHN0YXRpYyBib29sIHBlbmRpbmdD
YWxsYmFja1dhc0NhbGxlZCA9IGZhbHNlOworc3RhdGljIFJldGFpblB0cjxUZXN0SW5zcGVjdG9y
VVJMU2NoZW1lSGFuZGxlcj4gc2hhcmVkVVJMU2NoZW1lSGFuZGxlcjsKIHN0YXRpYyBSZXRhaW5Q
dHI8X1dLSW5zcGVjdG9yRXh0ZW5zaW9uPiBzaGFyZWRJbnNwZWN0b3JFeHRlbnNpb247CiBzdGF0
aWMgUmV0YWluUHRyPE5TU3RyaW5nPiBzaGFyZWRFeHRlbnNpb25UYWJJZGVudGlmaWVyOwogCkBA
IC02Myw2ICs2NiwxNiBAQCAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRp
ZEF0dGFjaExvY2FsSW5zcGVjdG9yOihfV0tJbnNwZWN0b3IgKilpbgogICAgIGRpZEF0dGFjaExv
Y2FsSW5zcGVjdG9yQ2FsbGVkID0gdHJ1ZTsKIH0KIAorLSAoX1dLSW5zcGVjdG9yQ29uZmlndXJh
dGlvbiAqKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGNvbmZpZ3VyYXRpb25Gb3JMb2Nh
bEluc3BlY3RvcjooX1dLSW5zcGVjdG9yICopaW5zcGVjdG9yCit7CisgICAgaWYgKCFzaGFyZWRV
UkxTY2hlbWVIYW5kbGVyKQorICAgICAgICBzaGFyZWRVUkxTY2hlbWVIYW5kbGVyID0gYWRvcHRO
UyhbW1Rlc3RJbnNwZWN0b3JVUkxTY2hlbWVIYW5kbGVyIGFsbG9jXSBpbml0XSk7CisKKyAgICBh
dXRvIGluc3BlY3RvckNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLSW5zcGVjdG9yQ29uZmln
dXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtpbnNwZWN0b3JDb25maWd1cmF0aW9uIHNldFVS
TFNjaGVtZUhhbmRsZXI6c2hhcmVkVVJMU2NoZW1lSGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6
QCJ0ZXN0LXJlc291cmNlIl07CisgICAgcmV0dXJuIGluc3BlY3RvckNvbmZpZ3VyYXRpb24uYXV0
b3JlbGVhc2UoKTsKK30KKwogQGVuZAogCiAKQEAgLTExNyw4ICsxMzAsOCBAQCBURVNUKFdLSW5z
cGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUsIFNob3dBbmRIaWRlVGFiQ2FsbGJhY2tzKQogICAgIFtz
aGFyZWRJbnNwZWN0b3JFeHRlbnNpb24gc2V0RGVsZWdhdGU6ZXh0ZW5zaW9uRGVsZWdhdGUuZ2V0
KCldOwogCiAgICAgLy8gQ3JlYXRlIGFuIGV4dGVuc2lvbiB0YWIuCi0gICAgYXV0byBpY29uVVJM
ID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAIkluc3BlY3RvckV4dGVu
c2lvbi1UYWJJY29uLTMweDMwIiB3aXRoRXh0ZW5zaW9uOkAicG5nIiBzdWJkaXJlY3Rvcnk6QCJU
ZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwotICAgIGF1dG8gc291cmNlVVJMID0gW1tOU0J1bmRs
ZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAIkluc3BlY3RvckV4dGVuc2lvbi1iYXNpYy10
YWIiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJl
c291cmNlcyJdOworICAgIGF1dG8gaWNvblVSTCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAidGVz
dC1yZXNvdXJjZTovL0ZpcnN0RXh0ZW5zaW9uL0luc3BlY3RvckV4dGVuc2lvbi1UYWJJY29uLTMw
eDMwLnBuZyJdOworICAgIGF1dG8gc291cmNlVVJMID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6QCJ0
ZXN0LXJlc291cmNlOi8vRmlyc3RFeHRlbnNpb24vSW5zcGVjdG9yRXh0ZW5zaW9uLWJhc2ljLXRh
Yi5odG1sIl07CiAKICAgICBwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQgPSBmYWxzZTsKICAgICBb
c2hhcmVkSW5zcGVjdG9yRXh0ZW5zaW9uIGNyZWF0ZVRhYldpdGhOYW1lOkAiRmlyc3RFeHRlbnNp
b24tVGFiIiB0YWJJY29uVVJMOmljb25VUkwgc291cmNlVVJMOnNvdXJjZVVSTCBjb21wbGV0aW9u
SGFuZGxlcjpeKE5TRXJyb3IgKiBfTnVsbGFibGUgZXJyb3IsIE5TU3RyaW5nICogX051bGxhYmxl
IGV4dGVuc2lvblRhYklkZW50aWZpZXIpIHsKQEAgLTEzMCwxMCArMTQzLDYgQEAgVEVTVChXS0lu
c3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLCBTaG93QW5kSGlkZVRhYkNhbGxiYWNrcykKICAgICB9
XTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnBlbmRpbmdDYWxsYmFja1dhc0NhbGxl
ZCk7CiAKLSAgICAvLyBGb3JjZSBhIGtub3duIG5vbi1leHRlbnNpb24gdGFiIHRvIGJlIHNob3du
IGJlZm9yZSBzaG93aW5nIHRoZSBleHRlbnNpb24gdGFiLiBPdGhlcndpc2UsCi0gICAgLy8gaWYg
dGhlIGV4dGVuc2lvbiB0YWIgd2FzIGFscmVhZHkgb3BlbiwgdGhlbiB0aGlzIHRlc3Qgd291bGQg
aGFuZyB3YWl0aW5nIGZvciBhIGRpZFNob3cgY2FsbGJhY2suCi0gICAgW1t3ZWJWaWV3IF9pbnNw
ZWN0b3JdIHNob3dDb25zb2xlXTsKLQogICAgIHBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCA9IGZh
bHNlOwogICAgIFtbd2ViVmlldyBfaW5zcGVjdG9yXSBzaG93RXh0ZW5zaW9uVGFiV2l0aElkZW50
aWZpZXI6c2hhcmVkRXh0ZW5zaW9uVGFiSWRlbnRpZmllci5nZXQoKSBjb21wbGV0aW9uSGFuZGxl
cjpeKE5TRXJyb3IgKiBfTnVsbGFibGUgZXJyb3IpIHsKICAgICAgICAgRVhQRUNUX05VTEwoZXJy
b3IpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0SW5zcGVjdG9y
VVJMU2NoZW1lSGFuZGxlci5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0SW5zcGVj
dG9yVVJMU2NoZW1lSGFuZGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ3OTA3ZjI3OTBlMGY4M2ViZDljM2Iy
MjBlNGZkMjJiMGU0Mzc3ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L2NvY29hL1Rlc3RJbnNwZWN0b3JVUkxTY2hlbWVIYW5kbGVyLmgKQEAgLTAsMCArMSwzNiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9u
Lmg+CisjaW1wb3J0IDxXZWJLaXQvV0tVUkxTY2hlbWVIYW5kbGVyLmg+CisKK05TX0FTU1VNRV9O
T05OVUxMX0JFR0lOCisKK0BpbnRlcmZhY2UgVGVzdEluc3BlY3RvclVSTFNjaGVtZUhhbmRsZXIg
OiBOU09iamVjdCA8V0tVUkxTY2hlbWVIYW5kbGVyPgorQGVuZAorCitOU19BU1NVTUVfTk9OTlVM
TF9FTkQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdEluc3BlY3Rv
clVSTFNjaGVtZUhhbmRsZXIubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RJbnNw
ZWN0b3JVUkxTY2hlbWVIYW5kbGVyLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM2YTQ3YjM5MjE4ZDgxOTRkNWU5
ZWI4MDViYzFhZTk5YjY1Y2JmMDUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL2NvY29hL1Rlc3RJbnNwZWN0b3JVUkxTY2hlbWVIYW5kbGVyLm1tCkBAIC0wLDAgKzEsMTEz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJUZXN0SW5zcGVj
dG9yVVJMU2NoZW1lSGFuZGxlci5oIgorCisjaW1wb3J0IDxXZWJDb3JlL01JTUVUeXBlUmVnaXN0
cnkuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1VSTFNjaGVtZVRhc2suaD4KKyNpbXBvcnQgPHd0Zi9B
c3NlcnRpb25zLmg+CisKKy8vIE5vdGU6IHRoaXMgY2xhc3MgaXMgYSBzaW1wbGlmaWVkIHZlcnNp
b24gb2YgV0tSZXNvdXJjZVVSTFNjaGVtZUhhbmRsZXIgZm9yIHRlc3RpbmcgcHVycG9zZXMuCisK
K0BpbXBsZW1lbnRhdGlvbiBUZXN0SW5zcGVjdG9yVVJMU2NoZW1lSGFuZGxlciB7CisgICAgUmV0
YWluUHRyPE5TTWFwVGFibGU8aWQgPFdLVVJMU2NoZW1lVGFzaz4sIE5TT3BlcmF0aW9uICo+PiBf
ZmlsZUxvYWRPcGVyYXRpb25zOworICAgIFJldGFpblB0cjxOU0J1bmRsZT4gX2NhY2hlZEJ1bmRs
ZTsKKyAgICBSZXRhaW5QdHI8TlNPcGVyYXRpb25RdWV1ZT4gX29wZXJhdGlvblF1ZXVlOworfQor
CisvLyBNQVJLIC0gV0tVUkxTY2hlbWVIYW5kbGVyIFByb3RvY29sCisKKy0gKHZvaWQpd2ViVmll
dzooV0tXZWJWaWV3ICopd2ViVmlldyBzdGFydFVSTFNjaGVtZVRhc2s6KGlkIDxXS1VSTFNjaGVt
ZVRhc2s+KXVybFNjaGVtZVRhc2sKK3sKKyAgICBpZiAoIV9jYWNoZWRCdW5kbGUpCisgICAgICAg
IF9jYWNoZWRCdW5kbGUgPSBbTlNCdW5kbGUgbWFpbkJ1bmRsZV07CisKKyAgICBpZiAoIV9maWxl
TG9hZE9wZXJhdGlvbnMpCisgICAgICAgIF9maWxlTG9hZE9wZXJhdGlvbnMgPSBhZG9wdE5TKFtb
TlNNYXBUYWJsZSBhbGxvY10gaW5pdFdpdGhLZXlPcHRpb25zOk5TUG9pbnRlckZ1bmN0aW9uc1N0
cm9uZ01lbW9yeSB2YWx1ZU9wdGlvbnM6TlNQb2ludGVyRnVuY3Rpb25zU3Ryb25nTWVtb3J5IGNh
cGFjaXR5OjVdKTsKKworICAgIGlmICghX29wZXJhdGlvblF1ZXVlKSB7CisgICAgICAgIF9vcGVy
YXRpb25RdWV1ZSA9IGFkb3B0TlMoW1tOU09wZXJhdGlvblF1ZXVlIGFsbG9jXSBpbml0XSk7Cisg
ICAgICAgIF9vcGVyYXRpb25RdWV1ZS5nZXQoKS51bmRlcmx5aW5nUXVldWUgPSBkaXNwYXRjaF9n
ZXRfZ2xvYmFsX3F1ZXVlKFFPU19DTEFTU19VU0VSX0lOVEVSQUNUSVZFLCAwKTsKKyAgICAgICAg
X29wZXJhdGlvblF1ZXVlLmdldCgpLnF1YWxpdHlPZlNlcnZpY2UgPSBOU09wZXJhdGlvblF1YWxp
dHlPZlNlcnZpY2VVc2VySW50ZXJhY3RpdmU7CisKKyAgICAgICAgLy8gVGhlIGRlZmF1bHQgdmFs
dWUgKE5TT3BlcmF0aW9uUXVldWVEZWZhdWx0TWF4Q29uY3VycmVudE9wZXJhdGlvbkNvdW50KSBy
ZXN1bHRzIGluIGEgbGFyZ2UgbnVtYmVyIG9mIHRocmVhZHMKKyAgICAgICAgLy8gdGhhdCBjYW4g
ZXhjZWVkIHRoZSBzb2Z0IGxpbWl0IGlmIHR3byBXZWIgSW5zcGVjdG9yIGluc3RhbmNlcyBhcmUg
YmVpbmcgbG9hZGVkIHNpbXVsdGFuZW91c2x5LgorICAgICAgICBfb3BlcmF0aW9uUXVldWUuZ2V0
KCkubWF4Q29uY3VycmVudE9wZXJhdGlvbkNvdW50ID0gNDsKKyAgICB9CisKKyAgICBOU0Jsb2Nr
T3BlcmF0aW9uICpvcGVyYXRpb24gPSBbTlNCbG9ja09wZXJhdGlvbiBibG9ja09wZXJhdGlvbldp
dGhCbG9jazpeeworICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1
ZSgpLCBeeworICAgICAgICAgICAgW19maWxlTG9hZE9wZXJhdGlvbnMgcmVtb3ZlT2JqZWN0Rm9y
S2V5OnVybFNjaGVtZVRhc2tdOworICAgICAgICB9KTsKKworICAgICAgICBOU1VSTCAqcmVxdWVz
dFVSTCA9IHVybFNjaGVtZVRhc2sucmVxdWVzdC5VUkw7CisgICAgICAgIE5TVVJMICpmaWxlVVJM
Rm9yUmVxdWVzdCA9IFtfY2FjaGVkQnVuZGxlIFVSTEZvclJlc291cmNlOnJlcXVlc3RVUkwucmVs
YXRpdmVQYXRoIHdpdGhFeHRlbnNpb246QCIiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEku
cmVzb3VyY2VzIl07CisgICAgICAgIGlmICghZmlsZVVSTEZvclJlcXVlc3QpIHsKKyAgICAgICAg
ICAgIFt1cmxTY2hlbWVUYXNrIGRpZEZhaWxXaXRoRXJyb3I6W05TRXJyb3IgZXJyb3JXaXRoRG9t
YWluOk5TQ29jb2FFcnJvckRvbWFpbiBjb2RlOk5TVVJMRXJyb3JGaWxlRG9lc05vdEV4aXN0IHVz
ZXJJbmZvOm5pbF1dOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAg
TlNFcnJvciAqcmVhZEVycm9yOworICAgICAgICBOU0RhdGEgKmZpbGVEYXRhID0gW05TRGF0YSBk
YXRhV2l0aENvbnRlbnRzT2ZVUkw6ZmlsZVVSTEZvclJlcXVlc3Qgb3B0aW9uczowIGVycm9yOiZy
ZWFkRXJyb3JdOworICAgICAgICBpZiAoIWZpbGVEYXRhKSB7CisgICAgICAgICAgICBbdXJsU2No
ZW1lVGFzayBkaWRGYWlsV2l0aEVycm9yOltOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpOU0NvY29h
RXJyb3JEb21haW4gY29kZTpOU1VSTEVycm9yUmVzb3VyY2VVbmF2YWlsYWJsZSB1c2VySW5mbzpA
eworICAgICAgICAgICAgICAgIE5TVW5kZXJseWluZ0Vycm9yS2V5OiByZWFkRXJyb3IsCisgICAg
ICAgICAgICB9XV07CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBO
U1N0cmluZyAqbWltZVR5cGUgPSBXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjptaW1lVHlwZUZv
ckV4dGVuc2lvbihmaWxlVVJMRm9yUmVxdWVzdC5wYXRoRXh0ZW5zaW9uKTsKKyAgICAgICAgaWYg
KCFtaW1lVHlwZSkKKyAgICAgICAgICAgIG1pbWVUeXBlID0gQCJhcHBsaWNhdGlvbi9vY3RldC1z
dHJlYW0iOworCisgICAgICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiBoZWFkZXJG
aWVsZHMgPSBhZG9wdE5TKEB7CisgICAgICAgICAgICBAIkFjY2Vzcy1Db250cm9sLUFsbG93LU9y
aWdpbiI6IEAiKiIsCisgICAgICAgICAgICBAIkNvbnRlbnQtTGVuZ3RoIjogW05TU3RyaW5nIHN0
cmluZ1dpdGhGb3JtYXQ6QCIlenUiLCAoc2l6ZV90KWZpbGVEYXRhLmxlbmd0aF0sCisgICAgICAg
ICAgICBAIkNvbnRlbnQtVHlwZSI6IG1pbWVUeXBlLAorICAgICAgICB9Lm11dGFibGVDb3B5KTsK
KworICAgICAgICBSZXRhaW5QdHI8TlNIVFRQVVJMUmVzcG9uc2U+IHVybFJlc3BvbnNlID0gYWRv
cHROUyhbW05TSFRUUFVSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp1cmxTY2hlbWVUYXNr
LnJlcXVlc3QuVVJMIHN0YXR1c0NvZGU6MjAwIEhUVFBWZXJzaW9uOm5pbCBoZWFkZXJGaWVsZHM6
aGVhZGVyRmllbGRzLmdldCgpXSk7CisgICAgICAgIFt1cmxTY2hlbWVUYXNrIGRpZFJlY2VpdmVS
ZXNwb25zZTp1cmxSZXNwb25zZS5nZXQoKV07CisgICAgICAgIFt1cmxTY2hlbWVUYXNrIGRpZFJl
Y2VpdmVEYXRhOmZpbGVEYXRhXTsKKyAgICAgICAgW3VybFNjaGVtZVRhc2sgZGlkRmluaXNoXTsK
KyAgICB9XTsKKyAgICAKKyAgICBbX2ZpbGVMb2FkT3BlcmF0aW9ucyBzZXRPYmplY3Q6b3BlcmF0
aW9uIGZvcktleTp1cmxTY2hlbWVUYXNrXTsKKyAgICBbX29wZXJhdGlvblF1ZXVlIGFkZE9wZXJh
dGlvbjpvcGVyYXRpb25dOworfQorCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZp
ZXcgc3RvcFVSTFNjaGVtZVRhc2s6KGlkIDxXS1VSTFNjaGVtZVRhc2s+KXVybFNjaGVtZVRhc2sK
K3sKKyAgICAvLyBFbnN1cmUgdGhhdCBhbGwgYmxvY2tzIHdpdGggcGVuZGluZyByZW1vdmFscyBh
cmUgZGlzcGF0Y2hlZCBiZWZvcmUgZG9pbmcgYSBtYXAgbG9va3VwLgorICAgIGRpc3BhdGNoX2Fz
eW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAgICAgIGlmIChOU09wZXJhdGlv
biAqb3BlcmF0aW9uID0gW19maWxlTG9hZE9wZXJhdGlvbnMgb2JqZWN0Rm9yS2V5OnVybFNjaGVt
ZVRhc2tdKSB7CisgICAgICAgICAgICBbb3BlcmF0aW9uIGNhbmNlbF07CisgICAgICAgICAgICBb
X2ZpbGVMb2FkT3BlcmF0aW9ucyByZW1vdmVPYmplY3RGb3JLZXk6dXJsU2NoZW1lVGFza107Cisg
ICAgICAgIH0KKyAgICB9KTsKK30KKworQGVuZApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9U
ZXN0V0tXZWJWaWV3Lm1tCmluZGV4IDQyOTQwYWU0MWZiNmU4NDkyODhlOTc0ZTQyNTc2NGM3ZDA3
YmVkZjEuLmMwMmUwZGY0MjY3MDY4M2RiNTdmMDM5MGExYzY0ZTc3N2ZhNThmOGIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KQEAgLTMzLDYgKzMzLDcgQEAK
IAogI2ltcG9ydCA8V2ViS2l0L1dLQ29udGVudFdvcmxkLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tX
ZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQ
cml2YXRlRm9yVGVzdGluZy5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYktpdFByaXZhdGUuaD4KICNp
bXBvcnQgPFdlYktpdC9fV0tBY3RpdmF0ZWRFbGVtZW50SW5mby5oPgogI2ltcG9ydCA8V2ViS2l0
L19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439628</attachid>
            <date>2021-09-29 11:12:33 -0700</date>
            <delta_ts>2021-09-29 16:28:31 -0700</delta_ts>
            <desc>Patch v2.0.2 (iOS build fix)</desc>
            <filename>bug-230646-20210929111232.patch</filename>
            <type>text/plain</type>
            <size>80878</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzMjMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjdkNGIwOTlkNDg4ZDFj
MjgzNmE4MjQxY2E3NDY1YWUzYmJlYjUyOS4uN2E3MDQ2NTU3OWU2MTkyZGU3MjAyZGE4ZDkzNjQ0
MmI0YjBmZWE0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIxLTA5LTI4ICBCSiBC
dXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gYWRkIF9XS0luc3BlY3Rv
ckV4dGVuc2lvbiBTUEkgdG8gZXZhbHVhdGUgc2NyaXB0IG9uIGFuIGV4dGVuc2lvbiB0YWIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDY0NgorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vODM0MjAzMjg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGV2
aW4gUm91c3NvLgorCisgICAgICAgIEV4ZXJjaXNlZCBieSBuZXcgQVBJIHRlc3Q6IFdLSW5zcGVj
dG9yRXh0ZW5zaW9uLkNhbkV2YWx1YXRlU2NyaXB0SW5FeHRlbnNpb25UYWIKKworICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
RnJvbnRlbmRIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kSG9z
dDo6ZXZhbHVhdGVTY3JpcHRJbkV4dGVuc2lvblRhYik6CisgICAgICAgIEZpbmQgdGhlIGdsb2Jh
bCBvYmplY3QgdGhhdCBjb3JyZXNwb25kcyB0byB0aGUgcGFzc2VkLWluIDxpZnJhbWU+IGFuZAor
ICAgICAgICB0cnkgdG8gZXZhbHVhdGUgc2NyaXB0U291cmNlIGluIHRoZSBtYWluVGhyZWFkTm9y
bWFsV29ybGQoKSBvZiB0aGF0IDxpZnJhbWU+LgorCisgICAgICAgICogaHRtbC9IVE1MSUZyYW1l
RWxlbWVudC5pZGw6IEFkZCBbSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0XSBzbyB0aGF0CisgICAg
ICAgIGl0J3MgcG9zc2libGUgdG8gcGFzcyBIVE1MSUZyYW1lRWxlbWVudCB0byB0aGUgSURMIGZ1
bmN0aW9uIGFuZCBjb252ZXJ0IGl0CisgICAgICAgIHRvIHRoZSBuYXRpdmUgb2JqZWN0IChIVE1M
SUZyYW1lRWxlbWVudCYpIGZyb20gYSBKU1ZhbHVlLgorCiAyMDIxLTA5LTI5ICBBbGV4ZXkgU2h2
YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KIAogICAgICAgICBbV2ViSURMXSBBbGlnbiBw
cm9wZXJ0eSBvcmRlciBvZiBET00gY29uc3RydWN0b3JzIHdpdGggRUNNQS0yNjIgY291bnRlcnBh
cnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCAxZmU4M2EzZWY2OWQ5Njg4MzlhZjlmMzEx
ZjNmMDBiYzA2MWMyNjllLi43YWJkMWE3NDA3ZDMzOGM2ZWUxY2YyMzU3YTkxMGFjMjk5N2NjYTEx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NiBAQAorMjAyMS0wOS0yOCAg
QkogQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIGFkZCBfV0tJbnNw
ZWN0b3JFeHRlbnNpb24gU1BJIHRvIGV2YWx1YXRlIHNjcmlwdCBvbiBhbiBleHRlbnNpb24gdGFi
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzA2NDYK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgzNDIwMzI4PgorCisgICAgICAgIFJldmlld2VkIGJ5
IERldmluIFJvdXNzby4KKworICAgICAgICBBZGQgYSBuZXcgSW5zcGVjdG9yRnJvbnRlbmRBUEkg
bWV0aG9kIHRvIGV2YWx1YXRlIHNjcmlwdCBvbiBhbiBpZnJhbWUgd2l0aGluCisgICAgICAgIFdl
YiBJbnNwZWN0b3IuIFRoaXMgaW4gdHVybiBjYWxscyBvdXQgdG8gSW5zcGVjdG9yRnJvbnRlbmRI
b3N0IHRvIGRvIHRoZSBhY3R1YWwgZXZhbHVhdGlvbi4KKyAgICAgICAgT3RoZXJ3aXNlLCB0aGUg
Q1NQIHBvbGljeSBzZXQgYnkgdGhlIHRhYiBjb250ZW50IG1heSBibG9jayBhbnkgc3VjaCBldmFs
dWF0aW9uCisgICAgICAgIGlmIHRoZSAnc2NyaXB0LXNyYycgZGlyZWN0aXZlIGRvZXMgbm90IGlu
Y2x1ZGUgJ3Vuc2FmZS1ldmFsJy4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvUHJvdG9jb2wv
SW5zcGVjdG9yRnJvbnRlbmRBUEkuanM6CisgICAgICAgIChJbnNwZWN0b3JGcm9udGVuZEFQSS5z
aG93RXh0ZW5zaW9uVGFiKToKKyAgICAgICAgKEluc3BlY3RvckZyb250ZW5kQVBJLmV2YWx1YXRl
U2NyaXB0SW5FeHRlbnNpb25UYWIpOgorICAgICAgICBDYWxsIHRocm91Z2ggdG8gdGhlIFdlYklu
c3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIgbWV0aG9kLgorCisgICAgICAgICogVXNlckludGVy
ZmFjZS9Db250cm9sbGVycy9XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLmpzOgorICAg
ICAgICAoV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5wcm90b3R5cGUuZXZhbHVh
dGVTY3JpcHRJbkV4dGVuc2lvblRhYik6IEFkZGVkLgorICAgICAgICBUcnkgdG8gZ2V0IHRoZSA8
aWZyYW1lPiBmb3IgYSBleHRlbnNpb25UYWJJRCwgYW5kIHVzZSBJbnNwZWN0b3JGcm9udGVuZEhv
c3QgdG8KKyAgICAgICAgZXZhbHVhdGUgc2NyaXB0IGluIHRoZSBjb250ZXh0IG9mIHRoZSA8aWZy
YW1lPi4gQmUgc3VyZSB0byBjb3JyZWN0bHkgd3JhcCB0aGUgcmVzdWx0LgorCisgICAgICAgICog
VXNlckludGVyZmFjZS9WaWV3cy9XZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50Vmlldy5q
czoKKyAgICAgICAgKFdJLldlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3KToKKyAg
ICAgICAgKFdJLldlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3LnByb3RvdHlwZS5n
ZXQgaWZyYW1lRWxlbWVudCk6CisgICAgICAgIChXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJD
b250ZW50Vmlldy5zaG91bGRTYXZlVGFiKToKKyAgICAgICAgKFdJLldlYkluc3BlY3RvckV4dGVu
c2lvblRhYkNvbnRlbnRWaWV3LnByb3RvdHlwZS5pbml0aWFsTGF5b3V0KTogRGVsZXRlZC4KKyAg
ICAgICAgV2hpbGUgd3JpdGluZyB0aGUgQVBJIHRlc3QsIEkgc2F3IHRoYXQgdGhlIGZpcnN0IGV2
YWx1YXRpb24gZnJlcXVlbnRseSBmYWlsZWQKKyAgICAgICAgYmVjYXVzZSB0aGUgPGlmcmFtZT4g
ZGlkIG5vdCBleGlzdC4gQ2hhbmdlIHRoaXMgY2xhc3Mgc28gdGhhdCB0aGUgPGlmcmFtZT4KKyAg
ICAgICAgaXMgY3JlYXRlZCBpbiB0aGUgY29uc3RydWN0b3IuIEFkZCBhIGdldHRlciBmb3IgdGhl
IDxpZnJhbWU+IGVsZW1lbnQuCisKKyAgICAgICAgKFdJLldlYkluc3BlY3RvckV4dGVuc2lvblRh
YkNvbnRlbnRWaWV3LnByb3RvdHlwZS5fZXh0ZW5zaW9uRnJhbWVEaWRMb2FkKToKKyAgICAgICAg
KFdJLldlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3LnByb3RvdHlwZS5fbWF5YmVE
aXNwYXRjaERpZFNob3dFeHRlbnNpb25UYWIpOgorICAgICAgICBXaGlsZSB3cml0aW5nIHRoaXMg
cGF0Y2gsIGl0IGJlY2FtZSBhcHBhcmVudCB0aGF0IGRpZFNob3dFeHRlbnNpb25UYWIoKSB3YXMg
YmVpbmcKKyAgICAgICAgY2FsbGVkIHByaW9yIHRvIHRoZSBpZnJhbWUgYWN0dWFsbHkgY29tcGxl
dGluZyBpdHMgaW5pdGlhbCBsb2FkLiBUaGVuLCB0aGUgdGVzdAorICAgICAgICB3b3VsZCB0cnkg
dG8gZXZhbHVhdGUgc2NyaXB0IG9uIGFib3V0OmJsYW5rIGluc3RlYWQgb2YgdGhlIGFjdHVhbCB0
YWIgY29udGVudC4KKyAgICAgICAgVG8gZml4IHRoaXMsIHJlcXVpcmUgdGhhdCB0aGUgPGlmcmFt
ZT4gYmUgYXR0YWNoZWQgYW5kIGhhdmUgZmlyZWQgdGhlIGBvbmxvYWRgIGV2ZW50CisgICAgICAg
IGJlZm9yZSB3ZSBub3RpZnkgY2xpZW50cyB0aGF0IGl0IGhhcyBiZWVuICdzaG93bicuCisKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL01haW4uaHRtbDoKKyAgICAgICAgQWRqdXN0IHRoZSBkZWZh
dWx0IENTUCBwb2xpY3kgdG8gbm90IG1lbnRpb24gaW1nLXNyYy4gVGhpcyBhbGxvd3MgcG9ydHMg
c3VjaCBhcworICAgICAgICBDb2NvYSB0byBzZXQgdGhlaXIgb3duIGltZy1zcmMgQ1NQIGRpcmVj
dGl2ZS4gVGhlc2UgY2hhbmdlcyBhcmUgbmVjZXNzYXJ5IHRvIGFsbG93CisgICAgICAgIGltYWdl
cyB0byBsb2FkIGZyb20gY3VzdG9tIFVSTCBzY2hlbWVzLgorCisgICAgICAgICogVXNlckludGVy
ZmFjZS9WaWV3cy9UYWJCcm93c2VyLmpzOgorICAgICAgICAoV0kuVGFiQnJvd3Nlci5wcm90b3R5
cGUuYmVzdFRhYkNvbnRlbnRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3QpOgorICAgICAgICBUaGUg
bmV3IEFQSSB0ZXN0IGV4cG9zZXMgYSBidWcgaW4gdGhpcyBhc3NlcnRpb24sIG5hbWVseSwgdGhh
dCBpdCBkb2VzIG5vdCBhY2NvdW50CisgICAgICAgIGZvciB0aGUgc2l0dWF0aW9uIHdoZXJlIGEg
dGFiIGRvZXMgbm90IHdpc2ggdG8gYmUgc2F2ZWQuIEluIHRoYXQgY2FzZSwgdGhlIGRpc3BsYXll
ZAorICAgICAgICBXZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50VmlldyBpcyAqbm90KiBh
dCBpbmRleCAwIG9mIFdJLlRhYkJyb3dzZXIucmVjZW50VGFiQ29udGVudFZpZXdzLgorICAgICAg
ICBUaGlzIGlzIGNvcnJlY3RseSBoYW5kbGVkIHdpdGggYSBzcGVjaWFsIGNhc2UgaW4gV0kuVGFi
QnJvd3Nlci5fdGFiQmFySXRlbVNlbGVjdGVkLAorICAgICAgICBzbyBpbmNvcnBvcmF0ZSB0aGF0
IGxvZ2ljIGludG8gdGhlIGFzc2VydGlvbi4KKwogMjAyMS0wOS0yOCAgQkogQnVyZyAgPGJidXJn
QGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBhZGQgc2V0dGluZ3Mgb3B0aW9u
IGZvciAnU2hvdyBNb2NrIFdlYiBFeHRlbnNpb24gVGFiJyBpbiBlbmdpbmVlcmluZyBidWlsZHMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggYWVkNzE2ZjEyMzlkMmVlODM5ZGY4NjliMTk2Mjk1NWU0OGMyNGE1Yi4uNDA3
OGJiYTE4NTJkY2M5YzdlZWVjMTgwMTgzYzFjMzg1OWM3NGQyNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw1OSBAQAorMjAyMS0wOS0yOCAgQkogQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKworICAgICAg
ICBbQ29jb2FdIGFkZCBfV0tJbnNwZWN0b3JFeHRlbnNpb24gU1BJIHRvIGV2YWx1YXRlIHNjcmlw
dCBvbiBhbiBleHRlbnNpb24gdGFiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzA2NDYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgzNDIwMzI4Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IERldmluIFJvdXNzby4KKworICAgICAgICBBZGQgbmV3IHRl
c3RpbmcgQVBJIGZvciBldmFsdWF0aW5nIHNjcmlwdCBleHByZXNzaW9ucyBpbiB0aGUgY29udGV4
dCBvZiBhCisgICAgICAgIHRhYiBjcmVhdGVkIGJ5IF9XS0luc3BlY3RvckV4dGVuc2lvbi4gRm9y
IHRoZSBtb3N0IHBhcnQsIHRoaXMgaXMgaW1wbGVtZW50ZWQKKyAgICAgICAgaW4gdGhlIHNhbWUg
d2F5IGFzIHRoZSAtZXZhbHVhdGVTY3JpcHQ6IG1ldGhvZCwgYnV0IHRoZSBzY3JpcHQgaXMgZXZh
bHVhdGVkCisgICAgICAgIHdpdGhpbiB0aGUgV2ViIEluc3BlY3RvciBmcm9udGVuZCBpdHNlbGYg
cmF0aGVyIHRoYW4gaW4gdGhlIGluc3BlY3RlZCBwYWdlLgorCisgICAgICAgIFRvIGF2b2lkIENT
UCBpc3N1ZXMsIHRoZSBhY3R1YWwgZXZhbHVhdGlvbiBpcyBwZXJmb3JtZWQgb24gc3ViZnJhbWVz
IHVzaW5nIGEKKyAgICAgICAgbmV3IEluc3BlY3RvckZyb250ZW5kSG9zdCBtZXRob2Qgd2hpY2gg
dGFrZXMgYW4gPGlmcmFtZT4gYW5kIHNjcmlwdCBzb3VyY2UuCisKKyAgICAgICAgQWxvbmcgdGhl
IHdheSwgdHdlYWsgV2ViIEluc3BlY3RvcidzIENTUCBwb2xpY3kgdG8gYWxsb3cgbG9hZGluZyBp
bWFnZXMgZnJvbQorICAgICAgICBjdXN0b20gVVJMIHNjaGVtZXMgYXMgc3BlY2lmaWVkIHVzaW5n
IF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24uIFRoaXMgaXMgc28KKyAgICAgICAgdGhhdCB0YWIg
aWNvbnMgZnJvbSB0aGUgdGVzdC1yZXNvdXJjZTogc2NoZW1lIGNhbiBiZSBsb2FkZWQgaW4gdGhl
IG1haW4gZnJhbWUKKyAgICAgICAgb2YgV2ViIEluc3BlY3RvcidzIFdLV2ViVmlldyB1bmRlciB0
ZXN0aW5nIHNpdHVhdGlvbnMuCisKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAg
ICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBBZGQgbmV3IGZp
bGVzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckV4dGVuc2lvbi5jcHA6CisgICAg
ICAgIChBUEk6Okluc3BlY3RvckV4dGVuc2lvbjo6ZXZhbHVhdGVTY3JpcHRJbkV4dGVuc2lvblRh
Yik6CisgICAgICAgIEJhc2VkIG9uIGV2YWx1YXRlU2NyaXB0KCkuIENhbGwgdGhyb3VnaCB0byB0
aGUgc2hhcmVkIGV4dGVuc2lvbiBjb250cm9sbGVyLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb25Qcml2YXRlRm9yVGVzdGluZy5oOiBBZGRlZC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvblRlc3Rp
bmcubW06IEFkZGVkLgorICAgICAgICAoLVtfV0tJbnNwZWN0b3JFeHRlbnNpb24gX2V2YWx1YXRl
U2NyaXB0OmluRXh0ZW5zaW9uVGFiV2l0aElkZW50aWZpZXI6Y29tcGxldGlvbkhhbmRsZXI6XSk6
CisgICAgICAgIEFkZGVkLiBDYWxsIHRocm91Z2ggdG8gdGhlIHNoYXJlZCBleHRlbnNpb24gY29u
dHJvbGxlci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9y
L1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OmV2YWx1YXRlU2Ny
aXB0SW5FeHRlbnNpb25UYWIpOgorICAgICAgICBCYXNlZCBvbiBldmFsdWF0ZVNjcmlwdCgpLiBT
ZW5kIElQQyB0byB0aGUgSW5zcGVjdG9yIFdlYlByb2Nlc3MuCisKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xs
ZXIubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpldmFsdWF0ZVNjcmlwdEluRXh0ZW5zaW9uVGFiKToK
KyAgICAgICAgQmFzZWQgb24gZXZhbHVhdGVTY3JpcHRGb3JFeHRlbnNpb24uIENhbGwgaW50byB0
aGUgZnJvbnRlbmQgQVBJCisgICAgICAgIHdoaWNoIHdpbGwgcGVyZm9ybSB0aGUgYWN0dWFsIGV2
YWx1YXRpb24gb24gdGhlIDxpZnJhbWU+IGNvbnRlbnRXaW5kb3cuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvSW5zcGVjdG9yL21hYy9XS0luc3BlY3RvclJlc291cmNlVVJMU2NoZW1lSGFuZGxlci5t
bToKKyAgICAgICAgKC1bV0tJbnNwZWN0b3JSZXNvdXJjZVVSTFNjaGVtZUhhbmRsZXIgd2ViVmll
dzpzdGFydFVSTFNjaGVtZVRhc2s6XSk6CisgICAgICAgIFNwZWNpZnkgdGhlIGxpc3Qgb2YgY3Vz
dG9tIHByb3RvY29scyBhcyBhbGxvd2FibGUgc291cmNlcyBmb3IgJ2ltZy1zcmMnLgorICAgICAg
ICBUaGUgJ2ltZy1zcmMnIGRpcmVjdGl2ZSBhbHNvIGluY2x1ZGVzICdmaWxlOiBibG9iOiByZXNv
dXJjZTonIGFzIGFsbG93YWJsZQorICAgICAgICBzb3VyY2VzLCBzaW5jZSB0aGlzIHdhcyB0aGUg
cHJldmlvdXMgQ1NQIHBvbGljeSBkZWZpbmVkIGluIE1haW4uaHRtbC4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9Db2NvYS9Hcm91cEFjdGl2aXRpZXMvR3JvdXBBY3Rpdml0aWVzU2Vzc2lvbk5vdGlm
aWVyLm1tOgorICAgICAgICBGaXggVW5pZmllZFNvdXJjZXMgZmFsbG91dCBieSBpbmNsdWRpbmcg
YSBtaXNzaW5nIGhlYWRlci4KKwogMjAyMS0wOS0yOSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlZHVjZSBhbGxvY2F0aW9ucyBpbiBEYXRh
YmFzZVV0aWxpdGllczo6c29ydGVkVGFibGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxJRnJhbWVFbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFt
ZUVsZW1lbnQuaWRsCmluZGV4IDliNzdmZjY2NzMyN2JmNGJhMzY1MTdkZmNlYzY0OGMwNWY3NTBh
NTguLjVmNzYwMWQ4NjA3N2M4MjJhOWQ5MjMzNDBlNzVhN2E3YzhiMDc0MDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRsCkBAIC0xOSw3ICsxOSw4IEBACiAgKi8K
IAogWwotICAgIEV4cG9zZWQ9V2luZG93CisgICAgRXhwb3NlZD1XaW5kb3csCisgICAgSlNHZW5l
cmF0ZVRvTmF0aXZlT2JqZWN0CiBdIGludGVyZmFjZSBIVE1MSUZyYW1lRWxlbWVudCA6IEhUTUxF
bGVtZW50IHsKICAgICBbUmVmbGVjdCwgQ0VSZWFjdGlvbnM9Tm90TmVlZGVkXSBhdHRyaWJ1dGUg
RE9NU3RyaW5nIGFsaWduOwogICAgIFtSZWZsZWN0LCBDRVJlYWN0aW9ucz1Ob3ROZWVkZWRdIGF0
dHJpYnV0ZSBET01TdHJpbmcgZnJhbWVCb3JkZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCmluZGV4IGFlMjhiMmY5NzdlZmY5NGI1
MzQwMTUxZTMyMzY3ODY0NTlhZWQ3NWUuLmU1NDg4YTIxN2FjOTdiMTYxNDU4ZGEyNzAyYTNlYjhk
ZWY0MzdmM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JG
cm9udGVuZEhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JG
cm9udGVuZEhvc3QuY3BwCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiRmxvYXRSZWN0Lmgi
CiAjaW5jbHVkZSAiRm9jdXNDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNs
dWRlICJIVE1MSUZyYW1lRWxlbWVudC5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNp
bmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRGVidWdn
YWJsZVR5cGUuaCIKQEAgLTY5LDYgKzcwLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNp
bmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKK3VzaW5nIFZhbHVlT3JFeGNlcHRpb24gPSBFeHBlY3Rl
ZDxKU0M6OkpTVmFsdWUsIEV4Y2VwdGlvbkRldGFpbHM+OwogCiAjaWYgRU5BQkxFKENPTlRFWFRf
TUVOVVMpCiBjbGFzcyBGcm9udGVuZE1lbnVQcm92aWRlciA6IHB1YmxpYyBDb250ZXh0TWVudVBy
b3ZpZGVyIHsKQEAgLTcwNiw2ICs3MDgsMjggQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZEhvc3Q6
OmRpZEhpZGVFeHRlbnNpb25UYWIoY29uc3QgU3RyaW5nJiBleHRlbnNpb25JRCwgY29uc3QKICAg
ICAKICAgICBtX2NsaWVudC0+ZGlkSGlkZUV4dGVuc2lvblRhYihleHRlbnNpb25JRCwgZXh0ZW5z
aW9uVGFiSUQpOwogfQorCitFeGNlcHRpb25PcjxKU0M6OkpTVmFsdWU+IEluc3BlY3RvckZyb250
ZW5kSG9zdDo6ZXZhbHVhdGVTY3JpcHRJbkV4dGVuc2lvblRhYihIVE1MSUZyYW1lRWxlbWVudCYg
ZXh0ZW5zaW9uRnJhbWVFbGVtZW50LCBjb25zdCBTdHJpbmcmIHNjcmlwdFNvdXJjZSkKK3sKKyAg
ICBGcmFtZSogZnJhbWUgPSBleHRlbnNpb25GcmFtZUVsZW1lbnQuY29udGVudEZyYW1lKCk7Cisg
ICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVy
cm9yLCAiVW5hYmxlIHRvIGZpbmQgZ2xvYmFsIG9iamVjdCBmb3IgPGlmcmFtZT4iX3MgfTsKKwor
ICAgIFJlZjxGcmFtZT4gcHJvdGVjdGVkRnJhbWUoKmZyYW1lKTsKKworICAgIEpTRE9NR2xvYmFs
T2JqZWN0KiBmcmFtZUdsb2JhbE9iamVjdCA9IGZyYW1lLT5zY3JpcHQoKS5nbG9iYWxPYmplY3Qo
bWFpblRocmVhZE5vcm1hbFdvcmxkKCkpOworICAgIGlmICghZnJhbWVHbG9iYWxPYmplY3QpCisg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIlVuYWJsZSB0byBm
aW5kIGdsb2JhbCBvYmplY3QgZm9yIDxpZnJhbWU+Il9zIH07CisKKyAgICBKU0M6OlN1c3BlbmRF
eGNlcHRpb25TY29wZSBzY29wZSgmZnJhbWVHbG9iYWxPYmplY3QtPnZtKCkpOworICAgIFZhbHVl
T3JFeGNlcHRpb24gcmVzdWx0ID0gZnJhbWUtPnNjcmlwdCgpLmV2YWx1YXRlSW5Xb3JsZChTY3Jp
cHRTb3VyY2VDb2RlKHNjcmlwdFNvdXJjZSksIG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKTsKKyAg
ICAKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRT
dGF0ZUVycm9yLCByZXN1bHQuZXJyb3IoKS5tZXNzYWdlIH07CisKKyAgICByZXR1cm4gV1RGTW92
ZShyZXN1bHQudmFsdWUoKSk7Cit9CisKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0VYVEVO
U0lPTlMpCiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckZyb250ZW5kSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kSG9zdC5oCmluZGV4IDZkMmU1NmM3YWU4ZmVkZmE2NTkwZjE0YjFhZGY4MDhhMmZhMDBiZjYu
LjE2MjI2YWEyYmJjZGQwNWNiNjcwMjUzMWQwMzNiODJlODY0MDgzOGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmgKQEAgLTMwLDYgKzMw
LDcgQEAKIAogI2luY2x1ZGUgIkNvbnRleHRNZW51LmgiCiAjaW5jbHVkZSAiQ29udGV4dE1lbnVQ
cm92aWRlci5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CkBAIC0zOSw2ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIERP
TVdyYXBwZXJXb3JsZDsKIGNsYXNzIEV2ZW50OwogY2xhc3MgRnJvbnRlbmRNZW51UHJvdmlkZXI7
CitjbGFzcyBIVE1MSUZyYW1lRWxlbWVudDsKIGNsYXNzIEluc3BlY3RvckZyb250ZW5kQ2xpZW50
OwogY2xhc3MgUGFnZTsKIApAQCAtMTQxLDYgKzE0Myw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUo
SU5TUEVDVE9SX0VYVEVOU0lPTlMpCiAgICAgdm9pZCBkaWRTaG93RXh0ZW5zaW9uVGFiKGNvbnN0
IFN0cmluZyYgZXh0ZW5zaW9uSUQsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uVGFiSUQpOwogICAg
IHZvaWQgZGlkSGlkZUV4dGVuc2lvblRhYihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbklELCBjb25z
dCBTdHJpbmcmIGV4dGVuc2lvblRhYklEKTsKKyAgICBFeGNlcHRpb25PcjxKU0M6OkpTVmFsdWU+
IGV2YWx1YXRlU2NyaXB0SW5FeHRlbnNpb25UYWIoSFRNTElGcmFtZUVsZW1lbnQmIGV4dGVuc2lv
bkZyYW1lLCBjb25zdCBTdHJpbmcmIHNjcmlwdFNvdXJjZSk7CiAjZW5kaWYKIAogcHJpdmF0ZToK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhv
c3QuaWRsIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5p
ZGwKaW5kZXggOTdmODA2ZjJhYzBmMzFiODk2ZTU5NzExOTc5YmRmYWZjN2Y4ZWEyOS4uMzJkOTc0
MmI0N2M2NzliN2FmMzcxNWRlZTM5MTllNjY3OGVjMDdmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5pZGwKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5pZGwKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4IE1hdHQgTGlsZWsgPHdlYmtpdEBtYXR0
bGlsZWsuY29tPgogICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgpAQCAtMTAwLDYgKzEwMCw3IEBACiAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IGJvb2xlYW4gc3VwcG9ydHNXZWJFeHRlbnNpb25zOwogICAgIFtDb25kaXRpb25hbD1JTlNQRUNU
T1JfRVhURU5TSU9OU10gdW5kZWZpbmVkIGRpZFNob3dFeHRlbnNpb25UYWIoRE9NU3RyaW5nIGV4
dGVuc2lvbklELCBET01TdHJpbmcgZXh0ZW5zaW9uVGFiSUQpOwogICAgIFtDb25kaXRpb25hbD1J
TlNQRUNUT1JfRVhURU5TSU9OU10gdW5kZWZpbmVkIGRpZEhpZGVFeHRlbnNpb25UYWIoRE9NU3Ry
aW5nIGV4dGVuc2lvbklELCBET01TdHJpbmcgZXh0ZW5zaW9uVGFiSUQpOworICAgIFtDb25kaXRp
b25hbD1JTlNQRUNUT1JfRVhURU5TSU9OU10gYW55IGV2YWx1YXRlU2NyaXB0SW5FeHRlbnNpb25U
YWIoSFRNTElGcmFtZUVsZW1lbnQgZXh0ZW5zaW9uRnJhbWUsIERPTVN0cmluZyBzY3JpcHRTb3Vy
Y2UpOwogfTsKIAogZGljdGlvbmFyeSBDb250ZXh0TWVudUl0ZW0gewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvV2ViSW5zcGVjdG9y
RXh0ZW5zaW9uQ29udHJvbGxlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0NvbnRyb2xsZXJzL1dlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIuanMKaW5kZXgg
ZWRiMDljMDRjNzBhZTk2NWIzYzE3NjU1Y2ExMjA4MTRmOGEyMDRhMy4uNTc1YjQwODI3YzUxN2Qy
YWFlNzU2NjlkMDI1ZTI5OWI4OTdjNThmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJv
bGxlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9s
bGVycy9XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLmpzCkBAIC0xNzAsNiArMTcwLDI3
IEBAIFdJLldlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIgPSBjbGFzcyBXZWJJbnNwZWN0
b3JFeHRlbnNpb25Db250cm9sbGVyIGV4dGVuCiAgICAgICAgICAgICByZXR1cm4gV0kuV2ViSW5z
cGVjdG9yRXh0ZW5zaW9uLkVycm9yQ29kZS5JbnRlcm5hbEVycm9yOwogICAgICAgICB9CiAgICAg
fQorCisgICAgZXZhbHVhdGVTY3JpcHRJbkV4dGVuc2lvblRhYihleHRlbnNpb25UYWJJRCwgc2Ny
aXB0U291cmNlKQorICAgIHsKKyAgICAgICAgbGV0IHRhYkNvbnRlbnRWaWV3ID0gdGhpcy5fZXh0
ZW5zaW9uVGFiQ29udGVudFZpZXdGb3JFeHRlbnNpb25UYWJJRE1hcC5nZXQoZXh0ZW5zaW9uVGFi
SUQpOworICAgICAgICBpZiAoIXRhYkNvbnRlbnRWaWV3KSB7CisgICAgICAgICAgICBXSS5yZXBv
cnRJbnRlcm5hbEVycm9yKCJVbmFibGUgdG8gZXZhbHVhdGUgd2l0aCB1bmtub3duIGV4dGVuc2lv
blRhYklEOiAiICsgZXh0ZW5zaW9uVGFiSUQpOworICAgICAgICAgICAgcmV0dXJuIFdJLldlYklu
c3BlY3RvckV4dGVuc2lvbi5FcnJvckNvZGUuSW52YWxpZFJlcXVlc3Q7CisgICAgICAgIH0KKwor
ICAgICAgICBsZXQgaWZyYW1lID0gdGFiQ29udGVudFZpZXcuaWZyYW1lRWxlbWVudDsKKyAgICAg
ICAgaWYgKCEoaWZyYW1lIGluc3RhbmNlb2YgSFRNTElGcmFtZUVsZW1lbnQpKSB7CisgICAgICAg
ICAgICBXSS5yZXBvcnRJbnRlcm5hbEVycm9yKCJVbmFibGUgdG8gZXZhbHVhdGUgd2l0aG91dCBh
biA8aWZyYW1lPiBmb3IgZXh0ZW5zaW9uVGFiSUQ6ICIgKyBleHRlbnNpb25UYWJJRCk7CisgICAg
ICAgICAgICByZXR1cm4gV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uLkVycm9yQ29kZS5JbnZhbGlk
UmVxdWVzdDsKKyAgICAgICAgfQorCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICByZXR1cm4g
e3Jlc3VsdDogSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmV2YWx1YXRlU2NyaXB0SW5FeHRlbnNpb25U
YWIoaWZyYW1lLCBzY3JpcHRTb3VyY2UpfTsKKyAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHsKKyAg
ICAgICAgICAgIHJldHVybiB7ZXJyb3I6IGVycm9yLm1lc3NhZ2V9OworICAgICAgICB9CisgICAg
fQogfTsKIAogV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5FdmVudCA9IHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbCBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAppbmRleCBjNDAy
NWNmZjM2NzdiYzc1NmNiNzdmYTU1NTg4YjM0NTVlNzU2YzRiLi5jZmNlMThkODNhOTU4MDA1Mjgy
MzcwYTU1NGRmYTZjNmM4MmEyOTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9NYWluLmh0bWwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTWFpbi5odG1sCkBAIC0yNywxMCArMjcsMTAgQEAKIDxoZWFkPgogICAgIDxtZXRh
IGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0
Zi04Ij4KICAgICA8IS0tCi0gICAgICAgIE5vdGUgdGhhdCBzb21lIFdlYktpdCBwb3J0cyBtYXkg
c2V0IGN1c3RvbSAnZnJhbWUtc3JjJyBhbmQgJ2Nvbm5lY3Qtc3JjJyBkaXJlY3RpdmVzIHZpYSBI
VFRQIHJlc3BvbnNlIGhlYWRlci4KKyAgICAgICAgTm90ZSB0aGF0IHNvbWUgV2ViS2l0IHBvcnRz
IG1heSBzZXQgY3VzdG9tICdmcmFtZS1zcmMnLCAnaW1nLXNyYycsIGFuZCAnY29ubmVjdC1zcmMn
IGRpcmVjdGl2ZXMgdmlhIEhUVFAgcmVzcG9uc2UgaGVhZGVyLgogICAgICAgICBUaGUgY29tYmlu
ZWQgQ1NQIHBvbGljeSByZXF1aXJlcyBhIHJlcXVlc3QgdG8gYmUgYWxsb3dlZCBieSBib3RoIGRp
cmVjdGl2ZSBsaXN0cywgc28gJ2RlZmF1bHQtc3JjJyBpcyBvbWl0dGVkLgogICAgIC0tPgotICAg
IDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtU2VjdXJpdHktUG9saWN5IiBjb250ZW50PSJpbWct
c3JjICogZmlsZTogYmxvYjogcmVzb3VyY2U6OyBtZWRpYS1zcmMgKiBibG9iOjsgZm9udC1zcmMg
KiBibG9iOjsgc3R5bGUtc3JjICdzZWxmJyAndW5zYWZlLWlubGluZSc7IHNjcmlwdC1zcmMgJ3Nl
bGYnICd1bnNhZmUtaW5saW5lJyBkYXRhOjsgb2JqZWN0LXNyYyAnbm9uZSciPgorICAgIDxtZXRh
IGh0dHAtZXF1aXY9IkNvbnRlbnQtU2VjdXJpdHktUG9saWN5IiBjb250ZW50PSJtZWRpYS1zcmMg
KiBibG9iOjsgZm9udC1zcmMgKiBibG9iOjsgc3R5bGUtc3JjICdzZWxmJyAndW5zYWZlLWlubGlu
ZSc7IHNjcmlwdC1zcmMgJ3NlbGYnICd1bnNhZmUtaW5saW5lJyBkYXRhOjsgb2JqZWN0LXNyYyAn
bm9uZSciPgogCiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJFeHRlcm5hbC9Db2Rl
TWlycm9yL2NvZGVtaXJyb3IuY3NzIj4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JGcm9udGVu
ZEFQSS5qcwppbmRleCAyNmIxNzgyNWY3ZjQ3YmIyYTUwMTAzMGVjNzEwNjBiOTUxNGNmMDdmLi5j
NmMwYWVkNzNhYTNiNGU2NmM5NGJhOWFmNjU4MThmNzZiY2Q2ZGFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JGcm9udGVu
ZEFQSS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2Nv
bC9JbnNwZWN0b3JGcm9udGVuZEFQSS5qcwpAQCAtMjM1LDUgKzIzNSwxMyBAQCBJbnNwZWN0b3JG
cm9udGVuZEFQSSA9IHsKICAgICBzaG93RXh0ZW5zaW9uVGFiKGV4dGVuc2lvblRhYklEKQogICAg
IHsKICAgICAgICAgcmV0dXJuIFdJLnNoYXJlZEFwcC5leHRlbnNpb25Db250cm9sbGVyLnNob3dF
eHRlbnNpb25UYWIoZXh0ZW5zaW9uVGFiSUQpOwotICAgIH0KKyAgICB9LAorCisgICAgLy8gUmV0
dXJucyBhIHN0cmluZyAoV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uLkVycm9yQ29kZSkgaWYgYW4g
ZXJyb3Igb2NjdXJyZWQgdGhhdCBwcmV2ZW50ZWQgZXZhbHVhdGlvbi4KKyAgICAvLyBSZXR1cm5z
IGFuIG9iamVjdCB3aXRoIGEgJ3Jlc3VsdCcga2V5IGFuZCB2YWx1ZSB0aGF0IGlzIHRoZSByZXN1
bHQgb2YgdGhlIHNjcmlwdCBldmFsdWF0aW9uLgorICAgIC8vIFJldHVybnMgYW4gb2JqZWN0IHdp
dGggYW4gJ2Vycm9yJyBrZXkgYW5kIHZhbHVlIGluIHRoZSBjYXNlIHRoYXQgYW4gZXhjZXB0aW9u
IHdhcyB0aHJvd24uCisgICAgZXZhbHVhdGVTY3JpcHRJbkV4dGVuc2lvblRhYihleHRlbnNpb25U
YWJJRCwgc2NyaXB0U291cmNlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFdJLnNoYXJlZEFwcC5l
eHRlbnNpb25Db250cm9sbGVyLmV2YWx1YXRlU2NyaXB0SW5FeHRlbnNpb25UYWIoZXh0ZW5zaW9u
VGFiSUQsIHNjcmlwdFNvdXJjZSk7CisgICAgfSwKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UYWJCcm93c2VyLmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGFiQnJvd3Nlci5qcwppbmRleCBkYzlh
Y2M2NjU4MGRiZDhhYmQwYmE5NDU2MmMwZDFjZDFiYzYzMDE0Li5hZWEyNTJiMTZmYzJiMWQ5ZTU1
ZjQxY2QzMzg2NzViNzI0MDlmYzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9UYWJCcm93c2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkJyb3dzZXIuanMKQEAgLTEyMCw3ICsxMjAsOCBA
QCBXSS5UYWJCcm93c2VyID0gY2xhc3MgVGFiQnJvd3NlciBleHRlbmRzIFdJLlZpZXcKIAogICAg
IGJlc3RUYWJDb250ZW50Vmlld0ZvclJlcHJlc2VudGVkT2JqZWN0KHJlcHJlc2VudGVkT2JqZWN0
LCBvcHRpb25zID0ge30pCiAgICAgewotICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5zZWxl
Y3RlZFRhYkNvbnRlbnRWaWV3IHx8IHRoaXMuc2VsZWN0ZWRUYWJDb250ZW50VmlldyA9PT0gdGhp
cy5fcmVjZW50VGFiQ29udGVudFZpZXdzWzBdKTsKKyAgICAgICAgbGV0IHNob3VsZFNhdmVUYWIg
PSB0aGlzLnNlbGVjdGVkVGFiQ29udGVudFZpZXc/LmNvbnN0cnVjdG9yLnNob3VsZFNhdmVUYWIo
KSB8fCB0aGlzLnNlbGVjdGVkVGFiQ29udGVudFZpZXc/LmNvbnN0cnVjdG9yLnNob3VsZFBpblRh
YigpOworICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5zZWxlY3RlZFRhYkNvbnRlbnRWaWV3
IHx8IHRoaXMuc2VsZWN0ZWRUYWJDb250ZW50VmlldyA9PT0gdGhpcy5fcmVjZW50VGFiQ29udGVu
dFZpZXdzWzBdIHx8ICFzaG91bGRTYXZlVGFiKTsKIAogICAgICAgICBsZXQgdGFiQ29udGVudFZp
ZXcgPSB0aGlzLl9yZWNlbnRUYWJDb250ZW50Vmlld3MuZmluZCgodGFiQ29udGVudFZpZXcpID0+
IHRhYkNvbnRlbnRWaWV3LnR5cGUgPT09IG9wdGlvbnMucHJlZmVycmVkVGFiVHlwZSk7CiAgICAg
ICAgIGlmICh0YWJDb250ZW50VmlldyAmJiB0YWJDb250ZW50Vmlldy5jYW5TaG93UmVwcmVzZW50
ZWRPYmplY3QocmVwcmVzZW50ZWRPYmplY3QpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVu
dFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9XZWJJ
bnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50Vmlldy5qcwppbmRleCAxOTI1NTY3ZWZmM2JkYmNk
YjIwODJkNjg0YjkzZDRiYWRmZTBiYjI4Li43NGFmYTRjY2ZiZDI4Y2Y2MzRiMTg3MzQ4ZDA2NTcw
YjZlYmUyMGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9XZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50Vmlldy5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9XZWJJbnNwZWN0b3JFeHRlbnNp
b25UYWJDb250ZW50Vmlldy5qcwpAQCAtMzksMTEgKzM5LDIxIEBAIFdJLldlYkluc3BlY3RvckV4
dGVuc2lvblRhYkNvbnRlbnRWaWV3ID0gY2xhc3MgV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29u
dGVudFZpCiAgICAgICAgIHRoaXMuX2V4dGVuc2lvblRhYklEID0gZXh0ZW5zaW9uVGFiSUQ7CiAg
ICAgICAgIHRoaXMuX3RhYkluZm8gPSB0YWJJbmZvOwogICAgICAgICB0aGlzLl9zb3VyY2VVUkwg
PSBzb3VyY2VVUkw7CisKKyAgICAgICAgLy8gRklYTUU6IHRoZSA8aWZyYW1lPidzIGRvY3VtZW50
IGlzIGltcGxpY2l0bHkgcmVsb2FkZWQgd2hlbiB0aGlzCisgICAgICAgIC8vIGNvbnRlbnQgdmll
dydzIGVsZW1lbnQgaXMgZGV0YWNoZWQgYW5kIGxhdGVyIHJlLWF0dGFjaGVkIHRvIHRoZSBET00u
CisgICAgICAgIC8vIFRoaXMgaXMgYSBidWcgYW5kIHdpbGwgYmUgYWRkcmVzc2VkIGluIDxodHRw
czovL3dlYmtpdC5vcmcvYi8yMzA3NTg+LgorICAgICAgICB0aGlzLl9pZnJhbWVFbGVtZW50ID0g
dGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIp
KTsKKyAgICAgICAgdGhpcy5faWZyYW1lRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwg
dGhpcy5fZXh0ZW5zaW9uRnJhbWVEaWRMb2FkLmJpbmQodGhpcykpOworICAgICAgICB0aGlzLl9p
ZnJhbWVFbGVtZW50LnNyYyA9IHRoaXMuX3NvdXJjZVVSTDsKKworICAgICAgICB0aGlzLl9mcmFt
ZUNvbnRlbnREaWRMb2FkID0gZmFsc2U7CiAgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBn
ZXQgZXh0ZW5zaW9uVGFiSUQoKSB7IHJldHVybiB0aGlzLl9leHRlbnNpb25UYWJJRDsgfQorICAg
IGdldCBpZnJhbWVFbGVtZW50KCkgeyByZXR1cm4gdGhpcy5faWZyYW1lRWxlbWVudDsgfQogCiAg
ICAgZ2V0IHR5cGUoKQogICAgIHsKQEAgLTU5LDggKzY5LDcgQEAgV0kuV2ViSW5zcGVjdG9yRXh0
ZW5zaW9uVGFiQ29udGVudFZpZXcgPSBjbGFzcyBXZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJDb250
ZW50VmkKICAgICB7CiAgICAgICAgIHN1cGVyLmF0dGFjaGVkKCk7CiAKLSAgICAgICAgaWYgKElu
c3BlY3RvckZyb250ZW5kSG9zdC5zdXBwb3J0c1dlYkV4dGVuc2lvbnMpCi0gICAgICAgICAgICBJ
bnNwZWN0b3JGcm9udGVuZEhvc3QuZGlkU2hvd0V4dGVuc2lvblRhYih0aGlzLl9leHRlbnNpb24u
ZXh0ZW5zaW9uSUQsIHRoaXMuX2V4dGVuc2lvblRhYklEKTsKKyAgICAgICAgdGhpcy5fbWF5YmVE
aXNwYXRjaERpZFNob3dFeHRlbnNpb25UYWIoKTsKICAgICB9CiAKICAgICBkZXRhY2hlZCgpCkBA
IC03OCwxNCArODcsMjEgQEAgV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVudFZpZXcg
PSBjbGFzcyBXZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJDb250ZW50VmkKIAogICAgIHN0YXRpYyBz
aG91bGRTYXZlVGFiKCkgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIC8vIFByb3RlY3RlZAorICAg
IC8vIFByaXZhdGUKIAotICAgIGluaXRpYWxMYXlvdXQoKQorICAgIF9leHRlbnNpb25GcmFtZURp
ZExvYWQoKQogICAgIHsKLSAgICAgICAgc3VwZXIuaW5pdGlhbExheW91dCgpOworICAgICAgICB0
aGlzLl9mcmFtZUNvbnRlbnREaWRMb2FkID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5fbWF5YmVEaXNw
YXRjaERpZFNob3dFeHRlbnNpb25UYWIoKTsKKyAgICB9CiAKLSAgICAgICAgbGV0IGlmcmFtZUVs
ZW1lbnQgPSB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
aWZyYW1lIikpOwotICAgICAgICBpZnJhbWVFbGVtZW50LnNyYyA9IHRoaXMuX3NvdXJjZVVSTDsK
KyAgICBfbWF5YmVEaXNwYXRjaERpZFNob3dFeHRlbnNpb25UYWIoKQorICAgIHsKKyAgICAgICAg
aWYgKCF0aGlzLl9mcmFtZUNvbnRlbnREaWRMb2FkIHx8ICF0aGlzLmVsZW1lbnQuaXNDb25uZWN0
ZWQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKEluc3BlY3RvckZyb250ZW5k
SG9zdC5zdXBwb3J0c1dlYkV4dGVuc2lvbnMpCisgICAgICAgICAgICBJbnNwZWN0b3JGcm9udGVu
ZEhvc3QuZGlkU2hvd0V4dGVuc2lvblRhYih0aGlzLl9leHRlbnNpb24uZXh0ZW5zaW9uSUQsIHRo
aXMuX2V4dGVuc2lvblRhYklEKTsKICAgICB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5k
ZXggMTFlNzI5Njg0ZTRhMmFkZjBiNWNiODkzYWQ2NzkxZDkwMDU4MjYwNS4uNWU2YjUyYzEyMTE0
NmM2ZDUzYWNlNjY1ZDY1YzI1NmZkZTVlOTU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
b3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAt
Mjg4LDYgKzI4OCw3IEBAIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yQ29uZmlndXJh
dGlvbi5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JUZXN0aW5nLm1tCiBVSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckRlYnVnZ2FibGVJbmZvLm1tCiBVSVByb2Nlc3Mv
QVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5tbQorVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tJbnNwZWN0b3JFeHRlbnNpb25UZXN0aW5nLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0lu
c3BlY3RvcldpbmRvdy5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnRlcm5hbERlYnVnRmVh
dHVyZS5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tMaW5rSWNvblBhcmFtZXRlcnMubW0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNp
b24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckV4dGVuc2lv
bi5jcHAKaW5kZXggODYyNjcyMDg4ZWIyOTcyZjZkNTVlMjM2Y2U3ZjMwOWM3MmQ1ZDE3NS4uODcx
YzI3M2VhZjExZGViOTFiOWQwMmJmNDUwZjBkMTBlYmM4Mzc0NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckV4dGVuc2lvbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckV4dGVuc2lvbi5jcHAKQEAgLTgx
LDYgKzgxLDE4IEBAIHZvaWQgSW5zcGVjdG9yRXh0ZW5zaW9uOjpyZWxvYWRJZ25vcmluZ0NhY2hl
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8Ym9vbD4mIGlnbm9yZUNhCiAgICAgbV9leHRlbnNpb25Db250
cm9sbGVyUHJveHktPnJlbG9hZEZvckV4dGVuc2lvbihtX2lkZW50aWZpZXIsIGlnbm9yZUNhY2hl
LCB1c2VyQWdlbnQsIGluamVjdGVkU2NyaXB0LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CiB9CiAKKy8vIEZvciB0ZXN0aW5nLgorCit2b2lkIEluc3BlY3RvckV4dGVuc2lvbjo6ZXZhbHVh
dGVTY3JpcHRJbkV4dGVuc2lvblRhYihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvblRhYklEJiBl
eHRlbnNpb25UYWJJRCwgY29uc3QgV1RGOjpTdHJpbmcmIHNjcmlwdFNvdXJjZSwgV1RGOjpDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXZhbHVhdGlvblJlc3VsdCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKCFtX2V4dGVuc2lvbkNvbnRyb2xsZXJQ
cm94eSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0
b3I6OkV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkKSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBtX2V4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS0+ZXZhbHVhdGVTY3JpcHRJ
bkV4dGVuc2lvblRhYihleHRlbnNpb25UYWJJRCwgc2NyaXB0U291cmNlLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEFQSQogCiAjZW5kaWYgLy8gRU5B
QkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUluc3BlY3RvckV4dGVuc2lvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUluc3BlY3RvckV4dGVuc2lvbi5oCmluZGV4IDVlZTA5NmRjMjFmNjIwMjY3Yzdm
MDQ4OTYwM2YxMjlhZDc2NThmZTYuLmJjM2Y4ODAxNjMxN2QwYTNiNTljMjZiNWUwZjI1NjlhZTFh
MDA3OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0
b3JFeHRlbnNpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVj
dG9yRXh0ZW5zaW9uLmgKQEAgLTQ5LDcgKzQ5LDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY3Jl
YXRlVGFiKGNvbnN0IFdURjo6U3RyaW5nJiB0YWJOYW1lLCBjb25zdCBXVEY6OlVSTCYgdGFiSWNv
blVSTCwgY29uc3QgV1RGOjpVUkwmIHNvdXJjZVVSTCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKEV4cGVjdGVkPEluc3BlY3Rvcjo6RXh0ZW5zaW9uVGFiSUQsIEluc3BlY3Rvcjo6RXh0ZW5z
aW9uRXJyb3I+KT4mJik7CiAgICAgdm9pZCBldmFsdWF0ZVNjcmlwdChjb25zdCBXVEY6OlN0cmlu
ZyYgc2NyaXB0U291cmNlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdURjo6VVJMPiYgZnJhbWVVUkws
IGNvbnN0IHN0ZDo6b3B0aW9uYWw8V1RGOjpVUkw+JiBjb250ZXh0U2VjdXJpdHlPcmlnaW4sIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8Ym9vbD4mIHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0LCBXVEY6OkNv
bXBsZXRpb25IYW5kbGVyPHZvaWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0
KT4mJik7Ci0gICAgdm9pZCByZWxvYWRJZ25vcmluZ0NhY2hlKGNvbnN0IHN0ZDo6b3B0aW9uYWw8
Ym9vbD4mIGlnbm9yZUNhY2hlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdURjo6U3RyaW5nPiYgdXNl
ckFnZW50LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdURjo6U3RyaW5nPiYgaW5qZWN0ZWRTY3JpcHQs
ICBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FdmFsdWF0
aW9uUmVzdWx0KT4mJik7CisgICAgdm9pZCByZWxvYWRJZ25vcmluZ0NhY2hlKGNvbnN0IHN0ZDo6
b3B0aW9uYWw8Ym9vbD4mIGlnbm9yZUNhY2hlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdURjo6U3Ry
aW5nPiYgdXNlckFnZW50LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdURjo6U3RyaW5nPiYgaW5qZWN0
ZWRTY3JpcHQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJbnNwZWN0b3I6OkV4dGVuc2lv
bkV2YWx1YXRpb25SZXN1bHQpPiYmKTsKKworICAgIC8vIEZvciB0ZXN0aW5nLgorICAgIHZvaWQg
ZXZhbHVhdGVTY3JpcHRJbkV4dGVuc2lvblRhYihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvblRh
YklEJiwgY29uc3QgV1RGOjpTdHJpbmcmIHNjcmlwdFNvdXJjZSwgV1RGOjpDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXZhbHVhdGlvblJlc3VsdCk+JiYpOwogCiAg
ICAgSW5zcGVjdG9yRXh0ZW5zaW9uQ2xpZW50KiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2Ns
aWVudC5nZXQoKTsgfQogICAgIHZvaWQgc2V0Q2xpZW50KFVuaXF1ZVJlZjxJbnNwZWN0b3JFeHRl
bnNpb25DbGllbnQ+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvblByaXZhdGVGb3JUZXN0aW5nLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uUHJpdmF0ZUZv
clRlc3RpbmcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZDVhMTU2OGFhZGE0M2NjZTIwNmExNWUwODFiOWE0NjI1
ZjNhZGM1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0luc3BlY3RvckV4dGVuc2lvblByaXZhdGVGb3JUZXN0aW5nLmgKQEAgLTAsMCArMSwz
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgIl9XS0luc3BlY3RvckV4dGVuc2lvbi5oIgorCisj
aWYgIVRBUkdFVF9PU19JUEhPTkUKKworTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKworQGludGVy
ZmFjZSBfV0tJbnNwZWN0b3JFeHRlbnNpb24gKFdLVGVzdGluZykKKy0gKHZvaWQpX2V2YWx1YXRl
U2NyaXB0OihOU1N0cmluZyAqKXNjcmlwdFNvdXJjZSBpbkV4dGVuc2lvblRhYldpdGhJZGVudGlm
aWVyOihOU1N0cmluZyAqKWV4dGVuc2lvblRhYklkZW50aWZpZXIgY29tcGxldGlvbkhhbmRsZXI6
KHZvaWQoXikoTlNFcnJvciAqIF9OdWxsYWJsZSwgTlNEaWN0aW9uYXJ5ICogX051bGxhYmxlIHJl
c3VsdCkpY29tcGxldGlvbkhhbmRsZXI7CitAZW5kCisKK05TX0FTU1VNRV9OT05OVUxMX0VORAor
CisjZW5kaWYgLy8gIVRBUkdFVF9PU19JUEhPTkUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb25UZXN0aW5nLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvblRlc3Rp
bmcubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNDFjNmE2ZjA4YWEwYjlhNjU4YTg5YmMwZjdjM2FjMDMxNWI4ZDg4
ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tJbnNwZWN0b3JFeHRlbnNpb25UZXN0aW5nLm1tCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9O
UykKKworI2ltcG9ydCAiQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisjaW1wb3J0ICJJbnNw
ZWN0b3JFeHRlbnNpb25UeXBlcy5oIgorI2ltcG9ydCAiV0tFcnJvci5oIgorI2ltcG9ydCAiV0tX
ZWJWaWV3SW50ZXJuYWwuaCIKKyNpbXBvcnQgIl9XS0luc3BlY3RvckV4dGVuc2lvbkludGVybmFs
LmgiCisjaW1wb3J0ICJfV0tJbnNwZWN0b3JFeHRlbnNpb25Qcml2YXRlRm9yVGVzdGluZy5oIgor
I2ltcG9ydCA8V2ViQ29yZS9FeGNlcHRpb25EZXRhaWxzLmg+CisjaW1wb3J0IDxXZWJDb3JlL1dl
YkNvcmVPYmpDRXh0cmFzLmg+CisjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KKworLy8gVGhpcyBm
aWxlIGV4aXN0cyB0byBjZW50cmFsaXplIGFsbCBmcmFnaWxlIGNvZGUgdGhhdCBpcyB1c2VkIGJ5
IF9XS0luc3BlY3RvckV4dGVuc2lvbiBBUEkgdGVzdHMuCisKK0BpbXBsZW1lbnRhdGlvbiBfV0tJ
bnNwZWN0b3JFeHRlbnNpb24gKFdLVGVzdGluZykKKworLSAodm9pZClfZXZhbHVhdGVTY3JpcHQ6
KE5TU3RyaW5nICopc2NyaXB0U291cmNlIGluRXh0ZW5zaW9uVGFiV2l0aElkZW50aWZpZXI6KE5T
U3RyaW5nICopZXh0ZW5zaW9uVGFiSWRlbnRpZmllciBjb21wbGV0aW9uSGFuZGxlcjoodm9pZChe
KShOU0Vycm9yICosIE5TRGljdGlvbmFyeSAqKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIF9l
eHRlbnNpb24tPmV2YWx1YXRlU2NyaXB0SW5FeHRlbnNpb25UYWIoZXh0ZW5zaW9uVGFiSWRlbnRp
Zmllciwgc2NyaXB0U291cmNlLCBbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgY2Fw
dHVyZWRCbG9jayA9IG1ha2VCbG9ja1B0cihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSldIChJ
bnNwZWN0b3I6OkV4dGVuc2lvbkV2YWx1YXRpb25SZXN1bHQmJiByZXN1bHQpIG11dGFibGUgewor
ICAgICAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICAgICAgY2FwdHVyZWRCbG9jayhbTlNFcnJv
ciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJ
bmZvOkB7IE5TTG9jYWxpemVkRmFpbHVyZVJlYXNvbkVycm9yS2V5OiBJbnNwZWN0b3I6OmV4dGVu
c2lvbkVycm9yVG9TdHJpbmcocmVzdWx0LmVycm9yKCkpIH1dLCBuaWwpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBhdXRvIHZhbHVlT3JFeGNlcHRp
b24gPSByZXN1bHQudmFsdWUoKTsKKyAgICAgICAgaWYgKCF2YWx1ZU9yRXhjZXB0aW9uKSB7Cisg
ICAgICAgICAgICBjYXB0dXJlZEJsb2NrKG5zRXJyb3JGcm9tRXhjZXB0aW9uRGV0YWlscyh2YWx1
ZU9yRXhjZXB0aW9uLmVycm9yKCkpLmdldCgpLCBuaWwpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisKKyAgICAgICAgaWQgYm9keSA9IEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVl
OjpkZXNlcmlhbGl6ZSh2YWx1ZU9yRXhjZXB0aW9uLnZhbHVlKCktPmludGVybmFsUmVwcmVzZW50
YXRpb24oKSwgMCk7CisgICAgICAgIGNhcHR1cmVkQmxvY2sobmlsLCBib2R5KTsKKyAgICB9KTsK
K30KKworQGVuZAorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvR3JvdXBBY3Rpdml0aWVzL0dy
b3VwQWN0aXZpdGllc1Nlc3Npb25Ob3RpZmllci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL0dyb3VwQWN0aXZpdGllcy9Hcm91cEFjdGl2aXRpZXNTZXNzaW9uTm90aWZpZXIubW0K
aW5kZXggNTUyN2ViODU1ODdmZmI0MTlkNTJmNjNmNTgwMTRjMDI2NGM3NDZjMy4uNjk3NmJiYjQ2
ODI4YTNjYzkyYTE1NWU1YjljZGQ5YzYzMDIxMjk0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvR3JvdXBBY3Rpdml0aWVzL0dyb3VwQWN0aXZpdGllc1Nlc3Npb25O
b3RpZmllci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Hcm91cEFjdGl2
aXRpZXMvR3JvdXBBY3Rpdml0aWVzU2Vzc2lvbk5vdGlmaWVyLm1tCkBAIC0yOCw2ICsyOCw3IEBA
CiAKICNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTl9DT09SRElOQVRPUikgJiYgSEFWRShHUk9VUF9B
Q1RJVklUSUVTKQogCisjaW1wb3J0ICJHcm91cEFjdGl2aXRpZXNDb29yZGluYXRvci5oIgogI2lt
cG9ydCAiV0tHcm91cFNlc3Npb24uaCIKICNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5z
cGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmNwcAppbmRleCA2
YWI5NWM0MDQ2MWEzMmFlYWYyMzEwYmEyOWI3NmU2ZDY3ZjljYzkwLi4yODQyNDRmZmQyZGVkMjUy
MTBkYTY1YThmNTFiYmU5YjAzYWQ2N2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5jcHAKQEAgLTE5OSw2ICsxOTksMzEgQEAgdm9pZCBXZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6c2hvd0V4dGVuc2lvblRhYihjb25z
dCBJbnNwZWN0b3I6OkUKICAgICB9KTsKIH0KIAorLy8gQVBJIGZvciB0ZXN0aW5nLgorCit2b2lk
IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5OjpldmFsdWF0ZVNjcmlwdElu
RXh0ZW5zaW9uVGFiKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uVGFiSUQmIGV4dGVuc2lvblRh
YklELCBjb25zdCBTdHJpbmcmIHNjcmlwdFNvdXJjZSwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXZhbHVhdGlvblJlc3VsdCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit7CisgICAgd2hlbkZyb250ZW5kSGFzTG9hZGVkKFt3ZWFrVGhpcyA9IG1ha2VXZWFr
UHRyKHRoaXMpLCBleHRlbnNpb25UYWJJRCwgc2NyaXB0U291cmNlLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgaWYg
KCF3ZWFrVGhpcyB8fCAhd2Vha1RoaXMtPm1faW5zcGVjdG9yUGFnZSkgeworICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJv
cjo6Q29udGV4dERlc3Ryb3llZCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK
KyAgICAgICAgd2Vha1RoaXMtPm1faW5zcGVjdG9yUGFnZS0+c2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OkV2YWx1YXRlU2NyaXB0
SW5FeHRlbnNpb25UYWIge2V4dGVuc2lvblRhYklELCBzY3JpcHRTb3VyY2V9LCBbY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJiBkYXRhUmVmZXJlbmNlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkV4Y2Vw
dGlvbkRldGFpbHM+JiBkZXRhaWxzLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEluc3BlY3Rvcjo6RXh0
ZW5zaW9uRXJyb3I+JiBlcnJvcikgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoZXJyb3IpIHsK
KyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChlcnJvci52
YWx1ZSgpKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBpZiAoZGV0YWlscykgeworICAgICAgICAgICAgICAgIEV4cGVjdGVkPFJlZlB0cjxB
UEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+IHJl
dHVybmVkVmFsdWUgPSBtYWtlVW5leHBlY3RlZChkZXRhaWxzLnZhbHVlKCkpOworICAgICAgICAg
ICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IHJldHVybmVkVmFsdWUgfSk7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgeyBBUEk6OlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTo6YWRvcHQoeyBkYXRhUmVmZXJlbmNlLmRhdGEoKSwgZGF0YVJlZmVy
ZW5jZS5zaXplKCkgfSkucHRyKCkgfSB9KTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CiAKIC8v
IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5IElQQyBtZXNzYWdlcy4KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3Rv
clVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9J
bnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuaAppbmRleCA5
YWE2NzE0NjMwMDQ5NGQzODNiYzIzZjRhZjljMWQ4MDc3MDc0M2I2Li5iYjk4YTYzZGNmODk3ODVi
NjhhYWI3YWJhODgwZTVmYjQzNzA1NDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyUHJveHkuaApAQCAtNjIsNiArNjIsOSBAQCBwdWJsaWM6CiAgICAgdm9p
ZCByZWxvYWRGb3JFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYsIGNvbnN0
IHN0ZDo6b3B0aW9uYWw8Ym9vbD4mIGlnbm9yZUNhY2hlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFN0
cmluZz4mIHVzZXJBZ2VudCwgY29uc3Qgc3RkOjpvcHRpb25hbDxTdHJpbmc+JiBpbmplY3RlZFNj
cmlwdCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXZh
bHVhdGlvblJlc3VsdCk+JiYpOwogICAgIHZvaWQgc2hvd0V4dGVuc2lvblRhYihjb25zdCBJbnNw
ZWN0b3I6OkV4dGVuc2lvblRhYklEJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDx2
b2lkLCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPik+JiYpOwogCisgICAgLy8gQVBJIGZvciB0
ZXN0aW5nLgorICAgIHZvaWQgZXZhbHVhdGVTY3JpcHRJbkV4dGVuc2lvblRhYihjb25zdCBJbnNw
ZWN0b3I6OkV4dGVuc2lvblRhYklEJiwgY29uc3QgU3RyaW5nJiBzY3JpcHRTb3VyY2UsIFdURjo6
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJbnNwZWN0b3I6OkV4dGVuc2lvbkV2YWx1YXRpb25SZXN1
bHQpPiYmKTsKKwogICAgIC8vIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5
IElQQyBtZXNzYWdlcy4KICAgICB2b2lkIGRpZFNob3dFeHRlbnNpb25UYWIoY29uc3QgSW5zcGVj
dG9yOjpFeHRlbnNpb25JRCYsIGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uVGFiSUQmKTsKICAg
ICB2b2lkIGRpZEhpZGVFeHRlbnNpb25UYWIoY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYs
IGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uVGFiSUQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV0tJbnNwZWN0b3JSZXNvdXJjZVVSTFNjaGVt
ZUhhbmRsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dLSW5z
cGVjdG9yUmVzb3VyY2VVUkxTY2hlbWVIYW5kbGVyLm1tCmluZGV4IGFjZWQ3YzAzNzlhZmFlMzM1
Yjk5OWY1YzIwODJjOTUzY2VjOTQ4MDMuLmI0MzUzMDkxMTFmNGE3OGQ3MDdhMWVkNWM5OWJmODM5
MDczNjhiNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9t
YWMvV0tJbnNwZWN0b3JSZXNvdXJjZVVSTFNjaGVtZUhhbmRsZXIubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XS0luc3BlY3RvclJlc291cmNlVVJMU2NoZW1l
SGFuZGxlci5tbQpAQCAtMTIyLDcgKzEyMiw4IEBAIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3
ICopd2ViVmlldyBzdGFydFVSTFNjaGVtZVRhc2s6KGlkIDxXS1VSTFNjaGVtZVRhc2s+KXVyCiAK
ICAgICAgICAgLy8gQWxsb3cgZmV0Y2hlcyBmb3IgcmVzb3VyY2VzIHRoYXQgdXNlIGEgcmVnaXN0
ZXJlZCBjdXN0b20gVVJMIHNjaGVtZS4KICAgICAgICAgaWYgKF9hbGxvd2VkVVJMU2NoZW1lc0Zv
ckNTUCAmJiBbc2VsZi5tYWluUmVzb3VyY2VVUkxzRm9yQ1NQIGNvbnRhaW5zT2JqZWN0OnJlcXVl
c3RVUkxdKSB7Ci0gICAgICAgICAgICBOU1N0cmluZyAqc3RyaW5nRm9yQ1NQUG9saWN5ID0gW05T
U3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJjb25uZWN0LXNyYyAqICVAOiIsIFtfYWxsb3dlZFVS
TFNjaGVtZXNGb3JDU1AuZ2V0KCkuYWxsT2JqZWN0cyBjb21wb25lbnRzSm9pbmVkQnlTdHJpbmc6
QCI6ICJdXTsKKyAgICAgICAgICAgIE5TU3RyaW5nICpsaXN0T2ZDdXN0b21Qcm90b2NvbHMgPSBb
TlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAOiIsIFtfYWxsb3dlZFVSTFNjaGVtZXNGb3JD
U1AuZ2V0KCkuYWxsT2JqZWN0cyBjb21wb25lbnRzSm9pbmVkQnlTdHJpbmc6QCI6ICJdXTsKKyAg
ICAgICAgICAgIE5TU3RyaW5nICpzdHJpbmdGb3JDU1BQb2xpY3kgPSBbTlNTdHJpbmcgc3RyaW5n
V2l0aEZvcm1hdDpAImNvbm5lY3Qtc3JjICogJUA7IGltZy1zcmMgKiBmaWxlOiBibG9iOiByZXNv
dXJjZTogJUAiLCBsaXN0T2ZDdXN0b21Qcm90b2NvbHMsIGxpc3RPZkN1c3RvbVByb3RvY29sc107
CiAgICAgICAgICAgICBbaGVhZGVyRmllbGRzIHNldE9iamVjdDpzdHJpbmdGb3JDU1BQb2xpY3kg
Zm9yS2V5OkAiQ29udGVudC1TZWN1cml0eS1Qb2xpY3kiXTsKICAgICAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzN2QwZGQy
NDcxZWQ0MzhmOWNkNmM3NTllNDMwOGY3YjZkMjIyMmQ1Li4yNDRhOTI0MWEyMGZlNmZjMTcwNWI4
NGYzYWI3ZGQ1YmQ3MzAwMjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTE1NzQsNiArMTU3NCw4IEBACiAJCTk5QjE2NzY0MjUyQkJF
NjIwMDczMTQwRSAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5QjE2NzYxMjUyQkJFNjEw
MDczMTQwRSAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuaCAqLzsgfTsKIAkJ
OTlDM0FFMkQxREFEQTZBRDAwQUY1QzE2IC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uTWFjcm9zLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OUMzQUUyQzFE
QURBNkE3MDBBRjVDMTYgLyogV2ViQXV0b21hdGlvblNlc3Npb25NYWNyb3MuaCAqLzsgfTsKIAkJ
OTlDNjA3RUIyNkZBOUQ0OTAwQTA5NTNGIC8qIF9XS0luc3BlY3RvcklCQWN0aW9ucy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlDNjA3RUEyNkZBOUQ0
ODAwQTA5NTNGIC8qIF9XS0luc3BlY3RvcklCQWN0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTk5QzYwN0YwMjZGQjkxRTgwMEEwOTUzRiAv
KiBfV0tJbnNwZWN0b3JFeHRlbnNpb25Qcml2YXRlRm9yVGVzdGluZy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlDNjA3RUUyNkZCOTFFODAwQTA5NTNG
IC8qIF9XS0luc3BlY3RvckV4dGVuc2lvblByaXZhdGVGb3JUZXN0aW5nLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTlDNjA3RjEyNkZCOTFFOTAw
QTA5NTNGIC8qIF9XS0luc3BlY3RvckV4dGVuc2lvblRlc3RpbmcubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OUM2MDdFRjI2RkI5MUU4MDBBMDk1M0Yg
LyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uVGVzdGluZy5tbSAqLzsgfTsKIAkJOTlDODFENUExQzIw
RTdFMjAwNUM0QzgyIC8qIEF1dG9tYXRpb25DbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5QzgxRDU1MUMyMERGQkUwMDVDNEM4MiAvKiBBdXRv
bWF0aW9uQ2xpZW50LmggKi87IH07CiAJCTk5QzgxRDVEMUMyMUYzOEIwMDVDNEM4MiAvKiBBUElB
dXRvbWF0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5OUM4MUQ1QjFDMjBFODE3MDA1QzRDODIgLyogQVBJQXV0b21hdGlvbkNsaWVudC5o
ICovOyB9OwogCQk5OUU3MTRDNTFDMTI0QTA0MDA2NjVCM0EgLyogX1dLQXV0b21hdGlvbkRlbGVn
YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OUU3
MTRDMTFDMTI0OUU2MDA2NjVCM0EgLyogX1dLQXV0b21hdGlvbkRlbGVnYXRlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTUxMjUsNiArNTEyNyw4
IEBACiAJCTk5QzNBRTI2MURBRDk0ODUwMEFGNUMxNiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbkNv
Y29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViQXV0b21h
dGlvblNlc3Npb25Db2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTlDM0FF
MkMxREFEQTZBNzAwQUY1QzE2IC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uTWFjcm9zLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkF1dG9tYXRpb25TZXNzaW9uTWFjcm9zLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5QzYwN0VBMjZGQTlENDgwMEEwOTUzRiAv
KiBfV0tJbnNwZWN0b3JJQkFjdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gX1dLSW5zcGVjdG9ySUJBY3Rpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTk5QzYwN0VFMjZGQjkxRTgwMEEwOTUzRiAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb25Qcml2YXRl
Rm9yVGVzdGluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tJbnNwZWN0
b3JFeHRlbnNpb25Qcml2YXRlRm9yVGVzdGluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk5OUM2MDdFRjI2RkI5MUU4MDBBMDk1M0YgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uVGVz
dGluZy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS0luc3Bl
Y3RvckV4dGVuc2lvblRlc3RpbmcubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5
QzgxRDU1MUMyMERGQkUwMDVDNEM4MiAvKiBBdXRvbWF0aW9uQ2xpZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1dG9tYXRpb25DbGllbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOTlDODFENTYxQzIwREZCRTAwNUM0QzgyIC8qIEF1dG9tYXRpb25DbGll
bnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBdXRvbWF0aW9u
Q2xpZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OUM4MUQ1QjFDMjBFODE3
MDA1QzRDODIgLyogQVBJQXV0b21hdGlvbkNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBBUElBdXRvbWF0aW9uQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC04MjE0LDYgKzgyMTgsOCBAQAogCQkJCTk5NkIyQkEwMjVFMjU5MTEwMDcxOTM3OSAv
KiBfV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5oICovLAogCQkJCTk5Nzk2NUEyMjUzMTI4
QzcwMEIzMUFFMyAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0LmggKi8sCiAJCQkJOTlCMTY3
NTUyNTJCQjdFMTAwNzMxNDBFIC8qIF9XS0luc3BlY3RvckV4dGVuc2lvbkludGVybmFsLmggKi8s
CisJCQkJOTlDNjA3RUUyNkZCOTFFODAwQTA5NTNGIC8qIF9XS0luc3BlY3RvckV4dGVuc2lvblBy
aXZhdGVGb3JUZXN0aW5nLmggKi8sCisJCQkJOTlDNjA3RUYyNkZCOTFFODAwQTA5NTNGIC8qIF9X
S0luc3BlY3RvckV4dGVuc2lvblRlc3RpbmcubW0gKi8sCiAJCQkJOTlDNjA3RUEyNkZBOUQ0ODAw
QTA5NTNGIC8qIF9XS0luc3BlY3RvcklCQWN0aW9ucy5oICovLAogCQkJCTVDQUZERTQ0MjEzMDg0
MzYwMEIxRjdFMSAvKiBfV0tJbnNwZWN0b3JJbnRlcm5hbC5oICovLAogCQkJCTk5NzlDQTU3MjM3
RjQ5RjAwMDM5RUMwNSAvKiBfV0tJbnNwZWN0b3JQcml2YXRlLmggKi8sCkBAIC0xMjAwNCw2ICsx
MjAxMCw3IEBACiAJCQkJOTk2QjJCQTEyNUUyNTkxMTAwNzE5Mzc5IC8qIF9XS0luc3BlY3RvckV4
dGVuc2lvbkRlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OTc5NjVBMzI1MzEyOEM3MDBC
MzFBRTMgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTlCMTY3NTgyNTJCQjdFMTAwNzMxNDBFIC8qIF9XS0luc3BlY3RvckV4dGVuc2lvbkludGVybmFs
LmggaW4gSGVhZGVycyAqLywKKwkJCQk5OUM2MDdGMDI2RkI5MUU4MDBBMDk1M0YgLyogX1dLSW5z
cGVjdG9yRXh0ZW5zaW9uUHJpdmF0ZUZvclRlc3RpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5
QzYwN0VCMjZGQTlENDkwMEEwOTUzRiAvKiBfV0tJbnNwZWN0b3JJQkFjdGlvbnMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTVDQUZERTQ3MjEzMDg0NkEwMEIxRjdFMSAvKiBfV0tJbnNwZWN0b3JJbnRl
cm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTk3OUNBNTgyMzdGNDlGMTAwMzlFQzA1IC8qIF9X
S0luc3BlY3RvclByaXZhdGUuaCBpbiBIZWFkZXJzICovLApAQCAtMTQ0MDMsNiArMTQ0MTAsNyBA
QAogCQkJCTU3OTBBNjgxMjU2N0ExQUMwMDc3QzVBNyAvKiBfV0tBdXRoZW50aWNhdG9yUmVzcG9u
c2UubW0gaW4gU291cmNlcyAqLywKIAkJCQk1NzkwQTY2NzI1Njc5Q0VBMDA3N0M1QTcgLyogX1dL
QXV0aGVudGljYXRvclNlbGVjdGlvbkNyaXRlcmlhLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNC
RDU5NUMyMjgwRURGNDAwMkIyMkFBIC8qIF9XS0N1c3RvbUhlYWRlckZpZWxkcy5tbSBpbiBTb3Vy
Y2VzICovLAorCQkJCTk5QzYwN0YxMjZGQjkxRTkwMEEwOTUzRiAvKiBfV0tJbnNwZWN0b3JFeHRl
bnNpb25UZXN0aW5nLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTc5MEE2NzUyNTY3OUY3NDAwNzdD
NUE3IC8qIF9XS1B1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMubW0gaW4gU291cmNl
cyAqLywKIAkJCQk1NzkwQTY2RDI1Njc5RUI3MDA3N0M1QTcgLyogX1dLUHVibGljS2V5Q3JlZGVu
dGlhbERlc2NyaXB0b3IubW0gaW4gU291cmNlcyAqLywKIAkJCQk1NzkwQTY1NzI1Njc5OURBMDA3
N0M1QTcgLyogX1dLUHVibGljS2V5Q3JlZGVudGlhbEVudGl0eS5tbSBpbiBTb3VyY2VzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
c3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuY3BwCmluZGV4IGM3YjM3
ODhlMTY1MDQ3MWMyYjQwMmE5MzU4Y2ZlMTFiNmFkYzM1MDcuLjk3NDdlNGMwYjZjZWE5YWZiYjZh
Y2NlMzBmNjViYmVjOTIyZTcyYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9u
Q29udHJvbGxlci5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25D
b250cm9sbGVyOjp+V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyKCkKICAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lu
c3BlY3RvclBhZ2VJZGVudGlmaWVyKTsKIH0KIAotc3RkOjpvcHRpb25hbDxJbnNwZWN0b3I6OkV4
dGVuc2lvbkVycm9yPiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnBhcnNlRXh0
ZW5zaW9uRXJyb3JGcm9tRXZhbHVhdGlvblJlc3VsdChJbnNwZWN0b3JGcm9udGVuZEFQSURpc3Bh
dGNoZXI6OkV2YWx1YXRpb25SZXN1bHQgcmVzdWx0KQorc3RkOjpvcHRpb25hbDxJbnNwZWN0b3I6
OkV4dGVuc2lvbkVycm9yPiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnBhcnNl
RXh0ZW5zaW9uRXJyb3JGcm9tRXZhbHVhdGlvblJlc3VsdChJbnNwZWN0b3JGcm9udGVuZEFQSURp
c3BhdGNoZXI6OkV2YWx1YXRpb25SZXN1bHQgcmVzdWx0KSBjb25zdAogewogICAgIGlmICghcmVz
dWx0KSB7CiAgICAgICAgIHN3aXRjaCAocmVzdWx0LmVycm9yKCkpIHsKQEAgLTE1OCw3ICsxNTgs
NyBAQCB2b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6dW5yZWdpc3RlckV4
dGVuc2lvbihjb25zdCBJbnNwZWN0b3I6OkV4dAogICAgIH0pOwogfQogCi1KU0M6OkpTT2JqZWN0
KiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnVud3JhcEV2YWx1YXRpb25SZXN1
bHRBc09iamVjdChJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OkV2YWx1YXRpb25SZXN1
bHQgcmVzdWx0KQorSlNDOjpKU09iamVjdCogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyOjp1bndyYXBFdmFsdWF0aW9uUmVzdWx0QXNPYmplY3QoSW5zcGVjdG9yRnJvbnRlbmRBUElE
aXNwYXRjaGVyOjpFdmFsdWF0aW9uUmVzdWx0IHJlc3VsdCkgY29uc3QKIHsKICAgICBpZiAoIXJl
c3VsdCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0zNTksNiArMzU5LDc0IEBAIHZvaWQg
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpzaG93RXh0ZW5zaW9uVGFiKGNvbnN0
IEluc3BlY3Rvcjo6RXh0ZW5zCiAgICAgfSk7CiB9CiAKKy8vIFdlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlciBJUEMgbWVzc2FnZXMgZm9yIHRlc3RpbmcuCisKK3ZvaWQgV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpldmFsdWF0ZVNjcmlwdEluRXh0ZW5zaW9uVGFiKGNv
bnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uVGFiSUQmIGV4dGVuc2lvblRhYklELCBjb25zdCBTdHJp
bmcmIHNjcmlwdFNvdXJjZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+
JiwgY29uc3Qgc3RkOjpvcHRpb25hbDxJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmICghbV9mcm9udGVuZENsaWVudCkgeworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIHN0ZDo6bnVsbG9wdCwgSW5zcGVjdG9yOjpFeHRlbnNp
b25FcnJvcjo6SW52YWxpZFJlcXVlc3QpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
VmVjdG9yPFJlZjxKU09OOjpWYWx1ZT4+IGFyZ3VtZW50cyB7CisgICAgICAgIEpTT046OlZhbHVl
OjpjcmVhdGUoZXh0ZW5zaW9uVGFiSUQpLAorICAgICAgICBKU09OOjpWYWx1ZTo6Y3JlYXRlKHNj
cmlwdFNvdXJjZSksCisgICAgfTsKKworICAgIG1fZnJvbnRlbmRDbGllbnQtPmZyb250ZW5kQVBJ
RGlzcGF0Y2hlcigpLmRpc3BhdGNoQ29tbWFuZFdpdGhSZXN1bHRBc3luYygiZXZhbHVhdGVTY3Jp
cHRJbkV4dGVuc2lvblRhYiJfcywgV1RGTW92ZShhcmd1bWVudHMpLCBbd2Vha1RoaXMgPSBtYWtl
V2Vha1B0cih0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0oSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpFdmFsdWF0aW9uUmVzdWx0JiYg
cmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykgeworICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoeyB9LCBzdGQ6Om51bGxvcHQsIEluc3BlY3Rvcjo6RXh0ZW5zaW9u
RXJyb3I6OkNvbnRleHREZXN0cm95ZWQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgYXV0byogZnJvbnRlbmRHbG9iYWxPYmplY3QgPSB3ZWFrVGhpcy0+bV9mcm9u
dGVuZENsaWVudC0+ZnJvbnRlbmRBUElEaXNwYXRjaGVyKCkuZnJvbnRlbmRHbG9iYWxPYmplY3Qo
KTsKKyAgICAgICAgaWYgKCFmcm9udGVuZEdsb2JhbE9iamVjdCkgeworICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoeyB9LCBzdGQ6Om51bGxvcHQsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJy
b3I6OkNvbnRleHREZXN0cm95ZWQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK
KyAgICAgICAgaWYgKGF1dG8gcGFyc2VkRXJyb3IgPSB3ZWFrVGhpcy0+cGFyc2VFeHRlbnNpb25F
cnJvckZyb21FdmFsdWF0aW9uUmVzdWx0KHJlc3VsdCkpIHsKKyAgICAgICAgICAgIGlmICghcmVz
dWx0LnZhbHVlKCkuaGFzX3ZhbHVlKCkpIHsKKyAgICAgICAgICAgICAgICBhdXRvIGV4Y2VwdGlv
bkRldGFpbHMgPSByZXN1bHQudmFsdWUoKS5lcnJvcigpOworICAgICAgICAgICAgICAgIExPRyhJ
bnNwZWN0b3IsICJJbnRlcm5hbCBlcnJvciBlbmNvdW50ZXJlZCB3aGlsZSBldmFsdWF0aW5nIHVw
b24gdGhlIGZyb250ZW5kOiBhdCAlczolZDolZDogJXMiLCBleGNlcHRpb25EZXRhaWxzLnNvdXJj
ZVVSTC51dGY4KCkuZGF0YSgpLCBleGNlcHRpb25EZXRhaWxzLmxpbmVOdW1iZXIsIGV4Y2VwdGlv
bkRldGFpbHMuY29sdW1uTnVtYmVyLCBleGNlcHRpb25EZXRhaWxzLm1lc3NhZ2UudXRmOCgpLmRh
dGEoKSk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBMT0coSW5zcGVjdG9y
LCAiSW50ZXJuYWwgZXJyb3IgZW5jb3VudGVyZWQgd2hpbGUgZXZhbHVhdGluZyB1cG9uIHRoZSBm
cm9udGVuZC4iKTsKKworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBzdGQ6Om51
bGxvcHQsIHBhcnNlZEVycm9yKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIC8vIEV4cGVjdGVkIHJlc3VsdCBpcyBlaXRoZXIgYW4gRXJyb3JTdHJpbmcgb3Ige3Jl
c3VsdDogPGFueT59IG9yIHtlcnJvcjogc3RyaW5nfS4KKyAgICAgICAgYXV0byBvYmplY3RSZXN1
bHQgPSB3ZWFrVGhpcy0+dW53cmFwRXZhbHVhdGlvblJlc3VsdEFzT2JqZWN0KHJlc3VsdCk7Cisg
ICAgICAgIGlmICghb2JqZWN0UmVzdWx0KSB7CisgICAgICAgICAgICBMT0coSW5zcGVjdG9yLCAi
VW5leHBlY3RlZCBub24tb2JqZWN0IHZhbHVlIHJldHVybmVkIGZyb20gSW5zcGVjdG9yRnJvbnRl
bmRBUEkuY3JlYXRlVGFiRm9yRXh0ZW5zaW9uKCkuIik7CisgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcih7IH0sIHN0ZDo6bnVsbG9wdCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6SW50
ZXJuYWxFcnJvcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgQVNT
RVJUKHJlc3VsdC5oYXNfdmFsdWUoKSk7CisKKyAgICAgICAgSlNDOjpKU1ZhbHVlIGVycm9yUGF5
bG9hZCA9IG9iamVjdFJlc3VsdC0+Z2V0KGZyb250ZW5kR2xvYmFsT2JqZWN0LCBKU0M6OklkZW50
aWZpZXI6OmZyb21TdHJpbmcoZnJvbnRlbmRHbG9iYWxPYmplY3QtPnZtKCksICJlcnJvciJfcykp
OworICAgICAgICBpZiAoIWVycm9yUGF5bG9hZC5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAgICAg
ICBpZiAoIWVycm9yUGF5bG9hZC5pc1N0cmluZygpKSB7CisgICAgICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoeyB9LCBzdGQ6Om51bGxvcHQsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6
OkludGVybmFsRXJyb3IpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBFeGNlcHRpb25EZXRhaWxzIHsg
ZXJyb3JQYXlsb2FkLnRvV1RGU3RyaW5nKGZyb250ZW5kR2xvYmFsT2JqZWN0KSB9LCBzdGQ6Om51
bGxvcHQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgSlNDOjpK
U1ZhbHVlIHJlc3VsdFBheWxvYWQgPSBvYmplY3RSZXN1bHQtPmdldChmcm9udGVuZEdsb2JhbE9i
amVjdCwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGZyb250ZW5kR2xvYmFsT2JqZWN0LT52
bSgpLCAicmVzdWx0Il9zKSk7CisgICAgICAgIGF1dG8gc2VyaWFsaXplZFJlc3VsdFZhbHVlID0g
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoKmZyb250ZW5kR2xvYmFsT2JqZWN0LCByZXN1
bHRQYXlsb2FkKTsKKyAgICAgICAgaWYgKCFzZXJpYWxpemVkUmVzdWx0VmFsdWUpIHsKKyAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgc3RkOjpudWxsb3B0LCBJbnNwZWN0b3I6OkV4
dGVuc2lvbkVycm9yOjpJbnRlcm5hbEVycm9yKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZS0+
ZGF0YSgpLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCk7CisgICAgfSk7Cit9CisKIHZvaWQg
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpkaWRTaG93RXh0ZW5zaW9uVGFiKGNv
bnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBjb25zdCBJbnNwZWN0b3I6
OkV4dGVuc2lvblRhYklEJiBleHRlbnNpb25UYWJJRCkKIHsKICAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNw
ZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6RGlkU2hvd0V4dGVuc2lvblRhYiB7IGV4
dGVuc2lvbklELCBleHRlbnNpb25UYWJJRCB9LCBtX2luc3BlY3RvclBhZ2VJZGVudGlmaWVyKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5z
cGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5oCmluZGV4IDc0YTdiN2Mz
NzE4ODE4YzU4MDMyMjk1NzdhOWE4ZDU1ZDg5YmViYzEuLmU1NDU2MjY5NzAxOTM4MWJkNTZjNTAw
MzU5Yzg5NDllOTY4ZDA1NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXIuaApAQCAtNzAsMTMgKzcwLDE2IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbG9hZEZvckV4
dGVuc2lvbihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiwgY29uc3Qgc3RkOjpvcHRpb25h
bDxib29sPiYgaWdub3JlQ2FjaGUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiYgdXNlckFn
ZW50LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4mIGluamVjdGVkU2NyaXB0LCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yOjpFeHRlbnNpb25F
cnJvcj4mKT4mJik7CiAgICAgdm9pZCBzaG93RXh0ZW5zaW9uVGFiKGNvbnN0IEluc3BlY3Rvcjo6
RXh0ZW5zaW9uVGFiSUQmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPHZvaWQsIElu
c3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+KT4mJik7CiAKKyAgICAvLyBXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXIgSVBDIG1lc3NhZ2VzIGZvciB0ZXN0aW5nLgorICAgIHZvaWQgZXZh
bHVhdGVTY3JpcHRJbkV4dGVuc2lvblRhYihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvblRhYklE
JiwgY29uc3QgU3RyaW5nJiBzY3JpcHRTb3VyY2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFeGNl
cHRpb25EZXRhaWxzPiYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yOjpFeHRlbnNpb25F
cnJvcj4mKT4mJik7CisKICAgICAvLyBDYWxsYmFja3MgZnJvbSB0aGUgZnJvbnRlbmQuCiAgICAg
dm9pZCBkaWRTaG93RXh0ZW5zaW9uVGFiKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmLCBj
b25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvblRhYklEJik7CiAgICAgdm9pZCBkaWRIaWRlRXh0ZW5z
aW9uVGFiKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmLCBjb25zdCBJbnNwZWN0b3I6OkV4
dGVuc2lvblRhYklEJik7CiAKIHByaXZhdGU6Ci0gICAgSlNDOjpKU09iamVjdCogdW53cmFwRXZh
bHVhdGlvblJlc3VsdEFzT2JqZWN0KFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0
Y2hlcjo6RXZhbHVhdGlvblJlc3VsdCk7Ci0gICAgc3RkOjpvcHRpb25hbDxJbnNwZWN0b3I6OkV4
dGVuc2lvbkVycm9yPiBwYXJzZUV4dGVuc2lvbkVycm9yRnJvbUV2YWx1YXRpb25SZXN1bHQoV2Vi
Q29yZTo6SW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpFdmFsdWF0aW9uUmVzdWx0KTsK
KyAgICBKU0M6OkpTT2JqZWN0KiB1bndyYXBFdmFsdWF0aW9uUmVzdWx0QXNPYmplY3QoV2ViQ29y
ZTo6SW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpFdmFsdWF0aW9uUmVzdWx0KSBjb25z
dDsKKyAgICBzdGQ6Om9wdGlvbmFsPEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+IHBhcnNlRXh0
ZW5zaW9uRXJyb3JGcm9tRXZhbHVhdGlvblJlc3VsdChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVu
ZEFQSURpc3BhdGNoZXI6OkV2YWx1YXRpb25SZXN1bHQpIGNvbnN0OwogCiAgICAgV2Vha1B0cjxX
ZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudD4gbV9mcm9udGVuZENsaWVudDsKICAgICBX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX2luc3BlY3RvclBhZ2VJZGVudGlmaWVyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5tZXNzYWdlcy5pbgpp
bmRleCBiYmNjNTkyYmU3OWYzNmQxYjZiMDA4ZGI3OTYzN2Y4YmI4OWIxNjJlLi44NTgxMmQ3NTc5
YzhhNzcyOGFkOTQ3MGZiOTYxMTkwMGZhMGJiODBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5tZXNzYWdlcy5pbgpAQCAtMzAsNiArMzAsOSBA
QCBtZXNzYWdlcyAtPiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIgTm90UmVmQ291
bnRlZCB7CiAgICAgRXZhbHVhdGVTY3JpcHRGb3JFeHRlbnNpb24oU3RyaW5nIGV4dGVuc2lvbklE
LCBTdHJpbmcgc2NyaXB0U291cmNlLCBzdGQ6Om9wdGlvbmFsPFVSTD4gZnJhbWVVUkwsIHN0ZDo6
b3B0aW9uYWw8VVJMPiBjb250ZXh0U2VjdXJpdHlPcmlnaW4sIHN0ZDo6b3B0aW9uYWw8Ym9vbD4g
dXNlQ29udGVudFNjcmlwdENvbnRleHQpIC0+IChJUEM6OkRhdGFSZWZlcmVuY2UgcmVzdWx0RGF0
YSwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzLCBzdGQ6
Om9wdGlvbmFsPEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+IGVycm9yKSBBc3luYwogICAgIFJl
bG9hZEZvckV4dGVuc2lvbihTdHJpbmcgZXh0ZW5zaW9uSUQsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4g
aWdub3JlQ2FjaGUsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiB1c2VyQWdlbnQsIHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPiBpbmplY3RlZFNjcmlwdCkgLT4gKHN0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yOjpF
eHRlbnNpb25FcnJvcj4gZXJyb3IpIEFzeW5jCiAgICAgU2hvd0V4dGVuc2lvblRhYihTdHJpbmcg
ZXh0ZW5zaW9uVGFiSWRlbnRpZmllcikgLT4gKEV4cGVjdGVkPHZvaWQsIEluc3BlY3Rvcjo6RXh0
ZW5zaW9uRXJyb3I+IHJlc3VsdCkgQXN5bmMKKyAgICAKKyAgICAvLyBGb3IgdGVzdGluZy4KKyAg
ICBFdmFsdWF0ZVNjcmlwdEluRXh0ZW5zaW9uVGFiKFN0cmluZyBleHRlbnNpb25UYWJJRCwgU3Ry
aW5nIHNjcmlwdFNvdXJjZSkgLT4gKElQQzo6RGF0YVJlZmVyZW5jZSByZXN1bHREYXRhLCBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIHN0ZDo6b3B0aW9u
YWw8SW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4gZXJyb3IpIEFzeW5jCiB9CiAKICNlbmRpZiAv
LyBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYjMxNDZkZjk3ZjE1NDIxYTRlNzNkMzBhZTkwNmMw
YzMxMDljZTk5NS4uNDZhMzYxOGFjYTE4YTcyMWU4MWMzNjBlYWQ1Yzg5MDZmYWVmZTAwYiAxMDA2
NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDQ3IEBACisyMDIxLTA5LTI4ICBCSiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAg
IFtDb2NvYV0gYWRkIF9XS0luc3BlY3RvckV4dGVuc2lvbiBTUEkgdG8gZXZhbHVhdGUgc2NyaXB0
IG9uIGFuIGV4dGVuc2lvbiB0YWIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzMDY0NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODM0MjAzMjg+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgRGV2aW4gUm91c3NvLgorCisgICAgICAgIEFkZCBhIG5ldyB0
ZXN0IHRvIGV4ZXJjaXNlIHRoZSBTUEkuIFRoZSB0ZXN0IHNldHMgdXAgYW4gX1dLSW5zcGVjdG9y
RXh0ZW5zaW9uLAorICAgICAgICBjcmVhdGVzIGEgdGFiLCBldmFsdWF0ZXMgc2NyaXB0IG9uIHRo
ZSB0YWIsIGFuZCBsYXRlciByZWFkcyBiYWNrIHRoZSBzdG9yZWQgdmFsdWUuCisKKyAgICAgICAg
Tm90YWJseSwgdGhpcyB0ZXN0IHdvdWxkIGZhaWwgaWYgdGhlIGV4dGVuc2lvbiB0YWIgaXMgbm90
IGN1cnJlbnRseSBzaG93aW5nLgorICAgICAgICBUaGlzIGlzIGEgYnVnIGFuZCB3aWxsIGJlIGFk
ZHJlc3NlZCBhcyBwYXJ0IG9mIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzA3NTguCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1NvdXJjZXNDb2NvYS50eHQ6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgIEFkZCBuZXcgZmlsZXMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL0luc3BlY3RvckV4dGVuc2lvbi1iYXNpYy10YWIuaHRtbDoKKyAg
ICAgICAgQWRkIGlubGluZSA8c2NyaXB0PiB0byBzZXQgd2luZG93Ll9zZWNyZXRWYWx1ZS4gVGhp
cyBpcyBjaGVja2VkIGJ5IHRoZSBBUEkgdGVzdC4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvV0tJbnNwZWN0b3JFeHRlbnNpb24ubW06IEFkZGVkLgorICAgICAg
ICAocmVzZXRHbG9iYWxTdGF0ZSk6CisgICAgICAgICgtW1VJRGVsZWdhdGVGb3JUZXN0aW5nSW5z
cGVjdG9yRXh0ZW5zaW9uIF93ZWJWaWV3OmRpZEF0dGFjaExvY2FsSW5zcGVjdG9yOl0pOgorICAg
ICAgICAoLVtVSURlbGVnYXRlRm9yVGVzdGluZ0luc3BlY3RvckV4dGVuc2lvbiBfd2ViVmlldzpj
b25maWd1cmF0aW9uRm9yTG9jYWxJbnNwZWN0b3I6XSk6CisgICAgICAgICgtW0luc3BlY3RvckV4
dGVuc2lvbkRlbGVnYXRlRm9yVGVzdGluZ0luc3BlY3RvckV4dGVuc2lvbiBpbnNwZWN0b3JFeHRl
bnNpb246ZGlkU2hvd1RhYldpdGhJZGVudGlmaWVyOl0pOgorICAgICAgICAoLVtJbnNwZWN0b3JF
eHRlbnNpb25EZWxlZ2F0ZUZvclRlc3RpbmdJbnNwZWN0b3JFeHRlbnNpb24gaW5zcGVjdG9yRXh0
ZW5zaW9uOmRpZEhpZGVUYWJXaXRoSWRlbnRpZmllcjpdKToKKyAgICAgICAgKFRFU1QpOgorCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0luc3BlY3RvckV4dGVu
c2lvbkRlbGVnYXRlLm1tOgorICAgICAgICAoLVtVSURlbGVnYXRlRm9yVGVzdGluZ0luc3BlY3Rv
ckV4dGVuc2lvbkRlbGVnYXRlIF93ZWJWaWV3OmNvbmZpZ3VyYXRpb25Gb3JMb2NhbEluc3BlY3Rv
cjpdKToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICBBZG9wdCBmaXhlcyBmcm9tIFdLSW5zcGVj
dG9yRXh0ZW5zaW9uIHRoYXQgYWxsb3cgZXh0ZW5zaW9uIHRhYiBjb250ZW50IGFuZCBpY29ucyB0
byBsb2FkLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0SW5zcGVjdG9yVVJM
U2NoZW1lSGFuZGxlci5oOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rl
c3RJbnNwZWN0b3JVUkxTY2hlbWVIYW5kbGVyLm1tOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dLSW5zcGVjdG9yUmVzb3VyY2VVUkxTY2hlbWVIYW5k
bGVyLm1tLgorICAgICAgICAoLVtUZXN0SW5zcGVjdG9yVVJMU2NoZW1lSGFuZGxlciB3ZWJWaWV3
OnN0YXJ0VVJMU2NoZW1lVGFzazpdKToKKyAgICAgICAgKC1bVGVzdEluc3BlY3RvclVSTFNjaGVt
ZUhhbmRsZXIgd2ViVmlldzpzdG9wVVJMU2NoZW1lVGFzazpdKToKKyAgICAgICAgQWRkIGEgc2lt
cGxlIFVSTFNjaGVtZUhhbmRsZXIgd2hpY2ggYWxsb3dzIHNlcnZpbmcgdGVzdCByZXNvdXJjZXMg
ZnJvbSB0aGUgVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMgZGlyZWN0b3J5LgorICAgICAgICBUaGlz
IGlzIG5lY2Vzc2FyeSB0byB0ZXN0IF9XS0luc3BlY3RvckV4dGVuc2lvbiB0YWJzLCB3aGljaCBt
dXN0IGxvYWQgdGhlaXIgY29udGVudCBmcm9tIGEgY3VzdG9tIFVSTCBzY2hlbWUuCisKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW06CisgICAgICAgIEZpeCBV
bmlmaWVkU291cmNlcyBmYWxsb3V0IGJ5IGFkZGluZyBhIG1pc3NpbmcgaW5jbHVkZS4KKwogMjAy
MS0wOS0yOSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgV1BU
IGltcG9ydGVyIHNob3VsZCBjcmVhdGUgc2VydmljZXdvcmtlciB0ZW1wbGF0ZSBmb3IgdGVtcGxh
dGVkIHRlc3QgdGhhdCBoYXZlIHdvcmtlciBhcyBnbG9iYWwKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvU291cmNlc0NvY29hLnR4dCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvU291cmNl
c0NvY29hLnR4dAppbmRleCA0ZTYxOWNkNTkyYzRjNDYzOWRlNGI0YmFjOTY1Y2FmYjYwMjI4MDlk
Li5kYjllNmU0YmVkOTNkMjMyZGZmMGI0OGMzOTJhNmQzYzVlOGQ5NjRhIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0yNyw2ICsyNyw3IEBAIFdLV2ViVmlld0NvbmZpZ3Vy
YXRpb25FeHRyYXMubW0KIGNvY29hL1BsYXRmb3JtVXRpbGl0aWVzQ29jb2EubW0KIGNvY29hL1Rl
c3RDb2NvYS5tbQogY29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUubW0KK2NvY29hL1Rlc3RJbnNw
ZWN0b3JVUkxTY2hlbWVIYW5kbGVyLm1tCiBjb2NvYS9UZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0
ZS5tbQogY29jb2EvVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5tbQogY29jb2EvVGVzdFByb3RvY29s
Lm1tCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGE1MzYzNTM0OWZlODRiZDE2MGQ5MjNlYjgy
ZWExOGFkYTBhOTljMjguLmVlMTYwYTE3OWJiZjQ2Y2ExZjhjYzZmYzc2MmQ0N2ZiOWI0Zjg1ZTcg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04OTMsNiArODkzLDcgQEAKIAkJOTk5OTEwOEIx
RjM5M0M5NjAwOEFENDU1IC8qIENvcHlpbmcubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5OTk5MTA4QTFGMzkzQzhCMDA4QUQ0NTUgLyogQ29weWluZy5t
bSAqLzsgfTsKIAkJOTk5QjdFRTMyNTUxQzYzQjAwRjQ1MEE0IC8qIFdLSW5zcGVjdG9yRXh0ZW5z
aW9uSG9zdC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDk5OUI3RUUyMjU1MUM2M0IwMEY0NTBBNCAvKiBXS0luc3BlY3RvckV4dGVuc2lvbkhvc3QubW0g
Ki87IH07CiAJCTk5QjRGOUM2MjRFREVEOTcwMDAyMkI4MiAvKiBXS0luc3BlY3RvckRlbGVnYXRl
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlCNEY5
QzUyNEVERUQ5NjAwMDIyQjgyIC8qIFdLSW5zcGVjdG9yRGVsZWdhdGUubW0gKi87IH07CisJCTk5
QzYwN0VEMjZGQjkwQUMwMEEwOTUzRiAvKiBXS0luc3BlY3RvckV4dGVuc2lvbi5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5QzYwN0VDMjZGQjkwQUMw
MEEwOTUzRiAvKiBXS0luc3BlY3RvckV4dGVuc2lvbi5tbSAqLzsgfTsKIAkJOTlFMjg0NjQyNkY5
MUY3RjAwMDNGMUZBIC8qIFdLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OUUyODQ2MzI2RjkxRjdGMDAw
M0YxRkEgLyogV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5tbSAqLzsgfTsKIAkJOTlFMjg0
NjYyNkY5M0RCNTAwMDNGMUZBIC8qIEluc3BlY3RvckV4dGVuc2lvbi1UYWJJY29uLTMweDMwLnBu
ZyBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
OUUyODQ2NTI2RjkzRDc2MDAwM0YxRkEgLyogSW5zcGVjdG9yRXh0ZW5zaW9uLVRhYkljb24tMzB4
MzAucG5nICovOyB9OwogCQk5OUUyODQ2ODI2Rjk0MTU0MDAwM0YxRkEgLyogSW5zcGVjdG9yRXh0
ZW5zaW9uLWJhc2ljLXRhYi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk5RTI4NDY3MjZGOTQxM0IwMDAzRjFGQSAvKiBJbnNwZWN0b3JF
eHRlbnNpb24tYmFzaWMtdGFiLmh0bWwgKi87IH07CkBAIC0xNTE5LDcgKzE1MjAsNiBAQAogCQkJ
CTA3RTFGNkEyMUZGQzQ0RkEwMDk2QzdFQyAvKiBnZXREaXNwbGF5TWVkaWEuaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLywKIAkJCQk0NjdDNTY1MzIxQjVFRDEzMDA1NzUxNkQgLyogR2V0U2Vzc2lv
bkNvb2tpZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTQxNjYxQzY2MjM1NUU4NUUw
MEQzM0MyNyAvKiBnZXRVc2VyTWVkaWEtd2ViYXVkaW8uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAq
LywKLQkJCQkwNzQ5OTQ0MjFFQTUwMzRCMDAwREE0NEQgLyogaW52YWxpZERldmljZUlESGFzaFNh
bHRzIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTA3NDk5NDQyMUVBNTAzNEIwMDBEQTQ0RSAv
KiBnZXRVc2VyTWVkaWEuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQkwNzQ5OTQ1MjFF
QTUwMzRCMDAwREE0NEUgLyogZ2V0VXNlck1lZGlhMi5odG1sIGluIENvcHkgUmVzb3VyY2VzICov
LAogCQkJCTA3NDk5NDQyMUVBNTAzNEIwMDBEQTQ1RSAvKiBnZXRVc2VyTWVkaWFBdWRpb1ZpZGVv
Q2FwdHVyZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLApAQCAtMTU3OCw2ICsxNTc4LDcgQEAK
IAkJCQlDRTZEMEVFMzI0MjZCOTMyMDAyQUQ5MDEgLyogaW5zZXJ0LXRleHQuaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLywKIAkJCQk5OUUyODQ2ODI2Rjk0MTU0MDAwM0YxRkEgLyogSW5zcGVjdG9y
RXh0ZW5zaW9uLWJhc2ljLXRhYi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTk5RTI4
NDY2MjZGOTNEQjUwMDAzRjFGQSAvKiBJbnNwZWN0b3JFeHRlbnNpb24tVGFiSWNvbi0zMHgzMC5w
bmcgaW4gQ29weSBSZXNvdXJjZXMgKi8sCisJCQkJMDc0OTk0NDIxRUE1MDM0QjAwMERBNDREIC8q
IGludmFsaWREZXZpY2VJREhhc2hTYWx0cyBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk1N0Y1
NkE1QzFDN0Y4Q0MxMDBGMzFEN0UgLyogSXNOYXZpZ2F0aW9uQWN0aW9uVHJ1c3RlZC5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovLAogCQkJCUM5QjRBRDJDMUVDQTZGN0YwMEY1RkVBMCAvKiBqcy1h
dXRvcGxheS1hdWRpby5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUM5OUI2NzVEMUUz
OTcyMjAwMEZDNkM4MCAvKiBqcy1wbGF5LXdpdGgtY29udHJvbHMuaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLywKQEAgLTI2MjQsNiArMjYyNSw5IEBACiAJCTk5OTkxMDhBMUYzOTNDOEIwMDhBRDQ1
NSAvKiBDb3B5aW5nLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
Q29weWluZy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk5QjdFRTIyNTUxQzYz
QjAwRjQ1MEE0IC8qIFdLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdC5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdC5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTlCNEY5QzUyNEVERUQ5NjAwMDIyQjgyIC8qIFdL
SW5zcGVjdG9yRGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBXS0luc3BlY3RvckRlbGVnYXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk5OUM2MDdFQzI2RkI5MEFDMDBBMDk1M0YgLyogV0tJbnNwZWN0b3JFeHRlbnNpb24ubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS0luc3BlY3RvckV4dGVuc2lv
bi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTlDNjA3RjQyNkZENUExRTAwQTA5
NTNGIC8qIFRlc3RJbnNwZWN0b3JVUkxTY2hlbWVIYW5kbGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IFRlc3RJbnNwZWN0b3JVUkxTY2hlbWVIYW5kbGVyLmg7IHBhdGggPSBj
b2NvYS9UZXN0SW5zcGVjdG9yVVJMU2NoZW1lSGFuZGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk5OUM2MDdGNTI2RkQ1QTFGMDBBMDk1M0YgLyogVGVzdEluc3BlY3RvclVSTFNj
aGVtZUhhbmRsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBU
ZXN0SW5zcGVjdG9yVVJMU2NoZW1lSGFuZGxlci5tbTsgcGF0aCA9IGNvY29hL1Rlc3RJbnNwZWN0
b3JVUkxTY2hlbWVIYW5kbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OUUy
ODQ2MzI2RjkxRjdGMDAwM0YxRkEgLyogV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLSW5zcGVjdG9yRXh0ZW5z
aW9uRGVsZWdhdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5RTI4NDY1MjZG
OTNENzYwMDAzRjFGQSAvKiBJbnNwZWN0b3JFeHRlbnNpb24tVGFiSWNvbi0zMHgzMC5wbmcgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5wbmc7
IHBhdGggPSAiSW5zcGVjdG9yRXh0ZW5zaW9uLVRhYkljb24tMzB4MzAucG5nIjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTlFMjg0NjcyNkY5NDEzQjAwMDNGMUZBIC8qIEluc3BlY3Rv
ckV4dGVuc2lvbi1iYXNpYy10YWIuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJJ
bnNwZWN0b3JFeHRlbnNpb24tYmFzaWMtdGFiLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMzMyMyw2ICszMzI3LDggQEAKIAkJCQk1Q0U3NTk0NzIyQTg4M0E1MDBDMTI0MDkg
LyogVGVzdENvbnRleHRNZW51RHJpdmVyLm1tICovLAogCQkJCURGNkJDNDcwMjUzNEUxMjAwMDhG
NjNDQyAvKiBUZXN0RG93bmxvYWREZWxlZ2F0ZS5oICovLAogCQkJCURGNkJDNDZGMjUzNEUxMjAw
MDhGNjNDQyAvKiBUZXN0RG93bmxvYWREZWxlZ2F0ZS5tbSAqLywKKwkJCQk5OUM2MDdGNDI2RkQ1
QTFFMDBBMDk1M0YgLyogVGVzdEluc3BlY3RvclVSTFNjaGVtZUhhbmRsZXIuaCAqLywKKwkJCQk5
OUM2MDdGNTI2RkQ1QTFGMDBBMDk1M0YgLyogVGVzdEluc3BlY3RvclVSTFNjaGVtZUhhbmRsZXIu
bW0gKi8sCiAJCQkJNUM3MkU4Q0QyNDRGRkNFMzAwMzgxRUI3IC8qIFRlc3RMZWdhY3lEb3dubG9h
ZERlbGVnYXRlLmggKi8sCiAJCQkJNUM3MkU4Q0UyNDRGRkNFNDAwMzgxRUI3IC8qIFRlc3RMZWdh
Y3lEb3dubG9hZERlbGVnYXRlLm1tICovLAogCQkJCTJEMUMwNEE1MUQ3NjI5OEIwMDBBNjgxNiAv
KiBUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmggKi8sCkBAIC0zNjY2LDYgKzM2NzIsNyBAQAogCQkJ
CTM3MENFMjI5MUY1NzM0MzQwMEU3NDEwQiAvKiBXS0NvbnRlbnRWaWV3VGFyZ2V0Rm9yQWN0aW9u
Lm1tICovLAogCQkJCTUxRDEyNDk3MUU3NjNBRjgwMDJCMjgyMCAvKiBXS0hUVFBDb29raWVTdG9y
ZS5tbSAqLywKIAkJCQk5OUI0RjlDNTI0RURFRDk2MDAwMjJCODIgLyogV0tJbnNwZWN0b3JEZWxl
Z2F0ZS5tbSAqLywKKwkJCQk5OUM2MDdFQzI2RkI5MEFDMDBBMDk1M0YgLyogV0tJbnNwZWN0b3JF
eHRlbnNpb24ubW0gKi8sCiAJCQkJOTlFMjg0NjMyNkY5MUY3RjAwMDNGMUZBIC8qIFdLSW5zcGVj
dG9yRXh0ZW5zaW9uRGVsZWdhdGUubW0gKi8sCiAJCQkJOTk5QjdFRTIyNTUxQzYzQjAwRjQ1MEE0
IC8qIFdLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdC5tbSAqLywKIAkJCQlBNUE3MjlGMDFGNjIyQTlB
MDBERTVBMjggLyogV0tOYXZpZ2F0aW9uUmVzcG9uc2UubW0gKi8sCkBAIC00NTgxLDYgKzQ1ODgs
NyBAQAogCQlCQzkwOTc3QjEyNTU3MUFFMDAwODM3NTYgLyogUmVzb3VyY2VzICovID0gewogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk0QTQxMEY0RDE5QUY3QkVGMDAy
RUJBQjQgLyogaW52YWxpZERldmljZUlESGFzaFNhbHRzICovLAogCQkJCUMwNDVGOTQ2MTM4NUMy
RjgwMEMwRjNDRCAvKiAxOC1jaGFyYWN0ZXJzLmh0bWwgKi8sCiAJCQkJMUMyQjgxODUxQzg5MjUy
MzAwQTU1MjlGIC8qIEFoZW0udHRmICovLAogCQkJCTkzRDNEMTlCMTdCMUE3QjAwMEM3QzQxNSAv
KiBhbGwtY29udGVudC1pbi1vbmUtaWZyYW1lLmh0bWwgKi8sCkBAIC00NjI5LDcgKzQ2MzcsNiBA
QAogCQkJCUJDQkQzNzJFMTI1QUJCRTYwMEQyQzI5RiAvKiBpY29uLnBuZyAqLywKIAkJCQkxQ0M4
MENFOTI0NzRGMUY3MDA0REM0ODkgLyogaWRlbXBvdGVudC1tb2RlLWF1dG9zaXppbmctb25seS1o
b25vcnMtcGVyY2VudGFnZXMuaHRtbCAqLywKIAkJCQlDRTM1MjRGNTFCMTQyQkJCMDAyOEE3QzUg
LyogaW5wdXQtZm9jdXMtYmx1ci5odG1sICovLAotCQkJCTRBNDEwRjREMTlBRjdCRUYwMDJFQkFC
NCAvKiBpbnZhbGlkRGV2aWNlSURIYXNoU2FsdHMgKi8sCiAJCQkJQzlCNEFEMkIxRUNBNkY3NjAw
RjVGRUEwIC8qIGpzLWF1dG9wbGF5LWF1ZGlvLmh0bWwgKi8sCiAJCQkJQzk5QjY3NUIxRTM5NzFG
QzAwRkM2QzgwIC8qIGpzLXBsYXktd2l0aC1jb250cm9scy5odG1sICovLAogCQkJCTU1MjI2QTJF
MUVCOTY5QjYwMEMzNkFEMCAvKiBsYXJnZS1yZWQtc3F1YXJlLWltYWdlLmh0bWwgKi8sCkBAIC01
OTQ3LDYgKzU5NTQsNyBAQAogCQkJCTUxRDEyNDk4MUU3NjNCMDIwMDJCMjgyMCAvKiBXS0hUVFBD
b29raWVTdG9yZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjFEMUE0MTFBRTYwMDQ0N0M0
QyAvKiBXS0ltYWdlQ3JlYXRlQ0dJbWFnZUNyYXNoLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk5
QjRGOUM2MjRFREVEOTcwMDAyMkI4MiAvKiBXS0luc3BlY3RvckRlbGVnYXRlLm1tIGluIFNvdXJj
ZXMgKi8sCisJCQkJOTlDNjA3RUQyNkZCOTBBQzAwQTA5NTNGIC8qIFdLSW5zcGVjdG9yRXh0ZW5z
aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTlFMjg0NjQyNkY5MUY3RjAwMDNGMUZBIC8qIFdL
SW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywKIAkJCQk5OTlCN0VF
MzI1NTFDNjNCMDBGNDUwQTQgLyogV0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0Lm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTVBNzI5RjExRjYyMkFBNzAwREU1QTI4IC8qIFdLTmF2aWdhdGlvblJlc3Bv
bnNlLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0luc3BlY3RvckV4dGVuc2lvbi1iYXNpYy10YWIuaHRtbCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5zcGVjdG9yRXh0ZW5zaW9uLWJhc2lj
LXRhYi5odG1sCmluZGV4IGZlODhhZDBlOWRmZDRiYjc4NDY4MjEyODEwNTE0MTZhYjcwZjBhMzUu
LjQyYmYxOWQwYjI3NzU0MjE5YzUyMmQ3YTNhZDA4YTI5YzRhNWEwZTQgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5zcGVjdG9yRXh0ZW5zaW9uLWJh
c2ljLXRhYi5odG1sCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
SW5zcGVjdG9yRXh0ZW5zaW9uLWJhc2ljLXRhYi5odG1sCkBAIC0xLDQgKzEsOCBAQAogPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQ+CisgICAgd2luZG93Ll9zZWNyZXRWYWx1ZSA9IHthbnN3ZXI6NDJ9
OworPC9zY3JpcHQ+CiA8Ym9keT4KIDxoMT5UaGlzIGlzIGEgdGVzdCBleHRlbnNpb24uPC9oMT4K
IDxwPkluIGEgbm9ybWFsIGV4dGVuc2lvbiwgdGhpcyBhcmVhIHdvdWxkIHNob3cgdGhlIGV4dGVu
c2lvbidzIHVzZXIgaW50ZXJmYWNlLjwvcD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tJbnNwZWN0b3JFeHRlbnNpb24ubW0gYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSW5zcGVjdG9yRXh0ZW5zaW9uLm1tCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjI0MjE3Mjg4YzljZmMxMGY5NzViYzc3OGIxODQ1MjYwNzA0ZTkzOWYKLS0tIC9kZXYv
bnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSW5zcGVj
dG9yRXh0ZW5zaW9uLm1tCkBAIC0wLDAgKzEsMTkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAi
Y29uZmlnLmgiCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisKKyNpbXBvcnQg
IlRlc3RDb2NvYS5oIgorI2ltcG9ydCAiVGVzdEluc3BlY3RvclVSTFNjaGVtZUhhbmRsZXIuaCIK
KyNpbXBvcnQgIlV0aWxpdGllcy5oIgorI2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNQcml2
YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgorI2ltcG9ydCA8V2Vi
S2l0L19XS0luc3BlY3Rvci5oPgorI2ltcG9ydCA8V2ViS2l0L19XS0luc3BlY3RvckNvbmZpZ3Vy
YXRpb24uaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tJbnNwZWN0b3JFeHRlbnNpb24uaD4KKyNpbXBv
cnQgPFdlYktpdC9fV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5oPgorI2ltcG9ydCA8V2Vi
S2l0L19XS0luc3BlY3RvckV4dGVuc2lvblByaXZhdGVGb3JUZXN0aW5nLmg+CisjaW1wb3J0IDxX
ZWJLaXQvX1dLSW5zcGVjdG9yUHJpdmF0ZUZvclRlc3RpbmcuaD4KKyNpbXBvcnQgPHd0Zi9SZXRh
aW5QdHIuaD4KKworc3RhdGljIGJvb2wgZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3JDYWxsZWQgPSBm
YWxzZTsKK3N0YXRpYyBib29sIGRpZFNob3dFeHRlbnNpb25UYWJXYXNDYWxsZWQgPSBmYWxzZTsK
K3N0YXRpYyBib29sIGRpZEhpZGVFeHRlbnNpb25UYWJXYXNDYWxsZWQgPSBmYWxzZTsKK3N0YXRp
YyBib29sIHBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCA9IGZhbHNlOworc3RhdGljIFJldGFpblB0
cjxUZXN0SW5zcGVjdG9yVVJMU2NoZW1lSGFuZGxlcj4gc2hhcmVkVVJMU2NoZW1lSGFuZGxlcjsK
K3N0YXRpYyBSZXRhaW5QdHI8X1dLSW5zcGVjdG9yRXh0ZW5zaW9uPiBzaGFyZWRJbnNwZWN0b3JF
eHRlbnNpb247CitzdGF0aWMgUmV0YWluUHRyPE5TU3RyaW5nPiBzaGFyZWRFeHRlbnNpb25UYWJJ
ZGVudGlmaWVyOworCitzdGF0aWMgdm9pZCByZXNldEdsb2JhbFN0YXRlKCkKK3sKKyAgICBkaWRB
dHRhY2hMb2NhbEluc3BlY3RvckNhbGxlZCA9IGZhbHNlOworICAgIGRpZFNob3dFeHRlbnNpb25U
YWJXYXNDYWxsZWQgPSBmYWxzZTsKKyAgICBkaWRIaWRlRXh0ZW5zaW9uVGFiV2FzQ2FsbGVkID0g
ZmFsc2U7CisgICAgcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkID0gZmFsc2U7Cit9CisKK0BpbnRl
cmZhY2UgVUlEZWxlZ2F0ZUZvclRlc3RpbmdJbnNwZWN0b3JFeHRlbnNpb24gOiBOU09iamVjdCA8
V0tVSURlbGVnYXRlPgorQGVuZAorCitAaW1wbGVtZW50YXRpb24gVUlEZWxlZ2F0ZUZvclRlc3Rp
bmdJbnNwZWN0b3JFeHRlbnNpb24KKworLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2Vi
VmlldyBkaWRBdHRhY2hMb2NhbEluc3BlY3RvcjooX1dLSW5zcGVjdG9yICopaW5zcGVjdG9yCit7
CisgICAgRVhQRUNUX0VRKHdlYlZpZXcuX2luc3BlY3RvciwgaW5zcGVjdG9yKTsKKyAgICBkaWRB
dHRhY2hMb2NhbEluc3BlY3RvckNhbGxlZCA9IHRydWU7Cit9CisKKy0gKF9XS0luc3BlY3RvckNv
bmZpZ3VyYXRpb24gKilfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBjb25maWd1cmF0aW9u
Rm9yTG9jYWxJbnNwZWN0b3I6KF9XS0luc3BlY3RvciAqKWluc3BlY3RvcgoreworICAgIGlmICgh
c2hhcmVkVVJMU2NoZW1lSGFuZGxlcikKKyAgICAgICAgc2hhcmVkVVJMU2NoZW1lSGFuZGxlciA9
IGFkb3B0TlMoW1tUZXN0SW5zcGVjdG9yVVJMU2NoZW1lSGFuZGxlciBhbGxvY10gaW5pdF0pOwor
CisgICAgYXV0byBpbnNwZWN0b3JDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS0luc3BlY3Rv
ckNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbaW5zcGVjdG9yQ29uZmlndXJhdGlv
biBzZXRVUkxTY2hlbWVIYW5kbGVyOnNoYXJlZFVSTFNjaGVtZUhhbmRsZXIuZ2V0KCkgZm9yVVJM
U2NoZW1lOkAidGVzdC1yZXNvdXJjZSJdOworICAgIHJldHVybiBpbnNwZWN0b3JDb25maWd1cmF0
aW9uLmF1dG9yZWxlYXNlKCk7Cit9CisKK0BlbmQKKworCitAaW50ZXJmYWNlIEluc3BlY3RvckV4
dGVuc2lvbkRlbGVnYXRlRm9yVGVzdGluZ0luc3BlY3RvckV4dGVuc2lvbiA6IE5TT2JqZWN0IDxf
V0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZT4KK0BlbmQKKworQGltcGxlbWVudGF0aW9uIElu
c3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlRm9yVGVzdGluZ0luc3BlY3RvckV4dGVuc2lvbiB7Cit9
CisKKy0gKHZvaWQpaW5zcGVjdG9yRXh0ZW5zaW9uOihfV0tJbnNwZWN0b3JFeHRlbnNpb24gKill
eHRlbnNpb24gZGlkU2hvd1RhYldpdGhJZGVudGlmaWVyOihOU1N0cmluZyAqKXRhYklkZW50aWZp
ZXIKK3sKKyAgICBkaWRTaG93RXh0ZW5zaW9uVGFiV2FzQ2FsbGVkID0gdHJ1ZTsKK30KKworLSAo
dm9pZClpbnNwZWN0b3JFeHRlbnNpb246KF9XS0luc3BlY3RvckV4dGVuc2lvbiAqKWV4dGVuc2lv
biBkaWRIaWRlVGFiV2l0aElkZW50aWZpZXI6KE5TU3RyaW5nICopdGFiSWRlbnRpZmllcgorewor
ICAgIGRpZEhpZGVFeHRlbnNpb25UYWJXYXNDYWxsZWQgPSB0cnVlOworfQorCitAZW5kCisKK1RF
U1QoV0tJbnNwZWN0b3JFeHRlbnNpb24sIENhbkV2YWx1YXRlU2NyaXB0SW5FeHRlbnNpb25UYWIp
Cit7CisgICAgcmVzZXRHbG9iYWxTdGF0ZSgpOworCisgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJh
dGlvbiA9IGFkb3B0TlMoW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gbmV3XSk7CisgICAgd2ViVmll
d0NvbmZpZ3VyYXRpb24uZ2V0KCkucHJlZmVyZW5jZXMuX2RldmVsb3BlckV4dHJhc0VuYWJsZWQg
PSBZRVM7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOndlYlZp
ZXdDb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgYXV0byB1aURlbGVnYXRlID0gYWRvcHROUyhb
VUlEZWxlZ2F0ZUZvclRlc3RpbmdJbnNwZWN0b3JFeHRlbnNpb24gbmV3XSk7CisKKyAgICBbd2Vi
VmlldyBzZXRVSURlbGVnYXRlOnVpRGVsZWdhdGUuZ2V0KCldOworICAgIFt3ZWJWaWV3IGxvYWRI
VE1MU3RyaW5nOkAiPGhlYWQ+PHRpdGxlPlRlc3QgcGFnZSB0byBiZSBpbnNwZWN0ZWQ8L3RpdGxl
PjwvaGVhZD48Ym9keT48cD5GaWxsZXIgY29udGVudDwvcD48L2JvZHk+IiBiYXNlVVJMOltOU1VS
TCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2V4YW1wbGUuY29tLyJdXTsKKworICAgIFtbd2ViVmll
dyBfaW5zcGVjdG9yXSBzaG93XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRpZEF0
dGFjaExvY2FsSW5zcGVjdG9yQ2FsbGVkKTsKKworICAgIGF1dG8gZXh0ZW5zaW9uSUQgPSBbTlNV
VUlEIFVVSURdLlVVSURTdHJpbmc7CisgICAgYXV0byBleHRlbnNpb25EaXNwbGF5TmFtZSA9IEAi
Rmlyc3RFeHRlbnNpb24iOworCisgICAgLy8gUmVnaXN0ZXIgdGhlIHRlc3QgZXh0ZW5zaW9uLgor
ICAgIHBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCA9IGZhbHNlOworICAgIFtbd2ViVmlldyBfaW5z
cGVjdG9yXSByZWdpc3RlckV4dGVuc2lvbldpdGhJRDpleHRlbnNpb25JRCBkaXNwbGF5TmFtZTpl
eHRlbnNpb25EaXNwbGF5TmFtZSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRXJyb3IgKiBfTnVsbGFi
bGUgZXJyb3IsIF9XS0luc3BlY3RvckV4dGVuc2lvbiAqIF9OdWxsYWJsZSBleHRlbnNpb24pIHsK
KyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBFWFBFQ1RfTk9UX05VTEwoZXh0
ZW5zaW9uKTsKKyAgICAgICAgc2hhcmVkSW5zcGVjdG9yRXh0ZW5zaW9uID0gZXh0ZW5zaW9uOwor
CisgICAgICAgIHBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCA9IHRydWU7CisgICAgfV07CisgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQpOworCisg
ICAgYXV0byBleHRlbnNpb25EZWxlZ2F0ZSA9IGFkb3B0TlMoW0luc3BlY3RvckV4dGVuc2lvbkRl
bGVnYXRlRm9yVGVzdGluZ0luc3BlY3RvckV4dGVuc2lvbiBuZXddKTsKKyAgICBbc2hhcmVkSW5z
cGVjdG9yRXh0ZW5zaW9uIHNldERlbGVnYXRlOmV4dGVuc2lvbkRlbGVnYXRlLmdldCgpXTsKKwor
ICAgIC8vIENyZWF0ZSBhbmQgc2hvdyBhbiBleHRlbnNpb24gdGFiLgorICAgIGF1dG8gaWNvblVS
TCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAidGVzdC1yZXNvdXJjZTovL0ZpcnN0RXh0ZW5zaW9u
L0luc3BlY3RvckV4dGVuc2lvbi1UYWJJY29uLTMweDMwLnBuZyJdOworICAgIGF1dG8gc291cmNl
VVJMID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6QCJ0ZXN0LXJlc291cmNlOi8vRmlyc3RFeHRlbnNp
b24vSW5zcGVjdG9yRXh0ZW5zaW9uLWJhc2ljLXRhYi5odG1sIl07CisKKyAgICBwZW5kaW5nQ2Fs
bGJhY2tXYXNDYWxsZWQgPSBmYWxzZTsKKyAgICBbc2hhcmVkSW5zcGVjdG9yRXh0ZW5zaW9uIGNy
ZWF0ZVRhYldpdGhOYW1lOkAiRmlyc3RFeHRlbnNpb24tVGFiIiB0YWJJY29uVVJMOmljb25VUkwg
c291cmNlVVJMOnNvdXJjZVVSTCBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRXJyb3IgKiBfTnVsbGFi
bGUgZXJyb3IsIE5TU3RyaW5nICogX051bGxhYmxlIGV4dGVuc2lvblRhYklkZW50aWZpZXIpIHsK
KyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBFWFBFQ1RfTk9UX05VTEwoZXh0
ZW5zaW9uVGFiSWRlbnRpZmllcik7CisgICAgICAgIHNoYXJlZEV4dGVuc2lvblRhYklkZW50aWZp
ZXIgPSBleHRlbnNpb25UYWJJZGVudGlmaWVyOworCisgICAgICAgIHBlbmRpbmdDYWxsYmFja1dh
c0NhbGxlZCA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZw
ZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQpOworCisgICAgcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVk
ID0gZmFsc2U7CisgICAgZGlkU2hvd0V4dGVuc2lvblRhYldhc0NhbGxlZCA9IGZhbHNlOworICAg
IFtbd2ViVmlldyBfaW5zcGVjdG9yXSBzaG93RXh0ZW5zaW9uVGFiV2l0aElkZW50aWZpZXI6c2hh
cmVkRXh0ZW5zaW9uVGFiSWRlbnRpZmllci5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRXJy
b3IgKiBfTnVsbGFibGUgZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworCisg
ICAgICAgIHBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCA9IHRydWU7CisgICAgfV07CisgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQpOworICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZGlkU2hvd0V4dGVuc2lvblRhYldhc0NhbGxlZCk7CisK
KyAgICAvLyBSZWFkIGJhY2sgYSB2YWx1ZSB0aGF0IGlzIHNldCBpbiB0aGUgPGlmcmFtZT4ncyBz
Y3JpcHQgY29udGV4dC4KKyAgICBwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQgPSBmYWxzZTsKKyAg
ICBhdXRvIHNjcmlwdFNvdXJjZTIgPSBAIndpbmRvdy5fc2VjcmV0VmFsdWUiOworICAgIFtzaGFy
ZWRJbnNwZWN0b3JFeHRlbnNpb24gX2V2YWx1YXRlU2NyaXB0OnNjcmlwdFNvdXJjZTIgaW5FeHRl
bnNpb25UYWJXaXRoSWRlbnRpZmllcjpzaGFyZWRFeHRlbnNpb25UYWJJZGVudGlmaWVyLmdldCgp
IGNvbXBsZXRpb25IYW5kbGVyOl4oTlNFcnJvciAqIF9OdWxsYWJsZSBlcnJvciwgTlNEaWN0aW9u
YXJ5ICogX051bGxhYmxlIHJlc3VsdCkgeworICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7Cisg
ICAgICAgIEVYUEVDVF9OT1RfTlVMTChyZXN1bHQpOworICAgICAgICBFWFBFQ1RfTlNfRVFVQUwo
cmVzdWx0W0AiYW5zd2VyIl0sIEA0Mik7CisKKyAgICAgICAgcGVuZGluZ0NhbGxiYWNrV2FzQ2Fs
bGVkID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnBlbmRp
bmdDYWxsYmFja1dhc0NhbGxlZCk7CisKKyAgICAvLyBDaGVjayB0byBzZWUgdGhhdCBzY3JpcHQg
aXMgYWN0dWFsbHkgYmVpbmcgZXZhbHVhdGVkIGluIHRoZSA8aWZyYW1lPidzIHNjcmlwdCBjb250
ZXh0LgorICAgIHBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCA9IGZhbHNlOworICAgIGF1dG8gc2Ny
aXB0U291cmNlMyA9IEAid2luZG93LnRvcCAhPT0gd2luZG93IjsKKyAgICBbc2hhcmVkSW5zcGVj
dG9yRXh0ZW5zaW9uIF9ldmFsdWF0ZVNjcmlwdDpzY3JpcHRTb3VyY2UzIGluRXh0ZW5zaW9uVGFi
V2l0aElkZW50aWZpZXI6c2hhcmVkRXh0ZW5zaW9uVGFiSWRlbnRpZmllci5nZXQoKSBjb21wbGV0
aW9uSGFuZGxlcjpeKE5TRXJyb3IgKiBfTnVsbGFibGUgZXJyb3IsIE5TRGljdGlvbmFyeSAqIF9O
dWxsYWJsZSByZXN1bHQpIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBF
WFBFQ1RfTk9UX05VTEwocmVzdWx0KTsKKyAgICAgICAgRVhQRUNUX05TX0VRVUFMKHJlc3VsdCwg
QFlFUyk7CisKKyAgICAgICAgcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkID0gdHJ1ZTsKKyAgICB9
XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnBlbmRpbmdDYWxsYmFja1dhc0NhbGxl
ZCk7CisKKyAgICAvLyBVbnJlZ2lzdGVyIHRoZSB0ZXN0IGV4dGVuc2lvbi4KKyAgICBwZW5kaW5n
Q2FsbGJhY2tXYXNDYWxsZWQgPSBmYWxzZTsKKyAgICBbW3dlYlZpZXcgX2luc3BlY3Rvcl0gdW5y
ZWdpc3RlckV4dGVuc2lvbjpzaGFyZWRJbnNwZWN0b3JFeHRlbnNpb24uZ2V0KCkgY29tcGxldGlv
bkhhbmRsZXI6XihOU0Vycm9yICogX051bGxhYmxlIGVycm9yKSB7CisgICAgICAgIEVYUEVDVF9O
VUxMKGVycm9yKTsKKworICAgICAgICBwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQgPSB0cnVlOwor
ICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcGVuZGluZ0NhbGxiYWNrV2Fz
Q2FsbGVkKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tJbnNwZWN0
b3JFeHRlbnNpb25EZWxlZ2F0ZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5tbQppbmRleCBmOTQ2NGJiNmRjYWYx
Nzc5Njg2MjY1MDU5YjUzZjcwMzdlOThjNzY1Li40YjM5ZjUyMTExY2M4OGE2YTcwMjYxNDMwOGY1
YTcwMTBjYjllZjY1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUubW0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLm1t
CkBAIC0yNSwyMiArMjUsMjUgQEAKIAogI2ltcG9ydCAiY29uZmlnLmgiCiAKKyNpZiBFTkFCTEUo
SU5TUEVDVE9SX0VYVEVOU0lPTlMpCisKICNpbXBvcnQgIlRlc3QuaCIKKyNpbXBvcnQgIlRlc3RJ
bnNwZWN0b3JVUkxTY2hlbWVIYW5kbGVyLmgiCiAjaW1wb3J0ICJVdGlsaXRpZXMuaCIKICNpbXBv
cnQgPFdlYktpdC9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2Vi
Vmlld1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tJbnNwZWN0b3IuaD4KKyNpbXBvcnQg
PFdlYktpdC9fV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dL
SW5zcGVjdG9yRXh0ZW5zaW9uLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLSW5zcGVjdG9yRXh0ZW5z
aW9uRGVsZWdhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tJbnNwZWN0b3JQcml2YXRlRm9yVGVz
dGluZy5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCi0jaWYgRU5BQkxFKElOU1BFQ1RP
Ul9FWFRFTlNJT05TKQotCiBzdGF0aWMgYm9vbCBkaWRBdHRhY2hMb2NhbEluc3BlY3RvckNhbGxl
ZCA9IGZhbHNlOwogc3RhdGljIGJvb2wgZGlkU2hvd0V4dGVuc2lvblRhYldhc0NhbGxlZCA9IGZh
bHNlOwogc3RhdGljIGJvb2wgZGlkSGlkZUV4dGVuc2lvblRhYldhc0NhbGxlZCA9IGZhbHNlOwog
c3RhdGljIGJvb2wgcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkID0gZmFsc2U7CitzdGF0aWMgUmV0
YWluUHRyPFRlc3RJbnNwZWN0b3JVUkxTY2hlbWVIYW5kbGVyPiBzaGFyZWRVUkxTY2hlbWVIYW5k
bGVyOwogc3RhdGljIFJldGFpblB0cjxfV0tJbnNwZWN0b3JFeHRlbnNpb24+IHNoYXJlZEluc3Bl
Y3RvckV4dGVuc2lvbjsKIHN0YXRpYyBSZXRhaW5QdHI8TlNTdHJpbmc+IHNoYXJlZEV4dGVuc2lv
blRhYklkZW50aWZpZXI7CiAKQEAgLTYzLDYgKzY2LDE2IEBAIC0gKHZvaWQpX3dlYlZpZXc6KFdL
V2ViVmlldyAqKXdlYlZpZXcgZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3I6KF9XS0luc3BlY3RvciAq
KWluCiAgICAgZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3JDYWxsZWQgPSB0cnVlOwogfQogCistIChf
V0tJbnNwZWN0b3JDb25maWd1cmF0aW9uICopX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcg
Y29uZmlndXJhdGlvbkZvckxvY2FsSW5zcGVjdG9yOihfV0tJbnNwZWN0b3IgKilpbnNwZWN0b3IK
K3sKKyAgICBpZiAoIXNoYXJlZFVSTFNjaGVtZUhhbmRsZXIpCisgICAgICAgIHNoYXJlZFVSTFNj
aGVtZUhhbmRsZXIgPSBhZG9wdE5TKFtbVGVzdEluc3BlY3RvclVSTFNjaGVtZUhhbmRsZXIgYWxs
b2NdIGluaXRdKTsKKworICAgIGF1dG8gaW5zcGVjdG9yQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMo
W1tfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW2luc3BlY3Rv
ckNvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpzaGFyZWRVUkxTY2hlbWVIYW5kbGVy
LmdldCgpIGZvclVSTFNjaGVtZTpAInRlc3QtcmVzb3VyY2UiXTsKKyAgICByZXR1cm4gaW5zcGVj
dG9yQ29uZmlndXJhdGlvbi5hdXRvcmVsZWFzZSgpOworfQorCiBAZW5kCiAKIApAQCAtMTE3LDgg
KzEzMCw4IEBAIFRFU1QoV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZSwgU2hvd0FuZEhpZGVU
YWJDYWxsYmFja3MpCiAgICAgW3NoYXJlZEluc3BlY3RvckV4dGVuc2lvbiBzZXREZWxlZ2F0ZTpl
eHRlbnNpb25EZWxlZ2F0ZS5nZXQoKV07CiAKICAgICAvLyBDcmVhdGUgYW4gZXh0ZW5zaW9uIHRh
Yi4KLSAgICBhdXRvIGljb25VUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291
cmNlOkAiSW5zcGVjdG9yRXh0ZW5zaW9uLVRhYkljb24tMzB4MzAiIHdpdGhFeHRlbnNpb246QCJw
bmciIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07Ci0gICAgYXV0byBz
b3VyY2VVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAiSW5zcGVj
dG9yRXh0ZW5zaW9uLWJhc2ljLXRhYiIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9y
eTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CisgICAgYXV0byBpY29uVVJMID0gW05TVVJM
IFVSTFdpdGhTdHJpbmc6QCJ0ZXN0LXJlc291cmNlOi8vRmlyc3RFeHRlbnNpb24vSW5zcGVjdG9y
RXh0ZW5zaW9uLVRhYkljb24tMzB4MzAucG5nIl07CisgICAgYXV0byBzb3VyY2VVUkwgPSBbTlNV
UkwgVVJMV2l0aFN0cmluZzpAInRlc3QtcmVzb3VyY2U6Ly9GaXJzdEV4dGVuc2lvbi9JbnNwZWN0
b3JFeHRlbnNpb24tYmFzaWMtdGFiLmh0bWwiXTsKIAogICAgIHBlbmRpbmdDYWxsYmFja1dhc0Nh
bGxlZCA9IGZhbHNlOwogICAgIFtzaGFyZWRJbnNwZWN0b3JFeHRlbnNpb24gY3JlYXRlVGFiV2l0
aE5hbWU6QCJGaXJzdEV4dGVuc2lvbi1UYWIiIHRhYkljb25VUkw6aWNvblVSTCBzb3VyY2VVUkw6
c291cmNlVVJMIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNFcnJvciAqIF9OdWxsYWJsZSBlcnJvciwg
TlNTdHJpbmcgKiBfTnVsbGFibGUgZXh0ZW5zaW9uVGFiSWRlbnRpZmllcikgewpAQCAtMTMwLDEw
ICsxNDMsNiBAQCBURVNUKFdLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUsIFNob3dBbmRIaWRl
VGFiQ2FsbGJhY2tzKQogICAgIH1dOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcGVu
ZGluZ0NhbGxiYWNrV2FzQ2FsbGVkKTsKIAotICAgIC8vIEZvcmNlIGEga25vd24gbm9uLWV4dGVu
c2lvbiB0YWIgdG8gYmUgc2hvd24gYmVmb3JlIHNob3dpbmcgdGhlIGV4dGVuc2lvbiB0YWIuIE90
aGVyd2lzZSwKLSAgICAvLyBpZiB0aGUgZXh0ZW5zaW9uIHRhYiB3YXMgYWxyZWFkeSBvcGVuLCB0
aGVuIHRoaXMgdGVzdCB3b3VsZCBoYW5nIHdhaXRpbmcgZm9yIGEgZGlkU2hvdyBjYWxsYmFjay4K
LSAgICBbW3dlYlZpZXcgX2luc3BlY3Rvcl0gc2hvd0NvbnNvbGVdOwotCiAgICAgcGVuZGluZ0Nh
bGxiYWNrV2FzQ2FsbGVkID0gZmFsc2U7CiAgICAgW1t3ZWJWaWV3IF9pbnNwZWN0b3JdIHNob3dF
eHRlbnNpb25UYWJXaXRoSWRlbnRpZmllcjpzaGFyZWRFeHRlbnNpb25UYWJJZGVudGlmaWVyLmdl
dCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNFcnJvciAqIF9OdWxsYWJsZSBlcnJvcikgewogICAg
ICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L2NvY29hL1Rlc3RJbnNwZWN0b3JVUkxTY2hlbWVIYW5kbGVyLmggYi9Ub29scy9UZXN0V2ViS2l0
QVBJL2NvY29hL1Rlc3RJbnNwZWN0b3JVUkxTY2hlbWVIYW5kbGVyLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDc5
MDdmMjc5MGUwZjgzZWJkOWMzYjIyMGU0ZmQyMmIwZTQzNzdmYQotLS0gL2Rldi9udWxsCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdEluc3BlY3RvclVSTFNjaGVtZUhhbmRsZXIu
aApAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbXBvcnQg
PFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPFdlYktpdC9XS1VSTFNjaGVtZUhhbmRs
ZXIuaD4KKworTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKworQGludGVyZmFjZSBUZXN0SW5zcGVj
dG9yVVJMU2NoZW1lSGFuZGxlciA6IE5TT2JqZWN0IDxXS1VSTFNjaGVtZUhhbmRsZXI+CitAZW5k
CisKK05TX0FTU1VNRV9OT05OVUxMX0VORApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9jb2NvYS9UZXN0SW5zcGVjdG9yVVJMU2NoZW1lSGFuZGxlci5tbSBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvY29jb2EvVGVzdEluc3BlY3RvclVSTFNjaGVtZUhhbmRsZXIubW0KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YzZhNDdiMzkyMThkODE5NGQ1ZTllYjgwNWJjMWFlOTliNjVjYmYwNQotLS0gL2Rldi9udWxsCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdEluc3BlY3RvclVSTFNjaGVtZUhhbmRs
ZXIubW0KQEAgLTAsMCArMSwxMTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIK
KyNpbXBvcnQgIlRlc3RJbnNwZWN0b3JVUkxTY2hlbWVIYW5kbGVyLmgiCisKKyNpbXBvcnQgPFdl
YkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLVVJMU2NoZW1lVGFz
ay5oPgorI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KKworLy8gTm90ZTogdGhpcyBjbGFzcyBp
cyBhIHNpbXBsaWZpZWQgdmVyc2lvbiBvZiBXS1Jlc291cmNlVVJMU2NoZW1lSGFuZGxlciBmb3Ig
dGVzdGluZyBwdXJwb3Nlcy4KKworQGltcGxlbWVudGF0aW9uIFRlc3RJbnNwZWN0b3JVUkxTY2hl
bWVIYW5kbGVyIHsKKyAgICBSZXRhaW5QdHI8TlNNYXBUYWJsZTxpZCA8V0tVUkxTY2hlbWVUYXNr
PiwgTlNPcGVyYXRpb24gKj4+IF9maWxlTG9hZE9wZXJhdGlvbnM7CisgICAgUmV0YWluUHRyPE5T
QnVuZGxlPiBfY2FjaGVkQnVuZGxlOworICAgIFJldGFpblB0cjxOU09wZXJhdGlvblF1ZXVlPiBf
b3BlcmF0aW9uUXVldWU7Cit9CisKKy8vIE1BUksgLSBXS1VSTFNjaGVtZUhhbmRsZXIgUHJvdG9j
b2wKKworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHN0YXJ0VVJMU2NoZW1l
VGFzazooaWQgPFdLVVJMU2NoZW1lVGFzaz4pdXJsU2NoZW1lVGFzaworeworICAgIGlmICghX2Nh
Y2hlZEJ1bmRsZSkKKyAgICAgICAgX2NhY2hlZEJ1bmRsZSA9IFtOU0J1bmRsZSBtYWluQnVuZGxl
XTsKKworICAgIGlmICghX2ZpbGVMb2FkT3BlcmF0aW9ucykKKyAgICAgICAgX2ZpbGVMb2FkT3Bl
cmF0aW9ucyA9IGFkb3B0TlMoW1tOU01hcFRhYmxlIGFsbG9jXSBpbml0V2l0aEtleU9wdGlvbnM6
TlNQb2ludGVyRnVuY3Rpb25zU3Ryb25nTWVtb3J5IHZhbHVlT3B0aW9uczpOU1BvaW50ZXJGdW5j
dGlvbnNTdHJvbmdNZW1vcnkgY2FwYWNpdHk6NV0pOworCisgICAgaWYgKCFfb3BlcmF0aW9uUXVl
dWUpIHsKKyAgICAgICAgX29wZXJhdGlvblF1ZXVlID0gYWRvcHROUyhbW05TT3BlcmF0aW9uUXVl
dWUgYWxsb2NdIGluaXRdKTsKKyAgICAgICAgX29wZXJhdGlvblF1ZXVlLmdldCgpLnVuZGVybHlp
bmdRdWV1ZSA9IGRpc3BhdGNoX2dldF9nbG9iYWxfcXVldWUoUU9TX0NMQVNTX1VTRVJfSU5URVJB
Q1RJVkUsIDApOworICAgICAgICBfb3BlcmF0aW9uUXVldWUuZ2V0KCkucXVhbGl0eU9mU2Vydmlj
ZSA9IE5TT3BlcmF0aW9uUXVhbGl0eU9mU2VydmljZVVzZXJJbnRlcmFjdGl2ZTsKKworICAgICAg
ICAvLyBUaGUgZGVmYXVsdCB2YWx1ZSAoTlNPcGVyYXRpb25RdWV1ZURlZmF1bHRNYXhDb25jdXJy
ZW50T3BlcmF0aW9uQ291bnQpIHJlc3VsdHMgaW4gYSBsYXJnZSBudW1iZXIgb2YgdGhyZWFkcwor
ICAgICAgICAvLyB0aGF0IGNhbiBleGNlZWQgdGhlIHNvZnQgbGltaXQgaWYgdHdvIFdlYiBJbnNw
ZWN0b3IgaW5zdGFuY2VzIGFyZSBiZWluZyBsb2FkZWQgc2ltdWx0YW5lb3VzbHkuCisgICAgICAg
IF9vcGVyYXRpb25RdWV1ZS5nZXQoKS5tYXhDb25jdXJyZW50T3BlcmF0aW9uQ291bnQgPSA0Owor
ICAgIH0KKworICAgIE5TQmxvY2tPcGVyYXRpb24gKm9wZXJhdGlvbiA9IFtOU0Jsb2NrT3BlcmF0
aW9uIGJsb2NrT3BlcmF0aW9uV2l0aEJsb2NrOl57CisgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRp
c3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAgICAgICAgICBbX2ZpbGVMb2FkT3BlcmF0
aW9ucyByZW1vdmVPYmplY3RGb3JLZXk6dXJsU2NoZW1lVGFza107CisgICAgICAgIH0pOworCisg
ICAgICAgIE5TVVJMICpyZXF1ZXN0VVJMID0gdXJsU2NoZW1lVGFzay5yZXF1ZXN0LlVSTDsKKyAg
ICAgICAgTlNVUkwgKmZpbGVVUkxGb3JSZXF1ZXN0ID0gW19jYWNoZWRCdW5kbGUgVVJMRm9yUmVz
b3VyY2U6cmVxdWVzdFVSTC5yZWxhdGl2ZVBhdGggd2l0aEV4dGVuc2lvbjpAIiIgc3ViZGlyZWN0
b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKKyAgICAgICAgaWYgKCFmaWxlVVJMRm9y
UmVxdWVzdCkgeworICAgICAgICAgICAgW3VybFNjaGVtZVRhc2sgZGlkRmFpbFdpdGhFcnJvcjpb
TlNFcnJvciBlcnJvcldpdGhEb21haW46TlNDb2NvYUVycm9yRG9tYWluIGNvZGU6TlNVUkxFcnJv
ckZpbGVEb2VzTm90RXhpc3QgdXNlckluZm86bmlsXV07CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKworICAgICAgICBOU0Vycm9yICpyZWFkRXJyb3I7CisgICAgICAgIE5TRGF0YSAq
ZmlsZURhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZlVSTDpmaWxlVVJMRm9yUmVxdWVz
dCBvcHRpb25zOjAgZXJyb3I6JnJlYWRFcnJvcl07CisgICAgICAgIGlmICghZmlsZURhdGEpIHsK
KyAgICAgICAgICAgIFt1cmxTY2hlbWVUYXNrIGRpZEZhaWxXaXRoRXJyb3I6W05TRXJyb3IgZXJy
b3JXaXRoRG9tYWluOk5TQ29jb2FFcnJvckRvbWFpbiBjb2RlOk5TVVJMRXJyb3JSZXNvdXJjZVVu
YXZhaWxhYmxlIHVzZXJJbmZvOkB7CisgICAgICAgICAgICAgICAgTlNVbmRlcmx5aW5nRXJyb3JL
ZXk6IHJlYWRFcnJvciwKKyAgICAgICAgICAgIH1dXTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCisgICAgICAgIE5TU3RyaW5nICptaW1lVHlwZSA9IFdlYkNvcmU6Ok1JTUVUeXBl
UmVnaXN0cnk6Om1pbWVUeXBlRm9yRXh0ZW5zaW9uKGZpbGVVUkxGb3JSZXF1ZXN0LnBhdGhFeHRl
bnNpb24pOworICAgICAgICBpZiAoIW1pbWVUeXBlKQorICAgICAgICAgICAgbWltZVR5cGUgPSBA
ImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSI7CisKKyAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJs
ZURpY3Rpb25hcnk+IGhlYWRlckZpZWxkcyA9IGFkb3B0TlMoQHsKKyAgICAgICAgICAgIEAiQWNj
ZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luIjogQCIqIiwKKyAgICAgICAgICAgIEAiQ29udGVudC1M
ZW5ndGgiOiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiV6dSIsIChzaXplX3QpZmlsZURh
dGEubGVuZ3RoXSwKKyAgICAgICAgICAgIEAiQ29udGVudC1UeXBlIjogbWltZVR5cGUsCisgICAg
ICAgIH0ubXV0YWJsZUNvcHkpOworCisgICAgICAgIFJldGFpblB0cjxOU0hUVFBVUkxSZXNwb25z
ZT4gdXJsUmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNIVFRQVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRX
aXRoVVJMOnVybFNjaGVtZVRhc2sucmVxdWVzdC5VUkwgc3RhdHVzQ29kZToyMDAgSFRUUFZlcnNp
b246bmlsIGhlYWRlckZpZWxkczpoZWFkZXJGaWVsZHMuZ2V0KCldKTsKKyAgICAgICAgW3VybFNj
aGVtZVRhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOnVybFJlc3BvbnNlLmdldCgpXTsKKyAgICAgICAg
W3VybFNjaGVtZVRhc2sgZGlkUmVjZWl2ZURhdGE6ZmlsZURhdGFdOworICAgICAgICBbdXJsU2No
ZW1lVGFzayBkaWRGaW5pc2hdOworICAgIH1dOworICAgIAorICAgIFtfZmlsZUxvYWRPcGVyYXRp
b25zIHNldE9iamVjdDpvcGVyYXRpb24gZm9yS2V5OnVybFNjaGVtZVRhc2tdOworICAgIFtfb3Bl
cmF0aW9uUXVldWUgYWRkT3BlcmF0aW9uOm9wZXJhdGlvbl07Cit9CisKKy0gKHZvaWQpd2ViVmll
dzooV0tXZWJWaWV3ICopd2ViVmlldyBzdG9wVVJMU2NoZW1lVGFzazooaWQgPFdLVVJMU2NoZW1l
VGFzaz4pdXJsU2NoZW1lVGFzaworeworICAgIC8vIEVuc3VyZSB0aGF0IGFsbCBibG9ja3Mgd2l0
aCBwZW5kaW5nIHJlbW92YWxzIGFyZSBkaXNwYXRjaGVkIGJlZm9yZSBkb2luZyBhIG1hcCBsb29r
dXAuCisgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAg
ICAgICAgaWYgKE5TT3BlcmF0aW9uICpvcGVyYXRpb24gPSBbX2ZpbGVMb2FkT3BlcmF0aW9ucyBv
YmplY3RGb3JLZXk6dXJsU2NoZW1lVGFza10pIHsKKyAgICAgICAgICAgIFtvcGVyYXRpb24gY2Fu
Y2VsXTsKKyAgICAgICAgICAgIFtfZmlsZUxvYWRPcGVyYXRpb25zIHJlbW92ZU9iamVjdEZvcktl
eTp1cmxTY2hlbWVUYXNrXTsKKyAgICAgICAgfQorICAgIH0pOworfQorCitAZW5kCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0gYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KaW5kZXggNDI5NDBhZTQxZmI2ZTg0
OTI4OGU5NzRlNDI1NzY0YzdkMDdiZWRmMS4uYzAyZTBkZjQyNjcwNjgzZGI1N2YwMzkwYTFjNjRl
Nzc3ZmE1OGY4YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tX
ZWJWaWV3Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5t
bQpAQCAtMzMsNiArMzMsNyBAQAogCiAjaW1wb3J0IDxXZWJLaXQvV0tDb250ZW50V29ybGQuaD4K
ICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oPgorI2ltcG9y
dCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nLmg+CiAjaW1wb3J0IDxXZWJLaXQv
V2ViS2l0UHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L19XS0FjdGl2YXRlZEVsZW1lbnRJbmZv
Lmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmg+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>