<?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>237508</bug_id>
          
          <creation_ts>2022-03-06 19:27:41 -0800</creation_ts>
          <short_desc>[WebGPU] Use C++ references instead of pointers where applicable</short_desc>
          <delta_ts>2022-03-06 23:16:42 -0800</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>
          
          
          <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>rmorisset</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1848616</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-03-06 19:27:41 -0800</bug_when>
    <thetext>[WebGPU] Use C++ references instead of pointers where applicable</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1848617</commentid>
    <comment_count>1</comment_count>
      <attachid>453939</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-03-06 19:28:50 -0800</bug_when>
    <thetext>Created attachment 453939
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1848631</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-03-06 22:44:23 -0800</bug_when>
    <thetext>Committed r290877 (248108@main): &lt;https://commits.webkit.org/248108@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 453939.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1848632</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-03-06 22:45:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/89888879&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453939</attachid>
            <date>2022-03-06 19:28:50 -0800</date>
            <delta_ts>2022-03-06 23:16:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237508-20220306192849.patch</filename>
            <type>text/plain</type>
            <size>61052</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwODc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nCmluZGV4IDhjMjA4MTA2OTNjYTVkOWQx
ZmIyMGNlNmEyZTUxNjdhYWZkOGIzNGEuLjkzMDIwMDllNzdmODI1YTA1MGRiODAzNGQ5MmY0ZmYz
NDk3MGE5MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJHUFUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTEzIEBACisyMDIyLTAzLTA2ICBNeWxlcyBD
LiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0gVXNl
IEMrKyByZWZlcmVuY2VzIGluc3RlYWQgb2YgcG9pbnRlcnMgd2hlcmUgYXBwbGljYWJsZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3NTA4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGhlYWRlciB3
ZSdyZSBpbXBsZW1lbnRpbmcgdXNlcyBwb2ludGVycyBiZWNhdXNlIGl0J3MgYSBDIGhlYWRlci4K
KyAgICAgICAgT3VyIGludGVybmFsIGltcGxlbWVudGF0aW9uIGNhbiB1c2UgcmVmZXJlbmNlcyBp
bnN0ZWFkLgorCisgICAgICAgICogV2ViR1BVL0FkYXB0ZXIuaDoKKyAgICAgICAgKiBXZWJHUFUv
QWRhcHRlci5tbToKKyAgICAgICAgKFdlYkdQVTo6QWRhcHRlcjo6Z2V0TGltaXRzKToKKyAgICAg
ICAgKFdlYkdQVTo6QWRhcHRlcjo6Z2V0UHJvcGVydGllcyk6CisgICAgICAgIChXZWJHUFU6OkFk
YXB0ZXI6OnJlcXVlc3REZXZpY2UpOgorICAgICAgICAod2dwdUFkYXB0ZXJHZXRMaW1pdHMpOgor
ICAgICAgICAod2dwdUFkYXB0ZXJHZXRQcm9wZXJ0aWVzKToKKyAgICAgICAgKHdncHVBZGFwdGVy
UmVxdWVzdERldmljZSk6CisgICAgICAgICh3Z3B1QWRhcHRlclJlcXVlc3REZXZpY2VXaXRoQmxv
Y2spOgorICAgICAgICAqIFdlYkdQVS9CaW5kR3JvdXAubW06CisgICAgICAgIChXZWJHUFU6OkRl
dmljZTo6Y3JlYXRlQmluZEdyb3VwKToKKyAgICAgICAgKiBXZWJHUFUvQmluZEdyb3VwTGF5b3V0
Lm1tOgorICAgICAgICAoV2ViR1BVOjpEZXZpY2U6OmNyZWF0ZUJpbmRHcm91cExheW91dCk6Cisg
ICAgICAgICogV2ViR1BVL0J1ZmZlci5tbToKKyAgICAgICAgKFdlYkdQVTo6RGV2aWNlOjpjcmVh
dGVCdWZmZXIpOgorICAgICAgICAqIFdlYkdQVS9Db21tYW5kRW5jb2Rlci5oOgorICAgICAgICAq
IFdlYkdQVS9Db21tYW5kRW5jb2Rlci5tbToKKyAgICAgICAgKFdlYkdQVTo6RGV2aWNlOjpjcmVh
dGVDb21tYW5kRW5jb2Rlcik6CisgICAgICAgIChXZWJHUFU6OkNvbW1hbmRFbmNvZGVyOjpiZWdp
bkNvbXB1dGVQYXNzKToKKyAgICAgICAgKFdlYkdQVTo6Q29tbWFuZEVuY29kZXI6OmJlZ2luUmVu
ZGVyUGFzcyk6CisgICAgICAgIChXZWJHUFU6OkNvbW1hbmRFbmNvZGVyOjpjb3B5QnVmZmVyVG9U
ZXh0dXJlKToKKyAgICAgICAgKFdlYkdQVTo6Q29tbWFuZEVuY29kZXI6OmNvcHlUZXh0dXJlVG9C
dWZmZXIpOgorICAgICAgICAoV2ViR1BVOjpDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVUb1Rl
eHR1cmUpOgorICAgICAgICAoV2ViR1BVOjpDb21tYW5kRW5jb2Rlcjo6ZmluaXNoKToKKyAgICAg
ICAgKHdncHVDb21tYW5kRW5jb2RlckJlZ2luQ29tcHV0ZVBhc3MpOgorICAgICAgICAod2dwdUNv
bW1hbmRFbmNvZGVyQmVnaW5SZW5kZXJQYXNzKToKKyAgICAgICAgKHdncHVDb21tYW5kRW5jb2Rl
ckNvcHlCdWZmZXJUb1RleHR1cmUpOgorICAgICAgICAod2dwdUNvbW1hbmRFbmNvZGVyQ29weVRl
eHR1cmVUb0J1ZmZlcik6CisgICAgICAgICh3Z3B1Q29tbWFuZEVuY29kZXJDb3B5VGV4dHVyZVRv
VGV4dHVyZSk6CisgICAgICAgICh3Z3B1Q29tbWFuZEVuY29kZXJGaW5pc2gpOgorICAgICAgICAq
IFdlYkdQVS9Db21wdXRlUGlwZWxpbmUubW06CisgICAgICAgIChXZWJHUFU6OkRldmljZTo6Y3Jl
YXRlQ29tcHV0ZVBpcGVsaW5lKToKKyAgICAgICAgKFdlYkdQVTo6RGV2aWNlOjpjcmVhdGVDb21w
dXRlUGlwZWxpbmVBc3luYyk6CisgICAgICAgICogV2ViR1BVL0RldmljZS5oOgorICAgICAgICAq
IFdlYkdQVS9EZXZpY2UubW06CisgICAgICAgIChXZWJHUFU6OkRldmljZTo6Z2V0TGltaXRzKToK
KyAgICAgICAgKHdncHVEZXZpY2VDcmVhdGVCaW5kR3JvdXApOgorICAgICAgICAod2dwdURldmlj
ZUNyZWF0ZUJpbmRHcm91cExheW91dCk6CisgICAgICAgICh3Z3B1RGV2aWNlQ3JlYXRlQnVmZmVy
KToKKyAgICAgICAgKHdncHVEZXZpY2VDcmVhdGVDb21tYW5kRW5jb2Rlcik6CisgICAgICAgICh3
Z3B1RGV2aWNlQ3JlYXRlQ29tcHV0ZVBpcGVsaW5lKToKKyAgICAgICAgKHdncHVEZXZpY2VDcmVh
dGVDb21wdXRlUGlwZWxpbmVBc3luYyk6CisgICAgICAgICh3Z3B1RGV2aWNlQ3JlYXRlQ29tcHV0
ZVBpcGVsaW5lQXN5bmNXaXRoQmxvY2spOgorICAgICAgICAod2dwdURldmljZUNyZWF0ZVBpcGVs
aW5lTGF5b3V0KToKKyAgICAgICAgKHdncHVEZXZpY2VDcmVhdGVRdWVyeVNldCk6CisgICAgICAg
ICh3Z3B1RGV2aWNlQ3JlYXRlUmVuZGVyQnVuZGxlRW5jb2Rlcik6CisgICAgICAgICh3Z3B1RGV2
aWNlQ3JlYXRlUmVuZGVyUGlwZWxpbmUpOgorICAgICAgICAod2dwdURldmljZUNyZWF0ZVJlbmRl
clBpcGVsaW5lQXN5bmMpOgorICAgICAgICAod2dwdURldmljZUNyZWF0ZVJlbmRlclBpcGVsaW5l
QXN5bmNXaXRoQmxvY2spOgorICAgICAgICAod2dwdURldmljZUNyZWF0ZVNhbXBsZXIpOgorICAg
ICAgICAod2dwdURldmljZUNyZWF0ZVNoYWRlck1vZHVsZSk6CisgICAgICAgICh3Z3B1RGV2aWNl
Q3JlYXRlU3dhcENoYWluKToKKyAgICAgICAgKHdncHVEZXZpY2VDcmVhdGVUZXh0dXJlKToKKyAg
ICAgICAgKHdncHVEZXZpY2VHZXRMaW1pdHMpOgorICAgICAgICAqIFdlYkdQVS9JbnN0YW5jZS5o
OgorICAgICAgICAqIFdlYkdQVS9JbnN0YW5jZS5tbToKKyAgICAgICAgKFdlYkdQVTo6SW5zdGFu
Y2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJHUFU6Okluc3RhbmNlOjpjcmVhdGVTdXJmYWNlKToK
KyAgICAgICAgKFdlYkdQVTo6SW5zdGFuY2U6OnJlcXVlc3RBZGFwdGVyKToKKyAgICAgICAgKHdn
cHVDcmVhdGVJbnN0YW5jZSk6CisgICAgICAgICh3Z3B1SW5zdGFuY2VDcmVhdGVTdXJmYWNlKToK
KyAgICAgICAgKHdncHVJbnN0YW5jZVJlcXVlc3RBZGFwdGVyKToKKyAgICAgICAgKHdncHVJbnN0
YW5jZVJlcXVlc3RBZGFwdGVyV2l0aEJsb2NrKToKKyAgICAgICAgKiBXZWJHUFUvUGlwZWxpbmVM
YXlvdXQubW06CisgICAgICAgIChXZWJHUFU6OkRldmljZTo6Y3JlYXRlUGlwZWxpbmVMYXlvdXQp
OgorICAgICAgICAqIFdlYkdQVS9RdWVyeVNldC5tbToKKyAgICAgICAgKFdlYkdQVTo6RGV2aWNl
OjpjcmVhdGVRdWVyeVNldCk6CisgICAgICAgICogV2ViR1BVL1F1ZXVlLmg6CisgICAgICAgICog
V2ViR1BVL1F1ZXVlLm1tOgorICAgICAgICAoV2ViR1BVOjpRdWV1ZTo6d3JpdGVUZXh0dXJlKToK
KyAgICAgICAgKHdncHVRdWV1ZVdyaXRlVGV4dHVyZSk6CisgICAgICAgICogV2ViR1BVL1JlbmRl
ckJ1bmRsZUVuY29kZXIuaDoKKyAgICAgICAgKiBXZWJHUFUvUmVuZGVyQnVuZGxlRW5jb2Rlci5t
bToKKyAgICAgICAgKFdlYkdQVTo6RGV2aWNlOjpjcmVhdGVSZW5kZXJCdW5kbGVFbmNvZGVyKToK
KyAgICAgICAgKFdlYkdQVTo6UmVuZGVyQnVuZGxlRW5jb2Rlcjo6ZmluaXNoKToKKyAgICAgICAg
KHdncHVSZW5kZXJCdW5kbGVFbmNvZGVyRmluaXNoKToKKyAgICAgICAgKiBXZWJHUFUvUmVuZGVy
UGFzc0VuY29kZXIuaDoKKyAgICAgICAgKiBXZWJHUFUvUmVuZGVyUGFzc0VuY29kZXIubW06Cisg
ICAgICAgIChXZWJHUFU6OlJlbmRlclBhc3NFbmNvZGVyOjpzZXRCbGVuZENvbnN0YW50KToKKyAg
ICAgICAgKHdncHVSZW5kZXJQYXNzRW5jb2RlclNldEJsZW5kQ29uc3RhbnQpOgorICAgICAgICAq
IFdlYkdQVS9SZW5kZXJQaXBlbGluZS5tbToKKyAgICAgICAgKFdlYkdQVTo6RGV2aWNlOjpjcmVh
dGVSZW5kZXJQaXBlbGluZSk6CisgICAgICAgIChXZWJHUFU6OkRldmljZTo6Y3JlYXRlUmVuZGVy
UGlwZWxpbmVBc3luYyk6CisgICAgICAgICogV2ViR1BVL1NhbXBsZXIubW06CisgICAgICAgIChX
ZWJHUFU6OkRldmljZTo6Y3JlYXRlU2FtcGxlcik6CisgICAgICAgICogV2ViR1BVL1NoYWRlck1v
ZHVsZS5oOgorICAgICAgICAqIFdlYkdQVS9TaGFkZXJNb2R1bGUubW06CisgICAgICAgIChXZWJH
UFU6OmZpbmRTaGFkZXJNb2R1bGVQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkdQVTo6RGV2aWNl
OjpjcmVhdGVTaGFkZXJNb2R1bGUpOgorICAgICAgICAoV2ViR1BVOjpTaGFkZXJNb2R1bGU6Omdl
dENvbXBpbGF0aW9uSW5mbyk6CisgICAgICAgICh3Z3B1U2hhZGVyTW9kdWxlR2V0Q29tcGlsYXRp
b25JbmZvKToKKyAgICAgICAgKHdncHVTaGFkZXJNb2R1bGVHZXRDb21waWxhdGlvbkluZm9XaXRo
QmxvY2spOgorICAgICAgICAqIFdlYkdQVS9Td2FwQ2hhaW4ubW06CisgICAgICAgIChXZWJHUFU6
OkRldmljZTo6Y3JlYXRlU3dhcENoYWluKToKKyAgICAgICAgKiBXZWJHUFUvVGV4dHVyZS5oOgor
ICAgICAgICAqIFdlYkdQVS9UZXh0dXJlLm1tOgorICAgICAgICAoV2ViR1BVOjpEZXZpY2U6OmNy
ZWF0ZVRleHR1cmUpOgorICAgICAgICAoV2ViR1BVOjpUZXh0dXJlOjpjcmVhdGVWaWV3KToKKyAg
ICAgICAgKHdncHVUZXh0dXJlQ3JlYXRlVmlldyk6CisKIDIwMjItMDMtMDMgIE1pY2hhZWwgU2Fi
b2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgQ29weSBXZWJLaXQgZnJhbWV3b3Jr
cyBhbmQgWFBDIHByb2Nlc3NlcyB0byBTZWNvbmRhcnkgUGF0aApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkdQVS9XZWJHUFUvQWRhcHRlci5oIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQWRhcHRlci5o
CmluZGV4IDFhOTUxYWQxMDcyZmQ5NzY4ZWMxZDE5Y2EzNjRhZTZjNDM3NGFlMDguLmU3YzVhYTZl
ZTEwNWY1MzUyN2NjZTZjZjc1ZjYyNDJiZTY4ZjUxYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL0FkYXB0ZXIuaAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9BZGFwdGVyLmgK
QEAgLTQ2LDEwICs0NiwxMCBAQCBwdWJsaWM6CiAgICAgfkFkYXB0ZXIoKTsKIAogICAgIHNpemVf
dCBlbnVtZXJhdGVGZWF0dXJlcyhXR1BVRmVhdHVyZU5hbWUqIGZlYXR1cmVzKTsKLSAgICBib29s
IGdldExpbWl0cyhXR1BVU3VwcG9ydGVkTGltaXRzKik7Ci0gICAgdm9pZCBnZXRQcm9wZXJ0aWVz
KFdHUFVBZGFwdGVyUHJvcGVydGllcyopOworICAgIGJvb2wgZ2V0TGltaXRzKFdHUFVTdXBwb3J0
ZWRMaW1pdHMmKTsKKyAgICB2b2lkIGdldFByb3BlcnRpZXMoV0dQVUFkYXB0ZXJQcm9wZXJ0aWVz
Jik7CiAgICAgYm9vbCBoYXNGZWF0dXJlKFdHUFVGZWF0dXJlTmFtZSk7Ci0gICAgdm9pZCByZXF1
ZXN0RGV2aWNlKGNvbnN0IFdHUFVEZXZpY2VEZXNjcmlwdG9yKiwgV1RGOjpGdW5jdGlvbjx2b2lk
KFdHUFVSZXF1ZXN0RGV2aWNlU3RhdHVzLCBSZWZQdHI8RGV2aWNlPiYmLCBjb25zdCBjaGFyKik+
JiYgY2FsbGJhY2spOworICAgIHZvaWQgcmVxdWVzdERldmljZShjb25zdCBXR1BVRGV2aWNlRGVz
Y3JpcHRvciYsIFdURjo6RnVuY3Rpb248dm9pZChXR1BVUmVxdWVzdERldmljZVN0YXR1cywgUmVm
UHRyPERldmljZT4mJiwgY29uc3QgY2hhciopPiYmIGNhbGxiYWNrKTsKIAogcHJpdmF0ZToKICAg
ICBBZGFwdGVyKGlkPE1UTERldmljZT4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJH
UFUvQWRhcHRlci5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0FkYXB0ZXIubW0KaW5kZXggODAz
MTA3MmVkMWMzNjNkZmRmYjY3YjA2MzZkZmQzOWZlOTM4NmQ5OS4uZmNhM2IwZGY2MWY4OTJkZTlm
NjlmYjM4OWRmYzBkN2Q0M2ViYmI0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUv
QWRhcHRlci5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9BZGFwdGVyLm1tCkBAIC00NCwy
NSArNDQsMjUgQEAgc2l6ZV90IEFkYXB0ZXI6OmVudW1lcmF0ZUZlYXR1cmVzKFdHUFVGZWF0dXJl
TmFtZSopCiAgICAgcmV0dXJuIDA7CiB9CiAKLWJvb2wgQWRhcHRlcjo6Z2V0TGltaXRzKFdHUFVT
dXBwb3J0ZWRMaW1pdHMqIGxpbWl0cykKK2Jvb2wgQWRhcHRlcjo6Z2V0TGltaXRzKFdHUFVTdXBw
b3J0ZWRMaW1pdHMmIGxpbWl0cykKIHsKLSAgICBpZiAobGltaXRzLT5uZXh0SW5DaGFpbiAhPSBu
dWxscHRyKQorICAgIGlmIChsaW1pdHMubmV4dEluQ2hhaW4gIT0gbnVsbHB0cikKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgotICAgIGxpbWl0
cy0+bGltaXRzID0geyB9OworICAgIGxpbWl0cy5saW1pdHMgPSB7IH07CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLXZvaWQgQWRhcHRlcjo6Z2V0UHJvcGVydGllcyhXR1BVQWRhcHRlclByb3BlcnRp
ZXMqIHByb3BlcnRpZXMpCit2b2lkIEFkYXB0ZXI6OmdldFByb3BlcnRpZXMoV0dQVUFkYXB0ZXJQ
cm9wZXJ0aWVzJiBwcm9wZXJ0aWVzKQogewogICAgIC8vIEZJWE1FOiBXaGF0IHNob3VsZCB0aGUg
dmVuZG9ySUQgYW5kIGRldmljZUlEIGJlPwotICAgIHByb3BlcnRpZXMtPnZlbmRvcklEID0gMDsK
LSAgICBwcm9wZXJ0aWVzLT5kZXZpY2VJRCA9IDA7Ci0gICAgcHJvcGVydGllcy0+bmFtZSA9IG1f
ZGV2aWNlLm5hbWUuVVRGOFN0cmluZzsKLSAgICBwcm9wZXJ0aWVzLT5kcml2ZXJEZXNjcmlwdGlv
biA9ICIiOwotICAgIHByb3BlcnRpZXMtPmFkYXB0ZXJUeXBlID0gbV9kZXZpY2UuaGFzVW5pZmll
ZE1lbW9yeSA/IFdHUFVBZGFwdGVyVHlwZV9JbnRlZ3JhdGVkR1BVIDogV0dQVUFkYXB0ZXJUeXBl
X0Rpc2NyZXRlR1BVOwotICAgIHByb3BlcnRpZXMtPmJhY2tlbmRUeXBlID0gV0dQVUJhY2tlbmRU
eXBlX01ldGFsOworICAgIHByb3BlcnRpZXMudmVuZG9ySUQgPSAwOworICAgIHByb3BlcnRpZXMu
ZGV2aWNlSUQgPSAwOworICAgIHByb3BlcnRpZXMubmFtZSA9IG1fZGV2aWNlLm5hbWUuVVRGOFN0
cmluZzsKKyAgICBwcm9wZXJ0aWVzLmRyaXZlckRlc2NyaXB0aW9uID0gIiI7CisgICAgcHJvcGVy
dGllcy5hZGFwdGVyVHlwZSA9IG1fZGV2aWNlLmhhc1VuaWZpZWRNZW1vcnkgPyBXR1BVQWRhcHRl
clR5cGVfSW50ZWdyYXRlZEdQVSA6IFdHUFVBZGFwdGVyVHlwZV9EaXNjcmV0ZUdQVTsKKyAgICBw
cm9wZXJ0aWVzLmJhY2tlbmRUeXBlID0gV0dQVUJhY2tlbmRUeXBlX01ldGFsOwogfQogCiBib29s
IEFkYXB0ZXI6Omhhc0ZlYXR1cmUoV0dQVUZlYXR1cmVOYW1lKQpAQCAtMTAzLDE5ICsxMDMsMTkg
QEAgc3RhdGljIGJvb2wgZGV2aWNlTWVldHNSZXF1aXJlZExpbWl0cyhpZDxNVExEZXZpY2U+LCBj
b25zdCBXR1BVUmVxdWlyZWRMaW1pdHMmIHIKICAgICAgICAgJiYgIXJlcXVpcmVkTGltaXRzLmxp
bWl0cy5tYXhDb21wdXRlV29ya2dyb3Vwc1BlckRpbWVuc2lvbjsKIH0KIAotdm9pZCBBZGFwdGVy
OjpyZXF1ZXN0RGV2aWNlKGNvbnN0IFdHUFVEZXZpY2VEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBX
VEY6OkZ1bmN0aW9uPHZvaWQoV0dQVVJlcXVlc3REZXZpY2VTdGF0dXMsIFJlZlB0cjxEZXZpY2U+
JiYsIGNvbnN0IGNoYXIqKT4mJiBjYWxsYmFjaykKK3ZvaWQgQWRhcHRlcjo6cmVxdWVzdERldmlj
ZShjb25zdCBXR1BVRGV2aWNlRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgV1RGOjpGdW5jdGlvbjx2
b2lkKFdHUFVSZXF1ZXN0RGV2aWNlU3RhdHVzLCBSZWZQdHI8RGV2aWNlPiYmLCBjb25zdCBjaGFy
Kik+JiYgY2FsbGJhY2spCiB7Ci0gICAgaWYgKGRlc2NyaXB0b3ItPm5leHRJbkNoYWluKSB7Cisg
ICAgaWYgKGRlc2NyaXB0b3IubmV4dEluQ2hhaW4pIHsKICAgICAgICAgY2FsbGJhY2soV0dQVVJl
cXVlc3REZXZpY2VTdGF0dXNfRXJyb3IsIG51bGxwdHIsICJVbmtub3duIGRlc2NyaXB0b3IgdHlw
ZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGRlc2NyaXB0b3ItPnJlcXVp
cmVkRmVhdHVyZXNDb3VudCkgeworICAgIGlmIChkZXNjcmlwdG9yLnJlcXVpcmVkRmVhdHVyZXND
b3VudCkgewogICAgICAgICBjYWxsYmFjayhXR1BVUmVxdWVzdERldmljZVN0YXR1c19FcnJvciwg
bnVsbHB0ciwgIkRldmljZSBkb2VzIG5vdCBzdXBwb3J0IHJlcXVlc3RlZCBmZWF0dXJlcyIpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGRlc2NyaXB0b3ItPnJlcXVpcmVkTGlt
aXRzICYmICFkZXZpY2VNZWV0c1JlcXVpcmVkTGltaXRzKG1fZGV2aWNlLCAqZGVzY3JpcHRvci0+
cmVxdWlyZWRMaW1pdHMpKSB7CisgICAgaWYgKGRlc2NyaXB0b3IucmVxdWlyZWRMaW1pdHMgJiYg
IWRldmljZU1lZXRzUmVxdWlyZWRMaW1pdHMobV9kZXZpY2UsICpkZXNjcmlwdG9yLnJlcXVpcmVk
TGltaXRzKSkgewogICAgICAgICBjYWxsYmFjayhXR1BVUmVxdWVzdERldmljZVN0YXR1c19FcnJv
ciwgbnVsbHB0ciwgIkRldmljZSBkb2VzIG5vdCBzdXBwb3J0IHJlcXVlc3RlZCBsaW1pdHMiKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEzOSwxMiArMTM5LDEyIEBAIHNpemVfdCB3Z3B1
QWRhcHRlckVudW1lcmF0ZUZlYXR1cmVzKFdHUFVBZGFwdGVyIGFkYXB0ZXIsIFdHUFVGZWF0dXJl
TmFtZSogZmVhdHVyCiAKIGJvb2wgd2dwdUFkYXB0ZXJHZXRMaW1pdHMoV0dQVUFkYXB0ZXIgYWRh
cHRlciwgV0dQVVN1cHBvcnRlZExpbWl0cyogbGltaXRzKQogewotICAgIHJldHVybiBhZGFwdGVy
LT5hZGFwdGVyLT5nZXRMaW1pdHMobGltaXRzKTsKKyAgICByZXR1cm4gYWRhcHRlci0+YWRhcHRl
ci0+Z2V0TGltaXRzKCpsaW1pdHMpOwogfQogCiB2b2lkIHdncHVBZGFwdGVyR2V0UHJvcGVydGll
cyhXR1BVQWRhcHRlciBhZGFwdGVyLCBXR1BVQWRhcHRlclByb3BlcnRpZXMqIHByb3BlcnRpZXMp
CiB7Ci0gICAgYWRhcHRlci0+YWRhcHRlci0+Z2V0UHJvcGVydGllcyhwcm9wZXJ0aWVzKTsKKyAg
ICBhZGFwdGVyLT5hZGFwdGVyLT5nZXRQcm9wZXJ0aWVzKCpwcm9wZXJ0aWVzKTsKIH0KIAogYm9v
bCB3Z3B1QWRhcHRlckhhc0ZlYXR1cmUoV0dQVUFkYXB0ZXIgYWRhcHRlciwgV0dQVUZlYXR1cmVO
YW1lIGZlYXR1cmUpCkBAIC0xNTQsMTQgKzE1NCwxNCBAQCBib29sIHdncHVBZGFwdGVySGFzRmVh
dHVyZShXR1BVQWRhcHRlciBhZGFwdGVyLCBXR1BVRmVhdHVyZU5hbWUgZmVhdHVyZSkKIAogdm9p
ZCB3Z3B1QWRhcHRlclJlcXVlc3REZXZpY2UoV0dQVUFkYXB0ZXIgYWRhcHRlciwgY29uc3QgV0dQ
VURldmljZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIFdHUFVSZXF1ZXN0RGV2aWNlQ2FsbGJhY2sg
Y2FsbGJhY2ssIHZvaWQqIHVzZXJkYXRhKQogewotICAgIGFkYXB0ZXItPmFkYXB0ZXItPnJlcXVl
c3REZXZpY2UoZGVzY3JpcHRvciwgW2NhbGxiYWNrLCB1c2VyZGF0YV0gKFdHUFVSZXF1ZXN0RGV2
aWNlU3RhdHVzIHN0YXR1cywgUmVmUHRyPFdlYkdQVTo6RGV2aWNlPiYmIGRldmljZSwgY29uc3Qg
Y2hhciogbWVzc2FnZSkgeworICAgIGFkYXB0ZXItPmFkYXB0ZXItPnJlcXVlc3REZXZpY2UoKmRl
c2NyaXB0b3IsIFtjYWxsYmFjaywgdXNlcmRhdGFdIChXR1BVUmVxdWVzdERldmljZVN0YXR1cyBz
dGF0dXMsIFJlZlB0cjxXZWJHUFU6OkRldmljZT4mJiBkZXZpY2UsIGNvbnN0IGNoYXIqIG1lc3Nh
Z2UpIHsKICAgICAgICAgY2FsbGJhY2soc3RhdHVzLCBkZXZpY2UgPyBuZXcgV0dQVURldmljZUlt
cGwgeyBkZXZpY2UucmVsZWFzZU5vbk51bGwoKSB9IDogbnVsbHB0ciwgbWVzc2FnZSwgdXNlcmRh
dGEpOwogICAgIH0pOwogfQogCiB2b2lkIHdncHVBZGFwdGVyUmVxdWVzdERldmljZVdpdGhCbG9j
ayhXR1BVQWRhcHRlciBhZGFwdGVyLCBXR1BVRGV2aWNlRGVzY3JpcHRvciBjb25zdCAqIGRlc2Ny
aXB0b3IsIFdHUFVSZXF1ZXN0RGV2aWNlQmxvY2tDYWxsYmFjayBjYWxsYmFjaykKIHsKLSAgICBh
ZGFwdGVyLT5hZGFwdGVyLT5yZXF1ZXN0RGV2aWNlKGRlc2NyaXB0b3IsIFtjYWxsYmFja10gKFdH
UFVSZXF1ZXN0RGV2aWNlU3RhdHVzIHN0YXR1cywgUmVmUHRyPFdlYkdQVTo6RGV2aWNlPiYmIGRl
dmljZSwgY29uc3QgY2hhciogbWVzc2FnZSkgeworICAgIGFkYXB0ZXItPmFkYXB0ZXItPnJlcXVl
c3REZXZpY2UoKmRlc2NyaXB0b3IsIFtjYWxsYmFja10gKFdHUFVSZXF1ZXN0RGV2aWNlU3RhdHVz
IHN0YXR1cywgUmVmUHRyPFdlYkdQVTo6RGV2aWNlPiYmIGRldmljZSwgY29uc3QgY2hhciogbWVz
c2FnZSkgewogICAgICAgICBjYWxsYmFjayhzdGF0dXMsIGRldmljZSA/IG5ldyBXR1BVRGV2aWNl
SW1wbCB7IGRldmljZS5yZWxlYXNlTm9uTnVsbCgpIH0gOiBudWxscHRyLCBtZXNzYWdlKTsKICAg
ICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0JpbmRHcm91cC5tbSBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL0JpbmRHcm91cC5tbQppbmRleCA4OGNlN2Y2MGQyYzEyZGY4
OTQ2NzRhZGM5ZmUxZjIwMDVjMzRkMWYwLi43OGJhYzdjMzBkNGIxYjUzMjMxMjFmMzJjNGU5OGRk
MzM4YjYxZmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CaW5kR3JvdXAubW0K
KysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQmluZEdyb3VwLm1tCkBAIC00OSwxMiArNDksMTIg
QEAgc3RhdGljIGJvb2wgdGV4dHVyZVZpZXdJc1ByZXNlbnQoY29uc3QgV0dQVUJpbmRHcm91cEVu
dHJ5JiBlbnRyeSkKICAgICByZXR1cm4gZW50cnkudGV4dHVyZVZpZXc7CiB9CiAKLVJlZlB0cjxC
aW5kR3JvdXA+IERldmljZTo6Y3JlYXRlQmluZEdyb3VwKGNvbnN0IFdHUFVCaW5kR3JvdXBEZXNj
cmlwdG9yKiBkZXNjcmlwdG9yKQorUmVmUHRyPEJpbmRHcm91cD4gRGV2aWNlOjpjcmVhdGVCaW5k
R3JvdXAoY29uc3QgV0dQVUJpbmRHcm91cERlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7Ci0gICAg
aWYgKGRlc2NyaXB0b3ItPm5leHRJbkNoYWluKQorICAgIGlmIChkZXNjcmlwdG9yLm5leHRJbkNo
YWluKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGNvbnN0IEJpbmRHcm91cExheW91
dCYgYmluZEdyb3VwTGF5b3V0ID0gZGVzY3JpcHRvci0+bGF5b3V0LT5iaW5kR3JvdXBMYXlvdXQ7
CisgICAgY29uc3QgQmluZEdyb3VwTGF5b3V0JiBiaW5kR3JvdXBMYXlvdXQgPSBkZXNjcmlwdG9y
LmxheW91dC0+YmluZEdyb3VwTGF5b3V0OwogCiAgICAgLy8gRklYTUU6IERvbid0IGFsbG9jYXRl
IDMgbmV3IGJ1ZmZlcnMgZm9yIGV2ZXJ5IGJpbmQgZ3JvdXAuCiAgICAgLy8gSW4gZmFjdCwgZG9u
J3QgZXZlbiBhbGxvY2F0ZSBhIHNpbmdsZSBuZXcgYnVmZmVyIGZvciBldmVyeSBiaW5kIGdyb3Vw
LgpAQCAtNjQsNyArNjQsNyBAQCBSZWZQdHI8QmluZEdyb3VwPiBEZXZpY2U6OmNyZWF0ZUJpbmRH
cm91cChjb25zdCBXR1BVQmluZEdyb3VwRGVzY3JpcHRvciogZGVzY3JpcAogICAgIGlmICghdmVy
dGV4QXJndW1lbnRCdWZmZXIgfHwgIWZyYWdtZW50QXJndW1lbnRCdWZmZXIgfHwgIWNvbXB1dGVB
cmd1bWVudEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIGxhYmVs
ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDU3RyaW5nOmRlc2NyaXB0b3ItPmxhYmVsIGVuY29kaW5n
Ok5TVVRGOFN0cmluZ0VuY29kaW5nXTsKKyAgICBhdXRvIGxhYmVsID0gW05TU3RyaW5nIHN0cmlu
Z1dpdGhDU3RyaW5nOmRlc2NyaXB0b3IubGFiZWwgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2Rp
bmddOwogICAgIHZlcnRleEFyZ3VtZW50QnVmZmVyLmxhYmVsID0gbGFiZWw7CiAgICAgZnJhZ21l
bnRBcmd1bWVudEJ1ZmZlci5sYWJlbCA9IGxhYmVsOwogICAgIGNvbXB1dGVBcmd1bWVudEJ1ZmZl
ci5sYWJlbCA9IGxhYmVsOwpAQCAtNzYsOCArNzYsOCBAQCBSZWZQdHI8QmluZEdyb3VwPiBEZXZp
Y2U6OmNyZWF0ZUJpbmRHcm91cChjb25zdCBXR1BVQmluZEdyb3VwRGVzY3JpcHRvciogZGVzY3Jp
cAogICAgIFtmcmFnbWVudEFyZ3VtZW50RW5jb2RlciBzZXRBcmd1bWVudEJ1ZmZlcjpmcmFnbWVu
dEFyZ3VtZW50QnVmZmVyIG9mZnNldDowXTsKICAgICBbY29tcHV0ZUFyZ3VtZW50RW5jb2RlciBz
ZXRBcmd1bWVudEJ1ZmZlcjpjb21wdXRlQXJndW1lbnRCdWZmZXIgb2Zmc2V0OjBdOwogCi0gICAg
Zm9yICh1aW50MzJfdCBpID0gMDsgaSA8IGRlc2NyaXB0b3ItPmVudHJ5Q291bnQ7ICsraSkgewot
ICAgICAgICBjb25zdCBXR1BVQmluZEdyb3VwRW50cnkmIGVudHJ5ID0gZGVzY3JpcHRvci0+ZW50
cmllc1tpXTsKKyAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgZGVzY3JpcHRvci5lbnRyeUNv
dW50OyArK2kpIHsKKyAgICAgICAgY29uc3QgV0dQVUJpbmRHcm91cEVudHJ5JiBlbnRyeSA9IGRl
c2NyaXB0b3IuZW50cmllc1tpXTsKIAogICAgICAgICBpZiAoZW50cnkubmV4dEluQ2hhaW4pCiAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL0JpbmRHcm91cExheW91dC5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0JpbmRHcm91cExh
eW91dC5tbQppbmRleCAyODg3Njk1ZmFjOTcxZTAzN2NiMzE0MmNjNzY5NDM2MGM3MzY3OTMxLi44
NjA4ZTkxZDgzOTk4ZWJlMWQxYjJmNDZlMWY3NmY2OGFiODNmNmUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9CaW5kR3JvdXBMYXlvdXQubW0KKysrIGIvU291cmNlL1dlYkdQVS9X
ZWJHUFUvQmluZEdyb3VwTGF5b3V0Lm1tCkBAIC0xMTIsMTkgKzExMiwxOSBAQCBzdGF0aWMgTVRM
QXJndW1lbnREZXNjcmlwdG9yICpjcmVhdGVBcmd1bWVudERlc2NyaXB0b3IoY29uc3QgV0dQVVN0
b3JhZ2VUZXh0dXJlQgogICAgIHJldHVybiBkZXNjcmlwdG9yOwogfQogCi1SZWZQdHI8QmluZEdy
b3VwTGF5b3V0PiBEZXZpY2U6OmNyZWF0ZUJpbmRHcm91cExheW91dChjb25zdCBXR1BVQmluZEdy
b3VwTGF5b3V0RGVzY3JpcHRvciogZGVzY3JpcHRvcikKK1JlZlB0cjxCaW5kR3JvdXBMYXlvdXQ+
IERldmljZTo6Y3JlYXRlQmluZEdyb3VwTGF5b3V0KGNvbnN0IFdHUFVCaW5kR3JvdXBMYXlvdXRE
ZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewotICAgIGlmIChkZXNjcmlwdG9yLT5uZXh0SW5DaGFp
bikKKyAgICBpZiAoZGVzY3JpcHRvci5uZXh0SW5DaGFpbikKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKLSAgICBOU011dGFibGVBcnJheTxNVExBcmd1bWVudERlc2NyaXB0b3IgKj4gKnZlcnRl
eEFyZ3VtZW50cyA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTpkZXNjcmlwdG9y
LT5lbnRyeUNvdW50XTsKLSAgICBOU011dGFibGVBcnJheTxNVExBcmd1bWVudERlc2NyaXB0b3Ig
Kj4gKmZyYWdtZW50QXJndW1lbnRzID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5
OmRlc2NyaXB0b3ItPmVudHJ5Q291bnRdOwotICAgIE5TTXV0YWJsZUFycmF5PE1UTEFyZ3VtZW50
RGVzY3JpcHRvciAqPiAqY29tcHV0ZUFyZ3VtZW50cyA9IFtOU011dGFibGVBcnJheSBhcnJheVdp
dGhDYXBhY2l0eTpkZXNjcmlwdG9yLT5lbnRyeUNvdW50XTsKKyAgICBOU011dGFibGVBcnJheTxN
VExBcmd1bWVudERlc2NyaXB0b3IgKj4gKnZlcnRleEFyZ3VtZW50cyA9IFtOU011dGFibGVBcnJh
eSBhcnJheVdpdGhDYXBhY2l0eTpkZXNjcmlwdG9yLmVudHJ5Q291bnRdOworICAgIE5TTXV0YWJs
ZUFycmF5PE1UTEFyZ3VtZW50RGVzY3JpcHRvciAqPiAqZnJhZ21lbnRBcmd1bWVudHMgPSBbTlNN
dXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6ZGVzY3JpcHRvci5lbnRyeUNvdW50XTsKKyAg
ICBOU011dGFibGVBcnJheTxNVExBcmd1bWVudERlc2NyaXB0b3IgKj4gKmNvbXB1dGVBcmd1bWVu
dHMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6ZGVzY3JpcHRvci5lbnRyeUNv
dW50XTsKICAgICBpZiAoIXZlcnRleEFyZ3VtZW50cyB8fCAhZnJhZ21lbnRBcmd1bWVudHMgfHwg
IWNvbXB1dGVBcmd1bWVudHMpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgZm9yICh1
aW50MzJfdCBpID0gMDsgaSA8IGRlc2NyaXB0b3ItPmVudHJ5Q291bnQ7ICsraSkgewotICAgICAg
ICBjb25zdCBXR1BVQmluZEdyb3VwTGF5b3V0RW50cnkmIGVudHJ5ID0gZGVzY3JpcHRvci0+ZW50
cmllc1tpXTsKKyAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgZGVzY3JpcHRvci5lbnRyeUNv
dW50OyArK2kpIHsKKyAgICAgICAgY29uc3QgV0dQVUJpbmRHcm91cExheW91dEVudHJ5JiBlbnRy
eSA9IGRlc2NyaXB0b3IuZW50cmllc1tpXTsKICAgICAgICAgaWYgKGVudHJ5Lm5leHRJbkNoYWlu
KQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTIwNSw3ICsyMDUsNyBAQCBSZWZQ
dHI8QmluZEdyb3VwTGF5b3V0PiBEZXZpY2U6OmNyZWF0ZUJpbmRHcm91cExheW91dChjb25zdCBX
R1BVQmluZEdyb3VwTGF5b3V0RAogICAgIGlmICghdmVydGV4QXJndW1lbnRFbmNvZGVyIHx8ICFm
cmFnbWVudEFyZ3VtZW50RW5jb2RlciB8fCAhY29tcHV0ZUFyZ3VtZW50RW5jb2RlcikKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIGxhYmVsID0gW05TU3RyaW5nIHN0cmluZ1dp
dGhDU3RyaW5nOmRlc2NyaXB0b3ItPmxhYmVsIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5n
XTsKKyAgICBhdXRvIGxhYmVsID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDU3RyaW5nOmRlc2NyaXB0
b3IubGFiZWwgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOwogICAgIHZlcnRleEFyZ3Vt
ZW50RW5jb2Rlci5sYWJlbCA9IGxhYmVsOwogICAgIGZyYWdtZW50QXJndW1lbnRFbmNvZGVyLmxh
YmVsID0gbGFiZWw7CiAgICAgY29tcHV0ZUFyZ3VtZW50RW5jb2Rlci5sYWJlbCA9IGxhYmVsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQnVmZmVyLm1tIGIvU291cmNlL1dlYkdQ
VS9XZWJHUFUvQnVmZmVyLm1tCmluZGV4IDg2MjM1YjU3YmZjZjMzNzhjMTdmY2UyYzhlOTg3Zjhj
Y2Q1NGVmOTguLjYxYWRhNzlhYWQ4MmU5M2RiYWM0YzdhMTc5Nzk0NzM0YmFkMWRiMDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0J1ZmZlci5tbQorKysgYi9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9CdWZmZXIubW0KQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkdQVSB7
CiAKLVJlZlB0cjxCdWZmZXI+IERldmljZTo6Y3JlYXRlQnVmZmVyKGNvbnN0IFdHUFVCdWZmZXJE
ZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQorUmVmUHRyPEJ1ZmZlcj4gRGV2aWNlOjpjcmVhdGVCdWZm
ZXIoY29uc3QgV0dQVUJ1ZmZlckRlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgVU5VU0VE
X1BBUkFNKGRlc2NyaXB0b3IpOwogICAgIHJldHVybiBCdWZmZXI6OmNyZWF0ZShuaWwpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIuaCBiL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVyLmgKaW5kZXggZDI2MWVlYjQwYzA4YTE2ZTQxYjAz
ZWQ1MWQ2OGZiMWI4NzVkMDFkMS4uZGM5NzAxNTY3YzZkN2I2YTdkYTQ0ZDIzMmQ0MzM3YzAzZTUz
M2IyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIuaAor
KysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rlci5oCkBAIC00OCwxNCArNDgs
MTQgQEAgcHVibGljOgogCiAgICAgfkNvbW1hbmRFbmNvZGVyKCk7CiAKLSAgICBSZWZQdHI8Q29t
cHV0ZVBhc3NFbmNvZGVyPiBiZWdpbkNvbXB1dGVQYXNzKGNvbnN0IFdHUFVDb21wdXRlUGFzc0Rl
c2NyaXB0b3IqKTsKLSAgICBSZWZQdHI8UmVuZGVyUGFzc0VuY29kZXI+IGJlZ2luUmVuZGVyUGFz
cyhjb25zdCBXR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IqKTsKKyAgICBSZWZQdHI8Q29tcHV0ZVBh
c3NFbmNvZGVyPiBiZWdpbkNvbXB1dGVQYXNzKGNvbnN0IFdHUFVDb21wdXRlUGFzc0Rlc2NyaXB0
b3ImKTsKKyAgICBSZWZQdHI8UmVuZGVyUGFzc0VuY29kZXI+IGJlZ2luUmVuZGVyUGFzcyhjb25z
dCBXR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3ImKTsKICAgICB2b2lkIGNvcHlCdWZmZXJUb0J1ZmZl
cihjb25zdCBCdWZmZXImIHNvdXJjZSwgdWludDY0X3Qgc291cmNlT2Zmc2V0LCBjb25zdCBCdWZm
ZXImIGRlc3RpbmF0aW9uLCB1aW50NjRfdCBkZXN0aW5hdGlvbk9mZnNldCwgdWludDY0X3Qgc2l6
ZSk7Ci0gICAgdm9pZCBjb3B5QnVmZmVyVG9UZXh0dXJlKGNvbnN0IFdHUFVJbWFnZUNvcHlCdWZm
ZXIqIHNvdXJjZSwgY29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUqIGRlc3RpbmF0aW9uLCBjb25z
dCBXR1BVRXh0ZW50M0QqIGNvcHlTaXplKTsKLSAgICB2b2lkIGNvcHlUZXh0dXJlVG9CdWZmZXIo
Y29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUqIHNvdXJjZSwgY29uc3QgV0dQVUltYWdlQ29weUJ1
ZmZlciogZGVzdGluYXRpb24sIGNvbnN0IFdHUFVFeHRlbnQzRCogY29weVNpemUpOwotICAgIHZv
aWQgY29weVRleHR1cmVUb1RleHR1cmUoY29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUqIHNvdXJj
ZSwgY29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUqIGRlc3RpbmF0aW9uLCBjb25zdCBXR1BVRXh0
ZW50M0QqIGNvcHlTaXplKTsKKyAgICB2b2lkIGNvcHlCdWZmZXJUb1RleHR1cmUoY29uc3QgV0dQ
VUltYWdlQ29weUJ1ZmZlciYgc291cmNlLCBjb25zdCBXR1BVSW1hZ2VDb3B5VGV4dHVyZSYgZGVz
dGluYXRpb24sIGNvbnN0IFdHUFVFeHRlbnQzRCYgY29weVNpemUpOworICAgIHZvaWQgY29weVRl
eHR1cmVUb0J1ZmZlcihjb25zdCBXR1BVSW1hZ2VDb3B5VGV4dHVyZSYgc291cmNlLCBjb25zdCBX
R1BVSW1hZ2VDb3B5QnVmZmVyJiBkZXN0aW5hdGlvbiwgY29uc3QgV0dQVUV4dGVudDNEJiBjb3B5
U2l6ZSk7CisgICAgdm9pZCBjb3B5VGV4dHVyZVRvVGV4dHVyZShjb25zdCBXR1BVSW1hZ2VDb3B5
VGV4dHVyZSYgc291cmNlLCBjb25zdCBXR1BVSW1hZ2VDb3B5VGV4dHVyZSYgZGVzdGluYXRpb24s
IGNvbnN0IFdHUFVFeHRlbnQzRCYgY29weVNpemUpOwogICAgIHZvaWQgY2xlYXJCdWZmZXIoY29u
c3QgQnVmZmVyJiwgdWludDY0X3Qgb2Zmc2V0LCB1aW50NjRfdCBzaXplKTsKLSAgICBSZWZQdHI8
Q29tbWFuZEJ1ZmZlcj4gZmluaXNoKGNvbnN0IFdHUFVDb21tYW5kQnVmZmVyRGVzY3JpcHRvciop
OworICAgIFJlZlB0cjxDb21tYW5kQnVmZmVyPiBmaW5pc2goY29uc3QgV0dQVUNvbW1hbmRCdWZm
ZXJEZXNjcmlwdG9yJik7CiAgICAgdm9pZCBpbnNlcnREZWJ1Z01hcmtlcihjb25zdCBjaGFyKiBt
YXJrZXJMYWJlbCk7CiAgICAgdm9pZCBwb3BEZWJ1Z0dyb3VwKCk7CiAgICAgdm9pZCBwdXNoRGVi
dWdHcm91cChjb25zdCBjaGFyKiBncm91cExhYmVsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVyLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFu
ZEVuY29kZXIubW0KaW5kZXggZjhiMDNjYTUyZThmMGY5ZGJmZDk1MWY0Yzg1NmY1NjQ5NDZmODkz
NC4uNjY0MDg1YzUwMTJlNDU5ZDJkNzZkYWRhMjNlOWZmZGZjODI3Nzk2MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0KKysrIGIvU291cmNlL1dlYkdQ
VS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0KQEAgLTM1LDcgKzM1LDcgQEAKIAogbmFtZXNwYWNl
IFdlYkdQVSB7CiAKLVJlZlB0cjxDb21tYW5kRW5jb2Rlcj4gRGV2aWNlOjpjcmVhdGVDb21tYW5k
RW5jb2Rlcihjb25zdCBXR1BVQ29tbWFuZEVuY29kZXJEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQor
UmVmUHRyPENvbW1hbmRFbmNvZGVyPiBEZXZpY2U6OmNyZWF0ZUNvbW1hbmRFbmNvZGVyKGNvbnN0
IFdHUFVDb21tYW5kRW5jb2RlckRlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgVU5VU0VE
X1BBUkFNKGRlc2NyaXB0b3IpOwogICAgIHJldHVybiBDb21tYW5kRW5jb2Rlcjo6Y3JlYXRlKG5p
bCk7CkBAIC00OCwxMyArNDgsMTMgQEAgQ29tbWFuZEVuY29kZXI6OkNvbW1hbmRFbmNvZGVyKGlk
PE1UTENvbW1hbmRCdWZmZXI+IGNvbW1hbmRCdWZmZXIpCiAKIENvbW1hbmRFbmNvZGVyOjp+Q29t
bWFuZEVuY29kZXIoKSA9IGRlZmF1bHQ7CiAKLVJlZlB0cjxDb21wdXRlUGFzc0VuY29kZXI+IENv
bW1hbmRFbmNvZGVyOjpiZWdpbkNvbXB1dGVQYXNzKGNvbnN0IFdHUFVDb21wdXRlUGFzc0Rlc2Ny
aXB0b3IqIGRlc2NyaXB0b3IpCitSZWZQdHI8Q29tcHV0ZVBhc3NFbmNvZGVyPiBDb21tYW5kRW5j
b2Rlcjo6YmVnaW5Db21wdXRlUGFzcyhjb25zdCBXR1BVQ29tcHV0ZVBhc3NEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yKQogewogICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKICAgICByZXR1cm4g
Q29tcHV0ZVBhc3NFbmNvZGVyOjpjcmVhdGUobmlsKTsKIH0KIAotUmVmUHRyPFJlbmRlclBhc3NF
bmNvZGVyPiBDb21tYW5kRW5jb2Rlcjo6YmVnaW5SZW5kZXJQYXNzKGNvbnN0IFdHUFVSZW5kZXJQ
YXNzRGVzY3JpcHRvciogZGVzY3JpcHRvcikKK1JlZlB0cjxSZW5kZXJQYXNzRW5jb2Rlcj4gQ29t
bWFuZEVuY29kZXI6OmJlZ2luUmVuZGVyUGFzcyhjb25zdCBXR1BVUmVuZGVyUGFzc0Rlc2NyaXB0
b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOwogICAgIHJl
dHVybiBSZW5kZXJQYXNzRW5jb2Rlcjo6Y3JlYXRlKG5pbCk7CkBAIC02OSwyMSArNjksMjEgQEAg
dm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weUJ1ZmZlclRvQnVmZmVyKGNvbnN0IEJ1ZmZlciYgc291
cmNlLCB1aW50NjRfdCBzb3VyY2VPZmYKICAgICBVTlVTRURfUEFSQU0oc2l6ZSk7CiB9CiAKLXZv
aWQgQ29tbWFuZEVuY29kZXI6OmNvcHlCdWZmZXJUb1RleHR1cmUoY29uc3QgV0dQVUltYWdlQ29w
eUJ1ZmZlciogc291cmNlLCBjb25zdCBXR1BVSW1hZ2VDb3B5VGV4dHVyZSogZGVzdGluYXRpb24s
IGNvbnN0IFdHUFVFeHRlbnQzRCogY29weVNpemUpCit2b2lkIENvbW1hbmRFbmNvZGVyOjpjb3B5
QnVmZmVyVG9UZXh0dXJlKGNvbnN0IFdHUFVJbWFnZUNvcHlCdWZmZXImIHNvdXJjZSwgY29uc3Qg
V0dQVUltYWdlQ29weVRleHR1cmUmIGRlc3RpbmF0aW9uLCBjb25zdCBXR1BVRXh0ZW50M0QmIGNv
cHlTaXplKQogewogICAgIFVOVVNFRF9QQVJBTShzb3VyY2UpOwogICAgIFVOVVNFRF9QQVJBTShk
ZXN0aW5hdGlvbik7CiAgICAgVU5VU0VEX1BBUkFNKGNvcHlTaXplKTsKIH0KIAotdm9pZCBDb21t
YW5kRW5jb2Rlcjo6Y29weVRleHR1cmVUb0J1ZmZlcihjb25zdCBXR1BVSW1hZ2VDb3B5VGV4dHVy
ZSogc291cmNlLCBjb25zdCBXR1BVSW1hZ2VDb3B5QnVmZmVyKiBkZXN0aW5hdGlvbiwgY29uc3Qg
V0dQVUV4dGVudDNEKiBjb3B5U2l6ZSkKK3ZvaWQgQ29tbWFuZEVuY29kZXI6OmNvcHlUZXh0dXJl
VG9CdWZmZXIoY29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUmIHNvdXJjZSwgY29uc3QgV0dQVUlt
YWdlQ29weUJ1ZmZlciYgZGVzdGluYXRpb24sIGNvbnN0IFdHUFVFeHRlbnQzRCYgY29weVNpemUp
CiB7CiAgICAgVU5VU0VEX1BBUkFNKHNvdXJjZSk7CiAgICAgVU5VU0VEX1BBUkFNKGRlc3RpbmF0
aW9uKTsKICAgICBVTlVTRURfUEFSQU0oY29weVNpemUpOwogfQogCi12b2lkIENvbW1hbmRFbmNv
ZGVyOjpjb3B5VGV4dHVyZVRvVGV4dHVyZShjb25zdCBXR1BVSW1hZ2VDb3B5VGV4dHVyZSogc291
cmNlLCBjb25zdCBXR1BVSW1hZ2VDb3B5VGV4dHVyZSogZGVzdGluYXRpb24sIGNvbnN0IFdHUFVF
eHRlbnQzRCogY29weVNpemUpCit2b2lkIENvbW1hbmRFbmNvZGVyOjpjb3B5VGV4dHVyZVRvVGV4
dHVyZShjb25zdCBXR1BVSW1hZ2VDb3B5VGV4dHVyZSYgc291cmNlLCBjb25zdCBXR1BVSW1hZ2VD
b3B5VGV4dHVyZSYgZGVzdGluYXRpb24sIGNvbnN0IFdHUFVFeHRlbnQzRCYgY29weVNpemUpCiB7
CiAgICAgVU5VU0VEX1BBUkFNKHNvdXJjZSk7CiAgICAgVU5VU0VEX1BBUkFNKGRlc3RpbmF0aW9u
KTsKQEAgLTk3LDcgKzk3LDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y2xlYXJCdWZmZXIoY29u
c3QgQnVmZmVyJiBidWZmZXIsIHVpbnQ2NF90IG9mZnNldCwgdWludDY0X3QKICAgICBVTlVTRURf
UEFSQU0oc2l6ZSk7CiB9CiAKLVJlZlB0cjxDb21tYW5kQnVmZmVyPiBDb21tYW5kRW5jb2Rlcjo6
ZmluaXNoKGNvbnN0IFdHUFVDb21tYW5kQnVmZmVyRGVzY3JpcHRvciogZGVzY3JpcHRvcikKK1Jl
ZlB0cjxDb21tYW5kQnVmZmVyPiBDb21tYW5kRW5jb2Rlcjo6ZmluaXNoKGNvbnN0IFdHUFVDb21t
YW5kQnVmZmVyRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICBVTlVTRURfUEFSQU0oZGVz
Y3JpcHRvcik7CiAgICAgcmV0dXJuIENvbW1hbmRCdWZmZXI6OmNyZWF0ZShuaWwpOwpAQCAtMTQ2
LDEzICsxNDYsMTMgQEAgdm9pZCB3Z3B1Q29tbWFuZEVuY29kZXJSZWxlYXNlKFdHUFVDb21tYW5k
RW5jb2RlciBjb21tYW5kRW5jb2RlcikKIAogV0dQVUNvbXB1dGVQYXNzRW5jb2RlciB3Z3B1Q29t
bWFuZEVuY29kZXJCZWdpbkNvbXB1dGVQYXNzKFdHUFVDb21tYW5kRW5jb2RlciBjb21tYW5kRW5j
b2RlciwgY29uc3QgV0dQVUNvbXB1dGVQYXNzRGVzY3JpcHRvciogZGVzY3JpcHRvcikKIHsKLSAg
ICBhdXRvIHJlc3VsdCA9IGNvbW1hbmRFbmNvZGVyLT5jb21tYW5kRW5jb2Rlci0+YmVnaW5Db21w
dXRlUGFzcyhkZXNjcmlwdG9yKTsKKyAgICBhdXRvIHJlc3VsdCA9IGNvbW1hbmRFbmNvZGVyLT5j
b21tYW5kRW5jb2Rlci0+YmVnaW5Db21wdXRlUGFzcygqZGVzY3JpcHRvcik7CiAgICAgcmV0dXJu
IHJlc3VsdCA/IG5ldyBXR1BVQ29tcHV0ZVBhc3NFbmNvZGVySW1wbCB7IHJlc3VsdC5yZWxlYXNl
Tm9uTnVsbCgpIH0gOiBudWxscHRyOwogfQogCiBXR1BVUmVuZGVyUGFzc0VuY29kZXIgd2dwdUNv
bW1hbmRFbmNvZGVyQmVnaW5SZW5kZXJQYXNzKFdHUFVDb21tYW5kRW5jb2RlciBjb21tYW5kRW5j
b2RlciwgY29uc3QgV0dQVVJlbmRlclBhc3NEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQogewotICAg
IGF1dG8gcmVzdWx0ID0gY29tbWFuZEVuY29kZXItPmNvbW1hbmRFbmNvZGVyLT5iZWdpblJlbmRl
clBhc3MoZGVzY3JpcHRvcik7CisgICAgYXV0byByZXN1bHQgPSBjb21tYW5kRW5jb2Rlci0+Y29t
bWFuZEVuY29kZXItPmJlZ2luUmVuZGVyUGFzcygqZGVzY3JpcHRvcik7CiAgICAgcmV0dXJuIHJl
c3VsdCA/IG5ldyBXR1BVUmVuZGVyUGFzc0VuY29kZXJJbXBsIHsgcmVzdWx0LnJlbGVhc2VOb25O
dWxsKCkgfSA6IG51bGxwdHI7CiB9CiAKQEAgLTE2MywxNyArMTYzLDE3IEBAIHZvaWQgd2dwdUNv
bW1hbmRFbmNvZGVyQ29weUJ1ZmZlclRvQnVmZmVyKFdHUFVDb21tYW5kRW5jb2RlciBjb21tYW5k
RW5jb2RlciwgV0dQCiAKIHZvaWQgd2dwdUNvbW1hbmRFbmNvZGVyQ29weUJ1ZmZlclRvVGV4dHVy
ZShXR1BVQ29tbWFuZEVuY29kZXIgY29tbWFuZEVuY29kZXIsIGNvbnN0IFdHUFVJbWFnZUNvcHlC
dWZmZXIqIHNvdXJjZSwgY29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUqIGRlc3RpbmF0aW9uLCBj
b25zdCBXR1BVRXh0ZW50M0QqIGNvcHlTaXplKQogewotICAgIGNvbW1hbmRFbmNvZGVyLT5jb21t
YW5kRW5jb2Rlci0+Y29weUJ1ZmZlclRvVGV4dHVyZShzb3VyY2UsIGRlc3RpbmF0aW9uLCBjb3B5
U2l6ZSk7CisgICAgY29tbWFuZEVuY29kZXItPmNvbW1hbmRFbmNvZGVyLT5jb3B5QnVmZmVyVG9U
ZXh0dXJlKCpzb3VyY2UsICpkZXN0aW5hdGlvbiwgKmNvcHlTaXplKTsKIH0KIAogdm9pZCB3Z3B1
Q29tbWFuZEVuY29kZXJDb3B5VGV4dHVyZVRvQnVmZmVyKFdHUFVDb21tYW5kRW5jb2RlciBjb21t
YW5kRW5jb2RlciwgY29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUqIHNvdXJjZSwgY29uc3QgV0dQ
VUltYWdlQ29weUJ1ZmZlciogZGVzdGluYXRpb24sIGNvbnN0IFdHUFVFeHRlbnQzRCogY29weVNp
emUpCiB7Ci0gICAgY29tbWFuZEVuY29kZXItPmNvbW1hbmRFbmNvZGVyLT5jb3B5VGV4dHVyZVRv
QnVmZmVyKHNvdXJjZSwgZGVzdGluYXRpb24sIGNvcHlTaXplKTsKKyAgICBjb21tYW5kRW5jb2Rl
ci0+Y29tbWFuZEVuY29kZXItPmNvcHlUZXh0dXJlVG9CdWZmZXIoKnNvdXJjZSwgKmRlc3RpbmF0
aW9uLCAqY29weVNpemUpOwogfQogCiB2b2lkIHdncHVDb21tYW5kRW5jb2RlckNvcHlUZXh0dXJl
VG9UZXh0dXJlKFdHUFVDb21tYW5kRW5jb2RlciBjb21tYW5kRW5jb2RlciwgY29uc3QgV0dQVUlt
YWdlQ29weVRleHR1cmUqIHNvdXJjZSwgY29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUqIGRlc3Rp
bmF0aW9uLCBjb25zdCBXR1BVRXh0ZW50M0QqIGNvcHlTaXplKQogewotICAgIGNvbW1hbmRFbmNv
ZGVyLT5jb21tYW5kRW5jb2Rlci0+Y29weVRleHR1cmVUb1RleHR1cmUoc291cmNlLCBkZXN0aW5h
dGlvbiwgY29weVNpemUpOworICAgIGNvbW1hbmRFbmNvZGVyLT5jb21tYW5kRW5jb2Rlci0+Y29w
eVRleHR1cmVUb1RleHR1cmUoKnNvdXJjZSwgKmRlc3RpbmF0aW9uLCAqY29weVNpemUpOwogfQog
CiB2b2lkIHdncHVDb21tYW5kRW5jb2RlckNsZWFyQnVmZmVyKFdHUFVDb21tYW5kRW5jb2RlciBj
b21tYW5kRW5jb2RlciwgV0dQVUJ1ZmZlciBidWZmZXIsIHVpbnQ2NF90IG9mZnNldCwgdWludDY0
X3Qgc2l6ZSkKQEAgLTE4Myw3ICsxODMsNyBAQCB2b2lkIHdncHVDb21tYW5kRW5jb2RlckNsZWFy
QnVmZmVyKFdHUFVDb21tYW5kRW5jb2RlciBjb21tYW5kRW5jb2RlciwgV0dQVUJ1ZmZlcgogCiBX
R1BVQ29tbWFuZEJ1ZmZlciB3Z3B1Q29tbWFuZEVuY29kZXJGaW5pc2goV0dQVUNvbW1hbmRFbmNv
ZGVyIGNvbW1hbmRFbmNvZGVyLCBjb25zdCBXR1BVQ29tbWFuZEJ1ZmZlckRlc2NyaXB0b3IqIGRl
c2NyaXB0b3IpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBjb21tYW5kRW5jb2Rlci0+Y29tbWFuZEVu
Y29kZXItPmZpbmlzaChkZXNjcmlwdG9yKTsKKyAgICBhdXRvIHJlc3VsdCA9IGNvbW1hbmRFbmNv
ZGVyLT5jb21tYW5kRW5jb2Rlci0+ZmluaXNoKCpkZXNjcmlwdG9yKTsKICAgICByZXR1cm4gcmVz
dWx0ID8gbmV3IFdHUFVDb21tYW5kQnVmZmVySW1wbCB7IHJlc3VsdC5yZWxlYXNlTm9uTnVsbCgp
IH0gOiBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21w
dXRlUGlwZWxpbmUubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21wdXRlUGlwZWxpbmUubW0K
aW5kZXggZTFiZmRlMzg3ZTk3YWQ4OTZjMTAyMzU4MzE5N2E2YjI1Yjg5Y2EwNi4uNmE4ZTdmZDc3
MDRmYjMzNDcyNzIzMjQ3MWZlMTIwMDQ3N2MzMTkyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQ
VS9XZWJHUFUvQ29tcHV0ZVBpcGVsaW5lLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0Nv
bXB1dGVQaXBlbGluZS5tbQpAQCAtMTQzLDE2ICsxNDMsMTYgQEAgc3RhdGljIGlkPE1UTENvbXB1
dGVQaXBlbGluZVN0YXRlPiBjcmVhdGVDb21wdXRlUGlwZWxpbmVTdGF0ZShpZDxNVExEZXZpY2U+
IGRldmkKICAgICByZXR1cm4gY29tcHV0ZVBpcGVsaW5lU3RhdGU7CiB9CiAKLVJlZlB0cjxDb21w
dXRlUGlwZWxpbmU+IERldmljZTo6Y3JlYXRlQ29tcHV0ZVBpcGVsaW5lKGNvbnN0IFdHUFVDb21w
dXRlUGlwZWxpbmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQorUmVmUHRyPENvbXB1dGVQaXBlbGlu
ZT4gRGV2aWNlOjpjcmVhdGVDb21wdXRlUGlwZWxpbmUoY29uc3QgV0dQVUNvbXB1dGVQaXBlbGlu
ZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7Ci0gICAgaWYgKGRlc2NyaXB0b3ItPm5leHRJbkNo
YWluIHx8IGRlc2NyaXB0b3ItPmNvbXB1dGUubmV4dEluQ2hhaW4pCisgICAgaWYgKGRlc2NyaXB0
b3IubmV4dEluQ2hhaW4gfHwgZGVzY3JpcHRvci5jb21wdXRlLm5leHRJbkNoYWluKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGNvbnN0IFNoYWRlck1vZHVsZSYgc2hhZGVyTW9kdWxl
ID0gZGVzY3JpcHRvci0+Y29tcHV0ZS5tb2R1bGUtPnNoYWRlck1vZHVsZTsKLSAgICBjb25zdCBQ
aXBlbGluZUxheW91dCYgcGlwZWxpbmVMYXlvdXQgPSBkZXNjcmlwdG9yLT5sYXlvdXQtPnBpcGVs
aW5lTGF5b3V0OwotICAgIGF1dG8gbGFiZWwgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENTdHJpbmc6
ZGVzY3JpcHRvci0+bGFiZWwgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOworICAgIGNv
bnN0IFNoYWRlck1vZHVsZSYgc2hhZGVyTW9kdWxlID0gZGVzY3JpcHRvci5jb21wdXRlLm1vZHVs
ZS0+c2hhZGVyTW9kdWxlOworICAgIGNvbnN0IFBpcGVsaW5lTGF5b3V0JiBwaXBlbGluZUxheW91
dCA9IGRlc2NyaXB0b3IubGF5b3V0LT5waXBlbGluZUxheW91dDsKKyAgICBhdXRvIGxhYmVsID0g
W05TU3RyaW5nIHN0cmluZ1dpdGhDU3RyaW5nOmRlc2NyaXB0b3IubGFiZWwgZW5jb2Rpbmc6TlNV
VEY4U3RyaW5nRW5jb2RpbmddOwogCi0gICAgYXV0byBsaWJyYXJ5Q3JlYXRpb25SZXN1bHQgPSBj
cmVhdGVMaWJyYXJ5KG1fZGV2aWNlLCBzaGFkZXJNb2R1bGUsIHBpcGVsaW5lTGF5b3V0LCBkZXNj
cmlwdG9yLT5jb21wdXRlLmVudHJ5UG9pbnQsIGxhYmVsKTsKKyAgICBhdXRvIGxpYnJhcnlDcmVh
dGlvblJlc3VsdCA9IGNyZWF0ZUxpYnJhcnkobV9kZXZpY2UsIHNoYWRlck1vZHVsZSwgcGlwZWxp
bmVMYXlvdXQsIGRlc2NyaXB0b3IuY29tcHV0ZS5lbnRyeVBvaW50LCBsYWJlbCk7CiAgICAgaWYg
KCFsaWJyYXJ5Q3JlYXRpb25SZXN1bHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0x
NjMsMTQgKzE2MywxNCBAQCBSZWZQdHI8Q29tcHV0ZVBpcGVsaW5lPiBEZXZpY2U6OmNyZWF0ZUNv
bXB1dGVQaXBlbGluZShjb25zdCBXR1BVQ29tcHV0ZVBpcGVsaW5lRAogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICBjb25zdCBhdXRvJiBjb21wdXRlSW5mb3JtYXRpb24gPSBzdGQ6OmdldDxX
R1NMOjpSZWZsZWN0aW9uOjpDb21wdXRlPihlbnRyeVBvaW50SW5mb3JtYXRpb24udHlwZWRFbnRy
eVBvaW50KTsKIAotICAgIGF1dG8gZnVuY3Rpb24gPSBjcmVhdGVGdW5jdGlvbihsaWJyYXJ5LCBl
bnRyeVBvaW50SW5mb3JtYXRpb24sIGRlc2NyaXB0b3ItPmNvbXB1dGUsIGxhYmVsKTsKKyAgICBh
dXRvIGZ1bmN0aW9uID0gY3JlYXRlRnVuY3Rpb24obGlicmFyeSwgZW50cnlQb2ludEluZm9ybWF0
aW9uLCBkZXNjcmlwdG9yLmNvbXB1dGUsIGxhYmVsKTsKIAogICAgIGF1dG8gY29tcHV0ZVBpcGVs
aW5lU3RhdGUgPSBjcmVhdGVDb21wdXRlUGlwZWxpbmVTdGF0ZShtX2RldmljZSwgZnVuY3Rpb24s
IHBpcGVsaW5lTGF5b3V0LCBjb21wdXRlSW5mb3JtYXRpb24sIGxhYmVsKTsKIAogICAgIHJldHVy
biBDb21wdXRlUGlwZWxpbmU6OmNyZWF0ZShjb21wdXRlUGlwZWxpbmVTdGF0ZSk7CiB9CiAKLXZv
aWQgRGV2aWNlOjpjcmVhdGVDb21wdXRlUGlwZWxpbmVBc3luYyhjb25zdCBXR1BVQ29tcHV0ZVBp
cGVsaW5lRGVzY3JpcHRvciogZGVzY3JpcHRvciwgV1RGOjpGdW5jdGlvbjx2b2lkKFdHUFVDcmVh
dGVQaXBlbGluZUFzeW5jU3RhdHVzLCBSZWZQdHI8Q29tcHV0ZVBpcGVsaW5lPiYmLCBjb25zdCBj
aGFyKiBtZXNzYWdlKT4mJiBjYWxsYmFjaykKK3ZvaWQgRGV2aWNlOjpjcmVhdGVDb21wdXRlUGlw
ZWxpbmVBc3luYyhjb25zdCBXR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciYgZGVzY3JpcHRv
ciwgV1RGOjpGdW5jdGlvbjx2b2lkKFdHUFVDcmVhdGVQaXBlbGluZUFzeW5jU3RhdHVzLCBSZWZQ
dHI8Q29tcHV0ZVBpcGVsaW5lPiYmLCBjb25zdCBjaGFyKiBtZXNzYWdlKT4mJiBjYWxsYmFjaykK
IHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMKICAgICBVTlVTRURfUEFSQU0oZGVzY3Jp
cHRvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9EZXZpY2UuaCBiL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL0RldmljZS5oCmluZGV4IDkyZmY0OWU5ZDcyYjAxNTU1YTMzY2Q4MDk0
OWRkYWE2NDQ2NzYwYTcuLjM4NzVlMzEyM2M3NzEwZjYxZDBhMzY5MWQwOGMxYjAwZWY1ZWU4NTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0RldmljZS5oCisrKyBiL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL0RldmljZS5oCkBAIC01NiwyNCArNTYsMjQgQEAgcHVibGljOgogCiAgICAg
fkRldmljZSgpOwogCi0gICAgUmVmUHRyPEJpbmRHcm91cD4gY3JlYXRlQmluZEdyb3VwKGNvbnN0
IFdHUFVCaW5kR3JvdXBEZXNjcmlwdG9yKik7Ci0gICAgUmVmUHRyPEJpbmRHcm91cExheW91dD4g
Y3JlYXRlQmluZEdyb3VwTGF5b3V0KGNvbnN0IFdHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9y
Kik7Ci0gICAgUmVmUHRyPEJ1ZmZlcj4gY3JlYXRlQnVmZmVyKGNvbnN0IFdHUFVCdWZmZXJEZXNj
cmlwdG9yKik7Ci0gICAgUmVmUHRyPENvbW1hbmRFbmNvZGVyPiBjcmVhdGVDb21tYW5kRW5jb2Rl
cihjb25zdCBXR1BVQ29tbWFuZEVuY29kZXJEZXNjcmlwdG9yKik7Ci0gICAgUmVmUHRyPENvbXB1
dGVQaXBlbGluZT4gY3JlYXRlQ29tcHV0ZVBpcGVsaW5lKGNvbnN0IFdHUFVDb21wdXRlUGlwZWxp
bmVEZXNjcmlwdG9yKik7Ci0gICAgdm9pZCBjcmVhdGVDb21wdXRlUGlwZWxpbmVBc3luYyhjb25z
dCBXR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciosIFdURjo6RnVuY3Rpb248dm9pZChXR1BV
Q3JlYXRlUGlwZWxpbmVBc3luY1N0YXR1cywgUmVmUHRyPENvbXB1dGVQaXBlbGluZT4mJiwgY29u
c3QgY2hhciogbWVzc2FnZSk+JiYgY2FsbGJhY2spOwotICAgIFJlZlB0cjxQaXBlbGluZUxheW91
dD4gY3JlYXRlUGlwZWxpbmVMYXlvdXQoY29uc3QgV0dQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRv
ciopOwotICAgIFJlZlB0cjxRdWVyeVNldD4gY3JlYXRlUXVlcnlTZXQoY29uc3QgV0dQVVF1ZXJ5
U2V0RGVzY3JpcHRvciopOwotICAgIFJlZlB0cjxSZW5kZXJCdW5kbGVFbmNvZGVyPiBjcmVhdGVS
ZW5kZXJCdW5kbGVFbmNvZGVyKGNvbnN0IFdHUFVSZW5kZXJCdW5kbGVFbmNvZGVyRGVzY3JpcHRv
ciopOwotICAgIFJlZlB0cjxSZW5kZXJQaXBlbGluZT4gY3JlYXRlUmVuZGVyUGlwZWxpbmUoY29u
c3QgV0dQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciopOwotICAgIHZvaWQgY3JlYXRlUmVuZGVy
UGlwZWxpbmVBc3luYyhjb25zdCBXR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKiwgV1RGOjpG
dW5jdGlvbjx2b2lkKFdHUFVDcmVhdGVQaXBlbGluZUFzeW5jU3RhdHVzLCBSZWZQdHI8UmVuZGVy
UGlwZWxpbmU+JiYsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpPiYmIGNhbGxiYWNrKTsKLSAgICBSZWZQ
dHI8U2FtcGxlcj4gY3JlYXRlU2FtcGxlcihjb25zdCBXR1BVU2FtcGxlckRlc2NyaXB0b3IqKTsK
LSAgICBSZWZQdHI8U2hhZGVyTW9kdWxlPiBjcmVhdGVTaGFkZXJNb2R1bGUoY29uc3QgV0dQVVNo
YWRlck1vZHVsZURlc2NyaXB0b3IqKTsKLSAgICBSZWZQdHI8U3dhcENoYWluPiBjcmVhdGVTd2Fw
Q2hhaW4oY29uc3QgU3VyZmFjZSYsIGNvbnN0IFdHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yKik7Ci0g
ICAgUmVmUHRyPFRleHR1cmU+IGNyZWF0ZVRleHR1cmUoY29uc3QgV0dQVVRleHR1cmVEZXNjcmlw
dG9yKik7CisgICAgUmVmUHRyPEJpbmRHcm91cD4gY3JlYXRlQmluZEdyb3VwKGNvbnN0IFdHUFVC
aW5kR3JvdXBEZXNjcmlwdG9yJik7CisgICAgUmVmUHRyPEJpbmRHcm91cExheW91dD4gY3JlYXRl
QmluZEdyb3VwTGF5b3V0KGNvbnN0IFdHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yJik7Cisg
ICAgUmVmUHRyPEJ1ZmZlcj4gY3JlYXRlQnVmZmVyKGNvbnN0IFdHUFVCdWZmZXJEZXNjcmlwdG9y
Jik7CisgICAgUmVmUHRyPENvbW1hbmRFbmNvZGVyPiBjcmVhdGVDb21tYW5kRW5jb2Rlcihjb25z
dCBXR1BVQ29tbWFuZEVuY29kZXJEZXNjcmlwdG9yJik7CisgICAgUmVmUHRyPENvbXB1dGVQaXBl
bGluZT4gY3JlYXRlQ29tcHV0ZVBpcGVsaW5lKGNvbnN0IFdHUFVDb21wdXRlUGlwZWxpbmVEZXNj
cmlwdG9yJik7CisgICAgdm9pZCBjcmVhdGVDb21wdXRlUGlwZWxpbmVBc3luYyhjb25zdCBXR1BV
Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciYsIFdURjo6RnVuY3Rpb248dm9pZChXR1BVQ3JlYXRl
UGlwZWxpbmVBc3luY1N0YXR1cywgUmVmUHRyPENvbXB1dGVQaXBlbGluZT4mJiwgY29uc3QgY2hh
ciogbWVzc2FnZSk+JiYgY2FsbGJhY2spOworICAgIFJlZlB0cjxQaXBlbGluZUxheW91dD4gY3Jl
YXRlUGlwZWxpbmVMYXlvdXQoY29uc3QgV0dQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciYpOwor
ICAgIFJlZlB0cjxRdWVyeVNldD4gY3JlYXRlUXVlcnlTZXQoY29uc3QgV0dQVVF1ZXJ5U2V0RGVz
Y3JpcHRvciYpOworICAgIFJlZlB0cjxSZW5kZXJCdW5kbGVFbmNvZGVyPiBjcmVhdGVSZW5kZXJC
dW5kbGVFbmNvZGVyKGNvbnN0IFdHUFVSZW5kZXJCdW5kbGVFbmNvZGVyRGVzY3JpcHRvciYpOwor
ICAgIFJlZlB0cjxSZW5kZXJQaXBlbGluZT4gY3JlYXRlUmVuZGVyUGlwZWxpbmUoY29uc3QgV0dQ
VVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYpOworICAgIHZvaWQgY3JlYXRlUmVuZGVyUGlwZWxp
bmVBc3luYyhjb25zdCBXR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yJiwgV1RGOjpGdW5jdGlv
bjx2b2lkKFdHUFVDcmVhdGVQaXBlbGluZUFzeW5jU3RhdHVzLCBSZWZQdHI8UmVuZGVyUGlwZWxp
bmU+JiYsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpPiYmIGNhbGxiYWNrKTsKKyAgICBSZWZQdHI8U2Ft
cGxlcj4gY3JlYXRlU2FtcGxlcihjb25zdCBXR1BVU2FtcGxlckRlc2NyaXB0b3ImKTsKKyAgICBS
ZWZQdHI8U2hhZGVyTW9kdWxlPiBjcmVhdGVTaGFkZXJNb2R1bGUoY29uc3QgV0dQVVNoYWRlck1v
ZHVsZURlc2NyaXB0b3ImKTsKKyAgICBSZWZQdHI8U3dhcENoYWluPiBjcmVhdGVTd2FwQ2hhaW4o
Y29uc3QgU3VyZmFjZSYsIGNvbnN0IFdHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yJik7CisgICAgUmVm
UHRyPFRleHR1cmU+IGNyZWF0ZVRleHR1cmUoY29uc3QgV0dQVVRleHR1cmVEZXNjcmlwdG9yJik7
CiAgICAgdm9pZCBkZXN0cm95KCk7CiAgICAgc2l6ZV90IGVudW1lcmF0ZUZlYXR1cmVzKFdHUFVG
ZWF0dXJlTmFtZSogZmVhdHVyZXMpOwotICAgIGJvb2wgZ2V0TGltaXRzKFdHUFVTdXBwb3J0ZWRM
aW1pdHMqKTsKKyAgICBib29sIGdldExpbWl0cyhXR1BVU3VwcG9ydGVkTGltaXRzJik7CiAgICAg
UmVmUHRyPFF1ZXVlPiBnZXRRdWV1ZSgpOwogICAgIGJvb2wgaGFzRmVhdHVyZShXR1BVRmVhdHVy
ZU5hbWUpOwogICAgIGJvb2wgcG9wRXJyb3JTY29wZShXVEY6OkZ1bmN0aW9uPHZvaWQoV0dQVUVy
cm9yVHlwZSwgY29uc3QgY2hhciopPiYmIGNhbGxiYWNrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL0RldmljZS5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0RldmljZS5tbQpp
bmRleCA1YjVjMGE0YTI0YzljOGRkOTgyNzVkZGUyNjU4MjJiNTUzYWNmNmNhLi5jODNmODQzYzI2
NDdmNzlhZjE2NjIxMTE3NTU0OWM4YzJjMzdkYmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9EZXZpY2UubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvRGV2aWNlLm1tCkBA
IC03NCwxMyArNzQsMTMgQEAgc2l6ZV90IERldmljZTo6ZW51bWVyYXRlRmVhdHVyZXMoV0dQVUZl
YXR1cmVOYW1lKikKICAgICByZXR1cm4gMDsKIH0KIAotYm9vbCBEZXZpY2U6OmdldExpbWl0cyhX
R1BVU3VwcG9ydGVkTGltaXRzKiBsaW1pdHMpCitib29sIERldmljZTo6Z2V0TGltaXRzKFdHUFVT
dXBwb3J0ZWRMaW1pdHMmIGxpbWl0cykKIHsKLSAgICBpZiAobGltaXRzLT5uZXh0SW5DaGFpbiAh
PSBudWxscHRyKQorICAgIGlmIChsaW1pdHMubmV4dEluQ2hhaW4gIT0gbnVsbHB0cikKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgotICAgIGxp
bWl0cy0+bGltaXRzID0geyB9OworICAgIGxpbWl0cy5saW1pdHMgPSB7IH07CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKQEAgLTEzNCwxMDcgKzEzNCwxMDcgQEAgdm9pZCB3Z3B1RGV2aWNlUmVsZWFz
ZShXR1BVRGV2aWNlIGRldmljZSkKIAogV0dQVUJpbmRHcm91cCB3Z3B1RGV2aWNlQ3JlYXRlQmlu
ZEdyb3VwKFdHUFVEZXZpY2UgZGV2aWNlLCBjb25zdCBXR1BVQmluZEdyb3VwRGVzY3JpcHRvciog
ZGVzY3JpcHRvcikKIHsKLSAgICBhdXRvIHJlc3VsdCA9IGRldmljZS0+ZGV2aWNlLT5jcmVhdGVC
aW5kR3JvdXAoZGVzY3JpcHRvcik7CisgICAgYXV0byByZXN1bHQgPSBkZXZpY2UtPmRldmljZS0+
Y3JlYXRlQmluZEdyb3VwKCpkZXNjcmlwdG9yKTsKICAgICByZXR1cm4gcmVzdWx0ID8gbmV3IFdH
UFVCaW5kR3JvdXBJbXBsIHsgcmVzdWx0LnJlbGVhc2VOb25OdWxsKCkgfSA6IG51bGxwdHI7CiB9
CiAKIFdHUFVCaW5kR3JvdXBMYXlvdXQgd2dwdURldmljZUNyZWF0ZUJpbmRHcm91cExheW91dChX
R1BVRGV2aWNlIGRldmljZSwgY29uc3QgV0dQVUJpbmRHcm91cExheW91dERlc2NyaXB0b3IqIGRl
c2NyaXB0b3IpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBkZXZpY2UtPmRldmljZS0+Y3JlYXRlQmlu
ZEdyb3VwTGF5b3V0KGRlc2NyaXB0b3IpOworICAgIGF1dG8gcmVzdWx0ID0gZGV2aWNlLT5kZXZp
Y2UtPmNyZWF0ZUJpbmRHcm91cExheW91dCgqZGVzY3JpcHRvcik7CiAgICAgcmV0dXJuIHJlc3Vs
dCA/IG5ldyBXR1BVQmluZEdyb3VwTGF5b3V0SW1wbCB7IHJlc3VsdC5yZWxlYXNlTm9uTnVsbCgp
IH0gOiBudWxscHRyOwogfQogCiBXR1BVQnVmZmVyIHdncHVEZXZpY2VDcmVhdGVCdWZmZXIoV0dQ
VURldmljZSBkZXZpY2UsIGNvbnN0IFdHUFVCdWZmZXJEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQog
ewotICAgIGF1dG8gcmVzdWx0ID0gZGV2aWNlLT5kZXZpY2UtPmNyZWF0ZUJ1ZmZlcihkZXNjcmlw
dG9yKTsKKyAgICBhdXRvIHJlc3VsdCA9IGRldmljZS0+ZGV2aWNlLT5jcmVhdGVCdWZmZXIoKmRl
c2NyaXB0b3IpOwogICAgIHJldHVybiByZXN1bHQgPyBuZXcgV0dQVUJ1ZmZlckltcGwgeyByZXN1
bHQucmVsZWFzZU5vbk51bGwoKSB9IDogbnVsbHB0cjsKIH0KIAogV0dQVUNvbW1hbmRFbmNvZGVy
IHdncHVEZXZpY2VDcmVhdGVDb21tYW5kRW5jb2RlcihXR1BVRGV2aWNlIGRldmljZSwgY29uc3Qg
V0dQVUNvbW1hbmRFbmNvZGVyRGVzY3JpcHRvciogZGVzY3JpcHRvcikKIHsKLSAgICBhdXRvIHJl
c3VsdCA9IGRldmljZS0+ZGV2aWNlLT5jcmVhdGVDb21tYW5kRW5jb2RlcihkZXNjcmlwdG9yKTsK
KyAgICBhdXRvIHJlc3VsdCA9IGRldmljZS0+ZGV2aWNlLT5jcmVhdGVDb21tYW5kRW5jb2Rlcigq
ZGVzY3JpcHRvcik7CiAgICAgcmV0dXJuIHJlc3VsdCA/IG5ldyBXR1BVQ29tbWFuZEVuY29kZXJJ
bXBsIHsgcmVzdWx0LnJlbGVhc2VOb25OdWxsKCkgfSA6IG51bGxwdHI7CiB9CiAKIFdHUFVDb21w
dXRlUGlwZWxpbmUgd2dwdURldmljZUNyZWF0ZUNvbXB1dGVQaXBlbGluZShXR1BVRGV2aWNlIGRl
dmljZSwgY29uc3QgV0dQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCiB7
Ci0gICAgYXV0byByZXN1bHQgPSBkZXZpY2UtPmRldmljZS0+Y3JlYXRlQ29tcHV0ZVBpcGVsaW5l
KGRlc2NyaXB0b3IpOworICAgIGF1dG8gcmVzdWx0ID0gZGV2aWNlLT5kZXZpY2UtPmNyZWF0ZUNv
bXB1dGVQaXBlbGluZSgqZGVzY3JpcHRvcik7CiAgICAgcmV0dXJuIHJlc3VsdCA/IG5ldyBXR1BV
Q29tcHV0ZVBpcGVsaW5lSW1wbCB7IHJlc3VsdC5yZWxlYXNlTm9uTnVsbCgpIH0gOiBudWxscHRy
OwogfQogCiB2b2lkIHdncHVEZXZpY2VDcmVhdGVDb21wdXRlUGlwZWxpbmVBc3luYyhXR1BVRGV2
aWNlIGRldmljZSwgY29uc3QgV0dQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IqIGRlc2NyaXB0
b3IsIFdHUFVDcmVhdGVDb21wdXRlUGlwZWxpbmVBc3luY0NhbGxiYWNrIGNhbGxiYWNrLCB2b2lk
KiB1c2VyZGF0YSkKIHsKLSAgICBkZXZpY2UtPmRldmljZS0+Y3JlYXRlQ29tcHV0ZVBpcGVsaW5l
QXN5bmMoZGVzY3JpcHRvciwgW2NhbGxiYWNrLCB1c2VyZGF0YV0gKFdHUFVDcmVhdGVQaXBlbGlu
ZUFzeW5jU3RhdHVzIHN0YXR1cywgUmVmUHRyPFdlYkdQVTo6Q29tcHV0ZVBpcGVsaW5lPiYmIHBp
cGVsaW5lLCBjb25zdCBjaGFyKiBtZXNzYWdlKSB7CisgICAgZGV2aWNlLT5kZXZpY2UtPmNyZWF0
ZUNvbXB1dGVQaXBlbGluZUFzeW5jKCpkZXNjcmlwdG9yLCBbY2FsbGJhY2ssIHVzZXJkYXRhXSAo
V0dQVUNyZWF0ZVBpcGVsaW5lQXN5bmNTdGF0dXMgc3RhdHVzLCBSZWZQdHI8V2ViR1BVOjpDb21w
dXRlUGlwZWxpbmU+JiYgcGlwZWxpbmUsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpIHsKICAgICAgICAg
Y2FsbGJhY2soc3RhdHVzLCBwaXBlbGluZSA/IG5ldyBXR1BVQ29tcHV0ZVBpcGVsaW5lSW1wbCB7
IHBpcGVsaW5lLnJlbGVhc2VOb25OdWxsKCkgfSA6IG51bGxwdHIsIG1lc3NhZ2UsIHVzZXJkYXRh
KTsKICAgICB9KTsKIH0KIAogdm9pZCB3Z3B1RGV2aWNlQ3JlYXRlQ29tcHV0ZVBpcGVsaW5lQXN5
bmNXaXRoQmxvY2soV0dQVURldmljZSBkZXZpY2UsIFdHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlw
dG9yIGNvbnN0ICogZGVzY3JpcHRvciwgV0dQVUNyZWF0ZUNvbXB1dGVQaXBlbGluZUFzeW5jQmxv
Y2tDYWxsYmFjayBjYWxsYmFjaykKIHsKLSAgICBkZXZpY2UtPmRldmljZS0+Y3JlYXRlQ29tcHV0
ZVBpcGVsaW5lQXN5bmMoZGVzY3JpcHRvciwgW2NhbGxiYWNrXSAoV0dQVUNyZWF0ZVBpcGVsaW5l
QXN5bmNTdGF0dXMgc3RhdHVzLCBSZWZQdHI8V2ViR1BVOjpDb21wdXRlUGlwZWxpbmU+JiYgcGlw
ZWxpbmUsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpIHsKKyAgICBkZXZpY2UtPmRldmljZS0+Y3JlYXRl
Q29tcHV0ZVBpcGVsaW5lQXN5bmMoKmRlc2NyaXB0b3IsIFtjYWxsYmFja10gKFdHUFVDcmVhdGVQ
aXBlbGluZUFzeW5jU3RhdHVzIHN0YXR1cywgUmVmUHRyPFdlYkdQVTo6Q29tcHV0ZVBpcGVsaW5l
PiYmIHBpcGVsaW5lLCBjb25zdCBjaGFyKiBtZXNzYWdlKSB7CiAgICAgICAgIGNhbGxiYWNrKHN0
YXR1cywgcGlwZWxpbmUgPyBuZXcgV0dQVUNvbXB1dGVQaXBlbGluZUltcGwgeyBwaXBlbGluZS5y
ZWxlYXNlTm9uTnVsbCgpIH0gOiBudWxscHRyLCBtZXNzYWdlKTsKICAgICB9KTsKIH0KIAogV0dQ
VVBpcGVsaW5lTGF5b3V0IHdncHVEZXZpY2VDcmVhdGVQaXBlbGluZUxheW91dChXR1BVRGV2aWNl
IGRldmljZSwgY29uc3QgV0dQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciogZGVzY3JpcHRvcikK
IHsKLSAgICBhdXRvIHJlc3VsdCA9IGRldmljZS0+ZGV2aWNlLT5jcmVhdGVQaXBlbGluZUxheW91
dChkZXNjcmlwdG9yKTsKKyAgICBhdXRvIHJlc3VsdCA9IGRldmljZS0+ZGV2aWNlLT5jcmVhdGVQ
aXBlbGluZUxheW91dCgqZGVzY3JpcHRvcik7CiAgICAgcmV0dXJuIHJlc3VsdCA/IG5ldyBXR1BV
UGlwZWxpbmVMYXlvdXRJbXBsIHsgcmVzdWx0LnJlbGVhc2VOb25OdWxsKCkgfSA6IG51bGxwdHI7
CiB9CiAKIFdHUFVRdWVyeVNldCB3Z3B1RGV2aWNlQ3JlYXRlUXVlcnlTZXQoV0dQVURldmljZSBk
ZXZpY2UsIGNvbnN0IFdHUFVRdWVyeVNldERlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCiB7Ci0gICAg
YXV0byByZXN1bHQgPSBkZXZpY2UtPmRldmljZS0+Y3JlYXRlUXVlcnlTZXQoZGVzY3JpcHRvcik7
CisgICAgYXV0byByZXN1bHQgPSBkZXZpY2UtPmRldmljZS0+Y3JlYXRlUXVlcnlTZXQoKmRlc2Ny
aXB0b3IpOwogICAgIHJldHVybiByZXN1bHQgPyBuZXcgV0dQVVF1ZXJ5U2V0SW1wbCB7IHJlc3Vs
dC5yZWxlYXNlTm9uTnVsbCgpIH0gOiBudWxscHRyOwogfQogCiBXR1BVUmVuZGVyQnVuZGxlRW5j
b2RlciB3Z3B1RGV2aWNlQ3JlYXRlUmVuZGVyQnVuZGxlRW5jb2RlcihXR1BVRGV2aWNlIGRldmlj
ZSwgY29uc3QgV0dQVVJlbmRlckJ1bmRsZUVuY29kZXJEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQog
ewotICAgIGF1dG8gcmVzdWx0ID0gZGV2aWNlLT5kZXZpY2UtPmNyZWF0ZVJlbmRlckJ1bmRsZUVu
Y29kZXIoZGVzY3JpcHRvcik7CisgICAgYXV0byByZXN1bHQgPSBkZXZpY2UtPmRldmljZS0+Y3Jl
YXRlUmVuZGVyQnVuZGxlRW5jb2RlcigqZGVzY3JpcHRvcik7CiAgICAgcmV0dXJuIHJlc3VsdCA/
IG5ldyBXR1BVUmVuZGVyQnVuZGxlRW5jb2RlckltcGwgeyByZXN1bHQucmVsZWFzZU5vbk51bGwo
KSB9IDogbnVsbHB0cjsKIH0KIAogV0dQVVJlbmRlclBpcGVsaW5lIHdncHVEZXZpY2VDcmVhdGVS
ZW5kZXJQaXBlbGluZShXR1BVRGV2aWNlIGRldmljZSwgY29uc3QgV0dQVVJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvciogZGVzY3JpcHRvcikKIHsKLSAgICBhdXRvIHJlc3VsdCA9IGRldmljZS0+ZGV2
aWNlLT5jcmVhdGVSZW5kZXJQaXBlbGluZShkZXNjcmlwdG9yKTsKKyAgICBhdXRvIHJlc3VsdCA9
IGRldmljZS0+ZGV2aWNlLT5jcmVhdGVSZW5kZXJQaXBlbGluZSgqZGVzY3JpcHRvcik7CiAgICAg
cmV0dXJuIHJlc3VsdCA/IG5ldyBXR1BVUmVuZGVyUGlwZWxpbmVJbXBsIHsgcmVzdWx0LnJlbGVh
c2VOb25OdWxsKCkgfSA6IG51bGxwdHI7CiB9CiAKIHZvaWQgd2dwdURldmljZUNyZWF0ZVJlbmRl
clBpcGVsaW5lQXN5bmMoV0dQVURldmljZSBkZXZpY2UsIGNvbnN0IFdHUFVSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIFdHUFVDcmVhdGVSZW5kZXJQaXBlbGluZUFzeW5jQ2Fs
bGJhY2sgY2FsbGJhY2ssIHZvaWQqIHVzZXJkYXRhKQogewotICAgIGRldmljZS0+ZGV2aWNlLT5j
cmVhdGVSZW5kZXJQaXBlbGluZUFzeW5jKGRlc2NyaXB0b3IsIFtjYWxsYmFjaywgdXNlcmRhdGFd
IChXR1BVQ3JlYXRlUGlwZWxpbmVBc3luY1N0YXR1cyBzdGF0dXMsIFJlZlB0cjxXZWJHUFU6OlJl
bmRlclBpcGVsaW5lPiYmIHBpcGVsaW5lLCBjb25zdCBjaGFyKiBtZXNzYWdlKSB7CisgICAgZGV2
aWNlLT5kZXZpY2UtPmNyZWF0ZVJlbmRlclBpcGVsaW5lQXN5bmMoKmRlc2NyaXB0b3IsIFtjYWxs
YmFjaywgdXNlcmRhdGFdIChXR1BVQ3JlYXRlUGlwZWxpbmVBc3luY1N0YXR1cyBzdGF0dXMsIFJl
ZlB0cjxXZWJHUFU6OlJlbmRlclBpcGVsaW5lPiYmIHBpcGVsaW5lLCBjb25zdCBjaGFyKiBtZXNz
YWdlKSB7CiAgICAgICAgIGNhbGxiYWNrKHN0YXR1cywgcGlwZWxpbmUgPyBuZXcgV0dQVVJlbmRl
clBpcGVsaW5lSW1wbCB7IHBpcGVsaW5lLnJlbGVhc2VOb25OdWxsKCkgfSA6IG51bGxwdHIsIG1l
c3NhZ2UsIHVzZXJkYXRhKTsKICAgICB9KTsKIH0KIAogdm9pZCB3Z3B1RGV2aWNlQ3JlYXRlUmVu
ZGVyUGlwZWxpbmVBc3luY1dpdGhCbG9jayhXR1BVRGV2aWNlIGRldmljZSwgV0dQVVJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvciBjb25zdCAqIGRlc2NyaXB0b3IsIFdHUFVDcmVhdGVSZW5kZXJQaXBl
bGluZUFzeW5jQmxvY2tDYWxsYmFjayBjYWxsYmFjaykKIHsKLSAgICBkZXZpY2UtPmRldmljZS0+
Y3JlYXRlUmVuZGVyUGlwZWxpbmVBc3luYyhkZXNjcmlwdG9yLCBbY2FsbGJhY2tdIChXR1BVQ3Jl
YXRlUGlwZWxpbmVBc3luY1N0YXR1cyBzdGF0dXMsIFJlZlB0cjxXZWJHUFU6OlJlbmRlclBpcGVs
aW5lPiYmIHBpcGVsaW5lLCBjb25zdCBjaGFyKiBtZXNzYWdlKSB7CisgICAgZGV2aWNlLT5kZXZp
Y2UtPmNyZWF0ZVJlbmRlclBpcGVsaW5lQXN5bmMoKmRlc2NyaXB0b3IsIFtjYWxsYmFja10gKFdH
UFVDcmVhdGVQaXBlbGluZUFzeW5jU3RhdHVzIHN0YXR1cywgUmVmUHRyPFdlYkdQVTo6UmVuZGVy
UGlwZWxpbmU+JiYgcGlwZWxpbmUsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpIHsKICAgICAgICAgY2Fs
bGJhY2soc3RhdHVzLCBwaXBlbGluZSA/IG5ldyBXR1BVUmVuZGVyUGlwZWxpbmVJbXBsIHsgcGlw
ZWxpbmUucmVsZWFzZU5vbk51bGwoKSB9IDogbnVsbHB0ciwgbWVzc2FnZSk7CiAgICAgfSk7CiB9
CiAKIFdHUFVTYW1wbGVyIHdncHVEZXZpY2VDcmVhdGVTYW1wbGVyKFdHUFVEZXZpY2UgZGV2aWNl
LCBjb25zdCBXR1BVU2FtcGxlckRlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCiB7Ci0gICAgYXV0byBy
ZXN1bHQgPSBkZXZpY2UtPmRldmljZS0+Y3JlYXRlU2FtcGxlcihkZXNjcmlwdG9yKTsKKyAgICBh
dXRvIHJlc3VsdCA9IGRldmljZS0+ZGV2aWNlLT5jcmVhdGVTYW1wbGVyKCpkZXNjcmlwdG9yKTsK
ICAgICByZXR1cm4gcmVzdWx0ID8gbmV3IFdHUFVTYW1wbGVySW1wbCB7IHJlc3VsdC5yZWxlYXNl
Tm9uTnVsbCgpIH0gOiBudWxscHRyOwogfQogCiBXR1BVU2hhZGVyTW9kdWxlIHdncHVEZXZpY2VD
cmVhdGVTaGFkZXJNb2R1bGUoV0dQVURldmljZSBkZXZpY2UsIGNvbnN0IFdHUFVTaGFkZXJNb2R1
bGVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQogewotICAgIGF1dG8gcmVzdWx0ID0gZGV2aWNlLT5k
ZXZpY2UtPmNyZWF0ZVNoYWRlck1vZHVsZShkZXNjcmlwdG9yKTsKKyAgICBhdXRvIHJlc3VsdCA9
IGRldmljZS0+ZGV2aWNlLT5jcmVhdGVTaGFkZXJNb2R1bGUoKmRlc2NyaXB0b3IpOwogICAgIHJl
dHVybiByZXN1bHQgPyBuZXcgV0dQVVNoYWRlck1vZHVsZUltcGwgeyByZXN1bHQucmVsZWFzZU5v
bk51bGwoKSB9IDogbnVsbHB0cjsKIH0KIAogV0dQVVN3YXBDaGFpbiB3Z3B1RGV2aWNlQ3JlYXRl
U3dhcENoYWluKFdHUFVEZXZpY2UgZGV2aWNlLCBXR1BVU3VyZmFjZSBzdXJmYWNlLCBjb25zdCBX
R1BVU3dhcENoYWluRGVzY3JpcHRvciogZGVzY3JpcHRvcikKIHsKLSAgICBhdXRvIHJlc3VsdCA9
IGRldmljZS0+ZGV2aWNlLT5jcmVhdGVTd2FwQ2hhaW4oc3VyZmFjZS0+c3VyZmFjZSwgZGVzY3Jp
cHRvcik7CisgICAgYXV0byByZXN1bHQgPSBkZXZpY2UtPmRldmljZS0+Y3JlYXRlU3dhcENoYWlu
KHN1cmZhY2UtPnN1cmZhY2UsICpkZXNjcmlwdG9yKTsKICAgICByZXR1cm4gcmVzdWx0ID8gbmV3
IFdHUFVTd2FwQ2hhaW5JbXBsIHsgcmVzdWx0LnJlbGVhc2VOb25OdWxsKCkgfSA6IG51bGxwdHI7
CiB9CiAKIFdHUFVUZXh0dXJlIHdncHVEZXZpY2VDcmVhdGVUZXh0dXJlKFdHUFVEZXZpY2UgZGV2
aWNlLCBjb25zdCBXR1BVVGV4dHVyZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCiB7Ci0gICAgYXV0
byByZXN1bHQgPSBkZXZpY2UtPmRldmljZS0+Y3JlYXRlVGV4dHVyZShkZXNjcmlwdG9yKTsKKyAg
ICBhdXRvIHJlc3VsdCA9IGRldmljZS0+ZGV2aWNlLT5jcmVhdGVUZXh0dXJlKCpkZXNjcmlwdG9y
KTsKICAgICByZXR1cm4gcmVzdWx0ID8gbmV3IFdHUFVUZXh0dXJlSW1wbCB7IHJlc3VsdC5yZWxl
YXNlTm9uTnVsbCgpIH0gOiBudWxscHRyOwogfQogCkBAIC0yNTAsNyArMjUwLDcgQEAgc2l6ZV90
IHdncHVEZXZpY2VFbnVtZXJhdGVGZWF0dXJlcyhXR1BVRGV2aWNlIGRldmljZSwgV0dQVUZlYXR1
cmVOYW1lKiBmZWF0dXJlcykKIAogYm9vbCB3Z3B1RGV2aWNlR2V0TGltaXRzKFdHUFVEZXZpY2Ug
ZGV2aWNlLCBXR1BVU3VwcG9ydGVkTGltaXRzKiBsaW1pdHMpCiB7Ci0gICAgcmV0dXJuIGRldmlj
ZS0+ZGV2aWNlLT5nZXRMaW1pdHMobGltaXRzKTsKKyAgICByZXR1cm4gZGV2aWNlLT5kZXZpY2Ut
PmdldExpbWl0cygqbGltaXRzKTsKIH0KIAogV0dQVVF1ZXVlIHdncHVEZXZpY2VHZXRRdWV1ZShX
R1BVRGV2aWNlIGRldmljZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0luc3Rh
bmNlLmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9JbnN0YW5jZS5oCmluZGV4IGQ2ZTc1OTA0MmZm
YWVjMzkxYTMyOTdhMDQ0YTNjNjFmNzI1MmI1MWEuLjVmODRhZGIzOWQ4Y2Q2NmFhOWI4ZmM1ZDBi
MjgwOWJhNjIzYzk3ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0luc3RhbmNl
LmgKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvSW5zdGFuY2UuaApAQCAtNDAsMTMgKzQwLDEz
IEBAIGNsYXNzIFN1cmZhY2U7CiBjbGFzcyBJbnN0YW5jZSA6IHB1YmxpYyBSZWZDb3VudGVkPElu
c3RhbmNlPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZlB0cjxJbnN0YW5jZT4gY3JlYXRlKGNvbnN0IFdHUFVJbnN0YW5jZURlc2NyaXB0b3Iq
KTsKKyAgICBzdGF0aWMgUmVmUHRyPEluc3RhbmNlPiBjcmVhdGUoY29uc3QgV0dQVUluc3RhbmNl
RGVzY3JpcHRvciYpOwogCiAgICAgfkluc3RhbmNlKCk7CiAKLSAgICBSZWZQdHI8U3VyZmFjZT4g
Y3JlYXRlU3VyZmFjZShjb25zdCBXR1BVU3VyZmFjZURlc2NyaXB0b3IqKTsKKyAgICBSZWZQdHI8
U3VyZmFjZT4gY3JlYXRlU3VyZmFjZShjb25zdCBXR1BVU3VyZmFjZURlc2NyaXB0b3ImKTsKICAg
ICB2b2lkIHByb2Nlc3NFdmVudHMoKTsKLSAgICB2b2lkIHJlcXVlc3RBZGFwdGVyKGNvbnN0IFdH
UFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMqLCBXVEY6OkZ1bmN0aW9uPHZvaWQoV0dQVVJlcXVlc3RB
ZGFwdGVyU3RhdHVzLCBSZWZQdHI8QWRhcHRlcj4mJiwgY29uc3QgY2hhciopPiYmIGNhbGxiYWNr
KTsKKyAgICB2b2lkIHJlcXVlc3RBZGFwdGVyKGNvbnN0IFdHUFVSZXF1ZXN0QWRhcHRlck9wdGlv
bnMmLCBXVEY6OkZ1bmN0aW9uPHZvaWQoV0dQVVJlcXVlc3RBZGFwdGVyU3RhdHVzLCBSZWZQdHI8
QWRhcHRlcj4mJiwgY29uc3QgY2hhciopPiYmIGNhbGxiYWNrKTsKIAogICAgIE5TUnVuTG9vcCAq
cnVuTG9vcCgpIGNvbnN0IHsgcmV0dXJuIG1fcnVuTG9vcDsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9JbnN0YW5jZS5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0luc3Rh
bmNlLm1tCmluZGV4IGZhYjMxYjE4ZGZmN2ExNTFiNjBmYzA3YzBiNzZlMGI4N2ExZWNmMDcuLjI0
YTA1NzFkZDIzOGQxZjMyOGQ2MmFmYmIzYTJhZmYyN2RkNmFjNTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL0luc3RhbmNlLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0lu
c3RhbmNlLm1tCkBAIC0zNSw5ICszNSw5IEBAIG5hbWVzcGFjZSBXZWJHUFUgewogCiBzdGF0aWMg
Y29uc3RleHByIE5TU3RyaW5nICpydW5Mb29wTW9kZSA9IEAia0NGUnVuTG9vcFdlYkdQVU1vZGUi
OwogCi1SZWZQdHI8SW5zdGFuY2U+IEluc3RhbmNlOjpjcmVhdGUoY29uc3QgV0dQVUluc3RhbmNl
RGVzY3JpcHRvciogZGVzY3JpcHRvcikKK1JlZlB0cjxJbnN0YW5jZT4gSW5zdGFuY2U6OmNyZWF0
ZShjb25zdCBXR1BVSW5zdGFuY2VEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewotICAgIGlmIChk
ZXNjcmlwdG9yLT5uZXh0SW5DaGFpbikKKyAgICBpZiAoZGVzY3JpcHRvci5uZXh0SW5DaGFpbikK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBOU1J1bkxvb3AgKnJ1bkxvb3AgPSBOU1J1
bkxvb3AuY3VycmVudFJ1bkxvb3A7CkBAIC01NCw3ICs1NCw3IEBAIEluc3RhbmNlOjpJbnN0YW5j
ZShOU1J1bkxvb3AgKnJ1bkxvb3ApCiAKIEluc3RhbmNlOjp+SW5zdGFuY2UoKSA9IGRlZmF1bHQ7
CiAKLVJlZlB0cjxTdXJmYWNlPiBJbnN0YW5jZTo6Y3JlYXRlU3VyZmFjZShjb25zdCBXR1BVU3Vy
ZmFjZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCitSZWZQdHI8U3VyZmFjZT4gSW5zdGFuY2U6OmNy
ZWF0ZVN1cmZhY2UoY29uc3QgV0dQVVN1cmZhY2VEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewog
ICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KICAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRv
cik7CkBAIC0xMTAsNyArMTEwLDcgQEAgc3RhdGljIE5TQXJyYXk8aWQ8TVRMRGV2aWNlPj4gKnNv
cnRlZERldmljZXMoTlNBcnJheTxpZDxNVExEZXZpY2U+PiAqZGV2aWNlcywgV0cKICAgICB9CiB9
CiAKLXZvaWQgSW5zdGFuY2U6OnJlcXVlc3RBZGFwdGVyKGNvbnN0IFdHUFVSZXF1ZXN0QWRhcHRl
ck9wdGlvbnMqIG9wdGlvbnMsIFdURjo6RnVuY3Rpb248dm9pZChXR1BVUmVxdWVzdEFkYXB0ZXJT
dGF0dXMsIFJlZlB0cjxBZGFwdGVyPiYmLCBjb25zdCBjaGFyKik+JiYgY2FsbGJhY2spCit2b2lk
IEluc3RhbmNlOjpyZXF1ZXN0QWRhcHRlcihjb25zdCBXR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25z
JiBvcHRpb25zLCBXVEY6OkZ1bmN0aW9uPHZvaWQoV0dQVVJlcXVlc3RBZGFwdGVyU3RhdHVzLCBS
ZWZQdHI8QWRhcHRlcj4mJiwgY29uc3QgY2hhciopPiYmIGNhbGxiYWNrKQogewogI2lmIFBMQVRG
T1JNKE1BQykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgTlNBcnJheTxpZDxNVExEZXZp
Y2U+PiAqZGV2aWNlcyA9IE1UTENvcHlBbGxEZXZpY2VzKCk7CkBAIC0xMjAsMTYgKzEyMCwxNiBA
QCB2b2lkIEluc3RhbmNlOjpyZXF1ZXN0QWRhcHRlcihjb25zdCBXR1BVUmVxdWVzdEFkYXB0ZXJP
cHRpb25zKiBvcHRpb25zLCBXVEY6OkZ1bgogICAgICAgICBbZGV2aWNlcyBhZGRPYmplY3Q6ZGV2
aWNlXTsKICNlbmRpZgogCi0gICAgLy8gRklYTUU6IERlYWwgd2l0aCBvcHRpb25zLT5jb21wYXRp
YmxlU3VyZmFjZS4KKyAgICAvLyBGSVhNRTogRGVhbCB3aXRoIG9wdGlvbnMuY29tcGF0aWJsZVN1
cmZhY2UuCiAKLSAgICBhdXRvIHNvcnRlZERldmljZXMgPSBXZWJHUFU6OnNvcnRlZERldmljZXMo
ZGV2aWNlcywgb3B0aW9ucy0+cG93ZXJQcmVmZXJlbmNlKTsKKyAgICBhdXRvIHNvcnRlZERldmlj
ZXMgPSBXZWJHUFU6OnNvcnRlZERldmljZXMoZGV2aWNlcywgb3B0aW9ucy5wb3dlclByZWZlcmVu
Y2UpOwogCi0gICAgaWYgKG9wdGlvbnMtPm5leHRJbkNoYWluKSB7CisgICAgaWYgKG9wdGlvbnMu
bmV4dEluQ2hhaW4pIHsKICAgICAgICAgY2FsbGJhY2soV0dQVVJlcXVlc3RBZGFwdGVyU3RhdHVz
X0Vycm9yLCBudWxscHRyLCAiVW5rbm93biBkZXNjcmlwdG9yIHR5cGUiKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIGlmIChvcHRpb25zLT5mb3JjZUZhbGxiYWNrQWRhcHRlcikgewor
ICAgIGlmIChvcHRpb25zLmZvcmNlRmFsbGJhY2tBZGFwdGVyKSB7CiAgICAgICAgIGNhbGxiYWNr
KFdHUFVSZXF1ZXN0QWRhcHRlclN0YXR1c19VbmF2YWlsYWJsZSwgbnVsbHB0ciwgIk5vIGFkYXB0
ZXJzIHByZXNlbnQiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE2MSw3ICsxNjEsNyBA
QCB2b2lkIHdncHVJbnN0YW5jZVJlbGVhc2UoV0dQVUluc3RhbmNlIGluc3RhbmNlKQogCiBXR1BV
SW5zdGFuY2Ugd2dwdUNyZWF0ZUluc3RhbmNlKGNvbnN0IFdHUFVJbnN0YW5jZURlc2NyaXB0b3Iq
IGRlc2NyaXB0b3IpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBXZWJHUFU6Okluc3RhbmNlOjpjcmVh
dGUoZGVzY3JpcHRvcik7CisgICAgYXV0byByZXN1bHQgPSBXZWJHUFU6Okluc3RhbmNlOjpjcmVh
dGUoKmRlc2NyaXB0b3IpOwogICAgIHJldHVybiByZXN1bHQgPyBuZXcgV0dQVUluc3RhbmNlSW1w
bCB7IHJlc3VsdC5yZWxlYXNlTm9uTnVsbCgpIH0gOiBudWxscHRyOwogfQogCkBAIC00MTYsNyAr
NDE2LDcgQEAgV0dQVVByb2Mgd2dwdUdldFByb2NBZGRyZXNzKFdHUFVEZXZpY2UsIGNvbnN0IGNo
YXIqIHByb2NOYW1lKQogCiBXR1BVU3VyZmFjZSB3Z3B1SW5zdGFuY2VDcmVhdGVTdXJmYWNlKFdH
UFVJbnN0YW5jZSBpbnN0YW5jZSwgY29uc3QgV0dQVVN1cmZhY2VEZXNjcmlwdG9yKiBkZXNjcmlw
dG9yKQogewotICAgIGF1dG8gcmVzdWx0ID0gaW5zdGFuY2UtPmluc3RhbmNlLT5jcmVhdGVTdXJm
YWNlKGRlc2NyaXB0b3IpOworICAgIGF1dG8gcmVzdWx0ID0gaW5zdGFuY2UtPmluc3RhbmNlLT5j
cmVhdGVTdXJmYWNlKCpkZXNjcmlwdG9yKTsKICAgICByZXR1cm4gcmVzdWx0ID8gbmV3IFdHUFVT
dXJmYWNlSW1wbCB7IHJlc3VsdC5yZWxlYXNlTm9uTnVsbCgpIH0gOiBudWxscHRyOwogfQogCkBA
IC00MjcsMTQgKzQyNywxNCBAQCB2b2lkIHdncHVJbnN0YW5jZVByb2Nlc3NFdmVudHMoV0dQVUlu
c3RhbmNlIGluc3RhbmNlKQogCiB2b2lkIHdncHVJbnN0YW5jZVJlcXVlc3RBZGFwdGVyKFdHUFVJ
bnN0YW5jZSBpbnN0YW5jZSwgY29uc3QgV0dQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucyogb3B0aW9u
cywgV0dQVVJlcXVlc3RBZGFwdGVyQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQqIHVzZXJkYXRhKQog
ewotICAgIGluc3RhbmNlLT5pbnN0YW5jZS0+cmVxdWVzdEFkYXB0ZXIob3B0aW9ucywgW2NhbGxi
YWNrLCB1c2VyZGF0YV0gKFdHUFVSZXF1ZXN0QWRhcHRlclN0YXR1cyBzdGF0dXMsIFJlZlB0cjxX
ZWJHUFU6OkFkYXB0ZXI+JiYgYWRhcHRlciwgY29uc3QgY2hhciogbWVzc2FnZSkgeworICAgIGlu
c3RhbmNlLT5pbnN0YW5jZS0+cmVxdWVzdEFkYXB0ZXIoKm9wdGlvbnMsIFtjYWxsYmFjaywgdXNl
cmRhdGFdIChXR1BVUmVxdWVzdEFkYXB0ZXJTdGF0dXMgc3RhdHVzLCBSZWZQdHI8V2ViR1BVOjpB
ZGFwdGVyPiYmIGFkYXB0ZXIsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpIHsKICAgICAgICAgY2FsbGJh
Y2soc3RhdHVzLCBhZGFwdGVyID8gbmV3IFdHUFVBZGFwdGVySW1wbCB7IGFkYXB0ZXIucmVsZWFz
ZU5vbk51bGwoKSB9IDogbnVsbHB0ciwgbWVzc2FnZSwgdXNlcmRhdGEpOwogICAgIH0pOwogfQog
CiB2b2lkIHdncHVJbnN0YW5jZVJlcXVlc3RBZGFwdGVyV2l0aEJsb2NrKFdHUFVJbnN0YW5jZSBp
bnN0YW5jZSwgV0dQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucyBjb25zdCAqIG9wdGlvbnMsIFdHUFVS
ZXF1ZXN0QWRhcHRlckJsb2NrQ2FsbGJhY2sgY2FsbGJhY2spCiB7Ci0gICAgaW5zdGFuY2UtPmlu
c3RhbmNlLT5yZXF1ZXN0QWRhcHRlcihvcHRpb25zLCBbY2FsbGJhY2tdIChXR1BVUmVxdWVzdEFk
YXB0ZXJTdGF0dXMgc3RhdHVzLCBSZWZQdHI8V2ViR1BVOjpBZGFwdGVyPiYmIGFkYXB0ZXIsIGNv
bnN0IGNoYXIqIG1lc3NhZ2UpIHsKKyAgICBpbnN0YW5jZS0+aW5zdGFuY2UtPnJlcXVlc3RBZGFw
dGVyKCpvcHRpb25zLCBbY2FsbGJhY2tdIChXR1BVUmVxdWVzdEFkYXB0ZXJTdGF0dXMgc3RhdHVz
LCBSZWZQdHI8V2ViR1BVOjpBZGFwdGVyPiYmIGFkYXB0ZXIsIGNvbnN0IGNoYXIqIG1lc3NhZ2Up
IHsKICAgICAgICAgY2FsbGJhY2soc3RhdHVzLCBhZGFwdGVyID8gbmV3IFdHUFVBZGFwdGVySW1w
bCB7IGFkYXB0ZXIucmVsZWFzZU5vbk51bGwoKSB9IDogbnVsbHB0ciwgbWVzc2FnZSk7CiAgICAg
fSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9QaXBlbGluZUxheW91dC5t
bSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1BpcGVsaW5lTGF5b3V0Lm1tCmluZGV4IDZkNjU1MjYx
MjNhNmJlZTM3YmNjNDg0ZjczODIwOGI1YjA2NTQ1M2UuLmFmZTg0MzViOTM1N2Y3OTM4MjZkZDg0
OTM4ZWM3MTNjNmQ4OWQxMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1BpcGVs
aW5lTGF5b3V0Lm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1BpcGVsaW5lTGF5b3V0Lm1t
CkBAIC0zMSwxNSArMzEsMTUgQEAKIAogbmFtZXNwYWNlIFdlYkdQVSB7CiAKLVJlZlB0cjxQaXBl
bGluZUxheW91dD4gRGV2aWNlOjpjcmVhdGVQaXBlbGluZUxheW91dChjb25zdCBXR1BVUGlwZWxp
bmVMYXlvdXREZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQorUmVmUHRyPFBpcGVsaW5lTGF5b3V0PiBE
ZXZpY2U6OmNyZWF0ZVBpcGVsaW5lTGF5b3V0KGNvbnN0IFdHUFVQaXBlbGluZUxheW91dERlc2Ny
aXB0b3ImIGRlc2NyaXB0b3IpCiB7Ci0gICAgaWYgKGRlc2NyaXB0b3ItPm5leHRJbkNoYWluKQor
ICAgIGlmIChkZXNjcmlwdG9yLm5leHRJbkNoYWluKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAogICAgIFZlY3RvcjxSZWY8QmluZEdyb3VwTGF5b3V0Pj4gYmluZEdyb3VwTGF5b3V0czsKLSAg
ICBiaW5kR3JvdXBMYXlvdXRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZGVzY3JpcHRvci0+Ymlu
ZEdyb3VwTGF5b3V0Q291bnQpOwotICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBkZXNjcmlw
dG9yLT5iaW5kR3JvdXBMYXlvdXRDb3VudDsgKytpKSB7Ci0gICAgICAgIGNvbnN0IGF1dG8qIGJp
bmRHcm91cExheW91dCA9IGRlc2NyaXB0b3ItPmJpbmRHcm91cExheW91dHNbaV07CisgICAgYmlu
ZEdyb3VwTGF5b3V0cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGRlc2NyaXB0b3IuYmluZEdyb3Vw
TGF5b3V0Q291bnQpOworICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBkZXNjcmlwdG9yLmJp
bmRHcm91cExheW91dENvdW50OyArK2kpIHsKKyAgICAgICAgY29uc3QgYXV0byogYmluZEdyb3Vw
TGF5b3V0ID0gZGVzY3JpcHRvci5iaW5kR3JvdXBMYXlvdXRzW2ldOwogICAgICAgICBiaW5kR3Jv
dXBMYXlvdXRzLnVuY2hlY2tlZEFwcGVuZChiaW5kR3JvdXBMYXlvdXQtPmJpbmRHcm91cExheW91
dCk7CiAgICAgfQogICAgIHJldHVybiBQaXBlbGluZUxheW91dDo6Y3JlYXRlKFdURk1vdmUoYmlu
ZEdyb3VwTGF5b3V0cykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvUXVlcnlT
ZXQubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9RdWVyeVNldC5tbQppbmRleCBhODA2M2I2MDg0
ZmVjOGQyOTE0ZWM3MThlZDA1MzA5NTBjZWYxYjUyLi4zZWMxZTlmNmJkMzYzNTUzYmMxOTEwZGYw
ZGVlMjgxNDY4ZDZmYzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9RdWVyeVNl
dC5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9RdWVyeVNldC5tbQpAQCAtMzAsNyArMzAs
NyBAQAogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIAotUmVmUHRyPFF1ZXJ5U2V0PiBEZXZpY2U6OmNy
ZWF0ZVF1ZXJ5U2V0KGNvbnN0IFdHUFVRdWVyeVNldERlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCitS
ZWZQdHI8UXVlcnlTZXQ+IERldmljZTo6Y3JlYXRlUXVlcnlTZXQoY29uc3QgV0dQVVF1ZXJ5U2V0
RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7
CiAgICAgcmV0dXJuIFF1ZXJ5U2V0OjpjcmVhdGUobmlsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL1F1ZXVlLmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9RdWV1ZS5oCmluZGV4
IDNmZjk3MzdhYmVjZDhiODEzYTFkZjlkODUxZWMyZTRmZTg0ZjRhYjEuLmE1OTVhOGZlYTA5MDU2
Zjc4OWU2OGI1YThlMGU3YTFlNWY1NTMzNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL1F1ZXVlLmgKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUXVldWUuaApAQCAtNDksNyAr
NDksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBvblN1Ym1pdHRlZFdvcmtEb25lKHVpbnQ2NF90IHNp
Z25hbFZhbHVlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoV0dQVVF1ZXVlV29ya0RvbmVTdGF0dXMpPiYm
IGNhbGxiYWNrKTsKICAgICB2b2lkIHN1Ym1pdChWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBl
cjxjb25zdCBDb21tYW5kQnVmZmVyPj4mJiBjb21tYW5kcyk7CiAgICAgdm9pZCB3cml0ZUJ1ZmZl
cihjb25zdCBCdWZmZXImLCB1aW50NjRfdCBidWZmZXJPZmZzZXQsIGNvbnN0IHZvaWQqIGRhdGEs
IHNpemVfdCk7Ci0gICAgdm9pZCB3cml0ZVRleHR1cmUoY29uc3QgV0dQVUltYWdlQ29weVRleHR1
cmUqIGRlc3RpbmF0aW9uLCBjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgZGF0YVNpemUsIGNvbnN0
IFdHUFVUZXh0dXJlRGF0YUxheW91dCosIGNvbnN0IFdHUFVFeHRlbnQzRCogd3JpdGVTaXplKTsK
KyAgICB2b2lkIHdyaXRlVGV4dHVyZShjb25zdCBXR1BVSW1hZ2VDb3B5VGV4dHVyZSYgZGVzdGlu
YXRpb24sIGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBkYXRhU2l6ZSwgY29uc3QgV0dQVVRleHR1
cmVEYXRhTGF5b3V0JiwgY29uc3QgV0dQVUV4dGVudDNEJiB3cml0ZVNpemUpOwogICAgIHZvaWQg
c2V0TGFiZWwoY29uc3QgY2hhciopOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkdQVS9XZWJHUFUvUXVldWUubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9RdWV1ZS5tbQppbmRl
eCA3NGYzNTZiN2E2MmUyZmQzMDhkOWRlNzZmZDdiMWY4ZDVlYjhjOGE0Li5jZmQ5Y2IxMmMwNTIw
NzJkNWM2Mzc5OGZmMTJkMDc3NmI0OGQyNzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9RdWV1ZS5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9RdWV1ZS5tbQpAQCAtNTcs
NyArNTcsNyBAQCB2b2lkIFF1ZXVlOjp3cml0ZUJ1ZmZlcihjb25zdCBCdWZmZXImIGJ1ZmZlciwg
dWludDY0X3QgYnVmZmVyT2Zmc2V0LCBjb25zdCB2b2lkKgogICAgIFVOVVNFRF9QQVJBTShzaXpl
KTsKIH0KIAotdm9pZCBRdWV1ZTo6d3JpdGVUZXh0dXJlKGNvbnN0IFdHUFVJbWFnZUNvcHlUZXh0
dXJlKiBkZXN0aW5hdGlvbiwgY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGRhdGFTaXplLCBjb25z
dCBXR1BVVGV4dHVyZURhdGFMYXlvdXQqIGRhdGFMYXlvdXQsIGNvbnN0IFdHUFVFeHRlbnQzRCog
d3JpdGVTaXplKQordm9pZCBRdWV1ZTo6d3JpdGVUZXh0dXJlKGNvbnN0IFdHUFVJbWFnZUNvcHlU
ZXh0dXJlJiBkZXN0aW5hdGlvbiwgY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGRhdGFTaXplLCBj
b25zdCBXR1BVVGV4dHVyZURhdGFMYXlvdXQmIGRhdGFMYXlvdXQsIGNvbnN0IFdHUFVFeHRlbnQz
RCYgd3JpdGVTaXplKQogewogICAgIFVOVVNFRF9QQVJBTShkZXN0aW5hdGlvbik7CiAgICAgVU5V
U0VEX1BBUkFNKGRhdGEpOwpAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgd2dwdVF1ZXVlV3JpdGVC
dWZmZXIoV0dQVVF1ZXVlIHF1ZXVlLCBXR1BVQnVmZmVyIGJ1ZmZlciwgdWludDY0X3QgYnVmZmVy
T2ZmCiAKIHZvaWQgd2dwdVF1ZXVlV3JpdGVUZXh0dXJlKFdHUFVRdWV1ZSBxdWV1ZSwgY29uc3Qg
V0dQVUltYWdlQ29weVRleHR1cmUqIGRlc3RpbmF0aW9uLCBjb25zdCB2b2lkKiBkYXRhLCBzaXpl
X3QgZGF0YVNpemUsIGNvbnN0IFdHUFVUZXh0dXJlRGF0YUxheW91dCogZGF0YUxheW91dCwgY29u
c3QgV0dQVUV4dGVudDNEKiB3cml0ZVNpemUpCiB7Ci0gICAgcXVldWUtPnF1ZXVlLT53cml0ZVRl
eHR1cmUoZGVzdGluYXRpb24sIGRhdGEsIGRhdGFTaXplLCBkYXRhTGF5b3V0LCB3cml0ZVNpemUp
OworICAgIHF1ZXVlLT5xdWV1ZS0+d3JpdGVUZXh0dXJlKCpkZXN0aW5hdGlvbiwgZGF0YSwgZGF0
YVNpemUsICpkYXRhTGF5b3V0LCAqd3JpdGVTaXplKTsKIH0KIAogdm9pZCB3Z3B1UXVldWVTZXRM
YWJlbChXR1BVUXVldWUgcXVldWUsIGNvbnN0IGNoYXIqIGxhYmVsKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyQnVuZGxlRW5jb2Rlci5oIGIvU291cmNlL1dlYkdQVS9X
ZWJHUFUvUmVuZGVyQnVuZGxlRW5jb2Rlci5oCmluZGV4IDk1MmVmNjJkYmNjYWI4YjFhY2RmZjEy
ZDA0ZTc5OTMyMzIyN2UzY2EuLmU2ZmY4NDhmMGE3ZTlmODIwOThmNTVjMDZiNzc4YjU5ODI4NDkz
MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlckJ1bmRsZUVuY29kZXIu
aAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJCdW5kbGVFbmNvZGVyLmgKQEAgLTUx
LDcgKzUxLDcgQEAgcHVibGljOgogICAgIHZvaWQgZHJhd0luZGV4ZWQodWludDMyX3QgaW5kZXhD
b3VudCwgdWludDMyX3QgaW5zdGFuY2VDb3VudCwgdWludDMyX3QgZmlyc3RJbmRleCwgaW50MzJf
dCBiYXNlVmVydGV4LCB1aW50MzJfdCBmaXJzdEluc3RhbmNlKTsKICAgICB2b2lkIGRyYXdJbmRl
eGVkSW5kaXJlY3QoY29uc3QgQnVmZmVyJiBpbmRpcmVjdEJ1ZmZlciwgdWludDY0X3QgaW5kaXJl
Y3RPZmZzZXQpOwogICAgIHZvaWQgZHJhd0luZGlyZWN0KGNvbnN0IEJ1ZmZlciYgaW5kaXJlY3RC
dWZmZXIsIHVpbnQ2NF90IGluZGlyZWN0T2Zmc2V0KTsKLSAgICBSZWZQdHI8UmVuZGVyQnVuZGxl
PiBmaW5pc2goY29uc3QgV0dQVVJlbmRlckJ1bmRsZURlc2NyaXB0b3IqKTsKKyAgICBSZWZQdHI8
UmVuZGVyQnVuZGxlPiBmaW5pc2goY29uc3QgV0dQVVJlbmRlckJ1bmRsZURlc2NyaXB0b3ImKTsK
ICAgICB2b2lkIGluc2VydERlYnVnTWFya2VyKGNvbnN0IGNoYXIqIG1hcmtlckxhYmVsKTsKICAg
ICB2b2lkIHBvcERlYnVnR3JvdXAoKTsKICAgICB2b2lkIHB1c2hEZWJ1Z0dyb3VwKGNvbnN0IGNo
YXIqIGdyb3VwTGFiZWwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVy
QnVuZGxlRW5jb2Rlci5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlckJ1bmRsZUVuY29k
ZXIubW0KaW5kZXggZDlkOTNmMjMzMGJmODU2NWY0OWNlNGRkZDEzMGYwY2NiNTUyNzBlYy4uYTQ0
Y2EwZDAxMmFjZmUzMWU4NWI3ZGI4OGM3ZmRmOGZiNDQyYTNiNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkdQVS9XZWJHUFUvUmVuZGVyQnVuZGxlRW5jb2Rlci5tbQorKysgYi9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9SZW5kZXJCdW5kbGVFbmNvZGVyLm1tCkBAIC0zNCw3ICszNCw3IEBACiAKIG5hbWVz
cGFjZSBXZWJHUFUgewogCi1SZWZQdHI8UmVuZGVyQnVuZGxlRW5jb2Rlcj4gRGV2aWNlOjpjcmVh
dGVSZW5kZXJCdW5kbGVFbmNvZGVyKGNvbnN0IFdHUFVSZW5kZXJCdW5kbGVFbmNvZGVyRGVzY3Jp
cHRvciogZGVzY3JpcHRvcikKK1JlZlB0cjxSZW5kZXJCdW5kbGVFbmNvZGVyPiBEZXZpY2U6OmNy
ZWF0ZVJlbmRlckJ1bmRsZUVuY29kZXIoY29uc3QgV0dQVVJlbmRlckJ1bmRsZUVuY29kZXJEZXNj
cmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKICAg
ICByZXR1cm4gUmVuZGVyQnVuZGxlRW5jb2Rlcjo6Y3JlYXRlKG5pbCk7CkBAIC03Niw3ICs3Niw3
IEBAIHZvaWQgUmVuZGVyQnVuZGxlRW5jb2Rlcjo6ZHJhd0luZGlyZWN0KGNvbnN0IEJ1ZmZlciYg
aW5kaXJlY3RCdWZmZXIsIHVpbnQ2NF90IGluCiAgICAgVU5VU0VEX1BBUkFNKGluZGlyZWN0T2Zm
c2V0KTsKIH0KIAotUmVmUHRyPFJlbmRlckJ1bmRsZT4gUmVuZGVyQnVuZGxlRW5jb2Rlcjo6Zmlu
aXNoKGNvbnN0IFdHUFVSZW5kZXJCdW5kbGVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQorUmVmUHRy
PFJlbmRlckJ1bmRsZT4gUmVuZGVyQnVuZGxlRW5jb2Rlcjo6ZmluaXNoKGNvbnN0IFdHUFVSZW5k
ZXJCdW5kbGVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIFVOVVNFRF9QQVJBTShkZXNj
cmlwdG9yKTsKICAgICByZXR1cm4gUmVuZGVyQnVuZGxlOjpjcmVhdGUobmlsKTsKQEAgLTE2MCw3
ICsxNjAsNyBAQCB2b2lkIHdncHVSZW5kZXJCdW5kbGVFbmNvZGVyRHJhd0luZGlyZWN0KFdHUFVS
ZW5kZXJCdW5kbGVFbmNvZGVyIHJlbmRlckJ1bmRsZUVuYwogCiBXR1BVUmVuZGVyQnVuZGxlIHdn
cHVSZW5kZXJCdW5kbGVFbmNvZGVyRmluaXNoKFdHUFVSZW5kZXJCdW5kbGVFbmNvZGVyIHJlbmRl
ckJ1bmRsZUVuY29kZXIsIGNvbnN0IFdHUFVSZW5kZXJCdW5kbGVEZXNjcmlwdG9yKiBkZXNjcmlw
dG9yKQogewotICAgIGF1dG8gcmVzdWx0ID0gcmVuZGVyQnVuZGxlRW5jb2Rlci0+cmVuZGVyQnVu
ZGxlRW5jb2Rlci0+ZmluaXNoKGRlc2NyaXB0b3IpOworICAgIGF1dG8gcmVzdWx0ID0gcmVuZGVy
QnVuZGxlRW5jb2Rlci0+cmVuZGVyQnVuZGxlRW5jb2Rlci0+ZmluaXNoKCpkZXNjcmlwdG9yKTsK
ICAgICByZXR1cm4gcmVzdWx0ID8gbmV3IFdHUFVSZW5kZXJCdW5kbGVJbXBsIHsgcmVzdWx0LnJl
bGVhc2VOb25OdWxsKCkgfSA6IG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL1JlbmRlclBhc3NFbmNvZGVyLmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5k
ZXJQYXNzRW5jb2Rlci5oCmluZGV4IDA3ZGM4M2I3NDkyZDkyNmMxMjRkMTM5MGJlYzY0ZTU4N2Rj
Mjk2ZTguLjVjYmQwZTc1N2ZjOGEzZmExMjcxYzZmZTNjNTQ2YjFkYjU5ZTEwOTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlclBhc3NFbmNvZGVyLmgKKysrIGIvU291cmNl
L1dlYkdQVS9XZWJHUFUvUmVuZGVyUGFzc0VuY29kZXIuaApAQCAtNjMsNyArNjMsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBwb3BEZWJ1Z0dyb3VwKCk7CiAgICAgdm9pZCBwdXNoRGVidWdHcm91cChj
b25zdCBjaGFyKiBncm91cExhYmVsKTsKICAgICB2b2lkIHNldEJpbmRHcm91cCh1aW50MzJfdCBn
cm91cEluZGV4LCBjb25zdCBCaW5kR3JvdXAmLCB1aW50MzJfdCBkeW5hbWljT2Zmc2V0Q291bnQs
IGNvbnN0IHVpbnQzMl90KiBkeW5hbWljT2Zmc2V0cyk7Ci0gICAgdm9pZCBzZXRCbGVuZENvbnN0
YW50KGNvbnN0IFdHUFVDb2xvciopOworICAgIHZvaWQgc2V0QmxlbmRDb25zdGFudChjb25zdCBX
R1BVQ29sb3ImKTsKICAgICB2b2lkIHNldEluZGV4QnVmZmVyKGNvbnN0IEJ1ZmZlciYsIFdHUFVJ
bmRleEZvcm1hdCwgdWludDY0X3Qgb2Zmc2V0LCB1aW50NjRfdCBzaXplKTsKICAgICB2b2lkIHNl
dFBpcGVsaW5lKGNvbnN0IFJlbmRlclBpcGVsaW5lJik7CiAgICAgdm9pZCBzZXRTY2lzc29yUmVj
dCh1aW50MzJfdCB4LCB1aW50MzJfdCB5LCB1aW50MzJfdCB3aWR0aCwgdWludDMyX3QgaGVpZ2h0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlclBhc3NFbmNvZGVyLm1t
IGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyUGFzc0VuY29kZXIubW0KaW5kZXggMTFmMjU1
OGM5MmMzMjFmODM0M2VkODA5ZTVlNzM2M2UyMTk4MDhmNi4uNTBmZmE3ZjA5NjVhMDY1N2FiYTdj
M2Y3ZDhhZWU5ZDE1OGUxMjVhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVu
ZGVyUGFzc0VuY29kZXIubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyUGFzc0Vu
Y29kZXIubW0KQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lkIFJlbmRlclBhc3NFbmNvZGVyOjpzZXRC
aW5kR3JvdXAodWludDMyX3QgZ3JvdXBJbmRleCwgY29uc3QgQmluZEdyb3VwJiBncm91cAogICAg
IFVOVVNFRF9QQVJBTShkeW5hbWljT2Zmc2V0cyk7CiB9CiAKLXZvaWQgUmVuZGVyUGFzc0VuY29k
ZXI6OnNldEJsZW5kQ29uc3RhbnQoY29uc3QgV0dQVUNvbG9yKiBjb2xvcikKK3ZvaWQgUmVuZGVy
UGFzc0VuY29kZXI6OnNldEJsZW5kQ29uc3RhbnQoY29uc3QgV0dQVUNvbG9yJiBjb2xvcikKIHsK
ICAgICBVTlVTRURfUEFSQU0oY29sb3IpOwogfQpAQCAtMjYwLDcgKzI2MCw3IEBAIHZvaWQgd2dw
dVJlbmRlclBhc3NFbmNvZGVyU2V0QmluZEdyb3VwKFdHUFVSZW5kZXJQYXNzRW5jb2RlciByZW5k
ZXJQYXNzRW5jb2RlciwKIAogdm9pZCB3Z3B1UmVuZGVyUGFzc0VuY29kZXJTZXRCbGVuZENvbnN0
YW50KFdHUFVSZW5kZXJQYXNzRW5jb2RlciByZW5kZXJQYXNzRW5jb2RlciwgY29uc3QgV0dQVUNv
bG9yKiBjb2xvcikKIHsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci0+cmVuZGVyUGFzc0VuY29kZXIt
PnNldEJsZW5kQ29uc3RhbnQoY29sb3IpOworICAgIHJlbmRlclBhc3NFbmNvZGVyLT5yZW5kZXJQ
YXNzRW5jb2Rlci0+c2V0QmxlbmRDb25zdGFudCgqY29sb3IpOwogfQogCiB2b2lkIHdncHVSZW5k
ZXJQYXNzRW5jb2RlclNldEluZGV4QnVmZmVyKFdHUFVSZW5kZXJQYXNzRW5jb2RlciByZW5kZXJQ
YXNzRW5jb2RlciwgV0dQVUJ1ZmZlciBidWZmZXIsIFdHUFVJbmRleEZvcm1hdCBmb3JtYXQsIHVp
bnQ2NF90IG9mZnNldCwgdWludDY0X3Qgc2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL1JlbmRlclBpcGVsaW5lLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyUGlw
ZWxpbmUubW0KaW5kZXggOTJkNDkxZTE3OGZjNjc5ZWExYmI2N2UxNjM4ZGQ0NmQyMTNiNmIwZC4u
YzZjM2RhN2E5MWIwZTFhM2FhNmYzNjQ5NGI5YTc2YjExNGI4YTNlYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyUGlwZWxpbmUubW0KKysrIGIvU291cmNlL1dlYkdQVS9X
ZWJHUFUvUmVuZGVyUGlwZWxpbmUubW0KQEAgLTMxLDEzICszMSwxMyBAQAogCiBuYW1lc3BhY2Ug
V2ViR1BVIHsKIAotUmVmUHRyPFJlbmRlclBpcGVsaW5lPiBEZXZpY2U6OmNyZWF0ZVJlbmRlclBp
cGVsaW5lKGNvbnN0IFdHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCitS
ZWZQdHI8UmVuZGVyUGlwZWxpbmU+IERldmljZTo6Y3JlYXRlUmVuZGVyUGlwZWxpbmUoY29uc3Qg
V0dQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICBVTlVTRURf
UEFSQU0oZGVzY3JpcHRvcik7CiAgICAgcmV0dXJuIFJlbmRlclBpcGVsaW5lOjpjcmVhdGUobmls
KTsKIH0KIAotdm9pZCBEZXZpY2U6OmNyZWF0ZVJlbmRlclBpcGVsaW5lQXN5bmMoY29uc3QgV0dQ
VVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciogZGVzY3JpcHRvciwgV1RGOjpGdW5jdGlvbjx2b2lk
KFdHUFVDcmVhdGVQaXBlbGluZUFzeW5jU3RhdHVzLCBSZWZQdHI8UmVuZGVyUGlwZWxpbmU+JiYs
IGNvbnN0IGNoYXIqIG1lc3NhZ2UpPiYmIGNhbGxiYWNrKQordm9pZCBEZXZpY2U6OmNyZWF0ZVJl
bmRlclBpcGVsaW5lQXN5bmMoY29uc3QgV0dQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYgZGVz
Y3JpcHRvciwgV1RGOjpGdW5jdGlvbjx2b2lkKFdHUFVDcmVhdGVQaXBlbGluZUFzeW5jU3RhdHVz
LCBSZWZQdHI8UmVuZGVyUGlwZWxpbmU+JiYsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpPiYmIGNhbGxi
YWNrKQogewogICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKICAgICBVTlVTRURfUEFSQU0o
Y2FsbGJhY2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvU2FtcGxlci5tbSBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL1NhbXBsZXIubW0KaW5kZXggZGJhNmI5MWQ5ZjlmNTUwYzNl
ZDEwZDk5NjY4MjIzNDNiOTI2N2IyYi4uMGNjZTc5Y2QxOTViNGM0ZDBmMGUxYzg0ZmMyZTExYzVm
NTI2Y2VjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvU2FtcGxlci5tbQorKysg
Yi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9TYW1wbGVyLm1tCkBAIC0zMCw3ICszMCw3IEBACiAKIG5h
bWVzcGFjZSBXZWJHUFUgewogCi1SZWZQdHI8U2FtcGxlcj4gRGV2aWNlOjpjcmVhdGVTYW1wbGVy
KGNvbnN0IFdHUFVTYW1wbGVyRGVzY3JpcHRvciogZGVzY3JpcHRvcikKK1JlZlB0cjxTYW1wbGVy
PiBEZXZpY2U6OmNyZWF0ZVNhbXBsZXIoY29uc3QgV0dQVVNhbXBsZXJEZXNjcmlwdG9yJiBkZXNj
cmlwdG9yKQogewogICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKICAgICByZXR1cm4gU2Ft
cGxlcjo6Y3JlYXRlKG5pbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9TaGFk
ZXJNb2R1bGUuaCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1NoYWRlck1vZHVsZS5oCmluZGV4IDEw
OTlmYWM2NTdmNmY4NTFkMjBhYjU2YzdjMDk0MjFkODljNjIxNDcuLjc5OGYwMjk0NWU1OWM5OWUy
Nzg1MmJjODAwMTk0NGZjYmM2OGM5YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L1NoYWRlck1vZHVsZS5oCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1NoYWRlck1vZHVsZS5o
CkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIAogICAgIH5TaGFkZXJNb2R1bGUoKTsKIAotICAg
IHZvaWQgZ2V0Q29tcGlsYXRpb25JbmZvKFdURjo6RnVuY3Rpb248dm9pZChXR1BVQ29tcGlsYXRp
b25JbmZvUmVxdWVzdFN0YXR1cywgY29uc3QgV0dQVUNvbXBpbGF0aW9uSW5mbyopPiYmIGNhbGxi
YWNrKTsKKyAgICB2b2lkIGdldENvbXBpbGF0aW9uSW5mbyhXVEY6OkZ1bmN0aW9uPHZvaWQoV0dQ
VUNvbXBpbGF0aW9uSW5mb1JlcXVlc3RTdGF0dXMsIGNvbnN0IFdHUFVDb21waWxhdGlvbkluZm8m
KT4mJiBjYWxsYmFjayk7CiAgICAgdm9pZCBzZXRMYWJlbChjb25zdCBjaGFyKik7CiAKICAgICBz
dGF0aWMgV0dTTDo6UGlwZWxpbmVMYXlvdXQgY29udmVydFBpcGVsaW5lTGF5b3V0KGNvbnN0IFBp
cGVsaW5lTGF5b3V0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9TaGFkZXJN
b2R1bGUubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9TaGFkZXJNb2R1bGUubW0KaW5kZXggMTdk
YmQ4ODBhZjhjMTIwYzcxYjE0MzU0M2I1Y2IwNTI2NDAxZTQxMi4uNjI2NmMwYzliZTk1NWI2ZGVi
ZWEyMzU5ZDgzYjBmODNhZDM3YWZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUv
U2hhZGVyTW9kdWxlLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1NoYWRlck1vZHVsZS5t
bQpAQCAtMzYsMTIgKzM2LDEyIEBAIHN0cnVjdCBTaGFkZXJNb2R1bGVQYXJhbWV0ZXJzIHsKICAg
ICBjb25zdCBXR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvckhpbnRzKiBoaW50czsKIH07CiAKLXN0
YXRpYyBzdGQ6Om9wdGlvbmFsPFNoYWRlck1vZHVsZVBhcmFtZXRlcnM+IGZpbmRTaGFkZXJNb2R1
bGVQYXJhbWV0ZXJzKGNvbnN0IFdHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yKiBkZXNjcmlwdG9y
KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2hhZGVyTW9kdWxlUGFyYW1ldGVycz4gZmluZFNoYWRl
ck1vZHVsZVBhcmFtZXRlcnMoY29uc3QgV0dQVVNoYWRlck1vZHVsZURlc2NyaXB0b3ImIGRlc2Ny
aXB0b3IpCiB7CiAgICAgY29uc3QgV0dQVVNoYWRlck1vZHVsZVdHU0xEZXNjcmlwdG9yKiB3Z3Ns
ID0gbnVsbHB0cjsKICAgICBjb25zdCBXR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvckhpbnRzKiBo
aW50cyA9IG51bGxwdHI7CiAKLSAgICBmb3IgKGNvbnN0IFdHUFVDaGFpbmVkU3RydWN0KiBwdHIg
PSBkZXNjcmlwdG9yLT5uZXh0SW5DaGFpbjsgcHRyOyBwdHIgPSBwdHItPm5leHQpIHsKKyAgICBm
b3IgKGNvbnN0IFdHUFVDaGFpbmVkU3RydWN0KiBwdHIgPSBkZXNjcmlwdG9yLm5leHRJbkNoYWlu
OyBwdHI7IHB0ciA9IHB0ci0+bmV4dCkgewogICAgICAgICBhdXRvIHR5cGUgPSBwdHItPnNUeXBl
OwogCiAgICAgICAgIHN3aXRjaCAoc3RhdGljX2Nhc3Q8aW50Pih0eXBlKSkgewpAQCAtOTgsOSAr
OTgsOSBAQCBzdGF0aWMgUmVmUHRyPFNoYWRlck1vZHVsZT4gZWFybHlDb21waWxlU2hhZGVyTW9k
dWxlKGlkPE1UTERldmljZT4gZGV2aWNlLCBzdGQ6OgogICAgIHJldHVybiBTaGFkZXJNb2R1bGU6
OmNyZWF0ZShXVEZNb3ZlKGNoZWNrUmVzdWx0KSwgV1RGTW92ZShoaW50cyksIFdURk1vdmUocHJl
cGFyZVJlc3VsdC5lbnRyeVBvaW50cyksIGxpYnJhcnkpOwogfQogCi1SZWZQdHI8U2hhZGVyTW9k
dWxlPiBEZXZpY2U6OmNyZWF0ZVNoYWRlck1vZHVsZShjb25zdCBXR1BVU2hhZGVyTW9kdWxlRGVz
Y3JpcHRvciogZGVzY3JpcHRvcikKK1JlZlB0cjxTaGFkZXJNb2R1bGU+IERldmljZTo6Y3JlYXRl
U2hhZGVyTW9kdWxlKGNvbnN0IFdHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yJiBkZXNjcmlwdG9y
KQogewotICAgIGlmICghZGVzY3JpcHRvci0+bmV4dEluQ2hhaW4pCisgICAgaWYgKCFkZXNjcmlw
dG9yLm5leHRJbkNoYWluKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGF1dG8gc2hh
ZGVyTW9kdWxlUGFyYW1ldGVycyA9IGZpbmRTaGFkZXJNb2R1bGVQYXJhbWV0ZXJzKGRlc2NyaXB0
b3IpOwpAQCAtMTEwLDcgKzExMCw3IEBAIFJlZlB0cjxTaGFkZXJNb2R1bGU+IERldmljZTo6Y3Jl
YXRlU2hhZGVyTW9kdWxlKGNvbnN0IFdHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yCiAgICAgYXV0
byBjaGVja1Jlc3VsdCA9IFdHU0w6OnN0YXRpY0NoZWNrKFN0cmluZyhzaGFkZXJNb2R1bGVQYXJh
bWV0ZXJzLT53Z3NsLmNvZGUpLCBzdGQ6Om51bGxvcHQpOwogCiAgICAgaWYgKHN0ZDo6aG9sZHNf
YWx0ZXJuYXRpdmU8V0dTTDo6U3VjY2Vzc2Z1bENoZWNrPihjaGVja1Jlc3VsdCkgJiYgc2hhZGVy
TW9kdWxlUGFyYW1ldGVycy0+aGludHMgJiYgc2hhZGVyTW9kdWxlUGFyYW1ldGVycy0+aGludHMt
PmhpbnRzQ291bnQpIHsKLSAgICAgICAgaWYgKGF1dG8gcmVzdWx0ID0gZWFybHlDb21waWxlU2hh
ZGVyTW9kdWxlKG1fZGV2aWNlLCBXVEZNb3ZlKGNoZWNrUmVzdWx0KSwgKnNoYWRlck1vZHVsZVBh
cmFtZXRlcnMtPmhpbnRzLCBbTlNTdHJpbmcgc3RyaW5nV2l0aENTdHJpbmc6ZGVzY3JpcHRvci0+
bGFiZWwgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKSkKKyAgICAgICAgaWYgKGF1dG8g
cmVzdWx0ID0gZWFybHlDb21waWxlU2hhZGVyTW9kdWxlKG1fZGV2aWNlLCBXVEZNb3ZlKGNoZWNr
UmVzdWx0KSwgKnNoYWRlck1vZHVsZVBhcmFtZXRlcnMtPmhpbnRzLCBbTlNTdHJpbmcgc3RyaW5n
V2l0aENTdHJpbmc6ZGVzY3JpcHRvci5sYWJlbCBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGlu
Z10pKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKQEAgLTE4Miw3ICsxODIs
NyBAQCBzdGF0aWMgQ29tcGlsYXRpb25NZXNzYWdlRGF0YSBjb252ZXJ0TWVzc2FnZXMoY29uc3Qg
TWVzc2FnZXMmIG1lc3NhZ2VzMSwgY29uc3QgcwogICAgIHJldHVybiB7IFdURk1vdmUoZmxhdHRl
bmVkQ29tcGlsYXRpb25NZXNzYWdlcyksIFdURk1vdmUoZmxhdHRlbmVkTWVzc2FnZXMpIH07CiB9
CiAKLXZvaWQgU2hhZGVyTW9kdWxlOjpnZXRDb21waWxhdGlvbkluZm8oV1RGOjpGdW5jdGlvbjx2
b2lkKFdHUFVDb21waWxhdGlvbkluZm9SZXF1ZXN0U3RhdHVzLCBjb25zdCBXR1BVQ29tcGlsYXRp
b25JbmZvKik+JiYgY2FsbGJhY2spCit2b2lkIFNoYWRlck1vZHVsZTo6Z2V0Q29tcGlsYXRpb25J
bmZvKFdURjo6RnVuY3Rpb248dm9pZChXR1BVQ29tcGlsYXRpb25JbmZvUmVxdWVzdFN0YXR1cywg
Y29uc3QgV0dQVUNvbXBpbGF0aW9uSW5mbyYpPiYmIGNhbGxiYWNrKQogewogICAgIFdURjo6c3dp
dGNoT24obV9jaGVja1Jlc3VsdCwgWyZdIChjb25zdCBXR1NMOjpTdWNjZXNzZnVsQ2hlY2smIHN1
Y2Nlc3NmdWxDaGVjaykgewogICAgICAgICBhdXRvIGNvbXBpbGF0aW9uTWVzc2FnZURhdGEoY29u
dmVydE1lc3NhZ2VzKHsgc3VjY2Vzc2Z1bENoZWNrLndhcm5pbmdzLCBXR1BVQ29tcGlsYXRpb25N
ZXNzYWdlVHlwZV9XYXJuaW5nIH0pKTsKQEAgLTE5MSw3ICsxOTEsNyBAQCB2b2lkIFNoYWRlck1v
ZHVsZTo6Z2V0Q29tcGlsYXRpb25JbmZvKFdURjo6RnVuY3Rpb248dm9pZChXR1BVQ29tcGlsYXRp
b25JbmZvUmVxdQogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGNvbXBpbGF0aW9u
TWVzc2FnZURhdGEuY29tcGlsYXRpb25NZXNzYWdlcy5zaXplKCkpLAogICAgICAgICAgICAgY29t
cGlsYXRpb25NZXNzYWdlRGF0YS5jb21waWxhdGlvbk1lc3NhZ2VzLmRhdGEoKSwKICAgICAgICAg
fTsKLSAgICAgICAgY2FsbGJhY2soV0dQVUNvbXBpbGF0aW9uSW5mb1JlcXVlc3RTdGF0dXNfU3Vj
Y2VzcywgJmNvbXBpbGF0aW9uSW5mbyk7CisgICAgICAgIGNhbGxiYWNrKFdHUFVDb21waWxhdGlv
bkluZm9SZXF1ZXN0U3RhdHVzX1N1Y2Nlc3MsIGNvbXBpbGF0aW9uSW5mbyk7CiAgICAgfSwgWyZd
IChjb25zdCBXR1NMOjpGYWlsZWRDaGVjayYgZmFpbGVkQ2hlY2spIHsKICAgICAgICAgYXV0byBj
b21waWxhdGlvbk1lc3NhZ2VEYXRhKGNvbnZlcnRNZXNzYWdlcygKICAgICAgICAgICAgIHsgZmFp
bGVkQ2hlY2suZXJyb3JzLCBXR1BVQ29tcGlsYXRpb25NZXNzYWdlVHlwZV9FcnJvciB9LApAQCAt
MjAxLDcgKzIwMSw3IEBAIHZvaWQgU2hhZGVyTW9kdWxlOjpnZXRDb21waWxhdGlvbkluZm8oV1RG
OjpGdW5jdGlvbjx2b2lkKFdHUFVDb21waWxhdGlvbkluZm9SZXF1CiAgICAgICAgICAgICBzdGF0
aWNfY2FzdDx1aW50MzJfdD4oY29tcGlsYXRpb25NZXNzYWdlRGF0YS5jb21waWxhdGlvbk1lc3Nh
Z2VzLnNpemUoKSksCiAgICAgICAgICAgICBjb21waWxhdGlvbk1lc3NhZ2VEYXRhLmNvbXBpbGF0
aW9uTWVzc2FnZXMuZGF0YSgpLAogICAgICAgICB9OwotICAgICAgICBjYWxsYmFjayhXR1BVQ29t
cGlsYXRpb25JbmZvUmVxdWVzdFN0YXR1c19FcnJvciwgJmNvbXBpbGF0aW9uSW5mbyk7CisgICAg
ICAgIGNhbGxiYWNrKFdHUFVDb21waWxhdGlvbkluZm9SZXF1ZXN0U3RhdHVzX0Vycm9yLCBjb21w
aWxhdGlvbkluZm8pOwogICAgIH0pOwogfQogCkBAIC0yNTIsMTUgKzI1MiwxNSBAQCB2b2lkIHdn
cHVTaGFkZXJNb2R1bGVSZWxlYXNlKFdHUFVTaGFkZXJNb2R1bGUgc2hhZGVyTW9kdWxlKQogCiB2
b2lkIHdncHVTaGFkZXJNb2R1bGVHZXRDb21waWxhdGlvbkluZm8oV0dQVVNoYWRlck1vZHVsZSBz
aGFkZXJNb2R1bGUsIFdHUFVDb21waWxhdGlvbkluZm9DYWxsYmFjayBjYWxsYmFjaywgdm9pZCAq
IHVzZXJkYXRhKQogewotICAgIHNoYWRlck1vZHVsZS0+c2hhZGVyTW9kdWxlLT5nZXRDb21waWxh
dGlvbkluZm8oW2NhbGxiYWNrLCB1c2VyZGF0YV0gKFdHUFVDb21waWxhdGlvbkluZm9SZXF1ZXN0
U3RhdHVzIHN0YXR1cywgY29uc3QgV0dQVUNvbXBpbGF0aW9uSW5mbyogY29tcGlsYXRpb25JbmZv
KSB7Ci0gICAgICAgIGNhbGxiYWNrKHN0YXR1cywgY29tcGlsYXRpb25JbmZvLCB1c2VyZGF0YSk7
CisgICAgc2hhZGVyTW9kdWxlLT5zaGFkZXJNb2R1bGUtPmdldENvbXBpbGF0aW9uSW5mbyhbY2Fs
bGJhY2ssIHVzZXJkYXRhXSAoV0dQVUNvbXBpbGF0aW9uSW5mb1JlcXVlc3RTdGF0dXMgc3RhdHVz
LCBjb25zdCBXR1BVQ29tcGlsYXRpb25JbmZvJiBjb21waWxhdGlvbkluZm8pIHsKKyAgICAgICAg
Y2FsbGJhY2soc3RhdHVzLCAmY29tcGlsYXRpb25JbmZvLCB1c2VyZGF0YSk7CiAgICAgfSk7CiB9
CiAKIHZvaWQgd2dwdVNoYWRlck1vZHVsZUdldENvbXBpbGF0aW9uSW5mb1dpdGhCbG9jayhXR1BV
U2hhZGVyTW9kdWxlIHNoYWRlck1vZHVsZSwgV0dQVUNvbXBpbGF0aW9uSW5mb0Jsb2NrQ2FsbGJh
Y2sgY2FsbGJhY2spCiB7Ci0gICAgc2hhZGVyTW9kdWxlLT5zaGFkZXJNb2R1bGUtPmdldENvbXBp
bGF0aW9uSW5mbyhbY2FsbGJhY2tdIChXR1BVQ29tcGlsYXRpb25JbmZvUmVxdWVzdFN0YXR1cyBz
dGF0dXMsIGNvbnN0IFdHUFVDb21waWxhdGlvbkluZm8qIGNvbXBpbGF0aW9uSW5mbykgewotICAg
ICAgICBjYWxsYmFjayhzdGF0dXMsIGNvbXBpbGF0aW9uSW5mbyk7CisgICAgc2hhZGVyTW9kdWxl
LT5zaGFkZXJNb2R1bGUtPmdldENvbXBpbGF0aW9uSW5mbyhbY2FsbGJhY2tdIChXR1BVQ29tcGls
YXRpb25JbmZvUmVxdWVzdFN0YXR1cyBzdGF0dXMsIGNvbnN0IFdHUFVDb21waWxhdGlvbkluZm8m
IGNvbXBpbGF0aW9uSW5mbykgeworICAgICAgICBjYWxsYmFjayhzdGF0dXMsICZjb21waWxhdGlv
bkluZm8pOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9T
d2FwQ2hhaW4ubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Td2FwQ2hhaW4ubW0KaW5kZXggZmNk
YWQzZDEzMTVkOTI2ZDRlODNkZWQxODk1ODkwYzI2OTg1NTUzNC4uZGViZDdmNWU0MGI1ZDlmODk5
YzBlNjZiNDQ5NDIyNTg2Y2Y1OTk1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUv
U3dhcENoYWluLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1N3YXBDaGFpbi5tbQpAQCAt
MzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIAotUmVmUHRyPFN3YXBDaGFpbj4g
RGV2aWNlOjpjcmVhdGVTd2FwQ2hhaW4oY29uc3QgU3VyZmFjZSYgc3VyZmFjZSwgY29uc3QgV0dQ
VVN3YXBDaGFpbkRlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCitSZWZQdHI8U3dhcENoYWluPiBEZXZp
Y2U6OmNyZWF0ZVN3YXBDaGFpbihjb25zdCBTdXJmYWNlJiBzdXJmYWNlLCBjb25zdCBXR1BVU3dh
cENoYWluRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICBVTlVTRURfUEFSQU0oc3VyZmFj
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkdQVS9XZWJHUFUvVGV4dHVyZS5oIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZS5oCmlu
ZGV4IGU4YzYxNTZiOWVlOTZkMjNmOTc4ZDFlMjg2ZGI2NDQ0Y2M1NWExMjEuLjhkNDNlNDc5NmRl
NmRiOGY1ZWJkNDA5NDk4ZmUxMzIwMDhiOGM4MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL1RleHR1cmUuaAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlLmgKQEAg
LTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogCiAgICAgflRleHR1cmUoKTsKIAotICAgIFJlZlB0cjxU
ZXh0dXJlVmlldz4gY3JlYXRlVmlldyhjb25zdCBXR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yKik7
CisgICAgUmVmUHRyPFRleHR1cmVWaWV3PiBjcmVhdGVWaWV3KGNvbnN0IFdHUFVUZXh0dXJlVmll
d0Rlc2NyaXB0b3ImKTsKICAgICB2b2lkIGRlc3Ryb3koKTsKICAgICB2b2lkIHNldExhYmVsKGNv
bnN0IGNoYXIqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZS5t
bSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmUubW0KaW5kZXggMGYyNzc5NTY1ZWUzZDRi
MGU2NjdjODgyYzM5MmYzOTcyOWRlOTJkMy4uMjc4M2I3YmM3ZWU5ZTVmOWY0YWViYjJhMDg4OTdi
NjU5Y2YxZmMyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZS5tbQor
KysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlLm1tCkBAIC0zMSw3ICszMSw3IEBACiAK
IG5hbWVzcGFjZSBXZWJHUFUgewogCi1SZWZQdHI8VGV4dHVyZT4gRGV2aWNlOjpjcmVhdGVUZXh0
dXJlKGNvbnN0IFdHUFVUZXh0dXJlRGVzY3JpcHRvciogZGVzY3JpcHRvcikKK1JlZlB0cjxUZXh0
dXJlPiBEZXZpY2U6OmNyZWF0ZVRleHR1cmUoY29uc3QgV0dQVVRleHR1cmVEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yKQogewogICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKICAgICByZXR1cm4g
VGV4dHVyZTo6Y3JlYXRlKG5pbCk7CkBAIC00NCw3ICs0NCw3IEBAIFRleHR1cmU6OlRleHR1cmUo
aWQ8TVRMVGV4dHVyZT4gdGV4dHVyZSkKIAogVGV4dHVyZTo6flRleHR1cmUoKSA9IGRlZmF1bHQ7
CiAKLVJlZlB0cjxUZXh0dXJlVmlldz4gVGV4dHVyZTo6Y3JlYXRlVmlldyhjb25zdCBXR1BVVGV4
dHVyZVZpZXdEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQorUmVmUHRyPFRleHR1cmVWaWV3PiBUZXh0
dXJlOjpjcmVhdGVWaWV3KGNvbnN0IFdHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3ImIGRlc2NyaXB0
b3IpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOwogICAgIHJldHVybiBUZXh0dXJl
Vmlldzo6Y3JlYXRlKG5pbCk7CkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgd2dwdVRleHR1cmVSZWxl
YXNlKFdHUFVUZXh0dXJlIHRleHR1cmUpCiAKIFdHUFVUZXh0dXJlVmlldyB3Z3B1VGV4dHVyZUNy
ZWF0ZVZpZXcoV0dQVVRleHR1cmUgdGV4dHVyZSwgY29uc3QgV0dQVVRleHR1cmVWaWV3RGVzY3Jp
cHRvciogZGVzY3JpcHRvcikKIHsKLSAgICBhdXRvIHJlc3VsdCA9IHRleHR1cmUtPnRleHR1cmUt
PmNyZWF0ZVZpZXcoZGVzY3JpcHRvcik7CisgICAgYXV0byByZXN1bHQgPSB0ZXh0dXJlLT50ZXh0
dXJlLT5jcmVhdGVWaWV3KCpkZXNjcmlwdG9yKTsKICAgICByZXR1cm4gcmVzdWx0ID8gbmV3IFdH
UFVUZXh0dXJlVmlld0ltcGwgeyByZXN1bHQucmVsZWFzZU5vbk51bGwoKSB9IDogbnVsbHB0cjsK
IH0KIAo=
</data>
<flag name="commit-queue"
          id="481473"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>