<?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>238719</bug_id>
          
          <creation_ts>2022-04-03 23:38:42 -0700</creation_ts>
          <short_desc>[WebGPU] Add support for the &quot;is valid to use with&quot; operation to WebGPU objects</short_desc>
          <delta_ts>2022-04-07 18:58:30 -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>
          
          
          <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>238711</dependson>
          <blocked>238720</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>dino</cc>
    
    <cc>djg</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1857740</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-04-03 23:38:42 -0700</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857741</commentid>
    <comment_count>1</comment_count>
      <attachid>456535</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-04-03 23:44:20 -0700</bug_when>
    <thetext>Created attachment 456535
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857771</commentid>
    <comment_count>2</comment_count>
      <attachid>456546</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-04-04 01:05:24 -0700</bug_when>
    <thetext>Created attachment 456546
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859174</commentid>
    <comment_count>3</comment_count>
      <attachid>456546</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-04-07 02:57:39 -0700</bug_when>
    <thetext>Comment on attachment 456546
Patch

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

also changes refcounts to thread safe (which is probably good)

&gt; Source/WebGPU/WebGPU/ObjectBase.h:40
&gt; +    ~ObjectBase();

Surprisingly ThreadSafeRefCounted has a footgun  where the destructor is not a virtual.
So written this way, Ref&lt;ObjectBase&gt; would never run the subclass destructors, which is a hard to find down the line if you ever end up using that.
It&apos;s better to mark this virtual.

If you don&apos;t intend to support Ref&lt;ObjectBase&gt;, then it&apos;s better to leave the threadsaferefcounted in the held classes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859365</commentid>
    <comment_count>4</comment_count>
      <attachid>456546</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-04-07 12:18:31 -0700</bug_when>
    <thetext>Comment on attachment 456546
Patch

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

&gt;&gt; Source/WebGPU/WebGPU/ObjectBase.h:40
&gt;&gt; +    ~ObjectBase();
&gt; 
&gt; Surprisingly ThreadSafeRefCounted has a footgun  where the destructor is not a virtual.
&gt; So written this way, Ref&lt;ObjectBase&gt; would never run the subclass destructors, which is a hard to find down the line if you ever end up using that.
&gt; It&apos;s better to mark this virtual.
&gt; 
&gt; If you don&apos;t intend to support Ref&lt;ObjectBase&gt;, then it&apos;s better to leave the threadsaferefcounted in the held classes.

Thinking about this more, I think there may actually be a better way of doing this. The whole point of this ObjectBase class is just to hold the isValidToUseWith() function, which is already templated. So, if it&apos;s already templated, it doesn&apos;t really need to actually exist in the base class. It can just be a free function and call .device() on the templated type. Doing it that way will get rid of this whole type hierarchy, and the problem you&apos;re describing here, as well as reducing total amount of code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859411</commentid>
    <comment_count>5</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-04-07 13:23:16 -0700</bug_when>
    <thetext>Committed r292558 (249396@trunk): &lt;https://commits.webkit.org/249396@trunk&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859412</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-04-07 13:24:24 -0700</bug_when>
    <thetext>&lt;rdar://problem/91440590&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859479</commentid>
    <comment_count>7</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-04-07 15:50:28 -0700</bug_when>
    <thetext>Committed r292574 (?): &lt;https://commits.webkit.org/r292574&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859556</commentid>
    <comment_count>8</comment_count>
    <who name="Dan Glastonbury">djg</who>
    <bug_when>2022-04-07 18:58:30 -0700</bug_when>
    <thetext>(In reply to Myles C. Maxfield from comment #4)
&gt; [...] It
&gt; can just be a free function and call .device() on the templated type. Doing
&gt; it that way will get rid of this whole type hierarchy, and the problem
&gt; you&apos;re describing here, as well as reducing total amount of code.

I like the sound of that!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456535</attachid>
            <date>2022-04-03 23:44:20 -0700</date>
            <delta_ts>2022-04-04 01:05:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>38563</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">Y29tbWl0IDBiYzBkMDFiMWU3YmRkNTRiNzljZTc2MDQxNzE1NDM3YTgxZTY5N2YKQXV0aG9yOiBN
eWxlcyBDLiBNYXhmaWVsZCA8bW1heGZpZWxkQGFwcGxlLmNvbT4KRGF0ZTogICBTdW4gQXByIDMg
MjM6NDM6MjIgMjAyMiAtMDcwMAoKICAgIE9iamVjdEJhc2UKCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViR1BVL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nCmluZGV4IDM5OGI2MzUy
YjZlYy4uYjY5MjM5ZmYyZTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViR1BVL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNCBAQAorMjAyMi0wNC0w
MyAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtX
ZWJHUFVdIEFkZCBPYmplY3RCYXNlIGJhc2UgY2xhc3MgZm9yIFdlYkdQVSBvYmplY3RzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg3MTkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGJhc2UgY2xh
c3Mgd2lsbCBiZSB0aGUgaG9tZSBvZiB0aGUgImlzIHZhbGlkIHRvIHVzZSB3aXRoIiBvcGVyYXRp
b24gKGFzIGRlc2NyaWJlZCBhdAorICAgICAgICBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1
d2ViLyNhYnN0cmFjdC1vcGRlZi12YWxpZC10by11c2Utd2l0aCksIHdoaWNoIGlzIGNvbW1vbiB0
byBhbGwKKyAgICAgICAgb2JqZWN0cyBhbmQgdXNlcyB0aG9zZSBvYmplY3RzIFJlZnMgdG8gdGhl
aXIgRGV2aWNlLiBUaGlzIHBhdGNoIGp1c3QgYWRkcyB0aGUgY2xhc3MgYW5kCisgICAgICAgIG1h
a2VzIHRoZSBleGlzdGluZyBvYmplY3RzIGluaGVyaXQgZnJvbSBpdCAtIHRoZSBhY3R1YWwgImlz
IHZhbGlkIHRvIHVzZSB3aXRoIiBvcGVyYXRpb24KKyAgICAgICAgd2lsbCBjb21lIGluIGEgc3Vi
c2VxdWVudCBwYXRjaC4KKworICAgICAgICBUaGUgc3BlYyBhbHNvIGhhcyB0aGUgcmVwcmVzZW50
YXRpb24gb2YgdGhpcyBiYXNlIGNsYXNzLCBuYW1lZCBHUFVPYmplY3RCYXNlLCB3aGljaCBzdXBw
b3J0cworICAgICAgICB0aGUgc2V0dGluZyBvZiBsYWJlbHMuIEhvd2V2ZXIsIGluIG91ciBXZWJH
UFUgaW1wbGVtZW50YXRpb24sIGFsbCBvYmplY3RzIGltcGxlbWVudCBsYWJlbHMKKyAgICAgICAg
ZGlmZmVyZW50bHksIHNvIHRoYXQgaGFuZGxpbmcgaXNuJ3QgcHJlc2VudCBpbiBvdXIgT2JqZWN0
QmFzZSBjbGFzcy4KKworICAgICAgICAqIFdlYkdQVS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIFdlYkdQVS9BZGFwdGVyLmg6CisgICAgICAgIChXZWJHUFU6OkFkYXB0ZXI6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJHUFU6OkFkYXB0ZXI6OmNyZWF0ZUludmFsaWQpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViR1BVOjpBZGFwdGVyOjppc1ZhbGlkIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBXZWJHUFUvQWRhcHRlci5tbToKKyAgICAgICAgKiBXZWJHUFUvQmluZEdyb3Vw
Lmg6CisgICAgICAgIChXZWJHUFU6OkJpbmRHcm91cDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkdQ
VTo6QmluZEdyb3VwOjpjcmVhdGVJbnZhbGlkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkdQVTo6
QmluZEdyb3VwOjppc1ZhbGlkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJHUFUvQmlu
ZEdyb3VwLm1tOgorICAgICAgICAqIFdlYkdQVS9CaW5kR3JvdXBMYXlvdXQuaDoKKyAgICAgICAg
KFdlYkdQVTo6QmluZEdyb3VwTGF5b3V0OjpjcmVhdGUpOgorICAgICAgICAoV2ViR1BVOjpCaW5k
R3JvdXBMYXlvdXQ6OmNyZWF0ZUludmFsaWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViR1BVOjpC
aW5kR3JvdXBMYXlvdXQ6OmlzVmFsaWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIFdlYkdQ
VS9CaW5kR3JvdXBMYXlvdXQubW06CisgICAgICAgICogV2ViR1BVL0J1ZmZlci5oOgorICAgICAg
ICAoV2ViR1BVOjpCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJHUFU6OkJ1ZmZlcjo6Y3Jl
YXRlSW52YWxpZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJHUFU6OkJ1ZmZlcjo6aXNWYWxpZCBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViR1BVL0J1ZmZlci5tbToKKyAgICAgICAgKFdl
YkdQVTo6dmFsaWRhdGVDcmVhdGVCdWZmZXIpOgorICAgICAgICAoV2ViR1BVOjpCdWZmZXI6OnZh
bGlkYXRlTWFwQXN5bmMgY29uc3QpOgorICAgICAgICAqIFdlYkdQVS9Db21tYW5kQnVmZmVyLmg6
CisgICAgICAgIChXZWJHUFU6OkNvbW1hbmRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJH
UFU6OkNvbW1hbmRCdWZmZXI6OmNyZWF0ZUludmFsaWQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
R1BVOjpDb21tYW5kQnVmZmVyOjppc1ZhbGlkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBX
ZWJHUFUvQ29tbWFuZEJ1ZmZlci5tbToKKyAgICAgICAgKiBXZWJHUFUvQ29tbWFuZEVuY29kZXIu
aDoKKyAgICAgICAgKFdlYkdQVTo6Q29tbWFuZEVuY29kZXI6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJHUFU6OkNvbW1hbmRFbmNvZGVyOjpjcmVhdGVJbnZhbGlkKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkdQVTo6Q29tbWFuZEVuY29kZXI6OmlzVmFsaWQgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAqIFdlYkdQVS9Db21tYW5kRW5jb2Rlci5tbToKKyAgICAgICAgKiBXZWJHUFUvQ29tcHV0ZVBh
c3NFbmNvZGVyLmg6CisgICAgICAgIChXZWJHUFU6OkNvbXB1dGVQYXNzRW5jb2Rlcjo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkdQVTo6Q29tcHV0ZVBhc3NFbmNvZGVyOjpjcmVhdGVJbnZhbGlkKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkdQVTo6Q29tcHV0ZVBhc3NFbmNvZGVyOjppc1ZhbGlkIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJHUFUvQ29tcHV0ZVBhc3NFbmNvZGVyLm1tOgor
ICAgICAgICAqIFdlYkdQVS9Db21wdXRlUGlwZWxpbmUuaDoKKyAgICAgICAgKFdlYkdQVTo6Q29t
cHV0ZVBpcGVsaW5lOjpjcmVhdGUpOgorICAgICAgICAoV2ViR1BVOjpDb21wdXRlUGlwZWxpbmU6
OmNyZWF0ZUludmFsaWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViR1BVOjpDb21wdXRlUGlwZWxp
bmU6OmlzVmFsaWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIFdlYkdQVS9Db21wdXRlUGlw
ZWxpbmUubW06CisgICAgICAgICogV2ViR1BVL0RldmljZS5oOgorICAgICAgICAoV2ViR1BVOjpE
ZXZpY2U6OmNyZWF0ZUludmFsaWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViR1BVOjpEZXZpY2U6
OmlzVmFsaWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIFdlYkdQVS9EZXZpY2UubW06Cisg
ICAgICAgICogV2ViR1BVL0luc3RhbmNlLmg6CisgICAgICAgIChXZWJHUFU6Okluc3RhbmNlOjpj
cmVhdGVJbnZhbGlkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkdQVTo6SW5zdGFuY2U6OmlzVmFs
aWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJH
UFUvSW5zdGFuY2UubW06CisgICAgICAgIChXZWJHUFU6Om1faXNWYWxpZCk6IERlbGV0ZWQuCisg
ICAgICAgICogV2ViR1BVL1BpcGVsaW5lTGF5b3V0Lmg6CisgICAgICAgIChXZWJHUFU6OlBpcGVs
aW5lTGF5b3V0OjpjcmVhdGUpOgorICAgICAgICAoV2ViR1BVOjpQaXBlbGluZUxheW91dDo6Y3Jl
YXRlSW52YWxpZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJHUFU6OlBpcGVsaW5lTGF5b3V0Ojpp
c1ZhbGlkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJHUFUvUGlwZWxpbmVMYXlvdXQu
bW06CisgICAgICAgICogV2ViR1BVL1F1ZXJ5U2V0Lmg6CisgICAgICAgIChXZWJHUFU6OlF1ZXJ5
U2V0OjpjcmVhdGUpOgorICAgICAgICAoV2ViR1BVOjpRdWVyeVNldDo6Y3JlYXRlSW52YWxpZCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJHUFU6OlF1ZXJ5U2V0Ojppc1ZhbGlkIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBXZWJHUFUvUXVlcnlTZXQubW06CisgICAgICAgICogV2ViR1BVL1F1
ZXVlLmg6CisgICAgICAgIChXZWJHUFU6OlF1ZXVlOjpjcmVhdGUpOgorICAgICAgICAoV2ViR1BV
OjpRdWV1ZTo6Y3JlYXRlSW52YWxpZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJHUFU6OlF1ZXVl
Ojppc1ZhbGlkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJHUFUvUXVldWUubW06Cisg
ICAgICAgICogV2ViR1BVL1JlbmRlckJ1bmRsZS5oOgorICAgICAgICAoV2ViR1BVOjpSZW5kZXJC
dW5kbGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJHUFU6OlJlbmRlckJ1bmRsZTo6Y3JlYXRlSW52
YWxpZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJHUFU6OlJlbmRlckJ1bmRsZTo6aXNWYWxpZCBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViR1BVL1JlbmRlckJ1bmRsZS5tbToKKyAgICAg
ICAgKiBXZWJHUFUvUmVuZGVyQnVuZGxlRW5jb2Rlci5oOgorICAgICAgICAoV2ViR1BVOjpSZW5k
ZXJCdW5kbGVFbmNvZGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViR1BVOjpSZW5kZXJCdW5kbGVF
bmNvZGVyOjpjcmVhdGVJbnZhbGlkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkdQVTo6UmVuZGVy
QnVuZGxlRW5jb2Rlcjo6aXNWYWxpZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViR1BV
L1JlbmRlckJ1bmRsZUVuY29kZXIubW06CisgICAgICAgICogV2ViR1BVL1JlbmRlclBhc3NFbmNv
ZGVyLmg6CisgICAgICAgIChXZWJHUFU6OlJlbmRlclBhc3NFbmNvZGVyOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViR1BVOjpSZW5kZXJQYXNzRW5jb2Rlcjo6Y3JlYXRlSW52YWxpZCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJHUFU6OlJlbmRlclBhc3NFbmNvZGVyOjppc1ZhbGlkIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBXZWJHUFUvUmVuZGVyUGFzc0VuY29kZXIubW06CisgICAgICAgICog
V2ViR1BVL1JlbmRlclBpcGVsaW5lLmg6CisgICAgICAgIChXZWJHUFU6OlJlbmRlclBpcGVsaW5l
OjpjcmVhdGUpOgorICAgICAgICAoV2ViR1BVOjpSZW5kZXJQaXBlbGluZTo6Y3JlYXRlSW52YWxp
ZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJHUFU6OlJlbmRlclBpcGVsaW5lOjppc1ZhbGlkIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJHUFUvUmVuZGVyUGlwZWxpbmUubW06CisgICAg
ICAgICogV2ViR1BVL1NhbXBsZXIuaDoKKyAgICAgICAgKFdlYkdQVTo6U2FtcGxlcjo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkdQVTo6U2FtcGxlcjo6Y3JlYXRlSW52YWxpZCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJHUFU6OlNhbXBsZXI6OmlzVmFsaWQgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAqIFdlYkdQVS9TYW1wbGVyLm1tOgorICAgICAgICAqIFdlYkdQVS9UZXh0dXJlLmg6CisgICAg
ICAgIChXZWJHUFU6OlRleHR1cmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJHUFU6OlRleHR1cmU6
OmNyZWF0ZUludmFsaWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViR1BVOjpUZXh0dXJlOjppc1Zh
bGlkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJHUFUvVGV4dHVyZS5tbToKKyAgICAg
ICAgKiBXZWJHUFUvVGV4dHVyZVZpZXcuaDoKKyAgICAgICAgKFdlYkdQVTo6VGV4dHVyZVZpZXc6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJHUFU6OlRleHR1cmVWaWV3OjpjcmVhdGVJbnZhbGlkKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkdQVTo6VGV4dHVyZVZpZXc6OmlzVmFsaWQgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIFdlYkdQVS9UZXh0dXJlVmlldy5tbToKKwogMjAyMi0wNC0wMyAg
TXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJH
UFVdIERlbGV0ZSByZWR1bmRhbnQgc3BlYyBxdW90ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJH
UFUvV2ViR1BVLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDdiNDg4OGNjZGVjNS4uODZkMzJiYjk4
MmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTM0OCw2ICszNDgsOCBAQAogCQkJCTFDRUJEODBCMjcxNkMzNzkwMEE1MjU0RCAvKiBF
eHBvcnRNYWNyb3MuaCAqLywKIAkJCQkxQzVBQ0FBMDI3M0E0MjZEMDA5NUY4RDUgLyogSW5zdGFu
Y2UuaCAqLywKIAkJCQkxQzVBQ0E5MjI3M0E0MUMyMDA5NUY4RDUgLyogSW5zdGFuY2UubW0gKi8s
CisJCQkJMUMzMzc1NUQyN0ZBMjNCODAwMkYxNjQ0IC8qIE9iamVjdEJhc2UuaCAqLywKKwkJCQkx
QzMzNzU1QzI3RkEyM0I4MDAyRjE2NDQgLyogT2JqZWN0QmFzZS5tbSAqLywKIAkJCQkxQzVBQ0FE
QTI3M0E0RTcxMDA5NUY4RDUgLyogUGlwZWxpbmVMYXlvdXQuaCAqLywKIAkJCQkxQzVBQ0FFNDI3
M0E1NUREMDA5NUY4RDUgLyogUGlwZWxpbmVMYXlvdXQubW0gKi8sCiAJCQkJMUM1QUNBQUMyNzNB
NDI2RDAwOTVGOEQ1IC8qIFF1ZXJ5U2V0LmggKi8sCkBAIC0zNzcsOCArMzc5LDYgQEAKIAkJCQkx
Q0VCRDdFNjI3MTZBRkJBMDBBNTI1NEQgLyogV2ViR1BVLmggKi8sCiAJCQkJMUNDMEM4QzkyNzNB
N0Q4OTAwRDBCNDgxIC8qIFdlYkdQVS5tb2R1bGVtYXAgKi8sCiAJCQkJMUM1QUNBRDIyNzNBNEM4
NjAwOTVGOEQ1IC8qIFdlYkdQVUV4dC5oICovLAotCQkJCTFDMzM3NTVDMjdGQTIzQjgwMDJGMTY0
NCAvKiBPYmplY3RCYXNlLm1tICovLAotCQkJCTFDMzM3NTVEMjdGQTIzQjgwMDJGMTY0NCAvKiBP
YmplY3RCYXNlLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IFdlYkdQVTsKIAkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CkBAIC03MjgsNyArNzI4LDYgQEAKIAkJCQkxQzVBQ0FERjI3M0E1NUFGMDA5
NUY4RDUgLyogQmluZEdyb3VwLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUM1QUNBRTEyNzNBNTVD
MTAwOTVGOEQ1IC8qIEJpbmRHcm91cExheW91dC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFDNUFD
QUJCMjczQTQyNkQwMDk1RjhENSAvKiBCdWZmZXIubW0gaW4gU291cmNlcyAqLywKLQkJCQkxQzMz
NzU1RTI3RkEyM0I4MDAyRjE2NDQgLyogT2JqZWN0QmFzZS5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTFDNUFDQUUzMjczQTU1Q0QwMDk1RjhENSAvKiBDb21tYW5kQnVmZmVyLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMUM1QUNBQzkyNzNBNDI2RTAwOTVGOEQ1IC8qIENvbW1hbmRFbmNvZGVyLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMUM1ODJGRjkyN0UwNDEzMTAwOUI0MEYwIC8qIENvbW1hbmRzTWl4
aW4ubW0gaW4gU291cmNlcyAqLywKQEAgLTczNiw2ICs3MzUsNyBAQAogCQkJCTFDNUFDQUMwMjcz
QTQyNkQwMDk1RjhENSAvKiBDb21wdXRlUGlwZWxpbmUubW0gaW4gU291cmNlcyAqLywKIAkJCQkx
QzVBQ0FDMTI3M0E0MjZEMDA5NUY4RDUgLyogRGV2aWNlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MUM1QUNBOTQyNzNBNDFDMjAwOTVGOEQ1IC8qIEluc3RhbmNlLm1tIGluIFNvdXJjZXMgKi8sCisJ
CQkJMUMzMzc1NUUyN0ZBMjNCODAwMkYxNjQ0IC8qIE9iamVjdEJhc2UubW0gaW4gU291cmNlcyAq
LywKIAkJCQkxQzVBQ0FFNTI3M0E1NUREMDA5NUY4RDUgLyogUGlwZWxpbmVMYXlvdXQubW0gaW4g
U291cmNlcyAqLywKIAkJCQkxQzVBQ0FCRDI3M0E0MjZEMDA5NUY4RDUgLyogUXVlcnlTZXQubW0g
aW4gU291cmNlcyAqLywKIAkJCQkxQzVBQ0FDQjI3M0E0MjZFMDA5NUY4RDUgLyogUXVldWUubW0g
aW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0FkYXB0ZXIu
aCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0FkYXB0ZXIuaAppbmRleCA4MWEyYjRkNGIxODkuLmY1
YmJhYTViYzZlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQWRhcHRlci5oCisr
KyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0FkYXB0ZXIuaApAQCAtNDcsMTAgKzQ3LDYgQEAgcHVi
bGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQWRhcHRlcihkZXZpY2Us
IGluc3RhbmNlKSk7CiAgICAgfQotICAgIHN0YXRpYyBSZWY8QWRhcHRlcj4gY3JlYXRlSW52YWxp
ZChJbnN0YW5jZSYgaW5zdGFuY2UpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBBZGFwdGVyKGluc3RhbmNlKSk7Ci0gICAgfQogCiAgICAgfkFkYXB0ZXIoKTsKIApAQCAtNjAs
MTEgKzU2LDggQEAgcHVibGljOgogICAgIGJvb2wgaGFzRmVhdHVyZShXR1BVRmVhdHVyZU5hbWUp
OwogICAgIHZvaWQgcmVxdWVzdERldmljZShjb25zdCBXR1BVRGV2aWNlRGVzY3JpcHRvciYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoV0dQVVJlcXVlc3REZXZpY2VTdGF0dXMsIFJlZlB0cjxEZXZp
Y2U+JiYsIFN0cmluZyYmKT4mJiBjYWxsYmFjayk7CiAKLSAgICBib29sIGlzVmFsaWQoKSBjb25z
dCB7IHJldHVybiBtX2RldmljZTsgfQotCiBwcml2YXRlOgogICAgIEFkYXB0ZXIoaWQ8TVRMRGV2
aWNlPiwgSW5zdGFuY2UmKTsKLSAgICBBZGFwdGVyKEluc3RhbmNlJik7CiAKICAgICBjb25zdCBp
ZDxNVExEZXZpY2U+IG1fZGV2aWNlIHsgbmlsIH07CiAgICAgY29uc3QgUmVmPEluc3RhbmNlPiBt
X2luc3RhbmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQWRhcHRlci5tbSBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL0FkYXB0ZXIubW0KaW5kZXggZDkwOWUyYzU3MTIyLi42MDBk
MWQ2ZTdiZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0FkYXB0ZXIubW0KKysr
IGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQWRhcHRlci5tbQpAQCAtMzksMTIgKzM5LDYgQEAgQWRh
cHRlcjo6QWRhcHRlcihpZDxNVExEZXZpY2U+IGRldmljZSwgSW5zdGFuY2UmIGluc3RhbmNlKQog
ewogfQogCi1BZGFwdGVyOjpBZGFwdGVyKEluc3RhbmNlJiBpbnN0YW5jZSkKLSAgICA6IG1faW5z
dGFuY2UoaW5zdGFuY2UpCi17Ci0gICAgCi19Ci0KIEFkYXB0ZXI6On5BZGFwdGVyKCkgPSBkZWZh
dWx0OwogCiBzaXplX3QgQWRhcHRlcjo6ZW51bWVyYXRlRmVhdHVyZXMoV0dQVUZlYXR1cmVOYW1l
KikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0JpbmRHcm91cC5oIGIvU291cmNl
L1dlYkdQVS9XZWJHUFUvQmluZEdyb3VwLmgKaW5kZXggN2U4YTJjNzE4Y2NiLi4wZmQ2OTdiZTU1
Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0JpbmRHcm91cC5oCisrKyBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL0JpbmRHcm91cC5oCkBAIC00NCwyNCArNDQsMTcgQEAgcHVibGlj
OgogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmluZEdyb3VwKHZlcnRleEFy
Z3VtZW50QnVmZmVyLCBmcmFnbWVudEFyZ3VtZW50QnVmZmVyLCBjb21wdXRlQXJndW1lbnRCdWZm
ZXIsIGRldmljZSkpOwogICAgIH0KLSAgICBzdGF0aWMgUmVmPEJpbmRHcm91cD4gY3JlYXRlSW52
YWxpZChEZXZpY2UmIGRldmljZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEJpbmRHcm91cChkZXZpY2UpKTsKLSAgICB9CiAKICAgICB+QmluZEdyb3VwKCk7CiAKICAgICB2
b2lkIHNldExhYmVsKFN0cmluZyYmKTsKIAotICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0
dXJuIG1fdmVydGV4QXJndW1lbnRCdWZmZXIgfHwgbV9mcmFnbWVudEFyZ3VtZW50QnVmZmVyIHx8
IG1fY29tcHV0ZUFyZ3VtZW50QnVmZmVyOyB9Ci0KICAgICBpZDxNVExCdWZmZXI+IHZlcnRleEFy
Z3VtZW50QnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV92ZXJ0ZXhBcmd1bWVudEJ1ZmZlcjsgfQog
ICAgIGlkPE1UTEJ1ZmZlcj4gZnJhZ21lbnRBcmd1bWVudEJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJu
IG1fZnJhZ21lbnRBcmd1bWVudEJ1ZmZlcjsgfQogICAgIGlkPE1UTEJ1ZmZlcj4gY29tcHV0ZUFy
Z3VtZW50QnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9jb21wdXRlQXJndW1lbnRCdWZmZXI7IH0K
IAogcHJpdmF0ZToKICAgICBCaW5kR3JvdXAoaWQ8TVRMQnVmZmVyPiB2ZXJ0ZXhBcmd1bWVudEJ1
ZmZlciwgaWQ8TVRMQnVmZmVyPiBmcmFnbWVudEFyZ3VtZW50QnVmZmVyLCBpZDxNVExCdWZmZXI+
IGNvbXB1dGVBcmd1bWVudEJ1ZmZlciwgRGV2aWNlJik7Ci0gICAgQmluZEdyb3VwKERldmljZSYp
OwogCiAgICAgY29uc3QgaWQ8TVRMQnVmZmVyPiBtX3ZlcnRleEFyZ3VtZW50QnVmZmVyIHsgbmls
IH07CiAgICAgY29uc3QgaWQ8TVRMQnVmZmVyPiBtX2ZyYWdtZW50QXJndW1lbnRCdWZmZXIgeyBu
aWwgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0JpbmRHcm91cC5tbSBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL0JpbmRHcm91cC5tbQppbmRleCBlZjQ0ZGNlMmMxZDcuLjVhMTRh
ZTY2MDdmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQmluZEdyb3VwLm1tCisr
KyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0JpbmRHcm91cC5tbQpAQCAtMTIyLDExICsxMjIsNiBA
QCBCaW5kR3JvdXA6OkJpbmRHcm91cChpZDxNVExCdWZmZXI+IHZlcnRleEFyZ3VtZW50QnVmZmVy
LCBpZDxNVExCdWZmZXI+IGZyYWdtZW50QQogewogfQogCi1CaW5kR3JvdXA6OkJpbmRHcm91cChE
ZXZpY2UmIGRldmljZSkKLSAgICA6IE9iamVjdEJhc2UoZGV2aWNlKQotewotfQotCiBCaW5kR3Jv
dXA6On5CaW5kR3JvdXAoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgQmluZEdyb3VwOjpzZXRMYWJlbChT
dHJpbmcmJiBsYWJlbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0JpbmRHcm91
cExheW91dC5oIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQmluZEdyb3VwTGF5b3V0LmgKaW5kZXgg
ODBkODUxNTQzZTBiLi4yNzZmOTM0ZTBmN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL0JpbmRHcm91cExheW91dC5oCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0JpbmRHcm91
cExheW91dC5oCkBAIC00NCwxNyArNDQsMTEgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgQmluZEdyb3VwTGF5b3V0KHZlcnRleEFyZ3VtZW50RW5jb2Rlciwg
ZnJhZ21lbnRBcmd1bWVudEVuY29kZXIsIGNvbXB1dGVBcmd1bWVudEVuY29kZXIsIGRldmljZSkp
OwogICAgIH0KLSAgICBzdGF0aWMgUmVmPEJpbmRHcm91cExheW91dD4gY3JlYXRlSW52YWxpZChE
ZXZpY2UmIGRldmljZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJpbmRH
cm91cExheW91dChkZXZpY2UpKTsKLSAgICB9CiAKICAgICB+QmluZEdyb3VwTGF5b3V0KCk7CiAK
ICAgICB2b2lkIHNldExhYmVsKFN0cmluZyYmKTsKIAotICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0
IHsgcmV0dXJuIG1fdmVydGV4QXJndW1lbnRFbmNvZGVyIHx8IG1fZnJhZ21lbnRBcmd1bWVudEVu
Y29kZXIgfHwgbV9jb21wdXRlQXJndW1lbnRFbmNvZGVyOyB9Ci0KICAgICBOU1VJbnRlZ2VyIGVu
Y29kZWRMZW5ndGgoKSBjb25zdDsKIAogICAgIGlkPE1UTEFyZ3VtZW50RW5jb2Rlcj4gdmVydGV4
QXJndW1lbnRFbmNvZGVyKCkgY29uc3QgeyByZXR1cm4gbV92ZXJ0ZXhBcmd1bWVudEVuY29kZXI7
IH0KQEAgLTYzLDcgKzU3LDYgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIEJpbmRHcm91cExh
eW91dChpZDxNVExBcmd1bWVudEVuY29kZXI+IHZlcnRleEFyZ3VtZW50RW5jb2RlciwgaWQ8TVRM
QXJndW1lbnRFbmNvZGVyPiBmcmFnbWVudEFyZ3VtZW50RW5jb2RlciwgaWQ8TVRMQXJndW1lbnRF
bmNvZGVyPiBjb21wdXRlQXJndW1lbnRFbmNvZGVyLCBEZXZpY2UmKTsKLSAgICBCaW5kR3JvdXBM
YXlvdXQoRGV2aWNlJik7CiAKICAgICBjb25zdCBpZDxNVExBcmd1bWVudEVuY29kZXI+IG1fdmVy
dGV4QXJndW1lbnRFbmNvZGVyIHsgbmlsIH07CiAgICAgY29uc3QgaWQ8TVRMQXJndW1lbnRFbmNv
ZGVyPiBtX2ZyYWdtZW50QXJndW1lbnRFbmNvZGVyIHsgbmlsIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9CaW5kR3JvdXBMYXlvdXQubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9CaW5kR3JvdXBMYXlvdXQubW0KaW5kZXggNjUwZjk0YzNhMjJkLi5lZGIzZGI3MDQ2NDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0JpbmRHcm91cExheW91dC5tbQorKysgYi9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9CaW5kR3JvdXBMYXlvdXQubW0KQEAgLTIyNCwxMSArMjI0LDYg
QEAgQmluZEdyb3VwTGF5b3V0OjpCaW5kR3JvdXBMYXlvdXQoaWQ8TVRMQXJndW1lbnRFbmNvZGVy
PiB2ZXJ0ZXhBcmd1bWVudEVuY29kZXIsIGkKIHsKIH0KIAotQmluZEdyb3VwTGF5b3V0OjpCaW5k
R3JvdXBMYXlvdXQoRGV2aWNlJiBkZXZpY2UpCi0gICAgOiBPYmplY3RCYXNlKGRldmljZSkKLXsK
LX0KLQogQmluZEdyb3VwTGF5b3V0Ojp+QmluZEdyb3VwTGF5b3V0KCkgPSBkZWZhdWx0OwogCiB2
b2lkIEJpbmRHcm91cExheW91dDo6c2V0TGFiZWwoU3RyaW5nJiYgbGFiZWwpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CdWZmZXIuaCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0J1
ZmZlci5oCmluZGV4IDdlMzkwNDI2N2NiYS4uZmFjZDQ3NjFiYmM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9CdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CdWZm
ZXIuaApAQCAtNTQsMTAgKzU0LDYgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgQnVmZmVyKGJ1ZmZlciwgc2l6ZSwgdXNhZ2UsIGluaXRpYWxTdGF0ZSwgaW5p
dGlhbE1hcHBpbmdSYW5nZSwgZGV2aWNlKSk7CiAgICAgfQotICAgIHN0YXRpYyBSZWY8QnVmZmVy
PiBjcmVhdGVJbnZhbGlkKERldmljZSYgZGV2aWNlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgQnVmZmVyKGRldmljZSkpOwotICAgIH0KIAogICAgIH5CdWZmZXIoKTsKIApA
QCAtNjgsOCArNjQsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCB1bm1hcCgpOwogICAgIHZvaWQgc2V0
TGFiZWwoU3RyaW5nJiYpOwogCi0gICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9i
dWZmZXI7IH0KLQogICAgIC8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIvI2J1ZmZl
ci1zdGF0ZQogICAgIC8vIEVhY2ggR1BVQnVmZmVyIGhhcyBhIGN1cnJlbnQgYnVmZmVyIHN0YXRl
IG9uIHRoZSBDb250ZW50IHRpbWVsaW5lIHdoaWNoIGlzIG9uZSBvZiB0aGUgZm9sbG93aW5nOgog
ICAgIGVudW0gY2xhc3MgU3RhdGUgOiB1aW50OF90IHsKQEAgLTg3LDcgKzgxLDYgQEAgcHVibGlj
OgogCiBwcml2YXRlOgogICAgIEJ1ZmZlcihpZDxNVExCdWZmZXI+LCB1aW50NjRfdCBzaXplLCBX
R1BVQnVmZmVyVXNhZ2VGbGFncywgU3RhdGUgaW5pdGlhbFN0YXRlLCBNYXBwaW5nUmFuZ2UgaW5p
dGlhbE1hcHBpbmdSYW5nZSwgRGV2aWNlJik7Ci0gICAgQnVmZmVyKERldmljZSYpOwogCiAgICAg
Ym9vbCB2YWxpZGF0ZUdldE1hcHBlZFJhbmdlKHNpemVfdCBvZmZzZXQsIHNpemVfdCByYW5nZVNp
emUpIGNvbnN0OwogICAgIGJvb2wgdmFsaWRhdGVNYXBBc3luYyhXR1BVTWFwTW9kZUZsYWdzLCBz
aXplX3Qgb2Zmc2V0LCBzaXplX3QgcmFuZ2VTaXplKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL0J1ZmZlci5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0J1ZmZlci5t
bQppbmRleCBhZDcxNGNjYTNhMmEuLmQzMTdmNjU3NTY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkdQVS9XZWJHUFUvQnVmZmVyLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0J1ZmZlci5t
bQpAQCAtNTAsOCArNTAsNyBAQCBzdGF0aWMgYm9vbCB2YWxpZGF0ZURlc2NyaXB0b3IoY29uc3Qg
RGV2aWNlJiBkZXZpY2UsIGNvbnN0IFdHUFVCdWZmZXJEZXNjcmlwdG9yJgogCiBzdGF0aWMgYm9v
bCB2YWxpZGF0ZUNyZWF0ZUJ1ZmZlcihjb25zdCBEZXZpY2UmIGRldmljZSwgY29uc3QgV0dQVUJ1
ZmZlckRlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7Ci0gICAgaWYgKCFkZXZpY2UuaXNWYWxpZCgp
KQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgLy8gRklYTUU6ICJ0aGlzIGlzIGEgdmFsaWQg
R1BVRGV2aWNlLiIKIAogICAgIGlmICghdmFsaWRhdGVEZXNjcmlwdG9yKGRldmljZSwgZGVzY3Jp
cHRvcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEzNSwxMSArMTM0LDYgQEAgQnVmZmVy
OjpCdWZmZXIoaWQ8TVRMQnVmZmVyPiBidWZmZXIsIHVpbnQ2NF90IHNpemUsIFdHUFVCdWZmZXJV
c2FnZUZsYWdzIHVzYWdlLAogewogfQogCi1CdWZmZXI6OkJ1ZmZlcihEZXZpY2UmIGRldmljZSkK
LSAgICA6IE9iamVjdEJhc2UoZGV2aWNlKQotewotfQotCiBCdWZmZXI6On5CdWZmZXIoKSA9IGRl
ZmF1bHQ7CiAKIHZvaWQgQnVmZmVyOjpkZXN0cm95KCkKQEAgLTIwOCwxMCArMjAyLDcgQEAgdm9p
ZCogQnVmZmVyOjpnZXRNYXBwZWRSYW5nZShzaXplX3Qgb2Zmc2V0LCBzaXplX3Qgc2l6ZSkKIAog
Ym9vbCBCdWZmZXI6OnZhbGlkYXRlTWFwQXN5bmMoV0dQVU1hcE1vZGVGbGFncyBtb2RlLCBzaXpl
X3Qgb2Zmc2V0LCBzaXplX3QgcmFuZ2VTaXplKSBjb25zdAogewotICAgIGlmICghaXNWYWxpZCgp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBGSVhNRTogVGhlIHNwZWMgc2F5cyAi
VE9ETzogY2hlY2sgZGVzdHJveWVkIHN0YXRlPyIKKyAgICAvLyBGSVhNRTogInRoaXMgaXMgYSB2
YWxpZCBHUFVCdWZmZXIuIFRPRE86IGNoZWNrIGRlc3Ryb3llZCBzdGF0ZT8iCiAKICAgICBpZiAo
b2Zmc2V0ICUgOCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkdQVS9XZWJHUFUvQ29tbWFuZEJ1ZmZlci5oIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFu
ZEJ1ZmZlci5oCmluZGV4IDY0N2YwNGRiNGUzZi4uYWU2MTM0ZDVjOGVkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkdQVS9X
ZWJHUFUvQ29tbWFuZEJ1ZmZlci5oCkBAIC00NCwyMiArNDQsMTUgQEAgcHVibGljOgogICAgIHsK
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29tbWFuZEJ1ZmZlcihjb21tYW5kQnVmZmVy
LCBkZXZpY2UpKTsKICAgICB9Ci0gICAgc3RhdGljIFJlZjxDb21tYW5kQnVmZmVyPiBjcmVhdGVJ
bnZhbGlkKERldmljZSYgZGV2aWNlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQ29tbWFuZEJ1ZmZlcihkZXZpY2UpKTsKLSAgICB9CiAKICAgICB+Q29tbWFuZEJ1ZmZlcigp
OwogCiAgICAgdm9pZCBzZXRMYWJlbChTdHJpbmcmJik7CiAKLSAgICBib29sIGlzVmFsaWQoKSBj
b25zdCB7IHJldHVybiBtX2NvbW1hbmRCdWZmZXI7IH0KLQogICAgIGlkPE1UTENvbW1hbmRCdWZm
ZXI+IGNvbW1hbmRCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbW1hbmRCdWZmZXI7IH0KIAog
cHJpdmF0ZToKICAgICBDb21tYW5kQnVmZmVyKGlkPE1UTENvbW1hbmRCdWZmZXI+LCBEZXZpY2Um
KTsKLSAgICBDb21tYW5kQnVmZmVyKERldmljZSYpOwogCiAgICAgY29uc3QgaWQ8TVRMQ29tbWFu
ZEJ1ZmZlcj4gbV9jb21tYW5kQnVmZmVyIHsgbmlsIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkdQVS9XZWJHUFUvQ29tbWFuZEJ1ZmZlci5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0Nv
bW1hbmRCdWZmZXIubW0KaW5kZXggNDNkYzE2YjFlYzMwLi4xMGNkYmQ4ZDJlOWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRCdWZmZXIubW0KKysrIGIvU291cmNlL1dl
YkdQVS9XZWJHUFUvQ29tbWFuZEJ1ZmZlci5tbQpAQCAtMzYsMTEgKzM2LDYgQEAgQ29tbWFuZEJ1
ZmZlcjo6Q29tbWFuZEJ1ZmZlcihpZDxNVExDb21tYW5kQnVmZmVyPiBjb21tYW5kQnVmZmVyLCBE
ZXZpY2UmIGRldmljZSkKIHsKIH0KIAotQ29tbWFuZEJ1ZmZlcjo6Q29tbWFuZEJ1ZmZlcihEZXZp
Y2UmIGRldmljZSkKLSAgICA6IE9iamVjdEJhc2UoZGV2aWNlKQotewotfQotCiBDb21tYW5kQnVm
ZmVyOjp+Q29tbWFuZEJ1ZmZlcigpID0gZGVmYXVsdDsKIAogdm9pZCBDb21tYW5kQnVmZmVyOjpz
ZXRMYWJlbChTdHJpbmcmJiBsYWJlbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L0NvbW1hbmRFbmNvZGVyLmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rlci5o
CmluZGV4IGNhMjhhYmI2ZDhkNy4uNDZjZjJlM2Q4ZGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0Nv
bW1hbmRFbmNvZGVyLmgKQEAgLTUxLDEwICs1MSw2IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IENvbW1hbmRFbmNvZGVyKGNvbW1hbmRCdWZmZXIsIGRldmlj
ZSkpOwogICAgIH0KLSAgICBzdGF0aWMgUmVmPENvbW1hbmRFbmNvZGVyPiBjcmVhdGVJbnZhbGlk
KERldmljZSYgZGV2aWNlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29t
bWFuZEVuY29kZXIoZGV2aWNlKSk7Ci0gICAgfQogCiAgICAgfkNvbW1hbmRFbmNvZGVyKCk7CiAK
QEAgLTczLDExICs2OSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHdyaXRlVGltZXN0YW1wKGNvbnN0
IFF1ZXJ5U2V0JiwgdWludDMyX3QgcXVlcnlJbmRleCk7CiAgICAgdm9pZCBzZXRMYWJlbChTdHJp
bmcmJik7CiAKLSAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2NvbW1hbmRCdWZm
ZXI7IH0KLQogcHJpdmF0ZToKICAgICBDb21tYW5kRW5jb2RlcihpZDxNVExDb21tYW5kQnVmZmVy
PiwgRGV2aWNlJik7Ci0gICAgQ29tbWFuZEVuY29kZXIoRGV2aWNlJik7CiAKICAgICBib29sIHZh
bGlkYXRlRmluaXNoKCkgY29uc3Q7CiAgICAgYm9vbCB2YWxpZGF0ZVBvcERlYnVnR3JvdXAoKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVyLm1t
IGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0KaW5kZXggM2I1ZTIxMDc4
NTUwLi42OTkwM2U2OTFmNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1h
bmRFbmNvZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVyLm1t
CkBAIC02MSwxMSArNjEsNiBAQCBDb21tYW5kRW5jb2Rlcjo6Q29tbWFuZEVuY29kZXIoaWQ8TVRM
Q29tbWFuZEJ1ZmZlcj4gY29tbWFuZEJ1ZmZlciwgRGV2aWNlJiBkZXZpYwogewogfQogCi1Db21t
YW5kRW5jb2Rlcjo6Q29tbWFuZEVuY29kZXIoRGV2aWNlJiBkZXZpY2UpCi0gICAgOiBPYmplY3RC
YXNlKGRldmljZSkKLXsKLX0KLQogQ29tbWFuZEVuY29kZXI6On5Db21tYW5kRW5jb2RlcigpCiB7
CiAgICAgZmluYWxpemVCbGl0Q29tbWFuZEVuY29kZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL0NvbXB1dGVQYXNzRW5jb2Rlci5oIGIvU291cmNlL1dlYkdQVS9XZWJHUFUv
Q29tcHV0ZVBhc3NFbmNvZGVyLmgKaW5kZXggOTZhYzg3YTgwM2ExLi4zNThmODM2MTQxNzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbXB1dGVQYXNzRW5jb2Rlci5oCisrKyBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbXB1dGVQYXNzRW5jb2Rlci5oCkBAIC00OSwxMCArNDks
NiBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb21wdXRl
UGFzc0VuY29kZXIoY29tcHV0ZUNvbW1hbmRFbmNvZGVyLCBkZXZpY2UpKTsKICAgICB9Ci0gICAg
c3RhdGljIFJlZjxDb21wdXRlUGFzc0VuY29kZXI+IGNyZWF0ZUludmFsaWQoRGV2aWNlJiBkZXZp
Y2UpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb21wdXRlUGFzc0VuY29k
ZXIoZGV2aWNlKSk7Ci0gICAgfQogCiAgICAgfkNvbXB1dGVQYXNzRW5jb2RlcigpOwogCkBAIC02
OCwxMSArNjQsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQaXBlbGluZShjb25zdCBDb21wdXRl
UGlwZWxpbmUmKTsKICAgICB2b2lkIHNldExhYmVsKFN0cmluZyYmKTsKIAotICAgIGJvb2wgaXNW
YWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29tcHV0ZUNvbW1hbmRFbmNvZGVyOyB9Ci0KIHByaXZh
dGU6CiAgICAgQ29tcHV0ZVBhc3NFbmNvZGVyKGlkPE1UTENvbXB1dGVDb21tYW5kRW5jb2Rlcj4s
IERldmljZSYpOwotICAgIENvbXB1dGVQYXNzRW5jb2RlcihEZXZpY2UmKTsKIAogICAgIGJvb2wg
dmFsaWRhdGVQb3BEZWJ1Z0dyb3VwKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL0NvbXB1dGVQYXNzRW5jb2Rlci5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0Nv
bXB1dGVQYXNzRW5jb2Rlci5tbQppbmRleCAxNmYwMGI5NGMyNDEuLjA1NGFkOWYwZDRmOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tcHV0ZVBhc3NFbmNvZGVyLm1tCisrKyBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbXB1dGVQYXNzRW5jb2Rlci5tbQpAQCAtNDAsMTEgKzQw
LDYgQEAgQ29tcHV0ZVBhc3NFbmNvZGVyOjpDb21wdXRlUGFzc0VuY29kZXIoaWQ8TVRMQ29tcHV0
ZUNvbW1hbmRFbmNvZGVyPiBjb21wdXRlQ29tbWEKIHsKIH0KIAotQ29tcHV0ZVBhc3NFbmNvZGVy
OjpDb21wdXRlUGFzc0VuY29kZXIoRGV2aWNlJiBkZXZpY2UpCi0gICAgOiBPYmplY3RCYXNlKGRl
dmljZSkKLXsKLX0KLQogQ29tcHV0ZVBhc3NFbmNvZGVyOjp+Q29tcHV0ZVBhc3NFbmNvZGVyKCkg
PSBkZWZhdWx0OwogCiB2b2lkIENvbXB1dGVQYXNzRW5jb2Rlcjo6YmVnaW5QaXBlbGluZVN0YXRp
c3RpY3NRdWVyeShjb25zdCBRdWVyeVNldCYgcXVlcnlTZXQsIHVpbnQzMl90IHF1ZXJ5SW5kZXgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21wdXRlUGlwZWxpbmUuaCBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL0NvbXB1dGVQaXBlbGluZS5oCmluZGV4IDNmN2U4MzE4NjkzYS4u
YjQzNmNiMDhiMjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21wdXRlUGlw
ZWxpbmUuaAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21wdXRlUGlwZWxpbmUuaApAQCAt
NDUsMjMgKzQ1LDE2IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IENvbXB1dGVQaXBlbGluZShjb21wdXRlUGlwZWxpbmVTdGF0ZSwgZGV2aWNlKSk7CiAgICAg
fQotICAgIHN0YXRpYyBSZWY8Q29tcHV0ZVBpcGVsaW5lPiBjcmVhdGVJbnZhbGlkKERldmljZSYg
ZGV2aWNlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29tcHV0ZVBpcGVs
aW5lKGRldmljZSkpOwotICAgIH0KIAogICAgIH5Db21wdXRlUGlwZWxpbmUoKTsKIAogICAgIEJp
bmRHcm91cExheW91dCogZ2V0QmluZEdyb3VwTGF5b3V0KHVpbnQzMl90IGdyb3VwSW5kZXgpOwog
ICAgIHZvaWQgc2V0TGFiZWwoU3RyaW5nJiYpOwogCi0gICAgYm9vbCBpc1ZhbGlkKCkgY29uc3Qg
eyByZXR1cm4gbV9jb21wdXRlUGlwZWxpbmVTdGF0ZTsgfQotCiAgICAgaWQ8TVRMQ29tcHV0ZVBp
cGVsaW5lU3RhdGU+IGNvbXB1dGVQaXBlbGluZVN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9jb21w
dXRlUGlwZWxpbmVTdGF0ZTsgfQogCiBwcml2YXRlOgogICAgIENvbXB1dGVQaXBlbGluZShpZDxN
VExDb21wdXRlUGlwZWxpbmVTdGF0ZT4sIERldmljZSYpOwotICAgIENvbXB1dGVQaXBlbGluZShE
ZXZpY2UmKTsKIAogICAgIGNvbnN0IGlkPE1UTENvbXB1dGVQaXBlbGluZVN0YXRlPiBtX2NvbXB1
dGVQaXBlbGluZVN0YXRlIHsgbmlsIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9X
ZWJHUFUvQ29tcHV0ZVBpcGVsaW5lLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tcHV0ZVBp
cGVsaW5lLm1tCmluZGV4IDExMmVkMjU3MDE0Yi4uMDNiYzdhMTRkOWQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9Db21wdXRlUGlwZWxpbmUubW0KKysrIGIvU291cmNlL1dlYkdQ
VS9XZWJHUFUvQ29tcHV0ZVBpcGVsaW5lLm1tCkBAIC0xODEsMTEgKzE4MSw2IEBAIENvbXB1dGVQ
aXBlbGluZTo6Q29tcHV0ZVBpcGVsaW5lKGlkPE1UTENvbXB1dGVQaXBlbGluZVN0YXRlPiBjb21w
dXRlUGlwZWxpbmVTdGF0CiB7CiB9CiAKLUNvbXB1dGVQaXBlbGluZTo6Q29tcHV0ZVBpcGVsaW5l
KERldmljZSYgZGV2aWNlKQotICAgIDogT2JqZWN0QmFzZShkZXZpY2UpCi17Ci19Ci0KIENvbXB1
dGVQaXBlbGluZTo6fkNvbXB1dGVQaXBlbGluZSgpID0gZGVmYXVsdDsKIAogQmluZEdyb3VwTGF5
b3V0KiBDb21wdXRlUGlwZWxpbmU6OmdldEJpbmRHcm91cExheW91dCh1aW50MzJfdCBncm91cElu
ZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvRGV2aWNlLmggYi9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9EZXZpY2UuaAppbmRleCBjOWEwN2EzYTZlYzAuLjBkNmE5OTY0NzkzOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvRGV2aWNlLmgKKysrIGIvU291cmNlL1dl
YkdQVS9XZWJHUFUvRGV2aWNlLmgKQEAgLTMwLDggKzMwLDggQEAKICNpbXBvcnQgPHd0Zi9GYXN0
TWFsbG9jLmg+CiAjaW1wb3J0IDx3dGYvRnVuY3Rpb24uaD4KICNpbXBvcnQgPHd0Zi9SZWYuaD4K
LSNpbXBvcnQgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogI2ltcG9ydCA8d3RmL1JlZlB0
ci5oPgorI2ltcG9ydCA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW1wb3J0IDx3dGYv
VmVjdG9yLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNjEsMTAgKzYx
LDYgQEAgY2xhc3MgRGV2aWNlIDogcHVibGljIFdHUFVEZXZpY2VJbXBsLCBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8RGV2aWNlPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxEZXZpY2U+IGNyZWF0ZShpZDxNVExEZXZpY2U+LCBT
dHJpbmcmJiBkZXZpY2VMYWJlbCwgSW5zdGFuY2UmKTsKLSAgICBzdGF0aWMgUmVmPERldmljZT4g
Y3JlYXRlSW52YWxpZChJbnN0YW5jZSYgaW5zdGFuY2UpCi0gICAgewotICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBEZXZpY2UoaW5zdGFuY2UpKTsKLSAgICB9CiAKICAgICB+RGV2aWNlKCk7
CiAKQEAgLTk0LDggKzkwLDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VW5jYXB0dXJlZEVycm9y
Q2FsbGJhY2soRnVuY3Rpb248dm9pZChXR1BVRXJyb3JUeXBlLCBTdHJpbmcmJik+JiYpOwogICAg
IHZvaWQgc2V0TGFiZWwoU3RyaW5nJiYpOwogCi0gICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyBy
ZXR1cm4gbV9kZXZpY2U7IH0KLQogICAgIGlkPE1UTERldmljZT4gZGV2aWNlKCkgY29uc3QgeyBy
ZXR1cm4gbV9kZXZpY2U7IH0KIAogICAgIHZvaWQgZ2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKFN0
cmluZyYmIG1lc3NhZ2UpOwpAQCAtMTA1LDcgKzk5LDYgQEAgcHVibGljOgogCiBwcml2YXRlOgog
ICAgIERldmljZShpZDxNVExEZXZpY2U+LCBpZDxNVExDb21tYW5kUXVldWU+IGRlZmF1bHRRdWV1
ZSwgSW5zdGFuY2UmKTsKLSAgICBEZXZpY2UoSW5zdGFuY2UmKTsKIAogICAgIHN0cnVjdCBFcnJv
clNjb3BlOwogICAgIEVycm9yU2NvcGUqIGN1cnJlbnRFcnJvclNjb3BlKFdHUFVFcnJvckZpbHRl
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9EZXZpY2UubW0gYi9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9EZXZpY2UubW0KaW5kZXggNThlNWRmMTEwMTY5Li42NDgzNjg4ZTBjOWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0RldmljZS5tbQorKysgYi9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9EZXZpY2UubW0KQEAgLTY4LDEyICs2OCw2IEBAIERldmljZTo6RGV2aWNl
KGlkPE1UTERldmljZT4gZGV2aWNlLCBpZDxNVExDb21tYW5kUXVldWU+IGRlZmF1bHRRdWV1ZSwg
SW5zdGFuY2UmCiB7CiB9CiAKLURldmljZTo6RGV2aWNlKEluc3RhbmNlJiBpbnN0YW5jZSkKLSAg
ICA6IG1fZGVmYXVsdFF1ZXVlKFF1ZXVlOjpjcmVhdGVJbnZhbGlkKCp0aGlzKSkKLSAgICAsIG1f
aW5zdGFuY2UoaW5zdGFuY2UpCi17Ci19Ci0KIERldmljZTo6fkRldmljZSgpID0gZGVmYXVsdDsK
IAogdm9pZCBEZXZpY2U6OmRlc3Ryb3koKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJH
UFUvSW5zdGFuY2UuaCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0luc3RhbmNlLmgKaW5kZXggZWYy
NjZjZTBkMGI1Li5mNDY0MDYzNjRmMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L0luc3RhbmNlLmgKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvSW5zdGFuY2UuaApAQCAtNDYs
MTAgKzQ2LDYgQEAgY2xhc3MgSW5zdGFuY2UgOiBwdWJsaWMgV0dQVUluc3RhbmNlSW1wbCwgcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEluc3RhbmNlPgogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8SW5zdGFuY2U+IGNyZWF0ZShjb25z
dCBXR1BVSW5zdGFuY2VEZXNjcmlwdG9yJik7Ci0gICAgc3RhdGljIFJlZjxJbnN0YW5jZT4gY3Jl
YXRlSW52YWxpZCgpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnN0YW5j
ZSgpKTsKLSAgICB9CiAKICAgICB+SW5zdGFuY2UoKTsKIApAQCAtNTcsMTUgKzUzLDEyIEBAIHB1
YmxpYzoKICAgICB2b2lkIHByb2Nlc3NFdmVudHMoKTsKICAgICB2b2lkIHJlcXVlc3RBZGFwdGVy
KGNvbnN0IFdHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdHUFVSZXF1ZXN0QWRhcHRlclN0YXR1cywgUmVmUHRyPEFkYXB0ZXI+JiYsIFN0cmluZyYmKT4m
JiBjYWxsYmFjayk7CiAKLSAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2lzVmFs
aWQ7IH0KLQogICAgIC8vIFRoaXMgY2FuIGJlIGNhbGxlZCBvbiBhIGJhY2tncm91bmQgdGhyZWFk
LgogICAgIHVzaW5nIFdvcmtJdGVtID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh2b2lkKT47CiAg
ICAgdm9pZCBzY2hlZHVsZVdvcmsoV29ya0l0ZW0mJik7CiAKIHByaXZhdGU6CiAgICAgSW5zdGFu
Y2UoV0dQVVNjaGVkdWxlV29ya0Jsb2NrKTsKLSAgICBJbnN0YW5jZSgpOwogCiAgICAgLy8gVGhp
cyBjYW4gYmUgY2FsbGVkIG9uIGEgYmFja2dyb3VuZCB0aHJlYWQuCiAgICAgdm9pZCBkZWZhdWx0
U2NoZWR1bGVXb3JrKFdHUFVXb3JrSXRlbSYmKTsKQEAgLTc0LDcgKzY3LDYgQEAgcHJpdmF0ZToK
ICAgICBEZXF1ZTxXR1BVV29ya0l0ZW0+IG1fcGVuZGluZ1dvcmsgV1RGX0dVQVJERURfQllfTE9D
SyhtX2xvY2spOwogICAgIGNvbnN0IFdHUFVTY2hlZHVsZVdvcmtCbG9jayBtX3NjaGVkdWxlV29y
a0Jsb2NrOwogICAgIExvY2sgbV9sb2NrOwotICAgIGJvb2wgbV9pc1ZhbGlkIHsgdHJ1ZSB9Owog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViR1BVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9JbnN0YW5jZS5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0luc3RhbmNlLm1tCmluZGV4
IGQ0NjUwM2E5YzE1Yi4uN2MyYWNhY2ZmY2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9JbnN0YW5jZS5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9JbnN0YW5jZS5tbQpA
QCAtNTYsMTIgKzU2LDYgQEAgSW5zdGFuY2U6Okluc3RhbmNlKFdHUFVTY2hlZHVsZVdvcmtCbG9j
ayBzY2hlZHVsZVdvcmtCbG9jaykKIHsKIH0KIAotSW5zdGFuY2U6Okluc3RhbmNlKCkKLSAgICA6
IG1fc2NoZWR1bGVXb3JrQmxvY2soXihXR1BVV29ya0l0ZW0gd29ya0l0ZW0pIHsgZGVmYXVsdFNj
aGVkdWxlV29yayhXVEZNb3ZlKHdvcmtJdGVtKSk7IH0pCi0gICAgLCBtX2lzVmFsaWQoZmFsc2Up
Ci17Ci19Ci0KIEluc3RhbmNlOjp+SW5zdGFuY2UoKSA9IGRlZmF1bHQ7CiAKIFJlZlB0cjxTdXJm
YWNlPiBJbnN0YW5jZTo6Y3JlYXRlU3VyZmFjZShjb25zdCBXR1BVU3VyZmFjZURlc2NyaXB0b3Im
IGRlc2NyaXB0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9QaXBlbGluZUxh
eW91dC5oIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUGlwZWxpbmVMYXlvdXQuaAppbmRleCBhMDM4
MTQ2OGNjNGQuLjA3MTJhZjU4MzllZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUv
UGlwZWxpbmVMYXlvdXQuaAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9QaXBlbGluZUxheW91
dC5oCkBAIC00NiwxOCArNDYsMTEgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgUGlwZWxpbmVMYXlvdXQoV1RGTW92ZShiaW5kR3JvdXBMYXlvdXRzKSwgZGV2
aWNlKSk7CiAgICAgfQotICAgIHN0YXRpYyBSZWY8UGlwZWxpbmVMYXlvdXQ+IGNyZWF0ZUludmFs
aWQoRGV2aWNlJiBkZXZpY2UpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQ
aXBlbGluZUxheW91dChkZXZpY2UpKTsKLSAgICB9CiAKICAgICB+UGlwZWxpbmVMYXlvdXQoKTsK
IAogICAgIHZvaWQgc2V0TGFiZWwoU3RyaW5nJiYpOwogCi0gICAgLy8gRklYTUU6IElzIGl0IGlt
cG9zc2libGUgdG8gbGVnaXRpbWF0ZWx5IGhhdmUgbm8gYmluZCBncm91cCBsYXlvdXRzIGluIGEg
dmFsaWQgb2JqZWN0PwotICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuICFtX2JpbmRH
cm91cExheW91dHMuaXNFbXB0eSgpOyB9Ci0KICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUGlw
ZWxpbmVMYXlvdXQmKSBjb25zdDsKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgUGlwZWxpbmVM
YXlvdXQmKSBjb25zdDsKIApAQCAtNjYsNyArNTksNiBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAg
ICAgUGlwZWxpbmVMYXlvdXQoVmVjdG9yPFJlZjxCaW5kR3JvdXBMYXlvdXQ+PiYmLCBEZXZpY2Um
KTsKLSAgICBQaXBlbGluZUxheW91dChEZXZpY2UmKTsKIAogICAgIGNvbnN0IFZlY3RvcjxSZWY8
QmluZEdyb3VwTGF5b3V0Pj4gbV9iaW5kR3JvdXBMYXlvdXRzOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL1BpcGVsaW5lTGF5b3V0Lm1tIGIvU291cmNlL1dlYkdQVS9XZWJH
UFUvUGlwZWxpbmVMYXlvdXQubW0KaW5kZXggMDlmNWU1MDQwNmVhLi43ZTYwN2U2MGU1MzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1BpcGVsaW5lTGF5b3V0Lm1tCisrKyBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL1BpcGVsaW5lTGF5b3V0Lm1tCkBAIC01MiwxMSArNTIsNiBAQCBQ
aXBlbGluZUxheW91dDo6UGlwZWxpbmVMYXlvdXQoVmVjdG9yPFJlZjxCaW5kR3JvdXBMYXlvdXQ+
PiYmIGJpbmRHcm91cExheW91dHMsCiB7CiB9CiAKLVBpcGVsaW5lTGF5b3V0OjpQaXBlbGluZUxh
eW91dChEZXZpY2UmIGRldmljZSkKLSAgICA6IE9iamVjdEJhc2UoZGV2aWNlKQotewotfQotCiBQ
aXBlbGluZUxheW91dDo6flBpcGVsaW5lTGF5b3V0KCkgPSBkZWZhdWx0OwogCiB2b2lkIFBpcGVs
aW5lTGF5b3V0OjpzZXRMYWJlbChTdHJpbmcmJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL1F1ZXJ5U2V0LmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9RdWVyeVNldC5oCmluZGV4
IDc5MjEzMzJjNzJiZi4uZWRkNTljOWFkOThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9RdWVyeVNldC5oCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1F1ZXJ5U2V0LmgKQEAg
LTQ0LDIzICs0NCwxNiBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBRdWVyeVNldChjb3VudGVyU2FtcGxlQnVmZmVyLCBkZXZpY2UpKTsKICAgICB9Ci0gICAg
c3RhdGljIFJlZjxRdWVyeVNldD4gY3JlYXRlSW52YWxpZChEZXZpY2UmIGRldmljZSkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFF1ZXJ5U2V0KGRldmljZSkpOwotICAgIH0K
IAogICAgIH5RdWVyeVNldCgpOwogCiAgICAgdm9pZCBkZXN0cm95KCk7CiAgICAgdm9pZCBzZXRM
YWJlbChTdHJpbmcmJik7CiAKLSAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2Nv
dW50ZXJTYW1wbGVCdWZmZXI7IH0KLQogICAgIGlkPE1UTENvdW50ZXJTYW1wbGVCdWZmZXI+IGNv
dW50ZXJTYW1wbGVCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2NvdW50ZXJTYW1wbGVCdWZmZXI7
IH0KIAogcHJpdmF0ZToKICAgICBRdWVyeVNldChpZDxNVExDb3VudGVyU2FtcGxlQnVmZmVyPiwg
RGV2aWNlJik7Ci0gICAgUXVlcnlTZXQoRGV2aWNlJik7CiAKICAgICBjb25zdCBpZDxNVExDb3Vu
dGVyU2FtcGxlQnVmZmVyPiBtX2NvdW50ZXJTYW1wbGVCdWZmZXIgeyBuaWwgfTsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9RdWVyeVNldC5tbSBiL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL1F1ZXJ5U2V0Lm1tCmluZGV4IDgxNDJjNWNiYzdjNi4uODI0NjhiZDQxYjIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9RdWVyeVNldC5tbQorKysgYi9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9RdWVyeVNldC5tbQpAQCAtNDMsMTEgKzQzLDYgQEAgUXVlcnlTZXQ6OlF1ZXJ5
U2V0KGlkPE1UTENvdW50ZXJTYW1wbGVCdWZmZXI+IGNvdW50ZXJTYW1wbGVCdWZmZXIsIERldmlj
ZSYgZGV2aWMKIHsKIH0KIAotUXVlcnlTZXQ6OlF1ZXJ5U2V0KERldmljZSYgZGV2aWNlKQotICAg
IDogT2JqZWN0QmFzZShkZXZpY2UpCi17Ci19Ci0KIFF1ZXJ5U2V0Ojp+UXVlcnlTZXQoKSA9IGRl
ZmF1bHQ7CiAKIHZvaWQgUXVlcnlTZXQ6OmRlc3Ryb3koKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkdQVS9XZWJHUFUvUXVldWUuaCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1F1ZXVlLmgKaW5kZXgg
NTU5Mjg5OTgxMjlhLi5hZTgzNTNiNGFlMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL1F1ZXVlLmgKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUXVldWUuaApAQCAtNTMsMTAg
KzUzLDYgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUXVl
dWUoY29tbWFuZFF1ZXVlLCBkZXZpY2UpKTsKICAgICB9Ci0gICAgc3RhdGljIFJlZjxRdWV1ZT4g
Y3JlYXRlSW52YWxpZChEZXZpY2UmIGRldmljZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFF1ZXVlKGRldmljZSkpOwotICAgIH0KIAogICAgIH5RdWV1ZSgpOwogCkBAIC02
NiwxMyArNjIsMTAgQEAgcHVibGljOgogICAgIHZvaWQgd3JpdGVUZXh0dXJlKGNvbnN0IFdHUFVJ
bWFnZUNvcHlUZXh0dXJlJiBkZXN0aW5hdGlvbiwgY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGRh
dGFTaXplLCBjb25zdCBXR1BVVGV4dHVyZURhdGFMYXlvdXQmLCBjb25zdCBXR1BVRXh0ZW50M0Qm
IHdyaXRlU2l6ZSk7CiAgICAgdm9pZCBzZXRMYWJlbChTdHJpbmcmJik7CiAKLSAgICBib29sIGlz
VmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2NvbW1hbmRRdWV1ZTsgfQotCiAgICAgaWQ8TVRMQ29t
bWFuZFF1ZXVlPiBjb21tYW5kUXVldWUoKSBjb25zdCB7IHJldHVybiBtX2NvbW1hbmRRdWV1ZTsg
fQogCiBwcml2YXRlOgogICAgIFF1ZXVlKGlkPE1UTENvbW1hbmRRdWV1ZT4sIERldmljZSYpOwot
ICAgIFF1ZXVlKERldmljZSYpOwogCiAgICAgYm9vbCB2YWxpZGF0ZVN1Ym1pdCgpIGNvbnN0Owog
ICAgIGJvb2wgdmFsaWRhdGVXcml0ZUJ1ZmZlcihjb25zdCBCdWZmZXImLCB1aW50NjRfdCBidWZm
ZXJPZmZzZXQsIHNpemVfdCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9RdWV1ZS5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1F1ZXVlLm1tCmluZGV4IDk5N2YxNTQ1
OWU5OS4uOWE3MDA2YjkxYTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9RdWV1
ZS5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9RdWV1ZS5tbQpAQCAtNDAsMTEgKzQwLDYg
QEAgUXVldWU6OlF1ZXVlKGlkPE1UTENvbW1hbmRRdWV1ZT4gY29tbWFuZFF1ZXVlLCBEZXZpY2Um
IGRldmljZSkKIHsKIH0KIAotUXVldWU6OlF1ZXVlKERldmljZSYgZGV2aWNlKQotICAgIDogbV9k
ZXZpY2UoZGV2aWNlKQotewotfQotCiBRdWV1ZTo6flF1ZXVlKCkKIHsKICAgICAvLyBJZiB3ZSdy
ZSBub3QgaWRsZSwgdGhlbiB0aGVyZSdzIGEgcGVuZGluZyBjb21wbGV0ZWQgaGFuZGxlciB0byBi
ZSBydW4sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJCdW5kbGUuaCBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlckJ1bmRsZS5oCmluZGV4IDdmNmIwMDAwYzdhZi4u
NTg2NjhjZmM3ZjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJCdW5k
bGUuaAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJCdW5kbGUuaApAQCAtNDQsMjIg
KzQ0LDE1IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJl
bmRlckJ1bmRsZShpbmRpcmVjdENvbW1hbmRCdWZmZXIsIGRldmljZSkpOwogICAgIH0KLSAgICBz
dGF0aWMgUmVmPFJlbmRlckJ1bmRsZT4gY3JlYXRlSW52YWxpZChEZXZpY2UmIGRldmljZSkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbmRlckJ1bmRsZShkZXZpY2UpKTsK
LSAgICB9CiAKICAgICB+UmVuZGVyQnVuZGxlKCk7CiAKICAgICB2b2lkIHNldExhYmVsKFN0cmlu
ZyYmKTsKIAotICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1faW5kaXJlY3RDb21t
YW5kQnVmZmVyOyB9Ci0KICAgICBpZDxNVExJbmRpcmVjdENvbW1hbmRCdWZmZXI+IGluZGlyZWN0
Q29tbWFuZEJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1faW5kaXJlY3RDb21tYW5kQnVmZmVyOyB9
CiAKIHByaXZhdGU6CiAgICAgUmVuZGVyQnVuZGxlKGlkPE1UTEluZGlyZWN0Q29tbWFuZEJ1ZmZl
cj4sIERldmljZSYpOwotICAgIFJlbmRlckJ1bmRsZShEZXZpY2UmKTsKIAogICAgIGNvbnN0IGlk
PE1UTEluZGlyZWN0Q29tbWFuZEJ1ZmZlcj4gbV9pbmRpcmVjdENvbW1hbmRCdWZmZXIgeyBuaWwg
fTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJCdW5kbGUubW0g
Yi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJCdW5kbGUubW0KaW5kZXggMzhmMTZmOWFkMjYz
Li40Njk3NTZjOTc0NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlckJ1
bmRsZS5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJCdW5kbGUubW0KQEAgLTM2
LDExICszNiw2IEBAIFJlbmRlckJ1bmRsZTo6UmVuZGVyQnVuZGxlKGlkPE1UTEluZGlyZWN0Q29t
bWFuZEJ1ZmZlcj4gaW5kaXJlY3RDb21tYW5kQnVmZmVyLCBECiB7CiB9CiAKLVJlbmRlckJ1bmRs
ZTo6UmVuZGVyQnVuZGxlKERldmljZSYgZGV2aWNlKQotICAgIDogT2JqZWN0QmFzZShkZXZpY2Up
Ci17Ci19Ci0KIFJlbmRlckJ1bmRsZTo6flJlbmRlckJ1bmRsZSgpID0gZGVmYXVsdDsKIAogdm9p
ZCBSZW5kZXJCdW5kbGU6OnNldExhYmVsKFN0cmluZyYmIGxhYmVsKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyQnVuZGxlRW5jb2Rlci5oIGIvU291cmNlL1dlYkdQVS9X
ZWJHUFUvUmVuZGVyQnVuZGxlRW5jb2Rlci5oCmluZGV4IDlkNTQ1ZDBlNmU2Yi4uNWYxMDI0ODkz
ZWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJCdW5kbGVFbmNvZGVy
LmgKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyQnVuZGxlRW5jb2Rlci5oCkBAIC01
MCwxMCArNTAsNiBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBSZW5kZXJCdW5kbGVFbmNvZGVyKGluZGlyZWN0Q29tbWFuZEJ1ZmZlciwgZGV2aWNlKSk7CiAg
ICAgfQotICAgIHN0YXRpYyBSZWY8UmVuZGVyQnVuZGxlRW5jb2Rlcj4gY3JlYXRlSW52YWxpZChE
ZXZpY2UmIGRldmljZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbmRl
ckJ1bmRsZUVuY29kZXIoZGV2aWNlKSk7Ci0gICAgfQogCiAgICAgflJlbmRlckJ1bmRsZUVuY29k
ZXIoKTsKIApAQCAtNzEsMTEgKzY3LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0VmVydGV4QnVm
ZmVyKHVpbnQzMl90IHNsb3QsIGNvbnN0IEJ1ZmZlciYsIHVpbnQ2NF90IG9mZnNldCwgdWludDY0
X3Qgc2l6ZSk7CiAgICAgdm9pZCBzZXRMYWJlbChTdHJpbmcmJik7CiAKLSAgICBib29sIGlzVmFs
aWQoKSBjb25zdCB7IHJldHVybiBtX2luZGlyZWN0Q29tbWFuZEJ1ZmZlcjsgfQotCiBwcml2YXRl
OgogICAgIFJlbmRlckJ1bmRsZUVuY29kZXIoaWQ8TVRMSW5kaXJlY3RDb21tYW5kQnVmZmVyPiwg
RGV2aWNlJik7Ci0gICAgUmVuZGVyQnVuZGxlRW5jb2RlcihEZXZpY2UmKTsKIAogICAgIGJvb2wg
dmFsaWRhdGVQb3BEZWJ1Z0dyb3VwKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL1JlbmRlckJ1bmRsZUVuY29kZXIubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9S
ZW5kZXJCdW5kbGVFbmNvZGVyLm1tCmluZGV4IDU0NDk2Y2ZiYWM4NS4uNzc3ODgxYzMwZGIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJCdW5kbGVFbmNvZGVyLm1tCisr
KyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlckJ1bmRsZUVuY29kZXIubW0KQEAgLTQ3LDEx
ICs0Nyw2IEBAIFJlbmRlckJ1bmRsZUVuY29kZXI6OlJlbmRlckJ1bmRsZUVuY29kZXIoaWQ8TVRM
SW5kaXJlY3RDb21tYW5kQnVmZmVyPiBpbmRpcmVjdENvCiB7CiB9CiAKLVJlbmRlckJ1bmRsZUVu
Y29kZXI6OlJlbmRlckJ1bmRsZUVuY29kZXIoRGV2aWNlJiBkZXZpY2UpCi0gICAgOiBPYmplY3RC
YXNlKGRldmljZSkKLXsKLX0KLQogUmVuZGVyQnVuZGxlRW5jb2Rlcjo6flJlbmRlckJ1bmRsZUVu
Y29kZXIoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgUmVuZGVyQnVuZGxlRW5jb2Rlcjo6ZHJhdyh1aW50
MzJfdCB2ZXJ0ZXhDb3VudCwgdWludDMyX3QgaW5zdGFuY2VDb3VudCwgdWludDMyX3QgZmlyc3RW
ZXJ0ZXgsIHVpbnQzMl90IGZpcnN0SW5zdGFuY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9SZW5kZXJQYXNzRW5jb2Rlci5oIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVy
UGFzc0VuY29kZXIuaAppbmRleCAxNGE4YmI4ODJiOTQuLmIwN2YxMDkwNTlkYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyUGFzc0VuY29kZXIuaAorKysgYi9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9SZW5kZXJQYXNzRW5jb2Rlci5oCkBAIC01MSwxMCArNTEsNiBAQCBwdWJs
aWM6CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW5kZXJQYXNzRW5jb2Rl
cihyZW5kZXJDb21tYW5kRW5jb2RlciwgZGV2aWNlKSk7CiAgICAgfQotICAgIHN0YXRpYyBSZWY8
UmVuZGVyUGFzc0VuY29kZXI+IGNyZWF0ZUludmFsaWQoRGV2aWNlJiBkZXZpY2UpCi0gICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW5kZXJQYXNzRW5jb2RlcihkZXZpY2UpKTsK
LSAgICB9CiAKICAgICB+UmVuZGVyUGFzc0VuY29kZXIoKTsKIApAQCAtODEsMTEgKzc3LDggQEAg
cHVibGljOgogICAgIHZvaWQgc2V0Vmlld3BvcnQoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgd2lk
dGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgbWluRGVwdGgsIGZsb2F0IG1heERlcHRoKTsKICAgICB2
b2lkIHNldExhYmVsKFN0cmluZyYmKTsKIAotICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0
dXJuIG1fcmVuZGVyQ29tbWFuZEVuY29kZXI7IH0KLQogcHJpdmF0ZToKICAgICBSZW5kZXJQYXNz
RW5jb2RlcihpZDxNVExSZW5kZXJDb21tYW5kRW5jb2Rlcj4sIERldmljZSYpOwotICAgIFJlbmRl
clBhc3NFbmNvZGVyKERldmljZSYpOwogCiAgICAgYm9vbCB2YWxpZGF0ZVBvcERlYnVnR3JvdXAo
KSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyUGFzc0Vu
Y29kZXIubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJQYXNzRW5jb2Rlci5tbQppbmRl
eCAzYjIyNGE5YmEwMTUuLjA1ZDc4OTA2ZTI2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9X
ZWJHUFUvUmVuZGVyUGFzc0VuY29kZXIubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVu
ZGVyUGFzc0VuY29kZXIubW0KQEAgLTQxLDExICs0MSw2IEBAIFJlbmRlclBhc3NFbmNvZGVyOjpS
ZW5kZXJQYXNzRW5jb2RlcihpZDxNVExSZW5kZXJDb21tYW5kRW5jb2Rlcj4gcmVuZGVyQ29tbWFu
ZEVuCiB7CiB9CiAKLVJlbmRlclBhc3NFbmNvZGVyOjpSZW5kZXJQYXNzRW5jb2RlcihEZXZpY2Um
IGRldmljZSkKLSAgICA6IE9iamVjdEJhc2UoZGV2aWNlKQotewotfQotCiBSZW5kZXJQYXNzRW5j
b2Rlcjo6flJlbmRlclBhc3NFbmNvZGVyKCkgPSBkZWZhdWx0OwogCiB2b2lkIFJlbmRlclBhc3NF
bmNvZGVyOjpiZWdpbk9jY2x1c2lvblF1ZXJ5KHVpbnQzMl90IHF1ZXJ5SW5kZXgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJQaXBlbGluZS5oIGIvU291cmNlL1dlYkdQ
VS9XZWJHUFUvUmVuZGVyUGlwZWxpbmUuaAppbmRleCAwZThiOGZmNmFlYWQuLjc4ZTQxYzA2YTMy
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyUGlwZWxpbmUuaAorKysg
Yi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJQaXBlbGluZS5oCkBAIC00NSwyMyArNDUsMTYg
QEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVuZGVyUGlw
ZWxpbmUocmVuZGVyUGlwZWxpbmVTdGF0ZSwgZGV2aWNlKSk7CiAgICAgfQotICAgIHN0YXRpYyBS
ZWY8UmVuZGVyUGlwZWxpbmU+IGNyZWF0ZUludmFsaWQoRGV2aWNlJiBkZXZpY2UpCi0gICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW5kZXJQaXBlbGluZShkZXZpY2UpKTsKLSAg
ICB9CiAKICAgICB+UmVuZGVyUGlwZWxpbmUoKTsKIAogICAgIEJpbmRHcm91cExheW91dCogZ2V0
QmluZEdyb3VwTGF5b3V0KHVpbnQzMl90IGdyb3VwSW5kZXgpOwogICAgIHZvaWQgc2V0TGFiZWwo
U3RyaW5nJiYpOwogCi0gICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJQ
aXBlbGluZVN0YXRlOyB9Ci0KICAgICBpZDxNVExSZW5kZXJQaXBlbGluZVN0YXRlPiByZW5kZXJQ
aXBlbGluZVN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJQaXBlbGluZVN0YXRlOyB9CiAK
IHByaXZhdGU6CiAgICAgUmVuZGVyUGlwZWxpbmUoaWQ8TVRMUmVuZGVyUGlwZWxpbmVTdGF0ZT4s
IERldmljZSYpOwotICAgIFJlbmRlclBpcGVsaW5lKERldmljZSYpOwogCiAgICAgY29uc3QgaWQ8
TVRMUmVuZGVyUGlwZWxpbmVTdGF0ZT4gbV9yZW5kZXJQaXBlbGluZVN0YXRlIHsgbmlsIH07CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyUGlwZWxpbmUubW0gYi9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJQaXBlbGluZS5tbQppbmRleCA2MDMxNjcwYzBmNTYu
LmUzNzkyNGVhYjI1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyUGlw
ZWxpbmUubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyUGlwZWxpbmUubW0KQEAg
LTUwLDExICs1MCw2IEBAIFJlbmRlclBpcGVsaW5lOjpSZW5kZXJQaXBlbGluZShpZDxNVExSZW5k
ZXJQaXBlbGluZVN0YXRlPiByZW5kZXJQaXBlbGluZVN0YXRlLCBECiB7CiB9CiAKLVJlbmRlclBp
cGVsaW5lOjpSZW5kZXJQaXBlbGluZShEZXZpY2UmIGRldmljZSkKLSAgICA6IE9iamVjdEJhc2Uo
ZGV2aWNlKQotewotfQotCiBSZW5kZXJQaXBlbGluZTo6flJlbmRlclBpcGVsaW5lKCkgPSBkZWZh
dWx0OwogCiBCaW5kR3JvdXBMYXlvdXQqIFJlbmRlclBpcGVsaW5lOjpnZXRCaW5kR3JvdXBMYXlv
dXQodWludDMyX3QgZ3JvdXBJbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L1NhbXBsZXIuaCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1NhbXBsZXIuaAppbmRleCA3N2ZiNmIz
N2I1MDMuLmM4NGQwNzY1N2E5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvU2Ft
cGxlci5oCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1NhbXBsZXIuaApAQCAtNDQsMTcgKzQ0
LDExIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNhbXBs
ZXIoc2FtcGxlclN0YXRlLCBkZXNjcmlwdG9yLCBkZXZpY2UpKTsKICAgICB9Ci0gICAgc3RhdGlj
IFJlZjxTYW1wbGVyPiBjcmVhdGVJbnZhbGlkKERldmljZSYgZGV2aWNlKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2FtcGxlcihkZXZpY2UpKTsKLSAgICB9CiAKICAgICB+
U2FtcGxlcigpOwogCiAgICAgdm9pZCBzZXRMYWJlbChTdHJpbmcmJik7CiAKLSAgICBib29sIGlz
VmFsaWQoKSBjb25zdCB7IHJldHVybiBtX3NhbXBsZXJTdGF0ZTsgfQotCiAgICAgaWQ8TVRMU2Ft
cGxlclN0YXRlPiBzYW1wbGVyU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3NhbXBsZXJTdGF0ZTsg
fQogICAgIGNvbnN0IFdHUFVTYW1wbGVyRGVzY3JpcHRvciYgZGVzY3JpcHRvcigpIGNvbnN0IHsg
cmV0dXJuIG1fZGVzY3JpcHRvcjsgfQogICAgIGJvb2wgaXNDb21wYXJpc29uKCkgY29uc3QgeyBy
ZXR1cm4gZGVzY3JpcHRvcigpLmNvbXBhcmUgIT0gV0dQVUNvbXBhcmVGdW5jdGlvbl9VbmRlZmlu
ZWQ7IH0KQEAgLTYyLDcgKzU2LDYgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFNhbXBsZXIo
aWQ8TVRMU2FtcGxlclN0YXRlPiwgY29uc3QgV0dQVVNhbXBsZXJEZXNjcmlwdG9yJiwgRGV2aWNl
Jik7Ci0gICAgU2FtcGxlcihEZXZpY2UmKTsKIAogICAgIGNvbnN0IGlkPE1UTFNhbXBsZXJTdGF0
ZT4gbV9zYW1wbGVyU3RhdGUgeyBuaWwgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9X
ZWJHUFUvU2FtcGxlci5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1NhbXBsZXIubW0KaW5kZXgg
OTRiNjI1MmM0M2MzLi5hZTE0MTgwY2Q5NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL1NhbXBsZXIubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvU2FtcGxlci5tbQpAQCAt
MTY5LDExICsxNjksNiBAQCBTYW1wbGVyOjpTYW1wbGVyKGlkPE1UTFNhbXBsZXJTdGF0ZT4gc2Ft
cGxlclN0YXRlLCBjb25zdCBXR1BVU2FtcGxlckRlc2NyaXB0b3ImCiB7CiB9CiAKLVNhbXBsZXI6
OlNhbXBsZXIoRGV2aWNlJiBkZXZpY2UpCi0gICAgOiBPYmplY3RCYXNlKGRldmljZSkKLXsKLX0K
LQogU2FtcGxlcjo6flNhbXBsZXIoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgU2FtcGxlcjo6c2V0TGFi
ZWwoU3RyaW5nJiYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlLmgg
Yi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlLmgKaW5kZXggNzA2ODhmNmEyMThkLi40YmFj
NWQ4YWViMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmUuaAorKysg
Yi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlLmgKQEAgLTQ3LDEwICs0Nyw2IEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRleHR1cmUodGV4dHVyZSwg
ZGVzY3JpcHRvciwgV1RGTW92ZSh2aWV3Rm9ybWF0cyksIGRldmljZSkpOwogICAgIH0KLSAgICBz
dGF0aWMgUmVmPFRleHR1cmU+IGNyZWF0ZUludmFsaWQoRGV2aWNlJiBkZXZpY2UpCi0gICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0dXJlKGRldmljZSkpOwotICAgIH0KIAog
ICAgIH5UZXh0dXJlKCk7CiAKQEAgLTU4LDggKzU0LDYgQEAgcHVibGljOgogICAgIHZvaWQgZGVz
dHJveSgpOwogICAgIHZvaWQgc2V0TGFiZWwoU3RyaW5nJiYpOwogCi0gICAgYm9vbCBpc1ZhbGlk
KCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlOyB9Ci0KICAgICBzdGF0aWMgdWludDMyX3QgdGV4
ZWxCbG9ja1dpZHRoKFdHUFVUZXh0dXJlRm9ybWF0KTsgLy8gVGV4ZWxzCiAgICAgc3RhdGljIHVp
bnQzMl90IHRleGVsQmxvY2tIZWlnaHQoV0dQVVRleHR1cmVGb3JtYXQpOyAvLyBUZXhlbHMKICAg
ICAvLyBGb3IgZGVwdGgtc3RlbmNpbCB0ZXh0dXJlcywgdGhlIGlucHV0IHZhbHVlIHRvIHRleGVs
QmxvY2tTaXplKCkKQEAgLTg1LDcgKzc5LDYgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFRl
eHR1cmUoaWQ8TVRMVGV4dHVyZT4sIGNvbnN0IFdHUFVUZXh0dXJlRGVzY3JpcHRvciYsIFZlY3Rv
cjxXR1BVVGV4dHVyZUZvcm1hdD4mJiB2aWV3Rm9ybWF0cywgRGV2aWNlJik7Ci0gICAgVGV4dHVy
ZShEZXZpY2UmKTsKIAogICAgIFdHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3IgcmVzb2x2ZVRleHR1
cmVWaWV3RGVzY3JpcHRvckRlZmF1bHRzKGNvbnN0IFdHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3Im
KSBjb25zdDsKICAgICB1aW50MzJfdCBhcnJheUxheWVyQ291bnQoKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmUubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9UZXh0dXJlLm1tCmluZGV4IDNkYzUzZmM3OGFjYi4uNjkxOTMwMjc1ZTU4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL1RleHR1cmUubW0KQEAgLTIwNjMsMTEgKzIwNjMsNiBAQCBUZXh0dXJlOjpUZXh0dXJlKGlk
PE1UTFRleHR1cmU+IHRleHR1cmUsIGNvbnN0IFdHUFVUZXh0dXJlRGVzY3JpcHRvciYgZGVzY3Jp
cHRvcgogewogfQogCi1UZXh0dXJlOjpUZXh0dXJlKERldmljZSYgZGV2aWNlKQotICAgIDogT2Jq
ZWN0QmFzZShkZXZpY2UpCi17Ci19Ci0KIFRleHR1cmU6On5UZXh0dXJlKCkgPSBkZWZhdWx0Owog
CiBXR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yIFRleHR1cmU6OnJlc29sdmVUZXh0dXJlVmlld0Rl
c2NyaXB0b3JEZWZhdWx0cyhjb25zdCBXR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yJiBkZXNjcmlw
dG9yKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZVZpZXcu
aCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmVWaWV3LmgKaW5kZXggOTdiMGM4ZGQwMjJi
Li5kMjc5NzVkOGM1NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmVW
aWV3LmgKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZVZpZXcuaApAQCAtNDUsMjQg
KzQ1LDE3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRl
eHR1cmVWaWV3KHRleHR1cmUsIGRlc2NyaXB0b3IsIHJlbmRlckV4dGVudCwgZGV2aWNlKSk7CiAg
ICAgfQotICAgIHN0YXRpYyBSZWY8VGV4dHVyZVZpZXc+IGNyZWF0ZUludmFsaWQoRGV2aWNlJiBk
ZXZpY2UpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0dXJlVmlldyhk
ZXZpY2UpKTsKLSAgICB9CiAKICAgICB+VGV4dHVyZVZpZXcoKTsKIAogICAgIHZvaWQgc2V0TGFi
ZWwoU3RyaW5nJiYpOwogCi0gICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0
dXJlOyB9Ci0KICAgICBpZDxNVExUZXh0dXJlPiB0ZXh0dXJlKCkgY29uc3QgeyByZXR1cm4gbV90
ZXh0dXJlOyB9CiAgICAgY29uc3QgV0dQVVRleHR1cmVWaWV3RGVzY3JpcHRvciYgZGVzY3JpcHRv
cigpIGNvbnN0IHsgcmV0dXJuIG1fZGVzY3JpcHRvcjsgfQogICAgIGNvbnN0IHN0ZDo6b3B0aW9u
YWw8V0dQVUV4dGVudDNEPiYgcmVuZGVyRXh0ZW50KCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJF
eHRlbnQ7IH0KIAogcHJpdmF0ZToKICAgICBUZXh0dXJlVmlldyhpZDxNVExUZXh0dXJlPiwgY29u
c3QgV0dQVVRleHR1cmVWaWV3RGVzY3JpcHRvciYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V0dQVUV4
dGVudDNEPiYsIERldmljZSYpOwotICAgIFRleHR1cmVWaWV3KERldmljZSYpOwogCiAgICAgY29u
c3QgaWQ8TVRMVGV4dHVyZT4gbV90ZXh0dXJlIHsgbmlsIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL1RleHR1cmVWaWV3Lm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4
dHVyZVZpZXcubW0KaW5kZXggYTg3MWQzYTBhMzFmLi4wMjNkOWZhMDEyNWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmVWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL1RleHR1cmVWaWV3Lm1tCkBAIC0zOCwxMiArMzgsNiBAQCBUZXh0dXJlVmlldzo6VGV4
dHVyZVZpZXcoaWQ8TVRMVGV4dHVyZT4gdGV4dHVyZSwgY29uc3QgV0dQVVRleHR1cmVWaWV3RGVz
Y3JpcHRvcgogewogfQogCi1UZXh0dXJlVmlldzo6VGV4dHVyZVZpZXcoRGV2aWNlJiBkZXZpY2Up
Ci0gICAgOiBPYmplY3RCYXNlKGRldmljZSkKLSAgICAsIG1fZGVzY3JpcHRvciB7IH0KLXsKLX0K
LQogVGV4dHVyZVZpZXc6On5UZXh0dXJlVmlldygpID0gZGVmYXVsdDsKIAogdm9pZCBUZXh0dXJl
Vmlldzo6c2V0TGFiZWwoU3RyaW5nJiYgbGFiZWwpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456546</attachid>
            <date>2022-04-04 01:05:24 -0700</date>
            <delta_ts>2022-04-07 02:57:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>58291</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">Y29tbWl0IDQzNjM4YzU5MTY4YWUyZjk5YjhmZTA2OThiNGRmYmNiYWE1MTE5MDYKQXV0aG9yOiBN
eWxlcyBDLiBNYXhmaWVsZCA8bW1heGZpZWxkQGFwcGxlLmNvbT4KRGF0ZTogICBNb24gQXByIDQg
MDE6MDU6MDAgMjAyMiAtMDcwMAoKICAgIE9iamVjdEJhc2UKCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViR1BVL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nCmluZGV4IDM5OGI2MzUy
YjZlYy4uOTI3MDRjNjNmOGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViR1BVL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwOCBAQAorMjAyMi0wNC0w
NCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtX
ZWJHUFVdIEFkZCBPYmplY3RCYXNlIGJhc2UgY2xhc3MgZm9yIFdlYkdQVSBvYmplY3RzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg3MTkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGJhc2UgY2xh
c3Mgd2lsbCBiZSB0aGUgaG9tZSBvZiB0aGUgImlzIHZhbGlkIHRvIHVzZSB3aXRoIiBvcGVyYXRp
b24gKGFzIGRlc2NyaWJlZCBhdAorICAgICAgICBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1
d2ViLyNhYnN0cmFjdC1vcGRlZi12YWxpZC10by11c2Utd2l0aCksIHdoaWNoIGlzIGNvbW1vbiB0
byBhbGwKKyAgICAgICAgb2JqZWN0cyBhbmQgdXNlcyB0aG9zZSBvYmplY3RzIFJlZnMgdG8gdGhl
aXIgRGV2aWNlLiBUaGlzIHBhdGNoIGp1c3QgYWRkcyB0aGUgY2xhc3MgYW5kCisgICAgICAgIG1h
a2VzIHRoZSBleGlzdGluZyBvYmplY3RzIGluaGVyaXQgZnJvbSBpdCAtIHRoZSBhY3R1YWwgImlz
IHZhbGlkIHRvIHVzZSB3aXRoIiBvcGVyYXRpb24KKyAgICAgICAgd2lsbCBjb21lIGluIGEgc3Vi
c2VxdWVudCBwYXRjaC4KKworICAgICAgICBUaGUgc3BlYyBhbHNvIGhhcyB0aGUgcmVwcmVzZW50
YXRpb24gb2YgdGhpcyBiYXNlIGNsYXNzLCBuYW1lZCBHUFVPYmplY3RCYXNlLCB3aGljaCBzdXBw
b3J0cworICAgICAgICB0aGUgc2V0dGluZyBvZiBsYWJlbHMuIEhvd2V2ZXIsIGluIG91ciBXZWJH
UFUgaW1wbGVtZW50YXRpb24sIGFsbCBvYmplY3RzIGltcGxlbWVudCBsYWJlbHMKKyAgICAgICAg
ZGlmZmVyZW50bHksIHNvIHRoYXQgaGFuZGxpbmcgaXNuJ3QgcHJlc2VudCBpbiBvdXIgT2JqZWN0
QmFzZSBjbGFzcy4KKworICAgICAgICAqIFdlYkdQVS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIFdlYkdQVS9BZGFwdGVyLmg6CisgICAgICAgICogV2ViR1BVL0JpbmRHcm91
cC5oOgorICAgICAgICAoV2ViR1BVOjpCaW5kR3JvdXA6OmNyZWF0ZSk6CisgICAgICAgICogV2Vi
R1BVL0JpbmRHcm91cC5tbToKKyAgICAgICAgKFdlYkdQVTo6RGV2aWNlOjpjcmVhdGVCaW5kR3Jv
dXApOgorICAgICAgICAoV2ViR1BVOjpCaW5kR3JvdXA6OkJpbmRHcm91cCk6CisgICAgICAgICog
V2ViR1BVL0JpbmRHcm91cExheW91dC5oOgorICAgICAgICAoV2ViR1BVOjpCaW5kR3JvdXBMYXlv
dXQ6OmNyZWF0ZSk6CisgICAgICAgICogV2ViR1BVL0JpbmRHcm91cExheW91dC5tbToKKyAgICAg
ICAgKFdlYkdQVTo6RGV2aWNlOjpjcmVhdGVCaW5kR3JvdXBMYXlvdXQpOgorICAgICAgICAoV2Vi
R1BVOjpCaW5kR3JvdXBMYXlvdXQ6OkJpbmRHcm91cExheW91dCk6CisgICAgICAgICogV2ViR1BV
L0J1ZmZlci5oOgorICAgICAgICAqIFdlYkdQVS9CdWZmZXIubW06CisgICAgICAgIChXZWJHUFU6
OkJ1ZmZlcjo6QnVmZmVyKToKKyAgICAgICAgKiBXZWJHUFUvQ29tbWFuZEJ1ZmZlci5oOgorICAg
ICAgICAoV2ViR1BVOjpDb21tYW5kQnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAqIFdlYkdQVS9D
b21tYW5kQnVmZmVyLm1tOgorICAgICAgICAoV2ViR1BVOjpDb21tYW5kQnVmZmVyOjpDb21tYW5k
QnVmZmVyKToKKyAgICAgICAgKiBXZWJHUFUvQ29tbWFuZEVuY29kZXIuaDoKKyAgICAgICAgKiBX
ZWJHUFUvQ29tbWFuZEVuY29kZXIubW06CisgICAgICAgIChXZWJHUFU6OkNvbW1hbmRFbmNvZGVy
OjpDb21tYW5kRW5jb2Rlcik6CisgICAgICAgIChXZWJHUFU6OkNvbW1hbmRFbmNvZGVyOjpiZWdp
bkNvbXB1dGVQYXNzKToKKyAgICAgICAgKFdlYkdQVTo6Q29tbWFuZEVuY29kZXI6OmJlZ2luUmVu
ZGVyUGFzcyk6CisgICAgICAgIChXZWJHUFU6OkNvbW1hbmRFbmNvZGVyOjpmaW5pc2gpOgorICAg
ICAgICAqIFdlYkdQVS9Db21tYW5kc01peGluLmg6CisgICAgICAgICogV2ViR1BVL0NvbXB1dGVQ
YXNzRW5jb2Rlci5oOgorICAgICAgICAoV2ViR1BVOjpDb21wdXRlUGFzc0VuY29kZXI6OmNyZWF0
ZSk6CisgICAgICAgICogV2ViR1BVL0NvbXB1dGVQYXNzRW5jb2Rlci5tbToKKyAgICAgICAgKFdl
YkdQVTo6Q29tcHV0ZVBhc3NFbmNvZGVyOjpDb21wdXRlUGFzc0VuY29kZXIpOgorICAgICAgICAq
IFdlYkdQVS9Db21wdXRlUGlwZWxpbmUuaDoKKyAgICAgICAgKFdlYkdQVTo6Q29tcHV0ZVBpcGVs
aW5lOjpjcmVhdGUpOgorICAgICAgICAqIFdlYkdQVS9Db21wdXRlUGlwZWxpbmUubW06CisgICAg
ICAgIChXZWJHUFU6OkRldmljZTo6Y3JlYXRlQ29tcHV0ZVBpcGVsaW5lKToKKyAgICAgICAgKFdl
YkdQVTo6Q29tcHV0ZVBpcGVsaW5lOjpDb21wdXRlUGlwZWxpbmUpOgorICAgICAgICAqIFdlYkdQ
VS9EZXZpY2UuaDoKKyAgICAgICAgKiBXZWJHUFUvSW5zdGFuY2UuaDoKKyAgICAgICAgKiBXZWJH
UFUvT2JqZWN0QmFzZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5k
c01peGluLmguCisgICAgICAgICogV2ViR1BVL09iamVjdEJhc2UubW06IENvcGllZCBmcm9tIFNv
dXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRzTWl4aW4uaC4KKyAgICAgICAgKFdlYkdQVTo6T2Jq
ZWN0QmFzZTo6T2JqZWN0QmFzZSk6CisgICAgICAgICogV2ViR1BVL1BpcGVsaW5lTGF5b3V0Lmg6
CisgICAgICAgIChXZWJHUFU6OlBpcGVsaW5lTGF5b3V0OjpjcmVhdGUpOgorICAgICAgICAqIFdl
YkdQVS9QaXBlbGluZUxheW91dC5tbToKKyAgICAgICAgKFdlYkdQVTo6RGV2aWNlOjpjcmVhdGVQ
aXBlbGluZUxheW91dCk6CisgICAgICAgIChXZWJHUFU6OlBpcGVsaW5lTGF5b3V0OjpQaXBlbGlu
ZUxheW91dCk6CisgICAgICAgICogV2ViR1BVL1F1ZXJ5U2V0Lmg6CisgICAgICAgIChXZWJHUFU6
OlF1ZXJ5U2V0OjpjcmVhdGUpOgorICAgICAgICAqIFdlYkdQVS9RdWVyeVNldC5tbToKKyAgICAg
ICAgKFdlYkdQVTo6RGV2aWNlOjpjcmVhdGVRdWVyeVNldCk6CisgICAgICAgIChXZWJHUFU6OlF1
ZXJ5U2V0OjpRdWVyeVNldCk6CisgICAgICAgICogV2ViR1BVL1F1ZXVlLmg6CisgICAgICAgICog
V2ViR1BVL1JlbmRlckJ1bmRsZS5oOgorICAgICAgICAoV2ViR1BVOjpSZW5kZXJCdW5kbGU6OmNy
ZWF0ZSk6CisgICAgICAgICogV2ViR1BVL1JlbmRlckJ1bmRsZS5tbToKKyAgICAgICAgKFdlYkdQ
VTo6UmVuZGVyQnVuZGxlOjpSZW5kZXJCdW5kbGUpOgorICAgICAgICAqIFdlYkdQVS9SZW5kZXJC
dW5kbGVFbmNvZGVyLmg6CisgICAgICAgIChXZWJHUFU6OlJlbmRlckJ1bmRsZUVuY29kZXI6OmNy
ZWF0ZSk6CisgICAgICAgICogV2ViR1BVL1JlbmRlckJ1bmRsZUVuY29kZXIubW06CisgICAgICAg
IChXZWJHUFU6OkRldmljZTo6Y3JlYXRlUmVuZGVyQnVuZGxlRW5jb2Rlcik6CisgICAgICAgIChX
ZWJHUFU6OlJlbmRlckJ1bmRsZUVuY29kZXI6OlJlbmRlckJ1bmRsZUVuY29kZXIpOgorICAgICAg
ICAoV2ViR1BVOjpSZW5kZXJCdW5kbGVFbmNvZGVyOjpmaW5pc2gpOgorICAgICAgICAqIFdlYkdQ
VS9SZW5kZXJQYXNzRW5jb2Rlci5oOgorICAgICAgICAoV2ViR1BVOjpSZW5kZXJQYXNzRW5jb2Rl
cjo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJHUFUvUmVuZGVyUGFzc0VuY29kZXIubW06CisgICAg
ICAgIChXZWJHUFU6OlJlbmRlclBhc3NFbmNvZGVyOjpSZW5kZXJQYXNzRW5jb2Rlcik6CisgICAg
ICAgICogV2ViR1BVL1JlbmRlclBpcGVsaW5lLmg6CisgICAgICAgIChXZWJHUFU6OlJlbmRlclBp
cGVsaW5lOjpjcmVhdGUpOgorICAgICAgICAqIFdlYkdQVS9SZW5kZXJQaXBlbGluZS5tbToKKyAg
ICAgICAgKFdlYkdQVTo6RGV2aWNlOjpjcmVhdGVSZW5kZXJQaXBlbGluZSk6CisgICAgICAgIChX
ZWJHUFU6OlJlbmRlclBpcGVsaW5lOjpSZW5kZXJQaXBlbGluZSk6CisgICAgICAgICogV2ViR1BV
L1NhbXBsZXIuaDoKKyAgICAgICAgKiBXZWJHUFUvU2FtcGxlci5tbToKKyAgICAgICAgKFdlYkdQ
VTo6U2FtcGxlcjo6U2FtcGxlcik6CisgICAgICAgICogV2ViR1BVL1NoYWRlck1vZHVsZS5oOgor
ICAgICAgICAoV2ViR1BVOjpTaGFkZXJNb2R1bGU6OmNyZWF0ZSk6CisgICAgICAgICogV2ViR1BV
L1NoYWRlck1vZHVsZS5tbToKKyAgICAgICAgKFdlYkdQVTo6ZWFybHlDb21waWxlU2hhZGVyTW9k
dWxlKToKKyAgICAgICAgKFdlYkdQVTo6RGV2aWNlOjpjcmVhdGVTaGFkZXJNb2R1bGUpOgorICAg
ICAgICAoV2ViR1BVOjpTaGFkZXJNb2R1bGU6OlNoYWRlck1vZHVsZSk6CisgICAgICAgICogV2Vi
R1BVL1RleHR1cmUuaDoKKyAgICAgICAgKiBXZWJHUFUvVGV4dHVyZS5tbToKKyAgICAgICAgKFdl
YkdQVTo6VGV4dHVyZTo6VGV4dHVyZSk6CisgICAgICAgIChXZWJHUFU6OlRleHR1cmU6OmNyZWF0
ZVZpZXcpOgorICAgICAgICAqIFdlYkdQVS9UZXh0dXJlVmlldy5oOgorICAgICAgICAoV2ViR1BV
OjpUZXh0dXJlVmlldzo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJHUFUvVGV4dHVyZVZpZXcubW06
CisgICAgICAgIChXZWJHUFU6OlRleHR1cmVWaWV3OjpUZXh0dXJlVmlldyk6CisKIDIwMjItMDQt
MDMgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBb
V2ViR1BVXSBEZWxldGUgcmVkdW5kYW50IHNwZWMgcXVvdGVzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkdQVS9X
ZWJHUFUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiMzg4OTIyNjk3ZGMuLjg2ZDMy
YmI5ODJhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0xMSw2ICsxMSw4IEBACiAJCTFDMDIzRDQwMjc0NDkwNzAwMDFEQjczNCAvKiBs
aWJ3Z3NsLmEgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQ0VCRDdGMjI3MTZCMkNDMDBBNTI1NEQgLyogbGlid2dzbC5hICovOyB9OwogCQkxQzAyM0Q0
QjI3NDQ5NUI5MDAxREI3MzQgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29y
a3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMwMjNENEEyNzQ0OTVCOTAw
MURCNzM0IC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLzsgfTsKIAkJMUMyQ0VERUUyNzFF
OEE3MzAwRURDMTZGIC8qIE1ldGFsLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMkNFREVEMjcxRThBNzMwMEVEQzE2RiAvKiBNZXRh
bC5mcmFtZXdvcmsgKi87IH07CisJCTFDMzM3NTVFMjdGQTIzQjgwMDJGMTY0NCAvKiBPYmplY3RC
YXNlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMz
Mzc1NUMyN0ZBMjNCODAwMkYxNjQ0IC8qIE9iamVjdEJhc2UubW0gKi87IH07CisJCTFDMzM3NTVG
MjdGQTIzQjgwMDJGMTY0NCAvKiBPYmplY3RCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzMzNzU1RDI3RkEyM0I4MDAyRjE2NDQgLyogT2JqZWN0
QmFzZS5oICovOyB9OwogCQkxQzUzMTlDMDI3QkRDNkNDMDBDRDEyN0UgLyogbWFpbi5zd2lmdCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDNTMxOUJGMjdC
REM2Q0MwMENEMTI3RSAvKiBtYWluLnN3aWZ0ICovOyB9OwogCQkxQzUzMTlDNTI3QkRDNzI3MDBD
RDEyN0UgLyogV2ViR1BVLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFDRUJEN0UzMjcxNkFGQkEwMEE1MjU0RCAvKiBXZWJHUFUuZnJh
bWV3b3JrICovOyB9OwogCQkxQzU4MkZGOTI3RTA0MTMxMDA5QjQwRjAgLyogQ29tbWFuZHNNaXhp
bi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDNTgy
RkY3MjdFMDQxMzEwMDlCNDBGMCAvKiBDb21tYW5kc01peGluLm1tICovOyB9OwpAQCAtMTMxLDYg
KzEzMyw4IEBACiAJCTFDMDIzRDQ3Mjc0NDkxNkQwMDFEQjczNCAvKiBXR1NMVW5pdFRlc3RzLnhj
Y29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC54Y2NvbmZpZzsgcGF0aCA9IFdHU0xVbml0VGVzdHMueGNjb25maWc7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFDMDIzRDRBMjc0NDk1QjkwMDFEQjczNCAvKiBKYXZhU2NyaXB0
Q29yZS5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgcGF0aCA9IEphdmFTY3JpcHRDb3JlLmZyYW1ld29y
azsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJMUMyQ0VERUQyNzFFOEE3
MzAwRURDMTZGIC8qIE1ldGFsLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gTWV0YWwuZnJh
bWV3b3JrOyBwYXRoID0gU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9NZXRhbC5mcmFtZXdvcms7
IHNvdXJjZVRyZWUgPSBTREtST09UOyB9OworCQkxQzMzNzU1QzI3RkEyM0I4MDAyRjE2NDQgLyog
T2JqZWN0QmFzZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE9iamVjdEJhc2UubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDMzM3NTVEMjdGQTIzQjgwMDJGMTY0NCAvKiBPYmpl
Y3RCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9iamVjdEJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUM1MzE5QkQyN0JEQzZDQjAwQ0QxMjdFIC8qIENvbW1hbmRMaW5lUGxheWdy
b3VuZCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNv
bXBpbGVkLm1hY2gtby5leGVjdXRhYmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gQ29t
bWFuZExpbmVQbGF5Z3JvdW5kOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9Owog
CQkxQzUzMTlCRjI3QkRDNkNDMDBDRDEyN0UgLyogbWFpbi5zd2lmdCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuc3dpZnQ7IHBhdGgg
PSBtYWluLnN3aWZ0OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzUzMTlDQTI3QkRE
NzAwMDBDRDEyN0UgLyogQ29tbWFuZExpbmVQbGF5Z3JvdW5kLnhjY29uZmlnICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0
aCA9IENvbW1hbmRMaW5lUGxheWdyb3VuZC54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTM0NCw2ICszNDgsOCBAQAogCQkJCTFDRUJEODBCMjcxNkMzNzkwMEE1MjU0RCAv
KiBFeHBvcnRNYWNyb3MuaCAqLywKIAkJCQkxQzVBQ0FBMDI3M0E0MjZEMDA5NUY4RDUgLyogSW5z
dGFuY2UuaCAqLywKIAkJCQkxQzVBQ0E5MjI3M0E0MUMyMDA5NUY4RDUgLyogSW5zdGFuY2UubW0g
Ki8sCisJCQkJMUMzMzc1NUQyN0ZBMjNCODAwMkYxNjQ0IC8qIE9iamVjdEJhc2UuaCAqLywKKwkJ
CQkxQzMzNzU1QzI3RkEyM0I4MDAyRjE2NDQgLyogT2JqZWN0QmFzZS5tbSAqLywKIAkJCQkxQzVB
Q0FEQTI3M0E0RTcxMDA5NUY4RDUgLyogUGlwZWxpbmVMYXlvdXQuaCAqLywKIAkJCQkxQzVBQ0FF
NDI3M0E1NUREMDA5NUY4RDUgLyogUGlwZWxpbmVMYXlvdXQubW0gKi8sCiAJCQkJMUM1QUNBQUMy
NzNBNDI2RDAwOTVGOEQ1IC8qIFF1ZXJ5U2V0LmggKi8sCkBAIC00NzgsNiArNDg0LDcgQEAKIAkJ
CQkxQzU4MzAxODI3RTE2ODIzMDA5QjQwRjAgLyogQVBJQ29udmVyc2lvbnMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFDNUFDQUQ3MjczQTRENzAwMDk1RjhENSAvKiBCaW5kR3JvdXAuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFDNTgyRkZBMjdFMDQxMzEwMDlCNDBGMCAvKiBDb21tYW5kc01peGluLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkxQzMzNzU1RjI3RkEyM0I4MDAyRjE2NDQgLyogT2JqZWN0QmFz
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUNFQkQ3RTcyNzE2QUZCQTAwQTUyNTREIC8qIFdlYkdQ
VS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUM1QUNBRDMyNzNBNEM4NjAwOTVGOEQ1IC8qIFdlYkdQ
VUV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwpAQCAtNzI4LDYgKzczNSw3IEBACiAJCQkJMUM1
QUNBQzAyNzNBNDI2RDAwOTVGOEQ1IC8qIENvbXB1dGVQaXBlbGluZS5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTFDNUFDQUMxMjczQTQyNkQwMDk1RjhENSAvKiBEZXZpY2UubW0gaW4gU291cmNlcyAq
LywKIAkJCQkxQzVBQ0E5NDI3M0E0MUMyMDA5NUY4RDUgLyogSW5zdGFuY2UubW0gaW4gU291cmNl
cyAqLywKKwkJCQkxQzMzNzU1RTI3RkEyM0I4MDAyRjE2NDQgLyogT2JqZWN0QmFzZS5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTFDNUFDQUU1MjczQTU1REQwMDk1RjhENSAvKiBQaXBlbGluZUxheW91
dC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFDNUFDQUJEMjczQTQyNkQwMDk1RjhENSAvKiBRdWVy
eVNldC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFDNUFDQUNCMjczQTQyNkUwMDk1RjhENSAvKiBR
dWV1ZS5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUv
QWRhcHRlci5oIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQWRhcHRlci5oCmluZGV4IDZkZjRjODk5
OWJkOC4uZjViYmFhNWJjNmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9BZGFw
dGVyLmgKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQWRhcHRlci5oCkBAIC0zOSw2ICszOSw3
IEBAIG5hbWVzcGFjZSBXZWJHUFUgewogY2xhc3MgRGV2aWNlOwogY2xhc3MgSW5zdGFuY2U7CiAK
Ky8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIvI2dwdWFkYXB0ZXIKIGNsYXNzIEFk
YXB0ZXIgOiBwdWJsaWMgV0dQVUFkYXB0ZXJJbXBsLCBwdWJsaWMgUmVmQ291bnRlZDxBZGFwdGVy
PiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9CaW5kR3JvdXAuaCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0Jp
bmRHcm91cC5oCmluZGV4IDA0NzQ5OWJmMTJlNy4uMGZkNjk3YmU1NWNlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9CaW5kR3JvdXAuaAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9CaW5kR3JvdXAuaApAQCAtMjUsMjEgKzI1LDI0IEBACiAKICNwcmFnbWEgb25jZQogCisjaW1w
b3J0ICJPYmplY3RCYXNlLmgiCiAjaW1wb3J0IDx3dGYvRmFzdE1hbGxvYy5oPgogI2ltcG9ydCA8
d3RmL1JlZi5oPgotI2ltcG9ydCA8d3RmL1JlZkNvdW50ZWQuaD4KIAogc3RydWN0IFdHUFVCaW5k
R3JvdXBJbXBsIHsKIH07CiAKIG5hbWVzcGFjZSBXZWJHUFUgewogCi1jbGFzcyBCaW5kR3JvdXAg
OiBwdWJsaWMgV0dQVUJpbmRHcm91cEltcGwsIHB1YmxpYyBSZWZDb3VudGVkPEJpbmRHcm91cD4g
eworY2xhc3MgRGV2aWNlOworCisvLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNn
cHViaW5kZ3JvdXAKK2NsYXNzIEJpbmRHcm91cCA6IHB1YmxpYyBXR1BVQmluZEdyb3VwSW1wbCwg
cHVibGljIE9iamVjdEJhc2UgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgotICAgIHN0YXRpYyBSZWY8QmluZEdyb3VwPiBjcmVhdGUoaWQ8TVRMQnVmZmVyPiB2ZXJ0ZXhB
cmd1bWVudEJ1ZmZlciwgaWQ8TVRMQnVmZmVyPiBmcmFnbWVudEFyZ3VtZW50QnVmZmVyLCBpZDxN
VExCdWZmZXI+IGNvbXB1dGVBcmd1bWVudEJ1ZmZlcikKKyAgICBzdGF0aWMgUmVmPEJpbmRHcm91
cD4gY3JlYXRlKGlkPE1UTEJ1ZmZlcj4gdmVydGV4QXJndW1lbnRCdWZmZXIsIGlkPE1UTEJ1ZmZl
cj4gZnJhZ21lbnRBcmd1bWVudEJ1ZmZlciwgaWQ8TVRMQnVmZmVyPiBjb21wdXRlQXJndW1lbnRC
dWZmZXIsIERldmljZSYgZGV2aWNlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQmluZEdyb3VwKHZlcnRleEFyZ3VtZW50QnVmZmVyLCBmcmFnbWVudEFyZ3VtZW50QnVmZmVy
LCBjb21wdXRlQXJndW1lbnRCdWZmZXIpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
QmluZEdyb3VwKHZlcnRleEFyZ3VtZW50QnVmZmVyLCBmcmFnbWVudEFyZ3VtZW50QnVmZmVyLCBj
b21wdXRlQXJndW1lbnRCdWZmZXIsIGRldmljZSkpOwogICAgIH0KIAogICAgIH5CaW5kR3JvdXAo
KTsKQEAgLTUxLDcgKzU0LDcgQEAgcHVibGljOgogICAgIGlkPE1UTEJ1ZmZlcj4gY29tcHV0ZUFy
Z3VtZW50QnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9jb21wdXRlQXJndW1lbnRCdWZmZXI7IH0K
IAogcHJpdmF0ZToKLSAgICBCaW5kR3JvdXAoaWQ8TVRMQnVmZmVyPiB2ZXJ0ZXhBcmd1bWVudEJ1
ZmZlciwgaWQ8TVRMQnVmZmVyPiBmcmFnbWVudEFyZ3VtZW50QnVmZmVyLCBpZDxNVExCdWZmZXI+
IGNvbXB1dGVBcmd1bWVudEJ1ZmZlcik7CisgICAgQmluZEdyb3VwKGlkPE1UTEJ1ZmZlcj4gdmVy
dGV4QXJndW1lbnRCdWZmZXIsIGlkPE1UTEJ1ZmZlcj4gZnJhZ21lbnRBcmd1bWVudEJ1ZmZlciwg
aWQ8TVRMQnVmZmVyPiBjb21wdXRlQXJndW1lbnRCdWZmZXIsIERldmljZSYpOwogCiAgICAgY29u
c3QgaWQ8TVRMQnVmZmVyPiBtX3ZlcnRleEFyZ3VtZW50QnVmZmVyIHsgbmlsIH07CiAgICAgY29u
c3QgaWQ8TVRMQnVmZmVyPiBtX2ZyYWdtZW50QXJndW1lbnRCdWZmZXIgeyBuaWwgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0JpbmRHcm91cC5tbSBiL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL0JpbmRHcm91cC5tbQppbmRleCA2M2FlY2JhZmQ3Y2EuLjVhMTRhZTY2MDdmNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQmluZEdyb3VwLm1tCisrKyBiL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL0JpbmRHcm91cC5tbQpAQCAtMTExLDExICsxMTEsMTIgQEAgUmVmUHRyPEJp
bmRHcm91cD4gRGV2aWNlOjpjcmVhdGVCaW5kR3JvdXAoY29uc3QgV0dQVUJpbmRHcm91cERlc2Ny
aXB0b3ImIGRlc2NyaXAKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBCaW5kR3JvdXA6
OmNyZWF0ZSh2ZXJ0ZXhBcmd1bWVudEJ1ZmZlciwgZnJhZ21lbnRBcmd1bWVudEJ1ZmZlciwgY29t
cHV0ZUFyZ3VtZW50QnVmZmVyKTsKKyAgICByZXR1cm4gQmluZEdyb3VwOjpjcmVhdGUodmVydGV4
QXJndW1lbnRCdWZmZXIsIGZyYWdtZW50QXJndW1lbnRCdWZmZXIsIGNvbXB1dGVBcmd1bWVudEJ1
ZmZlciwgKnRoaXMpOwogfQogCi1CaW5kR3JvdXA6OkJpbmRHcm91cChpZDxNVExCdWZmZXI+IHZl
cnRleEFyZ3VtZW50QnVmZmVyLCBpZDxNVExCdWZmZXI+IGZyYWdtZW50QXJndW1lbnRCdWZmZXIs
IGlkPE1UTEJ1ZmZlcj4gY29tcHV0ZUFyZ3VtZW50QnVmZmVyKQotICAgIDogbV92ZXJ0ZXhBcmd1
bWVudEJ1ZmZlcih2ZXJ0ZXhBcmd1bWVudEJ1ZmZlcikKK0JpbmRHcm91cDo6QmluZEdyb3VwKGlk
PE1UTEJ1ZmZlcj4gdmVydGV4QXJndW1lbnRCdWZmZXIsIGlkPE1UTEJ1ZmZlcj4gZnJhZ21lbnRB
cmd1bWVudEJ1ZmZlciwgaWQ8TVRMQnVmZmVyPiBjb21wdXRlQXJndW1lbnRCdWZmZXIsIERldmlj
ZSYgZGV2aWNlKQorICAgIDogT2JqZWN0QmFzZShkZXZpY2UpCisgICAgLCBtX3ZlcnRleEFyZ3Vt
ZW50QnVmZmVyKHZlcnRleEFyZ3VtZW50QnVmZmVyKQogICAgICwgbV9mcmFnbWVudEFyZ3VtZW50
QnVmZmVyKGZyYWdtZW50QXJndW1lbnRCdWZmZXIpCiAgICAgLCBtX2NvbXB1dGVBcmd1bWVudEJ1
ZmZlcihjb21wdXRlQXJndW1lbnRCdWZmZXIpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9CaW5kR3JvdXBMYXlvdXQuaCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0JpbmRHcm91
cExheW91dC5oCmluZGV4IDY5N2IyYWY5OTRkYy4uMjc2ZjkzNGUwZjdhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9CaW5kR3JvdXBMYXlvdXQuaAorKysgYi9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9CaW5kR3JvdXBMYXlvdXQuaApAQCAtMjUsMjEgKzI1LDI0IEBACiAKICNwcmFnbWEg
b25jZQogCisjaW1wb3J0ICJPYmplY3RCYXNlLmgiCiAjaW1wb3J0IDx3dGYvRmFzdE1hbGxvYy5o
PgogI2ltcG9ydCA8d3RmL1JlZi5oPgotI2ltcG9ydCA8d3RmL1JlZkNvdW50ZWQuaD4KIAogc3Ry
dWN0IFdHUFVCaW5kR3JvdXBMYXlvdXRJbXBsIHsKIH07CiAKIG5hbWVzcGFjZSBXZWJHUFUgewog
Ci1jbGFzcyBCaW5kR3JvdXBMYXlvdXQgOiBwdWJsaWMgV0dQVUJpbmRHcm91cExheW91dEltcGws
IHB1YmxpYyBSZWZDb3VudGVkPEJpbmRHcm91cExheW91dD4geworY2xhc3MgRGV2aWNlOworCisv
LyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNncHViaW5kZ3JvdXBsYXlvdXQKK2Ns
YXNzIEJpbmRHcm91cExheW91dCA6IHB1YmxpYyBXR1BVQmluZEdyb3VwTGF5b3V0SW1wbCwgcHVi
bGljIE9iamVjdEJhc2UgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8QmluZEdyb3VwTGF5b3V0PiBjcmVhdGUoaWQ8TVRMQXJndW1lbnRFbmNv
ZGVyPiB2ZXJ0ZXhBcmd1bWVudEVuY29kZXIsIGlkPE1UTEFyZ3VtZW50RW5jb2Rlcj4gZnJhZ21l
bnRBcmd1bWVudEVuY29kZXIsIGlkPE1UTEFyZ3VtZW50RW5jb2Rlcj4gY29tcHV0ZUFyZ3VtZW50
RW5jb2RlcikKKyAgICBzdGF0aWMgUmVmPEJpbmRHcm91cExheW91dD4gY3JlYXRlKGlkPE1UTEFy
Z3VtZW50RW5jb2Rlcj4gdmVydGV4QXJndW1lbnRFbmNvZGVyLCBpZDxNVExBcmd1bWVudEVuY29k
ZXI+IGZyYWdtZW50QXJndW1lbnRFbmNvZGVyLCBpZDxNVExBcmd1bWVudEVuY29kZXI+IGNvbXB1
dGVBcmd1bWVudEVuY29kZXIsIERldmljZSYgZGV2aWNlKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgQmluZEdyb3VwTGF5b3V0KHZlcnRleEFyZ3VtZW50RW5jb2RlciwgZnJh
Z21lbnRBcmd1bWVudEVuY29kZXIsIGNvbXB1dGVBcmd1bWVudEVuY29kZXIpKTsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQmluZEdyb3VwTGF5b3V0KHZlcnRleEFyZ3VtZW50RW5jb2Rl
ciwgZnJhZ21lbnRBcmd1bWVudEVuY29kZXIsIGNvbXB1dGVBcmd1bWVudEVuY29kZXIsIGRldmlj
ZSkpOwogICAgIH0KIAogICAgIH5CaW5kR3JvdXBMYXlvdXQoKTsKQEAgLTUzLDcgKzU2LDcgQEAg
cHVibGljOgogICAgIGlkPE1UTEFyZ3VtZW50RW5jb2Rlcj4gY29tcHV0ZUFyZ3VtZW50RW5jb2Rl
cigpIGNvbnN0IHsgcmV0dXJuIG1fY29tcHV0ZUFyZ3VtZW50RW5jb2RlcjsgfQogCiBwcml2YXRl
OgotICAgIEJpbmRHcm91cExheW91dChpZDxNVExBcmd1bWVudEVuY29kZXI+IHZlcnRleEFyZ3Vt
ZW50RW5jb2RlciwgaWQ8TVRMQXJndW1lbnRFbmNvZGVyPiBmcmFnbWVudEFyZ3VtZW50RW5jb2Rl
ciwgaWQ8TVRMQXJndW1lbnRFbmNvZGVyPiBjb21wdXRlQXJndW1lbnRFbmNvZGVyKTsKKyAgICBC
aW5kR3JvdXBMYXlvdXQoaWQ8TVRMQXJndW1lbnRFbmNvZGVyPiB2ZXJ0ZXhBcmd1bWVudEVuY29k
ZXIsIGlkPE1UTEFyZ3VtZW50RW5jb2Rlcj4gZnJhZ21lbnRBcmd1bWVudEVuY29kZXIsIGlkPE1U
TEFyZ3VtZW50RW5jb2Rlcj4gY29tcHV0ZUFyZ3VtZW50RW5jb2RlciwgRGV2aWNlJik7CiAKICAg
ICBjb25zdCBpZDxNVExBcmd1bWVudEVuY29kZXI+IG1fdmVydGV4QXJndW1lbnRFbmNvZGVyIHsg
bmlsIH07CiAgICAgY29uc3QgaWQ8TVRMQXJndW1lbnRFbmNvZGVyPiBtX2ZyYWdtZW50QXJndW1l
bnRFbmNvZGVyIHsgbmlsIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CaW5k
R3JvdXBMYXlvdXQubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CaW5kR3JvdXBMYXlvdXQubW0K
aW5kZXggZmQxM2MzYjA1YzRjLi5lZGIzZGI3MDQ2NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL0JpbmRHcm91cExheW91dC5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9C
aW5kR3JvdXBMYXlvdXQubW0KQEAgLTIxMywxMSArMjEzLDEyIEBAIFJlZlB0cjxCaW5kR3JvdXBM
YXlvdXQ+IERldmljZTo6Y3JlYXRlQmluZEdyb3VwTGF5b3V0KGNvbnN0IFdHUFVCaW5kR3JvdXBM
YXlvdXRECiAgICAgZnJhZ21lbnRBcmd1bWVudEVuY29kZXIubGFiZWwgPSBsYWJlbDsKICAgICBj
b21wdXRlQXJndW1lbnRFbmNvZGVyLmxhYmVsID0gbGFiZWw7CiAKLSAgICByZXR1cm4gQmluZEdy
b3VwTGF5b3V0OjpjcmVhdGUodmVydGV4QXJndW1lbnRFbmNvZGVyLCBmcmFnbWVudEFyZ3VtZW50
RW5jb2RlciwgY29tcHV0ZUFyZ3VtZW50RW5jb2Rlcik7CisgICAgcmV0dXJuIEJpbmRHcm91cExh
eW91dDo6Y3JlYXRlKHZlcnRleEFyZ3VtZW50RW5jb2RlciwgZnJhZ21lbnRBcmd1bWVudEVuY29k
ZXIsIGNvbXB1dGVBcmd1bWVudEVuY29kZXIsICp0aGlzKTsKIH0KIAotQmluZEdyb3VwTGF5b3V0
OjpCaW5kR3JvdXBMYXlvdXQoaWQ8TVRMQXJndW1lbnRFbmNvZGVyPiB2ZXJ0ZXhBcmd1bWVudEVu
Y29kZXIsIGlkPE1UTEFyZ3VtZW50RW5jb2Rlcj4gZnJhZ21lbnRBcmd1bWVudEVuY29kZXIsIGlk
PE1UTEFyZ3VtZW50RW5jb2Rlcj4gY29tcHV0ZUFyZ3VtZW50RW5jb2RlcikKLSAgICA6IG1fdmVy
dGV4QXJndW1lbnRFbmNvZGVyKHZlcnRleEFyZ3VtZW50RW5jb2RlcikKK0JpbmRHcm91cExheW91
dDo6QmluZEdyb3VwTGF5b3V0KGlkPE1UTEFyZ3VtZW50RW5jb2Rlcj4gdmVydGV4QXJndW1lbnRF
bmNvZGVyLCBpZDxNVExBcmd1bWVudEVuY29kZXI+IGZyYWdtZW50QXJndW1lbnRFbmNvZGVyLCBp
ZDxNVExBcmd1bWVudEVuY29kZXI+IGNvbXB1dGVBcmd1bWVudEVuY29kZXIsIERldmljZSYgZGV2
aWNlKQorICAgIDogT2JqZWN0QmFzZShkZXZpY2UpCisgICAgLCBtX3ZlcnRleEFyZ3VtZW50RW5j
b2Rlcih2ZXJ0ZXhBcmd1bWVudEVuY29kZXIpCiAgICAgLCBtX2ZyYWdtZW50QXJndW1lbnRFbmNv
ZGVyKGZyYWdtZW50QXJndW1lbnRFbmNvZGVyKQogICAgICwgbV9jb21wdXRlQXJndW1lbnRFbmNv
ZGVyKGNvbXB1dGVBcmd1bWVudEVuY29kZXIpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9CdWZmZXIuaCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0J1ZmZlci5oCmluZGV4IDMx
ZTEyMDI3ZDc4Ni4uZmFjZDQ3NjFiYmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9CdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CdWZmZXIuaApAQCAtMjUsMTMg
KzI1LDEzIEBACiAKICNwcmFnbWEgb25jZQogCisjaW1wb3J0ICJPYmplY3RCYXNlLmgiCiAjaW1w
b3J0IDx1dGlsaXR5PgogI2ltcG9ydCA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW1wb3J0
IDx3dGYvRmFzdE1hbGxvYy5oPgogI2ltcG9ydCA8d3RmL1JhbmdlLmg+CiAjaW1wb3J0IDx3dGYv
UmFuZ2VTZXQuaD4KICNpbXBvcnQgPHd0Zi9SZWYuaD4KLSNpbXBvcnQgPHd0Zi9UaHJlYWRTYWZl
UmVmQ291bnRlZC5oPgogCiBzdHJ1Y3QgV0dQVUJ1ZmZlckltcGwgewogfTsKQEAgLTQwLDcgKzQw
LDggQEAgbmFtZXNwYWNlIFdlYkdQVSB7CiAKIGNsYXNzIERldmljZTsKIAotY2xhc3MgQnVmZmVy
IDogcHVibGljIFdHUFVCdWZmZXJJbXBsLCBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QnVm
ZmVyPiB7CisvLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNncHVidWZmZXIKK2Ns
YXNzIEJ1ZmZlciA6IHB1YmxpYyBXR1BVQnVmZmVySW1wbCwgcHVibGljIE9iamVjdEJhc2Ugewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGVudW0gY2xhc3MgU3Rh
dGUgOiB1aW50OF90OwpAQCAtOTcsOCArOTgsNiBAQCBwcml2YXRlOgogICAgIHVzaW5nIE1hcHBl
ZFJhbmdlcyA9IFJhbmdlU2V0PFJhbmdlPHNpemVfdD4+OwogICAgIE1hcHBlZFJhbmdlcyBtX21h
cHBlZFJhbmdlczsKICAgICBXR1BVTWFwTW9kZUZsYWdzIG1fbWFwTW9kZSB7IFdHUFVNYXBNb2Rl
X05vbmUgfTsKLQotICAgIGNvbnN0IFJlZjxEZXZpY2U+IG1fZGV2aWNlOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViR1BVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CdWZmZXIu
bW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CdWZmZXIubW0KaW5kZXggZDAwMDE0MTA0OGRhLi5k
MzE3ZjY1NzU2ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0J1ZmZlci5tbQor
KysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CdWZmZXIubW0KQEAgLTEyNSwxMiArMTI1LDEyIEBA
IFJlZlB0cjxCdWZmZXI+IERldmljZTo6Y3JlYXRlQnVmZmVyKGNvbnN0IFdHUFVCdWZmZXJEZXNj
cmlwdG9yJiBkZXNjcmlwdG9yKQogfQogCiBCdWZmZXI6OkJ1ZmZlcihpZDxNVExCdWZmZXI+IGJ1
ZmZlciwgdWludDY0X3Qgc2l6ZSwgV0dQVUJ1ZmZlclVzYWdlRmxhZ3MgdXNhZ2UsIFN0YXRlIGlu
aXRpYWxTdGF0ZSwgTWFwcGluZ1JhbmdlIGluaXRpYWxNYXBwaW5nUmFuZ2UsIERldmljZSYgZGV2
aWNlKQotICAgIDogbV9idWZmZXIoYnVmZmVyKQorICAgIDogT2JqZWN0QmFzZShkZXZpY2UpCisg
ICAgLCBtX2J1ZmZlcihidWZmZXIpCiAgICAgLCBtX3NpemUoc2l6ZSkKICAgICAsIG1fdXNhZ2Uo
dXNhZ2UpCiAgICAgLCBtX3N0YXRlKGluaXRpYWxTdGF0ZSkKICAgICAsIG1fbWFwcGluZ1Jhbmdl
KGluaXRpYWxNYXBwaW5nUmFuZ2UpCi0gICAgLCBtX2RldmljZShkZXZpY2UpCiB7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRCdWZmZXIuaCBiL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL0NvbW1hbmRCdWZmZXIuaAppbmRleCBjYThmNjI3MTEyZWYuLmFlNjEzNGQ1
YzhlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEJ1ZmZlci5oCisr
KyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRCdWZmZXIuaApAQCAtMjUsMjEgKzI1LDI0
IEBACiAKICNwcmFnbWEgb25jZQogCisjaW1wb3J0ICJPYmplY3RCYXNlLmgiCiAjaW1wb3J0IDx3
dGYvRmFzdE1hbGxvYy5oPgogI2ltcG9ydCA8d3RmL1JlZi5oPgotI2ltcG9ydCA8d3RmL1JlZkNv
dW50ZWQuaD4KIAogc3RydWN0IFdHUFVDb21tYW5kQnVmZmVySW1wbCB7CiB9OwogCiBuYW1lc3Bh
Y2UgV2ViR1BVIHsKIAotY2xhc3MgQ29tbWFuZEJ1ZmZlciA6IHB1YmxpYyBXR1BVQ29tbWFuZEJ1
ZmZlckltcGwsIHB1YmxpYyBSZWZDb3VudGVkPENvbW1hbmRCdWZmZXI+IHsKK2NsYXNzIERldmlj
ZTsKKworLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8jZ3B1Y29tbWFuZGJ1ZmZl
cgorY2xhc3MgQ29tbWFuZEJ1ZmZlciA6IHB1YmxpYyBXR1BVQ29tbWFuZEJ1ZmZlckltcGwsIHB1
YmxpYyBPYmplY3RCYXNlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmPENvbW1hbmRCdWZmZXI+IGNyZWF0ZShpZDxNVExDb21tYW5kQnVmZmVy
PiBjb21tYW5kQnVmZmVyKQorICAgIHN0YXRpYyBSZWY8Q29tbWFuZEJ1ZmZlcj4gY3JlYXRlKGlk
PE1UTENvbW1hbmRCdWZmZXI+IGNvbW1hbmRCdWZmZXIsIERldmljZSYgZGV2aWNlKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29tbWFuZEJ1ZmZlcihjb21tYW5kQnVmZmVy
KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENvbW1hbmRCdWZmZXIoY29tbWFuZEJ1
ZmZlciwgZGV2aWNlKSk7CiAgICAgfQogCiAgICAgfkNvbW1hbmRCdWZmZXIoKTsKQEAgLTQ5LDcg
KzUyLDcgQEAgcHVibGljOgogICAgIGlkPE1UTENvbW1hbmRCdWZmZXI+IGNvbW1hbmRCdWZmZXIo
KSBjb25zdCB7IHJldHVybiBtX2NvbW1hbmRCdWZmZXI7IH0KIAogcHJpdmF0ZToKLSAgICBDb21t
YW5kQnVmZmVyKGlkPE1UTENvbW1hbmRCdWZmZXI+KTsKKyAgICBDb21tYW5kQnVmZmVyKGlkPE1U
TENvbW1hbmRCdWZmZXI+LCBEZXZpY2UmKTsKIAogICAgIGNvbnN0IGlkPE1UTENvbW1hbmRCdWZm
ZXI+IG1fY29tbWFuZEJ1ZmZlciB7IG5pbCB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL0NvbW1hbmRCdWZmZXIubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5k
QnVmZmVyLm1tCmluZGV4IGVjZWRiZTMzOGI1NC4uMTBjZGJkOGQyZTllIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kQnVmZmVyLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL0NvbW1hbmRCdWZmZXIubW0KQEAgLTMwLDggKzMwLDkgQEAKIAogbmFtZXNwYWNlIFdl
YkdQVSB7CiAKLUNvbW1hbmRCdWZmZXI6OkNvbW1hbmRCdWZmZXIoaWQ8TVRMQ29tbWFuZEJ1ZmZl
cj4gY29tbWFuZEJ1ZmZlcikKLSAgICA6IG1fY29tbWFuZEJ1ZmZlcihjb21tYW5kQnVmZmVyKQor
Q29tbWFuZEJ1ZmZlcjo6Q29tbWFuZEJ1ZmZlcihpZDxNVExDb21tYW5kQnVmZmVyPiBjb21tYW5k
QnVmZmVyLCBEZXZpY2UmIGRldmljZSkKKyAgICA6IE9iamVjdEJhc2UoZGV2aWNlKQorICAgICwg
bV9jb21tYW5kQnVmZmVyKGNvbW1hbmRCdWZmZXIpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVyLmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9D
b21tYW5kRW5jb2Rlci5oCmluZGV4IDQwYWQzYTA5YjFmMS4uNDZjZjJlM2Q4ZGNlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rlci5oCisrKyBiL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVyLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEg
b25jZQogCiAjaW1wb3J0ICJDb21tYW5kc01peGluLmgiCisjaW1wb3J0ICJPYmplY3RCYXNlLmgi
CiAjaW1wb3J0IDx3dGYvRmFzdE1hbGxvYy5oPgogI2ltcG9ydCA8d3RmL1JlZi5oPgogI2ltcG9y
dCA8d3RmL1JlZlB0ci5oPgpAQCAtNDIsNyArNDMsOCBAQCBjbGFzcyBEZXZpY2U7CiBjbGFzcyBR
dWVyeVNldDsKIGNsYXNzIFJlbmRlclBhc3NFbmNvZGVyOwogCi1jbGFzcyBDb21tYW5kRW5jb2Rl
ciA6IHB1YmxpYyBXR1BVQ29tbWFuZEVuY29kZXJJbXBsLCBwdWJsaWMgUmVmQ291bnRlZDxDb21t
YW5kRW5jb2Rlcj4sIHB1YmxpYyBDb21tYW5kc01peGluIHsKKy8vIGh0dHBzOi8vZ3B1d2ViLmdp
dGh1Yi5pby9ncHV3ZWIvI2dwdWNvbW1hbmRlbmNvZGVyCitjbGFzcyBDb21tYW5kRW5jb2RlciA6
IHB1YmxpYyBXR1BVQ29tbWFuZEVuY29kZXJJbXBsLCBwdWJsaWMgT2JqZWN0QmFzZSwgcHVibGlj
IENvbW1hbmRzTWl4aW4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIHN0YXRpYyBSZWY8Q29tbWFuZEVuY29kZXI+IGNyZWF0ZShpZDxNVExDb21tYW5kQnVmZmVy
PiBjb21tYW5kQnVmZmVyLCBEZXZpY2UmIGRldmljZSkKQEAgLTgwLDggKzgyLDYgQEAgcHJpdmF0
ZToKICAgICBpZDxNVExCbGl0Q29tbWFuZEVuY29kZXI+IG1fYmxpdENvbW1hbmRFbmNvZGVyIHsg
bmlsIH07CiAKICAgICB1aW50NjRfdCBtX2RlYnVnR3JvdXBTdGFja1NpemUgeyAwIH07Ci0KLSAg
ICBjb25zdCBSZWY8RGV2aWNlPiBtX2RldmljZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkdQ
VQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0gYi9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rlci5tbQppbmRleCBiNmI3NTAzYzhiYmUu
LjY5OTAzZTY5MWY0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVu
Y29kZXIubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0KQEAg
LTU2LDggKzU2LDggQEAgUmVmUHRyPENvbW1hbmRFbmNvZGVyPiBEZXZpY2U6OmNyZWF0ZUNvbW1h
bmRFbmNvZGVyKGNvbnN0IFdHUFVDb21tYW5kRW5jb2RlckRlc2MKIH0KIAogQ29tbWFuZEVuY29k
ZXI6OkNvbW1hbmRFbmNvZGVyKGlkPE1UTENvbW1hbmRCdWZmZXI+IGNvbW1hbmRCdWZmZXIsIERl
dmljZSYgZGV2aWNlKQotICAgIDogbV9jb21tYW5kQnVmZmVyKGNvbW1hbmRCdWZmZXIpCi0gICAg
LCBtX2RldmljZShkZXZpY2UpCisgICAgOiBPYmplY3RCYXNlKGRldmljZSkKKyAgICAsIG1fY29t
bWFuZEJ1ZmZlcihjb21tYW5kQnVmZmVyKQogewogfQogCkBAIC04MywxMyArODMsMTMgQEAgdm9p
ZCBDb21tYW5kRW5jb2Rlcjo6ZmluYWxpemVCbGl0Q29tbWFuZEVuY29kZXIoKQogUmVmUHRyPENv
bXB1dGVQYXNzRW5jb2Rlcj4gQ29tbWFuZEVuY29kZXI6OmJlZ2luQ29tcHV0ZVBhc3MoY29uc3Qg
V0dQVUNvbXB1dGVQYXNzRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICBVTlVTRURfUEFS
QU0oZGVzY3JpcHRvcik7Ci0gICAgcmV0dXJuIENvbXB1dGVQYXNzRW5jb2Rlcjo6Y3JlYXRlKG5p
bCk7CisgICAgcmV0dXJuIENvbXB1dGVQYXNzRW5jb2Rlcjo6Y3JlYXRlKG5pbCwgbV9kZXZpY2Up
OwogfQogCiBSZWZQdHI8UmVuZGVyUGFzc0VuY29kZXI+IENvbW1hbmRFbmNvZGVyOjpiZWdpblJl
bmRlclBhc3MoY29uc3QgV0dQVVJlbmRlclBhc3NEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewog
ICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKLSAgICByZXR1cm4gUmVuZGVyUGFzc0VuY29k
ZXI6OmNyZWF0ZShuaWwpOworICAgIHJldHVybiBSZW5kZXJQYXNzRW5jb2Rlcjo6Y3JlYXRlKG5p
bCwgbV9kZXZpY2UpOwogfQogCiBzdGF0aWMgYm9vbCB2YWxpZGF0ZUNvcHlCdWZmZXJUb0J1ZmZl
cihjb25zdCBCdWZmZXImIHNvdXJjZSwgdWludDY0X3Qgc291cmNlT2Zmc2V0LCBjb25zdCBCdWZm
ZXImIGRlc3RpbmF0aW9uLCB1aW50NjRfdCBkZXN0aW5hdGlvbk9mZnNldCwgdWludDY0X3Qgc2l6
ZSkKQEAgLTc1MCw3ICs3NTAsNyBAQCBSZWZQdHI8Q29tbWFuZEJ1ZmZlcj4gQ29tbWFuZEVuY29k
ZXI6OmZpbmlzaChjb25zdCBXR1BVQ29tbWFuZEJ1ZmZlckRlc2NyaXB0b3ImCiAKICAgICBjb21t
YW5kQnVmZmVyLmxhYmVsID0gZnJvbUFQSShkZXNjcmlwdG9yLmxhYmVsKTsKIAotICAgIHJldHVy
biBDb21tYW5kQnVmZmVyOjpjcmVhdGUoY29tbWFuZEJ1ZmZlcik7CisgICAgcmV0dXJuIENvbW1h
bmRCdWZmZXI6OmNyZWF0ZShjb21tYW5kQnVmZmVyLCBtX2RldmljZSk7CiB9CiAKIHZvaWQgQ29t
bWFuZEVuY29kZXI6Omluc2VydERlYnVnTWFya2VyKFN0cmluZyYmIG1hcmtlckxhYmVsKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZHNNaXhpbi5oIGIvU291cmNlL1dl
YkdQVS9XZWJHUFUvQ29tbWFuZHNNaXhpbi5oCmluZGV4IDhkY2QxY2EyODY1MS4uYjE3NmU1MTQy
OTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kc01peGluLmgKKysr
IGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZHNNaXhpbi5oCkBAIC0yNSwxMCArMjUsOSBA
QAogCiAjcHJhZ21hIG9uY2UKIAotI2ltcG9ydCA8d3RmL1JlZkNvdW50ZWQuaD4KLQogbmFtZXNw
YWNlIFdlYkdQVSB7CiAKKy8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIvI2dwdWNv
bW1hbmRzbWl4aW4KIGNsYXNzIENvbW1hbmRzTWl4aW4gewogcHJvdGVjdGVkOgogICAgIGJvb2wg
cHJlcGFyZVRoZUVuY29kZXJTdGF0ZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQ
VS9XZWJHUFUvQ29tcHV0ZVBhc3NFbmNvZGVyLmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21w
dXRlUGFzc0VuY29kZXIuaAppbmRleCA1MjRiZGU2NzllZTUuLjM1OGY4MzYxNDE3MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tcHV0ZVBhc3NFbmNvZGVyLmgKKysrIGIvU291
cmNlL1dlYkdQVS9XZWJHUFUvQ29tcHV0ZVBhc3NFbmNvZGVyLmgKQEAgLTI2LDkgKzI2LDkgQEAK
ICNwcmFnbWEgb25jZQogCiAjaW1wb3J0ICJDb21tYW5kc01peGluLmgiCisjaW1wb3J0ICJPYmpl
Y3RCYXNlLmgiCiAjaW1wb3J0IDx3dGYvRmFzdE1hbGxvYy5oPgogI2ltcG9ydCA8d3RmL1JlZi5o
PgotI2ltcG9ydCA8d3RmL1JlZkNvdW50ZWQuaD4KIAogc3RydWN0IFdHUFVDb21wdXRlUGFzc0Vu
Y29kZXJJbXBsIHsKIH07CkBAIC0zOCwxNCArMzgsMTYgQEAgbmFtZXNwYWNlIFdlYkdQVSB7CiBj
bGFzcyBCaW5kR3JvdXA7CiBjbGFzcyBCdWZmZXI7CiBjbGFzcyBDb21wdXRlUGlwZWxpbmU7Citj
bGFzcyBEZXZpY2U7CiBjbGFzcyBRdWVyeVNldDsKIAotY2xhc3MgQ29tcHV0ZVBhc3NFbmNvZGVy
IDogcHVibGljIFdHUFVDb21wdXRlUGFzc0VuY29kZXJJbXBsLCBwdWJsaWMgUmVmQ291bnRlZDxD
b21wdXRlUGFzc0VuY29kZXI+LCBwdWJsaWMgQ29tbWFuZHNNaXhpbiB7CisvLyBodHRwczovL2dw
dXdlYi5naXRodWIuaW8vZ3B1d2ViLyNncHVjb21wdXRlcGFzc2VuY29kZXIKK2NsYXNzIENvbXB1
dGVQYXNzRW5jb2RlciA6IHB1YmxpYyBXR1BVQ29tcHV0ZVBhc3NFbmNvZGVySW1wbCwgcHVibGlj
IE9iamVjdEJhc2UsIHB1YmxpYyBDb21tYW5kc01peGluIHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPENvbXB1dGVQYXNzRW5jb2Rlcj4gY3Jl
YXRlKGlkPE1UTENvbXB1dGVDb21tYW5kRW5jb2Rlcj4gY29tcHV0ZUNvbW1hbmRFbmNvZGVyKQor
ICAgIHN0YXRpYyBSZWY8Q29tcHV0ZVBhc3NFbmNvZGVyPiBjcmVhdGUoaWQ8TVRMQ29tcHV0ZUNv
bW1hbmRFbmNvZGVyPiBjb21wdXRlQ29tbWFuZEVuY29kZXIsIERldmljZSYgZGV2aWNlKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29tcHV0ZVBhc3NFbmNvZGVyKGNvbXB1
dGVDb21tYW5kRW5jb2RlcikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb21wdXRl
UGFzc0VuY29kZXIoY29tcHV0ZUNvbW1hbmRFbmNvZGVyLCBkZXZpY2UpKTsKICAgICB9CiAKICAg
ICB+Q29tcHV0ZVBhc3NFbmNvZGVyKCk7CkBAIC02Myw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldExhYmVsKFN0cmluZyYmKTsKIAogcHJpdmF0ZToKLSAgICBDb21wdXRlUGFzc0VuY29k
ZXIoaWQ8TVRMQ29tcHV0ZUNvbW1hbmRFbmNvZGVyPik7CisgICAgQ29tcHV0ZVBhc3NFbmNvZGVy
KGlkPE1UTENvbXB1dGVDb21tYW5kRW5jb2Rlcj4sIERldmljZSYpOwogCiAgICAgYm9vbCB2YWxp
ZGF0ZVBvcERlYnVnR3JvdXAoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9X
ZWJHUFUvQ29tcHV0ZVBhc3NFbmNvZGVyLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tcHV0
ZVBhc3NFbmNvZGVyLm1tCmluZGV4IDc5NzNmMGRkMTgyZi4uMDU0YWQ5ZjBkNGY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21wdXRlUGFzc0VuY29kZXIubW0KKysrIGIvU291
cmNlL1dlYkdQVS9XZWJHUFUvQ29tcHV0ZVBhc3NFbmNvZGVyLm1tCkBAIC0zNCw4ICszNCw5IEBA
CiAKIG5hbWVzcGFjZSBXZWJHUFUgewogCi1Db21wdXRlUGFzc0VuY29kZXI6OkNvbXB1dGVQYXNz
RW5jb2RlcihpZDxNVExDb21wdXRlQ29tbWFuZEVuY29kZXI+IGNvbXB1dGVDb21tYW5kRW5jb2Rl
cikKLSAgICA6IG1fY29tcHV0ZUNvbW1hbmRFbmNvZGVyKGNvbXB1dGVDb21tYW5kRW5jb2RlcikK
K0NvbXB1dGVQYXNzRW5jb2Rlcjo6Q29tcHV0ZVBhc3NFbmNvZGVyKGlkPE1UTENvbXB1dGVDb21t
YW5kRW5jb2Rlcj4gY29tcHV0ZUNvbW1hbmRFbmNvZGVyLCBEZXZpY2UmIGRldmljZSkKKyAgICA6
IE9iamVjdEJhc2UoZGV2aWNlKQorICAgICwgbV9jb21wdXRlQ29tbWFuZEVuY29kZXIoY29tcHV0
ZUNvbW1hbmRFbmNvZGVyKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9Db21wdXRlUGlwZWxpbmUuaCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbXB1dGVQaXBlbGlu
ZS5oCmluZGV4IDg3NTk0NjUzM2VmMi4uYjQzNmNiMDhiMjFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9Db21wdXRlUGlwZWxpbmUuaAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9Db21wdXRlUGlwZWxpbmUuaApAQCAtMjUsOSArMjUsOSBAQAogCiAjcHJhZ21hIG9uY2UKIAor
I2ltcG9ydCAiT2JqZWN0QmFzZS5oIgogI2ltcG9ydCA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbXBv
cnQgPHd0Zi9SZWYuaD4KLSNpbXBvcnQgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIHN0cnVjdCBXR1BV
Q29tcHV0ZVBpcGVsaW5lSW1wbCB7CiB9OwpAQCAtMzUsMTMgKzM1LDE1IEBAIHN0cnVjdCBXR1BV
Q29tcHV0ZVBpcGVsaW5lSW1wbCB7CiBuYW1lc3BhY2UgV2ViR1BVIHsKIAogY2xhc3MgQmluZEdy
b3VwTGF5b3V0OworY2xhc3MgRGV2aWNlOwogCi1jbGFzcyBDb21wdXRlUGlwZWxpbmUgOiBwdWJs
aWMgV0dQVUNvbXB1dGVQaXBlbGluZUltcGwsIHB1YmxpYyBSZWZDb3VudGVkPENvbXB1dGVQaXBl
bGluZT4geworLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8jZ3B1Y29tcHV0ZXBp
cGVsaW5lCitjbGFzcyBDb21wdXRlUGlwZWxpbmUgOiBwdWJsaWMgV0dQVUNvbXB1dGVQaXBlbGlu
ZUltcGwsIHB1YmxpYyBPYmplY3RCYXNlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPENvbXB1dGVQaXBlbGluZT4gY3JlYXRlKGlkPE1UTENv
bXB1dGVQaXBlbGluZVN0YXRlPiBjb21wdXRlUGlwZWxpbmVTdGF0ZSkKKyAgICBzdGF0aWMgUmVm
PENvbXB1dGVQaXBlbGluZT4gY3JlYXRlKGlkPE1UTENvbXB1dGVQaXBlbGluZVN0YXRlPiBjb21w
dXRlUGlwZWxpbmVTdGF0ZSwgRGV2aWNlJiBkZXZpY2UpCiAgICAgewotICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBDb21wdXRlUGlwZWxpbmUoY29tcHV0ZVBpcGVsaW5lU3RhdGUpKTsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29tcHV0ZVBpcGVsaW5lKGNvbXB1dGVQaXBlbGlu
ZVN0YXRlLCBkZXZpY2UpKTsKICAgICB9CiAKICAgICB+Q29tcHV0ZVBpcGVsaW5lKCk7CkBAIC01
Miw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBpZDxNVExDb21wdXRlUGlwZWxpbmVTdGF0ZT4gY29t
cHV0ZVBpcGVsaW5lU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2NvbXB1dGVQaXBlbGluZVN0YXRl
OyB9CiAKIHByaXZhdGU6Ci0gICAgQ29tcHV0ZVBpcGVsaW5lKGlkPE1UTENvbXB1dGVQaXBlbGlu
ZVN0YXRlPik7CisgICAgQ29tcHV0ZVBpcGVsaW5lKGlkPE1UTENvbXB1dGVQaXBlbGluZVN0YXRl
PiwgRGV2aWNlJik7CiAKICAgICBjb25zdCBpZDxNVExDb21wdXRlUGlwZWxpbmVTdGF0ZT4gbV9j
b21wdXRlUGlwZWxpbmVTdGF0ZSB7IG5pbCB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL0NvbXB1dGVQaXBlbGluZS5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbXB1
dGVQaXBlbGluZS5tbQppbmRleCBlNGFkNzdhZjk3YTMuLjAzYmM3YTE0ZDlkMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tcHV0ZVBpcGVsaW5lLm1tCisrKyBiL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL0NvbXB1dGVQaXBlbGluZS5tbQpAQCAtMTY1LDcgKzE2NSw3IEBAIFJlZlB0
cjxDb21wdXRlUGlwZWxpbmU+IERldmljZTo6Y3JlYXRlQ29tcHV0ZVBpcGVsaW5lKGNvbnN0IFdH
UFVDb21wdXRlUGlwZWxpbmVECiAKICAgICBhdXRvIGNvbXB1dGVQaXBlbGluZVN0YXRlID0gY3Jl
YXRlQ29tcHV0ZVBpcGVsaW5lU3RhdGUobV9kZXZpY2UsIGZ1bmN0aW9uLCBwaXBlbGluZUxheW91
dCwgY29tcHV0ZUluZm9ybWF0aW9uLCBsYWJlbCk7CiAKLSAgICByZXR1cm4gQ29tcHV0ZVBpcGVs
aW5lOjpjcmVhdGUoY29tcHV0ZVBpcGVsaW5lU3RhdGUpOworICAgIHJldHVybiBDb21wdXRlUGlw
ZWxpbmU6OmNyZWF0ZShjb21wdXRlUGlwZWxpbmVTdGF0ZSwgKnRoaXMpOwogfQogCiB2b2lkIERl
dmljZTo6Y3JlYXRlQ29tcHV0ZVBpcGVsaW5lQXN5bmMoY29uc3QgV0dQVUNvbXB1dGVQaXBlbGlu
ZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV0dQVUNyZWF0
ZVBpcGVsaW5lQXN5bmNTdGF0dXMsIFJlZlB0cjxDb21wdXRlUGlwZWxpbmU+JiYsIFN0cmluZyYm
IG1lc3NhZ2UpPiYmIGNhbGxiYWNrKQpAQCAtMTc1LDggKzE3NSw5IEBAIHZvaWQgRGV2aWNlOjpj
cmVhdGVDb21wdXRlUGlwZWxpbmVBc3luYyhjb25zdCBXR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3Jp
cHRvciYgZGVzCiAgICAgVU5VU0VEX1BBUkFNKGNhbGxiYWNrKTsKIH0KIAotQ29tcHV0ZVBpcGVs
aW5lOjpDb21wdXRlUGlwZWxpbmUoaWQ8TVRMQ29tcHV0ZVBpcGVsaW5lU3RhdGU+IGNvbXB1dGVQ
aXBlbGluZVN0YXRlKQotICAgIDogbV9jb21wdXRlUGlwZWxpbmVTdGF0ZShjb21wdXRlUGlwZWxp
bmVTdGF0ZSkKK0NvbXB1dGVQaXBlbGluZTo6Q29tcHV0ZVBpcGVsaW5lKGlkPE1UTENvbXB1dGVQ
aXBlbGluZVN0YXRlPiBjb21wdXRlUGlwZWxpbmVTdGF0ZSwgRGV2aWNlJiBkZXZpY2UpCisgICAg
OiBPYmplY3RCYXNlKGRldmljZSkKKyAgICAsIG1fY29tcHV0ZVBpcGVsaW5lU3RhdGUoY29tcHV0
ZVBpcGVsaW5lU3RhdGUpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L0RldmljZS5oIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvRGV2aWNlLmgKaW5kZXggNjI2YzU2NWM0
NTNlLi4wZDZhOTk2NDc5MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0Rldmlj
ZS5oCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0RldmljZS5oCkBAIC0zMCw4ICszMCw4IEBA
CiAjaW1wb3J0IDx3dGYvRmFzdE1hbGxvYy5oPgogI2ltcG9ydCA8d3RmL0Z1bmN0aW9uLmg+CiAj
aW1wb3J0IDx3dGYvUmVmLmg+Ci0jaW1wb3J0IDx3dGYvUmVmQ291bnRlZC5oPgogI2ltcG9ydCA8
d3RmL1JlZlB0ci5oPgorI2ltcG9ydCA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW1w
b3J0IDx3dGYvVmVjdG9yLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAt
NTYsNyArNTYsOCBAQCBjbGFzcyBTdXJmYWNlOwogY2xhc3MgU3dhcENoYWluOwogY2xhc3MgVGV4
dHVyZTsKIAotY2xhc3MgRGV2aWNlIDogcHVibGljIFdHUFVEZXZpY2VJbXBsLCBwdWJsaWMgUmVm
Q291bnRlZDxEZXZpY2U+IHsKKy8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIvI2dw
dWRldmljZQorY2xhc3MgRGV2aWNlIDogcHVibGljIFdHUFVEZXZpY2VJbXBsLCBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8RGV2aWNlPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxEZXZpY2U+IGNyZWF0ZShpZDxNVExEZXZpY2U+
LCBTdHJpbmcmJiBkZXZpY2VMYWJlbCwgSW5zdGFuY2UmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL0luc3RhbmNlLmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9JbnN0YW5jZS5o
CmluZGV4IGU4ZWM2OTM1N2FiOS4uZjQ2NDA2MzY0ZjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9JbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0luc3RhbmNl
LmgKQEAgLTQxLDYgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkdQVSB7CiBjbGFzcyBBZGFwdGVyOwog
Y2xhc3MgU3VyZmFjZTsKIAorLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8jZ3B1
CiBjbGFzcyBJbnN0YW5jZSA6IHB1YmxpYyBXR1BVSW5zdGFuY2VJbXBsLCBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8SW5zdGFuY2U+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL09iamVjdEJhc2UuaCBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL09iamVjdEJhc2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAuLjE3MmYxMDA1NjVkNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL09iamVjdEJhc2UuaApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29w
eXJpZ2h0IChjKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbXBv
cnQgPHd0Zi9GYXN0TWFsbG9jLmg+CisjaW1wb3J0IDx3dGYvUmVmLmg+CisjaW1wb3J0IDx3dGYv
VGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkdQVSB7CisKK2NsYXNzIERl
dmljZTsKKworLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8jZ3B1b2JqZWN0YmFz
ZQorY2xhc3MgT2JqZWN0QmFzZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxPYmplY3RC
YXNlPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgfk9iamVj
dEJhc2UoKTsKKworcHJvdGVjdGVkOgorICAgIE9iamVjdEJhc2UoRGV2aWNlJik7CisKKyAgICBj
b25zdCBSZWY8RGV2aWNlPiBtX2RldmljZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkdQVQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvT2JqZWN0QmFzZS5tbSBiL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL09iamVjdEJhc2UubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwLi4wNjY3YjVhMTVmMWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9PYmplY3RCYXNlLm1tCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KGMpIDIwMjEtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2lt
cG9ydCAiT2JqZWN0QmFzZS5oIgorCisjaW1wb3J0ICJEZXZpY2UuaCIKKworbmFtZXNwYWNlIFdl
YkdQVSB7CisKK09iamVjdEJhc2U6Ok9iamVjdEJhc2UoRGV2aWNlJiBkZXZpY2UpCisgICAgOiBt
X2RldmljZShkZXZpY2UpCit7Cit9CisKK09iamVjdEJhc2U6On5PYmplY3RCYXNlKCkgPSBkZWZh
dWx0OworCit9IC8vIG5hbWVzcGFjZSBXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL1BpcGVsaW5lTGF5b3V0LmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9QaXBlbGluZUxh
eW91dC5oCmluZGV4IDFjNDM4ODAyY2JhNC4uMDcxMmFmNTgzOWVkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9QaXBlbGluZUxheW91dC5oCisrKyBiL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL1BpcGVsaW5lTGF5b3V0LmgKQEAgLTI1LDkgKzI1LDkgQEAKIAogI3ByYWdtYSBvbmNlCiAK
KyNpbXBvcnQgIk9iamVjdEJhc2UuaCIKICNpbXBvcnQgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW1w
b3J0IDx3dGYvUmVmLmg+Ci0jaW1wb3J0IDx3dGYvUmVmQ291bnRlZC5oPgogI2ltcG9ydCA8d3Rm
L1ZlY3Rvci5oPgogCiBzdHJ1Y3QgV0dQVVBpcGVsaW5lTGF5b3V0SW1wbCB7CkBAIC0zNiwxMyAr
MzYsMTUgQEAgc3RydWN0IFdHUFVQaXBlbGluZUxheW91dEltcGwgewogbmFtZXNwYWNlIFdlYkdQ
VSB7CiAKIGNsYXNzIEJpbmRHcm91cExheW91dDsKK2NsYXNzIERldmljZTsKIAotY2xhc3MgUGlw
ZWxpbmVMYXlvdXQgOiBwdWJsaWMgV0dQVVBpcGVsaW5lTGF5b3V0SW1wbCwgcHVibGljIFJlZkNv
dW50ZWQ8UGlwZWxpbmVMYXlvdXQ+IHsKKy8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3
ZWIvI2dwdXBpcGVsaW5lbGF5b3V0CitjbGFzcyBQaXBlbGluZUxheW91dCA6IHB1YmxpYyBXR1BV
UGlwZWxpbmVMYXlvdXRJbXBsLCBwdWJsaWMgT2JqZWN0QmFzZSB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxQaXBlbGluZUxheW91dD4gY3Jl
YXRlKFZlY3RvcjxSZWY8QmluZEdyb3VwTGF5b3V0Pj4mJiBiaW5kR3JvdXBMYXlvdXRzKQorICAg
IHN0YXRpYyBSZWY8UGlwZWxpbmVMYXlvdXQ+IGNyZWF0ZShWZWN0b3I8UmVmPEJpbmRHcm91cExh
eW91dD4+JiYgYmluZEdyb3VwTGF5b3V0cywgRGV2aWNlJiBkZXZpY2UpCiAgICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQaXBlbGluZUxheW91dChXVEZNb3ZlKGJpbmRHcm91cExh
eW91dHMpKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBpcGVsaW5lTGF5b3V0KFdU
Rk1vdmUoYmluZEdyb3VwTGF5b3V0cyksIGRldmljZSkpOwogICAgIH0KIAogICAgIH5QaXBlbGlu
ZUxheW91dCgpOwpAQCAtNTYsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgQmluZEdyb3Vw
TGF5b3V0JiBiaW5kR3JvdXBMYXlvdXQoc2l6ZV90IGkpIGNvbnN0IHsgcmV0dXJuIG1fYmluZEdy
b3VwTGF5b3V0c1tpXTsgfQogCiBwcml2YXRlOgotICAgIFBpcGVsaW5lTGF5b3V0KFZlY3RvcjxS
ZWY8QmluZEdyb3VwTGF5b3V0Pj4mJik7CisgICAgUGlwZWxpbmVMYXlvdXQoVmVjdG9yPFJlZjxC
aW5kR3JvdXBMYXlvdXQ+PiYmLCBEZXZpY2UmKTsKIAogICAgIGNvbnN0IFZlY3RvcjxSZWY8Qmlu
ZEdyb3VwTGF5b3V0Pj4gbV9iaW5kR3JvdXBMYXlvdXRzOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL1BpcGVsaW5lTGF5b3V0Lm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUv
UGlwZWxpbmVMYXlvdXQubW0KaW5kZXggZWZhMGQ2ZDUxN2JhLi43ZTYwN2U2MGU1MzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1BpcGVsaW5lTGF5b3V0Lm1tCisrKyBiL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL1BpcGVsaW5lTGF5b3V0Lm1tCkBAIC00MywxMSArNDMsMTIgQEAgUmVm
UHRyPFBpcGVsaW5lTGF5b3V0PiBEZXZpY2U6OmNyZWF0ZVBpcGVsaW5lTGF5b3V0KGNvbnN0IFdH
UFVQaXBlbGluZUxheW91dERlc2MKICAgICAgICAgYXV0byogYmluZEdyb3VwTGF5b3V0ID0gZGVz
Y3JpcHRvci5iaW5kR3JvdXBMYXlvdXRzW2ldOwogICAgICAgICBiaW5kR3JvdXBMYXlvdXRzLnVu
Y2hlY2tlZEFwcGVuZChXZWJHUFU6OmZyb21BUEkoYmluZEdyb3VwTGF5b3V0KSk7CiAgICAgfQot
ICAgIHJldHVybiBQaXBlbGluZUxheW91dDo6Y3JlYXRlKFdURk1vdmUoYmluZEdyb3VwTGF5b3V0
cykpOworICAgIHJldHVybiBQaXBlbGluZUxheW91dDo6Y3JlYXRlKFdURk1vdmUoYmluZEdyb3Vw
TGF5b3V0cyksICp0aGlzKTsKIH0KIAotUGlwZWxpbmVMYXlvdXQ6OlBpcGVsaW5lTGF5b3V0KFZl
Y3RvcjxSZWY8QmluZEdyb3VwTGF5b3V0Pj4mJiBiaW5kR3JvdXBMYXlvdXRzKQotICAgIDogbV9i
aW5kR3JvdXBMYXlvdXRzKFdURk1vdmUoYmluZEdyb3VwTGF5b3V0cykpCitQaXBlbGluZUxheW91
dDo6UGlwZWxpbmVMYXlvdXQoVmVjdG9yPFJlZjxCaW5kR3JvdXBMYXlvdXQ+PiYmIGJpbmRHcm91
cExheW91dHMsIERldmljZSYgZGV2aWNlKQorICAgIDogT2JqZWN0QmFzZShkZXZpY2UpCisgICAg
LCBtX2JpbmRHcm91cExheW91dHMoV1RGTW92ZShiaW5kR3JvdXBMYXlvdXRzKSkKIHsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvUXVlcnlTZXQuaCBiL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL1F1ZXJ5U2V0LmgKaW5kZXggYTMxZGY3NzRjNDJlLi5lZGQ1OWM5YWQ5OGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1F1ZXJ5U2V0LmgKKysrIGIvU291cmNlL1dl
YkdQVS9XZWJHUFUvUXVlcnlTZXQuaApAQCAtMjUsMjEgKzI1LDI0IEBACiAKICNwcmFnbWEgb25j
ZQogCisjaW1wb3J0ICJPYmplY3RCYXNlLmgiCiAjaW1wb3J0IDx3dGYvRmFzdE1hbGxvYy5oPgog
I2ltcG9ydCA8d3RmL1JlZi5oPgotI2ltcG9ydCA8d3RmL1JlZkNvdW50ZWQuaD4KIAogc3RydWN0
IFdHUFVRdWVyeVNldEltcGwgewogfTsKIAogbmFtZXNwYWNlIFdlYkdQVSB7CiAKLWNsYXNzIFF1
ZXJ5U2V0IDogcHVibGljIFdHUFVRdWVyeVNldEltcGwsIHB1YmxpYyBSZWZDb3VudGVkPFF1ZXJ5
U2V0PiB7CitjbGFzcyBEZXZpY2U7CisKKy8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3
ZWIvI2dwdXF1ZXJ5c2V0CitjbGFzcyBRdWVyeVNldCA6IHB1YmxpYyBXR1BVUXVlcnlTZXRJbXBs
LCBwdWJsaWMgT2JqZWN0QmFzZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxRdWVyeVNldD4gY3JlYXRlKGlkPE1UTENvdW50ZXJTYW1wbGVC
dWZmZXI+IGNvdW50ZXJTYW1wbGVCdWZmZXIpCisgICAgc3RhdGljIFJlZjxRdWVyeVNldD4gY3Jl
YXRlKGlkPE1UTENvdW50ZXJTYW1wbGVCdWZmZXI+IGNvdW50ZXJTYW1wbGVCdWZmZXIsIERldmlj
ZSYgZGV2aWNlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUXVlcnlTZXQo
Y291bnRlclNhbXBsZUJ1ZmZlcikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBRdWVy
eVNldChjb3VudGVyU2FtcGxlQnVmZmVyLCBkZXZpY2UpKTsKICAgICB9CiAKICAgICB+UXVlcnlT
ZXQoKTsKQEAgLTUwLDcgKzUzLDcgQEAgcHVibGljOgogICAgIGlkPE1UTENvdW50ZXJTYW1wbGVC
dWZmZXI+IGNvdW50ZXJTYW1wbGVCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2NvdW50ZXJTYW1w
bGVCdWZmZXI7IH0KIAogcHJpdmF0ZToKLSAgICBRdWVyeVNldChpZDxNVExDb3VudGVyU2FtcGxl
QnVmZmVyPik7CisgICAgUXVlcnlTZXQoaWQ8TVRMQ291bnRlclNhbXBsZUJ1ZmZlcj4sIERldmlj
ZSYpOwogCiAgICAgY29uc3QgaWQ8TVRMQ291bnRlclNhbXBsZUJ1ZmZlcj4gbV9jb3VudGVyU2Ft
cGxlQnVmZmVyIHsgbmlsIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUv
UXVlcnlTZXQubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9RdWVyeVNldC5tbQppbmRleCA0Y2Fm
MmY3ZDJmZWQuLjgyNDY4YmQ0MWIyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUv
UXVlcnlTZXQubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUXVlcnlTZXQubW0KQEAgLTM0
LDExICszNCwxMiBAQCBuYW1lc3BhY2UgV2ViR1BVIHsKIFJlZlB0cjxRdWVyeVNldD4gRGV2aWNl
OjpjcmVhdGVRdWVyeVNldChjb25zdCBXR1BVUXVlcnlTZXREZXNjcmlwdG9yJiBkZXNjcmlwdG9y
KQogewogICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKLSAgICByZXR1cm4gUXVlcnlTZXQ6
OmNyZWF0ZShuaWwpOworICAgIHJldHVybiBRdWVyeVNldDo6Y3JlYXRlKG5pbCwgKnRoaXMpOwog
fQogCi1RdWVyeVNldDo6UXVlcnlTZXQoaWQ8TVRMQ291bnRlclNhbXBsZUJ1ZmZlcj4gY291bnRl
clNhbXBsZUJ1ZmZlcikKLSAgICA6IG1fY291bnRlclNhbXBsZUJ1ZmZlcihjb3VudGVyU2FtcGxl
QnVmZmVyKQorUXVlcnlTZXQ6OlF1ZXJ5U2V0KGlkPE1UTENvdW50ZXJTYW1wbGVCdWZmZXI+IGNv
dW50ZXJTYW1wbGVCdWZmZXIsIERldmljZSYgZGV2aWNlKQorICAgIDogT2JqZWN0QmFzZShkZXZp
Y2UpCisgICAgLCBtX2NvdW50ZXJTYW1wbGVCdWZmZXIoY291bnRlclNhbXBsZUJ1ZmZlcikKIHsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvUXVldWUuaCBiL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL1F1ZXVlLmgKaW5kZXggNmU2YTBkYzRmNzk5Li5hZTgzNTNiNGFlMTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1F1ZXVlLmgKKysrIGIvU291cmNlL1dlYkdQ
VS9XZWJHUFUvUXVldWUuaApAQCAtNDIsNiArNDIsMTAgQEAgY2xhc3MgQnVmZmVyOwogY2xhc3Mg
Q29tbWFuZEJ1ZmZlcjsKIGNsYXNzIERldmljZTsKIAorLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHVi
LmlvL2dwdXdlYi8jZ3B1cXVldWUKKy8vIFF1ZXVlIGRvZXNuJ3QgaW5oZXJpdCBmcm9tIE9iamVj
dEJhc2UgYmVjYXVzZSB0aGUgb3duZXJzaGlwIGRpcmVjdGlvbiBpcyByZXZlcnNlZAorLy8gKHVu
dGlsIFdlYkdQVSBzdXBwb3J0cyBtdWx0aXBsZSBxdWV1ZXMpLgorLy8gQSBkZXZpY2Ugb3ducyBp
dHMgZGVmYXVsdCBxdWV1ZSwgbm90IHRoZSBvdGhlciB3YXkgYXJvdW5kLgogY2xhc3MgUXVldWUg
OiBwdWJsaWMgV0dQVVF1ZXVlSW1wbCwgcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFF1ZXVl
PiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJCdW5kbGUuaCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L1JlbmRlckJ1bmRsZS5oCmluZGV4IGUzYTNmNTJlOWU5Yi4uNTg2NjhjZmM3ZjY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJCdW5kbGUuaAorKysgYi9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9SZW5kZXJCdW5kbGUuaApAQCAtMjUsMjEgKzI1LDI0IEBACiAKICNwcmFnbWEg
b25jZQogCisjaW1wb3J0ICJPYmplY3RCYXNlLmgiCiAjaW1wb3J0IDx3dGYvRmFzdE1hbGxvYy5o
PgogI2ltcG9ydCA8d3RmL1JlZi5oPgotI2ltcG9ydCA8d3RmL1JlZkNvdW50ZWQuaD4KIAogc3Ry
dWN0IFdHUFVSZW5kZXJCdW5kbGVJbXBsIHsKIH07CiAKIG5hbWVzcGFjZSBXZWJHUFUgewogCi1j
bGFzcyBSZW5kZXJCdW5kbGUgOiBwdWJsaWMgV0dQVVJlbmRlckJ1bmRsZUltcGwsIHB1YmxpYyBS
ZWZDb3VudGVkPFJlbmRlckJ1bmRsZT4geworY2xhc3MgRGV2aWNlOworCisvLyBodHRwczovL2dw
dXdlYi5naXRodWIuaW8vZ3B1d2ViLyNncHVyZW5kZXJidW5kbGUKK2NsYXNzIFJlbmRlckJ1bmRs
ZSA6IHB1YmxpYyBXR1BVUmVuZGVyQnVuZGxlSW1wbCwgcHVibGljIE9iamVjdEJhc2UgewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVuZGVy
QnVuZGxlPiBjcmVhdGUoaWQ8TVRMSW5kaXJlY3RDb21tYW5kQnVmZmVyPiBpbmRpcmVjdENvbW1h
bmRCdWZmZXIpCisgICAgc3RhdGljIFJlZjxSZW5kZXJCdW5kbGU+IGNyZWF0ZShpZDxNVExJbmRp
cmVjdENvbW1hbmRCdWZmZXI+IGluZGlyZWN0Q29tbWFuZEJ1ZmZlciwgRGV2aWNlJiBkZXZpY2Up
CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW5kZXJCdW5kbGUoaW5kaXJl
Y3RDb21tYW5kQnVmZmVyKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbmRlckJ1
bmRsZShpbmRpcmVjdENvbW1hbmRCdWZmZXIsIGRldmljZSkpOwogICAgIH0KIAogICAgIH5SZW5k
ZXJCdW5kbGUoKTsKQEAgLTQ5LDcgKzUyLDcgQEAgcHVibGljOgogICAgIGlkPE1UTEluZGlyZWN0
Q29tbWFuZEJ1ZmZlcj4gaW5kaXJlY3RDb21tYW5kQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9p
bmRpcmVjdENvbW1hbmRCdWZmZXI7IH0KIAogcHJpdmF0ZToKLSAgICBSZW5kZXJCdW5kbGUoaWQ8
TVRMSW5kaXJlY3RDb21tYW5kQnVmZmVyPik7CisgICAgUmVuZGVyQnVuZGxlKGlkPE1UTEluZGly
ZWN0Q29tbWFuZEJ1ZmZlcj4sIERldmljZSYpOwogCiAgICAgY29uc3QgaWQ8TVRMSW5kaXJlY3RD
b21tYW5kQnVmZmVyPiBtX2luZGlyZWN0Q29tbWFuZEJ1ZmZlciB7IG5pbCB9OwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlckJ1bmRsZS5tbSBiL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL1JlbmRlckJ1bmRsZS5tbQppbmRleCA1YWZiNTM5YjJjMGUuLjQ2OTc1NmM5NzQ2
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyQnVuZGxlLm1tCisrKyBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlckJ1bmRsZS5tbQpAQCAtMzAsOCArMzAsOSBAQAog
CiBuYW1lc3BhY2UgV2ViR1BVIHsKIAotUmVuZGVyQnVuZGxlOjpSZW5kZXJCdW5kbGUoaWQ8TVRM
SW5kaXJlY3RDb21tYW5kQnVmZmVyPiBpbmRpcmVjdENvbW1hbmRCdWZmZXIpCi0gICAgOiBtX2lu
ZGlyZWN0Q29tbWFuZEJ1ZmZlcihpbmRpcmVjdENvbW1hbmRCdWZmZXIpCitSZW5kZXJCdW5kbGU6
OlJlbmRlckJ1bmRsZShpZDxNVExJbmRpcmVjdENvbW1hbmRCdWZmZXI+IGluZGlyZWN0Q29tbWFu
ZEJ1ZmZlciwgRGV2aWNlJiBkZXZpY2UpCisgICAgOiBPYmplY3RCYXNlKGRldmljZSkKKyAgICAs
IG1faW5kaXJlY3RDb21tYW5kQnVmZmVyKGluZGlyZWN0Q29tbWFuZEJ1ZmZlcikKIHsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyQnVuZGxlRW5jb2Rlci5oIGIv
U291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyQnVuZGxlRW5jb2Rlci5oCmluZGV4IDQ4NGI0YTA4
MzFjMy4uNWYxMDI0ODkzZWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5k
ZXJCdW5kbGVFbmNvZGVyLmgKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyQnVuZGxl
RW5jb2Rlci5oCkBAIC0yNiw5ICsyNiw5IEBACiAjcHJhZ21hIG9uY2UKIAogI2ltcG9ydCAiQ29t
bWFuZHNNaXhpbi5oIgorI2ltcG9ydCAiT2JqZWN0QmFzZS5oIgogI2ltcG9ydCA8d3RmL0Zhc3RN
YWxsb2MuaD4KICNpbXBvcnQgPHd0Zi9SZWYuaD4KLSNpbXBvcnQgPHd0Zi9SZWZDb3VudGVkLmg+
CiAjaW1wb3J0IDx3dGYvUmVmUHRyLmg+CiAKIHN0cnVjdCBXR1BVUmVuZGVyQnVuZGxlRW5jb2Rl
ckltcGwgewpAQCAtMzgsMTUgKzM4LDE3IEBAIG5hbWVzcGFjZSBXZWJHUFUgewogCiBjbGFzcyBC
aW5kR3JvdXA7CiBjbGFzcyBCdWZmZXI7CitjbGFzcyBEZXZpY2U7CiBjbGFzcyBSZW5kZXJCdW5k
bGU7CiBjbGFzcyBSZW5kZXJQaXBlbGluZTsKIAotY2xhc3MgUmVuZGVyQnVuZGxlRW5jb2RlciA6
IHB1YmxpYyBXR1BVUmVuZGVyQnVuZGxlRW5jb2RlckltcGwsIHB1YmxpYyBSZWZDb3VudGVkPFJl
bmRlckJ1bmRsZUVuY29kZXI+LCBwdWJsaWMgQ29tbWFuZHNNaXhpbiB7CisvLyBodHRwczovL2dw
dXdlYi5naXRodWIuaW8vZ3B1d2ViLyNncHVyZW5kZXJidW5kbGVlbmNvZGVyCitjbGFzcyBSZW5k
ZXJCdW5kbGVFbmNvZGVyIDogcHVibGljIFdHUFVSZW5kZXJCdW5kbGVFbmNvZGVySW1wbCwgcHVi
bGljIE9iamVjdEJhc2UsIHB1YmxpYyBDb21tYW5kc01peGluIHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbmRlckJ1bmRsZUVuY29kZXI+
IGNyZWF0ZShpZDxNVExJbmRpcmVjdENvbW1hbmRCdWZmZXI+IGluZGlyZWN0Q29tbWFuZEJ1ZmZl
cikKKyAgICBzdGF0aWMgUmVmPFJlbmRlckJ1bmRsZUVuY29kZXI+IGNyZWF0ZShpZDxNVExJbmRp
cmVjdENvbW1hbmRCdWZmZXI+IGluZGlyZWN0Q29tbWFuZEJ1ZmZlciwgRGV2aWNlJiBkZXZpY2Up
CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW5kZXJCdW5kbGVFbmNvZGVy
KGluZGlyZWN0Q29tbWFuZEJ1ZmZlcikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBS
ZW5kZXJCdW5kbGVFbmNvZGVyKGluZGlyZWN0Q29tbWFuZEJ1ZmZlciwgZGV2aWNlKSk7CiAgICAg
fQogCiAgICAgflJlbmRlckJ1bmRsZUVuY29kZXIoKTsKQEAgLTY2LDcgKzY4LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0TGFiZWwoU3RyaW5nJiYpOwogCiBwcml2YXRlOgotICAgIFJlbmRlckJ1
bmRsZUVuY29kZXIoaWQ8TVRMSW5kaXJlY3RDb21tYW5kQnVmZmVyPik7CisgICAgUmVuZGVyQnVu
ZGxlRW5jb2RlcihpZDxNVExJbmRpcmVjdENvbW1hbmRCdWZmZXI+LCBEZXZpY2UmKTsKIAogICAg
IGJvb2wgdmFsaWRhdGVQb3BEZWJ1Z0dyb3VwKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL1JlbmRlckJ1bmRsZUVuY29kZXIubW0gYi9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9SZW5kZXJCdW5kbGVFbmNvZGVyLm1tCmluZGV4IGQ4NmZhOTlmMWY3NC4uNzc3ODgxYzMw
ZGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJCdW5kbGVFbmNvZGVy
Lm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlckJ1bmRsZUVuY29kZXIubW0KQEAg
LTM4LDExICszOCwxMiBAQCBuYW1lc3BhY2UgV2ViR1BVIHsKIFJlZlB0cjxSZW5kZXJCdW5kbGVF
bmNvZGVyPiBEZXZpY2U6OmNyZWF0ZVJlbmRlckJ1bmRsZUVuY29kZXIoY29uc3QgV0dQVVJlbmRl
ckJ1bmRsZUVuY29kZXJEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIFVOVVNFRF9QQVJB
TShkZXNjcmlwdG9yKTsKLSAgICByZXR1cm4gUmVuZGVyQnVuZGxlRW5jb2Rlcjo6Y3JlYXRlKG5p
bCk7CisgICAgcmV0dXJuIFJlbmRlckJ1bmRsZUVuY29kZXI6OmNyZWF0ZShuaWwsICp0aGlzKTsK
IH0KIAotUmVuZGVyQnVuZGxlRW5jb2Rlcjo6UmVuZGVyQnVuZGxlRW5jb2RlcihpZDxNVExJbmRp
cmVjdENvbW1hbmRCdWZmZXI+IGluZGlyZWN0Q29tbWFuZEJ1ZmZlcikKLSAgICA6IG1faW5kaXJl
Y3RDb21tYW5kQnVmZmVyKGluZGlyZWN0Q29tbWFuZEJ1ZmZlcikKK1JlbmRlckJ1bmRsZUVuY29k
ZXI6OlJlbmRlckJ1bmRsZUVuY29kZXIoaWQ8TVRMSW5kaXJlY3RDb21tYW5kQnVmZmVyPiBpbmRp
cmVjdENvbW1hbmRCdWZmZXIsIERldmljZSYgZGV2aWNlKQorICAgIDogT2JqZWN0QmFzZShkZXZp
Y2UpCisgICAgLCBtX2luZGlyZWN0Q29tbWFuZEJ1ZmZlcihpbmRpcmVjdENvbW1hbmRCdWZmZXIp
CiB7CiB9CiAKQEAgLTgwLDcgKzgxLDcgQEAgdm9pZCBSZW5kZXJCdW5kbGVFbmNvZGVyOjpkcmF3
SW5kaXJlY3QoY29uc3QgQnVmZmVyJiBpbmRpcmVjdEJ1ZmZlciwgdWludDY0X3QgaW4KIFJlZlB0
cjxSZW5kZXJCdW5kbGU+IFJlbmRlckJ1bmRsZUVuY29kZXI6OmZpbmlzaChjb25zdCBXR1BVUmVu
ZGVyQnVuZGxlRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICBVTlVTRURfUEFSQU0oZGVz
Y3JpcHRvcik7Ci0gICAgcmV0dXJuIFJlbmRlckJ1bmRsZTo6Y3JlYXRlKG5pbCk7CisgICAgcmV0
dXJuIFJlbmRlckJ1bmRsZTo6Y3JlYXRlKG5pbCwgbV9kZXZpY2UpOwogfQogCiB2b2lkIFJlbmRl
ckJ1bmRsZUVuY29kZXI6Omluc2VydERlYnVnTWFya2VyKFN0cmluZyYmKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyUGFzc0VuY29kZXIuaCBiL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL1JlbmRlclBhc3NFbmNvZGVyLmgKaW5kZXggZDRhNjMxMTAzM2FkLi5iMDdmMTA5MDU5
ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlclBhc3NFbmNvZGVyLmgK
KysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyUGFzc0VuY29kZXIuaApAQCAtMjYsOSAr
MjYsOSBAQAogI3ByYWdtYSBvbmNlCiAKICNpbXBvcnQgIkNvbW1hbmRzTWl4aW4uaCIKKyNpbXBv
cnQgIk9iamVjdEJhc2UuaCIKICNpbXBvcnQgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW1wb3J0IDx3
dGYvUmVmLmg+Ci0jaW1wb3J0IDx3dGYvUmVmQ291bnRlZC5oPgogI2ltcG9ydCA8d3RmL1ZlY3Rv
ci5oPgogCiBzdHJ1Y3QgV0dQVVJlbmRlclBhc3NFbmNvZGVySW1wbCB7CkBAIC0zOCwxNiArMzgs
MTggQEAgbmFtZXNwYWNlIFdlYkdQVSB7CiAKIGNsYXNzIEJpbmRHcm91cDsKIGNsYXNzIEJ1ZmZl
cjsKK2NsYXNzIERldmljZTsKIGNsYXNzIFF1ZXJ5U2V0OwogY2xhc3MgUmVuZGVyQnVuZGxlOwog
Y2xhc3MgUmVuZGVyUGlwZWxpbmU7CiAKLWNsYXNzIFJlbmRlclBhc3NFbmNvZGVyIDogcHVibGlj
IFdHUFVSZW5kZXJQYXNzRW5jb2RlckltcGwsIHB1YmxpYyBSZWZDb3VudGVkPFJlbmRlclBhc3NF
bmNvZGVyPiwgcHVibGljIENvbW1hbmRzTWl4aW4geworLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHVi
LmlvL2dwdXdlYi8jZ3B1cmVuZGVycGFzc2VuY29kZXIKK2NsYXNzIFJlbmRlclBhc3NFbmNvZGVy
IDogcHVibGljIFdHUFVSZW5kZXJQYXNzRW5jb2RlckltcGwsIHB1YmxpYyBPYmplY3RCYXNlLCBw
dWJsaWMgQ29tbWFuZHNNaXhpbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxSZW5kZXJQYXNzRW5jb2Rlcj4gY3JlYXRlKGlkPE1UTFJlbmRl
ckNvbW1hbmRFbmNvZGVyPiByZW5kZXJDb21tYW5kRW5jb2RlcikKKyAgICBzdGF0aWMgUmVmPFJl
bmRlclBhc3NFbmNvZGVyPiBjcmVhdGUoaWQ8TVRMUmVuZGVyQ29tbWFuZEVuY29kZXI+IHJlbmRl
ckNvbW1hbmRFbmNvZGVyLCBEZXZpY2UmIGRldmljZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFJlbmRlclBhc3NFbmNvZGVyKHJlbmRlckNvbW1hbmRFbmNvZGVyKSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbmRlclBhc3NFbmNvZGVyKHJlbmRlckNvbW1h
bmRFbmNvZGVyLCBkZXZpY2UpKTsKICAgICB9CiAKICAgICB+UmVuZGVyUGFzc0VuY29kZXIoKTsK
QEAgLTc2LDcgKzc4LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TGFiZWwoU3RyaW5nJiYpOwog
CiBwcml2YXRlOgotICAgIFJlbmRlclBhc3NFbmNvZGVyKGlkPE1UTFJlbmRlckNvbW1hbmRFbmNv
ZGVyPik7CisgICAgUmVuZGVyUGFzc0VuY29kZXIoaWQ8TVRMUmVuZGVyQ29tbWFuZEVuY29kZXI+
LCBEZXZpY2UmKTsKIAogICAgIGJvb2wgdmFsaWRhdGVQb3BEZWJ1Z0dyb3VwKCkgY29uc3Q7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlclBhc3NFbmNvZGVyLm1tIGIv
U291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyUGFzc0VuY29kZXIubW0KaW5kZXggZmQ5NDAyYTlj
NjI1Li4wNWQ3ODkwNmUyNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRl
clBhc3NFbmNvZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlclBhc3NFbmNv
ZGVyLm1tCkBAIC0zNSw4ICszNSw5IEBACiAKIG5hbWVzcGFjZSBXZWJHUFUgewogCi1SZW5kZXJQ
YXNzRW5jb2Rlcjo6UmVuZGVyUGFzc0VuY29kZXIoaWQ8TVRMUmVuZGVyQ29tbWFuZEVuY29kZXI+
IHJlbmRlckNvbW1hbmRFbmNvZGVyKQotICAgIDogbV9yZW5kZXJDb21tYW5kRW5jb2RlcihyZW5k
ZXJDb21tYW5kRW5jb2RlcikKK1JlbmRlclBhc3NFbmNvZGVyOjpSZW5kZXJQYXNzRW5jb2Rlcihp
ZDxNVExSZW5kZXJDb21tYW5kRW5jb2Rlcj4gcmVuZGVyQ29tbWFuZEVuY29kZXIsIERldmljZSYg
ZGV2aWNlKQorICAgIDogT2JqZWN0QmFzZShkZXZpY2UpCisgICAgLCBtX3JlbmRlckNvbW1hbmRF
bmNvZGVyKHJlbmRlckNvbW1hbmRFbmNvZGVyKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9SZW5kZXJQaXBlbGluZS5oIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVu
ZGVyUGlwZWxpbmUuaAppbmRleCBlMWQyYzJlMGQ5MmYuLjc4ZTQxYzA2YTMyOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyUGlwZWxpbmUuaAorKysgYi9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9SZW5kZXJQaXBlbGluZS5oCkBAIC0yNSw5ICsyNSw5IEBACiAKICNwcmFnbWEg
b25jZQogCisjaW1wb3J0ICJPYmplY3RCYXNlLmgiCiAjaW1wb3J0IDx3dGYvRmFzdE1hbGxvYy5o
PgogI2ltcG9ydCA8d3RmL1JlZi5oPgotI2ltcG9ydCA8d3RmL1JlZkNvdW50ZWQuaD4KIAogc3Ry
dWN0IFdHUFVSZW5kZXJQaXBlbGluZUltcGwgewogfTsKQEAgLTM1LDEzICszNSwxNSBAQCBzdHJ1
Y3QgV0dQVVJlbmRlclBpcGVsaW5lSW1wbCB7CiBuYW1lc3BhY2UgV2ViR1BVIHsKIAogY2xhc3Mg
QmluZEdyb3VwTGF5b3V0OworY2xhc3MgRGV2aWNlOwogCi1jbGFzcyBSZW5kZXJQaXBlbGluZSA6
IHB1YmxpYyBXR1BVUmVuZGVyUGlwZWxpbmVJbXBsLCBwdWJsaWMgUmVmQ291bnRlZDxSZW5kZXJQ
aXBlbGluZT4geworLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8jZ3B1cmVuZGVy
cGlwZWxpbmUKK2NsYXNzIFJlbmRlclBpcGVsaW5lIDogcHVibGljIFdHUFVSZW5kZXJQaXBlbGlu
ZUltcGwsIHB1YmxpYyBPYmplY3RCYXNlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbmRlclBpcGVsaW5lPiBjcmVhdGUoaWQ8TVRMUmVu
ZGVyUGlwZWxpbmVTdGF0ZT4gcmVuZGVyUGlwZWxpbmVTdGF0ZSkKKyAgICBzdGF0aWMgUmVmPFJl
bmRlclBpcGVsaW5lPiBjcmVhdGUoaWQ8TVRMUmVuZGVyUGlwZWxpbmVTdGF0ZT4gcmVuZGVyUGlw
ZWxpbmVTdGF0ZSwgRGV2aWNlJiBkZXZpY2UpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBSZW5kZXJQaXBlbGluZShyZW5kZXJQaXBlbGluZVN0YXRlKSk7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5lU3RhdGUsIGRl
dmljZSkpOwogICAgIH0KIAogICAgIH5SZW5kZXJQaXBlbGluZSgpOwpAQCAtNTIsNyArNTQsNyBA
QCBwdWJsaWM6CiAgICAgaWQ8TVRMUmVuZGVyUGlwZWxpbmVTdGF0ZT4gcmVuZGVyUGlwZWxpbmVT
dGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyUGlwZWxpbmVTdGF0ZTsgfQogCiBwcml2YXRl
OgotICAgIFJlbmRlclBpcGVsaW5lKGlkPE1UTFJlbmRlclBpcGVsaW5lU3RhdGU+KTsKKyAgICBS
ZW5kZXJQaXBlbGluZShpZDxNVExSZW5kZXJQaXBlbGluZVN0YXRlPiwgRGV2aWNlJik7CiAKICAg
ICBjb25zdCBpZDxNVExSZW5kZXJQaXBlbGluZVN0YXRlPiBtX3JlbmRlclBpcGVsaW5lU3RhdGUg
eyBuaWwgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJQaXBl
bGluZS5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlclBpcGVsaW5lLm1tCmluZGV4IGM3
Y2Y5ZjM2ZTVkZi4uZTM3OTI0ZWFiMjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9SZW5kZXJQaXBlbGluZS5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJQaXBl
bGluZS5tbQpAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViR1BVIHsKIFJlZlB0cjxSZW5k
ZXJQaXBlbGluZT4gRGV2aWNlOjpjcmVhdGVSZW5kZXJQaXBlbGluZShjb25zdCBXR1BVUmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIFVOVVNFRF9QQVJBTShkZXNj
cmlwdG9yKTsKLSAgICByZXR1cm4gUmVuZGVyUGlwZWxpbmU6OmNyZWF0ZShuaWwpOworICAgIHJl
dHVybiBSZW5kZXJQaXBlbGluZTo6Y3JlYXRlKG5pbCwgKnRoaXMpOwogfQogCiB2b2lkIERldmlj
ZTo6Y3JlYXRlUmVuZGVyUGlwZWxpbmVBc3luYyhjb25zdCBXR1BVUmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yJiBkZXNjcmlwdG9yLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdHUFVDcmVhdGVQaXBl
bGluZUFzeW5jU3RhdHVzLCBSZWZQdHI8UmVuZGVyUGlwZWxpbmU+JiYsIFN0cmluZyYmIG1lc3Nh
Z2UpPiYmIGNhbGxiYWNrKQpAQCAtNDQsOCArNDQsOSBAQCB2b2lkIERldmljZTo6Y3JlYXRlUmVu
ZGVyUGlwZWxpbmVBc3luYyhjb25zdCBXR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yJiBkZXNj
cgogICAgIFVOVVNFRF9QQVJBTShjYWxsYmFjayk7CiB9CiAKLVJlbmRlclBpcGVsaW5lOjpSZW5k
ZXJQaXBlbGluZShpZDxNVExSZW5kZXJQaXBlbGluZVN0YXRlPiByZW5kZXJQaXBlbGluZVN0YXRl
KQotICAgIDogbV9yZW5kZXJQaXBlbGluZVN0YXRlKHJlbmRlclBpcGVsaW5lU3RhdGUpCitSZW5k
ZXJQaXBlbGluZTo6UmVuZGVyUGlwZWxpbmUoaWQ8TVRMUmVuZGVyUGlwZWxpbmVTdGF0ZT4gcmVu
ZGVyUGlwZWxpbmVTdGF0ZSwgRGV2aWNlJiBkZXZpY2UpCisgICAgOiBPYmplY3RCYXNlKGRldmlj
ZSkKKyAgICAsIG1fcmVuZGVyUGlwZWxpbmVTdGF0ZShyZW5kZXJQaXBlbGluZVN0YXRlKQogewog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9TYW1wbGVyLmggYi9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9TYW1wbGVyLmgKaW5kZXggMzZhMjg2NGRiN2NhLi5jODRkMDc2NTdhOTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1NhbXBsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9TYW1wbGVyLmgKQEAgLTI1LDkgKzI1LDkgQEAKIAogI3ByYWdtYSBvbmNl
CiAKKyNpbXBvcnQgIk9iamVjdEJhc2UuaCIKICNpbXBvcnQgPHd0Zi9GYXN0TWFsbG9jLmg+CiAj
aW1wb3J0IDx3dGYvUmVmLmg+Ci0jaW1wb3J0IDx3dGYvUmVmQ291bnRlZC5oPgogCiBzdHJ1Y3Qg
V0dQVVNhbXBsZXJJbXBsIHsKIH07CkBAIC0zNiw3ICszNiw4IEBAIG5hbWVzcGFjZSBXZWJHUFUg
ewogCiBjbGFzcyBEZXZpY2U7CiAKLWNsYXNzIFNhbXBsZXIgOiBwdWJsaWMgV0dQVVNhbXBsZXJJ
bXBsLCBwdWJsaWMgUmVmQ291bnRlZDxTYW1wbGVyPiB7CisvLyBodHRwczovL2dwdXdlYi5naXRo
dWIuaW8vZ3B1d2ViLyNncHVzYW1wbGVyCitjbGFzcyBTYW1wbGVyIDogcHVibGljIFdHUFVTYW1w
bGVySW1wbCwgcHVibGljIE9iamVjdEJhc2UgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8U2FtcGxlcj4gY3JlYXRlKGlkPE1UTFNhbXBsZXJT
dGF0ZT4gc2FtcGxlclN0YXRlLCBjb25zdCBXR1BVU2FtcGxlckRlc2NyaXB0b3ImIGRlc2NyaXB0
b3IsIERldmljZSYgZGV2aWNlKQpAQCAtNTksOCArNjAsNiBAQCBwcml2YXRlOgogICAgIGNvbnN0
IGlkPE1UTFNhbXBsZXJTdGF0ZT4gbV9zYW1wbGVyU3RhdGUgeyBuaWwgfTsKIAogICAgIGNvbnN0
IFdHUFVTYW1wbGVyRGVzY3JpcHRvciBtX2Rlc2NyaXB0b3IgeyB9OwotCi0gICAgY29uc3QgUmVm
PERldmljZT4gbV9kZXZpY2U7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJHUFUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1NhbXBsZXIubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9TYW1wbGVyLm1tCmluZGV4IGNlYWM2Y2UzOTdlZC4uYWUxNDE4MGNkOTc4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9TYW1wbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL1NhbXBsZXIubW0KQEAgLTE2Myw5ICsxNjMsOSBAQCBSZWZQdHI8U2FtcGxlcj4gRGV2aWNl
OjpjcmVhdGVTYW1wbGVyKGNvbnN0IFdHUFVTYW1wbGVyRGVzY3JpcHRvciYgZGVzY3JpcHRvcikK
IH0KIAogU2FtcGxlcjo6U2FtcGxlcihpZDxNVExTYW1wbGVyU3RhdGU+IHNhbXBsZXJTdGF0ZSwg
Y29uc3QgV0dQVVNhbXBsZXJEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBEZXZpY2UmIGRldmljZSkK
LSAgICA6IG1fc2FtcGxlclN0YXRlKHNhbXBsZXJTdGF0ZSkKKyAgICA6IE9iamVjdEJhc2UoZGV2
aWNlKQorICAgICwgbV9zYW1wbGVyU3RhdGUoc2FtcGxlclN0YXRlKQogICAgICwgbV9kZXNjcmlw
dG9yKGRlc2NyaXB0b3IpCi0gICAgLCBtX2RldmljZShkZXZpY2UpCiB7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1NoYWRlck1vZHVsZS5oIGIvU291cmNlL1dlYkdQVS9X
ZWJHUFUvU2hhZGVyTW9kdWxlLmgKaW5kZXggOWYzYmM1ZTk3MTJmLi43ZWY4MjBlMzIwYWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1NoYWRlck1vZHVsZS5oCisrKyBiL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL1NoYWRlck1vZHVsZS5oCkBAIC0yNSwxMCArMjUsMTAgQEAKIAogI3By
YWdtYSBvbmNlCiAKKyNpbXBvcnQgIk9iamVjdEJhc2UuaCIKICNpbXBvcnQgIldHU0wuaCIKICNp
bXBvcnQgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW1wb3J0IDx3dGYvUmVmLmg+Ci0jaW1wb3J0IDx3
dGYvUmVmQ291bnRlZC5oPgogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogI2ltcG9y
dCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTM3LDE0ICszNywxNiBAQCBzdHJ1Y3QgV0dQ
VVNoYWRlck1vZHVsZUltcGwgewogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIAorY2xhc3MgRGV2aWNl
OwogY2xhc3MgUGlwZWxpbmVMYXlvdXQ7CiAKLWNsYXNzIFNoYWRlck1vZHVsZSA6IHB1YmxpYyBX
R1BVU2hhZGVyTW9kdWxlSW1wbCwgcHVibGljIFJlZkNvdW50ZWQ8U2hhZGVyTW9kdWxlPiB7Cisv
LyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNncHVzaGFkZXJtb2R1bGUKK2NsYXNz
IFNoYWRlck1vZHVsZSA6IHB1YmxpYyBXR1BVU2hhZGVyTW9kdWxlSW1wbCwgcHVibGljIE9iamVj
dEJhc2UgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRp
YyBSZWY8U2hhZGVyTW9kdWxlPiBjcmVhdGUoc3RkOjp2YXJpYW50PFdHU0w6OlN1Y2Nlc3NmdWxD
aGVjaywgV0dTTDo6RmFpbGVkQ2hlY2s+JiYgY2hlY2tSZXN1bHQsIEhhc2hNYXA8U3RyaW5nLCBS
ZWY8UGlwZWxpbmVMYXlvdXQ+PiYmIHBpcGVsaW5lTGF5b3V0SGludHMsIEhhc2hNYXA8U3RyaW5n
LCBXR1NMOjpSZWZsZWN0aW9uOjpFbnRyeVBvaW50SW5mb3JtYXRpb24+JiYgZW50cnlQb2ludElu
Zm9ybWF0aW9uLCBpZDxNVExMaWJyYXJ5PiBsaWJyYXJ5KQorICAgIHN0YXRpYyBSZWY8U2hhZGVy
TW9kdWxlPiBjcmVhdGUoc3RkOjp2YXJpYW50PFdHU0w6OlN1Y2Nlc3NmdWxDaGVjaywgV0dTTDo6
RmFpbGVkQ2hlY2s+JiYgY2hlY2tSZXN1bHQsIEhhc2hNYXA8U3RyaW5nLCBSZWY8UGlwZWxpbmVM
YXlvdXQ+PiYmIHBpcGVsaW5lTGF5b3V0SGludHMsIEhhc2hNYXA8U3RyaW5nLCBXR1NMOjpSZWZs
ZWN0aW9uOjpFbnRyeVBvaW50SW5mb3JtYXRpb24+JiYgZW50cnlQb2ludEluZm9ybWF0aW9uLCBp
ZDxNVExMaWJyYXJ5PiBsaWJyYXJ5LCBEZXZpY2UmIGRldmljZSkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFNoYWRlck1vZHVsZShXVEZNb3ZlKGNoZWNrUmVzdWx0KSwgV1RG
TW92ZShwaXBlbGluZUxheW91dEhpbnRzKSwgV1RGTW92ZShlbnRyeVBvaW50SW5mb3JtYXRpb24p
LCBsaWJyYXJ5KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYWRlck1vZHVsZShX
VEZNb3ZlKGNoZWNrUmVzdWx0KSwgV1RGTW92ZShwaXBlbGluZUxheW91dEhpbnRzKSwgV1RGTW92
ZShlbnRyeVBvaW50SW5mb3JtYXRpb24pLCBsaWJyYXJ5LCBkZXZpY2UpKTsKICAgICB9CiAKICAg
ICB+U2hhZGVyTW9kdWxlKCk7CkBAIC02Miw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICBpZDxNVExM
aWJyYXJ5PiBsaWJyYXJ5KCkgY29uc3QgeyByZXR1cm4gbV9saWJyYXJ5OyB9CiAKIHByaXZhdGU6
Ci0gICAgU2hhZGVyTW9kdWxlKHN0ZDo6dmFyaWFudDxXR1NMOjpTdWNjZXNzZnVsQ2hlY2ssIFdH
U0w6OkZhaWxlZENoZWNrPiYmLCBIYXNoTWFwPFN0cmluZywgUmVmPFBpcGVsaW5lTGF5b3V0Pj4m
JiwgSGFzaE1hcDxTdHJpbmcsIFdHU0w6OlJlZmxlY3Rpb246OkVudHJ5UG9pbnRJbmZvcm1hdGlv
bj4mJiwgaWQ8TVRMTGlicmFyeT4pOworICAgIFNoYWRlck1vZHVsZShzdGQ6OnZhcmlhbnQ8V0dT
TDo6U3VjY2Vzc2Z1bENoZWNrLCBXR1NMOjpGYWlsZWRDaGVjaz4mJiwgSGFzaE1hcDxTdHJpbmcs
IFJlZjxQaXBlbGluZUxheW91dD4+JiYsIEhhc2hNYXA8U3RyaW5nLCBXR1NMOjpSZWZsZWN0aW9u
OjpFbnRyeVBvaW50SW5mb3JtYXRpb24+JiYsIGlkPE1UTExpYnJhcnk+LCBEZXZpY2UmKTsKIAog
ICAgIGNvbnN0IHN0ZDo6dmFyaWFudDxXR1NMOjpTdWNjZXNzZnVsQ2hlY2ssIFdHU0w6OkZhaWxl
ZENoZWNrPiBtX2NoZWNrUmVzdWx0OwogICAgIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBSZWY8UGlw
ZWxpbmVMYXlvdXQ+PiBtX3BpcGVsaW5lTGF5b3V0SGludHM7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9TaGFkZXJNb2R1bGUubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9TaGFk
ZXJNb2R1bGUubW0KaW5kZXggNjA1ZTM3MjMzNjEwLi42NmU4NDVhMjJmOWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL1NoYWRlck1vZHVsZS5tbQorKysgYi9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9TaGFkZXJNb2R1bGUubW0KQEAgLTgwLDcgKzgwLDcgQEAgaWQ8TVRMTGlicmFyeT4g
U2hhZGVyTW9kdWxlOjpjcmVhdGVMaWJyYXJ5KGlkPE1UTERldmljZT4gZGV2aWNlLCBjb25zdCBT
dHJpbmcmIG0KICAgICByZXR1cm4gbGlicmFyeTsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFkZXJN
b2R1bGU+IGVhcmx5Q29tcGlsZVNoYWRlck1vZHVsZShpZDxNVExEZXZpY2U+IGRldmljZSwgc3Rk
Ojp2YXJpYW50PFdHU0w6OlN1Y2Nlc3NmdWxDaGVjaywgV0dTTDo6RmFpbGVkQ2hlY2s+JiYgY2hl
Y2tSZXN1bHQsIGNvbnN0IFdHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9ySGludHMmIHN1cHBsaWVk
SGludHMsIFN0cmluZyYmIGxhYmVsKQorc3RhdGljIFJlZlB0cjxTaGFkZXJNb2R1bGU+IGVhcmx5
Q29tcGlsZVNoYWRlck1vZHVsZShEZXZpY2UmIGRldmljZSwgc3RkOjp2YXJpYW50PFdHU0w6OlN1
Y2Nlc3NmdWxDaGVjaywgV0dTTDo6RmFpbGVkQ2hlY2s+JiYgY2hlY2tSZXN1bHQsIGNvbnN0IFdH
UFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9ySGludHMmIHN1cHBsaWVkSGludHMsIFN0cmluZyYmIGxh
YmVsKQogewogICAgIEhhc2hNYXA8U3RyaW5nLCBSZWY8UGlwZWxpbmVMYXlvdXQ+PiBoaW50czsK
ICAgICBIYXNoTWFwPFN0cmluZywgV0dTTDo6UGlwZWxpbmVMYXlvdXQ+IHdnc2xIaW50czsKQEAg
LTk0LDEwICs5NCwxMCBAQCBzdGF0aWMgUmVmUHRyPFNoYWRlck1vZHVsZT4gZWFybHlDb21waWxl
U2hhZGVyTW9kdWxlKGlkPE1UTERldmljZT4gZGV2aWNlLCBzdGQ6OgogICAgICAgICB3Z3NsSGlu
dHMuYWRkKGhpbnRLZXksIFdURk1vdmUoY29udmVydGVkUGlwZWxpbmVMYXlvdXQpKTsKICAgICB9
CiAgICAgYXV0byBwcmVwYXJlUmVzdWx0ID0gV0dTTDo6cHJlcGFyZShzdGQ6OmdldDxXR1NMOjpT
dWNjZXNzZnVsQ2hlY2s+KGNoZWNrUmVzdWx0KS5hc3QsIHdnc2xIaW50cyk7Ci0gICAgYXV0byBs
aWJyYXJ5ID0gU2hhZGVyTW9kdWxlOjpjcmVhdGVMaWJyYXJ5KGRldmljZSwgcHJlcGFyZVJlc3Vs
dC5tc2wsIFdURk1vdmUobGFiZWwpKTsKKyAgICBhdXRvIGxpYnJhcnkgPSBTaGFkZXJNb2R1bGU6
OmNyZWF0ZUxpYnJhcnkoZGV2aWNlLmRldmljZSgpLCBwcmVwYXJlUmVzdWx0Lm1zbCwgV1RGTW92
ZShsYWJlbCkpOwogICAgIGlmICghbGlicmFyeSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgcmV0dXJuIFNoYWRlck1vZHVsZTo6Y3JlYXRlKFdURk1vdmUoY2hlY2tSZXN1bHQpLCBXVEZN
b3ZlKGhpbnRzKSwgV1RGTW92ZShwcmVwYXJlUmVzdWx0LmVudHJ5UG9pbnRzKSwgbGlicmFyeSk7
CisgICAgcmV0dXJuIFNoYWRlck1vZHVsZTo6Y3JlYXRlKFdURk1vdmUoY2hlY2tSZXN1bHQpLCBX
VEZNb3ZlKGhpbnRzKSwgV1RGTW92ZShwcmVwYXJlUmVzdWx0LmVudHJ5UG9pbnRzKSwgbGlicmFy
eSwgZGV2aWNlKTsKIH0KIAogUmVmUHRyPFNoYWRlck1vZHVsZT4gRGV2aWNlOjpjcmVhdGVTaGFk
ZXJNb2R1bGUoY29uc3QgV0dQVVNoYWRlck1vZHVsZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCkBA
IC0xMTIsMTUgKzExMiwxNiBAQCBSZWZQdHI8U2hhZGVyTW9kdWxlPiBEZXZpY2U6OmNyZWF0ZVNo
YWRlck1vZHVsZShjb25zdCBXR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvcgogICAgIGF1dG8gY2hl
Y2tSZXN1bHQgPSBXR1NMOjpzdGF0aWNDaGVjayhTdHJpbmcoc2hhZGVyTW9kdWxlUGFyYW1ldGVy
cy0+d2dzbC5jb2RlKSwgc3RkOjpudWxsb3B0KTsKIAogICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVy
bmF0aXZlPFdHU0w6OlN1Y2Nlc3NmdWxDaGVjaz4oY2hlY2tSZXN1bHQpICYmIHNoYWRlck1vZHVs
ZVBhcmFtZXRlcnMtPmhpbnRzICYmIHNoYWRlck1vZHVsZVBhcmFtZXRlcnMtPmhpbnRzLT5oaW50
c0NvdW50KSB7Ci0gICAgICAgIGlmIChhdXRvIHJlc3VsdCA9IGVhcmx5Q29tcGlsZVNoYWRlck1v
ZHVsZShtX2RldmljZSwgV1RGTW92ZShjaGVja1Jlc3VsdCksICpzaGFkZXJNb2R1bGVQYXJhbWV0
ZXJzLT5oaW50cywgZnJvbUFQSShkZXNjcmlwdG9yLmxhYmVsKSkpCisgICAgICAgIGlmIChhdXRv
IHJlc3VsdCA9IGVhcmx5Q29tcGlsZVNoYWRlck1vZHVsZSgqdGhpcywgV1RGTW92ZShjaGVja1Jl
c3VsdCksICpzaGFkZXJNb2R1bGVQYXJhbWV0ZXJzLT5oaW50cywgZnJvbUFQSShkZXNjcmlwdG9y
LmxhYmVsKSkpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIHJldHVy
biBTaGFkZXJNb2R1bGU6OmNyZWF0ZShXVEZNb3ZlKGNoZWNrUmVzdWx0KSwgeyB9LCB7IH0sIG5p
bCk7CisgICAgcmV0dXJuIFNoYWRlck1vZHVsZTo6Y3JlYXRlKFdURk1vdmUoY2hlY2tSZXN1bHQp
LCB7IH0sIHsgfSwgbmlsLCAqdGhpcyk7CiB9CiAKLVNoYWRlck1vZHVsZTo6U2hhZGVyTW9kdWxl
KHN0ZDo6dmFyaWFudDxXR1NMOjpTdWNjZXNzZnVsQ2hlY2ssIFdHU0w6OkZhaWxlZENoZWNrPiYm
IGNoZWNrUmVzdWx0LCBIYXNoTWFwPFN0cmluZywgUmVmPFBpcGVsaW5lTGF5b3V0Pj4mJiBwaXBl
bGluZUxheW91dEhpbnRzLCBIYXNoTWFwPFN0cmluZywgV0dTTDo6UmVmbGVjdGlvbjo6RW50cnlQ
b2ludEluZm9ybWF0aW9uPiYmIGVudHJ5UG9pbnRJbmZvcm1hdGlvbiwgaWQ8TVRMTGlicmFyeT4g
bGlicmFyeSkKLSAgICA6IG1fY2hlY2tSZXN1bHQoV1RGTW92ZShjaGVja1Jlc3VsdCkpCitTaGFk
ZXJNb2R1bGU6OlNoYWRlck1vZHVsZShzdGQ6OnZhcmlhbnQ8V0dTTDo6U3VjY2Vzc2Z1bENoZWNr
LCBXR1NMOjpGYWlsZWRDaGVjaz4mJiBjaGVja1Jlc3VsdCwgSGFzaE1hcDxTdHJpbmcsIFJlZjxQ
aXBlbGluZUxheW91dD4+JiYgcGlwZWxpbmVMYXlvdXRIaW50cywgSGFzaE1hcDxTdHJpbmcsIFdH
U0w6OlJlZmxlY3Rpb246OkVudHJ5UG9pbnRJbmZvcm1hdGlvbj4mJiBlbnRyeVBvaW50SW5mb3Jt
YXRpb24sIGlkPE1UTExpYnJhcnk+IGxpYnJhcnksIERldmljZSYgZGV2aWNlKQorICAgIDogT2Jq
ZWN0QmFzZShkZXZpY2UpCisgICAgLCBtX2NoZWNrUmVzdWx0KFdURk1vdmUoY2hlY2tSZXN1bHQp
KQogICAgICwgbV9waXBlbGluZUxheW91dEhpbnRzKFdURk1vdmUocGlwZWxpbmVMYXlvdXRIaW50
cykpCiAgICAgLCBtX2VudHJ5UG9pbnRJbmZvcm1hdGlvbihXVEZNb3ZlKGVudHJ5UG9pbnRJbmZv
cm1hdGlvbikpCiAgICAgLCBtX2xpYnJhcnkobGlicmFyeSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL1RleHR1cmUuaCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmUuaApp
bmRleCBhYmE5MzgzOTdiYmIuLjRiYWM1ZDhhZWIwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQ
VS9XZWJHUFUvVGV4dHVyZS5oCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmUuaApA
QCAtMjUsOSArMjUsOSBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2ltcG9ydCAiT2JqZWN0QmFzZS5o
IgogI2ltcG9ydCA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbXBvcnQgPHd0Zi9SZWYuaD4KLSNpbXBv
cnQgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW1wb3J0IDx3dGYvUmVmUHRyLmg+CiAjaW1wb3J0IDx3
dGYvVmVjdG9yLmg+CiAKQEAgLTM5LDcgKzM5LDggQEAgbmFtZXNwYWNlIFdlYkdQVSB7CiBjbGFz
cyBEZXZpY2U7CiBjbGFzcyBUZXh0dXJlVmlldzsKIAotY2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBX
R1BVVGV4dHVyZUltcGwsIHB1YmxpYyBSZWZDb3VudGVkPFRleHR1cmU+IHsKKy8vIGh0dHBzOi8v
Z3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIvI2dwdXRleHR1cmUKK2NsYXNzIFRleHR1cmUgOiBwdWJs
aWMgV0dQVVRleHR1cmVJbXBsLCBwdWJsaWMgT2JqZWN0QmFzZSB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxUZXh0dXJlPiBjcmVhdGUoaWQ8
TVRMVGV4dHVyZT4gdGV4dHVyZSwgY29uc3QgV0dQVVRleHR1cmVEZXNjcmlwdG9yJiBkZXNjcmlw
dG9yLCBWZWN0b3I8V0dQVVRleHR1cmVGb3JtYXQ+JiYgdmlld0Zvcm1hdHMsIERldmljZSYgZGV2
aWNlKQpAQCAtODcsOCArODgsNiBAQCBwcml2YXRlOgogCiAgICAgY29uc3QgV0dQVVRleHR1cmVE
ZXNjcmlwdG9yIG1fZGVzY3JpcHRvciB7IH07CiAgICAgY29uc3QgVmVjdG9yPFdHUFVUZXh0dXJl
Rm9ybWF0PiBtX3ZpZXdGb3JtYXRzOwotCi0gICAgY29uc3QgUmVmPERldmljZT4gbV9kZXZpY2U7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL1RleHR1cmUubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlLm1tCmluZGV4
IDE5OTQ3MTYwMGIzZi4uNjkxOTMwMjc1ZTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9UZXh0dXJlLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmUubW0KQEAg
LTIwNTYsMTAgKzIwNTYsMTAgQEAgUmVmUHRyPFRleHR1cmU+IERldmljZTo6Y3JlYXRlVGV4dHVy
ZShjb25zdCBXR1BVVGV4dHVyZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB9CiAKIFRleHR1cmU6
OlRleHR1cmUoaWQ8TVRMVGV4dHVyZT4gdGV4dHVyZSwgY29uc3QgV0dQVVRleHR1cmVEZXNjcmlw
dG9yJiBkZXNjcmlwdG9yLCBWZWN0b3I8V0dQVVRleHR1cmVGb3JtYXQ+JiYgdmlld0Zvcm1hdHMs
IERldmljZSYgZGV2aWNlKQotICAgIDogbV90ZXh0dXJlKHRleHR1cmUpCisgICAgOiBPYmplY3RC
YXNlKGRldmljZSkKKyAgICAsIG1fdGV4dHVyZSh0ZXh0dXJlKQogICAgICwgbV9kZXNjcmlwdG9y
KGRlc2NyaXB0b3IpCiAgICAgLCBtX3ZpZXdGb3JtYXRzKFdURk1vdmUodmlld0Zvcm1hdHMpKQot
ICAgICwgbV9kZXZpY2UoZGV2aWNlKQogewogfQogCkBAIC0yMzQ5LDcgKzIzNDksNyBAQCBSZWZQ
dHI8VGV4dHVyZVZpZXc+IFRleHR1cmU6OmNyZWF0ZVZpZXcoY29uc3QgV0dQVVRleHR1cmVWaWV3
RGVzY3JpcHRvciYgaW5wdXREZQogICAgIGlmICAobV9kZXNjcmlwdG9yLnVzYWdlICYgV0dQVVRl
eHR1cmVVc2FnZV9SZW5kZXJBdHRhY2htZW50KQogICAgICAgICByZW5kZXJFeHRlbnQgPSBjb21w
dXRlUmVuZGVyRXh0ZW50KG1fZGVzY3JpcHRvci5zaXplLCBkZXNjcmlwdG9yLmJhc2VNaXBMZXZl
bCk7CiAKLSAgICByZXR1cm4gVGV4dHVyZVZpZXc6OmNyZWF0ZSh0ZXh0dXJlLCBkZXNjcmlwdG9y
LCByZW5kZXJFeHRlbnQpOworICAgIHJldHVybiBUZXh0dXJlVmlldzo6Y3JlYXRlKHRleHR1cmUs
IGRlc2NyaXB0b3IsIHJlbmRlckV4dGVudCwgbV9kZXZpY2UpOwogfQogCiB2b2lkIFRleHR1cmU6
OmRlc3Ryb3koKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZVZpZXcu
aCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmVWaWV3LmgKaW5kZXggYjA1YjRiMDNiODg2
Li5kMjc5NzVkOGM1NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmVW
aWV3LmgKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZVZpZXcuaApAQCAtMjUsMjMg
KzI1LDI1IEBACiAKICNwcmFnbWEgb25jZQogCisjaW1wb3J0ICJPYmplY3RCYXNlLmgiCiAjaW1w
b3J0IDx3dGYvRmFzdE1hbGxvYy5oPgogI2ltcG9ydCA8d3RmL1JlZi5oPgotI2ltcG9ydCA8d3Rm
L1JlZkNvdW50ZWQuaD4KIAogc3RydWN0IFdHUFVUZXh0dXJlVmlld0ltcGwgewogfTsKIAogbmFt
ZXNwYWNlIFdlYkdQVSB7CiAKK2NsYXNzIERldmljZTsKIGNsYXNzIFRleHR1cmU7CiAKLWNsYXNz
IFRleHR1cmVWaWV3IDogcHVibGljIFdHUFVUZXh0dXJlVmlld0ltcGwsIHB1YmxpYyBSZWZDb3Vu
dGVkPFRleHR1cmVWaWV3PiB7CisvLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNn
cHV0ZXh0dXJldmlldworY2xhc3MgVGV4dHVyZVZpZXcgOiBwdWJsaWMgV0dQVVRleHR1cmVWaWV3
SW1wbCwgcHVibGljIE9iamVjdEJhc2UgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgotICAgIHN0YXRpYyBSZWY8VGV4dHVyZVZpZXc+IGNyZWF0ZShpZDxNVExUZXh0dXJl
PiB0ZXh0dXJlLCBjb25zdCBXR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBj
b25zdCBzdGQ6Om9wdGlvbmFsPFdHUFVFeHRlbnQzRD4mIHJlbmRlckV4dGVudCkKKyAgICBzdGF0
aWMgUmVmPFRleHR1cmVWaWV3PiBjcmVhdGUoaWQ8TVRMVGV4dHVyZT4gdGV4dHVyZSwgY29uc3Qg
V0dQVVRleHR1cmVWaWV3RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgY29uc3Qgc3RkOjpvcHRpb25h
bDxXR1BVRXh0ZW50M0Q+JiByZW5kZXJFeHRlbnQsIERldmljZSYgZGV2aWNlKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dHVyZVZpZXcodGV4dHVyZSwgZGVzY3JpcHRv
ciwgcmVuZGVyRXh0ZW50KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRleHR1cmVW
aWV3KHRleHR1cmUsIGRlc2NyaXB0b3IsIHJlbmRlckV4dGVudCwgZGV2aWNlKSk7CiAgICAgfQog
CiAgICAgflRleHR1cmVWaWV3KCk7CkBAIC01Myw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICBjb25z
dCBzdGQ6Om9wdGlvbmFsPFdHUFVFeHRlbnQzRD4mIHJlbmRlckV4dGVudCgpIGNvbnN0IHsgcmV0
dXJuIG1fcmVuZGVyRXh0ZW50OyB9CiAKIHByaXZhdGU6Ci0gICAgVGV4dHVyZVZpZXcoaWQ8TVRM
VGV4dHVyZT4sIGNvbnN0IFdHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3ImLCBjb25zdCBzdGQ6Om9w
dGlvbmFsPFdHUFVFeHRlbnQzRD4mKTsKKyAgICBUZXh0dXJlVmlldyhpZDxNVExUZXh0dXJlPiwg
Y29uc3QgV0dQVVRleHR1cmVWaWV3RGVzY3JpcHRvciYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V0dQ
VUV4dGVudDNEPiYsIERldmljZSYpOwogCiAgICAgY29uc3QgaWQ8TVRMVGV4dHVyZT4gbV90ZXh0
dXJlIHsgbmlsIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmVW
aWV3Lm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZVZpZXcubW0KaW5kZXggYzcyZTFl
NmVlYjJjLi4wMjNkOWZhMDEyNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1Rl
eHR1cmVWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmVWaWV3Lm1tCkBA
IC0zMCw4ICszMCw5IEBACiAKIG5hbWVzcGFjZSBXZWJHUFUgewogCi1UZXh0dXJlVmlldzo6VGV4
dHVyZVZpZXcoaWQ8TVRMVGV4dHVyZT4gdGV4dHVyZSwgY29uc3QgV0dQVVRleHR1cmVWaWV3RGVz
Y3JpcHRvciYgZGVzY3JpcHRvciwgY29uc3Qgc3RkOjpvcHRpb25hbDxXR1BVRXh0ZW50M0Q+JiBy
ZW5kZXJFeHRlbnQpCi0gICAgOiBtX3RleHR1cmUodGV4dHVyZSkKK1RleHR1cmVWaWV3OjpUZXh0
dXJlVmlldyhpZDxNVExUZXh0dXJlPiB0ZXh0dXJlLCBjb25zdCBXR1BVVGV4dHVyZVZpZXdEZXNj
cmlwdG9yJiBkZXNjcmlwdG9yLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdHUFVFeHRlbnQzRD4mIHJl
bmRlckV4dGVudCwgRGV2aWNlJiBkZXZpY2UpCisgICAgOiBPYmplY3RCYXNlKGRldmljZSkKKyAg
ICAsIG1fdGV4dHVyZSh0ZXh0dXJlKQogICAgICwgbV9kZXNjcmlwdG9yKGRlc2NyaXB0b3IpCiAg
ICAgLCBtX3JlbmRlckV4dGVudChyZW5kZXJFeHRlbnQpCiB7Cg==
</data>
<flag name="review"
          id="484871"
          type_id="1"
          status="+"
          setter="kkinnunen"
    />
          </attachment>
      

    </bug>

</bugzilla>