<?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>128844</bug_id>
          
          <creation_ts>2014-02-14 14:16:51 -0800</creation_ts>
          <short_desc>WebVideoFullscreen, should make the hand off of the video layer explicit.</short_desc>
          <delta_ts>2014-03-04 23:44:37 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</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></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>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jonlee</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>980980</commentid>
    <comment_count>0</comment_count>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2014-02-14 14:16:51 -0800</bug_when>
    <thetext>The transfer of ownership of the platformLayer for video is asynchronous. Make that aspect explicit in the interface.
e.g.  
model =&gt; interface  setVideoLayer()
model   =&gt; interface  enterFullScreen()
interface =&gt; model borrowVideoLayer()
model =&gt; interface videoLayerBorrowed()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986618</commentid>
    <comment_count>1</comment_count>
      <attachid>225724</attachid>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2014-03-03 17:39:52 -0800</bug_when>
    <thetext>Created attachment 225724
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986619</commentid>
    <comment_count>2</comment_count>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2014-03-03 17:41:40 -0800</bug_when>
    <thetext>        This change introduces a more explicit hand-off of the video layer.
        This describes the interactions between WebVideoFullscreenInterface and WebVideoFullscreenModel
        WebVideoFullscreenModel &lt;-&gt; WebVideoFullscreenInterface
              enterFullScreen(*) -&gt;
                                &lt;- borrowVideoLayer
              willLendVideoLayer -&gt;
               didLendVideoLayer -&gt;
                                &lt;- didEnterFullscreen
                                ...
                                &lt;- requestExitFullscreen
                  exitFullscreen -&gt;
                                &lt;- returnVideoLayer
                                &lt;- didExitFullscreen
        (*) enterFullScreen actually comes from WebVideoFullscreenControllerAVKit.

It also adopts new changes from AVKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986636</commentid>
    <comment_count>3</comment_count>
      <attachid>225724</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2014-03-03 18:35:23 -0800</bug_when>
    <thetext>Comment on attachment 225724
Patch

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

&gt; Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:103
&gt; +    //How do I keep myself around until the callback is fired?

Is this comment still valid, or did you fix it with the retain and release? If it is valid, please file a bug and include the number here with a &quot;FIXME:&quot;

&gt; Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.mm:326
&gt; +    //Maybe get initial rect.

Nit: this should have a &quot;FIXME:&quot;, and there should be a space before &quot;Maybe&quot;.

&gt; Source/WebCore/platform/ios/WebVideoFullscreenModelMediaElement.mm:84
&gt; +    //give initial values to all the properties

Nit: I don&apos;t think this comment is necessary, it states the obvious.

&gt; Source/WebKit2/WebProcess/ios/WebVideoFullscreenManager.cpp:157
&gt; +    if (!m_targetFullscreen) {

Nit: you could use an early return instead of indentation here.

&gt; Source/WebKit2/WebProcess/ios/WebVideoFullscreenManager.cpp:173
&gt; +    if (m_targetFullscreen) {

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986637</commentid>
    <comment_count>4</comment_count>
      <attachid>225724</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-03-03 18:55:42 -0800</bug_when>
    <thetext>Comment on attachment 225724
Patch

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

&gt; Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:72
&gt; +    _changeObserver.setTarget(nil);

This shouldn&apos;t be necessary, since _changeObserver is our member variable.

&gt; Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:121
&gt; +        [self release]; // Don&apos;t go away until we are out of fullscreen!

This comment should say something like &quot;Balance the -retain we did in enterFullscreen:&quot;

Does this code run in WK1? Do we need the WebThreadRun? I hate seeing it code that can run in WK2 :\

&gt; Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.mm:285
&gt; +    dispatch_async(dispatch_get_main_queue(), ^{

Why do we need the dispatch_async() with lots of scarey protecters in it?

&gt; Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.mm:297
&gt; +        m_playerViewController.get().playerController = (AVPlayerController *)playerController();

We usually prefer [m_playerViewController setPlayerController:] syntax to avoid the .get()

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

Extra line.

&gt; Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.mm:341
&gt; +    dispatch_async(dispatch_get_main_queue(), ^{

Again, why async?

&gt; Source/WebCore/platform/ios/WebVideoFullscreenModelMediaElement.mm:121
&gt; +        m_videoFullscreenInterface-&gt;willLendVideoLayer(m_mediaElement-&gt;platformLayer());
&gt; +        m_borrowedVideoLayer = m_mediaElement-&gt;borrowPlatformLayer();
&gt; +        if (m_borrowedVideoLayer.get())

The naming of these things makes it hard to me to reason about what&apos;s going on here. This is called &quot;Element&quot; but isn&apos;t an element. m_videoFullscreenInterface: interface to what?

&gt; Source/WebCore/platform/ios/WebVideoFullscreenModelMediaElement.mm:132
&gt; +    __block RefPtr&lt;WebVideoFullscreenModelMediaElement&gt; protect(this);
&gt; +    WebThreadRun(^{

So much block.

&gt; Source/WebKit2/UIProcess/ios/WebVideoFullscreenManagerProxy.mm:77
&gt; +    m_videoView = remoteDrawingAreaProxy-&gt;remoteLayerTreeHost().getLayer(videoLayerID);
&gt; +    willLendVideoLayer(m_videoView.get().layer);

Dont&apos; you need the fix I landed today to unparent the UIView?

&gt; Source/WebKit2/UIProcess/ios/WebVideoFullscreenManagerProxy.mm:124
&gt; +    m_page-&gt;send(Messages::WebVideoFullscreenManager::ReturnVideoLayer(), m_page-&gt;pageID());

Do we actually return the layer? I thought we just got a new layer transaction from the web process with a new remote layer in it.

&gt; Source/WebKit2/WebProcess/ios/WebVideoFullscreenManager.h:92
&gt; +    bool m_targetFullscreen;

This is ambiguous: target fullscreen rather than something else? Target is fullscreen?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986971</commentid>
    <comment_count>5</comment_count>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2014-03-04 14:15:33 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 225724 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=225724&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:103
&gt; &gt; +    //How do I keep myself around until the callback is fired?
&gt; 
&gt; Is this comment still valid, or did you fix it with the retain and release? If it is valid, please file a bug and include the number here with a &quot;FIXME:&quot;
&gt; 
&gt; &gt; Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.mm:326
&gt; &gt; +    //Maybe get initial rect.
&gt; 
&gt; Nit: this should have a &quot;FIXME:&quot;, and there should be a space before &quot;Maybe&quot;.
&gt; 

Deleted. This is speculation and there is already a bug for this.

&gt; &gt; Source/WebCore/platform/ios/WebVideoFullscreenModelMediaElement.mm:84
&gt; &gt; +    //give initial values to all the properties
&gt; 
&gt; Nit: I don&apos;t think this comment is necessary, it states the obvious.

Deleted.

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/ios/WebVideoFullscreenManager.cpp:157
&gt; &gt; +    if (!m_targetFullscreen) {
&gt; 
&gt; Nit: you could use an early return instead of indentation here.

Done.

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/ios/WebVideoFullscreenManager.cpp:173
&gt; &gt; +    if (m_targetFullscreen) {
&gt; 
&gt; Ditto.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986996</commentid>
    <comment_count>6</comment_count>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2014-03-04 14:47:11 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 225724 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=225724&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:72
&gt; &gt; +    _changeObserver.setTarget(nil);
&gt; 
&gt; This shouldn&apos;t be necessary, since _changeObserver is our member variable.

Deleted.

&gt; 
&gt; &gt; Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:121
&gt; &gt; +        [self release]; // Don&apos;t go away until we are out of fullscreen!
&gt; 
&gt; This comment should say something like &quot;Balance the -retain we did in enterFullscreen:&quot;

Updated both comments.

&gt; 
&gt; Does this code run in WK1? Do we need the WebThreadRun? I hate seeing it code that can run in WK2 :\
&gt; 

Yes this code runs in both WK1 and WK2. In WK1 we need to make sure we are on the WebThread before calling into the _model.

This requires a non-trivial refactor, so I&apos;ve filed the following to cover this change:
https://bugs.webkit.org/show_bug.cgi?id=129708

&gt; &gt; Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.mm:285
&gt; &gt; +    dispatch_async(dispatch_get_main_queue(), ^{
&gt; 
&gt; Why do we need the dispatch_async() with lots of scarey protecters in it?

In WebKit1 this will be called from the WebThread. We have to dispatch to the main queue before accessing UIKit.

The second block is required because the UIKit animation is asynchronous and this is UIKit&apos;s way of running code on completion of the animation.

Obj-c blocks will automatically retain obj-c objects, but don&apos;t know about our RefCounted&lt;&gt; type. 

&gt; 
&gt; &gt; Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.mm:297
&gt; &gt; +        m_playerViewController.get().playerController = (AVPlayerController *)playerController();
&gt; 
&gt; We usually prefer [m_playerViewController setPlayerController:] syntax to avoid the .get()

Fixed many instances of this.

&gt; 
&gt; &gt; Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.mm:307
&gt; &gt; +        
&gt; &gt; +        
&gt; 
&gt; Extra line.
&gt; 

Deleted.

&gt; &gt; Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.mm:341
&gt; &gt; +    dispatch_async(dispatch_get_main_queue(), ^{
&gt; 
&gt; Again, why async?

See above comment.

&gt; 
&gt; &gt; Source/WebCore/platform/ios/WebVideoFullscreenModelMediaElement.mm:121
&gt; &gt; +        m_videoFullscreenInterface-&gt;willLendVideoLayer(m_mediaElement-&gt;platformLayer());
&gt; &gt; +        m_borrowedVideoLayer = m_mediaElement-&gt;borrowPlatformLayer();
&gt; &gt; +        if (m_borrowedVideoLayer.get())
&gt; 
&gt; The naming of these things makes it hard to me to reason about what&apos;s going on here. This is called &quot;Element&quot; but isn&apos;t an element. m_videoFullscreenInterface: interface to what?

This is still in my queue:
https://bugs.webkit.org/show_bug.cgi?id=128843

&gt; 
&gt; &gt; Source/WebCore/platform/ios/WebVideoFullscreenModelMediaElement.mm:132
&gt; &gt; +    __block RefPtr&lt;WebVideoFullscreenModelMediaElement&gt; protect(this);
&gt; &gt; +    WebThreadRun(^{
&gt; 
&gt; So much block.

See above comment.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/ios/WebVideoFullscreenManagerProxy.mm:77
&gt; &gt; +    m_videoView = remoteDrawingAreaProxy-&gt;remoteLayerTreeHost().getLayer(videoLayerID);
&gt; &gt; +    willLendVideoLayer(m_videoView.get().layer);
&gt; 
&gt; Dont&apos; you need the fix I landed today to unparent the UIView?

I&apos;ve incorporated that change. See WebVideoFullscreenManagerProxy::didCommitLayerTree.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/ios/WebVideoFullscreenManagerProxy.mm:124
&gt; &gt; +    m_page-&gt;send(Messages::WebVideoFullscreenManager::ReturnVideoLayer(), m_page-&gt;pageID());
&gt; 
&gt; Do we actually return the layer? I thought we just got a new layer transaction from the web process with a new remote layer in it.

We don&apos;t return it to the remote layer tree host. At this level we just release the UIView.

Down the chain this does further clean-up.  In HTMLMediaElement, this signals that AVPlayerLayer is once again visible to the renderer.  See  HTMLMediaElement::returnPlatformLayer

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/ios/WebVideoFullscreenManager.h:92
&gt; &gt; +    bool m_targetFullscreen;
&gt; 
&gt; This is ambiguous: target fullscreen rather than something else? Target is fullscreen?

Changed to m_targetIsFullscreen</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>987014</commentid>
    <comment_count>7</comment_count>
      <attachid>225824</attachid>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2014-03-04 15:31:35 -0800</bug_when>
    <thetext>Created attachment 225824
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>987050</commentid>
    <comment_count>8</comment_count>
      <attachid>225824</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-03-04 17:46:13 -0800</bug_when>
    <thetext>Comment on attachment 225824
Patch

Clearing flags on attachment: 225824

Committed r165087: &lt;http://trac.webkit.org/changeset/165087&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>987051</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-03-04 17:46:15 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>987127</commentid>
    <comment_count>10</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-03-04 22:13:02 -0800</bug_when>
    <thetext>This broke the build:
Ld WebCore
Undefined symbols for architecture arm64:
  &quot;__ZN7WebCore32WebVideoFullscreenChangeObserverD2Ev&quot;, referenced from:
     -exported_symbol[s_list] command line option
ld: symbol(s) not found for architecture arm64</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>987142</commentid>
    <comment_count>11</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2014-03-04 23:14:23 -0800</bug_when>
    <thetext>Removing that line fixed it for me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>987156</commentid>
    <comment_count>12</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2014-03-04 23:44:37 -0800</bug_when>
    <thetext>See bug 129730 for fix to linker error</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225724</attachid>
            <date>2014-03-03 17:39:52 -0800</date>
            <delta_ts>2014-03-04 15:31:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-128844-20140303173957.patch</filename>
            <type>text/plain</type>
            <size>50207</size>
            <attacher name="Jeremy Jones">jeremyj-wk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY1MDAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWRjZDNiMWRmN2YzZjgx
Y2M5Y2IwYWQwOWEzZDc2OTY2NDg2ODE5NC4uNTIxODFjM2E1YTBiNDhkMmJjZDM3ODUzZDllZGIy
YjRlNDc4OWIwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOCBAQAorMjAxNC0wMy0wMyAgSmVy
ZW15IEpvbmVzICA8amVyZW15akBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViVmlkZW9GdWxsc2Ny
ZWVuLCBzaG91bGQgbWFrZSB0aGUgaGFuZCBvZmYgb2YgdGhlIHZpZGVvIGxheWVyIGV4cGxpY2l0
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI4ODQ0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBj
aGFuZ2UgaW50cm9kdWNlcyBhIG1vcmUgZXhwbGljaXQgaGFuZC1vZmYgb2YgdGhlIHZpZGVvIGxh
eWVyLgorICAgICAgICBUaGlzIGRlc2NyaWJlcyB0aGUgaW50ZXJhY3Rpb25zIGJldHdlZW4gV2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlIGFuZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbAorICAg
ICAgICBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbCA8LT4gV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlCisgICAgICAgICAgICAgIGVudGVyRnVsbFNjcmVlbigqKSAtPgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA8LSBib3Jyb3dWaWRlb0xheWVyCisgICAgICAgICAgICAgIHdpbGxM
ZW5kVmlkZW9MYXllciAtPgorICAgICAgICAgICAgICAgZGlkTGVuZFZpZGVvTGF5ZXIgLT4KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC0gZGlkRW50ZXJGdWxsc2NyZWVuCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8LSByZXF1ZXN0RXhpdEZ1bGxzY3JlZW4KKyAgICAgICAgICAgICAgICAgIGV4aXRG
dWxsc2NyZWVuIC0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwtIHJldHVyblZp
ZGVvTGF5ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC0gZGlkRXhpdEZ1bGxz
Y3JlZW4KKyAgICAgICAgKCopIGVudGVyRnVsbFNjcmVlbiBhY3R1YWxseSBjb21lcyBmcm9tIFdl
YlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC4KKworICAgICAgICAqIFdlYkNvcmUuZXhw
LmluOgorICAgICAgICBFeHBvcnQgbmV3IGZ1bmN0aW9ucyBpbiBXZWJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdCwgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxNZWRpYUVsZW1lbnQsIGV0Yy4K
KworICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZL
aXQubW06CisgICAgICAgIEFkZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ2hhbmdlT2Jz
ZXJ2ZXIgdG8gZm9yd2FyZCBmdWxsc2NyZWVuIGNhbGxiYWNrcyB0byBXZWJWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyCisKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDaGFu
Z2VPYnNlcnZlcjo6c2V0VGFyZ2V0KToKKyAgICAgICAgU2V0cyBvYmotYyB0YXJnZXQgb2YgZnVs
bHNjcmVlbiBjaGFuZ2UgY2FsbGJhY2tzLgorCisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVl
bkNvbnRyb2xsZXIgaW5pdF0pOgorICAgICAgICBQb2ludCBfY2hhbmdlT2JzZXJ2ZXIncyB0YXJn
ZXQgYXQgc2VsZi4KKworICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIGRl
YWxsb2NdKToKKyAgICAgICAgQ2xlYXIgX2NoYW5nZU9ic2VydmVyJ3MgdGFyZ2V0LgorCisgICAg
ICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgZW50ZXJGdWxsc2NyZWVuOl0pOgor
ICAgICAgICBSZXRhaW4gc2VsZiB0byBwcmV2ZW50IGRlYWxsb2MgZHVyaW5nIGFuaW1hdGlvbiBv
ciB3aGlsZSBmdWxsc2NyZWVuLgorICAgICAgICBDb25uZWN0IF9pbnRlcmZhY2UgdG8gX2NoYW5n
ZU9ic2VydmVyLgorCisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgZXhp
dEZ1bGxzY3JlZW5dKToKKyAgICAgICAgUmVtb3ZlIHVzZSBvZiBjb21wbGV0aW9uIG1vdmUgY2xl
YW51cCB0byAtZGlkRXhpdEZ1bGxzY3JlZW4uCisKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlciBkaWRFbnRlckZ1bGxzY3JlZW5dKToKKyAgICAgICAgTm90aGluZyB0byBz
ZWUgaGVyZS4KKworICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIGRpZEV4
aXRGdWxsc2NyZWVuXSk6CisgICAgICAgIE1vdmUgY2xlYW4gdXAgY29kZSB0aGF0IHdhcyBpbiBh
IGNvbXBsZXRpb24gdG8gaGVyZS4KKworICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2UuaDoKKyAgICAgICAgQWRkIGRlbGFyYXRpb25zIGZvciBtb3JlIGV4
cGxpY2l0IGhhbmQtb2ZmIG9mIHZpZGVvIGxheWVyLgorCisgICAgICAgICogcGxhdGZvcm0vaW9z
L1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lmg6CisgICAgICAgIEFkZCBXZWJWaWRl
b0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlciB0byBub3RpZnkgd2hlbiBmdWxsc2NyZWVuIGFuaW1h
dGlvbnMgY29tcGxldGUuCisgICAgICAgIEFkZCBkZWNsYXJhdGlvbnMgZm9yIG1vcmUgZXhwbGlj
aXQgaGFuZC1vZmYgb2YgdmlkZW8gbGF5ZXIuCisgICAgICAgIEFkZCBXZWJBVlBsYXllckxheWVy
IG5vdyBhbHdheXMgd3JhcHMgdGhlIG1fdmlkZW9MYXllciB0byBwcmV2ZW50IGRlZmF1bHQgYmVo
YXZpb3IKKyAgICAgICAgb2YgQVZQbGF5ZXJMYXllci4KKworICAgICAgICAoV2ViQ29yZTo6V2Vi
VmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXI6On5XZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VP
YnNlcnZlcik6CisgICAgICAgIEFkZCBlbXB0eSB2aXJ0dWFsIGRlc3RydWN0b3IuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW06Cisg
ICAgICAgIEluY2x1ZGUgQVZLaXQgaGVhZGVycyBpbnN0ZWFkIG9mIGRlY2xhcmluZyBldmVyeXRo
aW5nIGxvY2FsbHkuCisgICAgICAgIEFWUGxheWVyTGF5ZXIgcHJvdG9jb2wgcmVuYW1lZCB0byBB
VlZpZGVvTGF5ZXIgcGVyIEFWS2l0LgorCisgICAgICAgICgtW1dlYkFWUGxheWVyQ29udHJvbGxl
ciBkZWFsbG9jXSk6CisgICAgICAgIERvbid0IHJlZmVyIHRvIHNlbGYuCisKKyAgICAgICAgKC1b
V2ViQVZQbGF5ZXJDb250cm9sbGVyIHBsYXllclZpZXdDb250cm9sbGVyOnNob3VsZERpc21pc3NX
aXRoUmVhc29uOl0pOgorICAgICAgICBQYXVzZSBiZWZvcmUgcmVxdWVzdGluZyBleGl0IGZ1bGxz
Y3JlZW4uCisKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJMYXllciBzZXRQbGF5ZXJDb250cm9sbGVy
Ol0pOgorICAgICAgICBUaGlzIGlzIHJlcXVpcmVkIGJ5IEFWVmlkZW9MYXllciwgYnV0IHdlIGRv
bid0IG5lZWQgaXQuCisKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
OjpwbGF5ZXJDb250cm9sbGVyKToKKyAgICAgICAgV2hpdGUgc3BhY2UuCisKKyAgICAgICAgKFdl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRXZWJWaWRlb0Z1bGxzY3JlZW5DaGFu
Z2VPYnNlcnZlcik6CisgICAgICAgIFNldCBvYnNlcnZlciB0byBmb3J3YXJkIGZ1bGxzY3JlZW4g
Y2hhbmdlcyB0by4KKworICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6
OmVudGVyRnVsbHNjcmVlbik6CisgICAgICAgIFVzZSBtb3JlIGV4cGxpY2l0IHZpZGVvIGxheWVy
IGhhbmQtb2ZmLgorCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6
ZG9FbnRlckZ1bGxzY3JlZW4pOgorICAgICAgICBNb3ZlIGVudGVyRnVsbHNjcmVlbiBsb2dpYyBo
ZXJlLgorICAgICAgICBBVlBsYXllclZpZXdDb250cm9sbGVyIG5vdyB0YWtlcyB0aGUgdmlkZW8g
bGF5ZXIgYXQgaW5pdCB0aW1lLgorICAgICAgICBBbHdheXMgcHJvdmlkZSBhIHZpZGVvIGxheWVy
IHdyYXBwZWQgaW4gYSBXZWJBVlBsYXllckxheWVyLgorCisgICAgICAgIChXZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VBVktpdDo6d2lsbExlbmRWaWRlb0xheWVyKToKKyAgICAgICAgVXNlIG1v
cmUgZXhwbGljaXQgdmlkZW8gbGF5ZXIgaGFuZC1vZmYuCisKKyAgICAgICAgKFdlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUFWS2l0OjpkaWRMZW5kVmlkZW9MYXllcik6CisgICAgICAgIFVzZSBt
b3JlIGV4cGxpY2l0IHZpZGVvIGxheWVyIGhhbmQtb2ZmLgorCisgICAgICAgIChXZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZXhpdEZ1bGxzY3JlZW4pOgorICAgICAgICBVc2UgbW9y
ZSBleHBsaWNpdCB2aWRlbyBsYXllciBoYW5kLW9mZi4KKworICAgICAgICAqIHBsYXRmb3JtL2lv
cy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oOgorICAgICAgICBBZGQgZnVuY3Rpb25zIGZvciBt
b3JlIGV4cGxpY2l0IHZpZGVvIGxheWVyIGhhbmQtb2ZmLgorCisgICAgICAgICogcGxhdGZvcm0v
aW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50Lmg6CisgICAgICAgIE1hcmsg
dmlydHVhbCBmdW5jdGlvbnMgYXMgdmlydHVhbC4KKyAgICAgICAgQWRkIGNoYW5nZXMgZm9yIFdl
YlZpZGVvRnVsbHNjcmVlbk1vZGVsLgorCisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYlZpZGVv
RnVsbHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50Lm1tOgorICAgICAgICBVc2UgbW9yZSBleHBsaWNp
dCB2aWRlbyBsYXllciBoYW5kLW9mZi4KKworICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuTW9k
ZWxNZWRpYUVsZW1lbnQ6OnNldE1lZGlhRWxlbWVudCk6CisgICAgICAgIERvbid0IHB1c2ggdGhl
IHZpZGVvIGxheWVyLiBXYWl0IGZvciBhIHJlcXVlc3QgZm9yIGl0LgorCisgICAgICAgIChXZWJW
aWRlb0Z1bGxzY3JlZW5Nb2RlbE1lZGlhRWxlbWVudDo6aGFuZGxlRXZlbnQpOgorICAgICAgICBN
YWtlIHN1cmUgbV92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UgaXMgdmFsaWQuCisKKyAgICAgICAg
KFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50Ojpib3Jyb3dWaWRlb0xheWVyKToK
KyAgICAgICAgVXNlIG1vcmUgZXhwbGljaXQgdmlkZW8gbGF5ZXIgaGFuZC1vZmYuCisgICAgICAg
IExlbmQgdmlkZW9MYXllciBpbiByZXF1ZXN0IHRvIGEgcmVxdWVzdCB0byBib3Jyb3cgdGhlIHZp
ZGVvTGF5ZXIuCisgICAgICAgIE1ha2Ugc3VyZSB0byByZXRhaW4gdGhlIHZpZGVvIGxheWVyIGJl
Zm9yZSBpdCBpcyByZW1vdmVkIGZyb20gdGhlIGxheWVyIHRyZWUuCisKKyAgICAgICAgKFdlYlZp
ZGVvRnVsbHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50OjpyZXR1cm5WaWRlb0xheWVyKToKKyAgICAg
ICAgVXNlIG1vcmUgZXhwbGljaXQgdmlkZW8gbGF5ZXIgaGFuZC1vZmYuCisKKyAgICAgICAgKFdl
YlZpZGVvRnVsbHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50OjpyZXF1ZXN0RXhpdEZ1bGxzY3JlZW4p
OgorICAgICAgICBEb24ndCBjbGVhciB0aGUgbWVkaWFFbGVtZW50IHJlZmVyZW5jZSB1bnRpbCBj
b21wbGV0ZWx5IGV4aXRlZCBmcm9tIGZ1bGxzY3JlZW4uCisKIDIwMTQtMDMtMDMgIEFudHRpIEtv
aXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIEZpbmQgcmVzdWx0cyBvbiBzaW1w
bGUgbGluZXMgYXJlIG5vdCBtYXJrZWQgY29ycmVjdGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNjFmNTc3NmNm
NzY3Yjc2MzFhYjI0OWI2NDQ3NjViOWNmNzZmYjVhMC4uMGJhOTQzZDc3N2VhZDUzODY2MjE0NzJi
MjgwMWJiYWZjNzQ5N2YwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkyIEBACisyMDE0LTAzLTAz
ICBKZXJlbXkgSm9uZXMgIDxqZXJlbXlqQGFwcGxlLmNvbT4KKworICAgICAgICBXZWJWaWRlb0Z1
bGxzY3JlZW4sIHNob3VsZCBtYWtlIHRoZSBoYW5kIG9mZiBvZiB0aGUgdmlkZW8gbGF5ZXIgZXhw
bGljaXQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
Mjg4NDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGlzIGNoYW5nZSBpbnRyb2R1Y2VzIGEgbW9yZSBleHBsaWNpdCBoYW5kLW9mZiBvZiB0aGUgdmlk
ZW8gbGF5ZXIgYW5kIGZ1bGxzY3JlZW4gdHJhbnNpdGlvbi4KKyAgICAgICAgVGhpcyBkZXNjcmli
ZXMgdGhlIGludGVyYWN0aW9ucyBiZXR3ZWVuIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZSBh
bmQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwKKyAgICAgICAgV2ViVmlkZW9GdWxsc2NyZWVuTW9k
ZWwgPC0+IFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZQorICAgICAgICAgICAgICBlbnRlckZ1
bGxTY3JlZW4oKikgLT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC0gYm9ycm93
VmlkZW9MYXllcgorICAgICAgICAgICAgICB3aWxsTGVuZFZpZGVvTGF5ZXIgLT4KKyAgICAgICAg
ICAgICAgIGRpZExlbmRWaWRlb0xheWVyIC0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDwtIGRpZEVudGVyRnVsbHNjcmVlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC0gcmVxdWVzdEV4aXRGdWxs
c2NyZWVuCisgICAgICAgICAgICAgICAgICBleGl0RnVsbHNjcmVlbiAtPgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8LSByZXR1cm5WaWRlb0xheWVyCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDwtIGRpZEV4aXRGdWxsc2NyZWVuCisgICAgICAgICgqKSBlbnRlckZ1
bGxTY3JlZW4gYWN0dWFsbHkgY29tZXMgZnJvbSBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
QVZLaXQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXJQcm94eS5oOgorICAgICAgICBJbXBsZW1lbnQgV2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2Jz
ZXJ2ZXIuCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBleHBsaWNpdCB2aWRlbyBsYXllciBoYW5k
LW9mZi4KKyAgICAgICAgQWRkIG1fdmlkZW9WaWV3IHRvIHJldGFpbiB0aGUgdmlkZW9MYXllcidz
IFVJVmlldy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICBXaWxsTGVuZFZpZGVvTGF5ZXJXaXRoSUQg
cmVwbGFjZXMgU2V0VmlkZW9MYXllcklECisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbToKKyAgICAgICAgQWRvcHQgbmV3IG1ldGhvZHMg
Zm9yIGV4cGxpY2l0IHZpZGVvIGxheWVyIGhhbmQtb2ZmLgorCisgICAgICAgIChXZWJLaXQ6Oldl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5KToKKyAgICAgICAgT2JzZXJ2ZSBmdWxsc2NyZWVuIGNoYW5nZXMuCisKKyAgICAgICAgKFdl
YktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRDb21taXRMYXllclRyZWUp
OgorICAgICAgICBQZW5kaW5nIGZ1bGxzY3JlZW4gdHJhbnNpdGlvbiBub3cgZG9lcyBkaWRMZW5k
VmlkZW9MYXllciBpbnN0ZWFkIG9mIGNhbGxpbmcgZW50ZXIgZnVsbHNjcmVlbi4KKyAgICAgICAg
SXQgYWxzbyByZW1vdmVzIHRoZSB2aWRlb1ZpZXcgZnJvbSBpdCdzIHN1cGVyIHZpZXcgbm93IHRo
YXQgaXQgaXMgc2FmZSB0byBkbyBzby4KKworICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyUHJveHk6OndpbGxMZW5kVmlkZW9MYXllcldpdGhJRCk6CisgICAgICAgIFRo
aXMgcmVwbGFjZXMgc2V0VmlkZW9MYXllcklELiBJdCByZXRhaW5zIHRoZSBVSVZpZXcgZm9yIHRo
ZSBsYXllciB0byBrZWVwIGl0IGFsaXZlIGJlZm9yZSBpdCBpcyB1bnBhcmVudGVkLgorCisgICAg
ICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6cmVxdWVzdEV4aXRG
dWxsc2NyZWVuKToKKyAgICAgICAgQWRvcHQgbW9yZSBleHBsaWNpdCBmdWxsc2NyZWVuIHRyYW5z
aXRpb24uCisKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
OjpkaWRFeGl0RnVsbHNjcmVlbik6CisgICAgICAgIEFkb3B0IG1vcmUgZXhwbGljaXQgZnVsbHNj
cmVlbiB0cmFuc2l0aW9uLgorCisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eTo6ZGlkRW50ZXJGdWxsc2NyZWVuKToKKyAgICAgICAgQWRvcHQgbW9yZSBleHBs
aWNpdCBmdWxsc2NyZWVuIHRyYW5zaXRpb24uCisKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5Ojpib3Jyb3dWaWRlb0xheWVyKToKKyAgICAgICAgQWRvcHQg
bW9yZSBleHBsaWNpdCB2aWRlbyBsYXllciBoYW5kLW9mZi4KKworICAgICAgICAoV2ViS2l0OjpX
ZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnJldHVyblZpZGVvTGF5ZXIpOgorICAgICAg
ICBBZG9wdCBtb3JlIGV4cGxpY2l0IHZpZGVvIGxheWVyIGhhbmQtb2ZmLgorCisgICAgICAgICog
V2ViUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5jcHA6CisgICAgICAgIE1h
bmFnZSBzdGF0ZSBvZiBmdWxsc2NyZWVuIHRyYW5zaXRpb24gbW9yZSBjb21wZXRlbnRseS4gV2Fp
dCB0aWxsIGFuIGFuaW1hdGlvbiBpcyBjb21wbGV0ZSB0byBiZWdpbiB0aGUgbmV4dCBvbmUuCisK
KyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6V2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlcik6CisgICAgICAgIEluaXQgdGhyZWUgbmV3IHN0YXRlIG1lbWJlcnMuCisK
KyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZW50ZXJGdWxsc2Ny
ZWVuRm9yTm9kZSk6CisgICAgICAgIFVwZGF0ZSBhbmltYXRpb24gc3RhdGUuIERvbid0IHByb2Nl
ZGUgaWYgYW5pbWF0aW9uIGlzIGluIHByb2dyZXNzLgorCisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmV4aXRGdWxsc2NyZWVuRm9yTm9kZSk6CisgICAgICAgIFVw
ZGF0ZSBhbmltYXRpb24gc3RhdGUuIERvbid0IHByb2NlZGUgaWYgYW5pbWF0aW9uIGlzIGluIHBy
b2dyZXNzLgorCisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6Ondp
bGxMZW5kVmlkZW9MYXllcik6CisgICAgICAgIEFkb3B0IG1vcmUgZXhwbGljaXQgdmlkZW8gbGF5
ZXIgaGFuZC1vZmYuCisgICAgICAgIFRoaXMgcmVwbGFjZXMgU2V0VmlkZW9MYXllci4KKworICAg
ICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRMZW5kVmlkZW9MYXll
cik6CisgICAgICAgIFRoaXMgaXMgYSBuby1vcCBhcyB0aGlzIHdpbGwgYmUgc2VudCB0aHJvdWdo
IGEgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uCisKKyAgICAgICAgKFdlYktpdDo6V2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkRW50ZXJGdWxsc2NyZWVuKToKKyAgICAgICAgQWRvcHQg
bW9yZSBleHBsaWNpdCBmdWxsc2NyZWVuIHRyYW5zaXRpb24uCisKKyAgICAgICAgKFdlYktpdDo6
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkRXhpdEZ1bGxzY3JlZW4pOgorICAgICAgICBB
ZG9wdCBtb3JlIGV4cGxpY2l0IGZ1bGxzY3JlZW4gdHJhbnNpdGlvbi4KKworICAgICAgICAqIFdl
YlByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaDoKKyAgICAgICAgQWRvcHQg
bW9yZSBleHBsaWNpdCBmdWxsc2NyZWVuIHRyYW5zaXRpb24uCisKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1lc3NhZ2VzLmluOgorICAgICAgICBB
ZG9wdCBtb3JlIGV4cGxpY2l0IGZ1bGxzY3JlZW4vdmlkZW8gbGF5ZXIgdHJhbnNpdGlvbi4KKwog
MjAxNC0wMy0wMyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAg
ICAgICBDcmFzaCB3aGVuIGdvaW5nIGludG8gdmlkZW8gZnVsbHNjcmVlbiBvbiBpT1MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5leHAuaW4KaW5kZXggZmQ4MmIxYzg4MGU2YzljN2IwY2NiZGMzZDU2YTlkNjI2OWNhNjlm
ZS4uZDM3Yzk0NjlmY2IyMjI0ZjBkYzc4M2IwMDBhZGQ3YjQ0MGExMTJkMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KQEAgLTMxOTQsMjEgKzMxOTQsMjUgQEAgX19aTks3V2ViQ29yZTE2SFRNTE1lZGlh
RWxlbWVudDhkdXJhdGlvbkV2CiAjZW5kaWYKIAogI2lmIEVOQUJMRShWSURFTykgJiYgUExBVEZP
Uk0oSU9TKQorX19aTjdXZWJDb3JlMzJXZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlckQy
RXYKIF9fWk43V2ViQ29yZTMyV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQxMXNldER1
cmF0aW9uRWQKLV9fWk43V2ViQ29yZTMyV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQx
M3NldFZpZGVvTGF5ZXJFUDdDQUxheWVyCiBfX1pON1dlYkNvcmUzMldlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0MTRleGl0RnVsbHNjcmVlbkV2CiBfX1pON1dlYkNvcmUzMldlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUFWS2l0MTRzZXRDdXJyZW50VGltZUVkZAogX19aTjdXZWJDb3Jl
MzJXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDE1ZW50ZXJGdWxsc2NyZWVuRXYKK19f
Wk43V2ViQ29yZTMyV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQxN2RpZExlbmRWaWRl
b0xheWVyRXYKIF9fWk43V2ViQ29yZTMyV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQx
OHNldFZpZGVvRGltZW5zaW9uc0ViZmYKK19fWk43V2ViQ29yZTMyV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQxOHdpbGxMZW5kVmlkZW9MYXllckVQN0NBTGF5ZXIKIF9fWk43V2ViQ29y
ZTMyV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQyNnNldFdlYlZpZGVvRnVsbHNjcmVl
bk1vZGVsRVBOU18yM1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsRQorX19aTjdXZWJDb3JlMzJXZWJW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDM1c2V0V2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdl
T2JzZXJ2ZXJFUE5TXzMyV2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXJFCiBfX1pON1dl
YkNvcmUzMldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0N3NldFJhdGVFYmYKIF9fWk43
V2ViQ29yZTMyV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXRDMkV2CiBfX1pON1dlYkNv
cmUzNVdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50MTBzZWVrVG9UaW1lRWQKIF9f
Wk43V2ViQ29yZTM1V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxNZWRpYUVsZW1lbnQxMWhhbmRsZUV2
ZW50RVBOU18yMlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRFUE5TXzVFdmVudEUKIF9fWk43V2ViQ29y
ZTM1V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxNZWRpYUVsZW1lbnQxNXNldE1lZGlhRWxlbWVudEVQ
TlNfMTZIVE1MTWVkaWFFbGVtZW50RQogX19aTjdXZWJDb3JlMzVXZWJWaWRlb0Z1bGxzY3JlZW5N
b2RlbE1lZGlhRWxlbWVudDE1dG9nZ2xlUGxheVN0YXRlRXYKLV9fWk43V2ViQ29yZTM1V2ViVmlk
ZW9GdWxsc2NyZWVuTW9kZWxNZWRpYUVsZW1lbnQxN2RpZEV4aXRGdWxsc2NyZWVuRXYKLV9fWk43
V2ViQ29yZTM1V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxNZWRpYUVsZW1lbnQyMXJlcXVlc3RFeGl0
RnVsbFNjcmVlbkV2CitfX1pON1dlYkNvcmUzNVdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsTWVkaWFF
bGVtZW50MTZib3Jyb3dWaWRlb0xheWVyRXYKK19fWk43V2ViQ29yZTM1V2ViVmlkZW9GdWxsc2Ny
ZWVuTW9kZWxNZWRpYUVsZW1lbnQxNnJldHVyblZpZGVvTGF5ZXJFdgorX19aTjdXZWJDb3JlMzVX
ZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbE1lZGlhRWxlbWVudDIxcmVxdWVzdEV4aXRGdWxsc2NyZWVu
RXYKIF9fWk43V2ViQ29yZTM1V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxNZWRpYUVsZW1lbnQ0cGxh
eUV2CiBfX1pON1dlYkNvcmUzNVdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50NXBh
dXNlRXYKIF9fWk43V2ViQ29yZTM1V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxNZWRpYUVsZW1lbnRD
MkV2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dl
YlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQppbmRleCBmMTgwYTc3YmI4OWVlYjYy
ZDI3MGI1N2U4YmU0OTQ1M2U2MjA1NGFmLi42OTRlNDllMjc4MmQyM2ZkYjYwMGE0OTgzNTEwM2E0
NjY2MzE2MjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0KQEAgLTM2LDIzICsz
Niw0MCBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAorQGludGVyZmFjZSBXZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyIChGdWxsc2NyZWVuT2JzZXJ2YXRpb24pCistICh2b2lkKWRp
ZEVudGVyRnVsbHNjcmVlbjsKKy0gKHZvaWQpZGlkRXhpdEZ1bGxzY3JlZW47CitAZW5kCisKK2Ns
YXNzIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDaGFuZ2VPYnNlcnZlciA6IHB1YmxpYyBX
ZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlciB7CisgICAgV2ViVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlciogX3RhcmdldDsKK3B1YmxpYzoKKyAgICB2b2lkIHNldFRhcmdldChXZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyKiB0YXJnZXQpIHsgX3RhcmdldCA9IHRhcmdldDsgfQorICAg
IHZpcnR1YWwgdm9pZCBkaWRFbnRlckZ1bGxzY3JlZW4oKSBvdmVycmlkZSB7IFtfdGFyZ2V0IGRp
ZEVudGVyRnVsbHNjcmVlbl07IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRXhpdEZ1bGxzY3JlZW4o
KSBvdmVycmlkZSB7IFtfdGFyZ2V0IGRpZEV4aXRGdWxsc2NyZWVuXTsgfQorfTsKKwogQGltcGxl
bWVudGF0aW9uIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIKIHsKICAgICBSZWZQdHI8SFRN
TE1lZGlhRWxlbWVudD4gX21lZGlhRWxlbWVudDsKICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQVZLaXQ+IF9pbnRlcmZhY2U7CiAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNj
cmVlbk1vZGVsTWVkaWFFbGVtZW50PiBfbW9kZWw7CisgICAgV2ViVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlckNoYW5nZU9ic2VydmVyIF9jaGFuZ2VPYnNlcnZlcjsKIH0KIAogLSAoaW5zdGFuY2V0
eXBlKWluaXQKIHsKICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0
dXJuIG5pbDsKKyAgICAKKyAgICBfY2hhbmdlT2JzZXJ2ZXIuc2V0VGFyZ2V0KHNlbGYpOwogCiAg
ICAgcmV0dXJuIHNlbGY7CiB9CiAKIC0gKHZvaWQpZGVhbGxvYwogeworICAgIF9jaGFuZ2VPYnNl
cnZlci5zZXRUYXJnZXQobmlsKTsKICAgICBfbWVkaWFFbGVtZW50ID0gbnVsbHB0cjsKICAgICBb
c3VwZXIgZGVhbGxvY107CiB9CkBAIC02OSw4ICs4NiwxMSBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAogLSAodm9pZCllbnRlckZ1bGxzY3JlZW46KFVJU2NyZWVuICopc2NyZWVuCiB7Cisg
ICAgW3NlbGYgcmV0YWluXTsgLy8gRG9uJ3QgZ28gYXdheSB1bnRpbCB3ZSBhcmUgb3V0IG9mIGZ1
bGxzY3JlZW4hCisgICAgCiAgICAgVU5VU0VEX1BBUkFNKHNjcmVlbik7CiAgICAgX2ludGVyZmFj
ZSA9IGFkb3B0UmVmKG5ldyBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdCk7CisgICAg
X2ludGVyZmFjZS0+c2V0V2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIoJl9jaGFuZ2VP
YnNlcnZlcik7CiAgICAgX21vZGVsID0gYWRvcHRSZWYobmV3IFdlYlZpZGVvRnVsbHNjcmVlbk1v
ZGVsTWVkaWFFbGVtZW50KTsKICAgICBfbW9kZWwtPnNldFdlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZShfaW50ZXJmYWNlLmdldCgpKTsKICAgICBfaW50ZXJmYWNlLT5zZXRXZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbChfbW9kZWwuZ2V0KCkpOwpAQCAtODAsMTYgKzEwMCwyNSBAQCB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIAogLSAodm9pZClleGl0RnVsbHNjcmVlbgogewotICAgIFJldGFpblB0
cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyPiBzdHJvbmdTZWxmKHNlbGYpOwotICAgIAot
ICAgIF9pbnRlcmZhY2UtPmV4aXRGdWxsc2NyZWVuV2l0aENvbXBsZXRpb25IYW5kbGVyKFtzdHJv
bmdTZWxmXXsKLSAgICAgICAgV2ViVGhyZWFkUnVuKFtzdHJvbmdTZWxmXXsKLSAgICAgICAgICAg
IHN0cm9uZ1NlbGYtPl9tb2RlbC0+c2V0TWVkaWFFbGVtZW50KG51bGxwdHIpOwotICAgICAgICAg
ICAgc3Ryb25nU2VsZi0+X2ludGVyZmFjZS0+c2V0V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwobnVs
bHB0cik7Ci0gICAgICAgICAgICBzdHJvbmdTZWxmLT5fbW9kZWwtPnNldFdlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZShudWxscHRyKTsKLSAgICAgICAgICAgIHN0cm9uZ1NlbGYtPl9tb2RlbCA9
IG51bGxwdHI7Ci0gICAgICAgICAgICBzdHJvbmdTZWxmLT5faW50ZXJmYWNlID0gbnVsbHB0cjsK
LSAgICAgICAgfSk7CisgICAgLy9Ib3cgZG8gSSBrZWVwIG15c2VsZiBhcm91bmQgdW50aWwgdGhl
IGNhbGxiYWNrIGlzIGZpcmVkPworICAgIF9pbnRlcmZhY2UtPmV4aXRGdWxsc2NyZWVuKCk7Cit9
CisKKy0gKHZvaWQpZGlkRW50ZXJGdWxsc2NyZWVuCit7Cit9CisKKy0gKHZvaWQpZGlkRXhpdEZ1
bGxzY3JlZW4KK3sKKyAgICBXZWJUaHJlYWRSdW4oXnsKKyAgICAgICAgX21vZGVsLT5zZXRNZWRp
YUVsZW1lbnQobnVsbHB0cik7CisgICAgICAgIF9pbnRlcmZhY2UtPnNldFdlYlZpZGVvRnVsbHNj
cmVlbk1vZGVsKG51bGxwdHIpOworICAgICAgICBfaW50ZXJmYWNlLT5zZXRXZWJWaWRlb0Z1bGxz
Y3JlZW5DaGFuZ2VPYnNlcnZlcihudWxscHRyKTsKKyAgICAgICAgX21vZGVsLT5zZXRXZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2UobnVsbHB0cik7CisgICAgICAgIF9tb2RlbCA9IG51bGxwdHI7
CisgICAgICAgIF9pbnRlcmZhY2UgPSBudWxscHRyOworICAgICAgICAKKyAgICAgICAgW3NlbGYg
cmVsZWFzZV07IC8vIERvbid0IGdvIGF3YXkgdW50aWwgd2UgYXJlIG91dCBvZiBmdWxsc2NyZWVu
IQogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlLmgKaW5kZXggNTgzZDJiMjk5OWFmYzE4ZDA0
MTY4YzBmOTM3OGI4NTI4YjQ2ZTJlMS4uYTljNDA3Mzc2M2FkOTdiYmUzNzI1Y2RjNzYyYzVkOWJm
NzgwZTZiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9X
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UuaApAQCAtNDAsOSArNDAsOCBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHNldEN1cnJlbnRUaW1lKGRvdWJsZSBjdXJyZW50VGltZSwgZG91Ymxl
IGFuY2hvclRpbWUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UmF0ZShib29sIGlzUGxheWlu
ZywgZmxvYXQgcGxheWJhY2tSYXRlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFZpZGVvRGlt
ZW5zaW9ucyhib29sIGhhc1ZpZGVvLCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIHNldFZpZGVvTGF5ZXIoUGxhdGZvcm1MYXllciopID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgZW50ZXJGdWxsc2NyZWVuKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBleGl0
RnVsbHNjcmVlbigpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbExlbmRWaWRlb0xheWVyKFBs
YXRmb3JtTGF5ZXIqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZExlbmRWaWRlb0xheWVyKCkg
PSAwOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaAppbmRleCAwZjI4MDJjZTY5
NTYzNGIxNDNmMmYxM2MxNzJmZmRlNmU4MDgxN2QxLi44MzQ0OTA4NDBlN2EzNmNlZTU4NTE1ZmE1
Y2UxNDQwZTE3OWQ1MzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaApAQCAtNDAsMTAg
KzQwLDE5IEBAIE9CSkNfQ0xBU1MgV2ViQVZQbGF5ZXJDb250cm9sbGVyOwogT0JKQ19DTEFTUyBB
VlBsYXllclZpZXdDb250cm9sbGVyOwogT0JKQ19DTEFTUyBVSVZpZXdDb250cm9sbGVyOwogT0JK
Q19DTEFTUyBVSVdpbmRvdzsKK09CSkNfQ0xBU1MgQ0FMYXllcjsKK09CSkNfQ0xBU1MgV2ViQVZQ
bGF5ZXJMYXllcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgV2ViVmlkZW9GdWxsc2Ny
ZWVuTW9kZWw7CiAgICAgCitjbGFzcyBXZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlciB7
CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIo
KSB7IH07CisgICAgdmlydHVhbCB2b2lkIGRpZEVudGVyRnVsbHNjcmVlbigpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkRXhpdEZ1bGxzY3JlZW4oKSA9IDA7Cit9OworICAgIAogY2xhc3MgV2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQKICAgICA6IHB1YmxpYyBXZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2UKICAgICAsIHB1YmxpYyBSZWZDb3VudGVkPFdlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0PiB7CkBAIC01MiwyNCArNjEsMzEgQEAgY2xhc3MgV2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQKICAgICBSZXRhaW5QdHI8QVZQbGF5ZXJWaWV3Q29udHJvbGxl
cj4gbV9wbGF5ZXJWaWV3Q29udHJvbGxlcjsKICAgICBSZXRhaW5QdHI8VUlWaWV3Q29udHJvbGxl
cj4gbV92aWV3Q29udHJvbGxlcjsKICAgICBSZXRhaW5QdHI8VUlXaW5kb3c+IG1fd2luZG93Owor
ICAgIFJldGFpblB0cjxDQUxheWVyPiBtX3ZpZGVvTGF5ZXI7CisgICAgUmV0YWluUHRyPFdlYkFW
UGxheWVyTGF5ZXI+IG1fdmlkZW9MYXllckNvbnRhaW5lcjsKICAgICBXZWJWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbCogbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbDsKKyAgICBXZWJWaWRlb0Z1bGxzY3JlZW5D
aGFuZ2VPYnNlcnZlciogbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXI7CiAgICAgICAgIAogICAg
IFdlYkFWUGxheWVyQ29udHJvbGxlciAqcGxheWVyQ29udHJvbGxlcigpOwogICAgIAorICAgIHZv
aWQgZG9FbnRlckZ1bGxzY3JlZW4oKTsKKyAgICAgICAgCiBwdWJsaWM6CiAgICAgV2ViVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQoKTsKICAgICB2aXJ0dWFsIH5XZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VBVktpdCgpIHsgfQogICAgIHZvaWQgc2V0V2ViVmlkZW9GdWxsc2NyZWVuTW9k
ZWwoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwqKTsKKyAgICB2b2lkIHNldFdlYlZpZGVvRnVsbHNj
cmVlbkNoYW5nZU9ic2VydmVyKFdlYlZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKik7CiAg
ICAgCi0gICAgdm9pZCBzZXREdXJhdGlvbihkb3VibGUpIG92ZXJyaWRlOwotICAgIHZvaWQgc2V0
Q3VycmVudFRpbWUoZG91YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUgYW5jaG9yVGltZSkgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBzZXRSYXRlKGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFja1JhdGUp
IG92ZXJyaWRlOwotICAgIHZvaWQgc2V0VmlkZW9EaW1lbnNpb25zKGJvb2wgaGFzVmlkZW8sIGZs
b2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpIG92ZXJyaWRlOwotICAgIHZvaWQgc2V0VmlkZW9MYXll
cihQbGF0Zm9ybUxheWVyKikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBlbnRlckZ1bGxzY3JlZW4oKSBv
dmVycmlkZTsKLSAgICB2b2lkIGVudGVyRnVsbHNjcmVlbldpdGhDb21wbGV0aW9uSGFuZGxlcihz
dGQ6OmZ1bmN0aW9uPHZvaWQoKT4pOwotICAgIHZvaWQgZXhpdEZ1bGxzY3JlZW4oKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGV4aXRGdWxsc2NyZWVuV2l0aENvbXBsZXRpb25IYW5kbGVyKHN0ZDo6ZnVu
Y3Rpb248dm9pZCgpPik7CisgICAgdmlydHVhbCB2b2lkIHNldER1cmF0aW9uKGRvdWJsZSkgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNldEN1cnJlbnRUaW1lKGRvdWJsZSBjdXJyZW50VGlt
ZSwgZG91YmxlIGFuY2hvclRpbWUpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzZXRSYXRl
KGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFja1JhdGUpIG92ZXJyaWRlOworICAgIHZpcnR1
YWwgdm9pZCBzZXRWaWRlb0RpbWVuc2lvbnMoYm9vbCBoYXNWaWRlbywgZmxvYXQgd2lkdGgsIGZs
b2F0IGhlaWdodCkgb3ZlcnJpZGU7CisKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbExlbmRWaWRlb0xh
eWVyKFBsYXRmb3JtTGF5ZXIqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkTGVuZFZp
ZGVvTGF5ZXIoKSBvdmVycmlkZTsKKworICAgIHZpcnR1YWwgdm9pZCBlbnRlckZ1bGxzY3JlZW4o
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZXhpdEZ1bGxzY3JlZW4oKTsKIH07CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VBVktpdC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VBVktpdC5tbQppbmRleCBjOGVhOTQyNjZmYzIyZTA4NDRiODFjZWJkYTYwNmQ5
ZmM0ZDJiNDVmLi4wZWI4MWU4MjhjMzRkYWZjZDNkZDRmN2QyNTk4NDllNzhjM2Y1ZmE4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCkBAIC0zNyw2ICszNywxMiBAQAogI2ltcG9ydCA8
V2ViQ29yZS9XZWJDb3JlVGhyZWFkUnVuLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAj
aW1wb3J0ICJXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oIgorI2ltcG9ydCA8QVZLaXQvQVZLaXQu
aD4KKyNpbXBvcnQgPEFWS2l0L0FWUGxheWVyQ29udHJvbGxlci5oPgorI2ltcG9ydCA8QVZLaXQv
QVZQbGF5ZXJWaWV3Q29udHJvbGxlcl9XZWJLaXRPbmx5Lmg+CisjaW1wb3J0IDxBVktpdC9BVlZp
ZGVvTGF5ZXIuaD4KKyNpbXBvcnQgPEFWS2l0L0FWVmFsdWVUaW1pbmcuaD4KKyNpbXBvcnQgPEFW
S2l0L0FWUGxheWVyVmlld0NvbnRyb2xsZXJfUHJpdmF0ZS5oPgogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIApAQCAtNTksNDUgKzY1LDEwIEBAIFNPRlRfTElOS19GUkFNRVdPUksoQ29yZU1l
ZGlhKQogU09GVF9MSU5LKENvcmVNZWRpYSwgQ01UaW1lTWFrZVdpdGhTZWNvbmRzLCBDTVRpbWUs
IChGbG9hdDY0IHNlY29uZHMsIGludDMyX3QgcHJlZmVycmVkVGltZVNjYWxlKSwgKHNlY29uZHMs
IHByZWZlcnJlZFRpbWVTY2FsZSkpCiBTT0ZUX0xJTksoQ29yZU1lZGlhLCBDTVRpbWVHZXRTZWNv
bmRzLCBGbG9hdDY0LCAoQ01UaW1lIHRpbWUpLCAodGltZSkpCiAKLUBpbnRlcmZhY2UgQVZWYWx1
ZVRpbWluZyA6IE5TT2JqZWN0IDxOU0NvZGluZywgTlNDb3B5aW5nLCBOU011dGFibGVDb3B5aW5n
PgotKyAoaWQpdmFsdWVUaW1pbmdXaXRoQW5jaG9yVmFsdWU6KGRvdWJsZSlhbmNob3JWYWx1ZSBh
bmNob3JUaW1lU3RhbXA6KE5TVGltZUludGVydmFsKSB0aW1lU3RhbXAgcmF0ZTooZG91YmxlKXJh
dGU7Ci0rIChOU1RpbWVJbnRlcnZhbCljdXJyZW50VGltZVN0YW1wOwotQGVuZAotCi1AcHJvdG9j
b2wgQVZQbGF5ZXJWaWV3Q29udHJvbGxlckRlbGVnYXRlCi1AZW5kCi0KLUBwcm90b2NvbCBBVlBs
YXllckxheWVyCi1AcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgTlNTdHJpbmcgKnZpZGVvR3Jh
dml0eTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgZ2V0dGVyID0gaXNSZWFkeUZv
ckRpc3BsYXkpIEJPT0wgcmVhZHlGb3JEaXNwbGF5OwotQHByb3BlcnR5IChub25hdG9taWMsIHJl
YWRvbmx5KSBDR1JlY3QgdmlkZW9SZWN0OwotQGVuZAotCi1AaW50ZXJmYWNlIEFWUGxheWVyQ29u
dHJvbGxlciA6IFVJUmVzcG9uZGVyCi1AZW5kCi0KLUBpbnRlcmZhY2UgQVZQbGF5ZXJWaWV3Q29u
dHJvbGxlciA6IFVJVmlld0NvbnRyb2xsZXIKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCB3ZWFrKSBp
ZCA8QVZQbGF5ZXJWaWV3Q29udHJvbGxlckRlbGVnYXRlPiBkZWxlZ2F0ZTsKLUBwcm9wZXJ0eSAo
bm9uYXRvbWljLCBzdHJvbmcpIEFWUGxheWVyQ29udHJvbGxlciAqcGxheWVyQ29udHJvbGxlcjsK
LUBlbmQKLQotdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgQVZQbGF5ZXJWaWV3Q29udHJvbGxl
ckRpc21pc3NhbFJlYXNvbikgewotICAgIEFWUGxheWVyVmlld0NvbnRyb2xsZXJEaXNtaXNzYWxS
ZWFzb25Eb25lQnV0dG9uVGFwcGVkLAotICAgIEFWUGxheWVyVmlld0NvbnRyb2xsZXJEaXNtaXNz
YWxSZWFzb25SZW1vdGVDb250cm9sU3RvcEV2ZW50UmVjZWl2ZWQsCi0gICAgQVZQbGF5ZXJWaWV3
Q29udHJvbGxlckRpc21pc3NhbFJlYXNvbkVycm9yCi19IE5TX0VOVU1fQVZBSUxBQkxFX0lPUyg4
XzApOwotCi10eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBBVlBsYXllckNvbnRyb2xsZXJTdGF0
dXMpIHsKLSAgICBBVlBsYXllckNvbnRyb2xsZXJTdGF0dXNVbmtub3duLAotICAgIEFWUGxheWVy
Q29udHJvbGxlclN0YXR1c0xvYWRpbmcsCi0gICAgQVZQbGF5ZXJDb250cm9sbGVyU3RhdHVzUmVh
ZHlUb1BsYXksCi0gICAgQVZQbGF5ZXJDb250cm9sbGVyU3RhdHVzRmFpbGVkCi19IE5TX0VOVU1f
QVZBSUxBQkxFKDEwXzEwLCA4XzApOwotCiBAaW50ZXJmYWNlIFdlYkFWUGxheWVyQ29udHJvbGxl
ciA6IE5TT2JqZWN0IDxBVlBsYXllclZpZXdDb250cm9sbGVyRGVsZWdhdGU+CiAKIEBwcm9wZXJ0
eShyZXRhaW4pIEFWUGxheWVyQ29udHJvbGxlciogcGxheWVyQ29udHJvbGxlclByb3h5OwotQHBy
b3BlcnR5KHJldGFpbikgQ0FMYXllcjxBVlBsYXllckxheWVyPiAqcGxheWVyTGF5ZXI7CitAcHJv
cGVydHkocmV0YWluKSBDQUxheWVyPEFWVmlkZW9MYXllcj4gKnBsYXllckxheWVyOwogQHByb3Bl
cnR5KGFzc2lnbikgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwqIGRlbGVnYXRlOwogCiBAcHJvcGVy
dHkgQk9PTCBjYW5QbGF5OwpAQCAtMTM0LDExICsxMDUsMTAgQEAgdHlwZWRlZiBOU19FTlVNKE5T
SW50ZWdlciwgQVZQbGF5ZXJDb250cm9sbGVyU3RhdHVzKSB7CiAKIC0gKHZvaWQpZGVhbGxvYwog
ewotICAgIHNlbGYuZGVsZWdhdGUgPSBuaWw7Ci0gICAgc2VsZi5wbGF5ZXJDb250cm9sbGVyUHJv
eHkgPSBuaWw7Ci0gICAgc2VsZi5wbGF5ZXJMYXllciA9IG5pbDsKLSAgICBzZWxmLmxvYWRlZFRp
bWVSYW5nZXMgPSBuaWw7Ci0gICAgc2VsZi50aW1pbmcgPSBuaWw7CisgICAgW19wbGF5ZXJDb250
cm9sbGVyUHJveHkgcmVsZWFzZV07CisgICAgW19wbGF5ZXJMYXllciByZWxlYXNlXTsKKyAgICBb
X2xvYWRlZFRpbWVSYW5nZXMgcmVsZWFzZV07CisgICAgW190aW1pbmcgcmVsZWFzZV07CiAgICAg
W3N1cGVyIGRlYWxsb2NdOwogfQogCkBAIC0xNTMsNyArMTIzLDggQEAgdHlwZWRlZiBOU19FTlVN
KE5TSW50ZWdlciwgQVZQbGF5ZXJDb250cm9sbGVyU3RhdHVzKSB7CiAgICAgVU5VU0VEX1BBUkFN
KHBsYXllclZpZXdDb250cm9sbGVyKTsKICAgICBVTlVTRURfUEFSQU0ocmVhc29uKTsKICAgICBB
U1NFUlQoc2VsZi5kZWxlZ2F0ZSk7Ci0gICAgc2VsZi5kZWxlZ2F0ZS0+cmVxdWVzdEV4aXRGdWxs
U2NyZWVuKCk7CisgICAgc2VsZi5kZWxlZ2F0ZS0+cGF1c2UoKTsKKyAgICBzZWxmLmRlbGVnYXRl
LT5yZXF1ZXN0RXhpdEZ1bGxzY3JlZW4oKTsKICAgICByZXR1cm4gTk87CiB9CiAKQEAgLTIwNSwx
MSArMTc2LDEyIEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIEFWUGxheWVyQ29udHJvbGxl
clN0YXR1cykgewogCiBAZW5kCiAKLUBpbnRlcmZhY2UgV2ViQVZQbGF5ZXJMYXllciA6IENBTGF5
ZXIgPEFWUGxheWVyTGF5ZXI+CitAaW50ZXJmYWNlIFdlYkFWUGxheWVyTGF5ZXIgOiBDQUxheWVy
IDxBVlZpZGVvTGF5ZXI+CiArKFdlYkFWUGxheWVyTGF5ZXIgKilwbGF5ZXJMYXllcjsKLUBwcm9w
ZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU1N0cmluZyAqdmlkZW9HcmF2aXR5OworQHByb3BlcnR5
IChub25hdG9taWMpIEFWVmlkZW9MYXllckdyYXZpdHkgdmlkZW9MYXllckdyYXZpdHk7CiBAcHJv
cGVydHkgKG5vbmF0b21pYywgZ2V0dGVyID0gaXNSZWFkeUZvckRpc3BsYXkpIEJPT0wgcmVhZHlG
b3JEaXNwbGF5OwogQHByb3BlcnR5IChub25hdG9taWMpIENHUmVjdCB2aWRlb1JlY3Q7CistICh2
b2lkKXNldFBsYXllckNvbnRyb2xsZXI6KEFWUGxheWVyQ29udHJvbGxlciAqKXBsYXllckNvbnRy
b2xsZXI7CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJBVlBsYXllckxheWVyCkBAIC0yMTcs
NiArMTg5LDEyIEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIEFWUGxheWVyQ29udHJvbGxl
clN0YXR1cykgewogewogICAgIHJldHVybiBbW1tXZWJBVlBsYXllckxheWVyIGFsbG9jXSBpbml0
XSBhdXRvcmVsZWFzZV07CiB9CisKKy0gKHZvaWQpc2V0UGxheWVyQ29udHJvbGxlcjooQVZQbGF5
ZXJDb250cm9sbGVyICopcGxheWVyQ29udHJvbGxlcgoreworICAgIFVOVVNFRF9QQVJBTShwbGF5
ZXJDb250cm9sbGVyKTsKK30KKwogQGVuZAogCiBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQoKQpAQCAtMjQxLDcgKzIxOSw2
IEBAIFdlYkFWUGxheWVyQ29udHJvbGxlciAqV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQ6OnBsYXllckNvbnRyb2xsZXIoKQogICAgICAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2Rl
bCkKICAgICAgICAgICAgIG1fcGxheWVyQ29udHJvbGxlci5nZXQoKS5kZWxlZ2F0ZSA9IG1fdmlk
ZW9GdWxsc2NyZWVuTW9kZWw7CiAgICAgfQotICAgIAogICAgIHJldHVybiBtX3BsYXllckNvbnRy
b2xsZXIuZ2V0KCk7CiB9CiAKQEAgLTI1Miw2ICsyMjksMTEgQEAgdm9pZCBXZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwoV2ViVmlkZW9G
dWxsc2MKICAgICBwbGF5ZXJDb250cm9sbGVyKCkuZGVsZWdhdGUgPSBtX3ZpZGVvRnVsbHNjcmVl
bk1vZGVsOwogfQogCit2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRX
ZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcihXZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VP
YnNlcnZlciogb2JzZXJ2ZXIpCit7CisgICAgbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIgPSBv
YnNlcnZlcjsKK30KKwogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0
RHVyYXRpb24oZG91YmxlIGR1cmF0aW9uKQogewogICAgIFdlYkFWUGxheWVyQ29udHJvbGxlciog
cGxheWVyQ29udHJvbGxlciA9IHRoaXMtPnBsYXllckNvbnRyb2xsZXIoKTsKQEAgLTI5MSw3NyAr
MjczLDg5IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldFZpZGVv
RGltZW5zaW9ucyhib29sIGhhc1ZpZGVvLCBmbG9hdCB3CiAgICAgcGxheWVyQ29udHJvbGxlcigp
LmNvbnRlbnREaW1lbnNpb25zID0gQ0dTaXplTWFrZSh3aWR0aCwgaGVpZ2h0KTsKIH0KIAotdm9p
ZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0VmlkZW9MYXllcihQbGF0Zm9y
bUxheWVyKiB2aWRlb0xheWVyKQotewotICAgIFtwbGF5ZXJDb250cm9sbGVyKCkucGxheWVyTGF5
ZXIgcmVtb3ZlRnJvbVN1cGVybGF5ZXJdOwotICAgIFt2aWRlb0xheWVyIHJlbW92ZUZyb21TdXBl
cmxheWVyXTsKLSAgICAKLSAgICBDQUxheWVyPEFWUGxheWVyTGF5ZXI+ICphdlBsYXllckxheWVy
ID0gbmlsOwotICAgIAotICAgIC8vIFdlYktpdCBwcm92aWRlcyBhIEFWUGxheWVyTGF5ZXIuIFdl
YktpdDIgcHJvdmllcyBhIGhvc3RlZCBsYXllci4KLSAgICBpZiAoW3ZpZGVvTGF5ZXIgaXNLaW5k
T2ZDbGFzczpbY2xhc3NBVlBsYXllckxheWVyIGNsYXNzXV0pCi0gICAgICAgIGF2UGxheWVyTGF5
ZXIgPSAoQ0FMYXllcjxBVlBsYXllckxheWVyPiopdmlkZW9MYXllcjsKLSAgICBlbHNlIGlmICh2
aWRlb0xheWVyKSB7Ci0gICAgICAgIEFTU0VSVChbdmlkZW9MYXllciBpc0tpbmRPZkNsYXNzOltD
QUxheWVyIGNsYXNzXV0pOwotICAgICAgICBhdlBsYXllckxheWVyID0gW1dlYkFWUGxheWVyTGF5
ZXIgcGxheWVyTGF5ZXJdOwotICAgICAgICBbYXZQbGF5ZXJMYXllciBhZGRTdWJsYXllcjp2aWRl
b0xheWVyXTsKLSAgICB9Ci0KLSAgICBtX3BsYXllckNvbnRyb2xsZXIuZ2V0KCkucGxheWVyTGF5
ZXIgPSBhdlBsYXllckxheWVyOwotfQotCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0OjplbnRlckZ1bGxzY3JlZW5XaXRoQ29tcGxldGlvbkhhbmRsZXIoc3RkOjpmdW5jdGlv
bjx2b2lkKCk+IGNvbXBsZXRpb24pCi17Ci0gICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUFWS2l0PiBzdHJvbmdUaGlzKHRoaXMpOwotICAgIAotICAgIGRpc3BhdGNoX2FzeW5j
KGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtzdHJvbmdUaGlzLCBjb21wbGV0aW9uXXsKLSAg
ICAgICAgc3Ryb25nVGhpcy0+bV9wbGF5ZXJWaWV3Q29udHJvbGxlciA9IFtbW2NsYXNzQVZQbGF5
ZXJWaWV3Q29udHJvbGxlciBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOwotICAgICAgICBzdHJv
bmdUaGlzLT5tX3BsYXllclZpZXdDb250cm9sbGVyLmdldCgpLnBsYXllckNvbnRyb2xsZXIgPSAo
QVZQbGF5ZXJDb250cm9sbGVyICopc3Ryb25nVGhpcy0+cGxheWVyQ29udHJvbGxlcigpOwotICAg
ICAgICAKLSAgICAgICAgaWYgKFtzdHJvbmdUaGlzLT5tX3BsYXllclZpZXdDb250cm9sbGVyIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0RGVsZWdhdGU6KV0pCi0gICAgICAgICAgICBz
dHJvbmdUaGlzLT5tX3BsYXllclZpZXdDb250cm9sbGVyLmdldCgpLmRlbGVnYXRlID0gc3Ryb25n
VGhpcy0+cGxheWVyQ29udHJvbGxlcigpOwotICAgICAgICAKLSAgICAgICAgc3Ryb25nVGhpcy0+
bV92aWV3Q29udHJvbGxlciA9IGFkb3B0TlMoW1tjbGFzc1VJVmlld0NvbnRyb2xsZXIgYWxsb2Nd
IGluaXRdKTsKLSAgICAgICAgCi0gICAgICAgIHN0cm9uZ1RoaXMtPm1fd2luZG93ID0gW1tbY2xh
c3NVSVdpbmRvdyBhbGxvY10gaW5pdFdpdGhGcmFtZTpbW2NsYXNzVUlTY3JlZW4gbWFpblNjcmVl
bl0gYm91bmRzXV0gYXV0b3JlbGVhc2VdOwotICAgICAgICBzdHJvbmdUaGlzLT5tX3dpbmRvdy5n
ZXQoKS5iYWNrZ3JvdW5kQ29sb3IgPSBbY2xhc3NVSUNvbG9yIGNsZWFyQ29sb3JdOwotICAgICAg
ICBzdHJvbmdUaGlzLT5tX3dpbmRvdy5nZXQoKS5yb290Vmlld0NvbnRyb2xsZXIgPSBzdHJvbmdU
aGlzLT5tX3ZpZXdDb250cm9sbGVyLmdldCgpOwotICAgICAgICBbc3Ryb25nVGhpcy0+bV93aW5k
b3cgbWFrZUtleUFuZFZpc2libGVdOwotICAgICAgICAKLSAgICAgICAgW3N0cm9uZ1RoaXMtPm1f
dmlld0NvbnRyb2xsZXIgcHJlc2VudFZpZXdDb250cm9sbGVyOnN0cm9uZ1RoaXMtPm1fcGxheWVy
Vmlld0NvbnRyb2xsZXIuZ2V0KCkgYW5pbWF0ZWQ6WUVTIGNvbXBsZXRpb246bmlsXTsKLSAgICAg
ICAgaWYgKGNvbXBsZXRpb24pCi0gICAgICAgICAgICBjb21wbGV0aW9uKCk7Ci0gICAgfSk7Ci19
Ci0KIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmVudGVyRnVsbHNjcmVl
bigpCiB7Ci0gICAgZW50ZXJGdWxsc2NyZWVuV2l0aENvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIp
OworICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwtPmJvcnJvd1ZpZGVvTGF5ZXIoKTsKIH0KIAot
dm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZXhpdEZ1bGxzY3JlZW5XaXRo
Q29tcGxldGlvbkhhbmRsZXIoc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRpb24pCit2b2lk
IFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojpkb0VudGVyRnVsbHNjcmVlbigpCiB7
Ci0gICAgbV9wbGF5ZXJDb250cm9sbGVyLmNsZWFyKCk7Ci0gICAgUmVmUHRyPFdlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUFWS2l0PiBzdHJvbmdUaGlzKHRoaXMpOworICAgIF9fYmxvY2sgUmVm
UHRyPFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0PiBwcm90ZWN0KHRoaXMpOwogICAg
IAotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtzdHJvbmdU
aGlzLCBjb21wbGV0aW9uXXsKLSAgICAgICAgW3N0cm9uZ1RoaXMtPm1fdmlld0NvbnRyb2xsZXIg
ZGlzbWlzc1ZpZXdDb250cm9sbGVyQW5pbWF0ZWQ6WUVTIGNvbXBsZXRpb246W3N0cm9uZ1RoaXMs
IGNvbXBsZXRpb25dewotICAgICAgICAgICAgc3Ryb25nVGhpcy0+bV93aW5kb3cuZ2V0KCkuaGlk
ZGVuID0gWUVTOwotICAgICAgICAgICAgc3Ryb25nVGhpcy0+bV93aW5kb3cuZ2V0KCkucm9vdFZp
ZXdDb250cm9sbGVyID0gbmlsOwotICAgICAgICAgICAgc3Ryb25nVGhpcy0+bV9wbGF5ZXJWaWV3
Q29udHJvbGxlciA9IG5pbDsKLSAgICAgICAgICAgIHN0cm9uZ1RoaXMtPm1fdmlld0NvbnRyb2xs
ZXIgPSBuaWw7Ci0gICAgICAgICAgICBzdHJvbmdUaGlzLT5tX3dpbmRvdyA9IG5pbDsKLSAgICAg
ICAgICAgIGlmIChzdHJvbmdUaGlzLT5tX3ZpZGVvRnVsbHNjcmVlbk1vZGVsKQotICAgICAgICAg
ICAgICAgIHN0cm9uZ1RoaXMtPm1fdmlkZW9GdWxsc2NyZWVuTW9kZWwtPmRpZEV4aXRGdWxsc2Ny
ZWVuKCk7Ci0gICAgICAgICAgICBpZiAoY29tcGxldGlvbikKLSAgICAgICAgICAgICAgICBjb21w
bGV0aW9uKCk7CisgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwg
XnsKKyAgICAgICAgW21fdmlkZW9MYXllciByZW1vdmVGcm9tU3VwZXJsYXllcl07CisgICAgICAg
IAorICAgICAgICBtX3ZpZGVvTGF5ZXJDb250YWluZXIgPSBbV2ViQVZQbGF5ZXJMYXllciBwbGF5
ZXJMYXllcl07CisgICAgICAgIGlmIChtX3ZpZGVvTGF5ZXIuZ2V0KCkpCisgICAgICAgICAgICBb
bV92aWRlb0xheWVyQ29udGFpbmVyIGFkZFN1YmxheWVyOm1fdmlkZW9MYXllci5nZXQoKV07Cisg
ICAgICAgIAorICAgICAgICBDR1NpemUgdmlkZW9TaXplID0gcGxheWVyQ29udHJvbGxlcigpLmNv
bnRlbnREaW1lbnNpb25zOworICAgICAgICBDR1JlY3QgdmlkZW9SZWN0ID0gQ0dSZWN0TWFrZSgw
LCAwLCB2aWRlb1NpemUud2lkdGgsIHZpZGVvU2l6ZS5oZWlnaHQpOworICAgICAgICBbbV92aWRl
b0xheWVyQ29udGFpbmVyIHNldFZpZGVvUmVjdDp2aWRlb1JlY3RdOworCisgICAgICAgIG1fcGxh
eWVyVmlld0NvbnRyb2xsZXIgPSBhZG9wdE5TKFtbY2xhc3NBVlBsYXllclZpZXdDb250cm9sbGVy
IGFsbG9jXSBpbml0V2l0aFZpZGVvTGF5ZXI6bV92aWRlb0xheWVyQ29udGFpbmVyLmdldCgpXSk7
CisgICAgICAgIG1fcGxheWVyVmlld0NvbnRyb2xsZXIuZ2V0KCkucGxheWVyQ29udHJvbGxlciA9
IChBVlBsYXllckNvbnRyb2xsZXIgKilwbGF5ZXJDb250cm9sbGVyKCk7CisgICAgICAgIG1fcGxh
eWVyVmlld0NvbnRyb2xsZXIuZ2V0KCkuZGVsZWdhdGUgPSBwbGF5ZXJDb250cm9sbGVyKCk7Cisg
ICAgICAgIAorICAgICAgICBtX3ZpZXdDb250cm9sbGVyID0gYWRvcHROUyhbW2NsYXNzVUlWaWV3
Q29udHJvbGxlciBhbGxvY10gaW5pdF0pOworICAgICAgICAKKyAgICAgICAgbV93aW5kb3cgPSBh
ZG9wdE5TKFtbY2xhc3NVSVdpbmRvdyBhbGxvY10gaW5pdFdpdGhGcmFtZTpbW2NsYXNzVUlTY3Jl
ZW4gbWFpblNjcmVlbl0gYm91bmRzXV0pOworICAgICAgICBtX3dpbmRvdy5nZXQoKS5iYWNrZ3Jv
dW5kQ29sb3IgPSBbY2xhc3NVSUNvbG9yIGNsZWFyQ29sb3JdOworICAgICAgICBtX3dpbmRvdy5n
ZXQoKS5yb290Vmlld0NvbnRyb2xsZXIgPSBtX3ZpZXdDb250cm9sbGVyLmdldCgpOworICAgICAg
ICBbbV93aW5kb3cgbWFrZUtleUFuZFZpc2libGVdOworICAgICAgICAKKyAgICAgICAgCisgICAg
ICAgIF9fYmxvY2sgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0PiBwcm90
ZWN0Mih0aGlzKTsKKworICAgICAgICBbbV92aWV3Q29udHJvbGxlciBwcmVzZW50Vmlld0NvbnRy
b2xsZXI6bV9wbGF5ZXJWaWV3Q29udHJvbGxlci5nZXQoKSBhbmltYXRlZDpZRVMgY29tcGxldGlv
bjpeeworICAgICAgICAgICAgaWYgKG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKQorICAgICAg
ICAgICAgICAgIG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLT5kaWRFbnRlckZ1bGxzY3JlZW4o
KTsKKyAgICAgICAgICAgIHByb3RlY3QyLmNsZWFyKCk7CiAgICAgICAgIH1dOworICAgICAgICBw
cm90ZWN0LmNsZWFyKCk7CiAgICAgfSk7CiB9CiAKK3ZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQ6OndpbGxMZW5kVmlkZW9MYXllcihQbGF0Zm9ybUxheWVyKiB2aWRlb0xheWVy
KQoreworICAgIEFTU0VSVCghbV92aWRlb0xheWVyKTsKKyAgICAKKyAgICBtX3ZpZGVvTGF5ZXIg
PSB2aWRlb0xheWVyOworICAgIGlmICghdmlkZW9MYXllcikKKyAgICAgICAgZG9FbnRlckZ1bGxz
Y3JlZW4oKTsKKyAgICAvL01heWJlIGdldCBpbml0aWFsIHJlY3QuCit9CisKK3ZvaWQgV2ViVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmRpZExlbmRWaWRlb0xheWVyKCkKK3sKKyAgICBp
ZiAobV92aWRlb0xheWVyKQorICAgICAgICBkb0VudGVyRnVsbHNjcmVlbigpOworfQorCiB2b2lk
IFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpleGl0RnVsbHNjcmVlbigpCiB7Ci0g
ICAgZXhpdEZ1bGxzY3JlZW5XaXRoQ29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CisgICAgX19i
bG9jayBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ+IHByb3RlY3QodGhp
cyk7CisKKyAgICBtX3BsYXllckNvbnRyb2xsZXIuY2xlYXIoKTsKKyAgICAKKyAgICBkaXNwYXRj
aF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgICAgICBbbV92aWV3Q29u
dHJvbGxlciBkaXNtaXNzVmlld0NvbnRyb2xsZXJBbmltYXRlZDpZRVMgY29tcGxldGlvbjpeewor
ICAgICAgICAgICAgbV93aW5kb3cuZ2V0KCkuaGlkZGVuID0gWUVTOworICAgICAgICAgICAgbV93
aW5kb3cuZ2V0KCkucm9vdFZpZXdDb250cm9sbGVyID0gbmlsOworICAgICAgICAgICAgbV9wbGF5
ZXJWaWV3Q29udHJvbGxlciA9IG5pbDsKKyAgICAgICAgICAgIG1fdmlld0NvbnRyb2xsZXIgPSBu
aWw7CisgICAgICAgICAgICBtX3dpbmRvdyA9IG5pbDsKKyAgICAgICAgICAgIGlmIChtX3ZpZGVv
TGF5ZXIuZ2V0KCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgW21fdmlkZW9MYXll
ciByZW1vdmVGcm9tU3VwZXJsYXllcl07CisgICAgICAgICAgICAgICAgbV92aWRlb0Z1bGxzY3Jl
ZW5Nb2RlbC0+cmV0dXJuVmlkZW9MYXllcigpOworICAgICAgICAgICAgICAgIG1fdmlkZW9MYXll
ciA9IG5pbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChtX2Z1bGxzY3JlZW5DaGFu
Z2VPYnNlcnZlcikKKyAgICAgICAgICAgICAgICBtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci0+
ZGlkRXhpdEZ1bGxzY3JlZW4oKTsKKyAgICAgICAgICAgIHByb3RlY3QuY2xlYXIoKTsKKyAgICAg
ICAgfV07CisgICAgfSk7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwuaAppbmRleCBiZTNmZWM3YjVhODM0
ZjcxN2RlNjhkMDdiZWIwODY0NWQ2MjBkYzMyLi5mNTVmYWFlYjJhYWVkY2IzMWI1MTU0MDVjMGMz
OWQ2ZDc0MjFjYTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2Vi
VmlkZW9GdWxsc2NyZWVuTW9kZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwuaApAQCAtMzQsMTIgKzM0LDEzIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsIHsKIHB1YmxpYzoKICAgICB2
aXJ0dWFsIH5XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbCgpIHsgfTsKLSAgICB2aXJ0dWFsIHZvaWQg
cmVxdWVzdEV4aXRGdWxsU2NyZWVuKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBib3Jyb3dWaWRl
b0xheWVyKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZXR1cm5WaWRlb0xheWVyKCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBwbGF5KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwYXVzZSgpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgdG9nZ2xlUGxheVN0YXRlKCkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBzZWVrVG9UaW1lKGRvdWJsZSB0aW1lKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEV4
aXRGdWxsc2NyZWVuKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RXhpdEZ1bGxzY3Jl
ZW4oKSA9IDA7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbE1lZGlhRWxlbWVudC5oCmluZGV4
IDRjNzRhZjVmMjRlOTQwMzdjZWI5YTM2YWJhZmM1Yjk3ZjUxMGQwNTQuLmNmNzA3NGZjNDRmZmU1
YTBhODU0ZmRjZjBmMGY1ODg2YjhlMTYwMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbE1lZGlhRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbE1lZGlhRWxl
bWVudC5oCkBAIC01MSwxNiArNTEsMTcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0V2ViVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlKFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZSogaW50ZXJmYWNl
KSB7bV92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UgPSBpbnRlcmZhY2U7fQogICAgIHZvaWQgc2V0
TWVkaWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqKTsKICAgICAKLSAgICB2b2lkIGhhbmRsZUV2
ZW50KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJDb3JlOjpFdmVudCopIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChXZWJDb3JlOjpTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgV2ViQ29yZTo6RXZlbnQqKSBvdmVycmlkZTsKICAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgcmhzKSBvdmVycmlkZQogICAgICAgICB7cmV0dXJu
IHN0YXRpY19jYXN0PFdlYkNvcmU6OkV2ZW50TGlzdGVuZXIqPih0aGlzKSA9PSAmcmhzO30KIAot
ICAgIHZvaWQgcmVxdWVzdEV4aXRGdWxsU2NyZWVuKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwbGF5
KCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwYXVzZSgpIG92ZXJyaWRlOwotICAgIHZvaWQgdG9nZ2xl
UGxheVN0YXRlKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZWVrVG9UaW1lKGRvdWJsZSB0aW1lKSBv
dmVycmlkZTsKLSAgICB2b2lkIGRpZEV4aXRGdWxsc2NyZWVuKCk7CisgICAgdmlydHVhbCB2b2lk
IGJvcnJvd1ZpZGVvTGF5ZXIoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcmV0dXJuVmlk
ZW9MYXllcigpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBwbGF5KCkgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCB2b2lkIHBhdXNlKCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHRvZ2ds
ZVBsYXlTdGF0ZSgpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzZWVrVG9UaW1lKGRvdWJs
ZSB0aW1lKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEV4aXRGdWxsc2NyZWVu
KCkgb3ZlcnJpZGU7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxNZWRpYUVsZW1lbnQubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxNZWRpYUVsZW1lbnQubW0K
aW5kZXggNWFiZGU1NzE5NjlkMmY1MTA3NzQ3YmIyZWI4ZWY1MzUxMmNhZjQ5ZC4uNmQwNGIwMTVk
MDMxYzc5OGNiYWU2N2MzOGY5ZjA3MmYwYjYyNjJjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50Lm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbE1l
ZGlhRWxlbWVudC5tbQpAQCAtNjksMTMgKzY5LDYgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5N
b2RlbE1lZGlhRWxlbWVudDo6c2V0TWVkaWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIG1lZGkK
ICAgICB9CiAgICAgbV9pc0xpc3RlbmluZyA9IGZhbHNlOwogCi0gICAgaWYgKG1fbWVkaWFFbGVt
ZW50ICYmIG1fYm9ycm93ZWRWaWRlb0xheWVyKSB7Ci0gICAgICAgIGlmIChtX3ZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZSkKLSAgICAgICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlLT5z
ZXRWaWRlb0xheWVyKG51bGxwdHIpOwotICAgICAgICBtX21lZGlhRWxlbWVudC0+cmV0dXJuUGxh
dGZvcm1MYXllcihtX2JvcnJvd2VkVmlkZW9MYXllci5nZXQoKSk7Ci0gICAgICAgIG1fYm9ycm93
ZWRWaWRlb0xheWVyLmNsZWFyKCk7Ci0gICAgfQotCiAgICAgbV9tZWRpYUVsZW1lbnQgPSBtZWRp
YUVsZW1lbnQ7CiAKICAgICBpZiAoIW1fbWVkaWFFbGVtZW50KQpAQCAtODgsMTYgKzgxLDEwIEBA
IHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxNZWRpYUVsZW1lbnQ6OnNldE1lZGlhRWxlbWVu
dChIVE1MTWVkaWFFbGVtZW50KiBtZWRpCiAgICAgbV9tZWRpYUVsZW1lbnQtPmFkZEV2ZW50TGlz
dGVuZXIoZXZlbnROYW1lcygpLnRpbWV1cGRhdGVFdmVudCwgdGhpcywgZmFsc2UpOwogICAgIG1f
aXNMaXN0ZW5pbmcgPSB0cnVlOwogCi0gICAgaWYgKCFtX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZSkKLSAgICAgICAgcmV0dXJuOwotCisgICAgLy9naXZlIGluaXRpYWwgdmFsdWVzIHRvIGFsbCB0
aGUgcHJvcGVydGllcwogICAgIG1fdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlLT5zZXREdXJhdGlv
bihtX21lZGlhRWxlbWVudC0+ZHVyYXRpb24oKSk7CiAgICAgbV92aWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2UtPnNldFJhdGUobV9tZWRpYUVsZW1lbnQtPmlzUGxheWluZygpLCBtX21lZGlhRWxlbWVu
dC0+cGxheWJhY2tSYXRlKCkpOwogCi0gICAgbV92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UtPnNl
dFZpZGVvTGF5ZXIobV9tZWRpYUVsZW1lbnQtPnBsYXRmb3JtTGF5ZXIoKSk7Ci0KLSAgICBtX2Jv
cnJvd2VkVmlkZW9MYXllciA9IG1fbWVkaWFFbGVtZW50LT5ib3Jyb3dQbGF0Zm9ybUxheWVyKCk7
Ci0KICAgICBtX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZS0+c2V0Q3VycmVudFRpbWUobV9tZWRp
YUVsZW1lbnQtPmN1cnJlbnRUaW1lKCksIFtbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10gc3lz
dGVtVXB0aW1lXSk7CiAKICAgICBpZiAoaXNIVE1MVmlkZW9FbGVtZW50KG1fbWVkaWFFbGVtZW50
LmdldCgpKSkgewpAQCAtMTA4LDcgKzk1LDcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bE1lZGlhRWxlbWVudDo6c2V0TWVkaWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIG1lZGkKIAog
dm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbE1lZGlhRWxlbWVudDo6aGFuZGxlRXZlbnQoV2Vi
Q29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkNvcmU6OkV2ZW50KiBldmVudCkKIHsK
LSAgICBpZiAoIW1fbWVkaWFFbGVtZW50KQorICAgIGlmICghbV9tZWRpYUVsZW1lbnQgfHwgIW1f
dmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlKQogICAgICAgICByZXR1cm47CiAKICAgICBMT0coTWVk
aWEsICJoYW5kbGVFdmVudCAlcyIsIGV2ZW50LT50eXBlKCkuY2hhcmFjdGVyczgoKSk7CkBAIC0x
MjMsMTIgKzExMCwyOSBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50
OjpoYW5kbGVFdmVudChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25DbwogICAgICAgICBtX3ZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZS0+c2V0Q3VycmVudFRpbWUobV9tZWRpYUVsZW1lbnQtPmN1cnJl
bnRUaW1lKCksIFtbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10gc3lzdGVtVXB0aW1lXSk7CiB9
CiAKLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxNZWRpYUVsZW1lbnQ6OnJlcXVlc3RFeGl0
RnVsbFNjcmVlbigpCit2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50Ojpi
b3Jyb3dWaWRlb0xheWVyKCkKIHsKKyAgICBBU1NFUlQoIW1fYm9ycm93ZWRWaWRlb0xheWVyKTsK
KyAgICAKICAgICBfX2Jsb2NrIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbE1lZGlhRWxl
bWVudD4gcHJvdGVjdCh0aGlzKTsKICAgICBXZWJUaHJlYWRSdW4oXnsKLSAgICAgICAgbV9tZWRp
YUVsZW1lbnQtPnBhdXNlKCk7Ci0gICAgICAgIG1fbWVkaWFFbGVtZW50LT5leGl0RnVsbHNjcmVl
bigpOworICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZS0+d2lsbExlbmRWaWRlb0xh
eWVyKG1fbWVkaWFFbGVtZW50LT5wbGF0Zm9ybUxheWVyKCkpOworICAgICAgICBtX2JvcnJvd2Vk
VmlkZW9MYXllciA9IG1fbWVkaWFFbGVtZW50LT5ib3Jyb3dQbGF0Zm9ybUxheWVyKCk7CisgICAg
ICAgIGlmIChtX2JvcnJvd2VkVmlkZW9MYXllci5nZXQoKSkKKyAgICAgICAgICAgIG1fdmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlLT5kaWRMZW5kVmlkZW9MYXllcigpOworICAgICAgICBwcm90ZWN0
LmNsZWFyKCk7CisgICAgfSk7Cit9CisKK3ZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxNZWRp
YUVsZW1lbnQ6OnJldHVyblZpZGVvTGF5ZXIoKQoreworICAgIEFTU0VSVChtX2JvcnJvd2VkVmlk
ZW9MYXllci5nZXQoKSk7CisgICAgCisgICAgX19ibG9jayBSZWZQdHI8V2ViVmlkZW9GdWxsc2Ny
ZWVuTW9kZWxNZWRpYUVsZW1lbnQ+IHByb3RlY3QodGhpcyk7CisgICAgV2ViVGhyZWFkUnVuKF57
CisgICAgICAgIEFTU0VSVChtX21lZGlhRWxlbWVudCk7CisgICAgICAgIG1fbWVkaWFFbGVtZW50
LT5yZXR1cm5QbGF0Zm9ybUxheWVyKG1fYm9ycm93ZWRWaWRlb0xheWVyLmdldCgpKTsKKyAgICAg
ICAgbV9ib3Jyb3dlZFZpZGVvTGF5ZXIuY2xlYXIoKTsKICAgICAgICAgcHJvdGVjdC5jbGVhcigp
OwogICAgIH0pOwogfQpAQCAtMTY4LDExICsxNzIsMTEgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbE1lZGlhRWxlbWVudDo6c2Vla1RvVGltZShkb3VibGUgdGltZSkKICAgICB9KTsKIH0K
IAotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbE1lZGlhRWxlbWVudDo6ZGlkRXhpdEZ1bGxz
Y3JlZW4oKQordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbE1lZGlhRWxlbWVudDo6cmVxdWVz
dEV4aXRGdWxsc2NyZWVuKCkKIHsKICAgICBfX2Jsb2NrIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbE1lZGlhRWxlbWVudD4gcHJvdGVjdCh0aGlzKTsKICAgICBXZWJUaHJlYWRSdW4oXnsK
LSAgICAgICAgc2V0TWVkaWFFbGVtZW50KG51bGxwdHIpOworICAgICAgICBtX21lZGlhRWxlbWVu
dC0+ZXhpdEZ1bGxzY3JlZW4oKTsKICAgICAgICAgcHJvdGVjdC5jbGVhcigpOwogICAgIH0pOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmgKaW5kZXggZjYzNzllZmJkZTc0NGE0OTZlMGNjZDky
NTMzMWE0YzgwNjEyNmUzOS4uNDM1M2RmY2JjZDkwZGY5MTdlNzAwYzllNmZlMmQyMzI1Mjk2MTFj
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oCkBAIC0zNiwxMiArMzYsMTQgQEAKICNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAorT0JKQ19D
TEFTUyBVSVZpZXc7CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJQYWdlUHJveHk7
CiBjbGFzcyBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjsKIAotY2xhc3MgV2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5IDogcHVibGljIFdlYkNvcmU6OldlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUFWS2l0LCBwdWJsaWMgV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwsIHBy
aXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworY2xhc3MgV2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5IDogcHVibGljIFdlYkNvcmU6OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFW
S2l0LCBwdWJsaWMgV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIsIHB1
YmxpYyBXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbCwgcHJpdmF0ZSBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5PiBjcmVhdGUoV2ViUGFnZVByb3h5Jik7CiAgICAgdmlydHVhbCB+
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5KCk7CkBAIC01MiwxOSArNTQsMjYgQEAgcHJp
dmF0ZToKICAgICBleHBsaWNpdCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkoV2ViUGFn
ZVByb3h5Jik7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiosIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9p
ZCBzZXRWaWRlb0xheWVySUQoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklE
KTsKLSAgICB2aXJ0dWFsIHZvaWQgZW50ZXJGdWxsc2NyZWVuKCkgb3ZlcnJpZGU7CisgICAgLy8g
VHJhbnNsYXRlIHRvIEZ1bGxzY3JlZW5JbnRlcmZhY2UKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbExl
bmRWaWRlb0xheWVyV2l0aElEKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJ
RCk7CisKKyAgICAvLyBGdWxsc2NyZWVuIE9ic2VydmVyCisgICAgdmlydHVhbCB2b2lkIHJlcXVl
c3RFeGl0RnVsbHNjcmVlbigpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRFeGl0RnVs
bHNjcmVlbigpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRFbnRlckZ1bGxzY3JlZW4o
KSBvdmVycmlkZTsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEV4aXRGdWxsU2NyZWVu
KCkgb3ZlcnJpZGU7CisgICAgLy8gRnVsbHNjcmVlbk1vZGVsCiAgICAgdmlydHVhbCB2b2lkIHBs
YXkoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcGF1c2UoKSBvdmVycmlkZTsKICAgICB2
aXJ0dWFsIHZvaWQgdG9nZ2xlUGxheVN0YXRlKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IHNlZWtUb1RpbWUoZG91YmxlKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRXhpdEZ1
bGxzY3JlZW4oKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgYm9ycm93VmlkZW9MYXllcigp
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCByZXR1cm5WaWRlb0xheWVyKCkgb3ZlcnJpZGU7
CiAKICAgICBXZWJQYWdlUHJveHkqIG1fcGFnZTsKICAgICBib29sIG1fZW50ZXJGdWxsc2NyZWVu
QWZ0ZXJWaWRlb0xheWVyVW5wYXJlbnRlZFRyYW5zYWN0aW9uOwogICAgIFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCBtX3ZpZGVvTGF5ZXJJRDsKKyAgICBSZXRhaW5QdHI8
VUlWaWV3PiBtX3ZpZGVvVmlldzsKIH07CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9X
ZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KaW5kZXggZjA3ZDNlMDll
NWY1YmQ1Mjk4MDMyZWQzNjQwYzZkNWMwZTE3MmZlYS4uMmM3NTc0YTk3NmEzYjRkMjc1NjQ4ZWM0
MzVmMmMxZjgzYmJhMzllZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lv
cy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubWVz
c2FnZXMuaW4KQEAgLTIwLDE1ICsyMCwxNCBAQAogIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogCi0jIGNoYW5nZXMgaGVyZSBtdXN0IGJlIHJlZmxlY3RlZCBpbiBXZWJWaWRl
b0Z1bGxzY3JlZW5Nb2RlbAogI2lmIFBMQVRGT1JNKElPUykKIG1lc3NhZ2VzIC0+IFdlYlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eSB7CiAgICAgU2V0Q3VycmVudFRpbWUoZG91YmxlIGN1cnJl
bnRUaW1lLCBkb3VibGUgaG9zdFRpbWUpCi0gICAgU2V0VmlkZW9MYXllcklEKFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCB2aWRlb0xheWVySUQpCiAgICAgU2V0VmlkZW9E
aW1lbnNpb25zKGJvb2wgaGFzVmlkZW8sIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQp
CiAgICAgU2V0RHVyYXRpb24oZG91YmxlIGR1cmF0aW9uKQogICAgIFNldFJhdGUoYm9vbCBpc1Bs
YXlpbmcsIGRvdWJsZSByYXRlKQogICAgIEVudGVyRnVsbHNjcmVlbigpCisgICAgV2lsbExlbmRW
aWRlb0xheWVyV2l0aElEKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCB2
aWRlb0xheWVySUQpCiAgICAgRXhpdEZ1bGxzY3JlZW4oKQogfQogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5Lm1tCmluZGV4IDQ3Y2Y0OWM1ODI3ODE5ZGY2MDUwNzMzOTBhMjBkOWI3OWI1
YTQ5ZDAuLjg1ZGExYjllYzAyMWUwMjA3NGY5ZDliNzE0ZjU5NGJkMWEwNjYzOGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5Lm1tCkBAIC01Myw2ICs1Myw3IEBAIFdlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eTo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5KFdlYlBhZ2VQcm94
eSYgcGFnCiB7CiAgICAgbV9wYWdlLT5wcm9jZXNzKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3Nh
Z2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgbV9wYWdlLT5wYWdlSUQoKSwgKnRoaXMpOwogICAgIHNldFdlYlZpZGVvRnVsbHNjcmVlbk1v
ZGVsKHRoaXMpOworICAgIHNldFdlYlZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKHRoaXMp
OwogfQogCiBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6On5XZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHkoKQpAQCAtNjQsMzcgKzY1LDM1IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5OjpkaWRDb21taXRMYXllclRyZWUoY29uc3QgUmVtb3RlTGF5ZXJUcmVl
VHJhCiB7CiAgICAgaWYgKG1fZW50ZXJGdWxsc2NyZWVuQWZ0ZXJWaWRlb0xheWVyVW5wYXJlbnRl
ZFRyYW5zYWN0aW9uICYmIGxheWVyVHJlZVRyYW5zYWN0aW9uLmlzVmlkZW9MYXllcklEUGVuZGlu
Z0Z1bGxzY3JlZW4obV92aWRlb0xheWVySUQpKSB7CiAgICAgICAgIG1fZW50ZXJGdWxsc2NyZWVu
QWZ0ZXJWaWRlb0xheWVyVW5wYXJlbnRlZFRyYW5zYWN0aW9uID0gZmFsc2U7Ci0gICAgICAgIFdl
YkNvcmU6OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjplbnRlckZ1bGxzY3JlZW4o
KTsKKyAgICAgICAgW21fdmlkZW9WaWV3IHJlbW92ZUZyb21TdXBlcnZpZXddOworICAgICAgICBk
aWRMZW5kVmlkZW9MYXllcigpOwogICAgIH0KIH0KIAotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHk6OnNldFZpZGVvTGF5ZXJJRChHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVy
SUQgdmlkZW9MYXllcklEKQordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6Ondp
bGxMZW5kVmlkZW9MYXllcldpdGhJRChHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQgdmlk
ZW9MYXllcklEKQogewogICAgIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkqIHJlbW90
ZURyYXdpbmdBcmVhUHJveHkgPSB0b1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkobV9w
YWdlLT5kcmF3aW5nQXJlYSgpKTsKLQotICAgIGlmICh2aWRlb0xheWVySUQpIHsKLSAgICAgICAg
Ly8gRW50ZXJpbmcgZnVsbHNjcmVlbi4KLSAgICAgICAgVUlWaWV3ICp2aWRlb1ZpZXcgPSByZW1v
dGVEcmF3aW5nQXJlYVByb3h5LT5yZW1vdGVMYXllclRyZWVIb3N0KCkuZ2V0TGF5ZXIodmlkZW9M
YXllcklEKTsKLSAgICAgICAgLy8gUmVtb3ZlIHRoZSBVSVZpZXcgZnJvbSBpdHMgc3VwZXJsYXll
ciwgc28gd2UgY2FuIHJlcGFyZW50IHRoZSBsYXllciB3aXRob3V0IHByb2JsZW1zLgotICAgICAg
ICBbdmlkZW9WaWV3IHJlbW92ZUZyb21TdXBlcnZpZXddOwotICAgICAgICAKLSAgICAgICAgc2V0
VmlkZW9MYXllcih2aWRlb1ZpZXcubGF5ZXIpOwotICAgIH0gZWxzZQotICAgICAgICBzZXRWaWRl
b0xheWVyKG5pbCk7Ci0gICAgCisgICAgbV92aWRlb1ZpZXcgPSByZW1vdGVEcmF3aW5nQXJlYVBy
b3h5LT5yZW1vdGVMYXllclRyZWVIb3N0KCkuZ2V0TGF5ZXIodmlkZW9MYXllcklEKTsKKyAgICB3
aWxsTGVuZFZpZGVvTGF5ZXIobV92aWRlb1ZpZXcuZ2V0KCkubGF5ZXIpOwogICAgIG1fdmlkZW9M
YXllcklEID0gdmlkZW9MYXllcklEOwogICAgIG1fZW50ZXJGdWxsc2NyZWVuQWZ0ZXJWaWRlb0xh
eWVyVW5wYXJlbnRlZFRyYW5zYWN0aW9uID0gdHJ1ZTsKIH0KIAotdm9pZCBXZWJWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyUHJveHk6OmVudGVyRnVsbHNjcmVlbigpCit2b2lkIFdlYlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eTo6cmVxdWVzdEV4aXRGdWxsc2NyZWVuKCkKIHsKKyAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlJlcXVlc3RFeGl0RnVs
bHNjcmVlbigpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KLSAgICAKLXZvaWQgV2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5OjpyZXF1ZXN0RXhpdEZ1bGxTY3JlZW4oKQorCit2b2lkIFdlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZGlkRXhpdEZ1bGxzY3JlZW4oKQogewotICAgIG1f
cGFnZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6UmVxdWVzdEV4
aXRGdWxsU2NyZWVuKCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6RGlkRXhpdEZ1bGxzY3JlZW4oKSwgbV9w
YWdlLT5wYWdlSUQoKSk7CiB9Ci0gICAgCisKK3ZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5OjpkaWRFbnRlckZ1bGxzY3JlZW4oKQoreworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6RGlkRW50ZXJGdWxsc2NyZWVuKCksIG1fcGFn
ZS0+cGFnZUlEKCkpOworfQorCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6
cGxheSgpCiB7CiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyOjpQbGF5KCksIG1fcGFnZS0+cGFnZUlEKCkpOwpAQCAtMTE1LDExICsxMTQsMTcgQEAg
dm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnNlZWtUb1RpbWUoZG91YmxlIHRp
bWUpCiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
OjpTZWVrVG9UaW1lKHRpbWUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KICAgICAKLXZvaWQgV2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRFeGl0RnVsbHNjcmVlbigpCit2b2lkIFdl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6Ym9ycm93VmlkZW9MYXllcigpCiB7Ci0gICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpEaWRFeGl0
RnVsbHNjcmVlbigpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkJvcnJvd1ZpZGVvTGF5ZXIoKSwgbV9wYWdl
LT5wYWdlSUQoKSk7CiB9Ci0gICAgCisKK3ZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5OjpyZXR1cm5WaWRlb0xheWVyKCkKK3sKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6Oldl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlJldHVyblZpZGVvTGF5ZXIoKSwgbV9wYWdlLT5wYWdl
SUQoKSk7CisgICAgbV92aWRlb1ZpZXcuY2xlYXIoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CiAKICNlbmRpZiAvLyBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuY3BwCmluZGV4
IGM1Njk5YjY1OTYyNTMxMjE3YTk5NWU3NWNhMWIzNWRiMGYxOWM0NzAuLjM3NzYxMTg2NTUwZWRi
OTY3YWFiMmQyZmZjNzZiMzIyYzgyZGJmYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuY3BwCkBAIC0z
NSw4ICszNSw5IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9FdmVudC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvRXZlbnROYW1lcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSFRNTFZpZGVvRWxlbWVudC5oPgot
I2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3Jt
Q0FMYXllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1dlYkNvcmVUaHJlYWRSdW4uaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAg
LTUwLDYgKzUxLDkgQEAgUGFzc1JlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyPiBXZWJW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpjcmVhdGUoUGFzc1JlZlAKIFdlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXI6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIoUGFzc1JlZlB0cjxXZWJQYWdlPiBw
YWdlKQogICAgIDogbV9wYWdlKHBhZ2UuZ2V0KCkpCiAgICAgLCBtX3NlbmRVbnBhcmVudFZpZGVv
TGF5ZXJUcmFuc2FjdGlvbihmYWxzZSkKKyAgICAsIG1faXNBbmltYXRpbmcoZmFsc2UpCisgICAg
LCBtX3RhcmdldEZ1bGxzY3JlZW4oZmFsc2UpCisgICAgLCBtX2lzRnVsbHNjcmVlbihmYWxzZSkK
IHsKICAgICBzZXRXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UodGhpcyk7CiAgICAgV2ViUHJv
Y2Vzczo6c2hhcmVkKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIHBhZ2UtPnBhZ2VJRCgpLCAqdGhp
cyk7CkBAIC03OSwxNCArODMsMjYgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpl
bnRlckZ1bGxzY3JlZW5Gb3JOb2RlKE5vZGUqIG5vZGUpCiB7CiAgICAgQVNTRVJUKG5vZGUpOwog
ICAgIG1fbm9kZSA9IG5vZGU7CisgICAgbV90YXJnZXRGdWxsc2NyZWVuID0gdHJ1ZTsKKyAgICAK
KyAgICBpZiAobV9pc0FuaW1hdGluZykKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIG1faXNB
bmltYXRpbmcgPSB0cnVlOwogICAgIHNldE1lZGlhRWxlbWVudCh0b0hUTUxNZWRpYUVsZW1lbnQo
bm9kZSkpOwogICAgIGVudGVyRnVsbHNjcmVlbigpOwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6OmV4aXRGdWxsc2NyZWVuRm9yTm9kZShOb2RlKikKIHsKKyAgICBtX25vZGUu
Y2xlYXIoKTsKKyAgICBtX3RhcmdldEZ1bGxzY3JlZW4gPSBmYWxzZTsKKyAgICAKKyAgICBpZiAo
bV9pc0FuaW1hdGluZykKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIG1faXNBbmltYXRpbmcg
PSB0cnVlOwogICAgIGV4aXRGdWxsc2NyZWVuKCk7Ci0gICAgc2V0TWVkaWFFbGVtZW50KG51bGxw
dHIpOwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnNldER1cmF0aW9uKGRv
dWJsZSBkdXJhdGlvbikKQEAgLTEwOSwxMiArMTI1LDE4IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlcjo6c2V0VmlkZW9EaW1lbnNpb25zKGJvb2wgaGFzVmlkZW8sIGZsb2F0IHdpZHRo
LCBmCiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk6OlNldFZpZGVvRGltZW5zaW9ucyhoYXNWaWRlbywgd2lkdGgsIGhlaWdodCksIG1fcGFn
ZS0+cGFnZUlEKCkpOwogfQogICAgIAotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpz
ZXRWaWRlb0xheWVyKFBsYXRmb3JtTGF5ZXIqIHZpZGVvTGF5ZXIpCit2b2lkIFdlYlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXI6OndpbGxMZW5kVmlkZW9MYXllcihQbGF0Zm9ybUxheWVyKiB2aWRlb0xh
eWVyKQogewogICAgIG1fcGxhdGZvcm1DQUxheWVyID0gUGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9y
bUNBTGF5ZXIodmlkZW9MYXllcik7CiAgICAgbV9zZW5kVW5wYXJlbnRWaWRlb0xheWVyVHJhbnNh
Y3Rpb24gPSAhIW1fcGxhdGZvcm1DQUxheWVyOwogICAgIAotICAgIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXRWaWRlb0xheWVySUQobV9w
bGF0Zm9ybUNBTGF5ZXIgPyBtX3BsYXRmb3JtQ0FMYXllci0+bGF5ZXJJRCgpIDogMCksIG1fcGFn
ZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5OjpXaWxsTGVuZFZpZGVvTGF5ZXJXaXRoSUQobV9wbGF0Zm9ybUNBTGF5
ZXIgPyBtX3BsYXRmb3JtQ0FMYXllci0+bGF5ZXJJRCgpIDogMCksIG1fcGFnZS0+cGFnZUlEKCkp
OworfQorICAgIAordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRMZW5kVmlkZW9M
YXllcigpCit7CisgICAgLy8gbm8tb3AKKyAgICAvLyB0aGlzIHdpbGwgYmUgc2VudCB0aHJvdWdo
IGEgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24KIH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyOjplbnRlckZ1bGxzY3JlZW4oKQpAQCAtMTI2LDYgKzE0OCwzNiBAQCB2b2lkIFdl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmV4aXRGdWxsc2NyZWVuKCkKIHsKICAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6RXhpdEZ1bGxz
Y3JlZW4oKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CisgICAgCit2b2lkIFdlYlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6OmRpZEVudGVyRnVsbHNjcmVlbigpCit7CisgICAgbV9pc0FuaW1hdGluZyA9
IGZhbHNlOworICAgIG1faXNGdWxsc2NyZWVuID0gZmFsc2U7CisgICAgCisgICAgaWYgKCFtX3Rh
cmdldEZ1bGxzY3JlZW4pIHsKKyAgICAgICAgX19ibG9jayBSZWZQdHI8V2ViVmlkZW9GdWxsc2Ny
ZWVuTW9kZWxNZWRpYUVsZW1lbnQ+IHByb3RlY3QodGhpcyk7CisgICAgICAgIFdlYlRocmVhZFJ1
biheIHsKKyAgICAgICAgICAgIGV4aXRGdWxsc2NyZWVuRm9yTm9kZShtX25vZGUuZ2V0KCkpOwor
ICAgICAgICAgICAgcHJvdGVjdC5jbGVhcigpOworICAgICAgICB9KTsKKyAgICB9Cit9CisKK3Zv
aWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkRXhpdEZ1bGxzY3JlZW4oKQoreworICAg
IG1faXNBbmltYXRpbmcgPSBmYWxzZTsKKyAgICBtX2lzRnVsbHNjcmVlbiA9IGZhbHNlOworCisg
ICAgc2V0TWVkaWFFbGVtZW50KG51bGxwdHIpOworCisgICAgaWYgKG1fdGFyZ2V0RnVsbHNjcmVl
bikgeworICAgICAgICBfX2Jsb2NrIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbE1lZGlh
RWxlbWVudD4gcHJvdGVjdCh0aGlzKTsKKyAgICAgICAgV2ViVGhyZWFkUnVuKF4geworICAgICAg
ICAgICAgZW50ZXJGdWxsc2NyZWVuRm9yTm9kZShtX25vZGUuZ2V0KCkpOworICAgICAgICAgICAg
cHJvdGVjdC5jbGVhcigpOworICAgICAgICB9KTsKKyAgICB9Cit9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2lvcy9XZWJW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2lvcy9X
ZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmgKaW5kZXggOGUzYjhhM2Q3Njc0ZjI0NmVhZTIzNmRj
NjIwZDY0ZTVhYWEzZTQ5MS4uNTFiMDQxNGI3Yzc0MDQ5MTA5ZmVkMmVkNDE3ZTUyODZhYTNlYzU0
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvaW9zL1dlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXIuaApAQCAtNjcsMTggKzY3LDMwIEBAIHByb3RlY3RlZDoKICAg
ICBleHBsaWNpdCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKFBhc3NSZWZQdHI8V2ViUGFnZT4p
OwogICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImIHJocykg
b3ZlcnJpZGUgeyByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RXZlbnRMaXN0ZW5lcio+KHRo
aXMpID09ICZyaHM7IH0KICAgICAKKyAgICAvLyBGdWxsc2NyZWVuSW50ZXJmYWNlCiAgICAgdmly
dHVhbCB2b2lkIHNldER1cmF0aW9uKGRvdWJsZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IHNldEN1cnJlbnRUaW1lKGRvdWJsZSBjdXJyZW50VGltZSwgZG91YmxlIGFuY2hvclRpbWUpIG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRSYXRlKGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBw
bGF5YmFja1JhdGUpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0RpbWVuc2lv
bnMoYm9vbCBoYXNWaWRlbywgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCB2b2lkIHNldFZpZGVvTGF5ZXIoUGxhdGZvcm1MYXllciopIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCBlbnRlckZ1bGxzY3JlZW4oKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgZXhpdEZ1bGxzY3JlZW4oKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbExl
bmRWaWRlb0xheWVyKFBsYXRmb3JtTGF5ZXIqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkTGVuZFZpZGVvTGF5ZXIoKSBvdmVycmlkZTsKKworICAgIC8vIGZvcndhcmQgdG8gaW50ZXJm
YWNlCisgICAgdmlydHVhbCB2b2lkIGVudGVyRnVsbHNjcmVlbigpOworICAgIHZpcnR1YWwgdm9p
ZCBleGl0RnVsbHNjcmVlbigpOworICAgIAorICAgIC8vIGFkZGl0aW9uYWwgaW5jb21pbmcKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkRW50ZXJGdWxsc2NyZWVuKCk7CisgICAgdmlydHVhbCB2b2lkIGRp
ZEV4aXRGdWxsc2NyZWVuKCk7CiAgICAgCiAgICAgV2ViUGFnZSogbV9wYWdlOwogICAgIFJlZlB0
cjxXZWJDb3JlOjpOb2RlPiBtX25vZGU7CiAgICAgUmVmUHRyPFdlYkNvcmU6OlBsYXRmb3JtQ0FM
YXllcj4gbV9wbGF0Zm9ybUNBTGF5ZXI7CiAgICAgYm9vbCBtX3NlbmRVbnBhcmVudFZpZGVvTGF5
ZXJUcmFuc2FjdGlvbjsKKyAgICAKKyAgICBib29sIG1faXNBbmltYXRpbmc7CisgICAgYm9vbCBt
X3RhcmdldEZ1bGxzY3JlZW47CisgICAgYm9vbCBtX2lzRnVsbHNjcmVlbjsKIH07CiAgICAgCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1lc3NhZ2VzLmlu
CmluZGV4IDU0MWU1NWY0MmM4ZDQ1YTgzZTQ4NjQxOTk3MjE3NzA0ZWI5ZmMyODQuLjFhOTMyMmMz
NjFiNzM2MjIwZGZmNzA2MzZkN2NjZjI3MDc4MjUwMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlci5tZXNzYWdlcy5pbgpAQCAtMjAsMTQgKzIwLDE3IEBACiAjIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAKLSMgY2hhbmdlcyBoZXJlIG11c3QgYmUgcmVmbGVjdGVkIGlu
IFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsCiAjaWYgUExBVEZPUk0oSU9TKQogbWVzc2FnZXMgLT4g
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlciB7Ci0gICAgUmVxdWVzdEV4aXRGdWxsU2NyZWVuKCkK
ICAgICBQbGF5KCkKICAgICBQYXVzZSgpCiAgICAgVG9nZ2xlUGxheVN0YXRlKCkKICAgICBTZWVr
VG9UaW1lKGRvdWJsZSB0aW1lKQorICAgIEJvcnJvd1ZpZGVvTGF5ZXIoKQorICAgIFJldHVyblZp
ZGVvTGF5ZXIoKQorICAgIFJlcXVlc3RFeGl0RnVsbHNjcmVlbigpCisKICAgICBEaWRFeGl0RnVs
bHNjcmVlbigpCisgICAgRGlkRW50ZXJGdWxsc2NyZWVuKCkKIH0KICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225824</attachid>
            <date>2014-03-04 15:31:35 -0800</date>
            <delta_ts>2014-03-04 17:46:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-128844-20140304153134.patch</filename>
            <type>text/plain</type>
            <size>50063</size>
            <attacher name="Jeremy Jones">jeremyj-wk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY1MDAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWRjZDNiMWRmN2YzZjgx
Y2M5Y2IwYWQwOWEzZDc2OTY2NDg2ODE5NC4uNTIxODFjM2E1YTBiNDhkMmJjZDM3ODUzZDllZGIy
YjRlNDc4OWIwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOCBAQAorMjAxNC0wMy0wMyAgSmVy
ZW15IEpvbmVzICA8amVyZW15akBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViVmlkZW9GdWxsc2Ny
ZWVuLCBzaG91bGQgbWFrZSB0aGUgaGFuZCBvZmYgb2YgdGhlIHZpZGVvIGxheWVyIGV4cGxpY2l0
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI4ODQ0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBj
aGFuZ2UgaW50cm9kdWNlcyBhIG1vcmUgZXhwbGljaXQgaGFuZC1vZmYgb2YgdGhlIHZpZGVvIGxh
eWVyLgorICAgICAgICBUaGlzIGRlc2NyaWJlcyB0aGUgaW50ZXJhY3Rpb25zIGJldHdlZW4gV2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlIGFuZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbAorICAg
ICAgICBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbCA8LT4gV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlCisgICAgICAgICAgICAgIGVudGVyRnVsbFNjcmVlbigqKSAtPgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA8LSBib3Jyb3dWaWRlb0xheWVyCisgICAgICAgICAgICAgIHdpbGxM
ZW5kVmlkZW9MYXllciAtPgorICAgICAgICAgICAgICAgZGlkTGVuZFZpZGVvTGF5ZXIgLT4KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC0gZGlkRW50ZXJGdWxsc2NyZWVuCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8LSByZXF1ZXN0RXhpdEZ1bGxzY3JlZW4KKyAgICAgICAgICAgICAgICAgIGV4aXRG
dWxsc2NyZWVuIC0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwtIHJldHVyblZp
ZGVvTGF5ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC0gZGlkRXhpdEZ1bGxz
Y3JlZW4KKyAgICAgICAgKCopIGVudGVyRnVsbFNjcmVlbiBhY3R1YWxseSBjb21lcyBmcm9tIFdl
YlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC4KKworICAgICAgICAqIFdlYkNvcmUuZXhw
LmluOgorICAgICAgICBFeHBvcnQgbmV3IGZ1bmN0aW9ucyBpbiBXZWJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdCwgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxNZWRpYUVsZW1lbnQsIGV0Yy4K
KworICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZL
aXQubW06CisgICAgICAgIEFkZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ2hhbmdlT2Jz
ZXJ2ZXIgdG8gZm9yd2FyZCBmdWxsc2NyZWVuIGNhbGxiYWNrcyB0byBXZWJWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyCisKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDaGFu
Z2VPYnNlcnZlcjo6c2V0VGFyZ2V0KToKKyAgICAgICAgU2V0cyBvYmotYyB0YXJnZXQgb2YgZnVs
bHNjcmVlbiBjaGFuZ2UgY2FsbGJhY2tzLgorCisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVl
bkNvbnRyb2xsZXIgaW5pdF0pOgorICAgICAgICBQb2ludCBfY2hhbmdlT2JzZXJ2ZXIncyB0YXJn
ZXQgYXQgc2VsZi4KKworICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIGRl
YWxsb2NdKToKKyAgICAgICAgQ2xlYXIgX2NoYW5nZU9ic2VydmVyJ3MgdGFyZ2V0LgorCisgICAg
ICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgZW50ZXJGdWxsc2NyZWVuOl0pOgor
ICAgICAgICBSZXRhaW4gc2VsZiB0byBwcmV2ZW50IGRlYWxsb2MgZHVyaW5nIGFuaW1hdGlvbiBv
ciB3aGlsZSBmdWxsc2NyZWVuLgorICAgICAgICBDb25uZWN0IF9pbnRlcmZhY2UgdG8gX2NoYW5n
ZU9ic2VydmVyLgorCisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgZXhp
dEZ1bGxzY3JlZW5dKToKKyAgICAgICAgUmVtb3ZlIHVzZSBvZiBjb21wbGV0aW9uIG1vdmUgY2xl
YW51cCB0byAtZGlkRXhpdEZ1bGxzY3JlZW4uCisKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlciBkaWRFbnRlckZ1bGxzY3JlZW5dKToKKyAgICAgICAgTm90aGluZyB0byBz
ZWUgaGVyZS4KKworICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIGRpZEV4
aXRGdWxsc2NyZWVuXSk6CisgICAgICAgIE1vdmUgY2xlYW4gdXAgY29kZSB0aGF0IHdhcyBpbiBh
IGNvbXBsZXRpb24gdG8gaGVyZS4KKworICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2UuaDoKKyAgICAgICAgQWRkIGRlbGFyYXRpb25zIGZvciBtb3JlIGV4
cGxpY2l0IGhhbmQtb2ZmIG9mIHZpZGVvIGxheWVyLgorCisgICAgICAgICogcGxhdGZvcm0vaW9z
L1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lmg6CisgICAgICAgIEFkZCBXZWJWaWRl
b0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlciB0byBub3RpZnkgd2hlbiBmdWxsc2NyZWVuIGFuaW1h
dGlvbnMgY29tcGxldGUuCisgICAgICAgIEFkZCBkZWNsYXJhdGlvbnMgZm9yIG1vcmUgZXhwbGlj
aXQgaGFuZC1vZmYgb2YgdmlkZW8gbGF5ZXIuCisgICAgICAgIEFkZCBXZWJBVlBsYXllckxheWVy
IG5vdyBhbHdheXMgd3JhcHMgdGhlIG1fdmlkZW9MYXllciB0byBwcmV2ZW50IGRlZmF1bHQgYmVo
YXZpb3IKKyAgICAgICAgb2YgQVZQbGF5ZXJMYXllci4KKworICAgICAgICAoV2ViQ29yZTo6V2Vi
VmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXI6On5XZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VP
YnNlcnZlcik6CisgICAgICAgIEFkZCBlbXB0eSB2aXJ0dWFsIGRlc3RydWN0b3IuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW06Cisg
ICAgICAgIEluY2x1ZGUgQVZLaXQgaGVhZGVycyBpbnN0ZWFkIG9mIGRlY2xhcmluZyBldmVyeXRo
aW5nIGxvY2FsbHkuCisgICAgICAgIEFWUGxheWVyTGF5ZXIgcHJvdG9jb2wgcmVuYW1lZCB0byBB
VlZpZGVvTGF5ZXIgcGVyIEFWS2l0LgorCisgICAgICAgICgtW1dlYkFWUGxheWVyQ29udHJvbGxl
ciBkZWFsbG9jXSk6CisgICAgICAgIERvbid0IHJlZmVyIHRvIHNlbGYuCisKKyAgICAgICAgKC1b
V2ViQVZQbGF5ZXJDb250cm9sbGVyIHBsYXllclZpZXdDb250cm9sbGVyOnNob3VsZERpc21pc3NX
aXRoUmVhc29uOl0pOgorICAgICAgICBQYXVzZSBiZWZvcmUgcmVxdWVzdGluZyBleGl0IGZ1bGxz
Y3JlZW4uCisKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJMYXllciBzZXRQbGF5ZXJDb250cm9sbGVy
Ol0pOgorICAgICAgICBUaGlzIGlzIHJlcXVpcmVkIGJ5IEFWVmlkZW9MYXllciwgYnV0IHdlIGRv
bid0IG5lZWQgaXQuCisKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
OjpwbGF5ZXJDb250cm9sbGVyKToKKyAgICAgICAgV2hpdGUgc3BhY2UuCisKKyAgICAgICAgKFdl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRXZWJWaWRlb0Z1bGxzY3JlZW5DaGFu
Z2VPYnNlcnZlcik6CisgICAgICAgIFNldCBvYnNlcnZlciB0byBmb3J3YXJkIGZ1bGxzY3JlZW4g
Y2hhbmdlcyB0by4KKworICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6
OmVudGVyRnVsbHNjcmVlbik6CisgICAgICAgIFVzZSBtb3JlIGV4cGxpY2l0IHZpZGVvIGxheWVy
IGhhbmQtb2ZmLgorCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6
ZG9FbnRlckZ1bGxzY3JlZW4pOgorICAgICAgICBNb3ZlIGVudGVyRnVsbHNjcmVlbiBsb2dpYyBo
ZXJlLgorICAgICAgICBBVlBsYXllclZpZXdDb250cm9sbGVyIG5vdyB0YWtlcyB0aGUgdmlkZW8g
bGF5ZXIgYXQgaW5pdCB0aW1lLgorICAgICAgICBBbHdheXMgcHJvdmlkZSBhIHZpZGVvIGxheWVy
IHdyYXBwZWQgaW4gYSBXZWJBVlBsYXllckxheWVyLgorCisgICAgICAgIChXZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VBVktpdDo6d2lsbExlbmRWaWRlb0xheWVyKToKKyAgICAgICAgVXNlIG1v
cmUgZXhwbGljaXQgdmlkZW8gbGF5ZXIgaGFuZC1vZmYuCisKKyAgICAgICAgKFdlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUFWS2l0OjpkaWRMZW5kVmlkZW9MYXllcik6CisgICAgICAgIFVzZSBt
b3JlIGV4cGxpY2l0IHZpZGVvIGxheWVyIGhhbmQtb2ZmLgorCisgICAgICAgIChXZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZXhpdEZ1bGxzY3JlZW4pOgorICAgICAgICBVc2UgbW9y
ZSBleHBsaWNpdCB2aWRlbyBsYXllciBoYW5kLW9mZi4KKworICAgICAgICAqIHBsYXRmb3JtL2lv
cy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oOgorICAgICAgICBBZGQgZnVuY3Rpb25zIGZvciBt
b3JlIGV4cGxpY2l0IHZpZGVvIGxheWVyIGhhbmQtb2ZmLgorCisgICAgICAgICogcGxhdGZvcm0v
aW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50Lmg6CisgICAgICAgIE1hcmsg
dmlydHVhbCBmdW5jdGlvbnMgYXMgdmlydHVhbC4KKyAgICAgICAgQWRkIGNoYW5nZXMgZm9yIFdl
YlZpZGVvRnVsbHNjcmVlbk1vZGVsLgorCisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYlZpZGVv
RnVsbHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50Lm1tOgorICAgICAgICBVc2UgbW9yZSBleHBsaWNp
dCB2aWRlbyBsYXllciBoYW5kLW9mZi4KKworICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuTW9k
ZWxNZWRpYUVsZW1lbnQ6OnNldE1lZGlhRWxlbWVudCk6CisgICAgICAgIERvbid0IHB1c2ggdGhl
IHZpZGVvIGxheWVyLiBXYWl0IGZvciBhIHJlcXVlc3QgZm9yIGl0LgorCisgICAgICAgIChXZWJW
aWRlb0Z1bGxzY3JlZW5Nb2RlbE1lZGlhRWxlbWVudDo6aGFuZGxlRXZlbnQpOgorICAgICAgICBN
YWtlIHN1cmUgbV92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UgaXMgdmFsaWQuCisKKyAgICAgICAg
KFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50Ojpib3Jyb3dWaWRlb0xheWVyKToK
KyAgICAgICAgVXNlIG1vcmUgZXhwbGljaXQgdmlkZW8gbGF5ZXIgaGFuZC1vZmYuCisgICAgICAg
IExlbmQgdmlkZW9MYXllciBpbiByZXF1ZXN0IHRvIGEgcmVxdWVzdCB0byBib3Jyb3cgdGhlIHZp
ZGVvTGF5ZXIuCisgICAgICAgIE1ha2Ugc3VyZSB0byByZXRhaW4gdGhlIHZpZGVvIGxheWVyIGJl
Zm9yZSBpdCBpcyByZW1vdmVkIGZyb20gdGhlIGxheWVyIHRyZWUuCisKKyAgICAgICAgKFdlYlZp
ZGVvRnVsbHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50OjpyZXR1cm5WaWRlb0xheWVyKToKKyAgICAg
ICAgVXNlIG1vcmUgZXhwbGljaXQgdmlkZW8gbGF5ZXIgaGFuZC1vZmYuCisKKyAgICAgICAgKFdl
YlZpZGVvRnVsbHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50OjpyZXF1ZXN0RXhpdEZ1bGxzY3JlZW4p
OgorICAgICAgICBEb24ndCBjbGVhciB0aGUgbWVkaWFFbGVtZW50IHJlZmVyZW5jZSB1bnRpbCBj
b21wbGV0ZWx5IGV4aXRlZCBmcm9tIGZ1bGxzY3JlZW4uCisKIDIwMTQtMDMtMDMgIEFudHRpIEtv
aXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIEZpbmQgcmVzdWx0cyBvbiBzaW1w
bGUgbGluZXMgYXJlIG5vdCBtYXJrZWQgY29ycmVjdGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNjFmNTc3NmNm
NzY3Yjc2MzFhYjI0OWI2NDQ3NjViOWNmNzZmYjVhMC4uMGJhOTQzZDc3N2VhZDUzODY2MjE0NzJi
MjgwMWJiYWZjNzQ5N2YwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkyIEBACisyMDE0LTAzLTAz
ICBKZXJlbXkgSm9uZXMgIDxqZXJlbXlqQGFwcGxlLmNvbT4KKworICAgICAgICBXZWJWaWRlb0Z1
bGxzY3JlZW4sIHNob3VsZCBtYWtlIHRoZSBoYW5kIG9mZiBvZiB0aGUgdmlkZW8gbGF5ZXIgZXhw
bGljaXQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
Mjg4NDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGlzIGNoYW5nZSBpbnRyb2R1Y2VzIGEgbW9yZSBleHBsaWNpdCBoYW5kLW9mZiBvZiB0aGUgdmlk
ZW8gbGF5ZXIgYW5kIGZ1bGxzY3JlZW4gdHJhbnNpdGlvbi4KKyAgICAgICAgVGhpcyBkZXNjcmli
ZXMgdGhlIGludGVyYWN0aW9ucyBiZXR3ZWVuIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZSBh
bmQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwKKyAgICAgICAgV2ViVmlkZW9GdWxsc2NyZWVuTW9k
ZWwgPC0+IFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZQorICAgICAgICAgICAgICBlbnRlckZ1
bGxTY3JlZW4oKikgLT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC0gYm9ycm93
VmlkZW9MYXllcgorICAgICAgICAgICAgICB3aWxsTGVuZFZpZGVvTGF5ZXIgLT4KKyAgICAgICAg
ICAgICAgIGRpZExlbmRWaWRlb0xheWVyIC0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDwtIGRpZEVudGVyRnVsbHNjcmVlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC0gcmVxdWVzdEV4aXRGdWxs
c2NyZWVuCisgICAgICAgICAgICAgICAgICBleGl0RnVsbHNjcmVlbiAtPgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8LSByZXR1cm5WaWRlb0xheWVyCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDwtIGRpZEV4aXRGdWxsc2NyZWVuCisgICAgICAgICgqKSBlbnRlckZ1
bGxTY3JlZW4gYWN0dWFsbHkgY29tZXMgZnJvbSBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
QVZLaXQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXJQcm94eS5oOgorICAgICAgICBJbXBsZW1lbnQgV2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2Jz
ZXJ2ZXIuCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBleHBsaWNpdCB2aWRlbyBsYXllciBoYW5k
LW9mZi4KKyAgICAgICAgQWRkIG1fdmlkZW9WaWV3IHRvIHJldGFpbiB0aGUgdmlkZW9MYXllcidz
IFVJVmlldy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICBXaWxsTGVuZFZpZGVvTGF5ZXJXaXRoSUQg
cmVwbGFjZXMgU2V0VmlkZW9MYXllcklECisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbToKKyAgICAgICAgQWRvcHQgbmV3IG1ldGhvZHMg
Zm9yIGV4cGxpY2l0IHZpZGVvIGxheWVyIGhhbmQtb2ZmLgorCisgICAgICAgIChXZWJLaXQ6Oldl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5KToKKyAgICAgICAgT2JzZXJ2ZSBmdWxsc2NyZWVuIGNoYW5nZXMuCisKKyAgICAgICAgKFdl
YktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRDb21taXRMYXllclRyZWUp
OgorICAgICAgICBQZW5kaW5nIGZ1bGxzY3JlZW4gdHJhbnNpdGlvbiBub3cgZG9lcyBkaWRMZW5k
VmlkZW9MYXllciBpbnN0ZWFkIG9mIGNhbGxpbmcgZW50ZXIgZnVsbHNjcmVlbi4KKyAgICAgICAg
SXQgYWxzbyByZW1vdmVzIHRoZSB2aWRlb1ZpZXcgZnJvbSBpdCdzIHN1cGVyIHZpZXcgbm93IHRo
YXQgaXQgaXMgc2FmZSB0byBkbyBzby4KKworICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyUHJveHk6OndpbGxMZW5kVmlkZW9MYXllcldpdGhJRCk6CisgICAgICAgIFRo
aXMgcmVwbGFjZXMgc2V0VmlkZW9MYXllcklELiBJdCByZXRhaW5zIHRoZSBVSVZpZXcgZm9yIHRo
ZSBsYXllciB0byBrZWVwIGl0IGFsaXZlIGJlZm9yZSBpdCBpcyB1bnBhcmVudGVkLgorCisgICAg
ICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6cmVxdWVzdEV4aXRG
dWxsc2NyZWVuKToKKyAgICAgICAgQWRvcHQgbW9yZSBleHBsaWNpdCBmdWxsc2NyZWVuIHRyYW5z
aXRpb24uCisKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
OjpkaWRFeGl0RnVsbHNjcmVlbik6CisgICAgICAgIEFkb3B0IG1vcmUgZXhwbGljaXQgZnVsbHNj
cmVlbiB0cmFuc2l0aW9uLgorCisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eTo6ZGlkRW50ZXJGdWxsc2NyZWVuKToKKyAgICAgICAgQWRvcHQgbW9yZSBleHBs
aWNpdCBmdWxsc2NyZWVuIHRyYW5zaXRpb24uCisKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5Ojpib3Jyb3dWaWRlb0xheWVyKToKKyAgICAgICAgQWRvcHQg
bW9yZSBleHBsaWNpdCB2aWRlbyBsYXllciBoYW5kLW9mZi4KKworICAgICAgICAoV2ViS2l0OjpX
ZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnJldHVyblZpZGVvTGF5ZXIpOgorICAgICAg
ICBBZG9wdCBtb3JlIGV4cGxpY2l0IHZpZGVvIGxheWVyIGhhbmQtb2ZmLgorCisgICAgICAgICog
V2ViUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5jcHA6CisgICAgICAgIE1h
bmFnZSBzdGF0ZSBvZiBmdWxsc2NyZWVuIHRyYW5zaXRpb24gbW9yZSBjb21wZXRlbnRseS4gV2Fp
dCB0aWxsIGFuIGFuaW1hdGlvbiBpcyBjb21wbGV0ZSB0byBiZWdpbiB0aGUgbmV4dCBvbmUuCisK
KyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6V2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlcik6CisgICAgICAgIEluaXQgdGhyZWUgbmV3IHN0YXRlIG1lbWJlcnMuCisK
KyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZW50ZXJGdWxsc2Ny
ZWVuRm9yTm9kZSk6CisgICAgICAgIFVwZGF0ZSBhbmltYXRpb24gc3RhdGUuIERvbid0IHByb2Nl
ZGUgaWYgYW5pbWF0aW9uIGlzIGluIHByb2dyZXNzLgorCisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmV4aXRGdWxsc2NyZWVuRm9yTm9kZSk6CisgICAgICAgIFVw
ZGF0ZSBhbmltYXRpb24gc3RhdGUuIERvbid0IHByb2NlZGUgaWYgYW5pbWF0aW9uIGlzIGluIHBy
b2dyZXNzLgorCisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6Ondp
bGxMZW5kVmlkZW9MYXllcik6CisgICAgICAgIEFkb3B0IG1vcmUgZXhwbGljaXQgdmlkZW8gbGF5
ZXIgaGFuZC1vZmYuCisgICAgICAgIFRoaXMgcmVwbGFjZXMgU2V0VmlkZW9MYXllci4KKworICAg
ICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRMZW5kVmlkZW9MYXll
cik6CisgICAgICAgIFRoaXMgaXMgYSBuby1vcCBhcyB0aGlzIHdpbGwgYmUgc2VudCB0aHJvdWdo
IGEgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uCisKKyAgICAgICAgKFdlYktpdDo6V2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkRW50ZXJGdWxsc2NyZWVuKToKKyAgICAgICAgQWRvcHQg
bW9yZSBleHBsaWNpdCBmdWxsc2NyZWVuIHRyYW5zaXRpb24uCisKKyAgICAgICAgKFdlYktpdDo6
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkRXhpdEZ1bGxzY3JlZW4pOgorICAgICAgICBB
ZG9wdCBtb3JlIGV4cGxpY2l0IGZ1bGxzY3JlZW4gdHJhbnNpdGlvbi4KKworICAgICAgICAqIFdl
YlByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaDoKKyAgICAgICAgQWRvcHQg
bW9yZSBleHBsaWNpdCBmdWxsc2NyZWVuIHRyYW5zaXRpb24uCisKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1lc3NhZ2VzLmluOgorICAgICAgICBB
ZG9wdCBtb3JlIGV4cGxpY2l0IGZ1bGxzY3JlZW4vdmlkZW8gbGF5ZXIgdHJhbnNpdGlvbi4KKwog
MjAxNC0wMy0wMyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAg
ICAgICBDcmFzaCB3aGVuIGdvaW5nIGludG8gdmlkZW8gZnVsbHNjcmVlbiBvbiBpT1MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5leHAuaW4KaW5kZXggZmQ4MmIxYzg4MGU2YzljN2IwY2NiZGMzZDU2YTlkNjI2OWNhNjlm
ZS4uZDM3Yzk0NjlmY2IyMjI0ZjBkYzc4M2IwMDBhZGQ3YjQ0MGExMTJkMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KQEAgLTMxOTQsMjEgKzMxOTQsMjUgQEAgX19aTks3V2ViQ29yZTE2SFRNTE1lZGlh
RWxlbWVudDhkdXJhdGlvbkV2CiAjZW5kaWYKIAogI2lmIEVOQUJMRShWSURFTykgJiYgUExBVEZP
Uk0oSU9TKQorX19aTjdXZWJDb3JlMzJXZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlckQy
RXYKIF9fWk43V2ViQ29yZTMyV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQxMXNldER1
cmF0aW9uRWQKLV9fWk43V2ViQ29yZTMyV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQx
M3NldFZpZGVvTGF5ZXJFUDdDQUxheWVyCiBfX1pON1dlYkNvcmUzMldlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0MTRleGl0RnVsbHNjcmVlbkV2CiBfX1pON1dlYkNvcmUzMldlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUFWS2l0MTRzZXRDdXJyZW50VGltZUVkZAogX19aTjdXZWJDb3Jl
MzJXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDE1ZW50ZXJGdWxsc2NyZWVuRXYKK19f
Wk43V2ViQ29yZTMyV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQxN2RpZExlbmRWaWRl
b0xheWVyRXYKIF9fWk43V2ViQ29yZTMyV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQx
OHNldFZpZGVvRGltZW5zaW9uc0ViZmYKK19fWk43V2ViQ29yZTMyV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQxOHdpbGxMZW5kVmlkZW9MYXllckVQN0NBTGF5ZXIKIF9fWk43V2ViQ29y
ZTMyV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQyNnNldFdlYlZpZGVvRnVsbHNjcmVl
bk1vZGVsRVBOU18yM1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsRQorX19aTjdXZWJDb3JlMzJXZWJW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDM1c2V0V2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdl
T2JzZXJ2ZXJFUE5TXzMyV2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXJFCiBfX1pON1dl
YkNvcmUzMldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0N3NldFJhdGVFYmYKIF9fWk43
V2ViQ29yZTMyV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXRDMkV2CiBfX1pON1dlYkNv
cmUzNVdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50MTBzZWVrVG9UaW1lRWQKIF9f
Wk43V2ViQ29yZTM1V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxNZWRpYUVsZW1lbnQxMWhhbmRsZUV2
ZW50RVBOU18yMlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRFUE5TXzVFdmVudEUKIF9fWk43V2ViQ29y
ZTM1V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxNZWRpYUVsZW1lbnQxNXNldE1lZGlhRWxlbWVudEVQ
TlNfMTZIVE1MTWVkaWFFbGVtZW50RQogX19aTjdXZWJDb3JlMzVXZWJWaWRlb0Z1bGxzY3JlZW5N
b2RlbE1lZGlhRWxlbWVudDE1dG9nZ2xlUGxheVN0YXRlRXYKLV9fWk43V2ViQ29yZTM1V2ViVmlk
ZW9GdWxsc2NyZWVuTW9kZWxNZWRpYUVsZW1lbnQxN2RpZEV4aXRGdWxsc2NyZWVuRXYKLV9fWk43
V2ViQ29yZTM1V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxNZWRpYUVsZW1lbnQyMXJlcXVlc3RFeGl0
RnVsbFNjcmVlbkV2CitfX1pON1dlYkNvcmUzNVdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsTWVkaWFF
bGVtZW50MTZib3Jyb3dWaWRlb0xheWVyRXYKK19fWk43V2ViQ29yZTM1V2ViVmlkZW9GdWxsc2Ny
ZWVuTW9kZWxNZWRpYUVsZW1lbnQxNnJldHVyblZpZGVvTGF5ZXJFdgorX19aTjdXZWJDb3JlMzVX
ZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbE1lZGlhRWxlbWVudDIxcmVxdWVzdEV4aXRGdWxsc2NyZWVu
RXYKIF9fWk43V2ViQ29yZTM1V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxNZWRpYUVsZW1lbnQ0cGxh
eUV2CiBfX1pON1dlYkNvcmUzNVdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50NXBh
dXNlRXYKIF9fWk43V2ViQ29yZTM1V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxNZWRpYUVsZW1lbnRD
MkV2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dl
YlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQppbmRleCBmMTgwYTc3YmI4OWVlYjYy
ZDI3MGI1N2U4YmU0OTQ1M2U2MjA1NGFmLi5hYzk3NWE0N2FjN2JiODgwNTdjOTNkMDZhNjJkOTFl
OWUyZjE3ZjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0KQEAgLTM2LDE3ICsz
NiwzMyBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAorQGludGVyZmFjZSBXZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyIChGdWxsc2NyZWVuT2JzZXJ2YXRpb24pCistICh2b2lkKWRp
ZEVudGVyRnVsbHNjcmVlbjsKKy0gKHZvaWQpZGlkRXhpdEZ1bGxzY3JlZW47CitAZW5kCisKK2Ns
YXNzIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDaGFuZ2VPYnNlcnZlciA6IHB1YmxpYyBX
ZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlciB7CisgICAgV2ViVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlciogX3RhcmdldDsKK3B1YmxpYzoKKyAgICB2b2lkIHNldFRhcmdldChXZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyKiB0YXJnZXQpIHsgX3RhcmdldCA9IHRhcmdldDsgfQorICAg
IHZpcnR1YWwgdm9pZCBkaWRFbnRlckZ1bGxzY3JlZW4oKSBvdmVycmlkZSB7IFtfdGFyZ2V0IGRp
ZEVudGVyRnVsbHNjcmVlbl07IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRXhpdEZ1bGxzY3JlZW4o
KSBvdmVycmlkZSB7IFtfdGFyZ2V0IGRpZEV4aXRGdWxsc2NyZWVuXTsgfQorfTsKKwogQGltcGxl
bWVudGF0aW9uIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIKIHsKICAgICBSZWZQdHI8SFRN
TE1lZGlhRWxlbWVudD4gX21lZGlhRWxlbWVudDsKICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQVZLaXQ+IF9pbnRlcmZhY2U7CiAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNj
cmVlbk1vZGVsTWVkaWFFbGVtZW50PiBfbW9kZWw7CisgICAgV2ViVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlckNoYW5nZU9ic2VydmVyIF9jaGFuZ2VPYnNlcnZlcjsKIH0KIAogLSAoaW5zdGFuY2V0
eXBlKWluaXQKIHsKICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0
dXJuIG5pbDsKKyAgICAKKyAgICBfY2hhbmdlT2JzZXJ2ZXIuc2V0VGFyZ2V0KHNlbGYpOwogCiAg
ICAgcmV0dXJuIHNlbGY7CiB9CkBAIC02OSw4ICs4NSwxMSBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAogLSAodm9pZCllbnRlckZ1bGxzY3JlZW46KFVJU2NyZWVuICopc2NyZWVuCiB7Cisg
ICAgW3NlbGYgcmV0YWluXTsgLy8gQmFsYW5jZWQgYnkgLXJlbGVhc2UgaW4gZGlkRXhpdEZ1bGxz
Y3JlZW46CisgICAgCiAgICAgVU5VU0VEX1BBUkFNKHNjcmVlbik7CiAgICAgX2ludGVyZmFjZSA9
IGFkb3B0UmVmKG5ldyBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdCk7CisgICAgX2lu
dGVyZmFjZS0+c2V0V2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIoJl9jaGFuZ2VPYnNl
cnZlcik7CiAgICAgX21vZGVsID0gYWRvcHRSZWYobmV3IFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVs
TWVkaWFFbGVtZW50KTsKICAgICBfbW9kZWwtPnNldFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZShfaW50ZXJmYWNlLmdldCgpKTsKICAgICBfaW50ZXJmYWNlLT5zZXRXZWJWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbChfbW9kZWwuZ2V0KCkpOwpAQCAtODAsMTYgKzk5LDI0IEBAIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCiAtICh2b2lkKWV4aXRGdWxsc2NyZWVuCiB7Ci0gICAgUmV0YWluUHRyPFdl
YlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXI+IHN0cm9uZ1NlbGYoc2VsZik7Ci0gICAgCi0gICAg
X2ludGVyZmFjZS0+ZXhpdEZ1bGxzY3JlZW5XaXRoQ29tcGxldGlvbkhhbmRsZXIoW3N0cm9uZ1Nl
bGZdewotICAgICAgICBXZWJUaHJlYWRSdW4oW3N0cm9uZ1NlbGZdewotICAgICAgICAgICAgc3Ry
b25nU2VsZi0+X21vZGVsLT5zZXRNZWRpYUVsZW1lbnQobnVsbHB0cik7Ci0gICAgICAgICAgICBz
dHJvbmdTZWxmLT5faW50ZXJmYWNlLT5zZXRXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbChudWxscHRy
KTsKLSAgICAgICAgICAgIHN0cm9uZ1NlbGYtPl9tb2RlbC0+c2V0V2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlKG51bGxwdHIpOwotICAgICAgICAgICAgc3Ryb25nU2VsZi0+X21vZGVsID0gbnVs
bHB0cjsKLSAgICAgICAgICAgIHN0cm9uZ1NlbGYtPl9pbnRlcmZhY2UgPSBudWxscHRyOwotICAg
ICAgICB9KTsKKyAgICBfaW50ZXJmYWNlLT5leGl0RnVsbHNjcmVlbigpOworfQorCistICh2b2lk
KWRpZEVudGVyRnVsbHNjcmVlbgoreworfQorCistICh2b2lkKWRpZEV4aXRGdWxsc2NyZWVuCit7
CisgICAgV2ViVGhyZWFkUnVuKF57CisgICAgICAgIF9tb2RlbC0+c2V0TWVkaWFFbGVtZW50KG51
bGxwdHIpOworICAgICAgICBfaW50ZXJmYWNlLT5zZXRXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbChu
dWxscHRyKTsKKyAgICAgICAgX2ludGVyZmFjZS0+c2V0V2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdl
T2JzZXJ2ZXIobnVsbHB0cik7CisgICAgICAgIF9tb2RlbC0+c2V0V2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlKG51bGxwdHIpOworICAgICAgICBfbW9kZWwgPSBudWxscHRyOworICAgICAgICBf
aW50ZXJmYWNlID0gbnVsbHB0cjsKKyAgICAgICAgCisgICAgICAgIFtzZWxmIHJlbGVhc2VdOyAv
LyBCYWxhbmNlIHRoZSAtcmV0YWluIHdlIGRpZCBpbiBlbnRlckZ1bGxzY3JlZW46CiAgICAgfSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2UuaAppbmRleCA1ODNkMmIyOTk5YWZjMThkMDQxNjhjMGY5Mzc4
Yjg1MjhiNDZlMmUxLi5hOWM0MDczNzYzYWQ5N2JiZTM3MjVjZGM3NjJjNWQ5YmY3ODBlNmIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZS5oCkBAIC00MCw5ICs0MCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgc2V0Q3VycmVudFRpbWUoZG91YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUgYW5jaG9yVGlt
ZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRSYXRlKGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBw
bGF5YmFja1JhdGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9EaW1lbnNpb25zKGJv
b2wgaGFzVmlkZW8sIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgc2V0VmlkZW9MYXllcihQbGF0Zm9ybUxheWVyKikgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBlbnRlckZ1bGxzY3JlZW4oKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGV4aXRGdWxsc2NyZWVu
KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB3aWxsTGVuZFZpZGVvTGF5ZXIoUGxhdGZvcm1MYXll
ciopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkTGVuZFZpZGVvTGF5ZXIoKSA9IDA7CiB9Owog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oCmluZGV4IDBmMjgwMmNlNjk1NjM0YjE0M2Yy
ZjEzYzE3MmZmZGU2ZTgwODE3ZDEuLjgzNDQ5MDg0MGU3YTM2Y2VlNTg1MTVmYTVjZTE0NDBlMTc5
ZDUzNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oCkBAIC00MCwxMCArNDAsMTkgQEAg
T0JKQ19DTEFTUyBXZWJBVlBsYXllckNvbnRyb2xsZXI7CiBPQkpDX0NMQVNTIEFWUGxheWVyVmll
d0NvbnRyb2xsZXI7CiBPQkpDX0NMQVNTIFVJVmlld0NvbnRyb2xsZXI7CiBPQkpDX0NMQVNTIFVJ
V2luZG93OworT0JKQ19DTEFTUyBDQUxheWVyOworT0JKQ19DTEFTUyBXZWJBVlBsYXllckxheWVy
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbDsK
ICAgICAKK2NsYXNzIFdlYlZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyIHsKK3B1YmxpYzoK
KyAgICB2aXJ0dWFsIH5XZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcigpIHsgfTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkRW50ZXJGdWxsc2NyZWVuKCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBkaWRFeGl0RnVsbHNjcmVlbigpID0gMDsKK307CisgICAgCiBjbGFzcyBXZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VBVktpdAogICAgIDogcHVibGljIFdlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZQogICAgICwgcHVibGljIFJlZkNvdW50ZWQ8V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQ+IHsKQEAgLTUyLDI0ICs2MSwzMSBAQCBjbGFzcyBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdAogICAgIFJldGFpblB0cjxBVlBsYXllclZpZXdDb250cm9sbGVyPiBtX3BsYXll
clZpZXdDb250cm9sbGVyOwogICAgIFJldGFpblB0cjxVSVZpZXdDb250cm9sbGVyPiBtX3ZpZXdD
b250cm9sbGVyOwogICAgIFJldGFpblB0cjxVSVdpbmRvdz4gbV93aW5kb3c7CisgICAgUmV0YWlu
UHRyPENBTGF5ZXI+IG1fdmlkZW9MYXllcjsKKyAgICBSZXRhaW5QdHI8V2ViQVZQbGF5ZXJMYXll
cj4gbV92aWRlb0xheWVyQ29udGFpbmVyOwogICAgIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsKiBt
X3ZpZGVvRnVsbHNjcmVlbk1vZGVsOworICAgIFdlYlZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2Vy
dmVyKiBtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcjsKICAgICAgICAgCiAgICAgV2ViQVZQbGF5
ZXJDb250cm9sbGVyICpwbGF5ZXJDb250cm9sbGVyKCk7CiAgICAgCisgICAgdm9pZCBkb0VudGVy
RnVsbHNjcmVlbigpOworICAgICAgICAKIHB1YmxpYzoKICAgICBXZWJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdCgpOwogICAgIHZpcnR1YWwgfldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0KCkgeyB9CiAgICAgdm9pZCBzZXRXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbChXZWJWaWRl
b0Z1bGxzY3JlZW5Nb2RlbCopOworICAgIHZvaWQgc2V0V2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdl
T2JzZXJ2ZXIoV2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIqKTsKICAgICAKLSAgICB2
b2lkIHNldER1cmF0aW9uKGRvdWJsZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRDdXJyZW50VGlt
ZShkb3VibGUgY3VycmVudFRpbWUsIGRvdWJsZSBhbmNob3JUaW1lKSBvdmVycmlkZTsKLSAgICB2
b2lkIHNldFJhdGUoYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBzZXRWaWRlb0RpbWVuc2lvbnMoYm9vbCBoYXNWaWRlbywgZmxvYXQgd2lkdGgs
IGZsb2F0IGhlaWdodCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRWaWRlb0xheWVyKFBsYXRmb3Jt
TGF5ZXIqKSBvdmVycmlkZTsKLSAgICB2b2lkIGVudGVyRnVsbHNjcmVlbigpIG92ZXJyaWRlOwot
ICAgIHZvaWQgZW50ZXJGdWxsc2NyZWVuV2l0aENvbXBsZXRpb25IYW5kbGVyKHN0ZDo6ZnVuY3Rp
b248dm9pZCgpPik7Ci0gICAgdm9pZCBleGl0RnVsbHNjcmVlbigpIG92ZXJyaWRlOwotICAgIHZv
aWQgZXhpdEZ1bGxzY3JlZW5XaXRoQ29tcGxldGlvbkhhbmRsZXIoc3RkOjpmdW5jdGlvbjx2b2lk
KCk+KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RHVyYXRpb24oZG91YmxlKSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0Q3VycmVudFRpbWUoZG91YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUg
YW5jaG9yVGltZSkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNldFJhdGUoYm9vbCBpc1Bs
YXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNl
dFZpZGVvRGltZW5zaW9ucyhib29sIGhhc1ZpZGVvLCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0
KSBvdmVycmlkZTsKKworICAgIHZpcnR1YWwgdm9pZCB3aWxsTGVuZFZpZGVvTGF5ZXIoUGxhdGZv
cm1MYXllciopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRMZW5kVmlkZW9MYXllcigp
IG92ZXJyaWRlOworCisgICAgdmlydHVhbCB2b2lkIGVudGVyRnVsbHNjcmVlbigpOworICAgIHZp
cnR1YWwgdm9pZCBleGl0RnVsbHNjcmVlbigpOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0Lm1tCmluZGV4IGM4ZWE5NDI2NmZjMjJlMDg0NGI4MWNlYmRhNjA2ZDlmYzRkMmI0NWYu
LmVlYzZjOTBkZDU2NGQzMzJhNjFhNjgxYTc1YjVjYjYzNWJlOTRmNzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktp
dC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQubW0KQEAgLTM3LDYgKzM3LDEyIEBACiAjaW1wb3J0IDxXZWJDb3JlL1dl
YkNvcmVUaHJlYWRSdW4uaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgIldl
YlZpZGVvRnVsbHNjcmVlbk1vZGVsLmgiCisjaW1wb3J0IDxBVktpdC9BVktpdC5oPgorI2ltcG9y
dCA8QVZLaXQvQVZQbGF5ZXJDb250cm9sbGVyLmg+CisjaW1wb3J0IDxBVktpdC9BVlBsYXllclZp
ZXdDb250cm9sbGVyX1dlYktpdE9ubHkuaD4KKyNpbXBvcnQgPEFWS2l0L0FWVmlkZW9MYXllci5o
PgorI2ltcG9ydCA8QVZLaXQvQVZWYWx1ZVRpbWluZy5oPgorI2ltcG9ydCA8QVZLaXQvQVZQbGF5
ZXJWaWV3Q29udHJvbGxlcl9Qcml2YXRlLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CkBAIC01OSw0NSArNjUsMTAgQEAgU09GVF9MSU5LX0ZSQU1FV09SSyhDb3JlTWVkaWEpCiBTT0ZU
X0xJTksoQ29yZU1lZGlhLCBDTVRpbWVNYWtlV2l0aFNlY29uZHMsIENNVGltZSwgKEZsb2F0NjQg
c2Vjb25kcywgaW50MzJfdCBwcmVmZXJyZWRUaW1lU2NhbGUpLCAoc2Vjb25kcywgcHJlZmVycmVk
VGltZVNjYWxlKSkKIFNPRlRfTElOSyhDb3JlTWVkaWEsIENNVGltZUdldFNlY29uZHMsIEZsb2F0
NjQsIChDTVRpbWUgdGltZSksICh0aW1lKSkKIAotQGludGVyZmFjZSBBVlZhbHVlVGltaW5nIDog
TlNPYmplY3QgPE5TQ29kaW5nLCBOU0NvcHlpbmcsIE5TTXV0YWJsZUNvcHlpbmc+Ci0rIChpZCl2
YWx1ZVRpbWluZ1dpdGhBbmNob3JWYWx1ZTooZG91YmxlKWFuY2hvclZhbHVlIGFuY2hvclRpbWVT
dGFtcDooTlNUaW1lSW50ZXJ2YWwpIHRpbWVTdGFtcCByYXRlOihkb3VibGUpcmF0ZTsKLSsgKE5T
VGltZUludGVydmFsKWN1cnJlbnRUaW1lU3RhbXA7Ci1AZW5kCi0KLUBwcm90b2NvbCBBVlBsYXll
clZpZXdDb250cm9sbGVyRGVsZWdhdGUKLUBlbmQKLQotQHByb3RvY29sIEFWUGxheWVyTGF5ZXIK
LUBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU1N0cmluZyAqdmlkZW9HcmF2aXR5OwotQHBy
b3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBnZXR0ZXIgPSBpc1JlYWR5Rm9yRGlzcGxheSkg
Qk9PTCByZWFkeUZvckRpc3BsYXk7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIENH
UmVjdCB2aWRlb1JlY3Q7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgQVZQbGF5ZXJDb250cm9sbGVyIDog
VUlSZXNwb25kZXIKLUBlbmQKLQotQGludGVyZmFjZSBBVlBsYXllclZpZXdDb250cm9sbGVyIDog
VUlWaWV3Q29udHJvbGxlcgotQHByb3BlcnR5IChub25hdG9taWMsIHdlYWspIGlkIDxBVlBsYXll
clZpZXdDb250cm9sbGVyRGVsZWdhdGU+IGRlbGVnYXRlOwotQHByb3BlcnR5IChub25hdG9taWMs
IHN0cm9uZykgQVZQbGF5ZXJDb250cm9sbGVyICpwbGF5ZXJDb250cm9sbGVyOwotQGVuZAotCi10
eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBBVlBsYXllclZpZXdDb250cm9sbGVyRGlzbWlzc2Fs
UmVhc29uKSB7Ci0gICAgQVZQbGF5ZXJWaWV3Q29udHJvbGxlckRpc21pc3NhbFJlYXNvbkRvbmVC
dXR0b25UYXBwZWQsCi0gICAgQVZQbGF5ZXJWaWV3Q29udHJvbGxlckRpc21pc3NhbFJlYXNvblJl
bW90ZUNvbnRyb2xTdG9wRXZlbnRSZWNlaXZlZCwKLSAgICBBVlBsYXllclZpZXdDb250cm9sbGVy
RGlzbWlzc2FsUmVhc29uRXJyb3IKLX0gTlNfRU5VTV9BVkFJTEFCTEVfSU9TKDhfMCk7Ci0KLXR5
cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIEFWUGxheWVyQ29udHJvbGxlclN0YXR1cykgewotICAg
IEFWUGxheWVyQ29udHJvbGxlclN0YXR1c1Vua25vd24sCi0gICAgQVZQbGF5ZXJDb250cm9sbGVy
U3RhdHVzTG9hZGluZywKLSAgICBBVlBsYXllckNvbnRyb2xsZXJTdGF0dXNSZWFkeVRvUGxheSwK
LSAgICBBVlBsYXllckNvbnRyb2xsZXJTdGF0dXNGYWlsZWQKLX0gTlNfRU5VTV9BVkFJTEFCTEUo
MTBfMTAsIDhfMCk7Ci0KIEBpbnRlcmZhY2UgV2ViQVZQbGF5ZXJDb250cm9sbGVyIDogTlNPYmpl
Y3QgPEFWUGxheWVyVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZT4KIAogQHByb3BlcnR5KHJldGFpbikg
QVZQbGF5ZXJDb250cm9sbGVyKiBwbGF5ZXJDb250cm9sbGVyUHJveHk7Ci1AcHJvcGVydHkocmV0
YWluKSBDQUxheWVyPEFWUGxheWVyTGF5ZXI+ICpwbGF5ZXJMYXllcjsKK0Bwcm9wZXJ0eShyZXRh
aW4pIENBTGF5ZXI8QVZWaWRlb0xheWVyPiAqcGxheWVyTGF5ZXI7CiBAcHJvcGVydHkoYXNzaWdu
KSBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbCogZGVsZWdhdGU7CiAKIEBwcm9wZXJ0eSBCT09MIGNh
blBsYXk7CkBAIC0xMzQsMTEgKzEwNSwxMCBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBB
VlBsYXllckNvbnRyb2xsZXJTdGF0dXMpIHsKIAogLSAodm9pZClkZWFsbG9jCiB7Ci0gICAgc2Vs
Zi5kZWxlZ2F0ZSA9IG5pbDsKLSAgICBzZWxmLnBsYXllckNvbnRyb2xsZXJQcm94eSA9IG5pbDsK
LSAgICBzZWxmLnBsYXllckxheWVyID0gbmlsOwotICAgIHNlbGYubG9hZGVkVGltZVJhbmdlcyA9
IG5pbDsKLSAgICBzZWxmLnRpbWluZyA9IG5pbDsKKyAgICBbX3BsYXllckNvbnRyb2xsZXJQcm94
eSByZWxlYXNlXTsKKyAgICBbX3BsYXllckxheWVyIHJlbGVhc2VdOworICAgIFtfbG9hZGVkVGlt
ZVJhbmdlcyByZWxlYXNlXTsKKyAgICBbX3RpbWluZyByZWxlYXNlXTsKICAgICBbc3VwZXIgZGVh
bGxvY107CiB9CiAKQEAgLTE1Myw3ICsxMjMsOCBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2Vy
LCBBVlBsYXllckNvbnRyb2xsZXJTdGF0dXMpIHsKICAgICBVTlVTRURfUEFSQU0ocGxheWVyVmll
d0NvbnRyb2xsZXIpOwogICAgIFVOVVNFRF9QQVJBTShyZWFzb24pOwogICAgIEFTU0VSVChzZWxm
LmRlbGVnYXRlKTsKLSAgICBzZWxmLmRlbGVnYXRlLT5yZXF1ZXN0RXhpdEZ1bGxTY3JlZW4oKTsK
KyAgICBzZWxmLmRlbGVnYXRlLT5wYXVzZSgpOworICAgIHNlbGYuZGVsZWdhdGUtPnJlcXVlc3RF
eGl0RnVsbHNjcmVlbigpOwogICAgIHJldHVybiBOTzsKIH0KIApAQCAtMjA1LDExICsxNzYsMTIg
QEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgQVZQbGF5ZXJDb250cm9sbGVyU3RhdHVzKSB7
CiAKIEBlbmQKIAotQGludGVyZmFjZSBXZWJBVlBsYXllckxheWVyIDogQ0FMYXllciA8QVZQbGF5
ZXJMYXllcj4KK0BpbnRlcmZhY2UgV2ViQVZQbGF5ZXJMYXllciA6IENBTGF5ZXIgPEFWVmlkZW9M
YXllcj4KICsoV2ViQVZQbGF5ZXJMYXllciAqKXBsYXllckxheWVyOwotQHByb3BlcnR5IChub25h
dG9taWMsIGNvcHkpIE5TU3RyaW5nICp2aWRlb0dyYXZpdHk7CitAcHJvcGVydHkgKG5vbmF0b21p
YykgQVZWaWRlb0xheWVyR3Jhdml0eSB2aWRlb0xheWVyR3Jhdml0eTsKIEBwcm9wZXJ0eSAobm9u
YXRvbWljLCBnZXR0ZXIgPSBpc1JlYWR5Rm9yRGlzcGxheSkgQk9PTCByZWFkeUZvckRpc3BsYXk7
CiBAcHJvcGVydHkgKG5vbmF0b21pYykgQ0dSZWN0IHZpZGVvUmVjdDsKKy0gKHZvaWQpc2V0UGxh
eWVyQ29udHJvbGxlcjooQVZQbGF5ZXJDb250cm9sbGVyICopcGxheWVyQ29udHJvbGxlcjsKIEBl
bmQKIAogQGltcGxlbWVudGF0aW9uIFdlYkFWUGxheWVyTGF5ZXIKQEAgLTIxNyw2ICsxODksMTIg
QEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgQVZQbGF5ZXJDb250cm9sbGVyU3RhdHVzKSB7
CiB7CiAgICAgcmV0dXJuIFtbW1dlYkFWUGxheWVyTGF5ZXIgYWxsb2NdIGluaXRdIGF1dG9yZWxl
YXNlXTsKIH0KKworLSAodm9pZClzZXRQbGF5ZXJDb250cm9sbGVyOihBVlBsYXllckNvbnRyb2xs
ZXIgKilwbGF5ZXJDb250cm9sbGVyCit7CisgICAgVU5VU0VEX1BBUkFNKHBsYXllckNvbnRyb2xs
ZXIpOworfQorCiBAZW5kCiAKIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpXZWJW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdCgpCkBAIC0yMzksOSArMjE3LDggQEAgV2ViQVZQ
bGF5ZXJDb250cm9sbGVyICpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6cGxheWVy
Q29udHJvbGxlcigpCiAgICAgewogICAgICAgICBtX3BsYXllckNvbnRyb2xsZXIgPSBhZG9wdE5T
KFtbV2ViQVZQbGF5ZXJDb250cm9sbGVyIGFsbG9jXSBpbml0XSk7CiAgICAgICAgIGlmIChtX3Zp
ZGVvRnVsbHNjcmVlbk1vZGVsKQotICAgICAgICAgICAgbV9wbGF5ZXJDb250cm9sbGVyLmdldCgp
LmRlbGVnYXRlID0gbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbDsKKyAgICAgICAgICAgIFttX3BsYXll
ckNvbnRyb2xsZXIgc2V0RGVsZWdhdGU6bV92aWRlb0Z1bGxzY3JlZW5Nb2RlbF07CiAgICAgfQot
ICAgIAogICAgIHJldHVybiBtX3BsYXllckNvbnRyb2xsZXIuZ2V0KCk7CiB9CiAKQEAgLTI1Miw2
ICsyMjksMTEgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0V2Vi
VmlkZW9GdWxsc2NyZWVuTW9kZWwoV2ViVmlkZW9GdWxsc2MKICAgICBwbGF5ZXJDb250cm9sbGVy
KCkuZGVsZWdhdGUgPSBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsOwogfQogCit2b2lkIFdlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRXZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNl
cnZlcihXZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCit7CisgICAg
bV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIgPSBvYnNlcnZlcjsKK30KKwogdm9pZCBXZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0RHVyYXRpb24oZG91YmxlIGR1cmF0aW9uKQog
ewogICAgIFdlYkFWUGxheWVyQ29udHJvbGxlciogcGxheWVyQ29udHJvbGxlciA9IHRoaXMtPnBs
YXllckNvbnRyb2xsZXIoKTsKQEAgLTI5MSw3NyArMjczLDg3IEBAIHZvaWQgV2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldFZpZGVvRGltZW5zaW9ucyhib29sIGhhc1ZpZGVvLCBm
bG9hdCB3CiAgICAgcGxheWVyQ29udHJvbGxlcigpLmNvbnRlbnREaW1lbnNpb25zID0gQ0dTaXpl
TWFrZSh3aWR0aCwgaGVpZ2h0KTsKIH0KIAotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VBVktpdDo6c2V0VmlkZW9MYXllcihQbGF0Zm9ybUxheWVyKiB2aWRlb0xheWVyKQotewotICAg
IFtwbGF5ZXJDb250cm9sbGVyKCkucGxheWVyTGF5ZXIgcmVtb3ZlRnJvbVN1cGVybGF5ZXJdOwot
ICAgIFt2aWRlb0xheWVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKLSAgICAKLSAgICBDQUxheWVy
PEFWUGxheWVyTGF5ZXI+ICphdlBsYXllckxheWVyID0gbmlsOwotICAgIAotICAgIC8vIFdlYktp
dCBwcm92aWRlcyBhIEFWUGxheWVyTGF5ZXIuIFdlYktpdDIgcHJvdmllcyBhIGhvc3RlZCBsYXll
ci4KLSAgICBpZiAoW3ZpZGVvTGF5ZXIgaXNLaW5kT2ZDbGFzczpbY2xhc3NBVlBsYXllckxheWVy
IGNsYXNzXV0pCi0gICAgICAgIGF2UGxheWVyTGF5ZXIgPSAoQ0FMYXllcjxBVlBsYXllckxheWVy
PiopdmlkZW9MYXllcjsKLSAgICBlbHNlIGlmICh2aWRlb0xheWVyKSB7Ci0gICAgICAgIEFTU0VS
VChbdmlkZW9MYXllciBpc0tpbmRPZkNsYXNzOltDQUxheWVyIGNsYXNzXV0pOwotICAgICAgICBh
dlBsYXllckxheWVyID0gW1dlYkFWUGxheWVyTGF5ZXIgcGxheWVyTGF5ZXJdOwotICAgICAgICBb
YXZQbGF5ZXJMYXllciBhZGRTdWJsYXllcjp2aWRlb0xheWVyXTsKLSAgICB9Ci0KLSAgICBtX3Bs
YXllckNvbnRyb2xsZXIuZ2V0KCkucGxheWVyTGF5ZXIgPSBhdlBsYXllckxheWVyOwotfQotCi12
b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjplbnRlckZ1bGxzY3JlZW5XaXRo
Q29tcGxldGlvbkhhbmRsZXIoc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRpb24pCi17Ci0g
ICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0PiBzdHJvbmdUaGlzKHRo
aXMpOwotICAgIAotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCks
IFtzdHJvbmdUaGlzLCBjb21wbGV0aW9uXXsKLSAgICAgICAgc3Ryb25nVGhpcy0+bV9wbGF5ZXJW
aWV3Q29udHJvbGxlciA9IFtbW2NsYXNzQVZQbGF5ZXJWaWV3Q29udHJvbGxlciBhbGxvY10gaW5p
dF0gYXV0b3JlbGVhc2VdOwotICAgICAgICBzdHJvbmdUaGlzLT5tX3BsYXllclZpZXdDb250cm9s
bGVyLmdldCgpLnBsYXllckNvbnRyb2xsZXIgPSAoQVZQbGF5ZXJDb250cm9sbGVyICopc3Ryb25n
VGhpcy0+cGxheWVyQ29udHJvbGxlcigpOwotICAgICAgICAKLSAgICAgICAgaWYgKFtzdHJvbmdU
aGlzLT5tX3BsYXllclZpZXdDb250cm9sbGVyIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
c2V0RGVsZWdhdGU6KV0pCi0gICAgICAgICAgICBzdHJvbmdUaGlzLT5tX3BsYXllclZpZXdDb250
cm9sbGVyLmdldCgpLmRlbGVnYXRlID0gc3Ryb25nVGhpcy0+cGxheWVyQ29udHJvbGxlcigpOwot
ICAgICAgICAKLSAgICAgICAgc3Ryb25nVGhpcy0+bV92aWV3Q29udHJvbGxlciA9IGFkb3B0TlMo
W1tjbGFzc1VJVmlld0NvbnRyb2xsZXIgYWxsb2NdIGluaXRdKTsKLSAgICAgICAgCi0gICAgICAg
IHN0cm9uZ1RoaXMtPm1fd2luZG93ID0gW1tbY2xhc3NVSVdpbmRvdyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpbW2NsYXNzVUlTY3JlZW4gbWFpblNjcmVlbl0gYm91bmRzXV0gYXV0b3JlbGVhc2VdOwot
ICAgICAgICBzdHJvbmdUaGlzLT5tX3dpbmRvdy5nZXQoKS5iYWNrZ3JvdW5kQ29sb3IgPSBbY2xh
c3NVSUNvbG9yIGNsZWFyQ29sb3JdOwotICAgICAgICBzdHJvbmdUaGlzLT5tX3dpbmRvdy5nZXQo
KS5yb290Vmlld0NvbnRyb2xsZXIgPSBzdHJvbmdUaGlzLT5tX3ZpZXdDb250cm9sbGVyLmdldCgp
OwotICAgICAgICBbc3Ryb25nVGhpcy0+bV93aW5kb3cgbWFrZUtleUFuZFZpc2libGVdOwotICAg
ICAgICAKLSAgICAgICAgW3N0cm9uZ1RoaXMtPm1fdmlld0NvbnRyb2xsZXIgcHJlc2VudFZpZXdD
b250cm9sbGVyOnN0cm9uZ1RoaXMtPm1fcGxheWVyVmlld0NvbnRyb2xsZXIuZ2V0KCkgYW5pbWF0
ZWQ6WUVTIGNvbXBsZXRpb246bmlsXTsKLSAgICAgICAgaWYgKGNvbXBsZXRpb24pCi0gICAgICAg
ICAgICBjb21wbGV0aW9uKCk7Ci0gICAgfSk7Ci19Ci0KIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQ6OmVudGVyRnVsbHNjcmVlbigpCiB7Ci0gICAgZW50ZXJGdWxsc2NyZWVu
V2l0aENvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOworICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9k
ZWwtPmJvcnJvd1ZpZGVvTGF5ZXIoKTsKIH0KIAotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdDo6ZXhpdEZ1bGxzY3JlZW5XaXRoQ29tcGxldGlvbkhhbmRsZXIoc3RkOjpmdW5j
dGlvbjx2b2lkKCk+IGNvbXBsZXRpb24pCit2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0Ojpkb0VudGVyRnVsbHNjcmVlbigpCiB7Ci0gICAgbV9wbGF5ZXJDb250cm9sbGVyLmNs
ZWFyKCk7Ci0gICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0PiBzdHJv
bmdUaGlzKHRoaXMpOworICAgIF9fYmxvY2sgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0PiBwcm90ZWN0KHRoaXMpOwogICAgIAotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3Bh
dGNoX2dldF9tYWluX3F1ZXVlKCksIFtzdHJvbmdUaGlzLCBjb21wbGV0aW9uXXsKLSAgICAgICAg
W3N0cm9uZ1RoaXMtPm1fdmlld0NvbnRyb2xsZXIgZGlzbWlzc1ZpZXdDb250cm9sbGVyQW5pbWF0
ZWQ6WUVTIGNvbXBsZXRpb246W3N0cm9uZ1RoaXMsIGNvbXBsZXRpb25dewotICAgICAgICAgICAg
c3Ryb25nVGhpcy0+bV93aW5kb3cuZ2V0KCkuaGlkZGVuID0gWUVTOwotICAgICAgICAgICAgc3Ry
b25nVGhpcy0+bV93aW5kb3cuZ2V0KCkucm9vdFZpZXdDb250cm9sbGVyID0gbmlsOwotICAgICAg
ICAgICAgc3Ryb25nVGhpcy0+bV9wbGF5ZXJWaWV3Q29udHJvbGxlciA9IG5pbDsKLSAgICAgICAg
ICAgIHN0cm9uZ1RoaXMtPm1fdmlld0NvbnRyb2xsZXIgPSBuaWw7Ci0gICAgICAgICAgICBzdHJv
bmdUaGlzLT5tX3dpbmRvdyA9IG5pbDsKLSAgICAgICAgICAgIGlmIChzdHJvbmdUaGlzLT5tX3Zp
ZGVvRnVsbHNjcmVlbk1vZGVsKQotICAgICAgICAgICAgICAgIHN0cm9uZ1RoaXMtPm1fdmlkZW9G
dWxsc2NyZWVuTW9kZWwtPmRpZEV4aXRGdWxsc2NyZWVuKCk7Ci0gICAgICAgICAgICBpZiAoY29t
cGxldGlvbikKLSAgICAgICAgICAgICAgICBjb21wbGV0aW9uKCk7CisgICAgZGlzcGF0Y2hfYXN5
bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAgICAgICAgW21fdmlkZW9MYXllciBy
ZW1vdmVGcm9tU3VwZXJsYXllcl07CisgICAgICAgIAorICAgICAgICBtX3ZpZGVvTGF5ZXJDb250
YWluZXIgPSBbV2ViQVZQbGF5ZXJMYXllciBwbGF5ZXJMYXllcl07CisgICAgICAgIGlmIChtX3Zp
ZGVvTGF5ZXIuZ2V0KCkpCisgICAgICAgICAgICBbbV92aWRlb0xheWVyQ29udGFpbmVyIGFkZFN1
YmxheWVyOm1fdmlkZW9MYXllci5nZXQoKV07CisgICAgICAgIAorICAgICAgICBDR1NpemUgdmlk
ZW9TaXplID0gcGxheWVyQ29udHJvbGxlcigpLmNvbnRlbnREaW1lbnNpb25zOworICAgICAgICBD
R1JlY3QgdmlkZW9SZWN0ID0gQ0dSZWN0TWFrZSgwLCAwLCB2aWRlb1NpemUud2lkdGgsIHZpZGVv
U2l6ZS5oZWlnaHQpOworICAgICAgICBbbV92aWRlb0xheWVyQ29udGFpbmVyIHNldFZpZGVvUmVj
dDp2aWRlb1JlY3RdOworCisgICAgICAgIG1fcGxheWVyVmlld0NvbnRyb2xsZXIgPSBhZG9wdE5T
KFtbY2xhc3NBVlBsYXllclZpZXdDb250cm9sbGVyIGFsbG9jXSBpbml0V2l0aFZpZGVvTGF5ZXI6
bV92aWRlb0xheWVyQ29udGFpbmVyLmdldCgpXSk7CisgICAgICAgIFttX3BsYXllclZpZXdDb250
cm9sbGVyIHNldFBsYXllckNvbnRyb2xsZXI6KEFWUGxheWVyQ29udHJvbGxlciAqKXBsYXllckNv
bnRyb2xsZXIoKV07CisgICAgICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIHNldERlbGVnYXRl
OnBsYXllckNvbnRyb2xsZXIoKV07CisgICAgICAgIAorICAgICAgICBtX3ZpZXdDb250cm9sbGVy
ID0gYWRvcHROUyhbW2NsYXNzVUlWaWV3Q29udHJvbGxlciBhbGxvY10gaW5pdF0pOworICAgICAg
ICAKKyAgICAgICAgbV93aW5kb3cgPSBhZG9wdE5TKFtbY2xhc3NVSVdpbmRvdyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpbW2NsYXNzVUlTY3JlZW4gbWFpblNjcmVlbl0gYm91bmRzXV0pOworICAgICAg
ICBbbV93aW5kb3cgc2V0QmFja2dyb3VuZENvbG9yOltjbGFzc1VJQ29sb3IgY2xlYXJDb2xvcl1d
OworICAgICAgICBbbV93aW5kb3cgc2V0Um9vdFZpZXdDb250cm9sbGVyOm1fdmlld0NvbnRyb2xs
ZXIuZ2V0KCldOworICAgICAgICBbbV93aW5kb3cgbWFrZUtleUFuZFZpc2libGVdOworICAgICAg
ICAKKyAgICAgICAgX19ibG9jayBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQ+IHByb3RlY3QyKHRoaXMpOworCisgICAgICAgIFttX3ZpZXdDb250cm9sbGVyIHByZXNlbnRW
aWV3Q29udHJvbGxlcjptX3BsYXllclZpZXdDb250cm9sbGVyLmdldCgpIGFuaW1hdGVkOllFUyBj
b21wbGV0aW9uOl57CisgICAgICAgICAgICBpZiAobV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIp
CisgICAgICAgICAgICAgICAgbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXItPmRpZEVudGVyRnVs
bHNjcmVlbigpOworICAgICAgICAgICAgcHJvdGVjdDIuY2xlYXIoKTsKICAgICAgICAgfV07Cisg
ICAgICAgIHByb3RlY3QuY2xlYXIoKTsKICAgICB9KTsKIH0KIAordm9pZCBXZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VBVktpdDo6d2lsbExlbmRWaWRlb0xheWVyKFBsYXRmb3JtTGF5ZXIqIHZp
ZGVvTGF5ZXIpCit7CisgICAgQVNTRVJUKCFtX3ZpZGVvTGF5ZXIpOworICAgIAorICAgIG1fdmlk
ZW9MYXllciA9IHZpZGVvTGF5ZXI7CisgICAgaWYgKCF2aWRlb0xheWVyKQorICAgICAgICBkb0Vu
dGVyRnVsbHNjcmVlbigpOworfQorCit2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFW
S2l0OjpkaWRMZW5kVmlkZW9MYXllcigpCit7CisgICAgaWYgKG1fdmlkZW9MYXllcikKKyAgICAg
ICAgZG9FbnRlckZ1bGxzY3JlZW4oKTsKK30KKwogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdDo6ZXhpdEZ1bGxzY3JlZW4oKQogewotICAgIGV4aXRGdWxsc2NyZWVuV2l0aENv
bXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOworICAgIF9fYmxvY2sgUmVmUHRyPFdlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUFWS2l0PiBwcm90ZWN0KHRoaXMpOworCisgICAgbV9wbGF5ZXJDb250
cm9sbGVyLmNsZWFyKCk7CisgICAgCisgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21h
aW5fcXVldWUoKSwgXnsKKyAgICAgICAgW21fdmlld0NvbnRyb2xsZXIgZGlzbWlzc1ZpZXdDb250
cm9sbGVyQW5pbWF0ZWQ6WUVTIGNvbXBsZXRpb246XnsKKyAgICAgICAgICAgIFttX3dpbmRvdyBz
ZXRIaWRkZW46WUVTXTsKKyAgICAgICAgICAgIFttX3dpbmRvdyBzZXRSb290Vmlld0NvbnRyb2xs
ZXI6bmlsXTsKKyAgICAgICAgICAgIG1fcGxheWVyVmlld0NvbnRyb2xsZXIgPSBuaWw7CisgICAg
ICAgICAgICBtX3ZpZXdDb250cm9sbGVyID0gbmlsOworICAgICAgICAgICAgbV93aW5kb3cgPSBu
aWw7CisgICAgICAgICAgICBpZiAobV92aWRlb0xheWVyLmdldCgpKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIFttX3ZpZGVvTGF5ZXIgcmVtb3ZlRnJvbVN1cGVybGF5ZXJdOworICAg
ICAgICAgICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwtPnJldHVyblZpZGVvTGF5ZXIoKTsK
KyAgICAgICAgICAgICAgICBtX3ZpZGVvTGF5ZXIgPSBuaWw7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBpZiAobV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIpCisgICAgICAgICAgICAgICAg
bV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXItPmRpZEV4aXRGdWxsc2NyZWVuKCk7CisgICAgICAg
ICAgICBwcm90ZWN0LmNsZWFyKCk7CisgICAgICAgIH1dOworICAgIH0pOwogfQogCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVl
bk1vZGVsLmgKaW5kZXggYmUzZmVjN2I1YTgzNGY3MTdkZTY4ZDA3YmViMDg2NDVkNjIwZGMzMi4u
ZjU1ZmFhZWIyYWFlZGNiMzFiNTE1NDA1YzBjMzlkNmQ3NDIxY2E4MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsLmgKQEAg
LTM0LDEyICszNCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBXZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViVmlkZW9GdWxsc2NyZWVuTW9k
ZWwoKSB7IH07Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RFeGl0RnVsbFNjcmVlbigpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgYm9ycm93VmlkZW9MYXllcigpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgcmV0dXJuVmlkZW9MYXllcigpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcGxheSgpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgcGF1c2UoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHRvZ2dsZVBs
YXlTdGF0ZSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2Vla1RvVGltZShkb3VibGUgdGltZSkg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRFeGl0RnVsbHNjcmVlbigpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgcmVxdWVzdEV4aXRGdWxsc2NyZWVuKCkgPSAwOwogfTsKIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsTWVk
aWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2Ny
ZWVuTW9kZWxNZWRpYUVsZW1lbnQuaAppbmRleCA0Yzc0YWY1ZjI0ZTk0MDM3Y2ViOWEzNmFiYWZj
NWI5N2Y1MTBkMDU0Li5jZjcwNzRmYzQ0ZmZlNWEwYTg1NGZkY2YwZjBmNTg4NmI4ZTE2MDJhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVu
TW9kZWxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2Vi
VmlkZW9GdWxsc2NyZWVuTW9kZWxNZWRpYUVsZW1lbnQuaApAQCAtNTEsMTYgKzUxLDE3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZShXZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2UqIGludGVyZmFjZSkge21fdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
ID0gaW50ZXJmYWNlO30KICAgICB2b2lkIHNldE1lZGlhRWxlbWVudChIVE1MTWVkaWFFbGVtZW50
Kik7CiAgICAgCi0gICAgdm9pZCBoYW5kbGVFdmVudChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgV2ViQ29yZTo6RXZlbnQqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgaGFu
ZGxlRXZlbnQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkNvcmU6OkV2ZW50
Kikgb3ZlcnJpZGU7CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImIHJo
cykgb3ZlcnJpZGUKICAgICAgICAge3JldHVybiBzdGF0aWNfY2FzdDxXZWJDb3JlOjpFdmVudExp
c3RlbmVyKj4odGhpcykgPT0gJnJoczt9CiAKLSAgICB2b2lkIHJlcXVlc3RFeGl0RnVsbFNjcmVl
bigpIG92ZXJyaWRlOwotICAgIHZvaWQgcGxheSgpIG92ZXJyaWRlOwotICAgIHZvaWQgcGF1c2Uo
KSBvdmVycmlkZTsKLSAgICB2b2lkIHRvZ2dsZVBsYXlTdGF0ZSgpIG92ZXJyaWRlOwotICAgIHZv
aWQgc2Vla1RvVGltZShkb3VibGUgdGltZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRFeGl0RnVs
bHNjcmVlbigpOworICAgIHZpcnR1YWwgdm9pZCBib3Jyb3dWaWRlb0xheWVyKCkgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCB2b2lkIHJldHVyblZpZGVvTGF5ZXIoKSBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIHZvaWQgcGxheSgpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBwYXVzZSgpIG92ZXJy
aWRlOworICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVQbGF5U3RhdGUoKSBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIHZvaWQgc2Vla1RvVGltZShkb3VibGUgdGltZSkgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCB2b2lkIHJlcXVlc3RFeGl0RnVsbHNjcmVlbigpIG92ZXJyaWRlOwogfTsKIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVs
TWVkaWFFbGVtZW50Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVs
bHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50Lm1tCmluZGV4IDVhYmRlNTcxOTY5ZDJmNTEwNzc0N2Ji
MmViOGVmNTM1MTJjYWY0OWQuLjAwMGIwNzE3ZWIzMTAzYzFhYjFkYjgwZTQxNzIyNGY2OTBjMDI5
YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbE1lZGlhRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxNZWRpYUVsZW1lbnQubW0KQEAgLTY5LDEzICs2OSw2
IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxNZWRpYUVsZW1lbnQ6OnNldE1lZGlhRWxl
bWVudChIVE1MTWVkaWFFbGVtZW50KiBtZWRpCiAgICAgfQogICAgIG1faXNMaXN0ZW5pbmcgPSBm
YWxzZTsKIAotICAgIGlmIChtX21lZGlhRWxlbWVudCAmJiBtX2JvcnJvd2VkVmlkZW9MYXllcikg
ewotICAgICAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UpCi0gICAgICAgICAgICBt
X3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZS0+c2V0VmlkZW9MYXllcihudWxscHRyKTsKLSAgICAg
ICAgbV9tZWRpYUVsZW1lbnQtPnJldHVyblBsYXRmb3JtTGF5ZXIobV9ib3Jyb3dlZFZpZGVvTGF5
ZXIuZ2V0KCkpOwotICAgICAgICBtX2JvcnJvd2VkVmlkZW9MYXllci5jbGVhcigpOwotICAgIH0K
LQogICAgIG1fbWVkaWFFbGVtZW50ID0gbWVkaWFFbGVtZW50OwogCiAgICAgaWYgKCFtX21lZGlh
RWxlbWVudCkKQEAgLTg4LDE2ICs4MSw5IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxN
ZWRpYUVsZW1lbnQ6OnNldE1lZGlhRWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBtZWRpCiAgICAg
bV9tZWRpYUVsZW1lbnQtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnRpbWV1cGRhdGVF
dmVudCwgdGhpcywgZmFsc2UpOwogICAgIG1faXNMaXN0ZW5pbmcgPSB0cnVlOwogCi0gICAgaWYg
KCFtX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgbV92
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UtPnNldER1cmF0aW9uKG1fbWVkaWFFbGVtZW50LT5kdXJh
dGlvbigpKTsKICAgICBtX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZS0+c2V0UmF0ZShtX21lZGlh
RWxlbWVudC0+aXNQbGF5aW5nKCksIG1fbWVkaWFFbGVtZW50LT5wbGF5YmFja1JhdGUoKSk7CiAK
LSAgICBtX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZS0+c2V0VmlkZW9MYXllcihtX21lZGlhRWxl
bWVudC0+cGxhdGZvcm1MYXllcigpKTsKLQotICAgIG1fYm9ycm93ZWRWaWRlb0xheWVyID0gbV9t
ZWRpYUVsZW1lbnQtPmJvcnJvd1BsYXRmb3JtTGF5ZXIoKTsKLQogICAgIG1fdmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlLT5zZXRDdXJyZW50VGltZShtX21lZGlhRWxlbWVudC0+Y3VycmVudFRpbWUo
KSwgW1tOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXSBzeXN0ZW1VcHRpbWVdKTsKIAogICAgIGlm
IChpc0hUTUxWaWRlb0VsZW1lbnQobV9tZWRpYUVsZW1lbnQuZ2V0KCkpKSB7CkBAIC0xMDgsNyAr
OTQsNyBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50OjpzZXRNZWRp
YUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogbWVkaQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVl
bk1vZGVsTWVkaWFFbGVtZW50OjpoYW5kbGVFdmVudChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgV2ViQ29yZTo6RXZlbnQqIGV2ZW50KQogewotICAgIGlmICghbV9tZWRpYUVsZW1l
bnQpCisgICAgaWYgKCFtX21lZGlhRWxlbWVudCB8fCAhbV92aWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIExPRyhNZWRpYSwgImhhbmRsZUV2ZW50ICVzIiwg
ZXZlbnQtPnR5cGUoKS5jaGFyYWN0ZXJzOCgpKTsKQEAgLTEyMywxMiArMTA5LDI5IEBAIHZvaWQg
V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxNZWRpYUVsZW1lbnQ6OmhhbmRsZUV2ZW50KFdlYkNvcmU6
OlNjcmlwdEV4ZWN1dGlvbkNvCiAgICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlLT5z
ZXRDdXJyZW50VGltZShtX21lZGlhRWxlbWVudC0+Y3VycmVudFRpbWUoKSwgW1tOU1Byb2Nlc3NJ
bmZvIHByb2Nlc3NJbmZvXSBzeXN0ZW1VcHRpbWVdKTsKIH0KIAotdm9pZCBXZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbE1lZGlhRWxlbWVudDo6cmVxdWVzdEV4aXRGdWxsU2NyZWVuKCkKK3ZvaWQgV2Vi
VmlkZW9GdWxsc2NyZWVuTW9kZWxNZWRpYUVsZW1lbnQ6OmJvcnJvd1ZpZGVvTGF5ZXIoKQogewor
ICAgIEFTU0VSVCghbV9ib3Jyb3dlZFZpZGVvTGF5ZXIpOworICAgIAogICAgIF9fYmxvY2sgUmVm
UHRyPFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50PiBwcm90ZWN0KHRoaXMpOwog
ICAgIFdlYlRocmVhZFJ1biheewotICAgICAgICBtX21lZGlhRWxlbWVudC0+cGF1c2UoKTsKLSAg
ICAgICAgbV9tZWRpYUVsZW1lbnQtPmV4aXRGdWxsc2NyZWVuKCk7CisgICAgICAgIG1fdmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlLT53aWxsTGVuZFZpZGVvTGF5ZXIobV9tZWRpYUVsZW1lbnQtPnBs
YXRmb3JtTGF5ZXIoKSk7CisgICAgICAgIG1fYm9ycm93ZWRWaWRlb0xheWVyID0gbV9tZWRpYUVs
ZW1lbnQtPmJvcnJvd1BsYXRmb3JtTGF5ZXIoKTsKKyAgICAgICAgaWYgKG1fYm9ycm93ZWRWaWRl
b0xheWVyLmdldCgpKQorICAgICAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UtPmRp
ZExlbmRWaWRlb0xheWVyKCk7CisgICAgICAgIHByb3RlY3QuY2xlYXIoKTsKKyAgICB9KTsKK30K
Kwordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbE1lZGlhRWxlbWVudDo6cmV0dXJuVmlkZW9M
YXllcigpCit7CisgICAgQVNTRVJUKG1fYm9ycm93ZWRWaWRlb0xheWVyLmdldCgpKTsKKyAgICAK
KyAgICBfX2Jsb2NrIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbE1lZGlhRWxlbWVudD4g
cHJvdGVjdCh0aGlzKTsKKyAgICBXZWJUaHJlYWRSdW4oXnsKKyAgICAgICAgQVNTRVJUKG1fbWVk
aWFFbGVtZW50KTsKKyAgICAgICAgbV9tZWRpYUVsZW1lbnQtPnJldHVyblBsYXRmb3JtTGF5ZXIo
bV9ib3Jyb3dlZFZpZGVvTGF5ZXIuZ2V0KCkpOworICAgICAgICBtX2JvcnJvd2VkVmlkZW9MYXll
ci5jbGVhcigpOwogICAgICAgICBwcm90ZWN0LmNsZWFyKCk7CiAgICAgfSk7CiB9CkBAIC0xNjgs
MTEgKzE3MSwxMSBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50Ojpz
ZWVrVG9UaW1lKGRvdWJsZSB0aW1lKQogICAgIH0pOwogfQogCi12b2lkIFdlYlZpZGVvRnVsbHNj
cmVlbk1vZGVsTWVkaWFFbGVtZW50OjpkaWRFeGl0RnVsbHNjcmVlbigpCit2b2lkIFdlYlZpZGVv
RnVsbHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50OjpyZXF1ZXN0RXhpdEZ1bGxzY3JlZW4oKQogewog
ICAgIF9fYmxvY2sgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsTWVkaWFFbGVtZW50PiBw
cm90ZWN0KHRoaXMpOwogICAgIFdlYlRocmVhZFJ1biheewotICAgICAgICBzZXRNZWRpYUVsZW1l
bnQobnVsbHB0cik7CisgICAgICAgIG1fbWVkaWFFbGVtZW50LT5leGl0RnVsbHNjcmVlbigpOwog
ICAgICAgICBwcm90ZWN0LmNsZWFyKCk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHkuaAppbmRleCBmNjM3OWVmYmRlNzQ0YTQ5NmUwY2NkOTI1MzMxYTRjODA2MTI2ZTM5Li40MzUz
ZGZjYmNkOTBkZjkxN2U3MDBjOWU2ZmUyZDIzMjUyOTYxMWNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5LmgKQEAgLTM2LDEyICszNiwxNCBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCitPQkpDX0NMQVNTIFVJVmlldzsKKwogbmFtZXNw
YWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIGNsYXNzIFJlbW90ZUxheWVyVHJl
ZVRyYW5zYWN0aW9uOwogCi1jbGFzcyBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkgOiBw
dWJsaWMgV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQsIHB1YmxpYyBX
ZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbCwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNl
aXZlciB7CitjbGFzcyBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkgOiBwdWJsaWMgV2Vi
Q29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQsIHB1YmxpYyBXZWJDb3JlOjpX
ZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlciwgcHVibGljIFdlYkNvcmU6OldlYlZpZGVv
RnVsbHNjcmVlbk1vZGVsLCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk+IGNy
ZWF0ZShXZWJQYWdlUHJveHkmKTsKICAgICB2aXJ0dWFsIH5XZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHkoKTsKQEAgLTUyLDE5ICs1NCwyNiBAQCBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eShXZWJQYWdlUHJveHkmKTsKICAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uKiwgSVBDOjpNZXNzYWdlRGVj
b2RlciYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHNldFZpZGVvTGF5ZXJJRChXZWJD
b3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQpOwotICAgIHZpcnR1YWwgdm9pZCBl
bnRlckZ1bGxzY3JlZW4oKSBvdmVycmlkZTsKKyAgICAvLyBUcmFuc2xhdGUgdG8gRnVsbHNjcmVl
bkludGVyZmFjZQorICAgIHZpcnR1YWwgdm9pZCB3aWxsTGVuZFZpZGVvTGF5ZXJXaXRoSUQoV2Vi
Q29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEKTsKKworICAgIC8vIEZ1bGxzY3Jl
ZW4gT2JzZXJ2ZXIKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEV4aXRGdWxsc2NyZWVuKCkgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRpZEV4aXRGdWxsc2NyZWVuKCkgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCB2b2lkIGRpZEVudGVyRnVsbHNjcmVlbigpIG92ZXJyaWRlOwogICAgIAotICAg
IHZpcnR1YWwgdm9pZCByZXF1ZXN0RXhpdEZ1bGxTY3JlZW4oKSBvdmVycmlkZTsKKyAgICAvLyBG
dWxsc2NyZWVuTW9kZWwKICAgICB2aXJ0dWFsIHZvaWQgcGxheSgpIG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgdm9pZCBwYXVzZSgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVQbGF5
U3RhdGUoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2Vla1RvVGltZShkb3VibGUpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRFeGl0RnVsbHNjcmVlbigpIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgdm9pZCBib3Jyb3dWaWRlb0xheWVyKCkgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCB2b2lkIHJldHVyblZpZGVvTGF5ZXIoKSBvdmVycmlkZTsKIAogICAgIFdlYlBhZ2VQcm94eSog
bV9wYWdlOwogICAgIGJvb2wgbV9lbnRlckZ1bGxzY3JlZW5BZnRlclZpZGVvTGF5ZXJVbnBhcmVu
dGVkVHJhbnNhY3Rpb247CiAgICAgV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXll
cklEIG1fdmlkZW9MYXllcklEOworICAgIFJldGFpblB0cjxVSVZpZXc+IG1fdmlkZW9WaWV3Owog
fTsKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXJQcm94eS5tZXNzYWdlcy5pbgppbmRleCBmMDdkM2UwOWU1ZjViZDUyOTgwMzJlZDM2NDBjNmQ1
YzBlMTcyZmVhLi4yYzc1NzRhOTc2YTNiNGQyNzU2NDhlYzQzNWYyYzFmODNiYmEzOWVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9z
L1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjAsMTUgKzIw
LDE0IEBACiAjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLSMgY2hhbmdl
cyBoZXJlIG11c3QgYmUgcmVmbGVjdGVkIGluIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsCiAjaWYg
UExBVEZPUk0oSU9TKQogbWVzc2FnZXMgLT4gV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
IHsKICAgICBTZXRDdXJyZW50VGltZShkb3VibGUgY3VycmVudFRpbWUsIGRvdWJsZSBob3N0VGlt
ZSkKLSAgICBTZXRWaWRlb0xheWVySUQoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1M
YXllcklEIHZpZGVvTGF5ZXJJRCkKICAgICBTZXRWaWRlb0RpbWVuc2lvbnMoYm9vbCBoYXNWaWRl
bywgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCkKICAgICBTZXREdXJhdGlvbihkb3Vi
bGUgZHVyYXRpb24pCiAgICAgU2V0UmF0ZShib29sIGlzUGxheWluZywgZG91YmxlIHJhdGUpCiAg
ICAgRW50ZXJGdWxsc2NyZWVuKCkKKyAgICBXaWxsTGVuZFZpZGVvTGF5ZXJXaXRoSUQoV2ViQ29y
ZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEIHZpZGVvTGF5ZXJJRCkKICAgICBFeGl0
RnVsbHNjcmVlbigpCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0KaW5kZXgg
NDdjZjQ5YzU4Mjc4MTlkZjYwNTA3MzM5MGEyMGQ5Yjc5YjVhNDlkMC4uODVkYTFiOWVjMDIxZTAy
MDc0ZjlkOWI3MTRmNTk0YmQxYTA2NjM4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0KKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0K
QEAgLTUzLDYgKzUzLDcgQEAgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpXZWJWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkoV2ViUGFnZVByb3h5JiBwYWcKIHsKICAgICBtX3BhZ2Ut
PnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UtPnBhZ2VJRCgpLCAq
dGhpcyk7CiAgICAgc2V0V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwodGhpcyk7CisgICAgc2V0V2Vi
VmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIodGhpcyk7CiB9CiAKIFdlYlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eTo6fldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eSgpCkBAIC02
NCwzNyArNjUsMzUgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmRpZENv
bW1pdExheWVyVHJlZShjb25zdCBSZW1vdGVMYXllclRyZWVUcmEKIHsKICAgICBpZiAobV9lbnRl
ckZ1bGxzY3JlZW5BZnRlclZpZGVvTGF5ZXJVbnBhcmVudGVkVHJhbnNhY3Rpb24gJiYgbGF5ZXJU
cmVlVHJhbnNhY3Rpb24uaXNWaWRlb0xheWVySURQZW5kaW5nRnVsbHNjcmVlbihtX3ZpZGVvTGF5
ZXJJRCkpIHsKICAgICAgICAgbV9lbnRlckZ1bGxzY3JlZW5BZnRlclZpZGVvTGF5ZXJVbnBhcmVu
dGVkVHJhbnNhY3Rpb24gPSBmYWxzZTsKLSAgICAgICAgV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQVZLaXQ6OmVudGVyRnVsbHNjcmVlbigpOworICAgICAgICBbbV92aWRlb1Zp
ZXcgcmVtb3ZlRnJvbVN1cGVydmlld107CisgICAgICAgIGRpZExlbmRWaWRlb0xheWVyKCk7CiAg
ICAgfQogfQogCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6c2V0VmlkZW9M
YXllcklEKEdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCB2aWRlb0xheWVySUQpCit2b2lk
IFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6d2lsbExlbmRWaWRlb0xheWVyV2l0aElE
KEdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCB2aWRlb0xheWVySUQpCiB7CiAgICAgUmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eSogcmVtb3RlRHJhd2luZ0FyZWFQcm94eSA9IHRv
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eShtX3BhZ2UtPmRyYXdpbmdBcmVhKCkpOwot
Ci0gICAgaWYgKHZpZGVvTGF5ZXJJRCkgewotICAgICAgICAvLyBFbnRlcmluZyBmdWxsc2NyZWVu
LgotICAgICAgICBVSVZpZXcgKnZpZGVvVmlldyA9IHJlbW90ZURyYXdpbmdBcmVhUHJveHktPnJl
bW90ZUxheWVyVHJlZUhvc3QoKS5nZXRMYXllcih2aWRlb0xheWVySUQpOwotICAgICAgICAvLyBS
ZW1vdmUgdGhlIFVJVmlldyBmcm9tIGl0cyBzdXBlcmxheWVyLCBzbyB3ZSBjYW4gcmVwYXJlbnQg
dGhlIGxheWVyIHdpdGhvdXQgcHJvYmxlbXMuCi0gICAgICAgIFt2aWRlb1ZpZXcgcmVtb3ZlRnJv
bVN1cGVydmlld107Ci0gICAgICAgIAotICAgICAgICBzZXRWaWRlb0xheWVyKHZpZGVvVmlldy5s
YXllcik7Ci0gICAgfSBlbHNlCi0gICAgICAgIHNldFZpZGVvTGF5ZXIobmlsKTsKLSAgICAKKyAg
ICBtX3ZpZGVvVmlldyA9IHJlbW90ZURyYXdpbmdBcmVhUHJveHktPnJlbW90ZUxheWVyVHJlZUhv
c3QoKS5nZXRMYXllcih2aWRlb0xheWVySUQpOworICAgIHdpbGxMZW5kVmlkZW9MYXllcihtX3Zp
ZGVvVmlldy5nZXQoKS5sYXllcik7CiAgICAgbV92aWRlb0xheWVySUQgPSB2aWRlb0xheWVySUQ7
CiAgICAgbV9lbnRlckZ1bGxzY3JlZW5BZnRlclZpZGVvTGF5ZXJVbnBhcmVudGVkVHJhbnNhY3Rp
b24gPSB0cnVlOwogfQogCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZW50
ZXJGdWxsc2NyZWVuKCkKK3ZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpyZXF1
ZXN0RXhpdEZ1bGxzY3JlZW4oKQogeworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlcjo6UmVxdWVzdEV4aXRGdWxsc2NyZWVuKCksIG1fcGFnZS0+cGFn
ZUlEKCkpOwogfQotICAgIAotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnJl
cXVlc3RFeGl0RnVsbFNjcmVlbigpCisKK3ZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5OjpkaWRFeGl0RnVsbHNjcmVlbigpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpSZXF1ZXN0RXhpdEZ1bGxTY3JlZW4oKSwgbV9wYWdl
LT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyOjpEaWRFeGl0RnVsbHNjcmVlbigpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KLSAg
ICAKKwordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmRpZEVudGVyRnVsbHNj
cmVlbigpCit7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyOjpEaWRFbnRlckZ1bGxzY3JlZW4oKSwgbV9wYWdlLT5wYWdlSUQoKSk7Cit9CisKIHZv
aWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpwbGF5KCkKIHsKICAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlBsYXkoKSwgbV9wYWdl
LT5wYWdlSUQoKSk7CkBAIC0xMTUsMTEgKzExNCwxNyBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eTo6c2Vla1RvVGltZShkb3VibGUgdGltZSkKICAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlNlZWtUb1RpbWUodGltZSksIG1f
cGFnZS0+cGFnZUlEKCkpOwogfQogICAgIAotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk6OmRpZEV4aXRGdWxsc2NyZWVuKCkKK3ZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5Ojpib3Jyb3dWaWRlb0xheWVyKCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkRpZEV4aXRGdWxsc2NyZWVuKCksIG1fcGFnZS0+
cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlcjo6Qm9ycm93VmlkZW9MYXllcigpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KLSAgICAK
Kwordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnJldHVyblZpZGVvTGF5ZXIo
KQoreworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdl
cjo6UmV0dXJuVmlkZW9MYXllcigpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3ZpZGVvVmll
dy5jbGVhcigpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFBMQVRG
T1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvaW9zL1dlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9pb3Mv
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5jcHAKaW5kZXggYzU2OTliNjU5NjI1MzEyMTdhOTk1
ZTc1Y2ExYjM1ZGIwZjE5YzQ3MC4uYTljODQ2YTAwNGVlOTAyNGMyMTdiMTE1OWQ0NTJjNTQ1NmRl
NzRjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9pb3MvV2ViVmlkZW9G
dWxsc2NyZWVuTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9pb3Mv
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5jcHAKQEAgLTM1LDggKzM1LDkgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL0V2ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FdmVudE5hbWVzLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9IVE1MVmlkZW9FbGVtZW50Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9TZXR0
aW5ncy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1DQUxheWVyLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9TZXR0aW5ncy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvV2ViQ29yZVRocmVhZFJ1bi5o
PgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtNTAsNiArNTEsOSBAQCBQYXNzUmVm
UHRyPFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI+IFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
OmNyZWF0ZShQYXNzUmVmUAogV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6V2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlcihQYXNzUmVmUHRyPFdlYlBhZ2U+IHBhZ2UpCiAgICAgOiBtX3BhZ2UocGFn
ZS5nZXQoKSkKICAgICAsIG1fc2VuZFVucGFyZW50VmlkZW9MYXllclRyYW5zYWN0aW9uKGZhbHNl
KQorICAgICwgbV9pc0FuaW1hdGluZyhmYWxzZSkKKyAgICAsIG1fdGFyZ2V0SXNGdWxsc2NyZWVu
KGZhbHNlKQorICAgICwgbV9pc0Z1bGxzY3JlZW4oZmFsc2UpCiB7CiAgICAgc2V0V2ViVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlKHRoaXMpOwogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmFkZE1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCBwYWdlLT5wYWdlSUQoKSwgKnRoaXMpOwpAQCAtNzksMTQgKzgzLDI2
IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZW50ZXJGdWxsc2NyZWVuRm9yTm9k
ZShOb2RlKiBub2RlKQogewogICAgIEFTU0VSVChub2RlKTsKICAgICBtX25vZGUgPSBub2RlOwor
ICAgIG1fdGFyZ2V0SXNGdWxsc2NyZWVuID0gdHJ1ZTsKKyAgICAKKyAgICBpZiAobV9pc0FuaW1h
dGluZykKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIG1faXNBbmltYXRpbmcgPSB0cnVlOwog
ICAgIHNldE1lZGlhRWxlbWVudCh0b0hUTUxNZWRpYUVsZW1lbnQobm9kZSkpOwogICAgIGVudGVy
RnVsbHNjcmVlbigpOwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmV4aXRG
dWxsc2NyZWVuRm9yTm9kZShOb2RlKikKIHsKKyAgICBtX25vZGUuY2xlYXIoKTsKKyAgICBtX3Rh
cmdldElzRnVsbHNjcmVlbiA9IGZhbHNlOworICAgIAorICAgIGlmIChtX2lzQW5pbWF0aW5nKQor
ICAgICAgICByZXR1cm47CisgICAgCisgICAgbV9pc0FuaW1hdGluZyA9IHRydWU7CiAgICAgZXhp
dEZ1bGxzY3JlZW4oKTsKLSAgICBzZXRNZWRpYUVsZW1lbnQobnVsbHB0cik7CiB9CiAKIHZvaWQg
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c2V0RHVyYXRpb24oZG91YmxlIGR1cmF0aW9uKQpA
QCAtMTA5LDEyICsxMjUsMTggQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzZXRW
aWRlb0RpbWVuc2lvbnMoYm9vbCBoYXNWaWRlbywgZmxvYXQgd2lkdGgsIGYKICAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0VmlkZW9E
aW1lbnNpb25zKGhhc1ZpZGVvLCB3aWR0aCwgaGVpZ2h0KSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9
CiAgICAgCi12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnNldFZpZGVvTGF5ZXIoUGxh
dGZvcm1MYXllciogdmlkZW9MYXllcikKK3ZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6
d2lsbExlbmRWaWRlb0xheWVyKFBsYXRmb3JtTGF5ZXIqIHZpZGVvTGF5ZXIpCiB7CiAgICAgbV9w
bGF0Zm9ybUNBTGF5ZXIgPSBQbGF0Zm9ybUNBTGF5ZXI6OnBsYXRmb3JtQ0FMYXllcih2aWRlb0xh
eWVyKTsKICAgICBtX3NlbmRVbnBhcmVudFZpZGVvTGF5ZXJUcmFuc2FjdGlvbiA9ICEhbV9wbGF0
Zm9ybUNBTGF5ZXI7CiAgICAgCi0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldFZpZGVvTGF5ZXJJRChtX3BsYXRmb3JtQ0FMYXllciA/
IG1fcGxhdGZvcm1DQUxheWVyLT5sYXllcklEKCkgOiAwKSwgbV9wYWdlLT5wYWdlSUQoKSk7Cisg
ICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6
OldpbGxMZW5kVmlkZW9MYXllcldpdGhJRChtX3BsYXRmb3JtQ0FMYXllciA/IG1fcGxhdGZvcm1D
QUxheWVyLT5sYXllcklEKCkgOiAwKSwgbV9wYWdlLT5wYWdlSUQoKSk7Cit9CisgICAgCit2b2lk
IFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZExlbmRWaWRlb0xheWVyKCkKK3sKKyAgICAv
LyBuby1vcAorICAgIC8vIHRoaXMgd2lsbCBiZSBzZW50IHRocm91Z2ggYSBSZW1vdGVMYXllclRy
ZWVUcmFuc2FjdGlvbgogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmVudGVy
RnVsbHNjcmVlbigpCkBAIC0xMjYsNiArMTQ4LDM4IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlcjo6ZXhpdEZ1bGxzY3JlZW4oKQogewogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpFeGl0RnVsbHNjcmVlbigpLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKIH0KKyAgICAKK3ZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlk
RW50ZXJGdWxsc2NyZWVuKCkKK3sKKyAgICBtX2lzQW5pbWF0aW5nID0gZmFsc2U7CisgICAgbV9p
c0Z1bGxzY3JlZW4gPSBmYWxzZTsKKyAgICAKKyAgICBpZiAobV90YXJnZXRJc0Z1bGxzY3JlZW4p
CisgICAgICAgIHJldHVybjsKKworICAgIF9fYmxvY2sgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVl
bk1vZGVsTWVkaWFFbGVtZW50PiBwcm90ZWN0KHRoaXMpOworICAgIFdlYlRocmVhZFJ1biheIHsK
KyAgICAgICAgZXhpdEZ1bGxzY3JlZW5Gb3JOb2RlKG1fbm9kZS5nZXQoKSk7CisgICAgICAgIHBy
b3RlY3QuY2xlYXIoKTsKKyAgICB9KTsKK30KKwordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyOjpkaWRFeGl0RnVsbHNjcmVlbigpCit7CisgICAgbV9pc0FuaW1hdGluZyA9IGZhbHNlOwor
ICAgIG1faXNGdWxsc2NyZWVuID0gZmFsc2U7CisKKyAgICBzZXRNZWRpYUVsZW1lbnQobnVsbHB0
cik7CisKKyAgICBpZiAoIW1fdGFyZ2V0SXNGdWxsc2NyZWVuKQorICAgICAgICByZXR1cm47CisK
KyAgICBfX2Jsb2NrIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbE1lZGlhRWxlbWVudD4g
cHJvdGVjdCh0aGlzKTsKKyAgICBXZWJUaHJlYWRSdW4oXiB7CisgICAgICAgIGVudGVyRnVsbHNj
cmVlbkZvck5vZGUobV9ub2RlLmdldCgpKTsKKyAgICAgICAgcHJvdGVjdC5jbGVhcigpOworICAg
IH0pOworfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oCmluZGV4
IDhlM2I4YTNkNzY3NGYyNDZlYWUyMzZkYzYyMGQ2NGU1YWFhM2U0OTEuLmI4MGFkZGZjZGZlM2Vm
MDJiNDMyMjYwNDJmNGM3Mzc0Y2JjMzZlZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmgKQEAgLTY3LDE4
ICs2NywzMCBAQCBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgV2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlcihQYXNzUmVmUHRyPFdlYlBhZ2U+KTsKICAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBFdmVudExpc3RlbmVyJiByaHMpIG92ZXJyaWRlIHsgcmV0dXJuIHN0YXRpY19jYXN0PFdl
YkNvcmU6OkV2ZW50TGlzdGVuZXIqPih0aGlzKSA9PSAmcmhzOyB9CiAgICAgCisgICAgLy8gRnVs
bHNjcmVlbkludGVyZmFjZQogICAgIHZpcnR1YWwgdm9pZCBzZXREdXJhdGlvbihkb3VibGUpIG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJyZW50VGltZShkb3VibGUgY3VycmVudFRp
bWUsIGRvdWJsZSBhbmNob3JUaW1lKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UmF0
ZShib29sIGlzUGxheWluZywgZmxvYXQgcGxheWJhY2tSYXRlKSBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0VmlkZW9EaW1lbnNpb25zKGJvb2wgaGFzVmlkZW8sIGZsb2F0IHdpZHRoLCBm
bG9hdCBoZWlnaHQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0xheWVyKFBs
YXRmb3JtTGF5ZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZW50ZXJGdWxsc2NyZWVu
KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGV4aXRGdWxsc2NyZWVuKCkgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCB2b2lkIHdpbGxMZW5kVmlkZW9MYXllcihQbGF0Zm9ybUxheWVyKikgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRpZExlbmRWaWRlb0xheWVyKCkgb3ZlcnJpZGU7CisK
KyAgICAvLyBmb3J3YXJkIHRvIGludGVyZmFjZQorICAgIHZpcnR1YWwgdm9pZCBlbnRlckZ1bGxz
Y3JlZW4oKTsKKyAgICB2aXJ0dWFsIHZvaWQgZXhpdEZ1bGxzY3JlZW4oKTsKKyAgICAKKyAgICAv
LyBhZGRpdGlvbmFsIGluY29taW5nCisgICAgdmlydHVhbCB2b2lkIGRpZEVudGVyRnVsbHNjcmVl
bigpOworICAgIHZpcnR1YWwgdm9pZCBkaWRFeGl0RnVsbHNjcmVlbigpOwogICAgIAogICAgIFdl
YlBhZ2UqIG1fcGFnZTsKICAgICBSZWZQdHI8V2ViQ29yZTo6Tm9kZT4gbV9ub2RlOwogICAgIFJl
ZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI+IG1fcGxhdGZvcm1DQUxheWVyOwogICAgIGJv
b2wgbV9zZW5kVW5wYXJlbnRWaWRlb0xheWVyVHJhbnNhY3Rpb247CisgICAgCisgICAgYm9vbCBt
X2lzQW5pbWF0aW5nOworICAgIGJvb2wgbV90YXJnZXRJc0Z1bGxzY3JlZW47CisgICAgYm9vbCBt
X2lzRnVsbHNjcmVlbjsKIH07CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyLm1lc3NhZ2VzLmluCmluZGV4IDU0MWU1NWY0MmM4ZDQ1YTgzZTQ4NjQx
OTk3MjE3NzA0ZWI5ZmMyODQuLjFhOTMyMmMzNjFiNzM2MjIwZGZmNzA2MzZkN2NjZjI3MDc4MjUw
MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvaW9zL1dlYlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMjAsMTQgKzIw
LDE3IEBACiAjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLSMgY2hhbmdl
cyBoZXJlIG11c3QgYmUgcmVmbGVjdGVkIGluIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsCiAjaWYg
UExBVEZPUk0oSU9TKQogbWVzc2FnZXMgLT4gV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlciB7Ci0g
ICAgUmVxdWVzdEV4aXRGdWxsU2NyZWVuKCkKICAgICBQbGF5KCkKICAgICBQYXVzZSgpCiAgICAg
VG9nZ2xlUGxheVN0YXRlKCkKICAgICBTZWVrVG9UaW1lKGRvdWJsZSB0aW1lKQorICAgIEJvcnJv
d1ZpZGVvTGF5ZXIoKQorICAgIFJldHVyblZpZGVvTGF5ZXIoKQorICAgIFJlcXVlc3RFeGl0RnVs
bHNjcmVlbigpCisKICAgICBEaWRFeGl0RnVsbHNjcmVlbigpCisgICAgRGlkRW50ZXJGdWxsc2Ny
ZWVuKCkKIH0KICNlbmRpZgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>