<?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>216287</bug_id>
          
          <creation_ts>2020-09-08 15:31:35 -0700</creation_ts>
          <short_desc>Returning to element fullscreen from PiP is not stable under stress tests</short_desc>
          <delta_ts>2020-09-15 11:16:02 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=216571</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>216051</blocked>
    
    <blocked>216426</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Peng Liu">peng.liu6</reporter>
          <assigned_to name="Peng Liu">peng.liu6</assigned_to>
          <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1686765</commentid>
    <comment_count>0</comment_count>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-09-08 15:31:35 -0700</bug_when>
    <thetext>Return to element fullscreen from PiP is not stable under stress tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686766</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-09-08 15:32:24 -0700</bug_when>
    <thetext>&lt;rdar://problem/68533983&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686804</commentid>
    <comment_count>2</comment_count>
      <attachid>408284</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-09-08 16:39:47 -0700</bug_when>
    <thetext>Created attachment 408284
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1687649</commentid>
    <comment_count>3</comment_count>
      <attachid>408510</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-09-10 21:34:41 -0700</bug_when>
    <thetext>Created attachment 408510
Fix an api test failure on Mac</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1688304</commentid>
    <comment_count>4</comment_count>
      <attachid>408510</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-09-14 10:47:38 -0700</bug_when>
    <thetext>Comment on attachment 408510
Fix an api test failure on Mac

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

&gt; Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm:700
&gt; +                videoFullscreenManager-&gt;setClient(&amp;_videoFullscreenManagerProxyClient);

Here.

&gt; Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm:851
&gt; +                videoFullscreenManager-&gt;setClient(nullptr);

And here.

&gt; Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm:932
&gt; +    if (![self isFullScreen]) {
&gt; +        if (auto* videoFullscreenManager = self._videoFullscreenManager)
&gt; +            videoFullscreenManager-&gt;setClient(nullptr);
&gt; +    }

And here.

&gt; Source/WebKit/UIProcess/mac/WKFullScreenWindowController.mm:655
&gt; +    if (auto* videoFullscreenManager = self._videoFullscreenManager)
&gt; +        videoFullscreenManager-&gt;setClient(nullptr);

And here.

&gt; Source/WebKit/UIProcess/mac/WKFullScreenWindowController.mm:691
&gt; +    if (auto* videoFullscreenManager = self._videoFullscreenManager)
&gt; +        videoFullscreenManager-&gt;setClient(&amp;_videoFullscreenManagerProxyClient);

And here.

What will happen if some other piece of code reset videoFullScreenManager&apos;s client, perhaps by requesting fullscreen before this animation is complete?  VideoFullscreenManager is a singleton, so would that cause us to get into a bad state in the manager&apos;s state machine?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1688326</commentid>
    <comment_count>5</comment_count>
      <attachid>408510</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-09-14 11:24:39 -0700</bug_when>
    <thetext>Comment on attachment 408510
Fix an api test failure on Mac

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

&gt;&gt; Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm:851
&gt;&gt; +                videoFullscreenManager-&gt;setClient(nullptr);
&gt; 
&gt; And here.

I guess it is better to move this section out of the _repaintCallback?

&gt;&gt; Source/WebKit/UIProcess/mac/WKFullScreenWindowController.mm:691
&gt;&gt; +        videoFullscreenManager-&gt;setClient(&amp;_videoFullscreenManagerProxyClient);
&gt; 
&gt; And here.
&gt; 
&gt; What will happen if some other piece of code reset videoFullScreenManager&apos;s client, perhaps by requesting fullscreen before this animation is complete?  VideoFullscreenManager is a singleton, so would that cause us to get into a bad state in the manager&apos;s state machine?

FullscreenManager has the logic to ignore a new fullscreen mode changing request if the current request is not completed yet. Also, WKFullScreenWindowControllerVideoFullscreenManagerProxyClient is the only one client of VideoFullscreenManagerProxy, and only WKFullScreenWindowController calls VideoFullscreenManagerProxy::setClient(). So I believe the code is safe.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1688352</commentid>
    <comment_count>6</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-09-14 12:02:29 -0700</bug_when>
    <thetext>(In reply to Peng Liu from comment #5)
&gt; Comment on attachment 408510 [details]
&gt; Fix an api test failure on Mac
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=408510&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm:851
&gt; &gt;&gt; +                videoFullscreenManager-&gt;setClient(nullptr);
&gt; &gt; 
&gt; &gt; And here.
&gt; 
&gt; I guess it is better to move this section out of the _repaintCallback?
&gt; 
&gt; &gt;&gt; Source/WebKit/UIProcess/mac/WKFullScreenWindowController.mm:691
&gt; &gt;&gt; +        videoFullscreenManager-&gt;setClient(&amp;_videoFullscreenManagerProxyClient);
&gt; &gt; 
&gt; &gt; And here.
&gt; &gt; 
&gt; &gt; What will happen if some other piece of code reset videoFullScreenManager&apos;s client, perhaps by requesting fullscreen before this animation is complete?  VideoFullscreenManager is a singleton, so would that cause us to get into a bad state in the manager&apos;s state machine?
&gt; 
&gt; FullscreenManager has the logic to ignore a new fullscreen mode changing
&gt; request if the current request is not completed yet. Also,
&gt; WKFullScreenWindowControllerVideoFullscreenManagerProxyClient is the only
&gt; one client of VideoFullscreenManagerProxy, and only
&gt; WKFullScreenWindowController calls VideoFullscreenManagerProxy::setClient().
&gt; So I believe the code is safe.

Might be worthwhile to put some ASSERT() statements around the setClient() calls, to catch this case should things ever go wrong.  I.e., assert that client is NULL when set, and that it&apos;s `this` when cleared.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1688392</commentid>
    <comment_count>7</comment_count>
      <attachid>408739</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-09-14 13:27:40 -0700</bug_when>
    <thetext>Created attachment 408739
Update the patch based on Jer&apos;s comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1688394</commentid>
    <comment_count>8</comment_count>
      <attachid>408510</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-09-14 13:28:57 -0700</bug_when>
    <thetext>Comment on attachment 408510
Fix an api test failure on Mac

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

&gt;&gt;&gt;&gt; Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm:851
&gt;&gt;&gt;&gt; +                videoFullscreenManager-&gt;setClient(nullptr);
&gt;&gt;&gt; 
&gt;&gt;&gt; And here.
&gt;&gt; 
&gt;&gt; I guess it is better to move this section out of the _repaintCallback?
&gt; 
&gt; Might be worthwhile to put some ASSERT() statements around the setClient() calls, to catch this case should things ever go wrong.  I.e., assert that client is NULL when set, and that it&apos;s `this` when cleared.

Good point!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1688447</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-09-14 15:39:55 -0700</bug_when>
    <thetext>Committed r267053: &lt;https://trac.webkit.org/changeset/267053&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 408739.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408284</attachid>
            <date>2020-09-08 16:39:47 -0700</date>
            <delta_ts>2020-09-10 21:34:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216287-20200908163946.patch</filename>
            <type>text/plain</type>
            <size>26313</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2NzUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGE5NDNhYzVkZTQ0ZWEx
MzRiNDM5ZTc3MGI3MTUwMmM5MzBhNDc5Zi4uZTBhNWFjMWRhYmZmZTkyMmJlYmRjOWViNTc5YjE4
ODNjMzUzMTM5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIwLTA5LTA4ICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV0dXJuaW5nIHRvIGVsZW1l
bnQgZnVsbHNjcmVlbiBmcm9tIFBpUCBpcyBub3Qgc3RhYmxlIHVuZGVyIHN0cmVzcyB0ZXN0cwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2Mjg3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci5oOgorICAgICAgICBEZWxldGUg
cHJlcGFyZVRvRXhpdEZ1bGxzY3JlZW4oKS4KKworICAgICAgICAqIHBsYXRmb3JtL2lvcy9WaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9WaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbToKKyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUFWS2l0OjpWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdCk6CisgICAgICAgIChW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6cHJlcGFyZUZvclBpY3R1cmVJblBpY3R1cmVT
dG9wKToKKyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpkaWRTdG9wUGlj
dHVyZUluUGljdHVyZSk6CisgICAgICAgIChWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6
c3RvcFBpY3R1cmVJblBpY3R1cmVUaW1lckZpcmVkKToKKyAgICAgICAgKFZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0OjpzZXRSZWFkeVRvU3RvcFBpY3R1cmVJblBpY3R1cmUpOgorICAgICAg
ICBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdCBleHBlY3RzIGFuIGVsZW1lbnQgZW50ZXJz
IGZ1bGxzY3JlZW4gYW5kIGZpZ3VyZSBvdXQgdGhlCisgICAgICAgIGxvY2F0aW9uIGFuZCBzaXpl
IG9mIHRoZSB2aWRlbyBlbGVtZW50IGFmdGVyIHRoYXQsIHdoaWNoIHdpbGwgYmUgdXNlZCBieSBB
VktpdCBmb3IgdGhlCisgICAgICAgIGV4aXRpbmcgcGljdHVyZS1pbi1waWN0dXJlIGFuaW1hdGlv
bi4gSG93ZXZlciwgdGhlIGVudGVyaW5nIGZ1bGxzY3JlZW4gbWF5IHRha2UgYSBsb25nCisgICAg
ICAgIHRpbWUgYW5kIEFWS2l0IHdpbGwgc3RhcnQgZXhpdGluZyBwaWN0dXJlLWluLXBpY3R1cmUg
YmVmb3JlIHRoZSBlbnRlcmluZyBmdWxsc2NyZWVuCisgICAgICAgIHRyYW5zaXRpb24gaXMgZG9u
ZS4gV2UgbmVlZCB0byBhZGQgcHJvdGVjdGlvbiBmb3Igc3VjaCBhIHNjZW5hcmlvLiBUaGlzIHBh
dGNoIGFkZHMKKyAgICAgICAgYSB0aW1lciAobV9zdG9wUGljdHVyZUluUGljdHVyZVRpbWVyKSBm
b3IgdGhpcyBwdXJwb3NlLiBUaGlzIHBhdGNoIGFsc28gbWFrZXMgc3VyZQorICAgICAgICBWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdCB3aWxsIGNhbGwgZGlkRXhpdFBpY3R1cmVJblBpY3R1
cmUoKSBwcm9wZXJseS4KKworICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyQVZLaXQubW06CisKIDIwMjAtMDktMDggIFNhbSBXZWluaWcgIDx3ZWluaWdA
YXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJJRExdIEFkZCBzdXBwb3J0IGZvciBwYXJ0aWFsIGlu
dGVyZmFjZSBtaXhpbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMDM4YWJhMTllZWMwYzNjOTE2Zjk0ZjcyZmYzMGZj
ZTVkOTIxNTM4YS4uZDYwZWRiMTlkMjJlODQ0NWQyMzRjNTVmYmY0ZGU4ODlhMWE0YzlmYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw1MCBAQAorMjAyMC0wOS0wOCAgUGVuZyBMaXUgIDxwZW5nLmxpdTZA
YXBwbGUuY29tPgorCisgICAgICAgIFJldHVybmluZyB0byBlbGVtZW50IGZ1bGxzY3JlZW4gZnJv
bSBQaVAgaXMgbm90IHN0YWJsZSB1bmRlciBzdHJlc3MgdGVzdHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjI4NworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggb25seSBmaXhlcyB0aGUg
aXNzdWUgb24gdGhlIGlQYWQuIFdlIG5lZWQgYSBzaW1pbGFyIHBhdGNoIGZvciBNYWMgYXMgd2Vs
bC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHkuaDoKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Q2xpZW50
Ojp+VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpzZXRDbGllbnQpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW06CisgICAgICAgIChXZWJL
aXQ6OlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6ZGlkRW50ZXJQaWN0dXJlSW5QaWN0dXJl
KToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpkaWRFeGl0
UGljdHVyZUluUGljdHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1vZGVs
Q29udGV4dDo6d2lsbEVudGVyUGljdHVyZUluUGljdHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6aGFzVmlkZW9JblBpY3R1cmVJblBpY3R1cmVEaWRD
aGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmZ1
bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZSk6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNj
cmVlbk1vZGVsQ29udGV4dDo6cHJlcGFyZVRvRXhpdEZ1bGxzY3JlZW4pOiBEZWxldGVkLgorICAg
ICAgICBBZGQgdGhlIGludGVyZmFjZSBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHlDbGllbnQs
IHdoaWNoIGlzIHVzZWQgYnkgV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcgorICAgICAgICB0
byBpbXBsZW1lbnQgdGhlIHN1cHBvcnQgb2YgInJldHVybmluZyB0byBlbGVtZW50IGZ1bGxzY3Jl
ZW4gZnJvbSBQaVAiLiBVc2luZyBWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudAorICAgICAgICBm
b3IgdGhhdCBwdXJwb3NlIGlzIG5vdCBhIGdvb2QgaWRlYSBiZWNhdXNlIHRoZSBpbnN0YW5jZSBv
YnNlcnZlZCBieSBWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudCBtYXkgYmUKKyAgICAgICAgZGVz
dHJveWVkIHdoZW4gYSB2aWRlbyBlbGVtZW50IGlzIGV4aXRpbmcgcGljdHVyZS1pbi1waWN0dXJl
IGlmIHdlIGRvbid0IGNhbGwKKyAgICAgICAgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Ojph
ZGRDbGllbnRGb3JDb250ZXh0KCkgYW5kIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6cmVt
b3ZlQ2xpZW50Rm9yQ29udGV4dCgpCisgICAgICAgIHByb3Blcmx5LgorCisgICAgICAgICogVUlQ
cm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MubW06
CisgICAgICAgICgtW1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgaW5pdFdpdGhXZWJWaWV3
Ol0pOgorICAgICAgICAoLVtXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyIGRlYWxsb2NdKToK
KyAgICAgICAgKC1bV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlciBiZWdhbkVudGVyRnVsbFNj
cmVlbldpdGhJbml0aWFsRnJhbWU6ZmluYWxGcmFtZTpdKToKKyAgICAgICAgKC1bV0tGdWxsU2Ny
ZWVuV2luZG93Q29udHJvbGxlciBfY29tcGxldGVkRXhpdEZ1bGxTY3JlZW5dKToKKyAgICAgICAg
KC1bV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlciB2aWRlb0NvbnRyb2xzTWFuYWdlckRpZENo
YW5nZV0pOgorICAgICAgICAoLVtXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyIHByZXBhcmVU
b0V4aXRQaWN0dXJlSW5QaWN0dXJlXSk6CisgICAgICAgICgtW1dLRnVsbFNjcmVlbldpbmRvd0Nv
bnRyb2xsZXIgZGlkRXhpdFBpY3R1cmVJblBpY3R1cmVdKToKKyAgICAgICAgKC1bV0tGdWxsU2Ny
ZWVuV2luZG93Q29udHJvbGxlciBfdmlkZW9GdWxsc2NyZWVuTWFuYWdlcl0pOgorICAgICAgICAo
V0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlclZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50Ojpz
ZXRQYXJlbnQpOiBEZWxldGVkLgorICAgICAgICAoV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxl
clZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50OjpzZXRJbnRlcmZhY2UpOiBEZWxldGVkLgorICAg
ICAgICAoV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlclZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xp
ZW50OjppbnRlcmZhY2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoLVtXS0Z1bGxTY3JlZW5X
aW5kb3dDb250cm9sbGVyIHdpbGxFbnRlclBpY3R1cmVJblBpY3R1cmVdKTogRGVsZXRlZC4KKyAg
ICAgICAgKC1bV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlciBmYWlsZWRUb0VudGVyUGljdHVy
ZUluUGljdHVyZV0pOiBEZWxldGVkLgorICAgICAgICBVc2UgVmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5Q2xpZW50IGluc3RlYWQgb2YgVmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQgdG8gaW1w
bGVtZW50CisgICAgICAgIHRoZSBzdXBwb3J0IG9mICJyZXR1cm5pbmcgdG8gZWxlbWVudCBmdWxs
c2NyZWVuIGZyb20gUGlQIi4KKworICAgICAgICBBIHVzZXIgY2FuICJyZXR1cm4gdG8gZWxlbWVu
dCBmdWxsc2NyZWVuIGZyb20gUGlQIiBieSBjbGlja2luZyB0aGUgInJldHVybiB0byBmdWxsc2Ny
ZWVuIgorICAgICAgICBidXR0b24gb24gdGhlIFBpUCB3aW5kb3csIG9yIGJ5IGNsaWNraW5nIHRo
ZSAiZnVsbHNjcmVlbiIgYnV0dG9uIG9uIHRoZSBwYWdlLiBUaGlzIHBhdGNoCisgICAgICAgIGFk
ZHMgc3VwcG9ydCBmb3IgdGhlIGxhdHRlciBjYXNlLgorCiAyMDIwLTA5LTA4ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgTnVsbCBjaGVjayBt
X2xheWVySG9zdGluZ0NvbnRleHQgaW4gVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnNl
bmREaWRGaXJzdExheWVyRmx1c2hJZk5lZWRlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLmgKaW5k
ZXggNTRlZWYzOTk4YjhjMjBhYjM1YWFiODY3ZmM0MTM4ZDAxMWQ0M2Q4Mi4uZjQ5MTI0NjI3ZTZh
YjU3MmVjNzkyZjAyN2NjM2Y5Yzg3YzZiOGE3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci5o
CkBAIC00MSw3ICs0MSw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2lsbEV4aXRGdWxs
c2NyZWVuKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRFeGl0RnVsbHNjcmVlbigpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xlYW51cEZ1bGxzY3JlZW4oKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIHByZXBhcmVUb0V4aXRGdWxsc2NyZWVuKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBm
dWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZ1bGxz
Y3JlZW5XaWxsUmV0dXJuVG9JbmxpbmUoKSA9IDA7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaApp
bmRleCA4YmVmN2U0YzYwMWQ5NmQyOTc3MzBjMzlkNDgyYjZkNGUyYWJhY2M2Li41MjgwMzAzZTQ4
OGFlMjM4MGE1NTljZjVhMTFlZTcxZDJhN2U1OTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaApA
QCAtMTY2LDYgKzE2Niw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHJldHVyblRvU3RhbmRieSgp
OwogICAgIHZvaWQgZG9FbnRlckZ1bGxzY3JlZW4oKTsKICAgICB2b2lkIHdhdGNoZG9nVGltZXJG
aXJlZCgpOworICAgIHZvaWQgc3RvcFBpY3R1cmVJblBpY3R1cmVUaW1lckZpcmVkKCk7CiAgICAg
V2ViQVZQbGF5ZXJDb250cm9sbGVyICpwbGF5ZXJDb250cm9sbGVyKCkgY29uc3Q7CiAKICAgICBS
ZWY8UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ+IG1fcGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlOwpAQCAtMTgzLDYgKzE4NCw3IEBAIHByb3RlY3RlZDoKICAgICBSZXRhaW5QdHI8V2ViQVZQ
bGF5ZXJMYXllclZpZXc+IG1fcGxheWVyTGF5ZXJWaWV3OwogICAgIFdURjo6RnVuY3Rpb248dm9p
ZChib29sKT4gbV9wcmVwYXJlVG9JbmxpbmVDYWxsYmFjazsKICAgICBSdW5Mb29wOjpUaW1lcjxW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdD4gbV93YXRjaGRvZ1RpbWVyOworICAgIFJ1bkxv
b3A6OlRpbWVyPFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0PiBtX3N0b3BQaWN0dXJlSW5Q
aWN0dXJlVGltZXI7CiAgICAgRmxvYXRSZWN0IG1faW5saW5lUmVjdDsKICAgICBSb3V0ZVNoYXJp
bmdQb2xpY3kgbV9yb3V0ZVNoYXJpbmdQb2xpY3kgeyBSb3V0ZVNoYXJpbmdQb2xpY3k6OkRlZmF1
bHQgfTsKICAgICBTdHJpbmcgbV9yb3V0aW5nQ29udGV4dFVJRDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktp
dC5tbQppbmRleCAzNjFiZTk0YzEyMjVmOTFhMmY0MDc0Yjc5NmI1MDQ3ZTVlYTg3NmUwLi4yMzIw
NGRhYTdlMDQwOGU3NjdhN2E1MWU4NTYyZWFiYWVjNGUzMWUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFW
S2l0Lm1tCkBAIC04NSw2ICs4NSw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBib29sU3RyaW5nKGJv
b2wgdmFsKQogI2VuZGlmCiAKIHN0YXRpYyBjb25zdCBTZWNvbmRzIGRlZmF1bHRXYXRjaGRvZ1Rp
bWVySW50ZXJ2YWwgeyAxX3MgfTsKK3N0YXRpYyBjb25zdCBTZWNvbmRzIHN0b3BQaWN0dXJlSW5Q
aWN0dXJlVGltZXJJbnRlcnZhbCB7IDFfcyB9Owogc3RhdGljIGJvb2wgaWdub3JlV2F0Y2hkb2dG
b3JEZWJ1Z2dpbmcgPSBmYWxzZTsKIAogQGludGVyZmFjZSBBVlBsYXllclZpZXdDb250cm9sbGVy
IChEZXRhaWxzKQpAQCAtODEyLDYgKzgxMyw3IEBAIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFW
S2l0OjpWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdChQbGF5YmFja1Nlc3Npb25JbnRlCiAg
ICAgOiBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZShwbGF5YmFja1Nlc3Npb25JbnRlcmZhY2Up
CiAgICAgLCBtX3BsYXllclZpZXdDb250cm9sbGVyRGVsZWdhdGUoYWRvcHROUyhbW1dlYkFWUGxh
eWVyVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pKQogICAgICwgbV93YXRjaGRv
Z1RpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFW
S2l0Ojp3YXRjaGRvZ1RpbWVyRmlyZWQpCisgICAgLCBtX3N0b3BQaWN0dXJlSW5QaWN0dXJlVGlt
ZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6
OnN0b3BQaWN0dXJlSW5QaWN0dXJlVGltZXJGaXJlZCkKIHsKIH0KIApAQCAtMTA4NCw3ICsxMDg2
LDYgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6cHJlcGFyZUZvclBpY3R1
cmVJblBpY3R1cmVTdG9wKFdURjo6RnVuY3Rpb24KICAgICBtX3ByZXBhcmVUb0lubGluZUNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayk7CiAgICAgaWYgKG1fZnVsbHNjcmVlbkNoYW5nZU9ic2Vy
dmVyKSB7CiAgICAgICAgIG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLT5mdWxsc2NyZWVuTWF5
UmV0dXJuVG9JbmxpbmUoKTsKLSAgICAgICAgbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXItPnBy
ZXBhcmVUb0V4aXRGdWxsc2NyZWVuKCk7CiAgICAgICAgIGlmIChtX3JlYWR5VG9TdG9wUGljdHVy
ZUluUGljdHVyZSkKICAgICAgICAgICAgIG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLT5mdWxs
c2NyZWVuV2lsbFJldHVyblRvSW5saW5lKCk7CiAgICAgfQpAQCAtMTE3NiwyNSArMTE3NywzNyBA
QCB2b2lkIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpkaWRTdG9wUGljdHVyZUluUGlj
dHVyZSgpCiAKICAgICAgICAgaWYgKG1fZXhpdEZ1bGxzY3JlZW5OZWVkc0V4aXRQaWN0dXJlSW5Q
aWN0dXJlKQogICAgICAgICAgICAgZG9FeGl0RnVsbHNjcmVlbigpOworICAgICAgICBlbHNlIGlm
IChtX2V4aXRpbmdQaWN0dXJlSW5QaWN0dXJlKSB7CisgICAgICAgICAgICBtX2V4aXRpbmdQaWN0
dXJlSW5QaWN0dXJlID0gZmFsc2U7CisgICAgICAgICAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5N
b2RlbCkKKyAgICAgICAgICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5kaWRFeGl0UGlj
dHVyZUluUGljdHVyZSgpOworICAgICAgICB9CiAKICAgICAgICAgaWYgKG1fZW50ZXJGdWxsc2Ny
ZWVuTmVlZHNFeGl0UGljdHVyZUluUGljdHVyZSkKICAgICAgICAgICAgIGRvRW50ZXJGdWxsc2Ny
ZWVuKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBpZiAoIW1fcmVhZHlUb1N0b3BQ
aWN0dXJlSW5QaWN0dXJlKSB7CisgICAgICAgIGlmICghbV9zdG9wUGljdHVyZUluUGljdHVyZVRp
bWVyLmlzQWN0aXZlKCkpCisgICAgICAgICAgICBtX3N0b3BQaWN0dXJlSW5QaWN0dXJlVGltZXIu
c3RhcnRPbmVTaG90KHN0b3BQaWN0dXJlSW5QaWN0dXJlVGltZXJJbnRlcnZhbCk7CisgICAgfSBl
bHNlCisgICAgICAgIGNsZWFyTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNj
cmVlbk1vZGVQaWN0dXJlSW5QaWN0dXJlKTsKKwogICAgIFttX3BsYXllckxheWVyVmlldyBzZXRC
YWNrZ3JvdW5kQ29sb3I6Y2xlYXJVSUNvbG9yKCldOwogICAgIFtbbV9wbGF5ZXJWaWV3Q29udHJv
bGxlciB2aWV3XSBzZXRCYWNrZ3JvdW5kQ29sb3I6Y2xlYXJVSUNvbG9yKCldOwogCi0gICAgaWYg
KG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwpCi0gICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwt
PnJlcXVlc3RGdWxsc2NyZWVuTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNj
cmVlbk1vZGVOb25lKTsKLQotICAgIGNsZWFyTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZp
ZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJlSW5QaWN0dXJlKTsKLQogICAgIGlmIChtX2VudGVyRnVs
bHNjcmVlbk5lZWRzRXhpdFBpY3R1cmVJblBpY3R1cmUpCiAgICAgICAgIGRvRW50ZXJGdWxsc2Ny
ZWVuKCk7CiAKICAgICBpZiAobV9leGl0RnVsbHNjcmVlbk5lZWRzRXhpdFBpY3R1cmVJblBpY3R1
cmUpCiAgICAgICAgIGRvRXhpdEZ1bGxzY3JlZW4oKTsKKyAgICBlbHNlIGlmIChtX2V4aXRpbmdQ
aWN0dXJlSW5QaWN0dXJlKSB7CisgICAgICAgIG1fZXhpdGluZ1BpY3R1cmVJblBpY3R1cmUgPSBm
YWxzZTsKKworICAgICAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2RlbCkKKyAgICAgICAgICAg
IG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwtPmRpZEV4aXRQaWN0dXJlSW5QaWN0dXJlKCk7CisgICAg
fQogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpwcmVwYXJlRm9yUGlj
dHVyZUluUGljdHVyZVN0b3BXaXRoQ29tcGxldGlvbkhhbmRsZXIodm9pZCAoXmNvbXBsZXRpb25I
YW5kbGVyKShCT09MIHJlc3RvcmVkKSkKQEAgLTE1NzIsNiArMTU4NSwxMyBAQCBOT19SRVRVUk5f
RFVFX1RPX0FTU0VSVCB2b2lkIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojp3YXRjaGRv
Z1RpbWVyRmlyZWQoKQogICAgIFtbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XSBzZXRIaWRk
ZW46WUVTXTsKIH0KIAordm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c3RvcFBp
Y3R1cmVJblBpY3R1cmVUaW1lckZpcmVkKCkKK3sKKyAgICBMT0coRnVsbHNjcmVlbiwgIlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzdG9wUGljdHVyZUluUGljdHVyZVRpbWVyRmlyZWQo
JXApIC0gbm90IHJlYWR5IHRvIHN0b3AgcGljdHVyZS1pbi1waWN0dXJlIGluICVnczsgZm9yY2lu
ZyBzdG9wIHBpY3R1cmUtaW4tcGljdHVyZS4iLCB0aGlzLCBzdG9wUGljdHVyZUluUGljdHVyZVRp
bWVySW50ZXJ2YWwudmFsdWUoKSk7CisgICAgbV9zdG9wUGljdHVyZUluUGljdHVyZVRpbWVyLnN0
b3AoKTsKKyAgICBjbGVhck1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlUGljdHVyZUluUGljdHVyZSk7Cit9CisKIHZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQVZLaXQ6OnNldE1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5N
b2RlIG1vZGUpCiB7CiAgICAgaWYgKChtX2N1cnJlbnRNb2RlLm1vZGUoKSAmIG1vZGUpID09IG1v
ZGUpCkBAIC0xNjA1LDggKzE2MjUsMTUgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdDo6c2V0UmVhZHlUb1N0b3BQaWN0dXJlSW5QaWN0dXJlKEJPT0wgcmVhZHkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIG1fcmVhZHlUb1N0b3BQaWN0dXJlSW5QaWN0dXJlID0gcmVhZHk7Ci0g
ICAgaWYgKG1fcmVhZHlUb1N0b3BQaWN0dXJlSW5QaWN0dXJlICYmIG1fZnVsbHNjcmVlbkNoYW5n
ZU9ic2VydmVyKQotICAgICAgICBtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci0+ZnVsbHNjcmVl
bldpbGxSZXR1cm5Ub0lubGluZSgpOworICAgIGlmIChtX3JlYWR5VG9TdG9wUGljdHVyZUluUGlj
dHVyZSkgeworICAgICAgICBpZiAobV9zdG9wUGljdHVyZUluUGljdHVyZVRpbWVyLmlzQWN0aXZl
KCkpIHsKKyAgICAgICAgICAgIG1fc3RvcFBpY3R1cmVJblBpY3R1cmVUaW1lci5zdG9wKCk7Cisg
ICAgICAgICAgICBjbGVhck1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlUGljdHVyZUluUGljdHVyZSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAobV9mdWxs
c2NyZWVuQ2hhbmdlT2JzZXJ2ZXIpCisgICAgICAgICAgICBtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNl
cnZlci0+ZnVsbHNjcmVlbldpbGxSZXR1cm5Ub0lubGluZSgpOworICAgIH0KIH0KIAogc3RhdGlj
IE9wdGlvbmFsPGJvb2w+IGlzUGljdHVyZUluUGljdHVyZVN1cHBvcnRlZDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
QVZLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlckFWS2l0Lm1tCmluZGV4IGY4MzFkNmI4NDQ4YTNkODQ0ZjI0YzhiNDhlMGZjYmVi
ZmQwOTA3ZGEuLjgyMzczODc4OWMxZjgwNjFhZGI0YmM3N2ZhYTQ3MTY5N2M5MjA1MDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyQVZLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQpAQCAtMTI4LDcgKzEyOCw2IEBAIHByaXZhdGU6
CiAgICAgdm9pZCB3aWxsRXhpdEZ1bGxzY3JlZW4oKSBmaW5hbDsKICAgICB2b2lkIGRpZEV4aXRG
dWxsc2NyZWVuKCkgZmluYWw7CiAgICAgdm9pZCBkaWRDbGVhbnVwRnVsbHNjcmVlbigpIGZpbmFs
OwotICAgIHZvaWQgcHJlcGFyZVRvRXhpdEZ1bGxzY3JlZW4oKSBmaW5hbCB7IH0KICAgICB2b2lk
IGZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZSgpIGZpbmFsIHsgfQogICAgIHZvaWQgZnVsbHNj
cmVlbldpbGxSZXR1cm5Ub0lubGluZSgpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oCmlu
ZGV4IGFkOGVmZTNlYTVhZDBmNGY5NDZkN2E0YTU1OTQwNGI3NjQ0YzU1OTAuLjgwYTA5MzMzY2Ni
NTZmYWJmNTRmNTMyZmRkNjc0YjIyNDdlZTkwOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oCkBA
IC0xMTEsNyArMTExLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxFeGl0RnVsbHNjcmVlbigp
IGZpbmFsOwogICAgIHZvaWQgZGlkRXhpdEZ1bGxzY3JlZW4oKSBmaW5hbDsKICAgICB2b2lkIGRp
ZENsZWFudXBGdWxsc2NyZWVuKCkgZmluYWw7Ci0gICAgdm9pZCBwcmVwYXJlVG9FeGl0RnVsbHNj
cmVlbigpIGZpbmFsOwogICAgIHZvaWQgZnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lKCkgZmlu
YWw7CiAgICAgdm9pZCBmdWxsc2NyZWVuV2lsbFJldHVyblRvSW5saW5lKCkgZmluYWw7CiAKQEAg
LTEyNCw2ICsxMjMsMTQgQEAgcHJpdmF0ZToKICAgICBib29sIG1faGFzVmlkZW8geyBmYWxzZSB9
OwogfTsKIAorY2xhc3MgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Q2xpZW50IDogcHVibGlj
IENhbk1ha2VXZWFrUHRyPFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eUNsaWVudD4geworcHVi
bGljOgorICAgIHZpcnR1YWwgflZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eUNsaWVudCgpIHsg
fTsKKworICAgIHZpcnR1YWwgdm9pZCBmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUoKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGhhc1ZpZGVvSW5QaWN0dXJlSW5QaWN0dXJlRGlkQ2hhbmdlKGJv
b2wgdmFsdWUpID0gMDsKK307CisKIGNsYXNzIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eSA6
IHB1YmxpYyBSZWZDb3VudGVkPFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eT4sIHByaXZhdGUg
SVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8VmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5PiBjcmVhdGUoV2ViUGFnZVByb3h5JiwgUGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5Jik7CkBAIC0xNDQsNiArMTUxLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNQ
bGF5aW5nVmlkZW9JbkVuaGFuY2VkRnVsbHNjcmVlbigpIGNvbnN0OwogCiAgICAgUGxhdGZvcm1W
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UqIGNvbnRyb2xzTWFuYWdlckludGVyZmFjZSgpOworICAg
IHZvaWQgc2V0Q2xpZW50KFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eUNsaWVudCogY2xpZW50
KSB7IG1fY2xpZW50ID0gbWFrZVdlYWtQdHIoY2xpZW50KTsgfQogCiAgICAgdm9pZCBmb3JFYWNo
U2Vzc2lvbihGdW5jdGlvbjx2b2lkKFdlYkNvcmU6OlZpZGVvRnVsbHNjcmVlbk1vZGVsJiwgUGxh
dGZvcm1WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UmKT4mJik7CiAKQEAgLTIwMiw2ICsyMTAsNyBA
QCBwcml2YXRlOgogICAgIEhhc2hNYXA8UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIs
IE1vZGVsSW50ZXJmYWNlVHVwbGU+IG1fY29udGV4dE1hcDsKICAgICBQbGF5YmFja1Nlc3Npb25D
b250ZXh0SWRlbnRpZmllciBtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZDsKICAgICBIYXNoTWFw
PFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLCBpbnQ+IG1fY2xpZW50Q291bnRzOwor
ICAgIFdlYWtQdHI8VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Q2xpZW50PiBtX2NsaWVudDsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCmluZGV4
IDgxMzc1ZTM4NmQwM2E2ZjA3ZTdhODg3MDY0OTExYzJkNWJmNDIyMmEuLmYwYzViYWYzMzM2ZjUz
YWZhYTk4NzI1MmNlY2FjMmY1ODI1MTQwNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0KQEAg
LTI4OCwyNSArMjg4LDIyIEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpyZXF1
ZXN0Um91dGVTaGFyaW5nUG9saWN5QW5kQ29udGV4dFVJRChDb21wbGV0CiAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFdlYkNvcmU6OlJvdXRlU2hhcmluZ1BvbGljeTo6RGVmYXVsdCwgZW1wdHlT
dHJpbmcoKSk7CiB9CiAKLXZvaWQgVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpwcmVwYXJl
VG9FeGl0RnVsbHNjcmVlbigpCit2b2lkIFZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6ZGlk
RW50ZXJQaWN0dXJlSW5QaWN0dXJlKCkKIHsKLSAgICBmb3IgKGF1dG8mIGNsaWVudCA6IGNvcHlU
b1ZlY3RvcihtX2NsaWVudHMpKQotICAgICAgICBjbGllbnQtPnByZXBhcmVUb0V4aXRQaWN0dXJl
SW5QaWN0dXJlKCk7CisgICAgaWYgKG1fbWFuYWdlcikKKyAgICAgICAgbV9tYW5hZ2VyLT5oYXNW
aWRlb0luUGljdHVyZUluUGljdHVyZURpZENoYW5nZSh0cnVlKTsKIH0KIAotdm9pZCBWaWRlb0Z1
bGxzY3JlZW5Nb2RlbENvbnRleHQ6OndpbGxFbnRlclBpY3R1cmVJblBpY3R1cmUoKQordm9pZCBW
aWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OmRpZEV4aXRQaWN0dXJlSW5QaWN0dXJlKCkKIHsK
LSAgICBmb3IgKGF1dG8mIGNsaWVudCA6IGNvcHlUb1ZlY3RvcihtX2NsaWVudHMpKQotICAgICAg
ICBjbGllbnQtPndpbGxFbnRlclBpY3R1cmVJblBpY3R1cmUoKTsKKyAgICBpZiAobV9tYW5hZ2Vy
KQorICAgICAgICBtX21hbmFnZXItPmhhc1ZpZGVvSW5QaWN0dXJlSW5QaWN0dXJlRGlkQ2hhbmdl
KGZhbHNlKTsKIH0KIAotdm9pZCBWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OmRpZEVudGVy
UGljdHVyZUluUGljdHVyZSgpCit2b2lkIFZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6d2ls
bEVudGVyUGljdHVyZUluUGljdHVyZSgpCiB7Ci0gICAgaWYgKG1fbWFuYWdlcikKLSAgICAgICAg
bV9tYW5hZ2VyLT5oYXNWaWRlb0luUGljdHVyZUluUGljdHVyZURpZENoYW5nZSh0cnVlKTsKLQog
ICAgIGZvciAoYXV0byYgY2xpZW50IDogY29weVRvVmVjdG9yKG1fY2xpZW50cykpCi0gICAgICAg
IGNsaWVudC0+ZGlkRW50ZXJQaWN0dXJlSW5QaWN0dXJlKCk7CisgICAgICAgIGNsaWVudC0+d2ls
bEVudGVyUGljdHVyZUluUGljdHVyZSgpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1vZGVs
Q29udGV4dDo6ZmFpbGVkVG9FbnRlclBpY3R1cmVJblBpY3R1cmUoKQpAQCAtMzIxLDE1ICszMTgs
NiBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6d2lsbEV4aXRQaWN0dXJlSW5Q
aWN0dXJlKCkKICAgICAgICAgY2xpZW50LT53aWxsRXhpdFBpY3R1cmVJblBpY3R1cmUoKTsKIH0K
IAotdm9pZCBWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OmRpZEV4aXRQaWN0dXJlSW5QaWN0
dXJlKCkKLXsKLSAgICBpZiAobV9tYW5hZ2VyKQotICAgICAgICBtX21hbmFnZXItPmhhc1ZpZGVv
SW5QaWN0dXJlSW5QaWN0dXJlRGlkQ2hhbmdlKGZhbHNlKTsKLQotICAgIGZvciAoYXV0byYgY2xp
ZW50IDogY29weVRvVmVjdG9yKG1fY2xpZW50cykpCi0gICAgICAgIGNsaWVudC0+ZGlkRXhpdFBp
Y3R1cmVJblBpY3R1cmUoKTsKLX0KLQogI3ByYWdtYSBtYXJrIC0gVmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5CiAKIFJlZjxWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk+IFZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eTo6Y3JlYXRlKFdlYlBhZ2VQcm94eSYgcGFnZSwgUGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5JiBwbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkpCkBAIC01MjAsNiAr
NTA4LDggQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmZvckVhY2hTZXNzaW9u
KEZ1bmN0aW9uPHZvaWQoVmlkZW9GdWxsc2NyZWVuTW8KIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5OjpoYXNWaWRlb0luUGljdHVyZUluUGljdHVyZURpZENoYW5nZShib29sIHZhbHVl
KQogewogICAgIG1fcGFnZS0+dWlDbGllbnQoKS5oYXNWaWRlb0luUGljdHVyZUluUGljdHVyZURp
ZENoYW5nZShtX3BhZ2UsIHZhbHVlKTsKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xp
ZW50LT5oYXNWaWRlb0luUGljdHVyZUluUGljdHVyZURpZENoYW5nZSh2YWx1ZSk7CiB9CiAKICNw
cmFnbWEgbWFyayBNZXNzYWdlcyBmcm9tIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXIKQEAgLTgyNSw2
ICs4MTUsOCBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZnVsbHNjcmVlbk1v
ZGVDaGFuZ2VkKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHk6OmZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZShQbGF5YmFja1Nlc3Npb25D
b250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCiB7CiAgICAgbV9wYWdlLT5mdWxsc2NyZWVuTWF5
UmV0dXJuVG9JbmxpbmUoKTsKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5m
dWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUoKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHk6OmZ1bGxzY3JlZW5XaWxsUmV0dXJuVG9JbmxpbmUoUGxheWJhY2tTZXNzaW9u
Q29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcklPUy5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlbldp
bmRvd0NvbnRyb2xsZXJJT1MubW0KaW5kZXggODZiMTc2ZDExODllY2FmMDQ3ODM3ZjYzYjRjMTVk
MWMxZjA1NDJlOC4uODg3YWY4MjJmODNiMDMzODIwYjc4YWM1NTdmYzAzMzgyMjYwZWFjZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2Ny
ZWVuV2luZG93Q29udHJvbGxlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVySU9TLm1tCkBAIC0yNCw5
ICsyNCw5IEBACiAgKi8KIAogI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJXS0Z1bGxTY3Jl
ZW5XaW5kb3dDb250cm9sbGVySU9TLmgiCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBF
TkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0jaW1wb3J0ICJXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9s
bGVySU9TLmgiCiAKICNpbXBvcnQgIlVJS2l0U1BJLmgiCiAjaW1wb3J0ICJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHkuaCIKQEAgLTQyOCw2MCArNDI4LDMxIEBAIHN0YXRpYyBjb25zdCBOU1Rp
bWVJbnRlcnZhbCBrQW5pbWF0aW9uRHVyYXRpb24gPSAwLjI7CiAjcHJhZ21hIG1hcmsgLQogCiBA
aW50ZXJmYWNlIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgKFZpZGVvRnVsbHNjcmVlbkNs
aWVudENhbGxiYWNrcykKLS0gKHZvaWQpd2lsbEVudGVyUGljdHVyZUluUGljdHVyZTsKIC0gKHZv
aWQpZGlkRW50ZXJQaWN0dXJlSW5QaWN0dXJlOwotLSAodm9pZClmYWlsZWRUb0VudGVyUGljdHVy
ZUluUGljdHVyZTsKIC0gKHZvaWQpcHJlcGFyZVRvRXhpdFBpY3R1cmVJblBpY3R1cmU7CiAtICh2
b2lkKWRpZEV4aXRQaWN0dXJlSW5QaWN0dXJlOwogQGVuZAogCi1jbGFzcyBXS0Z1bGxTY3JlZW5X
aW5kb3dDb250cm9sbGVyVmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQgOiBXZWJDb3JlOjpWaWRl
b0Z1bGxzY3JlZW5Nb2RlbENsaWVudCB7CitjbGFzcyBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9s
bGVyVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Q2xpZW50IDogcHVibGljIFdlYktpdDo6Vmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Q2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICB2b2lkIHNldFBhcmVudChXS0Z1bGxTY3JlZW5XaW5kb3dDb250
cm9sbGVyICpwYXJlbnQpIHsgbV9wYXJlbnQgPSBwYXJlbnQ7IH0KIAotICAgIHZvaWQgc2V0SW50
ZXJmYWNlKFdlYkNvcmU6OlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0KiBpbnRlcmZhY2Up
Ci0gICAgewotICAgICAgICBpZiAobV9pbnRlcmZhY2UgPT0gaW50ZXJmYWNlKQotICAgICAgICAg
ICAgcmV0dXJuOwotCi0gICAgICAgIGlmIChtX2ludGVyZmFjZSAmJiBtX2ludGVyZmFjZS0+dmlk
ZW9GdWxsc2NyZWVuTW9kZWwoKSkKLSAgICAgICAgICAgIG1faW50ZXJmYWNlLT52aWRlb0Z1bGxz
Y3JlZW5Nb2RlbCgpLT5yZW1vdmVDbGllbnQoKnRoaXMpOwotICAgICAgICBtX2ludGVyZmFjZSA9
IGludGVyZmFjZTsKLSAgICAgICAgaWYgKG1faW50ZXJmYWNlICYmIG1faW50ZXJmYWNlLT52aWRl
b0Z1bGxzY3JlZW5Nb2RlbCgpKQotICAgICAgICAgICAgbV9pbnRlcmZhY2UtPnZpZGVvRnVsbHNj
cmVlbk1vZGVsKCktPmFkZENsaWVudCgqdGhpcyk7Ci0gICAgfQotCi0gICAgV2ViQ29yZTo6Vmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQqIGludGVyZmFjZSgpIGNvbnN0IHsgcmV0dXJuIG1f
aW50ZXJmYWNlLmdldCgpOyB9Ci0KLSAgICB2b2lkIHdpbGxFbnRlclBpY3R1cmVJblBpY3R1cmUo
KSBmaW5hbAotICAgIHsKLSAgICAgICAgW21fcGFyZW50IHdpbGxFbnRlclBpY3R1cmVJblBpY3R1
cmVdOwotICAgIH0KLQotICAgIHZvaWQgZGlkRW50ZXJQaWN0dXJlSW5QaWN0dXJlKCkgZmluYWwK
LSAgICB7Ci0gICAgICAgIFttX3BhcmVudCBkaWRFbnRlclBpY3R1cmVJblBpY3R1cmVdOwotICAg
IH0KLQotICAgIHZvaWQgZmFpbGVkVG9FbnRlclBpY3R1cmVJblBpY3R1cmUoKSBmaW5hbAotICAg
IHsKLSAgICAgICAgW21fcGFyZW50IGZhaWxlZFRvRW50ZXJQaWN0dXJlSW5QaWN0dXJlXTsKLSAg
ICB9Ci0KLSAgICB2b2lkIHByZXBhcmVUb0V4aXRQaWN0dXJlSW5QaWN0dXJlKCkgZmluYWwKK3By
aXZhdGU6CisgICAgdm9pZCBmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUoKSBmaW5hbAogICAg
IHsKICAgICAgICAgW21fcGFyZW50IHByZXBhcmVUb0V4aXRQaWN0dXJlSW5QaWN0dXJlXTsKICAg
ICB9CiAKLSAgICB2b2lkIGRpZEV4aXRQaWN0dXJlSW5QaWN0dXJlKCkgZmluYWwKKyAgICB2b2lk
IGhhc1ZpZGVvSW5QaWN0dXJlSW5QaWN0dXJlRGlkQ2hhbmdlKGJvb2wgdmFsdWUpIGZpbmFsCiAg
ICAgewotICAgICAgICBbbV9wYXJlbnQgZGlkRXhpdFBpY3R1cmVJblBpY3R1cmVdOworICAgICAg
ICBpZiAodmFsdWUpCisgICAgICAgICAgICBbbV9wYXJlbnQgZGlkRW50ZXJQaWN0dXJlSW5QaWN0
dXJlXTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgW21fcGFyZW50IGRpZEV4aXRQaWN0dXJl
SW5QaWN0dXJlXTsKICAgICB9CiAKLXByaXZhdGU6CiAgICAgV0tGdWxsU2NyZWVuV2luZG93Q29u
dHJvbGxlciAqbV9wYXJlbnQgeyBudWxscHRyIH07Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUFWS2l0PiBtX2ludGVyZmFjZTsKIH07CiAKICNwcmFnbWEgbWFy
ayAtCkBAIC01MDMsOCArNDc0LDkgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8VUlQaW5jaEdl
c3R1cmVSZWNvZ25pemVyPiBfaW50ZXJhY3RpdmVQaW5jaERpc21pc3NHZXN0dXJlUmVjb2duaXpl
cjsKICAgICBSZXRhaW5QdHI8V0tGdWxsU2NyZWVuSW50ZXJhY3RpdmVUcmFuc2l0aW9uPiBfaW50
ZXJhY3RpdmVEaXNtaXNzVHJhbnNpdGlvbkNvb3JkaW5hdG9yOwogCi0gICAgV0tGdWxsU2NyZWVu
V2luZG93Q29udHJvbGxlclZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50IF92aWRlb0Z1bGxzY3Jl
ZW5DbGllbnQ7CisgICAgV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlclZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eUNsaWVudCBfdmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Q2xpZW50Owog
ICAgIEJPT0wgX2luUGljdHVyZUluUGljdHVyZTsKKyAgICBCT09MIF9lbnRlckZ1bGxzY3JlZW5O
ZWVkc0V4aXRQaWN0dXJlSW5QaWN0dXJlOwogICAgIEJPT0wgX3JldHVyblRvRnVsbHNjcmVlbkZy
b21QaWN0dXJlSW5QaWN0dXJlOwogCiAgICAgQ0dSZWN0IF9pbml0aWFsRnJhbWU7CkBAIC01Mjgs
NyArNTAwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIHNlbGYuX3dl
YlZpZXcgPSB3ZWJWaWV3OwotICAgIF92aWRlb0Z1bGxzY3JlZW5DbGllbnQuc2V0UGFyZW50KHNl
bGYpOworICAgIF92aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHlDbGllbnQuc2V0UGFyZW50KHNl
bGYpOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CkBAIC01MzgsOCArNTEwLDcgQEAgcHJpdmF0ZToK
ICAgICBbTlNPYmplY3QgY2FuY2VsUHJldmlvdXNQZXJmb3JtUmVxdWVzdHNXaXRoVGFyZ2V0OnNl
bGZdOwogICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2Jz
ZXJ2ZXI6c2VsZl07CiAKLSAgICBfdmlkZW9GdWxsc2NyZWVuQ2xpZW50LnNldEludGVyZmFjZShu
dWxscHRyKTsKLSAgICBfdmlkZW9GdWxsc2NyZWVuQ2xpZW50LnNldFBhcmVudChudWxscHRyKTsK
KyAgICBfdmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Q2xpZW50LnNldFBhcmVudChudWxscHRy
KTsKIAogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KQEAgLTcyNSwxNSArNjk2LDIyIEBAIHByaXZh
dGU6CiAgICAgICAgICAgICBtYW5hZ2VyLT5zZXRBbmltYXRpbmdGdWxsU2NyZWVuKGZhbHNlKTsK
ICAgICAgICAgICAgIHBhZ2UtPnNldFN1cHByZXNzVmlzaWJpbGl0eVVwZGF0ZXMoZmFsc2UpOwog
Ci0gICAgICAgICAgICBhdXRvKiB2aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyID0gcGFnZS0+dmlkZW9G
dWxsc2NyZWVuTWFuYWdlcigpOwotICAgICAgICAgICAgYXV0byogdmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlID0gdmlkZW9GdWxsc2NyZWVuTWFuYWdlciA/IHZpZGVvRnVsbHNjcmVlbk1hbmFnZXIt
PmNvbnRyb2xzTWFuYWdlckludGVyZmFjZSgpIDogbnVsbHB0cjsKLSAgICAgICAgICAgIGlmIChf
cmV0dXJuVG9GdWxsc2NyZWVuRnJvbVBpY3R1cmVJblBpY3R1cmUpIHsKLSAgICAgICAgICAgICAg
ICBBU1NFUlQodmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlKTsKLSAgICAgICAgICAgICAgICBfcmV0
dXJuVG9GdWxsc2NyZWVuRnJvbVBpY3R1cmVJblBpY3R1cmUgPSBOTzsKLSAgICAgICAgICAgICAg
ICBpZiAodmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlKQotICAgICAgICAgICAgICAgICAgICB2aWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2UtPnNldFJlYWR5VG9TdG9wUGljdHVyZUluUGljdHVyZShZRVMp
OwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgX3ZpZGVvRnVsbHNjcmVlbkNs
aWVudC5zZXRJbnRlcmZhY2UodmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlKTsKKyAgICAgICAgICAg
IGlmIChhdXRvKiB2aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyID0gc2VsZi5fdmlkZW9GdWxsc2NyZWVu
TWFuYWdlcikgeworICAgICAgICAgICAgICAgIHZpZGVvRnVsbHNjcmVlbk1hbmFnZXItPnNldENs
aWVudCgmX3ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eUNsaWVudCk7CisgICAgICAgICAgICAg
ICAgYXV0byogdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlID0gdmlkZW9GdWxsc2NyZWVuTWFuYWdl
ciA/IHZpZGVvRnVsbHNjcmVlbk1hbmFnZXItPmNvbnRyb2xzTWFuYWdlckludGVyZmFjZSgpIDog
bnVsbHB0cjsKKyAgICAgICAgICAgICAgICBpZiAodmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlKSB7
CisgICAgICAgICAgICAgICAgICAgIGlmIChfcmV0dXJuVG9GdWxsc2NyZWVuRnJvbVBpY3R1cmVJ
blBpY3R1cmUpCisgICAgICAgICAgICAgICAgICAgICAgICB2aWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2UtPnNldFJlYWR5VG9TdG9wUGljdHVyZUluUGljdHVyZShZRVMpOworICAgICAgICAgICAgICAg
ICAgICBlbHNlIGlmIChfaW5QaWN0dXJlSW5QaWN0dXJlKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoYXV0byogbW9kZWwgPSB2aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UtPnZpZGVvRnVs
bHNjcmVlbk1vZGVsKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZW50ZXJGdWxs
c2NyZWVuTmVlZHNFeGl0UGljdHVyZUluUGljdHVyZSA9IFlFUzsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtb2RlbC0+cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpOworICAgICAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBfcmV0dXJuVG9GdWxsc2NyZWVuRnJvbVBpY3R1cmVJ
blBpY3R1cmUgPSBOTzsKIAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC04Njgs
OCArODQ2LDEwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBwYWdlLT5zZXROZWVkc0RPTVdpbmRv
d1Jlc2l6ZUV2ZW50KCk7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIV9pblBpY3R1cmVJblBp
Y3R1cmUpCi0gICAgICAgICAgICBfdmlkZW9GdWxsc2NyZWVuQ2xpZW50LnNldEludGVyZmFjZShu
dWxscHRyKTsKKyAgICAgICAgaWYgKCFfaW5QaWN0dXJlSW5QaWN0dXJlKSB7CisgICAgICAgICAg
ICBpZiAoYXV0byogdmlkZW9GdWxsc2NyZWVuTWFuYWdlciA9IHNlbGYuX3ZpZGVvRnVsbHNjcmVl
bk1hbmFnZXIpCisgICAgICAgICAgICAgICAgdmlkZW9GdWxsc2NyZWVuTWFuYWdlci0+c2V0Q2xp
ZW50KG51bGxwdHIpOworICAgICAgICB9CiAKICAgICAgICAgX2V4aXRSZXF1ZXN0ZWQgPSBOTzsK
ICAgICAgICAgX2V4aXRpbmdGdWxsU2NyZWVuID0gTk87CkBAIC05MDQsMTEgKzg4NCw2IEBAIHBy
aXZhdGU6CiB7CiAgICAgaWYgKF9mdWxsc2NyZWVuVmlld0NvbnRyb2xsZXIpCiAgICAgICAgIFtf
ZnVsbHNjcmVlblZpZXdDb250cm9sbGVyIHZpZGVvQ29udHJvbHNNYW5hZ2VyRGlkQ2hhbmdlXTsK
LQotICAgIGF1dG8gcGFnZSA9IFtzZWxmLl93ZWJWaWV3IF9wYWdlXTsKLSAgICBhdXRvKiB2aWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyID0gcGFnZSA/IHBhZ2UtPnZpZGVvRnVsbHNjcmVlbk1hbmFnZXIo
KSA6IG51bGxwdHI7Ci0gICAgYXV0byogdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlID0gdmlkZW9G
dWxsc2NyZWVuTWFuYWdlciA/IHZpZGVvRnVsbHNjcmVlbk1hbmFnZXItPmNvbnRyb2xzTWFuYWdl
ckludGVyZmFjZSgpIDogbnVsbHB0cjsKLSAgICBfdmlkZW9GdWxsc2NyZWVuQ2xpZW50LnNldElu
dGVyZmFjZSh2aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UpOwogfQogCiAtICh2b2lkKXBsYWNlaG9s
ZGVyV2lsbE1vdmVUb1N1cGVydmlldzooVUlWaWV3ICopc3VwZXJ2aWV3CkBAIC05MjIsMzcgKzg5
NywyMyBAQCBwcml2YXRlOgogICAgIH0pOwogfQogCi0tICh2b2lkKXdpbGxFbnRlclBpY3R1cmVJ
blBpY3R1cmUKLXsKLSAgICBhdXRvKiBpbnRlcmZhY2UgPSBfdmlkZW9GdWxsc2NyZWVuQ2xpZW50
LmludGVyZmFjZSgpOwotICAgIGlmICghaW50ZXJmYWNlIHx8ICFpbnRlcmZhY2UtPnBpY3R1cmVJ
blBpY3R1cmVXYXNTdGFydGVkV2hlbkVudGVyaW5nQmFja2dyb3VuZCgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBbX2Z1bGxzY3JlZW5WaWV3Q29udHJvbGxlciBzZXRBbmltYXRpbmdWaWV3QWxw
aGE6MF07Ci19Ci0KIC0gKHZvaWQpZGlkRW50ZXJQaWN0dXJlSW5QaWN0dXJlCiB7CiAgICAgX2lu
UGljdHVyZUluUGljdHVyZSA9IFlFUzsKICAgICBbc2VsZiByZXF1ZXN0RXhpdEZ1bGxTY3JlZW5d
OwogfQogCi0tICh2b2lkKWZhaWxlZFRvRW50ZXJQaWN0dXJlSW5QaWN0dXJlCistICh2b2lkKXBy
ZXBhcmVUb0V4aXRQaWN0dXJlSW5QaWN0dXJlCiB7Ci0gICAgYXV0byogaW50ZXJmYWNlID0gX3Zp
ZGVvRnVsbHNjcmVlbkNsaWVudC5pbnRlcmZhY2UoKTsKLSAgICBpZiAoIWludGVyZmFjZSB8fCAh
aW50ZXJmYWNlLT5waWN0dXJlSW5QaWN0dXJlV2FzU3RhcnRlZFdoZW5FbnRlcmluZ0JhY2tncm91
bmQoKSkKKyAgICBpZiAoX2VudGVyRnVsbHNjcmVlbk5lZWRzRXhpdFBpY3R1cmVJblBpY3R1cmUp
CiAgICAgICAgIHJldHVybjsKIAotICAgIFtfZnVsbHNjcmVlblZpZXdDb250cm9sbGVyIHNldEFu
aW1hdGluZ1ZpZXdBbHBoYToxXTsKLX0KKyAgICBhdXRvKiB2aWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2UgPSBzZWxmLl92aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyID8gc2VsZi5fdmlkZW9GdWxsc2NyZWVu
TWFuYWdlci0+Y29udHJvbHNNYW5hZ2VySW50ZXJmYWNlKCkgOiBudWxscHRyOwogCi0tICh2b2lk
KXByZXBhcmVUb0V4aXRQaWN0dXJlSW5QaWN0dXJlCi17Ci0gICAgYXV0byogaW50ZXJmYWNlID0g
X3ZpZGVvRnVsbHNjcmVlbkNsaWVudC5pbnRlcmZhY2UoKTsKLSAgICBpZiAoIWludGVyZmFjZSkK
KyAgICBpZiAoIXZpZGVvRnVsbHNjcmVlbkludGVyZmFjZSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgaW50ZXJmYWNlLT5zZXRSZWFkeVRvU3RvcFBpY3R1cmVJblBpY3R1cmUoTk8pOworICAgIHZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZS0+c2V0UmVhZHlUb1N0b3BQaWN0dXJlSW5QaWN0dXJlKE5P
KTsKICAgICBfcmV0dXJuVG9GdWxsc2NyZWVuRnJvbVBpY3R1cmVJblBpY3R1cmUgPSBZRVM7CiAK
ICAgICBpZiAoIV9leGl0aW5nRnVsbFNjcmVlbikKQEAgLTk2NCw4ICs5MjUsMTEgQEAgcHJpdmF0
ZToKIC0gKHZvaWQpZGlkRXhpdFBpY3R1cmVJblBpY3R1cmUKIHsKICAgICBfaW5QaWN0dXJlSW5Q
aWN0dXJlID0gTk87Ci0gICAgaWYgKCFfcmV0dXJuVG9GdWxsc2NyZWVuRnJvbVBpY3R1cmVJblBp
Y3R1cmUgJiYgIVtzZWxmIGlzRnVsbFNjcmVlbl0pCi0gICAgICAgIF92aWRlb0Z1bGxzY3JlZW5D
bGllbnQuc2V0SW50ZXJmYWNlKG51bGxwdHIpOworICAgIF9lbnRlckZ1bGxzY3JlZW5OZWVkc0V4
aXRQaWN0dXJlSW5QaWN0dXJlID0gTk87CisgICAgaWYgKCFbc2VsZiBpc0Z1bGxTY3JlZW5dKSB7
CisgICAgICAgIGlmIChhdXRvKiB2aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyID0gc2VsZi5fdmlkZW9G
dWxsc2NyZWVuTWFuYWdlcikKKyAgICAgICAgICAgIHZpZGVvRnVsbHNjcmVlbk1hbmFnZXItPnNl
dENsaWVudChudWxscHRyKTsKKyAgICB9CiB9CiAKICNwcmFnbWEgbWFyayAtCkBAIC0xMTQxLDYg
KzExMDUsMTMgQEAgcHJpdmF0ZToKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAorLSAoV2ViS2l0
OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkqKV92aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyCit7
CisgICAgaWYgKGF1dG8gcGFnZSA9IFtzZWxmLl93ZWJWaWV3IF9wYWdlXSkKKyAgICAgICAgcmV0
dXJuIHBhZ2UtPnZpZGVvRnVsbHNjcmVlbk1hbmFnZXIoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsK
K30KKwogLSAodm9pZClfc3RhcnRUb0Rpc21pc3NGdWxsc2NyZWVuQ2hhbmdlZDooaWQpc2VuZGVy
CiB7CiAgICAgaWYgKF9pbkludGVyYWN0aXZlRGlzbWlzcykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408510</attachid>
            <date>2020-09-10 21:34:41 -0700</date>
            <delta_ts>2020-09-14 13:27:38 -0700</delta_ts>
            <desc>Fix an api test failure on Mac</desc>
            <filename>bug-216287-20200910213440.patch</filename>
            <type>text/plain</type>
            <size>35290</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2NzUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGE5NDNhYzVkZTQ0ZWEx
MzRiNDM5ZTc3MGI3MTUwMmM5MzBhNDc5Zi4uNDBiYjg2OTU2Nzk0Njc0ZGIxMWYyNWQxOTQ2OGQ2
MDJkYmVjMDkxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDIwLTA5LTEwICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV0dXJuaW5nIHRvIGVsZW1l
bnQgZnVsbHNjcmVlbiBmcm9tIFBpUCBpcyBub3Qgc3RhYmxlIHVuZGVyIHN0cmVzcyB0ZXN0cwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2Mjg3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci5oOgorICAgICAgICBEZWxldGUg
cHJlcGFyZVRvRXhpdEZ1bGxzY3JlZW4oKS4KKworICAgICAgICAqIHBsYXRmb3JtL2lvcy9WaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9WaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbToKKyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUFWS2l0OjpWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdCk6CisgICAgICAgIChW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6cHJlcGFyZUZvclBpY3R1cmVJblBpY3R1cmVT
dG9wKToKKyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpkaWRTdG9wUGlj
dHVyZUluUGljdHVyZSk6CisgICAgICAgIChWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6
c3RvcFBpY3R1cmVJblBpY3R1cmVUaW1lckZpcmVkKToKKyAgICAgICAgKFZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0OjpzZXRSZWFkeVRvU3RvcFBpY3R1cmVJblBpY3R1cmUpOgorICAgICAg
ICBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdCBleHBlY3RzIGFuIGVsZW1lbnQgZW50ZXJz
IGZ1bGxzY3JlZW4gYW5kIGZpZ3VyZSBvdXQgdGhlCisgICAgICAgIGxvY2F0aW9uIGFuZCBzaXpl
IG9mIHRoZSB2aWRlbyBlbGVtZW50IGFmdGVyIHRoYXQsIHdoaWNoIHdpbGwgYmUgdXNlZCBieSBB
VktpdCBmb3IgdGhlCisgICAgICAgIGV4aXRpbmcgcGljdHVyZS1pbi1waWN0dXJlIGFuaW1hdGlv
bi4gSG93ZXZlciwgdGhlIGVudGVyaW5nIGZ1bGxzY3JlZW4gbWF5IHRha2UgYSBsb25nCisgICAg
ICAgIHRpbWUgYW5kIEFWS2l0IHdpbGwgc3RhcnQgZXhpdGluZyBwaWN0dXJlLWluLXBpY3R1cmUg
YmVmb3JlIHRoZSBlbnRlcmluZyBmdWxsc2NyZWVuCisgICAgICAgIHRyYW5zaXRpb24gaXMgZG9u
ZS4gV2UgbmVlZCB0byBhZGQgcHJvdGVjdGlvbiBmb3Igc3VjaCBhIHNjZW5hcmlvLiBUaGlzIHBh
dGNoIGFkZHMKKyAgICAgICAgYSB0aW1lciAobV9zdG9wUGljdHVyZUluUGljdHVyZVRpbWVyKSBm
b3IgdGhpcyBwdXJwb3NlLiBUaGlzIHBhdGNoIGFsc28gbWFrZXMgc3VyZQorICAgICAgICBWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdCB3aWxsIGNhbGwgZGlkRXhpdFBpY3R1cmVJblBpY3R1
cmUoKSBwcm9wZXJseS4KKworICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyQVZLaXQubW06CisgICAgICAgIERlbGV0ZSBwcmVwYXJlVG9FeGl0RnVsbHNj
cmVlbigpLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6
cHJlcGFyZWRUb1JldHVyblRvSW5saW5lKTogVGhpcyBmdW5jdGlvbgorICAgICAgICBpcyBub3Qg
dXNlZCBvbiBNYWMuCisKIDIwMjAtMDktMDggIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29t
PgogCiAgICAgICAgIFtXZWJJRExdIEFkZCBzdXBwb3J0IGZvciBwYXJ0aWFsIGludGVyZmFjZSBt
aXhpbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggMDM4YWJhMTllZWMwYzNjOTE2Zjk0ZjcyZmYzMGZjZTVkOTIxNTM4
YS4uNjBlOWI3MTRkZWM2Zjg5MzVmZGVhNzliNmUyMDA4MmE4MDY3ZmU5YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw2MiBAQAorMjAyMC0wOS0xMCAgUGVuZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29t
PgorCisgICAgICAgIFJldHVybmluZyB0byBlbGVtZW50IGZ1bGxzY3JlZW4gZnJvbSBQaVAgaXMg
bm90IHN0YWJsZSB1bmRlciBzdHJlc3MgdGVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjI4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHlDbGllbnQ6On5WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHlDbGllbnQpOgorICAgICAgICAo
V2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnNldENsaWVudCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbToKKyAgICAg
ICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpkaWRFbnRlclBpY3R1cmVJ
blBpY3R1cmUpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6
OmRpZEV4aXRQaWN0dXJlSW5QaWN0dXJlKToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2Ny
ZWVuTW9kZWxDb250ZXh0Ojp3aWxsRW50ZXJQaWN0dXJlSW5QaWN0dXJlKToKKyAgICAgICAgKFdl
YktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpoYXNWaWRlb0luUGljdHVyZUluUGlj
dHVyZURpZENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eTo6ZnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lKToKKyAgICAgICAgKFdlYktpdDo6Vmlk
ZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpwcmVwYXJlVG9FeGl0RnVsbHNjcmVlbik6IERlbGV0
ZWQuCisgICAgICAgIEFkZCB0aGUgaW50ZXJmYWNlIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eUNsaWVudCwgd2hpY2ggaXMgdXNlZCBieSBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyCisg
ICAgICAgIHRvIGltcGxlbWVudCB0aGUgc3VwcG9ydCBvZiAicmV0dXJuaW5nIHRvIGVsZW1lbnQg
ZnVsbHNjcmVlbiBmcm9tIFBpUCIuIFVzaW5nIFZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50Cisg
ICAgICAgIGZvciB0aGF0IHB1cnBvc2UgaXMgbm90IGEgZ29vZCBpZGVhIGJlY2F1c2UgdGhlIGlu
c3RhbmNlIG9ic2VydmVkIGJ5IFZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50IG1heSBiZQorICAg
ICAgICBkZXN0cm95ZWQgd2hlbiBhIHZpZGVvIGVsZW1lbnQgaXMgZXhpdGluZyBwaWN0dXJlLWlu
LXBpY3R1cmUgaWYgd2UgZG9uJ3QgY2FsbAorICAgICAgICBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk6OmFkZENsaWVudEZvckNvbnRleHQoKSBhbmQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5OjpyZW1vdmVDbGllbnRGb3JDb250ZXh0KCkKKyAgICAgICAgcHJvcGVybHkuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxl
cklPUy5tbToKKyAgICAgICAgKC1bV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlciBpbml0V2l0
aFdlYlZpZXc6XSk6CisgICAgICAgICgtW1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgZGVh
bGxvY10pOgorICAgICAgICAoLVtXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyIGJlZ2FuRW50
ZXJGdWxsU2NyZWVuV2l0aEluaXRpYWxGcmFtZTpmaW5hbEZyYW1lOl0pOgorICAgICAgICAoLVtX
S0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyIF9jb21wbGV0ZWRFeGl0RnVsbFNjcmVlbl0pOgor
ICAgICAgICAoLVtXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyIHZpZGVvQ29udHJvbHNNYW5h
Z2VyRGlkQ2hhbmdlXSk6CisgICAgICAgICgtW1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIg
cHJlcGFyZVRvRXhpdFBpY3R1cmVJblBpY3R1cmVdKToKKyAgICAgICAgKC1bV0tGdWxsU2NyZWVu
V2luZG93Q29udHJvbGxlciBkaWRFeGl0UGljdHVyZUluUGljdHVyZV0pOgorICAgICAgICAoLVtX
S0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyIF92aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyXSk6Cisg
ICAgICAgIChXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyVmlkZW9GdWxsc2NyZWVuTW9kZWxD
bGllbnQ6OnNldFBhcmVudCk6IERlbGV0ZWQuCisgICAgICAgIChXS0Z1bGxTY3JlZW5XaW5kb3dD
b250cm9sbGVyVmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQ6OnNldEludGVyZmFjZSk6IERlbGV0
ZWQuCisgICAgICAgIChXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyVmlkZW9GdWxsc2NyZWVu
TW9kZWxDbGllbnQ6OmludGVyZmFjZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLRnVs
bFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgd2lsbEVudGVyUGljdHVyZUluUGljdHVyZV0pOiBEZWxl
dGVkLgorICAgICAgICAoLVtXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyIGZhaWxlZFRvRW50
ZXJQaWN0dXJlSW5QaWN0dXJlXSk6IERlbGV0ZWQuCisgICAgICAgIFVzZSBWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHlDbGllbnQgaW5zdGVhZCBvZiBWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVu
dCB0byBpbXBsZW1lbnQKKyAgICAgICAgdGhlIHN1cHBvcnQgb2YgInJldHVybmluZyB0byBlbGVt
ZW50IGZ1bGxzY3JlZW4gZnJvbSBQaVAiIG9uIGlPUy4KKyAgICAgICAgQSB1c2VyIGNhbiAicmV0
dXJuIHRvIGVsZW1lbnQgZnVsbHNjcmVlbiBmcm9tIFBpUCIgYnkgY2xpY2tpbmcgdGhlICJyZXR1
cm4gdG8gZnVsbHNjcmVlbiIKKyAgICAgICAgYnV0dG9uIG9uIHRoZSBQaVAgd2luZG93LCBvciBi
eSBjbGlja2luZyB0aGUgImZ1bGxzY3JlZW4iIGJ1dHRvbiBvbiB0aGUgcGFnZS4gVGhpcyBwYXRj
aAorICAgICAgICBhZGRzIHN1cHBvcnQgZm9yIHRoZSBsYXR0ZXIgY2FzZS4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbToKKyAgICAgICAg
KC1bV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlciBpbml0V2l0aFdpbmRvdzp3ZWJWaWV3OnBh
Z2U6XSk6CisgICAgICAgICgtW1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgZGVhbGxvY10p
OgorICAgICAgICAoLVtXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyIHZpZGVvQ29udHJvbHNN
YW5hZ2VyRGlkQ2hhbmdlXSk6CisgICAgICAgICgtW1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xs
ZXIgZGlkRXhpdFBpY3R1cmVJblBpY3R1cmVdKToKKyAgICAgICAgKC1bV0tGdWxsU2NyZWVuV2lu
ZG93Q29udHJvbGxlciB3aW5kb3dEaWRFbnRlckZ1bGxTY3JlZW46XSk6CisgICAgICAgICgtW1dL
RnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgX3ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJdKToKKyAg
ICAgICAgKFdlYktpdDo6V0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlclZpZGVvRnVsbHNjcmVl
bk1vZGVsQ2xpZW50OjpzZXRQYXJlbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXS0Z1
bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyVmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQ6OnNldElu
dGVyZmFjZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldLRnVsbFNjcmVlbldpbmRvd0Nv
bnRyb2xsZXJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudDo6aW50ZXJmYWNlIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgVXNlIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eUNsaWVudCBpbnN0
ZWFkIG9mIFZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50IHRvIGltcGxlbWVudCB0aGUKKyAgICAg
ICAgc3VwcG9ydCBvZiAiZXhpdGluZyBmdWxsc2NyZWVuIGFmdGVyIGVudGVyaW5nIFBpUCIgb24g
TWFjLiBXZSBtYXkgaW1wbGVtZW50IHRoZSBzdXBwb3J0IG9mCisgICAgICAgICJyZXR1cm5pbmcg
dG8gZWxlbWVudCBmdWxsc2NyZWVuIGZyb20gUGlQIiBvbiBNYWMgaW4gdGhlIGZ1dHVyZS4KKwog
MjAyMC0wOS0wOCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgog
CiAgICAgICAgIE51bGwgY2hlY2sgbV9sYXllckhvc3RpbmdDb250ZXh0IGluIFRpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhOjpzZW5kRGlkRmlyc3RMYXllckZsdXNoSWZOZWVkZWQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbkNoYW5n
ZU9ic2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3Jl
ZW5DaGFuZ2VPYnNlcnZlci5oCmluZGV4IDU0ZWVmMzk5OGI4YzIwYWIzNWFhYjg2N2ZjNDEzOGQw
MTFkNDNkODIuLmY0OTEyNDYyN2U2YWI1NzJlYzc5MmYwMjdjYzNmOWM4N2M2YjhhNzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbkNoYW5n
ZU9ic2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxs
c2NyZWVuQ2hhbmdlT2JzZXJ2ZXIuaApAQCAtNDEsNyArNDEsNiBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHdpbGxFeGl0RnVsbHNjcmVlbigpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlk
RXhpdEZ1bGxzY3JlZW4oKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENsZWFudXBGdWxsc2Ny
ZWVuKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9FeGl0RnVsbHNjcmVlbigpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lKCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBmdWxsc2NyZWVuV2lsbFJldHVyblRvSW5saW5lKCkgPSAwOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0LmgKaW5kZXggOGJlZjdlNGM2MDFkOTZkMjk3NzMwYzM5ZDQ4MmI2
ZDRlMmFiYWNjNi4uNTI4MDMwM2U0ODhhZTIzODBhNTU5Y2Y1YTExZWU3MWQyYTdlNTkzZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0LmgKQEAgLTE2Niw2ICsxNjYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
dm9pZCByZXR1cm5Ub1N0YW5kYnkoKTsKICAgICB2b2lkIGRvRW50ZXJGdWxsc2NyZWVuKCk7CiAg
ICAgdm9pZCB3YXRjaGRvZ1RpbWVyRmlyZWQoKTsKKyAgICB2b2lkIHN0b3BQaWN0dXJlSW5QaWN0
dXJlVGltZXJGaXJlZCgpOwogICAgIFdlYkFWUGxheWVyQ29udHJvbGxlciAqcGxheWVyQ29udHJv
bGxlcigpIGNvbnN0OwogCiAgICAgUmVmPFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0PiBt
X3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZTsKQEAgLTE4Myw2ICsxODQsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgUmV0YWluUHRyPFdlYkFWUGxheWVyTGF5ZXJWaWV3PiBtX3BsYXllckxheWVyVmlldzsK
ICAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+IG1fcHJlcGFyZVRvSW5saW5lQ2FsbGJhY2s7
CiAgICAgUnVuTG9vcDo6VGltZXI8VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ+IG1fd2F0
Y2hkb2dUaW1lcjsKKyAgICBSdW5Mb29wOjpUaW1lcjxWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdD4gbV9zdG9wUGljdHVyZUluUGljdHVyZVRpbWVyOwogICAgIEZsb2F0UmVjdCBtX2lubGlu
ZVJlY3Q7CiAgICAgUm91dGVTaGFyaW5nUG9saWN5IG1fcm91dGVTaGFyaW5nUG9saWN5IHsgUm91
dGVTaGFyaW5nUG9saWN5OjpEZWZhdWx0IH07CiAgICAgU3RyaW5nIG1fcm91dGluZ0NvbnRleHRV
SUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQVZLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KaW5kZXggMzYxYmU5NGMxMjI1ZjkxYTJmNDA3NGI3
OTZiNTA0N2U1ZWE4NzZlMC4uMjMyMDRkYWE3ZTA0MDhlNzY3YTdhNTFlODU2MmVhYmFlYzRlMzFl
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbQpAQCAtODUsNiArODUsNyBAQCBzdGF0aWMgY29u
c3QgY2hhciogYm9vbFN0cmluZyhib29sIHZhbCkKICNlbmRpZgogCiBzdGF0aWMgY29uc3QgU2Vj
b25kcyBkZWZhdWx0V2F0Y2hkb2dUaW1lckludGVydmFsIHsgMV9zIH07CitzdGF0aWMgY29uc3Qg
U2Vjb25kcyBzdG9wUGljdHVyZUluUGljdHVyZVRpbWVySW50ZXJ2YWwgeyAxX3MgfTsKIHN0YXRp
YyBib29sIGlnbm9yZVdhdGNoZG9nRm9yRGVidWdnaW5nID0gZmFsc2U7CiAKIEBpbnRlcmZhY2Ug
QVZQbGF5ZXJWaWV3Q29udHJvbGxlciAoRGV0YWlscykKQEAgLTgxMiw2ICs4MTMsNyBAQCBWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQo
UGxheWJhY2tTZXNzaW9uSW50ZQogICAgIDogbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UocGxh
eWJhY2tTZXNzaW9uSW50ZXJmYWNlKQogICAgICwgbV9wbGF5ZXJWaWV3Q29udHJvbGxlckRlbGVn
YXRlKGFkb3B0TlMoW1tXZWJBVlBsYXllclZpZXdDb250cm9sbGVyRGVsZWdhdGUgYWxsb2NdIGlu
aXRdKSkKICAgICAsIG1fd2F0Y2hkb2dUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6d2F0Y2hkb2dUaW1lckZpcmVkKQorICAgICwgbV9z
dG9wUGljdHVyZUluUGljdHVyZVRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUFWS2l0OjpzdG9wUGljdHVyZUluUGljdHVyZVRpbWVyRmlyZWQpCiB7
CiB9CiAKQEAgLTEwODQsNyArMTA4Niw2IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQ6OnByZXBhcmVGb3JQaWN0dXJlSW5QaWN0dXJlU3RvcChXVEY6OkZ1bmN0aW9uCiAgICAg
bV9wcmVwYXJlVG9JbmxpbmVDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOwogICAgIGlmICht
X2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcikgewogICAgICAgICBtX2Z1bGxzY3JlZW5DaGFuZ2VP
YnNlcnZlci0+ZnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lKCk7Ci0gICAgICAgIG1fZnVsbHNj
cmVlbkNoYW5nZU9ic2VydmVyLT5wcmVwYXJlVG9FeGl0RnVsbHNjcmVlbigpOwogICAgICAgICBp
ZiAobV9yZWFkeVRvU3RvcFBpY3R1cmVJblBpY3R1cmUpCiAgICAgICAgICAgICBtX2Z1bGxzY3Jl
ZW5DaGFuZ2VPYnNlcnZlci0+ZnVsbHNjcmVlbldpbGxSZXR1cm5Ub0lubGluZSgpOwogICAgIH0K
QEAgLTExNzYsMjUgKzExNzcsMzcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktp
dDo6ZGlkU3RvcFBpY3R1cmVJblBpY3R1cmUoKQogCiAgICAgICAgIGlmIChtX2V4aXRGdWxsc2Ny
ZWVuTmVlZHNFeGl0UGljdHVyZUluUGljdHVyZSkKICAgICAgICAgICAgIGRvRXhpdEZ1bGxzY3Jl
ZW4oKTsKKyAgICAgICAgZWxzZSBpZiAobV9leGl0aW5nUGljdHVyZUluUGljdHVyZSkgeworICAg
ICAgICAgICAgbV9leGl0aW5nUGljdHVyZUluUGljdHVyZSA9IGZhbHNlOworICAgICAgICAgICAg
aWYgKG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwpCisgICAgICAgICAgICAgICAgbV92aWRlb0Z1bGxz
Y3JlZW5Nb2RlbC0+ZGlkRXhpdFBpY3R1cmVJblBpY3R1cmUoKTsKKyAgICAgICAgfQogCiAgICAg
ICAgIGlmIChtX2VudGVyRnVsbHNjcmVlbk5lZWRzRXhpdFBpY3R1cmVJblBpY3R1cmUpCiAgICAg
ICAgICAgICBkb0VudGVyRnVsbHNjcmVlbigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCisg
ICAgaWYgKCFtX3JlYWR5VG9TdG9wUGljdHVyZUluUGljdHVyZSkgeworICAgICAgICBpZiAoIW1f
c3RvcFBpY3R1cmVJblBpY3R1cmVUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICAgICAgbV9zdG9w
UGljdHVyZUluUGljdHVyZVRpbWVyLnN0YXJ0T25lU2hvdChzdG9wUGljdHVyZUluUGljdHVyZVRp
bWVySW50ZXJ2YWwpOworICAgIH0gZWxzZQorICAgICAgICBjbGVhck1vZGUoSFRNTE1lZGlhRWxl
bWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUluUGljdHVyZSk7CisKICAgICBb
bV9wbGF5ZXJMYXllclZpZXcgc2V0QmFja2dyb3VuZENvbG9yOmNsZWFyVUlDb2xvcigpXTsKICAg
ICBbW21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10gc2V0QmFja2dyb3VuZENvbG9yOmNsZWFy
VUlDb2xvcigpXTsKIAotICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsKQotICAgICAgICBt
X3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5yZXF1ZXN0RnVsbHNjcmVlbk1vZGUoSFRNTE1lZGlhRWxl
bWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSk7Ci0KLSAgICBjbGVhck1vZGUoSFRN
TE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUluUGljdHVyZSk7
Ci0KICAgICBpZiAobV9lbnRlckZ1bGxzY3JlZW5OZWVkc0V4aXRQaWN0dXJlSW5QaWN0dXJlKQog
ICAgICAgICBkb0VudGVyRnVsbHNjcmVlbigpOwogCiAgICAgaWYgKG1fZXhpdEZ1bGxzY3JlZW5O
ZWVkc0V4aXRQaWN0dXJlSW5QaWN0dXJlKQogICAgICAgICBkb0V4aXRGdWxsc2NyZWVuKCk7Cisg
ICAgZWxzZSBpZiAobV9leGl0aW5nUGljdHVyZUluUGljdHVyZSkgeworICAgICAgICBtX2V4aXRp
bmdQaWN0dXJlSW5QaWN0dXJlID0gZmFsc2U7CisKKyAgICAgICAgaWYgKG1fdmlkZW9GdWxsc2Ny
ZWVuTW9kZWwpCisgICAgICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5kaWRFeGl0UGlj
dHVyZUluUGljdHVyZSgpOworICAgIH0KIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VBVktpdDo6cHJlcGFyZUZvclBpY3R1cmVJblBpY3R1cmVTdG9wV2l0aENvbXBsZXRpb25IYW5k
bGVyKHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoQk9PTCByZXN0b3JlZCkpCkBAIC0xNTcyLDYg
KzE1ODUsMTMgQEAgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdDo6d2F0Y2hkb2dUaW1lckZpcmVkKCkKICAgICBbW21fcGxheWVyVmlld0Nv
bnRyb2xsZXIgdmlld10gc2V0SGlkZGVuOllFU107CiB9CiAKK3ZvaWQgVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQ6OnN0b3BQaWN0dXJlSW5QaWN0dXJlVGltZXJGaXJlZCgpCit7CisgICAg
TE9HKEZ1bGxzY3JlZW4sICJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c3RvcFBpY3R1
cmVJblBpY3R1cmVUaW1lckZpcmVkKCVwKSAtIG5vdCByZWFkeSB0byBzdG9wIHBpY3R1cmUtaW4t
cGljdHVyZSBpbiAlZ3M7IGZvcmNpbmcgc3RvcCBwaWN0dXJlLWluLXBpY3R1cmUuIiwgdGhpcywg
c3RvcFBpY3R1cmVJblBpY3R1cmVUaW1lckludGVydmFsLnZhbHVlKCkpOworICAgIG1fc3RvcFBp
Y3R1cmVJblBpY3R1cmVUaW1lci5zdG9wKCk7CisgICAgY2xlYXJNb2RlKEhUTUxNZWRpYUVsZW1l
bnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1cmUpOworfQorCiB2b2lk
IFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRNb2RlKEhUTUxNZWRpYUVsZW1lbnRF
bnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlKQogewogICAgIGlmICgobV9jdXJyZW50TW9k
ZS5tb2RlKCkgJiBtb2RlKSA9PSBtb2RlKQpAQCAtMTYwNSw4ICsxNjI1LDE1IEBAIHZvaWQgVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldFJlYWR5VG9TdG9wUGljdHVyZUluUGljdHVy
ZShCT09MIHJlYWR5KQogICAgICAgICByZXR1cm47CiAKICAgICBtX3JlYWR5VG9TdG9wUGljdHVy
ZUluUGljdHVyZSA9IHJlYWR5OwotICAgIGlmIChtX3JlYWR5VG9TdG9wUGljdHVyZUluUGljdHVy
ZSAmJiBtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcikKLSAgICAgICAgbV9mdWxsc2NyZWVuQ2hh
bmdlT2JzZXJ2ZXItPmZ1bGxzY3JlZW5XaWxsUmV0dXJuVG9JbmxpbmUoKTsKKyAgICBpZiAobV9y
ZWFkeVRvU3RvcFBpY3R1cmVJblBpY3R1cmUpIHsKKyAgICAgICAgaWYgKG1fc3RvcFBpY3R1cmVJ
blBpY3R1cmVUaW1lci5pc0FjdGl2ZSgpKSB7CisgICAgICAgICAgICBtX3N0b3BQaWN0dXJlSW5Q
aWN0dXJlVGltZXIuc3RvcCgpOworICAgICAgICAgICAgY2xlYXJNb2RlKEhUTUxNZWRpYUVsZW1l
bnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1cmUpOworICAgICAgICB9
CisKKyAgICAgICAgaWYgKG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKQorICAgICAgICAgICAg
bV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXItPmZ1bGxzY3JlZW5XaWxsUmV0dXJuVG9JbmxpbmUo
KTsKKyAgICB9CiB9CiAKIHN0YXRpYyBPcHRpb25hbDxib29sPiBpc1BpY3R1cmVJblBpY3R1cmVT
dXBwb3J0ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQppbmRleCBmODMxZDZiODQ0
OGEzZDg0NGYyNGM4YjQ4ZTBmY2JlYmZkMDkwN2RhLi44MjM3Mzg3ODljMWY4MDYxYWRiNGJjNzdm
YWE0NzE2OTdjOTIwNTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0KQEAgLTEy
OCw3ICsxMjgsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbEV4aXRGdWxsc2NyZWVuKCkgZmlu
YWw7CiAgICAgdm9pZCBkaWRFeGl0RnVsbHNjcmVlbigpIGZpbmFsOwogICAgIHZvaWQgZGlkQ2xl
YW51cEZ1bGxzY3JlZW4oKSBmaW5hbDsKLSAgICB2b2lkIHByZXBhcmVUb0V4aXRGdWxsc2NyZWVu
KCkgZmluYWwgeyB9CiAgICAgdm9pZCBmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUoKSBmaW5h
bCB7IH0KICAgICB2b2lkIGZ1bGxzY3JlZW5XaWxsUmV0dXJuVG9JbmxpbmUoKSBmaW5hbDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1ZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9WaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VNYWMubW0KaW5kZXggMzNmNGQ0YThmMjRmNTlhMTM3MTFiYjBiNWU0MDAyOGU2
YjAyZThlYS4uMzBiMTZmY2U1MzFmZWFlZjk4ODliMWY5MTFkZjdlOGRlNGVjZmM2YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlTWFjLm1tCkBAIC01NTIsMTUgKzU1Miw5IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBi
b29sU3RyaW5nKGJvb2wgdmFsKQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6
cHJlcGFyZWRUb1JldHVyblRvSW5saW5lKGJvb2wgdmlzaWJsZSwgY29uc3QgSW50UmVjdCYgaW5s
aW5lUmVjdCwgTlNXaW5kb3cgKnBhcmVudFdpbmRvdykKIHsKLSAgICBMT0coRnVsbHNjcmVlbiwg
IlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6cHJlcGFyZWRUb1JldHVyblRvSW5saW5lKCVw
KSwgdmlzaWJsZTolcywgaW5saW5lUmVjdDp7JWQsICVkLCAlZCwgJWR9LCBwYXJlbnRXaW5kb3c6
JXAiLCB0aGlzLCBib29sU3RyaW5nKHZpc2libGUpLCBpbmxpbmVSZWN0LngoKSwgaW5saW5lUmVj
dC55KCksIGlubGluZVJlY3Qud2lkdGgoKSwgaW5saW5lUmVjdC5oZWlnaHQoKSwgcGFyZW50V2lu
ZG93KTsKLQotICAgIGlmICghdmlzaWJsZSkgewotICAgICAgICBbbV93ZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VPYmpDIGV4aXRQSVBdOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
QVNTRVJUKHBhcmVudFdpbmRvdyk7Ci0gICAgW21fd2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
T2JqQyBleGl0UElQQW5pbWF0aW5nVG9SZWN0OihOU1JlY3QpaW5saW5lUmVjdCBpbldpbmRvdzpw
YXJlbnRXaW5kb3ddOworICAgIFVOVVNFRF9QQVJBTSh2aXNpYmxlKTsKKyAgICBVTlVTRURfUEFS
QU0oaW5saW5lUmVjdCk7CisgICAgVU5VU0VEX1BBUkFNKHBhcmVudFdpbmRvdyk7CiB9CiAKIHZv
aWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjpleHRlcm5hbFBsYXliYWNrQ2hhbmdlZChi
b29sIGVuYWJsZWQsIFBsYXliYWNrU2Vzc2lvbk1vZGVsOjpFeHRlcm5hbFBsYXliYWNrVGFyZ2V0
VHlwZSwgY29uc3QgU3RyaW5nJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmgKaW5kZXggYWQ4ZWZlM2Vh
NWFkMGY0Zjk0NmQ3YTRhNTU5NDA0Yjc2NDRjNTU5MC4uODBhMDkzMzNjY2I1NmZhYmY1NGY1MzJm
ZGQ2NzRiMjI0N2VlOTA5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmgKQEAgLTExMSw3ICsxMTEs
NiBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbEV4aXRGdWxsc2NyZWVuKCkgZmluYWw7CiAgICAg
dm9pZCBkaWRFeGl0RnVsbHNjcmVlbigpIGZpbmFsOwogICAgIHZvaWQgZGlkQ2xlYW51cEZ1bGxz
Y3JlZW4oKSBmaW5hbDsKLSAgICB2b2lkIHByZXBhcmVUb0V4aXRGdWxsc2NyZWVuKCkgZmluYWw7
CiAgICAgdm9pZCBmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUoKSBmaW5hbDsKICAgICB2b2lk
IGZ1bGxzY3JlZW5XaWxsUmV0dXJuVG9JbmxpbmUoKSBmaW5hbDsKIApAQCAtMTI0LDYgKzEyMywx
NCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9oYXNWaWRlbyB7IGZhbHNlIH07CiB9OwogCitjbGFz
cyBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHlDbGllbnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQ
dHI8VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Q2xpZW50PiB7CitwdWJsaWM6CisgICAgdmly
dHVhbCB+VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Q2xpZW50KCkgeyB9OworCisgICAgdmly
dHVhbCB2b2lkIGZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZSgpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgaGFzVmlkZW9JblBpY3R1cmVJblBpY3R1cmVEaWRDaGFuZ2UoYm9vbCB2YWx1ZSkgPSAw
OworfTsKKwogY2xhc3MgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5IDogcHVibGljIFJlZkNv
dW50ZWQ8VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5PiwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VS
ZWNlaXZlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk+IGNyZWF0ZShXZWJQYWdlUHJveHkmLCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkm
KTsKQEAgLTE0NCw2ICsxNTEsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1BsYXlpbmdWaWRlb0lu
RW5oYW5jZWRGdWxsc2NyZWVuKCkgY29uc3Q7CiAKICAgICBQbGF0Zm9ybVZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZSogY29udHJvbHNNYW5hZ2VySW50ZXJmYWNlKCk7CisgICAgdm9pZCBzZXRDbGll
bnQoVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Q2xpZW50KiBjbGllbnQpIHsgbV9jbGllbnQg
PSBtYWtlV2Vha1B0cihjbGllbnQpOyB9CiAKICAgICB2b2lkIGZvckVhY2hTZXNzaW9uKEZ1bmN0
aW9uPHZvaWQoV2ViQ29yZTo6VmlkZW9GdWxsc2NyZWVuTW9kZWwmLCBQbGF0Zm9ybVZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZSYpPiYmKTsKIApAQCAtMjAyLDYgKzIxMCw3IEBAIHByaXZhdGU6CiAg
ICAgSGFzaE1hcDxQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciwgTW9kZWxJbnRlcmZh
Y2VUdXBsZT4gbV9jb250ZXh0TWFwOwogICAgIFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlm
aWVyIG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkOwogICAgIEhhc2hNYXA8UGxheWJhY2tTZXNz
aW9uQ29udGV4dElkZW50aWZpZXIsIGludD4gbV9jbGllbnRDb3VudHM7CisgICAgV2Vha1B0cjxW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHlDbGllbnQ+IG1fY2xpZW50OwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0KaW5kZXggODEzNzVlMzg2ZDAz
YTZmMDdlN2E4ODcwNjQ5MTFjMmQ1YmY0MjIyYS4uZjBjNWJhZjMzMzZmNTNhZmFhOTg3MjUyY2Vj
YWMyZjU4MjUxNDA1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQpAQCAtMjg4LDI1ICsyODgs
MjIgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OnJlcXVlc3RSb3V0ZVNoYXJp
bmdQb2xpY3lBbmRDb250ZXh0VUlEKENvbXBsZXQKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
V2ViQ29yZTo6Um91dGVTaGFyaW5nUG9saWN5OjpEZWZhdWx0LCBlbXB0eVN0cmluZygpKTsKIH0K
IAotdm9pZCBWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OnByZXBhcmVUb0V4aXRGdWxsc2Ny
ZWVuKCkKK3ZvaWQgVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpkaWRFbnRlclBpY3R1cmVJ
blBpY3R1cmUoKQogewotICAgIGZvciAoYXV0byYgY2xpZW50IDogY29weVRvVmVjdG9yKG1fY2xp
ZW50cykpCi0gICAgICAgIGNsaWVudC0+cHJlcGFyZVRvRXhpdFBpY3R1cmVJblBpY3R1cmUoKTsK
KyAgICBpZiAobV9tYW5hZ2VyKQorICAgICAgICBtX21hbmFnZXItPmhhc1ZpZGVvSW5QaWN0dXJl
SW5QaWN0dXJlRGlkQ2hhbmdlKHRydWUpOwogfQogCi12b2lkIFZpZGVvRnVsbHNjcmVlbk1vZGVs
Q29udGV4dDo6d2lsbEVudGVyUGljdHVyZUluUGljdHVyZSgpCit2b2lkIFZpZGVvRnVsbHNjcmVl
bk1vZGVsQ29udGV4dDo6ZGlkRXhpdFBpY3R1cmVJblBpY3R1cmUoKQogewotICAgIGZvciAoYXV0
byYgY2xpZW50IDogY29weVRvVmVjdG9yKG1fY2xpZW50cykpCi0gICAgICAgIGNsaWVudC0+d2ls
bEVudGVyUGljdHVyZUluUGljdHVyZSgpOworICAgIGlmIChtX21hbmFnZXIpCisgICAgICAgIG1f
bWFuYWdlci0+aGFzVmlkZW9JblBpY3R1cmVJblBpY3R1cmVEaWRDaGFuZ2UoZmFsc2UpOwogfQog
Ci12b2lkIFZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6ZGlkRW50ZXJQaWN0dXJlSW5QaWN0
dXJlKCkKK3ZvaWQgVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0Ojp3aWxsRW50ZXJQaWN0dXJl
SW5QaWN0dXJlKCkKIHsKLSAgICBpZiAobV9tYW5hZ2VyKQotICAgICAgICBtX21hbmFnZXItPmhh
c1ZpZGVvSW5QaWN0dXJlSW5QaWN0dXJlRGlkQ2hhbmdlKHRydWUpOwotCiAgICAgZm9yIChhdXRv
JiBjbGllbnQgOiBjb3B5VG9WZWN0b3IobV9jbGllbnRzKSkKLSAgICAgICAgY2xpZW50LT5kaWRF
bnRlclBpY3R1cmVJblBpY3R1cmUoKTsKKyAgICAgICAgY2xpZW50LT53aWxsRW50ZXJQaWN0dXJl
SW5QaWN0dXJlKCk7CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpmYWls
ZWRUb0VudGVyUGljdHVyZUluUGljdHVyZSgpCkBAIC0zMjEsMTUgKzMxOCw2IEBAIHZvaWQgVmlk
ZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0Ojp3aWxsRXhpdFBpY3R1cmVJblBpY3R1cmUoKQogICAg
ICAgICBjbGllbnQtPndpbGxFeGl0UGljdHVyZUluUGljdHVyZSgpOwogfQogCi12b2lkIFZpZGVv
RnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6ZGlkRXhpdFBpY3R1cmVJblBpY3R1cmUoKQotewotICAg
IGlmIChtX21hbmFnZXIpCi0gICAgICAgIG1fbWFuYWdlci0+aGFzVmlkZW9JblBpY3R1cmVJblBp
Y3R1cmVEaWRDaGFuZ2UoZmFsc2UpOwotCi0gICAgZm9yIChhdXRvJiBjbGllbnQgOiBjb3B5VG9W
ZWN0b3IobV9jbGllbnRzKSkKLSAgICAgICAgY2xpZW50LT5kaWRFeGl0UGljdHVyZUluUGljdHVy
ZSgpOwotfQotCiAjcHJhZ21hIG1hcmsgLSBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkKIAog
UmVmPFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eT4gVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5OjpjcmVhdGUoV2ViUGFnZVByb3h5JiBwYWdlLCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHkmIHBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSkKQEAgLTUyMCw2ICs1MDgsOCBAQCB2b2lk
IFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6Zm9yRWFjaFNlc3Npb24oRnVuY3Rpb248dm9p
ZChWaWRlb0Z1bGxzY3JlZW5Nbwogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6Omhh
c1ZpZGVvSW5QaWN0dXJlSW5QaWN0dXJlRGlkQ2hhbmdlKGJvb2wgdmFsdWUpCiB7CiAgICAgbV9w
YWdlLT51aUNsaWVudCgpLmhhc1ZpZGVvSW5QaWN0dXJlSW5QaWN0dXJlRGlkQ2hhbmdlKG1fcGFn
ZSwgdmFsdWUpOworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPmhhc1ZpZGVv
SW5QaWN0dXJlSW5QaWN0dXJlRGlkQ2hhbmdlKHZhbHVlKTsKIH0KIAogI3ByYWdtYSBtYXJrIE1l
c3NhZ2VzIGZyb20gVmlkZW9GdWxsc2NyZWVuTWFuYWdlcgpAQCAtODI1LDYgKzgxNSw4IEBAIHZv
aWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpmdWxsc2NyZWVuTW9kZUNoYW5nZWQoUGxh
eWJhY2tTZXNzaW9uQ29udGV4dElkCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6
ZnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlm
aWVyIGNvbnRleHRJZCkKIHsKICAgICBtX3BhZ2UtPmZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGlu
ZSgpOworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPmZ1bGxzY3JlZW5NYXlS
ZXR1cm5Ub0lubGluZSgpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6
ZnVsbHNjcmVlbldpbGxSZXR1cm5Ub0lubGluZShQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRp
ZmllciBjb250ZXh0SWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
ZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVySU9TLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxl
cklPUy5tbQppbmRleCA4NmIxNzZkMTE4OWVjYWYwNDc4MzdmNjNiNGMxNWQxYzFmMDU0MmU4Li4x
Yjc0YzU5ZDQ5MDNhMDdkOTg2MGU4MjhjYzQ1NWNmZTliYmUwNTdkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5XaW5kb3dDb250
cm9sbGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVu
L1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MubW0KQEAgLTI0LDkgKzI0LDkgQEAKICAq
LwogCiAjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIldLRnVsbFNjcmVlbldpbmRvd0NvbnRy
b2xsZXJJT1MuaCIKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEVOQUJMRShGVUxMU0NS
RUVOX0FQSSkKLSNpbXBvcnQgIldLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MuaCIKIAog
I2ltcG9ydCAiVUlLaXRTUEkuaCIKICNpbXBvcnQgIlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eS5oIgpAQCAtNDI3LDYxICs0MjcsMzIgQEAgc3RhdGljIGNvbnN0IE5TVGltZUludGVydmFsIGtB
bmltYXRpb25EdXJhdGlvbiA9IDAuMjsKIAogI3ByYWdtYSBtYXJrIC0KIAotQGludGVyZmFjZSBX
S0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyIChWaWRlb0Z1bGxzY3JlZW5DbGllbnRDYWxsYmFj
a3MpCi0tICh2b2lkKXdpbGxFbnRlclBpY3R1cmVJblBpY3R1cmU7CitAaW50ZXJmYWNlIFdLRnVs
bFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgKFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eUNsaWVu
dCkKIC0gKHZvaWQpZGlkRW50ZXJQaWN0dXJlSW5QaWN0dXJlOwotLSAodm9pZClmYWlsZWRUb0Vu
dGVyUGljdHVyZUluUGljdHVyZTsKIC0gKHZvaWQpcHJlcGFyZVRvRXhpdFBpY3R1cmVJblBpY3R1
cmU7CiAtICh2b2lkKWRpZEV4aXRQaWN0dXJlSW5QaWN0dXJlOwogQGVuZAogCi1jbGFzcyBXS0Z1
bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyVmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQgOiBXZWJD
b3JlOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudCB7CitjbGFzcyBXS0Z1bGxTY3JlZW5XaW5k
b3dDb250cm9sbGVyVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Q2xpZW50IDogcHVibGljIFdl
YktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Q2xpZW50IHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2b2lkIHNldFBhcmVudChXS0Z1bGxTY3JlZW5X
aW5kb3dDb250cm9sbGVyICpwYXJlbnQpIHsgbV9wYXJlbnQgPSBwYXJlbnQ7IH0KIAotICAgIHZv
aWQgc2V0SW50ZXJmYWNlKFdlYkNvcmU6OlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0KiBp
bnRlcmZhY2UpCi0gICAgewotICAgICAgICBpZiAobV9pbnRlcmZhY2UgPT0gaW50ZXJmYWNlKQot
ICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmIChtX2ludGVyZmFjZSAmJiBtX2ludGVy
ZmFjZS0+dmlkZW9GdWxsc2NyZWVuTW9kZWwoKSkKLSAgICAgICAgICAgIG1faW50ZXJmYWNlLT52
aWRlb0Z1bGxzY3JlZW5Nb2RlbCgpLT5yZW1vdmVDbGllbnQoKnRoaXMpOwotICAgICAgICBtX2lu
dGVyZmFjZSA9IGludGVyZmFjZTsKLSAgICAgICAgaWYgKG1faW50ZXJmYWNlICYmIG1faW50ZXJm
YWNlLT52aWRlb0Z1bGxzY3JlZW5Nb2RlbCgpKQotICAgICAgICAgICAgbV9pbnRlcmZhY2UtPnZp
ZGVvRnVsbHNjcmVlbk1vZGVsKCktPmFkZENsaWVudCgqdGhpcyk7Ci0gICAgfQotCi0gICAgV2Vi
Q29yZTo6VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQqIGludGVyZmFjZSgpIGNvbnN0IHsg
cmV0dXJuIG1faW50ZXJmYWNlLmdldCgpOyB9Ci0KLSAgICB2b2lkIHdpbGxFbnRlclBpY3R1cmVJ
blBpY3R1cmUoKSBmaW5hbAotICAgIHsKLSAgICAgICAgW21fcGFyZW50IHdpbGxFbnRlclBpY3R1
cmVJblBpY3R1cmVdOwotICAgIH0KLQotICAgIHZvaWQgZGlkRW50ZXJQaWN0dXJlSW5QaWN0dXJl
KCkgZmluYWwKLSAgICB7Ci0gICAgICAgIFttX3BhcmVudCBkaWRFbnRlclBpY3R1cmVJblBpY3R1
cmVdOwotICAgIH0KLQotICAgIHZvaWQgZmFpbGVkVG9FbnRlclBpY3R1cmVJblBpY3R1cmUoKSBm
aW5hbAotICAgIHsKLSAgICAgICAgW21fcGFyZW50IGZhaWxlZFRvRW50ZXJQaWN0dXJlSW5QaWN0
dXJlXTsKLSAgICB9Ci0KLSAgICB2b2lkIHByZXBhcmVUb0V4aXRQaWN0dXJlSW5QaWN0dXJlKCkg
ZmluYWwKK3ByaXZhdGU6CisgICAgdm9pZCBmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUoKSBm
aW5hbAogICAgIHsKICAgICAgICAgW21fcGFyZW50IHByZXBhcmVUb0V4aXRQaWN0dXJlSW5QaWN0
dXJlXTsKICAgICB9CiAKLSAgICB2b2lkIGRpZEV4aXRQaWN0dXJlSW5QaWN0dXJlKCkgZmluYWwK
KyAgICB2b2lkIGhhc1ZpZGVvSW5QaWN0dXJlSW5QaWN0dXJlRGlkQ2hhbmdlKGJvb2wgdmFsdWUp
IGZpbmFsCiAgICAgewotICAgICAgICBbbV9wYXJlbnQgZGlkRXhpdFBpY3R1cmVJblBpY3R1cmVd
OworICAgICAgICBpZiAodmFsdWUpCisgICAgICAgICAgICBbbV9wYXJlbnQgZGlkRW50ZXJQaWN0
dXJlSW5QaWN0dXJlXTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgW21fcGFyZW50IGRpZEV4
aXRQaWN0dXJlSW5QaWN0dXJlXTsKICAgICB9CiAKLXByaXZhdGU6CiAgICAgV0tGdWxsU2NyZWVu
V2luZG93Q29udHJvbGxlciAqbV9wYXJlbnQgeyBudWxscHRyIH07Ci0gICAgUmVmUHRyPFdlYkNv
cmU6OlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0PiBtX2ludGVyZmFjZTsKIH07CiAKICNw
cmFnbWEgbWFyayAtCkBAIC01MDMsOCArNDc0LDkgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8
VUlQaW5jaEdlc3R1cmVSZWNvZ25pemVyPiBfaW50ZXJhY3RpdmVQaW5jaERpc21pc3NHZXN0dXJl
UmVjb2duaXplcjsKICAgICBSZXRhaW5QdHI8V0tGdWxsU2NyZWVuSW50ZXJhY3RpdmVUcmFuc2l0
aW9uPiBfaW50ZXJhY3RpdmVEaXNtaXNzVHJhbnNpdGlvbkNvb3JkaW5hdG9yOwogCi0gICAgV0tG
dWxsU2NyZWVuV2luZG93Q29udHJvbGxlclZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50IF92aWRl
b0Z1bGxzY3JlZW5DbGllbnQ7CisgICAgV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlclZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eUNsaWVudCBfdmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
Q2xpZW50OwogICAgIEJPT0wgX2luUGljdHVyZUluUGljdHVyZTsKKyAgICBCT09MIF9lbnRlckZ1
bGxzY3JlZW5OZWVkc0V4aXRQaWN0dXJlSW5QaWN0dXJlOwogICAgIEJPT0wgX3JldHVyblRvRnVs
bHNjcmVlbkZyb21QaWN0dXJlSW5QaWN0dXJlOwogCiAgICAgQ0dSZWN0IF9pbml0aWFsRnJhbWU7
CkBAIC01MjgsNyArNTAwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAg
IHNlbGYuX3dlYlZpZXcgPSB3ZWJWaWV3OwotICAgIF92aWRlb0Z1bGxzY3JlZW5DbGllbnQuc2V0
UGFyZW50KHNlbGYpOworICAgIF92aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHlDbGllbnQuc2V0
UGFyZW50KHNlbGYpOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CkBAIC01MzgsOCArNTEwLDcgQEAg
cHJpdmF0ZToKICAgICBbTlNPYmplY3QgY2FuY2VsUHJldmlvdXNQZXJmb3JtUmVxdWVzdHNXaXRo
VGFyZ2V0OnNlbGZdOwogICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0g
cmVtb3ZlT2JzZXJ2ZXI6c2VsZl07CiAKLSAgICBfdmlkZW9GdWxsc2NyZWVuQ2xpZW50LnNldElu
dGVyZmFjZShudWxscHRyKTsKLSAgICBfdmlkZW9GdWxsc2NyZWVuQ2xpZW50LnNldFBhcmVudChu
dWxscHRyKTsKKyAgICBfdmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Q2xpZW50LnNldFBhcmVu
dChudWxscHRyKTsKIAogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KQEAgLTcyNSwxNSArNjk2LDIy
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBtYW5hZ2VyLT5zZXRBbmltYXRpbmdGdWxsU2NyZWVu
KGZhbHNlKTsKICAgICAgICAgICAgIHBhZ2UtPnNldFN1cHByZXNzVmlzaWJpbGl0eVVwZGF0ZXMo
ZmFsc2UpOwogCi0gICAgICAgICAgICBhdXRvKiB2aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyID0gcGFn
ZS0+dmlkZW9GdWxsc2NyZWVuTWFuYWdlcigpOwotICAgICAgICAgICAgYXV0byogdmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlID0gdmlkZW9GdWxsc2NyZWVuTWFuYWdlciA/IHZpZGVvRnVsbHNjcmVl
bk1hbmFnZXItPmNvbnRyb2xzTWFuYWdlckludGVyZmFjZSgpIDogbnVsbHB0cjsKLSAgICAgICAg
ICAgIGlmIChfcmV0dXJuVG9GdWxsc2NyZWVuRnJvbVBpY3R1cmVJblBpY3R1cmUpIHsKLSAgICAg
ICAgICAgICAgICBBU1NFUlQodmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlKTsKLSAgICAgICAgICAg
ICAgICBfcmV0dXJuVG9GdWxsc2NyZWVuRnJvbVBpY3R1cmVJblBpY3R1cmUgPSBOTzsKLSAgICAg
ICAgICAgICAgICBpZiAodmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlKQotICAgICAgICAgICAgICAg
ICAgICB2aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UtPnNldFJlYWR5VG9TdG9wUGljdHVyZUluUGlj
dHVyZShZRVMpOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgX3ZpZGVvRnVs
bHNjcmVlbkNsaWVudC5zZXRJbnRlcmZhY2UodmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlKTsKKyAg
ICAgICAgICAgIGlmIChhdXRvKiB2aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyID0gc2VsZi5fdmlkZW9G
dWxsc2NyZWVuTWFuYWdlcikgeworICAgICAgICAgICAgICAgIHZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXItPnNldENsaWVudCgmX3ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eUNsaWVudCk7CisgICAg
ICAgICAgICAgICAgYXV0byogdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlID0gdmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlciA/IHZpZGVvRnVsbHNjcmVlbk1hbmFnZXItPmNvbnRyb2xzTWFuYWdlckludGVy
ZmFjZSgpIDogbnVsbHB0cjsKKyAgICAgICAgICAgICAgICBpZiAodmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChfcmV0dXJuVG9GdWxsc2NyZWVuRnJv
bVBpY3R1cmVJblBpY3R1cmUpCisgICAgICAgICAgICAgICAgICAgICAgICB2aWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2UtPnNldFJlYWR5VG9TdG9wUGljdHVyZUluUGljdHVyZShZRVMpOworICAgICAg
ICAgICAgICAgICAgICBlbHNlIGlmIChfaW5QaWN0dXJlSW5QaWN0dXJlKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoYXV0byogbW9kZWwgPSB2aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2Ut
PnZpZGVvRnVsbHNjcmVlbk1vZGVsKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBf
ZW50ZXJGdWxsc2NyZWVuTmVlZHNFeGl0UGljdHVyZUluUGljdHVyZSA9IFlFUzsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtb2RlbC0+cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpOworICAgICAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBfcmV0dXJuVG9GdWxsc2NyZWVuRnJv
bVBpY3R1cmVJblBpY3R1cmUgPSBOTzsKIAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CkBAIC04NjgsOCArODQ2LDEwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBwYWdlLT5zZXROZWVk
c0RPTVdpbmRvd1Jlc2l6ZUV2ZW50KCk7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIV9pblBp
Y3R1cmVJblBpY3R1cmUpCi0gICAgICAgICAgICBfdmlkZW9GdWxsc2NyZWVuQ2xpZW50LnNldElu
dGVyZmFjZShudWxscHRyKTsKKyAgICAgICAgaWYgKCFfaW5QaWN0dXJlSW5QaWN0dXJlKSB7Cisg
ICAgICAgICAgICBpZiAoYXV0byogdmlkZW9GdWxsc2NyZWVuTWFuYWdlciA9IHNlbGYuX3ZpZGVv
RnVsbHNjcmVlbk1hbmFnZXIpCisgICAgICAgICAgICAgICAgdmlkZW9GdWxsc2NyZWVuTWFuYWdl
ci0+c2V0Q2xpZW50KG51bGxwdHIpOworICAgICAgICB9CiAKICAgICAgICAgX2V4aXRSZXF1ZXN0
ZWQgPSBOTzsKICAgICAgICAgX2V4aXRpbmdGdWxsU2NyZWVuID0gTk87CkBAIC05MDQsMTEgKzg4
NCw2IEBAIHByaXZhdGU6CiB7CiAgICAgaWYgKF9mdWxsc2NyZWVuVmlld0NvbnRyb2xsZXIpCiAg
ICAgICAgIFtfZnVsbHNjcmVlblZpZXdDb250cm9sbGVyIHZpZGVvQ29udHJvbHNNYW5hZ2VyRGlk
Q2hhbmdlXTsKLQotICAgIGF1dG8gcGFnZSA9IFtzZWxmLl93ZWJWaWV3IF9wYWdlXTsKLSAgICBh
dXRvKiB2aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyID0gcGFnZSA/IHBhZ2UtPnZpZGVvRnVsbHNjcmVl
bk1hbmFnZXIoKSA6IG51bGxwdHI7Ci0gICAgYXV0byogdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
ID0gdmlkZW9GdWxsc2NyZWVuTWFuYWdlciA/IHZpZGVvRnVsbHNjcmVlbk1hbmFnZXItPmNvbnRy
b2xzTWFuYWdlckludGVyZmFjZSgpIDogbnVsbHB0cjsKLSAgICBfdmlkZW9GdWxsc2NyZWVuQ2xp
ZW50LnNldEludGVyZmFjZSh2aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UpOwogfQogCiAtICh2b2lk
KXBsYWNlaG9sZGVyV2lsbE1vdmVUb1N1cGVydmlldzooVUlWaWV3ICopc3VwZXJ2aWV3CkBAIC05
MjIsMzcgKzg5NywyMyBAQCBwcml2YXRlOgogICAgIH0pOwogfQogCi0tICh2b2lkKXdpbGxFbnRl
clBpY3R1cmVJblBpY3R1cmUKLXsKLSAgICBhdXRvKiBpbnRlcmZhY2UgPSBfdmlkZW9GdWxsc2Ny
ZWVuQ2xpZW50LmludGVyZmFjZSgpOwotICAgIGlmICghaW50ZXJmYWNlIHx8ICFpbnRlcmZhY2Ut
PnBpY3R1cmVJblBpY3R1cmVXYXNTdGFydGVkV2hlbkVudGVyaW5nQmFja2dyb3VuZCgpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBbX2Z1bGxzY3JlZW5WaWV3Q29udHJvbGxlciBzZXRBbmltYXRp
bmdWaWV3QWxwaGE6MF07Ci19Ci0KIC0gKHZvaWQpZGlkRW50ZXJQaWN0dXJlSW5QaWN0dXJlCiB7
CiAgICAgX2luUGljdHVyZUluUGljdHVyZSA9IFlFUzsKICAgICBbc2VsZiByZXF1ZXN0RXhpdEZ1
bGxTY3JlZW5dOwogfQogCi0tICh2b2lkKWZhaWxlZFRvRW50ZXJQaWN0dXJlSW5QaWN0dXJlCist
ICh2b2lkKXByZXBhcmVUb0V4aXRQaWN0dXJlSW5QaWN0dXJlCiB7Ci0gICAgYXV0byogaW50ZXJm
YWNlID0gX3ZpZGVvRnVsbHNjcmVlbkNsaWVudC5pbnRlcmZhY2UoKTsKLSAgICBpZiAoIWludGVy
ZmFjZSB8fCAhaW50ZXJmYWNlLT5waWN0dXJlSW5QaWN0dXJlV2FzU3RhcnRlZFdoZW5FbnRlcmlu
Z0JhY2tncm91bmQoKSkKKyAgICBpZiAoX2VudGVyRnVsbHNjcmVlbk5lZWRzRXhpdFBpY3R1cmVJ
blBpY3R1cmUpCiAgICAgICAgIHJldHVybjsKIAotICAgIFtfZnVsbHNjcmVlblZpZXdDb250cm9s
bGVyIHNldEFuaW1hdGluZ1ZpZXdBbHBoYToxXTsKLX0KKyAgICBhdXRvKiB2aWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2UgPSBzZWxmLl92aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyID8gc2VsZi5fdmlkZW9G
dWxsc2NyZWVuTWFuYWdlci0+Y29udHJvbHNNYW5hZ2VySW50ZXJmYWNlKCkgOiBudWxscHRyOwog
Ci0tICh2b2lkKXByZXBhcmVUb0V4aXRQaWN0dXJlSW5QaWN0dXJlCi17Ci0gICAgYXV0byogaW50
ZXJmYWNlID0gX3ZpZGVvRnVsbHNjcmVlbkNsaWVudC5pbnRlcmZhY2UoKTsKLSAgICBpZiAoIWlu
dGVyZmFjZSkKKyAgICBpZiAoIXZpZGVvRnVsbHNjcmVlbkludGVyZmFjZSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgaW50ZXJmYWNlLT5zZXRSZWFkeVRvU3RvcFBpY3R1cmVJblBpY3R1cmUoTk8p
OworICAgIHZpZGVvRnVsbHNjcmVlbkludGVyZmFjZS0+c2V0UmVhZHlUb1N0b3BQaWN0dXJlSW5Q
aWN0dXJlKE5PKTsKICAgICBfcmV0dXJuVG9GdWxsc2NyZWVuRnJvbVBpY3R1cmVJblBpY3R1cmUg
PSBZRVM7CiAKICAgICBpZiAoIV9leGl0aW5nRnVsbFNjcmVlbikKQEAgLTk2NCw4ICs5MjUsMTEg
QEAgcHJpdmF0ZToKIC0gKHZvaWQpZGlkRXhpdFBpY3R1cmVJblBpY3R1cmUKIHsKICAgICBfaW5Q
aWN0dXJlSW5QaWN0dXJlID0gTk87Ci0gICAgaWYgKCFfcmV0dXJuVG9GdWxsc2NyZWVuRnJvbVBp
Y3R1cmVJblBpY3R1cmUgJiYgIVtzZWxmIGlzRnVsbFNjcmVlbl0pCi0gICAgICAgIF92aWRlb0Z1
bGxzY3JlZW5DbGllbnQuc2V0SW50ZXJmYWNlKG51bGxwdHIpOworICAgIF9lbnRlckZ1bGxzY3Jl
ZW5OZWVkc0V4aXRQaWN0dXJlSW5QaWN0dXJlID0gTk87CisgICAgaWYgKCFbc2VsZiBpc0Z1bGxT
Y3JlZW5dKSB7CisgICAgICAgIGlmIChhdXRvKiB2aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyID0gc2Vs
Zi5fdmlkZW9GdWxsc2NyZWVuTWFuYWdlcikKKyAgICAgICAgICAgIHZpZGVvRnVsbHNjcmVlbk1h
bmFnZXItPnNldENsaWVudChudWxscHRyKTsKKyAgICB9CiB9CiAKICNwcmFnbWEgbWFyayAtCkBA
IC0xMTQxLDYgKzExMDUsMTMgQEAgcHJpdmF0ZToKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAor
LSAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkqKV92aWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyCit7CisgICAgaWYgKGF1dG8gcGFnZSA9IFtzZWxmLl93ZWJWaWV3IF9wYWdlXSkKKyAg
ICAgICAgcmV0dXJuIHBhZ2UtPnZpZGVvRnVsbHNjcmVlbk1hbmFnZXIoKTsKKyAgICByZXR1cm4g
bnVsbHB0cjsKK30KKwogLSAodm9pZClfc3RhcnRUb0Rpc21pc3NGdWxsc2NyZWVuQ2hhbmdlZDoo
aWQpc2VuZGVyCiB7CiAgICAgaWYgKF9pbkludGVyYWN0aXZlRGlzbWlzcykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVy
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJv
bGxlci5oCmluZGV4IDdhNjQzY2E2MGRiNjQwNzAyMTM3NTM5ZTMwMzY5MDNjNjYxM2U1NzAuLmRh
NThiOWU5ZTA5MWQ4MGQ4Y2U2NDI4ZTEzNTc5ZjQ0MWNjYTA0NzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xs
ZXIuaApAQCAtMzQsNyArMzQsNiBAQAogbmFtZXNwYWNlIFdlYktpdCB7IAogY2xhc3MgTGF5ZXJU
cmVlQ29udGV4dDsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKLWNsYXNzIFdLRnVsbFNjcmVlbldpbmRv
d0NvbnRyb2xsZXJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudDsKIH0KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtNjQsNyArNjMsNiBAQCB0eXBlZGVmIGVudW0gRnVsbFNjcmVlblN0YXRlIDog
TlNJbnRlZ2VyIEZ1bGxTY3JlZW5TdGF0ZTsKIAogICAgIGRvdWJsZSBfc2F2ZWRTY2FsZTsKICAg
ICBSZWZQdHI8V2ViS2l0OjpWb2lkQ2FsbGJhY2s+IF9yZXBhaW50Q2FsbGJhY2s7Ci0gICAgc3Rk
Ojp1bmlxdWVfcHRyPFdlYktpdDo6V0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlclZpZGVvRnVs
bHNjcmVlbk1vZGVsQ2xpZW50PiBfdmlkZW9GdWxsc2NyZWVuQ2xpZW50OwogICAgIGZsb2F0IF9z
YXZlZFRvcENvbnRlbnRJbnNldDsKIH0KIApAQCAtODcsOCArODUsNiBAQCB0eXBlZGVmIGVudW0g
RnVsbFNjcmVlblN0YXRlIDogTlNJbnRlZ2VyIEZ1bGxTY3JlZW5TdGF0ZTsKIC0gKHZvaWQpYmVn
YW5FeGl0RnVsbFNjcmVlbldpdGhJbml0aWFsRnJhbWU6KE5TUmVjdClpbml0aWFsRnJhbWUgZmlu
YWxGcmFtZTooTlNSZWN0KWZpbmFsRnJhbWU7CiAKIC0gKHZvaWQpdmlkZW9Db250cm9sc01hbmFn
ZXJEaWRDaGFuZ2U7Ci0tICh2b2lkKWRpZEVudGVyUGljdHVyZUluUGljdHVyZTsKLS0gKHZvaWQp
ZGlkRXhpdFBpY3R1cmVJblBpY3R1cmU7CiAKIEBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbQpp
bmRleCA0ODViZDkwZjNlMDliNWNkYzQwYjc5YzAyYjFmZDU4ZGEwMmJhNTJiLi4xNjI4ZDUwODU1
YTUxZTFjOGQ5YjlkZGQwZDEzOWZlMWE0Mzk3MTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbQpA
QCAtMjQsMTEgKzI0LDEwIEBACiAgKi8KIAogI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJX
S0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmgiCiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9B
UEkpICYmICFQTEFURk9STShJT1NfRkFNSUxZKQogCi0jaW1wb3J0ICJXS0Z1bGxTY3JlZW5XaW5k
b3dDb250cm9sbGVyLmgiCi0KICNpbXBvcnQgIkFwcEtpdFNQSS5oIgogI2ltcG9ydCAiTGF5ZXJU
cmVlQ29udGV4dC5oIgogI2ltcG9ydCAiVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmgiCkBA
IC01NCw0NCArNTMsMzIgQEAKIAogc3RhdGljIGNvbnN0IE5TVGltZUludGVydmFsIERlZmF1bHRX
YXRjaGRvZ1RpbWVySW50ZXJ2YWwgPSAxOwogCi1uYW1lc3BhY2UgV2ViS2l0IHsKK0BpbnRlcmZh
Y2UgV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlciAoVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5Q2xpZW50KQorLSAodm9pZClkaWRFbnRlclBpY3R1cmVJblBpY3R1cmU7CistICh2b2lkKWRp
ZEV4aXRQaWN0dXJlSW5QaWN0dXJlOworQGVuZAogCi1jbGFzcyBXS0Z1bGxTY3JlZW5XaW5kb3dD
b250cm9sbGVyVmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQgOiBXZWJDb3JlOjpWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbENsaWVudCB7CitjbGFzcyBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Q2xpZW50IDogcHVibGljIFdlYktpdDo6VmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5Q2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICB2b2lkIHNldFBhcmVudChXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVy
ICpwYXJlbnQpIHsgbV9wYXJlbnQgPSBwYXJlbnQ7IH0KIAotICAgIHZvaWQgc2V0SW50ZXJmYWNl
KFdlYkNvcmU6OlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYyogaW50ZXJmYWNlKQotICAgIHsK
LSAgICAgICAgaWYgKG1faW50ZXJmYWNlID09IGludGVyZmFjZSkKLSAgICAgICAgICAgIHJldHVy
bjsKLQotICAgICAgICBpZiAobV9pbnRlcmZhY2UgJiYgbV9pbnRlcmZhY2UtPnZpZGVvRnVsbHNj
cmVlbk1vZGVsKCkpCi0gICAgICAgICAgICBtX2ludGVyZmFjZS0+dmlkZW9GdWxsc2NyZWVuTW9k
ZWwoKS0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKLSAgICAgICAgbV9pbnRlcmZhY2UgPSBpbnRlcmZh
Y2U7Ci0gICAgICAgIGlmIChtX2ludGVyZmFjZSAmJiBtX2ludGVyZmFjZS0+dmlkZW9GdWxsc2Ny
ZWVuTW9kZWwoKSkKLSAgICAgICAgICAgIG1faW50ZXJmYWNlLT52aWRlb0Z1bGxzY3JlZW5Nb2Rl
bCgpLT5hZGRDbGllbnQoKnRoaXMpOwotICAgIH0KLQotICAgIFdlYkNvcmU6OlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZU1hYyogaW50ZXJmYWNlKCkgY29uc3QgeyByZXR1cm4gbV9pbnRlcmZhY2Uu
Z2V0KCk7IH0KLQotICAgIHZvaWQgZGlkRW50ZXJQaWN0dXJlSW5QaWN0dXJlKCkgZmluYWwKK3By
aXZhdGU6CisgICAgdm9pZCBmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUoKSBmaW5hbAogICAg
IHsKLSAgICAgICAgW21fcGFyZW50IGRpZEVudGVyUGljdHVyZUluUGljdHVyZV07CiAgICAgfQog
Ci0gICAgdm9pZCBkaWRFeGl0UGljdHVyZUluUGljdHVyZSgpIGZpbmFsCisgICAgdm9pZCBoYXNW
aWRlb0luUGljdHVyZUluUGljdHVyZURpZENoYW5nZShib29sIHZhbHVlKSBmaW5hbAogICAgIHsK
LSAgICAgICAgW21fcGFyZW50IGRpZEV4aXRQaWN0dXJlSW5QaWN0dXJlXTsKKyAgICAgICAgaWYg
KHZhbHVlKQorICAgICAgICAgICAgW21fcGFyZW50IGRpZEVudGVyUGljdHVyZUluUGljdHVyZV07
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIFttX3BhcmVudCBkaWRFeGl0UGljdHVyZUluUGlj
dHVyZV07CiAgICAgfQogCi1wcml2YXRlOgogICAgIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xs
ZXIgKm1fcGFyZW50IHsgbnVsbHB0ciB9OwotICAgIFJlZlB0cjxXZWJDb3JlOjpWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VNYWM+IG1faW50ZXJmYWNlOwogfTsKIAotfQotCiBlbnVtIEZ1bGxTY3Jl
ZW5TdGF0ZSA6IE5TSW50ZWdlciB7CiAgICAgTm90SW5GdWxsU2NyZWVuLAogICAgIFdhaXRpbmdU
b0VudGVyRnVsbFNjcmVlbiwKQEAgLTExOSw3ICsxMDYsOSBAQCBzdGF0aWMgdm9pZCBtYWtlUmVz
cG9uZGVyRmlyc3RSZXNwb25kZXJJZkRlc2NlbmRhbnRPZlZpZXcoTlNXaW5kb3cgKndpbmRvdywg
TlNSZQogICAgICAgICBbd2luZG93IG1ha2VGaXJzdFJlc3BvbmRlcjpyZXNwb25kZXJdOwogfQog
Ci1AaW1wbGVtZW50YXRpb24gV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcgorQGltcGxlbWVu
dGF0aW9uIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgeworICAgIFdLRnVsbFNjcmVlbldp
bmRvd0NvbnRyb2xsZXJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHlDbGllbnQgX3ZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eUNsaWVudDsKK30KIAogI3ByYWdtYSBtYXJrIC0KICNwcmFnbWEg
bWFyayBJbml0aWFsaXphdGlvbgpAQCAtMTU1LDggKzE0NCw3IEBAIHN0YXRpYyB2b2lkIG1ha2VS
ZXNwb25kZXJGaXJzdFJlc3BvbmRlcklmRGVzY2VuZGFudE9mVmlldyhOU1dpbmRvdyAqd2luZG93
LCBOU1JlCiAgICAgX3dlYlZpZXcgPSB3ZWJWaWV3OwogICAgIF9wYWdlID0gcGFnZS5wdHIoKTsK
IAotICAgIF92aWRlb0Z1bGxzY3JlZW5DbGllbnQgPSBtYWtlVW5pcXVlPFdlYktpdDo6V0tGdWxs
U2NyZWVuV2luZG93Q29udHJvbGxlclZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50PigpOwotICAg
IF92aWRlb0Z1bGxzY3JlZW5DbGllbnQtPnNldFBhcmVudChzZWxmKTsKKyAgICBfdmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5Q2xpZW50LnNldFBhcmVudChzZWxmKTsKIAogICAgIFtzZWxmIHZp
ZGVvQ29udHJvbHNNYW5hZ2VyRGlkQ2hhbmdlXTsKIApAQCAtMTc4LDggKzE2Niw3IEBAIHN0YXRp
YyB2b2lkIG1ha2VSZXNwb25kZXJGaXJzdFJlc3BvbmRlcklmRGVzY2VuZGFudE9mVmlldyhOU1dp
bmRvdyAqd2luZG93LCBOU1JlCiAgICAgICAgIEFTU0VSVCghX3JlcGFpbnRDYWxsYmFjayk7CiAg
ICAgfQogCi0gICAgX3ZpZGVvRnVsbHNjcmVlbkNsaWVudC0+c2V0UGFyZW50KG5pbCk7Ci0gICAg
X3ZpZGVvRnVsbHNjcmVlbkNsaWVudC0+c2V0SW50ZXJmYWNlKG51bGxwdHIpOworICAgIF92aWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHlDbGllbnQuc2V0UGFyZW50KG51bGxwdHIpOwogCiAgICAg
W3N1cGVyIGRlYWxsb2NdOwogfQpAQCAtNjU1LDEwICs2NDIsNiBAQCBzdGF0aWMgUmV0YWluUHRy
PENHSW1hZ2VSZWY+IHRha2VXaW5kb3dTbmFwc2hvdChDR1NXaW5kb3dJRCB3aW5kb3dJRCwgYm9v
bCBjYXB0dQogCiAtICh2b2lkKXZpZGVvQ29udHJvbHNNYW5hZ2VyRGlkQ2hhbmdlCiB7Ci0gICAg
YXV0byogdmlkZW9GdWxsc2NyZWVuTWFuYWdlciA9IF9wYWdlID8gX3BhZ2UtPnZpZGVvRnVsbHNj
cmVlbk1hbmFnZXIoKSA6IG51bGxwdHI7Ci0gICAgYXV0byogdmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlID0gdmlkZW9GdWxsc2NyZWVuTWFuYWdlciA/IHZpZGVvRnVsbHNjcmVlbk1hbmFnZXItPmNv
bnRyb2xzTWFuYWdlckludGVyZmFjZSgpIDogbnVsbHB0cjsKLQotICAgIF92aWRlb0Z1bGxzY3Jl
ZW5DbGllbnQtPnNldEludGVyZmFjZSh2aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UpOwogfQogCiAt
ICh2b2lkKWRpZEVudGVyUGljdHVyZUluUGljdHVyZQpAQCAtNjY4LDcgKzY1MSw4IEBAIHN0YXRp
YyBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gdGFrZVdpbmRvd1NuYXBzaG90KENHU1dpbmRvd0lEIHdp
bmRvd0lELCBib29sIGNhcHR1CiAKIC0gKHZvaWQpZGlkRXhpdFBpY3R1cmVJblBpY3R1cmUKIHsK
LSAgICBfdmlkZW9GdWxsc2NyZWVuQ2xpZW50LT5zZXRJbnRlcmZhY2UobnVsbHB0cik7CisgICAg
aWYgKGF1dG8qIHZpZGVvRnVsbHNjcmVlbk1hbmFnZXIgPSBzZWxmLl92aWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyKQorICAgICAgICB2aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLT5zZXRDbGllbnQobnVsbHB0
cik7CiB9CiAKICNwcmFnbWEgbWFyayAtCkBAIC03MDIsNiArNjg2LDkgQEAgc3RhdGljIFJldGFp
blB0cjxDR0ltYWdlUmVmPiB0YWtlV2luZG93U25hcHNob3QoQ0dTV2luZG93SUQgd2luZG93SUQs
IGJvb2wgY2FwdHUKIC0gKHZvaWQpd2luZG93RGlkRW50ZXJGdWxsU2NyZWVuOihOU05vdGlmaWNh
dGlvbiAqKW5vdGlmaWNhdGlvbgogewogICAgIFtzZWxmIGZpbmlzaGVkRW50ZXJGdWxsU2NyZWVu
QW5pbWF0aW9uOllFU107CisKKyAgICBpZiAoYXV0byogdmlkZW9GdWxsc2NyZWVuTWFuYWdlciA9
IHNlbGYuX3ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIpCisgICAgICAgIHZpZGVvRnVsbHNjcmVlbk1h
bmFnZXItPnNldENsaWVudCgmX3ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eUNsaWVudCk7CiB9
CiAKIC0gKHZvaWQpd2luZG93RGlkRmFpbFRvRXhpdEZ1bGxTY3JlZW46KE5TV2luZG93ICopd2lu
ZG93CkBAIC03MjksNiArNzE2LDE0IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gdGFr
ZVdpbmRvd1NuYXBzaG90KENHU1dpbmRvd0lEIHdpbmRvd0lELCBib29sIGNhcHR1CiAgICAgcmV0
dXJuIF9wYWdlLT5mdWxsU2NyZWVuTWFuYWdlcigpOwogfQogCistIChXZWJLaXQ6OlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eSopX3ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIKK3sKKyAgICBpZiAo
IV9wYWdlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBfcGFnZS0+dmlk
ZW9GdWxsc2NyZWVuTWFuYWdlcigpOworfQorCiAtICh2b2lkKV9yZXBsYWNlVmlldzooTlNWaWV3
ICopdmlldyB3aXRoOihOU1ZpZXcgKilvdGhlclZpZXcKIHsKICAgICBbQ0FUcmFuc2FjdGlvbiBi
ZWdpbl07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408739</attachid>
            <date>2020-09-14 13:27:40 -0700</date>
            <delta_ts>2020-09-14 15:39:55 -0700</delta_ts>
            <desc>Update the patch based on Jer&apos;s comments</desc>
            <filename>bug-216287-20200914132739.patch</filename>
            <type>text/plain</type>
            <size>35926</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3MDI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjQ2OTA2YTBjMzA1NzQ5
NDBlMTljNTY3YjRiOWMwZjEzZjJjYzQwOS4uYTlkNTcyY2JhMWY0YWQ4NWVlNTI0YmU1OTU2MmUy
MGMzYzRmYWY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDIwLTA5LTE0ICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV0dXJuaW5nIHRvIGVsZW1l
bnQgZnVsbHNjcmVlbiBmcm9tIFBpUCBpcyBub3Qgc3RhYmxlIHVuZGVyIHN0cmVzcyB0ZXN0cwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2Mjg3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci5oOgorICAgICAgICBEZWxldGUg
cHJlcGFyZVRvRXhpdEZ1bGxzY3JlZW4oKS4KKworICAgICAgICAqIHBsYXRmb3JtL2lvcy9WaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9WaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbToKKyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUFWS2l0OjpWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdCk6CisgICAgICAgIChW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6cHJlcGFyZUZvclBpY3R1cmVJblBpY3R1cmVT
dG9wKToKKyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpkaWRTdG9wUGlj
dHVyZUluUGljdHVyZSk6CisgICAgICAgIChWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6
c3RvcFBpY3R1cmVJblBpY3R1cmVUaW1lckZpcmVkKToKKyAgICAgICAgKFZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0OjpzZXRSZWFkeVRvU3RvcFBpY3R1cmVJblBpY3R1cmUpOgorICAgICAg
ICBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdCBleHBlY3RzIGFuIGVsZW1lbnQgZW50ZXJz
IGZ1bGxzY3JlZW4gYW5kIGZpZ3VyZSBvdXQgdGhlCisgICAgICAgIGxvY2F0aW9uIGFuZCBzaXpl
IG9mIHRoZSB2aWRlbyBlbGVtZW50IGFmdGVyIHRoYXQsIHdoaWNoIHdpbGwgYmUgdXNlZCBieSBB
VktpdCBmb3IgdGhlCisgICAgICAgIGV4aXRpbmcgcGljdHVyZS1pbi1waWN0dXJlIGFuaW1hdGlv
bi4gSG93ZXZlciwgdGhlIGVudGVyaW5nIGZ1bGxzY3JlZW4gbWF5IHRha2UgYSBsb25nCisgICAg
ICAgIHRpbWUgYW5kIEFWS2l0IHdpbGwgc3RhcnQgZXhpdGluZyBwaWN0dXJlLWluLXBpY3R1cmUg
YmVmb3JlIHRoZSBlbnRlcmluZyBmdWxsc2NyZWVuCisgICAgICAgIHRyYW5zaXRpb24gaXMgZG9u
ZS4gV2UgbmVlZCB0byBhZGQgcHJvdGVjdGlvbiBmb3Igc3VjaCBhIHNjZW5hcmlvLiBUaGlzIHBh
dGNoIGFkZHMKKyAgICAgICAgYSB0aW1lciAobV9zdG9wUGljdHVyZUluUGljdHVyZVRpbWVyKSBm
b3IgdGhpcyBwdXJwb3NlLiBUaGlzIHBhdGNoIGFsc28gbWFrZXMgc3VyZQorICAgICAgICBWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdCB3aWxsIGNhbGwgZGlkRXhpdFBpY3R1cmVJblBpY3R1
cmUoKSBwcm9wZXJseS4KKworICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyQVZLaXQubW06CisgICAgICAgIERlbGV0ZSBwcmVwYXJlVG9FeGl0RnVsbHNj
cmVlbigpLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6
cHJlcGFyZWRUb1JldHVyblRvSW5saW5lKTogVGhpcyBmdW5jdGlvbgorICAgICAgICBpcyBub3Qg
dXNlZCBvbiBNYWMuCisKIDIwMjAtMDktMTQgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29t
PgogCiAgICAgICAgIEVuYWJsZSBXZWJHTDIgYnkgZGVmYXVsdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiYmNiZDI1
OTU5ODA4ZjkyMjM3MjkyMmRhYmJmMmNlMzY1MWJhYTYzLi5kYjc5NGY4OTdkZTlmYTI5OTBiZjNl
ODcxODJiNGJiYjM3NzFhYjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDIwLTA5LTE0
ICBQZW5nIExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV0dXJuaW5nIHRv
IGVsZW1lbnQgZnVsbHNjcmVlbiBmcm9tIFBpUCBpcyBub3Qgc3RhYmxlIHVuZGVyIHN0cmVzcyB0
ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2
Mjg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lmg6CisgICAgICAgIChX
ZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eUNsaWVudDo6flZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eTo6c2V0Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5OjpjbGllbnQgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9W
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVs
bHNjcmVlbk1vZGVsQ29udGV4dDo6ZGlkRW50ZXJQaWN0dXJlSW5QaWN0dXJlKToKKyAgICAgICAg
KFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpkaWRFeGl0UGljdHVyZUluUGlj
dHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6d2ls
bEVudGVyUGljdHVyZUluUGljdHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eTo6aGFzVmlkZW9JblBpY3R1cmVJblBpY3R1cmVEaWRDaGFuZ2UpOgorICAg
ICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmZ1bGxzY3JlZW5NYXlS
ZXR1cm5Ub0lubGluZSk6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29u
dGV4dDo6cHJlcGFyZVRvRXhpdEZ1bGxzY3JlZW4pOiBEZWxldGVkLgorICAgICAgICBBZGQgdGhl
IGludGVyZmFjZSBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHlDbGllbnQsIHdoaWNoIGlzIHVz
ZWQgYnkgV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcgorICAgICAgICB0byBpbXBsZW1lbnQg
dGhlIHN1cHBvcnQgb2YgInJldHVybmluZyB0byBlbGVtZW50IGZ1bGxzY3JlZW4gZnJvbSBQaVAi
LiBVc2luZyBWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudAorICAgICAgICBmb3IgdGhhdCBwdXJw
b3NlIGlzIG5vdCBhIGdvb2QgaWRlYSBiZWNhdXNlIHRoZSBpbnN0YW5jZSBvYnNlcnZlZCBieSBW
aWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudCBtYXkgYmUKKyAgICAgICAgZGVzdHJveWVkIHdoZW4g
YSB2aWRlbyBlbGVtZW50IGlzIGV4aXRpbmcgcGljdHVyZS1pbi1waWN0dXJlIGlmIHdlIGRvbid0
IGNhbGwKKyAgICAgICAgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjphZGRDbGllbnRGb3JD
b250ZXh0KCkgYW5kIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6cmVtb3ZlQ2xpZW50Rm9y
Q29udGV4dCgpCisgICAgICAgIHByb3Blcmx5LgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9m
dWxsc2NyZWVuL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MubW06CisgICAgICAgICgt
W1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgaW5pdFdpdGhXZWJWaWV3Ol0pOgorICAgICAg
ICAoLVtXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyIGRlYWxsb2NdKToKKyAgICAgICAgKC1b
V0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlciBiZWdhbkVudGVyRnVsbFNjcmVlbldpdGhJbml0
aWFsRnJhbWU6ZmluYWxGcmFtZTpdKToKKyAgICAgICAgKC1bV0tGdWxsU2NyZWVuV2luZG93Q29u
dHJvbGxlciBfY29tcGxldGVkRXhpdEZ1bGxTY3JlZW5dKToKKyAgICAgICAgKC1bV0tGdWxsU2Ny
ZWVuV2luZG93Q29udHJvbGxlciB2aWRlb0NvbnRyb2xzTWFuYWdlckRpZENoYW5nZV0pOgorICAg
ICAgICAoLVtXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyIHByZXBhcmVUb0V4aXRQaWN0dXJl
SW5QaWN0dXJlXSk6CisgICAgICAgICgtW1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgZGlk
RXhpdFBpY3R1cmVJblBpY3R1cmVdKToKKyAgICAgICAgKC1bV0tGdWxsU2NyZWVuV2luZG93Q29u
dHJvbGxlciBfdmlkZW9GdWxsc2NyZWVuTWFuYWdlcl0pOgorICAgICAgICAoV0tGdWxsU2NyZWVu
V2luZG93Q29udHJvbGxlclZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50OjpzZXRQYXJlbnQpOiBE
ZWxldGVkLgorICAgICAgICAoV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlclZpZGVvRnVsbHNj
cmVlbk1vZGVsQ2xpZW50OjpzZXRJbnRlcmZhY2UpOiBEZWxldGVkLgorICAgICAgICAoV0tGdWxs
U2NyZWVuV2luZG93Q29udHJvbGxlclZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50OjppbnRlcmZh
Y2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoLVtXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9s
bGVyIHdpbGxFbnRlclBpY3R1cmVJblBpY3R1cmVdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tG
dWxsU2NyZWVuV2luZG93Q29udHJvbGxlciBmYWlsZWRUb0VudGVyUGljdHVyZUluUGljdHVyZV0p
OiBEZWxldGVkLgorICAgICAgICBVc2UgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Q2xpZW50
IGluc3RlYWQgb2YgVmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQgdG8gaW1wbGVtZW50CisgICAg
ICAgIHRoZSBzdXBwb3J0IG9mICJyZXR1cm5pbmcgdG8gZWxlbWVudCBmdWxsc2NyZWVuIGZyb20g
UGlQIiBvbiBpT1MuCisgICAgICAgIEEgdXNlciBjYW4gInJldHVybiB0byBlbGVtZW50IGZ1bGxz
Y3JlZW4gZnJvbSBQaVAiIGJ5IGNsaWNraW5nIHRoZSAicmV0dXJuIHRvIGZ1bGxzY3JlZW4iCisg
ICAgICAgIGJ1dHRvbiBvbiB0aGUgUGlQIHdpbmRvdywgb3IgYnkgY2xpY2tpbmcgdGhlICJmdWxs
c2NyZWVuIiBidXR0b24gb24gdGhlIHBhZ2UuIFRoaXMgcGF0Y2gKKyAgICAgICAgYWRkcyBzdXBw
b3J0IGZvciB0aGUgbGF0dGVyIGNhc2UuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dLRnVs
bFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dLRnVs
bFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLRnVsbFNjcmVlbldpbmRv
d0NvbnRyb2xsZXIgaW5pdFdpdGhXaW5kb3c6d2ViVmlldzpwYWdlOl0pOgorICAgICAgICAoLVtX
S0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyIGRlYWxsb2NdKToKKyAgICAgICAgKC1bV0tGdWxs
U2NyZWVuV2luZG93Q29udHJvbGxlciB2aWRlb0NvbnRyb2xzTWFuYWdlckRpZENoYW5nZV0pOgor
ICAgICAgICAoLVtXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyIGRpZEV4aXRQaWN0dXJlSW5Q
aWN0dXJlXSk6CisgICAgICAgICgtW1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgd2luZG93
RGlkRW50ZXJGdWxsU2NyZWVuOl0pOgorICAgICAgICAoLVtXS0Z1bGxTY3JlZW5XaW5kb3dDb250
cm9sbGVyIF92aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyXSk6CisgICAgICAgIChXZWJLaXQ6OldLRnVs
bFNjcmVlbldpbmRvd0NvbnRyb2xsZXJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudDo6c2V0UGFy
ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V0tGdWxsU2NyZWVuV2luZG93Q29udHJv
bGxlclZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50OjpzZXRJbnRlcmZhY2UpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyVmlkZW9GdWxsc2Ny
ZWVuTW9kZWxDbGllbnQ6OmludGVyZmFjZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIFVzZSBW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHlDbGllbnQgaW5zdGVhZCBvZiBWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbENsaWVudCB0byBpbXBsZW1lbnQgdGhlCisgICAgICAgIHN1cHBvcnQgb2YgImV4aXRp
bmcgZnVsbHNjcmVlbiBhZnRlciBlbnRlcmluZyBQaVAiIG9uIE1hYy4gV2UgbWF5IGltcGxlbWVu
dCB0aGUgc3VwcG9ydCBvZgorICAgICAgICAicmV0dXJuaW5nIHRvIGVsZW1lbnQgZnVsbHNjcmVl
biBmcm9tIFBpUCIgb24gTWFjIGluIHRoZSBmdXR1cmUuCisKIDIwMjAtMDktMTQgIERlYW4gSmFj
a3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIEVuYWJsZSBXZWJHTDIgYnkgZGVmYXVs
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2Ny
ZWVuQ2hhbmdlT2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVv
RnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLmgKaW5kZXggNTRlZWYzOTk4YjhjMjBhYjM1YWFiODY3
ZmM0MTM4ZDAxMWQ0M2Q4Mi4uZjQ5MTI0NjI3ZTZhYjU3MmVjNzkyZjAyN2NjM2Y5Yzg3YzZiOGE3
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2Ny
ZWVuQ2hhbmdlT2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9W
aWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci5oCkBAIC00MSw3ICs0MSw2IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgd2lsbEV4aXRGdWxsc2NyZWVuKCkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBkaWRFeGl0RnVsbHNjcmVlbigpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xlYW51
cEZ1bGxzY3JlZW4oKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb0V4aXRGdWxsc2Ny
ZWVuKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUo
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZ1bGxzY3JlZW5XaWxsUmV0dXJuVG9JbmxpbmUoKSA9
IDA7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUFWS2l0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaAppbmRleCA4YmVmN2U0YzYwMWQ5NmQyOTc3MzBj
MzlkNDgyYjZkNGUyYWJhY2M2Li41MjgwMzAzZTQ4OGFlMjM4MGE1NTljZjVhMTFlZTcxZDJhN2U1
OTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQVZLaXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaApAQCAtMTY2LDYgKzE2Niw3IEBAIHByb3RlY3Rl
ZDoKICAgICB2b2lkIHJldHVyblRvU3RhbmRieSgpOwogICAgIHZvaWQgZG9FbnRlckZ1bGxzY3Jl
ZW4oKTsKICAgICB2b2lkIHdhdGNoZG9nVGltZXJGaXJlZCgpOworICAgIHZvaWQgc3RvcFBpY3R1
cmVJblBpY3R1cmVUaW1lckZpcmVkKCk7CiAgICAgV2ViQVZQbGF5ZXJDb250cm9sbGVyICpwbGF5
ZXJDb250cm9sbGVyKCkgY29uc3Q7CiAKICAgICBSZWY8UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNl
QVZLaXQ+IG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlOwpAQCAtMTgzLDYgKzE4NCw3IEBAIHBy
b3RlY3RlZDoKICAgICBSZXRhaW5QdHI8V2ViQVZQbGF5ZXJMYXllclZpZXc+IG1fcGxheWVyTGF5
ZXJWaWV3OwogICAgIFdURjo6RnVuY3Rpb248dm9pZChib29sKT4gbV9wcmVwYXJlVG9JbmxpbmVD
YWxsYmFjazsKICAgICBSdW5Mb29wOjpUaW1lcjxWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktp
dD4gbV93YXRjaGRvZ1RpbWVyOworICAgIFJ1bkxvb3A6OlRpbWVyPFZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUFWS2l0PiBtX3N0b3BQaWN0dXJlSW5QaWN0dXJlVGltZXI7CiAgICAgRmxvYXRSZWN0
IG1faW5saW5lUmVjdDsKICAgICBSb3V0ZVNoYXJpbmdQb2xpY3kgbV9yb3V0ZVNoYXJpbmdQb2xp
Y3kgeyBSb3V0ZVNoYXJpbmdQb2xpY3k6OkRlZmF1bHQgfTsKICAgICBTdHJpbmcgbV9yb3V0aW5n
Q29udGV4dFVJRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbQppbmRleCAzNjFiZTk0YzEyMjVmOTFh
MmY0MDc0Yjc5NmI1MDQ3ZTVlYTg3NmUwLi4yMzIwNGRhYTdlMDQwOGU3NjdhN2E1MWU4NTYyZWFi
YWVjNGUzMWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCkBAIC04NSw2ICs4NSw3IEBAIHN0
YXRpYyBjb25zdCBjaGFyKiBib29sU3RyaW5nKGJvb2wgdmFsKQogI2VuZGlmCiAKIHN0YXRpYyBj
b25zdCBTZWNvbmRzIGRlZmF1bHRXYXRjaGRvZ1RpbWVySW50ZXJ2YWwgeyAxX3MgfTsKK3N0YXRp
YyBjb25zdCBTZWNvbmRzIHN0b3BQaWN0dXJlSW5QaWN0dXJlVGltZXJJbnRlcnZhbCB7IDFfcyB9
Owogc3RhdGljIGJvb2wgaWdub3JlV2F0Y2hkb2dGb3JEZWJ1Z2dpbmcgPSBmYWxzZTsKIAogQGlu
dGVyZmFjZSBBVlBsYXllclZpZXdDb250cm9sbGVyIChEZXRhaWxzKQpAQCAtODEyLDYgKzgxMyw3
IEBAIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VBVktpdChQbGF5YmFja1Nlc3Npb25JbnRlCiAgICAgOiBtX3BsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZShwbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UpCiAgICAgLCBtX3BsYXllclZpZXdDb250cm9s
bGVyRGVsZWdhdGUoYWRvcHROUyhbW1dlYkFWUGxheWVyVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBh
bGxvY10gaW5pdF0pKQogICAgICwgbV93YXRjaGRvZ1RpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhp
cywgJlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojp3YXRjaGRvZ1RpbWVyRmlyZWQpCisg
ICAgLCBtX3N0b3BQaWN0dXJlSW5QaWN0dXJlVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAm
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnN0b3BQaWN0dXJlSW5QaWN0dXJlVGltZXJG
aXJlZCkKIHsKIH0KIApAQCAtMTA4NCw3ICsxMDg2LDYgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdDo6cHJlcGFyZUZvclBpY3R1cmVJblBpY3R1cmVTdG9wKFdURjo6RnVuY3Rp
b24KICAgICBtX3ByZXBhcmVUb0lubGluZUNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7CiAg
ICAgaWYgKG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKSB7CiAgICAgICAgIG1fZnVsbHNjcmVl
bkNoYW5nZU9ic2VydmVyLT5mdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUoKTsKLSAgICAgICAg
bV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXItPnByZXBhcmVUb0V4aXRGdWxsc2NyZWVuKCk7CiAg
ICAgICAgIGlmIChtX3JlYWR5VG9TdG9wUGljdHVyZUluUGljdHVyZSkKICAgICAgICAgICAgIG1f
ZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLT5mdWxsc2NyZWVuV2lsbFJldHVyblRvSW5saW5lKCk7
CiAgICAgfQpAQCAtMTE3NiwyNSArMTE3NywzNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0OjpkaWRTdG9wUGljdHVyZUluUGljdHVyZSgpCiAKICAgICAgICAgaWYgKG1fZXhp
dEZ1bGxzY3JlZW5OZWVkc0V4aXRQaWN0dXJlSW5QaWN0dXJlKQogICAgICAgICAgICAgZG9FeGl0
RnVsbHNjcmVlbigpOworICAgICAgICBlbHNlIGlmIChtX2V4aXRpbmdQaWN0dXJlSW5QaWN0dXJl
KSB7CisgICAgICAgICAgICBtX2V4aXRpbmdQaWN0dXJlSW5QaWN0dXJlID0gZmFsc2U7CisgICAg
ICAgICAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2RlbCkKKyAgICAgICAgICAgICAgICBtX3Zp
ZGVvRnVsbHNjcmVlbk1vZGVsLT5kaWRFeGl0UGljdHVyZUluUGljdHVyZSgpOworICAgICAgICB9
CiAKICAgICAgICAgaWYgKG1fZW50ZXJGdWxsc2NyZWVuTmVlZHNFeGl0UGljdHVyZUluUGljdHVy
ZSkKICAgICAgICAgICAgIGRvRW50ZXJGdWxsc2NyZWVuKCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKKyAgICBpZiAoIW1fcmVhZHlUb1N0b3BQaWN0dXJlSW5QaWN0dXJlKSB7CisgICAgICAg
IGlmICghbV9zdG9wUGljdHVyZUluUGljdHVyZVRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgICAg
ICBtX3N0b3BQaWN0dXJlSW5QaWN0dXJlVGltZXIuc3RhcnRPbmVTaG90KHN0b3BQaWN0dXJlSW5Q
aWN0dXJlVGltZXJJbnRlcnZhbCk7CisgICAgfSBlbHNlCisgICAgICAgIGNsZWFyTW9kZShIVE1M
TWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJlSW5QaWN0dXJlKTsK
KwogICAgIFttX3BsYXllckxheWVyVmlldyBzZXRCYWNrZ3JvdW5kQ29sb3I6Y2xlYXJVSUNvbG9y
KCldOwogICAgIFtbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XSBzZXRCYWNrZ3JvdW5kQ29s
b3I6Y2xlYXJVSUNvbG9yKCldOwogCi0gICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwpCi0g
ICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwtPnJlcXVlc3RGdWxsc2NyZWVuTW9kZShIVE1M
TWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKLQotICAgIGNsZWFy
TW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJlSW5Q
aWN0dXJlKTsKLQogICAgIGlmIChtX2VudGVyRnVsbHNjcmVlbk5lZWRzRXhpdFBpY3R1cmVJblBp
Y3R1cmUpCiAgICAgICAgIGRvRW50ZXJGdWxsc2NyZWVuKCk7CiAKICAgICBpZiAobV9leGl0RnVs
bHNjcmVlbk5lZWRzRXhpdFBpY3R1cmVJblBpY3R1cmUpCiAgICAgICAgIGRvRXhpdEZ1bGxzY3Jl
ZW4oKTsKKyAgICBlbHNlIGlmIChtX2V4aXRpbmdQaWN0dXJlSW5QaWN0dXJlKSB7CisgICAgICAg
IG1fZXhpdGluZ1BpY3R1cmVJblBpY3R1cmUgPSBmYWxzZTsKKworICAgICAgICBpZiAobV92aWRl
b0Z1bGxzY3JlZW5Nb2RlbCkKKyAgICAgICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwtPmRp
ZEV4aXRQaWN0dXJlSW5QaWN0dXJlKCk7CisgICAgfQogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0OjpwcmVwYXJlRm9yUGljdHVyZUluUGljdHVyZVN0b3BXaXRoQ29tcGxl
dGlvbkhhbmRsZXIodm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShCT09MIHJlc3RvcmVkKSkKQEAg
LTE1NzIsNiArMTU4NSwxMyBAQCBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lkIFZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUFWS2l0Ojp3YXRjaGRvZ1RpbWVyRmlyZWQoKQogICAgIFtbbV9wbGF5
ZXJWaWV3Q29udHJvbGxlciB2aWV3XSBzZXRIaWRkZW46WUVTXTsKIH0KIAordm9pZCBWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c3RvcFBpY3R1cmVJblBpY3R1cmVUaW1lckZpcmVkKCkK
K3sKKyAgICBMT0coRnVsbHNjcmVlbiwgIlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojpz
dG9wUGljdHVyZUluUGljdHVyZVRpbWVyRmlyZWQoJXApIC0gbm90IHJlYWR5IHRvIHN0b3AgcGlj
dHVyZS1pbi1waWN0dXJlIGluICVnczsgZm9yY2luZyBzdG9wIHBpY3R1cmUtaW4tcGljdHVyZS4i
LCB0aGlzLCBzdG9wUGljdHVyZUluUGljdHVyZVRpbWVySW50ZXJ2YWwudmFsdWUoKSk7CisgICAg
bV9zdG9wUGljdHVyZUluUGljdHVyZVRpbWVyLnN0b3AoKTsKKyAgICBjbGVhck1vZGUoSFRNTE1l
ZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUluUGljdHVyZSk7Cit9
CisKIHZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldE1vZGUoSFRNTE1lZGlh
RWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUpCiB7CiAgICAgaWYgKChtX2N1
cnJlbnRNb2RlLm1vZGUoKSAmIG1vZGUpID09IG1vZGUpCkBAIC0xNjA1LDggKzE2MjUsMTUgQEAg
dm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0UmVhZHlUb1N0b3BQaWN0dXJl
SW5QaWN0dXJlKEJPT0wgcmVhZHkpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fcmVhZHlUb1N0
b3BQaWN0dXJlSW5QaWN0dXJlID0gcmVhZHk7Ci0gICAgaWYgKG1fcmVhZHlUb1N0b3BQaWN0dXJl
SW5QaWN0dXJlICYmIG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKQotICAgICAgICBtX2Z1bGxz
Y3JlZW5DaGFuZ2VPYnNlcnZlci0+ZnVsbHNjcmVlbldpbGxSZXR1cm5Ub0lubGluZSgpOworICAg
IGlmIChtX3JlYWR5VG9TdG9wUGljdHVyZUluUGljdHVyZSkgeworICAgICAgICBpZiAobV9zdG9w
UGljdHVyZUluUGljdHVyZVRpbWVyLmlzQWN0aXZlKCkpIHsKKyAgICAgICAgICAgIG1fc3RvcFBp
Y3R1cmVJblBpY3R1cmVUaW1lci5zdG9wKCk7CisgICAgICAgICAgICBjbGVhck1vZGUoSFRNTE1l
ZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUluUGljdHVyZSk7Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAobV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIpCisgICAg
ICAgICAgICBtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci0+ZnVsbHNjcmVlbldpbGxSZXR1cm5U
b0lubGluZSgpOworICAgIH0KIH0KIAogc3RhdGljIE9wdGlvbmFsPGJvb2w+IGlzUGljdHVyZUlu
UGljdHVyZVN1cHBvcnRlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tCmluZGV4IGY4
MzFkNmI4NDQ4YTNkODQ0ZjI0YzhiNDhlMGZjYmViZmQwOTA3ZGEuLjgyMzczODc4OWMxZjgwNjFh
ZGI0YmM3N2ZhYTQ3MTY5N2M5MjA1MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5t
bQpAQCAtMTI4LDcgKzEyOCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsRXhpdEZ1bGxzY3Jl
ZW4oKSBmaW5hbDsKICAgICB2b2lkIGRpZEV4aXRGdWxsc2NyZWVuKCkgZmluYWw7CiAgICAgdm9p
ZCBkaWRDbGVhbnVwRnVsbHNjcmVlbigpIGZpbmFsOwotICAgIHZvaWQgcHJlcGFyZVRvRXhpdEZ1
bGxzY3JlZW4oKSBmaW5hbCB7IH0KICAgICB2b2lkIGZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGlu
ZSgpIGZpbmFsIHsgfQogICAgIHZvaWQgZnVsbHNjcmVlbldpbGxSZXR1cm5Ub0lubGluZSgpIGZp
bmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1ZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZU1hYy5tbQppbmRleCAzM2Y0ZDRhOGYyNGY1OWExMzcxMWJiMGI1
ZTQwMDI4ZTZiMDJlOGVhLi4zMGIxNmZjZTUzMWZlYWVmOTg4OWIxZjkxMWRmN2U4ZGU0ZWNmYzZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9WaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VNYWMubW0KQEAgLTU1MiwxNSArNTUyLDkgQEAgc3RhdGljIGNvbnN0
IGNoYXIqIGJvb2xTdHJpbmcoYm9vbCB2YWwpCiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlTWFjOjpwcmVwYXJlZFRvUmV0dXJuVG9JbmxpbmUoYm9vbCB2aXNpYmxlLCBjb25zdCBJbnRS
ZWN0JiBpbmxpbmVSZWN0LCBOU1dpbmRvdyAqcGFyZW50V2luZG93KQogewotICAgIExPRyhGdWxs
c2NyZWVuLCAiVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjpwcmVwYXJlZFRvUmV0dXJuVG9J
bmxpbmUoJXApLCB2aXNpYmxlOiVzLCBpbmxpbmVSZWN0OnslZCwgJWQsICVkLCAlZH0sIHBhcmVu
dFdpbmRvdzolcCIsIHRoaXMsIGJvb2xTdHJpbmcodmlzaWJsZSksIGlubGluZVJlY3QueCgpLCBp
bmxpbmVSZWN0LnkoKSwgaW5saW5lUmVjdC53aWR0aCgpLCBpbmxpbmVSZWN0LmhlaWdodCgpLCBw
YXJlbnRXaW5kb3cpOwotCi0gICAgaWYgKCF2aXNpYmxlKSB7Ci0gICAgICAgIFttX3dlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZU9iakMgZXhpdFBJUF07Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBBU1NFUlQocGFyZW50V2luZG93KTsKLSAgICBbbV93ZWJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VPYmpDIGV4aXRQSVBBbmltYXRpbmdUb1JlY3Q6KE5TUmVjdClpbmxpbmVSZWN0IGlu
V2luZG93OnBhcmVudFdpbmRvd107CisgICAgVU5VU0VEX1BBUkFNKHZpc2libGUpOworICAgIFVO
VVNFRF9QQVJBTShpbmxpbmVSZWN0KTsKKyAgICBVTlVTRURfUEFSQU0ocGFyZW50V2luZG93KTsK
IH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OmV4dGVybmFsUGxheWJhY2tD
aGFuZ2VkKGJvb2wgZW5hYmxlZCwgUGxheWJhY2tTZXNzaW9uTW9kZWw6OkV4dGVybmFsUGxheWJh
Y2tUYXJnZXRUeXBlLCBjb25zdCBTdHJpbmcmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaAppbmRleCBh
ZDhlZmUzZWE1YWQwZjRmOTQ2ZDdhNGE1NTk0MDRiNzY0NGM1NTkwLi5iMjAyOGZjMjZiZjFjYTFj
OTcyYmU0Y2U4OTAxMWM2MTZkNTFlNDIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaApAQCAtMTEx
LDcgKzExMSw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsRXhpdEZ1bGxzY3JlZW4oKSBmaW5h
bDsKICAgICB2b2lkIGRpZEV4aXRGdWxsc2NyZWVuKCkgZmluYWw7CiAgICAgdm9pZCBkaWRDbGVh
bnVwRnVsbHNjcmVlbigpIGZpbmFsOwotICAgIHZvaWQgcHJlcGFyZVRvRXhpdEZ1bGxzY3JlZW4o
KSBmaW5hbDsKICAgICB2b2lkIGZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZSgpIGZpbmFsOwog
ICAgIHZvaWQgZnVsbHNjcmVlbldpbGxSZXR1cm5Ub0lubGluZSgpIGZpbmFsOwogCkBAIC0xMjQs
NiArMTIzLDE0IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2hhc1ZpZGVvIHsgZmFsc2UgfTsKIH07
CiAKK2NsYXNzIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eUNsaWVudCA6IHB1YmxpYyBDYW5N
YWtlV2Vha1B0cjxWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHlDbGllbnQ+IHsKK3B1YmxpYzoK
KyAgICB2aXJ0dWFsIH5WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHlDbGllbnQoKSB7IH07CisK
KyAgICB2aXJ0dWFsIHZvaWQgZnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lKCkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBoYXNWaWRlb0luUGljdHVyZUluUGljdHVyZURpZENoYW5nZShib29sIHZh
bHVlKSA9IDA7Cit9OworCiBjbGFzcyBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkgOiBwdWJs
aWMgUmVmQ291bnRlZDxWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk+LCBwcml2YXRlIElQQzo6
TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eT4gY3JlYXRlKFdlYlBhZ2VQcm94eSYsIFBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eSYpOwpAQCAtMTQ0LDYgKzE1MSw4IEBAIHB1YmxpYzoKICAgICBib29sIGlzUGxheWlu
Z1ZpZGVvSW5FbmhhbmNlZEZ1bGxzY3JlZW4oKSBjb25zdDsKIAogICAgIFBsYXRmb3JtVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlKiBjb250cm9sc01hbmFnZXJJbnRlcmZhY2UoKTsKKyAgICB2b2lk
IHNldENsaWVudChWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHlDbGllbnQqIGNsaWVudCkgeyBt
X2NsaWVudCA9IG1ha2VXZWFrUHRyKGNsaWVudCk7IH0KKyAgICBWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHlDbGllbnQqIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50LmdldCgpOyB9
CiAKICAgICB2b2lkIGZvckVhY2hTZXNzaW9uKEZ1bmN0aW9uPHZvaWQoV2ViQ29yZTo6VmlkZW9G
dWxsc2NyZWVuTW9kZWwmLCBQbGF0Zm9ybVZpZGVvRnVsbHNjcmVlbkludGVyZmFjZSYpPiYmKTsK
IApAQCAtMjAyLDYgKzIxMSw3IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxQbGF5YmFja1Nlc3Np
b25Db250ZXh0SWRlbnRpZmllciwgTW9kZWxJbnRlcmZhY2VUdXBsZT4gbV9jb250ZXh0TWFwOwog
ICAgIFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIG1fY29udHJvbHNNYW5hZ2VyQ29u
dGV4dElkOwogICAgIEhhc2hNYXA8UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIsIGlu
dD4gbV9jbGllbnRDb3VudHM7CisgICAgV2Vha1B0cjxWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHlDbGllbnQ+IG1fY2xpZW50OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHkubW0KaW5kZXggODEzNzVlMzg2ZDAzYTZmMDdlN2E4ODcwNjQ5MTFjMmQ1YmY0
MjIyYS4uZjBjNWJhZjMzMzZmNTNhZmFhOTg3MjUyY2VjYWMyZjU4MjUxNDA1NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eS5tbQpAQCAtMjg4LDI1ICsyODgsMjIgQEAgdm9pZCBWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbENvbnRleHQ6OnJlcXVlc3RSb3V0ZVNoYXJpbmdQb2xpY3lBbmRDb250ZXh0VUlEKENv
bXBsZXQKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6Um91dGVTaGFyaW5nUG9s
aWN5OjpEZWZhdWx0LCBlbXB0eVN0cmluZygpKTsKIH0KIAotdm9pZCBWaWRlb0Z1bGxzY3JlZW5N
b2RlbENvbnRleHQ6OnByZXBhcmVUb0V4aXRGdWxsc2NyZWVuKCkKK3ZvaWQgVmlkZW9GdWxsc2Ny
ZWVuTW9kZWxDb250ZXh0OjpkaWRFbnRlclBpY3R1cmVJblBpY3R1cmUoKQogewotICAgIGZvciAo
YXV0byYgY2xpZW50IDogY29weVRvVmVjdG9yKG1fY2xpZW50cykpCi0gICAgICAgIGNsaWVudC0+
cHJlcGFyZVRvRXhpdFBpY3R1cmVJblBpY3R1cmUoKTsKKyAgICBpZiAobV9tYW5hZ2VyKQorICAg
ICAgICBtX21hbmFnZXItPmhhc1ZpZGVvSW5QaWN0dXJlSW5QaWN0dXJlRGlkQ2hhbmdlKHRydWUp
OwogfQogCi12b2lkIFZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6d2lsbEVudGVyUGljdHVy
ZUluUGljdHVyZSgpCit2b2lkIFZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6ZGlkRXhpdFBp
Y3R1cmVJblBpY3R1cmUoKQogewotICAgIGZvciAoYXV0byYgY2xpZW50IDogY29weVRvVmVjdG9y
KG1fY2xpZW50cykpCi0gICAgICAgIGNsaWVudC0+d2lsbEVudGVyUGljdHVyZUluUGljdHVyZSgp
OworICAgIGlmIChtX21hbmFnZXIpCisgICAgICAgIG1fbWFuYWdlci0+aGFzVmlkZW9JblBpY3R1
cmVJblBpY3R1cmVEaWRDaGFuZ2UoZmFsc2UpOwogfQogCi12b2lkIFZpZGVvRnVsbHNjcmVlbk1v
ZGVsQ29udGV4dDo6ZGlkRW50ZXJQaWN0dXJlSW5QaWN0dXJlKCkKK3ZvaWQgVmlkZW9GdWxsc2Ny
ZWVuTW9kZWxDb250ZXh0Ojp3aWxsRW50ZXJQaWN0dXJlSW5QaWN0dXJlKCkKIHsKLSAgICBpZiAo
bV9tYW5hZ2VyKQotICAgICAgICBtX21hbmFnZXItPmhhc1ZpZGVvSW5QaWN0dXJlSW5QaWN0dXJl
RGlkQ2hhbmdlKHRydWUpOwotCiAgICAgZm9yIChhdXRvJiBjbGllbnQgOiBjb3B5VG9WZWN0b3Io
bV9jbGllbnRzKSkKLSAgICAgICAgY2xpZW50LT5kaWRFbnRlclBpY3R1cmVJblBpY3R1cmUoKTsK
KyAgICAgICAgY2xpZW50LT53aWxsRW50ZXJQaWN0dXJlSW5QaWN0dXJlKCk7CiB9CiAKIHZvaWQg
VmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpmYWlsZWRUb0VudGVyUGljdHVyZUluUGljdHVy
ZSgpCkBAIC0zMjEsMTUgKzMxOCw2IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0
Ojp3aWxsRXhpdFBpY3R1cmVJblBpY3R1cmUoKQogICAgICAgICBjbGllbnQtPndpbGxFeGl0UGlj
dHVyZUluUGljdHVyZSgpOwogfQogCi12b2lkIFZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6
ZGlkRXhpdFBpY3R1cmVJblBpY3R1cmUoKQotewotICAgIGlmIChtX21hbmFnZXIpCi0gICAgICAg
IG1fbWFuYWdlci0+aGFzVmlkZW9JblBpY3R1cmVJblBpY3R1cmVEaWRDaGFuZ2UoZmFsc2UpOwot
Ci0gICAgZm9yIChhdXRvJiBjbGllbnQgOiBjb3B5VG9WZWN0b3IobV9jbGllbnRzKSkKLSAgICAg
ICAgY2xpZW50LT5kaWRFeGl0UGljdHVyZUluUGljdHVyZSgpOwotfQotCiAjcHJhZ21hIG1hcmsg
LSBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkKIAogUmVmPFZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXJQcm94eT4gVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpjcmVhdGUoV2ViUGFnZVByb3h5
JiBwYWdlLCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkmIHBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eSkKQEAgLTUyMCw2ICs1MDgsOCBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eTo6Zm9yRWFjaFNlc3Npb24oRnVuY3Rpb248dm9pZChWaWRlb0Z1bGxzY3JlZW5Nbwogdm9p
ZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6Omhhc1ZpZGVvSW5QaWN0dXJlSW5QaWN0dXJl
RGlkQ2hhbmdlKGJvb2wgdmFsdWUpCiB7CiAgICAgbV9wYWdlLT51aUNsaWVudCgpLmhhc1ZpZGVv
SW5QaWN0dXJlSW5QaWN0dXJlRGlkQ2hhbmdlKG1fcGFnZSwgdmFsdWUpOworICAgIGlmIChtX2Ns
aWVudCkKKyAgICAgICAgbV9jbGllbnQtPmhhc1ZpZGVvSW5QaWN0dXJlSW5QaWN0dXJlRGlkQ2hh
bmdlKHZhbHVlKTsKIH0KIAogI3ByYWdtYSBtYXJrIE1lc3NhZ2VzIGZyb20gVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlcgpAQCAtODI1LDYgKzgxNSw4IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5OjpmdWxsc2NyZWVuTW9kZUNoYW5nZWQoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkCiB2
b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZnVsbHNjcmVlbk1heVJldHVyblRvSW5s
aW5lKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKIHsKICAgICBt
X3BhZ2UtPmZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZSgpOworICAgIGlmIChtX2NsaWVudCkK
KyAgICAgICAgbV9jbGllbnQtPmZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZSgpOwogfQogCiB2
b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZnVsbHNjcmVlbldpbGxSZXR1cm5Ub0lu
bGluZShQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5X
aW5kb3dDb250cm9sbGVySU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxz
Y3JlZW4vV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcklPUy5tbQppbmRleCA4NmIxNzZkMTE4
OWVjYWYwNDc4MzdmNjNiNGMxNWQxYzFmMDU0MmU4Li5jNTllYTkyYmNmNDc2MTY5N2JhOTI4MGFj
YmNjYmY5YmRlOTQwY2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
ZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVySU9TLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRy
b2xsZXJJT1MubW0KQEAgLTI0LDkgKzI0LDkgQEAKICAqLwogCiAjaW1wb3J0ICJjb25maWcuaCIK
KyNpbXBvcnQgIldLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MuaCIKIAogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpICYmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLSNpbXBvcnQgIldLRnVs
bFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MuaCIKIAogI2ltcG9ydCAiVUlLaXRTUEkuaCIKICNp
bXBvcnQgIlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oIgpAQCAtNDI3LDYxICs0MjcsMzIg
QEAgc3RhdGljIGNvbnN0IE5TVGltZUludGVydmFsIGtBbmltYXRpb25EdXJhdGlvbiA9IDAuMjsK
IAogI3ByYWdtYSBtYXJrIC0KIAotQGludGVyZmFjZSBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9s
bGVyIChWaWRlb0Z1bGxzY3JlZW5DbGllbnRDYWxsYmFja3MpCi0tICh2b2lkKXdpbGxFbnRlclBp
Y3R1cmVJblBpY3R1cmU7CitAaW50ZXJmYWNlIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIg
KFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eUNsaWVudCkKIC0gKHZvaWQpZGlkRW50ZXJQaWN0
dXJlSW5QaWN0dXJlOwotLSAodm9pZClmYWlsZWRUb0VudGVyUGljdHVyZUluUGljdHVyZTsKIC0g
KHZvaWQpcHJlcGFyZVRvRXhpdFBpY3R1cmVJblBpY3R1cmU7CiAtICh2b2lkKWRpZEV4aXRQaWN0
dXJlSW5QaWN0dXJlOwogQGVuZAogCi1jbGFzcyBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVy
VmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQgOiBXZWJDb3JlOjpWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bENsaWVudCB7CitjbGFzcyBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5Q2xpZW50IDogcHVibGljIFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5Q2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICB2b2lkIHNldFBhcmVudChXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyICpwYXJlbnQp
IHsgbV9wYXJlbnQgPSBwYXJlbnQ7IH0KIAotICAgIHZvaWQgc2V0SW50ZXJmYWNlKFdlYkNvcmU6
OlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0KiBpbnRlcmZhY2UpCi0gICAgewotICAgICAg
ICBpZiAobV9pbnRlcmZhY2UgPT0gaW50ZXJmYWNlKQotICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgIGlmIChtX2ludGVyZmFjZSAmJiBtX2ludGVyZmFjZS0+dmlkZW9GdWxsc2NyZWVuTW9k
ZWwoKSkKLSAgICAgICAgICAgIG1faW50ZXJmYWNlLT52aWRlb0Z1bGxzY3JlZW5Nb2RlbCgpLT5y
ZW1vdmVDbGllbnQoKnRoaXMpOwotICAgICAgICBtX2ludGVyZmFjZSA9IGludGVyZmFjZTsKLSAg
ICAgICAgaWYgKG1faW50ZXJmYWNlICYmIG1faW50ZXJmYWNlLT52aWRlb0Z1bGxzY3JlZW5Nb2Rl
bCgpKQotICAgICAgICAgICAgbV9pbnRlcmZhY2UtPnZpZGVvRnVsbHNjcmVlbk1vZGVsKCktPmFk
ZENsaWVudCgqdGhpcyk7Ci0gICAgfQotCi0gICAgV2ViQ29yZTo6VmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQqIGludGVyZmFjZSgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJmYWNlLmdldCgp
OyB9Ci0KLSAgICB2b2lkIHdpbGxFbnRlclBpY3R1cmVJblBpY3R1cmUoKSBmaW5hbAotICAgIHsK
LSAgICAgICAgW21fcGFyZW50IHdpbGxFbnRlclBpY3R1cmVJblBpY3R1cmVdOwotICAgIH0KLQot
ICAgIHZvaWQgZGlkRW50ZXJQaWN0dXJlSW5QaWN0dXJlKCkgZmluYWwKLSAgICB7Ci0gICAgICAg
IFttX3BhcmVudCBkaWRFbnRlclBpY3R1cmVJblBpY3R1cmVdOwotICAgIH0KLQotICAgIHZvaWQg
ZmFpbGVkVG9FbnRlclBpY3R1cmVJblBpY3R1cmUoKSBmaW5hbAotICAgIHsKLSAgICAgICAgW21f
cGFyZW50IGZhaWxlZFRvRW50ZXJQaWN0dXJlSW5QaWN0dXJlXTsKLSAgICB9Ci0KLSAgICB2b2lk
IHByZXBhcmVUb0V4aXRQaWN0dXJlSW5QaWN0dXJlKCkgZmluYWwKK3ByaXZhdGU6CisgICAgdm9p
ZCBmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUoKSBmaW5hbAogICAgIHsKICAgICAgICAgW21f
cGFyZW50IHByZXBhcmVUb0V4aXRQaWN0dXJlSW5QaWN0dXJlXTsKICAgICB9CiAKLSAgICB2b2lk
IGRpZEV4aXRQaWN0dXJlSW5QaWN0dXJlKCkgZmluYWwKKyAgICB2b2lkIGhhc1ZpZGVvSW5QaWN0
dXJlSW5QaWN0dXJlRGlkQ2hhbmdlKGJvb2wgdmFsdWUpIGZpbmFsCiAgICAgewotICAgICAgICBb
bV9wYXJlbnQgZGlkRXhpdFBpY3R1cmVJblBpY3R1cmVdOworICAgICAgICBpZiAodmFsdWUpCisg
ICAgICAgICAgICBbbV9wYXJlbnQgZGlkRW50ZXJQaWN0dXJlSW5QaWN0dXJlXTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgW21fcGFyZW50IGRpZEV4aXRQaWN0dXJlSW5QaWN0dXJlXTsKICAg
ICB9CiAKLXByaXZhdGU6CiAgICAgV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlciAqbV9wYXJl
bnQgeyBudWxscHRyIH07Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0PiBtX2ludGVyZmFjZTsKIH07CiAKICNwcmFnbWEgbWFyayAtCkBAIC01MDMsOCAr
NDc0LDkgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8VUlQaW5jaEdlc3R1cmVSZWNvZ25pemVy
PiBfaW50ZXJhY3RpdmVQaW5jaERpc21pc3NHZXN0dXJlUmVjb2duaXplcjsKICAgICBSZXRhaW5Q
dHI8V0tGdWxsU2NyZWVuSW50ZXJhY3RpdmVUcmFuc2l0aW9uPiBfaW50ZXJhY3RpdmVEaXNtaXNz
VHJhbnNpdGlvbkNvb3JkaW5hdG9yOwogCi0gICAgV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxl
clZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50IF92aWRlb0Z1bGxzY3JlZW5DbGllbnQ7CisgICAg
V0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlclZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eUNs
aWVudCBfdmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Q2xpZW50OwogICAgIEJPT0wgX2luUGlj
dHVyZUluUGljdHVyZTsKKyAgICBCT09MIF9lbnRlckZ1bGxzY3JlZW5OZWVkc0V4aXRQaWN0dXJl
SW5QaWN0dXJlOwogICAgIEJPT0wgX3JldHVyblRvRnVsbHNjcmVlbkZyb21QaWN0dXJlSW5QaWN0
dXJlOwogCiAgICAgQ0dSZWN0IF9pbml0aWFsRnJhbWU7CkBAIC01MjgsNyArNTAwLDcgQEAgcHJp
dmF0ZToKICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIHNlbGYuX3dlYlZpZXcgPSB3ZWJWaWV3
OwotICAgIF92aWRlb0Z1bGxzY3JlZW5DbGllbnQuc2V0UGFyZW50KHNlbGYpOworICAgIF92aWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHlDbGllbnQuc2V0UGFyZW50KHNlbGYpOwogCiAgICAgcmV0
dXJuIHNlbGY7CiB9CkBAIC01MzgsOCArNTEwLDcgQEAgcHJpdmF0ZToKICAgICBbTlNPYmplY3Qg
Y2FuY2VsUHJldmlvdXNQZXJmb3JtUmVxdWVzdHNXaXRoVGFyZ2V0OnNlbGZdOwogICAgIFtbTlNO
b3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6c2VsZl07CiAK
LSAgICBfdmlkZW9GdWxsc2NyZWVuQ2xpZW50LnNldEludGVyZmFjZShudWxscHRyKTsKLSAgICBf
dmlkZW9GdWxsc2NyZWVuQ2xpZW50LnNldFBhcmVudChudWxscHRyKTsKKyAgICBfdmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5Q2xpZW50LnNldFBhcmVudChudWxscHRyKTsKIAogICAgIFtzdXBl
ciBkZWFsbG9jXTsKIH0KQEAgLTcyNSwxNSArNjk2LDIzIEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICBtYW5hZ2VyLT5zZXRBbmltYXRpbmdGdWxsU2NyZWVuKGZhbHNlKTsKICAgICAgICAgICAgIHBh
Z2UtPnNldFN1cHByZXNzVmlzaWJpbGl0eVVwZGF0ZXMoZmFsc2UpOwogCi0gICAgICAgICAgICBh
dXRvKiB2aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyID0gcGFnZS0+dmlkZW9GdWxsc2NyZWVuTWFuYWdl
cigpOwotICAgICAgICAgICAgYXV0byogdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlID0gdmlkZW9G
dWxsc2NyZWVuTWFuYWdlciA/IHZpZGVvRnVsbHNjcmVlbk1hbmFnZXItPmNvbnRyb2xzTWFuYWdl
ckludGVyZmFjZSgpIDogbnVsbHB0cjsKLSAgICAgICAgICAgIGlmIChfcmV0dXJuVG9GdWxsc2Ny
ZWVuRnJvbVBpY3R1cmVJblBpY3R1cmUpIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQodmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlKTsKLSAgICAgICAgICAgICAgICBfcmV0dXJuVG9GdWxsc2NyZWVu
RnJvbVBpY3R1cmVJblBpY3R1cmUgPSBOTzsKLSAgICAgICAgICAgICAgICBpZiAodmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlKQotICAgICAgICAgICAgICAgICAgICB2aWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2UtPnNldFJlYWR5VG9TdG9wUGljdHVyZUluUGljdHVyZShZRVMpOwotICAgICAgICAgICAg
fSBlbHNlCi0gICAgICAgICAgICAgICAgX3ZpZGVvRnVsbHNjcmVlbkNsaWVudC5zZXRJbnRlcmZh
Y2UodmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlKTsKKyAgICAgICAgICAgIGlmIChhdXRvKiB2aWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyID0gc2VsZi5fdmlkZW9GdWxsc2NyZWVuTWFuYWdlcikgeworICAg
ICAgICAgICAgICAgIEFTU0VSVCh2aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLT5jbGllbnQoKSA9PSBu
dWxscHRyKTsKKyAgICAgICAgICAgICAgICB2aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLT5zZXRDbGll
bnQoJl92aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHlDbGllbnQpOworICAgICAgICAgICAgICAg
IGF1dG8qIHZpZGVvRnVsbHNjcmVlbkludGVyZmFjZSA9IHZpZGVvRnVsbHNjcmVlbk1hbmFnZXIg
PyB2aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLT5jb250cm9sc01hbmFnZXJJbnRlcmZhY2UoKSA6IG51
bGxwdHI7CisgICAgICAgICAgICAgICAgaWYgKHZpZGVvRnVsbHNjcmVlbkludGVyZmFjZSkgewor
ICAgICAgICAgICAgICAgICAgICBpZiAoX3JldHVyblRvRnVsbHNjcmVlbkZyb21QaWN0dXJlSW5Q
aWN0dXJlKQorICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
LT5zZXRSZWFkeVRvU3RvcFBpY3R1cmVJblBpY3R1cmUoWUVTKTsKKyAgICAgICAgICAgICAgICAg
ICAgZWxzZSBpZiAoX2luUGljdHVyZUluUGljdHVyZSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGF1dG8qIG1vZGVsID0gdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlLT52aWRlb0Z1bGxz
Y3JlZW5Nb2RlbCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2VudGVyRnVsbHNj
cmVlbk5lZWRzRXhpdFBpY3R1cmVJblBpY3R1cmUgPSBZRVM7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbW9kZWwtPnJlcXVlc3RGdWxsc2NyZWVuTW9kZShXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgX3JldHVyblRvRnVsbHNjcmVlbkZyb21QaWN0dXJlSW5Q
aWN0dXJlID0gTk87CiAKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtODUwLDYg
KzgyOSwxMyBAQCBwcml2YXRlOgogICAgICAgICBtYW5hZ2VyLT5kaWRFeGl0RnVsbFNjcmVlbigp
OwogICAgIH0KIAorICAgIGlmICghX2luUGljdHVyZUluUGljdHVyZSkgeworICAgICAgICBpZiAo
YXV0byogdmlkZW9GdWxsc2NyZWVuTWFuYWdlciA9IHNlbGYuX3ZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXIpIHsKKyAgICAgICAgICAgIEFTU0VSVCh2aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLT5jbGllbnQo
KSA9PSAmX3ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eUNsaWVudCk7CisgICAgICAgICAgICB2
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLT5zZXRDbGllbnQobnVsbHB0cik7CisgICAgICAgIH0KKyAg
ICB9CisKICAgICBbX3dpbmRvdyBzZXRIaWRkZW46WUVTXTsKICAgICBfd2luZG93ID0gbmlsOwog
CkBAIC04NjgsOSArODU0LDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHBhZ2UtPnNldE5lZWRz
RE9NV2luZG93UmVzaXplRXZlbnQoKTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICghX2luUGlj
dHVyZUluUGljdHVyZSkKLSAgICAgICAgICAgIF92aWRlb0Z1bGxzY3JlZW5DbGllbnQuc2V0SW50
ZXJmYWNlKG51bGxwdHIpOwotCiAgICAgICAgIF9leGl0UmVxdWVzdGVkID0gTk87CiAgICAgICAg
IF9leGl0aW5nRnVsbFNjcmVlbiA9IE5POwogICAgICAgICBpZiAoX2VudGVyUmVxdWVzdGVkKSB7
CkBAIC05MDQsMTEgKzg4Nyw2IEBAIHByaXZhdGU6CiB7CiAgICAgaWYgKF9mdWxsc2NyZWVuVmll
d0NvbnRyb2xsZXIpCiAgICAgICAgIFtfZnVsbHNjcmVlblZpZXdDb250cm9sbGVyIHZpZGVvQ29u
dHJvbHNNYW5hZ2VyRGlkQ2hhbmdlXTsKLQotICAgIGF1dG8gcGFnZSA9IFtzZWxmLl93ZWJWaWV3
IF9wYWdlXTsKLSAgICBhdXRvKiB2aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyID0gcGFnZSA/IHBhZ2Ut
PnZpZGVvRnVsbHNjcmVlbk1hbmFnZXIoKSA6IG51bGxwdHI7Ci0gICAgYXV0byogdmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlID0gdmlkZW9GdWxsc2NyZWVuTWFuYWdlciA/IHZpZGVvRnVsbHNjcmVl
bk1hbmFnZXItPmNvbnRyb2xzTWFuYWdlckludGVyZmFjZSgpIDogbnVsbHB0cjsKLSAgICBfdmlk
ZW9GdWxsc2NyZWVuQ2xpZW50LnNldEludGVyZmFjZSh2aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2Up
OwogfQogCiAtICh2b2lkKXBsYWNlaG9sZGVyV2lsbE1vdmVUb1N1cGVydmlldzooVUlWaWV3ICop
c3VwZXJ2aWV3CkBAIC05MjIsMzcgKzkwMCwyMyBAQCBwcml2YXRlOgogICAgIH0pOwogfQogCi0t
ICh2b2lkKXdpbGxFbnRlclBpY3R1cmVJblBpY3R1cmUKLXsKLSAgICBhdXRvKiBpbnRlcmZhY2Ug
PSBfdmlkZW9GdWxsc2NyZWVuQ2xpZW50LmludGVyZmFjZSgpOwotICAgIGlmICghaW50ZXJmYWNl
IHx8ICFpbnRlcmZhY2UtPnBpY3R1cmVJblBpY3R1cmVXYXNTdGFydGVkV2hlbkVudGVyaW5nQmFj
a2dyb3VuZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBbX2Z1bGxzY3JlZW5WaWV3Q29udHJv
bGxlciBzZXRBbmltYXRpbmdWaWV3QWxwaGE6MF07Ci19Ci0KIC0gKHZvaWQpZGlkRW50ZXJQaWN0
dXJlSW5QaWN0dXJlCiB7CiAgICAgX2luUGljdHVyZUluUGljdHVyZSA9IFlFUzsKICAgICBbc2Vs
ZiByZXF1ZXN0RXhpdEZ1bGxTY3JlZW5dOwogfQogCi0tICh2b2lkKWZhaWxlZFRvRW50ZXJQaWN0
dXJlSW5QaWN0dXJlCistICh2b2lkKXByZXBhcmVUb0V4aXRQaWN0dXJlSW5QaWN0dXJlCiB7Ci0g
ICAgYXV0byogaW50ZXJmYWNlID0gX3ZpZGVvRnVsbHNjcmVlbkNsaWVudC5pbnRlcmZhY2UoKTsK
LSAgICBpZiAoIWludGVyZmFjZSB8fCAhaW50ZXJmYWNlLT5waWN0dXJlSW5QaWN0dXJlV2FzU3Rh
cnRlZFdoZW5FbnRlcmluZ0JhY2tncm91bmQoKSkKKyAgICBpZiAoX2VudGVyRnVsbHNjcmVlbk5l
ZWRzRXhpdFBpY3R1cmVJblBpY3R1cmUpCiAgICAgICAgIHJldHVybjsKIAotICAgIFtfZnVsbHNj
cmVlblZpZXdDb250cm9sbGVyIHNldEFuaW1hdGluZ1ZpZXdBbHBoYToxXTsKLX0KKyAgICBhdXRv
KiB2aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UgPSBzZWxmLl92aWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
ID8gc2VsZi5fdmlkZW9GdWxsc2NyZWVuTWFuYWdlci0+Y29udHJvbHNNYW5hZ2VySW50ZXJmYWNl
KCkgOiBudWxscHRyOwogCi0tICh2b2lkKXByZXBhcmVUb0V4aXRQaWN0dXJlSW5QaWN0dXJlCi17
Ci0gICAgYXV0byogaW50ZXJmYWNlID0gX3ZpZGVvRnVsbHNjcmVlbkNsaWVudC5pbnRlcmZhY2Uo
KTsKLSAgICBpZiAoIWludGVyZmFjZSkKKyAgICBpZiAoIXZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaW50ZXJmYWNlLT5zZXRSZWFkeVRvU3RvcFBpY3R1
cmVJblBpY3R1cmUoTk8pOworICAgIHZpZGVvRnVsbHNjcmVlbkludGVyZmFjZS0+c2V0UmVhZHlU
b1N0b3BQaWN0dXJlSW5QaWN0dXJlKE5PKTsKICAgICBfcmV0dXJuVG9GdWxsc2NyZWVuRnJvbVBp
Y3R1cmVJblBpY3R1cmUgPSBZRVM7CiAKICAgICBpZiAoIV9leGl0aW5nRnVsbFNjcmVlbikKQEAg
LTk2NCw4ICs5MjgsMTMgQEAgcHJpdmF0ZToKIC0gKHZvaWQpZGlkRXhpdFBpY3R1cmVJblBpY3R1
cmUKIHsKICAgICBfaW5QaWN0dXJlSW5QaWN0dXJlID0gTk87Ci0gICAgaWYgKCFfcmV0dXJuVG9G
dWxsc2NyZWVuRnJvbVBpY3R1cmVJblBpY3R1cmUgJiYgIVtzZWxmIGlzRnVsbFNjcmVlbl0pCi0g
ICAgICAgIF92aWRlb0Z1bGxzY3JlZW5DbGllbnQuc2V0SW50ZXJmYWNlKG51bGxwdHIpOworICAg
IF9lbnRlckZ1bGxzY3JlZW5OZWVkc0V4aXRQaWN0dXJlSW5QaWN0dXJlID0gTk87CisgICAgaWYg
KCFbc2VsZiBpc0Z1bGxTY3JlZW5dKSB7CisgICAgICAgIGlmIChhdXRvKiB2aWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyID0gc2VsZi5fdmlkZW9GdWxsc2NyZWVuTWFuYWdlcikgeworICAgICAgICAgICAg
QVNTRVJUKHZpZGVvRnVsbHNjcmVlbk1hbmFnZXItPmNsaWVudCgpID09ICZfdmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5Q2xpZW50KTsKKyAgICAgICAgICAgIHZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXItPnNldENsaWVudChudWxscHRyKTsKKyAgICAgICAgfQorICAgIH0KIH0KIAogI3ByYWdtYSBt
YXJrIC0KQEAgLTExNDEsNiArMTExMCwxMyBAQCBwcml2YXRlOgogICAgIHJldHVybiBudWxscHRy
OwogfQogCistIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eSopX3ZpZGVvRnVs
bHNjcmVlbk1hbmFnZXIKK3sKKyAgICBpZiAoYXV0byBwYWdlID0gW3NlbGYuX3dlYlZpZXcgX3Bh
Z2VdKQorICAgICAgICByZXR1cm4gcGFnZS0+dmlkZW9GdWxsc2NyZWVuTWFuYWdlcigpOworICAg
IHJldHVybiBudWxscHRyOworfQorCiAtICh2b2lkKV9zdGFydFRvRGlzbWlzc0Z1bGxzY3JlZW5D
aGFuZ2VkOihpZClzZW5kZXIKIHsKICAgICBpZiAoX2luSW50ZXJhY3RpdmVEaXNtaXNzKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0Nv
bnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5k
b3dDb250cm9sbGVyLmgKaW5kZXggN2E2NDNjYTYwZGI2NDA3MDIxMzc1MzllMzAzNjkwM2M2NjEz
ZTU3MC4uZGE1OGI5ZTllMDkxZDgwZDhjZTY0MjhlMTM1NzlmNDQxY2NhMDQ3MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xs
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93
Q29udHJvbGxlci5oCkBAIC0zNCw3ICszNCw2IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsgCiBjbGFz
cyBMYXllclRyZWVDb250ZXh0OwogY2xhc3MgV2ViUGFnZVByb3h5OwotY2xhc3MgV0tGdWxsU2Ny
ZWVuV2luZG93Q29udHJvbGxlclZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50OwogfQogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC02NCw3ICs2Myw2IEBAIHR5cGVkZWYgZW51bSBGdWxsU2NyZWVu
U3RhdGUgOiBOU0ludGVnZXIgRnVsbFNjcmVlblN0YXRlOwogCiAgICAgZG91YmxlIF9zYXZlZFNj
YWxlOwogICAgIFJlZlB0cjxXZWJLaXQ6OlZvaWRDYWxsYmFjaz4gX3JlcGFpbnRDYWxsYmFjazsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0OjpXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVy
VmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQ+IF92aWRlb0Z1bGxzY3JlZW5DbGllbnQ7CiAgICAg
ZmxvYXQgX3NhdmVkVG9wQ29udGVudEluc2V0OwogfQogCkBAIC04Nyw4ICs4NSw2IEBAIHR5cGVk
ZWYgZW51bSBGdWxsU2NyZWVuU3RhdGUgOiBOU0ludGVnZXIgRnVsbFNjcmVlblN0YXRlOwogLSAo
dm9pZCliZWdhbkV4aXRGdWxsU2NyZWVuV2l0aEluaXRpYWxGcmFtZTooTlNSZWN0KWluaXRpYWxG
cmFtZSBmaW5hbEZyYW1lOihOU1JlY3QpZmluYWxGcmFtZTsKIAogLSAodm9pZCl2aWRlb0NvbnRy
b2xzTWFuYWdlckRpZENoYW5nZTsKLS0gKHZvaWQpZGlkRW50ZXJQaWN0dXJlSW5QaWN0dXJlOwot
LSAodm9pZClkaWRFeGl0UGljdHVyZUluUGljdHVyZTsKIAogQGVuZAogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9s
bGVyLm1tCmluZGV4IDQ4NWJkOTBmM2UwOWI1Y2RjNDBiNzljMDJiMWZkNThkYTAyYmE1MmIuLjQ0
ZjA3NzFlNjg5MzkzY2QxZDAyYWY1MjdlODI4MDM0YzIzYjhhYjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9s
bGVyLm1tCkBAIC0yNCwxMSArMjQsMTAgQEAKICAqLwogCiAjaW1wb3J0ICJjb25maWcuaCIKKyNp
bXBvcnQgIldLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaCIKIAogI2lmIEVOQUJMRShGVUxM
U0NSRUVOX0FQSSkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKLSNpbXBvcnQgIldLRnVsbFNj
cmVlbldpbmRvd0NvbnRyb2xsZXIuaCIKLQogI2ltcG9ydCAiQXBwS2l0U1BJLmgiCiAjaW1wb3J0
ICJMYXllclRyZWVDb250ZXh0LmgiCiAjaW1wb3J0ICJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHkuaCIKQEAgLTU0LDQ0ICs1MywzMiBAQAogCiBzdGF0aWMgY29uc3QgTlNUaW1lSW50ZXJ2YWwg
RGVmYXVsdFdhdGNoZG9nVGltZXJJbnRlcnZhbCA9IDE7CiAKLW5hbWVzcGFjZSBXZWJLaXQgewor
QGludGVyZmFjZSBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyIChWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHlDbGllbnQpCistICh2b2lkKWRpZEVudGVyUGljdHVyZUluUGljdHVyZTsKKy0g
KHZvaWQpZGlkRXhpdFBpY3R1cmVJblBpY3R1cmU7CitAZW5kCiAKLWNsYXNzIFdLRnVsbFNjcmVl
bldpbmRvd0NvbnRyb2xsZXJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudCA6IFdlYkNvcmU6OlZp
ZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50IHsKK2NsYXNzIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRy
b2xsZXJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHlDbGllbnQgOiBwdWJsaWMgV2ViS2l0OjpW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHlDbGllbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIHZvaWQgc2V0UGFyZW50KFdLRnVsbFNjcmVlbldpbmRvd0Nv
bnRyb2xsZXIgKnBhcmVudCkgeyBtX3BhcmVudCA9IHBhcmVudDsgfQogCi0gICAgdm9pZCBzZXRJ
bnRlcmZhY2UoV2ViQ29yZTo6VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjKiBpbnRlcmZhY2Up
Ci0gICAgewotICAgICAgICBpZiAobV9pbnRlcmZhY2UgPT0gaW50ZXJmYWNlKQotICAgICAgICAg
ICAgcmV0dXJuOwotCi0gICAgICAgIGlmIChtX2ludGVyZmFjZSAmJiBtX2ludGVyZmFjZS0+dmlk
ZW9GdWxsc2NyZWVuTW9kZWwoKSkKLSAgICAgICAgICAgIG1faW50ZXJmYWNlLT52aWRlb0Z1bGxz
Y3JlZW5Nb2RlbCgpLT5yZW1vdmVDbGllbnQoKnRoaXMpOwotICAgICAgICBtX2ludGVyZmFjZSA9
IGludGVyZmFjZTsKLSAgICAgICAgaWYgKG1faW50ZXJmYWNlICYmIG1faW50ZXJmYWNlLT52aWRl
b0Z1bGxzY3JlZW5Nb2RlbCgpKQotICAgICAgICAgICAgbV9pbnRlcmZhY2UtPnZpZGVvRnVsbHNj
cmVlbk1vZGVsKCktPmFkZENsaWVudCgqdGhpcyk7Ci0gICAgfQotCi0gICAgV2ViQ29yZTo6Vmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjKiBpbnRlcmZhY2UoKSBjb25zdCB7IHJldHVybiBtX2lu
dGVyZmFjZS5nZXQoKTsgfQotCi0gICAgdm9pZCBkaWRFbnRlclBpY3R1cmVJblBpY3R1cmUoKSBm
aW5hbAorcHJpdmF0ZToKKyAgICB2b2lkIGZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZSgpIGZp
bmFsCiAgICAgewotICAgICAgICBbbV9wYXJlbnQgZGlkRW50ZXJQaWN0dXJlSW5QaWN0dXJlXTsK
ICAgICB9CiAKLSAgICB2b2lkIGRpZEV4aXRQaWN0dXJlSW5QaWN0dXJlKCkgZmluYWwKKyAgICB2
b2lkIGhhc1ZpZGVvSW5QaWN0dXJlSW5QaWN0dXJlRGlkQ2hhbmdlKGJvb2wgdmFsdWUpIGZpbmFs
CiAgICAgewotICAgICAgICBbbV9wYXJlbnQgZGlkRXhpdFBpY3R1cmVJblBpY3R1cmVdOworICAg
ICAgICBpZiAodmFsdWUpCisgICAgICAgICAgICBbbV9wYXJlbnQgZGlkRW50ZXJQaWN0dXJlSW5Q
aWN0dXJlXTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgW21fcGFyZW50IGRpZEV4aXRQaWN0
dXJlSW5QaWN0dXJlXTsKICAgICB9CiAKLXByaXZhdGU6CiAgICAgV0tGdWxsU2NyZWVuV2luZG93
Q29udHJvbGxlciAqbV9wYXJlbnQgeyBudWxscHRyIH07Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYz4gbV9pbnRlcmZhY2U7CiB9OwogCi19Ci0KIGVudW0g
RnVsbFNjcmVlblN0YXRlIDogTlNJbnRlZ2VyIHsKICAgICBOb3RJbkZ1bGxTY3JlZW4sCiAgICAg
V2FpdGluZ1RvRW50ZXJGdWxsU2NyZWVuLApAQCAtMTE5LDcgKzEwNiw5IEBAIHN0YXRpYyB2b2lk
IG1ha2VSZXNwb25kZXJGaXJzdFJlc3BvbmRlcklmRGVzY2VuZGFudE9mVmlldyhOU1dpbmRvdyAq
d2luZG93LCBOU1JlCiAgICAgICAgIFt3aW5kb3cgbWFrZUZpcnN0UmVzcG9uZGVyOnJlc3BvbmRl
cl07CiB9CiAKLUBpbXBsZW1lbnRhdGlvbiBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyCitA
aW1wbGVtZW50YXRpb24gV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlciB7CisgICAgV0tGdWxs
U2NyZWVuV2luZG93Q29udHJvbGxlclZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eUNsaWVudCBf
dmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Q2xpZW50OworfQogCiAjcHJhZ21hIG1hcmsgLQog
I3ByYWdtYSBtYXJrIEluaXRpYWxpemF0aW9uCkBAIC0xNTUsOCArMTQ0LDcgQEAgc3RhdGljIHZv
aWQgbWFrZVJlc3BvbmRlckZpcnN0UmVzcG9uZGVySWZEZXNjZW5kYW50T2ZWaWV3KE5TV2luZG93
ICp3aW5kb3csIE5TUmUKICAgICBfd2ViVmlldyA9IHdlYlZpZXc7CiAgICAgX3BhZ2UgPSBwYWdl
LnB0cigpOwogCi0gICAgX3ZpZGVvRnVsbHNjcmVlbkNsaWVudCA9IG1ha2VVbmlxdWU8V2ViS2l0
OjpXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyVmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQ+
KCk7Ci0gICAgX3ZpZGVvRnVsbHNjcmVlbkNsaWVudC0+c2V0UGFyZW50KHNlbGYpOworICAgIF92
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHlDbGllbnQuc2V0UGFyZW50KHNlbGYpOwogCiAgICAg
W3NlbGYgdmlkZW9Db250cm9sc01hbmFnZXJEaWRDaGFuZ2VdOwogCkBAIC0xNzgsOCArMTY2LDcg
QEAgc3RhdGljIHZvaWQgbWFrZVJlc3BvbmRlckZpcnN0UmVzcG9uZGVySWZEZXNjZW5kYW50T2ZW
aWV3KE5TV2luZG93ICp3aW5kb3csIE5TUmUKICAgICAgICAgQVNTRVJUKCFfcmVwYWludENhbGxi
YWNrKTsKICAgICB9CiAKLSAgICBfdmlkZW9GdWxsc2NyZWVuQ2xpZW50LT5zZXRQYXJlbnQobmls
KTsKLSAgICBfdmlkZW9GdWxsc2NyZWVuQ2xpZW50LT5zZXRJbnRlcmZhY2UobnVsbHB0cik7Cisg
ICAgX3ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eUNsaWVudC5zZXRQYXJlbnQobnVsbHB0cik7
CiAKICAgICBbc3VwZXIgZGVhbGxvY107CiB9CkBAIC02NTUsMTAgKzY0Miw2IEBAIHN0YXRpYyBS
ZXRhaW5QdHI8Q0dJbWFnZVJlZj4gdGFrZVdpbmRvd1NuYXBzaG90KENHU1dpbmRvd0lEIHdpbmRv
d0lELCBib29sIGNhcHR1CiAKIC0gKHZvaWQpdmlkZW9Db250cm9sc01hbmFnZXJEaWRDaGFuZ2UK
IHsKLSAgICBhdXRvKiB2aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyID0gX3BhZ2UgPyBfcGFnZS0+dmlk
ZW9GdWxsc2NyZWVuTWFuYWdlcigpIDogbnVsbHB0cjsKLSAgICBhdXRvKiB2aWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2UgPSB2aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyID8gdmlkZW9GdWxsc2NyZWVuTWFu
YWdlci0+Y29udHJvbHNNYW5hZ2VySW50ZXJmYWNlKCkgOiBudWxscHRyOwotCi0gICAgX3ZpZGVv
RnVsbHNjcmVlbkNsaWVudC0+c2V0SW50ZXJmYWNlKHZpZGVvRnVsbHNjcmVlbkludGVyZmFjZSk7
CiB9CiAKIC0gKHZvaWQpZGlkRW50ZXJQaWN0dXJlSW5QaWN0dXJlCkBAIC02NjgsNyArNjUxLDEw
IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gdGFrZVdpbmRvd1NuYXBzaG90KENHU1dp
bmRvd0lEIHdpbmRvd0lELCBib29sIGNhcHR1CiAKIC0gKHZvaWQpZGlkRXhpdFBpY3R1cmVJblBp
Y3R1cmUKIHsKLSAgICBfdmlkZW9GdWxsc2NyZWVuQ2xpZW50LT5zZXRJbnRlcmZhY2UobnVsbHB0
cik7CisgICAgaWYgKGF1dG8qIHZpZGVvRnVsbHNjcmVlbk1hbmFnZXIgPSBzZWxmLl92aWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyKSB7CisgICAgICAgIEFTU0VSVCh2aWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
LT5jbGllbnQoKSA9PSAmX3ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eUNsaWVudCk7CisgICAg
ICAgIHZpZGVvRnVsbHNjcmVlbk1hbmFnZXItPnNldENsaWVudChudWxscHRyKTsKKyAgICB9CiB9
CiAKICNwcmFnbWEgbWFyayAtCkBAIC03MDIsNiArNjg4LDExIEBAIHN0YXRpYyBSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4gdGFrZVdpbmRvd1NuYXBzaG90KENHU1dpbmRvd0lEIHdpbmRvd0lELCBib29s
IGNhcHR1CiAtICh2b2lkKXdpbmRvd0RpZEVudGVyRnVsbFNjcmVlbjooTlNOb3RpZmljYXRpb24g
Kilub3RpZmljYXRpb24KIHsKICAgICBbc2VsZiBmaW5pc2hlZEVudGVyRnVsbFNjcmVlbkFuaW1h
dGlvbjpZRVNdOworCisgICAgaWYgKGF1dG8qIHZpZGVvRnVsbHNjcmVlbk1hbmFnZXIgPSBzZWxm
Ll92aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKSB7CisgICAgICAgIEFTU0VSVCh2aWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyLT5jbGllbnQoKSA9PSBudWxscHRyKTsKKyAgICAgICAgdmlkZW9GdWxsc2NyZWVu
TWFuYWdlci0+c2V0Q2xpZW50KCZfdmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Q2xpZW50KTsK
KyAgICB9CiB9CiAKIC0gKHZvaWQpd2luZG93RGlkRmFpbFRvRXhpdEZ1bGxTY3JlZW46KE5TV2lu
ZG93ICopd2luZG93CkBAIC03MjksNiArNzIwLDE0IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0dJbWFn
ZVJlZj4gdGFrZVdpbmRvd1NuYXBzaG90KENHU1dpbmRvd0lEIHdpbmRvd0lELCBib29sIGNhcHR1
CiAgICAgcmV0dXJuIF9wYWdlLT5mdWxsU2NyZWVuTWFuYWdlcigpOwogfQogCistIChXZWJLaXQ6
OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eSopX3ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIKK3sK
KyAgICBpZiAoIV9wYWdlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBf
cGFnZS0+dmlkZW9GdWxsc2NyZWVuTWFuYWdlcigpOworfQorCiAtICh2b2lkKV9yZXBsYWNlVmll
dzooTlNWaWV3ICopdmlldyB3aXRoOihOU1ZpZXcgKilvdGhlclZpZXcKIHsKICAgICBbQ0FUcmFu
c2FjdGlvbiBiZWdpbl07Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>