<?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>190576</bug_id>
          
          <creation_ts>2018-10-15 05:24:52 -0700</creation_ts>
          <short_desc>[GStreamer] fast/mediastream/get-user-media-device-id.html failing</short_desc>
          <delta_ts>2020-04-30 01:12:52 -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>WPE WebKit</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=210926</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Claudio Saavedra">csaavedra</reporter>
          <assigned_to name="Philippe Normand">pnormand</assigned_to>
          <cc>aboya</cc>
    
    <cc>alex</cc>
    
    <cc>annulen</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>calvaris</cc>
    
    <cc>dpino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>lmoura</cc>
    
    <cc>philipj</cc>
    
    <cc>pnormand</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>tsaunier</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1469173</commentid>
    <comment_count>0</comment_count>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2018-10-15 05:24:52 -0700</bug_when>
    <thetext>Since https://trac.webkit.org/changeset/236877/webkit this test is failing in GTK and WPE. This is MediaStream related.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647050</commentid>
    <comment_count>1</comment_count>
      <attachid>397976</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-04-29 10:25:05 -0700</bug_when>
    <thetext>Created attachment 397976
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647052</commentid>
    <comment_count>2</comment_count>
      <attachid>397977</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-04-29 10:30:56 -0700</bug_when>
    <thetext>Created attachment 397977
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647054</commentid>
    <comment_count>3</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-04-29 10:33:14 -0700</bug_when>
    <thetext>*** Bug 205930 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647056</commentid>
    <comment_count>4</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-04-29 10:34:50 -0700</bug_when>
    <thetext>*** Bug 210337 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647058</commentid>
    <comment_count>5</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-04-29 10:35:48 -0700</bug_when>
    <thetext>*** Bug 206149 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647060</commentid>
    <comment_count>6</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-04-29 10:36:09 -0700</bug_when>
    <thetext>*** Bug 192886 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647063</commentid>
    <comment_count>7</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-04-29 10:36:29 -0700</bug_when>
    <thetext>*** Bug 210843 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647297</commentid>
    <comment_count>8</comment_count>
      <attachid>397977</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2020-04-29 23:20:05 -0700</bug_when>
    <thetext>Comment on attachment 397977
Patch

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

&gt; Source/WebCore/platform/mediastream/gstreamer/MockRealtimeAudioSourceGStreamer.cpp:102
&gt; +        auto sample = adoptGRef(gst_sample_new(buffer, caps.get(), nullptr, nullptr));

Buffer seems to be leaking here as gst_sample_new takes it as [transfer none] and it is not adopted to a GRefPtr above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647307</commentid>
    <comment_count>9</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-04-30 01:12:18 -0700</bug_when>
    <thetext>Committed r260937: &lt;https://trac.webkit.org/changeset/260937&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647308</commentid>
    <comment_count>10</comment_count>
      <attachid>397977</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-04-30 01:12:52 -0700</bug_when>
    <thetext>Comment on attachment 397977
Patch

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

&gt;&gt; Source/WebCore/platform/mediastream/gstreamer/MockRealtimeAudioSourceGStreamer.cpp:102
&gt;&gt; +        auto sample = adoptGRef(gst_sample_new(buffer, caps.get(), nullptr, nullptr));
&gt; 
&gt; Buffer seems to be leaking here as gst_sample_new takes it as [transfer none] and it is not adopted to a GRefPtr above.

Oops indeed. Thanks for the review!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>397976</attachid>
            <date>2020-04-29 10:25:05 -0700</date>
            <delta_ts>2020-04-29 10:30:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190576-20200429182503.patch</filename>
            <type>text/plain</type>
            <size>49351</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwODIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjJhNTY3NGZjNTY5Mjlk
OWY2MDE2NzJlNzcxZmM4YTI0ZGU0OGZmMS4uMjM0NjUzMGFlMzkyZTU2M2Q2ZWZhZTU1OTFhYjY4
MDUxNWM3Y2ExMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDIwLTA0LTI5ICBQaGls
aXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVy
XSBmYXN0L21lZGlhc3RyZWFtL2dldC11c2VyLW1lZGlhLWRldmljZS1pZC5odG1sIGZhaWxpbmcK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDU3Ngor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSB0ZXN0
IHdhcyBmYWlsaW5nIGR1ZSB0byBkZXZpY2VJZCBpbnZhbGlkIGNvbnN0cmFpbnQsIHdoaWNoIGxl
ZAorICAgICAgICBtZSB0byByZXdyaXRlIHRoZSBHU3RyZWFtZXIgTW9jayBzb3VyY2VzLCByZW1v
dmluZyB2YXJpb3VzIGhhY2tzCisgICAgICAgIGFuZCBhcHBzcmMgdXNhZ2UsIHdoaWNoIGlzIG5v
dCBuZWVkZWQgYmVjYXVzZSB3ZSByZWx5IG9uCisgICAgICAgIGF1ZGlvU2FtcGxlc0F2YWlsYWJs
ZSBhbmQgdmlkZW9TYW1wbGVzQXZhaWxhYmxlIG5vdGlmaWNhdGlvbnMuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBhbHNvIGZpeGVzIHRoZSBhdWRpbyBtb2NrLCB3aGljaCB3YXMgZ2VuZXJhdGluZyBz
aWxlbmNlCisgICAgICAgIHVudGlsIG5vdy4KKworICAgICAgICAqIHBsYXRmb3JtL0dTdHJlYW1l
ci5jbWFrZToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVh
bWVyTWVkaWFTdHJlYW1Tb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0TWVkaWFT
dHJlYW1UcmFja09ic2VydmVyOjpXZWJLaXRNZWRpYVN0cmVhbVRyYWNrT2JzZXJ2ZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9Nb2NrR1N0cmVhbWVyQXVkaW9D
YXB0dXJlU291cmNlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvTW9ja0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZS5jcHA6IFJlbW92ZWQu
CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01vY2tHU3RyZWFtZXJW
aWRlb0NhcHR1cmVTb3VyY2UuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9nc3RyZWFtZXIvTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VHU3RyZWFtZXIuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VHU3RyZWFtZXI6OmNyZWF0
ZUZvck1vY2tBdWRpb0NhcHR1cmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZUF1
ZGlvU291cmNlR1N0cmVhbWVyOjpNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZUdTdHJlYW1lcik6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZUdTdHJlYW1lcjo6cmVuZGVy
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZUF1ZGlvU291cmNlR1N0cmVhbWVyOjph
ZGRIdW0pOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VHU3RyZWFt
ZXI6OnJlY29uZmlndXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFt
ZXIvTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VHU3RyZWFtZXIuaDogQ29waWVkIGZyb20gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01vY2tHU3RyZWFtZXJBdWRp
b0NhcHR1cmVTb3VyY2UuaC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFt
ZXIvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VHU3RyZWFtZXIuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VHU3RyZWFtZXI6OmNyZWF0ZUZvck1vY2tEaXNw
bGF5Q2FwdHVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VH
U3RyZWFtZXI6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlR1N0cmVhbWVyKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlR1N0cmVhbWVyOjp1cGRhdGVTYW1wbGVCdWZm
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9Nb2NrUmVhbHRp
bWVWaWRlb1NvdXJjZUdTdHJlYW1lci5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01vY2tHU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3Vy
Y2UuaC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmg6
CisKIDIwMjAtMDQtMjggIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgog
CiAgICAgICAgIG1lZGlhL3RyYWNrL3RyYWNrLWxvYWQtZXJyb3ItcmVhZHlTdGF0ZS5odG1sIHBh
c3NlcyBvbmx5IHdoZW4gYWNjb21wYW5pZWQgYnkgc29tZSBvdGhlciB0ZXN0cwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vR1N0cmVhbWVyLmNtYWtlIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vR1N0cmVhbWVyLmNtYWtlCmluZGV4IDg5NTFjYjFlNmIzOGVlN2Y3NzJhZGNh
Y2ZhZTQxMWRhNjI0ZjgxNTIuLjc5YzlkMjgxZjAyZDNjZTc2NTFlNWQzYWE3NjRiYTliZmRhOTNm
NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0dTdHJlYW1lci5jbWFrZQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9HU3RyZWFtZXIuY21ha2UKQEAgLTUwLDggKzUw
LDggQEAgaWYgKEVOQUJMRV9WSURFTyBPUiBFTkFCTEVfV0VCX0FVRElPKQogICAgICAgICBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlLmNw
cAogICAgICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9D
YXB0dXJlci5jcHAKICAgICAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJl
YW1lclZpZGVvRnJhbWVMaWJXZWJSVEMuY3BwCi0gICAgICAgIHBsYXRmb3JtL21lZGlhc3RyZWFt
L2dzdHJlYW1lci9Nb2NrR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlLmNwcAotICAgICAgICBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTW9ja0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNv
dXJjZS5jcHAKKyAgICAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01vY2tSZWFs
dGltZUF1ZGlvU291cmNlR1N0cmVhbWVyLmNwcAorICAgICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VHU3RyZWFtZXIuY3BwCiAgICAgICAg
IHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9SZWFsdGltZUluY29taW5nQXVkaW9Tb3Vy
Y2VMaWJXZWJSVEMuY3BwCiAgICAgICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9S
ZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VMaWJXZWJSVEMuY3BwCiAgICAgICAgIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTGliV2ViUlRD
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0
cmVhbWVyL0dTdHJlYW1lck1lZGlhU3RyZWFtU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYVN0cmVhbVNvdXJjZS5j
cHAKaW5kZXggMTE2Yjk1MmYwMWJjZTc1ZmI3NWVjYjkyMGM2MWU2NzQ3ZGUwZTEyMy4uYWE5ZTUz
NTFlYjNiMTFjOWY0Y2M5MjA3MzExZjM4ODIzNWYyN2JiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhU3RyZWFt
U291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3Ry
ZWFtZXIvR1N0cmVhbWVyTWVkaWFTdHJlYW1Tb3VyY2UuY3BwCkBAIC0xMTIsNyArMTEyLDggQEAg
Y2xhc3MgV2ViS2l0TWVkaWFTdHJlYW1UcmFja09ic2VydmVyCiBwdWJsaWM6CiAgICAgdmlydHVh
bCB+V2ViS2l0TWVkaWFTdHJlYW1UcmFja09ic2VydmVyKCkgeyB9OwogICAgIFdlYktpdE1lZGlh
U3RyZWFtVHJhY2tPYnNlcnZlcihXZWJLaXRNZWRpYVN0cmVhbVNyYyogc3JjKQotICAgICAgICA6
IG1fbWVkaWFTdHJlYW1TcmMoc3JjKSB7IH0KKyAgICAgICAgOiBtX21lZGlhU3RyZWFtU3JjKHNy
YykKKyAgICAgICAgLCBtX2VuYWJsZWQodHJ1ZSkgeyB9CiAgICAgdm9pZCB0cmFja1N0YXJ0ZWQo
TWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKSBmaW5hbCB7IH07CiAKICAgICB2b2lkIHRyYWNrRW5k
ZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmIHRyYWNrKSBmaW5hbApAQCAtMTIwLDI3ICsxMjEs
MzYgQEAgcHVibGljOgogICAgICAgICB3ZWJraXRNZWRpYVN0cmVhbVNyY1RyYWNrRW5kZWQobV9t
ZWRpYVN0cmVhbVNyYywgdHJhY2spOwogICAgIH0KIAorICAgIHZvaWQgdHJhY2tFbmFibGVkQ2hh
bmdlZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYgdHJhY2spIGZpbmFsCisgICAgeworICAgICAg
ICBtX2VuYWJsZWQgPSB0cmFjay5lbmFibGVkKCk7CisgICAgfQorCiAgICAgdm9pZCB0cmFja011
dGVkQ2hhbmdlZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpIGZpbmFsIHsgfTsKICAgICB2b2lk
IHRyYWNrU2V0dGluZ3NDaGFuZ2VkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikgZmluYWwgeyB9
OwotICAgIHZvaWQgdHJhY2tFbmFibGVkQ2hhbmdlZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYp
IGZpbmFsIHsgfTsKICAgICB2b2lkIHJlYWR5U3RhdGVDaGFuZ2VkKE1lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlJikgZmluYWwgeyB9OwogCiAgICAgdm9pZCBzYW1wbGVCdWZmZXJVcGRhdGVkKE1lZGlh
U3RyZWFtVHJhY2tQcml2YXRlJiwgTWVkaWFTYW1wbGUmIHNhbXBsZSkgZmluYWwKICAgICB7Ci0g
ICAgICAgIGF1dG8gZ3N0c2FtcGxlID0gc3RhdGljX2Nhc3Q8TWVkaWFTYW1wbGVHU3RyZWFtZXIq
Pigmc2FtcGxlKS0+cGxhdGZvcm1TYW1wbGUoKS5zYW1wbGUuZ3N0U2FtcGxlOworICAgICAgICBp
ZiAoIW1fZW5hYmxlZCkKKyAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICB3ZWJraXRNZWRp
YVN0cmVhbVNyY1B1c2hWaWRlb1NhbXBsZShtX21lZGlhU3RyZWFtU3JjLCBnc3RzYW1wbGUpOwor
ICAgICAgICBhdXRvIGdzdFNhbXBsZSA9IHN0YXRpY19jYXN0PE1lZGlhU2FtcGxlR1N0cmVhbWVy
Kj4oJnNhbXBsZSktPnBsYXRmb3JtU2FtcGxlKCkuc2FtcGxlLmdzdFNhbXBsZTsKKyAgICAgICAg
d2Via2l0TWVkaWFTdHJlYW1TcmNQdXNoVmlkZW9TYW1wbGUobV9tZWRpYVN0cmVhbVNyYywgZ3N0
U2FtcGxlKTsKICAgICB9CiAKICAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBN
ZWRpYVRpbWUmLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYgYXVkaW9EYXRhLCBjb25zdCBBdWRp
b1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90KSBmaW5hbAogICAgIHsKLSAgICAgICAgYXV0byBh
dWRpb2RhdGEgPSBzdGF0aWNfY2FzdDxjb25zdCBHU3RyZWFtZXJBdWRpb0RhdGEmPihhdWRpb0Rh
dGEpOworICAgICAgICBpZiAoIW1fZW5hYmxlZCkKKyAgICAgICAgICAgIHJldHVybjsKIAotICAg
ICAgICB3ZWJraXRNZWRpYVN0cmVhbVNyY1B1c2hBdWRpb1NhbXBsZShtX21lZGlhU3RyZWFtU3Jj
LCBhdWRpb2RhdGEuZ2V0U2FtcGxlKCkpOworICAgICAgICBhdXRvIGRhdGEgPSBzdGF0aWNfY2Fz
dDxjb25zdCBHU3RyZWFtZXJBdWRpb0RhdGEmPihhdWRpb0RhdGEpOworICAgICAgICB3ZWJraXRN
ZWRpYVN0cmVhbVNyY1B1c2hBdWRpb1NhbXBsZShtX21lZGlhU3RyZWFtU3JjLCBkYXRhLmdldFNh
bXBsZSgpKTsKICAgICB9CiAKIHByaXZhdGU6CiAgICAgV2ViS2l0TWVkaWFTdHJlYW1TcmMqIG1f
bWVkaWFTdHJlYW1TcmM7CisgICAgYm9vbCBtX2VuYWJsZWQ7CiB9OwogCiBjbGFzcyBXZWJLaXRN
ZWRpYVN0cmVhbU9ic2VydmVyCkBAIC0xOTgsNyArMjA4LDYgQEAgc3RydWN0IF9XZWJLaXRNZWRp
YVN0cmVhbVNyYyB7CiAgICAgICAgICAgICBzZWxmLT5zZXRFbm91Z2hEYXRhKHRydWUpOwogICAg
ICAgICB9CiAKLQogICAgICAgICB2b2lkIHNldFNyYyhHc3RFbGVtZW50ICpzcmMpCiAgICAgICAg
IHsKICAgICAgICAgICAgIG1fc3JjID0gYWRvcHRHUmVmKEdTVF9FTEVNRU5UKGdfb2JqZWN0X3Jl
Zl9zaW5rKHNyYykpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2dzdHJlYW1lci9Nb2NrR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9Nb2NrR1N0cmVhbWVy
QXVkaW9DYXB0dXJlU291cmNlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmRl
ZjNjZWE4ZTVjZmZkYTJiOTU0ZDlmNDAxYzc5OTFiYTU1ZDc2Ni4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9nc3RyZWFtZXIvTW9ja0dTdHJlYW1lckF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSwyMjIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBN
ZXRyb2xvZ2ljYWwgR3JvdXAgQi5WLgotICogQXV0aG9yOiBUaGliYXVsdCBTYXVuaWVyIDx0c2F1
bmllckBpZ2FsaWEuY29tPgotICogQXV0aG9yOiBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxleEBp
Z2FsaWEuY29tPgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0g
KiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICog
YWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0p
ICYmIFVTRShMSUJXRUJSVEMpICYmIFVTRShHU1RSRUFNRVIpCi0jaW5jbHVkZSAiTW9ja0dTdHJl
YW1lckF1ZGlvQ2FwdHVyZVNvdXJjZS5oIgotCi0jaW5jbHVkZSAiR1N0cmVhbWVyQXVkaW9TdHJl
YW1EZXNjcmlwdGlvbi5oIgotI2luY2x1ZGUgIk1vY2tSZWFsdGltZUF1ZGlvU291cmNlLmgiCi0K
LSNpbmNsdWRlIDxnc3QvYXBwL2dzdGFwcHNyYy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LXN0YXRpYyBjb25zdCBkb3VibGUgc19UYXUgPSAyICogTV9QSTsKLXN0YXRpYyBjb25zdCBkb3Vi
bGUgc19CaXBCb3BEdXJhdGlvbiA9IDAuMDc7Ci1zdGF0aWMgY29uc3QgZG91YmxlIHNfQmlwQm9w
Vm9sdW1lID0gMC41Owotc3RhdGljIGNvbnN0IGRvdWJsZSBzX0JpcEZyZXF1ZW5jeSA9IDE1MDA7
Ci1zdGF0aWMgY29uc3QgZG91YmxlIHNfQm9wRnJlcXVlbmN5ID0gNTAwOwotc3RhdGljIGNvbnN0
IGRvdWJsZSBzX0h1bUZyZXF1ZW5jeSA9IDE1MDsKLXN0YXRpYyBjb25zdCBkb3VibGUgc19IdW1W
b2x1bWUgPSAwLjE7Ci0KLS8vIEZJWE1FOiBBZGQgbm9pc2Ugb2YgZnJlcXVlbmN5IDMwMDAgaW4g
Y2FzZSBlY2hvQ2FuY2VsbGF0aW9uIGlzIGZhbHNlLgotY2xhc3MgV3JhcHBlZE1vY2tSZWFsdGlt
ZUF1ZGlvU291cmNlIDogcHVibGljIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlIHsKLXB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmPFdyYXBwZWRNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZT4gY3JlYXRlKFN0
cmluZyYmIGRldmljZUlELCBTdHJpbmcmJiBuYW1lLCBTdHJpbmcmJiBoYXNoU2FsdCkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdyYXBwZWRNb2NrUmVhbHRpbWVBdWRpb1Nv
dXJjZShXVEZNb3ZlKGRldmljZUlEKSwgV1RGTW92ZShuYW1lKSwgV1RGTW92ZShoYXNoU2FsdCkp
KTsKLSAgICB9Ci0KLSAgICBSZWFsdGltZU1lZGlhU291cmNlJiBhc1JlYWx0aW1lTWVkaWFTb3Vy
Y2UoKQotICAgIHsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIHZvaWQgc3Rh
cnQoR1JlZlB0cjxHc3RFbGVtZW50PiBzcmMpCi0gICAgewotICAgICAgICBtX3NyYyA9IHNyYzsK
LSAgICAgICAgaWYgKG1fc3RyZWFtRm9ybWF0KQotICAgICAgICAgICAgZ3N0X2FwcF9zcmNfc2V0
X2NhcHMoR1NUX0FQUF9TUkMobV9zcmMuZ2V0KCkpLCBtX3N0cmVhbUZvcm1hdC0+Y2FwcygpKTsK
LSAgICAgICAgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OnN0YXJ0KCk7Ci0gICAgfQotCi0gICAg
dm9pZCBhZGRIdW0oZmxvYXQgYW1wbGl0dWRlLCBmbG9hdCBmcmVxdWVuY3ksIGZsb2F0IHNhbXBs
ZVJhdGUsIHVpbnQ2NF90IHN0YXJ0LCBmbG9hdCAqcCwgdWludDY0X3QgY291bnQpCi0gICAgewot
ICAgICAgICBpZiAoZWNob0NhbmNlbGxhdGlvbigpKSB7Ci0gICAgICAgICAgICBHU1RfREVCVUco
ImVjaG8gY2FuY2VsLi4uLCBubyBodW0iKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotICAgICAgICBmbG9hdCBodW1QZXJpb2QgPSBzYW1wbGVSYXRlIC8gZnJlcXVlbmN5OwotICAg
ICAgICBmb3IgKHVpbnQ2NF90IGkgPSBzdGFydCwgZW5kID0gc3RhcnQgKyBjb3VudDsgaSA8IGVu
ZDsgKytpKSB7Ci0gICAgICAgICAgICBmbG9hdCBhID0gYW1wbGl0dWRlICogc2luKGkgKiBzX1Rh
dSAvIGh1bVBlcmlvZCk7Ci0gICAgICAgICAgICBhICs9ICpwOwotICAgICAgICAgICAgKnArKyA9
IGE7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB2b2lkIHJlbmRlcihTZWNvbmRzIGRlbHRhKQot
ICAgIHsKLSAgICAgICAgQVNTRVJUKG1fc3JjKTsKLQotICAgICAgICBpZiAoIW1fYmlwQm9wQnVm
ZmVyLnNpemUoKSkKLSAgICAgICAgICAgIHJlY29uZmlndXJlKCk7Ci0KLSAgICAgICAgdWludDMy
X3QgdG90YWxGcmFtZUNvdW50ID0gR1NUX1JPVU5EX1VQXzE2KHN0YXRpY19jYXN0PHNpemVfdD4o
ZGVsdGEuc2Vjb25kcygpICogc2FtcGxlUmF0ZSgpKSk7Ci0gICAgICAgIHVpbnQzMl90IGZyYW1l
Q291bnQgPSBzdGQ6Om1pbih0b3RhbEZyYW1lQ291bnQsIG1fbWF4aW1pdW1GcmFtZUNvdW50KTsK
LSAgICAgICAgd2hpbGUgKGZyYW1lQ291bnQpIHsKLSAgICAgICAgICAgIHVpbnQzMl90IGJpcEJv
cFN0YXJ0ID0gbV9zYW1wbGVzUmVuZGVyZWQgJSBtX2JpcEJvcEJ1ZmZlci5zaXplKCk7Ci0gICAg
ICAgICAgICB1aW50MzJfdCBiaXBCb3BSZW1haW4gPSBtX2JpcEJvcEJ1ZmZlci5zaXplKCkgLSBi
aXBCb3BTdGFydDsKLSAgICAgICAgICAgIHVpbnQzMl90IGJpcEJvcENvdW50ID0gc3RkOjptaW4o
ZnJhbWVDb3VudCwgYmlwQm9wUmVtYWluKTsKLQotICAgICAgICAgICAgR3N0QnVmZmVyKiBidWZm
ZXIgPSBnc3RfYnVmZmVyX25ld19hbGxvY2F0ZShudWxscHRyLCBiaXBCb3BDb3VudCAqIG1fc3Ry
ZWFtRm9ybWF0LT5ieXRlc1BlckZyYW1lKCksIG51bGxwdHIpOwotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIGF1dG8gbWFwID0gR3N0TWFwcGVkQnVmZmVyOjpjcmVhdGUoYnVmZmVyLCBH
U1RfTUFQX1dSSVRFKTsKLQotICAgICAgICAgICAgICAgIGlmICghbXV0ZWQoKSkgewotICAgICAg
ICAgICAgICAgICAgICBtZW1jcHkobWFwLT5kYXRhKCksICZtX2JpcEJvcEJ1ZmZlcltiaXBCb3BT
dGFydF0sIHNpemVvZihmbG9hdCkgKiBiaXBCb3BDb3VudCk7Ci0gICAgICAgICAgICAgICAgICAg
IGFkZEh1bShzX0h1bVZvbHVtZSwgc19IdW1GcmVxdWVuY3ksIHNhbXBsZVJhdGUoKSwgbV9zYW1w
bGVzUmVuZGVyZWQsIChmbG9hdCopbWFwLT5kYXRhKCksIGJpcEJvcENvdW50KTsKLSAgICAgICAg
ICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgbWVtc2V0KG1hcC0+ZGF0YSgpLCAw
LCBzaXplb2YoZmxvYXQpICogYmlwQm9wQ291bnQpOwotICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICBnc3RfYXBwX3NyY19wdXNoX2J1ZmZlcihHU1RfQVBQX1NSQyhtX3NyYy5nZXQoKSksIGJ1
ZmZlcik7Ci0gICAgICAgICAgICBtX3NhbXBsZXNSZW5kZXJlZCArPSBiaXBCb3BDb3VudDsKLSAg
ICAgICAgICAgIHRvdGFsRnJhbWVDb3VudCAtPSBiaXBCb3BDb3VudDsKLSAgICAgICAgICAgIGZy
YW1lQ291bnQgPSBzdGQ6Om1pbih0b3RhbEZyYW1lQ291bnQsIG1fbWF4aW1pdW1GcmFtZUNvdW50
KTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHZvaWQgcmVjb25maWd1cmUoKQotICAgIHsKLSAg
ICAgICAgR3N0QXVkaW9JbmZvIGluZm87Ci0gICAgICAgIGF1dG8gcmF0ZSA9IHNhbXBsZVJhdGUo
KTsKLSAgICAgICAgc2l6ZV90IHNhbXBsZUNvdW50ID0gMiAqIHJhdGU7Ci0KLSAgICAgICAgbV9t
YXhpbWl1bUZyYW1lQ291bnQgPSBXVEY6OnJvdW5kVXBUb1Bvd2VyT2ZUd28ocmVuZGVySW50ZXJ2
YWwoKS5zZWNvbmRzKCkgKiBzYW1wbGVSYXRlKCkpOwotICAgICAgICBnc3RfYXVkaW9faW5mb19z
ZXRfZm9ybWF0KCZpbmZvLCBHU1RfQVVESU9fRk9STUFUX0YzMkxFLCByYXRlLCAxLCBudWxscHRy
KTsKLSAgICAgICAgbV9zdHJlYW1Gb3JtYXQgPSBHU3RyZWFtZXJBdWRpb1N0cmVhbURlc2NyaXB0
aW9uKGluZm8pOwotCi0gICAgICAgIGlmIChtX3NyYykKLSAgICAgICAgICAgIGdzdF9hcHBfc3Jj
X3NldF9jYXBzKEdTVF9BUFBfU1JDKG1fc3JjLmdldCgpKSwgbV9zdHJlYW1Gb3JtYXQtPmNhcHMo
KSk7Ci0KLSAgICAgICAgbV9iaXBCb3BCdWZmZXIucmVzaXplKHNhbXBsZUNvdW50KTsKLSAgICAg
ICAgbV9iaXBCb3BCdWZmZXIuZmlsbCgwKTsKLQotICAgICAgICBzaXplX3QgYmlwQm9wU2FtcGxl
Q291bnQgPSBjZWlsKHNfQmlwQm9wRHVyYXRpb24gKiByYXRlKTsKLSAgICAgICAgc2l6ZV90IGJp
cFN0YXJ0ID0gMDsKLSAgICAgICAgc2l6ZV90IGJvcFN0YXJ0ID0gcmF0ZTsKLQotICAgICAgICBh
ZGRIdW0oc19CaXBCb3BWb2x1bWUsIHNfQmlwRnJlcXVlbmN5LCByYXRlLCAwLCBzdGF0aWNfY2Fz
dDxmbG9hdCo+KG1fYmlwQm9wQnVmZmVyLmRhdGEoKSArIGJpcFN0YXJ0KSwgYmlwQm9wU2FtcGxl
Q291bnQpOwotICAgICAgICBhZGRIdW0oc19CaXBCb3BWb2x1bWUsIHNfQm9wRnJlcXVlbmN5LCBy
YXRlLCAwLCBzdGF0aWNfY2FzdDxmbG9hdCo+KG1fYmlwQm9wQnVmZmVyLmRhdGEoKSArIGJvcFN0
YXJ0KSwgYmlwQm9wU2FtcGxlQ291bnQpOwotICAgIH0KLQotICAgIHZvaWQgc2V0dGluZ3NEaWRD
aGFuZ2UoT3B0aW9uU2V0PFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZz4gc2V0dGlu
Z3MpCi0gICAgewotICAgICAgICBpZiAoc2V0dGluZ3MuY29udGFpbnMoUmVhbHRpbWVNZWRpYVNv
dXJjZVNldHRpbmdzOjpGbGFnOjpTYW1wbGVSYXRlKSkKLSAgICAgICAgICAgIHJlY29uZmlndXJl
KCk7Ci0KLSAgICAgICAgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OnNldHRpbmdzRGlkQ2hhbmdl
KHNldHRpbmdzKTsKLSAgICB9Ci0KLSAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IG1fc3JjOwotICAg
IE9wdGlvbmFsPEdTdHJlYW1lckF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+IG1fc3RyZWFtRm9ybWF0
OwotICAgIFZlY3RvcjxmbG9hdD4gbV9iaXBCb3BCdWZmZXI7Ci0gICAgdWludDMyX3QgbV9tYXhp
bWl1bUZyYW1lQ291bnQ7Ci0gICAgdWludDY0X3QgbV9zYW1wbGVzRW1pdHRlZCB7IDAgfTsKLSAg
ICB1aW50NjRfdCBtX3NhbXBsZXNSZW5kZXJlZCB7IDAgfTsKLQotcHJpdmF0ZToKLSAgICBXcmFw
cGVkTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UoU3RyaW5nJiYgZGV2aWNlSUQsIFN0cmluZyYmIG5h
bWUsIFN0cmluZyYmIGhhc2hTYWx0KQotICAgICAgICA6IE1vY2tSZWFsdGltZUF1ZGlvU291cmNl
KFdURk1vdmUoZGV2aWNlSUQpLCBXVEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKGhhc2hTYWx0KSkKLSAg
ICB7Ci0gICAgfQotfTsKLQotQ2FwdHVyZVNvdXJjZU9yRXJyb3IgTW9ja1JlYWx0aW1lQXVkaW9T
b3VyY2U6OmNyZWF0ZShTdHJpbmcmJiBkZXZpY2VJRCwKLSAgICBTdHJpbmcmJiBuYW1lLCBTdHJp
bmcmJiBoYXNoU2FsdCwgY29uc3QgTWVkaWFDb25zdHJhaW50cyogY29uc3RyYWludHMpCi17Ci0g
ICAgYXV0byBzb3VyY2UgPSBhZG9wdFJlZigqbmV3IE1vY2tHU3RyZWFtZXJBdWRpb0NhcHR1cmVT
b3VyY2UoV1RGTW92ZShkZXZpY2VJRCksIFdURk1vdmUobmFtZSksIFdURk1vdmUoaGFzaFNhbHQp
KSk7Ci0KLSAgICBpZiAoY29uc3RyYWludHMgJiYgc291cmNlLT5hcHBseUNvbnN0cmFpbnRzKCpj
b25zdHJhaW50cykpCi0gICAgICAgIHJldHVybiB7IH07Ci0KLSAgICByZXR1cm4gQ2FwdHVyZVNv
dXJjZU9yRXJyb3IoV1RGTW92ZShzb3VyY2UpKTsKLX0KLQotT3B0aW9uYWw8UmVhbHRpbWVNZWRp
YVNvdXJjZTo6QXBwbHlDb25zdHJhaW50c0Vycm9yPiBNb2NrR1N0cmVhbWVyQXVkaW9DYXB0dXJl
U291cmNlOjphcHBseUNvbnN0cmFpbnRzKGNvbnN0IE1lZGlhQ29uc3RyYWludHMmIGNvbnN0cmFp
bnRzKQotewotICAgIG1fd3JhcHBlZFNvdXJjZS0+YXBwbHlDb25zdHJhaW50cyhjb25zdHJhaW50
cyk7Ci0gICAgcmV0dXJuIEdTdHJlYW1lckF1ZGlvQ2FwdHVyZVNvdXJjZTo6YXBwbHlDb25zdHJh
aW50cyhjb25zdHJhaW50cyk7Ci19Ci0KLXZvaWQgTW9ja0dTdHJlYW1lckF1ZGlvQ2FwdHVyZVNv
dXJjZTo6YXBwbHlDb25zdHJhaW50cyhjb25zdCBNZWRpYUNvbnN0cmFpbnRzJiBjb25zdHJhaW50
cywgQXBwbHlDb25zdHJhaW50c0hhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBt
X3dyYXBwZWRTb3VyY2UtPmFwcGx5Q29uc3RyYWludHMoY29uc3RyYWludHMsIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKLX0KLQotTW9ja0dTdHJlYW1lckF1ZGlvQ2FwdHVyZVNvdXJjZTo6
TW9ja0dTdHJlYW1lckF1ZGlvQ2FwdHVyZVNvdXJjZShTdHJpbmcmJiBkZXZpY2VJRCwgU3RyaW5n
JiYgbmFtZSwgU3RyaW5nJiYgaGFzaFNhbHQpCi0gICAgOiBHU3RyZWFtZXJBdWRpb0NhcHR1cmVT
b3VyY2UoU3RyaW5nIHsgZGV2aWNlSUQgfSwgU3RyaW5nIHsgbmFtZSB9LCBTdHJpbmcgeyBoYXNo
U2FsdCB9KQotICAgICwgbV93cmFwcGVkU291cmNlKFdyYXBwZWRNb2NrUmVhbHRpbWVBdWRpb1Nv
dXJjZTo6Y3JlYXRlKFdURk1vdmUoZGV2aWNlSUQpLCBXVEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKGhh
c2hTYWx0KSkpCi17Ci0gICAgbV93cmFwcGVkU291cmNlLT5hZGRPYnNlcnZlcigqdGhpcyk7Ci19
Ci0KLU1vY2tHU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2U6On5Nb2NrR1N0cmVhbWVyQXVkaW9D
YXB0dXJlU291cmNlKCkKLXsKLSAgICBtX3dyYXBwZWRTb3VyY2UtPnJlbW92ZU9ic2VydmVyKCp0
aGlzKTsKLX0KLQotdm9pZCBNb2NrR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlOjpzdG9wUHJv
ZHVjaW5nRGF0YSgpCi17Ci0gICAgbV93cmFwcGVkU291cmNlLT5zdG9wKCk7Ci0KLSAgICBHU3Ry
ZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2U6OnN0b3BQcm9kdWNpbmdEYXRhKCk7Ci19Ci0KLXZvaWQg
TW9ja0dTdHJlYW1lckF1ZGlvQ2FwdHVyZVNvdXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKCkKLXsK
LSAgICBHU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpOwot
ICAgIHN0YXRpY19jYXN0PFdyYXBwZWRNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZSY+KG1fd3JhcHBl
ZFNvdXJjZS5nZXQoKSkuc3RhcnQoY2FwdHVyZXIoKS0+c291cmNlKCkpOwotfQotCi1jb25zdCBS
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIE1vY2tHU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3Vy
Y2U6OnNldHRpbmdzKCkKLXsKLSAgICByZXR1cm4gbV93cmFwcGVkU291cmNlLT5hc1JlYWx0aW1l
TWVkaWFTb3VyY2UoKS5zZXR0aW5ncygpOwotfQotCi1jb25zdCBSZWFsdGltZU1lZGlhU291cmNl
Q2FwYWJpbGl0aWVzJiBNb2NrR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlOjpjYXBhYmlsaXRp
ZXMoKQotewotICAgIG1fY2FwYWJpbGl0aWVzID0gbV93cmFwcGVkU291cmNlLT5hc1JlYWx0aW1l
TWVkaWFTb3VyY2UoKS5jYXBhYmlsaXRpZXMoKTsKLSAgICBtX2N1cnJlbnRTZXR0aW5ncyA9IG1f
d3JhcHBlZFNvdXJjZS0+YXNSZWFsdGltZU1lZGlhU291cmNlKCkuc2V0dGluZ3MoKTsKLSAgICBy
ZXR1cm4gbV93cmFwcGVkU291cmNlLT5hc1JlYWx0aW1lTWVkaWFTb3VyY2UoKS5jYXBhYmlsaXRp
ZXMoKTsKLX0KLQotdm9pZCBNb2NrR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlOjpjYXB0dXJl
RmFpbGVkKCkKLXsKLSAgICBzdG9wKCk7Ci0gICAgUmVhbHRpbWVNZWRpYVNvdXJjZTo6Y2FwdHVy
ZUZhaWxlZCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFC
TEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoTElCV0VCUlRDKSAmJiBVU0UoR1NUUkVBTUVSKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01v
Y2tHU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9Nb2NrR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUzMDI1YzI1YTc2YTdjOTAxY2E1NjZmZTZj
YTJiMTA3ZWJlOTdiODguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01vY2tH
U3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggTWV0cm9sb2dpY2FsIEdyb3VwIEIuVi4KLSAq
IEF1dGhvcjogVGhpYmF1bHQgU2F1bmllciA8dHNhdW5pZXJAaWdhbGlhLmNvbT4KLSAqIEF1dGhv
cjogQWxlamFuZHJvIEcuIENhc3RybyAgPGFsZXhAaWdhbGlhLmNvbT4KLSAqCi0gKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0g
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFpbnQgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
Ci0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShMSUJXRUJSVEMpICYmIFVTRShHU1RSRUFN
RVIpCi0KLSNpbmNsdWRlICJHU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2UuaCIKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1jbGFzcyBXcmFwcGVkTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U7Ci1j
bGFzcyBNb2NrR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlIGZpbmFsIDogcHVibGljIEdTdHJl
YW1lckF1ZGlvQ2FwdHVyZVNvdXJjZSwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6T2JzZXJ2ZXIgewot
cHVibGljOgotICAgIE1vY2tHU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2UoU3RyaW5nJiYgZGV2
aWNlSUQsIFN0cmluZyYmIG5hbWUsIFN0cmluZyYmIGhhc2hTYWx0KTsKLSAgICB+TW9ja0dTdHJl
YW1lckF1ZGlvQ2FwdHVyZVNvdXJjZSgpOwotICAgIE9wdGlvbmFsPEFwcGx5Q29uc3RyYWludHNF
cnJvcj4gYXBwbHlDb25zdHJhaW50cyhjb25zdCBNZWRpYUNvbnN0cmFpbnRzJik7Ci0gICAgdm9p
ZCBhcHBseUNvbnN0cmFpbnRzKGNvbnN0IE1lZGlhQ29uc3RyYWludHMmLCBBcHBseUNvbnN0cmFp
bnRzSGFuZGxlciYmKSBmaW5hbDsKLQotcHJpdmF0ZToKLSAgICB2b2lkIHN0b3BQcm9kdWNpbmdE
YXRhKCkgZmluYWw7Ci0gICAgdm9pZCBzdGFydFByb2R1Y2luZ0RhdGEoKSBmaW5hbDsKLSAgICBj
b25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKCkgZmluYWw7Ci0gICAg
Y29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYgY2FwYWJpbGl0aWVzKCkgZmlu
YWw7Ci0gICAgdm9pZCBjYXB0dXJlRmFpbGVkKCkgZmluYWw7Ci0gICAgdm9pZCB2aWRlb1NhbXBs
ZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYpIGZpbmFsIHsgfTsKLQotICAgIFJlZjxXcmFwcGVkTW9j
a1JlYWx0aW1lQXVkaW9Tb3VyY2U+IG1fd3JhcHBlZFNvdXJjZTsKLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShMSUJX
RUJSVEMpICYmIFVTRShHU1RSRUFNRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTW9ja0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJj
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTW9j
a0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDMyYmY4NmJjNmZiNjhjMWU2ZDYzZGVkODc2Mjc1MzUzZDU0YWZiODMuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01vY2tHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3Vy
Y2UuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTY1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTggTWV0cm9sb2dpY2FsIEdyb3VwIEIuVi4KLSAqIEF1dGhvcjogVGhpYmF1bHQgU2F1
bmllciA8dHNhdW5pZXJAaWdhbGlhLmNvbT4KLSAqIEF1dGhvcjogQWxlamFuZHJvIEcuIENhc3Ry
byA8YWxleEBpZ2FsaWEuY29tPgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQotICogYWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pICYmIFVTRShMSUJXRUJSVEMpICYmIFVTRShHU1RSRUFNRVIpCi0jaW5jbHVkZSAi
TW9ja0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZS5oIgotCi0jaW5jbHVkZSAiTWVkaWFTYW1w
bGVHU3RyZWFtZXIuaCIKLSNpbmNsdWRlICJNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5oIgotCi0j
aW5jbHVkZSA8Z3N0L2FwcC9nc3RhcHBzcmMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1j
bGFzcyBXcmFwcGVkTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UgOiBwdWJsaWMgTW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2UgewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8V3JhcHBlZE1vY2tSZWFsdGlt
ZVZpZGVvU291cmNlPiBjcmVhdGUoU3RyaW5nJiYgZGV2aWNlSUQsIFN0cmluZyYmIG5hbWUsIFN0
cmluZyYmIGhhc2hTYWx0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV3Jh
cHBlZE1vY2tSZWFsdGltZVZpZGVvU291cmNlKFdURk1vdmUoZGV2aWNlSUQpLCBXVEZNb3ZlKG5h
bWUpLCBXVEZNb3ZlKGhhc2hTYWx0KSkpOwotICAgIH0KLQotICAgIFJlYWx0aW1lTWVkaWFTb3Vy
Y2UmIGFzUmVhbHRpbWVNZWRpYVNvdXJjZSgpCi0gICAgewotICAgICAgICByZXR1cm4gKnRoaXM7
Ci0gICAgfQotCi0gICAgY29uc3QgVmVjdG9yPFJlZjxWaWRlb1ByZXNldD4+JiBwcmVzZXRzKCkK
LSAgICB7Ci0gICAgICAgIHJldHVybiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6cHJlc2V0cygp
OwotICAgIH0KLQotICAgIGJvb2wgY2FuUmVzaXplVmlkZW9GcmFtZXMoKSBjb25zdCBmaW5hbCB7
IHJldHVybiB0cnVlOyB9Ci0KLSAgICB2b2lkIHVwZGF0ZVNhbXBsZUJ1ZmZlcigpCi0gICAgewot
ICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gdGhpcy0+aW1hZ2VCdWZmZXIoKTsKLSAgICAgICAg
aWYgKCFpbWFnZUJ1ZmZlcikKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBpbnQgZnBz
TnVtZXJhdG9yLCBmcHNEZW5vbWluYXRvcjsKLSAgICAgICAgZ3N0X3V0aWxfZG91YmxlX3RvX2Zy
YWN0aW9uKGZyYW1lUmF0ZSgpLCAmZnBzTnVtZXJhdG9yLCAmZnBzRGVub21pbmF0b3IpOwotICAg
ICAgICBhdXRvIGltYWdlU2l6ZSA9IGltYWdlQnVmZmVyLT5iYWNrZW5kU2l6ZSgpOwotICAgICAg
ICBhdXRvIGNhcHMgPSBhZG9wdEdSZWYoZ3N0X2NhcHNfbmV3X3NpbXBsZSgidmlkZW8veC1yYXci
LAotICAgICAgICAgICAgImZvcm1hdCIsIEdfVFlQRV9TVFJJTkcsICJCR1JBIiwKLSAgICAgICAg
ICAgICJ3aWR0aCIsIEdfVFlQRV9JTlQsIGltYWdlU2l6ZS53aWR0aCgpLAotICAgICAgICAgICAg
ImhlaWdodCIsIEdfVFlQRV9JTlQsIGltYWdlU2l6ZS5oZWlnaHQoKSwKLSAgICAgICAgICAgICJm
cmFtZXJhdGUiLCBHU1RfVFlQRV9GUkFDVElPTiwgZnBzTnVtZXJhdG9yLCBmcHNEZW5vbWluYXRv
ciwgbnVsbHB0cikpOwotICAgICAgICBhdXRvIGRhdGEgPSBpbWFnZUJ1ZmZlci0+dG9CR1JBRGF0
YSgpOwotICAgICAgICBhdXRvIHNpemUgPSBkYXRhLnNpemUoKTsKLSAgICAgICAgYXV0byBidWZm
ZXIgPSBhZG9wdEdSZWYoZ3N0X2J1ZmZlcl9uZXdfd3JhcHBlZChnX21lbWR1cChkYXRhLnJlbGVh
c2VCdWZmZXIoKS5nZXQoKSwgc2l6ZSksIHNpemUpKTsKLSAgICAgICAgYXV0byBnc3RTYW1wbGUg
PSBhZG9wdEdSZWYoZ3N0X3NhbXBsZV9uZXcoYnVmZmVyLmdldCgpLCBjYXBzLmdldCgpLCBudWxs
cHRyLCBudWxscHRyKSk7Ci0KLSAgICAgICAgdmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1w
bGVHU3RyZWFtZXI6OmNyZWF0ZShXVEZNb3ZlKGdzdFNhbXBsZSksIEZsb2F0U2l6ZSgpLCBTdHJp
bmcoKSkpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBXcmFwcGVkTW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2UoU3RyaW5nJiYgZGV2aWNlSUQsIFN0cmluZyYmIG5hbWUsIFN0cmluZyYmIGhhc2hTYWx0
KQotICAgICAgICA6IE1vY2tSZWFsdGltZVZpZGVvU291cmNlKFdURk1vdmUoZGV2aWNlSUQpLCBX
VEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKGhhc2hTYWx0KSkKLSAgICB7Ci0gICAgfQotfTsKLQotQ2Fw
dHVyZVNvdXJjZU9yRXJyb3IgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmNyZWF0ZShTdHJpbmcm
JiBkZXZpY2VJRCwKLSAgICBTdHJpbmcmJiBuYW1lLCBTdHJpbmcmJiBoYXNoU2FsdCwgY29uc3Qg
TWVkaWFDb25zdHJhaW50cyogY29uc3RyYWludHMpCi17Ci0gICAgYXV0byBzb3VyY2UgPSBhZG9w
dFJlZigqbmV3IE1vY2tHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UoV1RGTW92ZShkZXZpY2VJ
RCksIFdURk1vdmUobmFtZSksIFdURk1vdmUoaGFzaFNhbHQpKSk7Ci0KLSAgICBpZiAoY29uc3Ry
YWludHMgJiYgc291cmNlLT5hcHBseUNvbnN0cmFpbnRzKCpjb25zdHJhaW50cykpCi0gICAgICAg
IHJldHVybiB7IH07Ci0KLSAgICByZXR1cm4gQ2FwdHVyZVNvdXJjZU9yRXJyb3IoV1RGTW92ZShz
b3VyY2UpKTsKLX0KLQotdm9pZCBNb2NrR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlOjpzdGFy
dFByb2R1Y2luZ0RhdGEoKQotewotICAgIEdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZTo6c3Rh
cnRQcm9kdWNpbmdEYXRhKCk7Ci0gICAgbV93cmFwcGVkU291cmNlLT5zdGFydCgpOwotfQotCi12
b2lkIE1vY2tHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6OnN0b3BQcm9kdWNpbmdEYXRhKCkK
LXsKLSAgICBtX3dyYXBwZWRTb3VyY2UtPnN0b3AoKTsKLQotICAgIEdTdHJlYW1lclZpZGVvQ2Fw
dHVyZVNvdXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEoKTsKLX0KLQotdm9pZCBNb2NrR1N0cmVhbWVy
VmlkZW9DYXB0dXJlU291cmNlOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYgc2Ft
cGxlKQotewotICAgIGF1dG8gc3JjID0gY2FwdHVyZXIoKS0+c291cmNlKCk7Ci0KLSAgICBpZiAo
c3JjKSB7Ci0gICAgICAgIGF1dG8gZ3N0c2FtcGxlID0gc3RhdGljX2Nhc3Q8TWVkaWFTYW1wbGVH
U3RyZWFtZXIqPigmc2FtcGxlKS0+cGxhdGZvcm1TYW1wbGUoKS5zYW1wbGUuZ3N0U2FtcGxlOwot
ICAgICAgICBnc3RfYXBwX3NyY19wdXNoX3NhbXBsZShHU1RfQVBQX1NSQyhzcmMpLCBnc3RzYW1w
bGUpOwotICAgIH0KLX0KLQotTW9ja0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZTo6TW9ja0dT
dHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZShTdHJpbmcmJiBkZXZpY2VJRCwgU3RyaW5nJiYgbmFt
ZSwgU3RyaW5nJiYgaGFzaFNhbHQpCi0gICAgOiBHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2Uo
U3RyaW5nIHsgZGV2aWNlSUQgfSwgU3RyaW5nIHsgbmFtZSB9LCBTdHJpbmcgeyBoYXNoU2FsdCB9
LCAiYXBwc3JjIikKLSAgICAsIG1fd3JhcHBlZFNvdXJjZShXcmFwcGVkTW9ja1JlYWx0aW1lVmlk
ZW9Tb3VyY2U6OmNyZWF0ZShXVEZNb3ZlKGRldmljZUlEKSwgV1RGTW92ZShuYW1lKSwgV1RGTW92
ZShoYXNoU2FsdCkpKQotewotICAgIG1fd3JhcHBlZFNvdXJjZS0+YWRkT2JzZXJ2ZXIoKnRoaXMp
OwotfQotCi1Nb2NrR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlOjp+TW9ja0dTdHJlYW1lclZp
ZGVvQ2FwdHVyZVNvdXJjZSgpCi17Ci0gICAgbV93cmFwcGVkU291cmNlLT5yZW1vdmVPYnNlcnZl
cigqdGhpcyk7Ci19Ci0KLU9wdGlvbmFsPFJlYWx0aW1lTWVkaWFTb3VyY2U6OkFwcGx5Q29uc3Ry
YWludHNFcnJvcj4gTW9ja0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZTo6YXBwbHlDb25zdHJh
aW50cyhjb25zdCBNZWRpYUNvbnN0cmFpbnRzJiBjb25zdHJhaW50cykKLXsKLSAgICBtX3dyYXBw
ZWRTb3VyY2UtPmFwcGx5Q29uc3RyYWludHMoY29uc3RyYWludHMpOwotICAgIHJldHVybiBHU3Ry
ZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6OmFwcGx5Q29uc3RyYWludHMoY29uc3RyYWludHMpOwot
fQotCi12b2lkIE1vY2tHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6OmFwcGx5Q29uc3RyYWlu
dHMoY29uc3QgTWVkaWFDb25zdHJhaW50cyYgY29uc3RyYWludHMsIEFwcGx5Q29uc3RyYWludHNI
YW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgbV93cmFwcGVkU291cmNlLT5hcHBs
eUNvbnN0cmFpbnRzKGNvbnN0cmFpbnRzLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci19
Ci0KLWNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgTW9ja0dTdHJlYW1lclZpZGVv
Q2FwdHVyZVNvdXJjZTo6c2V0dGluZ3MoKQotewotICAgIHJldHVybiBtX3dyYXBwZWRTb3VyY2Ut
PmFzUmVhbHRpbWVNZWRpYVNvdXJjZSgpLnNldHRpbmdzKCk7Ci19Ci0KLWNvbnN0IFJlYWx0aW1l
TWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIE1vY2tHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6
OmNhcGFiaWxpdGllcygpCi17Ci0gICAgbV9jYXBhYmlsaXRpZXMgPSBtX3dyYXBwZWRTb3VyY2Ut
PmFzUmVhbHRpbWVNZWRpYVNvdXJjZSgpLmNhcGFiaWxpdGllcygpOwotICAgIG1fY3VycmVudFNl
dHRpbmdzID0gbV93cmFwcGVkU291cmNlLT5hc1JlYWx0aW1lTWVkaWFTb3VyY2UoKS5zZXR0aW5n
cygpOwotICAgIHJldHVybiBtX2NhcGFiaWxpdGllcy52YWx1ZSgpOwotfQotCi12b2lkIE1vY2tH
U3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6OmdlbmVyYXRlUHJlc2V0cygpCi17Ci0gICAgc2V0
U3VwcG9ydGVkUHJlc2V0cyhtX3dyYXBwZWRTb3VyY2UtPnByZXNldHMoKSk7Ci19Ci0KLXZvaWQg
TW9ja0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZTo6Y2FwdHVyZUZhaWxlZCgpCi17Ci0gICAg
c3RvcCgpOwotCi0gICAgUmVhbHRpbWVNZWRpYVNvdXJjZTo6Y2FwdHVyZUZhaWxlZCgpOwotfQot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFN
KSAmJiBVU0UoTElCV0VCUlRDKSAmJiBVU0UoR1NUUkVBTUVSKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01vY2tHU3RyZWFtZXJWaWRl
b0NhcHR1cmVTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9Nb2NrR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDM4Mjc0ZTZiNmM4MTQwOTQ1M2M5ZGM3NmMxNTU0MmVmNzFlY2IxNDgu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01vY2tHU3RyZWFtZXJWaWRlb0Nh
cHR1cmVTb3VyY2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTggTWV0cm9sb2dpY2FsIEdyb3VwIEIuVi4KLSAqIEF1dGhvcjogVGhpYmF1
bHQgU2F1bmllciA8dHNhdW5pZXJAaWdhbGlhLmNvbT4KLSAqIEF1dGhvcjogQWxlamFuZHJvIEcu
IENhc3RybyA8YWxleEBpZ2FsaWEuY29tPgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAq
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQotICogYWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkgJiYgVVNFKExJQldFQlJUQykgJiYgVVNFKEdTVFJFQU1FUikKLQotI2luY2x1ZGUg
IkdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LWNsYXNzIFdyYXBwZWRNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTsKLS8vIFdlIGFyZSBzdWJjbGFz
c2luZyBHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UgYW5kIG5vdCBNb2NrUmVhbHRpbWVNZWRp
YVNvdXJjZQotLy8gYmVjYXVzZSB0aGUgTWVkaWFQbGF5ZXIgZXhwZWN0cyBHU3RyZWFtZXJWaWRl
b0NhcHR1cmVTb3VyY2UgdG8gYmUgYWJsZSB0byBwcm9wZXJseQotLy8gYnVpbGQgdGhlIEdTdHJl
YW1lciBwaXBlbGluZS4gU3RpbGwgd2UgbWFrZSBpdCBzbyB0aGF0IGl0IGJlaGF2ZXMgYXMgY2xv
c2VseSBhcyBwb3NzaWJsZQotLy8gdG8gdGhlIE1vY2tSZWFsdGltZU1lZGlhU291cmNlIGNsYXNz
IGJ5IHdyYXBwaW5nIG91ciBvd24gc3ViY2xhc3Mgb2YgaXQuCi1jbGFzcyBNb2NrR1N0cmVhbWVy
VmlkZW9DYXB0dXJlU291cmNlIGZpbmFsIDogcHVibGljIEdTdHJlYW1lclZpZGVvQ2FwdHVyZVNv
dXJjZSwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6T2JzZXJ2ZXIgewotcHVibGljOgotICAgIE1vY2tH
U3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UoU3RyaW5nJiYgZGV2aWNlSUQsIFN0cmluZyYmIG5h
bWUsIFN0cmluZyYmIGhhc2hTYWx0KTsKLSAgICB+TW9ja0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNv
dXJjZSgpOwotICAgIE9wdGlvbmFsPEFwcGx5Q29uc3RyYWludHNFcnJvcj4gYXBwbHlDb25zdHJh
aW50cyhjb25zdCBNZWRpYUNvbnN0cmFpbnRzJik7Ci0gICAgdm9pZCBhcHBseUNvbnN0cmFpbnRz
KGNvbnN0IE1lZGlhQ29uc3RyYWludHMmLCBBcHBseUNvbnN0cmFpbnRzSGFuZGxlciYmKSBmaW5h
bDsKLQotcHJpdmF0ZToKLSAgICB2b2lkIGdlbmVyYXRlUHJlc2V0cygpIGZpbmFsOwotICAgIHZv
aWQgc3RvcFByb2R1Y2luZ0RhdGEoKSBmaW5hbDsKLSAgICB2b2lkIHN0YXJ0UHJvZHVjaW5nRGF0
YSgpIGZpbmFsOwotICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0dGlu
Z3MoKSBmaW5hbDsKLSAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBj
YXBhYmlsaXRpZXMoKSBmaW5hbDsKLSAgICB2b2lkIGNhcHR1cmVGYWlsZWQoKSBmaW5hbDsKLSAg
ICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJikgZmluYWw7Ci0KLSAgICBS
ZWY8V3JhcHBlZE1vY2tSZWFsdGltZVZpZGVvU291cmNlPiBtX3dyYXBwZWRTb3VyY2U7Ci19Owot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFN
KSAmJiBVU0UoTElCV0VCUlRDKSAmJiBVU0UoR1NUUkVBTUVSKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01vY2tSZWFsdGltZUF1ZGlv
U291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2dzdHJlYW1lci9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZUdTdHJlYW1lci5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMmNjMzlmMGYxOTEzM2I4YzlkZTdhN2M5MmY2NGUwZTI4MzZkNGRkNgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9Nb2Nr
UmVhbHRpbWVBdWRpb1NvdXJjZUdTdHJlYW1lci5jcHAKQEAgLTAsMCArMSwxNDQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTggTWV0cm9sb2dpY2FsIEdyb3VwIEIuVi4KKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBJZ2FsaWEgUy5MLgorICogQXV0aG9yOiBUaGliYXVsdCBTYXVuaWVyIDx0c2F1
bmllckBpZ2FsaWEuY29tPgorICogQXV0aG9yOiBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxleEBp
Z2FsaWEuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICog
YWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0p
ICYmIFVTRShMSUJXRUJSVEMpICYmIFVTRShHU1RSRUFNRVIpCisjaW5jbHVkZSAiTW9ja1JlYWx0
aW1lQXVkaW9Tb3VyY2VHU3RyZWFtZXIuaCIKKworI2luY2x1ZGUgIk1vY2tSZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGNvbnN0IGRv
dWJsZSBzX1RhdSA9IDIgKiBNX1BJOworc3RhdGljIGNvbnN0IGRvdWJsZSBzX0JpcEJvcER1cmF0
aW9uID0gMC4wNzsKK3N0YXRpYyBjb25zdCBkb3VibGUgc19CaXBCb3BWb2x1bWUgPSAwLjU7Citz
dGF0aWMgY29uc3QgZG91YmxlIHNfQmlwRnJlcXVlbmN5ID0gMTUwMDsKK3N0YXRpYyBjb25zdCBk
b3VibGUgc19Cb3BGcmVxdWVuY3kgPSA1MDA7CitzdGF0aWMgY29uc3QgZG91YmxlIHNfSHVtRnJl
cXVlbmN5ID0gMTUwOworc3RhdGljIGNvbnN0IGRvdWJsZSBzX0h1bVZvbHVtZSA9IDAuMTsKK3N0
YXRpYyBjb25zdCBkb3VibGUgc19Ob2lzZUZyZXF1ZW5jeSA9IDMwMDA7CitzdGF0aWMgY29uc3Qg
ZG91YmxlIHNfTm9pc2VWb2x1bWUgPSAwLjA1OworCitDYXB0dXJlU291cmNlT3JFcnJvciBNb2Nr
UmVhbHRpbWVBdWRpb1NvdXJjZTo6Y3JlYXRlKFN0cmluZyYmIGRldmljZUlELCBTdHJpbmcmJiBu
YW1lLCBTdHJpbmcmJiBoYXNoU2FsdCwgY29uc3QgTWVkaWFDb25zdHJhaW50cyogY29uc3RyYWlu
dHMpCit7CisjaWZuZGVmIE5ERUJVRworICAgIGF1dG8gZGV2aWNlID0gTW9ja1JlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXI6Om1vY2tEZXZpY2VXaXRoUGVyc2lzdGVudElEKGRldmljZUlEKTsKKyAg
ICBBU1NFUlQoZGV2aWNlKTsKKyAgICBpZiAoIWRldmljZSkKKyAgICAgICAgcmV0dXJuIHsgIk5v
IG1vY2sgbWljcm9waG9uZSBkZXZpY2UiX3MgfTsKKyNlbmRpZgorCisgICAgYXV0byBzb3VyY2Ug
PSBhZG9wdFJlZigqbmV3IE1vY2tSZWFsdGltZUF1ZGlvU291cmNlR1N0cmVhbWVyKFdURk1vdmUo
ZGV2aWNlSUQpLCBXVEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKGhhc2hTYWx0KSkpOworICAgIGlmIChj
b25zdHJhaW50cykgeworICAgICAgICBpZiAoYXV0byBlcnJvciA9IHNvdXJjZS0+YXBwbHlDb25z
dHJhaW50cygqY29uc3RyYWludHMpKQorICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUoZXJyb3It
Pm1lc3NhZ2UpOworICAgIH0KKworICAgIHJldHVybiBDYXB0dXJlU291cmNlT3JFcnJvcihXVEZN
b3ZlKHNvdXJjZSkpOworfQorCitSZWY8TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U+IE1vY2tSZWFs
dGltZUF1ZGlvU291cmNlR1N0cmVhbWVyOjpjcmVhdGVGb3JNb2NrQXVkaW9DYXB0dXJlcihTdHJp
bmcmJiBkZXZpY2VJRCwgU3RyaW5nJiYgbmFtZSwgU3RyaW5nJiYgaGFzaFNhbHQpCit7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VHU3RyZWFtZXIoV1RG
TW92ZShkZXZpY2VJRCksIFdURk1vdmUobmFtZSksIFdURk1vdmUoaGFzaFNhbHQpKSk7Cit9CisK
K01vY2tSZWFsdGltZUF1ZGlvU291cmNlR1N0cmVhbWVyOjpNb2NrUmVhbHRpbWVBdWRpb1NvdXJj
ZUdTdHJlYW1lcihTdHJpbmcmJiBkZXZpY2VJRCwgU3RyaW5nJiYgbmFtZSwgU3RyaW5nJiYgaGFz
aFNhbHQpCisgICAgOiBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZShXVEZNb3ZlKGRldmljZUlEKSwg
V1RGTW92ZShuYW1lKSwgV1RGTW92ZShoYXNoU2FsdCkpCit7Cit9CisKK3ZvaWQgTW9ja1JlYWx0
aW1lQXVkaW9Tb3VyY2VHU3RyZWFtZXI6OnJlbmRlcihTZWNvbmRzIGRlbHRhKQoreworICAgIGlm
ICghbV9iaXBCb3BCdWZmZXIuc2l6ZSgpKQorICAgICAgICByZWNvbmZpZ3VyZSgpOworCisgICAg
dWludDMyX3QgdG90YWxGcmFtZUNvdW50ID0gR1NUX1JPVU5EX1VQXzE2KHN0YXRpY19jYXN0PHNp
emVfdD4oZGVsdGEuc2Vjb25kcygpICogc2FtcGxlUmF0ZSgpKSk7CisgICAgdWludDMyX3QgZnJh
bWVDb3VudCA9IHN0ZDo6bWluKHRvdGFsRnJhbWVDb3VudCwgbV9tYXhpbWl1bUZyYW1lQ291bnQp
OworCisgICAgd2hpbGUgKGZyYW1lQ291bnQpIHsKKyAgICAgICAgdWludDMyX3QgYmlwQm9wU3Rh
cnQgPSBtX3NhbXBsZXNSZW5kZXJlZCAlIG1fYmlwQm9wQnVmZmVyLnNpemUoKTsKKyAgICAgICAg
dWludDMyX3QgYmlwQm9wUmVtYWluID0gbV9iaXBCb3BCdWZmZXIuc2l6ZSgpIC0gYmlwQm9wU3Rh
cnQ7CisgICAgICAgIHVpbnQzMl90IGJpcEJvcENvdW50ID0gc3RkOjptaW4oZnJhbWVDb3VudCwg
YmlwQm9wUmVtYWluKTsKKworICAgICAgICBBU1NFUlQobV9zdHJlYW1Gb3JtYXQpOworICAgICAg
ICBHc3RBdWRpb0luZm8qIGluZm8gPSBtX3N0cmVhbUZvcm1hdC0+Z2V0SW5mbygpOworICAgICAg
ICBHc3RCdWZmZXIqIGJ1ZmZlciA9IGdzdF9idWZmZXJfbmV3X2FsbG9jYXRlKG51bGxwdHIsIGJp
cEJvcENvdW50ICogbV9zdHJlYW1Gb3JtYXQtPmJ5dGVzUGVyRnJhbWUoKSwgbnVsbHB0cik7Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIGF1dG8gbWFwID0gR3N0TWFwcGVkQnVmZmVyOjpjcmVhdGUo
YnVmZmVyLCBHU1RfTUFQX1dSSVRFKTsKKworICAgICAgICAgICAgaWYgKG11dGVkKCkpCisgICAg
ICAgICAgICAgICAgZ3N0X2F1ZGlvX2Zvcm1hdF9maWxsX3NpbGVuY2UoaW5mby0+ZmluZm8sIG1h
cC0+ZGF0YSgpLCBtYXAtPnNpemUoKSk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBtZW1jcHkobWFwLT5kYXRhKCksICZtX2JpcEJvcEJ1ZmZlcltiaXBCb3BTdGFydF0sIHNp
emVvZihmbG9hdCkgKiBiaXBCb3BDb3VudCk7CisgICAgICAgICAgICAgICAgYWRkSHVtKHNfSHVt
Vm9sdW1lLCBzX0h1bUZyZXF1ZW5jeSwgc2FtcGxlUmF0ZSgpLCBtX3NhbXBsZXNSZW5kZXJlZCwg
cmVpbnRlcnByZXRfY2FzdDxmbG9hdCo+KG1hcC0+ZGF0YSgpKSwgYmlwQm9wQ291bnQpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgbV9zYW1wbGVzUmVuZGVyZWQgKz0gYmlw
Qm9wQ291bnQ7CisgICAgICAgIHRvdGFsRnJhbWVDb3VudCAtPSBiaXBCb3BDb3VudDsKKyAgICAg
ICAgZnJhbWVDb3VudCA9IHN0ZDo6bWluKHRvdGFsRnJhbWVDb3VudCwgbV9tYXhpbWl1bUZyYW1l
Q291bnQpOworCisgICAgICAgIEdSZWZQdHI8R3N0Q2Fwcz4gY2FwcyA9IGFkb3B0R1JlZihnc3Rf
YXVkaW9faW5mb190b19jYXBzKGluZm8pKTsKKyAgICAgICAgYXV0byBzYW1wbGUgPSBhZG9wdEdS
ZWYoZ3N0X3NhbXBsZV9uZXcoYnVmZmVyLCBjYXBzLmdldCgpLCBudWxscHRyLCBudWxscHRyKSk7
CisgICAgICAgIGF1dG8gZGF0YShzdGQ6OnVuaXF1ZV9wdHI8R1N0cmVhbWVyQXVkaW9EYXRhPihu
ZXcgR1N0cmVhbWVyQXVkaW9EYXRhKFdURk1vdmUoc2FtcGxlKSwgKmluZm8pKSk7CisgICAgICAg
IGF1dG8gbWVkaWFUaW1lID0gTWVkaWFUaW1lKChtX3NhbXBsZXNSZW5kZXJlZCAqIEdfVVNFQ19Q
RVJfU0VDKSAvIHNhbXBsZVJhdGUoKSwgR19VU0VDX1BFUl9TRUMpOworICAgICAgICBhdWRpb1Nh
bXBsZXNBdmFpbGFibGUobWVkaWFUaW1lLCAqZGF0YS5nZXQoKSwgKm1fc3RyZWFtRm9ybWF0LCBi
aXBCb3BDb3VudCk7CisgICAgfQorfQorCit2b2lkIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlR1N0
cmVhbWVyOjphZGRIdW0oZmxvYXQgYW1wbGl0dWRlLCBmbG9hdCBmcmVxdWVuY3ksIGZsb2F0IHNh
bXBsZVJhdGUsIHVpbnQ2NF90IHN0YXJ0LCBmbG9hdCAqcCwgdWludDY0X3QgY291bnQpCit7Cisg
ICAgZmxvYXQgaHVtUGVyaW9kID0gc2FtcGxlUmF0ZSAvIGZyZXF1ZW5jeTsKKyAgICBmb3IgKHVp
bnQ2NF90IGkgPSBzdGFydCwgZW5kID0gc3RhcnQgKyBjb3VudDsgaSA8IGVuZDsgKytpKSB7Cisg
ICAgICAgIGZsb2F0IGEgPSBhbXBsaXR1ZGUgKiBzaW4oaSAqIHNfVGF1IC8gaHVtUGVyaW9kKTsK
KyAgICAgICAgYSArPSAqcDsKKyAgICAgICAgKnArKyA9IGE7CisgICAgfQorfQorCit2b2lkIE1v
Y2tSZWFsdGltZUF1ZGlvU291cmNlR1N0cmVhbWVyOjpyZWNvbmZpZ3VyZSgpCit7CisgICAgR3N0
QXVkaW9JbmZvIGluZm87CisgICAgYXV0byByYXRlID0gc2FtcGxlUmF0ZSgpOworICAgIHNpemVf
dCBzYW1wbGVDb3VudCA9IDIgKiByYXRlOworCisgICAgbV9tYXhpbWl1bUZyYW1lQ291bnQgPSBX
VEY6OnJvdW5kVXBUb1Bvd2VyT2ZUd28ocmVuZGVySW50ZXJ2YWwoKS5zZWNvbmRzKCkgKiBzYW1w
bGVSYXRlKCkpOworICAgIGdzdF9hdWRpb19pbmZvX3NldF9mb3JtYXQoJmluZm8sIEdTVF9BVURJ
T19GT1JNQVRfRjMyTEUsIHJhdGUsIDEsIG51bGxwdHIpOworICAgIG1fc3RyZWFtRm9ybWF0ID0g
R1N0cmVhbWVyQXVkaW9TdHJlYW1EZXNjcmlwdGlvbihpbmZvKTsKKworICAgIG1fYmlwQm9wQnVm
ZmVyLnJlc2l6ZShzYW1wbGVDb3VudCk7CisgICAgbV9iaXBCb3BCdWZmZXIuZmlsbCgwKTsKKwor
ICAgIHNpemVfdCBiaXBCb3BTYW1wbGVDb3VudCA9IGNlaWwoc19CaXBCb3BEdXJhdGlvbiAqIHJh
dGUpOworICAgIHNpemVfdCBiaXBTdGFydCA9IDA7CisgICAgc2l6ZV90IGJvcFN0YXJ0ID0gcmF0
ZTsKKworICAgIGFkZEh1bShzX0JpcEJvcFZvbHVtZSwgc19CaXBGcmVxdWVuY3ksIHJhdGUsIDAs
IG1fYmlwQm9wQnVmZmVyLmRhdGEoKSArIGJpcFN0YXJ0LCBiaXBCb3BTYW1wbGVDb3VudCk7Cisg
ICAgYWRkSHVtKHNfQmlwQm9wVm9sdW1lLCBzX0JvcEZyZXF1ZW5jeSwgcmF0ZSwgMCwgbV9iaXBC
b3BCdWZmZXIuZGF0YSgpICsgYm9wU3RhcnQsIGJpcEJvcFNhbXBsZUNvdW50KTsKKyAgICBpZiAo
IWVjaG9DYW5jZWxsYXRpb24oKSkKKyAgICAgICAgYWRkSHVtKHNfTm9pc2VWb2x1bWUsIHNfTm9p
c2VGcmVxdWVuY3ksIHJhdGUsIDAsIG1fYmlwQm9wQnVmZmVyLmRhdGEoKSwgc2FtcGxlQ291bnQp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFf
U1RSRUFNKSAmJiBVU0UoTElCV0VCUlRDKSAmJiBVU0UoR1NUUkVBTUVSKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01vY2tSZWFsdGlt
ZUF1ZGlvU291cmNlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9nc3RyZWFtZXIvTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VHU3RyZWFtZXIuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5hY2EwNDk0ZWNmN2M3OGQwNWUwNzA2OWM2ZWU0NmY2YTRhOGUxZDk2Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01v
Y2tSZWFsdGltZUF1ZGlvU291cmNlR1N0cmVhbWVyLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOCBNZXRyb2xvZ2ljYWwgR3JvdXAgQi5WLgorICogQ29weXJpZ2h0
IChDKSAyMDIwIElnYWxpYSBTLkwuCisgKiBBdXRob3I6IFRoaWJhdWx0IFNhdW5pZXIgPHRzYXVu
aWVyQGlnYWxpYS5jb20+CisgKiBBdXRob3I6IEFsZWphbmRybyBHLiBDYXN0cm8gIDxhbGV4QGln
YWxpYS5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBh
aW50IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0Uo
TElCV0VCUlRDKSAmJiBVU0UoR1NUUkVBTUVSKQorCisjaW5jbHVkZSAiR1N0cmVhbWVyQXVkaW9E
YXRhLmgiCisjaW5jbHVkZSAiR1N0cmVhbWVyQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIgorI2lu
Y2x1ZGUgIk1vY2tSZWFsdGltZUF1ZGlvU291cmNlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VHU3RyZWFtZXIgZmluYWwgOiBwdWJsaWMg
TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8TW9ja1Jl
YWx0aW1lQXVkaW9Tb3VyY2U+IGNyZWF0ZUZvck1vY2tBdWRpb0NhcHR1cmVyKFN0cmluZyYmIGRl
dmljZUlELCBTdHJpbmcmJiBuYW1lLCBTdHJpbmcmJiBoYXNoU2FsdCk7CisKKyAgICB+TW9ja1Jl
YWx0aW1lQXVkaW9Tb3VyY2VHU3RyZWFtZXIoKSA9IGRlZmF1bHQ7CisKK3Byb3RlY3RlZDoKKyAg
ICB2b2lkIHJlbmRlcihTZWNvbmRzKSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xh
c3MgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U7CisgICAgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VH
U3RyZWFtZXIoU3RyaW5nJiYgZGV2aWNlSUQsIFN0cmluZyYmIG5hbWUsIFN0cmluZyYmIGhhc2hT
YWx0KTsKKyAgICB2b2lkIHJlY29uZmlndXJlKCk7CisgICAgdm9pZCBhZGRIdW0oZmxvYXQgYW1w
bGl0dWRlLCBmbG9hdCBmcmVxdWVuY3ksIGZsb2F0IHNhbXBsZVJhdGUsIHVpbnQ2NF90IHN0YXJ0
LCBmbG9hdCAqcCwgdWludDY0X3QgY291bnQpOworCisgICAgT3B0aW9uYWw8R1N0cmVhbWVyQXVk
aW9TdHJlYW1EZXNjcmlwdGlvbj4gbV9zdHJlYW1Gb3JtYXQ7CisgICAgVmVjdG9yPGZsb2F0PiBt
X2JpcEJvcEJ1ZmZlcjsKKyAgICB1aW50MzJfdCBtX21heGltaXVtRnJhbWVDb3VudDsKKyAgICB1
aW50NjRfdCBtX3NhbXBsZXNFbWl0dGVkIHsgMCB9OworICAgIHVpbnQ2NF90IG1fc2FtcGxlc1Jl
bmRlcmVkIHsgMCB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
RU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKExJQldFQlJUQykgJiYgVVNFKEdTVFJFQU1FUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1l
ci9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VHU3Ry
ZWFtZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE4MjRmOWRhNTBiOWFjZmNmMzkyYzViM2VjMGU0ZWJiYTNj
OWYxNmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9nc3RyZWFtZXIvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC0w
LDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggTWV0cm9sb2dpY2FsIEdyb3Vw
IEIuVi4KKyAqIENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy5MLgorICogQXV0aG9yOiBUaGli
YXVsdCBTYXVuaWVyIDx0c2F1bmllckBpZ2FsaWEuY29tPgorICogQXV0aG9yOiBBbGVqYW5kcm8g
Ry4gQ2FzdHJvIDxhbGV4QGlnYWxpYS5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgKiBhaW50IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKExJQldFQlJUQykgJiYgVVNFKEdTVFJFQU1FUikKKyNp
bmNsdWRlICJNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZUdTdHJlYW1lci5oIgorCisjaW5jbHVkZSAi
TWVkaWFTYW1wbGVHU3RyZWFtZXIuaCIKKyNpbmNsdWRlICJNb2NrUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0NhcHR1cmVTb3VyY2VPckVycm9y
IE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpjcmVhdGUoU3RyaW5nJiYgZGV2aWNlSUQsIFN0cmlu
ZyYmIG5hbWUsIFN0cmluZyYmIGhhc2hTYWx0LCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzKiBjb25z
dHJhaW50cykKK3sKKyNpZm5kZWYgTkRFQlVHCisgICAgYXV0byBkZXZpY2UgPSBNb2NrUmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlcjo6bW9ja0RldmljZVdpdGhQZXJzaXN0ZW50SUQoZGV2aWNlSUQp
OworICAgIEFTU0VSVChkZXZpY2UpOworICAgIGlmICghZGV2aWNlKQorICAgICAgICByZXR1cm4g
eyAiTm8gbW9jayBjYW1lcmEgZGV2aWNlIl9zIH07CisjZW5kaWYKKworICAgIGF1dG8gc291cmNl
ID0gYWRvcHRSZWYoKm5ldyBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZUdTdHJlYW1lcihXVEZNb3Zl
KGRldmljZUlEKSwgV1RGTW92ZShuYW1lKSwgV1RGTW92ZShoYXNoU2FsdCkpKTsKKyAgICBpZiAo
Y29uc3RyYWludHMpIHsKKyAgICAgICAgaWYgKGF1dG8gZXJyb3IgPSBzb3VyY2UtPmFwcGx5Q29u
c3RyYWludHMoKmNvbnN0cmFpbnRzKSkKKyAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGVycm9y
LT5tZXNzYWdlKTsKKyAgICB9CisKKyAgICByZXR1cm4gQ2FwdHVyZVNvdXJjZU9yRXJyb3IoUmVh
bHRpbWVWaWRlb1NvdXJjZTo6Y3JlYXRlKFdURk1vdmUoc291cmNlKSkpOworfQorCitSZWY8TW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2U+IE1vY2tSZWFsdGltZVZpZGVvU291cmNlR1N0cmVhbWVyOjpj
cmVhdGVGb3JNb2NrRGlzcGxheUNhcHR1cmVyKFN0cmluZyYmIGRldmljZUlELCBTdHJpbmcmJiBu
YW1lLCBTdHJpbmcmJiBoYXNoU2FsdCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNb2Nr
UmVhbHRpbWVWaWRlb1NvdXJjZUdTdHJlYW1lcihXVEZNb3ZlKGRldmljZUlEKSwgV1RGTW92ZShu
YW1lKSwgV1RGTW92ZShoYXNoU2FsdCkpKTsKK30KKworTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VH
U3RyZWFtZXI6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlR1N0cmVhbWVyKFN0cmluZyYmIGRldmlj
ZUlELCBTdHJpbmcmJiBuYW1lLCBTdHJpbmcmJiBoYXNoU2FsdCkKKyAgICA6IE1vY2tSZWFsdGlt
ZVZpZGVvU291cmNlKFdURk1vdmUoZGV2aWNlSUQpLCBXVEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKGhh
c2hTYWx0KSkKK3sKK30KKwordm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZUdTdHJlYW1lcjo6
dXBkYXRlU2FtcGxlQnVmZmVyKCkKK3sKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gdGhpcy0+aW1h
Z2VCdWZmZXIoKTsKKyAgICBpZiAoIWltYWdlQnVmZmVyKQorICAgICAgICByZXR1cm47CisKKyAg
ICBhdXRvIGltYWdlU2l6ZSA9IHNpemUoKTsKKyAgICBhdXRvIGNhcHMgPSBhZG9wdEdSZWYoZ3N0
X2NhcHNfbmV3X3NpbXBsZSgidmlkZW8veC1yYXciLCAiZm9ybWF0IiwgR19UWVBFX1NUUklORywg
IkJHUkEiLAorICAgICAgICAid2lkdGgiLCBHX1RZUEVfSU5ULCBpbWFnZVNpemUud2lkdGgoKSwg
ImhlaWdodCIsIEdfVFlQRV9JTlQsIGltYWdlU2l6ZS5oZWlnaHQoKSwgbnVsbHB0cikpOworCisg
ICAgYXV0byBkYXRhID0gaW1hZ2VCdWZmZXItPnRvQkdSQURhdGEoKTsKKyAgICBhdXRvIHNpemUg
PSBkYXRhLnNpemUoKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGFkb3B0R1JlZihnc3RfYnVmZmVyX25l
d193cmFwcGVkKGdfbWVtZHVwKGRhdGEucmVsZWFzZUJ1ZmZlcigpLmdldCgpLCBzaXplKSwgc2l6
ZSkpOworICAgIGF1dG8gc2FtcGxlVGltZSA9IE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZSgo
ZWxhcHNlZFRpbWUoKSArIDEwMF9tcykuc2Vjb25kcygpKTsKKyAgICBHU1RfQlVGRkVSX1BUUyhi
dWZmZXIuZ2V0KCkpID0gdG9Hc3RDbG9ja1RpbWUoc2FtcGxlVGltZSk7CisgICAgYXV0byBnc3RT
YW1wbGUgPSBhZG9wdEdSZWYoZ3N0X3NhbXBsZV9uZXcoYnVmZmVyLmdldCgpLCBjYXBzLmdldCgp
LCBudWxscHRyLCBudWxscHRyKSk7CisgICAgYXV0byBzYW1wbGUgPSBNZWRpYVNhbXBsZUdTdHJl
YW1lcjo6Y3JlYXRlKFdURk1vdmUoZ3N0U2FtcGxlKSwgaW1hZ2VTaXplLCB7IH0pOworICAgIGRp
c3BhdGNoTWVkaWFTYW1wbGVUb09ic2VydmVycyhzYW1wbGUuZ2V0KCkpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0Uo
TElCV0VCUlRDKSAmJiBVU0UoR1NUUkVBTUVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01vY2tSZWFsdGltZVZpZGVvU291cmNlR1N0
cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VHU3RyZWFtZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNDIxNzkxMjY5
ZjcwNjNmMzMwM2JhNjk5MDQxYmE2N2RmZGJlMmEzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01vY2tSZWFsdGltZVZpZGVv
U291cmNlR1N0cmVhbWVyLmgKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxOCBNZXRyb2xvZ2ljYWwgR3JvdXAgQi5WLgorICogQ29weXJpZ2h0IChDKSAyMDIwIElnYWxp
YSBTLkwuCisgKiBBdXRob3I6IFRoaWJhdWx0IFNhdW5pZXIgPHRzYXVuaWVyQGlnYWxpYS5jb20+
CisgKiBBdXRob3I6IEFsZWphbmRybyBHLiBDYXN0cm8gPGFsZXhAaWdhbGlhLmNvbT4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFpbnQgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShMSUJXRUJSVEMpICYmIFVT
RShHU1RSRUFNRVIpCisKKyNpbmNsdWRlICJNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1vY2tSZWFsdGltZVZpZGVvU291cmNlR1N0cmVh
bWVyIGZpbmFsIDogcHVibGljIE1vY2tSZWFsdGltZVZpZGVvU291cmNlIHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUmVmPE1vY2tSZWFsdGltZVZpZGVvU291cmNlPiBjcmVhdGVGb3JNb2NrRGlzcGxh
eUNhcHR1cmVyKFN0cmluZyYmIGRldmljZUlELCBTdHJpbmcmJiBuYW1lLCBTdHJpbmcmJiBoYXNo
U2FsdCk7CisKKyAgICB+TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VHU3RyZWFtZXIoKSA9IGRlZmF1
bHQ7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIE1vY2tSZWFsdGltZVZpZGVvU291cmNl
OworICAgIE1vY2tSZWFsdGltZVZpZGVvU291cmNlR1N0cmVhbWVyKFN0cmluZyYmIGRldmljZUlE
LCBTdHJpbmcmJiBuYW1lLCBTdHJpbmcmJiBoYXNoU2FsdCk7CisKKyAgICB2b2lkIHVwZGF0ZVNh
bXBsZUJ1ZmZlcigpIGZpbmFsOworICAgIGJvb2wgY2FuUmVzaXplVmlkZW9GcmFtZXMoKSBjb25z
dCBmaW5hbCB7IHJldHVybiB0cnVlOyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoTElCV0VCUlRDKSAmJiBVU0Uo
R1NUUkVBTUVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2Nr
UmVhbHRpbWVWaWRlb1NvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2Nr
UmVhbHRpbWVWaWRlb1NvdXJjZS5oCmluZGV4IGY3OTAzMTZmNTM4YjViZmUwZjA2NzVhOWFmMWJl
NTVhNzM3ODQyYTAuLjIwNDE2YzQ5NjE1YTg2MTFiMjgwNDViYzE3ZDFlYzJiNTFjODI1OWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZp
ZGVvU291cmNlLmgKQEAgLTU3LDggKzU3LDYgQEAgcHJvdGVjdGVkOgogCiAgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZVNhbXBsZUJ1ZmZlcigpID0gMDsKIAotICAgIHZvaWQgc2V0Q3VycmVudEZyYW1l
KE1lZGlhU2FtcGxlJik7Ci0KICAgICBTZWNvbmRzIGVsYXBzZWRUaW1lKCk7CiAgICAgdm9pZCBz
ZXR0aW5nc0RpZENoYW5nZShPcHRpb25TZXQ8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpG
bGFnPikgb3ZlcnJpZGU7CiAgICAgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gc2FtcGxlUm90
YXRpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2RldmljZU9yaWVudGF0aW9uOyB9CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggZDNiYjc3NjMyMmQ4NjE2MTc5Njk0MDI1ODFjZmY3Mzc3MWQ1ZWQ5ZC4uZGMwM2ZkZTg3YWNh
MDc4M2EyMGFiM2Q5NDBmMDc1Yjc2ZjIwMGM4ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIw
LTA0LTI5ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAg
ICBbR1N0cmVhbWVyXSBmYXN0L21lZGlhc3RyZWFtL2dldC11c2VyLW1lZGlhLWRldmljZS1pZC5o
dG1sIGZhaWxpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5MDU3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnM6IFVuc2tpcCBub3ctcGFzc2luZyBt
ZWRpYXN0cmVhbSB0ZXN0cy4KKwogMjAyMC0wNC0yOCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3Jt
YW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAgbWVkaWEvdHJhY2svdHJhY2stbG9hZC1lcnJvci1y
ZWFkeVN0YXRlLmh0bWwgcGFzc2VzIG9ubHkgd2hlbiBhY2NvbXBhbmllZCBieSBzb21lIG90aGVy
IHRlc3RzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0
aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDcz
NmE3NTAyYTZkNmE3MjU2MDVlNTgxNTI2YmYzY2Y1N2FkZjQwMmEuLjJjMDAxYjU4N2EyZDBhNTJk
MGYzNTAzZGQyMTJkM2VlMzJkNDdiNzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2d0ay9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0
RXhwZWN0YXRpb25zCkBAIC01NTksMTEgKzU1OSw2IEBAIHdlYmtpdC5vcmcvYi8yMDY0NjQgd2Vi
cnRjL3BlZXJjb25uZWN0aW9uLXBhZ2UtY2FjaGUuaHRtbCBbIEZhaWx1cmUgXQogCiB3ZWJraXQu
b3JnL2IvMTg2OTMzIHdlYnJ0Yy9wZWVyLWNvbm5lY3Rpb24tY3JlYXRlTWVkaWFTdHJlYW1EZXN0
aW5hdGlvbi5odG1sCiAKLXdlYmtpdC5vcmcvYi8yMDU5MzAgd2VicnRjL2F1ZGlvLXBlZXItY29u
bmVjdGlvbi13ZWJhdWRpby5odG1sIFsgRmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjA1OTMwIHdl
YnJ0Yy9wZWVyLWNvbm5lY3Rpb24tYXVkaW8tbXV0ZTIuaHRtbCBbIEZhaWx1cmUgXQotd2Via2l0
Lm9yZy9iLzIwNTkzMCB3ZWJydGMvcGVlci1jb25uZWN0aW9uLWF1ZGlvLXVubXV0ZS5odG1sIFsg
RmFpbHVyZSBTbG93IF0KLXdlYmtpdC5vcmcvYi8yMDU5MzAgd2VicnRjL3BlZXItY29ubmVjdGlv
bi1yZW1vdGUtYXVkaW8tbXV0ZTIuaHRtbCBbIEZhaWx1cmUgXQotCiBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy8gWyBTa2lwIF0KIGh0dHAvdGVzdHMvd2VicnRjIFsgU2tp
cCBdCiAKQEAgLTU4MSw3ICs1NzYsNiBAQCB3ZWJraXQub3JnL2IvNzkyMDMgZmFzdC9tZWRpYXN0
cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1tZWRpYS1zZXR1cC1jYWxsYmFja3Mtc2luZwogd2Via2l0
Lm9yZy9iLzc5MjAzIGZhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tbWVkaWEtc2V0
dXAtdHdvLWRpYWxvZ3MuaHRtbCBbIFBhc3MgRmFpbHVyZSBDcmFzaCBdCiB3ZWJraXQub3JnL2Iv
NzkyMDMgZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1zdGF0cy5odG1sIFsgVGlt
ZW91dCBDcmFzaCBdCiB3ZWJraXQub3JnL2IvNzkyMDMgZmFzdC9tZWRpYXN0cmVhbS9SVENSdHBT
ZW5kZXItcmVwbGFjZVRyYWNrLmh0bWwgWyBGYWlsdXJlIENyYXNoIF0KLXdlYmtpdC5vcmcvYi83
OTIwMyBmYXN0L21lZGlhc3RyZWFtL2NvbnN0cmFpbnQtaW50cmluc2ljLXNpemUuaHRtbCBbIFNr
aXAgXQogd2Via2l0Lm9yZy9iLzc5MjAzIGZhc3QvbWVkaWFzdHJlYW0vZ2V0LWRpc3BsYXktbWVk
aWEtbXV0ZWQuaHRtbCBbIFRpbWVvdXQgXQogd2Via2l0Lm9yZy9iLzc5MjAzIGZhc3QvbWVkaWFz
dHJlYW0vZ2V0VXNlck1lZGlhLXdlYmF1ZGlvLmh0bWwgWyBUaW1lb3V0IFBhc3MgXQogd2Via2l0
Lm9yZy9iLzc5MjAzIGZhc3QvbWVkaWFzdHJlYW0vbW9jay1tZWRpYS1zb3VyY2Utd2ViYXVkaW8u
aHRtbCBbIFRpbWVvdXQgUGFzcyBdCkBAIC01OTQsNyArNTg4LDYgQEAgd2Via2l0Lm9yZy9iLzE3
MzI1NyBmYXN0L21lZGlhc3RyZWFtL2dldFVzZXJNZWRpYS1ncmFudC1wZXJzaXN0ZW5jeTMuaHRt
bCBbIFBhc3MKIHdlYmtpdC5vcmcvYi8yMDc2NzUgZmFzdC9tZWRpYXN0cmVhbS9kZWxheWVkLXBl
cm1pc3Npb24tYWxsb3dlZC5odG1sIFsgUGFzcyBDcmFzaCBdCiB3ZWJraXQub3JnL2IvMjA4MTIw
IGZhc3QvbWVkaWFzdHJlYW0vbWVkaWEtZWxlbWVudC1jdXJyZW50LXRpbWUuaHRtbCBbIEZhaWx1
cmUgXQogd2Via2l0Lm9yZy9iLzIwOTEzMCBmYXN0L21lZGlhc3RyZWFtL2NoYW5nZS10cmFja3Mt
bWVkaWEtc3RyZWFtLWJlaW5nLXBsYXllZC5odG1sIFsgQ3Jhc2ggUGFzcyBUaW1lb3V0IF0KLXdl
YmtpdC5vcmcvYi8yMTAzMzcgZmFzdC9tZWRpYXN0cmVhbS9tZWRpYXN0cmVhbXRyYWNrLWF1ZGlv
LWNsb25lLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMTAzODUgZmFzdC9tZWRpYXN0
cmVhbS9hdWRpby10cmFjay1lbmFibGVkLmh0bWwgWyBDcmFzaCBQYXNzIF0KIHdlYmtpdC5vcmcv
Yi8yMTAzODUgZmFzdC9tZWRpYXN0cmVhbS9nZXRVc2VyTWVkaWEtZGVmYXVsdC5odG1sIFsgQ3Jh
c2ggUGFzcyBdCiB3ZWJraXQub3JnL2IvMjEwMzg1IGZhc3QvbWVkaWFzdHJlYW0vc3RyZWFtLXN3
aXRjaC5odG1sIFsgQ3Jhc2ggUGFzcyBdCkBAIC02MDYsOCArNTk5LDYgQEAgd2Via2l0Lm9yZy9i
LzE2OTgxMSBmYXN0L21lZGlhc3RyZWFtL2NhcHR1cmVTdHJlYW0vIFsgRmFpbHVyZSBdCiB3ZWJr
aXQub3JnL2IvMTY5ODExIGZhc3QvbWVkaWFzdHJlYW0vY2FwdHVyZVN0cmVhbS9jYW52YXMyZC5o
dG1sIFsgQ3Jhc2ggVGltZW91dCBdCiB3ZWJraXQub3JnL2IvMTY5ODExIGZhc3QvbWVkaWFzdHJl
YW0vY2FwdHVyZVN0cmVhbS9jYW52YXMzZC5odG1sIFsgQ3Jhc2ggVGltZW91dCBdCiAKLXdlYmtp
dC5vcmcvYi8xOTA1NzYgZmFzdC9tZWRpYXN0cmVhbS9nZXQtdXNlci1tZWRpYS1kZXZpY2UtaWQu
aHRtbCBbIEZhaWx1cmUgXQotCiAjIE5vIHN1cHBvcnQgZm9yIEdQVVByb2Nlc3MgeWV0CiBmYXN0
L21lZGlhc3RyZWFtL2NhcHR1cmVJbkdQVVByb2Nlc3MuaHRtbCBbIFNraXAgXQogCkBAIC0xMjg1
LDEwICsxMjc2LDggQEAgd2Via2l0Lm9yZy9iLzIwNjY1MyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2NsaXBib2FyZC1hcGlzL2FzeW5jLXdyaXRlLXQKIAogd2Via2l0Lm9yZy9iLzIw
NjY1NSBbIFJlbGVhc2UgXSBpbnNwZWN0b3IvcGFnZS9vdmVycmlkZVNldHRpbmctTW9ja0NhcHR1
cmVEZXZpY2VzRW5hYmxlZC5odG1sIFsgRmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8yMDY2NTYg
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYWNhcHR1cmUtc3RyZWFtcy9NZWRp
YVN0cmVhbS1NZWRpYUVsZW1lbnQtZmlyc3RmcmFtZS5odHRwcy5odG1sIFsgRmFpbHVyZSBdCiB3
ZWJraXQub3JnL2IvMjA2NjU2IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWFj
YXB0dXJlLXN0cmVhbXMvTWVkaWFTdHJlYW0tcmVtb3ZldHJhY2suaHR0cHMuaHRtbCBbIEZhaWx1
cmUgQ3Jhc2ggXQogd2Via2l0Lm9yZy9iLzIwNjY1NiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL21lZGlhY2FwdHVyZS1zdHJlYW1zL01lZGlhU3RyZWFtVHJhY2stTWVkaWFFbGVtZW50
LWRpc2FibGVkLXZpZGVvLWlzLWJsYWNrLmh0dHBzLmh0bWwgWyBGYWlsdXJlIF0KLXdlYmtpdC5v
cmcvYi8yMDY2NTYgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYWNhcHR1cmUt
c3RyZWFtcy9NZWRpYVN0cmVhbVRyYWNrLWdldFNldHRpbmdzLmh0dHBzLmh0bWwgWyBGYWlsdXJl
IF0KIHdlYmtpdC5vcmcvYi8yMDY2NTYgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9t
ZWRpYWNhcHR1cmUtc3RyZWFtcy9NZWRpYVN0cmVhbS1NZWRpYUVsZW1lbnQtcHJlbG9hZC1ub25l
LW1hbnVhbC5odHRwcy5odG1sIFsgQ3Jhc2ggRmFpbHVyZSBQYXNzIF0KIAogIyBMRkMgKExheW91
dEZvcm1hdGluZ0NvbnRleHQgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdCkuCkBAIC0xNTc4LDEwICsx
NTY3LDkgQEAgd2Via2l0Lm9yZy9iLzIwOTUzMyBodHRwL3Rlc3RzL2NvbnRlbnRleHRlbnNpb25z
L3ZpZGVvLWVsZW1lbnQtcmVzb3VyY2UtdHlwZS5odG0KIHdlYmtpdC5vcmcvYi8yMDk1MzMgaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250
ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X2xvYWRzdGFydF9ub2F1dG9wbGF5Lmh0bWwgWyBDcmFz
aCBQYXNzIF0KIHdlYmtpdC5vcmcvYi8yMDk1MzMgbWVkaWEvdHJhY2svdHJhY2stYXV0b21hdGlj
LXN1YnRpdGxlcy5odG1sIFsgQ3Jhc2ggUGFzcyBdCiAKLXdlYmtpdC5vcmcvYi8yMTA5MjYgZmFz
dC9tZWRpYXN0cmVhbS9nZXREaXNwbGF5TWVkaWEtbWF4LWNvbnN0cmFpbnRzLmh0bWwgWyBDcmFz
aCBdCi13ZWJraXQub3JnL2IvMjEwOTI2IGZhc3QvbWVkaWFzdHJlYW0vZ2V0RGlzcGxheU1lZGlh
LW1heC1jb25zdHJhaW50czEuaHRtbCBbIENyYXNoIF0KLXdlYmtpdC5vcmcvYi8yMTA5MjYgZmFz
dC9tZWRpYXN0cmVhbS9nZXREaXNwbGF5TWVkaWEtbWF4LWNvbnN0cmFpbnRzMi5odG1sIFsgQ3Jh
c2ggXQotd2Via2l0Lm9yZy9iLzIxMDkyNiBmYXN0L21lZGlhc3RyZWFtL2dldERpc3BsYXlNZWRp
YS1tYXgtY29uc3RyYWludHMzLmh0bWwgWyBDcmFzaCBdCit3ZWJraXQub3JnL2IvMjEwOTI2IGZh
c3QvbWVkaWFzdHJlYW0vZ2V0RGlzcGxheU1lZGlhLW1heC1jb25zdHJhaW50czEuaHRtbCBbIFNr
aXAgXQord2Via2l0Lm9yZy9iLzIxMDkyNiBmYXN0L21lZGlhc3RyZWFtL2dldERpc3BsYXlNZWRp
YS1tYXgtY29uc3RyYWludHMyLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8yMTA5MjYgZmFz
dC9tZWRpYXN0cmVhbS9nZXREaXNwbGF5TWVkaWEtbWF4LWNvbnN0cmFpbnRzMy5odG1sIFsgU2tp
cCBdCiAKICMvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAjIEVuZCBvZiBDcmFzaGlu
ZyB0ZXN0cwpAQCAtMzMyNyw4ICszMzE1LDYgQEAgd2Via2l0Lm9yZy9iLzIwNjE0NyBpbnNwZWN0
b3IvZG9tLWRlYnVnZ2VyL2RvbS1icmVha3BvaW50cy5odG1sIFsgVGltZW91dCBdCiAKIHdlYmtp
dC5vcmcvYi8yMDYxNDggaHR0cC90ZXN0cy9sb2NhbC9maWxlLXVybC1ob3N0Lmh0bWwgWyBUaW1l
b3V0IF0KIAotd2Via2l0Lm9yZy9iLzIwNjE0OSB3ZWJydGMvcGVlci1jb25uZWN0aW9uLXJlbW90
ZS1hdWRpby1tdXRlLmh0bWwgWyBUaW1lb3V0IF0KLQogd2Via2l0Lm9yZy9iLzIwMjczNiBodHRw
L3Rlc3RzL2FwcGNhY2hlL3JlbW92ZS1jYWNoZS5odG1sIFsgRmFpbHVyZSBUaW1lb3V0IFBhc3Mg
XQogd2Via2l0Lm9yZy9iLzIwMjczNiBbIFJlbGVhc2UgXSBodHRwL3dwdC9jYWNoZS1zdG9yYWdl
L3F1b3RhLXRoaXJkLXBhcnR5Lmh0dHBzLmh0bWwgWyBGYWlsdXJlIFRpbWVvdXQgUGFzcyBdCiAK
QEAgLTQ0MzgsNyArNDQyNCw2IEBAIHdlYmtpdC5vcmcvYi8xNjI4MTUgZmFzdC90ZXh0L3Zhcmlh
dGlvbnMvc2tpYS1wb3N0c2NyaXB0LW5hbWUuaHRtbCBbIEltYWdlT25seUZhCiB3ZWJraXQub3Jn
L2IvMTkyODgzIGZhc3QvY29va2llcy9jb29raWUtYXZlcnNlLWRvY3VtZW50Lmh0bWwgWyBGYWls
dXJlIF0KIHdlYmtpdC5vcmcvYi8xOTI4ODMgZmFzdC9jb29raWVzL2xvY2FsLWZpbGUtY2FuLXNl
dC1jb29raWVzLmh0bWwgWyBGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzE5Mjg4NiBmYXN0L21l
ZGlhc3RyZWFtL21lZGlhLXN0cmVhbS1yZW5kZXJzLWZpcnN0LWZyYW1lLmh0bWwgWyBGYWlsdXJl
IF0KIHdlYmtpdC5vcmcvYi8xOTI4ODggZmFzdC9tZWRpYXN0cmVhbS9yZXNpemUtdHJpbS5odG1s
IFsgRmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8xOTI5MDAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9ldmVudHNvdXJjZS9mb3JtYXQtbWltZS1ib2d1cy5odG0gWyBGYWlsdXJlIF0K
QEAgLTQ2NjcsOCArNDY1Miw2IEBAIHdlYmtpdC5vcmcvYi8yMDc2NzggaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy91cmwvYS1lbGVtZW50LW9yaWdpbi5odG1sIFsKIHdlYmtpdC5vcmcv
Yi8yMDc2NzggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy91cmwvYS1lbGVtZW50LXho
dG1sLnhodG1sIFsgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjA3Njc4IGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdXJsL2EtZWxlbWVudC5odG1sIFsgRmFpbHVyZSBdCiAKLXdlYmtp
dC5vcmcvYi8yMTA4NDMgZmFzdC9tZWRpYXN0cmVhbS9tZWRpYXN0cmVhbXRyYWNrLXZpZGVvLWZy
YW1lUmF0ZS1jbG9uZS1pbmNyZWFzaW5nLmh0bWwgWyBGYWlsdXJlIF0KLQogIy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8KICMgRW5kIG9mIG5vbi1jcmFzaGluZywgbm9uLWZsYWt5IHRl
c3RzIGZhaWxpbmcKICMvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>397977</attachid>
            <date>2020-04-29 10:30:56 -0700</date>
            <delta_ts>2020-04-29 23:20:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190576-20200429183054.patch</filename>
            <type>text/plain</type>
            <size>49217</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwOTA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjEwNzFkYmU4OGUyZjRj
ZWI2MzczNzBkNTc4Nzc0MTdkMDNmNjA2Ni4uNDkyZGNiOTM3YmQxODQ4ZDJhNWQxZWE1YzcyMmY1
ZTFiZWQzMGNkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDIwLTA0LTI5ICBQaGls
aXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVy
XSBmYXN0L21lZGlhc3RyZWFtL2dldC11c2VyLW1lZGlhLWRldmljZS1pZC5odG1sIGZhaWxpbmcK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDU3Ngor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSB0ZXN0
IHdhcyBmYWlsaW5nIGR1ZSB0byBkZXZpY2VJZCBpbnZhbGlkIGNvbnN0cmFpbnQsIHdoaWNoIGxl
ZAorICAgICAgICBtZSB0byByZXdyaXRlIHRoZSBHU3RyZWFtZXIgTW9jayBzb3VyY2VzLCByZW1v
dmluZyB2YXJpb3VzIGhhY2tzCisgICAgICAgIGFuZCBhcHBzcmMgdXNhZ2UsIHdoaWNoIGlzIG5v
dCBuZWVkZWQgYmVjYXVzZSB3ZSByZWx5IG9uCisgICAgICAgIGF1ZGlvU2FtcGxlc0F2YWlsYWJs
ZSBhbmQgdmlkZW9TYW1wbGVzQXZhaWxhYmxlIG5vdGlmaWNhdGlvbnMuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBhbHNvIGZpeGVzIHRoZSBhdWRpbyBtb2NrLCB3aGljaCB3YXMgZ2VuZXJhdGluZyBz
aWxlbmNlCisgICAgICAgIHVudGlsIG5vdy4KKworICAgICAgICAqIHBsYXRmb3JtL0dTdHJlYW1l
ci5jbWFrZToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVh
bWVyTWVkaWFTdHJlYW1Tb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0TWVkaWFT
dHJlYW1UcmFja09ic2VydmVyOjpXZWJLaXRNZWRpYVN0cmVhbVRyYWNrT2JzZXJ2ZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9Nb2NrR1N0cmVhbWVyQXVkaW9D
YXB0dXJlU291cmNlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvTW9ja0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZS5jcHA6IFJlbW92ZWQu
CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01vY2tHU3RyZWFtZXJW
aWRlb0NhcHR1cmVTb3VyY2UuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9nc3RyZWFtZXIvTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VHU3RyZWFtZXIuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VHU3RyZWFtZXI6OmNyZWF0
ZUZvck1vY2tBdWRpb0NhcHR1cmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZUF1
ZGlvU291cmNlR1N0cmVhbWVyOjpNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZUdTdHJlYW1lcik6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZUdTdHJlYW1lcjo6cmVuZGVy
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZUF1ZGlvU291cmNlR1N0cmVhbWVyOjph
ZGRIdW0pOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VHU3RyZWFt
ZXI6OnJlY29uZmlndXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFt
ZXIvTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VHU3RyZWFtZXIuaDogQ29waWVkIGZyb20gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01vY2tHU3RyZWFtZXJBdWRp
b0NhcHR1cmVTb3VyY2UuaC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFt
ZXIvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VHU3RyZWFtZXIuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VHU3RyZWFtZXI6OmNyZWF0ZUZvck1vY2tEaXNw
bGF5Q2FwdHVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VH
U3RyZWFtZXI6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlR1N0cmVhbWVyKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlR1N0cmVhbWVyOjp1cGRhdGVTYW1wbGVCdWZm
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9Nb2NrUmVhbHRp
bWVWaWRlb1NvdXJjZUdTdHJlYW1lci5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01vY2tHU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3Vy
Y2UuaC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmg6
CisKIDIwMjAtMDQtMjkgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbTEZDXVtURkNdIFRha2Ugcm93IHNwYW4gaW50byBhY2NvdW50IHdoZW4gY2hlY2tpbmcgZm9y
IG1pc3NpbmcgY2VsbHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0dTdHJl
YW1lci5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0dTdHJlYW1lci5jbWFrZQppbmRl
eCA4OTUxY2IxZTZiMzhlZTdmNzcyYWRjYWNmYWU0MTFkYTYyNGY4MTUyLi43OWM5ZDI4MWYwMmQz
Y2U3NjUxZTVkM2FhNzY0YmE5YmZkYTkzZjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9HU3RyZWFtZXIuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vR1N0
cmVhbWVyLmNtYWtlCkBAIC01MCw4ICs1MCw4IEBAIGlmIChFTkFCTEVfVklERU8gT1IgRU5BQkxF
X1dFQl9BVURJTykKICAgICAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJl
YW1lclZpZGVvQ2FwdHVyZVNvdXJjZS5jcHAKICAgICAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0v
Z3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZXIuY3BwCiAgICAgICAgIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0ZyYW1lTGliV2ViUlRDLmNwcAotICAg
ICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTW9ja0dTdHJlYW1lckF1ZGlvQ2Fw
dHVyZVNvdXJjZS5jcHAKLSAgICAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01v
Y2tHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UuY3BwCisgICAgICAgIHBsYXRmb3JtL21lZGlh
c3RyZWFtL2dzdHJlYW1lci9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZUdTdHJlYW1lci5jcHAKKyAg
ICAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01vY2tSZWFsdGltZVZpZGVvU291
cmNlR1N0cmVhbWVyLmNwcAogICAgICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlTGliV2ViUlRDLmNwcAogICAgICAgICBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlTGliV2Vi
UlRDLmNwcAogICAgICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvUmVhbHRpbWVN
ZWRpYVNvdXJjZUNlbnRlckxpYldlYlJUQy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYVN0cmVhbVNvdXJj
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0
cmVhbWVyTWVkaWFTdHJlYW1Tb3VyY2UuY3BwCmluZGV4IDExNmI5NTJmMDFiY2U3NWZiNzVlY2I5
MjBjNjFlNjc0N2RlMGUxMjMuLmFhOWU1MzUxZWIzYjExYzlmNGNjOTIwNzMxMWYzODgyMzVmMjdi
YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJl
YW1lci9HU3RyZWFtZXJNZWRpYVN0cmVhbVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhU3RyZWFtU291cmNl
LmNwcApAQCAtMTEyLDcgKzExMiw4IEBAIGNsYXNzIFdlYktpdE1lZGlhU3RyZWFtVHJhY2tPYnNl
cnZlcgogcHVibGljOgogICAgIHZpcnR1YWwgfldlYktpdE1lZGlhU3RyZWFtVHJhY2tPYnNlcnZl
cigpIHsgfTsKICAgICBXZWJLaXRNZWRpYVN0cmVhbVRyYWNrT2JzZXJ2ZXIoV2ViS2l0TWVkaWFT
dHJlYW1TcmMqIHNyYykKLSAgICAgICAgOiBtX21lZGlhU3RyZWFtU3JjKHNyYykgeyB9CisgICAg
ICAgIDogbV9tZWRpYVN0cmVhbVNyYyhzcmMpCisgICAgICAgICwgbV9lbmFibGVkKHRydWUpIHsg
fQogICAgIHZvaWQgdHJhY2tTdGFydGVkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikgZmluYWwg
eyB9OwogCiAgICAgdm9pZCB0cmFja0VuZGVkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJiB0cmFj
aykgZmluYWwKQEAgLTEyMCwyNyArMTIxLDM2IEBAIHB1YmxpYzoKICAgICAgICAgd2Via2l0TWVk
aWFTdHJlYW1TcmNUcmFja0VuZGVkKG1fbWVkaWFTdHJlYW1TcmMsIHRyYWNrKTsKICAgICB9CiAK
KyAgICB2b2lkIHRyYWNrRW5hYmxlZENoYW5nZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmIHRy
YWNrKSBmaW5hbAorICAgIHsKKyAgICAgICAgbV9lbmFibGVkID0gdHJhY2suZW5hYmxlZCgpOwor
ICAgIH0KKwogICAgIHZvaWQgdHJhY2tNdXRlZENoYW5nZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZh
dGUmKSBmaW5hbCB7IH07CiAgICAgdm9pZCB0cmFja1NldHRpbmdzQ2hhbmdlZChNZWRpYVN0cmVh
bVRyYWNrUHJpdmF0ZSYpIGZpbmFsIHsgfTsKLSAgICB2b2lkIHRyYWNrRW5hYmxlZENoYW5nZWQo
TWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKSBmaW5hbCB7IH07CiAgICAgdm9pZCByZWFkeVN0YXRl
Q2hhbmdlZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpIGZpbmFsIHsgfTsKIAogICAgIHZvaWQg
c2FtcGxlQnVmZmVyVXBkYXRlZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYsIE1lZGlhU2FtcGxl
JiBzYW1wbGUpIGZpbmFsCiAgICAgewotICAgICAgICBhdXRvIGdzdHNhbXBsZSA9IHN0YXRpY19j
YXN0PE1lZGlhU2FtcGxlR1N0cmVhbWVyKj4oJnNhbXBsZSktPnBsYXRmb3JtU2FtcGxlKCkuc2Ft
cGxlLmdzdFNhbXBsZTsKKyAgICAgICAgaWYgKCFtX2VuYWJsZWQpCisgICAgICAgICAgICByZXR1
cm47CiAKLSAgICAgICAgd2Via2l0TWVkaWFTdHJlYW1TcmNQdXNoVmlkZW9TYW1wbGUobV9tZWRp
YVN0cmVhbVNyYywgZ3N0c2FtcGxlKTsKKyAgICAgICAgYXV0byBnc3RTYW1wbGUgPSBzdGF0aWNf
Y2FzdDxNZWRpYVNhbXBsZUdTdHJlYW1lcio+KCZzYW1wbGUpLT5wbGF0Zm9ybVNhbXBsZSgpLnNh
bXBsZS5nc3RTYW1wbGU7CisgICAgICAgIHdlYmtpdE1lZGlhU3RyZWFtU3JjUHVzaFZpZGVvU2Ft
cGxlKG1fbWVkaWFTdHJlYW1TcmMsIGdzdFNhbXBsZSk7CiAgICAgfQogCiAgICAgdm9pZCBhdWRp
b1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgUGxhdGZvcm1BdWRpb0Rh
dGEmIGF1ZGlvRGF0YSwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCkgZmlu
YWwKICAgICB7Ci0gICAgICAgIGF1dG8gYXVkaW9kYXRhID0gc3RhdGljX2Nhc3Q8Y29uc3QgR1N0
cmVhbWVyQXVkaW9EYXRhJj4oYXVkaW9EYXRhKTsKKyAgICAgICAgaWYgKCFtX2VuYWJsZWQpCisg
ICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgd2Via2l0TWVkaWFTdHJlYW1TcmNQdXNoQXVk
aW9TYW1wbGUobV9tZWRpYVN0cmVhbVNyYywgYXVkaW9kYXRhLmdldFNhbXBsZSgpKTsKKyAgICAg
ICAgYXV0byBkYXRhID0gc3RhdGljX2Nhc3Q8Y29uc3QgR1N0cmVhbWVyQXVkaW9EYXRhJj4oYXVk
aW9EYXRhKTsKKyAgICAgICAgd2Via2l0TWVkaWFTdHJlYW1TcmNQdXNoQXVkaW9TYW1wbGUobV9t
ZWRpYVN0cmVhbVNyYywgZGF0YS5nZXRTYW1wbGUoKSk7CiAgICAgfQogCiBwcml2YXRlOgogICAg
IFdlYktpdE1lZGlhU3RyZWFtU3JjKiBtX21lZGlhU3RyZWFtU3JjOworICAgIGJvb2wgbV9lbmFi
bGVkOwogfTsKIAogY2xhc3MgV2ViS2l0TWVkaWFTdHJlYW1PYnNlcnZlcgpAQCAtMTk4LDcgKzIw
OCw2IEBAIHN0cnVjdCBfV2ViS2l0TWVkaWFTdHJlYW1TcmMgewogICAgICAgICAgICAgc2VsZi0+
c2V0RW5vdWdoRGF0YSh0cnVlKTsKICAgICAgICAgfQogCi0KICAgICAgICAgdm9pZCBzZXRTcmMo
R3N0RWxlbWVudCAqc3JjKQogICAgICAgICB7CiAgICAgICAgICAgICBtX3NyYyA9IGFkb3B0R1Jl
ZihHU1RfRUxFTUVOVChnX29iamVjdF9yZWZfc2luayhzcmMpKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTW9ja0dTdHJlYW1lckF1
ZGlvQ2FwdHVyZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvTW9ja0dTdHJlYW1lckF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJkZWYzY2VhOGU1Y2ZmZGEyYjk1NGQ5ZjQwMWM3OTkxYmE1
NWQ3NjYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01vY2tHU3RyZWFtZXJB
dWRpb0NhcHR1cmVTb3VyY2UuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjIyICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTggTWV0cm9sb2dpY2FsIEdyb3VwIEIuVi4KLSAqIEF1dGhv
cjogVGhpYmF1bHQgU2F1bmllciA8dHNhdW5pZXJAaWdhbGlhLmNvbT4KLSAqIEF1dGhvcjogQWxl
amFuZHJvIEcuIENhc3RybyAgPGFsZXhAaWdhbGlhLmNvbT4KLSAqCi0gKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwot
ICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
LSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoK
LSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFpbnQgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0K
LSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoTElCV0VCUlRDKSAmJiBVU0UoR1NUUkVB
TUVSKQotI2luY2x1ZGUgIk1vY2tHU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2UuaCIKLQotI2lu
Y2x1ZGUgIkdTdHJlYW1lckF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaCIKLSNpbmNsdWRlICJNb2Nr
UmVhbHRpbWVBdWRpb1NvdXJjZS5oIgotCi0jaW5jbHVkZSA8Z3N0L2FwcC9nc3RhcHBzcmMuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgY29uc3QgZG91YmxlIHNfVGF1ID0gMiAq
IE1fUEk7Ci1zdGF0aWMgY29uc3QgZG91YmxlIHNfQmlwQm9wRHVyYXRpb24gPSAwLjA3Owotc3Rh
dGljIGNvbnN0IGRvdWJsZSBzX0JpcEJvcFZvbHVtZSA9IDAuNTsKLXN0YXRpYyBjb25zdCBkb3Vi
bGUgc19CaXBGcmVxdWVuY3kgPSAxNTAwOwotc3RhdGljIGNvbnN0IGRvdWJsZSBzX0JvcEZyZXF1
ZW5jeSA9IDUwMDsKLXN0YXRpYyBjb25zdCBkb3VibGUgc19IdW1GcmVxdWVuY3kgPSAxNTA7Ci1z
dGF0aWMgY29uc3QgZG91YmxlIHNfSHVtVm9sdW1lID0gMC4xOwotCi0vLyBGSVhNRTogQWRkIG5v
aXNlIG9mIGZyZXF1ZW5jeSAzMDAwIGluIGNhc2UgZWNob0NhbmNlbGxhdGlvbiBpcyBmYWxzZS4K
LWNsYXNzIFdyYXBwZWRNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZSA6IHB1YmxpYyBNb2NrUmVhbHRp
bWVBdWRpb1NvdXJjZSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXcmFwcGVkTW9ja1JlYWx0
aW1lQXVkaW9Tb3VyY2U+IGNyZWF0ZShTdHJpbmcmJiBkZXZpY2VJRCwgU3RyaW5nJiYgbmFtZSwg
U3RyaW5nJiYgaGFzaFNhbHQpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBX
cmFwcGVkTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UoV1RGTW92ZShkZXZpY2VJRCksIFdURk1vdmUo
bmFtZSksIFdURk1vdmUoaGFzaFNhbHQpKSk7Ci0gICAgfQotCi0gICAgUmVhbHRpbWVNZWRpYVNv
dXJjZSYgYXNSZWFsdGltZU1lZGlhU291cmNlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiAqdGhp
czsKLSAgICB9Ci0KLSAgICB2b2lkIHN0YXJ0KEdSZWZQdHI8R3N0RWxlbWVudD4gc3JjKQotICAg
IHsKLSAgICAgICAgbV9zcmMgPSBzcmM7Ci0gICAgICAgIGlmIChtX3N0cmVhbUZvcm1hdCkKLSAg
ICAgICAgICAgIGdzdF9hcHBfc3JjX3NldF9jYXBzKEdTVF9BUFBfU1JDKG1fc3JjLmdldCgpKSwg
bV9zdHJlYW1Gb3JtYXQtPmNhcHMoKSk7Ci0gICAgICAgIE1vY2tSZWFsdGltZUF1ZGlvU291cmNl
OjpzdGFydCgpOwotICAgIH0KLQotICAgIHZvaWQgYWRkSHVtKGZsb2F0IGFtcGxpdHVkZSwgZmxv
YXQgZnJlcXVlbmN5LCBmbG9hdCBzYW1wbGVSYXRlLCB1aW50NjRfdCBzdGFydCwgZmxvYXQgKnAs
IHVpbnQ2NF90IGNvdW50KQotICAgIHsKLSAgICAgICAgaWYgKGVjaG9DYW5jZWxsYXRpb24oKSkg
ewotICAgICAgICAgICAgR1NUX0RFQlVHKCJlY2hvIGNhbmNlbC4uLiwgbm8gaHVtIik7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgZmxvYXQgaHVtUGVyaW9kID0gc2Ft
cGxlUmF0ZSAvIGZyZXF1ZW5jeTsKLSAgICAgICAgZm9yICh1aW50NjRfdCBpID0gc3RhcnQsIGVu
ZCA9IHN0YXJ0ICsgY291bnQ7IGkgPCBlbmQ7ICsraSkgewotICAgICAgICAgICAgZmxvYXQgYSA9
IGFtcGxpdHVkZSAqIHNpbihpICogc19UYXUgLyBodW1QZXJpb2QpOwotICAgICAgICAgICAgYSAr
PSAqcDsKLSAgICAgICAgICAgICpwKysgPSBhOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdm9p
ZCByZW5kZXIoU2Vjb25kcyBkZWx0YSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3NyYyk7Ci0K
LSAgICAgICAgaWYgKCFtX2JpcEJvcEJ1ZmZlci5zaXplKCkpCi0gICAgICAgICAgICByZWNvbmZp
Z3VyZSgpOwotCi0gICAgICAgIHVpbnQzMl90IHRvdGFsRnJhbWVDb3VudCA9IEdTVF9ST1VORF9V
UF8xNihzdGF0aWNfY2FzdDxzaXplX3Q+KGRlbHRhLnNlY29uZHMoKSAqIHNhbXBsZVJhdGUoKSkp
OwotICAgICAgICB1aW50MzJfdCBmcmFtZUNvdW50ID0gc3RkOjptaW4odG90YWxGcmFtZUNvdW50
LCBtX21heGltaXVtRnJhbWVDb3VudCk7Ci0gICAgICAgIHdoaWxlIChmcmFtZUNvdW50KSB7Ci0g
ICAgICAgICAgICB1aW50MzJfdCBiaXBCb3BTdGFydCA9IG1fc2FtcGxlc1JlbmRlcmVkICUgbV9i
aXBCb3BCdWZmZXIuc2l6ZSgpOwotICAgICAgICAgICAgdWludDMyX3QgYmlwQm9wUmVtYWluID0g
bV9iaXBCb3BCdWZmZXIuc2l6ZSgpIC0gYmlwQm9wU3RhcnQ7Ci0gICAgICAgICAgICB1aW50MzJf
dCBiaXBCb3BDb3VudCA9IHN0ZDo6bWluKGZyYW1lQ291bnQsIGJpcEJvcFJlbWFpbik7Ci0KLSAg
ICAgICAgICAgIEdzdEJ1ZmZlciogYnVmZmVyID0gZ3N0X2J1ZmZlcl9uZXdfYWxsb2NhdGUobnVs
bHB0ciwgYmlwQm9wQ291bnQgKiBtX3N0cmVhbUZvcm1hdC0+Ynl0ZXNQZXJGcmFtZSgpLCBudWxs
cHRyKTsKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBhdXRvIG1hcCA9IEdzdE1hcHBl
ZEJ1ZmZlcjo6Y3JlYXRlKGJ1ZmZlciwgR1NUX01BUF9XUklURSk7Ci0KLSAgICAgICAgICAgICAg
ICBpZiAoIW11dGVkKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgbWVtY3B5KG1hcC0+ZGF0YSgp
LCAmbV9iaXBCb3BCdWZmZXJbYmlwQm9wU3RhcnRdLCBzaXplb2YoZmxvYXQpICogYmlwQm9wQ291
bnQpOwotICAgICAgICAgICAgICAgICAgICBhZGRIdW0oc19IdW1Wb2x1bWUsIHNfSHVtRnJlcXVl
bmN5LCBzYW1wbGVSYXRlKCksIG1fc2FtcGxlc1JlbmRlcmVkLCAoZmxvYXQqKW1hcC0+ZGF0YSgp
LCBiaXBCb3BDb3VudCk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAg
ICAgIG1lbXNldChtYXAtPmRhdGEoKSwgMCwgc2l6ZW9mKGZsb2F0KSAqIGJpcEJvcENvdW50KTsK
LSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZ3N0X2FwcF9zcmNfcHVzaF9idWZmZXIoR1NU
X0FQUF9TUkMobV9zcmMuZ2V0KCkpLCBidWZmZXIpOwotICAgICAgICAgICAgbV9zYW1wbGVzUmVu
ZGVyZWQgKz0gYmlwQm9wQ291bnQ7Ci0gICAgICAgICAgICB0b3RhbEZyYW1lQ291bnQgLT0gYmlw
Qm9wQ291bnQ7Ci0gICAgICAgICAgICBmcmFtZUNvdW50ID0gc3RkOjptaW4odG90YWxGcmFtZUNv
dW50LCBtX21heGltaXVtRnJhbWVDb3VudCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB2b2lk
IHJlY29uZmlndXJlKCkKLSAgICB7Ci0gICAgICAgIEdzdEF1ZGlvSW5mbyBpbmZvOwotICAgICAg
ICBhdXRvIHJhdGUgPSBzYW1wbGVSYXRlKCk7Ci0gICAgICAgIHNpemVfdCBzYW1wbGVDb3VudCA9
IDIgKiByYXRlOwotCi0gICAgICAgIG1fbWF4aW1pdW1GcmFtZUNvdW50ID0gV1RGOjpyb3VuZFVw
VG9Qb3dlck9mVHdvKHJlbmRlckludGVydmFsKCkuc2Vjb25kcygpICogc2FtcGxlUmF0ZSgpKTsK
LSAgICAgICAgZ3N0X2F1ZGlvX2luZm9fc2V0X2Zvcm1hdCgmaW5mbywgR1NUX0FVRElPX0ZPUk1B
VF9GMzJMRSwgcmF0ZSwgMSwgbnVsbHB0cik7Ci0gICAgICAgIG1fc3RyZWFtRm9ybWF0ID0gR1N0
cmVhbWVyQXVkaW9TdHJlYW1EZXNjcmlwdGlvbihpbmZvKTsKLQotICAgICAgICBpZiAobV9zcmMp
Ci0gICAgICAgICAgICBnc3RfYXBwX3NyY19zZXRfY2FwcyhHU1RfQVBQX1NSQyhtX3NyYy5nZXQo
KSksIG1fc3RyZWFtRm9ybWF0LT5jYXBzKCkpOwotCi0gICAgICAgIG1fYmlwQm9wQnVmZmVyLnJl
c2l6ZShzYW1wbGVDb3VudCk7Ci0gICAgICAgIG1fYmlwQm9wQnVmZmVyLmZpbGwoMCk7Ci0KLSAg
ICAgICAgc2l6ZV90IGJpcEJvcFNhbXBsZUNvdW50ID0gY2VpbChzX0JpcEJvcER1cmF0aW9uICog
cmF0ZSk7Ci0gICAgICAgIHNpemVfdCBiaXBTdGFydCA9IDA7Ci0gICAgICAgIHNpemVfdCBib3BT
dGFydCA9IHJhdGU7Ci0KLSAgICAgICAgYWRkSHVtKHNfQmlwQm9wVm9sdW1lLCBzX0JpcEZyZXF1
ZW5jeSwgcmF0ZSwgMCwgc3RhdGljX2Nhc3Q8ZmxvYXQqPihtX2JpcEJvcEJ1ZmZlci5kYXRhKCkg
KyBiaXBTdGFydCksIGJpcEJvcFNhbXBsZUNvdW50KTsKLSAgICAgICAgYWRkSHVtKHNfQmlwQm9w
Vm9sdW1lLCBzX0JvcEZyZXF1ZW5jeSwgcmF0ZSwgMCwgc3RhdGljX2Nhc3Q8ZmxvYXQqPihtX2Jp
cEJvcEJ1ZmZlci5kYXRhKCkgKyBib3BTdGFydCksIGJpcEJvcFNhbXBsZUNvdW50KTsKLSAgICB9
Ci0KLSAgICB2b2lkIHNldHRpbmdzRGlkQ2hhbmdlKE9wdGlvblNldDxSZWFsdGltZU1lZGlhU291
cmNlU2V0dGluZ3M6OkZsYWc+IHNldHRpbmdzKQotICAgIHsKLSAgICAgICAgaWYgKHNldHRpbmdz
LmNvbnRhaW5zKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZzo6U2FtcGxlUmF0ZSkp
Ci0gICAgICAgICAgICByZWNvbmZpZ3VyZSgpOwotCi0gICAgICAgIE1vY2tSZWFsdGltZUF1ZGlv
U291cmNlOjpzZXR0aW5nc0RpZENoYW5nZShzZXR0aW5ncyk7Ci0gICAgfQotCi0gICAgR1JlZlB0
cjxHc3RFbGVtZW50PiBtX3NyYzsKLSAgICBPcHRpb25hbDxHU3RyZWFtZXJBdWRpb1N0cmVhbURl
c2NyaXB0aW9uPiBtX3N0cmVhbUZvcm1hdDsKLSAgICBWZWN0b3I8ZmxvYXQ+IG1fYmlwQm9wQnVm
ZmVyOwotICAgIHVpbnQzMl90IG1fbWF4aW1pdW1GcmFtZUNvdW50OwotICAgIHVpbnQ2NF90IG1f
c2FtcGxlc0VtaXR0ZWQgeyAwIH07Ci0gICAgdWludDY0X3QgbV9zYW1wbGVzUmVuZGVyZWQgeyAw
IH07Ci0KLXByaXZhdGU6Ci0gICAgV3JhcHBlZE1vY2tSZWFsdGltZUF1ZGlvU291cmNlKFN0cmlu
ZyYmIGRldmljZUlELCBTdHJpbmcmJiBuYW1lLCBTdHJpbmcmJiBoYXNoU2FsdCkKLSAgICAgICAg
OiBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZShXVEZNb3ZlKGRldmljZUlEKSwgV1RGTW92ZShuYW1l
KSwgV1RGTW92ZShoYXNoU2FsdCkpCi0gICAgewotICAgIH0KLX07Ci0KLUNhcHR1cmVTb3VyY2VP
ckVycm9yIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjpjcmVhdGUoU3RyaW5nJiYgZGV2aWNlSUQs
Ci0gICAgU3RyaW5nJiYgbmFtZSwgU3RyaW5nJiYgaGFzaFNhbHQsIGNvbnN0IE1lZGlhQ29uc3Ry
YWludHMqIGNvbnN0cmFpbnRzKQotewotICAgIGF1dG8gc291cmNlID0gYWRvcHRSZWYoKm5ldyBN
b2NrR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlKFdURk1vdmUoZGV2aWNlSUQpLCBXVEZNb3Zl
KG5hbWUpLCBXVEZNb3ZlKGhhc2hTYWx0KSkpOwotCi0gICAgaWYgKGNvbnN0cmFpbnRzICYmIHNv
dXJjZS0+YXBwbHlDb25zdHJhaW50cygqY29uc3RyYWludHMpKQotICAgICAgICByZXR1cm4geyB9
OwotCi0gICAgcmV0dXJuIENhcHR1cmVTb3VyY2VPckVycm9yKFdURk1vdmUoc291cmNlKSk7Ci19
Ci0KLU9wdGlvbmFsPFJlYWx0aW1lTWVkaWFTb3VyY2U6OkFwcGx5Q29uc3RyYWludHNFcnJvcj4g
TW9ja0dTdHJlYW1lckF1ZGlvQ2FwdHVyZVNvdXJjZTo6YXBwbHlDb25zdHJhaW50cyhjb25zdCBN
ZWRpYUNvbnN0cmFpbnRzJiBjb25zdHJhaW50cykKLXsKLSAgICBtX3dyYXBwZWRTb3VyY2UtPmFw
cGx5Q29uc3RyYWludHMoY29uc3RyYWludHMpOwotICAgIHJldHVybiBHU3RyZWFtZXJBdWRpb0Nh
cHR1cmVTb3VyY2U6OmFwcGx5Q29uc3RyYWludHMoY29uc3RyYWludHMpOwotfQotCi12b2lkIE1v
Y2tHU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2U6OmFwcGx5Q29uc3RyYWludHMoY29uc3QgTWVk
aWFDb25zdHJhaW50cyYgY29uc3RyYWludHMsIEFwcGx5Q29uc3RyYWludHNIYW5kbGVyJiYgY29t
cGxldGlvbkhhbmRsZXIpCi17Ci0gICAgbV93cmFwcGVkU291cmNlLT5hcHBseUNvbnN0cmFpbnRz
KGNvbnN0cmFpbnRzLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci19Ci0KLU1vY2tHU3Ry
ZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2U6Ok1vY2tHU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2Uo
U3RyaW5nJiYgZGV2aWNlSUQsIFN0cmluZyYmIG5hbWUsIFN0cmluZyYmIGhhc2hTYWx0KQotICAg
IDogR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlKFN0cmluZyB7IGRldmljZUlEIH0sIFN0cmlu
ZyB7IG5hbWUgfSwgU3RyaW5nIHsgaGFzaFNhbHQgfSkKLSAgICAsIG1fd3JhcHBlZFNvdXJjZShX
cmFwcGVkTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OmNyZWF0ZShXVEZNb3ZlKGRldmljZUlEKSwg
V1RGTW92ZShuYW1lKSwgV1RGTW92ZShoYXNoU2FsdCkpKQotewotICAgIG1fd3JhcHBlZFNvdXJj
ZS0+YWRkT2JzZXJ2ZXIoKnRoaXMpOwotfQotCi1Nb2NrR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291
cmNlOjp+TW9ja0dTdHJlYW1lckF1ZGlvQ2FwdHVyZVNvdXJjZSgpCi17Ci0gICAgbV93cmFwcGVk
U291cmNlLT5yZW1vdmVPYnNlcnZlcigqdGhpcyk7Ci19Ci0KLXZvaWQgTW9ja0dTdHJlYW1lckF1
ZGlvQ2FwdHVyZVNvdXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEoKQotewotICAgIG1fd3JhcHBlZFNv
dXJjZS0+c3RvcCgpOwotCi0gICAgR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlOjpzdG9wUHJv
ZHVjaW5nRGF0YSgpOwotfQotCi12b2lkIE1vY2tHU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2U6
OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCi17Ci0gICAgR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNl
OjpzdGFydFByb2R1Y2luZ0RhdGEoKTsKLSAgICBzdGF0aWNfY2FzdDxXcmFwcGVkTW9ja1JlYWx0
aW1lQXVkaW9Tb3VyY2UmPihtX3dyYXBwZWRTb3VyY2UuZ2V0KCkpLnN0YXJ0KGNhcHR1cmVyKCkt
PnNvdXJjZSgpKTsKLX0KLQotY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBNb2Nr
R1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlOjpzZXR0aW5ncygpCi17Ci0gICAgcmV0dXJuIG1f
d3JhcHBlZFNvdXJjZS0+YXNSZWFsdGltZU1lZGlhU291cmNlKCkuc2V0dGluZ3MoKTsKLX0KLQot
Y29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYgTW9ja0dTdHJlYW1lckF1ZGlv
Q2FwdHVyZVNvdXJjZTo6Y2FwYWJpbGl0aWVzKCkKLXsKLSAgICBtX2NhcGFiaWxpdGllcyA9IG1f
d3JhcHBlZFNvdXJjZS0+YXNSZWFsdGltZU1lZGlhU291cmNlKCkuY2FwYWJpbGl0aWVzKCk7Ci0g
ICAgbV9jdXJyZW50U2V0dGluZ3MgPSBtX3dyYXBwZWRTb3VyY2UtPmFzUmVhbHRpbWVNZWRpYVNv
dXJjZSgpLnNldHRpbmdzKCk7Ci0gICAgcmV0dXJuIG1fd3JhcHBlZFNvdXJjZS0+YXNSZWFsdGlt
ZU1lZGlhU291cmNlKCkuY2FwYWJpbGl0aWVzKCk7Ci19Ci0KLXZvaWQgTW9ja0dTdHJlYW1lckF1
ZGlvQ2FwdHVyZVNvdXJjZTo6Y2FwdHVyZUZhaWxlZCgpCi17Ci0gICAgc3RvcCgpOwotICAgIFJl
YWx0aW1lTWVkaWFTb3VyY2U6OmNhcHR1cmVGYWlsZWQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKExJQldFQlJU
QykgJiYgVVNFKEdTVFJFQU1FUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9Nb2NrR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTW9ja0dTdHJl
YW1lckF1ZGlvQ2FwdHVyZVNvdXJjZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBl
MzAyNWMyNWE3NmE3YzkwMWNhNTY2ZmU2Y2EyYjEwN2ViZTk3Yjg4Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL2dzdHJlYW1lci9Nb2NrR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlLmgKKysr
IC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IE1l
dHJvbG9naWNhbCBHcm91cCBCLlYuCi0gKiBBdXRob3I6IFRoaWJhdWx0IFNhdW5pZXIgPHRzYXVu
aWVyQGlnYWxpYS5jb20+Ci0gKiBBdXRob3I6IEFsZWphbmRybyBHLiBDYXN0cm8gIDxhbGV4QGln
YWxpYS5jb20+Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAq
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBh
aW50IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0Uo
TElCV0VCUlRDKSAmJiBVU0UoR1NUUkVBTUVSKQotCi0jaW5jbHVkZSAiR1N0cmVhbWVyQXVkaW9D
YXB0dXJlU291cmNlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgV3JhcHBlZE1v
Y2tSZWFsdGltZUF1ZGlvU291cmNlOwotY2xhc3MgTW9ja0dTdHJlYW1lckF1ZGlvQ2FwdHVyZVNv
dXJjZSBmaW5hbCA6IHB1YmxpYyBHU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2UsIFJlYWx0aW1l
TWVkaWFTb3VyY2U6Ok9ic2VydmVyIHsKLXB1YmxpYzoKLSAgICBNb2NrR1N0cmVhbWVyQXVkaW9D
YXB0dXJlU291cmNlKFN0cmluZyYmIGRldmljZUlELCBTdHJpbmcmJiBuYW1lLCBTdHJpbmcmJiBo
YXNoU2FsdCk7Ci0gICAgfk1vY2tHU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2UoKTsKLSAgICBP
cHRpb25hbDxBcHBseUNvbnN0cmFpbnRzRXJyb3I+IGFwcGx5Q29uc3RyYWludHMoY29uc3QgTWVk
aWFDb25zdHJhaW50cyYpOwotICAgIHZvaWQgYXBwbHlDb25zdHJhaW50cyhjb25zdCBNZWRpYUNv
bnN0cmFpbnRzJiwgQXBwbHlDb25zdHJhaW50c0hhbmRsZXImJikgZmluYWw7Ci0KLXByaXZhdGU6
Ci0gICAgdm9pZCBzdG9wUHJvZHVjaW5nRGF0YSgpIGZpbmFsOwotICAgIHZvaWQgc3RhcnRQcm9k
dWNpbmdEYXRhKCkgZmluYWw7Ci0gICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdz
JiBzZXR0aW5ncygpIGZpbmFsOwotICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmls
aXRpZXMmIGNhcGFiaWxpdGllcygpIGZpbmFsOwotICAgIHZvaWQgY2FwdHVyZUZhaWxlZCgpIGZp
bmFsOwotICAgIHZvaWQgdmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmKSBmaW5hbCB7
IH07Ci0KLSAgICBSZWY8V3JhcHBlZE1vY2tSZWFsdGltZUF1ZGlvU291cmNlPiBtX3dyYXBwZWRT
b3VyY2U7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUo
TUVESUFfU1RSRUFNKSAmJiBVU0UoTElCV0VCUlRDKSAmJiBVU0UoR1NUUkVBTUVSKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01vY2tH
U3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01vY2tHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UuY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMmJmODZiYzZmYjY4YzFlNmQ2M2RlZDg3
NjI3NTM1M2Q1NGFmYjgzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9Nb2Nr
R1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2NSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IE1ldHJvbG9naWNhbCBHcm91cCBCLlYu
Ci0gKiBBdXRob3I6IFRoaWJhdWx0IFNhdW5pZXIgPHRzYXVuaWVyQGlnYWxpYS5jb20+Ci0gKiBB
dXRob3I6IEFsZWphbmRybyBHLiBDYXN0cm8gPGFsZXhAaWdhbGlhLmNvbT4KLSAqCi0gKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
Ci0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFpbnQgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0KLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoTElCV0VCUlRDKSAmJiBV
U0UoR1NUUkVBTUVSKQotI2luY2x1ZGUgIk1vY2tHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2Uu
aCIKLQotI2luY2x1ZGUgIk1lZGlhU2FtcGxlR1N0cmVhbWVyLmgiCi0jaW5jbHVkZSAiTW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2UuaCIKLQotI2luY2x1ZGUgPGdzdC9hcHAvZ3N0YXBwc3JjLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgV3JhcHBlZE1vY2tSZWFsdGltZVZpZGVvU291
cmNlIDogcHVibGljIE1vY2tSZWFsdGltZVZpZGVvU291cmNlIHsKLXB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmPFdyYXBwZWRNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZT4gY3JlYXRlKFN0cmluZyYmIGRl
dmljZUlELCBTdHJpbmcmJiBuYW1lLCBTdHJpbmcmJiBoYXNoU2FsdCkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFdyYXBwZWRNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZShXVEZN
b3ZlKGRldmljZUlEKSwgV1RGTW92ZShuYW1lKSwgV1RGTW92ZShoYXNoU2FsdCkpKTsKLSAgICB9
Ci0KLSAgICBSZWFsdGltZU1lZGlhU291cmNlJiBhc1JlYWx0aW1lTWVkaWFTb3VyY2UoKQotICAg
IHsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIGNvbnN0IFZlY3RvcjxSZWY8
VmlkZW9QcmVzZXQ+PiYgcHJlc2V0cygpCi0gICAgewotICAgICAgICByZXR1cm4gTW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2U6OnByZXNldHMoKTsKLSAgICB9Ci0KLSAgICBib29sIGNhblJlc2l6ZVZp
ZGVvRnJhbWVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQotCi0gICAgdm9pZCB1cGRh
dGVTYW1wbGVCdWZmZXIoKQotICAgIHsKLSAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IHRoaXMt
PmltYWdlQnVmZmVyKCk7Ci0gICAgICAgIGlmICghaW1hZ2VCdWZmZXIpCi0gICAgICAgICAgICBy
ZXR1cm47Ci0KLSAgICAgICAgaW50IGZwc051bWVyYXRvciwgZnBzRGVub21pbmF0b3I7Ci0gICAg
ICAgIGdzdF91dGlsX2RvdWJsZV90b19mcmFjdGlvbihmcmFtZVJhdGUoKSwgJmZwc051bWVyYXRv
ciwgJmZwc0Rlbm9taW5hdG9yKTsKLSAgICAgICAgYXV0byBpbWFnZVNpemUgPSBpbWFnZUJ1ZmZl
ci0+YmFja2VuZFNpemUoKTsKLSAgICAgICAgYXV0byBjYXBzID0gYWRvcHRHUmVmKGdzdF9jYXBz
X25ld19zaW1wbGUoInZpZGVvL3gtcmF3IiwKLSAgICAgICAgICAgICJmb3JtYXQiLCBHX1RZUEVf
U1RSSU5HLCAiQkdSQSIsCi0gICAgICAgICAgICAid2lkdGgiLCBHX1RZUEVfSU5ULCBpbWFnZVNp
emUud2lkdGgoKSwKLSAgICAgICAgICAgICJoZWlnaHQiLCBHX1RZUEVfSU5ULCBpbWFnZVNpemUu
aGVpZ2h0KCksCi0gICAgICAgICAgICAiZnJhbWVyYXRlIiwgR1NUX1RZUEVfRlJBQ1RJT04sIGZw
c051bWVyYXRvciwgZnBzRGVub21pbmF0b3IsIG51bGxwdHIpKTsKLSAgICAgICAgYXV0byBkYXRh
ID0gaW1hZ2VCdWZmZXItPnRvQkdSQURhdGEoKTsKLSAgICAgICAgYXV0byBzaXplID0gZGF0YS5z
aXplKCk7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gYWRvcHRHUmVmKGdzdF9idWZmZXJfbmV3X3dy
YXBwZWQoZ19tZW1kdXAoZGF0YS5yZWxlYXNlQnVmZmVyKCkuZ2V0KCksIHNpemUpLCBzaXplKSk7
Ci0gICAgICAgIGF1dG8gZ3N0U2FtcGxlID0gYWRvcHRHUmVmKGdzdF9zYW1wbGVfbmV3KGJ1ZmZl
ci5nZXQoKSwgY2Fwcy5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0cikpOwotCi0gICAgICAgIHZpZGVv
U2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlR1N0cmVhbWVyOjpjcmVhdGUoV1RGTW92ZShnc3RT
YW1wbGUpLCBGbG9hdFNpemUoKSwgU3RyaW5nKCkpKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAg
V3JhcHBlZE1vY2tSZWFsdGltZVZpZGVvU291cmNlKFN0cmluZyYmIGRldmljZUlELCBTdHJpbmcm
JiBuYW1lLCBTdHJpbmcmJiBoYXNoU2FsdCkKLSAgICAgICAgOiBNb2NrUmVhbHRpbWVWaWRlb1Nv
dXJjZShXVEZNb3ZlKGRldmljZUlEKSwgV1RGTW92ZShuYW1lKSwgV1RGTW92ZShoYXNoU2FsdCkp
Ci0gICAgewotICAgIH0KLX07Ci0KLUNhcHR1cmVTb3VyY2VPckVycm9yIE1vY2tSZWFsdGltZVZp
ZGVvU291cmNlOjpjcmVhdGUoU3RyaW5nJiYgZGV2aWNlSUQsCi0gICAgU3RyaW5nJiYgbmFtZSwg
U3RyaW5nJiYgaGFzaFNhbHQsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMqIGNvbnN0cmFpbnRzKQot
ewotICAgIGF1dG8gc291cmNlID0gYWRvcHRSZWYoKm5ldyBNb2NrR1N0cmVhbWVyVmlkZW9DYXB0
dXJlU291cmNlKFdURk1vdmUoZGV2aWNlSUQpLCBXVEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKGhhc2hT
YWx0KSkpOwotCi0gICAgaWYgKGNvbnN0cmFpbnRzICYmIHNvdXJjZS0+YXBwbHlDb25zdHJhaW50
cygqY29uc3RyYWludHMpKQotICAgICAgICByZXR1cm4geyB9OwotCi0gICAgcmV0dXJuIENhcHR1
cmVTb3VyY2VPckVycm9yKFdURk1vdmUoc291cmNlKSk7Ci19Ci0KLXZvaWQgTW9ja0dTdHJlYW1l
clZpZGVvQ2FwdHVyZVNvdXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKCkKLXsKLSAgICBHU3RyZWFt
ZXJWaWRlb0NhcHR1cmVTb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpOwotICAgIG1fd3JhcHBl
ZFNvdXJjZS0+c3RhcnQoKTsKLX0KLQotdm9pZCBNb2NrR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291
cmNlOjpzdG9wUHJvZHVjaW5nRGF0YSgpCi17Ci0gICAgbV93cmFwcGVkU291cmNlLT5zdG9wKCk7
Ci0KLSAgICBHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6OnN0b3BQcm9kdWNpbmdEYXRhKCk7
Ci19Ci0KLXZvaWQgTW9ja0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZTo6dmlkZW9TYW1wbGVB
dmFpbGFibGUoTWVkaWFTYW1wbGUmIHNhbXBsZSkKLXsKLSAgICBhdXRvIHNyYyA9IGNhcHR1cmVy
KCktPnNvdXJjZSgpOwotCi0gICAgaWYgKHNyYykgewotICAgICAgICBhdXRvIGdzdHNhbXBsZSA9
IHN0YXRpY19jYXN0PE1lZGlhU2FtcGxlR1N0cmVhbWVyKj4oJnNhbXBsZSktPnBsYXRmb3JtU2Ft
cGxlKCkuc2FtcGxlLmdzdFNhbXBsZTsKLSAgICAgICAgZ3N0X2FwcF9zcmNfcHVzaF9zYW1wbGUo
R1NUX0FQUF9TUkMoc3JjKSwgZ3N0c2FtcGxlKTsKLSAgICB9Ci19Ci0KLU1vY2tHU3RyZWFtZXJW
aWRlb0NhcHR1cmVTb3VyY2U6Ok1vY2tHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UoU3RyaW5n
JiYgZGV2aWNlSUQsIFN0cmluZyYmIG5hbWUsIFN0cmluZyYmIGhhc2hTYWx0KQotICAgIDogR1N0
cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlKFN0cmluZyB7IGRldmljZUlEIH0sIFN0cmluZyB7IG5h
bWUgfSwgU3RyaW5nIHsgaGFzaFNhbHQgfSwgImFwcHNyYyIpCi0gICAgLCBtX3dyYXBwZWRTb3Vy
Y2UoV3JhcHBlZE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpjcmVhdGUoV1RGTW92ZShkZXZpY2VJ
RCksIFdURk1vdmUobmFtZSksIFdURk1vdmUoaGFzaFNhbHQpKSkKLXsKLSAgICBtX3dyYXBwZWRT
b3VyY2UtPmFkZE9ic2VydmVyKCp0aGlzKTsKLX0KLQotTW9ja0dTdHJlYW1lclZpZGVvQ2FwdHVy
ZVNvdXJjZTo6fk1vY2tHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UoKQotewotICAgIG1fd3Jh
cHBlZFNvdXJjZS0+cmVtb3ZlT2JzZXJ2ZXIoKnRoaXMpOwotfQotCi1PcHRpb25hbDxSZWFsdGlt
ZU1lZGlhU291cmNlOjpBcHBseUNvbnN0cmFpbnRzRXJyb3I+IE1vY2tHU3RyZWFtZXJWaWRlb0Nh
cHR1cmVTb3VyY2U6OmFwcGx5Q29uc3RyYWludHMoY29uc3QgTWVkaWFDb25zdHJhaW50cyYgY29u
c3RyYWludHMpCi17Ci0gICAgbV93cmFwcGVkU291cmNlLT5hcHBseUNvbnN0cmFpbnRzKGNvbnN0
cmFpbnRzKTsKLSAgICByZXR1cm4gR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlOjphcHBseUNv
bnN0cmFpbnRzKGNvbnN0cmFpbnRzKTsKLX0KLQotdm9pZCBNb2NrR1N0cmVhbWVyVmlkZW9DYXB0
dXJlU291cmNlOjphcHBseUNvbnN0cmFpbnRzKGNvbnN0IE1lZGlhQ29uc3RyYWludHMmIGNvbnN0
cmFpbnRzLCBBcHBseUNvbnN0cmFpbnRzSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQotewot
ICAgIG1fd3JhcHBlZFNvdXJjZS0+YXBwbHlDb25zdHJhaW50cyhjb25zdHJhaW50cywgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwotfQotCi1jb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0
dGluZ3MmIE1vY2tHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6OnNldHRpbmdzKCkKLXsKLSAg
ICByZXR1cm4gbV93cmFwcGVkU291cmNlLT5hc1JlYWx0aW1lTWVkaWFTb3VyY2UoKS5zZXR0aW5n
cygpOwotfQotCi1jb25zdCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBNb2NrR1N0
cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlOjpjYXBhYmlsaXRpZXMoKQotewotICAgIG1fY2FwYWJp
bGl0aWVzID0gbV93cmFwcGVkU291cmNlLT5hc1JlYWx0aW1lTWVkaWFTb3VyY2UoKS5jYXBhYmls
aXRpZXMoKTsKLSAgICBtX2N1cnJlbnRTZXR0aW5ncyA9IG1fd3JhcHBlZFNvdXJjZS0+YXNSZWFs
dGltZU1lZGlhU291cmNlKCkuc2V0dGluZ3MoKTsKLSAgICByZXR1cm4gbV9jYXBhYmlsaXRpZXMu
dmFsdWUoKTsKLX0KLQotdm9pZCBNb2NrR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlOjpnZW5l
cmF0ZVByZXNldHMoKQotewotICAgIHNldFN1cHBvcnRlZFByZXNldHMobV93cmFwcGVkU291cmNl
LT5wcmVzZXRzKCkpOwotfQotCi12b2lkIE1vY2tHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6
OmNhcHR1cmVGYWlsZWQoKQotewotICAgIHN0b3AoKTsKLQotICAgIFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OmNhcHR1cmVGYWlsZWQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKExJQldFQlJUQykgJiYgVVNFKEdTVFJF
QU1FUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9Nb2NrR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTW9ja0dTdHJlYW1lclZpZGVvQ2FwdHVy
ZVNvdXJjZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzODI3NGU2YjZjODE0MDk0
NTNjOWRjNzZjMTU1NDJlZjcxZWNiMTQ4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJl
YW1lci9Nb2NrR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlLmgKKysrIC9kZXYvbnVsbApAQCAt
MSw1NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IE1ldHJvbG9naWNhbCBHcm91
cCBCLlYuCi0gKiBBdXRob3I6IFRoaWJhdWx0IFNhdW5pZXIgPHRzYXVuaWVyQGlnYWxpYS5jb20+
Ci0gKiBBdXRob3I6IEFsZWphbmRybyBHLiBDYXN0cm8gPGFsZXhAaWdhbGlhLmNvbT4KLSAqCi0g
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFpbnQgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jcHJhZ21h
IG9uY2UKLQotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShMSUJXRUJSVEMpICYmIFVT
RShHU1RSRUFNRVIpCi0KLSNpbmNsdWRlICJHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UuaCIK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBXcmFwcGVkTW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2U7Ci0vLyBXZSBhcmUgc3ViY2xhc3NpbmcgR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNl
IGFuZCBub3QgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UKLS8vIGJlY2F1c2UgdGhlIE1lZGlhUGxh
eWVyIGV4cGVjdHMgR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlIHRvIGJlIGFibGUgdG8gcHJv
cGVybHkKLS8vIGJ1aWxkIHRoZSBHU3RyZWFtZXIgcGlwZWxpbmUuIFN0aWxsIHdlIG1ha2UgaXQg
c28gdGhhdCBpdCBiZWhhdmVzIGFzIGNsb3NlbHkgYXMgcG9zc2libGUKLS8vIHRvIHRoZSBNb2Nr
UmVhbHRpbWVNZWRpYVNvdXJjZSBjbGFzcyBieSB3cmFwcGluZyBvdXIgb3duIHN1YmNsYXNzIG9m
IGl0LgotY2xhc3MgTW9ja0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZSBmaW5hbCA6IHB1Ymxp
YyBHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UsIFJlYWx0aW1lTWVkaWFTb3VyY2U6Ok9ic2Vy
dmVyIHsKLXB1YmxpYzoKLSAgICBNb2NrR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlKFN0cmlu
ZyYmIGRldmljZUlELCBTdHJpbmcmJiBuYW1lLCBTdHJpbmcmJiBoYXNoU2FsdCk7Ci0gICAgfk1v
Y2tHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UoKTsKLSAgICBPcHRpb25hbDxBcHBseUNvbnN0
cmFpbnRzRXJyb3I+IGFwcGx5Q29uc3RyYWludHMoY29uc3QgTWVkaWFDb25zdHJhaW50cyYpOwot
ICAgIHZvaWQgYXBwbHlDb25zdHJhaW50cyhjb25zdCBNZWRpYUNvbnN0cmFpbnRzJiwgQXBwbHlD
b25zdHJhaW50c0hhbmRsZXImJikgZmluYWw7Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCBnZW5lcmF0
ZVByZXNldHMoKSBmaW5hbDsKLSAgICB2b2lkIHN0b3BQcm9kdWNpbmdEYXRhKCkgZmluYWw7Ci0g
ICAgdm9pZCBzdGFydFByb2R1Y2luZ0RhdGEoKSBmaW5hbDsKLSAgICBjb25zdCBSZWFsdGltZU1l
ZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKCkgZmluYWw7Ci0gICAgY29uc3QgUmVhbHRpbWVN
ZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYgY2FwYWJpbGl0aWVzKCkgZmluYWw7Ci0gICAgdm9pZCBj
YXB0dXJlRmFpbGVkKCkgZmluYWw7Ci0gICAgdm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRp
YVNhbXBsZSYpIGZpbmFsOwotCi0gICAgUmVmPFdyYXBwZWRNb2NrUmVhbHRpbWVWaWRlb1NvdXJj
ZT4gbV93cmFwcGVkU291cmNlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKExJQldFQlJUQykgJiYgVVNFKEdTVFJF
QU1FUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTW9ja1JlYWx0aW1lQXVkaW9Tb3Vy
Y2VHU3RyZWFtZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJjYzM5ZjBmMTkxMzNiOGM5ZGU3YTdjOTJmNjRl
MGUyODM2ZDRkZDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9nc3RyZWFtZXIvTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VHU3RyZWFtZXIuY3Bw
CkBAIC0wLDAgKzEsMTQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IE1ldHJvbG9naWNh
bCBHcm91cCBCLlYuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTC4KKyAqIEF1dGhv
cjogVGhpYmF1bHQgU2F1bmllciA8dHNhdW5pZXJAaWdhbGlhLmNvbT4KKyAqIEF1dGhvcjogQWxl
amFuZHJvIEcuIENhc3RybyAgPGFsZXhAaWdhbGlhLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwor
ICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoK
KyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFpbnQgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisK
KyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoTElCV0VCUlRDKSAmJiBVU0UoR1NUUkVB
TUVSKQorI2luY2x1ZGUgIk1vY2tSZWFsdGltZUF1ZGlvU291cmNlR1N0cmVhbWVyLmgiCisKKyNp
bmNsdWRlICJNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK3N0YXRpYyBjb25zdCBkb3VibGUgc19UYXUgPSAyICogTV9QSTsKK3N0YXRpYyBj
b25zdCBkb3VibGUgc19CaXBCb3BEdXJhdGlvbiA9IDAuMDc7CitzdGF0aWMgY29uc3QgZG91Ymxl
IHNfQmlwQm9wVm9sdW1lID0gMC41Oworc3RhdGljIGNvbnN0IGRvdWJsZSBzX0JpcEZyZXF1ZW5j
eSA9IDE1MDA7CitzdGF0aWMgY29uc3QgZG91YmxlIHNfQm9wRnJlcXVlbmN5ID0gNTAwOworc3Rh
dGljIGNvbnN0IGRvdWJsZSBzX0h1bUZyZXF1ZW5jeSA9IDE1MDsKK3N0YXRpYyBjb25zdCBkb3Vi
bGUgc19IdW1Wb2x1bWUgPSAwLjE7CitzdGF0aWMgY29uc3QgZG91YmxlIHNfTm9pc2VGcmVxdWVu
Y3kgPSAzMDAwOworc3RhdGljIGNvbnN0IGRvdWJsZSBzX05vaXNlVm9sdW1lID0gMC4wNTsKKwor
Q2FwdHVyZVNvdXJjZU9yRXJyb3IgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OmNyZWF0ZShTdHJp
bmcmJiBkZXZpY2VJRCwgU3RyaW5nJiYgbmFtZSwgU3RyaW5nJiYgaGFzaFNhbHQsIGNvbnN0IE1l
ZGlhQ29uc3RyYWludHMqIGNvbnN0cmFpbnRzKQoreworI2lmbmRlZiBOREVCVUcKKyAgICBhdXRv
IGRldmljZSA9IE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjptb2NrRGV2aWNlV2l0aFBl
cnNpc3RlbnRJRChkZXZpY2VJRCk7CisgICAgQVNTRVJUKGRldmljZSk7CisgICAgaWYgKCFkZXZp
Y2UpCisgICAgICAgIHJldHVybiB7ICJObyBtb2NrIG1pY3JvcGhvbmUgZGV2aWNlIl9zIH07Cisj
ZW5kaWYKKworICAgIGF1dG8gc291cmNlID0gYWRvcHRSZWYoKm5ldyBNb2NrUmVhbHRpbWVBdWRp
b1NvdXJjZUdTdHJlYW1lcihXVEZNb3ZlKGRldmljZUlEKSwgV1RGTW92ZShuYW1lKSwgV1RGTW92
ZShoYXNoU2FsdCkpKTsKKyAgICBpZiAoY29uc3RyYWludHMpIHsKKyAgICAgICAgaWYgKGF1dG8g
ZXJyb3IgPSBzb3VyY2UtPmFwcGx5Q29uc3RyYWludHMoKmNvbnN0cmFpbnRzKSkKKyAgICAgICAg
ICAgIHJldHVybiBXVEZNb3ZlKGVycm9yLT5tZXNzYWdlKTsKKyAgICB9CisKKyAgICByZXR1cm4g
Q2FwdHVyZVNvdXJjZU9yRXJyb3IoV1RGTW92ZShzb3VyY2UpKTsKK30KKworUmVmPE1vY2tSZWFs
dGltZUF1ZGlvU291cmNlPiBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZUdTdHJlYW1lcjo6Y3JlYXRl
Rm9yTW9ja0F1ZGlvQ2FwdHVyZXIoU3RyaW5nJiYgZGV2aWNlSUQsIFN0cmluZyYmIG5hbWUsIFN0
cmluZyYmIGhhc2hTYWx0KQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1vY2tSZWFsdGlt
ZUF1ZGlvU291cmNlR1N0cmVhbWVyKFdURk1vdmUoZGV2aWNlSUQpLCBXVEZNb3ZlKG5hbWUpLCBX
VEZNb3ZlKGhhc2hTYWx0KSkpOworfQorCitNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZUdTdHJlYW1l
cjo6TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VHU3RyZWFtZXIoU3RyaW5nJiYgZGV2aWNlSUQsIFN0
cmluZyYmIG5hbWUsIFN0cmluZyYmIGhhc2hTYWx0KQorICAgIDogTW9ja1JlYWx0aW1lQXVkaW9T
b3VyY2UoV1RGTW92ZShkZXZpY2VJRCksIFdURk1vdmUobmFtZSksIFdURk1vdmUoaGFzaFNhbHQp
KQoreworfQorCit2b2lkIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlR1N0cmVhbWVyOjpyZW5kZXIo
U2Vjb25kcyBkZWx0YSkKK3sKKyAgICBpZiAoIW1fYmlwQm9wQnVmZmVyLnNpemUoKSkKKyAgICAg
ICAgcmVjb25maWd1cmUoKTsKKworICAgIHVpbnQzMl90IHRvdGFsRnJhbWVDb3VudCA9IEdTVF9S
T1VORF9VUF8xNihzdGF0aWNfY2FzdDxzaXplX3Q+KGRlbHRhLnNlY29uZHMoKSAqIHNhbXBsZVJh
dGUoKSkpOworICAgIHVpbnQzMl90IGZyYW1lQ291bnQgPSBzdGQ6Om1pbih0b3RhbEZyYW1lQ291
bnQsIG1fbWF4aW1pdW1GcmFtZUNvdW50KTsKKworICAgIHdoaWxlIChmcmFtZUNvdW50KSB7Cisg
ICAgICAgIHVpbnQzMl90IGJpcEJvcFN0YXJ0ID0gbV9zYW1wbGVzUmVuZGVyZWQgJSBtX2JpcEJv
cEJ1ZmZlci5zaXplKCk7CisgICAgICAgIHVpbnQzMl90IGJpcEJvcFJlbWFpbiA9IG1fYmlwQm9w
QnVmZmVyLnNpemUoKSAtIGJpcEJvcFN0YXJ0OworICAgICAgICB1aW50MzJfdCBiaXBCb3BDb3Vu
dCA9IHN0ZDo6bWluKGZyYW1lQ291bnQsIGJpcEJvcFJlbWFpbik7CisKKyAgICAgICAgQVNTRVJU
KG1fc3RyZWFtRm9ybWF0KTsKKyAgICAgICAgR3N0QXVkaW9JbmZvKiBpbmZvID0gbV9zdHJlYW1G
b3JtYXQtPmdldEluZm8oKTsKKyAgICAgICAgR3N0QnVmZmVyKiBidWZmZXIgPSBnc3RfYnVmZmVy
X25ld19hbGxvY2F0ZShudWxscHRyLCBiaXBCb3BDb3VudCAqIG1fc3RyZWFtRm9ybWF0LT5ieXRl
c1BlckZyYW1lKCksIG51bGxwdHIpOworICAgICAgICB7CisgICAgICAgICAgICBhdXRvIG1hcCA9
IEdzdE1hcHBlZEJ1ZmZlcjo6Y3JlYXRlKGJ1ZmZlciwgR1NUX01BUF9XUklURSk7CisKKyAgICAg
ICAgICAgIGlmIChtdXRlZCgpKQorICAgICAgICAgICAgICAgIGdzdF9hdWRpb19mb3JtYXRfZmls
bF9zaWxlbmNlKGluZm8tPmZpbmZvLCBtYXAtPmRhdGEoKSwgbWFwLT5zaXplKCkpOworICAgICAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgbWVtY3B5KG1hcC0+ZGF0YSgpLCAmbV9iaXBC
b3BCdWZmZXJbYmlwQm9wU3RhcnRdLCBzaXplb2YoZmxvYXQpICogYmlwQm9wQ291bnQpOworICAg
ICAgICAgICAgICAgIGFkZEh1bShzX0h1bVZvbHVtZSwgc19IdW1GcmVxdWVuY3ksIHNhbXBsZVJh
dGUoKSwgbV9zYW1wbGVzUmVuZGVyZWQsIHJlaW50ZXJwcmV0X2Nhc3Q8ZmxvYXQqPihtYXAtPmRh
dGEoKSksIGJpcEJvcENvdW50KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAg
IG1fc2FtcGxlc1JlbmRlcmVkICs9IGJpcEJvcENvdW50OworICAgICAgICB0b3RhbEZyYW1lQ291
bnQgLT0gYmlwQm9wQ291bnQ7CisgICAgICAgIGZyYW1lQ291bnQgPSBzdGQ6Om1pbih0b3RhbEZy
YW1lQ291bnQsIG1fbWF4aW1pdW1GcmFtZUNvdW50KTsKKworICAgICAgICBHUmVmUHRyPEdzdENh
cHM+IGNhcHMgPSBhZG9wdEdSZWYoZ3N0X2F1ZGlvX2luZm9fdG9fY2FwcyhpbmZvKSk7CisgICAg
ICAgIGF1dG8gc2FtcGxlID0gYWRvcHRHUmVmKGdzdF9zYW1wbGVfbmV3KGJ1ZmZlciwgY2Fwcy5n
ZXQoKSwgbnVsbHB0ciwgbnVsbHB0cikpOworICAgICAgICBhdXRvIGRhdGEoc3RkOjp1bmlxdWVf
cHRyPEdTdHJlYW1lckF1ZGlvRGF0YT4obmV3IEdTdHJlYW1lckF1ZGlvRGF0YShXVEZNb3ZlKHNh
bXBsZSksICppbmZvKSkpOworICAgICAgICBhdXRvIG1lZGlhVGltZSA9IE1lZGlhVGltZSgobV9z
YW1wbGVzUmVuZGVyZWQgKiBHX1VTRUNfUEVSX1NFQykgLyBzYW1wbGVSYXRlKCksIEdfVVNFQ19Q
RVJfU0VDKTsKKyAgICAgICAgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKG1lZGlhVGltZSwgKmRhdGEu
Z2V0KCksICptX3N0cmVhbUZvcm1hdCwgYmlwQm9wQ291bnQpOworICAgIH0KK30KKwordm9pZCBN
b2NrUmVhbHRpbWVBdWRpb1NvdXJjZUdTdHJlYW1lcjo6YWRkSHVtKGZsb2F0IGFtcGxpdHVkZSwg
ZmxvYXQgZnJlcXVlbmN5LCBmbG9hdCBzYW1wbGVSYXRlLCB1aW50NjRfdCBzdGFydCwgZmxvYXQg
KnAsIHVpbnQ2NF90IGNvdW50KQoreworICAgIGZsb2F0IGh1bVBlcmlvZCA9IHNhbXBsZVJhdGUg
LyBmcmVxdWVuY3k7CisgICAgZm9yICh1aW50NjRfdCBpID0gc3RhcnQsIGVuZCA9IHN0YXJ0ICsg
Y291bnQ7IGkgPCBlbmQ7ICsraSkgeworICAgICAgICBmbG9hdCBhID0gYW1wbGl0dWRlICogc2lu
KGkgKiBzX1RhdSAvIGh1bVBlcmlvZCk7CisgICAgICAgIGEgKz0gKnA7CisgICAgICAgICpwKysg
PSBhOworICAgIH0KK30KKwordm9pZCBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZUdTdHJlYW1lcjo6
cmVjb25maWd1cmUoKQoreworICAgIEdzdEF1ZGlvSW5mbyBpbmZvOworICAgIGF1dG8gcmF0ZSA9
IHNhbXBsZVJhdGUoKTsKKyAgICBzaXplX3Qgc2FtcGxlQ291bnQgPSAyICogcmF0ZTsKKworICAg
IG1fbWF4aW1pdW1GcmFtZUNvdW50ID0gV1RGOjpyb3VuZFVwVG9Qb3dlck9mVHdvKHJlbmRlcklu
dGVydmFsKCkuc2Vjb25kcygpICogc2FtcGxlUmF0ZSgpKTsKKyAgICBnc3RfYXVkaW9faW5mb19z
ZXRfZm9ybWF0KCZpbmZvLCBHU1RfQVVESU9fRk9STUFUX0YzMkxFLCByYXRlLCAxLCBudWxscHRy
KTsKKyAgICBtX3N0cmVhbUZvcm1hdCA9IEdTdHJlYW1lckF1ZGlvU3RyZWFtRGVzY3JpcHRpb24o
aW5mbyk7CisKKyAgICBtX2JpcEJvcEJ1ZmZlci5yZXNpemUoc2FtcGxlQ291bnQpOworICAgIG1f
YmlwQm9wQnVmZmVyLmZpbGwoMCk7CisKKyAgICBzaXplX3QgYmlwQm9wU2FtcGxlQ291bnQgPSBj
ZWlsKHNfQmlwQm9wRHVyYXRpb24gKiByYXRlKTsKKyAgICBzaXplX3QgYmlwU3RhcnQgPSAwOwor
ICAgIHNpemVfdCBib3BTdGFydCA9IHJhdGU7CisKKyAgICBhZGRIdW0oc19CaXBCb3BWb2x1bWUs
IHNfQmlwRnJlcXVlbmN5LCByYXRlLCAwLCBtX2JpcEJvcEJ1ZmZlci5kYXRhKCkgKyBiaXBTdGFy
dCwgYmlwQm9wU2FtcGxlQ291bnQpOworICAgIGFkZEh1bShzX0JpcEJvcFZvbHVtZSwgc19Cb3BG
cmVxdWVuY3ksIHJhdGUsIDAsIG1fYmlwQm9wQnVmZmVyLmRhdGEoKSArIGJvcFN0YXJ0LCBiaXBC
b3BTYW1wbGVDb3VudCk7CisgICAgaWYgKCFlY2hvQ2FuY2VsbGF0aW9uKCkpCisgICAgICAgIGFk
ZEh1bShzX05vaXNlVm9sdW1lLCBzX05vaXNlRnJlcXVlbmN5LCByYXRlLCAwLCBtX2JpcEJvcEJ1
ZmZlci5kYXRhKCksIHNhbXBsZUNvdW50KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKExJQldFQlJUQykgJiYgVVNF
KEdTVFJFQU1FUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZUdTdHJlYW1lci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01vY2tSZWFsdGltZUF1ZGlv
U291cmNlR1N0cmVhbWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWNhMDQ5NGVjZjdjNzhkMDVlMDcwNjljNmVl
NDZmNmE0YThlMWQ5NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZUdTdHJlYW1lci5o
CkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggTWV0cm9sb2dpY2Fs
IEdyb3VwIEIuVi4KKyAqIENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy5MLgorICogQXV0aG9y
OiBUaGliYXVsdCBTYXVuaWVyIDx0c2F1bmllckBpZ2FsaWEuY29tPgorICogQXV0aG9yOiBBbGVq
YW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKExJQldFQlJUQykgJiYgVVNFKEdTVFJFQU1FUikKKwor
I2luY2x1ZGUgIkdTdHJlYW1lckF1ZGlvRGF0YS5oIgorI2luY2x1ZGUgIkdTdHJlYW1lckF1ZGlv
U3RyZWFtRGVzY3JpcHRpb24uaCIKKyNpbmNsdWRlICJNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1vY2tSZWFsdGltZUF1ZGlvU291cmNl
R1N0cmVhbWVyIGZpbmFsIDogcHVibGljIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlIHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUmVmPE1vY2tSZWFsdGltZUF1ZGlvU291cmNlPiBjcmVhdGVGb3JNb2Nr
QXVkaW9DYXB0dXJlcihTdHJpbmcmJiBkZXZpY2VJRCwgU3RyaW5nJiYgbmFtZSwgU3RyaW5nJiYg
aGFzaFNhbHQpOworCisgICAgfk1vY2tSZWFsdGltZUF1ZGlvU291cmNlR1N0cmVhbWVyKCkgPSBk
ZWZhdWx0OworCitwcm90ZWN0ZWQ6CisgICAgdm9pZCByZW5kZXIoU2Vjb25kcykgZmluYWw7CisK
K3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOworICAg
IE1vY2tSZWFsdGltZUF1ZGlvU291cmNlR1N0cmVhbWVyKFN0cmluZyYmIGRldmljZUlELCBTdHJp
bmcmJiBuYW1lLCBTdHJpbmcmJiBoYXNoU2FsdCk7CisgICAgdm9pZCByZWNvbmZpZ3VyZSgpOwor
ICAgIHZvaWQgYWRkSHVtKGZsb2F0IGFtcGxpdHVkZSwgZmxvYXQgZnJlcXVlbmN5LCBmbG9hdCBz
YW1wbGVSYXRlLCB1aW50NjRfdCBzdGFydCwgZmxvYXQgKnAsIHVpbnQ2NF90IGNvdW50KTsKKwor
ICAgIE9wdGlvbmFsPEdTdHJlYW1lckF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+IG1fc3RyZWFtRm9y
bWF0OworICAgIFZlY3RvcjxmbG9hdD4gbV9iaXBCb3BCdWZmZXI7CisgICAgdWludDMyX3QgbV9t
YXhpbWl1bUZyYW1lQ291bnQ7CisgICAgdWludDY0X3QgbV9zYW1wbGVzRW1pdHRlZCB7IDAgfTsK
KyAgICB1aW50NjRfdCBtX3NhbXBsZXNSZW5kZXJlZCB7IDAgfTsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShMSUJX
RUJSVEMpICYmIFVTRShHU1RSRUFNRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VHU3RyZWFt
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01v
Y2tSZWFsdGltZVZpZGVvU291cmNlR1N0cmVhbWVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hODI0ZjlkYTUw
YjlhY2ZjZjM5MmM1YjNlYzBlNGViYmEzYzlmMTZhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01vY2tSZWFsdGltZVZpZGVv
U291cmNlR1N0cmVhbWVyLmNwcApAQCAtMCwwICsxLDgzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE4IE1ldHJvbG9naWNhbCBHcm91cCBCLlYuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdh
bGlhIFMuTC4KKyAqIEF1dGhvcjogVGhpYmF1bHQgU2F1bmllciA8dHNhdW5pZXJAaWdhbGlhLmNv
bT4KKyAqIEF1dGhvcjogQWxlamFuZHJvIEcuIENhc3RybyA8YWxleEBpZ2FsaWEuY29tPgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWludCB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICog
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShMSUJXRUJS
VEMpICYmIFVTRShHU1RSRUFNRVIpCisjaW5jbHVkZSAiTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VH
U3RyZWFtZXIuaCIKKworI2luY2x1ZGUgIk1lZGlhU2FtcGxlR1N0cmVhbWVyLmgiCisjaW5jbHVk
ZSAiTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitDYXB0dXJlU291cmNlT3JFcnJvciBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6Y3JlYXRl
KFN0cmluZyYmIGRldmljZUlELCBTdHJpbmcmJiBuYW1lLCBTdHJpbmcmJiBoYXNoU2FsdCwgY29u
c3QgTWVkaWFDb25zdHJhaW50cyogY29uc3RyYWludHMpCit7CisjaWZuZGVmIE5ERUJVRworICAg
IGF1dG8gZGV2aWNlID0gTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6Om1vY2tEZXZpY2VX
aXRoUGVyc2lzdGVudElEKGRldmljZUlEKTsKKyAgICBBU1NFUlQoZGV2aWNlKTsKKyAgICBpZiAo
IWRldmljZSkKKyAgICAgICAgcmV0dXJuIHsgIk5vIG1vY2sgY2FtZXJhIGRldmljZSJfcyB9Owor
I2VuZGlmCisKKyAgICBhdXRvIHNvdXJjZSA9IGFkb3B0UmVmKCpuZXcgTW9ja1JlYWx0aW1lVmlk
ZW9Tb3VyY2VHU3RyZWFtZXIoV1RGTW92ZShkZXZpY2VJRCksIFdURk1vdmUobmFtZSksIFdURk1v
dmUoaGFzaFNhbHQpKSk7CisgICAgaWYgKGNvbnN0cmFpbnRzKSB7CisgICAgICAgIGlmIChhdXRv
IGVycm9yID0gc291cmNlLT5hcHBseUNvbnN0cmFpbnRzKCpjb25zdHJhaW50cykpCisgICAgICAg
ICAgICByZXR1cm4gV1RGTW92ZShlcnJvci0+bWVzc2FnZSk7CisgICAgfQorCisgICAgcmV0dXJu
IENhcHR1cmVTb3VyY2VPckVycm9yKFJlYWx0aW1lVmlkZW9Tb3VyY2U6OmNyZWF0ZShXVEZNb3Zl
KHNvdXJjZSkpKTsKK30KKworUmVmPE1vY2tSZWFsdGltZVZpZGVvU291cmNlPiBNb2NrUmVhbHRp
bWVWaWRlb1NvdXJjZUdTdHJlYW1lcjo6Y3JlYXRlRm9yTW9ja0Rpc3BsYXlDYXB0dXJlcihTdHJp
bmcmJiBkZXZpY2VJRCwgU3RyaW5nJiYgbmFtZSwgU3RyaW5nJiYgaGFzaFNhbHQpCit7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VHU3RyZWFtZXIoV1RG
TW92ZShkZXZpY2VJRCksIFdURk1vdmUobmFtZSksIFdURk1vdmUoaGFzaFNhbHQpKSk7Cit9CisK
K01vY2tSZWFsdGltZVZpZGVvU291cmNlR1N0cmVhbWVyOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJj
ZUdTdHJlYW1lcihTdHJpbmcmJiBkZXZpY2VJRCwgU3RyaW5nJiYgbmFtZSwgU3RyaW5nJiYgaGFz
aFNhbHQpCisgICAgOiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZShXVEZNb3ZlKGRldmljZUlEKSwg
V1RGTW92ZShuYW1lKSwgV1RGTW92ZShoYXNoU2FsdCkpCit7Cit9CisKK3ZvaWQgTW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2VHU3RyZWFtZXI6OnVwZGF0ZVNhbXBsZUJ1ZmZlcigpCit7CisgICAgYXV0
byBpbWFnZUJ1ZmZlciA9IHRoaXMtPmltYWdlQnVmZmVyKCk7CisgICAgaWYgKCFpbWFnZUJ1ZmZl
cikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBpbWFnZVNpemUgPSBzaXplKCk7CisgICAg
YXV0byBjYXBzID0gYWRvcHRHUmVmKGdzdF9jYXBzX25ld19zaW1wbGUoInZpZGVvL3gtcmF3Iiwg
ImZvcm1hdCIsIEdfVFlQRV9TVFJJTkcsICJCR1JBIiwKKyAgICAgICAgIndpZHRoIiwgR19UWVBF
X0lOVCwgaW1hZ2VTaXplLndpZHRoKCksICJoZWlnaHQiLCBHX1RZUEVfSU5ULCBpbWFnZVNpemUu
aGVpZ2h0KCksIG51bGxwdHIpKTsKKworICAgIGF1dG8gZGF0YSA9IGltYWdlQnVmZmVyLT50b0JH
UkFEYXRhKCk7CisgICAgYXV0byBzaXplID0gZGF0YS5zaXplKCk7CisgICAgYXV0byBidWZmZXIg
PSBhZG9wdEdSZWYoZ3N0X2J1ZmZlcl9uZXdfd3JhcHBlZChnX21lbWR1cChkYXRhLnJlbGVhc2VC
dWZmZXIoKS5nZXQoKSwgc2l6ZSksIHNpemUpKTsKKyAgICBhdXRvIHNhbXBsZVRpbWUgPSBNZWRp
YVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoKGVsYXBzZWRUaW1lKCkgKyAxMDBfbXMpLnNlY29uZHMo
KSk7CisgICAgR1NUX0JVRkZFUl9QVFMoYnVmZmVyLmdldCgpKSA9IHRvR3N0Q2xvY2tUaW1lKHNh
bXBsZVRpbWUpOworICAgIGF1dG8gZ3N0U2FtcGxlID0gYWRvcHRHUmVmKGdzdF9zYW1wbGVfbmV3
KGJ1ZmZlci5nZXQoKSwgY2Fwcy5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0cikpOworICAgIGF1dG8g
c2FtcGxlID0gTWVkaWFTYW1wbGVHU3RyZWFtZXI6OmNyZWF0ZShXVEZNb3ZlKGdzdFNhbXBsZSks
IGltYWdlU2l6ZSwgeyB9KTsKKyAgICBkaXNwYXRjaE1lZGlhU2FtcGxlVG9PYnNlcnZlcnMoc2Ft
cGxlLmdldCgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKExJQldFQlJUQykgJiYgVVNFKEdTVFJFQU1FUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9N
b2NrUmVhbHRpbWVWaWRlb1NvdXJjZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01vY2tSZWFsdGltZVZpZGVvU291cmNlR1N0cmVhbWVy
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZTQyMTc5MTI2OWY3MDYzZjMzMDNiYTY5OTA0MWJhNjdkZmRiZTJhMwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZUdTdHJlYW1lci5oCkBAIC0wLDAgKzEsNDcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggTWV0cm9sb2dpY2FsIEdyb3VwIEIuVi4KKyAq
IENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy5MLgorICogQXV0aG9yOiBUaGliYXVsdCBTYXVu
aWVyIDx0c2F1bmllckBpZ2FsaWEuY29tPgorICogQXV0aG9yOiBBbGVqYW5kcm8gRy4gQ2FzdHJv
IDxhbGV4QGlnYWxpYS5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgKiBhaW50IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KSAmJiBVU0UoTElCV0VCUlRDKSAmJiBVU0UoR1NUUkVBTUVSKQorCisjaW5jbHVkZSAiTW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNb2Nr
UmVhbHRpbWVWaWRlb1NvdXJjZUdTdHJlYW1lciBmaW5hbCA6IHB1YmxpYyBNb2NrUmVhbHRpbWVW
aWRlb1NvdXJjZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxNb2NrUmVhbHRpbWVWaWRlb1Nv
dXJjZT4gY3JlYXRlRm9yTW9ja0Rpc3BsYXlDYXB0dXJlcihTdHJpbmcmJiBkZXZpY2VJRCwgU3Ry
aW5nJiYgbmFtZSwgU3RyaW5nJiYgaGFzaFNhbHQpOworCisgICAgfk1vY2tSZWFsdGltZVZpZGVv
U291cmNlR1N0cmVhbWVyKCkgPSBkZWZhdWx0OworCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFz
cyBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTsKKyAgICBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZUdT
dHJlYW1lcihTdHJpbmcmJiBkZXZpY2VJRCwgU3RyaW5nJiYgbmFtZSwgU3RyaW5nJiYgaGFzaFNh
bHQpOworCisgICAgdm9pZCB1cGRhdGVTYW1wbGVCdWZmZXIoKSBmaW5hbDsKKyAgICBib29sIGNh
blJlc2l6ZVZpZGVvRnJhbWVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkg
JiYgVVNFKExJQldFQlJUQykgJiYgVVNFKEdTVFJFQU1FUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaAppbmRleCBmNzkw
MzE2ZjUzOGI1YmZlMGYwNjc1YTlhZjFiZTU1YTczNzg0MmEwLi4yMDQxNmM0OTYxNWE4NjExYjI4
MDQ1YmMxN2QxZWMyYjUxYzgyNTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5oCkBAIC01Nyw4ICs1Nyw2IEBAIHBy
b3RlY3RlZDoKIAogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTYW1wbGVCdWZmZXIoKSA9IDA7CiAK
LSAgICB2b2lkIHNldEN1cnJlbnRGcmFtZShNZWRpYVNhbXBsZSYpOwotCiAgICAgU2Vjb25kcyBl
bGFwc2VkVGltZSgpOwogICAgIHZvaWQgc2V0dGluZ3NEaWRDaGFuZ2UoT3B0aW9uU2V0PFJlYWx0
aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZz4pIG92ZXJyaWRlOwogICAgIE1lZGlhU2FtcGxl
OjpWaWRlb1JvdGF0aW9uIHNhbXBsZVJvdGF0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9k
ZXZpY2VPcmllbnRhdGlvbjsgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGRlY2EwMmIxM2FlNDFmY2QzNTliM2U4YTI1YmFi
ODZjNjdkNTk1ZTMuLmIxMmIyNzRiMzZkMzFjMmYxZWI1YTZkYmY5OTQ0YzkzZTczY2QwYTUgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMC0wNC0yOSAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3Jt
YW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dTdHJlYW1lcl0gZmFzdC9tZWRpYXN0cmVhbS9n
ZXQtdXNlci1tZWRpYS1kZXZpY2UtaWQuaHRtbCBmYWlsaW5nCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA1NzYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRp
b25zOiBVbnNraXAgbm93LXBhc3NpbmcgbWVkaWFzdHJlYW0gdGVzdHMuCisKIDIwMjAtMDQtMjkg
IFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIGh0dHAvdGVzdHMv
bWVkaWEvbWVkaWEtc3RyZWFtL2RldmljZS1jaGFuZ2UtZXZlbnQtaW4taWZyYW1lLmh0bWwgaXMg
YSBmbGFreSBmYWlsdXJlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVz
dEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25z
CmluZGV4IDcxMGM3YWE1MDA0YTAzMzNkM2E0ODg0N2U5Y2Q3ZDc4YWFkNTBiODUuLjEwMjU3NjM1
ZjMyYTgzZjFkNTZhMTI5ZDQ0YzVkMTQyZGEwM2NmM2YgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2d0ay9UZXN0RXhwZWN0YXRpb25zCkBAIC01NTksMTEgKzU1OSw2IEBAIHdlYmtpdC5vcmcvYi8y
MDY0NjQgd2VicnRjL3BlZXJjb25uZWN0aW9uLXBhZ2UtY2FjaGUuaHRtbCBbIEZhaWx1cmUgXQog
CiB3ZWJraXQub3JnL2IvMTg2OTMzIHdlYnJ0Yy9wZWVyLWNvbm5lY3Rpb24tY3JlYXRlTWVkaWFT
dHJlYW1EZXN0aW5hdGlvbi5odG1sCiAKLXdlYmtpdC5vcmcvYi8yMDU5MzAgd2VicnRjL2F1ZGlv
LXBlZXItY29ubmVjdGlvbi13ZWJhdWRpby5odG1sIFsgRmFpbHVyZSBdCi13ZWJraXQub3JnL2Iv
MjA1OTMwIHdlYnJ0Yy9wZWVyLWNvbm5lY3Rpb24tYXVkaW8tbXV0ZTIuaHRtbCBbIEZhaWx1cmUg
XQotd2Via2l0Lm9yZy9iLzIwNTkzMCB3ZWJydGMvcGVlci1jb25uZWN0aW9uLWF1ZGlvLXVubXV0
ZS5odG1sIFsgRmFpbHVyZSBTbG93IF0KLXdlYmtpdC5vcmcvYi8yMDU5MzAgd2VicnRjL3BlZXIt
Y29ubmVjdGlvbi1yZW1vdGUtYXVkaW8tbXV0ZTIuaHRtbCBbIEZhaWx1cmUgXQotCiBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy8gWyBTa2lwIF0KIGh0dHAvdGVzdHMvd2Vi
cnRjIFsgU2tpcCBdCiAKQEAgLTU4MSw3ICs1NzYsNiBAQCB3ZWJraXQub3JnL2IvNzkyMDMgZmFz
dC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1tZWRpYS1zZXR1cC1jYWxsYmFja3Mtc2lu
Zwogd2Via2l0Lm9yZy9iLzc5MjAzIGZhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24t
bWVkaWEtc2V0dXAtdHdvLWRpYWxvZ3MuaHRtbCBbIFBhc3MgRmFpbHVyZSBDcmFzaCBdCiB3ZWJr
aXQub3JnL2IvNzkyMDMgZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1zdGF0cy5o
dG1sIFsgVGltZW91dCBDcmFzaCBdCiB3ZWJraXQub3JnL2IvNzkyMDMgZmFzdC9tZWRpYXN0cmVh
bS9SVENSdHBTZW5kZXItcmVwbGFjZVRyYWNrLmh0bWwgWyBGYWlsdXJlIENyYXNoIF0KLXdlYmtp
dC5vcmcvYi83OTIwMyBmYXN0L21lZGlhc3RyZWFtL2NvbnN0cmFpbnQtaW50cmluc2ljLXNpemUu
aHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzc5MjAzIGZhc3QvbWVkaWFzdHJlYW0vZ2V0LWRp
c3BsYXktbWVkaWEtbXV0ZWQuaHRtbCBbIFRpbWVvdXQgXQogd2Via2l0Lm9yZy9iLzc5MjAzIGZh
c3QvbWVkaWFzdHJlYW0vZ2V0VXNlck1lZGlhLXdlYmF1ZGlvLmh0bWwgWyBUaW1lb3V0IFBhc3Mg
XQogd2Via2l0Lm9yZy9iLzc5MjAzIGZhc3QvbWVkaWFzdHJlYW0vbW9jay1tZWRpYS1zb3VyY2Ut
d2ViYXVkaW8uaHRtbCBbIFRpbWVvdXQgUGFzcyBdCkBAIC01OTQsNyArNTg4LDYgQEAgd2Via2l0
Lm9yZy9iLzE3MzI1NyBmYXN0L21lZGlhc3RyZWFtL2dldFVzZXJNZWRpYS1ncmFudC1wZXJzaXN0
ZW5jeTMuaHRtbCBbIFBhc3MKIHdlYmtpdC5vcmcvYi8yMDc2NzUgZmFzdC9tZWRpYXN0cmVhbS9k
ZWxheWVkLXBlcm1pc3Npb24tYWxsb3dlZC5odG1sIFsgUGFzcyBDcmFzaCBdCiB3ZWJraXQub3Jn
L2IvMjA4MTIwIGZhc3QvbWVkaWFzdHJlYW0vbWVkaWEtZWxlbWVudC1jdXJyZW50LXRpbWUuaHRt
bCBbIEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIwOTEzMCBmYXN0L21lZGlhc3RyZWFtL2NoYW5n
ZS10cmFja3MtbWVkaWEtc3RyZWFtLWJlaW5nLXBsYXllZC5odG1sIFsgQ3Jhc2ggUGFzcyBUaW1l
b3V0IF0KLXdlYmtpdC5vcmcvYi8yMTAzMzcgZmFzdC9tZWRpYXN0cmVhbS9tZWRpYXN0cmVhbXRy
YWNrLWF1ZGlvLWNsb25lLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMTAzODUgZmFz
dC9tZWRpYXN0cmVhbS9hdWRpby10cmFjay1lbmFibGVkLmh0bWwgWyBDcmFzaCBQYXNzIF0KIHdl
YmtpdC5vcmcvYi8yMTAzODUgZmFzdC9tZWRpYXN0cmVhbS9nZXRVc2VyTWVkaWEtZGVmYXVsdC5o
dG1sIFsgQ3Jhc2ggUGFzcyBdCiB3ZWJraXQub3JnL2IvMjEwMzg1IGZhc3QvbWVkaWFzdHJlYW0v
c3RyZWFtLXN3aXRjaC5odG1sIFsgQ3Jhc2ggUGFzcyBdCkBAIC02MDYsOCArNTk5LDYgQEAgd2Vi
a2l0Lm9yZy9iLzE2OTgxMSBmYXN0L21lZGlhc3RyZWFtL2NhcHR1cmVTdHJlYW0vIFsgRmFpbHVy
ZSBdCiB3ZWJraXQub3JnL2IvMTY5ODExIGZhc3QvbWVkaWFzdHJlYW0vY2FwdHVyZVN0cmVhbS9j
YW52YXMyZC5odG1sIFsgQ3Jhc2ggVGltZW91dCBdCiB3ZWJraXQub3JnL2IvMTY5ODExIGZhc3Qv
bWVkaWFzdHJlYW0vY2FwdHVyZVN0cmVhbS9jYW52YXMzZC5odG1sIFsgQ3Jhc2ggVGltZW91dCBd
CiAKLXdlYmtpdC5vcmcvYi8xOTA1NzYgZmFzdC9tZWRpYXN0cmVhbS9nZXQtdXNlci1tZWRpYS1k
ZXZpY2UtaWQuaHRtbCBbIEZhaWx1cmUgXQotCiAjIE5vIHN1cHBvcnQgZm9yIEdQVVByb2Nlc3Mg
eWV0CiBmYXN0L21lZGlhc3RyZWFtL2NhcHR1cmVJbkdQVVByb2Nlc3MuaHRtbCBbIFNraXAgXQog
CkBAIC0xMjg1LDEwICsxMjc2LDggQEAgd2Via2l0Lm9yZy9iLzIwNjY1MyBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2NsaXBib2FyZC1hcGlzL2FzeW5jLXdyaXRlLXQKIAogd2Via2l0
Lm9yZy9iLzIwNjY1NSBbIFJlbGVhc2UgXSBpbnNwZWN0b3IvcGFnZS9vdmVycmlkZVNldHRpbmct
TW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZC5odG1sIFsgRmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcv
Yi8yMDY2NTYgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYWNhcHR1cmUtc3Ry
ZWFtcy9NZWRpYVN0cmVhbS1NZWRpYUVsZW1lbnQtZmlyc3RmcmFtZS5odHRwcy5odG1sIFsgRmFp
bHVyZSBdCiB3ZWJraXQub3JnL2IvMjA2NjU2IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvbWVkaWFjYXB0dXJlLXN0cmVhbXMvTWVkaWFTdHJlYW0tcmVtb3ZldHJhY2suaHR0cHMuaHRt
bCBbIEZhaWx1cmUgQ3Jhc2ggXQogd2Via2l0Lm9yZy9iLzIwNjY1NiBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL21lZGlhY2FwdHVyZS1zdHJlYW1zL01lZGlhU3RyZWFtVHJhY2stTWVk
aWFFbGVtZW50LWRpc2FibGVkLXZpZGVvLWlzLWJsYWNrLmh0dHBzLmh0bWwgWyBGYWlsdXJlIF0K
LXdlYmtpdC5vcmcvYi8yMDY2NTYgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRp
YWNhcHR1cmUtc3RyZWFtcy9NZWRpYVN0cmVhbVRyYWNrLWdldFNldHRpbmdzLmh0dHBzLmh0bWwg
WyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMDY2NTYgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9tZWRpYWNhcHR1cmUtc3RyZWFtcy9NZWRpYVN0cmVhbS1NZWRpYUVsZW1lbnQtcHJl
bG9hZC1ub25lLW1hbnVhbC5odHRwcy5odG1sIFsgQ3Jhc2ggRmFpbHVyZSBQYXNzIF0KIAogIyBM
RkMgKExheW91dEZvcm1hdGluZ0NvbnRleHQgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdCkuCkBAIC0x
NTgwLDkgKzE1NjksOSBAQCB3ZWJraXQub3JnL2IvMjA5NTMzIGh0dHAvdGVzdHMvY29udGVudGV4
dGVuc2lvbnMvdmlkZW8tZWxlbWVudC1yZXNvdXJjZS10eXBlLmh0bQogd2Via2l0Lm9yZy9iLzIw
OTUzMyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVk
ZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfbG9hZHN0YXJ0X25vYXV0b3BsYXkuaHRt
bCBbIENyYXNoIFBhc3MgXQogd2Via2l0Lm9yZy9iLzIwOTUzMyBtZWRpYS90cmFjay90cmFjay1h
dXRvbWF0aWMtc3VidGl0bGVzLmh0bWwgWyBDcmFzaCBQYXNzIF0KIAotd2Via2l0Lm9yZy9iLzIx
MDkyNiBmYXN0L21lZGlhc3RyZWFtL2dldERpc3BsYXlNZWRpYS1tYXgtY29uc3RyYWludHMxLmh0
bWwgWyBDcmFzaCBdCi13ZWJraXQub3JnL2IvMjEwOTI2IGZhc3QvbWVkaWFzdHJlYW0vZ2V0RGlz
cGxheU1lZGlhLW1heC1jb25zdHJhaW50czIuaHRtbCBbIENyYXNoIF0KLXdlYmtpdC5vcmcvYi8y
MTA5MjYgZmFzdC9tZWRpYXN0cmVhbS9nZXREaXNwbGF5TWVkaWEtbWF4LWNvbnN0cmFpbnRzMy5o
dG1sIFsgQ3Jhc2ggXQord2Via2l0Lm9yZy9iLzIxMDkyNiBmYXN0L21lZGlhc3RyZWFtL2dldERp
c3BsYXlNZWRpYS1tYXgtY29uc3RyYWludHMxLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8y
MTA5MjYgZmFzdC9tZWRpYXN0cmVhbS9nZXREaXNwbGF5TWVkaWEtbWF4LWNvbnN0cmFpbnRzMi5o
dG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjEwOTI2IGZhc3QvbWVkaWFzdHJlYW0vZ2V0RGlz
cGxheU1lZGlhLW1heC1jb25zdHJhaW50czMuaHRtbCBbIFNraXAgXQogCiAjLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLwogIyBFbmQgb2YgQ3Jhc2hpbmcgdGVzdHMKQEAgLTMzMzAsOCAr
MzMxOSw2IEBAIHdlYmtpdC5vcmcvYi8yMDYxNDcgaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9kb20t
YnJlYWtwb2ludHMuaHRtbCBbIFRpbWVvdXQgXQogCiB3ZWJraXQub3JnL2IvMjA2MTQ4IGh0dHAv
dGVzdHMvbG9jYWwvZmlsZS11cmwtaG9zdC5odG1sIFsgVGltZW91dCBdCiAKLXdlYmtpdC5vcmcv
Yi8yMDYxNDkgd2VicnRjL3BlZXItY29ubmVjdGlvbi1yZW1vdGUtYXVkaW8tbXV0ZS5odG1sIFsg
VGltZW91dCBdCi0KIHdlYmtpdC5vcmcvYi8yMDI3MzYgaHR0cC90ZXN0cy9hcHBjYWNoZS9yZW1v
dmUtY2FjaGUuaHRtbCBbIEZhaWx1cmUgVGltZW91dCBQYXNzIF0KIHdlYmtpdC5vcmcvYi8yMDI3
MzYgWyBSZWxlYXNlIF0gaHR0cC93cHQvY2FjaGUtc3RvcmFnZS9xdW90YS10aGlyZC1wYXJ0eS5o
dHRwcy5odG1sIFsgRmFpbHVyZSBUaW1lb3V0IFBhc3MgXQogCkBAIC00NDQxLDcgKzQ0MjgsNiBA
QCB3ZWJraXQub3JnL2IvMTYyODE1IGZhc3QvdGV4dC92YXJpYXRpb25zL3NraWEtcG9zdHNjcmlw
dC1uYW1lLmh0bWwgWyBJbWFnZU9ubHlGYQogd2Via2l0Lm9yZy9iLzE5Mjg4MyBmYXN0L2Nvb2tp
ZXMvY29va2llLWF2ZXJzZS1kb2N1bWVudC5odG1sIFsgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2Iv
MTkyODgzIGZhc3QvY29va2llcy9sb2NhbC1maWxlLWNhbi1zZXQtY29va2llcy5odG1sIFsgRmFp
bHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8xOTI4ODYgZmFzdC9tZWRpYXN0cmVhbS9tZWRpYS1zdHJl
YW0tcmVuZGVycy1maXJzdC1mcmFtZS5odG1sIFsgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTky
ODg4IGZhc3QvbWVkaWFzdHJlYW0vcmVzaXplLXRyaW0uaHRtbCBbIEZhaWx1cmUgXQogCiB3ZWJr
aXQub3JnL2IvMTkyOTAwIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZXZlbnRzb3Vy
Y2UvZm9ybWF0LW1pbWUtYm9ndXMuaHRtIFsgRmFpbHVyZSBdCkBAIC00NjcxLDggKzQ2NTcsNiBA
QCB3ZWJraXQub3JnL2IvMjA3Njc4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdXJs
L2EtZWxlbWVudC1vcmlnaW4uaHRtbCBbCiB3ZWJraXQub3JnL2IvMjA3Njc4IGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdXJsL2EtZWxlbWVudC14aHRtbC54aHRtbCBbIEZhaWx1cmUg
XQogd2Via2l0Lm9yZy9iLzIwNzY3OCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Vy
bC9hLWVsZW1lbnQuaHRtbCBbIEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMjEwODQzIGZhc3Qv
bWVkaWFzdHJlYW0vbWVkaWFzdHJlYW10cmFjay12aWRlby1mcmFtZVJhdGUtY2xvbmUtaW5jcmVh
c2luZy5odG1sIFsgRmFpbHVyZSBdCi0KICMvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
CiAjIEVuZCBvZiBub24tY3Jhc2hpbmcsIG5vbi1mbGFreSB0ZXN0cyBmYWlsaW5nCiAjLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwo=
</data>
<flag name="review"
          id="413361"
          type_id="1"
          status="+"
          setter="calvaris"
    />
          </attachment>
      

    </bug>

</bugzilla>