<?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>216171</bug_id>
          
          <creation_ts>2020-09-04 01:26:34 -0700</creation_ts>
          <short_desc>[GStreamer] REGRESSION(r266559): imported/w3c/web-platform-tests/webaudio/the-audio-api/the-destinationnode-interface/destination.html is failing</short_desc>
          <delta_ts>2020-10-20 06:21:15 -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>Web Audio</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Diego Pino">dpino</reporter>
          <assigned_to name="Philippe Normand">pnormand</assigned_to>
          <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>peng.liu6</cc>
    
    <cc>philipj</cc>
    
    <cc>pnormand</cc>
    
    <cc>sergio</cc>
    
    <cc>vjaquez</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1685583</commentid>
    <comment_count>0</comment_count>
    <who name="Diego Pino">dpino</who>
    <bug_when>2020-09-04 01:26:34 -0700</bug_when>
    <thetext>The test started failing after r266559 (AudioDestinationNode.maxChannelCount always returns 0):

imported/w3c/web-platform-tests/webaudio/the-audio-api/the-destinationnode-interface/destination.html [ Failure ]

Diff: https://build.webkit.org/results/GTK%20Linux%2064-bit%20Release%20(Tests)/r266579%20(15632)/imported/w3c/web-platform-tests/webaudio/the-audio-api/the-destinationnode-interface/destination-diff.txt

--- /home/buildbot/worker/gtk-linux-64-release-tests/build/layout-test-results/imported/w3c/web-platform-tests/webaudio/the-audio-api/the-destinationnode-interface/destination-expected.txt
+++ /home/buildbot/worker/gtk-linux-64-release-tests/build/layout-test-results/imported/w3c/web-platform-tests/webaudio/the-audio-api/the-destinationnode-interface/destination-actual.txt
@@ -1,5 +1,5 @@
 
-PASS 
+FAIL 
       AudioDestinationNode
-     
+     assert_greater_than_equal: maxChannelCount should be &gt;= 2 expected a number greater than or equal to 2 but got 0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685587</commentid>
    <comment_count>1</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-09-04 01:52:02 -0700</bug_when>
    <thetext>To fix this I suppose we should look for Audio/Sink GstDevices and check the channels range in the caps...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699227</commentid>
    <comment_count>2</comment_count>
      <attachid>411739</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-10-19 05:30:25 -0700</bug_when>
    <thetext>Created attachment 411739
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699229</commentid>
    <comment_count>3</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-10-19 05:30:53 -0700</bug_when>
    <thetext>*** Bug 217699 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699350</commentid>
    <comment_count>4</comment_count>
      <attachid>411739</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-10-19 11:59:57 -0700</bug_when>
    <thetext>Comment on attachment 411739
Patch

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

&gt; Source/WebCore/platform/audio/gstreamer/AudioDestinationGStreamer.cpp:103
&gt; +        WTFLogAlways(&quot;AudioDestination::create(%u, %u, %f) - unhandled input channels&quot;, numberOfInputChannels, numberOfOutputChannels, sampleRate);

Nit. Is this change intended?

&gt; Source/WebCore/platform/audio/gstreamer/AudioDestinationGStreamer.cpp:207
&gt; +            // m_isPlaying = newState &gt;= GST_STATE_PLAYING;

Nit. Is this comment useful?

&gt; Source/WebCore/platform/audio/gstreamer/AudioSourceProviderGStreamer.cpp:266
&gt; +        [](GstAppSink* sink, gpointer userData) -&gt; GstFlowReturn {

Looks like a duplicated code block? Can we avoid it? Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699642</commentid>
    <comment_count>5</comment_count>
      <attachid>411848</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-10-20 01:31:15 -0700</bug_when>
    <thetext>Created attachment 411848
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699646</commentid>
    <comment_count>6</comment_count>
      <attachid>411850</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-10-20 02:19:29 -0700</bug_when>
    <thetext>Created attachment 411850
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699657</commentid>
    <comment_count>7</comment_count>
      <attachid>411850</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2020-10-20 03:01:34 -0700</bug_when>
    <thetext>Comment on attachment 411850
Patch

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

&gt; Source/WebCore/platform/audio/gstreamer/AudioDestinationGStreamer.cpp:103
&gt; +        WTFLogAlways(&quot;AudioDestination::create(%u, %u, %f) - unhandled input channels&quot;, numberOfInputChannels, numberOfOutputChannels, sampleRate);

As Peng Liu asked, is the change to always intentional?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699658</commentid>
    <comment_count>8</comment_count>
      <attachid>411850</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-10-20 03:03:44 -0700</bug_when>
    <thetext>Comment on attachment 411850
Patch

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

&gt;&gt; Source/WebCore/platform/audio/gstreamer/AudioDestinationGStreamer.cpp:103
&gt;&gt; +        WTFLogAlways(&quot;AudioDestination::create(%u, %u, %f) - unhandled input channels&quot;, numberOfInputChannels, numberOfOutputChannels, sampleRate);
&gt; 
&gt; As Peng Liu asked, is the change to always intentional?

Yes, it&apos;s matching the cocoa implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699694</commentid>
    <comment_count>9</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-10-20 06:20:10 -0700</bug_when>
    <thetext>Committed r268727: &lt;https://trac.webkit.org/changeset/268727&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699698</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-10-20 06:21:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/70482643&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411739</attachid>
            <date>2020-10-19 05:30:25 -0700</date>
            <delta_ts>2020-10-20 01:31:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216171-20201019053023.patch</filename>
            <type>text/plain</type>
            <size>36143</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NjY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTdkMThmM2MyMGEyOWE2
N2FlZTFlY2I1NTU0ZjgxNjAyZTBlN2YyNS4uZTFlYWMyYzRlNjFlYzhlZTMxNGMwYzU2ZGNkOWU1
MjRlOWYxYzRmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDIwLTEwLTE5ICBQaGls
aXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVy
XSBSRUdSRVNTSU9OKHIyNjY1NTkpOiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dl
YmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWRlc3RpbmF0aW9ubm9kZS1pbnRlcmZhY2UvZGVzdGlu
YXRpb24uaHRtbCBpcyBmYWlsaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTYxNzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGUgQXVkaW9EZXN0aW5hdGlvbiBub3cgcHJvYmVzIHRoZSBhdWRpbyBz
aW5rIHRvIGZpbmQgdGhlIG1heGltdW0gbnVtYmVyIG9mIG91dHB1dCBjaGFubmVscworICAgICAg
ICBpdCBzdXBwb3J0cy4gVGhlIEF1ZGlvRGVzdGluYXRpb24gaXMgYWxzbyBub3cgYWJsZSB0byBy
ZW5kZXIgPjIgY2hhbm5lbHMgZnJvbSB0aGUgQXVkaW9CdXMuCisgICAgICAgIFRoZSBBdWRpb1By
b3ZpZGVyIGFsc28gaGFuZGxlcyBtb3JlIHRoYW4gMiBjaGFubmVscy4gVGhpcyBwYXRjaCBhbHNv
IGluY2x1ZGVzIHZhcmlvdXMgY29kZQorICAgICAgICBjbGVhbnVwcyBhcyB0aGVzZSBmaWxlcyB3
ZXJlIG5vdCB1cGRhdGVkIG11Y2ggZHVyaW5nIHRoZSBwYXN0IGZldyB5ZWFycy4KKworICAgICAg
ICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHdlYmF1ZGlvIHRlc3RzLgorCisgICAgICAgICogcGxhdGZv
cm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6aW5pdGlhbGl6ZURlYnVnQ2F0ZWdvcnkpOgorICAgICAgICAoV2ViQ29yZTo6
bWF4aW11bU51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9E
ZXN0aW5hdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb246
Om1heENoYW5uZWxDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uR1N0
cmVhbWVyOjpBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6On5BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcjo6c3RhcnQpOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcjo6c3RvcCk6CisgICAg
ICAgICogcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9Tb3VyY2VQcm92aWRl
ckdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbml0aWFsaXplRGVidWdDYXRlZ29y
eSk6CisgICAgICAgIChXZWJDb3JlOjpjb3B5R1N0cmVhbWVyQnVmZmVyc1RvQXVkaW9DaGFubmVs
KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXI6OkF1ZGlv
U291cmNlUHJvdmlkZXJHU3RyZWFtZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Tb3VyY2VQ
cm92aWRlckdTdHJlYW1lcjo6fkF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lcjo6cHJvdmlkZUlucHV0KToK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXI6OmhhbmRsZVNh
bXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyOjpz
ZXRDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1l
cjo6aGFuZGxlTmV3RGVpbnRlcmxlYXZlUGFkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU291
cmNlUHJvdmlkZXJHU3RyZWFtZXI6OmhhbmRsZVJlbW92ZWREZWludGVybGVhdmVQYWQpOgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lcjo6ZGVpbnRlcmxlYXZl
UGFkc0NvbmZpZ3VyZWQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Tb3VyY2VQcm92aWRlckdT
dHJlYW1lcjo6Y2xlYXJBZGFwdGVycyk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vZ3N0cmVh
bWVyL0F1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIuaDoKKwogMjAyMC0xMC0xMyAgU2VyZ2lv
IFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlhLmNvbT4KIAogICAgICAgICBTYW5pdGl6ZSB0
aGUgdXNhZ2Ugb2Ygb3ZlcnJpZGUgc2l6ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0
cmVhbWVyLmNwcAppbmRleCAxNThmOTE4NzNiNzFhN2ZjNDY3OTQ1Mjg4NWU2YjkzODAzNzcwMTVh
Li5hNWVlMmZjNzI1NWU5YWY5OTc0NjMyY2ZkNWZhYTVjZWNmYTdlMDk2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdT
dHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVy
L0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCkBAIC0zNyw2ICszNyw1MSBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKK0dTVF9ERUJVR19DQVRFR09SWSh3ZWJraXRfYXVkaW9fZGVzdGlu
YXRpb25fZGVidWcpOworI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgd2Via2l0X2F1ZGlvX2Rlc3Rp
bmF0aW9uX2RlYnVnCisKK3N0YXRpYyB2b2lkIGluaXRpYWxpemVEZWJ1Z0NhdGVnb3J5KCkKK3sK
KyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uo
b25jZUZsYWcsIFtdIHsKKyAgICAgICAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQod2Via2l0X2F1
ZGlvX2Rlc3RpbmF0aW9uX2RlYnVnLCAid2Via2l0YXVkaW9kZXN0aW5hdGlvbiIsIDAsICJXZWJL
aXQgV2ViQXVkaW8gRGVzdGluYXRpb24iKTsKKyAgICB9KTsKK30KKworc3RhdGljIHVuc2lnbmVk
IGxvbmcgbWF4aW11bU51bWJlck9mT3V0cHV0Q2hhbm5lbHMoKQoreworICAgIGluaXRpYWxpemVE
ZWJ1Z0NhdGVnb3J5KCk7CisKKyAgICBzdGF0aWMgaW50IGNvdW50ID0gMDsKKyAgICBzdGF0aWMg
c3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtd
IHsKKyAgICAgICAgYXV0byBtb25pdG9yID0gYWRvcHRHUmVmKGdzdF9kZXZpY2VfbW9uaXRvcl9u
ZXcoKSk7CisgICAgICAgIGF1dG8gY2FwcyA9IGFkb3B0R1JlZihnc3RfY2Fwc19uZXdfZW1wdHlf
c2ltcGxlKCJhdWRpby94LXJhdyIpKTsKKyAgICAgICAgZ3N0X2RldmljZV9tb25pdG9yX2FkZF9m
aWx0ZXIobW9uaXRvci5nZXQoKSwgIkF1ZGlvL1NpbmsiLCBjYXBzLmdldCgpKTsKKyAgICAgICAg
Z3N0X2RldmljZV9tb25pdG9yX3N0YXJ0KG1vbml0b3IuZ2V0KCkpOworICAgICAgICBhdXRvKiBk
ZXZpY2VzID0gZ3N0X2RldmljZV9tb25pdG9yX2dldF9kZXZpY2VzKG1vbml0b3IuZ2V0KCkpOwor
ICAgICAgICB3aGlsZSAoZGV2aWNlcykgeworICAgICAgICAgICAgYXV0byBkZXZpY2UgPSBhZG9w
dEdSZWYoR1NUX0RFVklDRV9DQVNUKGRldmljZXMtPmRhdGEpKTsKKyAgICAgICAgICAgIGF1dG8g
Y2FwcyA9IGFkb3B0R1JlZihnc3RfZGV2aWNlX2dldF9jYXBzKGRldmljZS5nZXQoKSkpOworICAg
ICAgICAgICAgdW5zaWduZWQgc2l6ZSA9IGdzdF9jYXBzX2dldF9zaXplKGNhcHMuZ2V0KCkpOwor
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7IGkrKykgeworICAgICAg
ICAgICAgICAgIGF1dG8qIHN0cnVjdHVyZSA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUoY2Fwcy5n
ZXQoKSwgaSk7CisgICAgICAgICAgICAgICAgaWYgKCFnX3N0cl9lcXVhbChnc3Rfc3RydWN0dXJl
X2dldF9uYW1lKHN0cnVjdHVyZSksICJhdWRpby94LXJhdyIpKQorICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICBpbnQgdmFsdWU7CisgICAgICAgICAgICAgICAg
aWYgKCFnc3Rfc3RydWN0dXJlX2dldF9pbnQoc3RydWN0dXJlLCAiY2hhbm5lbHMiLCAmdmFsdWUp
KQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICBjb3VudCA9
IHN0ZDo6bWF4KGNvdW50LCB2YWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkZXZp
Y2VzID0gZ19saXN0X2RlbGV0ZV9saW5rKGRldmljZXMsIGRldmljZXMpOworICAgICAgICB9Cisg
ICAgICAgIEdTVF9ERUJVRygibWF4aW11bU51bWJlck9mT3V0cHV0Q2hhbm5lbHM6ICVkIiwgY291
bnQpOworICAgICAgICBnc3RfZGV2aWNlX21vbml0b3Jfc3RvcChtb25pdG9yLmdldCgpKTsKKyAg
ICB9KTsKKworICAgIHJldHVybiBjb3VudDsKK30KKwogZ2Jvb2xlYW4gbWVzc2FnZUNhbGxiYWNr
KEdzdEJ1cyosIEdzdE1lc3NhZ2UqIG1lc3NhZ2UsIEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIq
IGRlc3RpbmF0aW9uKQogewogICAgIHJldHVybiBkZXN0aW5hdGlvbi0+aGFuZGxlTWVzc2FnZSht
ZXNzYWdlKTsKQEAgLTUwLDE3ICs5NSwxNCBAQCBzdGF0aWMgdm9pZCBhdXRvQXVkaW9TaW5rQ2hp
bGRBZGRlZENhbGxiYWNrKEdzdENoaWxkUHJveHkqLCBHT2JqZWN0KiBvYmplY3QsIGdjaAogCiBS
ZWY8QXVkaW9EZXN0aW5hdGlvbj4gQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKEF1ZGlvSU9DYWxs
YmFjayYgY2FsbGJhY2ssIGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRDaGFu
bmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSkK
IHsKKyAgICBpbml0aWFsaXplRGVidWdDYXRlZ29yeSgpOwogICAgIC8vIEZJWE1FOiBtYWtlIHVz
ZSBvZiBpbnB1dERldmljZUlkIGFzIGFwcHJvcHJpYXRlLgogCiAgICAgLy8gRklYTUU6IEFkZCBz
dXBwb3J0IGZvciBsb2NhbC9saXZlIGF1ZGlvIGlucHV0LgogICAgIGlmIChudW1iZXJPZklucHV0
Q2hhbm5lbHMpCi0gICAgICAgIExPRyhNZWRpYSwgIkF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZSgl
dSwgJXUsICVmKSAtIHVuaGFuZGxlZCBpbnB1dCBjaGFubmVscyIsIG51bWJlck9mSW5wdXRDaGFu
bmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSk7CisgICAgICAgIFdURkxv
Z0Fsd2F5cygiQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKCV1LCAldSwgJWYpIC0gdW5oYW5kbGVk
IGlucHV0IGNoYW5uZWxzIiwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91dHB1dENo
YW5uZWxzLCBzYW1wbGVSYXRlKTsKIAotICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgbXVs
dGktY2hhbm5lbCAoPiBzdGVyZW8pIG91dHB1dC4KLSAgICBpZiAobnVtYmVyT2ZPdXRwdXRDaGFu
bmVscyAhPSAyKQotICAgICAgICBMT0coTWVkaWEsICJBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUo
JXUsICV1LCAlZikgLSB1bmhhbmRsZWQgb3V0cHV0IGNoYW5uZWxzIiwgbnVtYmVyT2ZJbnB1dENo
YW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlKTsKLQotICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIoY2FsbGJhY2ssIHNhbXBs
ZVJhdGUpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdWRpb0Rlc3RpbmF0aW9uR1N0cmVh
bWVyKGNhbGxiYWNrLCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlKSk7CiB9CiAK
IGZsb2F0IEF1ZGlvRGVzdGluYXRpb246OmhhcmR3YXJlU2FtcGxlUmF0ZSgpCkBAIC03MCwxOSAr
MTEyLDE2IEBAIGZsb2F0IEF1ZGlvRGVzdGluYXRpb246OmhhcmR3YXJlU2FtcGxlUmF0ZSgpCiAK
IHVuc2lnbmVkIGxvbmcgQXVkaW9EZXN0aW5hdGlvbjo6bWF4Q2hhbm5lbENvdW50KCkKIHsKLSAg
ICAvLyBGSVhNRTogcXVlcnkgdGhlIGRlZmF1bHQgYXVkaW8gaGFyZHdhcmUgZGV2aWNlIHRvIHJl
dHVybiB0aGUgYWN0dWFsIG51bWJlcgotICAgIC8vIG9mIGNoYW5uZWxzIG9mIHRoZSBkZXZpY2Uu
IEFsc28gc2VlIGNvcnJlc3BvbmRpbmcgRklYTUUgaW4gY3JlYXRlKCkuCi0gICAgcmV0dXJuIDA7
CisgICAgcmV0dXJuIG1heGltdW1OdW1iZXJPZk91dHB1dENoYW5uZWxzKCk7CiB9CiAKLUF1ZGlv
RGVzdGluYXRpb25HU3RyZWFtZXI6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIoQXVkaW9JT0Nh
bGxiYWNrJiBjYWxsYmFjaywgZmxvYXQgc2FtcGxlUmF0ZSkKK0F1ZGlvRGVzdGluYXRpb25HU3Ry
ZWFtZXI6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIoQXVkaW9JT0NhbGxiYWNrJiBjYWxsYmFj
aywgdW5zaWduZWQgbG9uZyBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRl
KQogICAgIDogbV9jYWxsYmFjayhjYWxsYmFjaykKLSAgICAsIG1fcmVuZGVyQnVzKEF1ZGlvQnVz
OjpjcmVhdGUoMiwgQXVkaW9VdGlsaXRpZXM6OnJlbmRlclF1YW50dW1TaXplLCBmYWxzZSkpCisg
ICAgLCBtX3JlbmRlckJ1cyhBdWRpb0J1czo6Y3JlYXRlKG51bWJlck9mT3V0cHV0Q2hhbm5lbHMs
IEF1ZGlvVXRpbGl0aWVzOjpyZW5kZXJRdWFudHVtU2l6ZSwgZmFsc2UpKQogICAgICwgbV9zYW1w
bGVSYXRlKHNhbXBsZVJhdGUpCi0gICAgLCBtX2lzUGxheWluZyhmYWxzZSkKIHsKLSAgICBtX3Bp
cGVsaW5lID0gZ3N0X3BpcGVsaW5lX25ldygicGxheSIpOwotICAgIEdSZWZQdHI8R3N0QnVzPiBi
dXMgPSBhZG9wdEdSZWYoZ3N0X3BpcGVsaW5lX2dldF9idXMoR1NUX1BJUEVMSU5FKG1fcGlwZWxp
bmUpKSk7CisgICAgbV9waXBlbGluZSA9IGdzdF9waXBlbGluZV9uZXcoImF1ZGlvLWRlc3RpbmF0
aW9uIik7CisgICAgR1JlZlB0cjxHc3RCdXM+IGJ1cyA9IGFkb3B0R1JlZihnc3RfcGlwZWxpbmVf
Z2V0X2J1cyhHU1RfUElQRUxJTkUobV9waXBlbGluZS5nZXQoKSkpKTsKICAgICBBU1NFUlQoYnVz
KTsKICAgICBnc3RfYnVzX2FkZF9zaWduYWxfd2F0Y2hfZnVsbChidXMuZ2V0KCksIFJ1bkxvb3BT
b3VyY2VQcmlvcml0eTo6UnVuTG9vcERpc3BhdGNoZXIpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3Qo
YnVzLmdldCgpLCAibWVzc2FnZSIsIEdfQ0FMTEJBQ0sobWVzc2FnZUNhbGxiYWNrKSwgdGhpcyk7
CkBAIC05Myw3ICsxMzIsNyBAQCBBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpBdWRpb0Rlc3Rp
bmF0aW9uR1N0cmVhbWVyKEF1ZGlvSU9DYWxsYmFjayYgY2FsbGJhY2ssCiAgICAgR1JlZlB0cjxH
c3RFbGVtZW50PiBhdWRpb1NpbmsgPSBjcmVhdGVQbGF0Zm9ybUF1ZGlvU2luaygpOwogICAgIG1f
YXVkaW9TaW5rQXZhaWxhYmxlID0gYXVkaW9TaW5rOwogICAgIGlmICghYXVkaW9TaW5rKSB7Ci0g
ICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBHU3RyZWFtZXIgYXVkaW8gc2luayBl
bGVtZW50Iik7CisgICAgICAgIEdTVF9FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBHU3RyZWFtZXIg
YXVkaW8gc2luayBlbGVtZW50Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEwNyw3
ICsxNDYsNyBAQCBBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpBdWRpb0Rlc3RpbmF0aW9uR1N0
cmVhbWVyKEF1ZGlvSU9DYWxsYmFjayYgY2FsbGJhY2ssCiAgICAgICAgIC8vIGF1ZGlvc2luayB3
YXMgbG9hZGVkIGNvcnJlY3RseS4KICAgICAgICAgR3N0U3RhdGVDaGFuZ2VSZXR1cm4gc3RhdGVD
aGFuZ2VSZXR1cm4gPSBnc3RfZWxlbWVudF9zZXRfc3RhdGUoYXVkaW9TaW5rLmdldCgpLCBHU1Rf
U1RBVEVfUkVBRFkpOwogICAgICAgICBpZiAoc3RhdGVDaGFuZ2VSZXR1cm4gPT0gR1NUX1NUQVRF
X0NIQU5HRV9GQUlMVVJFKSB7Ci0gICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjaGFu
Z2UgYXV0b2F1ZGlvc2luayBlbGVtZW50IHN0YXRlIik7CisgICAgICAgICAgICBHU1RfRVJST1Io
IkZhaWxlZCB0byBjaGFuZ2UgYXV0b2F1ZGlvc2luayBlbGVtZW50IHN0YXRlIik7CiAgICAgICAg
ICAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUoYXVkaW9TaW5rLmdldCgpLCBHU1RfU1RBVEVfTlVM
TCk7CiAgICAgICAgICAgICBtX2F1ZGlvU2lua0F2YWlsYWJsZSA9IGZhbHNlOwogICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtMTE2LDcgKzE1NSw3IEBAIEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6
OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIoQXVkaW9JT0NhbGxiYWNrJiBjYWxsYmFjaywKIAog
ICAgIEdzdEVsZW1lbnQqIGF1ZGlvQ29udmVydCA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgi
YXVkaW9jb252ZXJ0IiwgbnVsbHB0cik7CiAgICAgR3N0RWxlbWVudCogYXVkaW9SZXNhbXBsZSA9
IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgiYXVkaW9yZXNhbXBsZSIsIG51bGxwdHIpOwotICAg
IGdzdF9iaW5fYWRkX21hbnkoR1NUX0JJTl9DQVNUKG1fcGlwZWxpbmUpLCBtX3NyYy5nZXQoKSwg
YXVkaW9Db252ZXJ0LCBhdWRpb1Jlc2FtcGxlLCBhdWRpb1NpbmsuZ2V0KCksIG51bGxwdHIpOwor
ICAgIGdzdF9iaW5fYWRkX21hbnkoR1NUX0JJTl9DQVNUKG1fcGlwZWxpbmUuZ2V0KCkpLCBtX3Ny
Yy5nZXQoKSwgYXVkaW9Db252ZXJ0LCBhdWRpb1Jlc2FtcGxlLCBhdWRpb1NpbmsuZ2V0KCksIG51
bGxwdHIpOwogCiAgICAgLy8gTGluayBzcmMgcGFkcyBmcm9tIHdlYmtpdEF1ZGlvU3JjIHRvIGF1
ZGlvQ29udmVydCAhIGF1ZGlvUmVzYW1wbGUgISBhdXRvYXVkaW9zaW5rLgogICAgIGdzdF9lbGVt
ZW50X2xpbmtfcGFkc19mdWxsKG1fc3JjLmdldCgpLCAic3JjIiwgYXVkaW9Db252ZXJ0LCAic2lu
ayIsIEdTVF9QQURfTElOS19DSEVDS19OT1RISU5HKTsKQEAgLTEyNiwxMyArMTY1LDEyIEBAIEF1
ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIoQXVkaW9J
T0NhbGxiYWNrJiBjYWxsYmFjaywKIAogQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcjo6fkF1ZGlv
RGVzdGluYXRpb25HU3RyZWFtZXIoKQogewotICAgIEdSZWZQdHI8R3N0QnVzPiBidXMgPSBhZG9w
dEdSZWYoZ3N0X3BpcGVsaW5lX2dldF9idXMoR1NUX1BJUEVMSU5FKG1fcGlwZWxpbmUpKSk7Cisg
ICAgR1JlZlB0cjxHc3RCdXM+IGJ1cyA9IGFkb3B0R1JlZihnc3RfcGlwZWxpbmVfZ2V0X2J1cyhH
U1RfUElQRUxJTkUobV9waXBlbGluZS5nZXQoKSkpKTsKICAgICBBU1NFUlQoYnVzKTsKICAgICBn
X3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMoYnVzLmdldCgpLCByZWludGVycHJl
dF9jYXN0PGdwb2ludGVyPihtZXNzYWdlQ2FsbGJhY2spLCB0aGlzKTsKICAgICBnc3RfYnVzX3Jl
bW92ZV9zaWduYWxfd2F0Y2goYnVzLmdldCgpKTsKIAotICAgIGdzdF9lbGVtZW50X3NldF9zdGF0
ZShtX3BpcGVsaW5lLCBHU1RfU1RBVEVfTlVMTCk7Ci0gICAgZ3N0X29iamVjdF91bnJlZihtX3Bp
cGVsaW5lKTsKKyAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUobV9waXBlbGluZS5nZXQoKSwgR1NU
X1NUQVRFX05VTEwpOwogfQogCiB1bnNpZ25lZCBBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpm
cmFtZXNQZXJCdWZmZXIoKSBjb25zdApAQCAtMTUzLDkgKzE5MSwyOCBAQCBnYm9vbGVhbiBBdWRp
b0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpoYW5kbGVNZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3NhZ2Up
CiAgICAgY2FzZSBHU1RfTUVTU0FHRV9FUlJPUjoKICAgICAgICAgZ3N0X21lc3NhZ2VfcGFyc2Vf
ZXJyb3IobWVzc2FnZSwgJmVycm9yLm91dFB0cigpLCAmZGVidWcub3V0UHRyKCkpOwogICAgICAg
ICBnX3dhcm5pbmcoIkVycm9yOiAlZCwgJXMuIERlYnVnIG91dHB1dDogJXMiLCBlcnJvci0+Y29k
ZSwgIGVycm9yLT5tZXNzYWdlLCBkZWJ1Zy5nZXQoKSk7Ci0gICAgICAgIGdzdF9lbGVtZW50X3Nl
dF9zdGF0ZShtX3BpcGVsaW5lLCBHU1RfU1RBVEVfTlVMTCk7CisgICAgICAgIGdzdF9lbGVtZW50
X3NldF9zdGF0ZShtX3BpcGVsaW5lLmdldCgpLCBHU1RfU1RBVEVfTlVMTCk7CiAgICAgICAgIG1f
aXNQbGF5aW5nID0gZmFsc2U7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgR1NUX01FU1NBR0Vf
U1RBVEVfQ0hBTkdFRDoKKyAgICAgICAgaWYgKEdTVF9NRVNTQUdFX1NSQyhtZXNzYWdlKSA9PSBH
U1RfT0JKRUNUKG1fcGlwZWxpbmUuZ2V0KCkpKSB7CisgICAgICAgICAgICBHc3RTdGF0ZSBvbGRT
dGF0ZSwgbmV3U3RhdGUsIHBlbmRpbmc7CisgICAgICAgICAgICBnc3RfbWVzc2FnZV9wYXJzZV9z
dGF0ZV9jaGFuZ2VkKG1lc3NhZ2UsICZvbGRTdGF0ZSwgJm5ld1N0YXRlLCAmcGVuZGluZyk7CisK
KyAgICAgICAgICAgIEdTVF9JTkZPX09CSkVDVChtX3BpcGVsaW5lLmdldCgpLCAiU3RhdGUgY2hh
bmdlZCAob2xkOiAlcywgbmV3OiAlcywgcGVuZGluZzogJXMpIiwKKyAgICAgICAgICAgICAgICBn
c3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFtZShvbGRTdGF0ZSksCisgICAgICAgICAgICAgICAgZ3N0
X2VsZW1lbnRfc3RhdGVfZ2V0X25hbWUobmV3U3RhdGUpLAorICAgICAgICAgICAgICAgIGdzdF9l
bGVtZW50X3N0YXRlX2dldF9uYW1lKHBlbmRpbmcpKTsKKworICAgICAgICAgICAgLy8gbV9pc1Bs
YXlpbmcgPSBuZXdTdGF0ZSA+PSBHU1RfU1RBVEVfUExBWUlORzsKKworICAgICAgICAgICAgV1RG
OjpTdHJpbmcgZG90RmlsZU5hbWUgPSBtYWtlU3RyaW5nKEdTVF9PQkpFQ1RfTkFNRShtX3BpcGVs
aW5lLmdldCgpKSwgJ18nLAorICAgICAgICAgICAgICAgIGdzdF9lbGVtZW50X3N0YXRlX2dldF9u
YW1lKG9sZFN0YXRlKSwgJ18nLAorICAgICAgICAgICAgICAgIGdzdF9lbGVtZW50X3N0YXRlX2dl
dF9uYW1lKG5ld1N0YXRlKSk7CisKKyAgICAgICAgICAgIEdTVF9ERUJVR19CSU5fVE9fRE9UX0ZJ
TEVfV0lUSF9UUyhHU1RfQklOX0NBU1QobV9waXBlbGluZS5nZXQoKSksIEdTVF9ERUJVR19HUkFQ
SF9TSE9XX0FMTCwgZG90RmlsZU5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIH0KKyAgICAg
ICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTcxLDEy
ICsyMjgsMTIgQEAgdm9pZCBBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpzdGFydChGdW5jdGlv
bjx2b2lkKEZ1bmN0aW9uPHZvaWQoKT4mJik+JiYgZGlzcGEKICAgICBpZiAoZGlzcGF0Y2hUb1Jl
bmRlclRocmVhZCkKICAgICAgICAgd2Via2l0V2ViQXVkaW9Tb3VyY2VTZXREaXNwYXRjaFRvUmVu
ZGVyVGhyZWFkQ2FsbGJhY2soV0VCS0lUX1dFQl9BVURJT19TUkMobV9zcmMuZ2V0KCkpLCBXVEZN
b3ZlKGRpc3BhdGNoVG9SZW5kZXJUaHJlYWQpKTsKIAotICAgIGlmIChnc3RfZWxlbWVudF9zZXRf
c3RhdGUobV9waXBlbGluZSwgR1NUX1NUQVRFX1BMQVlJTkcpID09IEdTVF9TVEFURV9DSEFOR0Vf
RkFJTFVSRSkgeworICAgIEdTVF9ERUJVRygiU3RhcnRpbmciKTsKKyAgICBpZiAoZ3N0X2VsZW1l
bnRfc2V0X3N0YXRlKG1fcGlwZWxpbmUuZ2V0KCksIEdTVF9TVEFURV9QTEFZSU5HKSA9PSBHU1Rf
U1RBVEVfQ0hBTkdFX0ZBSUxVUkUpIHsKICAgICAgICAgZ193YXJuaW5nKCJFcnJvcjogRmFpbGVk
IHRvIHNldCBwaXBlbGluZSB0byBwbGF5aW5nIik7CiAgICAgICAgIG1faXNQbGF5aW5nID0gZmFs
c2U7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0KICAgICBtX2lzUGxheWluZyA9IHRydWU7CiB9
CiAKQEAgLTE4Niw3ICsyNDMsOCBAQCB2b2lkIEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6OnN0
b3AoKQogICAgIGlmICghbV9hdWRpb1NpbmtBdmFpbGFibGUpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShtX3BpcGVsaW5lLCBHU1RfU1RBVEVfUEFVU0VEKTsK
KyAgICBHU1RfREVCVUcoIlN0b3BwaW5nIik7CisgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKG1f
cGlwZWxpbmUuZ2V0KCksIEdTVF9TVEFURV9QQVVTRUQpOwogICAgIG1faXNQbGF5aW5nID0gZmFs
c2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJl
YW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5oCmluZGV4IDY3YTM5
MzU4MDA3ZDkzYjY3YWIzMmQxMWM3YTZkOWE2OWUxNDBiYjEuLjc5NjAwNDYxYjNmZDNlZDk4OTAy
ZWRlYTg5NGEwNDU0MTRhMjcwYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFt
ZXIuaApAQCAtMTYsOCArMTYsNyBAQAogICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQogICovCiAK
LSNpZm5kZWYgQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcl9oCi0jZGVmaW5lIEF1ZGlvRGVzdGlu
YXRpb25HU3RyZWFtZXJfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBdWRpb0J1cy5oIgog
I2luY2x1ZGUgIkF1ZGlvRGVzdGluYXRpb24uaCIKQEAgLTMyLDcgKzMxLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyIDogcHVibGljIEF1
ZGlvRGVzdGluYXRpb24gewogcHVibGljOgotICAgIEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIo
QXVkaW9JT0NhbGxiYWNrJiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgQXVkaW9EZXN0aW5hdGlv
bkdTdHJlYW1lcihBdWRpb0lPQ2FsbGJhY2smLCB1bnNpZ25lZCBsb25nIG51bWJlck9mT3V0cHV0
Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUpOwogICAgIHZpcnR1YWwgfkF1ZGlvRGVzdGluYXRp
b25HU3RyZWFtZXIoKTsKIAogICAgIHZvaWQgc3RhcnQoRnVuY3Rpb248dm9pZChGdW5jdGlvbjx2
b2lkKCk+JiYpPiYmIGRpc3BhdGNoVG9SZW5kZXJUaHJlYWQpIG92ZXJyaWRlOwpAQCAtNTAsMTIg
KzQ5LDEwIEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPEF1ZGlvQnVzPiBtX3JlbmRlckJ1czsKIAog
ICAgIGZsb2F0IG1fc2FtcGxlUmF0ZTsKLSAgICBib29sIG1faXNQbGF5aW5nOwotICAgIGJvb2wg
bV9hdWRpb1NpbmtBdmFpbGFibGU7Ci0gICAgR3N0RWxlbWVudCogbV9waXBlbGluZTsKKyAgICBi
b29sIG1faXNQbGF5aW5nIHsgZmFsc2UgfTsKKyAgICBib29sIG1fYXVkaW9TaW5rQXZhaWxhYmxl
IHsgZmFsc2UgfTsKKyAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IG1fcGlwZWxpbmU7CiAgICAgR1Jl
ZlB0cjxHc3RFbGVtZW50PiBtX3NyYzsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmIC8vIEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXJfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvU291cmNlUHJvdmlkZXJHU3Ry
ZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlv
U291cmNlUHJvdmlkZXJHU3RyZWFtZXIuY3BwCmluZGV4IDE1YzQyNjZiMzEyYzI3OGZjNzc3MDQy
NmIxNTUzYTEzMzkzNjU0MWIuLjU0NjQ0ZDRkY2RmNzY2MjM1YzJkNWYwYTk5NzZmMmFjMzhiYmVl
MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9B
dWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lci5jcHAKQEAg
LTI3LDIxICsyNywyNSBAQAogI2luY2x1ZGUgPGdzdC9hdWRpby9hdWRpby1pbmZvLmg+CiAjaW5j
bHVkZSA8Z3N0L2Jhc2UvZ3N0YWRhcHRlci5oPgogCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkg
JiYgVVNFKExJQldFQlJUQykKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogI2luY2x1ZGUgIkdT
dHJlYW1lckF1ZGlvRGF0YS5oIgogI2luY2x1ZGUgIkdTdHJlYW1lck1lZGlhU3RyZWFtU291cmNl
LmgiCiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBGb3Igbm93IHRoZSBwcm92
aWRlciBzdXBwb3J0cyBvbmx5IHN0ZXJlbyBmaWxlcyBhdCBhIGZpeGVkIHNhbXBsZQotLy8gYml0
cmF0ZS4KLXN0YXRpYyBjb25zdCBpbnQgZ051bWJlck9mQ2hhbm5lbHMgPSAyOworLy8gRm9yIG5v
dyB0aGUgcHJvdmlkZXIgc3VwcG9ydHMgb25seSBmaWxlcyBhdCBhIGZpeGVkIHNhbXBsZSBiaXRy
YXRlLgogc3RhdGljIGNvbnN0IGZsb2F0IGdTYW1wbGVCaXRSYXRlID0gNDQxMDA7CiAKLXN0YXRp
YyBHc3RGbG93UmV0dXJuIG9uQXBwc2lua05ld0J1ZmZlckNhbGxiYWNrKEdzdEFwcFNpbmsqIHNp
bmssIGdwb2ludGVyIHVzZXJEYXRhKQorR1NUX0RFQlVHX0NBVEVHT1JZKHdlYmtpdF9hdWRpb19w
cm92aWRlcl9kZWJ1Zyk7CisjZGVmaW5lIEdTVF9DQVRfREVGQVVMVCB3ZWJraXRfYXVkaW9fcHJv
dmlkZXJfZGVidWcKKworc3RhdGljIHZvaWQgaW5pdGlhbGl6ZURlYnVnQ2F0ZWdvcnkoKQogewot
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyKj4odXNl
ckRhdGEpLT5oYW5kbGVBdWRpb0J1ZmZlcihzaW5rKTsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2Zs
YWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyAgICAgICAg
R1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQod2Via2l0X2F1ZGlvX3Byb3ZpZGVyX2RlYnVnLCAid2Vi
a2l0YXVkaW9wcm92aWRlciIsIDAsICJXZWJLaXQgV2ViQXVkaW8gUHJvdmlkZXIiKTsKKyAgICB9
KTsKIH0KIAogc3RhdGljIHZvaWQgb25HU3RyZWFtZXJEZWludGVybGVhdmVQYWRBZGRlZENhbGxi
YWNrKEdzdEVsZW1lbnQqLCBHc3RQYWQqIHBhZCwgQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1l
ciogcHJvdmlkZXIpCkBAIC01OSwyNyArNjMsMTYgQEAgc3RhdGljIHZvaWQgb25HU3RyZWFtZXJE
ZWludGVybGVhdmVQYWRSZW1vdmVkQ2FsbGJhY2soR3N0RWxlbWVudCosIEdzdFBhZCogcGFkLAog
ICAgIHByb3ZpZGVyLT5oYW5kbGVSZW1vdmVkRGVpbnRlcmxlYXZlUGFkKHBhZCk7CiB9CiAKLXN0
YXRpYyBHc3RQYWRQcm9iZVJldHVybiBvbkFwcHNpbmtGbHVzaENhbGxiYWNrKEdzdFBhZCosIEdz
dFBhZFByb2JlSW5mbyogaW5mbywgZ3BvaW50ZXIgdXNlckRhdGEpCi17Ci0gICAgaWYgKEdTVF9Q
QURfUFJPQkVfSU5GT19UWVBFKGluZm8pICYgKEdTVF9QQURfUFJPQkVfVFlQRV9FVkVOVF9ET1dO
U1RSRUFNIHwgR1NUX1BBRF9QUk9CRV9UWVBFX0VWRU5UX0ZMVVNIKSkgewotICAgICAgICBHc3RF
dmVudCogZXZlbnQgPSBHU1RfUEFEX1BST0JFX0lORk9fRVZFTlQoaW5mbyk7Ci0gICAgICAgIGlm
IChHU1RfRVZFTlRfVFlQRShldmVudCkgPT0gR1NUX0VWRU5UX0ZMVVNIX1NUT1ApIHsKLSAgICAg
ICAgICAgIEF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIqIHByb3ZpZGVyID0gcmVpbnRlcnBy
ZXRfY2FzdDxBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyKj4odXNlckRhdGEpOwotICAgICAg
ICAgICAgcHJvdmlkZXItPmNsZWFyQWRhcHRlcnMoKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBy
ZXR1cm4gR1NUX1BBRF9QUk9CRV9PSzsKLX0KLQogc3RhdGljIHZvaWQgY29weUdTdHJlYW1lckJ1
ZmZlcnNUb0F1ZGlvQ2hhbm5lbChHc3RBZGFwdGVyKiBhZGFwdGVyLCBBdWRpb0J1cyogYnVzICwg
aW50IGNoYW5uZWxOdW1iZXIsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiB7Ci0gICAgaWYgKCFn
c3RfYWRhcHRlcl9hdmFpbGFibGUoYWRhcHRlcikpIHsKKyAgICBhdXRvIGF2YWlsYWJsZSA9IGdz
dF9hZGFwdGVyX2F2YWlsYWJsZShhZGFwdGVyKTsKKyAgICBpZiAoIWF2YWlsYWJsZSkgewogICAg
ICAgICBidXMtPnplcm8oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIHNpemVfdCBi
eXRlcyA9IGZyYW1lc1RvUHJvY2VzcyAqIHNpemVvZihmbG9hdCk7Ci0gICAgaWYgKGdzdF9hZGFw
dGVyX2F2YWlsYWJsZShhZGFwdGVyKSA+PSBieXRlcykgeworICAgIGlmIChhdmFpbGFibGUgPj0g
Ynl0ZXMpIHsKICAgICAgICAgZ3N0X2FkYXB0ZXJfY29weShhZGFwdGVyLCBidXMtPmNoYW5uZWwo
Y2hhbm5lbE51bWJlciktPm11dGFibGVEYXRhKCksIDAsIGJ5dGVzKTsKICAgICAgICAgZ3N0X2Fk
YXB0ZXJfZmx1c2goYWRhcHRlciwgYnl0ZXMpOwogICAgIH0gZWxzZQpAQCAtODgsMzUgKzgxLDIz
IEBAIHN0YXRpYyB2b2lkIGNvcHlHU3RyZWFtZXJCdWZmZXJzVG9BdWRpb0NoYW5uZWwoR3N0QWRh
cHRlciogYWRhcHRlciwgQXVkaW9CdXMqIGJ1CiAKIEF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFt
ZXI6OkF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIoKQogICAgIDogbV9ub3RpZmllcihNYWlu
VGhyZWFkTm90aWZpZXI8TWFpblRocmVhZE5vdGlmaWNhdGlvbj46OmNyZWF0ZSgpKQotICAgICwg
bV9jbGllbnQobnVsbHB0cikKLSAgICAsIG1fZGVpbnRlcmxlYXZlU291cmNlUGFkcygwKQotICAg
ICwgbV9kZWludGVybGVhdmVQYWRBZGRlZEhhbmRsZXJJZCgwKQotICAgICwgbV9kZWludGVybGVh
dmVOb01vcmVQYWRzSGFuZGxlcklkKDApCi0gICAgLCBtX2RlaW50ZXJsZWF2ZVBhZFJlbW92ZWRI
YW5kbGVySWQoMCkKIHsKLSAgICBtX2Zyb250TGVmdEFkYXB0ZXIgPSBnc3RfYWRhcHRlcl9uZXco
KTsKLSAgICBtX2Zyb250UmlnaHRBZGFwdGVyID0gZ3N0X2FkYXB0ZXJfbmV3KCk7CisgICAgaW5p
dGlhbGl6ZURlYnVnQ2F0ZWdvcnkoKTsKIH0KIAotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYm
IFVTRShMSUJXRUJSVEMpCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIEF1ZGlvU291cmNlUHJv
dmlkZXJHU3RyZWFtZXI6OkF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIoTWVkaWFTdHJlYW1U
cmFja1ByaXZhdGUmIHNvdXJjZSkKICAgICA6IG1fbm90aWZpZXIoTWFpblRocmVhZE5vdGlmaWVy
PE1haW5UaHJlYWROb3RpZmljYXRpb24+OjpjcmVhdGUoKSkKLSAgICAsIG1fY2xpZW50KG51bGxw
dHIpCi0gICAgLCBtX2RlaW50ZXJsZWF2ZVNvdXJjZVBhZHMoMCkKLSAgICAsIG1fZGVpbnRlcmxl
YXZlUGFkQWRkZWRIYW5kbGVySWQoMCkKLSAgICAsIG1fZGVpbnRlcmxlYXZlTm9Nb3JlUGFkc0hh
bmRsZXJJZCgwKQotICAgICwgbV9kZWludGVybGVhdmVQYWRSZW1vdmVkSGFuZGxlcklkKDApCiB7
Ci0gICAgbV9mcm9udExlZnRBZGFwdGVyID0gZ3N0X2FkYXB0ZXJfbmV3KCk7Ci0gICAgbV9mcm9u
dFJpZ2h0QWRhcHRlciA9IGdzdF9hZGFwdGVyX25ldygpOworICAgIGluaXRpYWxpemVEZWJ1Z0Nh
dGVnb3J5KCk7CiAgICAgYXV0byBwaXBlbGluZU5hbWUgPSBtYWtlU3RyaW5nKCJXZWJBdWRpb1By
b3ZpZGVyX01lZGlhU3RyZWFtVHJhY2tfIiwgc291cmNlLmlkKCkpOwotICAgIG1fcGlwZWxpbmUg
PSBhZG9wdEdSZWYoR1NUX0VMRU1FTlQoZ19vYmplY3RfcmVmX3NpbmsoZ3N0X2VsZW1lbnRfZmFj
dG9yeV9tYWtlKCJwaXBlbGluZSIsIHBpcGVsaW5lTmFtZS51dGY4KCkuZGF0YSgpKSkpKTsKKyAg
ICBtX3BpcGVsaW5lID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJwaXBlbGluZSIsIHBpcGVs
aW5lTmFtZS51dGY4KCkuZGF0YSgpKTsKICAgICBhdXRvIHNyYyA9IHdlYmtpdE1lZGlhU3RyZWFt
U3JjTmV3KCk7CiAgICAgd2Via2l0TWVkaWFTdHJlYW1TcmNBZGRUcmFjayhXRUJLSVRfTUVESUFf
U1RSRUFNX1NSQyhzcmMpLCAmc291cmNlLCB0cnVlKTsKIAotICAgIG1fYXVkaW9TaW5rQmluID0g
YWRvcHRHUmVmKEdTVF9FTEVNRU5UKGdfb2JqZWN0X3JlZl9zaW5rKGdzdF9wYXJzZV9iaW5fZnJv
bV9kZXNjcmlwdGlvbigidGVlIG5hbWU9YXVkaW9UZWUiLCB0cnVlLCBudWxscHRyKSkpKTsKKyAg
ICBtX2F1ZGlvU2lua0JpbiA9IGdzdF9wYXJzZV9iaW5fZnJvbV9kZXNjcmlwdGlvbigidGVlIG5h
bWU9YXVkaW9UZWUiLCB0cnVlLCBudWxscHRyKTsKIAotICAgIGdzdF9iaW5fYWRkX21hbnkoR1NU
X0JJTihtX3BpcGVsaW5lLmdldCgpKSwgc3JjLCBtX2F1ZGlvU2lua0Jpbi5nZXQoKSwgbnVsbHB0
cik7CisgICAgZ3N0X2Jpbl9hZGRfbWFueShHU1RfQklOX0NBU1QobV9waXBlbGluZS5nZXQoKSks
IHNyYywgbV9hdWRpb1NpbmtCaW4uZ2V0KCksIG51bGxwdHIpOwogICAgIGdzdF9lbGVtZW50X2xp
bmsoc3JjLCBtX2F1ZGlvU2lua0Jpbi5nZXQoKSk7CiAKICAgICBjb25uZWN0U2ltcGxlQnVzTWVz
c2FnZUNhbGxiYWNrKG1fcGlwZWxpbmUuZ2V0KCkpOwpAQCAtMTM0LDExICsxMTUsMTAgQEAgQXVk
aW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lcjo6fkF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIo
KQogICAgICAgICBnX3NpZ25hbF9oYW5kbGVyX2Rpc2Nvbm5lY3QoZGVpbnRlcmxlYXZlLmdldCgp
LCBtX2RlaW50ZXJsZWF2ZVBhZFJlbW92ZWRIYW5kbGVySWQpOwogICAgIH0KIAorI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCiAgICAgaWYgKG1fcGlwZWxpbmUpCiAgICAgICAgIGdzdF9lbGVtZW50
X3NldF9zdGF0ZShtX3BpcGVsaW5lLmdldCgpLCBHU1RfU1RBVEVfTlVMTCk7Ci0KLSAgICBnX29i
amVjdF91bnJlZihtX2Zyb250TGVmdEFkYXB0ZXIpOwotICAgIGdfb2JqZWN0X3VucmVmKG1fZnJv
bnRSaWdodEFkYXB0ZXIpOworI2VuZGlmCiB9CiAKIHZvaWQgQXVkaW9Tb3VyY2VQcm92aWRlckdT
dHJlYW1lcjo6Y29uZmlndXJlQXVkaW9CaW4oR3N0RWxlbWVudCogYXVkaW9CaW4sIEdzdEVsZW1l
bnQqIGF1ZGlvU2luaykKQEAgLTE3NCw0OCArMTU0LDI3IEBAIHZvaWQgQXVkaW9Tb3VyY2VQcm92
aWRlckdTdHJlYW1lcjo6Y29uZmlndXJlQXVkaW9CaW4oR3N0RWxlbWVudCogYXVkaW9CaW4sIEdz
dEVsCiB2b2lkIEF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXI6OnByb3ZpZGVJbnB1dChBdWRp
b0J1cyogYnVzLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQogewogICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2sobV9hZGFwdGVyTXV0ZXgpOwotICAgIGNvcHlHU3RyZWFtZXJCdWZmZXJzVG9BdWRp
b0NoYW5uZWwobV9mcm9udExlZnRBZGFwdGVyLCBidXMsIDAsIGZyYW1lc1RvUHJvY2Vzcyk7Ci0g
ICAgY29weUdTdHJlYW1lckJ1ZmZlcnNUb0F1ZGlvQ2hhbm5lbChtX2Zyb250UmlnaHRBZGFwdGVy
LCBidXMsIDEsIGZyYW1lc1RvUHJvY2Vzcyk7CisgICAgZm9yIChhdXRvJiBpdCA6IG1fYWRhcHRl
cnMpCisgICAgICAgIGNvcHlHU3RyZWFtZXJCdWZmZXJzVG9BdWRpb0NoYW5uZWwoaXQudmFsdWUu
Z2V0KCksIGJ1cywgaXQua2V5IC0gMSwgZnJhbWVzVG9Qcm9jZXNzKTsKIH0KIAotR3N0Rmxvd1Jl
dHVybiBBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyOjpoYW5kbGVBdWRpb0J1ZmZlcihHc3RB
cHBTaW5rKiBzaW5rKQorR3N0Rmxvd1JldHVybiBBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVy
OjpoYW5kbGVTYW1wbGUoR1JlZlB0cjxHc3RTYW1wbGU+JiYgc2FtcGxlLCBpbnQgY2hhbm5lbElk
KQogewogICAgIGlmICghbV9jbGllbnQpCiAgICAgICAgIHJldHVybiBHU1RfRkxPV19PSzsKIAot
ICAgIC8vIFB1bGwgYSBidWZmZXIgZnJvbSBhcHBzaW5rIGFuZCBzdG9yZSBpdCB0aGUgYXBwcm9w
cmlhdGUgYnVmZmVyCi0gICAgLy8gbGlzdCBmb3IgdGhlIGF1ZGlvIGNoYW5uZWwgaXQgcmVwcmVz
ZW50cy4KLSAgICBHUmVmUHRyPEdzdFNhbXBsZT4gc2FtcGxlID0gYWRvcHRHUmVmKGdzdF9hcHBf
c2lua19wdWxsX3NhbXBsZShzaW5rKSk7Ci0gICAgaWYgKCFzYW1wbGUpCi0gICAgICAgIHJldHVy
biBnc3RfYXBwX3NpbmtfaXNfZW9zKHNpbmspID8gR1NUX0ZMT1dfRU9TIDogR1NUX0ZMT1dfRVJS
T1I7Ci0KICAgICBHc3RCdWZmZXIqIGJ1ZmZlciA9IGdzdF9zYW1wbGVfZ2V0X2J1ZmZlcihzYW1w
bGUuZ2V0KCkpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gR1NUX0ZMT1dfRVJS
T1I7CiAKLSAgICBHc3RDYXBzKiBjYXBzID0gZ3N0X3NhbXBsZV9nZXRfY2FwcyhzYW1wbGUuZ2V0
KCkpOwotICAgIGlmICghY2FwcykKLSAgICAgICAgcmV0dXJuIEdTVF9GTE9XX0VSUk9SOwotCi0g
ICAgR3N0QXVkaW9JbmZvIGluZm87Ci0gICAgZ3N0X2F1ZGlvX2luZm9fZnJvbV9jYXBzKCZpbmZv
LCBjYXBzKTsKLQotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9hZGFwdGVyTXV0ZXgpOwot
Ci0gICAgLy8gQ2hlY2sgdGhlIGZpcnN0IGF1ZGlvIGNoYW5uZWwuIFRoZSBidWZmZXIgaXMgc3Vw
cG9zZWQgdG8gc3RvcmUKLSAgICAvLyBkYXRhIG9mIGEgc2luZ2xlIGNoYW5uZWwgYW55d2F5Lgot
ICAgIHN3aXRjaCAoR1NUX0FVRElPX0lORk9fUE9TSVRJT04oJmluZm8sIDApKSB7Ci0gICAgY2Fz
ZSBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9GUk9OVF9MRUZUOgotICAgIGNhc2UgR1NUX0FV
RElPX0NIQU5ORUxfUE9TSVRJT05fTU9OTzoKLSAgICAgICAgZ3N0X2FkYXB0ZXJfcHVzaChtX2Zy
b250TGVmdEFkYXB0ZXIsIGdzdF9idWZmZXJfcmVmKGJ1ZmZlcikpOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX0ZST05UX1JJR0hUOgotICAgICAg
ICBnc3RfYWRhcHRlcl9wdXNoKG1fZnJvbnRSaWdodEFkYXB0ZXIsIGdzdF9idWZmZXJfcmVmKGJ1
ZmZlcikpOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBicmVhazsKKyAg
ICB7CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9hZGFwdGVyTXV0ZXgpOworICAg
ICAgICBhdXRvIHJlc3VsdCA9IG1fYWRhcHRlcnMuZW5zdXJlKGNoYW5uZWxJZCwgWyZdIHsKKyAg
ICAgICAgICAgIHJldHVybiBnc3RfYWRhcHRlcl9uZXcoKTsKKyAgICAgICAgfSk7CisgICAgICAg
IGF1dG8qIGFkYXB0ZXIgPSByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOworICAgICAgICBn
c3RfYWRhcHRlcl9wdXNoKGFkYXB0ZXIsIGdzdF9idWZmZXJfcmVmKGJ1ZmZlcikpOwogICAgIH0K
LQogICAgIHJldHVybiBHU1RfRkxPV19PSzsKIH0KIApAQCAtMjI3LDggKzE4NiwxMCBAQCB2b2lk
IEF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXI6OnNldENsaWVudChBdWRpb1NvdXJjZVByb3Zp
ZGVyQ2xpZW50KiBjbGllbnQpCiAgICAgQVNTRVJUKGNsaWVudCk7CiAgICAgbV9jbGllbnQgPSBj
bGllbnQ7CiAKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIGlmIChtX3BpcGVsaW5lKQog
ICAgICAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUobV9waXBlbGluZS5nZXQoKSwgR1NUX1NUQVRF
X1BMQVlJTkcpOworI2VuZGlmCiAKICAgICAvLyBUaGUgdm9sdW1lIGVsZW1lbnQgaXMgdXNlZCB0
byBtdXRlIGF1ZGlvIHBsYXliYWNrIHRvd2FyZHMgdGhlCiAgICAgLy8gYXV0b2F1ZGlvc2luay4g
VGhpcyBpcyBuZWVkZWQgdG8gYXZvaWQgZG91YmxlIHBsYXliYWNrIG9mIGF1ZGlvCkBAIC0yNTMs
MTcgKzIxNCwxMyBAQCB2b2lkIEF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXI6OnNldENsaWVu
dChBdWRpb1NvdXJjZVByb3ZpZGVyQ2xpZW50KiBjbGllbnQpCiAgICAgbV9kZWludGVybGVhdmVO
b01vcmVQYWRzSGFuZGxlcklkID0gZ19zaWduYWxfY29ubmVjdChkZUludGVybGVhdmUsICJuby1t
b3JlLXBhZHMiLCBHX0NBTExCQUNLKG9uR1N0cmVhbWVyRGVpbnRlcmxlYXZlUmVhZHlDYWxsYmFj
ayksIHRoaXMpOwogICAgIG1fZGVpbnRlcmxlYXZlUGFkUmVtb3ZlZEhhbmRsZXJJZCA9IGdfc2ln
bmFsX2Nvbm5lY3QoZGVJbnRlcmxlYXZlLCAicGFkLXJlbW92ZWQiLCBHX0NBTExCQUNLKG9uR1N0
cmVhbWVyRGVpbnRlcmxlYXZlUGFkUmVtb3ZlZENhbGxiYWNrKSwgdGhpcyk7CiAKLSAgICBHc3RD
YXBzKiBjYXBzID0gZ3N0X2NhcHNfbmV3X3NpbXBsZSgiYXVkaW8veC1yYXciLCAicmF0ZSIsIEdf
VFlQRV9JTlQsIHN0YXRpY19jYXN0PGludD4oZ1NhbXBsZUJpdFJhdGUpLAotICAgICAgICAiY2hh
bm5lbHMiLCBHX1RZUEVfSU5ULCBnTnVtYmVyT2ZDaGFubmVscywKLSAgICAgICAgImZvcm1hdCIs
IEdfVFlQRV9TVFJJTkcsIEdTVF9BVURJT19ORShGMzIpLAotICAgICAgICAibGF5b3V0IiwgR19U
WVBFX1NUUklORywgImludGVybGVhdmVkIiwgbnVsbHB0cik7Ci0KLSAgICBnX29iamVjdF9zZXQo
Y2Fwc0ZpbHRlciwgImNhcHMiLCBjYXBzLCBudWxscHRyKTsKLSAgICBnc3RfY2Fwc191bnJlZihj
YXBzKTsKKyAgICBhdXRvIGNhcHMgPSBhZG9wdEdSZWYoZ3N0X2NhcHNfbmV3X3NpbXBsZSgiYXVk
aW8veC1yYXciLCAicmF0ZSIsIEdfVFlQRV9JTlQsIHN0YXRpY19jYXN0PGludD4oZ1NhbXBsZUJp
dFJhdGUpLAorICAgICAgICAiZm9ybWF0IiwgR19UWVBFX1NUUklORywgR1NUX0FVRElPX05FKEYz
MiksICJsYXlvdXQiLCBHX1RZUEVfU1RSSU5HLCAiaW50ZXJsZWF2ZWQiLCBudWxscHRyKSk7Cisg
ICAgZ19vYmplY3Rfc2V0KGNhcHNGaWx0ZXIsICJjYXBzIiwgY2Fwcy5nZXQoKSwgbnVsbHB0cik7
CiAKLSAgICBnc3RfYmluX2FkZF9tYW55KEdTVF9CSU4obV9hdWRpb1NpbmtCaW4uZ2V0KCkpLCBh
dWRpb1F1ZXVlLCBhdWRpb0NvbnZlcnQsIGF1ZGlvUmVzYW1wbGUsIGNhcHNGaWx0ZXIsIGRlSW50
ZXJsZWF2ZSwgbnVsbHB0cik7CisgICAgZ3N0X2Jpbl9hZGRfbWFueShHU1RfQklOX0NBU1QobV9h
dWRpb1NpbmtCaW4uZ2V0KCkpLCBhdWRpb1F1ZXVlLCBhdWRpb0NvbnZlcnQsIGF1ZGlvUmVzYW1w
bGUsIGNhcHNGaWx0ZXIsIGRlSW50ZXJsZWF2ZSwgbnVsbHB0cik7CiAKLSAgICBHUmVmUHRyPEdz
dEVsZW1lbnQ+IGF1ZGlvVGVlID0gYWRvcHRHUmVmKGdzdF9iaW5fZ2V0X2J5X25hbWUoR1NUX0JJ
TihtX2F1ZGlvU2lua0Jpbi5nZXQoKSksICJhdWRpb1RlZSIpKTsKKyAgICBhdXRvIGF1ZGlvVGVl
ID0gYWRvcHRHUmVmKGdzdF9iaW5fZ2V0X2J5X25hbWUoR1NUX0JJTihtX2F1ZGlvU2lua0Jpbi5n
ZXQoKSksICJhdWRpb1RlZSIpKTsKIAogICAgIC8vIExpbmsgYSBuZXcgc3JjIHBhZCBmcm9tIHRl
ZSB0byBxdWV1ZSAhIGF1ZGlvY29udmVydCAhCiAgICAgLy8gYXVkaW9yZXNhbXBsZSAhIGNhcHNm
aWx0ZXIgISBkZWludGVybGVhdmUuIExhdGVyCkBAIC0yODQsOTEgKzI0MSw5NSBAQCB2b2lkIEF1
ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXI6OnNldENsaWVudChBdWRpb1NvdXJjZVByb3ZpZGVy
Q2xpZW50KiBjbGllbnQpCiAKIHZvaWQgQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lcjo6aGFu
ZGxlTmV3RGVpbnRlcmxlYXZlUGFkKEdzdFBhZCogcGFkKQogewotICAgIG1fZGVpbnRlcmxlYXZl
U291cmNlUGFkcysrOwotCi0gICAgaWYgKG1fZGVpbnRlcmxlYXZlU291cmNlUGFkcyA+IDIpIHsK
LSAgICAgICAgZ193YXJuaW5nKCJUaGUgQXVkaW9Tb3VyY2VQcm92aWRlciBzdXBwb3J0cyBvbmx5
IG1vbm8gYW5kIHN0ZXJlbyBhdWRpby4gU2lsZW5jaW5nIG91dCB0aGlzIG5ldyBjaGFubmVsLiIp
OwotICAgICAgICBHc3RFbGVtZW50KiBxdWV1ZSA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgi
cXVldWUiLCBudWxscHRyKTsKLSAgICAgICAgR3N0RWxlbWVudCogc2luayA9IGdzdF9lbGVtZW50
X2ZhY3RvcnlfbWFrZSgiZmFrZXNpbmsiLCBudWxscHRyKTsKLSAgICAgICAgZ19vYmplY3Rfc2V0
KHNpbmssICJhc3luYyIsIEZBTFNFLCBudWxscHRyKTsKLSAgICAgICAgZ3N0X2Jpbl9hZGRfbWFu
eShHU1RfQklOKG1fYXVkaW9TaW5rQmluLmdldCgpKSwgcXVldWUsIHNpbmssIG51bGxwdHIpOwot
Ci0gICAgICAgIEdSZWZQdHI8R3N0UGFkPiBzaW5rUGFkID0gYWRvcHRHUmVmKGdzdF9lbGVtZW50
X2dldF9zdGF0aWNfcGFkKHF1ZXVlLCAic2luayIpKTsKLSAgICAgICAgZ3N0X3BhZF9saW5rX2Z1
bGwocGFkLCBzaW5rUGFkLmdldCgpLCBHU1RfUEFEX0xJTktfQ0hFQ0tfTk9USElORyk7Ci0KLSAg
ICAgICAgR1F1YXJrIHF1YXJrID0gZ19xdWFya19mcm9tX3N0YXRpY19zdHJpbmcoInBlZXIiKTsK
LSAgICAgICAgZ19vYmplY3Rfc2V0X3FkYXRhKEdfT0JKRUNUKHBhZCksIHF1YXJrLCBzaW5rUGFk
LmdldCgpKTsKLSAgICAgICAgZ3N0X2VsZW1lbnRfbGlua19wYWRzX2Z1bGwocXVldWUsICJzcmMi
LCBzaW5rLCAic2luayIsIEdTVF9QQURfTElOS19DSEVDS19OT1RISU5HKTsKLSAgICAgICAgZ3N0
X2VsZW1lbnRfc3luY19zdGF0ZV93aXRoX3BhcmVudChxdWV1ZSk7Ci0gICAgICAgIGdzdF9lbGVt
ZW50X3N5bmNfc3RhdGVfd2l0aF9wYXJlbnQoc2luayk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
CisgICAgR1NUX0RFQlVHKCJOZXcgcGFkICUiIEdTVF9QVFJfRk9STUFULCBwYWQpOwogCiAgICAg
Ly8gQSBuZXcgcGFkIGZvciBhIHBsYW5hciBjaGFubmVsIHdhcyBhZGRlZCBpbiBkZWludGVybGVh
dmUuIFBsdWcKICAgICAvLyBpbiBhbiBhcHBzaW5rIHNvIHdlIGNhbiBwdWxsIHRoZSBkYXRhIGZy
b20gZWFjaAogICAgIC8vIGNoYW5uZWwuIFBpcGVsaW5lIGxvb2tzIGxpa2U6Ci0gICAgLy8gLi4u
IGRlaW50ZXJsZWF2ZSAhIHF1ZXVlICEgYXBwc2luay4KLSAgICBHc3RFbGVtZW50KiBxdWV1ZSA9
IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgicXVldWUiLCBudWxscHRyKTsKKyAgICAvLyAuLi4g
ZGVpbnRlcmxlYXZlICEgYXBwc2luay4KICAgICBHc3RFbGVtZW50KiBzaW5rID0gZ3N0X2VsZW1l
bnRfZmFjdG9yeV9tYWtlKCJhcHBzaW5rIiwgbnVsbHB0cik7CiAKLSAgICBHc3RBcHBTaW5rQ2Fs
bGJhY2tzIGNhbGxiYWNrczsKLSAgICBjYWxsYmFja3MuZW9zID0gbnVsbHB0cjsKLSAgICBjYWxs
YmFja3MubmV3X3ByZXJvbGwgPSBudWxscHRyOwotICAgIGNhbGxiYWNrcy5uZXdfc2FtcGxlID0g
b25BcHBzaW5rTmV3QnVmZmVyQ2FsbGJhY2s7CisgICAgc3RhdGljIEdzdEFwcFNpbmtDYWxsYmFj
a3MgY2FsbGJhY2tzID0geworICAgICAgICBudWxscHRyLAorICAgICAgICBbXShHc3RBcHBTaW5r
KiBzaW5rLCBncG9pbnRlciB1c2VyRGF0YSkgLT4gR3N0Rmxvd1JldHVybiB7CisgICAgICAgICAg
ICBhdXRvIHNhbXBsZSA9IGFkb3B0R1JlZihnc3RfYXBwX3NpbmtfdHJ5X3B1bGxfcHJlcm9sbChz
aW5rLCAwKSk7CisgICAgICAgICAgICBpZiAoIXNhbXBsZSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gZ3N0X2FwcF9zaW5rX2lzX2VvcyhzaW5rKSA/IEdTVF9GTE9XX0VPUyA6IEdTVF9GTE9XX0VS
Uk9SOworCisgICAgICAgICAgICBHUXVhcmsgcXVhcmsgPSBnX3F1YXJrX2Zyb21fc3RhdGljX3N0
cmluZygiY2hhbm5lbC1pZCIpOworICAgICAgICAgICAgaW50IGNoYW5uZWxJZCA9IEdQT0lOVEVS
X1RPX0lOVChnX29iamVjdF9nZXRfcWRhdGEoR19PQkpFQ1Qoc2luayksIHF1YXJrKSk7CisgICAg
ICAgICAgICBhdXRvIHN0YXR1cyA9IHN0YXRpY19jYXN0PEF1ZGlvU291cmNlUHJvdmlkZXJHU3Ry
ZWFtZXIqPih1c2VyRGF0YSktPmhhbmRsZVNhbXBsZShXVEZNb3ZlKHNhbXBsZSksIGNoYW5uZWxJ
ZCk7CisgICAgICAgICAgICBpZiAoZ3N0X2FwcF9zaW5rX2lzX2VvcyhzaW5rKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gR1NUX0ZMT1dfRU9TOworICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsK
KyAgICAgICAgfSwKKyAgICAgICAgW10oR3N0QXBwU2luayogc2luaywgZ3BvaW50ZXIgdXNlckRh
dGEpIC0+IEdzdEZsb3dSZXR1cm4geworICAgICAgICAgICAgYXV0byBzYW1wbGUgPSBhZG9wdEdS
ZWYoZ3N0X2FwcF9zaW5rX3RyeV9wdWxsX3NhbXBsZShzaW5rLCAwKSk7CisgICAgICAgICAgICBp
ZiAoIXNhbXBsZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZ3N0X2FwcF9zaW5rX2lzX2Vvcyhz
aW5rKSA/IEdTVF9GTE9XX0VPUyA6IEdTVF9GTE9XX0VSUk9SOworICAgICAgICAgICAgR1F1YXJr
IHF1YXJrID0gZ19xdWFya19mcm9tX3N0YXRpY19zdHJpbmcoImNoYW5uZWwtaWQiKTsKKyAgICAg
ICAgICAgIGludCBjaGFubmVsSWQgPSBHUE9JTlRFUl9UT19JTlQoZ19vYmplY3RfZ2V0X3FkYXRh
KEdfT0JKRUNUKHNpbmspLCBxdWFyaykpOworICAgICAgICAgICAgYXV0byBzdGF0dXMgPSBzdGF0
aWNfY2FzdDxBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyKj4odXNlckRhdGEpLT5oYW5kbGVT
YW1wbGUoV1RGTW92ZShzYW1wbGUpLCBjaGFubmVsSWQpOworICAgICAgICAgICAgaWYgKGdzdF9h
cHBfc2lua19pc19lb3Moc2luaykpCisgICAgICAgICAgICAgICAgcmV0dXJuIEdTVF9GTE9XX0VP
UzsKKyAgICAgICAgICAgIHJldHVybiBzdGF0dXM7CisgICAgICAgIH0sCisgICAgICAgIHsgbnVs
bHB0ciB9CisgICAgfTsKICAgICBnc3RfYXBwX3Npbmtfc2V0X2NhbGxiYWNrcyhHU1RfQVBQX1NJ
Tksoc2luayksICZjYWxsYmFja3MsIHRoaXMsIG51bGxwdHIpOwotCiAgICAgZ19vYmplY3Rfc2V0
KHNpbmssICJhc3luYyIsIEZBTFNFLCBudWxscHRyKTsKIAotICAgIEdSZWZQdHI8R3N0Q2Fwcz4g
Y2FwcyA9IGFkb3B0R1JlZihnc3RfY2Fwc19uZXdfc2ltcGxlKCJhdWRpby94LXJhdyIsICJyYXRl
IiwgR19UWVBFX0lOVCwgc3RhdGljX2Nhc3Q8aW50PihnU2FtcGxlQml0UmF0ZSksCi0gICAgICAg
ICJjaGFubmVscyIsIEdfVFlQRV9JTlQsIDEsCi0gICAgICAgICJmb3JtYXQiLCBHX1RZUEVfU1RS
SU5HLCBHU1RfQVVESU9fTkUoRjMyKSwKLSAgICAgICAgImxheW91dCIsIEdfVFlQRV9TVFJJTkcs
ICJpbnRlcmxlYXZlZCIsIG51bGxwdHIpKTsKLQorICAgIGF1dG8gY2FwcyA9IGFkb3B0R1JlZihn
c3RfY2Fwc19uZXdfc2ltcGxlKCJhdWRpby94LXJhdyIsICJyYXRlIiwgR19UWVBFX0lOVCwgc3Rh
dGljX2Nhc3Q8aW50PihnU2FtcGxlQml0UmF0ZSksCisgICAgICAgICJjaGFubmVscyIsIEdfVFlQ
RV9JTlQsIDEsICJmb3JtYXQiLCBHX1RZUEVfU1RSSU5HLCBHU1RfQVVESU9fTkUoRjMyKSwgImxh
eW91dCIsIEdfVFlQRV9TVFJJTkcsICJpbnRlcmxlYXZlZCIsIG51bGxwdHIpKTsKICAgICBnc3Rf
YXBwX3Npbmtfc2V0X2NhcHMoR1NUX0FQUF9TSU5LKHNpbmspLCBjYXBzLmdldCgpKTsKIAotICAg
IGdzdF9iaW5fYWRkX21hbnkoR1NUX0JJTihtX2F1ZGlvU2lua0Jpbi5nZXQoKSksIHF1ZXVlLCBz
aW5rLCBudWxscHRyKTsKKyAgICBnc3RfYmluX2FkZChHU1RfQklOX0NBU1QobV9hdWRpb1NpbmtC
aW4uZ2V0KCkpLCBzaW5rKTsKIAotICAgIEdSZWZQdHI8R3N0UGFkPiBzaW5rUGFkID0gYWRvcHRH
UmVmKGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkKHF1ZXVlLCAic2luayIpKTsKKyAgICBhdXRv
IHNpbmtQYWQgPSBhZG9wdEdSZWYoZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQoc2luaywgInNp
bmsiKSk7CiAgICAgZ3N0X3BhZF9saW5rX2Z1bGwocGFkLCBzaW5rUGFkLmdldCgpLCBHU1RfUEFE
X0xJTktfQ0hFQ0tfTk9USElORyk7CiAKICAgICBHUXVhcmsgcXVhcmsgPSBnX3F1YXJrX2Zyb21f
c3RhdGljX3N0cmluZygicGVlciIpOwogICAgIGdfb2JqZWN0X3NldF9xZGF0YShHX09CSkVDVChw
YWQpLCBxdWFyaywgc2lua1BhZC5nZXQoKSk7CiAKLSAgICBnc3RfZWxlbWVudF9saW5rX3BhZHNf
ZnVsbChxdWV1ZSwgInNyYyIsIHNpbmssICJzaW5rIiwgR1NUX1BBRF9MSU5LX0NIRUNLX05PVEhJ
TkcpOworICAgIG1fZGVpbnRlcmxlYXZlU291cmNlUGFkcysrOworICAgIEdRdWFyayBjaGFubmVs
SWRRdWFyayA9IGdfcXVhcmtfZnJvbV9zdGF0aWNfc3RyaW5nKCJjaGFubmVsLWlkIik7CisgICAg
Z19vYmplY3Rfc2V0X3FkYXRhKEdfT0JKRUNUKHNpbmspLCBjaGFubmVsSWRRdWFyaywgR0lOVF9U
T19QT0lOVEVSKG1fZGVpbnRlcmxlYXZlU291cmNlUGFkcykpOwogCiAgICAgc2lua1BhZCA9IGFk
b3B0R1JlZihnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZChzaW5rLCAic2luayIpKTsKLSAgICBn
c3RfcGFkX2FkZF9wcm9iZShzaW5rUGFkLmdldCgpLCBHU1RfUEFEX1BST0JFX1RZUEVfRVZFTlRf
RkxVU0gsIG9uQXBwc2lua0ZsdXNoQ2FsbGJhY2ssIHRoaXMsIG51bGxwdHIpOworICAgIGdzdF9w
YWRfYWRkX3Byb2JlKHNpbmtQYWQuZ2V0KCksIEdTVF9QQURfUFJPQkVfVFlQRV9FVkVOVF9GTFVT
SCwgW10oR3N0UGFkKiwgR3N0UGFkUHJvYmVJbmZvKiBpbmZvLCBncG9pbnRlciB1c2VyRGF0YSkg
eworICAgICAgICBpZiAoR1NUX1BBRF9QUk9CRV9JTkZPX1RZUEUoaW5mbykgJiAoR1NUX1BBRF9Q
Uk9CRV9UWVBFX0VWRU5UX0RPV05TVFJFQU0gfCBHU1RfUEFEX1BST0JFX1RZUEVfRVZFTlRfRkxV
U0gpKSB7CisgICAgICAgICAgICBHc3RFdmVudCogZXZlbnQgPSBHU1RfUEFEX1BST0JFX0lORk9f
RVZFTlQoaW5mbyk7CisgICAgICAgICAgICBpZiAoR1NUX0VWRU5UX1RZUEUoZXZlbnQpID09IEdT
VF9FVkVOVF9GTFVTSF9TVE9QKSB7CisgICAgICAgICAgICAgICAgYXV0byogcHJvdmlkZXIgPSBy
ZWludGVycHJldF9jYXN0PEF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIqPih1c2VyRGF0YSk7
CisgICAgICAgICAgICAgICAgcHJvdmlkZXItPmNsZWFyQWRhcHRlcnMoKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gR1NUX1BBRF9QUk9CRV9PSzsKKyAgICB9LCB0
aGlzLCBudWxscHRyKTsKIAotICAgIGdzdF9lbGVtZW50X3N5bmNfc3RhdGVfd2l0aF9wYXJlbnQo
cXVldWUpOwogICAgIGdzdF9lbGVtZW50X3N5bmNfc3RhdGVfd2l0aF9wYXJlbnQoc2luayk7CiB9
CiAKIHZvaWQgQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lcjo6aGFuZGxlUmVtb3ZlZERlaW50
ZXJsZWF2ZVBhZChHc3RQYWQqIHBhZCkKIHsKKyAgICBHU1RfREVCVUcoIlBhZCAlIiBHU1RfUFRS
X0ZPUk1BVCAiIGdvbmUiLCBwYWQpOwogICAgIG1fZGVpbnRlcmxlYXZlU291cmNlUGFkcy0tOwog
Ci0gICAgLy8gUmVtb3ZlIHRoZSBxdWV1ZSAhIGFwcHNpbmsgY2hhaW4gZG93bnN0cmVhbSBvZiBk
ZWludGVybGVhdmUuCiAgICAgR1F1YXJrIHF1YXJrID0gZ19xdWFya19mcm9tX3N0YXRpY19zdHJp
bmcoInBlZXIiKTsKICAgICBHc3RQYWQqIHNpbmtQYWQgPSBHU1RfUEFEX0NBU1QoZ19vYmplY3Rf
Z2V0X3FkYXRhKEdfT0JKRUNUKHBhZCksIHF1YXJrKSk7CiAgICAgaWYgKCFzaW5rUGFkKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IHF1ZXVlID0gYWRvcHRHUmVm
KGdzdF9wYWRfZ2V0X3BhcmVudF9lbGVtZW50KHNpbmtQYWQpKTsKLSAgICBHUmVmUHRyPEdzdFBh
ZD4gcXVldWVTcmNQYWQgPSBhZG9wdEdSZWYoZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQocXVl
dWUuZ2V0KCksICJzcmMiKSk7Ci0gICAgR1JlZlB0cjxHc3RQYWQ+IGFwcHNpbmtTaW5rUGFkID0g
YWRvcHRHUmVmKGdzdF9wYWRfZ2V0X3BlZXIocXVldWVTcmNQYWQuZ2V0KCkpKTsKLSAgICBHUmVm
UHRyPEdzdEVsZW1lbnQ+IHNpbmsgPSBhZG9wdEdSZWYoZ3N0X3BhZF9nZXRfcGFyZW50X2VsZW1l
bnQoYXBwc2lua1NpbmtQYWQuZ2V0KCkpKTsKKyAgICBhdXRvIHNpbmsgPSBhZG9wdEdSZWYoZ3N0
X3BhZF9nZXRfcGFyZW50X2VsZW1lbnQoc2lua1BhZCkpOwogICAgIGdzdF9lbGVtZW50X3NldF9z
dGF0ZShzaW5rLmdldCgpLCBHU1RfU1RBVEVfTlVMTCk7Ci0gICAgZ3N0X2VsZW1lbnRfc2V0X3N0
YXRlKHF1ZXVlLmdldCgpLCBHU1RfU1RBVEVfTlVMTCk7Ci0gICAgZ3N0X2VsZW1lbnRfdW5saW5r
KHF1ZXVlLmdldCgpLCBzaW5rLmdldCgpKTsKLSAgICBnc3RfYmluX3JlbW92ZV9tYW55KEdTVF9C
SU4obV9hdWRpb1NpbmtCaW4uZ2V0KCkpLCBxdWV1ZS5nZXQoKSwgc2luay5nZXQoKSwgbnVsbHB0
cik7CisgICAgZ3N0X2Jpbl9yZW1vdmUoR1NUX0JJTl9DQVNUKG1fYXVkaW9TaW5rQmluLmdldCgp
KSwgc2luay5nZXQoKSk7CiB9CiAKIHZvaWQgQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lcjo6
ZGVpbnRlcmxlYXZlUGFkc0NvbmZpZ3VyZWQoKQogeworICAgIEdTVF9ERUJVRygiRGVpbnRlcmxl
YXZlIGNvbmZpZ3VyZWQsIG5vdGlmeWluZyBjbGllbnQiKTsKICAgICBtX25vdGlmaWVyLT5ub3Rp
ZnkoTWFpblRocmVhZE5vdGlmaWNhdGlvbjo6RGVpbnRlcmxlYXZlUGFkc0NvbmZpZ3VyZWQsIFt0
aGlzXSB7CiAgICAgICAgIEFTU0VSVChtX2NsaWVudCk7Ci0gICAgICAgIEFTU0VSVChtX2RlaW50
ZXJsZWF2ZVNvdXJjZVBhZHMgPT0gZ051bWJlck9mQ2hhbm5lbHMpOwotCiAgICAgICAgIG1fY2xp
ZW50LT5zZXRGb3JtYXQobV9kZWludGVybGVhdmVTb3VyY2VQYWRzLCBnU2FtcGxlQml0UmF0ZSk7
CiAgICAgfSk7CiB9CkBAIC0zNzYsOCArMzM3LDggQEAgdm9pZCBBdWRpb1NvdXJjZVByb3ZpZGVy
R1N0cmVhbWVyOjpkZWludGVybGVhdmVQYWRzQ29uZmlndXJlZCgpCiB2b2lkIEF1ZGlvU291cmNl
UHJvdmlkZXJHU3RyZWFtZXI6OmNsZWFyQWRhcHRlcnMoKQogewogICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2sobV9hZGFwdGVyTXV0ZXgpOwotICAgIGdzdF9hZGFwdGVyX2NsZWFyKG1fZnJvbnRM
ZWZ0QWRhcHRlcik7Ci0gICAgZ3N0X2FkYXB0ZXJfY2xlYXIobV9mcm9udFJpZ2h0QWRhcHRlcik7
CisgICAgZm9yIChhdXRvJiBhZGFwdGVyIDogbV9hZGFwdGVycy52YWx1ZXMoKSkKKyAgICAgICAg
Z3N0X2FkYXB0ZXJfY2xlYXIoYWRhcHRlci5nZXQoKSk7CiB9CiAKIH0gLy8gV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvU291
cmNlUHJvdmlkZXJHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dz
dHJlYW1lci9BdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyLmgKaW5kZXggZTRmNjUxMmYxMmEw
M2YxMzljNDM3ZGMyMGQ3MTcyNGIxZDRiMjM3MC4uMjZhYjQ2OGVkNDI4NDVjMzFlOGM4MTYzNTNi
ZDQ2YmQ3YTRlMTRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
Z3N0cmVhbWVyL0F1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1l
ci5oCkBAIC0xNiw4ICsxNiw3IEBACiAgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCiAgKi8KIAot
I2lmbmRlZiBBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyX2gKLSNkZWZpbmUgQXVkaW9Tb3Vy
Y2VQcm92aWRlckdTdHJlYW1lcl9oCisjcHJhZ21hIG9uY2UKIAogI2lmIEVOQUJMRShXRUJfQVVE
SU8pICYmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikKIApAQCAtMjgsNyArMjcsNyBA
QAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+
CiAKLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoTElCV0VCUlRDKQorI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCiAjaW5jbHVkZSAiR1N0cmVhbWVyQXVkaW9TdHJlYW1EZXNjcmlwdGlv
bi5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2Vi
QXVkaW9Tb3VyY2VQcm92aWRlci5oIgpAQCAtMzksNyArMzgsNyBAQCB0eXBlZGVmIHN0cnVjdCBf
R3N0QXBwU2luayBHc3RBcHBTaW5rOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoTElCV0VCUlRDKQorI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pCiBjbGFzcyBBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyIGZpbmFsIDogcHVibGljIFdl
YkF1ZGlvU291cmNlUHJvdmlkZXIgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8QXVkaW9Tb3Vy
Y2VQcm92aWRlckdTdHJlYW1lcj4gY3JlYXRlKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJiBzb3Vy
Y2UpCkBAIC02NywyOCArNjYsMjYgQEAgcHVibGljOgogICAgIHZvaWQgZGVpbnRlcmxlYXZlUGFk
c0NvbmZpZ3VyZWQoKTsKICAgICB2b2lkIGhhbmRsZVJlbW92ZWREZWludGVybGVhdmVQYWQoR3N0
UGFkKik7CiAKLSAgICBHc3RGbG93UmV0dXJuIGhhbmRsZUF1ZGlvQnVmZmVyKEdzdEFwcFNpbmsq
KTsKLSAgICBHc3RFbGVtZW50KiBnZXRBdWRpb0JpbigpIGNvbnN0IHsgcmV0dXJuIG1fYXVkaW9T
aW5rQmluLmdldCgpOyB9CisgICAgR3N0Rmxvd1JldHVybiBoYW5kbGVTYW1wbGUoR1JlZlB0cjxH
c3RTYW1wbGU+JiYsIGludCBjaGFubmVsSWQpOwogICAgIHZvaWQgY2xlYXJBZGFwdGVycygpOwog
CiBwcml2YXRlOgorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgR1JlZlB0cjxHc3RFbGVt
ZW50PiBtX3BpcGVsaW5lOworI2VuZGlmCiAgICAgZW51bSBNYWluVGhyZWFkTm90aWZpY2F0aW9u
IHsKICAgICAgICAgRGVpbnRlcmxlYXZlUGFkc0NvbmZpZ3VyZWQgPSAxIDw8IDAsCiAgICAgfTsK
ICAgICBSZWY8TWFpblRocmVhZE5vdGlmaWVyPE1haW5UaHJlYWROb3RpZmljYXRpb24+PiBtX25v
dGlmaWVyOwogICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gbV9hdWRpb1NpbmtCaW47Ci0gICAgQXVk
aW9Tb3VyY2VQcm92aWRlckNsaWVudCogbV9jbGllbnQ7Ci0gICAgaW50IG1fZGVpbnRlcmxlYXZl
U291cmNlUGFkczsKLSAgICBHc3RBZGFwdGVyKiBtX2Zyb250TGVmdEFkYXB0ZXI7Ci0gICAgR3N0
QWRhcHRlciogbV9mcm9udFJpZ2h0QWRhcHRlcjsKLSAgICB1bnNpZ25lZCBsb25nIG1fZGVpbnRl
cmxlYXZlUGFkQWRkZWRIYW5kbGVySWQ7Ci0gICAgdW5zaWduZWQgbG9uZyBtX2RlaW50ZXJsZWF2
ZU5vTW9yZVBhZHNIYW5kbGVySWQ7Ci0gICAgdW5zaWduZWQgbG9uZyBtX2RlaW50ZXJsZWF2ZVBh
ZFJlbW92ZWRIYW5kbGVySWQ7CisgICAgQXVkaW9Tb3VyY2VQcm92aWRlckNsaWVudCogbV9jbGll
bnQgeyBudWxscHRyIH07CisgICAgaW50IG1fZGVpbnRlcmxlYXZlU291cmNlUGFkcyB7IDAgfTsK
KyAgICBIYXNoTWFwPGludCwgR1JlZlB0cjxHc3RBZGFwdGVyPj4gbV9hZGFwdGVyczsKKyAgICB1
bnNpZ25lZCBsb25nIG1fZGVpbnRlcmxlYXZlUGFkQWRkZWRIYW5kbGVySWQgeyAwIH07CisgICAg
dW5zaWduZWQgbG9uZyBtX2RlaW50ZXJsZWF2ZU5vTW9yZVBhZHNIYW5kbGVySWQgeyAwIH07Cisg
ICAgdW5zaWduZWQgbG9uZyBtX2RlaW50ZXJsZWF2ZVBhZFJlbW92ZWRIYW5kbGVySWQgeyAwIH07
CiAgICAgTG9jayBtX2FkYXB0ZXJNdXRleDsKIH07CiAKIH0KICNlbmRpZiAvLyBFTkFCTEUoV0VC
X0FVRElPKSAmJiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpCi0KLSNlbmRpZiAvLyBB
dWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyX2gKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBhYTdkMTY3ZjY5NzRjMWI0Y2Uw
N2FjNWY4YzM1MWJmYjhjMzc1ZDU2Li5kNTAyYThjYTI0MDJkN2I5YmEwZGE4NzE1YWE4ZTg4ZWFk
OTc2ZmExIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMTAtMTkgIFBoaWxpcHBlIE5vcm1h
bmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHU3RyZWFtZXJdIFJFR1JFU1NJ
T04ocjI2NjU1OSk6IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhl
LWF1ZGlvLWFwaS90aGUtZGVzdGluYXRpb25ub2RlLWludGVyZmFjZS9kZXN0aW5hdGlvbi5odG1s
IGlzIGZhaWxpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxNjE3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ2xpYi9UZXN0RXhwZWN0YXRpb25zOiBVbmZsYWcgdGVzdHMuCisgICAg
ICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFw
aS90aGUtbWVkaWFlbGVtZW50YXVkaW9zb3VyY2Vub2RlLWludGVyZmFjZS9jb3JzLWNoZWNrLmh0
dHBzLmh0bWwKKyAgICAgICAgaXMgc3RpbGwgZmxha3kgYnV0IGZsYWdnZWQgYWxyZWFkeSBhcyBz
dWNoIGluIHRoZSBnZW5lcmljIFRlc3RFeHBlY3RhdGlvbnMuCisKIDIwMjAtMTAtMTMgIFNlcmdp
byBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+CiAKICAgICAgICAgU2FuaXRpemUg
dGhlIHVzYWdlIG9mIG92ZXJyaWRlIHNpemVzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9nbGliL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL1Rl
c3RFeHBlY3RhdGlvbnMKaW5kZXggODM0NTVjZmIyNTU2NTEzYzZlZWE5NjE2MTA4NWM1YTBlODFl
NjJlMy4uNGYyNmYxMTRlNzg3OTI4OWZiZjMzMjE1NmQ0MmJlYjczZTMzY2M0NSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTU3LDkgKzE1Nyw2IEBA
IHdlYmtpdC5vcmcvYi8xMzMxMjIgY3J5cHRvL3dvcmtlcnMvc3VidGxlL2Flcy1jZmItaW1wb3J0
LWtleS13cmFwLWtleS5odG1sIFsgU2tpCiB3ZWJraXQub3JnL2IvMTg4MDQxIGh0dHAvd3B0L2Ny
eXB0by91bndyYXAtcnNhLWtleS1jcmFzaC5hbnkud29ya2VyLmh0bWwgWyBGYWlsdXJlIFRpbWVv
dXQgUGFzcyBdCiB3ZWJraXQub3JnL2IvMTg4MDQxIGh0dHAvd3B0L2NyeXB0by91bndyYXAtcnNh
LWtleS1jcmFzaC5hbnkuaHRtbCBbIFRpbWVvdXQgUGFzcyBdCiAKLXdlYmtpdC5vcmcvYi8yMTc2
OTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBp
L3RoZS1hdWRpb3dvcmtsZXQtaW50ZXJmYWNlL2F1ZGlvd29ya2xldHByb2Nlc3Nvci1wcm9taXNl
cy5odHRwcy5odG1sIFsgQ3Jhc2ggUGFzcyBdCi13ZWJraXQub3JnL2IvMjE3Njk5IGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtbWVkaWFl
bGVtZW50YXVkaW9zb3VyY2Vub2RlLWludGVyZmFjZS9jb3JzLWNoZWNrLmh0dHBzLmh0bWwgWyBG
YWlsdXJlIF0KLQogIy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICMgRW5kIG9mIENy
eXB0byB0ZXN0cwogIy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KQEAgLTI2MCw4ICsy
NTcsNiBAQCB3ZWJraXQub3JnL2IvMjE1MjgxIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYQogCiB3ZWJraXQub3JnL2IvMjE1ODg2IHdl
YmF1ZGlvL2F1ZGlvYnVmZmVyc291cmNlLXBsYXliYWNrcmF0ZS5odG1sIFsgU2tpcCBdCiAKLXdl
YmtpdC5vcmcvYi8yMTYxNzEgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRp
by90aGUtYXVkaW8tYXBpL3RoZS1kZXN0aW5hdGlvbm5vZGUtaW50ZXJmYWNlL2Rlc3RpbmF0aW9u
Lmh0bWwgWyBGYWlsdXJlIF0KLQogd2Via2l0Lm9yZy9iLzIxNjExOCB3ZWJhdWRpby9jb252b2x2
ZXItc2V0QnVmZmVyLWRpZmZlcmVudC1zYW1wbGVyYXRlLmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5v
cmcvYi8yMTYxMTggd2ViYXVkaW8vY29udm9sdmVyLXNldEJ1ZmZlci1udWxsLmh0bWwgWyBTa2lw
IF0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411848</attachid>
            <date>2020-10-20 01:31:15 -0700</date>
            <delta_ts>2020-10-20 02:19:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216171-20201020013114.patch</filename>
            <type>text/plain</type>
            <size>35499</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NjY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTdkMThmM2MyMGEyOWE2
N2FlZTFlY2I1NTU0ZjgxNjAyZTBlN2YyNS4uZTFlYWMyYzRlNjFlYzhlZTMxNGMwYzU2ZGNkOWU1
MjRlOWYxYzRmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDIwLTEwLTE5ICBQaGls
aXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVy
XSBSRUdSRVNTSU9OKHIyNjY1NTkpOiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dl
YmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWRlc3RpbmF0aW9ubm9kZS1pbnRlcmZhY2UvZGVzdGlu
YXRpb24uaHRtbCBpcyBmYWlsaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTYxNzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGUgQXVkaW9EZXN0aW5hdGlvbiBub3cgcHJvYmVzIHRoZSBhdWRpbyBz
aW5rIHRvIGZpbmQgdGhlIG1heGltdW0gbnVtYmVyIG9mIG91dHB1dCBjaGFubmVscworICAgICAg
ICBpdCBzdXBwb3J0cy4gVGhlIEF1ZGlvRGVzdGluYXRpb24gaXMgYWxzbyBub3cgYWJsZSB0byBy
ZW5kZXIgPjIgY2hhbm5lbHMgZnJvbSB0aGUgQXVkaW9CdXMuCisgICAgICAgIFRoZSBBdWRpb1By
b3ZpZGVyIGFsc28gaGFuZGxlcyBtb3JlIHRoYW4gMiBjaGFubmVscy4gVGhpcyBwYXRjaCBhbHNv
IGluY2x1ZGVzIHZhcmlvdXMgY29kZQorICAgICAgICBjbGVhbnVwcyBhcyB0aGVzZSBmaWxlcyB3
ZXJlIG5vdCB1cGRhdGVkIG11Y2ggZHVyaW5nIHRoZSBwYXN0IGZldyB5ZWFycy4KKworICAgICAg
ICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHdlYmF1ZGlvIHRlc3RzLgorCisgICAgICAgICogcGxhdGZv
cm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6aW5pdGlhbGl6ZURlYnVnQ2F0ZWdvcnkpOgorICAgICAgICAoV2ViQ29yZTo6
bWF4aW11bU51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9E
ZXN0aW5hdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb246
Om1heENoYW5uZWxDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uR1N0
cmVhbWVyOjpBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6On5BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcjo6c3RhcnQpOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcjo6c3RvcCk6CisgICAg
ICAgICogcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9Tb3VyY2VQcm92aWRl
ckdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbml0aWFsaXplRGVidWdDYXRlZ29y
eSk6CisgICAgICAgIChXZWJDb3JlOjpjb3B5R1N0cmVhbWVyQnVmZmVyc1RvQXVkaW9DaGFubmVs
KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXI6OkF1ZGlv
U291cmNlUHJvdmlkZXJHU3RyZWFtZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Tb3VyY2VQ
cm92aWRlckdTdHJlYW1lcjo6fkF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lcjo6cHJvdmlkZUlucHV0KToK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXI6OmhhbmRsZVNh
bXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyOjpz
ZXRDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1l
cjo6aGFuZGxlTmV3RGVpbnRlcmxlYXZlUGFkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU291
cmNlUHJvdmlkZXJHU3RyZWFtZXI6OmhhbmRsZVJlbW92ZWREZWludGVybGVhdmVQYWQpOgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lcjo6ZGVpbnRlcmxlYXZl
UGFkc0NvbmZpZ3VyZWQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Tb3VyY2VQcm92aWRlckdT
dHJlYW1lcjo6Y2xlYXJBZGFwdGVycyk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vZ3N0cmVh
bWVyL0F1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIuaDoKKwogMjAyMC0xMC0xMyAgU2VyZ2lv
IFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlhLmNvbT4KIAogICAgICAgICBTYW5pdGl6ZSB0
aGUgdXNhZ2Ugb2Ygb3ZlcnJpZGUgc2l6ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0
cmVhbWVyLmNwcAppbmRleCAxNThmOTE4NzNiNzFhN2ZjNDY3OTQ1Mjg4NWU2YjkzODAzNzcwMTVh
Li4xYjBjNTRlMWI5OTk1MTliNmE3ZDZkMWFlZmNhNjFiMzA4ZmRkNmFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdT
dHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVy
L0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCkBAIC0zNyw2ICszNyw1MSBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKK0dTVF9ERUJVR19DQVRFR09SWSh3ZWJraXRfYXVkaW9fZGVzdGlu
YXRpb25fZGVidWcpOworI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgd2Via2l0X2F1ZGlvX2Rlc3Rp
bmF0aW9uX2RlYnVnCisKK3N0YXRpYyB2b2lkIGluaXRpYWxpemVEZWJ1Z0NhdGVnb3J5KCkKK3sK
KyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uo
b25jZUZsYWcsIFtdIHsKKyAgICAgICAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQod2Via2l0X2F1
ZGlvX2Rlc3RpbmF0aW9uX2RlYnVnLCAid2Via2l0YXVkaW9kZXN0aW5hdGlvbiIsIDAsICJXZWJL
aXQgV2ViQXVkaW8gRGVzdGluYXRpb24iKTsKKyAgICB9KTsKK30KKworc3RhdGljIHVuc2lnbmVk
IGxvbmcgbWF4aW11bU51bWJlck9mT3V0cHV0Q2hhbm5lbHMoKQoreworICAgIGluaXRpYWxpemVE
ZWJ1Z0NhdGVnb3J5KCk7CisKKyAgICBzdGF0aWMgaW50IGNvdW50ID0gMDsKKyAgICBzdGF0aWMg
c3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtd
IHsKKyAgICAgICAgYXV0byBtb25pdG9yID0gYWRvcHRHUmVmKGdzdF9kZXZpY2VfbW9uaXRvcl9u
ZXcoKSk7CisgICAgICAgIGF1dG8gY2FwcyA9IGFkb3B0R1JlZihnc3RfY2Fwc19uZXdfZW1wdHlf
c2ltcGxlKCJhdWRpby94LXJhdyIpKTsKKyAgICAgICAgZ3N0X2RldmljZV9tb25pdG9yX2FkZF9m
aWx0ZXIobW9uaXRvci5nZXQoKSwgIkF1ZGlvL1NpbmsiLCBjYXBzLmdldCgpKTsKKyAgICAgICAg
Z3N0X2RldmljZV9tb25pdG9yX3N0YXJ0KG1vbml0b3IuZ2V0KCkpOworICAgICAgICBhdXRvKiBk
ZXZpY2VzID0gZ3N0X2RldmljZV9tb25pdG9yX2dldF9kZXZpY2VzKG1vbml0b3IuZ2V0KCkpOwor
ICAgICAgICB3aGlsZSAoZGV2aWNlcykgeworICAgICAgICAgICAgYXV0byBkZXZpY2UgPSBhZG9w
dEdSZWYoR1NUX0RFVklDRV9DQVNUKGRldmljZXMtPmRhdGEpKTsKKyAgICAgICAgICAgIGF1dG8g
Y2FwcyA9IGFkb3B0R1JlZihnc3RfZGV2aWNlX2dldF9jYXBzKGRldmljZS5nZXQoKSkpOworICAg
ICAgICAgICAgdW5zaWduZWQgc2l6ZSA9IGdzdF9jYXBzX2dldF9zaXplKGNhcHMuZ2V0KCkpOwor
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7IGkrKykgeworICAgICAg
ICAgICAgICAgIGF1dG8qIHN0cnVjdHVyZSA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUoY2Fwcy5n
ZXQoKSwgaSk7CisgICAgICAgICAgICAgICAgaWYgKCFnX3N0cl9lcXVhbChnc3Rfc3RydWN0dXJl
X2dldF9uYW1lKHN0cnVjdHVyZSksICJhdWRpby94LXJhdyIpKQorICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICBpbnQgdmFsdWU7CisgICAgICAgICAgICAgICAg
aWYgKCFnc3Rfc3RydWN0dXJlX2dldF9pbnQoc3RydWN0dXJlLCAiY2hhbm5lbHMiLCAmdmFsdWUp
KQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICBjb3VudCA9
IHN0ZDo6bWF4KGNvdW50LCB2YWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkZXZp
Y2VzID0gZ19saXN0X2RlbGV0ZV9saW5rKGRldmljZXMsIGRldmljZXMpOworICAgICAgICB9Cisg
ICAgICAgIEdTVF9ERUJVRygibWF4aW11bU51bWJlck9mT3V0cHV0Q2hhbm5lbHM6ICVkIiwgY291
bnQpOworICAgICAgICBnc3RfZGV2aWNlX21vbml0b3Jfc3RvcChtb25pdG9yLmdldCgpKTsKKyAg
ICB9KTsKKworICAgIHJldHVybiBjb3VudDsKK30KKwogZ2Jvb2xlYW4gbWVzc2FnZUNhbGxiYWNr
KEdzdEJ1cyosIEdzdE1lc3NhZ2UqIG1lc3NhZ2UsIEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIq
IGRlc3RpbmF0aW9uKQogewogICAgIHJldHVybiBkZXN0aW5hdGlvbi0+aGFuZGxlTWVzc2FnZSht
ZXNzYWdlKTsKQEAgLTUwLDE3ICs5NSwxNCBAQCBzdGF0aWMgdm9pZCBhdXRvQXVkaW9TaW5rQ2hp
bGRBZGRlZENhbGxiYWNrKEdzdENoaWxkUHJveHkqLCBHT2JqZWN0KiBvYmplY3QsIGdjaAogCiBS
ZWY8QXVkaW9EZXN0aW5hdGlvbj4gQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKEF1ZGlvSU9DYWxs
YmFjayYgY2FsbGJhY2ssIGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRDaGFu
bmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSkK
IHsKKyAgICBpbml0aWFsaXplRGVidWdDYXRlZ29yeSgpOwogICAgIC8vIEZJWE1FOiBtYWtlIHVz
ZSBvZiBpbnB1dERldmljZUlkIGFzIGFwcHJvcHJpYXRlLgogCiAgICAgLy8gRklYTUU6IEFkZCBz
dXBwb3J0IGZvciBsb2NhbC9saXZlIGF1ZGlvIGlucHV0LgogICAgIGlmIChudW1iZXJPZklucHV0
Q2hhbm5lbHMpCi0gICAgICAgIExPRyhNZWRpYSwgIkF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZSgl
dSwgJXUsICVmKSAtIHVuaGFuZGxlZCBpbnB1dCBjaGFubmVscyIsIG51bWJlck9mSW5wdXRDaGFu
bmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSk7Ci0KLSAgICAvLyBGSVhN
RTogQWRkIHN1cHBvcnQgZm9yIG11bHRpLWNoYW5uZWwgKD4gc3RlcmVvKSBvdXRwdXQuCi0gICAg
aWYgKG51bWJlck9mT3V0cHV0Q2hhbm5lbHMgIT0gMikKLSAgICAgICAgTE9HKE1lZGlhLCAiQXVk
aW9EZXN0aW5hdGlvbjo6Y3JlYXRlKCV1LCAldSwgJWYpIC0gdW5oYW5kbGVkIG91dHB1dCBjaGFu
bmVscyIsIG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2Ft
cGxlUmF0ZSk7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRl
KCV1LCAldSwgJWYpIC0gdW5oYW5kbGVkIGlucHV0IGNoYW5uZWxzIiwgbnVtYmVyT2ZJbnB1dENo
YW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlKTsKIAotICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIoY2FsbGJhY2ssIHNhbXBs
ZVJhdGUpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdWRpb0Rlc3RpbmF0aW9uR1N0cmVh
bWVyKGNhbGxiYWNrLCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlKSk7CiB9CiAK
IGZsb2F0IEF1ZGlvRGVzdGluYXRpb246OmhhcmR3YXJlU2FtcGxlUmF0ZSgpCkBAIC03MCwxOSAr
MTEyLDE2IEBAIGZsb2F0IEF1ZGlvRGVzdGluYXRpb246OmhhcmR3YXJlU2FtcGxlUmF0ZSgpCiAK
IHVuc2lnbmVkIGxvbmcgQXVkaW9EZXN0aW5hdGlvbjo6bWF4Q2hhbm5lbENvdW50KCkKIHsKLSAg
ICAvLyBGSVhNRTogcXVlcnkgdGhlIGRlZmF1bHQgYXVkaW8gaGFyZHdhcmUgZGV2aWNlIHRvIHJl
dHVybiB0aGUgYWN0dWFsIG51bWJlcgotICAgIC8vIG9mIGNoYW5uZWxzIG9mIHRoZSBkZXZpY2Uu
IEFsc28gc2VlIGNvcnJlc3BvbmRpbmcgRklYTUUgaW4gY3JlYXRlKCkuCi0gICAgcmV0dXJuIDA7
CisgICAgcmV0dXJuIG1heGltdW1OdW1iZXJPZk91dHB1dENoYW5uZWxzKCk7CiB9CiAKLUF1ZGlv
RGVzdGluYXRpb25HU3RyZWFtZXI6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIoQXVkaW9JT0Nh
bGxiYWNrJiBjYWxsYmFjaywgZmxvYXQgc2FtcGxlUmF0ZSkKK0F1ZGlvRGVzdGluYXRpb25HU3Ry
ZWFtZXI6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIoQXVkaW9JT0NhbGxiYWNrJiBjYWxsYmFj
aywgdW5zaWduZWQgbG9uZyBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRl
KQogICAgIDogbV9jYWxsYmFjayhjYWxsYmFjaykKLSAgICAsIG1fcmVuZGVyQnVzKEF1ZGlvQnVz
OjpjcmVhdGUoMiwgQXVkaW9VdGlsaXRpZXM6OnJlbmRlclF1YW50dW1TaXplLCBmYWxzZSkpCisg
ICAgLCBtX3JlbmRlckJ1cyhBdWRpb0J1czo6Y3JlYXRlKG51bWJlck9mT3V0cHV0Q2hhbm5lbHMs
IEF1ZGlvVXRpbGl0aWVzOjpyZW5kZXJRdWFudHVtU2l6ZSwgZmFsc2UpKQogICAgICwgbV9zYW1w
bGVSYXRlKHNhbXBsZVJhdGUpCi0gICAgLCBtX2lzUGxheWluZyhmYWxzZSkKIHsKLSAgICBtX3Bp
cGVsaW5lID0gZ3N0X3BpcGVsaW5lX25ldygicGxheSIpOwotICAgIEdSZWZQdHI8R3N0QnVzPiBi
dXMgPSBhZG9wdEdSZWYoZ3N0X3BpcGVsaW5lX2dldF9idXMoR1NUX1BJUEVMSU5FKG1fcGlwZWxp
bmUpKSk7CisgICAgbV9waXBlbGluZSA9IGdzdF9waXBlbGluZV9uZXcoImF1ZGlvLWRlc3RpbmF0
aW9uIik7CisgICAgR1JlZlB0cjxHc3RCdXM+IGJ1cyA9IGFkb3B0R1JlZihnc3RfcGlwZWxpbmVf
Z2V0X2J1cyhHU1RfUElQRUxJTkUobV9waXBlbGluZS5nZXQoKSkpKTsKICAgICBBU1NFUlQoYnVz
KTsKICAgICBnc3RfYnVzX2FkZF9zaWduYWxfd2F0Y2hfZnVsbChidXMuZ2V0KCksIFJ1bkxvb3BT
b3VyY2VQcmlvcml0eTo6UnVuTG9vcERpc3BhdGNoZXIpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3Qo
YnVzLmdldCgpLCAibWVzc2FnZSIsIEdfQ0FMTEJBQ0sobWVzc2FnZUNhbGxiYWNrKSwgdGhpcyk7
CkBAIC05Myw3ICsxMzIsNyBAQCBBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpBdWRpb0Rlc3Rp
bmF0aW9uR1N0cmVhbWVyKEF1ZGlvSU9DYWxsYmFjayYgY2FsbGJhY2ssCiAgICAgR1JlZlB0cjxH
c3RFbGVtZW50PiBhdWRpb1NpbmsgPSBjcmVhdGVQbGF0Zm9ybUF1ZGlvU2luaygpOwogICAgIG1f
YXVkaW9TaW5rQXZhaWxhYmxlID0gYXVkaW9TaW5rOwogICAgIGlmICghYXVkaW9TaW5rKSB7Ci0g
ICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBHU3RyZWFtZXIgYXVkaW8gc2luayBl
bGVtZW50Iik7CisgICAgICAgIEdTVF9FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBHU3RyZWFtZXIg
YXVkaW8gc2luayBlbGVtZW50Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEwNyw3
ICsxNDYsNyBAQCBBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpBdWRpb0Rlc3RpbmF0aW9uR1N0
cmVhbWVyKEF1ZGlvSU9DYWxsYmFjayYgY2FsbGJhY2ssCiAgICAgICAgIC8vIGF1ZGlvc2luayB3
YXMgbG9hZGVkIGNvcnJlY3RseS4KICAgICAgICAgR3N0U3RhdGVDaGFuZ2VSZXR1cm4gc3RhdGVD
aGFuZ2VSZXR1cm4gPSBnc3RfZWxlbWVudF9zZXRfc3RhdGUoYXVkaW9TaW5rLmdldCgpLCBHU1Rf
U1RBVEVfUkVBRFkpOwogICAgICAgICBpZiAoc3RhdGVDaGFuZ2VSZXR1cm4gPT0gR1NUX1NUQVRF
X0NIQU5HRV9GQUlMVVJFKSB7Ci0gICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjaGFu
Z2UgYXV0b2F1ZGlvc2luayBlbGVtZW50IHN0YXRlIik7CisgICAgICAgICAgICBHU1RfRVJST1Io
IkZhaWxlZCB0byBjaGFuZ2UgYXV0b2F1ZGlvc2luayBlbGVtZW50IHN0YXRlIik7CiAgICAgICAg
ICAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUoYXVkaW9TaW5rLmdldCgpLCBHU1RfU1RBVEVfTlVM
TCk7CiAgICAgICAgICAgICBtX2F1ZGlvU2lua0F2YWlsYWJsZSA9IGZhbHNlOwogICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtMTE2LDcgKzE1NSw3IEBAIEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6
OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIoQXVkaW9JT0NhbGxiYWNrJiBjYWxsYmFjaywKIAog
ICAgIEdzdEVsZW1lbnQqIGF1ZGlvQ29udmVydCA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgi
YXVkaW9jb252ZXJ0IiwgbnVsbHB0cik7CiAgICAgR3N0RWxlbWVudCogYXVkaW9SZXNhbXBsZSA9
IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgiYXVkaW9yZXNhbXBsZSIsIG51bGxwdHIpOwotICAg
IGdzdF9iaW5fYWRkX21hbnkoR1NUX0JJTl9DQVNUKG1fcGlwZWxpbmUpLCBtX3NyYy5nZXQoKSwg
YXVkaW9Db252ZXJ0LCBhdWRpb1Jlc2FtcGxlLCBhdWRpb1NpbmsuZ2V0KCksIG51bGxwdHIpOwor
ICAgIGdzdF9iaW5fYWRkX21hbnkoR1NUX0JJTl9DQVNUKG1fcGlwZWxpbmUuZ2V0KCkpLCBtX3Ny
Yy5nZXQoKSwgYXVkaW9Db252ZXJ0LCBhdWRpb1Jlc2FtcGxlLCBhdWRpb1NpbmsuZ2V0KCksIG51
bGxwdHIpOwogCiAgICAgLy8gTGluayBzcmMgcGFkcyBmcm9tIHdlYmtpdEF1ZGlvU3JjIHRvIGF1
ZGlvQ29udmVydCAhIGF1ZGlvUmVzYW1wbGUgISBhdXRvYXVkaW9zaW5rLgogICAgIGdzdF9lbGVt
ZW50X2xpbmtfcGFkc19mdWxsKG1fc3JjLmdldCgpLCAic3JjIiwgYXVkaW9Db252ZXJ0LCAic2lu
ayIsIEdTVF9QQURfTElOS19DSEVDS19OT1RISU5HKTsKQEAgLTEyNiwxMyArMTY1LDEyIEBAIEF1
ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIoQXVkaW9J
T0NhbGxiYWNrJiBjYWxsYmFjaywKIAogQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcjo6fkF1ZGlv
RGVzdGluYXRpb25HU3RyZWFtZXIoKQogewotICAgIEdSZWZQdHI8R3N0QnVzPiBidXMgPSBhZG9w
dEdSZWYoZ3N0X3BpcGVsaW5lX2dldF9idXMoR1NUX1BJUEVMSU5FKG1fcGlwZWxpbmUpKSk7Cisg
ICAgR1JlZlB0cjxHc3RCdXM+IGJ1cyA9IGFkb3B0R1JlZihnc3RfcGlwZWxpbmVfZ2V0X2J1cyhH
U1RfUElQRUxJTkUobV9waXBlbGluZS5nZXQoKSkpKTsKICAgICBBU1NFUlQoYnVzKTsKICAgICBn
X3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMoYnVzLmdldCgpLCByZWludGVycHJl
dF9jYXN0PGdwb2ludGVyPihtZXNzYWdlQ2FsbGJhY2spLCB0aGlzKTsKICAgICBnc3RfYnVzX3Jl
bW92ZV9zaWduYWxfd2F0Y2goYnVzLmdldCgpKTsKIAotICAgIGdzdF9lbGVtZW50X3NldF9zdGF0
ZShtX3BpcGVsaW5lLCBHU1RfU1RBVEVfTlVMTCk7Ci0gICAgZ3N0X29iamVjdF91bnJlZihtX3Bp
cGVsaW5lKTsKKyAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUobV9waXBlbGluZS5nZXQoKSwgR1NU
X1NUQVRFX05VTEwpOwogfQogCiB1bnNpZ25lZCBBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpm
cmFtZXNQZXJCdWZmZXIoKSBjb25zdApAQCAtMTUzLDkgKzE5MSwyNiBAQCBnYm9vbGVhbiBBdWRp
b0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpoYW5kbGVNZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3NhZ2Up
CiAgICAgY2FzZSBHU1RfTUVTU0FHRV9FUlJPUjoKICAgICAgICAgZ3N0X21lc3NhZ2VfcGFyc2Vf
ZXJyb3IobWVzc2FnZSwgJmVycm9yLm91dFB0cigpLCAmZGVidWcub3V0UHRyKCkpOwogICAgICAg
ICBnX3dhcm5pbmcoIkVycm9yOiAlZCwgJXMuIERlYnVnIG91dHB1dDogJXMiLCBlcnJvci0+Y29k
ZSwgIGVycm9yLT5tZXNzYWdlLCBkZWJ1Zy5nZXQoKSk7Ci0gICAgICAgIGdzdF9lbGVtZW50X3Nl
dF9zdGF0ZShtX3BpcGVsaW5lLCBHU1RfU1RBVEVfTlVMTCk7CisgICAgICAgIGdzdF9lbGVtZW50
X3NldF9zdGF0ZShtX3BpcGVsaW5lLmdldCgpLCBHU1RfU1RBVEVfTlVMTCk7CiAgICAgICAgIG1f
aXNQbGF5aW5nID0gZmFsc2U7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgR1NUX01FU1NBR0Vf
U1RBVEVfQ0hBTkdFRDoKKyAgICAgICAgaWYgKEdTVF9NRVNTQUdFX1NSQyhtZXNzYWdlKSA9PSBH
U1RfT0JKRUNUKG1fcGlwZWxpbmUuZ2V0KCkpKSB7CisgICAgICAgICAgICBHc3RTdGF0ZSBvbGRT
dGF0ZSwgbmV3U3RhdGUsIHBlbmRpbmc7CisgICAgICAgICAgICBnc3RfbWVzc2FnZV9wYXJzZV9z
dGF0ZV9jaGFuZ2VkKG1lc3NhZ2UsICZvbGRTdGF0ZSwgJm5ld1N0YXRlLCAmcGVuZGluZyk7CisK
KyAgICAgICAgICAgIEdTVF9JTkZPX09CSkVDVChtX3BpcGVsaW5lLmdldCgpLCAiU3RhdGUgY2hh
bmdlZCAob2xkOiAlcywgbmV3OiAlcywgcGVuZGluZzogJXMpIiwKKyAgICAgICAgICAgICAgICBn
c3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFtZShvbGRTdGF0ZSksCisgICAgICAgICAgICAgICAgZ3N0
X2VsZW1lbnRfc3RhdGVfZ2V0X25hbWUobmV3U3RhdGUpLAorICAgICAgICAgICAgICAgIGdzdF9l
bGVtZW50X3N0YXRlX2dldF9uYW1lKHBlbmRpbmcpKTsKKworICAgICAgICAgICAgV1RGOjpTdHJp
bmcgZG90RmlsZU5hbWUgPSBtYWtlU3RyaW5nKEdTVF9PQkpFQ1RfTkFNRShtX3BpcGVsaW5lLmdl
dCgpKSwgJ18nLAorICAgICAgICAgICAgICAgIGdzdF9lbGVtZW50X3N0YXRlX2dldF9uYW1lKG9s
ZFN0YXRlKSwgJ18nLAorICAgICAgICAgICAgICAgIGdzdF9lbGVtZW50X3N0YXRlX2dldF9uYW1l
KG5ld1N0YXRlKSk7CisKKyAgICAgICAgICAgIEdTVF9ERUJVR19CSU5fVE9fRE9UX0ZJTEVfV0lU
SF9UUyhHU1RfQklOX0NBU1QobV9waXBlbGluZS5nZXQoKSksIEdTVF9ERUJVR19HUkFQSF9TSE9X
X0FMTCwgZG90RmlsZU5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIH0KKyAgICAgICAgYnJl
YWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTcxLDEyICsyMjYs
MTIgQEAgdm9pZCBBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpzdGFydChGdW5jdGlvbjx2b2lk
KEZ1bmN0aW9uPHZvaWQoKT4mJik+JiYgZGlzcGEKICAgICBpZiAoZGlzcGF0Y2hUb1JlbmRlclRo
cmVhZCkKICAgICAgICAgd2Via2l0V2ViQXVkaW9Tb3VyY2VTZXREaXNwYXRjaFRvUmVuZGVyVGhy
ZWFkQ2FsbGJhY2soV0VCS0lUX1dFQl9BVURJT19TUkMobV9zcmMuZ2V0KCkpLCBXVEZNb3ZlKGRp
c3BhdGNoVG9SZW5kZXJUaHJlYWQpKTsKIAotICAgIGlmIChnc3RfZWxlbWVudF9zZXRfc3RhdGUo
bV9waXBlbGluZSwgR1NUX1NUQVRFX1BMQVlJTkcpID09IEdTVF9TVEFURV9DSEFOR0VfRkFJTFVS
RSkgeworICAgIEdTVF9ERUJVRygiU3RhcnRpbmciKTsKKyAgICBpZiAoZ3N0X2VsZW1lbnRfc2V0
X3N0YXRlKG1fcGlwZWxpbmUuZ2V0KCksIEdTVF9TVEFURV9QTEFZSU5HKSA9PSBHU1RfU1RBVEVf
Q0hBTkdFX0ZBSUxVUkUpIHsKICAgICAgICAgZ193YXJuaW5nKCJFcnJvcjogRmFpbGVkIHRvIHNl
dCBwaXBlbGluZSB0byBwbGF5aW5nIik7CiAgICAgICAgIG1faXNQbGF5aW5nID0gZmFsc2U7CiAg
ICAgICAgIHJldHVybjsKICAgICB9Ci0KICAgICBtX2lzUGxheWluZyA9IHRydWU7CiB9CiAKQEAg
LTE4Niw3ICsyNDEsOCBAQCB2b2lkIEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6OnN0b3AoKQog
ICAgIGlmICghbV9hdWRpb1NpbmtBdmFpbGFibGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdz
dF9lbGVtZW50X3NldF9zdGF0ZShtX3BpcGVsaW5lLCBHU1RfU1RBVEVfUEFVU0VEKTsKKyAgICBH
U1RfREVCVUcoIlN0b3BwaW5nIik7CisgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKG1fcGlwZWxp
bmUuZ2V0KCksIEdTVF9TVEFURV9QQVVTRUQpOwogICAgIG1faXNQbGF5aW5nID0gZmFsc2U7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9B
dWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5oCmluZGV4IDY3YTM5MzU4MDA3
ZDkzYjY3YWIzMmQxMWM3YTZkOWE2OWUxNDBiYjEuLjc5NjAwNDYxYjNmZDNlZDk4OTAyZWRlYTg5
NGEwNDU0MTRhMjcwYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuaApA
QCAtMTYsOCArMTYsNyBAQAogICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQogICovCiAKLSNpZm5k
ZWYgQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcl9oCi0jZGVmaW5lIEF1ZGlvRGVzdGluYXRpb25H
U3RyZWFtZXJfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBdWRpb0J1cy5oIgogI2luY2x1
ZGUgIkF1ZGlvRGVzdGluYXRpb24uaCIKQEAgLTMyLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyIDogcHVibGljIEF1ZGlvRGVz
dGluYXRpb24gewogcHVibGljOgotICAgIEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIoQXVkaW9J
T0NhbGxiYWNrJiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgQXVkaW9EZXN0aW5hdGlvbkdTdHJl
YW1lcihBdWRpb0lPQ2FsbGJhY2smLCB1bnNpZ25lZCBsb25nIG51bWJlck9mT3V0cHV0Q2hhbm5l
bHMsIGZsb2F0IHNhbXBsZVJhdGUpOwogICAgIHZpcnR1YWwgfkF1ZGlvRGVzdGluYXRpb25HU3Ry
ZWFtZXIoKTsKIAogICAgIHZvaWQgc3RhcnQoRnVuY3Rpb248dm9pZChGdW5jdGlvbjx2b2lkKCk+
JiYpPiYmIGRpc3BhdGNoVG9SZW5kZXJUaHJlYWQpIG92ZXJyaWRlOwpAQCAtNTAsMTIgKzQ5LDEw
IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPEF1ZGlvQnVzPiBtX3JlbmRlckJ1czsKIAogICAgIGZs
b2F0IG1fc2FtcGxlUmF0ZTsKLSAgICBib29sIG1faXNQbGF5aW5nOwotICAgIGJvb2wgbV9hdWRp
b1NpbmtBdmFpbGFibGU7Ci0gICAgR3N0RWxlbWVudCogbV9waXBlbGluZTsKKyAgICBib29sIG1f
aXNQbGF5aW5nIHsgZmFsc2UgfTsKKyAgICBib29sIG1fYXVkaW9TaW5rQXZhaWxhYmxlIHsgZmFs
c2UgfTsKKyAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IG1fcGlwZWxpbmU7CiAgICAgR1JlZlB0cjxH
c3RFbGVtZW50PiBtX3NyYzsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
IC8vIEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvU291cmNl
UHJvdmlkZXJHU3RyZWFtZXIuY3BwCmluZGV4IDE1YzQyNjZiMzEyYzI3OGZjNzc3MDQyNmIxNTUz
YTEzMzkzNjU0MWIuLjAxOTkyYWJlNzYxZjY3ZDc5MWM3MTkxOTZlN2U2M2M2YzVmMDE4ZWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb1Nv
dXJjZVByb3ZpZGVyR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9nc3RyZWFtZXIvQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lci5jcHAKQEAgLTI3LDIx
ICsyNywyNSBAQAogI2luY2x1ZGUgPGdzdC9hdWRpby9hdWRpby1pbmZvLmg+CiAjaW5jbHVkZSA8
Z3N0L2Jhc2UvZ3N0YWRhcHRlci5oPgogCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNF
KExJQldFQlJUQykKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogI2luY2x1ZGUgIkdTdHJlYW1l
ckF1ZGlvRGF0YS5oIgogI2luY2x1ZGUgIkdTdHJlYW1lck1lZGlhU3RyZWFtU291cmNlLmgiCiAj
ZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBGb3Igbm93IHRoZSBwcm92aWRlciBz
dXBwb3J0cyBvbmx5IHN0ZXJlbyBmaWxlcyBhdCBhIGZpeGVkIHNhbXBsZQotLy8gYml0cmF0ZS4K
LXN0YXRpYyBjb25zdCBpbnQgZ051bWJlck9mQ2hhbm5lbHMgPSAyOworLy8gRm9yIG5vdyB0aGUg
cHJvdmlkZXIgc3VwcG9ydHMgb25seSBmaWxlcyBhdCBhIGZpeGVkIHNhbXBsZSBiaXRyYXRlLgog
c3RhdGljIGNvbnN0IGZsb2F0IGdTYW1wbGVCaXRSYXRlID0gNDQxMDA7CiAKLXN0YXRpYyBHc3RG
bG93UmV0dXJuIG9uQXBwc2lua05ld0J1ZmZlckNhbGxiYWNrKEdzdEFwcFNpbmsqIHNpbmssIGdw
b2ludGVyIHVzZXJEYXRhKQorR1NUX0RFQlVHX0NBVEVHT1JZKHdlYmtpdF9hdWRpb19wcm92aWRl
cl9kZWJ1Zyk7CisjZGVmaW5lIEdTVF9DQVRfREVGQVVMVCB3ZWJraXRfYXVkaW9fcHJvdmlkZXJf
ZGVidWcKKworc3RhdGljIHZvaWQgaW5pdGlhbGl6ZURlYnVnQ2F0ZWdvcnkoKQogewotICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyKj4odXNlckRhdGEp
LT5oYW5kbGVBdWRpb0J1ZmZlcihzaW5rKTsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25j
ZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyAgICAgICAgR1NUX0RF
QlVHX0NBVEVHT1JZX0lOSVQod2Via2l0X2F1ZGlvX3Byb3ZpZGVyX2RlYnVnLCAid2Via2l0YXVk
aW9wcm92aWRlciIsIDAsICJXZWJLaXQgV2ViQXVkaW8gUHJvdmlkZXIiKTsKKyAgICB9KTsKIH0K
IAogc3RhdGljIHZvaWQgb25HU3RyZWFtZXJEZWludGVybGVhdmVQYWRBZGRlZENhbGxiYWNrKEdz
dEVsZW1lbnQqLCBHc3RQYWQqIHBhZCwgQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lciogcHJv
dmlkZXIpCkBAIC01OSwyNyArNjMsMTYgQEAgc3RhdGljIHZvaWQgb25HU3RyZWFtZXJEZWludGVy
bGVhdmVQYWRSZW1vdmVkQ2FsbGJhY2soR3N0RWxlbWVudCosIEdzdFBhZCogcGFkLAogICAgIHBy
b3ZpZGVyLT5oYW5kbGVSZW1vdmVkRGVpbnRlcmxlYXZlUGFkKHBhZCk7CiB9CiAKLXN0YXRpYyBH
c3RQYWRQcm9iZVJldHVybiBvbkFwcHNpbmtGbHVzaENhbGxiYWNrKEdzdFBhZCosIEdzdFBhZFBy
b2JlSW5mbyogaW5mbywgZ3BvaW50ZXIgdXNlckRhdGEpCi17Ci0gICAgaWYgKEdTVF9QQURfUFJP
QkVfSU5GT19UWVBFKGluZm8pICYgKEdTVF9QQURfUFJPQkVfVFlQRV9FVkVOVF9ET1dOU1RSRUFN
IHwgR1NUX1BBRF9QUk9CRV9UWVBFX0VWRU5UX0ZMVVNIKSkgewotICAgICAgICBHc3RFdmVudCog
ZXZlbnQgPSBHU1RfUEFEX1BST0JFX0lORk9fRVZFTlQoaW5mbyk7Ci0gICAgICAgIGlmIChHU1Rf
RVZFTlRfVFlQRShldmVudCkgPT0gR1NUX0VWRU5UX0ZMVVNIX1NUT1ApIHsKLSAgICAgICAgICAg
IEF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIqIHByb3ZpZGVyID0gcmVpbnRlcnByZXRfY2Fz
dDxBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyKj4odXNlckRhdGEpOwotICAgICAgICAgICAg
cHJvdmlkZXItPmNsZWFyQWRhcHRlcnMoKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4g
R1NUX1BBRF9QUk9CRV9PSzsKLX0KLQogc3RhdGljIHZvaWQgY29weUdTdHJlYW1lckJ1ZmZlcnNU
b0F1ZGlvQ2hhbm5lbChHc3RBZGFwdGVyKiBhZGFwdGVyLCBBdWRpb0J1cyogYnVzICwgaW50IGNo
YW5uZWxOdW1iZXIsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiB7Ci0gICAgaWYgKCFnc3RfYWRh
cHRlcl9hdmFpbGFibGUoYWRhcHRlcikpIHsKKyAgICBhdXRvIGF2YWlsYWJsZSA9IGdzdF9hZGFw
dGVyX2F2YWlsYWJsZShhZGFwdGVyKTsKKyAgICBpZiAoIWF2YWlsYWJsZSkgewogICAgICAgICBi
dXMtPnplcm8oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIHNpemVfdCBieXRlcyA9
IGZyYW1lc1RvUHJvY2VzcyAqIHNpemVvZihmbG9hdCk7Ci0gICAgaWYgKGdzdF9hZGFwdGVyX2F2
YWlsYWJsZShhZGFwdGVyKSA+PSBieXRlcykgeworICAgIGlmIChhdmFpbGFibGUgPj0gYnl0ZXMp
IHsKICAgICAgICAgZ3N0X2FkYXB0ZXJfY29weShhZGFwdGVyLCBidXMtPmNoYW5uZWwoY2hhbm5l
bE51bWJlciktPm11dGFibGVEYXRhKCksIDAsIGJ5dGVzKTsKICAgICAgICAgZ3N0X2FkYXB0ZXJf
Zmx1c2goYWRhcHRlciwgYnl0ZXMpOwogICAgIH0gZWxzZQpAQCAtODgsMzUgKzgxLDIzIEBAIHN0
YXRpYyB2b2lkIGNvcHlHU3RyZWFtZXJCdWZmZXJzVG9BdWRpb0NoYW5uZWwoR3N0QWRhcHRlciog
YWRhcHRlciwgQXVkaW9CdXMqIGJ1CiAKIEF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXI6OkF1
ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIoKQogICAgIDogbV9ub3RpZmllcihNYWluVGhyZWFk
Tm90aWZpZXI8TWFpblRocmVhZE5vdGlmaWNhdGlvbj46OmNyZWF0ZSgpKQotICAgICwgbV9jbGll
bnQobnVsbHB0cikKLSAgICAsIG1fZGVpbnRlcmxlYXZlU291cmNlUGFkcygwKQotICAgICwgbV9k
ZWludGVybGVhdmVQYWRBZGRlZEhhbmRsZXJJZCgwKQotICAgICwgbV9kZWludGVybGVhdmVOb01v
cmVQYWRzSGFuZGxlcklkKDApCi0gICAgLCBtX2RlaW50ZXJsZWF2ZVBhZFJlbW92ZWRIYW5kbGVy
SWQoMCkKIHsKLSAgICBtX2Zyb250TGVmdEFkYXB0ZXIgPSBnc3RfYWRhcHRlcl9uZXcoKTsKLSAg
ICBtX2Zyb250UmlnaHRBZGFwdGVyID0gZ3N0X2FkYXB0ZXJfbmV3KCk7CisgICAgaW5pdGlhbGl6
ZURlYnVnQ2F0ZWdvcnkoKTsKIH0KIAotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShM
SUJXRUJSVEMpCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIEF1ZGlvU291cmNlUHJvdmlkZXJH
U3RyZWFtZXI6OkF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIoTWVkaWFTdHJlYW1UcmFja1By
aXZhdGUmIHNvdXJjZSkKICAgICA6IG1fbm90aWZpZXIoTWFpblRocmVhZE5vdGlmaWVyPE1haW5U
aHJlYWROb3RpZmljYXRpb24+OjpjcmVhdGUoKSkKLSAgICAsIG1fY2xpZW50KG51bGxwdHIpCi0g
ICAgLCBtX2RlaW50ZXJsZWF2ZVNvdXJjZVBhZHMoMCkKLSAgICAsIG1fZGVpbnRlcmxlYXZlUGFk
QWRkZWRIYW5kbGVySWQoMCkKLSAgICAsIG1fZGVpbnRlcmxlYXZlTm9Nb3JlUGFkc0hhbmRsZXJJ
ZCgwKQotICAgICwgbV9kZWludGVybGVhdmVQYWRSZW1vdmVkSGFuZGxlcklkKDApCiB7Ci0gICAg
bV9mcm9udExlZnRBZGFwdGVyID0gZ3N0X2FkYXB0ZXJfbmV3KCk7Ci0gICAgbV9mcm9udFJpZ2h0
QWRhcHRlciA9IGdzdF9hZGFwdGVyX25ldygpOworICAgIGluaXRpYWxpemVEZWJ1Z0NhdGVnb3J5
KCk7CiAgICAgYXV0byBwaXBlbGluZU5hbWUgPSBtYWtlU3RyaW5nKCJXZWJBdWRpb1Byb3ZpZGVy
X01lZGlhU3RyZWFtVHJhY2tfIiwgc291cmNlLmlkKCkpOwotICAgIG1fcGlwZWxpbmUgPSBhZG9w
dEdSZWYoR1NUX0VMRU1FTlQoZ19vYmplY3RfcmVmX3NpbmsoZ3N0X2VsZW1lbnRfZmFjdG9yeV9t
YWtlKCJwaXBlbGluZSIsIHBpcGVsaW5lTmFtZS51dGY4KCkuZGF0YSgpKSkpKTsKKyAgICBtX3Bp
cGVsaW5lID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJwaXBlbGluZSIsIHBpcGVsaW5lTmFt
ZS51dGY4KCkuZGF0YSgpKTsKICAgICBhdXRvIHNyYyA9IHdlYmtpdE1lZGlhU3RyZWFtU3JjTmV3
KCk7CiAgICAgd2Via2l0TWVkaWFTdHJlYW1TcmNBZGRUcmFjayhXRUJLSVRfTUVESUFfU1RSRUFN
X1NSQyhzcmMpLCAmc291cmNlLCB0cnVlKTsKIAotICAgIG1fYXVkaW9TaW5rQmluID0gYWRvcHRH
UmVmKEdTVF9FTEVNRU5UKGdfb2JqZWN0X3JlZl9zaW5rKGdzdF9wYXJzZV9iaW5fZnJvbV9kZXNj
cmlwdGlvbigidGVlIG5hbWU9YXVkaW9UZWUiLCB0cnVlLCBudWxscHRyKSkpKTsKKyAgICBtX2F1
ZGlvU2lua0JpbiA9IGdzdF9wYXJzZV9iaW5fZnJvbV9kZXNjcmlwdGlvbigidGVlIG5hbWU9YXVk
aW9UZWUiLCB0cnVlLCBudWxscHRyKTsKIAotICAgIGdzdF9iaW5fYWRkX21hbnkoR1NUX0JJTiht
X3BpcGVsaW5lLmdldCgpKSwgc3JjLCBtX2F1ZGlvU2lua0Jpbi5nZXQoKSwgbnVsbHB0cik7Cisg
ICAgZ3N0X2Jpbl9hZGRfbWFueShHU1RfQklOX0NBU1QobV9waXBlbGluZS5nZXQoKSksIHNyYywg
bV9hdWRpb1NpbmtCaW4uZ2V0KCksIG51bGxwdHIpOwogICAgIGdzdF9lbGVtZW50X2xpbmsoc3Jj
LCBtX2F1ZGlvU2lua0Jpbi5nZXQoKSk7CiAKICAgICBjb25uZWN0U2ltcGxlQnVzTWVzc2FnZUNh
bGxiYWNrKG1fcGlwZWxpbmUuZ2V0KCkpOwpAQCAtMTM0LDExICsxMTUsMTAgQEAgQXVkaW9Tb3Vy
Y2VQcm92aWRlckdTdHJlYW1lcjo6fkF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIoKQogICAg
ICAgICBnX3NpZ25hbF9oYW5kbGVyX2Rpc2Nvbm5lY3QoZGVpbnRlcmxlYXZlLmdldCgpLCBtX2Rl
aW50ZXJsZWF2ZVBhZFJlbW92ZWRIYW5kbGVySWQpOwogICAgIH0KIAorI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCiAgICAgaWYgKG1fcGlwZWxpbmUpCiAgICAgICAgIGdzdF9lbGVtZW50X3NldF9z
dGF0ZShtX3BpcGVsaW5lLmdldCgpLCBHU1RfU1RBVEVfTlVMTCk7Ci0KLSAgICBnX29iamVjdF91
bnJlZihtX2Zyb250TGVmdEFkYXB0ZXIpOwotICAgIGdfb2JqZWN0X3VucmVmKG1fZnJvbnRSaWdo
dEFkYXB0ZXIpOworI2VuZGlmCiB9CiAKIHZvaWQgQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1l
cjo6Y29uZmlndXJlQXVkaW9CaW4oR3N0RWxlbWVudCogYXVkaW9CaW4sIEdzdEVsZW1lbnQqIGF1
ZGlvU2luaykKQEAgLTE3NCw0OCArMTU0LDM2IEBAIHZvaWQgQXVkaW9Tb3VyY2VQcm92aWRlckdT
dHJlYW1lcjo6Y29uZmlndXJlQXVkaW9CaW4oR3N0RWxlbWVudCogYXVkaW9CaW4sIEdzdEVsCiB2
b2lkIEF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXI6OnByb3ZpZGVJbnB1dChBdWRpb0J1cyog
YnVzLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQogewogICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2sobV9hZGFwdGVyTXV0ZXgpOwotICAgIGNvcHlHU3RyZWFtZXJCdWZmZXJzVG9BdWRpb0NoYW5u
ZWwobV9mcm9udExlZnRBZGFwdGVyLCBidXMsIDAsIGZyYW1lc1RvUHJvY2Vzcyk7Ci0gICAgY29w
eUdTdHJlYW1lckJ1ZmZlcnNUb0F1ZGlvQ2hhbm5lbChtX2Zyb250UmlnaHRBZGFwdGVyLCBidXMs
IDEsIGZyYW1lc1RvUHJvY2Vzcyk7CisgICAgZm9yIChhdXRvJiBpdCA6IG1fYWRhcHRlcnMpCisg
ICAgICAgIGNvcHlHU3RyZWFtZXJCdWZmZXJzVG9BdWRpb0NoYW5uZWwoaXQudmFsdWUuZ2V0KCks
IGJ1cywgaXQua2V5IC0gMSwgZnJhbWVzVG9Qcm9jZXNzKTsKIH0KIAotR3N0Rmxvd1JldHVybiBB
dWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyOjpoYW5kbGVBdWRpb0J1ZmZlcihHc3RBcHBTaW5r
KiBzaW5rKQorR3N0Rmxvd1JldHVybiBBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyOjpoYW5k
bGVTYW1wbGUoR3N0QXBwU2luayogc2luaywgYm9vbCBpc1ByZXJvbGwpCiB7Ci0gICAgaWYgKCFt
X2NsaWVudCkKLSAgICAgICAgcmV0dXJuIEdTVF9GTE9XX09LOwotCi0gICAgLy8gUHVsbCBhIGJ1
ZmZlciBmcm9tIGFwcHNpbmsgYW5kIHN0b3JlIGl0IHRoZSBhcHByb3ByaWF0ZSBidWZmZXIKLSAg
ICAvLyBsaXN0IGZvciB0aGUgYXVkaW8gY2hhbm5lbCBpdCByZXByZXNlbnRzLgotICAgIEdSZWZQ
dHI8R3N0U2FtcGxlPiBzYW1wbGUgPSBhZG9wdEdSZWYoZ3N0X2FwcF9zaW5rX3B1bGxfc2FtcGxl
KHNpbmspKTsKKyAgICBhdXRvIHNhbXBsZSA9IGFkb3B0R1JlZihpc1ByZXJvbGwgPyBnc3RfYXBw
X3NpbmtfdHJ5X3B1bGxfcHJlcm9sbChzaW5rLCAwKSA6IGdzdF9hcHBfc2lua190cnlfcHVsbF9z
YW1wbGUoc2luaywgMCkpOwogICAgIGlmICghc2FtcGxlKQogICAgICAgICByZXR1cm4gZ3N0X2Fw
cF9zaW5rX2lzX2VvcyhzaW5rKSA/IEdTVF9GTE9XX0VPUyA6IEdTVF9GTE9XX0VSUk9SOwogCisg
ICAgaWYgKCFtX2NsaWVudCkKKyAgICAgICAgcmV0dXJuIEdTVF9GTE9XX09LOworCiAgICAgR3N0
QnVmZmVyKiBidWZmZXIgPSBnc3Rfc2FtcGxlX2dldF9idWZmZXIoc2FtcGxlLmdldCgpKTsKICAg
ICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIEdTVF9GTE9XX0VSUk9SOwogCi0gICAgR3N0
Q2FwcyogY2FwcyA9IGdzdF9zYW1wbGVfZ2V0X2NhcHMoc2FtcGxlLmdldCgpKTsKLSAgICBpZiAo
IWNhcHMpCi0gICAgICAgIHJldHVybiBHU1RfRkxPV19FUlJPUjsKLQotICAgIEdzdEF1ZGlvSW5m
byBpbmZvOwotICAgIGdzdF9hdWRpb19pbmZvX2Zyb21fY2FwcygmaW5mbywgY2Fwcyk7Ci0KLSAg
ICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fYWRhcHRlck11dGV4KTsKLQotICAgIC8vIENoZWNr
IHRoZSBmaXJzdCBhdWRpbyBjaGFubmVsLiBUaGUgYnVmZmVyIGlzIHN1cHBvc2VkIHRvIHN0b3Jl
Ci0gICAgLy8gZGF0YSBvZiBhIHNpbmdsZSBjaGFubmVsIGFueXdheS4KLSAgICBzd2l0Y2ggKEdT
VF9BVURJT19JTkZPX1BPU0lUSU9OKCZpbmZvLCAwKSkgewotICAgIGNhc2UgR1NUX0FVRElPX0NI
QU5ORUxfUE9TSVRJT05fRlJPTlRfTEVGVDoKLSAgICBjYXNlIEdTVF9BVURJT19DSEFOTkVMX1BP
U0lUSU9OX01PTk86Ci0gICAgICAgIGdzdF9hZGFwdGVyX3B1c2gobV9mcm9udExlZnRBZGFwdGVy
LCBnc3RfYnVmZmVyX3JlZihidWZmZXIpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBHU1Rf
QVVESU9fQ0hBTk5FTF9QT1NJVElPTl9GUk9OVF9SSUdIVDoKLSAgICAgICAgZ3N0X2FkYXB0ZXJf
cHVzaChtX2Zyb250UmlnaHRBZGFwdGVyLCBnc3RfYnVmZmVyX3JlZihidWZmZXIpKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgYnJlYWs7CisgICAgeworICAgICAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fYWRhcHRlck11dGV4KTsKKyAgICAgICAgR1F1YXJrIHF1
YXJrID0gZ19xdWFya19mcm9tX3N0YXRpY19zdHJpbmcoImNoYW5uZWwtaWQiKTsKKyAgICAgICAg
aW50IGNoYW5uZWxJZCA9IEdQT0lOVEVSX1RPX0lOVChnX29iamVjdF9nZXRfcWRhdGEoR19PQkpF
Q1Qoc2luayksIHF1YXJrKSk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gbV9hZGFwdGVycy5lbnN1
cmUoY2hhbm5lbElkLCBbJl0geworICAgICAgICAgICAgcmV0dXJuIGdzdF9hZGFwdGVyX25ldygp
OworICAgICAgICB9KTsKKyAgICAgICAgYXV0byogYWRhcHRlciA9IHJlc3VsdC5pdGVyYXRvci0+
dmFsdWUuZ2V0KCk7CisgICAgICAgIGdzdF9hZGFwdGVyX3B1c2goYWRhcHRlciwgZ3N0X2J1ZmZl
cl9yZWYoYnVmZmVyKSk7CiAgICAgfQogCisgICAgaWYgKGdzdF9hcHBfc2lua19pc19lb3Moc2lu
aykpCisgICAgICAgIHJldHVybiBHU1RfRkxPV19FT1M7CiAgICAgcmV0dXJuIEdTVF9GTE9XX09L
OwogfQogCkBAIC0yMjcsOCArMTk1LDEwIEBAIHZvaWQgQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJl
YW1lcjo6c2V0Q2xpZW50KEF1ZGlvU291cmNlUHJvdmlkZXJDbGllbnQqIGNsaWVudCkKICAgICBB
U1NFUlQoY2xpZW50KTsKICAgICBtX2NsaWVudCA9IGNsaWVudDsKIAorI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCiAgICAgaWYgKG1fcGlwZWxpbmUpCiAgICAgICAgIGdzdF9lbGVtZW50X3NldF9z
dGF0ZShtX3BpcGVsaW5lLmdldCgpLCBHU1RfU1RBVEVfUExBWUlORyk7CisjZW5kaWYKIAogICAg
IC8vIFRoZSB2b2x1bWUgZWxlbWVudCBpcyB1c2VkIHRvIG11dGUgYXVkaW8gcGxheWJhY2sgdG93
YXJkcyB0aGUKICAgICAvLyBhdXRvYXVkaW9zaW5rLiBUaGlzIGlzIG5lZWRlZCB0byBhdm9pZCBk
b3VibGUgcGxheWJhY2sgb2YgYXVkaW8KQEAgLTI1MywxNyArMjIzLDEzIEBAIHZvaWQgQXVkaW9T
b3VyY2VQcm92aWRlckdTdHJlYW1lcjo6c2V0Q2xpZW50KEF1ZGlvU291cmNlUHJvdmlkZXJDbGll
bnQqIGNsaWVudCkKICAgICBtX2RlaW50ZXJsZWF2ZU5vTW9yZVBhZHNIYW5kbGVySWQgPSBnX3Np
Z25hbF9jb25uZWN0KGRlSW50ZXJsZWF2ZSwgIm5vLW1vcmUtcGFkcyIsIEdfQ0FMTEJBQ0sob25H
U3RyZWFtZXJEZWludGVybGVhdmVSZWFkeUNhbGxiYWNrKSwgdGhpcyk7CiAgICAgbV9kZWludGVy
bGVhdmVQYWRSZW1vdmVkSGFuZGxlcklkID0gZ19zaWduYWxfY29ubmVjdChkZUludGVybGVhdmUs
ICJwYWQtcmVtb3ZlZCIsIEdfQ0FMTEJBQ0sob25HU3RyZWFtZXJEZWludGVybGVhdmVQYWRSZW1v
dmVkQ2FsbGJhY2spLCB0aGlzKTsKIAotICAgIEdzdENhcHMqIGNhcHMgPSBnc3RfY2Fwc19uZXdf
c2ltcGxlKCJhdWRpby94LXJhdyIsICJyYXRlIiwgR19UWVBFX0lOVCwgc3RhdGljX2Nhc3Q8aW50
PihnU2FtcGxlQml0UmF0ZSksCi0gICAgICAgICJjaGFubmVscyIsIEdfVFlQRV9JTlQsIGdOdW1i
ZXJPZkNoYW5uZWxzLAotICAgICAgICAiZm9ybWF0IiwgR19UWVBFX1NUUklORywgR1NUX0FVRElP
X05FKEYzMiksCi0gICAgICAgICJsYXlvdXQiLCBHX1RZUEVfU1RSSU5HLCAiaW50ZXJsZWF2ZWQi
LCBudWxscHRyKTsKLQotICAgIGdfb2JqZWN0X3NldChjYXBzRmlsdGVyLCAiY2FwcyIsIGNhcHMs
IG51bGxwdHIpOwotICAgIGdzdF9jYXBzX3VucmVmKGNhcHMpOworICAgIGF1dG8gY2FwcyA9IGFk
b3B0R1JlZihnc3RfY2Fwc19uZXdfc2ltcGxlKCJhdWRpby94LXJhdyIsICJyYXRlIiwgR19UWVBF
X0lOVCwgc3RhdGljX2Nhc3Q8aW50PihnU2FtcGxlQml0UmF0ZSksCisgICAgICAgICJmb3JtYXQi
LCBHX1RZUEVfU1RSSU5HLCBHU1RfQVVESU9fTkUoRjMyKSwgImxheW91dCIsIEdfVFlQRV9TVFJJ
TkcsICJpbnRlcmxlYXZlZCIsIG51bGxwdHIpKTsKKyAgICBnX29iamVjdF9zZXQoY2Fwc0ZpbHRl
ciwgImNhcHMiLCBjYXBzLmdldCgpLCBudWxscHRyKTsKIAotICAgIGdzdF9iaW5fYWRkX21hbnko
R1NUX0JJTihtX2F1ZGlvU2lua0Jpbi5nZXQoKSksIGF1ZGlvUXVldWUsIGF1ZGlvQ29udmVydCwg
YXVkaW9SZXNhbXBsZSwgY2Fwc0ZpbHRlciwgZGVJbnRlcmxlYXZlLCBudWxscHRyKTsKKyAgICBn
c3RfYmluX2FkZF9tYW55KEdTVF9CSU5fQ0FTVChtX2F1ZGlvU2lua0Jpbi5nZXQoKSksIGF1ZGlv
UXVldWUsIGF1ZGlvQ29udmVydCwgYXVkaW9SZXNhbXBsZSwgY2Fwc0ZpbHRlciwgZGVJbnRlcmxl
YXZlLCBudWxscHRyKTsKIAotICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gYXVkaW9UZWUgPSBhZG9w
dEdSZWYoZ3N0X2Jpbl9nZXRfYnlfbmFtZShHU1RfQklOKG1fYXVkaW9TaW5rQmluLmdldCgpKSwg
ImF1ZGlvVGVlIikpOworICAgIGF1dG8gYXVkaW9UZWUgPSBhZG9wdEdSZWYoZ3N0X2Jpbl9nZXRf
YnlfbmFtZShHU1RfQklOKG1fYXVkaW9TaW5rQmluLmdldCgpKSwgImF1ZGlvVGVlIikpOwogCiAg
ICAgLy8gTGluayBhIG5ldyBzcmMgcGFkIGZyb20gdGVlIHRvIHF1ZXVlICEgYXVkaW9jb252ZXJ0
ICEKICAgICAvLyBhdWRpb3Jlc2FtcGxlICEgY2Fwc2ZpbHRlciAhIGRlaW50ZXJsZWF2ZS4gTGF0
ZXIKQEAgLTI4NCw5MSArMjUwLDc4IEBAIHZvaWQgQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1l
cjo6c2V0Q2xpZW50KEF1ZGlvU291cmNlUHJvdmlkZXJDbGllbnQqIGNsaWVudCkKIAogdm9pZCBB
dWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyOjpoYW5kbGVOZXdEZWludGVybGVhdmVQYWQoR3N0
UGFkKiBwYWQpCiB7Ci0gICAgbV9kZWludGVybGVhdmVTb3VyY2VQYWRzKys7Ci0KLSAgICBpZiAo
bV9kZWludGVybGVhdmVTb3VyY2VQYWRzID4gMikgewotICAgICAgICBnX3dhcm5pbmcoIlRoZSBB
dWRpb1NvdXJjZVByb3ZpZGVyIHN1cHBvcnRzIG9ubHkgbW9ubyBhbmQgc3RlcmVvIGF1ZGlvLiBT
aWxlbmNpbmcgb3V0IHRoaXMgbmV3IGNoYW5uZWwuIik7Ci0gICAgICAgIEdzdEVsZW1lbnQqIHF1
ZXVlID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJxdWV1ZSIsIG51bGxwdHIpOwotICAgICAg
ICBHc3RFbGVtZW50KiBzaW5rID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJmYWtlc2luayIs
IG51bGxwdHIpOwotICAgICAgICBnX29iamVjdF9zZXQoc2luaywgImFzeW5jIiwgRkFMU0UsIG51
bGxwdHIpOwotICAgICAgICBnc3RfYmluX2FkZF9tYW55KEdTVF9CSU4obV9hdWRpb1NpbmtCaW4u
Z2V0KCkpLCBxdWV1ZSwgc2luaywgbnVsbHB0cik7Ci0KLSAgICAgICAgR1JlZlB0cjxHc3RQYWQ+
IHNpbmtQYWQgPSBhZG9wdEdSZWYoZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQocXVldWUsICJz
aW5rIikpOwotICAgICAgICBnc3RfcGFkX2xpbmtfZnVsbChwYWQsIHNpbmtQYWQuZ2V0KCksIEdT
VF9QQURfTElOS19DSEVDS19OT1RISU5HKTsKLQotICAgICAgICBHUXVhcmsgcXVhcmsgPSBnX3F1
YXJrX2Zyb21fc3RhdGljX3N0cmluZygicGVlciIpOwotICAgICAgICBnX29iamVjdF9zZXRfcWRh
dGEoR19PQkpFQ1QocGFkKSwgcXVhcmssIHNpbmtQYWQuZ2V0KCkpOwotICAgICAgICBnc3RfZWxl
bWVudF9saW5rX3BhZHNfZnVsbChxdWV1ZSwgInNyYyIsIHNpbmssICJzaW5rIiwgR1NUX1BBRF9M
SU5LX0NIRUNLX05PVEhJTkcpOwotICAgICAgICBnc3RfZWxlbWVudF9zeW5jX3N0YXRlX3dpdGhf
cGFyZW50KHF1ZXVlKTsKLSAgICAgICAgZ3N0X2VsZW1lbnRfc3luY19zdGF0ZV93aXRoX3BhcmVu
dChzaW5rKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBHU1RfREVCVUcoIk5ldyBwYWQg
JSIgR1NUX1BUUl9GT1JNQVQsIHBhZCk7CiAKICAgICAvLyBBIG5ldyBwYWQgZm9yIGEgcGxhbmFy
IGNoYW5uZWwgd2FzIGFkZGVkIGluIGRlaW50ZXJsZWF2ZS4gUGx1ZwogICAgIC8vIGluIGFuIGFw
cHNpbmsgc28gd2UgY2FuIHB1bGwgdGhlIGRhdGEgZnJvbSBlYWNoCiAgICAgLy8gY2hhbm5lbC4g
UGlwZWxpbmUgbG9va3MgbGlrZToKLSAgICAvLyAuLi4gZGVpbnRlcmxlYXZlICEgcXVldWUgISBh
cHBzaW5rLgotICAgIEdzdEVsZW1lbnQqIHF1ZXVlID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtl
KCJxdWV1ZSIsIG51bGxwdHIpOworICAgIC8vIC4uLiBkZWludGVybGVhdmUgISBhcHBzaW5rLgog
ICAgIEdzdEVsZW1lbnQqIHNpbmsgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoImFwcHNpbmsi
LCBudWxscHRyKTsKIAotICAgIEdzdEFwcFNpbmtDYWxsYmFja3MgY2FsbGJhY2tzOwotICAgIGNh
bGxiYWNrcy5lb3MgPSBudWxscHRyOwotICAgIGNhbGxiYWNrcy5uZXdfcHJlcm9sbCA9IG51bGxw
dHI7Ci0gICAgY2FsbGJhY2tzLm5ld19zYW1wbGUgPSBvbkFwcHNpbmtOZXdCdWZmZXJDYWxsYmFj
azsKKyAgICBzdGF0aWMgR3N0QXBwU2lua0NhbGxiYWNrcyBjYWxsYmFja3MgPSB7CisgICAgICAg
IG51bGxwdHIsCisgICAgICAgIFtdKEdzdEFwcFNpbmsqIHNpbmssIGdwb2ludGVyIHVzZXJEYXRh
KSAtPiBHc3RGbG93UmV0dXJuIHsKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxBdWRp
b1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyKj4odXNlckRhdGEpLT5oYW5kbGVTYW1wbGUoc2luaywg
dHJ1ZSk7CisgICAgICAgIH0sCisgICAgICAgIFtdKEdzdEFwcFNpbmsqIHNpbmssIGdwb2ludGVy
IHVzZXJEYXRhKSAtPiBHc3RGbG93UmV0dXJuIHsKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyKj4odXNlckRhdGEpLT5oYW5kbGVTYW1w
bGUoc2luaywgZmFsc2UpOworICAgICAgICB9LAorICAgICAgICB7IG51bGxwdHIgfQorICAgIH07
CiAgICAgZ3N0X2FwcF9zaW5rX3NldF9jYWxsYmFja3MoR1NUX0FQUF9TSU5LKHNpbmspLCAmY2Fs
bGJhY2tzLCB0aGlzLCBudWxscHRyKTsKLQogICAgIGdfb2JqZWN0X3NldChzaW5rLCAiYXN5bmMi
LCBGQUxTRSwgbnVsbHB0cik7CiAKLSAgICBHUmVmUHRyPEdzdENhcHM+IGNhcHMgPSBhZG9wdEdS
ZWYoZ3N0X2NhcHNfbmV3X3NpbXBsZSgiYXVkaW8veC1yYXciLCAicmF0ZSIsIEdfVFlQRV9JTlQs
IHN0YXRpY19jYXN0PGludD4oZ1NhbXBsZUJpdFJhdGUpLAotICAgICAgICAiY2hhbm5lbHMiLCBH
X1RZUEVfSU5ULCAxLAotICAgICAgICAiZm9ybWF0IiwgR19UWVBFX1NUUklORywgR1NUX0FVRElP
X05FKEYzMiksCi0gICAgICAgICJsYXlvdXQiLCBHX1RZUEVfU1RSSU5HLCAiaW50ZXJsZWF2ZWQi
LCBudWxscHRyKSk7Ci0KKyAgICBhdXRvIGNhcHMgPSBhZG9wdEdSZWYoZ3N0X2NhcHNfbmV3X3Np
bXBsZSgiYXVkaW8veC1yYXciLCAicmF0ZSIsIEdfVFlQRV9JTlQsIHN0YXRpY19jYXN0PGludD4o
Z1NhbXBsZUJpdFJhdGUpLAorICAgICAgICAiY2hhbm5lbHMiLCBHX1RZUEVfSU5ULCAxLCAiZm9y
bWF0IiwgR19UWVBFX1NUUklORywgR1NUX0FVRElPX05FKEYzMiksICJsYXlvdXQiLCBHX1RZUEVf
U1RSSU5HLCAiaW50ZXJsZWF2ZWQiLCBudWxscHRyKSk7CiAgICAgZ3N0X2FwcF9zaW5rX3NldF9j
YXBzKEdTVF9BUFBfU0lOSyhzaW5rKSwgY2Fwcy5nZXQoKSk7CiAKLSAgICBnc3RfYmluX2FkZF9t
YW55KEdTVF9CSU4obV9hdWRpb1NpbmtCaW4uZ2V0KCkpLCBxdWV1ZSwgc2luaywgbnVsbHB0cik7
CisgICAgZ3N0X2Jpbl9hZGQoR1NUX0JJTl9DQVNUKG1fYXVkaW9TaW5rQmluLmdldCgpKSwgc2lu
ayk7CiAKLSAgICBHUmVmUHRyPEdzdFBhZD4gc2lua1BhZCA9IGFkb3B0R1JlZihnc3RfZWxlbWVu
dF9nZXRfc3RhdGljX3BhZChxdWV1ZSwgInNpbmsiKSk7CisgICAgYXV0byBzaW5rUGFkID0gYWRv
cHRHUmVmKGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkKHNpbmssICJzaW5rIikpOwogICAgIGdz
dF9wYWRfbGlua19mdWxsKHBhZCwgc2lua1BhZC5nZXQoKSwgR1NUX1BBRF9MSU5LX0NIRUNLX05P
VEhJTkcpOwogCiAgICAgR1F1YXJrIHF1YXJrID0gZ19xdWFya19mcm9tX3N0YXRpY19zdHJpbmco
InBlZXIiKTsKICAgICBnX29iamVjdF9zZXRfcWRhdGEoR19PQkpFQ1QocGFkKSwgcXVhcmssIHNp
bmtQYWQuZ2V0KCkpOwogCi0gICAgZ3N0X2VsZW1lbnRfbGlua19wYWRzX2Z1bGwocXVldWUsICJz
cmMiLCBzaW5rLCAic2luayIsIEdTVF9QQURfTElOS19DSEVDS19OT1RISU5HKTsKKyAgICBtX2Rl
aW50ZXJsZWF2ZVNvdXJjZVBhZHMrKzsKKyAgICBHUXVhcmsgY2hhbm5lbElkUXVhcmsgPSBnX3F1
YXJrX2Zyb21fc3RhdGljX3N0cmluZygiY2hhbm5lbC1pZCIpOworICAgIGdfb2JqZWN0X3NldF9x
ZGF0YShHX09CSkVDVChzaW5rKSwgY2hhbm5lbElkUXVhcmssIEdJTlRfVE9fUE9JTlRFUihtX2Rl
aW50ZXJsZWF2ZVNvdXJjZVBhZHMpKTsKIAogICAgIHNpbmtQYWQgPSBhZG9wdEdSZWYoZ3N0X2Vs
ZW1lbnRfZ2V0X3N0YXRpY19wYWQoc2luaywgInNpbmsiKSk7Ci0gICAgZ3N0X3BhZF9hZGRfcHJv
YmUoc2lua1BhZC5nZXQoKSwgR1NUX1BBRF9QUk9CRV9UWVBFX0VWRU5UX0ZMVVNILCBvbkFwcHNp
bmtGbHVzaENhbGxiYWNrLCB0aGlzLCBudWxscHRyKTsKKyAgICBnc3RfcGFkX2FkZF9wcm9iZShz
aW5rUGFkLmdldCgpLCBHU1RfUEFEX1BST0JFX1RZUEVfRVZFTlRfRkxVU0gsIFtdKEdzdFBhZCos
IEdzdFBhZFByb2JlSW5mbyogaW5mbywgZ3BvaW50ZXIgdXNlckRhdGEpIHsKKyAgICAgICAgaWYg
KEdTVF9QQURfUFJPQkVfSU5GT19UWVBFKGluZm8pICYgKEdTVF9QQURfUFJPQkVfVFlQRV9FVkVO
VF9ET1dOU1RSRUFNIHwgR1NUX1BBRF9QUk9CRV9UWVBFX0VWRU5UX0ZMVVNIKSkgeworICAgICAg
ICAgICAgR3N0RXZlbnQqIGV2ZW50ID0gR1NUX1BBRF9QUk9CRV9JTkZPX0VWRU5UKGluZm8pOwor
ICAgICAgICAgICAgaWYgKEdTVF9FVkVOVF9UWVBFKGV2ZW50KSA9PSBHU1RfRVZFTlRfRkxVU0hf
U1RPUCkgeworICAgICAgICAgICAgICAgIGF1dG8qIHByb3ZpZGVyID0gcmVpbnRlcnByZXRfY2Fz
dDxBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyKj4odXNlckRhdGEpOworICAgICAgICAgICAg
ICAgIHByb3ZpZGVyLT5jbGVhckFkYXB0ZXJzKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIEdTVF9QQURfUFJPQkVfT0s7CisgICAgfSwgdGhpcywgbnVsbHB0cik7
CiAKLSAgICBnc3RfZWxlbWVudF9zeW5jX3N0YXRlX3dpdGhfcGFyZW50KHF1ZXVlKTsKICAgICBn
c3RfZWxlbWVudF9zeW5jX3N0YXRlX3dpdGhfcGFyZW50KHNpbmspOwogfQogCiB2b2lkIEF1ZGlv
U291cmNlUHJvdmlkZXJHU3RyZWFtZXI6OmhhbmRsZVJlbW92ZWREZWludGVybGVhdmVQYWQoR3N0
UGFkKiBwYWQpCiB7CisgICAgR1NUX0RFQlVHKCJQYWQgJSIgR1NUX1BUUl9GT1JNQVQgIiBnb25l
IiwgcGFkKTsKICAgICBtX2RlaW50ZXJsZWF2ZVNvdXJjZVBhZHMtLTsKIAotICAgIC8vIFJlbW92
ZSB0aGUgcXVldWUgISBhcHBzaW5rIGNoYWluIGRvd25zdHJlYW0gb2YgZGVpbnRlcmxlYXZlLgog
ICAgIEdRdWFyayBxdWFyayA9IGdfcXVhcmtfZnJvbV9zdGF0aWNfc3RyaW5nKCJwZWVyIik7CiAg
ICAgR3N0UGFkKiBzaW5rUGFkID0gR1NUX1BBRF9DQVNUKGdfb2JqZWN0X2dldF9xZGF0YShHX09C
SkVDVChwYWQpLCBxdWFyaykpOwogICAgIGlmICghc2lua1BhZCkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgR1JlZlB0cjxHc3RFbGVtZW50PiBxdWV1ZSA9IGFkb3B0R1JlZihnc3RfcGFkX2dldF9w
YXJlbnRfZWxlbWVudChzaW5rUGFkKSk7Ci0gICAgR1JlZlB0cjxHc3RQYWQ+IHF1ZXVlU3JjUGFk
ID0gYWRvcHRHUmVmKGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkKHF1ZXVlLmdldCgpLCAic3Jj
IikpOwotICAgIEdSZWZQdHI8R3N0UGFkPiBhcHBzaW5rU2lua1BhZCA9IGFkb3B0R1JlZihnc3Rf
cGFkX2dldF9wZWVyKHF1ZXVlU3JjUGFkLmdldCgpKSk7Ci0gICAgR1JlZlB0cjxHc3RFbGVtZW50
PiBzaW5rID0gYWRvcHRHUmVmKGdzdF9wYWRfZ2V0X3BhcmVudF9lbGVtZW50KGFwcHNpbmtTaW5r
UGFkLmdldCgpKSk7CisgICAgYXV0byBzaW5rID0gYWRvcHRHUmVmKGdzdF9wYWRfZ2V0X3BhcmVu
dF9lbGVtZW50KHNpbmtQYWQpKTsKICAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUoc2luay5nZXQo
KSwgR1NUX1NUQVRFX05VTEwpOwotICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShxdWV1ZS5nZXQo
KSwgR1NUX1NUQVRFX05VTEwpOwotICAgIGdzdF9lbGVtZW50X3VubGluayhxdWV1ZS5nZXQoKSwg
c2luay5nZXQoKSk7Ci0gICAgZ3N0X2Jpbl9yZW1vdmVfbWFueShHU1RfQklOKG1fYXVkaW9TaW5r
QmluLmdldCgpKSwgcXVldWUuZ2V0KCksIHNpbmsuZ2V0KCksIG51bGxwdHIpOworICAgIGdzdF9i
aW5fcmVtb3ZlKEdTVF9CSU5fQ0FTVChtX2F1ZGlvU2lua0Jpbi5nZXQoKSksIHNpbmsuZ2V0KCkp
OwogfQogCiB2b2lkIEF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXI6OmRlaW50ZXJsZWF2ZVBh
ZHNDb25maWd1cmVkKCkKIHsKKyAgICBHU1RfREVCVUcoIkRlaW50ZXJsZWF2ZSBjb25maWd1cmVk
LCBub3RpZnlpbmcgY2xpZW50Iik7CiAgICAgbV9ub3RpZmllci0+bm90aWZ5KE1haW5UaHJlYWRO
b3RpZmljYXRpb246OkRlaW50ZXJsZWF2ZVBhZHNDb25maWd1cmVkLCBbdGhpc10gewogICAgICAg
ICBBU1NFUlQobV9jbGllbnQpOwotICAgICAgICBBU1NFUlQobV9kZWludGVybGVhdmVTb3VyY2VQ
YWRzID09IGdOdW1iZXJPZkNoYW5uZWxzKTsKLQogICAgICAgICBtX2NsaWVudC0+c2V0Rm9ybWF0
KG1fZGVpbnRlcmxlYXZlU291cmNlUGFkcywgZ1NhbXBsZUJpdFJhdGUpOwogICAgIH0pOwogfQpA
QCAtMzc2LDggKzMyOSw4IEBAIHZvaWQgQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lcjo6ZGVp
bnRlcmxlYXZlUGFkc0NvbmZpZ3VyZWQoKQogdm9pZCBBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVh
bWVyOjpjbGVhckFkYXB0ZXJzKCkKIHsKICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fYWRh
cHRlck11dGV4KTsKLSAgICBnc3RfYWRhcHRlcl9jbGVhcihtX2Zyb250TGVmdEFkYXB0ZXIpOwot
ICAgIGdzdF9hZGFwdGVyX2NsZWFyKG1fZnJvbnRSaWdodEFkYXB0ZXIpOworICAgIGZvciAoYXV0
byYgYWRhcHRlciA6IG1fYWRhcHRlcnMudmFsdWVzKCkpCisgICAgICAgIGdzdF9hZGFwdGVyX2Ns
ZWFyKGFkYXB0ZXIuZ2V0KCkpOwogfQogCiB9IC8vIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb1NvdXJjZVByb3ZpZGVyR1N0
cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9T
b3VyY2VQcm92aWRlckdTdHJlYW1lci5oCmluZGV4IGU0ZjY1MTJmMTJhMDNmMTM5YzQzN2RjMjBk
NzE3MjRiMWQ0YjIzNzAuLjQ1MTFmNGI2NTM3MDljMGIxYjljZmQ3MDc4ZjNkYTIyMTQ2YzVlMGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRp
b1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vZ3N0cmVhbWVyL0F1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIuaApAQCAtMTYsOCAr
MTYsNyBAQAogICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQogICovCiAKLSNpZm5kZWYgQXVkaW9T
b3VyY2VQcm92aWRlckdTdHJlYW1lcl9oCi0jZGVmaW5lIEF1ZGlvU291cmNlUHJvdmlkZXJHU3Ry
ZWFtZXJfaAorI3ByYWdtYSBvbmNlCiAKICNpZiBFTkFCTEUoV0VCX0FVRElPKSAmJiBFTkFCTEUo
VklERU8pICYmIFVTRShHU1RSRUFNRVIpCiAKQEAgLTI4LDcgKzI3LDcgQEAKICNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCi0jaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkgJiYgVVNFKExJQldFQlJUQykKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQogI2luY2x1ZGUgIkdTdHJlYW1lckF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaCIKICNpbmNsdWRl
ICJNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYkF1ZGlvU291cmNlUHJv
dmlkZXIuaCIKQEAgLTM5LDcgKzM4LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX0dzdEFwcFNpbmsgR3N0
QXBwU2luazsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkgJiYgVVNFKExJQldFQlJUQykKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogY2xhc3MgQXVk
aW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lciBmaW5hbCA6IHB1YmxpYyBXZWJBdWRpb1NvdXJjZVBy
b3ZpZGVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEF1ZGlvU291cmNlUHJvdmlkZXJHU3Ry
ZWFtZXI+IGNyZWF0ZShNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYgc291cmNlKQpAQCAtNjcsMjgg
KzY2LDI2IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlaW50ZXJsZWF2ZVBhZHNDb25maWd1cmVkKCk7
CiAgICAgdm9pZCBoYW5kbGVSZW1vdmVkRGVpbnRlcmxlYXZlUGFkKEdzdFBhZCopOwogCi0gICAg
R3N0Rmxvd1JldHVybiBoYW5kbGVBdWRpb0J1ZmZlcihHc3RBcHBTaW5rKik7Ci0gICAgR3N0RWxl
bWVudCogZ2V0QXVkaW9CaW4oKSBjb25zdCB7IHJldHVybiBtX2F1ZGlvU2lua0Jpbi5nZXQoKTsg
fQorICAgIEdzdEZsb3dSZXR1cm4gaGFuZGxlU2FtcGxlKEdzdEFwcFNpbmsqIHNpbmssIGJvb2wg
aXNQcmVyb2xsKTsKICAgICB2b2lkIGNsZWFyQWRhcHRlcnMoKTsKIAogcHJpdmF0ZToKKyNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQogICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gbV9waXBlbGluZTsK
KyNlbmRpZgogICAgIGVudW0gTWFpblRocmVhZE5vdGlmaWNhdGlvbiB7CiAgICAgICAgIERlaW50
ZXJsZWF2ZVBhZHNDb25maWd1cmVkID0gMSA8PCAwLAogICAgIH07CiAgICAgUmVmPE1haW5UaHJl
YWROb3RpZmllcjxNYWluVGhyZWFkTm90aWZpY2F0aW9uPj4gbV9ub3RpZmllcjsKICAgICBHUmVm
UHRyPEdzdEVsZW1lbnQ+IG1fYXVkaW9TaW5rQmluOwotICAgIEF1ZGlvU291cmNlUHJvdmlkZXJD
bGllbnQqIG1fY2xpZW50OwotICAgIGludCBtX2RlaW50ZXJsZWF2ZVNvdXJjZVBhZHM7Ci0gICAg
R3N0QWRhcHRlciogbV9mcm9udExlZnRBZGFwdGVyOwotICAgIEdzdEFkYXB0ZXIqIG1fZnJvbnRS
aWdodEFkYXB0ZXI7Ci0gICAgdW5zaWduZWQgbG9uZyBtX2RlaW50ZXJsZWF2ZVBhZEFkZGVkSGFu
ZGxlcklkOwotICAgIHVuc2lnbmVkIGxvbmcgbV9kZWludGVybGVhdmVOb01vcmVQYWRzSGFuZGxl
cklkOwotICAgIHVuc2lnbmVkIGxvbmcgbV9kZWludGVybGVhdmVQYWRSZW1vdmVkSGFuZGxlcklk
OworICAgIEF1ZGlvU291cmNlUHJvdmlkZXJDbGllbnQqIG1fY2xpZW50IHsgbnVsbHB0ciB9Owor
ICAgIGludCBtX2RlaW50ZXJsZWF2ZVNvdXJjZVBhZHMgeyAwIH07CisgICAgSGFzaE1hcDxpbnQs
IEdSZWZQdHI8R3N0QWRhcHRlcj4+IG1fYWRhcHRlcnM7CisgICAgdW5zaWduZWQgbG9uZyBtX2Rl
aW50ZXJsZWF2ZVBhZEFkZGVkSGFuZGxlcklkIHsgMCB9OworICAgIHVuc2lnbmVkIGxvbmcgbV9k
ZWludGVybGVhdmVOb01vcmVQYWRzSGFuZGxlcklkIHsgMCB9OworICAgIHVuc2lnbmVkIGxvbmcg
bV9kZWludGVybGVhdmVQYWRSZW1vdmVkSGFuZGxlcklkIHsgMCB9OwogICAgIExvY2sgbV9hZGFw
dGVyTXV0ZXg7CiB9OwogCiB9CiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykgJiYgRU5BQkxF
KFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKQotCi0jZW5kaWYgLy8gQXVkaW9Tb3VyY2VQcm92aWRl
ckdTdHJlYW1lcl9oCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggYWE3ZDE2N2Y2OTc0YzFiNGNlMDdhYzVmOGMzNTFiZmI4YzM3
NWQ1Ni4uZDUwMmE4Y2EyNDAyZDdiOWJhMGRhODcxNWFhOGU4OGVhZDk3NmZhMSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE0IEBACisyMDIwLTEwLTE5ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdh
bGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVyXSBSRUdSRVNTSU9OKHIyNjY1NTkpOiBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWRl
c3RpbmF0aW9ubm9kZS1pbnRlcmZhY2UvZGVzdGluYXRpb24uaHRtbCBpcyBmYWlsaW5nCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTYxNzEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL2ds
aWIvVGVzdEV4cGVjdGF0aW9uczogVW5mbGFnIHRlc3RzLgorICAgICAgICBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLW1lZGlhZWxlbWVu
dGF1ZGlvc291cmNlbm9kZS1pbnRlcmZhY2UvY29ycy1jaGVjay5odHRwcy5odG1sCisgICAgICAg
IGlzIHN0aWxsIGZsYWt5IGJ1dCBmbGFnZ2VkIGFscmVhZHkgYXMgc3VjaCBpbiB0aGUgZ2VuZXJp
YyBUZXN0RXhwZWN0YXRpb25zLgorCiAyMDIwLTEwLTEzICBTZXJnaW8gVmlsbGFyIFNlbmluICA8
c3ZpbGxhckBpZ2FsaWEuY29tPgogCiAgICAgICAgIFNhbml0aXplIHRoZSB1c2FnZSBvZiBvdmVy
cmlkZSBzaXplcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9UZXN0RXhw
ZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9UZXN0RXhwZWN0YXRpb25zCmlu
ZGV4IDgzNDU1Y2ZiMjU1NjUxM2M2ZWVhOTYxNjEwODVjNWEwZTgxZTYyZTMuLjRmMjZmMTE0ZTc4
NzkyODlmYmYzMzIxNTZkNDJiZWI3M2UzM2NjNDUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9n
bGliL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE1Nyw5ICsxNTcsNiBAQCB3ZWJraXQub3JnL2IvMTMz
MTIyIGNyeXB0by93b3JrZXJzL3N1YnRsZS9hZXMtY2ZiLWltcG9ydC1rZXktd3JhcC1rZXkuaHRt
bCBbIFNraQogd2Via2l0Lm9yZy9iLzE4ODA0MSBodHRwL3dwdC9jcnlwdG8vdW53cmFwLXJzYS1r
ZXktY3Jhc2guYW55Lndvcmtlci5odG1sIFsgRmFpbHVyZSBUaW1lb3V0IFBhc3MgXQogd2Via2l0
Lm9yZy9iLzE4ODA0MSBodHRwL3dwdC9jcnlwdG8vdW53cmFwLXJzYS1rZXktY3Jhc2guYW55Lmh0
bWwgWyBUaW1lb3V0IFBhc3MgXQogCi13ZWJraXQub3JnL2IvMjE3Njk5IGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW93b3JrbGV0
LWludGVyZmFjZS9hdWRpb3dvcmtsZXRwcm9jZXNzb3ItcHJvbWlzZXMuaHR0cHMuaHRtbCBbIENy
YXNoIFBhc3MgXQotd2Via2l0Lm9yZy9iLzIxNzY5OSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLW1lZGlhZWxlbWVudGF1ZGlvc291cmNl
bm9kZS1pbnRlcmZhY2UvY29ycy1jaGVjay5odHRwcy5odG1sIFsgRmFpbHVyZSBdCi0KICMvLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAjIEVuZCBvZiBDcnlwdG8gdGVzdHMKICMvLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCkBAIC0yNjAsOCArMjU3LDYgQEAgd2Via2l0Lm9y
Zy9iLzIxNTI4MSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1h
dWRpby1hcGkvdGhlLWEKIAogd2Via2l0Lm9yZy9iLzIxNTg4NiB3ZWJhdWRpby9hdWRpb2J1ZmZl
cnNvdXJjZS1wbGF5YmFja3JhdGUuaHRtbCBbIFNraXAgXQogCi13ZWJraXQub3JnL2IvMjE2MTcx
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90
aGUtZGVzdGluYXRpb25ub2RlLWludGVyZmFjZS9kZXN0aW5hdGlvbi5odG1sIFsgRmFpbHVyZSBd
Ci0KIHdlYmtpdC5vcmcvYi8yMTYxMTggd2ViYXVkaW8vY29udm9sdmVyLXNldEJ1ZmZlci1kaWZm
ZXJlbnQtc2FtcGxlcmF0ZS5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMjE2MTE4IHdlYmF1
ZGlvL2NvbnZvbHZlci1zZXRCdWZmZXItbnVsbC5odG1sIFsgU2tpcCBdCiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411850</attachid>
            <date>2020-10-20 02:19:29 -0700</date>
            <delta_ts>2020-10-20 03:01:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216171-20201020021928.patch</filename>
            <type>text/plain</type>
            <size>35494</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NjY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTdkMThmM2MyMGEyOWE2
N2FlZTFlY2I1NTU0ZjgxNjAyZTBlN2YyNS4uZTFlYWMyYzRlNjFlYzhlZTMxNGMwYzU2ZGNkOWU1
MjRlOWYxYzRmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDIwLTEwLTE5ICBQaGls
aXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVy
XSBSRUdSRVNTSU9OKHIyNjY1NTkpOiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dl
YmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWRlc3RpbmF0aW9ubm9kZS1pbnRlcmZhY2UvZGVzdGlu
YXRpb24uaHRtbCBpcyBmYWlsaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTYxNzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGUgQXVkaW9EZXN0aW5hdGlvbiBub3cgcHJvYmVzIHRoZSBhdWRpbyBz
aW5rIHRvIGZpbmQgdGhlIG1heGltdW0gbnVtYmVyIG9mIG91dHB1dCBjaGFubmVscworICAgICAg
ICBpdCBzdXBwb3J0cy4gVGhlIEF1ZGlvRGVzdGluYXRpb24gaXMgYWxzbyBub3cgYWJsZSB0byBy
ZW5kZXIgPjIgY2hhbm5lbHMgZnJvbSB0aGUgQXVkaW9CdXMuCisgICAgICAgIFRoZSBBdWRpb1By
b3ZpZGVyIGFsc28gaGFuZGxlcyBtb3JlIHRoYW4gMiBjaGFubmVscy4gVGhpcyBwYXRjaCBhbHNv
IGluY2x1ZGVzIHZhcmlvdXMgY29kZQorICAgICAgICBjbGVhbnVwcyBhcyB0aGVzZSBmaWxlcyB3
ZXJlIG5vdCB1cGRhdGVkIG11Y2ggZHVyaW5nIHRoZSBwYXN0IGZldyB5ZWFycy4KKworICAgICAg
ICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHdlYmF1ZGlvIHRlc3RzLgorCisgICAgICAgICogcGxhdGZv
cm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6aW5pdGlhbGl6ZURlYnVnQ2F0ZWdvcnkpOgorICAgICAgICAoV2ViQ29yZTo6
bWF4aW11bU51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9E
ZXN0aW5hdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb246
Om1heENoYW5uZWxDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uR1N0
cmVhbWVyOjpBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6On5BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcjo6c3RhcnQpOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcjo6c3RvcCk6CisgICAg
ICAgICogcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9Tb3VyY2VQcm92aWRl
ckdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbml0aWFsaXplRGVidWdDYXRlZ29y
eSk6CisgICAgICAgIChXZWJDb3JlOjpjb3B5R1N0cmVhbWVyQnVmZmVyc1RvQXVkaW9DaGFubmVs
KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXI6OkF1ZGlv
U291cmNlUHJvdmlkZXJHU3RyZWFtZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Tb3VyY2VQ
cm92aWRlckdTdHJlYW1lcjo6fkF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lcjo6cHJvdmlkZUlucHV0KToK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXI6OmhhbmRsZVNh
bXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyOjpz
ZXRDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1l
cjo6aGFuZGxlTmV3RGVpbnRlcmxlYXZlUGFkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU291
cmNlUHJvdmlkZXJHU3RyZWFtZXI6OmhhbmRsZVJlbW92ZWREZWludGVybGVhdmVQYWQpOgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lcjo6ZGVpbnRlcmxlYXZl
UGFkc0NvbmZpZ3VyZWQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Tb3VyY2VQcm92aWRlckdT
dHJlYW1lcjo6Y2xlYXJBZGFwdGVycyk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vZ3N0cmVh
bWVyL0F1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIuaDoKKwogMjAyMC0xMC0xMyAgU2VyZ2lv
IFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlhLmNvbT4KIAogICAgICAgICBTYW5pdGl6ZSB0
aGUgdXNhZ2Ugb2Ygb3ZlcnJpZGUgc2l6ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0
cmVhbWVyLmNwcAppbmRleCAxNThmOTE4NzNiNzFhN2ZjNDY3OTQ1Mjg4NWU2YjkzODAzNzcwMTVh
Li4xYjBjNTRlMWI5OTk1MTliNmE3ZDZkMWFlZmNhNjFiMzA4ZmRkNmFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdT
dHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVy
L0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCkBAIC0zNyw2ICszNyw1MSBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKK0dTVF9ERUJVR19DQVRFR09SWSh3ZWJraXRfYXVkaW9fZGVzdGlu
YXRpb25fZGVidWcpOworI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgd2Via2l0X2F1ZGlvX2Rlc3Rp
bmF0aW9uX2RlYnVnCisKK3N0YXRpYyB2b2lkIGluaXRpYWxpemVEZWJ1Z0NhdGVnb3J5KCkKK3sK
KyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uo
b25jZUZsYWcsIFtdIHsKKyAgICAgICAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQod2Via2l0X2F1
ZGlvX2Rlc3RpbmF0aW9uX2RlYnVnLCAid2Via2l0YXVkaW9kZXN0aW5hdGlvbiIsIDAsICJXZWJL
aXQgV2ViQXVkaW8gRGVzdGluYXRpb24iKTsKKyAgICB9KTsKK30KKworc3RhdGljIHVuc2lnbmVk
IGxvbmcgbWF4aW11bU51bWJlck9mT3V0cHV0Q2hhbm5lbHMoKQoreworICAgIGluaXRpYWxpemVE
ZWJ1Z0NhdGVnb3J5KCk7CisKKyAgICBzdGF0aWMgaW50IGNvdW50ID0gMDsKKyAgICBzdGF0aWMg
c3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtd
IHsKKyAgICAgICAgYXV0byBtb25pdG9yID0gYWRvcHRHUmVmKGdzdF9kZXZpY2VfbW9uaXRvcl9u
ZXcoKSk7CisgICAgICAgIGF1dG8gY2FwcyA9IGFkb3B0R1JlZihnc3RfY2Fwc19uZXdfZW1wdHlf
c2ltcGxlKCJhdWRpby94LXJhdyIpKTsKKyAgICAgICAgZ3N0X2RldmljZV9tb25pdG9yX2FkZF9m
aWx0ZXIobW9uaXRvci5nZXQoKSwgIkF1ZGlvL1NpbmsiLCBjYXBzLmdldCgpKTsKKyAgICAgICAg
Z3N0X2RldmljZV9tb25pdG9yX3N0YXJ0KG1vbml0b3IuZ2V0KCkpOworICAgICAgICBhdXRvKiBk
ZXZpY2VzID0gZ3N0X2RldmljZV9tb25pdG9yX2dldF9kZXZpY2VzKG1vbml0b3IuZ2V0KCkpOwor
ICAgICAgICB3aGlsZSAoZGV2aWNlcykgeworICAgICAgICAgICAgYXV0byBkZXZpY2UgPSBhZG9w
dEdSZWYoR1NUX0RFVklDRV9DQVNUKGRldmljZXMtPmRhdGEpKTsKKyAgICAgICAgICAgIGF1dG8g
Y2FwcyA9IGFkb3B0R1JlZihnc3RfZGV2aWNlX2dldF9jYXBzKGRldmljZS5nZXQoKSkpOworICAg
ICAgICAgICAgdW5zaWduZWQgc2l6ZSA9IGdzdF9jYXBzX2dldF9zaXplKGNhcHMuZ2V0KCkpOwor
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7IGkrKykgeworICAgICAg
ICAgICAgICAgIGF1dG8qIHN0cnVjdHVyZSA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUoY2Fwcy5n
ZXQoKSwgaSk7CisgICAgICAgICAgICAgICAgaWYgKCFnX3N0cl9lcXVhbChnc3Rfc3RydWN0dXJl
X2dldF9uYW1lKHN0cnVjdHVyZSksICJhdWRpby94LXJhdyIpKQorICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICBpbnQgdmFsdWU7CisgICAgICAgICAgICAgICAg
aWYgKCFnc3Rfc3RydWN0dXJlX2dldF9pbnQoc3RydWN0dXJlLCAiY2hhbm5lbHMiLCAmdmFsdWUp
KQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICBjb3VudCA9
IHN0ZDo6bWF4KGNvdW50LCB2YWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkZXZp
Y2VzID0gZ19saXN0X2RlbGV0ZV9saW5rKGRldmljZXMsIGRldmljZXMpOworICAgICAgICB9Cisg
ICAgICAgIEdTVF9ERUJVRygibWF4aW11bU51bWJlck9mT3V0cHV0Q2hhbm5lbHM6ICVkIiwgY291
bnQpOworICAgICAgICBnc3RfZGV2aWNlX21vbml0b3Jfc3RvcChtb25pdG9yLmdldCgpKTsKKyAg
ICB9KTsKKworICAgIHJldHVybiBjb3VudDsKK30KKwogZ2Jvb2xlYW4gbWVzc2FnZUNhbGxiYWNr
KEdzdEJ1cyosIEdzdE1lc3NhZ2UqIG1lc3NhZ2UsIEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIq
IGRlc3RpbmF0aW9uKQogewogICAgIHJldHVybiBkZXN0aW5hdGlvbi0+aGFuZGxlTWVzc2FnZSht
ZXNzYWdlKTsKQEAgLTUwLDE3ICs5NSwxNCBAQCBzdGF0aWMgdm9pZCBhdXRvQXVkaW9TaW5rQ2hp
bGRBZGRlZENhbGxiYWNrKEdzdENoaWxkUHJveHkqLCBHT2JqZWN0KiBvYmplY3QsIGdjaAogCiBS
ZWY8QXVkaW9EZXN0aW5hdGlvbj4gQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKEF1ZGlvSU9DYWxs
YmFjayYgY2FsbGJhY2ssIGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRDaGFu
bmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSkK
IHsKKyAgICBpbml0aWFsaXplRGVidWdDYXRlZ29yeSgpOwogICAgIC8vIEZJWE1FOiBtYWtlIHVz
ZSBvZiBpbnB1dERldmljZUlkIGFzIGFwcHJvcHJpYXRlLgogCiAgICAgLy8gRklYTUU6IEFkZCBz
dXBwb3J0IGZvciBsb2NhbC9saXZlIGF1ZGlvIGlucHV0LgogICAgIGlmIChudW1iZXJPZklucHV0
Q2hhbm5lbHMpCi0gICAgICAgIExPRyhNZWRpYSwgIkF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZSgl
dSwgJXUsICVmKSAtIHVuaGFuZGxlZCBpbnB1dCBjaGFubmVscyIsIG51bWJlck9mSW5wdXRDaGFu
bmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSk7Ci0KLSAgICAvLyBGSVhN
RTogQWRkIHN1cHBvcnQgZm9yIG11bHRpLWNoYW5uZWwgKD4gc3RlcmVvKSBvdXRwdXQuCi0gICAg
aWYgKG51bWJlck9mT3V0cHV0Q2hhbm5lbHMgIT0gMikKLSAgICAgICAgTE9HKE1lZGlhLCAiQXVk
aW9EZXN0aW5hdGlvbjo6Y3JlYXRlKCV1LCAldSwgJWYpIC0gdW5oYW5kbGVkIG91dHB1dCBjaGFu
bmVscyIsIG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2Ft
cGxlUmF0ZSk7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRl
KCV1LCAldSwgJWYpIC0gdW5oYW5kbGVkIGlucHV0IGNoYW5uZWxzIiwgbnVtYmVyT2ZJbnB1dENo
YW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlKTsKIAotICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIoY2FsbGJhY2ssIHNhbXBs
ZVJhdGUpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdWRpb0Rlc3RpbmF0aW9uR1N0cmVh
bWVyKGNhbGxiYWNrLCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlKSk7CiB9CiAK
IGZsb2F0IEF1ZGlvRGVzdGluYXRpb246OmhhcmR3YXJlU2FtcGxlUmF0ZSgpCkBAIC03MCwxOSAr
MTEyLDE2IEBAIGZsb2F0IEF1ZGlvRGVzdGluYXRpb246OmhhcmR3YXJlU2FtcGxlUmF0ZSgpCiAK
IHVuc2lnbmVkIGxvbmcgQXVkaW9EZXN0aW5hdGlvbjo6bWF4Q2hhbm5lbENvdW50KCkKIHsKLSAg
ICAvLyBGSVhNRTogcXVlcnkgdGhlIGRlZmF1bHQgYXVkaW8gaGFyZHdhcmUgZGV2aWNlIHRvIHJl
dHVybiB0aGUgYWN0dWFsIG51bWJlcgotICAgIC8vIG9mIGNoYW5uZWxzIG9mIHRoZSBkZXZpY2Uu
IEFsc28gc2VlIGNvcnJlc3BvbmRpbmcgRklYTUUgaW4gY3JlYXRlKCkuCi0gICAgcmV0dXJuIDA7
CisgICAgcmV0dXJuIG1heGltdW1OdW1iZXJPZk91dHB1dENoYW5uZWxzKCk7CiB9CiAKLUF1ZGlv
RGVzdGluYXRpb25HU3RyZWFtZXI6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIoQXVkaW9JT0Nh
bGxiYWNrJiBjYWxsYmFjaywgZmxvYXQgc2FtcGxlUmF0ZSkKK0F1ZGlvRGVzdGluYXRpb25HU3Ry
ZWFtZXI6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIoQXVkaW9JT0NhbGxiYWNrJiBjYWxsYmFj
aywgdW5zaWduZWQgbG9uZyBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRl
KQogICAgIDogbV9jYWxsYmFjayhjYWxsYmFjaykKLSAgICAsIG1fcmVuZGVyQnVzKEF1ZGlvQnVz
OjpjcmVhdGUoMiwgQXVkaW9VdGlsaXRpZXM6OnJlbmRlclF1YW50dW1TaXplLCBmYWxzZSkpCisg
ICAgLCBtX3JlbmRlckJ1cyhBdWRpb0J1czo6Y3JlYXRlKG51bWJlck9mT3V0cHV0Q2hhbm5lbHMs
IEF1ZGlvVXRpbGl0aWVzOjpyZW5kZXJRdWFudHVtU2l6ZSwgZmFsc2UpKQogICAgICwgbV9zYW1w
bGVSYXRlKHNhbXBsZVJhdGUpCi0gICAgLCBtX2lzUGxheWluZyhmYWxzZSkKIHsKLSAgICBtX3Bp
cGVsaW5lID0gZ3N0X3BpcGVsaW5lX25ldygicGxheSIpOwotICAgIEdSZWZQdHI8R3N0QnVzPiBi
dXMgPSBhZG9wdEdSZWYoZ3N0X3BpcGVsaW5lX2dldF9idXMoR1NUX1BJUEVMSU5FKG1fcGlwZWxp
bmUpKSk7CisgICAgbV9waXBlbGluZSA9IGdzdF9waXBlbGluZV9uZXcoImF1ZGlvLWRlc3RpbmF0
aW9uIik7CisgICAgR1JlZlB0cjxHc3RCdXM+IGJ1cyA9IGFkb3B0R1JlZihnc3RfcGlwZWxpbmVf
Z2V0X2J1cyhHU1RfUElQRUxJTkUobV9waXBlbGluZS5nZXQoKSkpKTsKICAgICBBU1NFUlQoYnVz
KTsKICAgICBnc3RfYnVzX2FkZF9zaWduYWxfd2F0Y2hfZnVsbChidXMuZ2V0KCksIFJ1bkxvb3BT
b3VyY2VQcmlvcml0eTo6UnVuTG9vcERpc3BhdGNoZXIpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3Qo
YnVzLmdldCgpLCAibWVzc2FnZSIsIEdfQ0FMTEJBQ0sobWVzc2FnZUNhbGxiYWNrKSwgdGhpcyk7
CkBAIC05Myw3ICsxMzIsNyBAQCBBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpBdWRpb0Rlc3Rp
bmF0aW9uR1N0cmVhbWVyKEF1ZGlvSU9DYWxsYmFjayYgY2FsbGJhY2ssCiAgICAgR1JlZlB0cjxH
c3RFbGVtZW50PiBhdWRpb1NpbmsgPSBjcmVhdGVQbGF0Zm9ybUF1ZGlvU2luaygpOwogICAgIG1f
YXVkaW9TaW5rQXZhaWxhYmxlID0gYXVkaW9TaW5rOwogICAgIGlmICghYXVkaW9TaW5rKSB7Ci0g
ICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBHU3RyZWFtZXIgYXVkaW8gc2luayBl
bGVtZW50Iik7CisgICAgICAgIEdTVF9FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBHU3RyZWFtZXIg
YXVkaW8gc2luayBlbGVtZW50Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEwNyw3
ICsxNDYsNyBAQCBBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpBdWRpb0Rlc3RpbmF0aW9uR1N0
cmVhbWVyKEF1ZGlvSU9DYWxsYmFjayYgY2FsbGJhY2ssCiAgICAgICAgIC8vIGF1ZGlvc2luayB3
YXMgbG9hZGVkIGNvcnJlY3RseS4KICAgICAgICAgR3N0U3RhdGVDaGFuZ2VSZXR1cm4gc3RhdGVD
aGFuZ2VSZXR1cm4gPSBnc3RfZWxlbWVudF9zZXRfc3RhdGUoYXVkaW9TaW5rLmdldCgpLCBHU1Rf
U1RBVEVfUkVBRFkpOwogICAgICAgICBpZiAoc3RhdGVDaGFuZ2VSZXR1cm4gPT0gR1NUX1NUQVRF
X0NIQU5HRV9GQUlMVVJFKSB7Ci0gICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjaGFu
Z2UgYXV0b2F1ZGlvc2luayBlbGVtZW50IHN0YXRlIik7CisgICAgICAgICAgICBHU1RfRVJST1Io
IkZhaWxlZCB0byBjaGFuZ2UgYXV0b2F1ZGlvc2luayBlbGVtZW50IHN0YXRlIik7CiAgICAgICAg
ICAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUoYXVkaW9TaW5rLmdldCgpLCBHU1RfU1RBVEVfTlVM
TCk7CiAgICAgICAgICAgICBtX2F1ZGlvU2lua0F2YWlsYWJsZSA9IGZhbHNlOwogICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtMTE2LDcgKzE1NSw3IEBAIEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6
OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIoQXVkaW9JT0NhbGxiYWNrJiBjYWxsYmFjaywKIAog
ICAgIEdzdEVsZW1lbnQqIGF1ZGlvQ29udmVydCA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgi
YXVkaW9jb252ZXJ0IiwgbnVsbHB0cik7CiAgICAgR3N0RWxlbWVudCogYXVkaW9SZXNhbXBsZSA9
IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgiYXVkaW9yZXNhbXBsZSIsIG51bGxwdHIpOwotICAg
IGdzdF9iaW5fYWRkX21hbnkoR1NUX0JJTl9DQVNUKG1fcGlwZWxpbmUpLCBtX3NyYy5nZXQoKSwg
YXVkaW9Db252ZXJ0LCBhdWRpb1Jlc2FtcGxlLCBhdWRpb1NpbmsuZ2V0KCksIG51bGxwdHIpOwor
ICAgIGdzdF9iaW5fYWRkX21hbnkoR1NUX0JJTl9DQVNUKG1fcGlwZWxpbmUuZ2V0KCkpLCBtX3Ny
Yy5nZXQoKSwgYXVkaW9Db252ZXJ0LCBhdWRpb1Jlc2FtcGxlLCBhdWRpb1NpbmsuZ2V0KCksIG51
bGxwdHIpOwogCiAgICAgLy8gTGluayBzcmMgcGFkcyBmcm9tIHdlYmtpdEF1ZGlvU3JjIHRvIGF1
ZGlvQ29udmVydCAhIGF1ZGlvUmVzYW1wbGUgISBhdXRvYXVkaW9zaW5rLgogICAgIGdzdF9lbGVt
ZW50X2xpbmtfcGFkc19mdWxsKG1fc3JjLmdldCgpLCAic3JjIiwgYXVkaW9Db252ZXJ0LCAic2lu
ayIsIEdTVF9QQURfTElOS19DSEVDS19OT1RISU5HKTsKQEAgLTEyNiwxMyArMTY1LDEyIEBAIEF1
ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIoQXVkaW9J
T0NhbGxiYWNrJiBjYWxsYmFjaywKIAogQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcjo6fkF1ZGlv
RGVzdGluYXRpb25HU3RyZWFtZXIoKQogewotICAgIEdSZWZQdHI8R3N0QnVzPiBidXMgPSBhZG9w
dEdSZWYoZ3N0X3BpcGVsaW5lX2dldF9idXMoR1NUX1BJUEVMSU5FKG1fcGlwZWxpbmUpKSk7Cisg
ICAgR1JlZlB0cjxHc3RCdXM+IGJ1cyA9IGFkb3B0R1JlZihnc3RfcGlwZWxpbmVfZ2V0X2J1cyhH
U1RfUElQRUxJTkUobV9waXBlbGluZS5nZXQoKSkpKTsKICAgICBBU1NFUlQoYnVzKTsKICAgICBn
X3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMoYnVzLmdldCgpLCByZWludGVycHJl
dF9jYXN0PGdwb2ludGVyPihtZXNzYWdlQ2FsbGJhY2spLCB0aGlzKTsKICAgICBnc3RfYnVzX3Jl
bW92ZV9zaWduYWxfd2F0Y2goYnVzLmdldCgpKTsKIAotICAgIGdzdF9lbGVtZW50X3NldF9zdGF0
ZShtX3BpcGVsaW5lLCBHU1RfU1RBVEVfTlVMTCk7Ci0gICAgZ3N0X29iamVjdF91bnJlZihtX3Bp
cGVsaW5lKTsKKyAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUobV9waXBlbGluZS5nZXQoKSwgR1NU
X1NUQVRFX05VTEwpOwogfQogCiB1bnNpZ25lZCBBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpm
cmFtZXNQZXJCdWZmZXIoKSBjb25zdApAQCAtMTUzLDkgKzE5MSwyNiBAQCBnYm9vbGVhbiBBdWRp
b0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpoYW5kbGVNZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3NhZ2Up
CiAgICAgY2FzZSBHU1RfTUVTU0FHRV9FUlJPUjoKICAgICAgICAgZ3N0X21lc3NhZ2VfcGFyc2Vf
ZXJyb3IobWVzc2FnZSwgJmVycm9yLm91dFB0cigpLCAmZGVidWcub3V0UHRyKCkpOwogICAgICAg
ICBnX3dhcm5pbmcoIkVycm9yOiAlZCwgJXMuIERlYnVnIG91dHB1dDogJXMiLCBlcnJvci0+Y29k
ZSwgIGVycm9yLT5tZXNzYWdlLCBkZWJ1Zy5nZXQoKSk7Ci0gICAgICAgIGdzdF9lbGVtZW50X3Nl
dF9zdGF0ZShtX3BpcGVsaW5lLCBHU1RfU1RBVEVfTlVMTCk7CisgICAgICAgIGdzdF9lbGVtZW50
X3NldF9zdGF0ZShtX3BpcGVsaW5lLmdldCgpLCBHU1RfU1RBVEVfTlVMTCk7CiAgICAgICAgIG1f
aXNQbGF5aW5nID0gZmFsc2U7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgR1NUX01FU1NBR0Vf
U1RBVEVfQ0hBTkdFRDoKKyAgICAgICAgaWYgKEdTVF9NRVNTQUdFX1NSQyhtZXNzYWdlKSA9PSBH
U1RfT0JKRUNUKG1fcGlwZWxpbmUuZ2V0KCkpKSB7CisgICAgICAgICAgICBHc3RTdGF0ZSBvbGRT
dGF0ZSwgbmV3U3RhdGUsIHBlbmRpbmc7CisgICAgICAgICAgICBnc3RfbWVzc2FnZV9wYXJzZV9z
dGF0ZV9jaGFuZ2VkKG1lc3NhZ2UsICZvbGRTdGF0ZSwgJm5ld1N0YXRlLCAmcGVuZGluZyk7CisK
KyAgICAgICAgICAgIEdTVF9JTkZPX09CSkVDVChtX3BpcGVsaW5lLmdldCgpLCAiU3RhdGUgY2hh
bmdlZCAob2xkOiAlcywgbmV3OiAlcywgcGVuZGluZzogJXMpIiwKKyAgICAgICAgICAgICAgICBn
c3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFtZShvbGRTdGF0ZSksCisgICAgICAgICAgICAgICAgZ3N0
X2VsZW1lbnRfc3RhdGVfZ2V0X25hbWUobmV3U3RhdGUpLAorICAgICAgICAgICAgICAgIGdzdF9l
bGVtZW50X3N0YXRlX2dldF9uYW1lKHBlbmRpbmcpKTsKKworICAgICAgICAgICAgV1RGOjpTdHJp
bmcgZG90RmlsZU5hbWUgPSBtYWtlU3RyaW5nKEdTVF9PQkpFQ1RfTkFNRShtX3BpcGVsaW5lLmdl
dCgpKSwgJ18nLAorICAgICAgICAgICAgICAgIGdzdF9lbGVtZW50X3N0YXRlX2dldF9uYW1lKG9s
ZFN0YXRlKSwgJ18nLAorICAgICAgICAgICAgICAgIGdzdF9lbGVtZW50X3N0YXRlX2dldF9uYW1l
KG5ld1N0YXRlKSk7CisKKyAgICAgICAgICAgIEdTVF9ERUJVR19CSU5fVE9fRE9UX0ZJTEVfV0lU
SF9UUyhHU1RfQklOX0NBU1QobV9waXBlbGluZS5nZXQoKSksIEdTVF9ERUJVR19HUkFQSF9TSE9X
X0FMTCwgZG90RmlsZU5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIH0KKyAgICAgICAgYnJl
YWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTcxLDEyICsyMjYs
MTIgQEAgdm9pZCBBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpzdGFydChGdW5jdGlvbjx2b2lk
KEZ1bmN0aW9uPHZvaWQoKT4mJik+JiYgZGlzcGEKICAgICBpZiAoZGlzcGF0Y2hUb1JlbmRlclRo
cmVhZCkKICAgICAgICAgd2Via2l0V2ViQXVkaW9Tb3VyY2VTZXREaXNwYXRjaFRvUmVuZGVyVGhy
ZWFkQ2FsbGJhY2soV0VCS0lUX1dFQl9BVURJT19TUkMobV9zcmMuZ2V0KCkpLCBXVEZNb3ZlKGRp
c3BhdGNoVG9SZW5kZXJUaHJlYWQpKTsKIAotICAgIGlmIChnc3RfZWxlbWVudF9zZXRfc3RhdGUo
bV9waXBlbGluZSwgR1NUX1NUQVRFX1BMQVlJTkcpID09IEdTVF9TVEFURV9DSEFOR0VfRkFJTFVS
RSkgeworICAgIEdTVF9ERUJVRygiU3RhcnRpbmciKTsKKyAgICBpZiAoZ3N0X2VsZW1lbnRfc2V0
X3N0YXRlKG1fcGlwZWxpbmUuZ2V0KCksIEdTVF9TVEFURV9QTEFZSU5HKSA9PSBHU1RfU1RBVEVf
Q0hBTkdFX0ZBSUxVUkUpIHsKICAgICAgICAgZ193YXJuaW5nKCJFcnJvcjogRmFpbGVkIHRvIHNl
dCBwaXBlbGluZSB0byBwbGF5aW5nIik7CiAgICAgICAgIG1faXNQbGF5aW5nID0gZmFsc2U7CiAg
ICAgICAgIHJldHVybjsKICAgICB9Ci0KICAgICBtX2lzUGxheWluZyA9IHRydWU7CiB9CiAKQEAg
LTE4Niw3ICsyNDEsOCBAQCB2b2lkIEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6OnN0b3AoKQog
ICAgIGlmICghbV9hdWRpb1NpbmtBdmFpbGFibGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdz
dF9lbGVtZW50X3NldF9zdGF0ZShtX3BpcGVsaW5lLCBHU1RfU1RBVEVfUEFVU0VEKTsKKyAgICBH
U1RfREVCVUcoIlN0b3BwaW5nIik7CisgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKG1fcGlwZWxp
bmUuZ2V0KCksIEdTVF9TVEFURV9QQVVTRUQpOwogICAgIG1faXNQbGF5aW5nID0gZmFsc2U7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9B
dWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5oCmluZGV4IDY3YTM5MzU4MDA3
ZDkzYjY3YWIzMmQxMWM3YTZkOWE2OWUxNDBiYjEuLjc5NjAwNDYxYjNmZDNlZDk4OTAyZWRlYTg5
NGEwNDU0MTRhMjcwYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuaApA
QCAtMTYsOCArMTYsNyBAQAogICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQogICovCiAKLSNpZm5k
ZWYgQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcl9oCi0jZGVmaW5lIEF1ZGlvRGVzdGluYXRpb25H
U3RyZWFtZXJfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBdWRpb0J1cy5oIgogI2luY2x1
ZGUgIkF1ZGlvRGVzdGluYXRpb24uaCIKQEAgLTMyLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyIDogcHVibGljIEF1ZGlvRGVz
dGluYXRpb24gewogcHVibGljOgotICAgIEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIoQXVkaW9J
T0NhbGxiYWNrJiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgQXVkaW9EZXN0aW5hdGlvbkdTdHJl
YW1lcihBdWRpb0lPQ2FsbGJhY2smLCB1bnNpZ25lZCBsb25nIG51bWJlck9mT3V0cHV0Q2hhbm5l
bHMsIGZsb2F0IHNhbXBsZVJhdGUpOwogICAgIHZpcnR1YWwgfkF1ZGlvRGVzdGluYXRpb25HU3Ry
ZWFtZXIoKTsKIAogICAgIHZvaWQgc3RhcnQoRnVuY3Rpb248dm9pZChGdW5jdGlvbjx2b2lkKCk+
JiYpPiYmIGRpc3BhdGNoVG9SZW5kZXJUaHJlYWQpIG92ZXJyaWRlOwpAQCAtNTAsMTIgKzQ5LDEw
IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPEF1ZGlvQnVzPiBtX3JlbmRlckJ1czsKIAogICAgIGZs
b2F0IG1fc2FtcGxlUmF0ZTsKLSAgICBib29sIG1faXNQbGF5aW5nOwotICAgIGJvb2wgbV9hdWRp
b1NpbmtBdmFpbGFibGU7Ci0gICAgR3N0RWxlbWVudCogbV9waXBlbGluZTsKKyAgICBib29sIG1f
aXNQbGF5aW5nIHsgZmFsc2UgfTsKKyAgICBib29sIG1fYXVkaW9TaW5rQXZhaWxhYmxlIHsgZmFs
c2UgfTsKKyAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IG1fcGlwZWxpbmU7CiAgICAgR1JlZlB0cjxH
c3RFbGVtZW50PiBtX3NyYzsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
IC8vIEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvU291cmNl
UHJvdmlkZXJHU3RyZWFtZXIuY3BwCmluZGV4IDE1YzQyNjZiMzEyYzI3OGZjNzc3MDQyNmIxNTUz
YTEzMzkzNjU0MWIuLjAxOTkyYWJlNzYxZjY3ZDc5MWM3MTkxOTZlN2U2M2M2YzVmMDE4ZWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb1Nv
dXJjZVByb3ZpZGVyR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9nc3RyZWFtZXIvQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lci5jcHAKQEAgLTI3LDIx
ICsyNywyNSBAQAogI2luY2x1ZGUgPGdzdC9hdWRpby9hdWRpby1pbmZvLmg+CiAjaW5jbHVkZSA8
Z3N0L2Jhc2UvZ3N0YWRhcHRlci5oPgogCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNF
KExJQldFQlJUQykKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogI2luY2x1ZGUgIkdTdHJlYW1l
ckF1ZGlvRGF0YS5oIgogI2luY2x1ZGUgIkdTdHJlYW1lck1lZGlhU3RyZWFtU291cmNlLmgiCiAj
ZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBGb3Igbm93IHRoZSBwcm92aWRlciBz
dXBwb3J0cyBvbmx5IHN0ZXJlbyBmaWxlcyBhdCBhIGZpeGVkIHNhbXBsZQotLy8gYml0cmF0ZS4K
LXN0YXRpYyBjb25zdCBpbnQgZ051bWJlck9mQ2hhbm5lbHMgPSAyOworLy8gRm9yIG5vdyB0aGUg
cHJvdmlkZXIgc3VwcG9ydHMgb25seSBmaWxlcyBhdCBhIGZpeGVkIHNhbXBsZSBiaXRyYXRlLgog
c3RhdGljIGNvbnN0IGZsb2F0IGdTYW1wbGVCaXRSYXRlID0gNDQxMDA7CiAKLXN0YXRpYyBHc3RG
bG93UmV0dXJuIG9uQXBwc2lua05ld0J1ZmZlckNhbGxiYWNrKEdzdEFwcFNpbmsqIHNpbmssIGdw
b2ludGVyIHVzZXJEYXRhKQorR1NUX0RFQlVHX0NBVEVHT1JZKHdlYmtpdF9hdWRpb19wcm92aWRl
cl9kZWJ1Zyk7CisjZGVmaW5lIEdTVF9DQVRfREVGQVVMVCB3ZWJraXRfYXVkaW9fcHJvdmlkZXJf
ZGVidWcKKworc3RhdGljIHZvaWQgaW5pdGlhbGl6ZURlYnVnQ2F0ZWdvcnkoKQogewotICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyKj4odXNlckRhdGEp
LT5oYW5kbGVBdWRpb0J1ZmZlcihzaW5rKTsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25j
ZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyAgICAgICAgR1NUX0RF
QlVHX0NBVEVHT1JZX0lOSVQod2Via2l0X2F1ZGlvX3Byb3ZpZGVyX2RlYnVnLCAid2Via2l0YXVk
aW9wcm92aWRlciIsIDAsICJXZWJLaXQgV2ViQXVkaW8gUHJvdmlkZXIiKTsKKyAgICB9KTsKIH0K
IAogc3RhdGljIHZvaWQgb25HU3RyZWFtZXJEZWludGVybGVhdmVQYWRBZGRlZENhbGxiYWNrKEdz
dEVsZW1lbnQqLCBHc3RQYWQqIHBhZCwgQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lciogcHJv
dmlkZXIpCkBAIC01OSwyNyArNjMsMTYgQEAgc3RhdGljIHZvaWQgb25HU3RyZWFtZXJEZWludGVy
bGVhdmVQYWRSZW1vdmVkQ2FsbGJhY2soR3N0RWxlbWVudCosIEdzdFBhZCogcGFkLAogICAgIHBy
b3ZpZGVyLT5oYW5kbGVSZW1vdmVkRGVpbnRlcmxlYXZlUGFkKHBhZCk7CiB9CiAKLXN0YXRpYyBH
c3RQYWRQcm9iZVJldHVybiBvbkFwcHNpbmtGbHVzaENhbGxiYWNrKEdzdFBhZCosIEdzdFBhZFBy
b2JlSW5mbyogaW5mbywgZ3BvaW50ZXIgdXNlckRhdGEpCi17Ci0gICAgaWYgKEdTVF9QQURfUFJP
QkVfSU5GT19UWVBFKGluZm8pICYgKEdTVF9QQURfUFJPQkVfVFlQRV9FVkVOVF9ET1dOU1RSRUFN
IHwgR1NUX1BBRF9QUk9CRV9UWVBFX0VWRU5UX0ZMVVNIKSkgewotICAgICAgICBHc3RFdmVudCog
ZXZlbnQgPSBHU1RfUEFEX1BST0JFX0lORk9fRVZFTlQoaW5mbyk7Ci0gICAgICAgIGlmIChHU1Rf
RVZFTlRfVFlQRShldmVudCkgPT0gR1NUX0VWRU5UX0ZMVVNIX1NUT1ApIHsKLSAgICAgICAgICAg
IEF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIqIHByb3ZpZGVyID0gcmVpbnRlcnByZXRfY2Fz
dDxBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyKj4odXNlckRhdGEpOwotICAgICAgICAgICAg
cHJvdmlkZXItPmNsZWFyQWRhcHRlcnMoKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4g
R1NUX1BBRF9QUk9CRV9PSzsKLX0KLQogc3RhdGljIHZvaWQgY29weUdTdHJlYW1lckJ1ZmZlcnNU
b0F1ZGlvQ2hhbm5lbChHc3RBZGFwdGVyKiBhZGFwdGVyLCBBdWRpb0J1cyogYnVzICwgaW50IGNo
YW5uZWxOdW1iZXIsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiB7Ci0gICAgaWYgKCFnc3RfYWRh
cHRlcl9hdmFpbGFibGUoYWRhcHRlcikpIHsKKyAgICBhdXRvIGF2YWlsYWJsZSA9IGdzdF9hZGFw
dGVyX2F2YWlsYWJsZShhZGFwdGVyKTsKKyAgICBpZiAoIWF2YWlsYWJsZSkgewogICAgICAgICBi
dXMtPnplcm8oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIHNpemVfdCBieXRlcyA9
IGZyYW1lc1RvUHJvY2VzcyAqIHNpemVvZihmbG9hdCk7Ci0gICAgaWYgKGdzdF9hZGFwdGVyX2F2
YWlsYWJsZShhZGFwdGVyKSA+PSBieXRlcykgeworICAgIGlmIChhdmFpbGFibGUgPj0gYnl0ZXMp
IHsKICAgICAgICAgZ3N0X2FkYXB0ZXJfY29weShhZGFwdGVyLCBidXMtPmNoYW5uZWwoY2hhbm5l
bE51bWJlciktPm11dGFibGVEYXRhKCksIDAsIGJ5dGVzKTsKICAgICAgICAgZ3N0X2FkYXB0ZXJf
Zmx1c2goYWRhcHRlciwgYnl0ZXMpOwogICAgIH0gZWxzZQpAQCAtODgsMzUgKzgxLDIzIEBAIHN0
YXRpYyB2b2lkIGNvcHlHU3RyZWFtZXJCdWZmZXJzVG9BdWRpb0NoYW5uZWwoR3N0QWRhcHRlciog
YWRhcHRlciwgQXVkaW9CdXMqIGJ1CiAKIEF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXI6OkF1
ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIoKQogICAgIDogbV9ub3RpZmllcihNYWluVGhyZWFk
Tm90aWZpZXI8TWFpblRocmVhZE5vdGlmaWNhdGlvbj46OmNyZWF0ZSgpKQotICAgICwgbV9jbGll
bnQobnVsbHB0cikKLSAgICAsIG1fZGVpbnRlcmxlYXZlU291cmNlUGFkcygwKQotICAgICwgbV9k
ZWludGVybGVhdmVQYWRBZGRlZEhhbmRsZXJJZCgwKQotICAgICwgbV9kZWludGVybGVhdmVOb01v
cmVQYWRzSGFuZGxlcklkKDApCi0gICAgLCBtX2RlaW50ZXJsZWF2ZVBhZFJlbW92ZWRIYW5kbGVy
SWQoMCkKIHsKLSAgICBtX2Zyb250TGVmdEFkYXB0ZXIgPSBnc3RfYWRhcHRlcl9uZXcoKTsKLSAg
ICBtX2Zyb250UmlnaHRBZGFwdGVyID0gZ3N0X2FkYXB0ZXJfbmV3KCk7CisgICAgaW5pdGlhbGl6
ZURlYnVnQ2F0ZWdvcnkoKTsKIH0KIAotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShM
SUJXRUJSVEMpCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIEF1ZGlvU291cmNlUHJvdmlkZXJH
U3RyZWFtZXI6OkF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIoTWVkaWFTdHJlYW1UcmFja1By
aXZhdGUmIHNvdXJjZSkKICAgICA6IG1fbm90aWZpZXIoTWFpblRocmVhZE5vdGlmaWVyPE1haW5U
aHJlYWROb3RpZmljYXRpb24+OjpjcmVhdGUoKSkKLSAgICAsIG1fY2xpZW50KG51bGxwdHIpCi0g
ICAgLCBtX2RlaW50ZXJsZWF2ZVNvdXJjZVBhZHMoMCkKLSAgICAsIG1fZGVpbnRlcmxlYXZlUGFk
QWRkZWRIYW5kbGVySWQoMCkKLSAgICAsIG1fZGVpbnRlcmxlYXZlTm9Nb3JlUGFkc0hhbmRsZXJJ
ZCgwKQotICAgICwgbV9kZWludGVybGVhdmVQYWRSZW1vdmVkSGFuZGxlcklkKDApCiB7Ci0gICAg
bV9mcm9udExlZnRBZGFwdGVyID0gZ3N0X2FkYXB0ZXJfbmV3KCk7Ci0gICAgbV9mcm9udFJpZ2h0
QWRhcHRlciA9IGdzdF9hZGFwdGVyX25ldygpOworICAgIGluaXRpYWxpemVEZWJ1Z0NhdGVnb3J5
KCk7CiAgICAgYXV0byBwaXBlbGluZU5hbWUgPSBtYWtlU3RyaW5nKCJXZWJBdWRpb1Byb3ZpZGVy
X01lZGlhU3RyZWFtVHJhY2tfIiwgc291cmNlLmlkKCkpOwotICAgIG1fcGlwZWxpbmUgPSBhZG9w
dEdSZWYoR1NUX0VMRU1FTlQoZ19vYmplY3RfcmVmX3NpbmsoZ3N0X2VsZW1lbnRfZmFjdG9yeV9t
YWtlKCJwaXBlbGluZSIsIHBpcGVsaW5lTmFtZS51dGY4KCkuZGF0YSgpKSkpKTsKKyAgICBtX3Bp
cGVsaW5lID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJwaXBlbGluZSIsIHBpcGVsaW5lTmFt
ZS51dGY4KCkuZGF0YSgpKTsKICAgICBhdXRvIHNyYyA9IHdlYmtpdE1lZGlhU3RyZWFtU3JjTmV3
KCk7CiAgICAgd2Via2l0TWVkaWFTdHJlYW1TcmNBZGRUcmFjayhXRUJLSVRfTUVESUFfU1RSRUFN
X1NSQyhzcmMpLCAmc291cmNlLCB0cnVlKTsKIAotICAgIG1fYXVkaW9TaW5rQmluID0gYWRvcHRH
UmVmKEdTVF9FTEVNRU5UKGdfb2JqZWN0X3JlZl9zaW5rKGdzdF9wYXJzZV9iaW5fZnJvbV9kZXNj
cmlwdGlvbigidGVlIG5hbWU9YXVkaW9UZWUiLCB0cnVlLCBudWxscHRyKSkpKTsKKyAgICBtX2F1
ZGlvU2lua0JpbiA9IGdzdF9wYXJzZV9iaW5fZnJvbV9kZXNjcmlwdGlvbigidGVlIG5hbWU9YXVk
aW9UZWUiLCB0cnVlLCBudWxscHRyKTsKIAotICAgIGdzdF9iaW5fYWRkX21hbnkoR1NUX0JJTiht
X3BpcGVsaW5lLmdldCgpKSwgc3JjLCBtX2F1ZGlvU2lua0Jpbi5nZXQoKSwgbnVsbHB0cik7Cisg
ICAgZ3N0X2Jpbl9hZGRfbWFueShHU1RfQklOX0NBU1QobV9waXBlbGluZS5nZXQoKSksIHNyYywg
bV9hdWRpb1NpbmtCaW4uZ2V0KCksIG51bGxwdHIpOwogICAgIGdzdF9lbGVtZW50X2xpbmsoc3Jj
LCBtX2F1ZGlvU2lua0Jpbi5nZXQoKSk7CiAKICAgICBjb25uZWN0U2ltcGxlQnVzTWVzc2FnZUNh
bGxiYWNrKG1fcGlwZWxpbmUuZ2V0KCkpOwpAQCAtMTM0LDExICsxMTUsMTAgQEAgQXVkaW9Tb3Vy
Y2VQcm92aWRlckdTdHJlYW1lcjo6fkF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIoKQogICAg
ICAgICBnX3NpZ25hbF9oYW5kbGVyX2Rpc2Nvbm5lY3QoZGVpbnRlcmxlYXZlLmdldCgpLCBtX2Rl
aW50ZXJsZWF2ZVBhZFJlbW92ZWRIYW5kbGVySWQpOwogICAgIH0KIAorI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCiAgICAgaWYgKG1fcGlwZWxpbmUpCiAgICAgICAgIGdzdF9lbGVtZW50X3NldF9z
dGF0ZShtX3BpcGVsaW5lLmdldCgpLCBHU1RfU1RBVEVfTlVMTCk7Ci0KLSAgICBnX29iamVjdF91
bnJlZihtX2Zyb250TGVmdEFkYXB0ZXIpOwotICAgIGdfb2JqZWN0X3VucmVmKG1fZnJvbnRSaWdo
dEFkYXB0ZXIpOworI2VuZGlmCiB9CiAKIHZvaWQgQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1l
cjo6Y29uZmlndXJlQXVkaW9CaW4oR3N0RWxlbWVudCogYXVkaW9CaW4sIEdzdEVsZW1lbnQqIGF1
ZGlvU2luaykKQEAgLTE3NCw0OCArMTU0LDM2IEBAIHZvaWQgQXVkaW9Tb3VyY2VQcm92aWRlckdT
dHJlYW1lcjo6Y29uZmlndXJlQXVkaW9CaW4oR3N0RWxlbWVudCogYXVkaW9CaW4sIEdzdEVsCiB2
b2lkIEF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXI6OnByb3ZpZGVJbnB1dChBdWRpb0J1cyog
YnVzLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQogewogICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2sobV9hZGFwdGVyTXV0ZXgpOwotICAgIGNvcHlHU3RyZWFtZXJCdWZmZXJzVG9BdWRpb0NoYW5u
ZWwobV9mcm9udExlZnRBZGFwdGVyLCBidXMsIDAsIGZyYW1lc1RvUHJvY2Vzcyk7Ci0gICAgY29w
eUdTdHJlYW1lckJ1ZmZlcnNUb0F1ZGlvQ2hhbm5lbChtX2Zyb250UmlnaHRBZGFwdGVyLCBidXMs
IDEsIGZyYW1lc1RvUHJvY2Vzcyk7CisgICAgZm9yIChhdXRvJiBpdCA6IG1fYWRhcHRlcnMpCisg
ICAgICAgIGNvcHlHU3RyZWFtZXJCdWZmZXJzVG9BdWRpb0NoYW5uZWwoaXQudmFsdWUuZ2V0KCks
IGJ1cywgaXQua2V5IC0gMSwgZnJhbWVzVG9Qcm9jZXNzKTsKIH0KIAotR3N0Rmxvd1JldHVybiBB
dWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyOjpoYW5kbGVBdWRpb0J1ZmZlcihHc3RBcHBTaW5r
KiBzaW5rKQorR3N0Rmxvd1JldHVybiBBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyOjpoYW5k
bGVTYW1wbGUoR3N0QXBwU2luayogc2luaywgYm9vbCBpc1ByZXJvbGwpCiB7Ci0gICAgaWYgKCFt
X2NsaWVudCkKLSAgICAgICAgcmV0dXJuIEdTVF9GTE9XX09LOwotCi0gICAgLy8gUHVsbCBhIGJ1
ZmZlciBmcm9tIGFwcHNpbmsgYW5kIHN0b3JlIGl0IHRoZSBhcHByb3ByaWF0ZSBidWZmZXIKLSAg
ICAvLyBsaXN0IGZvciB0aGUgYXVkaW8gY2hhbm5lbCBpdCByZXByZXNlbnRzLgotICAgIEdSZWZQ
dHI8R3N0U2FtcGxlPiBzYW1wbGUgPSBhZG9wdEdSZWYoZ3N0X2FwcF9zaW5rX3B1bGxfc2FtcGxl
KHNpbmspKTsKKyAgICBhdXRvIHNhbXBsZSA9IGFkb3B0R1JlZihpc1ByZXJvbGwgPyBnc3RfYXBw
X3NpbmtfdHJ5X3B1bGxfcHJlcm9sbChzaW5rLCAwKSA6IGdzdF9hcHBfc2lua190cnlfcHVsbF9z
YW1wbGUoc2luaywgMCkpOwogICAgIGlmICghc2FtcGxlKQogICAgICAgICByZXR1cm4gZ3N0X2Fw
cF9zaW5rX2lzX2VvcyhzaW5rKSA/IEdTVF9GTE9XX0VPUyA6IEdTVF9GTE9XX0VSUk9SOwogCisg
ICAgaWYgKCFtX2NsaWVudCkKKyAgICAgICAgcmV0dXJuIEdTVF9GTE9XX09LOworCiAgICAgR3N0
QnVmZmVyKiBidWZmZXIgPSBnc3Rfc2FtcGxlX2dldF9idWZmZXIoc2FtcGxlLmdldCgpKTsKICAg
ICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIEdTVF9GTE9XX0VSUk9SOwogCi0gICAgR3N0
Q2FwcyogY2FwcyA9IGdzdF9zYW1wbGVfZ2V0X2NhcHMoc2FtcGxlLmdldCgpKTsKLSAgICBpZiAo
IWNhcHMpCi0gICAgICAgIHJldHVybiBHU1RfRkxPV19FUlJPUjsKLQotICAgIEdzdEF1ZGlvSW5m
byBpbmZvOwotICAgIGdzdF9hdWRpb19pbmZvX2Zyb21fY2FwcygmaW5mbywgY2Fwcyk7Ci0KLSAg
ICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fYWRhcHRlck11dGV4KTsKLQotICAgIC8vIENoZWNr
IHRoZSBmaXJzdCBhdWRpbyBjaGFubmVsLiBUaGUgYnVmZmVyIGlzIHN1cHBvc2VkIHRvIHN0b3Jl
Ci0gICAgLy8gZGF0YSBvZiBhIHNpbmdsZSBjaGFubmVsIGFueXdheS4KLSAgICBzd2l0Y2ggKEdT
VF9BVURJT19JTkZPX1BPU0lUSU9OKCZpbmZvLCAwKSkgewotICAgIGNhc2UgR1NUX0FVRElPX0NI
QU5ORUxfUE9TSVRJT05fRlJPTlRfTEVGVDoKLSAgICBjYXNlIEdTVF9BVURJT19DSEFOTkVMX1BP
U0lUSU9OX01PTk86Ci0gICAgICAgIGdzdF9hZGFwdGVyX3B1c2gobV9mcm9udExlZnRBZGFwdGVy
LCBnc3RfYnVmZmVyX3JlZihidWZmZXIpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBHU1Rf
QVVESU9fQ0hBTk5FTF9QT1NJVElPTl9GUk9OVF9SSUdIVDoKLSAgICAgICAgZ3N0X2FkYXB0ZXJf
cHVzaChtX2Zyb250UmlnaHRBZGFwdGVyLCBnc3RfYnVmZmVyX3JlZihidWZmZXIpKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgYnJlYWs7CisgICAgeworICAgICAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fYWRhcHRlck11dGV4KTsKKyAgICAgICAgR1F1YXJrIHF1
YXJrID0gZ19xdWFya19mcm9tX3N0YXRpY19zdHJpbmcoImNoYW5uZWwtaWQiKTsKKyAgICAgICAg
aW50IGNoYW5uZWxJZCA9IEdQT0lOVEVSX1RPX0lOVChnX29iamVjdF9nZXRfcWRhdGEoR19PQkpF
Q1Qoc2luayksIHF1YXJrKSk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gbV9hZGFwdGVycy5lbnN1
cmUoY2hhbm5lbElkLCBbJl0geworICAgICAgICAgICAgcmV0dXJuIGdzdF9hZGFwdGVyX25ldygp
OworICAgICAgICB9KTsKKyAgICAgICAgYXV0byogYWRhcHRlciA9IHJlc3VsdC5pdGVyYXRvci0+
dmFsdWUuZ2V0KCk7CisgICAgICAgIGdzdF9hZGFwdGVyX3B1c2goYWRhcHRlciwgZ3N0X2J1ZmZl
cl9yZWYoYnVmZmVyKSk7CiAgICAgfQogCisgICAgaWYgKGdzdF9hcHBfc2lua19pc19lb3Moc2lu
aykpCisgICAgICAgIHJldHVybiBHU1RfRkxPV19FT1M7CiAgICAgcmV0dXJuIEdTVF9GTE9XX09L
OwogfQogCkBAIC0yMjcsOCArMTk1LDEwIEBAIHZvaWQgQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJl
YW1lcjo6c2V0Q2xpZW50KEF1ZGlvU291cmNlUHJvdmlkZXJDbGllbnQqIGNsaWVudCkKICAgICBB
U1NFUlQoY2xpZW50KTsKICAgICBtX2NsaWVudCA9IGNsaWVudDsKIAorI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCiAgICAgaWYgKG1fcGlwZWxpbmUpCiAgICAgICAgIGdzdF9lbGVtZW50X3NldF9z
dGF0ZShtX3BpcGVsaW5lLmdldCgpLCBHU1RfU1RBVEVfUExBWUlORyk7CisjZW5kaWYKIAogICAg
IC8vIFRoZSB2b2x1bWUgZWxlbWVudCBpcyB1c2VkIHRvIG11dGUgYXVkaW8gcGxheWJhY2sgdG93
YXJkcyB0aGUKICAgICAvLyBhdXRvYXVkaW9zaW5rLiBUaGlzIGlzIG5lZWRlZCB0byBhdm9pZCBk
b3VibGUgcGxheWJhY2sgb2YgYXVkaW8KQEAgLTI1MywxNyArMjIzLDEzIEBAIHZvaWQgQXVkaW9T
b3VyY2VQcm92aWRlckdTdHJlYW1lcjo6c2V0Q2xpZW50KEF1ZGlvU291cmNlUHJvdmlkZXJDbGll
bnQqIGNsaWVudCkKICAgICBtX2RlaW50ZXJsZWF2ZU5vTW9yZVBhZHNIYW5kbGVySWQgPSBnX3Np
Z25hbF9jb25uZWN0KGRlSW50ZXJsZWF2ZSwgIm5vLW1vcmUtcGFkcyIsIEdfQ0FMTEJBQ0sob25H
U3RyZWFtZXJEZWludGVybGVhdmVSZWFkeUNhbGxiYWNrKSwgdGhpcyk7CiAgICAgbV9kZWludGVy
bGVhdmVQYWRSZW1vdmVkSGFuZGxlcklkID0gZ19zaWduYWxfY29ubmVjdChkZUludGVybGVhdmUs
ICJwYWQtcmVtb3ZlZCIsIEdfQ0FMTEJBQ0sob25HU3RyZWFtZXJEZWludGVybGVhdmVQYWRSZW1v
dmVkQ2FsbGJhY2spLCB0aGlzKTsKIAotICAgIEdzdENhcHMqIGNhcHMgPSBnc3RfY2Fwc19uZXdf
c2ltcGxlKCJhdWRpby94LXJhdyIsICJyYXRlIiwgR19UWVBFX0lOVCwgc3RhdGljX2Nhc3Q8aW50
PihnU2FtcGxlQml0UmF0ZSksCi0gICAgICAgICJjaGFubmVscyIsIEdfVFlQRV9JTlQsIGdOdW1i
ZXJPZkNoYW5uZWxzLAotICAgICAgICAiZm9ybWF0IiwgR19UWVBFX1NUUklORywgR1NUX0FVRElP
X05FKEYzMiksCi0gICAgICAgICJsYXlvdXQiLCBHX1RZUEVfU1RSSU5HLCAiaW50ZXJsZWF2ZWQi
LCBudWxscHRyKTsKLQotICAgIGdfb2JqZWN0X3NldChjYXBzRmlsdGVyLCAiY2FwcyIsIGNhcHMs
IG51bGxwdHIpOwotICAgIGdzdF9jYXBzX3VucmVmKGNhcHMpOworICAgIGF1dG8gY2FwcyA9IGFk
b3B0R1JlZihnc3RfY2Fwc19uZXdfc2ltcGxlKCJhdWRpby94LXJhdyIsICJyYXRlIiwgR19UWVBF
X0lOVCwgc3RhdGljX2Nhc3Q8aW50PihnU2FtcGxlQml0UmF0ZSksCisgICAgICAgICJmb3JtYXQi
LCBHX1RZUEVfU1RSSU5HLCBHU1RfQVVESU9fTkUoRjMyKSwgImxheW91dCIsIEdfVFlQRV9TVFJJ
TkcsICJpbnRlcmxlYXZlZCIsIG51bGxwdHIpKTsKKyAgICBnX29iamVjdF9zZXQoY2Fwc0ZpbHRl
ciwgImNhcHMiLCBjYXBzLmdldCgpLCBudWxscHRyKTsKIAotICAgIGdzdF9iaW5fYWRkX21hbnko
R1NUX0JJTihtX2F1ZGlvU2lua0Jpbi5nZXQoKSksIGF1ZGlvUXVldWUsIGF1ZGlvQ29udmVydCwg
YXVkaW9SZXNhbXBsZSwgY2Fwc0ZpbHRlciwgZGVJbnRlcmxlYXZlLCBudWxscHRyKTsKKyAgICBn
c3RfYmluX2FkZF9tYW55KEdTVF9CSU5fQ0FTVChtX2F1ZGlvU2lua0Jpbi5nZXQoKSksIGF1ZGlv
UXVldWUsIGF1ZGlvQ29udmVydCwgYXVkaW9SZXNhbXBsZSwgY2Fwc0ZpbHRlciwgZGVJbnRlcmxl
YXZlLCBudWxscHRyKTsKIAotICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gYXVkaW9UZWUgPSBhZG9w
dEdSZWYoZ3N0X2Jpbl9nZXRfYnlfbmFtZShHU1RfQklOKG1fYXVkaW9TaW5rQmluLmdldCgpKSwg
ImF1ZGlvVGVlIikpOworICAgIGF1dG8gYXVkaW9UZWUgPSBhZG9wdEdSZWYoZ3N0X2Jpbl9nZXRf
YnlfbmFtZShHU1RfQklOKG1fYXVkaW9TaW5rQmluLmdldCgpKSwgImF1ZGlvVGVlIikpOwogCiAg
ICAgLy8gTGluayBhIG5ldyBzcmMgcGFkIGZyb20gdGVlIHRvIHF1ZXVlICEgYXVkaW9jb252ZXJ0
ICEKICAgICAvLyBhdWRpb3Jlc2FtcGxlICEgY2Fwc2ZpbHRlciAhIGRlaW50ZXJsZWF2ZS4gTGF0
ZXIKQEAgLTI4NCw5MSArMjUwLDc4IEBAIHZvaWQgQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1l
cjo6c2V0Q2xpZW50KEF1ZGlvU291cmNlUHJvdmlkZXJDbGllbnQqIGNsaWVudCkKIAogdm9pZCBB
dWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyOjpoYW5kbGVOZXdEZWludGVybGVhdmVQYWQoR3N0
UGFkKiBwYWQpCiB7Ci0gICAgbV9kZWludGVybGVhdmVTb3VyY2VQYWRzKys7Ci0KLSAgICBpZiAo
bV9kZWludGVybGVhdmVTb3VyY2VQYWRzID4gMikgewotICAgICAgICBnX3dhcm5pbmcoIlRoZSBB
dWRpb1NvdXJjZVByb3ZpZGVyIHN1cHBvcnRzIG9ubHkgbW9ubyBhbmQgc3RlcmVvIGF1ZGlvLiBT
aWxlbmNpbmcgb3V0IHRoaXMgbmV3IGNoYW5uZWwuIik7Ci0gICAgICAgIEdzdEVsZW1lbnQqIHF1
ZXVlID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJxdWV1ZSIsIG51bGxwdHIpOwotICAgICAg
ICBHc3RFbGVtZW50KiBzaW5rID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJmYWtlc2luayIs
IG51bGxwdHIpOwotICAgICAgICBnX29iamVjdF9zZXQoc2luaywgImFzeW5jIiwgRkFMU0UsIG51
bGxwdHIpOwotICAgICAgICBnc3RfYmluX2FkZF9tYW55KEdTVF9CSU4obV9hdWRpb1NpbmtCaW4u
Z2V0KCkpLCBxdWV1ZSwgc2luaywgbnVsbHB0cik7Ci0KLSAgICAgICAgR1JlZlB0cjxHc3RQYWQ+
IHNpbmtQYWQgPSBhZG9wdEdSZWYoZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQocXVldWUsICJz
aW5rIikpOwotICAgICAgICBnc3RfcGFkX2xpbmtfZnVsbChwYWQsIHNpbmtQYWQuZ2V0KCksIEdT
VF9QQURfTElOS19DSEVDS19OT1RISU5HKTsKLQotICAgICAgICBHUXVhcmsgcXVhcmsgPSBnX3F1
YXJrX2Zyb21fc3RhdGljX3N0cmluZygicGVlciIpOwotICAgICAgICBnX29iamVjdF9zZXRfcWRh
dGEoR19PQkpFQ1QocGFkKSwgcXVhcmssIHNpbmtQYWQuZ2V0KCkpOwotICAgICAgICBnc3RfZWxl
bWVudF9saW5rX3BhZHNfZnVsbChxdWV1ZSwgInNyYyIsIHNpbmssICJzaW5rIiwgR1NUX1BBRF9M
SU5LX0NIRUNLX05PVEhJTkcpOwotICAgICAgICBnc3RfZWxlbWVudF9zeW5jX3N0YXRlX3dpdGhf
cGFyZW50KHF1ZXVlKTsKLSAgICAgICAgZ3N0X2VsZW1lbnRfc3luY19zdGF0ZV93aXRoX3BhcmVu
dChzaW5rKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBHU1RfREVCVUcoIk5ldyBwYWQg
JSIgR1NUX1BUUl9GT1JNQVQsIHBhZCk7CiAKICAgICAvLyBBIG5ldyBwYWQgZm9yIGEgcGxhbmFy
IGNoYW5uZWwgd2FzIGFkZGVkIGluIGRlaW50ZXJsZWF2ZS4gUGx1ZwogICAgIC8vIGluIGFuIGFw
cHNpbmsgc28gd2UgY2FuIHB1bGwgdGhlIGRhdGEgZnJvbSBlYWNoCiAgICAgLy8gY2hhbm5lbC4g
UGlwZWxpbmUgbG9va3MgbGlrZToKLSAgICAvLyAuLi4gZGVpbnRlcmxlYXZlICEgcXVldWUgISBh
cHBzaW5rLgotICAgIEdzdEVsZW1lbnQqIHF1ZXVlID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtl
KCJxdWV1ZSIsIG51bGxwdHIpOworICAgIC8vIC4uLiBkZWludGVybGVhdmUgISBhcHBzaW5rLgog
ICAgIEdzdEVsZW1lbnQqIHNpbmsgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoImFwcHNpbmsi
LCBudWxscHRyKTsKIAotICAgIEdzdEFwcFNpbmtDYWxsYmFja3MgY2FsbGJhY2tzOwotICAgIGNh
bGxiYWNrcy5lb3MgPSBudWxscHRyOwotICAgIGNhbGxiYWNrcy5uZXdfcHJlcm9sbCA9IG51bGxw
dHI7Ci0gICAgY2FsbGJhY2tzLm5ld19zYW1wbGUgPSBvbkFwcHNpbmtOZXdCdWZmZXJDYWxsYmFj
azsKKyAgICBzdGF0aWMgR3N0QXBwU2lua0NhbGxiYWNrcyBjYWxsYmFja3MgPSB7CisgICAgICAg
IG51bGxwdHIsCisgICAgICAgIFtdKEdzdEFwcFNpbmsqIHNpbmssIGdwb2ludGVyIHVzZXJEYXRh
KSAtPiBHc3RGbG93UmV0dXJuIHsKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxBdWRp
b1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyKj4odXNlckRhdGEpLT5oYW5kbGVTYW1wbGUoc2luaywg
dHJ1ZSk7CisgICAgICAgIH0sCisgICAgICAgIFtdKEdzdEFwcFNpbmsqIHNpbmssIGdwb2ludGVy
IHVzZXJEYXRhKSAtPiBHc3RGbG93UmV0dXJuIHsKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyKj4odXNlckRhdGEpLT5oYW5kbGVTYW1w
bGUoc2luaywgZmFsc2UpOworICAgICAgICB9LAorICAgICAgICB7IG51bGxwdHIgfQorICAgIH07
CiAgICAgZ3N0X2FwcF9zaW5rX3NldF9jYWxsYmFja3MoR1NUX0FQUF9TSU5LKHNpbmspLCAmY2Fs
bGJhY2tzLCB0aGlzLCBudWxscHRyKTsKLQogICAgIGdfb2JqZWN0X3NldChzaW5rLCAiYXN5bmMi
LCBGQUxTRSwgbnVsbHB0cik7CiAKLSAgICBHUmVmUHRyPEdzdENhcHM+IGNhcHMgPSBhZG9wdEdS
ZWYoZ3N0X2NhcHNfbmV3X3NpbXBsZSgiYXVkaW8veC1yYXciLCAicmF0ZSIsIEdfVFlQRV9JTlQs
IHN0YXRpY19jYXN0PGludD4oZ1NhbXBsZUJpdFJhdGUpLAotICAgICAgICAiY2hhbm5lbHMiLCBH
X1RZUEVfSU5ULCAxLAotICAgICAgICAiZm9ybWF0IiwgR19UWVBFX1NUUklORywgR1NUX0FVRElP
X05FKEYzMiksCi0gICAgICAgICJsYXlvdXQiLCBHX1RZUEVfU1RSSU5HLCAiaW50ZXJsZWF2ZWQi
LCBudWxscHRyKSk7Ci0KKyAgICBhdXRvIGNhcHMgPSBhZG9wdEdSZWYoZ3N0X2NhcHNfbmV3X3Np
bXBsZSgiYXVkaW8veC1yYXciLCAicmF0ZSIsIEdfVFlQRV9JTlQsIHN0YXRpY19jYXN0PGludD4o
Z1NhbXBsZUJpdFJhdGUpLAorICAgICAgICAiY2hhbm5lbHMiLCBHX1RZUEVfSU5ULCAxLCAiZm9y
bWF0IiwgR19UWVBFX1NUUklORywgR1NUX0FVRElPX05FKEYzMiksICJsYXlvdXQiLCBHX1RZUEVf
U1RSSU5HLCAiaW50ZXJsZWF2ZWQiLCBudWxscHRyKSk7CiAgICAgZ3N0X2FwcF9zaW5rX3NldF9j
YXBzKEdTVF9BUFBfU0lOSyhzaW5rKSwgY2Fwcy5nZXQoKSk7CiAKLSAgICBnc3RfYmluX2FkZF9t
YW55KEdTVF9CSU4obV9hdWRpb1NpbmtCaW4uZ2V0KCkpLCBxdWV1ZSwgc2luaywgbnVsbHB0cik7
CisgICAgZ3N0X2Jpbl9hZGQoR1NUX0JJTl9DQVNUKG1fYXVkaW9TaW5rQmluLmdldCgpKSwgc2lu
ayk7CiAKLSAgICBHUmVmUHRyPEdzdFBhZD4gc2lua1BhZCA9IGFkb3B0R1JlZihnc3RfZWxlbWVu
dF9nZXRfc3RhdGljX3BhZChxdWV1ZSwgInNpbmsiKSk7CisgICAgYXV0byBzaW5rUGFkID0gYWRv
cHRHUmVmKGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkKHNpbmssICJzaW5rIikpOwogICAgIGdz
dF9wYWRfbGlua19mdWxsKHBhZCwgc2lua1BhZC5nZXQoKSwgR1NUX1BBRF9MSU5LX0NIRUNLX05P
VEhJTkcpOwogCiAgICAgR1F1YXJrIHF1YXJrID0gZ19xdWFya19mcm9tX3N0YXRpY19zdHJpbmco
InBlZXIiKTsKICAgICBnX29iamVjdF9zZXRfcWRhdGEoR19PQkpFQ1QocGFkKSwgcXVhcmssIHNp
bmtQYWQuZ2V0KCkpOwogCi0gICAgZ3N0X2VsZW1lbnRfbGlua19wYWRzX2Z1bGwocXVldWUsICJz
cmMiLCBzaW5rLCAic2luayIsIEdTVF9QQURfTElOS19DSEVDS19OT1RISU5HKTsKKyAgICBtX2Rl
aW50ZXJsZWF2ZVNvdXJjZVBhZHMrKzsKKyAgICBHUXVhcmsgY2hhbm5lbElkUXVhcmsgPSBnX3F1
YXJrX2Zyb21fc3RhdGljX3N0cmluZygiY2hhbm5lbC1pZCIpOworICAgIGdfb2JqZWN0X3NldF9x
ZGF0YShHX09CSkVDVChzaW5rKSwgY2hhbm5lbElkUXVhcmssIEdJTlRfVE9fUE9JTlRFUihtX2Rl
aW50ZXJsZWF2ZVNvdXJjZVBhZHMpKTsKIAogICAgIHNpbmtQYWQgPSBhZG9wdEdSZWYoZ3N0X2Vs
ZW1lbnRfZ2V0X3N0YXRpY19wYWQoc2luaywgInNpbmsiKSk7Ci0gICAgZ3N0X3BhZF9hZGRfcHJv
YmUoc2lua1BhZC5nZXQoKSwgR1NUX1BBRF9QUk9CRV9UWVBFX0VWRU5UX0ZMVVNILCBvbkFwcHNp
bmtGbHVzaENhbGxiYWNrLCB0aGlzLCBudWxscHRyKTsKKyAgICBnc3RfcGFkX2FkZF9wcm9iZShz
aW5rUGFkLmdldCgpLCBHU1RfUEFEX1BST0JFX1RZUEVfRVZFTlRfRkxVU0gsIFtdKEdzdFBhZCos
IEdzdFBhZFByb2JlSW5mbyogaW5mbywgZ3BvaW50ZXIgdXNlckRhdGEpIHsKKyAgICAgICAgaWYg
KEdTVF9QQURfUFJPQkVfSU5GT19UWVBFKGluZm8pICYgKEdTVF9QQURfUFJPQkVfVFlQRV9FVkVO
VF9ET1dOU1RSRUFNIHwgR1NUX1BBRF9QUk9CRV9UWVBFX0VWRU5UX0ZMVVNIKSkgeworICAgICAg
ICAgICAgR3N0RXZlbnQqIGV2ZW50ID0gR1NUX1BBRF9QUk9CRV9JTkZPX0VWRU5UKGluZm8pOwor
ICAgICAgICAgICAgaWYgKEdTVF9FVkVOVF9UWVBFKGV2ZW50KSA9PSBHU1RfRVZFTlRfRkxVU0hf
U1RPUCkgeworICAgICAgICAgICAgICAgIGF1dG8qIHByb3ZpZGVyID0gcmVpbnRlcnByZXRfY2Fz
dDxBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyKj4odXNlckRhdGEpOworICAgICAgICAgICAg
ICAgIHByb3ZpZGVyLT5jbGVhckFkYXB0ZXJzKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIEdTVF9QQURfUFJPQkVfT0s7CisgICAgfSwgdGhpcywgbnVsbHB0cik7
CiAKLSAgICBnc3RfZWxlbWVudF9zeW5jX3N0YXRlX3dpdGhfcGFyZW50KHF1ZXVlKTsKICAgICBn
c3RfZWxlbWVudF9zeW5jX3N0YXRlX3dpdGhfcGFyZW50KHNpbmspOwogfQogCiB2b2lkIEF1ZGlv
U291cmNlUHJvdmlkZXJHU3RyZWFtZXI6OmhhbmRsZVJlbW92ZWREZWludGVybGVhdmVQYWQoR3N0
UGFkKiBwYWQpCiB7CisgICAgR1NUX0RFQlVHKCJQYWQgJSIgR1NUX1BUUl9GT1JNQVQgIiBnb25l
IiwgcGFkKTsKICAgICBtX2RlaW50ZXJsZWF2ZVNvdXJjZVBhZHMtLTsKIAotICAgIC8vIFJlbW92
ZSB0aGUgcXVldWUgISBhcHBzaW5rIGNoYWluIGRvd25zdHJlYW0gb2YgZGVpbnRlcmxlYXZlLgog
ICAgIEdRdWFyayBxdWFyayA9IGdfcXVhcmtfZnJvbV9zdGF0aWNfc3RyaW5nKCJwZWVyIik7CiAg
ICAgR3N0UGFkKiBzaW5rUGFkID0gR1NUX1BBRF9DQVNUKGdfb2JqZWN0X2dldF9xZGF0YShHX09C
SkVDVChwYWQpLCBxdWFyaykpOwogICAgIGlmICghc2lua1BhZCkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgR1JlZlB0cjxHc3RFbGVtZW50PiBxdWV1ZSA9IGFkb3B0R1JlZihnc3RfcGFkX2dldF9w
YXJlbnRfZWxlbWVudChzaW5rUGFkKSk7Ci0gICAgR1JlZlB0cjxHc3RQYWQ+IHF1ZXVlU3JjUGFk
ID0gYWRvcHRHUmVmKGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkKHF1ZXVlLmdldCgpLCAic3Jj
IikpOwotICAgIEdSZWZQdHI8R3N0UGFkPiBhcHBzaW5rU2lua1BhZCA9IGFkb3B0R1JlZihnc3Rf
cGFkX2dldF9wZWVyKHF1ZXVlU3JjUGFkLmdldCgpKSk7Ci0gICAgR1JlZlB0cjxHc3RFbGVtZW50
PiBzaW5rID0gYWRvcHRHUmVmKGdzdF9wYWRfZ2V0X3BhcmVudF9lbGVtZW50KGFwcHNpbmtTaW5r
UGFkLmdldCgpKSk7CisgICAgYXV0byBzaW5rID0gYWRvcHRHUmVmKGdzdF9wYWRfZ2V0X3BhcmVu
dF9lbGVtZW50KHNpbmtQYWQpKTsKICAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUoc2luay5nZXQo
KSwgR1NUX1NUQVRFX05VTEwpOwotICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShxdWV1ZS5nZXQo
KSwgR1NUX1NUQVRFX05VTEwpOwotICAgIGdzdF9lbGVtZW50X3VubGluayhxdWV1ZS5nZXQoKSwg
c2luay5nZXQoKSk7Ci0gICAgZ3N0X2Jpbl9yZW1vdmVfbWFueShHU1RfQklOKG1fYXVkaW9TaW5r
QmluLmdldCgpKSwgcXVldWUuZ2V0KCksIHNpbmsuZ2V0KCksIG51bGxwdHIpOworICAgIGdzdF9i
aW5fcmVtb3ZlKEdTVF9CSU5fQ0FTVChtX2F1ZGlvU2lua0Jpbi5nZXQoKSksIHNpbmsuZ2V0KCkp
OwogfQogCiB2b2lkIEF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXI6OmRlaW50ZXJsZWF2ZVBh
ZHNDb25maWd1cmVkKCkKIHsKKyAgICBHU1RfREVCVUcoIkRlaW50ZXJsZWF2ZSBjb25maWd1cmVk
LCBub3RpZnlpbmcgY2xpZW50Iik7CiAgICAgbV9ub3RpZmllci0+bm90aWZ5KE1haW5UaHJlYWRO
b3RpZmljYXRpb246OkRlaW50ZXJsZWF2ZVBhZHNDb25maWd1cmVkLCBbdGhpc10gewogICAgICAg
ICBBU1NFUlQobV9jbGllbnQpOwotICAgICAgICBBU1NFUlQobV9kZWludGVybGVhdmVTb3VyY2VQ
YWRzID09IGdOdW1iZXJPZkNoYW5uZWxzKTsKLQogICAgICAgICBtX2NsaWVudC0+c2V0Rm9ybWF0
KG1fZGVpbnRlcmxlYXZlU291cmNlUGFkcywgZ1NhbXBsZUJpdFJhdGUpOwogICAgIH0pOwogfQpA
QCAtMzc2LDggKzMyOSw4IEBAIHZvaWQgQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lcjo6ZGVp
bnRlcmxlYXZlUGFkc0NvbmZpZ3VyZWQoKQogdm9pZCBBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVh
bWVyOjpjbGVhckFkYXB0ZXJzKCkKIHsKICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fYWRh
cHRlck11dGV4KTsKLSAgICBnc3RfYWRhcHRlcl9jbGVhcihtX2Zyb250TGVmdEFkYXB0ZXIpOwot
ICAgIGdzdF9hZGFwdGVyX2NsZWFyKG1fZnJvbnRSaWdodEFkYXB0ZXIpOworICAgIGZvciAoYXV0
byYgYWRhcHRlciA6IG1fYWRhcHRlcnMudmFsdWVzKCkpCisgICAgICAgIGdzdF9hZGFwdGVyX2Ns
ZWFyKGFkYXB0ZXIuZ2V0KCkpOwogfQogCiB9IC8vIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb1NvdXJjZVByb3ZpZGVyR1N0
cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9T
b3VyY2VQcm92aWRlckdTdHJlYW1lci5oCmluZGV4IGU0ZjY1MTJmMTJhMDNmMTM5YzQzN2RjMjBk
NzE3MjRiMWQ0YjIzNzAuLjExZWYyYWVlNzNjM2RmZWEyMGMyZmU3MDM1OTkyODJmMWJmZWY1NmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRp
b1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vZ3N0cmVhbWVyL0F1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIuaApAQCAtMTYsOCAr
MTYsNyBAQAogICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQogICovCiAKLSNpZm5kZWYgQXVkaW9T
b3VyY2VQcm92aWRlckdTdHJlYW1lcl9oCi0jZGVmaW5lIEF1ZGlvU291cmNlUHJvdmlkZXJHU3Ry
ZWFtZXJfaAorI3ByYWdtYSBvbmNlCiAKICNpZiBFTkFCTEUoV0VCX0FVRElPKSAmJiBFTkFCTEUo
VklERU8pICYmIFVTRShHU1RSRUFNRVIpCiAKQEAgLTI4LDcgKzI3LDcgQEAKICNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCi0jaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkgJiYgVVNFKExJQldFQlJUQykKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQogI2luY2x1ZGUgIkdTdHJlYW1lckF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaCIKICNpbmNsdWRl
ICJNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYkF1ZGlvU291cmNlUHJv
dmlkZXIuaCIKQEAgLTM5LDcgKzM4LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX0dzdEFwcFNpbmsgR3N0
QXBwU2luazsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkgJiYgVVNFKExJQldFQlJUQykKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogY2xhc3MgQXVk
aW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lciBmaW5hbCA6IHB1YmxpYyBXZWJBdWRpb1NvdXJjZVBy
b3ZpZGVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEF1ZGlvU291cmNlUHJvdmlkZXJHU3Ry
ZWFtZXI+IGNyZWF0ZShNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYgc291cmNlKQpAQCAtNjcsMjgg
KzY2LDI2IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlaW50ZXJsZWF2ZVBhZHNDb25maWd1cmVkKCk7
CiAgICAgdm9pZCBoYW5kbGVSZW1vdmVkRGVpbnRlcmxlYXZlUGFkKEdzdFBhZCopOwogCi0gICAg
R3N0Rmxvd1JldHVybiBoYW5kbGVBdWRpb0J1ZmZlcihHc3RBcHBTaW5rKik7Ci0gICAgR3N0RWxl
bWVudCogZ2V0QXVkaW9CaW4oKSBjb25zdCB7IHJldHVybiBtX2F1ZGlvU2lua0Jpbi5nZXQoKTsg
fQorICAgIEdzdEZsb3dSZXR1cm4gaGFuZGxlU2FtcGxlKEdzdEFwcFNpbmsqLCBib29sIGlzUHJl
cm9sbCk7CiAgICAgdm9pZCBjbGVhckFkYXB0ZXJzKCk7CiAKIHByaXZhdGU6CisjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKICAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IG1fcGlwZWxpbmU7CisjZW5k
aWYKICAgICBlbnVtIE1haW5UaHJlYWROb3RpZmljYXRpb24gewogICAgICAgICBEZWludGVybGVh
dmVQYWRzQ29uZmlndXJlZCA9IDEgPDwgMCwKICAgICB9OwogICAgIFJlZjxNYWluVGhyZWFkTm90
aWZpZXI8TWFpblRocmVhZE5vdGlmaWNhdGlvbj4+IG1fbm90aWZpZXI7CiAgICAgR1JlZlB0cjxH
c3RFbGVtZW50PiBtX2F1ZGlvU2lua0JpbjsKLSAgICBBdWRpb1NvdXJjZVByb3ZpZGVyQ2xpZW50
KiBtX2NsaWVudDsKLSAgICBpbnQgbV9kZWludGVybGVhdmVTb3VyY2VQYWRzOwotICAgIEdzdEFk
YXB0ZXIqIG1fZnJvbnRMZWZ0QWRhcHRlcjsKLSAgICBHc3RBZGFwdGVyKiBtX2Zyb250UmlnaHRB
ZGFwdGVyOwotICAgIHVuc2lnbmVkIGxvbmcgbV9kZWludGVybGVhdmVQYWRBZGRlZEhhbmRsZXJJ
ZDsKLSAgICB1bnNpZ25lZCBsb25nIG1fZGVpbnRlcmxlYXZlTm9Nb3JlUGFkc0hhbmRsZXJJZDsK
LSAgICB1bnNpZ25lZCBsb25nIG1fZGVpbnRlcmxlYXZlUGFkUmVtb3ZlZEhhbmRsZXJJZDsKKyAg
ICBBdWRpb1NvdXJjZVByb3ZpZGVyQ2xpZW50KiBtX2NsaWVudCB7IG51bGxwdHIgfTsKKyAgICBp
bnQgbV9kZWludGVybGVhdmVTb3VyY2VQYWRzIHsgMCB9OworICAgIEhhc2hNYXA8aW50LCBHUmVm
UHRyPEdzdEFkYXB0ZXI+PiBtX2FkYXB0ZXJzOworICAgIHVuc2lnbmVkIGxvbmcgbV9kZWludGVy
bGVhdmVQYWRBZGRlZEhhbmRsZXJJZCB7IDAgfTsKKyAgICB1bnNpZ25lZCBsb25nIG1fZGVpbnRl
cmxlYXZlTm9Nb3JlUGFkc0hhbmRsZXJJZCB7IDAgfTsKKyAgICB1bnNpZ25lZCBsb25nIG1fZGVp
bnRlcmxlYXZlUGFkUmVtb3ZlZEhhbmRsZXJJZCB7IDAgfTsKICAgICBMb2NrIG1fYWRhcHRlck11
dGV4OwogfTsKIAogfQogI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pICYmIEVOQUJMRShWSURF
TykgJiYgVVNFKEdTVFJFQU1FUikKLQotI2VuZGlmIC8vIEF1ZGlvU291cmNlUHJvdmlkZXJHU3Ry
ZWFtZXJfaApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IGFhN2QxNjdmNjk3NGMxYjRjZTA3YWM1ZjhjMzUxYmZiOGMzNzVkNTYu
LmQ1MDJhOGNhMjQwMmQ3YjliYTBkYTg3MTVhYThlODhlYWQ5NzZmYTEgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNCBAQAorMjAyMC0xMC0xOSAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5j
b20+CisKKyAgICAgICAgW0dTdHJlYW1lcl0gUkVHUkVTU0lPTihyMjY2NTU5KTogaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1kZXN0aW5h
dGlvbm5vZGUtaW50ZXJmYWNlL2Rlc3RpbmF0aW9uLmh0bWwgaXMgZmFpbGluZworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2MTcxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL1Rl
c3RFeHBlY3RhdGlvbnM6IFVuZmxhZyB0ZXN0cy4KKyAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1tZWRpYWVsZW1lbnRhdWRp
b3NvdXJjZW5vZGUtaW50ZXJmYWNlL2NvcnMtY2hlY2suaHR0cHMuaHRtbAorICAgICAgICBpcyBz
dGlsbCBmbGFreSBidXQgZmxhZ2dlZCBhbHJlYWR5IGFzIHN1Y2ggaW4gdGhlIGdlbmVyaWMgVGVz
dEV4cGVjdGF0aW9ucy4KKwogMjAyMC0xMC0xMyAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxs
YXJAaWdhbGlhLmNvbT4KIAogICAgICAgICBTYW5pdGl6ZSB0aGUgdXNhZ2Ugb2Ygb3ZlcnJpZGUg
c2l6ZXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0
aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA4
MzQ1NWNmYjI1NTY1MTNjNmVlYTk2MTYxMDg1YzVhMGU4MWU2MmUzLi40ZjI2ZjExNGU3ODc5Mjg5
ZmJmMzMyMTU2ZDQyYmViNzNlMzNjYzQ1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9nbGliL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9U
ZXN0RXhwZWN0YXRpb25zCkBAIC0xNTcsOSArMTU3LDYgQEAgd2Via2l0Lm9yZy9iLzEzMzEyMiBj
cnlwdG8vd29ya2Vycy9zdWJ0bGUvYWVzLWNmYi1pbXBvcnQta2V5LXdyYXAta2V5Lmh0bWwgWyBT
a2kKIHdlYmtpdC5vcmcvYi8xODgwNDEgaHR0cC93cHQvY3J5cHRvL3Vud3JhcC1yc2Eta2V5LWNy
YXNoLmFueS53b3JrZXIuaHRtbCBbIEZhaWx1cmUgVGltZW91dCBQYXNzIF0KIHdlYmtpdC5vcmcv
Yi8xODgwNDEgaHR0cC93cHQvY3J5cHRvL3Vud3JhcC1yc2Eta2V5LWNyYXNoLmFueS5odG1sIFsg
VGltZW91dCBQYXNzIF0KIAotd2Via2l0Lm9yZy9iLzIxNzY5OSBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1ZGlvd29ya2xldC1pbnRl
cmZhY2UvYXVkaW93b3JrbGV0cHJvY2Vzc29yLXByb21pc2VzLmh0dHBzLmh0bWwgWyBDcmFzaCBQ
YXNzIF0KLXdlYmtpdC5vcmcvYi8yMTc2OTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1tZWRpYWVsZW1lbnRhdWRpb3NvdXJjZW5vZGUt
aW50ZXJmYWNlL2NvcnMtY2hlY2suaHR0cHMuaHRtbCBbIEZhaWx1cmUgXQotCiAjLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLwogIyBFbmQgb2YgQ3J5cHRvIHRlc3RzCiAjLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLwpAQCAtMjYwLDggKzI1Nyw2IEBAIHdlYmtpdC5vcmcvYi8y
MTUyODEgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8t
YXBpL3RoZS1hCiAKIHdlYmtpdC5vcmcvYi8yMTU4ODYgd2ViYXVkaW8vYXVkaW9idWZmZXJzb3Vy
Y2UtcGxheWJhY2tyYXRlLmh0bWwgWyBTa2lwIF0KIAotd2Via2l0Lm9yZy9iLzIxNjE3MSBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWRl
c3RpbmF0aW9ubm9kZS1pbnRlcmZhY2UvZGVzdGluYXRpb24uaHRtbCBbIEZhaWx1cmUgXQotCiB3
ZWJraXQub3JnL2IvMjE2MTE4IHdlYmF1ZGlvL2NvbnZvbHZlci1zZXRCdWZmZXItZGlmZmVyZW50
LXNhbXBsZXJhdGUuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzIxNjExOCB3ZWJhdWRpby9j
b252b2x2ZXItc2V0QnVmZmVyLW51bGwuaHRtbCBbIFNraXAgXQogCg==
</data>
<flag name="review"
          id="428171"
          type_id="1"
          status="+"
          setter="calvaris"
    />
          </attachment>
      

    </bug>

</bugzilla>