<?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>158148</bug_id>
          
          <creation_ts>2016-05-27 01:28:04 -0700</creation_ts>
          <short_desc>Decrease flicker when changing video presentation mode.</short_desc>
          <delta_ts>2016-07-07 12:22:19 -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>Mac</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jeremy Jones">jeremyj-wk</reporter>
          <assigned_to name="Jeremy Jones">jeremyj-wk</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jonlee</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1197010</commentid>
    <comment_count>0</comment_count>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2016-05-27 01:28:04 -0700</bug_when>
    <thetext>Decrease flicker when changing video presentation mode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197011</commentid>
    <comment_count>1</comment_count>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2016-05-27 01:29:32 -0700</bug_when>
    <thetext>rdar://problem/24476949</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197019</commentid>
    <comment_count>2</comment_count>
      <attachid>279949</attachid>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2016-05-27 02:02:10 -0700</bug_when>
    <thetext>Created attachment 279949
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197079</commentid>
    <comment_count>3</comment_count>
      <attachid>279963</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2016-05-27 09:01:46 -0700</bug_when>
    <thetext>Created attachment 279963
Patch

Rebaselined Jeremy&apos;s patch for EWS to chew on</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197093</commentid>
    <comment_count>4</comment_count>
      <attachid>279963</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2016-05-27 10:00:14 -0700</bug_when>
    <thetext>Comment on attachment 279963
Patch

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

Needs cleanup.

&gt; Source/WebCore/ChangeLog:24
&gt; +        (Controller.prototype.handlePresentationModeChange): Wait to show placeholder, and notify when placehodler is removed.

Placeholder*

&gt; Source/WebCore/Modules/mediacontrols/mediaControlsApple.js:841
&gt; +        if (this.presentationMode() == &apos;picture-in-picture&apos;) {

Nit: reverse the logic and return early to reduce indenting.

&gt; Source/WebCore/Modules/mediacontrols/mediaControlsApple.js:842
&gt; +            if (!this.host.isVideoLayerInline) {

Nit: No brace needed.

&gt; Source/WebCore/Modules/mediacontrols/mediaControlsApple.js:844
&gt; +            } else {

Nit: No brace needed.

&gt; Source/WebCore/Modules/mediacontrols/mediaControlsApple.js:845
&gt; +                setTimeout(this.showInlinePlaybackPlaceholderWhenSafe.bind(this), 33);

Is this a standard value to wait before retrying?

&gt; Source/WebCore/html/HTMLMediaElement.cpp:5475
&gt; +{

All of this needs to be wrapped up in #if.

&gt; Source/WebCore/html/HTMLMediaElement.cpp:5478
&gt; +        m_perpareForInlineCompletionHandler();

Spelling error.

Could we name it similarly to the bool, like m_preparedForInlineCompletionHandler? I was initially confused by the difference in tenses.

&gt; Source/WebCore/html/HTMLMediaElement.h:127
&gt; +    bool isVideoLayerInline() { return m_videoFullscreenLayer == nil; };

Causing build errors: needs to be moved to .cpp with alternate path for other platforms.

&gt; Source/WebCore/html/HTMLMediaElement.h:129
&gt; +    bool m_preparedForInline;

Should be moved down with other variables.

&gt; Source/WebCore/html/HTMLMediaElement.h:141
&gt; +    std::function&lt;void()&gt; m_perpareForInlineCompletionHandler;

Spelling error. Should be moved down with other variables.

&gt; Source/WebCore/platform/graphics/avfoundation/objc/VideoFullscreenLayerManager.mm:154
&gt; +    } else

Since it&apos;s multiple lines, I&apos;d wrap with braces.

&gt; Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:263
&gt; +        m_model-&gt;setVideoFullscreenLayer(nil, [protectdThis, this] {

Misspelled protectedThis!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197147</commentid>
    <comment_count>5</comment_count>
      <attachid>279963</attachid>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2016-05-27 12:07:58 -0700</bug_when>
    <thetext>Comment on attachment 279963
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:24
&gt;&gt; +        (Controller.prototype.handlePresentationModeChange): Wait to show placeholder, and notify when placehodler is removed.
&gt; 
&gt; Placeholder*

Fixed 2x

&gt;&gt; Source/WebCore/Modules/mediacontrols/mediaControlsApple.js:841
&gt;&gt; +        if (this.presentationMode() == &apos;picture-in-picture&apos;) {
&gt; 
&gt; Nit: reverse the logic and return early to reduce indenting.

Reversed..

&gt;&gt; Source/WebCore/Modules/mediacontrols/mediaControlsApple.js:842
&gt;&gt; +            if (!this.host.isVideoLayerInline) {
&gt; 
&gt; Nit: No brace needed.

Removed.

&gt;&gt; Source/WebCore/Modules/mediacontrols/mediaControlsApple.js:844
&gt;&gt; +            } else {
&gt; 
&gt; Nit: No brace needed.

Removed.

&gt;&gt; Source/WebCore/Modules/mediacontrols/mediaControlsApple.js:845
&gt;&gt; +                setTimeout(this.showInlinePlaybackPlaceholderWhenSafe.bind(this), 33);
&gt; 
&gt; Is this a standard value to wait before retrying?

This is polling 30x a second :-( . I can make a constant, but is there a way to have HTMLMediaElement call a JS function to update this value instead of having JS poll for it? I don&apos;t think I can add an event that is only exposed to the shadow DOM.

&gt;&gt; Source/WebCore/html/HTMLMediaElement.cpp:5475
&gt;&gt; +{
&gt; 
&gt; All of this needs to be wrapped up in #if.

I think this can work without the #if. Platforms that don&apos;t need it don&apos;t have to use it, but there is nothing platform specific about the implementation.

&gt;&gt; Source/WebCore/html/HTMLMediaElement.cpp:5478
&gt;&gt; +        m_perpareForInlineCompletionHandler();
&gt; 
&gt; Spelling error.
&gt; 
&gt; Could we name it similarly to the bool, like m_preparedForInlineCompletionHandler? I was initially confused by the difference in tenses.

Changed to m_preparedForInlineCompletionHandler

Should I also rename 
   void prepareForInline(std::function&lt;void()&gt; completionHandler = [] { }); 
to
  whenPreparedForInline(...
I&apos;m not sure if we have a pattern for this.

&gt;&gt; Source/WebCore/html/HTMLMediaElement.h:127
&gt;&gt; +    bool isVideoLayerInline() { return m_videoFullscreenLayer == nil; };
&gt; 
&gt; Causing build errors: needs to be moved to .cpp with alternate path for other platforms.

Moved. Added alternate implementation that always returns true.

&gt;&gt; Source/WebCore/html/HTMLMediaElement.h:129
&gt;&gt; +    bool m_preparedForInline;
&gt; 
&gt; Should be moved down with other variables.

Moved down to near m_videoFullscreenLayer.

&gt;&gt; Source/WebCore/html/HTMLMediaElement.h:141
&gt;&gt; +    std::function&lt;void()&gt; m_perpareForInlineCompletionHandler;
&gt; 
&gt; Spelling error. Should be moved down with other variables.

Renamed. Moved down to near m_videoFullscreenLayer.

&gt;&gt; Source/WebCore/platform/graphics/avfoundation/objc/VideoFullscreenLayerManager.mm:154
&gt;&gt; +    } else
&gt; 
&gt; Since it&apos;s multiple lines, I&apos;d wrap with braces.

Braces added.

&gt;&gt; Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:263
&gt;&gt; +        m_model-&gt;setVideoFullscreenLayer(nil, [protectdThis, this] {
&gt; 
&gt; Misspelled protectedThis!

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197161</commentid>
    <comment_count>6</comment_count>
      <attachid>279982</attachid>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2016-05-27 12:19:31 -0700</bug_when>
    <thetext>Created attachment 279982
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197172</commentid>
    <comment_count>7</comment_count>
      <attachid>279982</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2016-05-27 12:34:47 -0700</bug_when>
    <thetext>Comment on attachment 279982
Patch

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

&gt; Source/WebCore/html/HTMLMediaElement.cpp:5483
&gt; +void HTMLMediaElement::prepareForInline(std::function&lt;void()&gt; completionHandler)

In a previous patch you asked about renaming this to whenPreparedForInline().

Maybe we could model it like a promise, since it&apos;s waiting for something to be resolved (a flag to be set) before invoking the completion handler. So maybe: waitForPreparedForInlineThen(completionHandler)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197198</commentid>
    <comment_count>8</comment_count>
      <attachid>279988</attachid>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2016-05-27 13:45:38 -0700</bug_when>
    <thetext>Created attachment 279988
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197200</commentid>
    <comment_count>9</comment_count>
      <attachid>279989</attachid>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2016-05-27 13:49:06 -0700</bug_when>
    <thetext>Created attachment 279989
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197201</commentid>
    <comment_count>10</comment_count>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2016-05-27 13:49:39 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Comment on attachment 279982 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=279982&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/html/HTMLMediaElement.cpp:5483
&gt; &gt; +void HTMLMediaElement::prepareForInline(std::function&lt;void()&gt; completionHandler)
&gt; 
&gt; In a previous patch you asked about renaming this to whenPreparedForInline().
&gt; 
&gt; Maybe we could model it like a promise, since it&apos;s waiting for something to
&gt; be resolved (a flag to be set) before invoking the completion handler. So
&gt; maybe: waitForPreparedForInlineThen(completionHandler)?

renamed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197202</commentid>
    <comment_count>11</comment_count>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2016-05-27 13:50:49 -0700</bug_when>
    <thetext>Also s/nil/nullptr/ to fix gtk and elf.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197229</commentid>
    <comment_count>12</comment_count>
      <attachid>279989</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-05-27 14:59:51 -0700</bug_when>
    <thetext>Comment on attachment 279989
Patch

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

&gt; Source/WebCore/Modules/mediacontrols/mediaControlsApple.js:847
&gt; +            setTimeout(this.showInlinePlaybackPlaceholderWhenSafe.bind(this), 33);

33!?

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:771
&gt; +    [m_secondaryVideoLayer.get() setPlayer:nil];

No .get() here (or the others).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197232</commentid>
    <comment_count>13</comment_count>
      <attachid>279989</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2016-05-27 15:06:11 -0700</bug_when>
    <thetext>Comment on attachment 279989
Patch

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

&gt; Source/WebCore/Modules/mediacontrols/mediaControlsApple.js:847
&gt; +            setTimeout(this.showInlinePlaybackPlaceholderWhenSafe.bind(this), 33);

Magic #?

&gt; Source/WebCore/html/HTMLMediaElement.cpp:5498
&gt; +    return m_videoFullscreenLayer == nil;

!m_videoFullscreenLayer

&gt; Source/WebCore/html/HTMLMediaElement.cpp:5534
&gt; +    return true;

Is this true for ports which don&apos;t support the full screen API?

Apart from these nits /questions, lgtm, but this needs a WK2 reviewer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197237</commentid>
    <comment_count>14</comment_count>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2016-05-27 15:21:19 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Comment on attachment 279989 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=279989&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/mediacontrols/mediaControlsApple.js:847
&gt; &gt; +            setTimeout(this.showInlinePlaybackPlaceholderWhenSafe.bind(this), 33);
&gt; 
&gt; 33!?

I&apos;ll make a constant for it. I have a follow-up change to remove this polling.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:771
&gt; &gt; +    [m_secondaryVideoLayer.get() setPlayer:nil];
&gt; 
&gt; No .get() here (or the others).

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197240</commentid>
    <comment_count>15</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-05-27 15:25:28 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #12)
&gt; &gt; Comment on attachment 279989 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=279989&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/Modules/mediacontrols/mediaControlsApple.js:847
&gt; &gt; &gt; +            setTimeout(this.showInlinePlaybackPlaceholderWhenSafe.bind(this), 33);
&gt; &gt; 
&gt; &gt; 33!?
&gt; 
&gt; I&apos;ll make a constant for it. I have a follow-up change to remove this
&gt; polling.

&gt; Apart from these nits /questions, lgtm, but this needs a WK2 reviewer.

As long as ^^ this happens, this is fine with me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197243</commentid>
    <comment_count>16</comment_count>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2016-05-27 15:27:12 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; Comment on attachment 279989 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=279989&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/mediacontrols/mediaControlsApple.js:847
&gt; &gt; +            setTimeout(this.showInlinePlaybackPlaceholderWhenSafe.bind(this), 33);
&gt; 
&gt; Magic #?

I&apos;ll add a constant. There is a follow-up change to remove the polling.
&gt; 
&gt; &gt; Source/WebCore/html/HTMLMediaElement.cpp:5498
&gt; &gt; +    return m_videoFullscreenLayer == nil;
&gt; 
&gt; !m_videoFullscreenLayer

Done.
 
&gt; 
&gt; &gt; Source/WebCore/html/HTMLMediaElement.cpp:5534
&gt; &gt; +    return true;
&gt; 
&gt; Is this true for ports which don&apos;t support the full screen API?

Video layer is always inline if there is no fullscreen. Right now, is only used by mediaControlsApple.js And it is only needed if a platform moves the video layer around outside the DOM and coordinate those changes in the DOM.

&gt; 
&gt; Apart from these nits /questions, lgtm, but this needs a WK2 reviewer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197254</commentid>
    <comment_count>17</comment_count>
      <attachid>280005</attachid>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2016-05-27 15:59:06 -0700</bug_when>
    <thetext>Created attachment 280005
Patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197269</commentid>
    <comment_count>18</comment_count>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2016-05-27 16:26:39 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #14)
&gt; &gt; (In reply to comment #12)
&gt; &gt; &gt; Comment on attachment 279989 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; View in context:
&gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=279989&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebCore/Modules/mediacontrols/mediaControlsApple.js:847
&gt; &gt; &gt; &gt; +            setTimeout(this.showInlinePlaybackPlaceholderWhenSafe.bind(this), 33);
&gt; &gt; &gt; 
&gt; &gt; &gt; 33!?
&gt; &gt; 
&gt; &gt; I&apos;ll make a constant for it. I have a follow-up change to remove this
&gt; &gt; polling.
&gt; 
&gt; &gt; Apart from these nits /questions, lgtm, but this needs a WK2 reviewer.
&gt; 
&gt; As long as ^^ this happens, this is fine with me.

Added. I&apos;m assuming your &quot;TIFWM&quot; is an R+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197277</commentid>
    <comment_count>19</comment_count>
      <attachid>280005</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-27 16:57:16 -0700</bug_when>
    <thetext>Comment on attachment 280005
Patch for landing.

Clearing flags on attachment: 280005

Committed r201474: &lt;http://trac.webkit.org/changeset/201474&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208725</commentid>
    <comment_count>20</comment_count>
      <attachid>279989</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-07-07 12:22:19 -0700</bug_when>
    <thetext>Comment on attachment 279989
Patch

Clearing flags now that this bug is landed and closed.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>279949</attachid>
            <date>2016-05-27 02:02:10 -0700</date>
            <delta_ts>2016-05-27 09:01:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158148-20160527020321.patch</filename>
            <type>text/plain</type>
            <size>44464</size>
            <attacher name="Jeremy Jones">jeremyj-wk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxMDY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGZjMTE5NmRhYmMyZTIz
NWNhMWZkOGE2YTBkZjViNDA1YjA1NGExZC4uNTc5ZDk1YWU5ODg5MjgxNjk2MjEwODZjYzE4Yjky
ZjM3Mzc1ZDBiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDE2LTA1LTI3ICBKZXJl
bXkgSm9uZXMgIDxqZXJlbXlqQGFwcGxlLmNvbT4KKworICAgICAgICBEZWNyZWFzZSBmbGlja2Vy
IHdoZW4gY2hhbmdpbmcgdmlkZW8gcHJlc2VudGF0aW9uIG1vZGUuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTgxNDgKKyAgICAgICAgcmRhcjovL3By
b2JsZW0vMjQ0NzY5NDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGVyZSBpcyBubyBiZWhhdmlvciBjaGFuZ2Uu
IFRoaXMgY2hhbmdlIGlzIGFib3V0IHRoZSB0aW1pbmcgb2YKKyAgICAgICAgbW92aW5nIEFWUGxh
eWVyTGF5ZXJzIGJldHdlZW4gbGF5ZXJzIHRvIHByZXZlbnQgZmxpY2tlci4KKworICAgICAgICAx
KSBNb3ZpbmcgYW4gQVZQbGF5ZXJMYXllciBiZXR3ZWVuIENBQ29udGV4dHMgY2FuIGZsaWNrZXIu
IFNvIGFsd2F5cyBrZWVwIHR3bworICAgICAgICBBVlBsYXllckxheWVycyBhcm91bmQgYW5kIGFk
ZCBhbmQgcmVtb3ZlIHRoZW0gZnJvbSB0aGUgaW5saW5lIGFuZCBmdWxsc2NyZWVuIGNvbnRleHRz
LgorICAgICAgICAyKSBXYWl0IHRvIHNob3cgdGhlIGlubGluZSBwbGFjZWhvbGRlciB1bnRpbCB0
aGUgZnVsbHNjcmVlbiB2aWRlbyBsYXllciBoYXMgYmVlbiBpbnN0YWxsZWQuCisgICAgICAgIDMp
IFdhaXQgdG8gcmVtb3ZlIHRoZSBmdWxsc2NyZWVuIHZpZGVvIGxheWVyIHVudGlsIHRoZSBwbGFj
ZWhvbGRlciBoYXMgYmVlbiByZW1vdmVkLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYWNvbnRy
b2xzL01lZGlhQ29udHJvbHNIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJv
bHNIb3N0Ojppc1ZpZGVvTGF5ZXJJbmxpbmUpOiBFeHBvc2UgaXNWaWRlb0xheWVySW5saW5lIHRv
IHRoZSBzaGFkb3cgRE9NLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sc0hvc3Q6OnNl
dFByZXBhcmVkRm9ySW5saW5lKTogRXhwb3NlIHNldFByZXBhcmVkRm9ySW5saW5lIHRvIHRoZSBz
aGFkb3cgRE9NLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xz
SG9zdC5oOiBBZGQgc2V0UHJlcGFyZWRGb3JJbmxpbmUgYW5kIGlzVmlkZW9MYXllcklubGluZQor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5pZGw6IEFk
ZCBzZXRQcmVwYXJlZEZvcklubGluZSBhbmQgaXNWaWRlb0xheWVySW5saW5lCisgICAgICAgICog
TW9kdWxlcy9tZWRpYWNvbnRyb2xzL21lZGlhQ29udHJvbHNBcHBsZS5qczoKKyAgICAgICAgKENv
bnRyb2xsZXIucHJvdG90eXBlLnNob3dJbmxpbmVQbGF5YmFja1BsYWNlaG9sZGVyV2hlblNhZmUp
OiBXYWl0IHRvIHNob3cgcGxhY2Vob2xkZXIgd2hlbiBlbnRlcmluZyBmdWxsc2NyZWVuLgorICAg
ICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUuaGFuZGxlUHJlc2VudGF0aW9uTW9kZUNoYW5nZSk6
IFdhaXQgdG8gc2hvdyBwbGFjZWhvbGRlciwgYW5kIG5vdGlmeSB3aGVuIHBsYWNlaG9kbGVyIGlz
IHJlbW92ZWQuCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNldFByZXBhcmVkRm9ySW5saW5lKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnByZXBhcmVGb3JJbmxpbmUpOiBVc2VkIHRv
IGRlbGF5IGZ1bGxzY3JlZW4gY2xlYW51cCB1bnRpbCBwbGFjZWhvZGxlciBpcyByZW1vdmVkLgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5
ZXIpOiBBZGQgYSBjYWxsYmFjayBzbyB3ZSBjYW4gd2FpdCB1bnRpbCB0aGlzIGNvbXBsZXRlcyBi
ZWZvcmUgY29udGludWluZy4KKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmlzVmlkZW9MYXllcklubGluZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwcmVwYXJlRm9ySW5saW5lKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVy
KTogQWRkIGNvbXBsZXRpb25IYW5kbGVyLgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1dlYlZp
ZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJW
aWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIp
OiBBZGQgY29tcGxldGlvbkhhbmRsZXIuCisgICAgICAgIChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6cHJlcGFyZUZvcklubGluZSk6IEFkZGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1t
OgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnNldFZpZGVv
RnVsbHNjcmVlbkxheWVyKTogQWRkIGNvbXBsZXRpb25IYW5kbGVyLgorICAgICAgICAoV2ViVmlk
ZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnByZXBhcmVGb3JJbmxpbmUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcik6IEFkZCBjb21wbGV0aW9uSGFu
ZGxlci4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKTogQWRkIGNv
bXBsZXRpb25IYW5kbGVyLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
UHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNl
OjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcik6IEFkZCBjb21wbGV0aW9uSGFuZGxlci4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUFW
UGxheWVyTGF5ZXIpOiBDcmVhdGUgdHdvIHZpZGVvIGxheWVycy4KKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmRlc3Ryb3lWaWRlb0xheWVyKTog
QWxsb3cgdHdvIHZpZGVvIGxheWVycy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKTogQWRkIGNvbXBs
ZXRpb25IYW5kbGVyLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6dXBkYXRlVmlkZW9MYXllckdyYXZpdHkpOiBBbGxvdyB0d28gdmlkZW8gbGF5
ZXJzLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQzo6YWRkRGlzcGxheUxheWVyKTogQWxsb3cgdHdvIHZpZGVvIGxheWVycy4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0Vmlk
ZW9GdWxsc2NyZWVuTGF5ZXIpOiBBZGQgY29tcGxldGlvbkhhbmRsZXIuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpjcmVhdGVQcmV2
aWV3TGF5ZXJzKTogQWxsb3cgdHdvIHZpZGVvIGxheWVycy4KKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5
ZXIpOiBBZGQgY29tcGxldGlvbkhhbmRsZXIuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9GdWxsc2NyZWVuTGF5
ZXJNYW5hZ2VyLm1tOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5h
Z2VyOjpzZXRWaWRlb0xheWVycyk6IEFsbG93IHR3byB2aWRlbyBsYXllcnMuCisgICAgICAgIChX
ZWJDb3JlOjpWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXI6OnNldFZpZGVvRnVsbHNjcmVlbkxh
eWVyKTogQWRkIGNvbXBsZXRpb25IYW5kbGVyLgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GdWxs
c2NyZWVuTGF5ZXJNYW5hZ2VyOjpzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZSk6IEFsbG93IHR3byB2
aWRlbyBsYXllcnMuCisgICAgICAgIChXZWJDb3JlOjpWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFn
ZXI6OmRpZERlc3Ryb3lWaWRlb0xheWVyKTogQWxsb3cgdHdvIHZpZGVvIGxheWVycy4KKyAgICAg
ICAgKFdlYkNvcmU6OlZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcjo6c2V0VmlkZW9MYXllcik6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXJBVktpdC5tbToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250
ZXh0OjpkaWRTZXR1cEZ1bGxzY3JlZW4pOiBVc2UgY29tcGxldGlvbkhhbmRsZXIuIAorICAgICAg
ICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmRpZEV4aXRGdWxsc2NyZWVu
KTogVXNlIGNvbXBsZXRpb25IYW5kbGVyLgorCiAyMDE2LTA1LTE3ICBOYW4gV2FuZyAgPG5fd2Fu
Z0BhcHBsZS5jb20+CiAKICAgICAgICAgQVg6IEFkZGluZyBjaGlsZHJlbiBpbmNvcnJlY3RseSB3
aGVuIHRoZXJlIGFyZSBuZXN0ZWQgaW5saW5lIGNvbnRpbnVhdGlvbnMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA1
OWE1NTk4YzVmNWYzYjgxOTRkZTgyOTAzZjg2MzdhMDhlMGQwOGYyLi42MThmNDllNDU4YjRiZDc4
YmZhNTZjNTU2YmZkZTY2MDNhMTAzNDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIw
MTYtMDUtMjcgIEplcmVteSBKb25lcyAgPGplcmVteWpAYXBwbGUuY29tPgorCisgICAgICAgIERl
Y3JlYXNlIGZsaWNrZXIgd2hlbiBjaGFuZ2luZyB2aWRlbyBwcmVzZW50YXRpb24gbW9kZS4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODE0OAorICAg
ICAgICByZGFyOi8vcHJvYmxlbS8yNDQ3Njk0OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFByZXZlbnQgZmxpY2tlciBieSB1c2luZyBzZXRWaWRlb0Z1
bGxzY3JlZW5MYXllciB3aXRoIGEgY29tcGxldGlvbiBoYW5kbGVyIHRvIGRlbGF5IAorICAgICAg
ICBlbnRlciBmdWxsc2NyZWVuIGFuZCBjbGVhbnVwIGZ1bGxzY3JlZW4gdW50aWwgdGhlIHZpZGVv
IGxheWVyIGhhcyBjb21wbGV0ZWx5IGJlZW4KKyAgICAgICAgaW5zdGFsbGVkIG9yIHJlbW92ZWQu
CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZFNldHVw
RnVsbHNjcmVlbik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
OmRpZEV4aXRGdWxsc2NyZWVuKToKKwogMjAxNi0wNS0xNyAgQmV0aCBEYWtpbiAgPGJkYWtpbkBh
cHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBoYW5kbGVBY2NlcHRlZENhbmRpZGF0ZSBhIHB1Ymxp
YyBmdW5jdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRy
b2xzL01lZGlhQ29udHJvbHNIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFj
b250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5jcHAKaW5kZXggOTExMjIzMDY0Yjk3ODBkM2E0YjEy
ZjE3YjAyODBiMTk5YTM5OGQ5My4uMGU2OWRmOTExZTBiYzUwMTQ5YWNiNzM5NjFkOWJhNjFhNjYw
YmUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01l
ZGlhQ29udHJvbHNIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29u
dHJvbHMvTWVkaWFDb250cm9sc0hvc3QuY3BwCkBAIC0yMTAsNiArMjEwLDE2IEBAIGJvb2wgTWVk
aWFDb250cm9sc0hvc3Q6OnN1cHBvcnRzRnVsbHNjcmVlbigpCiAgICAgcmV0dXJuIG1fbWVkaWFF
bGVtZW50LT5zdXBwb3J0c0Z1bGxzY3JlZW4oSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1
bGxzY3JlZW5Nb2RlU3RhbmRhcmQpOwogfQogCitib29sIE1lZGlhQ29udHJvbHNIb3N0Ojppc1Zp
ZGVvTGF5ZXJJbmxpbmUoKQoreworICAgIHJldHVybiBtX21lZGlhRWxlbWVudC0+aXNWaWRlb0xh
eWVySW5saW5lKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sc0hvc3Q6OnNldFByZXBhcmVkRm9y
SW5saW5lKGJvb2wgdmFsdWUpCit7CisgICAgbV9tZWRpYUVsZW1lbnQtPnNldFByZXBhcmVkRm9y
SW5saW5lKHZhbHVlKTsKK30KKwogYm9vbCBNZWRpYUNvbnRyb2xzSG9zdDo6dXNlckdlc3R1cmVS
ZXF1aXJlZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuICFtX21lZGlhRWxlbWVudC0+bWVkaWFTZXNz
aW9uKCkucGxheWJhY2tQZXJtaXR0ZWQoKm1fbWVkaWFFbGVtZW50KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmgK
aW5kZXggNGJhM2NhMzljYTk2M2JlYTMyMTZlY2EwMzA2NGQyYzA2ZTIwMDY3ZS4uY2YwOTc1YzM1
MTY4YjJhNWNhNTY1MzY1YTJhZGQ4YTk5ODRhN2M2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmgKQEAgLTY0
LDcgKzY0LDkgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlVGV4dFRyYWNrQ29udGFpbmVyKCk7
CiAgICAgYm9vbCBhbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrKCkgY29uc3Q7CiAgICAgYm9vbCBz
dXBwb3J0c0Z1bGxzY3JlZW4oKTsKKyAgICBib29sIGlzVmlkZW9MYXllcklubGluZSgpOwogICAg
IGJvb2wgdXNlckdlc3R1cmVSZXF1aXJlZCgpIGNvbnN0OworICAgIHZvaWQgc2V0UHJlcGFyZWRG
b3JJbmxpbmUoYm9vbCk7CiAKICAgICB2b2lkIHVwZGF0ZUNhcHRpb25EaXNwbGF5U2l6ZXMoKTsK
ICAgICB2b2lkIGVudGVyZWRGdWxsc2NyZWVuKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuaWRsIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmlkbAppbmRleCA3
YjA3MDZkOTVjNmZjYzllY2QzMjQxMzBlMzFjZDdiZTZjZWJmMjQzLi4wMDEzNDM1MDY1NjUwM2Nk
YTc2MmRjMDIzYzYyOTIzMDhjYmIxY2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5pZGwKQEAgLTQyLDkg
KzQyLDExIEBAIGVudW0gRGV2aWNlVHlwZSB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFRleHRU
cmFjayBjYXB0aW9uTWVudUF1dG9tYXRpY0l0ZW07CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERP
TVN0cmluZyBjYXB0aW9uRGlzcGxheU1vZGU7CiAgICAgdm9pZCBzZXRTZWxlY3RlZFRleHRUcmFj
ayhUZXh0VHJhY2s/IHRyYWNrKTsKKyAgICB2b2lkIHNldFByZXBhcmVkRm9ySW5saW5lKGJvb2xl
YW4gcHJlcGFyZWQpOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBIVE1MRWxlbWVudCB0ZXh0VHJh
Y2tDb250YWluZXI7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gYWxsb3dzSW5saW5l
TWVkaWFQbGF5YmFjazsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBzdXBwb3J0c0Z1
bGxzY3JlZW47CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gaXNWaWRlb0xheWVySW5s
aW5lOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIHVzZXJHZXN0dXJlUmVxdWlyZWQ7
CiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGV4dGVybmFsRGV2aWNlRGlzcGxh
eU5hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMv
bWVkaWFDb250cm9sc0FwcGxlLmpzIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRy
b2xzL21lZGlhQ29udHJvbHNBcHBsZS5qcwppbmRleCAzMzM4ZjljMjM1MzY3MTI1ZmQ4MTZhMzQ2
MWQ1OWY0NTBhNDczYmIwLi4zODRjNTBhMmY0ZWVmNTVjOWRhOTI0ZWM4OTAxNDk2ZjZiMDAyMzRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvbWVkaWFD
b250cm9sc0FwcGxlLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9s
cy9tZWRpYUNvbnRyb2xzQXBwbGUuanMKQEAgLTgzNiw2ICs4MzYsMTYgQEAgQ29udHJvbGxlci5w
cm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLmNvbnRyb2xzLnBpY3R1cmVJblBpY3R1cmVC
dXR0b24uY2xhc3NMaXN0LmFkZCh0aGlzLkNsYXNzTmFtZXMuaGlkZGVuKTsKICAgICB9LAogCisg
ICAgc2hvd0lubGluZVBsYXliYWNrUGxhY2Vob2xkZXJXaGVuU2FmZTogZnVuY3Rpb24oKSB7Cisg
ICAgICAgIGlmICh0aGlzLnByZXNlbnRhdGlvbk1vZGUoKSA9PSAncGljdHVyZS1pbi1waWN0dXJl
JykgeworICAgICAgICAgICAgaWYgKCF0aGlzLmhvc3QuaXNWaWRlb0xheWVySW5saW5lKSB7Cisg
ICAgICAgICAgICAgICAgdGhpcy5jb250cm9scy5pbmxpbmVQbGF5YmFja1BsYWNlaG9sZGVyLmNs
YXNzTGlzdC5yZW1vdmUodGhpcy5DbGFzc05hbWVzLmhpZGRlbik7CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQodGhpcy5zaG93SW5saW5lUGxheWJhY2tQ
bGFjZWhvbGRlcldoZW5TYWZlLmJpbmQodGhpcyksIDMzKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0sCisKICAgICBoYW5kbGVQcmVzZW50YXRpb25Nb2RlQ2hhbmdlOiBmdW5jdGlv
bihldmVudCkKICAgICB7CiAgICAgICAgIHZhciBwcmVzZW50YXRpb25Nb2RlID0gdGhpcy5wcmVz
ZW50YXRpb25Nb2RlKCk7CkBAIC04NTMsNyArODYzLDcgQEAgQ29udHJvbGxlci5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICBjYXNlICdwaWN0dXJlLWluLXBpY3R1cmUnOgogICAgICAgICAgICAg
ICAgIHRoaXMuY29udHJvbHMucGFuZWwuY2xhc3NMaXN0LmFkZCh0aGlzLkNsYXNzTmFtZXMucGlj
dHVyZUluUGljdHVyZSk7CiAgICAgICAgICAgICAgICAgdGhpcy5jb250cm9scy5pbmxpbmVQbGF5
YmFja1BsYWNlaG9sZGVyLmNsYXNzTGlzdC5hZGQodGhpcy5DbGFzc05hbWVzLnBpY3R1cmVJblBp
Y3R1cmUpOwotICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbHMuaW5saW5lUGxheWJhY2tQbGFj
ZWhvbGRlci5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuQ2xhc3NOYW1lcy5oaWRkZW4pOworICAgICAg
ICAgICAgICAgIHRoaXMuc2hvd0lubGluZVBsYXliYWNrUGxhY2Vob2xkZXJXaGVuU2FmZSgpOwog
CiAgICAgICAgICAgICAgICAgdGhpcy5jb250cm9scy5pbmxpbmVQbGF5YmFja1BsYWNlaG9sZGVy
VGV4dFRvcC5pbm5lclRleHQgPSB0aGlzLlVJU3RyaW5nKCdUaGlzIHZpZGVvIGlzIHBsYXlpbmcg
aW4gUGljdHVyZSBpbiBQaWN0dXJlJyk7CiAgICAgICAgICAgICAgICAgdGhpcy5jb250cm9scy5p
bmxpbmVQbGF5YmFja1BsYWNlaG9sZGVyVGV4dFRvcC5jbGFzc0xpc3QuYWRkKHRoaXMuQ2xhc3NO
YW1lcy5waWN0dXJlSW5QaWN0dXJlKTsKQEAgLTg3Nyw2ICs4ODcsNyBAQCBDb250cm9sbGVyLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5yZXNldEhpZGVDb250cm9sc1RpbWVyKCk7CiAgICAg
ICAgIGlmIChwcmVzZW50YXRpb25Nb2RlICE9ICdmdWxsc2NyZWVuJyAmJiB0aGlzLnZpZGVvLnBh
dXNlZCAmJiB0aGlzLmNvbnRyb2xzQXJlSGlkZGVuKCkpCiAgICAgICAgICAgICB0aGlzLnNob3dD
b250cm9scygpOworICAgICAgICB0aGlzLmhvc3Quc2V0UHJlcGFyZWRGb3JJbmxpbmUocHJlc2Vu
dGF0aW9uTW9kZSA9PT0gJ2lubGluZScpCiAgICAgfSwKIAogICAgIGhhbmRsZUZ1bGxzY3JlZW5D
aGFuZ2U6IGZ1bmN0aW9uKGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAKaW5kZXggMDZjNThlZmVhNmE3MDQ2YTYyNWViYjViNWQ4N2NiNDU0OWRkZmViMi4uZmQ2
NDRhMTlmMDhlYzRjZWJiMTlhY2VjMWEzOTAyZTQyNzE3MzY2OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC01NDY4LDE1ICs1NDY4LDM3IEBAIFBsYXRmb3Jt
TGF5ZXIqIEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAogICAgIHJldHVy
biBtX3BsYXllciA/IG1fcGxheWVyLT5wbGF0Zm9ybUxheWVyKCkgOiBudWxscHRyOwogfQogCit2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFByZXBhcmVkRm9ySW5saW5lKGJvb2wgdmFsdWUpCit7
CisgICAgbV9wcmVwYXJlZEZvcklubGluZSA9IHZhbHVlOworICAgIGlmIChtX3ByZXBhcmVkRm9y
SW5saW5lICYmIG1fcGVycGFyZUZvcklubGluZUNvbXBsZXRpb25IYW5kbGVyKSB7CisgICAgICAg
IG1fcGVycGFyZUZvcklubGluZUNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgIG1fcGVycGFy
ZUZvcklubGluZUNvbXBsZXRpb25IYW5kbGVyID0gbmlsOworICAgIH0KK30KKwogI2lmIFBMQVRG
T1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9N
T0RFKSkKIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQ
bGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwcmVw
YXJlRm9ySW5saW5lKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBjb21wbGV0aW9uSGFuZGxlcikKK3sK
KyAgICBBU1NFUlQoIW1fcGVycGFyZUZvcklubGluZUNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICBp
ZiAobV9wcmVwYXJlZEZvcklubGluZSkgIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fcGVycGFyZUZvcklubGluZUNvbXBsZXRp
b25IYW5kbGVyID0gY29tcGxldGlvbkhhbmRsZXI7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllciwg
c3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIG1fdmlkZW9G
dWxsc2NyZWVuTGF5ZXIgPSBwbGF0Zm9ybUxheWVyOwotICAgIGlmICghbV9wbGF5ZXIpCisgICAg
aWYgKCFtX3BsYXllcikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICBy
ZXR1cm47CisgICAgfQogICAgIAotICAgIG1fcGxheWVyLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXll
cihwbGF0Zm9ybUxheWVyKTsKKyAgICBtX3BsYXllci0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIo
cGxhdGZvcm1MYXllciwgY29tcGxldGlvbkhhbmRsZXIpOwogICAgIHNldE5lZWRzU3R5bGVSZWNh
bGMoU3ludGhldGljU3R5bGVDaGFuZ2UpOwogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICB1
cGRhdGVUZXh0VHJhY2tEaXNwbGF5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5oCmluZGV4IGIzODkzOThiMzNhZDY3YTI4MmNhMTIzYzk1Mjg5ZjUyYTRhNTBmMzYuLjhhMmI3
ZjZkZjYxMWQ5MWY0Mjk3M2VlYWU0YzdkYjVhNGMzZDIzYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5oCkBAIC0xMjQsNiArMTI0LDEwIEBAIHB1YmxpYzoKIAogICAgIC8v
IEV2ZW50dWFsbHkgb3ZlcmxvYWRlZCBpbiBIVE1MVmlkZW9FbGVtZW50CiAgICAgYm9vbCBzdXBw
b3J0c0Z1bGxzY3JlZW4oSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2Rl
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfTsKKyAgICBib29sIGlzVmlkZW9MYXll
cklubGluZSgpIHsgcmV0dXJuIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXIgPT0gbmlsOyB9OworCisg
ICAgYm9vbCBtX3ByZXBhcmVkRm9ySW5saW5lOworICAgIHZvaWQgc2V0UHJlcGFyZWRGb3JJbmxp
bmUoYm9vbCk7CiAKICAgICBib29sIHN1cHBvcnRzU2Nhbm5pbmcoKSBjb25zdCBvdmVycmlkZTsK
IApAQCAtMTM0LDExICsxMzgsMTQgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFBsYXRm
b3JtTWVkaWEgcGxhdGZvcm1NZWRpYSgpIGNvbnN0OwogICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRm
b3JtTGF5ZXIoKSBjb25zdDsKICNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYm
IEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCi0gICAgdm9pZCBzZXRWaWRlb0Z1bGxz
Y3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKik7CisgICAgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IG1f
cGVycGFyZUZvcklubGluZUNvbXBsZXRpb25IYW5kbGVyOworICAgIHZvaWQgcHJlcGFyZUZvcklu
bGluZShzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkhhbmRsZXIgPSBbXSB7IH0pOwor
ICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciosIHN0ZDo6ZnVu
Y3Rpb248dm9pZCgpPiBjb21wbGV0aW9uSGFuZGxlciA9IFtdIHsgfSk7CiAgICAgUGxhdGZvcm1M
YXllciogdmlkZW9GdWxsc2NyZWVuTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3ZpZGVvRnVsbHNj
cmVlbkxheWVyLmdldCgpOyB9CiAgICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9h
dFJlY3QpOwogICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuR3Jhdml0eShNZWRpYVBsYXllckVu
dW1zOjpWaWRlb0dyYXZpdHkpOwogICAgIE1lZGlhUGxheWVyRW51bXM6OlZpZGVvR3Jhdml0eSB2
aWRlb0Z1bGxzY3JlZW5HcmF2aXR5KCkgY29uc3QgeyByZXR1cm4gbV92aWRlb0Z1bGxzY3JlZW5H
cmF2aXR5OyB9CisKICNlbmRpZgogCiAgICAgdXNpbmcgSFRNTE1lZGlhRWxlbWVudEVudW1zOjpE
ZWxheWVkQWN0aW9uVHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oCmlu
ZGV4IDcxOWEyNTcwYzBmZGI4MjdkMGU2ZDNmZmExZTZiZTMzNGQ4MjNmZGEuLmYyNjhjM2I2Zjgx
NWJjNmNiMDA5ZTU0OGI2MTk2ODVjYTYyZmI4ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxW
aWRlb0VsZW1lbnQuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1l
bnRFbnVtcy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKICNpbmNsdWRlICJXZWJWaWRl
b0Z1bGxzY3JlZW5Nb2RlbC5oIgorI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CkBAIC01NSw4ICs1Niw5IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZShXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2UqKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZpZGVvRWxlbWVudChIVE1MVmlkZW9F
bGVtZW50Kik7CiAgICAgV0VCQ09SRV9FWFBPUlQgSFRNTFZpZGVvRWxlbWVudCogdmlkZW9FbGVt
ZW50KCkgY29uc3QgeyByZXR1cm4gbV92aWRlb0VsZW1lbnQuZ2V0KCk7IH0KLSAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqKTsKLSAg
ICAKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRm
b3JtTGF5ZXIqLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkhhbmRsZXIgPSBbXSB7
IH0pOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcHJlcGFyZUZvcklubGluZShzdGQ6OmZ1bmN0
aW9uPHZvaWQoKT4gY29tcGxldGlvbkhhbmRsZXIgPSBbXSB7IH0pOworCiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBoYW5kbGVFdmVudChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
V2ViQ29yZTo6RXZlbnQqKSBvdmVycmlkZTsKICAgICB2b2lkIHVwZGF0ZUZvckV2ZW50TmFtZShj
b25zdCBXVEY6OkF0b21pY1N0cmluZyYpOwogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVu
dExpc3RlbmVyJiByaHMpIG92ZXJyaWRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVt
ZW50Lm1tCmluZGV4IGQ5Y2I1ZmY5ZWJlZTU2MTQ1MzFhOWIyMWM4MmZkNzQzM2RjZjAzNDMuLmQ2
OGI5MjA5MGE1MTI4Zjk5YmEyZDAyMDcyNDliZTcyNDMzM2IwMTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVt
ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNj
cmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1tCkBAIC0xMTgsMTAgKzExOCwxMiBAQCB2b2lkIFdlYlZp
ZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Ojp1cGRhdGVGb3JFdmVudE5hbWUoY29uc3Qg
V1RGOjpBdG9taWNTdAogICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZS0+c2V0Vmlk
ZW9EaW1lbnNpb25zKHRydWUsIG1fdmlkZW9FbGVtZW50LT52aWRlb1dpZHRoKCksIG1fdmlkZW9F
bGVtZW50LT52aWRlb0hlaWdodCgpKTsKIH0KIAotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bFZpZGVvRWxlbWVudDo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciogdmlk
ZW9MYXllcikKK3ZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnNldFZp
ZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqIHZpZGVvTGF5ZXIsIHN0ZDo6ZnVuY3Rp
b248dm9pZCgpPiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAobV92aWRlb0Z1bGxzY3Jl
ZW5MYXllciA9PSB2aWRlb0xheWVyKQorICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbkxheWVyID09
IHZpZGVvTGF5ZXIpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAgcmV0
dXJuOworICAgIH0KICAgICAKICAgICBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyID0gdmlkZW9MYXll
cjsKICNpZiBQTEFURk9STShNQUMpCkBAIC0xMzEsMTAgKzEzMywyNSBAQCB2b2lkIFdlYlZpZGVv
RnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0
Zm9ybUxheWVyKgogI2VuZGlmCiAgICAgW21fdmlkZW9GdWxsc2NyZWVuTGF5ZXIgc2V0Qm91bmRz
Om1fdmlkZW9GcmFtZV07CiAgICAgCi0gICAgaWYgKG1fdmlkZW9FbGVtZW50KQotICAgICAgICBt
X3ZpZGVvRWxlbWVudC0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIobV92aWRlb0Z1bGxzY3JlZW5M
YXllci5nZXQoKSk7CisgICAgaWYgKCFtX3ZpZGVvRWxlbWVudCkgeworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV92aWRlb0VsZW1l
bnQtPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXIuZ2V0KCks
IGNvbXBsZXRpb25IYW5kbGVyKTsKIH0KIAordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZp
ZGVvRWxlbWVudDo6cHJlcGFyZUZvcklubGluZShzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxl
dGlvbkhhbmRsZXIpCit7CisgICAgaWYgKCFtX3ZpZGVvRWxlbWVudCkgeworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV92aWRlb0Vs
ZW1lbnQtPnByZXBhcmVGb3JJbmxpbmUoY29tcGxldGlvbkhhbmRsZXIpOworfQorCisKIHZvaWQg
V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnJlcXVlc3RGdWxsc2NyZWVuTW9k
ZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkKIHsKICAg
ICBpZiAobV92aWRlb0VsZW1lbnQgJiYgbV92aWRlb0VsZW1lbnQtPmZ1bGxzY3JlZW5Nb2RlKCkg
IT0gbW9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmNwcAppbmRleCAxYjgxZDRkZjhhMmYwNDU1YTVlMmNjYTZiYzM2Yzc1ZjE3YjZiNjc3Li45
OTA3MzhlNzg3NDRlMjAxYzJkZGJhOTE2OWUwMTAxNzI1OWUxOGM1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC02NjAsOSArNjYw
LDkgQEAgUGxhdGZvcm1MYXllciogTWVkaWFQbGF5ZXI6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAog
fQogICAgIAogI2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJ
REVPX1BSRVNFTlRBVElPTl9NT0RFKSkKLXZvaWQgTWVkaWFQbGF5ZXI6OnNldFZpZGVvRnVsbHNj
cmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqIGxheWVyKQordm9pZCBNZWRpYVBsYXllcjo6c2V0Vmlk
ZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciogbGF5ZXIsIHN0ZDo6ZnVuY3Rpb248dm9p
ZCgpPiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBtX3ByaXZhdGUtPnNldFZpZGVvRnVsbHNj
cmVlbkxheWVyKGxheWVyKTsKKyAgICBtX3ByaXZhdGUtPnNldFZpZGVvRnVsbHNjcmVlbkxheWVy
KGxheWVyLCBjb21wbGV0aW9uSGFuZGxlcik7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXI6OnNldFZp
ZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCBmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4IDkzMDUwMTcxMGUzYTliMWNlNjg0
YzMzMDQ3YzIxNTJlY2UxY2E5NzguLjIxNDY3ZmM2NzI1ODc2NzZjYjFlNDVlZGYyMjkzMTRlMjlh
NDRlZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuaApAQCAtMzA4LDcgKzMwOCw3IEBAIHB1YmxpYzoKICAgICBQbGF0Zm9ybUxheWVyKiBwbGF0
Zm9ybUxheWVyKCkgY29uc3Q7CiAKICNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMp
ICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCi0gICAgdm9pZCBzZXRWaWRlb0Z1
bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKik7CisgICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3Jl
ZW5MYXllcihQbGF0Zm9ybUxheWVyKiwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRpb25I
YW5kbGVyID0gW10geyB9KTsKICAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0
UmVjdCk7CiAgICAgdXNpbmcgTWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9HcmF2aXR5OwogICAgIHZv
aWQgc2V0VmlkZW9GdWxsc2NyZWVuR3Jhdml0eShWaWRlb0dyYXZpdHkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAppbmRl
eCA4OWMwYzE5ZWRhY2M3NmVmN2JmYzljYjZlN2EwYjg2MjY4NzA2ZmIwLi4xMzdjZWZiMzlhZDUz
NzM3ZjRhMTRhZTYzMjk3OWIzNTg2N2VkOTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaApAQCAtNTksNyArNTksNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29u
c3QgeyByZXR1cm4gMDsgfQogCiAjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAm
JiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQotICAgIHZpcnR1YWwgdm9pZCBzZXRW
aWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKikgeyB9CisgICAgdmlydHVhbCB2b2lk
IHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBzdGQ6OmZ1bmN0aW9uPHZv
aWQoKT4gY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoKTsgfQogICAgIHZp
cnR1YWwgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3QpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5HcmF2aXR5KE1lZGlhUGxheWVyOjpWaWRlb0dy
YXZpdHkpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5Nb2RlKE1lZGlh
UGxheWVyOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAppbmRl
eCA1YWQ1ZDA4YzEyMDQ4MTdkZDczY2FkZjEyNjAzNTRkY2UyNzNkZDBlLi40ZjUzYzdjNGI2ZTNk
YmE5MGNlOTIyMTE5MGRmYmNjZjcwMTI4OTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCkBAIC0x
NzIsNyArMTcyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5Db250
ZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwogICAgIFBs
YXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBvdmVycmlkZTsKICNpZiBQTEFURk9S
TShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9E
RSkpCi0gICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKikgb3Zl
cnJpZGU7CisgICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiwg
c3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZTsKICAgICB2
b2lkIHNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBzZXRWaWRlb0Z1bGxzY3JlZW5HcmF2aXR5KE1lZGlhUGxheWVyOjpWaWRlb0dyYXZpdHkpIG92
ZXJyaWRlOwogICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTW9kZShNZWRpYVBsYXllcjo6Vmlk
ZW9GdWxsc2NyZWVuTW9kZSkgb3ZlcnJpZGU7CkBAIC0zMjksNiArMzI5LDcgQEAgcHJpdmF0ZToK
ICAgICBSZXRhaW5QdHI8QVZQbGF5ZXI+IG1fYXZQbGF5ZXI7CiAgICAgUmV0YWluUHRyPEFWUGxh
eWVySXRlbT4gbV9hdlBsYXllckl0ZW07CiAgICAgUmV0YWluUHRyPEFWUGxheWVyTGF5ZXI+IG1f
dmlkZW9MYXllcjsKKyAgICBSZXRhaW5QdHI8QVZQbGF5ZXJMYXllcj4gbV9zZWNvbmRhcnlWaWRl
b0xheWVyOwogI2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJ
REVPX1BSRVNFTlRBVElPTl9NT0RFKSkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9GdWxsc2Ny
ZWVuTGF5ZXJNYW5hZ2VyPiBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcjsKICAgICBNZWRp
YVBsYXllcjo6VmlkZW9HcmF2aXR5IG1fdmlkZW9GdWxsc2NyZWVuR3Jhdml0eTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDLm1tCmluZGV4IDdjYjAyNjZhM2RjN2RhZjhjZGI5MTA3ZGUwZGMzYzM1ODY5YTNi
Y2YuLjA3M2YxYjg1ZWI5ZWIzMDliODNhZjc2ZWMxYzYyNmZiZDc2YThmYWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbQpAQCAtNzMwLDE3ICs3MzAsMjQgQEAgdm9pZCBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVBVlBsYXllckxheWVyKCkKICAgICBtX3ZpZGVvTGF5
ZXIgPSBhZG9wdE5TKFthbGxvY0FWUGxheWVyTGF5ZXJJbnN0YW5jZSgpIGluaXRdKTsKICAgICBb
bV92aWRlb0xheWVyIHNldFBsYXllcjptX2F2UGxheWVyLmdldCgpXTsKICAgICBbbV92aWRlb0xh
eWVyIHNldEJhY2tncm91bmRDb2xvcjpjYWNoZWRDR0NvbG9yKENvbG9yOjpibGFjayldOworCisg
ICAgbV9zZWNvbmRhcnlWaWRlb0xheWVyID0gYWRvcHROUyhbYWxsb2NBVlBsYXllckxheWVySW5z
dGFuY2UoKSBpbml0XSk7CisgICAgW21fc2Vjb25kYXJ5VmlkZW9MYXllciBzZXRQbGF5ZXI6bV9h
dlBsYXllci5nZXQoKV07CisgICAgW21fc2Vjb25kYXJ5VmlkZW9MYXllciBzZXRCYWNrZ3JvdW5k
Q29sb3I6Y2FjaGVkQ0dDb2xvcihDb2xvcjo6YmxhY2spXTsKKwogI2lmbmRlZiBOREVCVUcKICAg
ICBbbV92aWRlb0xheWVyIHNldE5hbWU6QCJNZWRpYVBsYXllclByaXZhdGUgQVZQbGF5ZXJMYXll
ciJdOworICAgIFttX3NlY29uZGFyeVZpZGVvTGF5ZXIgc2V0TmFtZTpAIk1lZGlhUGxheWVyUHJp
dmF0ZSBBVlBsYXllckxheWVyIHNlY29uZGFyeSJdOwogI2VuZGlmCiAgICAgW21fdmlkZW9MYXll
ciBhZGRPYnNlcnZlcjptX29iamNPYnNlcnZlci5nZXQoKSBmb3JLZXlQYXRoOkAicmVhZHlGb3JE
aXNwbGF5IiBvcHRpb25zOk5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcgY29udGV4dDoodm9p
ZCAqKU1lZGlhUGxheWVyQVZGb3VuZGF0aW9uT2JzZXJ2YXRpb25Db250ZXh0QVZQbGF5ZXJMYXll
cl07CiAgICAgdXBkYXRlVmlkZW9MYXllckdyYXZpdHkoKTsKICAgICBbbV92aWRlb0xheWVyIHNl
dENvbnRlbnRzU2NhbGU6cGxheWVyKCktPmNsaWVudCgpLm1lZGlhUGxheWVyQ29udGVudHNTY2Fs
ZSgpXTsKKyAgICBbbV9zZWNvbmRhcnlWaWRlb0xheWVyIHNldENvbnRlbnRzU2NhbGU6cGxheWVy
KCktPmNsaWVudCgpLm1lZGlhUGxheWVyQ29udGVudHNTY2FsZSgpXTsKICAgICBJbnRTaXplIGRl
ZmF1bHRTaXplID0gc25hcHBlZEludFJlY3QocGxheWVyKCktPmNsaWVudCgpLm1lZGlhUGxheWVy
Q29udGVudEJveFJlY3QoKSkuc2l6ZSgpOwogICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZVZpZGVvTGF5ZXIoJXApIC0gcmV0dXJuaW5nICVw
IiwgdGhpcywgbV92aWRlb0xheWVyLmdldCgpKTsKIAogI2lmIFBMQVRGT1JNKElPUykgfHwgKFBM
QVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKLSAgICBtX3Zp
ZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci0+c2V0VmlkZW9MYXllcihtX3ZpZGVvTGF5ZXIuZ2V0
KCksIGRlZmF1bHRTaXplKTsKKyAgICBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci0+c2V0
VmlkZW9MYXllcnMobV92aWRlb0xheWVyLmdldCgpLCBtX3NlY29uZGFyeVZpZGVvTGF5ZXIuZ2V0
KCksIGRlZmF1bHRTaXplKTsKIAogI2lmIFBMQVRGT1JNKElPUykKICAgICBpZiAoW21fdmlkZW9M
YXllciByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldFBJUE1vZGVFbmFibGVkOildKQpA
QCAtNzQ4LDYgKzc1NSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6Y3JlYXRlQVZQbGF5ZXJMYXllcigpCiAjZW5kaWYKICNlbHNlCiAgICAgW21fdmlkZW9MYXll
ciBzZXRGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIGRlZmF1bHRTaXplLndpZHRoKCksIGRlZmF1bHRT
aXplLmhlaWdodCgpKV07CisgICAgW21fc2Vjb25kYXJ5VmlkZW9MYXllciBzZXRGcmFtZTpDR1Jl
Y3RNYWtlKDAsIDAsIGRlZmF1bHRTaXplLndpZHRoKCksIGRlZmF1bHRTaXplLmhlaWdodCgpKV07
CiAjZW5kaWYKIH0KIApAQCAtNzYwLDEyICs3NjgsMTQgQEAgdm9pZCBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpkZXN0cm95VmlkZW9MYXllcigpCiAKICAgICBbbV92aWRlb0xh
eWVyLmdldCgpIHJlbW92ZU9ic2VydmVyOm1fb2JqY09ic2VydmVyLmdldCgpIGZvcktleVBhdGg6
QCJyZWFkeUZvckRpc3BsYXkiXTsKICAgICBbbV92aWRlb0xheWVyLmdldCgpIHNldFBsYXllcjpu
aWxdOworICAgIFttX3NlY29uZGFyeVZpZGVvTGF5ZXIuZ2V0KCkgc2V0UGxheWVyOm5pbF07CiAK
ICNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVT
RU5UQVRJT05fTU9ERSkpCiAgICAgbV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXItPmRpZERl
c3Ryb3lWaWRlb0xheWVyKCk7CiAjZW5kaWYKIAogICAgIG1fdmlkZW9MYXllciA9IG5pbDsKKyAg
ICBtX3NlY29uZGFyeVZpZGVvTGF5ZXIgPSBuaWw7CiB9CiAKIE1lZGlhVGltZSBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpnZXRTdGFydERhdGUoKSBjb25zdApAQCAtMTE4Mywx
MiArMTE5MywxNCBAQCBQbGF0Zm9ybUxheWVyKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKIH0KIAogI2lmIFBMQVRGT1JNKElPUykgfHwg
KFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKLXZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5
ZXIoUGxhdGZvcm1MYXllciogdmlkZW9GdWxsc2NyZWVuTGF5ZXIpCit2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3Jt
TGF5ZXIqIHZpZGVvRnVsbHNjcmVlbkxheWVyLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxl
dGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLT52
aWRlb0Z1bGxzY3JlZW5MYXllcigpID09IHZpZGVvRnVsbHNjcmVlbkxheWVyKQorICAgIGlmICht
X3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci0+dmlkZW9GdWxsc2NyZWVuTGF5ZXIoKSA9PSB2
aWRlb0Z1bGxzY3JlZW5MYXllcikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAg
ICAgICByZXR1cm47CisgICAgfQogCi0gICAgbV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIt
PnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKHZpZGVvRnVsbHNjcmVlbkxheWVyKTsKKyAgICBtX3Zp
ZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIodmlkZW9G
dWxsc2NyZWVuTGF5ZXIsIGNvbXBsZXRpb25IYW5kbGVyKTsKIAogICAgIGlmIChtX3ZpZGVvRnVs
bHNjcmVlbkxheWVyTWFuYWdlci0+dmlkZW9GdWxsc2NyZWVuTGF5ZXIoKSAmJiBtX3RleHRUcmFj
a1JlcHJlc2VudGF0aW9uTGF5ZXIpIHsKICAgICAgICAgc3luY1RleHRUcmFja0JvdW5kcygpOwpA
QCAtMTg3Miw2ICsxODg0LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjp1cGRhdGVWaWRlb0xheWVyR3Jhdml0eSgpCiAgICAgW0NBVHJhbnNhY3Rpb24gc2V0RGlz
YWJsZUFjdGlvbnM6WUVTXTsgICAgCiAgICAgTlNTdHJpbmcqIGdyYXZpdHkgPSBzaG91bGRNYWlu
dGFpbkFzcGVjdFJhdGlvKCkgPyBBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0IDogQVZM
YXllclZpZGVvR3Jhdml0eVJlc2l6ZTsKICAgICBbbV92aWRlb0xheWVyLmdldCgpIHNldFZpZGVv
R3Jhdml0eTpncmF2aXR5XTsKKyAgICBbbV9zZWNvbmRhcnlWaWRlb0xheWVyLmdldCgpIHNldFZp
ZGVvR3Jhdml0eTpncmF2aXR5XTsKICAgICBbQ0FUcmFuc2FjdGlvbiBjb21taXRdOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQy5oCmluZGV4IGQ0OWUzYjMxNzVhOGU4ZGUyZjg3Yjk0MDFlZDNh
NWY2ODhmOWY5OTMuLmY3MWZlNDg1OWJhMGNmNDI0OWYxYmY2MDE0MmMyZDkzYTFiNTBjNjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCkBAIC04Nyw3ICs4Nyw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIGNoYXJhY3RlcmlzdGljc0NoYW5nZWQoKTsKIAogI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5B
QkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQotICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVu
TGF5ZXIoUGxhdGZvcm1MYXllciopIG92ZXJyaWRlOworICAgIHZvaWQgc2V0VmlkZW9GdWxsc2Ny
ZWVuTGF5ZXIoUGxhdGZvcm1MYXllciosIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBjb21wbGV0aW9u
SGFuZGxlcikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9h
dFJlY3QpIG92ZXJyaWRlOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQppbmRl
eCAxNDNjMDQ2MDNmMmI3ZDZmNDEwNTNhZWFiMzczZjVhNTVjMTQyM2NiLi4yZjU4MmRiZTQ3OWJj
YmZlZjg5MzVjZTkxZTNjMjQ3YmNjNTdiZjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1t
CkBAIC03NzAsNyArNzcwLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakM6OmFkZERpc3BsYXlMYXllcihBVlNhbXBsZUJ1ZmZlckRpc3BsYXkKICAgICBtX3BsYXll
ci0+Zmlyc3RWaWRlb0ZyYW1lQXZhaWxhYmxlKCk7CiAKICNpZiBQTEFURk9STShNQUMpICYmIEVO
QUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKLSAgICBtX3ZpZGVvRnVsbHNjcmVlbkxheWVy
TWFuYWdlci0+c2V0VmlkZW9MYXllcihtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5nZXQoKSwg
c25hcHBlZEludFJlY3QobV9wbGF5ZXItPmNsaWVudCgpLm1lZGlhUGxheWVyQ29udGVudEJveFJl
Y3QoKSkuc2l6ZSgpKTsKKyAgICBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci0+c2V0Vmlk
ZW9MYXllcnMobV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuZ2V0KCksIG5pbCwgc25hcHBlZElu
dFJlY3QobV9wbGF5ZXItPmNsaWVudCgpLm1lZGlhUGxheWVyQ29udGVudEJveFJlY3QoKSkuc2l6
ZSgpKTsKICNlbmRpZgogfQogCkBAIC04MjgsOSArODI4LDkgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmNoYXJhY3RlcmlzdGljc0NoYW5nZWQoKQogfQogCiAj
aWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCi12b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVu
TGF5ZXIoUGxhdGZvcm1MYXllciAqdmlkZW9GdWxsc2NyZWVuTGF5ZXIpCit2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxh
dGZvcm1MYXllciAqdmlkZW9GdWxsc2NyZWVuTGF5ZXIsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci0+
c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIodmlkZW9GdWxsc2NyZWVuTGF5ZXIpOworICAgIG1fdmlk
ZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2aWRlb0Z1
bGxzY3JlZW5MYXllciwgY29tcGxldGlvbkhhbmRsZXIpOwogfQogCiB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRS
ZWN0IGZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaAppbmRleCA3ZTQyNDAzY2VhZjg1NjI2
MzI0NTdlNzFkZjA4Mjg2ZTVkMWYzY2Q3Li4yY2Y1ODc3MzYyMTIwNzg0NWViMWFhMTNjNTkyNjNl
ZmVlMmJlMDQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaApAQCAtMTYwLDcgKzE2MCw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZW1vdmVUcmFjayhNZWRpYVN0cmVhbVRyYWNrUHJpdmF0
ZSYpIG92ZXJyaWRlOwogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VO
VEFUSU9OX01PREUpCi0gICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxh
eWVyKikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9y
bUxheWVyKiwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlk
ZTsKICAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCkgb3ZlcnJpZGU7
CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCmluZGV4IGQ5MmE2YzgyZGM5OTk0
YzliYWQ3MjM5N2FjNzc0OGMyZmZkZGE0NGIuLjMxMmM1ZWI5OTk2NWMwYWQ0NGMyOGU3NmY0YTgz
YmMxZjg2ZTJjYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KQEAgLTQwNCw3ICs0MDQs
NyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6Y3JlYXRlUHJl
dmlld0xheWVycygpCiAgICAgICAgIG1fdmlkZW9CYWNrZ3JvdW5kTGF5ZXIuZ2V0KCkubmFtZSA9
IEAiTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDIHByZXZpZXcgYmFja2dyb3Vu
ZCBsYXllciI7CiAKICNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJ
T05fTU9ERSkKLSAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXItPnNldFZpZGVv
TGF5ZXIobV92aWRlb0JhY2tncm91bmRMYXllci5nZXQoKSwgc25hcHBlZEludFJlY3QobV9wbGF5
ZXItPmNsaWVudCgpLm1lZGlhUGxheWVyQ29udGVudEJveFJlY3QoKSkuc2l6ZSgpKTsKKyAgICAg
ICAgbV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXItPnNldFZpZGVvTGF5ZXJzKG1fdmlkZW9C
YWNrZ3JvdW5kTGF5ZXIuZ2V0KCksIG5pbCwgc25hcHBlZEludFJlY3QobV9wbGF5ZXItPmNsaWVu
dCgpLm1lZGlhUGxheWVyQ29udGVudEJveFJlY3QoKSkuc2l6ZSgpKTsKICNlbmRpZgogICAgIH0K
IApAQCAtNDc0LDkgKzQ3NCw5IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDOjpkaWRSZW1vdmVUcmFjayhNZWRpYVN0cmVhbVRyYWNrUHJpdmF0CiB9CiAKICNpZiBQ
TEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKLXZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXll
cihQbGF0Zm9ybUxheWVyICp2aWRlb0Z1bGxzY3JlZW5MYXllcikKK3ZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9y
bUxheWVyICp2aWRlb0Z1bGxzY3JlZW5MYXllciwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNvbXBs
ZXRpb25IYW5kbGVyKQogewotICAgIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLT5zZXRW
aWRlb0Z1bGxzY3JlZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5MYXllcik7CisgICAgbV92aWRlb0Z1
bGxzY3JlZW5MYXllck1hbmFnZXItPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKHZpZGVvRnVsbHNj
cmVlbkxheWVyLCBjb21wbGV0aW9uSGFuZGxlcik7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3Qg
ZnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9WaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvRnVsbHNjcmVlbkxh
eWVyTWFuYWdlci5oCmluZGV4IDJkNWRiNjA0NzkwN2JkOTk4MTMwY2YzY2I5N2JkOGJiNDIzMzA3
MWEuLmZlNDAwN2VlOTkyNWVmNjQ1MWI0YjAxOWYxYzZhMzVjMWFhZmNjNmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVv
RnVsbHNjcmVlbkxheWVyTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci5oCkBA
IC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiSW50U2l6
ZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKKyNpbmNsdWRlIDxmdW5jdGlvbmFsPgog
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDMs
OCArNDQsOCBAQCBwdWJsaWM6CiAgICAgUGxhdGZvcm1MYXllciAqdmlkZW9JbmxpbmVMYXllcigp
IGNvbnN0IHsgcmV0dXJuIG1fdmlkZW9JbmxpbmVMYXllci5nZXQoKTsgfQogICAgIFBsYXRmb3Jt
TGF5ZXIgKnZpZGVvRnVsbHNjcmVlbkxheWVyKCkgY29uc3QgeyByZXR1cm4gbV92aWRlb0Z1bGxz
Y3JlZW5MYXllci5nZXQoKTsgfQogICAgIEZsb2F0UmVjdCB2aWRlb0Z1bGxzY3JlZW5GcmFtZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdmlkZW9GdWxsc2NyZWVuRnJhbWU7IH0KLSAgICB2b2lkIHNldFZp
ZGVvTGF5ZXIoUGxhdGZvcm1MYXllciAqLCBJbnRTaXplIGNvbnRlbnRTaXplKTsKLSAgICB2b2lk
IHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIgKik7CisgICAgdm9pZCBzZXRW
aWRlb0xheWVycyhQbGF0Zm9ybUxheWVyICosIFBsYXRmb3JtTGF5ZXIgKiwgSW50U2l6ZSBjb250
ZW50U2l6ZSk7CisgICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVy
ICosIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBjb21wbGV0aW9uSGFuZGxlcik7CiAgICAgdm9pZCBz
ZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3QpOwogICAgIHZvaWQgZGlkRGVzdHJveVZp
ZGVvTGF5ZXIoKTsKIApAQCAtNTQsNiArNTUsNyBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxQ
bGF0Zm9ybUxheWVyPiBtX3ZpZGVvSW5saW5lTGF5ZXI7CiAgICAgUmV0YWluUHRyPFBsYXRmb3Jt
TGF5ZXI+IG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXI7CiAgICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5
ZXI+IG1fdmlkZW9MYXllcjsKKyAgICBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gbV9zZWNvbmRh
cnlWaWRlb0xheWVyOwogICAgIEZsb2F0UmVjdCBtX3ZpZGVvRnVsbHNjcmVlbkZyYW1lOwogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9GdWxsc2NyZWVuTGF5ZXJN
YW5hZ2VyLm1tCmluZGV4IDY4YjkyMDM0Yzk4ZDVjOWMwMjg4ZTMyMGI5Njc0Njg3ZDc1ZjRkYWEu
LjM2YWYzZjRjMjEzY2I3ODU3Njc0NWUwZTk3MzUxODliNzcxMzgyY2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvRnVs
bHNjcmVlbkxheWVyTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIubW0KQEAg
LTY2LDU1ICs2Niw5NiBAQCBWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXI6OlZpZGVvRnVsbHNj
cmVlbkxheWVyTWFuYWdlcigpCiB7CiB9CiAKLXZvaWQgVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5h
Z2VyOjpzZXRWaWRlb0xheWVyKFBsYXRmb3JtTGF5ZXIgKnZpZGVvTGF5ZXIsIEludFNpemUgY29u
dGVudFNpemUpCit2b2lkIFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcjo6c2V0VmlkZW9MYXll
cnMoUGxhdGZvcm1MYXllciAqdmlkZW9MYXllciwgUGxhdGZvcm1MYXllciAqc2Vjb25kYXJ5Vmlk
ZW9MYXllciwgSW50U2l6ZSBjb250ZW50U2l6ZSkKIHsKICAgICBtX3ZpZGVvTGF5ZXIgPSB2aWRl
b0xheWVyOworICAgIG1fc2Vjb25kYXJ5VmlkZW9MYXllciA9IHNlY29uZGFyeVZpZGVvTGF5ZXI7
CiAKICAgICBbbV92aWRlb0xheWVyIHdlYl9kaXNhYmxlQWxsQWN0aW9uc107CisgICAgW21fc2Vj
b25kYXJ5VmlkZW9MYXllciB3ZWJfZGlzYWJsZUFsbEFjdGlvbnNdOwogICAgIG1fdmlkZW9Jbmxp
bmVMYXllciA9IGFkb3B0TlMoW1tXZWJWaWRlb0NvbnRhaW5lckxheWVyIGFsbG9jXSBpbml0XSk7
CiAjaWZuZGVmIE5ERUJVRwogICAgIFttX3ZpZGVvSW5saW5lTGF5ZXIgc2V0TmFtZTpAIldlYlZp
ZGVvQ29udGFpbmVyTGF5ZXIiXTsKICNlbmRpZgogICAgIFttX3ZpZGVvSW5saW5lTGF5ZXIgc2V0
RnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCBjb250ZW50U2l6ZS53aWR0aCgpLCBjb250ZW50U2l6ZS5o
ZWlnaHQoKSldOwogICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbkxheWVyKSB7Ci0gICAgICAgIFtt
X3ZpZGVvTGF5ZXIgc2V0RnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCBtX3ZpZGVvRnVsbHNjcmVlbkZy
YW1lLndpZHRoKCksIG1fdmlkZW9GdWxsc2NyZWVuRnJhbWUuaGVpZ2h0KCkpXTsKLSAgICAgICAg
W21fdmlkZW9GdWxsc2NyZWVuTGF5ZXIgaW5zZXJ0U3VibGF5ZXI6bV92aWRlb0xheWVyLmdldCgp
IGF0SW5kZXg6MF07CisgICAgICAgIFttX3ZpZGVvTGF5ZXIgcmVtb3ZlRnJvbVN1cGVybGF5ZXJd
OworICAgICAgICBQbGF0Zm9ybUxheWVyICphY3RpdmVMYXllciA9IHNlY29uZGFyeVZpZGVvTGF5
ZXIgPyBzZWNvbmRhcnlWaWRlb0xheWVyIDogdmlkZW9MYXllcjsKKyAgICAgICAgW2FjdGl2ZUxh
eWVyIHNldEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgbV92aWRlb0Z1bGxzY3JlZW5GcmFtZS53aWR0
aCgpLCBtX3ZpZGVvRnVsbHNjcmVlbkZyYW1lLmhlaWdodCgpKV07CisgICAgICAgIFttX3ZpZGVv
RnVsbHNjcmVlbkxheWVyIGluc2VydFN1YmxheWVyOmFjdGl2ZUxheWVyIGF0SW5kZXg6MF07CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgW21fdmlkZW9JbmxpbmVMYXllciBpbnNlcnRTdWJsYXllcjpt
X3ZpZGVvTGF5ZXIuZ2V0KCkgYXRJbmRleDowXTsKICAgICAgICAgW21fdmlkZW9MYXllciBzZXRG
cmFtZTptX3ZpZGVvSW5saW5lTGF5ZXIuZ2V0KCkuYm91bmRzXTsKKyAgICAgICAgW21fc2Vjb25k
YXJ5VmlkZW9MYXllciByZW1vdmVGcm9tU3VwZXJsYXllcl07CiAgICAgfQogfQogCi12b2lkIFZp
ZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcjo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZv
cm1MYXllciAqdmlkZW9GdWxsc2NyZWVuTGF5ZXIpCit2b2lkIFZpZGVvRnVsbHNjcmVlbkxheWVy
TWFuYWdlcjo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciAqdmlkZW9GdWxs
c2NyZWVuTGF5ZXIsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
LSAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5MYXllciA9PSB2aWRlb0Z1bGxzY3JlZW5MYXllcikK
KyAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5MYXllciA9PSB2aWRlb0Z1bGxzY3JlZW5MYXllcikg
eworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICByZXR1cm47CisgICAgfQog
CiAgICAgbV92aWRlb0Z1bGxzY3JlZW5MYXllciA9IHZpZGVvRnVsbHNjcmVlbkxheWVyOwogCiAg
ICAgW0NBVHJhbnNhY3Rpb24gYmVnaW5dOwogICAgIFtDQVRyYW5zYWN0aW9uIHNldERpc2FibGVB
Y3Rpb25zOllFU107CiAKLSAgICBDQUNvbnRleHQgKm9sZENvbnRleHQgPSBbbV92aWRlb0xheWVy
IGNvbnRleHRdOwotICAgIENBQ29udGV4dCAqbmV3Q29udGV4dCA9IG5pbDsKKyAgICBpZiAobV9z
ZWNvbmRhcnlWaWRlb0xheWVyICYmIG1fdmlkZW9MYXllcikgeworICAgICAgICBpZiAobV92aWRl
b0Z1bGxzY3JlZW5MYXllcikgeworICAgICAgICAgICAgW21fdmlkZW9GdWxsc2NyZWVuTGF5ZXIg
aW5zZXJ0U3VibGF5ZXI6bV9zZWNvbmRhcnlWaWRlb0xheWVyLmdldCgpIGF0SW5kZXg6MF07Cisg
ICAgICAgICAgICBbbV9zZWNvbmRhcnlWaWRlb0xheWVyIHNldEZyYW1lOkNHUmVjdE1ha2UoMCwg
MCwgbV92aWRlb0Z1bGxzY3JlZW5GcmFtZS53aWR0aCgpLCBtX3ZpZGVvRnVsbHNjcmVlbkZyYW1l
LmhlaWdodCgpKV07CisgICAgICAgIH0gZWxzZSBpZiAobV92aWRlb0lubGluZUxheWVyKSB7Cisg
ICAgICAgICAgICBbbV92aWRlb0xheWVyIHNldEZyYW1lOlttX3ZpZGVvSW5saW5lTGF5ZXIgYm91
bmRzXV07CisgICAgICAgICAgICBbbV92aWRlb0lubGluZUxheWVyIGluc2VydFN1YmxheWVyOm1f
dmlkZW9MYXllci5nZXQoKSBhdEluZGV4OjBdOworICAgICAgICB9CiAKLSAgICBpZiAobV92aWRl
b0Z1bGxzY3JlZW5MYXllciAmJiBtX3ZpZGVvTGF5ZXIpIHsKLSAgICAgICAgW21fdmlkZW9GdWxs
c2NyZWVuTGF5ZXIgaW5zZXJ0U3VibGF5ZXI6bV92aWRlb0xheWVyLmdldCgpIGF0SW5kZXg6MF07
Ci0gICAgICAgIFttX3ZpZGVvTGF5ZXIgc2V0RnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCBtX3ZpZGVv
RnVsbHNjcmVlbkZyYW1lLndpZHRoKCksIG1fdmlkZW9GdWxsc2NyZWVuRnJhbWUuaGVpZ2h0KCkp
XTsKLSAgICAgICAgbmV3Q29udGV4dCA9IFttX3ZpZGVvRnVsbHNjcmVlbkxheWVyIGNvbnRleHRd
OwotICAgIH0gZWxzZSBpZiAobV92aWRlb0lubGluZUxheWVyICYmIG1fdmlkZW9MYXllcikgewot
ICAgICAgICBbbV92aWRlb0xheWVyIHNldEZyYW1lOlttX3ZpZGVvSW5saW5lTGF5ZXIgYm91bmRz
XV07Ci0gICAgICAgIFttX3ZpZGVvTGF5ZXIgcmVtb3ZlRnJvbVN1cGVybGF5ZXJdOwotICAgICAg
ICBbbV92aWRlb0lubGluZUxheWVyIGluc2VydFN1YmxheWVyOm1fdmlkZW9MYXllci5nZXQoKSBh
dEluZGV4OjBdOwotICAgICAgICBuZXdDb250ZXh0ID0gW21fdmlkZW9JbmxpbmVMYXllciBjb250
ZXh0XTsKLSAgICB9IGVsc2UgaWYgKG1fdmlkZW9MYXllcikKLSAgICAgICAgW21fdmlkZW9MYXll
ciByZW1vdmVGcm9tU3VwZXJsYXllcl07CisgICAgICAgIFJldGFpblB0cjxQbGF0Zm9ybUxheWVy
PiBmdWxsc2NyZWVuTGF5ZXIgPSBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyOworICAgICAgICBSZXRh
aW5QdHI8UGxhdGZvcm1MYXllcj4gdmlkZW9MYXllciA9IG1fdmlkZW9MYXllcjsKKyAgICAgICAg
UmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IHNlY29uZGFyeVZpZGVvTGF5ZXIgPSBtX3NlY29uZGFy
eVZpZGVvTGF5ZXI7CisKKyAgICAgICAgW0NBVHJhbnNhY3Rpb24gc2V0Q29tcGxldGlvbkJsb2Nr
Oltjb21wbGV0aW9uSGFuZGxlciwgZnVsbHNjcmVlbkxheWVyLCB2aWRlb0xheWVyLCBzZWNvbmRh
cnlWaWRlb0xheWVyXSB7CisgICAgICAgICAgICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07CisgICAg
ICAgICAgICBbQ0FUcmFuc2FjdGlvbiBzZXREaXNhYmxlQWN0aW9uczpZRVNdOworICAgICAgICAg
ICAgCisgICAgICAgICAgICBpZiAoZnVsbHNjcmVlbkxheWVyKQorICAgICAgICAgICAgICAgIFt2
aWRlb0xheWVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICBbc2Vjb25kYXJ5VmlkZW9MYXllciByZW1vdmVGcm9tU3VwZXJsYXllcl07CisK
KyAgICAgICAgICAgIFtDQVRyYW5zYWN0aW9uIHNldENvbXBsZXRpb25CbG9jazpbY29tcGxldGlv
bkhhbmRsZXJdIHsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgICAg
ICAgICAgfV07CisgICAgICAgICAgICBbQ0FUcmFuc2FjdGlvbiBjb21taXRdOworICAgICAgICB9
XTsKKyAgICB9IGVsc2UgaWYgKG1fdmlkZW9MYXllcikgeworICAgICAgICBpZiAobV92aWRlb0Z1
bGxzY3JlZW5MYXllcikgeworICAgICAgICAgICAgW21fdmlkZW9GdWxsc2NyZWVuTGF5ZXIgaW5z
ZXJ0U3VibGF5ZXI6bV92aWRlb0xheWVyLmdldCgpIGF0SW5kZXg6MF07CisgICAgICAgICAgICBb
bV92aWRlb0xheWVyIHNldEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgbV92aWRlb0Z1bGxzY3JlZW5G
cmFtZS53aWR0aCgpLCBtX3ZpZGVvRnVsbHNjcmVlbkZyYW1lLmhlaWdodCgpKV07CisgICAgICAg
IH0gZWxzZSBpZiAobV92aWRlb0lubGluZUxheWVyKSB7CisgICAgICAgICAgICBbbV92aWRlb0xh
eWVyIHNldEZyYW1lOlttX3ZpZGVvSW5saW5lTGF5ZXIgYm91bmRzXV07CisgICAgICAgICAgICBb
bV92aWRlb0xheWVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKKyAgICAgICAgICAgIFttX3ZpZGVv
SW5saW5lTGF5ZXIgaW5zZXJ0U3VibGF5ZXI6bV92aWRlb0xheWVyLmdldCgpIGF0SW5kZXg6MF07
CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgW21fdmlkZW9MYXllciByZW1vdmVGcm9tU3Vw
ZXJsYXllcl07CisKKyAgICAgICAgQ0FDb250ZXh0ICpvbGRDb250ZXh0ID0gW21fdmlkZW9GdWxs
c2NyZWVuTGF5ZXIgY29udGV4dF07CisgICAgICAgIENBQ29udGV4dCAqbmV3Q29udGV4dCA9IFtt
X3ZpZGVvSW5saW5lTGF5ZXIgY29udGV4dF07CisgICAgICAgIGlmIChvbGRDb250ZXh0ICYmIG5l
d0NvbnRleHQgJiYgb2xkQ29udGV4dCAhPSBuZXdDb250ZXh0KSB7CisgICAgICAgICAgICBtYWNo
X3BvcnRfdCBmZW5jZVBvcnQgPSBbb2xkQ29udGV4dCBjcmVhdGVGZW5jZVBvcnRdOworICAgICAg
ICAgICAgW25ld0NvbnRleHQgc2V0RmVuY2VQb3J0OmZlbmNlUG9ydF07CisgICAgICAgICAgICBt
YWNoX3BvcnRfZGVhbGxvY2F0ZShtYWNoX3Rhc2tfc2VsZigpLCBmZW5jZVBvcnQpOworICAgICAg
ICB9CisKKyAgICAgICAgW0NBVHJhbnNhY3Rpb24gc2V0Q29tcGxldGlvbkJsb2NrOltjb21wbGV0
aW9uSGFuZGxlcl0geworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAg
fV07CisgICAgfSBlbHNlCisgICAgICAgIFtDQVRyYW5zYWN0aW9uIHNldENvbXBsZXRpb25CbG9j
azpbY29tcGxldGlvbkhhbmRsZXJdIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7
CisgICAgICAgIH1dOwogCi0gICAgaWYgKG9sZENvbnRleHQgJiYgbmV3Q29udGV4dCAmJiBvbGRD
b250ZXh0ICE9IG5ld0NvbnRleHQpIHsKLSAgICAgICAgbWFjaF9wb3J0X3QgZmVuY2VQb3J0ID0g
W29sZENvbnRleHQgY3JlYXRlRmVuY2VQb3J0XTsKLSAgICAgICAgW25ld0NvbnRleHQgc2V0RmVu
Y2VQb3J0OmZlbmNlUG9ydF07Ci0gICAgICAgIG1hY2hfcG9ydF9kZWFsbG9jYXRlKG1hY2hfdGFz
a19zZWxmKCksIGZlbmNlUG9ydCk7Ci0gICAgfQogICAgIFtDQVRyYW5zYWN0aW9uIGNvbW1pdF07
CiB9CiAKQEAgLTEyNCwxNyArMTY1LDE4IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5h
Z2VyOjpzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3QgdmlkZW9GdWxsc2NyCiAgICAg
aWYgKCFtX3ZpZGVvRnVsbHNjcmVlbkxheWVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAo
bV92aWRlb0xheWVyKQotICAgICAgICBbbV92aWRlb0xheWVyIHNldEZyYW1lOkNHUmVjdE1ha2Uo
MCwgMCwgdmlkZW9GdWxsc2NyZWVuRnJhbWUud2lkdGgoKSwgdmlkZW9GdWxsc2NyZWVuRnJhbWUu
aGVpZ2h0KCkpXTsKKyAgICBQbGF0Zm9ybUxheWVyICphY3RpdmVMYXllciA9IG1fc2Vjb25kYXJ5
VmlkZW9MYXllci5nZXQoKSA/IG1fc2Vjb25kYXJ5VmlkZW9MYXllci5nZXQoKSA6IG1fdmlkZW9M
YXllci5nZXQoKTsKKyAgICBbYWN0aXZlTGF5ZXIgc2V0RnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCB2
aWRlb0Z1bGxzY3JlZW5GcmFtZS53aWR0aCgpLCB2aWRlb0Z1bGxzY3JlZW5GcmFtZS5oZWlnaHQo
KSldOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcjo6ZGlkRGVzdHJveVZp
ZGVvTGF5ZXIoKQogewotICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbkxheWVyKQotICAgICAgICBb
bV92aWRlb0xheWVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKKyAgICBbbV92aWRlb0xheWVyIHJl
bW92ZUZyb21TdXBlcmxheWVyXTsKKyAgICBbbV9zZWNvbmRhcnlWaWRlb0xheWVyIHJlbW92ZUZy
b21TdXBlcmxheWVyXTsKIAogICAgIG1fdmlkZW9JbmxpbmVMYXllciA9IG5pbDsKICAgICBtX3Zp
ZGVvTGF5ZXIgPSBuaWw7CisgICAgbV9zZWNvbmRhcnlWaWRlb0xheWVyID0gbmlsOwogfQogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlckFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQppbmRleCA2YTU0NDYxM2MzZDZjMjQ3MGRi
YzQ5MTkxMWNlM2E1OWU0Y2MzMzUzLi42MzU4YTc4YWQzNmU4YjZmMzEwMTQyM2Y4Njc2MWUwMjNl
N2NkYmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0KQEAgLTE1OCw5ICsxNTgs
MTAgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6ZGlkU2V0dXBG
dWxsc2NyZWVuKCkKICAgICBSZXRhaW5QdHI8Q0FMYXllcj4gdmlkZW9GdWxsc2NyZWVuTGF5ZXIg
PSBbbV92aWRlb0Z1bGxzY3JlZW5WaWV3IGxheWVyXTsKICAgICBXZWJUaHJlYWRSdW4oW3Byb3Rl
Y3RlZFRoaXMsIHRoaXMsIHZpZGVvRnVsbHNjcmVlbkxheWVyXSB7CiAgICAgICAgIFt2aWRlb0Z1
bGxzY3JlZW5MYXllciBzZXRCYWNrZ3JvdW5kQ29sb3I6Y2FjaGVkQ0dDb2xvcihXZWJDb3JlOjpD
b2xvcjo6dHJhbnNwYXJlbnQpXTsKLSAgICAgICAgbV9tb2RlbC0+c2V0VmlkZW9GdWxsc2NyZWVu
TGF5ZXIodmlkZW9GdWxsc2NyZWVuTGF5ZXIuZ2V0KCkpOwotICAgICAgICBkaXNwYXRjaF9hc3lu
YyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcywgdGhpc10gewotICAg
ICAgICAgICAgbV9pbnRlcmZhY2UtPmVudGVyRnVsbHNjcmVlbigpOworICAgICAgICBtX21vZGVs
LT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5MYXllci5nZXQoKSwgW3By
b3RlY3RlZFRoaXMsIHRoaXNdIHsKKyAgICAgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNo
X2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzLCB0aGlzXSB7CisgICAgICAgICAgICAg
ICAgbV9pbnRlcmZhY2UtPmVudGVyRnVsbHNjcmVlbigpOworICAgICAgICAgICAgfSk7CiAgICAg
ICAgIH0pOwogICAgIH0pOwogfQpAQCAtMTcwLDkgKzE3MSwxMCBAQCB2b2lkIFdlYlZpZGVvRnVs
bHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpkaWRFeGl0RnVsbHNjcmVlbigpCiAgICAgQVNTRVJU
KGlzVUlUaHJlYWQoKSk7CiAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJD
b250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIFdlYlRocmVhZFJ1bihbcHJvdGVjdGVk
VGhpcywgdGhpc10gewotICAgICAgICBtX21vZGVsLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihu
aWwpOwotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBb
cHJvdGVjdGVkVGhpcywgdGhpc10gewotICAgICAgICAgICAgbV9pbnRlcmZhY2UtPmNsZWFudXBG
dWxsc2NyZWVuKCk7CisgICAgICAgIG1fbW9kZWwtPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKG5p
bCwgW3Byb3RlY3RkVGhpcywgdGhpc10geworICAgICAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlz
cGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMsIHRoaXNdIHsKKyAgICAgICAg
ICAgICAgICBtX2ludGVyZmFjZS0+Y2xlYW51cEZ1bGxzY3JlZW4oKTsKKyAgICAgICAgICAgIH0p
OwogICAgICAgICB9KTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQppbmRleCAz
NWJhNzUyNmZhOTgyYmY1YzMwNjMxYmZhZWM2YjA2YWJmMGVjY2I0Li41NjU5NTAzNGU2NDY4M2Zm
YjgzZjBkOWEyYWYwYTRhNTJlOGZiM2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCkBAIC0z
NjksMTQgKzM2OSwxNiBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZFNldHVw
RnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgc3RkOjp0aWUobW9kZWwsIGludGVy
ZmFjZSkgPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOwogCiAgICAgaW50ZXJm
YWNlLT5sYXllckhvc3RpbmdDb250ZXh0KCktPnNldFJvb3RMYXllcih2aWRlb0xheWVyKTsKLSAg
ICBtb2RlbC0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIodmlkZW9MYXllcik7Ci0KLSAgICBbQ0FU
cmFuc2FjdGlvbiBjb21taXRdOwogCiAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXI+IHN0cm9uZ1RoaXModGhpcyk7Ci0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21h
aW5fcXVldWUoKSwgW3N0cm9uZ1RoaXMsIHRoaXMsIGNvbnRleHRJZF0gewotICAgICAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6RW50ZXJG
dWxsc2NyZWVuKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIAorICAgIG1vZGVs
LT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2aWRlb0xheWVyLCBbc3Ryb25nVGhpcywgdGhpcywg
Y29udGV4dElkXSB7CisgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1
ZXVlKCksIFtzdHJvbmdUaGlzLCB0aGlzLCBjb250ZXh0SWRdIHsKKyAgICAgICAgICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpFbnRlckZ1
bGxzY3JlZW4oY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIH0pOwogICAg
IH0pOworICAgIAorICAgIFtDQVRyYW5zYWN0aW9uIGNvbW1pdF07CiB9CiAgICAgCiB2b2lkIFdl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZEVudGVyRnVsbHNjcmVlbih1aW50NjRfdCBjb250
ZXh0SWQpCkBAIC00MDcsMTcgKzQwOSwyMSBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXI6OmRpZEV4aXRGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICBSZWZQdHI8V2Vi
VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ+IG1vZGVsOwogICAgIFJlZlB0cjxXZWJW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0PiBpbnRlcmZhY2U7CiAgICAgc3RkOjp0aWUo
bW9kZWwsIGludGVyZmFjZSkgPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOwot
Ci0gICAgbW9kZWwtPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKG5pbCk7Ci0KICAgICBSZWZQdHI8
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcj4gc3Ryb25nVGhpcyh0aGlzKTsKLSAgICBkaXNwYXRj
aF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbc3Ryb25nVGhpcywgY29udGV4dElk
LCBpbnRlcmZhY2VdIHsKLSAgICAgICAgaWYgKGludGVyZmFjZS0+bGF5ZXJIb3N0aW5nQ29udGV4
dCgpKSB7Ci0gICAgICAgICAgICBpbnRlcmZhY2UtPmxheWVySG9zdGluZ0NvbnRleHQoKS0+c2V0
Um9vdExheWVyKG51bGxwdHIpOwotICAgICAgICAgICAgaW50ZXJmYWNlLT5zZXRMYXllckhvc3Rp
bmdDb250ZXh0KG51bGxwdHIpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChzdHJvbmdUaGlzLT5t
X3BhZ2UpCi0gICAgICAgICAgICBzdHJvbmdUaGlzLT5tX3BhZ2UtPnNlbmQoTWVzc2FnZXM6Oldl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6Q2xlYW51cEZ1bGxzY3JlZW4oY29udGV4dElk
KSwgc3Ryb25nVGhpcy0+bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgCisgICAgbW9kZWwtPnByZXBh
cmVGb3JJbmxpbmUoW3N0cm9uZ1RoaXMsIHRoaXMsIGNvbnRleHRJZCwgaW50ZXJmYWNlLCBtb2Rl
bF0geworICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBb
c3Ryb25nVGhpcywgdGhpcywgY29udGV4dElkLCBpbnRlcmZhY2UsIG1vZGVsXSB7CisgICAgICAg
ICAgICBtb2RlbC0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIobmlsLCBbc3Ryb25nVGhpcywgdGhp
cywgY29udGV4dElkLCBpbnRlcmZhY2VdIHsKKyAgICAgICAgICAgICAgICBkaXNwYXRjaF9hc3lu
YyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbc3Ryb25nVGhpcywgdGhpcywgY29udGV4dElk
LCBpbnRlcmZhY2VdIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGludGVyZmFjZS0+bGF5ZXJI
b3N0aW5nQ29udGV4dCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcmZhY2UtPmxh
eWVySG9zdGluZ0NvbnRleHQoKS0+c2V0Um9vdExheWVyKG51bGxwdHIpOworICAgICAgICAgICAg
ICAgICAgICAgICAgaW50ZXJmYWNlLT5zZXRMYXllckhvc3RpbmdDb250ZXh0KG51bGxwdHIpOwor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChzdHJvbmdUaGlz
LT5tX3BhZ2UpCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJvbmdUaGlzLT5tX3BhZ2UtPnNl
bmQoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6Q2xlYW51cEZ1bGxz
Y3JlZW4oY29udGV4dElkKSwgc3Ryb25nVGhpcy0+bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgICAg
ICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CiAgICAgfSk7CiB9CiAg
ICAgCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>279963</attachid>
            <date>2016-05-27 09:01:46 -0700</date>
            <delta_ts>2016-05-27 12:19:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158148-20160527090257.patch</filename>
            <type>text/plain</type>
            <size>47292</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxNDUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODFjYzk1YzFmZmY4NDg5
YmVjMTBmYTA1YzA2MDRiZmZkOGQ1ZGE2Ni4uYzFkNzRmN2MyM2QwNzM0YmNhZWUyMjg1NmU5ZTYz
MzNlMjZmNmIwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDE2LTA1LTI3ICBKZXJl
bXkgSm9uZXMgIDxqZXJlbXlqQGFwcGxlLmNvbT4KKworICAgICAgICBEZWNyZWFzZSBmbGlja2Vy
IHdoZW4gY2hhbmdpbmcgdmlkZW8gcHJlc2VudGF0aW9uIG1vZGUuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTgxNDgKKyAgICAgICAgcmRhcjovL3By
b2JsZW0vMjQ0NzY5NDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGVyZSBpcyBubyBiZWhhdmlvciBjaGFuZ2Uu
IFRoaXMgY2hhbmdlIGlzIGFib3V0IHRoZSB0aW1pbmcgb2YKKyAgICAgICAgbW92aW5nIEFWUGxh
eWVyTGF5ZXJzIGJldHdlZW4gbGF5ZXJzIHRvIHByZXZlbnQgZmxpY2tlci4KKworICAgICAgICAx
KSBNb3ZpbmcgYW4gQVZQbGF5ZXJMYXllciBiZXR3ZWVuIENBQ29udGV4dHMgY2FuIGZsaWNrZXIu
IFNvIGFsd2F5cyBrZWVwIHR3bworICAgICAgICBBVlBsYXllckxheWVycyBhcm91bmQgYW5kIGFk
ZCBhbmQgcmVtb3ZlIHRoZW0gZnJvbSB0aGUgaW5saW5lIGFuZCBmdWxsc2NyZWVuIGNvbnRleHRz
LgorICAgICAgICAyKSBXYWl0IHRvIHNob3cgdGhlIGlubGluZSBwbGFjZWhvbGRlciB1bnRpbCB0
aGUgZnVsbHNjcmVlbiB2aWRlbyBsYXllciBoYXMgYmVlbiBpbnN0YWxsZWQuCisgICAgICAgIDMp
IFdhaXQgdG8gcmVtb3ZlIHRoZSBmdWxsc2NyZWVuIHZpZGVvIGxheWVyIHVudGlsIHRoZSBwbGFj
ZWhvbGRlciBoYXMgYmVlbiByZW1vdmVkLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYWNvbnRy
b2xzL01lZGlhQ29udHJvbHNIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJv
bHNIb3N0Ojppc1ZpZGVvTGF5ZXJJbmxpbmUpOiBFeHBvc2UgaXNWaWRlb0xheWVySW5saW5lIHRv
IHRoZSBzaGFkb3cgRE9NLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sc0hvc3Q6OnNl
dFByZXBhcmVkRm9ySW5saW5lKTogRXhwb3NlIHNldFByZXBhcmVkRm9ySW5saW5lIHRvIHRoZSBz
aGFkb3cgRE9NLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xz
SG9zdC5oOiBBZGQgc2V0UHJlcGFyZWRGb3JJbmxpbmUgYW5kIGlzVmlkZW9MYXllcklubGluZQor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5pZGw6IEFk
ZCBzZXRQcmVwYXJlZEZvcklubGluZSBhbmQgaXNWaWRlb0xheWVySW5saW5lCisgICAgICAgICog
TW9kdWxlcy9tZWRpYWNvbnRyb2xzL21lZGlhQ29udHJvbHNBcHBsZS5qczoKKyAgICAgICAgKENv
bnRyb2xsZXIucHJvdG90eXBlLnNob3dJbmxpbmVQbGF5YmFja1BsYWNlaG9sZGVyV2hlblNhZmUp
OiBXYWl0IHRvIHNob3cgcGxhY2Vob2xkZXIgd2hlbiBlbnRlcmluZyBmdWxsc2NyZWVuLgorICAg
ICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUuaGFuZGxlUHJlc2VudGF0aW9uTW9kZUNoYW5nZSk6
IFdhaXQgdG8gc2hvdyBwbGFjZWhvbGRlciwgYW5kIG5vdGlmeSB3aGVuIHBsYWNlaG9kbGVyIGlz
IHJlbW92ZWQuCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNldFByZXBhcmVkRm9ySW5saW5lKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnByZXBhcmVGb3JJbmxpbmUpOiBVc2VkIHRv
IGRlbGF5IGZ1bGxzY3JlZW4gY2xlYW51cCB1bnRpbCBwbGFjZWhvZGxlciBpcyByZW1vdmVkLgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5
ZXIpOiBBZGQgYSBjYWxsYmFjayBzbyB3ZSBjYW4gd2FpdCB1bnRpbCB0aGlzIGNvbXBsZXRlcyBi
ZWZvcmUgY29udGludWluZy4KKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmlzVmlkZW9MYXllcklubGluZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwcmVwYXJlRm9ySW5saW5lKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVy
KTogQWRkIGNvbXBsZXRpb25IYW5kbGVyLgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1dlYlZp
ZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJW
aWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIp
OiBBZGQgY29tcGxldGlvbkhhbmRsZXIuCisgICAgICAgIChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6cHJlcGFyZUZvcklubGluZSk6IEFkZGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1t
OgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnNldFZpZGVv
RnVsbHNjcmVlbkxheWVyKTogQWRkIGNvbXBsZXRpb25IYW5kbGVyLgorICAgICAgICAoV2ViVmlk
ZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnByZXBhcmVGb3JJbmxpbmUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcik6IEFkZCBjb21wbGV0aW9uSGFu
ZGxlci4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKTogQWRkIGNv
bXBsZXRpb25IYW5kbGVyLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
UHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNl
OjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcik6IEFkZCBjb21wbGV0aW9uSGFuZGxlci4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUFW
UGxheWVyTGF5ZXIpOiBDcmVhdGUgdHdvIHZpZGVvIGxheWVycy4KKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmRlc3Ryb3lWaWRlb0xheWVyKTog
QWxsb3cgdHdvIHZpZGVvIGxheWVycy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKTogQWRkIGNvbXBs
ZXRpb25IYW5kbGVyLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6dXBkYXRlVmlkZW9MYXllckdyYXZpdHkpOiBBbGxvdyB0d28gdmlkZW8gbGF5
ZXJzLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQzo6YWRkRGlzcGxheUxheWVyKTogQWxsb3cgdHdvIHZpZGVvIGxheWVycy4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0Vmlk
ZW9GdWxsc2NyZWVuTGF5ZXIpOiBBZGQgY29tcGxldGlvbkhhbmRsZXIuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpjcmVhdGVQcmV2
aWV3TGF5ZXJzKTogQWxsb3cgdHdvIHZpZGVvIGxheWVycy4KKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5
ZXIpOiBBZGQgY29tcGxldGlvbkhhbmRsZXIuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9GdWxsc2NyZWVuTGF5
ZXJNYW5hZ2VyLm1tOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5h
Z2VyOjpzZXRWaWRlb0xheWVycyk6IEFsbG93IHR3byB2aWRlbyBsYXllcnMuCisgICAgICAgIChX
ZWJDb3JlOjpWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXI6OnNldFZpZGVvRnVsbHNjcmVlbkxh
eWVyKTogQWRkIGNvbXBsZXRpb25IYW5kbGVyLgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GdWxs
c2NyZWVuTGF5ZXJNYW5hZ2VyOjpzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZSk6IEFsbG93IHR3byB2
aWRlbyBsYXllcnMuCisgICAgICAgIChXZWJDb3JlOjpWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFn
ZXI6OmRpZERlc3Ryb3lWaWRlb0xheWVyKTogQWxsb3cgdHdvIHZpZGVvIGxheWVycy4KKyAgICAg
ICAgKFdlYkNvcmU6OlZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcjo6c2V0VmlkZW9MYXllcik6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXJBVktpdC5tbToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250
ZXh0OjpkaWRTZXR1cEZ1bGxzY3JlZW4pOiBVc2UgY29tcGxldGlvbkhhbmRsZXIuCisgICAgICAg
IChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6ZGlkRXhpdEZ1bGxzY3JlZW4p
OiBVc2UgY29tcGxldGlvbkhhbmRsZXIuCisKIDIwMTYtMDUtMjcgIEFudG9pbmUgUXVpbnQgIDxn
cmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBWaWRlbyBwbGF5IGdseXBoIG5vdCB2aXNpYmxl
IGlmIGluaXRpYWxseSBpbnZpc2libGUgd2hlbiBjb250YWluZWQgaW4gYSAiLXdlYmtpdC1vdmVy
Zmxvdy1zY3JvbGxpbmc6IHRvdWNoIiBjb250YWluZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA0Yjc1NmUzZjk1
ZTdjMmM2MGFlNmViMjdlMWI4NDMzMzFkODAyNDBiLi5kODFiNDlmZGI2NWNlMGZmOGI2YzEzMTk3
NDBiOWZhOTg1ZmRjOWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTYtMDUtMjcg
IEplcmVteSBKb25lcyAgPGplcmVteWpAYXBwbGUuY29tPgorCisgICAgICAgIERlY3JlYXNlIGZs
aWNrZXIgd2hlbiBjaGFuZ2luZyB2aWRlbyBwcmVzZW50YXRpb24gbW9kZS4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODE0OAorICAgICAgICByZGFy
Oi8vcHJvYmxlbS8yNDQ3Njk0OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFByZXZlbnQgZmxpY2tlciBieSB1c2luZyBzZXRWaWRlb0Z1bGxzY3JlZW5M
YXllciB3aXRoIGEgY29tcGxldGlvbiBoYW5kbGVyIHRvIGRlbGF5CisgICAgICAgIGVudGVyIGZ1
bGxzY3JlZW4gYW5kIGNsZWFudXAgZnVsbHNjcmVlbiB1bnRpbCB0aGUgdmlkZW8gbGF5ZXIgaGFz
IGNvbXBsZXRlbHkgYmVlbgorICAgICAgICBpbnN0YWxsZWQgb3IgcmVtb3ZlZC4KKworICAgICAg
ICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkU2V0dXBGdWxsc2NyZWVu
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkRXhpdEZ1
bGxzY3JlZW4pOgorCiAyMDE2LTA1LTI2ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNv
bT4KIAogICAgICAgICBDZXJ0YWluIE5ldHdvcmtSZXNvdXJjZUxvYWRlciBjYWxsYmFja3MgY2Fu
IGRlcmVmIGEgbnVsbCBtX25ldHdvcmtMb2FkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5jcHAKaW5kZXggOTEx
MjIzMDY0Yjk3ODBkM2E0YjEyZjE3YjAyODBiMTk5YTM5OGQ5My4uMGU2OWRmOTExZTBiYzUwMTQ5
YWNiNzM5NjFkOWJhNjFhNjYwYmUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuY3BwCkBAIC0yMTAsNiAr
MjEwLDE2IEBAIGJvb2wgTWVkaWFDb250cm9sc0hvc3Q6OnN1cHBvcnRzRnVsbHNjcmVlbigpCiAg
ICAgcmV0dXJuIG1fbWVkaWFFbGVtZW50LT5zdXBwb3J0c0Z1bGxzY3JlZW4oSFRNTE1lZGlhRWxl
bWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQpOwogfQogCitib29sIE1lZGlh
Q29udHJvbHNIb3N0Ojppc1ZpZGVvTGF5ZXJJbmxpbmUoKQoreworICAgIHJldHVybiBtX21lZGlh
RWxlbWVudC0+aXNWaWRlb0xheWVySW5saW5lKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sc0hv
c3Q6OnNldFByZXBhcmVkRm9ySW5saW5lKGJvb2wgdmFsdWUpCit7CisgICAgbV9tZWRpYUVsZW1l
bnQtPnNldFByZXBhcmVkRm9ySW5saW5lKHZhbHVlKTsKK30KKwogYm9vbCBNZWRpYUNvbnRyb2xz
SG9zdDo6dXNlckdlc3R1cmVSZXF1aXJlZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuICFtX21lZGlh
RWxlbWVudC0+bWVkaWFTZXNzaW9uKCkucGxheWJhY2tQZXJtaXR0ZWQoKm1fbWVkaWFFbGVtZW50
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRp
YUNvbnRyb2xzSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01l
ZGlhQ29udHJvbHNIb3N0LmgKaW5kZXggNGJhM2NhMzljYTk2M2JlYTMyMTZlY2EwMzA2NGQyYzA2
ZTIwMDY3ZS4uY2YwOTc1YzM1MTY4YjJhNWNhNTY1MzY1YTJhZGQ4YTk5ODRhN2M2MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNI
b3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29u
dHJvbHNIb3N0LmgKQEAgLTY0LDcgKzY0LDkgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlVGV4
dFRyYWNrQ29udGFpbmVyKCk7CiAgICAgYm9vbCBhbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrKCkg
Y29uc3Q7CiAgICAgYm9vbCBzdXBwb3J0c0Z1bGxzY3JlZW4oKTsKKyAgICBib29sIGlzVmlkZW9M
YXllcklubGluZSgpOwogICAgIGJvb2wgdXNlckdlc3R1cmVSZXF1aXJlZCgpIGNvbnN0OworICAg
IHZvaWQgc2V0UHJlcGFyZWRGb3JJbmxpbmUoYm9vbCk7CiAKICAgICB2b2lkIHVwZGF0ZUNhcHRp
b25EaXNwbGF5U2l6ZXMoKTsKICAgICB2b2lkIGVudGVyZWRGdWxsc2NyZWVuKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hv
c3QuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJv
bHNIb3N0LmlkbAppbmRleCA3YjA3MDZkOTVjNmZjYzllY2QzMjQxMzBlMzFjZDdiZTZjZWJmMjQz
Li4wMDEzNDM1MDY1NjUwM2NkYTc2MmRjMDIzYzYyOTIzMDhjYmIxY2NlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuaWRs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xz
SG9zdC5pZGwKQEAgLTQyLDkgKzQyLDExIEBAIGVudW0gRGV2aWNlVHlwZSB7CiAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIFRleHRUcmFjayBjYXB0aW9uTWVudUF1dG9tYXRpY0l0ZW07CiAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBjYXB0aW9uRGlzcGxheU1vZGU7CiAgICAgdm9pZCBz
ZXRTZWxlY3RlZFRleHRUcmFjayhUZXh0VHJhY2s/IHRyYWNrKTsKKyAgICB2b2lkIHNldFByZXBh
cmVkRm9ySW5saW5lKGJvb2xlYW4gcHJlcGFyZWQpOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBI
VE1MRWxlbWVudCB0ZXh0VHJhY2tDb250YWluZXI7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJv
b2xlYW4gYWxsb3dzSW5saW5lTWVkaWFQbGF5YmFjazsKICAgICByZWFkb25seSBhdHRyaWJ1dGUg
Ym9vbGVhbiBzdXBwb3J0c0Z1bGxzY3JlZW47CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xl
YW4gaXNWaWRlb0xheWVySW5saW5lOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIHVz
ZXJHZXN0dXJlUmVxdWlyZWQ7CiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGV4
dGVybmFsRGV2aWNlRGlzcGxheU5hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhY29udHJvbHMvbWVkaWFDb250cm9sc0FwcGxlLmpzIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYWNvbnRyb2xzL21lZGlhQ29udHJvbHNBcHBsZS5qcwppbmRleCA4Mjg1ZTg2
MDhlZmFiMWUzNDU5YzcyM2JiZWZlMTM3MjhjMDc5YTAxLi44NTQwNTYzMzFmN2ZlN2NlYmQ5MTc0
MmI4MjFiZTlmMDdhNjNhZmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhY29udHJvbHMvbWVkaWFDb250cm9sc0FwcGxlLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFjb250cm9scy9tZWRpYUNvbnRyb2xzQXBwbGUuanMKQEAgLTgzNyw2ICs4Mzcs
MTYgQEAgQ29udHJvbGxlci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLmNvbnRyb2xz
LnBpY3R1cmVJblBpY3R1cmVCdXR0b24uY2xhc3NMaXN0LmFkZCh0aGlzLkNsYXNzTmFtZXMuaGlk
ZGVuKTsKICAgICB9LAogCisgICAgc2hvd0lubGluZVBsYXliYWNrUGxhY2Vob2xkZXJXaGVuU2Fm
ZTogZnVuY3Rpb24oKSB7CisgICAgICAgIGlmICh0aGlzLnByZXNlbnRhdGlvbk1vZGUoKSA9PSAn
cGljdHVyZS1pbi1waWN0dXJlJykgeworICAgICAgICAgICAgaWYgKCF0aGlzLmhvc3QuaXNWaWRl
b0xheWVySW5saW5lKSB7CisgICAgICAgICAgICAgICAgdGhpcy5jb250cm9scy5pbmxpbmVQbGF5
YmFja1BsYWNlaG9sZGVyLmNsYXNzTGlzdC5yZW1vdmUodGhpcy5DbGFzc05hbWVzLmhpZGRlbik7
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQodGhpcy5z
aG93SW5saW5lUGxheWJhY2tQbGFjZWhvbGRlcldoZW5TYWZlLmJpbmQodGhpcyksIDMzKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0sCisKICAgICBoYW5kbGVQcmVzZW50YXRpb25N
b2RlQ2hhbmdlOiBmdW5jdGlvbihldmVudCkKICAgICB7CiAgICAgICAgIHZhciBwcmVzZW50YXRp
b25Nb2RlID0gdGhpcy5wcmVzZW50YXRpb25Nb2RlKCk7CkBAIC04NTQsNyArODY0LDcgQEAgQ29u
dHJvbGxlci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBjYXNlICdwaWN0dXJlLWluLXBpY3R1
cmUnOgogICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbHMucGFuZWwuY2xhc3NMaXN0LmFkZCh0
aGlzLkNsYXNzTmFtZXMucGljdHVyZUluUGljdHVyZSk7CiAgICAgICAgICAgICAgICAgdGhpcy5j
b250cm9scy5pbmxpbmVQbGF5YmFja1BsYWNlaG9sZGVyLmNsYXNzTGlzdC5hZGQodGhpcy5DbGFz
c05hbWVzLnBpY3R1cmVJblBpY3R1cmUpOwotICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbHMu
aW5saW5lUGxheWJhY2tQbGFjZWhvbGRlci5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuQ2xhc3NOYW1l
cy5oaWRkZW4pOworICAgICAgICAgICAgICAgIHRoaXMuc2hvd0lubGluZVBsYXliYWNrUGxhY2Vo
b2xkZXJXaGVuU2FmZSgpOwogCiAgICAgICAgICAgICAgICAgdGhpcy5jb250cm9scy5pbmxpbmVQ
bGF5YmFja1BsYWNlaG9sZGVyVGV4dFRvcC5pbm5lclRleHQgPSB0aGlzLlVJU3RyaW5nKCdUaGlz
IHZpZGVvIGlzIHBsYXlpbmcgaW4gUGljdHVyZSBpbiBQaWN0dXJlJyk7CiAgICAgICAgICAgICAg
ICAgdGhpcy5jb250cm9scy5pbmxpbmVQbGF5YmFja1BsYWNlaG9sZGVyVGV4dFRvcC5jbGFzc0xp
c3QuYWRkKHRoaXMuQ2xhc3NOYW1lcy5waWN0dXJlSW5QaWN0dXJlKTsKQEAgLTg4Myw2ICs4OTMs
NyBAQCBDb250cm9sbGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5yZXNldEhpZGVDb250
cm9sc1RpbWVyKCk7CiAgICAgICAgIGlmIChwcmVzZW50YXRpb25Nb2RlICE9ICdmdWxsc2NyZWVu
JyAmJiB0aGlzLnZpZGVvLnBhdXNlZCAmJiB0aGlzLmNvbnRyb2xzQXJlSGlkZGVuKCkpCiAgICAg
ICAgICAgICB0aGlzLnNob3dDb250cm9scygpOworICAgICAgICB0aGlzLmhvc3Quc2V0UHJlcGFy
ZWRGb3JJbmxpbmUocHJlc2VudGF0aW9uTW9kZSA9PT0gJ2lubGluZScpCiAgICAgfSwKIAogICAg
IGhhbmRsZUZ1bGxzY3JlZW5DaGFuZ2U6IGZ1bmN0aW9uKGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggZDdmZDI4NTA1NjA1Y2EzZWQ5YTRhNjJlNTU5
NTJkZGE1ODFjNjUwMC4uMWRjODllZGYxZjc2OWE0NWYzM2ZjMzA0ODQ0ODJkZWRhNWM0ZGNjNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC01NDcxLDE1ICs1
NDcxLDM3IEBAIFBsYXRmb3JtTGF5ZXIqIEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXRmb3JtTGF5ZXIo
KSBjb25zdAogICAgIHJldHVybiBtX3BsYXllciA/IG1fcGxheWVyLT5wbGF0Zm9ybUxheWVyKCkg
OiBudWxscHRyOwogfQogCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFByZXBhcmVkRm9ySW5s
aW5lKGJvb2wgdmFsdWUpCit7CisgICAgbV9wcmVwYXJlZEZvcklubGluZSA9IHZhbHVlOworICAg
IGlmIChtX3ByZXBhcmVkRm9ySW5saW5lICYmIG1fcGVycGFyZUZvcklubGluZUNvbXBsZXRpb25I
YW5kbGVyKSB7CisgICAgICAgIG1fcGVycGFyZUZvcklubGluZUNvbXBsZXRpb25IYW5kbGVyKCk7
CisgICAgICAgIG1fcGVycGFyZUZvcklubGluZUNvbXBsZXRpb25IYW5kbGVyID0gbmlsOworICAg
IH0KK30KKwogI2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJ
REVPX1BSRVNFTlRBVElPTl9NT0RFKSkKIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRWaWRl
b0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKQordm9pZCBIVE1M
TWVkaWFFbGVtZW50OjpwcmVwYXJlRm9ySW5saW5lKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBjb21w
bGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQoIW1fcGVycGFyZUZvcklubGluZUNvbXBsZXRp
b25IYW5kbGVyKTsKKyAgICBpZiAobV9wcmVwYXJlZEZvcklubGluZSkgIHsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fcGVycGFy
ZUZvcklubGluZUNvbXBsZXRpb25IYW5kbGVyID0gY29tcGxldGlvbkhhbmRsZXI7Cit9CisKK3Zv
aWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXll
ciogcGxhdGZvcm1MYXllciwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXIgPSBwbGF0Zm9ybUxheWVyOwotICAgIGlm
ICghbV9wbGF5ZXIpCisgICAgaWYgKCFtX3BsYXllcikgeworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcigpOwogICAgICAgICByZXR1cm47CisgICAgfQogICAgIAotICAgIG1fcGxheWVyLT5zZXRW
aWRlb0Z1bGxzY3JlZW5MYXllcihwbGF0Zm9ybUxheWVyKTsKKyAgICBtX3BsYXllci0+c2V0Vmlk
ZW9GdWxsc2NyZWVuTGF5ZXIocGxhdGZvcm1MYXllciwgY29tcGxldGlvbkhhbmRsZXIpOwogICAg
IHNldE5lZWRzU3R5bGVSZWNhbGMoU3ludGhldGljU3R5bGVDaGFuZ2UpOwogI2lmIEVOQUJMRShW
SURFT19UUkFDSykKICAgICB1cGRhdGVUZXh0VHJhY2tEaXNwbGF5KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IDNiZTIxY2YyMGFmOThiMGRjNzA2YTI2NjhkNGQ1
M2JhY2I4NWRjMDEuLjFiYTI5YWQzMGFlM2MxZWIxYWE1N2FkNzIxN2FmMTk1NjlkODE3ZGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC0xMjQsNiArMTI0LDEwIEBA
IHB1YmxpYzoKIAogICAgIC8vIEV2ZW50dWFsbHkgb3ZlcmxvYWRlZCBpbiBIVE1MVmlkZW9FbGVt
ZW50CiAgICAgYm9vbCBzdXBwb3J0c0Z1bGxzY3JlZW4oSFRNTE1lZGlhRWxlbWVudEVudW1zOjpW
aWRlb0Z1bGxzY3JlZW5Nb2RlKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfTsKKyAg
ICBib29sIGlzVmlkZW9MYXllcklubGluZSgpIHsgcmV0dXJuIG1fdmlkZW9GdWxsc2NyZWVuTGF5
ZXIgPT0gbmlsOyB9OworCisgICAgYm9vbCBtX3ByZXBhcmVkRm9ySW5saW5lOworICAgIHZvaWQg
c2V0UHJlcGFyZWRGb3JJbmxpbmUoYm9vbCk7CiAKICAgICBib29sIHN1cHBvcnRzU2Nhbm5pbmco
KSBjb25zdCBvdmVycmlkZTsKIApAQCAtMTM0LDExICsxMzgsMTQgQEAgcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIFBsYXRmb3JtTWVkaWEgcGxhdGZvcm1NZWRpYSgpIGNvbnN0OwogICAgIFBs
YXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdDsKICNpZiBQTEFURk9STShJT1MpIHx8
IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCi0gICAg
dm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKik7CisgICAgc3RkOjpm
dW5jdGlvbjx2b2lkKCk+IG1fcGVycGFyZUZvcklubGluZUNvbXBsZXRpb25IYW5kbGVyOworICAg
IHZvaWQgcHJlcGFyZUZvcklubGluZShzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkhh
bmRsZXIgPSBbXSB7IH0pOworICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZv
cm1MYXllciosIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBjb21wbGV0aW9uSGFuZGxlciA9IFtdIHsg
fSk7CiAgICAgUGxhdGZvcm1MYXllciogdmlkZW9GdWxsc2NyZWVuTGF5ZXIoKSBjb25zdCB7IHJl
dHVybiBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyLmdldCgpOyB9CiAgICAgdm9pZCBzZXRWaWRlb0Z1
bGxzY3JlZW5GcmFtZShGbG9hdFJlY3QpOwogICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuR3Jh
dml0eShNZWRpYVBsYXllckVudW1zOjpWaWRlb0dyYXZpdHkpOwogICAgIE1lZGlhUGxheWVyRW51
bXM6OlZpZGVvR3Jhdml0eSB2aWRlb0Z1bGxzY3JlZW5HcmF2aXR5KCkgY29uc3QgeyByZXR1cm4g
bV92aWRlb0Z1bGxzY3JlZW5HcmF2aXR5OyB9CisKICNlbmRpZgogCiAgICAgdXNpbmcgSFRNTE1l
ZGlhRWxlbWVudEVudW1zOjpEZWxheWVkQWN0aW9uVHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bFZpZGVvRWxlbWVudC5oCmluZGV4IGY3NzgyMjFkNTQ0MjJlMTQ5MWNjYWM4MTY5MjdjMTQ0YjYw
ZDhhYjcuLmIyODA5YzBjMDEwN2RkZmQ2MzFlZjAzOWFlMTQ3MWUzNDY1MWU0OTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVs
VmlkZW9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViVmlk
ZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1
ZGUgIkhUTUxNZWRpYUVsZW1lbnRFbnVtcy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIK
ICNpbmNsdWRlICJXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oIgorI2luY2x1ZGUgPGZ1bmN0aW9u
YWw+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC01NSw3ICs1Niw4IEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZShXZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2UqKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZpZGVv
RWxlbWVudChIVE1MVmlkZW9FbGVtZW50Kik7CiAgICAgV0VCQ09SRV9FWFBPUlQgSFRNTFZpZGVv
RWxlbWVudCogdmlkZW9FbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV92aWRlb0VsZW1lbnQuZ2V0
KCk7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBs
YXRmb3JtTGF5ZXIqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZpZGVvRnVsbHNjcmVl
bkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkhh
bmRsZXIgPSBbXSB7IH0pOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcHJlcGFyZUZvcklubGlu
ZShzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkhhbmRsZXIgPSBbXSB7IH0pOwogICAg
IFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50JiBwbGF5YmFja1Nlc3Npb25Nb2Rl
bCgpIHsgcmV0dXJuIG1fcGxheWJhY2tTZXNzaW9uTW9kZWw7IH0KICAgICAKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGhhbmRsZUV2ZW50KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBXZWJDb3JlOjpFdmVudCopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVv
RWxlbWVudC5tbQppbmRleCBkODBkZTEzMGU3NmM2ODI0ODM5Mjc1OWI2MWJkMjY5ZTZjMjk3ODMx
Li44MTM1YjZlMmVhMWE5NjEzNzk2NWI4NDBlNjBiOWMyN2ExM2YyOTQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVv
RWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1
bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbQpAQCAtMTEyLDcgKzExMiw3IEBAIHZvaWQgV2Vi
VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnVwZGF0ZUZvckV2ZW50TmFtZShjb25z
dCBXVEY6OkF0b21pY1N0CiB7CiAgICAgaWYgKCFtX3ZpZGVvRWxlbWVudCB8fCAhbV92aWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2UpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIGJvb2wgYWxs
ID0gZXZlbnROYW1lID09IGV2ZW50TmFtZUFsbCgpOwogCiAgICAgaWYgKGFsbApAQCAtMTIwLDEx
ICsxMjAsMTMgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6dXBk
YXRlRm9yRXZlbnROYW1lKGNvbnN0IFdURjo6QXRvbWljU3QKICAgICAgICAgbV92aWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2UtPnNldFZpZGVvRGltZW5zaW9ucyh0cnVlLCBtX3ZpZGVvRWxlbWVudC0+
dmlkZW9XaWR0aCgpLCBtX3ZpZGVvRWxlbWVudC0+dmlkZW9IZWlnaHQoKSk7CiB9CiAKLXZvaWQg
V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnNldFZpZGVvRnVsbHNjcmVlbkxh
eWVyKFBsYXRmb3JtTGF5ZXIqIHZpZGVvTGF5ZXIpCit2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1v
ZGVsVmlkZW9FbGVtZW50OjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiB2
aWRlb0xheWVyLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0g
ICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXIgPT0gdmlkZW9MYXllcikKKyAgICBpZiAobV92
aWRlb0Z1bGxzY3JlZW5MYXllciA9PSB2aWRlb0xheWVyKSB7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKCk7CiAgICAgICAgIHJldHVybjsKLSAgICAKKyAgICB9CisKICAgICBtX3ZpZGVvRnVs
bHNjcmVlbkxheWVyID0gdmlkZW9MYXllcjsKICNpZiBQTEFURk9STShNQUMpCiAgICAgW21fdmlk
ZW9GdWxsc2NyZWVuTGF5ZXIgc2V0QW5jaG9yUG9pbnQ6Q0dQb2ludE1ha2UoMCwgMCldOwpAQCAt
MTMyLDkgKzEzNCwyMyBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50
OjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKgogICAgIFttX3ZpZGVvRnVs
bHNjcmVlbkxheWVyIHNldEFuY2hvclBvaW50OkNHUG9pbnRNYWtlKDAuNSwgMC41KV07CiAjZW5k
aWYKICAgICBbbV92aWRlb0Z1bGxzY3JlZW5MYXllciBzZXRCb3VuZHM6bV92aWRlb0ZyYW1lXTsK
LSAgICAKLSAgICBpZiAobV92aWRlb0VsZW1lbnQpCi0gICAgICAgIG1fdmlkZW9FbGVtZW50LT5z
ZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihtX3ZpZGVvRnVsbHNjcmVlbkxheWVyLmdldCgpKTsKKwor
ICAgIGlmICghbV92aWRlb0VsZW1lbnQpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fdmlkZW9FbGVtZW50LT5zZXRWaWRlb0Z1
bGxzY3JlZW5MYXllcihtX3ZpZGVvRnVsbHNjcmVlbkxheWVyLmdldCgpLCBjb21wbGV0aW9uSGFu
ZGxlcik7Cit9CisKK3ZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnBy
ZXBhcmVGb3JJbmxpbmUoc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRpb25IYW5kbGVyKQor
eworICAgIGlmICghbV92aWRlb0VsZW1lbnQpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fdmlkZW9FbGVtZW50LT5wcmVwYXJl
Rm9ySW5saW5lKGNvbXBsZXRpb25IYW5kbGVyKTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbFZpZGVvRWxlbWVudDo6cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKEhUTUxNZWRpYUVsZW1l
bnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlKQpAQCAtMTYyLDcgKzE3OCw3IEBAIHZv
aWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnNldFZpZGVvTGF5ZXJHcmF2
aXR5KFdlYlZpZGVvRnVsbHNjcmVlCiAgICAgICAgIHZpZGVvR3Jhdml0eSA9IE1lZGlhUGxheWVy
OjpWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3RGaWxsOwogICAgIGVsc2UKICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgCisKICAgICBtX3ZpZGVvRWxlbWVudC0+c2V0VmlkZW9GdWxs
c2NyZWVuR3Jhdml0eSh2aWRlb0dyYXZpdHkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5kZXggMWI4MWQ0ZGY4YTJmMDQ1NWE1
ZTJjY2E2YmMzNmM3NWYxN2I2YjY3Ny4uOTkwNzM4ZTc4NzQ0ZTIwMWMyZGRiYTkxNjllMDEwMTcy
NTllMThjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyLmNwcApAQCAtNjYwLDkgKzY2MCw5IEBAIFBsYXRmb3JtTGF5ZXIqIE1lZGlhUGxheWVy
OjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKIH0KICAgICAKICNpZiBQTEFURk9STShJT1MpIHx8IChQ
TEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCi12b2lkIE1l
ZGlhUGxheWVyOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiBsYXllcikK
K3ZvaWQgTWVkaWFQbGF5ZXI6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIq
IGxheWVyLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAg
bV9wcml2YXRlLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihsYXllcik7CisgICAgbV9wcml2YXRl
LT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihsYXllciwgY29tcGxldGlvbkhhbmRsZXIpOwogfQog
CiB2b2lkIE1lZGlhUGxheWVyOjpzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3QgZnJh
bWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApp
bmRleCA5MzA1MDE3MTBlM2E5YjFjZTY4NGMzMzA0N2MyMTUyZWNlMWNhOTc4Li4yMTQ2N2ZjNjcy
NTg3Njc2Y2IxZTQ1ZWRmMjI5MzE0ZTI5YTQ0ZWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTMwOCw3ICszMDgsNyBAQCBwdWJsaWM6
CiAgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0OwogCiAjaWYgUExBVEZP
Uk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01P
REUpKQotICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciopOwor
ICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciosIHN0ZDo6ZnVu
Y3Rpb248dm9pZCgpPiBjb21wbGV0aW9uSGFuZGxlciA9IFtdIHsgfSk7CiAgICAgdm9pZCBzZXRW
aWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3QpOwogICAgIHVzaW5nIE1lZGlhUGxheWVyRW51
bXM6OlZpZGVvR3Jhdml0eTsKICAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkdyYXZpdHkoVmlk
ZW9HcmF2aXR5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXJQcml2YXRlLmgKaW5kZXggODljMGMxOWVkYWNjNzZlZjdiZmM5Y2I2ZTdhMGI4
NjI2ODcwNmZiMC4uMTM3Y2VmYjM5YWQ1MzczN2Y0YTE0YWU2MzI5NzliMzU4NjdlZDk5YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2
YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQ
cml2YXRlLmgKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGxhdGZvcm1M
YXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KIAogI2lmIFBMQVRGT1JN
KElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RF
KSkKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXll
ciopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9y
bUxheWVyKiwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBs
ZXRpb25IYW5kbGVyKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuRnJh
bWUoRmxvYXRSZWN0KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuR3Jh
dml0eShNZWRpYVBsYXllcjo6VmlkZW9HcmF2aXR5KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0
VmlkZW9GdWxsc2NyZWVuTW9kZShNZWRpYVBsYXllcjo6VmlkZW9GdWxsc2NyZWVuTW9kZSkgeyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDLmgKaW5kZXggNWFkNWQwOGMxMjA0ODE3ZGQ3M2NhZGYxMjYwMzU0
ZGNlMjczZGQwZS4uNGY1M2M3YzRiNmUzZGJhOTBjZTkyMjExOTBkZmJjY2Y3MDEyODkxNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMuaApAQCAtMTcyLDcgKzE3Miw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9h
dFJlY3QmKSBvdmVycmlkZTsKICAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29u
c3Qgb3ZlcnJpZGU7CiAjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFC
TEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQotICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVu
TGF5ZXIoUGxhdGZvcm1MYXllciopIG92ZXJyaWRlOworICAgIHZvaWQgc2V0VmlkZW9GdWxsc2Ny
ZWVuTGF5ZXIoUGxhdGZvcm1MYXllciosIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBjb21wbGV0aW9u
SGFuZGxlcikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9h
dFJlY3QpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuR3Jhdml0eShNZWRp
YVBsYXllcjo6VmlkZW9HcmF2aXR5KSBvdmVycmlkZTsKICAgICB2b2lkIHNldFZpZGVvRnVsbHNj
cmVlbk1vZGUoTWVkaWFQbGF5ZXI6OlZpZGVvRnVsbHNjcmVlbk1vZGUpIG92ZXJyaWRlOwpAQCAt
MzI5LDYgKzMyOSw3IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPEFWUGxheWVyPiBtX2F2UGxh
eWVyOwogICAgIFJldGFpblB0cjxBVlBsYXllckl0ZW0+IG1fYXZQbGF5ZXJJdGVtOwogICAgIFJl
dGFpblB0cjxBVlBsYXllckxheWVyPiBtX3ZpZGVvTGF5ZXI7CisgICAgUmV0YWluUHRyPEFWUGxh
eWVyTGF5ZXI+IG1fc2Vjb25kYXJ5VmlkZW9MYXllcjsKICNpZiBQTEFURk9STShJT1MpIHx8IChQ
TEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcj4gbV92aWRlb0Z1bGxzY3Jl
ZW5MYXllck1hbmFnZXI7CiAgICAgTWVkaWFQbGF5ZXI6OlZpZGVvR3Jhdml0eSBtX3ZpZGVvRnVs
bHNjcmVlbkdyYXZpdHk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCA3Y2IwMjY2YTNkYzdk
YWY4Y2RiOTEwN2RlMGRjM2MzNTg2OWEzYmNmLi4wNzNmMWI4NWViOWViMzA5YjgzYWY3NmVjMWM2
MjZmYmQ3NmE4ZmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTczMCwxNyArNzMwLDI0
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQVZQbGF5
ZXJMYXllcigpCiAgICAgbV92aWRlb0xheWVyID0gYWRvcHROUyhbYWxsb2NBVlBsYXllckxheWVy
SW5zdGFuY2UoKSBpbml0XSk7CiAgICAgW21fdmlkZW9MYXllciBzZXRQbGF5ZXI6bV9hdlBsYXll
ci5nZXQoKV07CiAgICAgW21fdmlkZW9MYXllciBzZXRCYWNrZ3JvdW5kQ29sb3I6Y2FjaGVkQ0dD
b2xvcihDb2xvcjo6YmxhY2spXTsKKworICAgIG1fc2Vjb25kYXJ5VmlkZW9MYXllciA9IGFkb3B0
TlMoW2FsbG9jQVZQbGF5ZXJMYXllckluc3RhbmNlKCkgaW5pdF0pOworICAgIFttX3NlY29uZGFy
eVZpZGVvTGF5ZXIgc2V0UGxheWVyOm1fYXZQbGF5ZXIuZ2V0KCldOworICAgIFttX3NlY29uZGFy
eVZpZGVvTGF5ZXIgc2V0QmFja2dyb3VuZENvbG9yOmNhY2hlZENHQ29sb3IoQ29sb3I6OmJsYWNr
KV07CisKICNpZm5kZWYgTkRFQlVHCiAgICAgW21fdmlkZW9MYXllciBzZXROYW1lOkAiTWVkaWFQ
bGF5ZXJQcml2YXRlIEFWUGxheWVyTGF5ZXIiXTsKKyAgICBbbV9zZWNvbmRhcnlWaWRlb0xheWVy
IHNldE5hbWU6QCJNZWRpYVBsYXllclByaXZhdGUgQVZQbGF5ZXJMYXllciBzZWNvbmRhcnkiXTsK
ICNlbmRpZgogICAgIFttX3ZpZGVvTGF5ZXIgYWRkT2JzZXJ2ZXI6bV9vYmpjT2JzZXJ2ZXIuZ2V0
KCkgZm9yS2V5UGF0aDpAInJlYWR5Rm9yRGlzcGxheSIgb3B0aW9uczpOU0tleVZhbHVlT2JzZXJ2
aW5nT3B0aW9uTmV3IGNvbnRleHQ6KHZvaWQgKilNZWRpYVBsYXllckFWRm91bmRhdGlvbk9ic2Vy
dmF0aW9uQ29udGV4dEFWUGxheWVyTGF5ZXJdOwogICAgIHVwZGF0ZVZpZGVvTGF5ZXJHcmF2aXR5
KCk7CiAgICAgW21fdmlkZW9MYXllciBzZXRDb250ZW50c1NjYWxlOnBsYXllcigpLT5jbGllbnQo
KS5tZWRpYVBsYXllckNvbnRlbnRzU2NhbGUoKV07CisgICAgW21fc2Vjb25kYXJ5VmlkZW9MYXll
ciBzZXRDb250ZW50c1NjYWxlOnBsYXllcigpLT5jbGllbnQoKS5tZWRpYVBsYXllckNvbnRlbnRz
U2NhbGUoKV07CiAgICAgSW50U2l6ZSBkZWZhdWx0U2l6ZSA9IHNuYXBwZWRJbnRSZWN0KHBsYXll
cigpLT5jbGllbnQoKS5tZWRpYVBsYXllckNvbnRlbnRCb3hSZWN0KCkpLnNpemUoKTsKICAgICBM
T0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVWaWRl
b0xheWVyKCVwKSAtIHJldHVybmluZyAlcCIsIHRoaXMsIG1fdmlkZW9MYXllci5nZXQoKSk7CiAK
ICNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVT
RU5UQVRJT05fTU9ERSkpCi0gICAgbV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXItPnNldFZp
ZGVvTGF5ZXIobV92aWRlb0xheWVyLmdldCgpLCBkZWZhdWx0U2l6ZSk7CisgICAgbV92aWRlb0Z1
bGxzY3JlZW5MYXllck1hbmFnZXItPnNldFZpZGVvTGF5ZXJzKG1fdmlkZW9MYXllci5nZXQoKSwg
bV9zZWNvbmRhcnlWaWRlb0xheWVyLmdldCgpLCBkZWZhdWx0U2l6ZSk7CiAKICNpZiBQTEFURk9S
TShJT1MpCiAgICAgaWYgKFttX3ZpZGVvTGF5ZXIgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rv
cihzZXRQSVBNb2RlRW5hYmxlZDopXSkKQEAgLTc0OCw2ICs3NTUsNyBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUFWUGxheWVyTGF5ZXIoKQogI2VuZGlm
CiAjZWxzZQogICAgIFttX3ZpZGVvTGF5ZXIgc2V0RnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCBkZWZh
dWx0U2l6ZS53aWR0aCgpLCBkZWZhdWx0U2l6ZS5oZWlnaHQoKSldOworICAgIFttX3NlY29uZGFy
eVZpZGVvTGF5ZXIgc2V0RnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCBkZWZhdWx0U2l6ZS53aWR0aCgp
LCBkZWZhdWx0U2l6ZS5oZWlnaHQoKSldOwogI2VuZGlmCiB9CiAKQEAgLTc2MCwxMiArNzY4LDE0
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6ZGVzdHJveVZpZGVv
TGF5ZXIoKQogCiAgICAgW21fdmlkZW9MYXllci5nZXQoKSByZW1vdmVPYnNlcnZlcjptX29iamNP
YnNlcnZlci5nZXQoKSBmb3JLZXlQYXRoOkAicmVhZHlGb3JEaXNwbGF5Il07CiAgICAgW21fdmlk
ZW9MYXllci5nZXQoKSBzZXRQbGF5ZXI6bmlsXTsKKyAgICBbbV9zZWNvbmRhcnlWaWRlb0xheWVy
LmdldCgpIHNldFBsYXllcjpuaWxdOwogCiAjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0o
TUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQogICAgIG1fdmlkZW9GdWxs
c2NyZWVuTGF5ZXJNYW5hZ2VyLT5kaWREZXN0cm95VmlkZW9MYXllcigpOwogI2VuZGlmCiAKICAg
ICBtX3ZpZGVvTGF5ZXIgPSBuaWw7CisgICAgbV9zZWNvbmRhcnlWaWRlb0xheWVyID0gbmlsOwog
fQogCiBNZWRpYVRpbWUgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Z2V0U3Rh
cnREYXRlKCkgY29uc3QKQEAgLTExODMsMTIgKzExOTMsMTQgQEAgUGxhdGZvcm1MYXllciogTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGxhdGZvcm1MYXllcigpIGNvbnN0CiB9
CiAKICNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19Q
UkVTRU5UQVRJT05fTU9ERSkpCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqIHZpZGVvRnVsbHNjcmVl
bkxheWVyKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRWaWRl
b0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiB2aWRlb0Z1bGxzY3JlZW5MYXllciwgc3Rk
OjpmdW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmIChtX3ZpZGVv
RnVsbHNjcmVlbkxheWVyTWFuYWdlci0+dmlkZW9GdWxsc2NyZWVuTGF5ZXIoKSA9PSB2aWRlb0Z1
bGxzY3JlZW5MYXllcikKKyAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXItPnZp
ZGVvRnVsbHNjcmVlbkxheWVyKCkgPT0gdmlkZW9GdWxsc2NyZWVuTGF5ZXIpIHsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAgIG1fdmlk
ZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2aWRlb0Z1
bGxzY3JlZW5MYXllcik7CisgICAgbV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXItPnNldFZp
ZGVvRnVsbHNjcmVlbkxheWVyKHZpZGVvRnVsbHNjcmVlbkxheWVyLCBjb21wbGV0aW9uSGFuZGxl
cik7CiAKICAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXItPnZpZGVvRnVsbHNj
cmVlbkxheWVyKCkgJiYgbV90ZXh0VHJhY2tSZXByZXNlbnRhdGlvbkxheWVyKSB7CiAgICAgICAg
IHN5bmNUZXh0VHJhY2tCb3VuZHMoKTsKQEAgLTE4NzIsNiArMTg4NCw3IEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlVmlkZW9MYXllckdyYXZpdHkoKQog
ICAgIFtDQVRyYW5zYWN0aW9uIHNldERpc2FibGVBY3Rpb25zOllFU107ICAgIAogICAgIE5TU3Ry
aW5nKiBncmF2aXR5ID0gc2hvdWxkTWFpbnRhaW5Bc3BlY3RSYXRpbygpID8gQVZMYXllclZpZGVv
R3Jhdml0eVJlc2l6ZUFzcGVjdCA6IEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemU7CiAgICAgW21f
dmlkZW9MYXllci5nZXQoKSBzZXRWaWRlb0dyYXZpdHk6Z3Jhdml0eV07CisgICAgW21fc2Vjb25k
YXJ5VmlkZW9MYXllci5nZXQoKSBzZXRWaWRlb0dyYXZpdHk6Z3Jhdml0eV07CiAgICAgW0NBVHJh
bnNhY3Rpb24gY29tbWl0XTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAppbmRleCBkNDll
M2IzMTc1YThlOGRlMmY4N2I5NDAxZWQzYTVmNjg4ZjlmOTkzLi5mNzFmZTQ4NTliYTBjZjQyNDlm
MWJmNjAxNDJjMmQ5M2ExYjUwYzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaApAQCAtODcs
NyArODcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjaGFyYWN0ZXJpc3RpY3NDaGFuZ2VkKCk7CiAK
ICNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKLSAg
ICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqKSBvdmVycmlkZTsK
KyAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBzdGQ6OmZ1
bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0
VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0KSBvdmVycmlkZTsKICNlbmRpZgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMubW0KaW5kZXggMTQzYzA0NjAzZjJiN2Q2ZjQxMDUzYWVhYjM3M2Y1
YTU1YzE0MjNjYi4uMmY1ODJkYmU0NzliY2JmZWY4OTM1Y2U5MWUzYzI0N2JjYzU3YmYyYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQpAQCAtNzcwLDcgKzc3MCw3IEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjphZGREaXNwbGF5TGF5ZXIoQVZTYW1wbGVC
dWZmZXJEaXNwbGF5CiAgICAgbV9wbGF5ZXItPmZpcnN0VmlkZW9GcmFtZUF2YWlsYWJsZSgpOwog
CiAjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCi0g
ICAgbV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXItPnNldFZpZGVvTGF5ZXIobV9zYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIuZ2V0KCksIHNuYXBwZWRJbnRSZWN0KG1fcGxheWVyLT5jbGllbnQo
KS5tZWRpYVBsYXllckNvbnRlbnRCb3hSZWN0KCkpLnNpemUoKSk7CisgICAgbV92aWRlb0Z1bGxz
Y3JlZW5MYXllck1hbmFnZXItPnNldFZpZGVvTGF5ZXJzKG1fc2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyLmdldCgpLCBuaWwsIHNuYXBwZWRJbnRSZWN0KG1fcGxheWVyLT5jbGllbnQoKS5tZWRpYVBs
YXllckNvbnRlbnRCb3hSZWN0KCkpLnNpemUoKSk7CiAjZW5kaWYKIH0KIApAQCAtODI4LDkgKzgy
OCw5IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjaGFyYWN0
ZXJpc3RpY3NDaGFuZ2VkKCkKIH0KIAogI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVP
X1BSRVNFTlRBVElPTl9NT0RFKQotdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIgKnZpZGVvRnVsbHNj
cmVlbkxheWVyKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnNl
dFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIgKnZpZGVvRnVsbHNjcmVlbkxheWVy
LCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbV92aWRl
b0Z1bGxzY3JlZW5MYXllck1hbmFnZXItPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKHZpZGVvRnVs
bHNjcmVlbkxheWVyKTsKKyAgICBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci0+c2V0Vmlk
ZW9GdWxsc2NyZWVuTGF5ZXIodmlkZW9GdWxsc2NyZWVuTGF5ZXIsIGNvbXBsZXRpb25IYW5kbGVy
KTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnNldFZp
ZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCBmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
LmgKaW5kZXggN2U0MjQwM2NlYWY4NTYyNjMyNDU3ZTcxZGYwODI4NmU1ZDFmM2NkNy4uMmNmNTg3
NzM2MjEyMDc4NDVlYjFhYTEzYzU5MjYzZWZlZTJiZTA0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDLmgKQEAgLTE2MCw3ICsxNjAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVtb3ZlVHJh
Y2soTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKSBvdmVycmlkZTsKIAogI2lmIFBMQVRGT1JNKE1B
QykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQotICAgIHZvaWQgc2V0VmlkZW9G
dWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciopIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Vmlk
ZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciosIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBj
b21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5G
cmFtZShGbG9hdFJlY3QpIG92ZXJyaWRlOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qy5tbQppbmRleCBlOGNhYmVkOGMxZDE3MjM2NmE2OGZlZjM2NzQ3NDEyYmU3YmU5MzU5Li41ZGU0
NGQwZGZmODY5NGFkZDRiNWE1MWE4MWJiMzZkZDU4NzViZTNlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDLm1tCkBAIC00MDQsNyArNDA0LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iakM6OmNyZWF0ZVByZXZpZXdMYXllcnMoKQogICAgICAgICBtX3ZpZGVvQmFj
a2dyb3VuZExheWVyLmdldCgpLm5hbWUgPSBAIk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFt
QVZGT2JqQyBwcmV2aWV3IGJhY2tncm91bmQgbGF5ZXIiOwogCiAjaWYgUExBVEZPUk0oTUFDKSAm
JiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCi0gICAgICAgIG1fdmlkZW9GdWxsc2Ny
ZWVuTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0xheWVyKG1fdmlkZW9CYWNrZ3JvdW5kTGF5ZXIuZ2V0
KCksIHNuYXBwZWRJbnRSZWN0KG1fcGxheWVyLT5jbGllbnQoKS5tZWRpYVBsYXllckNvbnRlbnRC
b3hSZWN0KCkpLnNpemUoKSk7CisgICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2Vy
LT5zZXRWaWRlb0xheWVycyhtX3ZpZGVvQmFja2dyb3VuZExheWVyLmdldCgpLCBuaWwsIHNuYXBw
ZWRJbnRSZWN0KG1fcGxheWVyLT5jbGllbnQoKS5tZWRpYVBsYXllckNvbnRlbnRCb3hSZWN0KCkp
LnNpemUoKSk7CiAjZW5kaWYKICAgICB9CiAKQEAgLTQ3NCw5ICs0NzQsOSBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZGlkUmVtb3ZlVHJhY2soTWVkaWFTdHJl
YW1UcmFja1ByaXZhdAogfQogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJF
U0VOVEFUSU9OX01PREUpCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciAqdmlkZW9GdWxsc2NyZWVu
TGF5ZXIpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0Vmlk
ZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciAqdmlkZW9GdWxsc2NyZWVuTGF5ZXIsIHN0
ZDo6ZnVuY3Rpb248dm9pZCgpPiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBtX3ZpZGVvRnVs
bHNjcmVlbkxheWVyTWFuYWdlci0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIodmlkZW9GdWxsc2Ny
ZWVuTGF5ZXIpOworICAgIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0Z1
bGxzY3JlZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5MYXllciwgY29tcGxldGlvbkhhbmRsZXIpOwog
fQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0VmlkZW9G
dWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0IGZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9GdWxsc2NyZWVuTGF5
ZXJNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9WaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIuaAppbmRleCAyZDVkYjYwNDc5MDdi
ZDk5ODEzMGNmM2NiOTdiZDhiYjQyMzMwNzFhLi5mZTQwMDdlZTk5MjVlZjY0NTFiNGIwMTlmMWM2
YTM1YzFhYWZjYzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0Z1
bGxzY3JlZW5MYXllck1hbmFnZXIuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkZsb2F0
UmVjdC5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgi
CisjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQzLDggKzQ0LDggQEAgcHVibGljOgogICAgIFBsYXRmb3Jt
TGF5ZXIgKnZpZGVvSW5saW5lTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3ZpZGVvSW5saW5lTGF5
ZXIuZ2V0KCk7IH0KICAgICBQbGF0Zm9ybUxheWVyICp2aWRlb0Z1bGxzY3JlZW5MYXllcigpIGNv
bnN0IHsgcmV0dXJuIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXIuZ2V0KCk7IH0KICAgICBGbG9hdFJl
Y3QgdmlkZW9GdWxsc2NyZWVuRnJhbWUoKSBjb25zdCB7IHJldHVybiBtX3ZpZGVvRnVsbHNjcmVl
bkZyYW1lOyB9Ci0gICAgdm9pZCBzZXRWaWRlb0xheWVyKFBsYXRmb3JtTGF5ZXIgKiwgSW50U2l6
ZSBjb250ZW50U2l6ZSk7Ci0gICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9y
bUxheWVyICopOworICAgIHZvaWQgc2V0VmlkZW9MYXllcnMoUGxhdGZvcm1MYXllciAqLCBQbGF0
Zm9ybUxheWVyICosIEludFNpemUgY29udGVudFNpemUpOworICAgIHZvaWQgc2V0VmlkZW9GdWxs
c2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciAqLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxl
dGlvbkhhbmRsZXIpOwogICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0
KTsKICAgICB2b2lkIGRpZERlc3Ryb3lWaWRlb0xheWVyKCk7CiAKQEAgLTU0LDYgKzU1LDcgQEAg
cHJpdmF0ZToKICAgICBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gbV92aWRlb0lubGluZUxheWVy
OwogICAgIFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyOwog
ICAgIFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBtX3ZpZGVvTGF5ZXI7CisgICAgUmV0YWluUHRy
PFBsYXRmb3JtTGF5ZXI+IG1fc2Vjb25kYXJ5VmlkZW9MYXllcjsKICAgICBGbG9hdFJlY3QgbV92
aWRlb0Z1bGxzY3JlZW5GcmFtZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvRnVsbHNjcmVlbkxheWVyTWFu
YWdlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci5tbQppbmRleCA2OGI5MjAzNGM5OGQ1Yzlj
MDI4OGUzMjBiOTY3NDY4N2Q3NWY0ZGFhLi40NTY4MzUzMjVlZDk3ODNhODIzZDMwNjg4ZmFkYjRk
YWU3ODM1NjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9WaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9GdWxs
c2NyZWVuTGF5ZXJNYW5hZ2VyLm1tCkBAIC02Niw1NSArNjYsOTYgQEAgVmlkZW9GdWxsc2NyZWVu
TGF5ZXJNYW5hZ2VyOjpWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIoKQogewogfQogCi12b2lk
IFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcjo6c2V0VmlkZW9MYXllcihQbGF0Zm9ybUxheWVy
ICp2aWRlb0xheWVyLCBJbnRTaXplIGNvbnRlbnRTaXplKQordm9pZCBWaWRlb0Z1bGxzY3JlZW5M
YXllck1hbmFnZXI6OnNldFZpZGVvTGF5ZXJzKFBsYXRmb3JtTGF5ZXIgKnZpZGVvTGF5ZXIsIFBs
YXRmb3JtTGF5ZXIgKnNlY29uZGFyeVZpZGVvTGF5ZXIsIEludFNpemUgY29udGVudFNpemUpCiB7
CiAgICAgbV92aWRlb0xheWVyID0gdmlkZW9MYXllcjsKKyAgICBtX3NlY29uZGFyeVZpZGVvTGF5
ZXIgPSBzZWNvbmRhcnlWaWRlb0xheWVyOwogCiAgICAgW21fdmlkZW9MYXllciB3ZWJfZGlzYWJs
ZUFsbEFjdGlvbnNdOworICAgIFttX3NlY29uZGFyeVZpZGVvTGF5ZXIgd2ViX2Rpc2FibGVBbGxB
Y3Rpb25zXTsKICAgICBtX3ZpZGVvSW5saW5lTGF5ZXIgPSBhZG9wdE5TKFtbV2ViVmlkZW9Db250
YWluZXJMYXllciBhbGxvY10gaW5pdF0pOwogI2lmbmRlZiBOREVCVUcKICAgICBbbV92aWRlb0lu
bGluZUxheWVyIHNldE5hbWU6QCJXZWJWaWRlb0NvbnRhaW5lckxheWVyIl07CiAjZW5kaWYKICAg
ICBbbV92aWRlb0lubGluZUxheWVyIHNldEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgY29udGVudFNp
emUud2lkdGgoKSwgY29udGVudFNpemUuaGVpZ2h0KCkpXTsKICAgICBpZiAobV92aWRlb0Z1bGxz
Y3JlZW5MYXllcikgewotICAgICAgICBbbV92aWRlb0xheWVyIHNldEZyYW1lOkNHUmVjdE1ha2Uo
MCwgMCwgbV92aWRlb0Z1bGxzY3JlZW5GcmFtZS53aWR0aCgpLCBtX3ZpZGVvRnVsbHNjcmVlbkZy
YW1lLmhlaWdodCgpKV07Ci0gICAgICAgIFttX3ZpZGVvRnVsbHNjcmVlbkxheWVyIGluc2VydFN1
YmxheWVyOm1fdmlkZW9MYXllci5nZXQoKSBhdEluZGV4OjBdOworICAgICAgICBbbV92aWRlb0xh
eWVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKKyAgICAgICAgUGxhdGZvcm1MYXllciAqYWN0aXZl
TGF5ZXIgPSBzZWNvbmRhcnlWaWRlb0xheWVyID8gc2Vjb25kYXJ5VmlkZW9MYXllciA6IHZpZGVv
TGF5ZXI7CisgICAgICAgIFthY3RpdmVMYXllciBzZXRGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIG1f
dmlkZW9GdWxsc2NyZWVuRnJhbWUud2lkdGgoKSwgbV92aWRlb0Z1bGxzY3JlZW5GcmFtZS5oZWln
aHQoKSldOworICAgICAgICBbbV92aWRlb0Z1bGxzY3JlZW5MYXllciBpbnNlcnRTdWJsYXllcjph
Y3RpdmVMYXllciBhdEluZGV4OjBdOwogICAgIH0gZWxzZSB7CiAgICAgICAgIFttX3ZpZGVvSW5s
aW5lTGF5ZXIgaW5zZXJ0U3VibGF5ZXI6bV92aWRlb0xheWVyLmdldCgpIGF0SW5kZXg6MF07CiAg
ICAgICAgIFttX3ZpZGVvTGF5ZXIgc2V0RnJhbWU6bV92aWRlb0lubGluZUxheWVyLmdldCgpLmJv
dW5kc107CisgICAgICAgIFttX3NlY29uZGFyeVZpZGVvTGF5ZXIgcmVtb3ZlRnJvbVN1cGVybGF5
ZXJdOwogICAgIH0KIH0KIAotdm9pZCBWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXI6OnNldFZp
ZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIgKnZpZGVvRnVsbHNjcmVlbkxheWVyKQor
dm9pZCBWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXI6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVy
KFBsYXRmb3JtTGF5ZXIgKnZpZGVvRnVsbHNjcmVlbkxheWVyLCBzdGQ6OmZ1bmN0aW9uPHZvaWQo
KT4gY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXIg
PT0gdmlkZW9GdWxsc2NyZWVuTGF5ZXIpCisgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXIg
PT0gdmlkZW9GdWxsc2NyZWVuTGF5ZXIpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsK
ICAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXIgPSB2
aWRlb0Z1bGxzY3JlZW5MYXllcjsKIAogICAgIFtDQVRyYW5zYWN0aW9uIGJlZ2luXTsKICAgICBb
Q0FUcmFuc2FjdGlvbiBzZXREaXNhYmxlQWN0aW9uczpZRVNdOwogCi0gICAgQ0FDb250ZXh0ICpv
bGRDb250ZXh0ID0gW21fdmlkZW9MYXllciBjb250ZXh0XTsKLSAgICBDQUNvbnRleHQgKm5ld0Nv
bnRleHQgPSBuaWw7Ci0KLSAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5MYXllciAmJiBtX3ZpZGVv
TGF5ZXIpIHsKLSAgICAgICAgW21fdmlkZW9GdWxsc2NyZWVuTGF5ZXIgaW5zZXJ0U3VibGF5ZXI6
bV92aWRlb0xheWVyLmdldCgpIGF0SW5kZXg6MF07Ci0gICAgICAgIFttX3ZpZGVvTGF5ZXIgc2V0
RnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCBtX3ZpZGVvRnVsbHNjcmVlbkZyYW1lLndpZHRoKCksIG1f
dmlkZW9GdWxsc2NyZWVuRnJhbWUuaGVpZ2h0KCkpXTsKLSAgICAgICAgbmV3Q29udGV4dCA9IFtt
X3ZpZGVvRnVsbHNjcmVlbkxheWVyIGNvbnRleHRdOwotICAgIH0gZWxzZSBpZiAobV92aWRlb0lu
bGluZUxheWVyICYmIG1fdmlkZW9MYXllcikgewotICAgICAgICBbbV92aWRlb0xheWVyIHNldEZy
YW1lOlttX3ZpZGVvSW5saW5lTGF5ZXIgYm91bmRzXV07Ci0gICAgICAgIFttX3ZpZGVvTGF5ZXIg
cmVtb3ZlRnJvbVN1cGVybGF5ZXJdOwotICAgICAgICBbbV92aWRlb0lubGluZUxheWVyIGluc2Vy
dFN1YmxheWVyOm1fdmlkZW9MYXllci5nZXQoKSBhdEluZGV4OjBdOwotICAgICAgICBuZXdDb250
ZXh0ID0gW21fdmlkZW9JbmxpbmVMYXllciBjb250ZXh0XTsKLSAgICB9IGVsc2UgaWYgKG1fdmlk
ZW9MYXllcikKLSAgICAgICAgW21fdmlkZW9MYXllciByZW1vdmVGcm9tU3VwZXJsYXllcl07Cisg
ICAgaWYgKG1fc2Vjb25kYXJ5VmlkZW9MYXllciAmJiBtX3ZpZGVvTGF5ZXIpIHsKKyAgICAgICAg
aWYgKG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXIpIHsKKyAgICAgICAgICAgIFttX3ZpZGVvRnVsbHNj
cmVlbkxheWVyIGluc2VydFN1YmxheWVyOm1fc2Vjb25kYXJ5VmlkZW9MYXllci5nZXQoKSBhdElu
ZGV4OjBdOworICAgICAgICAgICAgW21fc2Vjb25kYXJ5VmlkZW9MYXllciBzZXRGcmFtZTpDR1Jl
Y3RNYWtlKDAsIDAsIG1fdmlkZW9GdWxsc2NyZWVuRnJhbWUud2lkdGgoKSwgbV92aWRlb0Z1bGxz
Y3JlZW5GcmFtZS5oZWlnaHQoKSldOworICAgICAgICB9IGVsc2UgaWYgKG1fdmlkZW9JbmxpbmVM
YXllcikgeworICAgICAgICAgICAgW21fdmlkZW9MYXllciBzZXRGcmFtZTpbbV92aWRlb0lubGlu
ZUxheWVyIGJvdW5kc11dOworICAgICAgICAgICAgW21fdmlkZW9JbmxpbmVMYXllciBpbnNlcnRT
dWJsYXllcjptX3ZpZGVvTGF5ZXIuZ2V0KCkgYXRJbmRleDowXTsKKyAgICAgICAgfQorCisgICAg
ICAgIFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBmdWxsc2NyZWVuTGF5ZXIgPSBtX3ZpZGVvRnVs
bHNjcmVlbkxheWVyOworICAgICAgICBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gdmlkZW9MYXll
ciA9IG1fdmlkZW9MYXllcjsKKyAgICAgICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IHNlY29u
ZGFyeVZpZGVvTGF5ZXIgPSBtX3NlY29uZGFyeVZpZGVvTGF5ZXI7CisKKyAgICAgICAgW0NBVHJh
bnNhY3Rpb24gc2V0Q29tcGxldGlvbkJsb2NrOltjb21wbGV0aW9uSGFuZGxlciwgZnVsbHNjcmVl
bkxheWVyLCB2aWRlb0xheWVyLCBzZWNvbmRhcnlWaWRlb0xheWVyXSB7CisgICAgICAgICAgICBb
Q0FUcmFuc2FjdGlvbiBiZWdpbl07CisgICAgICAgICAgICBbQ0FUcmFuc2FjdGlvbiBzZXREaXNh
YmxlQWN0aW9uczpZRVNdOworCisgICAgICAgICAgICBpZiAoZnVsbHNjcmVlbkxheWVyKQorICAg
ICAgICAgICAgICAgIFt2aWRlb0xheWVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICBbc2Vjb25kYXJ5VmlkZW9MYXllciByZW1vdmVGcm9t
U3VwZXJsYXllcl07CisKKyAgICAgICAgICAgIFtDQVRyYW5zYWN0aW9uIHNldENvbXBsZXRpb25C
bG9jazpbY29tcGxldGlvbkhhbmRsZXJdIHsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcigpOworICAgICAgICAgICAgfV07CisgICAgICAgICAgICBbQ0FUcmFuc2FjdGlvbiBjb21t
aXRdOworICAgICAgICB9XTsKKyAgICB9IGVsc2UgaWYgKG1fdmlkZW9MYXllcikgeworICAgICAg
ICBpZiAobV92aWRlb0Z1bGxzY3JlZW5MYXllcikgeworICAgICAgICAgICAgW21fdmlkZW9GdWxs
c2NyZWVuTGF5ZXIgaW5zZXJ0U3VibGF5ZXI6bV92aWRlb0xheWVyLmdldCgpIGF0SW5kZXg6MF07
CisgICAgICAgICAgICBbbV92aWRlb0xheWVyIHNldEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgbV92
aWRlb0Z1bGxzY3JlZW5GcmFtZS53aWR0aCgpLCBtX3ZpZGVvRnVsbHNjcmVlbkZyYW1lLmhlaWdo
dCgpKV07CisgICAgICAgIH0gZWxzZSBpZiAobV92aWRlb0lubGluZUxheWVyKSB7CisgICAgICAg
ICAgICBbbV92aWRlb0xheWVyIHNldEZyYW1lOlttX3ZpZGVvSW5saW5lTGF5ZXIgYm91bmRzXV07
CisgICAgICAgICAgICBbbV92aWRlb0xheWVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKKyAgICAg
ICAgICAgIFttX3ZpZGVvSW5saW5lTGF5ZXIgaW5zZXJ0U3VibGF5ZXI6bV92aWRlb0xheWVyLmdl
dCgpIGF0SW5kZXg6MF07CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgW21fdmlkZW9MYXll
ciByZW1vdmVGcm9tU3VwZXJsYXllcl07CisKKyAgICAgICAgQ0FDb250ZXh0ICpvbGRDb250ZXh0
ID0gW21fdmlkZW9GdWxsc2NyZWVuTGF5ZXIgY29udGV4dF07CisgICAgICAgIENBQ29udGV4dCAq
bmV3Q29udGV4dCA9IFttX3ZpZGVvSW5saW5lTGF5ZXIgY29udGV4dF07CisgICAgICAgIGlmIChv
bGRDb250ZXh0ICYmIG5ld0NvbnRleHQgJiYgb2xkQ29udGV4dCAhPSBuZXdDb250ZXh0KSB7Cisg
ICAgICAgICAgICBtYWNoX3BvcnRfdCBmZW5jZVBvcnQgPSBbb2xkQ29udGV4dCBjcmVhdGVGZW5j
ZVBvcnRdOworICAgICAgICAgICAgW25ld0NvbnRleHQgc2V0RmVuY2VQb3J0OmZlbmNlUG9ydF07
CisgICAgICAgICAgICBtYWNoX3BvcnRfZGVhbGxvY2F0ZShtYWNoX3Rhc2tfc2VsZigpLCBmZW5j
ZVBvcnQpOworICAgICAgICB9CisKKyAgICAgICAgW0NBVHJhbnNhY3Rpb24gc2V0Q29tcGxldGlv
bkJsb2NrOltjb21wbGV0aW9uSGFuZGxlcl0geworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoKTsKKyAgICAgICAgfV07CisgICAgfSBlbHNlCisgICAgICAgIFtDQVRyYW5zYWN0aW9uIHNl
dENvbXBsZXRpb25CbG9jazpbY29tcGxldGlvbkhhbmRsZXJdIHsKKyAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKCk7CisgICAgICAgIH1dOwogCi0gICAgaWYgKG9sZENvbnRleHQgJiYgbmV3
Q29udGV4dCAmJiBvbGRDb250ZXh0ICE9IG5ld0NvbnRleHQpIHsKLSAgICAgICAgbWFjaF9wb3J0
X3QgZmVuY2VQb3J0ID0gW29sZENvbnRleHQgY3JlYXRlRmVuY2VQb3J0XTsKLSAgICAgICAgW25l
d0NvbnRleHQgc2V0RmVuY2VQb3J0OmZlbmNlUG9ydF07Ci0gICAgICAgIG1hY2hfcG9ydF9kZWFs
bG9jYXRlKG1hY2hfdGFza19zZWxmKCksIGZlbmNlUG9ydCk7Ci0gICAgfQogICAgIFtDQVRyYW5z
YWN0aW9uIGNvbW1pdF07CiB9CiAKQEAgLTEyNCwxNyArMTY1LDE4IEBAIHZvaWQgVmlkZW9GdWxs
c2NyZWVuTGF5ZXJNYW5hZ2VyOjpzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3Qgdmlk
ZW9GdWxsc2NyCiAgICAgaWYgKCFtX3ZpZGVvRnVsbHNjcmVlbkxheWVyKQogICAgICAgICByZXR1
cm47CiAKLSAgICBpZiAobV92aWRlb0xheWVyKQotICAgICAgICBbbV92aWRlb0xheWVyIHNldEZy
YW1lOkNHUmVjdE1ha2UoMCwgMCwgdmlkZW9GdWxsc2NyZWVuRnJhbWUud2lkdGgoKSwgdmlkZW9G
dWxsc2NyZWVuRnJhbWUuaGVpZ2h0KCkpXTsKKyAgICBQbGF0Zm9ybUxheWVyICphY3RpdmVMYXll
ciA9IG1fc2Vjb25kYXJ5VmlkZW9MYXllci5nZXQoKSA/IG1fc2Vjb25kYXJ5VmlkZW9MYXllci5n
ZXQoKSA6IG1fdmlkZW9MYXllci5nZXQoKTsKKyAgICBbYWN0aXZlTGF5ZXIgc2V0RnJhbWU6Q0dS
ZWN0TWFrZSgwLCAwLCB2aWRlb0Z1bGxzY3JlZW5GcmFtZS53aWR0aCgpLCB2aWRlb0Z1bGxzY3Jl
ZW5GcmFtZS5oZWlnaHQoKSldOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdl
cjo6ZGlkRGVzdHJveVZpZGVvTGF5ZXIoKQogewotICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbkxh
eWVyKQotICAgICAgICBbbV92aWRlb0xheWVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKKyAgICBb
bV92aWRlb0xheWVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKKyAgICBbbV9zZWNvbmRhcnlWaWRl
b0xheWVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKIAogICAgIG1fdmlkZW9JbmxpbmVMYXllciA9
IG5pbDsKICAgICBtX3ZpZGVvTGF5ZXIgPSBuaWw7CisgICAgbV9zZWNvbmRhcnlWaWRlb0xheWVy
ID0gbmlsOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQppbmRleCBlNWNh
NDcyZmJhMGM3OGVjMDg5YmY1ZTIwNTMzNzY0Mjc4OTVmOWNiLi5jMGVhOWNiNzk2YjBmYjQ4MDZi
MTA2YWZhYmZlMGVjODQ2MDhhZmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0K
QEAgLTI0Nyw5ICsyNDcsMTAgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29u
dGV4dDo6ZGlkU2V0dXBGdWxsc2NyZWVuKCkKICAgICBSZXRhaW5QdHI8Q0FMYXllcj4gdmlkZW9G
dWxsc2NyZWVuTGF5ZXIgPSBbbV92aWRlb0Z1bGxzY3JlZW5WaWV3IGxheWVyXTsKICAgICBXZWJU
aHJlYWRSdW4oW3Byb3RlY3RlZFRoaXMsIHRoaXMsIHZpZGVvRnVsbHNjcmVlbkxheWVyXSB7CiAg
ICAgICAgIFt2aWRlb0Z1bGxzY3JlZW5MYXllciBzZXRCYWNrZ3JvdW5kQ29sb3I6Y2FjaGVkQ0dD
b2xvcihXZWJDb3JlOjpDb2xvcjo6dHJhbnNwYXJlbnQpXTsKLSAgICAgICAgbV9tb2RlbC0+c2V0
VmlkZW9GdWxsc2NyZWVuTGF5ZXIodmlkZW9GdWxsc2NyZWVuTGF5ZXIuZ2V0KCkpOwotICAgICAg
ICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhp
cywgdGhpc10gewotICAgICAgICAgICAgbV9pbnRlcmZhY2UtPmVudGVyRnVsbHNjcmVlbigpOwor
ICAgICAgICBtX21vZGVsLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5M
YXllci5nZXQoKSwgW3Byb3RlY3RlZFRoaXMsIHRoaXNdIHsKKyAgICAgICAgICAgIGRpc3BhdGNo
X2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzLCB0aGlzXSB7
CisgICAgICAgICAgICAgICAgbV9pbnRlcmZhY2UtPmVudGVyRnVsbHNjcmVlbigpOworICAgICAg
ICAgICAgfSk7CiAgICAgICAgIH0pOwogICAgIH0pOwogfQpAQCAtMjU5LDkgKzI2MCwxMCBAQCB2
b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpkaWRFeGl0RnVsbHNjcmVl
bigpCiAgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7CiAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJDb250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIFdlYlRocmVh
ZFJ1bihbcHJvdGVjdGVkVGhpcywgdGhpc10gewotICAgICAgICBtX21vZGVsLT5zZXRWaWRlb0Z1
bGxzY3JlZW5MYXllcihuaWwpOwotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRf
bWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcywgdGhpc10gewotICAgICAgICAgICAgbV9pbnRl
cmZhY2UtPmNsZWFudXBGdWxsc2NyZWVuKCk7CisgICAgICAgIG1fbW9kZWwtPnNldFZpZGVvRnVs
bHNjcmVlbkxheWVyKG5pbCwgW3Byb3RlY3RkVGhpcywgdGhpc10geworICAgICAgICAgICAgZGlz
cGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMsIHRo
aXNdIHsKKyAgICAgICAgICAgICAgICBtX2ludGVyZmFjZS0+Y2xlYW51cEZ1bGxzY3JlZW4oKTsK
KyAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5t
bSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlci5tbQppbmRleCAzNWJhNzUyNmZhOTgyYmY1YzMwNjMxYmZhZWM2YjA2YWJmMGVjY2I0Li5j
MTkyZjEzZTg4MzlmNTc1OTdkYjVlMjU0Zjg2ZTYzYzZmMWJjZTk5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0K
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyLm1tCkBAIC0yOTAsNyArMjkwLDcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyOjplbnRlclZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudChIVE1MVmlkZW9FbGUKICAg
ICBpbnRlcmZhY2UtPnNldElzQW5pbWF0aW5nKHRydWUpOwogCiAgICAgYm9vbCBhbGxvd3NQaWN0
dXJlSW5QaWN0dXJlID0gdmlkZW9FbGVtZW50Lm1lZGlhU2Vzc2lvbigpLmFsbG93c1BpY3R1cmVJ
blBpY3R1cmUodmlkZW9FbGVtZW50KTsKLSAgICAKKwogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXR1cEZ1bGxzY3JlZW5XaXRoSUQo
Y29udGV4dElkLCBpbnRlcmZhY2UtPmxheWVySG9zdGluZ0NvbnRleHQoKS0+Y29udGV4dElEKCks
IGNsaWVudFJlY3RGb3JFbGVtZW50KCZ2aWRlb0VsZW1lbnQpLCBtX3BhZ2UtPmRldmljZVNjYWxl
RmFjdG9yKCksIGludGVyZmFjZS0+ZnVsbHNjcmVlbk1vZGUoKSwgYWxsb3dzUGljdHVyZUluUGlj
dHVyZSksIG1fcGFnZS0+cGFnZUlEKCkpOwogfQogCkBAIC0zNjksMTYgKzM2OSwxOCBAQCB2b2lk
IFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZFNldHVwRnVsbHNjcmVlbih1aW50NjRfdCBj
b250ZXh0SWQpCiAgICAgc3RkOjp0aWUobW9kZWwsIGludGVyZmFjZSkgPSBlbnN1cmVNb2RlbEFu
ZEludGVyZmFjZShjb250ZXh0SWQpOwogCiAgICAgaW50ZXJmYWNlLT5sYXllckhvc3RpbmdDb250
ZXh0KCktPnNldFJvb3RMYXllcih2aWRlb0xheWVyKTsKLSAgICBtb2RlbC0+c2V0VmlkZW9GdWxs
c2NyZWVuTGF5ZXIodmlkZW9MYXllcik7Ci0KLSAgICBbQ0FUcmFuc2FjdGlvbiBjb21taXRdOwog
CiAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI+IHN0cm9uZ1RoaXModGhpcyk7
Ci0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3N0cm9uZ1Ro
aXMsIHRoaXMsIGNvbnRleHRJZF0gewotICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6Oldl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6RW50ZXJGdWxsc2NyZWVuKGNvbnRleHRJZCks
IG1fcGFnZS0+cGFnZUlEKCkpOworCisgICAgbW9kZWwtPnNldFZpZGVvRnVsbHNjcmVlbkxheWVy
KHZpZGVvTGF5ZXIsIFtzdHJvbmdUaGlzLCB0aGlzLCBjb250ZXh0SWRdIHsKKyAgICAgICAgZGlz
cGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3N0cm9uZ1RoaXMsIHRoaXMs
IGNvbnRleHRJZF0geworICAgICAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkVudGVyRnVsbHNjcmVlbihjb250ZXh0SWQpLCBtX3Bh
Z2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgfSk7CiAgICAgfSk7CisKKyAgICBbQ0FUcmFuc2FjdGlv
biBjb21taXRdOwogfQotICAgIAorCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRp
ZEVudGVyRnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpCiB7CiAgICAgUmVmUHRyPFdlYlZp
ZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50PiBtb2RlbDsKQEAgLTQwNywyMCArNDA5LDI0
IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkRXhpdEZ1bGxzY3JlZW4odWlu
dDY0X3QgY29udGV4dElkKQogICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVv
RWxlbWVudD4gbW9kZWw7CiAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNv
bnRleHQ+IGludGVyZmFjZTsKICAgICBzdGQ6OnRpZShtb2RlbCwgaW50ZXJmYWNlKSA9IGVuc3Vy
ZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7Ci0KLSAgICBtb2RlbC0+c2V0VmlkZW9GdWxs
c2NyZWVuTGF5ZXIobmlsKTsKLQogICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
PiBzdHJvbmdUaGlzKHRoaXMpOwotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWlu
X3F1ZXVlKCksIFtzdHJvbmdUaGlzLCBjb250ZXh0SWQsIGludGVyZmFjZV0gewotICAgICAgICBp
ZiAoaW50ZXJmYWNlLT5sYXllckhvc3RpbmdDb250ZXh0KCkpIHsKLSAgICAgICAgICAgIGludGVy
ZmFjZS0+bGF5ZXJIb3N0aW5nQ29udGV4dCgpLT5zZXRSb290TGF5ZXIobnVsbHB0cik7Ci0gICAg
ICAgICAgICBpbnRlcmZhY2UtPnNldExheWVySG9zdGluZ0NvbnRleHQobnVsbHB0cik7Ci0gICAg
ICAgIH0KLSAgICAgICAgaWYgKHN0cm9uZ1RoaXMtPm1fcGFnZSkKLSAgICAgICAgICAgIHN0cm9u
Z1RoaXMtPm1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5OjpDbGVhbnVwRnVsbHNjcmVlbihjb250ZXh0SWQpLCBzdHJvbmdUaGlzLT5tX3BhZ2UtPnBh
Z2VJRCgpKTsKKworICAgIG1vZGVsLT5wcmVwYXJlRm9ySW5saW5lKFtzdHJvbmdUaGlzLCB0aGlz
LCBjb250ZXh0SWQsIGludGVyZmFjZSwgbW9kZWxdIHsKKyAgICAgICAgZGlzcGF0Y2hfYXN5bmMo
ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3N0cm9uZ1RoaXMsIHRoaXMsIGNvbnRleHRJZCwg
aW50ZXJmYWNlLCBtb2RlbF0geworICAgICAgICAgICAgbW9kZWwtPnNldFZpZGVvRnVsbHNjcmVl
bkxheWVyKG5pbCwgW3N0cm9uZ1RoaXMsIHRoaXMsIGNvbnRleHRJZCwgaW50ZXJmYWNlXSB7Cisg
ICAgICAgICAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwg
W3N0cm9uZ1RoaXMsIHRoaXMsIGNvbnRleHRJZCwgaW50ZXJmYWNlXSB7CisgICAgICAgICAgICAg
ICAgICAgIGlmIChpbnRlcmZhY2UtPmxheWVySG9zdGluZ0NvbnRleHQoKSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgaW50ZXJmYWNlLT5sYXllckhvc3RpbmdDb250ZXh0KCktPnNldFJvb3RM
YXllcihudWxscHRyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludGVyZmFjZS0+c2V0TGF5
ZXJIb3N0aW5nQ29udGV4dChudWxscHRyKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICBpZiAoc3Ryb25nVGhpcy0+bV9wYWdlKQorICAgICAgICAgICAgICAgICAg
ICAgICAgc3Ryb25nVGhpcy0+bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHk6OkNsZWFudXBGdWxsc2NyZWVuKGNvbnRleHRJZCksIHN0cm9uZ1RoaXMt
Pm1fcGFnZS0+cGFnZUlEKCkpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7
CisgICAgICAgIH0pOwogICAgIH0pOwogfQotICAgIAorCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXI6OmRpZENsZWFudXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKICAg
ICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ+IG1vZGVsOwpAQCAt
NDQ2LDEyICs0NTIsMTIgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRDbGVh
bnVwRnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgICAgIHN0cm9uZ1RoaXMtPmVu
dGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KCp2aWRlb0VsZW1lbnQsIG1vZGUpOwog
ICAgIH0pOwogfQotICAgIAorCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnNldFZp
ZGVvTGF5ZXJHcmF2aXR5RW51bSh1aW50NjRfdCBjb250ZXh0SWQsIHVuc2lnbmVkIGdyYXZpdHkp
CiB7CiAgICAgZW5zdXJlTW9kZWwoY29udGV4dElkKS5zZXRWaWRlb0xheWVyR3Jhdml0eSgoV2Vi
VmlkZW9GdWxsc2NyZWVuTW9kZWw6OlZpZGVvR3Jhdml0eSlncmF2aXR5KTsKIH0KLSAgICAKKwog
dm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpmdWxsc2NyZWVuTWF5UmV0dXJuVG9Jbmxp
bmUodWludDY0X3QgY29udGV4dElkLCBib29sIGlzUGFnZVZpc2libGUpCiB7CiAgICAgYXV0byYg
bW9kZWwgPSBlbnN1cmVNb2RlbChjb250ZXh0SWQpOwpAQCAtNDYwLDcgKzQ2Niw3IEBAIHZvaWQg
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lKHVp
bnQ2NF90IGNvbnRleHRJZCwKICAgICAgICAgbW9kZWwudmlkZW9FbGVtZW50KCktPnNjcm9sbElu
dG9WaWV3SWZOb3RWaXNpYmxlKGZhbHNlKTsKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6Oldl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6UHJlcGFyZWRUb1JldHVyblRvSW5saW5lKGNv
bnRleHRJZCwgdHJ1ZSwgY2xpZW50UmVjdEZvckVsZW1lbnQobW9kZWwudmlkZW9FbGVtZW50KCkp
KSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9Ci0gICAgCisKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlcjo6c2V0VmlkZW9MYXllckZyYW1lRmVuY2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgV2Vi
Q29yZTo6RmxvYXRSZWN0IGJvdW5kcywgSVBDOjpBdHRhY2htZW50IGZlbmNlUG9ydCkKIHsKICAg
ICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ+IG1vZGVsOwpAQCAt
NDcxLDcgKzQ3Nyw3IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c2V0VmlkZW9M
YXllckZyYW1lRmVuY2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgV2ViCiAgICAgICAgIEZsb2F0UmVj
dCBjbGllbnRSZWN0ID0gY2xpZW50UmVjdEZvckVsZW1lbnQobW9kZWwtPnZpZGVvRWxlbWVudCgp
KTsKICAgICAgICAgYm91bmRzID0gRmxvYXRSZWN0KDAsIDAsIGNsaWVudFJlY3Qud2lkdGgoKSwg
Y2xpZW50UmVjdC5oZWlnaHQoKSk7CiAgICAgfQotICAgIAorCiAgICAgW0NBVHJhbnNhY3Rpb24g
YmVnaW5dOwogICAgIFtDQVRyYW5zYWN0aW9uIHNldEFuaW1hdGlvbkR1cmF0aW9uOjBdOwogICAg
IGlmIChpbnRlcmZhY2UtPmxheWVySG9zdGluZ0NvbnRleHQoKSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>279982</attachid>
            <date>2016-05-27 12:19:31 -0700</date>
            <delta_ts>2016-05-27 13:45:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158148-20160527122042.patch</filename>
            <type>text/plain</type>
            <size>44627</size>
            <attacher name="Jeremy Jones">jeremyj-wk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxNDU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzQ1ZGRkZGVhYzk0MmE2
YTBkZDY5ODBjZDY0ODI5OTRhYmUyNDIxMy4uYTFjZTU0MTIzOTNhZjYzNTRlZGQzYWRmNGUwNmIx
NTNmNTRlYWE4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDE2LTA1LTI3ICBKZXJl
bXkgSm9uZXMgIDxqZXJlbXlqQGFwcGxlLmNvbT4KKworICAgICAgICBEZWNyZWFzZSBmbGlja2Vy
IHdoZW4gY2hhbmdpbmcgdmlkZW8gcHJlc2VudGF0aW9uIG1vZGUuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTgxNDgKKyAgICAgICAgcmRhcjovL3By
b2JsZW0vMjQ0NzY5NDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGVyZSBpcyBubyBiZWhhdmlvciBjaGFuZ2Uu
IFRoaXMgY2hhbmdlIGlzIGFib3V0IHRoZSB0aW1pbmcgb2YKKyAgICAgICAgbW92aW5nIEFWUGxh
eWVyTGF5ZXJzIGJldHdlZW4gbGF5ZXJzIHRvIHByZXZlbnQgZmxpY2tlci4KKworICAgICAgICAx
KSBNb3ZpbmcgYW4gQVZQbGF5ZXJMYXllciBiZXR3ZWVuIENBQ29udGV4dHMgY2FuIGZsaWNrZXIu
IFNvIGFsd2F5cyBrZWVwIHR3bworICAgICAgICBBVlBsYXllckxheWVycyBhcm91bmQgYW5kIGFk
ZCBhbmQgcmVtb3ZlIHRoZW0gZnJvbSB0aGUgaW5saW5lIGFuZCBmdWxsc2NyZWVuIGNvbnRleHRz
LgorICAgICAgICAyKSBXYWl0IHRvIHNob3cgdGhlIGlubGluZSBwbGFjZWhvbGRlciB1bnRpbCB0
aGUgZnVsbHNjcmVlbiB2aWRlbyBsYXllciBoYXMgYmVlbiBpbnN0YWxsZWQuCisgICAgICAgIDMp
IFdhaXQgdG8gcmVtb3ZlIHRoZSBmdWxsc2NyZWVuIHZpZGVvIGxheWVyIHVudGlsIHRoZSBwbGFj
ZWhvbGRlciBoYXMgYmVlbiByZW1vdmVkLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYWNvbnRy
b2xzL01lZGlhQ29udHJvbHNIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJv
bHNIb3N0Ojppc1ZpZGVvTGF5ZXJJbmxpbmUpOiBFeHBvc2UgaXNWaWRlb0xheWVySW5saW5lIHRv
IHRoZSBzaGFkb3cgRE9NLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sc0hvc3Q6OnNl
dFByZXBhcmVkRm9ySW5saW5lKTogRXhwb3NlIHNldFByZXBhcmVkRm9ySW5saW5lIHRvIHRoZSBz
aGFkb3cgRE9NLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xz
SG9zdC5oOiBBZGQgc2V0UHJlcGFyZWRGb3JJbmxpbmUgYW5kIGlzVmlkZW9MYXllcklubGluZQor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5pZGw6IEFk
ZCBzZXRQcmVwYXJlZEZvcklubGluZSBhbmQgaXNWaWRlb0xheWVySW5saW5lCisgICAgICAgICog
TW9kdWxlcy9tZWRpYWNvbnRyb2xzL21lZGlhQ29udHJvbHNBcHBsZS5qczoKKyAgICAgICAgKENv
bnRyb2xsZXIucHJvdG90eXBlLnNob3dJbmxpbmVQbGF5YmFja1BsYWNlaG9sZGVyV2hlblNhZmUp
OiBXYWl0IHRvIHNob3cgcGxhY2Vob2xkZXIgd2hlbiBlbnRlcmluZyBmdWxsc2NyZWVuLgorICAg
ICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUuaGFuZGxlUHJlc2VudGF0aW9uTW9kZUNoYW5nZSk6
IFdhaXQgdG8gc2hvdyBwbGFjZWhvbGRlciwgYW5kIG5vdGlmeSB3aGVuIHBsYWNlaG9sZGVyIGlz
IHJlbW92ZWQuCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNldFByZXBhcmVkRm9ySW5saW5lKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnByZXBhcmVGb3JJbmxpbmUpOiBVc2VkIHRv
IGRlbGF5IGZ1bGxzY3JlZW4gY2xlYW51cCB1bnRpbCBwbGFjZWhvbGRlciBpcyByZW1vdmVkLgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5
ZXIpOiBBZGQgYSBjYWxsYmFjayBzbyB3ZSBjYW4gd2FpdCB1bnRpbCB0aGlzIGNvbXBsZXRlcyBi
ZWZvcmUgY29udGludWluZy4KKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmlzVmlkZW9MYXllcklubGluZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwcmVwYXJlRm9ySW5saW5lKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVy
KTogQWRkIGNvbXBsZXRpb25IYW5kbGVyLgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1dlYlZp
ZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJW
aWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIp
OiBBZGQgY29tcGxldGlvbkhhbmRsZXIuCisgICAgICAgIChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6cHJlcGFyZUZvcklubGluZSk6IEFkZGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1t
OgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnNldFZpZGVv
RnVsbHNjcmVlbkxheWVyKTogQWRkIGNvbXBsZXRpb25IYW5kbGVyLgorICAgICAgICAoV2ViVmlk
ZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnByZXBhcmVGb3JJbmxpbmUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcik6IEFkZCBjb21wbGV0aW9uSGFu
ZGxlci4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKTogQWRkIGNv
bXBsZXRpb25IYW5kbGVyLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
UHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNl
OjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcik6IEFkZCBjb21wbGV0aW9uSGFuZGxlci4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUFW
UGxheWVyTGF5ZXIpOiBDcmVhdGUgdHdvIHZpZGVvIGxheWVycy4KKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmRlc3Ryb3lWaWRlb0xheWVyKTog
QWxsb3cgdHdvIHZpZGVvIGxheWVycy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKTogQWRkIGNvbXBs
ZXRpb25IYW5kbGVyLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6dXBkYXRlVmlkZW9MYXllckdyYXZpdHkpOiBBbGxvdyB0d28gdmlkZW8gbGF5
ZXJzLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQzo6YWRkRGlzcGxheUxheWVyKTogQWxsb3cgdHdvIHZpZGVvIGxheWVycy4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0Vmlk
ZW9GdWxsc2NyZWVuTGF5ZXIpOiBBZGQgY29tcGxldGlvbkhhbmRsZXIuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpjcmVhdGVQcmV2
aWV3TGF5ZXJzKTogQWxsb3cgdHdvIHZpZGVvIGxheWVycy4KKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5
ZXIpOiBBZGQgY29tcGxldGlvbkhhbmRsZXIuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9GdWxsc2NyZWVuTGF5
ZXJNYW5hZ2VyLm1tOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5h
Z2VyOjpzZXRWaWRlb0xheWVycyk6IEFsbG93IHR3byB2aWRlbyBsYXllcnMuCisgICAgICAgIChX
ZWJDb3JlOjpWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXI6OnNldFZpZGVvRnVsbHNjcmVlbkxh
eWVyKTogQWRkIGNvbXBsZXRpb25IYW5kbGVyLgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GdWxs
c2NyZWVuTGF5ZXJNYW5hZ2VyOjpzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZSk6IEFsbG93IHR3byB2
aWRlbyBsYXllcnMuCisgICAgICAgIChXZWJDb3JlOjpWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFn
ZXI6OmRpZERlc3Ryb3lWaWRlb0xheWVyKTogQWxsb3cgdHdvIHZpZGVvIGxheWVycy4KKyAgICAg
ICAgKFdlYkNvcmU6OlZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcjo6c2V0VmlkZW9MYXllcik6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXJBVktpdC5tbToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250
ZXh0OjpkaWRTZXR1cEZ1bGxzY3JlZW4pOiBVc2UgY29tcGxldGlvbkhhbmRsZXIuIAorICAgICAg
ICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmRpZEV4aXRGdWxsc2NyZWVu
KTogVXNlIGNvbXBsZXRpb25IYW5kbGVyLgorCiAyMDE2LTA1LTI3ICBBZGFtIEJlcmdrdmlzdCAg
PGFkYW0uYmVyZ2t2aXN0QGVyaWNzc29uLmNvbT4KIAogICAgICAgICBXZWJSVEM6IFVwZGF0ZSBS
VENQZWVyQ29ubmVjdGlvbiBvdmVybG9hZGVkIGxlZ2FjeSBvcGVyYXRpb25zIHRvIHJldHVybiBh
IFByb21pc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwppbmRleCA5MTFkMTEzNDc0MDMzM2FiMjZhNzhkM2EwODY4NDYyNGU5
MWYyNjNlLi45MjNhNTlmYmJjMmU1MTIyMWM5YzM3ODA5MmM1NzNlNGQyMjZhNmJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTYtMDUtMjcgIEplcmVteSBKb25lcyAgPGplcmVteWpA
YXBwbGUuY29tPgorCisgICAgICAgIERlY3JlYXNlIGZsaWNrZXIgd2hlbiBjaGFuZ2luZyB2aWRl
byBwcmVzZW50YXRpb24gbW9kZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1ODE0OAorICAgICAgICByZGFyOi8vcHJvYmxlbS8yNDQ3Njk0OQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFByZXZlbnQgZmxp
Y2tlciBieSB1c2luZyBzZXRWaWRlb0Z1bGxzY3JlZW5MYXllciB3aXRoIGEgY29tcGxldGlvbiBo
YW5kbGVyIHRvIGRlbGF5IAorICAgICAgICBlbnRlciBmdWxsc2NyZWVuIGFuZCBjbGVhbnVwIGZ1
bGxzY3JlZW4gdW50aWwgdGhlIHZpZGVvIGxheWVyIGhhcyBjb21wbGV0ZWx5IGJlZW4KKyAgICAg
ICAgaW5zdGFsbGVkIG9yIHJlbW92ZWQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXI6OmRpZFNldHVwRnVsbHNjcmVlbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZEV4aXRGdWxsc2NyZWVuKToKKwogMjAxNi0wNS0y
NyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAg
IEV4cG9zZSBjb250ZW50IGV4dGVuc2lvbiBmYWlsdXJlIGVycm9yIGNvZGVzIGluIFNQSQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJv
bHNIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNv
bnRyb2xzSG9zdC5jcHAKaW5kZXggOTExMjIzMDY0Yjk3ODBkM2E0YjEyZjE3YjAyODBiMTk5YTM5
OGQ5My4uMGU2OWRmOTExZTBiYzUwMTQ5YWNiNzM5NjFkOWJhNjFhNjYwYmUyNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250
cm9sc0hvc3QuY3BwCkBAIC0yMTAsNiArMjEwLDE2IEBAIGJvb2wgTWVkaWFDb250cm9sc0hvc3Q6
OnN1cHBvcnRzRnVsbHNjcmVlbigpCiAgICAgcmV0dXJuIG1fbWVkaWFFbGVtZW50LT5zdXBwb3J0
c0Z1bGxzY3JlZW4oSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlU3Rh
bmRhcmQpOwogfQogCitib29sIE1lZGlhQ29udHJvbHNIb3N0Ojppc1ZpZGVvTGF5ZXJJbmxpbmUo
KQoreworICAgIHJldHVybiBtX21lZGlhRWxlbWVudC0+aXNWaWRlb0xheWVySW5saW5lKCk7Cit9
CisKK3ZvaWQgTWVkaWFDb250cm9sc0hvc3Q6OnNldFByZXBhcmVkRm9ySW5saW5lKGJvb2wgdmFs
dWUpCit7CisgICAgbV9tZWRpYUVsZW1lbnQtPnNldFByZXBhcmVkRm9ySW5saW5lKHZhbHVlKTsK
K30KKwogYm9vbCBNZWRpYUNvbnRyb2xzSG9zdDo6dXNlckdlc3R1cmVSZXF1aXJlZCgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuICFtX21lZGlhRWxlbWVudC0+bWVkaWFTZXNzaW9uKCkucGxheWJhY2tQ
ZXJtaXR0ZWQoKm1fbWVkaWFFbGVtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmgKaW5kZXggNGJhM2NhMzlj
YTk2M2JlYTMyMTZlY2EwMzA2NGQyYzA2ZTIwMDY3ZS4uY2YwOTc1YzM1MTY4YjJhNWNhNTY1MzY1
YTJhZGQ4YTk5ODRhN2M2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmgKQEAgLTY0LDcgKzY0LDkgQEAgcHVi
bGljOgogICAgIHZvaWQgdXBkYXRlVGV4dFRyYWNrQ29udGFpbmVyKCk7CiAgICAgYm9vbCBhbGxv
d3NJbmxpbmVNZWRpYVBsYXliYWNrKCkgY29uc3Q7CiAgICAgYm9vbCBzdXBwb3J0c0Z1bGxzY3Jl
ZW4oKTsKKyAgICBib29sIGlzVmlkZW9MYXllcklubGluZSgpOwogICAgIGJvb2wgdXNlckdlc3R1
cmVSZXF1aXJlZCgpIGNvbnN0OworICAgIHZvaWQgc2V0UHJlcGFyZWRGb3JJbmxpbmUoYm9vbCk7
CiAKICAgICB2b2lkIHVwZGF0ZUNhcHRpb25EaXNwbGF5U2l6ZXMoKTsKICAgICB2b2lkIGVudGVy
ZWRGdWxsc2NyZWVuKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
Y29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmlkbAppbmRleCA3YjA3MDZkOTVjNmZjYzll
Y2QzMjQxMzBlMzFjZDdiZTZjZWJmMjQzLi4wMDEzNDM1MDY1NjUwM2NkYTc2MmRjMDIzYzYyOTIz
MDhjYmIxY2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJv
bHMvTWVkaWFDb250cm9sc0hvc3QuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5pZGwKQEAgLTQyLDkgKzQyLDExIEBAIGVudW0g
RGV2aWNlVHlwZSB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFRleHRUcmFjayBjYXB0aW9uTWVu
dUF1dG9tYXRpY0l0ZW07CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBjYXB0aW9u
RGlzcGxheU1vZGU7CiAgICAgdm9pZCBzZXRTZWxlY3RlZFRleHRUcmFjayhUZXh0VHJhY2s/IHRy
YWNrKTsKKyAgICB2b2lkIHNldFByZXBhcmVkRm9ySW5saW5lKGJvb2xlYW4gcHJlcGFyZWQpOwog
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBIVE1MRWxlbWVudCB0ZXh0VHJhY2tDb250YWluZXI7CiAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gYWxsb3dzSW5saW5lTWVkaWFQbGF5YmFjazsK
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBzdXBwb3J0c0Z1bGxzY3JlZW47CisgICAg
cmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gaXNWaWRlb0xheWVySW5saW5lOwogICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBib29sZWFuIHVzZXJHZXN0dXJlUmVxdWlyZWQ7CiAKICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGV4dGVybmFsRGV2aWNlRGlzcGxheU5hbWU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvbWVkaWFDb250cm9sc0Fw
cGxlLmpzIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL21lZGlhQ29udHJv
bHNBcHBsZS5qcwppbmRleCA4Mjg1ZTg2MDhlZmFiMWUzNDU5YzcyM2JiZWZlMTM3MjhjMDc5YTAx
Li4yOWVkYTA5MTUxYzU2MzI0YmQ5OWMzNWZhNjRjODVkNjkxOTkyZTdhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvbWVkaWFDb250cm9sc0FwcGxlLmpz
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9tZWRpYUNvbnRyb2xz
QXBwbGUuanMKQEAgLTgzNyw2ICs4MzcsMTYgQEAgQ29udHJvbGxlci5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICB0aGlzLmNvbnRyb2xzLnBpY3R1cmVJblBpY3R1cmVCdXR0b24uY2xhc3NMaXN0
LmFkZCh0aGlzLkNsYXNzTmFtZXMuaGlkZGVuKTsKICAgICB9LAogCisgICAgc2hvd0lubGluZVBs
YXliYWNrUGxhY2Vob2xkZXJXaGVuU2FmZTogZnVuY3Rpb24oKSB7CisgICAgICAgIGlmICh0aGlz
LnByZXNlbnRhdGlvbk1vZGUoKSAhPSAncGljdHVyZS1pbi1waWN0dXJlJykKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBpZiAoIXRoaXMuaG9zdC5pc1ZpZGVvTGF5ZXJJbmxpbmUpCisg
ICAgICAgICAgICB0aGlzLmNvbnRyb2xzLmlubGluZVBsYXliYWNrUGxhY2Vob2xkZXIuY2xhc3NM
aXN0LnJlbW92ZSh0aGlzLkNsYXNzTmFtZXMuaGlkZGVuKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgc2V0VGltZW91dCh0aGlzLnNob3dJbmxpbmVQbGF5YmFja1BsYWNlaG9sZGVyV2hlblNh
ZmUuYmluZCh0aGlzKSwgMzMpOworICAgIH0sCisKICAgICBoYW5kbGVQcmVzZW50YXRpb25Nb2Rl
Q2hhbmdlOiBmdW5jdGlvbihldmVudCkKICAgICB7CiAgICAgICAgIHZhciBwcmVzZW50YXRpb25N
b2RlID0gdGhpcy5wcmVzZW50YXRpb25Nb2RlKCk7CkBAIC04NTQsNyArODY0LDcgQEAgQ29udHJv
bGxlci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBjYXNlICdwaWN0dXJlLWluLXBpY3R1cmUn
OgogICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbHMucGFuZWwuY2xhc3NMaXN0LmFkZCh0aGlz
LkNsYXNzTmFtZXMucGljdHVyZUluUGljdHVyZSk7CiAgICAgICAgICAgICAgICAgdGhpcy5jb250
cm9scy5pbmxpbmVQbGF5YmFja1BsYWNlaG9sZGVyLmNsYXNzTGlzdC5hZGQodGhpcy5DbGFzc05h
bWVzLnBpY3R1cmVJblBpY3R1cmUpOwotICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbHMuaW5s
aW5lUGxheWJhY2tQbGFjZWhvbGRlci5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuQ2xhc3NOYW1lcy5o
aWRkZW4pOworICAgICAgICAgICAgICAgIHRoaXMuc2hvd0lubGluZVBsYXliYWNrUGxhY2Vob2xk
ZXJXaGVuU2FmZSgpOwogCiAgICAgICAgICAgICAgICAgdGhpcy5jb250cm9scy5pbmxpbmVQbGF5
YmFja1BsYWNlaG9sZGVyVGV4dFRvcC5pbm5lclRleHQgPSB0aGlzLlVJU3RyaW5nKCdUaGlzIHZp
ZGVvIGlzIHBsYXlpbmcgaW4gUGljdHVyZSBpbiBQaWN0dXJlJyk7CiAgICAgICAgICAgICAgICAg
dGhpcy5jb250cm9scy5pbmxpbmVQbGF5YmFja1BsYWNlaG9sZGVyVGV4dFRvcC5jbGFzc0xpc3Qu
YWRkKHRoaXMuQ2xhc3NOYW1lcy5waWN0dXJlSW5QaWN0dXJlKTsKQEAgLTg4Myw2ICs4OTMsNyBA
QCBDb250cm9sbGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5yZXNldEhpZGVDb250cm9s
c1RpbWVyKCk7CiAgICAgICAgIGlmIChwcmVzZW50YXRpb25Nb2RlICE9ICdmdWxsc2NyZWVuJyAm
JiB0aGlzLnZpZGVvLnBhdXNlZCAmJiB0aGlzLmNvbnRyb2xzQXJlSGlkZGVuKCkpCiAgICAgICAg
ICAgICB0aGlzLnNob3dDb250cm9scygpOworICAgICAgICB0aGlzLmhvc3Quc2V0UHJlcGFyZWRG
b3JJbmxpbmUocHJlc2VudGF0aW9uTW9kZSA9PT0gJ2lubGluZScpCiAgICAgfSwKIAogICAgIGhh
bmRsZUZ1bGxzY3JlZW5DaGFuZ2U6IGZ1bmN0aW9uKGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggZDdmZDI4NTA1NjA1Y2EzZWQ5YTRhNjJlNTU5NTJk
ZGE1ODFjNjUwMC4uN2MzNzFiOTEyMmVjZDNiZjY1MTdhMDI0NjkxMjQ3MWI2MjU4NDBiMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC01NDcxLDE1ICs1NDcx
LDQyIEBAIFBsYXRmb3JtTGF5ZXIqIEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXRmb3JtTGF5ZXIoKSBj
b25zdAogICAgIHJldHVybiBtX3BsYXllciA/IG1fcGxheWVyLT5wbGF0Zm9ybUxheWVyKCkgOiBu
dWxscHRyOwogfQogCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFByZXBhcmVkRm9ySW5saW5l
KGJvb2wgdmFsdWUpCit7CisgICAgbV9wcmVwYXJlZEZvcklubGluZSA9IHZhbHVlOworICAgIGlm
IChtX3ByZXBhcmVkRm9ySW5saW5lICYmIG1fcHJlcGFyZWRGb3JJbmxpbmVDb21wbGV0aW9uSGFu
ZGxlcikgeworICAgICAgICBtX3ByZXBhcmVkRm9ySW5saW5lQ29tcGxldGlvbkhhbmRsZXIoKTsK
KyAgICAgICAgbV9wcmVwYXJlZEZvcklubGluZUNvbXBsZXRpb25IYW5kbGVyID0gbmlsOworICAg
IH0KK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwcmVwYXJlRm9ySW5saW5lKHN0ZDo6ZnVu
Y3Rpb248dm9pZCgpPiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQoIW1fcHJlcGFy
ZWRGb3JJbmxpbmVDb21wbGV0aW9uSGFuZGxlcik7CisgICAgaWYgKG1fcHJlcGFyZWRGb3JJbmxp
bmUpICB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgCisgICAgbV9wcmVwYXJlZEZvcklubGluZUNvbXBsZXRpb25IYW5kbGVyID0gY29t
cGxldGlvbkhhbmRsZXI7Cit9CisKICNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMp
ICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCiAKLXZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXll
cikKK2Jvb2wgSFRNTE1lZGlhRWxlbWVudDo6aXNWaWRlb0xheWVySW5saW5lKCkKK3sKKyAgICBy
ZXR1cm4gbV92aWRlb0Z1bGxzY3JlZW5MYXllciA9PSBuaWw7Cit9OworICAgIAordm9pZCBIVE1M
TWVkaWFFbGVtZW50OjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiBwbGF0
Zm9ybUxheWVyLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgbV92aWRlb0Z1bGxzY3JlZW5MYXllciA9IHBsYXRmb3JtTGF5ZXI7Ci0gICAgaWYgKCFtX3Bs
YXllcikKKyAgICBpZiAoIW1fcGxheWVyKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7
CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgCi0gICAgbV9wbGF5ZXItPnNldFZpZGVvRnVs
bHNjcmVlbkxheWVyKHBsYXRmb3JtTGF5ZXIpOworICAgIG1fcGxheWVyLT5zZXRWaWRlb0Z1bGxz
Y3JlZW5MYXllcihwbGF0Zm9ybUxheWVyLCBjb21wbGV0aW9uSGFuZGxlcik7CiAgICAgc2V0TmVl
ZHNTdHlsZVJlY2FsYyhTeW50aGV0aWNTdHlsZUNoYW5nZSk7CiAjaWYgRU5BQkxFKFZJREVPX1RS
QUNLKQogICAgIHVwZGF0ZVRleHRUcmFja0Rpc3BsYXkoKTsKQEAgLTU0OTksNiArNTUyNiwxMyBA
QCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFZpZGVvRnVsbHNjcmVlbkdyYXZpdHkoTWVkaWFQ
bGF5ZXI6OlZpZGVvR3Jhdml0eSBncmF2aQogICAgIGlmIChtX3BsYXllcikKICAgICAgICAgbV9w
bGF5ZXItPnNldFZpZGVvRnVsbHNjcmVlbkdyYXZpdHkoZ3Jhdml0eSk7CiB9CisgICAgCisjZWxz
ZQorICAgIAorYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojppc1ZpZGVvTGF5ZXJJbmxpbmUoKQorewor
ICAgIHJldHVybiB0cnVlOworfTsKIAogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmgKaW5kZXggM2JlMjFjZjIwYWY5OGIwZGM3MDZhMjY2OGQ0ZDUzYmFjYjg1ZGMw
MS4uMGNiODc0ODliN2JmZGE3MDM2Y2RjYzRlNjU2NWEwODVjZTM4YmEyZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTEzMyw4ICsxMzMsMTEgQEAgcHVibGljOgog
CiAgICAgV0VCQ09SRV9FWFBPUlQgUGxhdGZvcm1NZWRpYSBwbGF0Zm9ybU1lZGlhKCkgY29uc3Q7
CiAgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0OworICAgIGJvb2wgaXNW
aWRlb0xheWVySW5saW5lKCk7CisgICAgdm9pZCBzZXRQcmVwYXJlZEZvcklubGluZShib29sKTsK
KyAgICB2b2lkIHByZXBhcmVGb3JJbmxpbmUoc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRp
b25IYW5kbGVyID0gW10geyB9KTsKICNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMp
ICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCi0gICAgdm9pZCBzZXRWaWRlb0Z1
bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKik7CisgICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3Jl
ZW5MYXllcihQbGF0Zm9ybUxheWVyKiwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRpb25I
YW5kbGVyID0gW10geyB9KTsKICAgICBQbGF0Zm9ybUxheWVyKiB2aWRlb0Z1bGxzY3JlZW5MYXll
cigpIGNvbnN0IHsgcmV0dXJuIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXIuZ2V0KCk7IH0KICAgICB2
b2lkIHNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCk7CiAgICAgdm9pZCBzZXRWaWRl
b0Z1bGxzY3JlZW5HcmF2aXR5KE1lZGlhUGxheWVyRW51bXM6OlZpZGVvR3Jhdml0eSk7CkBAIC04
NDcsNiArODUwLDggQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8Tm9kZT4gbV9uZXh0Q2hpbGROb2Rl
VG9Db25zaWRlcjsKIAogICAgIFZpZGVvRnVsbHNjcmVlbk1vZGUgbV92aWRlb0Z1bGxzY3JlZW5N
b2RlOworICAgIGJvb2wgbV9wcmVwYXJlZEZvcklubGluZTsKKyAgICBzdGQ6OmZ1bmN0aW9uPHZv
aWQoKT4gbV9wcmVwYXJlZEZvcklubGluZUNvbXBsZXRpb25IYW5kbGVyOwogI2lmIFBMQVRGT1JN
KElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RF
KSkKICAgICBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gbV92aWRlb0Z1bGxzY3JlZW5MYXllcjsK
ICAgICBGbG9hdFJlY3QgbV92aWRlb0Z1bGxzY3JlZW5GcmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5N
b2RlbFZpZGVvRWxlbWVudC5oCmluZGV4IGY3NzgyMjFkNTQ0MjJlMTQ5MWNjYWM4MTY5MjdjMTQ0
YjYwZDhhYjcuLmIyODA5YzBjMDEwN2RkZmQ2MzFlZjAzOWFlMTQ3MWUzNDY1MWU0OTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1v
ZGVsVmlkZW9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2Vi
VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaApAQCAtMzQsNiArMzQsNyBAQAogI2lu
Y2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnRFbnVtcy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIu
aCIKICNpbmNsdWRlICJXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oIgorI2luY2x1ZGUgPGZ1bmN0
aW9uYWw+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC01NSw3ICs1Niw4IEBAIHB1YmxpYzoKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZShXZWJW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UqKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZp
ZGVvRWxlbWVudChIVE1MVmlkZW9FbGVtZW50Kik7CiAgICAgV0VCQ09SRV9FWFBPUlQgSFRNTFZp
ZGVvRWxlbWVudCogdmlkZW9FbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV92aWRlb0VsZW1lbnQu
Z2V0KCk7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVy
KFBsYXRmb3JtTGF5ZXIqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZpZGVvRnVsbHNj
cmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlv
bkhhbmRsZXIgPSBbXSB7IH0pOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcHJlcGFyZUZvcklu
bGluZShzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkhhbmRsZXIgPSBbXSB7IH0pOwog
ICAgIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50JiBwbGF5YmFja1Nlc3Npb25N
b2RlbCgpIHsgcmV0dXJuIG1fcGxheWJhY2tTZXNzaW9uTW9kZWw7IH0KICAgICAKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGhhbmRsZUV2ZW50KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBXZWJDb3JlOjpFdmVudCopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZp
ZGVvRWxlbWVudC5tbQppbmRleCBkODBkZTEzMGU3NmM2ODI0ODM5Mjc1OWI2MWJkMjY5ZTZjMjk3
ODMxLi4zOGVmMjE2NTRkMDM3YjkzZDI0NDA2ZTc1NmZkMDQ3MDBmYzc5OGVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZp
ZGVvRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJWaWRl
b0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbQpAQCAtMTIwLDEwICsxMjAsMTIgQEAgdm9p
ZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6dXBkYXRlRm9yRXZlbnROYW1l
KGNvbnN0IFdURjo6QXRvbWljU3QKICAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2Ut
PnNldFZpZGVvRGltZW5zaW9ucyh0cnVlLCBtX3ZpZGVvRWxlbWVudC0+dmlkZW9XaWR0aCgpLCBt
X3ZpZGVvRWxlbWVudC0+dmlkZW9IZWlnaHQoKSk7CiB9CiAKLXZvaWQgV2ViVmlkZW9GdWxsc2Ny
ZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5
ZXIqIHZpZGVvTGF5ZXIpCit2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50
OjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiB2aWRlb0xheWVyLCBzdGQ6
OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKG1fdmlkZW9G
dWxsc2NyZWVuTGF5ZXIgPT0gdmlkZW9MYXllcikKKyAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5M
YXllciA9PSB2aWRlb0xheWVyKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAg
ICAgIHJldHVybjsKKyAgICB9CiAgICAgCiAgICAgbV92aWRlb0Z1bGxzY3JlZW5MYXllciA9IHZp
ZGVvTGF5ZXI7CiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtMTMzLDggKzEzNSwyMiBAQCB2b2lkIFdl
YlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXll
cihQbGF0Zm9ybUxheWVyKgogI2VuZGlmCiAgICAgW21fdmlkZW9GdWxsc2NyZWVuTGF5ZXIgc2V0
Qm91bmRzOm1fdmlkZW9GcmFtZV07CiAgICAgCi0gICAgaWYgKG1fdmlkZW9FbGVtZW50KQotICAg
ICAgICBtX3ZpZGVvRWxlbWVudC0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIobV92aWRlb0Z1bGxz
Y3JlZW5MYXllci5nZXQoKSk7CisgICAgaWYgKCFtX3ZpZGVvRWxlbWVudCkgeworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV92aWRl
b0VsZW1lbnQtPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXIu
Z2V0KCksIGNvbXBsZXRpb25IYW5kbGVyKTsKK30KKwordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5N
b2RlbFZpZGVvRWxlbWVudDo6cHJlcGFyZUZvcklubGluZShzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4g
Y29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKCFtX3ZpZGVvRWxlbWVudCkgeworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV92
aWRlb0VsZW1lbnQtPnByZXBhcmVGb3JJbmxpbmUoY29tcGxldGlvbkhhbmRsZXIpOwogfQogCiB2
b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpyZXF1ZXN0RnVsbHNjcmVl
bk1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5k
ZXggMWI4MWQ0ZGY4YTJmMDQ1NWE1ZTJjY2E2YmMzNmM3NWYxN2I2YjY3Ny4uOTkwNzM4ZTc4NzQ0
ZTIwMWMyZGRiYTkxNjllMDEwMTcyNTllMThjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApAQCAtNjYwLDkgKzY2MCw5IEBAIFBsYXRm
b3JtTGF5ZXIqIE1lZGlhUGxheWVyOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKIH0KICAgICAKICNp
ZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5U
QVRJT05fTU9ERSkpCi12b2lkIE1lZGlhUGxheWVyOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQ
bGF0Zm9ybUxheWVyKiBsYXllcikKK3ZvaWQgTWVkaWFQbGF5ZXI6OnNldFZpZGVvRnVsbHNjcmVl
bkxheWVyKFBsYXRmb3JtTGF5ZXIqIGxheWVyLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxl
dGlvbkhhbmRsZXIpCiB7Ci0gICAgbV9wcml2YXRlLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihs
YXllcik7CisgICAgbV9wcml2YXRlLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihsYXllciwgY29t
cGxldGlvbkhhbmRsZXIpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyOjpzZXRWaWRlb0Z1bGxzY3Jl
ZW5GcmFtZShGbG9hdFJlY3QgZnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCA5MzA1MDE3MTBlM2E5YjFjZTY4NGMzMzA0N2MyMTUy
ZWNlMWNhOTc4Li4yMTQ2N2ZjNjcyNTg3Njc2Y2IxZTQ1ZWRmMjI5MzE0ZTI5YTQ0ZWYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTMw
OCw3ICszMDgsNyBAQCBwdWJsaWM6CiAgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigp
IGNvbnN0OwogCiAjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUo
VklERU9fUFJFU0VOVEFUSU9OX01PREUpKQotICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5
ZXIoUGxhdGZvcm1MYXllciopOworICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxh
dGZvcm1MYXllciosIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBjb21wbGV0aW9uSGFuZGxlciA9IFtd
IHsgfSk7CiAgICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3QpOwogICAg
IHVzaW5nIE1lZGlhUGxheWVyRW51bXM6OlZpZGVvR3Jhdml0eTsKICAgICB2b2lkIHNldFZpZGVv
RnVsbHNjcmVlbkdyYXZpdHkoVmlkZW9HcmF2aXR5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKaW5kZXggODljMGMxOWVk
YWNjNzZlZjdiZmM5Y2I2ZTdhMGI4NjI2ODcwNmZiMC4uMTM3Y2VmYjM5YWQ1MzczN2Y0YTE0YWU2
MzI5NzliMzU4NjdlZDk5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IHsgcmV0dXJu
IDA7IH0KIAogI2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJ
REVPX1BSRVNFTlRBVElPTl9NT0RFKSkKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9GdWxsc2Ny
ZWVuTGF5ZXIoUGxhdGZvcm1MYXllciopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0Z1
bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNvbXBs
ZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQg
c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
c2V0VmlkZW9GdWxsc2NyZWVuR3Jhdml0eShNZWRpYVBsYXllcjo6VmlkZW9HcmF2aXR5KSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTW9kZShNZWRpYVBsYXllcjo6Vmlk
ZW9GdWxsc2NyZWVuTW9kZSkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKaW5kZXggNWFkNWQwOGMx
MjA0ODE3ZGQ3M2NhZGYxMjYwMzU0ZGNlMjczZGQwZS4uNGY1M2M3YzRiNmUzZGJhOTBjZTkyMjEx
OTBkZmJjY2Y3MDEyODkxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaApAQCAtMTcyLDcgKzE3Miw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKICAgICBQbGF0Zm9ybUxheWVy
KiBwbGF0Zm9ybUxheWVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAjaWYgUExBVEZPUk0oSU9TKSB8fCAo
UExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQotICAgIHZv
aWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciopIG92ZXJyaWRlOworICAg
IHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciosIHN0ZDo6ZnVuY3Rp
b248dm9pZCgpPiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRWaWRl
b0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3QpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0VmlkZW9G
dWxsc2NyZWVuR3Jhdml0eShNZWRpYVBsYXllcjo6VmlkZW9HcmF2aXR5KSBvdmVycmlkZTsKICAg
ICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbk1vZGUoTWVkaWFQbGF5ZXI6OlZpZGVvRnVsbHNjcmVl
bk1vZGUpIG92ZXJyaWRlOwpAQCAtMzI5LDYgKzMyOSw3IEBAIHByaXZhdGU6CiAgICAgUmV0YWlu
UHRyPEFWUGxheWVyPiBtX2F2UGxheWVyOwogICAgIFJldGFpblB0cjxBVlBsYXllckl0ZW0+IG1f
YXZQbGF5ZXJJdGVtOwogICAgIFJldGFpblB0cjxBVlBsYXllckxheWVyPiBtX3ZpZGVvTGF5ZXI7
CisgICAgUmV0YWluUHRyPEFWUGxheWVyTGF5ZXI+IG1fc2Vjb25kYXJ5VmlkZW9MYXllcjsKICNp
ZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5U
QVRJT05fTU9ERSkpCiAgICAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvRnVsbHNjcmVlbkxheWVyTWFu
YWdlcj4gbV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXI7CiAgICAgTWVkaWFQbGF5ZXI6OlZp
ZGVvR3Jhdml0eSBtX3ZpZGVvRnVsbHNjcmVlbkdyYXZpdHk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5t
bQppbmRleCA3Y2IwMjY2YTNkYzdkYWY4Y2RiOTEwN2RlMGRjM2MzNTg2OWEzYmNmLi4wNzNmMWI4
NWViOWViMzA5YjgzYWY3NmVjMWM2MjZmYmQ3NmE4ZmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
bW0KQEAgLTczMCwxNyArNzMwLDI0IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6Y3JlYXRlQVZQbGF5ZXJMYXllcigpCiAgICAgbV92aWRlb0xheWVyID0gYWRvcHRO
UyhbYWxsb2NBVlBsYXllckxheWVySW5zdGFuY2UoKSBpbml0XSk7CiAgICAgW21fdmlkZW9MYXll
ciBzZXRQbGF5ZXI6bV9hdlBsYXllci5nZXQoKV07CiAgICAgW21fdmlkZW9MYXllciBzZXRCYWNr
Z3JvdW5kQ29sb3I6Y2FjaGVkQ0dDb2xvcihDb2xvcjo6YmxhY2spXTsKKworICAgIG1fc2Vjb25k
YXJ5VmlkZW9MYXllciA9IGFkb3B0TlMoW2FsbG9jQVZQbGF5ZXJMYXllckluc3RhbmNlKCkgaW5p
dF0pOworICAgIFttX3NlY29uZGFyeVZpZGVvTGF5ZXIgc2V0UGxheWVyOm1fYXZQbGF5ZXIuZ2V0
KCldOworICAgIFttX3NlY29uZGFyeVZpZGVvTGF5ZXIgc2V0QmFja2dyb3VuZENvbG9yOmNhY2hl
ZENHQ29sb3IoQ29sb3I6OmJsYWNrKV07CisKICNpZm5kZWYgTkRFQlVHCiAgICAgW21fdmlkZW9M
YXllciBzZXROYW1lOkAiTWVkaWFQbGF5ZXJQcml2YXRlIEFWUGxheWVyTGF5ZXIiXTsKKyAgICBb
bV9zZWNvbmRhcnlWaWRlb0xheWVyIHNldE5hbWU6QCJNZWRpYVBsYXllclByaXZhdGUgQVZQbGF5
ZXJMYXllciBzZWNvbmRhcnkiXTsKICNlbmRpZgogICAgIFttX3ZpZGVvTGF5ZXIgYWRkT2JzZXJ2
ZXI6bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAInJlYWR5Rm9yRGlzcGxheSIgb3B0
aW9uczpOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uTmV3IGNvbnRleHQ6KHZvaWQgKilNZWRpYVBs
YXllckFWRm91bmRhdGlvbk9ic2VydmF0aW9uQ29udGV4dEFWUGxheWVyTGF5ZXJdOwogICAgIHVw
ZGF0ZVZpZGVvTGF5ZXJHcmF2aXR5KCk7CiAgICAgW21fdmlkZW9MYXllciBzZXRDb250ZW50c1Nj
YWxlOnBsYXllcigpLT5jbGllbnQoKS5tZWRpYVBsYXllckNvbnRlbnRzU2NhbGUoKV07CisgICAg
W21fc2Vjb25kYXJ5VmlkZW9MYXllciBzZXRDb250ZW50c1NjYWxlOnBsYXllcigpLT5jbGllbnQo
KS5tZWRpYVBsYXllckNvbnRlbnRzU2NhbGUoKV07CiAgICAgSW50U2l6ZSBkZWZhdWx0U2l6ZSA9
IHNuYXBwZWRJbnRSZWN0KHBsYXllcigpLT5jbGllbnQoKS5tZWRpYVBsYXllckNvbnRlbnRCb3hS
ZWN0KCkpLnNpemUoKTsKICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjpjcmVhdGVWaWRlb0xheWVyKCVwKSAtIHJldHVybmluZyAlcCIsIHRoaXMsIG1f
dmlkZW9MYXllci5nZXQoKSk7CiAKICNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMp
ICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCi0gICAgbV92aWRlb0Z1bGxzY3Jl
ZW5MYXllck1hbmFnZXItPnNldFZpZGVvTGF5ZXIobV92aWRlb0xheWVyLmdldCgpLCBkZWZhdWx0
U2l6ZSk7CisgICAgbV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXItPnNldFZpZGVvTGF5ZXJz
KG1fdmlkZW9MYXllci5nZXQoKSwgbV9zZWNvbmRhcnlWaWRlb0xheWVyLmdldCgpLCBkZWZhdWx0
U2l6ZSk7CiAKICNpZiBQTEFURk9STShJT1MpCiAgICAgaWYgKFttX3ZpZGVvTGF5ZXIgcmVzcG9u
ZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzZXRQSVBNb2RlRW5hYmxlZDopXSkKQEAgLTc0OCw2ICs3
NTUsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUFW
UGxheWVyTGF5ZXIoKQogI2VuZGlmCiAjZWxzZQogICAgIFttX3ZpZGVvTGF5ZXIgc2V0RnJhbWU6
Q0dSZWN0TWFrZSgwLCAwLCBkZWZhdWx0U2l6ZS53aWR0aCgpLCBkZWZhdWx0U2l6ZS5oZWlnaHQo
KSldOworICAgIFttX3NlY29uZGFyeVZpZGVvTGF5ZXIgc2V0RnJhbWU6Q0dSZWN0TWFrZSgwLCAw
LCBkZWZhdWx0U2l6ZS53aWR0aCgpLCBkZWZhdWx0U2l6ZS5oZWlnaHQoKSldOwogI2VuZGlmCiB9
CiAKQEAgLTc2MCwxMiArNzY4LDE0IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6ZGVzdHJveVZpZGVvTGF5ZXIoKQogCiAgICAgW21fdmlkZW9MYXllci5nZXQoKSBy
ZW1vdmVPYnNlcnZlcjptX29iamNPYnNlcnZlci5nZXQoKSBmb3JLZXlQYXRoOkAicmVhZHlGb3JE
aXNwbGF5Il07CiAgICAgW21fdmlkZW9MYXllci5nZXQoKSBzZXRQbGF5ZXI6bmlsXTsKKyAgICBb
bV9zZWNvbmRhcnlWaWRlb0xheWVyLmdldCgpIHNldFBsYXllcjpuaWxdOwogCiAjaWYgUExBVEZP
Uk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01P
REUpKQogICAgIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLT5kaWREZXN0cm95VmlkZW9M
YXllcigpOwogI2VuZGlmCiAKICAgICBtX3ZpZGVvTGF5ZXIgPSBuaWw7CisgICAgbV9zZWNvbmRh
cnlWaWRlb0xheWVyID0gbmlsOwogfQogCiBNZWRpYVRpbWUgTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6Z2V0U3RhcnREYXRlKCkgY29uc3QKQEAgLTExODMsMTIgKzExOTMsMTQg
QEAgUGxhdGZvcm1MYXllciogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGxh
dGZvcm1MYXllcigpIGNvbnN0CiB9CiAKICNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShN
QUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCi12b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3Jt
TGF5ZXIqIHZpZGVvRnVsbHNjcmVlbkxheWVyKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiB2aWRl
b0Z1bGxzY3JlZW5MYXllciwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRpb25IYW5kbGVy
KQogewotICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci0+dmlkZW9GdWxsc2Ny
ZWVuTGF5ZXIoKSA9PSB2aWRlb0Z1bGxzY3JlZW5MYXllcikKKyAgICBpZiAobV92aWRlb0Z1bGxz
Y3JlZW5MYXllck1hbmFnZXItPnZpZGVvRnVsbHNjcmVlbkxheWVyKCkgPT0gdmlkZW9GdWxsc2Ny
ZWVuTGF5ZXIpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAgcmV0dXJu
OworICAgIH0KIAotICAgIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0Z1
bGxzY3JlZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5MYXllcik7CisgICAgbV92aWRlb0Z1bGxzY3Jl
ZW5MYXllck1hbmFnZXItPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKHZpZGVvRnVsbHNjcmVlbkxh
eWVyLCBjb21wbGV0aW9uSGFuZGxlcik7CiAKICAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5MYXll
ck1hbmFnZXItPnZpZGVvRnVsbHNjcmVlbkxheWVyKCkgJiYgbV90ZXh0VHJhY2tSZXByZXNlbnRh
dGlvbkxheWVyKSB7CiAgICAgICAgIHN5bmNUZXh0VHJhY2tCb3VuZHMoKTsKQEAgLTE4NzIsNiAr
MTg4NCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRl
VmlkZW9MYXllckdyYXZpdHkoKQogICAgIFtDQVRyYW5zYWN0aW9uIHNldERpc2FibGVBY3Rpb25z
OllFU107ICAgIAogICAgIE5TU3RyaW5nKiBncmF2aXR5ID0gc2hvdWxkTWFpbnRhaW5Bc3BlY3RS
YXRpbygpID8gQVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCA6IEFWTGF5ZXJWaWRlb0dy
YXZpdHlSZXNpemU7CiAgICAgW21fdmlkZW9MYXllci5nZXQoKSBzZXRWaWRlb0dyYXZpdHk6Z3Jh
dml0eV07CisgICAgW21fc2Vjb25kYXJ5VmlkZW9MYXllci5nZXQoKSBzZXRWaWRlb0dyYXZpdHk6
Z3Jhdml0eV07CiAgICAgW0NBVHJhbnNhY3Rpb24gY29tbWl0XTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMuaAppbmRleCBkNDllM2IzMTc1YThlOGRlMmY4N2I5NDAxZWQzYTVmNjg4ZjlmOTkz
Li5mNzFmZTQ4NTliYTBjZjQyNDlmMWJmNjAxNDJjMmQ5M2ExYjUwYzYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakMuaApAQCAtODcsNyArODcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjaGFyYWN0
ZXJpc3RpY3NDaGFuZ2VkKCk7CiAKICNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19Q
UkVTRU5UQVRJT05fTU9ERSkKLSAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRm
b3JtTGF5ZXIqKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBs
YXRmb3JtTGF5ZXIqLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkhhbmRsZXIpIG92
ZXJyaWRlOwogICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0KSBvdmVy
cmlkZTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KaW5kZXggMTQzYzA0NjAz
ZjJiN2Q2ZjQxMDUzYWVhYjM3M2Y1YTU1YzE0MjNjYi4uMmY1ODJkYmU0NzliY2JmZWY4OTM1Y2U5
MWUzYzI0N2JjYzU3YmYyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQpAQCAtNzcwLDcg
Kzc3MCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjphZGRE
aXNwbGF5TGF5ZXIoQVZTYW1wbGVCdWZmZXJEaXNwbGF5CiAgICAgbV9wbGF5ZXItPmZpcnN0Vmlk
ZW9GcmFtZUF2YWlsYWJsZSgpOwogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9f
UFJFU0VOVEFUSU9OX01PREUpCi0gICAgbV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXItPnNl
dFZpZGVvTGF5ZXIobV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuZ2V0KCksIHNuYXBwZWRJbnRS
ZWN0KG1fcGxheWVyLT5jbGllbnQoKS5tZWRpYVBsYXllckNvbnRlbnRCb3hSZWN0KCkpLnNpemUo
KSk7CisgICAgbV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXItPnNldFZpZGVvTGF5ZXJzKG1f
c2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpLCBuaWwsIHNuYXBwZWRJbnRSZWN0KG1fcGxh
eWVyLT5jbGllbnQoKS5tZWRpYVBsYXllckNvbnRlbnRCb3hSZWN0KCkpLnNpemUoKSk7CiAjZW5k
aWYKIH0KIApAQCAtODI4LDkgKzgyOCw5IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDOjpjaGFyYWN0ZXJpc3RpY3NDaGFuZ2VkKCkKIH0KIAogI2lmIFBMQVRGT1JN
KE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQotdm9pZCBNZWRpYVBsYXll
clByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRm
b3JtTGF5ZXIgKnZpZGVvRnVsbHNjcmVlbkxheWVyKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIg
KnZpZGVvRnVsbHNjcmVlbkxheWVyLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkhh
bmRsZXIpCiB7Ci0gICAgbV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXItPnNldFZpZGVvRnVs
bHNjcmVlbkxheWVyKHZpZGVvRnVsbHNjcmVlbkxheWVyKTsKKyAgICBtX3ZpZGVvRnVsbHNjcmVl
bkxheWVyTWFuYWdlci0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIodmlkZW9GdWxsc2NyZWVuTGF5
ZXIsIGNvbXBsZXRpb25IYW5kbGVyKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCBmcmFtZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmgKaW5kZXggN2U0MjQwM2NlYWY4NTYyNjMyNDU3ZTcxZGYw
ODI4NmU1ZDFmM2NkNy4uMmNmNTg3NzM2MjEyMDc4NDVlYjFhYTEzYzU5MjYzZWZlZTJiZTA0NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmgKQEAgLTE2MCw3ICsxNjAsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZGlkUmVtb3ZlVHJhY2soTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKSBvdmVycmlk
ZTsKIAogI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RF
KQotICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciopIG92ZXJy
aWRlOworICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciosIHN0
ZDo6ZnVuY3Rpb248dm9pZCgpPiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3QpIG92ZXJyaWRlOwogI2VuZGlmCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQppbmRleCBlOGNhYmVkOGMxZDE3MjM2NmE2OGZlZjM2
NzQ3NDEyYmU3YmU5MzU5Li41ZGU0NGQwZGZmODY5NGFkZDRiNWE1MWE4MWJiMzZkZDU4NzViZTNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCkBAIC00MDQsNyArNDA0LDcgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmNyZWF0ZVByZXZpZXdMYXllcnMo
KQogICAgICAgICBtX3ZpZGVvQmFja2dyb3VuZExheWVyLmdldCgpLm5hbWUgPSBAIk1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQyBwcmV2aWV3IGJhY2tncm91bmQgbGF5ZXIiOwog
CiAjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCi0g
ICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0xheWVyKG1fdmlk
ZW9CYWNrZ3JvdW5kTGF5ZXIuZ2V0KCksIHNuYXBwZWRJbnRSZWN0KG1fcGxheWVyLT5jbGllbnQo
KS5tZWRpYVBsYXllckNvbnRlbnRCb3hSZWN0KCkpLnNpemUoKSk7CisgICAgICAgIG1fdmlkZW9G
dWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0xheWVycyhtX3ZpZGVvQmFja2dyb3VuZExh
eWVyLmdldCgpLCBuaWwsIHNuYXBwZWRJbnRSZWN0KG1fcGxheWVyLT5jbGllbnQoKS5tZWRpYVBs
YXllckNvbnRlbnRCb3hSZWN0KCkpLnNpemUoKSk7CiAjZW5kaWYKICAgICB9CiAKQEAgLTQ3NCw5
ICs0NzQsOSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZGlk
UmVtb3ZlVHJhY2soTWVkaWFTdHJlYW1UcmFja1ByaXZhdAogfQogCiAjaWYgUExBVEZPUk0oTUFD
KSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCi12b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1M
YXllciAqdmlkZW9GdWxsc2NyZWVuTGF5ZXIpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciAqdmlk
ZW9GdWxsc2NyZWVuTGF5ZXIsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKLSAgICBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci0+c2V0VmlkZW9GdWxsc2Ny
ZWVuTGF5ZXIodmlkZW9GdWxsc2NyZWVuTGF5ZXIpOworICAgIG1fdmlkZW9GdWxsc2NyZWVuTGF5
ZXJNYW5hZ2VyLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5MYXllciwg
Y29tcGxldGlvbkhhbmRsZXIpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3Ry
ZWFtQVZGT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0IGZyYW1lKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIu
aAppbmRleCAyZDVkYjYwNDc5MDdiZDk5ODEzMGNmM2NiOTdiZDhiYjQyMzMwNzFhLi5mZTQwMDdl
ZTk5MjVlZjY0NTFiNGIwMTlmMWM2YTM1YzFhYWZjYzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0Z1bGxzY3JlZW5M
YXllck1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9WaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIuaApAQCAtMzEsNiArMzEs
NyBAQAogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNs
dWRlICJQbGF0Zm9ybUxheWVyLmgiCisjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQzLDggKzQ0LDggQEAg
cHVibGljOgogICAgIFBsYXRmb3JtTGF5ZXIgKnZpZGVvSW5saW5lTGF5ZXIoKSBjb25zdCB7IHJl
dHVybiBtX3ZpZGVvSW5saW5lTGF5ZXIuZ2V0KCk7IH0KICAgICBQbGF0Zm9ybUxheWVyICp2aWRl
b0Z1bGxzY3JlZW5MYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXIu
Z2V0KCk7IH0KICAgICBGbG9hdFJlY3QgdmlkZW9GdWxsc2NyZWVuRnJhbWUoKSBjb25zdCB7IHJl
dHVybiBtX3ZpZGVvRnVsbHNjcmVlbkZyYW1lOyB9Ci0gICAgdm9pZCBzZXRWaWRlb0xheWVyKFBs
YXRmb3JtTGF5ZXIgKiwgSW50U2l6ZSBjb250ZW50U2l6ZSk7Ci0gICAgdm9pZCBzZXRWaWRlb0Z1
bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyICopOworICAgIHZvaWQgc2V0VmlkZW9MYXllcnMo
UGxhdGZvcm1MYXllciAqLCBQbGF0Zm9ybUxheWVyICosIEludFNpemUgY29udGVudFNpemUpOwor
ICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciAqLCBzdGQ6OmZ1
bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkhhbmRsZXIpOwogICAgIHZvaWQgc2V0VmlkZW9GdWxs
c2NyZWVuRnJhbWUoRmxvYXRSZWN0KTsKICAgICB2b2lkIGRpZERlc3Ryb3lWaWRlb0xheWVyKCk7
CiAKQEAgLTU0LDYgKzU1LDcgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8UGxhdGZvcm1MYXll
cj4gbV92aWRlb0lubGluZUxheWVyOwogICAgIFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBtX3Zp
ZGVvRnVsbHNjcmVlbkxheWVyOwogICAgIFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBtX3ZpZGVv
TGF5ZXI7CisgICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IG1fc2Vjb25kYXJ5VmlkZW9MYXll
cjsKICAgICBGbG9hdFJlY3QgbV92aWRlb0Z1bGxzY3JlZW5GcmFtZTsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Zp
ZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci5tbQpp
bmRleCA2OGI5MjAzNGM5OGQ1YzljMDI4OGUzMjBiOTY3NDY4N2Q3NWY0ZGFhLi4wY2QxNzJmMWM4
M2NmNTNiZWZkNGJlMTI3YWZhMDlhZjM4YzA0N2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0Z1bGxzY3JlZW5MYXll
ck1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLm1tCkBAIC02Niw1NSArNjYs
OTcgQEAgVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyOjpWaWRlb0Z1bGxzY3JlZW5MYXllck1h
bmFnZXIoKQogewogfQogCi12b2lkIFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcjo6c2V0Vmlk
ZW9MYXllcihQbGF0Zm9ybUxheWVyICp2aWRlb0xheWVyLCBJbnRTaXplIGNvbnRlbnRTaXplKQor
dm9pZCBWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXI6OnNldFZpZGVvTGF5ZXJzKFBsYXRmb3Jt
TGF5ZXIgKnZpZGVvTGF5ZXIsIFBsYXRmb3JtTGF5ZXIgKnNlY29uZGFyeVZpZGVvTGF5ZXIsIElu
dFNpemUgY29udGVudFNpemUpCiB7CiAgICAgbV92aWRlb0xheWVyID0gdmlkZW9MYXllcjsKKyAg
ICBtX3NlY29uZGFyeVZpZGVvTGF5ZXIgPSBzZWNvbmRhcnlWaWRlb0xheWVyOwogCiAgICAgW21f
dmlkZW9MYXllciB3ZWJfZGlzYWJsZUFsbEFjdGlvbnNdOworICAgIFttX3NlY29uZGFyeVZpZGVv
TGF5ZXIgd2ViX2Rpc2FibGVBbGxBY3Rpb25zXTsKICAgICBtX3ZpZGVvSW5saW5lTGF5ZXIgPSBh
ZG9wdE5TKFtbV2ViVmlkZW9Db250YWluZXJMYXllciBhbGxvY10gaW5pdF0pOwogI2lmbmRlZiBO
REVCVUcKICAgICBbbV92aWRlb0lubGluZUxheWVyIHNldE5hbWU6QCJXZWJWaWRlb0NvbnRhaW5l
ckxheWVyIl07CiAjZW5kaWYKICAgICBbbV92aWRlb0lubGluZUxheWVyIHNldEZyYW1lOkNHUmVj
dE1ha2UoMCwgMCwgY29udGVudFNpemUud2lkdGgoKSwgY29udGVudFNpemUuaGVpZ2h0KCkpXTsK
ICAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5MYXllcikgewotICAgICAgICBbbV92aWRlb0xheWVy
IHNldEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgbV92aWRlb0Z1bGxzY3JlZW5GcmFtZS53aWR0aCgp
LCBtX3ZpZGVvRnVsbHNjcmVlbkZyYW1lLmhlaWdodCgpKV07Ci0gICAgICAgIFttX3ZpZGVvRnVs
bHNjcmVlbkxheWVyIGluc2VydFN1YmxheWVyOm1fdmlkZW9MYXllci5nZXQoKSBhdEluZGV4OjBd
OworICAgICAgICBbbV92aWRlb0xheWVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKKyAgICAgICAg
UGxhdGZvcm1MYXllciAqYWN0aXZlTGF5ZXIgPSBzZWNvbmRhcnlWaWRlb0xheWVyID8gc2Vjb25k
YXJ5VmlkZW9MYXllciA6IHZpZGVvTGF5ZXI7CisgICAgICAgIFthY3RpdmVMYXllciBzZXRGcmFt
ZTpDR1JlY3RNYWtlKDAsIDAsIG1fdmlkZW9GdWxsc2NyZWVuRnJhbWUud2lkdGgoKSwgbV92aWRl
b0Z1bGxzY3JlZW5GcmFtZS5oZWlnaHQoKSldOworICAgICAgICBbbV92aWRlb0Z1bGxzY3JlZW5M
YXllciBpbnNlcnRTdWJsYXllcjphY3RpdmVMYXllciBhdEluZGV4OjBdOwogICAgIH0gZWxzZSB7
CiAgICAgICAgIFttX3ZpZGVvSW5saW5lTGF5ZXIgaW5zZXJ0U3VibGF5ZXI6bV92aWRlb0xheWVy
LmdldCgpIGF0SW5kZXg6MF07CiAgICAgICAgIFttX3ZpZGVvTGF5ZXIgc2V0RnJhbWU6bV92aWRl
b0lubGluZUxheWVyLmdldCgpLmJvdW5kc107CisgICAgICAgIFttX3NlY29uZGFyeVZpZGVvTGF5
ZXIgcmVtb3ZlRnJvbVN1cGVybGF5ZXJdOwogICAgIH0KIH0KIAotdm9pZCBWaWRlb0Z1bGxzY3Jl
ZW5MYXllck1hbmFnZXI6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIgKnZp
ZGVvRnVsbHNjcmVlbkxheWVyKQordm9pZCBWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXI6OnNl
dFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIgKnZpZGVvRnVsbHNjcmVlbkxheWVy
LCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKG1f
dmlkZW9GdWxsc2NyZWVuTGF5ZXIgPT0gdmlkZW9GdWxsc2NyZWVuTGF5ZXIpCisgICAgaWYgKG1f
dmlkZW9GdWxsc2NyZWVuTGF5ZXIgPT0gdmlkZW9GdWxsc2NyZWVuTGF5ZXIpIHsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIG1fdmlk
ZW9GdWxsc2NyZWVuTGF5ZXIgPSB2aWRlb0Z1bGxzY3JlZW5MYXllcjsKIAogICAgIFtDQVRyYW5z
YWN0aW9uIGJlZ2luXTsKICAgICBbQ0FUcmFuc2FjdGlvbiBzZXREaXNhYmxlQWN0aW9uczpZRVNd
OwogCi0gICAgQ0FDb250ZXh0ICpvbGRDb250ZXh0ID0gW21fdmlkZW9MYXllciBjb250ZXh0XTsK
LSAgICBDQUNvbnRleHQgKm5ld0NvbnRleHQgPSBuaWw7CisgICAgaWYgKG1fc2Vjb25kYXJ5Vmlk
ZW9MYXllciAmJiBtX3ZpZGVvTGF5ZXIpIHsKKyAgICAgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVu
TGF5ZXIpIHsKKyAgICAgICAgICAgIFttX3ZpZGVvRnVsbHNjcmVlbkxheWVyIGluc2VydFN1Ymxh
eWVyOm1fc2Vjb25kYXJ5VmlkZW9MYXllci5nZXQoKSBhdEluZGV4OjBdOworICAgICAgICAgICAg
W21fc2Vjb25kYXJ5VmlkZW9MYXllciBzZXRGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIG1fdmlkZW9G
dWxsc2NyZWVuRnJhbWUud2lkdGgoKSwgbV92aWRlb0Z1bGxzY3JlZW5GcmFtZS5oZWlnaHQoKSld
OworICAgICAgICB9IGVsc2UgaWYgKG1fdmlkZW9JbmxpbmVMYXllcikgeworICAgICAgICAgICAg
W21fdmlkZW9MYXllciBzZXRGcmFtZTpbbV92aWRlb0lubGluZUxheWVyIGJvdW5kc11dOworICAg
ICAgICAgICAgW21fdmlkZW9JbmxpbmVMYXllciBpbnNlcnRTdWJsYXllcjptX3ZpZGVvTGF5ZXIu
Z2V0KCkgYXRJbmRleDowXTsKKyAgICAgICAgfQogCi0gICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVu
TGF5ZXIgJiYgbV92aWRlb0xheWVyKSB7Ci0gICAgICAgIFttX3ZpZGVvRnVsbHNjcmVlbkxheWVy
IGluc2VydFN1YmxheWVyOm1fdmlkZW9MYXllci5nZXQoKSBhdEluZGV4OjBdOwotICAgICAgICBb
bV92aWRlb0xheWVyIHNldEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgbV92aWRlb0Z1bGxzY3JlZW5G
cmFtZS53aWR0aCgpLCBtX3ZpZGVvRnVsbHNjcmVlbkZyYW1lLmhlaWdodCgpKV07Ci0gICAgICAg
IG5ld0NvbnRleHQgPSBbbV92aWRlb0Z1bGxzY3JlZW5MYXllciBjb250ZXh0XTsKLSAgICB9IGVs
c2UgaWYgKG1fdmlkZW9JbmxpbmVMYXllciAmJiBtX3ZpZGVvTGF5ZXIpIHsKLSAgICAgICAgW21f
dmlkZW9MYXllciBzZXRGcmFtZTpbbV92aWRlb0lubGluZUxheWVyIGJvdW5kc11dOwotICAgICAg
ICBbbV92aWRlb0xheWVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKLSAgICAgICAgW21fdmlkZW9J
bmxpbmVMYXllciBpbnNlcnRTdWJsYXllcjptX3ZpZGVvTGF5ZXIuZ2V0KCkgYXRJbmRleDowXTsK
LSAgICAgICAgbmV3Q29udGV4dCA9IFttX3ZpZGVvSW5saW5lTGF5ZXIgY29udGV4dF07Ci0gICAg
fSBlbHNlIGlmIChtX3ZpZGVvTGF5ZXIpCi0gICAgICAgIFttX3ZpZGVvTGF5ZXIgcmVtb3ZlRnJv
bVN1cGVybGF5ZXJdOworICAgICAgICBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gZnVsbHNjcmVl
bkxheWVyID0gbV92aWRlb0Z1bGxzY3JlZW5MYXllcjsKKyAgICAgICAgUmV0YWluUHRyPFBsYXRm
b3JtTGF5ZXI+IHZpZGVvTGF5ZXIgPSBtX3ZpZGVvTGF5ZXI7CisgICAgICAgIFJldGFpblB0cjxQ
bGF0Zm9ybUxheWVyPiBzZWNvbmRhcnlWaWRlb0xheWVyID0gbV9zZWNvbmRhcnlWaWRlb0xheWVy
OwogCi0gICAgaWYgKG9sZENvbnRleHQgJiYgbmV3Q29udGV4dCAmJiBvbGRDb250ZXh0ICE9IG5l
d0NvbnRleHQpIHsKLSAgICAgICAgbWFjaF9wb3J0X3QgZmVuY2VQb3J0ID0gW29sZENvbnRleHQg
Y3JlYXRlRmVuY2VQb3J0XTsKLSAgICAgICAgW25ld0NvbnRleHQgc2V0RmVuY2VQb3J0OmZlbmNl
UG9ydF07Ci0gICAgICAgIG1hY2hfcG9ydF9kZWFsbG9jYXRlKG1hY2hfdGFza19zZWxmKCksIGZl
bmNlUG9ydCk7CisgICAgICAgIFtDQVRyYW5zYWN0aW9uIHNldENvbXBsZXRpb25CbG9jazpbY29t
cGxldGlvbkhhbmRsZXIsIGZ1bGxzY3JlZW5MYXllciwgdmlkZW9MYXllciwgc2Vjb25kYXJ5Vmlk
ZW9MYXllcl0geworICAgICAgICAgICAgW0NBVHJhbnNhY3Rpb24gYmVnaW5dOworICAgICAgICAg
ICAgW0NBVHJhbnNhY3Rpb24gc2V0RGlzYWJsZUFjdGlvbnM6WUVTXTsKKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgaWYgKGZ1bGxzY3JlZW5MYXllcikKKyAgICAgICAgICAgICAgICBbdmlkZW9M
YXllciByZW1vdmVGcm9tU3VwZXJsYXllcl07CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgW3NlY29uZGFyeVZpZGVvTGF5ZXIgcmVtb3ZlRnJvbVN1cGVybGF5ZXJdOworCisgICAg
ICAgICAgICBbQ0FUcmFuc2FjdGlvbiBzZXRDb21wbGV0aW9uQmxvY2s6W2NvbXBsZXRpb25IYW5k
bGVyXSB7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgICAg
IH1dOworICAgICAgICAgICAgW0NBVHJhbnNhY3Rpb24gY29tbWl0XTsKKyAgICAgICAgfV07Cisg
ICAgfSBlbHNlIGlmIChtX3ZpZGVvTGF5ZXIpIHsKKyAgICAgICAgaWYgKG1fdmlkZW9GdWxsc2Ny
ZWVuTGF5ZXIpIHsKKyAgICAgICAgICAgIFttX3ZpZGVvRnVsbHNjcmVlbkxheWVyIGluc2VydFN1
YmxheWVyOm1fdmlkZW9MYXllci5nZXQoKSBhdEluZGV4OjBdOworICAgICAgICAgICAgW21fdmlk
ZW9MYXllciBzZXRGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIG1fdmlkZW9GdWxsc2NyZWVuRnJhbWUu
d2lkdGgoKSwgbV92aWRlb0Z1bGxzY3JlZW5GcmFtZS5oZWlnaHQoKSldOworICAgICAgICB9IGVs
c2UgaWYgKG1fdmlkZW9JbmxpbmVMYXllcikgeworICAgICAgICAgICAgW21fdmlkZW9MYXllciBz
ZXRGcmFtZTpbbV92aWRlb0lubGluZUxheWVyIGJvdW5kc11dOworICAgICAgICAgICAgW21fdmlk
ZW9MYXllciByZW1vdmVGcm9tU3VwZXJsYXllcl07CisgICAgICAgICAgICBbbV92aWRlb0lubGlu
ZUxheWVyIGluc2VydFN1YmxheWVyOm1fdmlkZW9MYXllci5nZXQoKSBhdEluZGV4OjBdOworICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgIFttX3ZpZGVvTGF5ZXIgcmVtb3ZlRnJvbVN1cGVybGF5
ZXJdOworCisgICAgICAgIENBQ29udGV4dCAqb2xkQ29udGV4dCA9IFttX3ZpZGVvRnVsbHNjcmVl
bkxheWVyIGNvbnRleHRdOworICAgICAgICBDQUNvbnRleHQgKm5ld0NvbnRleHQgPSBbbV92aWRl
b0lubGluZUxheWVyIGNvbnRleHRdOworICAgICAgICBpZiAob2xkQ29udGV4dCAmJiBuZXdDb250
ZXh0ICYmIG9sZENvbnRleHQgIT0gbmV3Q29udGV4dCkgeworICAgICAgICAgICAgbWFjaF9wb3J0
X3QgZmVuY2VQb3J0ID0gW29sZENvbnRleHQgY3JlYXRlRmVuY2VQb3J0XTsKKyAgICAgICAgICAg
IFtuZXdDb250ZXh0IHNldEZlbmNlUG9ydDpmZW5jZVBvcnRdOworICAgICAgICAgICAgbWFjaF9w
b3J0X2RlYWxsb2NhdGUobWFjaF90YXNrX3NlbGYoKSwgZmVuY2VQb3J0KTsKKyAgICAgICAgfQor
CisgICAgICAgIFtDQVRyYW5zYWN0aW9uIHNldENvbXBsZXRpb25CbG9jazpbY29tcGxldGlvbkhh
bmRsZXJdIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgIH1dOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIFtDQVRyYW5zYWN0aW9uIHNldENvbXBsZXRpb25CbG9jazpb
Y29tcGxldGlvbkhhbmRsZXJdIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cisg
ICAgICAgIH1dOwogICAgIH0KKwogICAgIFtDQVRyYW5zYWN0aW9uIGNvbW1pdF07CiB9CiAKQEAg
LTEyNCwxNyArMTY2LDE4IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyOjpzZXRW
aWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3QgdmlkZW9GdWxsc2NyCiAgICAgaWYgKCFtX3Zp
ZGVvRnVsbHNjcmVlbkxheWVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV92aWRlb0xh
eWVyKQotICAgICAgICBbbV92aWRlb0xheWVyIHNldEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgdmlk
ZW9GdWxsc2NyZWVuRnJhbWUud2lkdGgoKSwgdmlkZW9GdWxsc2NyZWVuRnJhbWUuaGVpZ2h0KCkp
XTsKKyAgICBQbGF0Zm9ybUxheWVyICphY3RpdmVMYXllciA9IG1fc2Vjb25kYXJ5VmlkZW9MYXll
ci5nZXQoKSA/IG1fc2Vjb25kYXJ5VmlkZW9MYXllci5nZXQoKSA6IG1fdmlkZW9MYXllci5nZXQo
KTsKKyAgICBbYWN0aXZlTGF5ZXIgc2V0RnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCB2aWRlb0Z1bGxz
Y3JlZW5GcmFtZS53aWR0aCgpLCB2aWRlb0Z1bGxzY3JlZW5GcmFtZS5oZWlnaHQoKSldOwogfQog
CiB2b2lkIFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcjo6ZGlkRGVzdHJveVZpZGVvTGF5ZXIo
KQogewotICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbkxheWVyKQotICAgICAgICBbbV92aWRlb0xh
eWVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKKyAgICBbbV92aWRlb0xheWVyIHJlbW92ZUZyb21T
dXBlcmxheWVyXTsKKyAgICBbbV9zZWNvbmRhcnlWaWRlb0xheWVyIHJlbW92ZUZyb21TdXBlcmxh
eWVyXTsKIAogICAgIG1fdmlkZW9JbmxpbmVMYXllciA9IG5pbDsKICAgICBtX3ZpZGVvTGF5ZXIg
PSBuaWw7CisgICAgbV9zZWNvbmRhcnlWaWRlb0xheWVyID0gbmlsOwogfQogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlckFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJBVktpdC5tbQppbmRleCBlNWNhNDcyZmJhMGM3OGVjMDg5YmY1ZTIwNTMz
NzY0Mjc4OTVmOWNiLi42YjBkYmNmNjVjODc4NDZhMDE0OTA3OTg0ZDkzMGE1OThhZTkzNTllIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlckFWS2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0KQEAgLTI0Nyw5ICsyNDcsMTAgQEAgdm9p
ZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6ZGlkU2V0dXBGdWxsc2NyZWVu
KCkKICAgICBSZXRhaW5QdHI8Q0FMYXllcj4gdmlkZW9GdWxsc2NyZWVuTGF5ZXIgPSBbbV92aWRl
b0Z1bGxzY3JlZW5WaWV3IGxheWVyXTsKICAgICBXZWJUaHJlYWRSdW4oW3Byb3RlY3RlZFRoaXMs
IHRoaXMsIHZpZGVvRnVsbHNjcmVlbkxheWVyXSB7CiAgICAgICAgIFt2aWRlb0Z1bGxzY3JlZW5M
YXllciBzZXRCYWNrZ3JvdW5kQ29sb3I6Y2FjaGVkQ0dDb2xvcihXZWJDb3JlOjpDb2xvcjo6dHJh
bnNwYXJlbnQpXTsKLSAgICAgICAgbV9tb2RlbC0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIodmlk
ZW9GdWxsc2NyZWVuTGF5ZXIuZ2V0KCkpOwotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRj
aF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcywgdGhpc10gewotICAgICAgICAgICAg
bV9pbnRlcmZhY2UtPmVudGVyRnVsbHNjcmVlbigpOworICAgICAgICBtX21vZGVsLT5zZXRWaWRl
b0Z1bGxzY3JlZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5MYXllci5nZXQoKSwgW3Byb3RlY3RlZFRo
aXMsIHRoaXNdIHsKKyAgICAgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWlu
X3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzLCB0aGlzXSB7CisgICAgICAgICAgICAgICAgbV9pbnRl
cmZhY2UtPmVudGVyRnVsbHNjcmVlbigpOworICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwog
ICAgIH0pOwogfQpAQCAtMjU5LDkgKzI2MCwxMCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXJDb250ZXh0OjpkaWRFeGl0RnVsbHNjcmVlbigpCiAgICAgQVNTRVJUKGlzVUlUaHJl
YWQoKSk7CiAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBw
cm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIFdlYlRocmVhZFJ1bihbcHJvdGVjdGVkVGhpcywgdGhp
c10gewotICAgICAgICBtX21vZGVsLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihuaWwpOwotICAg
ICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVk
VGhpcywgdGhpc10gewotICAgICAgICAgICAgbV9pbnRlcmZhY2UtPmNsZWFudXBGdWxsc2NyZWVu
KCk7CisgICAgICAgIG1fbW9kZWwtPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKG5pbCwgW3Byb3Rl
Y3RlZFRoaXMsIHRoaXNdIHsKKyAgICAgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dl
dF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzLCB0aGlzXSB7CisgICAgICAgICAgICAgICAg
bV9pbnRlcmZhY2UtPmNsZWFudXBGdWxsc2NyZWVuKCk7CisgICAgICAgICAgICB9KTsKICAgICAg
ICAgfSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KaW5kZXggMzViYTc1MjZm
YTk4MmJmNWMzMDYzMWJmYWVjNmIwNmFiZjBlY2NiNC4uNTY1OTUwMzRlNjQ2ODNmZmI4M2YwZDlh
MmFmMGE0YTUyZThmYjNlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9j
b2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQpAQCAtMzY5LDE0ICsz
NjksMTYgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRTZXR1cEZ1bGxzY3Jl
ZW4odWludDY0X3QgY29udGV4dElkKQogICAgIHN0ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2UpID0g
ZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UoY29udGV4dElkKTsKIAogICAgIGludGVyZmFjZS0+bGF5
ZXJIb3N0aW5nQ29udGV4dCgpLT5zZXRSb290TGF5ZXIodmlkZW9MYXllcik7Ci0gICAgbW9kZWwt
PnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKHZpZGVvTGF5ZXIpOwotCi0gICAgW0NBVHJhbnNhY3Rp
b24gY29tbWl0XTsKIAogICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyPiBzdHJv
bmdUaGlzKHRoaXMpOwotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVl
KCksIFtzdHJvbmdUaGlzLCB0aGlzLCBjb250ZXh0SWRdIHsKLSAgICAgICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkVudGVyRnVsbHNjcmVl
bihjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAKKyAgICBtb2RlbC0+c2V0Vmlk
ZW9GdWxsc2NyZWVuTGF5ZXIodmlkZW9MYXllciwgW3N0cm9uZ1RoaXMsIHRoaXMsIGNvbnRleHRJ
ZF0geworICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBb
c3Ryb25nVGhpcywgdGhpcywgY29udGV4dElkXSB7CisgICAgICAgICAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6RW50ZXJGdWxsc2NyZWVu
KGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgICAgICB9KTsKICAgICB9KTsKKyAg
ICAKKyAgICBbQ0FUcmFuc2FjdGlvbiBjb21taXRdOwogfQogICAgIAogdm9pZCBXZWJWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyOjpkaWRFbnRlckZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKQpA
QCAtNDA3LDE3ICs0MDksMjEgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRF
eGl0RnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgUmVmUHRyPFdlYlZpZGVvRnVs
bHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50PiBtb2RlbDsKICAgICBSZWZQdHI8V2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQ29udGV4dD4gaW50ZXJmYWNlOwogICAgIHN0ZDo6dGllKG1vZGVsLCBp
bnRlcmZhY2UpID0gZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UoY29udGV4dElkKTsKLQotICAgIG1v
ZGVsLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihuaWwpOwotCiAgICAgUmVmUHRyPFdlYlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXI+IHN0cm9uZ1RoaXModGhpcyk7Ci0gICAgZGlzcGF0Y2hfYXN5bmMo
ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3N0cm9uZ1RoaXMsIGNvbnRleHRJZCwgaW50ZXJm
YWNlXSB7Ci0gICAgICAgIGlmIChpbnRlcmZhY2UtPmxheWVySG9zdGluZ0NvbnRleHQoKSkgewot
ICAgICAgICAgICAgaW50ZXJmYWNlLT5sYXllckhvc3RpbmdDb250ZXh0KCktPnNldFJvb3RMYXll
cihudWxscHRyKTsKLSAgICAgICAgICAgIGludGVyZmFjZS0+c2V0TGF5ZXJIb3N0aW5nQ29udGV4
dChudWxscHRyKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoc3Ryb25nVGhpcy0+bV9wYWdlKQot
ICAgICAgICAgICAgc3Ryb25nVGhpcy0+bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkNsZWFudXBGdWxsc2NyZWVuKGNvbnRleHRJZCksIHN0cm9u
Z1RoaXMtPm1fcGFnZS0+cGFnZUlEKCkpOworICAgIAorICAgIG1vZGVsLT5wcmVwYXJlRm9ySW5s
aW5lKFtzdHJvbmdUaGlzLCB0aGlzLCBjb250ZXh0SWQsIGludGVyZmFjZSwgbW9kZWxdIHsKKyAg
ICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3N0cm9uZ1Ro
aXMsIHRoaXMsIGNvbnRleHRJZCwgaW50ZXJmYWNlLCBtb2RlbF0geworICAgICAgICAgICAgbW9k
ZWwtPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKG5pbCwgW3N0cm9uZ1RoaXMsIHRoaXMsIGNvbnRl
eHRJZCwgaW50ZXJmYWNlXSB7CisgICAgICAgICAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0
Y2hfZ2V0X21haW5fcXVldWUoKSwgW3N0cm9uZ1RoaXMsIHRoaXMsIGNvbnRleHRJZCwgaW50ZXJm
YWNlXSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChpbnRlcmZhY2UtPmxheWVySG9zdGluZ0Nv
bnRleHQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJmYWNlLT5sYXllckhvc3Rp
bmdDb250ZXh0KCktPnNldFJvb3RMYXllcihudWxscHRyKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGludGVyZmFjZS0+c2V0TGF5ZXJIb3N0aW5nQ29udGV4dChudWxscHRyKTsKKyAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoc3Ryb25nVGhpcy0+bV9wYWdl
KQorICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb25nVGhpcy0+bV9wYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkNsZWFudXBGdWxsc2NyZWVuKGNv
bnRleHRJZCksIHN0cm9uZ1RoaXMtPm1fcGFnZS0+cGFnZUlEKCkpOworICAgICAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOwogICAgIH0pOwogfQogICAgIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>279988</attachid>
            <date>2016-05-27 13:45:38 -0700</date>
            <delta_ts>2016-05-27 13:49:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158148-20160527134649.patch</filename>
            <type>text/plain</type>
            <size>44631</size>
            <attacher name="Jeremy Jones">jeremyj-wk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxNDU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzQ1ZGRkZGVhYzk0MmE2
YTBkZDY5ODBjZDY0ODI5OTRhYmUyNDIxMy4uYTFjZTU0MTIzOTNhZjYzNTRlZGQzYWRmNGUwNmIx
NTNmNTRlYWE4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDE2LTA1LTI3ICBKZXJl
bXkgSm9uZXMgIDxqZXJlbXlqQGFwcGxlLmNvbT4KKworICAgICAgICBEZWNyZWFzZSBmbGlja2Vy
IHdoZW4gY2hhbmdpbmcgdmlkZW8gcHJlc2VudGF0aW9uIG1vZGUuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTgxNDgKKyAgICAgICAgcmRhcjovL3By
b2JsZW0vMjQ0NzY5NDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGVyZSBpcyBubyBiZWhhdmlvciBjaGFuZ2Uu
IFRoaXMgY2hhbmdlIGlzIGFib3V0IHRoZSB0aW1pbmcgb2YKKyAgICAgICAgbW92aW5nIEFWUGxh
eWVyTGF5ZXJzIGJldHdlZW4gbGF5ZXJzIHRvIHByZXZlbnQgZmxpY2tlci4KKworICAgICAgICAx
KSBNb3ZpbmcgYW4gQVZQbGF5ZXJMYXllciBiZXR3ZWVuIENBQ29udGV4dHMgY2FuIGZsaWNrZXIu
IFNvIGFsd2F5cyBrZWVwIHR3bworICAgICAgICBBVlBsYXllckxheWVycyBhcm91bmQgYW5kIGFk
ZCBhbmQgcmVtb3ZlIHRoZW0gZnJvbSB0aGUgaW5saW5lIGFuZCBmdWxsc2NyZWVuIGNvbnRleHRz
LgorICAgICAgICAyKSBXYWl0IHRvIHNob3cgdGhlIGlubGluZSBwbGFjZWhvbGRlciB1bnRpbCB0
aGUgZnVsbHNjcmVlbiB2aWRlbyBsYXllciBoYXMgYmVlbiBpbnN0YWxsZWQuCisgICAgICAgIDMp
IFdhaXQgdG8gcmVtb3ZlIHRoZSBmdWxsc2NyZWVuIHZpZGVvIGxheWVyIHVudGlsIHRoZSBwbGFj
ZWhvbGRlciBoYXMgYmVlbiByZW1vdmVkLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYWNvbnRy
b2xzL01lZGlhQ29udHJvbHNIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJv
bHNIb3N0Ojppc1ZpZGVvTGF5ZXJJbmxpbmUpOiBFeHBvc2UgaXNWaWRlb0xheWVySW5saW5lIHRv
IHRoZSBzaGFkb3cgRE9NLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sc0hvc3Q6OnNl
dFByZXBhcmVkRm9ySW5saW5lKTogRXhwb3NlIHNldFByZXBhcmVkRm9ySW5saW5lIHRvIHRoZSBz
aGFkb3cgRE9NLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xz
SG9zdC5oOiBBZGQgc2V0UHJlcGFyZWRGb3JJbmxpbmUgYW5kIGlzVmlkZW9MYXllcklubGluZQor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5pZGw6IEFk
ZCBzZXRQcmVwYXJlZEZvcklubGluZSBhbmQgaXNWaWRlb0xheWVySW5saW5lCisgICAgICAgICog
TW9kdWxlcy9tZWRpYWNvbnRyb2xzL21lZGlhQ29udHJvbHNBcHBsZS5qczoKKyAgICAgICAgKENv
bnRyb2xsZXIucHJvdG90eXBlLnNob3dJbmxpbmVQbGF5YmFja1BsYWNlaG9sZGVyV2hlblNhZmUp
OiBXYWl0IHRvIHNob3cgcGxhY2Vob2xkZXIgd2hlbiBlbnRlcmluZyBmdWxsc2NyZWVuLgorICAg
ICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUuaGFuZGxlUHJlc2VudGF0aW9uTW9kZUNoYW5nZSk6
IFdhaXQgdG8gc2hvdyBwbGFjZWhvbGRlciwgYW5kIG5vdGlmeSB3aGVuIHBsYWNlaG9sZGVyIGlz
IHJlbW92ZWQuCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNldFByZXBhcmVkRm9ySW5saW5lKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnByZXBhcmVGb3JJbmxpbmUpOiBVc2VkIHRv
IGRlbGF5IGZ1bGxzY3JlZW4gY2xlYW51cCB1bnRpbCBwbGFjZWhvbGRlciBpcyByZW1vdmVkLgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5
ZXIpOiBBZGQgYSBjYWxsYmFjayBzbyB3ZSBjYW4gd2FpdCB1bnRpbCB0aGlzIGNvbXBsZXRlcyBi
ZWZvcmUgY29udGludWluZy4KKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmlzVmlkZW9MYXllcklubGluZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwcmVwYXJlRm9ySW5saW5lKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVy
KTogQWRkIGNvbXBsZXRpb25IYW5kbGVyLgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1dlYlZp
ZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJW
aWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIp
OiBBZGQgY29tcGxldGlvbkhhbmRsZXIuCisgICAgICAgIChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6cHJlcGFyZUZvcklubGluZSk6IEFkZGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1t
OgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnNldFZpZGVv
RnVsbHNjcmVlbkxheWVyKTogQWRkIGNvbXBsZXRpb25IYW5kbGVyLgorICAgICAgICAoV2ViVmlk
ZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnByZXBhcmVGb3JJbmxpbmUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcik6IEFkZCBjb21wbGV0aW9uSGFu
ZGxlci4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKTogQWRkIGNv
bXBsZXRpb25IYW5kbGVyLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
UHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNl
OjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcik6IEFkZCBjb21wbGV0aW9uSGFuZGxlci4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUFW
UGxheWVyTGF5ZXIpOiBDcmVhdGUgdHdvIHZpZGVvIGxheWVycy4KKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmRlc3Ryb3lWaWRlb0xheWVyKTog
QWxsb3cgdHdvIHZpZGVvIGxheWVycy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKTogQWRkIGNvbXBs
ZXRpb25IYW5kbGVyLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6dXBkYXRlVmlkZW9MYXllckdyYXZpdHkpOiBBbGxvdyB0d28gdmlkZW8gbGF5
ZXJzLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQzo6YWRkRGlzcGxheUxheWVyKTogQWxsb3cgdHdvIHZpZGVvIGxheWVycy4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0Vmlk
ZW9GdWxsc2NyZWVuTGF5ZXIpOiBBZGQgY29tcGxldGlvbkhhbmRsZXIuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpjcmVhdGVQcmV2
aWV3TGF5ZXJzKTogQWxsb3cgdHdvIHZpZGVvIGxheWVycy4KKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5
ZXIpOiBBZGQgY29tcGxldGlvbkhhbmRsZXIuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9GdWxsc2NyZWVuTGF5
ZXJNYW5hZ2VyLm1tOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5h
Z2VyOjpzZXRWaWRlb0xheWVycyk6IEFsbG93IHR3byB2aWRlbyBsYXllcnMuCisgICAgICAgIChX
ZWJDb3JlOjpWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXI6OnNldFZpZGVvRnVsbHNjcmVlbkxh
eWVyKTogQWRkIGNvbXBsZXRpb25IYW5kbGVyLgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GdWxs
c2NyZWVuTGF5ZXJNYW5hZ2VyOjpzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZSk6IEFsbG93IHR3byB2
aWRlbyBsYXllcnMuCisgICAgICAgIChXZWJDb3JlOjpWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFn
ZXI6OmRpZERlc3Ryb3lWaWRlb0xheWVyKTogQWxsb3cgdHdvIHZpZGVvIGxheWVycy4KKyAgICAg
ICAgKFdlYkNvcmU6OlZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcjo6c2V0VmlkZW9MYXllcik6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXJBVktpdC5tbToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250
ZXh0OjpkaWRTZXR1cEZ1bGxzY3JlZW4pOiBVc2UgY29tcGxldGlvbkhhbmRsZXIuIAorICAgICAg
ICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmRpZEV4aXRGdWxsc2NyZWVu
KTogVXNlIGNvbXBsZXRpb25IYW5kbGVyLgorCiAyMDE2LTA1LTI3ICBBZGFtIEJlcmdrdmlzdCAg
PGFkYW0uYmVyZ2t2aXN0QGVyaWNzc29uLmNvbT4KIAogICAgICAgICBXZWJSVEM6IFVwZGF0ZSBS
VENQZWVyQ29ubmVjdGlvbiBvdmVybG9hZGVkIGxlZ2FjeSBvcGVyYXRpb25zIHRvIHJldHVybiBh
IFByb21pc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwppbmRleCA5MTFkMTEzNDc0MDMzM2FiMjZhNzhkM2EwODY4NDYyNGU5
MWYyNjNlLi45MjNhNTlmYmJjMmU1MTIyMWM5YzM3ODA5MmM1NzNlNGQyMjZhNmJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTYtMDUtMjcgIEplcmVteSBKb25lcyAgPGplcmVteWpA
YXBwbGUuY29tPgorCisgICAgICAgIERlY3JlYXNlIGZsaWNrZXIgd2hlbiBjaGFuZ2luZyB2aWRl
byBwcmVzZW50YXRpb24gbW9kZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1ODE0OAorICAgICAgICByZGFyOi8vcHJvYmxlbS8yNDQ3Njk0OQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFByZXZlbnQgZmxp
Y2tlciBieSB1c2luZyBzZXRWaWRlb0Z1bGxzY3JlZW5MYXllciB3aXRoIGEgY29tcGxldGlvbiBo
YW5kbGVyIHRvIGRlbGF5IAorICAgICAgICBlbnRlciBmdWxsc2NyZWVuIGFuZCBjbGVhbnVwIGZ1
bGxzY3JlZW4gdW50aWwgdGhlIHZpZGVvIGxheWVyIGhhcyBjb21wbGV0ZWx5IGJlZW4KKyAgICAg
ICAgaW5zdGFsbGVkIG9yIHJlbW92ZWQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXI6OmRpZFNldHVwRnVsbHNjcmVlbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZEV4aXRGdWxsc2NyZWVuKToKKwogMjAxNi0wNS0y
NyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAg
IEV4cG9zZSBjb250ZW50IGV4dGVuc2lvbiBmYWlsdXJlIGVycm9yIGNvZGVzIGluIFNQSQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJv
bHNIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNv
bnRyb2xzSG9zdC5jcHAKaW5kZXggOTExMjIzMDY0Yjk3ODBkM2E0YjEyZjE3YjAyODBiMTk5YTM5
OGQ5My4uMGU2OWRmOTExZTBiYzUwMTQ5YWNiNzM5NjFkOWJhNjFhNjYwYmUyNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250
cm9sc0hvc3QuY3BwCkBAIC0yMTAsNiArMjEwLDE2IEBAIGJvb2wgTWVkaWFDb250cm9sc0hvc3Q6
OnN1cHBvcnRzRnVsbHNjcmVlbigpCiAgICAgcmV0dXJuIG1fbWVkaWFFbGVtZW50LT5zdXBwb3J0
c0Z1bGxzY3JlZW4oSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlU3Rh
bmRhcmQpOwogfQogCitib29sIE1lZGlhQ29udHJvbHNIb3N0Ojppc1ZpZGVvTGF5ZXJJbmxpbmUo
KQoreworICAgIHJldHVybiBtX21lZGlhRWxlbWVudC0+aXNWaWRlb0xheWVySW5saW5lKCk7Cit9
CisKK3ZvaWQgTWVkaWFDb250cm9sc0hvc3Q6OnNldFByZXBhcmVkRm9ySW5saW5lKGJvb2wgdmFs
dWUpCit7CisgICAgbV9tZWRpYUVsZW1lbnQtPnNldFByZXBhcmVkRm9ySW5saW5lKHZhbHVlKTsK
K30KKwogYm9vbCBNZWRpYUNvbnRyb2xzSG9zdDo6dXNlckdlc3R1cmVSZXF1aXJlZCgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuICFtX21lZGlhRWxlbWVudC0+bWVkaWFTZXNzaW9uKCkucGxheWJhY2tQ
ZXJtaXR0ZWQoKm1fbWVkaWFFbGVtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmgKaW5kZXggNGJhM2NhMzlj
YTk2M2JlYTMyMTZlY2EwMzA2NGQyYzA2ZTIwMDY3ZS4uY2YwOTc1YzM1MTY4YjJhNWNhNTY1MzY1
YTJhZGQ4YTk5ODRhN2M2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmgKQEAgLTY0LDcgKzY0LDkgQEAgcHVi
bGljOgogICAgIHZvaWQgdXBkYXRlVGV4dFRyYWNrQ29udGFpbmVyKCk7CiAgICAgYm9vbCBhbGxv
d3NJbmxpbmVNZWRpYVBsYXliYWNrKCkgY29uc3Q7CiAgICAgYm9vbCBzdXBwb3J0c0Z1bGxzY3Jl
ZW4oKTsKKyAgICBib29sIGlzVmlkZW9MYXllcklubGluZSgpOwogICAgIGJvb2wgdXNlckdlc3R1
cmVSZXF1aXJlZCgpIGNvbnN0OworICAgIHZvaWQgc2V0UHJlcGFyZWRGb3JJbmxpbmUoYm9vbCk7
CiAKICAgICB2b2lkIHVwZGF0ZUNhcHRpb25EaXNwbGF5U2l6ZXMoKTsKICAgICB2b2lkIGVudGVy
ZWRGdWxsc2NyZWVuKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
Y29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmlkbAppbmRleCA3YjA3MDZkOTVjNmZjYzll
Y2QzMjQxMzBlMzFjZDdiZTZjZWJmMjQzLi4wMDEzNDM1MDY1NjUwM2NkYTc2MmRjMDIzYzYyOTIz
MDhjYmIxY2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJv
bHMvTWVkaWFDb250cm9sc0hvc3QuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5pZGwKQEAgLTQyLDkgKzQyLDExIEBAIGVudW0g
RGV2aWNlVHlwZSB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFRleHRUcmFjayBjYXB0aW9uTWVu
dUF1dG9tYXRpY0l0ZW07CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBjYXB0aW9u
RGlzcGxheU1vZGU7CiAgICAgdm9pZCBzZXRTZWxlY3RlZFRleHRUcmFjayhUZXh0VHJhY2s/IHRy
YWNrKTsKKyAgICB2b2lkIHNldFByZXBhcmVkRm9ySW5saW5lKGJvb2xlYW4gcHJlcGFyZWQpOwog
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBIVE1MRWxlbWVudCB0ZXh0VHJhY2tDb250YWluZXI7CiAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gYWxsb3dzSW5saW5lTWVkaWFQbGF5YmFjazsK
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBzdXBwb3J0c0Z1bGxzY3JlZW47CisgICAg
cmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gaXNWaWRlb0xheWVySW5saW5lOwogICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBib29sZWFuIHVzZXJHZXN0dXJlUmVxdWlyZWQ7CiAKICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGV4dGVybmFsRGV2aWNlRGlzcGxheU5hbWU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvbWVkaWFDb250cm9sc0Fw
cGxlLmpzIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL21lZGlhQ29udHJv
bHNBcHBsZS5qcwppbmRleCA4Mjg1ZTg2MDhlZmFiMWUzNDU5YzcyM2JiZWZlMTM3MjhjMDc5YTAx
Li4yOWVkYTA5MTUxYzU2MzI0YmQ5OWMzNWZhNjRjODVkNjkxOTkyZTdhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvbWVkaWFDb250cm9sc0FwcGxlLmpz
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9tZWRpYUNvbnRyb2xz
QXBwbGUuanMKQEAgLTgzNyw2ICs4MzcsMTYgQEAgQ29udHJvbGxlci5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICB0aGlzLmNvbnRyb2xzLnBpY3R1cmVJblBpY3R1cmVCdXR0b24uY2xhc3NMaXN0
LmFkZCh0aGlzLkNsYXNzTmFtZXMuaGlkZGVuKTsKICAgICB9LAogCisgICAgc2hvd0lubGluZVBs
YXliYWNrUGxhY2Vob2xkZXJXaGVuU2FmZTogZnVuY3Rpb24oKSB7CisgICAgICAgIGlmICh0aGlz
LnByZXNlbnRhdGlvbk1vZGUoKSAhPSAncGljdHVyZS1pbi1waWN0dXJlJykKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBpZiAoIXRoaXMuaG9zdC5pc1ZpZGVvTGF5ZXJJbmxpbmUpCisg
ICAgICAgICAgICB0aGlzLmNvbnRyb2xzLmlubGluZVBsYXliYWNrUGxhY2Vob2xkZXIuY2xhc3NM
aXN0LnJlbW92ZSh0aGlzLkNsYXNzTmFtZXMuaGlkZGVuKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgc2V0VGltZW91dCh0aGlzLnNob3dJbmxpbmVQbGF5YmFja1BsYWNlaG9sZGVyV2hlblNh
ZmUuYmluZCh0aGlzKSwgMzMpOworICAgIH0sCisKICAgICBoYW5kbGVQcmVzZW50YXRpb25Nb2Rl
Q2hhbmdlOiBmdW5jdGlvbihldmVudCkKICAgICB7CiAgICAgICAgIHZhciBwcmVzZW50YXRpb25N
b2RlID0gdGhpcy5wcmVzZW50YXRpb25Nb2RlKCk7CkBAIC04NTQsNyArODY0LDcgQEAgQ29udHJv
bGxlci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBjYXNlICdwaWN0dXJlLWluLXBpY3R1cmUn
OgogICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbHMucGFuZWwuY2xhc3NMaXN0LmFkZCh0aGlz
LkNsYXNzTmFtZXMucGljdHVyZUluUGljdHVyZSk7CiAgICAgICAgICAgICAgICAgdGhpcy5jb250
cm9scy5pbmxpbmVQbGF5YmFja1BsYWNlaG9sZGVyLmNsYXNzTGlzdC5hZGQodGhpcy5DbGFzc05h
bWVzLnBpY3R1cmVJblBpY3R1cmUpOwotICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbHMuaW5s
aW5lUGxheWJhY2tQbGFjZWhvbGRlci5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuQ2xhc3NOYW1lcy5o
aWRkZW4pOworICAgICAgICAgICAgICAgIHRoaXMuc2hvd0lubGluZVBsYXliYWNrUGxhY2Vob2xk
ZXJXaGVuU2FmZSgpOwogCiAgICAgICAgICAgICAgICAgdGhpcy5jb250cm9scy5pbmxpbmVQbGF5
YmFja1BsYWNlaG9sZGVyVGV4dFRvcC5pbm5lclRleHQgPSB0aGlzLlVJU3RyaW5nKCdUaGlzIHZp
ZGVvIGlzIHBsYXlpbmcgaW4gUGljdHVyZSBpbiBQaWN0dXJlJyk7CiAgICAgICAgICAgICAgICAg
dGhpcy5jb250cm9scy5pbmxpbmVQbGF5YmFja1BsYWNlaG9sZGVyVGV4dFRvcC5jbGFzc0xpc3Qu
YWRkKHRoaXMuQ2xhc3NOYW1lcy5waWN0dXJlSW5QaWN0dXJlKTsKQEAgLTg4Myw2ICs4OTMsNyBA
QCBDb250cm9sbGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5yZXNldEhpZGVDb250cm9s
c1RpbWVyKCk7CiAgICAgICAgIGlmIChwcmVzZW50YXRpb25Nb2RlICE9ICdmdWxsc2NyZWVuJyAm
JiB0aGlzLnZpZGVvLnBhdXNlZCAmJiB0aGlzLmNvbnRyb2xzQXJlSGlkZGVuKCkpCiAgICAgICAg
ICAgICB0aGlzLnNob3dDb250cm9scygpOworICAgICAgICB0aGlzLmhvc3Quc2V0UHJlcGFyZWRG
b3JJbmxpbmUocHJlc2VudGF0aW9uTW9kZSA9PT0gJ2lubGluZScpCiAgICAgfSwKIAogICAgIGhh
bmRsZUZ1bGxzY3JlZW5DaGFuZ2U6IGZ1bmN0aW9uKGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggZDdmZDI4NTA1NjA1Y2EzZWQ5YTRhNjJlNTU5NTJk
ZGE1ODFjNjUwMC4uY2VkM2EyMWRmZDI5NDNhNmRhZjUzNmFhNTMzMjg4YThmZThiOWQ2MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC01NDcxLDE1ICs1NDcx
LDQyIEBAIFBsYXRmb3JtTGF5ZXIqIEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXRmb3JtTGF5ZXIoKSBj
b25zdAogICAgIHJldHVybiBtX3BsYXllciA/IG1fcGxheWVyLT5wbGF0Zm9ybUxheWVyKCkgOiBu
dWxscHRyOwogfQogCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFByZXBhcmVkRm9ySW5saW5l
KGJvb2wgdmFsdWUpCit7CisgICAgbV9wcmVwYXJlZEZvcklubGluZSA9IHZhbHVlOworICAgIGlm
IChtX3ByZXBhcmVkRm9ySW5saW5lICYmIG1fcHJlcGFyZWRGb3JJbmxpbmVDb21wbGV0aW9uSGFu
ZGxlcikgeworICAgICAgICBtX3ByZXBhcmVkRm9ySW5saW5lQ29tcGxldGlvbkhhbmRsZXIoKTsK
KyAgICAgICAgbV9wcmVwYXJlZEZvcklubGluZUNvbXBsZXRpb25IYW5kbGVyID0gbnVsbHB0cjsK
KyAgICB9Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cHJlcGFyZUZvcklubGluZShzdGQ6
OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUKCFtX3By
ZXBhcmVkRm9ySW5saW5lQ29tcGxldGlvbkhhbmRsZXIpOworICAgIGlmIChtX3ByZXBhcmVkRm9y
SW5saW5lKSAgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIAorICAgIG1fcHJlcGFyZWRGb3JJbmxpbmVDb21wbGV0aW9uSGFuZGxlciA9
IGNvbXBsZXRpb25IYW5kbGVyOworfQorCiAjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0o
TUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQogCi12b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3Jt
TGF5ZXIpCitib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmlzVmlkZW9MYXllcklubGluZSgpCit7Cisg
ICAgcmV0dXJuIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXIgPT0gbmlsOworfTsKKyAgICAKK3ZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciog
cGxhdGZvcm1MYXllciwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXIgPSBwbGF0Zm9ybUxheWVyOwotICAgIGlmICgh
bV9wbGF5ZXIpCisgICAgaWYgKCFtX3BsYXllcikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cigpOwogICAgICAgICByZXR1cm47CisgICAgfQogICAgIAotICAgIG1fcGxheWVyLT5zZXRWaWRl
b0Z1bGxzY3JlZW5MYXllcihwbGF0Zm9ybUxheWVyKTsKKyAgICBtX3BsYXllci0+c2V0VmlkZW9G
dWxsc2NyZWVuTGF5ZXIocGxhdGZvcm1MYXllciwgY29tcGxldGlvbkhhbmRsZXIpOwogICAgIHNl
dE5lZWRzU3R5bGVSZWNhbGMoU3ludGhldGljU3R5bGVDaGFuZ2UpOwogI2lmIEVOQUJMRShWSURF
T19UUkFDSykKICAgICB1cGRhdGVUZXh0VHJhY2tEaXNwbGF5KCk7CkBAIC01NDk5LDYgKzU1MjYs
MTMgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRWaWRlb0Z1bGxzY3JlZW5HcmF2aXR5KE1l
ZGlhUGxheWVyOjpWaWRlb0dyYXZpdHkgZ3JhdmkKICAgICBpZiAobV9wbGF5ZXIpCiAgICAgICAg
IG1fcGxheWVyLT5zZXRWaWRlb0Z1bGxzY3JlZW5HcmF2aXR5KGdyYXZpdHkpOwogfQorICAgIAor
I2Vsc2UKKyAgICAKK2Jvb2wgSFRNTE1lZGlhRWxlbWVudDo6aXNWaWRlb0xheWVySW5saW5lKCkK
K3sKKyAgICByZXR1cm4gdHJ1ZTsKK307CiAKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5oCmluZGV4IDNiZTIxY2YyMGFmOThiMGRjNzA2YTI2NjhkNGQ1M2JhY2I4
NWRjMDEuLjBjYjg3NDg5YjdiZmRhNzAzNmNkY2M0ZTY1NjVhMDg1Y2UzOGJhMmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC0xMzMsOCArMTMzLDExIEBAIHB1Ymxp
YzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIFBsYXRmb3JtTWVkaWEgcGxhdGZvcm1NZWRpYSgpIGNv
bnN0OwogICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdDsKKyAgICBib29s
IGlzVmlkZW9MYXllcklubGluZSgpOworICAgIHZvaWQgc2V0UHJlcGFyZWRGb3JJbmxpbmUoYm9v
bCk7CisgICAgdm9pZCBwcmVwYXJlRm9ySW5saW5lKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBjb21w
bGV0aW9uSGFuZGxlciA9IFtdIHsgfSk7CiAjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0o
TUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQotICAgIHZvaWQgc2V0Vmlk
ZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciopOworICAgIHZvaWQgc2V0VmlkZW9GdWxs
c2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciosIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBjb21wbGV0
aW9uSGFuZGxlciA9IFtdIHsgfSk7CiAgICAgUGxhdGZvcm1MYXllciogdmlkZW9GdWxsc2NyZWVu
TGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyLmdldCgpOyB9CiAg
ICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3QpOwogICAgIHZvaWQgc2V0
VmlkZW9GdWxsc2NyZWVuR3Jhdml0eShNZWRpYVBsYXllckVudW1zOjpWaWRlb0dyYXZpdHkpOwpA
QCAtODQ3LDYgKzg1MCw4IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPE5vZGU+IG1fbmV4dENoaWxk
Tm9kZVRvQ29uc2lkZXI7CiAKICAgICBWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1fdmlkZW9GdWxsc2Ny
ZWVuTW9kZTsKKyAgICBib29sIG1fcHJlcGFyZWRGb3JJbmxpbmU7CisgICAgc3RkOjpmdW5jdGlv
bjx2b2lkKCk+IG1fcHJlcGFyZWRGb3JJbmxpbmVDb21wbGV0aW9uSGFuZGxlcjsKICNpZiBQTEFU
Rk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05f
TU9ERSkpCiAgICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IG1fdmlkZW9GdWxsc2NyZWVuTGF5
ZXI7CiAgICAgRmxvYXRSZWN0IG1fdmlkZW9GdWxsc2NyZWVuRnJhbWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVv
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViVmlkZW9GdWxsc2Ny
ZWVuTW9kZWxWaWRlb0VsZW1lbnQuaAppbmRleCBmNzc4MjIxZDU0NDIyZTE0OTFjY2FjODE2OTI3
YzE0NGI2MGQ4YWI3Li5iMjgwOWMwYzAxMDdkZGZkNjMxZWYwMzlhZTE0NzFlMzQ2NTFlNDk5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbFZpZGVvRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50LmgKQEAgLTM0LDYgKzM0LDcgQEAK
ICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50RW51bXMuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUxh
eWVyLmgiCiAjaW5jbHVkZSAiV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwuaCIKKyNpbmNsdWRlIDxm
dW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNTUsNyArNTYsOCBAQCBwdWJsaWM6
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2Uo
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlKik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRWaWRlb0VsZW1lbnQoSFRNTFZpZGVvRWxlbWVudCopOwogICAgIFdFQkNPUkVfRVhQT1JUIEhU
TUxWaWRlb0VsZW1lbnQqIHZpZGVvRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fdmlkZW9FbGVt
ZW50LmdldCgpOyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5M
YXllcihQbGF0Zm9ybUxheWVyKik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaWRlb0Z1
bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNvbXBs
ZXRpb25IYW5kbGVyID0gW10geyB9KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHByZXBhcmVG
b3JJbmxpbmUoc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRpb25IYW5kbGVyID0gW10geyB9
KTsKICAgICBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudCYgcGxheWJhY2tTZXNz
aW9uTW9kZWwoKSB7IHJldHVybiBtX3BsYXliYWNrU2Vzc2lvbk1vZGVsOyB9CiAgICAgCiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBoYW5kbGVFdmVudChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgV2ViQ29yZTo6RXZlbnQqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTW9k
ZWxWaWRlb0VsZW1lbnQubW0KaW5kZXggZDgwZGUxMzBlNzZjNjgyNDgzOTI3NTliNjFiZDI2OWU2
YzI5NzgzMS4uMzhlZjIxNjU0ZDAzN2I5M2QyNDQwNmU3NTZmZDA0NzAwZmM3OThlYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTW9k
ZWxWaWRlb0VsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2Vi
VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW0KQEAgLTEyMCwxMCArMTIwLDEyIEBA
IHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnVwZGF0ZUZvckV2ZW50
TmFtZShjb25zdCBXVEY6OkF0b21pY1N0CiAgICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlLT5zZXRWaWRlb0RpbWVuc2lvbnModHJ1ZSwgbV92aWRlb0VsZW1lbnQtPnZpZGVvV2lkdGgo
KSwgbV92aWRlb0VsZW1lbnQtPnZpZGVvSGVpZ2h0KCkpOwogfQogCi12b2lkIFdlYlZpZGVvRnVs
bHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9y
bUxheWVyKiB2aWRlb0xheWVyKQordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxl
bWVudDo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciogdmlkZW9MYXllciwg
c3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmIChtX3Zp
ZGVvRnVsbHNjcmVlbkxheWVyID09IHZpZGVvTGF5ZXIpCisgICAgaWYgKG1fdmlkZW9GdWxsc2Ny
ZWVuTGF5ZXIgPT0gdmlkZW9MYXllcikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwog
ICAgICAgICByZXR1cm47CisgICAgfQogICAgIAogICAgIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXIg
PSB2aWRlb0xheWVyOwogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTEzMyw4ICsxMzUsMjIgQEAgdm9p
ZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6c2V0VmlkZW9GdWxsc2NyZWVu
TGF5ZXIoUGxhdGZvcm1MYXllcioKICNlbmRpZgogICAgIFttX3ZpZGVvRnVsbHNjcmVlbkxheWVy
IHNldEJvdW5kczptX3ZpZGVvRnJhbWVdOwogICAgIAotICAgIGlmIChtX3ZpZGVvRWxlbWVudCkK
LSAgICAgICAgbV92aWRlb0VsZW1lbnQtPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKG1fdmlkZW9G
dWxsc2NyZWVuTGF5ZXIuZ2V0KCkpOworICAgIGlmICghbV92aWRlb0VsZW1lbnQpIHsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1f
dmlkZW9FbGVtZW50LT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihtX3ZpZGVvRnVsbHNjcmVlbkxh
eWVyLmdldCgpLCBjb21wbGV0aW9uSGFuZGxlcik7Cit9CisKK3ZvaWQgV2ViVmlkZW9GdWxsc2Ny
ZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnByZXBhcmVGb3JJbmxpbmUoc3RkOjpmdW5jdGlvbjx2b2lk
KCk+IGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmICghbV92aWRlb0VsZW1lbnQpIHsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IG1fdmlkZW9FbGVtZW50LT5wcmVwYXJlRm9ySW5saW5lKGNvbXBsZXRpb25IYW5kbGVyKTsKIH0K
IAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6cmVxdWVzdEZ1bGxz
Y3JlZW5Nb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2Rl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3Bw
CmluZGV4IDFiODFkNGRmOGEyZjA0NTVhNWUyY2NhNmJjMzZjNzVmMTdiNmI2NzcuLjk5MDczOGU3
ODc0NGUyMDFjMmRkYmE5MTY5ZTAxMDE3MjU5ZTE4YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTY2MCw5ICs2NjAsOSBAQCBQ
bGF0Zm9ybUxheWVyKiBNZWRpYVBsYXllcjo6cGxhdGZvcm1MYXllcigpIGNvbnN0CiB9CiAgICAg
CiAjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJF
U0VOVEFUSU9OX01PREUpKQotdm9pZCBNZWRpYVBsYXllcjo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5
ZXIoUGxhdGZvcm1MYXllciogbGF5ZXIpCit2b2lkIE1lZGlhUGxheWVyOjpzZXRWaWRlb0Z1bGxz
Y3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiBsYXllciwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNv
bXBsZXRpb25IYW5kbGVyKQogewotICAgIG1fcHJpdmF0ZS0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5
ZXIobGF5ZXIpOworICAgIG1fcHJpdmF0ZS0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIobGF5ZXIs
IGNvbXBsZXRpb25IYW5kbGVyKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllcjo6c2V0VmlkZW9GdWxs
c2NyZWVuRnJhbWUoRmxvYXRSZWN0IGZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmgKaW5kZXggOTMwNTAxNzEwZTNhOWIxY2U2ODRjMzMwNDdj
MjE1MmVjZTFjYTk3OC4uMjE0NjdmYzY3MjU4NzY3NmNiMWU0NWVkZjIyOTMxNGUyOWE0NGVmMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBA
IC0zMDgsNyArMzA4LDcgQEAgcHVibGljOgogICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5
ZXIoKSBjb25zdDsKIAogI2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5B
QkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKLSAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVl
bkxheWVyKFBsYXRmb3JtTGF5ZXIqKTsKKyAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVy
KFBsYXRmb3JtTGF5ZXIqLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkhhbmRsZXIg
PSBbXSB7IH0pOwogICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0KTsK
ICAgICB1c2luZyBNZWRpYVBsYXllckVudW1zOjpWaWRlb0dyYXZpdHk7CiAgICAgdm9pZCBzZXRW
aWRlb0Z1bGxzY3JlZW5HcmF2aXR5KFZpZGVvR3Jhdml0eSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCmluZGV4IDg5YzBj
MTllZGFjYzc2ZWY3YmZjOWNiNmU3YTBiODYyNjg3MDZmYjAuLjEzN2NlZmIzOWFkNTM3MzdmNGEx
NGFlNjMyOTc5YjM1ODY3ZWQ5OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCkBAIC01OSw3ICs1OSw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCB7IHJl
dHVybiAwOyB9CiAKICNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJM
RShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCi0gICAgdmlydHVhbCB2b2lkIHNldFZpZGVvRnVs
bHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0Vmlk
ZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciosIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBj
b21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcigpOyB9CiAgICAgdmlydHVhbCB2
b2lkIHNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCkgeyB9CiAgICAgdmlydHVhbCB2
b2lkIHNldFZpZGVvRnVsbHNjcmVlbkdyYXZpdHkoTWVkaWFQbGF5ZXI6OlZpZGVvR3Jhdml0eSkg
eyB9CiAgICAgdmlydHVhbCB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbk1vZGUoTWVkaWFQbGF5ZXI6
OlZpZGVvRnVsbHNjcmVlbk1vZGUpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCmluZGV4IDVhZDVk
MDhjMTIwNDgxN2RkNzNjYWRmMTI2MDM1NGRjZTI3M2RkMGUuLjRmNTNjN2M0YjZlM2RiYTkwY2U5
MjIxMTkwZGZiY2NmNzAxMjg5MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKQEAgLTE3Miw3ICsx
NzIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAgICAgUGxhdGZvcm1M
YXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IG92ZXJyaWRlOwogI2lmIFBMQVRGT1JNKElPUykg
fHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKLSAg
ICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqKSBvdmVycmlkZTsK
KyAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBzdGQ6OmZ1
bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0
VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0KSBvdmVycmlkZTsKICAgICB2b2lkIHNldFZp
ZGVvRnVsbHNjcmVlbkdyYXZpdHkoTWVkaWFQbGF5ZXI6OlZpZGVvR3Jhdml0eSkgb3ZlcnJpZGU7
CiAgICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5Nb2RlKE1lZGlhUGxheWVyOjpWaWRlb0Z1bGxz
Y3JlZW5Nb2RlKSBvdmVycmlkZTsKQEAgLTMyOSw2ICszMjksNyBAQCBwcml2YXRlOgogICAgIFJl
dGFpblB0cjxBVlBsYXllcj4gbV9hdlBsYXllcjsKICAgICBSZXRhaW5QdHI8QVZQbGF5ZXJJdGVt
PiBtX2F2UGxheWVySXRlbTsKICAgICBSZXRhaW5QdHI8QVZQbGF5ZXJMYXllcj4gbV92aWRlb0xh
eWVyOworICAgIFJldGFpblB0cjxBVlBsYXllckxheWVyPiBtX3NlY29uZGFyeVZpZGVvTGF5ZXI7
CiAjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJF
U0VOVEFUSU9OX01PREUpKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0Z1bGxzY3JlZW5MYXll
ck1hbmFnZXI+IG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyOwogICAgIE1lZGlhUGxheWVy
OjpWaWRlb0dyYXZpdHkgbV92aWRlb0Z1bGxzY3JlZW5HcmF2aXR5OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMubW0KaW5kZXggN2NiMDI2NmEzZGM3ZGFmOGNkYjkxMDdkZTBkYzNjMzU4NjlhM2JjZi4uMDcz
ZjFiODVlYjllYjMwOWI4M2FmNzZlYzFjNjI2ZmJkNzZhOGZhYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLm1tCkBAIC03MzAsMTcgKzczMCwyNCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OmNyZWF0ZUFWUGxheWVyTGF5ZXIoKQogICAgIG1fdmlkZW9MYXllciA9IGFk
b3B0TlMoW2FsbG9jQVZQbGF5ZXJMYXllckluc3RhbmNlKCkgaW5pdF0pOwogICAgIFttX3ZpZGVv
TGF5ZXIgc2V0UGxheWVyOm1fYXZQbGF5ZXIuZ2V0KCldOwogICAgIFttX3ZpZGVvTGF5ZXIgc2V0
QmFja2dyb3VuZENvbG9yOmNhY2hlZENHQ29sb3IoQ29sb3I6OmJsYWNrKV07CisKKyAgICBtX3Nl
Y29uZGFyeVZpZGVvTGF5ZXIgPSBhZG9wdE5TKFthbGxvY0FWUGxheWVyTGF5ZXJJbnN0YW5jZSgp
IGluaXRdKTsKKyAgICBbbV9zZWNvbmRhcnlWaWRlb0xheWVyIHNldFBsYXllcjptX2F2UGxheWVy
LmdldCgpXTsKKyAgICBbbV9zZWNvbmRhcnlWaWRlb0xheWVyIHNldEJhY2tncm91bmRDb2xvcjpj
YWNoZWRDR0NvbG9yKENvbG9yOjpibGFjayldOworCiAjaWZuZGVmIE5ERUJVRwogICAgIFttX3Zp
ZGVvTGF5ZXIgc2V0TmFtZTpAIk1lZGlhUGxheWVyUHJpdmF0ZSBBVlBsYXllckxheWVyIl07Cisg
ICAgW21fc2Vjb25kYXJ5VmlkZW9MYXllciBzZXROYW1lOkAiTWVkaWFQbGF5ZXJQcml2YXRlIEFW
UGxheWVyTGF5ZXIgc2Vjb25kYXJ5Il07CiAjZW5kaWYKICAgICBbbV92aWRlb0xheWVyIGFkZE9i
c2VydmVyOm1fb2JqY09ic2VydmVyLmdldCgpIGZvcktleVBhdGg6QCJyZWFkeUZvckRpc3BsYXki
IG9wdGlvbnM6TlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbk5ldyBjb250ZXh0Oih2b2lkICopTWVk
aWFQbGF5ZXJBVkZvdW5kYXRpb25PYnNlcnZhdGlvbkNvbnRleHRBVlBsYXllckxheWVyXTsKICAg
ICB1cGRhdGVWaWRlb0xheWVyR3Jhdml0eSgpOwogICAgIFttX3ZpZGVvTGF5ZXIgc2V0Q29udGVu
dHNTY2FsZTpwbGF5ZXIoKS0+Y2xpZW50KCkubWVkaWFQbGF5ZXJDb250ZW50c1NjYWxlKCldOwor
ICAgIFttX3NlY29uZGFyeVZpZGVvTGF5ZXIgc2V0Q29udGVudHNTY2FsZTpwbGF5ZXIoKS0+Y2xp
ZW50KCkubWVkaWFQbGF5ZXJDb250ZW50c1NjYWxlKCldOwogICAgIEludFNpemUgZGVmYXVsdFNp
emUgPSBzbmFwcGVkSW50UmVjdChwbGF5ZXIoKS0+Y2xpZW50KCkubWVkaWFQbGF5ZXJDb250ZW50
Qm94UmVjdCgpKS5zaXplKCk7CiAgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6Y3JlYXRlVmlkZW9MYXllciglcCkgLSByZXR1cm5pbmcgJXAiLCB0aGlz
LCBtX3ZpZGVvTGF5ZXIuZ2V0KCkpOwogCiAjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0o
TUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQotICAgIG1fdmlkZW9GdWxs
c2NyZWVuTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0xheWVyKG1fdmlkZW9MYXllci5nZXQoKSwgZGVm
YXVsdFNpemUpOworICAgIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0xh
eWVycyhtX3ZpZGVvTGF5ZXIuZ2V0KCksIG1fc2Vjb25kYXJ5VmlkZW9MYXllci5nZXQoKSwgZGVm
YXVsdFNpemUpOwogCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIGlmIChbbV92aWRlb0xheWVyIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0UElQTW9kZUVuYWJsZWQ6KV0pCkBAIC03NDgs
NiArNzU1LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVh
dGVBVlBsYXllckxheWVyKCkKICNlbmRpZgogI2Vsc2UKICAgICBbbV92aWRlb0xheWVyIHNldEZy
YW1lOkNHUmVjdE1ha2UoMCwgMCwgZGVmYXVsdFNpemUud2lkdGgoKSwgZGVmYXVsdFNpemUuaGVp
Z2h0KCkpXTsKKyAgICBbbV9zZWNvbmRhcnlWaWRlb0xheWVyIHNldEZyYW1lOkNHUmVjdE1ha2Uo
MCwgMCwgZGVmYXVsdFNpemUud2lkdGgoKSwgZGVmYXVsdFNpemUuaGVpZ2h0KCkpXTsKICNlbmRp
ZgogfQogCkBAIC03NjAsMTIgKzc2OCwxNCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OmRlc3Ryb3lWaWRlb0xheWVyKCkKIAogICAgIFttX3ZpZGVvTGF5ZXIuZ2V0
KCkgcmVtb3ZlT2JzZXJ2ZXI6bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAInJlYWR5
Rm9yRGlzcGxheSJdOwogICAgIFttX3ZpZGVvTGF5ZXIuZ2V0KCkgc2V0UGxheWVyOm5pbF07Cisg
ICAgW21fc2Vjb25kYXJ5VmlkZW9MYXllci5nZXQoKSBzZXRQbGF5ZXI6bmlsXTsKIAogI2lmIFBM
QVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElP
Tl9NT0RFKSkKICAgICBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci0+ZGlkRGVzdHJveVZp
ZGVvTGF5ZXIoKTsKICNlbmRpZgogCiAgICAgbV92aWRlb0xheWVyID0gbmlsOworICAgIG1fc2Vj
b25kYXJ5VmlkZW9MYXllciA9IG5pbDsKIH0KIAogTWVkaWFUaW1lIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OmdldFN0YXJ0RGF0ZSgpIGNvbnN0CkBAIC0xMTgzLDEyICsxMTkz
LDE0IEBAIFBsYXRmb3JtTGF5ZXIqIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAogfQogCiAjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZP
Uk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQotdm9pZCBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0
Zm9ybUxheWVyKiB2aWRlb0Z1bGxzY3JlZW5MYXllcikKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciog
dmlkZW9GdWxsc2NyZWVuTGF5ZXIsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKLSAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXItPnZpZGVvRnVs
bHNjcmVlbkxheWVyKCkgPT0gdmlkZW9GdWxsc2NyZWVuTGF5ZXIpCisgICAgaWYgKG1fdmlkZW9G
dWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLT52aWRlb0Z1bGxzY3JlZW5MYXllcigpID09IHZpZGVvRnVs
bHNjcmVlbkxheWVyKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgIHJl
dHVybjsKKyAgICB9CiAKLSAgICBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci0+c2V0Vmlk
ZW9GdWxsc2NyZWVuTGF5ZXIodmlkZW9GdWxsc2NyZWVuTGF5ZXIpOworICAgIG1fdmlkZW9GdWxs
c2NyZWVuTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2aWRlb0Z1bGxzY3Jl
ZW5MYXllciwgY29tcGxldGlvbkhhbmRsZXIpOwogCiAgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVu
TGF5ZXJNYW5hZ2VyLT52aWRlb0Z1bGxzY3JlZW5MYXllcigpICYmIG1fdGV4dFRyYWNrUmVwcmVz
ZW50YXRpb25MYXllcikgewogICAgICAgICBzeW5jVGV4dFRyYWNrQm91bmRzKCk7CkBAIC0xODcy
LDYgKzE4ODQsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVw
ZGF0ZVZpZGVvTGF5ZXJHcmF2aXR5KCkKICAgICBbQ0FUcmFuc2FjdGlvbiBzZXREaXNhYmxlQWN0
aW9uczpZRVNdOyAgICAKICAgICBOU1N0cmluZyogZ3Jhdml0eSA9IHNob3VsZE1haW50YWluQXNw
ZWN0UmF0aW8oKSA/IEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3QgOiBBVkxheWVyVmlk
ZW9HcmF2aXR5UmVzaXplOwogICAgIFttX3ZpZGVvTGF5ZXIuZ2V0KCkgc2V0VmlkZW9HcmF2aXR5
OmdyYXZpdHldOworICAgIFttX3NlY29uZGFyeVZpZGVvTGF5ZXIuZ2V0KCkgc2V0VmlkZW9HcmF2
aXR5OmdyYXZpdHldOwogICAgIFtDQVRyYW5zYWN0aW9uIGNvbW1pdF07CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDLmgKaW5kZXggZDQ5ZTNiMzE3NWE4ZThkZTJmODdiOTQwMWVkM2E1ZjY4OGY5
Zjk5My4uZjcxZmU0ODU5YmEwY2Y0MjQ5ZjFiZjYwMTQyYzJkOTNhMWI1MGM2MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLmgKQEAgLTg3LDcgKzg3LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2hh
cmFjdGVyaXN0aWNzQ2hhbmdlZCgpOwogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklE
RU9fUFJFU0VOVEFUSU9OX01PREUpCi0gICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQ
bGF0Zm9ybUxheWVyKikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXll
cihQbGF0Zm9ybUxheWVyKiwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRpb25IYW5kbGVy
KSBvdmVycmlkZTsKICAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCkg
b3ZlcnJpZGU7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IDE0M2Mw
NDYwM2YyYjdkNmY0MTA1M2FlYWIzNzNmNWE1NWMxNDIzY2IuLjJmNTgyZGJlNDc5YmNiZmVmODkz
NWNlOTFlM2MyNDdiY2M1N2JmMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KQEAgLTc3
MCw3ICs3NzAsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6
YWRkRGlzcGxheUxheWVyKEFWU2FtcGxlQnVmZmVyRGlzcGxheQogICAgIG1fcGxheWVyLT5maXJz
dFZpZGVvRnJhbWVBdmFpbGFibGUoKTsKIAogI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJ
REVPX1BSRVNFTlRBVElPTl9NT0RFKQotICAgIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2Vy
LT5zZXRWaWRlb0xheWVyKG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpLCBzbmFwcGVk
SW50UmVjdChtX3BsYXllci0+Y2xpZW50KCkubWVkaWFQbGF5ZXJDb250ZW50Qm94UmVjdCgpKS5z
aXplKCkpOworICAgIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0xheWVy
cyhtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5nZXQoKSwgbmlsLCBzbmFwcGVkSW50UmVjdCht
X3BsYXllci0+Y2xpZW50KCkubWVkaWFQbGF5ZXJDb250ZW50Qm94UmVjdCgpKS5zaXplKCkpOwog
I2VuZGlmCiB9CiAKQEAgLTgyOCw5ICs4MjgsOSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQzo6Y2hhcmFjdGVyaXN0aWNzQ2hhbmdlZCgpCiB9CiAKICNpZiBQTEFU
Rk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKLXZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQ
bGF0Zm9ybUxheWVyICp2aWRlb0Z1bGxzY3JlZW5MYXllcikKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxh
eWVyICp2aWRlb0Z1bGxzY3JlZW5MYXllciwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRp
b25IYW5kbGVyKQogewotICAgIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLT5zZXRWaWRl
b0Z1bGxzY3JlZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5MYXllcik7CisgICAgbV92aWRlb0Z1bGxz
Y3JlZW5MYXllck1hbmFnZXItPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKHZpZGVvRnVsbHNjcmVl
bkxheWVyLCBjb21wbGV0aW9uSGFuZGxlcik7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3QgZnJh
bWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCmluZGV4IDdlNDI0MDNjZWFmODU2MjYzMjQ1N2U3
MWRmMDgyODZlNWQxZjNjZDcuLjJjZjU4NzczNjIxMjA3ODQ1ZWIxYWExM2M1OTI2M2VmZWUyYmUw
NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCkBAIC0xNjAsNyArMTYwLDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGRpZFJlbW92ZVRyYWNrKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikgb3Zl
cnJpZGU7CiAKICNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05f
TU9ERSkKLSAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqKSBv
dmVycmlkZTsKKyAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIq
LCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOwogICAg
IHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0KSBvdmVycmlkZTsKICNlbmRp
ZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KaW5kZXggZThjYWJlZDhjMWQxNzIzNjZhNjhm
ZWYzNjc0NzQxMmJlN2JlOTM1OS4uNWRlNDRkMGRmZjg2OTRhZGQ0YjVhNTFhODFiYjM2ZGQ1ODc1
YmUzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQpAQCAtNDA0LDcgKzQwNCw3IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpjcmVhdGVQcmV2aWV3TGF5
ZXJzKCkKICAgICAgICAgbV92aWRlb0JhY2tncm91bmRMYXllci5nZXQoKS5uYW1lID0gQCJNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMgcHJldmlldyBiYWNrZ3JvdW5kIGxheWVy
IjsKIAogI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RF
KQotICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci0+c2V0VmlkZW9MYXllciht
X3ZpZGVvQmFja2dyb3VuZExheWVyLmdldCgpLCBzbmFwcGVkSW50UmVjdChtX3BsYXllci0+Y2xp
ZW50KCkubWVkaWFQbGF5ZXJDb250ZW50Qm94UmVjdCgpKS5zaXplKCkpOworICAgICAgICBtX3Zp
ZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci0+c2V0VmlkZW9MYXllcnMobV92aWRlb0JhY2tncm91
bmRMYXllci5nZXQoKSwgbmlsLCBzbmFwcGVkSW50UmVjdChtX3BsYXllci0+Y2xpZW50KCkubWVk
aWFQbGF5ZXJDb250ZW50Qm94UmVjdCgpKS5zaXplKCkpOwogI2VuZGlmCiAgICAgfQogCkBAIC00
NzQsOSArNDc0LDkgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6
OmRpZFJlbW92ZVRyYWNrKE1lZGlhU3RyZWFtVHJhY2tQcml2YXQKIH0KIAogI2lmIFBMQVRGT1JN
KE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQotdm9pZCBNZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRm
b3JtTGF5ZXIgKnZpZGVvRnVsbHNjcmVlbkxheWVyKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIg
KnZpZGVvRnVsbHNjcmVlbkxheWVyLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkhh
bmRsZXIpCiB7Ci0gICAgbV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXItPnNldFZpZGVvRnVs
bHNjcmVlbkxheWVyKHZpZGVvRnVsbHNjcmVlbkxheWVyKTsKKyAgICBtX3ZpZGVvRnVsbHNjcmVl
bkxheWVyTWFuYWdlci0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIodmlkZW9GdWxsc2NyZWVuTGF5
ZXIsIGNvbXBsZXRpb25IYW5kbGVyKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCBmcmFtZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5h
Z2VyLmgKaW5kZXggMmQ1ZGI2MDQ3OTA3YmQ5OTgxMzBjZjNjYjk3YmQ4YmI0MjMzMDcxYS4uZmU0
MDA3ZWU5OTI1ZWY2NDUxYjRiMDE5ZjFjNmEzNWMxYWFmY2M2ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9GdWxsc2Ny
ZWVuTGF5ZXJNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLmgKQEAgLTMxLDYg
KzMxLDcgQEAKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAj
aW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgorI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Myw4ICs0NCw4
IEBAIHB1YmxpYzoKICAgICBQbGF0Zm9ybUxheWVyICp2aWRlb0lubGluZUxheWVyKCkgY29uc3Qg
eyByZXR1cm4gbV92aWRlb0lubGluZUxheWVyLmdldCgpOyB9CiAgICAgUGxhdGZvcm1MYXllciAq
dmlkZW9GdWxsc2NyZWVuTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3ZpZGVvRnVsbHNjcmVlbkxh
eWVyLmdldCgpOyB9CiAgICAgRmxvYXRSZWN0IHZpZGVvRnVsbHNjcmVlbkZyYW1lKCkgY29uc3Qg
eyByZXR1cm4gbV92aWRlb0Z1bGxzY3JlZW5GcmFtZTsgfQotICAgIHZvaWQgc2V0VmlkZW9MYXll
cihQbGF0Zm9ybUxheWVyICosIEludFNpemUgY29udGVudFNpemUpOwotICAgIHZvaWQgc2V0Vmlk
ZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciAqKTsKKyAgICB2b2lkIHNldFZpZGVvTGF5
ZXJzKFBsYXRmb3JtTGF5ZXIgKiwgUGxhdGZvcm1MYXllciAqLCBJbnRTaXplIGNvbnRlbnRTaXpl
KTsKKyAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIgKiwgc3Rk
OjpmdW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2b2lkIHNldFZpZGVv
RnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCk7CiAgICAgdm9pZCBkaWREZXN0cm95VmlkZW9MYXll
cigpOwogCkBAIC01NCw2ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPFBsYXRmb3Jt
TGF5ZXI+IG1fdmlkZW9JbmxpbmVMYXllcjsKICAgICBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4g
bV92aWRlb0Z1bGxzY3JlZW5MYXllcjsKICAgICBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gbV92
aWRlb0xheWVyOworICAgIFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBtX3NlY29uZGFyeVZpZGVv
TGF5ZXI7CiAgICAgRmxvYXRSZWN0IG1fdmlkZW9GdWxsc2NyZWVuRnJhbWU7CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9WaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIu
bW0KaW5kZXggNjhiOTIwMzRjOThkNWM5YzAyODhlMzIwYjk2NzQ2ODdkNzVmNGRhYS4uMGNkMTcy
ZjFjODNjZjUzYmVmZDRiZTEyN2FmYTA5YWYzOGMwNDdhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9GdWxsc2NyZWVu
TGF5ZXJNYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci5tbQpAQCAtNjYsNTUg
KzY2LDk3IEBAIFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcjo6VmlkZW9GdWxsc2NyZWVuTGF5
ZXJNYW5hZ2VyKCkKIHsKIH0KIAotdm9pZCBWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXI6OnNl
dFZpZGVvTGF5ZXIoUGxhdGZvcm1MYXllciAqdmlkZW9MYXllciwgSW50U2l6ZSBjb250ZW50U2l6
ZSkKK3ZvaWQgVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyOjpzZXRWaWRlb0xheWVycyhQbGF0
Zm9ybUxheWVyICp2aWRlb0xheWVyLCBQbGF0Zm9ybUxheWVyICpzZWNvbmRhcnlWaWRlb0xheWVy
LCBJbnRTaXplIGNvbnRlbnRTaXplKQogewogICAgIG1fdmlkZW9MYXllciA9IHZpZGVvTGF5ZXI7
CisgICAgbV9zZWNvbmRhcnlWaWRlb0xheWVyID0gc2Vjb25kYXJ5VmlkZW9MYXllcjsKIAogICAg
IFttX3ZpZGVvTGF5ZXIgd2ViX2Rpc2FibGVBbGxBY3Rpb25zXTsKKyAgICBbbV9zZWNvbmRhcnlW
aWRlb0xheWVyIHdlYl9kaXNhYmxlQWxsQWN0aW9uc107CiAgICAgbV92aWRlb0lubGluZUxheWVy
ID0gYWRvcHROUyhbW1dlYlZpZGVvQ29udGFpbmVyTGF5ZXIgYWxsb2NdIGluaXRdKTsKICNpZm5k
ZWYgTkRFQlVHCiAgICAgW21fdmlkZW9JbmxpbmVMYXllciBzZXROYW1lOkAiV2ViVmlkZW9Db250
YWluZXJMYXllciJdOwogI2VuZGlmCiAgICAgW21fdmlkZW9JbmxpbmVMYXllciBzZXRGcmFtZTpD
R1JlY3RNYWtlKDAsIDAsIGNvbnRlbnRTaXplLndpZHRoKCksIGNvbnRlbnRTaXplLmhlaWdodCgp
KV07CiAgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXIpIHsKLSAgICAgICAgW21fdmlkZW9M
YXllciBzZXRGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIG1fdmlkZW9GdWxsc2NyZWVuRnJhbWUud2lk
dGgoKSwgbV92aWRlb0Z1bGxzY3JlZW5GcmFtZS5oZWlnaHQoKSldOwotICAgICAgICBbbV92aWRl
b0Z1bGxzY3JlZW5MYXllciBpbnNlcnRTdWJsYXllcjptX3ZpZGVvTGF5ZXIuZ2V0KCkgYXRJbmRl
eDowXTsKKyAgICAgICAgW21fdmlkZW9MYXllciByZW1vdmVGcm9tU3VwZXJsYXllcl07CisgICAg
ICAgIFBsYXRmb3JtTGF5ZXIgKmFjdGl2ZUxheWVyID0gc2Vjb25kYXJ5VmlkZW9MYXllciA/IHNl
Y29uZGFyeVZpZGVvTGF5ZXIgOiB2aWRlb0xheWVyOworICAgICAgICBbYWN0aXZlTGF5ZXIgc2V0
RnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCBtX3ZpZGVvRnVsbHNjcmVlbkZyYW1lLndpZHRoKCksIG1f
dmlkZW9GdWxsc2NyZWVuRnJhbWUuaGVpZ2h0KCkpXTsKKyAgICAgICAgW21fdmlkZW9GdWxsc2Ny
ZWVuTGF5ZXIgaW5zZXJ0U3VibGF5ZXI6YWN0aXZlTGF5ZXIgYXRJbmRleDowXTsKICAgICB9IGVs
c2UgewogICAgICAgICBbbV92aWRlb0lubGluZUxheWVyIGluc2VydFN1YmxheWVyOm1fdmlkZW9M
YXllci5nZXQoKSBhdEluZGV4OjBdOwogICAgICAgICBbbV92aWRlb0xheWVyIHNldEZyYW1lOm1f
dmlkZW9JbmxpbmVMYXllci5nZXQoKS5ib3VuZHNdOworICAgICAgICBbbV9zZWNvbmRhcnlWaWRl
b0xheWVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKICAgICB9CiB9CiAKLXZvaWQgVmlkZW9GdWxs
c2NyZWVuTGF5ZXJNYW5hZ2VyOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVy
ICp2aWRlb0Z1bGxzY3JlZW5MYXllcikKK3ZvaWQgVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2Vy
OjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyICp2aWRlb0Z1bGxzY3JlZW5M
YXllciwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlm
IChtX3ZpZGVvRnVsbHNjcmVlbkxheWVyID09IHZpZGVvRnVsbHNjcmVlbkxheWVyKQorICAgIGlm
IChtX3ZpZGVvRnVsbHNjcmVlbkxheWVyID09IHZpZGVvRnVsbHNjcmVlbkxheWVyKSB7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBt
X3ZpZGVvRnVsbHNjcmVlbkxheWVyID0gdmlkZW9GdWxsc2NyZWVuTGF5ZXI7CiAKICAgICBbQ0FU
cmFuc2FjdGlvbiBiZWdpbl07CiAgICAgW0NBVHJhbnNhY3Rpb24gc2V0RGlzYWJsZUFjdGlvbnM6
WUVTXTsKIAotICAgIENBQ29udGV4dCAqb2xkQ29udGV4dCA9IFttX3ZpZGVvTGF5ZXIgY29udGV4
dF07Ci0gICAgQ0FDb250ZXh0ICpuZXdDb250ZXh0ID0gbmlsOworICAgIGlmIChtX3NlY29uZGFy
eVZpZGVvTGF5ZXIgJiYgbV92aWRlb0xheWVyKSB7CisgICAgICAgIGlmIChtX3ZpZGVvRnVsbHNj
cmVlbkxheWVyKSB7CisgICAgICAgICAgICBbbV92aWRlb0Z1bGxzY3JlZW5MYXllciBpbnNlcnRT
dWJsYXllcjptX3NlY29uZGFyeVZpZGVvTGF5ZXIuZ2V0KCkgYXRJbmRleDowXTsKKyAgICAgICAg
ICAgIFttX3NlY29uZGFyeVZpZGVvTGF5ZXIgc2V0RnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCBtX3Zp
ZGVvRnVsbHNjcmVlbkZyYW1lLndpZHRoKCksIG1fdmlkZW9GdWxsc2NyZWVuRnJhbWUuaGVpZ2h0
KCkpXTsKKyAgICAgICAgfSBlbHNlIGlmIChtX3ZpZGVvSW5saW5lTGF5ZXIpIHsKKyAgICAgICAg
ICAgIFttX3ZpZGVvTGF5ZXIgc2V0RnJhbWU6W21fdmlkZW9JbmxpbmVMYXllciBib3VuZHNdXTsK
KyAgICAgICAgICAgIFttX3ZpZGVvSW5saW5lTGF5ZXIgaW5zZXJ0U3VibGF5ZXI6bV92aWRlb0xh
eWVyLmdldCgpIGF0SW5kZXg6MF07CisgICAgICAgIH0KIAotICAgIGlmIChtX3ZpZGVvRnVsbHNj
cmVlbkxheWVyICYmIG1fdmlkZW9MYXllcikgewotICAgICAgICBbbV92aWRlb0Z1bGxzY3JlZW5M
YXllciBpbnNlcnRTdWJsYXllcjptX3ZpZGVvTGF5ZXIuZ2V0KCkgYXRJbmRleDowXTsKLSAgICAg
ICAgW21fdmlkZW9MYXllciBzZXRGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIG1fdmlkZW9GdWxsc2Ny
ZWVuRnJhbWUud2lkdGgoKSwgbV92aWRlb0Z1bGxzY3JlZW5GcmFtZS5oZWlnaHQoKSldOwotICAg
ICAgICBuZXdDb250ZXh0ID0gW21fdmlkZW9GdWxsc2NyZWVuTGF5ZXIgY29udGV4dF07Ci0gICAg
fSBlbHNlIGlmIChtX3ZpZGVvSW5saW5lTGF5ZXIgJiYgbV92aWRlb0xheWVyKSB7Ci0gICAgICAg
IFttX3ZpZGVvTGF5ZXIgc2V0RnJhbWU6W21fdmlkZW9JbmxpbmVMYXllciBib3VuZHNdXTsKLSAg
ICAgICAgW21fdmlkZW9MYXllciByZW1vdmVGcm9tU3VwZXJsYXllcl07Ci0gICAgICAgIFttX3Zp
ZGVvSW5saW5lTGF5ZXIgaW5zZXJ0U3VibGF5ZXI6bV92aWRlb0xheWVyLmdldCgpIGF0SW5kZXg6
MF07Ci0gICAgICAgIG5ld0NvbnRleHQgPSBbbV92aWRlb0lubGluZUxheWVyIGNvbnRleHRdOwot
ICAgIH0gZWxzZSBpZiAobV92aWRlb0xheWVyKQotICAgICAgICBbbV92aWRlb0xheWVyIHJlbW92
ZUZyb21TdXBlcmxheWVyXTsKKyAgICAgICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IGZ1bGxz
Y3JlZW5MYXllciA9IG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXI7CisgICAgICAgIFJldGFpblB0cjxQ
bGF0Zm9ybUxheWVyPiB2aWRlb0xheWVyID0gbV92aWRlb0xheWVyOworICAgICAgICBSZXRhaW5Q
dHI8UGxhdGZvcm1MYXllcj4gc2Vjb25kYXJ5VmlkZW9MYXllciA9IG1fc2Vjb25kYXJ5VmlkZW9M
YXllcjsKIAotICAgIGlmIChvbGRDb250ZXh0ICYmIG5ld0NvbnRleHQgJiYgb2xkQ29udGV4dCAh
PSBuZXdDb250ZXh0KSB7Ci0gICAgICAgIG1hY2hfcG9ydF90IGZlbmNlUG9ydCA9IFtvbGRDb250
ZXh0IGNyZWF0ZUZlbmNlUG9ydF07Ci0gICAgICAgIFtuZXdDb250ZXh0IHNldEZlbmNlUG9ydDpm
ZW5jZVBvcnRdOwotICAgICAgICBtYWNoX3BvcnRfZGVhbGxvY2F0ZShtYWNoX3Rhc2tfc2VsZigp
LCBmZW5jZVBvcnQpOworICAgICAgICBbQ0FUcmFuc2FjdGlvbiBzZXRDb21wbGV0aW9uQmxvY2s6
W2NvbXBsZXRpb25IYW5kbGVyLCBmdWxsc2NyZWVuTGF5ZXIsIHZpZGVvTGF5ZXIsIHNlY29uZGFy
eVZpZGVvTGF5ZXJdIHsKKyAgICAgICAgICAgIFtDQVRyYW5zYWN0aW9uIGJlZ2luXTsKKyAgICAg
ICAgICAgIFtDQVRyYW5zYWN0aW9uIHNldERpc2FibGVBY3Rpb25zOllFU107CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIGlmIChmdWxsc2NyZWVuTGF5ZXIpCisgICAgICAgICAgICAgICAgW3Zp
ZGVvTGF5ZXIgcmVtb3ZlRnJvbVN1cGVybGF5ZXJdOworICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIFtzZWNvbmRhcnlWaWRlb0xheWVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKKwor
ICAgICAgICAgICAgW0NBVHJhbnNhY3Rpb24gc2V0Q29tcGxldGlvbkJsb2NrOltjb21wbGV0aW9u
SGFuZGxlcl0geworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAg
ICAgICB9XTsKKyAgICAgICAgICAgIFtDQVRyYW5zYWN0aW9uIGNvbW1pdF07CisgICAgICAgIH1d
OworICAgIH0gZWxzZSBpZiAobV92aWRlb0xheWVyKSB7CisgICAgICAgIGlmIChtX3ZpZGVvRnVs
bHNjcmVlbkxheWVyKSB7CisgICAgICAgICAgICBbbV92aWRlb0Z1bGxzY3JlZW5MYXllciBpbnNl
cnRTdWJsYXllcjptX3ZpZGVvTGF5ZXIuZ2V0KCkgYXRJbmRleDowXTsKKyAgICAgICAgICAgIFtt
X3ZpZGVvTGF5ZXIgc2V0RnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCBtX3ZpZGVvRnVsbHNjcmVlbkZy
YW1lLndpZHRoKCksIG1fdmlkZW9GdWxsc2NyZWVuRnJhbWUuaGVpZ2h0KCkpXTsKKyAgICAgICAg
fSBlbHNlIGlmIChtX3ZpZGVvSW5saW5lTGF5ZXIpIHsKKyAgICAgICAgICAgIFttX3ZpZGVvTGF5
ZXIgc2V0RnJhbWU6W21fdmlkZW9JbmxpbmVMYXllciBib3VuZHNdXTsKKyAgICAgICAgICAgIFtt
X3ZpZGVvTGF5ZXIgcmVtb3ZlRnJvbVN1cGVybGF5ZXJdOworICAgICAgICAgICAgW21fdmlkZW9J
bmxpbmVMYXllciBpbnNlcnRTdWJsYXllcjptX3ZpZGVvTGF5ZXIuZ2V0KCkgYXRJbmRleDowXTsK
KyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBbbV92aWRlb0xheWVyIHJlbW92ZUZyb21TdXBl
cmxheWVyXTsKKworICAgICAgICBDQUNvbnRleHQgKm9sZENvbnRleHQgPSBbbV92aWRlb0Z1bGxz
Y3JlZW5MYXllciBjb250ZXh0XTsKKyAgICAgICAgQ0FDb250ZXh0ICpuZXdDb250ZXh0ID0gW21f
dmlkZW9JbmxpbmVMYXllciBjb250ZXh0XTsKKyAgICAgICAgaWYgKG9sZENvbnRleHQgJiYgbmV3
Q29udGV4dCAmJiBvbGRDb250ZXh0ICE9IG5ld0NvbnRleHQpIHsKKyAgICAgICAgICAgIG1hY2hf
cG9ydF90IGZlbmNlUG9ydCA9IFtvbGRDb250ZXh0IGNyZWF0ZUZlbmNlUG9ydF07CisgICAgICAg
ICAgICBbbmV3Q29udGV4dCBzZXRGZW5jZVBvcnQ6ZmVuY2VQb3J0XTsKKyAgICAgICAgICAgIG1h
Y2hfcG9ydF9kZWFsbG9jYXRlKG1hY2hfdGFza19zZWxmKCksIGZlbmNlUG9ydCk7CisgICAgICAg
IH0KKworICAgICAgICBbQ0FUcmFuc2FjdGlvbiBzZXRDb21wbGV0aW9uQmxvY2s6W2NvbXBsZXRp
b25IYW5kbGVyXSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICB9
XTsKKyAgICB9IGVsc2UgeworICAgICAgICBbQ0FUcmFuc2FjdGlvbiBzZXRDb21wbGV0aW9uQmxv
Y2s6W2NvbXBsZXRpb25IYW5kbGVyXSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigp
OworICAgICAgICB9XTsKICAgICB9CisKICAgICBbQ0FUcmFuc2FjdGlvbiBjb21taXRdOwogfQog
CkBAIC0xMjQsMTcgKzE2NiwxOCBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcjo6
c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0IHZpZGVvRnVsbHNjcgogICAgIGlmICgh
bV92aWRlb0Z1bGxzY3JlZW5MYXllcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1fdmlk
ZW9MYXllcikKLSAgICAgICAgW21fdmlkZW9MYXllciBzZXRGcmFtZTpDR1JlY3RNYWtlKDAsIDAs
IHZpZGVvRnVsbHNjcmVlbkZyYW1lLndpZHRoKCksIHZpZGVvRnVsbHNjcmVlbkZyYW1lLmhlaWdo
dCgpKV07CisgICAgUGxhdGZvcm1MYXllciAqYWN0aXZlTGF5ZXIgPSBtX3NlY29uZGFyeVZpZGVv
TGF5ZXIuZ2V0KCkgPyBtX3NlY29uZGFyeVZpZGVvTGF5ZXIuZ2V0KCkgOiBtX3ZpZGVvTGF5ZXIu
Z2V0KCk7CisgICAgW2FjdGl2ZUxheWVyIHNldEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgdmlkZW9G
dWxsc2NyZWVuRnJhbWUud2lkdGgoKSwgdmlkZW9GdWxsc2NyZWVuRnJhbWUuaGVpZ2h0KCkpXTsK
IH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXI6OmRpZERlc3Ryb3lWaWRlb0xh
eWVyKCkKIHsKLSAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5MYXllcikKLSAgICAgICAgW21fdmlk
ZW9MYXllciByZW1vdmVGcm9tU3VwZXJsYXllcl07CisgICAgW21fdmlkZW9MYXllciByZW1vdmVG
cm9tU3VwZXJsYXllcl07CisgICAgW21fc2Vjb25kYXJ5VmlkZW9MYXllciByZW1vdmVGcm9tU3Vw
ZXJsYXllcl07CiAKICAgICBtX3ZpZGVvSW5saW5lTGF5ZXIgPSBuaWw7CiAgICAgbV92aWRlb0xh
eWVyID0gbmlsOworICAgIG1fc2Vjb25kYXJ5VmlkZW9MYXllciA9IG5pbDsKIH0KIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXJBVktpdC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0KaW5kZXggZTVjYTQ3MmZiYTBjNzhlYzA4OWJmNWUy
MDUzMzc2NDI3ODk1ZjljYi4uNmIwZGJjZjY1Yzg3ODQ2YTAxNDkwNzk4NGQ5MzBhNTk4YWU5MzU5
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJBVktpdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tCkBAIC0yNDcsOSArMjQ3LDEwIEBA
IHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmRpZFNldHVwRnVsbHNj
cmVlbigpCiAgICAgUmV0YWluUHRyPENBTGF5ZXI+IHZpZGVvRnVsbHNjcmVlbkxheWVyID0gW21f
dmlkZW9GdWxsc2NyZWVuVmlldyBsYXllcl07CiAgICAgV2ViVGhyZWFkUnVuKFtwcm90ZWN0ZWRU
aGlzLCB0aGlzLCB2aWRlb0Z1bGxzY3JlZW5MYXllcl0gewogICAgICAgICBbdmlkZW9GdWxsc2Ny
ZWVuTGF5ZXIgc2V0QmFja2dyb3VuZENvbG9yOmNhY2hlZENHQ29sb3IoV2ViQ29yZTo6Q29sb3I6
OnRyYW5zcGFyZW50KV07Ci0gICAgICAgIG1fbW9kZWwtPnNldFZpZGVvRnVsbHNjcmVlbkxheWVy
KHZpZGVvRnVsbHNjcmVlbkxheWVyLmdldCgpKTsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlz
cGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMsIHRoaXNdIHsKLSAgICAgICAg
ICAgIG1faW50ZXJmYWNlLT5lbnRlckZ1bGxzY3JlZW4oKTsKKyAgICAgICAgbV9tb2RlbC0+c2V0
VmlkZW9GdWxsc2NyZWVuTGF5ZXIodmlkZW9GdWxsc2NyZWVuTGF5ZXIuZ2V0KCksIFtwcm90ZWN0
ZWRUaGlzLCB0aGlzXSB7CisgICAgICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRf
bWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcywgdGhpc10geworICAgICAgICAgICAgICAgIG1f
aW50ZXJmYWNlLT5lbnRlckZ1bGxzY3JlZW4oKTsKKyAgICAgICAgICAgIH0pOwogICAgICAgICB9
KTsKICAgICB9KTsKIH0KQEAgLTI1OSw5ICsyNjAsMTAgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyQ29udGV4dDo6ZGlkRXhpdEZ1bGxzY3JlZW4oKQogICAgIEFTU0VSVChpc1VJ
VGhyZWFkKCkpOwogICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4
dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBXZWJUaHJlYWRSdW4oW3Byb3RlY3RlZFRoaXMs
IHRoaXNdIHsKLSAgICAgICAgbV9tb2RlbC0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIobmlsKTsK
LSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3Rl
Y3RlZFRoaXMsIHRoaXNdIHsKLSAgICAgICAgICAgIG1faW50ZXJmYWNlLT5jbGVhbnVwRnVsbHNj
cmVlbigpOworICAgICAgICBtX21vZGVsLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihuaWwsIFtw
cm90ZWN0ZWRUaGlzLCB0aGlzXSB7CisgICAgICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRj
aF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcywgdGhpc10geworICAgICAgICAgICAg
ICAgIG1faW50ZXJmYWNlLT5jbGVhbnVwRnVsbHNjcmVlbigpOworICAgICAgICAgICAgfSk7CiAg
ICAgICAgIH0pOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCmluZGV4IDM1YmE3
NTI2ZmE5ODJiZjVjMzA2MzFiZmFlYzZiMDZhYmYwZWNjYjQuLjU2NTk1MDM0ZTY0NjgzZmZiODNm
MGQ5YTJhZjBhNGE1MmU4ZmIzZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KQEAgLTM2OSwx
NCArMzY5LDE2IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkU2V0dXBGdWxs
c2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICBzdGQ6OnRpZShtb2RlbCwgaW50ZXJmYWNl
KSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7CiAKICAgICBpbnRlcmZhY2Ut
PmxheWVySG9zdGluZ0NvbnRleHQoKS0+c2V0Um9vdExheWVyKHZpZGVvTGF5ZXIpOwotICAgIG1v
ZGVsLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2aWRlb0xheWVyKTsKLQotICAgIFtDQVRyYW5z
YWN0aW9uIGNvbW1pdF07CiAKICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcj4g
c3Ryb25nVGhpcyh0aGlzKTsKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9x
dWV1ZSgpLCBbc3Ryb25nVGhpcywgdGhpcywgY29udGV4dElkXSB7Ci0gICAgICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpFbnRlckZ1bGxz
Y3JlZW4oY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgCisgICAgbW9kZWwtPnNl
dFZpZGVvRnVsbHNjcmVlbkxheWVyKHZpZGVvTGF5ZXIsIFtzdHJvbmdUaGlzLCB0aGlzLCBjb250
ZXh0SWRdIHsKKyAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUo
KSwgW3N0cm9uZ1RoaXMsIHRoaXMsIGNvbnRleHRJZF0geworICAgICAgICAgICAgbV9wYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkVudGVyRnVsbHNj
cmVlbihjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgfSk7CiAgICAgfSk7
CisgICAgCisgICAgW0NBVHJhbnNhY3Rpb24gY29tbWl0XTsKIH0KICAgICAKIHZvaWQgV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkRW50ZXJGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJ
ZCkKQEAgLTQwNywxNyArNDA5LDIxIEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6
ZGlkRXhpdEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKQogICAgIFJlZlB0cjxXZWJWaWRl
b0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudD4gbW9kZWw7CiAgICAgUmVmUHRyPFdlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ+IGludGVyZmFjZTsKICAgICBzdGQ6OnRpZShtb2Rl
bCwgaW50ZXJmYWNlKSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7Ci0KLSAg
ICBtb2RlbC0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIobmlsKTsKLQogICAgIFJlZlB0cjxXZWJW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyPiBzdHJvbmdUaGlzKHRoaXMpOwotICAgIGRpc3BhdGNoX2Fz
eW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtzdHJvbmdUaGlzLCBjb250ZXh0SWQsIGlu
dGVyZmFjZV0gewotICAgICAgICBpZiAoaW50ZXJmYWNlLT5sYXllckhvc3RpbmdDb250ZXh0KCkp
IHsKLSAgICAgICAgICAgIGludGVyZmFjZS0+bGF5ZXJIb3N0aW5nQ29udGV4dCgpLT5zZXRSb290
TGF5ZXIobnVsbHB0cik7Ci0gICAgICAgICAgICBpbnRlcmZhY2UtPnNldExheWVySG9zdGluZ0Nv
bnRleHQobnVsbHB0cik7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHN0cm9uZ1RoaXMtPm1fcGFn
ZSkKLSAgICAgICAgICAgIHN0cm9uZ1RoaXMtPm1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpDbGVhbnVwRnVsbHNjcmVlbihjb250ZXh0SWQpLCBz
dHJvbmdUaGlzLT5tX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAKKyAgICBtb2RlbC0+cHJlcGFyZUZv
cklubGluZShbc3Ryb25nVGhpcywgdGhpcywgY29udGV4dElkLCBpbnRlcmZhY2UsIG1vZGVsXSB7
CisgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtzdHJv
bmdUaGlzLCB0aGlzLCBjb250ZXh0SWQsIGludGVyZmFjZSwgbW9kZWxdIHsKKyAgICAgICAgICAg
IG1vZGVsLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihuaWwsIFtzdHJvbmdUaGlzLCB0aGlzLCBj
b250ZXh0SWQsIGludGVyZmFjZV0geworICAgICAgICAgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRp
c3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtzdHJvbmdUaGlzLCB0aGlzLCBjb250ZXh0SWQsIGlu
dGVyZmFjZV0geworICAgICAgICAgICAgICAgICAgICBpZiAoaW50ZXJmYWNlLT5sYXllckhvc3Rp
bmdDb250ZXh0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludGVyZmFjZS0+bGF5ZXJI
b3N0aW5nQ29udGV4dCgpLT5zZXRSb290TGF5ZXIobnVsbHB0cik7CisgICAgICAgICAgICAgICAg
ICAgICAgICBpbnRlcmZhY2UtPnNldExheWVySG9zdGluZ0NvbnRleHQobnVsbHB0cik7CisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0cm9uZ1RoaXMtPm1f
cGFnZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9uZ1RoaXMtPm1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpDbGVhbnVwRnVsbHNjcmVl
bihjb250ZXh0SWQpLCBzdHJvbmdUaGlzLT5tX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgICAg
ICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKICAgICB9KTsKIH0KICAgICAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>279989</attachid>
            <date>2016-05-27 13:49:06 -0700</date>
            <delta_ts>2016-07-07 12:22:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158148-20160527135017.patch</filename>
            <type>text/plain</type>
            <size>44751</size>
            <attacher name="Jeremy Jones">jeremyj-wk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxNDU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzQ1ZGRkZGVhYzk0MmE2
YTBkZDY5ODBjZDY0ODI5OTRhYmUyNDIxMy4uMDViMWJkMTc2MTM0NzQxYjMwZmMwMWVjMmZiYzMz
N2I4OGRlYmVlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDE2LTA1LTI3ICBKZXJl
bXkgSm9uZXMgIDxqZXJlbXlqQGFwcGxlLmNvbT4KKworICAgICAgICBEZWNyZWFzZSBmbGlja2Vy
IHdoZW4gY2hhbmdpbmcgdmlkZW8gcHJlc2VudGF0aW9uIG1vZGUuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTgxNDgKKyAgICAgICAgcmRhcjovL3By
b2JsZW0vMjQ0NzY5NDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGVyZSBpcyBubyBiZWhhdmlvciBjaGFuZ2Uu
IFRoaXMgY2hhbmdlIGlzIGFib3V0IHRoZSB0aW1pbmcgb2YKKyAgICAgICAgbW92aW5nIEFWUGxh
eWVyTGF5ZXJzIGJldHdlZW4gbGF5ZXJzIHRvIHByZXZlbnQgZmxpY2tlci4KKworICAgICAgICAx
KSBNb3ZpbmcgYW4gQVZQbGF5ZXJMYXllciBiZXR3ZWVuIENBQ29udGV4dHMgY2FuIGZsaWNrZXIu
IFNvIGFsd2F5cyBrZWVwIHR3bworICAgICAgICBBVlBsYXllckxheWVycyBhcm91bmQgYW5kIGFk
ZCBhbmQgcmVtb3ZlIHRoZW0gZnJvbSB0aGUgaW5saW5lIGFuZCBmdWxsc2NyZWVuIGNvbnRleHRz
LgorICAgICAgICAyKSBXYWl0IHRvIHNob3cgdGhlIGlubGluZSBwbGFjZWhvbGRlciB1bnRpbCB0
aGUgZnVsbHNjcmVlbiB2aWRlbyBsYXllciBoYXMgYmVlbiBpbnN0YWxsZWQuCisgICAgICAgIDMp
IFdhaXQgdG8gcmVtb3ZlIHRoZSBmdWxsc2NyZWVuIHZpZGVvIGxheWVyIHVudGlsIHRoZSBwbGFj
ZWhvbGRlciBoYXMgYmVlbiByZW1vdmVkLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYWNvbnRy
b2xzL01lZGlhQ29udHJvbHNIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJv
bHNIb3N0Ojppc1ZpZGVvTGF5ZXJJbmxpbmUpOiBFeHBvc2UgaXNWaWRlb0xheWVySW5saW5lIHRv
IHRoZSBzaGFkb3cgRE9NLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sc0hvc3Q6OnNl
dFByZXBhcmVkRm9ySW5saW5lKTogRXhwb3NlIHNldFByZXBhcmVkRm9ySW5saW5lIHRvIHRoZSBz
aGFkb3cgRE9NLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xz
SG9zdC5oOiBBZGQgc2V0UHJlcGFyZWRGb3JJbmxpbmUgYW5kIGlzVmlkZW9MYXllcklubGluZQor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5pZGw6IEFk
ZCBzZXRQcmVwYXJlZEZvcklubGluZSBhbmQgaXNWaWRlb0xheWVySW5saW5lCisgICAgICAgICog
TW9kdWxlcy9tZWRpYWNvbnRyb2xzL21lZGlhQ29udHJvbHNBcHBsZS5qczoKKyAgICAgICAgKENv
bnRyb2xsZXIucHJvdG90eXBlLnNob3dJbmxpbmVQbGF5YmFja1BsYWNlaG9sZGVyV2hlblNhZmUp
OiBXYWl0IHRvIHNob3cgcGxhY2Vob2xkZXIgd2hlbiBlbnRlcmluZyBmdWxsc2NyZWVuLgorICAg
ICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUuaGFuZGxlUHJlc2VudGF0aW9uTW9kZUNoYW5nZSk6
IFdhaXQgdG8gc2hvdyBwbGFjZWhvbGRlciwgYW5kIG5vdGlmeSB3aGVuIHBsYWNlaG9sZGVyIGlz
IHJlbW92ZWQuCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNldFByZXBhcmVkRm9ySW5saW5lKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OndhaXRGb3JQcmVwYXJlZEZvcklubGluZVRo
ZW4pOiBVc2VkIHRvIGRlbGF5IGZ1bGxzY3JlZW4gY2xlYW51cCB1bnRpbCBwbGFjZWhvbGRlciBp
cyByZW1vdmVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0VmlkZW9G
dWxsc2NyZWVuTGF5ZXIpOiBBZGQgYSBjYWxsYmFjayBzbyB3ZSBjYW4gd2FpdCB1bnRpbCB0aGlz
IGNvbXBsZXRlcyBiZWZvcmUgY29udGludWluZy4KKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmlzVmlkZW9MYXll
cklubGluZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp3YWl0Rm9yUHJl
cGFyZWRGb3JJbmxpbmVUaGVuKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKTogQWRkIGNvbXBsZXRpb25IYW5kbGVyLgorICAgICAg
ICAqIHBsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lmg6
CisgICAgICAgIChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6
c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIpOiBBZGQgY29tcGxldGlvbkhhbmRsZXIuCisgICAgICAg
IChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6d2FpdEZvclBy
ZXBhcmVkRm9ySW5saW5lVGhlbik6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1dl
YlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1tOgorICAgICAgICAoV2ViVmlkZW9G
dWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKTogQWRk
IGNvbXBsZXRpb25IYW5kbGVyLgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRl
b0VsZW1lbnQ6OndhaXRGb3JQcmVwYXJlZEZvcklubGluZVRoZW4pOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcik6IEFkZCBjb21wbGV0aW9uSGFuZGxlci4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXI6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKTogQWRkIGNvbXBsZXRpb25I
YW5kbGVyLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5o
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlOjpzZXRWaWRl
b0Z1bGxzY3JlZW5MYXllcik6IEFkZCBjb21wbGV0aW9uSGFuZGxlci4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUFWUGxheWVyTGF5
ZXIpOiBDcmVhdGUgdHdvIHZpZGVvIGxheWVycy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmRlc3Ryb3lWaWRlb0xheWVyKTogQWxsb3cgdHdv
IHZpZGVvIGxheWVycy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKTogQWRkIGNvbXBsZXRpb25IYW5k
bGVyLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6dXBkYXRlVmlkZW9MYXllckdyYXZpdHkpOiBBbGxvdyB0d28gdmlkZW8gbGF5ZXJzLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6
YWRkRGlzcGxheUxheWVyKTogQWxsb3cgdHdvIHZpZGVvIGxheWVycy4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0VmlkZW9GdWxsc2Ny
ZWVuTGF5ZXIpOiBBZGQgY29tcGxldGlvbkhhbmRsZXIuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpjcmVhdGVQcmV2aWV3TGF5ZXJz
KTogQWxsb3cgdHdvIHZpZGVvIGxheWVycy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIpOiBBZGQg
Y29tcGxldGlvbkhhbmRsZXIuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2Vy
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyOjpzZXRW
aWRlb0xheWVycyk6IEFsbG93IHR3byB2aWRlbyBsYXllcnMuCisgICAgICAgIChXZWJDb3JlOjpW
aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXI6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKTogQWRk
IGNvbXBsZXRpb25IYW5kbGVyLgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GdWxsc2NyZWVuTGF5
ZXJNYW5hZ2VyOjpzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZSk6IEFsbG93IHR3byB2aWRlbyBsYXll
cnMuCisgICAgICAgIChXZWJDb3JlOjpWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXI6OmRpZERl
c3Ryb3lWaWRlb0xheWVyKTogQWxsb3cgdHdvIHZpZGVvIGxheWVycy4KKyAgICAgICAgKFdlYkNv
cmU6OlZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcjo6c2V0VmlkZW9MYXllcik6IERlbGV0ZWQu
CisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktp
dC5tbToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpkaWRT
ZXR1cEZ1bGxzY3JlZW4pOiBVc2UgY29tcGxldGlvbkhhbmRsZXIuIAorICAgICAgICAoV2ViVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmRpZEV4aXRGdWxsc2NyZWVuKTogVXNlIGNv
bXBsZXRpb25IYW5kbGVyLgorCiAyMDE2LTA1LTI3ICBBZGFtIEJlcmdrdmlzdCAgPGFkYW0uYmVy
Z2t2aXN0QGVyaWNzc29uLmNvbT4KIAogICAgICAgICBXZWJSVEM6IFVwZGF0ZSBSVENQZWVyQ29u
bmVjdGlvbiBvdmVybG9hZGVkIGxlZ2FjeSBvcGVyYXRpb25zIHRvIHJldHVybiBhIFByb21pc2UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA5MTFkMTEzNDc0MDMzM2FiMjZhNzhkM2EwODY4NDYyNGU5MWYyNjNlLi45
MjNhNTlmYmJjMmU1MTIyMWM5YzM3ODA5MmM1NzNlNGQyMjZhNmJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTkgQEAKKzIwMTYtMDUtMjcgIEplcmVteSBKb25lcyAgPGplcmVteWpAYXBwbGUuY29t
PgorCisgICAgICAgIERlY3JlYXNlIGZsaWNrZXIgd2hlbiBjaGFuZ2luZyB2aWRlbyBwcmVzZW50
YXRpb24gbW9kZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1ODE0OAorICAgICAgICByZGFyOi8vcHJvYmxlbS8yNDQ3Njk0OQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFByZXZlbnQgZmxpY2tlciBieSB1
c2luZyBzZXRWaWRlb0Z1bGxzY3JlZW5MYXllciB3aXRoIGEgY29tcGxldGlvbiBoYW5kbGVyIHRv
IGRlbGF5IAorICAgICAgICBlbnRlciBmdWxsc2NyZWVuIGFuZCBjbGVhbnVwIGZ1bGxzY3JlZW4g
dW50aWwgdGhlIHZpZGVvIGxheWVyIGhhcyBjb21wbGV0ZWx5IGJlZW4KKyAgICAgICAgaW5zdGFs
bGVkIG9yIHJlbW92ZWQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dlYlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXI6OmRpZFNldHVwRnVsbHNjcmVlbik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXI6OmRpZEV4aXRGdWxsc2NyZWVuKToKKwogMjAxNi0wNS0yNyAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEV4cG9zZSBj
b250ZW50IGV4dGVuc2lvbiBmYWlsdXJlIGVycm9yIGNvZGVzIGluIFNQSQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9z
dC5jcHAKaW5kZXggOTExMjIzMDY0Yjk3ODBkM2E0YjEyZjE3YjAyODBiMTk5YTM5OGQ5My4uMGU2
OWRmOTExZTBiYzUwMTQ5YWNiNzM5NjFkOWJhNjFhNjYwYmUyNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3Qu
Y3BwCkBAIC0yMTAsNiArMjEwLDE2IEBAIGJvb2wgTWVkaWFDb250cm9sc0hvc3Q6OnN1cHBvcnRz
RnVsbHNjcmVlbigpCiAgICAgcmV0dXJuIG1fbWVkaWFFbGVtZW50LT5zdXBwb3J0c0Z1bGxzY3Jl
ZW4oSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQpOwog
fQogCitib29sIE1lZGlhQ29udHJvbHNIb3N0Ojppc1ZpZGVvTGF5ZXJJbmxpbmUoKQoreworICAg
IHJldHVybiBtX21lZGlhRWxlbWVudC0+aXNWaWRlb0xheWVySW5saW5lKCk7Cit9CisKK3ZvaWQg
TWVkaWFDb250cm9sc0hvc3Q6OnNldFByZXBhcmVkRm9ySW5saW5lKGJvb2wgdmFsdWUpCit7Cisg
ICAgbV9tZWRpYUVsZW1lbnQtPnNldFByZXBhcmVkRm9ySW5saW5lKHZhbHVlKTsKK30KKwogYm9v
bCBNZWRpYUNvbnRyb2xzSG9zdDo6dXNlckdlc3R1cmVSZXF1aXJlZCgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuICFtX21lZGlhRWxlbWVudC0+bWVkaWFTZXNzaW9uKCkucGxheWJhY2tQZXJtaXR0ZWQo
Km1fbWVkaWFFbGVtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmgKaW5kZXggNGJhM2NhMzljYTk2M2JlYTMy
MTZlY2EwMzA2NGQyYzA2ZTIwMDY3ZS4uY2YwOTc1YzM1MTY4YjJhNWNhNTY1MzY1YTJhZGQ4YTk5
ODRhN2M2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xz
L01lZGlhQ29udHJvbHNIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNv
bnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmgKQEAgLTY0LDcgKzY0LDkgQEAgcHVibGljOgogICAg
IHZvaWQgdXBkYXRlVGV4dFRyYWNrQ29udGFpbmVyKCk7CiAgICAgYm9vbCBhbGxvd3NJbmxpbmVN
ZWRpYVBsYXliYWNrKCkgY29uc3Q7CiAgICAgYm9vbCBzdXBwb3J0c0Z1bGxzY3JlZW4oKTsKKyAg
ICBib29sIGlzVmlkZW9MYXllcklubGluZSgpOwogICAgIGJvb2wgdXNlckdlc3R1cmVSZXF1aXJl
ZCgpIGNvbnN0OworICAgIHZvaWQgc2V0UHJlcGFyZWRGb3JJbmxpbmUoYm9vbCk7CiAKICAgICB2
b2lkIHVwZGF0ZUNhcHRpb25EaXNwbGF5U2l6ZXMoKTsKICAgICB2b2lkIGVudGVyZWRGdWxsc2Ny
ZWVuKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMv
TWVkaWFDb250cm9sc0hvc3QuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRy
b2xzL01lZGlhQ29udHJvbHNIb3N0LmlkbAppbmRleCA3YjA3MDZkOTVjNmZjYzllY2QzMjQxMzBl
MzFjZDdiZTZjZWJmMjQzLi4wMDEzNDM1MDY1NjUwM2NkYTc2MmRjMDIzYzYyOTIzMDhjYmIxY2Nl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFD
b250cm9sc0hvc3QuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9s
cy9NZWRpYUNvbnRyb2xzSG9zdC5pZGwKQEAgLTQyLDkgKzQyLDExIEBAIGVudW0gRGV2aWNlVHlw
ZSB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFRleHRUcmFjayBjYXB0aW9uTWVudUF1dG9tYXRp
Y0l0ZW07CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBjYXB0aW9uRGlzcGxheU1v
ZGU7CiAgICAgdm9pZCBzZXRTZWxlY3RlZFRleHRUcmFjayhUZXh0VHJhY2s/IHRyYWNrKTsKKyAg
ICB2b2lkIHNldFByZXBhcmVkRm9ySW5saW5lKGJvb2xlYW4gcHJlcGFyZWQpOwogICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBIVE1MRWxlbWVudCB0ZXh0VHJhY2tDb250YWluZXI7CiAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIGJvb2xlYW4gYWxsb3dzSW5saW5lTWVkaWFQbGF5YmFjazsKICAgICByZWFk
b25seSBhdHRyaWJ1dGUgYm9vbGVhbiBzdXBwb3J0c0Z1bGxzY3JlZW47CisgICAgcmVhZG9ubHkg
YXR0cmlidXRlIGJvb2xlYW4gaXNWaWRlb0xheWVySW5saW5lOwogICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBib29sZWFuIHVzZXJHZXN0dXJlUmVxdWlyZWQ7CiAKICAgICByZWFkb25seSBhdHRyaWJ1
dGUgRE9NU3RyaW5nIGV4dGVybmFsRGV2aWNlRGlzcGxheU5hbWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvbWVkaWFDb250cm9sc0FwcGxlLmpzIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL21lZGlhQ29udHJvbHNBcHBsZS5q
cwppbmRleCA4Mjg1ZTg2MDhlZmFiMWUzNDU5YzcyM2JiZWZlMTM3MjhjMDc5YTAxLi4yOWVkYTA5
MTUxYzU2MzI0YmQ5OWMzNWZhNjRjODVkNjkxOTkyZTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvbWVkaWFDb250cm9sc0FwcGxlLmpzCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9tZWRpYUNvbnRyb2xzQXBwbGUuanMK
QEAgLTgzNyw2ICs4MzcsMTYgQEAgQ29udHJvbGxlci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAg
ICB0aGlzLmNvbnRyb2xzLnBpY3R1cmVJblBpY3R1cmVCdXR0b24uY2xhc3NMaXN0LmFkZCh0aGlz
LkNsYXNzTmFtZXMuaGlkZGVuKTsKICAgICB9LAogCisgICAgc2hvd0lubGluZVBsYXliYWNrUGxh
Y2Vob2xkZXJXaGVuU2FmZTogZnVuY3Rpb24oKSB7CisgICAgICAgIGlmICh0aGlzLnByZXNlbnRh
dGlvbk1vZGUoKSAhPSAncGljdHVyZS1pbi1waWN0dXJlJykKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICBpZiAoIXRoaXMuaG9zdC5pc1ZpZGVvTGF5ZXJJbmxpbmUpCisgICAgICAgICAg
ICB0aGlzLmNvbnRyb2xzLmlubGluZVBsYXliYWNrUGxhY2Vob2xkZXIuY2xhc3NMaXN0LnJlbW92
ZSh0aGlzLkNsYXNzTmFtZXMuaGlkZGVuKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2V0
VGltZW91dCh0aGlzLnNob3dJbmxpbmVQbGF5YmFja1BsYWNlaG9sZGVyV2hlblNhZmUuYmluZCh0
aGlzKSwgMzMpOworICAgIH0sCisKICAgICBoYW5kbGVQcmVzZW50YXRpb25Nb2RlQ2hhbmdlOiBm
dW5jdGlvbihldmVudCkKICAgICB7CiAgICAgICAgIHZhciBwcmVzZW50YXRpb25Nb2RlID0gdGhp
cy5wcmVzZW50YXRpb25Nb2RlKCk7CkBAIC04NTQsNyArODY0LDcgQEAgQ29udHJvbGxlci5wcm90
b3R5cGUgPSB7CiAgICAgICAgICAgICBjYXNlICdwaWN0dXJlLWluLXBpY3R1cmUnOgogICAgICAg
ICAgICAgICAgIHRoaXMuY29udHJvbHMucGFuZWwuY2xhc3NMaXN0LmFkZCh0aGlzLkNsYXNzTmFt
ZXMucGljdHVyZUluUGljdHVyZSk7CiAgICAgICAgICAgICAgICAgdGhpcy5jb250cm9scy5pbmxp
bmVQbGF5YmFja1BsYWNlaG9sZGVyLmNsYXNzTGlzdC5hZGQodGhpcy5DbGFzc05hbWVzLnBpY3R1
cmVJblBpY3R1cmUpOwotICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbHMuaW5saW5lUGxheWJh
Y2tQbGFjZWhvbGRlci5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuQ2xhc3NOYW1lcy5oaWRkZW4pOwor
ICAgICAgICAgICAgICAgIHRoaXMuc2hvd0lubGluZVBsYXliYWNrUGxhY2Vob2xkZXJXaGVuU2Fm
ZSgpOwogCiAgICAgICAgICAgICAgICAgdGhpcy5jb250cm9scy5pbmxpbmVQbGF5YmFja1BsYWNl
aG9sZGVyVGV4dFRvcC5pbm5lclRleHQgPSB0aGlzLlVJU3RyaW5nKCdUaGlzIHZpZGVvIGlzIHBs
YXlpbmcgaW4gUGljdHVyZSBpbiBQaWN0dXJlJyk7CiAgICAgICAgICAgICAgICAgdGhpcy5jb250
cm9scy5pbmxpbmVQbGF5YmFja1BsYWNlaG9sZGVyVGV4dFRvcC5jbGFzc0xpc3QuYWRkKHRoaXMu
Q2xhc3NOYW1lcy5waWN0dXJlSW5QaWN0dXJlKTsKQEAgLTg4Myw2ICs4OTMsNyBAQCBDb250cm9s
bGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5yZXNldEhpZGVDb250cm9sc1RpbWVyKCk7
CiAgICAgICAgIGlmIChwcmVzZW50YXRpb25Nb2RlICE9ICdmdWxsc2NyZWVuJyAmJiB0aGlzLnZp
ZGVvLnBhdXNlZCAmJiB0aGlzLmNvbnRyb2xzQXJlSGlkZGVuKCkpCiAgICAgICAgICAgICB0aGlz
LnNob3dDb250cm9scygpOworICAgICAgICB0aGlzLmhvc3Quc2V0UHJlcGFyZWRGb3JJbmxpbmUo
cHJlc2VudGF0aW9uTW9kZSA9PT0gJ2lubGluZScpCiAgICAgfSwKIAogICAgIGhhbmRsZUZ1bGxz
Y3JlZW5DaGFuZ2U6IGZ1bmN0aW9uKGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAKaW5kZXggZDdmZDI4NTA1NjA1Y2EzZWQ5YTRhNjJlNTU5NTJkZGE1ODFjNjUw
MC4uNTQ2NTRjMDUxMDllNTdhZmUwMWMzZmNmOTYyNjJjN2YwODdjODdjMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC01NDcxLDE1ICs1NDcxLDQyIEBAIFBs
YXRmb3JtTGF5ZXIqIEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAogICAg
IHJldHVybiBtX3BsYXllciA/IG1fcGxheWVyLT5wbGF0Zm9ybUxheWVyKCkgOiBudWxscHRyOwog
fQogCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFByZXBhcmVkRm9ySW5saW5lKGJvb2wgdmFs
dWUpCit7CisgICAgbV9wcmVwYXJlZEZvcklubGluZSA9IHZhbHVlOworICAgIGlmIChtX3ByZXBh
cmVkRm9ySW5saW5lICYmIG1fcHJlcGFyZWRGb3JJbmxpbmVDb21wbGV0aW9uSGFuZGxlcikgewor
ICAgICAgICBtX3ByZXBhcmVkRm9ySW5saW5lQ29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAg
bV9wcmVwYXJlZEZvcklubGluZUNvbXBsZXRpb25IYW5kbGVyID0gbnVsbHB0cjsKKyAgICB9Cit9
CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6d2FpdEZvclByZXBhcmVkRm9ySW5saW5lVGhlbihz
dGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUKCFt
X3ByZXBhcmVkRm9ySW5saW5lQ29tcGxldGlvbkhhbmRsZXIpOworICAgIGlmIChtX3ByZXBhcmVk
Rm9ySW5saW5lKSAgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIAorICAgIG1fcHJlcGFyZWRGb3JJbmxpbmVDb21wbGV0aW9uSGFuZGxl
ciA9IGNvbXBsZXRpb25IYW5kbGVyOworfQorCiAjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZP
Uk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQogCi12b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqIHBsYXRm
b3JtTGF5ZXIpCitib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmlzVmlkZW9MYXllcklubGluZSgpCit7
CisgICAgcmV0dXJuIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXIgPT0gbmlsOworfTsKKyAgICAKK3Zv
aWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXll
ciogcGxhdGZvcm1MYXllciwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXIgPSBwbGF0Zm9ybUxheWVyOwotICAgIGlm
ICghbV9wbGF5ZXIpCisgICAgaWYgKCFtX3BsYXllcikgeworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcigpOwogICAgICAgICByZXR1cm47CisgICAgfQogICAgIAotICAgIG1fcGxheWVyLT5zZXRW
aWRlb0Z1bGxzY3JlZW5MYXllcihwbGF0Zm9ybUxheWVyKTsKKyAgICBtX3BsYXllci0+c2V0Vmlk
ZW9GdWxsc2NyZWVuTGF5ZXIocGxhdGZvcm1MYXllciwgY29tcGxldGlvbkhhbmRsZXIpOwogICAg
IHNldE5lZWRzU3R5bGVSZWNhbGMoU3ludGhldGljU3R5bGVDaGFuZ2UpOwogI2lmIEVOQUJMRShW
SURFT19UUkFDSykKICAgICB1cGRhdGVUZXh0VHJhY2tEaXNwbGF5KCk7CkBAIC01NDk5LDYgKzU1
MjYsMTMgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRWaWRlb0Z1bGxzY3JlZW5HcmF2aXR5
KE1lZGlhUGxheWVyOjpWaWRlb0dyYXZpdHkgZ3JhdmkKICAgICBpZiAobV9wbGF5ZXIpCiAgICAg
ICAgIG1fcGxheWVyLT5zZXRWaWRlb0Z1bGxzY3JlZW5HcmF2aXR5KGdyYXZpdHkpOwogfQorICAg
IAorI2Vsc2UKKyAgICAKK2Jvb2wgSFRNTE1lZGlhRWxlbWVudDo6aXNWaWRlb0xheWVySW5saW5l
KCkKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK307CiAKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IDNiZTIxY2YyMGFmOThiMGRjNzA2YTI2NjhkNGQ1M2Jh
Y2I4NWRjMDEuLmU0NGMyZmI3ZWI5NGZlMzQ2YjIwMzEyMzg3YTM4NDNlMGEwODUwOWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC0xMzMsOCArMTMzLDExIEBAIHB1
YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIFBsYXRmb3JtTWVkaWEgcGxhdGZvcm1NZWRpYSgp
IGNvbnN0OwogICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdDsKKyAgICBi
b29sIGlzVmlkZW9MYXllcklubGluZSgpOworICAgIHZvaWQgc2V0UHJlcGFyZWRGb3JJbmxpbmUo
Ym9vbCk7CisgICAgdm9pZCB3YWl0Rm9yUHJlcGFyZWRGb3JJbmxpbmVUaGVuKHN0ZDo6ZnVuY3Rp
b248dm9pZCgpPiBjb21wbGV0aW9uSGFuZGxlciA9IFtdIHsgfSk7CiAjaWYgUExBVEZPUk0oSU9T
KSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQot
ICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciopOworICAgIHZv
aWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciosIHN0ZDo6ZnVuY3Rpb248
dm9pZCgpPiBjb21wbGV0aW9uSGFuZGxlciA9IFtdIHsgfSk7CiAgICAgUGxhdGZvcm1MYXllciog
dmlkZW9GdWxsc2NyZWVuTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3ZpZGVvRnVsbHNjcmVlbkxh
eWVyLmdldCgpOyB9CiAgICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3Qp
OwogICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuR3Jhdml0eShNZWRpYVBsYXllckVudW1zOjpW
aWRlb0dyYXZpdHkpOwpAQCAtODQ3LDYgKzg1MCw4IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPE5v
ZGU+IG1fbmV4dENoaWxkTm9kZVRvQ29uc2lkZXI7CiAKICAgICBWaWRlb0Z1bGxzY3JlZW5Nb2Rl
IG1fdmlkZW9GdWxsc2NyZWVuTW9kZTsKKyAgICBib29sIG1fcHJlcGFyZWRGb3JJbmxpbmU7Cisg
ICAgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IG1fcHJlcGFyZWRGb3JJbmxpbmVDb21wbGV0aW9uSGFu
ZGxlcjsKICNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURF
T19QUkVTRU5UQVRJT05fTU9ERSkpCiAgICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IG1fdmlk
ZW9GdWxsc2NyZWVuTGF5ZXI7CiAgICAgRmxvYXRSZWN0IG1fdmlkZW9GdWxsc2NyZWVuRnJhbWU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaAppbmRleCBmNzc4MjIxZDU0NDIy
ZTE0OTFjY2FjODE2OTI3YzE0NGI2MGQ4YWI3Li5kNWQ3ZGYzMGJlOGZkMTJkZWI0NTljYzFlNDY1
ZDdjNDQzOWU5MDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9X
ZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50LmgKQEAg
LTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50RW51bXMuaCIKICNpbmNs
dWRlICJQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSAiV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwu
aCIKKyNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNTUsNyAr
NTYsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRXZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2UoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlKik7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRWaWRlb0VsZW1lbnQoSFRNTFZpZGVvRWxlbWVudCopOwogICAgIFdF
QkNPUkVfRVhQT1JUIEhUTUxWaWRlb0VsZW1lbnQqIHZpZGVvRWxlbWVudCgpIGNvbnN0IHsgcmV0
dXJuIG1fdmlkZW9FbGVtZW50LmdldCgpOyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRW
aWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKik7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiwgc3RkOjpmdW5jdGlv
bjx2b2lkKCk+IGNvbXBsZXRpb25IYW5kbGVyID0gW10geyB9KTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHdhaXRGb3JQcmVwYXJlZEZvcklubGluZVRoZW4oc3RkOjpmdW5jdGlvbjx2b2lkKCk+
IGNvbXBsZXRpb25IYW5kbGVyID0gW10geyB9KTsKICAgICBXZWJQbGF5YmFja1Nlc3Npb25Nb2Rl
bE1lZGlhRWxlbWVudCYgcGxheWJhY2tTZXNzaW9uTW9kZWwoKSB7IHJldHVybiBtX3BsYXliYWNr
U2Vzc2lvbk1vZGVsOyB9CiAgICAgCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBoYW5kbGVFdmVu
dChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViQ29yZTo6RXZlbnQqKSBvdmVy
cmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVv
RnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW0KaW5kZXggZDgwZGUx
MzBlNzZjNjgyNDgzOTI3NTliNjFiZDI2OWU2YzI5NzgzMS4uZmJjYmM2YTUyMTUxZTRkNTJiMDUx
NjMzNzkzYWQ0YmJlZjk2NGUyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1l
bnQubW0KQEAgLTEyMCwxMCArMTIwLDEyIEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxW
aWRlb0VsZW1lbnQ6OnVwZGF0ZUZvckV2ZW50TmFtZShjb25zdCBXVEY6OkF0b21pY1N0CiAgICAg
ICAgIG1fdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlLT5zZXRWaWRlb0RpbWVuc2lvbnModHJ1ZSwg
bV92aWRlb0VsZW1lbnQtPnZpZGVvV2lkdGgoKSwgbV92aWRlb0VsZW1lbnQtPnZpZGVvSGVpZ2h0
KCkpOwogfQogCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpzZXRW
aWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiB2aWRlb0xheWVyKQordm9pZCBXZWJW
aWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIo
UGxhdGZvcm1MYXllciogdmlkZW9MYXllciwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRp
b25IYW5kbGVyKQogewotICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbkxheWVyID09IHZpZGVvTGF5
ZXIpCisgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXIgPT0gdmlkZW9MYXllcikgeworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICByZXR1cm47CisgICAgfQogICAgIAog
ICAgIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXIgPSB2aWRlb0xheWVyOwogI2lmIFBMQVRGT1JNKE1B
QykKQEAgLTEzMyw4ICsxMzUsMjIgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVv
RWxlbWVudDo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllcioKICNlbmRpZgog
ICAgIFttX3ZpZGVvRnVsbHNjcmVlbkxheWVyIHNldEJvdW5kczptX3ZpZGVvRnJhbWVdOwogICAg
IAotICAgIGlmIChtX3ZpZGVvRWxlbWVudCkKLSAgICAgICAgbV92aWRlb0VsZW1lbnQtPnNldFZp
ZGVvRnVsbHNjcmVlbkxheWVyKG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXIuZ2V0KCkpOworICAgIGlm
ICghbV92aWRlb0VsZW1lbnQpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIG1fdmlkZW9FbGVtZW50LT5zZXRWaWRlb0Z1bGxzY3Jl
ZW5MYXllcihtX3ZpZGVvRnVsbHNjcmVlbkxheWVyLmdldCgpLCBjb21wbGV0aW9uSGFuZGxlcik7
Cit9CisKK3ZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OndhaXRGb3JQ
cmVwYXJlZEZvcklubGluZVRoZW4oc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRpb25IYW5k
bGVyKQoreworICAgIGlmICghbV92aWRlb0VsZW1lbnQpIHsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fdmlkZW9FbGVtZW50LT53
YWl0Rm9yUHJlcGFyZWRGb3JJbmxpbmVUaGVuKGNvbXBsZXRpb25IYW5kbGVyKTsKIH0KIAogdm9p
ZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6cmVxdWVzdEZ1bGxzY3JlZW5N
b2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4
IDFiODFkNGRmOGEyZjA0NTVhNWUyY2NhNmJjMzZjNzVmMTdiNmI2NzcuLjk5MDczOGU3ODc0NGUy
MDFjMmRkYmE5MTY5ZTAxMDE3MjU5ZTE4YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTY2MCw5ICs2NjAsOSBAQCBQbGF0Zm9y
bUxheWVyKiBNZWRpYVBsYXllcjo6cGxhdGZvcm1MYXllcigpIGNvbnN0CiB9CiAgICAgCiAjaWYg
UExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFU
SU9OX01PREUpKQotdm9pZCBNZWRpYVBsYXllcjo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxh
dGZvcm1MYXllciogbGF5ZXIpCit2b2lkIE1lZGlhUGxheWVyOjpzZXRWaWRlb0Z1bGxzY3JlZW5M
YXllcihQbGF0Zm9ybUxheWVyKiBsYXllciwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRp
b25IYW5kbGVyKQogewotICAgIG1fcHJpdmF0ZS0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIobGF5
ZXIpOworICAgIG1fcHJpdmF0ZS0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIobGF5ZXIsIGNvbXBs
ZXRpb25IYW5kbGVyKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllcjo6c2V0VmlkZW9GdWxsc2NyZWVu
RnJhbWUoRmxvYXRSZWN0IGZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyLmgKaW5kZXggOTMwNTAxNzEwZTNhOWIxY2U2ODRjMzMwNDdjMjE1MmVj
ZTFjYTk3OC4uMjE0NjdmYzY3MjU4NzY3NmNiMWU0NWVkZjIyOTMxNGUyOWE0NGVmMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBAIC0zMDgs
NyArMzA4LDcgQEAgcHVibGljOgogICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBj
b25zdDsKIAogI2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJ
REVPX1BSRVNFTlRBVElPTl9NT0RFKSkKLSAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVy
KFBsYXRmb3JtTGF5ZXIqKTsKKyAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRm
b3JtTGF5ZXIqLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkhhbmRsZXIgPSBbXSB7
IH0pOwogICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0KTsKICAgICB1
c2luZyBNZWRpYVBsYXllckVudW1zOjpWaWRlb0dyYXZpdHk7CiAgICAgdm9pZCBzZXRWaWRlb0Z1
bGxzY3JlZW5HcmF2aXR5KFZpZGVvR3Jhdml0eSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCmluZGV4IDg5YzBjMTllZGFj
Yzc2ZWY3YmZjOWNiNmU3YTBiODYyNjg3MDZmYjAuLjEzN2NlZmIzOWFkNTM3MzdmNGExNGFlNjMy
OTc5YjM1ODY3ZWQ5OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCB7IHJldHVybiAw
OyB9CiAKICNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURF
T19QUkVTRU5UQVRJT05fTU9ERSkpCi0gICAgdmlydHVhbCB2b2lkIHNldFZpZGVvRnVsbHNjcmVl
bkxheWVyKFBsYXRmb3JtTGF5ZXIqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9GdWxs
c2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciosIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBjb21wbGV0
aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcigpOyB9CiAgICAgdmlydHVhbCB2b2lkIHNl
dFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNl
dFZpZGVvRnVsbHNjcmVlbkdyYXZpdHkoTWVkaWFQbGF5ZXI6OlZpZGVvR3Jhdml0eSkgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbk1vZGUoTWVkaWFQbGF5ZXI6OlZpZGVv
RnVsbHNjcmVlbk1vZGUpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCmluZGV4IDVhZDVkMDhjMTIw
NDgxN2RkNzNjYWRmMTI2MDM1NGRjZTI3M2RkMGUuLjRmNTNjN2M0YjZlM2RiYTkwY2U5MjIxMTkw
ZGZiY2NmNzAxMjg5MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKQEAgLTE3Miw3ICsxNzIsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAgICAgUGxhdGZvcm1MYXllciog
cGxhdGZvcm1MYXllcigpIGNvbnN0IG92ZXJyaWRlOwogI2lmIFBMQVRGT1JNKElPUykgfHwgKFBM
QVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKLSAgICB2b2lk
IHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqKSBvdmVycmlkZTsKKyAgICB2
b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBzdGQ6OmZ1bmN0aW9u
PHZvaWQoKT4gY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0VmlkZW9G
dWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0KSBvdmVycmlkZTsKICAgICB2b2lkIHNldFZpZGVvRnVs
bHNjcmVlbkdyYXZpdHkoTWVkaWFQbGF5ZXI6OlZpZGVvR3Jhdml0eSkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5Nb2RlKE1lZGlhUGxheWVyOjpWaWRlb0Z1bGxzY3JlZW5N
b2RlKSBvdmVycmlkZTsKQEAgLTMyOSw2ICszMjksNyBAQCBwcml2YXRlOgogICAgIFJldGFpblB0
cjxBVlBsYXllcj4gbV9hdlBsYXllcjsKICAgICBSZXRhaW5QdHI8QVZQbGF5ZXJJdGVtPiBtX2F2
UGxheWVySXRlbTsKICAgICBSZXRhaW5QdHI8QVZQbGF5ZXJMYXllcj4gbV92aWRlb0xheWVyOwor
ICAgIFJldGFpblB0cjxBVlBsYXllckxheWVyPiBtX3NlY29uZGFyeVZpZGVvTGF5ZXI7CiAjaWYg
UExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFU
SU9OX01PREUpKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFn
ZXI+IG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyOwogICAgIE1lZGlhUGxheWVyOjpWaWRl
b0dyYXZpdHkgbV92aWRlb0Z1bGxzY3JlZW5HcmF2aXR5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0K
aW5kZXggN2NiMDI2NmEzZGM3ZGFmOGNkYjkxMDdkZTBkYzNjMzU4NjlhM2JjZi4uMDczZjFiODVl
YjllYjMwOWI4M2FmNzZlYzFjNjI2ZmJkNzZhOGZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1t
CkBAIC03MzAsMTcgKzczMCwyNCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6OmNyZWF0ZUFWUGxheWVyTGF5ZXIoKQogICAgIG1fdmlkZW9MYXllciA9IGFkb3B0TlMo
W2FsbG9jQVZQbGF5ZXJMYXllckluc3RhbmNlKCkgaW5pdF0pOwogICAgIFttX3ZpZGVvTGF5ZXIg
c2V0UGxheWVyOm1fYXZQbGF5ZXIuZ2V0KCldOwogICAgIFttX3ZpZGVvTGF5ZXIgc2V0QmFja2dy
b3VuZENvbG9yOmNhY2hlZENHQ29sb3IoQ29sb3I6OmJsYWNrKV07CisKKyAgICBtX3NlY29uZGFy
eVZpZGVvTGF5ZXIgPSBhZG9wdE5TKFthbGxvY0FWUGxheWVyTGF5ZXJJbnN0YW5jZSgpIGluaXRd
KTsKKyAgICBbbV9zZWNvbmRhcnlWaWRlb0xheWVyIHNldFBsYXllcjptX2F2UGxheWVyLmdldCgp
XTsKKyAgICBbbV9zZWNvbmRhcnlWaWRlb0xheWVyIHNldEJhY2tncm91bmRDb2xvcjpjYWNoZWRD
R0NvbG9yKENvbG9yOjpibGFjayldOworCiAjaWZuZGVmIE5ERUJVRwogICAgIFttX3ZpZGVvTGF5
ZXIgc2V0TmFtZTpAIk1lZGlhUGxheWVyUHJpdmF0ZSBBVlBsYXllckxheWVyIl07CisgICAgW21f
c2Vjb25kYXJ5VmlkZW9MYXllciBzZXROYW1lOkAiTWVkaWFQbGF5ZXJQcml2YXRlIEFWUGxheWVy
TGF5ZXIgc2Vjb25kYXJ5Il07CiAjZW5kaWYKICAgICBbbV92aWRlb0xheWVyIGFkZE9ic2VydmVy
Om1fb2JqY09ic2VydmVyLmdldCgpIGZvcktleVBhdGg6QCJyZWFkeUZvckRpc3BsYXkiIG9wdGlv
bnM6TlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbk5ldyBjb250ZXh0Oih2b2lkICopTWVkaWFQbGF5
ZXJBVkZvdW5kYXRpb25PYnNlcnZhdGlvbkNvbnRleHRBVlBsYXllckxheWVyXTsKICAgICB1cGRh
dGVWaWRlb0xheWVyR3Jhdml0eSgpOwogICAgIFttX3ZpZGVvTGF5ZXIgc2V0Q29udGVudHNTY2Fs
ZTpwbGF5ZXIoKS0+Y2xpZW50KCkubWVkaWFQbGF5ZXJDb250ZW50c1NjYWxlKCldOworICAgIFtt
X3NlY29uZGFyeVZpZGVvTGF5ZXIgc2V0Q29udGVudHNTY2FsZTpwbGF5ZXIoKS0+Y2xpZW50KCku
bWVkaWFQbGF5ZXJDb250ZW50c1NjYWxlKCldOwogICAgIEludFNpemUgZGVmYXVsdFNpemUgPSBz
bmFwcGVkSW50UmVjdChwbGF5ZXIoKS0+Y2xpZW50KCkubWVkaWFQbGF5ZXJDb250ZW50Qm94UmVj
dCgpKS5zaXplKCk7CiAgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6Y3JlYXRlVmlkZW9MYXllciglcCkgLSByZXR1cm5pbmcgJXAiLCB0aGlzLCBtX3Zp
ZGVvTGF5ZXIuZ2V0KCkpOwogCiAjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAm
JiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQotICAgIG1fdmlkZW9GdWxsc2NyZWVu
TGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0xheWVyKG1fdmlkZW9MYXllci5nZXQoKSwgZGVmYXVsdFNp
emUpOworICAgIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0xheWVycyht
X3ZpZGVvTGF5ZXIuZ2V0KCksIG1fc2Vjb25kYXJ5VmlkZW9MYXllci5nZXQoKSwgZGVmYXVsdFNp
emUpOwogCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIGlmIChbbV92aWRlb0xheWVyIHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0UElQTW9kZUVuYWJsZWQ6KV0pCkBAIC03NDgsNiArNzU1
LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVBVlBs
YXllckxheWVyKCkKICNlbmRpZgogI2Vsc2UKICAgICBbbV92aWRlb0xheWVyIHNldEZyYW1lOkNH
UmVjdE1ha2UoMCwgMCwgZGVmYXVsdFNpemUud2lkdGgoKSwgZGVmYXVsdFNpemUuaGVpZ2h0KCkp
XTsKKyAgICBbbV9zZWNvbmRhcnlWaWRlb0xheWVyIHNldEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwg
ZGVmYXVsdFNpemUud2lkdGgoKSwgZGVmYXVsdFNpemUuaGVpZ2h0KCkpXTsKICNlbmRpZgogfQog
CkBAIC03NjAsMTIgKzc2OCwxNCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6OmRlc3Ryb3lWaWRlb0xheWVyKCkKIAogICAgIFttX3ZpZGVvTGF5ZXIuZ2V0KCkgcmVt
b3ZlT2JzZXJ2ZXI6bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAInJlYWR5Rm9yRGlz
cGxheSJdOwogICAgIFttX3ZpZGVvTGF5ZXIuZ2V0KCkgc2V0UGxheWVyOm5pbF07CisgICAgW21f
c2Vjb25kYXJ5VmlkZW9MYXllci5nZXQoKSBzZXRQbGF5ZXI6bmlsXTsKIAogI2lmIFBMQVRGT1JN
KElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RF
KSkKICAgICBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci0+ZGlkRGVzdHJveVZpZGVvTGF5
ZXIoKTsKICNlbmRpZgogCiAgICAgbV92aWRlb0xheWVyID0gbmlsOworICAgIG1fc2Vjb25kYXJ5
VmlkZW9MYXllciA9IG5pbDsKIH0KIAogTWVkaWFUaW1lIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OmdldFN0YXJ0RGF0ZSgpIGNvbnN0CkBAIC0xMTgzLDEyICsxMTkzLDE0IEBA
IFBsYXRmb3JtTGF5ZXIqIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBsYXRm
b3JtTGF5ZXIoKSBjb25zdAogfQogCiAjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFD
KSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQotdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxh
eWVyKiB2aWRlb0Z1bGxzY3JlZW5MYXllcikKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciogdmlkZW9G
dWxsc2NyZWVuTGF5ZXIsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKLSAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXItPnZpZGVvRnVsbHNjcmVl
bkxheWVyKCkgPT0gdmlkZW9GdWxsc2NyZWVuTGF5ZXIpCisgICAgaWYgKG1fdmlkZW9GdWxsc2Ny
ZWVuTGF5ZXJNYW5hZ2VyLT52aWRlb0Z1bGxzY3JlZW5MYXllcigpID09IHZpZGVvRnVsbHNjcmVl
bkxheWVyKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgIHJldHVybjsK
KyAgICB9CiAKLSAgICBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci0+c2V0VmlkZW9GdWxs
c2NyZWVuTGF5ZXIodmlkZW9GdWxsc2NyZWVuTGF5ZXIpOworICAgIG1fdmlkZW9GdWxsc2NyZWVu
TGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5MYXll
ciwgY29tcGxldGlvbkhhbmRsZXIpOwogCiAgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJN
YW5hZ2VyLT52aWRlb0Z1bGxzY3JlZW5MYXllcigpICYmIG1fdGV4dFRyYWNrUmVwcmVzZW50YXRp
b25MYXllcikgewogICAgICAgICBzeW5jVGV4dFRyYWNrQm91bmRzKCk7CkBAIC0xODcyLDYgKzE4
ODQsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZVZp
ZGVvTGF5ZXJHcmF2aXR5KCkKICAgICBbQ0FUcmFuc2FjdGlvbiBzZXREaXNhYmxlQWN0aW9uczpZ
RVNdOyAgICAKICAgICBOU1N0cmluZyogZ3Jhdml0eSA9IHNob3VsZE1haW50YWluQXNwZWN0UmF0
aW8oKSA/IEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3QgOiBBVkxheWVyVmlkZW9HcmF2
aXR5UmVzaXplOwogICAgIFttX3ZpZGVvTGF5ZXIuZ2V0KCkgc2V0VmlkZW9HcmF2aXR5OmdyYXZp
dHldOworICAgIFttX3NlY29uZGFyeVZpZGVvTGF5ZXIuZ2V0KCkgc2V0VmlkZW9HcmF2aXR5Omdy
YXZpdHldOwogICAgIFtDQVRyYW5zYWN0aW9uIGNvbW1pdF07CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDLmgKaW5kZXggZDQ5ZTNiMzE3NWE4ZThkZTJmODdiOTQwMWVkM2E1ZjY4OGY5Zjk5My4u
ZjcxZmU0ODU5YmEwY2Y0MjQ5ZjFiZjYwMTQyYzJkOTNhMWI1MGM2MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDLmgKQEAgLTg3LDcgKzg3LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2hhcmFjdGVy
aXN0aWNzQ2hhbmdlZCgpOwogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJF
U0VOVEFUSU9OX01PREUpCi0gICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9y
bUxheWVyKikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0
Zm9ybUxheWVyKiwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRpb25IYW5kbGVyKSBvdmVy
cmlkZTsKICAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCkgb3ZlcnJp
ZGU7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IDE0M2MwNDYwM2Yy
YjdkNmY0MTA1M2FlYWIzNzNmNWE1NWMxNDIzY2IuLjJmNTgyZGJlNDc5YmNiZmVmODkzNWNlOTFl
M2MyNDdiY2M1N2JmMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KQEAgLTc3MCw3ICs3
NzAsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6YWRkRGlz
cGxheUxheWVyKEFWU2FtcGxlQnVmZmVyRGlzcGxheQogICAgIG1fcGxheWVyLT5maXJzdFZpZGVv
RnJhbWVBdmFpbGFibGUoKTsKIAogI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BS
RVNFTlRBVElPTl9NT0RFKQotICAgIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLT5zZXRW
aWRlb0xheWVyKG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpLCBzbmFwcGVkSW50UmVj
dChtX3BsYXllci0+Y2xpZW50KCkubWVkaWFQbGF5ZXJDb250ZW50Qm94UmVjdCgpKS5zaXplKCkp
OworICAgIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0xheWVycyhtX3Nh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllci5nZXQoKSwgbmlsLCBzbmFwcGVkSW50UmVjdChtX3BsYXll
ci0+Y2xpZW50KCkubWVkaWFQbGF5ZXJDb250ZW50Qm94UmVjdCgpKS5zaXplKCkpOwogI2VuZGlm
CiB9CiAKQEAgLTgyOCw5ICs4MjgsOSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQzo6Y2hhcmFjdGVyaXN0aWNzQ2hhbmdlZCgpCiB9CiAKICNpZiBQTEFURk9STShN
QUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKLXZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9y
bUxheWVyICp2aWRlb0Z1bGxzY3JlZW5MYXllcikKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyICp2
aWRlb0Z1bGxzY3JlZW5MYXllciwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRpb25IYW5k
bGVyKQogewotICAgIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0Z1bGxz
Y3JlZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5MYXllcik7CisgICAgbV92aWRlb0Z1bGxzY3JlZW5M
YXllck1hbmFnZXItPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKHZpZGVvRnVsbHNjcmVlbkxheWVy
LCBjb21wbGV0aW9uSGFuZGxlcik7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3QgZnJhbWUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCmluZGV4IDdlNDI0MDNjZWFmODU2MjYzMjQ1N2U3MWRmMDgy
ODZlNWQxZjNjZDcuLjJjZjU4NzczNjIxMjA3ODQ1ZWIxYWExM2M1OTI2M2VmZWUyYmUwNDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCkBAIC0xNjAsNyArMTYwLDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGRpZFJlbW92ZVRyYWNrKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikgb3ZlcnJpZGU7
CiAKICNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkK
LSAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBzdGQ6
OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOwogICAgIHZvaWQg
c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0KSBvdmVycmlkZTsKICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakMubW0KaW5kZXggZThjYWJlZDhjMWQxNzIzNjZhNjhmZWYzNjc0
NzQxMmJlN2JlOTM1OS4uNWRlNDRkMGRmZjg2OTRhZGQ0YjVhNTFhODFiYjM2ZGQ1ODc1YmUzZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQpAQCAtNDA0LDcgKzQwNCw3IEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpjcmVhdGVQcmV2aWV3TGF5ZXJzKCkK
ICAgICAgICAgbV92aWRlb0JhY2tncm91bmRMYXllci5nZXQoKS5uYW1lID0gQCJNZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMgcHJldmlldyBiYWNrZ3JvdW5kIGxheWVyIjsKIAog
I2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQotICAg
ICAgICBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci0+c2V0VmlkZW9MYXllcihtX3ZpZGVv
QmFja2dyb3VuZExheWVyLmdldCgpLCBzbmFwcGVkSW50UmVjdChtX3BsYXllci0+Y2xpZW50KCku
bWVkaWFQbGF5ZXJDb250ZW50Qm94UmVjdCgpKS5zaXplKCkpOworICAgICAgICBtX3ZpZGVvRnVs
bHNjcmVlbkxheWVyTWFuYWdlci0+c2V0VmlkZW9MYXllcnMobV92aWRlb0JhY2tncm91bmRMYXll
ci5nZXQoKSwgbmlsLCBzbmFwcGVkSW50UmVjdChtX3BsYXllci0+Y2xpZW50KCkubWVkaWFQbGF5
ZXJDb250ZW50Qm94UmVjdCgpKS5zaXplKCkpOwogI2VuZGlmCiAgICAgfQogCkBAIC00NzQsOSAr
NDc0LDkgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmRpZFJl
bW92ZVRyYWNrKE1lZGlhU3RyZWFtVHJhY2tQcml2YXQKIH0KIAogI2lmIFBMQVRGT1JNKE1BQykg
JiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQotdm9pZCBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5
ZXIgKnZpZGVvRnVsbHNjcmVlbkxheWVyKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIgKnZpZGVv
RnVsbHNjcmVlbkxheWVyLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkhhbmRsZXIp
CiB7Ci0gICAgbV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXItPnNldFZpZGVvRnVsbHNjcmVl
bkxheWVyKHZpZGVvRnVsbHNjcmVlbkxheWVyKTsKKyAgICBtX3ZpZGVvRnVsbHNjcmVlbkxheWVy
TWFuYWdlci0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIodmlkZW9GdWxsc2NyZWVuTGF5ZXIsIGNv
bXBsZXRpb25IYW5kbGVyKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCBmcmFtZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLmgK
aW5kZXggMmQ1ZGI2MDQ3OTA3YmQ5OTgxMzBjZjNjYjk3YmQ4YmI0MjMzMDcxYS4uZmU0MDA3ZWU5
OTI1ZWY2NDUxYjRiMDE5ZjFjNmEzNWMxYWFmY2M2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9GdWxsc2NyZWVuTGF5
ZXJNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLmgKQEAgLTMxLDYgKzMxLDcg
QEAKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVk
ZSAiUGxhdGZvcm1MYXllci5oIgorI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Myw4ICs0NCw4IEBAIHB1
YmxpYzoKICAgICBQbGF0Zm9ybUxheWVyICp2aWRlb0lubGluZUxheWVyKCkgY29uc3QgeyByZXR1
cm4gbV92aWRlb0lubGluZUxheWVyLmdldCgpOyB9CiAgICAgUGxhdGZvcm1MYXllciAqdmlkZW9G
dWxsc2NyZWVuTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyLmdl
dCgpOyB9CiAgICAgRmxvYXRSZWN0IHZpZGVvRnVsbHNjcmVlbkZyYW1lKCkgY29uc3QgeyByZXR1
cm4gbV92aWRlb0Z1bGxzY3JlZW5GcmFtZTsgfQotICAgIHZvaWQgc2V0VmlkZW9MYXllcihQbGF0
Zm9ybUxheWVyICosIEludFNpemUgY29udGVudFNpemUpOwotICAgIHZvaWQgc2V0VmlkZW9GdWxs
c2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciAqKTsKKyAgICB2b2lkIHNldFZpZGVvTGF5ZXJzKFBs
YXRmb3JtTGF5ZXIgKiwgUGxhdGZvcm1MYXllciAqLCBJbnRTaXplIGNvbnRlbnRTaXplKTsKKyAg
ICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIgKiwgc3RkOjpmdW5j
dGlvbjx2b2lkKCk+IGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2b2lkIHNldFZpZGVvRnVsbHNj
cmVlbkZyYW1lKEZsb2F0UmVjdCk7CiAgICAgdm9pZCBkaWREZXN0cm95VmlkZW9MYXllcigpOwog
CkBAIC01NCw2ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+
IG1fdmlkZW9JbmxpbmVMYXllcjsKICAgICBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gbV92aWRl
b0Z1bGxzY3JlZW5MYXllcjsKICAgICBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gbV92aWRlb0xh
eWVyOworICAgIFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBtX3NlY29uZGFyeVZpZGVvTGF5ZXI7
CiAgICAgRmxvYXRSZWN0IG1fdmlkZW9GdWxsc2NyZWVuRnJhbWU7CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRl
b0Z1bGxzY3JlZW5MYXllck1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIubW0KaW5k
ZXggNjhiOTIwMzRjOThkNWM5YzAyODhlMzIwYjk2NzQ2ODdkNzVmNGRhYS4uMGNkMTcyZjFjODNj
ZjUzYmVmZDRiZTEyN2FmYTA5YWYzOGMwNDdhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9GdWxsc2NyZWVuTGF5ZXJN
YW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci5tbQpAQCAtNjYsNTUgKzY2LDk3
IEBAIFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcjo6VmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5h
Z2VyKCkKIHsKIH0KIAotdm9pZCBWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXI6OnNldFZpZGVv
TGF5ZXIoUGxhdGZvcm1MYXllciAqdmlkZW9MYXllciwgSW50U2l6ZSBjb250ZW50U2l6ZSkKK3Zv
aWQgVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyOjpzZXRWaWRlb0xheWVycyhQbGF0Zm9ybUxh
eWVyICp2aWRlb0xheWVyLCBQbGF0Zm9ybUxheWVyICpzZWNvbmRhcnlWaWRlb0xheWVyLCBJbnRT
aXplIGNvbnRlbnRTaXplKQogewogICAgIG1fdmlkZW9MYXllciA9IHZpZGVvTGF5ZXI7CisgICAg
bV9zZWNvbmRhcnlWaWRlb0xheWVyID0gc2Vjb25kYXJ5VmlkZW9MYXllcjsKIAogICAgIFttX3Zp
ZGVvTGF5ZXIgd2ViX2Rpc2FibGVBbGxBY3Rpb25zXTsKKyAgICBbbV9zZWNvbmRhcnlWaWRlb0xh
eWVyIHdlYl9kaXNhYmxlQWxsQWN0aW9uc107CiAgICAgbV92aWRlb0lubGluZUxheWVyID0gYWRv
cHROUyhbW1dlYlZpZGVvQ29udGFpbmVyTGF5ZXIgYWxsb2NdIGluaXRdKTsKICNpZm5kZWYgTkRF
QlVHCiAgICAgW21fdmlkZW9JbmxpbmVMYXllciBzZXROYW1lOkAiV2ViVmlkZW9Db250YWluZXJM
YXllciJdOwogI2VuZGlmCiAgICAgW21fdmlkZW9JbmxpbmVMYXllciBzZXRGcmFtZTpDR1JlY3RN
YWtlKDAsIDAsIGNvbnRlbnRTaXplLndpZHRoKCksIGNvbnRlbnRTaXplLmhlaWdodCgpKV07CiAg
ICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXIpIHsKLSAgICAgICAgW21fdmlkZW9MYXllciBz
ZXRGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIG1fdmlkZW9GdWxsc2NyZWVuRnJhbWUud2lkdGgoKSwg
bV92aWRlb0Z1bGxzY3JlZW5GcmFtZS5oZWlnaHQoKSldOwotICAgICAgICBbbV92aWRlb0Z1bGxz
Y3JlZW5MYXllciBpbnNlcnRTdWJsYXllcjptX3ZpZGVvTGF5ZXIuZ2V0KCkgYXRJbmRleDowXTsK
KyAgICAgICAgW21fdmlkZW9MYXllciByZW1vdmVGcm9tU3VwZXJsYXllcl07CisgICAgICAgIFBs
YXRmb3JtTGF5ZXIgKmFjdGl2ZUxheWVyID0gc2Vjb25kYXJ5VmlkZW9MYXllciA/IHNlY29uZGFy
eVZpZGVvTGF5ZXIgOiB2aWRlb0xheWVyOworICAgICAgICBbYWN0aXZlTGF5ZXIgc2V0RnJhbWU6
Q0dSZWN0TWFrZSgwLCAwLCBtX3ZpZGVvRnVsbHNjcmVlbkZyYW1lLndpZHRoKCksIG1fdmlkZW9G
dWxsc2NyZWVuRnJhbWUuaGVpZ2h0KCkpXTsKKyAgICAgICAgW21fdmlkZW9GdWxsc2NyZWVuTGF5
ZXIgaW5zZXJ0U3VibGF5ZXI6YWN0aXZlTGF5ZXIgYXRJbmRleDowXTsKICAgICB9IGVsc2Ugewog
ICAgICAgICBbbV92aWRlb0lubGluZUxheWVyIGluc2VydFN1YmxheWVyOm1fdmlkZW9MYXllci5n
ZXQoKSBhdEluZGV4OjBdOwogICAgICAgICBbbV92aWRlb0xheWVyIHNldEZyYW1lOm1fdmlkZW9J
bmxpbmVMYXllci5nZXQoKS5ib3VuZHNdOworICAgICAgICBbbV9zZWNvbmRhcnlWaWRlb0xheWVy
IHJlbW92ZUZyb21TdXBlcmxheWVyXTsKICAgICB9CiB9CiAKLXZvaWQgVmlkZW9GdWxsc2NyZWVu
TGF5ZXJNYW5hZ2VyOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyICp2aWRl
b0Z1bGxzY3JlZW5MYXllcikKK3ZvaWQgVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyOjpzZXRW
aWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyICp2aWRlb0Z1bGxzY3JlZW5MYXllciwg
c3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmIChtX3Zp
ZGVvRnVsbHNjcmVlbkxheWVyID09IHZpZGVvRnVsbHNjcmVlbkxheWVyKQorICAgIGlmIChtX3Zp
ZGVvRnVsbHNjcmVlbkxheWVyID09IHZpZGVvRnVsbHNjcmVlbkxheWVyKSB7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBtX3ZpZGVv
RnVsbHNjcmVlbkxheWVyID0gdmlkZW9GdWxsc2NyZWVuTGF5ZXI7CiAKICAgICBbQ0FUcmFuc2Fj
dGlvbiBiZWdpbl07CiAgICAgW0NBVHJhbnNhY3Rpb24gc2V0RGlzYWJsZUFjdGlvbnM6WUVTXTsK
IAotICAgIENBQ29udGV4dCAqb2xkQ29udGV4dCA9IFttX3ZpZGVvTGF5ZXIgY29udGV4dF07Ci0g
ICAgQ0FDb250ZXh0ICpuZXdDb250ZXh0ID0gbmlsOworICAgIGlmIChtX3NlY29uZGFyeVZpZGVv
TGF5ZXIgJiYgbV92aWRlb0xheWVyKSB7CisgICAgICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbkxh
eWVyKSB7CisgICAgICAgICAgICBbbV92aWRlb0Z1bGxzY3JlZW5MYXllciBpbnNlcnRTdWJsYXll
cjptX3NlY29uZGFyeVZpZGVvTGF5ZXIuZ2V0KCkgYXRJbmRleDowXTsKKyAgICAgICAgICAgIFtt
X3NlY29uZGFyeVZpZGVvTGF5ZXIgc2V0RnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCBtX3ZpZGVvRnVs
bHNjcmVlbkZyYW1lLndpZHRoKCksIG1fdmlkZW9GdWxsc2NyZWVuRnJhbWUuaGVpZ2h0KCkpXTsK
KyAgICAgICAgfSBlbHNlIGlmIChtX3ZpZGVvSW5saW5lTGF5ZXIpIHsKKyAgICAgICAgICAgIFtt
X3ZpZGVvTGF5ZXIgc2V0RnJhbWU6W21fdmlkZW9JbmxpbmVMYXllciBib3VuZHNdXTsKKyAgICAg
ICAgICAgIFttX3ZpZGVvSW5saW5lTGF5ZXIgaW5zZXJ0U3VibGF5ZXI6bV92aWRlb0xheWVyLmdl
dCgpIGF0SW5kZXg6MF07CisgICAgICAgIH0KIAotICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbkxh
eWVyICYmIG1fdmlkZW9MYXllcikgewotICAgICAgICBbbV92aWRlb0Z1bGxzY3JlZW5MYXllciBp
bnNlcnRTdWJsYXllcjptX3ZpZGVvTGF5ZXIuZ2V0KCkgYXRJbmRleDowXTsKLSAgICAgICAgW21f
dmlkZW9MYXllciBzZXRGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIG1fdmlkZW9GdWxsc2NyZWVuRnJh
bWUud2lkdGgoKSwgbV92aWRlb0Z1bGxzY3JlZW5GcmFtZS5oZWlnaHQoKSldOwotICAgICAgICBu
ZXdDb250ZXh0ID0gW21fdmlkZW9GdWxsc2NyZWVuTGF5ZXIgY29udGV4dF07Ci0gICAgfSBlbHNl
IGlmIChtX3ZpZGVvSW5saW5lTGF5ZXIgJiYgbV92aWRlb0xheWVyKSB7Ci0gICAgICAgIFttX3Zp
ZGVvTGF5ZXIgc2V0RnJhbWU6W21fdmlkZW9JbmxpbmVMYXllciBib3VuZHNdXTsKLSAgICAgICAg
W21fdmlkZW9MYXllciByZW1vdmVGcm9tU3VwZXJsYXllcl07Ci0gICAgICAgIFttX3ZpZGVvSW5s
aW5lTGF5ZXIgaW5zZXJ0U3VibGF5ZXI6bV92aWRlb0xheWVyLmdldCgpIGF0SW5kZXg6MF07Ci0g
ICAgICAgIG5ld0NvbnRleHQgPSBbbV92aWRlb0lubGluZUxheWVyIGNvbnRleHRdOwotICAgIH0g
ZWxzZSBpZiAobV92aWRlb0xheWVyKQotICAgICAgICBbbV92aWRlb0xheWVyIHJlbW92ZUZyb21T
dXBlcmxheWVyXTsKKyAgICAgICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IGZ1bGxzY3JlZW5M
YXllciA9IG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXI7CisgICAgICAgIFJldGFpblB0cjxQbGF0Zm9y
bUxheWVyPiB2aWRlb0xheWVyID0gbV92aWRlb0xheWVyOworICAgICAgICBSZXRhaW5QdHI8UGxh
dGZvcm1MYXllcj4gc2Vjb25kYXJ5VmlkZW9MYXllciA9IG1fc2Vjb25kYXJ5VmlkZW9MYXllcjsK
IAotICAgIGlmIChvbGRDb250ZXh0ICYmIG5ld0NvbnRleHQgJiYgb2xkQ29udGV4dCAhPSBuZXdD
b250ZXh0KSB7Ci0gICAgICAgIG1hY2hfcG9ydF90IGZlbmNlUG9ydCA9IFtvbGRDb250ZXh0IGNy
ZWF0ZUZlbmNlUG9ydF07Ci0gICAgICAgIFtuZXdDb250ZXh0IHNldEZlbmNlUG9ydDpmZW5jZVBv
cnRdOwotICAgICAgICBtYWNoX3BvcnRfZGVhbGxvY2F0ZShtYWNoX3Rhc2tfc2VsZigpLCBmZW5j
ZVBvcnQpOworICAgICAgICBbQ0FUcmFuc2FjdGlvbiBzZXRDb21wbGV0aW9uQmxvY2s6W2NvbXBs
ZXRpb25IYW5kbGVyLCBmdWxsc2NyZWVuTGF5ZXIsIHZpZGVvTGF5ZXIsIHNlY29uZGFyeVZpZGVv
TGF5ZXJdIHsKKyAgICAgICAgICAgIFtDQVRyYW5zYWN0aW9uIGJlZ2luXTsKKyAgICAgICAgICAg
IFtDQVRyYW5zYWN0aW9uIHNldERpc2FibGVBY3Rpb25zOllFU107CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGlmIChmdWxsc2NyZWVuTGF5ZXIpCisgICAgICAgICAgICAgICAgW3ZpZGVvTGF5
ZXIgcmVtb3ZlRnJvbVN1cGVybGF5ZXJdOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIFtzZWNvbmRhcnlWaWRlb0xheWVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKKworICAgICAg
ICAgICAgW0NBVHJhbnNhY3Rpb24gc2V0Q29tcGxldGlvbkJsb2NrOltjb21wbGV0aW9uSGFuZGxl
cl0geworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgICAgICB9
XTsKKyAgICAgICAgICAgIFtDQVRyYW5zYWN0aW9uIGNvbW1pdF07CisgICAgICAgIH1dOworICAg
IH0gZWxzZSBpZiAobV92aWRlb0xheWVyKSB7CisgICAgICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVl
bkxheWVyKSB7CisgICAgICAgICAgICBbbV92aWRlb0Z1bGxzY3JlZW5MYXllciBpbnNlcnRTdWJs
YXllcjptX3ZpZGVvTGF5ZXIuZ2V0KCkgYXRJbmRleDowXTsKKyAgICAgICAgICAgIFttX3ZpZGVv
TGF5ZXIgc2V0RnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCBtX3ZpZGVvRnVsbHNjcmVlbkZyYW1lLndp
ZHRoKCksIG1fdmlkZW9GdWxsc2NyZWVuRnJhbWUuaGVpZ2h0KCkpXTsKKyAgICAgICAgfSBlbHNl
IGlmIChtX3ZpZGVvSW5saW5lTGF5ZXIpIHsKKyAgICAgICAgICAgIFttX3ZpZGVvTGF5ZXIgc2V0
RnJhbWU6W21fdmlkZW9JbmxpbmVMYXllciBib3VuZHNdXTsKKyAgICAgICAgICAgIFttX3ZpZGVv
TGF5ZXIgcmVtb3ZlRnJvbVN1cGVybGF5ZXJdOworICAgICAgICAgICAgW21fdmlkZW9JbmxpbmVM
YXllciBpbnNlcnRTdWJsYXllcjptX3ZpZGVvTGF5ZXIuZ2V0KCkgYXRJbmRleDowXTsKKyAgICAg
ICAgfSBlbHNlCisgICAgICAgICAgICBbbV92aWRlb0xheWVyIHJlbW92ZUZyb21TdXBlcmxheWVy
XTsKKworICAgICAgICBDQUNvbnRleHQgKm9sZENvbnRleHQgPSBbbV92aWRlb0Z1bGxzY3JlZW5M
YXllciBjb250ZXh0XTsKKyAgICAgICAgQ0FDb250ZXh0ICpuZXdDb250ZXh0ID0gW21fdmlkZW9J
bmxpbmVMYXllciBjb250ZXh0XTsKKyAgICAgICAgaWYgKG9sZENvbnRleHQgJiYgbmV3Q29udGV4
dCAmJiBvbGRDb250ZXh0ICE9IG5ld0NvbnRleHQpIHsKKyAgICAgICAgICAgIG1hY2hfcG9ydF90
IGZlbmNlUG9ydCA9IFtvbGRDb250ZXh0IGNyZWF0ZUZlbmNlUG9ydF07CisgICAgICAgICAgICBb
bmV3Q29udGV4dCBzZXRGZW5jZVBvcnQ6ZmVuY2VQb3J0XTsKKyAgICAgICAgICAgIG1hY2hfcG9y
dF9kZWFsbG9jYXRlKG1hY2hfdGFza19zZWxmKCksIGZlbmNlUG9ydCk7CisgICAgICAgIH0KKwor
ICAgICAgICBbQ0FUcmFuc2FjdGlvbiBzZXRDb21wbGV0aW9uQmxvY2s6W2NvbXBsZXRpb25IYW5k
bGVyXSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICB9XTsKKyAg
ICB9IGVsc2UgeworICAgICAgICBbQ0FUcmFuc2FjdGlvbiBzZXRDb21wbGV0aW9uQmxvY2s6W2Nv
bXBsZXRpb25IYW5kbGVyXSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAg
ICAgICB9XTsKICAgICB9CisKICAgICBbQ0FUcmFuc2FjdGlvbiBjb21taXRdOwogfQogCkBAIC0x
MjQsMTcgKzE2NiwxOCBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcjo6c2V0Vmlk
ZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0IHZpZGVvRnVsbHNjcgogICAgIGlmICghbV92aWRl
b0Z1bGxzY3JlZW5MYXllcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1fdmlkZW9MYXll
cikKLSAgICAgICAgW21fdmlkZW9MYXllciBzZXRGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIHZpZGVv
RnVsbHNjcmVlbkZyYW1lLndpZHRoKCksIHZpZGVvRnVsbHNjcmVlbkZyYW1lLmhlaWdodCgpKV07
CisgICAgUGxhdGZvcm1MYXllciAqYWN0aXZlTGF5ZXIgPSBtX3NlY29uZGFyeVZpZGVvTGF5ZXIu
Z2V0KCkgPyBtX3NlY29uZGFyeVZpZGVvTGF5ZXIuZ2V0KCkgOiBtX3ZpZGVvTGF5ZXIuZ2V0KCk7
CisgICAgW2FjdGl2ZUxheWVyIHNldEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgdmlkZW9GdWxsc2Ny
ZWVuRnJhbWUud2lkdGgoKSwgdmlkZW9GdWxsc2NyZWVuRnJhbWUuaGVpZ2h0KCkpXTsKIH0KIAog
dm9pZCBWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXI6OmRpZERlc3Ryb3lWaWRlb0xheWVyKCkK
IHsKLSAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5MYXllcikKLSAgICAgICAgW21fdmlkZW9MYXll
ciByZW1vdmVGcm9tU3VwZXJsYXllcl07CisgICAgW21fdmlkZW9MYXllciByZW1vdmVGcm9tU3Vw
ZXJsYXllcl07CisgICAgW21fc2Vjb25kYXJ5VmlkZW9MYXllciByZW1vdmVGcm9tU3VwZXJsYXll
cl07CiAKICAgICBtX3ZpZGVvSW5saW5lTGF5ZXIgPSBuaWw7CiAgICAgbV92aWRlb0xheWVyID0g
bmlsOworICAgIG1fc2Vjb25kYXJ5VmlkZW9MYXllciA9IG5pbDsKIH0KIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xs
ZXJBVktpdC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyQVZLaXQubW0KaW5kZXggZTVjYTQ3MmZiYTBjNzhlYzA4OWJmNWUyMDUzMzc2
NDI3ODk1ZjljYi4uNmIwZGJjZjY1Yzg3ODQ2YTAxNDkwNzk4NGQ5MzBhNTk4YWU5MzU5ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXJBVktpdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tCkBAIC0yNDcsOSArMjQ3LDEwIEBAIHZvaWQg
V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmRpZFNldHVwRnVsbHNjcmVlbigp
CiAgICAgUmV0YWluUHRyPENBTGF5ZXI+IHZpZGVvRnVsbHNjcmVlbkxheWVyID0gW21fdmlkZW9G
dWxsc2NyZWVuVmlldyBsYXllcl07CiAgICAgV2ViVGhyZWFkUnVuKFtwcm90ZWN0ZWRUaGlzLCB0
aGlzLCB2aWRlb0Z1bGxzY3JlZW5MYXllcl0gewogICAgICAgICBbdmlkZW9GdWxsc2NyZWVuTGF5
ZXIgc2V0QmFja2dyb3VuZENvbG9yOmNhY2hlZENHQ29sb3IoV2ViQ29yZTo6Q29sb3I6OnRyYW5z
cGFyZW50KV07Ci0gICAgICAgIG1fbW9kZWwtPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKHZpZGVv
RnVsbHNjcmVlbkxheWVyLmdldCgpKTsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hf
Z2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMsIHRoaXNdIHsKLSAgICAgICAgICAgIG1f
aW50ZXJmYWNlLT5lbnRlckZ1bGxzY3JlZW4oKTsKKyAgICAgICAgbV9tb2RlbC0+c2V0VmlkZW9G
dWxsc2NyZWVuTGF5ZXIodmlkZW9GdWxsc2NyZWVuTGF5ZXIuZ2V0KCksIFtwcm90ZWN0ZWRUaGlz
LCB0aGlzXSB7CisgICAgICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9x
dWV1ZSgpLCBbcHJvdGVjdGVkVGhpcywgdGhpc10geworICAgICAgICAgICAgICAgIG1faW50ZXJm
YWNlLT5lbnRlckZ1bGxzY3JlZW4oKTsKKyAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKICAg
ICB9KTsKIH0KQEAgLTI1OSw5ICsyNjAsMTAgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyQ29udGV4dDo6ZGlkRXhpdEZ1bGxzY3JlZW4oKQogICAgIEFTU0VSVChpc1VJVGhyZWFk
KCkpOwogICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gcHJv
dGVjdGVkVGhpcyh0aGlzKTsKICAgICBXZWJUaHJlYWRSdW4oW3Byb3RlY3RlZFRoaXMsIHRoaXNd
IHsKLSAgICAgICAgbV9tb2RlbC0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIobmlsKTsKLSAgICAg
ICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRo
aXMsIHRoaXNdIHsKLSAgICAgICAgICAgIG1faW50ZXJmYWNlLT5jbGVhbnVwRnVsbHNjcmVlbigp
OworICAgICAgICBtX21vZGVsLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihuaWwsIFtwcm90ZWN0
ZWRUaGlzLCB0aGlzXSB7CisgICAgICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRf
bWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcywgdGhpc10geworICAgICAgICAgICAgICAgIG1f
aW50ZXJmYWNlLT5jbGVhbnVwRnVsbHNjcmVlbigpOworICAgICAgICAgICAgfSk7CiAgICAgICAg
IH0pOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9j
b2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCmluZGV4IDM1YmE3NTI2ZmE5
ODJiZjVjMzA2MzFiZmFlYzZiMDZhYmYwZWNjYjQuLmVlZWNjNjQyY2Y4MjFkMjA2NjNlNTcyYTUw
ZmQzZTkzYzQ5NDRiZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29j
b2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KQEAgLTM2OSwxNCArMzY5
LDE2IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkU2V0dXBGdWxsc2NyZWVu
KHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICBzdGQ6OnRpZShtb2RlbCwgaW50ZXJmYWNlKSA9IGVu
c3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7CiAKICAgICBpbnRlcmZhY2UtPmxheWVy
SG9zdGluZ0NvbnRleHQoKS0+c2V0Um9vdExheWVyKHZpZGVvTGF5ZXIpOwotICAgIG1vZGVsLT5z
ZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2aWRlb0xheWVyKTsKLQotICAgIFtDQVRyYW5zYWN0aW9u
IGNvbW1pdF07CiAKICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcj4gc3Ryb25n
VGhpcyh0aGlzKTsKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgp
LCBbc3Ryb25nVGhpcywgdGhpcywgY29udGV4dElkXSB7Ci0gICAgICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpFbnRlckZ1bGxzY3JlZW4o
Y29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgCisgICAgbW9kZWwtPnNldFZpZGVv
RnVsbHNjcmVlbkxheWVyKHZpZGVvTGF5ZXIsIFtzdHJvbmdUaGlzLCB0aGlzLCBjb250ZXh0SWRd
IHsKKyAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3N0
cm9uZ1RoaXMsIHRoaXMsIGNvbnRleHRJZF0geworICAgICAgICAgICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkVudGVyRnVsbHNjcmVlbihj
b250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgfSk7CiAgICAgfSk7CisgICAg
CisgICAgW0NBVHJhbnNhY3Rpb24gY29tbWl0XTsKIH0KICAgICAKIHZvaWQgV2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlcjo6ZGlkRW50ZXJGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKQEAg
LTQwNywxNyArNDA5LDIxIEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkRXhp
dEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKQogICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbFZpZGVvRWxlbWVudD4gbW9kZWw7CiAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUNvbnRleHQ+IGludGVyZmFjZTsKICAgICBzdGQ6OnRpZShtb2RlbCwgaW50
ZXJmYWNlKSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7Ci0KLSAgICBtb2Rl
bC0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIobmlsKTsKLQogICAgIFJlZlB0cjxXZWJWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyPiBzdHJvbmdUaGlzKHRoaXMpOwotICAgIGRpc3BhdGNoX2FzeW5jKGRp
c3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtzdHJvbmdUaGlzLCBjb250ZXh0SWQsIGludGVyZmFj
ZV0gewotICAgICAgICBpZiAoaW50ZXJmYWNlLT5sYXllckhvc3RpbmdDb250ZXh0KCkpIHsKLSAg
ICAgICAgICAgIGludGVyZmFjZS0+bGF5ZXJIb3N0aW5nQ29udGV4dCgpLT5zZXRSb290TGF5ZXIo
bnVsbHB0cik7Ci0gICAgICAgICAgICBpbnRlcmZhY2UtPnNldExheWVySG9zdGluZ0NvbnRleHQo
bnVsbHB0cik7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHN0cm9uZ1RoaXMtPm1fcGFnZSkKLSAg
ICAgICAgICAgIHN0cm9uZ1RoaXMtPm1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5OjpDbGVhbnVwRnVsbHNjcmVlbihjb250ZXh0SWQpLCBzdHJvbmdU
aGlzLT5tX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAKKyAgICBtb2RlbC0+d2FpdEZvclByZXBhcmVk
Rm9ySW5saW5lVGhlbihbc3Ryb25nVGhpcywgdGhpcywgY29udGV4dElkLCBpbnRlcmZhY2UsIG1v
ZGVsXSB7CisgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCks
IFtzdHJvbmdUaGlzLCB0aGlzLCBjb250ZXh0SWQsIGludGVyZmFjZSwgbW9kZWxdIHsKKyAgICAg
ICAgICAgIG1vZGVsLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihuaWwsIFtzdHJvbmdUaGlzLCB0
aGlzLCBjb250ZXh0SWQsIGludGVyZmFjZV0geworICAgICAgICAgICAgICAgIGRpc3BhdGNoX2Fz
eW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtzdHJvbmdUaGlzLCB0aGlzLCBjb250ZXh0
SWQsIGludGVyZmFjZV0geworICAgICAgICAgICAgICAgICAgICBpZiAoaW50ZXJmYWNlLT5sYXll
ckhvc3RpbmdDb250ZXh0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludGVyZmFjZS0+
bGF5ZXJIb3N0aW5nQ29udGV4dCgpLT5zZXRSb290TGF5ZXIobnVsbHB0cik7CisgICAgICAgICAg
ICAgICAgICAgICAgICBpbnRlcmZhY2UtPnNldExheWVySG9zdGluZ0NvbnRleHQobnVsbHB0cik7
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0cm9uZ1Ro
aXMtPm1fcGFnZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9uZ1RoaXMtPm1fcGFnZS0+
c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpDbGVhbnVwRnVs
bHNjcmVlbihjb250ZXh0SWQpLCBzdHJvbmdUaGlzLT5tX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKICAgICB9KTsKIH0K
ICAgICAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280005</attachid>
            <date>2016-05-27 15:59:06 -0700</date>
            <delta_ts>2016-05-27 16:57:16 -0700</delta_ts>
            <desc>Patch for landing.</desc>
            <filename>bug-158148-20160527160017.patch</filename>
            <type>text/plain</type>
            <size>45281</size>
            <attacher name="Jeremy Jones">jeremyj-wk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxNDU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzQ1ZGRkZGVhYzk0MmE2
YTBkZDY5ODBjZDY0ODI5OTRhYmUyNDIxMy4uZTlmMWY5MDA0ZDQ2MmIwOTdmMjJiNzljOGQ3YzMw
OTBkYWIwMWE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDE2LTA1LTI3ICBKZXJl
bXkgSm9uZXMgIDxqZXJlbXlqQGFwcGxlLmNvbT4KKworICAgICAgICBEZWNyZWFzZSBmbGlja2Vy
IHdoZW4gY2hhbmdpbmcgdmlkZW8gcHJlc2VudGF0aW9uIG1vZGUuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTgxNDgKKyAgICAgICAgcmRhcjovL3By
b2JsZW0vMjQ0NzY5NDkKKworICAgICAgICBSZXZpZXdlZCBieSBKZXIgTm9ibGUuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhlcmUgaXMgbm8gYmVoYXZpb3IgY2hhbmdlLiBUaGlz
IGNoYW5nZSBpcyBhYm91dCB0aGUgdGltaW5nIG9mCisgICAgICAgIG1vdmluZyBBVlBsYXllckxh
eWVycyBiZXR3ZWVuIGxheWVycyB0byBwcmV2ZW50IGZsaWNrZXIuCisKKyAgICAgICAgMSkgTW92
aW5nIGFuIEFWUGxheWVyTGF5ZXIgYmV0d2VlbiBDQUNvbnRleHRzIGNhbiBmbGlja2VyLiBTbyBh
bHdheXMga2VlcCB0d28KKyAgICAgICAgQVZQbGF5ZXJMYXllcnMgYXJvdW5kIGFuZCBhZGQgYW5k
IHJlbW92ZSB0aGVtIGZyb20gdGhlIGlubGluZSBhbmQgZnVsbHNjcmVlbiBjb250ZXh0cy4KKyAg
ICAgICAgMikgV2FpdCB0byBzaG93IHRoZSBpbmxpbmUgcGxhY2Vob2xkZXIgdW50aWwgdGhlIGZ1
bGxzY3JlZW4gdmlkZW8gbGF5ZXIgaGFzIGJlZW4gaW5zdGFsbGVkLgorICAgICAgICAzKSBXYWl0
IHRvIHJlbW92ZSB0aGUgZnVsbHNjcmVlbiB2aWRlbyBsYXllciB1bnRpbCB0aGUgcGxhY2Vob2xk
ZXIgaGFzIGJlZW4gcmVtb3ZlZC4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFjb250cm9scy9N
ZWRpYUNvbnRyb2xzSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzSG9z
dDo6aXNWaWRlb0xheWVySW5saW5lKTogRXhwb3NlIGlzVmlkZW9MYXllcklubGluZSB0byB0aGUg
c2hhZG93IERPTS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNIb3N0OjpzZXRQcmVw
YXJlZEZvcklubGluZSk6IEV4cG9zZSBzZXRQcmVwYXJlZEZvcklubGluZSB0byB0aGUgc2hhZG93
IERPTS4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3Qu
aDogQWRkIHNldFByZXBhcmVkRm9ySW5saW5lIGFuZCBpc1ZpZGVvTGF5ZXJJbmxpbmUKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuaWRsOiBBZGQgc2V0
UHJlcGFyZWRGb3JJbmxpbmUgYW5kIGlzVmlkZW9MYXllcklubGluZQorICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFjb250cm9scy9tZWRpYUNvbnRyb2xzQXBwbGUuanM6CisgICAgICAgIChDb250cm9s
bGVyLnByb3RvdHlwZS5zaG93SW5saW5lUGxheWJhY2tQbGFjZWhvbGRlcldoZW5TYWZlKTogV2Fp
dCB0byBzaG93IHBsYWNlaG9sZGVyIHdoZW4gZW50ZXJpbmcgZnVsbHNjcmVlbi4KKyAgICAgICAg
KENvbnRyb2xsZXIucHJvdG90eXBlLmhhbmRsZVByZXNlbnRhdGlvbk1vZGVDaGFuZ2UpOiBXYWl0
IHRvIHNob3cgcGxhY2Vob2xkZXIsIGFuZCBub3RpZnkgd2hlbiBwbGFjZWhvbGRlciBpcyByZW1v
dmVkLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRQcmVwYXJlZEZvcklubGluZSk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp3YWl0Rm9yUHJlcGFyZWRGb3JJbmxpbmVUaGVuKTog
VXNlZCB0byBkZWxheSBmdWxsc2NyZWVuIGNsZWFudXAgdW50aWwgcGxhY2Vob2xkZXIgaXMgcmVt
b3ZlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNldFZpZGVvRnVsbHNj
cmVlbkxheWVyKTogQWRkIGEgY2FsbGJhY2sgc28gd2UgY2FuIHdhaXQgdW50aWwgdGhpcyBjb21w
bGV0ZXMgYmVmb3JlIGNvbnRpbnVpbmcuCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50
Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojppc1ZpZGVvTGF5ZXJJbmxp
bmUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6d2FpdEZvclByZXBhcmVk
Rm9ySW5saW5lVGhlbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRW
aWRlb0Z1bGxzY3JlZW5MYXllcik6IEFkZCBjb21wbGV0aW9uSGFuZGxlci4KKyAgICAgICAgKiBw
bGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnNldFZp
ZGVvRnVsbHNjcmVlbkxheWVyKTogQWRkIGNvbXBsZXRpb25IYW5kbGVyLgorICAgICAgICAoV2Vi
Q29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OndhaXRGb3JQcmVwYXJl
ZEZvcklubGluZVRoZW4pOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9XZWJWaWRl
b0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNj
cmVlbk1vZGVsVmlkZW9FbGVtZW50OjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcik6IEFkZCBjb21w
bGV0aW9uSGFuZGxlci4KKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVt
ZW50Ojp3YWl0Rm9yUHJlcGFyZWRGb3JJbmxpbmVUaGVuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6
c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIpOiBBZGQgY29tcGxldGlvbkhhbmRsZXIuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcik6IEFkZCBjb21wbGV0aW9uSGFuZGxl
ci4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTo6c2V0VmlkZW9GdWxs
c2NyZWVuTGF5ZXIpOiBBZGQgY29tcGxldGlvbkhhbmRsZXIuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVBVlBsYXllckxheWVyKTog
Q3JlYXRlIHR3byB2aWRlbyBsYXllcnMuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDOjpkZXN0cm95VmlkZW9MYXllcik6IEFsbG93IHR3byB2aWRl
byBsYXllcnMuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcik6IEFkZCBjb21wbGV0aW9uSGFuZGxlci4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVw
ZGF0ZVZpZGVvTGF5ZXJHcmF2aXR5KTogQWxsb3cgdHdvIHZpZGVvIGxheWVycy4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW06CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmFkZERp
c3BsYXlMYXllcik6IEFsbG93IHR3byB2aWRlbyBsYXllcnMuCisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxh
eWVyKTogQWRkIGNvbXBsZXRpb25IYW5kbGVyLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6Y3JlYXRlUHJldmlld0xheWVycyk6IEFs
bG93IHR3byB2aWRlbyBsYXllcnMuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKTogQWRkIGNvbXBs
ZXRpb25IYW5kbGVyLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci5tbToK
KyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcjo6c2V0VmlkZW9M
YXllcnMpOiBBbGxvdyB0d28gdmlkZW8gbGF5ZXJzLgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9G
dWxsc2NyZWVuTGF5ZXJNYW5hZ2VyOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcik6IEFkZCBjb21w
bGV0aW9uSGFuZGxlci4KKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnVsbHNjcmVlbkxheWVyTWFu
YWdlcjo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUpOiBBbGxvdyB0d28gdmlkZW8gbGF5ZXJzLgor
ICAgICAgICAoV2ViQ29yZTo6VmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyOjpkaWREZXN0cm95
VmlkZW9MYXllcik6IEFsbG93IHR3byB2aWRlbyBsYXllcnMuCisgICAgICAgIChXZWJDb3JlOjpW
aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXI6OnNldFZpZGVvTGF5ZXIpOiBEZWxldGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW06
CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6ZGlkU2V0dXBG
dWxsc2NyZWVuKTogVXNlIGNvbXBsZXRpb25IYW5kbGVyLiAKKyAgICAgICAgKFdlYlZpZGVvRnVs
bHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpkaWRFeGl0RnVsbHNjcmVlbik6IFVzZSBjb21wbGV0
aW9uSGFuZGxlci4KKwogMjAxNi0wNS0yNyAgQWRhbSBCZXJna3Zpc3QgIDxhZGFtLmJlcmdrdmlz
dEBlcmljc3Nvbi5jb20+CiAKICAgICAgICAgV2ViUlRDOiBVcGRhdGUgUlRDUGVlckNvbm5lY3Rp
b24gb3ZlcmxvYWRlZCBsZWdhY3kgb3BlcmF0aW9ucyB0byByZXR1cm4gYSBQcm9taXNlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKaW5kZXggOTExZDExMzQ3NDAzMzNhYjI2YTc4ZDNhMDg2ODQ2MjRlOTFmMjYzZS4uNTg5ZTY2
ZjAxZTUxMmY3NGI3Y2ZjMWRhMWM2MDA3OWNlYzZlMDQ2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE5IEBACisyMDE2LTA1LTI3ICBKZXJlbXkgSm9uZXMgIDxqZXJlbXlqQGFwcGxlLmNvbT4KKwor
ICAgICAgICBEZWNyZWFzZSBmbGlja2VyIHdoZW4gY2hhbmdpbmcgdmlkZW8gcHJlc2VudGF0aW9u
IG1vZGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTgxNDgKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vMjQ0NzY5NDkKKworICAgICAgICBSZXZpZXdl
ZCBieSBUaW0gSG9ydG9uLgorCisgICAgICAgIFByZXZlbnQgZmxpY2tlciBieSB1c2luZyBzZXRW
aWRlb0Z1bGxzY3JlZW5MYXllciB3aXRoIGEgY29tcGxldGlvbiBoYW5kbGVyIHRvIGRlbGF5IAor
ICAgICAgICBlbnRlciBmdWxsc2NyZWVuIGFuZCBjbGVhbnVwIGZ1bGxzY3JlZW4gdW50aWwgdGhl
IHZpZGVvIGxheWVyIGhhcyBjb21wbGV0ZWx5IGJlZW4KKyAgICAgICAgaW5zdGFsbGVkIG9yIHJl
bW92ZWQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRp
ZFNldHVwRnVsbHNjcmVlbik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXI6OmRpZEV4aXRGdWxsc2NyZWVuKToKKwogMjAxNi0wNS0yNyAgQWxleCBDaHJpc3RlbnNl
biAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEV4cG9zZSBjb250ZW50IGV4
dGVuc2lvbiBmYWlsdXJlIGVycm9yIGNvZGVzIGluIFNQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5jcHAKaW5k
ZXggOTExMjIzMDY0Yjk3ODBkM2E0YjEyZjE3YjAyODBiMTk5YTM5OGQ5My4uMGU2OWRmOTExZTBi
YzUwMTQ5YWNiNzM5NjFkOWJhNjFhNjYwYmUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuY3BwCkBAIC0y
MTAsNiArMjEwLDE2IEBAIGJvb2wgTWVkaWFDb250cm9sc0hvc3Q6OnN1cHBvcnRzRnVsbHNjcmVl
bigpCiAgICAgcmV0dXJuIG1fbWVkaWFFbGVtZW50LT5zdXBwb3J0c0Z1bGxzY3JlZW4oSFRNTE1l
ZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQpOwogfQogCitib29s
IE1lZGlhQ29udHJvbHNIb3N0Ojppc1ZpZGVvTGF5ZXJJbmxpbmUoKQoreworICAgIHJldHVybiBt
X21lZGlhRWxlbWVudC0+aXNWaWRlb0xheWVySW5saW5lKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250
cm9sc0hvc3Q6OnNldFByZXBhcmVkRm9ySW5saW5lKGJvb2wgdmFsdWUpCit7CisgICAgbV9tZWRp
YUVsZW1lbnQtPnNldFByZXBhcmVkRm9ySW5saW5lKHZhbHVlKTsKK30KKwogYm9vbCBNZWRpYUNv
bnRyb2xzSG9zdDo6dXNlckdlc3R1cmVSZXF1aXJlZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuICFt
X21lZGlhRWxlbWVudC0+bWVkaWFTZXNzaW9uKCkucGxheWJhY2tQZXJtaXR0ZWQoKm1fbWVkaWFF
bGVtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9s
cy9NZWRpYUNvbnRyb2xzSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRy
b2xzL01lZGlhQ29udHJvbHNIb3N0LmgKaW5kZXggNGJhM2NhMzljYTk2M2JlYTMyMTZlY2EwMzA2
NGQyYzA2ZTIwMDY3ZS4uY2YwOTc1YzM1MTY4YjJhNWNhNTY1MzY1YTJhZGQ4YTk5ODRhN2M2MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29u
dHJvbHNIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01l
ZGlhQ29udHJvbHNIb3N0LmgKQEAgLTY0LDcgKzY0LDkgQEAgcHVibGljOgogICAgIHZvaWQgdXBk
YXRlVGV4dFRyYWNrQ29udGFpbmVyKCk7CiAgICAgYm9vbCBhbGxvd3NJbmxpbmVNZWRpYVBsYXli
YWNrKCkgY29uc3Q7CiAgICAgYm9vbCBzdXBwb3J0c0Z1bGxzY3JlZW4oKTsKKyAgICBib29sIGlz
VmlkZW9MYXllcklubGluZSgpOwogICAgIGJvb2wgdXNlckdlc3R1cmVSZXF1aXJlZCgpIGNvbnN0
OworICAgIHZvaWQgc2V0UHJlcGFyZWRGb3JJbmxpbmUoYm9vbCk7CiAKICAgICB2b2lkIHVwZGF0
ZUNhcHRpb25EaXNwbGF5U2l6ZXMoKTsKICAgICB2b2lkIGVudGVyZWRGdWxsc2NyZWVuKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250
cm9sc0hvc3QuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlh
Q29udHJvbHNIb3N0LmlkbAppbmRleCA3YjA3MDZkOTVjNmZjYzllY2QzMjQxMzBlMzFjZDdiZTZj
ZWJmMjQzLi4wMDEzNDM1MDY1NjUwM2NkYTc2MmRjMDIzYzYyOTIzMDhjYmIxY2NlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hv
c3QuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNv
bnRyb2xzSG9zdC5pZGwKQEAgLTQyLDkgKzQyLDExIEBAIGVudW0gRGV2aWNlVHlwZSB7CiAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIFRleHRUcmFjayBjYXB0aW9uTWVudUF1dG9tYXRpY0l0ZW07CiAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBjYXB0aW9uRGlzcGxheU1vZGU7CiAgICAg
dm9pZCBzZXRTZWxlY3RlZFRleHRUcmFjayhUZXh0VHJhY2s/IHRyYWNrKTsKKyAgICB2b2lkIHNl
dFByZXBhcmVkRm9ySW5saW5lKGJvb2xlYW4gcHJlcGFyZWQpOwogICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBIVE1MRWxlbWVudCB0ZXh0VHJhY2tDb250YWluZXI7CiAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIGJvb2xlYW4gYWxsb3dzSW5saW5lTWVkaWFQbGF5YmFjazsKICAgICByZWFkb25seSBhdHRy
aWJ1dGUgYm9vbGVhbiBzdXBwb3J0c0Z1bGxzY3JlZW47CisgICAgcmVhZG9ubHkgYXR0cmlidXRl
IGJvb2xlYW4gaXNWaWRlb0xheWVySW5saW5lOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29s
ZWFuIHVzZXJHZXN0dXJlUmVxdWlyZWQ7CiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3Ry
aW5nIGV4dGVybmFsRGV2aWNlRGlzcGxheU5hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvbWVkaWFDb250cm9sc0FwcGxlLmpzIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL21lZGlhQ29udHJvbHNBcHBsZS5qcwppbmRleCA4
Mjg1ZTg2MDhlZmFiMWUzNDU5YzcyM2JiZWZlMTM3MjhjMDc5YTAxLi4wNjFhYTk1NDJlNjU0YzY2
ODY0MmYzZjkzZmVhZWY3NDAwZTUwYzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhY29udHJvbHMvbWVkaWFDb250cm9sc0FwcGxlLmpzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9tZWRpYUNvbnRyb2xzQXBwbGUuanMKQEAgLTgyLDYg
KzgyLDcgQEAgQ29udHJvbGxlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHdlYmtpdGJlZ2luZnVs
bHNjcmVlbjogJ2hhbmRsZUZ1bGxzY3JlZW5DaGFuZ2UnLAogICAgICAgICB3ZWJraXRlbmRmdWxs
c2NyZWVuOiAnaGFuZGxlRnVsbHNjcmVlbkNoYW5nZScsCiAgICAgfSwKKyAgICBQbGFjZWhvbGRl
clBvbGxpbmdEZWxheTogMzMsCiAgICAgSGlkZUNvbnRyb2xzRGVsYXk6IDQgKiAxMDAwLAogICAg
IFJld2luZEFtb3VudDogMzAsCiAgICAgTWF4aW11bVNlZWtSYXRlOiA4LApAQCAtODM3LDYgKzgz
OCwxNiBAQCBDb250cm9sbGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuY29udHJv
bHMucGljdHVyZUluUGljdHVyZUJ1dHRvbi5jbGFzc0xpc3QuYWRkKHRoaXMuQ2xhc3NOYW1lcy5o
aWRkZW4pOwogICAgIH0sCiAKKyAgICBzaG93SW5saW5lUGxheWJhY2tQbGFjZWhvbGRlcldoZW5T
YWZlOiBmdW5jdGlvbigpIHsKKyAgICAgICAgaWYgKHRoaXMucHJlc2VudGF0aW9uTW9kZSgpICE9
ICdwaWN0dXJlLWluLXBpY3R1cmUnKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlm
ICghdGhpcy5ob3N0LmlzVmlkZW9MYXllcklubGluZSkKKyAgICAgICAgICAgIHRoaXMuY29udHJv
bHMuaW5saW5lUGxheWJhY2tQbGFjZWhvbGRlci5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuQ2xhc3NO
YW1lcy5oaWRkZW4pOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzZXRUaW1lb3V0KHRoaXMu
c2hvd0lubGluZVBsYXliYWNrUGxhY2Vob2xkZXJXaGVuU2FmZS5iaW5kKHRoaXMpLCB0aGlzLlBs
YWNlaG9sZGVyUG9sbGluZ0RlbGF5KTsKKyAgICB9LAorCiAgICAgaGFuZGxlUHJlc2VudGF0aW9u
TW9kZUNoYW5nZTogZnVuY3Rpb24oZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgcHJlc2VudGF0
aW9uTW9kZSA9IHRoaXMucHJlc2VudGF0aW9uTW9kZSgpOwpAQCAtODU0LDcgKzg2NSw3IEBAIENv
bnRyb2xsZXIucHJvdG90eXBlID0gewogICAgICAgICAgICAgY2FzZSAncGljdHVyZS1pbi1waWN0
dXJlJzoKICAgICAgICAgICAgICAgICB0aGlzLmNvbnRyb2xzLnBhbmVsLmNsYXNzTGlzdC5hZGQo
dGhpcy5DbGFzc05hbWVzLnBpY3R1cmVJblBpY3R1cmUpOwogICAgICAgICAgICAgICAgIHRoaXMu
Y29udHJvbHMuaW5saW5lUGxheWJhY2tQbGFjZWhvbGRlci5jbGFzc0xpc3QuYWRkKHRoaXMuQ2xh
c3NOYW1lcy5waWN0dXJlSW5QaWN0dXJlKTsKLSAgICAgICAgICAgICAgICB0aGlzLmNvbnRyb2xz
LmlubGluZVBsYXliYWNrUGxhY2Vob2xkZXIuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLkNsYXNzTmFt
ZXMuaGlkZGVuKTsKKyAgICAgICAgICAgICAgICB0aGlzLnNob3dJbmxpbmVQbGF5YmFja1BsYWNl
aG9sZGVyV2hlblNhZmUoKTsKIAogICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbHMuaW5saW5l
UGxheWJhY2tQbGFjZWhvbGRlclRleHRUb3AuaW5uZXJUZXh0ID0gdGhpcy5VSVN0cmluZygnVGhp
cyB2aWRlbyBpcyBwbGF5aW5nIGluIFBpY3R1cmUgaW4gUGljdHVyZScpOwogICAgICAgICAgICAg
ICAgIHRoaXMuY29udHJvbHMuaW5saW5lUGxheWJhY2tQbGFjZWhvbGRlclRleHRUb3AuY2xhc3NM
aXN0LmFkZCh0aGlzLkNsYXNzTmFtZXMucGljdHVyZUluUGljdHVyZSk7CkBAIC04ODMsNiArODk0
LDcgQEAgQ29udHJvbGxlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMucmVzZXRIaWRlQ29u
dHJvbHNUaW1lcigpOwogICAgICAgICBpZiAocHJlc2VudGF0aW9uTW9kZSAhPSAnZnVsbHNjcmVl
bicgJiYgdGhpcy52aWRlby5wYXVzZWQgJiYgdGhpcy5jb250cm9sc0FyZUhpZGRlbigpKQogICAg
ICAgICAgICAgdGhpcy5zaG93Q29udHJvbHMoKTsKKyAgICAgICAgdGhpcy5ob3N0LnNldFByZXBh
cmVkRm9ySW5saW5lKHByZXNlbnRhdGlvbk1vZGUgPT09ICdpbmxpbmUnKQogICAgIH0sCiAKICAg
ICBoYW5kbGVGdWxsc2NyZWVuQ2hhbmdlOiBmdW5jdGlvbihldmVudCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IGQ3ZmQyODUwNTYwNWNhM2VkOWE0YTYyZTU1
OTUyZGRhNTgxYzY1MDAuLjMzNjA4MDQxN2UxYTE4MDI0YTk4Yjg1NWM3MmNkMjgwNTBlMDgzYmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtNTQ3MSwxNSAr
NTQ3MSw0MiBAQCBQbGF0Zm9ybUxheWVyKiBIVE1MTWVkaWFFbGVtZW50OjpwbGF0Zm9ybUxheWVy
KCkgY29uc3QKICAgICByZXR1cm4gbV9wbGF5ZXIgPyBtX3BsYXllci0+cGxhdGZvcm1MYXllcigp
IDogbnVsbHB0cjsKIH0KIAordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRQcmVwYXJlZEZvcklu
bGluZShib29sIHZhbHVlKQoreworICAgIG1fcHJlcGFyZWRGb3JJbmxpbmUgPSB2YWx1ZTsKKyAg
ICBpZiAobV9wcmVwYXJlZEZvcklubGluZSAmJiBtX3ByZXBhcmVkRm9ySW5saW5lQ29tcGxldGlv
bkhhbmRsZXIpIHsKKyAgICAgICAgbV9wcmVwYXJlZEZvcklubGluZUNvbXBsZXRpb25IYW5kbGVy
KCk7CisgICAgICAgIG1fcHJlcGFyZWRGb3JJbmxpbmVDb21wbGV0aW9uSGFuZGxlciA9IG51bGxw
dHI7CisgICAgfQorfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OndhaXRGb3JQcmVwYXJlZEZv
cklubGluZVRoZW4oc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRpb25IYW5kbGVyKQorewor
ICAgIEFTU0VSVCghbV9wcmVwYXJlZEZvcklubGluZUNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICBp
ZiAobV9wcmVwYXJlZEZvcklubGluZSkgIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBtX3ByZXBhcmVkRm9ySW5saW5lQ29t
cGxldGlvbkhhbmRsZXIgPSBjb21wbGV0aW9uSGFuZGxlcjsKK30KKwogI2lmIFBMQVRGT1JNKElP
UykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkK
IAotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9y
bUxheWVyKiBwbGF0Zm9ybUxheWVyKQorYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojppc1ZpZGVvTGF5
ZXJJbmxpbmUoKQoreworICAgIHJldHVybiAhbV92aWRlb0Z1bGxzY3JlZW5MYXllcjsKK307Cisg
ICAgCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRm
b3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyID0gcGxhdGZvcm1MYXllcjsK
LSAgICBpZiAoIW1fcGxheWVyKQorICAgIGlmICghbV9wbGF5ZXIpIHsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoKTsKICAgICAgICAgcmV0dXJuOworICAgIH0KICAgICAKLSAgICBtX3BsYXll
ci0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIocGxhdGZvcm1MYXllcik7CisgICAgbV9wbGF5ZXIt
PnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKHBsYXRmb3JtTGF5ZXIsIGNvbXBsZXRpb25IYW5kbGVy
KTsKICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKFN5bnRoZXRpY1N0eWxlQ2hhbmdlKTsKICNpZiBF
TkFCTEUoVklERU9fVFJBQ0spCiAgICAgdXBkYXRlVGV4dFRyYWNrRGlzcGxheSgpOwpAQCAtNTQ5
OSw2ICs1NTI2LDEzIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0VmlkZW9GdWxsc2NyZWVu
R3Jhdml0eShNZWRpYVBsYXllcjo6VmlkZW9HcmF2aXR5IGdyYXZpCiAgICAgaWYgKG1fcGxheWVy
KQogICAgICAgICBtX3BsYXllci0+c2V0VmlkZW9GdWxsc2NyZWVuR3Jhdml0eShncmF2aXR5KTsK
IH0KKyAgICAKKyNlbHNlCisgICAgCitib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmlzVmlkZW9MYXll
cklubGluZSgpCit7CisgICAgcmV0dXJuIHRydWU7Cit9OwogCiAjZW5kaWYKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCAzYmUyMWNmMjBhZjk4YjBkYzcwNmEyNjY4
ZDRkNTNiYWNiODVkYzAxLi5lNDRjMmZiN2ViOTRmZTM0NmIyMDMxMjM4N2EzODQzZTBhMDg1MDlm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtMTMzLDggKzEzMywx
MSBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBQbGF0Zm9ybU1lZGlhIHBsYXRmb3Jt
TWVkaWEoKSBjb25zdDsKICAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Q7
CisgICAgYm9vbCBpc1ZpZGVvTGF5ZXJJbmxpbmUoKTsKKyAgICB2b2lkIHNldFByZXBhcmVkRm9y
SW5saW5lKGJvb2wpOworICAgIHZvaWQgd2FpdEZvclByZXBhcmVkRm9ySW5saW5lVGhlbihzdGQ6
OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkhhbmRsZXIgPSBbXSB7IH0pOwogI2lmIFBMQVRG
T1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9N
T0RFKSkKLSAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqKTsK
KyAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBzdGQ6OmZ1
bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkhhbmRsZXIgPSBbXSB7IH0pOwogICAgIFBsYXRmb3Jt
TGF5ZXIqIHZpZGVvRnVsbHNjcmVlbkxheWVyKCkgY29uc3QgeyByZXR1cm4gbV92aWRlb0Z1bGxz
Y3JlZW5MYXllci5nZXQoKTsgfQogICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxv
YXRSZWN0KTsKICAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkdyYXZpdHkoTWVkaWFQbGF5ZXJF
bnVtczo6VmlkZW9HcmF2aXR5KTsKQEAgLTg0Nyw2ICs4NTAsOCBAQCBwcml2YXRlOgogICAgIFJl
ZlB0cjxOb2RlPiBtX25leHRDaGlsZE5vZGVUb0NvbnNpZGVyOwogCiAgICAgVmlkZW9GdWxsc2Ny
ZWVuTW9kZSBtX3ZpZGVvRnVsbHNjcmVlbk1vZGU7CisgICAgYm9vbCBtX3ByZXBhcmVkRm9ySW5s
aW5lOworICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBtX3ByZXBhcmVkRm9ySW5saW5lQ29tcGxl
dGlvbkhhbmRsZXI7CiAjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFC
TEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQogICAgIFJldGFpblB0cjxQbGF0Zm9ybUxheWVy
PiBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyOwogICAgIEZsb2F0UmVjdCBtX3ZpZGVvRnVsbHNjcmVl
bkZyYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViVmlk
ZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50LmgKaW5kZXggZjc3ODIy
MWQ1NDQyMmUxNDkxY2NhYzgxNjkyN2MxNDRiNjBkOGFiNy4uZDVkN2RmMzBiZThmZDEyZGViNDU5
Y2MxZTQ2NWQ3YzQ0MzllOTA3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVu
dC5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudEVudW1zLmgi
CiAjaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgogI2luY2x1ZGUgIldlYlZpZGVvRnVsbHNjcmVl
bk1vZGVsLmgiCisjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAg
LTU1LDcgKzU2LDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0V2ViVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlKFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZSopOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VmlkZW9FbGVtZW50KEhUTUxWaWRlb0VsZW1lbnQqKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCBIVE1MVmlkZW9FbGVtZW50KiB2aWRlb0VsZW1lbnQoKSBjb25z
dCB7IHJldHVybiBtX3ZpZGVvRWxlbWVudC5nZXQoKTsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciopOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciosIHN0ZDo6
ZnVuY3Rpb248dm9pZCgpPiBjb21wbGV0aW9uSGFuZGxlciA9IFtdIHsgfSk7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCB3YWl0Rm9yUHJlcGFyZWRGb3JJbmxpbmVUaGVuKHN0ZDo6ZnVuY3Rpb248
dm9pZCgpPiBjb21wbGV0aW9uSGFuZGxlciA9IFtdIHsgfSk7CiAgICAgV2ViUGxheWJhY2tTZXNz
aW9uTW9kZWxNZWRpYUVsZW1lbnQmIHBsYXliYWNrU2Vzc2lvbk1vZGVsKCkgeyByZXR1cm4gbV9w
bGF5YmFja1Nlc3Npb25Nb2RlbDsgfQogICAgIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFu
ZGxlRXZlbnQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkNvcmU6OkV2ZW50
Kikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9X
ZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1tCmluZGV4
IGQ4MGRlMTMwZTc2YzY4MjQ4MzkyNzU5YjYxYmQyNjllNmMyOTc4MzEuLmZiY2JjNmE1MjE1MWU0
ZDUyYjA1MTYzMzc5M2FkNGJiZWY5NjRlMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlk
ZW9FbGVtZW50Lm1tCkBAIC0xMjAsMTAgKzEyMCwxMiBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVl
bk1vZGVsVmlkZW9FbGVtZW50Ojp1cGRhdGVGb3JFdmVudE5hbWUoY29uc3QgV1RGOjpBdG9taWNT
dAogICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZS0+c2V0VmlkZW9EaW1lbnNpb25z
KHRydWUsIG1fdmlkZW9FbGVtZW50LT52aWRlb1dpZHRoKCksIG1fdmlkZW9FbGVtZW50LT52aWRl
b0hlaWdodCgpKTsKIH0KIAotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVu
dDo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciogdmlkZW9MYXllcikKK3Zv
aWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnNldFZpZGVvRnVsbHNjcmVl
bkxheWVyKFBsYXRmb3JtTGF5ZXIqIHZpZGVvTGF5ZXIsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5MYXllciA9PSB2
aWRlb0xheWVyKQorICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbkxheWVyID09IHZpZGVvTGF5ZXIp
IHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAgcmV0dXJuOworICAgIH0K
ICAgICAKICAgICBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyID0gdmlkZW9MYXllcjsKICNpZiBQTEFU
Rk9STShNQUMpCkBAIC0xMzMsOCArMTM1LDIyIEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9k
ZWxWaWRlb0VsZW1lbnQ6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqCiAj
ZW5kaWYKICAgICBbbV92aWRlb0Z1bGxzY3JlZW5MYXllciBzZXRCb3VuZHM6bV92aWRlb0ZyYW1l
XTsKICAgICAKLSAgICBpZiAobV92aWRlb0VsZW1lbnQpCi0gICAgICAgIG1fdmlkZW9FbGVtZW50
LT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihtX3ZpZGVvRnVsbHNjcmVlbkxheWVyLmdldCgpKTsK
KyAgICBpZiAoIW1fdmlkZW9FbGVtZW50KSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3ZpZGVvRWxlbWVudC0+c2V0VmlkZW9G
dWxsc2NyZWVuTGF5ZXIobV92aWRlb0Z1bGxzY3JlZW5MYXllci5nZXQoKSwgY29tcGxldGlvbkhh
bmRsZXIpOworfQorCit2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Ojp3
YWl0Rm9yUHJlcGFyZWRGb3JJbmxpbmVUaGVuKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoIW1fdmlkZW9FbGVtZW50KSB7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3ZpZGVvRWxl
bWVudC0+d2FpdEZvclByZXBhcmVkRm9ySW5saW5lVGhlbihjb21wbGV0aW9uSGFuZGxlcik7CiB9
CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnJlcXVlc3RGdWxs
c2NyZWVuTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9k
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNw
cAppbmRleCAxYjgxZDRkZjhhMmYwNDU1YTVlMmNjYTZiYzM2Yzc1ZjE3YjZiNjc3Li45OTA3Mzhl
Nzg3NDRlMjAxYzJkZGJhOTE2OWUwMTAxNzI1OWUxOGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC02NjAsOSArNjYwLDkgQEAg
UGxhdGZvcm1MYXllciogTWVkaWFQbGF5ZXI6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAogfQogICAg
IAogI2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BS
RVNFTlRBVElPTl9NT0RFKSkKLXZvaWQgTWVkaWFQbGF5ZXI6OnNldFZpZGVvRnVsbHNjcmVlbkxh
eWVyKFBsYXRmb3JtTGF5ZXIqIGxheWVyKQordm9pZCBNZWRpYVBsYXllcjo6c2V0VmlkZW9GdWxs
c2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciogbGF5ZXIsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBtX3ByaXZhdGUtPnNldFZpZGVvRnVsbHNjcmVlbkxh
eWVyKGxheWVyKTsKKyAgICBtX3ByaXZhdGUtPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKGxheWVy
LCBjb21wbGV0aW9uSGFuZGxlcik7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXI6OnNldFZpZGVvRnVs
bHNjcmVlbkZyYW1lKEZsb2F0UmVjdCBmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4IDkzMDUwMTcxMGUzYTliMWNlNjg0YzMzMDQ3
YzIxNTJlY2UxY2E5NzguLjIxNDY3ZmM2NzI1ODc2NzZjYjFlNDVlZGYyMjkzMTRlMjlhNDRlZjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApA
QCAtMzA4LDcgKzMwOCw3IEBAIHB1YmxpYzoKICAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxh
eWVyKCkgY29uc3Q7CiAKICNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVO
QUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCi0gICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3Jl
ZW5MYXllcihQbGF0Zm9ybUxheWVyKik7CisgICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXll
cihQbGF0Zm9ybUxheWVyKiwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRpb25IYW5kbGVy
ID0gW10geyB9KTsKICAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCk7
CiAgICAgdXNpbmcgTWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9HcmF2aXR5OwogICAgIHZvaWQgc2V0
VmlkZW9GdWxsc2NyZWVuR3Jhdml0eShWaWRlb0dyYXZpdHkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAppbmRleCA4OWMw
YzE5ZWRhY2M3NmVmN2JmYzljYjZlN2EwYjg2MjY4NzA2ZmIwLi4xMzdjZWZiMzlhZDUzNzM3ZjRh
MTRhZTYzMjk3OWIzNTg2N2VkOTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaApAQCAtNTksNyArNTksNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgeyBy
ZXR1cm4gMDsgfQogCiAjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFC
TEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQotICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0Z1
bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKikgeyB9CisgICAgdmlydHVhbCB2b2lkIHNldFZp
ZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4g
Y29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoKTsgfQogICAgIHZpcnR1YWwg
dm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3QpIHsgfQogICAgIHZpcnR1YWwg
dm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5HcmF2aXR5KE1lZGlhUGxheWVyOjpWaWRlb0dyYXZpdHkp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5Nb2RlKE1lZGlhUGxheWVy
OjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAppbmRleCA1YWQ1
ZDA4YzEyMDQ4MTdkZDczY2FkZjEyNjAzNTRkY2UyNzNkZDBlLi40ZjUzYzdjNGI2ZTNkYmE5MGNl
OTIyMTE5MGRmYmNjZjcwMTI4OTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCkBAIC0xNzIsNyAr
MTcyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwogICAgIFBsYXRmb3Jt
TGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBvdmVycmlkZTsKICNpZiBQTEFURk9STShJT1Mp
IHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCi0g
ICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKikgb3ZlcnJpZGU7
CisgICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiwgc3RkOjpm
dW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZTsKICAgICB2b2lkIHNl
dFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRW
aWRlb0Z1bGxzY3JlZW5HcmF2aXR5KE1lZGlhUGxheWVyOjpWaWRlb0dyYXZpdHkpIG92ZXJyaWRl
OwogICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTW9kZShNZWRpYVBsYXllcjo6VmlkZW9GdWxs
c2NyZWVuTW9kZSkgb3ZlcnJpZGU7CkBAIC0zMjksNiArMzI5LDcgQEAgcHJpdmF0ZToKICAgICBS
ZXRhaW5QdHI8QVZQbGF5ZXI+IG1fYXZQbGF5ZXI7CiAgICAgUmV0YWluUHRyPEFWUGxheWVySXRl
bT4gbV9hdlBsYXllckl0ZW07CiAgICAgUmV0YWluUHRyPEFWUGxheWVyTGF5ZXI+IG1fdmlkZW9M
YXllcjsKKyAgICBSZXRhaW5QdHI8QVZQbGF5ZXJMYXllcj4gbV9zZWNvbmRhcnlWaWRlb0xheWVy
OwogI2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BS
RVNFTlRBVElPTl9NT0RFKSkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9GdWxsc2NyZWVuTGF5
ZXJNYW5hZ2VyPiBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcjsKICAgICBNZWRpYVBsYXll
cjo6VmlkZW9HcmF2aXR5IG1fdmlkZW9GdWxsc2NyZWVuR3Jhdml0eTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLm1tCmluZGV4IDdjYjAyNjZhM2RjN2RhZjhjZGI5MTA3ZGUwZGMzYzM1ODY5YTNiY2YuLmE4
OTE0NDAyODE0NzE1OWEwNjE5ZmFjODNjNWMxMGYyZTJmYjY0MDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5tbQpAQCAtNzMwLDE3ICs3MzAsMjQgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpjcmVhdGVBVlBsYXllckxheWVyKCkKICAgICBtX3ZpZGVvTGF5ZXIgPSBh
ZG9wdE5TKFthbGxvY0FWUGxheWVyTGF5ZXJJbnN0YW5jZSgpIGluaXRdKTsKICAgICBbbV92aWRl
b0xheWVyIHNldFBsYXllcjptX2F2UGxheWVyLmdldCgpXTsKICAgICBbbV92aWRlb0xheWVyIHNl
dEJhY2tncm91bmRDb2xvcjpjYWNoZWRDR0NvbG9yKENvbG9yOjpibGFjayldOworCisgICAgbV9z
ZWNvbmRhcnlWaWRlb0xheWVyID0gYWRvcHROUyhbYWxsb2NBVlBsYXllckxheWVySW5zdGFuY2Uo
KSBpbml0XSk7CisgICAgW21fc2Vjb25kYXJ5VmlkZW9MYXllciBzZXRQbGF5ZXI6bV9hdlBsYXll
ci5nZXQoKV07CisgICAgW21fc2Vjb25kYXJ5VmlkZW9MYXllciBzZXRCYWNrZ3JvdW5kQ29sb3I6
Y2FjaGVkQ0dDb2xvcihDb2xvcjo6YmxhY2spXTsKKwogI2lmbmRlZiBOREVCVUcKICAgICBbbV92
aWRlb0xheWVyIHNldE5hbWU6QCJNZWRpYVBsYXllclByaXZhdGUgQVZQbGF5ZXJMYXllciJdOwor
ICAgIFttX3NlY29uZGFyeVZpZGVvTGF5ZXIgc2V0TmFtZTpAIk1lZGlhUGxheWVyUHJpdmF0ZSBB
VlBsYXllckxheWVyIHNlY29uZGFyeSJdOwogI2VuZGlmCiAgICAgW21fdmlkZW9MYXllciBhZGRP
YnNlcnZlcjptX29iamNPYnNlcnZlci5nZXQoKSBmb3JLZXlQYXRoOkAicmVhZHlGb3JEaXNwbGF5
IiBvcHRpb25zOk5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcgY29udGV4dDoodm9pZCAqKU1l
ZGlhUGxheWVyQVZGb3VuZGF0aW9uT2JzZXJ2YXRpb25Db250ZXh0QVZQbGF5ZXJMYXllcl07CiAg
ICAgdXBkYXRlVmlkZW9MYXllckdyYXZpdHkoKTsKICAgICBbbV92aWRlb0xheWVyIHNldENvbnRl
bnRzU2NhbGU6cGxheWVyKCktPmNsaWVudCgpLm1lZGlhUGxheWVyQ29udGVudHNTY2FsZSgpXTsK
KyAgICBbbV9zZWNvbmRhcnlWaWRlb0xheWVyIHNldENvbnRlbnRzU2NhbGU6cGxheWVyKCktPmNs
aWVudCgpLm1lZGlhUGxheWVyQ29udGVudHNTY2FsZSgpXTsKICAgICBJbnRTaXplIGRlZmF1bHRT
aXplID0gc25hcHBlZEludFJlY3QocGxheWVyKCktPmNsaWVudCgpLm1lZGlhUGxheWVyQ29udGVu
dEJveFJlY3QoKSkuc2l6ZSgpOwogICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OmNyZWF0ZVZpZGVvTGF5ZXIoJXApIC0gcmV0dXJuaW5nICVwIiwgdGhp
cywgbV92aWRlb0xheWVyLmdldCgpKTsKIAogI2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JN
KE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKLSAgICBtX3ZpZGVvRnVs
bHNjcmVlbkxheWVyTWFuYWdlci0+c2V0VmlkZW9MYXllcihtX3ZpZGVvTGF5ZXIuZ2V0KCksIGRl
ZmF1bHRTaXplKTsKKyAgICBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci0+c2V0VmlkZW9M
YXllcnMobV92aWRlb0xheWVyLmdldCgpLCBtX3NlY29uZGFyeVZpZGVvTGF5ZXIuZ2V0KCksIGRl
ZmF1bHRTaXplKTsKIAogI2lmIFBMQVRGT1JNKElPUykKICAgICBpZiAoW21fdmlkZW9MYXllciBy
ZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldFBJUE1vZGVFbmFibGVkOildKQpAQCAtNzQ4
LDYgKzc1NSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3Jl
YXRlQVZQbGF5ZXJMYXllcigpCiAjZW5kaWYKICNlbHNlCiAgICAgW21fdmlkZW9MYXllciBzZXRG
cmFtZTpDR1JlY3RNYWtlKDAsIDAsIGRlZmF1bHRTaXplLndpZHRoKCksIGRlZmF1bHRTaXplLmhl
aWdodCgpKV07CisgICAgW21fc2Vjb25kYXJ5VmlkZW9MYXllciBzZXRGcmFtZTpDR1JlY3RNYWtl
KDAsIDAsIGRlZmF1bHRTaXplLndpZHRoKCksIGRlZmF1bHRTaXplLmhlaWdodCgpKV07CiAjZW5k
aWYKIH0KIApAQCAtNzU4LDE0ICs3NjYsMTYgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpkZXN0cm95VmlkZW9MYXllcigpCiAKICAgICBMT0coTWVkaWEsICJNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpkZXN0cm95VmlkZW9MYXllciglcCkgLSBk
ZXN0cm95aW5nICVwIiwgdGhpcywgbV92aWRlb0xheWVyLmdldCgpKTsKIAotICAgIFttX3ZpZGVv
TGF5ZXIuZ2V0KCkgcmVtb3ZlT2JzZXJ2ZXI6bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0
aDpAInJlYWR5Rm9yRGlzcGxheSJdOwotICAgIFttX3ZpZGVvTGF5ZXIuZ2V0KCkgc2V0UGxheWVy
Om5pbF07CisgICAgW21fdmlkZW9MYXllciByZW1vdmVPYnNlcnZlcjptX29iamNPYnNlcnZlci5n
ZXQoKSBmb3JLZXlQYXRoOkAicmVhZHlGb3JEaXNwbGF5Il07CisgICAgW21fdmlkZW9MYXllciBz
ZXRQbGF5ZXI6bmlsXTsKKyAgICBbbV9zZWNvbmRhcnlWaWRlb0xheWVyIHNldFBsYXllcjpuaWxd
OwogCiAjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9f
UFJFU0VOVEFUSU9OX01PREUpKQogICAgIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLT5k
aWREZXN0cm95VmlkZW9MYXllcigpOwogI2VuZGlmCiAKICAgICBtX3ZpZGVvTGF5ZXIgPSBuaWw7
CisgICAgbV9zZWNvbmRhcnlWaWRlb0xheWVyID0gbmlsOwogfQogCiBNZWRpYVRpbWUgTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Z2V0U3RhcnREYXRlKCkgY29uc3QKQEAgLTEx
ODMsMTIgKzExOTMsMTQgQEAgUGxhdGZvcm1MYXllciogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6cGxhdGZvcm1MYXllcigpIGNvbnN0CiB9CiAKICNpZiBQTEFURk9STShJT1Mp
IHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCi12
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFZpZGVvRnVsbHNjcmVl
bkxheWVyKFBsYXRmb3JtTGF5ZXIqIHZpZGVvRnVsbHNjcmVlbkxheWVyKQordm9pZCBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0
Zm9ybUxheWVyKiB2aWRlb0Z1bGxzY3JlZW5MYXllciwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNv
bXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdl
ci0+dmlkZW9GdWxsc2NyZWVuTGF5ZXIoKSA9PSB2aWRlb0Z1bGxzY3JlZW5MYXllcikKKyAgICBp
ZiAobV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXItPnZpZGVvRnVsbHNjcmVlbkxheWVyKCkg
PT0gdmlkZW9GdWxsc2NyZWVuTGF5ZXIpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsK
ICAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAgIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5h
Z2VyLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5MYXllcik7CisgICAg
bV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXItPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKHZp
ZGVvRnVsbHNjcmVlbkxheWVyLCBjb21wbGV0aW9uSGFuZGxlcik7CiAKICAgICBpZiAobV92aWRl
b0Z1bGxzY3JlZW5MYXllck1hbmFnZXItPnZpZGVvRnVsbHNjcmVlbkxheWVyKCkgJiYgbV90ZXh0
VHJhY2tSZXByZXNlbnRhdGlvbkxheWVyKSB7CiAgICAgICAgIHN5bmNUZXh0VHJhY2tCb3VuZHMo
KTsKQEAgLTE4NzIsNiArMTg4NCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6dXBkYXRlVmlkZW9MYXllckdyYXZpdHkoKQogICAgIFtDQVRyYW5zYWN0aW9uIHNl
dERpc2FibGVBY3Rpb25zOllFU107ICAgIAogICAgIE5TU3RyaW5nKiBncmF2aXR5ID0gc2hvdWxk
TWFpbnRhaW5Bc3BlY3RSYXRpbygpID8gQVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCA6
IEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemU7CiAgICAgW21fdmlkZW9MYXllci5nZXQoKSBzZXRW
aWRlb0dyYXZpdHk6Z3Jhdml0eV07CisgICAgW21fc2Vjb25kYXJ5VmlkZW9MYXllci5nZXQoKSBz
ZXRWaWRlb0dyYXZpdHk6Z3Jhdml0eV07CiAgICAgW0NBVHJhbnNhY3Rpb24gY29tbWl0XTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAppbmRleCBkNDllM2IzMTc1YThlOGRlMmY4N2I5NDAx
ZWQzYTVmNjg4ZjlmOTkzLi5mNzFmZTQ4NTliYTBjZjQyNDlmMWJmNjAxNDJjMmQ5M2ExYjUwYzYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaApAQCAtODcsNyArODcsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBjaGFyYWN0ZXJpc3RpY3NDaGFuZ2VkKCk7CiAKICNpZiBQTEFURk9STShNQUMpICYm
IEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKLSAgICB2b2lkIHNldFZpZGVvRnVsbHNj
cmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFZpZGVvRnVs
bHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxl
dGlvbkhhbmRsZXIpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUo
RmxvYXRSZWN0KSBvdmVycmlkZTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0K
aW5kZXggMTQzYzA0NjAzZjJiN2Q2ZjQxMDUzYWVhYjM3M2Y1YTU1YzE0MjNjYi4uMmY1ODJkYmU0
NzliY2JmZWY4OTM1Y2U5MWUzYzI0N2JjYzU3YmYyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qy5tbQpAQCAtNzcwLDcgKzc3MCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDOjphZGREaXNwbGF5TGF5ZXIoQVZTYW1wbGVCdWZmZXJEaXNwbGF5CiAgICAgbV9w
bGF5ZXItPmZpcnN0VmlkZW9GcmFtZUF2YWlsYWJsZSgpOwogCiAjaWYgUExBVEZPUk0oTUFDKSAm
JiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCi0gICAgbV92aWRlb0Z1bGxzY3JlZW5M
YXllck1hbmFnZXItPnNldFZpZGVvTGF5ZXIobV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuZ2V0
KCksIHNuYXBwZWRJbnRSZWN0KG1fcGxheWVyLT5jbGllbnQoKS5tZWRpYVBsYXllckNvbnRlbnRC
b3hSZWN0KCkpLnNpemUoKSk7CisgICAgbV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXItPnNl
dFZpZGVvTGF5ZXJzKG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpLCBuaWwsIHNuYXBw
ZWRJbnRSZWN0KG1fcGxheWVyLT5jbGllbnQoKS5tZWRpYVBsYXllckNvbnRlbnRCb3hSZWN0KCkp
LnNpemUoKSk7CiAjZW5kaWYKIH0KIApAQCAtODI4LDkgKzgyOCw5IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjaGFyYWN0ZXJpc3RpY3NDaGFuZ2VkKCkKIH0K
IAogI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQot
dm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnNldFZpZGVvRnVsbHNj
cmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIgKnZpZGVvRnVsbHNjcmVlbkxheWVyKQordm9pZCBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVy
KFBsYXRmb3JtTGF5ZXIgKnZpZGVvRnVsbHNjcmVlbkxheWVyLCBzdGQ6OmZ1bmN0aW9uPHZvaWQo
KT4gY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFn
ZXItPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKHZpZGVvRnVsbHNjcmVlbkxheWVyKTsKKyAgICBt
X3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIodmlk
ZW9GdWxsc2NyZWVuTGF5ZXIsIGNvbXBsZXRpb25IYW5kbGVyKTsKIH0KIAogdm9pZCBNZWRpYVBs
YXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZs
b2F0UmVjdCBmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmgKaW5kZXggN2U0MjQwM2NlYWY4
NTYyNjMyNDU3ZTcxZGYwODI4NmU1ZDFmM2NkNy4uMmNmNTg3NzM2MjEyMDc4NDVlYjFhYTEzYzU5
MjYzZWZlZTJiZTA0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmgKQEAgLTE2MCw3ICsxNjAs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVtb3ZlVHJhY2soTWVkaWFTdHJlYW1UcmFja1By
aXZhdGUmKSBvdmVycmlkZTsKIAogI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BS
RVNFTlRBVElPTl9NT0RFKQotICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZv
cm1MYXllciopIG92ZXJyaWRlOworICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxh
dGZvcm1MYXllciosIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBjb21wbGV0aW9uSGFuZGxlcikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3QpIG92ZXJy
aWRlOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQppbmRleCBlOGNhYmVkOGMx
ZDE3MjM2NmE2OGZlZjM2NzQ3NDEyYmU3YmU5MzU5Li41ZGU0NGQwZGZmODY5NGFkZDRiNWE1MWE4
MWJiMzZkZDU4NzViZTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCkBAIC00MDQsNyAr
NDA0LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmNyZWF0
ZVByZXZpZXdMYXllcnMoKQogICAgICAgICBtX3ZpZGVvQmFja2dyb3VuZExheWVyLmdldCgpLm5h
bWUgPSBAIk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQyBwcmV2aWV3IGJhY2tn
cm91bmQgbGF5ZXIiOwogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VO
VEFUSU9OX01PREUpCi0gICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLT5zZXRW
aWRlb0xheWVyKG1fdmlkZW9CYWNrZ3JvdW5kTGF5ZXIuZ2V0KCksIHNuYXBwZWRJbnRSZWN0KG1f
cGxheWVyLT5jbGllbnQoKS5tZWRpYVBsYXllckNvbnRlbnRCb3hSZWN0KCkpLnNpemUoKSk7Cisg
ICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0xheWVycyhtX3Zp
ZGVvQmFja2dyb3VuZExheWVyLmdldCgpLCBuaWwsIHNuYXBwZWRJbnRSZWN0KG1fcGxheWVyLT5j
bGllbnQoKS5tZWRpYVBsYXllckNvbnRlbnRCb3hSZWN0KCkpLnNpemUoKSk7CiAjZW5kaWYKICAg
ICB9CiAKQEAgLTQ3NCw5ICs0NzQsOSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3Ry
ZWFtQVZGT2JqQzo6ZGlkUmVtb3ZlVHJhY2soTWVkaWFTdHJlYW1UcmFja1ByaXZhdAogfQogCiAj
aWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCi12b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVu
TGF5ZXIoUGxhdGZvcm1MYXllciAqdmlkZW9GdWxsc2NyZWVuTGF5ZXIpCit2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxh
dGZvcm1MYXllciAqdmlkZW9GdWxsc2NyZWVuTGF5ZXIsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci0+
c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIodmlkZW9GdWxsc2NyZWVuTGF5ZXIpOworICAgIG1fdmlk
ZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2aWRlb0Z1
bGxzY3JlZW5MYXllciwgY29tcGxldGlvbkhhbmRsZXIpOwogfQogCiB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRS
ZWN0IGZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0Z1bGxzY3Jl
ZW5MYXllck1hbmFnZXIuaAppbmRleCAyZDVkYjYwNDc5MDdiZDk5ODEzMGNmM2NiOTdiZDhiYjQy
MzMwNzFhLi5mZTQwMDdlZTk5MjVlZjY0NTFiNGIwMTlmMWM2YTM1YzFhYWZjYzZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9W
aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIu
aApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIklu
dFNpemUuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCisjaW5jbHVkZSA8ZnVuY3Rpb25h
bD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTQzLDggKzQ0LDggQEAgcHVibGljOgogICAgIFBsYXRmb3JtTGF5ZXIgKnZpZGVvSW5saW5lTGF5
ZXIoKSBjb25zdCB7IHJldHVybiBtX3ZpZGVvSW5saW5lTGF5ZXIuZ2V0KCk7IH0KICAgICBQbGF0
Zm9ybUxheWVyICp2aWRlb0Z1bGxzY3JlZW5MYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fdmlkZW9G
dWxsc2NyZWVuTGF5ZXIuZ2V0KCk7IH0KICAgICBGbG9hdFJlY3QgdmlkZW9GdWxsc2NyZWVuRnJh
bWUoKSBjb25zdCB7IHJldHVybiBtX3ZpZGVvRnVsbHNjcmVlbkZyYW1lOyB9Ci0gICAgdm9pZCBz
ZXRWaWRlb0xheWVyKFBsYXRmb3JtTGF5ZXIgKiwgSW50U2l6ZSBjb250ZW50U2l6ZSk7Ci0gICAg
dm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyICopOworICAgIHZvaWQg
c2V0VmlkZW9MYXllcnMoUGxhdGZvcm1MYXllciAqLCBQbGF0Zm9ybUxheWVyICosIEludFNpemUg
Y29udGVudFNpemUpOworICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1M
YXllciAqLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkhhbmRsZXIpOwogICAgIHZv
aWQgc2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0KTsKICAgICB2b2lkIGRpZERlc3Ry
b3lWaWRlb0xheWVyKCk7CiAKQEAgLTU0LDYgKzU1LDcgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5Q
dHI8UGxhdGZvcm1MYXllcj4gbV92aWRlb0lubGluZUxheWVyOwogICAgIFJldGFpblB0cjxQbGF0
Zm9ybUxheWVyPiBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyOwogICAgIFJldGFpblB0cjxQbGF0Zm9y
bUxheWVyPiBtX3ZpZGVvTGF5ZXI7CisgICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IG1fc2Vj
b25kYXJ5VmlkZW9MYXllcjsKICAgICBGbG9hdFJlY3QgbV92aWRlb0Z1bGxzY3JlZW5GcmFtZTsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvRnVsbHNjcmVlbkxh
eWVyTWFuYWdlci5tbQppbmRleCA2OGI5MjAzNGM5OGQ1YzljMDI4OGUzMjBiOTY3NDY4N2Q3NWY0
ZGFhLi4wY2QxNzJmMWM4M2NmNTNiZWZkNGJlMTI3YWZhMDlhZjM4YzA0N2FhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRl
b0Z1bGxzY3JlZW5MYXllck1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLm1t
CkBAIC02Niw1NSArNjYsOTcgQEAgVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyOjpWaWRlb0Z1
bGxzY3JlZW5MYXllck1hbmFnZXIoKQogewogfQogCi12b2lkIFZpZGVvRnVsbHNjcmVlbkxheWVy
TWFuYWdlcjo6c2V0VmlkZW9MYXllcihQbGF0Zm9ybUxheWVyICp2aWRlb0xheWVyLCBJbnRTaXpl
IGNvbnRlbnRTaXplKQordm9pZCBWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXI6OnNldFZpZGVv
TGF5ZXJzKFBsYXRmb3JtTGF5ZXIgKnZpZGVvTGF5ZXIsIFBsYXRmb3JtTGF5ZXIgKnNlY29uZGFy
eVZpZGVvTGF5ZXIsIEludFNpemUgY29udGVudFNpemUpCiB7CiAgICAgbV92aWRlb0xheWVyID0g
dmlkZW9MYXllcjsKKyAgICBtX3NlY29uZGFyeVZpZGVvTGF5ZXIgPSBzZWNvbmRhcnlWaWRlb0xh
eWVyOwogCiAgICAgW21fdmlkZW9MYXllciB3ZWJfZGlzYWJsZUFsbEFjdGlvbnNdOworICAgIFtt
X3NlY29uZGFyeVZpZGVvTGF5ZXIgd2ViX2Rpc2FibGVBbGxBY3Rpb25zXTsKICAgICBtX3ZpZGVv
SW5saW5lTGF5ZXIgPSBhZG9wdE5TKFtbV2ViVmlkZW9Db250YWluZXJMYXllciBhbGxvY10gaW5p
dF0pOwogI2lmbmRlZiBOREVCVUcKICAgICBbbV92aWRlb0lubGluZUxheWVyIHNldE5hbWU6QCJX
ZWJWaWRlb0NvbnRhaW5lckxheWVyIl07CiAjZW5kaWYKICAgICBbbV92aWRlb0lubGluZUxheWVy
IHNldEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgY29udGVudFNpemUud2lkdGgoKSwgY29udGVudFNp
emUuaGVpZ2h0KCkpXTsKICAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5MYXllcikgewotICAgICAg
ICBbbV92aWRlb0xheWVyIHNldEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgbV92aWRlb0Z1bGxzY3Jl
ZW5GcmFtZS53aWR0aCgpLCBtX3ZpZGVvRnVsbHNjcmVlbkZyYW1lLmhlaWdodCgpKV07Ci0gICAg
ICAgIFttX3ZpZGVvRnVsbHNjcmVlbkxheWVyIGluc2VydFN1YmxheWVyOm1fdmlkZW9MYXllci5n
ZXQoKSBhdEluZGV4OjBdOworICAgICAgICBbbV92aWRlb0xheWVyIHJlbW92ZUZyb21TdXBlcmxh
eWVyXTsKKyAgICAgICAgUGxhdGZvcm1MYXllciAqYWN0aXZlTGF5ZXIgPSBzZWNvbmRhcnlWaWRl
b0xheWVyID8gc2Vjb25kYXJ5VmlkZW9MYXllciA6IHZpZGVvTGF5ZXI7CisgICAgICAgIFthY3Rp
dmVMYXllciBzZXRGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIG1fdmlkZW9GdWxsc2NyZWVuRnJhbWUu
d2lkdGgoKSwgbV92aWRlb0Z1bGxzY3JlZW5GcmFtZS5oZWlnaHQoKSldOworICAgICAgICBbbV92
aWRlb0Z1bGxzY3JlZW5MYXllciBpbnNlcnRTdWJsYXllcjphY3RpdmVMYXllciBhdEluZGV4OjBd
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIFttX3ZpZGVvSW5saW5lTGF5ZXIgaW5zZXJ0U3VibGF5
ZXI6bV92aWRlb0xheWVyLmdldCgpIGF0SW5kZXg6MF07CiAgICAgICAgIFttX3ZpZGVvTGF5ZXIg
c2V0RnJhbWU6bV92aWRlb0lubGluZUxheWVyLmdldCgpLmJvdW5kc107CisgICAgICAgIFttX3Nl
Y29uZGFyeVZpZGVvTGF5ZXIgcmVtb3ZlRnJvbVN1cGVybGF5ZXJdOwogICAgIH0KIH0KIAotdm9p
ZCBWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXI6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBs
YXRmb3JtTGF5ZXIgKnZpZGVvRnVsbHNjcmVlbkxheWVyKQordm9pZCBWaWRlb0Z1bGxzY3JlZW5M
YXllck1hbmFnZXI6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIgKnZpZGVv
RnVsbHNjcmVlbkxheWVyLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkhhbmRsZXIp
CiB7Ci0gICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXIgPT0gdmlkZW9GdWxsc2NyZWVuTGF5
ZXIpCisgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXIgPT0gdmlkZW9GdWxsc2NyZWVuTGF5
ZXIpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAgcmV0dXJuOworICAg
IH0KIAogICAgIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXIgPSB2aWRlb0Z1bGxzY3JlZW5MYXllcjsK
IAogICAgIFtDQVRyYW5zYWN0aW9uIGJlZ2luXTsKICAgICBbQ0FUcmFuc2FjdGlvbiBzZXREaXNh
YmxlQWN0aW9uczpZRVNdOwogCi0gICAgQ0FDb250ZXh0ICpvbGRDb250ZXh0ID0gW21fdmlkZW9M
YXllciBjb250ZXh0XTsKLSAgICBDQUNvbnRleHQgKm5ld0NvbnRleHQgPSBuaWw7CisgICAgaWYg
KG1fc2Vjb25kYXJ5VmlkZW9MYXllciAmJiBtX3ZpZGVvTGF5ZXIpIHsKKyAgICAgICAgaWYgKG1f
dmlkZW9GdWxsc2NyZWVuTGF5ZXIpIHsKKyAgICAgICAgICAgIFttX3ZpZGVvRnVsbHNjcmVlbkxh
eWVyIGluc2VydFN1YmxheWVyOm1fc2Vjb25kYXJ5VmlkZW9MYXllci5nZXQoKSBhdEluZGV4OjBd
OworICAgICAgICAgICAgW21fc2Vjb25kYXJ5VmlkZW9MYXllciBzZXRGcmFtZTpDR1JlY3RNYWtl
KDAsIDAsIG1fdmlkZW9GdWxsc2NyZWVuRnJhbWUud2lkdGgoKSwgbV92aWRlb0Z1bGxzY3JlZW5G
cmFtZS5oZWlnaHQoKSldOworICAgICAgICB9IGVsc2UgaWYgKG1fdmlkZW9JbmxpbmVMYXllcikg
eworICAgICAgICAgICAgW21fdmlkZW9MYXllciBzZXRGcmFtZTpbbV92aWRlb0lubGluZUxheWVy
IGJvdW5kc11dOworICAgICAgICAgICAgW21fdmlkZW9JbmxpbmVMYXllciBpbnNlcnRTdWJsYXll
cjptX3ZpZGVvTGF5ZXIuZ2V0KCkgYXRJbmRleDowXTsKKyAgICAgICAgfQogCi0gICAgaWYgKG1f
dmlkZW9GdWxsc2NyZWVuTGF5ZXIgJiYgbV92aWRlb0xheWVyKSB7Ci0gICAgICAgIFttX3ZpZGVv
RnVsbHNjcmVlbkxheWVyIGluc2VydFN1YmxheWVyOm1fdmlkZW9MYXllci5nZXQoKSBhdEluZGV4
OjBdOwotICAgICAgICBbbV92aWRlb0xheWVyIHNldEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgbV92
aWRlb0Z1bGxzY3JlZW5GcmFtZS53aWR0aCgpLCBtX3ZpZGVvRnVsbHNjcmVlbkZyYW1lLmhlaWdo
dCgpKV07Ci0gICAgICAgIG5ld0NvbnRleHQgPSBbbV92aWRlb0Z1bGxzY3JlZW5MYXllciBjb250
ZXh0XTsKLSAgICB9IGVsc2UgaWYgKG1fdmlkZW9JbmxpbmVMYXllciAmJiBtX3ZpZGVvTGF5ZXIp
IHsKLSAgICAgICAgW21fdmlkZW9MYXllciBzZXRGcmFtZTpbbV92aWRlb0lubGluZUxheWVyIGJv
dW5kc11dOwotICAgICAgICBbbV92aWRlb0xheWVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKLSAg
ICAgICAgW21fdmlkZW9JbmxpbmVMYXllciBpbnNlcnRTdWJsYXllcjptX3ZpZGVvTGF5ZXIuZ2V0
KCkgYXRJbmRleDowXTsKLSAgICAgICAgbmV3Q29udGV4dCA9IFttX3ZpZGVvSW5saW5lTGF5ZXIg
Y29udGV4dF07Ci0gICAgfSBlbHNlIGlmIChtX3ZpZGVvTGF5ZXIpCi0gICAgICAgIFttX3ZpZGVv
TGF5ZXIgcmVtb3ZlRnJvbVN1cGVybGF5ZXJdOworICAgICAgICBSZXRhaW5QdHI8UGxhdGZvcm1M
YXllcj4gZnVsbHNjcmVlbkxheWVyID0gbV92aWRlb0Z1bGxzY3JlZW5MYXllcjsKKyAgICAgICAg
UmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IHZpZGVvTGF5ZXIgPSBtX3ZpZGVvTGF5ZXI7CisgICAg
ICAgIFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBzZWNvbmRhcnlWaWRlb0xheWVyID0gbV9zZWNv
bmRhcnlWaWRlb0xheWVyOwogCi0gICAgaWYgKG9sZENvbnRleHQgJiYgbmV3Q29udGV4dCAmJiBv
bGRDb250ZXh0ICE9IG5ld0NvbnRleHQpIHsKLSAgICAgICAgbWFjaF9wb3J0X3QgZmVuY2VQb3J0
ID0gW29sZENvbnRleHQgY3JlYXRlRmVuY2VQb3J0XTsKLSAgICAgICAgW25ld0NvbnRleHQgc2V0
RmVuY2VQb3J0OmZlbmNlUG9ydF07Ci0gICAgICAgIG1hY2hfcG9ydF9kZWFsbG9jYXRlKG1hY2hf
dGFza19zZWxmKCksIGZlbmNlUG9ydCk7CisgICAgICAgIFtDQVRyYW5zYWN0aW9uIHNldENvbXBs
ZXRpb25CbG9jazpbY29tcGxldGlvbkhhbmRsZXIsIGZ1bGxzY3JlZW5MYXllciwgdmlkZW9MYXll
ciwgc2Vjb25kYXJ5VmlkZW9MYXllcl0geworICAgICAgICAgICAgW0NBVHJhbnNhY3Rpb24gYmVn
aW5dOworICAgICAgICAgICAgW0NBVHJhbnNhY3Rpb24gc2V0RGlzYWJsZUFjdGlvbnM6WUVTXTsK
KyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGZ1bGxzY3JlZW5MYXllcikKKyAgICAgICAg
ICAgICAgICBbdmlkZW9MYXllciByZW1vdmVGcm9tU3VwZXJsYXllcl07CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgW3NlY29uZGFyeVZpZGVvTGF5ZXIgcmVtb3ZlRnJvbVN1cGVy
bGF5ZXJdOworCisgICAgICAgICAgICBbQ0FUcmFuc2FjdGlvbiBzZXRDb21wbGV0aW9uQmxvY2s6
W2NvbXBsZXRpb25IYW5kbGVyXSB7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
KTsKKyAgICAgICAgICAgIH1dOworICAgICAgICAgICAgW0NBVHJhbnNhY3Rpb24gY29tbWl0XTsK
KyAgICAgICAgfV07CisgICAgfSBlbHNlIGlmIChtX3ZpZGVvTGF5ZXIpIHsKKyAgICAgICAgaWYg
KG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXIpIHsKKyAgICAgICAgICAgIFttX3ZpZGVvRnVsbHNjcmVl
bkxheWVyIGluc2VydFN1YmxheWVyOm1fdmlkZW9MYXllci5nZXQoKSBhdEluZGV4OjBdOworICAg
ICAgICAgICAgW21fdmlkZW9MYXllciBzZXRGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIG1fdmlkZW9G
dWxsc2NyZWVuRnJhbWUud2lkdGgoKSwgbV92aWRlb0Z1bGxzY3JlZW5GcmFtZS5oZWlnaHQoKSld
OworICAgICAgICB9IGVsc2UgaWYgKG1fdmlkZW9JbmxpbmVMYXllcikgeworICAgICAgICAgICAg
W21fdmlkZW9MYXllciBzZXRGcmFtZTpbbV92aWRlb0lubGluZUxheWVyIGJvdW5kc11dOworICAg
ICAgICAgICAgW21fdmlkZW9MYXllciByZW1vdmVGcm9tU3VwZXJsYXllcl07CisgICAgICAgICAg
ICBbbV92aWRlb0lubGluZUxheWVyIGluc2VydFN1YmxheWVyOm1fdmlkZW9MYXllci5nZXQoKSBh
dEluZGV4OjBdOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIFttX3ZpZGVvTGF5ZXIgcmVt
b3ZlRnJvbVN1cGVybGF5ZXJdOworCisgICAgICAgIENBQ29udGV4dCAqb2xkQ29udGV4dCA9IFtt
X3ZpZGVvRnVsbHNjcmVlbkxheWVyIGNvbnRleHRdOworICAgICAgICBDQUNvbnRleHQgKm5ld0Nv
bnRleHQgPSBbbV92aWRlb0lubGluZUxheWVyIGNvbnRleHRdOworICAgICAgICBpZiAob2xkQ29u
dGV4dCAmJiBuZXdDb250ZXh0ICYmIG9sZENvbnRleHQgIT0gbmV3Q29udGV4dCkgeworICAgICAg
ICAgICAgbWFjaF9wb3J0X3QgZmVuY2VQb3J0ID0gW29sZENvbnRleHQgY3JlYXRlRmVuY2VQb3J0
XTsKKyAgICAgICAgICAgIFtuZXdDb250ZXh0IHNldEZlbmNlUG9ydDpmZW5jZVBvcnRdOworICAg
ICAgICAgICAgbWFjaF9wb3J0X2RlYWxsb2NhdGUobWFjaF90YXNrX3NlbGYoKSwgZmVuY2VQb3J0
KTsKKyAgICAgICAgfQorCisgICAgICAgIFtDQVRyYW5zYWN0aW9uIHNldENvbXBsZXRpb25CbG9j
azpbY29tcGxldGlvbkhhbmRsZXJdIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7
CisgICAgICAgIH1dOworICAgIH0gZWxzZSB7CisgICAgICAgIFtDQVRyYW5zYWN0aW9uIHNldENv
bXBsZXRpb25CbG9jazpbY29tcGxldGlvbkhhbmRsZXJdIHsKKyAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKCk7CisgICAgICAgIH1dOwogICAgIH0KKwogICAgIFtDQVRyYW5zYWN0aW9uIGNv
bW1pdF07CiB9CiAKQEAgLTEyNCwxNyArMTY2LDE4IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTGF5
ZXJNYW5hZ2VyOjpzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3QgdmlkZW9GdWxsc2Ny
CiAgICAgaWYgKCFtX3ZpZGVvRnVsbHNjcmVlbkxheWVyKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBpZiAobV92aWRlb0xheWVyKQotICAgICAgICBbbV92aWRlb0xheWVyIHNldEZyYW1lOkNHUmVj
dE1ha2UoMCwgMCwgdmlkZW9GdWxsc2NyZWVuRnJhbWUud2lkdGgoKSwgdmlkZW9GdWxsc2NyZWVu
RnJhbWUuaGVpZ2h0KCkpXTsKKyAgICBQbGF0Zm9ybUxheWVyICphY3RpdmVMYXllciA9IG1fc2Vj
b25kYXJ5VmlkZW9MYXllci5nZXQoKSA/IG1fc2Vjb25kYXJ5VmlkZW9MYXllci5nZXQoKSA6IG1f
dmlkZW9MYXllci5nZXQoKTsKKyAgICBbYWN0aXZlTGF5ZXIgc2V0RnJhbWU6Q0dSZWN0TWFrZSgw
LCAwLCB2aWRlb0Z1bGxzY3JlZW5GcmFtZS53aWR0aCgpLCB2aWRlb0Z1bGxzY3JlZW5GcmFtZS5o
ZWlnaHQoKSldOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcjo6ZGlkRGVz
dHJveVZpZGVvTGF5ZXIoKQogewotICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbkxheWVyKQotICAg
ICAgICBbbV92aWRlb0xheWVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKKyAgICBbbV92aWRlb0xh
eWVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKKyAgICBbbV9zZWNvbmRhcnlWaWRlb0xheWVyIHJl
bW92ZUZyb21TdXBlcmxheWVyXTsKIAogICAgIG1fdmlkZW9JbmxpbmVMYXllciA9IG5pbDsKICAg
ICBtX3ZpZGVvTGF5ZXIgPSBuaWw7CisgICAgbV9zZWNvbmRhcnlWaWRlb0xheWVyID0gbmlsOwog
fQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQppbmRleCBlNWNhNDcyZmJhMGM3
OGVjMDg5YmY1ZTIwNTMzNzY0Mjc4OTVmOWNiLi42YjBkYmNmNjVjODc4NDZhMDE0OTA3OTg0ZDkz
MGE1OThhZTkzNTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2Vi
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0KQEAgLTI0Nyw5
ICsyNDcsMTAgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6ZGlk
U2V0dXBGdWxsc2NyZWVuKCkKICAgICBSZXRhaW5QdHI8Q0FMYXllcj4gdmlkZW9GdWxsc2NyZWVu
TGF5ZXIgPSBbbV92aWRlb0Z1bGxzY3JlZW5WaWV3IGxheWVyXTsKICAgICBXZWJUaHJlYWRSdW4o
W3Byb3RlY3RlZFRoaXMsIHRoaXMsIHZpZGVvRnVsbHNjcmVlbkxheWVyXSB7CiAgICAgICAgIFt2
aWRlb0Z1bGxzY3JlZW5MYXllciBzZXRCYWNrZ3JvdW5kQ29sb3I6Y2FjaGVkQ0dDb2xvcihXZWJD
b3JlOjpDb2xvcjo6dHJhbnNwYXJlbnQpXTsKLSAgICAgICAgbV9tb2RlbC0+c2V0VmlkZW9GdWxs
c2NyZWVuTGF5ZXIodmlkZW9GdWxsc2NyZWVuTGF5ZXIuZ2V0KCkpOwotICAgICAgICBkaXNwYXRj
aF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcywgdGhpc10g
ewotICAgICAgICAgICAgbV9pbnRlcmZhY2UtPmVudGVyRnVsbHNjcmVlbigpOworICAgICAgICBt
X21vZGVsLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5MYXllci5nZXQo
KSwgW3Byb3RlY3RlZFRoaXMsIHRoaXNdIHsKKyAgICAgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRp
c3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzLCB0aGlzXSB7CisgICAgICAg
ICAgICAgICAgbV9pbnRlcmZhY2UtPmVudGVyRnVsbHNjcmVlbigpOworICAgICAgICAgICAgfSk7
CiAgICAgICAgIH0pOwogICAgIH0pOwogfQpAQCAtMjU5LDkgKzI2MCwxMCBAQCB2b2lkIFdlYlZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpkaWRFeGl0RnVsbHNjcmVlbigpCiAgICAg
QVNTRVJUKGlzVUlUaHJlYWQoKSk7CiAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXJDb250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIFdlYlRocmVhZFJ1bihbcHJv
dGVjdGVkVGhpcywgdGhpc10gewotICAgICAgICBtX21vZGVsLT5zZXRWaWRlb0Z1bGxzY3JlZW5M
YXllcihuaWwpOwotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1
ZSgpLCBbcHJvdGVjdGVkVGhpcywgdGhpc10gewotICAgICAgICAgICAgbV9pbnRlcmZhY2UtPmNs
ZWFudXBGdWxsc2NyZWVuKCk7CisgICAgICAgIG1fbW9kZWwtPnNldFZpZGVvRnVsbHNjcmVlbkxh
eWVyKG5pbCwgW3Byb3RlY3RlZFRoaXMsIHRoaXNdIHsKKyAgICAgICAgICAgIGRpc3BhdGNoX2Fz
eW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzLCB0aGlzXSB7Cisg
ICAgICAgICAgICAgICAgbV9pbnRlcmZhY2UtPmNsZWFudXBGdWxsc2NyZWVuKCk7CisgICAgICAg
ICAgICB9KTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0K
aW5kZXggMzViYTc1MjZmYTk4MmJmNWMzMDYzMWJmYWVjNmIwNmFiZjBlY2NiNC4uZWVlY2M2NDJj
ZjgyMWQyMDY2M2U1NzJhNTBmZDNlOTNjNDk0NGJkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5t
bQpAQCAtMzY5LDE0ICszNjksMTYgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpk
aWRTZXR1cEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKQogICAgIHN0ZDo6dGllKG1vZGVs
LCBpbnRlcmZhY2UpID0gZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UoY29udGV4dElkKTsKIAogICAg
IGludGVyZmFjZS0+bGF5ZXJIb3N0aW5nQ29udGV4dCgpLT5zZXRSb290TGF5ZXIodmlkZW9MYXll
cik7Ci0gICAgbW9kZWwtPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKHZpZGVvTGF5ZXIpOwotCi0g
ICAgW0NBVHJhbnNhY3Rpb24gY29tbWl0XTsKIAogICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyPiBzdHJvbmdUaGlzKHRoaXMpOwotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNo
X2dldF9tYWluX3F1ZXVlKCksIFtzdHJvbmdUaGlzLCB0aGlzLCBjb250ZXh0SWRdIHsKLSAgICAg
ICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6
OkVudGVyRnVsbHNjcmVlbihjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAKKyAg
ICBtb2RlbC0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIodmlkZW9MYXllciwgW3N0cm9uZ1RoaXMs
IHRoaXMsIGNvbnRleHRJZF0geworICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRf
bWFpbl9xdWV1ZSgpLCBbc3Ryb25nVGhpcywgdGhpcywgY29udGV4dElkXSB7CisgICAgICAgICAg
ICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6
RW50ZXJGdWxsc2NyZWVuKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgICAgICB9
KTsKICAgICB9KTsKKyAgICAKKyAgICBbQ0FUcmFuc2FjdGlvbiBjb21taXRdOwogfQogICAgIAog
dm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFbnRlckZ1bGxzY3JlZW4odWludDY0
X3QgY29udGV4dElkKQpAQCAtNDA3LDE3ICs0MDksMjEgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyOjpkaWRFeGl0RnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgUmVm
UHRyPFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50PiBtb2RlbDsKICAgICBSZWZQ
dHI8V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dD4gaW50ZXJmYWNlOwogICAgIHN0
ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2UpID0gZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UoY29udGV4
dElkKTsKLQotICAgIG1vZGVsLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihuaWwpOwotCiAgICAg
UmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI+IHN0cm9uZ1RoaXModGhpcyk7Ci0gICAg
ZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3N0cm9uZ1RoaXMsIGNv
bnRleHRJZCwgaW50ZXJmYWNlXSB7Ci0gICAgICAgIGlmIChpbnRlcmZhY2UtPmxheWVySG9zdGlu
Z0NvbnRleHQoKSkgewotICAgICAgICAgICAgaW50ZXJmYWNlLT5sYXllckhvc3RpbmdDb250ZXh0
KCktPnNldFJvb3RMYXllcihudWxscHRyKTsKLSAgICAgICAgICAgIGludGVyZmFjZS0+c2V0TGF5
ZXJIb3N0aW5nQ29udGV4dChudWxscHRyKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoc3Ryb25n
VGhpcy0+bV9wYWdlKQotICAgICAgICAgICAgc3Ryb25nVGhpcy0+bV9wYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkNsZWFudXBGdWxsc2NyZWVuKGNv
bnRleHRJZCksIHN0cm9uZ1RoaXMtPm1fcGFnZS0+cGFnZUlEKCkpOworICAgIAorICAgIG1vZGVs
LT53YWl0Rm9yUHJlcGFyZWRGb3JJbmxpbmVUaGVuKFtzdHJvbmdUaGlzLCB0aGlzLCBjb250ZXh0
SWQsIGludGVyZmFjZSwgbW9kZWxdIHsKKyAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hf
Z2V0X21haW5fcXVldWUoKSwgW3N0cm9uZ1RoaXMsIHRoaXMsIGNvbnRleHRJZCwgaW50ZXJmYWNl
LCBtb2RlbF0geworICAgICAgICAgICAgbW9kZWwtPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKG5p
bCwgW3N0cm9uZ1RoaXMsIHRoaXMsIGNvbnRleHRJZCwgaW50ZXJmYWNlXSB7CisgICAgICAgICAg
ICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3N0cm9uZ1Ro
aXMsIHRoaXMsIGNvbnRleHRJZCwgaW50ZXJmYWNlXSB7CisgICAgICAgICAgICAgICAgICAgIGlm
IChpbnRlcmZhY2UtPmxheWVySG9zdGluZ0NvbnRleHQoKSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgaW50ZXJmYWNlLT5sYXllckhvc3RpbmdDb250ZXh0KCktPnNldFJvb3RMYXllcihudWxs
cHRyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludGVyZmFjZS0+c2V0TGF5ZXJIb3N0aW5n
Q29udGV4dChudWxscHRyKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICBpZiAoc3Ryb25nVGhpcy0+bV9wYWdlKQorICAgICAgICAgICAgICAgICAgICAgICAgc3Ry
b25nVGhpcy0+bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk6OkNsZWFudXBGdWxsc2NyZWVuKGNvbnRleHRJZCksIHN0cm9uZ1RoaXMtPm1fcGFnZS0+
cGFnZUlEKCkpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAg
IH0pOwogICAgIH0pOwogfQogICAgIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>