<?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>224278</bug_id>
          
          <creation_ts>2021-04-07 05:51:20 -0700</creation_ts>
          <short_desc>Media Session action should default to the MediaElement&apos;s default when no MediaSession handler are set</short_desc>
          <delta_ts>2021-04-09 17:45:48 -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>Media</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=222158</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="Jean-Yves Avenard [:jya]">jean-yves.avenard</reporter>
          <assigned_to name="Jean-Yves Avenard [:jya]">jean-yves.avenard</assigned_to>
          <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1747861</commentid>
    <comment_count>0</comment_count>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-04-07 05:51:20 -0700</bug_when>
    <thetext>Currently, when no media session handler are set; the media session coordinator actions will be ignored.

We should default to the HTMLMediaElement default action (play/pause/seek etc)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747863</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-04-07 05:59:22 -0700</bug_when>
    <thetext>&lt;rdar://problem/76339841&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747865</commentid>
    <comment_count>2</comment_count>
      <attachid>425388</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-04-07 06:08:15 -0700</bug_when>
    <thetext>Created attachment 425388
wip</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747869</commentid>
    <comment_count>3</comment_count>
      <attachid>425388</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-04-07 06:32:55 -0700</bug_when>
    <thetext>Comment on attachment 425388
wip

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

&gt; Source/WebCore/ChangeLog:7
&gt; +

Do we have a way to test these changes?

&gt; Source/WebCore/Modules/mediasession/MediaSession.cpp:261
&gt; +    default:

We do not tend to add default so that, if there is a new enumeration value, we will have to fix it.

&gt; Source/WebCore/Modules/mediasession/MediaSession.cpp:266
&gt; +        return;

Maybe we could return in the enumeration for better clarity.
It seems this will only happen in MediaSessionAction::Settrack and Skipad cases.

&gt; Source/WebCore/Modules/mediasession/MediaSession.cpp:378
&gt; +    return nullptr;

Why not return HTMLMediaElement::bestMediaElementForShowingPlaybackControlsManager(*doc, MediaElementSession::PlaybackControlsPurpose::NowPlaying) directly?

&gt; Source/WebCore/Modules/mediasession/MediaSession.h:74
&gt; +    RefPtr&lt;HTMLMediaElement&gt; activeMediaElement() const;

Does it need to be public?

&gt; Source/WebCore/html/HTMLMediaElement.cpp:594
&gt; +RefPtr&lt;HTMLMediaElement&gt; HTMLMediaElement::bestMediaElementForShowingPlaybackControlsManager(Document* document, MediaElementSession::PlaybackControlsPurpose purpose)

const Document*?
Maybe we could just have one single bestMediaElementForShowingPlaybackControlsManager taking a const Document* with a default value of nullptr?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747940</commentid>
    <comment_count>4</comment_count>
      <attachid>425388</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-04-07 10:04:21 -0700</bug_when>
    <thetext>Comment on attachment 425388
wip

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

&gt;&gt; Source/WebCore/ChangeLog:7
&gt;&gt; +
&gt; 
&gt; Do we have a way to test these changes?

Yes, please add a test.

&gt; Source/WebCore/Modules/mediasession/MediaSession.cpp:226
&gt; +    PlatformMediaSession::RemoteControlCommandType command = PlatformMediaSession::NoCommand;
&gt; +    PlatformMediaSession::RemoteCommandArgument argument;
&gt; +
&gt; +    switch (actionDetails.action) {

I would put this into a static free function like `platformCommandForMediaSessionAction`.

&gt; Source/WebCore/Modules/mediasession/MediaSession.cpp:267
&gt; +    static_cast&lt;PlatformMediaSessionClient*&gt;(element.get())-&gt;didReceiveRemoteControlCommand(command, argument);

This static_cast won&apos;t be necessary if you make `HTMLMediaElement::didReceiveRemoteControlCommand` public

&gt; Source/WebCore/html/MediaElementSession.cpp:1143
&gt;      if (auto handler = session-&gt;handlerForAction(actionDetails.action))
&gt;          handler-&gt;handleEvent(actionDetails);
&gt; -    else
&gt; -        ALWAYS_LOG(LOGIDENTIFIER, &quot;Ignoring command, no action handler registered for &quot;, actionDetails.action);
&gt; +    else {
&gt; +        // FIXME: MediaElementSession expected to call the default action if MediaSession is set and no handler for the action are set?
&gt; +        PlatformMediaSession::didReceiveRemoteControlCommand(commandType, argument);
&gt; +    }

If you change this to `session-&gt;callActionHandler(...)`, won&apos;t this &quot;just work&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748203</commentid>
    <comment_count>5</comment_count>
      <attachid>425388</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-04-07 21:15:03 -0700</bug_when>
    <thetext>Comment on attachment 425388
wip

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

&gt;&gt; Source/WebCore/Modules/mediasession/MediaSession.h:74
&gt;&gt; +    RefPtr&lt;HTMLMediaElement&gt; activeMediaElement() const;
&gt; 
&gt; Does it need to be public?

Not at this stage. But the active media element is a concept you find in the MediaSession spec, so I figured we will need it sooner or later elsewhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748670</commentid>
    <comment_count>6</comment_count>
      <attachid>425388</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-04-09 02:27:16 -0700</bug_when>
    <thetext>Comment on attachment 425388
wip

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

&gt;&gt;&gt; Source/WebCore/ChangeLog:7
&gt;&gt;&gt; +
&gt;&gt; 
&gt;&gt; Do we have a way to test these changes?
&gt; 
&gt; Yes, please add a test.

that was wip, just to get answers on the questions added in the code. incoming test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748682</commentid>
    <comment_count>7</comment_count>
      <attachid>425605</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-04-09 04:06:36 -0700</bug_when>
    <thetext>Created attachment 425605
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748712</commentid>
    <comment_count>8</comment_count>
      <attachid>425605</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-04-09 06:45:11 -0700</bug_when>
    <thetext>Comment on attachment 425605
Patch

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

&gt; Source/WebCore/Modules/mediasession/MediaSession.cpp:124
&gt; +    return std::pair&lt;PlatformMediaSession::RemoteControlCommandType, PlatformMediaSession::RemoteCommandArgument&gt;(command, argument);

make_pair?

&gt; Source/WebCore/Modules/mediasession/MediaSession.h:74
&gt; +    RefPtr&lt;HTMLMediaElement&gt; activeMediaElement() const;

I would put it as private for now, we can always move it to public later.

&gt; Source/WebCore/html/HTMLMediaElement.h:571
&gt; +    // PlatformMediaSessionClient

Why moving them to public?
In general we prefer private by default and public for those needed.

&gt; Source/WebCore/html/HTMLMediaElement.h:577
&gt; +    void mayResumePlayback(bool shouldResume) override;

If we modify these, we could look at final/override.
It seems these two could be marked final, maybe others as well.

&gt; LayoutTests/media/media-session/default-actionHandlers.html:43
&gt; +        });

Can we add a few more tests, for instance if paused is overriden.
Or if we do setActionHandler(&quot;play&quot;, null) after having set it with a function.

&gt; LayoutTests/media/media-session/default-actionHandlers.html:45
&gt; +        // Playback shouldn&apos;t have started if a handler for this action was defined and it did nothing.

This is not a comment for this patch but to the spec in general.
It might be convenient that the JS handler could decide to be a no-op and let the browser do its default action, whatever it is.
Something similar to preventDefault but the inverse.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748719</commentid>
    <comment_count>9</comment_count>
      <attachid>425605</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-04-09 07:03:22 -0700</bug_when>
    <thetext>Comment on attachment 425605
Patch

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

&gt;&gt; Source/WebCore/Modules/mediasession/MediaSession.cpp:124
&gt;&gt; +    return std::pair&lt;PlatformMediaSession::RemoteControlCommandType, PlatformMediaSession::RemoteCommandArgument&gt;(command, argument);
&gt; 
&gt; make_pair?

+1

&gt;&gt; Source/WebCore/html/HTMLMediaElement.h:571
&gt;&gt; +    // PlatformMediaSessionClient
&gt; 
&gt; Why moving them to public?
&gt; In general we prefer private by default and public for those needed.

Actioning Eric&apos;s earlier comment to avoid static_cast. I question on why they were made provide in the first case when HTMLMediaElement inherit from public PlatformMediaSessionClientand and all those methods are public in the base class.

&gt;&gt; Source/WebCore/html/HTMLMediaElement.h:577
&gt;&gt; +    void mayResumePlayback(bool shouldResume) override;
&gt; 
&gt; If we modify these, we could look at final/override.
&gt; It seems these two could be marked final, maybe others as well.

I believe they all can be made final.

But this seems out of scope for this patch.

&gt;&gt; LayoutTests/media/media-session/default-actionHandlers.html:45
&gt;&gt; +        // Playback shouldn&apos;t have started if a handler for this action was defined and it did nothing.
&gt; 
&gt; This is not a comment for this patch but to the spec in general.
&gt; It might be convenient that the JS handler could decide to be a no-op and let the browser do its default action, whatever it is.
&gt; Something similar to preventDefault but the inverse.

You should open a spec bug with the WG. In particular, the more I look into it, the more I think it&apos;s lacking details for edge cases. Like there&apos;s no way to determine which media element caused the action handler to be called. So you can&apos;t manually run the command play like you would etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748720</commentid>
    <comment_count>10</comment_count>
      <attachid>425605</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-04-09 07:04:36 -0700</bug_when>
    <thetext>Comment on attachment 425605
Patch

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

&gt;&gt;&gt; Source/WebCore/html/HTMLMediaElement.h:571
&gt;&gt;&gt; +    // PlatformMediaSessionClient
&gt;&gt; 
&gt;&gt; Why moving them to public?
&gt;&gt; In general we prefer private by default and public for those needed.
&gt; 
&gt; Actioning Eric&apos;s earlier comment to avoid static_cast. I question on why they were made provide in the first case when HTMLMediaElement inherit from public PlatformMediaSessionClientand and all those methods are public in the base class.

I meant &quot;why they were made private&quot; above</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748721</commentid>
    <comment_count>11</comment_count>
      <attachid>425605</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-04-09 07:05:38 -0700</bug_when>
    <thetext>Comment on attachment 425605
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/html/HTMLMediaElement.h:571
&gt;&gt;&gt;&gt; +    // PlatformMediaSessionClient
&gt;&gt;&gt; 
&gt;&gt;&gt; Why moving them to public?
&gt;&gt;&gt; In general we prefer private by default and public for those needed.
&gt;&gt; 
&gt;&gt; Actioning Eric&apos;s earlier comment to avoid static_cast. I question on why they were made provide in the first case when HTMLMediaElement inherit from public PlatformMediaSessionClientand and all those methods are public in the base class.
&gt; 
&gt; I meant &quot;why they were made private&quot; above

I could of course could only make the only one used public, I thought it was more consistent to have them all public</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748730</commentid>
    <comment_count>12</comment_count>
      <attachid>425619</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-04-09 08:24:55 -0700</bug_when>
    <thetext>Created attachment 425619
Patch

Apply review comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748761</commentid>
    <comment_count>13</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-04-09 09:35:27 -0700</bug_when>
    <thetext>(In reply to Jean-Yves Avenard [:jya] from comment #12)
&gt; Created attachment 425619 [details]
&gt; Patch
&gt; 
&gt; Apply review comments

LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748762</commentid>
    <comment_count>14</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-04-09 09:36:29 -0700</bug_when>
    <thetext>&gt; I could of course could only make the only one used public, I thought it was
&gt; more consistent to have them all public

I believe this is what is preferred these days.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748768</commentid>
    <comment_count>15</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-04-09 09:44:58 -0700</bug_when>
    <thetext>&gt; &gt; This is not a comment for this patch but to the spec in general.
&gt; &gt; It might be convenient that the JS handler could decide to be a no-op and let the browser do its default action, whatever it is.
&gt; &gt; Something similar to preventDefault but the inverse.
&gt; 
&gt; You should open a spec bug with the WG. In particular, the more I look into
&gt; it, the more I think it&apos;s lacking details for edge cases. Like there&apos;s no
&gt; way to determine which media element caused the action handler to be called.
&gt; So you can&apos;t manually run the command play like you would etc.

I filed https://github.com/w3c/mediasession/issues/268</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748930</commentid>
    <comment_count>16</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-09 17:45:45 -0700</bug_when>
    <thetext>Committed r275787 (236358@main): &lt;https://commits.webkit.org/236358@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 425619.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425388</attachid>
            <date>2021-04-07 06:08:15 -0700</date>
            <delta_ts>2021-04-09 04:06:31 -0700</delta_ts>
            <desc>wip</desc>
            <filename>bug-224278-20210407230814.patch</filename>
            <type>text/plain</type>
            <size>9309</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NTg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2Q2NmYzY2EyZjA4NDc4
OTgzMzIwNGQ3Njg0YzlmYzBhMjQ0NzFmMy4uYmY3ZDcwZDk5MDFkZjI1ZjU5ZDc2OGNiZTU0YzIw
OTRlYzM1ZmQ3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIxLTA0LTA3ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgTWVkaWEgU2Vzc2lvbiBj
b29yZGluYXRvciBhY3Rpb24gc2hvdWxkIGRlZmF1bHQgdG8gdGhlIE1lZGlhRWxlbWVudCdzIGRl
ZmF1bHQgd2hlbiBubyBNZWRpYVNlc3Npb24gaGFuZGxlciBhcmUgc2V0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQyNzgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzZXNzaW9u
L01lZGlhU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb246OmNhbGxB
Y3Rpb25IYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbjo6YWN0aXZlTWVk
aWFFbGVtZW50IGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNl
c3Npb24uaDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6YmVzdE1lZGlhRWxlbWVudEZvclNob3dpbmdQbGF5
YmFja0NvbnRyb2xzTWFuYWdlcik6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6
CisgICAgICAgICogaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhRWxlbWVudFNlc3Npb246OmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZCk6
CisKIDIwMjEtMDQtMDYgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAg
ICAgICBGaXggbG9naWMgZXJyb3IgaW4gTWVkaWFNZXRhZGF0YUluaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uY3BwCmluZGV4IDBl
NjJkZGIzMGQzMGE1YmU5YzZlNzMwOTRiMzNiYjM2YTA3MjIwMzcuLmUwNmYwOTgyNWIyOTUxYTQ0
YzEwNWUzMDE2NDMyZWZhMDMzOTZjYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAj
aW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorI2luY2x1ZGUg
IkhUTUxNZWRpYUVsZW1lbnQuaCIKICNpbmNsdWRlICJKU01lZGlhUG9zaXRpb25TdGF0ZS5oIgog
I2luY2x1ZGUgIkpTTWVkaWFTZXNzaW9uQWN0aW9uLmgiCiAjaW5jbHVkZSAiSlNNZWRpYVNlc3Np
b25QbGF5YmFja1N0YXRlLmgiCkBAIC0yMTEsOCArMjEyLDU5IEBAIFJlZlB0cjxNZWRpYVNlc3Np
b25BY3Rpb25IYW5kbGVyPiBNZWRpYVNlc3Npb246OmhhbmRsZXJGb3JBY3Rpb24oTWVkaWFTZXNz
aW9uQWN0CiAKIHZvaWQgTWVkaWFTZXNzaW9uOjpjYWxsQWN0aW9uSGFuZGxlcihjb25zdCBNZWRp
YVNlc3Npb25BY3Rpb25EZXRhaWxzJiBhY3Rpb25EZXRhaWxzKQogewotICAgIGlmIChhdXRvIGhh
bmRsZXIgPSBtX2FjdGlvbkhhbmRsZXJzLmdldChhY3Rpb25EZXRhaWxzLmFjdGlvbikpCisgICAg
aWYgKGF1dG8gaGFuZGxlciA9IG1fYWN0aW9uSGFuZGxlcnMuZ2V0KGFjdGlvbkRldGFpbHMuYWN0
aW9uKSkgewogICAgICAgICBoYW5kbGVyLT5oYW5kbGVFdmVudChhY3Rpb25EZXRhaWxzKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhdXRvIGVsZW1lbnQgPSBhY3RpdmVNZWRpYUVsZW1l
bnQoKTsKKyAgICBpZiAoIWVsZW1lbnQpCisgICAgICAgIHJldHVybjsKKworICAgIFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUgY29tbWFuZCA9IFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpOb0NvbW1hbmQ7CisgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90
ZUNvbW1hbmRBcmd1bWVudCBhcmd1bWVudDsKKworICAgIHN3aXRjaCAoYWN0aW9uRGV0YWlscy5h
Y3Rpb24pIHsKKyAgICBjYXNlIE1lZGlhU2Vzc2lvbkFjdGlvbjo6UGxheToKKyAgICAgICAgY29t
bWFuZCA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF5Q29tbWFuZDsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBNZWRpYVNlc3Npb25BY3Rpb246OlBhdXNlOgorICAgICAgICBjb21tYW5kID0g
UGxhdGZvcm1NZWRpYVNlc3Npb246OlBhdXNlQ29tbWFuZDsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBNZWRpYVNlc3Npb25BY3Rpb246OlNlZWtiYWNrd2FyZDoKKyAgICAgICAgY29tbWFuZCA9
IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTa2lwQmFja3dhcmRDb21tYW5kOworICAgICAgICBhcmd1
bWVudC50aW1lID0gYWN0aW9uRGV0YWlscy5zZWVrT2Zmc2V0OworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIE1lZGlhU2Vzc2lvbkFjdGlvbjo6U2Vla2ZvcndhcmQ6CisgICAgICAgIGNvbW1hbmQg
PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2tpcEZvcndhcmRDb21tYW5kOworICAgICAgICBhcmd1
bWVudC50aW1lID0gYWN0aW9uRGV0YWlscy5zZWVrT2Zmc2V0OworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIE1lZGlhU2Vzc2lvbkFjdGlvbjo6UHJldmlvdXN0cmFjazoKKyAgICAgICAgY29tbWFu
ZCA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQcmV2aW91c1RyYWNrQ29tbWFuZDsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBNZWRpYVNlc3Npb25BY3Rpb246Ok5leHR0cmFjazoKKyAgICAgICAg
Y29tbWFuZCA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpOZXh0VHJhY2tDb21tYW5kOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIE1lZGlhU2Vzc2lvbkFjdGlvbjo6U2tpcGFkOgorICAgICAgICAv
LyBGSVhNRTogV2hhdCBzaG91bGQgd2UgZG8gaGVyZT8KKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBNZWRpYVNlc3Npb25BY3Rpb246OlN0b3A6CisgICAgICAgIGNvbW1hbmQgPSBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6U3RvcENvbW1hbmQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTWVkaWFT
ZXNzaW9uQWN0aW9uOjpTZWVrdG86CisgICAgICAgIGNvbW1hbmQgPSBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6U2Vla1RvUGxheWJhY2tQb3NpdGlvbkNvbW1hbmQ7CisgICAgICAgIGFyZ3VtZW50LnRp
bWUgPSBhY3Rpb25EZXRhaWxzLnNlZWtUaW1lOworICAgICAgICBhcmd1bWVudC5mYXN0U2VlayA9
IGFjdGlvbkRldGFpbHMuZmFzdFNlZWs7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTWVkaWFT
ZXNzaW9uQWN0aW9uOjpTZXR0cmFjazoKKyAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCBzZXQg
dHJhY2suCisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgaWYgKGNvbW1hbmQgPT0gUGxh
dGZvcm1NZWRpYVNlc3Npb246Ok5vQ29tbWFuZCkKKyAgICAgICAgcmV0dXJuOworICAgIHN0YXRp
Y19jYXN0PFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50Kj4oZWxlbWVudC5nZXQoKSktPmRpZFJl
Y2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChjb21tYW5kLCBhcmd1bWVudCk7CiB9CiAKIEV4Y2Vw
dGlvbk9yPHZvaWQ+IE1lZGlhU2Vzc2lvbjo6c2V0UG9zaXRpb25TdGF0ZShPcHRpb25hbDxNZWRp
YVBvc2l0aW9uU3RhdGU+JiYgc3RhdGUpCkBAIC0zMTQsNiArMzY2LDE5IEBAIHZvaWQgTWVkaWFT
ZXNzaW9uOjpub3RpZnlBY3Rpb25IYW5kbGVyT2JzZXJ2ZXJzKCkKICAgICB9KTsKIH0KIAorUmVm
UHRyPEhUTUxNZWRpYUVsZW1lbnQ+IE1lZGlhU2Vzc2lvbjo6YWN0aXZlTWVkaWFFbGVtZW50KCkg
Y29uc3QKK3sKKyAgICBhdXRvKiBkb2MgPSBkb2N1bWVudCgpOworICAgIGlmICghZG9jKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGlmIChhdXRvIGVsZW1lbnQgPSBIVE1MTWVkaWFF
bGVtZW50OjpiZXN0TWVkaWFFbGVtZW50Rm9yU2hvd2luZ1BsYXliYWNrQ29udHJvbHNNYW5hZ2Vy
KCpkb2MsIE1lZGlhRWxlbWVudFNlc3Npb246OlBsYXliYWNrQ29udHJvbHNQdXJwb3NlOjpOb3dQ
bGF5aW5nKSkKKyAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CisKKyAgICByZXR1cm4gbnVsbHB0cjsK
K30KKworCiAjaWYgRU5BQkxFKE1FRElBX1NFU1NJT05fQ09PUkRJTkFUT1IpCiB2b2lkIE1lZGlh
U2Vzc2lvbjo6bm90aWZ5UmVhZHlTdGF0ZU9ic2VydmVycygpCiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5oCmluZGV4IGU1ZGJlOTYy
N2ZjMWM2MTk0NTU4Mjc2M2QwZTczMzQ3OGQ1MjRiY2UuLjkwMTVhYWNkNjViMjNkZDJmZThjYzYz
NWIzNjBmODA5MDQ5NWE4YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5oCkBAIC00NSw2ICs0NSw3IEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIERvY3VtZW50OworY2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKIGNsYXNz
IE1lZGlhTWV0YWRhdGE7CiBjbGFzcyBNZWRpYVNlc3Npb25Db29yZGluYXRvcjsKIGNsYXNzIE5h
dmlnYXRvcjsKQEAgLTcwLDYgKzcxLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIE9w
dGlvbmFsPGRvdWJsZT4gY3VycmVudFBvc2l0aW9uKCkgY29uc3Q7CiAKICAgICBEb2N1bWVudCog
ZG9jdW1lbnQoKSBjb25zdDsKKyAgICBSZWZQdHI8SFRNTE1lZGlhRWxlbWVudD4gYWN0aXZlTWVk
aWFFbGVtZW50KCkgY29uc3Q7CiAgICAgCiAjaWYgRU5BQkxFKE1FRElBX1NFU1NJT05fQ09PUkRJ
TkFUT1IpCiAgICAgTWVkaWFTZXNzaW9uUmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3QgeyBy
ZXR1cm4gbV9yZWFkeVN0YXRlOyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAKaW5kZXggMmI0YTMyNjNhODlmMjViMjdhMmNkMDgxOTg0N2QxYTQyOWE0Y2ZhZS4uMGVk
NzIzNWRmZTRiZjA0OTQwZWE3ZjljNzgwMzEzZDQyZDk1ZTkzMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC01ODIsMTEgKzU4MiwyMiBAQCBIVE1MTWVkaWFF
bGVtZW50Ojp+SFRNTE1lZGlhRWxlbWVudCgpCiB9CiAKIFJlZlB0cjxIVE1MTWVkaWFFbGVtZW50
PiBIVE1MTWVkaWFFbGVtZW50OjpiZXN0TWVkaWFFbGVtZW50Rm9yU2hvd2luZ1BsYXliYWNrQ29u
dHJvbHNNYW5hZ2VyKE1lZGlhRWxlbWVudFNlc3Npb246OlBsYXliYWNrQ29udHJvbHNQdXJwb3Nl
IHB1cnBvc2UpCit7CisgICAgcmV0dXJuIGJlc3RNZWRpYUVsZW1lbnRGb3JTaG93aW5nUGxheWJh
Y2tDb250cm9sc01hbmFnZXIobnVsbHB0ciwgcHVycG9zZSk7Cit9CisKK1JlZlB0cjxIVE1MTWVk
aWFFbGVtZW50PiBIVE1MTWVkaWFFbGVtZW50OjpiZXN0TWVkaWFFbGVtZW50Rm9yU2hvd2luZ1Bs
YXliYWNrQ29udHJvbHNNYW5hZ2VyKGNvbnN0IFJlZjxEb2N1bWVudD4mIGRvY3VtZW50LCBNZWRp
YUVsZW1lbnRTZXNzaW9uOjpQbGF5YmFja0NvbnRyb2xzUHVycG9zZSBwdXJwb3NlKQoreworICAg
IHJldHVybiBiZXN0TWVkaWFFbGVtZW50Rm9yU2hvd2luZ1BsYXliYWNrQ29udHJvbHNNYW5hZ2Vy
KGRvY3VtZW50LnB0cigpLCBwdXJwb3NlKTsKK30KKworUmVmUHRyPEhUTUxNZWRpYUVsZW1lbnQ+
IEhUTUxNZWRpYUVsZW1lbnQ6OmJlc3RNZWRpYUVsZW1lbnRGb3JTaG93aW5nUGxheWJhY2tDb250
cm9sc01hbmFnZXIoRG9jdW1lbnQqIGRvY3VtZW50LCBNZWRpYUVsZW1lbnRTZXNzaW9uOjpQbGF5
YmFja0NvbnRyb2xzUHVycG9zZSBwdXJwb3NlKQogewogICAgIFZlY3RvcjxNZWRpYUVsZW1lbnRT
ZXNzaW9uSW5mbz4gY2FuZGlkYXRlU2Vzc2lvbnM7CiAgICAgYm9vbCBhdExlYXN0T25lTm9uQ2Fu
ZGlkYXRlTWF5QmVDb25mdXNlZEZvck1haW5Db250ZW50ID0gZmFsc2U7Ci0gICAgUGxhdGZvcm1N
ZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuZm9yRWFjaE1hdGNoaW5nU2Vzc2lv
bihbXShhdXRvJiBzZXNzaW9uKSB7Ci0gICAgICAgIHJldHVybiBpczxNZWRpYUVsZW1lbnRTZXNz
aW9uPihzZXNzaW9uKTsKKyAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1h
bmFnZXIoKS5mb3JFYWNoTWF0Y2hpbmdTZXNzaW9uKFtkb2N1bWVudF0oYXV0byYgc2Vzc2lvbikg
eworICAgICAgICByZXR1cm4gaXM8TWVkaWFFbGVtZW50U2Vzc2lvbj4oc2Vzc2lvbikKKyAgICAg
ICAgICAgICYmICghZG9jdW1lbnQgfHwgJmRvd25jYXN0PE1lZGlhRWxlbWVudFNlc3Npb24+KHNl
c3Npb24pLmVsZW1lbnQoKS5kb2N1bWVudCgpID09IGRvY3VtZW50KTsKICAgICB9LCBbJl0oYXV0
byYgc2Vzc2lvbikgewogICAgICAgICBhdXRvIG1lZGlhRWxlbWVudFNlc3Npb25JbmZvID0gbWVk
aWFFbGVtZW50U2Vzc2lvbkluZm9Gb3JTZXNzaW9uKGRvd25jYXN0PE1lZGlhRWxlbWVudFNlc3Np
b24+KHNlc3Npb24pLCBwdXJwb3NlKTsKICAgICAgICAgaWYgKG1lZGlhRWxlbWVudFNlc3Npb25J
bmZvLmNhblNob3dDb250cm9sc01hbmFnZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5oCmluZGV4IDc0ODZjYWQ2YzBmOTkxMDFmMDc3ZWNiZDUxMDM5MWRmOGQ1YjJhNmEuLmQ4
ZjlkMmNjZGVlMmU2MGM3ZTEzNmE1OTY2MmY1NTdhMDAwNzgwM2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSAiVmlzaWJp
bGl0eUNoYW5nZUNsaWVudC5oIgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUg
PHd0Zi9Mb2dnZXJIZWxwZXIuaD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRl
IDx3dGYvV2Vha1B0ci5oPgogCiAjaWYgVVNFKEFVRElPX1NFU1NJT04pICYmIFBMQVRGT1JNKE1B
QykKQEAgLTE1Nyw2ICsxNTgsOCBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmUHRyPEhUTUxNZWRpYUVsZW1lbnQ+IGJlc3RNZWRpYUVsZW1lbnRGb3JTaG93aW5nUGxh
eWJhY2tDb250cm9sc01hbmFnZXIoTWVkaWFFbGVtZW50U2Vzc2lvbjo6UGxheWJhY2tDb250cm9s
c1B1cnBvc2UpOwogCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxIVE1MTWVkaWFF
bGVtZW50PiBiZXN0TWVkaWFFbGVtZW50Rm9yU2hvd2luZ1BsYXliYWNrQ29udHJvbHNNYW5hZ2Vy
KGNvbnN0IFJlZjxEb2N1bWVudD4mLCBNZWRpYUVsZW1lbnRTZXNzaW9uOjpQbGF5YmFja0NvbnRy
b2xzUHVycG9zZSk7CisKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJld2luZChkb3VibGUgdGlt
ZURlbHRhKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJldHVyblRvUmVhbHRpbWUoKSBvdmVy
cmlkZTsKIApAQCAtOTMwLDYgKzkzMyw4IEBAIHByaXZhdGU6CiAgICAgY29uc3QgTG9nZ2VyJiBt
ZWRpYVBsYXllckxvZ2dlcigpIGZpbmFsIHsgcmV0dXJuIGxvZ2dlcigpOyB9CiAjZW5kaWYKIAor
ICAgIHN0YXRpYyBSZWZQdHI8SFRNTE1lZGlhRWxlbWVudD4gYmVzdE1lZGlhRWxlbWVudEZvclNo
b3dpbmdQbGF5YmFja0NvbnRyb2xzTWFuYWdlcihEb2N1bWVudCosIE1lZGlhRWxlbWVudFNlc3Np
b246OlBsYXliYWNrQ29udHJvbHNQdXJwb3NlKTsKKwogICAgIGZyaWVuZCBjbGFzcyBUYXNrRGlz
cGF0Y2hlcjxIVE1MTWVkaWFFbGVtZW50PjsKICAgICB2b2lkIGVucXVldWVUYXNrRm9yRGlzcGF0
Y2hlcihGdW5jdGlvbjx2b2lkKCk+JiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVs
ZW1lbnRTZXNzaW9uLmNwcAppbmRleCBmMjc0YmVmODY2ZWMyOWIxOTdjMGRmNWVhMzc2ZmMwOTMy
ZjRlOGUwLi42ZmM5MDg4MTAzODVjMTcxN2JmYjYwZGUyNDE4NzdiYjlmMmU5NGYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAKQEAgLTExMzcsOCArMTEz
NywxMCBAQCB2b2lkIE1lZGlhRWxlbWVudFNlc3Npb246OmRpZFJlY2VpdmVSZW1vdGVDb250cm9s
Q29tbWFuZChSZW1vdGVDb250cm9sQ29tbWFuZFR5cAogCiAgICAgaWYgKGF1dG8gaGFuZGxlciA9
IHNlc3Npb24tPmhhbmRsZXJGb3JBY3Rpb24oYWN0aW9uRGV0YWlscy5hY3Rpb24pKQogICAgICAg
ICBoYW5kbGVyLT5oYW5kbGVFdmVudChhY3Rpb25EZXRhaWxzKTsKLSAgICBlbHNlCi0gICAgICAg
IEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgIklnbm9yaW5nIGNvbW1hbmQsIG5vIGFjdGlvbiBo
YW5kbGVyIHJlZ2lzdGVyZWQgZm9yICIsIGFjdGlvbkRldGFpbHMuYWN0aW9uKTsKKyAgICBlbHNl
IHsKKyAgICAgICAgLy8gRklYTUU6IE1lZGlhRWxlbWVudFNlc3Npb24gZXhwZWN0ZWQgdG8gY2Fs
bCB0aGUgZGVmYXVsdCBhY3Rpb24gaWYgTWVkaWFTZXNzaW9uIGlzIHNldCBhbmQgbm8gaGFuZGxl
ciBmb3IgdGhlIGFjdGlvbiBhcmUgc2V0PworICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
ZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKGNvbW1hbmRUeXBlLCBhcmd1bWVudCk7Cisg
ICAgfQogfQogI2VuZGlmCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425605</attachid>
            <date>2021-04-09 04:06:36 -0700</date>
            <delta_ts>2021-04-09 08:24:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224278-20210409210635.patch</filename>
            <type>text/plain</type>
            <size>43005</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWNiNWU3Yjk4NmUzYTk2
MGU2YjEzMTQ2NDY4Y2IyODVlYjNjOTlkOC4uMjc1MjNmZTI5YmE2MTNhNTIyMzY0NzVmY2RlYzA3
MzU0YWQ4MTkzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDIxLTA0LTA5ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgTWVkaWEgU2Vzc2lvbiBh
Y3Rpb24gc2hvdWxkIGRlZmF1bHQgdG8gdGhlIE1lZGlhRWxlbWVudCdzIGRlZmF1bHQgd2hlbiBu
byBNZWRpYVNlc3Npb24gaGFuZGxlciBhcmUgc2V0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQyNzgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc2
MzM5ODQxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFdoZW4gYSBtZWRpYSBzZXNzaW9uIGRvZXNuJ3QgZXhwbGljaXRseSBkZWZpbmUgYW4gYWN0aW9u
IGhhbmRsZXIsIHdlIHVzZSB0aGUgbWVkaWEgZWxlbWVudAorICAgICAgICBkZWZhdWx0IGFjdGlv
biBvZiB0aGUgc2FtZSB0eXBlLgorICAgICAgICBNZWRpYSBTZXNzaW9uIGRvZXNuJ3QgdHJhY2sg
YSBwYXJ0aWN1bGFyIG1lZGlhIGVsZW1lbnQsIGluc3RlYWQgaXQgbG9vc2VseSBkZWZpbmVzIGEg
Z3Vlc3NlZCBwbGF5YmFjayBzdGF0ZQorICAgICAgICB0aGF0IHRyYWNrcyBpZiBzb21lIGVsZW1l
bnQgaW4gdGhlIGN1cnJlbnQgZG9jdW1lbnQgaXMgcGxheWluZyBhbmQgbm90IG11dGVkIG9yIG90
aGVyd2lzZSBwYXVzZWQuCisgICAgICAgIChzZWUgaHR0cHM6Ly93M2MuZ2l0aHViLmlvL21lZGlh
c2Vzc2lvbi8jcGxheWJhY2stc3RhdGUtbW9kZWwpCisgICAgICAgIFdlIHRoZXJlZm9yZSBuZWVk
IHRvIGRldGVybWluZSB3aGF0IGlzIGN1cnJlbnRseSB0aGUgbW9zdCBzdWl0YWJsZSBtZWRpYSBl
bGVtZW50IGF2YWlsYWJsZSBpbiB0aGlzIGRvY3VtZW50LgorICAgICAgICBVbmxpa2UgdGhlIE1l
ZGlhIENvbnRyb2xsZXIgYW5kIHRoZSBOb3cgUGxheWluZyBwb2xpY3kgdGhhdCB3aWxsIG9ubHkg
ZXZlciBzZWxlY3QgYSBtZWRpYQorICAgICAgICBpZiBpdCBpcyBjdXJyZW50bHkgcGxheWluZyBh
bmQgbm90IG11dGVkLCBmb3IgdGhlIE1lZGlhIFNlc3Npb24gd2UgbWF5IGhhdmUgdG8gaW50ZXJh
Y3Qgd2l0aCBwYXVzZWQgbWVkaWEgZWxlbWVudHMuCisgICAgICAgIEZvciB0aGlzIHdlIGFkZCBh
IG5ldyBQbGF5YmFja0NvbnRyb2xzUHVycG9zZSBuYW1lZCBNZWRpYVNlc3Npb24gZGVmaW5pbmcg
bmV3IHNlYXJjaCBjcml0ZXJpYXMuCisgICAgICAgIEEgbWVkaWEgZWxlbWVudCB3aWxsIGJlIHVw
IGZvciBzZWxlY3Rpb24gaWYgaXQncyBwbGF5YWJsZSAoYWNjb3JkaW5nIHRvIGF1dG9wbGF5IHBv
bGljeSkuIEZyb20gdGhlbiwKKyAgICAgICAgdGhlIGJlc3QgZWxlbWVudCB3aWxsIGJlIHNlbGVj
dGVkIGFjY29yaW5nIHRvIGl0cyB2aXNpYmlsaXR5LCBpdHMgc2l6ZSwgaWYgaXQncyBiZWVpbmcg
cGxheWVkIHByZXZpb3VzbHkgYW5kCisgICAgICAgIHRoZSBsYXN0IHRpbWUgaXQgd2FzIGludGVy
YWN0ZWQgd2l0aC4KKworICAgICAgICBUZXN0OiBtZWRpYS9tZWRpYS1zZXNzaW9uL2RlZmF1bHQt
YWN0aW9uSGFuZGxlcnMuaHRtbAorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVk
aWFTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBsYXRmb3JtQ29tbWFuZEZvck1lZGlh
U2Vzc2lvbkFjdGlvbik6IE5ldyBjb252ZW5pZW5jZSBtZXRob2QgdG8gY29udmVydCBvbmUgZGF0
YXR5cGUgaW50byBhbm90aGVyLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uOjpjYWxs
QWN0aW9uSGFuZGxlcik6IFVzZSB1c2VyIGRlZmluZWQgaGFuZGxlciBpZiBwcmVzZW50IG9yIHJ1
biB0aGUgcmVsYXRlZCBhY3Rpb24gb24KKyAgICAgICAgdGhlIG1vc3Qgc3VpdGFibGUgbWVkaWEg
ZWxlbWVudAorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uOjphY3RpdmVNZWRpYUVsZW1l
bnQgY29uc3QpOiBEZXRlcm1pbmUgdGhlIGN1cnJlbnRseSBhY3RpdmUgbWVkaWEgZWxlbWVudCBp
biB0aGUgY3VycmVudAorICAgICAgICBNZWRpYSBTZXNzaW9uJ3MgZG9jdW1lbnQuCisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmg6CisgICAgICAgICogaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1lZGlhRWxlbWVudFNlc3Np
b25JbmZvRm9yU2Vzc2lvbik6IEFkZCBuZXcgaGFzRXZlck5vdGlmaWVkQWJvdXRQbGF5aW5nIG1l
bWJlci4KKyAgICAgICAgKFdlYkNvcmU6OnByZWZlck1lZGlhQ29udHJvbHNGb3JDYW5kaWRhdGVT
ZXNzaW9uT3Zlck90aGVyQ2FuZGlkYXRlU2Vzc2lvbik6IEFtZW5kIHNvcnRpbmcgYWxnb3JpdGht
IHRvIGNhdGVyCisgICAgICAgIGZvciB0aGUgTWVkaWFTZXNzaW9uIGNyaXRlcmlhcyBkZXNjcmli
ZWQgYWJvdmUuCisgICAgICAgIChXZWJDb3JlOjptZWRpYVNlc3Npb25NYXlCZUNvbmZ1c2VkV2l0
aE1haW5Db250ZW50KTogV2hlbiB1c2luZyBNZWRpYVNlc3Npb24gcHVycG9zZSwgdGhlcmUgaXMg
bm8gcG9zc2libGUKKyAgICAgICAgYW1iaWd1aXR5LCBhbWVuZCBhcyBzdWNoLgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6YmVzdE1lZGlhRWxlbWVudEZvclJlbW90ZUNvbnRy
b2xzKTogUmVuYW1lZCBmcm9tIGJlc3RNZWRpYUVsZW1lbnRGb3JTaG93aW5nUGxheWJhY2tDb250
cm9sc01hbmFnZXIKKyAgICAgICAgbWV0aG9kIHRvIGJldHRlciBtYXRjaCBob3cgdGhlIG1ldGhv
ZCBpcyBhY3R1YWxseSB1c2VkLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgor
ICAgICAgICAqIGh0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUVsZW1lbnRTZXNzaW9uOjpjYW5TaG93Q29udHJvbHNNYW5hZ2VyIGNvbnN0KTogQW1l
bmQgZm9yIG5ldyBNZWRpYSBTZXNzaW9uIGNyaXRlcmlhcy4KKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhRWxlbWVudFNlc3Npb246OmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZCk6IEFsd2F5
cyBsZXQgTWVkaWFTZXNzaW9uIG1hbmFnZSB0aGUgYWN0aW9ucyBoYW5kbGluZy4KKyAgICAgICAg
KiBodG1sL01lZGlhRWxlbWVudFNlc3Npb24uaDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOiAK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnBsYXliYWNrQ29udHJvbHNNYW5hZ2VyVXBkYXRlVGlt
ZXJGaXJlZCk6IGFtZW5kIGZvbGxvd2luZyBtZXRob2QgcmVuYW1lLgorICAgICAgICAqIHBsYXRm
b3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6bm93UGxheWluZ0VsaWdpYmxlU2Vzc2lv
bik6IGFtZW5kIGZvbGxvd2luZyBtZXRob2QgcmVuYW1lLgorICAgICAgICAqIHRlc3RpbmcvSW50
ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6YmVzdE1lZGlhRWxlbWVu
dEZvclJlbW90ZUNvbnRyb2xzKTogUmVuYW1lZCBmcm9tIGJlc3RNZWRpYUVsZW1lbnRGb3JTaG93
aW5nUGxheWJhY2tDb250cm9sc01hbmFnZXIgYXMgYWJvdmUuCisgICAgICAgIChXZWJDb3JlOjpJ
bnRlcm5hbHM6OnNlbmRNZWRpYVNlc3Npb25BY3Rpb24pOiBhbWVuZCBmb2xsb3dpbmcgbWV0aG9k
IHJlbmFtZS4KKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOiBSZW5hbWUgbWV0aG9kCisg
ICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOiBSZW5hbWUgbWV0aG9kCisKIDIwMjEtMDQt
MDkgIFppcmFuIFN1biAgPHpzdW5AaWdhbGlhLmNvbT4KIAogICAgICAgICBbY3NzLWdyaWRdIEZp
eCBtaW4vbWF4IHdpZHRocyBvZiBncmlkIGFmZmVjdGVkIGJ5IGFuY2VzdG9yCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcAppbmRl
eCAwZTYyZGRiMzBkMzBhNWJlOWM2ZTczMDk0YjMzYmIzNmEwNzIyMDM3Li5mNjcyNDQwZDY5NWQ0
NjQzMTUxOWExODE3YmQyMjFkMmM2ZDkwNTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5jcHAKQEAgLTMwLDYgKzMwLDcgQEAK
IAogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNs
dWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiSlNNZWRpYVBvc2l0aW9uU3RhdGUu
aCIKICNpbmNsdWRlICJKU01lZGlhU2Vzc2lvbkFjdGlvbi5oIgogI2luY2x1ZGUgIkpTTWVkaWFT
ZXNzaW9uUGxheWJhY2tTdGF0ZS5oIgpAQCAtNzYsNiArNzcsNTMgQEAgc3RhdGljIFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUgcGxhdGZvcm1Db21tYW5kRm9y
TWVkaWFTZXMKICAgICByZXR1cm4gUGxhdGZvcm1NZWRpYVNlc3Npb246Ok5vQ29tbWFuZDsKIH0K
IAorc3RhdGljIE9wdGlvbmFsPHN0ZDo6cGFpcjxQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3Rl
Q29udHJvbENvbW1hbmRUeXBlLCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29tbWFuZEFy
Z3VtZW50Pj4gcGxhdGZvcm1Db21tYW5kRm9yTWVkaWFTZXNzaW9uQWN0aW9uKGNvbnN0IE1lZGlh
U2Vzc2lvbkFjdGlvbkRldGFpbHMmIGFjdGlvbkRldGFpbHMpCit7CisgICAgUGxhdGZvcm1NZWRp
YVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSBjb21tYW5kID0gUGxhdGZvcm1NZWRp
YVNlc3Npb246Ok5vQ29tbWFuZDsKKyAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29t
bWFuZEFyZ3VtZW50IGFyZ3VtZW50OworCisgICAgc3dpdGNoIChhY3Rpb25EZXRhaWxzLmFjdGlv
bikgeworICAgIGNhc2UgTWVkaWFTZXNzaW9uQWN0aW9uOjpQbGF5OgorICAgICAgICBjb21tYW5k
ID0gUGxhdGZvcm1NZWRpYVNlc3Npb246OlBsYXlDb21tYW5kOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIE1lZGlhU2Vzc2lvbkFjdGlvbjo6UGF1c2U6CisgICAgICAgIGNvbW1hbmQgPSBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6UGF1c2VDb21tYW5kOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IE1lZGlhU2Vzc2lvbkFjdGlvbjo6U2Vla2JhY2t3YXJkOgorICAgICAgICBjb21tYW5kID0gUGxh
dGZvcm1NZWRpYVNlc3Npb246OlNraXBCYWNrd2FyZENvbW1hbmQ7CisgICAgICAgIGFyZ3VtZW50
LnRpbWUgPSBhY3Rpb25EZXRhaWxzLnNlZWtPZmZzZXQ7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgTWVkaWFTZXNzaW9uQWN0aW9uOjpTZWVrZm9yd2FyZDoKKyAgICAgICAgY29tbWFuZCA9IFBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpTa2lwRm9yd2FyZENvbW1hbmQ7CisgICAgICAgIGFyZ3VtZW50
LnRpbWUgPSBhY3Rpb25EZXRhaWxzLnNlZWtPZmZzZXQ7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgTWVkaWFTZXNzaW9uQWN0aW9uOjpQcmV2aW91c3RyYWNrOgorICAgICAgICBjb21tYW5kID0g
UGxhdGZvcm1NZWRpYVNlc3Npb246OlByZXZpb3VzVHJhY2tDb21tYW5kOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIE1lZGlhU2Vzc2lvbkFjdGlvbjo6TmV4dHRyYWNrOgorICAgICAgICBjb21t
YW5kID0gUGxhdGZvcm1NZWRpYVNlc3Npb246Ok5leHRUcmFja0NvbW1hbmQ7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgTWVkaWFTZXNzaW9uQWN0aW9uOjpTa2lwYWQ6CisgICAgICAgIC8vIE5v
dCBzdXBwb3J0ZWQgYXQgcHJlc2VudC4KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBNZWRpYVNl
c3Npb25BY3Rpb246OlN0b3A6CisgICAgICAgIGNvbW1hbmQgPSBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6U3RvcENvbW1hbmQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTWVkaWFTZXNzaW9uQWN0
aW9uOjpTZWVrdG86CisgICAgICAgIGNvbW1hbmQgPSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2Vl
a1RvUGxheWJhY2tQb3NpdGlvbkNvbW1hbmQ7CisgICAgICAgIGFyZ3VtZW50LnRpbWUgPSBhY3Rp
b25EZXRhaWxzLnNlZWtUaW1lOworICAgICAgICBhcmd1bWVudC5mYXN0U2VlayA9IGFjdGlvbkRl
dGFpbHMuZmFzdFNlZWs7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTWVkaWFTZXNzaW9uQWN0
aW9uOjpTZXR0cmFjazoKKyAgICAgICAgLy8gTm90IHN1cHBvcnRlZCBhdCBwcmVzZW50LgorICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgaWYgKGNvbW1hbmQgPT0gUGxhdGZvcm1NZWRpYVNlc3Np
b246Ok5vQ29tbWFuZCkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIHJldHVybiBzdGQ6OnBh
aXI8UGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSwgUGxhdGZv
cm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbW1hbmRBcmd1bWVudD4oY29tbWFuZCwgYXJndW1lbnQp
OworfQorCiBSZWY8TWVkaWFTZXNzaW9uPiBNZWRpYVNlc3Npb246OmNyZWF0ZShOYXZpZ2F0b3Im
IG5hdmlnYXRvcikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVNlc3Npb24obmF2
aWdhdG9yKSk7CkBAIC0xOTksMjAgKzI0NywyMSBAQCB2b2lkIE1lZGlhU2Vzc2lvbjo6c2V0QWN0
aW9uSGFuZGxlcihNZWRpYVNlc3Npb25BY3Rpb24gYWN0aW9uLCBSZWZQdHI8TWVkaWFTZXNzaQog
ICAgIG5vdGlmeUFjdGlvbkhhbmRsZXJPYnNlcnZlcnMoKTsKIH0KIAotYm9vbCBNZWRpYVNlc3Np
b246Omhhc0FjdGlvbkhhbmRsZXIoTWVkaWFTZXNzaW9uQWN0aW9uIGFjdGlvbikgY29uc3QKLXsK
LSAgICByZXR1cm4gbV9hY3Rpb25IYW5kbGVycy5jb250YWlucyhhY3Rpb24pOwotfQotCi1SZWZQ
dHI8TWVkaWFTZXNzaW9uQWN0aW9uSGFuZGxlcj4gTWVkaWFTZXNzaW9uOjpoYW5kbGVyRm9yQWN0
aW9uKE1lZGlhU2Vzc2lvbkFjdGlvbiBhY3Rpb24pIGNvbnN0Citib29sIE1lZGlhU2Vzc2lvbjo6
Y2FsbEFjdGlvbkhhbmRsZXIoY29uc3QgTWVkaWFTZXNzaW9uQWN0aW9uRGV0YWlscyYgYWN0aW9u
RGV0YWlscykKIHsKLSAgICByZXR1cm4gbV9hY3Rpb25IYW5kbGVycy5nZXQoYWN0aW9uKTsKLX0K
LQotdm9pZCBNZWRpYVNlc3Npb246OmNhbGxBY3Rpb25IYW5kbGVyKGNvbnN0IE1lZGlhU2Vzc2lv
bkFjdGlvbkRldGFpbHMmIGFjdGlvbkRldGFpbHMpCi17Ci0gICAgaWYgKGF1dG8gaGFuZGxlciA9
IG1fYWN0aW9uSGFuZGxlcnMuZ2V0KGFjdGlvbkRldGFpbHMuYWN0aW9uKSkKKyAgICBpZiAoYXV0
byBoYW5kbGVyID0gbV9hY3Rpb25IYW5kbGVycy5nZXQoYWN0aW9uRGV0YWlscy5hY3Rpb24pKSB7
CiAgICAgICAgIGhhbmRsZXItPmhhbmRsZUV2ZW50KGFjdGlvbkRldGFpbHMpOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgYXV0byBlbGVtZW50ID0gYWN0aXZlTWVkaWFFbGVtZW50
KCk7CisgICAgaWYgKCFlbGVtZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRv
IHBsYXRmb3JtQ29tbWFuZCA9IHBsYXRmb3JtQ29tbWFuZEZvck1lZGlhU2Vzc2lvbkFjdGlvbihh
Y3Rpb25EZXRhaWxzKTsKKyAgICBpZiAoIXBsYXRmb3JtQ29tbWFuZCkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGVsZW1lbnQtPmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChwbGF0
Zm9ybUNvbW1hbmQtPmZpcnN0LCBwbGF0Zm9ybUNvbW1hbmQtPnNlY29uZCk7CisgICAgcmV0dXJu
IHRydWU7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IE1lZGlhU2Vzc2lvbjo6c2V0UG9zaXRpb25T
dGF0ZShPcHRpb25hbDxNZWRpYVBvc2l0aW9uU3RhdGU+JiYgc3RhdGUpCkBAIC0zMTQsNiArMzYz
LDE1IEBAIHZvaWQgTWVkaWFTZXNzaW9uOjpub3RpZnlBY3Rpb25IYW5kbGVyT2JzZXJ2ZXJzKCkK
ICAgICB9KTsKIH0KIAorUmVmUHRyPEhUTUxNZWRpYUVsZW1lbnQ+IE1lZGlhU2Vzc2lvbjo6YWN0
aXZlTWVkaWFFbGVtZW50KCkgY29uc3QKK3sKKyAgICBhdXRvKiBkb2MgPSBkb2N1bWVudCgpOwor
ICAgIGlmICghZG9jKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBIVE1M
TWVkaWFFbGVtZW50OjpiZXN0TWVkaWFFbGVtZW50Rm9yUmVtb3RlQ29udHJvbHMoTWVkaWFFbGVt
ZW50U2Vzc2lvbjo6UGxheWJhY2tDb250cm9sc1B1cnBvc2U6Ok1lZGlhU2Vzc2lvbiwgZG9jKTsK
K30KKwogI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OX0NPT1JESU5BVE9SKQogdm9pZCBNZWRpYVNl
c3Npb246Om5vdGlmeVJlYWR5U3RhdGVPYnNlcnZlcnMoKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uaAppbmRleCBlNWRiZTk2Mjdm
YzFjNjE5NDU1ODI3NjNkMGU3MzM0NzhkNTI0YmNlLi42NDIwMDYzMzM3YmI4MmI0NmY3NjU0YTg4
MThhNWVhYmRjNTMzODZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c2Vzc2lvbi9NZWRpYVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c2Vzc2lvbi9NZWRpYVNlc3Npb24uaApAQCAtNDUsNiArNDUsNyBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBEb2N1bWVudDsKK2NsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CiBjbGFzcyBN
ZWRpYU1ldGFkYXRhOwogY2xhc3MgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I7CiBjbGFzcyBOYXZp
Z2F0b3I7CkBAIC03MCw2ICs3MSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBPcHRp
b25hbDxkb3VibGU+IGN1cnJlbnRQb3NpdGlvbigpIGNvbnN0OwogCiAgICAgRG9jdW1lbnQqIGRv
Y3VtZW50KCkgY29uc3Q7CisgICAgUmVmUHRyPEhUTUxNZWRpYUVsZW1lbnQ+IGFjdGl2ZU1lZGlh
RWxlbWVudCgpIGNvbnN0OwogICAgIAogI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OX0NPT1JESU5B
VE9SKQogICAgIE1lZGlhU2Vzc2lvblJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fcmVhZHlTdGF0ZTsgfTsKQEAgLTg0LDExICs4Niw4IEBAIHB1YmxpYzoKICAgICBFeGNl
cHRpb25Pcjx2b2lkPiBzZXRQbGF5bGlzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgVmVjdG9y
PFJlZlB0cjxNZWRpYU1ldGFkYXRhPj4mJik7CiAjZW5kaWYKIAotICAgIGJvb2wgaGFzQWN0aW9u
SGFuZGxlcihNZWRpYVNlc3Npb25BY3Rpb24pIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFJl
ZlB0cjxNZWRpYVNlc3Npb25BY3Rpb25IYW5kbGVyPiBoYW5kbGVyRm9yQWN0aW9uKE1lZGlhU2Vz
c2lvbkFjdGlvbikgY29uc3Q7CiAgICAgYm9vbCBoYXNBY3RpdmVBY3Rpb25IYW5kbGVycygpIGNv
bnN0IHsgcmV0dXJuICFtX2FjdGlvbkhhbmRsZXJzLmlzRW1wdHkoKTsgfQotCi0gICAgdm9pZCBj
YWxsQWN0aW9uSGFuZGxlcihjb25zdCBNZWRpYVNlc3Npb25BY3Rpb25EZXRhaWxzJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBjYWxsQWN0aW9uSGFuZGxlcihjb25zdCBNZWRpYVNlc3Npb25B
Y3Rpb25EZXRhaWxzJik7CiAKICAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0IHsgcmV0
dXJuICptX2xvZ2dlci5nZXQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcAppbmRleCBlNDRiZjlhZjBhZGE3OWQ3MTNhNzA0ZDNkY2U4YWI3NTZmNTcwMjI1Li4x
ZTM2ZWEwZDE2MGQ0ZWJkYzc1NzM3Y2NjYzg3OTFlZjk4ZjdhMDg2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTMyNSw2ICszMjUsNyBAQCBzdHJ1Y3QgTWVk
aWFFbGVtZW50U2Vzc2lvbkluZm8gewogICAgIGJvb2wgaXNWaXNpYmxlSW5WaWV3cG9ydE9yRnVs
bHNjcmVlbiA6IDE7CiAgICAgYm9vbCBpc0xhcmdlRW5vdWdoRm9yTWFpbkNvbnRlbnQgOiAxOwog
ICAgIGJvb2wgaXNQbGF5aW5nQXVkaW8gOiAxOworICAgIGJvb2wgaGFzRXZlck5vdGlmaWVkQWJv
dXRQbGF5aW5nIDogMTsKIH07CiAKIHN0YXRpYyBNZWRpYUVsZW1lbnRTZXNzaW9uSW5mbyBtZWRp
YUVsZW1lbnRTZXNzaW9uSW5mb0ZvclNlc3Npb24oY29uc3QgTWVkaWFFbGVtZW50U2Vzc2lvbiYg
c2Vzc2lvbiwgTWVkaWFFbGVtZW50U2Vzc2lvbjo6UGxheWJhY2tDb250cm9sc1B1cnBvc2UgcHVy
cG9zZSkKQEAgLTMzNyw3ICszMzgsOCBAQCBzdGF0aWMgTWVkaWFFbGVtZW50U2Vzc2lvbkluZm8g
bWVkaWFFbGVtZW50U2Vzc2lvbkluZm9Gb3JTZXNzaW9uKGNvbnN0IE1lZGlhRWxlbQogICAgICAg
ICBzZXNzaW9uLmNhblNob3dDb250cm9sc01hbmFnZXIocHVycG9zZSksCiAgICAgICAgIGVsZW1l
bnQuaXNGdWxsc2NyZWVuKCkgfHwgZWxlbWVudC5pc1Zpc2libGVJblZpZXdwb3J0KCksCiAgICAg
ICAgIHNlc3Npb24uaXNMYXJnZUVub3VnaEZvck1haW5Db250ZW50KE1lZGlhU2Vzc2lvbk1haW5D
b250ZW50UHVycG9zZTo6TWVkaWFDb250cm9scyksCi0gICAgICAgIGVsZW1lbnQuaXNQbGF5aW5n
KCkgJiYgZWxlbWVudC5oYXNBdWRpbygpICYmICFlbGVtZW50Lm11dGVkKCkKKyAgICAgICAgZWxl
bWVudC5pc1BsYXlpbmcoKSAmJiBlbGVtZW50Lmhhc0F1ZGlvKCkgJiYgIWVsZW1lbnQubXV0ZWQo
KSwKKyAgICAgICAgZWxlbWVudC5oYXNFdmVyTm90aWZpZWRBYm91dFBsYXlpbmcoKQogICAgIH07
CiB9CiAKQEAgLTM0NiwyMCArMzQ4LDMwIEBAIHN0YXRpYyBib29sIHByZWZlck1lZGlhQ29udHJv
bHNGb3JDYW5kaWRhdGVTZXNzaW9uT3Zlck90aGVyQ2FuZGlkYXRlU2Vzc2lvbihjb25zCiAgICAg
TWVkaWFFbGVtZW50U2Vzc2lvbjo6UGxheWJhY2tDb250cm9sc1B1cnBvc2UgcHVycG9zZSA9IHNl
c3Npb24ucHVycG9zZTsKICAgICBBU1NFUlQocHVycG9zZSA9PSBvdGhlclNlc3Npb24ucHVycG9z
ZSk7CiAKLSAgICAvLyBGb3IgdGhlIGNvbnRyb2xzIG1hbmFnZXIsIHByaW9yaXRpemUgdmlzaWJs
ZSBtZWRpYSBvdmVyIG9mZnNjcmVlbiBtZWRpYS4KLSAgICBpZiAocHVycG9zZSA9PSBNZWRpYUVs
ZW1lbnRTZXNzaW9uOjpQbGF5YmFja0NvbnRyb2xzUHVycG9zZTo6Q29udHJvbHNNYW5hZ2VyICYm
IHNlc3Npb24uaXNWaXNpYmxlSW5WaWV3cG9ydE9yRnVsbHNjcmVlbiAhPSBvdGhlclNlc3Npb24u
aXNWaXNpYmxlSW5WaWV3cG9ydE9yRnVsbHNjcmVlbikKKyAgICAvLyBGb3IgdGhlIGNvbnRyb2xz
IG1hbmFnZXIgYW5kIE1lZGlhU2Vzc2lvbiwgcHJpb3JpdGl6ZSB2aXNpYmxlIG1lZGlhIG92ZXIg
b2Zmc2NyZWVuIG1lZGlhLgorICAgIGlmICgocHVycG9zZSA9PSBNZWRpYUVsZW1lbnRTZXNzaW9u
OjpQbGF5YmFja0NvbnRyb2xzUHVycG9zZTo6Q29udHJvbHNNYW5hZ2VyIHx8IHB1cnBvc2UgPT0g
TWVkaWFFbGVtZW50U2Vzc2lvbjo6UGxheWJhY2tDb250cm9sc1B1cnBvc2U6Ok1lZGlhU2Vzc2lv
bikKKyAgICAgICAgJiYgc2Vzc2lvbi5pc1Zpc2libGVJblZpZXdwb3J0T3JGdWxsc2NyZWVuICE9
IG90aGVyU2Vzc2lvbi5pc1Zpc2libGVJblZpZXdwb3J0T3JGdWxsc2NyZWVuKQogICAgICAgICBy
ZXR1cm4gc2Vzc2lvbi5pc1Zpc2libGVJblZpZXdwb3J0T3JGdWxsc2NyZWVuOwogCi0gICAgLy8g
Rm9yIE5vdyBQbGF5aW5nLCBwcmlvcml0aXplIGVsZW1lbnRzIHRoYXQgd291bGQgbm9ybWFsbHkg
c2F0aXNmeSBtYWluIGNvbnRlbnQuCi0gICAgaWYgKHB1cnBvc2UgPT0gTWVkaWFFbGVtZW50U2Vz
c2lvbjo6UGxheWJhY2tDb250cm9sc1B1cnBvc2U6Ok5vd1BsYXlpbmcgJiYgc2Vzc2lvbi5pc0xh
cmdlRW5vdWdoRm9yTWFpbkNvbnRlbnQgIT0gb3RoZXJTZXNzaW9uLmlzTGFyZ2VFbm91Z2hGb3JN
YWluQ29udGVudCkKKyAgICAvLyBGb3IgTm93IFBsYXlpbmcgYW5kIE1lZGlhU2Vzc2lvbiwgcHJp
b3JpdGl6ZSBlbGVtZW50cyB0aGF0IHdvdWxkIG5vcm1hbGx5IHNhdGlzZnkgbWFpbiBjb250ZW50
LgorICAgIGlmICgocHVycG9zZSA9PSBNZWRpYUVsZW1lbnRTZXNzaW9uOjpQbGF5YmFja0NvbnRy
b2xzUHVycG9zZTo6Tm93UGxheWluZyB8fCBwdXJwb3NlID09IE1lZGlhRWxlbWVudFNlc3Npb246
OlBsYXliYWNrQ29udHJvbHNQdXJwb3NlOjpNZWRpYVNlc3Npb24pCisgICAgICAgICYmIHNlc3Np
b24uaXNMYXJnZUVub3VnaEZvck1haW5Db250ZW50ICE9IG90aGVyU2Vzc2lvbi5pc0xhcmdlRW5v
dWdoRm9yTWFpbkNvbnRlbnQpCiAgICAgICAgIHJldHVybiBzZXNzaW9uLmlzTGFyZ2VFbm91Z2hG
b3JNYWluQ29udGVudDsKIAorICAgIC8vIEZvciBNZWRpYVNlc3Npb24sIHByaW9yaXRpemUgZWxl
bWVudHMgdGhhdCBoYXZlIGJlZW4gcGxheWVkIGJlZm9yZS4KKyAgICBpZiAocHVycG9zZSA9PSBN
ZWRpYUVsZW1lbnRTZXNzaW9uOjpQbGF5YmFja0NvbnRyb2xzUHVycG9zZTo6TWVkaWFTZXNzaW9u
CisgICAgICAgICYmIHNlc3Npb24uaGFzRXZlck5vdGlmaWVkQWJvdXRQbGF5aW5nICE9IG90aGVy
U2Vzc2lvbi5oYXNFdmVyTm90aWZpZWRBYm91dFBsYXlpbmcpCisgICAgICAgIHJldHVybiBzZXNz
aW9uLmhhc0V2ZXJOb3RpZmllZEFib3V0UGxheWluZzsKKwogICAgIC8vIEFzIGEgdGllYnJlYWtl
ciwgcHJpb3JpdGl6ZSBlbGVtZW50cyB0aGF0IHRoZSB1c2VyIHJlY2VudGx5IGludGVyYWN0ZWQg
d2l0aC4KICAgICByZXR1cm4gc2Vzc2lvbi50aW1lT2ZMYXN0VXNlckludGVyYWN0aW9uID4gb3Ro
ZXJTZXNzaW9uLnRpbWVPZkxhc3RVc2VySW50ZXJhY3Rpb247CiB9CiAKIHN0YXRpYyBib29sIG1l
ZGlhU2Vzc2lvbk1heUJlQ29uZnVzZWRXaXRoTWFpbkNvbnRlbnQoY29uc3QgTWVkaWFFbGVtZW50
U2Vzc2lvbkluZm8mIHNlc3Npb24sIE1lZGlhRWxlbWVudFNlc3Npb246OlBsYXliYWNrQ29udHJv
bHNQdXJwb3NlIHB1cnBvc2UpCiB7CisgICAgaWYgKHB1cnBvc2UgPT0gTWVkaWFFbGVtZW50U2Vz
c2lvbjo6UGxheWJhY2tDb250cm9sc1B1cnBvc2U6Ok1lZGlhU2Vzc2lvbikKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCiAgICAgaWYgKHB1cnBvc2UgPT0gTWVkaWFFbGVtZW50U2Vzc2lvbjo6UGxh
eWJhY2tDb250cm9sc1B1cnBvc2U6Ok5vd1BsYXlpbmcpCiAgICAgICAgIHJldHVybiBzZXNzaW9u
LmlzUGxheWluZ0F1ZGlvOwogCkBAIC01ODEsMTIgKzU5MywxMyBAQCBIVE1MTWVkaWFFbGVtZW50
Ojp+SFRNTE1lZGlhRWxlbWVudCgpCiAgICAgICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnVu
cmVnaXN0ZXJCbG9iVVJMKG1fYmxvYlVSTEZvclJlYWRpbmcpOwogfQogCi1SZWZQdHI8SFRNTE1l
ZGlhRWxlbWVudD4gSFRNTE1lZGlhRWxlbWVudDo6YmVzdE1lZGlhRWxlbWVudEZvclNob3dpbmdQ
bGF5YmFja0NvbnRyb2xzTWFuYWdlcihNZWRpYUVsZW1lbnRTZXNzaW9uOjpQbGF5YmFja0NvbnRy
b2xzUHVycG9zZSBwdXJwb3NlKQorUmVmUHRyPEhUTUxNZWRpYUVsZW1lbnQ+IEhUTUxNZWRpYUVs
ZW1lbnQ6OmJlc3RNZWRpYUVsZW1lbnRGb3JSZW1vdGVDb250cm9scyhNZWRpYUVsZW1lbnRTZXNz
aW9uOjpQbGF5YmFja0NvbnRyb2xzUHVycG9zZSBwdXJwb3NlLCBjb25zdCBEb2N1bWVudCogZG9j
dW1lbnQpCiB7CiAgICAgVmVjdG9yPE1lZGlhRWxlbWVudFNlc3Npb25JbmZvPiBjYW5kaWRhdGVT
ZXNzaW9uczsKICAgICBib29sIGF0TGVhc3RPbmVOb25DYW5kaWRhdGVNYXlCZUNvbmZ1c2VkRm9y
TWFpbkNvbnRlbnQgPSBmYWxzZTsKLSAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNo
YXJlZE1hbmFnZXIoKS5mb3JFYWNoTWF0Y2hpbmdTZXNzaW9uKFtdKGF1dG8mIHNlc3Npb24pIHsK
LSAgICAgICAgcmV0dXJuIGlzPE1lZGlhRWxlbWVudFNlc3Npb24+KHNlc3Npb24pOworICAgIFBs
YXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmZvckVhY2hNYXRjaGlu
Z1Nlc3Npb24oW2RvY3VtZW50XShhdXRvJiBzZXNzaW9uKSB7CisgICAgICAgIHJldHVybiBpczxN
ZWRpYUVsZW1lbnRTZXNzaW9uPihzZXNzaW9uKQorICAgICAgICAgICAgJiYgKCFkb2N1bWVudCB8
fCAmZG93bmNhc3Q8TWVkaWFFbGVtZW50U2Vzc2lvbj4oc2Vzc2lvbikuZWxlbWVudCgpLmRvY3Vt
ZW50KCkgPT0gZG9jdW1lbnQpOwogICAgIH0sIFsmXShhdXRvJiBzZXNzaW9uKSB7CiAgICAgICAg
IGF1dG8gbWVkaWFFbGVtZW50U2Vzc2lvbkluZm8gPSBtZWRpYUVsZW1lbnRTZXNzaW9uSW5mb0Zv
clNlc3Npb24oZG93bmNhc3Q8TWVkaWFFbGVtZW50U2Vzc2lvbj4oc2Vzc2lvbiksIHB1cnBvc2Up
OwogICAgICAgICBpZiAobWVkaWFFbGVtZW50U2Vzc2lvbkluZm8uY2FuU2hvd0NvbnRyb2xzTWFu
YWdlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggNzQ4NmNhZDZj
MGY5OTEwMWYwNzdlY2JkNTEwMzkxZGY4ZDViMmE2YS4uMTI5Zjg0YjA1ZGE2N2JhYWQwMzEyYWVj
OThhM2QzODlmNGVjMmVkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgK
QEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJWaXNpYmlsaXR5Q2hhbmdlQ2xpZW50LmgiCiAj
aW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL0xvZ2dlckhlbHBlci5oPgor
I2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKICNp
ZiBVU0UoQVVESU9fU0VTU0lPTikgJiYgUExBVEZPUk0oTUFDKQpAQCAtMTU1LDcgKzE1Niw3IEBA
IHB1YmxpYzoKIAogICAgIHN0YXRpYyBIYXNoU2V0PEhUTUxNZWRpYUVsZW1lbnQqPiYgYWxsTWVk
aWFFbGVtZW50cygpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxIVE1MTWVk
aWFFbGVtZW50PiBiZXN0TWVkaWFFbGVtZW50Rm9yU2hvd2luZ1BsYXliYWNrQ29udHJvbHNNYW5h
Z2VyKE1lZGlhRWxlbWVudFNlc3Npb246OlBsYXliYWNrQ29udHJvbHNQdXJwb3NlKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEhUTUxNZWRpYUVsZW1lbnQ+IGJlc3RNZWRpYUVs
ZW1lbnRGb3JSZW1vdGVDb250cm9scyhNZWRpYUVsZW1lbnRTZXNzaW9uOjpQbGF5YmFja0NvbnRy
b2xzUHVycG9zZSwgY29uc3QgRG9jdW1lbnQqID0gbnVsbHB0cik7CiAKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHJld2luZChkb3VibGUgdGltZURlbHRhKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHJldHVyblRvUmVhbHRpbWUoKSBvdmVycmlkZTsKQEAgLTE5OCw4ICsxOTksNiBAQCBwdWJs
aWM6CiAgICAgCiAgICAgYm9vbCBpbkFjdGl2ZURvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9p
bkFjdGl2ZURvY3VtZW50OyB9CiAKLSAgICBNZWRpYVNlc3Npb25Hcm91cElkZW50aWZpZXIgbWVk
aWFTZXNzaW9uR3JvdXBJZGVudGlmaWVyKCkgY29uc3QgZmluYWw7Ci0KIC8vIERPTSBBUEkKIC8v
IGVycm9yIHN0YXRlCiAgICAgV0VCQ09SRV9FWFBPUlQgTWVkaWFFcnJvciogZXJyb3IoKSBjb25z
dDsKQEAgLTUzMyw4ICs1MzIsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNNZWRpYVN0cmVhbVNy
Y09iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFQcm92aWRlciAmJiBXVEY6OmhvbGRzX2Fs
dGVybmF0aXZlPFJlZlB0cjxNZWRpYVN0cmVhbT4+KCptX21lZGlhUHJvdmlkZXIpOyB9CiAjZW5k
aWYKIAotICAgIGJvb2wgc3VwcG9ydHNTZWVraW5nKCkgY29uc3Qgb3ZlcnJpZGU7Ci0KICNpZiAh
UkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuICptX2xvZ2dlci5nZXQoKTsgfQogICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50
aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xvZ0lkZW50aWZpZXI7IH0KQEAgLTU0NCw4
ICs1NDEsNiBAQCBwdWJsaWM6CiAKICAgICBib29sIHdpbGxMb2coV1RGTG9nTGV2ZWwpIGNvbnN0
OwogCi0gICAgYm9vbCBpc1N1c3BlbmRlZCgpIGNvbnN0IGZpbmFsOwotCiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBkaWRCZWNvbWVGdWxsc2NyZWVuRWxlbWVudCgpIGZpbmFsOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgd2lsbEV4aXRGdWxsc2NyZWVuKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBkaWRTdG9wQmVpbmdGdWxsc2NyZWVuRWxlbWVudCgpIGZpbmFsOwpAQCAtNTczLDYgKzU2
OCwyNiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRPdmVycmlkZVByZWZl
cnJlZER5bmFtaWNSYW5nZU1vZGUoRHluYW1pY1JhbmdlTW9kZSk7CiAgICAgdm9pZCBzZXRQcmVm
ZXJyZWREeW5hbWljUmFuZ2VNb2RlKER5bmFtaWNSYW5nZU1vZGUpOwogCisgICAgLy8gUGxhdGZv
cm1NZWRpYVNlc3Npb25DbGllbnQKKyAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBl
IG1lZGlhVHlwZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpN
ZWRpYVR5cGUgcHJlc2VudGF0aW9uVHlwZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpEaXNwbGF5VHlwZSBkaXNwbGF5VHlwZSgpIGNvbnN0IG92ZXJyaWRlOwor
CisgICAgdm9pZCByZXN1bWVBdXRvcGxheWluZygpIG92ZXJyaWRlOworICAgIHZvaWQgbWF5UmVz
dW1lUGxheWJhY2soYm9vbCBzaG91bGRSZXN1bWUpIG92ZXJyaWRlOworICAgIHZvaWQgc3VzcGVu
ZFBsYXliYWNrKCkgb3ZlcnJpZGU7CisgICAgYm9vbCBjYW5SZWNlaXZlUmVtb3RlQ29udHJvbENv
bW1hbmRzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZvaWQgZGlkUmVj
ZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250
cm9sQ29tbWFuZFR5cGUsIGNvbnN0IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb21tYW5k
QXJndW1lbnQmKSBvdmVycmlkZTsKKyAgICBib29sIHN1cHBvcnRzU2Vla2luZygpIGNvbnN0IG92
ZXJyaWRlOworICAgIGJvb2wgY2FuUHJvZHVjZUF1ZGlvKCkgY29uc3QgZmluYWw7CisgICAgYm9v
bCBpc1N1c3BlbmRlZCgpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc2hvdWxkT3ZlcnJpZGVCYWNr
Z3JvdW5kUGxheWJhY2tSZXN0cmljdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0
aW9uVHlwZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBzaG91bGRPdmVycmlkZUJhY2tncm91
bmRMb2FkaW5nUmVzdHJpY3Rpb24oKSBjb25zdCBvdmVycmlkZTsKKyAgICBNZWRpYVNlc3Npb25H
cm91cElkZW50aWZpZXIgbWVkaWFTZXNzaW9uR3JvdXBJZGVudGlmaWVyKCkgY29uc3QgZmluYWw7
CisgICAgYm9vbCBoYXNNZWRpYVN0cmVhbVNvdXJjZSgpIGNvbnN0IGZpbmFsOworICAgIHZvaWQg
cHJvY2Vzc0lzU3VzcGVuZGVkQ2hhbmdlZCgpIGZpbmFsOworICAgIGJvb2wgc2hvdWxkT3ZlcnJp
ZGVQYXVzZUR1cmluZ1JvdXRlQ2hhbmdlKCkgY29uc3QgZmluYWw7CisKIHByb3RlY3RlZDoKICAg
ICBIVE1MTWVkaWFFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYsIGJvb2wg
Y3JlYXRlZEJ5UGFyc2VyKTsKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoSW5pdGlhbGl6YXRpb24o
KTsKQEAgLTg1OCwyMiArODczLDYgQEAgcHJpdmF0ZToKICAgICBET01XcmFwcGVyV29ybGQmIGVu
c3VyZUlzb2xhdGVkV29ybGQoKTsKICAgICBib29sIGVuc3VyZU1lZGlhQ29udHJvbHNJbmplY3Rl
ZFNjcmlwdCgpOwogCi0gICAgUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBtZWRpYVR5
cGUoKSBjb25zdCBvdmVycmlkZTsKLSAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBl
IHByZXNlbnRhdGlvblR5cGUoKSBjb25zdCBvdmVycmlkZTsKLSAgICBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6RGlzcGxheVR5cGUgZGlzcGxheVR5cGUoKSBjb25zdCBvdmVycmlkZTsKLQotICAgIHZv
aWQgc3VzcGVuZFBsYXliYWNrKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZXN1bWVBdXRvcGxheWlu
ZygpIG92ZXJyaWRlOwotICAgIHZvaWQgbWF5UmVzdW1lUGxheWJhY2soYm9vbCBzaG91bGRSZXN1
bWUpIG92ZXJyaWRlOwotICAgIGJvb2wgY2FuUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kcygp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2b2lkIGRpZFJlY2VpdmVSZW1v
dGVDb250cm9sQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1h
bmRUeXBlLCBjb25zdCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29tbWFuZEFyZ3VtZW50
Jikgb3ZlcnJpZGU7Ci0gICAgYm9vbCBzaG91bGRPdmVycmlkZUJhY2tncm91bmRQbGF5YmFja1Jl
c3RyaWN0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpJbnRlcnJ1cHRpb25UeXBlKSBjb25zdCBv
dmVycmlkZTsKLSAgICBib29sIHNob3VsZE92ZXJyaWRlQmFja2dyb3VuZExvYWRpbmdSZXN0cmlj
dGlvbigpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgY2FuUHJvZHVjZUF1ZGlvKCkgY29uc3Qg
ZmluYWw7Ci0gICAgYm9vbCBoYXNNZWRpYVN0cmVhbVNvdXJjZSgpIGNvbnN0IGZpbmFsOwotICAg
IHZvaWQgcHJvY2Vzc0lzU3VzcGVuZGVkQ2hhbmdlZCgpIGZpbmFsOwotICAgIGJvb2wgc2hvdWxk
T3ZlcnJpZGVQYXVzZUR1cmluZ1JvdXRlQ2hhbmdlKCkgY29uc3QgZmluYWw7Ci0KICAgICB2b2lk
IHBhZ2VNdXRlZFN0YXRlRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CiAKICNpZiBVU0UoQVVESU9fU0VT
U0lPTikgJiYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9N
ZWRpYUVsZW1lbnRTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50
U2Vzc2lvbi5jcHAKaW5kZXggZjI3NGJlZjg2NmVjMjliMTk3YzBkZjVlYTM3NmZjMDkzMmY0ZThl
MC4uNWFjZjc4NDc2NWIyZTljODU0NWZhNDQwNDNlODM3YmNiNDgxYTU4YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwCkBAIC01MjUsNyArNTI1LDcgQEAg
Ym9vbCBNZWRpYUVsZW1lbnRTZXNzaW9uOjpjYW5TaG93Q29udHJvbHNNYW5hZ2VyKFBsYXliYWNr
Q29udHJvbHNQdXJwb3NlIHB1cnBvc2UKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0g
ICAgaWYgKGNsaWVudCgpLnByZXNlbnRhdGlvblR5cGUoKSA9PSBNZWRpYVR5cGU6OkF1ZGlvICYm
IHB1cnBvc2UgPT0gUGxheWJhY2tDb250cm9sc1B1cnBvc2U6OkNvbnRyb2xzTWFuYWdlcikgewor
ICAgIGlmIChjbGllbnQoKS5wcmVzZW50YXRpb25UeXBlKCkgPT0gTWVkaWFUeXBlOjpBdWRpbyAm
JiAocHVycG9zZSA9PSBQbGF5YmFja0NvbnRyb2xzUHVycG9zZTo6Q29udHJvbHNNYW5hZ2VyIHx8
IHB1cnBvc2UgPT0gUGxheWJhY2tDb250cm9sc1B1cnBvc2U6Ok1lZGlhU2Vzc2lvbikpIHsKICAg
ICAgICAgaWYgKCFoYXNCZWhhdmlvclJlc3RyaWN0aW9uKFJlcXVpcmVVc2VyR2VzdHVyZVRvQ29u
dHJvbENvbnRyb2xzTWFuYWdlcikgfHwgbV9lbGVtZW50LmRvY3VtZW50KCkucHJvY2Vzc2luZ1Vz
ZXJHZXN0dXJlRm9yTWVkaWEoKSkgewogICAgICAgICAgICAgSU5GT19MT0coTE9HSURFTlRJRklF
UiwgInJldHVybmluZyBUUlVFOiBhdWRpbyBlbGVtZW50IHdpdGggdXNlciBnZXN0dXJlIik7CiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTU2NSw3ICs1NjUsNyBAQCBib29sIE1lZGlhRWxl
bWVudFNlc3Npb246OmNhblNob3dDb250cm9sc01hbmFnZXIoUGxheWJhY2tDb250cm9sc1B1cnBv
c2UgcHVycG9zZQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKCFtX2Vs
ZW1lbnQuaGFzRXZlck5vdGlmaWVkQWJvdXRQbGF5aW5nKCkpIHsKKyAgICBpZiAocHVycG9zZSAh
PSBQbGF5YmFja0NvbnRyb2xzUHVycG9zZTo6TWVkaWFTZXNzaW9uICYmICFtX2VsZW1lbnQuaGFz
RXZlck5vdGlmaWVkQWJvdXRQbGF5aW5nKCkpIHsKICAgICAgICAgSU5GT19MT0coTE9HSURFTlRJ
RklFUiwgInJldHVybmluZyBGQUxTRTogaGFzbid0IGZpcmVkIHBsYXlpbmcgbm90aWZpY2F0aW9u
Iik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC01OTcsNyArNTk3LDcgQEAgYm9v
bCBNZWRpYUVsZW1lbnRTZXNzaW9uOjpjYW5TaG93Q29udHJvbHNNYW5hZ2VyKFBsYXliYWNrQ29u
dHJvbHNQdXJwb3NlIHB1cnBvc2UKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChwdXJwb3Nl
ID09IFBsYXliYWNrQ29udHJvbHNQdXJwb3NlOjpOb3dQbGF5aW5nKSB7CisgICAgaWYgKHB1cnBv
c2UgPT0gUGxheWJhY2tDb250cm9sc1B1cnBvc2U6Ok5vd1BsYXlpbmcgfHwgcHVycG9zZSA9PSBQ
bGF5YmFja0NvbnRyb2xzUHVycG9zZTo6TWVkaWFTZXNzaW9uKSB7CiAgICAgICAgIElORk9fTE9H
KExPR0lERU5USUZJRVIsICJyZXR1cm5pbmcgVFJVRTogcG90ZW50aWFsbHkgcGxheXMgYXVkaW8i
KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMTEzNSwxMCArMTEzNSw3IEBAIHZv
aWQgTWVkaWFFbGVtZW50U2Vzc2lvbjo6ZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKFJl
bW90ZUNvbnRyb2xDb21tYW5kVHlwCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAo
YXV0byBoYW5kbGVyID0gc2Vzc2lvbi0+aGFuZGxlckZvckFjdGlvbihhY3Rpb25EZXRhaWxzLmFj
dGlvbikpCi0gICAgICAgIGhhbmRsZXItPmhhbmRsZUV2ZW50KGFjdGlvbkRldGFpbHMpOwotICAg
IGVsc2UKLSAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAiSWdub3JpbmcgY29tbWFu
ZCwgbm8gYWN0aW9uIGhhbmRsZXIgcmVnaXN0ZXJlZCBmb3IgIiwgYWN0aW9uRGV0YWlscy5hY3Rp
b24pOworICAgIHNlc3Npb24tPmNhbGxBY3Rpb25IYW5kbGVyKGFjdGlvbkRldGFpbHMpOwogfQog
I2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vz
c2lvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmgKaW5kZXgg
ODE3YTUwMThlOGRjNzM4MGZkYmM4Y2M5MzIwZTFhNzI2ODUwZWIxYi4uZDkzZmQwZjg3Zjk2YmQy
Zjg4N2JkZTY0YWU3ZWU1OWJhNDBhM2E1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9NZWRpYUVsZW1lbnRTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVs
ZW1lbnRTZXNzaW9uLmgKQEAgLTE1OCw3ICsxNTgsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCB3YW50
c1RvT2JzZXJ2ZVZpZXdwb3J0VmlzaWJpbGl0eUZvck1lZGlhQ29udHJvbHMoKSBjb25zdDsKICAg
ICBib29sIHdhbnRzVG9PYnNlcnZlVmlld3BvcnRWaXNpYmlsaXR5Rm9yQXV0b3BsYXkoKSBjb25z
dDsKIAotICAgIGVudW0gY2xhc3MgUGxheWJhY2tDb250cm9sc1B1cnBvc2UgeyBDb250cm9sc01h
bmFnZXIsIE5vd1BsYXlpbmcgfTsKKyAgICBlbnVtIGNsYXNzIFBsYXliYWNrQ29udHJvbHNQdXJw
b3NlIHsgQ29udHJvbHNNYW5hZ2VyLCBOb3dQbGF5aW5nLCBNZWRpYVNlc3Npb24gfTsKICAgICBi
b29sIGNhblNob3dDb250cm9sc01hbmFnZXIoUGxheWJhY2tDb250cm9sc1B1cnBvc2UpIGNvbnN0
OwogICAgIGJvb2wgaXNMYXJnZUVub3VnaEZvck1haW5Db250ZW50KE1lZGlhU2Vzc2lvbk1haW5D
b250ZW50UHVycG9zZSkgY29uc3Q7CiAgICAgYm9vbCBpc01haW5Db250ZW50Rm9yUHVycG9zZXNP
ZkF1dG9wbGF5RXZlbnRzKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCBhODk2MjQ0ZWQx
YWQyYzlhNjY1YTdiYTNhZTIxOTEzOTI2YzRkNTIyLi5lYWY1NmNkZTIzMDY2NTM4Mzk4NTU1MjYx
NWUxMjU4MDAyNThhODZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTIxMzUsNyArMjEzNSw3IEBA
IHZvaWQgUGFnZTo6c2NoZWR1bGVQbGF5YmFja0NvbnRyb2xzTWFuYWdlclVwZGF0ZSgpCiAKIHZv
aWQgUGFnZTo6cGxheWJhY2tDb250cm9sc01hbmFnZXJVcGRhdGVUaW1lckZpcmVkKCkKIHsKLSAg
ICBpZiAoYXV0byBiZXN0TWVkaWFFbGVtZW50ID0gSFRNTE1lZGlhRWxlbWVudDo6YmVzdE1lZGlh
RWxlbWVudEZvclNob3dpbmdQbGF5YmFja0NvbnRyb2xzTWFuYWdlcihNZWRpYUVsZW1lbnRTZXNz
aW9uOjpQbGF5YmFja0NvbnRyb2xzUHVycG9zZTo6Q29udHJvbHNNYW5hZ2VyKSkKKyAgICBpZiAo
YXV0byBiZXN0TWVkaWFFbGVtZW50ID0gSFRNTE1lZGlhRWxlbWVudDo6YmVzdE1lZGlhRWxlbWVu
dEZvclJlbW90ZUNvbnRyb2xzKE1lZGlhRWxlbWVudFNlc3Npb246OlBsYXliYWNrQ29udHJvbHNQ
dXJwb3NlOjpDb250cm9sc01hbmFnZXIpKQogICAgICAgICBjaHJvbWUoKS5jbGllbnQoKS5zZXRV
cFBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKCpiZXN0TWVkaWFFbGVtZW50KTsKICAgICBlbHNlCiAg
ICAgICAgIGNocm9tZSgpLmNsaWVudCgpLmNsZWFyUGxheWJhY2tDb250cm9sc01hbmFnZXIoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vz
c2lvbk1hbmFnZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29h
L01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQppbmRleCAyMzA4ZGUxY2VmZmY0ZjM2ZmJjY2Q2
N2I2Y2E3NzVjNTUxMjBhMTk5Li41NzI0OGM2YjZhNWMyZDEwZjg1NjlmMDgwYjk1ZmI3YTEyZDk5
NTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRp
YVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tCkBAIC0zMzksNyArMzM5LDcgQEAg
dm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnNldE5vd1BsYXlpbmdJbmZvKGJvb2wgc2V0
QXNOb3dQbGF5aW5nQXBwbGljYXRpb24KIFBsYXRmb3JtTWVkaWFTZXNzaW9uKiBNZWRpYVNlc3Np
b25NYW5hZ2VyQ29jb2E6Om5vd1BsYXlpbmdFbGlnaWJsZVNlc3Npb24oKQogewogICAgIC8vIEZJ
WE1FOiBGaXggdGhpcyBsYXllcmluZyB2aW9sYXRpb24uCi0gICAgaWYgKGF1dG8gZWxlbWVudCA9
IEhUTUxNZWRpYUVsZW1lbnQ6OmJlc3RNZWRpYUVsZW1lbnRGb3JTaG93aW5nUGxheWJhY2tDb250
cm9sc01hbmFnZXIoTWVkaWFFbGVtZW50U2Vzc2lvbjo6UGxheWJhY2tDb250cm9sc1B1cnBvc2U6
Ok5vd1BsYXlpbmcpKQorICAgIGlmIChhdXRvIGVsZW1lbnQgPSBIVE1MTWVkaWFFbGVtZW50Ojpi
ZXN0TWVkaWFFbGVtZW50Rm9yUmVtb3RlQ29udHJvbHMoTWVkaWFFbGVtZW50U2Vzc2lvbjo6UGxh
eWJhY2tDb250cm9sc1B1cnBvc2U6Ok5vd1BsYXlpbmcpKQogICAgICAgICByZXR1cm4gJmVsZW1l
bnQtPm1lZGlhU2Vzc2lvbigpOwogCiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAKaW5kZXggNDUxMWJmNTBhNTJkNDFlMjIzYzU3NjA4MDZlYzMwYWQ2
YWM1ZTZlOC4uNmUwMjQ5ZDc2ZTE5MGRhNTgzNTE4NWJhY2YwYjA2YWQzMGNmMDJhNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNDQyMyw5ICs0NDIzLDkgQEAgRXhjZXB0
aW9uT3I8SW50ZXJuYWxzOjpOb3dQbGF5aW5nU3RhdGU+IEludGVybmFsczo6bm93UGxheWluZ1N0
YXRlKCkgY29uc3QKIH0KIAogI2lmIEVOQUJMRShWSURFTykKLVJlZlB0cjxIVE1MTWVkaWFFbGVt
ZW50PiBJbnRlcm5hbHM6OmJlc3RNZWRpYUVsZW1lbnRGb3JTaG93aW5nUGxheWJhY2tDb250cm9s
c01hbmFnZXIoSW50ZXJuYWxzOjpQbGF5YmFja0NvbnRyb2xzUHVycG9zZSBwdXJwb3NlKQorUmVm
UHRyPEhUTUxNZWRpYUVsZW1lbnQ+IEludGVybmFsczo6YmVzdE1lZGlhRWxlbWVudEZvclJlbW90
ZUNvbnRyb2xzKEludGVybmFsczo6UGxheWJhY2tDb250cm9sc1B1cnBvc2UgcHVycG9zZSkKIHsK
LSAgICByZXR1cm4gSFRNTE1lZGlhRWxlbWVudDo6YmVzdE1lZGlhRWxlbWVudEZvclNob3dpbmdQ
bGF5YmFja0NvbnRyb2xzTWFuYWdlcihwdXJwb3NlKTsKKyAgICByZXR1cm4gSFRNTE1lZGlhRWxl
bWVudDo6YmVzdE1lZGlhRWxlbWVudEZvclJlbW90ZUNvbnRyb2xzKHB1cnBvc2UpOwogfQogCiBJ
bnRlcm5hbHM6Ok1lZGlhU2Vzc2lvblN0YXRlIEludGVybmFsczo6bWVkaWFTZXNzaW9uU3RhdGUo
SFRNTE1lZGlhRWxlbWVudCYgZWxlbWVudCkKQEAgLTYxMjEsMTAgKzYxMjEsOSBAQCBFeGNlcHRp
b25Pcjxkb3VibGU+IEludGVybmFsczo6Y3VycmVudE1lZGlhU2Vzc2lvblBvc2l0aW9uKGNvbnN0
IE1lZGlhU2Vzc2lvbiYgcwogCiBFeGNlcHRpb25Pcjx2b2lkPiBJbnRlcm5hbHM6OnNlbmRNZWRp
YVNlc3Npb25BY3Rpb24oTWVkaWFTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBNZWRpYVNlc3Npb25B
Y3Rpb25EZXRhaWxzJiBhY3Rpb25EZXRhaWxzKQogewotICAgIGlmIChhdXRvIGhhbmRsZXIgPSBz
ZXNzaW9uLmhhbmRsZXJGb3JBY3Rpb24oYWN0aW9uRGV0YWlscy5hY3Rpb24pKSB7Ci0gICAgICAg
IGhhbmRsZXItPmhhbmRsZUV2ZW50KGFjdGlvbkRldGFpbHMpOworICAgIGlmIChzZXNzaW9uLmNh
bGxBY3Rpb25IYW5kbGVyKGFjdGlvbkRldGFpbHMpKQogICAgICAgICByZXR1cm4geyB9OwotICAg
IH0KKwogICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCA0NmFkNDg0OTFmZDJkMThjOTc1MWEzOWJm
ZjFlNTJiMzJiNjBjMGUxLi5lNzRjMTc1ODFlM2E3OGI5M2Y0OWU2MDMxZDc0NjU5ZWJhOWYyZmUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTkyNiw3ICs5MjYsNyBAQCBwdWJs
aWM6CiAKICNpZiBFTkFCTEUoVklERU8pCiAgICAgdXNpbmcgUGxheWJhY2tDb250cm9sc1B1cnBv
c2UgPSBNZWRpYUVsZW1lbnRTZXNzaW9uOjpQbGF5YmFja0NvbnRyb2xzUHVycG9zZTsKLSAgICBS
ZWZQdHI8SFRNTE1lZGlhRWxlbWVudD4gYmVzdE1lZGlhRWxlbWVudEZvclNob3dpbmdQbGF5YmFj
a0NvbnRyb2xzTWFuYWdlcihQbGF5YmFja0NvbnRyb2xzUHVycG9zZSk7CisgICAgUmVmUHRyPEhU
TUxNZWRpYUVsZW1lbnQ+IGJlc3RNZWRpYUVsZW1lbnRGb3JSZW1vdGVDb250cm9scyhQbGF5YmFj
a0NvbnRyb2xzUHVycG9zZSk7CiAKICAgICB1c2luZyBNZWRpYVNlc3Npb25TdGF0ZSA9IFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpTdGF0ZTsKICAgICBNZWRpYVNlc3Npb25TdGF0ZSBtZWRpYVNlc3Np
b25TdGF0ZShIVE1MTWVkaWFFbGVtZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5p
ZGwKaW5kZXggMmVkY2MyYzIwYTcwMzMwNWJjMzQyOTI5MWJkYzc4OTZkZDFiMGE5ZC4uNTExZmY5
NWIwZDczMmIzMWVkZDljODcxN2I3NTI3OTQzZWFlYmVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmlkbApAQCAtOTA1LDcgKzkwNSw3IEBAIGVudW0gVHJlZVR5cGUgewogCiAgICAg
W0NvbmRpdGlvbmFsPVZJREVPXSByZWFkb25seSBhdHRyaWJ1dGUgTm93UGxheWluZ1N0YXRlIG5v
d1BsYXlpbmdTdGF0ZTsKIAotICAgIFtDb25kaXRpb25hbD1WSURFT10gSFRNTE1lZGlhRWxlbWVu
dCBiZXN0TWVkaWFFbGVtZW50Rm9yU2hvd2luZ1BsYXliYWNrQ29udHJvbHNNYW5hZ2VyKFBsYXli
YWNrQ29udHJvbHNQdXJwb3NlIHB1cnBvc2UpOworICAgIFtDb25kaXRpb25hbD1WSURFT10gSFRN
TE1lZGlhRWxlbWVudCBiZXN0TWVkaWFFbGVtZW50Rm9yUmVtb3RlQ29udHJvbHMoUGxheWJhY2tD
b250cm9sc1B1cnBvc2UgcHVycG9zZSk7CiAgICAgW0NvbmRpdGlvbmFsPVZJREVPXSBNZWRpYVNl
c3Npb25TdGF0ZSBtZWRpYVNlc3Npb25TdGF0ZShIVE1MTWVkaWFFbGVtZW50IGVsZW1lbnQpOwog
CiAgICAgW0NvbmRpdGlvbmFsPVZJREVPXSBNZWRpYVVzYWdlU3RhdGUgbWVkaWFVc2FnZVN0YXRl
KEhUTUxNZWRpYUVsZW1lbnQgZWxlbWVudCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYzVkYjY3MWQwODEwMDA2NzRmMmU5
OWMyM2YxYTQ2MThhM2M3OGM1NC4uMThmNmFkNDg0YmM4ZmNkZTI2OGM5MzAyMzQ0ZDYxY2ZhNWE1
ZGRmNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTA0LTA5ICBKZWFuLVl2ZXMgQXZlbmFy
ZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgTWVkaWEgU2Vzc2lvbiBhY3Rpb24gc2hvdWxk
IGRlZmF1bHQgdG8gdGhlIE1lZGlhRWxlbWVudCdzIGRlZmF1bHQgd2hlbiBubyBNZWRpYVNlc3Np
b24gaGFuZGxlciBhcmUgc2V0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjQyNzgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc2MzM5ODQxPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbWVkaWEvYXVk
aW8tYmFja2dyb3VuZC1wbGF5YmFjay1wbGF5bGlzdC1leHBlY3RlZC50eHQ6IFJlbmFtZWQgbWV0
aG9kCisgICAgICAgICogbWVkaWEvYXVkaW8tYmFja2dyb3VuZC1wbGF5YmFjay1wbGF5bGlzdC5o
dG1sOiBSZW5hbWVkIG1ldGhvZAorICAgICAgICAqIG1lZGlhL21lZGlhLXNlc3Npb24vZGVmYXVs
dC1hY3Rpb25IYW5kbGVycy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL21l
ZGlhLXNlc3Npb24vZGVmYXVsdC1hY3Rpb25IYW5kbGVycy5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMvbWVkaWEvdmlkZW8tYmVzdC1lbGVtZW50LWZvci1wbGF5YmFjay1jb250
cm9scy1wdXJwb3NlLWV4cGVjdGVkLnR4dDogUmVuYW1lZCBtZXRob2QKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvbWVkaWEvdmlkZW8tYmVzdC1lbGVtZW50LWZvci1wbGF5YmFjay1jb250cm9scy1w
dXJwb3NlLmh0bWw6IFJlbmFtZWQgbWV0aG9kCisKIDIwMjEtMDQtMDkgIEFudG9pbmUgUXVpbnQg
IDxncmFvdXRzQHdlYmtpdC5vcmc+CiAKICAgICAgICAgWyBNYWMgV0syIF0gY29tcG9zaXRpbmcv
YW5pbWF0aW9uL2tleWZyYW1lLW9yZGVyLmh0bWwgaXMgYSBmbGFrZXkgaW1hZ2UgZmFpbHVyZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvYXVkaW8tYmFja2dyb3VuZC1wbGF5YmFjay1w
bGF5bGlzdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9tZWRpYS9hdWRpby1iYWNrZ3JvdW5k
LXBsYXliYWNrLXBsYXlsaXN0LWV4cGVjdGVkLnR4dAppbmRleCAxZDM0NGIzZDk5Mzg4YTk3ZjUz
NGJlMTU1OTI5ZWY0OTYyMGJlYWZlLi5lOGMzYTgwNGNhMDNhNmU1YTdhZjMyZGM4OWYwMzUyOTFm
YjcyYzlkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9tZWRpYS9hdWRpby1iYWNrZ3JvdW5kLXBs
YXliYWNrLXBsYXlsaXN0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9hdWRp
by1iYWNrZ3JvdW5kLXBsYXliYWNrLXBsYXlsaXN0LWV4cGVjdGVkLnR4dApAQCAtNCwxOCArNCwx
OCBAQCBSVU4oYXVkaW8uc3JjID0gZmluZE1lZGlhRmlsZSgiYXVkaW8iLCAiY29udGVudC90ZXN0
IikpCiBFVkVOVChjYW5wbGF5dGhyb3VnaCkKIFJVTihhdWRpby5wbGF5KCkpCiBFVkVOVChwbGF5
aW5nKQotRVhQRUNURUQgKGludGVybmFscy5iZXN0TWVkaWFFbGVtZW50Rm9yU2hvd2luZ1BsYXli
YWNrQ29udHJvbHNNYW5hZ2VyKCJOb3dQbGF5aW5nIikgPT0gJ1tvYmplY3QgSFRNTEF1ZGlvRWxl
bWVudF0nKSBPSworRVhQRUNURUQgKGludGVybmFscy5iZXN0TWVkaWFFbGVtZW50Rm9yUmVtb3Rl
Q29udHJvbHMoIk5vd1BsYXlpbmciKSA9PSAnW29iamVjdCBIVE1MQXVkaW9FbGVtZW50XScpIE9L
CiBSVU4oaW50ZXJuYWxzLmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKHRydWUpKQogUlVO
KGF1ZGlvLmN1cnJlbnRUaW1lID0gYXVkaW8uZHVyYXRpb24gLSAwLjEpCiBFVkVOVChlbmRlZCkK
IFJVTihhdWRpby5zcmMgPSAiIikKIFJVTihhdWRpby5sb2FkKCkpCi1FWFBFQ1RFRCAoaW50ZXJu
YWxzLmJlc3RNZWRpYUVsZW1lbnRGb3JTaG93aW5nUGxheWJhY2tDb250cm9sc01hbmFnZXIoIk5v
d1BsYXlpbmciKSA9PSAnW29iamVjdCBIVE1MQXVkaW9FbGVtZW50XScpIE9LCitFWFBFQ1RFRCAo
aW50ZXJuYWxzLmJlc3RNZWRpYUVsZW1lbnRGb3JSZW1vdGVDb250cm9scygiTm93UGxheWluZyIp
ID09ICdbb2JqZWN0IEhUTUxBdWRpb0VsZW1lbnRdJykgT0sKIFJVTihhdWRpby5zcmMgPSBmaW5k
TWVkaWFGaWxlKCJhdWRpbyIsICJjb250ZW50L3Rlc3QiKSkKIFJVTihhdWRpby5sb2FkKCkpCiBF
VkVOVChjYW5wbGF5dGhyb3VnaCkKIFJVTihhdWRpby5wbGF5KCkpCiBFVkVOVChwbGF5aW5nKQot
RVhQRUNURUQgKGludGVybmFscy5iZXN0TWVkaWFFbGVtZW50Rm9yU2hvd2luZ1BsYXliYWNrQ29u
dHJvbHNNYW5hZ2VyKCJOb3dQbGF5aW5nIikgPT0gJ1tvYmplY3QgSFRNTEF1ZGlvRWxlbWVudF0n
KSBPSworRVhQRUNURUQgKGludGVybmFscy5iZXN0TWVkaWFFbGVtZW50Rm9yUmVtb3RlQ29udHJv
bHMoIk5vd1BsYXlpbmciKSA9PSAnW29iamVjdCBIVE1MQXVkaW9FbGVtZW50XScpIE9LCiBFTkQg
T0YgVEVTVAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9hdWRpby1iYWNrZ3JvdW5k
LXBsYXliYWNrLXBsYXlsaXN0Lmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS9hdWRpby1iYWNrZ3Jv
dW5kLXBsYXliYWNrLXBsYXlsaXN0Lmh0bWwKaW5kZXggZjcyOTEyNmIyNDRlMDljNTc1NzFkYzYz
MmY3YWZkMzkyM2ZmOWZkMS4uMWFlMzczZDRiYmI5NzgwMTNhNjFjZTFmN2MzZjI2YzhlOTYzYjk3
MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvbWVkaWEvYXVkaW8tYmFja2dyb3VuZC1wbGF5YmFj
ay1wbGF5bGlzdC5odG1sCisrKyBiL0xheW91dFRlc3RzL21lZGlhL2F1ZGlvLWJhY2tncm91bmQt
cGxheWJhY2stcGxheWxpc3QuaHRtbApAQCAtMTEsMTkgKzExLDE5IEBACiAgICAgICAgIGF3YWl0
IHdhaXRGb3IoYXVkaW8sICdjYW5wbGF5dGhyb3VnaCcpOwogICAgICAgICBydW5XaXRoS2V5RG93
bignYXVkaW8ucGxheSgpJyk7CiAgICAgICAgIGF3YWl0IHdhaXRGb3IoYXVkaW8sICdwbGF5aW5n
Jyk7Ci0gICAgICAgIHRlc3RFeHBlY3RlZCgnaW50ZXJuYWxzLmJlc3RNZWRpYUVsZW1lbnRGb3JT
aG93aW5nUGxheWJhY2tDb250cm9sc01hbmFnZXIoIk5vd1BsYXlpbmciKScsIGF1ZGlvKTsKKyAg
ICAgICAgdGVzdEV4cGVjdGVkKCdpbnRlcm5hbHMuYmVzdE1lZGlhRWxlbWVudEZvclJlbW90ZUNv
bnRyb2xzKCJOb3dQbGF5aW5nIiknLCBhdWRpbyk7CiAgICAgICAgIHJ1bignaW50ZXJuYWxzLmFw
cGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKHRydWUpJyk7CiAgICAgICAgIHJ1bignYXVkaW8u
Y3VycmVudFRpbWUgPSBhdWRpby5kdXJhdGlvbiAtIDAuMScpCiAgICAgICAgIGF3YWl0IHdhaXRG
b3IoYXVkaW8sICdlbmRlZCcpOwogICAgICAgICBydW4oJ2F1ZGlvLnNyYyA9ICIiJyk7CiAgICAg
ICAgIHJ1bignYXVkaW8ubG9hZCgpJyk7Ci0gICAgICAgIHRlc3RFeHBlY3RlZCgnaW50ZXJuYWxz
LmJlc3RNZWRpYUVsZW1lbnRGb3JTaG93aW5nUGxheWJhY2tDb250cm9sc01hbmFnZXIoIk5vd1Bs
YXlpbmciKScsIGF1ZGlvKTsKKyAgICAgICAgdGVzdEV4cGVjdGVkKCdpbnRlcm5hbHMuYmVzdE1l
ZGlhRWxlbWVudEZvclJlbW90ZUNvbnRyb2xzKCJOb3dQbGF5aW5nIiknLCBhdWRpbyk7CiAgICAg
ICAgIHJ1bignYXVkaW8uc3JjID0gZmluZE1lZGlhRmlsZSgiYXVkaW8iLCAiY29udGVudC90ZXN0
IiknKTsKICAgICAgICAgcnVuKCdhdWRpby5sb2FkKCknKTsKICAgICAgICAgYXdhaXQgd2FpdEZv
cihhdWRpbywgJ2NhbnBsYXl0aHJvdWdoJyk7CiAgICAgICAgIHJ1bignYXVkaW8ucGxheSgpJyk7
CiAgICAgICAgIGF3YWl0IHdhaXRGb3IoYXVkaW8sICdwbGF5aW5nJyk7Ci0gICAgICAgIHRlc3RF
eHBlY3RlZCgnaW50ZXJuYWxzLmJlc3RNZWRpYUVsZW1lbnRGb3JTaG93aW5nUGxheWJhY2tDb250
cm9sc01hbmFnZXIoIk5vd1BsYXlpbmciKScsIGF1ZGlvKTsKKyAgICAgICAgdGVzdEV4cGVjdGVk
KCdpbnRlcm5hbHMuYmVzdE1lZGlhRWxlbWVudEZvclJlbW90ZUNvbnRyb2xzKCJOb3dQbGF5aW5n
IiknLCBhdWRpbyk7CiAgICAgICAgIGVuZFRlc3QoKTsgICAgICAgIAogICAgIH0pOwogICAgIDwv
c2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtc2Vzc2lvbi9kZWZh
dWx0LWFjdGlvbkhhbmRsZXJzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL21lZGlhL21lZGlh
LXNlc3Npb24vZGVmYXVsdC1hY3Rpb25IYW5kbGVycy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YWM3OGI4YmFkZWY2MWJiYTVlZGFkODhmZDgxODM3NzM4YzMxYzY5YwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNlc3Npb24vZGVmYXVsdC1hY3Rpb25IYW5kbGVy
cy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMiBAQAorCitSVU4odmlkZW8uc3JjID0gZmluZE1l
ZGlhRmlsZSgidmlkZW8iLCAiLi4vY29udGVudC90ZXN0IikpCitFVkVOVChsb2FkZWRkYXRhKQor
VGVzdCB0aGF0IGRlZmF1bHQgbWVkaWEgZWxlbWVudCBhY3Rpb24gd2lsbCBiZSBydW4gd2hlbiBu
byBtZWRpYSBzZXNzaW9uIGhhbmRsZXJzIGV4aXN0IGZvciB0aGF0IGFjdGlvbi4KK0VYUEVDVEVE
ICh2aWRlby5wYXVzZWQgPT0gJ3RydWUnKSBPSworUlVOKGludGVybmFscy5zZW5kTWVkaWFTZXNz
aW9uQWN0aW9uKG5hdmlnYXRvci5tZWRpYVNlc3Npb24sIHthY3Rpb246ICJwbGF5In0pKQorRVhQ
RUNURUQgKHZpZGVvLnBhdXNlZCA9PSAnZmFsc2UnKSBPSworUlVOKGludGVybmFscy5zZW5kTWVk
aWFTZXNzaW9uQWN0aW9uKG5hdmlnYXRvci5tZWRpYVNlc3Npb24sIHthY3Rpb246ICJwYXVzZSJ9
KSkKK0VYUEVDVEVEICh2aWRlby5wYXVzZWQgPT0gJ3RydWUnKSBPSworUlVOKHZpZGVvLmN1cnJl
bnRUaW1lID0gMCkKK0VYUEVDVEVEICh2aWRlby5jdXJyZW50VGltZSA9PSAnMCcpIE9LCitSVU4o
aW50ZXJuYWxzLnNlbmRNZWRpYVNlc3Npb25BY3Rpb24obmF2aWdhdG9yLm1lZGlhU2Vzc2lvbiwg
e2FjdGlvbjogInNlZWt0byIsIHNlZWtUaW1lOiAxfSkpCitFWFBFQ1RFRCAodmlkZW8uY3VycmVu
dFRpbWUgPT0gJzEnKSBPSworUlVOKGludGVybmFscy5zZW5kTWVkaWFTZXNzaW9uQWN0aW9uKG5h
dmlnYXRvci5tZWRpYVNlc3Npb24sIHthY3Rpb246ICJzZWVrZm9yd2FyZCIsIHNlZWtPZmZzZXQ6
IDV9KSkKK0VYUEVDVEVEICh2aWRlby5jdXJyZW50VGltZSA9PSAnNicpIE9LCitSVU4oaW50ZXJu
YWxzLnNlbmRNZWRpYVNlc3Npb25BY3Rpb24obmF2aWdhdG9yLm1lZGlhU2Vzc2lvbiwge2FjdGlv
bjogInNlZWtiYWNrd2FyZCIsIHNlZWtPZmZzZXQ6IDV9KSkKK0VYUEVDVEVEICh2aWRlby5jdXJy
ZW50VGltZSA9PSAnMScpIE9LCitSVU4oaW50ZXJuYWxzLnNlbmRNZWRpYVNlc3Npb25BY3Rpb24o
bmF2aWdhdG9yLm1lZGlhU2Vzc2lvbiwge2FjdGlvbjogInBsYXkifSkpCitBQ1RJT046IHBsYXkK
K0VYUEVDVEVEICh2aWRlby5wYXVzZWQgPT0gJ3RydWUnKSBPSworRU5EIE9GIFRFU1QKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtc2Vzc2lvbi9kZWZhdWx0LWFjdGlvbkhh
bmRsZXJzLmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zZXNzaW9uL2RlZmF1bHQtYWN0
aW9uSGFuZGxlcnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40OGIzMjM1NWI0YzE0NThlNTc5ZGFlOWQ5NDg0
Y2UwYzQzYjBjNTNmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEt
c2Vzc2lvbi9kZWZhdWx0LWFjdGlvbkhhbmRsZXJzLmh0bWwKQEAgLTAsMCArMSw1NSBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDx0aXRsZT5kZWZhdWx0LWFjdGlvbkhh
bmRsZXJzPC90aXRsZT4KKyAgICA8c2NyaXB0IHNyYz0iLi4vdmlkZW8tdGVzdC5qcyI+PC9zY3Jp
cHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL21lZGlhLWZpbGUuanMiPjwvc2NyaXB0PgorICAgIDxz
Y3JpcHQ+CisKKyAgICBhc3luYyBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAgICBpZiAoIXdp
bmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgICAgIGZhaWxUZXN0KCdUaGlzIHRlc3QgcmVxdWly
ZXMgSW50ZXJuYWxzJyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICBmaW5kTWVkaWFFbGVtZW50KCk7CisgICAgICAgIHJ1bigndmlkZW8uc3JjID0gZmluZE1lZGlh
RmlsZSgidmlkZW8iLCAiLi4vY29udGVudC90ZXN0IiknKTsKKyAgICAgICAgYXdhaXQgd2FpdEZv
cih2aWRlbywgJ2xvYWRlZGRhdGEnKTsKKworICAgICAgICBjb25zb2xlV3JpdGUoJ1Rlc3QgdGhh
dCBkZWZhdWx0IG1lZGlhIGVsZW1lbnQgYWN0aW9uIHdpbGwgYmUgcnVuIHdoZW4gbm8gbWVkaWEg
c2Vzc2lvbiBoYW5kbGVycyBleGlzdCBmb3IgdGhhdCBhY3Rpb24uJyk7CisKKyAgICAgICAgdGVz
dEV4cGVjdGVkKCJ2aWRlby5wYXVzZWQiLCB0cnVlKTsKKworICAgICAgICBydW4oJ2ludGVybmFs
cy5zZW5kTWVkaWFTZXNzaW9uQWN0aW9uKG5hdmlnYXRvci5tZWRpYVNlc3Npb24sIHthY3Rpb246
ICJwbGF5In0pJyk7CisgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8ucGF1c2VkIiwgZmFsc2Up
OworCisgICAgICAgIHJ1bignaW50ZXJuYWxzLnNlbmRNZWRpYVNlc3Npb25BY3Rpb24obmF2aWdh
dG9yLm1lZGlhU2Vzc2lvbiwge2FjdGlvbjogInBhdXNlIn0pJyk7CisgICAgICAgIHRlc3RFeHBl
Y3RlZCgidmlkZW8ucGF1c2VkIiwgdHJ1ZSk7CisKKyAgICAgICAgcnVuKCd2aWRlby5jdXJyZW50
VGltZSA9IDAnKTsKKyAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5jdXJyZW50VGltZSIsIDAp
OworCisgICAgICAgIHJ1bignaW50ZXJuYWxzLnNlbmRNZWRpYVNlc3Npb25BY3Rpb24obmF2aWdh
dG9yLm1lZGlhU2Vzc2lvbiwge2FjdGlvbjogInNlZWt0byIsIHNlZWtUaW1lOiAxfSknKTsKKyAg
ICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5jdXJyZW50VGltZSIsIDEpOworCisgICAgICAgIHJ1
bignaW50ZXJuYWxzLnNlbmRNZWRpYVNlc3Npb25BY3Rpb24obmF2aWdhdG9yLm1lZGlhU2Vzc2lv
biwge2FjdGlvbjogInNlZWtmb3J3YXJkIiwgc2Vla09mZnNldDogNX0pJyk7CisgICAgICAgIHRl
c3RFeHBlY3RlZCgidmlkZW8uY3VycmVudFRpbWUiLCA2KTsKKworICAgICAgICBydW4oJ2ludGVy
bmFscy5zZW5kTWVkaWFTZXNzaW9uQWN0aW9uKG5hdmlnYXRvci5tZWRpYVNlc3Npb24sIHthY3Rp
b246ICJzZWVrYmFja3dhcmQiLCBzZWVrT2Zmc2V0OiA1fSknKTsKKyAgICAgICAgdGVzdEV4cGVj
dGVkKCJ2aWRlby5jdXJyZW50VGltZSIsIDEpOworCisgICAgICAgIG5hdmlnYXRvci5tZWRpYVNl
c3Npb24uc2V0QWN0aW9uSGFuZGxlcigicGxheSIsIGFjdGlvbkRldGFpbHMgPT4geworICAgICAg
ICAgICAgY29uc29sZVdyaXRlKGBBQ1RJT046ICR7YWN0aW9uRGV0YWlscy5hY3Rpb259YCk7Cisg
ICAgICAgIH0pOworICAgICAgICBydW4oJ2ludGVybmFscy5zZW5kTWVkaWFTZXNzaW9uQWN0aW9u
KG5hdmlnYXRvci5tZWRpYVNlc3Npb24sIHthY3Rpb246ICJwbGF5In0pJyk7CisgICAgICAgIC8v
IFBsYXliYWNrIHNob3VsZG4ndCBoYXZlIHN0YXJ0ZWQgaWYgYSBoYW5kbGVyIGZvciB0aGlzIGFj
dGlvbiB3YXMgZGVmaW5lZCBhbmQgaXQgZGlkIG5vdGhpbmcuCisgICAgICAgIHRlc3RFeHBlY3Rl
ZCgidmlkZW8ucGF1c2VkIiwgdHJ1ZSk7CisKKyAgICAgICAgZW5kVGVzdCgpOworICAgIH0KKyAg
ICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKyAgICA8dmlk
ZW8gY29udHJvbHMgcHJlbG9hZD0nYXV0byc+PC92aWRlbz4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9tZWRpYS92aWRlby1iZXN0LWVsZW1l
bnQtZm9yLXBsYXliYWNrLWNvbnRyb2xzLXB1cnBvc2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL21lZGlhL3ZpZGVvLWJlc3QtZWxlbWVudC1mb3ItcGxheWJhY2stY29u
dHJvbHMtcHVycG9zZS1leHBlY3RlZC50eHQKaW5kZXggOWFjMDEyNmRjNjAxNjkxMjJjMDQwMzZk
MjZiMjBlNTEzMjY5ZmIxZS4uMzI3ZjVkZWM4OWM4YjVmNDRlMzgwYWY4ZDA2NmZiYjQzYWQ4ZmU4
YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL21lZGlhL3ZpZGVvLWJlc3Qt
ZWxlbWVudC1mb3ItcGxheWJhY2stY29udHJvbHMtcHVycG9zZS1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL21lZGlhL3ZpZGVvLWJlc3QtZWxlbWVudC1mb3ItcGxh
eWJhY2stY29udHJvbHMtcHVycG9zZS1leHBlY3RlZC50eHQKQEAgLTEsMzggKzEsMzggQEAKIAog
VW5sb2FkZWQgdmlkZW8gZWxlbWVudHMgc2hvdWxkIG5vdCBiZSBjb25zaWRlcmVkIG1haW4gY29u
dGVudC4KLUVYUEVDVEVEIChpbnRlcm5hbHMuYmVzdE1lZGlhRWxlbWVudEZvclNob3dpbmdQbGF5
YmFja0NvbnRyb2xzTWFuYWdlcigiQ29udHJvbHNNYW5hZ2VyIikgPT0gJ251bGwnKSBPSworRVhQ
RUNURUQgKGludGVybmFscy5iZXN0TWVkaWFFbGVtZW50Rm9yUmVtb3RlQ29udHJvbHMoIkNvbnRy
b2xzTWFuYWdlciIpID09ICdudWxsJykgT0sKIAogTGFyZ2UsIGF1dG9wbGF5IHZpZGVvcyB3aXRo
IHZpZGVvIGFuZCBhdWRpbyBzaG91bGQgYmUgY29uc2lkZXJlZCBtYWluIGNvbnRlbnQuCiBSVU4o
dmlkZW8gPSBjcmVhdGVWaWRlbyh7YXV0b3BsYXk6IHRydWUsIHR5cGU6ICJhdWRpbyt2aWRlbyIs
IHNpemU6ICJsYXJnZSJ9KSkKIEVWRU5UKHBsYXlpbmcpCi1FWFBFQ1RFRCAoaW50ZXJuYWxzLmJl
c3RNZWRpYUVsZW1lbnRGb3JTaG93aW5nUGxheWJhY2tDb250cm9sc01hbmFnZXIoIkNvbnRyb2xz
TWFuYWdlciIpID09ICdbb2JqZWN0IEhUTUxWaWRlb0VsZW1lbnRdJykgT0sKK0VYUEVDVEVEIChp
bnRlcm5hbHMuYmVzdE1lZGlhRWxlbWVudEZvclJlbW90ZUNvbnRyb2xzKCJDb250cm9sc01hbmFn
ZXIiKSA9PSAnW29iamVjdCBIVE1MVmlkZW9FbGVtZW50XScpIE9LCiAKIFNtYWxsLCBhdXRvcGxh
eSB2aWRlb3Mgd2l0aCB2aWRlbyBhbmQgYXVkaW8gc2hvdWxkIGJlIGNvbnNpZGVyZWQgbWFpbiBj
b250ZW50LgogUlVOKHZpZGVvID0gY3JlYXRlVmlkZW8oe2F1dG9wbGF5OiB0cnVlLCB0eXBlOiAi
YXVkaW8rdmlkZW8iLCBzaXplOiAic21hbGwifSkpCiBFVkVOVChwbGF5aW5nKQotRVhQRUNURUQg
KGludGVybmFscy5iZXN0TWVkaWFFbGVtZW50Rm9yU2hvd2luZ1BsYXliYWNrQ29udHJvbHNNYW5h
Z2VyKCJDb250cm9sc01hbmFnZXIiKSA9PSAnbnVsbCcpIE9LCitFWFBFQ1RFRCAoaW50ZXJuYWxz
LmJlc3RNZWRpYUVsZW1lbnRGb3JSZW1vdGVDb250cm9scygiQ29udHJvbHNNYW5hZ2VyIikgPT0g
J251bGwnKSBPSwogCiBNdXRlZCBhdXRvcGxheSB2aWRlb3Mgc2hvdWxkIG5vdCBiZSBjb25zaWRl
cmVkIG1haW4gY29udGVudC4KIFJVTih2aWRlbyA9IGNyZWF0ZVZpZGVvKHthdXRvcGxheTogdHJ1
ZSwgbXV0ZWQ6IHRydWUsIHR5cGU6ICJhdWRpbyt2aWRlbyIsIHNpemU6ICJsYXJnZSJ9KSkKIEVW
RU5UKHBsYXlpbmcpCi1FWFBFQ1RFRCAoaW50ZXJuYWxzLmJlc3RNZWRpYUVsZW1lbnRGb3JTaG93
aW5nUGxheWJhY2tDb250cm9sc01hbmFnZXIoIkNvbnRyb2xzTWFuYWdlciIpID09ICdudWxsJykg
T0sKK0VYUEVDVEVEIChpbnRlcm5hbHMuYmVzdE1lZGlhRWxlbWVudEZvclJlbW90ZUNvbnRyb2xz
KCJDb250cm9sc01hbmFnZXIiKSA9PSAnbnVsbCcpIE9LCiAKIFZpZGVvLW9ubHkgYXV0b3BsYXkg
dmlkZW9zIHNob3VsZCBub3QgYmUgY29uc2lkZXJlZCBtYWluIGNvbnRlbnQuCiBSVU4odmlkZW8g
PSBjcmVhdGVWaWRlbyh7YXV0b3BsYXk6IHRydWUsIHR5cGU6ICJ2aWRlbyIsIHNpemU6ICJsYXJn
ZSJ9KSkKIEVWRU5UKHBsYXlpbmcpCi1FWFBFQ1RFRCAoaW50ZXJuYWxzLmJlc3RNZWRpYUVsZW1l
bnRGb3JTaG93aW5nUGxheWJhY2tDb250cm9sc01hbmFnZXIoIkNvbnRyb2xzTWFuYWdlciIpID09
ICdudWxsJykgT0sKK0VYUEVDVEVEIChpbnRlcm5hbHMuYmVzdE1lZGlhRWxlbWVudEZvclJlbW90
ZUNvbnRyb2xzKCJDb250cm9sc01hbmFnZXIiKSA9PSAnbnVsbCcpIE9LCiAKIE5vbi1wbGF5aW5n
IHZpZGVvcyBzaG91bGQgbm90IGJlIGNvbnNpZGVyZWQgbWFpbiBjb250ZW50LgogUlVOKHZpZGVv
ID0gY3JlYXRlVmlkZW8oe3R5cGU6ICJhdWRpbyt2aWRlbyIsIHNpemU6ICJsYXJnZSJ9KSkKIEVW
RU5UKGNhbnBsYXl0aHJvdWdoKQotRVhQRUNURUQgKGludGVybmFscy5iZXN0TWVkaWFFbGVtZW50
Rm9yU2hvd2luZ1BsYXliYWNrQ29udHJvbHNNYW5hZ2VyKCJDb250cm9sc01hbmFnZXIiKSA9PSAn
bnVsbCcpIE9LCitFWFBFQ1RFRCAoaW50ZXJuYWxzLmJlc3RNZWRpYUVsZW1lbnRGb3JSZW1vdGVD
b250cm9scygiQ29udHJvbHNNYW5hZ2VyIikgPT0gJ251bGwnKSBPSwogCiBMYXJnZSwgYXV0b3Bs
YXkgdmlkZW9zIG91dHNpZGUgZnVsbHNjcmVlbiBlbGVtZW50IHNob3VsZCBub3QgYmUgY29uc2lk
ZXJlZCBtYWluIGNvbnRlbnQKIFJVTih2aWRlbyA9IGNyZWF0ZVZpZGVvKHthdXRvcGxheTogdHJ1
ZSwgbXV0ZWQ6IHRydWUsIHR5cGU6ICJhdWRpbyt2aWRlbyIsIHNpemU6ICJsYXJnZSJ9KSkKIEVW
RU5UKHBsYXlpbmcpCiBSVU4oZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2Z1bGxzY3JlZW4iKS53
ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbigpKQogRVZFTlQod2Via2l0ZnVsbHNjcmVlbmNoYW5nZSkK
LUVYUEVDVEVEIChpbnRlcm5hbHMuYmVzdE1lZGlhRWxlbWVudEZvclNob3dpbmdQbGF5YmFja0Nv
bnRyb2xzTWFuYWdlcigiQ29udHJvbHNNYW5hZ2VyIikgPT0gJ251bGwnKSBPSworRVhQRUNURUQg
KGludGVybmFscy5iZXN0TWVkaWFFbGVtZW50Rm9yUmVtb3RlQ29udHJvbHMoIkNvbnRyb2xzTWFu
YWdlciIpID09ICdudWxsJykgT0sKIFJVTihkb2N1bWVudC53ZWJraXRFeGl0RnVsbHNjcmVlbigp
KQogRVZFTlQod2Via2l0ZnVsbHNjcmVlbmNoYW5nZSkKIApAQCAtNDEsNyArNDEsNyBAQCBSVU4o
dmlkZW8gPSBjcmVhdGVWaWRlbyh7YXV0b3BsYXk6IHRydWUsIHR5cGU6ICJhdWRpbyt2aWRlbyIs
IHNpemU6ICJsYXJnZSJ9KSkKIEVWRU5UKHBsYXlpbmcpCiBSVU4oZG9jdW1lbnQucXVlcnlTZWxl
Y3RvcigiI3RhcmdldCIpLndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKCkpCiBFVkVOVCh3ZWJraXRm
dWxsc2NyZWVuY2hhbmdlKQotRVhQRUNURUQgKGludGVybmFscy5iZXN0TWVkaWFFbGVtZW50Rm9y
U2hvd2luZ1BsYXliYWNrQ29udHJvbHNNYW5hZ2VyKCJDb250cm9sc01hbmFnZXIiKSA9PSAnW29i
amVjdCBIVE1MVmlkZW9FbGVtZW50XScpIE9LCitFWFBFQ1RFRCAoaW50ZXJuYWxzLmJlc3RNZWRp
YUVsZW1lbnRGb3JSZW1vdGVDb250cm9scygiQ29udHJvbHNNYW5hZ2VyIikgPT0gJ1tvYmplY3Qg
SFRNTFZpZGVvRWxlbWVudF0nKSBPSwogUlVOKGRvY3VtZW50LndlYmtpdEV4aXRGdWxsc2NyZWVu
KCkpCiBFVkVOVCh3ZWJraXRmdWxsc2NyZWVuY2hhbmdlKQogCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvbWVkaWEvdmlkZW8tYmVzdC1lbGVtZW50LWZvci1wbGF5YmFjay1j
b250cm9scy1wdXJwb3NlLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvbWVkaWEvdmlk
ZW8tYmVzdC1lbGVtZW50LWZvci1wbGF5YmFjay1jb250cm9scy1wdXJwb3NlLmh0bWwKaW5kZXgg
MmY2N2IxMjBmYzc5YWE0MzNlY2Y3ZTMwMjdjZGEyYjJkZDA2NDQ4ZC4uYmE5MDgzNGFhYTk1MTJj
NjExYmIxMTkyY2VlYTJlZWYxMmQ1YzUyZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL21lZGlhL3ZpZGVvLWJlc3QtZWxlbWVudC1mb3ItcGxheWJhY2stY29udHJvbHMtcHVy
cG9zZS5odG1sCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9tZWRpYS92aWRlby1iZXN0
LWVsZW1lbnQtZm9yLXBsYXliYWNrLWNvbnRyb2xzLXB1cnBvc2UuaHRtbApAQCAtNjMsNDIgKzYz
LDQyIEBACiAgICAgICAgIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgY29uc29sZVdyaXRlKCdV
bmxvYWRlZCB2aWRlbyBlbGVtZW50cyBzaG91bGQgbm90IGJlIGNvbnNpZGVyZWQgbWFpbiBjb250
ZW50LicpOwogICAgICAgICAgICAgdmlkZW8gPSBjcmVhdGVWaWRlbygpOwotICAgICAgICAgICAg
dGVzdEV4cGVjdGVkKCdpbnRlcm5hbHMuYmVzdE1lZGlhRWxlbWVudEZvclNob3dpbmdQbGF5YmFj
a0NvbnRyb2xzTWFuYWdlcigiQ29udHJvbHNNYW5hZ2VyIiknLCBudWxsKQorICAgICAgICAgICAg
dGVzdEV4cGVjdGVkKCdpbnRlcm5hbHMuYmVzdE1lZGlhRWxlbWVudEZvclJlbW90ZUNvbnRyb2xz
KCJDb250cm9sc01hbmFnZXIiKScsIG51bGwpCiAgICAgICAgIH0sCiAKICAgICAgICAgYXN5bmMg
ZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICBjb25zb2xlV3JpdGUoJ0xhcmdlLCBhdXRvcGxheSB2
aWRlb3Mgd2l0aCB2aWRlbyBhbmQgYXVkaW8gc2hvdWxkIGJlIGNvbnNpZGVyZWQgbWFpbiBjb250
ZW50LicpCiAgICAgICAgICAgICBydW4oJ3ZpZGVvID0gY3JlYXRlVmlkZW8oe2F1dG9wbGF5OiB0
cnVlLCB0eXBlOiAiYXVkaW8rdmlkZW8iLCBzaXplOiAibGFyZ2UifSknKTsKICAgICAgICAgICAg
IGF3YWl0IHdhaXRGb3IodmlkZW8sICdwbGF5aW5nJyk7Ci0gICAgICAgICAgICB0ZXN0RXhwZWN0
ZWQoJ2ludGVybmFscy5iZXN0TWVkaWFFbGVtZW50Rm9yU2hvd2luZ1BsYXliYWNrQ29udHJvbHNN
YW5hZ2VyKCJDb250cm9sc01hbmFnZXIiKScsIHZpZGVvKQorICAgICAgICAgICAgdGVzdEV4cGVj
dGVkKCdpbnRlcm5hbHMuYmVzdE1lZGlhRWxlbWVudEZvclJlbW90ZUNvbnRyb2xzKCJDb250cm9s
c01hbmFnZXIiKScsIHZpZGVvKQogICAgICAgICB9LAogCiAgICAgICAgIGFzeW5jIGZ1bmN0aW9u
KCkgewogICAgICAgICAgICAgY29uc29sZVdyaXRlKCdTbWFsbCwgYXV0b3BsYXkgdmlkZW9zIHdp
dGggdmlkZW8gYW5kIGF1ZGlvIHNob3VsZCBiZSBjb25zaWRlcmVkIG1haW4gY29udGVudC4nKQog
ICAgICAgICAgICAgcnVuKCd2aWRlbyA9IGNyZWF0ZVZpZGVvKHthdXRvcGxheTogdHJ1ZSwgdHlw
ZTogImF1ZGlvK3ZpZGVvIiwgc2l6ZTogInNtYWxsIn0pJyk7CiAgICAgICAgICAgICBhd2FpdCB3
YWl0Rm9yKHZpZGVvLCAncGxheWluZycpOwotICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdpbnRl
cm5hbHMuYmVzdE1lZGlhRWxlbWVudEZvclNob3dpbmdQbGF5YmFja0NvbnRyb2xzTWFuYWdlcigi
Q29udHJvbHNNYW5hZ2VyIiknLCBudWxsKQorICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdpbnRl
cm5hbHMuYmVzdE1lZGlhRWxlbWVudEZvclJlbW90ZUNvbnRyb2xzKCJDb250cm9sc01hbmFnZXIi
KScsIG51bGwpCiAgICAgICAgIH0sCiAKICAgICAgICAgYXN5bmMgZnVuY3Rpb24oKSB7CiAgICAg
ICAgICAgICBjb25zb2xlV3JpdGUoJ011dGVkIGF1dG9wbGF5IHZpZGVvcyBzaG91bGQgbm90IGJl
IGNvbnNpZGVyZWQgbWFpbiBjb250ZW50LicpCiAgICAgICAgICAgICBydW4oJ3ZpZGVvID0gY3Jl
YXRlVmlkZW8oe2F1dG9wbGF5OiB0cnVlLCBtdXRlZDogdHJ1ZSwgdHlwZTogImF1ZGlvK3ZpZGVv
Iiwgc2l6ZTogImxhcmdlIn0pJyk7CiAgICAgICAgICAgICBhd2FpdCB3YWl0Rm9yKHZpZGVvLCAn
cGxheWluZycpOwotICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdpbnRlcm5hbHMuYmVzdE1lZGlh
RWxlbWVudEZvclNob3dpbmdQbGF5YmFja0NvbnRyb2xzTWFuYWdlcigiQ29udHJvbHNNYW5hZ2Vy
IiknLCBudWxsKQorICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdpbnRlcm5hbHMuYmVzdE1lZGlh
RWxlbWVudEZvclJlbW90ZUNvbnRyb2xzKCJDb250cm9sc01hbmFnZXIiKScsIG51bGwpCiAgICAg
ICAgIH0sCiAKICAgICAgICAgYXN5bmMgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICBjb25zb2xl
V3JpdGUoJ1ZpZGVvLW9ubHkgYXV0b3BsYXkgdmlkZW9zIHNob3VsZCBub3QgYmUgY29uc2lkZXJl
ZCBtYWluIGNvbnRlbnQuJykKICAgICAgICAgICAgIHJ1bigndmlkZW8gPSBjcmVhdGVWaWRlbyh7
YXV0b3BsYXk6IHRydWUsIHR5cGU6ICJ2aWRlbyIsIHNpemU6ICJsYXJnZSJ9KScpOwogICAgICAg
ICAgICAgYXdhaXQgd2FpdEZvcih2aWRlbywgJ3BsYXlpbmcnKTsKLSAgICAgICAgICAgIHRlc3RF
eHBlY3RlZCgnaW50ZXJuYWxzLmJlc3RNZWRpYUVsZW1lbnRGb3JTaG93aW5nUGxheWJhY2tDb250
cm9sc01hbmFnZXIoIkNvbnRyb2xzTWFuYWdlciIpJywgbnVsbCkKKyAgICAgICAgICAgIHRlc3RF
eHBlY3RlZCgnaW50ZXJuYWxzLmJlc3RNZWRpYUVsZW1lbnRGb3JSZW1vdGVDb250cm9scygiQ29u
dHJvbHNNYW5hZ2VyIiknLCBudWxsKQogICAgICAgICB9LAogCiAgICAgICAgIGFzeW5jIGZ1bmN0
aW9uKCkgewogICAgICAgICAgICAgY29uc29sZVdyaXRlKCdOb24tcGxheWluZyB2aWRlb3Mgc2hv
dWxkIG5vdCBiZSBjb25zaWRlcmVkIG1haW4gY29udGVudC4nKQogICAgICAgICAgICAgcnVuKCd2
aWRlbyA9IGNyZWF0ZVZpZGVvKHt0eXBlOiAiYXVkaW8rdmlkZW8iLCBzaXplOiAibGFyZ2UifSkn
KTsKICAgICAgICAgICAgIGF3YWl0IHdhaXRGb3IodmlkZW8sICdjYW5wbGF5dGhyb3VnaCcpOwot
ICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdpbnRlcm5hbHMuYmVzdE1lZGlhRWxlbWVudEZvclNo
b3dpbmdQbGF5YmFja0NvbnRyb2xzTWFuYWdlcigiQ29udHJvbHNNYW5hZ2VyIiknLCBudWxsKQor
ICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdpbnRlcm5hbHMuYmVzdE1lZGlhRWxlbWVudEZvclJl
bW90ZUNvbnRyb2xzKCJDb250cm9sc01hbmFnZXIiKScsIG51bGwpCiAgICAgICAgIH0sCiAKICAg
ICAgICAgYXN5bmMgZnVuY3Rpb24oKSB7CkBAIC0xMDYsNyArMTA2LDcgQEAKICAgICAgICAgICAg
IHJ1bigndmlkZW8gPSBjcmVhdGVWaWRlbyh7YXV0b3BsYXk6IHRydWUsIG11dGVkOiB0cnVlLCB0
eXBlOiAiYXVkaW8rdmlkZW8iLCBzaXplOiAibGFyZ2UifSknKTsKICAgICAgICAgICAgIGF3YWl0
IHdhaXRGb3IodmlkZW8sICdwbGF5aW5nJyk7CiAgICAgICAgICAgICBhd2FpdCBlbnRlckZ1bGxz
Y3JlZW4oJyNmdWxsc2NyZWVuJyk7Ci0gICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ2ludGVybmFs
cy5iZXN0TWVkaWFFbGVtZW50Rm9yU2hvd2luZ1BsYXliYWNrQ29udHJvbHNNYW5hZ2VyKCJDb250
cm9sc01hbmFnZXIiKScsIG51bGwpOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdpbnRlcm5h
bHMuYmVzdE1lZGlhRWxlbWVudEZvclJlbW90ZUNvbnRyb2xzKCJDb250cm9sc01hbmFnZXIiKScs
IG51bGwpOwogICAgICAgICAgICAgYXdhaXQgZXhpdEZ1bGxzY3JlZW4oKTsKICAgICAgICAgfSwK
IApAQCAtMTE1LDcgKzExNSw3IEBACiAgICAgICAgICAgICBydW4oJ3ZpZGVvID0gY3JlYXRlVmlk
ZW8oe2F1dG9wbGF5OiB0cnVlLCB0eXBlOiAiYXVkaW8rdmlkZW8iLCBzaXplOiAibGFyZ2UifSkn
KTsKICAgICAgICAgICAgIGF3YWl0IHdhaXRGb3IodmlkZW8sICdwbGF5aW5nJyk7CiAgICAgICAg
ICAgICBhd2FpdCBlbnRlckZ1bGxzY3JlZW4oJyN0YXJnZXQnKTsKLSAgICAgICAgICAgIHRlc3RF
eHBlY3RlZCgnaW50ZXJuYWxzLmJlc3RNZWRpYUVsZW1lbnRGb3JTaG93aW5nUGxheWJhY2tDb250
cm9sc01hbmFnZXIoIkNvbnRyb2xzTWFuYWdlciIpJywgdmlkZW8pOworICAgICAgICAgICAgdGVz
dEV4cGVjdGVkKCdpbnRlcm5hbHMuYmVzdE1lZGlhRWxlbWVudEZvclJlbW90ZUNvbnRyb2xzKCJD
b250cm9sc01hbmFnZXIiKScsIHZpZGVvKTsKICAgICAgICAgICAgIGF3YWl0IGV4aXRGdWxsc2Ny
ZWVuKCk7CiAgICAgICAgIH0sCiAgICAgXTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425619</attachid>
            <date>2021-04-09 08:24:55 -0700</date>
            <delta_ts>2021-04-09 17:45:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224278-20210410012453.patch</filename>
            <type>text/plain</type>
            <size>41715</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NzU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGJjMzYzNWI0ZGQ2MTM2
MTcxYWVkNTE5MzZlMzY4YTVmMGQzYTVhMi4uOTI4ZjUwOTJhNzFhODQ1OTBlMDVhMGFlMjNkYTQw
NWU1ZmIxNDQzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDIxLTA0LTA5ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgTWVkaWEgU2Vzc2lvbiBh
Y3Rpb24gc2hvdWxkIGRlZmF1bHQgdG8gdGhlIE1lZGlhRWxlbWVudCdzIGRlZmF1bHQgd2hlbiBu
byBNZWRpYVNlc3Npb24gaGFuZGxlciBhcmUgc2V0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQyNzgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc2
MzM5ODQxPgorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQgLgorCisgICAgICAg
IFdoZW4gYSBtZWRpYSBzZXNzaW9uIGRvZXNuJ3QgZXhwbGljaXRseSBkZWZpbmUgYW4gYWN0aW9u
IGhhbmRsZXIsIHdlIHVzZSB0aGUgbWVkaWEgZWxlbWVudAorICAgICAgICBkZWZhdWx0IGFjdGlv
biBvZiB0aGUgc2FtZSB0eXBlLgorICAgICAgICBNZWRpYSBTZXNzaW9uIGRvZXNuJ3QgdHJhY2sg
YSBwYXJ0aWN1bGFyIG1lZGlhIGVsZW1lbnQsIGluc3RlYWQgaXQgbG9vc2VseSBkZWZpbmVzIGEg
Z3Vlc3NlZCBwbGF5YmFjayBzdGF0ZQorICAgICAgICB0aGF0IHRyYWNrcyBpZiBzb21lIGVsZW1l
bnQgaW4gdGhlIGN1cnJlbnQgZG9jdW1lbnQgaXMgcGxheWluZyBhbmQgbm90IG11dGVkIG9yIG90
aGVyd2lzZSBwYXVzZWQuCisgICAgICAgIChzZWUgaHR0cHM6Ly93M2MuZ2l0aHViLmlvL21lZGlh
c2Vzc2lvbi8jcGxheWJhY2stc3RhdGUtbW9kZWwpCisgICAgICAgIFdlIHRoZXJlZm9yZSBuZWVk
IHRvIGRldGVybWluZSB3aGF0IGlzIGN1cnJlbnRseSB0aGUgbW9zdCBzdWl0YWJsZSBtZWRpYSBl
bGVtZW50IGF2YWlsYWJsZSBpbiB0aGlzIGRvY3VtZW50LgorICAgICAgICBVbmxpa2UgdGhlIE1l
ZGlhIENvbnRyb2xsZXIgYW5kIHRoZSBOb3cgUGxheWluZyBwb2xpY3kgdGhhdCB3aWxsIG9ubHkg
ZXZlciBzZWxlY3QgYSBtZWRpYQorICAgICAgICBpZiBpdCBpcyBjdXJyZW50bHkgcGxheWluZyBh
bmQgbm90IG11dGVkLCBmb3IgdGhlIE1lZGlhIFNlc3Npb24gd2UgbWF5IGhhdmUgdG8gaW50ZXJh
Y3Qgd2l0aCBwYXVzZWQgbWVkaWEgZWxlbWVudHMuCisgICAgICAgIEZvciB0aGlzIHdlIGFkZCBh
IG5ldyBQbGF5YmFja0NvbnRyb2xzUHVycG9zZSBuYW1lZCBNZWRpYVNlc3Npb24gZGVmaW5pbmcg
bmV3IHNlYXJjaCBjcml0ZXJpYXMuCisgICAgICAgIEEgbWVkaWEgZWxlbWVudCB3aWxsIGJlIHVw
IGZvciBzZWxlY3Rpb24gaWYgaXQncyBwbGF5YWJsZSAoYWNjb3JkaW5nIHRvIGF1dG9wbGF5IHBv
bGljeSkuIEZyb20gdGhlbiwKKyAgICAgICAgdGhlIGJlc3QgZWxlbWVudCB3aWxsIGJlIHNlbGVj
dGVkIGFjY29yaW5nIHRvIGl0cyB2aXNpYmlsaXR5LCBpdHMgc2l6ZSwgaWYgaXQncyBiZWVpbmcg
cGxheWVkIHByZXZpb3VzbHkgYW5kCisgICAgICAgIHRoZSBsYXN0IHRpbWUgaXQgd2FzIGludGVy
YWN0ZWQgd2l0aC4KKworICAgICAgICBUZXN0OiBtZWRpYS9tZWRpYS1zZXNzaW9uL2RlZmF1bHQt
YWN0aW9uSGFuZGxlcnMuaHRtbAorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVk
aWFTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBsYXRmb3JtQ29tbWFuZEZvck1lZGlh
U2Vzc2lvbkFjdGlvbik6IE5ldyBjb252ZW5pZW5jZSBtZXRob2QgdG8gY29udmVydCBvbmUgZGF0
YXR5cGUgaW50byBhbm90aGVyLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uOjpjYWxs
QWN0aW9uSGFuZGxlcik6IFVzZSB1c2VyIGRlZmluZWQgaGFuZGxlciBpZiBwcmVzZW50IG9yIHJ1
biB0aGUgcmVsYXRlZCBhY3Rpb24gb24KKyAgICAgICAgdGhlIG1vc3Qgc3VpdGFibGUgbWVkaWEg
ZWxlbWVudAorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uOjphY3RpdmVNZWRpYUVsZW1l
bnQgY29uc3QpOiBEZXRlcm1pbmUgdGhlIGN1cnJlbnRseSBhY3RpdmUgbWVkaWEgZWxlbWVudCBp
biB0aGUgY3VycmVudAorICAgICAgICBNZWRpYSBTZXNzaW9uJ3MgZG9jdW1lbnQuCisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmg6CisgICAgICAgICogaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1lZGlhRWxlbWVudFNlc3Np
b25JbmZvRm9yU2Vzc2lvbik6IEFkZCBuZXcgaGFzRXZlck5vdGlmaWVkQWJvdXRQbGF5aW5nIG1l
bWJlci4KKyAgICAgICAgKFdlYkNvcmU6OnByZWZlck1lZGlhQ29udHJvbHNGb3JDYW5kaWRhdGVT
ZXNzaW9uT3Zlck90aGVyQ2FuZGlkYXRlU2Vzc2lvbik6IEFtZW5kIHNvcnRpbmcgYWxnb3JpdGht
IHRvIGNhdGVyCisgICAgICAgIGZvciB0aGUgTWVkaWFTZXNzaW9uIGNyaXRlcmlhcyBkZXNjcmli
ZWQgYWJvdmUuCisgICAgICAgIChXZWJDb3JlOjptZWRpYVNlc3Npb25NYXlCZUNvbmZ1c2VkV2l0
aE1haW5Db250ZW50KTogV2hlbiB1c2luZyBNZWRpYVNlc3Npb24gcHVycG9zZSwgdGhlcmUgaXMg
bm8gcG9zc2libGUKKyAgICAgICAgYW1iaWd1aXR5LCBhbWVuZCBhcyBzdWNoLgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6YmVzdE1lZGlhRWxlbWVudEZvclJlbW90ZUNvbnRy
b2xzKTogUmVuYW1lZCBmcm9tIGJlc3RNZWRpYUVsZW1lbnRGb3JTaG93aW5nUGxheWJhY2tDb250
cm9sc01hbmFnZXIKKyAgICAgICAgbWV0aG9kIHRvIGJldHRlciBtYXRjaCBob3cgdGhlIG1ldGhv
ZCBpcyBhY3R1YWxseSB1c2VkLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgor
ICAgICAgICAqIGh0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUVsZW1lbnRTZXNzaW9uOjpjYW5TaG93Q29udHJvbHNNYW5hZ2VyIGNvbnN0KTogQW1l
bmQgZm9yIG5ldyBNZWRpYSBTZXNzaW9uIGNyaXRlcmlhcy4KKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhRWxlbWVudFNlc3Npb246OmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZCk6IEFsd2F5
cyBsZXQgTWVkaWFTZXNzaW9uIG1hbmFnZSB0aGUgYWN0aW9ucyBoYW5kbGluZy4KKyAgICAgICAg
KiBodG1sL01lZGlhRWxlbWVudFNlc3Npb24uaDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOiAK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnBsYXliYWNrQ29udHJvbHNNYW5hZ2VyVXBkYXRlVGlt
ZXJGaXJlZCk6IGFtZW5kIGZvbGxvd2luZyBtZXRob2QgcmVuYW1lLgorICAgICAgICAqIHBsYXRm
b3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6bm93UGxheWluZ0VsaWdpYmxlU2Vzc2lv
bik6IGFtZW5kIGZvbGxvd2luZyBtZXRob2QgcmVuYW1lLgorICAgICAgICAqIHRlc3RpbmcvSW50
ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6YmVzdE1lZGlhRWxlbWVu
dEZvclJlbW90ZUNvbnRyb2xzKTogUmVuYW1lZCBmcm9tIGJlc3RNZWRpYUVsZW1lbnRGb3JTaG93
aW5nUGxheWJhY2tDb250cm9sc01hbmFnZXIgYXMgYWJvdmUuCisgICAgICAgIChXZWJDb3JlOjpJ
bnRlcm5hbHM6OnNlbmRNZWRpYVNlc3Npb25BY3Rpb24pOiBhbWVuZCBmb2xsb3dpbmcgbWV0aG9k
IHJlbmFtZS4KKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOiBSZW5hbWUgbWV0aG9kCisg
ICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOiBSZW5hbWUgbWV0aG9kCisKIDIwMjEtMDQt
MDkgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAg
IFtHVEtdW1dQRV0gQnVtcCBsaWJzb3VwMyB2ZXJzaW9uIHRvIDIuOTkuMwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5jcHAKaW5kZXgg
MGU2MmRkYjMwZDMwYTViZTljNmU3MzA5NGIzM2JiMzZhMDcyMjAzNy4uODljNjljOGQzMTE4YzM4
NTUzODhhMWRjNWFmMDE4ZDEzYTYwMjg2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uY3BwCkBAIC0zMCw2ICszMCw3IEBACiAK
ICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVk
ZSAiSFRNTE1lZGlhRWxlbWVudC5oIgogI2luY2x1ZGUgIkpTTWVkaWFQb3NpdGlvblN0YXRlLmgi
CiAjaW5jbHVkZSAiSlNNZWRpYVNlc3Npb25BY3Rpb24uaCIKICNpbmNsdWRlICJKU01lZGlhU2Vz
c2lvblBsYXliYWNrU3RhdGUuaCIKQEAgLTc2LDYgKzc3LDUzIEBAIHN0YXRpYyBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlIHBsYXRmb3JtQ29tbWFuZEZvck1l
ZGlhU2VzCiAgICAgcmV0dXJuIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpOb0NvbW1hbmQ7CiB9CiAK
K3N0YXRpYyBPcHRpb25hbDxzdGQ6OnBhaXI8UGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNv
bnRyb2xDb21tYW5kVHlwZSwgUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbW1hbmRBcmd1
bWVudD4+IHBsYXRmb3JtQ29tbWFuZEZvck1lZGlhU2Vzc2lvbkFjdGlvbihjb25zdCBNZWRpYVNl
c3Npb25BY3Rpb25EZXRhaWxzJiBhY3Rpb25EZXRhaWxzKQoreworICAgIFBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUgY29tbWFuZCA9IFBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpOb0NvbW1hbmQ7CisgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbW1h
bmRBcmd1bWVudCBhcmd1bWVudDsKKworICAgIHN3aXRjaCAoYWN0aW9uRGV0YWlscy5hY3Rpb24p
IHsKKyAgICBjYXNlIE1lZGlhU2Vzc2lvbkFjdGlvbjo6UGxheToKKyAgICAgICAgY29tbWFuZCA9
IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF5Q29tbWFuZDsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBNZWRpYVNlc3Npb25BY3Rpb246OlBhdXNlOgorICAgICAgICBjb21tYW5kID0gUGxhdGZv
cm1NZWRpYVNlc3Npb246OlBhdXNlQ29tbWFuZDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBN
ZWRpYVNlc3Npb25BY3Rpb246OlNlZWtiYWNrd2FyZDoKKyAgICAgICAgY29tbWFuZCA9IFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpTa2lwQmFja3dhcmRDb21tYW5kOworICAgICAgICBhcmd1bWVudC50
aW1lID0gYWN0aW9uRGV0YWlscy5zZWVrT2Zmc2V0OworICAgICAgICBicmVhazsKKyAgICBjYXNl
IE1lZGlhU2Vzc2lvbkFjdGlvbjo6U2Vla2ZvcndhcmQ6CisgICAgICAgIGNvbW1hbmQgPSBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6U2tpcEZvcndhcmRDb21tYW5kOworICAgICAgICBhcmd1bWVudC50
aW1lID0gYWN0aW9uRGV0YWlscy5zZWVrT2Zmc2V0OworICAgICAgICBicmVhazsKKyAgICBjYXNl
IE1lZGlhU2Vzc2lvbkFjdGlvbjo6UHJldmlvdXN0cmFjazoKKyAgICAgICAgY29tbWFuZCA9IFBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpQcmV2aW91c1RyYWNrQ29tbWFuZDsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBNZWRpYVNlc3Npb25BY3Rpb246Ok5leHR0cmFjazoKKyAgICAgICAgY29tbWFu
ZCA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpOZXh0VHJhY2tDb21tYW5kOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIE1lZGlhU2Vzc2lvbkFjdGlvbjo6U2tpcGFkOgorICAgICAgICAvLyBOb3Qg
c3VwcG9ydGVkIGF0IHByZXNlbnQuCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTWVkaWFTZXNz
aW9uQWN0aW9uOjpTdG9wOgorICAgICAgICBjb21tYW5kID0gUGxhdGZvcm1NZWRpYVNlc3Npb246
OlN0b3BDb21tYW5kOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE1lZGlhU2Vzc2lvbkFjdGlv
bjo6U2Vla3RvOgorICAgICAgICBjb21tYW5kID0gUGxhdGZvcm1NZWRpYVNlc3Npb246OlNlZWtU
b1BsYXliYWNrUG9zaXRpb25Db21tYW5kOworICAgICAgICBhcmd1bWVudC50aW1lID0gYWN0aW9u
RGV0YWlscy5zZWVrVGltZTsKKyAgICAgICAgYXJndW1lbnQuZmFzdFNlZWsgPSBhY3Rpb25EZXRh
aWxzLmZhc3RTZWVrOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE1lZGlhU2Vzc2lvbkFjdGlv
bjo6U2V0dHJhY2s6CisgICAgICAgIC8vIE5vdCBzdXBwb3J0ZWQgYXQgcHJlc2VudC4KKyAgICAg
ICAgYnJlYWs7CisgICAgfQorICAgIGlmIChjb21tYW5kID09IFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpOb0NvbW1hbmQpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICByZXR1cm4gc3RkOjptYWtl
X3BhaXIoY29tbWFuZCwgYXJndW1lbnQpOworfQorCiBSZWY8TWVkaWFTZXNzaW9uPiBNZWRpYVNl
c3Npb246OmNyZWF0ZShOYXZpZ2F0b3ImIG5hdmlnYXRvcikKIHsKICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBNZWRpYVNlc3Npb24obmF2aWdhdG9yKSk7CkBAIC0xOTksMjAgKzI0NywyMSBAQCB2
b2lkIE1lZGlhU2Vzc2lvbjo6c2V0QWN0aW9uSGFuZGxlcihNZWRpYVNlc3Npb25BY3Rpb24gYWN0
aW9uLCBSZWZQdHI8TWVkaWFTZXNzaQogICAgIG5vdGlmeUFjdGlvbkhhbmRsZXJPYnNlcnZlcnMo
KTsKIH0KIAotYm9vbCBNZWRpYVNlc3Npb246Omhhc0FjdGlvbkhhbmRsZXIoTWVkaWFTZXNzaW9u
QWN0aW9uIGFjdGlvbikgY29uc3QKLXsKLSAgICByZXR1cm4gbV9hY3Rpb25IYW5kbGVycy5jb250
YWlucyhhY3Rpb24pOwotfQotCi1SZWZQdHI8TWVkaWFTZXNzaW9uQWN0aW9uSGFuZGxlcj4gTWVk
aWFTZXNzaW9uOjpoYW5kbGVyRm9yQWN0aW9uKE1lZGlhU2Vzc2lvbkFjdGlvbiBhY3Rpb24pIGNv
bnN0Citib29sIE1lZGlhU2Vzc2lvbjo6Y2FsbEFjdGlvbkhhbmRsZXIoY29uc3QgTWVkaWFTZXNz
aW9uQWN0aW9uRGV0YWlscyYgYWN0aW9uRGV0YWlscykKIHsKLSAgICByZXR1cm4gbV9hY3Rpb25I
YW5kbGVycy5nZXQoYWN0aW9uKTsKLX0KLQotdm9pZCBNZWRpYVNlc3Npb246OmNhbGxBY3Rpb25I
YW5kbGVyKGNvbnN0IE1lZGlhU2Vzc2lvbkFjdGlvbkRldGFpbHMmIGFjdGlvbkRldGFpbHMpCi17
Ci0gICAgaWYgKGF1dG8gaGFuZGxlciA9IG1fYWN0aW9uSGFuZGxlcnMuZ2V0KGFjdGlvbkRldGFp
bHMuYWN0aW9uKSkKKyAgICBpZiAoYXV0byBoYW5kbGVyID0gbV9hY3Rpb25IYW5kbGVycy5nZXQo
YWN0aW9uRGV0YWlscy5hY3Rpb24pKSB7CiAgICAgICAgIGhhbmRsZXItPmhhbmRsZUV2ZW50KGFj
dGlvbkRldGFpbHMpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgYXV0byBlbGVt
ZW50ID0gYWN0aXZlTWVkaWFFbGVtZW50KCk7CisgICAgaWYgKCFlbGVtZW50KQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIHBsYXRmb3JtQ29tbWFuZCA9IHBsYXRmb3JtQ29tbWFu
ZEZvck1lZGlhU2Vzc2lvbkFjdGlvbihhY3Rpb25EZXRhaWxzKTsKKyAgICBpZiAoIXBsYXRmb3Jt
Q29tbWFuZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGVsZW1lbnQtPmRpZFJlY2VpdmVS
ZW1vdGVDb250cm9sQ29tbWFuZChwbGF0Zm9ybUNvbW1hbmQtPmZpcnN0LCBwbGF0Zm9ybUNvbW1h
bmQtPnNlY29uZCk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IE1l
ZGlhU2Vzc2lvbjo6c2V0UG9zaXRpb25TdGF0ZShPcHRpb25hbDxNZWRpYVBvc2l0aW9uU3RhdGU+
JiYgc3RhdGUpCkBAIC0zMTQsNiArMzYzLDE1IEBAIHZvaWQgTWVkaWFTZXNzaW9uOjpub3RpZnlB
Y3Rpb25IYW5kbGVyT2JzZXJ2ZXJzKCkKICAgICB9KTsKIH0KIAorUmVmUHRyPEhUTUxNZWRpYUVs
ZW1lbnQ+IE1lZGlhU2Vzc2lvbjo6YWN0aXZlTWVkaWFFbGVtZW50KCkgY29uc3QKK3sKKyAgICBh
dXRvKiBkb2MgPSBkb2N1bWVudCgpOworICAgIGlmICghZG9jKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgIHJldHVybiBIVE1MTWVkaWFFbGVtZW50OjpiZXN0TWVkaWFFbGVtZW50Rm9y
UmVtb3RlQ29udHJvbHMoTWVkaWFFbGVtZW50U2Vzc2lvbjo6UGxheWJhY2tDb250cm9sc1B1cnBv
c2U6Ok1lZGlhU2Vzc2lvbiwgZG9jKTsKK30KKwogI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OX0NP
T1JESU5BVE9SKQogdm9pZCBNZWRpYVNlc3Npb246Om5vdGlmeVJlYWR5U3RhdGVPYnNlcnZlcnMo
KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVk
aWFTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNl
c3Npb24uaAppbmRleCBlNWRiZTk2MjdmYzFjNjE5NDU1ODI3NjNkMGU3MzM0NzhkNTI0YmNlLi45
MjQ1YjY4N2VlMTY4YjFmOTk5MjlkNDA0MzdlMTA3NDc4M2E4NzgzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uaApAQCAtNDUsNiAr
NDUsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEb2N1bWVudDsKK2NsYXNzIEhU
TUxNZWRpYUVsZW1lbnQ7CiBjbGFzcyBNZWRpYU1ldGFkYXRhOwogY2xhc3MgTWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3I7CiBjbGFzcyBOYXZpZ2F0b3I7CkBAIC04NCwxMSArODUsOCBAQCBwdWJsaWM6
CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0UGxheWxpc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYsIFZlY3RvcjxSZWZQdHI8TWVkaWFNZXRhZGF0YT4+JiYpOwogI2VuZGlmCiAKLSAgICBib29s
IGhhc0FjdGlvbkhhbmRsZXIoTWVkaWFTZXNzaW9uQWN0aW9uKSBjb25zdDsKLSAgICBXRUJDT1JF
X0VYUE9SVCBSZWZQdHI8TWVkaWFTZXNzaW9uQWN0aW9uSGFuZGxlcj4gaGFuZGxlckZvckFjdGlv
bihNZWRpYVNlc3Npb25BY3Rpb24pIGNvbnN0OwogICAgIGJvb2wgaGFzQWN0aXZlQWN0aW9uSGFu
ZGxlcnMoKSBjb25zdCB7IHJldHVybiAhbV9hY3Rpb25IYW5kbGVycy5pc0VtcHR5KCk7IH0KLQot
ICAgIHZvaWQgY2FsbEFjdGlvbkhhbmRsZXIoY29uc3QgTWVkaWFTZXNzaW9uQWN0aW9uRGV0YWls
cyYpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY2FsbEFjdGlvbkhhbmRsZXIoY29uc3QgTWVk
aWFTZXNzaW9uQWN0aW9uRGV0YWlscyYpOwogCiAgICAgY29uc3QgTG9nZ2VyJiBsb2dnZXIoKSBj
b25zdCB7IHJldHVybiAqbV9sb2dnZXIuZ2V0KCk7IH0KIApAQCAtMTM0LDYgKzEzMiw4IEBAIHBy
aXZhdGU6CiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuICJNZWRpYVNlc3Npb24iOyB9CiAgICAgYm9vbCB2aXJ0dWFsSGFzUGVuZGluZ0Fj
dGl2aXR5KCkgY29uc3QgZmluYWw7CiAKKyAgICBSZWZQdHI8SFRNTE1lZGlhRWxlbWVudD4gYWN0
aXZlTWVkaWFFbGVtZW50KCkgY29uc3Q7CisKICAgICBXZWFrUHRyPE5hdmlnYXRvcj4gbV9uYXZp
Z2F0b3I7CiAgICAgUmVmUHRyPE1lZGlhTWV0YWRhdGE+IG1fbWV0YWRhdGE7CiAgICAgTWVkaWFT
ZXNzaW9uUGxheWJhY2tTdGF0ZSBtX3BsYXliYWNrU3RhdGUgeyBNZWRpYVNlc3Npb25QbGF5YmFj
a1N0YXRlOjpOb25lIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApp
bmRleCBlNDRiZjlhZjBhZGE3OWQ3MTNhNzA0ZDNkY2U4YWI3NTZmNTcwMjI1Li4xZTM2ZWEwZDE2
MGQ0ZWJkYzc1NzM3Y2NjYzg3OTFlZjk4ZjdhMDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAKQEAgLTMyNSw2ICszMjUsNyBAQCBzdHJ1Y3QgTWVkaWFFbGVtZW50
U2Vzc2lvbkluZm8gewogICAgIGJvb2wgaXNWaXNpYmxlSW5WaWV3cG9ydE9yRnVsbHNjcmVlbiA6
IDE7CiAgICAgYm9vbCBpc0xhcmdlRW5vdWdoRm9yTWFpbkNvbnRlbnQgOiAxOwogICAgIGJvb2wg
aXNQbGF5aW5nQXVkaW8gOiAxOworICAgIGJvb2wgaGFzRXZlck5vdGlmaWVkQWJvdXRQbGF5aW5n
IDogMTsKIH07CiAKIHN0YXRpYyBNZWRpYUVsZW1lbnRTZXNzaW9uSW5mbyBtZWRpYUVsZW1lbnRT
ZXNzaW9uSW5mb0ZvclNlc3Npb24oY29uc3QgTWVkaWFFbGVtZW50U2Vzc2lvbiYgc2Vzc2lvbiwg
TWVkaWFFbGVtZW50U2Vzc2lvbjo6UGxheWJhY2tDb250cm9sc1B1cnBvc2UgcHVycG9zZSkKQEAg
LTMzNyw3ICszMzgsOCBAQCBzdGF0aWMgTWVkaWFFbGVtZW50U2Vzc2lvbkluZm8gbWVkaWFFbGVt
ZW50U2Vzc2lvbkluZm9Gb3JTZXNzaW9uKGNvbnN0IE1lZGlhRWxlbQogICAgICAgICBzZXNzaW9u
LmNhblNob3dDb250cm9sc01hbmFnZXIocHVycG9zZSksCiAgICAgICAgIGVsZW1lbnQuaXNGdWxs
c2NyZWVuKCkgfHwgZWxlbWVudC5pc1Zpc2libGVJblZpZXdwb3J0KCksCiAgICAgICAgIHNlc3Np
b24uaXNMYXJnZUVub3VnaEZvck1haW5Db250ZW50KE1lZGlhU2Vzc2lvbk1haW5Db250ZW50UHVy
cG9zZTo6TWVkaWFDb250cm9scyksCi0gICAgICAgIGVsZW1lbnQuaXNQbGF5aW5nKCkgJiYgZWxl
bWVudC5oYXNBdWRpbygpICYmICFlbGVtZW50Lm11dGVkKCkKKyAgICAgICAgZWxlbWVudC5pc1Bs
YXlpbmcoKSAmJiBlbGVtZW50Lmhhc0F1ZGlvKCkgJiYgIWVsZW1lbnQubXV0ZWQoKSwKKyAgICAg
ICAgZWxlbWVudC5oYXNFdmVyTm90aWZpZWRBYm91dFBsYXlpbmcoKQogICAgIH07CiB9CiAKQEAg
LTM0NiwyMCArMzQ4LDMwIEBAIHN0YXRpYyBib29sIHByZWZlck1lZGlhQ29udHJvbHNGb3JDYW5k
aWRhdGVTZXNzaW9uT3Zlck90aGVyQ2FuZGlkYXRlU2Vzc2lvbihjb25zCiAgICAgTWVkaWFFbGVt
ZW50U2Vzc2lvbjo6UGxheWJhY2tDb250cm9sc1B1cnBvc2UgcHVycG9zZSA9IHNlc3Npb24ucHVy
cG9zZTsKICAgICBBU1NFUlQocHVycG9zZSA9PSBvdGhlclNlc3Npb24ucHVycG9zZSk7CiAKLSAg
ICAvLyBGb3IgdGhlIGNvbnRyb2xzIG1hbmFnZXIsIHByaW9yaXRpemUgdmlzaWJsZSBtZWRpYSBv
dmVyIG9mZnNjcmVlbiBtZWRpYS4KLSAgICBpZiAocHVycG9zZSA9PSBNZWRpYUVsZW1lbnRTZXNz
aW9uOjpQbGF5YmFja0NvbnRyb2xzUHVycG9zZTo6Q29udHJvbHNNYW5hZ2VyICYmIHNlc3Npb24u
aXNWaXNpYmxlSW5WaWV3cG9ydE9yRnVsbHNjcmVlbiAhPSBvdGhlclNlc3Npb24uaXNWaXNpYmxl
SW5WaWV3cG9ydE9yRnVsbHNjcmVlbikKKyAgICAvLyBGb3IgdGhlIGNvbnRyb2xzIG1hbmFnZXIg
YW5kIE1lZGlhU2Vzc2lvbiwgcHJpb3JpdGl6ZSB2aXNpYmxlIG1lZGlhIG92ZXIgb2Zmc2NyZWVu
IG1lZGlhLgorICAgIGlmICgocHVycG9zZSA9PSBNZWRpYUVsZW1lbnRTZXNzaW9uOjpQbGF5YmFj
a0NvbnRyb2xzUHVycG9zZTo6Q29udHJvbHNNYW5hZ2VyIHx8IHB1cnBvc2UgPT0gTWVkaWFFbGVt
ZW50U2Vzc2lvbjo6UGxheWJhY2tDb250cm9sc1B1cnBvc2U6Ok1lZGlhU2Vzc2lvbikKKyAgICAg
ICAgJiYgc2Vzc2lvbi5pc1Zpc2libGVJblZpZXdwb3J0T3JGdWxsc2NyZWVuICE9IG90aGVyU2Vz
c2lvbi5pc1Zpc2libGVJblZpZXdwb3J0T3JGdWxsc2NyZWVuKQogICAgICAgICByZXR1cm4gc2Vz
c2lvbi5pc1Zpc2libGVJblZpZXdwb3J0T3JGdWxsc2NyZWVuOwogCi0gICAgLy8gRm9yIE5vdyBQ
bGF5aW5nLCBwcmlvcml0aXplIGVsZW1lbnRzIHRoYXQgd291bGQgbm9ybWFsbHkgc2F0aXNmeSBt
YWluIGNvbnRlbnQuCi0gICAgaWYgKHB1cnBvc2UgPT0gTWVkaWFFbGVtZW50U2Vzc2lvbjo6UGxh
eWJhY2tDb250cm9sc1B1cnBvc2U6Ok5vd1BsYXlpbmcgJiYgc2Vzc2lvbi5pc0xhcmdlRW5vdWdo
Rm9yTWFpbkNvbnRlbnQgIT0gb3RoZXJTZXNzaW9uLmlzTGFyZ2VFbm91Z2hGb3JNYWluQ29udGVu
dCkKKyAgICAvLyBGb3IgTm93IFBsYXlpbmcgYW5kIE1lZGlhU2Vzc2lvbiwgcHJpb3JpdGl6ZSBl
bGVtZW50cyB0aGF0IHdvdWxkIG5vcm1hbGx5IHNhdGlzZnkgbWFpbiBjb250ZW50LgorICAgIGlm
ICgocHVycG9zZSA9PSBNZWRpYUVsZW1lbnRTZXNzaW9uOjpQbGF5YmFja0NvbnRyb2xzUHVycG9z
ZTo6Tm93UGxheWluZyB8fCBwdXJwb3NlID09IE1lZGlhRWxlbWVudFNlc3Npb246OlBsYXliYWNr
Q29udHJvbHNQdXJwb3NlOjpNZWRpYVNlc3Npb24pCisgICAgICAgICYmIHNlc3Npb24uaXNMYXJn
ZUVub3VnaEZvck1haW5Db250ZW50ICE9IG90aGVyU2Vzc2lvbi5pc0xhcmdlRW5vdWdoRm9yTWFp
bkNvbnRlbnQpCiAgICAgICAgIHJldHVybiBzZXNzaW9uLmlzTGFyZ2VFbm91Z2hGb3JNYWluQ29u
dGVudDsKIAorICAgIC8vIEZvciBNZWRpYVNlc3Npb24sIHByaW9yaXRpemUgZWxlbWVudHMgdGhh
dCBoYXZlIGJlZW4gcGxheWVkIGJlZm9yZS4KKyAgICBpZiAocHVycG9zZSA9PSBNZWRpYUVsZW1l
bnRTZXNzaW9uOjpQbGF5YmFja0NvbnRyb2xzUHVycG9zZTo6TWVkaWFTZXNzaW9uCisgICAgICAg
ICYmIHNlc3Npb24uaGFzRXZlck5vdGlmaWVkQWJvdXRQbGF5aW5nICE9IG90aGVyU2Vzc2lvbi5o
YXNFdmVyTm90aWZpZWRBYm91dFBsYXlpbmcpCisgICAgICAgIHJldHVybiBzZXNzaW9uLmhhc0V2
ZXJOb3RpZmllZEFib3V0UGxheWluZzsKKwogICAgIC8vIEFzIGEgdGllYnJlYWtlciwgcHJpb3Jp
dGl6ZSBlbGVtZW50cyB0aGF0IHRoZSB1c2VyIHJlY2VudGx5IGludGVyYWN0ZWQgd2l0aC4KICAg
ICByZXR1cm4gc2Vzc2lvbi50aW1lT2ZMYXN0VXNlckludGVyYWN0aW9uID4gb3RoZXJTZXNzaW9u
LnRpbWVPZkxhc3RVc2VySW50ZXJhY3Rpb247CiB9CiAKIHN0YXRpYyBib29sIG1lZGlhU2Vzc2lv
bk1heUJlQ29uZnVzZWRXaXRoTWFpbkNvbnRlbnQoY29uc3QgTWVkaWFFbGVtZW50U2Vzc2lvbklu
Zm8mIHNlc3Npb24sIE1lZGlhRWxlbWVudFNlc3Npb246OlBsYXliYWNrQ29udHJvbHNQdXJwb3Nl
IHB1cnBvc2UpCiB7CisgICAgaWYgKHB1cnBvc2UgPT0gTWVkaWFFbGVtZW50U2Vzc2lvbjo6UGxh
eWJhY2tDb250cm9sc1B1cnBvc2U6Ok1lZGlhU2Vzc2lvbikKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCiAgICAgaWYgKHB1cnBvc2UgPT0gTWVkaWFFbGVtZW50U2Vzc2lvbjo6UGxheWJhY2tDb250
cm9sc1B1cnBvc2U6Ok5vd1BsYXlpbmcpCiAgICAgICAgIHJldHVybiBzZXNzaW9uLmlzUGxheWlu
Z0F1ZGlvOwogCkBAIC01ODEsMTIgKzU5MywxMyBAQCBIVE1MTWVkaWFFbGVtZW50Ojp+SFRNTE1l
ZGlhRWxlbWVudCgpCiAgICAgICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJC
bG9iVVJMKG1fYmxvYlVSTEZvclJlYWRpbmcpOwogfQogCi1SZWZQdHI8SFRNTE1lZGlhRWxlbWVu
dD4gSFRNTE1lZGlhRWxlbWVudDo6YmVzdE1lZGlhRWxlbWVudEZvclNob3dpbmdQbGF5YmFja0Nv
bnRyb2xzTWFuYWdlcihNZWRpYUVsZW1lbnRTZXNzaW9uOjpQbGF5YmFja0NvbnRyb2xzUHVycG9z
ZSBwdXJwb3NlKQorUmVmUHRyPEhUTUxNZWRpYUVsZW1lbnQ+IEhUTUxNZWRpYUVsZW1lbnQ6OmJl
c3RNZWRpYUVsZW1lbnRGb3JSZW1vdGVDb250cm9scyhNZWRpYUVsZW1lbnRTZXNzaW9uOjpQbGF5
YmFja0NvbnRyb2xzUHVycG9zZSBwdXJwb3NlLCBjb25zdCBEb2N1bWVudCogZG9jdW1lbnQpCiB7
CiAgICAgVmVjdG9yPE1lZGlhRWxlbWVudFNlc3Npb25JbmZvPiBjYW5kaWRhdGVTZXNzaW9uczsK
ICAgICBib29sIGF0TGVhc3RPbmVOb25DYW5kaWRhdGVNYXlCZUNvbmZ1c2VkRm9yTWFpbkNvbnRl
bnQgPSBmYWxzZTsKLSAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFn
ZXIoKS5mb3JFYWNoTWF0Y2hpbmdTZXNzaW9uKFtdKGF1dG8mIHNlc3Npb24pIHsKLSAgICAgICAg
cmV0dXJuIGlzPE1lZGlhRWxlbWVudFNlc3Npb24+KHNlc3Npb24pOworICAgIFBsYXRmb3JtTWVk
aWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmZvckVhY2hNYXRjaGluZ1Nlc3Npb24o
W2RvY3VtZW50XShhdXRvJiBzZXNzaW9uKSB7CisgICAgICAgIHJldHVybiBpczxNZWRpYUVsZW1l
bnRTZXNzaW9uPihzZXNzaW9uKQorICAgICAgICAgICAgJiYgKCFkb2N1bWVudCB8fCAmZG93bmNh
c3Q8TWVkaWFFbGVtZW50U2Vzc2lvbj4oc2Vzc2lvbikuZWxlbWVudCgpLmRvY3VtZW50KCkgPT0g
ZG9jdW1lbnQpOwogICAgIH0sIFsmXShhdXRvJiBzZXNzaW9uKSB7CiAgICAgICAgIGF1dG8gbWVk
aWFFbGVtZW50U2Vzc2lvbkluZm8gPSBtZWRpYUVsZW1lbnRTZXNzaW9uSW5mb0ZvclNlc3Npb24o
ZG93bmNhc3Q8TWVkaWFFbGVtZW50U2Vzc2lvbj4oc2Vzc2lvbiksIHB1cnBvc2UpOwogICAgICAg
ICBpZiAobWVkaWFFbGVtZW50U2Vzc2lvbkluZm8uY2FuU2hvd0NvbnRyb2xzTWFuYWdlcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggNzQ4NmNhZDZjMGY5OTEwMWYw
NzdlY2JkNTEwMzkxZGY4ZDViMmE2YS4uZGFlMGZjMjIwM2JjMmYwNmIwOTIyNTFiMDViNDgyZGFj
NmVlYjYxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTQ2LDYg
KzQ2LDcgQEAKICNpbmNsdWRlICJWaXNpYmlsaXR5Q2hhbmdlQ2xpZW50LmgiCiAjaW5jbHVkZSA8
d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL0xvZ2dlckhlbHBlci5oPgorI2luY2x1ZGUg
PHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKICNpZiBVU0UoQVVE
SU9fU0VTU0lPTikgJiYgUExBVEZPUk0oTUFDKQpAQCAtMTU1LDcgKzE1Niw3IEBAIHB1YmxpYzoK
IAogICAgIHN0YXRpYyBIYXNoU2V0PEhUTUxNZWRpYUVsZW1lbnQqPiYgYWxsTWVkaWFFbGVtZW50
cygpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxIVE1MTWVkaWFFbGVtZW50
PiBiZXN0TWVkaWFFbGVtZW50Rm9yU2hvd2luZ1BsYXliYWNrQ29udHJvbHNNYW5hZ2VyKE1lZGlh
RWxlbWVudFNlc3Npb246OlBsYXliYWNrQ29udHJvbHNQdXJwb3NlKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUmVmUHRyPEhUTUxNZWRpYUVsZW1lbnQ+IGJlc3RNZWRpYUVsZW1lbnRGb3JS
ZW1vdGVDb250cm9scyhNZWRpYUVsZW1lbnRTZXNzaW9uOjpQbGF5YmFja0NvbnRyb2xzUHVycG9z
ZSwgY29uc3QgRG9jdW1lbnQqID0gbnVsbHB0cik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHJld2luZChkb3VibGUgdGltZURlbHRhKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJldHVy
blRvUmVhbHRpbWUoKSBvdmVycmlkZTsKQEAgLTU3Myw2ICs1NzQsOCBAQCBwdWJsaWM6CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRPdmVycmlkZVByZWZlcnJlZER5bmFtaWNSYW5nZU1vZGUo
RHluYW1pY1JhbmdlTW9kZSk7CiAgICAgdm9pZCBzZXRQcmVmZXJyZWREeW5hbWljUmFuZ2VNb2Rl
KER5bmFtaWNSYW5nZU1vZGUpOwogCisgICAgdm9pZCBkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENv
bW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSwgY29u
c3QgUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbW1hbmRBcmd1bWVudCYpIG92ZXJyaWRl
OworCiBwcm90ZWN0ZWQ6CiAgICAgSFRNTE1lZGlhRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiwgRG9jdW1lbnQmLCBib29sIGNyZWF0ZWRCeVBhcnNlcik7CiAgICAgdmlydHVhbCB2b2lkIGZp
bmlzaEluaXRpYWxpemF0aW9uKCk7CkBAIC04NjYsNyArODY5LDYgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHJlc3VtZUF1dG9wbGF5aW5nKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBtYXlSZXN1bWVQbGF5
YmFjayhib29sIHNob3VsZFJlc3VtZSkgb3ZlcnJpZGU7CiAgICAgYm9vbCBjYW5SZWNlaXZlUmVt
b3RlQ29udHJvbENvbW1hbmRzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAg
IHZvaWQgZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUsIGNvbnN0IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpS
ZW1vdGVDb21tYW5kQXJndW1lbnQmKSBvdmVycmlkZTsKICAgICBib29sIHNob3VsZE92ZXJyaWRl
QmFja2dyb3VuZFBsYXliYWNrUmVzdHJpY3Rpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OkludGVy
cnVwdGlvblR5cGUpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgc2hvdWxkT3ZlcnJpZGVCYWNr
Z3JvdW5kTG9hZGluZ1Jlc3RyaWN0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBjYW5Q
cm9kdWNlQXVkaW8oKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxl
bWVudFNlc3Npb24uY3BwCmluZGV4IGYyNzRiZWY4NjZlYzI5YjE5N2MwZGY1ZWEzNzZmYzA5MzJm
NGU4ZTAuLjVhY2Y3ODQ3NjViMmU5Yzg1NDVmYTQ0MDQzZTgzN2JjYjQ4MWE1OGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcApAQCAtNTI1LDcgKzUyNSw3
IEBAIGJvb2wgTWVkaWFFbGVtZW50U2Vzc2lvbjo6Y2FuU2hvd0NvbnRyb2xzTWFuYWdlcihQbGF5
YmFja0NvbnRyb2xzUHVycG9zZSBwdXJwb3NlCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
IAotICAgIGlmIChjbGllbnQoKS5wcmVzZW50YXRpb25UeXBlKCkgPT0gTWVkaWFUeXBlOjpBdWRp
byAmJiBwdXJwb3NlID09IFBsYXliYWNrQ29udHJvbHNQdXJwb3NlOjpDb250cm9sc01hbmFnZXIp
IHsKKyAgICBpZiAoY2xpZW50KCkucHJlc2VudGF0aW9uVHlwZSgpID09IE1lZGlhVHlwZTo6QXVk
aW8gJiYgKHB1cnBvc2UgPT0gUGxheWJhY2tDb250cm9sc1B1cnBvc2U6OkNvbnRyb2xzTWFuYWdl
ciB8fCBwdXJwb3NlID09IFBsYXliYWNrQ29udHJvbHNQdXJwb3NlOjpNZWRpYVNlc3Npb24pKSB7
CiAgICAgICAgIGlmICghaGFzQmVoYXZpb3JSZXN0cmljdGlvbihSZXF1aXJlVXNlckdlc3R1cmVU
b0NvbnRyb2xDb250cm9sc01hbmFnZXIpIHx8IG1fZWxlbWVudC5kb2N1bWVudCgpLnByb2Nlc3Np
bmdVc2VyR2VzdHVyZUZvck1lZGlhKCkpIHsKICAgICAgICAgICAgIElORk9fTE9HKExPR0lERU5U
SUZJRVIsICJyZXR1cm5pbmcgVFJVRTogYXVkaW8gZWxlbWVudCB3aXRoIHVzZXIgZ2VzdHVyZSIp
OwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC01NjUsNyArNTY1LDcgQEAgYm9vbCBNZWRp
YUVsZW1lbnRTZXNzaW9uOjpjYW5TaG93Q29udHJvbHNNYW5hZ2VyKFBsYXliYWNrQ29udHJvbHNQ
dXJwb3NlIHB1cnBvc2UKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlmICgh
bV9lbGVtZW50Lmhhc0V2ZXJOb3RpZmllZEFib3V0UGxheWluZygpKSB7CisgICAgaWYgKHB1cnBv
c2UgIT0gUGxheWJhY2tDb250cm9sc1B1cnBvc2U6Ok1lZGlhU2Vzc2lvbiAmJiAhbV9lbGVtZW50
Lmhhc0V2ZXJOb3RpZmllZEFib3V0UGxheWluZygpKSB7CiAgICAgICAgIElORk9fTE9HKExPR0lE
RU5USUZJRVIsICJyZXR1cm5pbmcgRkFMU0U6IGhhc24ndCBmaXJlZCBwbGF5aW5nIG5vdGlmaWNh
dGlvbiIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtNTk3LDcgKzU5Nyw3IEBA
IGJvb2wgTWVkaWFFbGVtZW50U2Vzc2lvbjo6Y2FuU2hvd0NvbnRyb2xzTWFuYWdlcihQbGF5YmFj
a0NvbnRyb2xzUHVycG9zZSBwdXJwb3NlCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAocHVy
cG9zZSA9PSBQbGF5YmFja0NvbnRyb2xzUHVycG9zZTo6Tm93UGxheWluZykgeworICAgIGlmIChw
dXJwb3NlID09IFBsYXliYWNrQ29udHJvbHNQdXJwb3NlOjpOb3dQbGF5aW5nIHx8IHB1cnBvc2Ug
PT0gUGxheWJhY2tDb250cm9sc1B1cnBvc2U6Ok1lZGlhU2Vzc2lvbikgewogICAgICAgICBJTkZP
X0xPRyhMT0dJREVOVElGSUVSLCAicmV0dXJuaW5nIFRSVUU6IHBvdGVudGlhbGx5IHBsYXlzIGF1
ZGlvIik7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTExMzUsMTAgKzExMzUsNyBA
QCB2b2lkIE1lZGlhRWxlbWVudFNlc3Npb246OmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFu
ZChSZW1vdGVDb250cm9sQ29tbWFuZFR5cAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
aWYgKGF1dG8gaGFuZGxlciA9IHNlc3Npb24tPmhhbmRsZXJGb3JBY3Rpb24oYWN0aW9uRGV0YWls
cy5hY3Rpb24pKQotICAgICAgICBoYW5kbGVyLT5oYW5kbGVFdmVudChhY3Rpb25EZXRhaWxzKTsK
LSAgICBlbHNlCi0gICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgIklnbm9yaW5nIGNv
bW1hbmQsIG5vIGFjdGlvbiBoYW5kbGVyIHJlZ2lzdGVyZWQgZm9yICIsIGFjdGlvbkRldGFpbHMu
YWN0aW9uKTsKKyAgICBzZXNzaW9uLT5jYWxsQWN0aW9uSGFuZGxlcihhY3Rpb25EZXRhaWxzKTsK
IH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVu
dFNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5oCmlu
ZGV4IDgxN2E1MDE4ZThkYzczODBmZGJjOGNjOTMyMGUxYTcyNjg1MGViMWIuLmQ5M2ZkMGY4N2Y5
NmJkMmY4ODdiZGU2NGFlN2VlNTliYTQwYTNhNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVk
aWFFbGVtZW50U2Vzc2lvbi5oCkBAIC0xNTgsNyArMTU4LDcgQEAgcHVibGljOgogICAgIGJvb2wg
d2FudHNUb09ic2VydmVWaWV3cG9ydFZpc2liaWxpdHlGb3JNZWRpYUNvbnRyb2xzKCkgY29uc3Q7
CiAgICAgYm9vbCB3YW50c1RvT2JzZXJ2ZVZpZXdwb3J0VmlzaWJpbGl0eUZvckF1dG9wbGF5KCkg
Y29uc3Q7CiAKLSAgICBlbnVtIGNsYXNzIFBsYXliYWNrQ29udHJvbHNQdXJwb3NlIHsgQ29udHJv
bHNNYW5hZ2VyLCBOb3dQbGF5aW5nIH07CisgICAgZW51bSBjbGFzcyBQbGF5YmFja0NvbnRyb2xz
UHVycG9zZSB7IENvbnRyb2xzTWFuYWdlciwgTm93UGxheWluZywgTWVkaWFTZXNzaW9uIH07CiAg
ICAgYm9vbCBjYW5TaG93Q29udHJvbHNNYW5hZ2VyKFBsYXliYWNrQ29udHJvbHNQdXJwb3NlKSBj
b25zdDsKICAgICBib29sIGlzTGFyZ2VFbm91Z2hGb3JNYWluQ29udGVudChNZWRpYVNlc3Npb25N
YWluQ29udGVudFB1cnBvc2UpIGNvbnN0OwogICAgIGJvb2wgaXNNYWluQ29udGVudEZvclB1cnBv
c2VzT2ZBdXRvcGxheUV2ZW50cygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggYTg5NjI0
NGVkMWFkMmM5YTY2NWE3YmEzYWUyMTkxMzkyNmM0ZDUyMi4uZWFmNTZjZGUyMzA2NjUzODM5ODU1
NTI2MTVlMTI1ODAwMjU4YTg2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0yMTM1LDcgKzIxMzUs
NyBAQCB2b2lkIFBhZ2U6OnNjaGVkdWxlUGxheWJhY2tDb250cm9sc01hbmFnZXJVcGRhdGUoKQog
CiB2b2lkIFBhZ2U6OnBsYXliYWNrQ29udHJvbHNNYW5hZ2VyVXBkYXRlVGltZXJGaXJlZCgpCiB7
Ci0gICAgaWYgKGF1dG8gYmVzdE1lZGlhRWxlbWVudCA9IEhUTUxNZWRpYUVsZW1lbnQ6OmJlc3RN
ZWRpYUVsZW1lbnRGb3JTaG93aW5nUGxheWJhY2tDb250cm9sc01hbmFnZXIoTWVkaWFFbGVtZW50
U2Vzc2lvbjo6UGxheWJhY2tDb250cm9sc1B1cnBvc2U6OkNvbnRyb2xzTWFuYWdlcikpCisgICAg
aWYgKGF1dG8gYmVzdE1lZGlhRWxlbWVudCA9IEhUTUxNZWRpYUVsZW1lbnQ6OmJlc3RNZWRpYUVs
ZW1lbnRGb3JSZW1vdGVDb250cm9scyhNZWRpYUVsZW1lbnRTZXNzaW9uOjpQbGF5YmFja0NvbnRy
b2xzUHVycG9zZTo6Q29udHJvbHNNYW5hZ2VyKSkKICAgICAgICAgY2hyb21lKCkuY2xpZW50KCku
c2V0VXBQbGF5YmFja0NvbnRyb2xzTWFuYWdlcigqYmVzdE1lZGlhRWxlbWVudCk7CiAgICAgZWxz
ZQogICAgICAgICBjaHJvbWUoKS5jbGllbnQoKS5jbGVhclBsYXliYWNrQ29udHJvbHNNYW5hZ2Vy
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRp
YVNlc3Npb25NYW5hZ2VyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9j
b2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KaW5kZXggMjMwOGRlMWNlZmZmNGYzNmZi
Y2NkNjdiNmNhNzc1YzU1MTIwYTE5OS4uNTcyNDhjNmI2YTVjMmQxMGY4NTY5ZjA4MGI5NWZiN2Ex
MmQ5OTUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2Ev
TWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQpAQCAtMzM5LDcgKzMzOSw3
IEBAIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjpzZXROb3dQbGF5aW5nSW5mbyhib29s
IHNldEFzTm93UGxheWluZ0FwcGxpY2F0aW9uCiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiogTWVkaWFT
ZXNzaW9uTWFuYWdlckNvY29hOjpub3dQbGF5aW5nRWxpZ2libGVTZXNzaW9uKCkKIHsKICAgICAv
LyBGSVhNRTogRml4IHRoaXMgbGF5ZXJpbmcgdmlvbGF0aW9uLgotICAgIGlmIChhdXRvIGVsZW1l
bnQgPSBIVE1MTWVkaWFFbGVtZW50OjpiZXN0TWVkaWFFbGVtZW50Rm9yU2hvd2luZ1BsYXliYWNr
Q29udHJvbHNNYW5hZ2VyKE1lZGlhRWxlbWVudFNlc3Npb246OlBsYXliYWNrQ29udHJvbHNQdXJw
b3NlOjpOb3dQbGF5aW5nKSkKKyAgICBpZiAoYXV0byBlbGVtZW50ID0gSFRNTE1lZGlhRWxlbWVu
dDo6YmVzdE1lZGlhRWxlbWVudEZvclJlbW90ZUNvbnRyb2xzKE1lZGlhRWxlbWVudFNlc3Npb246
OlBsYXliYWNrQ29udHJvbHNQdXJwb3NlOjpOb3dQbGF5aW5nKSkKICAgICAgICAgcmV0dXJuICZl
bGVtZW50LT5tZWRpYVNlc3Npb24oKTsKIAogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDQ1MTFiZjUwYTUyZDQxZTIyM2M1NzYwODA2ZWMz
MGFkNmFjNWU2ZTguLjZlMDI0OWQ3NmUxOTBkYTU4MzUxODViYWNmMGIwNmFkMzBjZjAyYTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTQ0MjMsOSArNDQyMyw5IEBAIEV4
Y2VwdGlvbk9yPEludGVybmFsczo6Tm93UGxheWluZ1N0YXRlPiBJbnRlcm5hbHM6Om5vd1BsYXlp
bmdTdGF0ZSgpIGNvbnN0CiB9CiAKICNpZiBFTkFCTEUoVklERU8pCi1SZWZQdHI8SFRNTE1lZGlh
RWxlbWVudD4gSW50ZXJuYWxzOjpiZXN0TWVkaWFFbGVtZW50Rm9yU2hvd2luZ1BsYXliYWNrQ29u
dHJvbHNNYW5hZ2VyKEludGVybmFsczo6UGxheWJhY2tDb250cm9sc1B1cnBvc2UgcHVycG9zZSkK
K1JlZlB0cjxIVE1MTWVkaWFFbGVtZW50PiBJbnRlcm5hbHM6OmJlc3RNZWRpYUVsZW1lbnRGb3JS
ZW1vdGVDb250cm9scyhJbnRlcm5hbHM6OlBsYXliYWNrQ29udHJvbHNQdXJwb3NlIHB1cnBvc2Up
CiB7Ci0gICAgcmV0dXJuIEhUTUxNZWRpYUVsZW1lbnQ6OmJlc3RNZWRpYUVsZW1lbnRGb3JTaG93
aW5nUGxheWJhY2tDb250cm9sc01hbmFnZXIocHVycG9zZSk7CisgICAgcmV0dXJuIEhUTUxNZWRp
YUVsZW1lbnQ6OmJlc3RNZWRpYUVsZW1lbnRGb3JSZW1vdGVDb250cm9scyhwdXJwb3NlKTsKIH0K
IAogSW50ZXJuYWxzOjpNZWRpYVNlc3Npb25TdGF0ZSBJbnRlcm5hbHM6Om1lZGlhU2Vzc2lvblN0
YXRlKEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQpCkBAIC02MTIxLDEwICs2MTIxLDkgQEAgRXhj
ZXB0aW9uT3I8ZG91YmxlPiBJbnRlcm5hbHM6OmN1cnJlbnRNZWRpYVNlc3Npb25Qb3NpdGlvbihj
b25zdCBNZWRpYVNlc3Npb24mIHMKIAogRXhjZXB0aW9uT3I8dm9pZD4gSW50ZXJuYWxzOjpzZW5k
TWVkaWFTZXNzaW9uQWN0aW9uKE1lZGlhU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgTWVkaWFTZXNz
aW9uQWN0aW9uRGV0YWlscyYgYWN0aW9uRGV0YWlscykKIHsKLSAgICBpZiAoYXV0byBoYW5kbGVy
ID0gc2Vzc2lvbi5oYW5kbGVyRm9yQWN0aW9uKGFjdGlvbkRldGFpbHMuYWN0aW9uKSkgewotICAg
ICAgICBoYW5kbGVyLT5oYW5kbGVFdmVudChhY3Rpb25EZXRhaWxzKTsKKyAgICBpZiAoc2Vzc2lv
bi5jYWxsQWN0aW9uSGFuZGxlcihhY3Rpb25EZXRhaWxzKSkKICAgICAgICAgcmV0dXJuIHsgfTsK
LSAgICB9CisKICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggNDZhZDQ4NDkxZmQyZDE4Yzk3NTFh
MzliZmYxZTUyYjMyYjYwYzBlMS4uZTc0YzE3NTgxZTNhNzhiOTNmNDllNjAzMWQ3NDY1OWViYTlm
MmZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC05MjYsNyArOTI2LDcgQEAg
cHVibGljOgogCiAjaWYgRU5BQkxFKFZJREVPKQogICAgIHVzaW5nIFBsYXliYWNrQ29udHJvbHNQ
dXJwb3NlID0gTWVkaWFFbGVtZW50U2Vzc2lvbjo6UGxheWJhY2tDb250cm9sc1B1cnBvc2U7Ci0g
ICAgUmVmUHRyPEhUTUxNZWRpYUVsZW1lbnQ+IGJlc3RNZWRpYUVsZW1lbnRGb3JTaG93aW5nUGxh
eWJhY2tDb250cm9sc01hbmFnZXIoUGxheWJhY2tDb250cm9sc1B1cnBvc2UpOworICAgIFJlZlB0
cjxIVE1MTWVkaWFFbGVtZW50PiBiZXN0TWVkaWFFbGVtZW50Rm9yUmVtb3RlQ29udHJvbHMoUGxh
eWJhY2tDb250cm9sc1B1cnBvc2UpOwogCiAgICAgdXNpbmcgTWVkaWFTZXNzaW9uU3RhdGUgPSBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U3RhdGU7CiAgICAgTWVkaWFTZXNzaW9uU3RhdGUgbWVkaWFT
ZXNzaW9uU3RhdGUoSFRNTE1lZGlhRWxlbWVudCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuaWRsCmluZGV4IDJlZGNjMmMyMGE3MDMzMDViYzM0MjkyOTFiZGM3ODk2ZGQxYjBhOWQuLjUx
MWZmOTViMGQ3MzJiMzFlZGQ5Yzg3MTdiNzUyNzk0M2VhZWJlZDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5pZGwKQEAgLTkwNSw3ICs5MDUsNyBAQCBlbnVtIFRyZWVUeXBlIHsKIAog
ICAgIFtDb25kaXRpb25hbD1WSURFT10gcmVhZG9ubHkgYXR0cmlidXRlIE5vd1BsYXlpbmdTdGF0
ZSBub3dQbGF5aW5nU3RhdGU7CiAKLSAgICBbQ29uZGl0aW9uYWw9VklERU9dIEhUTUxNZWRpYUVs
ZW1lbnQgYmVzdE1lZGlhRWxlbWVudEZvclNob3dpbmdQbGF5YmFja0NvbnRyb2xzTWFuYWdlcihQ
bGF5YmFja0NvbnRyb2xzUHVycG9zZSBwdXJwb3NlKTsKKyAgICBbQ29uZGl0aW9uYWw9VklERU9d
IEhUTUxNZWRpYUVsZW1lbnQgYmVzdE1lZGlhRWxlbWVudEZvclJlbW90ZUNvbnRyb2xzKFBsYXli
YWNrQ29udHJvbHNQdXJwb3NlIHB1cnBvc2UpOwogICAgIFtDb25kaXRpb25hbD1WSURFT10gTWVk
aWFTZXNzaW9uU3RhdGUgbWVkaWFTZXNzaW9uU3RhdGUoSFRNTE1lZGlhRWxlbWVudCBlbGVtZW50
KTsKIAogICAgIFtDb25kaXRpb25hbD1WSURFT10gTWVkaWFVc2FnZVN0YXRlIG1lZGlhVXNhZ2VT
dGF0ZShIVE1MTWVkaWFFbGVtZW50IGVsZW1lbnQpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDYwMjA3ZDkyZDcwMmIzYzFj
N2I4YWMxZjQxZjU4YzYxNGE5NzY2MjEuLjY4ZTE2ZjEyMDY5ZGUyNjRmZjFjZDU4MTYyYWNiM2Nk
NWI0ZmVlNTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMS0wNC0wOSAgSmVhbi1ZdmVzIEF2
ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIE1lZGlhIFNlc3Npb24gYWN0aW9uIHNo
b3VsZCBkZWZhdWx0IHRvIHRoZSBNZWRpYUVsZW1lbnQncyBkZWZhdWx0IHdoZW4gbm8gTWVkaWFT
ZXNzaW9uIGhhbmRsZXIgYXJlIHNldAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI0Mjc4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NjMzOTg0MT4K
KworICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0IC4KKworICAgICAgICAqIG1lZGlh
L2F1ZGlvLWJhY2tncm91bmQtcGxheWJhY2stcGxheWxpc3QtZXhwZWN0ZWQudHh0OiBSZW5hbWVk
IG1ldGhvZAorICAgICAgICAqIG1lZGlhL2F1ZGlvLWJhY2tncm91bmQtcGxheWJhY2stcGxheWxp
c3QuaHRtbDogUmVuYW1lZCBtZXRob2QKKyAgICAgICAgKiBtZWRpYS9tZWRpYS1zZXNzaW9uL2Rl
ZmF1bHQtYWN0aW9uSGFuZGxlcnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRp
YS9tZWRpYS1zZXNzaW9uL2RlZmF1bHQtYWN0aW9uSGFuZGxlcnMuaHRtbDogQWRkZWQuCisgICAg
ICAgICogcGxhdGZvcm0vbWFjL21lZGlhL3ZpZGVvLWJlc3QtZWxlbWVudC1mb3ItcGxheWJhY2st
Y29udHJvbHMtcHVycG9zZS1leHBlY3RlZC50eHQ6IFJlbmFtZWQgbWV0aG9kCisgICAgICAgICog
cGxhdGZvcm0vbWFjL21lZGlhL3ZpZGVvLWJlc3QtZWxlbWVudC1mb3ItcGxheWJhY2stY29udHJv
bHMtcHVycG9zZS5odG1sOiBSZW5hbWVkIG1ldGhvZAorCiAyMDIxLTA0LTA5ICBQaGlsaXBwZSBO
b3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1N0cmVhbWVyXSBmYXN0
L2NhbnZhcy9jYW52YXMtY3JlYXRlUGF0dGVybi12aWRlby1sb2FkaW5nLmh0bWwgaXMgZmFpbGlu
ZyBzaW5jZSByMjE4MTcwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9hdWRpby1iYWNr
Z3JvdW5kLXBsYXliYWNrLXBsYXlsaXN0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL21lZGlh
L2F1ZGlvLWJhY2tncm91bmQtcGxheWJhY2stcGxheWxpc3QtZXhwZWN0ZWQudHh0CmluZGV4IDFk
MzQ0YjNkOTkzODhhOTdmNTM0YmUxNTU5MjllZjQ5NjIwYmVhZmUuLmU4YzNhODA0Y2EwM2E2ZTVh
N2FmMzJkYzg5ZjAzNTI5MWZiNzJjOWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL21lZGlhL2F1
ZGlvLWJhY2tncm91bmQtcGxheWJhY2stcGxheWxpc3QtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL21lZGlhL2F1ZGlvLWJhY2tncm91bmQtcGxheWJhY2stcGxheWxpc3QtZXhwZWN0ZWQu
dHh0CkBAIC00LDE4ICs0LDE4IEBAIFJVTihhdWRpby5zcmMgPSBmaW5kTWVkaWFGaWxlKCJhdWRp
byIsICJjb250ZW50L3Rlc3QiKSkKIEVWRU5UKGNhbnBsYXl0aHJvdWdoKQogUlVOKGF1ZGlvLnBs
YXkoKSkKIEVWRU5UKHBsYXlpbmcpCi1FWFBFQ1RFRCAoaW50ZXJuYWxzLmJlc3RNZWRpYUVsZW1l
bnRGb3JTaG93aW5nUGxheWJhY2tDb250cm9sc01hbmFnZXIoIk5vd1BsYXlpbmciKSA9PSAnW29i
amVjdCBIVE1MQXVkaW9FbGVtZW50XScpIE9LCitFWFBFQ1RFRCAoaW50ZXJuYWxzLmJlc3RNZWRp
YUVsZW1lbnRGb3JSZW1vdGVDb250cm9scygiTm93UGxheWluZyIpID09ICdbb2JqZWN0IEhUTUxB
dWRpb0VsZW1lbnRdJykgT0sKIFJVTihpbnRlcm5hbHMuYXBwbGljYXRpb25EaWRFbnRlckJhY2tn
cm91bmQodHJ1ZSkpCiBSVU4oYXVkaW8uY3VycmVudFRpbWUgPSBhdWRpby5kdXJhdGlvbiAtIDAu
MSkKIEVWRU5UKGVuZGVkKQogUlVOKGF1ZGlvLnNyYyA9ICIiKQogUlVOKGF1ZGlvLmxvYWQoKSkK
LUVYUEVDVEVEIChpbnRlcm5hbHMuYmVzdE1lZGlhRWxlbWVudEZvclNob3dpbmdQbGF5YmFja0Nv
bnRyb2xzTWFuYWdlcigiTm93UGxheWluZyIpID09ICdbb2JqZWN0IEhUTUxBdWRpb0VsZW1lbnRd
JykgT0sKK0VYUEVDVEVEIChpbnRlcm5hbHMuYmVzdE1lZGlhRWxlbWVudEZvclJlbW90ZUNvbnRy
b2xzKCJOb3dQbGF5aW5nIikgPT0gJ1tvYmplY3QgSFRNTEF1ZGlvRWxlbWVudF0nKSBPSwogUlVO
KGF1ZGlvLnNyYyA9IGZpbmRNZWRpYUZpbGUoImF1ZGlvIiwgImNvbnRlbnQvdGVzdCIpKQogUlVO
KGF1ZGlvLmxvYWQoKSkKIEVWRU5UKGNhbnBsYXl0aHJvdWdoKQogUlVOKGF1ZGlvLnBsYXkoKSkK
IEVWRU5UKHBsYXlpbmcpCi1FWFBFQ1RFRCAoaW50ZXJuYWxzLmJlc3RNZWRpYUVsZW1lbnRGb3JT
aG93aW5nUGxheWJhY2tDb250cm9sc01hbmFnZXIoIk5vd1BsYXlpbmciKSA9PSAnW29iamVjdCBI
VE1MQXVkaW9FbGVtZW50XScpIE9LCitFWFBFQ1RFRCAoaW50ZXJuYWxzLmJlc3RNZWRpYUVsZW1l
bnRGb3JSZW1vdGVDb250cm9scygiTm93UGxheWluZyIpID09ICdbb2JqZWN0IEhUTUxBdWRpb0Vs
ZW1lbnRdJykgT0sKIEVORCBPRiBURVNUCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlh
L2F1ZGlvLWJhY2tncm91bmQtcGxheWJhY2stcGxheWxpc3QuaHRtbCBiL0xheW91dFRlc3RzL21l
ZGlhL2F1ZGlvLWJhY2tncm91bmQtcGxheWJhY2stcGxheWxpc3QuaHRtbAppbmRleCBmNzI5MTI2
YjI0NGUwOWM1NzU3MWRjNjMyZjdhZmQzOTIzZmY5ZmQxLi4xYWUzNzNkNGJiYjk3ODAxM2E2MWNl
MWY3YzNmMjZjOGU5NjNiOTczIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9tZWRpYS9hdWRpby1i
YWNrZ3JvdW5kLXBsYXliYWNrLXBsYXlsaXN0Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEv
YXVkaW8tYmFja2dyb3VuZC1wbGF5YmFjay1wbGF5bGlzdC5odG1sCkBAIC0xMSwxOSArMTEsMTkg
QEAKICAgICAgICAgYXdhaXQgd2FpdEZvcihhdWRpbywgJ2NhbnBsYXl0aHJvdWdoJyk7CiAgICAg
ICAgIHJ1bldpdGhLZXlEb3duKCdhdWRpby5wbGF5KCknKTsKICAgICAgICAgYXdhaXQgd2FpdEZv
cihhdWRpbywgJ3BsYXlpbmcnKTsKLSAgICAgICAgdGVzdEV4cGVjdGVkKCdpbnRlcm5hbHMuYmVz
dE1lZGlhRWxlbWVudEZvclNob3dpbmdQbGF5YmFja0NvbnRyb2xzTWFuYWdlcigiTm93UGxheWlu
ZyIpJywgYXVkaW8pOworICAgICAgICB0ZXN0RXhwZWN0ZWQoJ2ludGVybmFscy5iZXN0TWVkaWFF
bGVtZW50Rm9yUmVtb3RlQ29udHJvbHMoIk5vd1BsYXlpbmciKScsIGF1ZGlvKTsKICAgICAgICAg
cnVuKCdpbnRlcm5hbHMuYXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQodHJ1ZSknKTsKICAg
ICAgICAgcnVuKCdhdWRpby5jdXJyZW50VGltZSA9IGF1ZGlvLmR1cmF0aW9uIC0gMC4xJykKICAg
ICAgICAgYXdhaXQgd2FpdEZvcihhdWRpbywgJ2VuZGVkJyk7CiAgICAgICAgIHJ1bignYXVkaW8u
c3JjID0gIiInKTsKICAgICAgICAgcnVuKCdhdWRpby5sb2FkKCknKTsKLSAgICAgICAgdGVzdEV4
cGVjdGVkKCdpbnRlcm5hbHMuYmVzdE1lZGlhRWxlbWVudEZvclNob3dpbmdQbGF5YmFja0NvbnRy
b2xzTWFuYWdlcigiTm93UGxheWluZyIpJywgYXVkaW8pOworICAgICAgICB0ZXN0RXhwZWN0ZWQo
J2ludGVybmFscy5iZXN0TWVkaWFFbGVtZW50Rm9yUmVtb3RlQ29udHJvbHMoIk5vd1BsYXlpbmci
KScsIGF1ZGlvKTsKICAgICAgICAgcnVuKCdhdWRpby5zcmMgPSBmaW5kTWVkaWFGaWxlKCJhdWRp
byIsICJjb250ZW50L3Rlc3QiKScpOwogICAgICAgICBydW4oJ2F1ZGlvLmxvYWQoKScpOwogICAg
ICAgICBhd2FpdCB3YWl0Rm9yKGF1ZGlvLCAnY2FucGxheXRocm91Z2gnKTsKICAgICAgICAgcnVu
KCdhdWRpby5wbGF5KCknKTsKICAgICAgICAgYXdhaXQgd2FpdEZvcihhdWRpbywgJ3BsYXlpbmcn
KTsKLSAgICAgICAgdGVzdEV4cGVjdGVkKCdpbnRlcm5hbHMuYmVzdE1lZGlhRWxlbWVudEZvclNo
b3dpbmdQbGF5YmFja0NvbnRyb2xzTWFuYWdlcigiTm93UGxheWluZyIpJywgYXVkaW8pOworICAg
ICAgICB0ZXN0RXhwZWN0ZWQoJ2ludGVybmFscy5iZXN0TWVkaWFFbGVtZW50Rm9yUmVtb3RlQ29u
dHJvbHMoIk5vd1BsYXlpbmciKScsIGF1ZGlvKTsKICAgICAgICAgZW5kVGVzdCgpOyAgICAgICAg
CiAgICAgfSk7CiAgICAgPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9t
ZWRpYS1zZXNzaW9uL2RlZmF1bHQtYWN0aW9uSGFuZGxlcnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvbWVkaWEvbWVkaWEtc2Vzc2lvbi9kZWZhdWx0LWFjdGlvbkhhbmRsZXJzLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jYjA2MDllNTM1ZjFkMWZjYzk0MjViMmE2MWRhYTlhOGNjNDRiNDFk
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtc2Vzc2lvbi9kZWZh
dWx0LWFjdGlvbkhhbmRsZXJzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI5IEBACisKK1JVTih2
aWRlby5zcmMgPSBmaW5kTWVkaWFGaWxlKCJ2aWRlbyIsICIuLi9jb250ZW50L3Rlc3QiKSkKK0VW
RU5UKGxvYWRlZGRhdGEpCitUZXN0IHRoYXQgZGVmYXVsdCBtZWRpYSBlbGVtZW50IGFjdGlvbiB3
aWxsIGJlIHJ1biB3aGVuIG5vIG1lZGlhIHNlc3Npb24gaGFuZGxlcnMgZXhpc3QgZm9yIHRoYXQg
YWN0aW9uLgorRVhQRUNURUQgKHZpZGVvLnBhdXNlZCA9PSAndHJ1ZScpIE9LCitSVU4oaW50ZXJu
YWxzLnNlbmRNZWRpYVNlc3Npb25BY3Rpb24obmF2aWdhdG9yLm1lZGlhU2Vzc2lvbiwge2FjdGlv
bjogInBsYXkifSkpCitFWFBFQ1RFRCAodmlkZW8ucGF1c2VkID09ICdmYWxzZScpIE9LCitSVU4o
aW50ZXJuYWxzLnNlbmRNZWRpYVNlc3Npb25BY3Rpb24obmF2aWdhdG9yLm1lZGlhU2Vzc2lvbiwg
e2FjdGlvbjogInBhdXNlIn0pKQorRVhQRUNURUQgKHZpZGVvLnBhdXNlZCA9PSAndHJ1ZScpIE9L
CitSVU4odmlkZW8uY3VycmVudFRpbWUgPSAwKQorRVhQRUNURUQgKHZpZGVvLmN1cnJlbnRUaW1l
ID09ICcwJykgT0sKK1JVTihpbnRlcm5hbHMuc2VuZE1lZGlhU2Vzc2lvbkFjdGlvbihuYXZpZ2F0
b3IubWVkaWFTZXNzaW9uLCB7YWN0aW9uOiAic2Vla3RvIiwgc2Vla1RpbWU6IDF9KSkKK0VYUEVD
VEVEICh2aWRlby5jdXJyZW50VGltZSA9PSAnMScpIE9LCitSVU4oaW50ZXJuYWxzLnNlbmRNZWRp
YVNlc3Npb25BY3Rpb24obmF2aWdhdG9yLm1lZGlhU2Vzc2lvbiwge2FjdGlvbjogInNlZWtmb3J3
YXJkIiwgc2Vla09mZnNldDogNX0pKQorRVhQRUNURUQgKHZpZGVvLmN1cnJlbnRUaW1lID09ICc2
JykgT0sKK1JVTihpbnRlcm5hbHMuc2VuZE1lZGlhU2Vzc2lvbkFjdGlvbihuYXZpZ2F0b3IubWVk
aWFTZXNzaW9uLCB7YWN0aW9uOiAic2Vla2JhY2t3YXJkIiwgc2Vla09mZnNldDogNX0pKQorRVhQ
RUNURUQgKHZpZGVvLmN1cnJlbnRUaW1lID09ICcxJykgT0sKK1JVTihpbnRlcm5hbHMuc2VuZE1l
ZGlhU2Vzc2lvbkFjdGlvbihuYXZpZ2F0b3IubWVkaWFTZXNzaW9uLCB7YWN0aW9uOiAicGxheSJ9
KSkKK0FDVElPTjogcGxheQorRVhQRUNURUQgKHZpZGVvLnBhdXNlZCA9PSAndHJ1ZScpIE9LCitS
VU4oaW50ZXJuYWxzLnNlbmRNZWRpYVNlc3Npb25BY3Rpb24obmF2aWdhdG9yLm1lZGlhU2Vzc2lv
biwge2FjdGlvbjogInBsYXkifSkpCitFWFBFQ1RFRCAodmlkZW8ucGF1c2VkID09ICdmYWxzZScp
IE9LCitSVU4oaW50ZXJuYWxzLnNlbmRNZWRpYVNlc3Npb25BY3Rpb24obmF2aWdhdG9yLm1lZGlh
U2Vzc2lvbiwge2FjdGlvbjogInBhdXNlIn0pKQorQUNUSU9OOiBwYXVzZQorRVhQRUNURUQgKHZp
ZGVvLnBhdXNlZCA9PSAnZmFsc2UnKSBPSworUlVOKGludGVybmFscy5zZW5kTWVkaWFTZXNzaW9u
QWN0aW9uKG5hdmlnYXRvci5tZWRpYVNlc3Npb24sIHthY3Rpb246ICJwYXVzZSJ9KSkKK0VYUEVD
VEVEICh2aWRlby5wYXVzZWQgPT0gJ3RydWUnKSBPSworRU5EIE9GIFRFU1QKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtc2Vzc2lvbi9kZWZhdWx0LWFjdGlvbkhhbmRsZXJz
Lmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zZXNzaW9uL2RlZmF1bHQtYWN0aW9uSGFu
ZGxlcnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hOTJhZmMxYzU5ZmQwYzEzYTUyNGY4MDliZjE1OTVhOWY3
ZDEzNzYzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtc2Vzc2lv
bi9kZWZhdWx0LWFjdGlvbkhhbmRsZXJzLmh0bWwKQEAgLTAsMCArMSw3MCBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDx0aXRsZT5kZWZhdWx0LWFjdGlvbkhhbmRsZXJz
PC90aXRsZT4KKyAgICA8c2NyaXB0IHNyYz0iLi4vdmlkZW8tdGVzdC5qcyI+PC9zY3JpcHQ+Cisg
ICAgPHNjcmlwdCBzcmM9Ii4uL21lZGlhLWZpbGUuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+
CisKKyAgICBhc3luYyBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAgICBpZiAoIXdpbmRvdy5p
bnRlcm5hbHMpIHsKKyAgICAgICAgICAgIGZhaWxUZXN0KCdUaGlzIHRlc3QgcmVxdWlyZXMgSW50
ZXJuYWxzJyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBmaW5k
TWVkaWFFbGVtZW50KCk7CisgICAgICAgIHJ1bigndmlkZW8uc3JjID0gZmluZE1lZGlhRmlsZSgi
dmlkZW8iLCAiLi4vY29udGVudC90ZXN0IiknKTsKKyAgICAgICAgYXdhaXQgd2FpdEZvcih2aWRl
bywgJ2xvYWRlZGRhdGEnKTsKKworICAgICAgICBjb25zb2xlV3JpdGUoJ1Rlc3QgdGhhdCBkZWZh
dWx0IG1lZGlhIGVsZW1lbnQgYWN0aW9uIHdpbGwgYmUgcnVuIHdoZW4gbm8gbWVkaWEgc2Vzc2lv
biBoYW5kbGVycyBleGlzdCBmb3IgdGhhdCBhY3Rpb24uJyk7CisKKyAgICAgICAgdGVzdEV4cGVj
dGVkKCJ2aWRlby5wYXVzZWQiLCB0cnVlKTsKKworICAgICAgICBydW4oJ2ludGVybmFscy5zZW5k
TWVkaWFTZXNzaW9uQWN0aW9uKG5hdmlnYXRvci5tZWRpYVNlc3Npb24sIHthY3Rpb246ICJwbGF5
In0pJyk7CisgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8ucGF1c2VkIiwgZmFsc2UpOworCisg
ICAgICAgIHJ1bignaW50ZXJuYWxzLnNlbmRNZWRpYVNlc3Npb25BY3Rpb24obmF2aWdhdG9yLm1l
ZGlhU2Vzc2lvbiwge2FjdGlvbjogInBhdXNlIn0pJyk7CisgICAgICAgIHRlc3RFeHBlY3RlZCgi
dmlkZW8ucGF1c2VkIiwgdHJ1ZSk7CisKKyAgICAgICAgcnVuKCd2aWRlby5jdXJyZW50VGltZSA9
IDAnKTsKKyAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5jdXJyZW50VGltZSIsIDApOworCisg
ICAgICAgIHJ1bignaW50ZXJuYWxzLnNlbmRNZWRpYVNlc3Npb25BY3Rpb24obmF2aWdhdG9yLm1l
ZGlhU2Vzc2lvbiwge2FjdGlvbjogInNlZWt0byIsIHNlZWtUaW1lOiAxfSknKTsKKyAgICAgICAg
dGVzdEV4cGVjdGVkKCJ2aWRlby5jdXJyZW50VGltZSIsIDEpOworCisgICAgICAgIHJ1bignaW50
ZXJuYWxzLnNlbmRNZWRpYVNlc3Npb25BY3Rpb24obmF2aWdhdG9yLm1lZGlhU2Vzc2lvbiwge2Fj
dGlvbjogInNlZWtmb3J3YXJkIiwgc2Vla09mZnNldDogNX0pJyk7CisgICAgICAgIHRlc3RFeHBl
Y3RlZCgidmlkZW8uY3VycmVudFRpbWUiLCA2KTsKKworICAgICAgICBydW4oJ2ludGVybmFscy5z
ZW5kTWVkaWFTZXNzaW9uQWN0aW9uKG5hdmlnYXRvci5tZWRpYVNlc3Npb24sIHthY3Rpb246ICJz
ZWVrYmFja3dhcmQiLCBzZWVrT2Zmc2V0OiA1fSknKTsKKyAgICAgICAgdGVzdEV4cGVjdGVkKCJ2
aWRlby5jdXJyZW50VGltZSIsIDEpOworCisgICAgICAgIG5hdmlnYXRvci5tZWRpYVNlc3Npb24u
c2V0QWN0aW9uSGFuZGxlcigicGxheSIsIGFjdGlvbkRldGFpbHMgPT4geworICAgICAgICAgICAg
Y29uc29sZVdyaXRlKGBBQ1RJT046ICR7YWN0aW9uRGV0YWlscy5hY3Rpb259YCk7CisgICAgICAg
IH0pOworICAgICAgICBydW4oJ2ludGVybmFscy5zZW5kTWVkaWFTZXNzaW9uQWN0aW9uKG5hdmln
YXRvci5tZWRpYVNlc3Npb24sIHthY3Rpb246ICJwbGF5In0pJyk7CisgICAgICAgIC8vIFBsYXli
YWNrIHNob3VsZG4ndCBoYXZlIHN0YXJ0ZWQgaWYgYSBoYW5kbGVyIGZvciB0aGUgcGxheSBhY3Rp
b24gd2FzIGRlZmluZWQgYW5kIGl0IGRpZCBub3RoaW5nLgorICAgICAgICB0ZXN0RXhwZWN0ZWQo
InZpZGVvLnBhdXNlZCIsIHRydWUpOworCisgICAgICAgIG5hdmlnYXRvci5tZWRpYVNlc3Npb24u
c2V0QWN0aW9uSGFuZGxlcigicGxheSIsIG51bGwpOworICAgICAgICBydW4oJ2ludGVybmFscy5z
ZW5kTWVkaWFTZXNzaW9uQWN0aW9uKG5hdmlnYXRvci5tZWRpYVNlc3Npb24sIHthY3Rpb246ICJw
bGF5In0pJyk7CisgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8ucGF1c2VkIiwgZmFsc2UpOwor
CisgICAgICAgIG5hdmlnYXRvci5tZWRpYVNlc3Npb24uc2V0QWN0aW9uSGFuZGxlcigicGF1c2Ui
LCBhY3Rpb25EZXRhaWxzID0+IHsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZShgQUNUSU9OOiAk
e2FjdGlvbkRldGFpbHMuYWN0aW9ufWApOworICAgICAgICB9KTsKKyAgICAgICAgcnVuKCdpbnRl
cm5hbHMuc2VuZE1lZGlhU2Vzc2lvbkFjdGlvbihuYXZpZ2F0b3IubWVkaWFTZXNzaW9uLCB7YWN0
aW9uOiAicGF1c2UifSknKTsKKyAgICAgICAgLy8gUGxheWJhY2sgc2hvdWxkbid0IGhhdmUgYmVl
biBpbnRlcnJ1cHRlZCBpZiBhIGhhbmRsZXIgZm9yIHRoZSBwYXVzZSBhY3Rpb24gd2FzIGRlZmlu
ZWQgYW5kIGl0IGRpZCBub3RoaW5nLgorICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLnBhdXNl
ZCIsIGZhbHNlKTsKKworICAgICAgICBuYXZpZ2F0b3IubWVkaWFTZXNzaW9uLnNldEFjdGlvbkhh
bmRsZXIoInBhdXNlIiwgbnVsbCk7CisgICAgICAgIHJ1bignaW50ZXJuYWxzLnNlbmRNZWRpYVNl
c3Npb25BY3Rpb24obmF2aWdhdG9yLm1lZGlhU2Vzc2lvbiwge2FjdGlvbjogInBhdXNlIn0pJyk7
CisgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8ucGF1c2VkIiwgdHJ1ZSk7CisKKyAgICAgICAg
ZW5kVGVzdCgpOworICAgIH0KKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0i
cnVuVGVzdCgpIj4KKyAgICA8dmlkZW8gY29udHJvbHMgcHJlbG9hZD0nYXV0byc+PC92aWRlbz4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9t
ZWRpYS92aWRlby1iZXN0LWVsZW1lbnQtZm9yLXBsYXliYWNrLWNvbnRyb2xzLXB1cnBvc2UtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL21lZGlhL3ZpZGVvLWJlc3QtZWxl
bWVudC1mb3ItcGxheWJhY2stY29udHJvbHMtcHVycG9zZS1leHBlY3RlZC50eHQKaW5kZXggOWFj
MDEyNmRjNjAxNjkxMjJjMDQwMzZkMjZiMjBlNTEzMjY5ZmIxZS4uMzI3ZjVkZWM4OWM4YjVmNDRl
MzgwYWY4ZDA2NmZiYjQzYWQ4ZmU4YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL21lZGlhL3ZpZGVvLWJlc3QtZWxlbWVudC1mb3ItcGxheWJhY2stY29udHJvbHMtcHVycG9z
ZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL21lZGlhL3ZpZGVv
LWJlc3QtZWxlbWVudC1mb3ItcGxheWJhY2stY29udHJvbHMtcHVycG9zZS1leHBlY3RlZC50eHQK
QEAgLTEsMzggKzEsMzggQEAKIAogVW5sb2FkZWQgdmlkZW8gZWxlbWVudHMgc2hvdWxkIG5vdCBi
ZSBjb25zaWRlcmVkIG1haW4gY29udGVudC4KLUVYUEVDVEVEIChpbnRlcm5hbHMuYmVzdE1lZGlh
RWxlbWVudEZvclNob3dpbmdQbGF5YmFja0NvbnRyb2xzTWFuYWdlcigiQ29udHJvbHNNYW5hZ2Vy
IikgPT0gJ251bGwnKSBPSworRVhQRUNURUQgKGludGVybmFscy5iZXN0TWVkaWFFbGVtZW50Rm9y
UmVtb3RlQ29udHJvbHMoIkNvbnRyb2xzTWFuYWdlciIpID09ICdudWxsJykgT0sKIAogTGFyZ2Us
IGF1dG9wbGF5IHZpZGVvcyB3aXRoIHZpZGVvIGFuZCBhdWRpbyBzaG91bGQgYmUgY29uc2lkZXJl
ZCBtYWluIGNvbnRlbnQuCiBSVU4odmlkZW8gPSBjcmVhdGVWaWRlbyh7YXV0b3BsYXk6IHRydWUs
IHR5cGU6ICJhdWRpbyt2aWRlbyIsIHNpemU6ICJsYXJnZSJ9KSkKIEVWRU5UKHBsYXlpbmcpCi1F
WFBFQ1RFRCAoaW50ZXJuYWxzLmJlc3RNZWRpYUVsZW1lbnRGb3JTaG93aW5nUGxheWJhY2tDb250
cm9sc01hbmFnZXIoIkNvbnRyb2xzTWFuYWdlciIpID09ICdbb2JqZWN0IEhUTUxWaWRlb0VsZW1l
bnRdJykgT0sKK0VYUEVDVEVEIChpbnRlcm5hbHMuYmVzdE1lZGlhRWxlbWVudEZvclJlbW90ZUNv
bnRyb2xzKCJDb250cm9sc01hbmFnZXIiKSA9PSAnW29iamVjdCBIVE1MVmlkZW9FbGVtZW50XScp
IE9LCiAKIFNtYWxsLCBhdXRvcGxheSB2aWRlb3Mgd2l0aCB2aWRlbyBhbmQgYXVkaW8gc2hvdWxk
IGJlIGNvbnNpZGVyZWQgbWFpbiBjb250ZW50LgogUlVOKHZpZGVvID0gY3JlYXRlVmlkZW8oe2F1
dG9wbGF5OiB0cnVlLCB0eXBlOiAiYXVkaW8rdmlkZW8iLCBzaXplOiAic21hbGwifSkpCiBFVkVO
VChwbGF5aW5nKQotRVhQRUNURUQgKGludGVybmFscy5iZXN0TWVkaWFFbGVtZW50Rm9yU2hvd2lu
Z1BsYXliYWNrQ29udHJvbHNNYW5hZ2VyKCJDb250cm9sc01hbmFnZXIiKSA9PSAnbnVsbCcpIE9L
CitFWFBFQ1RFRCAoaW50ZXJuYWxzLmJlc3RNZWRpYUVsZW1lbnRGb3JSZW1vdGVDb250cm9scygi
Q29udHJvbHNNYW5hZ2VyIikgPT0gJ251bGwnKSBPSwogCiBNdXRlZCBhdXRvcGxheSB2aWRlb3Mg
c2hvdWxkIG5vdCBiZSBjb25zaWRlcmVkIG1haW4gY29udGVudC4KIFJVTih2aWRlbyA9IGNyZWF0
ZVZpZGVvKHthdXRvcGxheTogdHJ1ZSwgbXV0ZWQ6IHRydWUsIHR5cGU6ICJhdWRpbyt2aWRlbyIs
IHNpemU6ICJsYXJnZSJ9KSkKIEVWRU5UKHBsYXlpbmcpCi1FWFBFQ1RFRCAoaW50ZXJuYWxzLmJl
c3RNZWRpYUVsZW1lbnRGb3JTaG93aW5nUGxheWJhY2tDb250cm9sc01hbmFnZXIoIkNvbnRyb2xz
TWFuYWdlciIpID09ICdudWxsJykgT0sKK0VYUEVDVEVEIChpbnRlcm5hbHMuYmVzdE1lZGlhRWxl
bWVudEZvclJlbW90ZUNvbnRyb2xzKCJDb250cm9sc01hbmFnZXIiKSA9PSAnbnVsbCcpIE9LCiAK
IFZpZGVvLW9ubHkgYXV0b3BsYXkgdmlkZW9zIHNob3VsZCBub3QgYmUgY29uc2lkZXJlZCBtYWlu
IGNvbnRlbnQuCiBSVU4odmlkZW8gPSBjcmVhdGVWaWRlbyh7YXV0b3BsYXk6IHRydWUsIHR5cGU6
ICJ2aWRlbyIsIHNpemU6ICJsYXJnZSJ9KSkKIEVWRU5UKHBsYXlpbmcpCi1FWFBFQ1RFRCAoaW50
ZXJuYWxzLmJlc3RNZWRpYUVsZW1lbnRGb3JTaG93aW5nUGxheWJhY2tDb250cm9sc01hbmFnZXIo
IkNvbnRyb2xzTWFuYWdlciIpID09ICdudWxsJykgT0sKK0VYUEVDVEVEIChpbnRlcm5hbHMuYmVz
dE1lZGlhRWxlbWVudEZvclJlbW90ZUNvbnRyb2xzKCJDb250cm9sc01hbmFnZXIiKSA9PSAnbnVs
bCcpIE9LCiAKIE5vbi1wbGF5aW5nIHZpZGVvcyBzaG91bGQgbm90IGJlIGNvbnNpZGVyZWQgbWFp
biBjb250ZW50LgogUlVOKHZpZGVvID0gY3JlYXRlVmlkZW8oe3R5cGU6ICJhdWRpbyt2aWRlbyIs
IHNpemU6ICJsYXJnZSJ9KSkKIEVWRU5UKGNhbnBsYXl0aHJvdWdoKQotRVhQRUNURUQgKGludGVy
bmFscy5iZXN0TWVkaWFFbGVtZW50Rm9yU2hvd2luZ1BsYXliYWNrQ29udHJvbHNNYW5hZ2VyKCJD
b250cm9sc01hbmFnZXIiKSA9PSAnbnVsbCcpIE9LCitFWFBFQ1RFRCAoaW50ZXJuYWxzLmJlc3RN
ZWRpYUVsZW1lbnRGb3JSZW1vdGVDb250cm9scygiQ29udHJvbHNNYW5hZ2VyIikgPT0gJ251bGwn
KSBPSwogCiBMYXJnZSwgYXV0b3BsYXkgdmlkZW9zIG91dHNpZGUgZnVsbHNjcmVlbiBlbGVtZW50
IHNob3VsZCBub3QgYmUgY29uc2lkZXJlZCBtYWluIGNvbnRlbnQKIFJVTih2aWRlbyA9IGNyZWF0
ZVZpZGVvKHthdXRvcGxheTogdHJ1ZSwgbXV0ZWQ6IHRydWUsIHR5cGU6ICJhdWRpbyt2aWRlbyIs
IHNpemU6ICJsYXJnZSJ9KSkKIEVWRU5UKHBsYXlpbmcpCiBSVU4oZG9jdW1lbnQucXVlcnlTZWxl
Y3RvcigiI2Z1bGxzY3JlZW4iKS53ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbigpKQogRVZFTlQod2Vi
a2l0ZnVsbHNjcmVlbmNoYW5nZSkKLUVYUEVDVEVEIChpbnRlcm5hbHMuYmVzdE1lZGlhRWxlbWVu
dEZvclNob3dpbmdQbGF5YmFja0NvbnRyb2xzTWFuYWdlcigiQ29udHJvbHNNYW5hZ2VyIikgPT0g
J251bGwnKSBPSworRVhQRUNURUQgKGludGVybmFscy5iZXN0TWVkaWFFbGVtZW50Rm9yUmVtb3Rl
Q29udHJvbHMoIkNvbnRyb2xzTWFuYWdlciIpID09ICdudWxsJykgT0sKIFJVTihkb2N1bWVudC53
ZWJraXRFeGl0RnVsbHNjcmVlbigpKQogRVZFTlQod2Via2l0ZnVsbHNjcmVlbmNoYW5nZSkKIApA
QCAtNDEsNyArNDEsNyBAQCBSVU4odmlkZW8gPSBjcmVhdGVWaWRlbyh7YXV0b3BsYXk6IHRydWUs
IHR5cGU6ICJhdWRpbyt2aWRlbyIsIHNpemU6ICJsYXJnZSJ9KSkKIEVWRU5UKHBsYXlpbmcpCiBS
VU4oZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI3RhcmdldCIpLndlYmtpdFJlcXVlc3RGdWxsc2Ny
ZWVuKCkpCiBFVkVOVCh3ZWJraXRmdWxsc2NyZWVuY2hhbmdlKQotRVhQRUNURUQgKGludGVybmFs
cy5iZXN0TWVkaWFFbGVtZW50Rm9yU2hvd2luZ1BsYXliYWNrQ29udHJvbHNNYW5hZ2VyKCJDb250
cm9sc01hbmFnZXIiKSA9PSAnW29iamVjdCBIVE1MVmlkZW9FbGVtZW50XScpIE9LCitFWFBFQ1RF
RCAoaW50ZXJuYWxzLmJlc3RNZWRpYUVsZW1lbnRGb3JSZW1vdGVDb250cm9scygiQ29udHJvbHNN
YW5hZ2VyIikgPT0gJ1tvYmplY3QgSFRNTFZpZGVvRWxlbWVudF0nKSBPSwogUlVOKGRvY3VtZW50
LndlYmtpdEV4aXRGdWxsc2NyZWVuKCkpCiBFVkVOVCh3ZWJraXRmdWxsc2NyZWVuY2hhbmdlKQog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvbWVkaWEvdmlkZW8tYmVzdC1l
bGVtZW50LWZvci1wbGF5YmFjay1jb250cm9scy1wdXJwb3NlLmh0bWwgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvbWVkaWEvdmlkZW8tYmVzdC1lbGVtZW50LWZvci1wbGF5YmFjay1jb250cm9s
cy1wdXJwb3NlLmh0bWwKaW5kZXggMmY2N2IxMjBmYzc5YWE0MzNlY2Y3ZTMwMjdjZGEyYjJkZDA2
NDQ4ZC4uYmE5MDgzNGFhYTk1MTJjNjExYmIxMTkyY2VlYTJlZWYxMmQ1YzUyZiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL21lZGlhL3ZpZGVvLWJlc3QtZWxlbWVudC1mb3It
cGxheWJhY2stY29udHJvbHMtcHVycG9zZS5odG1sCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9tZWRpYS92aWRlby1iZXN0LWVsZW1lbnQtZm9yLXBsYXliYWNrLWNvbnRyb2xzLXB1cnBv
c2UuaHRtbApAQCAtNjMsNDIgKzYzLDQyIEBACiAgICAgICAgIGZ1bmN0aW9uKCkgewogICAgICAg
ICAgICAgY29uc29sZVdyaXRlKCdVbmxvYWRlZCB2aWRlbyBlbGVtZW50cyBzaG91bGQgbm90IGJl
IGNvbnNpZGVyZWQgbWFpbiBjb250ZW50LicpOwogICAgICAgICAgICAgdmlkZW8gPSBjcmVhdGVW
aWRlbygpOwotICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdpbnRlcm5hbHMuYmVzdE1lZGlhRWxl
bWVudEZvclNob3dpbmdQbGF5YmFja0NvbnRyb2xzTWFuYWdlcigiQ29udHJvbHNNYW5hZ2VyIikn
LCBudWxsKQorICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdpbnRlcm5hbHMuYmVzdE1lZGlhRWxl
bWVudEZvclJlbW90ZUNvbnRyb2xzKCJDb250cm9sc01hbmFnZXIiKScsIG51bGwpCiAgICAgICAg
IH0sCiAKICAgICAgICAgYXN5bmMgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICBjb25zb2xlV3Jp
dGUoJ0xhcmdlLCBhdXRvcGxheSB2aWRlb3Mgd2l0aCB2aWRlbyBhbmQgYXVkaW8gc2hvdWxkIGJl
IGNvbnNpZGVyZWQgbWFpbiBjb250ZW50LicpCiAgICAgICAgICAgICBydW4oJ3ZpZGVvID0gY3Jl
YXRlVmlkZW8oe2F1dG9wbGF5OiB0cnVlLCB0eXBlOiAiYXVkaW8rdmlkZW8iLCBzaXplOiAibGFy
Z2UifSknKTsKICAgICAgICAgICAgIGF3YWl0IHdhaXRGb3IodmlkZW8sICdwbGF5aW5nJyk7Ci0g
ICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ2ludGVybmFscy5iZXN0TWVkaWFFbGVtZW50Rm9yU2hv
d2luZ1BsYXliYWNrQ29udHJvbHNNYW5hZ2VyKCJDb250cm9sc01hbmFnZXIiKScsIHZpZGVvKQor
ICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdpbnRlcm5hbHMuYmVzdE1lZGlhRWxlbWVudEZvclJl
bW90ZUNvbnRyb2xzKCJDb250cm9sc01hbmFnZXIiKScsIHZpZGVvKQogICAgICAgICB9LAogCiAg
ICAgICAgIGFzeW5jIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgY29uc29sZVdyaXRlKCdTbWFs
bCwgYXV0b3BsYXkgdmlkZW9zIHdpdGggdmlkZW8gYW5kIGF1ZGlvIHNob3VsZCBiZSBjb25zaWRl
cmVkIG1haW4gY29udGVudC4nKQogICAgICAgICAgICAgcnVuKCd2aWRlbyA9IGNyZWF0ZVZpZGVv
KHthdXRvcGxheTogdHJ1ZSwgdHlwZTogImF1ZGlvK3ZpZGVvIiwgc2l6ZTogInNtYWxsIn0pJyk7
CiAgICAgICAgICAgICBhd2FpdCB3YWl0Rm9yKHZpZGVvLCAncGxheWluZycpOwotICAgICAgICAg
ICAgdGVzdEV4cGVjdGVkKCdpbnRlcm5hbHMuYmVzdE1lZGlhRWxlbWVudEZvclNob3dpbmdQbGF5
YmFja0NvbnRyb2xzTWFuYWdlcigiQ29udHJvbHNNYW5hZ2VyIiknLCBudWxsKQorICAgICAgICAg
ICAgdGVzdEV4cGVjdGVkKCdpbnRlcm5hbHMuYmVzdE1lZGlhRWxlbWVudEZvclJlbW90ZUNvbnRy
b2xzKCJDb250cm9sc01hbmFnZXIiKScsIG51bGwpCiAgICAgICAgIH0sCiAKICAgICAgICAgYXN5
bmMgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICBjb25zb2xlV3JpdGUoJ011dGVkIGF1dG9wbGF5
IHZpZGVvcyBzaG91bGQgbm90IGJlIGNvbnNpZGVyZWQgbWFpbiBjb250ZW50LicpCiAgICAgICAg
ICAgICBydW4oJ3ZpZGVvID0gY3JlYXRlVmlkZW8oe2F1dG9wbGF5OiB0cnVlLCBtdXRlZDogdHJ1
ZSwgdHlwZTogImF1ZGlvK3ZpZGVvIiwgc2l6ZTogImxhcmdlIn0pJyk7CiAgICAgICAgICAgICBh
d2FpdCB3YWl0Rm9yKHZpZGVvLCAncGxheWluZycpOwotICAgICAgICAgICAgdGVzdEV4cGVjdGVk
KCdpbnRlcm5hbHMuYmVzdE1lZGlhRWxlbWVudEZvclNob3dpbmdQbGF5YmFja0NvbnRyb2xzTWFu
YWdlcigiQ29udHJvbHNNYW5hZ2VyIiknLCBudWxsKQorICAgICAgICAgICAgdGVzdEV4cGVjdGVk
KCdpbnRlcm5hbHMuYmVzdE1lZGlhRWxlbWVudEZvclJlbW90ZUNvbnRyb2xzKCJDb250cm9sc01h
bmFnZXIiKScsIG51bGwpCiAgICAgICAgIH0sCiAKICAgICAgICAgYXN5bmMgZnVuY3Rpb24oKSB7
CiAgICAgICAgICAgICBjb25zb2xlV3JpdGUoJ1ZpZGVvLW9ubHkgYXV0b3BsYXkgdmlkZW9zIHNo
b3VsZCBub3QgYmUgY29uc2lkZXJlZCBtYWluIGNvbnRlbnQuJykKICAgICAgICAgICAgIHJ1bign
dmlkZW8gPSBjcmVhdGVWaWRlbyh7YXV0b3BsYXk6IHRydWUsIHR5cGU6ICJ2aWRlbyIsIHNpemU6
ICJsYXJnZSJ9KScpOwogICAgICAgICAgICAgYXdhaXQgd2FpdEZvcih2aWRlbywgJ3BsYXlpbmcn
KTsKLSAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgnaW50ZXJuYWxzLmJlc3RNZWRpYUVsZW1lbnRG
b3JTaG93aW5nUGxheWJhY2tDb250cm9sc01hbmFnZXIoIkNvbnRyb2xzTWFuYWdlciIpJywgbnVs
bCkKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgnaW50ZXJuYWxzLmJlc3RNZWRpYUVsZW1lbnRG
b3JSZW1vdGVDb250cm9scygiQ29udHJvbHNNYW5hZ2VyIiknLCBudWxsKQogICAgICAgICB9LAog
CiAgICAgICAgIGFzeW5jIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgY29uc29sZVdyaXRlKCdO
b24tcGxheWluZyB2aWRlb3Mgc2hvdWxkIG5vdCBiZSBjb25zaWRlcmVkIG1haW4gY29udGVudC4n
KQogICAgICAgICAgICAgcnVuKCd2aWRlbyA9IGNyZWF0ZVZpZGVvKHt0eXBlOiAiYXVkaW8rdmlk
ZW8iLCBzaXplOiAibGFyZ2UifSknKTsKICAgICAgICAgICAgIGF3YWl0IHdhaXRGb3IodmlkZW8s
ICdjYW5wbGF5dGhyb3VnaCcpOwotICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdpbnRlcm5hbHMu
YmVzdE1lZGlhRWxlbWVudEZvclNob3dpbmdQbGF5YmFja0NvbnRyb2xzTWFuYWdlcigiQ29udHJv
bHNNYW5hZ2VyIiknLCBudWxsKQorICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdpbnRlcm5hbHMu
YmVzdE1lZGlhRWxlbWVudEZvclJlbW90ZUNvbnRyb2xzKCJDb250cm9sc01hbmFnZXIiKScsIG51
bGwpCiAgICAgICAgIH0sCiAKICAgICAgICAgYXN5bmMgZnVuY3Rpb24oKSB7CkBAIC0xMDYsNyAr
MTA2LDcgQEAKICAgICAgICAgICAgIHJ1bigndmlkZW8gPSBjcmVhdGVWaWRlbyh7YXV0b3BsYXk6
IHRydWUsIG11dGVkOiB0cnVlLCB0eXBlOiAiYXVkaW8rdmlkZW8iLCBzaXplOiAibGFyZ2UifSkn
KTsKICAgICAgICAgICAgIGF3YWl0IHdhaXRGb3IodmlkZW8sICdwbGF5aW5nJyk7CiAgICAgICAg
ICAgICBhd2FpdCBlbnRlckZ1bGxzY3JlZW4oJyNmdWxsc2NyZWVuJyk7Ci0gICAgICAgICAgICB0
ZXN0RXhwZWN0ZWQoJ2ludGVybmFscy5iZXN0TWVkaWFFbGVtZW50Rm9yU2hvd2luZ1BsYXliYWNr
Q29udHJvbHNNYW5hZ2VyKCJDb250cm9sc01hbmFnZXIiKScsIG51bGwpOworICAgICAgICAgICAg
dGVzdEV4cGVjdGVkKCdpbnRlcm5hbHMuYmVzdE1lZGlhRWxlbWVudEZvclJlbW90ZUNvbnRyb2xz
KCJDb250cm9sc01hbmFnZXIiKScsIG51bGwpOwogICAgICAgICAgICAgYXdhaXQgZXhpdEZ1bGxz
Y3JlZW4oKTsKICAgICAgICAgfSwKIApAQCAtMTE1LDcgKzExNSw3IEBACiAgICAgICAgICAgICBy
dW4oJ3ZpZGVvID0gY3JlYXRlVmlkZW8oe2F1dG9wbGF5OiB0cnVlLCB0eXBlOiAiYXVkaW8rdmlk
ZW8iLCBzaXplOiAibGFyZ2UifSknKTsKICAgICAgICAgICAgIGF3YWl0IHdhaXRGb3IodmlkZW8s
ICdwbGF5aW5nJyk7CiAgICAgICAgICAgICBhd2FpdCBlbnRlckZ1bGxzY3JlZW4oJyN0YXJnZXQn
KTsKLSAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgnaW50ZXJuYWxzLmJlc3RNZWRpYUVsZW1lbnRG
b3JTaG93aW5nUGxheWJhY2tDb250cm9sc01hbmFnZXIoIkNvbnRyb2xzTWFuYWdlciIpJywgdmlk
ZW8pOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCdpbnRlcm5hbHMuYmVzdE1lZGlhRWxlbWVu
dEZvclJlbW90ZUNvbnRyb2xzKCJDb250cm9sc01hbmFnZXIiKScsIHZpZGVvKTsKICAgICAgICAg
ICAgIGF3YWl0IGV4aXRGdWxsc2NyZWVuKCk7CiAgICAgICAgIH0sCiAgICAgXTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>