<?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>210616</bug_id>
          
          <creation_ts>2020-04-16 12:15:10 -0700</creation_ts>
          <short_desc>[iOS] Deny iokit open access to graphics related classes</short_desc>
          <delta_ts>2021-04-23 15:45:42 -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>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=219012</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=225004</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="Per Arne Vollan">pvollan</reporter>
          <assigned_to name="Per Arne Vollan">pvollan</assigned_to>
          <cc>benjamin</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1642393</commentid>
    <comment_count>0</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2020-04-16 12:15:10 -0700</bug_when>
    <thetext>Deny iokit open access to graphics related classes in the WebContent process on iOS, but issue extensions for these for some devices which still need access to them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642429</commentid>
    <comment_count>1</comment_count>
      <attachid>396696</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2020-04-16 14:07:21 -0700</bug_when>
    <thetext>Created attachment 396696
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642439</commentid>
    <comment_count>2</comment_count>
      <attachid>396702</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2020-04-16 15:03:49 -0700</bug_when>
    <thetext>Created attachment 396702
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642452</commentid>
    <comment_count>3</comment_count>
      <attachid>396707</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2020-04-16 15:23:07 -0700</bug_when>
    <thetext>Created attachment 396707
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642464</commentid>
    <comment_count>4</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2020-04-16 15:43:24 -0700</bug_when>
    <thetext>rdar://problem/61897550</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642465</commentid>
    <comment_count>5</comment_count>
      <attachid>396707</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-16 15:47:06 -0700</bug_when>
    <thetext>Comment on attachment 396707
Patch

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

&gt; Source/WebCore/platform/cocoa/AGXCompilerService.cpp:48
&gt; +        if (uname(&amp;systemInfo))
&gt; +            return false;

Is this the behavior we want, to return a potentially incorrect &quot;false&quot; result and to also repeatedly call uname every time this function is called?

&gt; Source/WebCore/platform/cocoa/AGXCompilerService.cpp:53
&gt; +        if (!strcmp(machine, &quot;iPad5,1&quot;) || !strcmp(machine, &quot;iPad5,2&quot;) || !strcmp(machine, &quot;iPad5,3&quot;) || !strcmp(machine, &quot;iPad5,4&quot;))
&gt; +            hasAGXCompilerService = true;
&gt; +        else
&gt; +            hasAGXCompilerService = false;

Apparently this code was just moved, not new, but we want this to be false for all future hardware, including future iPads?

&gt; Source/WebCore/testing/Internals.mm:127
&gt; +        RELEASE_ASSERT_NOT_REACHED();

Seems peculiar to put RELEASE_ASSERT in an internals function, since they are present only for testing.

&gt; Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm:378
&gt; +        static const char* ioKitClasses[] = {

One more const here would be good, after the *. Or constexpr before the whole thing.

&gt; Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm:388
&gt; +            &quot;AGXCommandQueue&quot;,
&gt; +            &quot;AGXDevice&quot;,
&gt; +            &quot;AGXSharedUserClient&quot;,
&gt; +            &quot;IOAccelContext&quot;,
&gt; +            &quot;IOAccelDevice&quot;,
&gt; +            &quot;IOAccelSharedUserClient&quot;,
&gt; +            &quot;IOAccelSubmitter2&quot;,
&gt; +            &quot;IOAccelContext2&quot;,
&gt; +            &quot;IOAccelDevice2&quot;,
&gt; +            &quot;IOAccelSharedUserClient2&quot;

Why not sort alphabetically instead of having them almost sorted?

&gt; Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm:300
&gt; +    for (size_t i = 0, size = parameters.dynamicIOKitExtensionHandles.size(); i &lt; size; ++i)

Modern for loop would be good here.

    for (auto&amp; handle : parameters.dynamicIOKitExtensionHandles)

&gt; Tools/TestWebKitAPI/Tests/WebKit/AGXCompilerService.mm:37
&gt; +    WKRetainPtr&lt;WKContextRef&gt; context = adoptWK(TestWebKitAPI::Util::createContextForInjectedBundleTest(&quot;InternalsInjectedBundleTest&quot;));

auto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642490</commentid>
    <comment_count>6</comment_count>
      <attachid>396717</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2020-04-16 16:21:23 -0700</bug_when>
    <thetext>Created attachment 396717
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642495</commentid>
    <comment_count>7</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2020-04-16 16:23:34 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #5)
&gt; Comment on attachment 396707 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=396707&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/cocoa/AGXCompilerService.cpp:48
&gt; &gt; +        if (uname(&amp;systemInfo))
&gt; &gt; +            return false;
&gt; 
&gt; Is this the behavior we want, to return a potentially incorrect &quot;false&quot;
&gt; result and to also repeatedly call uname every time this function is called?
&gt; 
&gt; &gt; Source/WebCore/platform/cocoa/AGXCompilerService.cpp:53
&gt; &gt; +        if (!strcmp(machine, &quot;iPad5,1&quot;) || !strcmp(machine, &quot;iPad5,2&quot;) || !strcmp(machine, &quot;iPad5,3&quot;) || !strcmp(machine, &quot;iPad5,4&quot;))
&gt; &gt; +            hasAGXCompilerService = true;
&gt; &gt; +        else
&gt; &gt; +            hasAGXCompilerService = false;
&gt; 
&gt; Apparently this code was just moved, not new, but we want this to be false
&gt; for all future hardware, including future iPads?
&gt; 

Yes, I believe that this will be the case going forward.

&gt; &gt; Source/WebCore/testing/Internals.mm:127
&gt; &gt; +        RELEASE_ASSERT_NOT_REACHED();
&gt; 
&gt; Seems peculiar to put RELEASE_ASSERT in an internals function, since they
&gt; are present only for testing.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm:378
&gt; &gt; +        static const char* ioKitClasses[] = {
&gt; 
&gt; One more const here would be good, after the *. Or constexpr before the
&gt; whole thing.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm:388
&gt; &gt; +            &quot;AGXCommandQueue&quot;,
&gt; &gt; +            &quot;AGXDevice&quot;,
&gt; &gt; +            &quot;AGXSharedUserClient&quot;,
&gt; &gt; +            &quot;IOAccelContext&quot;,
&gt; &gt; +            &quot;IOAccelDevice&quot;,
&gt; &gt; +            &quot;IOAccelSharedUserClient&quot;,
&gt; &gt; +            &quot;IOAccelSubmitter2&quot;,
&gt; &gt; +            &quot;IOAccelContext2&quot;,
&gt; &gt; +            &quot;IOAccelDevice2&quot;,
&gt; &gt; +            &quot;IOAccelSharedUserClient2&quot;
&gt; 
&gt; Why not sort alphabetically instead of having them almost sorted?
&gt; 
&gt; &gt; Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm:300
&gt; &gt; +    for (size_t i = 0, size = parameters.dynamicIOKitExtensionHandles.size(); i &lt; size; ++i)
&gt; 
&gt; Modern for loop would be good here.
&gt; 
&gt;     for (auto&amp; handle : parameters.dynamicIOKitExtensionHandles)
&gt; 
&gt; &gt; Tools/TestWebKitAPI/Tests/WebKit/AGXCompilerService.mm:37
&gt; &gt; +    WKRetainPtr&lt;WKContextRef&gt; context = adoptWK(TestWebKitAPI::Util::createContextForInjectedBundleTest(&quot;InternalsInjectedBundleTest&quot;));
&gt; 
&gt; auto

Thanks for reviewing! The latest patch addresses all of the issues above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642512</commentid>
    <comment_count>8</comment_count>
      <attachid>396724</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2020-04-16 16:59:00 -0700</bug_when>
    <thetext>Created attachment 396724
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642666</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-04-17 07:40:13 -0700</bug_when>
    <thetext>Committed r260247: &lt;https://trac.webkit.org/changeset/260247&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 396724.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653150</commentid>
    <comment_count>10</comment_count>
      <attachid>396707</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-05-15 12:58:18 -0700</bug_when>
    <thetext>Comment on attachment 396707
Patch

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

&gt; Tools/TestWebKitAPI/Tests/WebKit/AGXCompilerService.mm:28
&gt; +#if WK_HAVE_C_SPI &amp;&amp; PLATFORM(IOS)

This test is never run: WK_HAVE_C_SPI is only defined when building on Mac.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653151</commentid>
    <comment_count>11</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2020-05-15 13:05:20 -0700</bug_when>
    <thetext>(In reply to Daniel Bates from comment #10)
&gt; Comment on attachment 396707 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=396707&amp;action=review
&gt; 
&gt; &gt; Tools/TestWebKitAPI/Tests/WebKit/AGXCompilerService.mm:28
&gt; &gt; +#if WK_HAVE_C_SPI &amp;&amp; PLATFORM(IOS)
&gt; 
&gt; This test is never run: WK_HAVE_C_SPI is only defined when building on Mac.

Ah, good point! I will look into making this test run on iOS.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396696</attachid>
            <date>2020-04-16 14:07:21 -0700</date>
            <delta_ts>2020-04-16 15:03:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210616-20200416140721.patch</filename>
            <type>text/plain</type>
            <size>27797</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjAyMTQpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIwLTA0LTE2ICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBEZW55IGlva2l0IG9wZW4gYWNjZXNz
IHRvIGdyYXBoaWNzIHJlbGF0ZWQgY2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwNjE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJLmg6CisKIDIw
MjAtMDQtMTYgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIENs
ZWFuIHVwIFZlY3RvckNvY29hIGNyZWF0ZU5TQXJyYXkgb3ZlcmxvYWRzIGFuZCBhZGQgZG9jdW1l
bnRhdGlvbiBmb3IgY3JlYXRlTlNBcnJheSB0YWtpbmcgYSBtYXAgZnVuY3Rpb24KSW5kZXg6IFNv
dXJjZS9XVEYvd3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XVEYvd3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oCShyZXZpc2lvbiAyNjAyMTQpCisrKyBT
b3VyY2UvV1RGL3d0Zi9zcGkvZGFyd2luL1NhbmRib3hTUEkuaAkod29ya2luZyBjb3B5KQpAQCAt
MzYsNiArMzYsNyBAQCBlbnVtIHNhbmRib3hfZmlsdGVyX3R5cGUgewogICAgIFNBTkRCT1hfRklM
VEVSX05PTkUsCiAgICAgU0FOREJPWF9GSUxURVJfR0xPQkFMX05BTUUgPSAyLAogICAgIFNBTkRC
T1hfRklMVEVSX1hQQ19TRVJWSUNFX05BTUUgPSAxMiwKKyAgICBTQU5EQk9YX0ZJTFRFUl9JT0tJ
VF9DT05ORUNUSU9OLAogfTsKIAogI2RlZmluZSBTQU5EQk9YX05BTUVEX0VYVEVSTkFMIDB4MDAw
MwpAQCAtODQsNiArODUsOSBAQCBzYW5kYm94X3Byb2ZpbGVfdCBzYW5kYm94X2NvbXBpbGVfc3Ry
aW5nCiB2b2lkIHNhbmRib3hfZnJlZV9wcm9maWxlKHNhbmRib3hfcHJvZmlsZV90KTsKIGludCBz
YW5kYm94X2FwcGx5KHNhbmRib3hfcHJvZmlsZV90KTsKIAorY2hhciAqc2FuZGJveF9leHRlbnNp
b25faXNzdWVfaW9raXRfcmVnaXN0cnlfZW50cnlfY2xhc3NfdG9fcHJvY2Vzcyhjb25zdCBjaGFy
ICpleHRlbnNpb25fY2xhc3MsIGNvbnN0IGNoYXIgKnJlZ2lzdHJ5X2VudHJ5X2NsYXNzLCB1aW50
MzJfdCBmbGFncywgYXVkaXRfdG9rZW5fdCk7CitjaGFyICpzYW5kYm94X2V4dGVuc2lvbl9pc3N1
ZV9pb2tpdF9yZWdpc3RyeV9lbnRyeV9jbGFzcyhjb25zdCBjaGFyICpleHRlbnNpb25fY2xhc3Ms
IGNvbnN0IGNoYXIgKnJlZ2lzdHJ5X2VudHJ5X2NsYXNzLCB1aW50MzJfdCBmbGFncyk7CisKIFdU
Rl9FWFRFUk5fQ19FTkQKIAogI2VuZGlmIC8vIE9TKERBUldJTikKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2MDIxNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDI5IEBACisyMDIwLTA0LTE2ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFu
QGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBEZW55IGlva2l0IG9wZW4gYWNjZXNzIHRvIGdy
YXBoaWNzIHJlbGF0ZWQgY2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjEwNjE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgRGVueSBpb2tpdCBvcGVuIGFjY2VzcyB0byBncmFwaGljcyByZWxhdGVk
IGNsYXNzZXMgaW4gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBvbiBpT1MsIGJ1dCBpc3N1ZSBleHRl
bnNpb25zCisgICAgICAgIGZvciB0aGVzZSBmb3Igc29tZSBkZXZpY2VzIHdoaWNoIHN0aWxsIG5l
ZWQgYWNjZXNzIHRvIHRoZW0uCisKKyAgICAgICAgVGVzdDogZmFzdC9zYW5kYm94L2lvcy9zYW5k
Ym94LWlva2l0LW9wZW4uaHRtbAorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL0FHWENvbXBpbGVyU2VydmljZS5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6c2V0RGV2aWNlSGFzQUdYQ29tcGlsZXJTZXJ2
aWNlRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpkZXZpY2VIYXNBR1hDb21waWxlclNl
cnZpY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL0FHWENvbXBpbGVyU2VydmljZS5oOiBB
ZGRlZC4KKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnRlcm5hbHM6Omhhc1NhbmRib3hJT0tpdE9wZW5BY2Nlc3NUb0NsYXNzKToKKyAgICAgICAg
KFdlYkNvcmU6OkludGVybmFsczo6c2V0RGV2aWNlSGFzQUdYQ29tcGlsZXJTZXJ2aWNlKToKKyAg
ICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxz
LmlkbDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OkludGVybmFsczo6aGFzU2FuZGJveElPS2l0T3BlbkFjY2Vzc1RvQ2xhc3MpOgorICAgICAgICAo
V2ViQ29yZTo6SW50ZXJuYWxzOjpzZXREZXZpY2VIYXNBR1hDb21waWxlclNlcnZpY2UpOgorCiAy
MDIwLTA0LTE2ICBDbGF1ZGlvIFNhYXZlZHJhICA8Y3NhYXZlZHJhQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW0dUS10gRGVwcmVjYXRpb24tZ3VhcmRzIGZpeGVzCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNjAy
MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTM5OTcsNiArMzk5Nyw4IEBACiAJCUMxNjkyREQyMjNEMjNBQkQw
MDZFODhGNyAvKiBTeXN0ZW1CYXR0ZXJ5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQzE2OTJERDEyM0QyM0FCRDAwNkU4OEY3IC8qIFN5c3RlbUJhdHRl
cnkubW0gKi87IH07CiAJCUMxNjkyREQ1MjNEMjNFMDgwMDZFODhGNyAvKiBTeXN0ZW1CYXR0ZXJ5
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTY5MkRE
NDIzRDIzQUUwMDA2RTg4RjcgLyogU3lzdGVtQmF0dGVyeS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMxRTFEMjM2MjAzREYxNTQwMDU4NDY2NSAv
KiBTY3JlZW5Qcm9wZXJ0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDMUUxRDIzNTIwM0RGMTU0MDA1ODQ2NjUgLyogU2NyZWVuUHJvcGVydGllcy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUMxRjdC
NzMxMjQ0OEYyQUMwMDEyNDU1NyAvKiBBR1hDb21waWxlclNlcnZpY2UuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzFGN0I3MkYyNDQ4RjJBQzAwMTI0
NTU3IC8qIEFHWENvbXBpbGVyU2VydmljZS5jcHAgKi87IH07CisJCUMxRjdCNzMyMjQ0OEYyQUMw
MDEyNDU1NyAvKiBBR1hDb21waWxlclNlcnZpY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxRjdCNzMwMjQ0OEYyQUMwMDEyNDU1NyAvKiBBR1hDb21w
aWxlclNlcnZpY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlDMjAxNUMwQTFCRTZGRUIyMDA4MjIzODkgLyogRm9udFZhcmlhbnRCdWlsZGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjAxNUMwOTFC
RTZGRTJDMDA4MjIzODkgLyogRm9udFZhcmlhbnRCdWlsZGVyLmggKi87IH07CiAJCUMyMURGMkVB
MUQ5RTRFOTkwMEY1QjI0QyAvKiBDU1NGb250VmFyaWF0aW9uVmFsdWUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyMURGMkU4MUQ5RTRFOTkwMEY1QjI0
QyAvKiBDU1NGb250VmFyaWF0aW9uVmFsdWUuaCAqLzsgfTsKIAkJQzI0NThFNjMxRkU4OTdCMDAw
NTk0NzU5IC8qIEZvbnRDYWNoZUNvcmVUZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDMjQ1OEU2MTFGRTg5NzlFMDA1OTQ3NTkgLyogRm9udENhY2hl
Q29yZVRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtMTM2MDcsNiArMTM2MDksOCBAQAogCQlDMTY5MkRENDIzRDIzQUUwMDA2RTg4RjcgLyog
U3lzdGVtQmF0dGVyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTeXN0ZW1CYXR0ZXJ5Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxOEZCNTE4MjQyRjkzODIwMDdFOTg3NSAvKiBTbGVlcERp
c2FibGVyQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNsZWVwRGlzYWJsZXJDbGllbnQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMUUxRDIzNTIwM0RGMTU0MDA1ODQ2
NjUgLyogU2NyZWVuUHJvcGVydGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JlZW5Qcm9wZXJ0aWVz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMxRjdCNzJGMjQ0OEYyQUMwMDEyNDU1
NyAvKiBBR1hDb21waWxlclNlcnZpY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQUdYQ29tcGls
ZXJTZXJ2aWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzFGN0I3MzAyNDQ4
RjJBQzAwMTI0NTU3IC8qIEFHWENvbXBpbGVyU2VydmljZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBR1hD
b21waWxlclNlcnZpY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzIwMTVDMDkx
QkU2RkUyQzAwODIyMzg5IC8qIEZvbnRWYXJpYW50QnVpbGRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBG
b250VmFyaWFudEJ1aWxkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzIwRjRG
NjQyMURGQkU1QzAwNzBDNDVBIC8qIFdITFNMVHlwZVJlZmVyZW5jZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXSExTTFR5cGVSZWZlcmVuY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDMjBGNEY2NjIxREZGMjM2MDA3MEM0NUEgLyogV0hMU0xJbnRlZ2VyTGl0ZXJhbC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTEludGVnZXJMaXRlcmFsLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTIzMjg3LDYgKzIzMjkxLDggQEAKIAkJQTVDOTc0Q0UxMTQ4NUZE
QTAwNjZGMkFCIC8qIGNvY29hICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKKwkJCQlDMUY3QjcyRjI0NDhGMkFDMDAxMjQ1NTcgLyogQUdYQ29tcGlsZXJTZXJ2aWNl
LmNwcCAqLywKKwkJCQlDMUY3QjczMDI0NDhGMkFDMDAxMjQ1NTcgLyogQUdYQ29tcGlsZXJTZXJ2
aWNlLmggKi8sCiAJCQkJQTE0MDkwRkExQUE1MUUxRDAwOTExOTFBIC8qIENvbnRlbnRGaWx0ZXJV
bmJsb2NrSGFuZGxlckNvY29hLm1tICovLAogCQkJCUNEN0QzMzQ1MUM3QTE2QkYwMDA0MTI5MyAv
KiBDb3JlVmlkZW9Tb2Z0TGluay5jcHAgKi8sCiAJCQkJQ0Q3RDMzNDYxQzdBMTZCRjAwMDQxMjkz
IC8qIENvcmVWaWRlb1NvZnRMaW5rLmggKi8sCkBAIC0yOTM2MSw2ICsyOTM2Nyw3IEBACiAJCQkJ
QTE2NzdFMEUyMTNFMDJBMDAwQTA4QzM0IC8qIEFkZHJlc3NFcnJvcnMuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDRjdFNDkxMTM3Q0Q3QzcwMDFEREFFNyAvKiBBZGp1c3RWaWV3U2l6ZU9yTm90Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4NEQwQzQwNjExMTVGMUVBMDAxOEFBMzQgLyogQWZmaW5lVHJh
bnNmb3JtLmggaW4gSGVhZGVycyAqLywKKwkJCQlDMUY3QjczMjI0NDhGMkFDMDAxMjQ1NTcgLyog
QUdYQ29tcGlsZXJTZXJ2aWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0JCNUM4ODFENUQ2RjQ1
MDA1QTcxRjQgLyogQWxsRGVzY2VuZGFudHNDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk3Mjk5QkM2NzIzRDZBNTMyMDBDQzY4ODMgLyogQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQ0VEQTEyRDcxNTJDQTFDQjAwRDlFMDhEIC8qIEFsdGVybmF0aXZl
VGV4dENsaWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNDAwMyw2ICszNDAxMCw3IEBACiAJCQli
dWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCiAJCQkJQTk3ODdDQjQx
RjVGNUM2NjAwQzU1MUM2IC8qIEFjY2Vzc2liaWxpdHlNZWRpYU9iamVjdC5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlDMUY3QjczMTI0NDhGMkFDMDAxMjQ1NTcgLyogQUdYQ29tcGlsZXJTZXJ2aWNl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEMEVFRTBFMTQ3NDNGMzkwMDNFQUZBMiAvKiBBdWRp
b0Rlc3RpbmF0aW9uSU9TLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNENTU5NjkxMTQ3NUI2Nzgw
MDFEMEJEMCAvKiBBdWRpb0ZpbGVSZWFkZXJJT1MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RB
Nzk4MjcxNzBBMjc5MTAwRDQ1QzU1IC8qIEF1ZGlvU2Vzc2lvbklPUy5tbSBpbiBTb3VyY2VzICov
LApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQUdYQ29tcGlsZXJTZXJ2aWNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9BR1hDb21w
aWxlclNlcnZpY2UuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL0FHWENvbXBpbGVyU2VydmljZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1
OCBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiBhcmUgbWV0OgorKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQUdYQ29tcGlsZXJTZXJ2aWNlLmgiCisKKyNpZiBQ
TEFURk9STShJT1MpCisKKyNpbmNsdWRlIDxzeXMvdXRzbmFtZS5oPgorI2luY2x1ZGUgPHd0Zi9P
cHRpb25hbC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBPcHRpb25hbDxib29s
PiBoYXNBR1hDb21waWxlclNlcnZpY2U7CisKK3ZvaWQgc2V0RGV2aWNlSGFzQUdYQ29tcGlsZXJT
ZXJ2aWNlRm9yVGVzdGluZygpCit7CisgICAgaGFzQUdYQ29tcGlsZXJTZXJ2aWNlID0gdHJ1ZTsK
K30KKworYm9vbCBkZXZpY2VIYXNBR1hDb21waWxlclNlcnZpY2UoKQoreworICAgIGlmICghaGFz
QUdYQ29tcGlsZXJTZXJ2aWNlKSB7CisgICAgICAgIHN0cnVjdCB1dHNuYW1lIHN5c3RlbUluZm87
CisgICAgICAgIGlmICh1bmFtZSgmc3lzdGVtSW5mbykpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIGNvbnN0IGNoYXIqIG1hY2hpbmUgPSBzeXN0ZW1JbmZvLm1hY2hpbmU7Cisg
ICAgICAgIGlmICghc3RyY21wKG1hY2hpbmUsICJpUGFkNSwxIikgfHwgIXN0cmNtcChtYWNoaW5l
LCAiaVBhZDUsMiIpIHx8ICFzdHJjbXAobWFjaGluZSwgImlQYWQ1LDMiKSB8fCAhc3RyY21wKG1h
Y2hpbmUsICJpUGFkNSw0IikpCisgICAgICAgICAgICBoYXNBR1hDb21waWxlclNlcnZpY2UgPSB0
cnVlOworICAgIH0KKyAgICByZXR1cm4gKmhhc0FHWENvbXBpbGVyU2VydmljZTsKK30KKworfQor
CisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0FHWENvbXBpbGVy
U2VydmljZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0FH
WENvbXBpbGVyU2VydmljZS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL0FHWENvbXBpbGVyU2VydmljZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MzMgQEAKKy8qCisqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyogYXJlIG1ldDoKKyogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisqCisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI3By
YWdtYSBvbmNlCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV0VCQ09SRV9FWFBPUlQgYm9vbCBk
ZXZpY2VIYXNBR1hDb21waWxlclNlcnZpY2UoKTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RGV2
aWNlSGFzQUdYQ29tcGlsZXJTZXJ2aWNlRm9yVGVzdGluZygpOworCit9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCShyZXZpc2lvbiAyNjAyMTQpCisrKyBTb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2MDMsNiArNTYw
MywxNSBAQCBib29sIEludGVybmFsczo6aXNSZW1vdGVVSUFwcEZvckFjY2Vzc2liCiB7CiAgICAg
cmV0dXJuIGZhbHNlOwogfQorCitib29sIEludGVybmFsczo6aGFzU2FuZGJveElPS2l0T3BlbkFj
Y2Vzc1RvQ2xhc3MoY29uc3QgU3RyaW5nJiBwcm9jZXNzLCBjb25zdCBTdHJpbmcmIGlvS2l0Q2xh
c3MpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEludGVybmFsczo6c2V0RGV2aWNl
SGFzQUdYQ29tcGlsZXJTZXJ2aWNlKCkKK3sKK30KICNlbmRpZgogCiBTdHJpbmcgSW50ZXJuYWxz
OjptZWRpYU1JTUVUeXBlRm9yRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCShyZXZpc2lvbiAyNjAyMTQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCSh3b3JraW5nIGNvcHkpCkBAIC05NzQsNiAr
OTc0LDkgQEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNTYW5kYm94TWFjaExvb2t1cEFjY2Vzc1Rv
R2xvYmFsTmFtZShjb25zdCBTdHJpbmcmIHByb2Nlc3MsIGNvbnN0IFN0cmluZyYgc2VydmljZSk7
CiAgICAgYm9vbCBoYXNTYW5kYm94TWFjaExvb2t1cEFjY2Vzc1RvWFBDU2VydmljZU5hbWUoY29u
c3QgU3RyaW5nJiBwcm9jZXNzLCBjb25zdCBTdHJpbmcmIHNlcnZpY2UpOworICAgIGJvb2wgaGFz
U2FuZGJveElPS2l0T3BlbkFjY2Vzc1RvQ2xhc3MoY29uc3QgU3RyaW5nJiBwcm9jZXNzLCBjb25z
dCBTdHJpbmcmIGlvS2l0Q2xhc3MpOworCisgICAgdm9pZCBzZXREZXZpY2VIYXNBR1hDb21waWxl
clNlcnZpY2UoKTsKIAogICAgIFN0cmluZyBoaWdobGlnaHRQc2V1ZG9FbGVtZW50Q29sb3IoY29u
c3QgU3RyaW5nJiBoaWdobGlnaHROYW1lLCBFbGVtZW50Jik7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5pZGwJKHJldmlzaW9uIDI2MDIxNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtODg1LDcgKzg4NSwxMCBA
QCBlbnVtIENvbXBvc2l0aW5nUG9saWN5IHsKIAogICAgIGJvb2xlYW4gaGFzU2FuZGJveE1hY2hM
b29rdXBBY2Nlc3NUb0dsb2JhbE5hbWUoRE9NU3RyaW5nIHByb2Nlc3MsIERPTVN0cmluZyBzZXJ2
aWNlKTsKICAgICBib29sZWFuIGhhc1NhbmRib3hNYWNoTG9va3VwQWNjZXNzVG9YUENTZXJ2aWNl
TmFtZShET01TdHJpbmcgcHJvY2VzcywgRE9NU3RyaW5nIHNlcnZpY2UpOwotICAgIAorICAgIGJv
b2xlYW4gaGFzU2FuZGJveElPS2l0T3BlbkFjY2Vzc1RvQ2xhc3MoRE9NU3RyaW5nIHByb2Nlc3Ms
IERPTVN0cmluZyBpb0tpdENsYXNzKTsKKworICAgIHZvaWQgc2V0RGV2aWNlSGFzQUdYQ29tcGls
ZXJTZXJ2aWNlKCk7CisKICAgICBET01TdHJpbmcgc3lzdGVtQ29sb3JGb3JDU1NWYWx1ZShET01T
dHJpbmcgY3NzVmFsdWUsIGJvb2xlYW4gdXNlRGFya01vZGVBcHBlYXJhbmNlLCBib29sZWFuIHVz
ZUVsZXZhdGVkVXNlckludGVyZmFjZUxldmVsKTsKICAgICBET01TdHJpbmcgZm9jdXNSaW5nQ29s
b3IoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMubW0JKHJldmlzaW9uIDI2
MDIxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkludGVy
bmFscy5oIgogCisjaW1wb3J0ICJBR1hDb21waWxlclNlcnZpY2UuaCIKICNpbXBvcnQgIkRPTVVS
TC5oIgogI2ltcG9ydCAiRGljdGlvbmFyeUxvb2t1cC5oIgogI2ltcG9ydCAiRG9jdW1lbnQuaCIK
QEAgLTM4LDYgKzM5LDcgQEAKICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlBsYXllci5oPgogI2lt
cG9ydCA8cGFsL3NwaS9jb2NvYS9OU0FjY2Vzc2liaWxpdHlTUEkuaD4KICNpbXBvcnQgPHd0Zi9j
b2NvYS9OU1VSTEV4dHJhcy5oPgorI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5o
PgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgPHBhbC9pb3MvVUlLaXRTb2Z0
TGluay5oPgpAQCAtMTE2LDQgKzExOCwyMiBAQCBib29sIEludGVybmFsczo6aXNSZW1vdGVVSUFw
cEZvckFjY2Vzc2liCiAjZW5kaWYKIH0KIAorYm9vbCBJbnRlcm5hbHM6Omhhc1NhbmRib3hJT0tp
dE9wZW5BY2Nlc3NUb0NsYXNzKGNvbnN0IFN0cmluZyYgcHJvY2VzcywgY29uc3QgU3RyaW5nJiBp
b0tpdENsYXNzKQoreworICAgIHBpZF90IHBpZDsKKyAgICBpZiAocHJvY2VzcyA9PSAiY29tLmFw
cGxlLldlYktpdC5XZWJDb250ZW50IikKKyAgICAgICAgcGlkID0gZ2V0cGlkKCk7CisgICAgZWxz
ZQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworCisgICAgcmV0dXJuICFz
YW5kYm94X2NoZWNrKHBpZCwgImlva2l0LW9wZW4iLCBzdGF0aWNfY2FzdDxlbnVtIHNhbmRib3hf
ZmlsdGVyX3R5cGU+KFNBTkRCT1hfRklMVEVSX0dMT0JBTF9OQU1FIHwgU0FOREJPWF9DSEVDS19O
T19SRVBPUlQpLCBpb0tpdENsYXNzLnV0ZjgoKS5kYXRhKCkpOworfQorCit2b2lkIEludGVybmFs
czo6c2V0RGV2aWNlSGFzQUdYQ29tcGlsZXJTZXJ2aWNlKCkKK3sKKyNpZiBQTEFURk9STShJT1Mp
CisgICAgc2V0RGV2aWNlSGFzQUdYQ29tcGlsZXJTZXJ2aWNlRm9yVGVzdGluZygpOworI2VuZGlm
Cit9CisKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjAyMjApCisrKyBTb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDIwLTA0LTE2ICBQ
ZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBEZW55
IGlva2l0IG9wZW4gYWNjZXNzIHRvIGdyYXBoaWNzIHJlbGF0ZWQgY2xhc3NlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwNjE2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGVueSBpb2tpdCBvcGVuIGFj
Y2VzcyB0byBncmFwaGljcyByZWxhdGVkIGNsYXNzZXMgaW4gdGhlIFdlYkNvbnRlbnQgcHJvY2Vz
cyBvbiBpT1MsIGJ1dCBpc3N1ZSBleHRlbnNpb25zCisgICAgICAgIGZvciB0aGVzZSBmb3Igc29t
ZSBkZXZpY2VzIHdoaWNoIHN0aWxsIG5lZWQgYWNjZXNzIHRvIHRoZW0uCisKKyAgICAgICAgKiBS
ZXNvdXJjZXMvU2FuZGJveFByb2ZpbGVzL2lvcy9jb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQu
c2I6CisgICAgICAgICogU2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbToKKyAg
ICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbkltcGw6OnNhbmRib3hFeHRlbnNpb25Gb3JU
eXBlKToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9y
SU9LaXRDbGFzc0V4dGVuc2lvbik6CisgICAgICAgICogU2hhcmVkL1NhbmRib3hFeHRlbnNpb24u
aDoKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29k
ZSk6CisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgor
ICAgICAgICAoV2ViS2l0OjpkZXZpY2VIYXNBR1hDb21waWxlclNlcnZpY2UpOiBEZWxldGVkLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKToKKwogMjAy
MC0wNC0xNiAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgRml4
IHRoZSBpT1MgYnVpbGQgd2hlbiBidWlsZGluZyB3aXRob3V0IEVESVRBQkxFX1JFR0lPTiBhZnRl
ciByMjYwMTkyCkluZGV4OiBTb3VyY2UvV2ViS2l0L1Jlc291cmNlcy9TYW5kYm94UHJvZmlsZXMv
aW9zL2NvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYgo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1Jlc291cmNlcy9TYW5kYm94UHJvZmlsZXMvaW9zL2NvbS5hcHBsZS5XZWJLaXQuV2Vi
Q29udGVudC5zYgkocmV2aXNpb24gMjYwMjE0KQorKysgU291cmNlL1dlYktpdC9SZXNvdXJjZXMv
U2FuZGJveFByb2ZpbGVzL2lvcy9jb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuc2IJKHdvcmtp
bmcgY29weSkKQEAgLTIxNCw3ICsyMTQsNyBAQAogOzs7CiAoZGVmaW5lLW9uY2UgKG9wZW5nbCkK
ICAgICA7OyBJdGVtcyBub3Qgc2VlbiBpbiB0ZXN0aW5nCi0gICAgKGFsbG93IGlva2l0LW9wZW4g
KHdpdGggcmVwb3J0KSAod2l0aCB0ZWxlbWV0cnkpCisgICAgKGRlbnkgaW9raXQtb3BlbiAod2l0
aCB0ZWxlbWV0cnkpCiAgICAgICAgICAgIChpb2tpdC1jb25uZWN0aW9uICJJT0dQVSIpCiAgICAg
ICAgICAgIChpb2tpdC11c2VyLWNsaWVudC1jbGFzcwogICAgICAgICAgICAgICAgICJBR1hDb21t
YW5kUXVldWUiCkBAIC05MjQsNiArOTI0LDI0IEBACiAgICAgKQogKQogCisoYWxsb3cgaW9raXQt
b3BlbgorICAgIChyZXF1aXJlLWFsbAorICAgICAgICAoZXh0ZW5zaW9uICJjb20uYXBwbGUud2Vi
a2l0LmV4dGVuc2lvbi5pb2tpdCIpCisgICAgICAgIChpb2tpdC11c2VyLWNsaWVudC1jbGFzcwor
ICAgICAgICAgICAgIkFHWENvbW1hbmRRdWV1ZSIKKyAgICAgICAgICAgICJBR1hEZXZpY2UiCisg
ICAgICAgICAgICAiQUdYU2hhcmVkVXNlckNsaWVudCIKKyAgICAgICAgICAgICJJT0FjY2VsQ29u
dGV4dCIKKyAgICAgICAgICAgICJJT0FjY2VsRGV2aWNlIgorICAgICAgICAgICAgIklPQWNjZWxT
aGFyZWRVc2VyQ2xpZW50IgorICAgICAgICAgICAgIklPQWNjZWxTdWJtaXR0ZXIyIgorICAgICAg
ICAgICAgIklPQWNjZWxDb250ZXh0MiIKKyAgICAgICAgICAgICJJT0FjY2VsRGV2aWNlMiIKKyAg
ICAgICAgICAgICJJT0FjY2VsU2hhcmVkVXNlckNsaWVudDIiCisgICAgICAgICkKKyAgICApCisp
CisKIChhbGxvdyBtYWNoLWxvb2t1cAogICAgIChyZXF1aXJlLWFsbAogICAgICAgICAoZXh0ZW5z
aW9uICJjb20uYXBwbGUud2Via2l0LmV4dGVuc2lvbi5tYWNoIikKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9TYW5kYm94RXh0ZW5zaW9uLmgJKHJldmlzaW9uIDI2MDIxNCkKKysrIFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDksNiAr
NDksNyBAQCBwdWJsaWM6CiAgICAgICAgIFJlYWRPbmx5LAogICAgICAgICBSZWFkV3JpdGUsCiAg
ICAgICAgIE1hY2gsCisgICAgICAgIElPS2l0LAogICAgICAgICBHZW5lcmljLAogICAgICAgICBS
ZWFkQnlQcm9jZXNzCiAgICAgfTsKQEAgLTExMyw2ICsxMTQsNyBAQCBwdWJsaWM6CiAjaWYgSEFW
RShBVURJVF9UT0tFTikKICAgICBzdGF0aWMgYm9vbCBjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3Vw
KGNvbnN0IFN0cmluZyYgc2VydmljZSwgT3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4sIEhhbmRsZSYs
IE9wdGlvblNldDxGbGFncz4gPSBGbGFnczo6RGVmYXVsdCk7CiAgICAgc3RhdGljIGJvb2wgY3Jl
YXRlSGFuZGxlRm9yUmVhZEJ5QXVkaXRUb2tlbihjb25zdCBTdHJpbmcmIHBhdGgsIGF1ZGl0X3Rv
a2VuX3QsIEhhbmRsZSYpOworICAgIHN0YXRpYyBib29sIGNyZWF0ZUhhbmRsZUZvcklPS2l0Q2xh
c3NFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBpb2tpdENsYXNzLCBPcHRpb25hbDxhdWRpdF90b2tl
bl90PiwgSGFuZGxlJiwgT3B0aW9uU2V0PEZsYWdzPiA9IEZsYWdzOjpEZWZhdWx0KTsKICNlbmRp
ZgogICAgIH5TYW5kYm94RXh0ZW5zaW9uKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCShyZXZpc2lvbiAy
NjAyMTQpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY2LDYgKzE2Niw3IEBAIHZvaWQgV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2QKICAgICBlbmNvZGVyIDw8IGRpYWdub3N0aWNzRXh0
ZW5zaW9uSGFuZGxlOwogICAgIGVuY29kZXIgPDwgcnVubmluZ2JvYXJkRXh0ZW5zaW9uSGFuZGxl
OwogICAgIGVuY29kZXIgPDwgZHluYW1pY01hY2hFeHRlbnNpb25IYW5kbGVzOworICAgIGVuY29k
ZXIgPDwgZHluYW1pY0lPS2l0RXh0ZW5zaW9uSGFuZGxlczsKICNlbmRpZgogCiAjaWYgUExBVEZP
Uk0oQ09DT0EpCkBAIC00NTcsNiArNDU4LDEyIEBAIGJvb2wgV2ViUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVyczo6ZGVjb2QKICAgICBpZiAoIWR5bmFtaWNNYWNoRXh0ZW5zaW9uSGFuZGxlcykKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHBhcmFtZXRlcnMuZHluYW1pY01hY2hFeHRlbnNpb25I
YW5kbGVzID0gV1RGTW92ZSgqZHluYW1pY01hY2hFeHRlbnNpb25IYW5kbGVzKTsKKworICAgIE9w
dGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5PiBkeW5hbWljSU9LaXRFeHRlbnNp
b25IYW5kbGVzOworICAgIGRlY29kZXIgPj4gZHluYW1pY0lPS2l0RXh0ZW5zaW9uSGFuZGxlczsK
KyAgICBpZiAoIWR5bmFtaWNJT0tpdEV4dGVuc2lvbkhhbmRsZXMpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBwYXJhbWV0ZXJzLmR5bmFtaWNJT0tpdEV4dGVuc2lvbkhhbmRsZXMgPSBXVEZN
b3ZlKCpkeW5hbWljSU9LaXRFeHRlbnNpb25IYW5kbGVzKTsKICNlbmRpZgogCiAjaWYgUExBVEZP
Uk0oQ09DT0EpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycy5oCShyZXZpc2lvbiAyNjAyMTQpCisrKyBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTIwNiw2ICsyMDYsNyBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyB7CiAg
ICAgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBkaWFnbm9zdGljc0V4dGVuc2lv
bkhhbmRsZTsKICAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IHJ1bm5pbmdi
b2FyZEV4dGVuc2lvbkhhbmRsZTsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSBk
eW5hbWljTWFjaEV4dGVuc2lvbkhhbmRsZXM7CisgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
QXJyYXkgZHluYW1pY0lPS2l0RXh0ZW5zaW9uSGFuZGxlczsKICNlbmRpZgogCiAjaWYgUExBVEZP
Uk0oQ09DT0EpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9TYW5kYm94RXh0ZW5z
aW9uQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvU2Fu
ZGJveEV4dGVuc2lvbkNvY29hLm1tCShyZXZpc2lvbiAyNjAyMTQpCisrKyBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9Db2NvYS9TYW5kYm94RXh0ZW5zaW9uQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAg
LTEwNSw2ICsxMDUsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAjZW5kaWYKKyAgICAgICAgY2FzZSBT
YW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpJT0tpdDoKKyAgICAgICAgICAgIGlmICghYXVkaXRUb2tl
bikKKyAgICAgICAgICAgICAgICByZXR1cm4gc2FuZGJveF9leHRlbnNpb25faXNzdWVfaW9raXRf
cmVnaXN0cnlfZW50cnlfY2xhc3MoImNvbS5hcHBsZS53ZWJraXQuZXh0ZW5zaW9uLmlva2l0Il9z
LCBwYXRoLCBleHRlbnNpb25GbGFncyk7CisgICAgICAgICAgICByZXR1cm4gc2FuZGJveF9leHRl
bnNpb25faXNzdWVfaW9raXRfcmVnaXN0cnlfZW50cnlfY2xhc3NfdG9fcHJvY2VzcygiY29tLmFw
cGxlLndlYmtpdC5leHRlbnNpb24uaW9raXQiX3MsIHBhdGgsIGV4dGVuc2lvbkZsYWdzLCAqYXVk
aXRUb2tlbik7CiAgICAgICAgIGNhc2UgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6R2VuZXJpYzoK
ICAgICAgICAgICAgIHJldHVybiBzYW5kYm94X2V4dGVuc2lvbl9pc3N1ZV9nZW5lcmljKHBhdGgs
IGV4dGVuc2lvbkZsYWdzKTsKICAgICAgICAgY2FzZSBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpS
ZWFkQnlQcm9jZXNzOgpAQCAtMzY2LDYgKzM3MCwxOSBAQCBib29sIFNhbmRib3hFeHRlbnNpb246
OmNyZWF0ZUhhbmRsZUZvclJlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgU2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9ySU9LaXRDbGFzc0V4dGVuc2lvbihjb25zdCBTdHJpbmcm
IGlvS2l0Q2xhc3MsIE9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IGF1ZGl0VG9rZW4sIEhhbmRsZSYg
aGFuZGxlLCBPcHRpb25TZXQ8RmxhZ3M+IGZsYWdzKQoreworICAgIEFTU0VSVCghaGFuZGxlLm1f
c2FuZGJveEV4dGVuc2lvbik7CisKKyAgICBoYW5kbGUubV9zYW5kYm94RXh0ZW5zaW9uID0gU2Fu
ZGJveEV4dGVuc2lvbkltcGw6OmNyZWF0ZShpb0tpdENsYXNzLnV0ZjgoKS5kYXRhKCksIFR5cGU6
OklPS2l0LCBhdWRpdFRva2VuKTsKKyAgICBpZiAoIWhhbmRsZS5tX3NhbmRib3hFeHRlbnNpb24p
IHsKKyAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIGEgc2FuZGJveCBleHRlbnNp
b24gZm9yICclcyciLCBpb0tpdENsYXNzLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKIFNhbmRib3hFeHRlbnNpb246
OlNhbmRib3hFeHRlbnNpb24oY29uc3QgSGFuZGxlJiBoYW5kbGUpCiAgICAgOiBtX3NhbmRib3hF
eHRlbnNpb24oV1RGTW92ZShoYW5kbGUubV9zYW5kYm94RXh0ZW5zaW9uKSkKIHsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2Nv
YS5tbQkocmV2aXNpb24gMjYwMjE0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQAog
I2ltcG9ydCAiV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgogI2ltcG9ydCAiV2ViUHJv
Y2Vzc01lc3NhZ2VzLmgiCiAjaW1wb3J0ICJXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uLmgiCisjaW1w
b3J0IDxXZWJDb3JlL0FHWENvbXBpbGVyU2VydmljZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Db2xv
ci5oPgogI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWREZXZpY2VNb2RlbC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9NSU1FVHlwZVJlZ2lzdHJ5Lmg+CkBAIC04NCw3ICs4NSw2IEBACiAjaWYgUExBVEZP
Uk0oSU9TKQogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9XZWJGaWx0ZXJFdmFsdWF0b3JTUEkuaD4K
ICNpbXBvcnQgPHBhbC9zcGkvaW9zL01vYmlsZUdlc3RhbHRTUEkuaD4KLSNpbXBvcnQgPHN5cy91
dHNuYW1lLmg+CiAKIFNPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SSyhXZWJDb250ZW50QW5hbHlz
aXMpOwogU09GVF9MSU5LX0NMQVNTKFdlYkNvbnRlbnRBbmFseXNpcywgV2ViRmlsdGVyRXZhbHVh
dG9yKTsKQEAgLTE5OSwyNSArMTk5LDYgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1S
ZXNvbHZlUGF0aAogI2VuZGlmCiB9CiAKLSNpZiBQTEFURk9STShJT1MpCi1zdGF0aWMgYm9vbCBk
ZXZpY2VIYXNBR1hDb21waWxlclNlcnZpY2UoKQotewotICAgIHN0YXRpYyBib29sIGRldmljZUhh
c0FHWENvbXBpbGVyU2VydmljZSA9IGZhbHNlOwotICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBm
bGFnOwotICAgIHN0ZDo6Y2FsbF9vbmNlKAotICAgICAgICBmbGFnLAotICAgICAgICBbXSAoKSB7
Ci0gICAgICAgICAgICBzdHJ1Y3QgdXRzbmFtZSBzeXN0ZW1JbmZvOwotICAgICAgICAgICAgaWYg
KHVuYW1lKCZzeXN0ZW1JbmZvKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICBjb25zdCBjaGFyKiBtYWNoaW5lID0gc3lzdGVtSW5mby5tYWNoaW5lOwotICAgICAgICAgICAg
aWYgKCFzdHJjbXAobWFjaGluZSwgImlQYWQ1LDEiKSB8fCAhc3RyY21wKG1hY2hpbmUsICJpUGFk
NSwyIikgfHwgIXN0cmNtcChtYWNoaW5lLCAiaVBhZDUsMyIpIHx8ICFzdHJjbXAobWFjaGluZSwg
ImlQYWQ1LDQiKSkKLSAgICAgICAgICAgICAgICBkZXZpY2VIYXNBR1hDb21waWxlclNlcnZpY2Ug
PSB0cnVlOwotICAgICAgICB9KTsKLSAgICByZXR1cm4gZGV2aWNlSGFzQUdYQ29tcGlsZXJTZXJ2
aWNlOwotfQotI2VuZGlmCi0KICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogc3RhdGljIGJvb2wg
aXNJbnRlcm5hbEluc3RhbGwoKQogewpAQCAtMzYxLDcgKzM0Miw3IEBAIHZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZVcKICNlbmRpZgogICAgIAogI2lmIFBMQVRGT1JNKElP
UykKLSAgICBpZiAoZGV2aWNlSGFzQUdYQ29tcGlsZXJTZXJ2aWNlKCkpIHsKKyAgICBpZiAoV2Vi
Q29yZTo6ZGV2aWNlSGFzQUdYQ29tcGlsZXJTZXJ2aWNlKCkpIHsKICAgICAgICAgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlIGNvbXBpbGVyU2VydmljZUV4dGVuc2lvbkhhbmRsZTsKICAgICAgICAg
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLkFH
WENvbXBpbGVyU2VydmljZSIsIFdURjo6bnVsbG9wdCwgY29tcGlsZXJTZXJ2aWNlRXh0ZW5zaW9u
SGFuZGxlKTsKICAgICAgICAgcGFyYW1ldGVycy5jb21waWxlclNlcnZpY2VFeHRlbnNpb25IYW5k
bGUgPSBXVEZNb3ZlKGNvbXBpbGVyU2VydmljZUV4dGVuc2lvbkhhbmRsZSk7CkBAIC0zOTIsNiAr
MzczLDI1IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZVcKICAgICBT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgcnVubmluZ2JvYXJkRXh0ZW5zaW9uSGFuZGxlOwogICAg
IGlmIChTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBw
bGUucnVubmluZ2JvYXJkIiwgV1RGOjpudWxsb3B0LCBydW5uaW5nYm9hcmRFeHRlbnNpb25IYW5k
bGUsIFNhbmRib3hFeHRlbnNpb246OkZsYWdzOjpOb1JlcG9ydCkpCiAgICAgICAgIHBhcmFtZXRl
cnMucnVubmluZ2JvYXJkRXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZShydW5uaW5nYm9hcmRFeHRl
bnNpb25IYW5kbGUpOworCisgICAgaWYgKFdlYkNvcmU6OmRldmljZUhhc0FHWENvbXBpbGVyU2Vy
dmljZSgpKSB7CisgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBpb0tpdENsYXNzZXNbXSA9IHsK
KyAgICAgICAgICAgICJBR1hDb21tYW5kUXVldWUiLAorICAgICAgICAgICAgIkFHWERldmljZSIs
CisgICAgICAgICAgICAiQUdYU2hhcmVkVXNlckNsaWVudCIsCisgICAgICAgICAgICAiSU9BY2Nl
bENvbnRleHQiLAorICAgICAgICAgICAgIklPQWNjZWxEZXZpY2UiLAorICAgICAgICAgICAgIklP
QWNjZWxTaGFyZWRVc2VyQ2xpZW50IiwKKyAgICAgICAgICAgICJJT0FjY2VsU3VibWl0dGVyMiIs
CisgICAgICAgICAgICAiSU9BY2NlbENvbnRleHQyIiwKKyAgICAgICAgICAgICJJT0FjY2VsRGV2
aWNlMiIsCisgICAgICAgICAgICAiSU9BY2NlbFNoYXJlZFVzZXJDbGllbnQyIgorICAgICAgICB9
OworICAgICAgICBhdXRvIHNpemUgPSBXVEZfQVJSQVlfTEVOR1RIKGlvS2l0Q2xhc3Nlcyk7Cisg
ICAgICAgIHBhcmFtZXRlcnMuZHluYW1pY0lPS2l0RXh0ZW5zaW9uSGFuZGxlcy5hbGxvY2F0ZShz
aXplKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAg
ICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JJT0tpdENsYXNzRXh0ZW5zaW9u
KGlvS2l0Q2xhc3Nlc1tpXSwgV1RGOjpudWxsb3B0LCBwYXJhbWV0ZXJzLmR5bmFtaWNJT0tpdEV4
dGVuc2lvbkhhbmRsZXNbaV0pOworICAgIH0KICNlbmRpZgogICAgIAogI2lmIFBMQVRGT1JNKENP
Q09BKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2Nv
YS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJv
Y2Vzc0NvY29hLm1tCShyZXZpc2lvbiAyNjAyMTQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOTYsNiArMjk2
LDkgQEAgdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcgogCiAgICAgZm9y
IChzaXplX3QgaSA9IDAsIHNpemUgPSBwYXJhbWV0ZXJzLmR5bmFtaWNNYWNoRXh0ZW5zaW9uSGFu
ZGxlcy5zaXplKCk7IGkgPCBzaXplOyArK2kpCiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNv
bnN1bWVQZXJtYW5lbnRseShwYXJhbWV0ZXJzLmR5bmFtaWNNYWNoRXh0ZW5zaW9uSGFuZGxlc1tp
XSk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IHBhcmFtZXRlcnMuZHluYW1pY0lP
S2l0RXh0ZW5zaW9uSGFuZGxlcy5zaXplKCk7IGkgPCBzaXplOyArK2kpCisgICAgICAgIFNhbmRi
b3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShwYXJhbWV0ZXJzLmR5bmFtaWNJT0tpdEV4
dGVuc2lvbkhhbmRsZXNbaV0pOwogI2VuZGlmCiAgICAgCiAgICAgaWYgKHBhcmFtZXRlcnMubmVI
ZWxwZXJFeHRlbnNpb25IYW5kbGUpCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjAyMTQpCisrKyBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAyMC0w
NC0xNiAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW2lP
U10gRGVueSBpb2tpdCBvcGVuIGFjY2VzcyB0byBncmFwaGljcyByZWxhdGVkIGNsYXNzZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDYxNgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9zYW5k
Ym94L2lvcy9zYW5kYm94LWlva2l0LW9wZW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L3NhbmRib3gvaW9zL3NhbmRib3gtaW9raXQtb3Blbi5odG1sOiBBZGRlZC4KKwogMjAy
MC0wNC0xNiAgSmFjayBMZWUgIDxzaGloY2hpZWhfbGVlQGFwcGxlLmNvbT4KIAogICAgICAgICBB
U1NFUlRJT04gRkFJTEVEOiBjYW5kaWRhdGUuaXNDYW5kaWRhdGUoKSBpbiBXZWJDb3JlOjpjYW5v
bmljYWxpemVDYW5kaWRhdGUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvc2FuZGJveC9pb3Mvc2Fu
ZGJveC1pb2tpdC1vcGVuLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L3NhbmRib3gvaW9zL3NhbmRib3gtaW9raXQtb3Blbi1leHBlY3RlZC50eHQJKG5vbmV4aXN0
ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9zYW5kYm94L2lvcy9zYW5kYm94LWlva2l0LW9wZW4t
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNiBAQAorUmVncmVzc2lvbiB0
ZXN0cyBmb3IgaW9raXQgb3BlbiBzYW5kYm94IGNoYW5nZXMgb24gaU9TCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCitQQVNTIGludGVybmFscy5oYXNTYW5kYm94TWFjaExvb2t1cEFj
Y2Vzc1RvR2xvYmFsTmFtZSgiY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50IiwgIkFHWENvbW1h
bmRRdWV1ZSIpIGlzIHRydWUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvc2FuZGJveC9pb3Mvc2Fu
ZGJveC1pb2tpdC1vcGVuLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9zYW5k
Ym94L2lvcy9zYW5kYm94LWlva2l0LW9wZW4uaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L3NhbmRib3gvaW9zL3NhbmRib3gtaW9raXQtb3Blbi5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdSZWdyZXNzaW9uIHRlc3RzIGZvciBpb2tpdCBvcGVuIHNh
bmRib3ggY2hhbmdlcyBvbiBpT1MnKTsKKworaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICB3
aW5kb3cuaW50ZXJuYWxzLnNldERldmljZUhhc0FHWENvbXBpbGVyU2VydmljZSgpOworICAgIHNo
b3VsZEJlVHJ1ZSgiaW50ZXJuYWxzLmhhc1NhbmRib3hJT0tpdE9wZW5BY2Nlc3NUb0NsYXNzKFwi
Y29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50XCIsIFwiQUdYQ29tbWFuZFF1ZXVlXCIpIik7Cit9
Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPC9ib2R5Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396702</attachid>
            <date>2020-04-16 15:03:49 -0700</date>
            <delta_ts>2020-04-16 15:23:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210616-20200416150348.patch</filename>
            <type>text/plain</type>
            <size>35490</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjAyMTQpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIwLTA0LTE2ICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBEZW55IGlva2l0IG9wZW4gYWNjZXNz
IHRvIGdyYXBoaWNzIHJlbGF0ZWQgY2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwNjE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJLmg6CisKIDIw
MjAtMDQtMTYgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIENs
ZWFuIHVwIFZlY3RvckNvY29hIGNyZWF0ZU5TQXJyYXkgb3ZlcmxvYWRzIGFuZCBhZGQgZG9jdW1l
bnRhdGlvbiBmb3IgY3JlYXRlTlNBcnJheSB0YWtpbmcgYSBtYXAgZnVuY3Rpb24KSW5kZXg6IFNv
dXJjZS9XVEYvd3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XVEYvd3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oCShyZXZpc2lvbiAyNjAyMTQpCisrKyBT
b3VyY2UvV1RGL3d0Zi9zcGkvZGFyd2luL1NhbmRib3hTUEkuaAkod29ya2luZyBjb3B5KQpAQCAt
MzYsNiArMzYsNyBAQCBlbnVtIHNhbmRib3hfZmlsdGVyX3R5cGUgewogICAgIFNBTkRCT1hfRklM
VEVSX05PTkUsCiAgICAgU0FOREJPWF9GSUxURVJfR0xPQkFMX05BTUUgPSAyLAogICAgIFNBTkRC
T1hfRklMVEVSX1hQQ19TRVJWSUNFX05BTUUgPSAxMiwKKyAgICBTQU5EQk9YX0ZJTFRFUl9JT0tJ
VF9DT05ORUNUSU9OLAogfTsKIAogI2RlZmluZSBTQU5EQk9YX05BTUVEX0VYVEVSTkFMIDB4MDAw
MwpAQCAtODQsNiArODUsOSBAQCBzYW5kYm94X3Byb2ZpbGVfdCBzYW5kYm94X2NvbXBpbGVfc3Ry
aW5nCiB2b2lkIHNhbmRib3hfZnJlZV9wcm9maWxlKHNhbmRib3hfcHJvZmlsZV90KTsKIGludCBz
YW5kYm94X2FwcGx5KHNhbmRib3hfcHJvZmlsZV90KTsKIAorY2hhciAqc2FuZGJveF9leHRlbnNp
b25faXNzdWVfaW9raXRfcmVnaXN0cnlfZW50cnlfY2xhc3NfdG9fcHJvY2Vzcyhjb25zdCBjaGFy
ICpleHRlbnNpb25fY2xhc3MsIGNvbnN0IGNoYXIgKnJlZ2lzdHJ5X2VudHJ5X2NsYXNzLCB1aW50
MzJfdCBmbGFncywgYXVkaXRfdG9rZW5fdCk7CitjaGFyICpzYW5kYm94X2V4dGVuc2lvbl9pc3N1
ZV9pb2tpdF9yZWdpc3RyeV9lbnRyeV9jbGFzcyhjb25zdCBjaGFyICpleHRlbnNpb25fY2xhc3Ms
IGNvbnN0IGNoYXIgKnJlZ2lzdHJ5X2VudHJ5X2NsYXNzLCB1aW50MzJfdCBmbGFncyk7CisKIFdU
Rl9FWFRFUk5fQ19FTkQKIAogI2VuZGlmIC8vIE9TKERBUldJTikKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2MDIyMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDI3IEBACisyMDIwLTA0LTE2ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFu
QGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBEZW55IGlva2l0IG9wZW4gYWNjZXNzIHRvIGdy
YXBoaWNzIHJlbGF0ZWQgY2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjEwNjE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgRGVueSBpb2tpdCBvcGVuIGFjY2VzcyB0byBncmFwaGljcyByZWxhdGVk
IGNsYXNzZXMgaW4gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBvbiBpT1MsIGJ1dCBpc3N1ZQorICAg
ICAgICBleHRlbnNpb25zIGZvciB0aGVzZSBmb3Igc29tZSBkZXZpY2VzIHdoaWNoIHN0aWxsIG5l
ZWQgYWNjZXNzIHRvIHRoZW0uCisKKyAgICAgICAgQVBJIHRlc3Q6IFdlYktpdC5JT0tpdE9wZW5T
YW5kYm94QWNjZXNzRm9yRGV2aWNlV2l0aEFHWENvbXBpbGVyU2VydmljZQorCisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2Nv
Y29hL0FHWENvbXBpbGVyU2VydmljZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6c2V0
RGV2aWNlSGFzQUdYQ29tcGlsZXJTZXJ2aWNlRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpkZXZpY2VIYXNBR1hDb21waWxlclNlcnZpY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29h
L0FHWENvbXBpbGVyU2VydmljZS5oOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFs
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Omhhc1NhbmRib3hJT0tpdE9wZW5B
Y2Nlc3NUb0NsYXNzKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAq
IHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6aGFzU2FuZGJveElPS2l0T3BlbkFjY2Vzc1Rv
Q2xhc3MpOgorCiAyMDIwLTA0LTE2ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgog
CiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQtZml4IGFmdGVyIHIyNjAxODI7IGd1YXJkIGNhbGwg
dG8gZnVsbHNjcmVlbk1hbmFnZXIoKSBmb3IgcG9ydHMgd2hpY2ggZG8gbm90CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZp
c2lvbiAyNjAyMTQpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM5OTcsNiArMzk5Nyw4IEBACiAJCUMxNjkyREQy
MjNEMjNBQkQwMDZFODhGNyAvKiBTeXN0ZW1CYXR0ZXJ5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzE2OTJERDEyM0QyM0FCRDAwNkU4OEY3IC8qIFN5
c3RlbUJhdHRlcnkubW0gKi87IH07CiAJCUMxNjkyREQ1MjNEMjNFMDgwMDZFODhGNyAvKiBTeXN0
ZW1CYXR0ZXJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDMTY5MkRENDIzRDIzQUUwMDA2RTg4RjcgLyogU3lzdGVtQmF0dGVyeS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMxRTFEMjM2MjAzREYxNTQw
MDU4NDY2NSAvKiBTY3JlZW5Qcm9wZXJ0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDMUUxRDIzNTIwM0RGMTU0MDA1ODQ2NjUgLyogU2NyZWVuUHJv
cGVydGllcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCUMxRjdCNzMxMjQ0OEYyQUMwMDEyNDU1NyAvKiBBR1hDb21waWxlclNlcnZpY2UuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzFGN0I3MkYyNDQ4
RjJBQzAwMTI0NTU3IC8qIEFHWENvbXBpbGVyU2VydmljZS5jcHAgKi87IH07CisJCUMxRjdCNzMy
MjQ0OEYyQUMwMDEyNDU1NyAvKiBBR1hDb21waWxlclNlcnZpY2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxRjdCNzMwMjQ0OEYyQUMwMDEyNDU1NyAv
KiBBR1hDb21waWxlclNlcnZpY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlDMjAxNUMwQTFCRTZGRUIyMDA4MjIzODkgLyogRm9udFZhcmlhbnRC
dWlsZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
MjAxNUMwOTFCRTZGRTJDMDA4MjIzODkgLyogRm9udFZhcmlhbnRCdWlsZGVyLmggKi87IH07CiAJ
CUMyMURGMkVBMUQ5RTRFOTkwMEY1QjI0QyAvKiBDU1NGb250VmFyaWF0aW9uVmFsdWUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyMURGMkU4MUQ5RTRF
OTkwMEY1QjI0QyAvKiBDU1NGb250VmFyaWF0aW9uVmFsdWUuaCAqLzsgfTsKIAkJQzI0NThFNjMx
RkU4OTdCMDAwNTk0NzU5IC8qIEZvbnRDYWNoZUNvcmVUZXh0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjQ1OEU2MTFGRTg5NzlFMDA1OTQ3NTkgLyog
Rm9udENhY2hlQ29yZVRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtMTM2MDcsNiArMTM2MDksOCBAQAogCQlDMTY5MkRENDIzRDIzQUUwMDA2
RTg4RjcgLyogU3lzdGVtQmF0dGVyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTeXN0ZW1CYXR0ZXJ5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxOEZCNTE4MjQyRjkzODIwMDdFOTg3NSAv
KiBTbGVlcERpc2FibGVyQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNsZWVwRGlzYWJs
ZXJDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMUUxRDIzNTIwM0RG
MTU0MDA1ODQ2NjUgLyogU2NyZWVuUHJvcGVydGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JlZW5Q
cm9wZXJ0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMxRjdCNzJGMjQ0OEYy
QUMwMDEyNDU1NyAvKiBBR1hDb21waWxlclNlcnZpY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
QUdYQ29tcGlsZXJTZXJ2aWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzFG
N0I3MzAyNDQ4RjJBQzAwMTI0NTU3IC8qIEFHWENvbXBpbGVyU2VydmljZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBR1hDb21waWxlclNlcnZpY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QzIwMTVDMDkxQkU2RkUyQzAwODIyMzg5IC8qIEZvbnRWYXJpYW50QnVpbGRlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBGb250VmFyaWFudEJ1aWxkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQzIwRjRGNjQyMURGQkU1QzAwNzBDNDVBIC8qIFdITFNMVHlwZVJlZmVyZW5jZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXSExTTFR5cGVSZWZlcmVuY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDMjBGNEY2NjIxREZGMjM2MDA3MEM0NUEgLyogV0hMU0xJbnRlZ2VyTGl0
ZXJhbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTEludGVnZXJMaXRlcmFsLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIzMjg3LDYgKzIzMjkxLDggQEAKIAkJQTVDOTc0
Q0UxMTQ4NUZEQTAwNjZGMkFCIC8qIGNvY29hICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKKwkJCQlDMUY3QjcyRjI0NDhGMkFDMDAxMjQ1NTcgLyogQUdYQ29tcGls
ZXJTZXJ2aWNlLmNwcCAqLywKKwkJCQlDMUY3QjczMDI0NDhGMkFDMDAxMjQ1NTcgLyogQUdYQ29t
cGlsZXJTZXJ2aWNlLmggKi8sCiAJCQkJQTE0MDkwRkExQUE1MUUxRDAwOTExOTFBIC8qIENvbnRl
bnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1tICovLAogCQkJCUNEN0QzMzQ1MUM3QTE2QkYw
MDA0MTI5MyAvKiBDb3JlVmlkZW9Tb2Z0TGluay5jcHAgKi8sCiAJCQkJQ0Q3RDMzNDYxQzdBMTZC
RjAwMDQxMjkzIC8qIENvcmVWaWRlb1NvZnRMaW5rLmggKi8sCkBAIC0yOTM2MSw2ICsyOTM2Nyw3
IEBACiAJCQkJQTE2NzdFMEUyMTNFMDJBMDAwQTA4QzM0IC8qIEFkZHJlc3NFcnJvcnMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDRjdFNDkxMTM3Q0Q3QzcwMDFEREFFNyAvKiBBZGp1c3RWaWV3U2l6
ZU9yTm90LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NEQwQzQwNjExMTVGMUVBMDAxOEFBMzQgLyog
QWZmaW5lVHJhbnNmb3JtLmggaW4gSGVhZGVycyAqLywKKwkJCQlDMUY3QjczMjI0NDhGMkFDMDAx
MjQ1NTcgLyogQUdYQ29tcGlsZXJTZXJ2aWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0JCNUM4
ODFENUQ2RjQ1MDA1QTcxRjQgLyogQWxsRGVzY2VuZGFudHNDb2xsZWN0aW9uLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk3Mjk5QkM2NzIzRDZBNTMyMDBDQzY4ODMgLyogQWxwaGFQcmVtdWx0aXBsaWNh
dGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0VEQTEyRDcxNTJDQTFDQjAwRDlFMDhEIC8qIEFs
dGVybmF0aXZlVGV4dENsaWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNDAwMyw2ICszNDAxMCw3
IEBACiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCiAJCQkJ
QTk3ODdDQjQxRjVGNUM2NjAwQzU1MUM2IC8qIEFjY2Vzc2liaWxpdHlNZWRpYU9iamVjdC5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlDMUY3QjczMTI0NDhGMkFDMDAxMjQ1NTcgLyogQUdYQ29tcGls
ZXJTZXJ2aWNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEMEVFRTBFMTQ3NDNGMzkwMDNFQUZB
MiAvKiBBdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNENTU5Njkx
MTQ3NUI2NzgwMDFEMEJEMCAvKiBBdWRpb0ZpbGVSZWFkZXJJT1MuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQ0RBNzk4MjcxNzBBMjc5MTAwRDQ1QzU1IC8qIEF1ZGlvU2Vzc2lvbklPUy5tbSBpbiBT
b3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQUdYQ29tcGls
ZXJTZXJ2aWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9BR1hDb21waWxlclNlcnZpY2UuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL0FHWENvbXBpbGVyU2VydmljZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw2MCBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiBhcmUgbWV0Ogor
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQUdYQ29tcGlsZXJTZXJ2aWNlLmgi
CisKKyNpZiBQTEFURk9STShJT1MpCisKKyNpbmNsdWRlIDxzeXMvdXRzbmFtZS5oPgorI2luY2x1
ZGUgPHd0Zi9PcHRpb25hbC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBPcHRp
b25hbDxib29sPiBoYXNBR1hDb21waWxlclNlcnZpY2U7CisKK3ZvaWQgc2V0RGV2aWNlSGFzQUdY
Q29tcGlsZXJTZXJ2aWNlRm9yVGVzdGluZygpCit7CisgICAgaGFzQUdYQ29tcGlsZXJTZXJ2aWNl
ID0gdHJ1ZTsKK30KKworYm9vbCBkZXZpY2VIYXNBR1hDb21waWxlclNlcnZpY2UoKQoreworICAg
IGlmICghaGFzQUdYQ29tcGlsZXJTZXJ2aWNlKSB7CisgICAgICAgIHN0cnVjdCB1dHNuYW1lIHN5
c3RlbUluZm87CisgICAgICAgIGlmICh1bmFtZSgmc3lzdGVtSW5mbykpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIGNvbnN0IGNoYXIqIG1hY2hpbmUgPSBzeXN0ZW1JbmZvLm1h
Y2hpbmU7CisgICAgICAgIGlmICghc3RyY21wKG1hY2hpbmUsICJpUGFkNSwxIikgfHwgIXN0cmNt
cChtYWNoaW5lLCAiaVBhZDUsMiIpIHx8ICFzdHJjbXAobWFjaGluZSwgImlQYWQ1LDMiKSB8fCAh
c3RyY21wKG1hY2hpbmUsICJpUGFkNSw0IikpCisgICAgICAgICAgICBoYXNBR1hDb21waWxlclNl
cnZpY2UgPSB0cnVlOworICAgICAgICBlbHNlCisgICAgICAgICAgICBoYXNBR1hDb21waWxlclNl
cnZpY2UgPSBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuICpoYXNBR1hDb21waWxlclNlcnZpY2U7
Cit9CisKK30KKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9B
R1hDb21waWxlclNlcnZpY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9BR1hDb21waWxlclNlcnZpY2UuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9BR1hDb21waWxlclNlcnZpY2UuaAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDMzIEBACisvKgorKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorKgorKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisqIGFyZSBtZXQ6
CisqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1dFQkNPUkVfRVhQ
T1JUIGJvb2wgZGV2aWNlSGFzQUdYQ29tcGlsZXJTZXJ2aWNlKCk7CitXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldERldmljZUhhc0FHWENvbXBpbGVyU2VydmljZUZvclRlc3RpbmcoKTsKKworfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkocmV2aXNpb24gMjYwMjE0KQorKysg
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
NjAzLDYgKzU2MDMsMTEgQEAgYm9vbCBJbnRlcm5hbHM6OmlzUmVtb3RlVUlBcHBGb3JBY2Nlc3Np
YgogewogICAgIHJldHVybiBmYWxzZTsKIH0KKworYm9vbCBJbnRlcm5hbHM6Omhhc1NhbmRib3hJ
T0tpdE9wZW5BY2Nlc3NUb0NsYXNzKGNvbnN0IFN0cmluZyYgcHJvY2VzcywgY29uc3QgU3RyaW5n
JiBpb0tpdENsYXNzKQoreworICAgIHJldHVybiBmYWxzZTsKK30KICNlbmRpZgogCiBTdHJpbmcg
SW50ZXJuYWxzOjptZWRpYU1JTUVUeXBlRm9yRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5z
aW9uKQpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCShyZXZpc2lvbiAyNjAyMTQp
CisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCSh3b3JraW5nIGNvcHkpCkBA
IC05NzQsNiArOTc0LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNTYW5kYm94TWFjaExvb2t1
cEFjY2Vzc1RvR2xvYmFsTmFtZShjb25zdCBTdHJpbmcmIHByb2Nlc3MsIGNvbnN0IFN0cmluZyYg
c2VydmljZSk7CiAgICAgYm9vbCBoYXNTYW5kYm94TWFjaExvb2t1cEFjY2Vzc1RvWFBDU2Vydmlj
ZU5hbWUoY29uc3QgU3RyaW5nJiBwcm9jZXNzLCBjb25zdCBTdHJpbmcmIHNlcnZpY2UpOworICAg
IGJvb2wgaGFzU2FuZGJveElPS2l0T3BlbkFjY2Vzc1RvQ2xhc3MoY29uc3QgU3RyaW5nJiBwcm9j
ZXNzLCBjb25zdCBTdHJpbmcmIGlvS2l0Q2xhc3MpOwogCiAgICAgU3RyaW5nIGhpZ2hsaWdodFBz
ZXVkb0VsZW1lbnRDb2xvcihjb25zdCBTdHJpbmcmIGhpZ2hsaWdodE5hbWUsIEVsZW1lbnQmKTsK
IApJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAkocmV2aXNpb24gMjYwMjE0
KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC04ODUsNyArODg1LDggQEAgZW51bSBDb21wb3NpdGluZ1BvbGljeSB7CiAKICAgICBib29s
ZWFuIGhhc1NhbmRib3hNYWNoTG9va3VwQWNjZXNzVG9HbG9iYWxOYW1lKERPTVN0cmluZyBwcm9j
ZXNzLCBET01TdHJpbmcgc2VydmljZSk7CiAgICAgYm9vbGVhbiBoYXNTYW5kYm94TWFjaExvb2t1
cEFjY2Vzc1RvWFBDU2VydmljZU5hbWUoRE9NU3RyaW5nIHByb2Nlc3MsIERPTVN0cmluZyBzZXJ2
aWNlKTsKLSAgICAKKyAgICBib29sZWFuIGhhc1NhbmRib3hJT0tpdE9wZW5BY2Nlc3NUb0NsYXNz
KERPTVN0cmluZyBwcm9jZXNzLCBET01TdHJpbmcgaW9LaXRDbGFzcyk7CisKICAgICBET01TdHJp
bmcgc3lzdGVtQ29sb3JGb3JDU1NWYWx1ZShET01TdHJpbmcgY3NzVmFsdWUsIGJvb2xlYW4gdXNl
RGFya01vZGVBcHBlYXJhbmNlLCBib29sZWFuIHVzZUVsZXZhdGVkVXNlckludGVyZmFjZUxldmVs
KTsKICAgICBET01TdHJpbmcgZm9jdXNSaW5nQ29sb3IoKTsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMubW0JKHJldmlzaW9uIDI2MDIxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaW1w
b3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkludGVybmFscy5oIgogCisjaW1wb3J0ICJBR1hDb21w
aWxlclNlcnZpY2UuaCIKICNpbXBvcnQgIkRPTVVSTC5oIgogI2ltcG9ydCAiRGljdGlvbmFyeUxv
b2t1cC5oIgogI2ltcG9ydCAiRG9jdW1lbnQuaCIKQEAgLTM4LDYgKzM5LDcgQEAKICNpbXBvcnQg
PEFWRm91bmRhdGlvbi9BVlBsYXllci5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0FjY2Vz
c2liaWxpdHlTUEkuaD4KICNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgorI2ltcG9y
dCA8d3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oPgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICNpbXBvcnQgPHBhbC9pb3MvVUlLaXRTb2Z0TGluay5oPgpAQCAtMTE2LDQgKzExOCwxNSBA
QCBib29sIEludGVybmFsczo6aXNSZW1vdGVVSUFwcEZvckFjY2Vzc2liCiAjZW5kaWYKIH0KIAor
Ym9vbCBJbnRlcm5hbHM6Omhhc1NhbmRib3hJT0tpdE9wZW5BY2Nlc3NUb0NsYXNzKGNvbnN0IFN0
cmluZyYgcHJvY2VzcywgY29uc3QgU3RyaW5nJiBpb0tpdENsYXNzKQoreworICAgIHBpZF90IHBp
ZDsKKyAgICBpZiAocHJvY2VzcyA9PSAiY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50IikKKyAg
ICAgICAgcGlkID0gZ2V0cGlkKCk7CisgICAgZWxzZQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOworCisgICAgcmV0dXJuICFzYW5kYm94X2NoZWNrKHBpZCwgImlva2l0LW9w
ZW4iLCBzdGF0aWNfY2FzdDxlbnVtIHNhbmRib3hfZmlsdGVyX3R5cGU+KFNBTkRCT1hfRklMVEVS
X0lPS0lUX0NPTk5FQ1RJT04gfCBTQU5EQk9YX0NIRUNLX05PX1JFUE9SVCksIGlvS2l0Q2xhc3Mu
dXRmOCgpLmRhdGEoKSk7Cit9CisKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjAyMjIpCisr
KyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBA
CisyMDIwLTA0LTE2ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAg
ICAgICBbaU9TXSBEZW55IGlva2l0IG9wZW4gYWNjZXNzIHRvIGdyYXBoaWNzIHJlbGF0ZWQgY2xh
c3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEw
NjE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGVu
eSBpb2tpdCBvcGVuIGFjY2VzcyB0byBncmFwaGljcyByZWxhdGVkIGNsYXNzZXMgaW4gdGhlIFdl
YkNvbnRlbnQgcHJvY2VzcyBvbiBpT1MsIGJ1dCBpc3N1ZQorICAgICAgICBleHRlbnNpb25zIGZv
ciB0aGVzZSBmb3Igc29tZSBkZXZpY2VzIHdoaWNoIHN0aWxsIG5lZWQgYWNjZXNzIHRvIHRoZW0u
CisKKyAgICAgICAgKiBSZXNvdXJjZXMvU2FuZGJveFByb2ZpbGVzL2lvcy9jb20uYXBwbGUuV2Vi
S2l0LldlYkNvbnRlbnQuc2I6CisgICAgICAgICogU2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNp
b25Db2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbkltcGw6OnNhbmRi
b3hFeHRlbnNpb25Gb3JUeXBlKToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6
Y3JlYXRlSGFuZGxlRm9ySU9LaXRDbGFzc0V4dGVuc2lvbik6CisgICAgICAgICogU2hhcmVkL1Nh
bmRib3hFeHRlbnNpb24uaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdQcml2YXRl
Rm9yVGVzdGluZ0lPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld1Rl
c3RpbmdJT1MubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfc2V0RGV2aWNlSGFzQUdYQ29tcGls
ZXJTZXJ2aWNlRm9yVGVzdGluZ10pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9j
ZXNzUG9vbENvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZv
cm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OmRldmljZUhhc0FHWENv
bXBpbGVyU2VydmljZSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldERldmljZUhhc0FHWENvbXBpbGVyU2VydmljZUZv
clRlc3RpbmcgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0Nv
Y29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVX
ZWJQcm9jZXNzKToKKwogMjAyMC0wNC0xNiAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxl
LmNvbT4KIAogICAgICAgICBbbWFjT1NdIFN3aXRjaCB1bnVzZWQgSU9LaXQgY2xhc3NlcyBmcm9t
IGFsbG93LXdpdGgtcmVwb3J0IHRvIGRlbnktd2l0aC1yZXBvcnQKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5XZWJDb250
ZW50LnNiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUmVzb3VyY2VzL1NhbmRib3hQcm9m
aWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiCShyZXZpc2lvbiAyNjAyMTQp
CisrKyBTb3VyY2UvV2ViS2l0L1Jlc291cmNlcy9TYW5kYm94UHJvZmlsZXMvaW9zL2NvbS5hcHBs
ZS5XZWJLaXQuV2ViQ29udGVudC5zYgkod29ya2luZyBjb3B5KQpAQCAtMjE0LDcgKzIxNCw3IEBA
CiA7OzsKIChkZWZpbmUtb25jZSAob3BlbmdsKQogICAgIDs7IEl0ZW1zIG5vdCBzZWVuIGluIHRl
c3RpbmcKLSAgICAoYWxsb3cgaW9raXQtb3BlbiAod2l0aCByZXBvcnQpICh3aXRoIHRlbGVtZXRy
eSkKKyAgICAoZGVueSBpb2tpdC1vcGVuICh3aXRoIHRlbGVtZXRyeSkKICAgICAgICAgICAgKGlv
a2l0LWNvbm5lY3Rpb24gIklPR1BVIikKICAgICAgICAgICAgKGlva2l0LXVzZXItY2xpZW50LWNs
YXNzCiAgICAgICAgICAgICAgICAgIkFHWENvbW1hbmRRdWV1ZSIKQEAgLTkyNCw2ICs5MjQsMjQg
QEAKICAgICApCiApCiAKKyhhbGxvdyBpb2tpdC1vcGVuCisgICAgKHJlcXVpcmUtYWxsCisgICAg
ICAgIChleHRlbnNpb24gImNvbS5hcHBsZS53ZWJraXQuZXh0ZW5zaW9uLmlva2l0IikKKyAgICAg
ICAgKGlva2l0LXVzZXItY2xpZW50LWNsYXNzCisgICAgICAgICAgICAiQUdYQ29tbWFuZFF1ZXVl
IgorICAgICAgICAgICAgIkFHWERldmljZSIKKyAgICAgICAgICAgICJBR1hTaGFyZWRVc2VyQ2xp
ZW50IgorICAgICAgICAgICAgIklPQWNjZWxDb250ZXh0IgorICAgICAgICAgICAgIklPQWNjZWxE
ZXZpY2UiCisgICAgICAgICAgICAiSU9BY2NlbFNoYXJlZFVzZXJDbGllbnQiCisgICAgICAgICAg
ICAiSU9BY2NlbFN1Ym1pdHRlcjIiCisgICAgICAgICAgICAiSU9BY2NlbENvbnRleHQyIgorICAg
ICAgICAgICAgIklPQWNjZWxEZXZpY2UyIgorICAgICAgICAgICAgIklPQWNjZWxTaGFyZWRVc2Vy
Q2xpZW50MiIKKyAgICAgICAgKQorICAgICkKKykKKwogKGFsbG93IG1hY2gtbG9va3VwCiAgICAg
KHJlcXVpcmUtYWxsCiAgICAgICAgIChleHRlbnNpb24gImNvbS5hcHBsZS53ZWJraXQuZXh0ZW5z
aW9uLm1hY2giKQpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvU2FuZGJveEV4dGVuc2lvbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaAko
cmV2aXNpb24gMjYwMjE0KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvU2FuZGJveEV4dGVuc2lv
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBAIHB1YmxpYzoKICAgICAgICAgUmVh
ZE9ubHksCiAgICAgICAgIFJlYWRXcml0ZSwKICAgICAgICAgTWFjaCwKKyAgICAgICAgSU9LaXQs
CiAgICAgICAgIEdlbmVyaWMsCiAgICAgICAgIFJlYWRCeVByb2Nlc3MKICAgICB9OwpAQCAtMTEz
LDYgKzExNCw3IEBAIHB1YmxpYzoKICNpZiBIQVZFKEFVRElUX1RPS0VOKQogICAgIHN0YXRpYyBi
b29sIGNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoY29uc3QgU3RyaW5nJiBzZXJ2aWNlLCBPcHRp
b25hbDxhdWRpdF90b2tlbl90PiwgSGFuZGxlJiwgT3B0aW9uU2V0PEZsYWdzPiA9IEZsYWdzOjpE
ZWZhdWx0KTsKICAgICBzdGF0aWMgYm9vbCBjcmVhdGVIYW5kbGVGb3JSZWFkQnlBdWRpdFRva2Vu
KGNvbnN0IFN0cmluZyYgcGF0aCwgYXVkaXRfdG9rZW5fdCwgSGFuZGxlJik7CisgICAgc3RhdGlj
IGJvb2wgY3JlYXRlSGFuZGxlRm9ySU9LaXRDbGFzc0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIGlv
a2l0Q2xhc3MsIE9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+LCBIYW5kbGUmLCBPcHRpb25TZXQ8Rmxh
Z3M+ID0gRmxhZ3M6OkRlZmF1bHQpOwogI2VuZGlmCiAgICAgflNhbmRib3hFeHRlbnNpb24oKTsK
IApJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5jcHAJKHJldmlzaW9uIDI2MDIxNCkKKysrIFNvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NjYsNiArMTY2LDcgQEAgdm9pZCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZAog
ICAgIGVuY29kZXIgPDwgZGlhZ25vc3RpY3NFeHRlbnNpb25IYW5kbGU7CiAgICAgZW5jb2RlciA8
PCBydW5uaW5nYm9hcmRFeHRlbnNpb25IYW5kbGU7CiAgICAgZW5jb2RlciA8PCBkeW5hbWljTWFj
aEV4dGVuc2lvbkhhbmRsZXM7CisgICAgZW5jb2RlciA8PCBkeW5hbWljSU9LaXRFeHRlbnNpb25I
YW5kbGVzOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTQ1Nyw2ICs0NTgsMTIg
QEAgYm9vbCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZAogICAgIGlmICghZHlu
YW1pY01hY2hFeHRlbnNpb25IYW5kbGVzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcGFy
YW1ldGVycy5keW5hbWljTWFjaEV4dGVuc2lvbkhhbmRsZXMgPSBXVEZNb3ZlKCpkeW5hbWljTWFj
aEV4dGVuc2lvbkhhbmRsZXMpOworCisgICAgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlQXJyYXk+IGR5bmFtaWNJT0tpdEV4dGVuc2lvbkhhbmRsZXM7CisgICAgZGVjb2RlciA+PiBk
eW5hbWljSU9LaXRFeHRlbnNpb25IYW5kbGVzOworICAgIGlmICghZHluYW1pY0lPS2l0RXh0ZW5z
aW9uSGFuZGxlcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHBhcmFtZXRlcnMuZHluYW1p
Y0lPS2l0RXh0ZW5zaW9uSGFuZGxlcyA9IFdURk1vdmUoKmR5bmFtaWNJT0tpdEV4dGVuc2lvbkhh
bmRsZXMpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHJldmlz
aW9uIDI2MDIxNCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjA2LDYgKzIwNiw3IEBAIHN0cnVjdCBXZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGU+IGRpYWdub3N0aWNzRXh0ZW5zaW9uSGFuZGxlOwogICAgIE9wdGlvbmFsPFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZT4gcnVubmluZ2JvYXJkRXh0ZW5zaW9uSGFuZGxlOwogICAgIFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IGR5bmFtaWNNYWNoRXh0ZW5zaW9uSGFuZGxlczsK
KyAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSBkeW5hbWljSU9LaXRFeHRlbnNpb25I
YW5kbGVzOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvU2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9TYW5kYm94RXh0ZW5zaW9uQ29jb2EubW0JKHJldmlz
aW9uIDI2MDIxNCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNp
b25Db2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTA1LDYgKzEwNSwxMCBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICNlbmRpZgorICAgICAgICBjYXNlIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OklPS2l0
OgorICAgICAgICAgICAgaWYgKCFhdWRpdFRva2VuKQorICAgICAgICAgICAgICAgIHJldHVybiBz
YW5kYm94X2V4dGVuc2lvbl9pc3N1ZV9pb2tpdF9yZWdpc3RyeV9lbnRyeV9jbGFzcygiY29tLmFw
cGxlLndlYmtpdC5leHRlbnNpb24uaW9raXQiX3MsIHBhdGgsIGV4dGVuc2lvbkZsYWdzKTsKKyAg
ICAgICAgICAgIHJldHVybiBzYW5kYm94X2V4dGVuc2lvbl9pc3N1ZV9pb2tpdF9yZWdpc3RyeV9l
bnRyeV9jbGFzc190b19wcm9jZXNzKCJjb20uYXBwbGUud2Via2l0LmV4dGVuc2lvbi5pb2tpdCJf
cywgcGF0aCwgZXh0ZW5zaW9uRmxhZ3MsICphdWRpdFRva2VuKTsKICAgICAgICAgY2FzZSBTYW5k
Ym94RXh0ZW5zaW9uOjpUeXBlOjpHZW5lcmljOgogICAgICAgICAgICAgcmV0dXJuIHNhbmRib3hf
ZXh0ZW5zaW9uX2lzc3VlX2dlbmVyaWMocGF0aCwgZXh0ZW5zaW9uRmxhZ3MpOwogICAgICAgICBj
YXNlIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRCeVByb2Nlc3M6CkBAIC0zNjYsNiArMzcw
LDE5IEBAIGJvb2wgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmUKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAorYm9vbCBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JJT0tp
dENsYXNzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgaW9LaXRDbGFzcywgT3B0aW9uYWw8YXVkaXRf
dG9rZW5fdD4gYXVkaXRUb2tlbiwgSGFuZGxlJiBoYW5kbGUsIE9wdGlvblNldDxGbGFncz4gZmxh
Z3MpCit7CisgICAgQVNTRVJUKCFoYW5kbGUubV9zYW5kYm94RXh0ZW5zaW9uKTsKKworICAgIGhh
bmRsZS5tX3NhbmRib3hFeHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uSW1wbDo6Y3JlYXRlKGlv
S2l0Q2xhc3MudXRmOCgpLmRhdGEoKSwgVHlwZTo6SU9LaXQsIGF1ZGl0VG9rZW4pOworICAgIGlm
ICghaGFuZGxlLm1fc2FuZGJveEV4dGVuc2lvbikgeworICAgICAgICBMT0dfRVJST1IoIkNvdWxk
IG5vdCBjcmVhdGUgYSBzYW5kYm94IGV4dGVuc2lvbiBmb3IgJyVzJyIsIGlvS2l0Q2xhc3MudXRm
OCgpLmRhdGEoKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKwogU2FuZGJveEV4dGVuc2lvbjo6U2FuZGJveEV4dGVuc2lvbihjb25zdCBIYW5k
bGUmIGhhbmRsZSkKICAgICA6IG1fc2FuZGJveEV4dGVuc2lvbihXVEZNb3ZlKGhhbmRsZS5tX3Nh
bmRib3hFeHRlbnNpb24pKQogewpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgJKHJldmlzaW9uIDI2MDIxNCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDk3LDYgKzE0OTcsNyBAQCBwdWJsaWM6CiAK
ICAgICBjb25zdCBGdW5jdGlvbjxib29sKCk+JiBkZXZpY2VPcmllbnRhdGlvblVzZXJQZXJtaXNz
aW9uSGFuZGxlckZvclRlc3RpbmcoKSBjb25zdCB7IHJldHVybiBtX2RldmljZU9yaWVudGF0aW9u
VXNlclBlcm1pc3Npb25IYW5kbGVyRm9yVGVzdGluZzsgfTsKICAgICB2b2lkIHNldERldmljZU9y
aWVudGF0aW9uVXNlclBlcm1pc3Npb25IYW5kbGVyRm9yVGVzdGluZyhGdW5jdGlvbjxib29sKCk+
JiYgaGFuZGxlcikgeyBtX2RldmljZU9yaWVudGF0aW9uVXNlclBlcm1pc3Npb25IYW5kbGVyRm9y
VGVzdGluZyA9IFdURk1vdmUoaGFuZGxlcik7IH0KKyAgICB2b2lkIHNldERldmljZUhhc0FHWENv
bXBpbGVyU2VydmljZUZvclRlc3RpbmcoKSBjb25zdDsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdJ
UkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5n
SU9TLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dl
YlZpZXdQcml2YXRlRm9yVGVzdGluZ0lPUy5oCShyZXZpc2lvbiAyNjAyMTQpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nSU9TLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTcyLDYgKzcyLDggQEAKIAogLSAodm9pZClfc2V0RGV2aWNlT3Jp
ZW50YXRpb25Vc2VyUGVybWlzc2lvbkhhbmRsZXJGb3JUZXN0aW5nOihCT09MICheKSh2b2lkKSlo
YW5kbGVyOwogCistICh2b2lkKV9zZXREZXZpY2VIYXNBR1hDb21waWxlclNlcnZpY2VGb3JUZXN0
aW5nOworCiBAZW5kCiAKICNlbmRpZiAvLyBUQVJHRVRfT1NfSVBIT05FCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld1Rlc3RpbmdJT1MubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdUZXN0aW5nSU9T
Lm1tCShyZXZpc2lvbiAyNjAyMTQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9z
L1dLV2ViVmlld1Rlc3RpbmdJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTMwNSw2ICszMDUsMTIg
QEAgLSAodm9pZClfc2V0RGV2aWNlT3JpZW50YXRpb25Vc2VyUGVybWlzcwogICAgIF9wYWdlLT5z
ZXREZXZpY2VPcmllbnRhdGlvblVzZXJQZXJtaXNzaW9uSGFuZGxlckZvclRlc3RpbmcoV1RGTW92
ZShoYW5kbGVyV3JhcHBlcikpOwogfQogCistICh2b2lkKV9zZXREZXZpY2VIYXNBR1hDb21waWxl
clNlcnZpY2VGb3JUZXN0aW5nCit7CisgICAgaWYgKF9wYWdlKQorICAgICAgICBfcGFnZS0+c2V0
RGV2aWNlSGFzQUdYQ29tcGlsZXJTZXJ2aWNlRm9yVGVzdGluZygpOworfQorCiBAZW5kCiAKICNl
bmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCShyZXZpc2lvbiAyNjAy
MTQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29h
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBACiAjaW1wb3J0ICJXZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNp
bXBvcnQgIldpbmRvd1NlcnZlckNvbm5lY3Rpb24uaCIKKyNpbXBvcnQgPFdlYkNvcmUvQUdYQ29t
cGlsZXJTZXJ2aWNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbG9yLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0xvY2FsaXplZERldmljZU1vZGVsLmg+CiAjaW1wb3J0IDxXZWJDb3JlL01JTUVUeXBlUmVn
aXN0cnkuaD4KQEAgLTg0LDcgKzg1LDYgQEAKICNpZiBQTEFURk9STShJT1MpCiAjaW1wb3J0IDxw
YWwvc3BpL2NvY29hL1dlYkZpbHRlckV2YWx1YXRvclNQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9p
b3MvTW9iaWxlR2VzdGFsdFNQSS5oPgotI2ltcG9ydCA8c3lzL3V0c25hbWUuaD4KIAogU09GVF9M
SU5LX1BSSVZBVEVfRlJBTUVXT1JLKFdlYkNvbnRlbnRBbmFseXNpcyk7CiBTT0ZUX0xJTktfQ0xB
U1MoV2ViQ29udGVudEFuYWx5c2lzLCBXZWJGaWx0ZXJFdmFsdWF0b3IpOwpAQCAtMTk5LDI1ICsx
OTksNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybVJlc29sdmVQYXRoCiAjZW5kaWYK
IH0KIAotI2lmIFBMQVRGT1JNKElPUykKLXN0YXRpYyBib29sIGRldmljZUhhc0FHWENvbXBpbGVy
U2VydmljZSgpCi17Ci0gICAgc3RhdGljIGJvb2wgZGV2aWNlSGFzQUdYQ29tcGlsZXJTZXJ2aWNl
ID0gZmFsc2U7Ci0gICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGZsYWc7Ci0gICAgc3RkOjpjYWxs
X29uY2UoCi0gICAgICAgIGZsYWcsCi0gICAgICAgIFtdICgpIHsKLSAgICAgICAgICAgIHN0cnVj
dCB1dHNuYW1lIHN5c3RlbUluZm87Ci0gICAgICAgICAgICBpZiAodW5hbWUoJnN5c3RlbUluZm8p
KQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGNvbnN0IGNoYXIqIG1hY2hp
bmUgPSBzeXN0ZW1JbmZvLm1hY2hpbmU7Ci0gICAgICAgICAgICBpZiAoIXN0cmNtcChtYWNoaW5l
LCAiaVBhZDUsMSIpIHx8ICFzdHJjbXAobWFjaGluZSwgImlQYWQ1LDIiKSB8fCAhc3RyY21wKG1h
Y2hpbmUsICJpUGFkNSwzIikgfHwgIXN0cmNtcChtYWNoaW5lLCAiaVBhZDUsNCIpKQotICAgICAg
ICAgICAgICAgIGRldmljZUhhc0FHWENvbXBpbGVyU2VydmljZSA9IHRydWU7Ci0gICAgICAgIH0p
OwotICAgIHJldHVybiBkZXZpY2VIYXNBR1hDb21waWxlclNlcnZpY2U7Ci19Ci0jZW5kaWYKLQog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBzdGF0aWMgYm9vbCBpc0ludGVybmFsSW5zdGFsbCgp
CiB7CkBAIC0zNjEsNyArMzQyLDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0
aWFsaXplVwogI2VuZGlmCiAgICAgCiAjaWYgUExBVEZPUk0oSU9TKQotICAgIGlmIChkZXZpY2VI
YXNBR1hDb21waWxlclNlcnZpY2UoKSkgeworICAgIGlmIChXZWJDb3JlOjpkZXZpY2VIYXNBR1hD
b21waWxlclNlcnZpY2UoKSkgewogICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgY29t
cGlsZXJTZXJ2aWNlRXh0ZW5zaW9uSGFuZGxlOwogICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUuQUdYQ29tcGlsZXJTZXJ2aWNlIiwg
V1RGOjpudWxsb3B0LCBjb21waWxlclNlcnZpY2VFeHRlbnNpb25IYW5kbGUpOwogICAgICAgICBw
YXJhbWV0ZXJzLmNvbXBpbGVyU2VydmljZUV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoY29tcGls
ZXJTZXJ2aWNlRXh0ZW5zaW9uSGFuZGxlKTsKQEAgLTM5Miw2ICszNzMsMjUgQEAgdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplVwogICAgIFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSBydW5uaW5nYm9hcmRFeHRlbnNpb25IYW5kbGU7CiAgICAgaWYgKFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5ydW5uaW5nYm9hcmQiLCBX
VEY6Om51bGxvcHQsIHJ1bm5pbmdib2FyZEV4dGVuc2lvbkhhbmRsZSwgU2FuZGJveEV4dGVuc2lv
bjo6RmxhZ3M6Ok5vUmVwb3J0KSkKICAgICAgICAgcGFyYW1ldGVycy5ydW5uaW5nYm9hcmRFeHRl
bnNpb25IYW5kbGUgPSBXVEZNb3ZlKHJ1bm5pbmdib2FyZEV4dGVuc2lvbkhhbmRsZSk7CisKKyAg
ICBpZiAoV2ViQ29yZTo6ZGV2aWNlSGFzQUdYQ29tcGlsZXJTZXJ2aWNlKCkpIHsKKyAgICAgICAg
c3RhdGljIGNvbnN0IGNoYXIqIGlvS2l0Q2xhc3Nlc1tdID0geworICAgICAgICAgICAgIkFHWENv
bW1hbmRRdWV1ZSIsCisgICAgICAgICAgICAiQUdYRGV2aWNlIiwKKyAgICAgICAgICAgICJBR1hT
aGFyZWRVc2VyQ2xpZW50IiwKKyAgICAgICAgICAgICJJT0FjY2VsQ29udGV4dCIsCisgICAgICAg
ICAgICAiSU9BY2NlbERldmljZSIsCisgICAgICAgICAgICAiSU9BY2NlbFNoYXJlZFVzZXJDbGll
bnQiLAorICAgICAgICAgICAgIklPQWNjZWxTdWJtaXR0ZXIyIiwKKyAgICAgICAgICAgICJJT0Fj
Y2VsQ29udGV4dDIiLAorICAgICAgICAgICAgIklPQWNjZWxEZXZpY2UyIiwKKyAgICAgICAgICAg
ICJJT0FjY2VsU2hhcmVkVXNlckNsaWVudDIiCisgICAgICAgIH07CisgICAgICAgIGF1dG8gc2l6
ZSA9IFdURl9BUlJBWV9MRU5HVEgoaW9LaXRDbGFzc2VzKTsKKyAgICAgICAgcGFyYW1ldGVycy5k
eW5hbWljSU9LaXRFeHRlbnNpb25IYW5kbGVzLmFsbG9jYXRlKHNpemUpOworICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgICAgIFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZUhhbmRsZUZvcklPS2l0Q2xhc3NFeHRlbnNpb24oaW9LaXRDbGFzc2VzW2ldLCBX
VEY6Om51bGxvcHQsIHBhcmFtZXRlcnMuZHluYW1pY0lPS2l0RXh0ZW5zaW9uSGFuZGxlc1tpXSk7
CisgICAgfQogI2VuZGlmCiAgICAgCiAjaWYgUExBVEZPUk0oQ09DT0EpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0JKHJldmlzaW9uIDI2
MDIxNCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0J
KHdvcmtpbmcgY29weSkKQEAgLTYyLDYgKzYyLDcgQEAKICNpbXBvcnQgIldlYlByb2Nlc3NNZXNz
YWdlcy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQ
cm94eS5oIgorI2ltcG9ydCA8V2ViQ29yZS9BR1hDb21waWxlclNlcnZpY2UuaD4KICNpbXBvcnQg
PFdlYkNvcmUvRnJhbWVWaWV3Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtU2NyZWVuLmg+CkBAIC0xNTkxLDYgKzE1OTIsMTEg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OndpbGxQZXJmb3JtUGFzdGVDb21tYQogICAgIGdyYW50QWNj
ZXNzVG9DdXJyZW50UGFzdGVib2FyZERhdGEoVUlQYXN0ZWJvYXJkTmFtZUdlbmVyYWwpOwogfQog
Cit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0RGV2aWNlSGFzQUdYQ29tcGlsZXJTZXJ2aWNlRm9yVGVz
dGluZygpIGNvbnN0Cit7CisgICAgV2ViQ29yZTo6c2V0RGV2aWNlSGFzQUdYQ29tcGlsZXJTZXJ2
aWNlRm9yVGVzdGluZygpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI3VuZGVmIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9XZWJQcm9jZXNzQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQkocmV2aXNpb24gMjYwMjE0KQorKysgU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQkod29ya2luZyBjb3B5
KQpAQCAtMjk2LDYgKzI5Niw5IEBAIHZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXpl
V2ViUHIKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gcGFyYW1ldGVycy5keW5hbWlj
TWFjaEV4dGVuc2lvbkhhbmRsZXMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQogICAgICAgICBTYW5k
Ym94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVycy5keW5hbWljTWFjaEV4
dGVuc2lvbkhhbmRsZXNbaV0pOworCisgICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSBwYXJh
bWV0ZXJzLmR5bmFtaWNJT0tpdEV4dGVuc2lvbkhhbmRsZXMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytp
KQorICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVy
cy5keW5hbWljSU9LaXRFeHRlbnNpb25IYW5kbGVzW2ldKTsKICNlbmRpZgogICAgIAogICAgIGlm
IChwYXJhbWV0ZXJzLm5lSGVscGVyRXh0ZW5zaW9uSGFuZGxlKQpJbmRleDogVG9vbHMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjYwMjIyKQorKysg
VG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMDQt
MTYgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgorCisgICAgICAgIFtpT1Nd
IERlbnkgaW9raXQgb3BlbiBhY2Nlc3MgdG8gZ3JhcGhpY3MgcmVsYXRlZCBjbGFzc2VzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA2MTYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0FHWENvbXBpbGVyU2VydmljZS5tbTogQWRkZWQuCisg
ICAgICAgIChURVNUKToKKwogMjAyMC0wNC0xNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBw
bGUuY29tPgogCiAgICAgICAgIEFkZCBzbGFjay1hd2FyZSBXS1IgaW1wbGVtZW50YXRpb24KSW5k
ZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNjAyMTQpCisrKyBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtODkzLDYgKzg5Myw3IEBACiAJCUMxNUNCQjMwMjNGMUZGMUEwMDMwMENDNyAv
KiBCYWNrbGlnaHRMZXZlbE5vdGlmaWNhdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxNUNCQjJGMjNGMUZGMUEwMDMwMENDNyAvKiBCYWNrbGln
aHRMZXZlbE5vdGlmaWNhdGlvbi5tbSAqLzsgfTsKIAkJQzE1Q0JCM0YyM0ZCMTc3QTAwMzAwQ0M3
IC8qIFByZWZlcmVuY2VDaGFuZ2VzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQzE1Q0JCM0UyM0ZCMTc3QTAwMzAwQ0M3IC8qIFByZWZlcmVuY2VDaGFu
Z2VzLm1tICovOyB9OwogCQlDMTY5MkRDQTIzRDEwREFFMDA2RTg4RjcgLyogQmF0dGVyeS5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxNjkyREM5MjNE
MTBEQUUwMDZFODhGNyAvKiBCYXR0ZXJ5Lm1tICovOyB9OworCQlDMUY3QjczOTI0NDkwODNGMDAx
MjQ1NTcgLyogQUdYQ29tcGlsZXJTZXJ2aWNlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQzFGN0I3MzgyNDQ5MDgzRjAwMTI0NTU3IC8qIEFHWENvbXBp
bGVyU2VydmljZS5tbSAqLzsgfTsKIAkJQzFGRjlFREIyNDQ2NDRGMDAwODM5QUU0IC8qIFdlYkZp
bHRlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMx
RkY5RURBMjQ0NjQ0RjAwMDgzOUFFNCAvKiBXZWJGaWx0ZXIubW0gKi87IH07CiAJCUMyMEY4OEE3
MjI5NUI5NjcwMEQ2MTBGQSAvKiBDb3JlVGV4dC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjBGODhBNjIyOTVCOTY3MDBENjEwRkEg
LyogQ29yZVRleHQuZnJhbWV3b3JrICovOyB9OwogCQlDMjJGQTMyQjIyOEY4NzA4MDA5RDc5ODgg
LyogVGV4dFdpZHRoLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzIyRkEzMkEyMjhGODcwODAwOUQ3OTg4IC8qIFRleHRXaWR0aC5tbSAqLzsgfTsKQEAg
LTI0ODMsNiArMjQ4NCw3IEBACiAJCUMxNUNCQjNFMjNGQjE3N0EwMDMwMENDNyAvKiBQcmVmZXJl
bmNlQ2hhbmdlcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBy
ZWZlcmVuY2VDaGFuZ2VzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMTY5MkRD
OTIzRDEwREFFMDA2RTg4RjcgLyogQmF0dGVyeS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEJh
dHRlcnkubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxRDhFRTIxMjAyOEU4RTMw
MDhFQjE0MSAvKiBXZWJQcm9jZXNzVGVybWluYXRlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gV2ViUHJvY2Vzc1Rlcm1pbmF0ZS5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQzFGN0I3MzgyNDQ5MDgzRjAwMTI0NTU3IC8qIEFHWENvbXBpbGVyU2Vy
dmljZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFHWENvbXBpbGVyU2VydmljZS5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzFGRjlFREEyNDQ2NDRGMDAwODM5QUU0IC8qIFdl
YkZpbHRlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkZpbHRlci5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzIwRjg4QTYyMjk1Qjk2NzAwRDYxMEZBIC8qIENvcmVUZXh0
LmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gQ29yZVRleHQuZnJhbWV3b3JrOyBwYXRoID0g
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlVGV4dC5mcmFtZXdvcms7IHNvdXJjZVRyZWUg
PSBTREtST09UOyB9OwogCQlDMjJGQTMyQTIyOEY4NzA4MDA5RDc5ODggLyogVGV4dFdpZHRoLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gVGV4dFdpZHRoLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMjkzNiw2ICsyOTM4LDcgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCiAJCQkJRTNGOEFCOTEyNDFBQjlDRTAwM0UyQTdFIC8qIEFjY2Vzc2liaWxpdHlS
ZW1vdGVVSUFwcC5tbSAqLywKKwkJCQlDMUY3QjczODI0NDkwODNGMDAxMjQ1NTcgLyogQUdYQ29t
cGlsZXJTZXJ2aWNlLm1tICovLAogCQkJCUMxNUNCQjJGMjNGMUZGMUEwMDMwMENDNyAvKiBCYWNr
bGlnaHRMZXZlbE5vdGlmaWNhdGlvbi5tbSAqLywKIAkJCQlDMTY5MkRDOTIzRDEwREFFMDA2RTg4
RjcgLyogQmF0dGVyeS5tbSAqLywKIAkJCQlDMTNEODJEODI0MTZGMTMyMDBBNjI3OTMgLyogRW5h
YmxlQWNjZXNzaWJpbGl0eS5tbSAqLywKQEAgLTQ3MjksNiArNDczMiw3IEBACiAJCQkJNTVBODE3
RkMyMTgxMDBFMDAwMDRBMzlBIC8qIEFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTVGOUQyRTUyMjA1MDMxODAwQTlBQjM4IC8qIEFkZGl0aW9uYWxT
dXBwb3J0ZWRJbWFnZVR5cGVzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0E5MDlBN0QxRDg3NzQ4
MDAwN0UxMEY4IC8qIEFmZmluZVRyYW5zZm9ybS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDMUY3
QjczOTI0NDkwODNGMDAxMjQ1NTcgLyogQUdYQ29tcGlsZXJTZXJ2aWNlLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQTFERjc0MzIxQzQxQjY1ODAwQTJGNEQwIC8qIEFsd2F5c1JldmFsaWRhdGVkVVJM
U2NoZW1lcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJERTcxQUZFMUQ0OUMwQkQwMDkwNDA5NCAv
KiBBbmltYXRlZFJlc2l6ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTU3MTUyQjVFMjFDQzIwNDUw
MDBDMzdDQSAvKiBBcGR1VGVzdC5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0FHWENvbXBpbGVyU2VydmljZS5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9BR1hDb21waWxlclNlcnZpY2UubW0J
KG5vbmV4aXN0ZW50KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvQUdYQ29t
cGlsZXJTZXJ2aWNlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBXS19IQVZFX0NfU1BJCisKKyNpbXBvcnQg
IlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCisjaW1wb3J0
IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmcuaD4KKworVEVTVChXZWJLaXQsIElP
S2l0T3BlblNhbmRib3hBY2Nlc3NGb3JEZXZpY2VXaXRoQUdYQ29tcGlsZXJTZXJ2aWNlKQorewor
ICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9u
IGFsbG9jXSBpbml0XSk7CisgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0ID0g
YWRvcHRXSyhUZXN0V2ViS2l0QVBJOjpVdGlsOjpjcmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRCdW5k
bGVUZXN0KCJJbnRlcm5hbHNJbmplY3RlZEJ1bmRsZVRlc3QiKSk7CisgICAgY29uZmlndXJhdGlv
bi5nZXQoKS5wcm9jZXNzUG9vbCA9IChXS1Byb2Nlc3NQb29sICopY29udGV4dC5nZXQoKTsKKyAg
ICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpOU01ha2VSZWN0KDAsIDAsIDMwMCwgMzAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRp
b24uZ2V0KCkgYWRkVG9XaW5kb3c6WUVTXSk7CisKKyAgICBbd2ViVmlldyBfc2V0RGV2aWNlSGFz
QUdYQ29tcGlsZXJTZXJ2aWNlRm9yVGVzdGluZ107CisKKyAgICBhdXRvIHNhbmRib3hBY2Nlc3Mg
PSBbJl0geworICAgICAgICByZXR1cm4gW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNj
cmlwdDpAIndpbmRvdy5pbnRlcm5hbHMuaW50ZXJuYWxzLmhhc1NhbmRib3hJT0tpdE9wZW5BY2Nl
c3NUb0NsYXNzKCdjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQnLCAnQUdYQ29tbWFuZFF1ZXVl
JykiXS5ib29sVmFsdWU7CisgICAgfTsKKworICAgIEFTU0VSVF9UUlVFKHNhbmRib3hBY2Nlc3Mo
KSk7CisKK30KKworI2VuZGlmIC8vIFdLX0hBVkVfQ19TUEkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396707</attachid>
            <date>2020-04-16 15:23:07 -0700</date>
            <delta_ts>2020-04-16 15:47:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210616-20200416152306.patch</filename>
            <type>text/plain</type>
            <size>35507</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjAyMTQpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIwLTA0LTE2ICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBEZW55IGlva2l0IG9wZW4gYWNjZXNz
IHRvIGdyYXBoaWNzIHJlbGF0ZWQgY2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwNjE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJLmg6CisKIDIw
MjAtMDQtMTYgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIENs
ZWFuIHVwIFZlY3RvckNvY29hIGNyZWF0ZU5TQXJyYXkgb3ZlcmxvYWRzIGFuZCBhZGQgZG9jdW1l
bnRhdGlvbiBmb3IgY3JlYXRlTlNBcnJheSB0YWtpbmcgYSBtYXAgZnVuY3Rpb24KSW5kZXg6IFNv
dXJjZS9XVEYvd3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XVEYvd3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oCShyZXZpc2lvbiAyNjAyMTQpCisrKyBT
b3VyY2UvV1RGL3d0Zi9zcGkvZGFyd2luL1NhbmRib3hTUEkuaAkod29ya2luZyBjb3B5KQpAQCAt
MzYsNiArMzYsNyBAQCBlbnVtIHNhbmRib3hfZmlsdGVyX3R5cGUgewogICAgIFNBTkRCT1hfRklM
VEVSX05PTkUsCiAgICAgU0FOREJPWF9GSUxURVJfR0xPQkFMX05BTUUgPSAyLAogICAgIFNBTkRC
T1hfRklMVEVSX1hQQ19TRVJWSUNFX05BTUUgPSAxMiwKKyAgICBTQU5EQk9YX0ZJTFRFUl9JT0tJ
VF9DT05ORUNUSU9OLAogfTsKIAogI2RlZmluZSBTQU5EQk9YX05BTUVEX0VYVEVSTkFMIDB4MDAw
MwpAQCAtODQsNiArODUsOSBAQCBzYW5kYm94X3Byb2ZpbGVfdCBzYW5kYm94X2NvbXBpbGVfc3Ry
aW5nCiB2b2lkIHNhbmRib3hfZnJlZV9wcm9maWxlKHNhbmRib3hfcHJvZmlsZV90KTsKIGludCBz
YW5kYm94X2FwcGx5KHNhbmRib3hfcHJvZmlsZV90KTsKIAorY2hhciAqc2FuZGJveF9leHRlbnNp
b25faXNzdWVfaW9raXRfcmVnaXN0cnlfZW50cnlfY2xhc3NfdG9fcHJvY2Vzcyhjb25zdCBjaGFy
ICpleHRlbnNpb25fY2xhc3MsIGNvbnN0IGNoYXIgKnJlZ2lzdHJ5X2VudHJ5X2NsYXNzLCB1aW50
MzJfdCBmbGFncywgYXVkaXRfdG9rZW5fdCk7CitjaGFyICpzYW5kYm94X2V4dGVuc2lvbl9pc3N1
ZV9pb2tpdF9yZWdpc3RyeV9lbnRyeV9jbGFzcyhjb25zdCBjaGFyICpleHRlbnNpb25fY2xhc3Ms
IGNvbnN0IGNoYXIgKnJlZ2lzdHJ5X2VudHJ5X2NsYXNzLCB1aW50MzJfdCBmbGFncyk7CisKIFdU
Rl9FWFRFUk5fQ19FTkQKIAogI2VuZGlmIC8vIE9TKERBUldJTikKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2MDIyMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDI3IEBACisyMDIwLTA0LTE2ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFu
QGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBEZW55IGlva2l0IG9wZW4gYWNjZXNzIHRvIGdy
YXBoaWNzIHJlbGF0ZWQgY2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjEwNjE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgRGVueSBpb2tpdCBvcGVuIGFjY2VzcyB0byBncmFwaGljcyByZWxhdGVk
IGNsYXNzZXMgaW4gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBvbiBpT1MsIGJ1dCBpc3N1ZQorICAg
ICAgICBleHRlbnNpb25zIGZvciB0aGVzZSBmb3Igc29tZSBkZXZpY2VzIHdoaWNoIHN0aWxsIG5l
ZWQgYWNjZXNzIHRvIHRoZW0uCisKKyAgICAgICAgQVBJIHRlc3Q6IFdlYktpdC5JT0tpdE9wZW5T
YW5kYm94QWNjZXNzRm9yRGV2aWNlV2l0aEFHWENvbXBpbGVyU2VydmljZQorCisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2Nv
Y29hL0FHWENvbXBpbGVyU2VydmljZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6c2V0
RGV2aWNlSGFzQUdYQ29tcGlsZXJTZXJ2aWNlRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpkZXZpY2VIYXNBR1hDb21waWxlclNlcnZpY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29h
L0FHWENvbXBpbGVyU2VydmljZS5oOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFs
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Omhhc1NhbmRib3hJT0tpdE9wZW5B
Y2Nlc3NUb0NsYXNzKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAq
IHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6aGFzU2FuZGJveElPS2l0T3BlbkFjY2Vzc1Rv
Q2xhc3MpOgorCiAyMDIwLTA0LTE2ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgog
CiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQtZml4IGFmdGVyIHIyNjAxODI7IGd1YXJkIGNhbGwg
dG8gZnVsbHNjcmVlbk1hbmFnZXIoKSBmb3IgcG9ydHMgd2hpY2ggZG8gbm90CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZp
c2lvbiAyNjAyMTQpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM5OTcsNiArMzk5Nyw4IEBACiAJCUMxNjkyREQy
MjNEMjNBQkQwMDZFODhGNyAvKiBTeXN0ZW1CYXR0ZXJ5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzE2OTJERDEyM0QyM0FCRDAwNkU4OEY3IC8qIFN5
c3RlbUJhdHRlcnkubW0gKi87IH07CiAJCUMxNjkyREQ1MjNEMjNFMDgwMDZFODhGNyAvKiBTeXN0
ZW1CYXR0ZXJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDMTY5MkRENDIzRDIzQUUwMDA2RTg4RjcgLyogU3lzdGVtQmF0dGVyeS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMxRTFEMjM2MjAzREYxNTQw
MDU4NDY2NSAvKiBTY3JlZW5Qcm9wZXJ0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDMUUxRDIzNTIwM0RGMTU0MDA1ODQ2NjUgLyogU2NyZWVuUHJv
cGVydGllcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCUMxRjdCNzMxMjQ0OEYyQUMwMDEyNDU1NyAvKiBBR1hDb21waWxlclNlcnZpY2UuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzFGN0I3MkYyNDQ4
RjJBQzAwMTI0NTU3IC8qIEFHWENvbXBpbGVyU2VydmljZS5jcHAgKi87IH07CisJCUMxRjdCNzMy
MjQ0OEYyQUMwMDEyNDU1NyAvKiBBR1hDb21waWxlclNlcnZpY2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxRjdCNzMwMjQ0OEYyQUMwMDEyNDU1NyAv
KiBBR1hDb21waWxlclNlcnZpY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlDMjAxNUMwQTFCRTZGRUIyMDA4MjIzODkgLyogRm9udFZhcmlhbnRC
dWlsZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
MjAxNUMwOTFCRTZGRTJDMDA4MjIzODkgLyogRm9udFZhcmlhbnRCdWlsZGVyLmggKi87IH07CiAJ
CUMyMURGMkVBMUQ5RTRFOTkwMEY1QjI0QyAvKiBDU1NGb250VmFyaWF0aW9uVmFsdWUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyMURGMkU4MUQ5RTRF
OTkwMEY1QjI0QyAvKiBDU1NGb250VmFyaWF0aW9uVmFsdWUuaCAqLzsgfTsKIAkJQzI0NThFNjMx
RkU4OTdCMDAwNTk0NzU5IC8qIEZvbnRDYWNoZUNvcmVUZXh0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjQ1OEU2MTFGRTg5NzlFMDA1OTQ3NTkgLyog
Rm9udENhY2hlQ29yZVRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtMTM2MDcsNiArMTM2MDksOCBAQAogCQlDMTY5MkRENDIzRDIzQUUwMDA2
RTg4RjcgLyogU3lzdGVtQmF0dGVyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTeXN0ZW1CYXR0ZXJ5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxOEZCNTE4MjQyRjkzODIwMDdFOTg3NSAv
KiBTbGVlcERpc2FibGVyQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNsZWVwRGlzYWJs
ZXJDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMUUxRDIzNTIwM0RG
MTU0MDA1ODQ2NjUgLyogU2NyZWVuUHJvcGVydGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JlZW5Q
cm9wZXJ0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMxRjdCNzJGMjQ0OEYy
QUMwMDEyNDU1NyAvKiBBR1hDb21waWxlclNlcnZpY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
QUdYQ29tcGlsZXJTZXJ2aWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzFG
N0I3MzAyNDQ4RjJBQzAwMTI0NTU3IC8qIEFHWENvbXBpbGVyU2VydmljZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBR1hDb21waWxlclNlcnZpY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QzIwMTVDMDkxQkU2RkUyQzAwODIyMzg5IC8qIEZvbnRWYXJpYW50QnVpbGRlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBGb250VmFyaWFudEJ1aWxkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQzIwRjRGNjQyMURGQkU1QzAwNzBDNDVBIC8qIFdITFNMVHlwZVJlZmVyZW5jZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXSExTTFR5cGVSZWZlcmVuY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDMjBGNEY2NjIxREZGMjM2MDA3MEM0NUEgLyogV0hMU0xJbnRlZ2VyTGl0
ZXJhbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTEludGVnZXJMaXRlcmFsLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIzMjg3LDYgKzIzMjkxLDggQEAKIAkJQTVDOTc0
Q0UxMTQ4NUZEQTAwNjZGMkFCIC8qIGNvY29hICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKKwkJCQlDMUY3QjcyRjI0NDhGMkFDMDAxMjQ1NTcgLyogQUdYQ29tcGls
ZXJTZXJ2aWNlLmNwcCAqLywKKwkJCQlDMUY3QjczMDI0NDhGMkFDMDAxMjQ1NTcgLyogQUdYQ29t
cGlsZXJTZXJ2aWNlLmggKi8sCiAJCQkJQTE0MDkwRkExQUE1MUUxRDAwOTExOTFBIC8qIENvbnRl
bnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1tICovLAogCQkJCUNEN0QzMzQ1MUM3QTE2QkYw
MDA0MTI5MyAvKiBDb3JlVmlkZW9Tb2Z0TGluay5jcHAgKi8sCiAJCQkJQ0Q3RDMzNDYxQzdBMTZC
RjAwMDQxMjkzIC8qIENvcmVWaWRlb1NvZnRMaW5rLmggKi8sCkBAIC0yOTM2MSw2ICsyOTM2Nyw3
IEBACiAJCQkJQTE2NzdFMEUyMTNFMDJBMDAwQTA4QzM0IC8qIEFkZHJlc3NFcnJvcnMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDRjdFNDkxMTM3Q0Q3QzcwMDFEREFFNyAvKiBBZGp1c3RWaWV3U2l6
ZU9yTm90LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NEQwQzQwNjExMTVGMUVBMDAxOEFBMzQgLyog
QWZmaW5lVHJhbnNmb3JtLmggaW4gSGVhZGVycyAqLywKKwkJCQlDMUY3QjczMjI0NDhGMkFDMDAx
MjQ1NTcgLyogQUdYQ29tcGlsZXJTZXJ2aWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0JCNUM4
ODFENUQ2RjQ1MDA1QTcxRjQgLyogQWxsRGVzY2VuZGFudHNDb2xsZWN0aW9uLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk3Mjk5QkM2NzIzRDZBNTMyMDBDQzY4ODMgLyogQWxwaGFQcmVtdWx0aXBsaWNh
dGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0VEQTEyRDcxNTJDQTFDQjAwRDlFMDhEIC8qIEFs
dGVybmF0aXZlVGV4dENsaWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNDAwMyw2ICszNDAxMCw3
IEBACiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCiAJCQkJ
QTk3ODdDQjQxRjVGNUM2NjAwQzU1MUM2IC8qIEFjY2Vzc2liaWxpdHlNZWRpYU9iamVjdC5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlDMUY3QjczMTI0NDhGMkFDMDAxMjQ1NTcgLyogQUdYQ29tcGls
ZXJTZXJ2aWNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEMEVFRTBFMTQ3NDNGMzkwMDNFQUZB
MiAvKiBBdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNENTU5Njkx
MTQ3NUI2NzgwMDFEMEJEMCAvKiBBdWRpb0ZpbGVSZWFkZXJJT1MuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQ0RBNzk4MjcxNzBBMjc5MTAwRDQ1QzU1IC8qIEF1ZGlvU2Vzc2lvbklPUy5tbSBpbiBT
b3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQUdYQ29tcGls
ZXJTZXJ2aWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9BR1hDb21waWxlclNlcnZpY2UuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL0FHWENvbXBpbGVyU2VydmljZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw2MCBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiBhcmUgbWV0Ogor
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQUdYQ29tcGlsZXJTZXJ2aWNlLmgi
CisKKyNpZiBQTEFURk9STShJT1MpCisKKyNpbmNsdWRlIDxzeXMvdXRzbmFtZS5oPgorI2luY2x1
ZGUgPHd0Zi9PcHRpb25hbC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBPcHRp
b25hbDxib29sPiBoYXNBR1hDb21waWxlclNlcnZpY2U7CisKK3ZvaWQgc2V0RGV2aWNlSGFzQUdY
Q29tcGlsZXJTZXJ2aWNlRm9yVGVzdGluZygpCit7CisgICAgaGFzQUdYQ29tcGlsZXJTZXJ2aWNl
ID0gdHJ1ZTsKK30KKworYm9vbCBkZXZpY2VIYXNBR1hDb21waWxlclNlcnZpY2UoKQoreworICAg
IGlmICghaGFzQUdYQ29tcGlsZXJTZXJ2aWNlKSB7CisgICAgICAgIHN0cnVjdCB1dHNuYW1lIHN5
c3RlbUluZm87CisgICAgICAgIGlmICh1bmFtZSgmc3lzdGVtSW5mbykpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIGNvbnN0IGNoYXIqIG1hY2hpbmUgPSBzeXN0ZW1JbmZvLm1h
Y2hpbmU7CisgICAgICAgIGlmICghc3RyY21wKG1hY2hpbmUsICJpUGFkNSwxIikgfHwgIXN0cmNt
cChtYWNoaW5lLCAiaVBhZDUsMiIpIHx8ICFzdHJjbXAobWFjaGluZSwgImlQYWQ1LDMiKSB8fCAh
c3RyY21wKG1hY2hpbmUsICJpUGFkNSw0IikpCisgICAgICAgICAgICBoYXNBR1hDb21waWxlclNl
cnZpY2UgPSB0cnVlOworICAgICAgICBlbHNlCisgICAgICAgICAgICBoYXNBR1hDb21waWxlclNl
cnZpY2UgPSBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuICpoYXNBR1hDb21waWxlclNlcnZpY2U7
Cit9CisKK30KKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9B
R1hDb21waWxlclNlcnZpY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9BR1hDb21waWxlclNlcnZpY2UuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9BR1hDb21waWxlclNlcnZpY2UuaAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDMzIEBACisvKgorKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorKgorKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisqIGFyZSBtZXQ6
CisqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1dFQkNPUkVfRVhQ
T1JUIGJvb2wgZGV2aWNlSGFzQUdYQ29tcGlsZXJTZXJ2aWNlKCk7CitXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldERldmljZUhhc0FHWENvbXBpbGVyU2VydmljZUZvclRlc3RpbmcoKTsKKworfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkocmV2aXNpb24gMjYwMjE0KQorKysg
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
NjAzLDYgKzU2MDMsMTEgQEAgYm9vbCBJbnRlcm5hbHM6OmlzUmVtb3RlVUlBcHBGb3JBY2Nlc3Np
YgogewogICAgIHJldHVybiBmYWxzZTsKIH0KKworYm9vbCBJbnRlcm5hbHM6Omhhc1NhbmRib3hJ
T0tpdE9wZW5BY2Nlc3NUb0NsYXNzKGNvbnN0IFN0cmluZyYgcHJvY2VzcywgY29uc3QgU3RyaW5n
JiBpb0tpdENsYXNzKQoreworICAgIHJldHVybiBmYWxzZTsKK30KICNlbmRpZgogCiBTdHJpbmcg
SW50ZXJuYWxzOjptZWRpYU1JTUVUeXBlRm9yRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5z
aW9uKQpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCShyZXZpc2lvbiAyNjAyMTQp
CisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCSh3b3JraW5nIGNvcHkpCkBA
IC05NzQsNiArOTc0LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNTYW5kYm94TWFjaExvb2t1
cEFjY2Vzc1RvR2xvYmFsTmFtZShjb25zdCBTdHJpbmcmIHByb2Nlc3MsIGNvbnN0IFN0cmluZyYg
c2VydmljZSk7CiAgICAgYm9vbCBoYXNTYW5kYm94TWFjaExvb2t1cEFjY2Vzc1RvWFBDU2Vydmlj
ZU5hbWUoY29uc3QgU3RyaW5nJiBwcm9jZXNzLCBjb25zdCBTdHJpbmcmIHNlcnZpY2UpOworICAg
IGJvb2wgaGFzU2FuZGJveElPS2l0T3BlbkFjY2Vzc1RvQ2xhc3MoY29uc3QgU3RyaW5nJiBwcm9j
ZXNzLCBjb25zdCBTdHJpbmcmIGlvS2l0Q2xhc3MpOwogCiAgICAgU3RyaW5nIGhpZ2hsaWdodFBz
ZXVkb0VsZW1lbnRDb2xvcihjb25zdCBTdHJpbmcmIGhpZ2hsaWdodE5hbWUsIEVsZW1lbnQmKTsK
IApJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAkocmV2aXNpb24gMjYwMjE0
KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC04ODUsNyArODg1LDggQEAgZW51bSBDb21wb3NpdGluZ1BvbGljeSB7CiAKICAgICBib29s
ZWFuIGhhc1NhbmRib3hNYWNoTG9va3VwQWNjZXNzVG9HbG9iYWxOYW1lKERPTVN0cmluZyBwcm9j
ZXNzLCBET01TdHJpbmcgc2VydmljZSk7CiAgICAgYm9vbGVhbiBoYXNTYW5kYm94TWFjaExvb2t1
cEFjY2Vzc1RvWFBDU2VydmljZU5hbWUoRE9NU3RyaW5nIHByb2Nlc3MsIERPTVN0cmluZyBzZXJ2
aWNlKTsKLSAgICAKKyAgICBib29sZWFuIGhhc1NhbmRib3hJT0tpdE9wZW5BY2Nlc3NUb0NsYXNz
KERPTVN0cmluZyBwcm9jZXNzLCBET01TdHJpbmcgaW9LaXRDbGFzcyk7CisKICAgICBET01TdHJp
bmcgc3lzdGVtQ29sb3JGb3JDU1NWYWx1ZShET01TdHJpbmcgY3NzVmFsdWUsIGJvb2xlYW4gdXNl
RGFya01vZGVBcHBlYXJhbmNlLCBib29sZWFuIHVzZUVsZXZhdGVkVXNlckludGVyZmFjZUxldmVs
KTsKICAgICBET01TdHJpbmcgZm9jdXNSaW5nQ29sb3IoKTsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMubW0JKHJldmlzaW9uIDI2MDIxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaW1w
b3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkludGVybmFscy5oIgogCisjaW1wb3J0ICJBR1hDb21w
aWxlclNlcnZpY2UuaCIKICNpbXBvcnQgIkRPTVVSTC5oIgogI2ltcG9ydCAiRGljdGlvbmFyeUxv
b2t1cC5oIgogI2ltcG9ydCAiRG9jdW1lbnQuaCIKQEAgLTM4LDYgKzM5LDcgQEAKICNpbXBvcnQg
PEFWRm91bmRhdGlvbi9BVlBsYXllci5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0FjY2Vz
c2liaWxpdHlTUEkuaD4KICNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgorI2ltcG9y
dCA8d3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oPgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICNpbXBvcnQgPHBhbC9pb3MvVUlLaXRTb2Z0TGluay5oPgpAQCAtMTE2LDQgKzExOCwxNSBA
QCBib29sIEludGVybmFsczo6aXNSZW1vdGVVSUFwcEZvckFjY2Vzc2liCiAjZW5kaWYKIH0KIAor
Ym9vbCBJbnRlcm5hbHM6Omhhc1NhbmRib3hJT0tpdE9wZW5BY2Nlc3NUb0NsYXNzKGNvbnN0IFN0
cmluZyYgcHJvY2VzcywgY29uc3QgU3RyaW5nJiBpb0tpdENsYXNzKQoreworICAgIHBpZF90IHBp
ZDsKKyAgICBpZiAocHJvY2VzcyA9PSAiY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50IikKKyAg
ICAgICAgcGlkID0gZ2V0cGlkKCk7CisgICAgZWxzZQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOworCisgICAgcmV0dXJuICFzYW5kYm94X2NoZWNrKHBpZCwgImlva2l0LW9w
ZW4iLCBzdGF0aWNfY2FzdDxlbnVtIHNhbmRib3hfZmlsdGVyX3R5cGU+KFNBTkRCT1hfRklMVEVS
X0lPS0lUX0NPTk5FQ1RJT04gfCBTQU5EQk9YX0NIRUNLX05PX1JFUE9SVCksIGlvS2l0Q2xhc3Mu
dXRmOCgpLmRhdGEoKSk7Cit9CisKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjAyMjIpCisr
KyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBA
CisyMDIwLTA0LTE2ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAg
ICAgICBbaU9TXSBEZW55IGlva2l0IG9wZW4gYWNjZXNzIHRvIGdyYXBoaWNzIHJlbGF0ZWQgY2xh
c3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEw
NjE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGVu
eSBpb2tpdCBvcGVuIGFjY2VzcyB0byBncmFwaGljcyByZWxhdGVkIGNsYXNzZXMgaW4gdGhlIFdl
YkNvbnRlbnQgcHJvY2VzcyBvbiBpT1MsIGJ1dCBpc3N1ZQorICAgICAgICBleHRlbnNpb25zIGZv
ciB0aGVzZSBmb3Igc29tZSBkZXZpY2VzIHdoaWNoIHN0aWxsIG5lZWQgYWNjZXNzIHRvIHRoZW0u
CisKKyAgICAgICAgKiBSZXNvdXJjZXMvU2FuZGJveFByb2ZpbGVzL2lvcy9jb20uYXBwbGUuV2Vi
S2l0LldlYkNvbnRlbnQuc2I6CisgICAgICAgICogU2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNp
b25Db2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbkltcGw6OnNhbmRi
b3hFeHRlbnNpb25Gb3JUeXBlKToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6
Y3JlYXRlSGFuZGxlRm9ySU9LaXRDbGFzc0V4dGVuc2lvbik6CisgICAgICAgICogU2hhcmVkL1Nh
bmRib3hFeHRlbnNpb24uaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdQcml2YXRl
Rm9yVGVzdGluZ0lPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld1Rl
c3RpbmdJT1MubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfc2V0RGV2aWNlSGFzQUdYQ29tcGls
ZXJTZXJ2aWNlRm9yVGVzdGluZ10pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9j
ZXNzUG9vbENvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZv
cm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OmRldmljZUhhc0FHWENv
bXBpbGVyU2VydmljZSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldERldmljZUhhc0FHWENvbXBpbGVyU2VydmljZUZv
clRlc3RpbmcgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0Nv
Y29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVX
ZWJQcm9jZXNzKToKKwogMjAyMC0wNC0xNiAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxl
LmNvbT4KIAogICAgICAgICBbbWFjT1NdIFN3aXRjaCB1bnVzZWQgSU9LaXQgY2xhc3NlcyBmcm9t
IGFsbG93LXdpdGgtcmVwb3J0IHRvIGRlbnktd2l0aC1yZXBvcnQKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5XZWJDb250
ZW50LnNiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUmVzb3VyY2VzL1NhbmRib3hQcm9m
aWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiCShyZXZpc2lvbiAyNjAyMTQp
CisrKyBTb3VyY2UvV2ViS2l0L1Jlc291cmNlcy9TYW5kYm94UHJvZmlsZXMvaW9zL2NvbS5hcHBs
ZS5XZWJLaXQuV2ViQ29udGVudC5zYgkod29ya2luZyBjb3B5KQpAQCAtMjE0LDcgKzIxNCw3IEBA
CiA7OzsKIChkZWZpbmUtb25jZSAob3BlbmdsKQogICAgIDs7IEl0ZW1zIG5vdCBzZWVuIGluIHRl
c3RpbmcKLSAgICAoYWxsb3cgaW9raXQtb3BlbiAod2l0aCByZXBvcnQpICh3aXRoIHRlbGVtZXRy
eSkKKyAgICAoZGVueSBpb2tpdC1vcGVuICh3aXRoIHRlbGVtZXRyeSkKICAgICAgICAgICAgKGlv
a2l0LWNvbm5lY3Rpb24gIklPR1BVIikKICAgICAgICAgICAgKGlva2l0LXVzZXItY2xpZW50LWNs
YXNzCiAgICAgICAgICAgICAgICAgIkFHWENvbW1hbmRRdWV1ZSIKQEAgLTkyNCw2ICs5MjQsMjQg
QEAKICAgICApCiApCiAKKyhhbGxvdyBpb2tpdC1vcGVuCisgICAgKHJlcXVpcmUtYWxsCisgICAg
ICAgIChleHRlbnNpb24gImNvbS5hcHBsZS53ZWJraXQuZXh0ZW5zaW9uLmlva2l0IikKKyAgICAg
ICAgKGlva2l0LXVzZXItY2xpZW50LWNsYXNzCisgICAgICAgICAgICAiQUdYQ29tbWFuZFF1ZXVl
IgorICAgICAgICAgICAgIkFHWERldmljZSIKKyAgICAgICAgICAgICJBR1hTaGFyZWRVc2VyQ2xp
ZW50IgorICAgICAgICAgICAgIklPQWNjZWxDb250ZXh0IgorICAgICAgICAgICAgIklPQWNjZWxE
ZXZpY2UiCisgICAgICAgICAgICAiSU9BY2NlbFNoYXJlZFVzZXJDbGllbnQiCisgICAgICAgICAg
ICAiSU9BY2NlbFN1Ym1pdHRlcjIiCisgICAgICAgICAgICAiSU9BY2NlbENvbnRleHQyIgorICAg
ICAgICAgICAgIklPQWNjZWxEZXZpY2UyIgorICAgICAgICAgICAgIklPQWNjZWxTaGFyZWRVc2Vy
Q2xpZW50MiIKKyAgICAgICAgKQorICAgICkKKykKKwogKGFsbG93IG1hY2gtbG9va3VwCiAgICAg
KHJlcXVpcmUtYWxsCiAgICAgICAgIChleHRlbnNpb24gImNvbS5hcHBsZS53ZWJraXQuZXh0ZW5z
aW9uLm1hY2giKQpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvU2FuZGJveEV4dGVuc2lvbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaAko
cmV2aXNpb24gMjYwMjE0KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvU2FuZGJveEV4dGVuc2lv
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBAIHB1YmxpYzoKICAgICAgICAgUmVh
ZE9ubHksCiAgICAgICAgIFJlYWRXcml0ZSwKICAgICAgICAgTWFjaCwKKyAgICAgICAgSU9LaXQs
CiAgICAgICAgIEdlbmVyaWMsCiAgICAgICAgIFJlYWRCeVByb2Nlc3MKICAgICB9OwpAQCAtMTEz
LDYgKzExNCw3IEBAIHB1YmxpYzoKICNpZiBIQVZFKEFVRElUX1RPS0VOKQogICAgIHN0YXRpYyBi
b29sIGNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoY29uc3QgU3RyaW5nJiBzZXJ2aWNlLCBPcHRp
b25hbDxhdWRpdF90b2tlbl90PiwgSGFuZGxlJiwgT3B0aW9uU2V0PEZsYWdzPiA9IEZsYWdzOjpE
ZWZhdWx0KTsKICAgICBzdGF0aWMgYm9vbCBjcmVhdGVIYW5kbGVGb3JSZWFkQnlBdWRpdFRva2Vu
KGNvbnN0IFN0cmluZyYgcGF0aCwgYXVkaXRfdG9rZW5fdCwgSGFuZGxlJik7CisgICAgc3RhdGlj
IGJvb2wgY3JlYXRlSGFuZGxlRm9ySU9LaXRDbGFzc0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIGlv
a2l0Q2xhc3MsIE9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+LCBIYW5kbGUmLCBPcHRpb25TZXQ8Rmxh
Z3M+ID0gRmxhZ3M6OkRlZmF1bHQpOwogI2VuZGlmCiAgICAgflNhbmRib3hFeHRlbnNpb24oKTsK
IApJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5jcHAJKHJldmlzaW9uIDI2MDIxNCkKKysrIFNvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NjYsNiArMTY2LDcgQEAgdm9pZCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZAog
ICAgIGVuY29kZXIgPDwgZGlhZ25vc3RpY3NFeHRlbnNpb25IYW5kbGU7CiAgICAgZW5jb2RlciA8
PCBydW5uaW5nYm9hcmRFeHRlbnNpb25IYW5kbGU7CiAgICAgZW5jb2RlciA8PCBkeW5hbWljTWFj
aEV4dGVuc2lvbkhhbmRsZXM7CisgICAgZW5jb2RlciA8PCBkeW5hbWljSU9LaXRFeHRlbnNpb25I
YW5kbGVzOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTQ1Nyw2ICs0NTgsMTIg
QEAgYm9vbCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZAogICAgIGlmICghZHlu
YW1pY01hY2hFeHRlbnNpb25IYW5kbGVzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcGFy
YW1ldGVycy5keW5hbWljTWFjaEV4dGVuc2lvbkhhbmRsZXMgPSBXVEZNb3ZlKCpkeW5hbWljTWFj
aEV4dGVuc2lvbkhhbmRsZXMpOworCisgICAgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlQXJyYXk+IGR5bmFtaWNJT0tpdEV4dGVuc2lvbkhhbmRsZXM7CisgICAgZGVjb2RlciA+PiBk
eW5hbWljSU9LaXRFeHRlbnNpb25IYW5kbGVzOworICAgIGlmICghZHluYW1pY0lPS2l0RXh0ZW5z
aW9uSGFuZGxlcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHBhcmFtZXRlcnMuZHluYW1p
Y0lPS2l0RXh0ZW5zaW9uSGFuZGxlcyA9IFdURk1vdmUoKmR5bmFtaWNJT0tpdEV4dGVuc2lvbkhh
bmRsZXMpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHJldmlz
aW9uIDI2MDIxNCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjA2LDYgKzIwNiw3IEBAIHN0cnVjdCBXZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGU+IGRpYWdub3N0aWNzRXh0ZW5zaW9uSGFuZGxlOwogICAgIE9wdGlvbmFsPFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZT4gcnVubmluZ2JvYXJkRXh0ZW5zaW9uSGFuZGxlOwogICAgIFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IGR5bmFtaWNNYWNoRXh0ZW5zaW9uSGFuZGxlczsK
KyAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSBkeW5hbWljSU9LaXRFeHRlbnNpb25I
YW5kbGVzOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvU2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9TYW5kYm94RXh0ZW5zaW9uQ29jb2EubW0JKHJldmlz
aW9uIDI2MDIxNCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNp
b25Db2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTA1LDYgKzEwNSwxMCBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICNlbmRpZgorICAgICAgICBjYXNlIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OklPS2l0
OgorICAgICAgICAgICAgaWYgKCFhdWRpdFRva2VuKQorICAgICAgICAgICAgICAgIHJldHVybiBz
YW5kYm94X2V4dGVuc2lvbl9pc3N1ZV9pb2tpdF9yZWdpc3RyeV9lbnRyeV9jbGFzcygiY29tLmFw
cGxlLndlYmtpdC5leHRlbnNpb24uaW9raXQiX3MsIHBhdGgsIGV4dGVuc2lvbkZsYWdzKTsKKyAg
ICAgICAgICAgIHJldHVybiBzYW5kYm94X2V4dGVuc2lvbl9pc3N1ZV9pb2tpdF9yZWdpc3RyeV9l
bnRyeV9jbGFzc190b19wcm9jZXNzKCJjb20uYXBwbGUud2Via2l0LmV4dGVuc2lvbi5pb2tpdCJf
cywgcGF0aCwgZXh0ZW5zaW9uRmxhZ3MsICphdWRpdFRva2VuKTsKICAgICAgICAgY2FzZSBTYW5k
Ym94RXh0ZW5zaW9uOjpUeXBlOjpHZW5lcmljOgogICAgICAgICAgICAgcmV0dXJuIHNhbmRib3hf
ZXh0ZW5zaW9uX2lzc3VlX2dlbmVyaWMocGF0aCwgZXh0ZW5zaW9uRmxhZ3MpOwogICAgICAgICBj
YXNlIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRCeVByb2Nlc3M6CkBAIC0zNjYsNiArMzcw
LDE5IEBAIGJvb2wgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmUKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAorYm9vbCBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JJT0tp
dENsYXNzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgaW9LaXRDbGFzcywgT3B0aW9uYWw8YXVkaXRf
dG9rZW5fdD4gYXVkaXRUb2tlbiwgSGFuZGxlJiBoYW5kbGUsIE9wdGlvblNldDxGbGFncz4gZmxh
Z3MpCit7CisgICAgQVNTRVJUKCFoYW5kbGUubV9zYW5kYm94RXh0ZW5zaW9uKTsKKworICAgIGhh
bmRsZS5tX3NhbmRib3hFeHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uSW1wbDo6Y3JlYXRlKGlv
S2l0Q2xhc3MudXRmOCgpLmRhdGEoKSwgVHlwZTo6SU9LaXQsIGF1ZGl0VG9rZW4pOworICAgIGlm
ICghaGFuZGxlLm1fc2FuZGJveEV4dGVuc2lvbikgeworICAgICAgICBMT0dfRVJST1IoIkNvdWxk
IG5vdCBjcmVhdGUgYSBzYW5kYm94IGV4dGVuc2lvbiBmb3IgJyVzJyIsIGlvS2l0Q2xhc3MudXRm
OCgpLmRhdGEoKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKwogU2FuZGJveEV4dGVuc2lvbjo6U2FuZGJveEV4dGVuc2lvbihjb25zdCBIYW5k
bGUmIGhhbmRsZSkKICAgICA6IG1fc2FuZGJveEV4dGVuc2lvbihXVEZNb3ZlKGhhbmRsZS5tX3Nh
bmRib3hFeHRlbnNpb24pKQogewpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgJKHJldmlzaW9uIDI2MDIxNCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDk3LDYgKzE0OTcsNyBAQCBwdWJsaWM6CiAK
ICAgICBjb25zdCBGdW5jdGlvbjxib29sKCk+JiBkZXZpY2VPcmllbnRhdGlvblVzZXJQZXJtaXNz
aW9uSGFuZGxlckZvclRlc3RpbmcoKSBjb25zdCB7IHJldHVybiBtX2RldmljZU9yaWVudGF0aW9u
VXNlclBlcm1pc3Npb25IYW5kbGVyRm9yVGVzdGluZzsgfTsKICAgICB2b2lkIHNldERldmljZU9y
aWVudGF0aW9uVXNlclBlcm1pc3Npb25IYW5kbGVyRm9yVGVzdGluZyhGdW5jdGlvbjxib29sKCk+
JiYgaGFuZGxlcikgeyBtX2RldmljZU9yaWVudGF0aW9uVXNlclBlcm1pc3Npb25IYW5kbGVyRm9y
VGVzdGluZyA9IFdURk1vdmUoaGFuZGxlcik7IH0KKyAgICB2b2lkIHNldERldmljZUhhc0FHWENv
bXBpbGVyU2VydmljZUZvclRlc3RpbmcoKSBjb25zdDsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdJ
UkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5n
SU9TLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dl
YlZpZXdQcml2YXRlRm9yVGVzdGluZ0lPUy5oCShyZXZpc2lvbiAyNjAyMTQpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nSU9TLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTcyLDYgKzcyLDggQEAKIAogLSAodm9pZClfc2V0RGV2aWNlT3Jp
ZW50YXRpb25Vc2VyUGVybWlzc2lvbkhhbmRsZXJGb3JUZXN0aW5nOihCT09MICheKSh2b2lkKSlo
YW5kbGVyOwogCistICh2b2lkKV9zZXREZXZpY2VIYXNBR1hDb21waWxlclNlcnZpY2VGb3JUZXN0
aW5nOworCiBAZW5kCiAKICNlbmRpZiAvLyBUQVJHRVRfT1NfSVBIT05FCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld1Rlc3RpbmdJT1MubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdUZXN0aW5nSU9T
Lm1tCShyZXZpc2lvbiAyNjAyMTQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9z
L1dLV2ViVmlld1Rlc3RpbmdJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTMwNSw2ICszMDUsMTIg
QEAgLSAodm9pZClfc2V0RGV2aWNlT3JpZW50YXRpb25Vc2VyUGVybWlzcwogICAgIF9wYWdlLT5z
ZXREZXZpY2VPcmllbnRhdGlvblVzZXJQZXJtaXNzaW9uSGFuZGxlckZvclRlc3RpbmcoV1RGTW92
ZShoYW5kbGVyV3JhcHBlcikpOwogfQogCistICh2b2lkKV9zZXREZXZpY2VIYXNBR1hDb21waWxl
clNlcnZpY2VGb3JUZXN0aW5nCit7CisgICAgaWYgKF9wYWdlKQorICAgICAgICBfcGFnZS0+c2V0
RGV2aWNlSGFzQUdYQ29tcGlsZXJTZXJ2aWNlRm9yVGVzdGluZygpOworfQorCiBAZW5kCiAKICNl
bmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCShyZXZpc2lvbiAyNjAy
MTQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29h
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBACiAjaW1wb3J0ICJXZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNp
bXBvcnQgIldpbmRvd1NlcnZlckNvbm5lY3Rpb24uaCIKKyNpbXBvcnQgPFdlYkNvcmUvQUdYQ29t
cGlsZXJTZXJ2aWNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbG9yLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0xvY2FsaXplZERldmljZU1vZGVsLmg+CiAjaW1wb3J0IDxXZWJDb3JlL01JTUVUeXBlUmVn
aXN0cnkuaD4KQEAgLTg0LDcgKzg1LDYgQEAKICNpZiBQTEFURk9STShJT1MpCiAjaW1wb3J0IDxw
YWwvc3BpL2NvY29hL1dlYkZpbHRlckV2YWx1YXRvclNQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9p
b3MvTW9iaWxlR2VzdGFsdFNQSS5oPgotI2ltcG9ydCA8c3lzL3V0c25hbWUuaD4KIAogU09GVF9M
SU5LX1BSSVZBVEVfRlJBTUVXT1JLKFdlYkNvbnRlbnRBbmFseXNpcyk7CiBTT0ZUX0xJTktfQ0xB
U1MoV2ViQ29udGVudEFuYWx5c2lzLCBXZWJGaWx0ZXJFdmFsdWF0b3IpOwpAQCAtMTk5LDI1ICsx
OTksNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybVJlc29sdmVQYXRoCiAjZW5kaWYK
IH0KIAotI2lmIFBMQVRGT1JNKElPUykKLXN0YXRpYyBib29sIGRldmljZUhhc0FHWENvbXBpbGVy
U2VydmljZSgpCi17Ci0gICAgc3RhdGljIGJvb2wgZGV2aWNlSGFzQUdYQ29tcGlsZXJTZXJ2aWNl
ID0gZmFsc2U7Ci0gICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGZsYWc7Ci0gICAgc3RkOjpjYWxs
X29uY2UoCi0gICAgICAgIGZsYWcsCi0gICAgICAgIFtdICgpIHsKLSAgICAgICAgICAgIHN0cnVj
dCB1dHNuYW1lIHN5c3RlbUluZm87Ci0gICAgICAgICAgICBpZiAodW5hbWUoJnN5c3RlbUluZm8p
KQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGNvbnN0IGNoYXIqIG1hY2hp
bmUgPSBzeXN0ZW1JbmZvLm1hY2hpbmU7Ci0gICAgICAgICAgICBpZiAoIXN0cmNtcChtYWNoaW5l
LCAiaVBhZDUsMSIpIHx8ICFzdHJjbXAobWFjaGluZSwgImlQYWQ1LDIiKSB8fCAhc3RyY21wKG1h
Y2hpbmUsICJpUGFkNSwzIikgfHwgIXN0cmNtcChtYWNoaW5lLCAiaVBhZDUsNCIpKQotICAgICAg
ICAgICAgICAgIGRldmljZUhhc0FHWENvbXBpbGVyU2VydmljZSA9IHRydWU7Ci0gICAgICAgIH0p
OwotICAgIHJldHVybiBkZXZpY2VIYXNBR1hDb21waWxlclNlcnZpY2U7Ci19Ci0jZW5kaWYKLQog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBzdGF0aWMgYm9vbCBpc0ludGVybmFsSW5zdGFsbCgp
CiB7CkBAIC0zNjEsNyArMzQyLDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0
aWFsaXplVwogI2VuZGlmCiAgICAgCiAjaWYgUExBVEZPUk0oSU9TKQotICAgIGlmIChkZXZpY2VI
YXNBR1hDb21waWxlclNlcnZpY2UoKSkgeworICAgIGlmIChXZWJDb3JlOjpkZXZpY2VIYXNBR1hD
b21waWxlclNlcnZpY2UoKSkgewogICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgY29t
cGlsZXJTZXJ2aWNlRXh0ZW5zaW9uSGFuZGxlOwogICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUuQUdYQ29tcGlsZXJTZXJ2aWNlIiwg
V1RGOjpudWxsb3B0LCBjb21waWxlclNlcnZpY2VFeHRlbnNpb25IYW5kbGUpOwogICAgICAgICBw
YXJhbWV0ZXJzLmNvbXBpbGVyU2VydmljZUV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoY29tcGls
ZXJTZXJ2aWNlRXh0ZW5zaW9uSGFuZGxlKTsKQEAgLTM5Miw2ICszNzMsMjUgQEAgdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplVwogICAgIFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSBydW5uaW5nYm9hcmRFeHRlbnNpb25IYW5kbGU7CiAgICAgaWYgKFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5ydW5uaW5nYm9hcmQiLCBX
VEY6Om51bGxvcHQsIHJ1bm5pbmdib2FyZEV4dGVuc2lvbkhhbmRsZSwgU2FuZGJveEV4dGVuc2lv
bjo6RmxhZ3M6Ok5vUmVwb3J0KSkKICAgICAgICAgcGFyYW1ldGVycy5ydW5uaW5nYm9hcmRFeHRl
bnNpb25IYW5kbGUgPSBXVEZNb3ZlKHJ1bm5pbmdib2FyZEV4dGVuc2lvbkhhbmRsZSk7CisKKyAg
ICBpZiAoV2ViQ29yZTo6ZGV2aWNlSGFzQUdYQ29tcGlsZXJTZXJ2aWNlKCkpIHsKKyAgICAgICAg
c3RhdGljIGNvbnN0IGNoYXIqIGlvS2l0Q2xhc3Nlc1tdID0geworICAgICAgICAgICAgIkFHWENv
bW1hbmRRdWV1ZSIsCisgICAgICAgICAgICAiQUdYRGV2aWNlIiwKKyAgICAgICAgICAgICJBR1hT
aGFyZWRVc2VyQ2xpZW50IiwKKyAgICAgICAgICAgICJJT0FjY2VsQ29udGV4dCIsCisgICAgICAg
ICAgICAiSU9BY2NlbERldmljZSIsCisgICAgICAgICAgICAiSU9BY2NlbFNoYXJlZFVzZXJDbGll
bnQiLAorICAgICAgICAgICAgIklPQWNjZWxTdWJtaXR0ZXIyIiwKKyAgICAgICAgICAgICJJT0Fj
Y2VsQ29udGV4dDIiLAorICAgICAgICAgICAgIklPQWNjZWxEZXZpY2UyIiwKKyAgICAgICAgICAg
ICJJT0FjY2VsU2hhcmVkVXNlckNsaWVudDIiCisgICAgICAgIH07CisgICAgICAgIGF1dG8gc2l6
ZSA9IFdURl9BUlJBWV9MRU5HVEgoaW9LaXRDbGFzc2VzKTsKKyAgICAgICAgcGFyYW1ldGVycy5k
eW5hbWljSU9LaXRFeHRlbnNpb25IYW5kbGVzLmFsbG9jYXRlKHNpemUpOworICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgICAgIFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZUhhbmRsZUZvcklPS2l0Q2xhc3NFeHRlbnNpb24oaW9LaXRDbGFzc2VzW2ldLCBX
VEY6Om51bGxvcHQsIHBhcmFtZXRlcnMuZHluYW1pY0lPS2l0RXh0ZW5zaW9uSGFuZGxlc1tpXSk7
CisgICAgfQogI2VuZGlmCiAgICAgCiAjaWYgUExBVEZPUk0oQ09DT0EpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0JKHJldmlzaW9uIDI2
MDIxNCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0J
KHdvcmtpbmcgY29weSkKQEAgLTYyLDYgKzYyLDcgQEAKICNpbXBvcnQgIldlYlByb2Nlc3NNZXNz
YWdlcy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQ
cm94eS5oIgorI2ltcG9ydCA8V2ViQ29yZS9BR1hDb21waWxlclNlcnZpY2UuaD4KICNpbXBvcnQg
PFdlYkNvcmUvRnJhbWVWaWV3Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtU2NyZWVuLmg+CkBAIC0xNTkxLDYgKzE1OTIsMTEg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OndpbGxQZXJmb3JtUGFzdGVDb21tYQogICAgIGdyYW50QWNj
ZXNzVG9DdXJyZW50UGFzdGVib2FyZERhdGEoVUlQYXN0ZWJvYXJkTmFtZUdlbmVyYWwpOwogfQog
Cit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0RGV2aWNlSGFzQUdYQ29tcGlsZXJTZXJ2aWNlRm9yVGVz
dGluZygpIGNvbnN0Cit7CisgICAgV2ViQ29yZTo6c2V0RGV2aWNlSGFzQUdYQ29tcGlsZXJTZXJ2
aWNlRm9yVGVzdGluZygpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI3VuZGVmIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9XZWJQcm9jZXNzQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQkocmV2aXNpb24gMjYwMjE0KQorKysgU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQkod29ya2luZyBjb3B5
KQpAQCAtMjk2LDYgKzI5Niw5IEBAIHZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXpl
V2ViUHIKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gcGFyYW1ldGVycy5keW5hbWlj
TWFjaEV4dGVuc2lvbkhhbmRsZXMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQogICAgICAgICBTYW5k
Ym94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVycy5keW5hbWljTWFjaEV4
dGVuc2lvbkhhbmRsZXNbaV0pOworCisgICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSBwYXJh
bWV0ZXJzLmR5bmFtaWNJT0tpdEV4dGVuc2lvbkhhbmRsZXMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytp
KQorICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVy
cy5keW5hbWljSU9LaXRFeHRlbnNpb25IYW5kbGVzW2ldKTsKICNlbmRpZgogICAgIAogICAgIGlm
IChwYXJhbWV0ZXJzLm5lSGVscGVyRXh0ZW5zaW9uSGFuZGxlKQpJbmRleDogVG9vbHMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjYwMjIyKQorKysg
VG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMDQt
MTYgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgorCisgICAgICAgIFtpT1Nd
IERlbnkgaW9raXQgb3BlbiBhY2Nlc3MgdG8gZ3JhcGhpY3MgcmVsYXRlZCBjbGFzc2VzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA2MTYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0FHWENvbXBpbGVyU2VydmljZS5tbTogQWRkZWQuCisg
ICAgICAgIChURVNUKToKKwogMjAyMC0wNC0xNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBw
bGUuY29tPgogCiAgICAgICAgIEFkZCBzbGFjay1hd2FyZSBXS1IgaW1wbGVtZW50YXRpb24KSW5k
ZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNjAyMTQpCisrKyBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtODkzLDYgKzg5Myw3IEBACiAJCUMxNUNCQjMwMjNGMUZGMUEwMDMwMENDNyAv
KiBCYWNrbGlnaHRMZXZlbE5vdGlmaWNhdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxNUNCQjJGMjNGMUZGMUEwMDMwMENDNyAvKiBCYWNrbGln
aHRMZXZlbE5vdGlmaWNhdGlvbi5tbSAqLzsgfTsKIAkJQzE1Q0JCM0YyM0ZCMTc3QTAwMzAwQ0M3
IC8qIFByZWZlcmVuY2VDaGFuZ2VzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQzE1Q0JCM0UyM0ZCMTc3QTAwMzAwQ0M3IC8qIFByZWZlcmVuY2VDaGFu
Z2VzLm1tICovOyB9OwogCQlDMTY5MkRDQTIzRDEwREFFMDA2RTg4RjcgLyogQmF0dGVyeS5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxNjkyREM5MjNE
MTBEQUUwMDZFODhGNyAvKiBCYXR0ZXJ5Lm1tICovOyB9OworCQlDMUY3QjczOTI0NDkwODNGMDAx
MjQ1NTcgLyogQUdYQ29tcGlsZXJTZXJ2aWNlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQzFGN0I3MzgyNDQ5MDgzRjAwMTI0NTU3IC8qIEFHWENvbXBp
bGVyU2VydmljZS5tbSAqLzsgfTsKIAkJQzFGRjlFREIyNDQ2NDRGMDAwODM5QUU0IC8qIFdlYkZp
bHRlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMx
RkY5RURBMjQ0NjQ0RjAwMDgzOUFFNCAvKiBXZWJGaWx0ZXIubW0gKi87IH07CiAJCUMyMEY4OEE3
MjI5NUI5NjcwMEQ2MTBGQSAvKiBDb3JlVGV4dC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjBGODhBNjIyOTVCOTY3MDBENjEwRkEg
LyogQ29yZVRleHQuZnJhbWV3b3JrICovOyB9OwogCQlDMjJGQTMyQjIyOEY4NzA4MDA5RDc5ODgg
LyogVGV4dFdpZHRoLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzIyRkEzMkEyMjhGODcwODAwOUQ3OTg4IC8qIFRleHRXaWR0aC5tbSAqLzsgfTsKQEAg
LTI0ODMsNiArMjQ4NCw3IEBACiAJCUMxNUNCQjNFMjNGQjE3N0EwMDMwMENDNyAvKiBQcmVmZXJl
bmNlQ2hhbmdlcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBy
ZWZlcmVuY2VDaGFuZ2VzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMTY5MkRD
OTIzRDEwREFFMDA2RTg4RjcgLyogQmF0dGVyeS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEJh
dHRlcnkubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxRDhFRTIxMjAyOEU4RTMw
MDhFQjE0MSAvKiBXZWJQcm9jZXNzVGVybWluYXRlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gV2ViUHJvY2Vzc1Rlcm1pbmF0ZS5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQzFGN0I3MzgyNDQ5MDgzRjAwMTI0NTU3IC8qIEFHWENvbXBpbGVyU2Vy
dmljZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFHWENvbXBpbGVyU2VydmljZS5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzFGRjlFREEyNDQ2NDRGMDAwODM5QUU0IC8qIFdl
YkZpbHRlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkZpbHRlci5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzIwRjg4QTYyMjk1Qjk2NzAwRDYxMEZBIC8qIENvcmVUZXh0
LmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gQ29yZVRleHQuZnJhbWV3b3JrOyBwYXRoID0g
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlVGV4dC5mcmFtZXdvcms7IHNvdXJjZVRyZWUg
PSBTREtST09UOyB9OwogCQlDMjJGQTMyQTIyOEY4NzA4MDA5RDc5ODggLyogVGV4dFdpZHRoLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gVGV4dFdpZHRoLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMjkzNiw2ICsyOTM4LDcgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCiAJCQkJRTNGOEFCOTEyNDFBQjlDRTAwM0UyQTdFIC8qIEFjY2Vzc2liaWxpdHlS
ZW1vdGVVSUFwcC5tbSAqLywKKwkJCQlDMUY3QjczODI0NDkwODNGMDAxMjQ1NTcgLyogQUdYQ29t
cGlsZXJTZXJ2aWNlLm1tICovLAogCQkJCUMxNUNCQjJGMjNGMUZGMUEwMDMwMENDNyAvKiBCYWNr
bGlnaHRMZXZlbE5vdGlmaWNhdGlvbi5tbSAqLywKIAkJCQlDMTY5MkRDOTIzRDEwREFFMDA2RTg4
RjcgLyogQmF0dGVyeS5tbSAqLywKIAkJCQlDMTNEODJEODI0MTZGMTMyMDBBNjI3OTMgLyogRW5h
YmxlQWNjZXNzaWJpbGl0eS5tbSAqLywKQEAgLTQ3MjksNiArNDczMiw3IEBACiAJCQkJNTVBODE3
RkMyMTgxMDBFMDAwMDRBMzlBIC8qIEFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTVGOUQyRTUyMjA1MDMxODAwQTlBQjM4IC8qIEFkZGl0aW9uYWxT
dXBwb3J0ZWRJbWFnZVR5cGVzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0E5MDlBN0QxRDg3NzQ4
MDAwN0UxMEY4IC8qIEFmZmluZVRyYW5zZm9ybS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDMUY3
QjczOTI0NDkwODNGMDAxMjQ1NTcgLyogQUdYQ29tcGlsZXJTZXJ2aWNlLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQTFERjc0MzIxQzQxQjY1ODAwQTJGNEQwIC8qIEFsd2F5c1JldmFsaWRhdGVkVVJM
U2NoZW1lcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJERTcxQUZFMUQ0OUMwQkQwMDkwNDA5NCAv
KiBBbmltYXRlZFJlc2l6ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTU3MTUyQjVFMjFDQzIwNDUw
MDBDMzdDQSAvKiBBcGR1VGVzdC5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0FHWENvbXBpbGVyU2VydmljZS5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9BR1hDb21waWxlclNlcnZpY2UubW0J
KG5vbmV4aXN0ZW50KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvQUdYQ29t
cGlsZXJTZXJ2aWNlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBXS19IQVZFX0NfU1BJICYmIFBMQVRGT1JN
KElPUykKKworI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRlc3RXS1dl
YlZpZXcuaCIKKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oPgor
CitURVNUKFdlYktpdCwgSU9LaXRPcGVuU2FuZGJveEFjY2Vzc0ZvckRldmljZVdpdGhBR1hDb21w
aWxlclNlcnZpY2UpCit7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBXS1JldGFpblB0cjxXS0NvbnRl
eHRSZWY+IGNvbnRleHQgPSBhZG9wdFdLKFRlc3RXZWJLaXRBUEk6OlV0aWw6OmNyZWF0ZUNvbnRl
eHRGb3JJbmplY3RlZEJ1bmRsZVRlc3QoIkludGVybmFsc0luamVjdGVkQnVuZGxlVGVzdCIpKTsK
KyAgICBjb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NQb29sID0gKFdLUHJvY2Vzc1Bvb2wgKilj
b250ZXh0LmdldCgpOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMzAwLCAzMDApIGNvbmZpZ3Vy
YXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBhZGRUb1dpbmRvdzpZRVNdKTsKKworICAgIFt3ZWJW
aWV3IF9zZXREZXZpY2VIYXNBR1hDb21waWxlclNlcnZpY2VGb3JUZXN0aW5nXTsKKworICAgIGF1
dG8gc2FuZGJveEFjY2VzcyA9IFsmXSB7CisgICAgICAgIHJldHVybiBbd2ViVmlldyBzdHJpbmdC
eUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAid2luZG93LmludGVybmFscy5pbnRlcm5hbHMuaGFzU2Fu
ZGJveElPS2l0T3BlbkFjY2Vzc1RvQ2xhc3MoJ2NvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudCcs
ICdBR1hDb21tYW5kUXVldWUnKSJdLmJvb2xWYWx1ZTsKKyAgICB9OworCisgICAgQVNTRVJUX1RS
VUUoc2FuZGJveEFjY2VzcygpKTsKKworfQorCisjZW5kaWYgLy8gV0tfSEFWRV9DX1NQSQo=
</data>
<flag name="review"
          id="412117"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396717</attachid>
            <date>2020-04-16 16:21:23 -0700</date>
            <delta_ts>2020-04-16 17:01:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210616-20200416162122.patch</filename>
            <type>text/plain</type>
            <size>35468</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjAyMTQpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIwLTA0LTE2ICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBEZW55IGlva2l0IG9wZW4gYWNjZXNz
IHRvIGdyYXBoaWNzIHJlbGF0ZWQgY2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwNjE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4g
QWRsZXIuCisKKyAgICAgICAgKiB3dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJLmg6CisKIDIwMjAt
MDQtMTYgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIENsZWFu
IHVwIFZlY3RvckNvY29hIGNyZWF0ZU5TQXJyYXkgb3ZlcmxvYWRzIGFuZCBhZGQgZG9jdW1lbnRh
dGlvbiBmb3IgY3JlYXRlTlNBcnJheSB0YWtpbmcgYSBtYXAgZnVuY3Rpb24KSW5kZXg6IFNvdXJj
ZS9XVEYvd3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
VEYvd3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oCShyZXZpc2lvbiAyNjAyMTQpCisrKyBTb3Vy
Y2UvV1RGL3d0Zi9zcGkvZGFyd2luL1NhbmRib3hTUEkuaAkod29ya2luZyBjb3B5KQpAQCAtMzYs
NiArMzYsNyBAQCBlbnVtIHNhbmRib3hfZmlsdGVyX3R5cGUgewogICAgIFNBTkRCT1hfRklMVEVS
X05PTkUsCiAgICAgU0FOREJPWF9GSUxURVJfR0xPQkFMX05BTUUgPSAyLAogICAgIFNBTkRCT1hf
RklMVEVSX1hQQ19TRVJWSUNFX05BTUUgPSAxMiwKKyAgICBTQU5EQk9YX0ZJTFRFUl9JT0tJVF9D
T05ORUNUSU9OLAogfTsKIAogI2RlZmluZSBTQU5EQk9YX05BTUVEX0VYVEVSTkFMIDB4MDAwMwpA
QCAtODQsNiArODUsOSBAQCBzYW5kYm94X3Byb2ZpbGVfdCBzYW5kYm94X2NvbXBpbGVfc3RyaW5n
CiB2b2lkIHNhbmRib3hfZnJlZV9wcm9maWxlKHNhbmRib3hfcHJvZmlsZV90KTsKIGludCBzYW5k
Ym94X2FwcGx5KHNhbmRib3hfcHJvZmlsZV90KTsKIAorY2hhciAqc2FuZGJveF9leHRlbnNpb25f
aXNzdWVfaW9raXRfcmVnaXN0cnlfZW50cnlfY2xhc3NfdG9fcHJvY2Vzcyhjb25zdCBjaGFyICpl
eHRlbnNpb25fY2xhc3MsIGNvbnN0IGNoYXIgKnJlZ2lzdHJ5X2VudHJ5X2NsYXNzLCB1aW50MzJf
dCBmbGFncywgYXVkaXRfdG9rZW5fdCk7CitjaGFyICpzYW5kYm94X2V4dGVuc2lvbl9pc3N1ZV9p
b2tpdF9yZWdpc3RyeV9lbnRyeV9jbGFzcyhjb25zdCBjaGFyICpleHRlbnNpb25fY2xhc3MsIGNv
bnN0IGNoYXIgKnJlZ2lzdHJ5X2VudHJ5X2NsYXNzLCB1aW50MzJfdCBmbGFncyk7CisKIFdURl9F
WFRFUk5fQ19FTkQKIAogI2VuZGlmIC8vIE9TKERBUldJTikKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlz
aW9uIDI2MDIyMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDI3IEBACisyMDIwLTA0LTE2ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFw
cGxlLmNvbT4KKworICAgICAgICBbaU9TXSBEZW55IGlva2l0IG9wZW4gYWNjZXNzIHRvIGdyYXBo
aWNzIHJlbGF0ZWQgY2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjEwNjE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisK
KyAgICAgICAgRGVueSBpb2tpdCBvcGVuIGFjY2VzcyB0byBncmFwaGljcyByZWxhdGVkIGNsYXNz
ZXMgaW4gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBvbiBpT1MsIGJ1dCBpc3N1ZQorICAgICAgICBl
eHRlbnNpb25zIGZvciB0aGVzZSBmb3Igc29tZSBkZXZpY2VzIHdoaWNoIHN0aWxsIG5lZWQgYWNj
ZXNzIHRvIHRoZW0uCisKKyAgICAgICAgQVBJIHRlc3Q6IFdlYktpdC5JT0tpdE9wZW5TYW5kYm94
QWNjZXNzRm9yRGV2aWNlV2l0aEFHWENvbXBpbGVyU2VydmljZQorCisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL0FH
WENvbXBpbGVyU2VydmljZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6c2V0RGV2aWNl
SGFzQUdYQ29tcGlsZXJTZXJ2aWNlRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpkZXZp
Y2VIYXNBR1hDb21waWxlclNlcnZpY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL0FHWENv
bXBpbGVyU2VydmljZS5oOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Omhhc1NhbmRib3hJT0tpdE9wZW5BY2Nlc3NU
b0NsYXNzKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3Rp
bmcvSW50ZXJuYWxzLmlkbDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkludGVybmFsczo6aGFzU2FuZGJveElPS2l0T3BlbkFjY2Vzc1RvQ2xhc3Mp
OgorCiAyMDIwLTA0LTE2ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQgYnVpbGQtZml4IGFmdGVyIHIyNjAxODI7IGd1YXJkIGNhbGwgdG8gZnVs
bHNjcmVlbk1hbmFnZXIoKSBmb3IgcG9ydHMgd2hpY2ggZG8gbm90CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAy
NjAyMTQpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHdvcmtpbmcgY29weSkKQEAgLTM5OTcsNiArMzk5Nyw4IEBACiAJCUMxNjkyREQyMjNEMjNB
QkQwMDZFODhGNyAvKiBTeXN0ZW1CYXR0ZXJ5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQzE2OTJERDEyM0QyM0FCRDAwNkU4OEY3IC8qIFN5c3RlbUJh
dHRlcnkubW0gKi87IH07CiAJCUMxNjkyREQ1MjNEMjNFMDgwMDZFODhGNyAvKiBTeXN0ZW1CYXR0
ZXJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTY5
MkRENDIzRDIzQUUwMDA2RTg4RjcgLyogU3lzdGVtQmF0dGVyeS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMxRTFEMjM2MjAzREYxNTQwMDU4NDY2
NSAvKiBTY3JlZW5Qcm9wZXJ0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDMUUxRDIzNTIwM0RGMTU0MDA1ODQ2NjUgLyogU2NyZWVuUHJvcGVydGll
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUMx
RjdCNzMxMjQ0OEYyQUMwMDEyNDU1NyAvKiBBR1hDb21waWxlclNlcnZpY2UuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzFGN0I3MkYyNDQ4RjJBQzAw
MTI0NTU3IC8qIEFHWENvbXBpbGVyU2VydmljZS5jcHAgKi87IH07CisJCUMxRjdCNzMyMjQ0OEYy
QUMwMDEyNDU1NyAvKiBBR1hDb21waWxlclNlcnZpY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxRjdCNzMwMjQ0OEYyQUMwMDEyNDU1NyAvKiBBR1hD
b21waWxlclNlcnZpY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlDMjAxNUMwQTFCRTZGRUIyMDA4MjIzODkgLyogRm9udFZhcmlhbnRCdWlsZGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjAxNUMw
OTFCRTZGRTJDMDA4MjIzODkgLyogRm9udFZhcmlhbnRCdWlsZGVyLmggKi87IH07CiAJCUMyMURG
MkVBMUQ5RTRFOTkwMEY1QjI0QyAvKiBDU1NGb250VmFyaWF0aW9uVmFsdWUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyMURGMkU4MUQ5RTRFOTkwMEY1
QjI0QyAvKiBDU1NGb250VmFyaWF0aW9uVmFsdWUuaCAqLzsgfTsKIAkJQzI0NThFNjMxRkU4OTdC
MDAwNTk0NzU5IC8qIEZvbnRDYWNoZUNvcmVUZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjQ1OEU2MTFGRTg5NzlFMDA1OTQ3NTkgLyogRm9udENh
Y2hlQ29yZVRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtMTM2MDcsNiArMTM2MDksOCBAQAogCQlDMTY5MkRENDIzRDIzQUUwMDA2RTg4Rjcg
LyogU3lzdGVtQmF0dGVyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTeXN0ZW1CYXR0ZXJ5Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxOEZCNTE4MjQyRjkzODIwMDdFOTg3NSAvKiBTbGVl
cERpc2FibGVyQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNsZWVwRGlzYWJsZXJDbGll
bnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMUUxRDIzNTIwM0RGMTU0MDA1
ODQ2NjUgLyogU2NyZWVuUHJvcGVydGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JlZW5Qcm9wZXJ0
aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMxRjdCNzJGMjQ0OEYyQUMwMDEy
NDU1NyAvKiBBR1hDb21waWxlclNlcnZpY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQUdYQ29t
cGlsZXJTZXJ2aWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzFGN0I3MzAy
NDQ4RjJBQzAwMTI0NTU3IC8qIEFHWENvbXBpbGVyU2VydmljZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBB
R1hDb21waWxlclNlcnZpY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzIwMTVD
MDkxQkU2RkUyQzAwODIyMzg5IC8qIEZvbnRWYXJpYW50QnVpbGRlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBGb250VmFyaWFudEJ1aWxkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzIw
RjRGNjQyMURGQkU1QzAwNzBDNDVBIC8qIFdITFNMVHlwZVJlZmVyZW5jZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXSExTTFR5cGVSZWZlcmVuY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDMjBGNEY2NjIxREZGMjM2MDA3MEM0NUEgLyogV0hMU0xJbnRlZ2VyTGl0ZXJhbC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTEludGVnZXJMaXRlcmFsLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIzMjg3LDYgKzIzMjkxLDggQEAKIAkJQTVDOTc0Q0UxMTQ4
NUZEQTAwNjZGMkFCIC8qIGNvY29hICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKKwkJCQlDMUY3QjcyRjI0NDhGMkFDMDAxMjQ1NTcgLyogQUdYQ29tcGlsZXJTZXJ2
aWNlLmNwcCAqLywKKwkJCQlDMUY3QjczMDI0NDhGMkFDMDAxMjQ1NTcgLyogQUdYQ29tcGlsZXJT
ZXJ2aWNlLmggKi8sCiAJCQkJQTE0MDkwRkExQUE1MUUxRDAwOTExOTFBIC8qIENvbnRlbnRGaWx0
ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1tICovLAogCQkJCUNEN0QzMzQ1MUM3QTE2QkYwMDA0MTI5
MyAvKiBDb3JlVmlkZW9Tb2Z0TGluay5jcHAgKi8sCiAJCQkJQ0Q3RDMzNDYxQzdBMTZCRjAwMDQx
MjkzIC8qIENvcmVWaWRlb1NvZnRMaW5rLmggKi8sCkBAIC0yOTM2MSw2ICsyOTM2Nyw3IEBACiAJ
CQkJQTE2NzdFMEUyMTNFMDJBMDAwQTA4QzM0IC8qIEFkZHJlc3NFcnJvcnMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDRjdFNDkxMTM3Q0Q3QzcwMDFEREFFNyAvKiBBZGp1c3RWaWV3U2l6ZU9yTm90
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NEQwQzQwNjExMTVGMUVBMDAxOEFBMzQgLyogQWZmaW5l
VHJhbnNmb3JtLmggaW4gSGVhZGVycyAqLywKKwkJCQlDMUY3QjczMjI0NDhGMkFDMDAxMjQ1NTcg
LyogQUdYQ29tcGlsZXJTZXJ2aWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0JCNUM4ODFENUQ2
RjQ1MDA1QTcxRjQgLyogQWxsRGVzY2VuZGFudHNDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQk3Mjk5QkM2NzIzRDZBNTMyMDBDQzY4ODMgLyogQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQ0VEQTEyRDcxNTJDQTFDQjAwRDlFMDhEIC8qIEFsdGVybmF0
aXZlVGV4dENsaWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNDAwMyw2ICszNDAxMCw3IEBACiAJ
CQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCiAJCQkJQTk3ODdD
QjQxRjVGNUM2NjAwQzU1MUM2IC8qIEFjY2Vzc2liaWxpdHlNZWRpYU9iamVjdC5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlDMUY3QjczMTI0NDhGMkFDMDAxMjQ1NTcgLyogQUdYQ29tcGlsZXJTZXJ2
aWNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEMEVFRTBFMTQ3NDNGMzkwMDNFQUZBMiAvKiBB
dWRpb0Rlc3RpbmF0aW9uSU9TLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNENTU5NjkxMTQ3NUI2
NzgwMDFEMEJEMCAvKiBBdWRpb0ZpbGVSZWFkZXJJT1MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
Q0RBNzk4MjcxNzBBMjc5MTAwRDQ1QzU1IC8qIEF1ZGlvU2Vzc2lvbklPUy5tbSBpbiBTb3VyY2Vz
ICovLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQUdYQ29tcGlsZXJTZXJ2
aWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9BR1hD
b21waWxlclNlcnZpY2UuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL0FHWENvbXBpbGVyU2VydmljZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw2MiBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiBhcmUgbWV0OgorKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQUdYQ29tcGlsZXJTZXJ2aWNlLmgiCisKKyNp
ZiBQTEFURk9STShJT1MpCisKKyNpbmNsdWRlIDxzeXMvdXRzbmFtZS5oPgorI2luY2x1ZGUgPHd0
Zi9PcHRpb25hbC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBPcHRpb25hbDxi
b29sPiBoYXNBR1hDb21waWxlclNlcnZpY2U7CisKK3ZvaWQgc2V0RGV2aWNlSGFzQUdYQ29tcGls
ZXJTZXJ2aWNlRm9yVGVzdGluZygpCit7CisgICAgaGFzQUdYQ29tcGlsZXJTZXJ2aWNlID0gdHJ1
ZTsKK30KKworYm9vbCBkZXZpY2VIYXNBR1hDb21waWxlclNlcnZpY2UoKQoreworICAgIGlmICgh
aGFzQUdYQ29tcGlsZXJTZXJ2aWNlKSB7CisgICAgICAgIHN0cnVjdCB1dHNuYW1lIHN5c3RlbUlu
Zm87CisgICAgICAgIGlmICh1bmFtZSgmc3lzdGVtSW5mbykpIHsKKyAgICAgICAgICAgIGhhc0FH
WENvbXBpbGVyU2VydmljZSA9IGZhbHNlOworICAgICAgICAgICAgcmV0dXJuICpoYXNBR1hDb21w
aWxlclNlcnZpY2U7CisgICAgICAgIH0KKyAgICAgICAgY29uc3QgY2hhciogbWFjaGluZSA9IHN5
c3RlbUluZm8ubWFjaGluZTsKKyAgICAgICAgaWYgKCFzdHJjbXAobWFjaGluZSwgImlQYWQ1LDEi
KSB8fCAhc3RyY21wKG1hY2hpbmUsICJpUGFkNSwyIikgfHwgIXN0cmNtcChtYWNoaW5lLCAiaVBh
ZDUsMyIpIHx8ICFzdHJjbXAobWFjaGluZSwgImlQYWQ1LDQiKSkKKyAgICAgICAgICAgIGhhc0FH
WENvbXBpbGVyU2VydmljZSA9IHRydWU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGhhc0FH
WENvbXBpbGVyU2VydmljZSA9IGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gKmhhc0FHWENvbXBp
bGVyU2VydmljZTsKK30KKworfQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL0FHWENvbXBpbGVyU2VydmljZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL0FHWENvbXBpbGVyU2VydmljZS5oCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0FHWENvbXBpbGVyU2VydmljZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyogYXJlIG1ldDoKKyogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisqCisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
V0VCQ09SRV9FWFBPUlQgYm9vbCBkZXZpY2VIYXNBR1hDb21waWxlclNlcnZpY2UoKTsKK1dFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0RGV2aWNlSGFzQUdYQ29tcGlsZXJTZXJ2aWNlRm9yVGVzdGluZygp
OworCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCShyZXZpc2lvbiAy
NjAyMTQpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTU2MDMsNiArNTYwMywxMSBAQCBib29sIEludGVybmFsczo6aXNSZW1vdGVVSUFw
cEZvckFjY2Vzc2liCiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQorCitib29sIEludGVybmFsczo6
aGFzU2FuZGJveElPS2l0T3BlbkFjY2Vzc1RvQ2xhc3MoY29uc3QgU3RyaW5nJiBwcm9jZXNzLCBj
b25zdCBTdHJpbmcmIGlvS2l0Q2xhc3MpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQogI2VuZGlm
CiAKIFN0cmluZyBJbnRlcm5hbHM6Om1lZGlhTUlNRVR5cGVGb3JFeHRlbnNpb24oY29uc3QgU3Ry
aW5nJiBleHRlbnNpb24pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgJKHJldmlz
aW9uIDI2MDIxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTk3NCw2ICs5NzQsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGhhc1NhbmRi
b3hNYWNoTG9va3VwQWNjZXNzVG9HbG9iYWxOYW1lKGNvbnN0IFN0cmluZyYgcHJvY2VzcywgY29u
c3QgU3RyaW5nJiBzZXJ2aWNlKTsKICAgICBib29sIGhhc1NhbmRib3hNYWNoTG9va3VwQWNjZXNz
VG9YUENTZXJ2aWNlTmFtZShjb25zdCBTdHJpbmcmIHByb2Nlc3MsIGNvbnN0IFN0cmluZyYgc2Vy
dmljZSk7CisgICAgYm9vbCBoYXNTYW5kYm94SU9LaXRPcGVuQWNjZXNzVG9DbGFzcyhjb25zdCBT
dHJpbmcmIHByb2Nlc3MsIGNvbnN0IFN0cmluZyYgaW9LaXRDbGFzcyk7CiAKICAgICBTdHJpbmcg
aGlnaGxpZ2h0UHNldWRvRWxlbWVudENvbG9yKGNvbnN0IFN0cmluZyYgaGlnaGxpZ2h0TmFtZSwg
RWxlbWVudCYpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCShyZXZp
c2lvbiAyNjAyMTQpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTg4NSw3ICs4ODUsOCBAQCBlbnVtIENvbXBvc2l0aW5nUG9saWN5IHsK
IAogICAgIGJvb2xlYW4gaGFzU2FuZGJveE1hY2hMb29rdXBBY2Nlc3NUb0dsb2JhbE5hbWUoRE9N
U3RyaW5nIHByb2Nlc3MsIERPTVN0cmluZyBzZXJ2aWNlKTsKICAgICBib29sZWFuIGhhc1NhbmRi
b3hNYWNoTG9va3VwQWNjZXNzVG9YUENTZXJ2aWNlTmFtZShET01TdHJpbmcgcHJvY2VzcywgRE9N
U3RyaW5nIHNlcnZpY2UpOwotICAgIAorICAgIGJvb2xlYW4gaGFzU2FuZGJveElPS2l0T3BlbkFj
Y2Vzc1RvQ2xhc3MoRE9NU3RyaW5nIHByb2Nlc3MsIERPTVN0cmluZyBpb0tpdENsYXNzKTsKKwog
ICAgIERPTVN0cmluZyBzeXN0ZW1Db2xvckZvckNTU1ZhbHVlKERPTVN0cmluZyBjc3NWYWx1ZSwg
Ym9vbGVhbiB1c2VEYXJrTW9kZUFwcGVhcmFuY2UsIGJvb2xlYW4gdXNlRWxldmF0ZWRVc2VySW50
ZXJmYWNlTGV2ZWwpOwogICAgIERPTVN0cmluZyBmb2N1c1JpbmdDb2xvcigpOwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5tbQkocmV2aXNpb24gMjYwMjE0KQorKysgU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2
LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiSW50ZXJuYWxzLmgiCiAKKyNpbXBv
cnQgIkFHWENvbXBpbGVyU2VydmljZS5oIgogI2ltcG9ydCAiRE9NVVJMLmgiCiAjaW1wb3J0ICJE
aWN0aW9uYXJ5TG9va3VwLmgiCiAjaW1wb3J0ICJEb2N1bWVudC5oIgpAQCAtMzgsNiArMzksNyBA
QAogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWUGxheWVyLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2Nv
Y29hL05TQWNjZXNzaWJpbGl0eVNQSS5oPgogI2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFz
Lmg+CisjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJLmg+CiAKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogI2ltcG9ydCA8cGFsL2lvcy9VSUtpdFNvZnRMaW5rLmg+CkBAIC0xMTYs
NCArMTE4LDEyIEBAIGJvb2wgSW50ZXJuYWxzOjppc1JlbW90ZVVJQXBwRm9yQWNjZXNzaWIKICNl
bmRpZgogfQogCitib29sIEludGVybmFsczo6aGFzU2FuZGJveElPS2l0T3BlbkFjY2Vzc1RvQ2xh
c3MoY29uc3QgU3RyaW5nJiBwcm9jZXNzLCBjb25zdCBTdHJpbmcmIGlvS2l0Q2xhc3MpCit7Cisg
ICAgVU5VU0VEX1BBUkFNKHByb2Nlc3MpOyAvLyBUT0RPOiBhZGQgc3VwcG9ydCBmb3IgZ2V0dGlu
ZyBQSUQgb2Ygb3RoZXIgV2ViS2l0IHByb2Nlc3Nlcy4KKyAgICBwaWRfdCBwaWQgPSBnZXRwaWQo
KTsKKworICAgIHJldHVybiAhc2FuZGJveF9jaGVjayhwaWQsICJpb2tpdC1vcGVuIiwgc3RhdGlj
X2Nhc3Q8ZW51bSBzYW5kYm94X2ZpbHRlcl90eXBlPihTQU5EQk9YX0ZJTFRFUl9JT0tJVF9DT05O
RUNUSU9OIHwgU0FOREJPWF9DSEVDS19OT19SRVBPUlQpLCBpb0tpdENsYXNzLnV0ZjgoKS5kYXRh
KCkpOworfQorCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjYwMjIyKQorKysgU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzNCBAQAorMjAyMC0wNC0x
NiAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10g
RGVueSBpb2tpdCBvcGVuIGFjY2VzcyB0byBncmFwaGljcyByZWxhdGVkIGNsYXNzZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDYxNgorCisgICAg
ICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIERlbnkgaW9raXQgb3BlbiBh
Y2Nlc3MgdG8gZ3JhcGhpY3MgcmVsYXRlZCBjbGFzc2VzIGluIHRoZSBXZWJDb250ZW50IHByb2Nl
c3Mgb24gaU9TLCBidXQgaXNzdWUKKyAgICAgICAgZXh0ZW5zaW9ucyBmb3IgdGhlc2UgZm9yIHNv
bWUgZGV2aWNlcyB3aGljaCBzdGlsbCBuZWVkIGFjY2VzcyB0byB0aGVtLgorCisgICAgICAgICog
UmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50
LnNiOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9TYW5kYm94RXh0ZW5zaW9uQ29jb2EubW06Cisg
ICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb25JbXBsOjpzYW5kYm94RXh0ZW5zaW9uRm9y
VHlwZSk6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZv
cklPS2l0Q2xhc3NFeHRlbnNpb24pOgorICAgICAgICAqIFNoYXJlZC9TYW5kYm94RXh0ZW5zaW9u
Lmg6CisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNv
ZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmdJT1Mu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdUZXN0aW5nSU9TLm1tOgor
ICAgICAgICAoLVtXS1dlYlZpZXcgX3NldERldmljZUhhc0FHWENvbXBpbGVyU2VydmljZUZvclRl
c3RpbmddKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5t
bToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZVdl
YlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpkZXZpY2VIYXNBR1hDb21waWxlclNlcnZpY2Up
OiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpzZXREZXZpY2VIYXNBR1hDb21waWxlclNlcnZpY2VGb3JUZXN0aW5nIGNvbnN0
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6CisK
IDIwMjAtMDQtMTYgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAg
ICAgW21hY09TXSBTd2l0Y2ggdW51c2VkIElPS2l0IGNsYXNzZXMgZnJvbSBhbGxvdy13aXRoLXJl
cG9ydCB0byBkZW55LXdpdGgtcmVwb3J0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1Jlc291cmNlcy9T
YW5kYm94UHJvZmlsZXMvaW9zL2NvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1Jlc291cmNlcy9TYW5kYm94UHJvZmlsZXMvaW9zL2NvbS5h
cHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYgkocmV2aXNpb24gMjYwMjE0KQorKysgU291cmNlL1dl
YktpdC9SZXNvdXJjZXMvU2FuZGJveFByb2ZpbGVzL2lvcy9jb20uYXBwbGUuV2ViS2l0LldlYkNv
bnRlbnQuc2IJKHdvcmtpbmcgY29weSkKQEAgLTIxNCw3ICsyMTQsNyBAQAogOzs7CiAoZGVmaW5l
LW9uY2UgKG9wZW5nbCkKICAgICA7OyBJdGVtcyBub3Qgc2VlbiBpbiB0ZXN0aW5nCi0gICAgKGFs
bG93IGlva2l0LW9wZW4gKHdpdGggcmVwb3J0KSAod2l0aCB0ZWxlbWV0cnkpCisgICAgKGRlbnkg
aW9raXQtb3BlbiAod2l0aCB0ZWxlbWV0cnkpCiAgICAgICAgICAgIChpb2tpdC1jb25uZWN0aW9u
ICJJT0dQVSIpCiAgICAgICAgICAgIChpb2tpdC11c2VyLWNsaWVudC1jbGFzcwogICAgICAgICAg
ICAgICAgICJBR1hDb21tYW5kUXVldWUiCkBAIC05MjQsNiArOTI0LDI0IEBACiAgICAgKQogKQog
CisoYWxsb3cgaW9raXQtb3BlbgorICAgIChyZXF1aXJlLWFsbAorICAgICAgICAoZXh0ZW5zaW9u
ICJjb20uYXBwbGUud2Via2l0LmV4dGVuc2lvbi5pb2tpdCIpCisgICAgICAgIChpb2tpdC11c2Vy
LWNsaWVudC1jbGFzcworICAgICAgICAgICAgIkFHWENvbW1hbmRRdWV1ZSIKKyAgICAgICAgICAg
ICJBR1hEZXZpY2UiCisgICAgICAgICAgICAiQUdYU2hhcmVkVXNlckNsaWVudCIKKyAgICAgICAg
ICAgICJJT0FjY2VsQ29udGV4dCIKKyAgICAgICAgICAgICJJT0FjY2VsRGV2aWNlIgorICAgICAg
ICAgICAgIklPQWNjZWxTaGFyZWRVc2VyQ2xpZW50IgorICAgICAgICAgICAgIklPQWNjZWxTdWJt
aXR0ZXIyIgorICAgICAgICAgICAgIklPQWNjZWxDb250ZXh0MiIKKyAgICAgICAgICAgICJJT0Fj
Y2VsRGV2aWNlMiIKKyAgICAgICAgICAgICJJT0FjY2VsU2hhcmVkVXNlckNsaWVudDIiCisgICAg
ICAgICkKKyAgICApCispCisKIChhbGxvdyBtYWNoLWxvb2t1cAogICAgIChyZXF1aXJlLWFsbAog
ICAgICAgICAoZXh0ZW5zaW9uICJjb20uYXBwbGUud2Via2l0LmV4dGVuc2lvbi5tYWNoIikKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9TYW5kYm94RXh0ZW5zaW9uLmgJKHJldmlzaW9uIDI2MDIx
NCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaAkod29ya2luZyBj
b3B5KQpAQCAtNDksNiArNDksNyBAQCBwdWJsaWM6CiAgICAgICAgIFJlYWRPbmx5LAogICAgICAg
ICBSZWFkV3JpdGUsCiAgICAgICAgIE1hY2gsCisgICAgICAgIElPS2l0LAogICAgICAgICBHZW5l
cmljLAogICAgICAgICBSZWFkQnlQcm9jZXNzCiAgICAgfTsKQEAgLTExMyw2ICsxMTQsNyBAQCBw
dWJsaWM6CiAjaWYgSEFWRShBVURJVF9UT0tFTikKICAgICBzdGF0aWMgYm9vbCBjcmVhdGVIYW5k
bGVGb3JNYWNoTG9va3VwKGNvbnN0IFN0cmluZyYgc2VydmljZSwgT3B0aW9uYWw8YXVkaXRfdG9r
ZW5fdD4sIEhhbmRsZSYsIE9wdGlvblNldDxGbGFncz4gPSBGbGFnczo6RGVmYXVsdCk7CiAgICAg
c3RhdGljIGJvb2wgY3JlYXRlSGFuZGxlRm9yUmVhZEJ5QXVkaXRUb2tlbihjb25zdCBTdHJpbmcm
IHBhdGgsIGF1ZGl0X3Rva2VuX3QsIEhhbmRsZSYpOworICAgIHN0YXRpYyBib29sIGNyZWF0ZUhh
bmRsZUZvcklPS2l0Q2xhc3NFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBpb2tpdENsYXNzLCBPcHRp
b25hbDxhdWRpdF90b2tlbl90PiwgSGFuZGxlJiwgT3B0aW9uU2V0PEZsYWdzPiA9IEZsYWdzOjpE
ZWZhdWx0KTsKICNlbmRpZgogICAgIH5TYW5kYm94RXh0ZW5zaW9uKCk7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
Y3BwCShyZXZpc2lvbiAyNjAyMTQpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY2LDYgKzE2Niw3IEBA
IHZvaWQgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2QKICAgICBlbmNvZGVyIDw8
IGRpYWdub3N0aWNzRXh0ZW5zaW9uSGFuZGxlOwogICAgIGVuY29kZXIgPDwgcnVubmluZ2JvYXJk
RXh0ZW5zaW9uSGFuZGxlOwogICAgIGVuY29kZXIgPDwgZHluYW1pY01hY2hFeHRlbnNpb25IYW5k
bGVzOworICAgIGVuY29kZXIgPDwgZHluYW1pY0lPS2l0RXh0ZW5zaW9uSGFuZGxlczsKICNlbmRp
ZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC00NTcsNiArNDU4LDEyIEBAIGJvb2wgV2ViUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2QKICAgICBpZiAoIWR5bmFtaWNNYWNoRXh0ZW5z
aW9uSGFuZGxlcykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHBhcmFtZXRlcnMuZHluYW1p
Y01hY2hFeHRlbnNpb25IYW5kbGVzID0gV1RGTW92ZSgqZHluYW1pY01hY2hFeHRlbnNpb25IYW5k
bGVzKTsKKworICAgIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5PiBkeW5h
bWljSU9LaXRFeHRlbnNpb25IYW5kbGVzOworICAgIGRlY29kZXIgPj4gZHluYW1pY0lPS2l0RXh0
ZW5zaW9uSGFuZGxlczsKKyAgICBpZiAoIWR5bmFtaWNJT0tpdEV4dGVuc2lvbkhhbmRsZXMpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBwYXJhbWV0ZXJzLmR5bmFtaWNJT0tpdEV4dGVuc2lv
bkhhbmRsZXMgPSBXVEZNb3ZlKCpkeW5hbWljSU9LaXRFeHRlbnNpb25IYW5kbGVzKTsKICNlbmRp
ZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCShyZXZpc2lvbiAyNjAyMTQpCisr
KyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTIwNiw2ICsyMDYsNyBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycyB7CiAgICAgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBkaWFn
bm9zdGljc0V4dGVuc2lvbkhhbmRsZTsKICAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGU+IHJ1bm5pbmdib2FyZEV4dGVuc2lvbkhhbmRsZTsKICAgICBTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGVBcnJheSBkeW5hbWljTWFjaEV4dGVuc2lvbkhhbmRsZXM7CisgICAgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlQXJyYXkgZHluYW1pY0lPS2l0RXh0ZW5zaW9uSGFuZGxlczsKICNlbmRp
ZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2Nv
YS9TYW5kYm94RXh0ZW5zaW9uQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9T
aGFyZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1tCShyZXZpc2lvbiAyNjAyMTQpCisr
KyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9TYW5kYm94RXh0ZW5zaW9uQ29jb2EubW0JKHdv
cmtpbmcgY29weSkKQEAgLTEwNSw2ICsxMDUsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAjZW5kaWYK
KyAgICAgICAgY2FzZSBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpJT0tpdDoKKyAgICAgICAgICAg
IGlmICghYXVkaXRUb2tlbikKKyAgICAgICAgICAgICAgICByZXR1cm4gc2FuZGJveF9leHRlbnNp
b25faXNzdWVfaW9raXRfcmVnaXN0cnlfZW50cnlfY2xhc3MoImNvbS5hcHBsZS53ZWJraXQuZXh0
ZW5zaW9uLmlva2l0Il9zLCBwYXRoLCBleHRlbnNpb25GbGFncyk7CisgICAgICAgICAgICByZXR1
cm4gc2FuZGJveF9leHRlbnNpb25faXNzdWVfaW9raXRfcmVnaXN0cnlfZW50cnlfY2xhc3NfdG9f
cHJvY2VzcygiY29tLmFwcGxlLndlYmtpdC5leHRlbnNpb24uaW9raXQiX3MsIHBhdGgsIGV4dGVu
c2lvbkZsYWdzLCAqYXVkaXRUb2tlbik7CiAgICAgICAgIGNhc2UgU2FuZGJveEV4dGVuc2lvbjo6
VHlwZTo6R2VuZXJpYzoKICAgICAgICAgICAgIHJldHVybiBzYW5kYm94X2V4dGVuc2lvbl9pc3N1
ZV9nZW5lcmljKHBhdGgsIGV4dGVuc2lvbkZsYWdzKTsKICAgICAgICAgY2FzZSBTYW5kYm94RXh0
ZW5zaW9uOjpUeXBlOjpSZWFkQnlQcm9jZXNzOgpAQCAtMzY2LDYgKzM3MCwxOSBAQCBib29sIFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
K2Jvb2wgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9ySU9LaXRDbGFzc0V4dGVuc2lv
bihjb25zdCBTdHJpbmcmIGlvS2l0Q2xhc3MsIE9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IGF1ZGl0
VG9rZW4sIEhhbmRsZSYgaGFuZGxlLCBPcHRpb25TZXQ8RmxhZ3M+IGZsYWdzKQoreworICAgIEFT
U0VSVCghaGFuZGxlLm1fc2FuZGJveEV4dGVuc2lvbik7CisKKyAgICBoYW5kbGUubV9zYW5kYm94
RXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbkltcGw6OmNyZWF0ZShpb0tpdENsYXNzLnV0Zjgo
KS5kYXRhKCksIFR5cGU6OklPS2l0LCBhdWRpdFRva2VuKTsKKyAgICBpZiAoIWhhbmRsZS5tX3Nh
bmRib3hFeHRlbnNpb24pIHsKKyAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIGEg
c2FuZGJveCBleHRlbnNpb24gZm9yICclcyciLCBpb0tpdENsYXNzLnV0ZjgoKS5kYXRhKCkpOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKIFNh
bmRib3hFeHRlbnNpb246OlNhbmRib3hFeHRlbnNpb24oY29uc3QgSGFuZGxlJiBoYW5kbGUpCiAg
ICAgOiBtX3NhbmRib3hFeHRlbnNpb24oV1RGTW92ZShoYW5kbGUubV9zYW5kYm94RXh0ZW5zaW9u
KSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lv
biAyNjAyMTQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29y
a2luZyBjb3B5KQpAQCAtMTQ5Nyw2ICsxNDk3LDcgQEAgcHVibGljOgogCiAgICAgY29uc3QgRnVu
Y3Rpb248Ym9vbCgpPiYgZGV2aWNlT3JpZW50YXRpb25Vc2VyUGVybWlzc2lvbkhhbmRsZXJGb3JU
ZXN0aW5nKCkgY29uc3QgeyByZXR1cm4gbV9kZXZpY2VPcmllbnRhdGlvblVzZXJQZXJtaXNzaW9u
SGFuZGxlckZvclRlc3Rpbmc7IH07CiAgICAgdm9pZCBzZXREZXZpY2VPcmllbnRhdGlvblVzZXJQ
ZXJtaXNzaW9uSGFuZGxlckZvclRlc3RpbmcoRnVuY3Rpb248Ym9vbCgpPiYmIGhhbmRsZXIpIHsg
bV9kZXZpY2VPcmllbnRhdGlvblVzZXJQZXJtaXNzaW9uSGFuZGxlckZvclRlc3RpbmcgPSBXVEZN
b3ZlKGhhbmRsZXIpOyB9CisgICAgdm9pZCBzZXREZXZpY2VIYXNBR1hDb21waWxlclNlcnZpY2VG
b3JUZXN0aW5nKCkgY29uc3Q7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFD
S19UQVJHRVQpICYmICFQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZ0lPUy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3UHJpdmF0ZUZv
clRlc3RpbmdJT1MuaAkocmV2aXNpb24gMjYwMjE0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2lvcy9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZ0lPUy5oCSh3b3JraW5nIGNvcHkp
CkBAIC03Miw2ICs3Miw4IEBACiAKIC0gKHZvaWQpX3NldERldmljZU9yaWVudGF0aW9uVXNlclBl
cm1pc3Npb25IYW5kbGVyRm9yVGVzdGluZzooQk9PTCAoXikodm9pZCkpaGFuZGxlcjsKIAorLSAo
dm9pZClfc2V0RGV2aWNlSGFzQUdYQ29tcGlsZXJTZXJ2aWNlRm9yVGVzdGluZzsKKwogQGVuZAog
CiAjZW5kaWYgLy8gVEFSR0VUX09TX0lQSE9ORQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2lvcy9XS1dlYlZpZXdUZXN0aW5nSU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3VGVzdGluZ0lPUy5tbQkocmV2aXNpb24g
MjYwMjE0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdUZXN0
aW5nSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMDUsNiArMzA1LDEyIEBAIC0gKHZvaWQpX3Nl
dERldmljZU9yaWVudGF0aW9uVXNlclBlcm1pc3MKICAgICBfcGFnZS0+c2V0RGV2aWNlT3JpZW50
YXRpb25Vc2VyUGVybWlzc2lvbkhhbmRsZXJGb3JUZXN0aW5nKFdURk1vdmUoaGFuZGxlcldyYXBw
ZXIpKTsKIH0KIAorLSAodm9pZClfc2V0RGV2aWNlSGFzQUdYQ29tcGlsZXJTZXJ2aWNlRm9yVGVz
dGluZworeworICAgIGlmIChfcGFnZSkKKyAgICAgICAgX3BhZ2UtPnNldERldmljZUhhc0FHWENv
bXBpbGVyU2VydmljZUZvclRlc3RpbmcoKTsKK30KKwogQGVuZAogCiAjZW5kaWYgLy8gUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBy
b2Nlc3NQb29sQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQkocmV2aXNpb24gMjYwMjE0KQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQkod29ya2luZyBj
b3B5KQpAQCAtNDgsNiArNDgsNyBAQAogI2ltcG9ydCAiV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW1wb3J0ICJXaW5kb3dT
ZXJ2ZXJDb25uZWN0aW9uLmgiCisjaW1wb3J0IDxXZWJDb3JlL0FHWENvbXBpbGVyU2VydmljZS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9Db2xvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRE
ZXZpY2VNb2RlbC5oPgogI2ltcG9ydCA8V2ViQ29yZS9NSU1FVHlwZVJlZ2lzdHJ5Lmg+CkBAIC04
NCw3ICs4NSw2IEBACiAjaWYgUExBVEZPUk0oSU9TKQogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9X
ZWJGaWx0ZXJFdmFsdWF0b3JTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvaW9zL01vYmlsZUdlc3Rh
bHRTUEkuaD4KLSNpbXBvcnQgPHN5cy91dHNuYW1lLmg+CiAKIFNPRlRfTElOS19QUklWQVRFX0ZS
QU1FV09SSyhXZWJDb250ZW50QW5hbHlzaXMpOwogU09GVF9MSU5LX0NMQVNTKFdlYkNvbnRlbnRB
bmFseXNpcywgV2ViRmlsdGVyRXZhbHVhdG9yKTsKQEAgLTE5OSwyNSArMTk5LDYgQEAgdm9pZCBX
ZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1SZXNvbHZlUGF0aAogI2VuZGlmCiB9CiAKLSNpZiBQTEFU
Rk9STShJT1MpCi1zdGF0aWMgYm9vbCBkZXZpY2VIYXNBR1hDb21waWxlclNlcnZpY2UoKQotewot
ICAgIHN0YXRpYyBib29sIGRldmljZUhhc0FHWENvbXBpbGVyU2VydmljZSA9IGZhbHNlOwotICAg
IHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBmbGFnOwotICAgIHN0ZDo6Y2FsbF9vbmNlKAotICAgICAg
ICBmbGFnLAotICAgICAgICBbXSAoKSB7Ci0gICAgICAgICAgICBzdHJ1Y3QgdXRzbmFtZSBzeXN0
ZW1JbmZvOwotICAgICAgICAgICAgaWYgKHVuYW1lKCZzeXN0ZW1JbmZvKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICBjb25zdCBjaGFyKiBtYWNoaW5lID0gc3lzdGVtSW5m
by5tYWNoaW5lOwotICAgICAgICAgICAgaWYgKCFzdHJjbXAobWFjaGluZSwgImlQYWQ1LDEiKSB8
fCAhc3RyY21wKG1hY2hpbmUsICJpUGFkNSwyIikgfHwgIXN0cmNtcChtYWNoaW5lLCAiaVBhZDUs
MyIpIHx8ICFzdHJjbXAobWFjaGluZSwgImlQYWQ1LDQiKSkKLSAgICAgICAgICAgICAgICBkZXZp
Y2VIYXNBR1hDb21waWxlclNlcnZpY2UgPSB0cnVlOwotICAgICAgICB9KTsKLSAgICByZXR1cm4g
ZGV2aWNlSGFzQUdYQ29tcGlsZXJTZXJ2aWNlOwotfQotI2VuZGlmCi0KICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogc3RhdGljIGJvb2wgaXNJbnRlcm5hbEluc3RhbGwoKQogewpAQCAtMzYxLDcg
KzM0Miw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZVcKICNlbmRp
ZgogICAgIAogI2lmIFBMQVRGT1JNKElPUykKLSAgICBpZiAoZGV2aWNlSGFzQUdYQ29tcGlsZXJT
ZXJ2aWNlKCkpIHsKKyAgICBpZiAoV2ViQ29yZTo6ZGV2aWNlSGFzQUdYQ29tcGlsZXJTZXJ2aWNl
KCkpIHsKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGNvbXBpbGVyU2VydmljZUV4
dGVuc2lvbkhhbmRsZTsKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9y
TWFjaExvb2t1cCgiY29tLmFwcGxlLkFHWENvbXBpbGVyU2VydmljZSIsIFdURjo6bnVsbG9wdCwg
Y29tcGlsZXJTZXJ2aWNlRXh0ZW5zaW9uSGFuZGxlKTsKICAgICAgICAgcGFyYW1ldGVycy5jb21w
aWxlclNlcnZpY2VFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKGNvbXBpbGVyU2VydmljZUV4dGVu
c2lvbkhhbmRsZSk7CkBAIC0zOTIsNiArMzczLDI1IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBs
YXRmb3JtSW5pdGlhbGl6ZVcKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgcnVubmluZ2Jv
YXJkRXh0ZW5zaW9uSGFuZGxlOwogICAgIGlmIChTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5k
bGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUucnVubmluZ2JvYXJkIiwgV1RGOjpudWxsb3B0LCBy
dW5uaW5nYm9hcmRFeHRlbnNpb25IYW5kbGUsIFNhbmRib3hFeHRlbnNpb246OkZsYWdzOjpOb1Jl
cG9ydCkpCiAgICAgICAgIHBhcmFtZXRlcnMucnVubmluZ2JvYXJkRXh0ZW5zaW9uSGFuZGxlID0g
V1RGTW92ZShydW5uaW5nYm9hcmRFeHRlbnNpb25IYW5kbGUpOworCisgICAgaWYgKFdlYkNvcmU6
OmRldmljZUhhc0FHWENvbXBpbGVyU2VydmljZSgpKSB7CisgICAgICAgIHN0YXRpYyBjb25zdCBj
aGFyKiBjb25zdCBpb0tpdENsYXNzZXNbXSA9IHsKKyAgICAgICAgICAgICJBR1hDb21tYW5kUXVl
dWUiLAorICAgICAgICAgICAgIkFHWERldmljZSIsCisgICAgICAgICAgICAiQUdYU2hhcmVkVXNl
ckNsaWVudCIsCisgICAgICAgICAgICAiSU9BY2NlbENvbnRleHQiLAorICAgICAgICAgICAgIklP
QWNjZWxDb250ZXh0MiIsCisgICAgICAgICAgICAiSU9BY2NlbERldmljZSIsCisgICAgICAgICAg
ICAiSU9BY2NlbERldmljZTIiLAorICAgICAgICAgICAgIklPQWNjZWxTaGFyZWRVc2VyQ2xpZW50
IiwKKyAgICAgICAgICAgICJJT0FjY2VsU2hhcmVkVXNlckNsaWVudDIiCisgICAgICAgICAgICAi
SU9BY2NlbFN1Ym1pdHRlcjIiLAorICAgICAgICB9OworICAgICAgICBhdXRvIHNpemUgPSBXVEZf
QVJSQVlfTEVOR1RIKGlvS2l0Q2xhc3Nlcyk7CisgICAgICAgIHBhcmFtZXRlcnMuZHluYW1pY0lP
S2l0RXh0ZW5zaW9uSGFuZGxlcy5hbGxvY2F0ZShzaXplKTsKKyAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVh
dGVIYW5kbGVGb3JJT0tpdENsYXNzRXh0ZW5zaW9uKGlvS2l0Q2xhc3Nlc1tpXSwgV1RGOjpudWxs
b3B0LCBwYXJhbWV0ZXJzLmR5bmFtaWNJT0tpdEV4dGVuc2lvbkhhbmRsZXNbaV0pOworICAgIH0K
ICNlbmRpZgogICAgIAogI2lmIFBMQVRGT1JNKENPQ09BKQpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCShyZXZpc2lvbiAyNjAyMTQpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC02Miw2ICs2Miw3IEBACiAjaW1wb3J0ICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIK
ICNpbXBvcnQgIldlYlByb2Nlc3NQb29sLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIK
KyNpbXBvcnQgPFdlYkNvcmUvQUdYQ29tcGlsZXJTZXJ2aWNlLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0ZyYW1lVmlldy5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2ltcG9y
dCA8V2ViQ29yZS9QbGF0Zm9ybVNjcmVlbi5oPgpAQCAtMTU5MSw2ICsxNTkyLDExIEBAIHZvaWQg
V2ViUGFnZVByb3h5Ojp3aWxsUGVyZm9ybVBhc3RlQ29tbWEKICAgICBncmFudEFjY2Vzc1RvQ3Vy
cmVudFBhc3RlYm9hcmREYXRhKFVJUGFzdGVib2FyZE5hbWVHZW5lcmFsKTsKIH0KIAordm9pZCBX
ZWJQYWdlUHJveHk6OnNldERldmljZUhhc0FHWENvbXBpbGVyU2VydmljZUZvclRlc3RpbmcoKSBj
b25zdAoreworICAgIFdlYkNvcmU6OnNldERldmljZUhhc0FHWENvbXBpbGVyU2VydmljZUZvclRl
c3RpbmcoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBSRUxFQVNFX0xP
R19JRl9BTExPV0VECkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJv
Y2Vzc0NvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9XZWJQcm9jZXNzQ29jb2EubW0JKHJldmlzaW9uIDI2MDIxNCkKKysrIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTI5
Niw2ICsyOTYsOSBAQCB2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByCiAK
ICAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IHBhcmFtZXRlcnMuZHluYW1pY01hY2hFeHRl
bnNpb25IYW5kbGVzLnNpemUoKTsgaSA8IHNpemU7ICsraSkKICAgICAgICAgU2FuZGJveEV4dGVu
c2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KHBhcmFtZXRlcnMuZHluYW1pY01hY2hFeHRlbnNpb25I
YW5kbGVzW2ldKTsKKworICAgIGZvciAoYXV0byYgaGFuZGxlIDogcGFyYW1ldGVycy5keW5hbWlj
SU9LaXRFeHRlbnNpb25IYW5kbGVzKQorICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1l
UGVybWFuZW50bHkoaGFuZGxlKTsKICNlbmRpZgogICAgIAogICAgIGlmIChwYXJhbWV0ZXJzLm5l
SGVscGVyRXh0ZW5zaW9uSGFuZGxlKQpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjYwMjIyKQorKysgVG9vbHMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMDQtMTYgIFBlciBBcm5lIFZv
bGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIERlbnkgaW9raXQgb3Bl
biBhY2Nlc3MgdG8gZ3JhcGhpY3MgcmVsYXRlZCBjbGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA2MTYKKworICAgICAgICBSZXZpZXdlZCBi
eSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0L0FHWENvbXBpbGVyU2VydmljZS5tbTogQWRkZWQuCisgICAgICAgIChURVNUKToKKwog
MjAyMC0wNC0xNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAg
IEFkZCBzbGFjay1hd2FyZSBXS1IgaW1wbGVtZW50YXRpb24KSW5kZXg6IFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiAyNjAyMTQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtODkzLDYg
Kzg5Myw3IEBACiAJCUMxNUNCQjMwMjNGMUZGMUEwMDMwMENDNyAvKiBCYWNrbGlnaHRMZXZlbE5v
dGlmaWNhdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEMxNUNCQjJGMjNGMUZGMUEwMDMwMENDNyAvKiBCYWNrbGlnaHRMZXZlbE5vdGlmaWNhdGlv
bi5tbSAqLzsgfTsKIAkJQzE1Q0JCM0YyM0ZCMTc3QTAwMzAwQ0M3IC8qIFByZWZlcmVuY2VDaGFu
Z2VzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzE1
Q0JCM0UyM0ZCMTc3QTAwMzAwQ0M3IC8qIFByZWZlcmVuY2VDaGFuZ2VzLm1tICovOyB9OwogCQlD
MTY5MkRDQTIzRDEwREFFMDA2RTg4RjcgLyogQmF0dGVyeS5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxNjkyREM5MjNEMTBEQUUwMDZFODhGNyAvKiBC
YXR0ZXJ5Lm1tICovOyB9OworCQlDMUY3QjczOTI0NDkwODNGMDAxMjQ1NTcgLyogQUdYQ29tcGls
ZXJTZXJ2aWNlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQzFGN0I3MzgyNDQ5MDgzRjAwMTI0NTU3IC8qIEFHWENvbXBpbGVyU2VydmljZS5tbSAqLzsg
fTsKIAkJQzFGRjlFREIyNDQ2NDRGMDAwODM5QUU0IC8qIFdlYkZpbHRlci5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxRkY5RURBMjQ0NjQ0RjAwMDgz
OUFFNCAvKiBXZWJGaWx0ZXIubW0gKi87IH07CiAJCUMyMEY4OEE3MjI5NUI5NjcwMEQ2MTBGQSAv
KiBDb3JlVGV4dC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDMjBGODhBNjIyOTVCOTY3MDBENjEwRkEgLyogQ29yZVRleHQuZnJhbWV3
b3JrICovOyB9OwogCQlDMjJGQTMyQjIyOEY4NzA4MDA5RDc5ODggLyogVGV4dFdpZHRoLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzIyRkEzMkEyMjhG
ODcwODAwOUQ3OTg4IC8qIFRleHRXaWR0aC5tbSAqLzsgfTsKQEAgLTI0ODMsNiArMjQ4NCw3IEBA
CiAJCUMxNUNCQjNFMjNGQjE3N0EwMDMwMENDNyAvKiBQcmVmZXJlbmNlQ2hhbmdlcy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFByZWZlcmVuY2VDaGFuZ2VzLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMTY5MkRDOTIzRDEwREFFMDA2RTg4Rjcg
LyogQmF0dGVyeS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEJhdHRlcnkubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxRDhFRTIxMjAyOEU4RTMwMDhFQjE0MSAvKiBXZWJQcm9j
ZXNzVGVybWluYXRlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
V2ViUHJvY2Vzc1Rlcm1pbmF0ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzFG
N0I3MzgyNDQ5MDgzRjAwMTI0NTU3IC8qIEFHWENvbXBpbGVyU2VydmljZS5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IEFHWENvbXBpbGVyU2VydmljZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQzFGRjlFREEyNDQ2NDRGMDAwODM5QUU0IC8qIFdlYkZpbHRlci5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFdlYkZpbHRlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQzIwRjg4QTYyMjk1Qjk2NzAwRDYxMEZBIC8qIENvcmVUZXh0LmZyYW1ld29yayAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3
b3JrOyBuYW1lID0gQ29yZVRleHQuZnJhbWV3b3JrOyBwYXRoID0gU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9Db3JlVGV4dC5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBTREtST09UOyB9OwogCQlD
MjJGQTMyQTIyOEY4NzA4MDA5RDc5ODggLyogVGV4dFdpZHRoLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gVGV4dFdpZHRoLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjkzNiw2
ICsyOTM4LDcgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJRTNG
OEFCOTEyNDFBQjlDRTAwM0UyQTdFIC8qIEFjY2Vzc2liaWxpdHlSZW1vdGVVSUFwcC5tbSAqLywK
KwkJCQlDMUY3QjczODI0NDkwODNGMDAxMjQ1NTcgLyogQUdYQ29tcGlsZXJTZXJ2aWNlLm1tICov
LAogCQkJCUMxNUNCQjJGMjNGMUZGMUEwMDMwMENDNyAvKiBCYWNrbGlnaHRMZXZlbE5vdGlmaWNh
dGlvbi5tbSAqLywKIAkJCQlDMTY5MkRDOTIzRDEwREFFMDA2RTg4RjcgLyogQmF0dGVyeS5tbSAq
LywKIAkJCQlDMTNEODJEODI0MTZGMTMyMDBBNjI3OTMgLyogRW5hYmxlQWNjZXNzaWJpbGl0eS5t
bSAqLywKQEAgLTQ3MjksNiArNDczMiw3IEBACiAJCQkJNTVBODE3RkMyMTgxMDBFMDAwMDRBMzlB
IC8qIEFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTVGOUQyRTUyMjA1MDMxODAwQTlBQjM4IC8qIEFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVz
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0E5MDlBN0QxRDg3NzQ4MDAwN0UxMEY4IC8qIEFmZmlu
ZVRyYW5zZm9ybS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDMUY3QjczOTI0NDkwODNGMDAxMjQ1
NTcgLyogQUdYQ29tcGlsZXJTZXJ2aWNlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTFERjc0MzIx
QzQxQjY1ODAwQTJGNEQwIC8qIEFsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lcy5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTJERTcxQUZFMUQ0OUMwQkQwMDkwNDA5NCAvKiBBbmltYXRlZFJlc2l6ZS5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTU3MTUyQjVFMjFDQzIwNDUwMDBDMzdDQSAvKiBBcGR1VGVz
dC5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0L0FHWENvbXBpbGVyU2VydmljZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdC9BR1hDb21waWxlclNlcnZpY2UubW0JKG5vbmV4aXN0ZW50KQorKysg
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvQUdYQ29tcGlsZXJTZXJ2aWNlLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisKKyNpZiBXS19IQVZFX0NfU1BJICYmIFBMQVRGT1JNKElPUykKKworI2ltcG9ydCAi
UGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKKyNpbXBvcnQg
PFdlYktpdC9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oPgorCitURVNUKFdlYktpdCwgSU9L
aXRPcGVuU2FuZGJveEFjY2Vzc0ZvckRldmljZVdpdGhBR1hDb21waWxlclNlcnZpY2UpCit7Cisg
ICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24g
YWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIGNvbnRleHQgPSBhZG9wdFdLKFRlc3RXZWJLaXRBUEk6
OlV0aWw6OmNyZWF0ZUNvbnRleHRGb3JJbmplY3RlZEJ1bmRsZVRlc3QoIkludGVybmFsc0luamVj
dGVkQnVuZGxlVGVzdCIpKTsKKyAgICBjb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NQb29sID0g
KFdLUHJvY2Vzc1Bvb2wgKiljb250ZXh0LmdldCgpOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0
TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwg
MzAwLCAzMDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBhZGRUb1dpbmRvdzpZ
RVNdKTsKKworICAgIFt3ZWJWaWV3IF9zZXREZXZpY2VIYXNBR1hDb21waWxlclNlcnZpY2VGb3JU
ZXN0aW5nXTsKKworICAgIGF1dG8gc2FuZGJveEFjY2VzcyA9IFsmXSB7CisgICAgICAgIHJldHVy
biBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAid2luZG93LmludGVybmFs
cy5pbnRlcm5hbHMuaGFzU2FuZGJveElPS2l0T3BlbkFjY2Vzc1RvQ2xhc3MoJ2NvbS5hcHBsZS5X
ZWJLaXQuV2ViQ29udGVudCcsICdBR1hDb21tYW5kUXVldWUnKSJdLmJvb2xWYWx1ZTsKKyAgICB9
OworCisgICAgQVNTRVJUX1RSVUUoc2FuZGJveEFjY2VzcygpKTsKKworfQorCisjZW5kaWYgLy8g
V0tfSEFWRV9DX1NQSQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396724</attachid>
            <date>2020-04-16 16:59:00 -0700</date>
            <delta_ts>2020-04-17 07:40:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210616-20200416165859.patch</filename>
            <type>text/plain</type>
            <size>35532</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjAyMTQpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIwLTA0LTE2ICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBEZW55IGlva2l0IG9wZW4gYWNjZXNz
IHRvIGdyYXBoaWNzIHJlbGF0ZWQgY2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwNjE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4g
QWRsZXIuCisKKyAgICAgICAgKiB3dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJLmg6CisKIDIwMjAt
MDQtMTYgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIENsZWFu
IHVwIFZlY3RvckNvY29hIGNyZWF0ZU5TQXJyYXkgb3ZlcmxvYWRzIGFuZCBhZGQgZG9jdW1lbnRh
dGlvbiBmb3IgY3JlYXRlTlNBcnJheSB0YWtpbmcgYSBtYXAgZnVuY3Rpb24KSW5kZXg6IFNvdXJj
ZS9XVEYvd3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
VEYvd3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oCShyZXZpc2lvbiAyNjAyMTQpCisrKyBTb3Vy
Y2UvV1RGL3d0Zi9zcGkvZGFyd2luL1NhbmRib3hTUEkuaAkod29ya2luZyBjb3B5KQpAQCAtMzYs
NiArMzYsNyBAQCBlbnVtIHNhbmRib3hfZmlsdGVyX3R5cGUgewogICAgIFNBTkRCT1hfRklMVEVS
X05PTkUsCiAgICAgU0FOREJPWF9GSUxURVJfR0xPQkFMX05BTUUgPSAyLAogICAgIFNBTkRCT1hf
RklMVEVSX1hQQ19TRVJWSUNFX05BTUUgPSAxMiwKKyAgICBTQU5EQk9YX0ZJTFRFUl9JT0tJVF9D
T05ORUNUSU9OLAogfTsKIAogI2RlZmluZSBTQU5EQk9YX05BTUVEX0VYVEVSTkFMIDB4MDAwMwpA
QCAtODQsNiArODUsOSBAQCBzYW5kYm94X3Byb2ZpbGVfdCBzYW5kYm94X2NvbXBpbGVfc3RyaW5n
CiB2b2lkIHNhbmRib3hfZnJlZV9wcm9maWxlKHNhbmRib3hfcHJvZmlsZV90KTsKIGludCBzYW5k
Ym94X2FwcGx5KHNhbmRib3hfcHJvZmlsZV90KTsKIAorY2hhciAqc2FuZGJveF9leHRlbnNpb25f
aXNzdWVfaW9raXRfcmVnaXN0cnlfZW50cnlfY2xhc3NfdG9fcHJvY2Vzcyhjb25zdCBjaGFyICpl
eHRlbnNpb25fY2xhc3MsIGNvbnN0IGNoYXIgKnJlZ2lzdHJ5X2VudHJ5X2NsYXNzLCB1aW50MzJf
dCBmbGFncywgYXVkaXRfdG9rZW5fdCk7CitjaGFyICpzYW5kYm94X2V4dGVuc2lvbl9pc3N1ZV9p
b2tpdF9yZWdpc3RyeV9lbnRyeV9jbGFzcyhjb25zdCBjaGFyICpleHRlbnNpb25fY2xhc3MsIGNv
bnN0IGNoYXIgKnJlZ2lzdHJ5X2VudHJ5X2NsYXNzLCB1aW50MzJfdCBmbGFncyk7CisKIFdURl9F
WFRFUk5fQ19FTkQKIAogI2VuZGlmIC8vIE9TKERBUldJTikKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlz
aW9uIDI2MDIyMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDI3IEBACisyMDIwLTA0LTE2ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFw
cGxlLmNvbT4KKworICAgICAgICBbaU9TXSBEZW55IGlva2l0IG9wZW4gYWNjZXNzIHRvIGdyYXBo
aWNzIHJlbGF0ZWQgY2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjEwNjE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisK
KyAgICAgICAgRGVueSBpb2tpdCBvcGVuIGFjY2VzcyB0byBncmFwaGljcyByZWxhdGVkIGNsYXNz
ZXMgaW4gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBvbiBpT1MsIGJ1dCBpc3N1ZQorICAgICAgICBl
eHRlbnNpb25zIGZvciB0aGVzZSBmb3Igc29tZSBkZXZpY2VzIHdoaWNoIHN0aWxsIG5lZWQgYWNj
ZXNzIHRvIHRoZW0uCisKKyAgICAgICAgQVBJIHRlc3Q6IFdlYktpdC5JT0tpdE9wZW5TYW5kYm94
QWNjZXNzRm9yRGV2aWNlV2l0aEFHWENvbXBpbGVyU2VydmljZQorCisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL0FH
WENvbXBpbGVyU2VydmljZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6c2V0RGV2aWNl
SGFzQUdYQ29tcGlsZXJTZXJ2aWNlRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpkZXZp
Y2VIYXNBR1hDb21waWxlclNlcnZpY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL0FHWENv
bXBpbGVyU2VydmljZS5oOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Omhhc1NhbmRib3hJT0tpdE9wZW5BY2Nlc3NU
b0NsYXNzKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3Rp
bmcvSW50ZXJuYWxzLmlkbDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkludGVybmFsczo6aGFzU2FuZGJveElPS2l0T3BlbkFjY2Vzc1RvQ2xhc3Mp
OgorCiAyMDIwLTA0LTE2ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQgYnVpbGQtZml4IGFmdGVyIHIyNjAxODI7IGd1YXJkIGNhbGwgdG8gZnVs
bHNjcmVlbk1hbmFnZXIoKSBmb3IgcG9ydHMgd2hpY2ggZG8gbm90CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAy
NjAyMTQpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHdvcmtpbmcgY29weSkKQEAgLTM5OTcsNiArMzk5Nyw4IEBACiAJCUMxNjkyREQyMjNEMjNB
QkQwMDZFODhGNyAvKiBTeXN0ZW1CYXR0ZXJ5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQzE2OTJERDEyM0QyM0FCRDAwNkU4OEY3IC8qIFN5c3RlbUJh
dHRlcnkubW0gKi87IH07CiAJCUMxNjkyREQ1MjNEMjNFMDgwMDZFODhGNyAvKiBTeXN0ZW1CYXR0
ZXJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTY5
MkRENDIzRDIzQUUwMDA2RTg4RjcgLyogU3lzdGVtQmF0dGVyeS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMxRTFEMjM2MjAzREYxNTQwMDU4NDY2
NSAvKiBTY3JlZW5Qcm9wZXJ0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDMUUxRDIzNTIwM0RGMTU0MDA1ODQ2NjUgLyogU2NyZWVuUHJvcGVydGll
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUMx
RjdCNzMxMjQ0OEYyQUMwMDEyNDU1NyAvKiBBR1hDb21waWxlclNlcnZpY2UuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzFGN0I3MkYyNDQ4RjJBQzAw
MTI0NTU3IC8qIEFHWENvbXBpbGVyU2VydmljZS5jcHAgKi87IH07CisJCUMxRjdCNzMyMjQ0OEYy
QUMwMDEyNDU1NyAvKiBBR1hDb21waWxlclNlcnZpY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxRjdCNzMwMjQ0OEYyQUMwMDEyNDU1NyAvKiBBR1hD
b21waWxlclNlcnZpY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlDMjAxNUMwQTFCRTZGRUIyMDA4MjIzODkgLyogRm9udFZhcmlhbnRCdWlsZGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjAxNUMw
OTFCRTZGRTJDMDA4MjIzODkgLyogRm9udFZhcmlhbnRCdWlsZGVyLmggKi87IH07CiAJCUMyMURG
MkVBMUQ5RTRFOTkwMEY1QjI0QyAvKiBDU1NGb250VmFyaWF0aW9uVmFsdWUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyMURGMkU4MUQ5RTRFOTkwMEY1
QjI0QyAvKiBDU1NGb250VmFyaWF0aW9uVmFsdWUuaCAqLzsgfTsKIAkJQzI0NThFNjMxRkU4OTdC
MDAwNTk0NzU5IC8qIEZvbnRDYWNoZUNvcmVUZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjQ1OEU2MTFGRTg5NzlFMDA1OTQ3NTkgLyogRm9udENh
Y2hlQ29yZVRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtMTM2MDcsNiArMTM2MDksOCBAQAogCQlDMTY5MkRENDIzRDIzQUUwMDA2RTg4Rjcg
LyogU3lzdGVtQmF0dGVyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTeXN0ZW1CYXR0ZXJ5Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxOEZCNTE4MjQyRjkzODIwMDdFOTg3NSAvKiBTbGVl
cERpc2FibGVyQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNsZWVwRGlzYWJsZXJDbGll
bnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMUUxRDIzNTIwM0RGMTU0MDA1
ODQ2NjUgLyogU2NyZWVuUHJvcGVydGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JlZW5Qcm9wZXJ0
aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMxRjdCNzJGMjQ0OEYyQUMwMDEy
NDU1NyAvKiBBR1hDb21waWxlclNlcnZpY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQUdYQ29t
cGlsZXJTZXJ2aWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzFGN0I3MzAy
NDQ4RjJBQzAwMTI0NTU3IC8qIEFHWENvbXBpbGVyU2VydmljZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBB
R1hDb21waWxlclNlcnZpY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzIwMTVD
MDkxQkU2RkUyQzAwODIyMzg5IC8qIEZvbnRWYXJpYW50QnVpbGRlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBGb250VmFyaWFudEJ1aWxkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzIw
RjRGNjQyMURGQkU1QzAwNzBDNDVBIC8qIFdITFNMVHlwZVJlZmVyZW5jZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXSExTTFR5cGVSZWZlcmVuY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDMjBGNEY2NjIxREZGMjM2MDA3MEM0NUEgLyogV0hMU0xJbnRlZ2VyTGl0ZXJhbC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTEludGVnZXJMaXRlcmFsLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIzMjg3LDYgKzIzMjkxLDggQEAKIAkJQTVDOTc0Q0UxMTQ4
NUZEQTAwNjZGMkFCIC8qIGNvY29hICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKKwkJCQlDMUY3QjcyRjI0NDhGMkFDMDAxMjQ1NTcgLyogQUdYQ29tcGlsZXJTZXJ2
aWNlLmNwcCAqLywKKwkJCQlDMUY3QjczMDI0NDhGMkFDMDAxMjQ1NTcgLyogQUdYQ29tcGlsZXJT
ZXJ2aWNlLmggKi8sCiAJCQkJQTE0MDkwRkExQUE1MUUxRDAwOTExOTFBIC8qIENvbnRlbnRGaWx0
ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1tICovLAogCQkJCUNEN0QzMzQ1MUM3QTE2QkYwMDA0MTI5
MyAvKiBDb3JlVmlkZW9Tb2Z0TGluay5jcHAgKi8sCiAJCQkJQ0Q3RDMzNDYxQzdBMTZCRjAwMDQx
MjkzIC8qIENvcmVWaWRlb1NvZnRMaW5rLmggKi8sCkBAIC0yOTM2MSw2ICsyOTM2Nyw3IEBACiAJ
CQkJQTE2NzdFMEUyMTNFMDJBMDAwQTA4QzM0IC8qIEFkZHJlc3NFcnJvcnMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDRjdFNDkxMTM3Q0Q3QzcwMDFEREFFNyAvKiBBZGp1c3RWaWV3U2l6ZU9yTm90
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NEQwQzQwNjExMTVGMUVBMDAxOEFBMzQgLyogQWZmaW5l
VHJhbnNmb3JtLmggaW4gSGVhZGVycyAqLywKKwkJCQlDMUY3QjczMjI0NDhGMkFDMDAxMjQ1NTcg
LyogQUdYQ29tcGlsZXJTZXJ2aWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0JCNUM4ODFENUQ2
RjQ1MDA1QTcxRjQgLyogQWxsRGVzY2VuZGFudHNDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQk3Mjk5QkM2NzIzRDZBNTMyMDBDQzY4ODMgLyogQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQ0VEQTEyRDcxNTJDQTFDQjAwRDlFMDhEIC8qIEFsdGVybmF0
aXZlVGV4dENsaWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNDAwMyw2ICszNDAxMCw3IEBACiAJ
CQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCiAJCQkJQTk3ODdD
QjQxRjVGNUM2NjAwQzU1MUM2IC8qIEFjY2Vzc2liaWxpdHlNZWRpYU9iamVjdC5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlDMUY3QjczMTI0NDhGMkFDMDAxMjQ1NTcgLyogQUdYQ29tcGlsZXJTZXJ2
aWNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEMEVFRTBFMTQ3NDNGMzkwMDNFQUZBMiAvKiBB
dWRpb0Rlc3RpbmF0aW9uSU9TLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNENTU5NjkxMTQ3NUI2
NzgwMDFEMEJEMCAvKiBBdWRpb0ZpbGVSZWFkZXJJT1MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
Q0RBNzk4MjcxNzBBMjc5MTAwRDQ1QzU1IC8qIEF1ZGlvU2Vzc2lvbklPUy5tbSBpbiBTb3VyY2Vz
ICovLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQUdYQ29tcGlsZXJTZXJ2
aWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9BR1hD
b21waWxlclNlcnZpY2UuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL0FHWENvbXBpbGVyU2VydmljZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw2MiBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiBhcmUgbWV0OgorKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQUdYQ29tcGlsZXJTZXJ2aWNlLmgiCisKKyNp
ZiBQTEFURk9STShJT1MpCisKKyNpbmNsdWRlIDxzeXMvdXRzbmFtZS5oPgorI2luY2x1ZGUgPHd0
Zi9PcHRpb25hbC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBPcHRpb25hbDxi
b29sPiBoYXNBR1hDb21waWxlclNlcnZpY2U7CisKK3ZvaWQgc2V0RGV2aWNlSGFzQUdYQ29tcGls
ZXJTZXJ2aWNlRm9yVGVzdGluZygpCit7CisgICAgaGFzQUdYQ29tcGlsZXJTZXJ2aWNlID0gdHJ1
ZTsKK30KKworYm9vbCBkZXZpY2VIYXNBR1hDb21waWxlclNlcnZpY2UoKQoreworICAgIGlmICgh
aGFzQUdYQ29tcGlsZXJTZXJ2aWNlKSB7CisgICAgICAgIHN0cnVjdCB1dHNuYW1lIHN5c3RlbUlu
Zm87CisgICAgICAgIGlmICh1bmFtZSgmc3lzdGVtSW5mbykpIHsKKyAgICAgICAgICAgIGhhc0FH
WENvbXBpbGVyU2VydmljZSA9IGZhbHNlOworICAgICAgICAgICAgcmV0dXJuICpoYXNBR1hDb21w
aWxlclNlcnZpY2U7CisgICAgICAgIH0KKyAgICAgICAgY29uc3QgY2hhciogbWFjaGluZSA9IHN5
c3RlbUluZm8ubWFjaGluZTsKKyAgICAgICAgaWYgKCFzdHJjbXAobWFjaGluZSwgImlQYWQ1LDEi
KSB8fCAhc3RyY21wKG1hY2hpbmUsICJpUGFkNSwyIikgfHwgIXN0cmNtcChtYWNoaW5lLCAiaVBh
ZDUsMyIpIHx8ICFzdHJjbXAobWFjaGluZSwgImlQYWQ1LDQiKSkKKyAgICAgICAgICAgIGhhc0FH
WENvbXBpbGVyU2VydmljZSA9IHRydWU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGhhc0FH
WENvbXBpbGVyU2VydmljZSA9IGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gKmhhc0FHWENvbXBp
bGVyU2VydmljZTsKK30KKworfQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL0FHWENvbXBpbGVyU2VydmljZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL0FHWENvbXBpbGVyU2VydmljZS5oCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0FHWENvbXBpbGVyU2VydmljZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyogYXJlIG1ldDoKKyogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisqCisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
V0VCQ09SRV9FWFBPUlQgYm9vbCBkZXZpY2VIYXNBR1hDb21waWxlclNlcnZpY2UoKTsKK1dFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0RGV2aWNlSGFzQUdYQ29tcGlsZXJTZXJ2aWNlRm9yVGVzdGluZygp
OworCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCShyZXZpc2lvbiAy
NjAyMTQpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTU2MDMsNiArNTYwMywxMSBAQCBib29sIEludGVybmFsczo6aXNSZW1vdGVVSUFw
cEZvckFjY2Vzc2liCiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQorCitib29sIEludGVybmFsczo6
aGFzU2FuZGJveElPS2l0T3BlbkFjY2Vzc1RvQ2xhc3MoY29uc3QgU3RyaW5nJiBwcm9jZXNzLCBj
b25zdCBTdHJpbmcmIGlvS2l0Q2xhc3MpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQogI2VuZGlm
CiAKIFN0cmluZyBJbnRlcm5hbHM6Om1lZGlhTUlNRVR5cGVGb3JFeHRlbnNpb24oY29uc3QgU3Ry
aW5nJiBleHRlbnNpb24pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgJKHJldmlz
aW9uIDI2MDIxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTk3NCw2ICs5NzQsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGhhc1NhbmRi
b3hNYWNoTG9va3VwQWNjZXNzVG9HbG9iYWxOYW1lKGNvbnN0IFN0cmluZyYgcHJvY2VzcywgY29u
c3QgU3RyaW5nJiBzZXJ2aWNlKTsKICAgICBib29sIGhhc1NhbmRib3hNYWNoTG9va3VwQWNjZXNz
VG9YUENTZXJ2aWNlTmFtZShjb25zdCBTdHJpbmcmIHByb2Nlc3MsIGNvbnN0IFN0cmluZyYgc2Vy
dmljZSk7CisgICAgYm9vbCBoYXNTYW5kYm94SU9LaXRPcGVuQWNjZXNzVG9DbGFzcyhjb25zdCBT
dHJpbmcmIHByb2Nlc3MsIGNvbnN0IFN0cmluZyYgaW9LaXRDbGFzcyk7CiAKICAgICBTdHJpbmcg
aGlnaGxpZ2h0UHNldWRvRWxlbWVudENvbG9yKGNvbnN0IFN0cmluZyYgaGlnaGxpZ2h0TmFtZSwg
RWxlbWVudCYpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCShyZXZp
c2lvbiAyNjAyMTQpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTg4NSw3ICs4ODUsOCBAQCBlbnVtIENvbXBvc2l0aW5nUG9saWN5IHsK
IAogICAgIGJvb2xlYW4gaGFzU2FuZGJveE1hY2hMb29rdXBBY2Nlc3NUb0dsb2JhbE5hbWUoRE9N
U3RyaW5nIHByb2Nlc3MsIERPTVN0cmluZyBzZXJ2aWNlKTsKICAgICBib29sZWFuIGhhc1NhbmRi
b3hNYWNoTG9va3VwQWNjZXNzVG9YUENTZXJ2aWNlTmFtZShET01TdHJpbmcgcHJvY2VzcywgRE9N
U3RyaW5nIHNlcnZpY2UpOwotICAgIAorICAgIGJvb2xlYW4gaGFzU2FuZGJveElPS2l0T3BlbkFj
Y2Vzc1RvQ2xhc3MoRE9NU3RyaW5nIHByb2Nlc3MsIERPTVN0cmluZyBpb0tpdENsYXNzKTsKKwog
ICAgIERPTVN0cmluZyBzeXN0ZW1Db2xvckZvckNTU1ZhbHVlKERPTVN0cmluZyBjc3NWYWx1ZSwg
Ym9vbGVhbiB1c2VEYXJrTW9kZUFwcGVhcmFuY2UsIGJvb2xlYW4gdXNlRWxldmF0ZWRVc2VySW50
ZXJmYWNlTGV2ZWwpOwogICAgIERPTVN0cmluZyBmb2N1c1JpbmdDb2xvcigpOwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5tbQkocmV2aXNpb24gMjYwMjE0KQorKysgU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2
LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiSW50ZXJuYWxzLmgiCiAKKyNpbXBv
cnQgIkFHWENvbXBpbGVyU2VydmljZS5oIgogI2ltcG9ydCAiRE9NVVJMLmgiCiAjaW1wb3J0ICJE
aWN0aW9uYXJ5TG9va3VwLmgiCiAjaW1wb3J0ICJEb2N1bWVudC5oIgpAQCAtMzgsNiArMzksNyBA
QAogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWUGxheWVyLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2Nv
Y29hL05TQWNjZXNzaWJpbGl0eVNQSS5oPgogI2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFz
Lmg+CisjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJLmg+CiAKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogI2ltcG9ydCA8cGFsL2lvcy9VSUtpdFNvZnRMaW5rLmg+CkBAIC0xMTYs
NCArMTE4LDEyIEBAIGJvb2wgSW50ZXJuYWxzOjppc1JlbW90ZVVJQXBwRm9yQWNjZXNzaWIKICNl
bmRpZgogfQogCitib29sIEludGVybmFsczo6aGFzU2FuZGJveElPS2l0T3BlbkFjY2Vzc1RvQ2xh
c3MoY29uc3QgU3RyaW5nJiBwcm9jZXNzLCBjb25zdCBTdHJpbmcmIGlvS2l0Q2xhc3MpCit7Cisg
ICAgVU5VU0VEX1BBUkFNKHByb2Nlc3MpOyAvLyBUT0RPOiBhZGQgc3VwcG9ydCBmb3IgZ2V0dGlu
ZyBQSUQgb2Ygb3RoZXIgV2ViS2l0IHByb2Nlc3Nlcy4KKyAgICBwaWRfdCBwaWQgPSBnZXRwaWQo
KTsKKworICAgIHJldHVybiAhc2FuZGJveF9jaGVjayhwaWQsICJpb2tpdC1vcGVuIiwgc3RhdGlj
X2Nhc3Q8ZW51bSBzYW5kYm94X2ZpbHRlcl90eXBlPihTQU5EQk9YX0ZJTFRFUl9JT0tJVF9DT05O
RUNUSU9OIHwgU0FOREJPWF9DSEVDS19OT19SRVBPUlQpLCBpb0tpdENsYXNzLnV0ZjgoKS5kYXRh
KCkpOworfQorCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjYwMjIyKQorKysgU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzNCBAQAorMjAyMC0wNC0x
NiAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10g
RGVueSBpb2tpdCBvcGVuIGFjY2VzcyB0byBncmFwaGljcyByZWxhdGVkIGNsYXNzZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDYxNgorCisgICAg
ICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIERlbnkgaW9raXQgb3BlbiBh
Y2Nlc3MgdG8gZ3JhcGhpY3MgcmVsYXRlZCBjbGFzc2VzIGluIHRoZSBXZWJDb250ZW50IHByb2Nl
c3Mgb24gaU9TLCBidXQgaXNzdWUKKyAgICAgICAgZXh0ZW5zaW9ucyBmb3IgdGhlc2UgZm9yIHNv
bWUgZGV2aWNlcyB3aGljaCBzdGlsbCBuZWVkIGFjY2VzcyB0byB0aGVtLgorCisgICAgICAgICog
UmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50
LnNiOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9TYW5kYm94RXh0ZW5zaW9uQ29jb2EubW06Cisg
ICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb25JbXBsOjpzYW5kYm94RXh0ZW5zaW9uRm9y
VHlwZSk6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZv
cklPS2l0Q2xhc3NFeHRlbnNpb24pOgorICAgICAgICAqIFNoYXJlZC9TYW5kYm94RXh0ZW5zaW9u
Lmg6CisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNv
ZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmdJT1Mu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdUZXN0aW5nSU9TLm1tOgor
ICAgICAgICAoLVtXS1dlYlZpZXcgX3NldERldmljZUhhc0FHWENvbXBpbGVyU2VydmljZUZvclRl
c3RpbmddKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5t
bToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZVdl
YlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpkZXZpY2VIYXNBR1hDb21waWxlclNlcnZpY2Up
OiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpzZXREZXZpY2VIYXNBR1hDb21waWxlclNlcnZpY2VGb3JUZXN0aW5nIGNvbnN0
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6CisK
IDIwMjAtMDQtMTYgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAg
ICAgW21hY09TXSBTd2l0Y2ggdW51c2VkIElPS2l0IGNsYXNzZXMgZnJvbSBhbGxvdy13aXRoLXJl
cG9ydCB0byBkZW55LXdpdGgtcmVwb3J0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1Jlc291cmNlcy9T
YW5kYm94UHJvZmlsZXMvaW9zL2NvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1Jlc291cmNlcy9TYW5kYm94UHJvZmlsZXMvaW9zL2NvbS5h
cHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYgkocmV2aXNpb24gMjYwMjE0KQorKysgU291cmNlL1dl
YktpdC9SZXNvdXJjZXMvU2FuZGJveFByb2ZpbGVzL2lvcy9jb20uYXBwbGUuV2ViS2l0LldlYkNv
bnRlbnQuc2IJKHdvcmtpbmcgY29weSkKQEAgLTIxNCw3ICsyMTQsNyBAQAogOzs7CiAoZGVmaW5l
LW9uY2UgKG9wZW5nbCkKICAgICA7OyBJdGVtcyBub3Qgc2VlbiBpbiB0ZXN0aW5nCi0gICAgKGFs
bG93IGlva2l0LW9wZW4gKHdpdGggcmVwb3J0KSAod2l0aCB0ZWxlbWV0cnkpCisgICAgKGRlbnkg
aW9raXQtb3BlbiAod2l0aCB0ZWxlbWV0cnkpCiAgICAgICAgICAgIChpb2tpdC1jb25uZWN0aW9u
ICJJT0dQVSIpCiAgICAgICAgICAgIChpb2tpdC11c2VyLWNsaWVudC1jbGFzcwogICAgICAgICAg
ICAgICAgICJBR1hDb21tYW5kUXVldWUiCkBAIC05MjQsNiArOTI0LDI0IEBACiAgICAgKQogKQog
CisoYWxsb3cgaW9raXQtb3BlbgorICAgIChyZXF1aXJlLWFsbAorICAgICAgICAoZXh0ZW5zaW9u
ICJjb20uYXBwbGUud2Via2l0LmV4dGVuc2lvbi5pb2tpdCIpCisgICAgICAgIChpb2tpdC11c2Vy
LWNsaWVudC1jbGFzcworICAgICAgICAgICAgIkFHWENvbW1hbmRRdWV1ZSIKKyAgICAgICAgICAg
ICJBR1hEZXZpY2UiCisgICAgICAgICAgICAiQUdYU2hhcmVkVXNlckNsaWVudCIKKyAgICAgICAg
ICAgICJJT0FjY2VsQ29udGV4dCIKKyAgICAgICAgICAgICJJT0FjY2VsRGV2aWNlIgorICAgICAg
ICAgICAgIklPQWNjZWxTaGFyZWRVc2VyQ2xpZW50IgorICAgICAgICAgICAgIklPQWNjZWxTdWJt
aXR0ZXIyIgorICAgICAgICAgICAgIklPQWNjZWxDb250ZXh0MiIKKyAgICAgICAgICAgICJJT0Fj
Y2VsRGV2aWNlMiIKKyAgICAgICAgICAgICJJT0FjY2VsU2hhcmVkVXNlckNsaWVudDIiCisgICAg
ICAgICkKKyAgICApCispCisKIChhbGxvdyBtYWNoLWxvb2t1cAogICAgIChyZXF1aXJlLWFsbAog
ICAgICAgICAoZXh0ZW5zaW9uICJjb20uYXBwbGUud2Via2l0LmV4dGVuc2lvbi5tYWNoIikKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9TYW5kYm94RXh0ZW5zaW9uLmgJKHJldmlzaW9uIDI2MDIx
NCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaAkod29ya2luZyBj
b3B5KQpAQCAtNDksNiArNDksNyBAQCBwdWJsaWM6CiAgICAgICAgIFJlYWRPbmx5LAogICAgICAg
ICBSZWFkV3JpdGUsCiAgICAgICAgIE1hY2gsCisgICAgICAgIElPS2l0LAogICAgICAgICBHZW5l
cmljLAogICAgICAgICBSZWFkQnlQcm9jZXNzCiAgICAgfTsKQEAgLTExMyw2ICsxMTQsNyBAQCBw
dWJsaWM6CiAjaWYgSEFWRShBVURJVF9UT0tFTikKICAgICBzdGF0aWMgYm9vbCBjcmVhdGVIYW5k
bGVGb3JNYWNoTG9va3VwKGNvbnN0IFN0cmluZyYgc2VydmljZSwgT3B0aW9uYWw8YXVkaXRfdG9r
ZW5fdD4sIEhhbmRsZSYsIE9wdGlvblNldDxGbGFncz4gPSBGbGFnczo6RGVmYXVsdCk7CiAgICAg
c3RhdGljIGJvb2wgY3JlYXRlSGFuZGxlRm9yUmVhZEJ5QXVkaXRUb2tlbihjb25zdCBTdHJpbmcm
IHBhdGgsIGF1ZGl0X3Rva2VuX3QsIEhhbmRsZSYpOworICAgIHN0YXRpYyBib29sIGNyZWF0ZUhh
bmRsZUZvcklPS2l0Q2xhc3NFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBpb2tpdENsYXNzLCBPcHRp
b25hbDxhdWRpdF90b2tlbl90PiwgSGFuZGxlJiwgT3B0aW9uU2V0PEZsYWdzPiA9IEZsYWdzOjpE
ZWZhdWx0KTsKICNlbmRpZgogICAgIH5TYW5kYm94RXh0ZW5zaW9uKCk7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
Y3BwCShyZXZpc2lvbiAyNjAyMTQpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY2LDYgKzE2Niw3IEBA
IHZvaWQgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2QKICAgICBlbmNvZGVyIDw8
IGRpYWdub3N0aWNzRXh0ZW5zaW9uSGFuZGxlOwogICAgIGVuY29kZXIgPDwgcnVubmluZ2JvYXJk
RXh0ZW5zaW9uSGFuZGxlOwogICAgIGVuY29kZXIgPDwgZHluYW1pY01hY2hFeHRlbnNpb25IYW5k
bGVzOworICAgIGVuY29kZXIgPDwgZHluYW1pY0lPS2l0RXh0ZW5zaW9uSGFuZGxlczsKICNlbmRp
ZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC00NTcsNiArNDU4LDEyIEBAIGJvb2wgV2ViUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2QKICAgICBpZiAoIWR5bmFtaWNNYWNoRXh0ZW5z
aW9uSGFuZGxlcykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHBhcmFtZXRlcnMuZHluYW1p
Y01hY2hFeHRlbnNpb25IYW5kbGVzID0gV1RGTW92ZSgqZHluYW1pY01hY2hFeHRlbnNpb25IYW5k
bGVzKTsKKworICAgIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5PiBkeW5h
bWljSU9LaXRFeHRlbnNpb25IYW5kbGVzOworICAgIGRlY29kZXIgPj4gZHluYW1pY0lPS2l0RXh0
ZW5zaW9uSGFuZGxlczsKKyAgICBpZiAoIWR5bmFtaWNJT0tpdEV4dGVuc2lvbkhhbmRsZXMpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBwYXJhbWV0ZXJzLmR5bmFtaWNJT0tpdEV4dGVuc2lv
bkhhbmRsZXMgPSBXVEZNb3ZlKCpkeW5hbWljSU9LaXRFeHRlbnNpb25IYW5kbGVzKTsKICNlbmRp
ZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCShyZXZpc2lvbiAyNjAyMTQpCisr
KyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTIwNiw2ICsyMDYsNyBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycyB7CiAgICAgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBkaWFn
bm9zdGljc0V4dGVuc2lvbkhhbmRsZTsKICAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGU+IHJ1bm5pbmdib2FyZEV4dGVuc2lvbkhhbmRsZTsKICAgICBTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGVBcnJheSBkeW5hbWljTWFjaEV4dGVuc2lvbkhhbmRsZXM7CisgICAgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlQXJyYXkgZHluYW1pY0lPS2l0RXh0ZW5zaW9uSGFuZGxlczsKICNlbmRp
ZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2Nv
YS9TYW5kYm94RXh0ZW5zaW9uQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9T
aGFyZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1tCShyZXZpc2lvbiAyNjAyMTQpCisr
KyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9TYW5kYm94RXh0ZW5zaW9uQ29jb2EubW0JKHdv
cmtpbmcgY29weSkKQEAgLTEwNSw2ICsxMDUsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAjZW5kaWYK
KyAgICAgICAgY2FzZSBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpJT0tpdDoKKyAgICAgICAgICAg
IGlmICghYXVkaXRUb2tlbikKKyAgICAgICAgICAgICAgICByZXR1cm4gc2FuZGJveF9leHRlbnNp
b25faXNzdWVfaW9raXRfcmVnaXN0cnlfZW50cnlfY2xhc3MoImNvbS5hcHBsZS53ZWJraXQuZXh0
ZW5zaW9uLmlva2l0Il9zLCBwYXRoLCBleHRlbnNpb25GbGFncyk7CisgICAgICAgICAgICByZXR1
cm4gc2FuZGJveF9leHRlbnNpb25faXNzdWVfaW9raXRfcmVnaXN0cnlfZW50cnlfY2xhc3NfdG9f
cHJvY2VzcygiY29tLmFwcGxlLndlYmtpdC5leHRlbnNpb24uaW9raXQiX3MsIHBhdGgsIGV4dGVu
c2lvbkZsYWdzLCAqYXVkaXRUb2tlbik7CiAgICAgICAgIGNhc2UgU2FuZGJveEV4dGVuc2lvbjo6
VHlwZTo6R2VuZXJpYzoKICAgICAgICAgICAgIHJldHVybiBzYW5kYm94X2V4dGVuc2lvbl9pc3N1
ZV9nZW5lcmljKHBhdGgsIGV4dGVuc2lvbkZsYWdzKTsKICAgICAgICAgY2FzZSBTYW5kYm94RXh0
ZW5zaW9uOjpUeXBlOjpSZWFkQnlQcm9jZXNzOgpAQCAtMzY2LDYgKzM3MCwxOSBAQCBib29sIFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
K2Jvb2wgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9ySU9LaXRDbGFzc0V4dGVuc2lv
bihjb25zdCBTdHJpbmcmIGlvS2l0Q2xhc3MsIE9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IGF1ZGl0
VG9rZW4sIEhhbmRsZSYgaGFuZGxlLCBPcHRpb25TZXQ8RmxhZ3M+IGZsYWdzKQoreworICAgIEFT
U0VSVCghaGFuZGxlLm1fc2FuZGJveEV4dGVuc2lvbik7CisKKyAgICBoYW5kbGUubV9zYW5kYm94
RXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbkltcGw6OmNyZWF0ZShpb0tpdENsYXNzLnV0Zjgo
KS5kYXRhKCksIFR5cGU6OklPS2l0LCBhdWRpdFRva2VuKTsKKyAgICBpZiAoIWhhbmRsZS5tX3Nh
bmRib3hFeHRlbnNpb24pIHsKKyAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIGEg
c2FuZGJveCBleHRlbnNpb24gZm9yICclcyciLCBpb0tpdENsYXNzLnV0ZjgoKS5kYXRhKCkpOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKIFNh
bmRib3hFeHRlbnNpb246OlNhbmRib3hFeHRlbnNpb24oY29uc3QgSGFuZGxlJiBoYW5kbGUpCiAg
ICAgOiBtX3NhbmRib3hFeHRlbnNpb24oV1RGTW92ZShoYW5kbGUubV9zYW5kYm94RXh0ZW5zaW9u
KSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lv
biAyNjAyMTQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29y
a2luZyBjb3B5KQpAQCAtMTQ5Nyw2ICsxNDk3LDcgQEAgcHVibGljOgogCiAgICAgY29uc3QgRnVu
Y3Rpb248Ym9vbCgpPiYgZGV2aWNlT3JpZW50YXRpb25Vc2VyUGVybWlzc2lvbkhhbmRsZXJGb3JU
ZXN0aW5nKCkgY29uc3QgeyByZXR1cm4gbV9kZXZpY2VPcmllbnRhdGlvblVzZXJQZXJtaXNzaW9u
SGFuZGxlckZvclRlc3Rpbmc7IH07CiAgICAgdm9pZCBzZXREZXZpY2VPcmllbnRhdGlvblVzZXJQ
ZXJtaXNzaW9uSGFuZGxlckZvclRlc3RpbmcoRnVuY3Rpb248Ym9vbCgpPiYmIGhhbmRsZXIpIHsg
bV9kZXZpY2VPcmllbnRhdGlvblVzZXJQZXJtaXNzaW9uSGFuZGxlckZvclRlc3RpbmcgPSBXVEZN
b3ZlKGhhbmRsZXIpOyB9CisgICAgdm9pZCBzZXREZXZpY2VIYXNBR1hDb21waWxlclNlcnZpY2VG
b3JUZXN0aW5nKCkgY29uc3Q7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFD
S19UQVJHRVQpICYmICFQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZ0lPUy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3UHJpdmF0ZUZv
clRlc3RpbmdJT1MuaAkocmV2aXNpb24gMjYwMjE0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2lvcy9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZ0lPUy5oCSh3b3JraW5nIGNvcHkp
CkBAIC03Miw2ICs3Miw4IEBACiAKIC0gKHZvaWQpX3NldERldmljZU9yaWVudGF0aW9uVXNlclBl
cm1pc3Npb25IYW5kbGVyRm9yVGVzdGluZzooQk9PTCAoXikodm9pZCkpaGFuZGxlcjsKIAorLSAo
dm9pZClfc2V0RGV2aWNlSGFzQUdYQ29tcGlsZXJTZXJ2aWNlRm9yVGVzdGluZzsKKwogQGVuZAog
CiAjZW5kaWYgLy8gVEFSR0VUX09TX0lQSE9ORQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2lvcy9XS1dlYlZpZXdUZXN0aW5nSU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3VGVzdGluZ0lPUy5tbQkocmV2aXNpb24g
MjYwMjE0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdUZXN0
aW5nSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMDUsNiArMzA1LDEyIEBAIC0gKHZvaWQpX3Nl
dERldmljZU9yaWVudGF0aW9uVXNlclBlcm1pc3MKICAgICBfcGFnZS0+c2V0RGV2aWNlT3JpZW50
YXRpb25Vc2VyUGVybWlzc2lvbkhhbmRsZXJGb3JUZXN0aW5nKFdURk1vdmUoaGFuZGxlcldyYXBw
ZXIpKTsKIH0KIAorLSAodm9pZClfc2V0RGV2aWNlSGFzQUdYQ29tcGlsZXJTZXJ2aWNlRm9yVGVz
dGluZworeworICAgIGlmIChfcGFnZSkKKyAgICAgICAgX3BhZ2UtPnNldERldmljZUhhc0FHWENv
bXBpbGVyU2VydmljZUZvclRlc3RpbmcoKTsKK30KKwogQGVuZAogCiAjZW5kaWYgLy8gUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBy
b2Nlc3NQb29sQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQkocmV2aXNpb24gMjYwMjE0KQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQkod29ya2luZyBj
b3B5KQpAQCAtNDgsNiArNDgsNyBAQAogI2ltcG9ydCAiV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW1wb3J0ICJXaW5kb3dT
ZXJ2ZXJDb25uZWN0aW9uLmgiCisjaW1wb3J0IDxXZWJDb3JlL0FHWENvbXBpbGVyU2VydmljZS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9Db2xvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRE
ZXZpY2VNb2RlbC5oPgogI2ltcG9ydCA8V2ViQ29yZS9NSU1FVHlwZVJlZ2lzdHJ5Lmg+CkBAIC04
NCw3ICs4NSw2IEBACiAjaWYgUExBVEZPUk0oSU9TKQogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9X
ZWJGaWx0ZXJFdmFsdWF0b3JTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvaW9zL01vYmlsZUdlc3Rh
bHRTUEkuaD4KLSNpbXBvcnQgPHN5cy91dHNuYW1lLmg+CiAKIFNPRlRfTElOS19QUklWQVRFX0ZS
QU1FV09SSyhXZWJDb250ZW50QW5hbHlzaXMpOwogU09GVF9MSU5LX0NMQVNTKFdlYkNvbnRlbnRB
bmFseXNpcywgV2ViRmlsdGVyRXZhbHVhdG9yKTsKQEAgLTE5OSwyNSArMTk5LDYgQEAgdm9pZCBX
ZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1SZXNvbHZlUGF0aAogI2VuZGlmCiB9CiAKLSNpZiBQTEFU
Rk9STShJT1MpCi1zdGF0aWMgYm9vbCBkZXZpY2VIYXNBR1hDb21waWxlclNlcnZpY2UoKQotewot
ICAgIHN0YXRpYyBib29sIGRldmljZUhhc0FHWENvbXBpbGVyU2VydmljZSA9IGZhbHNlOwotICAg
IHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBmbGFnOwotICAgIHN0ZDo6Y2FsbF9vbmNlKAotICAgICAg
ICBmbGFnLAotICAgICAgICBbXSAoKSB7Ci0gICAgICAgICAgICBzdHJ1Y3QgdXRzbmFtZSBzeXN0
ZW1JbmZvOwotICAgICAgICAgICAgaWYgKHVuYW1lKCZzeXN0ZW1JbmZvKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICBjb25zdCBjaGFyKiBtYWNoaW5lID0gc3lzdGVtSW5m
by5tYWNoaW5lOwotICAgICAgICAgICAgaWYgKCFzdHJjbXAobWFjaGluZSwgImlQYWQ1LDEiKSB8
fCAhc3RyY21wKG1hY2hpbmUsICJpUGFkNSwyIikgfHwgIXN0cmNtcChtYWNoaW5lLCAiaVBhZDUs
MyIpIHx8ICFzdHJjbXAobWFjaGluZSwgImlQYWQ1LDQiKSkKLSAgICAgICAgICAgICAgICBkZXZp
Y2VIYXNBR1hDb21waWxlclNlcnZpY2UgPSB0cnVlOwotICAgICAgICB9KTsKLSAgICByZXR1cm4g
ZGV2aWNlSGFzQUdYQ29tcGlsZXJTZXJ2aWNlOwotfQotI2VuZGlmCi0KICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogc3RhdGljIGJvb2wgaXNJbnRlcm5hbEluc3RhbGwoKQogewpAQCAtMzYxLDcg
KzM0Miw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZVcKICNlbmRp
ZgogICAgIAogI2lmIFBMQVRGT1JNKElPUykKLSAgICBpZiAoZGV2aWNlSGFzQUdYQ29tcGlsZXJT
ZXJ2aWNlKCkpIHsKKyAgICBpZiAoV2ViQ29yZTo6ZGV2aWNlSGFzQUdYQ29tcGlsZXJTZXJ2aWNl
KCkpIHsKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGNvbXBpbGVyU2VydmljZUV4
dGVuc2lvbkhhbmRsZTsKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9y
TWFjaExvb2t1cCgiY29tLmFwcGxlLkFHWENvbXBpbGVyU2VydmljZSIsIFdURjo6bnVsbG9wdCwg
Y29tcGlsZXJTZXJ2aWNlRXh0ZW5zaW9uSGFuZGxlKTsKICAgICAgICAgcGFyYW1ldGVycy5jb21w
aWxlclNlcnZpY2VFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKGNvbXBpbGVyU2VydmljZUV4dGVu
c2lvbkhhbmRsZSk7CkBAIC0zOTIsNiArMzczLDI1IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBs
YXRmb3JtSW5pdGlhbGl6ZVcKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgcnVubmluZ2Jv
YXJkRXh0ZW5zaW9uSGFuZGxlOwogICAgIGlmIChTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5k
bGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUucnVubmluZ2JvYXJkIiwgV1RGOjpudWxsb3B0LCBy
dW5uaW5nYm9hcmRFeHRlbnNpb25IYW5kbGUsIFNhbmRib3hFeHRlbnNpb246OkZsYWdzOjpOb1Jl
cG9ydCkpCiAgICAgICAgIHBhcmFtZXRlcnMucnVubmluZ2JvYXJkRXh0ZW5zaW9uSGFuZGxlID0g
V1RGTW92ZShydW5uaW5nYm9hcmRFeHRlbnNpb25IYW5kbGUpOworCisgICAgaWYgKFdlYkNvcmU6
OmRldmljZUhhc0FHWENvbXBpbGVyU2VydmljZSgpKSB7CisgICAgICAgIHN0YXRpYyBjb25zdCBj
aGFyKiBjb25zdCBpb0tpdENsYXNzZXNbXSA9IHsKKyAgICAgICAgICAgICJBR1hDb21tYW5kUXVl
dWUiLAorICAgICAgICAgICAgIkFHWERldmljZSIsCisgICAgICAgICAgICAiQUdYU2hhcmVkVXNl
ckNsaWVudCIsCisgICAgICAgICAgICAiSU9BY2NlbENvbnRleHQiLAorICAgICAgICAgICAgIklP
QWNjZWxDb250ZXh0MiIsCisgICAgICAgICAgICAiSU9BY2NlbERldmljZSIsCisgICAgICAgICAg
ICAiSU9BY2NlbERldmljZTIiLAorICAgICAgICAgICAgIklPQWNjZWxTaGFyZWRVc2VyQ2xpZW50
IiwKKyAgICAgICAgICAgICJJT0FjY2VsU2hhcmVkVXNlckNsaWVudDIiCisgICAgICAgICAgICAi
SU9BY2NlbFN1Ym1pdHRlcjIiLAorICAgICAgICB9OworICAgICAgICBhdXRvIHNpemUgPSBXVEZf
QVJSQVlfTEVOR1RIKGlvS2l0Q2xhc3Nlcyk7CisgICAgICAgIHBhcmFtZXRlcnMuZHluYW1pY0lP
S2l0RXh0ZW5zaW9uSGFuZGxlcy5hbGxvY2F0ZShzaXplKTsKKyAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVh
dGVIYW5kbGVGb3JJT0tpdENsYXNzRXh0ZW5zaW9uKGlvS2l0Q2xhc3Nlc1tpXSwgV1RGOjpudWxs
b3B0LCBwYXJhbWV0ZXJzLmR5bmFtaWNJT0tpdEV4dGVuc2lvbkhhbmRsZXNbaV0pOworICAgIH0K
ICNlbmRpZgogICAgIAogI2lmIFBMQVRGT1JNKENPQ09BKQpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCShyZXZpc2lvbiAyNjAyMTQpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC02Miw2ICs2Miw3IEBACiAjaW1wb3J0ICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIK
ICNpbXBvcnQgIldlYlByb2Nlc3NQb29sLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIK
KyNpbXBvcnQgPFdlYkNvcmUvQUdYQ29tcGlsZXJTZXJ2aWNlLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0ZyYW1lVmlldy5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2ltcG9y
dCA8V2ViQ29yZS9QbGF0Zm9ybVNjcmVlbi5oPgpAQCAtMTU5MSw2ICsxNTkyLDExIEBAIHZvaWQg
V2ViUGFnZVByb3h5Ojp3aWxsUGVyZm9ybVBhc3RlQ29tbWEKICAgICBncmFudEFjY2Vzc1RvQ3Vy
cmVudFBhc3RlYm9hcmREYXRhKFVJUGFzdGVib2FyZE5hbWVHZW5lcmFsKTsKIH0KIAordm9pZCBX
ZWJQYWdlUHJveHk6OnNldERldmljZUhhc0FHWENvbXBpbGVyU2VydmljZUZvclRlc3RpbmcoKSBj
b25zdAoreworICAgIFdlYkNvcmU6OnNldERldmljZUhhc0FHWENvbXBpbGVyU2VydmljZUZvclRl
c3RpbmcoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBSRUxFQVNFX0xP
R19JRl9BTExPV0VECkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJv
Y2Vzc0NvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9XZWJQcm9jZXNzQ29jb2EubW0JKHJldmlzaW9uIDI2MDIxNCkKKysrIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTI5
Niw2ICsyOTYsOSBAQCB2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByCiAK
ICAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IHBhcmFtZXRlcnMuZHluYW1pY01hY2hFeHRl
bnNpb25IYW5kbGVzLnNpemUoKTsgaSA8IHNpemU7ICsraSkKICAgICAgICAgU2FuZGJveEV4dGVu
c2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KHBhcmFtZXRlcnMuZHluYW1pY01hY2hFeHRlbnNpb25I
YW5kbGVzW2ldKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gcGFyYW1ldGVycy5k
eW5hbWljSU9LaXRFeHRlbnNpb25IYW5kbGVzLnNpemUoKTsgaSA8IHNpemU7ICsraSkKKyAgICAg
ICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KHBhcmFtZXRlcnMuZHluYW1p
Y0lPS2l0RXh0ZW5zaW9uSGFuZGxlc1tpXSk7CiAjZW5kaWYKICAgICAKICAgICBpZiAocGFyYW1l
dGVycy5uZUhlbHBlckV4dGVuc2lvbkhhbmRsZSkKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MDIyMikKKysrIFRvb2xzL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIwLTA0LTE2ICBQZXIg
QXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBEZW55IGlv
a2l0IG9wZW4gYWNjZXNzIHRvIGdyYXBoaWNzIHJlbGF0ZWQgY2xhc3NlcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwNjE2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdC9BR1hDb21waWxlclNlcnZpY2UubW06IEFkZGVkLgorICAgICAgICAoVEVT
VCk6CisKIDIwMjAtMDQtMTYgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAog
ICAgICAgICBBZGQgc2xhY2stYXdhcmUgV0tSIGltcGxlbWVudGF0aW9uCkluZGV4OiBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gMjYwMjE0KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAg
LTg5Myw2ICs4OTMsNyBAQAogCQlDMTVDQkIzMDIzRjFGRjFBMDAzMDBDQzcgLyogQmFja2xpZ2h0
TGV2ZWxOb3RpZmljYXRpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDMTVDQkIyRjIzRjFGRjFBMDAzMDBDQzcgLyogQmFja2xpZ2h0TGV2ZWxOb3Rp
ZmljYXRpb24ubW0gKi87IH07CiAJCUMxNUNCQjNGMjNGQjE3N0EwMDMwMENDNyAvKiBQcmVmZXJl
bmNlQ2hhbmdlcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEMxNUNCQjNFMjNGQjE3N0EwMDMwMENDNyAvKiBQcmVmZXJlbmNlQ2hhbmdlcy5tbSAqLzsg
fTsKIAkJQzE2OTJEQ0EyM0QxMERBRTAwNkU4OEY3IC8qIEJhdHRlcnkubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTY5MkRDOTIzRDEwREFFMDA2RTg4
RjcgLyogQmF0dGVyeS5tbSAqLzsgfTsKKwkJQzFGN0I3MzkyNDQ5MDgzRjAwMTI0NTU3IC8qIEFH
WENvbXBpbGVyU2VydmljZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEMxRjdCNzM4MjQ0OTA4M0YwMDEyNDU1NyAvKiBBR1hDb21waWxlclNlcnZpY2Uu
bW0gKi87IH07CiAJCUMxRkY5RURCMjQ0NjQ0RjAwMDgzOUFFNCAvKiBXZWJGaWx0ZXIubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMUZGOUVEQTI0NDY0
NEYwMDA4MzlBRTQgLyogV2ViRmlsdGVyLm1tICovOyB9OwogCQlDMjBGODhBNzIyOTVCOTY3MDBE
NjEwRkEgLyogQ29yZVRleHQuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQzIwRjg4QTYyMjk1Qjk2NzAwRDYxMEZBIC8qIENvcmVUZXh0
LmZyYW1ld29yayAqLzsgfTsKIAkJQzIyRkEzMkIyMjhGODcwODAwOUQ3OTg4IC8qIFRleHRXaWR0
aC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyMkZB
MzJBMjI4Rjg3MDgwMDlENzk4OCAvKiBUZXh0V2lkdGgubW0gKi87IH07CkBAIC0yNDgzLDYgKzI0
ODQsNyBAQAogCQlDMTVDQkIzRTIzRkIxNzdBMDAzMDBDQzcgLyogUHJlZmVyZW5jZUNoYW5nZXMu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQcmVmZXJlbmNlQ2hh
bmdlcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzE2OTJEQzkyM0QxMERBRTAw
NkU4OEY3IC8qIEJhdHRlcnkubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBCYXR0ZXJ5Lm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMUQ4RUUyMTIwMjhFOEUzMDA4RUIxNDEgLyog
V2ViUHJvY2Vzc1Rlcm1pbmF0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFdlYlByb2Nlc3NUZXJtaW5hdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUMxRjdCNzM4MjQ0OTA4M0YwMDEyNDU1NyAvKiBBR1hDb21waWxlclNlcnZpY2UubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBBR1hDb21waWxlclNlcnZpY2UubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUMxRkY5RURBMjQ0NjQ0RjAwMDgzOUFFNCAvKiBXZWJGaWx0ZXIubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJGaWx0ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUMyMEY4OEE2MjI5NUI5NjcwMEQ2MTBGQSAvKiBDb3JlVGV4dC5mcmFtZXdvcmsg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVy
LmZyYW1ld29yazsgbmFtZSA9IENvcmVUZXh0LmZyYW1ld29yazsgcGF0aCA9IFN5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ29yZVRleHQuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gU0RLUk9PVDsg
fTsKIAkJQzIyRkEzMkEyMjhGODcwODAwOUQ3OTg4IC8qIFRleHRXaWR0aC5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFRleHRXaWR0aC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTI5MzYsNiArMjkzOCw3IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAog
CQkJCUUzRjhBQjkxMjQxQUI5Q0UwMDNFMkE3RSAvKiBBY2Nlc3NpYmlsaXR5UmVtb3RlVUlBcHAu
bW0gKi8sCisJCQkJQzFGN0I3MzgyNDQ5MDgzRjAwMTI0NTU3IC8qIEFHWENvbXBpbGVyU2Vydmlj
ZS5tbSAqLywKIAkJCQlDMTVDQkIyRjIzRjFGRjFBMDAzMDBDQzcgLyogQmFja2xpZ2h0TGV2ZWxO
b3RpZmljYXRpb24ubW0gKi8sCiAJCQkJQzE2OTJEQzkyM0QxMERBRTAwNkU4OEY3IC8qIEJhdHRl
cnkubW0gKi8sCiAJCQkJQzEzRDgyRDgyNDE2RjEzMjAwQTYyNzkzIC8qIEVuYWJsZUFjY2Vzc2li
aWxpdHkubW0gKi8sCkBAIC00NzI5LDYgKzQ3MzIsNyBAQAogCQkJCTU1QTgxN0ZDMjE4MTAwRTAw
MDA0QTM5QSAvKiBBZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlcy5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTU1RjlEMkU1MjIwNTAzMTgwMEE5QUIzOCAvKiBBZGRpdGlvbmFsU3VwcG9ydGVkSW1h
Z2VUeXBlcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdBOTA5QTdEMUQ4Nzc0ODAwMDdFMTBGOCAv
KiBBZmZpbmVUcmFuc2Zvcm0uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQzFGN0I3MzkyNDQ5MDgz
RjAwMTI0NTU3IC8qIEFHWENvbXBpbGVyU2VydmljZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUEx
REY3NDMyMUM0MUI2NTgwMEEyRjREMCAvKiBBbHdheXNSZXZhbGlkYXRlZFVSTFNjaGVtZXMubW0g
aW4gU291cmNlcyAqLywKIAkJCQkyREU3MUFGRTFENDlDMEJEMDA5MDQwOTQgLyogQW5pbWF0ZWRS
ZXNpemUubW0gaW4gU291cmNlcyAqLywKIAkJCQk1NzE1MkI1RTIxQ0MyMDQ1MDAwQzM3Q0EgLyog
QXBkdVRlc3QuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdC9BR1hDb21waWxlclNlcnZpY2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvQUdYQ29tcGlsZXJTZXJ2aWNlLm1tCShub25leGlzdGVu
dCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0FHWENvbXBpbGVyU2Vydmlj
ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorCisjaWYgV0tfSEFWRV9DX1NQSSAmJiBQTEFURk9STShJT1MpCisKKyNp
bXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCisj
aW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmcuaD4KKworVEVTVChXZWJL
aXQsIElPS2l0T3BlblNhbmRib3hBY2Nlc3NGb3JEZXZpY2VXaXRoQUdYQ29tcGlsZXJTZXJ2aWNl
KQoreworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1
cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byBjb250ZXh0ID0gYWRvcHRXSyhUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpjcmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0KCJJbnRlcm5h
bHNJbmplY3RlZEJ1bmRsZVRlc3QiKSk7CisgICAgY29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNz
UG9vbCA9IChXS1Byb2Nlc3NQb29sICopY29udGV4dC5nZXQoKTsKKyAgICBhdXRvIHdlYlZpZXcg
PSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0
KDAsIDAsIDMwMCwgMzAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkgYWRkVG9X
aW5kb3c6WUVTXSk7CisKKyAgICBbd2ViVmlldyBfc2V0RGV2aWNlSGFzQUdYQ29tcGlsZXJTZXJ2
aWNlRm9yVGVzdGluZ107CisKKyAgICBhdXRvIHNhbmRib3hBY2Nlc3MgPSBbJl0geworICAgICAg
ICByZXR1cm4gW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAIndpbmRvdy5p
bnRlcm5hbHMuaW50ZXJuYWxzLmhhc1NhbmRib3hJT0tpdE9wZW5BY2Nlc3NUb0NsYXNzKCdjb20u
YXBwbGUuV2ViS2l0LldlYkNvbnRlbnQnLCAnQUdYQ29tbWFuZFF1ZXVlJykiXS5ib29sVmFsdWU7
CisgICAgfTsKKworICAgIEFTU0VSVF9UUlVFKHNhbmRib3hBY2Nlc3MoKSk7CisKK30KKworI2Vu
ZGlmIC8vIFdLX0hBVkVfQ19TUEkK
</data>

          </attachment>
      

    </bug>

</bugzilla>