<?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>237583</bug_id>
          
          <creation_ts>2022-03-07 23:19:39 -0800</creation_ts>
          <short_desc>☂️ [WebGPU] Round-trip data through GPUBuffer</short_desc>
          <delta_ts>2022-03-16 20:02:15 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGPU</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=237932</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>237755</dependson>
    
    <dependson>237852</dependson>
    
    <dependson>237861</dependson>
    
    <dependson>237864</dependson>
    
    <dependson>237869</dependson>
    
    <dependson>237870</dependson>
    
    <dependson>237871</dependson>
    
    <dependson>237875</dependson>
    
    <dependson>237876</dependson>
    
    <dependson>237942</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1849113</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-03-07 23:19:39 -0800</bug_when>
    <thetext>This includes buffer mapping and command buffer submission in queues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1849115</commentid>
    <comment_count>1</comment_count>
      <attachid>454075</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-03-07 23:20:18 -0800</bug_when>
    <thetext>Created attachment 454075
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1849539</commentid>
    <comment_count>2</comment_count>
      <attachid>454194</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-03-08 22:11:14 -0800</bug_when>
    <thetext>Created attachment 454194
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1849558</commentid>
    <comment_count>3</comment_count>
      <attachid>454198</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-03-09 00:08:42 -0800</bug_when>
    <thetext>Created attachment 454198
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851181</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-03-15 00:20:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/90292654&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454075</attachid>
            <date>2022-03-07 23:20:18 -0800</date>
            <delta_ts>2022-03-08 22:11:12 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>33686</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IGQ2OTI3ZmUxMzMwYS4uNDE2NDU1ZDY4MmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BV
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTcsNiArNyw4IEBACiAJb2JqZWN0cyA9IHsK
IAogLyogQmVnaW4gUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KKwkJMUMwMEQxRUYyN0Q3MjUwOTAw
NTdERDA2IC8qIERpc2pvaW50UmFuZ2VzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFDMDBEMUVEMjdENzI1MDkwMDU3REQwNiAvKiBEaXNqb2ludFJh
bmdlcy5jcHAgKi87IH07CisJCTFDMDBEMUYwMjdENzI1MDkwMDU3REQwNiAvKiBEaXNqb2ludFJh
bmdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMw
MEQxRUUyN0Q3MjUwOTAwNTdERDA2IC8qIERpc2pvaW50UmFuZ2VzLmggKi87IH07CiAJCTFDMDIz
RDNGMjc0NDkwNzAwMDFEQjczNCAvKiBXR1NMTGV4ZXJUZXN0cy5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMDIzRDNFMjc0NDkwNzAwMDFEQjczNCAv
KiBXR1NMTGV4ZXJUZXN0cy5tbSAqLzsgfTsKIAkJMUMwMjNENDAyNzQ0OTA3MDAwMURCNzM0IC8q
IGxpYndnc2wuYSBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFDRUJEN0YyMjcxNkIyQ0MwMEE1MjU0RCAvKiBsaWJ3Z3NsLmEgKi87IH07CiAJCTFDMDIz
RDRCMjc0NDk1QjkwMDFEQjczNCAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3
b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzAyM0Q0QTI3NDQ5NUI5
MDAxREI3MzQgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovOyB9OwpAQCAtOTksNiArMTAx
LDggQEAKIC8qIEVuZCBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KIAogLyogQmVn
aW4gUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCisJCTFDMDBEMUVEMjdENzI1MDkwMDU3REQw
NiAvKiBEaXNqb2ludFJhbmdlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNqb2ludFJhbmdl
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDMDBEMUVFMjdENzI1MDkwMDU3
REQwNiAvKiBEaXNqb2ludFJhbmdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNqb2ludFJhbmdlcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzAyM0QzQzI3NDQ5MDcwMDAxREI3MzQg
LyogV0dTTFVuaXRUZXN0cy54Y3Rlc3QgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhw
bGljaXRGaWxlVHlwZSA9IHdyYXBwZXIuY2ZidW5kbGU7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0
aCA9IFdHU0xVbml0VGVzdHMueGN0ZXN0OyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElS
OyB9OwogCQkxQzAyM0QzRTI3NDQ5MDcwMDAxREI3MzQgLyogV0dTTExleGVyVGVzdHMubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBXR1NMTGV4ZXJUZXN0cy5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUMwMjNENDcyNzQ0OTE2RDAwMURCNzM0IC8qIFdHU0xVbml0VGVzdHMueGNj
b25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0LnhjY29uZmlnOyBwYXRoID0gV0dTTFVuaXRUZXN0cy54Y2NvbmZpZzsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTIyMSw2ICsyMjUsMTUgQEAKIC8qIEVuZCBQQlhGcmFtZXdvcmtz
QnVpbGRQaGFzZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEdyb3VwIHNlY3Rpb24gKi8KKwkJ
MUMwMEQxRjEyN0Q3MjUxQjAwNTdERDA2IC8qIFV0aWxpdGllcyAqLyA9IHsKKwkJCWlzYSA9IFBC
WEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMUMwMEQxRUQyN0Q3MjUwOTAwNTdERDA2IC8q
IERpc2pvaW50UmFuZ2VzLmNwcCAqLywKKwkJCQkxQzAwRDFFRTI3RDcyNTA5MDA1N0REMDYgLyog
RGlzam9pbnRSYW5nZXMuaCAqLywKKwkJCSk7CisJCQluYW1lID0gVXRpbGl0aWVzOworCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJMUMwMjNEM0QyNzQ0OTA3MDAwMURCNzM0IC8q
IFdHU0xVbml0VGVzdHMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KApAQCAtMjY1LDYgKzI3OCw3IEBACiAJCTFDRUJEN0U1MjcxNkFGQkEwMEE1MjU0RCAvKiBXZWJH
UFUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTFDMDBE
MUYxMjdENzI1MUIwMDU3REQwNiAvKiBVdGlsaXRpZXMgKi8sCiAJCQkJMUM1QUNBQjIyNzNBNDI2
RDAwOTVGOEQ1IC8qIEFkYXB0ZXIuaCAqLywKIAkJCQkxQzVBQ0FBOTI3M0E0MjZEMDA5NUY4RDUg
LyogQWRhcHRlci5tbSAqLywKIAkJCQkxQzVBQ0FENTI3M0E0RDcwMDA5NUY4RDUgLyogQmluZEdy
b3VwLmggKi8sCkBAIC0zNzIsNiArMzg2LDcgQEAKIAkJCWlzYSA9IFBCWEhlYWRlcnNCdWlsZFBo
YXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAorCQkJ
CTFDMDBEMUYwMjdENzI1MDkwMDU3REQwNiAvKiBEaXNqb2ludFJhbmdlcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUM1QUNBRDcyNzNBNEQ3MDAwOTVGOEQ1IC8qIEJpbmRHcm91cC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUNFQkQ3RTcyNzE2QUZCQTAwQTUyNTREIC8qIFdlYkdQVS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUM1QUNBRDMyNzNBNEM4NjAwOTVGOEQ1IC8qIFdlYkdQVUV4dC5oIGluIEhl
YWRlcnMgKi8sCkBAIC01OTcsNiArNjEyLDcgQEAKIAkJCQkxQzVBQ0FFMzI3M0E1NUNEMDA5NUY4
RDUgLyogQ29tbWFuZEJ1ZmZlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFDNUFDQUM5MjczQTQy
NkUwMDk1RjhENSAvKiBDb21tYW5kRW5jb2Rlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFDNUFD
QUM2MjczQTQyNkQwMDk1RjhENSAvKiBDb21wdXRlUGFzc0VuY29kZXIubW0gaW4gU291cmNlcyAq
LywKKwkJCQkxQzAwRDFFRjI3RDcyNTA5MDA1N0REMDYgLyogRGlzam9pbnRSYW5nZXMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMUM1QUNBQzAyNzNBNDI2RDAwOTVGOEQ1IC8qIENvbXB1dGVQaXBl
bGluZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFDNUFDQUMxMjczQTQyNkQwMDk1RjhENSAvKiBE
ZXZpY2UubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQzVBQ0E5NDI3M0E0MUMyMDA5NUY4RDUgLyog
SW5zdGFuY2UubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL0FkYXB0ZXIubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9BZGFwdGVyLm1tCmluZGV4IDgw
MzEwNzJlZDFjMy4uYzYxMjNkZDg2ZGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9BZGFwdGVyLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0FkYXB0ZXIubW0KQEAgLTEy
Miw3ICsxMjIsNyBAQCB2b2lkIEFkYXB0ZXI6OnJlcXVlc3REZXZpY2UoY29uc3QgV0dQVURldmlj
ZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIFdURjo6RnVuY3RpbwogCiAgICAgLy8gU2VlIHRoZSBj
b21tZW50IGluIERldmljZTo6c2V0TGFiZWwoKSBhYm91dCB3aHkgd2UncmUgbm90IHNldHRpbmcg
dGhlIGxhYmVsIGhlcmUuCiAKLSAgICBjYWxsYmFjayhXR1BVUmVxdWVzdERldmljZVN0YXR1c19T
dWNjZXNzLCBEZXZpY2U6OmNyZWF0ZShtX2RldmljZSksIG51bGxwdHIpOworICAgIGNhbGxiYWNr
KFdHUFVSZXF1ZXN0RGV2aWNlU3RhdHVzX1N1Y2Nlc3MsIERldmljZTo6Y3JlYXRlKG1fZGV2aWNl
LCBkZXNjcmlwdG9yLT5sYWJlbCksIG51bGxwdHIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJH
UFUKQEAgLTE1NSwxMyArMTU1LDIxIEBAIGJvb2wgd2dwdUFkYXB0ZXJIYXNGZWF0dXJlKFdHUFVB
ZGFwdGVyIGFkYXB0ZXIsIFdHUFVGZWF0dXJlTmFtZSBmZWF0dXJlKQogdm9pZCB3Z3B1QWRhcHRl
clJlcXVlc3REZXZpY2UoV0dQVUFkYXB0ZXIgYWRhcHRlciwgY29uc3QgV0dQVURldmljZURlc2Ny
aXB0b3IqIGRlc2NyaXB0b3IsIFdHUFVSZXF1ZXN0RGV2aWNlQ2FsbGJhY2sgY2FsbGJhY2ssIHZv
aWQqIHVzZXJkYXRhKQogewogICAgIGFkYXB0ZXItPmFkYXB0ZXItPnJlcXVlc3REZXZpY2UoZGVz
Y3JpcHRvciwgW2NhbGxiYWNrLCB1c2VyZGF0YV0gKFdHUFVSZXF1ZXN0RGV2aWNlU3RhdHVzIHN0
YXR1cywgUmVmUHRyPFdlYkdQVTo6RGV2aWNlPiYmIGRldmljZSwgY29uc3QgY2hhciogbWVzc2Fn
ZSkgewotICAgICAgICBjYWxsYmFjayhzdGF0dXMsIGRldmljZSA/IG5ldyBXR1BVRGV2aWNlSW1w
bCB7IGRldmljZS5yZWxlYXNlTm9uTnVsbCgpIH0gOiBudWxscHRyLCBtZXNzYWdlLCB1c2VyZGF0
YSk7CisgICAgICAgIGlmIChkZXZpY2UpIHsKKyAgICAgICAgICAgIGF1dG8mIHF1ZXVlID0gZGV2
aWNlLT5nZXRRdWV1ZSgpOworICAgICAgICAgICAgY2FsbGJhY2soc3RhdHVzLCBuZXcgV0dQVURl
dmljZUltcGwgeyBkZXZpY2UucmVsZWFzZU5vbk51bGwoKSwgeyBxdWV1ZSB9IH0sIG1lc3NhZ2Us
IHVzZXJkYXRhKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBjYWxsYmFjayhzdGF0dXMs
IG51bGxwdHIsIG1lc3NhZ2UsIHVzZXJkYXRhKTsKICAgICB9KTsKIH0KIAogdm9pZCB3Z3B1QWRh
cHRlclJlcXVlc3REZXZpY2VXaXRoQmxvY2soV0dQVUFkYXB0ZXIgYWRhcHRlciwgV0dQVURldmlj
ZURlc2NyaXB0b3IgY29uc3QgKiBkZXNjcmlwdG9yLCBXR1BVUmVxdWVzdERldmljZUJsb2NrQ2Fs
bGJhY2sgY2FsbGJhY2spCiB7CiAgICAgYWRhcHRlci0+YWRhcHRlci0+cmVxdWVzdERldmljZShk
ZXNjcmlwdG9yLCBbY2FsbGJhY2tdIChXR1BVUmVxdWVzdERldmljZVN0YXR1cyBzdGF0dXMsIFJl
ZlB0cjxXZWJHUFU6OkRldmljZT4mJiBkZXZpY2UsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpIHsKLSAg
ICAgICAgY2FsbGJhY2soc3RhdHVzLCBkZXZpY2UgPyBuZXcgV0dQVURldmljZUltcGwgeyBkZXZp
Y2UucmVsZWFzZU5vbk51bGwoKSB9IDogbnVsbHB0ciwgbWVzc2FnZSk7CisgICAgICAgIGlmIChk
ZXZpY2UpIHsKKyAgICAgICAgICAgIGF1dG8mIHF1ZXVlID0gZGV2aWNlLT5nZXRRdWV1ZSgpOwor
ICAgICAgICAgICAgY2FsbGJhY2soc3RhdHVzLCBuZXcgV0dQVURldmljZUltcGwgeyBkZXZpY2Uu
cmVsZWFzZU5vbk51bGwoKSwgeyBxdWV1ZSB9IH0sIG1lc3NhZ2UpOworICAgICAgICB9IGVsc2UK
KyAgICAgICAgICAgIGNhbGxiYWNrKHN0YXR1cywgbnVsbHB0ciwgbWVzc2FnZSk7CiAgICAgfSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CdWZmZXIuaCBiL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL0J1ZmZlci5oCmluZGV4IDk1MDY2MzFiZTlhMy4uNzQwMGMyNGZmMDEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CdWZmZXIuaAorKysgYi9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9CdWZmZXIuaApAQCAtMjUsNiArMjUsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAor
I2ltcG9ydCAiRGlzam9pbnRSYW5nZXMuaCIKKyNpbXBvcnQgPHV0aWxpdHk+CiAjaW1wb3J0IDx3
dGYvRmFzdE1hbGxvYy5oPgogI2ltcG9ydCA8d3RmL0Z1bmN0aW9uLmg+CiAjaW1wb3J0IDx3dGYv
UmVmLmg+CkBAIC0zMiwxMiArMzQsMTcgQEAKIAogbmFtZXNwYWNlIFdlYkdQVSB7CiAKK2NsYXNz
IERldmljZTsKKwogY2xhc3MgQnVmZmVyIDogcHVibGljIFJlZkNvdW50ZWQ8QnVmZmVyPiB7CiAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxCdWZm
ZXI+IGNyZWF0ZShpZDxNVExCdWZmZXI+IGJ1ZmZlcikKKyAgICBlbnVtIGNsYXNzIFN0YXRlIDog
dWludDhfdDsKKyAgICB1c2luZyBNYXBwaW5nUmFuZ2UgPSBzdGQ6OnBhaXI8c2l6ZV90LCBzaXpl
X3Q+OworCisgICAgc3RhdGljIFJlZjxCdWZmZXI+IGNyZWF0ZShpZDxNVExCdWZmZXI+IGJ1ZmZl
ciwgdWludDY0X3Qgc2l6ZSwgV0dQVUJ1ZmZlclVzYWdlRmxhZ3MgdXNhZ2UsIFN0YXRlIGluaXRp
YWxTdGF0ZSwgTWFwcGluZ1JhbmdlIGluaXRpYWxNYXBwaW5nUmFuZ2UsIERldmljZSYgZGV2aWNl
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQnVmZmVyKGJ1ZmZlcikpOwor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCdWZmZXIoYnVmZmVyLCBzaXplLCB1c2FnZSwg
aW5pdGlhbFN0YXRlLCBpbml0aWFsTWFwcGluZ1JhbmdlLCBkZXZpY2UpKTsKICAgICB9CiAKICAg
ICB+QnVmZmVyKCk7CkBAIC00OSwxMiArNTYsMzggQEAgcHVibGljOgogICAgIHZvaWQgdW5tYXAo
KTsKICAgICB2b2lkIHNldExhYmVsKGNvbnN0IGNoYXIqKTsKIAorICAgIC8vIGh0dHBzOi8vZ3B1
d2ViLmdpdGh1Yi5pby9ncHV3ZWIvI2J1ZmZlci1zdGF0ZQorICAgIC8vIEVhY2ggR1BVQnVmZmVy
IGhhcyBhIGN1cnJlbnQgYnVmZmVyIHN0YXRlIG9uIHRoZSBDb250ZW50IHRpbWVsaW5lIHdoaWNo
IGlzIG9uZSBvZiB0aGUgZm9sbG93aW5nOgorICAgIGVudW0gY2xhc3MgU3RhdGUgOiB1aW50OF90
IHsKKyAgICAgICAgTWFwcGVkLCAvLyAid2hlcmUgdGhlIEdQVUJ1ZmZlciBpcyBhdmFpbGFibGUg
Zm9yIENQVSBvcGVyYXRpb25zIG9uIGl0cyBjb250ZW50LiIKKyAgICAgICAgTWFwcGVkQXRDcmVh
dGlvbiwgLy8gIndoZXJlIHRoZSBHUFVCdWZmZXIgd2FzIGp1c3QgY3JlYXRlZCBhbmQgaXMgYXZh
aWxhYmxlIGZvciBDUFUgb3BlcmF0aW9ucyBvbiBpdHMgY29udGVudC4iCisgICAgICAgIE1hcHBp
bmdQZW5kaW5nLCAvLyAid2hlcmUgdGhlIEdQVUJ1ZmZlciBpcyBiZWluZyBtYWRlIGF2YWlsYWJs
ZSBmb3IgQ1BVIG9wZXJhdGlvbnMgb24gaXRzIGNvbnRlbnQuIgorICAgICAgICBVbm1hcHBlZCwg
Ly8gIndoZXJlIHRoZSBHUFVCdWZmZXIgaXMgYXZhaWxhYmxlIGZvciBHUFUgb3BlcmF0aW9ucy4i
CisgICAgICAgIERlc3Ryb3llZCwgLy8gIndoZXJlIHRoZSBHUFVCdWZmZXIgaXMgbm8gbG9uZ2Vy
IGF2YWlsYWJsZSBmb3IgYW55IG9wZXJhdGlvbnMgZXhjZXB0IGRlc3Ryb3kuIgorICAgIH07CisK
ICAgICBpZDxNVExCdWZmZXI+IGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CiAK
IHByaXZhdGU6Ci0gICAgQnVmZmVyKGlkPE1UTEJ1ZmZlcj4pOworICAgIEJ1ZmZlcihpZDxNVExC
dWZmZXI+LCB1aW50NjRfdCBzaXplLCBXR1BVQnVmZmVyVXNhZ2VGbGFncyB1c2FnZSwgU3RhdGUg
aW5pdGlhbFN0YXRlLCBNYXBwaW5nUmFuZ2UgaW5pdGlhbE1hcHBpbmdSYW5nZSwgRGV2aWNlJik7
CisKKyAgICBib29sIHZhbGlkYXRlR2V0TWFwcGVkUmFuZ2Uoc2l6ZV90IG9mZnNldCwgc2l6ZV90
IHJhbmdlU2l6ZSk7CisgICAgYm9vbCB2YWxpZGF0ZU1hcEFzeW5jKFdHUFVNYXBNb2RlRmxhZ3Mg
bW9kZSwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IHJhbmdlU2l6ZSk7CisgICAgYm9vbCB2YWxpZGF0
ZVVubWFwKCk7CiAKICAgICBpZDxNVExCdWZmZXI+IG1fYnVmZmVyIHsgbmlsIH07CisKKyAgICAv
LyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNidWZmZXItaW50ZXJmYWNlCisgICAg
Ly8gIkdQVUJ1ZmZlciBoYXMgdGhlIGZvbGxvd2luZyBpbnRlcm5hbCBzbG90czoiCisgICAgc2l6
ZV90IG1fc2l6ZSB7IDAgfTsgLy8gIlRoZSBsZW5ndGggb2YgdGhlIEdQVUJ1ZmZlciBhbGxvY2F0
aW9uIGluIGJ5dGVzLiIKKyAgICBXR1BVQnVmZmVyVXNhZ2VGbGFncyBtX3VzYWdlIHsgMCB9OyAv
LyAiVGhlIGFsbG93ZWQgdXNhZ2VzIGZvciB0aGlzIEdQVUJ1ZmZlci4iCisgICAgU3RhdGUgbV9z
dGF0ZSB7IFN0YXRlOjpVbm1hcHBlZCB9OyAvLyAiVGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIEdQ
VUJ1ZmZlci4iCisgICAgLy8gIltbbWFwcGluZ11dIG9mIHR5cGUgQXJyYXlCdWZmZXIgb3IgUHJv
bWlzZSBvciBudWxsLiIgVGhpcyBpcyB1bm5lY2Vzc2FyeTsgd2UgY2FuIGp1c3QgdXNlIG1fZGV2
aWNlLmNvbnRlbnRzLgorICAgIE1hcHBpbmdSYW5nZSBtX21hcHBpbmdSYW5nZSB7IDAsIDAgfTsg
Ly8gIltbbWFwcGluZ19yYW5nZV1dIG9mIHR5cGUgbGlzdDx1bnNpZ25lZCBsb25nIGxvbmc+IG9y
IG51bGwuIgorICAgIERpc2pvaW50UmFuZ2VzIG1fbWFwcGVkUmFuZ2VzOyAvLyAiW1ttYXBwZWRf
cmFuZ2VzXV0gb2YgdHlwZSBsaXN0PEFycmF5QnVmZmVyPiBvciBudWxsLiIKKyAgICBXR1BVTWFw
TW9kZUZsYWdzIG1fbWFwTW9kZSB7IFdHUFVNYXBNb2RlX05vbmUgfTsgLy8gIlRoZSBHUFVNYXBN
b2RlRmxhZ3Mgb2YgdGhlIGxhc3QgY2FsbCB0byBtYXBBc3luYygpIChpZiBhbnkpLiIKKworICAg
IFJlZjxEZXZpY2U+IG1fZGV2aWNlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViR1BVCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CdWZmZXIubW0gYi9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9CdWZmZXIubW0KaW5kZXggODYyMzViNTdiZmNmLi5kMmIzYjdmMWEwZDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0J1ZmZlci5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9CdWZmZXIubW0KQEAgLTI3LDE3ICsyNywxMzAgQEAKICNpbXBvcnQgIkJ1ZmZlci5oIgog
CiAjaW1wb3J0ICJEZXZpY2UuaCIKKyNpbXBvcnQgPHd0Zi9QYWdlQmxvY2suaD4KKyNpbXBvcnQg
PHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkdQVSB7CiAKK3N0YXRpYyBpbmxp
bmUgYm9vbCBpc05vdE11bHRpcGxlT2ZQb3dlck9mVHdvKHVpbnQ2NF90IHgsIHVpbnQ2NF90IHkp
IHsKKyAgICBBU1NFUlQoaXNQb3dlck9mVHdvKHkpKTsKKyAgICByZXR1cm4geCAmICh5IC0gMSk7
Cit9CisKK3N0YXRpYyBib29sIHZhbGlkYXRlRGVzY3JpcHRvcihjb25zdCBEZXZpY2UmIGRldmlj
ZSwgY29uc3QgV0dQVUJ1ZmZlckRlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCit7CisgICAgVU5VU0VE
X1BBUkFNKGRldmljZSk7CisKKyAgICAvLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2Vi
LyNhYnN0cmFjdC1vcGRlZi12YWxpZGF0aW5nLWdwdWJ1ZmZlcmRlc2NyaXB0b3IKKworICAgIC8v
IEZJWE1FOiAiSWYgZGV2aWNlIGlzIGxvc3QgcmV0dXJuIGZhbHNlLiIKKworICAgIC8vIEZJWE1F
OiAiSWYgYW55IG9mIHRoZSBiaXRzIG9mIGRlc2NyaXB0b3LigJlzIHVzYWdlIGFyZW7igJl0IHBy
ZXNlbnQgaW4gdGhpcyBkZXZpY2XigJlzIFtbYWxsb3dlZCBidWZmZXIgdXNhZ2VzXV0gcmV0dXJu
IGZhbHNlLiIKKworICAgIC8vICJJZiBib3RoIHRoZSBNQVBfUkVBRCBhbmQgTUFQX1dSSVRFIGJp
dHMgb2YgZGVzY3JpcHRvcuKAmXMgdXNhZ2UgYXR0cmlidXRlIGFyZSBzZXQsIHJldHVybiBmYWxz
ZS4iCisgICAgaWYgKChkZXNjcmlwdG9yLnVzYWdlICYgV0dQVUJ1ZmZlclVzYWdlX01hcFJlYWQp
ICYmIChkZXNjcmlwdG9yLnVzYWdlICYgV0dQVUJ1ZmZlclVzYWdlX01hcFdyaXRlKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBib29sIHZh
bGlkYXRlQ3JlYXRlQnVmZmVyKGNvbnN0IERldmljZSYgZGV2aWNlLCBjb25zdCBXR1BVQnVmZmVy
RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK3sKKyAgICAvLyBGSVhNRTogInRoaXMgaXMgYSB2YWxp
ZCBHUFVEZXZpY2UuIgorCisgICAgLy8gInZhbGlkYXRpbmcgR1BVQnVmZmVyRGVzY3JpcHRvcih0
aGlzLCBkZXNjcmlwdG9yKSByZXR1cm5zIHRydWUuIgorICAgIGlmICghdmFsaWRhdGVEZXNjcmlw
dG9yKGRldmljZSwgZGVzY3JpcHRvcikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8v
ICJkZXNjcmlwdG9yLnVzYWdlIG11c3Qgbm90IGJlIDAuIgorICAgIGlmIChkZXNjcmlwdG9yLnVz
YWdlID09IDApCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIEZJWE1FOiAiZGVzY3Jp
cHRvci51c2FnZSBpcyBhIHN1YnNldCBvZiB0aGlzLltbYWxsb3dlZCBidWZmZXIgdXNhZ2VzXV0u
IgorCisgICAgLy8gIklmIGRlc2NyaXB0b3IudXNhZ2UgY29udGFpbnMgTUFQX1JFQUQ6IGRlc2Ny
aXB0b3IudXNhZ2UgY29udGFpbnMgbm8gb3RoZXIgZmxhZ3MgZXhjZXB0IENPUFlfRFNULiIKKyAg
ICBpZiAoKGRlc2NyaXB0b3IudXNhZ2UgJiBXR1BVQnVmZmVyVXNhZ2VfTWFwUmVhZCkKKyAgICAg
ICAgJiYgKGRlc2NyaXB0b3IudXNhZ2UgJiB+V0dQVUJ1ZmZlclVzYWdlX0NvcHlEc3QgJiB+V0dQ
VUJ1ZmZlclVzYWdlX01hcFJlYWQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyAi
SWYgZGVzY3JpcHRvci51c2FnZSBjb250YWlucyBNQVBfV1JJVEU6IGRlc2NyaXB0b3IudXNhZ2Ug
Y29udGFpbnMgbm8gb3RoZXIgZmxhZ3MgZXhjZXB0IENPUFlfU1JDLiIKKyAgICBpZiAoKGRlc2Ny
aXB0b3IudXNhZ2UgJiBXR1BVQnVmZmVyVXNhZ2VfTWFwV3JpdGUpCisgICAgICAgICYmIChkZXNj
cmlwdG9yLnVzYWdlICYgfldHUFVCdWZmZXJVc2FnZV9Db3B5U3JjICYgfldHUFVCdWZmZXJVc2Fn
ZV9NYXBXcml0ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vICJJZiBkZXNjcmlw
dG9yLm1hcHBlZEF0Q3JlYXRpb24gaXMgdHJ1ZTogZGVzY3JpcHRvci5zaXplIGlzIGEgbXVsdGlw
bGUgb2YgNC4iCisgICAgaWYgKGRlc2NyaXB0b3IubWFwcGVkQXRDcmVhdGlvbiAmJiBpc05vdE11
bHRpcGxlT2ZQb3dlck9mVHdvKGRlc2NyaXB0b3Iuc2l6ZSwgNCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgTVRMU3RvcmFnZU1vZGUgc3Rv
cmFnZU1vZGUoYm9vbCBkZXZpY2VIYXNVbmlmaWVkTWVtb3J5LCBXR1BVQnVmZmVyVXNhZ2VGbGFn
cyB1c2FnZSkKK3sKKyAgICBpZiAoZGV2aWNlSGFzVW5pZmllZE1lbW9yeSkKKyAgICAgICAgcmV0
dXJuIE1UTFN0b3JhZ2VNb2RlU2hhcmVkOworICAgIC8vIE9uIGRpc2NyZXRlIG1lbW9yeSBHUFVz
LCBtYXBwYWJsZSBtZW1vcnkgaXMgc2hhcmVkLCB3aGVyZWFzIG5vbi1tYXBwYWJsZSBtZW1vcnkg
aXMgcHJpdmF0ZS4KKyAgICAvLyBUaGVyZSBpcyBubyBzaXR1YXRpb24gd2hlcmUgd2UnbGwgdXNl
IHRoZSBtYW5hZ2VkIHN0b3JhZ2UgbW9kZS4KKyAgICBpZiAoKHVzYWdlICYgV0dQVUJ1ZmZlclVz
YWdlX01hcFJlYWQpIHx8ICh1c2FnZSAmIFdHUFVCdWZmZXJVc2FnZV9NYXBXcml0ZSkpCisgICAg
ICAgIHJldHVybiBNVExTdG9yYWdlTW9kZVNoYXJlZDsKKyAgICByZXR1cm4gTVRMU3RvcmFnZU1v
ZGVQcml2YXRlOworfQorCiBSZWZQdHI8QnVmZmVyPiBEZXZpY2U6OmNyZWF0ZUJ1ZmZlcihjb25z
dCBXR1BVQnVmZmVyRGVzY3JpcHRvciogZGVzY3JpcHRvcikKIHsKLSAgICBVTlVTRURfUEFSQU0o
ZGVzY3JpcHRvcik7Ci0gICAgcmV0dXJuIEJ1ZmZlcjo6Y3JlYXRlKG5pbCk7CisgICAgaWYgKGRl
c2NyaXB0b3ItPm5leHRJbkNoYWluKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIC8v
IGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIvI2RvbS1ncHVkZXZpY2UtY3JlYXRlYnVm
ZmVyCisKKyAgICAvLyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5z
YXRpc2ZpZWQsIHJldHVybiBhbiBlcnJvciBidWZmZXIgYW5kIHN0b3AuIgorICAgIGlmICghdmFs
aWRhdGVDcmVhdGVCdWZmZXIoKnRoaXMsICpkZXNjcmlwdG9yKSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICAvLyBGSVhNRTogVXNlIGhlYXAgYWxsb2NhdGlvbiB0byBtYWtlIHRoaXMg
ZmFzdGVyLgorICAgIC8vIElmL3doZW4gd2UgZG8gdGhhdCwgd2UgaGF2ZSB0byBtYWtlIHN1cmUg
dGhhdCAibmV3IiBidWZmZXJzIGdldCBjbGVhcmVkIHRvIDAuCisgICAgLy8gRklYTUU6IENvbnNp
ZGVyIHdyaXRlLWNvbWJpbmluZyBDUFUgY2FjaGUgbW9kZS4KKyAgICAvLyBGSVhNRTogQ29uc2lk
ZXIgaW1wbGVtZW50aW5nIGhhemFyZCB0cmFja2luZyBvdXJzZWxmLgorICAgIE1UTFN0b3JhZ2VN
b2RlIHN0b3JhZ2VNb2RlID0gV2ViR1BVOjpzdG9yYWdlTW9kZShtX2hhc1VuaWZpZWRNZW1vcnks
IGRlc2NyaXB0b3ItPnVzYWdlKTsKKyAgICBpZDxNVExCdWZmZXI+IGJ1ZmZlciA9IFttX2Rldmlj
ZSBuZXdCdWZmZXJXaXRoTGVuZ3RoOmRlc2NyaXB0b3ItPnNpemUgb3B0aW9uczpzdG9yYWdlTW9k
ZV07CisgICAgaWYgKCFidWZmZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYnVm
ZmVyLmxhYmVsID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDU3RyaW5nOmRlc2NyaXB0b3ItPmxhYmVs
IGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKKworICAgIC8vIEZJWE1FOiBIYW5kbGUg
ZGVzY3JpcHRvci5tYXBwZWRBdENyZWF0aW9uLgorICAgIC8vIEJlY2F1c2Ugbm9uLW1hcHBhYmxl
IGJ1ZmZlcnMgY2FuIGJlIG1hcHBlZCBhdCBjcmVhdGlvbiwKKyAgICAvLyB0aGlzIG1lYW5zIHdl
IGhhdmUgdG8gaGF2ZSBhIHRlbXBvcmFyeSBidWZmZXIgbWFwcGVkLAorICAgIC8vIGFuZCB3ZSBj
YW4gdG8gc2NoZWR1bGUgYSBjb3B5IGNvbW1hbmQgd2hlbiBpdCBnZXRzIHVubWFwcGVkLAorICAg
IC8vIHByZXN1bWFibHkgYXQgZmlyc3QgdXNlLgorCisgICAgLy8gIkxldCBiIGJlIGEgbmV3IEdQ
VUJ1ZmZlciBvYmplY3QuIgorICAgIC8vICJTZXQgYi5bW3NpemVdXSB0byBkZXNjcmlwdG9yLnNp
emUuIgorICAgIC8vICJTZXQgYi5bW3VzYWdlXV0gdG8gZGVzY3JpcHRvci51c2FnZS4iCisKKyAg
ICAvLyAiSWYgZGVzY3JpcHRvci5tYXBwZWRBdENyZWF0aW9uIGlzIHRydWU6IgorICAgIGlmIChk
ZXNjcmlwdG9yLT5tYXBwZWRBdENyZWF0aW9uKSB7CisgICAgICAgIC8vICJTZXQgYi5bW21hcHBp
bmddXSB0byBhIG5ldyBBcnJheUJ1ZmZlciBvZiBzaXplIGIuW1tzaXplXV0uIiBUaGlzIGlzIHVu
bmVjZXNzYXJ5LgorICAgICAgICAvLyAiU2V0IGIuW1ttYXBwaW5nX3JhbmdlXV0gdG8gWzAsIGRl
c2NyaXB0b3Iuc2l6ZV0uIgorICAgICAgICAvLyAiU2V0IGIuW1ttYXBwZWRfcmFuZ2VzXV0gdG8g
W10uIgorICAgICAgICAvLyAiU2V0IGIuW1tzdGF0ZV1dIHRvIG1hcHBlZCBhdCBjcmVhdGlvbi4i
CisgICAgICAgIHJldHVybiBCdWZmZXI6OmNyZWF0ZShidWZmZXIsIGRlc2NyaXB0b3ItPnNpemUs
IGRlc2NyaXB0b3ItPnVzYWdlLCBCdWZmZXI6OlN0YXRlOjpNYXBwZWRBdENyZWF0aW9uLCBzdGQ6
Om1ha2VfcGFpcihzdGF0aWNfY2FzdDxzaXplX3Q+KDApLCBkZXNjcmlwdG9yLT5zaXplKSwgKnRo
aXMpOworICAgIH0KKworICAgIC8vICJTZXQgYi5bW21hcHBpbmddXSB0byBudWxsLiIgVGhpcyBp
cyB1bm5lY2Vzc2FyeS4KKyAgICAvLyAiU2V0IGIuW1ttYXBwaW5nX3JhbmdlXV0gdG8gbnVsbC4i
CisgICAgLy8gIlNldCBiLltbbWFwcGVkX3Jhbmdlc11dIHRvIG51bGwuIgorICAgIC8vICJTZXQg
Yi5bW3N0YXRlXV0gdG8gdW5tYXBwZWQuIgorICAgIHJldHVybiBCdWZmZXI6OmNyZWF0ZShidWZm
ZXIsIGRlc2NyaXB0b3ItPnNpemUsIGRlc2NyaXB0b3ItPnVzYWdlLCBCdWZmZXI6OlN0YXRlOjpV
bm1hcHBlZCwgc3RkOjptYWtlX3BhaXIoc3RhdGljX2Nhc3Q8c2l6ZV90PigwKSwgc3RhdGljX2Nh
c3Q8c2l6ZV90PigwKSksICp0aGlzKTsKIH0KIAotQnVmZmVyOjpCdWZmZXIoaWQ8TVRMQnVmZmVy
PiBidWZmZXIpCitCdWZmZXI6OkJ1ZmZlcihpZDxNVExCdWZmZXI+IGJ1ZmZlciwgdWludDY0X3Qg
c2l6ZSwgV0dQVUJ1ZmZlclVzYWdlRmxhZ3MgdXNhZ2UsIFN0YXRlIGluaXRpYWxTdGF0ZSwgTWFw
cGluZ1JhbmdlIGluaXRpYWxNYXBwaW5nUmFuZ2UsIERldmljZSYgZGV2aWNlKQogICAgIDogbV9i
dWZmZXIoYnVmZmVyKQorICAgICwgbV9zaXplKHNpemUpCisgICAgLCBtX3VzYWdlKHVzYWdlKQor
ICAgICwgbV9zdGF0ZShpbml0aWFsU3RhdGUpCisgICAgLCBtX21hcHBpbmdSYW5nZShpbml0aWFs
TWFwcGluZ1JhbmdlKQorICAgICwgbV9kZXZpY2UoZGV2aWNlKQogewogfQogCkBAIC00NSwzMiAr
MTU4LDIzNiBAQCBCdWZmZXI6On5CdWZmZXIoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgQnVmZmVyOjpk
ZXN0cm95KCkKIHsKKyAgICAvLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNkb20t
Z3B1YnVmZmVyLWRlc3Ryb3kKKworICAgIC8vICJJZiB0aGUgdGhpcy5bW3N0YXRlXV0gaXMgbm90
IGVpdGhlciBvZiB1bm1hcHBlZCBvciBkZXN0cm95ZWQ6IFJ1biB0aGUgc3RlcHMgdG8gdW5tYXAg
dGhpcy4iCisgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OlVubWFwcGVkICYmIG1fc3RhdGUgIT0g
U3RhdGU6OkRlc3Ryb3llZCkgeworICAgICAgICAvLyBGSVhNRTogQVNTRVJUKCkgdGhhdCB0aGlz
IGNhbGwgZG9lc24ndCBmYWlsLgorICAgICAgICB1bm1hcCgpOworICAgIH0KKworICAgIC8vICJT
ZXQgdGhpcy5bW3N0YXRlXV0gdG8gZGVzdHJveWVkLiIKKyAgICBtX3N0YXRlID0gU3RhdGU6OkRl
c3Ryb3llZDsKKworICAgIG1fYnVmZmVyID0gbmlsOwogfQogCiBjb25zdCB2b2lkKiBCdWZmZXI6
OmdldENvbnN0TWFwcGVkUmFuZ2Uoc2l6ZV90IG9mZnNldCwgc2l6ZV90IHNpemUpCiB7Ci0gICAg
VU5VU0VEX1BBUkFNKG9mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNpemUpOwotICAgIHJldHVy
biBudWxscHRyOworICAgIHJldHVybiBnZXRNYXBwZWRSYW5nZShvZmZzZXQsIHNpemUpOworfQor
Citib29sIEJ1ZmZlcjo6dmFsaWRhdGVHZXRNYXBwZWRSYW5nZShzaXplX3Qgb2Zmc2V0LCBzaXpl
X3QgcmFuZ2VTaXplKQoreworICAgIC8vICJ0aGlzLltbc3RhdGVdXSBpcyBtYXBwZWQgb3IgbWFw
cGVkIGF0IGNyZWF0aW9uLiIKKyAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6TWFwcGVkICYmIG1f
c3RhdGUgIT0gU3RhdGU6Ok1hcHBlZEF0Q3JlYXRpb24pCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIC8vICJvZmZzZXQgaXMgYSBtdWx0aXBsZSBvZiA4LiIKKyAgICBpZiAoaXNOb3RNdWx0
aXBsZU9mUG93ZXJPZlR3byhvZmZzZXQsIDgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICAvLyAicmFuZ2VTaXplIGlzIGEgbXVsdGlwbGUgb2YgNC4iCisgICAgaWYgKGlzTm90TXVsdGlw
bGVPZlBvd2VyT2ZUd28ob2Zmc2V0LCA4KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
Ly8gIm9mZnNldCBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhpcy5bW21hcHBpbmdfcmFu
Z2VdXVswXS4iCisgICAgaWYgKG9mZnNldCA8IG1fbWFwcGluZ1JhbmdlLmZpcnN0KQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyAib2Zmc2V0ICsgcmFuZ2VTaXplIGlzIGxlc3MgdGhh
biBvciBlcXVhbCB0byB0aGlzLltbbWFwcGluZ19yYW5nZV1dWzFdLiIKKyAgICAvLyBGSVhNRTog
VXNlZCBjaGVja2VkIGFyaXRobWV0aWMuCisgICAgaWYgKG9mZnNldCArIHJhbmdlU2l6ZSA+IG1f
bWFwcGluZ1JhbmdlLnNlY29uZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gIltv
ZmZzZXQsIG9mZnNldCArIHJhbmdlU2l6ZSkgZG9lcyBub3Qgb3ZlcmxhcCBhbm90aGVyIHJhbmdl
IGluIHRoaXMuW1ttYXBwZWRfcmFuZ2VzXV0uIgorICAgIGlmIChtX21hcHBlZFJhbmdlcy5vdmVy
bGFwcyhzdGQ6Om1ha2VfcGFpcihvZmZzZXQsIG9mZnNldCArIHJhbmdlU2l6ZSkpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCogQnVmZmVyOjpn
ZXRNYXBwZWRSYW5nZShzaXplX3Qgb2Zmc2V0LCBzaXplX3Qgc2l6ZSkKIHsKLSAgICBVTlVTRURf
UEFSQU0ob2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc2l6ZSk7Ci0gICAgcmV0dXJuIG51bGxw
dHI7CisgICAgLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8jZG9tLWdwdWJ1ZmZl
ci1nZXRtYXBwZWRyYW5nZQorCisgICAgLy8gIklmIHNpemUgaXMgbWlzc2luZzogTGV0IHJhbmdl
U2l6ZSBiZSBtYXgoMCwgdGhpcy5bW3NpemVdXSAtIG9mZnNldCkuIgorICAgIC8vIEZJWE1FOiBV
c2UgY2hlY2tlZCBhcml0aG1ldGljLgorICAgIGF1dG8gcmFuZ2VTaXplID0gc2l6ZTsKKyAgICBp
ZiAoc2l6ZSA9PSBXR1BVX1dIT0xFX01BUF9TSVpFKQorICAgICAgICByYW5nZVNpemUgPSBzdGQ6
Om1heChzdGF0aWNfY2FzdDxzaXplX3Q+KDApLCBtX3NpemUgLSBvZmZzZXQpOworCisgICAgLy8g
IklmIGFueSBvZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIHVuc2F0aXNmaWVkIgorICAg
IGlmICghdmFsaWRhdGVHZXRNYXBwZWRSYW5nZShvZmZzZXQsIHJhbmdlU2l6ZSkpIHsKKyAgICAg
ICAgLy8gRklYTUU6ICJ0aHJvdyBhbiBPcGVyYXRpb25FcnJvciBhbmQgc3RvcC4iCisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIC8vICJMZXQgbSBiZSBhIG5ldyBBcnJheUJ1
ZmZlciBvZiBzaXplIHJhbmdlU2l6ZSBwb2ludGluZyBhdCB0aGUgY29udGVudCBvZiB0aGlzLltb
bWFwcGluZ11dIGF0IG9mZnNldCBvZmZzZXQgLSB0aGlzLltbbWFwcGluZ19yYW5nZV1dWzBdLiIK
KworICAgIC8vICJBcHBlbmQgbSB0byB0aGlzLltbbWFwcGVkX3Jhbmdlc11dLiIKKyAgICBtX21h
cHBlZFJhbmdlcy5hcHBlbmQoc3RkOjptYWtlX3BhaXIob2Zmc2V0LCBvZmZzZXQgKyByYW5nZVNp
emUpKTsKKworICAgIC8vICJSZXR1cm4gbS4iCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNoYXIq
PihtX2J1ZmZlci5jb250ZW50cykgKyBvZmZzZXQ7Cit9CisKK2Jvb2wgQnVmZmVyOjp2YWxpZGF0
ZU1hcEFzeW5jKFdHUFVNYXBNb2RlRmxhZ3MgbW9kZSwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IHJh
bmdlU2l6ZSkKK3sKKyAgICAvLyBGSVhNRTogInRoaXMgaXMgYSB2YWxpZCBHUFVCdWZmZXIuIFRP
RE86IGNoZWNrIGRlc3Ryb3llZCBzdGF0ZT8iCisKKyAgICAvLyAib2Zmc2V0IGlzIGEgbXVsdGlw
bGUgb2YgOC4iCisgICAgaWYgKGlzTm90TXVsdGlwbGVPZlBvd2VyT2ZUd28ob2Zmc2V0LCA4KSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gInJhbmdlU2l6ZSBpcyBhIG11bHRpcGxl
IG9mIDQuIgorICAgIGlmIChpc05vdE11bHRpcGxlT2ZQb3dlck9mVHdvKHJhbmdlU2l6ZSwgNCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vICJvZmZzZXQgKyByYW5nZVNpemUgaXMg
bGVzcyBvciBlcXVhbCB0byB0aGlzLltbc2l6ZV1dIgorICAgIC8vIEZJWE1FOiBVc2UgY2hlY2tl
ZCBhcml0aG1ldGljLgorICAgIGlmIChvZmZzZXQgKyByYW5nZVNpemUgPiBtX3NpemUpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vICJ0aGlzLltbc3RhdGVdXSBpcyB1bm1hcHBlZCIK
KyAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6VW5tYXBwZWQpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIC8vICJtb2RlIGNvbnRhaW5zIGV4YWN0bHkgb25lIG9mIFJFQUQgb3IgV1JJVEUu
IgorICAgIGF1dG8gcmVhZFdyaXRlTW9kZUZsYWdzID0gbW9kZSAmIChXR1BVTWFwTW9kZV9SZWFk
IHwgV0dQVU1hcE1vZGVfV3JpdGUpOworICAgIGlmIChyZWFkV3JpdGVNb2RlRmxhZ3MgIT0gV0dQ
VU1hcE1vZGVfUmVhZCAmJiByZWFkV3JpdGVNb2RlRmxhZ3MgIT0gV0dQVU1hcE1vZGVfV3JpdGUp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vICJJZiBtb2RlIGNvbnRhaW5zIFJFQUQg
dGhlbiB0aGlzLltbdXNhZ2VdXSBtdXN0IGNvbnRhaW4gTUFQX1JFQUQuIgorICAgIGlmICgobW9k
ZSAmIFdHUFVNYXBNb2RlX1JlYWQpICYmICEobV91c2FnZSAmIFdHUFVCdWZmZXJVc2FnZV9NYXBS
ZWFkKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gIklmIG1vZGUgY29udGFpbnMg
V1JJVEUgdGhlbiB0aGlzLltbdXNhZ2VdXSBtdXN0IGNvbnRhaW4gTUFQX1dSSVRFLiIKKyAgICBp
ZiAoKG1vZGUgJiBXR1BVTWFwTW9kZV9Xcml0ZSkgJiYgIShtX3VzYWdlICYgV0dQVUJ1ZmZlclVz
YWdlX01hcFdyaXRlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7
CiB9CiAKIHZvaWQgQnVmZmVyOjptYXBBc3luYyhXR1BVTWFwTW9kZUZsYWdzIG1vZGUsIHNpemVf
dCBvZmZzZXQsIHNpemVfdCBzaXplLCBXVEY6OkZ1bmN0aW9uPHZvaWQoV0dQVUJ1ZmZlck1hcEFz
eW5jU3RhdHVzKT4mJiBjYWxsYmFjaykKIHsKLSAgICBVTlVTRURfUEFSQU0obW9kZSk7Ci0gICAg
VU5VU0VEX1BBUkFNKG9mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNpemUpOwotICAgIFVOVVNF
RF9QQVJBTShjYWxsYmFjayk7CisgICAgLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdl
Yi8jZG9tLWdwdWJ1ZmZlci1tYXBhc3luYworCisgICAgLy8gIklmIHNpemUgaXMgbWlzc2luZzog
TGV0IHJhbmdlU2l6ZSBiZSBtYXgoMCwgdGhpcy5bW3NpemVdXSAtIG9mZnNldCkuIgorICAgIC8v
IEZJWE1FOiBVc2UgY2hlY2tlZCBhcml0aG1ldGljLgorICAgIGF1dG8gcmFuZ2VTaXplID0gc2l6
ZTsKKyAgICBpZiAoc2l6ZSA9PSBXR1BVX1dIT0xFX01BUF9TSVpFKQorICAgICAgICByYW5nZVNp
emUgPSBzdGQ6Om1heChzdGF0aWNfY2FzdDxzaXplX3Q+KDApLCBtX3NpemUgLSBvZmZzZXQpOwor
CisgICAgLy8gIklmIGFueSBvZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIHVuc2F0aXNm
aWVkOiIKKyAgICBpZiAoIXZhbGlkYXRlTWFwQXN5bmMobW9kZSwgb2Zmc2V0LCByYW5nZVNpemUp
KSB7CisgICAgICAgIC8vIEZJWE1FOiAiUmVjb3JkIGEgdmFsaWRhdGlvbiBlcnJvciBvbiB0aGUg
Y3VycmVudCBzY29wZS4iCisKKyAgICAgICAgLy8gIlJldHVybiBhIHByb21pc2UgcmVqZWN0ZWQg
d2l0aCBhbiBPcGVyYXRpb25FcnJvciBvbiB0aGUgRGV2aWNlIHRpbWVsaW5lLiIKKyAgICAgICAg
Y2FsbGJhY2soV0dQVUJ1ZmZlck1hcEFzeW5jU3RhdHVzX0Vycm9yKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIC8vICJTZXQgdGhpcy5bW21hcHBpbmddXSB0byBwLiIKKworICAgIC8v
ICJTZXQgdGhpcy5bW3N0YXRlXV0gdG8gbWFwcGluZyBwZW5kaW5nLiIKKyAgICBtX3N0YXRlID0g
U3RhdGU6Ok1hcHBpbmdQZW5kaW5nOworCisgICAgLy8gIlNldCB0aGlzLltbbWFwX21vZGVdXSB0
byBtb2RlLiIKKyAgICBtX21hcE1vZGUgPSBtb2RlOworCisgICAgLy8gIkVucXVldWUgYW4gb3Bl
cmF0aW9uIG9uIHRoZSBkZWZhdWx0IHF1ZXVl4oCZcyBRdWV1ZSB0aW1lbGluZSB0aGF0IHdpbGwg
ZXhlY3V0ZSB0aGUgZm9sbG93aW5nOiIKKyAgICBtX2RldmljZS0+Z2V0UXVldWUoKS5vblN1Ym1p
dHRlZFdvcmtEb25lKDAsIFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgb2Zmc2V0LCBy
YW5nZVNpemUsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChXR1BVUXVldWVXb3JrRG9u
ZVN0YXR1cyBzdGF0dXMpIHsKKyAgICAgICAgLy8gIklmIHRoaXMuW1tzdGF0ZV1dIGlzIG1hcHBp
bmcgcGVuZGluZzoiCisgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5tX3N0YXRlID09IFN0YXRl
OjpNYXBwaW5nUGVuZGluZykgeworICAgICAgICAgICAgLy8gIkxldCBtIGJlIGEgbmV3IEFycmF5
QnVmZmVyIG9mIHNpemUgcmFuZ2VTaXplLiIKKworICAgICAgICAgICAgLy8gIlNldCB0aGUgY29u
dGVudCBvZiBtIHRvIHRoZSBjb250ZW50IG9mIHRoaXPigJlzIGFsbG9jYXRpb24gc3RhcnRpbmcg
YXQgb2Zmc2V0IG9mZnNldCBhbmQgZm9yIHJhbmdlU2l6ZSBieXRlcy4iCisKKyAgICAgICAgICAg
IC8vICJTZXQgdGhpcy5bW21hcHBpbmddXSB0byBtLiIKKworICAgICAgICAgICAgLy8gIlNldCB0
aGlzLltbc3RhdGVdXSB0byBtYXBwZWQuIgorICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9z
dGF0ZSA9IFN0YXRlOjpNYXBwZWQ7CisKKyAgICAgICAgICAgIC8vICJTZXQgdGhpcy5bW21hcHBp
bmdfcmFuZ2VdXSB0byBbb2Zmc2V0LCBvZmZzZXQgKyByYW5nZVNpemVdLiIKKyAgICAgICAgICAg
IHByb3RlY3RlZFRoaXMtPm1fbWFwcGluZ1JhbmdlID0gc3RkOjptYWtlX3BhaXIob2Zmc2V0LCBv
ZmZzZXQgKyByYW5nZVNpemUpOworCisgICAgICAgICAgICAvLyAiU2V0IHRoaXMuW1ttYXBwZWRf
cmFuZ2VzXV0gdG8gW10uIgorICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9tYXBwZWRSYW5n
ZXMgPSBEaXNqb2ludFJhbmdlcygpOworICAgICAgICB9CisKKyAgICAgICAgLy8gIlJlc29sdmUg
cC4iCisgICAgICAgIHN3aXRjaCAoc3RhdHVzKSB7CisgICAgICAgIGNhc2UgV0dQVVF1ZXVlV29y
a0RvbmVTdGF0dXNfU3VjY2VzczoKKyAgICAgICAgICAgIGNhbGxiYWNrKFdHUFVCdWZmZXJNYXBB
c3luY1N0YXR1c19TdWNjZXNzKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgY2FzZSBX
R1BVUXVldWVXb3JrRG9uZVN0YXR1c19FcnJvcjoKKyAgICAgICAgICAgIGNhbGxiYWNrKFdHUFVC
dWZmZXJNYXBBc3luY1N0YXR1c19FcnJvcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IGNhc2UgV0dQVVF1ZXVlV29ya0RvbmVTdGF0dXNfVW5rbm93bjoKKyAgICAgICAgICAgIGNhbGxi
YWNrKFdHUFVCdWZmZXJNYXBBc3luY1N0YXR1c19Vbmtub3duKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgY2FzZSBXR1BVUXVldWVXb3JrRG9uZVN0YXR1c19EZXZpY2VMb3N0OgorICAg
ICAgICAgICAgY2FsbGJhY2soV0dQVUJ1ZmZlck1hcEFzeW5jU3RhdHVzX0RldmljZUxvc3QpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBjYWxsYmFjayhXR1BVQnVmZmVyTWFwQXN5bmNT
dGF0dXNfRXJyb3IpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfSk7Cit9
CisKK2Jvb2wgQnVmZmVyOjp2YWxpZGF0ZVVubWFwKCkKK3sKKyAgICAvLyAidGhpcy5bW3N0YXRl
XV0gbXVzdCBiZSBtYXBwZWQgYXQgY3JlYXRpb24sIG1hcHBpbmcgcGVuZGluZywgb3IgbWFwcGVk
LiIKKyAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6TWFwcGVkQXRDcmVhdGlvbgorICAgICAgICAm
JiBtX3N0YXRlICE9IFN0YXRlOjpNYXBwaW5nUGVuZGluZworICAgICAgICAmJiBtX3N0YXRlICE9
IFN0YXRlOjpNYXBwZWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVl
OwogfQogCiB2b2lkIEJ1ZmZlcjo6dW5tYXAoKQogeworICAgIC8vIGh0dHBzOi8vZ3B1d2ViLmdp
dGh1Yi5pby9ncHV3ZWIvI2RvbS1ncHVidWZmZXItdW5tYXAKKworICAgIC8vICJJZiBhbnkgb2Yg
dGhlIGZvbGxvd2luZyByZXF1aXJlbWVudHMgYXJlIHVubWV0IgorICAgIGlmICh2YWxpZGF0ZVVu
bWFwKCkpIHsKKyAgICAgICAgLy8gRklYTUU6ICJnZW5lcmF0ZSBhIHZhbGlkYXRpb24gZXJyb3Ig
YW5kIHN0b3AuIgorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gIklmIHRoaXMuW1tz
dGF0ZV1dIGlzIG1hcHBpbmcgcGVuZGluZzoiCisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6Ok1h
cHBpbmdQZW5kaW5nKSB7CisgICAgICAgIC8vIEZJWE1FOiAiUmVqZWN0IFtbbWFwcGluZ11dIHdp
dGggYW4gQWJvcnRFcnJvci4iCisKKyAgICAgICAgLy8gIlNldCB0aGlzLltbbWFwcGluZ11dIHRv
IG51bGwuIgorICAgIH0KKworICAgIC8vICJJZiB0aGlzLltbc3RhdGVdXSBpcyBtYXBwZWQgb3Ig
bWFwcGVkIGF0IGNyZWF0aW9uOiIKKyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6TWFwcGVkIHx8
IG1fc3RhdGUgPT0gU3RhdGU6Ok1hcHBlZEF0Q3JlYXRpb24pIHsKKyAgICAgICAgLy8gIklmIG9u
ZSBvZiB0aGUgdHdvIGZvbGxvd2luZyBjb25kaXRpb25zIGhvbGRzOiIKKyAgICAgICAgaWYgKAor
ICAgICAgICAgICAgLy8gInRoaXMuW1tzdGF0ZV1dIGlzIG1hcHBlZCBhdCBjcmVhdGlvbiIKKyAg
ICAgICAgICAgIG1fc3RhdGUgPT0gU3RhdGU6Ok1hcHBlZEF0Q3JlYXRpb24KKyAgICAgICAgICAg
IC8vICJ0aGlzLltbc3RhdGVdXSBpcyBtYXBwZWQgYW5kIHRoaXMuW1ttYXBfbW9kZV1dIGNvbnRh
aW5zIFdSSVRFIgorICAgICAgICAgICAgfHwgKG1fc3RhdGUgPT0gU3RhdGU6Ok1hcHBlZCAmJiAo
bV9tYXBNb2RlICYgV0dQVU1hcE1vZGVfV3JpdGUpKSkgeworICAgICAgICAgICAgLy8gIkVucXVl
dWUgYW4gb3BlcmF0aW9uIG9uIHRoZSBkZWZhdWx0IHF1ZXVl4oCZcyBRdWV1ZSB0aW1lbGluZSB0
aGF0IHVwZGF0ZXMgdGhlIHRoaXMuW1ttYXBwaW5nX3JhbmdlXV0gb2YgdGhpc+KAmXMgYWxsb2Nh
dGlvbiB0byB0aGUgY29udGVudCBvZiB0aGlzLltbbWFwcGluZ11dLiIKKyAgICAgICAgfQorCisg
ICAgICAgIC8vICJEZXRhY2ggZWFjaCBBcnJheUJ1ZmZlciBpbiB0aGlzLltbbWFwcGVkX3Jhbmdl
c11dIGZyb20gaXRzIGNvbnRlbnQuIgorCisgICAgICAgIC8vICJTZXQgdGhpcy5bW21hcHBpbmdd
XSB0byBudWxsLiIKKworICAgICAgICAvLyAiU2V0IHRoaXMuW1ttYXBwaW5nX3JhbmdlXV0gdG8g
bnVsbC4iCisKKyAgICAgICAgLy8gIlNldCB0aGlzLltbbWFwcGVkX3Jhbmdlc11dIHRvIG51bGwu
IgorICAgIH0KKworICAgIC8vICJTZXQgdGhpcy5bW3N0YXRlXV0gdG8gdW5tYXBwZWQuIgorICAg
IG1fc3RhdGUgPSBTdGF0ZTo6VW5tYXBwZWQ7CiB9CiAKIHZvaWQgQnVmZmVyOjpzZXRMYWJlbChj
b25zdCBjaGFyKiBsYWJlbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0Rldmlj
ZS5oIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvRGV2aWNlLmgKaW5kZXggOTJmZjQ5ZTlkNzJiLi5j
NzE3OTBkZDA2NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0RldmljZS5oCisr
KyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0RldmljZS5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNw
cmFnbWEgb25jZQogCisjaW1wb3J0ICJRdWV1ZS5oIgogI2ltcG9ydCA8d3RmL0Zhc3RNYWxsb2Mu
aD4KICNpbXBvcnQgPHd0Zi9GdW5jdGlvbi5oPgogI2ltcG9ydCA8d3RmL1JlZi5oPgpAQCAtNDcs
MTIgKzQ4LDExIEBAIGNsYXNzIFNoYWRlck1vZHVsZTsKIGNsYXNzIFN1cmZhY2U7CiBjbGFzcyBT
d2FwQ2hhaW47CiBjbGFzcyBUZXh0dXJlOwotY2xhc3MgUXVldWU7CiAKIGNsYXNzIERldmljZSA6
IHB1YmxpYyBSZWZDb3VudGVkPERldmljZT4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8RGV2aWNlPiBjcmVhdGUoaWQ8TVRMRGV2aWNl
Pik7CisgICAgc3RhdGljIFJlZlB0cjxEZXZpY2U+IGNyZWF0ZShpZDxNVExEZXZpY2U+LCBjb25z
dCBjaGFyKiBkZXZpY2VMYWJlbCk7CiAKICAgICB+RGV2aWNlKCk7CiAKQEAgLTc0LDcgKzc0LDcg
QEAgcHVibGljOgogICAgIHZvaWQgZGVzdHJveSgpOwogICAgIHNpemVfdCBlbnVtZXJhdGVGZWF0
dXJlcyhXR1BVRmVhdHVyZU5hbWUqIGZlYXR1cmVzKTsKICAgICBib29sIGdldExpbWl0cyhXR1BV
U3VwcG9ydGVkTGltaXRzKik7Ci0gICAgUmVmUHRyPFF1ZXVlPiBnZXRRdWV1ZSgpOworICAgIFF1
ZXVlJiBnZXRRdWV1ZSgpOwogICAgIGJvb2wgaGFzRmVhdHVyZShXR1BVRmVhdHVyZU5hbWUpOwog
ICAgIGJvb2wgcG9wRXJyb3JTY29wZShXVEY6OkZ1bmN0aW9uPHZvaWQoV0dQVUVycm9yVHlwZSwg
Y29uc3QgY2hhciopPiYmIGNhbGxiYWNrKTsKICAgICB2b2lkIHB1c2hFcnJvclNjb3BlKFdHUFVF
cnJvckZpbHRlcik7CkBAIC04NywxMCArODcsMTIgQEAgcHJpdmF0ZToKIAogICAgIGlkPE1UTERl
dmljZT4gbV9kZXZpY2UgeyBuaWwgfTsKICAgICBSZWY8UXVldWU+IG1fZGVmYXVsdFF1ZXVlOwor
ICAgIGJvb2wgbV9oYXNVbmlmaWVkTWVtb3J5IHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkdQVQogCiBzdHJ1Y3QgV0dQVURldmljZUltcGwgewogICAgIFJlZjxXZWJHUFU6OkRl
dmljZT4gZGV2aWNlOworICAgIFdHUFVRdWV1ZUltcGwgZGVmYXVsdFF1ZXVlOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0RldmljZS5tbSBiL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL0RldmljZS5tbQppbmRleCA1YjVjMGE0YTI0YzkuLjM5MTJkYjNjZjYwZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvRGV2aWNlLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL0RldmljZS5tbQpAQCAtNDUsMTkgKzQ1LDI0IEBACiAKIG5hbWVzcGFjZSBXZWJHUFUgewog
Ci1SZWZQdHI8RGV2aWNlPiBEZXZpY2U6OmNyZWF0ZShpZDxNVExEZXZpY2U+IGRldmljZSkKK1Jl
ZlB0cjxEZXZpY2U+IERldmljZTo6Y3JlYXRlKGlkPE1UTERldmljZT4gZGV2aWNlLCBjb25zdCBj
aGFyKiBkZXZpY2VMYWJlbCkKIHsKICAgICBpZDxNVExDb21tYW5kUXVldWU+IGNvbW1hbmRRdWV1
ZSA9IFtkZXZpY2UgbmV3Q29tbWFuZFF1ZXVlXTsKICAgICBpZiAoIWNvbW1hbmRRdWV1ZSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgYXV0byBxdWV1ZSA9IFF1ZXVlOjpjcmVhdGUoY29t
bWFuZFF1ZXVlKTsKIAorICAgIGNvbW1hbmRRdWV1ZS5sYWJlbCA9IEAiRGVmYXVsdCBxdWV1ZSI7
CisgICAgaWYgKGRldmljZUxhYmVsICYmIHN0cmxlbihkZXZpY2VMYWJlbCkpCisgICAgICAgIGNv
bW1hbmRRdWV1ZS5sYWJlbCA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiRGVmYXVsdCBx
dWV1ZSBmb3IgZGV2aWNlICVzIiwgZGV2aWNlTGFiZWxdOworCiAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgRGV2aWNlKGRldmljZSwgV1RGTW92ZShxdWV1ZSkpKTsKIH0KIAogRGV2aWNlOjpEZXZp
Y2UoaWQ8TVRMRGV2aWNlPiBkZXZpY2UsIFJlZjxRdWV1ZT4mJiBxdWV1ZSkKICAgICA6IG1fZGV2
aWNlKGRldmljZSkKICAgICAsIG1fZGVmYXVsdFF1ZXVlKFdURk1vdmUocXVldWUpKQorICAgICwg
bV9oYXNVbmlmaWVkTWVtb3J5KGRldmljZS5oYXNVbmlmaWVkTWVtb3J5KQogewogfQogCkBAIC04
NCw5ICs4OSw5IEBAIGJvb2wgRGV2aWNlOjpnZXRMaW1pdHMoV0dQVVN1cHBvcnRlZExpbWl0cyog
bGltaXRzKQogICAgIHJldHVybiB0cnVlOwogfQogCi1SZWZQdHI8UXVldWU+IERldmljZTo6Z2V0
UXVldWUoKQorUXVldWUmIERldmljZTo6Z2V0UXVldWUoKQogewotICAgIHJldHVybiBtX2RlZmF1
bHRRdWV1ZS5jb3B5UmVmKCk7CisgICAgcmV0dXJuIG1fZGVmYXVsdFF1ZXVlOwogfQogCiBib29s
IERldmljZTo6aGFzRmVhdHVyZShXR1BVRmVhdHVyZU5hbWUpCkBAIC0yNTUsOCArMjYwLDcgQEAg
Ym9vbCB3Z3B1RGV2aWNlR2V0TGltaXRzKFdHUFVEZXZpY2UgZGV2aWNlLCBXR1BVU3VwcG9ydGVk
TGltaXRzKiBsaW1pdHMpCiAKIFdHUFVRdWV1ZSB3Z3B1RGV2aWNlR2V0UXVldWUoV0dQVURldmlj
ZSBkZXZpY2UpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBkZXZpY2UtPmRldmljZS0+Z2V0UXVldWUo
KTsKLSAgICByZXR1cm4gcmVzdWx0ID8gbmV3IFdHUFVRdWV1ZUltcGwgeyByZXN1bHQucmVsZWFz
ZU5vbk51bGwoKSB9IDogbnVsbHB0cjsKKyAgICByZXR1cm4gJmRldmljZS0+ZGVmYXVsdFF1ZXVl
OwogfQogCiBib29sIHdncHVEZXZpY2VIYXNGZWF0dXJlKFdHUFVEZXZpY2UgZGV2aWNlLCBXR1BV
RmVhdHVyZU5hbWUgZmVhdHVyZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0Rp
c2pvaW50UmFuZ2VzLmNwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0Rpc2pvaW50UmFuZ2VzLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjNhN2I5MjQ5NjUxYQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0Rpc2pvaW50UmFuZ2VzLmNw
cApAQCAtMCwwICsxLDg0IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDIxLTIwMjIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiRGlzam9pbnRSYW5nZXMuaCIKKworI2luY2x1ZGUgPGFs
Z29yaXRobT4KKworbmFtZXNwYWNlIFdlYkdQVSB7CisKK3ZvaWQgRGlzam9pbnRSYW5nZXM6OmFw
cGVuZChjb25zdCBSYW5nZSYgcmFuZ2UpCit7CisgICAgQVNTRVJUKCEobV9yYW5nZXMuc2l6ZSgp
ICUgMikpOworICAgIEFTU0VSVCghb3ZlcmxhcHMocmFuZ2UpKTsKKyAgICBhdXRvIGl0ZXJhdG9y
ID0gc3RkOjpsb3dlcl9ib3VuZChtX3Jhbmdlcy5iZWdpbigpLCBtX3Jhbmdlcy5lbmQoKSwgcmFu
Z2UuZmlyc3QpOworICAgIGF1dG8gaW5kZXggPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGl0ZXJhdG9y
IC0gbV9yYW5nZXMuYmVnaW4oKSk7CisgICAgaWYgKGl0ZXJhdG9yICE9IG1fcmFuZ2VzLmVuZCgp
ICYmICppdGVyYXRvciA9PSByYW5nZS5maXJzdCkgeworICAgICAgICBBU1NFUlQoaW5kZXggJSAy
KTsKKyAgICAgICAgbV9yYW5nZXNbaW5kZXhdID0gcmFuZ2Uuc2Vjb25kOworICAgICAgICAvLyBJ
ZiB3ZSBzdGFydGVkIHdpdGggW0EtQiksW0MtRCkgYW5kIHdlJ3JlIGluc2VydGluZyBbQi1DKQor
ICAgICAgICAvLyBSaWdodCBub3cgd2UgaGF2ZSBbQS1DKSxbQy1EKS4gV2UgbmVlZCB0byB0dXJu
IHRoaXMgaW50byBbQS1EKS4KKyAgICAgICAgaWYgKGluZGV4ICsgMSA8IG1fcmFuZ2VzLnNpemUo
KSAmJiBtX3Jhbmdlc1tpbmRleF0gPT0gbV9yYW5nZXNbaW5kZXggKyAxXSkgeworICAgICAgICAg
ICAgbV9yYW5nZXMucmVtb3ZlKGluZGV4KTsKKyAgICAgICAgICAgIG1fcmFuZ2VzLnJlbW92ZShp
bmRleCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBBU1NFUlQoIShpbmRleCAl
IDIpKTsKKyAgICAgICAgLy8gSWYgd2Ugc3RhcnRlZCB3aXRoIFtBLUIpLFtDLUQpIGFuZCB3ZSdy
ZSBpbnNlcnRpbmcgW0UtQykKKyAgICAgICAgLy8gV2UgbmVlZCB0byB0dXJuIHRoaXMgaW50byBb
QS1CKSxbRS1EKQorICAgICAgICBpZiAoaXRlcmF0b3IgIT0gbV9yYW5nZXMuZW5kKCkgJiYgKml0
ZXJhdG9yID09IHJhbmdlLnNlY29uZCkKKyAgICAgICAgICAgIG1fcmFuZ2VzW2luZGV4XSA9IHJh
bmdlLmZpcnN0OworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1fcmFuZ2VzLmluc2VydChp
bmRleCwgcmFuZ2Uuc2Vjb25kKTsKKyAgICAgICAgICAgIG1fcmFuZ2VzLmluc2VydChpbmRleCwg
cmFuZ2UuZmlyc3QpOworICAgICAgICB9CisgICAgfQorICAgIEFTU0VSVCghKG1fcmFuZ2VzLnNp
emUoKSAlIDIpKTsKK30KKworYm9vbCBEaXNqb2ludFJhbmdlczo6b3ZlcmxhcHMoY29uc3QgUmFu
Z2UmIHJhbmdlKSBjb25zdAoreworICAgIEFTU0VSVCghKG1fcmFuZ2VzLnNpemUoKSAlIDIpKTsK
KyAgICBhdXRvIGl0ZXJhdG9yID0gc3RkOjpsb3dlcl9ib3VuZChtX3Jhbmdlcy5iZWdpbigpLCBt
X3Jhbmdlcy5lbmQoKSwgcmFuZ2UuZmlyc3QpOworICAgIGF1dG8gaW5kZXggPSBzdGF0aWNfY2Fz
dDxzaXplX3Q+KGl0ZXJhdG9yIC0gbV9yYW5nZXMuYmVnaW4oKSk7CisgICAgLy8gW2EsIGIsIGMs
IGQsIGUsIGZdCisgICAgaWYgKGl0ZXJhdG9yICE9IG1fcmFuZ2VzLmVuZCgpICYmICppdGVyYXRv
ciA9PSByYW5nZS5maXJzdCkgeworICAgICAgICBpZiAoIShpbmRleCAlIDIpKQorICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmIChpbmRleCArIDEgPCBtX3Jhbmdlcy5zaXplKCkp
CisgICAgICAgICAgICByZXR1cm4gcmFuZ2Uuc2Vjb25kID4gbV9yYW5nZXNbaW5kZXggKyAxXTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChpbmRleCAlIDIpCisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIGlmIChpdGVyYXRvciAhPSBtX3Jhbmdlcy5lbmQoKSkKKyAg
ICAgICAgcmV0dXJuIHJhbmdlLnNlY29uZCA+ICppdGVyYXRvcjsKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkdQVQorCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL0Rpc2pvaW50UmFuZ2VzLmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9EaXNqb2lu
dFJhbmdlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZmYyOTA2
MGI2OTIyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvRGlzam9pbnRS
YW5nZXMuaApAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDIxLTIwMjIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHV0aWxpdHk+Cisj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViR1BVIHsKKworLy8gVGhpcyBj
bGFzcyByZXByZXNlbnRzIGEgc2V0IG9mIHJhbmdlcyB0aGF0IGFyZSBkaXNqb2ludC4KKy8vIEZv
ciBleGFtcGxlLCBpdCBjYW4gcmVwcmVzZW50IHRoZSBzZXQgb2YgWzMtNCksWzEwLTI3KS4KKy8v
IEl0IHVzZXMgYSB2ZWN0b3IgaW5zdGVhZCBvZiBhIHRyZWUsCisvLyBhbmQgaXMgdGhlcmVmb3Jl
IG9wdGltaXplZCBmb3Igc21hbGwgbnVtYmVycyBvZiBpdGVtcyBpbiB0aGUgc2V0LgorY2xhc3Mg
RGlzam9pbnRSYW5nZXMgeworcHVibGljOgorICAgIHVzaW5nIFJhbmdlID0gc3RkOjpwYWlyPHNp
emVfdCwgc2l6ZV90PjsKKworICAgIERpc2pvaW50UmFuZ2VzKCkgPSBkZWZhdWx0OworICAgIERp
c2pvaW50UmFuZ2VzKGNvbnN0IERpc2pvaW50UmFuZ2VzJikgPSBkZWZhdWx0OworICAgIERpc2pv
aW50UmFuZ2VzKERpc2pvaW50UmFuZ2VzJiYpID0gZGVmYXVsdDsKKworICAgIERpc2pvaW50UmFu
Z2VzJiBvcGVyYXRvcj0oY29uc3QgRGlzam9pbnRSYW5nZXMmKSA9IGRlZmF1bHQ7CisgICAgRGlz
am9pbnRSYW5nZXMmIG9wZXJhdG9yPShEaXNqb2ludFJhbmdlcyYmKSA9IGRlZmF1bHQ7CisKKyAg
ICB2b2lkIGFwcGVuZChjb25zdCBSYW5nZSYpOworICAgIGJvb2wgb3ZlcmxhcHMoY29uc3QgUmFu
Z2UmKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICAvLyBUaGUgc2V0IG9mIFszLTQpLFsxMC0yNykg
aXMgcmVwcmVzZW50ZWQgYXMgWzMsIDQsIDEwLCAyN10uCisgICAgVmVjdG9yPHNpemVfdD4gbV9y
YW5nZXM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL1F1ZXVlLmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9RdWV1ZS5oCmluZGV4
IDNmZjk3MzdhYmVjZC4uZGM2NDVmMDNiNjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9RdWV1ZS5oCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1F1ZXVlLmgKQEAgLTI3LDYg
KzI3LDcgQEAKIAogI2ltcG9ydCA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbXBvcnQgPHd0Zi9GdW5j
dGlvbi5oPgorI2ltcG9ydCA8d3RmL0hhc2hNYXAuaD4KICNpbXBvcnQgPHd0Zi9SZWYuaD4KICNp
bXBvcnQgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CkBAIC01Niw2
ICs1NywxMSBAQCBwcml2YXRlOgogICAgIFF1ZXVlKGlkPE1UTENvbW1hbmRRdWV1ZT4pOwogCiAg
ICAgaWQ8TVRMQ29tbWFuZFF1ZXVlPiBtX2NvbW1hbmRRdWV1ZSB7IG5pbCB9OworCisgICAgdWlu
dDY0X3QgbV9zdWJtaXR0ZWRDb21tYW5kQnVmZmVyQ291bnQgeyAwIH07CisgICAgdWludDY0X3Qg
bV9jb21wbGV0ZWRDb21tYW5kQnVmZmVyQ291bnQgeyAwIH07CisgICAgdXNpbmcgT25TdWJtaXR0
ZWRXb3JrRG9uZUNhbGxiYWNrcyA9IFZlY3RvcjxXVEY6OkZ1bmN0aW9uPHZvaWQoV0dQVVF1ZXVl
V29ya0RvbmVTdGF0dXMpPj47CisgICAgSGFzaE1hcDx1bnNpZ25lZCwgT25TdWJtaXR0ZWRXb3Jr
RG9uZUNhbGxiYWNrcz4gbV9vblN1Ym1pdHRlZFdvcmtEb25lQ2FsbGJhY2tzOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViR1BVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9RdWV1
ZS5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1F1ZXVlLm1tCmluZGV4IDc0ZjM1NmI3YTYyZS4u
NGFjNzVjODI4YzYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9RdWV1ZS5tbQor
KysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9RdWV1ZS5tbQpAQCAtMzgsMTAgKzM4LDE3IEBAIFF1
ZXVlOjpRdWV1ZShpZDxNVExDb21tYW5kUXVldWU+IGNvbW1hbmRRdWV1ZSkKIAogUXVldWU6On5R
dWV1ZSgpID0gZGVmYXVsdDsKIAotdm9pZCBRdWV1ZTo6b25TdWJtaXR0ZWRXb3JrRG9uZSh1aW50
NjRfdCBzaWduYWxWYWx1ZSwgV1RGOjpGdW5jdGlvbjx2b2lkKFdHUFVRdWV1ZVdvcmtEb25lU3Rh
dHVzKT4mJiBjYWxsYmFjaykKK3ZvaWQgUXVldWU6Om9uU3VibWl0dGVkV29ya0RvbmUodWludDY0
X3QsIFdURjo6RnVuY3Rpb248dm9pZChXR1BVUXVldWVXb3JrRG9uZVN0YXR1cyk+JiYgY2FsbGJh
Y2spCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHNpZ25hbFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0o
Y2FsbGJhY2spOworICAgIEFTU0VSVChtX3N1Ym1pdHRlZENvbW1hbmRCdWZmZXJDb3VudCA+PSBt
X2NvbXBsZXRlZENvbW1hbmRCdWZmZXJDb3VudCk7CisKKyAgICBpZiAobV9zdWJtaXR0ZWRDb21t
YW5kQnVmZmVyQ291bnQgPT0gbV9jb21wbGV0ZWRDb21tYW5kQnVmZmVyQ291bnQpIHsKKyAgICAg
ICAgY2FsbGJhY2soV0dQVVF1ZXVlV29ya0RvbmVTdGF0dXNfU3VjY2Vzcyk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBhdXRvJiBjYWxsYmFja3MgPSBtX29uU3VibWl0dGVkV29ya0Rv
bmVDYWxsYmFja3MuYWRkKG1fc3VibWl0dGVkQ29tbWFuZEJ1ZmZlckNvdW50LCBPblN1Ym1pdHRl
ZFdvcmtEb25lQ2FsbGJhY2tzKCkpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBjYWxsYmFja3MuYXBw
ZW5kKFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAogdm9pZCBRdWV1ZTo6c3VibWl0KFZlY3Rvcjxz
dGQ6OnJlZmVyZW5jZV93cmFwcGVyPGNvbnN0IENvbW1hbmRCdWZmZXI+PiYmIGNvbW1hbmRzKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454194</attachid>
            <date>2022-03-08 22:11:14 -0800</date>
            <delta_ts>2022-03-09 00:08:40 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-237583-20220308221113.patch</filename>
            <type>text/plain</type>
            <size>34500</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxMDI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDY4ZGNkZDcxNWI3N2E3YTVlZWNhNGY2
NDBlMTllODkzYzFlN2M4YTEuLmRhYTJjYTQwMmJmMzk1ZTgwOTU3ZDMzYzBkZjBhM2U2ZDQ4ZWY2
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjItMDMtMDggIE15bGVzIEMuIE1heGZpZWxkICA8
bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICDimILvuI8gW1dlYkdQVV0gUm91bmQtdHJp
cCBkYXRhIHRocm91Z2ggR1BVQnVmZmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzc1ODMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIHd0Zi9SYW5nZS5oOgorCiAyMDIyLTAzLTA4ICBSb2JpbiBNb3Jp
c3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CiAKICAgICAgICAgW1dURl0gTGlrZWx5RGVuc2VV
bnNpZ25lZEludGVnZXJTZXQ6OmFkZCBjYW4gY2F1c2UgYSByZWluZGV4aW5nIG9mIHRoZSBlbnRp
cmUgYml0IHZlY3RvciB3aXRoIGV2ZXJ5IGNhbGwgaW4gdGhlIHdvcnN0IGNhc2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkdQVS9DaGFuZ2VMb2cKaW5k
ZXggOGIxNjE3NzJhMWFmNDIzODM1MzJkODNlMjJhZjI0ZWVkZTQ4MzZjNi4uMWJlYjk3ZDVmMWQ2
NGI2MzA0NmNhNjA1YmZhOTliYWJhMTEzMmExOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkdQVS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAor
MjAyMi0wMy0wOCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisg
ICAgICAgIOKYgu+4jyBbV2ViR1BVXSBSb3VuZC10cmlwIGRhdGEgdGhyb3VnaCBHUFVCdWZmZXIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzU4Mwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViR1BV
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViR1BVL0FkYXB0ZXIubW06
CisgICAgICAgIChXZWJHUFU6OkFkYXB0ZXI6OnJlcXVlc3REZXZpY2UpOgorICAgICAgICAod2dw
dUFkYXB0ZXJSZXF1ZXN0RGV2aWNlKToKKyAgICAgICAgKHdncHVBZGFwdGVyUmVxdWVzdERldmlj
ZVdpdGhCbG9jayk6CisgICAgICAgICogV2ViR1BVL0J1ZmZlci5oOgorICAgICAgICAoV2ViR1BV
OjpCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgICogV2ViR1BVL0J1ZmZlci5tbToKKyAgICAgICAg
KFdlYkdQVTo6aXNOb3RNdWx0aXBsZU9mUG93ZXJPZlR3byk6CisgICAgICAgIChXZWJHUFU6OnZh
bGlkYXRlRGVzY3JpcHRvcik6CisgICAgICAgIChXZWJHUFU6OnZhbGlkYXRlQ3JlYXRlQnVmZmVy
KToKKyAgICAgICAgKFdlYkdQVTo6c3RvcmFnZU1vZGUpOgorICAgICAgICAoV2ViR1BVOjpEZXZp
Y2U6OmNyZWF0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJHUFU6OkJ1ZmZlcjo6QnVmZmVyKToKKyAg
ICAgICAgKFdlYkdQVTo6QnVmZmVyOjpkZXN0cm95KToKKyAgICAgICAgKFdlYkdQVTo6QnVmZmVy
OjpnZXRDb25zdE1hcHBlZFJhbmdlKToKKyAgICAgICAgKFdlYkdQVTo6QnVmZmVyOjp2YWxpZGF0
ZUdldE1hcHBlZFJhbmdlKToKKyAgICAgICAgKFdlYkdQVTo6QnVmZmVyOjpnZXRNYXBwZWRSYW5n
ZSk6CisgICAgICAgIChXZWJHUFU6OkJ1ZmZlcjo6dmFsaWRhdGVNYXBBc3luYyk6CisgICAgICAg
IChXZWJHUFU6OkJ1ZmZlcjo6bWFwQXN5bmMpOgorICAgICAgICAoV2ViR1BVOjpCdWZmZXI6OnZh
bGlkYXRlVW5tYXApOgorICAgICAgICAoV2ViR1BVOjpCdWZmZXI6OnVubWFwKToKKyAgICAgICAg
KiBXZWJHUFUvRGV2aWNlLmg6CisgICAgICAgICogV2ViR1BVL0RldmljZS5tbToKKyAgICAgICAg
KFdlYkdQVTo6RGV2aWNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViR1BVOjpEZXZpY2U6OkRldmlj
ZSk6CisgICAgICAgIChXZWJHUFU6OkRldmljZTo6Z2V0UXVldWUpOgorICAgICAgICAod2dwdURl
dmljZUdldFF1ZXVlKToKKyAgICAgICAgKiBXZWJHUFUvUXVldWUuaDoKKyAgICAgICAgKiBXZWJH
UFUvUXVldWUubW06CisgICAgICAgIChXZWJHUFU6OlF1ZXVlOjpvblN1Ym1pdHRlZFdvcmtEb25l
KToKKwogMjAyMi0wMy0wOCAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgog
CiAgICAgICAgIFtXR1NMXSBBZGQgZW5vdWdoIG9mIHRoZSBBU1QgZm9yIHRoZSBzaW1wbGVzdCBz
aGFkZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9SYW5nZS5oIGIvU291cmNlL1dURi93
dGYvUmFuZ2UuaAppbmRleCBhOTZiZjlhMDYxYzcxMmZiM2NmYTYzMWJhNGM5OGIzYTEwODZmYTFh
Li5mNGVjYzdjNWQ2OTNiNmI2NjFiMmQwNTZkYTNjNjU0MjBiYjU5YjIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9SYW5nZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1JhbmdlLmgKQEAgLTE0
MCwzICsxNDAsNSBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5n
IFdURjo6UmFuZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkdQVS9XZWJHUFUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCBhMDM3YTY0MzJiZDcwMzQyYzcxNjE4MzhiYTllZGY3N2IzOWE4MGUzLi40
ODE3MzEzMmRhYmI4ZTYxMmMwZjFkMTk1NTBkZmVmNzQ4ZTkzNmI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ4LDEzICs0OCwxMSBA
QAogCQkzMzhCQjJEMjI3QjZCNjNGMDBFMDY2QUIgLyogU291cmNlU3Bhbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzM4QkIyRDEyN0I2QjYzRjAwRTA2
NkFCIC8qIFNvdXJjZVNwYW4uaCAqLzsgfTsKIAkJMzM4QkIyRDQyN0I2QjY2QzAwRTA2NkFCIC8q
IExleGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
MzhCQjJEMzI3QjZCNjZDMDBFMDY2QUIgLyogTGV4ZXIuaCAqLzsgfTsKIAkJMzM4QkIyRDYyN0I2
QjY4NzAwRTA2NkFCIC8qIExleGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDMzOEJCMkQ1MjdCNkI2ODcwMEUwNjZBQiAvKiBMZXhlci5jcHAgKi87
IH07Ci0JCUREMDVBMzVDMjdCRjA5QzYwMDk2RUZBQiAvKiBsaWJXVEYuYSBpbiBQcm9kdWN0IERl
cGVuZGVuY2llcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0VCRDgyOTI3
MTZDQUU3MDBBNTI1NEQgLyogbGliV1RGLmEgKi87IH07CiAJCTMzRUExODVFMjdCQzE5NEYwMEEx
REQ1MiAvKiBBU1ROb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzM0VBMTg1RDI3QkMxOTRGMDBBMURENTIgLyogQVNUTm9kZS5oICovOyB9OwogCQkz
M0VBMTg2MDI3QkMxOTgxMDBBMURENTIgLyogR2xvYmFsRGlyZWN0aXZlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzM0VBMTg1RjI3QkMxOTgxMDBBMURE
NTIgLyogR2xvYmFsRGlyZWN0aXZlLmggKi87IH07CiAJCTMzRUExODYyMjdCQzE5QzEwMEExREQ1
MiAvKiBHbG9iYWxEZWNsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzM0VBMTg2MTI3QkMxOUMxMDBBMURENTIgLyogR2xvYmFsRGVjbC5oICovOyB9Owog
CQkzM0VBMTg2NDI3QkMxQTFEMDBBMURENTIgLyogR2xvYmFsVmFyaWFibGVEZWNsLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzM0VBMTg2MzI3QkMxQTFE
MDBBMURENTIgLyogR2xvYmFsVmFyaWFibGVEZWNsLmggKi87IH07CiAJCTMzRUExODY2MjdCQzFB
RDUwMEExREQ1MiAvKiBDb21waWxhdGlvbk1lc3NhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzRUExODY1MjdCQzFBRDUwMEExREQ1MiAvKiBDb21w
aWxhdGlvbk1lc3NhZ2UuaCAqLzsgfTsKLQkJMzNFQTE4NjgyN0JDMUIxNDAwQTFERDUyIC8qIENv
bXBpbGF0aW9uTWVzc2FnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzM0VBMTg2NzI3QkMxQjE0MDBBMURENTIgLyogQ29tcGlsYXRpb25NZXNzYWdl
LmNwcCAqLzsgfTsKIAkJMzNFQTE4NkEyN0JDMUJFNjAwQTFERDUyIC8qIEF0dHJpYnV0ZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzNFQTE4NjkyN0JD
MUJFNjAwQTFERDUyIC8qIEF0dHJpYnV0ZS5oICovOyB9OwogCQkzM0VBMTg2QzI3QkMxQ0JDMDBB
MURENTIgLyogRXhwcmVzc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMzNFQTE4NkIyN0JDMUNCQzAwQTFERDUyIC8qIEV4cHJlc3Npb24uaCAqLzsg
fTsKIAkJMzNFQTE4NkUyN0JDMUQ0QzAwQTFERDUyIC8qIFR5cGVEZWNsLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzM0VBMTg2RDI3QkMxRDRDMDBBMURE
NTIgLyogVHlwZURlY2wuaCAqLzsgfTsKQEAgLTcwLDYgKzY4LDcgQEAKIAkJMzNFQTE4ODQyN0JD
MjY4NjAwQTFERDUyIC8qIFN0cnVjdHVyZUFjY2Vzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzNFQTE4ODMyN0JDMjY4NjAwQTFERDUyIC8qIFN0cnVj
dHVyZUFjY2Vzcy5oICovOyB9OwogCQkzM0VBMTg4NjI3QkMyNkRGMDBBMURENTIgLyogVHlwZUNv
bnZlcnNpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDMzRUExODg1MjdCQzI2REYwMEExREQ1MiAvKiBUeXBlQ29udmVyc2lvbi5oICovOyB9OwogCQkz
M0VBMTg4ODI3QkMzNjFFMDBBMURENTIgLyogTGl0ZXJhbEV4cHJlc3Npb25zLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzM0VBMTg4NzI3QkMzNjFFMDBB
MURENTIgLyogTGl0ZXJhbEV4cHJlc3Npb25zLmggKi87IH07CisJCUREMDVBMzVDMjdCRjA5QzYw
MDk2RUZBQiAvKiBsaWJXVEYuYSBpbiBQcm9kdWN0IERlcGVuZGVuY2llcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0VCRDgyOTI3MTZDQUU3MDBBNTI1NEQgLyogbGliV1RG
LmEgKi87IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJY
Q29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KQEAgLTM2NSwxMCArMzY0LDkgQEAKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMzNFQTE4NUMyN0JDMTkzRDAwQTFE
RDUyIC8qIEFTVCAqLywKLQkJCQkxQ0VCRDgwNDI3MTZCRkFCMDBBNTI1NEQgLyogY29uZmlnLmgg
Ki8sCi0JCQkJMzNFQTE4NjUyN0JDMUFENTAwQTFERDUyIC8qIENvbXBpbGF0aW9uTWVzc2FnZS5o
ICovLAogCQkJCTMzRUExODY3MjdCQzFCMTQwMEExREQ1MiAvKiBDb21waWxhdGlvbk1lc3NhZ2Uu
Y3BwICovLAotCQkJCTMzOEJCMkQzMjdCNkI2NkMwMEUwNjZBQiAvKiBMZXhlci5oICovLAorCQkJ
CTMzRUExODY1MjdCQzFBRDUwMEExREQ1MiAvKiBDb21waWxhdGlvbk1lc3NhZ2UuaCAqLywKKwkJ
CQkxQ0VCRDgwNDI3MTZCRkFCMDBBNTI1NEQgLyogY29uZmlnLmggKi8sCiAJCQkJMzM4QkIyRDUy
N0I2QjY4NzAwRTA2NkFCIC8qIExleGVyLmNwcCAqLywKIAkJCQkzMzhCQjJEMzI3QjZCNjZDMDBF
MDY2QUIgLyogTGV4ZXIuaCAqLywKIAkJCQkzMzhCQjJEMTI3QjZCNjNGMDBFMDY2QUIgLyogU291
cmNlU3Bhbi5oICovLApAQCAtNDEyLDE3ICs0MTAsMTcgQEAKIAkJMzNFQTE4NUMyN0JDMTkzRDAw
QTFERDUyIC8qIEFTVCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CisJCQkJMzNFQTE4N0MyN0JDMjQ2MDAwQTFERDUyIC8qIEV4cHJlc3Npb25zICovLAorCQkJCTMz
RUExODc3MjdCQzIyOUEwMEExREQ1MiAvKiBTdGF0ZW1lbnRzICovLAogCQkJCTMzRUExODVEMjdC
QzE5NEYwMEExREQ1MiAvKiBBU1ROb2RlLmggKi8sCiAJCQkJMzNFQTE4NjkyN0JDMUJFNjAwQTFE
RDUyIC8qIEF0dHJpYnV0ZS5oICovLAogCQkJCTMzRUExODZCMjdCQzFDQkMwMEExREQ1MiAvKiBF
eHByZXNzaW9uLmggKi8sCi0JCQkJMzNFQTE4N0MyN0JDMjQ2MDAwQTFERDUyIC8qIEV4cHJlc3Np
b25zICovLAogCQkJCTMzRUExODc1MjdCQzIxNkIwMEExREQ1MiAvKiBGdW5jdGlvbkRlY2wuaCAq
LywKLQkJCQkzM0VBMTg1RjI3QkMxOTgxMDBBMURENTIgLyogR2xvYmFsRGlyZWN0aXZlLmggKi8s
CiAJCQkJMzNFQTE4NjEyN0JDMTlDMTAwQTFERDUyIC8qIEdsb2JhbERlY2wuaCAqLywKKwkJCQkz
M0VBMTg1RjI3QkMxOTgxMDBBMURENTIgLyogR2xvYmFsRGlyZWN0aXZlLmggKi8sCiAJCQkJMzNF
QTE4NjMyN0JDMUExRDAwQTFERDUyIC8qIEdsb2JhbFZhcmlhYmxlRGVjbC5oICovLAogCQkJCTMz
RUExODZGMjdCQzFFOEEwMEExREQ1MiAvKiBTaGFkZXJNb2R1bGUuaCAqLywKIAkJCQkzM0VBMTg3
ODI3QkMyMkFBMDBBMURENTIgLyogU3RhdGVtZW50LmggKi8sCi0JCQkJMzNFQTE4NzcyN0JDMjI5
QTAwQTFERDUyIC8qIFN0YXRlbWVudHMgKi8sCiAJCQkJMzNFQTE4NzMyN0JDMjA0OTAwQTFERDUy
IC8qIFN0cnVjdHVyZURlY2wuaCAqLywKIAkJCQkzM0VBMTg2RDI3QkMxRDRDMDBBMURENTIgLyog
VHlwZURlY2wuaCAqLywKIAkJCQkzM0VBMTg3MTI3QkMxRkUxMDBBMURENTIgLyogVmFyaWFibGVR
dWFsaWZpZXIuaCAqLywKQEAgLTQ0NCw5ICs0NDIsOSBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKIAkJCQkzM0VBMTg4MTI3QkMyNUQwMDBBMURENTIgLyogSWRlbnRpZmll
ckV4cHJlc3Npb24uaCAqLywKKwkJCQkzM0VBMTg4NzI3QkMzNjFFMDBBMURENTIgLyogTGl0ZXJh
bEV4cHJlc3Npb25zLmggKi8sCiAJCQkJMzNFQTE4ODMyN0JDMjY4NjAwQTFERDUyIC8qIFN0cnVj
dHVyZUFjY2Vzcy5oICovLAogCQkJCTMzRUExODg1MjdCQzI2REYwMEExREQ1MiAvKiBUeXBlQ29u
dmVyc2lvbi5oICovLAotCQkJCTMzRUExODg3MjdCQzM2MUUwMEExREQ1MiAvKiBMaXRlcmFsRXhw
cmVzc2lvbnMuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gRXhwcmVzc2lvbnM7CiAJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOwpAQCAtNDY4LDMwICs0NjYsMzAgQEAKIAkJCWlzYSA9IFBCWEhlYWRl
cnNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVz
ID0gKAotCQkJCTMzRUExODc5MjdCQzIyQUEwMEExREQ1MiAvKiBTdGF0ZW1lbnQuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTMzRUExODgwMjdCQzI0RTIwMEExREQ1MiAvKiBBc3NpZ25tZW50U3RhdGVt
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkzM0VBMTg1RTI3QkMxOTRGMDBBMURENTIgLyogQVNU
Tm9kZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzNFQTE4ODYyN0JDMjZERjAwQTFERDUyIC8qIFR5
cGVDb252ZXJzaW9uLmggaW4gSGVhZGVycyAqLywKLQkJCQkzM0VBMTg2NDI3QkMxQTFEMDBBMURE
NTIgLyogR2xvYmFsVmFyaWFibGVEZWNsLmggaW4gSGVhZGVycyAqLywKKwkJCQkzM0VBMTg2QTI3
QkMxQkU2MDBBMURENTIgLyogQXR0cmlidXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQkzM0VBMTg2
NjI3QkMxQUQ1MDBBMURENTIgLyogQ29tcGlsYXRpb25NZXNzYWdlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkzM0VBMTg3QjI3QkMyMzBFMDBBMURENTIgLyogQ29tcG91bmRTdGF0ZW1lbnQuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTMzRUExODZDMjdCQzFDQkMwMEExREQ1MiAvKiBFeHByZXNzaW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkzM0VBMTg3NjI3QkMyMTZCMDBBMURENTIgLyogRnVuY3Rpb25E
ZWNsLmggaW4gSGVhZGVycyAqLywKLQkJCQkzMzhCQjJEMjI3QjZCNjNGMDBFMDY2QUIgLyogU291
cmNlU3Bhbi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzNFQTE4NjYyN0JDMUFENTAwQTFERDUyIC8q
IENvbXBpbGF0aW9uTWVzc2FnZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzNFQTE4NzAyN0JDMUU4
QTAwQTFERDUyIC8qIFNoYWRlck1vZHVsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzNFQTE4NjIy
N0JDMTlDMTAwQTFERDUyIC8qIEdsb2JhbERlY2wuaCBpbiBIZWFkZXJzICovLAorCQkJCTMzRUEx
ODYwMjdCQzE5ODEwMEExREQ1MiAvKiBHbG9iYWxEaXJlY3RpdmUuaCBpbiBIZWFkZXJzICovLAor
CQkJCTMzRUExODY0MjdCQzFBMUQwMEExREQ1MiAvKiBHbG9iYWxWYXJpYWJsZURlY2wuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTMzRUExODgyMjdCQzI1RDAwMEExREQ1MiAvKiBJZGVudGlmaWVyRXhw
cmVzc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzM4QkIyRDQyN0I2QjY2QzAwRTA2NkFCIC8q
IExleGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkzM0VBMTg4ODI3QkMzNjFFMDBBMURENTIgLyog
TGl0ZXJhbEV4cHJlc3Npb25zLmggaW4gSGVhZGVycyAqLywKLQkJCQkzMzhCQjJDRTI3QjZCNjAy
MDBFMDY2QUIgLyogVG9rZW4uaCBpbiBIZWFkZXJzICovLAotCQkJCTMzRUExODZDMjdCQzFDQkMw
MEExREQ1MiAvKiBFeHByZXNzaW9uLmggaW4gSGVhZGVycyAqLywKLQkJCQkxQ0VCRDdGODI3MTZC
MzQ0MDBBNTI1NEQgLyogV0dTTC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzNFQTE4NjIyN0JDMTlD
MTAwQTFERDUyIC8qIEdsb2JhbERlY2wuaCBpbiBIZWFkZXJzICovLAotCQkJCTMzRUExODgwMjdC
QzI0RTIwMEExREQ1MiAvKiBBc3NpZ25tZW50U3RhdGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJ
CQkzM0VBMTg3RTI3QkMyNDkwMDBBMURENTIgLyogUmV0dXJuU3RhdGVtZW50LmggaW4gSGVhZGVy
cyAqLywKKwkJCQkzM0VBMTg3MDI3QkMxRThBMDBBMURENTIgLyogU2hhZGVyTW9kdWxlLmggaW4g
SGVhZGVycyAqLywKKwkJCQkzMzhCQjJEMjI3QjZCNjNGMDBFMDY2QUIgLyogU291cmNlU3Bhbi5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMzNFQTE4NzkyN0JDMjJBQTAwQTFERDUyIC8qIFN0YXRlbWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzNFQTE4ODQyN0JDMjY4NjAwQTFERDUyIC8qIFN0cnVj
dHVyZUFjY2Vzcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzNFQTE4ODIyN0JDMjVEMDAwQTFERDUy
IC8qIElkZW50aWZpZXJFeHByZXNzaW9uLmggaW4gSGVhZGVycyAqLywKLQkJCQkzM0VBMTg2MDI3
QkMxOTgxMDBBMURENTIgLyogR2xvYmFsRGlyZWN0aXZlLmggaW4gSGVhZGVycyAqLywKLQkJCQkz
M0VBMTg2RTI3QkMxRDRDMDBBMURENTIgLyogVHlwZURlY2wuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTMzRUExODc0MjdCQzIwNDkwMEExREQ1MiAvKiBTdHJ1Y3R1cmVEZWNsLmggaW4gSGVhZGVycyAq
LywKLQkJCQkzM0VBMTg3RTI3QkMyNDkwMDBBMURENTIgLyogUmV0dXJuU3RhdGVtZW50LmggaW4g
SGVhZGVycyAqLywKLQkJCQkzM0VBMTg2QTI3QkMxQkU2MDBBMURENTIgLyogQXR0cmlidXRlLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkzMzhCQjJDRTI3QjZCNjAyMDBFMDY2QUIgLyogVG9rZW4uaCBp
biBIZWFkZXJzICovLAorCQkJCTMzRUExODg2MjdCQzI2REYwMEExREQ1MiAvKiBUeXBlQ29udmVy
c2lvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzNFQTE4NkUyN0JDMUQ0QzAwQTFERDUyIC8qIFR5
cGVEZWNsLmggaW4gSGVhZGVycyAqLywKIAkJCQkzM0VBMTg3MjI3QkMxRkUxMDBBMURENTIgLyog
VmFyaWFibGVRdWFsaWZpZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTFDRUJEN0Y4MjcxNkIzNDQw
MEE1MjU0RCAvKiBXR1NMLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL0FkYXB0ZXIubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9BZGFwdGVyLm1tCmlu
ZGV4IGZjYTNiMGRmNjFmODkyZGU5ZjY5ZmIzODlkZmMwZDdkNDNlYmJiNDUuLmJhZGFmYzU2OGE4
MmQ1Nzk0ZWFjY2VhNmZjYjQzODI1MmNhY2IyZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL0FkYXB0ZXIubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQWRhcHRlci5tbQpA
QCAtMTIyLDcgKzEyMiw3IEBAIHZvaWQgQWRhcHRlcjo6cmVxdWVzdERldmljZShjb25zdCBXR1BV
RGV2aWNlRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgV1RGOjpGdW5jdGlvCiAKICAgICAvLyBTZWUg
dGhlIGNvbW1lbnQgaW4gRGV2aWNlOjpzZXRMYWJlbCgpIGFib3V0IHdoeSB3ZSdyZSBub3Qgc2V0
dGluZyB0aGUgbGFiZWwgaGVyZS4KIAotICAgIGNhbGxiYWNrKFdHUFVSZXF1ZXN0RGV2aWNlU3Rh
dHVzX1N1Y2Nlc3MsIERldmljZTo6Y3JlYXRlKG1fZGV2aWNlKSwgbnVsbHB0cik7CisgICAgY2Fs
bGJhY2soV0dQVVJlcXVlc3REZXZpY2VTdGF0dXNfU3VjY2VzcywgRGV2aWNlOjpjcmVhdGUobV9k
ZXZpY2UsIGRlc2NyaXB0b3IubGFiZWwpLCBudWxscHRyKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViR1BVCkBAIC0xNTUsMTMgKzE1NSwyMSBAQCBib29sIHdncHVBZGFwdGVySGFzRmVhdHVyZShX
R1BVQWRhcHRlciBhZGFwdGVyLCBXR1BVRmVhdHVyZU5hbWUgZmVhdHVyZSkKIHZvaWQgd2dwdUFk
YXB0ZXJSZXF1ZXN0RGV2aWNlKFdHUFVBZGFwdGVyIGFkYXB0ZXIsIGNvbnN0IFdHUFVEZXZpY2VE
ZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBXR1BVUmVxdWVzdERldmljZUNhbGxiYWNrIGNhbGxiYWNr
LCB2b2lkKiB1c2VyZGF0YSkKIHsKICAgICBhZGFwdGVyLT5hZGFwdGVyLT5yZXF1ZXN0RGV2aWNl
KCpkZXNjcmlwdG9yLCBbY2FsbGJhY2ssIHVzZXJkYXRhXSAoV0dQVVJlcXVlc3REZXZpY2VTdGF0
dXMgc3RhdHVzLCBSZWZQdHI8V2ViR1BVOjpEZXZpY2U+JiYgZGV2aWNlLCBjb25zdCBjaGFyKiBt
ZXNzYWdlKSB7Ci0gICAgICAgIGNhbGxiYWNrKHN0YXR1cywgZGV2aWNlID8gbmV3IFdHUFVEZXZp
Y2VJbXBsIHsgZGV2aWNlLnJlbGVhc2VOb25OdWxsKCkgfSA6IG51bGxwdHIsIG1lc3NhZ2UsIHVz
ZXJkYXRhKTsKKyAgICAgICAgaWYgKGRldmljZSkgeworICAgICAgICAgICAgYXV0byYgcXVldWUg
PSBkZXZpY2UtPmdldFF1ZXVlKCk7CisgICAgICAgICAgICBjYWxsYmFjayhzdGF0dXMsIG5ldyBX
R1BVRGV2aWNlSW1wbCB7IGRldmljZS5yZWxlYXNlTm9uTnVsbCgpLCB7IHF1ZXVlIH0gfSwgbWVz
c2FnZSwgdXNlcmRhdGEpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGNhbGxiYWNrKHN0
YXR1cywgbnVsbHB0ciwgbWVzc2FnZSwgdXNlcmRhdGEpOwogICAgIH0pOwogfQogCiB2b2lkIHdn
cHVBZGFwdGVyUmVxdWVzdERldmljZVdpdGhCbG9jayhXR1BVQWRhcHRlciBhZGFwdGVyLCBXR1BV
RGV2aWNlRGVzY3JpcHRvciBjb25zdCAqIGRlc2NyaXB0b3IsIFdHUFVSZXF1ZXN0RGV2aWNlQmxv
Y2tDYWxsYmFjayBjYWxsYmFjaykKIHsKICAgICBhZGFwdGVyLT5hZGFwdGVyLT5yZXF1ZXN0RGV2
aWNlKCpkZXNjcmlwdG9yLCBbY2FsbGJhY2tdIChXR1BVUmVxdWVzdERldmljZVN0YXR1cyBzdGF0
dXMsIFJlZlB0cjxXZWJHUFU6OkRldmljZT4mJiBkZXZpY2UsIGNvbnN0IGNoYXIqIG1lc3NhZ2Up
IHsKLSAgICAgICAgY2FsbGJhY2soc3RhdHVzLCBkZXZpY2UgPyBuZXcgV0dQVURldmljZUltcGwg
eyBkZXZpY2UucmVsZWFzZU5vbk51bGwoKSB9IDogbnVsbHB0ciwgbWVzc2FnZSk7CisgICAgICAg
IGlmIChkZXZpY2UpIHsKKyAgICAgICAgICAgIGF1dG8mIHF1ZXVlID0gZGV2aWNlLT5nZXRRdWV1
ZSgpOworICAgICAgICAgICAgY2FsbGJhY2soc3RhdHVzLCBuZXcgV0dQVURldmljZUltcGwgeyBk
ZXZpY2UucmVsZWFzZU5vbk51bGwoKSwgeyBxdWV1ZSB9IH0sIG1lc3NhZ2UpOworICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgIGNhbGxiYWNrKHN0YXR1cywgbnVsbHB0ciwgbWVzc2FnZSk7CiAg
ICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CdWZmZXIuaCBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL0J1ZmZlci5oCmluZGV4IDk1MDY2MzFiZTlhMzZlN2JkYjNhN2Rh
ZTA3NzgxZWY4ODk4NjU0MDkuLjg3MTAwZjFiNWIxNDBjNGIyNDNkM2YwMmU5ZDNkZDM5M2E2ZDlk
YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0J1ZmZlci5oCisrKyBiL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL0J1ZmZlci5oCkBAIC0yNSwxOSArMjUsMjcgQEAKIAogI3ByYWdtYSBv
bmNlCiAKKyNpbXBvcnQgPHV0aWxpdHk+CiAjaW1wb3J0IDx3dGYvRmFzdE1hbGxvYy5oPgogI2lt
cG9ydCA8d3RmL0Z1bmN0aW9uLmg+CisjaW1wb3J0IDx3dGYvUmFuZ2UuaD4KKyNpbXBvcnQgPHd0
Zi9SYW5nZVNldC5oPgogI2ltcG9ydCA8d3RmL1JlZi5oPgogI2ltcG9ydCA8d3RmL1JlZkNvdW50
ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkdQVSB7CiAKK2NsYXNzIERldmljZTsKKwogY2xhc3MgQnVm
ZmVyIDogcHVibGljIFJlZkNvdW50ZWQ8QnVmZmVyPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxCdWZmZXI+IGNyZWF0ZShpZDxNVExCdWZm
ZXI+IGJ1ZmZlcikKKyAgICBlbnVtIGNsYXNzIFN0YXRlIDogdWludDhfdDsKKyAgICB1c2luZyBN
YXBwaW5nUmFuZ2UgPSBzdGQ6OnBhaXI8c2l6ZV90LCBzaXplX3Q+OworCisgICAgc3RhdGljIFJl
ZjxCdWZmZXI+IGNyZWF0ZShpZDxNVExCdWZmZXI+IGJ1ZmZlciwgdWludDY0X3Qgc2l6ZSwgV0dQ
VUJ1ZmZlclVzYWdlRmxhZ3MgdXNhZ2UsIFN0YXRlIGluaXRpYWxTdGF0ZSwgTWFwcGluZ1Jhbmdl
IGluaXRpYWxNYXBwaW5nUmFuZ2UsIERldmljZSYgZGV2aWNlKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgQnVmZmVyKGJ1ZmZlcikpOworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBCdWZmZXIoYnVmZmVyLCBzaXplLCB1c2FnZSwgaW5pdGlhbFN0YXRlLCBpbml0aWFs
TWFwcGluZ1JhbmdlLCBkZXZpY2UpKTsKICAgICB9CiAKICAgICB+QnVmZmVyKCk7CkBAIC00OSwx
MiArNTcsMzkgQEAgcHVibGljOgogICAgIHZvaWQgdW5tYXAoKTsKICAgICB2b2lkIHNldExhYmVs
KGNvbnN0IGNoYXIqKTsKIAorICAgIC8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIv
I2J1ZmZlci1zdGF0ZQorICAgIC8vIEVhY2ggR1BVQnVmZmVyIGhhcyBhIGN1cnJlbnQgYnVmZmVy
IHN0YXRlIG9uIHRoZSBDb250ZW50IHRpbWVsaW5lIHdoaWNoIGlzIG9uZSBvZiB0aGUgZm9sbG93
aW5nOgorICAgIGVudW0gY2xhc3MgU3RhdGUgOiB1aW50OF90IHsKKyAgICAgICAgTWFwcGVkLCAv
LyAid2hlcmUgdGhlIEdQVUJ1ZmZlciBpcyBhdmFpbGFibGUgZm9yIENQVSBvcGVyYXRpb25zIG9u
IGl0cyBjb250ZW50LiIKKyAgICAgICAgTWFwcGVkQXRDcmVhdGlvbiwgLy8gIndoZXJlIHRoZSBH
UFVCdWZmZXIgd2FzIGp1c3QgY3JlYXRlZCBhbmQgaXMgYXZhaWxhYmxlIGZvciBDUFUgb3BlcmF0
aW9ucyBvbiBpdHMgY29udGVudC4iCisgICAgICAgIE1hcHBpbmdQZW5kaW5nLCAvLyAid2hlcmUg
dGhlIEdQVUJ1ZmZlciBpcyBiZWluZyBtYWRlIGF2YWlsYWJsZSBmb3IgQ1BVIG9wZXJhdGlvbnMg
b24gaXRzIGNvbnRlbnQuIgorICAgICAgICBVbm1hcHBlZCwgLy8gIndoZXJlIHRoZSBHUFVCdWZm
ZXIgaXMgYXZhaWxhYmxlIGZvciBHUFUgb3BlcmF0aW9ucy4iCisgICAgICAgIERlc3Ryb3llZCwg
Ly8gIndoZXJlIHRoZSBHUFVCdWZmZXIgaXMgbm8gbG9uZ2VyIGF2YWlsYWJsZSBmb3IgYW55IG9w
ZXJhdGlvbnMgZXhjZXB0IGRlc3Ryb3kuIgorICAgIH07CisKICAgICBpZDxNVExCdWZmZXI+IGJ1
ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CiAKIHByaXZhdGU6Ci0gICAgQnVmZmVy
KGlkPE1UTEJ1ZmZlcj4pOworICAgIEJ1ZmZlcihpZDxNVExCdWZmZXI+LCB1aW50NjRfdCBzaXpl
LCBXR1BVQnVmZmVyVXNhZ2VGbGFncywgU3RhdGUgaW5pdGlhbFN0YXRlLCBNYXBwaW5nUmFuZ2Ug
aW5pdGlhbE1hcHBpbmdSYW5nZSwgRGV2aWNlJik7CisKKyAgICBib29sIHZhbGlkYXRlR2V0TWFw
cGVkUmFuZ2Uoc2l6ZV90IG9mZnNldCwgc2l6ZV90IHJhbmdlU2l6ZSk7CisgICAgYm9vbCB2YWxp
ZGF0ZU1hcEFzeW5jKFdHUFVNYXBNb2RlRmxhZ3MsIHNpemVfdCBvZmZzZXQsIHNpemVfdCByYW5n
ZVNpemUpOworICAgIGJvb2wgdmFsaWRhdGVVbm1hcCgpOwogCiAgICAgaWQ8TVRMQnVmZmVyPiBt
X2J1ZmZlciB7IG5pbCB9OworCisgICAgLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdl
Yi8jYnVmZmVyLWludGVyZmFjZQorICAgIC8vICJHUFVCdWZmZXIgaGFzIHRoZSBmb2xsb3dpbmcg
aW50ZXJuYWwgc2xvdHM6IgorICAgIHNpemVfdCBtX3NpemUgeyAwIH07IC8vICJUaGUgbGVuZ3Ro
IG9mIHRoZSBHUFVCdWZmZXIgYWxsb2NhdGlvbiBpbiBieXRlcy4iCisgICAgV0dQVUJ1ZmZlclVz
YWdlRmxhZ3MgbV91c2FnZSB7IDAgfTsgLy8gIlRoZSBhbGxvd2VkIHVzYWdlcyBmb3IgdGhpcyBH
UFVCdWZmZXIuIgorICAgIFN0YXRlIG1fc3RhdGUgeyBTdGF0ZTo6VW5tYXBwZWQgfTsgLy8gIlRo
ZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBHUFVCdWZmZXIuIgorICAgIC8vICJbW21hcHBpbmddXSBv
ZiB0eXBlIEFycmF5QnVmZmVyIG9yIFByb21pc2Ugb3IgbnVsbC4iIFRoaXMgaXMgdW5uZWNlc3Nh
cnk7IHdlIGNhbiBqdXN0IHVzZSBtX2RldmljZS5jb250ZW50cy4KKyAgICBNYXBwaW5nUmFuZ2Ug
bV9tYXBwaW5nUmFuZ2UgeyAwLCAwIH07IC8vICJbW21hcHBpbmdfcmFuZ2VdXSBvZiB0eXBlIGxp
c3Q8dW5zaWduZWQgbG9uZyBsb25nPiBvciBudWxsLiIKKyAgICB1c2luZyBNYXBwZWRSYW5nZXMg
PSBSYW5nZVNldDxSYW5nZTxzaXplX3Q+PjsKKyAgICBNYXBwZWRSYW5nZXMgbV9tYXBwZWRSYW5n
ZXM7IC8vICJbW21hcHBlZF9yYW5nZXNdXSBvZiB0eXBlIGxpc3Q8QXJyYXlCdWZmZXI+IG9yIG51
bGwuIgorICAgIFdHUFVNYXBNb2RlRmxhZ3MgbV9tYXBNb2RlIHsgV0dQVU1hcE1vZGVfTm9uZSB9
OyAvLyAiVGhlIEdQVU1hcE1vZGVGbGFncyBvZiB0aGUgbGFzdCBjYWxsIHRvIG1hcEFzeW5jKCkg
KGlmIGFueSkuIgorCisgICAgUmVmPERldmljZT4gbV9kZXZpY2U7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0J1ZmZlci5tbSBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL0J1ZmZlci5tbQppbmRleCA2MWFkYTc5YWFkODJlOTNkYmFj
NGM3YTE3OTc5NDczNGJhZDFkYjAzLi44NWY5ZjE3MTJmY2Q2ZTllMGJlMTBhMWIwOTlmZWY4YTcz
ODViMTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CdWZmZXIubW0KKysrIGIv
U291cmNlL1dlYkdQVS9XZWJHUFUvQnVmZmVyLm1tCkBAIC0yNywxNyArMjcsMTMxIEBACiAjaW1w
b3J0ICJCdWZmZXIuaCIKIAogI2ltcG9ydCAiRGV2aWNlLmgiCisjaW1wb3J0IDx3dGYvUGFnZUJs
b2NrLmg+CisjaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJHUFUg
ewogCitzdGF0aWMgaW5saW5lIGJvb2wgaXNOb3RNdWx0aXBsZU9mUG93ZXJPZlR3byh1aW50NjRf
dCB4LCB1aW50NjRfdCB5KQoreworICAgIEFTU0VSVChpc1Bvd2VyT2ZUd28oeSkpOworICAgIHJl
dHVybiB4ICYgKHkgLSAxKTsKK30KKworc3RhdGljIGJvb2wgdmFsaWRhdGVEZXNjcmlwdG9yKGNv
bnN0IERldmljZSYgZGV2aWNlLCBjb25zdCBXR1BVQnVmZmVyRGVzY3JpcHRvciYgZGVzY3JpcHRv
cikKK3sKKyAgICBVTlVTRURfUEFSQU0oZGV2aWNlKTsKKworICAgIC8vIGh0dHBzOi8vZ3B1d2Vi
LmdpdGh1Yi5pby9ncHV3ZWIvI2Fic3RyYWN0LW9wZGVmLXZhbGlkYXRpbmctZ3B1YnVmZmVyZGVz
Y3JpcHRvcgorCisgICAgLy8gRklYTUU6ICJJZiBkZXZpY2UgaXMgbG9zdCByZXR1cm4gZmFsc2Uu
IgorCisgICAgLy8gRklYTUU6ICJJZiBhbnkgb2YgdGhlIGJpdHMgb2YgZGVzY3JpcHRvcuKAmXMg
dXNhZ2UgYXJlbuKAmXQgcHJlc2VudCBpbiB0aGlzIGRldmljZeKAmXMgW1thbGxvd2VkIGJ1ZmZl
ciB1c2FnZXNdXSByZXR1cm4gZmFsc2UuIgorCisgICAgLy8gIklmIGJvdGggdGhlIE1BUF9SRUFE
IGFuZCBNQVBfV1JJVEUgYml0cyBvZiBkZXNjcmlwdG9y4oCZcyB1c2FnZSBhdHRyaWJ1dGUgYXJl
IHNldCwgcmV0dXJuIGZhbHNlLiIKKyAgICBpZiAoKGRlc2NyaXB0b3IudXNhZ2UgJiBXR1BVQnVm
ZmVyVXNhZ2VfTWFwUmVhZCkgJiYgKGRlc2NyaXB0b3IudXNhZ2UgJiBXR1BVQnVmZmVyVXNhZ2Vf
TWFwV3JpdGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30K
Kworc3RhdGljIGJvb2wgdmFsaWRhdGVDcmVhdGVCdWZmZXIoY29uc3QgRGV2aWNlJiBkZXZpY2Us
IGNvbnN0IFdHUFVCdWZmZXJEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQoreworICAgIC8vIEZJWE1F
OiAidGhpcyBpcyBhIHZhbGlkIEdQVURldmljZS4iCisKKyAgICAvLyAidmFsaWRhdGluZyBHUFVC
dWZmZXJEZXNjcmlwdG9yKHRoaXMsIGRlc2NyaXB0b3IpIHJldHVybnMgdHJ1ZS4iCisgICAgaWYg
KCF2YWxpZGF0ZURlc2NyaXB0b3IoZGV2aWNlLCBkZXNjcmlwdG9yKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgLy8gImRlc2NyaXB0b3IudXNhZ2UgbXVzdCBub3QgYmUgMC4iCisgICAg
aWYgKCFkZXNjcmlwdG9yLnVzYWdlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBG
SVhNRTogImRlc2NyaXB0b3IudXNhZ2UgaXMgYSBzdWJzZXQgb2YgdGhpcy5bW2FsbG93ZWQgYnVm
ZmVyIHVzYWdlc11dLiIKKworICAgIC8vICJJZiBkZXNjcmlwdG9yLnVzYWdlIGNvbnRhaW5zIE1B
UF9SRUFEOiBkZXNjcmlwdG9yLnVzYWdlIGNvbnRhaW5zIG5vIG90aGVyIGZsYWdzIGV4Y2VwdCBD
T1BZX0RTVC4iCisgICAgaWYgKChkZXNjcmlwdG9yLnVzYWdlICYgV0dQVUJ1ZmZlclVzYWdlX01h
cFJlYWQpCisgICAgICAgICYmIChkZXNjcmlwdG9yLnVzYWdlICYgfldHUFVCdWZmZXJVc2FnZV9D
b3B5RHN0ICYgfldHUFVCdWZmZXJVc2FnZV9NYXBSZWFkKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgLy8gIklmIGRlc2NyaXB0b3IudXNhZ2UgY29udGFpbnMgTUFQX1dSSVRFOiBkZXNj
cmlwdG9yLnVzYWdlIGNvbnRhaW5zIG5vIG90aGVyIGZsYWdzIGV4Y2VwdCBDT1BZX1NSQy4iCisg
ICAgaWYgKChkZXNjcmlwdG9yLnVzYWdlICYgV0dQVUJ1ZmZlclVzYWdlX01hcFdyaXRlKQorICAg
ICAgICAmJiAoZGVzY3JpcHRvci51c2FnZSAmIH5XR1BVQnVmZmVyVXNhZ2VfQ29weVNyYyAmIH5X
R1BVQnVmZmVyVXNhZ2VfTWFwV3JpdGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAv
LyAiSWYgZGVzY3JpcHRvci5tYXBwZWRBdENyZWF0aW9uIGlzIHRydWU6IGRlc2NyaXB0b3Iuc2l6
ZSBpcyBhIG11bHRpcGxlIG9mIDQuIgorICAgIGlmIChkZXNjcmlwdG9yLm1hcHBlZEF0Q3JlYXRp
b24gJiYgaXNOb3RNdWx0aXBsZU9mUG93ZXJPZlR3byhkZXNjcmlwdG9yLnNpemUsIDQpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIE1UTFN0
b3JhZ2VNb2RlIHN0b3JhZ2VNb2RlKGJvb2wgZGV2aWNlSGFzVW5pZmllZE1lbW9yeSwgV0dQVUJ1
ZmZlclVzYWdlRmxhZ3MgdXNhZ2UpCit7CisgICAgaWYgKGRldmljZUhhc1VuaWZpZWRNZW1vcnkp
CisgICAgICAgIHJldHVybiBNVExTdG9yYWdlTW9kZVNoYXJlZDsKKyAgICAvLyBPbiBkaXNjcmV0
ZSBtZW1vcnkgR1BVcywgbWFwcGFibGUgbWVtb3J5IGlzIHNoYXJlZCwgd2hlcmVhcyBub24tbWFw
cGFibGUgbWVtb3J5IGlzIHByaXZhdGUuCisgICAgLy8gVGhlcmUgaXMgbm8gc2l0dWF0aW9uIHdo
ZXJlIHdlJ2xsIHVzZSB0aGUgbWFuYWdlZCBzdG9yYWdlIG1vZGUuCisgICAgaWYgKCh1c2FnZSAm
IFdHUFVCdWZmZXJVc2FnZV9NYXBSZWFkKSB8fCAodXNhZ2UgJiBXR1BVQnVmZmVyVXNhZ2VfTWFw
V3JpdGUpKQorICAgICAgICByZXR1cm4gTVRMU3RvcmFnZU1vZGVTaGFyZWQ7CisgICAgcmV0dXJu
IE1UTFN0b3JhZ2VNb2RlUHJpdmF0ZTsKK30KKwogUmVmUHRyPEJ1ZmZlcj4gRGV2aWNlOjpjcmVh
dGVCdWZmZXIoY29uc3QgV0dQVUJ1ZmZlckRlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7Ci0gICAg
VU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOwotICAgIHJldHVybiBCdWZmZXI6OmNyZWF0ZShuaWwp
OworICAgIGlmIChkZXNjcmlwdG9yLm5leHRJbkNoYWluKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIC8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIvI2RvbS1ncHVkZXZp
Y2UtY3JlYXRlYnVmZmVyCisKKyAgICAvLyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUgdW5zYXRpc2ZpZWQsIHJldHVybiBhbiBlcnJvciBidWZmZXIgYW5kIHN0b3AuIgor
ICAgIGlmICghdmFsaWRhdGVDcmVhdGVCdWZmZXIoKnRoaXMsIGRlc2NyaXB0b3IpKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKworICAgIC8vIEZJWE1FOiBVc2UgaGVhcCBhbGxvY2F0aW9uIHRv
IG1ha2UgdGhpcyBmYXN0ZXIuCisgICAgLy8gSWYvd2hlbiB3ZSBkbyB0aGF0LCB3ZSBoYXZlIHRv
IG1ha2Ugc3VyZSB0aGF0ICJuZXciIGJ1ZmZlcnMgZ2V0IGNsZWFyZWQgdG8gMC4KKyAgICAvLyBG
SVhNRTogQ29uc2lkZXIgd3JpdGUtY29tYmluaW5nIENQVSBjYWNoZSBtb2RlLgorICAgIC8vIEZJ
WE1FOiBDb25zaWRlciBpbXBsZW1lbnRpbmcgaGF6YXJkIHRyYWNraW5nIG91cnNlbGYuCisgICAg
TVRMU3RvcmFnZU1vZGUgc3RvcmFnZU1vZGUgPSBXZWJHUFU6OnN0b3JhZ2VNb2RlKG1faGFzVW5p
ZmllZE1lbW9yeSwgZGVzY3JpcHRvci51c2FnZSk7CisgICAgaWQ8TVRMQnVmZmVyPiBidWZmZXIg
PSBbbV9kZXZpY2UgbmV3QnVmZmVyV2l0aExlbmd0aDpkZXNjcmlwdG9yLnNpemUgb3B0aW9uczpz
dG9yYWdlTW9kZV07CisgICAgaWYgKCFidWZmZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgYnVmZmVyLmxhYmVsID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDU3RyaW5nOmRlc2NyaXB0
b3IubGFiZWwgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOworCisgICAgLy8gRklYTUU6
IEhhbmRsZSBkZXNjcmlwdG9yLm1hcHBlZEF0Q3JlYXRpb24uCisgICAgLy8gQmVjYXVzZSBub24t
bWFwcGFibGUgYnVmZmVycyBjYW4gYmUgbWFwcGVkIGF0IGNyZWF0aW9uLAorICAgIC8vIHRoaXMg
bWVhbnMgd2UgaGF2ZSB0byBoYXZlIGEgdGVtcG9yYXJ5IGJ1ZmZlciBtYXBwZWQsCisgICAgLy8g
YW5kIHdlIGNhbiB0byBzY2hlZHVsZSBhIGNvcHkgY29tbWFuZCB3aGVuIGl0IGdldHMgdW5tYXBw
ZWQsCisgICAgLy8gcHJlc3VtYWJseSBhdCBmaXJzdCB1c2UuCisKKyAgICAvLyAiTGV0IGIgYmUg
YSBuZXcgR1BVQnVmZmVyIG9iamVjdC4iCisgICAgLy8gIlNldCBiLltbc2l6ZV1dIHRvIGRlc2Ny
aXB0b3Iuc2l6ZS4iCisgICAgLy8gIlNldCBiLltbdXNhZ2VdXSB0byBkZXNjcmlwdG9yLnVzYWdl
LiIKKworICAgIC8vICJJZiBkZXNjcmlwdG9yLm1hcHBlZEF0Q3JlYXRpb24gaXMgdHJ1ZToiCisg
ICAgaWYgKGRlc2NyaXB0b3IubWFwcGVkQXRDcmVhdGlvbikgeworICAgICAgICAvLyAiU2V0IGIu
W1ttYXBwaW5nXV0gdG8gYSBuZXcgQXJyYXlCdWZmZXIgb2Ygc2l6ZSBiLltbc2l6ZV1dLiIgVGhp
cyBpcyB1bm5lY2Vzc2FyeS4KKyAgICAgICAgLy8gIlNldCBiLltbbWFwcGluZ19yYW5nZV1dIHRv
IFswLCBkZXNjcmlwdG9yLnNpemVdLiIKKyAgICAgICAgLy8gIlNldCBiLltbbWFwcGVkX3Jhbmdl
c11dIHRvIFtdLiIKKyAgICAgICAgLy8gIlNldCBiLltbc3RhdGVdXSB0byBtYXBwZWQgYXQgY3Jl
YXRpb24uIgorICAgICAgICByZXR1cm4gQnVmZmVyOjpjcmVhdGUoYnVmZmVyLCBkZXNjcmlwdG9y
LnNpemUsIGRlc2NyaXB0b3IudXNhZ2UsIEJ1ZmZlcjo6U3RhdGU6Ok1hcHBlZEF0Q3JlYXRpb24s
IHN0ZDo6bWFrZV9wYWlyKHN0YXRpY19jYXN0PHNpemVfdD4oMCksIGRlc2NyaXB0b3Iuc2l6ZSks
ICp0aGlzKTsKKyAgICB9CisKKyAgICAvLyAiU2V0IGIuW1ttYXBwaW5nXV0gdG8gbnVsbC4iIFRo
aXMgaXMgdW5uZWNlc3NhcnkuCisgICAgLy8gIlNldCBiLltbbWFwcGluZ19yYW5nZV1dIHRvIG51
bGwuIgorICAgIC8vICJTZXQgYi5bW21hcHBlZF9yYW5nZXNdXSB0byBudWxsLiIKKyAgICAvLyAi
U2V0IGIuW1tzdGF0ZV1dIHRvIHVubWFwcGVkLiIKKyAgICByZXR1cm4gQnVmZmVyOjpjcmVhdGUo
YnVmZmVyLCBkZXNjcmlwdG9yLnNpemUsIGRlc2NyaXB0b3IudXNhZ2UsIEJ1ZmZlcjo6U3RhdGU6
OlVubWFwcGVkLCBzdGQ6Om1ha2VfcGFpcihzdGF0aWNfY2FzdDxzaXplX3Q+KDApLCBzdGF0aWNf
Y2FzdDxzaXplX3Q+KDApKSwgKnRoaXMpOwogfQogCi1CdWZmZXI6OkJ1ZmZlcihpZDxNVExCdWZm
ZXI+IGJ1ZmZlcikKK0J1ZmZlcjo6QnVmZmVyKGlkPE1UTEJ1ZmZlcj4gYnVmZmVyLCB1aW50NjRf
dCBzaXplLCBXR1BVQnVmZmVyVXNhZ2VGbGFncyB1c2FnZSwgU3RhdGUgaW5pdGlhbFN0YXRlLCBN
YXBwaW5nUmFuZ2UgaW5pdGlhbE1hcHBpbmdSYW5nZSwgRGV2aWNlJiBkZXZpY2UpCiAgICAgOiBt
X2J1ZmZlcihidWZmZXIpCisgICAgLCBtX3NpemUoc2l6ZSkKKyAgICAsIG1fdXNhZ2UodXNhZ2Up
CisgICAgLCBtX3N0YXRlKGluaXRpYWxTdGF0ZSkKKyAgICAsIG1fbWFwcGluZ1JhbmdlKGluaXRp
YWxNYXBwaW5nUmFuZ2UpCisgICAgLCBtX2RldmljZShkZXZpY2UpCiB7CiB9CiAKQEAgLTQ1LDMy
ICsxNTksMjMyIEBAIEJ1ZmZlcjo6fkJ1ZmZlcigpID0gZGVmYXVsdDsKIAogdm9pZCBCdWZmZXI6
OmRlc3Ryb3koKQogeworICAgIC8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIvI2Rv
bS1ncHVidWZmZXItZGVzdHJveQorCisgICAgLy8gIklmIHRoZSB0aGlzLltbc3RhdGVdXSBpcyBu
b3QgZWl0aGVyIG9mIHVubWFwcGVkIG9yIGRlc3Ryb3llZDogUnVuIHRoZSBzdGVwcyB0byB1bm1h
cCB0aGlzLiIKKyAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6VW5tYXBwZWQgJiYgbV9zdGF0ZSAh
PSBTdGF0ZTo6RGVzdHJveWVkKSB7CisgICAgICAgIC8vIEZJWE1FOiBBU1NFUlQoKSB0aGF0IHRo
aXMgY2FsbCBkb2Vzbid0IGZhaWwuCisgICAgICAgIHVubWFwKCk7CisgICAgfQorCisgICAgLy8g
IlNldCB0aGlzLltbc3RhdGVdXSB0byBkZXN0cm95ZWQuIgorICAgIG1fc3RhdGUgPSBTdGF0ZTo6
RGVzdHJveWVkOworCisgICAgbV9idWZmZXIgPSBuaWw7CiB9CiAKIGNvbnN0IHZvaWQqIEJ1ZmZl
cjo6Z2V0Q29uc3RNYXBwZWRSYW5nZShzaXplX3Qgb2Zmc2V0LCBzaXplX3Qgc2l6ZSkKIHsKLSAg
ICBVTlVTRURfUEFSQU0ob2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc2l6ZSk7Ci0gICAgcmV0
dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGdldE1hcHBlZFJhbmdlKG9mZnNldCwgc2l6ZSk7Cit9
CisKK2Jvb2wgQnVmZmVyOjp2YWxpZGF0ZUdldE1hcHBlZFJhbmdlKHNpemVfdCBvZmZzZXQsIHNp
emVfdCByYW5nZVNpemUpCit7CisgICAgLy8gInRoaXMuW1tzdGF0ZV1dIGlzIG1hcHBlZCBvciBt
YXBwZWQgYXQgY3JlYXRpb24uIgorICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpNYXBwZWQgJiYg
bV9zdGF0ZSAhPSBTdGF0ZTo6TWFwcGVkQXRDcmVhdGlvbikKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgLy8gIm9mZnNldCBpcyBhIG11bHRpcGxlIG9mIDguIgorICAgIGlmIChpc05vdE11
bHRpcGxlT2ZQb3dlck9mVHdvKG9mZnNldCwgOCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIC8vICJyYW5nZVNpemUgaXMgYSBtdWx0aXBsZSBvZiA0LiIKKyAgICBpZiAoaXNOb3RNdWx0
aXBsZU9mUG93ZXJPZlR3byhvZmZzZXQsIDgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICAvLyAib2Zmc2V0IGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGlzLltbbWFwcGluZ19y
YW5nZV1dWzBdLiIKKyAgICBpZiAob2Zmc2V0IDwgbV9tYXBwaW5nUmFuZ2UuZmlyc3QpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vICJvZmZzZXQgKyByYW5nZVNpemUgaXMgbGVzcyB0
aGFuIG9yIGVxdWFsIHRvIHRoaXMuW1ttYXBwaW5nX3JhbmdlXV1bMV0uIgorICAgIC8vIEZJWE1F
OiBVc2VkIGNoZWNrZWQgYXJpdGhtZXRpYy4KKyAgICBpZiAob2Zmc2V0ICsgcmFuZ2VTaXplID4g
bV9tYXBwaW5nUmFuZ2Uuc2Vjb25kKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyAi
W29mZnNldCwgb2Zmc2V0ICsgcmFuZ2VTaXplKSBkb2VzIG5vdCBvdmVybGFwIGFub3RoZXIgcmFu
Z2UgaW4gdGhpcy5bW21hcHBlZF9yYW5nZXNdXS4iCisgICAgaWYgKG1fbWFwcGVkUmFuZ2VzLm92
ZXJsYXBzKHsgb2Zmc2V0LCBvZmZzZXQgKyByYW5nZVNpemUgfSkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkKiBCdWZmZXI6OmdldE1hcHBlZFJh
bmdlKHNpemVfdCBvZmZzZXQsIHNpemVfdCBzaXplKQogewotICAgIFVOVVNFRF9QQVJBTShvZmZz
ZXQpOwotICAgIFVOVVNFRF9QQVJBTShzaXplKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAv
LyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNkb20tZ3B1YnVmZmVyLWdldG1hcHBl
ZHJhbmdlCisKKyAgICAvLyAiSWYgc2l6ZSBpcyBtaXNzaW5nOiBMZXQgcmFuZ2VTaXplIGJlIG1h
eCgwLCB0aGlzLltbc2l6ZV1dIC0gb2Zmc2V0KS4iCisgICAgLy8gRklYTUU6IFVzZSBjaGVja2Vk
IGFyaXRobWV0aWMuCisgICAgYXV0byByYW5nZVNpemUgPSBzaXplOworICAgIGlmIChzaXplID09
IFdHUFVfV0hPTEVfTUFQX1NJWkUpCisgICAgICAgIHJhbmdlU2l6ZSA9IHN0ZDo6bWF4KHN0YXRp
Y19jYXN0PHNpemVfdD4oMCksIG1fc2l6ZSAtIG9mZnNldCk7CisKKyAgICAvLyAiSWYgYW55IG9m
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQiCisgICAgaWYgKCF2YWxp
ZGF0ZUdldE1hcHBlZFJhbmdlKG9mZnNldCwgcmFuZ2VTaXplKSkgeworICAgICAgICAvLyBGSVhN
RTogInRocm93IGFuIE9wZXJhdGlvbkVycm9yIGFuZCBzdG9wLiIKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgfQorCisgICAgLy8gIkxldCBtIGJlIGEgbmV3IEFycmF5QnVmZmVyIG9mIHNp
emUgcmFuZ2VTaXplIHBvaW50aW5nIGF0IHRoZSBjb250ZW50IG9mIHRoaXMuW1ttYXBwaW5nXV0g
YXQgb2Zmc2V0IG9mZnNldCAtIHRoaXMuW1ttYXBwaW5nX3JhbmdlXV1bMF0uIgorCisgICAgLy8g
IkFwcGVuZCBtIHRvIHRoaXMuW1ttYXBwZWRfcmFuZ2VzXV0uIgorICAgIG1fbWFwcGVkUmFuZ2Vz
LmFkZCh7IG9mZnNldCwgb2Zmc2V0ICsgcmFuZ2VTaXplIH0pOworCisgICAgLy8gIlJldHVybiBt
LiIKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y2hhcio+KG1fYnVmZmVyLmNvbnRlbnRzKSArIG9m
ZnNldDsKK30KKworYm9vbCBCdWZmZXI6OnZhbGlkYXRlTWFwQXN5bmMoV0dQVU1hcE1vZGVGbGFn
cyBtb2RlLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgcmFuZ2VTaXplKQoreworICAgIC8vIEZJWE1F
OiAidGhpcyBpcyBhIHZhbGlkIEdQVUJ1ZmZlci4gVE9ETzogY2hlY2sgZGVzdHJveWVkIHN0YXRl
PyIKKworICAgIC8vICJvZmZzZXQgaXMgYSBtdWx0aXBsZSBvZiA4LiIKKyAgICBpZiAoaXNOb3RN
dWx0aXBsZU9mUG93ZXJPZlR3byhvZmZzZXQsIDgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICAvLyAicmFuZ2VTaXplIGlzIGEgbXVsdGlwbGUgb2YgNC4iCisgICAgaWYgKGlzTm90TXVs
dGlwbGVPZlBvd2VyT2ZUd28ocmFuZ2VTaXplLCA0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgLy8gIm9mZnNldCArIHJhbmdlU2l6ZSBpcyBsZXNzIG9yIGVxdWFsIHRvIHRoaXMuW1tz
aXplXV0iCisgICAgLy8gRklYTUU6IFVzZSBjaGVja2VkIGFyaXRobWV0aWMuCisgICAgaWYgKG9m
ZnNldCArIHJhbmdlU2l6ZSA+IG1fc2l6ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
Ly8gInRoaXMuW1tzdGF0ZV1dIGlzIHVubWFwcGVkIgorICAgIGlmIChtX3N0YXRlICE9IFN0YXRl
OjpVbm1hcHBlZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gIm1vZGUgY29udGFp
bnMgZXhhY3RseSBvbmUgb2YgUkVBRCBvciBXUklURS4iCisgICAgYXV0byByZWFkV3JpdGVNb2Rl
RmxhZ3MgPSBtb2RlICYgKFdHUFVNYXBNb2RlX1JlYWQgfCBXR1BVTWFwTW9kZV9Xcml0ZSk7Cisg
ICAgaWYgKHJlYWRXcml0ZU1vZGVGbGFncyAhPSBXR1BVTWFwTW9kZV9SZWFkICYmIHJlYWRXcml0
ZU1vZGVGbGFncyAhPSBXR1BVTWFwTW9kZV9Xcml0ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgLy8gIklmIG1vZGUgY29udGFpbnMgUkVBRCB0aGVuIHRoaXMuW1t1c2FnZV1dIG11c3Qg
Y29udGFpbiBNQVBfUkVBRC4iCisgICAgaWYgKChtb2RlICYgV0dQVU1hcE1vZGVfUmVhZCkgJiYg
IShtX3VzYWdlICYgV0dQVUJ1ZmZlclVzYWdlX01hcFJlYWQpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICAvLyAiSWYgbW9kZSBjb250YWlucyBXUklURSB0aGVuIHRoaXMuW1t1c2FnZV1d
IG11c3QgY29udGFpbiBNQVBfV1JJVEUuIgorICAgIGlmICgobW9kZSAmIFdHUFVNYXBNb2RlX1dy
aXRlKSAmJiAhKG1fdXNhZ2UgJiBXR1BVQnVmZmVyVXNhZ2VfTWFwV3JpdGUpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBCdWZmZXI6Om1hcEFz
eW5jKFdHUFVNYXBNb2RlRmxhZ3MgbW9kZSwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IHNpemUsIFdU
Rjo6RnVuY3Rpb248dm9pZChXR1BVQnVmZmVyTWFwQXN5bmNTdGF0dXMpPiYmIGNhbGxiYWNrKQog
ewotICAgIFVOVVNFRF9QQVJBTShtb2RlKTsKLSAgICBVTlVTRURfUEFSQU0ob2Zmc2V0KTsKLSAg
ICBVTlVTRURfUEFSQU0oc2l6ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGNhbGxiYWNrKTsKKyAgICAv
LyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNkb20tZ3B1YnVmZmVyLW1hcGFzeW5j
CisKKyAgICAvLyAiSWYgc2l6ZSBpcyBtaXNzaW5nOiBMZXQgcmFuZ2VTaXplIGJlIG1heCgwLCB0
aGlzLltbc2l6ZV1dIC0gb2Zmc2V0KS4iCisgICAgLy8gRklYTUU6IFVzZSBjaGVja2VkIGFyaXRo
bWV0aWMuCisgICAgYXV0byByYW5nZVNpemUgPSBzaXplOworICAgIGlmIChzaXplID09IFdHUFVf
V0hPTEVfTUFQX1NJWkUpCisgICAgICAgIHJhbmdlU2l6ZSA9IHN0ZDo6bWF4KHN0YXRpY19jYXN0
PHNpemVfdD4oMCksIG1fc2l6ZSAtIG9mZnNldCk7CisKKyAgICAvLyAiSWYgYW55IG9mIHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQ6IgorICAgIGlmICghdmFsaWRhdGVN
YXBBc3luYyhtb2RlLCBvZmZzZXQsIHJhbmdlU2l6ZSkpIHsKKyAgICAgICAgLy8gRklYTUU6ICJS
ZWNvcmQgYSB2YWxpZGF0aW9uIGVycm9yIG9uIHRoZSBjdXJyZW50IHNjb3BlLiIKKworICAgICAg
ICAvLyAiUmV0dXJuIGEgcHJvbWlzZSByZWplY3RlZCB3aXRoIGFuIE9wZXJhdGlvbkVycm9yIG9u
IHRoZSBEZXZpY2UgdGltZWxpbmUuIgorICAgICAgICBjYWxsYmFjayhXR1BVQnVmZmVyTWFwQXN5
bmNTdGF0dXNfRXJyb3IpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gIlNldCB0
aGlzLltbbWFwcGluZ11dIHRvIHAuIgorCisgICAgLy8gIlNldCB0aGlzLltbc3RhdGVdXSB0byBt
YXBwaW5nIHBlbmRpbmcuIgorICAgIG1fc3RhdGUgPSBTdGF0ZTo6TWFwcGluZ1BlbmRpbmc7CisK
KyAgICAvLyAiU2V0IHRoaXMuW1ttYXBfbW9kZV1dIHRvIG1vZGUuIgorICAgIG1fbWFwTW9kZSA9
IG1vZGU7CisKKyAgICAvLyAiRW5xdWV1ZSBhbiBvcGVyYXRpb24gb24gdGhlIGRlZmF1bHQgcXVl
dWXigJlzIFF1ZXVlIHRpbWVsaW5lIHRoYXQgd2lsbCBleGVjdXRlIHRoZSBmb2xsb3dpbmc6Igor
ICAgIG1fZGV2aWNlLT5nZXRRdWV1ZSgpLm9uU3VibWl0dGVkV29ya0RvbmUoMCwgW3Byb3RlY3Rl
ZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBvZmZzZXQsIHJhbmdlU2l6ZSwgY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKV0gKFdHUFVRdWV1ZVdvcmtEb25lU3RhdHVzIHN0YXR1cykgeworICAgICAg
ICAvLyAiSWYgdGhpcy5bW3N0YXRlXV0gaXMgbWFwcGluZyBwZW5kaW5nOiIKKyAgICAgICAgaWYg
KHByb3RlY3RlZFRoaXMtPm1fc3RhdGUgPT0gU3RhdGU6Ok1hcHBpbmdQZW5kaW5nKSB7CisgICAg
ICAgICAgICAvLyAiTGV0IG0gYmUgYSBuZXcgQXJyYXlCdWZmZXIgb2Ygc2l6ZSByYW5nZVNpemUu
IgorCisgICAgICAgICAgICAvLyAiU2V0IHRoZSBjb250ZW50IG9mIG0gdG8gdGhlIGNvbnRlbnQg
b2YgdGhpc+KAmXMgYWxsb2NhdGlvbiBzdGFydGluZyBhdCBvZmZzZXQgb2Zmc2V0IGFuZCBmb3Ig
cmFuZ2VTaXplIGJ5dGVzLiIKKworICAgICAgICAgICAgLy8gIlNldCB0aGlzLltbbWFwcGluZ11d
IHRvIG0uIgorCisgICAgICAgICAgICAvLyAiU2V0IHRoaXMuW1tzdGF0ZV1dIHRvIG1hcHBlZC4i
CisgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX3N0YXRlID0gU3RhdGU6Ok1hcHBlZDsKKwor
ICAgICAgICAgICAgLy8gIlNldCB0aGlzLltbbWFwcGluZ19yYW5nZV1dIHRvIFtvZmZzZXQsIG9m
ZnNldCArIHJhbmdlU2l6ZV0uIgorICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9tYXBwaW5n
UmFuZ2UgPSBzdGQ6Om1ha2VfcGFpcihvZmZzZXQsIG9mZnNldCArIHJhbmdlU2l6ZSk7CisKKyAg
ICAgICAgICAgIC8vICJTZXQgdGhpcy5bW21hcHBlZF9yYW5nZXNdXSB0byBbXS4iCisgICAgICAg
ICAgICBwcm90ZWN0ZWRUaGlzLT5tX21hcHBlZFJhbmdlcyA9IE1hcHBlZFJhbmdlcygpOworICAg
ICAgICB9CisKKyAgICAgICAgLy8gIlJlc29sdmUgcC4iCisgICAgICAgIHN3aXRjaCAoc3RhdHVz
KSB7CisgICAgICAgIGNhc2UgV0dQVVF1ZXVlV29ya0RvbmVTdGF0dXNfU3VjY2VzczoKKyAgICAg
ICAgICAgIGNhbGxiYWNrKFdHUFVCdWZmZXJNYXBBc3luY1N0YXR1c19TdWNjZXNzKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgY2FzZSBXR1BVUXVldWVXb3JrRG9uZVN0YXR1c19FcnJv
cjoKKyAgICAgICAgICAgIGNhbGxiYWNrKFdHUFVCdWZmZXJNYXBBc3luY1N0YXR1c19FcnJvcik7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNhc2UgV0dQVVF1ZXVlV29ya0RvbmVTdGF0
dXNfVW5rbm93bjoKKyAgICAgICAgICAgIGNhbGxiYWNrKFdHUFVCdWZmZXJNYXBBc3luY1N0YXR1
c19Vbmtub3duKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgY2FzZSBXR1BVUXVldWVX
b3JrRG9uZVN0YXR1c19EZXZpY2VMb3N0OgorICAgICAgICAgICAgY2FsbGJhY2soV0dQVUJ1ZmZl
ck1hcEFzeW5jU3RhdHVzX0RldmljZUxvc3QpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAg
ICBjYWxsYmFjayhXR1BVQnVmZmVyTWFwQXN5bmNTdGF0dXNfRXJyb3IpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgfSk7Cit9CisKK2Jvb2wgQnVmZmVyOjp2YWxpZGF0ZVVu
bWFwKCkKK3sKKyAgICAvLyAidGhpcy5bW3N0YXRlXV0gbXVzdCBiZSBtYXBwZWQgYXQgY3JlYXRp
b24sIG1hcHBpbmcgcGVuZGluZywgb3IgbWFwcGVkLiIKKyAgICBpZiAobV9zdGF0ZSAhPSBTdGF0
ZTo6TWFwcGVkQXRDcmVhdGlvbgorICAgICAgICAmJiBtX3N0YXRlICE9IFN0YXRlOjpNYXBwaW5n
UGVuZGluZworICAgICAgICAmJiBtX3N0YXRlICE9IFN0YXRlOjpNYXBwZWQpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIEJ1ZmZlcjo6dW5tYXAo
KQogeworICAgIC8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIvI2RvbS1ncHVidWZm
ZXItdW5tYXAKKworICAgIC8vICJJZiBhbnkgb2YgdGhlIGZvbGxvd2luZyByZXF1aXJlbWVudHMg
YXJlIHVubWV0IgorICAgIGlmICh2YWxpZGF0ZVVubWFwKCkpIHsKKyAgICAgICAgLy8gRklYTUU6
ICJnZW5lcmF0ZSBhIHZhbGlkYXRpb24gZXJyb3IgYW5kIHN0b3AuIgorICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgLy8gIklmIHRoaXMuW1tzdGF0ZV1dIGlzIG1hcHBpbmcgcGVuZGluZzoi
CisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6Ok1hcHBpbmdQZW5kaW5nKSB7CisgICAgICAgIC8v
IEZJWE1FOiAiUmVqZWN0IFtbbWFwcGluZ11dIHdpdGggYW4gQWJvcnRFcnJvci4iCisKKyAgICAg
ICAgLy8gIlNldCB0aGlzLltbbWFwcGluZ11dIHRvIG51bGwuIgorICAgIH0KKworICAgIC8vICJJ
ZiB0aGlzLltbc3RhdGVdXSBpcyBtYXBwZWQgb3IgbWFwcGVkIGF0IGNyZWF0aW9uOiIKKyAgICBp
ZiAobV9zdGF0ZSA9PSBTdGF0ZTo6TWFwcGVkIHx8IG1fc3RhdGUgPT0gU3RhdGU6Ok1hcHBlZEF0
Q3JlYXRpb24pIHsKKyAgICAgICAgLy8gIklmIG9uZSBvZiB0aGUgdHdvIGZvbGxvd2luZyBjb25k
aXRpb25zIGhvbGRzOiIKKyAgICAgICAgLy8gInRoaXMuW1tzdGF0ZV1dIGlzIG1hcHBlZCBhdCBj
cmVhdGlvbiIKKyAgICAgICAgLy8gInRoaXMuW1tzdGF0ZV1dIGlzIG1hcHBlZCBhbmQgdGhpcy5b
W21hcF9tb2RlXV0gY29udGFpbnMgV1JJVEUiCisgICAgICAgIC8vICJFbnF1ZXVlIGFuIG9wZXJh
dGlvbiBvbiB0aGUgZGVmYXVsdCBxdWV1ZeKAmXMgUXVldWUgdGltZWxpbmUgdGhhdCB1cGRhdGVz
IHRoZSB0aGlzLltbbWFwcGluZ19yYW5nZV1dIG9mIHRoaXPigJlzIGFsbG9jYXRpb24gdG8gdGhl
IGNvbnRlbnQgb2YgdGhpcy5bW21hcHBpbmddXS4iCisKKyAgICAgICAgLy8gIkRldGFjaCBlYWNo
IEFycmF5QnVmZmVyIGluIHRoaXMuW1ttYXBwZWRfcmFuZ2VzXV0gZnJvbSBpdHMgY29udGVudC4i
CisKKyAgICAgICAgLy8gIlNldCB0aGlzLltbbWFwcGluZ11dIHRvIG51bGwuIgorCisgICAgICAg
IC8vICJTZXQgdGhpcy5bW21hcHBpbmdfcmFuZ2VdXSB0byBudWxsLiIKKworICAgICAgICAvLyAi
U2V0IHRoaXMuW1ttYXBwZWRfcmFuZ2VzXV0gdG8gbnVsbC4iCisgICAgfQorCisgICAgLy8gIlNl
dCB0aGlzLltbc3RhdGVdXSB0byB1bm1hcHBlZC4iCisgICAgbV9zdGF0ZSA9IFN0YXRlOjpVbm1h
cHBlZDsKIH0KIAogdm9pZCBCdWZmZXI6OnNldExhYmVsKGNvbnN0IGNoYXIqIGxhYmVsKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvRGV2aWNlLmggYi9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9EZXZpY2UuaAppbmRleCAzODc1ZTMxMjNjNzcxMGY2MWQwYTM2OTFkMDhjMWIwMGVmNWVl
ODUwLi5iNzA5YzZjNTc2MjYwZDUyMmFiYmQwZWM2ZTA1OTAxMDZkNDcyN2I1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9EZXZpY2UuaAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9EZXZpY2UuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2ltcG9ydCAi
UXVldWUuaCIKICNpbXBvcnQgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW1wb3J0IDx3dGYvRnVuY3Rp
b24uaD4KICNpbXBvcnQgPHd0Zi9SZWYuaD4KQEAgLTQ3LDEyICs0OCwxMSBAQCBjbGFzcyBTaGFk
ZXJNb2R1bGU7CiBjbGFzcyBTdXJmYWNlOwogY2xhc3MgU3dhcENoYWluOwogY2xhc3MgVGV4dHVy
ZTsKLWNsYXNzIFF1ZXVlOwogCiBjbGFzcyBEZXZpY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxEZXZp
Y2U+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmUHRyPERldmljZT4gY3JlYXRlKGlkPE1UTERldmljZT4pOworICAgIHN0YXRpYyBSZWZQdHI8
RGV2aWNlPiBjcmVhdGUoaWQ8TVRMRGV2aWNlPiwgY29uc3QgY2hhciogZGV2aWNlTGFiZWwpOwog
CiAgICAgfkRldmljZSgpOwogCkBAIC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRl
c3Ryb3koKTsKICAgICBzaXplX3QgZW51bWVyYXRlRmVhdHVyZXMoV0dQVUZlYXR1cmVOYW1lKiBm
ZWF0dXJlcyk7CiAgICAgYm9vbCBnZXRMaW1pdHMoV0dQVVN1cHBvcnRlZExpbWl0cyYpOwotICAg
IFJlZlB0cjxRdWV1ZT4gZ2V0UXVldWUoKTsKKyAgICBRdWV1ZSYgZ2V0UXVldWUoKTsKICAgICBi
b29sIGhhc0ZlYXR1cmUoV0dQVUZlYXR1cmVOYW1lKTsKICAgICBib29sIHBvcEVycm9yU2NvcGUo
V1RGOjpGdW5jdGlvbjx2b2lkKFdHUFVFcnJvclR5cGUsIGNvbnN0IGNoYXIqKT4mJiBjYWxsYmFj
ayk7CiAgICAgdm9pZCBwdXNoRXJyb3JTY29wZShXR1BVRXJyb3JGaWx0ZXIpOwpAQCAtODcsMTAg
Kzg3LDEyIEBAIHByaXZhdGU6CiAKICAgICBpZDxNVExEZXZpY2U+IG1fZGV2aWNlIHsgbmlsIH07
CiAgICAgUmVmPFF1ZXVlPiBtX2RlZmF1bHRRdWV1ZTsKKyAgICBib29sIG1faGFzVW5pZmllZE1l
bW9yeSB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJHUFUKIAogc3RydWN0IFdH
UFVEZXZpY2VJbXBsIHsKICAgICBSZWY8V2ViR1BVOjpEZXZpY2U+IGRldmljZTsKKyAgICBXR1BV
UXVldWVJbXBsIGRlZmF1bHRRdWV1ZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9EZXZpY2UubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9EZXZpY2UubW0KaW5kZXggYzgz
Zjg0M2MyNjQ3Zjc5YWYxNjYyMTExNzU1NDljOGMyYzM3ZGJiYS4uYjFlYTY5YjFmYmQwZTg1YTA5
ODA2YTBhOTY2Yzc1YWEyZTYwZGRlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUv
RGV2aWNlLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0RldmljZS5tbQpAQCAtNDUsMTkg
KzQ1LDI0IEBACiAKIG5hbWVzcGFjZSBXZWJHUFUgewogCi1SZWZQdHI8RGV2aWNlPiBEZXZpY2U6
OmNyZWF0ZShpZDxNVExEZXZpY2U+IGRldmljZSkKK1JlZlB0cjxEZXZpY2U+IERldmljZTo6Y3Jl
YXRlKGlkPE1UTERldmljZT4gZGV2aWNlLCBjb25zdCBjaGFyKiBkZXZpY2VMYWJlbCkKIHsKICAg
ICBpZDxNVExDb21tYW5kUXVldWU+IGNvbW1hbmRRdWV1ZSA9IFtkZXZpY2UgbmV3Q29tbWFuZFF1
ZXVlXTsKICAgICBpZiAoIWNvbW1hbmRRdWV1ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgYXV0byBxdWV1ZSA9IFF1ZXVlOjpjcmVhdGUoY29tbWFuZFF1ZXVlKTsKIAorICAgIGNvbW1h
bmRRdWV1ZS5sYWJlbCA9IEAiRGVmYXVsdCBxdWV1ZSI7CisgICAgaWYgKGRldmljZUxhYmVsICYm
IHN0cmxlbihkZXZpY2VMYWJlbCkpCisgICAgICAgIGNvbW1hbmRRdWV1ZS5sYWJlbCA9IFtOU1N0
cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiRGVmYXVsdCBxdWV1ZSBmb3IgZGV2aWNlICVzIiwgZGV2
aWNlTGFiZWxdOworCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGV2aWNlKGRldmljZSwgV1RG
TW92ZShxdWV1ZSkpKTsKIH0KIAogRGV2aWNlOjpEZXZpY2UoaWQ8TVRMRGV2aWNlPiBkZXZpY2Us
IFJlZjxRdWV1ZT4mJiBxdWV1ZSkKICAgICA6IG1fZGV2aWNlKGRldmljZSkKICAgICAsIG1fZGVm
YXVsdFF1ZXVlKFdURk1vdmUocXVldWUpKQorICAgICwgbV9oYXNVbmlmaWVkTWVtb3J5KGRldmlj
ZS5oYXNVbmlmaWVkTWVtb3J5KQogewogfQogCkBAIC04NCw5ICs4OSw5IEBAIGJvb2wgRGV2aWNl
OjpnZXRMaW1pdHMoV0dQVVN1cHBvcnRlZExpbWl0cyYgbGltaXRzKQogICAgIHJldHVybiB0cnVl
OwogfQogCi1SZWZQdHI8UXVldWU+IERldmljZTo6Z2V0UXVldWUoKQorUXVldWUmIERldmljZTo6
Z2V0UXVldWUoKQogewotICAgIHJldHVybiBtX2RlZmF1bHRRdWV1ZS5jb3B5UmVmKCk7CisgICAg
cmV0dXJuIG1fZGVmYXVsdFF1ZXVlOwogfQogCiBib29sIERldmljZTo6aGFzRmVhdHVyZShXR1BV
RmVhdHVyZU5hbWUpCkBAIC0yNTUsOCArMjYwLDcgQEAgYm9vbCB3Z3B1RGV2aWNlR2V0TGltaXRz
KFdHUFVEZXZpY2UgZGV2aWNlLCBXR1BVU3VwcG9ydGVkTGltaXRzKiBsaW1pdHMpCiAKIFdHUFVR
dWV1ZSB3Z3B1RGV2aWNlR2V0UXVldWUoV0dQVURldmljZSBkZXZpY2UpCiB7Ci0gICAgYXV0byBy
ZXN1bHQgPSBkZXZpY2UtPmRldmljZS0+Z2V0UXVldWUoKTsKLSAgICByZXR1cm4gcmVzdWx0ID8g
bmV3IFdHUFVRdWV1ZUltcGwgeyByZXN1bHQucmVsZWFzZU5vbk51bGwoKSB9IDogbnVsbHB0cjsK
KyAgICByZXR1cm4gJmRldmljZS0+ZGVmYXVsdFF1ZXVlOwogfQogCiBib29sIHdncHVEZXZpY2VI
YXNGZWF0dXJlKFdHUFVEZXZpY2UgZGV2aWNlLCBXR1BVRmVhdHVyZU5hbWUgZmVhdHVyZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1F1ZXVlLmggYi9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9RdWV1ZS5oCmluZGV4IGE1OTVhOGZlYTA5MDU2Zjc4OWU2OGI1YThlMGU3YTFlNWY1NTMz
NjEuLjI2NmRhMjk2M2MzM2ZlY2ViMjIzN2YzZTY3NzkwZTI1ZjY3YzU4OTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL1F1ZXVlLmgKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUv
UXVldWUuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW1wb3J0IDx3dGYvRmFzdE1hbGxvYy5oPgog
I2ltcG9ydCA8d3RmL0Z1bmN0aW9uLmg+CisjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgogI2ltcG9y
dCA8d3RmL1JlZi5oPgogI2ltcG9ydCA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbXBvcnQgPHd0Zi9W
ZWN0b3IuaD4KQEAgLTU2LDYgKzU3LDExIEBAIHByaXZhdGU6CiAgICAgUXVldWUoaWQ8TVRMQ29t
bWFuZFF1ZXVlPik7CiAKICAgICBpZDxNVExDb21tYW5kUXVldWU+IG1fY29tbWFuZFF1ZXVlIHsg
bmlsIH07CisKKyAgICB1aW50NjRfdCBtX3N1Ym1pdHRlZENvbW1hbmRCdWZmZXJDb3VudCB7IDAg
fTsKKyAgICB1aW50NjRfdCBtX2NvbXBsZXRlZENvbW1hbmRCdWZmZXJDb3VudCB7IDAgfTsKKyAg
ICB1c2luZyBPblN1Ym1pdHRlZFdvcmtEb25lQ2FsbGJhY2tzID0gVmVjdG9yPFdURjo6RnVuY3Rp
b248dm9pZChXR1BVUXVldWVXb3JrRG9uZVN0YXR1cyk+PjsKKyAgICBIYXNoTWFwPHVuc2lnbmVk
LCBPblN1Ym1pdHRlZFdvcmtEb25lQ2FsbGJhY2tzPiBtX29uU3VibWl0dGVkV29ya0RvbmVDYWxs
YmFja3M7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL1F1ZXVlLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUXVldWUubW0KaW5k
ZXggY2ZkOWNiMTJjMDUyMDcyZDVjNjM3OThmZjEyZDA3NzZiNDhkMjc3NS4uOTJmNzZiMDVmNzE5
ZmIyNzEzZmI1Nzg0MDgyZDAzZTI5Mjg4ZDc0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9X
ZWJHUFUvUXVldWUubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUXVldWUubW0KQEAgLTM4
LDEwICszOCwxNyBAQCBRdWV1ZTo6UXVldWUoaWQ8TVRMQ29tbWFuZFF1ZXVlPiBjb21tYW5kUXVl
dWUpCiAKIFF1ZXVlOjp+UXVldWUoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgUXVldWU6Om9uU3VibWl0
dGVkV29ya0RvbmUodWludDY0X3Qgc2lnbmFsVmFsdWUsIFdURjo6RnVuY3Rpb248dm9pZChXR1BV
UXVldWVXb3JrRG9uZVN0YXR1cyk+JiYgY2FsbGJhY2spCit2b2lkIFF1ZXVlOjpvblN1Ym1pdHRl
ZFdvcmtEb25lKHVpbnQ2NF90LCBXVEY6OkZ1bmN0aW9uPHZvaWQoV0dQVVF1ZXVlV29ya0RvbmVT
dGF0dXMpPiYmIGNhbGxiYWNrKQogewotICAgIFVOVVNFRF9QQVJBTShzaWduYWxWYWx1ZSk7Ci0g
ICAgVU5VU0VEX1BBUkFNKGNhbGxiYWNrKTsKKyAgICBBU1NFUlQobV9zdWJtaXR0ZWRDb21tYW5k
QnVmZmVyQ291bnQgPj0gbV9jb21wbGV0ZWRDb21tYW5kQnVmZmVyQ291bnQpOworCisgICAgaWYg
KG1fc3VibWl0dGVkQ29tbWFuZEJ1ZmZlckNvdW50ID09IG1fY29tcGxldGVkQ29tbWFuZEJ1ZmZl
ckNvdW50KSB7CisgICAgICAgIGNhbGxiYWNrKFdHUFVRdWV1ZVdvcmtEb25lU3RhdHVzX1N1Y2Nl
c3MpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byYgY2FsbGJhY2tzID0gbV9v
blN1Ym1pdHRlZFdvcmtEb25lQ2FsbGJhY2tzLmFkZChtX3N1Ym1pdHRlZENvbW1hbmRCdWZmZXJD
b3VudCwgT25TdWJtaXR0ZWRXb3JrRG9uZUNhbGxiYWNrcygpKS5pdGVyYXRvci0+dmFsdWU7Cisg
ICAgY2FsbGJhY2tzLmFwcGVuZChXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKIHZvaWQgUXVldWU6
OnN1Ym1pdChWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxjb25zdCBDb21tYW5kQnVmZmVy
Pj4mJiBjb21tYW5kcykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454198</attachid>
            <date>2022-03-09 00:08:42 -0800</date>
            <delta_ts>2022-03-14 20:44:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237583-20220309000841.patch</filename>
            <type>text/plain</type>
            <size>55648</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxMDI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDY4ZGNkZDcxNWI3N2E3YTVlZWNhNGY2
NDBlMTllODkzYzFlN2M4YTEuLmRhYTJjYTQwMmJmMzk1ZTgwOTU3ZDMzYzBkZjBhM2U2ZDQ4ZWY2
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjItMDMtMDggIE15bGVzIEMuIE1heGZpZWxkICA8
bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICDimILvuI8gW1dlYkdQVV0gUm91bmQtdHJp
cCBkYXRhIHRocm91Z2ggR1BVQnVmZmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzc1ODMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIHd0Zi9SYW5nZS5oOgorCiAyMDIyLTAzLTA4ICBSb2JpbiBNb3Jp
c3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CiAKICAgICAgICAgW1dURl0gTGlrZWx5RGVuc2VV
bnNpZ25lZEludGVnZXJTZXQ6OmFkZCBjYW4gY2F1c2UgYSByZWluZGV4aW5nIG9mIHRoZSBlbnRp
cmUgYml0IHZlY3RvciB3aXRoIGV2ZXJ5IGNhbGwgaW4gdGhlIHdvcnN0IGNhc2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkdQVS9DaGFuZ2VMb2cKaW5k
ZXggOGIxNjE3NzJhMWFmNDIzODM1MzJkODNlMjJhZjI0ZWVkZTQ4MzZjNi4uMWJlYjk3ZDVmMWQ2
NGI2MzA0NmNhNjA1YmZhOTliYWJhMTEzMmExOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkdQVS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAor
MjAyMi0wMy0wOCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisg
ICAgICAgIOKYgu+4jyBbV2ViR1BVXSBSb3VuZC10cmlwIGRhdGEgdGhyb3VnaCBHUFVCdWZmZXIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzU4Mwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViR1BV
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViR1BVL0FkYXB0ZXIubW06
CisgICAgICAgIChXZWJHUFU6OkFkYXB0ZXI6OnJlcXVlc3REZXZpY2UpOgorICAgICAgICAod2dw
dUFkYXB0ZXJSZXF1ZXN0RGV2aWNlKToKKyAgICAgICAgKHdncHVBZGFwdGVyUmVxdWVzdERldmlj
ZVdpdGhCbG9jayk6CisgICAgICAgICogV2ViR1BVL0J1ZmZlci5oOgorICAgICAgICAoV2ViR1BV
OjpCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgICogV2ViR1BVL0J1ZmZlci5tbToKKyAgICAgICAg
KFdlYkdQVTo6aXNOb3RNdWx0aXBsZU9mUG93ZXJPZlR3byk6CisgICAgICAgIChXZWJHUFU6OnZh
bGlkYXRlRGVzY3JpcHRvcik6CisgICAgICAgIChXZWJHUFU6OnZhbGlkYXRlQ3JlYXRlQnVmZmVy
KToKKyAgICAgICAgKFdlYkdQVTo6c3RvcmFnZU1vZGUpOgorICAgICAgICAoV2ViR1BVOjpEZXZp
Y2U6OmNyZWF0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJHUFU6OkJ1ZmZlcjo6QnVmZmVyKToKKyAg
ICAgICAgKFdlYkdQVTo6QnVmZmVyOjpkZXN0cm95KToKKyAgICAgICAgKFdlYkdQVTo6QnVmZmVy
OjpnZXRDb25zdE1hcHBlZFJhbmdlKToKKyAgICAgICAgKFdlYkdQVTo6QnVmZmVyOjp2YWxpZGF0
ZUdldE1hcHBlZFJhbmdlKToKKyAgICAgICAgKFdlYkdQVTo6QnVmZmVyOjpnZXRNYXBwZWRSYW5n
ZSk6CisgICAgICAgIChXZWJHUFU6OkJ1ZmZlcjo6dmFsaWRhdGVNYXBBc3luYyk6CisgICAgICAg
IChXZWJHUFU6OkJ1ZmZlcjo6bWFwQXN5bmMpOgorICAgICAgICAoV2ViR1BVOjpCdWZmZXI6OnZh
bGlkYXRlVW5tYXApOgorICAgICAgICAoV2ViR1BVOjpCdWZmZXI6OnVubWFwKToKKyAgICAgICAg
KiBXZWJHUFUvRGV2aWNlLmg6CisgICAgICAgICogV2ViR1BVL0RldmljZS5tbToKKyAgICAgICAg
KFdlYkdQVTo6RGV2aWNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViR1BVOjpEZXZpY2U6OkRldmlj
ZSk6CisgICAgICAgIChXZWJHUFU6OkRldmljZTo6Z2V0UXVldWUpOgorICAgICAgICAod2dwdURl
dmljZUdldFF1ZXVlKToKKyAgICAgICAgKiBXZWJHUFUvUXVldWUuaDoKKyAgICAgICAgKiBXZWJH
UFUvUXVldWUubW06CisgICAgICAgIChXZWJHUFU6OlF1ZXVlOjpvblN1Ym1pdHRlZFdvcmtEb25l
KToKKwogMjAyMi0wMy0wOCAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgog
CiAgICAgICAgIFtXR1NMXSBBZGQgZW5vdWdoIG9mIHRoZSBBU1QgZm9yIHRoZSBzaW1wbGVzdCBz
aGFkZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9SYW5nZS5oIGIvU291cmNlL1dURi93
dGYvUmFuZ2UuaAppbmRleCBhOTZiZjlhMDYxYzcxMmZiM2NmYTYzMWJhNGM5OGIzYTEwODZmYTFh
Li5mNGVjYzdjNWQ2OTNiNmI2NjFiMmQwNTZkYTNjNjU0MjBiYjU5YjIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9SYW5nZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1JhbmdlLmgKQEAgLTE0
MCwzICsxNDAsNSBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5n
IFdURjo6UmFuZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkdQVS9XZWJHUFUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCBhMDM3YTY0MzJiZDcwMzQyYzcxNjE4MzhiYTllZGY3N2IzOWE4MGUzLi5l
YzE3NWI3OTMwMzUzZDEwMWRjZTJkZTNhYWY1NTE0ZTA2MzEzZWU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM4LDYgKzM4LDkgQEAK
IAkJMUM1QUNBRTcyNzNBNTVFRjAwOTVGOEQ1IC8qIFJlbmRlckJ1bmRsZS5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDNUFDQUU2MjczQTU1RUYwMDk1
RjhENSAvKiBSZW5kZXJCdW5kbGUubW0gKi87IH07CiAJCTFDNUFDQUU5MjczQTU1RkQwMDk1RjhE
NSAvKiBTYW1wbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUM1QUNBRTgyNzNBNTVGRDAwOTVGOEQ1IC8qIFNhbXBsZXIubW0gKi87IH07CiAJCTFD
NUFDQUVCMjczQTU2MEQwMDk1RjhENSAvKiBUZXh0dXJlVmlldy5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDNUFDQUVBMjczQTU2MEQwMDk1RjhENSAv
KiBUZXh0dXJlVmlldy5tbSAqLzsgfTsKKwkJMUM3RTQyODEyN0Q4ODA4ODAwQTZEMERBIC8qIFV0
aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUM3RTQyODAyN0Q4ODA4ODAwQTZEMERBIC8qIFV0aWxpdGllcy5oICovOyB9OworCQkxQzdFNDI4
NDI3RDg4MjcyMDBBNkQwREEgLyogQ29tbWFuZHNNaXhpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM3RTQyODMyN0Q4ODI3MjAwQTZEMERBIC8qIENv
bW1hbmRzTWl4aW4uaCAqLzsgfTsKKwkJMUM3RTQyODYyN0Q4ODQwQjAwQTZEMERBIC8qIENvbW1h
bmRzTWl4aW4ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQzdFNDI4NTI3RDg4NDBCMDBBNkQwREEgLyogQ29tbWFuZHNNaXhpbi5tbSAqLzsgfTsKIAkJ
MUNCQUIwOTIyNzE4Q0NBMDAwNjA4MEJCIC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayBpbiBG
cmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQkFCMDkxMjcx
OENDQTAwMDYwODBCQiAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgKi87IH07CiAJCTFDRUJE
N0U3MjcxNkFGQkEwMEE1MjU0RCAvKiBXZWJHUFUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDRUJEN0U2MjcxNkFGQkEwMEE1MjU0RCAvKiBXZWJHUFUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJCTFDRUJE
N0Y4MjcxNkIzNDQwMEE1MjU0RCAvKiBXR1NMLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0VCRDdGNzI3MTZCMzQ0MDBBNTI1NEQgLyogV0dTTC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKQEAgLTQ4LDEzICs1
MSwxMSBAQAogCQkzMzhCQjJEMjI3QjZCNjNGMDBFMDY2QUIgLyogU291cmNlU3Bhbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzM4QkIyRDEyN0I2QjYz
RjAwRTA2NkFCIC8qIFNvdXJjZVNwYW4uaCAqLzsgfTsKIAkJMzM4QkIyRDQyN0I2QjY2QzAwRTA2
NkFCIC8qIExleGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzMzhCQjJEMzI3QjZCNjZDMDBFMDY2QUIgLyogTGV4ZXIuaCAqLzsgfTsKIAkJMzM4QkIy
RDYyN0I2QjY4NzAwRTA2NkFCIC8qIExleGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzOEJCMkQ1MjdCNkI2ODcwMEUwNjZBQiAvKiBMZXhlci5j
cHAgKi87IH07Ci0JCUREMDVBMzVDMjdCRjA5QzYwMDk2RUZBQiAvKiBsaWJXVEYuYSBpbiBQcm9k
dWN0IERlcGVuZGVuY2llcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0VC
RDgyOTI3MTZDQUU3MDBBNTI1NEQgLyogbGliV1RGLmEgKi87IH07CiAJCTMzRUExODVFMjdCQzE5
NEYwMEExREQ1MiAvKiBBU1ROb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAzM0VBMTg1RDI3QkMxOTRGMDBBMURENTIgLyogQVNUTm9kZS5oICovOyB9
OwogCQkzM0VBMTg2MDI3QkMxOTgxMDBBMURENTIgLyogR2xvYmFsRGlyZWN0aXZlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzM0VBMTg1RjI3QkMxOTgx
MDBBMURENTIgLyogR2xvYmFsRGlyZWN0aXZlLmggKi87IH07CiAJCTMzRUExODYyMjdCQzE5QzEw
MEExREQ1MiAvKiBHbG9iYWxEZWNsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAzM0VBMTg2MTI3QkMxOUMxMDBBMURENTIgLyogR2xvYmFsRGVjbC5oICov
OyB9OwogCQkzM0VBMTg2NDI3QkMxQTFEMDBBMURENTIgLyogR2xvYmFsVmFyaWFibGVEZWNsLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzM0VBMTg2MzI3
QkMxQTFEMDBBMURENTIgLyogR2xvYmFsVmFyaWFibGVEZWNsLmggKi87IH07CiAJCTMzRUExODY2
MjdCQzFBRDUwMEExREQ1MiAvKiBDb21waWxhdGlvbk1lc3NhZ2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzRUExODY1MjdCQzFBRDUwMEExREQ1MiAv
KiBDb21waWxhdGlvbk1lc3NhZ2UuaCAqLzsgfTsKLQkJMzNFQTE4NjgyN0JDMUIxNDAwQTFERDUy
IC8qIENvbXBpbGF0aW9uTWVzc2FnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAzM0VBMTg2NzI3QkMxQjE0MDBBMURENTIgLyogQ29tcGlsYXRpb25N
ZXNzYWdlLmNwcCAqLzsgfTsKIAkJMzNFQTE4NkEyN0JDMUJFNjAwQTFERDUyIC8qIEF0dHJpYnV0
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzNFQTE4
NjkyN0JDMUJFNjAwQTFERDUyIC8qIEF0dHJpYnV0ZS5oICovOyB9OwogCQkzM0VBMTg2QzI3QkMx
Q0JDMDBBMURENTIgLyogRXhwcmVzc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMzNFQTE4NkIyN0JDMUNCQzAwQTFERDUyIC8qIEV4cHJlc3Npb24u
aCAqLzsgfTsKIAkJMzNFQTE4NkUyN0JDMUQ0QzAwQTFERDUyIC8qIFR5cGVEZWNsLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzM0VBMTg2RDI3QkMxRDRD
MDBBMURENTIgLyogVHlwZURlY2wuaCAqLzsgfTsKQEAgLTcwLDYgKzcxLDcgQEAKIAkJMzNFQTE4
ODQyN0JDMjY4NjAwQTFERDUyIC8qIFN0cnVjdHVyZUFjY2Vzcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzNFQTE4ODMyN0JDMjY4NjAwQTFERDUyIC8q
IFN0cnVjdHVyZUFjY2Vzcy5oICovOyB9OwogCQkzM0VBMTg4NjI3QkMyNkRGMDBBMURENTIgLyog
VHlwZUNvbnZlcnNpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDMzRUExODg1MjdCQzI2REYwMEExREQ1MiAvKiBUeXBlQ29udmVyc2lvbi5oICovOyB9
OwogCQkzM0VBMTg4ODI3QkMzNjFFMDBBMURENTIgLyogTGl0ZXJhbEV4cHJlc3Npb25zLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzM0VBMTg4NzI3QkMz
NjFFMDBBMURENTIgLyogTGl0ZXJhbEV4cHJlc3Npb25zLmggKi87IH07CisJCUREMDVBMzVDMjdC
RjA5QzYwMDk2RUZBQiAvKiBsaWJXVEYuYSBpbiBQcm9kdWN0IERlcGVuZGVuY2llcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0VCRDgyOTI3MTZDQUU3MDBBNTI1NEQgLyog
bGliV1RGLmEgKi87IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAogLyogQmVn
aW4gUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KQEAgLTE3NCw2ICsxNzYsOSBAQAog
CQkxQzVBQ0FFNjI3M0E1NUVGMDA5NUY4RDUgLyogUmVuZGVyQnVuZGxlLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gUmVuZGVyQnVuZGxlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkxQzVBQ0FFODI3M0E1NUZEMDA5NUY4RDUgLyogU2FtcGxlci5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFNhbXBsZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDNUFDQUVB
MjczQTU2MEQwMDk1RjhENSAvKiBUZXh0dXJlVmlldy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFRleHR1cmVWaWV3Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzdFNDI4MDI3
RDg4MDg4MDBBNkQwREEgLyogVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFV0aWxpdGllcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzdFNDI4MzI3RDg4MjcyMDBBNkQwREEg
LyogQ29tbWFuZHNNaXhpbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21tYW5kc01peGluLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDN0U0Mjg1MjdEODg0MEIwMEE2RDBEQSAvKiBDb21t
YW5kc01peGluLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ29tbWFuZHNNaXhpbi5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNCQUIwOTEyNzE4Q0NBMDAwNjA4MEJCIC8qIEph
dmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBwYXRoID0gSmF2YVNjcmlwdENvcmUu
ZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQkxQ0MwQzhD
OTI3M0E3RDg5MDBEMEI0ODEgLyogV2ViR1BVLm1vZHVsZW1hcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9ICJzb3VyY2Vjb2RlLm1vZHVsZS1tYXAiOyBw
YXRoID0gV2ViR1BVLm1vZHVsZW1hcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUND
MEM4Q0EyNzNBODE5MTAwRDBCNDgxIC8qIFZlcnNpb24ueGNjb25maWcgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0g
VmVyc2lvbi54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMxOCw2ICsz
MjMsOCBAQAogCQkJCTFDNUFDQUUyMjczQTU1Q0QwMDk1RjhENSAvKiBDb21tYW5kQnVmZmVyLm1t
ICovLAogCQkJCTFDNUFDQTlFMjczQTQyNkQwMDk1RjhENSAvKiBDb21tYW5kRW5jb2Rlci5oICov
LAogCQkJCTFDNUFDQUFCMjczQTQyNkQwMDk1RjhENSAvKiBDb21tYW5kRW5jb2Rlci5tbSAqLywK
KwkJCQkxQzdFNDI4MzI3RDg4MjcyMDBBNkQwREEgLyogQ29tbWFuZHNNaXhpbi5oICovLAorCQkJ
CTFDN0U0Mjg1MjdEODg0MEIwMEE2RDBEQSAvKiBDb21tYW5kc01peGluLm1tICovLAogCQkJCTFD
NUFDQUFBMjczQTQyNkQwMDk1RjhENSAvKiBDb21wdXRlUGFzc0VuY29kZXIuaCAqLywKIAkJCQkx
QzVBQ0FBODI3M0E0MjZEMDA5NUY4RDUgLyogQ29tcHV0ZVBhc3NFbmNvZGVyLm1tICovLAogCQkJ
CTFDNUFDQUE3MjczQTQyNkQwMDk1RjhENSAvKiBDb21wdXRlUGlwZWxpbmUuaCAqLywKQEAgLTM1
NCw2ICszNjEsNyBAQAogCQkJCTFDNUFDQUIxMjczQTQyNkQwMDk1RjhENSAvKiBUZXh0dXJlLm1t
ICovLAogCQkJCTFDNUFDQUREMjczQTRGM0QwMDk1RjhENSAvKiBUZXh0dXJlVmlldy5oICovLAog
CQkJCTFDNUFDQUVBMjczQTU2MEQwMDk1RjhENSAvKiBUZXh0dXJlVmlldy5tbSAqLywKKwkJCQkx
QzdFNDI4MDI3RDg4MDg4MDBBNkQwREEgLyogVXRpbGl0aWVzLmggKi8sCiAJCQkJMUNFQkQ3RTYy
NzE2QUZCQTAwQTUyNTREIC8qIFdlYkdQVS5oICovLAogCQkJCTFDQzBDOEM5MjczQTdEODkwMEQw
QjQ4MSAvKiBXZWJHUFUubW9kdWxlbWFwICovLAogCQkJCTFDNUFDQUQyMjczQTRDODYwMDk1RjhE
NSAvKiBXZWJHUFVFeHQuaCAqLywKQEAgLTM2NSwxMCArMzczLDkgQEAKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMzNFQTE4NUMyN0JDMTkzRDAwQTFERDUyIC8qIEFT
VCAqLywKLQkJCQkxQ0VCRDgwNDI3MTZCRkFCMDBBNTI1NEQgLyogY29uZmlnLmggKi8sCi0JCQkJ
MzNFQTE4NjUyN0JDMUFENTAwQTFERDUyIC8qIENvbXBpbGF0aW9uTWVzc2FnZS5oICovLAogCQkJ
CTMzRUExODY3MjdCQzFCMTQwMEExREQ1MiAvKiBDb21waWxhdGlvbk1lc3NhZ2UuY3BwICovLAot
CQkJCTMzOEJCMkQzMjdCNkI2NkMwMEUwNjZBQiAvKiBMZXhlci5oICovLAorCQkJCTMzRUExODY1
MjdCQzFBRDUwMEExREQ1MiAvKiBDb21waWxhdGlvbk1lc3NhZ2UuaCAqLywKKwkJCQkxQ0VCRDgw
NDI3MTZCRkFCMDBBNTI1NEQgLyogY29uZmlnLmggKi8sCiAJCQkJMzM4QkIyRDUyN0I2QjY4NzAw
RTA2NkFCIC8qIExleGVyLmNwcCAqLywKIAkJCQkzMzhCQjJEMzI3QjZCNjZDMDBFMDY2QUIgLyog
TGV4ZXIuaCAqLywKIAkJCQkzMzhCQjJEMTI3QjZCNjNGMDBFMDY2QUIgLyogU291cmNlU3Bhbi5o
ICovLApAQCAtNDEyLDE3ICs0MTksMTcgQEAKIAkJMzNFQTE4NUMyN0JDMTkzRDAwQTFERDUyIC8q
IEFTVCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMzNF
QTE4N0MyN0JDMjQ2MDAwQTFERDUyIC8qIEV4cHJlc3Npb25zICovLAorCQkJCTMzRUExODc3MjdC
QzIyOUEwMEExREQ1MiAvKiBTdGF0ZW1lbnRzICovLAogCQkJCTMzRUExODVEMjdCQzE5NEYwMEEx
REQ1MiAvKiBBU1ROb2RlLmggKi8sCiAJCQkJMzNFQTE4NjkyN0JDMUJFNjAwQTFERDUyIC8qIEF0
dHJpYnV0ZS5oICovLAogCQkJCTMzRUExODZCMjdCQzFDQkMwMEExREQ1MiAvKiBFeHByZXNzaW9u
LmggKi8sCi0JCQkJMzNFQTE4N0MyN0JDMjQ2MDAwQTFERDUyIC8qIEV4cHJlc3Npb25zICovLAog
CQkJCTMzRUExODc1MjdCQzIxNkIwMEExREQ1MiAvKiBGdW5jdGlvbkRlY2wuaCAqLywKLQkJCQkz
M0VBMTg1RjI3QkMxOTgxMDBBMURENTIgLyogR2xvYmFsRGlyZWN0aXZlLmggKi8sCiAJCQkJMzNF
QTE4NjEyN0JDMTlDMTAwQTFERDUyIC8qIEdsb2JhbERlY2wuaCAqLywKKwkJCQkzM0VBMTg1RjI3
QkMxOTgxMDBBMURENTIgLyogR2xvYmFsRGlyZWN0aXZlLmggKi8sCiAJCQkJMzNFQTE4NjMyN0JD
MUExRDAwQTFERDUyIC8qIEdsb2JhbFZhcmlhYmxlRGVjbC5oICovLAogCQkJCTMzRUExODZGMjdC
QzFFOEEwMEExREQ1MiAvKiBTaGFkZXJNb2R1bGUuaCAqLywKIAkJCQkzM0VBMTg3ODI3QkMyMkFB
MDBBMURENTIgLyogU3RhdGVtZW50LmggKi8sCi0JCQkJMzNFQTE4NzcyN0JDMjI5QTAwQTFERDUy
IC8qIFN0YXRlbWVudHMgKi8sCiAJCQkJMzNFQTE4NzMyN0JDMjA0OTAwQTFERDUyIC8qIFN0cnVj
dHVyZURlY2wuaCAqLywKIAkJCQkzM0VBMTg2RDI3QkMxRDRDMDBBMURENTIgLyogVHlwZURlY2wu
aCAqLywKIAkJCQkzM0VBMTg3MTI3QkMxRkUxMDBBMURENTIgLyogVmFyaWFibGVRdWFsaWZpZXIu
aCAqLywKQEAgLTQ0NCw5ICs0NTEsOSBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKIAkJCQkzM0VBMTg4MTI3QkMyNUQwMDBBMURENTIgLyogSWRlbnRpZmllckV4cHJlc3Np
b24uaCAqLywKKwkJCQkzM0VBMTg4NzI3QkMzNjFFMDBBMURENTIgLyogTGl0ZXJhbEV4cHJlc3Np
b25zLmggKi8sCiAJCQkJMzNFQTE4ODMyN0JDMjY4NjAwQTFERDUyIC8qIFN0cnVjdHVyZUFjY2Vz
cy5oICovLAogCQkJCTMzRUExODg1MjdCQzI2REYwMEExREQ1MiAvKiBUeXBlQ29udmVyc2lvbi5o
ICovLAotCQkJCTMzRUExODg3MjdCQzM2MUUwMEExREQ1MiAvKiBMaXRlcmFsRXhwcmVzc2lvbnMu
aCAqLywKIAkJCSk7CiAJCQlwYXRoID0gRXhwcmVzc2lvbnM7CiAJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwpAQCAtNDU5LDYgKzQ2Niw4IEBACiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgz
NjQ3OwogCQkJZmlsZXMgPSAoCiAJCQkJMUM1QUNBRDcyNzNBNEQ3MDAwOTVGOEQ1IC8qIEJpbmRH
cm91cC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUM3RTQyODQyN0Q4ODI3MjAwQTZEMERBIC8qIENv
bW1hbmRzTWl4aW4uaCBpbiBIZWFkZXJzICovLAorCQkJCTFDN0U0MjgxMjdEODgwODgwMEE2RDBE
QSAvKiBVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDRUJEN0U3MjcxNkFGQkEwMEE1
MjU0RCAvKiBXZWJHUFUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDNUFDQUQzMjczQTRDODYwMDk1
RjhENSAvKiBXZWJHUFVFeHQuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKQEAgLTQ2OCwzMCArNDc3
LDMwIEBACiAJCQlpc2EgPSBQQlhIZWFkZXJzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFz
ayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKLQkJCQkzM0VBMTg3OTI3QkMyMkFBMDBBMURE
NTIgLyogU3RhdGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQkzM0VBMTg4MDI3QkMyNEUyMDBB
MURENTIgLyogQXNzaWdubWVudFN0YXRlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzNFQTE4
NUUyN0JDMTk0RjAwQTFERDUyIC8qIEFTVE5vZGUuaCBpbiBIZWFkZXJzICovLAotCQkJCTMzRUEx
ODg2MjdCQzI2REYwMEExREQ1MiAvKiBUeXBlQ29udmVyc2lvbi5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJMzNFQTE4NjQyN0JDMUExRDAwQTFERDUyIC8qIEdsb2JhbFZhcmlhYmxlRGVjbC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMzNFQTE4NkEyN0JDMUJFNjAwQTFERDUyIC8qIEF0dHJpYnV0ZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMzNFQTE4NjYyN0JDMUFENTAwQTFERDUyIC8qIENvbXBpbGF0aW9u
TWVzc2FnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzNFQTE4N0IyN0JDMjMwRTAwQTFERDUyIC8q
IENvbXBvdW5kU3RhdGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQkzM0VBMTg2QzI3QkMxQ0JD
MDBBMURENTIgLyogRXhwcmVzc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzNFQTE4NzYyN0JD
MjE2QjAwQTFERDUyIC8qIEZ1bmN0aW9uRGVjbC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzM4QkIy
RDIyN0I2QjYzRjAwRTA2NkFCIC8qIFNvdXJjZVNwYW4uaCBpbiBIZWFkZXJzICovLAotCQkJCTMz
RUExODY2MjdCQzFBRDUwMEExREQ1MiAvKiBDb21waWxhdGlvbk1lc3NhZ2UuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTMzRUExODcwMjdCQzFFOEEwMEExREQ1MiAvKiBTaGFkZXJNb2R1bGUuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTMzRUExODYyMjdCQzE5QzEwMEExREQ1MiAvKiBHbG9iYWxEZWNsLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkzM0VBMTg2MDI3QkMxOTgxMDBBMURENTIgLyogR2xvYmFsRGly
ZWN0aXZlLmggaW4gSGVhZGVycyAqLywKKwkJCQkzM0VBMTg2NDI3QkMxQTFEMDBBMURENTIgLyog
R2xvYmFsVmFyaWFibGVEZWNsLmggaW4gSGVhZGVycyAqLywKKwkJCQkzM0VBMTg4MjI3QkMyNUQw
MDBBMURENTIgLyogSWRlbnRpZmllckV4cHJlc3Npb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTMz
OEJCMkQ0MjdCNkI2NkMwMEUwNjZBQiAvKiBMZXhlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzNF
QTE4ODgyN0JDMzYxRTAwQTFERDUyIC8qIExpdGVyYWxFeHByZXNzaW9ucy5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJMzM4QkIyQ0UyN0I2QjYwMjAwRTA2NkFCIC8qIFRva2VuLmggaW4gSGVhZGVycyAq
LywKLQkJCQkzM0VBMTg2QzI3QkMxQ0JDMDBBMURENTIgLyogRXhwcmVzc2lvbi5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJMUNFQkQ3RjgyNzE2QjM0NDAwQTUyNTREIC8qIFdHU0wuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTMzRUExODYyMjdCQzE5QzEwMEExREQ1MiAvKiBHbG9iYWxEZWNsLmggaW4gSGVh
ZGVycyAqLywKLQkJCQkzM0VBMTg4MDI3QkMyNEUyMDBBMURENTIgLyogQXNzaWdubWVudFN0YXRl
bWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzNFQTE4N0UyN0JDMjQ5MDAwQTFERDUyIC8qIFJl
dHVyblN0YXRlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzNFQTE4NzAyN0JDMUU4QTAwQTFE
RDUyIC8qIFNoYWRlck1vZHVsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzM4QkIyRDIyN0I2QjYz
RjAwRTA2NkFCIC8qIFNvdXJjZVNwYW4uaCBpbiBIZWFkZXJzICovLAorCQkJCTMzRUExODc5MjdC
QzIyQUEwMEExREQ1MiAvKiBTdGF0ZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTMzRUExODg0
MjdCQzI2ODYwMEExREQ1MiAvKiBTdHJ1Y3R1cmVBY2Nlc3MuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTMzRUExODgyMjdCQzI1RDAwMEExREQ1MiAvKiBJZGVudGlmaWVyRXhwcmVzc2lvbi5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJMzNFQTE4NjAyN0JDMTk4MTAwQTFERDUyIC8qIEdsb2JhbERpcmVjdGl2
ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzNFQTE4NkUyN0JDMUQ0QzAwQTFERDUyIC8qIFR5cGVE
ZWNsLmggaW4gSGVhZGVycyAqLywKIAkJCQkzM0VBMTg3NDI3QkMyMDQ5MDBBMURENTIgLyogU3Ry
dWN0dXJlRGVjbC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzNFQTE4N0UyN0JDMjQ5MDAwQTFERDUy
IC8qIFJldHVyblN0YXRlbWVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzNFQTE4NkEyN0JDMUJF
NjAwQTFERDUyIC8qIEF0dHJpYnV0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzM4QkIyQ0UyN0I2
QjYwMjAwRTA2NkFCIC8qIFRva2VuLmggaW4gSGVhZGVycyAqLywKKwkJCQkzM0VBMTg4NjI3QkMy
NkRGMDBBMURENTIgLyogVHlwZUNvbnZlcnNpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTMzRUEx
ODZFMjdCQzFENEMwMEExREQ1MiAvKiBUeXBlRGVjbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzNF
QTE4NzIyN0JDMUZFMTAwQTFERDUyIC8qIFZhcmlhYmxlUXVhbGlmaWVyLmggaW4gSGVhZGVycyAq
LywKKwkJCQkxQ0VCRDdGODI3MTZCMzQ0MDBBNTI1NEQgLyogV0dTTC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CkBAIC03MDEsNiArNzEwLDcgQEAKIAkJCQkxQzVBQ0FCQjI3M0E0MjZEMDA5NUY4RDUgLyogQnVm
ZmVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUM1QUNBRTMyNzNBNTVDRDAwOTVGOEQ1IC8qIENv
bW1hbmRCdWZmZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQzVBQ0FDOTI3M0E0MjZFMDA5NUY4
RDUgLyogQ29tbWFuZEVuY29kZXIubW0gaW4gU291cmNlcyAqLywKKwkJCQkxQzdFNDI4NjI3RDg4
NDBCMDBBNkQwREEgLyogQ29tbWFuZHNNaXhpbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFDNUFD
QUM2MjczQTQyNkQwMDk1RjhENSAvKiBDb21wdXRlUGFzc0VuY29kZXIubW0gaW4gU291cmNlcyAq
LywKIAkJCQkxQzVBQ0FDMDI3M0E0MjZEMDA5NUY4RDUgLyogQ29tcHV0ZVBpcGVsaW5lLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMUM1QUNBQzEyNzNBNDI2RDAwOTVGOEQ1IC8qIERldmljZS5tbSBp
biBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQWRhcHRlci5t
bSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0FkYXB0ZXIubW0KaW5kZXggZmNhM2IwZGY2MWY4OTJk
ZTlmNjlmYjM4OWRmYzBkN2Q0M2ViYmI0NS4uYmFkYWZjNTY4YTgyZDU3OTRlYWNjZWE2ZmNiNDM4
MjUyY2FjYjJkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQWRhcHRlci5tbQor
KysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9BZGFwdGVyLm1tCkBAIC0xMjIsNyArMTIyLDcgQEAg
dm9pZCBBZGFwdGVyOjpyZXF1ZXN0RGV2aWNlKGNvbnN0IFdHUFVEZXZpY2VEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yLCBXVEY6OkZ1bmN0aW8KIAogICAgIC8vIFNlZSB0aGUgY29tbWVudCBpbiBEZXZp
Y2U6OnNldExhYmVsKCkgYWJvdXQgd2h5IHdlJ3JlIG5vdCBzZXR0aW5nIHRoZSBsYWJlbCBoZXJl
LgogCi0gICAgY2FsbGJhY2soV0dQVVJlcXVlc3REZXZpY2VTdGF0dXNfU3VjY2VzcywgRGV2aWNl
OjpjcmVhdGUobV9kZXZpY2UpLCBudWxscHRyKTsKKyAgICBjYWxsYmFjayhXR1BVUmVxdWVzdERl
dmljZVN0YXR1c19TdWNjZXNzLCBEZXZpY2U6OmNyZWF0ZShtX2RldmljZSwgZGVzY3JpcHRvci5s
YWJlbCksIG51bGxwdHIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJHUFUKQEAgLTE1NSwxMyAr
MTU1LDIxIEBAIGJvb2wgd2dwdUFkYXB0ZXJIYXNGZWF0dXJlKFdHUFVBZGFwdGVyIGFkYXB0ZXIs
IFdHUFVGZWF0dXJlTmFtZSBmZWF0dXJlKQogdm9pZCB3Z3B1QWRhcHRlclJlcXVlc3REZXZpY2Uo
V0dQVUFkYXB0ZXIgYWRhcHRlciwgY29uc3QgV0dQVURldmljZURlc2NyaXB0b3IqIGRlc2NyaXB0
b3IsIFdHUFVSZXF1ZXN0RGV2aWNlQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQqIHVzZXJkYXRhKQog
ewogICAgIGFkYXB0ZXItPmFkYXB0ZXItPnJlcXVlc3REZXZpY2UoKmRlc2NyaXB0b3IsIFtjYWxs
YmFjaywgdXNlcmRhdGFdIChXR1BVUmVxdWVzdERldmljZVN0YXR1cyBzdGF0dXMsIFJlZlB0cjxX
ZWJHUFU6OkRldmljZT4mJiBkZXZpY2UsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpIHsKLSAgICAgICAg
Y2FsbGJhY2soc3RhdHVzLCBkZXZpY2UgPyBuZXcgV0dQVURldmljZUltcGwgeyBkZXZpY2UucmVs
ZWFzZU5vbk51bGwoKSB9IDogbnVsbHB0ciwgbWVzc2FnZSwgdXNlcmRhdGEpOworICAgICAgICBp
ZiAoZGV2aWNlKSB7CisgICAgICAgICAgICBhdXRvJiBxdWV1ZSA9IGRldmljZS0+Z2V0UXVldWUo
KTsKKyAgICAgICAgICAgIGNhbGxiYWNrKHN0YXR1cywgbmV3IFdHUFVEZXZpY2VJbXBsIHsgZGV2
aWNlLnJlbGVhc2VOb25OdWxsKCksIHsgcXVldWUgfSB9LCBtZXNzYWdlLCB1c2VyZGF0YSk7Cisg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgY2FsbGJhY2soc3RhdHVzLCBudWxscHRyLCBtZXNz
YWdlLCB1c2VyZGF0YSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgd2dwdUFkYXB0ZXJSZXF1ZXN0RGV2
aWNlV2l0aEJsb2NrKFdHUFVBZGFwdGVyIGFkYXB0ZXIsIFdHUFVEZXZpY2VEZXNjcmlwdG9yIGNv
bnN0ICogZGVzY3JpcHRvciwgV0dQVVJlcXVlc3REZXZpY2VCbG9ja0NhbGxiYWNrIGNhbGxiYWNr
KQogewogICAgIGFkYXB0ZXItPmFkYXB0ZXItPnJlcXVlc3REZXZpY2UoKmRlc2NyaXB0b3IsIFtj
YWxsYmFja10gKFdHUFVSZXF1ZXN0RGV2aWNlU3RhdHVzIHN0YXR1cywgUmVmUHRyPFdlYkdQVTo6
RGV2aWNlPiYmIGRldmljZSwgY29uc3QgY2hhciogbWVzc2FnZSkgewotICAgICAgICBjYWxsYmFj
ayhzdGF0dXMsIGRldmljZSA/IG5ldyBXR1BVRGV2aWNlSW1wbCB7IGRldmljZS5yZWxlYXNlTm9u
TnVsbCgpIH0gOiBudWxscHRyLCBtZXNzYWdlKTsKKyAgICAgICAgaWYgKGRldmljZSkgeworICAg
ICAgICAgICAgYXV0byYgcXVldWUgPSBkZXZpY2UtPmdldFF1ZXVlKCk7CisgICAgICAgICAgICBj
YWxsYmFjayhzdGF0dXMsIG5ldyBXR1BVRGV2aWNlSW1wbCB7IGRldmljZS5yZWxlYXNlTm9uTnVs
bCgpLCB7IHF1ZXVlIH0gfSwgbWVzc2FnZSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAg
Y2FsbGJhY2soc3RhdHVzLCBudWxscHRyLCBtZXNzYWdlKTsKICAgICB9KTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0J1ZmZlci5oIGIvU291cmNlL1dlYkdQVS9XZWJHUFUv
QnVmZmVyLmgKaW5kZXggOTUwNjYzMWJlOWEzNmU3YmRiM2E3ZGFlMDc3ODFlZjg4OTg2NTQwOS4u
ZjJiZDlkOGM0MTc0OWM0MzNkZGFkYWViYzIyZTRmNzNlNjE2ZjYzZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkdQVS9XZWJHUFUvQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQnVm
ZmVyLmgKQEAgLTI1LDE5ICsyNSwyNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2ltcG9ydCA8dXRp
bGl0eT4KICNpbXBvcnQgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW1wb3J0IDx3dGYvRnVuY3Rpb24u
aD4KKyNpbXBvcnQgPHd0Zi9SYW5nZS5oPgorI2ltcG9ydCA8d3RmL1JhbmdlU2V0Lmg+CiAjaW1w
b3J0IDx3dGYvUmVmLmg+CiAjaW1wb3J0IDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2Ug
V2ViR1BVIHsKIAorY2xhc3MgRGV2aWNlOworCiBjbGFzcyBCdWZmZXIgOiBwdWJsaWMgUmVmQ291
bnRlZDxCdWZmZXI+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmPEJ1ZmZlcj4gY3JlYXRlKGlkPE1UTEJ1ZmZlcj4gYnVmZmVyKQorICAgIGVu
dW0gY2xhc3MgU3RhdGUgOiB1aW50OF90OworICAgIHVzaW5nIE1hcHBpbmdSYW5nZSA9IHN0ZDo6
cGFpcjxzaXplX3QsIHNpemVfdD47CisKKyAgICBzdGF0aWMgUmVmPEJ1ZmZlcj4gY3JlYXRlKGlk
PE1UTEJ1ZmZlcj4gYnVmZmVyLCB1aW50NjRfdCBzaXplLCBXR1BVQnVmZmVyVXNhZ2VGbGFncyB1
c2FnZSwgU3RhdGUgaW5pdGlhbFN0YXRlLCBNYXBwaW5nUmFuZ2UgaW5pdGlhbE1hcHBpbmdSYW5n
ZSwgRGV2aWNlJiBkZXZpY2UpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBC
dWZmZXIoYnVmZmVyKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJ1ZmZlcihidWZm
ZXIsIHNpemUsIHVzYWdlLCBpbml0aWFsU3RhdGUsIGluaXRpYWxNYXBwaW5nUmFuZ2UsIGRldmlj
ZSkpOwogICAgIH0KIAogICAgIH5CdWZmZXIoKTsKQEAgLTQ5LDEyICs1Nyw0MSBAQCBwdWJsaWM6
CiAgICAgdm9pZCB1bm1hcCgpOwogICAgIHZvaWQgc2V0TGFiZWwoY29uc3QgY2hhciopOwogCisg
ICAgLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8jYnVmZmVyLXN0YXRlCisgICAg
Ly8gRWFjaCBHUFVCdWZmZXIgaGFzIGEgY3VycmVudCBidWZmZXIgc3RhdGUgb24gdGhlIENvbnRl
bnQgdGltZWxpbmUgd2hpY2ggaXMgb25lIG9mIHRoZSBmb2xsb3dpbmc6CisgICAgZW51bSBjbGFz
cyBTdGF0ZSA6IHVpbnQ4X3QgeworICAgICAgICBNYXBwZWQsIC8vICJ3aGVyZSB0aGUgR1BVQnVm
ZmVyIGlzIGF2YWlsYWJsZSBmb3IgQ1BVIG9wZXJhdGlvbnMgb24gaXRzIGNvbnRlbnQuIgorICAg
ICAgICBNYXBwZWRBdENyZWF0aW9uLCAvLyAid2hlcmUgdGhlIEdQVUJ1ZmZlciB3YXMganVzdCBj
cmVhdGVkIGFuZCBpcyBhdmFpbGFibGUgZm9yIENQVSBvcGVyYXRpb25zIG9uIGl0cyBjb250ZW50
LiIKKyAgICAgICAgTWFwcGluZ1BlbmRpbmcsIC8vICJ3aGVyZSB0aGUgR1BVQnVmZmVyIGlzIGJl
aW5nIG1hZGUgYXZhaWxhYmxlIGZvciBDUFUgb3BlcmF0aW9ucyBvbiBpdHMgY29udGVudC4iCisg
ICAgICAgIFVubWFwcGVkLCAvLyAid2hlcmUgdGhlIEdQVUJ1ZmZlciBpcyBhdmFpbGFibGUgZm9y
IEdQVSBvcGVyYXRpb25zLiIKKyAgICAgICAgRGVzdHJveWVkLCAvLyAid2hlcmUgdGhlIEdQVUJ1
ZmZlciBpcyBubyBsb25nZXIgYXZhaWxhYmxlIGZvciBhbnkgb3BlcmF0aW9ucyBleGNlcHQgZGVz
dHJveS4iCisgICAgfTsKKwogICAgIGlkPE1UTEJ1ZmZlcj4gYnVmZmVyKCkgY29uc3QgeyByZXR1
cm4gbV9idWZmZXI7IH0KKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsg
fQorICAgIFdHUFVCdWZmZXJVc2FnZUZsYWdzIHVzYWdlKCkgY29uc3QgeyByZXR1cm4gbV91c2Fn
ZTsgfQogCiBwcml2YXRlOgotICAgIEJ1ZmZlcihpZDxNVExCdWZmZXI+KTsKKyAgICBCdWZmZXIo
aWQ8TVRMQnVmZmVyPiwgdWludDY0X3Qgc2l6ZSwgV0dQVUJ1ZmZlclVzYWdlRmxhZ3MsIFN0YXRl
IGluaXRpYWxTdGF0ZSwgTWFwcGluZ1JhbmdlIGluaXRpYWxNYXBwaW5nUmFuZ2UsIERldmljZSYp
OworCisgICAgYm9vbCB2YWxpZGF0ZUdldE1hcHBlZFJhbmdlKHNpemVfdCBvZmZzZXQsIHNpemVf
dCByYW5nZVNpemUpIGNvbnN0OworICAgIGJvb2wgdmFsaWRhdGVNYXBBc3luYyhXR1BVTWFwTW9k
ZUZsYWdzLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgcmFuZ2VTaXplKSBjb25zdDsKKyAgICBib29s
IHZhbGlkYXRlVW5tYXAoKSBjb25zdDsKIAogICAgIGlkPE1UTEJ1ZmZlcj4gbV9idWZmZXIgeyBu
aWwgfTsKKworICAgIC8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIvI2J1ZmZlci1p
bnRlcmZhY2UKKyAgICAvLyAiR1BVQnVmZmVyIGhhcyB0aGUgZm9sbG93aW5nIGludGVybmFsIHNs
b3RzOiIKKyAgICBzaXplX3QgbV9zaXplIHsgMCB9OyAvLyAiVGhlIGxlbmd0aCBvZiB0aGUgR1BV
QnVmZmVyIGFsbG9jYXRpb24gaW4gYnl0ZXMuIgorICAgIFdHUFVCdWZmZXJVc2FnZUZsYWdzIG1f
dXNhZ2UgeyAwIH07IC8vICJUaGUgYWxsb3dlZCB1c2FnZXMgZm9yIHRoaXMgR1BVQnVmZmVyLiIK
KyAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6OlVubWFwcGVkIH07IC8vICJUaGUgY3VycmVudCBz
dGF0ZSBvZiB0aGUgR1BVQnVmZmVyLiIKKyAgICAvLyAiW1ttYXBwaW5nXV0gb2YgdHlwZSBBcnJh
eUJ1ZmZlciBvciBQcm9taXNlIG9yIG51bGwuIiBUaGlzIGlzIHVubmVjZXNzYXJ5OyB3ZSBjYW4g
anVzdCB1c2UgbV9kZXZpY2UuY29udGVudHMuCisgICAgTWFwcGluZ1JhbmdlIG1fbWFwcGluZ1Jh
bmdlIHsgMCwgMCB9OyAvLyAiW1ttYXBwaW5nX3JhbmdlXV0gb2YgdHlwZSBsaXN0PHVuc2lnbmVk
IGxvbmcgbG9uZz4gb3IgbnVsbC4iCisgICAgdXNpbmcgTWFwcGVkUmFuZ2VzID0gUmFuZ2VTZXQ8
UmFuZ2U8c2l6ZV90Pj47CisgICAgTWFwcGVkUmFuZ2VzIG1fbWFwcGVkUmFuZ2VzOyAvLyAiW1tt
YXBwZWRfcmFuZ2VzXV0gb2YgdHlwZSBsaXN0PEFycmF5QnVmZmVyPiBvciBudWxsLiIKKyAgICBX
R1BVTWFwTW9kZUZsYWdzIG1fbWFwTW9kZSB7IFdHUFVNYXBNb2RlX05vbmUgfTsgLy8gIlRoZSBH
UFVNYXBNb2RlRmxhZ3Mgb2YgdGhlIGxhc3QgY2FsbCB0byBtYXBBc3luYygpIChpZiBhbnkpLiIK
KworICAgIFJlZjxEZXZpY2U+IG1fZGV2aWNlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViR1BV
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CdWZmZXIubW0gYi9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9CdWZmZXIubW0KaW5kZXggNjFhZGE3OWFhZDgyZTkzZGJhYzRjN2ExNzk3OTQ3
MzRiYWQxZGIwMy4uZjIxMDY3M2ExMGQ0MmIzOTNmN2QyMzI0NjgyOGUxY2Q1NTY1MGVhYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQnVmZmVyLm1tCisrKyBiL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL0J1ZmZlci5tbQpAQCAtMjcsMTcgKzI3LDEyNSBAQAogI2ltcG9ydCAiQnVmZmVy
LmgiCiAKICNpbXBvcnQgIkRldmljZS5oIgorI2ltcG9ydCAiVXRpbGl0aWVzLmgiCisjaW1wb3J0
IDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJHUFUgewogCitzdGF0aWMgYm9v
bCB2YWxpZGF0ZURlc2NyaXB0b3IoY29uc3QgRGV2aWNlJiBkZXZpY2UsIGNvbnN0IFdHUFVCdWZm
ZXJEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQoreworICAgIFVOVVNFRF9QQVJBTShkZXZpY2UpOwor
CisgICAgLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8jYWJzdHJhY3Qtb3BkZWYt
dmFsaWRhdGluZy1ncHVidWZmZXJkZXNjcmlwdG9yCisKKyAgICAvLyBGSVhNRTogIklmIGRldmlj
ZSBpcyBsb3N0IHJldHVybiBmYWxzZS4iCisKKyAgICAvLyBGSVhNRTogIklmIGFueSBvZiB0aGUg
Yml0cyBvZiBkZXNjcmlwdG9y4oCZcyB1c2FnZSBhcmVu4oCZdCBwcmVzZW50IGluIHRoaXMgZGV2
aWNl4oCZcyBbW2FsbG93ZWQgYnVmZmVyIHVzYWdlc11dIHJldHVybiBmYWxzZS4iCisKKyAgICAv
LyAiSWYgYm90aCB0aGUgTUFQX1JFQUQgYW5kIE1BUF9XUklURSBiaXRzIG9mIGRlc2NyaXB0b3Li
gJlzIHVzYWdlIGF0dHJpYnV0ZSBhcmUgc2V0LCByZXR1cm4gZmFsc2UuIgorICAgIGlmICgoZGVz
Y3JpcHRvci51c2FnZSAmIFdHUFVCdWZmZXJVc2FnZV9NYXBSZWFkKSAmJiAoZGVzY3JpcHRvci51
c2FnZSAmIFdHUFVCdWZmZXJVc2FnZV9NYXBXcml0ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgYm9vbCB2YWxpZGF0ZUNyZWF0ZUJ1ZmZl
cihjb25zdCBEZXZpY2UmIGRldmljZSwgY29uc3QgV0dQVUJ1ZmZlckRlc2NyaXB0b3ImIGRlc2Ny
aXB0b3IpCit7CisgICAgLy8gRklYTUU6ICJ0aGlzIGlzIGEgdmFsaWQgR1BVRGV2aWNlLiIKKwor
ICAgIC8vICJ2YWxpZGF0aW5nIEdQVUJ1ZmZlckRlc2NyaXB0b3IodGhpcywgZGVzY3JpcHRvcikg
cmV0dXJucyB0cnVlLiIKKyAgICBpZiAoIXZhbGlkYXRlRGVzY3JpcHRvcihkZXZpY2UsIGRlc2Ny
aXB0b3IpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyAiZGVzY3JpcHRvci51c2Fn
ZSBtdXN0IG5vdCBiZSAwLiIKKyAgICBpZiAoIWRlc2NyaXB0b3IudXNhZ2UpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIC8vIEZJWE1FOiAiZGVzY3JpcHRvci51c2FnZSBpcyBhIHN1YnNl
dCBvZiB0aGlzLltbYWxsb3dlZCBidWZmZXIgdXNhZ2VzXV0uIgorCisgICAgLy8gIklmIGRlc2Ny
aXB0b3IudXNhZ2UgY29udGFpbnMgTUFQX1JFQUQ6IGRlc2NyaXB0b3IudXNhZ2UgY29udGFpbnMg
bm8gb3RoZXIgZmxhZ3MgZXhjZXB0IENPUFlfRFNULiIKKyAgICBpZiAoKGRlc2NyaXB0b3IudXNh
Z2UgJiBXR1BVQnVmZmVyVXNhZ2VfTWFwUmVhZCkKKyAgICAgICAgJiYgKGRlc2NyaXB0b3IudXNh
Z2UgJiB+V0dQVUJ1ZmZlclVzYWdlX0NvcHlEc3QgJiB+V0dQVUJ1ZmZlclVzYWdlX01hcFJlYWQp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyAiSWYgZGVzY3JpcHRvci51c2FnZSBj
b250YWlucyBNQVBfV1JJVEU6IGRlc2NyaXB0b3IudXNhZ2UgY29udGFpbnMgbm8gb3RoZXIgZmxh
Z3MgZXhjZXB0IENPUFlfU1JDLiIKKyAgICBpZiAoKGRlc2NyaXB0b3IudXNhZ2UgJiBXR1BVQnVm
ZmVyVXNhZ2VfTWFwV3JpdGUpCisgICAgICAgICYmIChkZXNjcmlwdG9yLnVzYWdlICYgfldHUFVC
dWZmZXJVc2FnZV9Db3B5U3JjICYgfldHUFVCdWZmZXJVc2FnZV9NYXBXcml0ZSkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIC8vICJJZiBkZXNjcmlwdG9yLm1hcHBlZEF0Q3JlYXRpb24g
aXMgdHJ1ZTogZGVzY3JpcHRvci5zaXplIGlzIGEgbXVsdGlwbGUgb2YgNC4iCisgICAgaWYgKGRl
c2NyaXB0b3IubWFwcGVkQXRDcmVhdGlvbiAmJiBpc05vdE11bHRpcGxlT2ZQb3dlck9mVHdvKGRl
c2NyaXB0b3Iuc2l6ZSwgNCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0
cnVlOworfQorCitzdGF0aWMgTVRMU3RvcmFnZU1vZGUgc3RvcmFnZU1vZGUoYm9vbCBkZXZpY2VI
YXNVbmlmaWVkTWVtb3J5LCBXR1BVQnVmZmVyVXNhZ2VGbGFncyB1c2FnZSkKK3sKKyAgICBpZiAo
ZGV2aWNlSGFzVW5pZmllZE1lbW9yeSkKKyAgICAgICAgcmV0dXJuIE1UTFN0b3JhZ2VNb2RlU2hh
cmVkOworICAgIC8vIE9uIGRpc2NyZXRlIG1lbW9yeSBHUFVzLCBtYXBwYWJsZSBtZW1vcnkgaXMg
c2hhcmVkLCB3aGVyZWFzIG5vbi1tYXBwYWJsZSBtZW1vcnkgaXMgcHJpdmF0ZS4KKyAgICAvLyBU
aGVyZSBpcyBubyBzaXR1YXRpb24gd2hlcmUgd2UnbGwgdXNlIHRoZSBtYW5hZ2VkIHN0b3JhZ2Ug
bW9kZS4KKyAgICBpZiAoKHVzYWdlICYgV0dQVUJ1ZmZlclVzYWdlX01hcFJlYWQpIHx8ICh1c2Fn
ZSAmIFdHUFVCdWZmZXJVc2FnZV9NYXBXcml0ZSkpCisgICAgICAgIHJldHVybiBNVExTdG9yYWdl
TW9kZVNoYXJlZDsKKyAgICByZXR1cm4gTVRMU3RvcmFnZU1vZGVQcml2YXRlOworfQorCiBSZWZQ
dHI8QnVmZmVyPiBEZXZpY2U6OmNyZWF0ZUJ1ZmZlcihjb25zdCBXR1BVQnVmZmVyRGVzY3JpcHRv
ciYgZGVzY3JpcHRvcikKIHsKLSAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7Ci0gICAgcmV0
dXJuIEJ1ZmZlcjo6Y3JlYXRlKG5pbCk7CisgICAgaWYgKGRlc2NyaXB0b3IubmV4dEluQ2hhaW4p
CisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHVi
LmlvL2dwdXdlYi8jZG9tLWdwdWRldmljZS1jcmVhdGVidWZmZXIKKworICAgIC8vICJJZiBhbnkg
b2YgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSB1bnNhdGlzZmllZCwgcmV0dXJuIGFuIGVy
cm9yIGJ1ZmZlciBhbmQgc3RvcC4iCisgICAgaWYgKCF2YWxpZGF0ZUNyZWF0ZUJ1ZmZlcigqdGhp
cywgZGVzY3JpcHRvcikpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgLy8gRklYTUU6
IFVzZSBoZWFwIGFsbG9jYXRpb24gdG8gbWFrZSB0aGlzIGZhc3Rlci4KKyAgICAvLyBJZi93aGVu
IHdlIGRvIHRoYXQsIHdlIGhhdmUgdG8gbWFrZSBzdXJlIHRoYXQgIm5ldyIgYnVmZmVycyBnZXQg
Y2xlYXJlZCB0byAwLgorICAgIC8vIEZJWE1FOiBDb25zaWRlciB3cml0ZS1jb21iaW5pbmcgQ1BV
IGNhY2hlIG1vZGUuCisgICAgLy8gRklYTUU6IENvbnNpZGVyIGltcGxlbWVudGluZyBoYXphcmQg
dHJhY2tpbmcgb3Vyc2VsZi4KKyAgICBNVExTdG9yYWdlTW9kZSBzdG9yYWdlTW9kZSA9IFdlYkdQ
VTo6c3RvcmFnZU1vZGUobV9oYXNVbmlmaWVkTWVtb3J5LCBkZXNjcmlwdG9yLnVzYWdlKTsKKyAg
ICBpZDxNVExCdWZmZXI+IGJ1ZmZlciA9IFttX2RldmljZSBuZXdCdWZmZXJXaXRoTGVuZ3RoOmRl
c2NyaXB0b3Iuc2l6ZSBvcHRpb25zOnN0b3JhZ2VNb2RlXTsKKyAgICBpZiAoIWJ1ZmZlcikKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBidWZmZXIubGFiZWwgPSBbTlNTdHJpbmcgc3Ry
aW5nV2l0aENTdHJpbmc6ZGVzY3JpcHRvci5sYWJlbCBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNv
ZGluZ107CisKKyAgICAvLyBGSVhNRTogSGFuZGxlIGRlc2NyaXB0b3IubWFwcGVkQXRDcmVhdGlv
bi4KKyAgICAvLyBCZWNhdXNlIG5vbi1tYXBwYWJsZSBidWZmZXJzIGNhbiBiZSBtYXBwZWQgYXQg
Y3JlYXRpb24sCisgICAgLy8gdGhpcyBtZWFucyB3ZSBoYXZlIHRvIGhhdmUgYSB0ZW1wb3Jhcnkg
YnVmZmVyIG1hcHBlZCwKKyAgICAvLyBhbmQgd2UgY2FuIHRvIHNjaGVkdWxlIGEgY29weSBjb21t
YW5kIHdoZW4gaXQgZ2V0cyB1bm1hcHBlZCwKKyAgICAvLyBwcmVzdW1hYmx5IGF0IGZpcnN0IHVz
ZS4KKworICAgIC8vICJMZXQgYiBiZSBhIG5ldyBHUFVCdWZmZXIgb2JqZWN0LiIKKyAgICAvLyAi
U2V0IGIuW1tzaXplXV0gdG8gZGVzY3JpcHRvci5zaXplLiIKKyAgICAvLyAiU2V0IGIuW1t1c2Fn
ZV1dIHRvIGRlc2NyaXB0b3IudXNhZ2UuIgorCisgICAgLy8gIklmIGRlc2NyaXB0b3IubWFwcGVk
QXRDcmVhdGlvbiBpcyB0cnVlOiIKKyAgICBpZiAoZGVzY3JpcHRvci5tYXBwZWRBdENyZWF0aW9u
KSB7CisgICAgICAgIC8vICJTZXQgYi5bW21hcHBpbmddXSB0byBhIG5ldyBBcnJheUJ1ZmZlciBv
ZiBzaXplIGIuW1tzaXplXV0uIiBUaGlzIGlzIHVubmVjZXNzYXJ5LgorICAgICAgICAvLyAiU2V0
IGIuW1ttYXBwaW5nX3JhbmdlXV0gdG8gWzAsIGRlc2NyaXB0b3Iuc2l6ZV0uIgorICAgICAgICAv
LyAiU2V0IGIuW1ttYXBwZWRfcmFuZ2VzXV0gdG8gW10uIgorICAgICAgICAvLyAiU2V0IGIuW1tz
dGF0ZV1dIHRvIG1hcHBlZCBhdCBjcmVhdGlvbi4iCisgICAgICAgIHJldHVybiBCdWZmZXI6OmNy
ZWF0ZShidWZmZXIsIGRlc2NyaXB0b3Iuc2l6ZSwgZGVzY3JpcHRvci51c2FnZSwgQnVmZmVyOjpT
dGF0ZTo6TWFwcGVkQXRDcmVhdGlvbiwgc3RkOjptYWtlX3BhaXIoc3RhdGljX2Nhc3Q8c2l6ZV90
PigwKSwgZGVzY3JpcHRvci5zaXplKSwgKnRoaXMpOworICAgIH0KKworICAgIC8vICJTZXQgYi5b
W21hcHBpbmddXSB0byBudWxsLiIgVGhpcyBpcyB1bm5lY2Vzc2FyeS4KKyAgICAvLyAiU2V0IGIu
W1ttYXBwaW5nX3JhbmdlXV0gdG8gbnVsbC4iCisgICAgLy8gIlNldCBiLltbbWFwcGVkX3Jhbmdl
c11dIHRvIG51bGwuIgorICAgIC8vICJTZXQgYi5bW3N0YXRlXV0gdG8gdW5tYXBwZWQuIgorICAg
IHJldHVybiBCdWZmZXI6OmNyZWF0ZShidWZmZXIsIGRlc2NyaXB0b3Iuc2l6ZSwgZGVzY3JpcHRv
ci51c2FnZSwgQnVmZmVyOjpTdGF0ZTo6VW5tYXBwZWQsIHN0ZDo6bWFrZV9wYWlyKHN0YXRpY19j
YXN0PHNpemVfdD4oMCksIHN0YXRpY19jYXN0PHNpemVfdD4oMCkpLCAqdGhpcyk7CiB9CiAKLUJ1
ZmZlcjo6QnVmZmVyKGlkPE1UTEJ1ZmZlcj4gYnVmZmVyKQorQnVmZmVyOjpCdWZmZXIoaWQ8TVRM
QnVmZmVyPiBidWZmZXIsIHVpbnQ2NF90IHNpemUsIFdHUFVCdWZmZXJVc2FnZUZsYWdzIHVzYWdl
LCBTdGF0ZSBpbml0aWFsU3RhdGUsIE1hcHBpbmdSYW5nZSBpbml0aWFsTWFwcGluZ1JhbmdlLCBE
ZXZpY2UmIGRldmljZSkKICAgICA6IG1fYnVmZmVyKGJ1ZmZlcikKKyAgICAsIG1fc2l6ZShzaXpl
KQorICAgICwgbV91c2FnZSh1c2FnZSkKKyAgICAsIG1fc3RhdGUoaW5pdGlhbFN0YXRlKQorICAg
ICwgbV9tYXBwaW5nUmFuZ2UoaW5pdGlhbE1hcHBpbmdSYW5nZSkKKyAgICAsIG1fZGV2aWNlKGRl
dmljZSkKIHsKIH0KIApAQCAtNDUsMzIgKzE1MywyMzIgQEAgQnVmZmVyOjp+QnVmZmVyKCkgPSBk
ZWZhdWx0OwogCiB2b2lkIEJ1ZmZlcjo6ZGVzdHJveSgpCiB7CisgICAgLy8gaHR0cHM6Ly9ncHV3
ZWIuZ2l0aHViLmlvL2dwdXdlYi8jZG9tLWdwdWJ1ZmZlci1kZXN0cm95CisKKyAgICAvLyAiSWYg
dGhlIHRoaXMuW1tzdGF0ZV1dIGlzIG5vdCBlaXRoZXIgb2YgdW5tYXBwZWQgb3IgZGVzdHJveWVk
OiBSdW4gdGhlIHN0ZXBzIHRvIHVubWFwIHRoaXMuIgorICAgIGlmIChtX3N0YXRlICE9IFN0YXRl
OjpVbm1hcHBlZCAmJiBtX3N0YXRlICE9IFN0YXRlOjpEZXN0cm95ZWQpIHsKKyAgICAgICAgLy8g
RklYTUU6IEFTU0VSVCgpIHRoYXQgdGhpcyBjYWxsIGRvZXNuJ3QgZmFpbC4KKyAgICAgICAgdW5t
YXAoKTsKKyAgICB9CisKKyAgICAvLyAiU2V0IHRoaXMuW1tzdGF0ZV1dIHRvIGRlc3Ryb3llZC4i
CisgICAgbV9zdGF0ZSA9IFN0YXRlOjpEZXN0cm95ZWQ7CisKKyAgICBtX2J1ZmZlciA9IG5pbDsK
IH0KIAogY29uc3Qgdm9pZCogQnVmZmVyOjpnZXRDb25zdE1hcHBlZFJhbmdlKHNpemVfdCBvZmZz
ZXQsIHNpemVfdCBzaXplKQogewotICAgIFVOVVNFRF9QQVJBTShvZmZzZXQpOwotICAgIFVOVVNF
RF9QQVJBTShzaXplKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gZ2V0TWFwcGVk
UmFuZ2Uob2Zmc2V0LCBzaXplKTsKK30KKworYm9vbCBCdWZmZXI6OnZhbGlkYXRlR2V0TWFwcGVk
UmFuZ2Uoc2l6ZV90IG9mZnNldCwgc2l6ZV90IHJhbmdlU2l6ZSkgY29uc3QKK3sKKyAgICAvLyAi
dGhpcy5bW3N0YXRlXV0gaXMgbWFwcGVkIG9yIG1hcHBlZCBhdCBjcmVhdGlvbi4iCisgICAgaWYg
KG1fc3RhdGUgIT0gU3RhdGU6Ok1hcHBlZCAmJiBtX3N0YXRlICE9IFN0YXRlOjpNYXBwZWRBdENy
ZWF0aW9uKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyAib2Zmc2V0IGlzIGEgbXVs
dGlwbGUgb2YgOC4iCisgICAgaWYgKGlzTm90TXVsdGlwbGVPZlBvd2VyT2ZUd28ob2Zmc2V0LCA4
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gInJhbmdlU2l6ZSBpcyBhIG11bHRp
cGxlIG9mIDQuIgorICAgIGlmIChpc05vdE11bHRpcGxlT2ZQb3dlck9mVHdvKG9mZnNldCwgOCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vICJvZmZzZXQgaXMgZ3JlYXRlciB0aGFu
IG9yIGVxdWFsIHRvIHRoaXMuW1ttYXBwaW5nX3JhbmdlXV1bMF0uIgorICAgIGlmIChvZmZzZXQg
PCBtX21hcHBpbmdSYW5nZS5maXJzdCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8g
Im9mZnNldCArIHJhbmdlU2l6ZSBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhpcy5bW21hcHBp
bmdfcmFuZ2VdXVsxXS4iCisgICAgLy8gRklYTUU6IFVzZWQgY2hlY2tlZCBhcml0aG1ldGljLgor
ICAgIGlmIChvZmZzZXQgKyByYW5nZVNpemUgPiBtX21hcHBpbmdSYW5nZS5zZWNvbmQpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vICJbb2Zmc2V0LCBvZmZzZXQgKyByYW5nZVNpemUp
IGRvZXMgbm90IG92ZXJsYXAgYW5vdGhlciByYW5nZSBpbiB0aGlzLltbbWFwcGVkX3Jhbmdlc11d
LiIKKyAgICBpZiAobV9tYXBwZWRSYW5nZXMub3ZlcmxhcHMoeyBvZmZzZXQsIG9mZnNldCArIHJh
bmdlU2l6ZSB9KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7CiB9
CiAKIHZvaWQqIEJ1ZmZlcjo6Z2V0TWFwcGVkUmFuZ2Uoc2l6ZV90IG9mZnNldCwgc2l6ZV90IHNp
emUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKG9mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNpemUp
OwotICAgIHJldHVybiBudWxscHRyOworICAgIC8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9n
cHV3ZWIvI2RvbS1ncHVidWZmZXItZ2V0bWFwcGVkcmFuZ2UKKworICAgIC8vICJJZiBzaXplIGlz
IG1pc3Npbmc6IExldCByYW5nZVNpemUgYmUgbWF4KDAsIHRoaXMuW1tzaXplXV0gLSBvZmZzZXQp
LiIKKyAgICAvLyBGSVhNRTogVXNlIGNoZWNrZWQgYXJpdGhtZXRpYy4KKyAgICBhdXRvIHJhbmdl
U2l6ZSA9IHNpemU7CisgICAgaWYgKHNpemUgPT0gV0dQVV9XSE9MRV9NQVBfU0laRSkKKyAgICAg
ICAgcmFuZ2VTaXplID0gc3RkOjptYXgoc3RhdGljX2Nhc3Q8c2l6ZV90PigwKSwgbV9zaXplIC0g
b2Zmc2V0KTsKKworICAgIC8vICJJZiBhbnkgb2YgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZSB1bnNhdGlzZmllZCIKKyAgICBpZiAoIXZhbGlkYXRlR2V0TWFwcGVkUmFuZ2Uob2Zmc2V0LCBy
YW5nZVNpemUpKSB7CisgICAgICAgIC8vIEZJWE1FOiAidGhyb3cgYW4gT3BlcmF0aW9uRXJyb3Ig
YW5kIHN0b3AuIgorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICAvLyAiTGV0
IG0gYmUgYSBuZXcgQXJyYXlCdWZmZXIgb2Ygc2l6ZSByYW5nZVNpemUgcG9pbnRpbmcgYXQgdGhl
IGNvbnRlbnQgb2YgdGhpcy5bW21hcHBpbmddXSBhdCBvZmZzZXQgb2Zmc2V0IC0gdGhpcy5bW21h
cHBpbmdfcmFuZ2VdXVswXS4iCisKKyAgICAvLyAiQXBwZW5kIG0gdG8gdGhpcy5bW21hcHBlZF9y
YW5nZXNdXS4iCisgICAgbV9tYXBwZWRSYW5nZXMuYWRkKHsgb2Zmc2V0LCBvZmZzZXQgKyByYW5n
ZVNpemUgfSk7CisKKyAgICAvLyAiUmV0dXJuIG0uIgorICAgIHJldHVybiBzdGF0aWNfY2FzdDxj
aGFyKj4obV9idWZmZXIuY29udGVudHMpICsgb2Zmc2V0OworfQorCitib29sIEJ1ZmZlcjo6dmFs
aWRhdGVNYXBBc3luYyhXR1BVTWFwTW9kZUZsYWdzIG1vZGUsIHNpemVfdCBvZmZzZXQsIHNpemVf
dCByYW5nZVNpemUpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6ICJ0aGlzIGlzIGEgdmFsaWQgR1BV
QnVmZmVyLiBUT0RPOiBjaGVjayBkZXN0cm95ZWQgc3RhdGU/IgorCisgICAgLy8gIm9mZnNldCBp
cyBhIG11bHRpcGxlIG9mIDguIgorICAgIGlmIChpc05vdE11bHRpcGxlT2ZQb3dlck9mVHdvKG9m
ZnNldCwgOCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vICJyYW5nZVNpemUgaXMg
YSBtdWx0aXBsZSBvZiA0LiIKKyAgICBpZiAoaXNOb3RNdWx0aXBsZU9mUG93ZXJPZlR3byhyYW5n
ZVNpemUsIDQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyAib2Zmc2V0ICsgcmFu
Z2VTaXplIGlzIGxlc3Mgb3IgZXF1YWwgdG8gdGhpcy5bW3NpemVdXSIKKyAgICAvLyBGSVhNRTog
VXNlIGNoZWNrZWQgYXJpdGhtZXRpYy4KKyAgICBpZiAob2Zmc2V0ICsgcmFuZ2VTaXplID4gbV9z
aXplKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyAidGhpcy5bW3N0YXRlXV0gaXMg
dW5tYXBwZWQiCisgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OlVubWFwcGVkKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICAvLyAibW9kZSBjb250YWlucyBleGFjdGx5IG9uZSBvZiBSRUFE
IG9yIFdSSVRFLiIKKyAgICBhdXRvIHJlYWRXcml0ZU1vZGVGbGFncyA9IG1vZGUgJiAoV0dQVU1h
cE1vZGVfUmVhZCB8IFdHUFVNYXBNb2RlX1dyaXRlKTsKKyAgICBpZiAocmVhZFdyaXRlTW9kZUZs
YWdzICE9IFdHUFVNYXBNb2RlX1JlYWQgJiYgcmVhZFdyaXRlTW9kZUZsYWdzICE9IFdHUFVNYXBN
b2RlX1dyaXRlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyAiSWYgbW9kZSBjb250
YWlucyBSRUFEIHRoZW4gdGhpcy5bW3VzYWdlXV0gbXVzdCBjb250YWluIE1BUF9SRUFELiIKKyAg
ICBpZiAoKG1vZGUgJiBXR1BVTWFwTW9kZV9SZWFkKSAmJiAhKG1fdXNhZ2UgJiBXR1BVQnVmZmVy
VXNhZ2VfTWFwUmVhZCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vICJJZiBtb2Rl
IGNvbnRhaW5zIFdSSVRFIHRoZW4gdGhpcy5bW3VzYWdlXV0gbXVzdCBjb250YWluIE1BUF9XUklU
RS4iCisgICAgaWYgKChtb2RlICYgV0dQVU1hcE1vZGVfV3JpdGUpICYmICEobV91c2FnZSAmIFdH
UFVCdWZmZXJVc2FnZV9NYXBXcml0ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJl
dHVybiB0cnVlOwogfQogCiB2b2lkIEJ1ZmZlcjo6bWFwQXN5bmMoV0dQVU1hcE1vZGVGbGFncyBt
b2RlLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3Qgc2l6ZSwgV1RGOjpGdW5jdGlvbjx2b2lkKFdHUFVC
dWZmZXJNYXBBc3luY1N0YXR1cyk+JiYgY2FsbGJhY2spCiB7Ci0gICAgVU5VU0VEX1BBUkFNKG1v
ZGUpOwotICAgIFVOVVNFRF9QQVJBTShvZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzaXplKTsK
LSAgICBVTlVTRURfUEFSQU0oY2FsbGJhY2spOworICAgIC8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1
Yi5pby9ncHV3ZWIvI2RvbS1ncHVidWZmZXItbWFwYXN5bmMKKworICAgIC8vICJJZiBzaXplIGlz
IG1pc3Npbmc6IExldCByYW5nZVNpemUgYmUgbWF4KDAsIHRoaXMuW1tzaXplXV0gLSBvZmZzZXQp
LiIKKyAgICAvLyBGSVhNRTogVXNlIGNoZWNrZWQgYXJpdGhtZXRpYy4KKyAgICBhdXRvIHJhbmdl
U2l6ZSA9IHNpemU7CisgICAgaWYgKHNpemUgPT0gV0dQVV9XSE9MRV9NQVBfU0laRSkKKyAgICAg
ICAgcmFuZ2VTaXplID0gc3RkOjptYXgoc3RhdGljX2Nhc3Q8c2l6ZV90PigwKSwgbV9zaXplIC0g
b2Zmc2V0KTsKKworICAgIC8vICJJZiBhbnkgb2YgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZSB1bnNhdGlzZmllZDoiCisgICAgaWYgKCF2YWxpZGF0ZU1hcEFzeW5jKG1vZGUsIG9mZnNldCwg
cmFuZ2VTaXplKSkgeworICAgICAgICAvLyBGSVhNRTogIlJlY29yZCBhIHZhbGlkYXRpb24gZXJy
b3Igb24gdGhlIGN1cnJlbnQgc2NvcGUuIgorCisgICAgICAgIC8vICJSZXR1cm4gYSBwcm9taXNl
IHJlamVjdGVkIHdpdGggYW4gT3BlcmF0aW9uRXJyb3Igb24gdGhlIERldmljZSB0aW1lbGluZS4i
CisgICAgICAgIGNhbGxiYWNrKFdHUFVCdWZmZXJNYXBBc3luY1N0YXR1c19FcnJvcik7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyAiU2V0IHRoaXMuW1ttYXBwaW5nXV0gdG8gcC4i
CisKKyAgICAvLyAiU2V0IHRoaXMuW1tzdGF0ZV1dIHRvIG1hcHBpbmcgcGVuZGluZy4iCisgICAg
bV9zdGF0ZSA9IFN0YXRlOjpNYXBwaW5nUGVuZGluZzsKKworICAgIC8vICJTZXQgdGhpcy5bW21h
cF9tb2RlXV0gdG8gbW9kZS4iCisgICAgbV9tYXBNb2RlID0gbW9kZTsKKworICAgIC8vICJFbnF1
ZXVlIGFuIG9wZXJhdGlvbiBvbiB0aGUgZGVmYXVsdCBxdWV1ZeKAmXMgUXVldWUgdGltZWxpbmUg
dGhhdCB3aWxsIGV4ZWN1dGUgdGhlIGZvbGxvd2luZzoiCisgICAgbV9kZXZpY2UtPmdldFF1ZXVl
KCkub25TdWJtaXR0ZWRXb3JrRG9uZSgwLCBbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0s
IG9mZnNldCwgcmFuZ2VTaXplLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoV0dQVVF1
ZXVlV29ya0RvbmVTdGF0dXMgc3RhdHVzKSB7CisgICAgICAgIC8vICJJZiB0aGlzLltbc3RhdGVd
XSBpcyBtYXBwaW5nIHBlbmRpbmc6IgorICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+bV9zdGF0
ZSA9PSBTdGF0ZTo6TWFwcGluZ1BlbmRpbmcpIHsKKyAgICAgICAgICAgIC8vICJMZXQgbSBiZSBh
IG5ldyBBcnJheUJ1ZmZlciBvZiBzaXplIHJhbmdlU2l6ZS4iCisKKyAgICAgICAgICAgIC8vICJT
ZXQgdGhlIGNvbnRlbnQgb2YgbSB0byB0aGUgY29udGVudCBvZiB0aGlz4oCZcyBhbGxvY2F0aW9u
IHN0YXJ0aW5nIGF0IG9mZnNldCBvZmZzZXQgYW5kIGZvciByYW5nZVNpemUgYnl0ZXMuIgorCisg
ICAgICAgICAgICAvLyAiU2V0IHRoaXMuW1ttYXBwaW5nXV0gdG8gbS4iCisKKyAgICAgICAgICAg
IC8vICJTZXQgdGhpcy5bW3N0YXRlXV0gdG8gbWFwcGVkLiIKKyAgICAgICAgICAgIHByb3RlY3Rl
ZFRoaXMtPm1fc3RhdGUgPSBTdGF0ZTo6TWFwcGVkOworCisgICAgICAgICAgICAvLyAiU2V0IHRo
aXMuW1ttYXBwaW5nX3JhbmdlXV0gdG8gW29mZnNldCwgb2Zmc2V0ICsgcmFuZ2VTaXplXS4iCisg
ICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX21hcHBpbmdSYW5nZSA9IHN0ZDo6bWFrZV9wYWly
KG9mZnNldCwgb2Zmc2V0ICsgcmFuZ2VTaXplKTsKKworICAgICAgICAgICAgLy8gIlNldCB0aGlz
LltbbWFwcGVkX3Jhbmdlc11dIHRvIFtdLiIKKyAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1f
bWFwcGVkUmFuZ2VzID0gTWFwcGVkUmFuZ2VzKCk7CisgICAgICAgIH0KKworICAgICAgICAvLyAi
UmVzb2x2ZSBwLiIKKyAgICAgICAgc3dpdGNoIChzdGF0dXMpIHsKKyAgICAgICAgY2FzZSBXR1BV
UXVldWVXb3JrRG9uZVN0YXR1c19TdWNjZXNzOgorICAgICAgICAgICAgY2FsbGJhY2soV0dQVUJ1
ZmZlck1hcEFzeW5jU3RhdHVzX1N1Y2Nlc3MpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICBjYXNlIFdHUFVRdWV1ZVdvcmtEb25lU3RhdHVzX0Vycm9yOgorICAgICAgICAgICAgY2FsbGJh
Y2soV0dQVUJ1ZmZlck1hcEFzeW5jU3RhdHVzX0Vycm9yKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgY2FzZSBXR1BVUXVldWVXb3JrRG9uZVN0YXR1c19Vbmtub3duOgorICAgICAgICAg
ICAgY2FsbGJhY2soV0dQVUJ1ZmZlck1hcEFzeW5jU3RhdHVzX1Vua25vd24pOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICBjYXNlIFdHUFVRdWV1ZVdvcmtEb25lU3RhdHVzX0RldmljZUxv
c3Q6CisgICAgICAgICAgICBjYWxsYmFjayhXR1BVQnVmZmVyTWFwQXN5bmNTdGF0dXNfRGV2aWNl
TG9zdCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGNhbGxiYWNrKFdHUFVCdWZmZXJN
YXBBc3luY1N0YXR1c19FcnJvcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICB9KTsKK30KKworYm9vbCBCdWZmZXI6OnZhbGlkYXRlVW5tYXAoKSBjb25zdAoreworICAgIC8v
ICJ0aGlzLltbc3RhdGVdXSBtdXN0IGJlIG1hcHBlZCBhdCBjcmVhdGlvbiwgbWFwcGluZyBwZW5k
aW5nLCBvciBtYXBwZWQuIgorICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpNYXBwZWRBdENyZWF0
aW9uCisgICAgICAgICYmIG1fc3RhdGUgIT0gU3RhdGU6Ok1hcHBpbmdQZW5kaW5nCisgICAgICAg
ICYmIG1fc3RhdGUgIT0gU3RhdGU6Ok1hcHBlZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgQnVmZmVyOjp1bm1hcCgpCiB7CisgICAgLy8gaHR0
cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8jZG9tLWdwdWJ1ZmZlci11bm1hcAorCisgICAg
Ly8gIklmIGFueSBvZiB0aGUgZm9sbG93aW5nIHJlcXVpcmVtZW50cyBhcmUgdW5tZXQiCisgICAg
aWYgKHZhbGlkYXRlVW5tYXAoKSkgeworICAgICAgICAvLyBGSVhNRTogImdlbmVyYXRlIGEgdmFs
aWRhdGlvbiBlcnJvciBhbmQgc3RvcC4iCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAv
LyAiSWYgdGhpcy5bW3N0YXRlXV0gaXMgbWFwcGluZyBwZW5kaW5nOiIKKyAgICBpZiAobV9zdGF0
ZSA9PSBTdGF0ZTo6TWFwcGluZ1BlbmRpbmcpIHsKKyAgICAgICAgLy8gRklYTUU6ICJSZWplY3Qg
W1ttYXBwaW5nXV0gd2l0aCBhbiBBYm9ydEVycm9yLiIKKworICAgICAgICAvLyAiU2V0IHRoaXMu
W1ttYXBwaW5nXV0gdG8gbnVsbC4iCisgICAgfQorCisgICAgLy8gIklmIHRoaXMuW1tzdGF0ZV1d
IGlzIG1hcHBlZCBvciBtYXBwZWQgYXQgY3JlYXRpb246IgorICAgIGlmIChtX3N0YXRlID09IFN0
YXRlOjpNYXBwZWQgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6TWFwcGVkQXRDcmVhdGlvbikgeworICAg
ICAgICAvLyAiSWYgb25lIG9mIHRoZSB0d28gZm9sbG93aW5nIGNvbmRpdGlvbnMgaG9sZHM6Igor
ICAgICAgICAvLyAidGhpcy5bW3N0YXRlXV0gaXMgbWFwcGVkIGF0IGNyZWF0aW9uIgorICAgICAg
ICAvLyAidGhpcy5bW3N0YXRlXV0gaXMgbWFwcGVkIGFuZCB0aGlzLltbbWFwX21vZGVdXSBjb250
YWlucyBXUklURSIKKyAgICAgICAgLy8gIkVucXVldWUgYW4gb3BlcmF0aW9uIG9uIHRoZSBkZWZh
dWx0IHF1ZXVl4oCZcyBRdWV1ZSB0aW1lbGluZSB0aGF0IHVwZGF0ZXMgdGhlIHRoaXMuW1ttYXBw
aW5nX3JhbmdlXV0gb2YgdGhpc+KAmXMgYWxsb2NhdGlvbiB0byB0aGUgY29udGVudCBvZiB0aGlz
LltbbWFwcGluZ11dLiIKKworICAgICAgICAvLyAiRGV0YWNoIGVhY2ggQXJyYXlCdWZmZXIgaW4g
dGhpcy5bW21hcHBlZF9yYW5nZXNdXSBmcm9tIGl0cyBjb250ZW50LiIKKworICAgICAgICAvLyAi
U2V0IHRoaXMuW1ttYXBwaW5nXV0gdG8gbnVsbC4iCisKKyAgICAgICAgLy8gIlNldCB0aGlzLltb
bWFwcGluZ19yYW5nZV1dIHRvIG51bGwuIgorCisgICAgICAgIC8vICJTZXQgdGhpcy5bW21hcHBl
ZF9yYW5nZXNdXSB0byBudWxsLiIKKyAgICB9CisKKyAgICAvLyAiU2V0IHRoaXMuW1tzdGF0ZV1d
IHRvIHVubWFwcGVkLiIKKyAgICBtX3N0YXRlID0gU3RhdGU6OlVubWFwcGVkOwogfQogCiB2b2lk
IEJ1ZmZlcjo6c2V0TGFiZWwoY29uc3QgY2hhciogbGFiZWwpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rlci5oIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29t
bWFuZEVuY29kZXIuaAppbmRleCBkYzk3MDE1NjdjNmQ3YjZhN2RhNDRkMjMyZDQzMzdjMDNlNTMz
YjJhLi4yNDUzZWRhYmZkMzBmY2I4YzU1MzVjNWIyYjJhNTRmMmMyN2JlNzJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVyLmgKQEAgLTI1LDkgKzI1LDkgQEAKIAogI3ByYWdtYSBv
bmNlCiAKKyNpbXBvcnQgIkNvbW1hbmRzTWl4aW4uaCIKICNpbXBvcnQgPHd0Zi9GYXN0TWFsbG9j
Lmg+CiAjaW1wb3J0IDx3dGYvUmVmLmg+Ci0jaW1wb3J0IDx3dGYvUmVmQ291bnRlZC5oPgogI2lt
cG9ydCA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViR1BVIHsKQEAgLTM4LDcgKzM4LDcg
QEAgY2xhc3MgQ29tcHV0ZVBhc3NFbmNvZGVyOwogY2xhc3MgUXVlcnlTZXQ7CiBjbGFzcyBSZW5k
ZXJQYXNzRW5jb2RlcjsKIAotY2xhc3MgQ29tbWFuZEVuY29kZXIgOiBwdWJsaWMgUmVmQ291bnRl
ZDxDb21tYW5kRW5jb2Rlcj4geworY2xhc3MgQ29tbWFuZEVuY29kZXIgOiBwdWJsaWMgQ29tbWFu
ZHNNaXhpbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFJlZjxDb21tYW5kRW5jb2Rlcj4gY3JlYXRlKGlkPE1UTENvbW1hbmRCdWZmZXI+IGNvbW1h
bmRCdWZmZXIpCkBAIC02Niw3ICs2NiwxMyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIENvbW1h
bmRFbmNvZGVyKGlkPE1UTENvbW1hbmRCdWZmZXI+KTsKIAorICAgIGJvb2wgdmFsaWRhdGVGaW5p
c2goKSBjb25zdDsKKworICAgIHZvaWQgZW5zdXJlQmxpdENvbW1hbmRFbmNvZGVyKCk7CisgICAg
dm9pZCBmaW5hbGl6ZUJsaXRDb21tYW5kRW5jb2RlcigpOworCiAgICAgaWQ8TVRMQ29tbWFuZEJ1
ZmZlcj4gbV9jb21tYW5kQnVmZmVyIHsgbmlsIH07CisgICAgaWQ8TVRMQmxpdENvbW1hbmRFbmNv
ZGVyPiBtX2JsaXRDb21tYW5kRW5jb2RlciB7IG5pbCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViR1BVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rlci5t
bSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVyLm1tCmluZGV4IDY2NDA4NWM1
MDEyZTQ1OWQyZDc2ZGFkYTIzZTlmZmRmYzgyNzc5NjMuLjZiNDhkZTkyODIwZmI3OGEzODNmN2Qz
ZDljZWE3YzI0NWUxODI3ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1h
bmRFbmNvZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVyLm1t
CkBAIC0zMiwxMyArMzIsMjYgQEAKICNpbXBvcnQgIkRldmljZS5oIgogI2ltcG9ydCAiUXVlcnlT
ZXQuaCIKICNpbXBvcnQgIlJlbmRlclBhc3NFbmNvZGVyLmgiCisjaW1wb3J0ICJVdGlsaXRpZXMu
aCIKIAogbmFtZXNwYWNlIFdlYkdQVSB7CiAKIFJlZlB0cjxDb21tYW5kRW5jb2Rlcj4gRGV2aWNl
OjpjcmVhdGVDb21tYW5kRW5jb2Rlcihjb25zdCBXR1BVQ29tbWFuZEVuY29kZXJEZXNjcmlwdG9y
JiBkZXNjcmlwdG9yKQogewotICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKLSAgICByZXR1
cm4gQ29tbWFuZEVuY29kZXI6OmNyZWF0ZShuaWwpOworICAgIGlmIChkZXNjcmlwdG9yLm5leHRJ
bkNoYWluKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIC8vIGh0dHBzOi8vZ3B1d2Vi
LmdpdGh1Yi5pby9ncHV3ZWIvI2RvbS1ncHVkZXZpY2UtY3JlYXRlY29tbWFuZGVuY29kZXIKKwor
ICAgIGF1dG8gKmNvbW1hbmRCdWZmZXJEZXNjcmlwdG9yID0gW01UTENvbW1hbmRCdWZmZXJEZXNj
cmlwdG9yIG5ld107CisgICAgY29tbWFuZEJ1ZmZlckRlc2NyaXB0b3IuZXJyb3JPcHRpb25zID0g
TVRMQ29tbWFuZEJ1ZmZlckVycm9yT3B0aW9uRW5jb2RlckV4ZWN1dGlvblN0YXR1czsKKyAgICBp
ZDxNVExDb21tYW5kQnVmZmVyPiBjb21tYW5kQnVmZmVyID0gW2dldFF1ZXVlKCkuY29tbWFuZFF1
ZXVlKCkgY29tbWFuZEJ1ZmZlcldpdGhEZXNjcmlwdG9yOmNvbW1hbmRCdWZmZXJEZXNjcmlwdG9y
XTsKKyAgICBpZiAoIWNvbW1hbmRCdWZmZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgY29tbWFuZEJ1ZmZlci5sYWJlbCA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ1N0cmluZzpkZXNj
cmlwdG9yLmxhYmVsIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKKworICAgIHJldHVy
biBDb21tYW5kRW5jb2Rlcjo6Y3JlYXRlKGNvbW1hbmRCdWZmZXIpOwogfQogCiBDb21tYW5kRW5j
b2Rlcjo6Q29tbWFuZEVuY29kZXIoaWQ8TVRMQ29tbWFuZEJ1ZmZlcj4gY29tbWFuZEJ1ZmZlcikK
QEAgLTQ4LDYgKzYxLDE4IEBAIENvbW1hbmRFbmNvZGVyOjpDb21tYW5kRW5jb2RlcihpZDxNVExD
b21tYW5kQnVmZmVyPiBjb21tYW5kQnVmZmVyKQogCiBDb21tYW5kRW5jb2Rlcjo6fkNvbW1hbmRF
bmNvZGVyKCkgPSBkZWZhdWx0OwogCit2b2lkIENvbW1hbmRFbmNvZGVyOjplbnN1cmVCbGl0Q29t
bWFuZEVuY29kZXIoKQoreworICAgIGlmICghbV9ibGl0Q29tbWFuZEVuY29kZXIpCisgICAgICAg
IG1fYmxpdENvbW1hbmRFbmNvZGVyID0gW21fY29tbWFuZEJ1ZmZlciBibGl0Q29tbWFuZEVuY29k
ZXJdOworfQorCit2b2lkIENvbW1hbmRFbmNvZGVyOjpmaW5hbGl6ZUJsaXRDb21tYW5kRW5jb2Rl
cigpCit7CisgICAgaWYgKG1fYmxpdENvbW1hbmRFbmNvZGVyKQorICAgICAgICBbbV9ibGl0Q29t
bWFuZEVuY29kZXIgZW5kRW5jb2RpbmddOworfQorCiBSZWZQdHI8Q29tcHV0ZVBhc3NFbmNvZGVy
PiBDb21tYW5kRW5jb2Rlcjo6YmVnaW5Db21wdXRlUGFzcyhjb25zdCBXR1BVQ29tcHV0ZVBhc3NE
ZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsK
QEAgLTYwLDEzICs4NSw3MCBAQCBSZWZQdHI8UmVuZGVyUGFzc0VuY29kZXI+IENvbW1hbmRFbmNv
ZGVyOjpiZWdpblJlbmRlclBhc3MoY29uc3QgV0dQVVJlbmRlclBhc3NEZQogICAgIHJldHVybiBS
ZW5kZXJQYXNzRW5jb2Rlcjo6Y3JlYXRlKG5pbCk7CiB9CiAKK3N0YXRpYyBib29sIHZhbGlkYXRl
Q29weUJ1ZmZlclRvQnVmZmVyKGNvbnN0IEJ1ZmZlciYgc291cmNlLCB1aW50NjRfdCBzb3VyY2VP
ZmZzZXQsIGNvbnN0IEJ1ZmZlciYgZGVzdGluYXRpb24sIHVpbnQ2NF90IGRlc3RpbmF0aW9uT2Zm
c2V0LCB1aW50NjRfdCBzaXplKQoreworICAgIC8vIEZJWE1FOiAic291cmNlIGlzIHZhbGlkIHRv
IHVzZSB3aXRoIHRoaXMuIgorCisgICAgLy8gRklYTUU6ICJkZXN0aW5hdGlvbiBpcyB2YWxpZCB0
byB1c2Ugd2l0aCB0aGlzLiIKKworICAgIC8vICJzb3VyY2UuW1t1c2FnZV1dIGNvbnRhaW5zIENP
UFlfU1JDLiIKKyAgICBpZiAoIShzb3VyY2UudXNhZ2UoKSAmIFdHUFVCdWZmZXJVc2FnZV9Db3B5
U3JjKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gImRlc3RpbmF0aW9uLltbdXNh
Z2VdXSBjb250YWlucyBDT1BZX0RTVC4iCisgICAgaWYgKCEoZGVzdGluYXRpb24udXNhZ2UoKSAm
IFdHUFVCdWZmZXJVc2FnZV9Db3B5RHN0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
Ly8gInNpemUgaXMgYSBtdWx0aXBsZSBvZiA0LiIKKyAgICBpZiAoaXNOb3RNdWx0aXBsZU9mUG93
ZXJPZlR3byhzaXplLCA0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gInNvdXJj
ZU9mZnNldCBpcyBhIG11bHRpcGxlIG9mIDQuIgorICAgIGlmIChpc05vdE11bHRpcGxlT2ZQb3dl
ck9mVHdvKHNvdXJjZU9mZnNldCwgNCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8v
ICJkZXN0aW5hdGlvbk9mZnNldCBpcyBhIG11bHRpcGxlIG9mIDQuIgorICAgIGlmIChpc05vdE11
bHRpcGxlT2ZQb3dlck9mVHdvKGRlc3RpbmF0aW9uT2Zmc2V0LCA0KSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgLy8gRklYTUU6ICIoc291cmNlT2Zmc2V0ICsgc2l6ZSkgZG9lcyBub3Qg
b3ZlcmZsb3cgYSBHUFVTaXplNjQuIgorCisgICAgLy8gRklYTUU6ICIoZGVzdGluYXRpb25PZmZz
ZXQgKyBzaXplKSBkb2VzIG5vdCBvdmVyZmxvdyBhIEdQVVNpemU2NC4iCisKKyAgICAvLyBGSVhN
RTogInNvdXJjZS5bW3NpemVdXSBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gKHNvdXJjZU9m
ZnNldCArIHNpemUpLiIKKyAgICAvLyBGSVhNRTogVXNlIGNoZWNrZWQgYXJpdGhtZXRpYworICAg
IGlmIChzb3VyY2Uuc2l6ZSgpIDwgc291cmNlT2Zmc2V0ICsgc2l6ZSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgLy8gRklYTUU6ICJkZXN0aW5hdGlvbi5bW3NpemVdXSBpcyBncmVhdGVy
IHRoYW4gb3IgZXF1YWwgdG8gKGRlc3RpbmF0aW9uT2Zmc2V0ICsgc2l6ZSkuIgorICAgIC8vIEZJ
WE1FOiBVc2UgY2hlY2tlZCBhcml0aG1ldGljCisgICAgaWYgKGRlc3RpbmF0aW9uLnNpemUoKSA8
IGRlc3RpbmF0aW9uT2Zmc2V0ICsgc2l6ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
Ly8gRklYTUU6ICJzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGFyZSBub3QgdGhlIHNhbWUgR1BVQnVm
ZmVyLiIKKyAgICBpZiAoJnNvdXJjZSA9PSAmZGVzdGluYXRpb24pCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCiB2b2lkIENvbW1hbmRFbmNvZGVyOjpjb3B5
QnVmZmVyVG9CdWZmZXIoY29uc3QgQnVmZmVyJiBzb3VyY2UsIHVpbnQ2NF90IHNvdXJjZU9mZnNl
dCwgY29uc3QgQnVmZmVyJiBkZXN0aW5hdGlvbiwgdWludDY0X3QgZGVzdGluYXRpb25PZmZzZXQs
IHVpbnQ2NF90IHNpemUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHNvdXJjZSk7Ci0gICAgVU5VU0VE
X1BBUkFNKHNvdXJjZU9mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKGRlc3RpbmF0aW9uKTsKLSAg
ICBVTlVTRURfUEFSQU0oZGVzdGluYXRpb25PZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzaXpl
KTsKKyAgICAvLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNkb20tZ3B1Y29tbWFu
ZGVuY29kZXItY29weWJ1ZmZlcnRvYnVmZmVyCisKKyAgICAvLyAiUHJlcGFyZSB0aGUgZW5jb2Rl
ciBzdGF0ZSBvZiB0aGlzLiBJZiBpdCByZXR1cm5zIGZhbHNlLCBzdG9wLiIKKyAgICBpZiAoIXBy
ZXBhcmVUaGVFbmNvZGVyU3RhdGUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gIklmIGFu
eSBvZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIHVuc2F0aXNmaWVkCisgICAgaWYgKHZh
bGlkYXRlQ29weUJ1ZmZlclRvQnVmZmVyKHNvdXJjZSwgc291cmNlT2Zmc2V0LCBkZXN0aW5hdGlv
biwgZGVzdGluYXRpb25PZmZzZXQsIHNpemUpKSB7CisgICAgICAgIC8vIEZJWE1FOiAiZ2VuZXJh
dGUgYSB2YWxpZGF0aW9uIGVycm9yIGFuZCBzdG9wLiIKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGVuc3VyZUJsaXRDb21tYW5kRW5jb2RlcigpOworCisgICAgW21fYmxpdENvbW1hbmRF
bmNvZGVyIGNvcHlGcm9tQnVmZmVyOnNvdXJjZS5idWZmZXIoKSBzb3VyY2VPZmZzZXQ6c3RhdGlj
X2Nhc3Q8TlNVSW50ZWdlcj4oc291cmNlT2Zmc2V0KSB0b0J1ZmZlcjpkZXN0aW5hdGlvbi5idWZm
ZXIoKSBkZXN0aW5hdGlvbk9mZnNldDpkZXN0aW5hdGlvbk9mZnNldCBzaXplOnNpemVdOwogfQog
CiB2b2lkIENvbW1hbmRFbmNvZGVyOjpjb3B5QnVmZmVyVG9UZXh0dXJlKGNvbnN0IFdHUFVJbWFn
ZUNvcHlCdWZmZXImIHNvdXJjZSwgY29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUmIGRlc3RpbmF0
aW9uLCBjb25zdCBXR1BVRXh0ZW50M0QmIGNvcHlTaXplKQpAQCAtOTcsMTAgKzE3OSw1MyBAQCB2
b2lkIENvbW1hbmRFbmNvZGVyOjpjbGVhckJ1ZmZlcihjb25zdCBCdWZmZXImIGJ1ZmZlciwgdWlu
dDY0X3Qgb2Zmc2V0LCB1aW50NjRfdAogICAgIFVOVVNFRF9QQVJBTShzaXplKTsKIH0KIAorYm9v
bCBDb21tYW5kRW5jb2Rlcjo6dmFsaWRhdGVGaW5pc2goKSBjb25zdAoreworICAgIC8vICJMZXQg
dmFsaWRhdGlvblN1Y2NlZWRlZCBiZSB0cnVlIGlmIGFsbCBvZiB0aGUgZm9sbG93aW5nIHJlcXVp
cmVtZW50cyBhcmUgbWV0LCBhbmQgZmFsc2Ugb3RoZXJ3aXNlLiIKKworICAgIC8vIEZJWE1FOiAi
dGhpcyBtdXN0IGJlIHZhbGlkLiIKKworICAgIC8vICJ0aGlzLltbc3RhdGVdXSBtdXN0IGJlICJv
cGVuIi4iCisgICAgaWYgKG1fc3RhdGUgIT0gRW5jb2RlclN0YXRlOjpPcGVuKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICAvLyBGSVhNRTogInRoaXMuW1tkZWJ1Z19ncm91cF9zdGFja11d
IG11c3QgYmUgZW1wdHkuIgorCisgICAgLy8gRklYTUU6ICJFdmVyeSB1c2FnZSBzY29wZSBjb250
YWluZWQgaW4gdGhpcyBtdXN0IHNhdGlzZnkgdGhlIHVzYWdlIHNjb3BlIHZhbGlkYXRpb24uIgor
CisgICAgcmV0dXJuIHRydWU7Cit9CisKIFJlZlB0cjxDb21tYW5kQnVmZmVyPiBDb21tYW5kRW5j
b2Rlcjo6ZmluaXNoKGNvbnN0IFdHUFVDb21tYW5kQnVmZmVyRGVzY3JpcHRvciYgZGVzY3JpcHRv
cikKIHsKLSAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7Ci0gICAgcmV0dXJuIENvbW1hbmRC
dWZmZXI6OmNyZWF0ZShuaWwpOworICAgIGlmIChkZXNjcmlwdG9yLm5leHRJbkNoYWluKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIC8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9n
cHV3ZWIvI2RvbS1ncHVkZXZpY2UtY3JlYXRlYnVmZmVyCisKKyAgICAvLyAiTGV0IHZhbGlkYXRp
b25TdWNjZWVkZWQgYmUgdHJ1ZSBpZiBhbGwgb2YgdGhlIGZvbGxvd2luZyByZXF1aXJlbWVudHMg
YXJlIG1ldCwgYW5kIGZhbHNlIG90aGVyd2lzZS4iCisgICAgYXV0byB2YWxpZGF0aW9uRmFpbGVk
ID0gIXZhbGlkYXRlRmluaXNoKCk7CisKKyAgICAvLyAiU2V0IHRoaXMuW1tzdGF0ZV1dIHRvICJl
bmRlZCIuIgorICAgIG1fc3RhdGUgPSBFbmNvZGVyU3RhdGU6OkVuZGVkOworCisgICAgLy8gIklm
IHZhbGlkYXRpb25TdWNjZWVkZWQgaXMgZmFsc2UsIHRoZW46IgorICAgIGlmICh2YWxpZGF0aW9u
RmFpbGVkKSB7CisgICAgICAgIC8vIEZJWE1FOiAiR2VuZXJhdGUgYSB2YWxpZGF0aW9uIGVycm9y
LiIKKworICAgICAgICAvLyBGSVhNRTogIlJldHVybiBhIG5ldyBpbnZhbGlkIEdQVUNvbW1hbmRC
dWZmZXIuIgorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBmaW5hbGl6ZUJs
aXRDb21tYW5kRW5jb2RlcigpOworCisgICAgLy8gIlNldCBjb21tYW5kQnVmZmVyLltbY29tbWFu
ZF9saXN0XV0gdG8gdGhpcy5bW2NvbW1hbmRzXV0uIgorICAgIGF1dG8gKmNvbW1hbmRCdWZmZXIg
PSBtX2NvbW1hbmRCdWZmZXI7CisgICAgbV9jb21tYW5kQnVmZmVyID0gbmlsOworCisgICAgY29t
bWFuZEJ1ZmZlci5sYWJlbCA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ1N0cmluZzpkZXNjcmlwdG9y
LmxhYmVsIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKKworICAgIHJldHVybiBDb21t
YW5kQnVmZmVyOjpjcmVhdGUoY29tbWFuZEJ1ZmZlcik7CiB9CiAKIHZvaWQgQ29tbWFuZEVuY29k
ZXI6Omluc2VydERlYnVnTWFya2VyKGNvbnN0IGNoYXIqIG1hcmtlckxhYmVsKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZHNNaXhpbi5oIGIvU291cmNlL1dlYkdQVS9X
ZWJHUFUvQ29tbWFuZHNNaXhpbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI4ODU0YzVjYzlkNjhkNDc0NDQwMzli
ZmUzYTEwYjcyNjkwYjAwYTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9Db21tYW5kc01peGluLmgKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoYykg
MjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW1wb3J0IDx3dGYvUmVm
Q291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViR1BVIHsKKworY2xhc3MgQ29tbWFuZHNNaXhpbiA6
IHB1YmxpYyBSZWZDb3VudGVkPENvbW1hbmRzTWl4aW4+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKK3B1YmxpYzoKKworcHJvdGVjdGVkOgorICAgIGJvb2wgcHJlcGFyZVRoZUVuY29k
ZXJTdGF0ZSgpIGNvbnN0OworCisgICAgZW51bSBjbGFzcyBFbmNvZGVyU3RhdGUgOiB1aW50OF90
IHsKKyAgICAgICAgT3BlbiwKKyAgICAgICAgTG9ja2VkLAorICAgICAgICBFbmRlZAorICAgIH07
CisgICAgRW5jb2RlclN0YXRlIG1fc3RhdGUgeyBFbmNvZGVyU3RhdGU6Ok9wZW4gfTsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUv
Q29tbWFuZHNNaXhpbi5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRzTWl4aW4ubW0K
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNzNiY2Y5MGM1ZTAyNDQ0OWEwMWU4YTBiZTM1MzcxNDkwNTNiZThlZgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRzTWl4aW4ubW0KQEAg
LTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAyMS0yMDIyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJDb21tYW5kc01peGluLmgiCisK
K25hbWVzcGFjZSBXZWJHUFUgeworCitib29sIENvbW1hbmRzTWl4aW46OnByZXBhcmVUaGVFbmNv
ZGVyU3RhdGUoKSBjb25zdAoreworICAgIHN3aXRjaCAobV9zdGF0ZSkgeworICAgIGNhc2UgRW5j
b2RlclN0YXRlOjpPcGVuOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjYXNlIEVuY29kZXJT
dGF0ZTo6TG9ja2VkOgorICAgICAgICAvLyBGSVhNRTogIk1ha2UgZW5jb2RlciBpbnZhbGlkIgor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgY2FzZSBFbmNvZGVyU3RhdGU6OkVuZGVkOgorICAg
ICAgICAvLyBGSVhNRTogIkdlbmVyYXRlIGEgdmFsaWRhdGlvbiBlcnJvciIKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViR1BVCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9EZXZpY2UuaCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0Rl
dmljZS5oCmluZGV4IDM4NzVlMzEyM2M3NzEwZjYxZDBhMzY5MWQwOGMxYjAwZWY1ZWU4NTAuLmI3
MDljNmM1NzYyNjBkNTIyYWJiZDBlYzZlMDU5MDEwNmQ0NzI3YjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL0RldmljZS5oCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0Rldmlj
ZS5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW1wb3J0ICJRdWV1ZS5o
IgogI2ltcG9ydCA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbXBvcnQgPHd0Zi9GdW5jdGlvbi5oPgog
I2ltcG9ydCA8d3RmL1JlZi5oPgpAQCAtNDcsMTIgKzQ4LDExIEBAIGNsYXNzIFNoYWRlck1vZHVs
ZTsKIGNsYXNzIFN1cmZhY2U7CiBjbGFzcyBTd2FwQ2hhaW47CiBjbGFzcyBUZXh0dXJlOwotY2xh
c3MgUXVldWU7CiAKIGNsYXNzIERldmljZSA6IHB1YmxpYyBSZWZDb3VudGVkPERldmljZT4gewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8
RGV2aWNlPiBjcmVhdGUoaWQ8TVRMRGV2aWNlPik7CisgICAgc3RhdGljIFJlZlB0cjxEZXZpY2U+
IGNyZWF0ZShpZDxNVExEZXZpY2U+LCBjb25zdCBjaGFyKiBkZXZpY2VMYWJlbCk7CiAKICAgICB+
RGV2aWNlKCk7CiAKQEAgLTc0LDcgKzc0LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGVzdHJveSgp
OwogICAgIHNpemVfdCBlbnVtZXJhdGVGZWF0dXJlcyhXR1BVRmVhdHVyZU5hbWUqIGZlYXR1cmVz
KTsKICAgICBib29sIGdldExpbWl0cyhXR1BVU3VwcG9ydGVkTGltaXRzJik7Ci0gICAgUmVmUHRy
PFF1ZXVlPiBnZXRRdWV1ZSgpOworICAgIFF1ZXVlJiBnZXRRdWV1ZSgpOwogICAgIGJvb2wgaGFz
RmVhdHVyZShXR1BVRmVhdHVyZU5hbWUpOwogICAgIGJvb2wgcG9wRXJyb3JTY29wZShXVEY6OkZ1
bmN0aW9uPHZvaWQoV0dQVUVycm9yVHlwZSwgY29uc3QgY2hhciopPiYmIGNhbGxiYWNrKTsKICAg
ICB2b2lkIHB1c2hFcnJvclNjb3BlKFdHUFVFcnJvckZpbHRlcik7CkBAIC04NywxMCArODcsMTIg
QEAgcHJpdmF0ZToKIAogICAgIGlkPE1UTERldmljZT4gbV9kZXZpY2UgeyBuaWwgfTsKICAgICBS
ZWY8UXVldWU+IG1fZGVmYXVsdFF1ZXVlOworICAgIGJvb2wgbV9oYXNVbmlmaWVkTWVtb3J5IHsg
ZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkdQVQogCiBzdHJ1Y3QgV0dQVURldmlj
ZUltcGwgewogICAgIFJlZjxXZWJHUFU6OkRldmljZT4gZGV2aWNlOworICAgIFdHUFVRdWV1ZUlt
cGwgZGVmYXVsdFF1ZXVlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0Rl
dmljZS5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0RldmljZS5tbQppbmRleCBjODNmODQzYzI2
NDdmNzlhZjE2NjIxMTE3NTU0OWM4YzJjMzdkYmJhLi5iMWVhNjliMWZiZDBlODVhMDk4MDZhMGE5
NjZjNzVhYTJlNjBkZGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9EZXZpY2Uu
bW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvRGV2aWNlLm1tCkBAIC00NSwxOSArNDUsMjQg
QEAKIAogbmFtZXNwYWNlIFdlYkdQVSB7CiAKLVJlZlB0cjxEZXZpY2U+IERldmljZTo6Y3JlYXRl
KGlkPE1UTERldmljZT4gZGV2aWNlKQorUmVmUHRyPERldmljZT4gRGV2aWNlOjpjcmVhdGUoaWQ8
TVRMRGV2aWNlPiBkZXZpY2UsIGNvbnN0IGNoYXIqIGRldmljZUxhYmVsKQogewogICAgIGlkPE1U
TENvbW1hbmRRdWV1ZT4gY29tbWFuZFF1ZXVlID0gW2RldmljZSBuZXdDb21tYW5kUXVldWVdOwog
ICAgIGlmICghY29tbWFuZFF1ZXVlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBhdXRv
IHF1ZXVlID0gUXVldWU6OmNyZWF0ZShjb21tYW5kUXVldWUpOwogCisgICAgY29tbWFuZFF1ZXVl
LmxhYmVsID0gQCJEZWZhdWx0IHF1ZXVlIjsKKyAgICBpZiAoZGV2aWNlTGFiZWwgJiYgc3RybGVu
KGRldmljZUxhYmVsKSkKKyAgICAgICAgY29tbWFuZFF1ZXVlLmxhYmVsID0gW05TU3RyaW5nIHN0
cmluZ1dpdGhGb3JtYXQ6QCJEZWZhdWx0IHF1ZXVlIGZvciBkZXZpY2UgJXMiLCBkZXZpY2VMYWJl
bF07CisKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEZXZpY2UoZGV2aWNlLCBXVEZNb3ZlKHF1
ZXVlKSkpOwogfQogCiBEZXZpY2U6OkRldmljZShpZDxNVExEZXZpY2U+IGRldmljZSwgUmVmPFF1
ZXVlPiYmIHF1ZXVlKQogICAgIDogbV9kZXZpY2UoZGV2aWNlKQogICAgICwgbV9kZWZhdWx0UXVl
dWUoV1RGTW92ZShxdWV1ZSkpCisgICAgLCBtX2hhc1VuaWZpZWRNZW1vcnkoZGV2aWNlLmhhc1Vu
aWZpZWRNZW1vcnkpCiB7CiB9CiAKQEAgLTg0LDkgKzg5LDkgQEAgYm9vbCBEZXZpY2U6OmdldExp
bWl0cyhXR1BVU3VwcG9ydGVkTGltaXRzJiBsaW1pdHMpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LVJlZlB0cjxRdWV1ZT4gRGV2aWNlOjpnZXRRdWV1ZSgpCitRdWV1ZSYgRGV2aWNlOjpnZXRRdWV1
ZSgpCiB7Ci0gICAgcmV0dXJuIG1fZGVmYXVsdFF1ZXVlLmNvcHlSZWYoKTsKKyAgICByZXR1cm4g
bV9kZWZhdWx0UXVldWU7CiB9CiAKIGJvb2wgRGV2aWNlOjpoYXNGZWF0dXJlKFdHUFVGZWF0dXJl
TmFtZSkKQEAgLTI1NSw4ICsyNjAsNyBAQCBib29sIHdncHVEZXZpY2VHZXRMaW1pdHMoV0dQVURl
dmljZSBkZXZpY2UsIFdHUFVTdXBwb3J0ZWRMaW1pdHMqIGxpbWl0cykKIAogV0dQVVF1ZXVlIHdn
cHVEZXZpY2VHZXRRdWV1ZShXR1BVRGV2aWNlIGRldmljZSkKIHsKLSAgICBhdXRvIHJlc3VsdCA9
IGRldmljZS0+ZGV2aWNlLT5nZXRRdWV1ZSgpOwotICAgIHJldHVybiByZXN1bHQgPyBuZXcgV0dQ
VVF1ZXVlSW1wbCB7IHJlc3VsdC5yZWxlYXNlTm9uTnVsbCgpIH0gOiBudWxscHRyOworICAgIHJl
dHVybiAmZGV2aWNlLT5kZWZhdWx0UXVldWU7CiB9CiAKIGJvb2wgd2dwdURldmljZUhhc0ZlYXR1
cmUoV0dQVURldmljZSBkZXZpY2UsIFdHUFVGZWF0dXJlTmFtZSBmZWF0dXJlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvUXVldWUuaCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1F1
ZXVlLmgKaW5kZXggYTU5NWE4ZmVhMDkwNTZmNzg5ZTY4YjVhOGUwZTdhMWU1ZjU1MzM2MS4uNzE0
ZGZkNWQ4MjE0YzcyNzFhZTJjZDFlNmU0NmYzYjMzNjdhOGQ2MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkdQVS9XZWJHUFUvUXVldWUuaAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9RdWV1ZS5o
CkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbXBvcnQgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW1wb3J0
IDx3dGYvRnVuY3Rpb24uaD4KKyNpbXBvcnQgPHd0Zi9IYXNoTWFwLmg+CiAjaW1wb3J0IDx3dGYv
UmVmLmg+CiAjaW1wb3J0IDx3dGYvUmVmQ291bnRlZC5oPgogI2ltcG9ydCA8d3RmL1ZlY3Rvci5o
PgpAQCAtMzUsNiArMzYsNyBAQCBuYW1lc3BhY2UgV2ViR1BVIHsKIAogY2xhc3MgQnVmZmVyOwog
Y2xhc3MgQ29tbWFuZEJ1ZmZlcjsKK2NsYXNzIERldmljZTsKIAogY2xhc3MgUXVldWUgOiBwdWJs
aWMgUmVmQ291bnRlZDxRdWV1ZT4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAt
NTIsMTAgKzU0LDE5IEBAIHB1YmxpYzoKICAgICB2b2lkIHdyaXRlVGV4dHVyZShjb25zdCBXR1BV
SW1hZ2VDb3B5VGV4dHVyZSYgZGVzdGluYXRpb24sIGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBk
YXRhU2l6ZSwgY29uc3QgV0dQVVRleHR1cmVEYXRhTGF5b3V0JiwgY29uc3QgV0dQVUV4dGVudDNE
JiB3cml0ZVNpemUpOwogICAgIHZvaWQgc2V0TGFiZWwoY29uc3QgY2hhciopOwogCisgICAgaWQ8
TVRMQ29tbWFuZFF1ZXVlPiBjb21tYW5kUXVldWUoKSBjb25zdCB7IHJldHVybiBtX2NvbW1hbmRR
dWV1ZTsgfQorCiBwcml2YXRlOgogICAgIFF1ZXVlKGlkPE1UTENvbW1hbmRRdWV1ZT4pOwogCisg
ICAgYm9vbCB2YWxpZGF0ZVN1Ym1pdCgpIGNvbnN0OworCiAgICAgaWQ8TVRMQ29tbWFuZFF1ZXVl
PiBtX2NvbW1hbmRRdWV1ZSB7IG5pbCB9OworCisgICAgdWludDY0X3QgbV9zdWJtaXR0ZWRDb21t
YW5kQnVmZmVyQ291bnQgeyAwIH07CisgICAgdWludDY0X3QgbV9jb21wbGV0ZWRDb21tYW5kQnVm
ZmVyQ291bnQgeyAwIH07CisgICAgdXNpbmcgT25TdWJtaXR0ZWRXb3JrRG9uZUNhbGxiYWNrcyA9
IFZlY3RvcjxXVEY6OkZ1bmN0aW9uPHZvaWQoV0dQVVF1ZXVlV29ya0RvbmVTdGF0dXMpPj47Cisg
ICAgSGFzaE1hcDx1aW50NjRfdCwgT25TdWJtaXR0ZWRXb3JrRG9uZUNhbGxiYWNrcz4gbV9vblN1
Ym1pdHRlZFdvcmtEb25lQ2FsbGJhY2tzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViR1BVCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9RdWV1ZS5tbSBiL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL1F1ZXVlLm1tCmluZGV4IGNmZDljYjEyYzA1MjA3MmQ1YzYzNzk4ZmYxMmQwNzc2YjQ4
ZDI3NzUuLjhlYWY0Yzk1NTE2NzBmOTNhMzFhMjI4YmYwYmZhOWMyYzkwNzZhMDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1F1ZXVlLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL1F1ZXVlLm1tCkBAIC0yOCw2ICsyOCw4IEBACiAKICNpbXBvcnQgIkJ1ZmZlci5oIgogI2lt
cG9ydCAiQ29tbWFuZEJ1ZmZlci5oIgorI2ltcG9ydCAiRGV2aWNlLmgiCisjaW1wb3J0ICJJbnN0
YW5jZS5oIgogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIApAQCAtMzgsMTUgKzQwLDU1IEBAIFF1ZXVl
OjpRdWV1ZShpZDxNVExDb21tYW5kUXVldWU+IGNvbW1hbmRRdWV1ZSkKIAogUXVldWU6On5RdWV1
ZSgpID0gZGVmYXVsdDsKIAotdm9pZCBRdWV1ZTo6b25TdWJtaXR0ZWRXb3JrRG9uZSh1aW50NjRf
dCBzaWduYWxWYWx1ZSwgV1RGOjpGdW5jdGlvbjx2b2lkKFdHUFVRdWV1ZVdvcmtEb25lU3RhdHVz
KT4mJiBjYWxsYmFjaykKK3ZvaWQgUXVldWU6Om9uU3VibWl0dGVkV29ya0RvbmUodWludDY0X3Qs
IFdURjo6RnVuY3Rpb248dm9pZChXR1BVUXVldWVXb3JrRG9uZVN0YXR1cyk+JiYgY2FsbGJhY2sp
CiB7Ci0gICAgVU5VU0VEX1BBUkFNKHNpZ25hbFZhbHVlKTsKLSAgICBVTlVTRURfUEFSQU0oY2Fs
bGJhY2spOworICAgIEFTU0VSVChtX3N1Ym1pdHRlZENvbW1hbmRCdWZmZXJDb3VudCA+PSBtX2Nv
bXBsZXRlZENvbW1hbmRCdWZmZXJDb3VudCk7CisKKyAgICBpZiAobV9zdWJtaXR0ZWRDb21tYW5k
QnVmZmVyQ291bnQgPT0gbV9jb21wbGV0ZWRDb21tYW5kQnVmZmVyQ291bnQpIHsKKyAgICAgICAg
Y2FsbGJhY2soV0dQVVF1ZXVlV29ya0RvbmVTdGF0dXNfU3VjY2Vzcyk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBhdXRvJiBjYWxsYmFja3MgPSBtX29uU3VibWl0dGVkV29ya0RvbmVD
YWxsYmFja3MuYWRkKG1fc3VibWl0dGVkQ29tbWFuZEJ1ZmZlckNvdW50LCBPblN1Ym1pdHRlZFdv
cmtEb25lQ2FsbGJhY2tzKCkpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBjYWxsYmFja3MuYXBwZW5k
KFdURk1vdmUoY2FsbGJhY2spKTsKK30KKworYm9vbCBRdWV1ZTo6dmFsaWRhdGVTdWJtaXQoKSBj
b25zdAoreworICAgIC8vIEZJWE1FOiAiRXZlcnkgR1BVQnVmZmVyIHJlZmVyZW5jZWQgaW4gYW55
IGVsZW1lbnQgb2YgY29tbWFuZEJ1ZmZlcnMgaXMgaW4gdGhlICJ1bm1hcHBlZCIgYnVmZmVyIHN0
YXRlLiIKKworICAgIC8vIEZJWE1FOiAiRXZlcnkgR1BVUXVlcnlTZXQgcmVmZXJlbmNlZCBpbiBh
IGNvbW1hbmQgaW4gYW55IGVsZW1lbnQgb2YgY29tbWFuZEJ1ZmZlcnMgaXMgaW4gdGhlIGF2YWls
YWJsZSBzdGF0ZS4iCisgICAgLy8gRklYTUU6ICJGb3Igb2NjbHVzaW9uIHF1ZXJpZXMsIG9jY2x1
c2lvblF1ZXJ5U2V0IGluIGJlZ2luUmVuZGVyUGFzcygpIGRvZXMgbm90IGNvbnN0aXR1dGUgYSBy
ZWZlcmVuY2UsIHdoaWxlIGJlZ2luT2NjbHVzaW9uUXVlcnkoKSBkb2VzLiIKKworICAgIC8vIFRo
ZXJlJ3Mgb25seSBvbmUgcXVldWUgcmlnaHQgbm93LCBzbyB0aGVyZSBpcyBubyBuZWVkIHRvIG1h
a2Ugc3VyZSB0aGF0IHRoZSBjb21tYW5kIGJ1ZmZlcnMgYXJlIGJlaW5nIHN1Ym1pdHRlZCB0byB0
aGUgY29ycmVjdCBxdWV1ZS4KKworICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIFF1ZXVlOjpz
dWJtaXQoVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Y29uc3QgQ29tbWFuZEJ1ZmZlcj4+
JiYgY29tbWFuZHMpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGNvbW1hbmRzKTsKKyAgICAvLyBodHRw
czovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNkb20tZ3B1cXVldWUtc3VibWl0CisKKyAgICAv
LyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQiCisg
ICAgaWYgKCF2YWxpZGF0ZVN1Ym1pdCgpKSB7CisgICAgICAgIC8vIEZJWE1FOiAiZ2VuZXJhdGUg
YSB2YWxpZGF0aW9uIGVycm9yIGFuZCBzdG9wLiIKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIC8vICJGb3IgZWFjaCBjb21tYW5kQnVmZmVyIGluIGNvbW1hbmRCdWZmZXJzOiIKKyAgICBm
b3IgKGF1dG8gY29tbWFuZEJ1ZmZlciA6IGNvbW1hbmRzKSB7CisgICAgICAgIFtjb21tYW5kQnVm
ZmVyLmdldCgpLmNvbW1hbmRCdWZmZXIoKSBhZGRDb21wbGV0ZWRIYW5kbGVyOltwcm90ZWN0ZWRU
aGlzID0gUmVmIHsgKnRoaXMgfV0gKGlkPE1UTENvbW1hbmRCdWZmZXI+KSB7CisjZXJyb3IgRXhl
Y3V0ZSB0aGlzIG9uIHRoZSBjb3JyZWN0IHRocmVhZCAvIHF1ZXVlLgorICAgICAgICAgICAgKyso
cHJvdGVjdGVkVGhpcy0+bV9jb21wbGV0ZWRDb21tYW5kQnVmZmVyQ291bnQpOworICAgICAgICAg
ICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IHByb3RlY3RlZFRoaXMtPm1fb25TdWJtaXR0ZWRXb3Jr
RG9uZUNhbGxiYWNrcy50YWtlKHByb3RlY3RlZFRoaXMtPm1fY29tcGxldGVkQ29tbWFuZEJ1ZmZl
ckNvdW50KSkKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhXR1BVUXVldWVXb3JrRG9uZVN0YXR1
c19TdWNjZXNzKTsKKyAgICAgICAgfV07CisKKyAgICAgICAgLy8gIkV4ZWN1dGUgZWFjaCBjb21t
YW5kIGluIGNvbW1hbmRCdWZmZXIuW1tjb21tYW5kX2xpc3RdXS4iCisgICAgICAgIFtjb21tYW5k
QnVmZmVyLmdldCgpLmNvbW1hbmRCdWZmZXIoKSBjb21taXRdOworICAgIH0KKworICAgIG1fc3Vi
bWl0dGVkQ29tbWFuZEJ1ZmZlckNvdW50ICs9IGNvbW1hbmRzLnNpemUoKTsKIH0KIAogdm9pZCBR
dWV1ZTo6d3JpdGVCdWZmZXIoY29uc3QgQnVmZmVyJiBidWZmZXIsIHVpbnQ2NF90IGJ1ZmZlck9m
ZnNldCwgY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IHNpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9UZXh0dXJlVmlldy5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1
cmVWaWV3Lm1tCmluZGV4IDBhYWU5MmI4ZTAyMmRlNjdjYjg4MTdhOGUwMzY3MTBhNzRiMDJiOWQu
LmQ2ZGNjYmQ1YThiMjY5NjViMjM5NTI1MDlhODIwZjE0YjljM2VhY2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmVWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL1RleHR1cmVWaWV3Lm1tCkBAIC0yNiw3ICsyNiw2IEBACiAjaW1wb3J0ICJjb25maWcuaCIK
ICNpbXBvcnQgIlRleHR1cmVWaWV3LmgiCiAKLQogbmFtZXNwYWNlIFdlYkdQVSB7CiAKIFRleHR1
cmVWaWV3OjpUZXh0dXJlVmlldyhpZDxNVExUZXh0dXJlPiB0ZXh0dXJlKQpAQCAtNDEsNyArNDAs
NyBAQCB2b2lkIFRleHR1cmVWaWV3OjpzZXRMYWJlbChjb25zdCBjaGFyKiBsYWJlbCkKICAgICBt
X3RleHR1cmUubGFiZWwgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENTdHJpbmc6bGFiZWwgZW5jb2Rp
bmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOwogfQogCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJHUFUK
IAogdm9pZCB3Z3B1VGV4dHVyZVZpZXdSZWxlYXNlKFdHUFVUZXh0dXJlVmlldyB0ZXh0dXJlVmll
dykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1V0aWxpdGllcy5oIGIvU291
cmNlL1dlYkdQVS9XZWJHUFUvVXRpbGl0aWVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWRmNjBiYTFhYWEwZWI2
ZGM3ZDg0YmM1NjNiMzQwOGZjZmZmN2FmNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL1V0aWxpdGllcy5oCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KGMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2ltcG9ydCA8d3Rm
L1BhZ2VCbG9jay5oPgorCituYW1lc3BhY2UgV2ViR1BVIHsKKworaW5saW5lIGJvb2wgaXNOb3RN
dWx0aXBsZU9mUG93ZXJPZlR3byh1aW50NjRfdCB4LCB1aW50NjRfdCB5KQoreworICAgIEFTU0VS
VChpc1Bvd2VyT2ZUd28oeSkpOworICAgIHJldHVybiB4ICYgKHkgLSAxKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViR1BVCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>