<?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>129870</bug_id>
          
          <creation_ts>2014-03-07 02:09:45 -0800</creation_ts>
          <short_desc>Allow media element to supply the video layer after fullscreen transition has already begun.</short_desc>
          <delta_ts>2014-03-10 09:35:56 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jeremy Jones">jeremyj-wk</reporter>
          <assigned_to name="Jeremy Jones">jeremyj-wk</assigned_to>
          <cc>calvaris</cc>
    
    <cc>commit-queue</cc>
    
    <cc>c.petersen87</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jonlee</cc>
    
    <cc>mkwst</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>988079</commentid>
    <comment_count>0</comment_count>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2014-03-07 02:09:45 -0800</bug_when>
    <thetext>Allow media element to supply the video layer after fullscreen transition has already begun.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>988105</commentid>
    <comment_count>1</comment_count>
      <attachid>226110</attachid>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2014-03-07 03:45:12 -0800</bug_when>
    <thetext>Created attachment 226110
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>988193</commentid>
    <comment_count>2</comment_count>
      <attachid>226110</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2014-03-07 09:36:48 -0800</bug_when>
    <thetext>Comment on attachment 226110
Patch

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

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:758
&gt; +    void MediaPlayerPrivateAVFoundationObjC::setVideoFullscreenGravity(MediaPlayer::VideoGravity gravity)

Nit: you don&apos;t need this indentation.

&gt; Source/WebKit2/WebProcess/ios/WebVideoFullscreenManager.mm:135
&gt; +        exitFullscreenForNode(m_node.get());

&quot;exitFullscreenForNode&quot; called from didEnterFullscreen?

&gt; Source/WebKit2/WebProcess/ios/WebVideoFullscreenManager.mm:156
&gt; +        enterFullscreenForNode(m_node.get());

&quot;enterFullscreenForNode&quot; called from didExitFullscreen?

&gt; Source/WebKit2/WebProcess/ios/WebVideoFullscreenManager.mm:166
&gt; +

Nit: extra blank line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>988210</commentid>
    <comment_count>3</comment_count>
      <attachid>226110</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2014-03-07 10:29:01 -0800</bug_when>
    <thetext>Comment on attachment 226110
Patch

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

&gt; Source/WebCore/ChangeLog:35
&gt; +        Stash the gravity propety, pass it along to the media player if possible.

property*

&gt; Source/WebCore/html/HTMLMediaElement.h:800
&gt; +    RetainPtr&lt;PlatformLayer&gt; m_videoFullscreenLayer;

Should these variables be moved after the flags?

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:501
&gt; +        {

Brace on same line as &quot;if&quot;

&gt;&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:758
&gt;&gt; +    void MediaPlayerPrivateAVFoundationObjC::setVideoFullscreenGravity(MediaPlayer::VideoGravity gravity)
&gt; 
&gt; Nit: you don&apos;t need this indentation.

Remove excess indentation

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:764
&gt; +    NSString* videoGravity = AVLayerVideoGravityResizeAspect;

NSString *videoGravity

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:768
&gt; +        videoGravity = AVLayerVideoGravityResize;

It seems this might be slightly better:

switch (gravity) {
case VideoGravityResizeAspectFill:
    videoGravity = AVLayerVideoGravityResizeAspectFill;
    break;
…
default:
    ASSERT_NOT_REACHED();
}

only in that any additional modes would trigger an assert.

&gt; Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.mm:201
&gt; +    _avPlayerController = (WebAVPlayerController*)playerController;

missing space: (WebAVPlayerController *)playerController

&gt; Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.mm:215
&gt; +    {

There&apos;s enough of the consequent clause here to return early to avoid the indentation.

&gt; Source/WebCore/platform/ios/WebVideoFullscreenModel.h:45
&gt; +    enum VideoGravity { VideoGravityReize, VideoGravityResizeAspect, VideoGravityResizeAspectFill};

Missing space separating last enum from brace

&gt; Source/WebCore/platform/ios/WebVideoFullscreenModelMediaElement.mm:94
&gt; +    else

Our style puts the concluding brace and &quot;else&quot; on the same line.

&gt; Source/WebCore/platform/ios/WebVideoFullscreenModelMediaElement.mm:176
&gt; +    [m_videoFullscreenLayer setFrame:CGRectMake(rect.x(), rect.y(), rect.width(), rect.height())];

You can use CGRect(rect) here. (See FloatRectCG.cpp)

&gt; Source/WebCore/platform/ios/WebVideoFullscreenModelMediaElement.mm:186
&gt; +        videoGravity = MediaPlayer::VideoGravityResizeAspectFill;

same thing here re: switch statement

&gt; Source/WebKit2/UIProcess/ios/WebVideoFullscreenManagerProxy.mm:108
&gt; +    

Remove excess space.

&gt; Source/WebKit2/UIProcess/ios/WebVideoFullscreenManagerProxy.mm:113
&gt; +    

Ditto

&gt; Source/WebKit2/WebProcess/ios/WebVideoFullscreenManager.mm:70
&gt; +    return isHTMLVideoElement(node);

Would be clearer to write this simply as

return Settings::avKitEnabled() &amp;&amp; isHTMLVideoElement(node);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>988211</commentid>
    <comment_count>4</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2014-03-07 10:30:30 -0800</bug_when>
    <thetext>&lt;rdar://problem/16207968&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>988236</commentid>
    <comment_count>5</comment_count>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2014-03-07 11:23:39 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 226110 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=226110&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:758
&gt; &gt; +    void MediaPlayerPrivateAVFoundationObjC::setVideoFullscreenGravity(MediaPlayer::VideoGravity gravity)
&gt; 
&gt; Nit: you don&apos;t need this indentation.

Done.

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/ios/WebVideoFullscreenManager.mm:135
&gt; &gt; +        exitFullscreenForNode(m_node.get());
&gt; 
&gt; &quot;exitFullscreenForNode&quot; called from didEnterFullscreen?

Surprising but intended. This handles the case the exitFullScreen was called while animating into fullscreen.

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/ios/WebVideoFullscreenManager.mm:156
&gt; &gt; +        enterFullscreenForNode(m_node.get());
&gt; 
&gt; &quot;enterFullscreenForNode&quot; called from didExitFullscreen?

Ditto.

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/ios/WebVideoFullscreenManager.mm:166
&gt; &gt; +
&gt; 
&gt; Nit: extra blank line.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>988244</commentid>
    <comment_count>6</comment_count>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2014-03-07 11:36:01 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 226110 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=226110&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:35
&gt; &gt; +        Stash the gravity propety, pass it along to the media player if possible.
&gt; 
&gt; property*

Done.

&gt; 
&gt; &gt; Source/WebCore/html/HTMLMediaElement.h:800
&gt; &gt; +    RetainPtr&lt;PlatformLayer&gt; m_videoFullscreenLayer;
&gt; 
&gt; Should these variables be moved after the flags?

I moved this and moved the initializer to match the order.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:501
&gt; &gt; +        {
&gt; 
&gt; Brace on same line as &quot;if&quot;

Done.

&gt; 
&gt; &gt;&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:758
&gt; &gt;&gt; +    void MediaPlayerPrivateAVFoundationObjC::setVideoFullscreenGravity(MediaPlayer::VideoGravity gravity)
&gt; &gt; 
&gt; &gt; Nit: you don&apos;t need this indentation.
&gt; 
&gt; Remove excess indentation

Done.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:764
&gt; &gt; +    NSString* videoGravity = AVLayerVideoGravityResizeAspect;
&gt; 
&gt; NSString *videoGravity

Done.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:768
&gt; &gt; +        videoGravity = AVLayerVideoGravityResize;
&gt; 
&gt; It seems this might be slightly better:
&gt; 
&gt; switch (gravity) {
&gt; case VideoGravityResizeAspectFill:
&gt;     videoGravity = AVLayerVideoGravityResizeAspectFill;
&gt;     break;
&gt; …
&gt; default:
&gt;     ASSERT_NOT_REACHED();
&gt; }

Done, using an else clause.

&gt; 
&gt; only in that any additional modes would trigger an assert.
&gt; 
&gt; &gt; Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.mm:201
&gt; &gt; +    _avPlayerController = (WebAVPlayerController*)playerController;
&gt; 
&gt; missing space: (WebAVPlayerController *)playerController

Done.

&gt; 
&gt; &gt; Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.mm:215
&gt; &gt; +    {
&gt; 
&gt; There&apos;s enough of the consequent clause here to return early to avoid the indentation.

Done.

&gt; 
&gt; &gt; Source/WebCore/platform/ios/WebVideoFullscreenModel.h:45
&gt; &gt; +    enum VideoGravity { VideoGravityReize, VideoGravityResizeAspect, VideoGravityResizeAspectFill};
&gt; 
&gt; Missing space separating last enum from brace

Done. And fixed another occurrence of this in MediaPlayer. And fixed typo VideoGravityResize

&gt; 
&gt; &gt; Source/WebCore/platform/ios/WebVideoFullscreenModelMediaElement.mm:94
&gt; &gt; +    else
&gt; 
&gt; Our style puts the concluding brace and &quot;else&quot; on the same line.

Done.

&gt; 
&gt; &gt; Source/WebCore/platform/ios/WebVideoFullscreenModelMediaElement.mm:176
&gt; &gt; +    [m_videoFullscreenLayer setFrame:CGRectMake(rect.x(), rect.y(), rect.width(), rect.height())];
&gt; 
&gt; You can use CGRect(rect) here. (See FloatRectCG.cpp)

Done.

&gt; 
&gt; &gt; Source/WebCore/platform/ios/WebVideoFullscreenModelMediaElement.mm:186
&gt; &gt; +        videoGravity = MediaPlayer::VideoGravityResizeAspectFill;
&gt; 
&gt; same thing here re: switch statement

Done, using an else.

Also fixed same pattern in WebAVVideoLayer.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/ios/WebVideoFullscreenManagerProxy.mm:108
&gt; &gt; +    
&gt; 
&gt; Remove excess space.

Done.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/ios/WebVideoFullscreenManagerProxy.mm:113
&gt; &gt; +    
&gt; 
&gt; Ditto

Ditto.

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/ios/WebVideoFullscreenManager.mm:70
&gt; &gt; +    return isHTMLVideoElement(node);
&gt; 
&gt; Would be clearer to write this simply as
&gt; 
&gt; return Settings::avKitEnabled() &amp;&amp; isHTMLVideoElement(node);

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>988245</commentid>
    <comment_count>7</comment_count>
      <attachid>226110</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2014-03-07 11:41:04 -0800</bug_when>
    <thetext>Comment on attachment 226110
Patch

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

&gt;&gt;&gt; Source/WebKit2/WebProcess/ios/WebVideoFullscreenManager.mm:135
&gt;&gt;&gt; +        exitFullscreenForNode(m_node.get());
&gt;&gt; 
&gt;&gt; &quot;exitFullscreenForNode&quot; called from didEnterFullscreen?
&gt; 
&gt; Surprising but intended. This handles the case the exitFullScreen was called while animating into fullscreen.

It probably deserves an explanatory comment, others will probably misunderstand this as well.

&gt;&gt;&gt; Source/WebKit2/WebProcess/ios/WebVideoFullscreenManager.mm:156
&gt;&gt;&gt; +        enterFullscreenForNode(m_node.get());
&gt;&gt; 
&gt;&gt; &quot;enterFullscreenForNode&quot; called from didExitFullscreen?
&gt; 
&gt; Ditto.

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>988246</commentid>
    <comment_count>8</comment_count>
      <attachid>226144</attachid>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2014-03-07 11:53:05 -0800</bug_when>
    <thetext>Created attachment 226144
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>988397</commentid>
    <comment_count>9</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-03-07 15:50:55 -0800</bug_when>
    <thetext>r+ (bugzilla is broken)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>988398</commentid>
    <comment_count>10</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-03-07 15:53:09 -0800</bug_when>
    <thetext>Test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>988401</commentid>
    <comment_count>11</comment_count>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2014-03-07 15:57:44 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 226110 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=226110&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebKit2/WebProcess/ios/WebVideoFullscreenManager.mm:135
&gt; &gt;&gt;&gt; +        exitFullscreenForNode(m_node.get());
&gt; &gt;&gt; 
&gt; &gt;&gt; &quot;exitFullscreenForNode&quot; called from didEnterFullscreen?
&gt; &gt; 
&gt; &gt; Surprising but intended. This handles the case the exitFullScreen was called while animating into fullscreen.
&gt; 
&gt; It probably deserves an explanatory comment, others will probably misunderstand this as well.
&gt; 
&gt; &gt;&gt;&gt; Source/WebKit2/WebProcess/ios/WebVideoFullscreenManager.mm:156
&gt; &gt;&gt;&gt; +        enterFullscreenForNode(m_node.get());
&gt; &gt;&gt; 
&gt; &gt;&gt; &quot;enterFullscreenForNode&quot; called from didExitFullscreen?
&gt; &gt; 
&gt; &gt; Ditto.
&gt; 
&gt; Ditto.

Added comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>988403</commentid>
    <comment_count>12</comment_count>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2014-03-07 15:58:19 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; r+ (bugzilla is broken)

I&apos;m submitting a rebased version to prevent a merge conflict.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>988405</commentid>
    <comment_count>13</comment_count>
      <attachid>226178</attachid>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2014-03-07 15:58:56 -0800</bug_when>
    <thetext>Created attachment 226178
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>988662</commentid>
    <comment_count>14</comment_count>
      <attachid>226178</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2014-03-08 17:38:21 -0800</bug_when>
    <thetext>Comment on attachment 226178
Patch

Marking r+ based on Simon&apos;s earlier review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>988670</commentid>
    <comment_count>15</comment_count>
      <attachid>226178</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-03-08 18:10:26 -0800</bug_when>
    <thetext>Comment on attachment 226178
Patch

Clearing flags on attachment: 226178

Committed r165344: &lt;http://trac.webkit.org/changeset/165344&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>988671</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-03-08 18:10:33 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>226110</attachid>
            <date>2014-03-07 03:45:12 -0800</date>
            <delta_ts>2014-03-07 11:53:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129870-20140307034512.patch</filename>
            <type>text/plain</type>
            <size>73355</size>
            <attacher name="Jeremy Jones">jeremyj-wk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY1MTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTA4NGRlNDA3YjFmNGEy
NzE0NmQ1YjFjYzYwZDAwNjQwZTRhN2M5Mi4uNTJmOTAwYzkwNzc1ZWI2MzM1NDQ0NDZlYjJlN2Vk
OGEwYzA3Zjc4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0NSBAQAorMjAxNC0wMy0wNyAgSmVy
ZW15IEpvbmVzICA8amVyZW15akBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgbWVkaWEgZWxl
bWVudCB0byBzdXBwbHkgdGhlIHZpZGVvIGxheWVyIGFmdGVyIGZ1bGxzY3JlZW4gdHJhbnNpdGlv
biBoYXMgYWxyZWFkeSBiZWd1bi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEyOTg3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEluc3RlYWQgb2YgYm9ycm93aW5nIHRoZSB2aWRlb2xheWVyIGZyb20gdGhl
IEhUTUxNZWRpYUVsZW1lbnQsIFdlYlZpZGVvRnVsbHNjcmVlbiBub3cgc3VwcGxpZXMgYSBsYXll
ciB0byBIVE1MTWVkaWFFbGVtZW50IHRvIGZpbGwgaW4gYXMgbmVlZGVkIGFuZCBhdCB0aGUgYXBw
cm9wcmlhdGUgdGltZS4KKworICAgICAgICBUaGlzIGFsbG93cyBmdWxsc2NyZWVuIGV2ZW4gaWYg
dGhlIHZpZGVvIGxheWVyIGhhc24ndCB5ZXQgYmVlbiBjcmVhdGVkLiBBbmQgaW4gdGhlIGZ1dHVy
ZSBpdCBhbGxvd3MgTWVkaWFQbGF5ZXIgdG8gc3VwcGx5IG90aGVyIGxheWVycyBzdWNoIGFzIGNs
b3NlZCBjYXB0aW9ucy4gCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgUmVt
b3ZlIGV4cG9ydHMgcmVsYXRlZCB0byBib3Jyb3dpbmcgYW5kIGxlbmQgdGhlIHZpZGVvIGxheWVy
LgorICAgICAgICBBZGQgZXhwb3J0cyBmb3Igc3VwcGx5aW5nIGEgbGF5ZXIgdG8gZnVsbHNjcmVl
biBhbmQga2VlcHlpbmcgdGhlIGZyYW1lIGFuZCBncmF2aXR5IHByb3BlcnRpZXMgaW4gc3luYy4K
KworICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIFJlbW92ZSB0
aGUgY29uY2VwdCBvZiBib3Jyb3dpbmcgdGhlIHBsYXRmb3JtIGxheWVyLgorICAgICAgICBBZGQg
dGhlIGNvbmNlcHQgb2YgYSBzdXBwbGllZCBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyLCBpbnRvIHdo
aWNoIHRoZSBtZWRpYSBwbGF5ZXIgY2FuIGFkZCBsYXllcnMuCisgICAgICAgIFdoZW4gdGhlIG1f
dmlkZW9GdWxsc2NyZWVuRnJhbWUgaXMgc3VwcGxpZWQsIGRvbid0IHNob3cgdGhlIHZpZGVvIGxh
eWVyIGlubGluZSBhbnkgbW9yZS4KKyAgICAgICAgU3Rhc2ggdmlkZW8gbGF5ZXIgcHJvcGVydGll
cyBpbiBjYXNlIHRoZSBtZWRpYSBwbGF5ZXIgaXMgbm90IHlldCBjcmVhdGVkLgorCisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KToKKyAgICAgICAg
SW5pdGlhbGl6ZSBncmF2aXR5IHRvIHRoZSBkZWZhdWx0LiBSZW1vdmUgbV9wbGF0Zm9ybUxheWVy
Qm9ycm93ZWQuCisKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBsYXRmb3Jt
TGF5ZXIpOgorICAgICAgICBXaGVuIHdlIGhhdmUgYSBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyLCBk
b24ndCBzaG93IHZpZGVvIGlubGluZS4KKworICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIpOgorICAgICAgICBQYXNzIGFsb25nIHRoZSBt
X3ZpZGVvRnVsbHNjcmVlbkxheWVyIHRvIHRoZSBNZWRpYVBsYXllciBpZiBhdmFpbGFibGUgb3Ig
anVzdCBzdGFzaCBpdCBmb3IgbGF0ZXIuCisKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OmNyZWF0ZU1lZGlhUGxheWVyKToKKyAgICAgICAgUGFzcyBhbG9uZyB2aWRlbyBmdWxs
c2NyZWVuIHByb3BlcnRpZXMgdGhhdCB3ZSBtYXkgaGF2ZSBhY2N1bXVsYXRlZCBiZWZvcmUgdGhl
IE1lZGlhUGxheWVyIHdhcyBjcmVhdGVkLgorCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50OjpzZXRWaWRlb0Z1bGxzY3JlZW5HcmF2aXR5KToKKyAgICAgICAgU3Rhc2ggdGhlIGdy
YXZpdHkgcHJvcGV0eSwgcGFzcyBpdCBhbG9uZyB0byB0aGUgbWVkaWEgcGxheWVyIGlmIHBvc3Np
YmxlLgorCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgIFJlbW92
ZSBjb25jZXB0IG9mIGJvcnJvd2luZyB0aGUgdmlkZW8gbGF5ZXIuIEFkZCBwcm9wZXJ0aWVzIGZv
ciBhIHN1cHBsaWVkIHZpZGVvRnVsbHNjcmVlbkxheWVyLgorCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6
OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKToKKyAgICAgICAgRm9yd2FyZCBvbiB0byBpbnRlcm5h
bCBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OnNldFZp
ZGVvRnVsbHNjcmVlbkZyYW1lKToKKyAgICAgICAgRm9yd2FyZCBvbiB0byBpbnRlcm5hbCBpbXBs
ZW1lbnRhdGlvbi4KKworICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OnNldFZpZGVvRnVs
bHNjcmVlbkdyYXZpdHkpOgorICAgICAgICBGb3J3YXJkIG9uIHRvIGludGVybmFsIGltcGxlbWVu
dGF0aW9uLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAg
ICAgICAgQWRkIG1ldGhvZHMgZm9yIHZpZGVvIGZ1bGxzY3JlZW4gTGF5ZXIsIEZyYW1lIGFuZCBH
cmF2aXR5LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U6OnNldFZp
ZGVvRnVsbHNjcmVlbkxheWVyKToKKyAgICAgICAgQWRkIGRlZmF1bHQgaW1wbGVtZW50YXRpb24u
CisKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTo6c2V0Vmlk
ZW9GdWxsc2NyZWVuRnJhbWUpOgorICAgICAgICBBZGQgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4K
KyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U6
OnNldFZpZGVvRnVsbHNjcmVlbkdyYXZpdHkpOgorICAgICAgICBBZGQgZGVmYXVsdCBpbXBsZW1l
bnRhdGlvbi4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oOgorICAgICAgICBB
ZGQgc3VwcG9ydCBmb3IgZnVsbHNjcmVlbiB2aWRlbyBsYXllciwgZnJhbWUgYW5kIGdyYXZpdHku
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQyk6CisgICAgICAgIEluaXQgbV92aWRlb0Z1bGxzY3JlZW5HcmF2aXR5LiAKKworICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRl
VmlkZW9MYXllcik6CisgICAgICAgIEFwcGx5IGNhY2hlZCBwcm9wZXJ0aWVzIG9uY2UgdmlkZW8g
bGF5ZXIgaXMgY3JlYXRlZCBhbmQgYWRkIHRvIHRoZSBmdWxsc2NyZWVuIGxheWVyLgorCisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRWaWRl
b0Z1bGxzY3JlZW5MYXllcik6CisgICAgICAgIENhY2hlIHRoZSBwcm9wZXJ0eSB2YWx1ZS4gQWRk
IHZpZGVvIGxheWVyIHJpZ2h0IGF3YXkgYXZhaWxhYmxlLgorCisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5GcmFt
ZSk6CisgICAgICAgIENhY2hlIHRoZSBwcm9wZXJ0eSB2YWx1ZS4gQXBwbHkgdG8gdmlkZW8gbGF5
ZXIgcmlnaHQgYXdheSBpZiBhdmFpbGFibGUuCisKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkdyYXZpdHkpOgor
ICAgICAgICBDYWNoZSB0aGUgcHJvcGVydHkgdmFsdWUuIEFwcGx5IHRvIHZpZGVvIGxheWVyIHJp
Z2h0IGF3YXkgaWYgYXZhaWxhYmxlLgorCisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYlZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbToKKyAgICAgICAgU3VwcGx5IGEgZnVsbHNjcmVl
biB2aWRlbyBsYXllciB0byB0aGUgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwgYW5kIHRvIHRoZSBX
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UuCisKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlciBlbnRlckZ1bGxzY3JlZW46XSk6CisgICAgICAgIFN1cHBseSBhIGZ1bGxz
Y3JlZW4gdmlkZW8gbGF5ZXIgdG8gdGhlIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsIGFuZCB0byB0
aGUgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlLgorCisgICAgICAgICgtW1dlYlZpZGVvRnVs
bHNjcmVlbkNvbnRyb2xsZXIgZGlkRXhpdEZ1bGxzY3JlZW5dKToKKyAgICAgICAgQ2xlYW4gdXAg
dGhlIHZpZGVvRnVsbHNjcmVlbkxheWVyLgorCisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZS5oOgorICAgICAgICBSZW1vdmUgbWV0aG9kcyByZWxhdGVk
IHRvIGxlbmRpbmcgdGhlIHZpZGVvIGxheWVyLgorCisgICAgICAgICogcGxhdGZvcm0vaW9zL1dl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lmg6CisgICAgICAgIFJlbmFtZSBXZWJBVlBs
YXllciBsYXllciB0byBXZWJBVlZpZGVvTGF5ZXIgdG8gbWF0Y2ggdGhlIEFWS2l0IG5hbWUuCisg
ICAgICAgIFJlbW92ZSBmdW5jdGlvbnMgcmVsYXRlZCB0byBsZW5kaW5nIHRoZSB2aWRlbyBsYXll
ci4KKyAgICAgICAgU3VwcGx5IGEgbGF5ZXIgZGlyZWN0bHkgdG8gZW50ZXJGdWxsc2NyZWVuLgor
CisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
Lm1tOgorICAgICAgICAoK1tXZWJBVlZpZGVvTGF5ZXIgdmlkZW9MYXllcl0pOgorICAgICAgICBS
ZW5hbWUgV2ViQVZQbGF5ZXIgbGF5ZXIgdG8gV2ViQVZWaWRlb0xheWVyIHRvIG1hdGNoIHRoZSBB
VktpdCBuYW1lLgorCisgICAgICAgICgtW1dlYkFWVmlkZW9MYXllciBzZXRQbGF5ZXJDb250cm9s
bGVyOl0pOgorICAgICAgICBTdG9yZSB0aGUgQVZQbGF5ZXJDb250cm9sbGVyIHRvIHByZXZlbnQg
QVZLaXQncyBkZWZhdWx0IGJlaGF2aW9yLgorCisgICAgICAgICgtW1dlYkFWVmlkZW9MYXllciBz
ZXRCb3VuZHM6XSk6CisgICAgICAgIEZvcndhcmQgdGhpcyBvbnRvIHRoZSBXZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbAorCisgICAgICAgICgtW1dlYkFWVmlkZW9MYXllciBzZXRWaWRlb0xheWVyR3Jh
dml0eTpdKToKKyAgICAgICAgRm9yd2FyZCB0aGlzIG9udG8gdGhlIFdlYlZpZGVvRnVsbHNjcmVl
bk1vZGVsCisKKyAgICAgICAgKC1bV2ViQVZWaWRlb0xheWVyIHZpZGVvTGF5ZXJHcmF2aXR5XSk6
CisgICAgICAgIEZvcndhcmQgdGhpcyBvbnRvIHRoZSBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbAor
CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZW50ZXJGdWxsc2Ny
ZWVuKToKKyAgICAgICAgU3VwcGx5IGEgdmlkZW8gbGF5ZXIgZGlyZWN0bHkgaW5zdGVhZCBvZiBy
ZWx5aW5nIG9uIG9uZSBiZWluZyBwcmV2aW91c2x5IGxvYW5lZC4KKworICAgICAgICAoV2ViVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmV4aXRGdWxsc2NyZWVuKToKKyAgICAgICAgQ2xl
YW4tdXAgbm93IGFzc3VtZXMgdGhlcmUgaXMgYSB2aWRlbyBsYXllci4KKworICAgICAgICAqIHBs
YXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oOgorICAgICAgICBSZW1vdmUgbWV0
aG9kcyBmb3IgYm9ycm93aW5nIGFuZCByZXR1cm5pbmcgdmlkZW8gbGF5ZXJzLgorICAgICAgICBB
ZGQgbWV0aG9kcyBmb3Iga2VlcGluZyB2aWRlbyBsYXllciBzdGF0ZSBpbiBzeW5jLgorCisgICAg
ICAgICogcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50Lmg6
CisgICAgICAgIFJlbW92ZSBtZXRob2RzIGZvciBib3Jyb3dpbmcgYW5kIHJldHVybmluZyB2aWRl
byBsYXllcnMuCisgICAgICAgIEFkZCBtZXRob2QgZm9yIHN1cHBseWluZyBhIHZpZGVvIGZ1bGxz
Y3JlZW4gbGF5ZXIuCisgICAgICAgIEFkZCBtZXRob2RzIGZvciBrZWVwaW5nIHZpZGVvIGxheWVy
IHN0YXRlIGluIHN5bmMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2Ny
ZWVuTW9kZWxNZWRpYUVsZW1lbnQubW06CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bE1lZGlhRWxlbWVudDo6c2V0TWVkaWFFbGVtZW50KToKKyAgICAgICAgSGFuZGxlIGF1ZGlvIGVs
ZW1lbnQgY2FzZSBieSBzZXR0aW5nIGhhc1ZpZGVvIHRvIGZhbHNlLgorCisgICAgICAgIChXZWJW
aWRlb0Z1bGxzY3JlZW5Nb2RlbE1lZGlhRWxlbWVudDo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIp
OgorICAgICAgICBQYXNzIGFsb25nIHRoZSB2aWRlbyBmdWxsc2NyZWVuIGxheWVyIHRvIHRoZSBt
ZWRpYSBlbGVtZW50LgorCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbE1lZGlhRWxl
bWVudDo6c2V0VmlkZW9MYXllckZyYW1lKToKKyAgICAgICAgUGFzcyBhbG9uZyB0aGUgdmlkZW8g
bGF5ZXIgZnJhbWUgdG8gdGhlIG1lZGlhIGVsZW1lbnQuCisKKyAgICAgICAgKFdlYlZpZGVvRnVs
bHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50OjpzZXRWaWRlb0xheWVyR3Jhdml0eSk6CisgICAgICAg
IFBhc3MgYWxvbmcgdGhlIHZpZGVvIGxheWVyIGdyYXZpdHkgdG8gdGhlIG1lZGlhIGVsZW1lbnQu
CisKIDIwMTQtMDMtMDUgIEtyenlzenRvZiBDemVjaCAgPGsuY3plY2hAc2Ftc3VuZy5jb20+CiAK
ICAgICAgICAgW0FUS10gRXhwb3NlIG1pc3NpbmcgZnVuY3Rpb25hbGl0aWVzIG9mIEF0a1RhYmxl
Q2VsbCB0byBBVC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAwNDc1ZTBhNjEyYTc0ZjM3NzA4MzNmYTM0MjNmNGQ3
NjBhOTMxZGM4Li4zNTU0NTVkZmQxOWM0ZGRiNTU1MDg0ZDMxY2Y1M2JjOGYxY2NjNTkyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsODYgQEAKKzIwMTQtMDMtMDcgIEplcmVteSBKb25lcyAgPGplcmVt
eWpAYXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IG1lZGlhIGVsZW1lbnQgdG8gc3VwcGx5IHRo
ZSB2aWRlbyBsYXllciBhZnRlciBmdWxsc2NyZWVuIHRyYW5zaXRpb24gaGFzIGFscmVhZHkgYmVn
dW4uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjk4
NzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyIGFuZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkg
ZG8gdGhlaXIgb3duIHJlbW90ZSBob3N0aW5nIG9mIHRoZSB2aWRlbyBsYXllciBpbnN0ZWFkIG9m
IG5lZWRpbmcgdGhlIHZpZGVvIGxheWVyIHRvIGhhdmUgYWxyZWFkeSBiZWVuIGhvc3RlZCBlbHNl
d2hlcmUuIFRoaXMgYWxsb3dzIHRoZSByZW1vdmFsIG9mIHRoZSBjb29yZGluYXRpb24gd2l0aCBX
ZWJQYWdlUHJveHkgdmlhIGEgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uCisKKyAgICAgICAg
KiBTaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmg6CisgICAgICAgIFJlbW92
ZSBtX3ZpZGVvTGF5ZXJJRHNQZW5kaW5nRnVsbHNjcmVlbiBhbmQgYWNjZXNzb3JzLgorCisgICAg
ICAgICogU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OmVuY29kZSk6CisgICAgICAgIERv
bid0IGVuY29kZSBtX3ZpZGVvTGF5ZXJJRHNQZW5kaW5nRnVsbHNjcmVlbgorCisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpkZWNvZGUpOgorICAgICAgICBEb24n
dCBkZWNvZGUgbV92aWRlb0xheWVySURzUGVuZGluZ0Z1bGxzY3JlZW4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmRpZENvbW1pdExheWVyVHJlZSk6CisgICAgICAgIERvbid0IGZvcndhcmQgZGlkQ29t
bWl0TGF5ZXJUcmVlIHRvIG1fdmlkZW9GdWxsc2NyZWVuTWFuYWdlci4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lmg6CisgICAgICAgIFJl
bW92ZSBjb2RlIGZvciBzeW5jaHJvbml6aW5nIHdpdGggdGhlIFJlbmRlclRyZWUuCisgICAgICAg
IEFkZCBhIGhvc3RpbmcgbGF5ZXIgYW5kIG1ldGhvZHMgdG8ga2VlcCB2aWRlbyBsYXllciBmcmFt
ZSBhbmQgdmlkZW8gZ3Jhdml0eSBzeW5jaHJvbml6ZWQuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
aW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAg
Q2hhbmdlIElQQyBpbnRlcmZhY2UgdG8gZmFzY2lsaXRhdGUgcmVob3N0aW5nIHZpZGVvIGxheWVy
IHdpdGggYSBpbnN0ZWFkIG9mIGNvb3JkaW5hdGluZyB3aXRoIHRoZSBSZW5kZXJUcmVlIGJ5IFBs
YXRmb3JtTGF5ZXJJRC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHk6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eSk6CisgICAgICAgIFJl
bW92ZSBpbml0aWFsaXphdGlvbiBmb3IgcmVtb3ZlZCBtZW1iZXJzLgorCisgICAgICAgIChXZWJL
aXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZW50ZXJGdWxsc2NyZWVuV2l0aElE
KToKKyAgICAgICAgUmVob3N0IHRoZSB2aWRlbyBsYXllciBieSBpZCBhbmQgcGFzcyBvbiB0aGUg
bGF5ZXIuCisgICAgICAgIFRoaXMgcmVwbGFjZXMgZGlkQ29tbWl0TGF5ZXJUcmVlKCkgYW5kICB3
aWxsTGVuZFZpZGVvTGF5ZXJXaXRoSUQoKS4gCisKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRFeGl0RnVsbHNjcmVlbik6CisgICAgICAgIENsZWFu
dXAgdGhlIGhvc3RpbmcgbGF5ZXIuCisKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5OjpzZXRWaWRlb0xheWVyRnJhbWUpOgorICAgICAgICBGb3J3YXJkIG9u
IHRoZSB2aWRlbyBsYXllcidzIGZyYW1lIHRvIGtlZXAgdGhlIGhvc3RlZCBsYXllciBpbiBzeW5j
IHdpdGggdGhlIGludGVyZmFjZS4KKworICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHk6OnNldFZpZGVvTGF5ZXJHcmF2aXR5KToKKyAgICAgICAgRm9yd2FyZCB0
aGUgdmlkZW9sYXllciBncmF2aXR5LgorCisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICBSZW5hbWUgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5j
cHAgdG8gV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQorCisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp3aWxsQ29t
bWl0TGF5ZXJUcmVlKToKKyAgICAgICAgRG9uJ3QgaW52b3ZsZSB0aGUgbV92aWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyIGluIGxheWVyIHRyZWUgdHJhbnNhY3Rpb25zLgorCisgICAgICAgICogV2ViUHJv
Y2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oOgorICAgICAgICBSZW1vdmUgY29k
ZSB0aGF0IHN5bmNocm9uaXplcyB3aXRoIHRoZSByZW5kZXIgdHJlZSB2aWEgUmVtb3RlTGF5ZXJU
cmVlVHJhbnNhY3Rpb24uCisgICAgICAgIEluc3RlYWQgcmVob3N0IHRoZSB2aWRlbyBsYXllciBk
aXJlY3RseS4KKyAgICAgICAgSW5zdGVhZCBvZiBob3BpbmcgdGhlIFdlYlZpZGVvRnVsbHNjcmVl
bk1vZGVsIGhhcyBhIHZpZGVvTGF5ZXIsIHN1cHBseSBvbmUgaW50byB3aGljaAorICAgICAgICBp
dCBjYW4gYWRkIHdoYXRldmVyIGl0IGxpa2VzIGFzIG5lZWRlZC4KKworICAgICAgICAqIFdlYlBy
b2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubWVzc2FnZXMuaW46CisgICAgICAg
IE5vIG1vcmUgZXhwbGljaXQgYm9ycm93aW5nIGFuZCByZXR1cm5pbmcgdmlkZW8gbGF5ZXJzLgor
ICAgICAgICBBZGQgZnVuY3Rpb25zIHRvIGtlZXAgdmlkZW8gbGF5ZXIgYm91bmRzIGFuZCBncmF2
aXR5IGluIHN5bmMgd2l0aCB0aGUgVUkuIAorCisgICAgICAgICogV2ViUHJvY2Vzcy9pb3MvV2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbTogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuY3BwLgorICAgICAgICBSZW1v
dmVkIGNvZGUgZm9yIHN5bmNocm9uaXppbmcgdmlhIFJlbW90ZUxBeWVyVHJlZVRyYW5zYWN0aW9u
LgorCisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OldlYlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXIpOgorICAgICAgICBSZW1vdmUgaW5pdGlhbGl6YXRpb24gZm9yIHJl
bW92ZWQgbWVtZWJlciBtX3NlbmRVbnBhcmVudFZpZGVvTGF5ZXJUcmFuc2FjdGlvbi4KKworICAg
ICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjplbnRlckZ1bGxzY3JlZW5G
b3JOb2RlKToKKyAgICAgICAgQ3JlYXRlcyBhIGZ1bGxzY3JlZW4gbGF5ZXIsIGdpdmVzIGl0IHRv
IHRoZSBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbCB0byBmaWxsIGluLAorICAgICAgICBhbmQgaG9z
dHMgaXQgaW4gYSBjb250ZXh0IHRvIHNlbmQgdG8gdGhlIFVJUHJvY2Vzcy4KKworICAgICAgICAo
V2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpleGl0RnVsbHNjcmVlbkZvck5vZGUp
OgorICAgICAgICByZW1vdmUgZW50ZXJGdWxsc2NyZWVuKCkgYW5kIGp1c3QgZGlyZWN0bHkgc2Vu
ZCB0aGUgSVBDIG1lc3NhZ2UuIAorCisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXI6OmRpZEV4aXRGdWxsc2NyZWVuKToKKyAgICAgICAgQ2xlYW4gdXAgdGhlIGhvc3Rp
bmcgY29udGV4dC4KKworICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
OjpzZXRWaWRlb0xheWVyR3Jhdml0eUVudW0pOgorICAgICAgICBGb3J3YXJkIG9uIHRoZSB2aWRl
byBncmF2aXR5LiBUeXBlIGNvbnZlcnQgZnJvbSB1bnNpZ25lZCB0byBNZWRpYVBsYXllcjo6Vmlk
ZW9HcmF2aXR5LgorCiAyMDE0LTAzLTA0ICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBw
bGUuY29tPgogCiAgICAgICAgIEZpeCB0aGUgYnVpbGQgYWZ0ZXIgcjE2NTA5NQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgppbmRleCAyZjkxNzE0NjI5NGM4NmQ5ZGQ2NGFiZjI4NjQyOTc4OTBlYzEwNWM2Li41
Yjg2ZmI3MzM3MTRmMDUzMmRlY2FjOTI1YzQyZGZhNzk3MzVkZmFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbgpAQCAtMzIwNSwxMCArMzIwNSw4IEBAIF9fWk5LN1dlYkNvcmUxNkhUTUxNZWRpYUVsZW1l
bnQ4ZHVyYXRpb25FdgogX19aTjdXZWJDb3JlMzJXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdDExc2V0RHVyYXRpb25FZAogX19aTjdXZWJDb3JlMzJXZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdDE0ZXhpdEZ1bGxzY3JlZW5FdgogX19aTjdXZWJDb3JlMzJXZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VBVktpdDE0c2V0Q3VycmVudFRpbWVFZGQKLV9fWk43V2ViQ29yZTMyV2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQxNWVudGVyRnVsbHNjcmVlbkV2Ci1fX1pON1dl
YkNvcmUzMldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0MTdkaWRMZW5kVmlkZW9MYXll
ckV2CitfX1pON1dlYkNvcmUzMldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0MTVlbnRl
ckZ1bGxzY3JlZW5FUjdDQUxheWVyCiBfX1pON1dlYkNvcmUzMldlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUFWS2l0MThzZXRWaWRlb0RpbWVuc2lvbnNFYmZmCi1fX1pON1dlYkNvcmUzMldlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0MTh3aWxsTGVuZFZpZGVvTGF5ZXJFUDdDQUxheWVy
CiBfX1pON1dlYkNvcmUzMldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0MjZzZXRXZWJW
aWRlb0Z1bGxzY3JlZW5Nb2RlbEVQTlNfMjNXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbEUKIF9fWk43
V2ViQ29yZTMyV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQzNXNldFdlYlZpZGVvRnVs
bHNjcmVlbkNoYW5nZU9ic2VydmVyRVBOU18zMldlYlZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2Vy
dmVyRQogX19aTjdXZWJDb3JlMzJXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDdzZXRS
YXRlRWJmCkBAIC0zMjE3LDkgKzMyMTUsMTAgQEAgX19aTjdXZWJDb3JlMzVXZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbE1lZGlhRWxlbWVudDEwc2Vla1RvVGltZUVkCiBfX1pON1dlYkNvcmUzNVdlYlZp
ZGVvRnVsbHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50MTFoYW5kbGVFdmVudEVQTlNfMjJTY3JpcHRF
eGVjdXRpb25Db250ZXh0RVBOU181RXZlbnRFCiBfX1pON1dlYkNvcmUzNVdlYlZpZGVvRnVsbHNj
cmVlbk1vZGVsTWVkaWFFbGVtZW50MTVzZXRNZWRpYUVsZW1lbnRFUE5TXzE2SFRNTE1lZGlhRWxl
bWVudEUKIF9fWk43V2ViQ29yZTM1V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxNZWRpYUVsZW1lbnQx
NXRvZ2dsZVBsYXlTdGF0ZUV2Ci1fX1pON1dlYkNvcmUzNVdlYlZpZGVvRnVsbHNjcmVlbk1vZGVs
TWVkaWFFbGVtZW50MTZib3Jyb3dWaWRlb0xheWVyRXYKLV9fWk43V2ViQ29yZTM1V2ViVmlkZW9G
dWxsc2NyZWVuTW9kZWxNZWRpYUVsZW1lbnQxNnJldHVyblZpZGVvTGF5ZXJFdgorX19aTjdXZWJD
b3JlMzVXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbE1lZGlhRWxlbWVudDE4c2V0VmlkZW9MYXllckZy
YW1lRU5TXzlGbG9hdFJlY3RFCitfX1pON1dlYkNvcmUzNVdlYlZpZGVvRnVsbHNjcmVlbk1vZGVs
TWVkaWFFbGVtZW50MjBzZXRWaWRlb0xheWVyR3Jhdml0eUVOU18yM1dlYlZpZGVvRnVsbHNjcmVl
bk1vZGVsMTJWaWRlb0dyYXZpdHlFCiBfX1pON1dlYkNvcmUzNVdlYlZpZGVvRnVsbHNjcmVlbk1v
ZGVsTWVkaWFFbGVtZW50MjFyZXF1ZXN0RXhpdEZ1bGxzY3JlZW5FdgorX19aTjdXZWJDb3JlMzVX
ZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbE1lZGlhRWxlbWVudDIzc2V0VmlkZW9GdWxsc2NyZWVuTGF5
ZXJFUDdDQUxheWVyCiBfX1pON1dlYkNvcmUzNVdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsTWVkaWFF
bGVtZW50NHBsYXlFdgogX19aTjdXZWJDb3JlMzVXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbE1lZGlh
RWxlbWVudDVwYXVzZUV2CiBfX1pON1dlYkNvcmUzNVdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsTWVk
aWFFbGVtZW50QzJFdgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5k
ZXggMzg2ODQyODA0MzI2YzViNGE2OTBiY2ZjMDI2ZDU4YzZjZjkwYWU2NS4uMDdhYjYzZDAxODRk
NzUyM2VkYWVhNWJjZmU3ZWI0MDVjODdjMDA0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwCkBAIC0zMTksNyArMzE5LDcgQEAgSFRNTE1lZGlhRWxlbWVudDo6SFRN
TE1lZGlhRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9j
dW0KICNlbmRpZgogI2lmIFBMQVRGT1JNKElPUykKICAgICAsIG1fcmVxdWVzdGluZ1BsYXkoZmFs
c2UpCi0gICAgLCBtX3BsYXRmb3JtTGF5ZXJCb3Jyb3dlZChmYWxzZSkKKyAgICAsIG1fdmlkZW9G
dWxsc2NyZWVuR3Jhdml0eShNZWRpYVBsYXllcjo6VmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0KQog
I2VuZGlmCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgICwgbV90cmFja3NBcmVSZWFkeSh0
cnVlKQpAQCAtNDk0MiwyOSArNDk0MiwzNSBAQCBQbGF0Zm9ybU1lZGlhIEhUTUxNZWRpYUVsZW1l
bnQ6OnBsYXRmb3JtTWVkaWEoKSBjb25zdAogUGxhdGZvcm1MYXllciogSFRNTE1lZGlhRWxlbWVu
dDo6cGxhdGZvcm1MYXllcigpIGNvbnN0CiB7CiAjaWYgUExBVEZPUk0oSU9TKQotICAgIGlmICht
X3BsYXRmb3JtTGF5ZXJCb3Jyb3dlZCkKKyAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5MYXllcikK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAjZW5kaWYKICAgICByZXR1cm4gbV9wbGF5ZXIgPyBt
X3BsYXllci0+cGxhdGZvcm1MYXllcigpIDogbnVsbHB0cjsKIH0KIAogI2lmIFBMQVRGT1JNKElP
UykKLVBsYXRmb3JtTGF5ZXIqIEhUTUxNZWRpYUVsZW1lbnQ6OmJvcnJvd1BsYXRmb3JtTGF5ZXIo
KQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9y
bUxheWVyKiBwbGF0Zm9ybUxheWVyKQogewotICAgIEFTU0VSVCghbV9wbGF0Zm9ybUxheWVyQm9y
cm93ZWQpOwotICAgIG1fcGxhdGZvcm1MYXllckJvcnJvd2VkID0gdHJ1ZTsKLSAgICBpZiAocmVu
ZGVyZXIoKSkKLSAgICAgICAgcmVuZGVyZXIoKS0+dXBkYXRlRnJvbUVsZW1lbnQoKTsKLSAgICBy
ZXR1cm4gbV9wbGF5ZXIgPyBtX3BsYXllci0+cGxhdGZvcm1MYXllcigpIDogbnVsbHB0cjsKKyAg
ICBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyID0gcGxhdGZvcm1MYXllcjsKKyAgICBpZiAoIW1fcGxh
eWVyKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgbV9wbGF5ZXItPnNldFZpZGVvRnVsbHNj
cmVlbkxheWVyKHBsYXRmb3JtTGF5ZXIpOworICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoU3ludGhl
dGljU3R5bGVDaGFuZ2UpOworfQorICAgIAordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRWaWRl
b0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3QgZnJhbWUpCit7CisgICAgbV92aWRlb0Z1bGxzY3Jl
ZW5GcmFtZSA9IGZyYW1lOworICAgIGlmIChtX3BsYXllcikKKyAgICAgICAgbV9wbGF5ZXItPnNl
dFZpZGVvRnVsbHNjcmVlbkZyYW1lKGZyYW1lKTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpyZXR1cm5QbGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIpCit2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OnNldFZpZGVvRnVsbHNjcmVlbkdyYXZpdHkoTWVkaWFQbGF5ZXI6
OlZpZGVvR3Jhdml0eSBncmF2aXR5KQogewotICAgIEFTU0VSVF9VTlVTRUQocGxhdGZvcm1MYXll
ciwgcGxhdGZvcm1MYXllciA9PSAobV9wbGF5ZXIgPyBtX3BsYXllci0+cGxhdGZvcm1MYXllcigp
IDogbnVsbHB0cikpOwotICAgIEFTU0VSVChtX3BsYXRmb3JtTGF5ZXJCb3Jyb3dlZCk7Ci0gICAg
bV9wbGF0Zm9ybUxheWVyQm9ycm93ZWQgPSBmYWxzZTsKLSAgICBpZiAocmVuZGVyZXIoKSkKLSAg
ICAgICAgcmVuZGVyZXIoKS0+dXBkYXRlRnJvbUVsZW1lbnQoKTsKKyAgICBtX3ZpZGVvRnVsbHNj
cmVlbkdyYXZpdHkgPSBncmF2aXR5OworICAgIGlmIChtX3BsYXllcikKKyAgICAgICAgbV9wbGF5
ZXItPnNldFZpZGVvRnVsbHNjcmVlbkdyYXZpdHkoZ3Jhdml0eSk7CiB9CiAjZW5kaWYKIApAQCAt
NTM0NCw2ICs1MzUwLDEyIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y3JlYXRlTWVkaWFQbGF5
ZXIoKQogICAgICAgICBlbnF1ZXVlUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlDaGFuZ2VkRXZl
bnQoKTsgLy8gRW5zdXJlIHRoZSBldmVudCBsaXN0ZW5lciBnZXRzIGF0IGxlYXN0IG9uZSBldmVu
dC4KICAgICB9CiAjZW5kaWYKKyAgICAKKyNpZiBQTEFURk9STShJT1MpCisgICAgbV9wbGF5ZXIt
PnNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKG1fdmlkZW9GdWxsc2NyZWVuRnJhbWUpOworICAgIG1f
cGxheWVyLT5zZXRWaWRlb0Z1bGxzY3JlZW5HcmF2aXR5KG1fdmlkZW9GdWxsc2NyZWVuR3Jhdml0
eSk7CisgICAgbV9wbGF5ZXItPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKG1fdmlkZW9GdWxsc2Ny
ZWVuTGF5ZXIuZ2V0KCkpOworI2VuZGlmCiB9CiAKICNpZiBFTkFCTEUoV0VCX0FVRElPKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCBlYTNkNGVmYWFhMjI2MjgwMTQx
MzI5ZDk0N2E0ZTdmZjYyY2UwMjliLi5kYjg2YTNmNTc2YmQ3Zjk4NmZhODdjYzdhODUzYWFiYjgz
NjY4ZjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtMTM0LDgg
KzEzNCw5IEBAIHB1YmxpYzoKICAgICBQbGF0Zm9ybU1lZGlhIHBsYXRmb3JtTWVkaWEoKSBjb25z
dDsKICAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Q7CiAjaWYgUExBVEZP
Uk0oSU9TKQotICAgIFBsYXRmb3JtTGF5ZXIqIGJvcnJvd1BsYXRmb3JtTGF5ZXIoKTsKLSAgICB2
b2lkIHJldHVyblBsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciopOworICAgIHZvaWQgc2V0Vmlk
ZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciopOworICAgIHZvaWQgc2V0VmlkZW9GdWxs
c2NyZWVuRnJhbWUoRmxvYXRSZWN0KTsKKyAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkdyYXZp
dHkoTWVkaWFQbGF5ZXI6OlZpZGVvR3Jhdml0eSk7CiAjZW5kaWYKIAogICAgIGVudW0gRGVsYXll
ZEFjdGlvblR5cGUgewpAQCAtNzk2LDcgKzc5Nyw5IEBAIHByaXZhdGU6CiAKICNpZiBQTEFURk9S
TShJT1MpCiAgICAgYm9vbCBtX3JlcXVlc3RpbmdQbGF5IDogMTsKLSAgICBib29sIG1fcGxhdGZv
cm1MYXllckJvcnJvd2VkIDogMTsKKyAgICBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gbV92aWRl
b0Z1bGxzY3JlZW5MYXllcjsKKyAgICBGbG9hdFJlY3QgbV92aWRlb0Z1bGxzY3JlZW5GcmFtZTsK
KyAgICBNZWRpYVBsYXllcjo6VmlkZW9HcmF2aXR5IG1fdmlkZW9GdWxsc2NyZWVuR3Jhdml0eTsK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IGViNTIwNjM0NzEzMjM2ZjM4
M2UxNWJhNDU3OWUwZDU0MGFmOTI2YzEuLjQ0MDVlM2EwYTQ3YTQ4ODJhZGM4N2Q3N2RlZTM3OTll
ZjViZDA2NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllci5jcHAKQEAgLTYyNCw2ICs2MjQsMjMgQEAgUGxhdGZvcm1MYXllciogTWVkaWFQbGF5
ZXI6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAogewogICAgIHJldHVybiBtX3ByaXZhdGUtPnBsYXRm
b3JtTGF5ZXIoKTsKIH0KKyAgICAKKyNpZiBQTEFURk9STShJT1MpCit2b2lkIE1lZGlhUGxheWVy
OjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiBsYXllcikKK3sKKyAgICBt
X3ByaXZhdGUtPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKGxheWVyKTsKK30KKwordm9pZCBNZWRp
YVBsYXllcjo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0IGZyYW1lKQoreworICAg
IG1fcHJpdmF0ZS0+c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoZnJhbWUpOworfQorCit2b2lkIE1l
ZGlhUGxheWVyOjpzZXRWaWRlb0Z1bGxzY3JlZW5HcmF2aXR5KE1lZGlhUGxheWVyOjpWaWRlb0dy
YXZpdHkgZ3Jhdml0eSkKK3sKKyAgICBtX3ByaXZhdGUtPnNldFZpZGVvRnVsbHNjcmVlbkdyYXZp
dHkoZ3Jhdml0eSk7Cit9CisjZW5kaWYKIAogTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBNZWRp
YVBsYXllcjo6bmV0d29ya1N0YXRlKCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4IDc0MDI0MDQ2YzY0N2I4ZDA3YjgxYTVlZGRmNmZl
ZWMxNDY3MmVmY2YuLjk1Y2Y5NmU5Yzk5ZTQ5N2UwYTA1Yjk2Yjg4ZTM5N2QwNjRjOTdmZDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAt
MzAwLDcgKzMwMCwxMiBAQCBwdWJsaWM6CiAgICAgYm9vbCByZXF1aXJlc0ltbWVkaWF0ZUNvbXBv
c2l0aW5nKCkgY29uc3Q7CiAgICAgUGxhdGZvcm1NZWRpYSBwbGF0Zm9ybU1lZGlhKCkgY29uc3Q7
CiAgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0OwotCisjaWYgUExBVEZP
Uk0oSU9TKQorICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciop
OworICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0KTsKKyAgICBlbnVt
IFZpZGVvR3Jhdml0eSB7VmlkZW9HcmF2aXR5UmVzaXplLCBWaWRlb0dyYXZpdHlSZXNpemVBc3Bl
Y3QsIFZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdEZpbGx9OworICAgIHZvaWQgc2V0VmlkZW9GdWxs
c2NyZWVuR3Jhdml0eShWaWRlb0dyYXZpdHkpOworI2VuZGlmCiAgICAgSW50U2l6ZSBuYXR1cmFs
U2l6ZSgpOwogICAgIGJvb2wgaGFzVmlkZW8oKSBjb25zdDsKICAgICBib29sIGhhc0F1ZGlvKCkg
Y29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllclByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyUHJpdmF0ZS5oCmluZGV4IGEyZDk4NWVmNTg5MTNmYWM4ZmUzMWNlOGRmMzcxOGY3YTll
Zjc1NmMuLjUyOTA2OGQwMTRiMDU4MmE3ZGFjNTMwYTU5ZWFkYjA1ZTRiZjQ5MjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0
ZS5oCkBAIC01NCw3ICs1NCwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVU
b1BsYXkoKSB7IH0KICAgICB2aXJ0dWFsIFBsYXRmb3JtTWVkaWEgcGxhdGZvcm1NZWRpYSgpIGNv
bnN0IHsgcmV0dXJuIE5vUGxhdGZvcm1NZWRpYTsgfQogICAgIHZpcnR1YWwgUGxhdGZvcm1MYXll
ciogcGxhdGZvcm1MYXllcigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KLQorI2lmIFBMQVRGT1JNKElP
UykKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXll
ciopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJl
Y3QpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5HcmF2aXR5KE1lZGlh
UGxheWVyOjpWaWRlb0dyYXZpdHkpIHsgfQorI2VuZGlmCiAgICAgdmlydHVhbCB2b2lkIHBsYXko
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHBhdXNlKCkgPSAwOyAgICAKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5oCmluZGV4IDRjMTYxMzVmN2FmZDk5ZjQyODg4NjFlMDJhZWE5YjI3ZjM2NjUwM2MuLjBj
ODJlZGZhMGY4ZjllYzY5OWEzMzkzNDJkMmZkZTBlMDUwNTYxZGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLmgKQEAgLTE0Myw2ICsxNDMsMTEgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFp
bnQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYpOwogICAgIHZpcnR1YWwgdm9pZCBw
YWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0
Jik7CiAgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Q7Cisj
aWYgUExBVEZPUk0oSU9TKQorICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXll
cihQbGF0Zm9ybUxheWVyKik7CisgICAgdmlydHVhbCB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkZy
YW1lKEZsb2F0UmVjdCk7CisgICAgdmlydHVhbCB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkdyYXZp
dHkoTWVkaWFQbGF5ZXI6OlZpZGVvR3Jhdml0eSk7CisjZW5kaWYKICAgICB2aXJ0dWFsIGJvb2wg
c3VwcG9ydHNBY2NlbGVyYXRlZFJlbmRlcmluZygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAg
ICB2aXJ0dWFsIGZsb2F0IG1lZGlhVGltZUZvclRpbWVWYWx1ZShmbG9hdCkgY29uc3Q7CiAgICAg
dmlydHVhbCBkb3VibGUgbWF4aW11bUR1cmF0aW9uVG9DYWNoZU1lZGlhVGltZSgpIGNvbnN0IHsg
cmV0dXJuIDU7IH0KQEAgLTIzOCw2ICsyNDMsMTEgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8
QVZQbGF5ZXI+IG1fYXZQbGF5ZXI7CiAgICAgUmV0YWluUHRyPEFWUGxheWVySXRlbT4gbV9hdlBs
YXllckl0ZW07CiAgICAgUmV0YWluUHRyPEFWUGxheWVyTGF5ZXI+IG1fdmlkZW9MYXllcjsKKyNp
ZiBQTEFURk9STShJT1MpCisgICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IG1fdmlkZW9GdWxs
c2NyZWVuTGF5ZXI7CisgICAgRmxvYXRSZWN0IG1fdmlkZW9GdWxsc2NyZWVuRnJhbWU7CisgICAg
TWVkaWFQbGF5ZXI6OlZpZGVvR3Jhdml0eSBtX3ZpZGVvRnVsbHNjcmVlbkdyYXZpdHk7CisjZW5k
aWYKICAgICBSZXRhaW5QdHI8V2ViQ29yZUFWRk1vdmllT2JzZXJ2ZXI+IG1fb2JqY09ic2VydmVy
OwogICAgIFJldGFpblB0cjxpZD4gbV90aW1lT2JzZXJ2ZXI7CiAgICAgbXV0YWJsZSBTdHJpbmcg
bV9sYW5ndWFnZU9mUHJpbWFyeUF1ZGlvVHJhY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRl
eCBiMWY0YTRmM2M1MmZhNjI5MzkwOTEwZmEwMzQ0YzllZjhlZDU3NzEzLi45NDQwYWZhYzJiYTBl
MTE5MmQ5NDMyYTI1MmJlZmZhYjQwODcxNjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAg
LTEzNCw2ICsxMzQsNyBAQCBTT0ZUX0xJTktfUE9JTlRFUihBVkZvdW5kYXRpb24sIEFWUGxheWVy
SXRlbURpZFBsYXlUb0VuZFRpbWVOb3RpZmljYXRpb24sIE5TU3RyaQogU09GVF9MSU5LX1BPSU5U
RVIoQVZGb3VuZGF0aW9uLCBBVkFzc2V0SW1hZ2VHZW5lcmF0b3JBcGVydHVyZU1vZGVDbGVhbkFw
ZXJ0dXJlLCBOU1N0cmluZyAqKQogU09GVF9MSU5LX1BPSU5URVIoQVZGb3VuZGF0aW9uLCBBVlVS
TEFzc2V0UmVmZXJlbmNlUmVzdHJpY3Rpb25zS2V5LCBOU1N0cmluZyAqKQogU09GVF9MSU5LX1BP
SU5URVIoQVZGb3VuZGF0aW9uLCBBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0LCBOU1N0
cmluZyAqKQorU09GVF9MSU5LX1BPSU5URVIoQVZGb3VuZGF0aW9uLCBBVkxheWVyVmlkZW9HcmF2
aXR5UmVzaXplQXNwZWN0RmlsbCwgTlNTdHJpbmcgKikKIFNPRlRfTElOS19QT0lOVEVSKEFWRm91
bmRhdGlvbiwgQVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZSwgTlNTdHJpbmcgKikKIFNPRlRfTElO
S19QT0lOVEVSKENvcmVWaWRlbywga0NWUGl4ZWxCdWZmZXJQaXhlbEZvcm1hdFR5cGVLZXksIE5T
U3RyaW5nICopCiAKQEAgLTE1NCw2ICsxNTUsNyBAQCBTT0ZUX0xJTktfQ09OU1RBTlQoQ29yZU1l
ZGlhLCBrQ01UaW1lWmVybywgQ01UaW1lKQogI2RlZmluZSBBVkFzc2V0SW1hZ2VHZW5lcmF0b3JB
cGVydHVyZU1vZGVDbGVhbkFwZXJ0dXJlIGdldEFWQXNzZXRJbWFnZUdlbmVyYXRvckFwZXJ0dXJl
TW9kZUNsZWFuQXBlcnR1cmUoKQogI2RlZmluZSBBVlVSTEFzc2V0UmVmZXJlbmNlUmVzdHJpY3Rp
b25zS2V5IGdldEFWVVJMQXNzZXRSZWZlcmVuY2VSZXN0cmljdGlvbnNLZXkoKQogI2RlZmluZSBB
VkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0IGdldEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNp
emVBc3BlY3QoKQorI2RlZmluZSBBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0RmlsbCBn
ZXRBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0RmlsbCgpCiAjZGVmaW5lIEFWTGF5ZXJW
aWRlb0dyYXZpdHlSZXNpemUgZ2V0QVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZSgpCiAjZGVmaW5l
IGtDVlBpeGVsQnVmZmVyUGl4ZWxGb3JtYXRUeXBlS2V5IGdldGtDVlBpeGVsQnVmZmVyUGl4ZWxG
b3JtYXRUeXBlS2V5KCkKIApAQCAtMzEyLDYgKzMxNCw5IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lz
dHJhCiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDKE1lZGlhUGxheWVyKiBwbGF5ZXIpCiAgICAgOiBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb24ocGxheWVyKQogICAgICwgbV93ZWFrUHRyRmFjdG9yeSh0aGlz
KQorI2lmIFBMQVRGT1JNKElPUykKKyAgICAsIG1fdmlkZW9GdWxsc2NyZWVuR3Jhdml0eShNZWRp
YVBsYXllcjo6VmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0KQorI2VuZGlmCiAgICAgLCBtX29iamNP
YnNlcnZlcihhZG9wdE5TKFtbV2ViQ29yZUFWRk1vdmllT2JzZXJ2ZXIgYWxsb2NdIGluaXRXaXRo
Q2FsbGJhY2s6dGhpc10pKQogICAgICwgbV92aWRlb0ZyYW1lSGFzRHJhd24oZmFsc2UpCiAgICAg
LCBtX2hhdmVDaGVja2VkUGxheWFiaWxpdHkoZmFsc2UpCkBAIC00OTEsNiArNDk2LDEzIEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlVmlkZW9MYXllcigp
CiAgICAgICAgIHVwZGF0ZVZpZGVvTGF5ZXJHcmF2aXR5KCk7CiAgICAgICAgIExPRyhNZWRpYSwg
Ik1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZVZpZGVvTGF5ZXIoJXAp
IC0gcmV0dXJuaW5nICVwIiwgdGhpcywgbV92aWRlb0xheWVyLmdldCgpKTsKIAorI2lmIFBMQVRG
T1JNKElPUykKKyAgICAgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXIpCisgICAgICAgIHsK
KyAgICAgICAgICAgIFttX3ZpZGVvTGF5ZXIgc2V0RnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCBtX3Zp
ZGVvRnVsbHNjcmVlbkZyYW1lLndpZHRoKCksIG1fdmlkZW9GdWxsc2NyZWVuRnJhbWUuaGVpZ2h0
KCkpXTsKKyAgICAgICAgICAgIFttX3ZpZGVvRnVsbHNjcmVlbkxheWVyIGFkZFN1YmxheWVyOm1f
dmlkZW9MYXllci5nZXQoKV07CisgICAgICAgIH0KKyNlbmRpZgogICAgICAgICBwbGF5ZXIoKS0+
bWVkaWFQbGF5ZXJDbGllbnQoKS0+bWVkaWFQbGF5ZXJSZW5kZXJpbmdNb2RlQ2hhbmdlZChwbGF5
ZXIoKSk7CiAgICAgfSk7CiB9CkBAIC03MTYsNiArNzI4LDQ5IEBAIFBsYXRmb3JtTGF5ZXIqIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAog
ICAgIHJldHVybiBtX3ZpZGVvTGF5ZXIuZ2V0KCk7CiB9CiAKKyNpZiBQTEFURk9STShJT1MpCit2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFZpZGVvRnVsbHNjcmVl
bkxheWVyKFBsYXRmb3JtTGF5ZXIqIHZpZGVvRnVsbHNjcmVlbkxheWVyKQoreworICAgIGlmICht
X3ZpZGVvRnVsbHNjcmVlbkxheWVyID09IHZpZGVvRnVsbHNjcmVlbkxheWVyKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5MYXllcikKKyAgICAgICBbbV92aWRl
b0xheWVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKKworICAgIG1fdmlkZW9GdWxsc2NyZWVuTGF5
ZXIgPSB2aWRlb0Z1bGxzY3JlZW5MYXllcjsKKworICAgIGlmICghbV92aWRlb0Z1bGxzY3JlZW5M
YXllciB8fCAhbV92aWRlb0xheWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBbbV92aWRlb0xh
eWVyIHNldEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgbV92aWRlb0Z1bGxzY3JlZW5GcmFtZS53aWR0
aCgpLCBtX3ZpZGVvRnVsbHNjcmVlbkZyYW1lLmhlaWdodCgpKV07CisgICAgW21fdmlkZW9GdWxs
c2NyZWVuTGF5ZXIgYWRkU3VibGF5ZXI6bV92aWRlb0xheWVyLmdldCgpXTsKK30KKwordm9pZCBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5GcmFt
ZShGbG9hdFJlY3QgZnJhbWUpCit7CisgICAgbV92aWRlb0Z1bGxzY3JlZW5GcmFtZSA9IGZyYW1l
OworICAgIGlmICghbV92aWRlb0Z1bGxzY3JlZW5MYXllciB8fCAhbV92aWRlb0xheWVyKQorICAg
ICAgICByZXR1cm47CisgICAgCisgICAgW21fdmlkZW9MYXllciBzZXRGcmFtZTpDR1JlY3RNYWtl
KDAsIDAsIGZyYW1lLndpZHRoKCksIGZyYW1lLmhlaWdodCgpKV07Cit9CisKKyAgICB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkdyYXZp
dHkoTWVkaWFQbGF5ZXI6OlZpZGVvR3Jhdml0eSBncmF2aXR5KQoreworICAgIG1fdmlkZW9GdWxs
c2NyZWVuR3Jhdml0eSA9IGdyYXZpdHk7CisgICAgaWYgKCFtX3ZpZGVvTGF5ZXIpCisgICAgICAg
IHJldHVybjsKKworICAgIE5TU3RyaW5nKiB2aWRlb0dyYXZpdHkgPSBBVkxheWVyVmlkZW9HcmF2
aXR5UmVzaXplQXNwZWN0OworICAgIGlmIChncmF2aXR5ID09IE1lZGlhUGxheWVyOjpWaWRlb0dy
YXZpdHlSZXNpemVBc3BlY3RGaWxsKQorICAgICAgICB2aWRlb0dyYXZpdHkgPSBBVkxheWVyVmlk
ZW9HcmF2aXR5UmVzaXplQXNwZWN0RmlsbDsKKyAgICBlbHNlIGlmIChncmF2aXR5ID09IE1lZGlh
UGxheWVyOjpWaWRlb0dyYXZpdHlSZXNpemUpCisgICAgICAgIHZpZGVvR3Jhdml0eSA9IEFWTGF5
ZXJWaWRlb0dyYXZpdHlSZXNpemU7CisKKyAgICBbbV92aWRlb0xheWVyIHNldFZpZGVvR3Jhdml0
eTp2aWRlb0dyYXZpdHldOworfQorI2VuZGlmCisKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6cGxhdGZvcm1TZXRWaXNpYmxlKGJvb2wgaXNWaXNpYmxlKQogewogICAg
IFtDQVRyYW5zYWN0aW9uIGJlZ2luXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tCmlu
ZGV4IGFjOTc1YTQ3YWM3YmI4ODA1N2M5M2QwNmE2MmQ5MWU5ZTJmMTdmMWYuLmMwMWEzMDExNzNh
ZjJjZWUwNTk1MjNiNDJiM2NhZjg0ODg0ZDA1YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJB
VktpdC5tbQpAQCAtMzIsNiArMzIsNyBAQAogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAi
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaCIKICNpbXBvcnQgIldlYlZpZGVvRnVs
bHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50LmgiCisjaW1wb3J0IDxRdWFydHpDb3JlL0NvcmVBbmlt
YXRpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZVRocmVhZFJ1bi5oPgogCiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKQEAgLTU1LDYgKzU2LDcgQEAgcHVibGljOgogICAgIFJlZlB0cjxX
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdD4gX2ludGVyZmFjZTsKICAgICBSZWZQdHI8
V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxNZWRpYUVsZW1lbnQ+IF9tb2RlbDsKICAgICBXZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyQ2hhbmdlT2JzZXJ2ZXIgX2NoYW5nZU9ic2VydmVyOworICAg
IFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBfdmlkZW9GdWxsc2NyZWVuTGF5ZXI7CiB9CiAKIC0g
KGluc3RhbmNldHlwZSlpbml0CkBAIC04OCwxMyArOTAsMTUgQEAgcHVibGljOgogICAgIFtzZWxm
IHJldGFpbl07IC8vIEJhbGFuY2VkIGJ5IC1yZWxlYXNlIGluIGRpZEV4aXRGdWxsc2NyZWVuOgog
ICAgIAogICAgIFVOVVNFRF9QQVJBTShzY3JlZW4pOworICAgIF92aWRlb0Z1bGxzY3JlZW5MYXll
ciA9IFtDQUxheWVyIGxheWVyXTsKICAgICBfaW50ZXJmYWNlID0gYWRvcHRSZWYobmV3IFdlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0KTsKICAgICBfaW50ZXJmYWNlLT5zZXRXZWJWaWRl
b0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcigmX2NoYW5nZU9ic2VydmVyKTsKICAgICBfbW9kZWwg
PSBhZG9wdFJlZihuZXcgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxNZWRpYUVsZW1lbnQpOwogICAg
IF9tb2RlbC0+c2V0V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlKF9pbnRlcmZhY2UuZ2V0KCkp
OwogICAgIF9pbnRlcmZhY2UtPnNldFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsKF9tb2RlbC5nZXQo
KSk7CiAgICAgX21vZGVsLT5zZXRNZWRpYUVsZW1lbnQoX21lZGlhRWxlbWVudC5nZXQoKSk7Ci0g
ICAgX2ludGVyZmFjZS0+ZW50ZXJGdWxsc2NyZWVuKCk7CisgICAgX21vZGVsLT5zZXRWaWRlb0Z1
bGxzY3JlZW5MYXllcihfdmlkZW9GdWxsc2NyZWVuTGF5ZXIuZ2V0KCkpOworICAgIF9pbnRlcmZh
Y2UtPmVudGVyRnVsbHNjcmVlbigqX3ZpZGVvRnVsbHNjcmVlbkxheWVyLmdldCgpKTsKIH0KIAog
LSAodm9pZClleGl0RnVsbHNjcmVlbgpAQCAtMTA5LDEwICsxMTMsMTEgQEAgcHVibGljOgogLSAo
dm9pZClkaWRFeGl0RnVsbHNjcmVlbgogewogICAgIFdlYlRocmVhZFJ1biheewotICAgICAgICBf
bW9kZWwtPnNldE1lZGlhRWxlbWVudChudWxscHRyKTsKICAgICAgICAgX2ludGVyZmFjZS0+c2V0
V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwobnVsbHB0cik7Ci0gICAgICAgIF9pbnRlcmZhY2UtPnNl
dFdlYlZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKG51bGxwdHIpOwogICAgICAgICBfbW9k
ZWwtPnNldFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZShudWxscHRyKTsKKyAgICAgICAgX21v
ZGVsLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihudWxscHRyKTsKKyAgICAgICAgX21vZGVsLT5z
ZXRNZWRpYUVsZW1lbnQobnVsbHB0cik7CisgICAgICAgIF9pbnRlcmZhY2UtPnNldFdlYlZpZGVv
RnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKG51bGxwdHIpOwogICAgICAgICBfbW9kZWwgPSBudWxs
cHRyOwogICAgICAgICBfaW50ZXJmYWNlID0gbnVsbHB0cjsKICAgICAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlLmgKaW5kZXggYTljNDA3Mzc2M2FkOTdiYmUzNzI1Y2RjNzYyYzVkOWJmNzgwZTZiMC4uZjNl
OTFmYjViZDFhOTRjMTk2OWExZWE2NDExYjIwNGQ4MzkwYzUxMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2Uu
aApAQCAtNDAsOCArNDAsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEN1cnJlbnRU
aW1lKGRvdWJsZSBjdXJyZW50VGltZSwgZG91YmxlIGFuY2hvclRpbWUpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0UmF0ZShib29sIGlzUGxheWluZywgZmxvYXQgcGxheWJhY2tSYXRlKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHNldFZpZGVvRGltZW5zaW9ucyhib29sIGhhc1ZpZGVvLCBmbG9h
dCB3aWR0aCwgZmxvYXQgaGVpZ2h0KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxMZW5kVmlk
ZW9MYXllcihQbGF0Zm9ybUxheWVyKikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRMZW5kVmlk
ZW9MYXllcigpID0gMDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmgKaW5kZXgg
ODM0NDkwODQwZTdhMzZjZWU1ODUxNWZhNWNlMTQ0MGUxNzlkNTM0OS4uY2Y4ZjQyMDU5NGE1ZDhm
N2ZmYmJlM2IyZTM0ZDAwNGVjZWIwYjgzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmgK
QEAgLTQxLDcgKzQxLDcgQEAgT0JKQ19DTEFTUyBBVlBsYXllclZpZXdDb250cm9sbGVyOwogT0JK
Q19DTEFTUyBVSVZpZXdDb250cm9sbGVyOwogT0JKQ19DTEFTUyBVSVdpbmRvdzsKIE9CSkNfQ0xB
U1MgQ0FMYXllcjsKLU9CSkNfQ0xBU1MgV2ViQVZQbGF5ZXJMYXllcjsKK09CSkNfQ0xBU1MgV2Vi
QVZWaWRlb0xheWVyOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBXZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbDsKQEAgLTYyLDcgKzYyLDcgQEAgY2xhc3MgV2ViVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQKICAgICBSZXRhaW5QdHI8VUlWaWV3Q29udHJvbGxlcj4gbV92aWV3Q29udHJv
bGxlcjsKICAgICBSZXRhaW5QdHI8VUlXaW5kb3c+IG1fd2luZG93OwogICAgIFJldGFpblB0cjxD
QUxheWVyPiBtX3ZpZGVvTGF5ZXI7Ci0gICAgUmV0YWluUHRyPFdlYkFWUGxheWVyTGF5ZXI+IG1f
dmlkZW9MYXllckNvbnRhaW5lcjsKKyAgICBSZXRhaW5QdHI8V2ViQVZWaWRlb0xheWVyPiBtX3Zp
ZGVvTGF5ZXJDb250YWluZXI7CiAgICAgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwqIG1fdmlkZW9G
dWxsc2NyZWVuTW9kZWw7CiAgICAgV2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIqIG1f
ZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyOwogICAgICAgICAKQEAgLTgxLDEwICs4MSw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0UmF0ZShib29sIGlzUGxheWluZywgZmxvYXQgcGxh
eWJhY2tSYXRlKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9EaW1lbnNpb25z
KGJvb2wgaGFzVmlkZW8sIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpIG92ZXJyaWRlOwogCi0g
ICAgdmlydHVhbCB2b2lkIHdpbGxMZW5kVmlkZW9MYXllcihQbGF0Zm9ybUxheWVyKikgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZExlbmRWaWRlb0xheWVyKCkgb3ZlcnJpZGU7Ci0KLSAg
ICB2aXJ0dWFsIHZvaWQgZW50ZXJGdWxsc2NyZWVuKCk7CisgICAgdmlydHVhbCB2b2lkIGVudGVy
RnVsbHNjcmVlbihQbGF0Zm9ybUxheWVyJik7CiAgICAgdmlydHVhbCB2b2lkIGV4aXRGdWxsc2Ny
ZWVuKCk7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KaW5kZXggZWVjNmM5MGRk
NTY0ZDMzMmE2MWE2ODFhNzViNWNiNjM1YmU5NGY3MC4uOTBkZDI0MTI3Y2U1NzMyM2U0NzlmNDYz
NTZhZDljYzYyMjJjNzEwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbQpAQCAtMzEs
MTggKzMxLDE4IEBACiAjaW1wb3J0ICJXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5o
IgogCiAjaW1wb3J0ICJMb2dnaW5nLmgiCi0jaW1wb3J0IDxDb3JlTWVkaWEvQ01UaW1lLmg+Ci0j
aW1wb3J0IDxVSUtpdC9VSUtpdC5oPgotI2ltcG9ydCA8V2ViQ29yZS9Tb2Z0TGlua2luZy5oPgot
I2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlVGhyZWFkUnVuLmg+Ci0jaW1wb3J0IDx3dGYvUmV0YWlu
UHRyLmg+CiAjaW1wb3J0ICJXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oIgogI2ltcG9ydCA8QVZL
aXQvQVZLaXQuaD4KICNpbXBvcnQgPEFWS2l0L0FWUGxheWVyQ29udHJvbGxlci5oPgorI2ltcG9y
dCA8QVZLaXQvQVZQbGF5ZXJWaWV3Q29udHJvbGxlcl9Qcml2YXRlLmg+CiAjaW1wb3J0IDxBVktp
dC9BVlBsYXllclZpZXdDb250cm9sbGVyX1dlYktpdE9ubHkuaD4KLSNpbXBvcnQgPEFWS2l0L0FW
VmlkZW9MYXllci5oPgogI2ltcG9ydCA8QVZLaXQvQVZWYWx1ZVRpbWluZy5oPgotI2ltcG9ydCA8
QVZLaXQvQVZQbGF5ZXJWaWV3Q29udHJvbGxlcl9Qcml2YXRlLmg+CisjaW1wb3J0IDxBVktpdC9B
VlZpZGVvTGF5ZXIuaD4KKyNpbXBvcnQgPENvcmVNZWRpYS9DTVRpbWUuaD4KKyNpbXBvcnQgPFVJ
S2l0L1VJS2l0Lmg+CisjaW1wb3J0IDxXZWJDb3JlL1NvZnRMaW5raW5nLmg+CisjaW1wb3J0IDxX
ZWJDb3JlL1dlYkNvcmVUaHJlYWRSdW4uaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTE3NiwyMyArMTc2LDU2IEBAIFNPRlRfTElO
SyhDb3JlTWVkaWEsIENNVGltZUdldFNlY29uZHMsIEZsb2F0NjQsIChDTVRpbWUgdGltZSksICh0
aW1lKSkKIAogQGVuZAogCi1AaW50ZXJmYWNlIFdlYkFWUGxheWVyTGF5ZXIgOiBDQUxheWVyIDxB
VlZpZGVvTGF5ZXI+Ci0rKFdlYkFWUGxheWVyTGF5ZXIgKilwbGF5ZXJMYXllcjsKK0BpbnRlcmZh
Y2UgV2ViQVZWaWRlb0xheWVyIDogQ0FMYXllciA8QVZWaWRlb0xheWVyPgorKyhXZWJBVlZpZGVv
TGF5ZXIgKil2aWRlb0xheWVyOwogQHByb3BlcnR5IChub25hdG9taWMpIEFWVmlkZW9MYXllckdy
YXZpdHkgdmlkZW9MYXllckdyYXZpdHk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgZ2V0dGVyID0g
aXNSZWFkeUZvckRpc3BsYXkpIEJPT0wgcmVhZHlGb3JEaXNwbGF5OwogQHByb3BlcnR5IChub25h
dG9taWMpIENHUmVjdCB2aWRlb1JlY3Q7CiAtICh2b2lkKXNldFBsYXllckNvbnRyb2xsZXI6KEFW
UGxheWVyQ29udHJvbGxlciAqKXBsYXllckNvbnRyb2xsZXI7CiBAZW5kCiAKLUBpbXBsZW1lbnRh
dGlvbiBXZWJBVlBsYXllckxheWVyCi0rKFdlYkFWUGxheWVyTGF5ZXIgKilwbGF5ZXJMYXllcgor
QGltcGxlbWVudGF0aW9uIFdlYkFWVmlkZW9MYXllcgogewotICAgIHJldHVybiBbW1tXZWJBVlBs
YXllckxheWVyIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgUmV0YWluUHRyPFdlYkFW
UGxheWVyQ29udHJvbGxlcj4gX2F2UGxheWVyQ29udHJvbGxlcjsKKyAgICBBVlZpZGVvTGF5ZXJH
cmF2aXR5IF92aWRlb0xheWVyR3Jhdml0eTsKK30KKworKyhXZWJBVlZpZGVvTGF5ZXIgKil2aWRl
b0xheWVyCit7CisgICAgcmV0dXJuIFtbW1dlYkFWVmlkZW9MYXllciBhbGxvY10gaW5pdF0gYXV0
b3JlbGVhc2VdOwogfQogCiAtICh2b2lkKXNldFBsYXllckNvbnRyb2xsZXI6KEFWUGxheWVyQ29u
dHJvbGxlciAqKXBsYXllckNvbnRyb2xsZXIKIHsKLSAgICBVTlVTRURfUEFSQU0ocGxheWVyQ29u
dHJvbGxlcik7CisgICAgQVNTRVJUKCFwbGF5ZXJDb250cm9sbGVyIHx8IFtwbGF5ZXJDb250cm9s
bGVyIGlzS2luZE9mQ2xhc3M6W1dlYkFWUGxheWVyQ29udHJvbGxlciBjbGFzc11dKTsKKyAgICBf
YXZQbGF5ZXJDb250cm9sbGVyID0gKFdlYkFWUGxheWVyQ29udHJvbGxlciopcGxheWVyQ29udHJv
bGxlcjsKK30KKworLSAodm9pZClzZXRCb3VuZHM6KENHUmVjdClib3VuZHMKK3sKKyAgICBbc3Vw
ZXIgc2V0Qm91bmRzOmJvdW5kc107CisgICAgaWYgKFtfYXZQbGF5ZXJDb250cm9sbGVyIGRlbGVn
YXRlXSkKKyAgICAgICAgW19hdlBsYXllckNvbnRyb2xsZXIgZGVsZWdhdGVdLT5zZXRWaWRlb0xh
eWVyRnJhbWUoRmxvYXRSZWN0KDAsIDAsIGJvdW5kcy5zaXplLndpZHRoLCBib3VuZHMuc2l6ZS5o
ZWlnaHQpKTsKK30KKworLSAodm9pZClzZXRWaWRlb0xheWVyR3Jhdml0eTooQVZWaWRlb0xheWVy
R3Jhdml0eSl2aWRlb0xheWVyR3Jhdml0eQoreworICAgIF92aWRlb0xheWVyR3Jhdml0eSA9IHZp
ZGVvTGF5ZXJHcmF2aXR5OworICAgIGlmIChbX2F2UGxheWVyQ29udHJvbGxlciBkZWxlZ2F0ZV0p
CisgICAgeworICAgICAgICBXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbDo6VmlkZW9H
cmF2aXR5IGdyYXZpdHkgPSBXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbDo6VmlkZW9H
cmF2aXR5UmVpemU7CisgICAgICAgIGlmICh2aWRlb0xheWVyR3Jhdml0eSA9PSBBVlZpZGVvTGF5
ZXJHcmF2aXR5UmVzaXplQXNwZWN0KQorICAgICAgICAgICAgZ3Jhdml0eSA9IFdlYkNvcmU6Oldl
YlZpZGVvRnVsbHNjcmVlbk1vZGVsOjpWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3Q7CisgICAgICAg
IGVsc2UgaWYgKHZpZGVvTGF5ZXJHcmF2aXR5ID09IEFWVmlkZW9MYXllckdyYXZpdHlSZXNpemVB
c3BlY3RGaWxsKQorICAgICAgICAgICAgZ3Jhdml0eSA9IFdlYkNvcmU6OldlYlZpZGVvRnVsbHNj
cmVlbk1vZGVsOjpWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3RGaWxsOworICAgICAgICAKKyAgICAg
ICAgW19hdlBsYXllckNvbnRyb2xsZXIgZGVsZWdhdGVdLT5zZXRWaWRlb0xheWVyR3Jhdml0eShn
cmF2aXR5KTsKKyAgICB9Cit9CisKKy0gKEFWVmlkZW9MYXllckdyYXZpdHkpdmlkZW9MYXllckdy
YXZpdHkKK3sKKyAgICByZXR1cm4gX3ZpZGVvTGF5ZXJHcmF2aXR5OwogfQogCiBAZW5kCkBAIC0y
NzMsMjEgKzMwNiwxNyBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojpz
ZXRWaWRlb0RpbWVuc2lvbnMoYm9vbCBoYXNWaWRlbywgZmxvYXQgdwogICAgIHBsYXllckNvbnRy
b2xsZXIoKS5jb250ZW50RGltZW5zaW9ucyA9IENHU2l6ZU1ha2Uod2lkdGgsIGhlaWdodCk7CiB9
CiAKLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmVudGVyRnVsbHNjcmVl
bigpCi17Ci0gICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+Ym9ycm93VmlkZW9MYXllcigpOwot
fQotCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojpkb0VudGVyRnVsbHNj
cmVlbigpCit2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjplbnRlckZ1bGxz
Y3JlZW4oUGxhdGZvcm1MYXllciYgdmlkZW9MYXllcikKIHsKICAgICBfX2Jsb2NrIFJlZlB0cjxX
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdD4gcHJvdGVjdCh0aGlzKTsKICAgICAKKyAg
ICBtX3ZpZGVvTGF5ZXIgPSAmdmlkZW9MYXllcjsKKyAgICAKICAgICBkaXNwYXRjaF9hc3luYyhk
aXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeewogICAgICAgICBbbV92aWRlb0xheWVyIHJlbW92
ZUZyb21TdXBlcmxheWVyXTsKICAgICAgICAgCi0gICAgICAgIG1fdmlkZW9MYXllckNvbnRhaW5l
ciA9IFtXZWJBVlBsYXllckxheWVyIHBsYXllckxheWVyXTsKLSAgICAgICAgaWYgKG1fdmlkZW9M
YXllci5nZXQoKSkKLSAgICAgICAgICAgIFttX3ZpZGVvTGF5ZXJDb250YWluZXIgYWRkU3VibGF5
ZXI6bV92aWRlb0xheWVyLmdldCgpXTsKKyAgICAgICAgbV92aWRlb0xheWVyQ29udGFpbmVyID0g
W1dlYkFWVmlkZW9MYXllciB2aWRlb0xheWVyXTsKKyAgICAgICAgW21fdmlkZW9MYXllckNvbnRh
aW5lciBhZGRTdWJsYXllcjptX3ZpZGVvTGF5ZXIuZ2V0KCldOwogICAgICAgICAKICAgICAgICAg
Q0dTaXplIHZpZGVvU2l6ZSA9IHBsYXllckNvbnRyb2xsZXIoKS5jb250ZW50RGltZW5zaW9uczsK
ICAgICAgICAgQ0dSZWN0IHZpZGVvUmVjdCA9IENHUmVjdE1ha2UoMCwgMCwgdmlkZW9TaXplLndp
ZHRoLCB2aWRlb1NpemUuaGVpZ2h0KTsKQEAgLTMxNSwyMSArMzQ0LDYgQEAgdm9pZCBXZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZG9FbnRlckZ1bGxzY3JlZW4oKQogICAgIH0pOwog
fQogCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojp3aWxsTGVuZFZpZGVv
TGF5ZXIoUGxhdGZvcm1MYXllciogdmlkZW9MYXllcikKLXsKLSAgICBBU1NFUlQoIW1fdmlkZW9M
YXllcik7Ci0gICAgCi0gICAgbV92aWRlb0xheWVyID0gdmlkZW9MYXllcjsKLSAgICBpZiAoIXZp
ZGVvTGF5ZXIpCi0gICAgICAgIGRvRW50ZXJGdWxsc2NyZWVuKCk7Ci19Ci0KLXZvaWQgV2ViVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmRpZExlbmRWaWRlb0xheWVyKCkKLXsKLSAgICBp
ZiAobV92aWRlb0xheWVyKQotICAgICAgICBkb0VudGVyRnVsbHNjcmVlbigpOwotfQotCiB2b2lk
IFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpleGl0RnVsbHNjcmVlbigpCiB7CiAg
ICAgX19ibG9jayBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ+IHByb3Rl
Y3QodGhpcyk7CkBAIC0zNDMsMTIgKzM1NywxMSBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUFWS2l0OjpleGl0RnVsbHNjcmVlbigpCiAgICAgICAgICAgICBtX3BsYXllclZpZXdD
b250cm9sbGVyID0gbmlsOwogICAgICAgICAgICAgbV92aWV3Q29udHJvbGxlciA9IG5pbDsKICAg
ICAgICAgICAgIG1fd2luZG93ID0gbmlsOwotICAgICAgICAgICAgaWYgKG1fdmlkZW9MYXllci5n
ZXQoKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBbbV92aWRlb0xheWVyIHJlbW92
ZUZyb21TdXBlcmxheWVyXTsKLSAgICAgICAgICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVs
LT5yZXR1cm5WaWRlb0xheWVyKCk7Ci0gICAgICAgICAgICAgICAgbV92aWRlb0xheWVyID0gbmls
OwotICAgICAgICAgICAgfQorICAgICAgICAgICAgW21fdmlkZW9MYXllciByZW1vdmVGcm9tU3Vw
ZXJsYXllcl07CisgICAgICAgICAgICBtX3ZpZGVvTGF5ZXIgPSBuaWw7CisgICAgICAgICAgICBb
bV92aWRlb0xheWVyQ29udGFpbmVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKKyAgICAgICAgICAg
IG1fdmlkZW9MYXllckNvbnRhaW5lciA9IG5pbDsKKwogICAgICAgICAgICAgaWYgKG1fZnVsbHNj
cmVlbkNoYW5nZU9ic2VydmVyKQogICAgICAgICAgICAgICAgIG1fZnVsbHNjcmVlbkNoYW5nZU9i
c2VydmVyLT5kaWRFeGl0RnVsbHNjcmVlbigpOwogICAgICAgICAgICAgcHJvdGVjdC5jbGVhcigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNj
cmVlbk1vZGVsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2Ny
ZWVuTW9kZWwuaAppbmRleCBmNTVmYWFlYjJhYWVkY2IzMWI1MTU0MDVjMGMzOWQ2ZDc0MjFjYTgx
Li44NjQ2M2I5NmZkY2M3MjMyYmY1MzdjZmQyNjM0Mjg3YzBiNmVkY2EwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwuaApA
QCAtMjksMTggKzI5LDIxIEBACiAKICNpZiBQTEFURk9STShJT1MpCiAKKyNpbmNsdWRlIDxXZWJD
b3JlL0Zsb2F0UmVjdC5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdlYlZpZGVv
RnVsbHNjcmVlbk1vZGVsIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbCgpIHsgfTsKLSAgICB2aXJ0dWFsIHZvaWQgYm9ycm93VmlkZW9MYXllcigpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgcmV0dXJuVmlkZW9MYXllcigpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgcGxheSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcGF1c2UoKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHRvZ2dsZVBsYXlTdGF0ZSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2Vla1RvVGlt
ZShkb3VibGUgdGltZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RXhpdEZ1bGxzY3Jl
ZW4oKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFZpZGVvTGF5ZXJGcmFtZShGbG9hdFJlY3Qp
ID0gMDsKKyAgICBlbnVtIFZpZGVvR3Jhdml0eSB7IFZpZGVvR3Jhdml0eVJlaXplLCBWaWRlb0dy
YXZpdHlSZXNpemVBc3BlY3QsIFZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdEZpbGx9OworICAgIHZp
cnR1YWwgdm9pZCBzZXRWaWRlb0xheWVyR3Jhdml0eShWaWRlb0dyYXZpdHkpID0gMDsKIH07CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dl
YlZpZGVvRnVsbHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50LmgKaW5kZXggY2Y3MDc0ZmM0NGZmZTVh
MGE4NTRmZGNmMGYwZjU4ODZiOGUxNjAyYS4uZTI2NDcwODEwMzBkMzg2ZjJjZWY5MzZiZGY2NWEx
ZDE1NzViYzc5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZp
ZGVvRnVsbHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50LmgKQEAgLTMwLDYg
KzMwLDcgQEAKICNpZiBQTEFURk9STShJT1MpCiAKICNpbmNsdWRlIDxXZWJDb3JlL0V2ZW50TGlz
dGVuZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUGxhdGZvcm1MYXllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvV2ViVmlkZW9GdWxsc2NyZWVu
TW9kZWwuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC00MSwyNyArNDIsMzAgQEAgY2xh
c3MgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlOwogCiBjbGFzcyBXZWJWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbE1lZGlhRWxlbWVudCA6IHB1YmxpYyBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbCwgcHVi
bGljIEV2ZW50TGlzdGVuZXIgewogICAgIFJlZlB0cjxIVE1MTWVkaWFFbGVtZW50PiBtX21lZGlh
RWxlbWVudDsKLSAgICBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gbV9ib3Jyb3dlZFZpZGVvTGF5
ZXI7CisgICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXI7
CiAgICAgYm9vbCBtX2lzTGlzdGVuaW5nOwogICAgIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZSogbV92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2U7CisgICAgRmxvYXRSZWN0IG1fdmlkZW9GcmFt
ZTsKICAgICAKIHB1YmxpYzoKICAgICBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbE1lZGlhRWxlbWVu
dCgpOwogICAgIHZpcnR1YWwgfldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50KCk7
CiAgICAgdm9pZCBzZXRXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UoV2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlKiBpbnRlcmZhY2UpIHttX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZSA9IGlu
dGVyZmFjZTt9CiAgICAgdm9pZCBzZXRNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCopOwor
ICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciopOwogICAgIAog
ICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgV2ViQ29yZTo6RXZlbnQqKSBvdmVycmlkZTsKICAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgRXZlbnRMaXN0ZW5lciYgcmhzKSBvdmVycmlkZQogICAgICAgICB7cmV0dXJuIHN0YXRpY19j
YXN0PFdlYkNvcmU6OkV2ZW50TGlzdGVuZXIqPih0aGlzKSA9PSAmcmhzO30KIAotICAgIHZpcnR1
YWwgdm9pZCBib3Jyb3dWaWRlb0xheWVyKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJl
dHVyblZpZGVvTGF5ZXIoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcGxheSgpIG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgdm9pZCBwYXVzZSgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9p
ZCB0b2dnbGVQbGF5U3RhdGUoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2Vla1RvVGlt
ZShkb3VibGUgdGltZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RFeGl0RnVs
bHNjcmVlbigpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0xheWVyRnJhbWUo
RmxvYXRSZWN0KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9MYXllckdyYXZp
dHkoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWw6OlZpZGVvR3Jhdml0eSkgb3ZlcnJpZGU7CisKIH07
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1
bGxzY3JlZW5Nb2RlbE1lZGlhRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbE1lZGlhRWxlbWVudC5tbQppbmRleCAwMDBiMDcxN2Vi
MzEwM2MxYWIxZGI4MGU0MTcyMjRmNjkwYzAyOWI1Li5mYWU4OGM3NzQ3MjMwODk4MjdmNjAwNDY4
ODZjZjA2YmIwNjRjOTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxNZWRpYUVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50Lm1tCkBA
IC00MSw2ICs0MSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxWaWRlb0VsZW1lbnQuaD4KICNp
bXBvcnQgPFdlYkNvcmUvU29mdExpbmtpbmcuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZVRo
cmVhZFJ1bi5oPgorI2ltcG9ydCA8UXVhcnR6Q29yZS9Db3JlQW5pbWF0aW9uLmg+CiAjaW1wb3J0
IDx3dGYvUmV0YWluUHRyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtOTAsNiAr
OTEsOCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50OjpzZXRNZWRp
YUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogbWVkaQogICAgICAgICBIVE1MVmlkZW9FbGVtZW50
ICp2aWRlb0VsZW1lbnQgPSB0b0hUTUxWaWRlb0VsZW1lbnQobV9tZWRpYUVsZW1lbnQuZ2V0KCkp
OwogICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZS0+c2V0VmlkZW9EaW1lbnNpb25z
KHRydWUsIHZpZGVvRWxlbWVudC0+dmlkZW9XaWR0aCgpLCB2aWRlb0VsZW1lbnQtPnZpZGVvSGVp
Z2h0KCkpOwogICAgIH0KKyAgICBlbHNlCisgICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlLT5zZXRWaWRlb0RpbWVuc2lvbnMoZmFsc2UsIDAsIDApOwogfQogCiB2b2lkIFdlYlZpZGVv
RnVsbHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50OjpoYW5kbGVFdmVudChXZWJDb3JlOjpTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgV2ViQ29yZTo6RXZlbnQqIGV2ZW50KQpAQCAtMTA5LDI5ICsxMTIs
MTYgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbE1lZGlhRWxlbWVudDo6aGFuZGxlRXZl
bnQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ28KICAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2UtPnNldEN1cnJlbnRUaW1lKG1fbWVkaWFFbGVtZW50LT5jdXJyZW50VGltZSgpLCBb
W05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dIHN5c3RlbVVwdGltZV0pOwogfQogCi12b2lkIFdl
YlZpZGVvRnVsbHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50Ojpib3Jyb3dWaWRlb0xheWVyKCkKK3Zv
aWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxNZWRpYUVsZW1lbnQ6OnNldFZpZGVvRnVsbHNjcmVl
bkxheWVyKFBsYXRmb3JtTGF5ZXIqIHZpZGVvTGF5ZXIpCiB7Ci0gICAgQVNTRVJUKCFtX2JvcnJv
d2VkVmlkZW9MYXllcik7CisgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXIgPT0gdmlkZW9M
YXllcikKKyAgICAgICAgcmV0dXJuOwogICAgIAotICAgIF9fYmxvY2sgUmVmUHRyPFdlYlZpZGVv
RnVsbHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50PiBwcm90ZWN0KHRoaXMpOwotICAgIFdlYlRocmVh
ZFJ1biheewotICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZS0+d2lsbExlbmRWaWRl
b0xheWVyKG1fbWVkaWFFbGVtZW50LT5wbGF0Zm9ybUxheWVyKCkpOwotICAgICAgICBtX2JvcnJv
d2VkVmlkZW9MYXllciA9IG1fbWVkaWFFbGVtZW50LT5ib3Jyb3dQbGF0Zm9ybUxheWVyKCk7Ci0g
ICAgICAgIGlmIChtX2JvcnJvd2VkVmlkZW9MYXllci5nZXQoKSkKLSAgICAgICAgICAgIG1fdmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlLT5kaWRMZW5kVmlkZW9MYXllcigpOwotICAgICAgICBwcm90
ZWN0LmNsZWFyKCk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxN
ZWRpYUVsZW1lbnQ6OnJldHVyblZpZGVvTGF5ZXIoKQotewotICAgIEFTU0VSVChtX2JvcnJvd2Vk
VmlkZW9MYXllci5nZXQoKSk7CisgICAgbV92aWRlb0Z1bGxzY3JlZW5MYXllciA9IHZpZGVvTGF5
ZXI7CiAgICAgCiAgICAgX19ibG9jayBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxNZWRp
YUVsZW1lbnQ+IHByb3RlY3QodGhpcyk7CiAgICAgV2ViVGhyZWFkUnVuKF57Ci0gICAgICAgIEFT
U0VSVChtX21lZGlhRWxlbWVudCk7Ci0gICAgICAgIG1fbWVkaWFFbGVtZW50LT5yZXR1cm5QbGF0
Zm9ybUxheWVyKG1fYm9ycm93ZWRWaWRlb0xheWVyLmdldCgpKTsKLSAgICAgICAgbV9ib3Jyb3dl
ZFZpZGVvTGF5ZXIuY2xlYXIoKTsKKyAgICAgICAgbV9tZWRpYUVsZW1lbnQtPnNldFZpZGVvRnVs
bHNjcmVlbkxheWVyKG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXIuZ2V0KCkpOwogICAgICAgICBwcm90
ZWN0LmNsZWFyKCk7CiAgICAgfSk7CiB9CkBAIC0xODAsNCArMTcwLDIyIEBAIHZvaWQgV2ViVmlk
ZW9GdWxsc2NyZWVuTW9kZWxNZWRpYUVsZW1lbnQ6OnJlcXVlc3RFeGl0RnVsbHNjcmVlbigpCiAg
ICAgfSk7CiB9CiAKK3ZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxNZWRpYUVsZW1lbnQ6OnNl
dFZpZGVvTGF5ZXJGcmFtZShGbG9hdFJlY3QgcmVjdCkKK3sKKyAgICBtX3ZpZGVvRnJhbWUgPSBy
ZWN0OworICAgIFttX3ZpZGVvRnVsbHNjcmVlbkxheWVyIHNldEZyYW1lOkNHUmVjdE1ha2UocmVj
dC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpXTsKKyAgICBtX21l
ZGlhRWxlbWVudC0+c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUocmVjdCk7Cit9CisKK3ZvaWQgV2Vi
VmlkZW9GdWxsc2NyZWVuTW9kZWxNZWRpYUVsZW1lbnQ6OnNldFZpZGVvTGF5ZXJHcmF2aXR5KFdl
YlZpZGVvRnVsbHNjcmVlbk1vZGVsOjpWaWRlb0dyYXZpdHkgZ3Jhdml0eSkKK3sKKyAgICBNZWRp
YVBsYXllcjo6VmlkZW9HcmF2aXR5IHZpZGVvR3Jhdml0eSA9IE1lZGlhUGxheWVyOjpWaWRlb0dy
YXZpdHlSZXNpemU7CisgICAgaWYgKGdyYXZpdHkgPT0gV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWw6
OlZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCkKKyAgICAgICAgdmlkZW9HcmF2aXR5ID0gTWVkaWFQ
bGF5ZXI6OlZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdDsKKyAgICBlbHNlIGlmIChncmF2aXR5ID09
IFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsOjpWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3RGaWxsKQor
ICAgICAgICB2aWRlb0dyYXZpdHkgPSBNZWRpYVBsYXllcjo6VmlkZW9HcmF2aXR5UmVzaXplQXNw
ZWN0RmlsbDsKKyAgICAKKyAgICBtX21lZGlhRWxlbWVudC0+c2V0VmlkZW9GdWxsc2NyZWVuR3Jh
dml0eSh2aWRlb0dyYXZpdHkpOworfQorCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaAppbmRleCAxNmQ1ZjUz
ZGM2OTEyY2E2NDU0ZTI1ODYzYmY5MDYzZjU3YzliOWZhLi42N2E0MzBmNTI1YzY2YTcyNGJiMmNi
ZTMzZjlmMjk3Yjc2NjNjNTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFj
L1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5oCkBAIC0xODAsOSArMTgwLDYgQEAgcHVi
bGljOgogICAgIGJvb2wgYWxsb3dzVXNlclNjYWxpbmcoKSBjb25zdCB7IHJldHVybiBtX2FsbG93
c1VzZXJTY2FsaW5nOyB9CiAgICAgdm9pZCBzZXRBbGxvd3NVc2VyU2NhbGluZyhib29sIGFsbG93
c1VzZXJTY2FsaW5nKSB7IG1fYWxsb3dzVXNlclNjYWxpbmcgPSBhbGxvd3NVc2VyU2NhbGluZzsg
fQogICAgIAotICAgIGJvb2wgaXNWaWRlb0xheWVySURQZW5kaW5nRnVsbHNjcmVlbihXZWJDb3Jl
OjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQgbGF5ZXJJRCkgY29uc3QgeyByZXR1cm4g
bV92aWRlb0xheWVySURzUGVuZGluZ0Z1bGxzY3JlZW4uY29udGFpbnMobGF5ZXJJRCk7IH0KLSAg
ICB2b2lkIGFkZFZpZGVvTGF5ZXJJRFBlbmRpbmdGdWxsc2NyZWVuKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCBsYXllcklEKSB7IG1fdmlkZW9MYXllcklEc1BlbmRpbmdG
dWxsc2NyZWVuLmFwcGVuZChsYXllcklEKTsgfQotCiBwcml2YXRlOgogICAgIFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCBtX3Jvb3RMYXllcklEOwogICAgIExheWVyUHJv
cGVydGllc01hcCBtX2NoYW5nZWRMYXllclByb3BlcnRpZXM7CkBAIC0xOTUsNyArMTkyLDYgQEAg
cHJpdmF0ZToKICAgICBkb3VibGUgbV9taW5pbXVtU2NhbGVGYWN0b3I7CiAgICAgZG91YmxlIG1f
bWF4aW11bVNjYWxlRmFjdG9yOwogICAgIGJvb2wgbV9hbGxvd3NVc2VyU2NhbGluZzsKLSAgICBW
ZWN0b3I8V2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEPiBtX3ZpZGVvTGF5
ZXJJRHNQZW5kaW5nRnVsbHNjcmVlbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2Fj
dGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNh
Y3Rpb24ubW0KaW5kZXggZGVlYmQyMjMxOGQ4NWU1NGVlNWVlNjE1M2MwYWM3YjJlZTE5N2MwMi4u
MjRiMDIyMjc1MDMzNmY0NWUxN2Y5NzlmOTI1ZDQ5NmIxODVjMGM2OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1t
CkBAIC00MTgsNyArNDE4LDYgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6ZW5j
b2RlKElQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwg
bV9tYXhpbXVtU2NhbGVGYWN0b3I7CiAgICAgZW5jb2RlciA8PCBtX2FsbG93c1VzZXJTY2FsaW5n
OwogICAgIGVuY29kZXIgPDwgbV9yZW5kZXJUcmVlU2l6ZTsKLSAgICBlbmNvZGVyIDw8IG1fdmlk
ZW9MYXllcklEc1BlbmRpbmdGdWxsc2NyZWVuOwogfQogCiBib29sIFJlbW90ZUxheWVyVHJlZVRy
YW5zYWN0aW9uOjpkZWNvZGUoSVBDOjpBcmd1bWVudERlY29kZXImIGRlY29kZXIsIFJlbW90ZUxh
eWVyVHJlZVRyYW5zYWN0aW9uJiByZXN1bHQpCkBAIC00NzYsOSArNDc1LDYgQEAgYm9vbCBSZW1v
dGVMYXllclRyZWVUcmFuc2FjdGlvbjo6ZGVjb2RlKElQQzo6QXJndW1lbnREZWNvZGVyJiBkZWNv
ZGVyLCBSZW1vdGVMYXkKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX3JlbmRlclRy
ZWVTaXplKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocmVzdWx0Lm1fdmlkZW9MYXllcklEc1BlbmRpbmdGdWxsc2NyZWVuKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggNTA0NTEyMGZkNDhiMWE3
ZDY0ZTRmMDZmOTJjMDkxYWUwOGI5MDQxMy4uODNjNDA3MDhjMjZmNTFhZjY3OGI3NDU2NGJmZjZi
YTdlMDc4NjMzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQ
YWdlUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdl
UHJveHlJT1MubW0KQEAgLTI1Miw4ICsyNTIsNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Vmll
d3BvcnRDb25maWd1cmF0aW9uTWluaW11bUxheW91dFNpemUoY29uc3QgV2ViQ29yZTo6SW50Uwog
dm9pZCBXZWJQYWdlUHJveHk6OmRpZENvbW1pdExheWVyVHJlZShjb25zdCBXZWJLaXQ6OlJlbW90
ZUxheWVyVHJlZVRyYW5zYWN0aW9uJiBsYXllclRyZWVUcmFuc2FjdGlvbikKIHsKICAgICBtX3Bh
Z2VDbGllbnQuZGlkQ29tbWl0TGF5ZXJUcmVlKGxheWVyVHJlZVRyYW5zYWN0aW9uKTsKLSAgICBp
ZiAobV92aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKQotICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1h
bmFnZXItPmRpZENvbW1pdExheWVyVHJlZShsYXllclRyZWVUcmFuc2FjdGlvbik7CiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpzZWxlY3RXaXRoR2VzdHVyZShjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCBwb2ludCwgV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCB1aW50MzJfdCBn
ZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRlLCBQYXNzUmVmUHRyPEdlc3R1cmVDYWxs
YmFjaz4gY2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9z
L1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaAppbmRleCA0MzUzZGZjYmNk
OTBkZjkxN2U3MDBjOWU2ZmUyZDIzMjUyOTYxMWNkLi41NDMyYjIxOTA4ZDgzNmM1ODhhMGEzNWEw
YTUzYzlhYjYxMDk5ZWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9z
L1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmgKQEAgLTQxLDIxICs0
MSwxOCBAQCBPQkpDX0NMQVNTIFVJVmlldzsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBX
ZWJQYWdlUHJveHk7Ci1jbGFzcyBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjsKIAogY2xhc3Mg
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5IDogcHVibGljIFdlYkNvcmU6OldlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LCBwdWJsaWMgV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2Ny
ZWVuQ2hhbmdlT2JzZXJ2ZXIsIHB1YmxpYyBXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bCwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5PiBjcmVhdGUoV2ViUGFnZVBy
b3h5Jik7CiAgICAgdmlydHVhbCB+V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5KCk7CiAK
LSAgICB2b2lkIGRpZENvbW1pdExheWVyVHJlZShjb25zdCBSZW1vdGVMYXllclRyZWVUcmFuc2Fj
dGlvbiYpOwotICAgIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHkoV2ViUGFnZVByb3h5Jik7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiosIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsK
IAogICAgIC8vIFRyYW5zbGF0ZSB0byBGdWxsc2NyZWVuSW50ZXJmYWNlCi0gICAgdmlydHVhbCB2
b2lkIHdpbGxMZW5kVmlkZW9MYXllcldpdGhJRChXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0
Zm9ybUxheWVySUQpOworICAgIHZpcnR1YWwgdm9pZCBlbnRlckZ1bGxzY3JlZW5XaXRoSUQodWlu
dDMyX3QpOwogCiAgICAgLy8gRnVsbHNjcmVlbiBPYnNlcnZlcgogICAgIHZpcnR1YWwgdm9pZCBy
ZXF1ZXN0RXhpdEZ1bGxzY3JlZW4oKSBvdmVycmlkZTsKQEAgLTY3LDEzICs2NCwxMSBAQCBwcml2
YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYXVzZSgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9p
ZCB0b2dnbGVQbGF5U3RhdGUoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2Vla1RvVGlt
ZShkb3VibGUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBib3Jyb3dWaWRlb0xheWVyKCkg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJldHVyblZpZGVvTGF5ZXIoKSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9MYXllckZyYW1lKFdlYkNvcmU6OkZsb2F0UmVjdCkg
b3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNldFZpZGVvTGF5ZXJHcmF2aXR5KFdlYkNvcmU6
OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsOjpWaWRlb0dyYXZpdHkpIG92ZXJyaWRlOwogCiAgICAg
V2ViUGFnZVByb3h5KiBtX3BhZ2U7Ci0gICAgYm9vbCBtX2VudGVyRnVsbHNjcmVlbkFmdGVyVmlk
ZW9MYXllclVucGFyZW50ZWRUcmFuc2FjdGlvbjsKLSAgICBXZWJDb3JlOjpHcmFwaGljc0xheWVy
OjpQbGF0Zm9ybUxheWVySUQgbV92aWRlb0xheWVySUQ7Ci0gICAgUmV0YWluUHRyPFVJVmlldz4g
bV92aWRlb1ZpZXc7CisgICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IG1fbGF5ZXJIb3N0Owog
fTsKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXJQcm94eS5tZXNzYWdlcy5pbgppbmRleCAyYzc1NzRhOTc2YTNiNGQyNzU2NDhlYzQzNWYyYzFm
ODNiYmEzOWVlLi4zZWNhMjE4MzBlN2U5NTg2NjExY2EyNGQxZDYzNWQ4NDA4Nzg2ZWQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9z
L1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjYsOCArMjYs
NyBAQCBtZXNzYWdlcyAtPiBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkgewogICAgIFNl
dFZpZGVvRGltZW5zaW9ucyhib29sIGhhc1ZpZGVvLCB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQg
aGVpZ2h0KQogICAgIFNldER1cmF0aW9uKGRvdWJsZSBkdXJhdGlvbikKICAgICBTZXRSYXRlKGJv
b2wgaXNQbGF5aW5nLCBkb3VibGUgcmF0ZSkKLSAgICBFbnRlckZ1bGxzY3JlZW4oKQotICAgIFdp
bGxMZW5kVmlkZW9MYXllcldpdGhJRChXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxh
eWVySUQgdmlkZW9MYXllcklEKQorICAgIEVudGVyRnVsbHNjcmVlbldpdGhJRCh1aW50MzJfdCB2
aWRlb0xheWVySUQpCiAgICAgRXhpdEZ1bGxzY3JlZW4oKQogfQogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5Lm1tCmluZGV4IDg1ZGExYjllYzAyMWUwMjA3NGY5ZDliNzE0ZjU5NGJkMWEw
NjYzOGMuLmE5NTAxNGFlMWY5NGY5MjY2ZGI5M2IzOTZhODkyNTU5YTdmMGYzYzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5Lm1tCkBAIC0yOCwxNCArMjgsMTIgQEAKIAogI2lmIFBMQVRGT1JN
KElPUykKIAotI2luY2x1ZGUgIkRyYXdpbmdBcmVhUHJveHkuaCIKLSNpbmNsdWRlICJSZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYVByb3h5LmgiCi0jaW5jbHVkZSAiUmVtb3RlTGF5ZXJUcmVlVHJh
bnNhY3Rpb24uaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcm9j
ZXNzUHJveHkuaCIKICNpbmNsdWRlICJXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyTWVzc2FnZXMu
aCIKICNpbmNsdWRlICJXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgot
I2luY2x1ZGUgPFVJS2l0L1VJVmlldy5oPgorI2luY2x1ZGUgPFF1YXJ0ekNvcmUvQ29yZUFuaW1h
dGlvbi5oPgorI2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS5oPgogCiB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIApAQCAtNDgsOCArNDYsNiBAQCBQYXNzUmVmUHRyPFdlYlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eT4gV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpjcmVh
dAogCiBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OldlYlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eShXZWJQYWdlUHJveHkmIHBhZ2UpCiAgICAgOiBtX3BhZ2UoJnBhZ2UpCi0gICAg
LCBtX2VudGVyRnVsbHNjcmVlbkFmdGVyVmlkZW9MYXllclVucGFyZW50ZWRUcmFuc2FjdGlvbihm
YWxzZSkKLSAgICAsIG1fdmlkZW9MYXllcklEKDApCiB7CiAgICAgbV9wYWdlLT5wcm9jZXNzKCku
YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLT5wYWdlSUQoKSwgKnRoaXMpOwogICAg
IHNldFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsKHRoaXMpOwpAQCAtNjEsMjIgKzU3LDExIEBAIFdl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6fldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eSgpCiAgICAgbV9wYWdlLT5wcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3Nh
Z2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5OjpkaWRDb21taXRMYXllclRyZWUoY29uc3QgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rp
b24mIGxheWVyVHJlZVRyYW5zYWN0aW9uKQordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk6OmVudGVyRnVsbHNjcmVlbldpdGhJRCh1aW50MzJfdCB2aWRlb0xheWVySUQpCiB7Ci0g
ICAgaWYgKG1fZW50ZXJGdWxsc2NyZWVuQWZ0ZXJWaWRlb0xheWVyVW5wYXJlbnRlZFRyYW5zYWN0
aW9uICYmIGxheWVyVHJlZVRyYW5zYWN0aW9uLmlzVmlkZW9MYXllcklEUGVuZGluZ0Z1bGxzY3Jl
ZW4obV92aWRlb0xheWVySUQpKSB7Ci0gICAgICAgIG1fZW50ZXJGdWxsc2NyZWVuQWZ0ZXJWaWRl
b0xheWVyVW5wYXJlbnRlZFRyYW5zYWN0aW9uID0gZmFsc2U7Ci0gICAgICAgIFttX3ZpZGVvVmll
dyByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKLSAgICAgICAgZGlkTGVuZFZpZGVvTGF5ZXIoKTsKLSAg
ICB9Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Ojp3aWxsTGVuZFZp
ZGVvTGF5ZXJXaXRoSUQoR3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEIHZpZGVvTGF5ZXJJ
RCkKLXsKLSAgICBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5KiByZW1vdGVEcmF3aW5n
QXJlYVByb3h5ID0gdG9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5KG1fcGFnZS0+ZHJh
d2luZ0FyZWEoKSk7Ci0gICAgbV92aWRlb1ZpZXcgPSByZW1vdGVEcmF3aW5nQXJlYVByb3h5LT5y
ZW1vdGVMYXllclRyZWVIb3N0KCkuZ2V0TGF5ZXIodmlkZW9MYXllcklEKTsKLSAgICB3aWxsTGVu
ZFZpZGVvTGF5ZXIobV92aWRlb1ZpZXcuZ2V0KCkubGF5ZXIpOwotICAgIG1fdmlkZW9MYXllcklE
ID0gdmlkZW9MYXllcklEOwotICAgIG1fZW50ZXJGdWxsc2NyZWVuQWZ0ZXJWaWRlb0xheWVyVW5w
YXJlbnRlZFRyYW5zYWN0aW9uID0gdHJ1ZTsKKyAgICBBU1NFUlQodmlkZW9MYXllcklEKTsKKyAg
ICBtX2xheWVySG9zdCA9IFdLTWFrZVJlbmRlckxheWVyKHZpZGVvTGF5ZXJJRCk7CisgICAgZW50
ZXJGdWxsc2NyZWVuKCptX2xheWVySG9zdC5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5OjpyZXF1ZXN0RXhpdEZ1bGxzY3JlZW4oKQpAQCAtODcsNiArNzIs
OCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6cmVxdWVzdEV4aXRGdWxs
c2NyZWVuKCkKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRFeGl0RnVs
bHNjcmVlbigpCiB7CiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyOjpEaWRFeGl0RnVsbHNjcmVlbigpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBb
bV9sYXllckhvc3QgcmVtb3ZlRnJvbVN1cGVybGF5ZXJdOworICAgIG1fbGF5ZXJIb3N0LmNsZWFy
KCk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRFbnRlckZ1
bGxzY3JlZW4oKQpAQCAtMTE0LDE3ICsxMDEsMTYgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHk6OnNlZWtUb1RpbWUoZG91YmxlIHRpbWUpCiAgICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpTZWVrVG9UaW1lKHRpbWUpLCBtX3Bh
Z2UtPnBhZ2VJRCgpKTsKIH0KICAgICAKLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5Ojpib3Jyb3dWaWRlb0xheWVyKCkKK3ZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5OjpzZXRWaWRlb0xheWVyRnJhbWUoV2ViQ29yZTo6RmxvYXRSZWN0IGZyYW1lKQogewotICAg
IG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6Qm9ycm93
VmlkZW9MYXllcigpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlNldFZpZGVvTGF5ZXJGcmFtZShmcmFtZSks
IG1fcGFnZS0+cGFnZUlEKCkpOwogfQotCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eTo6cmV0dXJuVmlkZW9MYXllcigpCisgICAgCit2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eTo6c2V0VmlkZW9MYXllckdyYXZpdHkoV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2Ny
ZWVuTW9kZWw6OlZpZGVvR3Jhdml0eSBncmF2aXR5KQogewotICAgIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6UmV0dXJuVmlkZW9MYXllcigpLCBtX3Bh
Z2UtPnBhZ2VJRCgpKTsKLSAgICBtX3ZpZGVvVmlldy5jbGVhcigpOworICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6U2V0VmlkZW9MYXllckdyYXZp
dHlFbnVtKCh1bnNpZ25lZClncmF2aXR5KSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9Ci0KKyAgICAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDY3
MzE3YTdiYjA2MTIwYWM2M2Y5Njg3ODliMDQ1ODU3MWEzMzg3YzYuLmUzMDVhNmE1YjhjNzA0YTcz
ZDNlNzZmZTY4NmU2MDI3NzhlMzEwYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktp
dDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQy
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTY3Nyw3ICs2NzcsNyBAQAogCQkzRjg3QjlD
MDE1ODk0MEQ4MDA5MEZGNjIgLyogV2ViQ29sb3JQaWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDNGODdCOUJGMTU4OTQwRDgwMDkwRkY2MiAvKiBX
ZWJDb2xvclBpY2tlci5oICovOyB9OwogCQkzRjg4OUQxNDE4ODc3OEM5MDBGRUFEQUYgLyogV2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gM0Y4ODlEMTIxODg3NzhDOTAwRkVBREFGIC8qIFdlYlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbSAqLzsgfTsKIAkJM0Y4ODlEMTUxODg3NzhDOTAwRkVB
REFGIC8qIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gM0Y4ODlEMTMxODg3NzhDOTAwRkVBREFGIC8q
IFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oICovOyB9OwotCQkzRjg4OUQxNzE4ODc4
NTkzMDBGRUFEQUYgLyogV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzRjg4OUQwRDE4ODc2OTlDMDBGRUFE
QUYgLyogV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5jcHAgKi87IH07CisJCTNGODg5RDE3MTg4
Nzg1OTMwMEZFQURBRiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gM0Y4ODlEMEQxODg3Njk5QzAwRkVB
REFGIC8qIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0gKi87IH07CiAJCTRGNjAxNDMyMTU1
QzVBQTIwMDFGQkRFMCAvKiBCbG9ja2luZ1Jlc3BvbnNlTWFwLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RjYwMTQzMDE1NUM1QTMyMDAxRkJERTAgLyog
QmxvY2tpbmdSZXNwb25zZU1hcC5oICovOyB9OwogCQk1MTAyMUU5QzEyQjE2Nzg4MDA1QzAzM0Mg
LyogV2ViQ29udGV4dE1lbnVDbGllbnRNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTAyMUU5QjEyQjE2Nzg4MDA1QzAzM0MgLyogV2ViQ29udGV4
dE1lbnVDbGllbnRNYWMubW0gKi87IH07CiAJCTUxMDMyRjE4MTgwRjczQkIwMDk2MUJCNyAvKiBX
ZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwMzJGMTYxODBGNzNCQjAwOTYxQkI3IC8qIFdlYlRv
RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbi5jcHAgKi87IH07CkBAIC0yNDQyLDcgKzI0NDIsNyBA
QAogCQkzRjg3QjlCQTE1ODkzRjYzMDA5MEZGNjIgLyogV2ViQ29sb3JDaG9vc2VyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNvbG9yQ2hvb3Nlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTNGODdCOUJCMTU4OTNGNjMwMDkwRkY2MiAvKiBX
ZWJDb2xvckNob29zZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29s
b3JDaG9vc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTNGODdCOUJGMTU4OTQw
RDgwMDkwRkY2MiAvKiBXZWJDb2xvclBpY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJDb2xvclBpY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkz
Rjg4OUQwRDE4ODc2OTlDMDBGRUFEQUYgLyogV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyLmNwcDsgcGF0aCA9IGlvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJM0Y4ODlEMEQxODg3Njk5QzAwRkVBREFGIC8qIFdl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IG5hbWUgPSBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tOyBwYXRoID0gaW9zL1dlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTNG
ODg5RDBFMTg4NzY5OUMwMEZFQURBRiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIu
aDsgcGF0aCA9IGlvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTNGODg5RDEwMTg4NzcxMDAwMEZFQURBRiAvKiBXZWJWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IFdlYlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXIubWVzc2FnZXMuaW47IHBhdGggPSBpb3MvV2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlci5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJM0Y4
ODlEMTIxODg3NzhDOTAwRkVBREFGIC8qIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdlYlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eS5tbTsgcGF0aCA9IGlvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHkubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00Mzc2LDcgKzQzNzYsNyBA
QAogCQkyREE5NDRCMTE4ODRFOURGMDBFRDg2REIgLyogaW9zICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQkzRjg4OUQwRDE4ODc2OTlDMDBGRUFEQUYgLyog
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5jcHAgKi8sCisJCQkJM0Y4ODlEMEQxODg3Njk5QzAw
RkVBREFGIC8qIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0gKi8sCiAJCQkJM0Y4ODlEMEUx
ODg3Njk5QzAwRkVBREFGIC8qIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaCAqLywKIAkJCQkz
Rjg4OUQxMDE4ODc3MTAwMDBGRUFEQUYgLyogV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tZXNz
YWdlcy5pbiAqLywKIAkJCSk7CkBAIC04NDg0LDcgKzg0ODQsNyBAQAogCQkJCTUxRkNCMTg4MTdC
QkZFMDMwMDM5NENEOCAvKiBTeW5jaHJvbm91c05ldHdvcmtMb2FkZXJDbGllbnQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJM0Y0MThFRkIxODg3QkQ5NzAwMjc5NUZEIC8qIFdlYlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
Q0Q1OTdENjExMkI1NkRDMDBFQzhDMjMgLyogV0tQYWdlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJ
CTNGODg5RDE3MTg4Nzg1OTMwMEZFQURBRiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTNGODg5RDE3MTg4Nzg1OTMwMEZFQURBRiAvKiBXZWJWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM3QjYzMzgxMkE0NUFC
QTAwRDE3NEE0IC8qIFdLUGFnZUdyb3VwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRTE3QjdE
MTM4MUYxMTcwMDEyQTY0MSAvKiBXS1BhZ2VQcml2YXRlTWFjLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTdDMTM1QUE4MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmNwcCBp
biBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCmluZGV4IDQzY2Y1ODIwOTc2MjRmOGU1YjkyNjkxZDIzZGI3NDkyMTFmZWE5MjYuLjg2
ZjdjOWNmZDEyMWNjNTk3MGY3ZjliYzVhZGZiMTdjNTNjMjNjMTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTI2NDMsOCArMjY0Myw2IEBA
IHZvaWQgV2ViUGFnZTo6d2lsbENvbW1pdExheWVyVHJlZShSZW1vdGVMYXllclRyZWVUcmFuc2Fj
dGlvbiYgbGF5ZXJUcmFuc2FjdGlvbikKICAgICBsYXllclRyYW5zYWN0aW9uLnNldE1pbmltdW1T
Y2FsZUZhY3RvcihtaW5pbXVtUGFnZVNjYWxlRmFjdG9yKCkpOwogICAgIGxheWVyVHJhbnNhY3Rp
b24uc2V0TWF4aW11bVNjYWxlRmFjdG9yKG1heGltdW1QYWdlU2NhbGVGYWN0b3IoKSk7CiAgICAg
bGF5ZXJUcmFuc2FjdGlvbi5zZXRBbGxvd3NVc2VyU2NhbGluZyhhbGxvd3NVc2VyU2NhbGluZygp
KTsKLSAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKQotICAgICAgICBtX3ZpZGVvRnVs
bHNjcmVlbk1hbmFnZXItPndpbGxDb21taXRMYXllclRyZWUobGF5ZXJUcmFuc2FjdGlvbik7CiAj
ZW5kaWYKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9p
b3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggYTljODQ2YTAwNGVlOTAyNGMyMTdiMTE1OWQ0NTJjNTQ1NmRlNzRjYy4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDE4NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmgiCi0KLSNpZiBQTEFURk9STShJT1Mp
Ci0KLSNpbmNsdWRlICJSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5oIgotI2luY2x1ZGUgIldl
YlBhZ2UuaCIKLSNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCi0jaW5jbHVkZSAiV2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlck1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiV2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5TWVzc2FnZXMuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0V2ZW50Lmg+Ci0jaW5jbHVk
ZSA8V2ViQ29yZS9FdmVudE5hbWVzLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9IVE1MVmlkZW9FbGVt
ZW50Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUNBTGF5ZXIuaD4KLSNpbmNsdWRlIDxX
ZWJDb3JlL1NldHRpbmdzLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9XZWJDb3JlVGhyZWFkUnVuLmg+
Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLSAgICAK
LVBhc3NSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcj4gV2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlcjo6Y3JlYXRlKFBhc3NSZWZQdHI8V2ViUGFnZT4gcGFnZSkKLXsKLSAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIocGFnZSkpOwotfQotCi1XZWJW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKFBhc3NSZWZQ
dHI8V2ViUGFnZT4gcGFnZSkKLSAgICA6IG1fcGFnZShwYWdlLmdldCgpKQotICAgICwgbV9zZW5k
VW5wYXJlbnRWaWRlb0xheWVyVHJhbnNhY3Rpb24oZmFsc2UpCi0gICAgLCBtX2lzQW5pbWF0aW5n
KGZhbHNlKQotICAgICwgbV90YXJnZXRJc0Z1bGxzY3JlZW4oZmFsc2UpCi0gICAgLCBtX2lzRnVs
bHNjcmVlbihmYWxzZSkKLXsKLSAgICBzZXRXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UodGhp
cyk7Ci0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2Vz
OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIHBhZ2Ut
PnBhZ2VJRCgpLCAqdGhpcyk7Ci19Ci0KLVdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6On5XZWJW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKCkKLXsKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5yZW1v
dmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci19Ci0KLXZvaWQgV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlcjo6d2lsbENvbW1pdExheWVyVHJlZShSZW1vdGVMYXllclRyZWVU
cmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCi17Ci0gICAgaWYgKG1fc2VuZFVucGFyZW50VmlkZW9M
YXllclRyYW5zYWN0aW9uKSB7Ci0gICAgICAgIHRyYW5zYWN0aW9uLmFkZFZpZGVvTGF5ZXJJRFBl
bmRpbmdGdWxsc2NyZWVuKG1fcGxhdGZvcm1DQUxheWVyLT5sYXllcklEKCkpOwotICAgICAgICBt
X3NlbmRVbnBhcmVudFZpZGVvTGF5ZXJUcmFuc2FjdGlvbiA9IGZhbHNlOwotICAgIH0KLX0KLSAg
ICAKLWJvb2wgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNGdWxsc2NyZWVuKGNv
bnN0IE5vZGUqIG5vZGUpIGNvbnN0Ci17Ci0gICAgaWYgKCFTZXR0aW5nczo6YXZLaXRFbmFibGVk
KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gaXNIVE1MVmlkZW9FbGVtZW50
KG5vZGUpOwotfQotCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmVudGVyRnVsbHNj
cmVlbkZvck5vZGUoTm9kZSogbm9kZSkKLXsKLSAgICBBU1NFUlQobm9kZSk7Ci0gICAgbV9ub2Rl
ID0gbm9kZTsKLSAgICBtX3RhcmdldElzRnVsbHNjcmVlbiA9IHRydWU7Ci0gICAgCi0gICAgaWYg
KG1faXNBbmltYXRpbmcpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBtX2lzQW5pbWF0aW5n
ID0gdHJ1ZTsKLSAgICBzZXRNZWRpYUVsZW1lbnQodG9IVE1MTWVkaWFFbGVtZW50KG5vZGUpKTsK
LSAgICBlbnRlckZ1bGxzY3JlZW4oKTsKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyOjpleGl0RnVsbHNjcmVlbkZvck5vZGUoTm9kZSopCi17Ci0gICAgbV9ub2RlLmNsZWFyKCk7
Ci0gICAgbV90YXJnZXRJc0Z1bGxzY3JlZW4gPSBmYWxzZTsKLSAgICAKLSAgICBpZiAobV9pc0Fu
aW1hdGluZykKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIG1faXNBbmltYXRpbmcgPSB0cnVl
OwotICAgIGV4aXRGdWxsc2NyZWVuKCk7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjo6c2V0RHVyYXRpb24oZG91YmxlIGR1cmF0aW9uKQotewotICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXREdXJhdGlvbihkdXJh
dGlvbiksIG1fcGFnZS0+cGFnZUlEKCkpOwotfQotICAgIAotdm9pZCBXZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyOjpzZXRDdXJyZW50VGltZShkb3VibGUgY3VycmVudFRpbWUsIGRvdWJsZSBhbmNo
b3JUaW1lKQotewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5OjpTZXRDdXJyZW50VGltZShjdXJyZW50VGltZSwgYW5jaG9yVGltZSksIG1f
cGFnZS0+cGFnZUlEKCkpOwotfQotICAgIAotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
OjpzZXRSYXRlKGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFja1JhdGUpCi17Ci0gICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldFJh
dGUoaXNQbGF5aW5nLCBwbGF5YmFja1JhdGUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLX0KLQotdm9p
ZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzZXRWaWRlb0RpbWVuc2lvbnMoYm9vbCBoYXNW
aWRlbywgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkKLXsKLSAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0VmlkZW9EaW1lbnNpb25z
KGhhc1ZpZGVvLCB3aWR0aCwgaGVpZ2h0KSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci19Ci0gICAgCi12
b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OndpbGxMZW5kVmlkZW9MYXllcihQbGF0Zm9y
bUxheWVyKiB2aWRlb0xheWVyKQotewotICAgIG1fcGxhdGZvcm1DQUxheWVyID0gUGxhdGZvcm1D
QUxheWVyOjpwbGF0Zm9ybUNBTGF5ZXIodmlkZW9MYXllcik7Ci0gICAgbV9zZW5kVW5wYXJlbnRW
aWRlb0xheWVyVHJhbnNhY3Rpb24gPSAhIW1fcGxhdGZvcm1DQUxheWVyOwotICAgIAotICAgIG1f
cGFnZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpXaWxs
TGVuZFZpZGVvTGF5ZXJXaXRoSUQobV9wbGF0Zm9ybUNBTGF5ZXIgPyBtX3BsYXRmb3JtQ0FMYXll
ci0+bGF5ZXJJRCgpIDogMCksIG1fcGFnZS0+cGFnZUlEKCkpOwotfQotICAgIAotdm9pZCBXZWJW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRMZW5kVmlkZW9MYXllcigpCi17Ci0gICAgLy8gbm8t
b3AKLSAgICAvLyB0aGlzIHdpbGwgYmUgc2VudCB0aHJvdWdoIGEgUmVtb3RlTGF5ZXJUcmVlVHJh
bnNhY3Rpb24KLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjplbnRlckZ1bGxz
Y3JlZW4oKQotewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5OjpFbnRlckZ1bGxzY3JlZW4oKSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci19Ci0g
ICAgCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmV4aXRGdWxsc2NyZWVuKCkKLXsK
LSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eTo6RXhpdEZ1bGxzY3JlZW4oKSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci19Ci0gICAgCi12b2lkIFdl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZEVudGVyRnVsbHNjcmVlbigpCi17Ci0gICAgbV9p
c0FuaW1hdGluZyA9IGZhbHNlOwotICAgIG1faXNGdWxsc2NyZWVuID0gZmFsc2U7Ci0gICAgCi0g
ICAgaWYgKG1fdGFyZ2V0SXNGdWxsc2NyZWVuKQotICAgICAgICByZXR1cm47Ci0KLSAgICBfX2Js
b2NrIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbE1lZGlhRWxlbWVudD4gcHJvdGVjdCh0
aGlzKTsKLSAgICBXZWJUaHJlYWRSdW4oXiB7Ci0gICAgICAgIGV4aXRGdWxsc2NyZWVuRm9yTm9k
ZShtX25vZGUuZ2V0KCkpOwotICAgICAgICBwcm90ZWN0LmNsZWFyKCk7Ci0gICAgfSk7Ci19Ci0K
LXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkRXhpdEZ1bGxzY3JlZW4oKQotewot
ICAgIG1faXNBbmltYXRpbmcgPSBmYWxzZTsKLSAgICBtX2lzRnVsbHNjcmVlbiA9IGZhbHNlOwot
Ci0gICAgc2V0TWVkaWFFbGVtZW50KG51bGxwdHIpOwotCi0gICAgaWYgKCFtX3RhcmdldElzRnVs
bHNjcmVlbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgX19ibG9jayBSZWZQdHI8V2ViVmlkZW9G
dWxsc2NyZWVuTW9kZWxNZWRpYUVsZW1lbnQ+IHByb3RlY3QodGhpcyk7Ci0gICAgV2ViVGhyZWFk
UnVuKF4gewotICAgICAgICBlbnRlckZ1bGxzY3JlZW5Gb3JOb2RlKG1fbm9kZS5nZXQoKSk7Ci0g
ICAgICAgIHByb3RlY3QuY2xlYXIoKTsKLSAgICB9KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0Ci0KLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmgKaW5kZXggYjgw
YWRkZmNkZmUzZWYwMmI0MzIyNjA0MmY0YzczNzRjYmMzNmVkNi4uNDY2ZDcyNDAwMTE1Nzk2NTdl
YjU1NWQxMmM4NzM1ZDU4YzZmZGI1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaApAQCAtNDcsOCArNDcs
OCBAQCBjbGFzcyBOb2RlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgTGF5ZXJIb3N0
aW5nQ29udGV4dDsKIGNsYXNzIFdlYlBhZ2U7Ci1jbGFzcyBSZW1vdGVMYXllclRyZWVUcmFuc2Fj
dGlvbjsKIAogY2xhc3MgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlciA6IHB1YmxpYyBXZWJDb3Jl
OjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbE1lZGlhRWxlbWVudCwgcHVibGljIFdlYkNvcmU6Oldl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZSwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7
CiBwdWJsaWM6CkBAIC01Nyw4ICs1Nyw2IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIGRpZFJl
Y2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiosIElQQzo6TWVzc2FnZURlY29kZXImKTsKICAg
ICAKLSAgICB2b2lkIHdpbGxDb21taXRMYXllclRyZWUoUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rp
b24mKTsKLQogICAgIGJvb2wgc3VwcG9ydHNGdWxsc2NyZWVuKGNvbnN0IFdlYkNvcmU6Ok5vZGUq
KSBjb25zdDsKICAgICB2b2lkIGVudGVyRnVsbHNjcmVlbkZvck5vZGUoV2ViQ29yZTo6Tm9kZSop
OwogICAgIHZvaWQgZXhpdEZ1bGxzY3JlZW5Gb3JOb2RlKFdlYkNvcmU6Ok5vZGUqKTsKQEAgLTcy
LDIxICs3MCwxNSBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHNldEN1cnJlbnRUaW1l
KGRvdWJsZSBjdXJyZW50VGltZSwgZG91YmxlIGFuY2hvclRpbWUpIG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgdm9pZCBzZXRSYXRlKGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFja1JhdGUpIG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0RpbWVuc2lvbnMoYm9vbCBoYXNWaWRl
bywgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IHdpbGxMZW5kVmlkZW9MYXllcihQbGF0Zm9ybUxheWVyKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIGRpZExlbmRWaWRlb0xheWVyKCkgb3ZlcnJpZGU7Ci0KLSAgICAvLyBmb3J3YXJkIHRv
IGludGVyZmFjZQotICAgIHZpcnR1YWwgdm9pZCBlbnRlckZ1bGxzY3JlZW4oKTsKLSAgICB2aXJ0
dWFsIHZvaWQgZXhpdEZ1bGxzY3JlZW4oKTsKICAgICAKICAgICAvLyBhZGRpdGlvbmFsIGluY29t
aW5nCiAgICAgdmlydHVhbCB2b2lkIGRpZEVudGVyRnVsbHNjcmVlbigpOwogICAgIHZpcnR1YWwg
dm9pZCBkaWRFeGl0RnVsbHNjcmVlbigpOworICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0xheWVy
R3Jhdml0eUVudW0odW5zaWduZWQpOwogICAgIAogICAgIFdlYlBhZ2UqIG1fcGFnZTsKICAgICBS
ZWZQdHI8V2ViQ29yZTo6Tm9kZT4gbV9ub2RlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpQbGF0Zm9y
bUNBTGF5ZXI+IG1fcGxhdGZvcm1DQUxheWVyOwotICAgIGJvb2wgbV9zZW5kVW5wYXJlbnRWaWRl
b0xheWVyVHJhbnNhY3Rpb247CisgICAgc3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRl
eHQ+IG1fbGF5ZXJIb3N0aW5nQ29udGV4dDsKICAgICAKICAgICBib29sIG1faXNBbmltYXRpbmc7
CiAgICAgYm9vbCBtX3RhcmdldElzRnVsbHNjcmVlbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
Lm1lc3NhZ2VzLmluCmluZGV4IDFhOTMyMmMzNjFiNzM2MjIwZGZmNzA2MzZkN2NjZjI3MDc4MjUw
MzQuLjRmYmRlMGZiZjRkZDRhODljZmExNTQxMmJkM2ZiOGVlN2Q3ZTEyZTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIu
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9pb3MvV2ViVmlkZW9G
dWxsc2NyZWVuTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMjYsMTEgKzI2LDEwIEBAIG1lc3NhZ2Vz
IC0+IFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIgewogICAgIFBhdXNlKCkKICAgICBUb2dnbGVQ
bGF5U3RhdGUoKQogICAgIFNlZWtUb1RpbWUoZG91YmxlIHRpbWUpCi0gICAgQm9ycm93VmlkZW9M
YXllcigpCi0gICAgUmV0dXJuVmlkZW9MYXllcigpCiAgICAgUmVxdWVzdEV4aXRGdWxsc2NyZWVu
KCkKLQogICAgIERpZEV4aXRGdWxsc2NyZWVuKCkKICAgICBEaWRFbnRlckZ1bGxzY3JlZW4oKQor
ICAgIFNldFZpZGVvTGF5ZXJGcmFtZShXZWJDb3JlOjpGbG9hdFJlY3QgYm91bmRzKQorICAgIFNl
dFZpZGVvTGF5ZXJHcmF2aXR5RW51bSh1bnNpZ25lZCBncmF2aXR5KQogfQogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wN2I0NzcwZmNiODRiNDY3OWY1OGY5Yzc2NWI3N2U4
ZTBkYzM5NzFlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9p
b3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQpAQCAtMCwwICsxLDE2OSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlci5oIgorCisjaWYgUExBVEZPUk0oSU9TKQorCisjaW5jbHVkZSAiV2ViUGFnZS5oIgorI2lu
Y2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHlNZXNz
YWdlcy5oIgorI2luY2x1ZGUgPFF1YXJ0ekNvcmUvQ29yZUFuaW1hdGlvbi5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvRXZlbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0V2ZW50TmFtZXMuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL0hUTUxWaWRlb0VsZW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRm
b3JtQ0FMYXllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1dlYkNvcmVUaHJlYWRSdW4uaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitQYXNzUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXI+IFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmNyZWF0ZShQYXNzUmVmUHRyPFdlYlBhZ2U+
IHBhZ2UpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyKHBhZ2UpKTsKK30KKworV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6V2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlcihQYXNzUmVmUHRyPFdlYlBhZ2U+IHBhZ2UpCisgICAgOiBtX3BhZ2UocGFn
ZS5nZXQoKSkKKyAgICAsIG1faXNBbmltYXRpbmcoZmFsc2UpCisgICAgLCBtX3RhcmdldElzRnVs
bHNjcmVlbihmYWxzZSkKKyAgICAsIG1faXNGdWxsc2NyZWVuKGZhbHNlKQoreworICAgIHNldFdl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZSh0aGlzKTsKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQo
KS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgcGFnZS0+cGFnZUlEKCksICp0aGlzKTsKK30KKworV2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6fldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIoKQorewor
ICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKK30KKworYm9vbCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0
c0Z1bGxzY3JlZW4oY29uc3QgTm9kZSogbm9kZSkgY29uc3QKK3sKKyAgICBpZiAoIVNldHRpbmdz
OjphdktpdEVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBpc0hU
TUxWaWRlb0VsZW1lbnQobm9kZSk7Cit9CisKK3ZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdl
cjo6ZW50ZXJGdWxsc2NyZWVuRm9yTm9kZShOb2RlKiBub2RlKQoreworICAgIEFTU0VSVChub2Rl
KTsKKyAgICBtX25vZGUgPSBub2RlOworICAgIG1fdGFyZ2V0SXNGdWxsc2NyZWVuID0gdHJ1ZTsK
KworICAgIGlmIChtX2lzQW5pbWF0aW5nKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2lzQW5p
bWF0aW5nID0gdHJ1ZTsKKyAgICBzZXRNZWRpYUVsZW1lbnQodG9IVE1MTWVkaWFFbGVtZW50KG5v
ZGUpKTsKKworICAgIFBsYXRmb3JtTGF5ZXIqIHZpZGVvTGF5ZXIgPSBbQ0FMYXllciBsYXllcl07
CisgICAgbV9sYXllckhvc3RpbmdDb250ZXh0ID0gTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRl
Rm9yRXh0ZXJuYWxIb3N0aW5nUHJvY2VzcygpOworICAgIG1fbGF5ZXJIb3N0aW5nQ29udGV4dC0+
c2V0Um9vdExheWVyKHZpZGVvTGF5ZXIpOworICAgIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKHZp
ZGVvTGF5ZXIpOworCisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHk6OkVudGVyRnVsbHNjcmVlbldpdGhJRChtX2xheWVySG9zdGluZ0NvbnRl
eHQtPmNvbnRleHRJRCgpKSwgbV9wYWdlLT5wYWdlSUQoKSk7Cit9CisKK3ZvaWQgV2ViVmlkZW9G
dWxsc2NyZWVuTWFuYWdlcjo6ZXhpdEZ1bGxzY3JlZW5Gb3JOb2RlKE5vZGUqKQoreworICAgIG1f
bm9kZS5jbGVhcigpOworICAgIG1fdGFyZ2V0SXNGdWxsc2NyZWVuID0gZmFsc2U7CisKKyAgICBp
ZiAobV9pc0FuaW1hdGluZykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9pc0FuaW1hdGluZyA9
IHRydWU7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHk6OkV4aXRGdWxsc2NyZWVuKCksIG1fcGFnZS0+cGFnZUlEKCkpOworfQorCit2b2lk
IFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnNldER1cmF0aW9uKGRvdWJsZSBkdXJhdGlvbikK
K3sKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eTo6U2V0RHVyYXRpb24oZHVyYXRpb24pLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKK30KKwordm9p
ZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzZXRDdXJyZW50VGltZShkb3VibGUgY3VycmVu
dFRpbWUsIGRvdWJsZSBhbmNob3JUaW1lKQoreworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXRDdXJyZW50VGltZShjdXJyZW50VGlt
ZSwgYW5jaG9yVGltZSksIG1fcGFnZS0+cGFnZUlEKCkpOworfQorCit2b2lkIFdlYlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXI6OnNldFJhdGUoYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0
ZSkKK3sKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXJQcm94eTo6U2V0UmF0ZShpc1BsYXlpbmcsIHBsYXliYWNrUmF0ZSksIG1fcGFnZS0+cGFnZUlE
KCkpOworfQorCit2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnNldFZpZGVvRGltZW5z
aW9ucyhib29sIGhhc1ZpZGVvLCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KQoreworICAgIG1f
cGFnZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXRW
aWRlb0RpbWVuc2lvbnMoaGFzVmlkZW8sIHdpZHRoLCBoZWlnaHQpLCBtX3BhZ2UtPnBhZ2VJRCgp
KTsKK30KKwordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFbnRlckZ1bGxzY3Jl
ZW4oKQoreworICAgIG1faXNBbmltYXRpbmcgPSBmYWxzZTsKKyAgICBtX2lzRnVsbHNjcmVlbiA9
IGZhbHNlOworCisgICAgaWYgKG1fdGFyZ2V0SXNGdWxsc2NyZWVuKQorICAgICAgICByZXR1cm47
CisKKyAgICBfX2Jsb2NrIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbE1lZGlhRWxlbWVu
dD4gcHJvdGVjdCh0aGlzKTsKKyAgICBXZWJUaHJlYWRSdW4oXiB7CisgICAgICAgIGV4aXRGdWxs
c2NyZWVuRm9yTm9kZShtX25vZGUuZ2V0KCkpOworICAgICAgICBwcm90ZWN0LmNsZWFyKCk7Cisg
ICAgfSk7Cit9CisKK3ZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkRXhpdEZ1bGxz
Y3JlZW4oKQoreworICAgIG1faXNBbmltYXRpbmcgPSBmYWxzZTsKKyAgICBtX2lzRnVsbHNjcmVl
biA9IGZhbHNlOworCisgICAgbV9sYXllckhvc3RpbmdDb250ZXh0LT5zZXRSb290TGF5ZXIobnVs
bHB0cik7CisgICAgbV9sYXllckhvc3RpbmdDb250ZXh0ID0gbnVsbHB0cjsKKyAgICBzZXRWaWRl
b0Z1bGxzY3JlZW5MYXllcihudWxscHRyKTsKKworICAgIHNldE1lZGlhRWxlbWVudChudWxscHRy
KTsKKworICAgIGlmICghbV90YXJnZXRJc0Z1bGxzY3JlZW4pCisgICAgICAgIHJldHVybjsKKwor
ICAgIF9fYmxvY2sgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50PiBw
cm90ZWN0KHRoaXMpOworICAgIFdlYlRocmVhZFJ1biheIHsKKyAgICAgICAgZW50ZXJGdWxsc2Ny
ZWVuRm9yTm9kZShtX25vZGUuZ2V0KCkpOworICAgICAgICBwcm90ZWN0LmNsZWFyKCk7CisgICAg
fSk7Cit9CisgICAgCit2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnNldFZpZGVvTGF5
ZXJHcmF2aXR5RW51bSh1bnNpZ25lZCBncmF2aXR5KQoreworICAgIHNldFZpZGVvTGF5ZXJHcmF2
aXR5KChXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbDo6VmlkZW9HcmF2aXR5KWdyYXZpdHkpOworfQor
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>226144</attachid>
            <date>2014-03-07 11:53:05 -0800</date>
            <delta_ts>2014-03-07 15:58:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129870-20140307115304.patch</filename>
            <type>text/plain</type>
            <size>74397</size>
            <attacher name="Jeremy Jones">jeremyj-wk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY1MTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTA4NGRlNDA3YjFmNGEy
NzE0NmQ1YjFjYzYwZDAwNjQwZTRhN2M5Mi4uM2JkNDRhN2M2YmU1NjIzYTRhMTk2MjA5ODEyY2Rm
ZDliY2NkYWE5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0NSBAQAorMjAxNC0wMy0wNyAgSmVy
ZW15IEpvbmVzICA8amVyZW15akBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgbWVkaWEgZWxl
bWVudCB0byBzdXBwbHkgdGhlIHZpZGVvIGxheWVyIGFmdGVyIGZ1bGxzY3JlZW4gdHJhbnNpdGlv
biBoYXMgYWxyZWFkeSBiZWd1bi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEyOTg3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEluc3RlYWQgb2YgYm9ycm93aW5nIHRoZSB2aWRlb2xheWVyIGZyb20gdGhl
IEhUTUxNZWRpYUVsZW1lbnQsIFdlYlZpZGVvRnVsbHNjcmVlbiBub3cgc3VwcGxpZXMgYSBsYXll
ciB0byBIVE1MTWVkaWFFbGVtZW50IHRvIGZpbGwgaW4gYXMgbmVlZGVkIGFuZCBhdCB0aGUgYXBw
cm9wcmlhdGUgdGltZS4KKworICAgICAgICBUaGlzIGFsbG93cyBmdWxsc2NyZWVuIGV2ZW4gaWYg
dGhlIHZpZGVvIGxheWVyIGhhc24ndCB5ZXQgYmVlbiBjcmVhdGVkLiBBbmQgaW4gdGhlIGZ1dHVy
ZSBpdCBhbGxvd3MgTWVkaWFQbGF5ZXIgdG8gc3VwcGx5IG90aGVyIGxheWVycyBzdWNoIGFzIGNs
b3NlZCBjYXB0aW9ucy4gCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgUmVt
b3ZlIGV4cG9ydHMgcmVsYXRlZCB0byBib3Jyb3dpbmcgYW5kIGxlbmQgdGhlIHZpZGVvIGxheWVy
LgorICAgICAgICBBZGQgZXhwb3J0cyBmb3Igc3VwcGx5aW5nIGEgbGF5ZXIgdG8gZnVsbHNjcmVl
biBhbmQga2VlcHlpbmcgdGhlIGZyYW1lIGFuZCBncmF2aXR5IHByb3BlcnRpZXMgaW4gc3luYy4K
KworICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIFJlbW92ZSB0
aGUgY29uY2VwdCBvZiBib3Jyb3dpbmcgdGhlIHBsYXRmb3JtIGxheWVyLgorICAgICAgICBBZGQg
dGhlIGNvbmNlcHQgb2YgYSBzdXBwbGllZCBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyLCBpbnRvIHdo
aWNoIHRoZSBtZWRpYSBwbGF5ZXIgY2FuIGFkZCBsYXllcnMuCisgICAgICAgIFdoZW4gdGhlIG1f
dmlkZW9GdWxsc2NyZWVuRnJhbWUgaXMgc3VwcGxpZWQsIGRvbid0IHNob3cgdGhlIHZpZGVvIGxh
eWVyIGlubGluZSBhbnkgbW9yZS4KKyAgICAgICAgU3Rhc2ggdmlkZW8gbGF5ZXIgcHJvcGVydGll
cyBpbiBjYXNlIHRoZSBtZWRpYSBwbGF5ZXIgaXMgbm90IHlldCBjcmVhdGVkLgorCisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KToKKyAgICAgICAg
SW5pdGlhbGl6ZSBncmF2aXR5IHRvIHRoZSBkZWZhdWx0LiBSZW1vdmUgbV9wbGF0Zm9ybUxheWVy
Qm9ycm93ZWQuCisKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBsYXRmb3Jt
TGF5ZXIpOgorICAgICAgICBXaGVuIHdlIGhhdmUgYSBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyLCBk
b24ndCBzaG93IHZpZGVvIGlubGluZS4KKworICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIpOgorICAgICAgICBQYXNzIGFsb25nIHRoZSBt
X3ZpZGVvRnVsbHNjcmVlbkxheWVyIHRvIHRoZSBNZWRpYVBsYXllciBpZiBhdmFpbGFibGUgb3Ig
anVzdCBzdGFzaCBpdCBmb3IgbGF0ZXIuCisKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OmNyZWF0ZU1lZGlhUGxheWVyKToKKyAgICAgICAgUGFzcyBhbG9uZyB2aWRlbyBmdWxs
c2NyZWVuIHByb3BlcnRpZXMgdGhhdCB3ZSBtYXkgaGF2ZSBhY2N1bXVsYXRlZCBiZWZvcmUgdGhl
IE1lZGlhUGxheWVyIHdhcyBjcmVhdGVkLgorCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50OjpzZXRWaWRlb0Z1bGxzY3JlZW5HcmF2aXR5KToKKyAgICAgICAgU3Rhc2ggdGhlIGdy
YXZpdHkgcHJvcGVydHksIHBhc3MgaXQgYWxvbmcgdG8gdGhlIG1lZGlhIHBsYXllciBpZiBwb3Nz
aWJsZS4KKworICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAgICBSZW1v
dmUgY29uY2VwdCBvZiBib3Jyb3dpbmcgdGhlIHZpZGVvIGxheWVyLiBBZGQgcHJvcGVydGllcyBm
b3IgYSBzdXBwbGllZCB2aWRlb0Z1bGxzY3JlZW5MYXllci4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
OjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcik6CisgICAgICAgIEZvcndhcmQgb24gdG8gaW50ZXJu
YWwgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpzZXRW
aWRlb0Z1bGxzY3JlZW5GcmFtZSk6CisgICAgICAgIEZvcndhcmQgb24gdG8gaW50ZXJuYWwgaW1w
bGVtZW50YXRpb24uCisKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpzZXRWaWRlb0Z1
bGxzY3JlZW5HcmF2aXR5KToKKyAgICAgICAgRm9yd2FyZCBvbiB0byBpbnRlcm5hbCBpbXBsZW1l
bnRhdGlvbi4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmg6Cisg
ICAgICAgIEFkZCBtZXRob2RzIGZvciB2aWRlbyBmdWxsc2NyZWVuIExheWVyLCBGcmFtZSBhbmQg
R3Jhdml0eS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlOjpzZXRW
aWRlb0Z1bGxzY3JlZW5MYXllcik6CisgICAgICAgIEFkZCBkZWZhdWx0IGltcGxlbWVudGF0aW9u
LgorCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U6OnNldFZp
ZGVvRnVsbHNjcmVlbkZyYW1lKToKKyAgICAgICAgQWRkIGRlZmF1bHQgaW1wbGVtZW50YXRpb24u
CisgICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNl
OjpzZXRWaWRlb0Z1bGxzY3JlZW5HcmF2aXR5KToKKyAgICAgICAgQWRkIGRlZmF1bHQgaW1wbGVt
ZW50YXRpb24uCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaDoKKyAgICAgICAg
QWRkIHN1cHBvcnQgZm9yIGZ1bGxzY3JlZW4gdmlkZW8gbGF5ZXIsIGZyYW1lIGFuZCBncmF2aXR5
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMpOgorICAgICAgICBJbml0IG1fdmlkZW9GdWxsc2NyZWVuR3Jhdml0eS4gCisKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0
ZVZpZGVvTGF5ZXIpOgorICAgICAgICBBcHBseSBjYWNoZWQgcHJvcGVydGllcyBvbmNlIHZpZGVv
IGxheWVyIGlzIGNyZWF0ZWQgYW5kIGFkZCB0byB0aGUgZnVsbHNjcmVlbiBsYXllci4KKworICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0Vmlk
ZW9GdWxsc2NyZWVuTGF5ZXIpOgorICAgICAgICBDYWNoZSB0aGUgcHJvcGVydHkgdmFsdWUuIEFk
ZCB2aWRlbyBsYXllciByaWdodCBhd2F5IGF2YWlsYWJsZS4KKworICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuRnJh
bWUpOgorICAgICAgICBDYWNoZSB0aGUgcHJvcGVydHkgdmFsdWUuIEFwcGx5IHRvIHZpZGVvIGxh
eWVyIHJpZ2h0IGF3YXkgaWYgYXZhaWxhYmxlLgorCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5HcmF2aXR5KToK
KyAgICAgICAgQ2FjaGUgdGhlIHByb3BlcnR5IHZhbHVlLiBBcHBseSB0byB2aWRlbyBsYXllciBy
aWdodCBhd2F5IGlmIGF2YWlsYWJsZS4KKworICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW06CisgICAgICAgIFN1cHBseSBhIGZ1bGxzY3Jl
ZW4gdmlkZW8gbGF5ZXIgdG8gdGhlIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsIGFuZCB0byB0aGUg
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlLgorCisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXIgZW50ZXJGdWxsc2NyZWVuOl0pOgorICAgICAgICBTdXBwbHkgYSBmdWxs
c2NyZWVuIHZpZGVvIGxheWVyIHRvIHRoZSBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbCBhbmQgdG8g
dGhlIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZS4KKworICAgICAgICAoLVtXZWJWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyIGRpZEV4aXRGdWxsc2NyZWVuXSk6CisgICAgICAgIENsZWFuIHVw
IHRoZSB2aWRlb0Z1bGxzY3JlZW5MYXllci4KKworICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UuaDoKKyAgICAgICAgUmVtb3ZlIG1ldGhvZHMgcmVsYXRl
ZCB0byBsZW5kaW5nIHRoZSB2aWRlbyBsYXllci4KKworICAgICAgICAqIHBsYXRmb3JtL2lvcy9X
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oOgorICAgICAgICBSZW5hbWUgV2ViQVZQ
bGF5ZXIgbGF5ZXIgdG8gV2ViQVZWaWRlb0xheWVyIHRvIG1hdGNoIHRoZSBBVktpdCBuYW1lLgor
ICAgICAgICBSZW1vdmUgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gbGVuZGluZyB0aGUgdmlkZW8gbGF5
ZXIuCisgICAgICAgIFN1cHBseSBhIGxheWVyIGRpcmVjdGx5IHRvIGVudGVyRnVsbHNjcmVlbi4K
KworICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktp
dC5tbToKKyAgICAgICAgKCtbV2ViQVZWaWRlb0xheWVyIHZpZGVvTGF5ZXJdKToKKyAgICAgICAg
UmVuYW1lIFdlYkFWUGxheWVyIGxheWVyIHRvIFdlYkFWVmlkZW9MYXllciB0byBtYXRjaCB0aGUg
QVZLaXQgbmFtZS4KKworICAgICAgICAoLVtXZWJBVlZpZGVvTGF5ZXIgc2V0UGxheWVyQ29udHJv
bGxlcjpdKToKKyAgICAgICAgU3RvcmUgdGhlIEFWUGxheWVyQ29udHJvbGxlciB0byBwcmV2ZW50
IEFWS2l0J3MgZGVmYXVsdCBiZWhhdmlvci4KKworICAgICAgICAoLVtXZWJBVlZpZGVvTGF5ZXIg
c2V0Qm91bmRzOl0pOgorICAgICAgICBGb3J3YXJkIHRoaXMgb250byB0aGUgV2ViVmlkZW9GdWxs
c2NyZWVuTW9kZWwKKworICAgICAgICAoLVtXZWJBVlZpZGVvTGF5ZXIgc2V0VmlkZW9MYXllckdy
YXZpdHk6XSk6CisgICAgICAgIEZvcndhcmQgdGhpcyBvbnRvIHRoZSBXZWJWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbAorCisgICAgICAgICgtW1dlYkFWVmlkZW9MYXllciB2aWRlb0xheWVyR3Jhdml0eV0p
OgorICAgICAgICBGb3J3YXJkIHRoaXMgb250byB0aGUgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwK
KworICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmVudGVyRnVsbHNj
cmVlbik6CisgICAgICAgIFN1cHBseSBhIHZpZGVvIGxheWVyIGRpcmVjdGx5IGluc3RlYWQgb2Yg
cmVseWluZyBvbiBvbmUgYmVpbmcgcHJldmlvdXNseSBsb2FuZWQuCisKKyAgICAgICAgKFdlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpleGl0RnVsbHNjcmVlbik6CisgICAgICAgIENs
ZWFuLXVwIG5vdyBhc3N1bWVzIHRoZXJlIGlzIGEgdmlkZW8gbGF5ZXIuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwuaDoKKyAgICAgICAgUmVtb3ZlIG1l
dGhvZHMgZm9yIGJvcnJvd2luZyBhbmQgcmV0dXJuaW5nIHZpZGVvIGxheWVycy4KKyAgICAgICAg
QWRkIG1ldGhvZHMgZm9yIGtlZXBpbmcgdmlkZW8gbGF5ZXIgc3RhdGUgaW4gc3luYy4KKworICAg
ICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbE1lZGlhRWxlbWVudC5o
OgorICAgICAgICBSZW1vdmUgbWV0aG9kcyBmb3IgYm9ycm93aW5nIGFuZCByZXR1cm5pbmcgdmlk
ZW8gbGF5ZXJzLgorICAgICAgICBBZGQgbWV0aG9kIGZvciBzdXBwbHlpbmcgYSB2aWRlbyBmdWxs
c2NyZWVuIGxheWVyLgorICAgICAgICBBZGQgbWV0aG9kcyBmb3Iga2VlcGluZyB2aWRlbyBsYXll
ciBzdGF0ZSBpbiBzeW5jLgorCisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNj
cmVlbk1vZGVsTWVkaWFFbGVtZW50Lm1tOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuTW9k
ZWxNZWRpYUVsZW1lbnQ6OnNldE1lZGlhRWxlbWVudCk6CisgICAgICAgIEhhbmRsZSBhdWRpbyBl
bGVtZW50IGNhc2UgYnkgc2V0dGluZyBoYXNWaWRlbyB0byBmYWxzZS4KKworICAgICAgICAoV2Vi
VmlkZW9GdWxsc2NyZWVuTW9kZWxNZWRpYUVsZW1lbnQ6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVy
KToKKyAgICAgICAgUGFzcyBhbG9uZyB0aGUgdmlkZW8gZnVsbHNjcmVlbiBsYXllciB0byB0aGUg
bWVkaWEgZWxlbWVudC4KKworICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxNZWRpYUVs
ZW1lbnQ6OnNldFZpZGVvTGF5ZXJGcmFtZSk6CisgICAgICAgIFBhc3MgYWxvbmcgdGhlIHZpZGVv
IGxheWVyIGZyYW1lIHRvIHRoZSBtZWRpYSBlbGVtZW50LgorCisgICAgICAgIChXZWJWaWRlb0Z1
bGxzY3JlZW5Nb2RlbE1lZGlhRWxlbWVudDo6c2V0VmlkZW9MYXllckdyYXZpdHkpOgorICAgICAg
ICBQYXNzIGFsb25nIHRoZSB2aWRlbyBsYXllciBncmF2aXR5IHRvIHRoZSBtZWRpYSBlbGVtZW50
LgorCiAyMDE0LTAzLTA1ICBLcnp5c3p0b2YgQ3plY2ggIDxrLmN6ZWNoQHNhbXN1bmcuY29tPgog
CiAgICAgICAgIFtBVEtdIEV4cG9zZSBtaXNzaW5nIGZ1bmN0aW9uYWxpdGllcyBvZiBBdGtUYWJs
ZUNlbGwgdG8gQVQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMDQ3NWUwYTYxMmE3NGYzNzcwODMzZmEzNDIzZjRk
NzYwYTkzMWRjOC4uMzU1NDU1ZGZkMTljNGRkYjU1NTA4NGQzMWNmNTNiYzhmMWNjYzU5MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwpAQCAtMSwzICsxLDg2IEBACisyMDE0LTAzLTA3ICBKZXJlbXkgSm9uZXMgIDxqZXJl
bXlqQGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBtZWRpYSBlbGVtZW50IHRvIHN1cHBseSB0
aGUgdmlkZW8gbGF5ZXIgYWZ0ZXIgZnVsbHNjcmVlbiB0cmFuc2l0aW9uIGhhcyBhbHJlYWR5IGJl
Z3VuLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI5
ODcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlciBhbmQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
IGRvIHRoZWlyIG93biByZW1vdGUgaG9zdGluZyBvZiB0aGUgdmlkZW8gbGF5ZXIgaW5zdGVhZCBv
ZiBuZWVkaW5nIHRoZSB2aWRlbyBsYXllciB0byBoYXZlIGFscmVhZHkgYmVlbiBob3N0ZWQgZWxz
ZXdoZXJlLiBUaGlzIGFsbG93cyB0aGUgcmVtb3ZhbCBvZiB0aGUgY29vcmRpbmF0aW9uIHdpdGgg
V2ViUGFnZVByb3h5IHZpYSBhIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLgorCisgICAgICAg
ICogU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5oOgorICAgICAgICBSZW1v
dmUgbV92aWRlb0xheWVySURzUGVuZGluZ0Z1bGxzY3JlZW4gYW5kIGFjY2Vzc29ycy4KKworICAg
ICAgICAqIFNoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW06CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjplbmNvZGUpOgorICAgICAgICBE
b24ndCBlbmNvZGUgbV92aWRlb0xheWVySURzUGVuZGluZ0Z1bGxzY3JlZW4KKworICAgICAgICAo
V2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6ZGVjb2RlKToKKyAgICAgICAgRG9u
J3QgZGVjb2RlIG1fdmlkZW9MYXllcklEc1BlbmRpbmdGdWxsc2NyZWVuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpkaWRDb21taXRMYXllclRyZWUpOgorICAgICAgICBEb24ndCBmb3J3YXJkIGRpZENv
bW1pdExheWVyVHJlZSB0byBtX3ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oOgorICAgICAgICBS
ZW1vdmUgY29kZSBmb3Igc3luY2hyb25pemluZyB3aXRoIHRoZSBSZW5kZXJUcmVlLgorICAgICAg
ICBBZGQgYSBob3N0aW5nIGxheWVyIGFuZCBtZXRob2RzIHRvIGtlZXAgdmlkZW8gbGF5ZXIgZnJh
bWUgYW5kIHZpZGVvIGdyYXZpdHkgc3luY2hyb25pemVkLgorCisgICAgICAgICogVUlQcm9jZXNz
L2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW46CisgICAgICAg
IENoYW5nZSBJUEMgaW50ZXJmYWNlIHRvIGZhc2NpbGl0YXRlIHJlaG9zdGluZyB2aWRlbyBsYXll
ciB3aXRoIGEgaW5zdGVhZCBvZiBjb29yZGluYXRpbmcgd2l0aCB0aGUgUmVuZGVyVHJlZSBieSBQ
bGF0Zm9ybUxheWVySUQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkpOgorICAgICAgICBS
ZW1vdmUgaW5pdGlhbGl6YXRpb24gZm9yIHJlbW92ZWQgbWVtYmVycy4KKworICAgICAgICAoV2Vi
S2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmVudGVyRnVsbHNjcmVlbldpdGhJ
RCk6CisgICAgICAgIFJlaG9zdCB0aGUgdmlkZW8gbGF5ZXIgYnkgaWQgYW5kIHBhc3Mgb24gdGhl
IGxheWVyLgorICAgICAgICBUaGlzIHJlcGxhY2VzIGRpZENvbW1pdExheWVyVHJlZSgpIGFuZCAg
d2lsbExlbmRWaWRlb0xheWVyV2l0aElEKCkuIAorCisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZGlkRXhpdEZ1bGxzY3JlZW4pOgorICAgICAgICBDbGVh
bnVwIHRoZSBob3N0aW5nIGxheWVyLgorCisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eTo6c2V0VmlkZW9MYXllckZyYW1lKToKKyAgICAgICAgRm9yd2FyZCBv
biB0aGUgdmlkZW8gbGF5ZXIncyBmcmFtZSB0byBrZWVwIHRoZSBob3N0ZWQgbGF5ZXIgaW4gc3lu
YyB3aXRoIHRoZSBpbnRlcmZhY2UuCisKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5OjpzZXRWaWRlb0xheWVyR3Jhdml0eSk6CisgICAgICAgIEZvcndhcmQg
dGhlIHZpZGVvbGF5ZXIgZ3Jhdml0eS4KKworICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgUmVuYW1lIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIu
Y3BwIHRvIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KKworICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6d2lsbENv
bW1pdExheWVyVHJlZSk6CisgICAgICAgIERvbid0IGludm92bGUgdGhlIG1fdmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlciBpbiBsYXllciB0cmVlIHRyYW5zYWN0aW9ucy4KKworICAgICAgICAqIFdlYlBy
b2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaDoKKyAgICAgICAgUmVtb3ZlIGNv
ZGUgdGhhdCBzeW5jaHJvbml6ZXMgd2l0aCB0aGUgcmVuZGVyIHRyZWUgdmlhIFJlbW90ZUxheWVy
VHJlZVRyYW5zYWN0aW9uLgorICAgICAgICBJbnN0ZWFkIHJlaG9zdCB0aGUgdmlkZW8gbGF5ZXIg
ZGlyZWN0bHkuCisgICAgICAgIEluc3RlYWQgb2YgaG9waW5nIHRoZSBXZWJWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbCBoYXMgYSB2aWRlb0xheWVyLCBzdXBwbHkgb25lIGludG8gd2hpY2gKKyAgICAgICAg
aXQgY2FuIGFkZCB3aGF0ZXZlciBpdCBsaWtlcyBhcyBuZWVkZWQuCisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1lc3NhZ2VzLmluOgorICAgICAg
ICBObyBtb3JlIGV4cGxpY2l0IGJvcnJvd2luZyBhbmQgcmV0dXJuaW5nIHZpZGVvIGxheWVycy4K
KyAgICAgICAgQWRkIGZ1bmN0aW9ucyB0byBrZWVwIHZpZGVvIGxheWVyIGJvdW5kcyBhbmQgZ3Jh
dml0eSBpbiBzeW5jIHdpdGggdGhlIFVJLiAKKworICAgICAgICAqIFdlYlByb2Nlc3MvaW9zL1dl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW06IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmNwcC4KKyAgICAgICAgUmVt
b3ZlZCBjb2RlIGZvciBzeW5jaHJvbml6aW5nIHZpYSBSZW1vdGVMQXllclRyZWVUcmFuc2FjdGlv
bi4KKworICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpXZWJWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyKToKKyAgICAgICAgUmVtb3ZlIGluaXRpYWxpemF0aW9uIGZvciBy
ZW1vdmVkIG1lbWViZXIgbV9zZW5kVW5wYXJlbnRWaWRlb0xheWVyVHJhbnNhY3Rpb24uCisKKyAg
ICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZW50ZXJGdWxsc2NyZWVu
Rm9yTm9kZSk6CisgICAgICAgIENyZWF0ZXMgYSBmdWxsc2NyZWVuIGxheWVyLCBnaXZlcyBpdCB0
byB0aGUgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwgdG8gZmlsbCBpbiwKKyAgICAgICAgYW5kIGhv
c3RzIGl0IGluIGEgY29udGV4dCB0byBzZW5kIHRvIHRoZSBVSVByb2Nlc3MuCisKKyAgICAgICAg
KFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZXhpdEZ1bGxzY3JlZW5Gb3JOb2Rl
KToKKyAgICAgICAgcmVtb3ZlIGVudGVyRnVsbHNjcmVlbigpIGFuZCBqdXN0IGRpcmVjdGx5IHNl
bmQgdGhlIElQQyBtZXNzYWdlLiAKKworICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyOjpkaWRFeGl0RnVsbHNjcmVlbik6CisgICAgICAgIENsZWFuIHVwIHRoZSBob3N0
aW5nIGNvbnRleHQuCisKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdl
cjo6c2V0VmlkZW9MYXllckdyYXZpdHlFbnVtKToKKyAgICAgICAgRm9yd2FyZCBvbiB0aGUgdmlk
ZW8gZ3Jhdml0eS4gVHlwZSBjb252ZXJ0IGZyb20gdW5zaWduZWQgdG8gTWVkaWFQbGF5ZXI6OlZp
ZGVvR3Jhdml0eS4KKwogMjAxNC0wMy0wNCAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFw
cGxlLmNvbT4KIAogICAgICAgICBGaXggdGhlIGJ1aWxkIGFmdGVyIHIxNjUwOTUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KaW5kZXggMmY5MTcxNDYyOTRjODZkOWRkNjRhYmYyODY0Mjk3ODkwZWMxMDVjNi4u
NWI4NmZiNzMzNzE0ZjA1MzJkZWNhYzkyNWM0MmRmYTc5NzM1ZGZhZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4KQEAgLTMyMDUsMTAgKzMyMDUsOCBAQCBfX1pOSzdXZWJDb3JlMTZIVE1MTWVkaWFFbGVt
ZW50OGR1cmF0aW9uRXYKIF9fWk43V2ViQ29yZTMyV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQxMXNldER1cmF0aW9uRWQKIF9fWk43V2ViQ29yZTMyV2ViVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQxNGV4aXRGdWxsc2NyZWVuRXYKIF9fWk43V2ViQ29yZTMyV2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQxNHNldEN1cnJlbnRUaW1lRWRkCi1fX1pON1dlYkNvcmUzMldl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0MTVlbnRlckZ1bGxzY3JlZW5FdgotX19aTjdX
ZWJDb3JlMzJXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDE3ZGlkTGVuZFZpZGVvTGF5
ZXJFdgorX19aTjdXZWJDb3JlMzJXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDE1ZW50
ZXJGdWxsc2NyZWVuRVI3Q0FMYXllcgogX19aTjdXZWJDb3JlMzJXZWJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdDE4c2V0VmlkZW9EaW1lbnNpb25zRWJmZgotX19aTjdXZWJDb3JlMzJXZWJW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDE4d2lsbExlbmRWaWRlb0xheWVyRVA3Q0FMYXll
cgogX19aTjdXZWJDb3JlMzJXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDI2c2V0V2Vi
VmlkZW9GdWxsc2NyZWVuTW9kZWxFUE5TXzIzV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxFCiBfX1pO
N1dlYkNvcmUzMldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0MzVzZXRXZWJWaWRlb0Z1
bGxzY3JlZW5DaGFuZ2VPYnNlcnZlckVQTlNfMzJXZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNl
cnZlckUKIF9fWk43V2ViQ29yZTMyV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ3c2V0
UmF0ZUViZgpAQCAtMzIxNyw5ICszMjE1LDEwIEBAIF9fWk43V2ViQ29yZTM1V2ViVmlkZW9GdWxs
c2NyZWVuTW9kZWxNZWRpYUVsZW1lbnQxMHNlZWtUb1RpbWVFZAogX19aTjdXZWJDb3JlMzVXZWJW
aWRlb0Z1bGxzY3JlZW5Nb2RlbE1lZGlhRWxlbWVudDExaGFuZGxlRXZlbnRFUE5TXzIyU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEVQTlNfNUV2ZW50RQogX19aTjdXZWJDb3JlMzVXZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbE1lZGlhRWxlbWVudDE1c2V0TWVkaWFFbGVtZW50RVBOU18xNkhUTUxNZWRpYUVs
ZW1lbnRFCiBfX1pON1dlYkNvcmUzNVdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50
MTV0b2dnbGVQbGF5U3RhdGVFdgotX19aTjdXZWJDb3JlMzVXZWJWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bE1lZGlhRWxlbWVudDE2Ym9ycm93VmlkZW9MYXllckV2Ci1fX1pON1dlYkNvcmUzNVdlYlZpZGVv
RnVsbHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50MTZyZXR1cm5WaWRlb0xheWVyRXYKK19fWk43V2Vi
Q29yZTM1V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxNZWRpYUVsZW1lbnQxOHNldFZpZGVvTGF5ZXJG
cmFtZUVOU185RmxvYXRSZWN0RQorX19aTjdXZWJDb3JlMzVXZWJWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bE1lZGlhRWxlbWVudDIwc2V0VmlkZW9MYXllckdyYXZpdHlFTlNfMjNXZWJWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbDEyVmlkZW9HcmF2aXR5RQogX19aTjdXZWJDb3JlMzVXZWJWaWRlb0Z1bGxzY3JlZW5N
b2RlbE1lZGlhRWxlbWVudDIxcmVxdWVzdEV4aXRGdWxsc2NyZWVuRXYKK19fWk43V2ViQ29yZTM1
V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxNZWRpYUVsZW1lbnQyM3NldFZpZGVvRnVsbHNjcmVlbkxh
eWVyRVA3Q0FMYXllcgogX19aTjdXZWJDb3JlMzVXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbE1lZGlh
RWxlbWVudDRwbGF5RXYKIF9fWk43V2ViQ29yZTM1V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxNZWRp
YUVsZW1lbnQ1cGF1c2VFdgogX19aTjdXZWJDb3JlMzVXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbE1l
ZGlhRWxlbWVudEMyRXYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmlu
ZGV4IDM4Njg0MjgwNDMyNmM1YjRhNjkwYmNmYzAyNmQ1OGM2Y2Y5MGFlNjUuLjAyODQwMDM0ZTg0
MWUyNGMwMTZkMzlmNjY0NjI3MTY2ZTQ1ZTYxY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcApAQCAtMjc2LDYgKzI3Niw5IEBAIEhUTUxNZWRpYUVsZW1lbnQ6OkhU
TUxNZWRpYUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRv
Y3VtCiAgICAgLCBtX2Nsb2NrVGltZUF0TGFzdFVwZGF0ZUV2ZW50KDApCiAgICAgLCBtX2xhc3RU
aW1lVXBkYXRlRXZlbnRNb3ZpZVRpbWUoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjptYXgo
KSkKICAgICAsIG1fbG9hZFN0YXRlKFdhaXRpbmdGb3JTb3VyY2UpCisjaWYgUExBVEZPUk0oSU9T
KQorICAgICwgbV92aWRlb0Z1bGxzY3JlZW5HcmF2aXR5KE1lZGlhUGxheWVyOjpWaWRlb0dyYXZp
dHlSZXNpemVBc3BlY3QpCisjZW5kaWYKICNpZiBFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURF
TykKICAgICAsIG1fcHJveHlXaWRnZXQoMCkKICNlbmRpZgpAQCAtMzE5LDcgKzMyMiw2IEBAIEhU
TUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQmIGRvY3VtCiAjZW5kaWYKICNpZiBQTEFURk9STShJT1MpCiAgICAgLCBt
X3JlcXVlc3RpbmdQbGF5KGZhbHNlKQotICAgICwgbV9wbGF0Zm9ybUxheWVyQm9ycm93ZWQoZmFs
c2UpCiAjZW5kaWYKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgLCBtX3RyYWNrc0FyZVJl
YWR5KHRydWUpCkBAIC00OTQyLDI5ICs0OTQ0LDM1IEBAIFBsYXRmb3JtTWVkaWEgSFRNTE1lZGlh
RWxlbWVudDo6cGxhdGZvcm1NZWRpYSgpIGNvbnN0CiBQbGF0Zm9ybUxheWVyKiBIVE1MTWVkaWFF
bGVtZW50OjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKIHsKICNpZiBQTEFURk9STShJT1MpCi0gICAg
aWYgKG1fcGxhdGZvcm1MYXllckJvcnJvd2VkKQorICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbkxh
eWVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICNlbmRpZgogICAgIHJldHVybiBtX3BsYXll
ciA/IG1fcGxheWVyLT5wbGF0Zm9ybUxheWVyKCkgOiBudWxscHRyOwogfQogCiAjaWYgUExBVEZP
Uk0oSU9TKQotUGxhdGZvcm1MYXllciogSFRNTE1lZGlhRWxlbWVudDo6Ym9ycm93UGxhdGZvcm1M
YXllcigpCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBs
YXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIpCiB7Ci0gICAgQVNTRVJUKCFtX3BsYXRmb3JtTGF5
ZXJCb3Jyb3dlZCk7Ci0gICAgbV9wbGF0Zm9ybUxheWVyQm9ycm93ZWQgPSB0cnVlOwotICAgIGlm
IChyZW5kZXJlcigpKQotICAgICAgICByZW5kZXJlcigpLT51cGRhdGVGcm9tRWxlbWVudCgpOwot
ICAgIHJldHVybiBtX3BsYXllciA/IG1fcGxheWVyLT5wbGF0Zm9ybUxheWVyKCkgOiBudWxscHRy
OworICAgIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXIgPSBwbGF0Zm9ybUxheWVyOworICAgIGlmICgh
bV9wbGF5ZXIpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBtX3BsYXllci0+c2V0VmlkZW9G
dWxsc2NyZWVuTGF5ZXIocGxhdGZvcm1MYXllcik7CisgICAgc2V0TmVlZHNTdHlsZVJlY2FsYyhT
eW50aGV0aWNTdHlsZUNoYW5nZSk7Cit9CisgICAgCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNl
dFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCBmcmFtZSkKK3sKKyAgICBtX3ZpZGVvRnVs
bHNjcmVlbkZyYW1lID0gZnJhbWU7CisgICAgaWYgKG1fcGxheWVyKQorICAgICAgICBtX3BsYXll
ci0+c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoZnJhbWUpOwogfQogCi12b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnJldHVyblBsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcikK
K3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0VmlkZW9GdWxsc2NyZWVuR3Jhdml0eShNZWRpYVBs
YXllcjo6VmlkZW9HcmF2aXR5IGdyYXZpdHkpCiB7Ci0gICAgQVNTRVJUX1VOVVNFRChwbGF0Zm9y
bUxheWVyLCBwbGF0Zm9ybUxheWVyID09IChtX3BsYXllciA/IG1fcGxheWVyLT5wbGF0Zm9ybUxh
eWVyKCkgOiBudWxscHRyKSk7Ci0gICAgQVNTRVJUKG1fcGxhdGZvcm1MYXllckJvcnJvd2VkKTsK
LSAgICBtX3BsYXRmb3JtTGF5ZXJCb3Jyb3dlZCA9IGZhbHNlOwotICAgIGlmIChyZW5kZXJlcigp
KQotICAgICAgICByZW5kZXJlcigpLT51cGRhdGVGcm9tRWxlbWVudCgpOworICAgIG1fdmlkZW9G
dWxsc2NyZWVuR3Jhdml0eSA9IGdyYXZpdHk7CisgICAgaWYgKG1fcGxheWVyKQorICAgICAgICBt
X3BsYXllci0+c2V0VmlkZW9GdWxsc2NyZWVuR3Jhdml0eShncmF2aXR5KTsKIH0KICNlbmRpZgog
CkBAIC01MzQ0LDYgKzUzNTIsMTIgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjcmVhdGVNZWRp
YVBsYXllcigpCiAgICAgICAgIGVucXVldWVQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUNoYW5n
ZWRFdmVudCgpOyAvLyBFbnN1cmUgdGhlIGV2ZW50IGxpc3RlbmVyIGdldHMgYXQgbGVhc3Qgb25l
IGV2ZW50LgogICAgIH0KICNlbmRpZgorICAgIAorI2lmIFBMQVRGT1JNKElPUykKKyAgICBtX3Bs
YXllci0+c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUobV92aWRlb0Z1bGxzY3JlZW5GcmFtZSk7Cisg
ICAgbV9wbGF5ZXItPnNldFZpZGVvRnVsbHNjcmVlbkdyYXZpdHkobV92aWRlb0Z1bGxzY3JlZW5H
cmF2aXR5KTsKKyAgICBtX3BsYXllci0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIobV92aWRlb0Z1
bGxzY3JlZW5MYXllci5nZXQoKSk7CisjZW5kaWYKIH0KIAogI2lmIEVOQUJMRShXRUJfQVVESU8p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IGVhM2Q0ZWZhYWEyMjYy
ODAxNDEzMjlkOTQ3YTRlN2ZmNjJjZTAyOWIuLmM5OWVmOTVlODIxZTMyODY5NWFjM2ZhODBkYzU0
YmFkYzQyMDBmZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC0x
MzQsOCArMTM0LDkgQEAgcHVibGljOgogICAgIFBsYXRmb3JtTWVkaWEgcGxhdGZvcm1NZWRpYSgp
IGNvbnN0OwogICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdDsKICNpZiBQ
TEFURk9STShJT1MpCi0gICAgUGxhdGZvcm1MYXllciogYm9ycm93UGxhdGZvcm1MYXllcigpOwot
ICAgIHZvaWQgcmV0dXJuUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKik7CisgICAgdm9pZCBz
ZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKik7CisgICAgdm9pZCBzZXRWaWRl
b0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3QpOworICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVu
R3Jhdml0eShNZWRpYVBsYXllcjo6VmlkZW9HcmF2aXR5KTsKICNlbmRpZgogCiAgICAgZW51bSBE
ZWxheWVkQWN0aW9uVHlwZSB7CkBAIC03MjgsNiArNzI5LDEyIEBAIHByaXZhdGU6CiAgICAgUmVm
UHRyPEhUTUxTb3VyY2VFbGVtZW50PiBtX2N1cnJlbnRTb3VyY2VOb2RlOwogICAgIFJlZlB0cjxO
b2RlPiBtX25leHRDaGlsZE5vZGVUb0NvbnNpZGVyOwogCisjaWYgUExBVEZPUk0oSU9TKQorICAg
IFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyOworICAgIEZs
b2F0UmVjdCBtX3ZpZGVvRnVsbHNjcmVlbkZyYW1lOworICAgIE1lZGlhUGxheWVyOjpWaWRlb0dy
YXZpdHkgbV92aWRlb0Z1bGxzY3JlZW5HcmF2aXR5OworI2VuZGlmCisKICAgICBPd25QdHI8TWVk
aWFQbGF5ZXI+IG1fcGxheWVyOwogI2lmIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQog
ICAgIFJlZlB0cjxXaWRnZXQ+IG1fcHJveHlXaWRnZXQ7CkBAIC03OTYsNyArODAzLDYgQEAgcHJp
dmF0ZToKIAogI2lmIFBMQVRGT1JNKElPUykKICAgICBib29sIG1fcmVxdWVzdGluZ1BsYXkgOiAx
OwotICAgIGJvb2wgbV9wbGF0Zm9ybUxheWVyQm9ycm93ZWQgOiAxOwogI2VuZGlmCiAKICNpZiBF
TkFCTEUoVklERU9fVFJBQ0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9NZWRpYVBsYXllci5jcHAKaW5kZXggZWI1MjA2MzQ3MTMyMzZmMzgzZTE1YmE0NTc5ZTBkNTQw
YWY5MjZjMS4uNDQwNWUzYTBhNDdhNDg4MmFkYzg3ZDc3ZGVlMzc5OWVmNWJkMDY1YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApAQCAt
NjI0LDYgKzYyNCwyMyBAQCBQbGF0Zm9ybUxheWVyKiBNZWRpYVBsYXllcjo6cGxhdGZvcm1MYXll
cigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+cGxhdGZvcm1MYXllcigpOwogfQor
ICAgIAorI2lmIFBMQVRGT1JNKElPUykKK3ZvaWQgTWVkaWFQbGF5ZXI6OnNldFZpZGVvRnVsbHNj
cmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqIGxheWVyKQoreworICAgIG1fcHJpdmF0ZS0+c2V0Vmlk
ZW9GdWxsc2NyZWVuTGF5ZXIobGF5ZXIpOworfQorCit2b2lkIE1lZGlhUGxheWVyOjpzZXRWaWRl
b0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3QgZnJhbWUpCit7CisgICAgbV9wcml2YXRlLT5zZXRW
aWRlb0Z1bGxzY3JlZW5GcmFtZShmcmFtZSk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXI6OnNldFZp
ZGVvRnVsbHNjcmVlbkdyYXZpdHkoTWVkaWFQbGF5ZXI6OlZpZGVvR3Jhdml0eSBncmF2aXR5KQor
eworICAgIG1fcHJpdmF0ZS0+c2V0VmlkZW9GdWxsc2NyZWVuR3Jhdml0eShncmF2aXR5KTsKK30K
KyNlbmRpZgogCiBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIE1lZGlhUGxheWVyOjpuZXR3b3Jr
U3RhdGUoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmgKaW5kZXggNzQwMjQwNDZjNjQ3YjhkMDdiODFhNWVkZGY2ZmVlYzE0NjcyZWZjZi4uOTgy
NzMyMTA2ZTQ4YzNhY2QxZGI3YTViNTZlMmY5YzJjMWFlY2FjNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBAIC0zMDAsNyArMzAwLDEyIEBA
IHB1YmxpYzoKICAgICBib29sIHJlcXVpcmVzSW1tZWRpYXRlQ29tcG9zaXRpbmcoKSBjb25zdDsK
ICAgICBQbGF0Zm9ybU1lZGlhIHBsYXRmb3JtTWVkaWEoKSBjb25zdDsKICAgICBQbGF0Zm9ybUxh
eWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Q7Ci0KKyNpZiBQTEFURk9STShJT1MpCisgICAgdm9p
ZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKik7CisgICAgdm9pZCBzZXRW
aWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3QpOworICAgIGVudW0gVmlkZW9HcmF2aXR5IHsg
VmlkZW9HcmF2aXR5UmVzaXplLCBWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3QsIFZpZGVvR3Jhdml0
eVJlc2l6ZUFzcGVjdEZpbGwgfTsKKyAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkdyYXZpdHko
VmlkZW9HcmF2aXR5KTsKKyNlbmRpZgogICAgIEludFNpemUgbmF0dXJhbFNpemUoKTsKICAgICBi
b29sIGhhc1ZpZGVvKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNBdWRpbygpIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUu
aAppbmRleCBhMmQ5ODVlZjU4OTEzZmFjOGZlMzFjZThkZjM3MThmN2E5ZWY3NTZjLi41MjkwNjhk
MDE0YjA1ODJhN2RhYzUzMGE1OWVhZGIwNWU0YmY0OTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaApAQCAtNTQsNyAr
NTQsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9QbGF5KCkgeyB9CiAg
ICAgdmlydHVhbCBQbGF0Zm9ybU1lZGlhIHBsYXRmb3JtTWVkaWEoKSBjb25zdCB7IHJldHVybiBO
b1BsYXRmb3JtTWVkaWE7IH0KICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5
ZXIoKSBjb25zdCB7IHJldHVybiAwOyB9Ci0KKyNpZiBQTEFURk9STShJT1MpCisgICAgdmlydHVh
bCB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0KSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuR3Jhdml0eShNZWRpYVBsYXllcjo6VmlkZW9H
cmF2aXR5KSB7IH0KKyNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCBwbGF5KCkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBwYXVzZSgpID0gMDsgICAgCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAppbmRleCA0
YzE2MTM1ZjdhZmQ5OWY0Mjg4ODYxZTAyYWVhOWIyN2YzNjY1MDNjLi4wYzgyZWRmYTBmOGY5ZWM2
OTlhMzM5MzQyZDJmZGUwZTA1MDU2MWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCkBAIC0xNDMs
NiArMTQzLDExIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhaW50KEdyYXBoaWNzQ29u
dGV4dCosIGNvbnN0IEludFJlY3QmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDdXJyZW50RnJh
bWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYpOwogICAgIHZpcnR1
YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0OworI2lmIFBMQVRGT1JNKElP
UykKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXll
ciopOworICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3Qp
OworICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5HcmF2aXR5KE1lZGlhUGxheWVy
OjpWaWRlb0dyYXZpdHkpOworI2VuZGlmCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQWNjZWxl
cmF0ZWRSZW5kZXJpbmcoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBmbG9h
dCBtZWRpYVRpbWVGb3JUaW1lVmFsdWUoZmxvYXQpIGNvbnN0OwogICAgIHZpcnR1YWwgZG91Ymxl
IG1heGltdW1EdXJhdGlvblRvQ2FjaGVNZWRpYVRpbWUoKSBjb25zdCB7IHJldHVybiA1OyB9CkBA
IC0yMzgsNiArMjQzLDExIEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPEFWUGxheWVyPiBtX2F2
UGxheWVyOwogICAgIFJldGFpblB0cjxBVlBsYXllckl0ZW0+IG1fYXZQbGF5ZXJJdGVtOwogICAg
IFJldGFpblB0cjxBVlBsYXllckxheWVyPiBtX3ZpZGVvTGF5ZXI7CisjaWYgUExBVEZPUk0oSU9T
KQorICAgIFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyOwor
ICAgIEZsb2F0UmVjdCBtX3ZpZGVvRnVsbHNjcmVlbkZyYW1lOworICAgIE1lZGlhUGxheWVyOjpW
aWRlb0dyYXZpdHkgbV92aWRlb0Z1bGxzY3JlZW5HcmF2aXR5OworI2VuZGlmCiAgICAgUmV0YWlu
UHRyPFdlYkNvcmVBVkZNb3ZpZU9ic2VydmVyPiBtX29iamNPYnNlcnZlcjsKICAgICBSZXRhaW5Q
dHI8aWQ+IG1fdGltZU9ic2VydmVyOwogICAgIG11dGFibGUgU3RyaW5nIG1fbGFuZ3VhZ2VPZlBy
aW1hcnlBdWRpb1RyYWNrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggYjFmNGE0ZjNjNTJm
YTYyOTM5MDkxMGZhMDM0NGM5ZWY4ZWQ1NzcxMy4uOTVmMjBlZDFhZGE3NjQwNzAwMDAzNGMyYzEy
OTZlYWY5YmRjNGI3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC0xMzQsNiArMTM0LDcg
QEAgU09GVF9MSU5LX1BPSU5URVIoQVZGb3VuZGF0aW9uLCBBVlBsYXllckl0ZW1EaWRQbGF5VG9F
bmRUaW1lTm90aWZpY2F0aW9uLCBOU1N0cmkKIFNPRlRfTElOS19QT0lOVEVSKEFWRm91bmRhdGlv
biwgQVZBc3NldEltYWdlR2VuZXJhdG9yQXBlcnR1cmVNb2RlQ2xlYW5BcGVydHVyZSwgTlNTdHJp
bmcgKikKIFNPRlRfTElOS19QT0lOVEVSKEFWRm91bmRhdGlvbiwgQVZVUkxBc3NldFJlZmVyZW5j
ZVJlc3RyaWN0aW9uc0tleSwgTlNTdHJpbmcgKikKIFNPRlRfTElOS19QT0lOVEVSKEFWRm91bmRh
dGlvbiwgQVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCwgTlNTdHJpbmcgKikKK1NPRlRf
TElOS19QT0lOVEVSKEFWRm91bmRhdGlvbiwgQVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVj
dEZpbGwsIE5TU3RyaW5nICopCiBTT0ZUX0xJTktfUE9JTlRFUihBVkZvdW5kYXRpb24sIEFWTGF5
ZXJWaWRlb0dyYXZpdHlSZXNpemUsIE5TU3RyaW5nICopCiBTT0ZUX0xJTktfUE9JTlRFUihDb3Jl
VmlkZW8sIGtDVlBpeGVsQnVmZmVyUGl4ZWxGb3JtYXRUeXBlS2V5LCBOU1N0cmluZyAqKQogCkBA
IC0xNTQsNiArMTU1LDcgQEAgU09GVF9MSU5LX0NPTlNUQU5UKENvcmVNZWRpYSwga0NNVGltZVpl
cm8sIENNVGltZSkKICNkZWZpbmUgQVZBc3NldEltYWdlR2VuZXJhdG9yQXBlcnR1cmVNb2RlQ2xl
YW5BcGVydHVyZSBnZXRBVkFzc2V0SW1hZ2VHZW5lcmF0b3JBcGVydHVyZU1vZGVDbGVhbkFwZXJ0
dXJlKCkKICNkZWZpbmUgQVZVUkxBc3NldFJlZmVyZW5jZVJlc3RyaWN0aW9uc0tleSBnZXRBVlVS
TEFzc2V0UmVmZXJlbmNlUmVzdHJpY3Rpb25zS2V5KCkKICNkZWZpbmUgQVZMYXllclZpZGVvR3Jh
dml0eVJlc2l6ZUFzcGVjdCBnZXRBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0KCkKKyNk
ZWZpbmUgQVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdEZpbGwgZ2V0QVZMYXllclZpZGVv
R3Jhdml0eVJlc2l6ZUFzcGVjdEZpbGwoKQogI2RlZmluZSBBVkxheWVyVmlkZW9HcmF2aXR5UmVz
aXplIGdldEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemUoKQogI2RlZmluZSBrQ1ZQaXhlbEJ1ZmZl
clBpeGVsRm9ybWF0VHlwZUtleSBnZXRrQ1ZQaXhlbEJ1ZmZlclBpeGVsRm9ybWF0VHlwZUtleSgp
CiAKQEAgLTMxMiw2ICszMTQsOSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYQogTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQyhNZWRpYVBsYXllciogcGxheWVyKQogICAgIDogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uKHBsYXllcikKICAgICAsIG1fd2Vha1B0ckZhY3RvcnkodGhpcykKKyNpZiBQTEFURk9S
TShJT1MpCisgICAgLCBtX3ZpZGVvRnVsbHNjcmVlbkdyYXZpdHkoTWVkaWFQbGF5ZXI6OlZpZGVv
R3Jhdml0eVJlc2l6ZUFzcGVjdCkKKyNlbmRpZgogICAgICwgbV9vYmpjT2JzZXJ2ZXIoYWRvcHRO
UyhbW1dlYkNvcmVBVkZNb3ZpZU9ic2VydmVyIGFsbG9jXSBpbml0V2l0aENhbGxiYWNrOnRoaXNd
KSkKICAgICAsIG1fdmlkZW9GcmFtZUhhc0RyYXduKGZhbHNlKQogICAgICwgbV9oYXZlQ2hlY2tl
ZFBsYXlhYmlsaXR5KGZhbHNlKQpAQCAtNDkxLDYgKzQ5NiwxMiBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZVZpZGVvTGF5ZXIoKQogICAgICAgICB1cGRh
dGVWaWRlb0xheWVyR3Jhdml0eSgpOwogICAgICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVWaWRlb0xheWVyKCVwKSAtIHJldHVybmluZyAl
cCIsIHRoaXMsIG1fdmlkZW9MYXllci5nZXQoKSk7CiAKKyNpZiBQTEFURk9STShJT1MpCisgICAg
ICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbkxheWVyKSB7CisgICAgICAgICAgICBbbV92aWRlb0xh
eWVyIHNldEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgbV92aWRlb0Z1bGxzY3JlZW5GcmFtZS53aWR0
aCgpLCBtX3ZpZGVvRnVsbHNjcmVlbkZyYW1lLmhlaWdodCgpKV07CisgICAgICAgICAgICBbbV92
aWRlb0Z1bGxzY3JlZW5MYXllciBhZGRTdWJsYXllcjptX3ZpZGVvTGF5ZXIuZ2V0KCldOworICAg
ICAgICB9CisjZW5kaWYKICAgICAgICAgcGxheWVyKCktPm1lZGlhUGxheWVyQ2xpZW50KCktPm1l
ZGlhUGxheWVyUmVuZGVyaW5nTW9kZUNoYW5nZWQocGxheWVyKCkpOwogICAgIH0pOwogfQpAQCAt
NzE2LDYgKzcyNyw1MyBAQCBQbGF0Zm9ybUxheWVyKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKICAgICByZXR1cm4gbV92aWRlb0xheWVy
LmdldCgpOwogfQogCisjaWYgUExBVEZPUk0oSU9TKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiB2
aWRlb0Z1bGxzY3JlZW5MYXllcikKK3sKKyAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5MYXllciA9
PSB2aWRlb0Z1bGxzY3JlZW5MYXllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fdmlk
ZW9GdWxsc2NyZWVuTGF5ZXIpCisgICAgICAgW21fdmlkZW9MYXllciByZW1vdmVGcm9tU3VwZXJs
YXllcl07CisKKyAgICBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyID0gdmlkZW9GdWxsc2NyZWVuTGF5
ZXI7CisKKyAgICBpZiAoIW1fdmlkZW9GdWxsc2NyZWVuTGF5ZXIgfHwgIW1fdmlkZW9MYXllcikK
KyAgICAgICAgcmV0dXJuOworCisgICAgW21fdmlkZW9MYXllciBzZXRGcmFtZTpDR1JlY3RNYWtl
KDAsIDAsIG1fdmlkZW9GdWxsc2NyZWVuRnJhbWUud2lkdGgoKSwgbV92aWRlb0Z1bGxzY3JlZW5G
cmFtZS5oZWlnaHQoKSldOworICAgIFttX3ZpZGVvRnVsbHNjcmVlbkxheWVyIGFkZFN1YmxheWVy
Om1fdmlkZW9MYXllci5nZXQoKV07Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0IGZyYW1lKQorewor
ICAgIG1fdmlkZW9GdWxsc2NyZWVuRnJhbWUgPSBmcmFtZTsKKyAgICBpZiAoIW1fdmlkZW9GdWxs
c2NyZWVuTGF5ZXIgfHwgIW1fdmlkZW9MYXllcikKKyAgICAgICAgcmV0dXJuOworICAgIAorICAg
IFttX3ZpZGVvTGF5ZXIgc2V0RnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCBmcmFtZS53aWR0aCgpLCBm
cmFtZS5oZWlnaHQoKSldOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkdyYXZpdHkoTWVkaWFQbGF5ZXI6OlZpZGVvR3Jhdml0
eSBncmF2aXR5KQoreworICAgIG1fdmlkZW9GdWxsc2NyZWVuR3Jhdml0eSA9IGdyYXZpdHk7Cisg
ICAgaWYgKCFtX3ZpZGVvTGF5ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIE5TU3RyaW5nICp2
aWRlb0dyYXZpdHkgPSBBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0OworICAgIGlmIChn
cmF2aXR5ID09IE1lZGlhUGxheWVyOjpWaWRlb0dyYXZpdHlSZXNpemUpCisgICAgICAgIHZpZGVv
R3Jhdml0eSA9IEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemU7CisgICAgZWxzZSBpZiAoZ3Jhdml0
eSA9PSBNZWRpYVBsYXllcjo6VmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0KQorICAgICAgICB2aWRl
b0dyYXZpdHkgPSBBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0OworICAgIGVsc2UgaWYg
KGdyYXZpdHkgPT0gTWVkaWFQbGF5ZXI6OlZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdEZpbGwpCisg
ICAgICAgIHZpZGVvR3Jhdml0eSA9IEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3RGaWxs
OworICAgIGVsc2UKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisKKyAgICBbbV92aWRl
b0xheWVyIHNldFZpZGVvR3Jhdml0eTp2aWRlb0dyYXZpdHldOworfQorI2VuZGlmCisKIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGxhdGZvcm1TZXRWaXNpYmxlKGJv
b2wgaXNWaXNpYmxlKQogewogICAgIFtDQVRyYW5zYWN0aW9uIGJlZ2luXTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
QVZLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlckFWS2l0Lm1tCmluZGV4IGFjOTc1YTQ3YWM3YmI4ODA1N2M5M2QwNmE2MmQ5MWU5
ZTJmMTdmMWYuLmMwMWEzMDExNzNhZjJjZWUwNTk1MjNiNDJiM2NhZjg0ODg0ZDA1YzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyQVZLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQpAQCAtMzIsNiArMzIsNyBAQAogI2ltcG9ydCAi
TG9nZ2luZy5oIgogI2ltcG9ydCAiV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaCIK
ICNpbXBvcnQgIldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50LmgiCisjaW1wb3J0
IDxRdWFydHpDb3JlL0NvcmVBbmltYXRpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZVRo
cmVhZFJ1bi5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTU1LDYgKzU2LDcgQEAg
cHVibGljOgogICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdD4gX2lu
dGVyZmFjZTsKICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxNZWRpYUVsZW1lbnQ+
IF9tb2RlbDsKICAgICBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ2hhbmdlT2JzZXJ2ZXIg
X2NoYW5nZU9ic2VydmVyOworICAgIFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBfdmlkZW9GdWxs
c2NyZWVuTGF5ZXI7CiB9CiAKIC0gKGluc3RhbmNldHlwZSlpbml0CkBAIC04OCwxMyArOTAsMTUg
QEAgcHVibGljOgogICAgIFtzZWxmIHJldGFpbl07IC8vIEJhbGFuY2VkIGJ5IC1yZWxlYXNlIGlu
IGRpZEV4aXRGdWxsc2NyZWVuOgogICAgIAogICAgIFVOVVNFRF9QQVJBTShzY3JlZW4pOworICAg
IF92aWRlb0Z1bGxzY3JlZW5MYXllciA9IFtDQUxheWVyIGxheWVyXTsKICAgICBfaW50ZXJmYWNl
ID0gYWRvcHRSZWYobmV3IFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0KTsKICAgICBf
aW50ZXJmYWNlLT5zZXRXZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcigmX2NoYW5nZU9i
c2VydmVyKTsKICAgICBfbW9kZWwgPSBhZG9wdFJlZihuZXcgV2ViVmlkZW9GdWxsc2NyZWVuTW9k
ZWxNZWRpYUVsZW1lbnQpOwogICAgIF9tb2RlbC0+c2V0V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlKF9pbnRlcmZhY2UuZ2V0KCkpOwogICAgIF9pbnRlcmZhY2UtPnNldFdlYlZpZGVvRnVsbHNj
cmVlbk1vZGVsKF9tb2RlbC5nZXQoKSk7CiAgICAgX21vZGVsLT5zZXRNZWRpYUVsZW1lbnQoX21l
ZGlhRWxlbWVudC5nZXQoKSk7Ci0gICAgX2ludGVyZmFjZS0+ZW50ZXJGdWxsc2NyZWVuKCk7Cisg
ICAgX21vZGVsLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihfdmlkZW9GdWxsc2NyZWVuTGF5ZXIu
Z2V0KCkpOworICAgIF9pbnRlcmZhY2UtPmVudGVyRnVsbHNjcmVlbigqX3ZpZGVvRnVsbHNjcmVl
bkxheWVyLmdldCgpKTsKIH0KIAogLSAodm9pZClleGl0RnVsbHNjcmVlbgpAQCAtMTA5LDEwICsx
MTMsMTEgQEAgcHVibGljOgogLSAodm9pZClkaWRFeGl0RnVsbHNjcmVlbgogewogICAgIFdlYlRo
cmVhZFJ1biheewotICAgICAgICBfbW9kZWwtPnNldE1lZGlhRWxlbWVudChudWxscHRyKTsKICAg
ICAgICAgX2ludGVyZmFjZS0+c2V0V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwobnVsbHB0cik7Ci0g
ICAgICAgIF9pbnRlcmZhY2UtPnNldFdlYlZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKG51
bGxwdHIpOwogICAgICAgICBfbW9kZWwtPnNldFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZShu
dWxscHRyKTsKKyAgICAgICAgX21vZGVsLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihudWxscHRy
KTsKKyAgICAgICAgX21vZGVsLT5zZXRNZWRpYUVsZW1lbnQobnVsbHB0cik7CisgICAgICAgIF9p
bnRlcmZhY2UtPnNldFdlYlZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKG51bGxwdHIpOwog
ICAgICAgICBfbW9kZWwgPSBudWxscHRyOwogICAgICAgICBfaW50ZXJmYWNlID0gbnVsbHB0cjsK
ICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlLmgKaW5kZXggYTljNDA3Mzc2M2FkOTdiYmUzNzI1Y2Rj
NzYyYzVkOWJmNzgwZTZiMC4uZjNlOTFmYjViZDFhOTRjMTk2OWExZWE2NDExYjIwNGQ4MzkwYzUx
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2UuaApAQCAtNDAsOCArNDAsNiBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHNldEN1cnJlbnRUaW1lKGRvdWJsZSBjdXJyZW50VGltZSwgZG91YmxlIGFuY2hv
clRpbWUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UmF0ZShib29sIGlzUGxheWluZywgZmxv
YXQgcGxheWJhY2tSYXRlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFZpZGVvRGltZW5zaW9u
cyhib29sIGhhc1ZpZGVvLCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIHdpbGxMZW5kVmlkZW9MYXllcihQbGF0Zm9ybUxheWVyKikgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBkaWRMZW5kVmlkZW9MYXllcigpID0gMDsKIH07CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUFWS2l0LmgKaW5kZXggODM0NDkwODQwZTdhMzZjZWU1ODUxNWZhNWNlMTQ0MGUxNzlk
NTM0OS4uY2Y4ZjQyMDU5NGE1ZDhmN2ZmYmJlM2IyZTM0ZDAwNGVjZWIwYjgzMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0LmgKQEAgLTQxLDcgKzQxLDcgQEAgT0JKQ19DTEFTUyBBVlBsYXll
clZpZXdDb250cm9sbGVyOwogT0JKQ19DTEFTUyBVSVZpZXdDb250cm9sbGVyOwogT0JKQ19DTEFT
UyBVSVdpbmRvdzsKIE9CSkNfQ0xBU1MgQ0FMYXllcjsKLU9CSkNfQ0xBU1MgV2ViQVZQbGF5ZXJM
YXllcjsKK09CSkNfQ0xBU1MgV2ViQVZWaWRlb0xheWVyOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbDsKQEAgLTYyLDcgKzYyLDcgQEAgY2xhc3Mg
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQKICAgICBSZXRhaW5QdHI8VUlWaWV3Q29u
dHJvbGxlcj4gbV92aWV3Q29udHJvbGxlcjsKICAgICBSZXRhaW5QdHI8VUlXaW5kb3c+IG1fd2lu
ZG93OwogICAgIFJldGFpblB0cjxDQUxheWVyPiBtX3ZpZGVvTGF5ZXI7Ci0gICAgUmV0YWluUHRy
PFdlYkFWUGxheWVyTGF5ZXI+IG1fdmlkZW9MYXllckNvbnRhaW5lcjsKKyAgICBSZXRhaW5QdHI8
V2ViQVZWaWRlb0xheWVyPiBtX3ZpZGVvTGF5ZXJDb250YWluZXI7CiAgICAgV2ViVmlkZW9GdWxs
c2NyZWVuTW9kZWwqIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWw7CiAgICAgV2ViVmlkZW9GdWxsc2Ny
ZWVuQ2hhbmdlT2JzZXJ2ZXIqIG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyOwogICAgICAgICAK
QEAgLTgxLDEwICs4MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0UmF0ZShib29s
IGlzUGxheWluZywgZmxvYXQgcGxheWJhY2tSYXRlKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZv
aWQgc2V0VmlkZW9EaW1lbnNpb25zKGJvb2wgaGFzVmlkZW8sIGZsb2F0IHdpZHRoLCBmbG9hdCBo
ZWlnaHQpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHdpbGxMZW5kVmlkZW9MYXllcihQ
bGF0Zm9ybUxheWVyKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZExlbmRWaWRlb0xh
eWVyKCkgb3ZlcnJpZGU7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZW50ZXJGdWxsc2NyZWVuKCk7Cisg
ICAgdmlydHVhbCB2b2lkIGVudGVyRnVsbHNjcmVlbihQbGF0Zm9ybUxheWVyJik7CiAgICAgdmly
dHVhbCB2b2lkIGV4aXRGdWxsc2NyZWVuKCk7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQubW0KaW5kZXggZWVjNmM5MGRkNTY0ZDMzMmE2MWE2ODFhNzViNWNiNjM1YmU5NGY3MC4uOTcw
NjEwYThhMGQxNThiYmE4YjY1NWM1MDY2MmQwNDY1NTZlOTUwYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdC5tbQpAQCAtMzEsMTggKzMxLDE4IEBACiAjaW1wb3J0ICJXZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VBVktpdC5oIgogCiAjaW1wb3J0ICJMb2dnaW5nLmgiCi0jaW1wb3J0IDxD
b3JlTWVkaWEvQ01UaW1lLmg+Ci0jaW1wb3J0IDxVSUtpdC9VSUtpdC5oPgotI2ltcG9ydCA8V2Vi
Q29yZS9Tb2Z0TGlua2luZy5oPgotI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlVGhyZWFkUnVuLmg+
Ci0jaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0ICJXZWJWaWRlb0Z1bGxzY3JlZW5N
b2RlbC5oIgogI2ltcG9ydCA8QVZLaXQvQVZLaXQuaD4KICNpbXBvcnQgPEFWS2l0L0FWUGxheWVy
Q29udHJvbGxlci5oPgorI2ltcG9ydCA8QVZLaXQvQVZQbGF5ZXJWaWV3Q29udHJvbGxlcl9Qcml2
YXRlLmg+CiAjaW1wb3J0IDxBVktpdC9BVlBsYXllclZpZXdDb250cm9sbGVyX1dlYktpdE9ubHku
aD4KLSNpbXBvcnQgPEFWS2l0L0FWVmlkZW9MYXllci5oPgogI2ltcG9ydCA8QVZLaXQvQVZWYWx1
ZVRpbWluZy5oPgotI2ltcG9ydCA8QVZLaXQvQVZQbGF5ZXJWaWV3Q29udHJvbGxlcl9Qcml2YXRl
Lmg+CisjaW1wb3J0IDxBVktpdC9BVlZpZGVvTGF5ZXIuaD4KKyNpbXBvcnQgPENvcmVNZWRpYS9D
TVRpbWUuaD4KKyNpbXBvcnQgPFVJS2l0L1VJS2l0Lmg+CisjaW1wb3J0IDxXZWJDb3JlL1NvZnRM
aW5raW5nLmg+CisjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVUaHJlYWRSdW4uaD4KKyNpbXBvcnQg
PHd0Zi9SZXRhaW5QdHIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTE3Niwy
MyArMTc2LDYxIEBAIFNPRlRfTElOSyhDb3JlTWVkaWEsIENNVGltZUdldFNlY29uZHMsIEZsb2F0
NjQsIChDTVRpbWUgdGltZSksICh0aW1lKSkKIAogQGVuZAogCi1AaW50ZXJmYWNlIFdlYkFWUGxh
eWVyTGF5ZXIgOiBDQUxheWVyIDxBVlZpZGVvTGF5ZXI+Ci0rKFdlYkFWUGxheWVyTGF5ZXIgKilw
bGF5ZXJMYXllcjsKK0BpbnRlcmZhY2UgV2ViQVZWaWRlb0xheWVyIDogQ0FMYXllciA8QVZWaWRl
b0xheWVyPgorKyhXZWJBVlZpZGVvTGF5ZXIgKil2aWRlb0xheWVyOwogQHByb3BlcnR5IChub25h
dG9taWMpIEFWVmlkZW9MYXllckdyYXZpdHkgdmlkZW9MYXllckdyYXZpdHk7CiBAcHJvcGVydHkg
KG5vbmF0b21pYywgZ2V0dGVyID0gaXNSZWFkeUZvckRpc3BsYXkpIEJPT0wgcmVhZHlGb3JEaXNw
bGF5OwogQHByb3BlcnR5IChub25hdG9taWMpIENHUmVjdCB2aWRlb1JlY3Q7CiAtICh2b2lkKXNl
dFBsYXllckNvbnRyb2xsZXI6KEFWUGxheWVyQ29udHJvbGxlciAqKXBsYXllckNvbnRyb2xsZXI7
CiBAZW5kCiAKLUBpbXBsZW1lbnRhdGlvbiBXZWJBVlBsYXllckxheWVyCi0rKFdlYkFWUGxheWVy
TGF5ZXIgKilwbGF5ZXJMYXllcgorQGltcGxlbWVudGF0aW9uIFdlYkFWVmlkZW9MYXllcgogewot
ICAgIHJldHVybiBbW1tXZWJBVlBsYXllckxheWVyIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07
CisgICAgUmV0YWluUHRyPFdlYkFWUGxheWVyQ29udHJvbGxlcj4gX2F2UGxheWVyQ29udHJvbGxl
cjsKKyAgICBBVlZpZGVvTGF5ZXJHcmF2aXR5IF92aWRlb0xheWVyR3Jhdml0eTsKK30KKworKyhX
ZWJBVlZpZGVvTGF5ZXIgKil2aWRlb0xheWVyCit7CisgICAgcmV0dXJuIFtbW1dlYkFWVmlkZW9M
YXllciBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOwogfQogCiAtICh2b2lkKXNldFBsYXllckNv
bnRyb2xsZXI6KEFWUGxheWVyQ29udHJvbGxlciAqKXBsYXllckNvbnRyb2xsZXIKIHsKLSAgICBV
TlVTRURfUEFSQU0ocGxheWVyQ29udHJvbGxlcik7CisgICAgQVNTRVJUKCFwbGF5ZXJDb250cm9s
bGVyIHx8IFtwbGF5ZXJDb250cm9sbGVyIGlzS2luZE9mQ2xhc3M6W1dlYkFWUGxheWVyQ29udHJv
bGxlciBjbGFzc11dKTsKKyAgICBfYXZQbGF5ZXJDb250cm9sbGVyID0gKFdlYkFWUGxheWVyQ29u
dHJvbGxlciAqKXBsYXllckNvbnRyb2xsZXI7Cit9CisKKy0gKHZvaWQpc2V0Qm91bmRzOihDR1Jl
Y3QpYm91bmRzCit7CisgICAgW3N1cGVyIHNldEJvdW5kczpib3VuZHNdOworICAgIGlmIChbX2F2
UGxheWVyQ29udHJvbGxlciBkZWxlZ2F0ZV0pCisgICAgICAgIFtfYXZQbGF5ZXJDb250cm9sbGVy
IGRlbGVnYXRlXS0+c2V0VmlkZW9MYXllckZyYW1lKEZsb2F0UmVjdCgwLCAwLCBib3VuZHMuc2l6
ZS53aWR0aCwgYm91bmRzLnNpemUuaGVpZ2h0KSk7Cit9CisKKy0gKHZvaWQpc2V0VmlkZW9MYXll
ckdyYXZpdHk6KEFWVmlkZW9MYXllckdyYXZpdHkpdmlkZW9MYXllckdyYXZpdHkKK3sKKyAgICBf
dmlkZW9MYXllckdyYXZpdHkgPSB2aWRlb0xheWVyR3Jhdml0eTsKKyAgICAKKyAgICBpZiAoIVtf
YXZQbGF5ZXJDb250cm9sbGVyIGRlbGVnYXRlXSkKKyAgICAgICAgcmV0dXJuOworCisgICAgV2Vi
Q29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWw6OlZpZGVvR3Jhdml0eSBncmF2aXR5ID0gV2Vi
Q29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWw6OlZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdDsK
KyAgICBpZiAodmlkZW9MYXllckdyYXZpdHkgPT0gQVZWaWRlb0xheWVyR3Jhdml0eVJlc2l6ZSkK
KyAgICAgICAgZ3Jhdml0eSA9IFdlYkNvcmU6OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsOjpWaWRl
b0dyYXZpdHlSZXNpemU7CisgICAgaWYgKHZpZGVvTGF5ZXJHcmF2aXR5ID09IEFWVmlkZW9MYXll
ckdyYXZpdHlSZXNpemVBc3BlY3QpCisgICAgICAgIGdyYXZpdHkgPSBXZWJDb3JlOjpXZWJWaWRl
b0Z1bGxzY3JlZW5Nb2RlbDo6VmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0OworICAgIGVsc2UgaWYg
KHZpZGVvTGF5ZXJHcmF2aXR5ID09IEFWVmlkZW9MYXllckdyYXZpdHlSZXNpemVBc3BlY3RGaWxs
KQorICAgICAgICBncmF2aXR5ID0gV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWw6OlZp
ZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdEZpbGw7CisgICAgZWxzZQorICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAKKyAgICBbX2F2UGxheWVyQ29udHJvbGxlciBkZWxlZ2F0ZV0tPnNl
dFZpZGVvTGF5ZXJHcmF2aXR5KGdyYXZpdHkpOworfQorCistIChBVlZpZGVvTGF5ZXJHcmF2aXR5
KXZpZGVvTGF5ZXJHcmF2aXR5Cit7CisgICAgcmV0dXJuIF92aWRlb0xheWVyR3Jhdml0eTsKIH0K
IAogQGVuZApAQCAtMjczLDIxICszMTEsMTcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdDo6c2V0VmlkZW9EaW1lbnNpb25zKGJvb2wgaGFzVmlkZW8sIGZsb2F0IHcKICAg
ICBwbGF5ZXJDb250cm9sbGVyKCkuY29udGVudERpbWVuc2lvbnMgPSBDR1NpemVNYWtlKHdpZHRo
LCBoZWlnaHQpOwogfQogCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojpl
bnRlckZ1bGxzY3JlZW4oKQotewotICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwtPmJvcnJvd1Zp
ZGVvTGF5ZXIoKTsKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6
ZG9FbnRlckZ1bGxzY3JlZW4oKQordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktp
dDo6ZW50ZXJGdWxsc2NyZWVuKFBsYXRmb3JtTGF5ZXImIHZpZGVvTGF5ZXIpCiB7CiAgICAgX19i
bG9jayBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ+IHByb3RlY3QodGhp
cyk7CiAgICAgCisgICAgbV92aWRlb0xheWVyID0gJnZpZGVvTGF5ZXI7CisgICAgCiAgICAgZGlz
cGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKICAgICAgICAgW21fdmlk
ZW9MYXllciByZW1vdmVGcm9tU3VwZXJsYXllcl07CiAgICAgICAgIAotICAgICAgICBtX3ZpZGVv
TGF5ZXJDb250YWluZXIgPSBbV2ViQVZQbGF5ZXJMYXllciBwbGF5ZXJMYXllcl07Ci0gICAgICAg
IGlmIChtX3ZpZGVvTGF5ZXIuZ2V0KCkpCi0gICAgICAgICAgICBbbV92aWRlb0xheWVyQ29udGFp
bmVyIGFkZFN1YmxheWVyOm1fdmlkZW9MYXllci5nZXQoKV07CisgICAgICAgIG1fdmlkZW9MYXll
ckNvbnRhaW5lciA9IFtXZWJBVlZpZGVvTGF5ZXIgdmlkZW9MYXllcl07CisgICAgICAgIFttX3Zp
ZGVvTGF5ZXJDb250YWluZXIgYWRkU3VibGF5ZXI6bV92aWRlb0xheWVyLmdldCgpXTsKICAgICAg
ICAgCiAgICAgICAgIENHU2l6ZSB2aWRlb1NpemUgPSBwbGF5ZXJDb250cm9sbGVyKCkuY29udGVu
dERpbWVuc2lvbnM7CiAgICAgICAgIENHUmVjdCB2aWRlb1JlY3QgPSBDR1JlY3RNYWtlKDAsIDAs
IHZpZGVvU2l6ZS53aWR0aCwgdmlkZW9TaXplLmhlaWdodCk7CkBAIC0zMTUsMjEgKzM0OSw2IEBA
IHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmRvRW50ZXJGdWxsc2NyZWVu
KCkKICAgICB9KTsKIH0KIAotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6
d2lsbExlbmRWaWRlb0xheWVyKFBsYXRmb3JtTGF5ZXIqIHZpZGVvTGF5ZXIpCi17Ci0gICAgQVNT
RVJUKCFtX3ZpZGVvTGF5ZXIpOwotICAgIAotICAgIG1fdmlkZW9MYXllciA9IHZpZGVvTGF5ZXI7
Ci0gICAgaWYgKCF2aWRlb0xheWVyKQotICAgICAgICBkb0VudGVyRnVsbHNjcmVlbigpOwotfQot
Ci12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpkaWRMZW5kVmlkZW9MYXll
cigpCi17Ci0gICAgaWYgKG1fdmlkZW9MYXllcikKLSAgICAgICAgZG9FbnRlckZ1bGxzY3JlZW4o
KTsKLX0KLQogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZXhpdEZ1bGxz
Y3JlZW4oKQogewogICAgIF9fYmxvY2sgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0PiBwcm90ZWN0KHRoaXMpOwpAQCAtMzQzLDEyICszNjIsMTEgQEAgdm9pZCBXZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZXhpdEZ1bGxzY3JlZW4oKQogICAgICAgICAgICAg
bV9wbGF5ZXJWaWV3Q29udHJvbGxlciA9IG5pbDsKICAgICAgICAgICAgIG1fdmlld0NvbnRyb2xs
ZXIgPSBuaWw7CiAgICAgICAgICAgICBtX3dpbmRvdyA9IG5pbDsKLSAgICAgICAgICAgIGlmICht
X3ZpZGVvTGF5ZXIuZ2V0KCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgW21fdmlk
ZW9MYXllciByZW1vdmVGcm9tU3VwZXJsYXllcl07Ci0gICAgICAgICAgICAgICAgbV92aWRlb0Z1
bGxzY3JlZW5Nb2RlbC0+cmV0dXJuVmlkZW9MYXllcigpOwotICAgICAgICAgICAgICAgIG1fdmlk
ZW9MYXllciA9IG5pbDsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFttX3ZpZGVvTGF5ZXIg
cmVtb3ZlRnJvbVN1cGVybGF5ZXJdOworICAgICAgICAgICAgbV92aWRlb0xheWVyID0gbmlsOwor
ICAgICAgICAgICAgW21fdmlkZW9MYXllckNvbnRhaW5lciByZW1vdmVGcm9tU3VwZXJsYXllcl07
CisgICAgICAgICAgICBtX3ZpZGVvTGF5ZXJDb250YWluZXIgPSBuaWw7CisKICAgICAgICAgICAg
IGlmIChtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcikKICAgICAgICAgICAgICAgICBtX2Z1bGxz
Y3JlZW5DaGFuZ2VPYnNlcnZlci0+ZGlkRXhpdEZ1bGxzY3JlZW4oKTsKICAgICAgICAgICAgIHBy
b3RlY3QuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9X
ZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dl
YlZpZGVvRnVsbHNjcmVlbk1vZGVsLmgKaW5kZXggZjU1ZmFhZWIyYWFlZGNiMzFiNTE1NDA1YzBj
MzlkNmQ3NDIxY2E4MS4uNzliOTJkMTVkYzNhMGM0NDJjYjIxZWQ5OGRmNjg0ZjYxZDc1ZTdlYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVl
bk1vZGVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNj
cmVlbk1vZGVsLmgKQEAgLTI5LDE4ICsyOSwyMSBAQAogCiAjaWYgUExBVEZPUk0oSU9TKQogCisj
aW5jbHVkZSA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2Vi
VmlkZW9GdWxsc2NyZWVuTW9kZWwoKSB7IH07Ci0gICAgdmlydHVhbCB2b2lkIGJvcnJvd1ZpZGVv
TGF5ZXIoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJldHVyblZpZGVvTGF5ZXIoKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHBsYXkoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHBhdXNlKCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVQbGF5U3RhdGUoKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHNlZWtUb1RpbWUoZG91YmxlIHRpbWUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVz
dEV4aXRGdWxsc2NyZWVuKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0xheWVyRnJh
bWUoRmxvYXRSZWN0KSA9IDA7CisgICAgZW51bSBWaWRlb0dyYXZpdHkgeyBWaWRlb0dyYXZpdHlS
ZXNpemUsIFZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCwgVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0
RmlsbCB9OworICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0xheWVyR3Jhdml0eShWaWRlb0dyYXZp
dHkpID0gMDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50LmgKaW5kZXgg
Y2Y3MDc0ZmM0NGZmZTVhMGE4NTRmZGNmMGYwZjU4ODZiOGUxNjAyYS4uZTI2NDcwODEwMzBkMzg2
ZjJjZWY5MzZiZGY2NWExZDE1NzViYzc5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsTWVkaWFFbGVt
ZW50LmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpZiBQTEFURk9STShJT1MpCiAKICNpbmNsdWRlIDxX
ZWJDb3JlL0V2ZW50TGlzdGVuZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1MYXllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvV2Vi
VmlkZW9GdWxsc2NyZWVuTW9kZWwuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC00MSwy
NyArNDIsMzAgQEAgY2xhc3MgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlOwogCiBjbGFzcyBX
ZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbE1lZGlhRWxlbWVudCA6IHB1YmxpYyBXZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbCwgcHVibGljIEV2ZW50TGlzdGVuZXIgewogICAgIFJlZlB0cjxIVE1MTWVkaWFF
bGVtZW50PiBtX21lZGlhRWxlbWVudDsKLSAgICBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gbV9i
b3Jyb3dlZFZpZGVvTGF5ZXI7CisgICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IG1fdmlkZW9G
dWxsc2NyZWVuTGF5ZXI7CiAgICAgYm9vbCBtX2lzTGlzdGVuaW5nOwogICAgIFdlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZSogbV92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2U7CisgICAgRmxvYXRS
ZWN0IG1fdmlkZW9GcmFtZTsKICAgICAKIHB1YmxpYzoKICAgICBXZWJWaWRlb0Z1bGxzY3JlZW5N
b2RlbE1lZGlhRWxlbWVudCgpOwogICAgIHZpcnR1YWwgfldlYlZpZGVvRnVsbHNjcmVlbk1vZGVs
TWVkaWFFbGVtZW50KCk7CiAgICAgdm9pZCBzZXRXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2Uo
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlKiBpbnRlcmZhY2UpIHttX3ZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZSA9IGludGVyZmFjZTt9CiAgICAgdm9pZCBzZXRNZWRpYUVsZW1lbnQoSFRNTE1l
ZGlhRWxlbWVudCopOworICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1M
YXllciopOwogICAgIAogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChXZWJDb3JlOjpTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgV2ViQ29yZTo6RXZlbnQqKSBvdmVycmlkZTsKICAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgcmhzKSBvdmVycmlkZQogICAgICAgICB7
cmV0dXJuIHN0YXRpY19jYXN0PFdlYkNvcmU6OkV2ZW50TGlzdGVuZXIqPih0aGlzKSA9PSAmcmhz
O30KIAotICAgIHZpcnR1YWwgdm9pZCBib3Jyb3dWaWRlb0xheWVyKCkgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIHJldHVyblZpZGVvTGF5ZXIoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZv
aWQgcGxheSgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBwYXVzZSgpIG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVQbGF5U3RhdGUoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IHZvaWQgc2Vla1RvVGltZShkb3VibGUgdGltZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IHJlcXVlc3RFeGl0RnVsbHNjcmVlbigpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzZXRW
aWRlb0xheWVyRnJhbWUoRmxvYXRSZWN0KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
VmlkZW9MYXllckdyYXZpdHkoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWw6OlZpZGVvR3Jhdml0eSkg
b3ZlcnJpZGU7CisKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbE1lZGlhRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbE1lZGlhRWxlbWVudC5tbQpp
bmRleCAwMDBiMDcxN2ViMzEwM2MxYWIxZGI4MGU0MTcyMjRmNjkwYzAyOWI1Li5hYWMzNDZhZDEy
ZDU3NzRiMzU3M2NlYTZhYjdiMDgxZmExNDUxM2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxNZWRpYUVsZW1lbnQubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsTWVk
aWFFbGVtZW50Lm1tCkBAIC00MSw2ICs0MSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxWaWRl
b0VsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvU29mdExpbmtpbmcuaD4KICNpbXBvcnQgPFdl
YkNvcmUvV2ViQ29yZVRocmVhZFJ1bi5oPgorI2ltcG9ydCA8UXVhcnR6Q29yZS9Db3JlQW5pbWF0
aW9uLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwpAQCAtODksNyArOTAsOCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsTWVkaWFF
bGVtZW50OjpzZXRNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogbWVkaQogICAgIGlmIChp
c0hUTUxWaWRlb0VsZW1lbnQobV9tZWRpYUVsZW1lbnQuZ2V0KCkpKSB7CiAgICAgICAgIEhUTUxW
aWRlb0VsZW1lbnQgKnZpZGVvRWxlbWVudCA9IHRvSFRNTFZpZGVvRWxlbWVudChtX21lZGlhRWxl
bWVudC5nZXQoKSk7CiAgICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlLT5zZXRWaWRl
b0RpbWVuc2lvbnModHJ1ZSwgdmlkZW9FbGVtZW50LT52aWRlb1dpZHRoKCksIHZpZGVvRWxlbWVu
dC0+dmlkZW9IZWlnaHQoKSk7Ci0gICAgfQorICAgIH0gZWxzZQorICAgICAgICBtX3ZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZS0+c2V0VmlkZW9EaW1lbnNpb25zKGZhbHNlLCAwLCAwKTsKIH0KIAog
dm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbE1lZGlhRWxlbWVudDo6aGFuZGxlRXZlbnQoV2Vi
Q29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkNvcmU6OkV2ZW50KiBldmVudCkKQEAg
LTEwOSwyOSArMTExLDE2IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxNZWRpYUVsZW1l
bnQ6OmhhbmRsZUV2ZW50KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvCiAgICAgICAgIG1fdmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlLT5zZXRDdXJyZW50VGltZShtX21lZGlhRWxlbWVudC0+Y3Vy
cmVudFRpbWUoKSwgW1tOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXSBzeXN0ZW1VcHRpbWVdKTsK
IH0KIAotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbE1lZGlhRWxlbWVudDo6Ym9ycm93Vmlk
ZW9MYXllcigpCit2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50OjpzZXRW
aWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiB2aWRlb0xheWVyKQogewotICAgIEFT
U0VSVCghbV9ib3Jyb3dlZFZpZGVvTGF5ZXIpOworICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbkxh
eWVyID09IHZpZGVvTGF5ZXIpCisgICAgICAgIHJldHVybjsKICAgICAKLSAgICBfX2Jsb2NrIFJl
ZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbE1lZGlhRWxlbWVudD4gcHJvdGVjdCh0aGlzKTsK
LSAgICBXZWJUaHJlYWRSdW4oXnsKLSAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2Ut
PndpbGxMZW5kVmlkZW9MYXllcihtX21lZGlhRWxlbWVudC0+cGxhdGZvcm1MYXllcigpKTsKLSAg
ICAgICAgbV9ib3Jyb3dlZFZpZGVvTGF5ZXIgPSBtX21lZGlhRWxlbWVudC0+Ym9ycm93UGxhdGZv
cm1MYXllcigpOwotICAgICAgICBpZiAobV9ib3Jyb3dlZFZpZGVvTGF5ZXIuZ2V0KCkpCi0gICAg
ICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZS0+ZGlkTGVuZFZpZGVvTGF5ZXIoKTsK
LSAgICAgICAgcHJvdGVjdC5jbGVhcigpOwotICAgIH0pOwotfQotCi12b2lkIFdlYlZpZGVvRnVs
bHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50OjpyZXR1cm5WaWRlb0xheWVyKCkKLXsKLSAgICBBU1NF
UlQobV9ib3Jyb3dlZFZpZGVvTGF5ZXIuZ2V0KCkpOworICAgIG1fdmlkZW9GdWxsc2NyZWVuTGF5
ZXIgPSB2aWRlb0xheWVyOwogICAgIAogICAgIF9fYmxvY2sgUmVmUHRyPFdlYlZpZGVvRnVsbHNj
cmVlbk1vZGVsTWVkaWFFbGVtZW50PiBwcm90ZWN0KHRoaXMpOwogICAgIFdlYlRocmVhZFJ1bihe
ewotICAgICAgICBBU1NFUlQobV9tZWRpYUVsZW1lbnQpOwotICAgICAgICBtX21lZGlhRWxlbWVu
dC0+cmV0dXJuUGxhdGZvcm1MYXllcihtX2JvcnJvd2VkVmlkZW9MYXllci5nZXQoKSk7Ci0gICAg
ICAgIG1fYm9ycm93ZWRWaWRlb0xheWVyLmNsZWFyKCk7CisgICAgICAgIG1fbWVkaWFFbGVtZW50
LT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihtX3ZpZGVvRnVsbHNjcmVlbkxheWVyLmdldCgpKTsK
ICAgICAgICAgcHJvdGVjdC5jbGVhcigpOwogICAgIH0pOwogfQpAQCAtMTgwLDQgKzE2OSwyNiBA
QCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50OjpyZXF1ZXN0RXhpdEZ1
bGxzY3JlZW4oKQogICAgIH0pOwogfQogCit2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsTWVk
aWFFbGVtZW50OjpzZXRWaWRlb0xheWVyRnJhbWUoRmxvYXRSZWN0IHJlY3QpCit7CisgICAgbV92
aWRlb0ZyYW1lID0gcmVjdDsKKyAgICBbbV92aWRlb0Z1bGxzY3JlZW5MYXllciBzZXRGcmFtZTpD
R1JlY3QocmVjdCldOworICAgIG1fbWVkaWFFbGVtZW50LT5zZXRWaWRlb0Z1bGxzY3JlZW5GcmFt
ZShyZWN0KTsKK30KKwordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbE1lZGlhRWxlbWVudDo6
c2V0VmlkZW9MYXllckdyYXZpdHkoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWw6OlZpZGVvR3Jhdml0
eSBncmF2aXR5KQoreworICAgIE1lZGlhUGxheWVyOjpWaWRlb0dyYXZpdHkgdmlkZW9HcmF2aXR5
ID0gTWVkaWFQbGF5ZXI6OlZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdDsKKyAgICBpZiAoZ3Jhdml0
eSA9PSBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbDo6VmlkZW9HcmF2aXR5UmVzaXplKQorICAgICAg
ICB2aWRlb0dyYXZpdHkgPSBNZWRpYVBsYXllcjo6VmlkZW9HcmF2aXR5UmVzaXplOworICAgIGVs
c2UgaWYgKGdyYXZpdHkgPT0gV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWw6OlZpZGVvR3Jhdml0eVJl
c2l6ZUFzcGVjdCkKKyAgICAgICAgdmlkZW9HcmF2aXR5ID0gTWVkaWFQbGF5ZXI6OlZpZGVvR3Jh
dml0eVJlc2l6ZUFzcGVjdDsKKyAgICBlbHNlIGlmIChncmF2aXR5ID09IFdlYlZpZGVvRnVsbHNj
cmVlbk1vZGVsOjpWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3RGaWxsKQorICAgICAgICB2aWRlb0dy
YXZpdHkgPSBNZWRpYVBsYXllcjo6VmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0RmlsbDsKKyAgICBl
bHNlCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIAorICAgIG1fbWVkaWFFbGVt
ZW50LT5zZXRWaWRlb0Z1bGxzY3JlZW5HcmF2aXR5KHZpZGVvR3Jhdml0eSk7Cit9CisKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVU
cmFuc2FjdGlvbi5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVU
cmFuc2FjdGlvbi5oCmluZGV4IDE2ZDVmNTNkYzY5MTJjYTY0NTRlMjU4NjNiZjkwNjNmNTdjOWI5
ZmEuLjY3YTQzMGY1MjVjNjZhNzI0YmIyY2JlMzNmOWYyOTdiNzY2M2M1NDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9u
LmgKQEAgLTE4MCw5ICsxODAsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBhbGxvd3NVc2VyU2NhbGlu
ZygpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dzVXNlclNjYWxpbmc7IH0KICAgICB2b2lkIHNldEFs
bG93c1VzZXJTY2FsaW5nKGJvb2wgYWxsb3dzVXNlclNjYWxpbmcpIHsgbV9hbGxvd3NVc2VyU2Nh
bGluZyA9IGFsbG93c1VzZXJTY2FsaW5nOyB9CiAgICAgCi0gICAgYm9vbCBpc1ZpZGVvTGF5ZXJJ
RFBlbmRpbmdGdWxsc2NyZWVuKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJ
RCBsYXllcklEKSBjb25zdCB7IHJldHVybiBtX3ZpZGVvTGF5ZXJJRHNQZW5kaW5nRnVsbHNjcmVl
bi5jb250YWlucyhsYXllcklEKTsgfQotICAgIHZvaWQgYWRkVmlkZW9MYXllcklEUGVuZGluZ0Z1
bGxzY3JlZW4oV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEIGxheWVySUQp
IHsgbV92aWRlb0xheWVySURzUGVuZGluZ0Z1bGxzY3JlZW4uYXBwZW5kKGxheWVySUQpOyB9Ci0K
IHByaXZhdGU6CiAgICAgV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEIG1f
cm9vdExheWVySUQ7CiAgICAgTGF5ZXJQcm9wZXJ0aWVzTWFwIG1fY2hhbmdlZExheWVyUHJvcGVy
dGllczsKQEAgLTE5NSw3ICsxOTIsNiBAQCBwcml2YXRlOgogICAgIGRvdWJsZSBtX21pbmltdW1T
Y2FsZUZhY3RvcjsKICAgICBkb3VibGUgbV9tYXhpbXVtU2NhbGVGYWN0b3I7CiAgICAgYm9vbCBt
X2FsbG93c1VzZXJTY2FsaW5nOwotICAgIFZlY3RvcjxXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQ
bGF0Zm9ybUxheWVySUQ+IG1fdmlkZW9MYXllcklEc1BlbmRpbmdGdWxsc2NyZWVuOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
bWFjL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQppbmRleCBkZWViZDIyMzE4ZDg1ZTU0
ZWU1ZWU2MTUzYzBhYzdiMmVlMTk3YzAyLi4yNGIwMjIyNzUwMzM2ZjQ1ZTE3Zjk3OWY5MjVkNDk2
YjE4NWMwYzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxh
eWVyVHJlZVRyYW5zYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVt
b3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0KQEAgLTQxOCw3ICs0MTgsNiBAQCB2b2lkIFJlbW90
ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjplbmNvZGUoSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29k
ZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBtX21heGltdW1TY2FsZUZhY3RvcjsKICAgICBlbmNv
ZGVyIDw8IG1fYWxsb3dzVXNlclNjYWxpbmc7CiAgICAgZW5jb2RlciA8PCBtX3JlbmRlclRyZWVT
aXplOwotICAgIGVuY29kZXIgPDwgbV92aWRlb0xheWVySURzUGVuZGluZ0Z1bGxzY3JlZW47CiB9
CiAKIGJvb2wgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OmRlY29kZShJUEM6OkFyZ3VtZW50
RGVjb2RlciYgZGVjb2RlciwgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24mIHJlc3VsdCkKQEAg
LTQ3Niw5ICs0NzUsNiBAQCBib29sIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpkZWNvZGUo
SVBDOjpBcmd1bWVudERlY29kZXImIGRlY29kZXIsIFJlbW90ZUxheQogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocmVzdWx0Lm1fcmVuZGVyVHJlZVNpemUpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgCi0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubV92aWRlb0xheWVySURzUGVu
ZGluZ0Z1bGxzY3JlZW4pKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICByZXR1cm4gdHJ1
ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdl
UHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlP
Uy5tbQppbmRleCA1MDQ1MTIwZmQ0OGIxYTdkNjRlNGYwNmY5MmMwOTFhZTA4YjkwNDEzLi44M2M0
MDcwOGMyNmY1MWFmNjc4Yjc0NTY0YmZmNmJhN2UwNzg2MzNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpAQCAtMjUyLDggKzI1Miw2IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpzZXRWaWV3cG9ydENvbmZpZ3VyYXRpb25NaW5pbXVtTGF5b3V0
U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ29tbWl0TGF5
ZXJUcmVlKGNvbnN0IFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24mIGxheWVyVHJl
ZVRyYW5zYWN0aW9uKQogewogICAgIG1fcGFnZUNsaWVudC5kaWRDb21taXRMYXllclRyZWUobGF5
ZXJUcmVlVHJhbnNhY3Rpb24pOwotICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIpCi0g
ICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuTWFuYWdlci0+ZGlkQ29tbWl0TGF5ZXJUcmVlKGxheWVy
VHJlZVRyYW5zYWN0aW9uKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdFdpdGhHZXN0
dXJlKGNvbnN0IFdlYkNvcmU6OkludFBvaW50IHBvaW50LCBXZWJDb3JlOjpUZXh0R3JhbnVsYXJp
dHkgZ3JhbnVsYXJpdHksIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3Rh
dGUsIFBhc3NSZWZQdHI8R2VzdHVyZUNhbGxiYWNrPiBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXJQcm94eS5oCmluZGV4IDQzNTNkZmNiY2Q5MGRmOTE3ZTcwMGM5ZTZmZTJkMjMyNTI5NjExY2Qu
LjU0MzJiMjE5MDhkODM2YzU4OGEwYTM1YTBhNTNjOWFiNjEwOTllYzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHkuaApAQCAtNDEsMjEgKzQxLDE4IEBAIE9CSkNfQ0xBU1MgVUlWaWV3OwogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlBhZ2VQcm94eTsKLWNsYXNzIFJlbW90ZUxheWVy
VHJlZVRyYW5zYWN0aW9uOwogCiBjbGFzcyBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkg
OiBwdWJsaWMgV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQsIHB1Ymxp
YyBXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlciwgcHVibGljIFdlYkNv
cmU6OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsLCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVy
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHk+IGNyZWF0ZShXZWJQYWdlUHJveHkmKTsKICAgICB2aXJ0dWFsIH5XZWJWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHkoKTsKIAotICAgIHZvaWQgZGlkQ29tbWl0TGF5ZXJUcmVlKGNv
bnN0IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uJik7Ci0gICAgCiBwcml2YXRlOgogICAgIGV4
cGxpY2l0IFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eShXZWJQYWdlUHJveHkmKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uKiwgSVBDOjpN
ZXNzYWdlRGVjb2RlciYpIG92ZXJyaWRlOwogCiAgICAgLy8gVHJhbnNsYXRlIHRvIEZ1bGxzY3Jl
ZW5JbnRlcmZhY2UKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbExlbmRWaWRlb0xheWVyV2l0aElEKFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCk7CisgICAgdmlydHVhbCB2b2lk
IGVudGVyRnVsbHNjcmVlbldpdGhJRCh1aW50MzJfdCk7CiAKICAgICAvLyBGdWxsc2NyZWVuIE9i
c2VydmVyCiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RFeGl0RnVsbHNjcmVlbigpIG92ZXJyaWRl
OwpAQCAtNjcsMTMgKzY0LDExIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhdXNlKCkg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHRvZ2dsZVBsYXlTdGF0ZSgpIG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgdm9pZCBzZWVrVG9UaW1lKGRvdWJsZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIGJvcnJvd1ZpZGVvTGF5ZXIoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmV0
dXJuVmlkZW9MYXllcigpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0xheWVy
RnJhbWUoV2ViQ29yZTo6RmxvYXRSZWN0KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
VmlkZW9MYXllckdyYXZpdHkoV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWw6OlZpZGVv
R3Jhdml0eSkgb3ZlcnJpZGU7CiAKICAgICBXZWJQYWdlUHJveHkqIG1fcGFnZTsKLSAgICBib29s
IG1fZW50ZXJGdWxsc2NyZWVuQWZ0ZXJWaWRlb0xheWVyVW5wYXJlbnRlZFRyYW5zYWN0aW9uOwot
ICAgIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCBtX3ZpZGVvTGF5ZXJJ
RDsKLSAgICBSZXRhaW5QdHI8VUlWaWV3PiBtX3ZpZGVvVmlldzsKKyAgICBSZXRhaW5QdHI8UGxh
dGZvcm1MYXllcj4gbV9sYXllckhvc3Q7CiB9OwogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9p
b3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDJjNzU3
NGE5NzZhM2I0ZDI3NTY0OGVjNDM1ZjJjMWY4M2JiYTM5ZWUuLjNlY2EyMTgzMGU3ZTk1ODY2MTFj
YTI0ZDFkNjM1ZDg0MDg3ODZlZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
Lm1lc3NhZ2VzLmluCkBAIC0yNiw4ICsyNiw3IEBAIG1lc3NhZ2VzIC0+IFdlYlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eSB7CiAgICAgU2V0VmlkZW9EaW1lbnNpb25zKGJvb2wgaGFzVmlkZW8s
IHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQpCiAgICAgU2V0RHVyYXRpb24oZG91Ymxl
IGR1cmF0aW9uKQogICAgIFNldFJhdGUoYm9vbCBpc1BsYXlpbmcsIGRvdWJsZSByYXRlKQotICAg
IEVudGVyRnVsbHNjcmVlbigpCi0gICAgV2lsbExlbmRWaWRlb0xheWVyV2l0aElEKFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCB2aWRlb0xheWVySUQpCisgICAgRW50ZXJG
dWxsc2NyZWVuV2l0aElEKHVpbnQzMl90IHZpZGVvTGF5ZXJJRCkKICAgICBFeGl0RnVsbHNjcmVl
bigpCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3Mv
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0KaW5kZXggODVkYTFiOWVj
MDIxZTAyMDc0ZjlkOWI3MTRmNTk0YmQxYTA2NjM4Yy4uYjVhZWU1ZTYyYTVkMGY5MTUwYmI4YmFk
ZjU2NzNkMmZjYTRkNGVhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lv
cy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0KQEAgLTI4LDE0
ICsyOCwxMiBAQAogCiAjaWYgUExBVEZPUk0oSU9TKQogCi0jaW5jbHVkZSAiRHJhd2luZ0FyZWFQ
cm94eS5oIgotI2luY2x1ZGUgIlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkuaCIKLSNp
bmNsdWRlICJSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5oIgogI2luY2x1ZGUgIldlYlBhZ2VQ
cm94eS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgIldlYlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCi0jaW5jbHVkZSA8VUlLaXQvVUlWaWV3Lmg+CisjaW5j
bHVkZSA8UXVhcnR6Q29yZS9Db3JlQW5pbWF0aW9uLmg+CisjaW5jbHVkZSA8V2ViS2l0U3lzdGVt
SW50ZXJmYWNlLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC00OCw4ICs0Niw2
IEBAIFBhc3NSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5PiBXZWJWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmNyZWF0CiAKIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eTo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSkK
ICAgICA6IG1fcGFnZSgmcGFnZSkKLSAgICAsIG1fZW50ZXJGdWxsc2NyZWVuQWZ0ZXJWaWRlb0xh
eWVyVW5wYXJlbnRlZFRyYW5zYWN0aW9uKGZhbHNlKQotICAgICwgbV92aWRlb0xheWVySUQoMCkK
IHsKICAgICBtX3BhZ2UtPnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6Oldl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3Bh
Z2UtPnBhZ2VJRCgpLCAqdGhpcyk7CiAgICAgc2V0V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwodGhp
cyk7CkBAIC02MSwyMiArNTcsMTEgQEAgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Ojp+
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5KCkKICAgICBtX3BhZ2UtPnByb2Nlc3MoKS5y
ZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KIAotdm9p
ZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmRpZENvbW1pdExheWVyVHJlZShjb25z
dCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbiYgbGF5ZXJUcmVlVHJhbnNhY3Rpb24pCit2b2lk
IFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZW50ZXJGdWxsc2NyZWVuV2l0aElEKHVp
bnQzMl90IHZpZGVvTGF5ZXJJRCkKIHsKLSAgICBpZiAobV9lbnRlckZ1bGxzY3JlZW5BZnRlclZp
ZGVvTGF5ZXJVbnBhcmVudGVkVHJhbnNhY3Rpb24gJiYgbGF5ZXJUcmVlVHJhbnNhY3Rpb24uaXNW
aWRlb0xheWVySURQZW5kaW5nRnVsbHNjcmVlbihtX3ZpZGVvTGF5ZXJJRCkpIHsKLSAgICAgICAg
bV9lbnRlckZ1bGxzY3JlZW5BZnRlclZpZGVvTGF5ZXJVbnBhcmVudGVkVHJhbnNhY3Rpb24gPSBm
YWxzZTsKLSAgICAgICAgW21fdmlkZW9WaWV3IHJlbW92ZUZyb21TdXBlcnZpZXddOwotICAgICAg
ICBkaWRMZW5kVmlkZW9MYXllcigpOwotICAgIH0KLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHk6OndpbGxMZW5kVmlkZW9MYXllcldpdGhJRChHcmFwaGljc0xheWVyOjpQ
bGF0Zm9ybUxheWVySUQgdmlkZW9MYXllcklEKQotewotICAgIFJlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhUHJveHkqIHJlbW90ZURyYXdpbmdBcmVhUHJveHkgPSB0b1JlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhUHJveHkobV9wYWdlLT5kcmF3aW5nQXJlYSgpKTsKLSAgICBtX3ZpZGVvVmlldyA9
IHJlbW90ZURyYXdpbmdBcmVhUHJveHktPnJlbW90ZUxheWVyVHJlZUhvc3QoKS5nZXRMYXllcih2
aWRlb0xheWVySUQpOwotICAgIHdpbGxMZW5kVmlkZW9MYXllcihtX3ZpZGVvVmlldy5nZXQoKS5s
YXllcik7Ci0gICAgbV92aWRlb0xheWVySUQgPSB2aWRlb0xheWVySUQ7Ci0gICAgbV9lbnRlckZ1
bGxzY3JlZW5BZnRlclZpZGVvTGF5ZXJVbnBhcmVudGVkVHJhbnNhY3Rpb24gPSB0cnVlOworICAg
IEFTU0VSVCh2aWRlb0xheWVySUQpOworICAgIG1fbGF5ZXJIb3N0ID0gV0tNYWtlUmVuZGVyTGF5
ZXIodmlkZW9MYXllcklEKTsKKyAgICBlbnRlckZ1bGxzY3JlZW4oKm1fbGF5ZXJIb3N0LmdldCgp
KTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnJlcXVlc3RFeGl0
RnVsbHNjcmVlbigpCkBAIC04Nyw2ICs3Miw4IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5OjpyZXF1ZXN0RXhpdEZ1bGxzY3JlZW4oKQogdm9pZCBXZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHk6OmRpZEV4aXRGdWxsc2NyZWVuKCkKIHsKICAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkRpZEV4aXRGdWxsc2NyZWVuKCks
IG1fcGFnZS0+cGFnZUlEKCkpOworICAgIFttX2xheWVySG9zdCByZW1vdmVGcm9tU3VwZXJsYXll
cl07CisgICAgbV9sYXllckhvc3QuY2xlYXIoKTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHk6OmRpZEVudGVyRnVsbHNjcmVlbigpCkBAIC0xMTMsMTYgKzEwMCwxNSBA
QCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6c2Vla1RvVGltZShkb3VibGUg
dGltZSkKIHsKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXI6OlNlZWtUb1RpbWUodGltZSksIG1fcGFnZS0+cGFnZUlEKCkpOwogfQotICAgIAotdm9p
ZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmJvcnJvd1ZpZGVvTGF5ZXIoKQorCit2
b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6c2V0VmlkZW9MYXllckZyYW1lKFdl
YkNvcmU6OkZsb2F0UmVjdCBmcmFtZSkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6Oldl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkJvcnJvd1ZpZGVvTGF5ZXIoKSwgbV9wYWdlLT5wYWdl
SUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyOjpTZXRWaWRlb0xheWVyRnJhbWUoZnJhbWUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KIAot
dm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnJldHVyblZpZGVvTGF5ZXIoKQor
dm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnNldFZpZGVvTGF5ZXJHcmF2aXR5
KFdlYkNvcmU6OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsOjpWaWRlb0dyYXZpdHkgZ3Jhdml0eSkK
IHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
OlJldHVyblZpZGVvTGF5ZXIoKSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci0gICAgbV92aWRlb1ZpZXcu
Y2xlYXIoKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXI6OlNldFZpZGVvTGF5ZXJHcmF2aXR5RW51bSgodW5zaWduZWQpZ3Jhdml0eSksIG1fcGFn
ZS0+cGFnZUlEKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2NzMxN2E3YmIw
NjEyMGFjNjNmOTY4Nzg5YjA0NTg1NzFhMzM4N2M2Li5lMzA1YTZhNWI4YzcwNGE3M2QzZTc2ZmU2
ODZlNjAyNzc4ZTMxMGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC02NzcsNyArNjc3LDcgQEAKIAkJM0Y4N0I5QzAxNTg5NDBE
ODAwOTBGRjYyIC8qIFdlYkNvbG9yUGlja2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzRjg3QjlCRjE1ODk0MEQ4MDA5MEZGNjIgLyogV2ViQ29sb3JQ
aWNrZXIuaCAqLzsgfTsKIAkJM0Y4ODlEMTQxODg3NzhDOTAwRkVBREFGIC8qIFdlYlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDNGODg5RDEyMTg4Nzc4QzkwMEZFQURBRiAvKiBXZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHkubW0gKi87IH07CiAJCTNGODg5RDE1MTg4Nzc4QzkwMEZFQURBRiAvKiBX
ZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDNGODg5RDEzMTg4Nzc4QzkwMEZFQURBRiAvKiBXZWJWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaCAqLzsgfTsKLQkJM0Y4ODlEMTcxODg3ODU5MzAwRkVB
REFGIC8qIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gM0Y4ODlEMEQxODg3Njk5QzAwRkVBREFGIC8qIFdl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuY3BwICovOyB9OworCQkzRjg4OUQxNzE4ODc4NTkzMDBG
RUFEQUYgLyogV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDNGODg5RDBEMTg4NzY5OUMwMEZFQURBRiAvKiBX
ZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tICovOyB9OwogCQk0RjYwMTQzMjE1NUM1QUEyMDAx
RkJERTAgLyogQmxvY2tpbmdSZXNwb25zZU1hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNEY2MDE0MzAxNTVDNUEzMjAwMUZCREUwIC8qIEJsb2NraW5n
UmVzcG9uc2VNYXAuaCAqLzsgfTsKIAkJNTEwMjFFOUMxMkIxNjc4ODAwNUMwMzNDIC8qIFdlYkNv
bnRleHRNZW51Q2xpZW50TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTEwMjFFOUIxMkIxNjc4ODAwNUMwMzNDIC8qIFdlYkNvbnRleHRNZW51Q2xp
ZW50TWFjLm1tICovOyB9OwogCQk1MTAzMkYxODE4MEY3M0JCMDA5NjFCQjcgLyogV2ViVG9EYXRh
YmFzZVByb2Nlc3NDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxMDMyRjE2MTgwRjczQkIwMDk2MUJCNyAvKiBXZWJUb0RhdGFiYXNl
UHJvY2Vzc0Nvbm5lY3Rpb24uY3BwICovOyB9OwpAQCAtMjQ0Miw3ICsyNDQyLDcgQEAKIAkJM0Y4
N0I5QkExNTg5M0Y2MzAwOTBGRjYyIC8qIFdlYkNvbG9yQ2hvb3Nlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb2xvckNob29zZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkzRjg3QjlCQjE1ODkzRjYzMDA5MEZGNjIgLyogV2ViQ29sb3JD
aG9vc2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvbG9yQ2hvb3Nl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzRjg3QjlCRjE1ODk0MEQ4MDA5MEZG
NjIgLyogV2ViQ29sb3JQaWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViQ29sb3JQaWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJM0Y4ODlEMEQx
ODg3Njk5QzAwRkVBREFGIC8qIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5j
cHA7IHBhdGggPSBpb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTNGODg5RDBEMTg4NzY5OUMwMEZFQURBRiAvKiBXZWJWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1l
ID0gV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbTsgcGF0aCA9IGlvcy9XZWJWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzRjg4OUQwRTE4
ODc2OTlDMDBGRUFEQUYgLyogV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmg7IHBhdGgg
PSBpb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkzRjg4OUQxMDE4ODc3MTAwMDBGRUFEQUYgLyogV2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBXZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyLm1lc3NhZ2VzLmluOyBwYXRoID0gaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXIubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTNGODg5RDEyMTg4
Nzc4QzkwMEZFQURBRiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHkubW07IHBhdGggPSBpb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDM3Niw3ICs0Mzc2LDcgQEAKIAkJMkRB
OTQ0QjExODg0RTlERjAwRUQ4NkRCIC8qIGlvcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwog
CQkJY2hpbGRyZW4gPSAoCi0JCQkJM0Y4ODlEMEQxODg3Njk5QzAwRkVBREFGIC8qIFdlYlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXIuY3BwICovLAorCQkJCTNGODg5RDBEMTg4NzY5OUMwMEZFQURBRiAv
KiBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tICovLAogCQkJCTNGODg5RDBFMTg4NzY5OUMw
MEZFQURBRiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmggKi8sCiAJCQkJM0Y4ODlEMTAx
ODg3NzEwMDAwRkVBREFGIC8qIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubWVzc2FnZXMuaW4g
Ki8sCiAJCQkpOwpAQCAtODQ4NCw3ICs4NDg0LDcgQEAKIAkJCQk1MUZDQjE4ODE3QkJGRTAzMDAz
OTRDRDggLyogU3luY2hyb25vdXNOZXR3b3JrTG9hZGVyQ2xpZW50LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTNGNDE4RUZCMTg4N0JEOTcwMDI3OTVGRCAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNENTk3RDYx
MTJCNTZEQzAwRUM4QzIzIC8qIFdLUGFnZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkzRjg4OUQx
NzE4ODc4NTkzMDBGRUFEQUYgLyogV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQkzRjg4OUQxNzE4ODc4NTkzMDBGRUFEQUYgLyogV2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDN0I2MzM4MTJBNDVBQkEwMEQxNzRB
NCAvKiBXS1BhZ2VHcm91cC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0UxN0I3RDEzODFGMTE3
MDAxMkE2NDEgLyogV0tQYWdlUHJpdmF0ZU1hYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzEz
NUFBODE3M0IwQkNBMDA1ODZBRTIgLyogV0tQbHVnaW5JbmZvcm1hdGlvbi5jcHAgaW4gU291cmNl
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApp
bmRleCA0M2NmNTgyMDk3NjI0ZjhlNWI5MjY5MWQyM2RiNzQ5MjExZmVhOTI2Li44NmY3YzljZmQx
MjFjYzU5NzBmN2Y5YmM1YWRmYjE3YzUzYzIzYzEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0yNjQzLDggKzI2NDMsNiBAQCB2b2lkIFdl
YlBhZ2U6OndpbGxDb21taXRMYXllclRyZWUoUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24mIGxh
eWVyVHJhbnNhY3Rpb24pCiAgICAgbGF5ZXJUcmFuc2FjdGlvbi5zZXRNaW5pbXVtU2NhbGVGYWN0
b3IobWluaW11bVBhZ2VTY2FsZUZhY3RvcigpKTsKICAgICBsYXllclRyYW5zYWN0aW9uLnNldE1h
eGltdW1TY2FsZUZhY3RvcihtYXhpbXVtUGFnZVNjYWxlRmFjdG9yKCkpOwogICAgIGxheWVyVHJh
bnNhY3Rpb24uc2V0QWxsb3dzVXNlclNjYWxpbmcoYWxsb3dzVXNlclNjYWxpbmcoKSk7Ci0gICAg
aWYgKG1fdmlkZW9GdWxsc2NyZWVuTWFuYWdlcikKLSAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyLT53aWxsQ29tbWl0TGF5ZXJUcmVlKGxheWVyVHJhbnNhY3Rpb24pOwogI2VuZGlmCiB9
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvaW9zL1dlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9pb3Mv
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGE5Yzg0NmEwMDRlZTkwMjRjMjE3YjExNTlkNDUyYzU0NTZkZTc0Y2MuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5jcHAKKysrIC9kZXYvbnVsbApAQCAt
MSwxODYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oIgotCi0jaWYgUExBVEZPUk0oSU9TKQotCi0jaW5j
bHVkZSAiUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaCIKLSNpbmNsdWRlICJXZWJQYWdlLmgi
Ci0jaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgotI2luY2x1ZGUgIldlYlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJNZXNzYWdlcy5oIgotI2luY2x1ZGUgIldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eU1lc3NhZ2VzLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9FdmVudC5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvRXZlbnROYW1lcy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvSFRNTFZpZGVvRWxlbWVudC5oPgot
I2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1DQUxheWVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9T
ZXR0aW5ncy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvV2ViQ29yZVRocmVhZFJ1bi5oPgotCi11c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0gICAgCi1QYXNzUmVm
UHRyPFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI+IFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
OmNyZWF0ZShQYXNzUmVmUHRyPFdlYlBhZ2U+IHBhZ2UpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKHBhZ2UpKTsKLX0KLQotV2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlcjo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcihQYXNzUmVmUHRyPFdlYlBh
Z2U+IHBhZ2UpCi0gICAgOiBtX3BhZ2UocGFnZS5nZXQoKSkKLSAgICAsIG1fc2VuZFVucGFyZW50
VmlkZW9MYXllclRyYW5zYWN0aW9uKGZhbHNlKQotICAgICwgbV9pc0FuaW1hdGluZyhmYWxzZSkK
LSAgICAsIG1fdGFyZ2V0SXNGdWxsc2NyZWVuKGZhbHNlKQotICAgICwgbV9pc0Z1bGxzY3JlZW4o
ZmFsc2UpCi17Ci0gICAgc2V0V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlKHRoaXMpOwotICAg
IFdlYlByb2Nlc3M6OnNoYXJlZCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBwYWdlLT5wYWdlSUQo
KSwgKnRoaXMpOwotfQotCi1XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjp+V2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlcigpCi17Ci0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucmVtb3ZlTWVzc2Fn
ZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCksIG1fcGFnZS0+cGFnZUlEKCkpOwotfQotCi12b2lkIFdlYlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6OndpbGxDb21taXRMYXllclRyZWUoUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rp
b24mIHRyYW5zYWN0aW9uKQotewotICAgIGlmIChtX3NlbmRVbnBhcmVudFZpZGVvTGF5ZXJUcmFu
c2FjdGlvbikgewotICAgICAgICB0cmFuc2FjdGlvbi5hZGRWaWRlb0xheWVySURQZW5kaW5nRnVs
bHNjcmVlbihtX3BsYXRmb3JtQ0FMYXllci0+bGF5ZXJJRCgpKTsKLSAgICAgICAgbV9zZW5kVW5w
YXJlbnRWaWRlb0xheWVyVHJhbnNhY3Rpb24gPSBmYWxzZTsKLSAgICB9Ci19Ci0gICAgCi1ib29s
IFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzRnVsbHNjcmVlbihjb25zdCBOb2Rl
KiBub2RlKSBjb25zdAotewotICAgIGlmICghU2V0dGluZ3M6OmF2S2l0RW5hYmxlZCgpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGlzSFRNTFZpZGVvRWxlbWVudChub2RlKTsK
LX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjplbnRlckZ1bGxzY3JlZW5Gb3JO
b2RlKE5vZGUqIG5vZGUpCi17Ci0gICAgQVNTRVJUKG5vZGUpOwotICAgIG1fbm9kZSA9IG5vZGU7
Ci0gICAgbV90YXJnZXRJc0Z1bGxzY3JlZW4gPSB0cnVlOwotICAgIAotICAgIGlmIChtX2lzQW5p
bWF0aW5nKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgbV9pc0FuaW1hdGluZyA9IHRydWU7
Ci0gICAgc2V0TWVkaWFFbGVtZW50KHRvSFRNTE1lZGlhRWxlbWVudChub2RlKSk7Ci0gICAgZW50
ZXJGdWxsc2NyZWVuKCk7Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZXhp
dEZ1bGxzY3JlZW5Gb3JOb2RlKE5vZGUqKQotewotICAgIG1fbm9kZS5jbGVhcigpOwotICAgIG1f
dGFyZ2V0SXNGdWxsc2NyZWVuID0gZmFsc2U7Ci0gICAgCi0gICAgaWYgKG1faXNBbmltYXRpbmcp
Ci0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBtX2lzQW5pbWF0aW5nID0gdHJ1ZTsKLSAgICBl
eGl0RnVsbHNjcmVlbigpOwotfQotCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnNl
dER1cmF0aW9uKGRvdWJsZSBkdXJhdGlvbikKLXsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0RHVyYXRpb24oZHVyYXRpb24pLCBt
X3BhZ2UtPnBhZ2VJRCgpKTsKLX0KLSAgICAKLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdl
cjo6c2V0Q3VycmVudFRpbWUoZG91YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUgYW5jaG9yVGltZSkK
LXsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eTo6U2V0Q3VycmVudFRpbWUoY3VycmVudFRpbWUsIGFuY2hvclRpbWUpLCBtX3BhZ2UtPnBh
Z2VJRCgpKTsKLX0KLSAgICAKLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c2V0UmF0
ZShib29sIGlzUGxheWluZywgZmxvYXQgcGxheWJhY2tSYXRlKQotewotICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXRSYXRlKGlzUGxh
eWluZywgcGxheWJhY2tSYXRlKSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci19Ci0KLXZvaWQgV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlcjo6c2V0VmlkZW9EaW1lbnNpb25zKGJvb2wgaGFzVmlkZW8sIGZs
b2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpCi17Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldFZpZGVvRGltZW5zaW9ucyhoYXNWaWRl
bywgd2lkdGgsIGhlaWdodCksIG1fcGFnZS0+cGFnZUlEKCkpOwotfQotICAgIAotdm9pZCBXZWJW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjp3aWxsTGVuZFZpZGVvTGF5ZXIoUGxhdGZvcm1MYXllciog
dmlkZW9MYXllcikKLXsKLSAgICBtX3BsYXRmb3JtQ0FMYXllciA9IFBsYXRmb3JtQ0FMYXllcjo6
cGxhdGZvcm1DQUxheWVyKHZpZGVvTGF5ZXIpOwotICAgIG1fc2VuZFVucGFyZW50VmlkZW9MYXll
clRyYW5zYWN0aW9uID0gISFtX3BsYXRmb3JtQ0FMYXllcjsKLSAgICAKLSAgICBtX3BhZ2UtPnNl
bmQoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6V2lsbExlbmRWaWRl
b0xheWVyV2l0aElEKG1fcGxhdGZvcm1DQUxheWVyID8gbV9wbGF0Zm9ybUNBTGF5ZXItPmxheWVy
SUQoKSA6IDApLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLX0KLSAgICAKLXZvaWQgV2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlcjo6ZGlkTGVuZFZpZGVvTGF5ZXIoKQotewotICAgIC8vIG5vLW9wCi0gICAg
Ly8gdGhpcyB3aWxsIGJlIHNlbnQgdGhyb3VnaCBhIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9u
Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZW50ZXJGdWxsc2NyZWVuKCkK
LXsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eTo6RW50ZXJGdWxsc2NyZWVuKCksIG1fcGFnZS0+cGFnZUlEKCkpOwotfQotICAgIAotdm9p
ZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpleGl0RnVsbHNjcmVlbigpCi17Ci0gICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkV4aXRG
dWxsc2NyZWVuKCksIG1fcGFnZS0+cGFnZUlEKCkpOwotfQotICAgIAotdm9pZCBXZWJWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyOjpkaWRFbnRlckZ1bGxzY3JlZW4oKQotewotICAgIG1faXNBbmltYXRp
bmcgPSBmYWxzZTsKLSAgICBtX2lzRnVsbHNjcmVlbiA9IGZhbHNlOwotICAgIAotICAgIGlmICht
X3RhcmdldElzRnVsbHNjcmVlbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgX19ibG9jayBSZWZQ
dHI8V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxNZWRpYUVsZW1lbnQ+IHByb3RlY3QodGhpcyk7Ci0g
ICAgV2ViVGhyZWFkUnVuKF4gewotICAgICAgICBleGl0RnVsbHNjcmVlbkZvck5vZGUobV9ub2Rl
LmdldCgpKTsKLSAgICAgICAgcHJvdGVjdC5jbGVhcigpOwotICAgIH0pOwotfQotCi12b2lkIFdl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZEV4aXRGdWxsc2NyZWVuKCkKLXsKLSAgICBtX2lz
QW5pbWF0aW5nID0gZmFsc2U7Ci0gICAgbV9pc0Z1bGxzY3JlZW4gPSBmYWxzZTsKLQotICAgIHNl
dE1lZGlhRWxlbWVudChudWxscHRyKTsKLQotICAgIGlmICghbV90YXJnZXRJc0Z1bGxzY3JlZW4p
Ci0gICAgICAgIHJldHVybjsKLQotICAgIF9fYmxvY2sgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVl
bk1vZGVsTWVkaWFFbGVtZW50PiBwcm90ZWN0KHRoaXMpOwotICAgIFdlYlRocmVhZFJ1biheIHsK
LSAgICAgICAgZW50ZXJGdWxsc2NyZWVuRm9yTm9kZShtX25vZGUuZ2V0KCkpOwotICAgICAgICBw
cm90ZWN0LmNsZWFyKCk7Ci0gICAgfSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0j
ZW5kaWYgLy8gUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oCmluZGV4IGI4MGFkZGZjZGZl
M2VmMDJiNDMyMjYwNDJmNGM3Mzc0Y2JjMzZlZDYuLjQ2NmQ3MjQwMDExNTc5NjU3ZWI1NTVkMTJj
ODczNWQ1OGM2ZmRiNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvaW9z
L1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmgKQEAgLTQ3LDggKzQ3LDggQEAgY2xh
c3MgTm9kZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIExheWVySG9zdGluZ0NvbnRl
eHQ7CiBjbGFzcyBXZWJQYWdlOwotY2xhc3MgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb247CiAK
IGNsYXNzIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIgOiBwdWJsaWMgV2ViQ29yZTo6V2ViVmlk
ZW9GdWxsc2NyZWVuTW9kZWxNZWRpYUVsZW1lbnQsIHB1YmxpYyBXZWJDb3JlOjpXZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2UsIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogcHVibGlj
OgpAQCAtNTcsOCArNTcsNiBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24qLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CiAgICAgCi0gICAg
dm9pZCB3aWxsQ29tbWl0TGF5ZXJUcmVlKFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uJik7Ci0K
ICAgICBib29sIHN1cHBvcnRzRnVsbHNjcmVlbihjb25zdCBXZWJDb3JlOjpOb2RlKikgY29uc3Q7
CiAgICAgdm9pZCBlbnRlckZ1bGxzY3JlZW5Gb3JOb2RlKFdlYkNvcmU6Ok5vZGUqKTsKICAgICB2
b2lkIGV4aXRGdWxsc2NyZWVuRm9yTm9kZShXZWJDb3JlOjpOb2RlKik7CkBAIC03MiwyMSArNzAs
MTUgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJyZW50VGltZShkb3VibGUg
Y3VycmVudFRpbWUsIGRvdWJsZSBhbmNob3JUaW1lKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZv
aWQgc2V0UmF0ZShib29sIGlzUGxheWluZywgZmxvYXQgcGxheWJhY2tSYXRlKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9EaW1lbnNpb25zKGJvb2wgaGFzVmlkZW8sIGZsb2F0
IHdpZHRoLCBmbG9hdCBoZWlnaHQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB3aWxsTGVu
ZFZpZGVvTGF5ZXIoUGxhdGZvcm1MYXllciopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBk
aWRMZW5kVmlkZW9MYXllcigpIG92ZXJyaWRlOwotCi0gICAgLy8gZm9yd2FyZCB0byBpbnRlcmZh
Y2UKLSAgICB2aXJ0dWFsIHZvaWQgZW50ZXJGdWxsc2NyZWVuKCk7Ci0gICAgdmlydHVhbCB2b2lk
IGV4aXRGdWxsc2NyZWVuKCk7CiAgICAgCiAgICAgLy8gYWRkaXRpb25hbCBpbmNvbWluZwogICAg
IHZpcnR1YWwgdm9pZCBkaWRFbnRlckZ1bGxzY3JlZW4oKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlk
RXhpdEZ1bGxzY3JlZW4oKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9MYXllckdyYXZpdHlF
bnVtKHVuc2lnbmVkKTsKICAgICAKICAgICBXZWJQYWdlKiBtX3BhZ2U7CiAgICAgUmVmUHRyPFdl
YkNvcmU6Ok5vZGU+IG1fbm9kZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6UGxhdGZvcm1DQUxheWVy
PiBtX3BsYXRmb3JtQ0FMYXllcjsKLSAgICBib29sIG1fc2VuZFVucGFyZW50VmlkZW9MYXllclRy
YW5zYWN0aW9uOworICAgIHN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0PiBtX2xh
eWVySG9zdGluZ0NvbnRleHQ7CiAgICAgCiAgICAgYm9vbCBtX2lzQW5pbWF0aW5nOwogICAgIGJv
b2wgbV90YXJnZXRJc0Z1bGxzY3JlZW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tZXNzYWdl
cy5pbgppbmRleCAxYTkzMjJjMzYxYjczNjIyMGRmZjcwNjM2ZDdjY2YyNzA3ODI1MDM0Li40ZmJk
ZTBmYmY0ZGQ0YTg5Y2ZhMTU0MTJiZDNmYjhlZTdkN2UxMmU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTI2LDExICsyNiwxMCBAQCBtZXNzYWdlcyAtPiBXZWJW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyIHsKICAgICBQYXVzZSgpCiAgICAgVG9nZ2xlUGxheVN0YXRl
KCkKICAgICBTZWVrVG9UaW1lKGRvdWJsZSB0aW1lKQotICAgIEJvcnJvd1ZpZGVvTGF5ZXIoKQot
ICAgIFJldHVyblZpZGVvTGF5ZXIoKQogICAgIFJlcXVlc3RFeGl0RnVsbHNjcmVlbigpCi0KICAg
ICBEaWRFeGl0RnVsbHNjcmVlbigpCiAgICAgRGlkRW50ZXJGdWxsc2NyZWVuKCkKKyAgICBTZXRW
aWRlb0xheWVyRnJhbWUoV2ViQ29yZTo6RmxvYXRSZWN0IGJvdW5kcykKKyAgICBTZXRWaWRlb0xh
eWVyR3Jhdml0eUVudW0odW5zaWduZWQgZ3Jhdml0eSkKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5t
bSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXIubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNDZkNmFmMGEwNGFmNWIxZDllMzRmNzBhYTUxNWZmYzZjZGQyNTRk
NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvaW9zL1dlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KQEAgLTAsMCArMSwxNjYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaCIK
KworI2lmIFBMQVRGT1JNKElPUykKKworI2luY2x1ZGUgIldlYlBhZ2UuaCIKKyNpbmNsdWRlICJX
ZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlck1lc3NhZ2Vz
LmgiCisjaW5jbHVkZSAiV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5TWVzc2FnZXMuaCIK
KyNpbmNsdWRlIDxRdWFydHpDb3JlL0NvcmVBbmltYXRpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L0V2ZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9FdmVudE5hbWVzLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9IVE1MVmlkZW9FbGVtZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUNBTGF5
ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9X
ZWJDb3JlVGhyZWFkUnVuLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworUGFzc1JlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyPiBXZWJW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpjcmVhdGUoUGFzc1JlZlB0cjxXZWJQYWdlPiBwYWdlKQor
eworICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcihwYWdl
KSk7Cit9CisKK1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OldlYlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXIoUGFzc1JlZlB0cjxXZWJQYWdlPiBwYWdlKQorICAgIDogbV9wYWdlKHBhZ2UuZ2V0KCkp
CisgICAgLCBtX2lzQW5pbWF0aW5nKGZhbHNlKQorICAgICwgbV90YXJnZXRJc0Z1bGxzY3JlZW4o
ZmFsc2UpCisgICAgLCBtX2lzRnVsbHNjcmVlbihmYWxzZSkKK3sKKyAgICBzZXRXZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2UodGhpcyk7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuYWRkTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIHBhZ2UtPnBhZ2VJRCgpLCAqdGhpcyk7Cit9CisKK1dlYlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXI6On5XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKCkKK3sKKyAgICBXZWJQ
cm9jZXNzOjpzaGFyZWQoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLT5wYWdlSUQo
KSk7Cit9CisKK2Jvb2wgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNGdWxsc2Ny
ZWVuKGNvbnN0IE5vZGUqIG5vZGUpIGNvbnN0Cit7CisgICAgcmV0dXJuIFNldHRpbmdzOjphdktp
dEVuYWJsZWQoKSAmJiBpc0hUTUxWaWRlb0VsZW1lbnQobm9kZSk7Cit9CisKK3ZvaWQgV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZW50ZXJGdWxsc2NyZWVuRm9yTm9kZShOb2RlKiBub2RlKQor
eworICAgIEFTU0VSVChub2RlKTsKKyAgICBtX25vZGUgPSBub2RlOworICAgIG1fdGFyZ2V0SXNG
dWxsc2NyZWVuID0gdHJ1ZTsKKworICAgIGlmIChtX2lzQW5pbWF0aW5nKQorICAgICAgICByZXR1
cm47CisKKyAgICBtX2lzQW5pbWF0aW5nID0gdHJ1ZTsKKyAgICBzZXRNZWRpYUVsZW1lbnQodG9I
VE1MTWVkaWFFbGVtZW50KG5vZGUpKTsKKworICAgIFBsYXRmb3JtTGF5ZXIqIHZpZGVvTGF5ZXIg
PSBbQ0FMYXllciBsYXllcl07CisgICAgbV9sYXllckhvc3RpbmdDb250ZXh0ID0gTGF5ZXJIb3N0
aW5nQ29udGV4dDo6Y3JlYXRlRm9yRXh0ZXJuYWxIb3N0aW5nUHJvY2VzcygpOworICAgIG1fbGF5
ZXJIb3N0aW5nQ29udGV4dC0+c2V0Um9vdExheWVyKHZpZGVvTGF5ZXIpOworICAgIHNldFZpZGVv
RnVsbHNjcmVlbkxheWVyKHZpZGVvTGF5ZXIpOworCisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkVudGVyRnVsbHNjcmVlbldpdGhJRCht
X2xheWVySG9zdGluZ0NvbnRleHQtPmNvbnRleHRJRCgpKSwgbV9wYWdlLT5wYWdlSUQoKSk7Cit9
CisKK3ZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZXhpdEZ1bGxzY3JlZW5Gb3JOb2Rl
KE5vZGUqKQoreworICAgIG1fbm9kZS5jbGVhcigpOworICAgIG1fdGFyZ2V0SXNGdWxsc2NyZWVu
ID0gZmFsc2U7CisKKyAgICBpZiAobV9pc0FuaW1hdGluZykKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbV9pc0FuaW1hdGluZyA9IHRydWU7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkV4aXRGdWxsc2NyZWVuKCksIG1fcGFnZS0+cGFn
ZUlEKCkpOworfQorCit2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnNldER1cmF0aW9u
KGRvdWJsZSBkdXJhdGlvbikKK3sKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0RHVyYXRpb24oZHVyYXRpb24pLCBtX3BhZ2UtPnBh
Z2VJRCgpKTsKK30KKwordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzZXRDdXJyZW50
VGltZShkb3VibGUgY3VycmVudFRpbWUsIGRvdWJsZSBhbmNob3JUaW1lKQoreworICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXRDdXJy
ZW50VGltZShjdXJyZW50VGltZSwgYW5jaG9yVGltZSksIG1fcGFnZS0+cGFnZUlEKCkpOworfQor
Cit2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnNldFJhdGUoYm9vbCBpc1BsYXlpbmcs
IGZsb2F0IHBsYXliYWNrUmF0ZSkKK3sKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0UmF0ZShpc1BsYXlpbmcsIHBsYXliYWNrUmF0
ZSksIG1fcGFnZS0+cGFnZUlEKCkpOworfQorCit2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXI6OnNldFZpZGVvRGltZW5zaW9ucyhib29sIGhhc1ZpZGVvLCBmbG9hdCB3aWR0aCwgZmxvYXQg
aGVpZ2h0KQoreworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5OjpTZXRWaWRlb0RpbWVuc2lvbnMoaGFzVmlkZW8sIHdpZHRoLCBoZWlnaHQp
LCBtX3BhZ2UtPnBhZ2VJRCgpKTsKK30KKwordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
OjpkaWRFbnRlckZ1bGxzY3JlZW4oKQoreworICAgIG1faXNBbmltYXRpbmcgPSBmYWxzZTsKKyAg
ICBtX2lzRnVsbHNjcmVlbiA9IGZhbHNlOworCisgICAgaWYgKG1fdGFyZ2V0SXNGdWxsc2NyZWVu
KQorICAgICAgICByZXR1cm47CisKKyAgICBfX2Jsb2NrIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbE1lZGlhRWxlbWVudD4gcHJvdGVjdCh0aGlzKTsKKyAgICBXZWJUaHJlYWRSdW4oXiB7
CisgICAgICAgIGV4aXRGdWxsc2NyZWVuRm9yTm9kZShtX25vZGUuZ2V0KCkpOworICAgICAgICBw
cm90ZWN0LmNsZWFyKCk7CisgICAgfSk7Cit9CisKK3ZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjo6ZGlkRXhpdEZ1bGxzY3JlZW4oKQoreworICAgIG1faXNBbmltYXRpbmcgPSBmYWxzZTsK
KyAgICBtX2lzRnVsbHNjcmVlbiA9IGZhbHNlOworCisgICAgbV9sYXllckhvc3RpbmdDb250ZXh0
LT5zZXRSb290TGF5ZXIobnVsbHB0cik7CisgICAgbV9sYXllckhvc3RpbmdDb250ZXh0ID0gbnVs
bHB0cjsKKyAgICBzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihudWxscHRyKTsKKworICAgIHNldE1l
ZGlhRWxlbWVudChudWxscHRyKTsKKworICAgIGlmICghbV90YXJnZXRJc0Z1bGxzY3JlZW4pCisg
ICAgICAgIHJldHVybjsKKworICAgIF9fYmxvY2sgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbk1v
ZGVsTWVkaWFFbGVtZW50PiBwcm90ZWN0KHRoaXMpOworICAgIFdlYlRocmVhZFJ1biheIHsKKyAg
ICAgICAgZW50ZXJGdWxsc2NyZWVuRm9yTm9kZShtX25vZGUuZ2V0KCkpOworICAgICAgICBwcm90
ZWN0LmNsZWFyKCk7CisgICAgfSk7Cit9CisgICAgCit2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXI6OnNldFZpZGVvTGF5ZXJHcmF2aXR5RW51bSh1bnNpZ25lZCBncmF2aXR5KQoreworICAg
IHNldFZpZGVvTGF5ZXJHcmF2aXR5KChXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbDo6VmlkZW9HcmF2
aXR5KWdyYXZpdHkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFBM
QVRGT1JNKElPUykK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>226178</attachid>
            <date>2014-03-07 15:58:56 -0800</date>
            <delta_ts>2014-03-10 09:36:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129870-20140307155902.patch</filename>
            <type>text/plain</type>
            <size>73353</size>
            <attacher name="Jeremy Jones">jeremyj-wk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY1Mjk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTM1YmI5OWIwMGU0MWRj
NTNhNmYxNDNlYTU0ZDcyNmY5ZWI2MmJjNS4uMmI5Y2I4NjVjMjdmMWE4NDc2Y2U3MGQ1YjY4YmZj
M2I1MzFmOWQwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0NSBAQAorMjAxNC0wMy0wNyAgSmVy
ZW15IEpvbmVzICA8amVyZW15akBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgbWVkaWEgZWxl
bWVudCB0byBzdXBwbHkgdGhlIHZpZGVvIGxheWVyIGFmdGVyIGZ1bGxzY3JlZW4gdHJhbnNpdGlv
biBoYXMgYWxyZWFkeSBiZWd1bi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEyOTg3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEluc3RlYWQgb2YgYm9ycm93aW5nIHRoZSB2aWRlb2xheWVyIGZyb20gdGhl
IEhUTUxNZWRpYUVsZW1lbnQsIFdlYlZpZGVvRnVsbHNjcmVlbiBub3cgc3VwcGxpZXMgYSBsYXll
ciB0byBIVE1MTWVkaWFFbGVtZW50IHRvIGZpbGwgaW4gYXMgbmVlZGVkIGFuZCBhdCB0aGUgYXBw
cm9wcmlhdGUgdGltZS4KKworICAgICAgICBUaGlzIGFsbG93cyBmdWxsc2NyZWVuIGV2ZW4gaWYg
dGhlIHZpZGVvIGxheWVyIGhhc24ndCB5ZXQgYmVlbiBjcmVhdGVkLiBBbmQgaW4gdGhlIGZ1dHVy
ZSBpdCBhbGxvd3MgTWVkaWFQbGF5ZXIgdG8gc3VwcGx5IG90aGVyIGxheWVycyBzdWNoIGFzIGNs
b3NlZCBjYXB0aW9ucy4gCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgUmVt
b3ZlIGV4cG9ydHMgcmVsYXRlZCB0byBib3Jyb3dpbmcgYW5kIGxlbmQgdGhlIHZpZGVvIGxheWVy
LgorICAgICAgICBBZGQgZXhwb3J0cyBmb3Igc3VwcGx5aW5nIGEgbGF5ZXIgdG8gZnVsbHNjcmVl
biBhbmQga2VlcHlpbmcgdGhlIGZyYW1lIGFuZCBncmF2aXR5IHByb3BlcnRpZXMgaW4gc3luYy4K
KworICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIFJlbW92ZSB0
aGUgY29uY2VwdCBvZiBib3Jyb3dpbmcgdGhlIHBsYXRmb3JtIGxheWVyLgorICAgICAgICBBZGQg
dGhlIGNvbmNlcHQgb2YgYSBzdXBwbGllZCBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyLCBpbnRvIHdo
aWNoIHRoZSBtZWRpYSBwbGF5ZXIgY2FuIGFkZCBsYXllcnMuCisgICAgICAgIFdoZW4gdGhlIG1f
dmlkZW9GdWxsc2NyZWVuRnJhbWUgaXMgc3VwcGxpZWQsIGRvbid0IHNob3cgdGhlIHZpZGVvIGxh
eWVyIGlubGluZSBhbnkgbW9yZS4KKyAgICAgICAgU3Rhc2ggdmlkZW8gbGF5ZXIgcHJvcGVydGll
cyBpbiBjYXNlIHRoZSBtZWRpYSBwbGF5ZXIgaXMgbm90IHlldCBjcmVhdGVkLgorCisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KToKKyAgICAgICAg
SW5pdGlhbGl6ZSBncmF2aXR5IHRvIHRoZSBkZWZhdWx0LiBSZW1vdmUgbV9wbGF0Zm9ybUxheWVy
Qm9ycm93ZWQuCisKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBsYXRmb3Jt
TGF5ZXIpOgorICAgICAgICBXaGVuIHdlIGhhdmUgYSBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyLCBk
b24ndCBzaG93IHZpZGVvIGlubGluZS4KKworICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIpOgorICAgICAgICBQYXNzIGFsb25nIHRoZSBt
X3ZpZGVvRnVsbHNjcmVlbkxheWVyIHRvIHRoZSBNZWRpYVBsYXllciBpZiBhdmFpbGFibGUgb3Ig
anVzdCBzdGFzaCBpdCBmb3IgbGF0ZXIuCisKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OmNyZWF0ZU1lZGlhUGxheWVyKToKKyAgICAgICAgUGFzcyBhbG9uZyB2aWRlbyBmdWxs
c2NyZWVuIHByb3BlcnRpZXMgdGhhdCB3ZSBtYXkgaGF2ZSBhY2N1bXVsYXRlZCBiZWZvcmUgdGhl
IE1lZGlhUGxheWVyIHdhcyBjcmVhdGVkLgorCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50OjpzZXRWaWRlb0Z1bGxzY3JlZW5HcmF2aXR5KToKKyAgICAgICAgU3Rhc2ggdGhlIGdy
YXZpdHkgcHJvcGVydHksIHBhc3MgaXQgYWxvbmcgdG8gdGhlIG1lZGlhIHBsYXllciBpZiBwb3Nz
aWJsZS4KKworICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAgICBSZW1v
dmUgY29uY2VwdCBvZiBib3Jyb3dpbmcgdGhlIHZpZGVvIGxheWVyLiBBZGQgcHJvcGVydGllcyBm
b3IgYSBzdXBwbGllZCB2aWRlb0Z1bGxzY3JlZW5MYXllci4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
OjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcik6CisgICAgICAgIEZvcndhcmQgb24gdG8gaW50ZXJu
YWwgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpzZXRW
aWRlb0Z1bGxzY3JlZW5GcmFtZSk6CisgICAgICAgIEZvcndhcmQgb24gdG8gaW50ZXJuYWwgaW1w
bGVtZW50YXRpb24uCisKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpzZXRWaWRlb0Z1
bGxzY3JlZW5HcmF2aXR5KToKKyAgICAgICAgRm9yd2FyZCBvbiB0byBpbnRlcm5hbCBpbXBsZW1l
bnRhdGlvbi4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmg6Cisg
ICAgICAgIEFkZCBtZXRob2RzIGZvciB2aWRlbyBmdWxsc2NyZWVuIExheWVyLCBGcmFtZSBhbmQg
R3Jhdml0eS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlOjpzZXRW
aWRlb0Z1bGxzY3JlZW5MYXllcik6CisgICAgICAgIEFkZCBkZWZhdWx0IGltcGxlbWVudGF0aW9u
LgorCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U6OnNldFZp
ZGVvRnVsbHNjcmVlbkZyYW1lKToKKyAgICAgICAgQWRkIGRlZmF1bHQgaW1wbGVtZW50YXRpb24u
CisgICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNl
OjpzZXRWaWRlb0Z1bGxzY3JlZW5HcmF2aXR5KToKKyAgICAgICAgQWRkIGRlZmF1bHQgaW1wbGVt
ZW50YXRpb24uCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaDoKKyAgICAgICAg
QWRkIHN1cHBvcnQgZm9yIGZ1bGxzY3JlZW4gdmlkZW8gbGF5ZXIsIGZyYW1lIGFuZCBncmF2aXR5
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMpOgorICAgICAgICBJbml0IG1fdmlkZW9GdWxsc2NyZWVuR3Jhdml0eS4gCisKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0
ZVZpZGVvTGF5ZXIpOgorICAgICAgICBBcHBseSBjYWNoZWQgcHJvcGVydGllcyBvbmNlIHZpZGVv
IGxheWVyIGlzIGNyZWF0ZWQgYW5kIGFkZCB0byB0aGUgZnVsbHNjcmVlbiBsYXllci4KKworICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0Vmlk
ZW9GdWxsc2NyZWVuTGF5ZXIpOgorICAgICAgICBDYWNoZSB0aGUgcHJvcGVydHkgdmFsdWUuIEFk
ZCB2aWRlbyBsYXllciByaWdodCBhd2F5IGF2YWlsYWJsZS4KKworICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuRnJh
bWUpOgorICAgICAgICBDYWNoZSB0aGUgcHJvcGVydHkgdmFsdWUuIEFwcGx5IHRvIHZpZGVvIGxh
eWVyIHJpZ2h0IGF3YXkgaWYgYXZhaWxhYmxlLgorCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5HcmF2aXR5KToK
KyAgICAgICAgQ2FjaGUgdGhlIHByb3BlcnR5IHZhbHVlLiBBcHBseSB0byB2aWRlbyBsYXllciBy
aWdodCBhd2F5IGlmIGF2YWlsYWJsZS4KKworICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW06CisgICAgICAgIFN1cHBseSBhIGZ1bGxzY3Jl
ZW4gdmlkZW8gbGF5ZXIgdG8gdGhlIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsIGFuZCB0byB0aGUg
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlLgorCisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXIgZW50ZXJGdWxsc2NyZWVuOl0pOgorICAgICAgICBTdXBwbHkgYSBmdWxs
c2NyZWVuIHZpZGVvIGxheWVyIHRvIHRoZSBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbCBhbmQgdG8g
dGhlIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZS4KKworICAgICAgICAoLVtXZWJWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyIGRpZEV4aXRGdWxsc2NyZWVuXSk6CisgICAgICAgIENsZWFuIHVw
IHRoZSB2aWRlb0Z1bGxzY3JlZW5MYXllci4KKworICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UuaDoKKyAgICAgICAgUmVtb3ZlIG1ldGhvZHMgcmVsYXRl
ZCB0byBsZW5kaW5nIHRoZSB2aWRlbyBsYXllci4KKworICAgICAgICAqIHBsYXRmb3JtL2lvcy9X
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oOgorICAgICAgICBSZW5hbWUgV2ViQVZQ
bGF5ZXIgbGF5ZXIgdG8gV2ViQVZWaWRlb0xheWVyIHRvIG1hdGNoIHRoZSBBVktpdCBuYW1lLgor
ICAgICAgICBSZW1vdmUgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gbGVuZGluZyB0aGUgdmlkZW8gbGF5
ZXIuCisgICAgICAgIFN1cHBseSBhIGxheWVyIGRpcmVjdGx5IHRvIGVudGVyRnVsbHNjcmVlbi4K
KworICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktp
dC5tbToKKyAgICAgICAgKCtbV2ViQVZWaWRlb0xheWVyIHZpZGVvTGF5ZXJdKToKKyAgICAgICAg
UmVuYW1lIFdlYkFWUGxheWVyIGxheWVyIHRvIFdlYkFWVmlkZW9MYXllciB0byBtYXRjaCB0aGUg
QVZLaXQgbmFtZS4KKworICAgICAgICAoLVtXZWJBVlZpZGVvTGF5ZXIgc2V0UGxheWVyQ29udHJv
bGxlcjpdKToKKyAgICAgICAgU3RvcmUgdGhlIEFWUGxheWVyQ29udHJvbGxlciB0byBwcmV2ZW50
IEFWS2l0J3MgZGVmYXVsdCBiZWhhdmlvci4KKworICAgICAgICAoLVtXZWJBVlZpZGVvTGF5ZXIg
c2V0Qm91bmRzOl0pOgorICAgICAgICBGb3J3YXJkIHRoaXMgb250byB0aGUgV2ViVmlkZW9GdWxs
c2NyZWVuTW9kZWwKKworICAgICAgICAoLVtXZWJBVlZpZGVvTGF5ZXIgc2V0VmlkZW9MYXllckdy
YXZpdHk6XSk6CisgICAgICAgIEZvcndhcmQgdGhpcyBvbnRvIHRoZSBXZWJWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbAorCisgICAgICAgICgtW1dlYkFWVmlkZW9MYXllciB2aWRlb0xheWVyR3Jhdml0eV0p
OgorICAgICAgICBGb3J3YXJkIHRoaXMgb250byB0aGUgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwK
KworICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmVudGVyRnVsbHNj
cmVlbik6CisgICAgICAgIFN1cHBseSBhIHZpZGVvIGxheWVyIGRpcmVjdGx5IGluc3RlYWQgb2Yg
cmVseWluZyBvbiBvbmUgYmVpbmcgcHJldmlvdXNseSBsb2FuZWQuCisKKyAgICAgICAgKFdlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpleGl0RnVsbHNjcmVlbik6CisgICAgICAgIENs
ZWFuLXVwIG5vdyBhc3N1bWVzIHRoZXJlIGlzIGEgdmlkZW8gbGF5ZXIuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwuaDoKKyAgICAgICAgUmVtb3ZlIG1l
dGhvZHMgZm9yIGJvcnJvd2luZyBhbmQgcmV0dXJuaW5nIHZpZGVvIGxheWVycy4KKyAgICAgICAg
QWRkIG1ldGhvZHMgZm9yIGtlZXBpbmcgdmlkZW8gbGF5ZXIgc3RhdGUgaW4gc3luYy4KKworICAg
ICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbE1lZGlhRWxlbWVudC5o
OgorICAgICAgICBSZW1vdmUgbWV0aG9kcyBmb3IgYm9ycm93aW5nIGFuZCByZXR1cm5pbmcgdmlk
ZW8gbGF5ZXJzLgorICAgICAgICBBZGQgbWV0aG9kIGZvciBzdXBwbHlpbmcgYSB2aWRlbyBmdWxs
c2NyZWVuIGxheWVyLgorICAgICAgICBBZGQgbWV0aG9kcyBmb3Iga2VlcGluZyB2aWRlbyBsYXll
ciBzdGF0ZSBpbiBzeW5jLgorCisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNj
cmVlbk1vZGVsTWVkaWFFbGVtZW50Lm1tOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuTW9k
ZWxNZWRpYUVsZW1lbnQ6OnNldE1lZGlhRWxlbWVudCk6CisgICAgICAgIEhhbmRsZSBhdWRpbyBl
bGVtZW50IGNhc2UgYnkgc2V0dGluZyBoYXNWaWRlbyB0byBmYWxzZS4KKworICAgICAgICAoV2Vi
VmlkZW9GdWxsc2NyZWVuTW9kZWxNZWRpYUVsZW1lbnQ6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVy
KToKKyAgICAgICAgUGFzcyBhbG9uZyB0aGUgdmlkZW8gZnVsbHNjcmVlbiBsYXllciB0byB0aGUg
bWVkaWEgZWxlbWVudC4KKworICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxNZWRpYUVs
ZW1lbnQ6OnNldFZpZGVvTGF5ZXJGcmFtZSk6CisgICAgICAgIFBhc3MgYWxvbmcgdGhlIHZpZGVv
IGxheWVyIGZyYW1lIHRvIHRoZSBtZWRpYSBlbGVtZW50LgorCisgICAgICAgIChXZWJWaWRlb0Z1
bGxzY3JlZW5Nb2RlbE1lZGlhRWxlbWVudDo6c2V0VmlkZW9MYXllckdyYXZpdHkpOgorICAgICAg
ICBQYXNzIGFsb25nIHRoZSB2aWRlbyBsYXllciBncmF2aXR5IHRvIHRoZSBtZWRpYSBlbGVtZW50
LgorCiAyMDE0LTAzLTA3ICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbTWFjXSBOb3RpZnkgc3lzdGVtIG1hbGxvYyBvZiBmYWtlIG1lbW9yeSBwcmVzc3VyZS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBiMjNkNmUyZjYyMGQzMWE4MGFmMDMwYWQyYWUxNWZmNTJiNzM0NGJmLi44
ZjcyODQ1Zjc1MjgyNGU0ZjAyZmQ3MWNiMzQ3ZjExZmZjMjUxY2ViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsODYgQEAKKzIwMTQtMDMtMDcgIEplcmVteSBKb25lcyAgPGplcmVteWpAYXBwbGUuY29t
PgorCisgICAgICAgIEFsbG93IG1lZGlhIGVsZW1lbnQgdG8gc3VwcGx5IHRoZSB2aWRlbyBsYXll
ciBhZnRlciBmdWxsc2NyZWVuIHRyYW5zaXRpb24gaGFzIGFscmVhZHkgYmVndW4uCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjk4NzAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyIGFuZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkgZG8gdGhlaXIgb3du
IHJlbW90ZSBob3N0aW5nIG9mIHRoZSB2aWRlbyBsYXllciBpbnN0ZWFkIG9mIG5lZWRpbmcgdGhl
IHZpZGVvIGxheWVyIHRvIGhhdmUgYWxyZWFkeSBiZWVuIGhvc3RlZCBlbHNld2hlcmUuIFRoaXMg
YWxsb3dzIHRoZSByZW1vdmFsIG9mIHRoZSBjb29yZGluYXRpb24gd2l0aCBXZWJQYWdlUHJveHkg
dmlhIGEgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uCisKKyAgICAgICAgKiBTaGFyZWQvbWFj
L1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmg6CisgICAgICAgIFJlbW92ZSBtX3ZpZGVvTGF5
ZXJJRHNQZW5kaW5nRnVsbHNjcmVlbiBhbmQgYWNjZXNzb3JzLgorCisgICAgICAgICogU2hhcmVk
L21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OmVuY29kZSk6CisgICAgICAgIERvbid0IGVuY29kZSBt
X3ZpZGVvTGF5ZXJJRHNQZW5kaW5nRnVsbHNjcmVlbgorCisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpkZWNvZGUpOgorICAgICAgICBEb24ndCBkZWNvZGUgbV92
aWRlb0xheWVySURzUGVuZGluZ0Z1bGxzY3JlZW4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3Mv
V2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZENv
bW1pdExheWVyVHJlZSk6CisgICAgICAgIERvbid0IGZvcndhcmQgZGlkQ29tbWl0TGF5ZXJUcmVl
IHRvIG1fdmlkZW9GdWxsc2NyZWVuTWFuYWdlci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3Mv
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lmg6CisgICAgICAgIFJlbW92ZSBjb2RlIGZv
ciBzeW5jaHJvbml6aW5nIHdpdGggdGhlIFJlbmRlclRyZWUuCisgICAgICAgIEFkZCBhIGhvc3Rp
bmcgbGF5ZXIgYW5kIG1ldGhvZHMgdG8ga2VlcCB2aWRlbyBsYXllciBmcmFtZSBhbmQgdmlkZW8g
Z3Jhdml0eSBzeW5jaHJvbml6ZWQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgQ2hhbmdlIElQQyBp
bnRlcmZhY2UgdG8gZmFzY2lsaXRhdGUgcmVob3N0aW5nIHZpZGVvIGxheWVyIHdpdGggYSBpbnN0
ZWFkIG9mIGNvb3JkaW5hdGluZyB3aXRoIHRoZSBSZW5kZXJUcmVlIGJ5IFBsYXRmb3JtTGF5ZXJJ
RC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6
OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eSk6CisgICAgICAgIFJlbW92ZSBpbml0aWFs
aXphdGlvbiBmb3IgcmVtb3ZlZCBtZW1iZXJzLgorCisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZW50ZXJGdWxsc2NyZWVuV2l0aElEKToKKyAgICAgICAg
UmVob3N0IHRoZSB2aWRlbyBsYXllciBieSBpZCBhbmQgcGFzcyBvbiB0aGUgbGF5ZXIuCisgICAg
ICAgIFRoaXMgcmVwbGFjZXMgZGlkQ29tbWl0TGF5ZXJUcmVlKCkgYW5kICB3aWxsTGVuZFZpZGVv
TGF5ZXJXaXRoSUQoKS4gCisKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5OjpkaWRFeGl0RnVsbHNjcmVlbik6CisgICAgICAgIENsZWFudXAgdGhlIGhvc3Rp
bmcgbGF5ZXIuCisKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5OjpzZXRWaWRlb0xheWVyRnJhbWUpOgorICAgICAgICBGb3J3YXJkIG9uIHRoZSB2aWRlbyBs
YXllcidzIGZyYW1lIHRvIGtlZXAgdGhlIGhvc3RlZCBsYXllciBpbiBzeW5jIHdpdGggdGhlIGlu
dGVyZmFjZS4KKworICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHk6OnNldFZpZGVvTGF5ZXJHcmF2aXR5KToKKyAgICAgICAgRm9yd2FyZCB0aGUgdmlkZW9sYXll
ciBncmF2aXR5LgorCisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICBSZW5hbWUgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5jcHAgdG8gV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlci5tbQorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp3aWxsQ29tbWl0TGF5ZXJUcmVl
KToKKyAgICAgICAgRG9uJ3QgaW52b3ZsZSB0aGUgbV92aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyIGlu
IGxheWVyIHRyZWUgdHJhbnNhY3Rpb25zLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9pb3MvV2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oOgorICAgICAgICBSZW1vdmUgY29kZSB0aGF0IHN5bmNo
cm9uaXplcyB3aXRoIHRoZSByZW5kZXIgdHJlZSB2aWEgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rp
b24uCisgICAgICAgIEluc3RlYWQgcmVob3N0IHRoZSB2aWRlbyBsYXllciBkaXJlY3RseS4KKyAg
ICAgICAgSW5zdGVhZCBvZiBob3BpbmcgdGhlIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsIGhhcyBh
IHZpZGVvTGF5ZXIsIHN1cHBseSBvbmUgaW50byB3aGljaAorICAgICAgICBpdCBjYW4gYWRkIHdo
YXRldmVyIGl0IGxpa2VzIGFzIG5lZWRlZC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvaW9zL1dl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubWVzc2FnZXMuaW46CisgICAgICAgIE5vIG1vcmUgZXhw
bGljaXQgYm9ycm93aW5nIGFuZCByZXR1cm5pbmcgdmlkZW8gbGF5ZXJzLgorICAgICAgICBBZGQg
ZnVuY3Rpb25zIHRvIGtlZXAgdmlkZW8gbGF5ZXIgYm91bmRzIGFuZCBncmF2aXR5IGluIHN5bmMg
d2l0aCB0aGUgVUkuIAorCisgICAgICAgICogV2ViUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlci5tbTogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvaW9z
L1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuY3BwLgorICAgICAgICBSZW1vdmVkIGNvZGUgZm9y
IHN5bmNocm9uaXppbmcgdmlhIFJlbW90ZUxBeWVyVHJlZVRyYW5zYWN0aW9uLgorCisgICAgICAg
IChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OldlYlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXIpOgorICAgICAgICBSZW1vdmUgaW5pdGlhbGl6YXRpb24gZm9yIHJlbW92ZWQgbWVtZWJl
ciBtX3NlbmRVbnBhcmVudFZpZGVvTGF5ZXJUcmFuc2FjdGlvbi4KKworICAgICAgICAoV2ViS2l0
OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjplbnRlckZ1bGxzY3JlZW5Gb3JOb2RlKToKKyAg
ICAgICAgQ3JlYXRlcyBhIGZ1bGxzY3JlZW4gbGF5ZXIsIGdpdmVzIGl0IHRvIHRoZSBXZWJWaWRl
b0Z1bGxzY3JlZW5Nb2RlbCB0byBmaWxsIGluLAorICAgICAgICBhbmQgaG9zdHMgaXQgaW4gYSBj
b250ZXh0IHRvIHNlbmQgdG8gdGhlIFVJUHJvY2Vzcy4KKworICAgICAgICAoV2ViS2l0OjpXZWJW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpleGl0RnVsbHNjcmVlbkZvck5vZGUpOgorICAgICAgICBy
ZW1vdmUgZW50ZXJGdWxsc2NyZWVuKCkgYW5kIGp1c3QgZGlyZWN0bHkgc2VuZCB0aGUgSVBDIG1l
c3NhZ2UuIAorCisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRp
ZEV4aXRGdWxsc2NyZWVuKToKKyAgICAgICAgQ2xlYW4gdXAgdGhlIGhvc3RpbmcgY29udGV4dC4K
KworICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzZXRWaWRlb0xh
eWVyR3Jhdml0eUVudW0pOgorICAgICAgICBGb3J3YXJkIG9uIHRoZSB2aWRlbyBncmF2aXR5LiBU
eXBlIGNvbnZlcnQgZnJvbSB1bnNpZ25lZCB0byBNZWRpYVBsYXllcjo6VmlkZW9HcmF2aXR5Lgor
CiAyMDE0LTAzLTA3ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJFR1JFU1NJT04gKHIxNjQ4NDcpOiBQcmVzc2luZyB0aGUgY29tbWFuZCBrZXkgd2hpbGUg
aG92ZXJpbmcgYW4gZWxlbWVudCBjYXVzZXMgaXQgdG8gdW4taG92ZXIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAu
aW4KaW5kZXggMjRhZDAyYWZiMzE1MmE0N2Y1NTA1Nzg5ZGY3OWM1YjhjNTExNGY0OS4uOTM0N2Nl
MjJlNmZiYjk4MmU1ZGVlNzZkYThhMmRhOTJmMjE5Y2IxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4K
QEAgLTMyMDksMTAgKzMyMDksOCBAQCBfX1pOSzdXZWJDb3JlMTZIVE1MTWVkaWFFbGVtZW50OGR1
cmF0aW9uRXYKIF9fWk43V2ViQ29yZTMyV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQx
MXNldER1cmF0aW9uRWQKIF9fWk43V2ViQ29yZTMyV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQxNGV4aXRGdWxsc2NyZWVuRXYKIF9fWk43V2ViQ29yZTMyV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQxNHNldEN1cnJlbnRUaW1lRWRkCi1fX1pON1dlYkNvcmUzMldlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUFWS2l0MTVlbnRlckZ1bGxzY3JlZW5FdgotX19aTjdXZWJDb3Jl
MzJXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDE3ZGlkTGVuZFZpZGVvTGF5ZXJFdgor
X19aTjdXZWJDb3JlMzJXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDE1ZW50ZXJGdWxs
c2NyZWVuRVI3Q0FMYXllcgogX19aTjdXZWJDb3JlMzJXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VBVktpdDE4c2V0VmlkZW9EaW1lbnNpb25zRWJmZgotX19aTjdXZWJDb3JlMzJXZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdDE4d2lsbExlbmRWaWRlb0xheWVyRVA3Q0FMYXllcgogX19a
TjdXZWJDb3JlMzJXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDI2c2V0V2ViVmlkZW9G
dWxsc2NyZWVuTW9kZWxFUE5TXzIzV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxFCiBfX1pON1dlYkNv
cmUzMldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0MzVzZXRXZWJWaWRlb0Z1bGxzY3Jl
ZW5DaGFuZ2VPYnNlcnZlckVQTlNfMzJXZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlckUK
IF9fWk43V2ViQ29yZTMyV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ3c2V0UmF0ZUVi
ZgpAQCAtMzIyMSw5ICszMjE5LDEwIEBAIF9fWk43V2ViQ29yZTM1V2ViVmlkZW9GdWxsc2NyZWVu
TW9kZWxNZWRpYUVsZW1lbnQxMHNlZWtUb1RpbWVFZAogX19aTjdXZWJDb3JlMzVXZWJWaWRlb0Z1
bGxzY3JlZW5Nb2RlbE1lZGlhRWxlbWVudDExaGFuZGxlRXZlbnRFUE5TXzIyU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEVQTlNfNUV2ZW50RQogX19aTjdXZWJDb3JlMzVXZWJWaWRlb0Z1bGxzY3JlZW5N
b2RlbE1lZGlhRWxlbWVudDE1c2V0TWVkaWFFbGVtZW50RVBOU18xNkhUTUxNZWRpYUVsZW1lbnRF
CiBfX1pON1dlYkNvcmUzNVdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50MTV0b2dn
bGVQbGF5U3RhdGVFdgotX19aTjdXZWJDb3JlMzVXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbE1lZGlh
RWxlbWVudDE2Ym9ycm93VmlkZW9MYXllckV2Ci1fX1pON1dlYkNvcmUzNVdlYlZpZGVvRnVsbHNj
cmVlbk1vZGVsTWVkaWFFbGVtZW50MTZyZXR1cm5WaWRlb0xheWVyRXYKK19fWk43V2ViQ29yZTM1
V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxNZWRpYUVsZW1lbnQxOHNldFZpZGVvTGF5ZXJGcmFtZUVO
U185RmxvYXRSZWN0RQorX19aTjdXZWJDb3JlMzVXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbE1lZGlh
RWxlbWVudDIwc2V0VmlkZW9MYXllckdyYXZpdHlFTlNfMjNXZWJWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bDEyVmlkZW9HcmF2aXR5RQogX19aTjdXZWJDb3JlMzVXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbE1l
ZGlhRWxlbWVudDIxcmVxdWVzdEV4aXRGdWxsc2NyZWVuRXYKK19fWk43V2ViQ29yZTM1V2ViVmlk
ZW9GdWxsc2NyZWVuTW9kZWxNZWRpYUVsZW1lbnQyM3NldFZpZGVvRnVsbHNjcmVlbkxheWVyRVA3
Q0FMYXllcgogX19aTjdXZWJDb3JlMzVXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbE1lZGlhRWxlbWVu
dDRwbGF5RXYKIF9fWk43V2ViQ29yZTM1V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxNZWRpYUVsZW1l
bnQ1cGF1c2VFdgogX19aTjdXZWJDb3JlMzVXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbE1lZGlhRWxl
bWVudEMyRXYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IGRh
NjM1Y2IzZDc4ZDAxYTI3ZGFjZTg2ODZkNDE0YmQzMTViY2EyZmQuLjYxYjZmOGEwNzJlZjhjOThh
MWI2M2RiY2FkNDFkODYzMGNjYTlkNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcApAQCAtMjc2LDYgKzI3Niw5IEBAIEhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRp
YUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtCiAg
ICAgLCBtX2Nsb2NrVGltZUF0TGFzdFVwZGF0ZUV2ZW50KDApCiAgICAgLCBtX2xhc3RUaW1lVXBk
YXRlRXZlbnRNb3ZpZVRpbWUoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjptYXgoKSkKICAg
ICAsIG1fbG9hZFN0YXRlKFdhaXRpbmdGb3JTb3VyY2UpCisjaWYgUExBVEZPUk0oSU9TKQorICAg
ICwgbV92aWRlb0Z1bGxzY3JlZW5HcmF2aXR5KE1lZGlhUGxheWVyOjpWaWRlb0dyYXZpdHlSZXNp
emVBc3BlY3QpCisjZW5kaWYKICNpZiBFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKICAg
ICAsIG1fcHJveHlXaWRnZXQoMCkKICNlbmRpZgpAQCAtMzE5LDcgKzMyMiw2IEBAIEhUTUxNZWRp
YUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQmIGRvY3VtCiAjZW5kaWYKICNpZiBQTEFURk9STShJT1MpCiAgICAgLCBtX3JlcXVl
c3RpbmdQbGF5KGZhbHNlKQotICAgICwgbV9wbGF0Zm9ybUxheWVyQm9ycm93ZWQoZmFsc2UpCiAj
ZW5kaWYKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgLCBtX3RyYWNrc0FyZVJlYWR5KHRy
dWUpCkBAIC00OTQ3LDI5ICs0OTQ5LDM1IEBAIFBsYXRmb3JtTWVkaWEgSFRNTE1lZGlhRWxlbWVu
dDo6cGxhdGZvcm1NZWRpYSgpIGNvbnN0CiBQbGF0Zm9ybUxheWVyKiBIVE1MTWVkaWFFbGVtZW50
OjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKIHsKICNpZiBQTEFURk9STShJT1MpCi0gICAgaWYgKG1f
cGxhdGZvcm1MYXllckJvcnJvd2VkKQorICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbkxheWVyKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICNlbmRpZgogICAgIHJldHVybiBtX3BsYXllciA/IG1f
cGxheWVyLT5wbGF0Zm9ybUxheWVyKCkgOiBudWxscHRyOwogfQogCiAjaWYgUExBVEZPUk0oSU9T
KQotUGxhdGZvcm1MYXllciogSFRNTE1lZGlhRWxlbWVudDo6Ym9ycm93UGxhdGZvcm1MYXllcigp
Cit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3Jt
TGF5ZXIqIHBsYXRmb3JtTGF5ZXIpCiB7Ci0gICAgQVNTRVJUKCFtX3BsYXRmb3JtTGF5ZXJCb3Jy
b3dlZCk7Ci0gICAgbV9wbGF0Zm9ybUxheWVyQm9ycm93ZWQgPSB0cnVlOwotICAgIGlmIChyZW5k
ZXJlcigpKQotICAgICAgICByZW5kZXJlcigpLT51cGRhdGVGcm9tRWxlbWVudCgpOwotICAgIHJl
dHVybiBtX3BsYXllciA/IG1fcGxheWVyLT5wbGF0Zm9ybUxheWVyKCkgOiBudWxscHRyOworICAg
IG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXIgPSBwbGF0Zm9ybUxheWVyOworICAgIGlmICghbV9wbGF5
ZXIpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBtX3BsYXllci0+c2V0VmlkZW9GdWxsc2Ny
ZWVuTGF5ZXIocGxhdGZvcm1MYXllcik7CisgICAgc2V0TmVlZHNTdHlsZVJlY2FsYyhTeW50aGV0
aWNTdHlsZUNoYW5nZSk7Cit9CisgICAgCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFZpZGVv
RnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCBmcmFtZSkKK3sKKyAgICBtX3ZpZGVvRnVsbHNjcmVl
bkZyYW1lID0gZnJhbWU7CisgICAgaWYgKG1fcGxheWVyKQorICAgICAgICBtX3BsYXllci0+c2V0
VmlkZW9GdWxsc2NyZWVuRnJhbWUoZnJhbWUpOwogfQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OnJldHVyblBsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcikKK3ZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6c2V0VmlkZW9GdWxsc2NyZWVuR3Jhdml0eShNZWRpYVBsYXllcjo6
VmlkZW9HcmF2aXR5IGdyYXZpdHkpCiB7Ci0gICAgQVNTRVJUX1VOVVNFRChwbGF0Zm9ybUxheWVy
LCBwbGF0Zm9ybUxheWVyID09IChtX3BsYXllciA/IG1fcGxheWVyLT5wbGF0Zm9ybUxheWVyKCkg
OiBudWxscHRyKSk7Ci0gICAgQVNTRVJUKG1fcGxhdGZvcm1MYXllckJvcnJvd2VkKTsKLSAgICBt
X3BsYXRmb3JtTGF5ZXJCb3Jyb3dlZCA9IGZhbHNlOwotICAgIGlmIChyZW5kZXJlcigpKQotICAg
ICAgICByZW5kZXJlcigpLT51cGRhdGVGcm9tRWxlbWVudCgpOworICAgIG1fdmlkZW9GdWxsc2Ny
ZWVuR3Jhdml0eSA9IGdyYXZpdHk7CisgICAgaWYgKG1fcGxheWVyKQorICAgICAgICBtX3BsYXll
ci0+c2V0VmlkZW9GdWxsc2NyZWVuR3Jhdml0eShncmF2aXR5KTsKIH0KICNlbmRpZgogCkBAIC01
MzQ5LDYgKzUzNTcsMTIgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjcmVhdGVNZWRpYVBsYXll
cigpCiAgICAgICAgIGVucXVldWVQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUNoYW5nZWRFdmVu
dCgpOyAvLyBFbnN1cmUgdGhlIGV2ZW50IGxpc3RlbmVyIGdldHMgYXQgbGVhc3Qgb25lIGV2ZW50
LgogICAgIH0KICNlbmRpZgorICAgIAorI2lmIFBMQVRGT1JNKElPUykKKyAgICBtX3BsYXllci0+
c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUobV92aWRlb0Z1bGxzY3JlZW5GcmFtZSk7CisgICAgbV9w
bGF5ZXItPnNldFZpZGVvRnVsbHNjcmVlbkdyYXZpdHkobV92aWRlb0Z1bGxzY3JlZW5HcmF2aXR5
KTsKKyAgICBtX3BsYXllci0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIobV92aWRlb0Z1bGxzY3Jl
ZW5MYXllci5nZXQoKSk7CisjZW5kaWYKIH0KIAogI2lmIEVOQUJMRShXRUJfQVVESU8pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IGVhM2Q0ZWZhYWEyMjYyODAxNDEz
MjlkOTQ3YTRlN2ZmNjJjZTAyOWIuLmM5OWVmOTVlODIxZTMyODY5NWFjM2ZhODBkYzU0YmFkYzQy
MDBmZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC0xMzQsOCAr
MTM0LDkgQEAgcHVibGljOgogICAgIFBsYXRmb3JtTWVkaWEgcGxhdGZvcm1NZWRpYSgpIGNvbnN0
OwogICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdDsKICNpZiBQTEFURk9S
TShJT1MpCi0gICAgUGxhdGZvcm1MYXllciogYm9ycm93UGxhdGZvcm1MYXllcigpOwotICAgIHZv
aWQgcmV0dXJuUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKik7CisgICAgdm9pZCBzZXRWaWRl
b0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKik7CisgICAgdm9pZCBzZXRWaWRlb0Z1bGxz
Y3JlZW5GcmFtZShGbG9hdFJlY3QpOworICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuR3Jhdml0
eShNZWRpYVBsYXllcjo6VmlkZW9HcmF2aXR5KTsKICNlbmRpZgogCiAgICAgZW51bSBEZWxheWVk
QWN0aW9uVHlwZSB7CkBAIC03MjgsNiArNzI5LDEyIEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPEhU
TUxTb3VyY2VFbGVtZW50PiBtX2N1cnJlbnRTb3VyY2VOb2RlOwogICAgIFJlZlB0cjxOb2RlPiBt
X25leHRDaGlsZE5vZGVUb0NvbnNpZGVyOwogCisjaWYgUExBVEZPUk0oSU9TKQorICAgIFJldGFp
blB0cjxQbGF0Zm9ybUxheWVyPiBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyOworICAgIEZsb2F0UmVj
dCBtX3ZpZGVvRnVsbHNjcmVlbkZyYW1lOworICAgIE1lZGlhUGxheWVyOjpWaWRlb0dyYXZpdHkg
bV92aWRlb0Z1bGxzY3JlZW5HcmF2aXR5OworI2VuZGlmCisKICAgICBPd25QdHI8TWVkaWFQbGF5
ZXI+IG1fcGxheWVyOwogI2lmIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQogICAgIFJl
ZlB0cjxXaWRnZXQ+IG1fcHJveHlXaWRnZXQ7CkBAIC03OTYsNyArODAzLDYgQEAgcHJpdmF0ZToK
IAogI2lmIFBMQVRGT1JNKElPUykKICAgICBib29sIG1fcmVxdWVzdGluZ1BsYXkgOiAxOwotICAg
IGJvb2wgbV9wbGF0Zm9ybUxheWVyQm9ycm93ZWQgOiAxOwogI2VuZGlmCiAKICNpZiBFTkFCTEUo
VklERU9fVFJBQ0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9NZWRpYVBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllci5jcHAKaW5kZXggZGFkYzNlNDU3ZDc0ODAwYjYzMDNhYjllNjVlNTExMTY4MGFiMjgy
Mi4uMzI4NDRhMzNiNGVhZDhkZjJjM2RhNDRkN2UzYzM2YTUyZmFlNGFjOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApAQCAtNjI0LDYg
KzYyNCwyMyBAQCBQbGF0Zm9ybUxheWVyKiBNZWRpYVBsYXllcjo6cGxhdGZvcm1MYXllcigpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+cGxhdGZvcm1MYXllcigpOwogfQorICAgIAor
I2lmIFBMQVRGT1JNKElPUykKK3ZvaWQgTWVkaWFQbGF5ZXI6OnNldFZpZGVvRnVsbHNjcmVlbkxh
eWVyKFBsYXRmb3JtTGF5ZXIqIGxheWVyKQoreworICAgIG1fcHJpdmF0ZS0+c2V0VmlkZW9GdWxs
c2NyZWVuTGF5ZXIobGF5ZXIpOworfQorCit2b2lkIE1lZGlhUGxheWVyOjpzZXRWaWRlb0Z1bGxz
Y3JlZW5GcmFtZShGbG9hdFJlY3QgZnJhbWUpCit7CisgICAgbV9wcml2YXRlLT5zZXRWaWRlb0Z1
bGxzY3JlZW5GcmFtZShmcmFtZSk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXI6OnNldFZpZGVvRnVs
bHNjcmVlbkdyYXZpdHkoTWVkaWFQbGF5ZXI6OlZpZGVvR3Jhdml0eSBncmF2aXR5KQoreworICAg
IG1fcHJpdmF0ZS0+c2V0VmlkZW9GdWxsc2NyZWVuR3Jhdml0eShncmF2aXR5KTsKK30KKyNlbmRp
ZgogCiBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIE1lZGlhUGxheWVyOjpuZXR3b3JrU3RhdGUo
KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgK
aW5kZXggMGRhZjVhZWIzYzBiYjRhYzUyMjM4ZWVmY2ZkNjg4YzNlMDI1Y2YwZC4uZmZjMmI1Zjc5
MmMxY2Q2NmQ2MDhhOTI5ODg0Y2UxYTU2Y2JlMzU1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBAIC0zMDAsNyArMzAwLDEyIEBAIHB1Ymxp
YzoKICAgICBib29sIHJlcXVpcmVzSW1tZWRpYXRlQ29tcG9zaXRpbmcoKSBjb25zdDsKICAgICBQ
bGF0Zm9ybU1lZGlhIHBsYXRmb3JtTWVkaWEoKSBjb25zdDsKICAgICBQbGF0Zm9ybUxheWVyKiBw
bGF0Zm9ybUxheWVyKCkgY29uc3Q7Ci0KKyNpZiBQTEFURk9STShJT1MpCisgICAgdm9pZCBzZXRW
aWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKik7CisgICAgdm9pZCBzZXRWaWRlb0Z1
bGxzY3JlZW5GcmFtZShGbG9hdFJlY3QpOworICAgIGVudW0gVmlkZW9HcmF2aXR5IHsgVmlkZW9H
cmF2aXR5UmVzaXplLCBWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3QsIFZpZGVvR3Jhdml0eVJlc2l6
ZUFzcGVjdEZpbGwgfTsKKyAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkdyYXZpdHkoVmlkZW9H
cmF2aXR5KTsKKyNlbmRpZgogICAgIEludFNpemUgbmF0dXJhbFNpemUoKTsKICAgICBib29sIGhh
c1ZpZGVvKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNBdWRpbygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAppbmRl
eCA3YjdhNzA0MzU2OTE5ZjdkN2NiOWYzNDlmMGY5NTA5Y2YxNTNkYmNjLi4zZjk3Njc1ODg4YjRi
MjFkODM4Mjk4YzI3MmJlNGI0MDU3OGYwMzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaApAQCAtNTQsNyArNTQsMTEg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9QbGF5KCkgeyB9CiAgICAgdmly
dHVhbCBQbGF0Zm9ybU1lZGlhIHBsYXRmb3JtTWVkaWEoKSBjb25zdCB7IHJldHVybiBOb1BsYXRm
b3JtTWVkaWE7IH0KICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBj
b25zdCB7IHJldHVybiAwOyB9Ci0KKyNpZiBQTEFURk9STShJT1MpCisgICAgdmlydHVhbCB2b2lk
IHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0KSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuR3Jhdml0eShNZWRpYVBsYXllcjo6VmlkZW9HcmF2aXR5
KSB7IH0KKyNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCBwbGF5KCkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBwYXVzZSgpID0gMDsgICAgCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAppbmRleCA5ZDZmOWJm
N2FkOWJhNDYxZTU3MmIxYWM0NDk5YWVkODliMTE2MDI5Li5mOTIyODdlM2RmZDBmYjMwNThmZTFm
MTAzYTAzNDM2MTM2NzVjYTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCkBAIC0xNDgsNiArMTQ4
LDExIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCos
IGNvbnN0IEludFJlY3QmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNv
bnRleHQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYpOwogICAgIHZpcnR1YWwgUGxh
dGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0OworI2lmIFBMQVRGT1JNKElPUykKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciopOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3QpOworICAg
IHZpcnR1YWwgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5HcmF2aXR5KE1lZGlhUGxheWVyOjpWaWRl
b0dyYXZpdHkpOworI2VuZGlmCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQWNjZWxlcmF0ZWRS
ZW5kZXJpbmcoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBmbG9hdCBtZWRp
YVRpbWVGb3JUaW1lVmFsdWUoZmxvYXQpIGNvbnN0OwogICAgIHZpcnR1YWwgZG91YmxlIG1heGlt
dW1EdXJhdGlvblRvQ2FjaGVNZWRpYVRpbWUoKSBjb25zdCB7IHJldHVybiA1OyB9CkBAIC0yNDUs
NiArMjUwLDExIEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPEFWUGxheWVyPiBtX2F2UGxheWVy
OwogICAgIFJldGFpblB0cjxBVlBsYXllckl0ZW0+IG1fYXZQbGF5ZXJJdGVtOwogICAgIFJldGFp
blB0cjxBVlBsYXllckxheWVyPiBtX3ZpZGVvTGF5ZXI7CisjaWYgUExBVEZPUk0oSU9TKQorICAg
IFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyOworICAgIEZs
b2F0UmVjdCBtX3ZpZGVvRnVsbHNjcmVlbkZyYW1lOworICAgIE1lZGlhUGxheWVyOjpWaWRlb0dy
YXZpdHkgbV92aWRlb0Z1bGxzY3JlZW5HcmF2aXR5OworI2VuZGlmCiAgICAgUmV0YWluUHRyPFdl
YkNvcmVBVkZNb3ZpZU9ic2VydmVyPiBtX29iamNPYnNlcnZlcjsKICAgICBSZXRhaW5QdHI8aWQ+
IG1fdGltZU9ic2VydmVyOwogICAgIG11dGFibGUgU3RyaW5nIG1fbGFuZ3VhZ2VPZlByaW1hcnlB
dWRpb1RyYWNrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggMzAzN2VlYzRmNWVkMTU2MWNk
NjlkM2ZlMmFjNWY4NWRiNDI1NTg4Ni4uYmJmMDhjNTRjZDNhMTkxZjhhOWJhODYxYzk1M2E1YTM4
M2RkN2M5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC0xMzUsNiArMTM1LDcgQEAgU09G
VF9MSU5LX1BPSU5URVIoQVZGb3VuZGF0aW9uLCBBVlBsYXllckl0ZW1EaWRQbGF5VG9FbmRUaW1l
Tm90aWZpY2F0aW9uLCBOU1N0cmkKIFNPRlRfTElOS19QT0lOVEVSKEFWRm91bmRhdGlvbiwgQVZB
c3NldEltYWdlR2VuZXJhdG9yQXBlcnR1cmVNb2RlQ2xlYW5BcGVydHVyZSwgTlNTdHJpbmcgKikK
IFNPRlRfTElOS19QT0lOVEVSKEFWRm91bmRhdGlvbiwgQVZVUkxBc3NldFJlZmVyZW5jZVJlc3Ry
aWN0aW9uc0tleSwgTlNTdHJpbmcgKikKIFNPRlRfTElOS19QT0lOVEVSKEFWRm91bmRhdGlvbiwg
QVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19Q
T0lOVEVSKEFWRm91bmRhdGlvbiwgQVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdEZpbGws
IE5TU3RyaW5nICopCiBTT0ZUX0xJTktfUE9JTlRFUihBVkZvdW5kYXRpb24sIEFWTGF5ZXJWaWRl
b0dyYXZpdHlSZXNpemUsIE5TU3RyaW5nICopCiBTT0ZUX0xJTktfUE9JTlRFUihDb3JlVmlkZW8s
IGtDVlBpeGVsQnVmZmVyUGl4ZWxGb3JtYXRUeXBlS2V5LCBOU1N0cmluZyAqKQogCkBAIC0xNTUs
NiArMTU2LDcgQEAgU09GVF9MSU5LX0NPTlNUQU5UKENvcmVNZWRpYSwga0NNVGltZVplcm8sIENN
VGltZSkKICNkZWZpbmUgQVZBc3NldEltYWdlR2VuZXJhdG9yQXBlcnR1cmVNb2RlQ2xlYW5BcGVy
dHVyZSBnZXRBVkFzc2V0SW1hZ2VHZW5lcmF0b3JBcGVydHVyZU1vZGVDbGVhbkFwZXJ0dXJlKCkK
ICNkZWZpbmUgQVZVUkxBc3NldFJlZmVyZW5jZVJlc3RyaWN0aW9uc0tleSBnZXRBVlVSTEFzc2V0
UmVmZXJlbmNlUmVzdHJpY3Rpb25zS2V5KCkKICNkZWZpbmUgQVZMYXllclZpZGVvR3Jhdml0eVJl
c2l6ZUFzcGVjdCBnZXRBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0KCkKKyNkZWZpbmUg
QVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdEZpbGwgZ2V0QVZMYXllclZpZGVvR3Jhdml0
eVJlc2l6ZUFzcGVjdEZpbGwoKQogI2RlZmluZSBBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplIGdl
dEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemUoKQogI2RlZmluZSBrQ1ZQaXhlbEJ1ZmZlclBpeGVs
Rm9ybWF0VHlwZUtleSBnZXRrQ1ZQaXhlbEJ1ZmZlclBpeGVsRm9ybWF0VHlwZUtleSgpCiAKQEAg
LTMxMyw2ICszMTUsOSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYQogTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQzo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyhN
ZWRpYVBsYXllciogcGxheWVyKQogICAgIDogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
KHBsYXllcikKICAgICAsIG1fd2Vha1B0ckZhY3RvcnkodGhpcykKKyNpZiBQTEFURk9STShJT1Mp
CisgICAgLCBtX3ZpZGVvRnVsbHNjcmVlbkdyYXZpdHkoTWVkaWFQbGF5ZXI6OlZpZGVvR3Jhdml0
eVJlc2l6ZUFzcGVjdCkKKyNlbmRpZgogICAgICwgbV9vYmpjT2JzZXJ2ZXIoYWRvcHROUyhbW1dl
YkNvcmVBVkZNb3ZpZU9ic2VydmVyIGFsbG9jXSBpbml0V2l0aENhbGxiYWNrOnRoaXNdKSkKICAg
ICAsIG1fdmlkZW9GcmFtZUhhc0RyYXduKGZhbHNlKQogICAgICwgbV9oYXZlQ2hlY2tlZFBsYXlh
YmlsaXR5KGZhbHNlKQpAQCAtNDk0LDYgKzQ5OSwxMiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZVZpZGVvTGF5ZXIoKQogICAgICAgICB1cGRhdGVWaWRl
b0xheWVyR3Jhdml0eSgpOwogICAgICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjpjcmVhdGVWaWRlb0xheWVyKCVwKSAtIHJldHVybmluZyAlcCIsIHRo
aXMsIG1fdmlkZW9MYXllci5nZXQoKSk7CiAKKyNpZiBQTEFURk9STShJT1MpCisgICAgICAgIGlm
IChtX3ZpZGVvRnVsbHNjcmVlbkxheWVyKSB7CisgICAgICAgICAgICBbbV92aWRlb0xheWVyIHNl
dEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgbV92aWRlb0Z1bGxzY3JlZW5GcmFtZS53aWR0aCgpLCBt
X3ZpZGVvRnVsbHNjcmVlbkZyYW1lLmhlaWdodCgpKV07CisgICAgICAgICAgICBbbV92aWRlb0Z1
bGxzY3JlZW5MYXllciBhZGRTdWJsYXllcjptX3ZpZGVvTGF5ZXIuZ2V0KCldOworICAgICAgICB9
CisjZW5kaWYKICAgICAgICAgcGxheWVyKCktPm1lZGlhUGxheWVyQ2xpZW50KCktPm1lZGlhUGxh
eWVyUmVuZGVyaW5nTW9kZUNoYW5nZWQocGxheWVyKCkpOwogICAgIH0pOwogfQpAQCAtNzU1LDYg
Kzc2Niw1MyBAQCBQbGF0Zm9ybUxheWVyKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKICAgICByZXR1cm4gbV92aWRlb0xheWVyLmdldCgp
OwogfQogCisjaWYgUExBVEZPUk0oSU9TKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiB2aWRlb0Z1
bGxzY3JlZW5MYXllcikKK3sKKyAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5MYXllciA9PSB2aWRl
b0Z1bGxzY3JlZW5MYXllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fdmlkZW9GdWxs
c2NyZWVuTGF5ZXIpCisgICAgICAgW21fdmlkZW9MYXllciByZW1vdmVGcm9tU3VwZXJsYXllcl07
CisKKyAgICBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyID0gdmlkZW9GdWxsc2NyZWVuTGF5ZXI7CisK
KyAgICBpZiAoIW1fdmlkZW9GdWxsc2NyZWVuTGF5ZXIgfHwgIW1fdmlkZW9MYXllcikKKyAgICAg
ICAgcmV0dXJuOworCisgICAgW21fdmlkZW9MYXllciBzZXRGcmFtZTpDR1JlY3RNYWtlKDAsIDAs
IG1fdmlkZW9GdWxsc2NyZWVuRnJhbWUud2lkdGgoKSwgbV92aWRlb0Z1bGxzY3JlZW5GcmFtZS5o
ZWlnaHQoKSldOworICAgIFttX3ZpZGVvRnVsbHNjcmVlbkxheWVyIGFkZFN1YmxheWVyOm1fdmlk
ZW9MYXllci5nZXQoKV07Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0IGZyYW1lKQoreworICAgIG1f
dmlkZW9GdWxsc2NyZWVuRnJhbWUgPSBmcmFtZTsKKyAgICBpZiAoIW1fdmlkZW9GdWxsc2NyZWVu
TGF5ZXIgfHwgIW1fdmlkZW9MYXllcikKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIFttX3Zp
ZGVvTGF5ZXIgc2V0RnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCBmcmFtZS53aWR0aCgpLCBmcmFtZS5o
ZWlnaHQoKSldOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OnNldFZpZGVvRnVsbHNjcmVlbkdyYXZpdHkoTWVkaWFQbGF5ZXI6OlZpZGVvR3Jhdml0eSBncmF2
aXR5KQoreworICAgIG1fdmlkZW9GdWxsc2NyZWVuR3Jhdml0eSA9IGdyYXZpdHk7CisgICAgaWYg
KCFtX3ZpZGVvTGF5ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIE5TU3RyaW5nICp2aWRlb0dy
YXZpdHkgPSBBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0OworICAgIGlmIChncmF2aXR5
ID09IE1lZGlhUGxheWVyOjpWaWRlb0dyYXZpdHlSZXNpemUpCisgICAgICAgIHZpZGVvR3Jhdml0
eSA9IEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemU7CisgICAgZWxzZSBpZiAoZ3Jhdml0eSA9PSBN
ZWRpYVBsYXllcjo6VmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0KQorICAgICAgICB2aWRlb0dyYXZp
dHkgPSBBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0OworICAgIGVsc2UgaWYgKGdyYXZp
dHkgPT0gTWVkaWFQbGF5ZXI6OlZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdEZpbGwpCisgICAgICAg
IHZpZGVvR3Jhdml0eSA9IEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3RGaWxsOworICAg
IGVsc2UKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisKKyAgICBbbV92aWRlb0xheWVy
IHNldFZpZGVvR3Jhdml0eTp2aWRlb0dyYXZpdHldOworfQorI2VuZGlmCisKIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGxhdGZvcm1TZXRWaXNpYmxlKGJvb2wgaXNW
aXNpYmxlKQogewogICAgIFtDQVRyYW5zYWN0aW9uIGJlZ2luXTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlckFWS2l0Lm1tCmluZGV4IGFjOTc1YTQ3YWM3YmI4ODA1N2M5M2QwNmE2MmQ5MWU5ZTJmMTdm
MWYuLmMwMWEzMDExNzNhZjJjZWUwNTk1MjNiNDJiM2NhZjg0ODg0ZDA1YzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
QVZLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJBVktpdC5tbQpAQCAtMzIsNiArMzIsNyBAQAogI2ltcG9ydCAiTG9nZ2lu
Zy5oIgogI2ltcG9ydCAiV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaCIKICNpbXBv
cnQgIldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50LmgiCisjaW1wb3J0IDxRdWFy
dHpDb3JlL0NvcmVBbmltYXRpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZVRocmVhZFJ1
bi5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTU1LDYgKzU2LDcgQEAgcHVibGlj
OgogICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdD4gX2ludGVyZmFj
ZTsKICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxNZWRpYUVsZW1lbnQ+IF9tb2Rl
bDsKICAgICBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ2hhbmdlT2JzZXJ2ZXIgX2NoYW5n
ZU9ic2VydmVyOworICAgIFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBfdmlkZW9GdWxsc2NyZWVu
TGF5ZXI7CiB9CiAKIC0gKGluc3RhbmNldHlwZSlpbml0CkBAIC04OCwxMyArOTAsMTUgQEAgcHVi
bGljOgogICAgIFtzZWxmIHJldGFpbl07IC8vIEJhbGFuY2VkIGJ5IC1yZWxlYXNlIGluIGRpZEV4
aXRGdWxsc2NyZWVuOgogICAgIAogICAgIFVOVVNFRF9QQVJBTShzY3JlZW4pOworICAgIF92aWRl
b0Z1bGxzY3JlZW5MYXllciA9IFtDQUxheWVyIGxheWVyXTsKICAgICBfaW50ZXJmYWNlID0gYWRv
cHRSZWYobmV3IFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0KTsKICAgICBfaW50ZXJm
YWNlLT5zZXRXZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcigmX2NoYW5nZU9ic2VydmVy
KTsKICAgICBfbW9kZWwgPSBhZG9wdFJlZihuZXcgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxNZWRp
YUVsZW1lbnQpOwogICAgIF9tb2RlbC0+c2V0V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlKF9p
bnRlcmZhY2UuZ2V0KCkpOwogICAgIF9pbnRlcmZhY2UtPnNldFdlYlZpZGVvRnVsbHNjcmVlbk1v
ZGVsKF9tb2RlbC5nZXQoKSk7CiAgICAgX21vZGVsLT5zZXRNZWRpYUVsZW1lbnQoX21lZGlhRWxl
bWVudC5nZXQoKSk7Ci0gICAgX2ludGVyZmFjZS0+ZW50ZXJGdWxsc2NyZWVuKCk7CisgICAgX21v
ZGVsLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihfdmlkZW9GdWxsc2NyZWVuTGF5ZXIuZ2V0KCkp
OworICAgIF9pbnRlcmZhY2UtPmVudGVyRnVsbHNjcmVlbigqX3ZpZGVvRnVsbHNjcmVlbkxheWVy
LmdldCgpKTsKIH0KIAogLSAodm9pZClleGl0RnVsbHNjcmVlbgpAQCAtMTA5LDEwICsxMTMsMTEg
QEAgcHVibGljOgogLSAodm9pZClkaWRFeGl0RnVsbHNjcmVlbgogewogICAgIFdlYlRocmVhZFJ1
biheewotICAgICAgICBfbW9kZWwtPnNldE1lZGlhRWxlbWVudChudWxscHRyKTsKICAgICAgICAg
X2ludGVyZmFjZS0+c2V0V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwobnVsbHB0cik7Ci0gICAgICAg
IF9pbnRlcmZhY2UtPnNldFdlYlZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKG51bGxwdHIp
OwogICAgICAgICBfbW9kZWwtPnNldFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZShudWxscHRy
KTsKKyAgICAgICAgX21vZGVsLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihudWxscHRyKTsKKyAg
ICAgICAgX21vZGVsLT5zZXRNZWRpYUVsZW1lbnQobnVsbHB0cik7CisgICAgICAgIF9pbnRlcmZh
Y2UtPnNldFdlYlZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKG51bGxwdHIpOwogICAgICAg
ICBfbW9kZWwgPSBudWxscHRyOwogICAgICAgICBfaW50ZXJmYWNlID0gbnVsbHB0cjsKICAgICAg
ICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlLmgKaW5kZXggYTljNDA3Mzc2M2FkOTdiYmUzNzI1Y2RjNzYyYzVk
OWJmNzgwZTZiMC4uZjNlOTFmYjViZDFhOTRjMTk2OWExZWE2NDExYjIwNGQ4MzkwYzUxMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2UuaApAQCAtNDAsOCArNDAsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHNldEN1cnJlbnRUaW1lKGRvdWJsZSBjdXJyZW50VGltZSwgZG91YmxlIGFuY2hvclRpbWUp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UmF0ZShib29sIGlzUGxheWluZywgZmxvYXQgcGxh
eWJhY2tSYXRlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFZpZGVvRGltZW5zaW9ucyhib29s
IGhhc1ZpZGVvLCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIHdpbGxMZW5kVmlkZW9MYXllcihQbGF0Zm9ybUxheWVyKikgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBkaWRMZW5kVmlkZW9MYXllcigpID0gMDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0LmgKaW5kZXggODM0NDkwODQwZTdhMzZjZWU1ODUxNWZhNWNlMTQ0MGUxNzlkNTM0OS4u
Y2Y4ZjQyMDU5NGE1ZDhmN2ZmYmJlM2IyZTM0ZDAwNGVjZWIwYjgzMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUFWS2l0LmgKQEAgLTQxLDcgKzQxLDcgQEAgT0JKQ19DTEFTUyBBVlBsYXllclZpZXdD
b250cm9sbGVyOwogT0JKQ19DTEFTUyBVSVZpZXdDb250cm9sbGVyOwogT0JKQ19DTEFTUyBVSVdp
bmRvdzsKIE9CSkNfQ0xBU1MgQ0FMYXllcjsKLU9CSkNfQ0xBU1MgV2ViQVZQbGF5ZXJMYXllcjsK
K09CSkNfQ0xBU1MgV2ViQVZWaWRlb0xheWVyOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbDsKQEAgLTYyLDcgKzYyLDcgQEAgY2xhc3MgV2ViVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQKICAgICBSZXRhaW5QdHI8VUlWaWV3Q29udHJvbGxl
cj4gbV92aWV3Q29udHJvbGxlcjsKICAgICBSZXRhaW5QdHI8VUlXaW5kb3c+IG1fd2luZG93Owog
ICAgIFJldGFpblB0cjxDQUxheWVyPiBtX3ZpZGVvTGF5ZXI7Ci0gICAgUmV0YWluUHRyPFdlYkFW
UGxheWVyTGF5ZXI+IG1fdmlkZW9MYXllckNvbnRhaW5lcjsKKyAgICBSZXRhaW5QdHI8V2ViQVZW
aWRlb0xheWVyPiBtX3ZpZGVvTGF5ZXJDb250YWluZXI7CiAgICAgV2ViVmlkZW9GdWxsc2NyZWVu
TW9kZWwqIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWw7CiAgICAgV2ViVmlkZW9GdWxsc2NyZWVuQ2hh
bmdlT2JzZXJ2ZXIqIG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyOwogICAgICAgICAKQEAgLTgx
LDEwICs4MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0UmF0ZShib29sIGlzUGxh
eWluZywgZmxvYXQgcGxheWJhY2tSYXRlKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
VmlkZW9EaW1lbnNpb25zKGJvb2wgaGFzVmlkZW8sIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQp
IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHdpbGxMZW5kVmlkZW9MYXllcihQbGF0Zm9y
bUxheWVyKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZExlbmRWaWRlb0xheWVyKCkg
b3ZlcnJpZGU7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZW50ZXJGdWxsc2NyZWVuKCk7CisgICAgdmly
dHVhbCB2b2lkIGVudGVyRnVsbHNjcmVlbihQbGF0Zm9ybUxheWVyJik7CiAgICAgdmlydHVhbCB2
b2lkIGV4aXRGdWxsc2NyZWVuKCk7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0K
aW5kZXggZWVjNmM5MGRkNTY0ZDMzMmE2MWE2ODFhNzViNWNiNjM1YmU5NGY3MC4uOTcwNjEwYThh
MGQxNThiYmE4YjY1NWM1MDY2MmQwNDY1NTZlOTUwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdC5tbQpAQCAtMzEsMTggKzMxLDE4IEBACiAjaW1wb3J0ICJXZWJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdC5oIgogCiAjaW1wb3J0ICJMb2dnaW5nLmgiCi0jaW1wb3J0IDxDb3JlTWVk
aWEvQ01UaW1lLmg+Ci0jaW1wb3J0IDxVSUtpdC9VSUtpdC5oPgotI2ltcG9ydCA8V2ViQ29yZS9T
b2Z0TGlua2luZy5oPgotI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlVGhyZWFkUnVuLmg+Ci0jaW1w
b3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0ICJXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbC5o
IgogI2ltcG9ydCA8QVZLaXQvQVZLaXQuaD4KICNpbXBvcnQgPEFWS2l0L0FWUGxheWVyQ29udHJv
bGxlci5oPgorI2ltcG9ydCA8QVZLaXQvQVZQbGF5ZXJWaWV3Q29udHJvbGxlcl9Qcml2YXRlLmg+
CiAjaW1wb3J0IDxBVktpdC9BVlBsYXllclZpZXdDb250cm9sbGVyX1dlYktpdE9ubHkuaD4KLSNp
bXBvcnQgPEFWS2l0L0FWVmlkZW9MYXllci5oPgogI2ltcG9ydCA8QVZLaXQvQVZWYWx1ZVRpbWlu
Zy5oPgotI2ltcG9ydCA8QVZLaXQvQVZQbGF5ZXJWaWV3Q29udHJvbGxlcl9Qcml2YXRlLmg+Cisj
aW1wb3J0IDxBVktpdC9BVlZpZGVvTGF5ZXIuaD4KKyNpbXBvcnQgPENvcmVNZWRpYS9DTVRpbWUu
aD4KKyNpbXBvcnQgPFVJS2l0L1VJS2l0Lmg+CisjaW1wb3J0IDxXZWJDb3JlL1NvZnRMaW5raW5n
Lmg+CisjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVUaHJlYWRSdW4uaD4KKyNpbXBvcnQgPHd0Zi9S
ZXRhaW5QdHIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTE3NiwyMyArMTc2
LDYxIEBAIFNPRlRfTElOSyhDb3JlTWVkaWEsIENNVGltZUdldFNlY29uZHMsIEZsb2F0NjQsIChD
TVRpbWUgdGltZSksICh0aW1lKSkKIAogQGVuZAogCi1AaW50ZXJmYWNlIFdlYkFWUGxheWVyTGF5
ZXIgOiBDQUxheWVyIDxBVlZpZGVvTGF5ZXI+Ci0rKFdlYkFWUGxheWVyTGF5ZXIgKilwbGF5ZXJM
YXllcjsKK0BpbnRlcmZhY2UgV2ViQVZWaWRlb0xheWVyIDogQ0FMYXllciA8QVZWaWRlb0xheWVy
PgorKyhXZWJBVlZpZGVvTGF5ZXIgKil2aWRlb0xheWVyOwogQHByb3BlcnR5IChub25hdG9taWMp
IEFWVmlkZW9MYXllckdyYXZpdHkgdmlkZW9MYXllckdyYXZpdHk7CiBAcHJvcGVydHkgKG5vbmF0
b21pYywgZ2V0dGVyID0gaXNSZWFkeUZvckRpc3BsYXkpIEJPT0wgcmVhZHlGb3JEaXNwbGF5Owog
QHByb3BlcnR5IChub25hdG9taWMpIENHUmVjdCB2aWRlb1JlY3Q7CiAtICh2b2lkKXNldFBsYXll
ckNvbnRyb2xsZXI6KEFWUGxheWVyQ29udHJvbGxlciAqKXBsYXllckNvbnRyb2xsZXI7CiBAZW5k
CiAKLUBpbXBsZW1lbnRhdGlvbiBXZWJBVlBsYXllckxheWVyCi0rKFdlYkFWUGxheWVyTGF5ZXIg
KilwbGF5ZXJMYXllcgorQGltcGxlbWVudGF0aW9uIFdlYkFWVmlkZW9MYXllcgogewotICAgIHJl
dHVybiBbW1tXZWJBVlBsYXllckxheWVyIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAg
UmV0YWluUHRyPFdlYkFWUGxheWVyQ29udHJvbGxlcj4gX2F2UGxheWVyQ29udHJvbGxlcjsKKyAg
ICBBVlZpZGVvTGF5ZXJHcmF2aXR5IF92aWRlb0xheWVyR3Jhdml0eTsKK30KKworKyhXZWJBVlZp
ZGVvTGF5ZXIgKil2aWRlb0xheWVyCit7CisgICAgcmV0dXJuIFtbW1dlYkFWVmlkZW9MYXllciBh
bGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOwogfQogCiAtICh2b2lkKXNldFBsYXllckNvbnRyb2xs
ZXI6KEFWUGxheWVyQ29udHJvbGxlciAqKXBsYXllckNvbnRyb2xsZXIKIHsKLSAgICBVTlVTRURf
UEFSQU0ocGxheWVyQ29udHJvbGxlcik7CisgICAgQVNTRVJUKCFwbGF5ZXJDb250cm9sbGVyIHx8
IFtwbGF5ZXJDb250cm9sbGVyIGlzS2luZE9mQ2xhc3M6W1dlYkFWUGxheWVyQ29udHJvbGxlciBj
bGFzc11dKTsKKyAgICBfYXZQbGF5ZXJDb250cm9sbGVyID0gKFdlYkFWUGxheWVyQ29udHJvbGxl
ciAqKXBsYXllckNvbnRyb2xsZXI7Cit9CisKKy0gKHZvaWQpc2V0Qm91bmRzOihDR1JlY3QpYm91
bmRzCit7CisgICAgW3N1cGVyIHNldEJvdW5kczpib3VuZHNdOworICAgIGlmIChbX2F2UGxheWVy
Q29udHJvbGxlciBkZWxlZ2F0ZV0pCisgICAgICAgIFtfYXZQbGF5ZXJDb250cm9sbGVyIGRlbGVn
YXRlXS0+c2V0VmlkZW9MYXllckZyYW1lKEZsb2F0UmVjdCgwLCAwLCBib3VuZHMuc2l6ZS53aWR0
aCwgYm91bmRzLnNpemUuaGVpZ2h0KSk7Cit9CisKKy0gKHZvaWQpc2V0VmlkZW9MYXllckdyYXZp
dHk6KEFWVmlkZW9MYXllckdyYXZpdHkpdmlkZW9MYXllckdyYXZpdHkKK3sKKyAgICBfdmlkZW9M
YXllckdyYXZpdHkgPSB2aWRlb0xheWVyR3Jhdml0eTsKKyAgICAKKyAgICBpZiAoIVtfYXZQbGF5
ZXJDb250cm9sbGVyIGRlbGVnYXRlXSkKKyAgICAgICAgcmV0dXJuOworCisgICAgV2ViQ29yZTo6
V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWw6OlZpZGVvR3Jhdml0eSBncmF2aXR5ID0gV2ViQ29yZTo6
V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWw6OlZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdDsKKyAgICBp
ZiAodmlkZW9MYXllckdyYXZpdHkgPT0gQVZWaWRlb0xheWVyR3Jhdml0eVJlc2l6ZSkKKyAgICAg
ICAgZ3Jhdml0eSA9IFdlYkNvcmU6OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsOjpWaWRlb0dyYXZp
dHlSZXNpemU7CisgICAgaWYgKHZpZGVvTGF5ZXJHcmF2aXR5ID09IEFWVmlkZW9MYXllckdyYXZp
dHlSZXNpemVBc3BlY3QpCisgICAgICAgIGdyYXZpdHkgPSBXZWJDb3JlOjpXZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbDo6VmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0OworICAgIGVsc2UgaWYgKHZpZGVv
TGF5ZXJHcmF2aXR5ID09IEFWVmlkZW9MYXllckdyYXZpdHlSZXNpemVBc3BlY3RGaWxsKQorICAg
ICAgICBncmF2aXR5ID0gV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWw6OlZpZGVvR3Jh
dml0eVJlc2l6ZUFzcGVjdEZpbGw7CisgICAgZWxzZQorICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAKKyAgICBbX2F2UGxheWVyQ29udHJvbGxlciBkZWxlZ2F0ZV0tPnNldFZpZGVv
TGF5ZXJHcmF2aXR5KGdyYXZpdHkpOworfQorCistIChBVlZpZGVvTGF5ZXJHcmF2aXR5KXZpZGVv
TGF5ZXJHcmF2aXR5Cit7CisgICAgcmV0dXJuIF92aWRlb0xheWVyR3Jhdml0eTsKIH0KIAogQGVu
ZApAQCAtMjczLDIxICszMTEsMTcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdDo6c2V0VmlkZW9EaW1lbnNpb25zKGJvb2wgaGFzVmlkZW8sIGZsb2F0IHcKICAgICBwbGF5
ZXJDb250cm9sbGVyKCkuY29udGVudERpbWVuc2lvbnMgPSBDR1NpemVNYWtlKHdpZHRoLCBoZWln
aHQpOwogfQogCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjplbnRlckZ1
bGxzY3JlZW4oKQotewotICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwtPmJvcnJvd1ZpZGVvTGF5
ZXIoKTsKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZG9FbnRl
ckZ1bGxzY3JlZW4oKQordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZW50
ZXJGdWxsc2NyZWVuKFBsYXRmb3JtTGF5ZXImIHZpZGVvTGF5ZXIpCiB7CiAgICAgX19ibG9jayBS
ZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ+IHByb3RlY3QodGhpcyk7CiAg
ICAgCisgICAgbV92aWRlb0xheWVyID0gJnZpZGVvTGF5ZXI7CisgICAgCiAgICAgZGlzcGF0Y2hf
YXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKICAgICAgICAgW21fdmlkZW9MYXll
ciByZW1vdmVGcm9tU3VwZXJsYXllcl07CiAgICAgICAgIAotICAgICAgICBtX3ZpZGVvTGF5ZXJD
b250YWluZXIgPSBbV2ViQVZQbGF5ZXJMYXllciBwbGF5ZXJMYXllcl07Ci0gICAgICAgIGlmICht
X3ZpZGVvTGF5ZXIuZ2V0KCkpCi0gICAgICAgICAgICBbbV92aWRlb0xheWVyQ29udGFpbmVyIGFk
ZFN1YmxheWVyOm1fdmlkZW9MYXllci5nZXQoKV07CisgICAgICAgIG1fdmlkZW9MYXllckNvbnRh
aW5lciA9IFtXZWJBVlZpZGVvTGF5ZXIgdmlkZW9MYXllcl07CisgICAgICAgIFttX3ZpZGVvTGF5
ZXJDb250YWluZXIgYWRkU3VibGF5ZXI6bV92aWRlb0xheWVyLmdldCgpXTsKICAgICAgICAgCiAg
ICAgICAgIENHU2l6ZSB2aWRlb1NpemUgPSBwbGF5ZXJDb250cm9sbGVyKCkuY29udGVudERpbWVu
c2lvbnM7CiAgICAgICAgIENHUmVjdCB2aWRlb1JlY3QgPSBDR1JlY3RNYWtlKDAsIDAsIHZpZGVv
U2l6ZS53aWR0aCwgdmlkZW9TaXplLmhlaWdodCk7CkBAIC0zMTUsMjEgKzM0OSw2IEBAIHZvaWQg
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmRvRW50ZXJGdWxsc2NyZWVuKCkKICAg
ICB9KTsKIH0KIAotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6d2lsbExl
bmRWaWRlb0xheWVyKFBsYXRmb3JtTGF5ZXIqIHZpZGVvTGF5ZXIpCi17Ci0gICAgQVNTRVJUKCFt
X3ZpZGVvTGF5ZXIpOwotICAgIAotICAgIG1fdmlkZW9MYXllciA9IHZpZGVvTGF5ZXI7Ci0gICAg
aWYgKCF2aWRlb0xheWVyKQotICAgICAgICBkb0VudGVyRnVsbHNjcmVlbigpOwotfQotCi12b2lk
IFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpkaWRMZW5kVmlkZW9MYXllcigpCi17
Ci0gICAgaWYgKG1fdmlkZW9MYXllcikKLSAgICAgICAgZG9FbnRlckZ1bGxzY3JlZW4oKTsKLX0K
LQogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZXhpdEZ1bGxzY3JlZW4o
KQogewogICAgIF9fYmxvY2sgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
PiBwcm90ZWN0KHRoaXMpOwpAQCAtMzQzLDEyICszNjIsMTEgQEAgdm9pZCBXZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VBVktpdDo6ZXhpdEZ1bGxzY3JlZW4oKQogICAgICAgICAgICAgbV9wbGF5
ZXJWaWV3Q29udHJvbGxlciA9IG5pbDsKICAgICAgICAgICAgIG1fdmlld0NvbnRyb2xsZXIgPSBu
aWw7CiAgICAgICAgICAgICBtX3dpbmRvdyA9IG5pbDsKLSAgICAgICAgICAgIGlmIChtX3ZpZGVv
TGF5ZXIuZ2V0KCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgW21fdmlkZW9MYXll
ciByZW1vdmVGcm9tU3VwZXJsYXllcl07Ci0gICAgICAgICAgICAgICAgbV92aWRlb0Z1bGxzY3Jl
ZW5Nb2RlbC0+cmV0dXJuVmlkZW9MYXllcigpOwotICAgICAgICAgICAgICAgIG1fdmlkZW9MYXll
ciA9IG5pbDsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFttX3ZpZGVvTGF5ZXIgcmVtb3Zl
RnJvbVN1cGVybGF5ZXJdOworICAgICAgICAgICAgbV92aWRlb0xheWVyID0gbmlsOworICAgICAg
ICAgICAgW21fdmlkZW9MYXllckNvbnRhaW5lciByZW1vdmVGcm9tU3VwZXJsYXllcl07CisgICAg
ICAgICAgICBtX3ZpZGVvTGF5ZXJDb250YWluZXIgPSBuaWw7CisKICAgICAgICAgICAgIGlmICht
X2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcikKICAgICAgICAgICAgICAgICBtX2Z1bGxzY3JlZW5D
aGFuZ2VPYnNlcnZlci0+ZGlkRXhpdEZ1bGxzY3JlZW4oKTsKICAgICAgICAgICAgIHByb3RlY3Qu
Y2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRl
b0Z1bGxzY3JlZW5Nb2RlbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVv
RnVsbHNjcmVlbk1vZGVsLmgKaW5kZXggZjU1ZmFhZWIyYWFlZGNiMzFiNTE1NDA1YzBjMzlkNmQ3
NDIxY2E4MS4uNzliOTJkMTVkYzNhMGM0NDJjYjIxZWQ5OGRmNjg0ZjYxZDc1ZTdlYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVs
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1v
ZGVsLmgKQEAgLTI5LDE4ICsyOSwyMSBAQAogCiAjaWYgUExBVEZPUk0oSU9TKQogCisjaW5jbHVk
ZSA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBX
ZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViVmlkZW9G
dWxsc2NyZWVuTW9kZWwoKSB7IH07Ci0gICAgdmlydHVhbCB2b2lkIGJvcnJvd1ZpZGVvTGF5ZXIo
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJldHVyblZpZGVvTGF5ZXIoKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHBsYXkoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHBhdXNlKCkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCB0b2dnbGVQbGF5U3RhdGUoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNl
ZWtUb1RpbWUoZG91YmxlIHRpbWUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEV4aXRG
dWxsc2NyZWVuKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0xheWVyRnJhbWUoRmxv
YXRSZWN0KSA9IDA7CisgICAgZW51bSBWaWRlb0dyYXZpdHkgeyBWaWRlb0dyYXZpdHlSZXNpemUs
IFZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCwgVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0RmlsbCB9
OworICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0xheWVyR3Jhdml0eShWaWRlb0dyYXZpdHkpID0g
MDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJW
aWRlb0Z1bGxzY3JlZW5Nb2RlbE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50LmgKaW5kZXggY2Y3MDc0
ZmM0NGZmZTVhMGE4NTRmZGNmMGYwZjU4ODZiOGUxNjAyYS4uZTI2NDcwODEwMzBkMzg2ZjJjZWY5
MzZiZGY2NWExZDE1NzViYzc5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50LmgK
QEAgLTMwLDYgKzMwLDcgQEAKICNpZiBQTEFURk9STShJT1MpCiAKICNpbmNsdWRlIDxXZWJDb3Jl
L0V2ZW50TGlzdGVuZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUGxhdGZvcm1MYXllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvV2ViVmlkZW9G
dWxsc2NyZWVuTW9kZWwuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC00MSwyNyArNDIs
MzAgQEAgY2xhc3MgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlOwogCiBjbGFzcyBXZWJWaWRl
b0Z1bGxzY3JlZW5Nb2RlbE1lZGlhRWxlbWVudCA6IHB1YmxpYyBXZWJWaWRlb0Z1bGxzY3JlZW5N
b2RlbCwgcHVibGljIEV2ZW50TGlzdGVuZXIgewogICAgIFJlZlB0cjxIVE1MTWVkaWFFbGVtZW50
PiBtX21lZGlhRWxlbWVudDsKLSAgICBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gbV9ib3Jyb3dl
ZFZpZGVvTGF5ZXI7CisgICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IG1fdmlkZW9GdWxsc2Ny
ZWVuTGF5ZXI7CiAgICAgYm9vbCBtX2lzTGlzdGVuaW5nOwogICAgIFdlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZSogbV92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2U7CisgICAgRmxvYXRSZWN0IG1f
dmlkZW9GcmFtZTsKICAgICAKIHB1YmxpYzoKICAgICBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbE1l
ZGlhRWxlbWVudCgpOwogICAgIHZpcnR1YWwgfldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsTWVkaWFF
bGVtZW50KCk7CiAgICAgdm9pZCBzZXRXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UoV2ViVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlKiBpbnRlcmZhY2UpIHttX3ZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZSA9IGludGVyZmFjZTt9CiAgICAgdm9pZCBzZXRNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxl
bWVudCopOworICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciop
OwogICAgIAogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChXZWJDb3JlOjpTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgV2ViQ29yZTo6RXZlbnQqKSBvdmVycmlkZTsKICAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgcmhzKSBvdmVycmlkZQogICAgICAgICB7cmV0dXJu
IHN0YXRpY19jYXN0PFdlYkNvcmU6OkV2ZW50TGlzdGVuZXIqPih0aGlzKSA9PSAmcmhzO30KIAot
ICAgIHZpcnR1YWwgdm9pZCBib3Jyb3dWaWRlb0xheWVyKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIHJldHVyblZpZGVvTGF5ZXIoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcGxh
eSgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBwYXVzZSgpIG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgdm9pZCB0b2dnbGVQbGF5U3RhdGUoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQg
c2Vla1RvVGltZShkb3VibGUgdGltZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHJlcXVl
c3RFeGl0RnVsbHNjcmVlbigpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0xh
eWVyRnJhbWUoRmxvYXRSZWN0KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9M
YXllckdyYXZpdHkoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWw6OlZpZGVvR3Jhdml0eSkgb3ZlcnJp
ZGU7CisKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9X
ZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbE1lZGlhRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbE1lZGlhRWxlbWVudC5tbQppbmRleCAw
MDBiMDcxN2ViMzEwM2MxYWIxZGI4MGU0MTcyMjRmNjkwYzAyOWI1Li5hYWMzNDZhZDEyZDU3NzRi
MzU3M2NlYTZhYjdiMDgxZmExNDUxM2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxNZWRpYUVsZW1lbnQubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsTWVkaWFFbGVt
ZW50Lm1tCkBAIC00MSw2ICs0MSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxWaWRlb0VsZW1l
bnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvU29mdExpbmtpbmcuaD4KICNpbXBvcnQgPFdlYkNvcmUv
V2ViQ29yZVRocmVhZFJ1bi5oPgorI2ltcG9ydCA8UXVhcnR6Q29yZS9Db3JlQW5pbWF0aW9uLmg+
CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpA
QCAtODksNyArOTAsOCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50
OjpzZXRNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogbWVkaQogICAgIGlmIChpc0hUTUxW
aWRlb0VsZW1lbnQobV9tZWRpYUVsZW1lbnQuZ2V0KCkpKSB7CiAgICAgICAgIEhUTUxWaWRlb0Vs
ZW1lbnQgKnZpZGVvRWxlbWVudCA9IHRvSFRNTFZpZGVvRWxlbWVudChtX21lZGlhRWxlbWVudC5n
ZXQoKSk7CiAgICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlLT5zZXRWaWRlb0RpbWVu
c2lvbnModHJ1ZSwgdmlkZW9FbGVtZW50LT52aWRlb1dpZHRoKCksIHZpZGVvRWxlbWVudC0+dmlk
ZW9IZWlnaHQoKSk7Ci0gICAgfQorICAgIH0gZWxzZQorICAgICAgICBtX3ZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZS0+c2V0VmlkZW9EaW1lbnNpb25zKGZhbHNlLCAwLCAwKTsKIH0KIAogdm9pZCBX
ZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbE1lZGlhRWxlbWVudDo6aGFuZGxlRXZlbnQoV2ViQ29yZTo6
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkNvcmU6OkV2ZW50KiBldmVudCkKQEAgLTEwOSwy
OSArMTExLDE2IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxNZWRpYUVsZW1lbnQ6Omhh
bmRsZUV2ZW50KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvCiAgICAgICAgIG1fdmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlLT5zZXRDdXJyZW50VGltZShtX21lZGlhRWxlbWVudC0+Y3VycmVudFRp
bWUoKSwgW1tOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXSBzeXN0ZW1VcHRpbWVdKTsKIH0KIAot
dm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbE1lZGlhRWxlbWVudDo6Ym9ycm93VmlkZW9MYXll
cigpCit2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50OjpzZXRWaWRlb0Z1
bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiB2aWRlb0xheWVyKQogewotICAgIEFTU0VSVCgh
bV9ib3Jyb3dlZFZpZGVvTGF5ZXIpOworICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbkxheWVyID09
IHZpZGVvTGF5ZXIpCisgICAgICAgIHJldHVybjsKICAgICAKLSAgICBfX2Jsb2NrIFJlZlB0cjxX
ZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbE1lZGlhRWxlbWVudD4gcHJvdGVjdCh0aGlzKTsKLSAgICBX
ZWJUaHJlYWRSdW4oXnsKLSAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UtPndpbGxM
ZW5kVmlkZW9MYXllcihtX21lZGlhRWxlbWVudC0+cGxhdGZvcm1MYXllcigpKTsKLSAgICAgICAg
bV9ib3Jyb3dlZFZpZGVvTGF5ZXIgPSBtX21lZGlhRWxlbWVudC0+Ym9ycm93UGxhdGZvcm1MYXll
cigpOwotICAgICAgICBpZiAobV9ib3Jyb3dlZFZpZGVvTGF5ZXIuZ2V0KCkpCi0gICAgICAgICAg
ICBtX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZS0+ZGlkTGVuZFZpZGVvTGF5ZXIoKTsKLSAgICAg
ICAgcHJvdGVjdC5jbGVhcigpOwotICAgIH0pOwotfQotCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVl
bk1vZGVsTWVkaWFFbGVtZW50OjpyZXR1cm5WaWRlb0xheWVyKCkKLXsKLSAgICBBU1NFUlQobV9i
b3Jyb3dlZFZpZGVvTGF5ZXIuZ2V0KCkpOworICAgIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXIgPSB2
aWRlb0xheWVyOwogICAgIAogICAgIF9fYmxvY2sgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbk1v
ZGVsTWVkaWFFbGVtZW50PiBwcm90ZWN0KHRoaXMpOwogICAgIFdlYlRocmVhZFJ1biheewotICAg
ICAgICBBU1NFUlQobV9tZWRpYUVsZW1lbnQpOwotICAgICAgICBtX21lZGlhRWxlbWVudC0+cmV0
dXJuUGxhdGZvcm1MYXllcihtX2JvcnJvd2VkVmlkZW9MYXllci5nZXQoKSk7Ci0gICAgICAgIG1f
Ym9ycm93ZWRWaWRlb0xheWVyLmNsZWFyKCk7CisgICAgICAgIG1fbWVkaWFFbGVtZW50LT5zZXRW
aWRlb0Z1bGxzY3JlZW5MYXllcihtX3ZpZGVvRnVsbHNjcmVlbkxheWVyLmdldCgpKTsKICAgICAg
ICAgcHJvdGVjdC5jbGVhcigpOwogICAgIH0pOwogfQpAQCAtMTgwLDQgKzE2OSwyNiBAQCB2b2lk
IFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50OjpyZXF1ZXN0RXhpdEZ1bGxzY3Jl
ZW4oKQogICAgIH0pOwogfQogCit2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsTWVkaWFFbGVt
ZW50OjpzZXRWaWRlb0xheWVyRnJhbWUoRmxvYXRSZWN0IHJlY3QpCit7CisgICAgbV92aWRlb0Zy
YW1lID0gcmVjdDsKKyAgICBbbV92aWRlb0Z1bGxzY3JlZW5MYXllciBzZXRGcmFtZTpDR1JlY3Qo
cmVjdCldOworICAgIG1fbWVkaWFFbGVtZW50LT5zZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShyZWN0
KTsKK30KKwordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbE1lZGlhRWxlbWVudDo6c2V0Vmlk
ZW9MYXllckdyYXZpdHkoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWw6OlZpZGVvR3Jhdml0eSBncmF2
aXR5KQoreworICAgIE1lZGlhUGxheWVyOjpWaWRlb0dyYXZpdHkgdmlkZW9HcmF2aXR5ID0gTWVk
aWFQbGF5ZXI6OlZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdDsKKyAgICBpZiAoZ3Jhdml0eSA9PSBX
ZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbDo6VmlkZW9HcmF2aXR5UmVzaXplKQorICAgICAgICB2aWRl
b0dyYXZpdHkgPSBNZWRpYVBsYXllcjo6VmlkZW9HcmF2aXR5UmVzaXplOworICAgIGVsc2UgaWYg
KGdyYXZpdHkgPT0gV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWw6OlZpZGVvR3Jhdml0eVJlc2l6ZUFz
cGVjdCkKKyAgICAgICAgdmlkZW9HcmF2aXR5ID0gTWVkaWFQbGF5ZXI6OlZpZGVvR3Jhdml0eVJl
c2l6ZUFzcGVjdDsKKyAgICBlbHNlIGlmIChncmF2aXR5ID09IFdlYlZpZGVvRnVsbHNjcmVlbk1v
ZGVsOjpWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3RGaWxsKQorICAgICAgICB2aWRlb0dyYXZpdHkg
PSBNZWRpYVBsYXllcjo6VmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0RmlsbDsKKyAgICBlbHNlCisg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIAorICAgIG1fbWVkaWFFbGVtZW50LT5z
ZXRWaWRlb0Z1bGxzY3JlZW5HcmF2aXR5KHZpZGVvR3Jhdml0eSk7Cit9CisKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2Fj
dGlvbi5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2Fj
dGlvbi5oCmluZGV4IDk1NWYwN2VkNmY3MDVjOTI0ZTQzYjk0NTU1YjFiZjI2NmEzNWY3YzQuLmY3
ZDQwZTFmOWIxMzAwN2IyMDQzM2M2MTQwNDJhNjAzZDE2MzI3ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmgKQEAg
LTE4Myw5ICsxODMsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBhbGxvd3NVc2VyU2NhbGluZygpIGNv
bnN0IHsgcmV0dXJuIG1fYWxsb3dzVXNlclNjYWxpbmc7IH0KICAgICB2b2lkIHNldEFsbG93c1Vz
ZXJTY2FsaW5nKGJvb2wgYWxsb3dzVXNlclNjYWxpbmcpIHsgbV9hbGxvd3NVc2VyU2NhbGluZyA9
IGFsbG93c1VzZXJTY2FsaW5nOyB9CiAgICAgCi0gICAgYm9vbCBpc1ZpZGVvTGF5ZXJJRFBlbmRp
bmdGdWxsc2NyZWVuKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCBsYXll
cklEKSBjb25zdCB7IHJldHVybiBtX3ZpZGVvTGF5ZXJJRHNQZW5kaW5nRnVsbHNjcmVlbi5jb250
YWlucyhsYXllcklEKTsgfQotICAgIHZvaWQgYWRkVmlkZW9MYXllcklEUGVuZGluZ0Z1bGxzY3Jl
ZW4oV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEIGxheWVySUQpIHsgbV92
aWRlb0xheWVySURzUGVuZGluZ0Z1bGxzY3JlZW4uYXBwZW5kKGxheWVySUQpOyB9Ci0KIHByaXZh
dGU6CiAgICAgV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEIG1fcm9vdExh
eWVySUQ7CiAgICAgTGF5ZXJQcm9wZXJ0aWVzTWFwIG1fY2hhbmdlZExheWVyUHJvcGVydGllczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9T
Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5k
ZXggNTA0NTEyMGZkNDhiMWE3ZDY0ZTRmMDZmOTJjMDkxYWUwOGI5MDQxMy4uODNjNDA3MDhjMjZm
NTFhZjY3OGI3NDU2NGJmZjZiYTdlMDc4NjMzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTI1Miw4ICsyNTIsNiBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6c2V0Vmlld3BvcnRDb25maWd1cmF0aW9uTWluaW11bUxheW91dFNpemUoY29u
c3QgV2ViQ29yZTo6SW50Uwogdm9pZCBXZWJQYWdlUHJveHk6OmRpZENvbW1pdExheWVyVHJlZShj
b25zdCBXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uJiBsYXllclRyZWVUcmFuc2Fj
dGlvbikKIHsKICAgICBtX3BhZ2VDbGllbnQuZGlkQ29tbWl0TGF5ZXJUcmVlKGxheWVyVHJlZVRy
YW5zYWN0aW9uKTsKLSAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKQotICAgICAgICBt
X3ZpZGVvRnVsbHNjcmVlbk1hbmFnZXItPmRpZENvbW1pdExheWVyVHJlZShsYXllclRyZWVUcmFu
c2FjdGlvbik7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3RXaXRoR2VzdHVyZShjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5IGdyYW51
bGFyaXR5LCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRlLCBQYXNz
UmVmUHRyPEdlc3R1cmVDYWxsYmFjaz4gY2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHku
aAppbmRleCA0MzUzZGZjYmNkOTBkZjkxN2U3MDBjOWU2ZmUyZDIzMjUyOTYxMWNkLi41NDMyYjIx
OTA4ZDgzNmM1ODhhMGEzNWEwYTUzYzlhYjYxMDk5ZWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5LmgKQEAgLTQxLDIxICs0MSwxOCBAQCBPQkpDX0NMQVNTIFVJVmlldzsKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCiBjbGFzcyBXZWJQYWdlUHJveHk7Ci1jbGFzcyBSZW1vdGVMYXllclRyZWVUcmFu
c2FjdGlvbjsKIAogY2xhc3MgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5IDogcHVibGlj
IFdlYkNvcmU6OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LCBwdWJsaWMgV2ViQ29y
ZTo6V2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIsIHB1YmxpYyBXZWJDb3JlOjpXZWJW
aWRlb0Z1bGxzY3JlZW5Nb2RlbCwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
PiBjcmVhdGUoV2ViUGFnZVByb3h5Jik7CiAgICAgdmlydHVhbCB+V2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5KCk7CiAKLSAgICB2b2lkIGRpZENvbW1pdExheWVyVHJlZShjb25zdCBSZW1v
dGVMYXllclRyZWVUcmFuc2FjdGlvbiYpOwotICAgIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBX
ZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkoV2ViUGFnZVByb3h5Jik7CiAgICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiosIElQQzo6TWVzc2FnZURl
Y29kZXImKSBvdmVycmlkZTsKIAogICAgIC8vIFRyYW5zbGF0ZSB0byBGdWxsc2NyZWVuSW50ZXJm
YWNlCi0gICAgdmlydHVhbCB2b2lkIHdpbGxMZW5kVmlkZW9MYXllcldpdGhJRChXZWJDb3JlOjpH
cmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQpOworICAgIHZpcnR1YWwgdm9pZCBlbnRlckZ1
bGxzY3JlZW5XaXRoSUQodWludDMyX3QpOwogCiAgICAgLy8gRnVsbHNjcmVlbiBPYnNlcnZlcgog
ICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RXhpdEZ1bGxzY3JlZW4oKSBvdmVycmlkZTsKQEAgLTY3
LDEzICs2NCwxMSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYXVzZSgpIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVQbGF5U3RhdGUoKSBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIHZvaWQgc2Vla1RvVGltZShkb3VibGUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBi
b3Jyb3dWaWRlb0xheWVyKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJldHVyblZpZGVv
TGF5ZXIoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9MYXllckZyYW1lKFdl
YkNvcmU6OkZsb2F0UmVjdCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNldFZpZGVvTGF5
ZXJHcmF2aXR5KFdlYkNvcmU6OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsOjpWaWRlb0dyYXZpdHkp
IG92ZXJyaWRlOwogCiAgICAgV2ViUGFnZVByb3h5KiBtX3BhZ2U7Ci0gICAgYm9vbCBtX2VudGVy
RnVsbHNjcmVlbkFmdGVyVmlkZW9MYXllclVucGFyZW50ZWRUcmFuc2FjdGlvbjsKLSAgICBXZWJD
b3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQgbV92aWRlb0xheWVySUQ7Ci0gICAg
UmV0YWluUHRyPFVJVmlldz4gbV92aWRlb1ZpZXc7CisgICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5
ZXI+IG1fbGF5ZXJIb3N0OwogfTsKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgppbmRleCAyYzc1NzRhOTc2YTNi
NGQyNzU2NDhlYzQzNWYyYzFmODNiYmEzOWVlLi4zZWNhMjE4MzBlN2U5NTg2NjExY2EyNGQxZDYz
NWQ4NDA4Nzg2ZWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tZXNzYWdl
cy5pbgpAQCAtMjYsOCArMjYsNyBAQCBtZXNzYWdlcyAtPiBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHkgewogICAgIFNldFZpZGVvRGltZW5zaW9ucyhib29sIGhhc1ZpZGVvLCB1bnNpZ25l
ZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KQogICAgIFNldER1cmF0aW9uKGRvdWJsZSBkdXJhdGlv
bikKICAgICBTZXRSYXRlKGJvb2wgaXNQbGF5aW5nLCBkb3VibGUgcmF0ZSkKLSAgICBFbnRlckZ1
bGxzY3JlZW4oKQotICAgIFdpbGxMZW5kVmlkZW9MYXllcldpdGhJRChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyOjpQbGF0Zm9ybUxheWVySUQgdmlkZW9MYXllcklEKQorICAgIEVudGVyRnVsbHNjcmVl
bldpdGhJRCh1aW50MzJfdCB2aWRlb0xheWVySUQpCiAgICAgRXhpdEZ1bGxzY3JlZW4oKQogfQog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3Mv
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCmluZGV4IDg1ZGExYjllYzAyMWUwMjA3
NGY5ZDliNzE0ZjU5NGJkMWEwNjYzOGMuLmI1YWVlNWU2MmE1ZDBmOTE1MGJiOGJhZGY1NjczZDJm
Y2E0ZDRlYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCkBAIC0yOCwxNCArMjgsMTIg
QEAKIAogI2lmIFBMQVRGT1JNKElPUykKIAotI2luY2x1ZGUgIkRyYXdpbmdBcmVhUHJveHkuaCIK
LSNpbmNsdWRlICJSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5LmgiCi0jaW5jbHVkZSAi
UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIK
ICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJXZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHlNZXNzYWdlcy5oIgotI2luY2x1ZGUgPFVJS2l0L1VJVmlldy5oPgorI2luY2x1ZGUgPFF1
YXJ0ekNvcmUvQ29yZUFuaW1hdGlvbi5oPgorI2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFj
ZS5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtNDgsOCArNDYsNiBAQCBQYXNz
UmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eT4gV2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5OjpjcmVhdAogCiBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6Oldl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eShXZWJQYWdlUHJveHkmIHBhZ2UpCiAgICAgOiBt
X3BhZ2UoJnBhZ2UpCi0gICAgLCBtX2VudGVyRnVsbHNjcmVlbkFmdGVyVmlkZW9MYXllclVucGFy
ZW50ZWRUcmFuc2FjdGlvbihmYWxzZSkKLSAgICAsIG1fdmlkZW9MYXllcklEKDApCiB7CiAgICAg
bV9wYWdlLT5wcm9jZXNzKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLT5wYWdl
SUQoKSwgKnRoaXMpOwogICAgIHNldFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsKHRoaXMpOwpAQCAt
NjEsMjIgKzU3LDExIEBAIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6fldlYlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eSgpCiAgICAgbV9wYWdlLT5wcm9jZXNzKCkucmVtb3ZlTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKLXZvaWQgV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRDb21taXRMYXllclRyZWUoY29uc3QgUmVtb3Rl
TGF5ZXJUcmVlVHJhbnNhY3Rpb24mIGxheWVyVHJlZVRyYW5zYWN0aW9uKQordm9pZCBXZWJWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmVudGVyRnVsbHNjcmVlbldpdGhJRCh1aW50MzJfdCB2
aWRlb0xheWVySUQpCiB7Ci0gICAgaWYgKG1fZW50ZXJGdWxsc2NyZWVuQWZ0ZXJWaWRlb0xheWVy
VW5wYXJlbnRlZFRyYW5zYWN0aW9uICYmIGxheWVyVHJlZVRyYW5zYWN0aW9uLmlzVmlkZW9MYXll
cklEUGVuZGluZ0Z1bGxzY3JlZW4obV92aWRlb0xheWVySUQpKSB7Ci0gICAgICAgIG1fZW50ZXJG
dWxsc2NyZWVuQWZ0ZXJWaWRlb0xheWVyVW5wYXJlbnRlZFRyYW5zYWN0aW9uID0gZmFsc2U7Ci0g
ICAgICAgIFttX3ZpZGVvVmlldyByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKLSAgICAgICAgZGlkTGVu
ZFZpZGVvTGF5ZXIoKTsKLSAgICB9Ci19Ci0KLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5Ojp3aWxsTGVuZFZpZGVvTGF5ZXJXaXRoSUQoR3JhcGhpY3NMYXllcjo6UGxhdGZvcm1M
YXllcklEIHZpZGVvTGF5ZXJJRCkKLXsKLSAgICBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVBy
b3h5KiByZW1vdGVEcmF3aW5nQXJlYVByb3h5ID0gdG9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YVByb3h5KG1fcGFnZS0+ZHJhd2luZ0FyZWEoKSk7Ci0gICAgbV92aWRlb1ZpZXcgPSByZW1vdGVE
cmF3aW5nQXJlYVByb3h5LT5yZW1vdGVMYXllclRyZWVIb3N0KCkuZ2V0TGF5ZXIodmlkZW9MYXll
cklEKTsKLSAgICB3aWxsTGVuZFZpZGVvTGF5ZXIobV92aWRlb1ZpZXcuZ2V0KCkubGF5ZXIpOwot
ICAgIG1fdmlkZW9MYXllcklEID0gdmlkZW9MYXllcklEOwotICAgIG1fZW50ZXJGdWxsc2NyZWVu
QWZ0ZXJWaWRlb0xheWVyVW5wYXJlbnRlZFRyYW5zYWN0aW9uID0gdHJ1ZTsKKyAgICBBU1NFUlQo
dmlkZW9MYXllcklEKTsKKyAgICBtX2xheWVySG9zdCA9IFdLTWFrZVJlbmRlckxheWVyKHZpZGVv
TGF5ZXJJRCk7CisgICAgZW50ZXJGdWxsc2NyZWVuKCptX2xheWVySG9zdC5nZXQoKSk7CiB9CiAK
IHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpyZXF1ZXN0RXhpdEZ1bGxzY3Jl
ZW4oKQpAQCAtODcsNiArNzIsOCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eTo6cmVxdWVzdEV4aXRGdWxsc2NyZWVuKCkKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5OjpkaWRFeGl0RnVsbHNjcmVlbigpCiB7CiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpEaWRFeGl0RnVsbHNjcmVlbigpLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICBbbV9sYXllckhvc3QgcmVtb3ZlRnJvbVN1cGVybGF5ZXJdOworICAg
IG1fbGF5ZXJIb3N0LmNsZWFyKCk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5OjpkaWRFbnRlckZ1bGxzY3JlZW4oKQpAQCAtMTEzLDE2ICsxMDAsMTUgQEAgdm9pZCBX
ZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnNlZWtUb1RpbWUoZG91YmxlIHRpbWUpCiB7
CiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpT
ZWVrVG9UaW1lKHRpbWUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KLSAgICAKLXZvaWQgV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Ojpib3Jyb3dWaWRlb0xheWVyKCkKKwordm9pZCBXZWJW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnNldFZpZGVvTGF5ZXJGcmFtZShXZWJDb3JlOjpG
bG9hdFJlY3QgZnJhbWUpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyOjpCb3Jyb3dWaWRlb0xheWVyKCksIG1fcGFnZS0+cGFnZUlEKCkpOwor
ICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6U2V0
VmlkZW9MYXllckZyYW1lKGZyYW1lKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKLXZvaWQgV2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpyZXR1cm5WaWRlb0xheWVyKCkKK3ZvaWQgV2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpzZXRWaWRlb0xheWVyR3Jhdml0eShXZWJDb3Jl
OjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbDo6VmlkZW9HcmF2aXR5IGdyYXZpdHkpCiB7Ci0gICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpSZXR1cm5W
aWRlb0xheWVyKCksIG1fcGFnZS0+cGFnZUlEKCkpOwotICAgIG1fdmlkZW9WaWV3LmNsZWFyKCk7
CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpT
ZXRWaWRlb0xheWVyR3Jhdml0eUVudW0oKHVuc2lnbmVkKWdyYXZpdHkpLCBtX3BhZ2UtPnBhZ2VJ
RCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjczMTdhN2JiMDYxMjBhYzYz
Zjk2ODc4OWIwNDU4NTcxYTMzODdjNi4uZTMwNWE2YTViOGM3MDRhNzNkM2U3NmZlNjg2ZTYwMjc3
OGUzMTBiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtNjc3LDcgKzY3Nyw3IEBACiAJCTNGODdCOUMwMTU4OTQwRDgwMDkwRkY2
MiAvKiBXZWJDb2xvclBpY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gM0Y4N0I5QkYxNTg5NDBEODAwOTBGRjYyIC8qIFdlYkNvbG9yUGlja2VyLmgg
Ki87IH07CiAJCTNGODg5RDE0MTg4Nzc4QzkwMEZFQURBRiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHkubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzRjg4OUQxMjE4ODc3OEM5MDBGRUFEQUYgLyogV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5Lm1tICovOyB9OwogCQkzRjg4OUQxNTE4ODc3OEM5MDBGRUFEQUYgLyogV2ViVmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAzRjg4OUQxMzE4ODc3OEM5MDBGRUFEQUYgLyogV2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5LmggKi87IH07Ci0JCTNGODg5RDE3MTg4Nzg1OTMwMEZFQURBRiAvKiBX
ZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDNGODg5RDBEMTg4NzY5OUMwMEZFQURBRiAvKiBXZWJWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyLmNwcCAqLzsgfTsKKwkJM0Y4ODlEMTcxODg3ODU5MzAwRkVBREFGIC8q
IFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzRjg4OUQwRDE4ODc2OTlDMDBGRUFEQUYgLyogV2ViVmlkZW9G
dWxsc2NyZWVuTWFuYWdlci5tbSAqLzsgfTsKIAkJNEY2MDE0MzIxNTVDNUFBMjAwMUZCREUwIC8q
IEJsb2NraW5nUmVzcG9uc2VNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDRGNjAxNDMwMTU1QzVBMzIwMDFGQkRFMCAvKiBCbG9ja2luZ1Jlc3BvbnNl
TWFwLmggKi87IH07CiAJCTUxMDIxRTlDMTJCMTY3ODgwMDVDMDMzQyAvKiBXZWJDb250ZXh0TWVu
dUNsaWVudE1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxMDIxRTlCMTJCMTY3ODgwMDVDMDMzQyAvKiBXZWJDb250ZXh0TWVudUNsaWVudE1hYy5t
bSAqLzsgfTsKIAkJNTEwMzJGMTgxODBGNzNCQjAwOTYxQkI3IC8qIFdlYlRvRGF0YWJhc2VQcm9j
ZXNzQ29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MTAzMkYxNjE4MEY3M0JCMDA5NjFCQjcgLyogV2ViVG9EYXRhYmFzZVByb2Nlc3ND
b25uZWN0aW9uLmNwcCAqLzsgfTsKQEAgLTI0NDIsNyArMjQ0Miw3IEBACiAJCTNGODdCOUJBMTU4
OTNGNjMwMDkwRkY2MiAvKiBXZWJDb2xvckNob29zZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV2ViQ29sb3JDaG9vc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJM0Y4N0I5QkIxNTg5M0Y2MzAwOTBGRjYyIC8qIFdlYkNvbG9yQ2hvb3Nlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb2xvckNob29zZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJM0Y4N0I5QkYxNTg5NDBEODAwOTBGRjYyIC8qIFdl
YkNvbG9yUGlja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvbG9y
UGlja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTNGODg5RDBEMTg4NzY5OUMw
MEZFQURBRiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuY3BwOyBwYXRo
ID0gaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkzRjg4OUQwRDE4ODc2OTlDMDBGRUFEQUYgLyogV2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXIubW07IHBhdGggPSBpb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJM0Y4ODlEMEUxODg3Njk5QzAw
RkVBREFGIC8qIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oOyBwYXRoID0gaW9zL1dl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
M0Y4ODlEMTAxODg3NzEwMDAwRkVBREFGIC8qIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubWVz
c2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdl
ci5tZXNzYWdlcy5pbjsgcGF0aCA9IGlvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1lc3Nh
Z2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzRjg4OUQxMjE4ODc3OEM5MDBG
RUFEQUYgLyogV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
Lm1tOyBwYXRoID0gaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQzNzYsNyArNDM3Niw3IEBACiAJCTJEQTk0NEIxMTg4
NEU5REYwMEVEODZEQiAvKiBpb3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxk
cmVuID0gKAotCQkJCTNGODg5RDBEMTg4NzY5OUMwMEZFQURBRiAvKiBXZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyLmNwcCAqLywKKwkJCQkzRjg4OUQwRDE4ODc2OTlDMDBGRUFEQUYgLyogV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlci5tbSAqLywKIAkJCQkzRjg4OUQwRTE4ODc2OTlDMDBGRUFEQUYg
LyogV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oICovLAogCQkJCTNGODg5RDEwMTg4NzcxMDAw
MEZFQURBRiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1lc3NhZ2VzLmluICovLAogCQkJ
KTsKQEAgLTg0ODQsNyArODQ4NCw3IEBACiAJCQkJNTFGQ0IxODgxN0JCRkUwMzAwMzk0Q0Q4IC8q
IFN5bmNocm9ub3VzTmV0d29ya0xvYWRlckNsaWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkz
RjQxOEVGQjE4ODdCRDk3MDAyNzk1RkQgLyogV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRDU5N0Q2MTEyQjU2REMw
MEVDOEMyMyAvKiBXS1BhZ2UuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJM0Y4ODlEMTcxODg3ODU5
MzAwRkVBREFGIC8qIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJM0Y4ODlEMTcxODg3ODU5MzAwRkVBREFGIC8qIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQzdCNjMzODEyQTQ1QUJBMDBEMTc0QTQgLyogV0tQ
YWdlR3JvdXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNFMTdCN0QxMzgxRjExNzAwMTJBNjQx
IC8qIFdLUGFnZVByaXZhdGVNYWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0MxMzVBQTgxNzNC
MEJDQTAwNTg2QUUyIC8qIFdLUGx1Z2luSW5mb3JtYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggODUy
MWY5ZWEwZmU1MTFhYTljZGI4M2I1MzI2NDU1NDk5YjM0OTk0Mi4uOTU0NTEyZDQ5MjNmNzVmZDcy
Y2Y3NzUzNjMyZTllZTNkOTkzYjEzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMjYzOCw4ICsyNjM4LDYgQEAgdm9pZCBXZWJQYWdlOjp3
aWxsQ29tbWl0TGF5ZXJUcmVlKFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uJiBsYXllclRyYW5z
YWN0aW9uKQogICAgIGxheWVyVHJhbnNhY3Rpb24uc2V0TWluaW11bVNjYWxlRmFjdG9yKG1pbmlt
dW1QYWdlU2NhbGVGYWN0b3IoKSk7CiAgICAgbGF5ZXJUcmFuc2FjdGlvbi5zZXRNYXhpbXVtU2Nh
bGVGYWN0b3IobWF4aW11bVBhZ2VTY2FsZUZhY3RvcigpKTsKICAgICBsYXllclRyYW5zYWN0aW9u
LnNldEFsbG93c1VzZXJTY2FsaW5nKGFsbG93c1VzZXJTY2FsaW5nKCkpOwotICAgIGlmIChtX3Zp
ZGVvRnVsbHNjcmVlbk1hbmFnZXIpCi0gICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuTWFuYWdlci0+
d2lsbENvbW1pdExheWVyVHJlZShsYXllclRyYW5zYWN0aW9uKTsKICNlbmRpZgogfQogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvaW9zL1dlYlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOWM4
NDZhMDA0ZWU5MDI0YzIxN2IxMTU5ZDQ1MmM1NDU2ZGU3NGNjLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvaW9z
L1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTg2ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXIuaCIKLQotI2lmIFBMQVRGT1JNKElPUykKLQotI2luY2x1ZGUgIlJl
bW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmgiCi0jaW5jbHVkZSAiV2ViUGFnZS5oIgotI2luY2x1
ZGUgIldlYlByb2Nlc3MuaCIKLSNpbmNsdWRlICJXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyTWVz
c2FnZXMuaCIKLSNpbmNsdWRlICJXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHlNZXNzYWdl
cy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRXZlbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0V2ZW50
TmFtZXMuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0hUTUxWaWRlb0VsZW1lbnQuaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL1BsYXRmb3JtQ0FMYXllci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3Mu
aD4KLSNpbmNsdWRlIDxXZWJDb3JlL1dlYkNvcmVUaHJlYWRSdW4uaD4KLQotdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotICAgIAotUGFzc1JlZlB0cjxXZWJW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyPiBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpjcmVhdGUo
UGFzc1JlZlB0cjxXZWJQYWdlPiBwYWdlKQotewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcihwYWdlKSk7Ci19Ci0KLVdlYlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXI6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIoUGFzc1JlZlB0cjxXZWJQYWdlPiBwYWdl
KQotICAgIDogbV9wYWdlKHBhZ2UuZ2V0KCkpCi0gICAgLCBtX3NlbmRVbnBhcmVudFZpZGVvTGF5
ZXJUcmFuc2FjdGlvbihmYWxzZSkKLSAgICAsIG1faXNBbmltYXRpbmcoZmFsc2UpCi0gICAgLCBt
X3RhcmdldElzRnVsbHNjcmVlbihmYWxzZSkKLSAgICAsIG1faXNGdWxsc2NyZWVuKGZhbHNlKQot
ewotICAgIHNldFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZSh0aGlzKTsKLSAgICBXZWJQcm9j
ZXNzOjpzaGFyZWQoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgcGFnZS0+cGFnZUlEKCksICp0aGlz
KTsKLX0KLQotV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6fldlYlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXIoKQotewotICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZl
cihNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyOjp3aWxsQ29tbWl0TGF5ZXJUcmVlKFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uJiB0cmFu
c2FjdGlvbikKLXsKLSAgICBpZiAobV9zZW5kVW5wYXJlbnRWaWRlb0xheWVyVHJhbnNhY3Rpb24p
IHsKLSAgICAgICAgdHJhbnNhY3Rpb24uYWRkVmlkZW9MYXllcklEUGVuZGluZ0Z1bGxzY3JlZW4o
bV9wbGF0Zm9ybUNBTGF5ZXItPmxheWVySUQoKSk7Ci0gICAgICAgIG1fc2VuZFVucGFyZW50Vmlk
ZW9MYXllclRyYW5zYWN0aW9uID0gZmFsc2U7Ci0gICAgfQotfQotICAgIAotYm9vbCBXZWJWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c0Z1bGxzY3JlZW4oY29uc3QgTm9kZSogbm9kZSkg
Y29uc3QKLXsKLSAgICBpZiAoIVNldHRpbmdzOjphdktpdEVuYWJsZWQoKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIHJldHVybiBpc0hUTUxWaWRlb0VsZW1lbnQobm9kZSk7Ci19Ci0KLXZv
aWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZW50ZXJGdWxsc2NyZWVuRm9yTm9kZShOb2Rl
KiBub2RlKQotewotICAgIEFTU0VSVChub2RlKTsKLSAgICBtX25vZGUgPSBub2RlOwotICAgIG1f
dGFyZ2V0SXNGdWxsc2NyZWVuID0gdHJ1ZTsKLSAgICAKLSAgICBpZiAobV9pc0FuaW1hdGluZykK
LSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIG1faXNBbmltYXRpbmcgPSB0cnVlOwotICAgIHNl
dE1lZGlhRWxlbWVudCh0b0hUTUxNZWRpYUVsZW1lbnQobm9kZSkpOwotICAgIGVudGVyRnVsbHNj
cmVlbigpOwotfQotCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmV4aXRGdWxsc2Ny
ZWVuRm9yTm9kZShOb2RlKikKLXsKLSAgICBtX25vZGUuY2xlYXIoKTsKLSAgICBtX3RhcmdldElz
RnVsbHNjcmVlbiA9IGZhbHNlOwotICAgIAotICAgIGlmIChtX2lzQW5pbWF0aW5nKQotICAgICAg
ICByZXR1cm47Ci0gICAgCi0gICAgbV9pc0FuaW1hdGluZyA9IHRydWU7Ci0gICAgZXhpdEZ1bGxz
Y3JlZW4oKTsKLX0KLQotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzZXREdXJhdGlv
bihkb3VibGUgZHVyYXRpb24pCi17Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldER1cmF0aW9uKGR1cmF0aW9uKSwgbV9wYWdlLT5w
YWdlSUQoKSk7Ci19Ci0gICAgCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnNldEN1
cnJlbnRUaW1lKGRvdWJsZSBjdXJyZW50VGltZSwgZG91YmxlIGFuY2hvclRpbWUpCi17Ci0gICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNl
dEN1cnJlbnRUaW1lKGN1cnJlbnRUaW1lLCBhbmNob3JUaW1lKSwgbV9wYWdlLT5wYWdlSUQoKSk7
Ci19Ci0gICAgCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnNldFJhdGUoYm9vbCBp
c1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkKLXsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0UmF0ZShpc1BsYXlpbmcsIHBs
YXliYWNrUmF0ZSksIG1fcGFnZS0+cGFnZUlEKCkpOwotfQotCi12b2lkIFdlYlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6OnNldFZpZGVvRGltZW5zaW9ucyhib29sIGhhc1ZpZGVvLCBmbG9hdCB3aWR0
aCwgZmxvYXQgaGVpZ2h0KQotewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXRWaWRlb0RpbWVuc2lvbnMoaGFzVmlkZW8sIHdpZHRo
LCBoZWlnaHQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLX0KLSAgICAKLXZvaWQgV2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlcjo6d2lsbExlbmRWaWRlb0xheWVyKFBsYXRmb3JtTGF5ZXIqIHZpZGVvTGF5
ZXIpCi17Ci0gICAgbV9wbGF0Zm9ybUNBTGF5ZXIgPSBQbGF0Zm9ybUNBTGF5ZXI6OnBsYXRmb3Jt
Q0FMYXllcih2aWRlb0xheWVyKTsKLSAgICBtX3NlbmRVbnBhcmVudFZpZGVvTGF5ZXJUcmFuc2Fj
dGlvbiA9ICEhbV9wbGF0Zm9ybUNBTGF5ZXI7Ci0gICAgCi0gICAgbV9wYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OldpbGxMZW5kVmlkZW9MYXllcldp
dGhJRChtX3BsYXRmb3JtQ0FMYXllciA/IG1fcGxhdGZvcm1DQUxheWVyLT5sYXllcklEKCkgOiAw
KSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci19Ci0gICAgCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXI6OmRpZExlbmRWaWRlb0xheWVyKCkKLXsKLSAgICAvLyBuby1vcAotICAgIC8vIHRoaXMg
d2lsbCBiZSBzZW50IHRocm91Z2ggYSBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbgotfQotCi12
b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmVudGVyRnVsbHNjcmVlbigpCi17Ci0gICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkVu
dGVyRnVsbHNjcmVlbigpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLX0KLSAgICAKLXZvaWQgV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZXhpdEZ1bGxzY3JlZW4oKQotewotICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpFeGl0RnVsbHNjcmVl
bigpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLX0KLSAgICAKLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlcjo6ZGlkRW50ZXJGdWxsc2NyZWVuKCkKLXsKLSAgICBtX2lzQW5pbWF0aW5nID0gZmFs
c2U7Ci0gICAgbV9pc0Z1bGxzY3JlZW4gPSBmYWxzZTsKLSAgICAKLSAgICBpZiAobV90YXJnZXRJ
c0Z1bGxzY3JlZW4pCi0gICAgICAgIHJldHVybjsKLQotICAgIF9fYmxvY2sgUmVmUHRyPFdlYlZp
ZGVvRnVsbHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50PiBwcm90ZWN0KHRoaXMpOwotICAgIFdlYlRo
cmVhZFJ1biheIHsKLSAgICAgICAgZXhpdEZ1bGxzY3JlZW5Gb3JOb2RlKG1fbm9kZS5nZXQoKSk7
Ci0gICAgICAgIHByb3RlY3QuY2xlYXIoKTsKLSAgICB9KTsKLX0KLQotdm9pZCBXZWJWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyOjpkaWRFeGl0RnVsbHNjcmVlbigpCi17Ci0gICAgbV9pc0FuaW1hdGlu
ZyA9IGZhbHNlOwotICAgIG1faXNGdWxsc2NyZWVuID0gZmFsc2U7Ci0KLSAgICBzZXRNZWRpYUVs
ZW1lbnQobnVsbHB0cik7Ci0KLSAgICBpZiAoIW1fdGFyZ2V0SXNGdWxsc2NyZWVuKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBfX2Jsb2NrIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbE1l
ZGlhRWxlbWVudD4gcHJvdGVjdCh0aGlzKTsKLSAgICBXZWJUaHJlYWRSdW4oXiB7Ci0gICAgICAg
IGVudGVyRnVsbHNjcmVlbkZvck5vZGUobV9ub2RlLmdldCgpKTsKLSAgICAgICAgcHJvdGVjdC5j
bGVhcigpOwotICAgIH0pOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8v
IFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvaW9z
L1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
aW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaAppbmRleCBiODBhZGRmY2RmZTNlZjAyYjQz
MjI2MDQyZjRjNzM3NGNiYzM2ZWQ2Li40NjZkNzI0MDAxMTU3OTY1N2ViNTU1ZDEyYzg3MzVkNThj
NmZkYjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2lvcy9XZWJWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9pb3Mv
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oCkBAIC00Nyw4ICs0Nyw4IEBAIGNsYXNzIE5vZGU7
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBMYXllckhvc3RpbmdDb250ZXh0OwogY2xh
c3MgV2ViUGFnZTsKLWNsYXNzIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOwogCiBjbGFzcyBX
ZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyIDogcHVibGljIFdlYkNvcmU6OldlYlZpZGVvRnVsbHNj
cmVlbk1vZGVsTWVkaWFFbGVtZW50LCBwdWJsaWMgV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlLCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKQEAgLTU3
LDggKzU3LDYgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uKiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpOwogICAgIAotICAgIHZvaWQgd2ls
bENvbW1pdExheWVyVHJlZShSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbiYpOwotCiAgICAgYm9v
bCBzdXBwb3J0c0Z1bGxzY3JlZW4oY29uc3QgV2ViQ29yZTo6Tm9kZSopIGNvbnN0OwogICAgIHZv
aWQgZW50ZXJGdWxsc2NyZWVuRm9yTm9kZShXZWJDb3JlOjpOb2RlKik7CiAgICAgdm9pZCBleGl0
RnVsbHNjcmVlbkZvck5vZGUoV2ViQ29yZTo6Tm9kZSopOwpAQCAtNzIsMjEgKzcwLDE1IEBAIHBy
b3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q3VycmVudFRpbWUoZG91YmxlIGN1cnJlbnRU
aW1lLCBkb3VibGUgYW5jaG9yVGltZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldFJh
dGUoYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCB2b2lkIHNldFZpZGVvRGltZW5zaW9ucyhib29sIGhhc1ZpZGVvLCBmbG9hdCB3aWR0aCwg
ZmxvYXQgaGVpZ2h0KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbExlbmRWaWRlb0xh
eWVyKFBsYXRmb3JtTGF5ZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkTGVuZFZp
ZGVvTGF5ZXIoKSBvdmVycmlkZTsKLQotICAgIC8vIGZvcndhcmQgdG8gaW50ZXJmYWNlCi0gICAg
dmlydHVhbCB2b2lkIGVudGVyRnVsbHNjcmVlbigpOwotICAgIHZpcnR1YWwgdm9pZCBleGl0RnVs
bHNjcmVlbigpOwogICAgIAogICAgIC8vIGFkZGl0aW9uYWwgaW5jb21pbmcKICAgICB2aXJ0dWFs
IHZvaWQgZGlkRW50ZXJGdWxsc2NyZWVuKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZEV4aXRGdWxs
c2NyZWVuKCk7CisgICAgdmlydHVhbCB2b2lkIHNldFZpZGVvTGF5ZXJHcmF2aXR5RW51bSh1bnNp
Z25lZCk7CiAgICAgCiAgICAgV2ViUGFnZSogbV9wYWdlOwogICAgIFJlZlB0cjxXZWJDb3JlOjpO
b2RlPiBtX25vZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcj4gbV9wbGF0
Zm9ybUNBTGF5ZXI7Ci0gICAgYm9vbCBtX3NlbmRVbnBhcmVudFZpZGVvTGF5ZXJUcmFuc2FjdGlv
bjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gbV9sYXllckhvc3Rp
bmdDb250ZXh0OwogICAgIAogICAgIGJvb2wgbV9pc0FuaW1hdGluZzsKICAgICBib29sIG1fdGFy
Z2V0SXNGdWxsc2NyZWVuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9p
b3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubWVzc2FnZXMuaW4KaW5k
ZXggMWE5MzIyYzM2MWI3MzYyMjBkZmY3MDYzNmQ3Y2NmMjcwNzgyNTAzNC4uNGZiZGUwZmJmNGRk
NGE4OWNmYTE1NDEyYmQzZmI4ZWU3ZDdlMTJlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
Lm1lc3NhZ2VzLmluCkBAIC0yNiwxMSArMjYsMTAgQEAgbWVzc2FnZXMgLT4gV2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlciB7CiAgICAgUGF1c2UoKQogICAgIFRvZ2dsZVBsYXlTdGF0ZSgpCiAgICAg
U2Vla1RvVGltZShkb3VibGUgdGltZSkKLSAgICBCb3Jyb3dWaWRlb0xheWVyKCkKLSAgICBSZXR1
cm5WaWRlb0xheWVyKCkKICAgICBSZXF1ZXN0RXhpdEZ1bGxzY3JlZW4oKQotCiAgICAgRGlkRXhp
dEZ1bGxzY3JlZW4oKQogICAgIERpZEVudGVyRnVsbHNjcmVlbigpCisgICAgU2V0VmlkZW9MYXll
ckZyYW1lKFdlYkNvcmU6OkZsb2F0UmVjdCBib3VuZHMpCisgICAgU2V0VmlkZW9MYXllckdyYXZp
dHlFbnVtKHVuc2lnbmVkIGdyYXZpdHkpCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRlNGU4ODBiZTcwYzI4MWRkNGI5ZjkzNDI0MmEzMWU4MTdhZGJkY2QKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyLm1tCkBAIC0wLDAgKzEsMTY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmgiCisKKyNpZiBQ
TEFURk9STShJT1MpCisKKyNpbmNsdWRlICJXZWJQYWdlLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vz
cy5oIgorI2luY2x1ZGUgIldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJNZXNzYWdlcy5oIgorI2lu
Y2x1ZGUgIldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVk
ZSA8UXVhcnR6Q29yZS9Db3JlQW5pbWF0aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9FdmVudC5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvRXZlbnROYW1lcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSFRN
TFZpZGVvRWxlbWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1DQUxheWVyLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvV2ViQ29yZVRo
cmVhZFJ1bi5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK1Bhc3NSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcj4gV2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlcjo6Y3JlYXRlKFBhc3NSZWZQdHI8V2ViUGFnZT4gcGFnZSkKK3sKKyAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIocGFnZSkpOworfQor
CitXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKFBh
c3NSZWZQdHI8V2ViUGFnZT4gcGFnZSkKKyAgICA6IG1fcGFnZShwYWdlLmdldCgpKQorICAgICwg
bV9pc0FuaW1hdGluZyhmYWxzZSkKKyAgICAsIG1fdGFyZ2V0SXNGdWxsc2NyZWVuKGZhbHNlKQor
ICAgICwgbV9pc0Z1bGxzY3JlZW4oZmFsc2UpCit7CisgICAgc2V0V2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlKHRoaXMpOworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmFkZE1lc3NhZ2VSZWNl
aXZlcihNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpLCBwYWdlLT5wYWdlSUQoKSwgKnRoaXMpOworfQorCitXZWJWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyOjp+V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcigpCit7CisgICAgV2ViUHJvY2Vzczo6
c2hhcmVkKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS0+cGFnZUlEKCkpOworfQor
Citib29sIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzRnVsbHNjcmVlbihjb25z
dCBOb2RlKiBub2RlKSBjb25zdAoreworICAgIHJldHVybiBTZXR0aW5nczo6YXZLaXRFbmFibGVk
KCkgJiYgaXNIVE1MVmlkZW9FbGVtZW50KG5vZGUpOworfQorCit2b2lkIFdlYlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6OmVudGVyRnVsbHNjcmVlbkZvck5vZGUoTm9kZSogbm9kZSkKK3sKKyAgICBB
U1NFUlQobm9kZSk7CisgICAgbV9ub2RlID0gbm9kZTsKKyAgICBtX3RhcmdldElzRnVsbHNjcmVl
biA9IHRydWU7CisKKyAgICBpZiAobV9pc0FuaW1hdGluZykKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbV9pc0FuaW1hdGluZyA9IHRydWU7CisgICAgc2V0TWVkaWFFbGVtZW50KHRvSFRNTE1lZGlh
RWxlbWVudChub2RlKSk7CisKKyAgICBQbGF0Zm9ybUxheWVyKiB2aWRlb0xheWVyID0gW0NBTGF5
ZXIgbGF5ZXJdOworICAgIG1fbGF5ZXJIb3N0aW5nQ29udGV4dCA9IExheWVySG9zdGluZ0NvbnRl
eHQ6OmNyZWF0ZUZvckV4dGVybmFsSG9zdGluZ1Byb2Nlc3MoKTsKKyAgICBtX2xheWVySG9zdGlu
Z0NvbnRleHQtPnNldFJvb3RMYXllcih2aWRlb0xheWVyKTsKKyAgICBzZXRWaWRlb0Z1bGxzY3Jl
ZW5MYXllcih2aWRlb0xheWVyKTsKKworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpFbnRlckZ1bGxzY3JlZW5XaXRoSUQobV9sYXllckhv
c3RpbmdDb250ZXh0LT5jb250ZXh0SUQoKSksIG1fcGFnZS0+cGFnZUlEKCkpOworfQorCit2b2lk
IFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmV4aXRGdWxsc2NyZWVuRm9yTm9kZShOb2RlKikK
K3sKKyAgICBtX25vZGUuY2xlYXIoKTsKKyAgICBtX3RhcmdldElzRnVsbHNjcmVlbiA9IGZhbHNl
OworCisgICAgaWYgKG1faXNBbmltYXRpbmcpCisgICAgICAgIHJldHVybjsKKworICAgIG1faXNB
bmltYXRpbmcgPSB0cnVlOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5OjpFeGl0RnVsbHNjcmVlbigpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsK
K30KKwordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzZXREdXJhdGlvbihkb3VibGUg
ZHVyYXRpb24pCit7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHk6OlNldER1cmF0aW9uKGR1cmF0aW9uKSwgbV9wYWdlLT5wYWdlSUQoKSk7
Cit9CisKK3ZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c2V0Q3VycmVudFRpbWUoZG91
YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUgYW5jaG9yVGltZSkKK3sKKyAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0Q3VycmVudFRpbWUo
Y3VycmVudFRpbWUsIGFuY2hvclRpbWUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKK30KKwordm9pZCBX
ZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzZXRSYXRlKGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBw
bGF5YmFja1JhdGUpCit7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyUHJveHk6OlNldFJhdGUoaXNQbGF5aW5nLCBwbGF5YmFja1JhdGUpLCBtX3Bh
Z2UtPnBhZ2VJRCgpKTsKK30KKwordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzZXRW
aWRlb0RpbWVuc2lvbnMoYm9vbCBoYXNWaWRlbywgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkK
K3sKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eTo6U2V0VmlkZW9EaW1lbnNpb25zKGhhc1ZpZGVvLCB3aWR0aCwgaGVpZ2h0KSwgbV9wYWdl
LT5wYWdlSUQoKSk7Cit9CisKK3ZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkRW50
ZXJGdWxsc2NyZWVuKCkKK3sKKyAgICBtX2lzQW5pbWF0aW5nID0gZmFsc2U7CisgICAgbV9pc0Z1
bGxzY3JlZW4gPSBmYWxzZTsKKworICAgIGlmIChtX3RhcmdldElzRnVsbHNjcmVlbikKKyAgICAg
ICAgcmV0dXJuOworCisgICAgLy8gZXhpdCBmdWxsc2NyZWVuIG5vdyBpZiBpdCB3YXMgcHJldmlv
dXNseSByZXF1ZXN0ZWQgZHVyaW5nIGFuIGFuaW1hdGlvbi4KKyAgICBfX2Jsb2NrIFJlZlB0cjxX
ZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbE1lZGlhRWxlbWVudD4gcHJvdGVjdCh0aGlzKTsKKyAgICBX
ZWJUaHJlYWRSdW4oXiB7CisgICAgICAgIGV4aXRGdWxsc2NyZWVuRm9yTm9kZShtX25vZGUuZ2V0
KCkpOworICAgICAgICBwcm90ZWN0LmNsZWFyKCk7CisgICAgfSk7Cit9CisKK3ZvaWQgV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkRXhpdEZ1bGxzY3JlZW4oKQoreworICAgIG1faXNBbmlt
YXRpbmcgPSBmYWxzZTsKKyAgICBtX2lzRnVsbHNjcmVlbiA9IGZhbHNlOworCisgICAgbV9sYXll
ckhvc3RpbmdDb250ZXh0LT5zZXRSb290TGF5ZXIobnVsbHB0cik7CisgICAgbV9sYXllckhvc3Rp
bmdDb250ZXh0ID0gbnVsbHB0cjsKKyAgICBzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihudWxscHRy
KTsKKworICAgIHNldE1lZGlhRWxlbWVudChudWxscHRyKTsKKworICAgIGlmICghbV90YXJnZXRJ
c0Z1bGxzY3JlZW4pCisgICAgICAgIHJldHVybjsKKworICAgIC8vIGVudGVyIGZ1bGxzY3JlZW4g
bm93IGlmIGl0IHdhcyBwcmV2aW91c2x5IHJlcXVlc3RlZCBkdXJpbmcgYW4gYW5pbWF0aW9uLgor
ICAgIF9fYmxvY2sgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50PiBw
cm90ZWN0KHRoaXMpOworICAgIFdlYlRocmVhZFJ1biheIHsKKyAgICAgICAgZW50ZXJGdWxsc2Ny
ZWVuRm9yTm9kZShtX25vZGUuZ2V0KCkpOworICAgICAgICBwcm90ZWN0LmNsZWFyKCk7CisgICAg
fSk7Cit9CisgICAgCit2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnNldFZpZGVvTGF5
ZXJHcmF2aXR5RW51bSh1bnNpZ25lZCBncmF2aXR5KQoreworICAgIHNldFZpZGVvTGF5ZXJHcmF2
aXR5KChXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbDo6VmlkZW9HcmF2aXR5KWdyYXZpdHkpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFBMQVRGT1JNKElPUykK
</data>

          </attachment>
      

    </bug>

</bugzilla>