<?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>170778</bug_id>
          
          <creation_ts>2017-04-12 10:44:07 -0700</creation_ts>
          <short_desc>Refactor enumerateDevices to allow separate CaptureDeviceManagers for audio and video.</short_desc>
          <delta_ts>2017-11-02 11:38:19 -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>New Bugs</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="Jeremy Jones">jeremyj-wk</reporter>
          <assigned_to name="Jeremy Jones">jeremyj-wk</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>jonlee</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1296773</commentid>
    <comment_count>0</comment_count>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2017-04-12 10:44:07 -0700</bug_when>
    <thetext>Refactor enumerateDevices to allow dseparate CaptureDeviceManagers for audio and video.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1296774</commentid>
    <comment_count>1</comment_count>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2017-04-12 10:44:41 -0700</bug_when>
    <thetext>rdar://problem/31575382</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1296778</commentid>
    <comment_count>2</comment_count>
      <attachid>306921</attachid>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2017-04-12 11:00:33 -0700</bug_when>
    <thetext>Created attachment 306921
Preliminary Patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1296791</commentid>
    <comment_count>3</comment_count>
      <attachid>306921</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-04-12 11:40:32 -0700</bug_when>
    <thetext>Comment on attachment 306921
Preliminary Patch.

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

&gt; Source/WebCore/platform/mediastream/CaptureDeviceManager.cpp:50
&gt;      for (auto captureDevice : captureDevices()) {

Nit: auto&amp;

&gt; Source/WebCore/platform/mediastream/CaptureDeviceManager.cpp:63
&gt; +    for (auto captureDevice : captureDevices()) {

Ditto.

&gt; Source/WebCore/platform/mediastream/mac/AVCaptureDeviceManager.mm:131
&gt; +        CaptureDevice existingCaptureDevice;

Nit: this should be declare just above where it is used to avoid initializing it if !hasMatchingType.

&gt; Source/WebCore/platform/mediastream/mac/CoreAudioCaptureDevice.cpp:42
&gt; +

Nit: extra blank line.

&gt; Source/WebCore/platform/mediastream/mac/CoreAudioCaptureDeviceManager.cpp:80
&gt; +    bool haveDeviceChanges = false;

Nit: you can declare this just above the loop where it is used.

&gt; Source/WebCore/platform/mediastream/mac/CoreAudioCaptureDeviceManager.cpp:109
&gt; +        for (auto&amp; device : m_coreAudioCaptureDevices) {
&gt; +            if (device-&gt;deviceID() == deviceID) {
&gt; +                found = true;
&gt; +                break;
&gt; +            }
&gt; +        }

This will be more succinct if you use std::any_of.

&gt; Source/WebCore/platform/mediastream/mac/CoreAudioCaptureDeviceManager.cpp:139
&gt; +

Nit: extra blank.

&gt; Source/WebCore/platform/mediastream/mac/CoreAudioCaptureSource.cpp:89
&gt;  

This should ASSERT(m_captureDeviceID)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1296793</commentid>
    <comment_count>4</comment_count>
      <attachid>306921</attachid>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2017-04-12 11:54:24 -0700</bug_when>
    <thetext>Comment on attachment 306921
Preliminary Patch.

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

&gt;&gt; Source/WebCore/platform/mediastream/CaptureDeviceManager.cpp:50
&gt;&gt;      for (auto captureDevice : captureDevices()) {
&gt; 
&gt; Nit: auto&amp;

done

&gt;&gt; Source/WebCore/platform/mediastream/CaptureDeviceManager.cpp:63
&gt;&gt; +    for (auto captureDevice : captureDevices()) {
&gt; 
&gt; Ditto.

done

&gt;&gt; Source/WebCore/platform/mediastream/mac/AVCaptureDeviceManager.mm:131
&gt;&gt; +        CaptureDevice existingCaptureDevice;
&gt; 
&gt; Nit: this should be declare just above where it is used to avoid initializing it if !hasMatchingType.

done.

&gt;&gt; Source/WebCore/platform/mediastream/mac/CoreAudioCaptureDevice.cpp:42
&gt;&gt; +
&gt; 
&gt; Nit: extra blank line.

Done

&gt;&gt; Source/WebCore/platform/mediastream/mac/CoreAudioCaptureDeviceManager.cpp:80
&gt;&gt; +    bool haveDeviceChanges = false;
&gt; 
&gt; Nit: you can declare this just above the loop where it is used.

Done.

&gt;&gt; Source/WebCore/platform/mediastream/mac/CoreAudioCaptureDeviceManager.cpp:109
&gt;&gt; +        }
&gt; 
&gt; This will be more succinct if you use std::any_of.

Done.

&gt;&gt; Source/WebCore/platform/mediastream/mac/CoreAudioCaptureDeviceManager.cpp:139
&gt;&gt; +
&gt; 
&gt; Nit: extra blank.

done.

&gt;&gt; Source/WebCore/platform/mediastream/mac/CoreAudioCaptureSource.cpp:89
&gt;&gt;  
&gt; 
&gt; This should ASSERT(m_captureDeviceID)

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297110</commentid>
    <comment_count>5</comment_count>
      <attachid>307017</attachid>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2017-04-13 13:14:24 -0700</bug_when>
    <thetext>Created attachment 307017
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297180</commentid>
    <comment_count>6</comment_count>
      <attachid>307040</attachid>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2017-04-13 15:51:07 -0700</bug_when>
    <thetext>Created attachment 307040
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297403</commentid>
    <comment_count>7</comment_count>
      <attachid>307040</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-04-14 09:36:22 -0700</bug_when>
    <thetext>Comment on attachment 307040
Patch

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        Refactor enumerateDevices to allow dseparate CaptureDeviceManagers for audio and video.

Nit: dseparate -&gt; separate

&gt; Source/WebCore/platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp:63
&gt; +#if PLATFORM(MAC)
&gt; +        RealtimeMediaSourceCenter::singleton().setAudioCaptureDeviceManager(CoreAudioCaptureDeviceManager::singleton());
&gt; +#else
&gt; +        RealtimeMediaSourceCenter::singleton().setAudioCaptureDeviceManager(AVCaptureDeviceManager::singleton());
&gt; +#endif

Please add a FIXME with a bug number about changing this for iOS.

&gt; Source/WebCore/platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp:97
&gt; +#if PLATFORM(MAC)
&gt; +    m_audioCaptureDeviceManager = &amp;CoreAudioCaptureDeviceManager::singleton();
&gt; +#else
&gt; +    m_audioCaptureDeviceManager = &amp;AVCaptureDeviceManager::singleton();
&gt; +#endif

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297529</commentid>
    <comment_count>8</comment_count>
      <attachid>307040</attachid>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2017-04-14 15:25:22 -0700</bug_when>
    <thetext>Comment on attachment 307040
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:3
&gt;&gt; +        Refactor enumerateDevices to allow dseparate CaptureDeviceManagers for audio and video.
&gt; 
&gt; Nit: dseparate -&gt; separate

done.

&gt;&gt; Source/WebCore/platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp:63
&gt;&gt; +#endif
&gt; 
&gt; Please add a FIXME with a bug number about changing this for iOS.

Done.

&gt;&gt; Source/WebCore/platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp:97
&gt;&gt; +#endif
&gt; 
&gt; Ditto.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297533</commentid>
    <comment_count>9</comment_count>
      <attachid>307155</attachid>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2017-04-14 15:31:18 -0700</bug_when>
    <thetext>Created attachment 307155
Patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297930</commentid>
    <comment_count>10</comment_count>
      <attachid>307155</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-04-17 10:00:55 -0700</bug_when>
    <thetext>Comment on attachment 307155
Patch for landing.

Clearing flags on attachment: 307155

Committed r215418: &lt;http://trac.webkit.org/changeset/215418&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>306921</attachid>
            <date>2017-04-12 11:00:33 -0700</date>
            <delta_ts>2017-04-13 13:14:23 -0700</delta_ts>
            <desc>Preliminary Patch.</desc>
            <filename>bug-170778-20170412110033.patch</filename>
            <type>text/plain</type>
            <size>49131</size>
            <attacher name="Jeremy Jones">jeremyj-wk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1MjUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWY2NDllNGZmZGI0MDgw
ZGExYTFkZTM1ZDU1NGI2MDE0ZjVjN2U5YS4uYmVhOWMwMTJhMzExNGY2NzA1OTY4NGRhNGZiMThj
ODZkNWIxNzNhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDE3LTA0LTEyICBKZXJl
bXkgSm9uZXMgIDxqZXJlbXlqQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBlbnVtZXJh
dGVEZXZpY2VzIHRvIGFsbG93IGRzZXBhcmF0ZSBDYXB0dXJlRGV2aWNlTWFuYWdlcnMgZm9yIGF1
ZGlvIGFuZCB2aWRlby4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE3MDc3OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE5vIHRlc3RzIHlldCB0aGlzIGlzIGEgcHJlbGltaW5hcnkgcGF0Y2guCisKKyAgICAg
ICAgQWRkIENvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyIHRvIGVudW1lcmF0ZSBDb3JlQXVk
aW8gZGV2aWNlcy4KKworICAgICAgICBSZWZhY3RvciBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
IGFuZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjIHRvIHByb3ZpZGUgaW5kZXBlbmRlbnQg
YXVkaW8gYW5kIHZpZGVvIGNhcHR1cmUgZGV2aWNlIG1hbmFnZXJzCisgICAgICAgIGFuZCB0aGUg
YWJpbGlpdHkgdG8gb3ZlcnJpZGUgdGhlIGNhcHR1cmUgZGV2aWNlIG1hbmFnZXJzLgorCisgICAg
ICAgIENvcmVBdWRpb0NhcHR1cmVTb3VyY2Ugbm93IHVzZXMgQ29yZUF1ZGlvQ2FwdHVyZURldmlj
ZU1hbmFnZXIgdG8gdXNlIHRoZSBzcGVjaWZpZWQgZGV2aWNlIGluc3RlYWQgb2YgdGhlIGRlZmF1
bHQgb25lLiAKKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHA6
CisgICAgICAgIChDYXB0dXJlRGV2aWNlTWFuYWdlcjo6Z2V0QXVkaW9Tb3VyY2VzSW5mbyk6Cisg
ICAgICAgIChDYXB0dXJlRGV2aWNlTWFuYWdlcjo6Z2V0VmlkZW9Tb3VyY2VzSW5mbyk6CisgICAg
ICAgIChDYXB0dXJlRGV2aWNlTWFuYWdlcjo6Z2V0U291cmNlc0luZm8pOiBEZWxldGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzZXRBdWRpb0Nh
cHR1cmVEZXZpY2VNYW5hZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXI6OnVuc2V0QXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlcik6CisgICAgICAgIChXZWJD
b3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzZXRWaWRlb0NhcHR1cmVEZXZpY2VNYW5h
Z2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnVuc2V0
VmlkZW9DYXB0dXJlRGV2aWNlTWFuYWdlcik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlcjo6ZGVmYXVsdEF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6ZGVmYXVsdFZpZGVv
Q2FwdHVyZURldmljZU1hbmFnZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlcjo6YXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlcik6CisgICAgICAgIChXZWJDb3Jl
OjpSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjp2aWRlb0NhcHR1cmVEZXZpY2VNYW5hZ2VyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdl
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VN
YW5hZ2VyLm1tOgorICAgICAgICAoV2ViQ29yZTo6QVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6cmVm
cmVzaEFWQ2FwdHVyZURldmljZXNPZlR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6QVZDYXB0dXJl
RGV2aWNlTWFuYWdlcjo6cmVmcmVzaENhcHR1cmVEZXZpY2VzKToKKyAgICAgICAgKFdlYkNvcmU6
OkFWQ2FwdHVyZURldmljZU1hbmFnZXI6OmdldEF1ZGlvU291cmNlc0luZm8pOgorICAgICAgICAo
V2ViQ29yZTo6QVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6Z2V0VmlkZW9Tb3VyY2VzSW5mbyk6Cisg
ICAgICAgIChXZWJDb3JlOjpBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzZXRVc2VBVkZvdW5kYXRp
b25BdWRpb0NhcHR1cmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QVZDYXB0dXJlRGV2
aWNlTWFuYWdlcjo6Z2V0U291cmNlc0luZm8pOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlRGV2aWNlLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpnZXREZXZpY2VJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OkNvcmVBdWRp
b0NhcHR1cmVEZXZpY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb3JlQXVkaW9DYXB0
dXJlRGV2aWNlOjpDb3JlQXVkaW9DYXB0dXJlRGV2aWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
cmVBdWRpb0NhcHR1cmVEZXZpY2U6OmRldmljZUlEKToKKyAgICAgICAgKFdlYkNvcmU6OkNvcmVB
dWRpb0NhcHR1cmVEZXZpY2U6OmRldmljZUNsb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OkNvcmVB
dWRpb0NhcHR1cmVEZXZpY2U6OmlzQWxpdmUpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlRGV2aWNlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmguCisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2Vy
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDb3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFu
YWdlcjo6c2luZ2xldG9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNvcmVBdWRpb0NhcHR1cmVEZXZp
Y2VNYW5hZ2VyOjpjYXB0dXJlRGV2aWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpkZXZpY2VIYXNJ
bnB1dFN0cmVhbXMpOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUF1ZGlvQ2FwdHVyZURldmljZU1h
bmFnZXI6OmNvcmVBdWRpb0NhcHR1cmVEZXZpY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkNvcmVB
dWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyOjpyZWZyZXNoQXVkaW9DYXB0dXJlRGV2aWNlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlcjo6ZGV2aWNlc0No
YW5nZWQpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0
dXJlRGV2aWNlTWFuYWdlci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5oLgorICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OkNvcmVBdWRpb0NhcHR1cmVTb3VyY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnN0b3BQcm9kdWNp
bmdEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlck1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291
cmNlQ2VudGVyTWFjOjpzZXRVc2VBVkZvdW5kYXRpb25BdWRpb0NhcHR1cmUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYzo6UmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlck1hYyk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
TWFjOjpjcmVhdGVNZWRpYVN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyTWFjOjpnZXRNZWRpYVN0cmVhbURldmljZXMpOgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmg6CisKIDIw
MTctMDQtMTEgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIERpc2Fi
bGUgb3V0ZGF0ZWQgV3JpdGFibGVTdHJlYW0gQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMTE0Njc5NWFjN2Uw
YTNkYTY0NTgwZTMyYWU2NWVhZDdjMzcwOTNlYy4uMjlhYzM0YmZjNDM4OGQ2MDYzMjFhYjgxYjll
NjBmNGE4MDUzYTNiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE3LTA0LTEyICBK
ZXJlbXkgSm9uZXMgIDxqZXJlbXlqQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBlbnVt
ZXJhdGVEZXZpY2VzIHRvIGFsbG93IGRzZXBhcmF0ZSBDYXB0dXJlRGV2aWNlTWFuYWdlcnMgZm9y
IGF1ZGlvIGFuZCB2aWRlby4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3MDc3OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIHNldFVzZUFWRm91bmRhdGlvbkF1ZGlvQ2FwdHVyZSBpcyBtb3ZlZCBmcm9tIEFW
Q2FwdHVyZURldmljZU1hbmFnZXIgdG8gUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
clByb3h5OjpzeW5jV2l0aFdlYkNvcmVQcmVmcyk6CisKIDIwMTctMDQtMTEgIERlYW4gSmFja3Nv
biAgPGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIERpc2FibGUgb3V0ZGF0ZWQgV3JpdGFibGVT
dHJlYW0gQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggYWYyZTliYTE2OWQwODdhYmRlYTlkOWNhNGQ2M2MxYTFiMTljZjIxNi4u
MDVlMjdkZDMwYjU2N2IxN2I4MWM1ZTJlNjM2NzliOTA1ZDg5NmI4OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTY3MSw2ICsx
NjcxLDEwIEBACiAJCTNGMkIzM0VGMTY1QUYxNTYwMEUzOTg3QyAvKiBKU1dlYktpdENTU1ZpZXdw
b3J0UnVsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
M0YyQjMzRUExNjVBRjE1NTAwRTM5ODdDIC8qIEpTV2ViS2l0Q1NTVmlld3BvcnRSdWxlLmggKi87
IH07CiAJCTNGNDJCMzFEMTg4MTE5MUIwMDI3OEFBQyAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyQVZLaXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDNGNDJCMzFCMTg4MTE5MUIwMDI3OEFBQyAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyQVZLaXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkzRjQyQjMxRTE4ODExOTFCMDAyNzhBQUMgLyogV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlckFWS2l0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gM0Y0MkIzMUMxODgxMTkxQjAwMjc4QUFDIC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xs
ZXJBVktpdC5tbSAqLzsgfTsKKwkJM0Y4MDIwMzUxRTlFNDdCRjAwREVDNjFEIC8qIENvcmVBdWRp
b0NhcHR1cmVEZXZpY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDNGODAyMDMyMUU5RTM4MUQwMERFQzYxRCAvKiBDb3JlQXVkaW9DYXB0dXJlRGV2aWNl
LmggKi87IH07CisJCTNGODAyMDM2MUU5RTQ3QzMwMERFQzYxRCAvKiBDb3JlQXVkaW9DYXB0dXJl
RGV2aWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDNGODAyMDMxMUU5RTM4MUQwMERFQzYxRCAvKiBDb3JlQXVkaW9DYXB0dXJlRGV2aWNlLmNwcCAq
LzsgfTsKKwkJM0Y4MDIwMzcxRTlFNDdDNTAwREVDNjFEIC8qIENvcmVBdWRpb0NhcHR1cmVEZXZp
Y2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAzRjgwMjAzNDFFOUUzODFEMDBERUM2MUQgLyogQ29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFn
ZXIuaCAqLzsgfTsKKwkJM0Y4MDIwMzgxRTlFNDdDOTAwREVDNjFEIC8qIENvcmVBdWRpb0NhcHR1
cmVEZXZpY2VNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDNGODAyMDMzMUU5RTM4MUQwMERFQzYxRCAvKiBDb3JlQXVkaW9DYXB0dXJlRGV2
aWNlTWFuYWdlci5jcHAgKi87IH07CiAJCTNGQkM0QUYzMTg5ODgxNTYwMDQ2RUUzOCAvKiBXZWJW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDNGQkM0QUYxMTg5ODgxNTYwMDQ2RUUzOCAvKiBXZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbSAqLzsgfTsKIAkJM0ZCQzRBRjQxODk4ODE1NjAw
NDZFRTM4IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzRkJDNEFGMjE4OTg4MTU2MDA0NkVF
MzggLyogV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzRkYxRkE2NjFFNzM1MEZEMDBDMTAw
MkYgLyogQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzRjNCQjU4MjFFNzA5RUU0MDBDNzAxRjIgLyogQ29yZUF1
ZGlvQ2FwdHVyZVNvdXJjZS5jcHAgKi87IH07CkBAIC05MjYzLDYgKzkyNjcsMTAgQEAKIAkJM0Yz
QkI1ODMxRTcwOUVFNDAwQzcwMUYyIC8qIENvcmVBdWRpb0NhcHR1cmVTb3VyY2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzRjQyQjMxQjE4ODExOTFCMDAyNzhBQUMgLyogV2Vi
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkzRjQyQjMxQzE4ODExOTFCMDAyNzhBQUMgLyogV2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkzRjgwMjAzMTFFOUUzODFEMDBERUM2MUQgLyogQ29yZUF1
ZGlvQ2FwdHVyZURldmljZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBDb3JlQXVkaW9DYXB0dXJlRGV2aWNlLmNwcDsgcGF0aCA9IC4uLy4uLy4uLy4uLy4uLy4uL09w
ZW5zb3VyY2UvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRp
b0NhcHR1cmVEZXZpY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzRjgwMjAz
MjFFOUUzODFEMDBERUM2MUQgLyogQ29yZUF1ZGlvQ2FwdHVyZURldmljZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBDb3JlQXVkaW9DYXB0dXJlRGV2aWNlLmg7IHBhdGggPSAu
Li8uLi8uLi8uLi8uLi8uLi9PcGVuc291cmNlL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlRGV2aWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTNGODAyMDMzMUU5RTM4MUQwMERFQzYxRCAvKiBDb3JlQXVkaW9DYXB0dXJlRGV2
aWNlTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDb3Jl
QXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHA7IHBhdGggPSAuLi8uLi8uLi8uLi8uLi8uLi9P
cGVuc291cmNlL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVk
aW9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTNGODAyMDM0MUU5RTM4MUQwMERFQzYxRCAvKiBDb3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDb3JlQXVkaW9DYXB0dXJlRGV2
aWNlTWFuYWdlci5oOyBwYXRoID0gLi4vLi4vLi4vLi4vLi4vLi4vT3BlbnNvdXJjZS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZURldmljZU1h
bmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJM0ZCQzRBRjExODk4ODE1NjAw
NDZFRTM4IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTNGQkM0QUYyMTg5ODgxNTYw
MDQ2RUUzOCAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzRkZGRjlBNjE1OUQ5QTU1MDAyMEJCRDUg
LyogV2ViS2l0Q1NTVmlld3BvcnRSdWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdlYktpdENTU1ZpZXdwb3J0UnVsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xNjEyMiw4ICsxNjEzMCwxMiBAQAogCQkJCTA3MDM2M0REMTgxQTFDREMwMEMw
NzRBNSAvKiBBVk1lZGlhQ2FwdHVyZVNvdXJjZS5tbSAqLywKIAkJCQkwNzAzNjNERTE4MUExQ0RD
MDBDMDc0QTUgLyogQVZWaWRlb0NhcHR1cmVTb3VyY2UuaCAqLywKIAkJCQkwNzAzNjNERjE4MUEx
Q0RDMDBDMDc0QTUgLyogQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0gKi8sCi0JCQkJM0YzQkI1ODIx
RTcwOUVFNDAwQzcwMUYyIC8qIENvcmVBdWRpb0NhcHR1cmVTb3VyY2UuY3BwICovLAogCQkJCTNG
M0JCNTgzMUU3MDlFRTQwMEM3MDFGMiAvKiBDb3JlQXVkaW9DYXB0dXJlU291cmNlLmggKi8sCisJ
CQkJM0YzQkI1ODIxRTcwOUVFNDAwQzcwMUYyIC8qIENvcmVBdWRpb0NhcHR1cmVTb3VyY2UuY3Bw
ICovLAorCQkJCTNGODAyMDMyMUU5RTM4MUQwMERFQzYxRCAvKiBDb3JlQXVkaW9DYXB0dXJlRGV2
aWNlLmggKi8sCisJCQkJM0Y4MDIwMzExRTlFMzgxRDAwREVDNjFEIC8qIENvcmVBdWRpb0NhcHR1
cmVEZXZpY2UuY3BwICovLAorCQkJCTNGODAyMDM0MUU5RTM4MUQwMERFQzYxRCAvKiBDb3JlQXVk
aW9DYXB0dXJlRGV2aWNlTWFuYWdlci5oICovLAorCQkJCTNGODAyMDMzMUU5RTM4MUQwMERFQzYx
RCAvKiBDb3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAgKi8sCiAJCQkJMDc0NEVDRUIx
RTBDNEFFNTAwMEQwOTQ0IC8qIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLmggKi8sCiAJCQkJ
MDc0NEVDRUMxRTBDNEFFNTAwMEQwOTQ0IC8qIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLm1t
ICovLAogCQkJCTA3RUU3NkVEMUJFQTYxOTgwMEY4OTEzMyAvKiBNb2NrUmVhbHRpbWVWaWRlb1Nv
dXJjZU1hYy5oICovLApAQCAtMjgxMjMsNiArMjgxMzUsNyBAQAogCQkJCTcxMThGRUQ1MTU2ODVD
QzYwMDMwQjc5QSAvKiBKU1NWR1ZpZXdTcGVjLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NDg1MjI3
RTExOTAxNjJDMDA2RURDN0YgLyogSlNTVkdWS2VybkVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTcxRENCNzAyMTU2ODE5NzYwMDg2MjI3MSAvKiBKU1NWR1pvb21BbmRQYW4uaCBpbiBIZWFk
ZXJzICovLAorCQkJCTNGODAyMDM1MUU5RTQ3QkYwMERFQzYxRCAvKiBDb3JlQXVkaW9DYXB0dXJl
RGV2aWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0UxOTBBQjc1QTZGMDAwRTVBQzQgLyog
SlNTVkdab29tRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1REYzMjA0MDlEMUNDNjAwMDBC
RTMyNSAvKiBKU1RleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzM0ExNEI5MEI3RDFENTIwMEE1
M0ZGRCAvKiBKU1RleHRFdmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODY5OSw2ICsyODcxMiw3
IEBACiAJCQkJMUFEOEY4MUIxMUNBQjlFOTAwRTkzRTU0IC8qIFBsYXRmb3JtU3RyYXRlZ2llcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3RDA3MzMxODg0QzU2QzAwQjRBRjg2IC8qIFBsYXRmb3Jt
VGV4dFRyYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzRFODJCQjE4QTY5RjBFMDA3RUY1NEMg
LyogUGxhdGZvcm1UaW1lUmFuZ2VzLmggaW4gSGVhZGVycyAqLywKKwkJCQkzRjgwMjAzNzFFOUU0
N0M1MDBERUM2MUQgLyogQ29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTUyQjBENEJFMUM1N0ZEMUUwMDc3Q0U1MyAvKiBQbGF0Zm9ybVZpZXcuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTkzNUM0NzZCMDlBQzRENEYwMEE2QUFCNCAvKiBQbGF0Zm9ybVdoZWVs
RXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRkZDNDU5MUQ1RTg2NjEwMDI2N0E2NiAvKiBQ
bHVnaW5CbGFja2xpc3QuaCBpbiBIZWFkZXJzICovLApAQCAtMzE3NzMsNiArMzE3ODcsNyBAQAog
CQkJCTUxMUVGMkM0MTdGMEZEMzUwMEU0RkExNiAvKiBKU0lEQkZhY3RvcnkuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTExRUYyQzUxN0YwRkQzNTAwRTRGQTE2IC8qIEpTSURCSW5kZXguY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTE0MTI5OUIxQzZDMTY3NDAwNTlFNzE0IC8qIEpTSURCSW5kZXhD
dXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJM0Y4MDIwMzYxRTlFNDdDMzAwREVDNjFEIC8q
IENvcmVBdWRpb0NhcHR1cmVEZXZpY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTExRUYyQzYx
N0YwRkQzNTAwRTRGQTE2IC8qIEpTSURCS2V5UmFuZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTExRUYyQzcxN0YwRkQzNTAwRTRGQTE2IC8qIEpTSURCT2JqZWN0U3RvcmUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTExRUYyRDExN0YwRkRGMTAwRTRGQTE2IC8qIEpTSURCT2JqZWN0U3RvcmVD
dXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMzIxOSw2ICszMzIzNCw3IEBACiAJCQkJODQx
OUQyQUMxMjBEOTJGQzAwMTQxRjhGIC8qIFNWR1BhdGhCeXRlU3RyZWFtU291cmNlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUIyMjI3QTU4MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQYXRoRWxlbWVu
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NDc2QzlFRjExREY2QTU4MDA1NTVCMDIgLyogU1ZH
UGF0aFBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzRjgwMjAzODFFOUU0N0M5MDBERUM2
MUQgLyogQ29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJN0MzOUMzNzExRERCQjhBRTAwRkVGQjI5IC8qIFNWR1BhdGhTZWdMaXN0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTg0NzZDOUU1MTFERjZBMEIwMDU1NUIwMiAvKiBTVkdQYXRoU2VnTGlzdEJ1
aWxkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODRCNkI5NzcxMjBGMTNFNTAwQjhFRkFGIC8q
IFNWR1BhdGhTZWdMaXN0U291cmNlLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFn
ZXIuY3BwCmluZGV4IDcxOWJiMWViYmQxYmMxZDFmMmQ5ZjBjMzg0NGZmZThkNjU2YmIxYjQuLmRl
Yzg3N2U3ZGEwZWY4ZDM1NzQ3MjliOWRmYjEyMjEwZTYzZmEwODUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFu
YWdlci5jcHAKQEAgLTQ0LDExICs0NCwyNCBAQCBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6fkNhcHR1
cmVEZXZpY2VNYW5hZ2VyKCkKIHsKIH0KIAotVmVjdG9yPENhcHR1cmVEZXZpY2U+IENhcHR1cmVE
ZXZpY2VNYW5hZ2VyOjpnZXRTb3VyY2VzSW5mbygpCitWZWN0b3I8Q2FwdHVyZURldmljZT4gQ2Fw
dHVyZURldmljZU1hbmFnZXI6OmdldEF1ZGlvU291cmNlc0luZm8oKQogewogICAgIFZlY3RvcjxD
YXB0dXJlRGV2aWNlPiBzb3VyY2VzSW5mbzsKICAgICBmb3IgKGF1dG8gY2FwdHVyZURldmljZSA6
IGNhcHR1cmVEZXZpY2VzKCkpIHsKLSAgICAgICAgaWYgKCFjYXB0dXJlRGV2aWNlLmVuYWJsZWQo
KSB8fCBjYXB0dXJlRGV2aWNlLnR5cGUoKSA9PSBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpV
bmtub3duKQorICAgICAgICBpZiAoIWNhcHR1cmVEZXZpY2UuZW5hYmxlZCgpIHx8IGNhcHR1cmVE
ZXZpY2UudHlwZSgpICE9IENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OkF1ZGlvKQorICAgICAg
ICAgICAgY29udGludWU7CisKKyAgICAgICAgc291cmNlc0luZm8uYXBwZW5kKGNhcHR1cmVEZXZp
Y2UpOworICAgIH0KKyAgICBMT0coTWVkaWEsICJDYXB0dXJlRGV2aWNlTWFuYWdlcjo6Z2V0U291
cmNlc0luZm8oJXApLCBmb3VuZCAlenUgYWN0aXZlIGRldmljZXMiLCB0aGlzLCBzb3VyY2VzSW5m
by5zaXplKCkpOworICAgIHJldHVybiBzb3VyY2VzSW5mbzsKK30KKworVmVjdG9yPENhcHR1cmVE
ZXZpY2U+IENhcHR1cmVEZXZpY2VNYW5hZ2VyOjpnZXRWaWRlb1NvdXJjZXNJbmZvKCkKK3sKKyAg
ICBWZWN0b3I8Q2FwdHVyZURldmljZT4gc291cmNlc0luZm87CisgICAgZm9yIChhdXRvIGNhcHR1
cmVEZXZpY2UgOiBjYXB0dXJlRGV2aWNlcygpKSB7CisgICAgICAgIGlmICghY2FwdHVyZURldmlj
ZS5lbmFibGVkKCkgfHwgY2FwdHVyZURldmljZS50eXBlKCkgIT0gQ2FwdHVyZURldmljZTo6RGV2
aWNlVHlwZTo6VmlkZW8pCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBzb3VyY2Vz
SW5mby5hcHBlbmQoY2FwdHVyZURldmljZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuaAppbmRleCA4Y2Jk
NDU2YmU3YjFiOWMzNGYwMzYzM2VjNzI0NTU2MWQzM2IwMzVmLi4zNzlmZTc0OTNkZTVlYTA5OTdl
NDUwOGEzMDk0MTk2N2EwNDE0OTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKQEAgLTM2LDcgKzM2
LDggQEAgY2xhc3MgQ2FwdHVyZURldmljZU1hbmFnZXIgewogcHVibGljOgogICAgIHZpcnR1YWwg
VmVjdG9yPENhcHR1cmVEZXZpY2U+JiBjYXB0dXJlRGV2aWNlcygpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgcmVmcmVzaENhcHR1cmVEZXZpY2VzKCkgeyB9Ci0gICAgdmlydHVhbCBWZWN0b3I8Q2Fw
dHVyZURldmljZT4gZ2V0U291cmNlc0luZm8oKTsKKyAgICB2aXJ0dWFsIFZlY3RvcjxDYXB0dXJl
RGV2aWNlPiBnZXRBdWRpb1NvdXJjZXNJbmZvKCk7CisgICAgdmlydHVhbCBWZWN0b3I8Q2FwdHVy
ZURldmljZT4gZ2V0VmlkZW9Tb3VyY2VzSW5mbygpOwogICAgIHZpcnR1YWwgc3RkOjpvcHRpb25h
bDxDYXB0dXJlRGV2aWNlPiBkZXZpY2VXaXRoVUlEKGNvbnN0IFN0cmluZyYsIFJlYWx0aW1lTWVk
aWFTb3VyY2U6OlR5cGUpOwogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXIuY3BwCmluZGV4IDc4NWQ2MjFjNGJiN2QxNjRhMWRmYjdmYzMwNjg4OTQ5ZTc5MDhmYTUuLjk1
NTk5OGQ2NjcxY2RkMTViYjA3YmE5MjMwMjYyZjlhNzI2NjM3NDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXIuY3BwCkBAIC04OCw2ICs4OCwyOCBAQCB2b2lkIFJlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXI6OnVuc2V0VmlkZW9GYWN0b3J5KFJlYWx0aW1lTWVkaWFTb3VyY2U6OkNhcHR1
cmVGYQogICAgICAgICBtX3ZpZGVvRmFjdG9yeSA9IG51bGxwdHI7CiB9CiAKK3ZvaWQgUmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlcjo6c2V0QXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlcihDYXB0dXJl
RGV2aWNlTWFuYWdlciYgZGV2aWNlTWFuYWdlcikKK3sKKyAgICBtX2F1ZGlvQ2FwdHVyZURldmlj
ZU1hbmFnZXIgPSAmZGV2aWNlTWFuYWdlcjsKK30KKwordm9pZCBSZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyOjp1bnNldEF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIoQ2FwdHVyZURldmljZU1hbmFn
ZXImIGRldmljZU1hbmFnZXIpCit7CisgICAgaWYgKG1fYXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdl
ciA9PSAmZGV2aWNlTWFuYWdlcikKKyAgICAgICAgbV9hdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2Vy
ID0gbnVsbHB0cjsKK30KKwordm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzZXRWaWRl
b0NhcHR1cmVEZXZpY2VNYW5hZ2VyKENhcHR1cmVEZXZpY2VNYW5hZ2VyJiBkZXZpY2VNYW5hZ2Vy
KQoreworICAgIG1fdmlkZW9DYXB0dXJlRGV2aWNlTWFuYWdlciA9ICZkZXZpY2VNYW5hZ2VyOwor
fQorCit2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnVuc2V0VmlkZW9DYXB0dXJlRGV2
aWNlTWFuYWdlcihDYXB0dXJlRGV2aWNlTWFuYWdlciYgZGV2aWNlTWFuYWdlcikKK3sKKyAgICBp
ZiAobV92aWRlb0NhcHR1cmVEZXZpY2VNYW5hZ2VyID09ICZkZXZpY2VNYW5hZ2VyKQorICAgICAg
ICBtX3ZpZGVvQ2FwdHVyZURldmljZU1hbmFnZXIgPSBudWxscHRyOworfQorICAgIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXIuaAppbmRleCA2MWI3ZTllNWM5MjllOWEwYjYzOTE2MjY4ODNi
YTk2ODJmNjI3YTBhLi41MTI0MWFkOTE4MjJhMmQ3ODBiMDNmYzFmMmMxZWNkNjM2NzE1NTc5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oCkBAIC00Miw2ICs0Miw3IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIENhcHR1cmVEZXZpY2U7CitjbGFzcyBDYXB0dXJlRGV2aWNl
TWFuYWdlcjsKIGNsYXNzIE1lZGlhQ29uc3RyYWludHM7CiBjbGFzcyBSZWFsdGltZU1lZGlhU291
cmNlU2V0dGluZ3M7CiBjbGFzcyBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWlu
dHM7CkBAIC03Niw2ICs3NywxNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1
bnNldFZpZGVvRmFjdG9yeShSZWFsdGltZU1lZGlhU291cmNlOjpDYXB0dXJlRmFjdG9yeSYpOwog
ICAgIFJlYWx0aW1lTWVkaWFTb3VyY2U6OkNhcHR1cmVGYWN0b3J5KiB2aWRlb0ZhY3RvcnkoKSBj
b25zdCB7IHJldHVybiBtX3ZpZGVvRmFjdG9yeTsgfQogCisgICAgdmlydHVhbCBDYXB0dXJlRGV2
aWNlTWFuYWdlciogZGVmYXVsdEF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIoKSB7IHJldHVybiBu
dWxscHRyOyB9CisgICAgdmlydHVhbCBDYXB0dXJlRGV2aWNlTWFuYWdlciogZGVmYXVsdFZpZGVv
Q2FwdHVyZURldmljZU1hbmFnZXIoKSB7IHJldHVybiBudWxscHRyOyB9CisKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldEF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIoQ2FwdHVyZURldmljZU1h
bmFnZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVuc2V0QXVkaW9DYXB0dXJlRGV2aWNl
TWFuYWdlcihDYXB0dXJlRGV2aWNlTWFuYWdlciYpOworICAgIENhcHR1cmVEZXZpY2VNYW5hZ2Vy
KiBhdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9hdWRpb0NhcHR1
cmVEZXZpY2VNYW5hZ2VyOyB9CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZpZGVvQ2Fw
dHVyZURldmljZU1hbmFnZXIoQ2FwdHVyZURldmljZU1hbmFnZXImKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHVuc2V0VmlkZW9DYXB0dXJlRGV2aWNlTWFuYWdlcihDYXB0dXJlRGV2aWNlTWFu
YWdlciYpOworICAgIENhcHR1cmVEZXZpY2VNYW5hZ2VyKiB2aWRlb0NhcHR1cmVEZXZpY2VNYW5h
Z2VyKCkgY29uc3QgeyByZXR1cm4gbV92aWRlb0NhcHR1cmVEZXZpY2VNYW5hZ2VyOyB9CisKIHBy
b3RlY3RlZDoKICAgICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyKCk7CiAKQEAgLTg0LDYgKzk2
LDkgQEAgcHJvdGVjdGVkOgogCiAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZTo6Q2FwdHVyZUZhY3Rv
cnkqIG1fYXVkaW9GYWN0b3J5IHsgbnVsbHB0ciB9OwogICAgIFJlYWx0aW1lTWVkaWFTb3VyY2U6
OkNhcHR1cmVGYWN0b3J5KiBtX3ZpZGVvRmFjdG9yeSB7IG51bGxwdHIgfTsKKworICAgIENhcHR1
cmVEZXZpY2VNYW5hZ2VyKiBtX2F1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIgeyBudWxscHRyIH07
CisgICAgQ2FwdHVyZURldmljZU1hbmFnZXIqIG1fdmlkZW9DYXB0dXJlRGV2aWNlTWFuYWdlciB7
IG51bGxwdHIgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5h
Z2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJl
RGV2aWNlTWFuYWdlci5oCmluZGV4IGM2MGNhM2I4NTJjNjQwNzczMjc4MmIwZGEyNzhjM2I4ZmVj
NGI3ZDQuLjBjYjE3MjI0NGJhNTg4YTBiNjcwMzRkNGFiNmM3NTI0MDJmNTdmMDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZp
Y2VNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L0FWQ2FwdHVyZURldmljZU1hbmFnZXIuaApAQCAtNTEsMTEgKzUxLDEyIEBAIHB1YmxpYzoKIAog
ICAgIHN0YXRpYyBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyJiBzaW5nbGV0b24oKTsKIAotICAgIFZl
Y3RvcjxDYXB0dXJlRGV2aWNlPiBnZXRTb3VyY2VzSW5mbygpIGZpbmFsOwotCiAgICAgdm9pZCBk
ZXZpY2VDb25uZWN0ZWQoKTsKICAgICB2b2lkIGRldmljZURpc2Nvbm5lY3RlZChBVkNhcHR1cmVE
ZXZpY2UqKTsKIAorICAgIFZlY3RvcjxDYXB0dXJlRGV2aWNlPiBnZXRBdWRpb1NvdXJjZXNJbmZv
KCkgZmluYWw7CisgICAgVmVjdG9yPENhcHR1cmVEZXZpY2U+IGdldFZpZGVvU291cmNlc0luZm8o
KSBmaW5hbDsKKwogcHJvdGVjdGVkOgogICAgIHN0YXRpYyBib29sIGlzQXZhaWxhYmxlKCk7CiAK
QEAgLTY0LDYgKzY1LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgdm9pZCByZWZyZXNoQ2FwdHVyZURl
dmljZXMoKSBmaW5hbDsKICAgICB2b2lkIHJlZ2lzdGVyRm9yRGV2aWNlTm90aWZpY2F0aW9ucygp
OworICAgIHZvaWQgcmVmcmVzaEFWQ2FwdHVyZURldmljZXNPZlR5cGUoQ2FwdHVyZURldmljZTo6
RGV2aWNlVHlwZSk7CiAKICAgICBSZXRhaW5QdHI8V2ViQ29yZUFWQ2FwdHVyZURldmljZU1hbmFn
ZXJPYnNlcnZlcj4gbV9vYmpjT2JzZXJ2ZXI7CiAgICAgVmVjdG9yPENhcHR1cmVEZXZpY2U+IG1f
ZGV2aWNlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW0KaW5kZXggYjM5MTUzNmM4
YjUyZjFiN2JlOWFhMTljYjY2ZWMxY2Q0MTgyNTUwMC4uMjk2ZWQ1OWQ1OTYyMzYwYTA3NGYyMDI4
NTBjMWJhZWE3MDhhNjI5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW0KQEAg
LTMyLDcgKzMyLDYgQEAKICNpbXBvcnQgIkFWTWVkaWFDYXB0dXJlU291cmNlLmgiCiAjaW1wb3J0
ICJBVlZpZGVvQ2FwdHVyZVNvdXJjZS5oIgogI2ltcG9ydCAiQXVkaW9Tb3VyY2VQcm92aWRlci5o
IgotI2ltcG9ydCAiQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5oIgogI2ltcG9ydCAiTG9nZ2luZy5o
IgogI2ltcG9ydCAiTWVkaWFDb25zdHJhaW50cy5oIgogI2ltcG9ydCAiUmVhbHRpbWVNZWRpYVNv
dXJjZS5oIgpAQCAtOTMsMTkgKzkyLDYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzZXRVc2VB
VkZvdW5kYXRpb25BdWRpb0NhcHR1cmUoYm9vbCBlbmFibGVkKQotewotICAgIHN0YXRpYyBib29s
IGFjdGl2ZSA9IGZhbHNlOwotICAgIGlmIChhY3RpdmUgPT0gZW5hYmxlZCkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgYWN0aXZlID0gZW5hYmxlZDsKLSAgICBpZiAoYWN0aXZlKQotICAgICAgICBS
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5zZXRBdWRpb0ZhY3RvcnkoQVZB
dWRpb0NhcHR1cmVTb3VyY2U6OmZhY3RvcnkoKSk7Ci0gICAgZWxzZQotICAgICAgICBSZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5zZXRBdWRpb0ZhY3RvcnkoQ29yZUF1ZGlv
Q2FwdHVyZVNvdXJjZTo6ZmFjdG9yeSgpKTsKLX0KLQogVmVjdG9yPENhcHR1cmVEZXZpY2U+JiBB
VkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpjYXB0dXJlRGV2aWNlcygpCiB7CiAgICAgaWYgKCFpc0F2
YWlsYWJsZSgpKQpAQCAtMTM0LDMyICsxMjAsMzUgQEAgaW5saW5lIHN0YXRpYyBib29sIGRldmlj
ZUlzQXZhaWxhYmxlKEFWQ2FwdHVyZURldmljZVR5cGVkZWYgKmRldmljZSkKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotdm9pZCBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpyZWZyZXNoQ2FwdHVyZURl
dmljZXMoKQordm9pZCBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpyZWZyZXNoQVZDYXB0dXJlRGV2
aWNlc09mVHlwZShDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlIHR5cGUpCiB7CisgICAgQVNTRVJU
KHR5cGUgPT0gQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6VmlkZW8gfHwgdHlwZSA9PSBDYXB0
dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpBdWRpbyk7CisKKyAgICBOU1N0cmluZyAqcGxhdGZvcm1U
eXBlID0gKHR5cGUgPT0gQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6VmlkZW8pID8gQVZNZWRp
YVR5cGVWaWRlbyA6IEFWTWVkaWFUeXBlQXVkaW87CisKICAgICBmb3IgKEFWQ2FwdHVyZURldmlj
ZVR5cGVkZWYgKnBsYXRmb3JtRGV2aWNlIGluIFtnZXRBVkNhcHR1cmVEZXZpY2VDbGFzcygpIGRl
dmljZXNdKSB7CiAKLSAgICAgICAgQ2FwdHVyZURldmljZSBjYXB0dXJlRGV2aWNlOwotICAgICAg
ICBpZiAoIWNhcHR1cmVEZXZpY2VGcm9tRGV2aWNlSUQocGxhdGZvcm1EZXZpY2UudW5pcXVlSUQs
IGNhcHR1cmVEZXZpY2UpKSB7Ci0gICAgICAgICAgICBib29sIGhhc0F1ZGlvID0gW3BsYXRmb3Jt
RGV2aWNlIGhhc01lZGlhVHlwZTpBVk1lZGlhVHlwZUF1ZGlvXSB8fCBbcGxhdGZvcm1EZXZpY2Ug
aGFzTWVkaWFUeXBlOkFWTWVkaWFUeXBlTXV4ZWRdOwotICAgICAgICAgICAgYm9vbCBoYXNWaWRl
byA9IFtwbGF0Zm9ybURldmljZSBoYXNNZWRpYVR5cGU6QVZNZWRpYVR5cGVWaWRlb10gfHwgW3Bs
YXRmb3JtRGV2aWNlIGhhc01lZGlhVHlwZTpBVk1lZGlhVHlwZU11eGVkXTsKLSAgICAgICAgICAg
IGlmICghaGFzQXVkaW8gJiYgIWhhc1ZpZGVvKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICBDYXB0dXJlRGV2aWNlIGV4aXN0aW5nQ2FwdHVyZURldmljZTsKIAotICAgICAgICAg
ICAgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSB0eXBlID0gaGFzVmlkZW8gPyBDYXB0dXJlRGV2
aWNlOjpEZXZpY2VUeXBlOjpWaWRlbyA6IENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OkF1ZGlv
OwotICAgICAgICAgICAgQ2FwdHVyZURldmljZSBjYXB0dXJlRGV2aWNlKHBsYXRmb3JtRGV2aWNl
LnVuaXF1ZUlELCB0eXBlLCBwbGF0Zm9ybURldmljZS5sb2NhbGl6ZWROYW1lKTsKLSAgICAgICAg
ICAgIGNhcHR1cmVEZXZpY2Uuc2V0RW5hYmxlZChkZXZpY2VJc0F2YWlsYWJsZShwbGF0Zm9ybURl
dmljZSkpOwotICAgICAgICAgICAgbV9kZXZpY2VzLmFwcGVuZChjYXB0dXJlRGV2aWNlKTsKKyAg
ICAgICAgYm9vbCBoYXNNYXRjaGluZ1R5cGUgPSBbcGxhdGZvcm1EZXZpY2UgaGFzTWVkaWFUeXBl
OnBsYXRmb3JtVHlwZV0gfHwgW3BsYXRmb3JtRGV2aWNlIGhhc01lZGlhVHlwZTpBVk1lZGlhVHlw
ZU11eGVkXTsKKyAgICAgICAgaWYgKCFoYXNNYXRjaGluZ1R5cGUpCisgICAgICAgICAgICBjb250
aW51ZTsKIAotICAgICAgICAgICAgaWYgKGhhc1ZpZGVvICYmIGhhc0F1ZGlvKSB7Ci0gICAgICAg
ICAgICAgICAgLy8gQWRkIHRoZSBhdWRpbyBjb21wb25lbnQgYXMgYSBzZXBhcmF0ZSBkZXZpY2Uu
Ci0gICAgICAgICAgICAgICAgQ2FwdHVyZURldmljZSBhdWRpb0NhcHR1cmVEZXZpY2UocGxhdGZv
cm1EZXZpY2UudW5pcXVlSUQsIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OkF1ZGlvLCBwbGF0
Zm9ybURldmljZS5sb2NhbGl6ZWROYW1lKTsKLSAgICAgICAgICAgICAgICBjYXB0dXJlRGV2aWNl
LnNldEVuYWJsZWQoZGV2aWNlSXNBdmFpbGFibGUocGxhdGZvcm1EZXZpY2UpKTsKLSAgICAgICAg
ICAgICAgICBtX2RldmljZXMuYXBwZW5kKGF1ZGlvQ2FwdHVyZURldmljZSk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGNhcHR1cmVEZXZpY2VGcm9tRGV2aWNlSUQocGxh
dGZvcm1EZXZpY2UudW5pcXVlSUQsIGV4aXN0aW5nQ2FwdHVyZURldmljZSkgJiYgZXhpc3RpbmdD
YXB0dXJlRGV2aWNlLnR5cGUoKSA9PSB0eXBlKQorICAgICAgICAgICAgY29udGludWU7CisKKyAg
ICAgICAgQ2FwdHVyZURldmljZSBjYXB0dXJlRGV2aWNlKHBsYXRmb3JtRGV2aWNlLnVuaXF1ZUlE
LCB0eXBlLCBwbGF0Zm9ybURldmljZS5sb2NhbGl6ZWROYW1lKTsKKyAgICAgICAgY2FwdHVyZURl
dmljZS5zZXRFbmFibGVkKGRldmljZUlzQXZhaWxhYmxlKHBsYXRmb3JtRGV2aWNlKSk7CisgICAg
ICAgIG1fZGV2aWNlcy5hcHBlbmQoY2FwdHVyZURldmljZSk7CiAgICAgfQogfQogCit2b2lkIEFW
Q2FwdHVyZURldmljZU1hbmFnZXI6OnJlZnJlc2hDYXB0dXJlRGV2aWNlcygpCit7CisgICAgcmVm
cmVzaEFWQ2FwdHVyZURldmljZXNPZlR5cGUoQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6Vmlk
ZW8pOworICAgIHJlZnJlc2hBVkNhcHR1cmVEZXZpY2VzT2ZUeXBlKENhcHR1cmVEZXZpY2U6OkRl
dmljZVR5cGU6OkF1ZGlvKTsKK30KKwogYm9vbCBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjppc0F2
YWlsYWJsZSgpCiB7CiAgICAgcmV0dXJuIEFWRm91bmRhdGlvbkxpYnJhcnkoKTsKQEAgLTE4Miwx
MiArMTcxLDIwIEBAIEFWQ2FwdHVyZURldmljZU1hbmFnZXI6On5BVkNhcHR1cmVEZXZpY2VNYW5h
Z2VyKCkKICAgICBbbV9vYmpjT2JzZXJ2ZXIgZGlzY29ubmVjdF07CiB9CiAKLVZlY3RvcjxDYXB0
dXJlRGV2aWNlPiBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpnZXRTb3VyY2VzSW5mbygpCitWZWN0
b3I8Q2FwdHVyZURldmljZT4gQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6Z2V0QXVkaW9Tb3VyY2Vz
SW5mbygpCiB7CiAgICAgaWYgKCFpc0F2YWlsYWJsZSgpKQogICAgICAgICByZXR1cm4gVmVjdG9y
PENhcHR1cmVEZXZpY2U+KCk7CiAKLSAgICByZXR1cm4gQ2FwdHVyZURldmljZU1hbmFnZXI6Omdl
dFNvdXJjZXNJbmZvKCk7CisgICAgcmV0dXJuIENhcHR1cmVEZXZpY2VNYW5hZ2VyOjpnZXRBdWRp
b1NvdXJjZXNJbmZvKCk7Cit9CisKK1ZlY3RvcjxDYXB0dXJlRGV2aWNlPiBBVkNhcHR1cmVEZXZp
Y2VNYW5hZ2VyOjpnZXRWaWRlb1NvdXJjZXNJbmZvKCkKK3sKKyAgICBpZiAoIWlzQXZhaWxhYmxl
KCkpCisgICAgICAgIHJldHVybiBWZWN0b3I8Q2FwdHVyZURldmljZT4oKTsKKworICAgIHJldHVy
biBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6Z2V0VmlkZW9Tb3VyY2VzSW5mbygpOwogfQogCiB2b2lk
IEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnJlZ2lzdGVyRm9yRGV2aWNlTm90aWZpY2F0aW9ucygp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29y
ZUF1ZGlvQ2FwdHVyZURldmljZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZURldmljZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjMwNjk4YmRk
Mjg5OTY3M2ZkYTY1OWMxYTRlMjBiZTA0ODRiZmM0NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlRGV2aWNl
LmNwcApAQCAtMCwwICsxLDExOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDb3JlQXVkaW9DYXB0
dXJlRGV2aWNlLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiQ2Fw
dHVyZURldmljZU1hbmFnZXIuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSA8QXVk
aW9Vbml0L0F1ZGlvVW5pdC5oPgorI2luY2x1ZGUgPENvcmVNZWRpYS9DTVN5bmMuaD4KKworI2lt
cG9ydCAiQ29yZU1lZGlhU29mdExpbmsuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0
aWMgYm9vbCBnZXREZXZpY2VJbmZvKHVpbnQzMl90IGRldmljZUlELCBTdHJpbmcmIHBlcnNpc3Rl
bnRJRCwgU3RyaW5nJiBsYWJlbCkKK3sKKworICAgIENGU3RyaW5nUmVmIHVuaXF1ZUlEOworICAg
IEF1ZGlvT2JqZWN0UHJvcGVydHlBZGRyZXNzIGFkZHJlc3MgeyBrQXVkaW9EZXZpY2VQcm9wZXJ0
eURldmljZVVJRCwga0F1ZGlvRGV2aWNlUHJvcGVydHlTY29wZUlucHV0LCBrQXVkaW9PYmplY3RQ
cm9wZXJ0eUVsZW1lbnRNYXN0ZXIgfTsKKyAgICBVSW50MzIgZGF0YVNpemUgPSBzaXplb2YodW5p
cXVlSUQpOworICAgIGF1dG8gZXJyID0gQXVkaW9PYmplY3RHZXRQcm9wZXJ0eURhdGEoc3RhdGlj
X2Nhc3Q8VUludDMyPihkZXZpY2VJRCksICZhZGRyZXNzLCAwLCBudWxscHRyLCAmZGF0YVNpemUs
ICZ1bmlxdWVJRCk7CisgICAgaWYgKGVycikgeworICAgICAgICBMT0coTWVkaWEsICJDb3JlQXVk
aW9DYXB0dXJlRGV2aWNlOjpnZXREZXZpY2VJbmZvIGZhaWxlZCB0byBnZXQgZGV2aWNlIHVuaXF1
ZSBpZCB3aXRoIGVycm9yICVkICglLjRzKSIsIChpbnQpZXJyLCAoY2hhciopJmVycik7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcGVyc2lzdGVudElEID0gdW5pcXVlSUQ7Cisg
ICAgQ0ZSZWxlYXNlKHVuaXF1ZUlEKTsKKworICAgIENGU3RyaW5nUmVmIGxvY2FsaXplZE5hbWU7
CisgICAgYWRkcmVzcyA9IHsga0F1ZGlvT2JqZWN0UHJvcGVydHlOYW1lLCBrQXVkaW9PYmplY3RQ
cm9wZXJ0eVNjb3BlR2xvYmFsLCBrQXVkaW9PYmplY3RQcm9wZXJ0eUVsZW1lbnRNYXN0ZXIgfTsK
KyAgICBkYXRhU2l6ZSA9IHNpemVvZihsb2NhbGl6ZWROYW1lKTsKKyAgICBlcnIgPSBBdWRpb09i
amVjdEdldFByb3BlcnR5RGF0YShzdGF0aWNfY2FzdDxVSW50MzI+KGRldmljZUlEKSwgJmFkZHJl
c3MsIDAsIG51bGxwdHIsICZkYXRhU2l6ZSwgJmxvY2FsaXplZE5hbWUpOworICAgIGlmIChlcnIp
IHsKKyAgICAgICAgTE9HKE1lZGlhLCAiQ29yZUF1ZGlvQ2FwdHVyZURldmljZTo6Z2V0RGV2aWNl
SW5mbyBmYWlsZWQgdG8gZ2V0IGRldmljZSBuYW1lIHdpdGggZXJyb3IgJWQgKCUuNHMpIiwgKGlu
dCllcnIsIChjaGFyKikmZXJyKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBs
YWJlbCA9IGxvY2FsaXplZE5hbWU7CisgICAgQ0ZSZWxlYXNlKGxvY2FsaXplZE5hbWUpOworCisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK1JlZlB0cjxDb3JlQXVkaW9DYXB0dXJlRGV2aWNlPiBDb3Jl
QXVkaW9DYXB0dXJlRGV2aWNlOjpjcmVhdGUodWludDMyX3QgZGV2aWNlSUQpCit7CisgICAgU3Ry
aW5nIHBlcnNpc3RlbnRJRDsKKyAgICBTdHJpbmcgbGFiZWw7CisgICAgaWYgKCFnZXREZXZpY2VJ
bmZvKGRldmljZUlELCBwZXJzaXN0ZW50SUQsIGxhYmVsKSkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IENvcmVBdWRpb0NhcHR1cmVEZXZpY2UoZGV2
aWNlSUQsIHBlcnNpc3RlbnRJRCwgbGFiZWwpKTsKK30KKworQ29yZUF1ZGlvQ2FwdHVyZURldmlj
ZTo6Q29yZUF1ZGlvQ2FwdHVyZURldmljZSh1aW50MzJfdCBkZXZpY2VJRCwgY29uc3QgU3RyaW5n
JiBwZXJzaXN0ZW50SUQsIGNvbnN0IFN0cmluZyYgbGFiZWwpCisgICAgOiBDYXB0dXJlRGV2aWNl
KHBlcnNpc3RlbnRJRCwgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6QXVkaW8sIGxhYmVsKQor
ICAgICwgbV9kZXZpY2VJRChkZXZpY2VJRCkKK3sKK30KKwordWludDMyX3QgQ29yZUF1ZGlvQ2Fw
dHVyZURldmljZTo6ZGV2aWNlSUQoKQoreworICAgIHJldHVybiBtX2RldmljZUlEOworfQorCitS
ZXRhaW5QdHI8Q01DbG9ja1JlZj4gQ29yZUF1ZGlvQ2FwdHVyZURldmljZTo6ZGV2aWNlQ2xvY2so
KQoreworICAgIGlmIChtX2RldmljZUNsb2NrKQorICAgICAgICByZXR1cm4gbV9kZXZpY2VDbG9j
azsKKworICAgIENNQ2xvY2tSZWYgY2xvY2s7CisgICAgYXV0byBlcnIgPSBDTUF1ZGlvRGV2aWNl
Q2xvY2tDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcGVyc2lzdGVudElkKCkuY3JlYXRlQ0ZT
dHJpbmcoKS5nZXQoKSwgJmNsb2NrKTsKKyAgICBpZiAoZXJyKSB7CisgICAgICAgIExPRyhNZWRp
YSwgIkNvcmVBdWRpb0NhcHR1cmVEZXZpY2U6OkNNQXVkaW9EZXZpY2VDbG9ja0NyZWF0ZSglcCkg
Q01BdWRpb0RldmljZUNsb2NrQ3JlYXRlIGZhaWxlZCB3aXRoIGVycm9yICVkICglLjRzKSIsIHRo
aXMsIChpbnQpZXJyLCAoY2hhciopJmVycik7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IH0KKworICAgIG1fZGV2aWNlQ2xvY2sgPSBhZG9wdENGKGNsb2NrKTsKKworICAgIHJldHVybiBt
X2RldmljZUNsb2NrOworfQorCitib29sIENvcmVBdWRpb0NhcHR1cmVEZXZpY2U6OmlzQWxpdmUo
KQoreworICAgIEF1ZGlvT2JqZWN0UHJvcGVydHlBZGRyZXNzIGFkZHJlc3MgPSB7IGtBdWRpb0Rl
dmljZVByb3BlcnR5RGV2aWNlSXNBbGl2ZSwga0F1ZGlvT2JqZWN0UHJvcGVydHlTY29wZUdsb2Jh
bCwga0F1ZGlvT2JqZWN0UHJvcGVydHlFbGVtZW50TWFzdGVyIH07CisgICAgVUludDMyIHN0YXRl
ID0gMDsKKyAgICBVSW50MzIgZGF0YVNpemUgPSBzaXplb2Yoc3RhdGUpOworICAgIGlmIChBdWRp
b09iamVjdEdldFByb3BlcnR5RGF0YShzdGF0aWNfY2FzdDxVSW50MzI+KG1fZGV2aWNlSUQpLCAm
YWRkcmVzcywgMCwgbnVsbHB0ciwgJmRhdGFTaXplLCAmc3RhdGUpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgcmV0dXJuIHN0YXRlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVEZXZpY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlRGV2
aWNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNzQ2OTkxMDYyMTRjYjQ0MDg3ZGI0YTdmYzBlYmQyY2YyMGFjNjVi
ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9Db3JlQXVkaW9DYXB0dXJlRGV2aWNlLmgKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
RU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIkNhcHR1cmVEZXZpY2UuaCIKKyNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK3R5
cGVkZWYgc3RydWN0IE9wYXF1ZUNNQ2xvY2sqIENNQ2xvY2tSZWY7CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgQ29yZUF1ZGlvQ2FwdHVyZURldmljZSA6IHB1YmxpYyBDYXB0dXJlRGV2
aWNlLCBwdWJsaWMgUmVmQ291bnRlZDxDb3JlQXVkaW9DYXB0dXJlRGV2aWNlPiB7CitwdWJsaWM6
CisKKyAgICBzdGF0aWMgUmVmUHRyPENvcmVBdWRpb0NhcHR1cmVEZXZpY2U+IGNyZWF0ZSh1aW50
MzJfdCk7CisgICAgdmlydHVhbCB+Q29yZUF1ZGlvQ2FwdHVyZURldmljZSgpID0gZGVmYXVsdDsK
KworICAgIHVpbnQzMl90IGRldmljZUlEKCk7CisgICAgUmV0YWluUHRyPENNQ2xvY2tSZWY+IGRl
dmljZUNsb2NrKCk7CisgICAgYm9vbCBpc0FsaXZlKCk7CisKK3ByaXZhdGU6CisgICAgQ29yZUF1
ZGlvQ2FwdHVyZURldmljZSh1aW50MzJfdCwgY29uc3QgU3RyaW5nJiBwZXJzaXN0ZW50SUQsIGNv
bnN0IFN0cmluZyYgbGFiZWwpOworCisgICAgdWludDMyX3QgbV9kZXZpY2VJRCB7IDAgfTsKKyAg
ICBSZXRhaW5QdHI8Q01DbG9ja1JlZj4gbV9kZXZpY2VDbG9jazsKK307CisKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0Nh
cHR1cmVEZXZpY2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjcy
NmI5OGE3MTE2MmFmMTYyOWZlMmRlNmExZTI3MGRiZjM0NmViYwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJl
RGV2aWNlTWFuYWdlci5jcHAKQEAgLTAsMCArMSwxNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
Q29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pCisKKyNpbmNsdWRlICJDb3JlQXVkaW9DYXB0dXJlRGV2aWNlLmgiCisjaW5jbHVkZSAiTG9n
Z2luZy5oIgorI2luY2x1ZGUgPEF1ZGlvVW5pdC9BdWRpb1VuaXQuaD4KKyNpbmNsdWRlIDxDb3Jl
TWVkaWEvQ01TeW5jLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKKyNpbXBv
cnQgIkNvcmVNZWRpYVNvZnRMaW5rLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ29yZUF1
ZGlvQ2FwdHVyZURldmljZU1hbmFnZXImIENvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyOjpz
aW5nbGV0b24oKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDb3JlQXVkaW9DYXB0dXJl
RGV2aWNlTWFuYWdlcj4gbWFuYWdlcjsKKyAgICByZXR1cm4gbWFuYWdlcjsKK30KKworVmVjdG9y
PENhcHR1cmVEZXZpY2U+JiBDb3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlcjo6Y2FwdHVyZURl
dmljZXMoKQoreworICAgIGNvcmVBdWRpb0NhcHR1cmVEZXZpY2VzKCk7CisgICAgcmV0dXJuIG1f
ZGV2aWNlczsKK30KKworc3RhdGljIGJvb2wgZGV2aWNlSGFzSW5wdXRTdHJlYW1zKEF1ZGlvT2Jq
ZWN0SUQgZGV2aWNlSUQpCit7CisgICAgVUludDMyIGRhdGFTaXplID0gMDsKKyAgICBBdWRpb09i
amVjdFByb3BlcnR5QWRkcmVzcyBhZGRyZXNzID0geyBrQXVkaW9EZXZpY2VQcm9wZXJ0eVN0cmVh
bXMsIGtBdWRpb0RldmljZVByb3BlcnR5U2NvcGVJbnB1dCwga0F1ZGlvT2JqZWN0UHJvcGVydHlF
bGVtZW50TWFzdGVyIH07CisgICAgYXV0byBlcnIgPSBBdWRpb09iamVjdEdldFByb3BlcnR5RGF0
YVNpemUoZGV2aWNlSUQsICZhZGRyZXNzLCAwLCBudWxscHRyLCAmZGF0YVNpemUpOworCisgICAg
cmV0dXJuICFlcnIgJiYgZGF0YVNpemU7Cit9CisKK1ZlY3RvcjxSZWY8Q29yZUF1ZGlvQ2FwdHVy
ZURldmljZT4+JiBDb3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlcjo6Y29yZUF1ZGlvQ2FwdHVy
ZURldmljZXMoKQoreworICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVkOworICAgIGlmICghaW5p
dGlhbGl6ZWQpIHsKKyAgICAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOworICAgICAgICByZWZyZXNo
QXVkaW9DYXB0dXJlRGV2aWNlcygpOworCisgICAgICAgIEF1ZGlvT2JqZWN0UHJvcGVydHlBZGRy
ZXNzIGFkZHJlc3MgPSB7IGtBdWRpb0hhcmR3YXJlUHJvcGVydHlEZXZpY2VzLCBrQXVkaW9PYmpl
Y3RQcm9wZXJ0eVNjb3BlR2xvYmFsLCBrQXVkaW9PYmplY3RQcm9wZXJ0eUVsZW1lbnRNYXN0ZXIg
fTsKKyAgICAgICAgYXV0byBlcnIgPSBBdWRpb09iamVjdEFkZFByb3BlcnR5TGlzdGVuZXIoa0F1
ZGlvT2JqZWN0U3lzdGVtT2JqZWN0LCAmYWRkcmVzcywgZGV2aWNlc0NoYW5nZWQsIHRoaXMpOwor
ICAgICAgICBpZiAoZXJyKQorICAgICAgICAgICAgTE9HX0VSUk9SKCJDb3JlQXVkaW9DYXB0dXJl
RGV2aWNlTWFuYWdlcjo6ZGV2aWNlcyglcCkgQXVkaW9PYmplY3RBZGRQcm9wZXJ0eUxpc3RlbmVy
IHJldHVybmVkIGVycm9yICVkICglLjRzKSIsIHRoaXMsIChpbnQpZXJyLCAoY2hhciopJmVycik7
CisgICAgfQorCisgICAgcmV0dXJuIG1fY29yZUF1ZGlvQ2FwdHVyZURldmljZXM7Cit9CisKK3Zv
aWQgQ29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXI6OnJlZnJlc2hBdWRpb0NhcHR1cmVEZXZp
Y2VzKCkKK3sKKyAgICBib29sIGhhdmVEZXZpY2VDaGFuZ2VzID0gZmFsc2U7CisKKyAgICBBdWRp
b09iamVjdFByb3BlcnR5QWRkcmVzcyBhZGRyZXNzID0geyBrQXVkaW9IYXJkd2FyZVByb3BlcnR5
RGV2aWNlcywga0F1ZGlvT2JqZWN0UHJvcGVydHlTY29wZUdsb2JhbCwga0F1ZGlvT2JqZWN0UHJv
cGVydHlFbGVtZW50TWFzdGVyIH07CisgICAgVUludDMyIGRhdGFTaXplID0gMDsKKyAgICBhdXRv
IGVyciA9IEF1ZGlvT2JqZWN0R2V0UHJvcGVydHlEYXRhU2l6ZShrQXVkaW9PYmplY3RTeXN0ZW1P
YmplY3QsICZhZGRyZXNzLCAwLCBudWxscHRyLCAmZGF0YVNpemUpOworICAgIGlmIChlcnIpIHsK
KyAgICAgICAgTE9HKE1lZGlhLCAiQ29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXI6OnJlZnJl
c2hBdWRpb0NhcHR1cmVEZXZpY2VzKCVwKSBmYWlsZWQgdG8gZ2V0IHNpemUgb2YgZGV2aWNlIGxp
c3QgJWQgKCUuNHMpIiwgdGhpcywgKGludCllcnIsIChjaGFyKikmZXJyKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIHVpbnQzMiBkZXZpY2VDb3VudCA9IGRhdGFTaXplIC8gc2l6ZW9m
KEF1ZGlvT2JqZWN0SUQpOworICAgIEF1ZGlvT2JqZWN0SUQgZGV2aWNlSURzW2RldmljZUNvdW50
XTsKKyAgICBlcnIgPSBBdWRpb09iamVjdEdldFByb3BlcnR5RGF0YShrQXVkaW9PYmplY3RTeXN0
ZW1PYmplY3QsICZhZGRyZXNzLCAwLCBudWxscHRyLCAmZGF0YVNpemUsIGRldmljZUlEcyk7Cisg
ICAgaWYgKGVycikgeworICAgICAgICBMT0coTWVkaWEsICJDb3JlQXVkaW9DYXB0dXJlRGV2aWNl
TWFuYWdlcjo6cmVmcmVzaEF1ZGlvQ2FwdHVyZURldmljZXMoJXApIGZhaWxlZCB0byBnZXQgZGV2
aWNlIGxpc3QgJWQgKCUuNHMpIiwgdGhpcywgKGludCllcnIsIChjaGFyKikmZXJyKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGV2aWNlQ291
bnQ7IGkrKykgeworICAgICAgICBBdWRpb09iamVjdElEIGRldmljZUlEID0gZGV2aWNlSURzW2ld
OworICAgICAgICBpZiAoIWRldmljZUhhc0lucHV0U3RyZWFtcyhkZXZpY2VJRCkpCisgICAgICAg
ICAgICBjb250aW51ZTsKKworICAgICAgICBib29sIGZvdW5kID0gZmFsc2U7CisgICAgICAgIGZv
ciAoYXV0byYgZGV2aWNlIDogbV9jb3JlQXVkaW9DYXB0dXJlRGV2aWNlcykgeworICAgICAgICAg
ICAgaWYgKGRldmljZS0+ZGV2aWNlSUQoKSA9PSBkZXZpY2VJRCkgeworICAgICAgICAgICAgICAg
IGZvdW5kID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorCisgICAgICAgIGlmIChmb3VuZCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisg
ICAgICAgIGF1dG8gZGV2aWNlID0gQ29yZUF1ZGlvQ2FwdHVyZURldmljZTo6Y3JlYXRlKGRldmlj
ZUlEKTsKKyAgICAgICAgaWYgKCFkZXZpY2UpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgbV9jb3JlQXVkaW9DYXB0dXJlRGV2aWNlcy5hcHBlbmQoZGV2aWNlLnJlbGVhc2VOb25OdWxs
KCkpOworCisgICAgICAgIGhhdmVEZXZpY2VDaGFuZ2VzID0gdHJ1ZTsKKyAgICB9CisKKyAgICBm
b3IgKGF1dG8mIGRldmljZSA6IG1fY29yZUF1ZGlvQ2FwdHVyZURldmljZXMpIHsKKyAgICAgICAg
Ym9vbCBpc0FsaXZlID0gZGV2aWNlLT5pc0FsaXZlKCk7CisgICAgICAgIGlmIChkZXZpY2UtPmVu
YWJsZWQoKSAhPSBpc0FsaXZlKSB7CisgICAgICAgICAgICBkZXZpY2UtPnNldEVuYWJsZWQoaXNB
bGl2ZSk7CisgICAgICAgICAgICBoYXZlRGV2aWNlQ2hhbmdlcyA9IHRydWU7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBpZiAoaGF2ZURldmljZUNoYW5nZXMpIHsKKyAgICAgICAgbV9kZXZpY2Vz
ID0gVmVjdG9yPENhcHR1cmVEZXZpY2U+KCk7CisKKyAgICAgICAgZm9yIChhdXRvICZkZXZpY2Ug
OiBtX2NvcmVBdWRpb0NhcHR1cmVEZXZpY2VzKSB7CisgICAgICAgICAgICBDYXB0dXJlRGV2aWNl
IGNhcHR1cmVEZXZpY2UoZGV2aWNlLT5wZXJzaXN0ZW50SWQoKSwgQ2FwdHVyZURldmljZTo6RGV2
aWNlVHlwZTo6QXVkaW8sIGRldmljZS0+bGFiZWwoKSk7CisgICAgICAgICAgICBjYXB0dXJlRGV2
aWNlLnNldEVuYWJsZWQoZGV2aWNlLT5lbmFibGVkKCkpOworICAgICAgICAgICAgbV9kZXZpY2Vz
LmFwcGVuZChjYXB0dXJlRGV2aWNlKTsKKyAgICAgICAgfQorICAgIH0KKworfQorCitPU1N0YXR1
cyBDb3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlcjo6ZGV2aWNlc0NoYW5nZWQoQXVkaW9PYmpl
Y3RJRCwgVUludDMyLCBjb25zdCBBdWRpb09iamVjdFByb3BlcnR5QWRkcmVzcyosIHZvaWQgKnVz
ZXJEYXRhKQoreworICAgIHN0YXRpY19jYXN0PENvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2Vy
Kj4odXNlckRhdGEpLT5yZWZyZXNoQXVkaW9DYXB0dXJlRGV2aWNlcygpOworICAgIHJldHVybiAw
OworfQorCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJ
QV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmRkZTlmZjA3N2RlNmUyNTkwMWU1MDAyZmY5YjhhYTU5Zjg5MjU1YWEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29y
ZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIuaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiQ2FwdHVyZURldmljZS5oIgorI2luY2x1
ZGUgIkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgiCisjaW5jbHVkZSA8Q29yZUF1ZGlvL0NvcmVBdWRp
by5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIENvcmVBdWRpb0NhcHR1cmVEZXZpY2U7CisKK2NsYXNzIENvcmVBdWRpb0NhcHR1cmVE
ZXZpY2VNYW5hZ2VyIGZpbmFsIDogcHVibGljIENhcHR1cmVEZXZpY2VNYW5hZ2VyIHsKKyAgICBm
cmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8Q29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXI+
OworcHVibGljOgorICAgIHN0YXRpYyBDb3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlciYgc2lu
Z2xldG9uKCk7CisKKyAgICBWZWN0b3I8Q2FwdHVyZURldmljZT4mIGNhcHR1cmVEZXZpY2VzKCkg
ZmluYWw7CisKKyAgICBWZWN0b3I8UmVmPENvcmVBdWRpb0NhcHR1cmVEZXZpY2U+PiYgY29yZUF1
ZGlvQ2FwdHVyZURldmljZXMoKTsKKworcHJpdmF0ZToKKyAgICBDb3JlQXVkaW9DYXB0dXJlRGV2
aWNlTWFuYWdlcigpID0gZGVmYXVsdDsKKyAgICB+Q29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFn
ZXIoKSA9IGRlZmF1bHQ7CisgICAgCisgICAgc3RhdGljIE9TU3RhdHVzIGRldmljZXNDaGFuZ2Vk
KEF1ZGlvT2JqZWN0SUQsIFVJbnQzMiwgY29uc3QgQXVkaW9PYmplY3RQcm9wZXJ0eUFkZHJlc3Mq
LCB2b2lkKik7CisKKyAgICB2b2lkIHJlZnJlc2hBdWRpb0NhcHR1cmVEZXZpY2VzKCk7CisKKyAg
ICBWZWN0b3I8Q2FwdHVyZURldmljZT4gbV9kZXZpY2VzOworICAgIFZlY3RvcjxSZWY8Q29yZUF1
ZGlvQ2FwdHVyZURldmljZT4+IG1fY29yZUF1ZGlvQ2FwdHVyZURldmljZXM7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlv
Q2FwdHVyZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHAKaW5kZXggMjljNzAxMTQzOGM1MDQ0YWNiYWYy
ZTZlYWJlNzk5M2EzZDRmZmQ4ZC4uNzMzMzU1OTY5ZTAzZDE2NjhhOTFmMTQwMjdkNjZlODE1NjVl
MjQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmNwcApAQCAtMzAsNiArMzAs
OCBAQAogCiAjaW5jbHVkZSAiQXVkaW9TYW1wbGVCdWZmZXJMaXN0LmgiCiAjaW5jbHVkZSAiQXVk
aW9TYW1wbGVEYXRhU291cmNlLmgiCisjaW5jbHVkZSAiQ29yZUF1ZGlvQ2FwdHVyZURldmljZS5o
IgorI2luY2x1ZGUgIkNvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAi
TG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lZGlhVGltZUFWRm91bmRhdGlvbi5oIgogI2luY2x1ZGUg
PEF1ZGlvVG9vbGJveC9BdWRpb0NvbnZlcnRlci5oPgpAQCAtNzgsNyArODAsMTIgQEAgQ29yZUF1
ZGlvQ2FwdHVyZVNvdXJjZTo6Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZShjb25zdCBDYXB0dXJlRGV2
aWNlJiBkZXZpY2VJbmZvKQogICAgIDogUmVhbHRpbWVNZWRpYVNvdXJjZShlbXB0eVN0cmluZygp
LCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbywgZGV2aWNlSW5mby5sYWJlbCgpKQog
ICAgICwgbV9jYXB0dXJlRGV2aWNlSUQoMCkKIHsKLSAgICAvLyBGSVhNRTogdXNlIGRldmljZUlu
Zm8gdG8gc2V0IHRoZSBtX2NhcHR1cmVEZXZpY2VJRAorICAgIGZvciAoYXV0byYgcGxhdGZvcm1E
ZXZpY2UgOiBDb3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkuY29yZUF1
ZGlvQ2FwdHVyZURldmljZXMoKSkgeworICAgICAgICBpZiAocGxhdGZvcm1EZXZpY2UtPnBlcnNp
c3RlbnRJZCgpID09IGRldmljZUluZm8ucGVyc2lzdGVudElkKCkpIHsKKyAgICAgICAgICAgIG1f
Y2FwdHVyZURldmljZUlEID0gcGxhdGZvcm1EZXZpY2UtPmRldmljZUlEKCk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgIH0KIAogICAgIHNldFBlcnNpc3RlbnRJRChkZXZpY2VJ
bmZvLnBlcnNpc3RlbnRJZCgpKTsKICAgICBzZXRNdXRlZCh0cnVlKTsKQEAgLTQwOCwyNCArNDE1
LDI2IEBAIE9TU3RhdHVzIENvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnNldHVwQXVkaW9Vbml0cygp
CiAKIHZvaWQgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKCkKIHsK
LSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX2ludGVybmFsU3RhdGVMb2NrKTsKLSAg
ICBpZiAobV9pb1VuaXRTdGFydGVkKQotICAgICAgICByZXR1cm47CisgICAgeworICAgICAgICBz
dGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX2ludGVybmFsU3RhdGVMb2NrKTsKKyAgICAgICAg
aWYgKG1faW9Vbml0U3RhcnRlZCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBPU1N0
YXR1cyBlcnI7CisgICAgICAgIGlmICghbV9pb1VuaXQpIHsKKyAgICAgICAgICAgIGVyciA9IHNl
dHVwQXVkaW9Vbml0cygpOworICAgICAgICAgICAgaWYgKGVycikKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KIAotICAgIE9TU3RhdHVzIGVycjsKLSAgICBpZiAoIW1faW9Vbml0
KSB7Ci0gICAgICAgIGVyciA9IHNldHVwQXVkaW9Vbml0cygpOwotICAgICAgICBpZiAoZXJyKQor
ICAgICAgICBlcnIgPSBBdWRpb091dHB1dFVuaXRTdGFydChtX2lvVW5pdCk7CisgICAgICAgIGlm
IChlcnIpIHsKKyAgICAgICAgICAgIExPRyhNZWRpYSwgIkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6
OnN0YXJ0KCVwKSBBdWRpb091dHB1dFVuaXRTdGFydCBmYWlsZWQgd2l0aCBlcnJvciAlZCAoJS40
cykiLCB0aGlzLCAoaW50KWVyciwgKGNoYXIqKSZlcnIpOwogICAgICAgICAgICAgcmV0dXJuOwot
ICAgIH0KKyAgICAgICAgfQogCi0gICAgZXJyID0gQXVkaW9PdXRwdXRVbml0U3RhcnQobV9pb1Vu
aXQpOwotICAgIGlmIChlcnIpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiQ29yZUF1ZGlvQ2FwdHVy
ZVNvdXJjZTo6c3RhcnQoJXApIEF1ZGlvT3V0cHV0VW5pdFN0YXJ0IGZhaWxlZCB3aXRoIGVycm9y
ICVkICglLjRzKSIsIHRoaXMsIChpbnQpZXJyLCAoY2hhciopJmVycik7Ci0gICAgICAgIHJldHVy
bjsKKyAgICAgICAgbV9pb1VuaXRTdGFydGVkID0gdHJ1ZTsKICAgICB9Ci0KLSAgICBtX2lvVW5p
dFN0YXJ0ZWQgPSB0cnVlOwogICAgIHNldE11dGVkKGZhbHNlKTsKIH0KIApAQCAtNDMzLDE0ICs0
NDIsMTQgQEAgdm9pZCBDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpzdG9wUHJvZHVjaW5nRGF0YSgp
CiB7CiAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9pbnRlcm5hbFN0YXRlTG9jayk7
CiAKLSAgICBBU1NFUlQobV9pb1VuaXQpOwotCi0gICAgYXV0byBlcnIgPSBBdWRpb091dHB1dFVu
aXRTdG9wKG1faW9Vbml0KTsKLSAgICBpZiAoZXJyKSB7Ci0gICAgICAgIExPRyhNZWRpYSwgIkNv
cmVBdWRpb0NhcHR1cmVTb3VyY2U6OnN0b3AoJXApIEF1ZGlvT3V0cHV0VW5pdFN0b3AgZmFpbGVk
IHdpdGggZXJyb3IgJWQgKCUuNHMpIiwgdGhpcywgKGludCllcnIsIChjaGFyKikmZXJyKTsKLSAg
ICAgICAgcmV0dXJuOworICAgIGlmIChtX2lvVW5pdCkgeworICAgICAgICBhdXRvIGVyciA9IEF1
ZGlvT3V0cHV0VW5pdFN0b3AobV9pb1VuaXQpOworICAgICAgICBpZiAoZXJyKSB7CisgICAgICAg
ICAgICBMT0coTWVkaWEsICJDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpzdG9wKCVwKSBBdWRpb091
dHB1dFVuaXRTdG9wIGZhaWxlZCB3aXRoIGVycm9yICVkICglLjRzKSIsIHRoaXMsIChpbnQpZXJy
LCAoY2hhciopJmVycik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAg
bV9pb1VuaXRTdGFydGVkID0gZmFsc2U7CiAgICAgfQotICAgIG1faW9Vbml0U3RhcnRlZCA9IGZh
bHNlOwogICAgIHNldE11dGVkKHRydWUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlck1hYy5jcHAKaW5kZXggMTUwMThjOTk5NGVlMDQ4ODM0MTRmZDU2OTg1ZDhk
MTJkODQ0OTIxYS4uNjZjYjRjYmI3M2IzOWMwY2E0OTg1OTFhZTgyMDQ5ODNkOWFiZjAxZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXJNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmNwcApAQCAtMzMsOCAr
MzMsMTAgQEAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogI2luY2x1ZGUgIlJlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXJNYWMuaCIKIAorI2luY2x1ZGUgIkFWQXVkaW9DYXB0dXJlU291cmNlLmgi
CiAjaW5jbHVkZSAiQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5oIgogI2luY2x1ZGUgIkFWVmlkZW9D
YXB0dXJlU291cmNlLmgiCisjaW5jbHVkZSAiQ29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIu
aCIKICNpbmNsdWRlICJDb3JlQXVkaW9DYXB0dXJlU291cmNlLmgiCiAjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtUHJpdmF0ZS5oIgpAQCAtNDIsNiArNDQsMjQgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCit2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJN
YWM6OnNldFVzZUFWRm91bmRhdGlvbkF1ZGlvQ2FwdHVyZShib29sIGVuYWJsZWQpCit7CisgICAg
c3RhdGljIGJvb2wgYWN0aXZlID0gZmFsc2U7CisgICAgaWYgKGFjdGl2ZSA9PSBlbmFibGVkKQor
ICAgICAgICByZXR1cm47CisKKyAgICBhY3RpdmUgPSBlbmFibGVkOworICAgIGlmIChhY3RpdmUp
IHsKKyAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9uKCkuc2V0QXVk
aW9GYWN0b3J5KEFWQXVkaW9DYXB0dXJlU291cmNlOjpmYWN0b3J5KCkpOworICAgICAgICBSZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5zZXRBdWRpb0NhcHR1cmVEZXZpY2VN
YW5hZ2VyKEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmdsZXRvbigpKTsKKyAgICB9IGVsc2Ug
eworICAgICAgICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5zZXRBdWRp
b0ZhY3RvcnkoQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6ZmFjdG9yeSgpKTsKKyAgICAgICAgUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9uKCkuc2V0QXVkaW9DYXB0dXJlRGV2aWNl
TWFuYWdlcihDb3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkpOworICAg
IH0KK30KKworCisKIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXImIFJlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXI6OnBsYXRmb3JtQ2VudGVyKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwpAQCAtNjUsNiArODUsOSBAQCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjOjpSZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyTWFjKCkKIAogICAgIG1fYXVkaW9GYWN0b3J5ID0gJkNvcmVBdWRp
b0NhcHR1cmVTb3VyY2U6OmZhY3RvcnkoKTsKICAgICBtX3ZpZGVvRmFjdG9yeSA9ICZBVlZpZGVv
Q2FwdHVyZVNvdXJjZTo6ZmFjdG9yeSgpOworCisgICAgbV9hdWRpb0NhcHR1cmVEZXZpY2VNYW5h
Z2VyID0gJkNvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKTsKKyAgICBt
X3ZpZGVvQ2FwdHVyZURldmljZU1hbmFnZXIgPSAmQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2lu
Z2xldG9uKCk7CiB9CiAKIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6On5SZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyTWFjKCkKQEAgLTEwMyw3ICsxMjYsNyBAQCB2b2lkIFJlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXJNYWM6OmNyZWF0ZU1lZGlhU3RyZWFtKE5ld01lZGlhU3RyZWFtSGFuZGxl
ciBjb21wbAogICAgIFN0cmluZyBpbnZhbGlkQ29uc3RyYWludDsKIAogICAgIGlmICghYXVkaW9E
ZXZpY2VJRC5pc0VtcHR5KCkpIHsKLSAgICAgICAgYXV0byBhdWRpb0RldmljZSA9IEFWQ2FwdHVy
ZURldmljZU1hbmFnZXI6OnNpbmdsZXRvbigpLmRldmljZVdpdGhVSUQoYXVkaW9EZXZpY2VJRCwg
UmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6QXVkaW8pOworICAgICAgICBhdXRvIGF1ZGlvRGV2
aWNlID0gbV9hdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyLT5kZXZpY2VXaXRoVUlEKGF1ZGlvRGV2
aWNlSUQsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvKTsKICAgICAgICAgaWYgKGF1
ZGlvRGV2aWNlICYmIG1fYXVkaW9GYWN0b3J5KSB7CiAgICAgICAgICAgICBpZiAoYXV0byBhdWRp
b1NvdXJjZSA9IG1fYXVkaW9GYWN0b3J5LT5jcmVhdGVNZWRpYVNvdXJjZUZvckNhcHR1cmVEZXZp
Y2VXaXRoQ29uc3RyYWludHMoYXVkaW9EZXZpY2UudmFsdWUoKSwgYXVkaW9Db25zdHJhaW50cywg
aW52YWxpZENvbnN0cmFpbnQpKQogICAgICAgICAgICAgICAgIGF1ZGlvU291cmNlcy5hcHBlbmQo
YXVkaW9Tb3VyY2UucmVsZWFzZU5vbk51bGwoKSk7CkBAIC0xMTQsNyArMTM3LDcgQEAgdm9pZCBS
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjOjpjcmVhdGVNZWRpYVN0cmVhbShOZXdNZWRpYVN0
cmVhbUhhbmRsZXIgY29tcGwKICAgICAgICAgfQogICAgIH0KICAgICBpZiAoIXZpZGVvRGV2aWNl
SUQuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGF1dG8gdmlkZW9EZXZpY2UgPSBBVkNhcHR1cmVEZXZp
Y2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5kZXZpY2VXaXRoVUlEKHZpZGVvRGV2aWNlSUQsIFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvKTsKKyAgICAgICAgYXV0byB2aWRlb0RldmljZSA9
IG1fdmlkZW9DYXB0dXJlRGV2aWNlTWFuYWdlci0+ZGV2aWNlV2l0aFVJRCh2aWRlb0RldmljZUlE
LCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpWaWRlbyk7CiAgICAgICAgIGlmICh2aWRlb0Rl
dmljZSAmJiBtX3ZpZGVvRmFjdG9yeSkgewogICAgICAgICAgICAgaWYgKGF1dG8gdmlkZW9Tb3Vy
Y2UgPSBtX3ZpZGVvRmFjdG9yeS0+Y3JlYXRlTWVkaWFTb3VyY2VGb3JDYXB0dXJlRGV2aWNlV2l0
aENvbnN0cmFpbnRzKHZpZGVvRGV2aWNlLnZhbHVlKCksIHZpZGVvQ29uc3RyYWludHMsIGludmFs
aWRDb25zdHJhaW50KSkKICAgICAgICAgICAgICAgICB2aWRlb1NvdXJjZXMuYXBwZW5kKHZpZGVv
U291cmNlLnJlbGVhc2VOb25OdWxsKCkpOwpAQCAtMTMzLDcgKzE1NiwxNSBAQCB2b2lkIFJlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OmNyZWF0ZU1lZGlhU3RyZWFtKE5ld01lZGlhU3RyZWFt
SGFuZGxlciBjb21wbAogCiBWZWN0b3I8Q2FwdHVyZURldmljZT4gUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlck1hYzo6Z2V0TWVkaWFTdHJlYW1EZXZpY2VzKCkKIHsKLSAgICByZXR1cm4gQVZDYXB0
dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkuZ2V0U291cmNlc0luZm8oKTsKKyAgICBWZWN0
b3I8Q2FwdHVyZURldmljZT4gcmVzdWx0OworCisgICAgaWYgKG1fYXVkaW9DYXB0dXJlRGV2aWNl
TWFuYWdlcikKKyAgICAgICAgcmVzdWx0LmFwcGVuZFZlY3RvcihtX2F1ZGlvQ2FwdHVyZURldmlj
ZU1hbmFnZXItPmdldEF1ZGlvU291cmNlc0luZm8oKSk7CisKKyAgICBpZiAobV92aWRlb0NhcHR1
cmVEZXZpY2VNYW5hZ2VyKQorICAgICAgICByZXN1bHQuYXBwZW5kVmVjdG9yKG1fdmlkZW9DYXB0
dXJlRGV2aWNlTWFuYWdlci0+Z2V0VmlkZW9Tb3VyY2VzSW5mbygpKTsKKworICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKIFZlY3RvcjxTdHJpbmc+IFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6
OmJlc3RTb3VyY2VzRm9yVHlwZUFuZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5
cGUgdHlwZSwgY29uc3QgTWVkaWFDb25zdHJhaW50cyYgY29uc3RyYWludHMsIFN0cmluZyYgaW52
YWxpZENvbnN0cmFpbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMu
aAppbmRleCA3NmJjODI3ZTU0OWRhZjQyYzEzNmJjNzlmM2FhNzI5YmU3NDJiNjU0Li4xYmY0OTdm
ZDZkN2MzYzE2NmZkYTgyZGVhMmIxMzFiMTNjOGE0NDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1h
Yy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyTWFjLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgY2xhc3MgUmVhbHRpbWVN
ZWRpYVNvdXJjZUNlbnRlck1hYyBmaW5hbCA6IHB1YmxpYyBSZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyIHsKIHB1YmxpYzoKICAgICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjKCk7CiAKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRVc2VBVkZvdW5kYXRpb25BdWRpb0NhcHR1
cmUoYm9vbCBlbmFibGVkKTsKIHByaXZhdGU6CiAgICAgflJlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXJNYWMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKaW5kZXggYzg0
MTdiMGMyOTgyNGJiMTFmYTg4MTE0MDYwNTYwMDcwNmZjM2FlMS4uMzJhMzYzMTc4YWJmMmQ2OTcz
NTI4OTFjYzIxNmI0MGZkMTJjNTdiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHkuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdp
bkRhdGEuaD4KIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShBVkZPVU5EQVRJT04p
Ci0jaW5jbHVkZSA8V2ViQ29yZS9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmg+CiAjZW5kaWYKIAogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CkBAIC0zMzYsNyArMzM2LDcgQEAgdm9pZCBVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6c3luY1dpdGhXZWJDb3JlUHJlZnMoKSBjb25zdAog
CiAjaWYgVVNFKEFWRk9VTkRBVElPTikKICAgICBib29sIHVzZUFWRm91bmRhdGlvbkF1ZGlvQ2Fw
dHVyZSA9IG1fcGFnZS5wcmVmZXJlbmNlcygpLnVzZUFWRm91bmRhdGlvbkF1ZGlvQ2FwdHVyZSgp
OwotICAgIFdlYkNvcmU6OkFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNldFVzZUFWRm91bmRhdGlv
bkF1ZGlvQ2FwdHVyZSh1c2VBVkZvdW5kYXRpb25BdWRpb0NhcHR1cmUpOworICAgIFdlYkNvcmU6
OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OnNldFVzZUFWRm91bmRhdGlvbkF1ZGlvQ2Fw
dHVyZSh1c2VBVkZvdW5kYXRpb25BdWRpb0NhcHR1cmUpOwogI2VuZGlmCiAjZW5kaWYKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>307017</attachid>
            <date>2017-04-13 13:14:24 -0700</date>
            <delta_ts>2017-04-13 15:51:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-170778-20170413131423.patch</filename>
            <type>text/plain</type>
            <size>49956</size>
            <attacher name="Jeremy Jones">jeremyj-wk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1MjUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWY2NDllNGZmZGI0MDgw
ZGExYTFkZTM1ZDU1NGI2MDE0ZjVjN2U5YS4uYjNiMzY4NzMwM2RiMDI1MTYwYWNlYzZiNzYxYTA3
M2U3YjQyY2M3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDE3LTA0LTEyICBKZXJl
bXkgSm9uZXMgIDxqZXJlbXlqQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBlbnVtZXJh
dGVEZXZpY2VzIHRvIGFsbG93IGRzZXBhcmF0ZSBDYXB0dXJlRGV2aWNlTWFuYWdlcnMgZm9yIGF1
ZGlvIGFuZCB2aWRlby4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE3MDc3OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBDb3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlciB0byBlbnVtZXJhdGUgQ29y
ZUF1ZGlvIGRldmljZXMuCisKKyAgICAgICAgUmVmYWN0b3IgUmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlciBhbmQgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYyB0byBwcm92aWRlIGluZGVwZW5k
ZW50IGF1ZGlvIGFuZCB2aWRlbyBjYXB0dXJlIGRldmljZSBtYW5hZ2VycworICAgICAgICBhbmQg
dGhlIGFiaWxpaXR5IHRvIG92ZXJyaWRlIHRoZSBjYXB0dXJlIGRldmljZSBtYW5hZ2Vycy4KKwor
ICAgICAgICBDb3JlQXVkaW9DYXB0dXJlU291cmNlIG5vdyB1c2VzIENvcmVBdWRpb0NhcHR1cmVE
ZXZpY2VNYW5hZ2VyIHRvIHVzZSB0aGUgc3BlY2lmaWVkIGRldmljZSBpbnN0ZWFkIG9mIHRoZSBk
ZWZhdWx0IG9uZS4gCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIu
Y3BwOgorICAgICAgICAoQ2FwdHVyZURldmljZU1hbmFnZXI6OmdldEF1ZGlvU291cmNlc0luZm8p
OgorICAgICAgICAoQ2FwdHVyZURldmljZU1hbmFnZXI6OmdldFZpZGVvU291cmNlc0luZm8pOgor
ICAgICAgICAoQ2FwdHVyZURldmljZU1hbmFnZXI6OmdldFNvdXJjZXNJbmZvKTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2V0QXVk
aW9DYXB0dXJlRGV2aWNlTWFuYWdlcik6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyOjp1bnNldEF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIpOgorICAgICAgICAo
V2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2V0VmlkZW9DYXB0dXJlRGV2aWNl
TWFuYWdlcik6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjp1
bnNldFZpZGVvQ2FwdHVyZURldmljZU1hbmFnZXIpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlh
c3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmRlZmF1bHRBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2Vy
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmRlZmF1bHRW
aWRlb0NhcHR1cmVEZXZpY2VNYW5hZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXI6OmF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6dmlkZW9DYXB0dXJlRGV2aWNlTWFuYWdl
cik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1h
bmFnZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2
aWNlTWFuYWdlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFWQ2FwdHVyZURldmljZU1hbmFnZXI6
OnJlZnJlc2hBVkNhcHR1cmVEZXZpY2VzT2ZUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkFWQ2Fw
dHVyZURldmljZU1hbmFnZXI6OnJlZnJlc2hDYXB0dXJlRGV2aWNlcyk6CisgICAgICAgIChXZWJD
b3JlOjpBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpnZXRBdWRpb1NvdXJjZXNJbmZvKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFWQ2FwdHVyZURldmljZU1hbmFnZXI6OmdldFZpZGVvU291cmNlc0luZm8p
OgorICAgICAgICAoV2ViQ29yZTo6QVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2V0VXNlQVZGb3Vu
ZGF0aW9uQXVkaW9DYXB0dXJlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFWQ2FwdHVy
ZURldmljZU1hbmFnZXI6OmdldFNvdXJjZXNJbmZvKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZURldmljZS5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6Z2V0RGV2aWNlSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpDb3Jl
QXVkaW9DYXB0dXJlRGV2aWNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUF1ZGlv
Q2FwdHVyZURldmljZTo6Q29yZUF1ZGlvQ2FwdHVyZURldmljZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDb3JlQXVkaW9DYXB0dXJlRGV2aWNlOjpkZXZpY2VJRCk6CisgICAgICAgIChXZWJDb3JlOjpD
b3JlQXVkaW9DYXB0dXJlRGV2aWNlOjpkZXZpY2VDbG9jayk6CisgICAgICAgIChXZWJDb3JlOjpD
b3JlQXVkaW9DYXB0dXJlRGV2aWNlOjppc0FsaXZlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZURldmljZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5oLgorICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFu
YWdlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29yZUF1ZGlvQ2FwdHVyZURldmlj
ZU1hbmFnZXI6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJDb3JlOjpDb3JlQXVkaW9DYXB0dXJl
RGV2aWNlTWFuYWdlcjo6Y2FwdHVyZURldmljZXMpOgorICAgICAgICAoV2ViQ29yZTo6ZGV2aWNl
SGFzSW5wdXRTdHJlYW1zKToKKyAgICAgICAgKFdlYkNvcmU6OkNvcmVBdWRpb0NhcHR1cmVEZXZp
Y2VNYW5hZ2VyOjpjb3JlQXVkaW9DYXB0dXJlRGV2aWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpD
b3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlcjo6cmVmcmVzaEF1ZGlvQ2FwdHVyZURldmljZXMp
OgorICAgICAgICAoV2ViQ29yZTo6Q29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXI6OmRldmlj
ZXNDaGFuZ2VkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlv
Q2FwdHVyZURldmljZU1hbmFnZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuaC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpDb3JlQXVkaW9DYXB0dXJlU291cmNlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnN0YXJ0UHJvZHVjaW5n
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpzdG9wUHJv
ZHVjaW5nRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXJNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlck1hYzo6c2V0VXNlQVZGb3VuZGF0aW9uQXVkaW9DYXB0dXJlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OlJlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXJNYWMpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlck1hYzo6Y3JlYXRlTWVkaWFTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVN
ZWRpYVNvdXJjZUNlbnRlck1hYzo6Z2V0TWVkaWFTdHJlYW1EZXZpY2VzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5oOgor
CiAyMDE3LTA0LTExICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBE
aXNhYmxlIG91dGRhdGVkIFdyaXRhYmxlU3RyZWFtIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDExNDY3OTVh
YzdlMGEzZGE2NDU4MGUzMmFlNjVlYWQ3YzM3MDkzZWMuLjI5YWMzNGJmYzQzODhkNjA2MzIxYWI4
MWI5ZTYwZjRhODA1M2EzYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNy0wNC0x
MiAgSmVyZW15IEpvbmVzICA8amVyZW15akBhcHBsZS5jb20+CisKKyAgICAgICAgUmVmYWN0b3Ig
ZW51bWVyYXRlRGV2aWNlcyB0byBhbGxvdyBkc2VwYXJhdGUgQ2FwdHVyZURldmljZU1hbmFnZXJz
IGZvciBhdWRpbyBhbmQgdmlkZW8uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzA3NzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBzZXRVc2VBVkZvdW5kYXRpb25BdWRpb0NhcHR1cmUgaXMgbW92ZWQgZnJv
bSBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyIHRvIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXJQcm94eTo6c3luY1dpdGhXZWJDb3JlUHJlZnMpOgorCiAyMDE3LTA0LTExICBEZWFuIEph
Y2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBEaXNhYmxlIG91dGRhdGVkIFdyaXRh
YmxlU3RyZWFtIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IGFmMmU5YmExNjlkMDg3YWJkZWE5ZDljYTRkNjNjMWExYjE5Y2Yy
MTYuLjMwMzRhNmFiZmE5MzQ0MWJkYTg5YTk1M2Q0M2YwYmM1M2JjNGY0MjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE2NzEs
NiArMTY3MSwxMCBAQAogCQkzRjJCMzNFRjE2NUFGMTU2MDBFMzk4N0MgLyogSlNXZWJLaXRDU1NW
aWV3cG9ydFJ1bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDNGMkIzM0VBMTY1QUYxNTUwMEUzOTg3QyAvKiBKU1dlYktpdENTU1ZpZXdwb3J0UnVsZS5o
ICovOyB9OwogCQkzRjQyQjMxRDE4ODExOTFCMDAyNzhBQUMgLyogV2ViVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlckFWS2l0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzRjQyQjMxQjE4ODExOTFCMDAyNzhBQUMgLyogV2ViVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlckFWS2l0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJM0Y0MkIzMUUxODgxMTkxQjAwMjc4QUFDIC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXJBVktpdC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDNGNDJCMzFDMTg4MTE5MUIwMDI3OEFBQyAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyQVZLaXQubW0gKi87IH07CisJCTNGODAyMDM1MUU5RTQ3QkYwMERFQzYxRCAvKiBDb3Jl
QXVkaW9DYXB0dXJlRGV2aWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzRjgwMjAzMjFFOUUzODFEMDBERUM2MUQgLyogQ29yZUF1ZGlvQ2FwdHVyZURl
dmljZS5oICovOyB9OworCQkzRjgwMjAzNjFFOUU0N0MzMDBERUM2MUQgLyogQ29yZUF1ZGlvQ2Fw
dHVyZURldmljZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzRjgwMjAzMTFFOUUzODFEMDBERUM2MUQgLyogQ29yZUF1ZGlvQ2FwdHVyZURldmljZS5j
cHAgKi87IH07CisJCTNGODAyMDM3MUU5RTQ3QzUwMERFQzYxRCAvKiBDb3JlQXVkaW9DYXB0dXJl
RGV2aWNlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gM0Y4MDIwMzQxRTlFMzgxRDAwREVDNjFEIC8qIENvcmVBdWRpb0NhcHR1cmVEZXZpY2VN
YW5hZ2VyLmggKi87IH07CisJCTNGODAyMDM4MUU5RTQ3QzkwMERFQzYxRCAvKiBDb3JlQXVkaW9D
YXB0dXJlRGV2aWNlTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAzRjgwMjAzMzFFOUUzODFEMDBERUM2MUQgLyogQ29yZUF1ZGlvQ2FwdHVy
ZURldmljZU1hbmFnZXIuY3BwICovOyB9OwogCQkzRkJDNEFGMzE4OTg4MTU2MDA0NkVFMzggLyog
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzRkJDNEFGMTE4OTg4MTU2MDA0NkVFMzggLyogV2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0gKi87IH07CiAJCTNGQkM0QUY0MTg5ODgx
NTYwMDQ2RUUzOCAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gM0ZCQzRBRjIxODk4ODE1NjAw
NDZFRTM4IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJM0ZGMUZBNjYxRTczNTBGRDAw
QzEwMDJGIC8qIENvcmVBdWRpb0NhcHR1cmVTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gM0YzQkI1ODIxRTcwOUVFNDAwQzcwMUYyIC8qIENv
cmVBdWRpb0NhcHR1cmVTb3VyY2UuY3BwICovOyB9OwpAQCAtOTI2Myw2ICs5MjY3LDEwIEBACiAJ
CTNGM0JCNTgzMUU3MDlFRTQwMEM3MDFGMiAvKiBDb3JlQXVkaW9DYXB0dXJlU291cmNlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvcmVBdWRpb0NhcHR1cmVTb3VyY2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJM0Y0MkIzMUIxODgxMTkxQjAwMjc4QUFDIC8q
IFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJM0Y0MkIzMUMxODgxMTkxQjAwMjc4QUFDIC8qIFdlYlZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJM0Y4MDIwMzExRTlFMzgxRDAwREVDNjFEIC8qIENv
cmVBdWRpb0NhcHR1cmVEZXZpY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQ29yZUF1ZGlvQ2FwdHVyZURldmljZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTNGODAyMDMyMUU5RTM4MUQwMERFQzYxRCAvKiBDb3JlQXVkaW9DYXB0dXJlRGV2aWNl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvcmVBdWRpb0NhcHR1cmVEZXZp
Y2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJM0Y4MDIwMzMxRTlFMzgxRDAwREVD
NjFEIC8qIENvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJM0Y4MDIwMzQxRTlFMzgxRDAwREVDNjFEIC8q
IENvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IENvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTNGQkM0QUYxMTg5ODgxNTYwMDQ2RUUzOCAvKiBXZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VBVktpdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkzRkJDNEFGMjE4OTg4MTU2MDA0NkVFMzggLyogV2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJM0ZGRkY5QTYxNTlEOUE1NTAwMjBCQkQ1IC8qIFdlYktpdENTU1ZpZXdwb3J0UnVs
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJLaXRDU1NWaWV3
cG9ydFJ1bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTYxMjIsOCArMTYx
MzAsMTIgQEAKIAkJCQkwNzAzNjNERDE4MUExQ0RDMDBDMDc0QTUgLyogQVZNZWRpYUNhcHR1cmVT
b3VyY2UubW0gKi8sCiAJCQkJMDcwMzYzREUxODFBMUNEQzAwQzA3NEE1IC8qIEFWVmlkZW9DYXB0
dXJlU291cmNlLmggKi8sCiAJCQkJMDcwMzYzREYxODFBMUNEQzAwQzA3NEE1IC8qIEFWVmlkZW9D
YXB0dXJlU291cmNlLm1tICovLAotCQkJCTNGM0JCNTgyMUU3MDlFRTQwMEM3MDFGMiAvKiBDb3Jl
QXVkaW9DYXB0dXJlU291cmNlLmNwcCAqLywKIAkJCQkzRjNCQjU4MzFFNzA5RUU0MDBDNzAxRjIg
LyogQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5oICovLAorCQkJCTNGM0JCNTgyMUU3MDlFRTQwMEM3
MDFGMiAvKiBDb3JlQXVkaW9DYXB0dXJlU291cmNlLmNwcCAqLywKKwkJCQkzRjgwMjAzMjFFOUUz
ODFEMDBERUM2MUQgLyogQ29yZUF1ZGlvQ2FwdHVyZURldmljZS5oICovLAorCQkJCTNGODAyMDMx
MUU5RTM4MUQwMERFQzYxRCAvKiBDb3JlQXVkaW9DYXB0dXJlRGV2aWNlLmNwcCAqLywKKwkJCQkz
RjgwMjAzNDFFOUUzODFEMDBERUM2MUQgLyogQ29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIu
aCAqLywKKwkJCQkzRjgwMjAzMzFFOUUzODFEMDBERUM2MUQgLyogQ29yZUF1ZGlvQ2FwdHVyZURl
dmljZU1hbmFnZXIuY3BwICovLAogCQkJCTA3NDRFQ0VCMUUwQzRBRTUwMDBEMDk0NCAvKiBNb2Nr
UmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5oICovLAogCQkJCTA3NDRFQ0VDMUUwQzRBRTUwMDBEMDk0
NCAvKiBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5tbSAqLywKIAkJCQkwN0VFNzZFRDFCRUE2
MTk4MDBGODkxMzMgLyogTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMuaCAqLywKQEAgLTI4MTIz
LDYgKzI4MTM1LDcgQEAKIAkJCQk3MTE4RkVENTE1Njg1Q0M2MDAzMEI3OUEgLyogSlNTVkdWaWV3
U3BlYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODQ4NTIyN0UxMTkwMTYyQzAwNkVEQzdGIC8qIEpT
U1ZHVktlcm5FbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk3MURDQjcwMjE1NjgxOTc2MDA4
NjIyNzEgLyogSlNTVkdab29tQW5kUGFuLmggaW4gSGVhZGVycyAqLywKKwkJCQkzRjgwMjAzNTFF
OUU0N0JGMDBERUM2MUQgLyogQ29yZUF1ZGlvQ2FwdHVyZURldmljZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQjJGQTNFMTkwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHWm9vbUV2ZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk2NURGMzIwNDA5RDFDQzYwMDAwQkUzMjUgLyogSlNUZXh0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5MzNBMTRCOTBCN0QxRDUyMDBBNTNGRkQgLyogSlNUZXh0RXZlbnQuaCBp
biBIZWFkZXJzICovLApAQCAtMjg2OTksNiArMjg3MTIsNyBAQAogCQkJCTFBRDhGODFCMTFDQUI5
RTkwMEU5M0U1NCAvKiBQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
N0QwNzMzMTg4NEM1NkMwMEI0QUY4NiAvKiBQbGF0Zm9ybVRleHRUcmFjay5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMDc0RTgyQkIxOEE2OUYwRTAwN0VGNTRDIC8qIFBsYXRmb3JtVGltZVJhbmdlcy5o
IGluIEhlYWRlcnMgKi8sCisJCQkJM0Y4MDIwMzcxRTlFNDdDNTAwREVDNjFEIC8qIENvcmVBdWRp
b0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MkIwRDRCRTFDNTdG
RDFFMDA3N0NFNTMgLyogUGxhdGZvcm1WaWV3LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzVDNDc2
QjA5QUM0RDRGMDBBNkFBQjQgLyogUGxhdGZvcm1XaGVlbEV2ZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQUZGQzQ1OTFENUU4NjYxMDAyNjdBNjYgLyogUGx1Z2luQmxhY2tsaXN0LmggaW4gSGVh
ZGVycyAqLywKQEAgLTMxNzczLDYgKzMxNzg3LDcgQEAKIAkJCQk1MTFFRjJDNDE3RjBGRDM1MDBF
NEZBMTYgLyogSlNJREJGYWN0b3J5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxMUVGMkM1MTdG
MEZEMzUwMEU0RkExNiAvKiBKU0lEQkluZGV4LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxNDEy
OTlCMUM2QzE2NzQwMDU5RTcxNCAvKiBKU0lEQkluZGV4Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTNGODAyMDM2MUU5RTQ3QzMwMERFQzYxRCAvKiBDb3JlQXVkaW9DYXB0dXJlRGV2aWNl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxMUVGMkM2MTdGMEZEMzUwMEU0RkExNiAvKiBKU0lE
QktleVJhbmdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxMUVGMkM3MTdGMEZEMzUwMEU0RkEx
NiAvKiBKU0lEQk9iamVjdFN0b3JlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxMUVGMkQxMTdG
MEZERjEwMEU0RkExNiAvKiBKU0lEQk9iamVjdFN0b3JlQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICov
LApAQCAtMzMyMTksNiArMzMyMzQsNyBAQAogCQkJCTg0MTlEMkFDMTIwRDkyRkMwMDE0MUY4RiAv
KiBTVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0E1
ODBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUGF0aEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJODQ3NkM5RUYxMURGNkE1ODAwNTU1QjAyIC8qIFNWR1BhdGhQYXJzZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJM0Y4MDIwMzgxRTlFNDdDOTAwREVDNjFEIC8qIENvcmVBdWRpb0NhcHR1cmVE
ZXZpY2VNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDMzlDMzcxMUREQkI4QUUwMEZF
RkIyOSAvKiBTVkdQYXRoU2VnTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NDc2QzlFNTEx
REY2QTBCMDA1NTVCMDIgLyogU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTg0QjZCOTc3MTIwRjEzRTUwMEI4RUZBRiAvKiBTVkdQYXRoU2VnTGlzdFNvdXJjZS5j
cHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGlu
Z3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKaW5kZXggYzBhNDFkMTE0
YjI1YjdhNTcxMzNlMDdiY2Y0MmNhMmUyYjNhZDgxMy4uMmRhM2I4NDEyM2RkNzBmZWM0NzdmYTdi
Yzg1NjBjZGRiYjRlNmZmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5n
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKQEAgLTQ5LDcgKzQ5
LDcgQEAKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKICNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQotI2luY2x1ZGUgIkFWQ2FwdHVyZURldmljZU1h
bmFnZXIuaCIKKyNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmgiCiAjZW5k
aWYKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCkBAIC02MzAsNyArNjMwLDcgQEAgdm9pZCBT
ZXR0aW5nczo6c2V0VXNlQVZGb3VuZGF0aW9uQXVkaW9DYXB0dXJlKGJvb2wgdXNlQVZGb3VuZGF0
aW9uQXVkaW9DYXB0dXJlKQogewogICAgIGdVc2VBVkZvdW5kYXRpb25BdWRpb0NhcHR1cmUgPSB1
c2VBVkZvdW5kYXRpb25BdWRpb0NhcHR1cmU7CiAjaWYgVVNFKEFWRk9VTkRBVElPTikKLSAgICBB
VkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzZXRVc2VBVkZvdW5kYXRpb25BdWRpb0NhcHR1cmUodXNl
QVZGb3VuZGF0aW9uQXVkaW9DYXB0dXJlKTsKKyAgICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
TWFjOjpzZXRVc2VBVkZvdW5kYXRpb25BdWRpb0NhcHR1cmUodXNlQVZGb3VuZGF0aW9uQXVkaW9D
YXB0dXJlKTsKICNlbmRpZgogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAKaW5kZXgg
NzE5YmIxZWJiZDFiYzFkMWYyZDlmMGMzODQ0ZmZlOGQ2NTZiYjFiNC4uMjBlZTcxNzNmMGMzZDgw
ZTQ0ODU5NmVmMDI4YzM4MjY4MjZlY2MzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcApAQCAt
NDQsMTEgKzQ0LDI0IEBAIENhcHR1cmVEZXZpY2VNYW5hZ2VyOjp+Q2FwdHVyZURldmljZU1hbmFn
ZXIoKQogewogfQogCi1WZWN0b3I8Q2FwdHVyZURldmljZT4gQ2FwdHVyZURldmljZU1hbmFnZXI6
OmdldFNvdXJjZXNJbmZvKCkKK1ZlY3RvcjxDYXB0dXJlRGV2aWNlPiBDYXB0dXJlRGV2aWNlTWFu
YWdlcjo6Z2V0QXVkaW9Tb3VyY2VzSW5mbygpCiB7CiAgICAgVmVjdG9yPENhcHR1cmVEZXZpY2U+
IHNvdXJjZXNJbmZvOwotICAgIGZvciAoYXV0byBjYXB0dXJlRGV2aWNlIDogY2FwdHVyZURldmlj
ZXMoKSkgewotICAgICAgICBpZiAoIWNhcHR1cmVEZXZpY2UuZW5hYmxlZCgpIHx8IGNhcHR1cmVE
ZXZpY2UudHlwZSgpID09IENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlVua25vd24pCisgICAg
Zm9yIChhdXRvJiBjYXB0dXJlRGV2aWNlIDogY2FwdHVyZURldmljZXMoKSkgeworICAgICAgICBp
ZiAoIWNhcHR1cmVEZXZpY2UuZW5hYmxlZCgpIHx8IGNhcHR1cmVEZXZpY2UudHlwZSgpICE9IENh
cHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OkF1ZGlvKQorICAgICAgICAgICAgY29udGludWU7CisK
KyAgICAgICAgc291cmNlc0luZm8uYXBwZW5kKGNhcHR1cmVEZXZpY2UpOworICAgIH0KKyAgICBM
T0coTWVkaWEsICJDYXB0dXJlRGV2aWNlTWFuYWdlcjo6Z2V0U291cmNlc0luZm8oJXApLCBmb3Vu
ZCAlenUgYWN0aXZlIGRldmljZXMiLCB0aGlzLCBzb3VyY2VzSW5mby5zaXplKCkpOworICAgIHJl
dHVybiBzb3VyY2VzSW5mbzsKK30KKworVmVjdG9yPENhcHR1cmVEZXZpY2U+IENhcHR1cmVEZXZp
Y2VNYW5hZ2VyOjpnZXRWaWRlb1NvdXJjZXNJbmZvKCkKK3sKKyAgICBWZWN0b3I8Q2FwdHVyZURl
dmljZT4gc291cmNlc0luZm87CisgICAgZm9yIChhdXRvJiBjYXB0dXJlRGV2aWNlIDogY2FwdHVy
ZURldmljZXMoKSkgeworICAgICAgICBpZiAoIWNhcHR1cmVEZXZpY2UuZW5hYmxlZCgpIHx8IGNh
cHR1cmVEZXZpY2UudHlwZSgpICE9IENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlZpZGVvKQog
ICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgc291cmNlc0luZm8uYXBwZW5kKGNhcHR1
cmVEZXZpY2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vQ2FwdHVyZURldmljZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKaW5kZXggOGNiZDQ1NmJlN2IxYjljMzRmMDM2
MzNlYzcyNDU1NjFkMzNiMDM1Zi4uMzc5ZmU3NDkzZGU1ZWEwOTk3ZTQ1MDhhMzA5NDE5NjdhMDQx
NDkyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2Fw
dHVyZURldmljZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5oCkBAIC0zNiw3ICszNiw4IEBAIGNsYXNzIENhcHR1
cmVEZXZpY2VNYW5hZ2VyIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIFZlY3RvcjxDYXB0dXJlRGV2
aWNlPiYgY2FwdHVyZURldmljZXMoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlZnJlc2hDYXB0
dXJlRGV2aWNlcygpIHsgfQotICAgIHZpcnR1YWwgVmVjdG9yPENhcHR1cmVEZXZpY2U+IGdldFNv
dXJjZXNJbmZvKCk7CisgICAgdmlydHVhbCBWZWN0b3I8Q2FwdHVyZURldmljZT4gZ2V0QXVkaW9T
b3VyY2VzSW5mbygpOworICAgIHZpcnR1YWwgVmVjdG9yPENhcHR1cmVEZXZpY2U+IGdldFZpZGVv
U291cmNlc0luZm8oKTsKICAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8Q2FwdHVyZURldmljZT4g
ZGV2aWNlV2l0aFVJRChjb25zdCBTdHJpbmcmLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlKTsK
IAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAppbmRleCA3ODVk
NjIxYzRiYjdkMTY0YTFkZmI3ZmMzMDY4ODk0OWU3OTA4ZmE1Li45NTU5OThkNjY3MWNkZDE1YmIw
N2JhOTIzMDI2MmY5YTcyNjYzNzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNw
cApAQCAtODgsNiArODgsMjggQEAgdm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjp1bnNl
dFZpZGVvRmFjdG9yeShSZWFsdGltZU1lZGlhU291cmNlOjpDYXB0dXJlRmEKICAgICAgICAgbV92
aWRlb0ZhY3RvcnkgPSBudWxscHRyOwogfQogCit2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXI6OnNldEF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIoQ2FwdHVyZURldmljZU1hbmFnZXImIGRl
dmljZU1hbmFnZXIpCit7CisgICAgbV9hdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyID0gJmRldmlj
ZU1hbmFnZXI7Cit9CisKK3ZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6dW5zZXRBdWRp
b0NhcHR1cmVEZXZpY2VNYW5hZ2VyKENhcHR1cmVEZXZpY2VNYW5hZ2VyJiBkZXZpY2VNYW5hZ2Vy
KQoreworICAgIGlmIChtX2F1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIgPT0gJmRldmljZU1hbmFn
ZXIpCisgICAgICAgIG1fYXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlciA9IG51bGxwdHI7Cit9CisK
K3ZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2V0VmlkZW9DYXB0dXJlRGV2aWNlTWFu
YWdlcihDYXB0dXJlRGV2aWNlTWFuYWdlciYgZGV2aWNlTWFuYWdlcikKK3sKKyAgICBtX3ZpZGVv
Q2FwdHVyZURldmljZU1hbmFnZXIgPSAmZGV2aWNlTWFuYWdlcjsKK30KKwordm9pZCBSZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyOjp1bnNldFZpZGVvQ2FwdHVyZURldmljZU1hbmFnZXIoQ2FwdHVy
ZURldmljZU1hbmFnZXImIGRldmljZU1hbmFnZXIpCit7CisgICAgaWYgKG1fdmlkZW9DYXB0dXJl
RGV2aWNlTWFuYWdlciA9PSAmZGV2aWNlTWFuYWdlcikKKyAgICAgICAgbV92aWRlb0NhcHR1cmVE
ZXZpY2VNYW5hZ2VyID0gbnVsbHB0cjsKK30KKyAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyLmgKaW5kZXggNjFiN2U5ZTVjOTI5ZTlhMGI2MzkxNjI2ODgzYmE5NjgyZjYyN2EwYS4uNTEy
NDFhZDkxODIyYTJkNzgwYjAzZmMxZjJjMWVjZDYzNjcxNTU3OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXIuaApAQCAtNDIsNiArNDIsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBDYXB0dXJlRGV2aWNlOworY2xhc3MgQ2FwdHVyZURldmljZU1hbmFnZXI7CiBjbGFzcyBN
ZWRpYUNvbnN0cmFpbnRzOwogY2xhc3MgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOwogY2xh
c3MgUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzOwpAQCAtNzYsNiArNzcs
MTcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdW5zZXRWaWRlb0ZhY3Rvcnko
UmVhbHRpbWVNZWRpYVNvdXJjZTo6Q2FwdHVyZUZhY3RvcnkmKTsKICAgICBSZWFsdGltZU1lZGlh
U291cmNlOjpDYXB0dXJlRmFjdG9yeSogdmlkZW9GYWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV92
aWRlb0ZhY3Rvcnk7IH0KIAorICAgIHZpcnR1YWwgQ2FwdHVyZURldmljZU1hbmFnZXIqIGRlZmF1
bHRBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyKCkgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIHZp
cnR1YWwgQ2FwdHVyZURldmljZU1hbmFnZXIqIGRlZmF1bHRWaWRlb0NhcHR1cmVEZXZpY2VNYW5h
Z2VyKCkgeyByZXR1cm4gbnVsbHB0cjsgfQorCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRB
dWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyKENhcHR1cmVEZXZpY2VNYW5hZ2VyJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCB1bnNldEF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIoQ2FwdHVyZURl
dmljZU1hbmFnZXImKTsKKyAgICBDYXB0dXJlRGV2aWNlTWFuYWdlciogYXVkaW9DYXB0dXJlRGV2
aWNlTWFuYWdlcigpIGNvbnN0IHsgcmV0dXJuIG1fYXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlcjsg
fQorCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaWRlb0NhcHR1cmVEZXZpY2VNYW5hZ2Vy
KENhcHR1cmVEZXZpY2VNYW5hZ2VyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1bnNldFZp
ZGVvQ2FwdHVyZURldmljZU1hbmFnZXIoQ2FwdHVyZURldmljZU1hbmFnZXImKTsKKyAgICBDYXB0
dXJlRGV2aWNlTWFuYWdlciogdmlkZW9DYXB0dXJlRGV2aWNlTWFuYWdlcigpIGNvbnN0IHsgcmV0
dXJuIG1fdmlkZW9DYXB0dXJlRGV2aWNlTWFuYWdlcjsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlcigpOwogCkBAIC04NCw2ICs5Niw5IEBAIHByb3RlY3RlZDoK
IAogICAgIFJlYWx0aW1lTWVkaWFTb3VyY2U6OkNhcHR1cmVGYWN0b3J5KiBtX2F1ZGlvRmFjdG9y
eSB7IG51bGxwdHIgfTsKICAgICBSZWFsdGltZU1lZGlhU291cmNlOjpDYXB0dXJlRmFjdG9yeSog
bV92aWRlb0ZhY3RvcnkgeyBudWxscHRyIH07CisKKyAgICBDYXB0dXJlRGV2aWNlTWFuYWdlciog
bV9hdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyIHsgbnVsbHB0ciB9OworICAgIENhcHR1cmVEZXZp
Y2VNYW5hZ2VyKiBtX3ZpZGVvQ2FwdHVyZURldmljZU1hbmFnZXIgeyBudWxscHRyIH07CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIuaApp
bmRleCBjNjBjYTNiODUyYzY0MDc3MzI3ODJiMGRhMjc4YzNiOGZlYzRiN2Q0Li4wY2IxNzIyNDRi
YTU4OGEwYjY3MDM0ZDRhYjZjNzUyNDAyZjU3ZjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VN
YW5hZ2VyLmgKQEAgLTUxLDExICs1MSwxMiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgQVZDYXB0
dXJlRGV2aWNlTWFuYWdlciYgc2luZ2xldG9uKCk7CiAKLSAgICBWZWN0b3I8Q2FwdHVyZURldmlj
ZT4gZ2V0U291cmNlc0luZm8oKSBmaW5hbDsKLQogICAgIHZvaWQgZGV2aWNlQ29ubmVjdGVkKCk7
CiAgICAgdm9pZCBkZXZpY2VEaXNjb25uZWN0ZWQoQVZDYXB0dXJlRGV2aWNlKik7CiAKKyAgICBW
ZWN0b3I8Q2FwdHVyZURldmljZT4gZ2V0QXVkaW9Tb3VyY2VzSW5mbygpIGZpbmFsOworICAgIFZl
Y3RvcjxDYXB0dXJlRGV2aWNlPiBnZXRWaWRlb1NvdXJjZXNJbmZvKCkgZmluYWw7CisKIHByb3Rl
Y3RlZDoKICAgICBzdGF0aWMgYm9vbCBpc0F2YWlsYWJsZSgpOwogCkBAIC02NCw2ICs2NSw3IEBA
IHByb3RlY3RlZDoKIAogICAgIHZvaWQgcmVmcmVzaENhcHR1cmVEZXZpY2VzKCkgZmluYWw7CiAg
ICAgdm9pZCByZWdpc3RlckZvckRldmljZU5vdGlmaWNhdGlvbnMoKTsKKyAgICB2b2lkIHJlZnJl
c2hBVkNhcHR1cmVEZXZpY2VzT2ZUeXBlKENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUpOwogCiAg
ICAgUmV0YWluUHRyPFdlYkNvcmVBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyT2JzZXJ2ZXI+IG1fb2Jq
Y09ic2VydmVyOwogICAgIFZlY3RvcjxDYXB0dXJlRGV2aWNlPiBtX2RldmljZXM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2
aWNlTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9B
VkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCmluZGV4IGIzOTE1MzZjOGI1MmYxYjdiZTlhYTE5Y2I2
NmVjMWNkNDE4MjU1MDAuLmNhYzEzMzU0ZWZkZmFhOWU4YWU0Nzg5MTA1Y2U5YjBkOTQzNjA3Yzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNh
cHR1cmVEZXZpY2VNYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCkBAIC0zMiw3ICszMiw2IEBACiAj
aW1wb3J0ICJBVk1lZGlhQ2FwdHVyZVNvdXJjZS5oIgogI2ltcG9ydCAiQVZWaWRlb0NhcHR1cmVT
b3VyY2UuaCIKICNpbXBvcnQgIkF1ZGlvU291cmNlUHJvdmlkZXIuaCIKLSNpbXBvcnQgIkNvcmVB
dWRpb0NhcHR1cmVTb3VyY2UuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIk1lZGlh
Q29uc3RyYWludHMuaCIKICNpbXBvcnQgIlJlYWx0aW1lTWVkaWFTb3VyY2UuaCIKQEAgLTkzLDE5
ICs5Miw2IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLXZvaWQgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2V0VXNlQVZGb3VuZGF0aW9uQXVkaW9D
YXB0dXJlKGJvb2wgZW5hYmxlZCkKLXsKLSAgICBzdGF0aWMgYm9vbCBhY3RpdmUgPSBmYWxzZTsK
LSAgICBpZiAoYWN0aXZlID09IGVuYWJsZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGFjdGl2
ZSA9IGVuYWJsZWQ7Ci0gICAgaWYgKGFjdGl2ZSkKLSAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlcjo6c2luZ2xldG9uKCkuc2V0QXVkaW9GYWN0b3J5KEFWQXVkaW9DYXB0dXJlU291cmNl
OjpmYWN0b3J5KCkpOwotICAgIGVsc2UKLSAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
cjo6c2luZ2xldG9uKCkuc2V0QXVkaW9GYWN0b3J5KENvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OmZh
Y3RvcnkoKSk7Ci19Ci0KIFZlY3RvcjxDYXB0dXJlRGV2aWNlPiYgQVZDYXB0dXJlRGV2aWNlTWFu
YWdlcjo6Y2FwdHVyZURldmljZXMoKQogewogICAgIGlmICghaXNBdmFpbGFibGUoKSkKQEAgLTEz
NCwzMiArMTIwLDM0IEBAIGlubGluZSBzdGF0aWMgYm9vbCBkZXZpY2VJc0F2YWlsYWJsZShBVkNh
cHR1cmVEZXZpY2VUeXBlZGVmICpkZXZpY2UpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQg
QVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6cmVmcmVzaENhcHR1cmVEZXZpY2VzKCkKK3ZvaWQgQVZD
YXB0dXJlRGV2aWNlTWFuYWdlcjo6cmVmcmVzaEFWQ2FwdHVyZURldmljZXNPZlR5cGUoQ2FwdHVy
ZURldmljZTo6RGV2aWNlVHlwZSB0eXBlKQogeworICAgIEFTU0VSVCh0eXBlID09IENhcHR1cmVE
ZXZpY2U6OkRldmljZVR5cGU6OlZpZGVvIHx8IHR5cGUgPT0gQ2FwdHVyZURldmljZTo6RGV2aWNl
VHlwZTo6QXVkaW8pOworCisgICAgTlNTdHJpbmcgKnBsYXRmb3JtVHlwZSA9ICh0eXBlID09IENh
cHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlZpZGVvKSA/IEFWTWVkaWFUeXBlVmlkZW8gOiBBVk1l
ZGlhVHlwZUF1ZGlvOworCiAgICAgZm9yIChBVkNhcHR1cmVEZXZpY2VUeXBlZGVmICpwbGF0Zm9y
bURldmljZSBpbiBbZ2V0QVZDYXB0dXJlRGV2aWNlQ2xhc3MoKSBkZXZpY2VzXSkgewogCi0gICAg
ICAgIENhcHR1cmVEZXZpY2UgY2FwdHVyZURldmljZTsKLSAgICAgICAgaWYgKCFjYXB0dXJlRGV2
aWNlRnJvbURldmljZUlEKHBsYXRmb3JtRGV2aWNlLnVuaXF1ZUlELCBjYXB0dXJlRGV2aWNlKSkg
ewotICAgICAgICAgICAgYm9vbCBoYXNBdWRpbyA9IFtwbGF0Zm9ybURldmljZSBoYXNNZWRpYVR5
cGU6QVZNZWRpYVR5cGVBdWRpb10gfHwgW3BsYXRmb3JtRGV2aWNlIGhhc01lZGlhVHlwZTpBVk1l
ZGlhVHlwZU11eGVkXTsKLSAgICAgICAgICAgIGJvb2wgaGFzVmlkZW8gPSBbcGxhdGZvcm1EZXZp
Y2UgaGFzTWVkaWFUeXBlOkFWTWVkaWFUeXBlVmlkZW9dIHx8IFtwbGF0Zm9ybURldmljZSBoYXNN
ZWRpYVR5cGU6QVZNZWRpYVR5cGVNdXhlZF07Ci0gICAgICAgICAgICBpZiAoIWhhc0F1ZGlvICYm
ICFoYXNWaWRlbykKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgYm9vbCBoYXNN
YXRjaGluZ1R5cGUgPSBbcGxhdGZvcm1EZXZpY2UgaGFzTWVkaWFUeXBlOnBsYXRmb3JtVHlwZV0g
fHwgW3BsYXRmb3JtRGV2aWNlIGhhc01lZGlhVHlwZTpBVk1lZGlhVHlwZU11eGVkXTsKKyAgICAg
ICAgaWYgKCFoYXNNYXRjaGluZ1R5cGUpCisgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAg
ICAgICAgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSB0eXBlID0gaGFzVmlkZW8gPyBDYXB0dXJl
RGV2aWNlOjpEZXZpY2VUeXBlOjpWaWRlbyA6IENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OkF1
ZGlvOwotICAgICAgICAgICAgQ2FwdHVyZURldmljZSBjYXB0dXJlRGV2aWNlKHBsYXRmb3JtRGV2
aWNlLnVuaXF1ZUlELCB0eXBlLCBwbGF0Zm9ybURldmljZS5sb2NhbGl6ZWROYW1lKTsKLSAgICAg
ICAgICAgIGNhcHR1cmVEZXZpY2Uuc2V0RW5hYmxlZChkZXZpY2VJc0F2YWlsYWJsZShwbGF0Zm9y
bURldmljZSkpOwotICAgICAgICAgICAgbV9kZXZpY2VzLmFwcGVuZChjYXB0dXJlRGV2aWNlKTsK
KyAgICAgICAgQ2FwdHVyZURldmljZSBleGlzdGluZ0NhcHR1cmVEZXZpY2U7CisgICAgICAgIGlm
IChjYXB0dXJlRGV2aWNlRnJvbURldmljZUlEKHBsYXRmb3JtRGV2aWNlLnVuaXF1ZUlELCBleGlz
dGluZ0NhcHR1cmVEZXZpY2UpICYmIGV4aXN0aW5nQ2FwdHVyZURldmljZS50eXBlKCkgPT0gdHlw
ZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICBpZiAoaGFzVmlkZW8gJiYg
aGFzQXVkaW8pIHsKLSAgICAgICAgICAgICAgICAvLyBBZGQgdGhlIGF1ZGlvIGNvbXBvbmVudCBh
cyBhIHNlcGFyYXRlIGRldmljZS4KLSAgICAgICAgICAgICAgICBDYXB0dXJlRGV2aWNlIGF1ZGlv
Q2FwdHVyZURldmljZShwbGF0Zm9ybURldmljZS51bmlxdWVJRCwgQ2FwdHVyZURldmljZTo6RGV2
aWNlVHlwZTo6QXVkaW8sIHBsYXRmb3JtRGV2aWNlLmxvY2FsaXplZE5hbWUpOwotICAgICAgICAg
ICAgICAgIGNhcHR1cmVEZXZpY2Uuc2V0RW5hYmxlZChkZXZpY2VJc0F2YWlsYWJsZShwbGF0Zm9y
bURldmljZSkpOwotICAgICAgICAgICAgICAgIG1fZGV2aWNlcy5hcHBlbmQoYXVkaW9DYXB0dXJl
RGV2aWNlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgICAgICBDYXB0dXJlRGV2aWNl
IGNhcHR1cmVEZXZpY2UocGxhdGZvcm1EZXZpY2UudW5pcXVlSUQsIHR5cGUsIHBsYXRmb3JtRGV2
aWNlLmxvY2FsaXplZE5hbWUpOworICAgICAgICBjYXB0dXJlRGV2aWNlLnNldEVuYWJsZWQoZGV2
aWNlSXNBdmFpbGFibGUocGxhdGZvcm1EZXZpY2UpKTsKKyAgICAgICAgbV9kZXZpY2VzLmFwcGVu
ZChjYXB0dXJlRGV2aWNlKTsKICAgICB9CiB9CiAKK3ZvaWQgQVZDYXB0dXJlRGV2aWNlTWFuYWdl
cjo6cmVmcmVzaENhcHR1cmVEZXZpY2VzKCkKK3sKKyAgICByZWZyZXNoQVZDYXB0dXJlRGV2aWNl
c09mVHlwZShDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpWaWRlbyk7CisgICAgcmVmcmVzaEFW
Q2FwdHVyZURldmljZXNPZlR5cGUoQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6QXVkaW8pOwor
fQorCiBib29sIEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OmlzQXZhaWxhYmxlKCkKIHsKICAgICBy
ZXR1cm4gQVZGb3VuZGF0aW9uTGlicmFyeSgpOwpAQCAtMTgyLDEyICsxNzAsMjAgQEAgQVZDYXB0
dXJlRGV2aWNlTWFuYWdlcjo6fkFWQ2FwdHVyZURldmljZU1hbmFnZXIoKQogICAgIFttX29iamNP
YnNlcnZlciBkaXNjb25uZWN0XTsKIH0KIAotVmVjdG9yPENhcHR1cmVEZXZpY2U+IEFWQ2FwdHVy
ZURldmljZU1hbmFnZXI6OmdldFNvdXJjZXNJbmZvKCkKK1ZlY3RvcjxDYXB0dXJlRGV2aWNlPiBB
VkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpnZXRBdWRpb1NvdXJjZXNJbmZvKCkKIHsKICAgICBpZiAo
IWlzQXZhaWxhYmxlKCkpCiAgICAgICAgIHJldHVybiBWZWN0b3I8Q2FwdHVyZURldmljZT4oKTsK
IAotICAgIHJldHVybiBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6Z2V0U291cmNlc0luZm8oKTsKKyAg
ICByZXR1cm4gQ2FwdHVyZURldmljZU1hbmFnZXI6OmdldEF1ZGlvU291cmNlc0luZm8oKTsKK30K
KworVmVjdG9yPENhcHR1cmVEZXZpY2U+IEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OmdldFZpZGVv
U291cmNlc0luZm8oKQoreworICAgIGlmICghaXNBdmFpbGFibGUoKSkKKyAgICAgICAgcmV0dXJu
IFZlY3RvcjxDYXB0dXJlRGV2aWNlPigpOworCisgICAgcmV0dXJuIENhcHR1cmVEZXZpY2VNYW5h
Z2VyOjpnZXRWaWRlb1NvdXJjZXNJbmZvKCk7CiB9CiAKIHZvaWQgQVZDYXB0dXJlRGV2aWNlTWFu
YWdlcjo6cmVnaXN0ZXJGb3JEZXZpY2VOb3RpZmljYXRpb25zKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlRGV2aWNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9D
YXB0dXJlRGV2aWNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NTI1MzJkNjVmMjI1OTMxYTBlYjVjNTA1NWM0
NzQwNjE0MjcyOTI2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVEZXZpY2UuY3BwCkBAIC0wLDAgKzEsMTE3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNvcmVBdWRpb0NhcHR1cmVEZXZpY2UuaCIKKworI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFBMQVRGT1JNKE1BQykKKworI2luY2x1ZGUgIkNhcHR1
cmVEZXZpY2VNYW5hZ2VyLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgPEF1ZGlv
VW5pdC9BdWRpb1VuaXQuaD4KKyNpbmNsdWRlIDxDb3JlTWVkaWEvQ01TeW5jLmg+CisKKyNpbXBv
cnQgIkNvcmVNZWRpYVNvZnRMaW5rLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGlj
IGJvb2wgZ2V0RGV2aWNlSW5mbyh1aW50MzJfdCBkZXZpY2VJRCwgU3RyaW5nJiBwZXJzaXN0ZW50
SUQsIFN0cmluZyYgbGFiZWwpCit7CisgICAgQ0ZTdHJpbmdSZWYgdW5pcXVlSUQ7CisgICAgQXVk
aW9PYmplY3RQcm9wZXJ0eUFkZHJlc3MgYWRkcmVzcyB7IGtBdWRpb0RldmljZVByb3BlcnR5RGV2
aWNlVUlELCBrQXVkaW9EZXZpY2VQcm9wZXJ0eVNjb3BlSW5wdXQsIGtBdWRpb09iamVjdFByb3Bl
cnR5RWxlbWVudE1hc3RlciB9OworICAgIFVJbnQzMiBkYXRhU2l6ZSA9IHNpemVvZih1bmlxdWVJ
RCk7CisgICAgYXV0byBlcnIgPSBBdWRpb09iamVjdEdldFByb3BlcnR5RGF0YShzdGF0aWNfY2Fz
dDxVSW50MzI+KGRldmljZUlEKSwgJmFkZHJlc3MsIDAsIG51bGxwdHIsICZkYXRhU2l6ZSwgJnVu
aXF1ZUlEKTsKKyAgICBpZiAoZXJyKSB7CisgICAgICAgIExPRyhNZWRpYSwgIkNvcmVBdWRpb0Nh
cHR1cmVEZXZpY2U6OmdldERldmljZUluZm8gZmFpbGVkIHRvIGdldCBkZXZpY2UgdW5pcXVlIGlk
IHdpdGggZXJyb3IgJWQgKCUuNHMpIiwgKGludCllcnIsIChjaGFyKikmZXJyKTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBwZXJzaXN0ZW50SUQgPSB1bmlxdWVJRDsKKyAgICBD
RlJlbGVhc2UodW5pcXVlSUQpOworCisgICAgQ0ZTdHJpbmdSZWYgbG9jYWxpemVkTmFtZTsKKyAg
ICBhZGRyZXNzID0geyBrQXVkaW9PYmplY3RQcm9wZXJ0eU5hbWUsIGtBdWRpb09iamVjdFByb3Bl
cnR5U2NvcGVHbG9iYWwsIGtBdWRpb09iamVjdFByb3BlcnR5RWxlbWVudE1hc3RlciB9OworICAg
IGRhdGFTaXplID0gc2l6ZW9mKGxvY2FsaXplZE5hbWUpOworICAgIGVyciA9IEF1ZGlvT2JqZWN0
R2V0UHJvcGVydHlEYXRhKHN0YXRpY19jYXN0PFVJbnQzMj4oZGV2aWNlSUQpLCAmYWRkcmVzcywg
MCwgbnVsbHB0ciwgJmRhdGFTaXplLCAmbG9jYWxpemVkTmFtZSk7CisgICAgaWYgKGVycikgewor
ICAgICAgICBMT0coTWVkaWEsICJDb3JlQXVkaW9DYXB0dXJlRGV2aWNlOjpnZXREZXZpY2VJbmZv
IGZhaWxlZCB0byBnZXQgZGV2aWNlIG5hbWUgd2l0aCBlcnJvciAlZCAoJS40cykiLCAoaW50KWVy
ciwgKGNoYXIqKSZlcnIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGxhYmVs
ID0gbG9jYWxpemVkTmFtZTsKKyAgICBDRlJlbGVhc2UobG9jYWxpemVkTmFtZSk7CisKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworUmVmUHRyPENvcmVBdWRpb0NhcHR1cmVEZXZpY2U+IENvcmVBdWRp
b0NhcHR1cmVEZXZpY2U6OmNyZWF0ZSh1aW50MzJfdCBkZXZpY2VJRCkKK3sKKyAgICBTdHJpbmcg
cGVyc2lzdGVudElEOworICAgIFN0cmluZyBsYWJlbDsKKyAgICBpZiAoIWdldERldmljZUluZm8o
ZGV2aWNlSUQsIHBlcnNpc3RlbnRJRCwgbGFiZWwpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ29yZUF1ZGlvQ2FwdHVyZURldmljZShkZXZpY2VJ
RCwgcGVyc2lzdGVudElELCBsYWJlbCkpOworfQorCitDb3JlQXVkaW9DYXB0dXJlRGV2aWNlOjpD
b3JlQXVkaW9DYXB0dXJlRGV2aWNlKHVpbnQzMl90IGRldmljZUlELCBjb25zdCBTdHJpbmcmIHBl
cnNpc3RlbnRJRCwgY29uc3QgU3RyaW5nJiBsYWJlbCkKKyAgICA6IENhcHR1cmVEZXZpY2UocGVy
c2lzdGVudElELCBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpBdWRpbywgbGFiZWwpCisgICAg
LCBtX2RldmljZUlEKGRldmljZUlEKQoreworfQorCit1aW50MzJfdCBDb3JlQXVkaW9DYXB0dXJl
RGV2aWNlOjpkZXZpY2VJRCgpCit7CisgICAgcmV0dXJuIG1fZGV2aWNlSUQ7Cit9CisKK1JldGFp
blB0cjxDTUNsb2NrUmVmPiBDb3JlQXVkaW9DYXB0dXJlRGV2aWNlOjpkZXZpY2VDbG9jaygpCit7
CisgICAgaWYgKG1fZGV2aWNlQ2xvY2spCisgICAgICAgIHJldHVybiBtX2RldmljZUNsb2NrOwor
CisgICAgQ01DbG9ja1JlZiBjbG9jazsKKyAgICBhdXRvIGVyciA9IENNQXVkaW9EZXZpY2VDbG9j
a0NyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBwZXJzaXN0ZW50SWQoKS5jcmVhdGVDRlN0cmlu
ZygpLmdldCgpLCAmY2xvY2spOworICAgIGlmIChlcnIpIHsKKyAgICAgICAgTE9HKE1lZGlhLCAi
Q29yZUF1ZGlvQ2FwdHVyZURldmljZTo6Q01BdWRpb0RldmljZUNsb2NrQ3JlYXRlKCVwKSBDTUF1
ZGlvRGV2aWNlQ2xvY2tDcmVhdGUgZmFpbGVkIHdpdGggZXJyb3IgJWQgKCUuNHMpIiwgdGhpcywg
KGludCllcnIsIChjaGFyKikmZXJyKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQor
CisgICAgbV9kZXZpY2VDbG9jayA9IGFkb3B0Q0YoY2xvY2spOworCisgICAgcmV0dXJuIG1fZGV2
aWNlQ2xvY2s7Cit9CisKK2Jvb2wgQ29yZUF1ZGlvQ2FwdHVyZURldmljZTo6aXNBbGl2ZSgpCit7
CisgICAgQXVkaW9PYmplY3RQcm9wZXJ0eUFkZHJlc3MgYWRkcmVzcyA9IHsga0F1ZGlvRGV2aWNl
UHJvcGVydHlEZXZpY2VJc0FsaXZlLCBrQXVkaW9PYmplY3RQcm9wZXJ0eVNjb3BlR2xvYmFsLCBr
QXVkaW9PYmplY3RQcm9wZXJ0eUVsZW1lbnRNYXN0ZXIgfTsKKyAgICBVSW50MzIgc3RhdGUgPSAw
OworICAgIFVJbnQzMiBkYXRhU2l6ZSA9IHNpemVvZihzdGF0ZSk7CisgICAgaWYgKEF1ZGlvT2Jq
ZWN0R2V0UHJvcGVydHlEYXRhKHN0YXRpY19jYXN0PFVJbnQzMj4obV9kZXZpY2VJRCksICZhZGRy
ZXNzLCAwLCBudWxscHRyLCAmZGF0YVNpemUsICZzdGF0ZSkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICByZXR1cm4gc3RhdGU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJl
RGV2aWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1
ZGlvQ2FwdHVyZURldmljZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5ZWYxMzljZWUyOGU2ZjQ1OWRjMTc5NTI1
ZDFmZDRhOTE0OGE3NWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZURldmljZS5oCkBAIC0wLDAgKzEsNTkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFBMQVRGT1JNKE1BQykKKworI2lu
Y2x1ZGUgIkNhcHR1cmVEZXZpY2UuaCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK3R5cGVkZWYgc3RydWN0IE9wYXF1ZUNNQ2xvY2sq
IENNQ2xvY2tSZWY7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ29yZUF1ZGlvQ2Fw
dHVyZURldmljZSA6IHB1YmxpYyBDYXB0dXJlRGV2aWNlLCBwdWJsaWMgUmVmQ291bnRlZDxDb3Jl
QXVkaW9DYXB0dXJlRGV2aWNlPiB7CitwdWJsaWM6CisKKyAgICBzdGF0aWMgUmVmUHRyPENvcmVB
dWRpb0NhcHR1cmVEZXZpY2U+IGNyZWF0ZSh1aW50MzJfdCk7CisgICAgdmlydHVhbCB+Q29yZUF1
ZGlvQ2FwdHVyZURldmljZSgpID0gZGVmYXVsdDsKKworICAgIHVpbnQzMl90IGRldmljZUlEKCk7
CisgICAgUmV0YWluUHRyPENNQ2xvY2tSZWY+IGRldmljZUNsb2NrKCk7CisgICAgYm9vbCBpc0Fs
aXZlKCk7CisKK3ByaXZhdGU6CisgICAgQ29yZUF1ZGlvQ2FwdHVyZURldmljZSh1aW50MzJfdCwg
Y29uc3QgU3RyaW5nJiBwZXJzaXN0ZW50SUQsIGNvbnN0IFN0cmluZyYgbGFiZWwpOworCisgICAg
dWludDMyX3QgbV9kZXZpY2VJRCB7IDAgfTsKKyAgICBSZXRhaW5QdHI8Q01DbG9ja1JlZj4gbV9k
ZXZpY2VDbG9jazsKK307CisKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
RU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgUExBVEZPUk0oTUFDKQorCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZURldmlj
ZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Nv
cmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYzU4YWM3ZDAwOTc0
MTJlMjY1YWI5ODEyYzEwOTdmNTBlYjgyYmI1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5h
Z2VyLmNwcApAQCAtMCwwICsxLDE0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDb3JlQXVkaW9D
YXB0dXJlRGV2aWNlTWFuYWdlci5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgUExB
VEZPUk0oTUFDKQorCisjaW5jbHVkZSAiQ29yZUF1ZGlvQ2FwdHVyZURldmljZS5oIgorI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlIDxBdWRpb1VuaXQvQXVkaW9Vbml0Lmg+CisjaW5jbHVk
ZSA8Q29yZU1lZGlhL0NNU3luYy5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgor
CisjaW1wb3J0ICJDb3JlTWVkaWFTb2Z0TGluay5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K0NvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyJiBDb3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFu
YWdlcjo6c2luZ2xldG9uKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q29yZUF1ZGlv
Q2FwdHVyZURldmljZU1hbmFnZXI+IG1hbmFnZXI7CisgICAgcmV0dXJuIG1hbmFnZXI7Cit9CisK
K1ZlY3RvcjxDYXB0dXJlRGV2aWNlPiYgQ29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXI6OmNh
cHR1cmVEZXZpY2VzKCkKK3sKKyAgICBjb3JlQXVkaW9DYXB0dXJlRGV2aWNlcygpOworICAgIHJl
dHVybiBtX2RldmljZXM7Cit9CisKK3N0YXRpYyBib29sIGRldmljZUhhc0lucHV0U3RyZWFtcyhB
dWRpb09iamVjdElEIGRldmljZUlEKQoreworICAgIFVJbnQzMiBkYXRhU2l6ZSA9IDA7CisgICAg
QXVkaW9PYmplY3RQcm9wZXJ0eUFkZHJlc3MgYWRkcmVzcyA9IHsga0F1ZGlvRGV2aWNlUHJvcGVy
dHlTdHJlYW1zLCBrQXVkaW9EZXZpY2VQcm9wZXJ0eVNjb3BlSW5wdXQsIGtBdWRpb09iamVjdFBy
b3BlcnR5RWxlbWVudE1hc3RlciB9OworICAgIGF1dG8gZXJyID0gQXVkaW9PYmplY3RHZXRQcm9w
ZXJ0eURhdGFTaXplKGRldmljZUlELCAmYWRkcmVzcywgMCwgbnVsbHB0ciwgJmRhdGFTaXplKTsK
KworICAgIHJldHVybiAhZXJyICYmIGRhdGFTaXplOworfQorCitWZWN0b3I8UmVmPENvcmVBdWRp
b0NhcHR1cmVEZXZpY2U+PiYgQ29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXI6OmNvcmVBdWRp
b0NhcHR1cmVEZXZpY2VzKCkKK3sKKyAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZDsKKyAgICBp
ZiAoIWluaXRpYWxpemVkKSB7CisgICAgICAgIGluaXRpYWxpemVkID0gdHJ1ZTsKKyAgICAgICAg
cmVmcmVzaEF1ZGlvQ2FwdHVyZURldmljZXMoKTsKKworICAgICAgICBBdWRpb09iamVjdFByb3Bl
cnR5QWRkcmVzcyBhZGRyZXNzID0geyBrQXVkaW9IYXJkd2FyZVByb3BlcnR5RGV2aWNlcywga0F1
ZGlvT2JqZWN0UHJvcGVydHlTY29wZUdsb2JhbCwga0F1ZGlvT2JqZWN0UHJvcGVydHlFbGVtZW50
TWFzdGVyIH07CisgICAgICAgIGF1dG8gZXJyID0gQXVkaW9PYmplY3RBZGRQcm9wZXJ0eUxpc3Rl
bmVyKGtBdWRpb09iamVjdFN5c3RlbU9iamVjdCwgJmFkZHJlc3MsIGRldmljZXNDaGFuZ2VkLCB0
aGlzKTsKKyAgICAgICAgaWYgKGVycikKKyAgICAgICAgICAgIExPR19FUlJPUigiQ29yZUF1ZGlv
Q2FwdHVyZURldmljZU1hbmFnZXI6OmRldmljZXMoJXApIEF1ZGlvT2JqZWN0QWRkUHJvcGVydHlM
aXN0ZW5lciByZXR1cm5lZCBlcnJvciAlZCAoJS40cykiLCB0aGlzLCAoaW50KWVyciwgKGNoYXIq
KSZlcnIpOworICAgIH0KKworICAgIHJldHVybiBtX2NvcmVBdWRpb0NhcHR1cmVEZXZpY2VzOwor
fQorCit2b2lkIENvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyOjpyZWZyZXNoQXVkaW9DYXB0
dXJlRGV2aWNlcygpCit7CisgICAgQXVkaW9PYmplY3RQcm9wZXJ0eUFkZHJlc3MgYWRkcmVzcyA9
IHsga0F1ZGlvSGFyZHdhcmVQcm9wZXJ0eURldmljZXMsIGtBdWRpb09iamVjdFByb3BlcnR5U2Nv
cGVHbG9iYWwsIGtBdWRpb09iamVjdFByb3BlcnR5RWxlbWVudE1hc3RlciB9OworICAgIFVJbnQz
MiBkYXRhU2l6ZSA9IDA7CisgICAgYXV0byBlcnIgPSBBdWRpb09iamVjdEdldFByb3BlcnR5RGF0
YVNpemUoa0F1ZGlvT2JqZWN0U3lzdGVtT2JqZWN0LCAmYWRkcmVzcywgMCwgbnVsbHB0ciwgJmRh
dGFTaXplKTsKKyAgICBpZiAoZXJyKSB7CisgICAgICAgIExPRyhNZWRpYSwgIkNvcmVBdWRpb0Nh
cHR1cmVEZXZpY2VNYW5hZ2VyOjpyZWZyZXNoQXVkaW9DYXB0dXJlRGV2aWNlcyglcCkgZmFpbGVk
IHRvIGdldCBzaXplIG9mIGRldmljZSBsaXN0ICVkICglLjRzKSIsIHRoaXMsIChpbnQpZXJyLCAo
Y2hhciopJmVycik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzaXplX3QgZGV2aWNl
Q291bnQgPSBkYXRhU2l6ZSAvIHNpemVvZihBdWRpb09iamVjdElEKTsKKyAgICBBdWRpb09iamVj
dElEIGRldmljZUlEc1tkZXZpY2VDb3VudF07CisgICAgZXJyID0gQXVkaW9PYmplY3RHZXRQcm9w
ZXJ0eURhdGEoa0F1ZGlvT2JqZWN0U3lzdGVtT2JqZWN0LCAmYWRkcmVzcywgMCwgbnVsbHB0ciwg
JmRhdGFTaXplLCBkZXZpY2VJRHMpOworICAgIGlmIChlcnIpIHsKKyAgICAgICAgTE9HKE1lZGlh
LCAiQ29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXI6OnJlZnJlc2hBdWRpb0NhcHR1cmVEZXZp
Y2VzKCVwKSBmYWlsZWQgdG8gZ2V0IGRldmljZSBsaXN0ICVkICglLjRzKSIsIHRoaXMsIChpbnQp
ZXJyLCAoY2hhciopJmVycik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBib29sIGhh
dmVEZXZpY2VDaGFuZ2VzID0gZmFsc2U7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBkZXZp
Y2VDb3VudDsgaSsrKSB7CisgICAgICAgIEF1ZGlvT2JqZWN0SUQgZGV2aWNlSUQgPSBkZXZpY2VJ
RHNbaV07CisgICAgICAgIGlmICghZGV2aWNlSGFzSW5wdXRTdHJlYW1zKGRldmljZUlEKSkKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmIChzdGQ6OmFueV9vZihtX2NvcmVBdWRp
b0NhcHR1cmVEZXZpY2VzLmJlZ2luKCksIG1fY29yZUF1ZGlvQ2FwdHVyZURldmljZXMuZW5kKCks
IFtkZXZpY2VJRF0oUmVmPENvcmVBdWRpb0NhcHR1cmVEZXZpY2U+IGRldmljZSkgeyByZXR1cm4g
ZGV2aWNlLT5kZXZpY2VJRCgpID09IGRldmljZUlEOyB9KSkKKyAgICAgICAgICAgIGNvbnRpbnVl
OworCisgICAgICAgIGF1dG8gZGV2aWNlID0gQ29yZUF1ZGlvQ2FwdHVyZURldmljZTo6Y3JlYXRl
KGRldmljZUlEKTsKKyAgICAgICAgaWYgKCFkZXZpY2UpCisgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgbV9jb3JlQXVkaW9DYXB0dXJlRGV2aWNlcy5hcHBlbmQoZGV2aWNlLnJlbGVhc2VO
b25OdWxsKCkpOworCisgICAgICAgIGhhdmVEZXZpY2VDaGFuZ2VzID0gdHJ1ZTsKKyAgICB9CisK
KyAgICBmb3IgKGF1dG8mIGRldmljZSA6IG1fY29yZUF1ZGlvQ2FwdHVyZURldmljZXMpIHsKKyAg
ICAgICAgYm9vbCBpc0FsaXZlID0gZGV2aWNlLT5pc0FsaXZlKCk7CisgICAgICAgIGlmIChkZXZp
Y2UtPmVuYWJsZWQoKSAhPSBpc0FsaXZlKSB7CisgICAgICAgICAgICBkZXZpY2UtPnNldEVuYWJs
ZWQoaXNBbGl2ZSk7CisgICAgICAgICAgICBoYXZlRGV2aWNlQ2hhbmdlcyA9IHRydWU7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBpZiAoaGF2ZURldmljZUNoYW5nZXMpIHsKKyAgICAgICAgbV9k
ZXZpY2VzID0gVmVjdG9yPENhcHR1cmVEZXZpY2U+KCk7CisKKyAgICAgICAgZm9yIChhdXRvICZk
ZXZpY2UgOiBtX2NvcmVBdWRpb0NhcHR1cmVEZXZpY2VzKSB7CisgICAgICAgICAgICBDYXB0dXJl
RGV2aWNlIGNhcHR1cmVEZXZpY2UoZGV2aWNlLT5wZXJzaXN0ZW50SWQoKSwgQ2FwdHVyZURldmlj
ZTo6RGV2aWNlVHlwZTo6QXVkaW8sIGRldmljZS0+bGFiZWwoKSk7CisgICAgICAgICAgICBjYXB0
dXJlRGV2aWNlLnNldEVuYWJsZWQoZGV2aWNlLT5lbmFibGVkKCkpOworICAgICAgICAgICAgbV9k
ZXZpY2VzLmFwcGVuZChjYXB0dXJlRGV2aWNlKTsKKyAgICAgICAgfQorICAgIH0KK30KKworT1NT
dGF0dXMgQ29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXI6OmRldmljZXNDaGFuZ2VkKEF1ZGlv
T2JqZWN0SUQsIFVJbnQzMiwgY29uc3QgQXVkaW9PYmplY3RQcm9wZXJ0eUFkZHJlc3MqLCB2b2lk
ICp1c2VyRGF0YSkKK3sKKyAgICBzdGF0aWNfY2FzdDxDb3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFu
YWdlcio+KHVzZXJEYXRhKS0+cmVmcmVzaEF1ZGlvQ2FwdHVyZURldmljZXMoKTsKKyAgICByZXR1
cm4gMDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1F
RElBX1NUUkVBTSkgJiYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVy
ZURldmljZU1hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YjRmMTY0YjEyYWIyMjc0ZmVlYzEyZWQ4OGM3
ZmM0ZmFlODc3YzFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKQEAgLTAsMCAr
MSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgUExBVEZPUk0oTUFDKQor
CisjaW5jbHVkZSAiQ2FwdHVyZURldmljZS5oIgorI2luY2x1ZGUgIkNhcHR1cmVEZXZpY2VNYW5h
Z2VyLmgiCisjaW5jbHVkZSA8Q29yZUF1ZGlvL0NvcmVBdWRpby5oPgorI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENvcmVBdWRpb0NhcHR1
cmVEZXZpY2U7CisKK2NsYXNzIENvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyIGZpbmFsIDog
cHVibGljIENhcHR1cmVEZXZpY2VNYW5hZ2VyIHsKKyAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0
cm95ZWQ8Q29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXI+OworcHVibGljOgorICAgIHN0YXRp
YyBDb3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlciYgc2luZ2xldG9uKCk7CisKKyAgICBWZWN0
b3I8Q2FwdHVyZURldmljZT4mIGNhcHR1cmVEZXZpY2VzKCkgZmluYWw7CisKKyAgICBWZWN0b3I8
UmVmPENvcmVBdWRpb0NhcHR1cmVEZXZpY2U+PiYgY29yZUF1ZGlvQ2FwdHVyZURldmljZXMoKTsK
KworcHJpdmF0ZToKKyAgICBDb3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlcigpID0gZGVmYXVs
dDsKKyAgICB+Q29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIoKSA9IGRlZmF1bHQ7CisgICAg
CisgICAgc3RhdGljIE9TU3RhdHVzIGRldmljZXNDaGFuZ2VkKEF1ZGlvT2JqZWN0SUQsIFVJbnQz
MiwgY29uc3QgQXVkaW9PYmplY3RQcm9wZXJ0eUFkZHJlc3MqLCB2b2lkKik7CisKKyAgICB2b2lk
IHJlZnJlc2hBdWRpb0NhcHR1cmVEZXZpY2VzKCk7CisKKyAgICBWZWN0b3I8Q2FwdHVyZURldmlj
ZT4gbV9kZXZpY2VzOworICAgIFZlY3RvcjxSZWY8Q29yZUF1ZGlvQ2FwdHVyZURldmljZT4+IG1f
Y29yZUF1ZGlvQ2FwdHVyZURldmljZXM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNICYmIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0
dXJlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9D
b3JlQXVkaW9DYXB0dXJlU291cmNlLmNwcAppbmRleCAyOWM3MDExNDM4YzUwNDRhY2JhZjJlNmVh
YmU3OTkzYTNkNGZmZDhkLi42M2RmZmJmYjQxNTg3MjE2YzMxZTNmYjQwZWY1MjE1MGQ2NGI3MDUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29y
ZUF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuY3BwCkBAIC0zMCw2ICszMCw4IEBA
CiAKICNpbmNsdWRlICJBdWRpb1NhbXBsZUJ1ZmZlckxpc3QuaCIKICNpbmNsdWRlICJBdWRpb1Nh
bXBsZURhdGFTb3VyY2UuaCIKKyNpbmNsdWRlICJDb3JlQXVkaW9DYXB0dXJlRGV2aWNlLmgiCisj
aW5jbHVkZSAiQ29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIuaCIKICNpbmNsdWRlICJMb2dn
aW5nLmgiCiAjaW5jbHVkZSAiTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmgiCiAjaW5jbHVkZSA8QXVk
aW9Ub29sYm94L0F1ZGlvQ29udmVydGVyLmg+CkBAIC03OCw3ICs4MCwxNSBAQCBDb3JlQXVkaW9D
YXB0dXJlU291cmNlOjpDb3JlQXVkaW9DYXB0dXJlU291cmNlKGNvbnN0IENhcHR1cmVEZXZpY2Um
IGRldmljZUluZm8pCiAgICAgOiBSZWFsdGltZU1lZGlhU291cmNlKGVtcHR5U3RyaW5nKCksIFJl
YWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvLCBkZXZpY2VJbmZvLmxhYmVsKCkpCiAgICAg
LCBtX2NhcHR1cmVEZXZpY2VJRCgwKQogewotICAgIC8vIEZJWE1FOiB1c2UgZGV2aWNlSW5mbyB0
byBzZXQgdGhlIG1fY2FwdHVyZURldmljZUlECisjaWYgUExBVEZPUk0oTUFDKQorICAgIGZvciAo
YXV0byYgcGxhdGZvcm1EZXZpY2UgOiBDb3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2lu
Z2xldG9uKCkuY29yZUF1ZGlvQ2FwdHVyZURldmljZXMoKSkgeworICAgICAgICBpZiAocGxhdGZv
cm1EZXZpY2UtPnBlcnNpc3RlbnRJZCgpID09IGRldmljZUluZm8ucGVyc2lzdGVudElkKCkpIHsK
KyAgICAgICAgICAgIG1fY2FwdHVyZURldmljZUlEID0gcGxhdGZvcm1EZXZpY2UtPmRldmljZUlE
KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICBBU1NFUlQobV9j
YXB0dXJlRGV2aWNlSUQpOworI2VuZGlmCiAKICAgICBzZXRQZXJzaXN0ZW50SUQoZGV2aWNlSW5m
by5wZXJzaXN0ZW50SWQoKSk7CiAgICAgc2V0TXV0ZWQodHJ1ZSk7CkBAIC00MDgsMjQgKzQxOCwy
NiBAQCBPU1N0YXR1cyBDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpzZXR1cEF1ZGlvVW5pdHMoKQog
CiB2b2lkIENvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCiB7Ci0g
ICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9pbnRlcm5hbFN0YXRlTG9jayk7Ci0gICAg
aWYgKG1faW9Vbml0U3RhcnRlZCkKLSAgICAgICAgcmV0dXJuOworICAgIHsKKyAgICAgICAgc3Rk
Ojpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9pbnRlcm5hbFN0YXRlTG9jayk7CisgICAgICAgIGlm
IChtX2lvVW5pdFN0YXJ0ZWQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgT1NTdGF0
dXMgZXJyOworICAgICAgICBpZiAoIW1faW9Vbml0KSB7CisgICAgICAgICAgICBlcnIgPSBzZXR1
cEF1ZGlvVW5pdHMoKTsKKyAgICAgICAgICAgIGlmIChlcnIpCisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CiAKLSAgICBPU1N0YXR1cyBlcnI7Ci0gICAgaWYgKCFtX2lvVW5pdCkg
ewotICAgICAgICBlcnIgPSBzZXR1cEF1ZGlvVW5pdHMoKTsKLSAgICAgICAgaWYgKGVycikKKyAg
ICAgICAgZXJyID0gQXVkaW9PdXRwdXRVbml0U3RhcnQobV9pb1VuaXQpOworICAgICAgICBpZiAo
ZXJyKSB7CisgICAgICAgICAgICBMT0coTWVkaWEsICJDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpz
dGFydCglcCkgQXVkaW9PdXRwdXRVbml0U3RhcnQgZmFpbGVkIHdpdGggZXJyb3IgJWQgKCUuNHMp
IiwgdGhpcywgKGludCllcnIsIChjaGFyKikmZXJyKTsKICAgICAgICAgICAgIHJldHVybjsKLSAg
ICB9CisgICAgICAgIH0KIAotICAgIGVyciA9IEF1ZGlvT3V0cHV0VW5pdFN0YXJ0KG1faW9Vbml0
KTsKLSAgICBpZiAoZXJyKSB7Ci0gICAgICAgIExPRyhNZWRpYSwgIkNvcmVBdWRpb0NhcHR1cmVT
b3VyY2U6OnN0YXJ0KCVwKSBBdWRpb091dHB1dFVuaXRTdGFydCBmYWlsZWQgd2l0aCBlcnJvciAl
ZCAoJS40cykiLCB0aGlzLCAoaW50KWVyciwgKGNoYXIqKSZlcnIpOwotICAgICAgICByZXR1cm47
CisgICAgICAgIG1faW9Vbml0U3RhcnRlZCA9IHRydWU7CiAgICAgfQotCi0gICAgbV9pb1VuaXRT
dGFydGVkID0gdHJ1ZTsKICAgICBzZXRNdXRlZChmYWxzZSk7CiB9CiAKQEAgLTQzMywxNCArNDQ1
LDE0IEBAIHZvaWQgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEoKQog
ewogICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1faW50ZXJuYWxTdGF0ZUxvY2spOwog
Ci0gICAgQVNTRVJUKG1faW9Vbml0KTsKLQotICAgIGF1dG8gZXJyID0gQXVkaW9PdXRwdXRVbml0
U3RvcChtX2lvVW5pdCk7Ci0gICAgaWYgKGVycikgewotICAgICAgICBMT0coTWVkaWEsICJDb3Jl
QXVkaW9DYXB0dXJlU291cmNlOjpzdG9wKCVwKSBBdWRpb091dHB1dFVuaXRTdG9wIGZhaWxlZCB3
aXRoIGVycm9yICVkICglLjRzKSIsIHRoaXMsIChpbnQpZXJyLCAoY2hhciopJmVycik7Ci0gICAg
ICAgIHJldHVybjsKKyAgICBpZiAobV9pb1VuaXQpIHsKKyAgICAgICAgYXV0byBlcnIgPSBBdWRp
b091dHB1dFVuaXRTdG9wKG1faW9Vbml0KTsKKyAgICAgICAgaWYgKGVycikgeworICAgICAgICAg
ICAgTE9HKE1lZGlhLCAiQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6c3RvcCglcCkgQXVkaW9PdXRw
dXRVbml0U3RvcCBmYWlsZWQgd2l0aCBlcnJvciAlZCAoJS40cykiLCB0aGlzLCAoaW50KWVyciwg
KGNoYXIqKSZlcnIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIG1f
aW9Vbml0U3RhcnRlZCA9IGZhbHNlOwogICAgIH0KLSAgICBtX2lvVW5pdFN0YXJ0ZWQgPSBmYWxz
ZTsKICAgICBzZXRNdXRlZCh0cnVlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXJNYWMuY3BwCmluZGV4IDE1MDE4Yzk5OTRlZTA0ODgzNDE0ZmQ1Njk4NWQ4ZDEy
ZDg0NDkyMWEuLjE3MWYwMzZlMTU2ZDIyYzUyNzIyZTExNjM4M2E2OTJlN2I4NTRhODEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHAKQEAgLTMzLDggKzMz
LDEwIEBACiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICNpbmNsdWRlICJSZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyTWFjLmgiCiAKKyNpbmNsdWRlICJBVkF1ZGlvQ2FwdHVyZVNvdXJjZS5oIgog
I2luY2x1ZGUgIkFWQ2FwdHVyZURldmljZU1hbmFnZXIuaCIKICNpbmNsdWRlICJBVlZpZGVvQ2Fw
dHVyZVNvdXJjZS5oIgorI2luY2x1ZGUgIkNvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmgi
CiAjaW5jbHVkZSAiQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcu
aCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbVByaXZhdGUuaCIKQEAgLTQyLDYgKzQ0LDI4IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAordm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFj
OjpzZXRVc2VBVkZvdW5kYXRpb25BdWRpb0NhcHR1cmUoYm9vbCBlbmFibGVkKQoreworICAgIHN0
YXRpYyBib29sIGFjdGl2ZSA9IGZhbHNlOworICAgIGlmIChhY3RpdmUgPT0gZW5hYmxlZCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgYWN0aXZlID0gZW5hYmxlZDsKKyAgICBpZiAoYWN0aXZlKSB7
CisgICAgICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLnNldEF1ZGlv
RmFjdG9yeShBVkF1ZGlvQ2FwdHVyZVNvdXJjZTo6ZmFjdG9yeSgpKTsKKyAgICAgICAgUmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9uKCkuc2V0QXVkaW9DYXB0dXJlRGV2aWNlTWFu
YWdlcihBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKSk7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9uKCkuc2V0QXVkaW9G
YWN0b3J5KENvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OmZhY3RvcnkoKSk7CisjaWYgUExBVEZPUk0o
TUFDKQorICAgICAgICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5zZXRB
dWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyKENvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyOjpz
aW5nbGV0b24oKSk7CisjZWxzZQorICAgICAgICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpz
aW5nbGV0b24oKS5zZXRBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyKEFWQ2FwdHVyZURldmljZU1h
bmFnZXI6OnNpbmdsZXRvbigpKTsKKyNlbmRpZgorICAgIH0KK30KKworCisKIFJlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXImIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnBsYXRmb3JtQ2VudGVy
KCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwpAQCAtNjUsNiArODksMTMgQEAgUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYzo6UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYygp
CiAKICAgICBtX2F1ZGlvRmFjdG9yeSA9ICZDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpmYWN0b3J5
KCk7CiAgICAgbV92aWRlb0ZhY3RvcnkgPSAmQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmZhY3Rvcnko
KTsKKworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBtX2F1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIg
PSAmQ29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmdsZXRvbigpOworI2Vsc2UKKyAg
ICBtX2F1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIgPSAmQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6
c2luZ2xldG9uKCk7CisjZW5kaWYKKyAgICBtX3ZpZGVvQ2FwdHVyZURldmljZU1hbmFnZXIgPSAm
QVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCk7CiB9CiAKIFJlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXJNYWM6On5SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjKCkKQEAgLTEwMyw3
ICsxMzQsNyBAQCB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OmNyZWF0ZU1lZGlh
U3RyZWFtKE5ld01lZGlhU3RyZWFtSGFuZGxlciBjb21wbAogICAgIFN0cmluZyBpbnZhbGlkQ29u
c3RyYWludDsKIAogICAgIGlmICghYXVkaW9EZXZpY2VJRC5pc0VtcHR5KCkpIHsKLSAgICAgICAg
YXV0byBhdWRpb0RldmljZSA9IEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmdsZXRvbigpLmRl
dmljZVdpdGhVSUQoYXVkaW9EZXZpY2VJRCwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6QXVk
aW8pOworICAgICAgICBhdXRvIGF1ZGlvRGV2aWNlID0gbV9hdWRpb0NhcHR1cmVEZXZpY2VNYW5h
Z2VyLT5kZXZpY2VXaXRoVUlEKGF1ZGlvRGV2aWNlSUQsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5
cGU6OkF1ZGlvKTsKICAgICAgICAgaWYgKGF1ZGlvRGV2aWNlICYmIG1fYXVkaW9GYWN0b3J5KSB7
CiAgICAgICAgICAgICBpZiAoYXV0byBhdWRpb1NvdXJjZSA9IG1fYXVkaW9GYWN0b3J5LT5jcmVh
dGVNZWRpYVNvdXJjZUZvckNhcHR1cmVEZXZpY2VXaXRoQ29uc3RyYWludHMoYXVkaW9EZXZpY2Uu
dmFsdWUoKSwgYXVkaW9Db25zdHJhaW50cywgaW52YWxpZENvbnN0cmFpbnQpKQogICAgICAgICAg
ICAgICAgIGF1ZGlvU291cmNlcy5hcHBlbmQoYXVkaW9Tb3VyY2UucmVsZWFzZU5vbk51bGwoKSk7
CkBAIC0xMTQsNyArMTQ1LDcgQEAgdm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjOjpj
cmVhdGVNZWRpYVN0cmVhbShOZXdNZWRpYVN0cmVhbUhhbmRsZXIgY29tcGwKICAgICAgICAgfQog
ICAgIH0KICAgICBpZiAoIXZpZGVvRGV2aWNlSUQuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGF1dG8g
dmlkZW9EZXZpY2UgPSBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5kZXZpY2VX
aXRoVUlEKHZpZGVvRGV2aWNlSUQsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvKTsK
KyAgICAgICAgYXV0byB2aWRlb0RldmljZSA9IG1fdmlkZW9DYXB0dXJlRGV2aWNlTWFuYWdlci0+
ZGV2aWNlV2l0aFVJRCh2aWRlb0RldmljZUlELCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpW
aWRlbyk7CiAgICAgICAgIGlmICh2aWRlb0RldmljZSAmJiBtX3ZpZGVvRmFjdG9yeSkgewogICAg
ICAgICAgICAgaWYgKGF1dG8gdmlkZW9Tb3VyY2UgPSBtX3ZpZGVvRmFjdG9yeS0+Y3JlYXRlTWVk
aWFTb3VyY2VGb3JDYXB0dXJlRGV2aWNlV2l0aENvbnN0cmFpbnRzKHZpZGVvRGV2aWNlLnZhbHVl
KCksIHZpZGVvQ29uc3RyYWludHMsIGludmFsaWRDb25zdHJhaW50KSkKICAgICAgICAgICAgICAg
ICB2aWRlb1NvdXJjZXMuYXBwZW5kKHZpZGVvU291cmNlLnJlbGVhc2VOb25OdWxsKCkpOwpAQCAt
MTMzLDcgKzE2NCwxNSBAQCB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OmNyZWF0
ZU1lZGlhU3RyZWFtKE5ld01lZGlhU3RyZWFtSGFuZGxlciBjb21wbAogCiBWZWN0b3I8Q2FwdHVy
ZURldmljZT4gUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYzo6Z2V0TWVkaWFTdHJlYW1EZXZp
Y2VzKCkKIHsKLSAgICByZXR1cm4gQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCku
Z2V0U291cmNlc0luZm8oKTsKKyAgICBWZWN0b3I8Q2FwdHVyZURldmljZT4gcmVzdWx0OworCisg
ICAgaWYgKG1fYXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlcikKKyAgICAgICAgcmVzdWx0LmFwcGVu
ZFZlY3RvcihtX2F1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXItPmdldEF1ZGlvU291cmNlc0luZm8o
KSk7CisKKyAgICBpZiAobV92aWRlb0NhcHR1cmVEZXZpY2VNYW5hZ2VyKQorICAgICAgICByZXN1
bHQuYXBwZW5kVmVjdG9yKG1fdmlkZW9DYXB0dXJlRGV2aWNlTWFuYWdlci0+Z2V0VmlkZW9Tb3Vy
Y2VzSW5mbygpKTsKKworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIFZlY3RvcjxTdHJpbmc+IFJl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OmJlc3RTb3VyY2VzRm9yVHlwZUFuZENvbnN0cmFp
bnRzKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgTWVkaWFDb25zdHJhaW50
cyYgY29uc3RyYWludHMsIFN0cmluZyYgaW52YWxpZENvbnN0cmFpbnQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlck1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1Jl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuaAppbmRleCA3NmJjODI3ZTU0OWRhZjQyYzEzNmJj
NzlmM2FhNzI5YmU3NDJiNjU0Li4xYmY0OTdmZDZkN2MzYzE2NmZkYTgyZGVhMmIxMzFiMTNjOGE0
NDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmgKQEAgLTQ0
LDYgKzQ0LDcgQEAgY2xhc3MgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYyBmaW5hbCA6IHB1
YmxpYyBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyIHsKIHB1YmxpYzoKICAgICBSZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyTWFjKCk7CiAKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBz
ZXRVc2VBVkZvdW5kYXRpb25BdWRpb0NhcHR1cmUoYm9vbCBlbmFibGVkKTsKIHByaXZhdGU6CiAg
ICAgflJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXJQcm94eS5jcHAKaW5kZXggYzg0MTdiMGMyOTgyNGJiMTFmYTg4MTE0MDYwNTYwMDcw
NmZjM2FlMS4uMzJhMzYzMTc4YWJmMmQ2OTczNTI4OTFjYzIxNmI0MGZkMTJjNTdiYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KIAogI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pICYmIFVTRShBVkZPVU5EQVRJT04pCi0jaW5jbHVkZSA8V2ViQ29yZS9BVkNhcHR1cmVE
ZXZpY2VNYW5hZ2VyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyTWFjLmg+CiAjZW5kaWYKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC0zMzYsNyAr
MzM2LDcgQEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6c3lu
Y1dpdGhXZWJDb3JlUHJlZnMoKSBjb25zdAogCiAjaWYgVVNFKEFWRk9VTkRBVElPTikKICAgICBi
b29sIHVzZUFWRm91bmRhdGlvbkF1ZGlvQ2FwdHVyZSA9IG1fcGFnZS5wcmVmZXJlbmNlcygpLnVz
ZUFWRm91bmRhdGlvbkF1ZGlvQ2FwdHVyZSgpOwotICAgIFdlYkNvcmU6OkFWQ2FwdHVyZURldmlj
ZU1hbmFnZXI6OnNldFVzZUFWRm91bmRhdGlvbkF1ZGlvQ2FwdHVyZSh1c2VBVkZvdW5kYXRpb25B
dWRpb0NhcHR1cmUpOworICAgIFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6
OnNldFVzZUFWRm91bmRhdGlvbkF1ZGlvQ2FwdHVyZSh1c2VBVkZvdW5kYXRpb25BdWRpb0NhcHR1
cmUpOwogI2VuZGlmCiAjZW5kaWYKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>307040</attachid>
            <date>2017-04-13 15:51:07 -0700</date>
            <delta_ts>2017-04-22 14:42:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-170778-20170413155107.patch</filename>
            <type>text/plain</type>
            <size>49934</size>
            <attacher name="Jeremy Jones">jeremyj-wk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1MjUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWY2NDllNGZmZGI0MDgw
ZGExYTFkZTM1ZDU1NGI2MDE0ZjVjN2U5YS4uYjNiMzY4NzMwM2RiMDI1MTYwYWNlYzZiNzYxYTA3
M2U3YjQyY2M3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDE3LTA0LTEyICBKZXJl
bXkgSm9uZXMgIDxqZXJlbXlqQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBlbnVtZXJh
dGVEZXZpY2VzIHRvIGFsbG93IGRzZXBhcmF0ZSBDYXB0dXJlRGV2aWNlTWFuYWdlcnMgZm9yIGF1
ZGlvIGFuZCB2aWRlby4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE3MDc3OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBDb3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlciB0byBlbnVtZXJhdGUgQ29y
ZUF1ZGlvIGRldmljZXMuCisKKyAgICAgICAgUmVmYWN0b3IgUmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlciBhbmQgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYyB0byBwcm92aWRlIGluZGVwZW5k
ZW50IGF1ZGlvIGFuZCB2aWRlbyBjYXB0dXJlIGRldmljZSBtYW5hZ2VycworICAgICAgICBhbmQg
dGhlIGFiaWxpaXR5IHRvIG92ZXJyaWRlIHRoZSBjYXB0dXJlIGRldmljZSBtYW5hZ2Vycy4KKwor
ICAgICAgICBDb3JlQXVkaW9DYXB0dXJlU291cmNlIG5vdyB1c2VzIENvcmVBdWRpb0NhcHR1cmVE
ZXZpY2VNYW5hZ2VyIHRvIHVzZSB0aGUgc3BlY2lmaWVkIGRldmljZSBpbnN0ZWFkIG9mIHRoZSBk
ZWZhdWx0IG9uZS4gCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIu
Y3BwOgorICAgICAgICAoQ2FwdHVyZURldmljZU1hbmFnZXI6OmdldEF1ZGlvU291cmNlc0luZm8p
OgorICAgICAgICAoQ2FwdHVyZURldmljZU1hbmFnZXI6OmdldFZpZGVvU291cmNlc0luZm8pOgor
ICAgICAgICAoQ2FwdHVyZURldmljZU1hbmFnZXI6OmdldFNvdXJjZXNJbmZvKTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2V0QXVk
aW9DYXB0dXJlRGV2aWNlTWFuYWdlcik6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyOjp1bnNldEF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIpOgorICAgICAgICAo
V2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2V0VmlkZW9DYXB0dXJlRGV2aWNl
TWFuYWdlcik6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjp1
bnNldFZpZGVvQ2FwdHVyZURldmljZU1hbmFnZXIpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlh
c3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmRlZmF1bHRBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2Vy
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmRlZmF1bHRW
aWRlb0NhcHR1cmVEZXZpY2VNYW5hZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXI6OmF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6dmlkZW9DYXB0dXJlRGV2aWNlTWFuYWdl
cik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1h
bmFnZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2
aWNlTWFuYWdlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFWQ2FwdHVyZURldmljZU1hbmFnZXI6
OnJlZnJlc2hBVkNhcHR1cmVEZXZpY2VzT2ZUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkFWQ2Fw
dHVyZURldmljZU1hbmFnZXI6OnJlZnJlc2hDYXB0dXJlRGV2aWNlcyk6CisgICAgICAgIChXZWJD
b3JlOjpBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpnZXRBdWRpb1NvdXJjZXNJbmZvKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFWQ2FwdHVyZURldmljZU1hbmFnZXI6OmdldFZpZGVvU291cmNlc0luZm8p
OgorICAgICAgICAoV2ViQ29yZTo6QVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2V0VXNlQVZGb3Vu
ZGF0aW9uQXVkaW9DYXB0dXJlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFWQ2FwdHVy
ZURldmljZU1hbmFnZXI6OmdldFNvdXJjZXNJbmZvKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZURldmljZS5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6Z2V0RGV2aWNlSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpDb3Jl
QXVkaW9DYXB0dXJlRGV2aWNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUF1ZGlv
Q2FwdHVyZURldmljZTo6Q29yZUF1ZGlvQ2FwdHVyZURldmljZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDb3JlQXVkaW9DYXB0dXJlRGV2aWNlOjpkZXZpY2VJRCk6CisgICAgICAgIChXZWJDb3JlOjpD
b3JlQXVkaW9DYXB0dXJlRGV2aWNlOjpkZXZpY2VDbG9jayk6CisgICAgICAgIChXZWJDb3JlOjpD
b3JlQXVkaW9DYXB0dXJlRGV2aWNlOjppc0FsaXZlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZURldmljZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5oLgorICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFu
YWdlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29yZUF1ZGlvQ2FwdHVyZURldmlj
ZU1hbmFnZXI6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJDb3JlOjpDb3JlQXVkaW9DYXB0dXJl
RGV2aWNlTWFuYWdlcjo6Y2FwdHVyZURldmljZXMpOgorICAgICAgICAoV2ViQ29yZTo6ZGV2aWNl
SGFzSW5wdXRTdHJlYW1zKToKKyAgICAgICAgKFdlYkNvcmU6OkNvcmVBdWRpb0NhcHR1cmVEZXZp
Y2VNYW5hZ2VyOjpjb3JlQXVkaW9DYXB0dXJlRGV2aWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpD
b3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlcjo6cmVmcmVzaEF1ZGlvQ2FwdHVyZURldmljZXMp
OgorICAgICAgICAoV2ViQ29yZTo6Q29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXI6OmRldmlj
ZXNDaGFuZ2VkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlv
Q2FwdHVyZURldmljZU1hbmFnZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuaC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpDb3JlQXVkaW9DYXB0dXJlU291cmNlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnN0YXJ0UHJvZHVjaW5n
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpzdG9wUHJv
ZHVjaW5nRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXJNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlck1hYzo6c2V0VXNlQVZGb3VuZGF0aW9uQXVkaW9DYXB0dXJlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OlJlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXJNYWMpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlck1hYzo6Y3JlYXRlTWVkaWFTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVN
ZWRpYVNvdXJjZUNlbnRlck1hYzo6Z2V0TWVkaWFTdHJlYW1EZXZpY2VzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5oOgor
CiAyMDE3LTA0LTExICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBE
aXNhYmxlIG91dGRhdGVkIFdyaXRhYmxlU3RyZWFtIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDExNDY3OTVh
YzdlMGEzZGE2NDU4MGUzMmFlNjVlYWQ3YzM3MDkzZWMuLjI5YWMzNGJmYzQzODhkNjA2MzIxYWI4
MWI5ZTYwZjRhODA1M2EzYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNy0wNC0x
MiAgSmVyZW15IEpvbmVzICA8amVyZW15akBhcHBsZS5jb20+CisKKyAgICAgICAgUmVmYWN0b3Ig
ZW51bWVyYXRlRGV2aWNlcyB0byBhbGxvdyBkc2VwYXJhdGUgQ2FwdHVyZURldmljZU1hbmFnZXJz
IGZvciBhdWRpbyBhbmQgdmlkZW8uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzA3NzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBzZXRVc2VBVkZvdW5kYXRpb25BdWRpb0NhcHR1cmUgaXMgbW92ZWQgZnJv
bSBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyIHRvIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXJQcm94eTo6c3luY1dpdGhXZWJDb3JlUHJlZnMpOgorCiAyMDE3LTA0LTExICBEZWFuIEph
Y2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBEaXNhYmxlIG91dGRhdGVkIFdyaXRh
YmxlU3RyZWFtIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IGFmMmU5YmExNjlkMDg3YWJkZWE5ZDljYTRkNjNjMWExYjE5Y2Yy
MTYuLjMwMzRhNmFiZmE5MzQ0MWJkYTg5YTk1M2Q0M2YwYmM1M2JjNGY0MjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE2NzEs
NiArMTY3MSwxMCBAQAogCQkzRjJCMzNFRjE2NUFGMTU2MDBFMzk4N0MgLyogSlNXZWJLaXRDU1NW
aWV3cG9ydFJ1bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDNGMkIzM0VBMTY1QUYxNTUwMEUzOTg3QyAvKiBKU1dlYktpdENTU1ZpZXdwb3J0UnVsZS5o
ICovOyB9OwogCQkzRjQyQjMxRDE4ODExOTFCMDAyNzhBQUMgLyogV2ViVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlckFWS2l0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzRjQyQjMxQjE4ODExOTFCMDAyNzhBQUMgLyogV2ViVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlckFWS2l0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJM0Y0MkIzMUUxODgxMTkxQjAwMjc4QUFDIC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXJBVktpdC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDNGNDJCMzFDMTg4MTE5MUIwMDI3OEFBQyAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyQVZLaXQubW0gKi87IH07CisJCTNGODAyMDM1MUU5RTQ3QkYwMERFQzYxRCAvKiBDb3Jl
QXVkaW9DYXB0dXJlRGV2aWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzRjgwMjAzMjFFOUUzODFEMDBERUM2MUQgLyogQ29yZUF1ZGlvQ2FwdHVyZURl
dmljZS5oICovOyB9OworCQkzRjgwMjAzNjFFOUU0N0MzMDBERUM2MUQgLyogQ29yZUF1ZGlvQ2Fw
dHVyZURldmljZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzRjgwMjAzMTFFOUUzODFEMDBERUM2MUQgLyogQ29yZUF1ZGlvQ2FwdHVyZURldmljZS5j
cHAgKi87IH07CisJCTNGODAyMDM3MUU5RTQ3QzUwMERFQzYxRCAvKiBDb3JlQXVkaW9DYXB0dXJl
RGV2aWNlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gM0Y4MDIwMzQxRTlFMzgxRDAwREVDNjFEIC8qIENvcmVBdWRpb0NhcHR1cmVEZXZpY2VN
YW5hZ2VyLmggKi87IH07CisJCTNGODAyMDM4MUU5RTQ3QzkwMERFQzYxRCAvKiBDb3JlQXVkaW9D
YXB0dXJlRGV2aWNlTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAzRjgwMjAzMzFFOUUzODFEMDBERUM2MUQgLyogQ29yZUF1ZGlvQ2FwdHVy
ZURldmljZU1hbmFnZXIuY3BwICovOyB9OwogCQkzRkJDNEFGMzE4OTg4MTU2MDA0NkVFMzggLyog
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzRkJDNEFGMTE4OTg4MTU2MDA0NkVFMzggLyogV2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0gKi87IH07CiAJCTNGQkM0QUY0MTg5ODgx
NTYwMDQ2RUUzOCAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gM0ZCQzRBRjIxODk4ODE1NjAw
NDZFRTM4IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJM0ZGMUZBNjYxRTczNTBGRDAw
QzEwMDJGIC8qIENvcmVBdWRpb0NhcHR1cmVTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gM0YzQkI1ODIxRTcwOUVFNDAwQzcwMUYyIC8qIENv
cmVBdWRpb0NhcHR1cmVTb3VyY2UuY3BwICovOyB9OwpAQCAtOTI2Myw2ICs5MjY3LDEwIEBACiAJ
CTNGM0JCNTgzMUU3MDlFRTQwMEM3MDFGMiAvKiBDb3JlQXVkaW9DYXB0dXJlU291cmNlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvcmVBdWRpb0NhcHR1cmVTb3VyY2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJM0Y0MkIzMUIxODgxMTkxQjAwMjc4QUFDIC8q
IFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJM0Y0MkIzMUMxODgxMTkxQjAwMjc4QUFDIC8qIFdlYlZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJM0Y4MDIwMzExRTlFMzgxRDAwREVDNjFEIC8qIENv
cmVBdWRpb0NhcHR1cmVEZXZpY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQ29yZUF1ZGlvQ2FwdHVyZURldmljZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTNGODAyMDMyMUU5RTM4MUQwMERFQzYxRCAvKiBDb3JlQXVkaW9DYXB0dXJlRGV2aWNl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvcmVBdWRpb0NhcHR1cmVEZXZp
Y2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJM0Y4MDIwMzMxRTlFMzgxRDAwREVD
NjFEIC8qIENvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJM0Y4MDIwMzQxRTlFMzgxRDAwREVDNjFEIC8q
IENvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IENvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTNGQkM0QUYxMTg5ODgxNTYwMDQ2RUUzOCAvKiBXZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VBVktpdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkzRkJDNEFGMjE4OTg4MTU2MDA0NkVFMzggLyogV2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJM0ZGRkY5QTYxNTlEOUE1NTAwMjBCQkQ1IC8qIFdlYktpdENTU1ZpZXdwb3J0UnVs
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJLaXRDU1NWaWV3
cG9ydFJ1bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTYxMjIsOCArMTYx
MzAsMTIgQEAKIAkJCQkwNzAzNjNERDE4MUExQ0RDMDBDMDc0QTUgLyogQVZNZWRpYUNhcHR1cmVT
b3VyY2UubW0gKi8sCiAJCQkJMDcwMzYzREUxODFBMUNEQzAwQzA3NEE1IC8qIEFWVmlkZW9DYXB0
dXJlU291cmNlLmggKi8sCiAJCQkJMDcwMzYzREYxODFBMUNEQzAwQzA3NEE1IC8qIEFWVmlkZW9D
YXB0dXJlU291cmNlLm1tICovLAotCQkJCTNGM0JCNTgyMUU3MDlFRTQwMEM3MDFGMiAvKiBDb3Jl
QXVkaW9DYXB0dXJlU291cmNlLmNwcCAqLywKIAkJCQkzRjNCQjU4MzFFNzA5RUU0MDBDNzAxRjIg
LyogQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5oICovLAorCQkJCTNGM0JCNTgyMUU3MDlFRTQwMEM3
MDFGMiAvKiBDb3JlQXVkaW9DYXB0dXJlU291cmNlLmNwcCAqLywKKwkJCQkzRjgwMjAzMjFFOUUz
ODFEMDBERUM2MUQgLyogQ29yZUF1ZGlvQ2FwdHVyZURldmljZS5oICovLAorCQkJCTNGODAyMDMx
MUU5RTM4MUQwMERFQzYxRCAvKiBDb3JlQXVkaW9DYXB0dXJlRGV2aWNlLmNwcCAqLywKKwkJCQkz
RjgwMjAzNDFFOUUzODFEMDBERUM2MUQgLyogQ29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIu
aCAqLywKKwkJCQkzRjgwMjAzMzFFOUUzODFEMDBERUM2MUQgLyogQ29yZUF1ZGlvQ2FwdHVyZURl
dmljZU1hbmFnZXIuY3BwICovLAogCQkJCTA3NDRFQ0VCMUUwQzRBRTUwMDBEMDk0NCAvKiBNb2Nr
UmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5oICovLAogCQkJCTA3NDRFQ0VDMUUwQzRBRTUwMDBEMDk0
NCAvKiBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5tbSAqLywKIAkJCQkwN0VFNzZFRDFCRUE2
MTk4MDBGODkxMzMgLyogTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMuaCAqLywKQEAgLTI4MTIz
LDYgKzI4MTM1LDcgQEAKIAkJCQk3MTE4RkVENTE1Njg1Q0M2MDAzMEI3OUEgLyogSlNTVkdWaWV3
U3BlYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODQ4NTIyN0UxMTkwMTYyQzAwNkVEQzdGIC8qIEpT
U1ZHVktlcm5FbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk3MURDQjcwMjE1NjgxOTc2MDA4
NjIyNzEgLyogSlNTVkdab29tQW5kUGFuLmggaW4gSGVhZGVycyAqLywKKwkJCQkzRjgwMjAzNTFF
OUU0N0JGMDBERUM2MUQgLyogQ29yZUF1ZGlvQ2FwdHVyZURldmljZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQjJGQTNFMTkwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHWm9vbUV2ZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk2NURGMzIwNDA5RDFDQzYwMDAwQkUzMjUgLyogSlNUZXh0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5MzNBMTRCOTBCN0QxRDUyMDBBNTNGRkQgLyogSlNUZXh0RXZlbnQuaCBp
biBIZWFkZXJzICovLApAQCAtMjg2OTksNiArMjg3MTIsNyBAQAogCQkJCTFBRDhGODFCMTFDQUI5
RTkwMEU5M0U1NCAvKiBQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
N0QwNzMzMTg4NEM1NkMwMEI0QUY4NiAvKiBQbGF0Zm9ybVRleHRUcmFjay5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMDc0RTgyQkIxOEE2OUYwRTAwN0VGNTRDIC8qIFBsYXRmb3JtVGltZVJhbmdlcy5o
IGluIEhlYWRlcnMgKi8sCisJCQkJM0Y4MDIwMzcxRTlFNDdDNTAwREVDNjFEIC8qIENvcmVBdWRp
b0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MkIwRDRCRTFDNTdG
RDFFMDA3N0NFNTMgLyogUGxhdGZvcm1WaWV3LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzVDNDc2
QjA5QUM0RDRGMDBBNkFBQjQgLyogUGxhdGZvcm1XaGVlbEV2ZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQUZGQzQ1OTFENUU4NjYxMDAyNjdBNjYgLyogUGx1Z2luQmxhY2tsaXN0LmggaW4gSGVh
ZGVycyAqLywKQEAgLTMxNzczLDYgKzMxNzg3LDcgQEAKIAkJCQk1MTFFRjJDNDE3RjBGRDM1MDBF
NEZBMTYgLyogSlNJREJGYWN0b3J5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxMUVGMkM1MTdG
MEZEMzUwMEU0RkExNiAvKiBKU0lEQkluZGV4LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxNDEy
OTlCMUM2QzE2NzQwMDU5RTcxNCAvKiBKU0lEQkluZGV4Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTNGODAyMDM2MUU5RTQ3QzMwMERFQzYxRCAvKiBDb3JlQXVkaW9DYXB0dXJlRGV2aWNl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxMUVGMkM2MTdGMEZEMzUwMEU0RkExNiAvKiBKU0lE
QktleVJhbmdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxMUVGMkM3MTdGMEZEMzUwMEU0RkEx
NiAvKiBKU0lEQk9iamVjdFN0b3JlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxMUVGMkQxMTdG
MEZERjEwMEU0RkExNiAvKiBKU0lEQk9iamVjdFN0b3JlQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICov
LApAQCAtMzMyMTksNiArMzMyMzQsNyBAQAogCQkJCTg0MTlEMkFDMTIwRDkyRkMwMDE0MUY4RiAv
KiBTVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0E1
ODBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUGF0aEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJODQ3NkM5RUYxMURGNkE1ODAwNTU1QjAyIC8qIFNWR1BhdGhQYXJzZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJM0Y4MDIwMzgxRTlFNDdDOTAwREVDNjFEIC8qIENvcmVBdWRpb0NhcHR1cmVE
ZXZpY2VNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDMzlDMzcxMUREQkI4QUUwMEZF
RkIyOSAvKiBTVkdQYXRoU2VnTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NDc2QzlFNTEx
REY2QTBCMDA1NTVCMDIgLyogU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTg0QjZCOTc3MTIwRjEzRTUwMEI4RUZBRiAvKiBTVkdQYXRoU2VnTGlzdFNvdXJjZS5j
cHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGlu
Z3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKaW5kZXggYzBhNDFkMTE0
YjI1YjdhNTcxMzNlMDdiY2Y0MmNhMmUyYjNhZDgxMy4uMmRhM2I4NDEyM2RkNzBmZWM0NzdmYTdi
Yzg1NjBjZGRiYjRlNmZmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5n
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKQEAgLTQ5LDcgKzQ5
LDcgQEAKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKICNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQotI2luY2x1ZGUgIkFWQ2FwdHVyZURldmljZU1h
bmFnZXIuaCIKKyNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmgiCiAjZW5k
aWYKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCkBAIC02MzAsNyArNjMwLDcgQEAgdm9pZCBT
ZXR0aW5nczo6c2V0VXNlQVZGb3VuZGF0aW9uQXVkaW9DYXB0dXJlKGJvb2wgdXNlQVZGb3VuZGF0
aW9uQXVkaW9DYXB0dXJlKQogewogICAgIGdVc2VBVkZvdW5kYXRpb25BdWRpb0NhcHR1cmUgPSB1
c2VBVkZvdW5kYXRpb25BdWRpb0NhcHR1cmU7CiAjaWYgVVNFKEFWRk9VTkRBVElPTikKLSAgICBB
VkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzZXRVc2VBVkZvdW5kYXRpb25BdWRpb0NhcHR1cmUodXNl
QVZGb3VuZGF0aW9uQXVkaW9DYXB0dXJlKTsKKyAgICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
TWFjOjpzZXRVc2VBVkZvdW5kYXRpb25BdWRpb0NhcHR1cmUodXNlQVZGb3VuZGF0aW9uQXVkaW9D
YXB0dXJlKTsKICNlbmRpZgogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAKaW5kZXgg
NzE5YmIxZWJiZDFiYzFkMWYyZDlmMGMzODQ0ZmZlOGQ2NTZiYjFiNC4uMjBlZTcxNzNmMGMzZDgw
ZTQ0ODU5NmVmMDI4YzM4MjY4MjZlY2MzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcApAQCAt
NDQsMTEgKzQ0LDI0IEBAIENhcHR1cmVEZXZpY2VNYW5hZ2VyOjp+Q2FwdHVyZURldmljZU1hbmFn
ZXIoKQogewogfQogCi1WZWN0b3I8Q2FwdHVyZURldmljZT4gQ2FwdHVyZURldmljZU1hbmFnZXI6
OmdldFNvdXJjZXNJbmZvKCkKK1ZlY3RvcjxDYXB0dXJlRGV2aWNlPiBDYXB0dXJlRGV2aWNlTWFu
YWdlcjo6Z2V0QXVkaW9Tb3VyY2VzSW5mbygpCiB7CiAgICAgVmVjdG9yPENhcHR1cmVEZXZpY2U+
IHNvdXJjZXNJbmZvOwotICAgIGZvciAoYXV0byBjYXB0dXJlRGV2aWNlIDogY2FwdHVyZURldmlj
ZXMoKSkgewotICAgICAgICBpZiAoIWNhcHR1cmVEZXZpY2UuZW5hYmxlZCgpIHx8IGNhcHR1cmVE
ZXZpY2UudHlwZSgpID09IENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlVua25vd24pCisgICAg
Zm9yIChhdXRvJiBjYXB0dXJlRGV2aWNlIDogY2FwdHVyZURldmljZXMoKSkgeworICAgICAgICBp
ZiAoIWNhcHR1cmVEZXZpY2UuZW5hYmxlZCgpIHx8IGNhcHR1cmVEZXZpY2UudHlwZSgpICE9IENh
cHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OkF1ZGlvKQorICAgICAgICAgICAgY29udGludWU7CisK
KyAgICAgICAgc291cmNlc0luZm8uYXBwZW5kKGNhcHR1cmVEZXZpY2UpOworICAgIH0KKyAgICBM
T0coTWVkaWEsICJDYXB0dXJlRGV2aWNlTWFuYWdlcjo6Z2V0U291cmNlc0luZm8oJXApLCBmb3Vu
ZCAlenUgYWN0aXZlIGRldmljZXMiLCB0aGlzLCBzb3VyY2VzSW5mby5zaXplKCkpOworICAgIHJl
dHVybiBzb3VyY2VzSW5mbzsKK30KKworVmVjdG9yPENhcHR1cmVEZXZpY2U+IENhcHR1cmVEZXZp
Y2VNYW5hZ2VyOjpnZXRWaWRlb1NvdXJjZXNJbmZvKCkKK3sKKyAgICBWZWN0b3I8Q2FwdHVyZURl
dmljZT4gc291cmNlc0luZm87CisgICAgZm9yIChhdXRvJiBjYXB0dXJlRGV2aWNlIDogY2FwdHVy
ZURldmljZXMoKSkgeworICAgICAgICBpZiAoIWNhcHR1cmVEZXZpY2UuZW5hYmxlZCgpIHx8IGNh
cHR1cmVEZXZpY2UudHlwZSgpICE9IENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlZpZGVvKQog
ICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgc291cmNlc0luZm8uYXBwZW5kKGNhcHR1
cmVEZXZpY2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vQ2FwdHVyZURldmljZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKaW5kZXggOGNiZDQ1NmJlN2IxYjljMzRmMDM2
MzNlYzcyNDU1NjFkMzNiMDM1Zi4uMzc5ZmU3NDkzZGU1ZWEwOTk3ZTQ1MDhhMzA5NDE5NjdhMDQx
NDkyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2Fw
dHVyZURldmljZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5oCkBAIC0zNiw3ICszNiw4IEBAIGNsYXNzIENhcHR1
cmVEZXZpY2VNYW5hZ2VyIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIFZlY3RvcjxDYXB0dXJlRGV2
aWNlPiYgY2FwdHVyZURldmljZXMoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlZnJlc2hDYXB0
dXJlRGV2aWNlcygpIHsgfQotICAgIHZpcnR1YWwgVmVjdG9yPENhcHR1cmVEZXZpY2U+IGdldFNv
dXJjZXNJbmZvKCk7CisgICAgdmlydHVhbCBWZWN0b3I8Q2FwdHVyZURldmljZT4gZ2V0QXVkaW9T
b3VyY2VzSW5mbygpOworICAgIHZpcnR1YWwgVmVjdG9yPENhcHR1cmVEZXZpY2U+IGdldFZpZGVv
U291cmNlc0luZm8oKTsKICAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8Q2FwdHVyZURldmljZT4g
ZGV2aWNlV2l0aFVJRChjb25zdCBTdHJpbmcmLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlKTsK
IAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAppbmRleCA3ODVk
NjIxYzRiYjdkMTY0YTFkZmI3ZmMzMDY4ODk0OWU3OTA4ZmE1Li45NTU5OThkNjY3MWNkZDE1YmIw
N2JhOTIzMDI2MmY5YTcyNjYzNzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNw
cApAQCAtODgsNiArODgsMjggQEAgdm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjp1bnNl
dFZpZGVvRmFjdG9yeShSZWFsdGltZU1lZGlhU291cmNlOjpDYXB0dXJlRmEKICAgICAgICAgbV92
aWRlb0ZhY3RvcnkgPSBudWxscHRyOwogfQogCit2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXI6OnNldEF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIoQ2FwdHVyZURldmljZU1hbmFnZXImIGRl
dmljZU1hbmFnZXIpCit7CisgICAgbV9hdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyID0gJmRldmlj
ZU1hbmFnZXI7Cit9CisKK3ZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6dW5zZXRBdWRp
b0NhcHR1cmVEZXZpY2VNYW5hZ2VyKENhcHR1cmVEZXZpY2VNYW5hZ2VyJiBkZXZpY2VNYW5hZ2Vy
KQoreworICAgIGlmIChtX2F1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIgPT0gJmRldmljZU1hbmFn
ZXIpCisgICAgICAgIG1fYXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlciA9IG51bGxwdHI7Cit9CisK
K3ZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2V0VmlkZW9DYXB0dXJlRGV2aWNlTWFu
YWdlcihDYXB0dXJlRGV2aWNlTWFuYWdlciYgZGV2aWNlTWFuYWdlcikKK3sKKyAgICBtX3ZpZGVv
Q2FwdHVyZURldmljZU1hbmFnZXIgPSAmZGV2aWNlTWFuYWdlcjsKK30KKwordm9pZCBSZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyOjp1bnNldFZpZGVvQ2FwdHVyZURldmljZU1hbmFnZXIoQ2FwdHVy
ZURldmljZU1hbmFnZXImIGRldmljZU1hbmFnZXIpCit7CisgICAgaWYgKG1fdmlkZW9DYXB0dXJl
RGV2aWNlTWFuYWdlciA9PSAmZGV2aWNlTWFuYWdlcikKKyAgICAgICAgbV92aWRlb0NhcHR1cmVE
ZXZpY2VNYW5hZ2VyID0gbnVsbHB0cjsKK30KKyAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyLmgKaW5kZXggNjFiN2U5ZTVjOTI5ZTlhMGI2MzkxNjI2ODgzYmE5NjgyZjYyN2EwYS4uNTEy
NDFhZDkxODIyYTJkNzgwYjAzZmMxZjJjMWVjZDYzNjcxNTU3OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXIuaApAQCAtNDIsNiArNDIsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBDYXB0dXJlRGV2aWNlOworY2xhc3MgQ2FwdHVyZURldmljZU1hbmFnZXI7CiBjbGFzcyBN
ZWRpYUNvbnN0cmFpbnRzOwogY2xhc3MgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOwogY2xh
c3MgUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzOwpAQCAtNzYsNiArNzcs
MTcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdW5zZXRWaWRlb0ZhY3Rvcnko
UmVhbHRpbWVNZWRpYVNvdXJjZTo6Q2FwdHVyZUZhY3RvcnkmKTsKICAgICBSZWFsdGltZU1lZGlh
U291cmNlOjpDYXB0dXJlRmFjdG9yeSogdmlkZW9GYWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV92
aWRlb0ZhY3Rvcnk7IH0KIAorICAgIHZpcnR1YWwgQ2FwdHVyZURldmljZU1hbmFnZXIqIGRlZmF1
bHRBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyKCkgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIHZp
cnR1YWwgQ2FwdHVyZURldmljZU1hbmFnZXIqIGRlZmF1bHRWaWRlb0NhcHR1cmVEZXZpY2VNYW5h
Z2VyKCkgeyByZXR1cm4gbnVsbHB0cjsgfQorCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRB
dWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyKENhcHR1cmVEZXZpY2VNYW5hZ2VyJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCB1bnNldEF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIoQ2FwdHVyZURl
dmljZU1hbmFnZXImKTsKKyAgICBDYXB0dXJlRGV2aWNlTWFuYWdlciogYXVkaW9DYXB0dXJlRGV2
aWNlTWFuYWdlcigpIGNvbnN0IHsgcmV0dXJuIG1fYXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlcjsg
fQorCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaWRlb0NhcHR1cmVEZXZpY2VNYW5hZ2Vy
KENhcHR1cmVEZXZpY2VNYW5hZ2VyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1bnNldFZp
ZGVvQ2FwdHVyZURldmljZU1hbmFnZXIoQ2FwdHVyZURldmljZU1hbmFnZXImKTsKKyAgICBDYXB0
dXJlRGV2aWNlTWFuYWdlciogdmlkZW9DYXB0dXJlRGV2aWNlTWFuYWdlcigpIGNvbnN0IHsgcmV0
dXJuIG1fdmlkZW9DYXB0dXJlRGV2aWNlTWFuYWdlcjsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlcigpOwogCkBAIC04NCw2ICs5Niw5IEBAIHByb3RlY3RlZDoK
IAogICAgIFJlYWx0aW1lTWVkaWFTb3VyY2U6OkNhcHR1cmVGYWN0b3J5KiBtX2F1ZGlvRmFjdG9y
eSB7IG51bGxwdHIgfTsKICAgICBSZWFsdGltZU1lZGlhU291cmNlOjpDYXB0dXJlRmFjdG9yeSog
bV92aWRlb0ZhY3RvcnkgeyBudWxscHRyIH07CisKKyAgICBDYXB0dXJlRGV2aWNlTWFuYWdlciog
bV9hdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyIHsgbnVsbHB0ciB9OworICAgIENhcHR1cmVEZXZp
Y2VNYW5hZ2VyKiBtX3ZpZGVvQ2FwdHVyZURldmljZU1hbmFnZXIgeyBudWxscHRyIH07CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIuaApp
bmRleCBjNjBjYTNiODUyYzY0MDc3MzI3ODJiMGRhMjc4YzNiOGZlYzRiN2Q0Li4wY2IxNzIyNDRi
YTU4OGEwYjY3MDM0ZDRhYjZjNzUyNDAyZjU3ZjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VN
YW5hZ2VyLmgKQEAgLTUxLDExICs1MSwxMiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgQVZDYXB0
dXJlRGV2aWNlTWFuYWdlciYgc2luZ2xldG9uKCk7CiAKLSAgICBWZWN0b3I8Q2FwdHVyZURldmlj
ZT4gZ2V0U291cmNlc0luZm8oKSBmaW5hbDsKLQogICAgIHZvaWQgZGV2aWNlQ29ubmVjdGVkKCk7
CiAgICAgdm9pZCBkZXZpY2VEaXNjb25uZWN0ZWQoQVZDYXB0dXJlRGV2aWNlKik7CiAKKyAgICBW
ZWN0b3I8Q2FwdHVyZURldmljZT4gZ2V0QXVkaW9Tb3VyY2VzSW5mbygpIGZpbmFsOworICAgIFZl
Y3RvcjxDYXB0dXJlRGV2aWNlPiBnZXRWaWRlb1NvdXJjZXNJbmZvKCkgZmluYWw7CisKIHByb3Rl
Y3RlZDoKICAgICBzdGF0aWMgYm9vbCBpc0F2YWlsYWJsZSgpOwogCkBAIC02NCw2ICs2NSw3IEBA
IHByb3RlY3RlZDoKIAogICAgIHZvaWQgcmVmcmVzaENhcHR1cmVEZXZpY2VzKCkgZmluYWw7CiAg
ICAgdm9pZCByZWdpc3RlckZvckRldmljZU5vdGlmaWNhdGlvbnMoKTsKKyAgICB2b2lkIHJlZnJl
c2hBVkNhcHR1cmVEZXZpY2VzT2ZUeXBlKENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUpOwogCiAg
ICAgUmV0YWluUHRyPFdlYkNvcmVBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyT2JzZXJ2ZXI+IG1fb2Jq
Y09ic2VydmVyOwogICAgIFZlY3RvcjxDYXB0dXJlRGV2aWNlPiBtX2RldmljZXM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2
aWNlTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9B
VkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCmluZGV4IGIzOTE1MzZjOGI1MmYxYjdiZTlhYTE5Y2I2
NmVjMWNkNDE4MjU1MDAuLmNhYzEzMzU0ZWZkZmFhOWU4YWU0Nzg5MTA1Y2U5YjBkOTQzNjA3Yzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNh
cHR1cmVEZXZpY2VNYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCkBAIC0zMiw3ICszMiw2IEBACiAj
aW1wb3J0ICJBVk1lZGlhQ2FwdHVyZVNvdXJjZS5oIgogI2ltcG9ydCAiQVZWaWRlb0NhcHR1cmVT
b3VyY2UuaCIKICNpbXBvcnQgIkF1ZGlvU291cmNlUHJvdmlkZXIuaCIKLSNpbXBvcnQgIkNvcmVB
dWRpb0NhcHR1cmVTb3VyY2UuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIk1lZGlh
Q29uc3RyYWludHMuaCIKICNpbXBvcnQgIlJlYWx0aW1lTWVkaWFTb3VyY2UuaCIKQEAgLTkzLDE5
ICs5Miw2IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLXZvaWQgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2V0VXNlQVZGb3VuZGF0aW9uQXVkaW9D
YXB0dXJlKGJvb2wgZW5hYmxlZCkKLXsKLSAgICBzdGF0aWMgYm9vbCBhY3RpdmUgPSBmYWxzZTsK
LSAgICBpZiAoYWN0aXZlID09IGVuYWJsZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGFjdGl2
ZSA9IGVuYWJsZWQ7Ci0gICAgaWYgKGFjdGl2ZSkKLSAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlcjo6c2luZ2xldG9uKCkuc2V0QXVkaW9GYWN0b3J5KEFWQXVkaW9DYXB0dXJlU291cmNl
OjpmYWN0b3J5KCkpOwotICAgIGVsc2UKLSAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
cjo6c2luZ2xldG9uKCkuc2V0QXVkaW9GYWN0b3J5KENvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OmZh
Y3RvcnkoKSk7Ci19Ci0KIFZlY3RvcjxDYXB0dXJlRGV2aWNlPiYgQVZDYXB0dXJlRGV2aWNlTWFu
YWdlcjo6Y2FwdHVyZURldmljZXMoKQogewogICAgIGlmICghaXNBdmFpbGFibGUoKSkKQEAgLTEz
NCwzMiArMTIwLDM0IEBAIGlubGluZSBzdGF0aWMgYm9vbCBkZXZpY2VJc0F2YWlsYWJsZShBVkNh
cHR1cmVEZXZpY2VUeXBlZGVmICpkZXZpY2UpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQg
QVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6cmVmcmVzaENhcHR1cmVEZXZpY2VzKCkKK3ZvaWQgQVZD
YXB0dXJlRGV2aWNlTWFuYWdlcjo6cmVmcmVzaEFWQ2FwdHVyZURldmljZXNPZlR5cGUoQ2FwdHVy
ZURldmljZTo6RGV2aWNlVHlwZSB0eXBlKQogeworICAgIEFTU0VSVCh0eXBlID09IENhcHR1cmVE
ZXZpY2U6OkRldmljZVR5cGU6OlZpZGVvIHx8IHR5cGUgPT0gQ2FwdHVyZURldmljZTo6RGV2aWNl
VHlwZTo6QXVkaW8pOworCisgICAgTlNTdHJpbmcgKnBsYXRmb3JtVHlwZSA9ICh0eXBlID09IENh
cHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlZpZGVvKSA/IEFWTWVkaWFUeXBlVmlkZW8gOiBBVk1l
ZGlhVHlwZUF1ZGlvOworCiAgICAgZm9yIChBVkNhcHR1cmVEZXZpY2VUeXBlZGVmICpwbGF0Zm9y
bURldmljZSBpbiBbZ2V0QVZDYXB0dXJlRGV2aWNlQ2xhc3MoKSBkZXZpY2VzXSkgewogCi0gICAg
ICAgIENhcHR1cmVEZXZpY2UgY2FwdHVyZURldmljZTsKLSAgICAgICAgaWYgKCFjYXB0dXJlRGV2
aWNlRnJvbURldmljZUlEKHBsYXRmb3JtRGV2aWNlLnVuaXF1ZUlELCBjYXB0dXJlRGV2aWNlKSkg
ewotICAgICAgICAgICAgYm9vbCBoYXNBdWRpbyA9IFtwbGF0Zm9ybURldmljZSBoYXNNZWRpYVR5
cGU6QVZNZWRpYVR5cGVBdWRpb10gfHwgW3BsYXRmb3JtRGV2aWNlIGhhc01lZGlhVHlwZTpBVk1l
ZGlhVHlwZU11eGVkXTsKLSAgICAgICAgICAgIGJvb2wgaGFzVmlkZW8gPSBbcGxhdGZvcm1EZXZp
Y2UgaGFzTWVkaWFUeXBlOkFWTWVkaWFUeXBlVmlkZW9dIHx8IFtwbGF0Zm9ybURldmljZSBoYXNN
ZWRpYVR5cGU6QVZNZWRpYVR5cGVNdXhlZF07Ci0gICAgICAgICAgICBpZiAoIWhhc0F1ZGlvICYm
ICFoYXNWaWRlbykKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgYm9vbCBoYXNN
YXRjaGluZ1R5cGUgPSBbcGxhdGZvcm1EZXZpY2UgaGFzTWVkaWFUeXBlOnBsYXRmb3JtVHlwZV0g
fHwgW3BsYXRmb3JtRGV2aWNlIGhhc01lZGlhVHlwZTpBVk1lZGlhVHlwZU11eGVkXTsKKyAgICAg
ICAgaWYgKCFoYXNNYXRjaGluZ1R5cGUpCisgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAg
ICAgICAgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSB0eXBlID0gaGFzVmlkZW8gPyBDYXB0dXJl
RGV2aWNlOjpEZXZpY2VUeXBlOjpWaWRlbyA6IENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OkF1
ZGlvOwotICAgICAgICAgICAgQ2FwdHVyZURldmljZSBjYXB0dXJlRGV2aWNlKHBsYXRmb3JtRGV2
aWNlLnVuaXF1ZUlELCB0eXBlLCBwbGF0Zm9ybURldmljZS5sb2NhbGl6ZWROYW1lKTsKLSAgICAg
ICAgICAgIGNhcHR1cmVEZXZpY2Uuc2V0RW5hYmxlZChkZXZpY2VJc0F2YWlsYWJsZShwbGF0Zm9y
bURldmljZSkpOwotICAgICAgICAgICAgbV9kZXZpY2VzLmFwcGVuZChjYXB0dXJlRGV2aWNlKTsK
KyAgICAgICAgQ2FwdHVyZURldmljZSBleGlzdGluZ0NhcHR1cmVEZXZpY2U7CisgICAgICAgIGlm
IChjYXB0dXJlRGV2aWNlRnJvbURldmljZUlEKHBsYXRmb3JtRGV2aWNlLnVuaXF1ZUlELCBleGlz
dGluZ0NhcHR1cmVEZXZpY2UpICYmIGV4aXN0aW5nQ2FwdHVyZURldmljZS50eXBlKCkgPT0gdHlw
ZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICBpZiAoaGFzVmlkZW8gJiYg
aGFzQXVkaW8pIHsKLSAgICAgICAgICAgICAgICAvLyBBZGQgdGhlIGF1ZGlvIGNvbXBvbmVudCBh
cyBhIHNlcGFyYXRlIGRldmljZS4KLSAgICAgICAgICAgICAgICBDYXB0dXJlRGV2aWNlIGF1ZGlv
Q2FwdHVyZURldmljZShwbGF0Zm9ybURldmljZS51bmlxdWVJRCwgQ2FwdHVyZURldmljZTo6RGV2
aWNlVHlwZTo6QXVkaW8sIHBsYXRmb3JtRGV2aWNlLmxvY2FsaXplZE5hbWUpOwotICAgICAgICAg
ICAgICAgIGNhcHR1cmVEZXZpY2Uuc2V0RW5hYmxlZChkZXZpY2VJc0F2YWlsYWJsZShwbGF0Zm9y
bURldmljZSkpOwotICAgICAgICAgICAgICAgIG1fZGV2aWNlcy5hcHBlbmQoYXVkaW9DYXB0dXJl
RGV2aWNlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgICAgICBDYXB0dXJlRGV2aWNl
IGNhcHR1cmVEZXZpY2UocGxhdGZvcm1EZXZpY2UudW5pcXVlSUQsIHR5cGUsIHBsYXRmb3JtRGV2
aWNlLmxvY2FsaXplZE5hbWUpOworICAgICAgICBjYXB0dXJlRGV2aWNlLnNldEVuYWJsZWQoZGV2
aWNlSXNBdmFpbGFibGUocGxhdGZvcm1EZXZpY2UpKTsKKyAgICAgICAgbV9kZXZpY2VzLmFwcGVu
ZChjYXB0dXJlRGV2aWNlKTsKICAgICB9CiB9CiAKK3ZvaWQgQVZDYXB0dXJlRGV2aWNlTWFuYWdl
cjo6cmVmcmVzaENhcHR1cmVEZXZpY2VzKCkKK3sKKyAgICByZWZyZXNoQVZDYXB0dXJlRGV2aWNl
c09mVHlwZShDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpWaWRlbyk7CisgICAgcmVmcmVzaEFW
Q2FwdHVyZURldmljZXNPZlR5cGUoQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6QXVkaW8pOwor
fQorCiBib29sIEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OmlzQXZhaWxhYmxlKCkKIHsKICAgICBy
ZXR1cm4gQVZGb3VuZGF0aW9uTGlicmFyeSgpOwpAQCAtMTgyLDEyICsxNzAsMjAgQEAgQVZDYXB0
dXJlRGV2aWNlTWFuYWdlcjo6fkFWQ2FwdHVyZURldmljZU1hbmFnZXIoKQogICAgIFttX29iamNP
YnNlcnZlciBkaXNjb25uZWN0XTsKIH0KIAotVmVjdG9yPENhcHR1cmVEZXZpY2U+IEFWQ2FwdHVy
ZURldmljZU1hbmFnZXI6OmdldFNvdXJjZXNJbmZvKCkKK1ZlY3RvcjxDYXB0dXJlRGV2aWNlPiBB
VkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpnZXRBdWRpb1NvdXJjZXNJbmZvKCkKIHsKICAgICBpZiAo
IWlzQXZhaWxhYmxlKCkpCiAgICAgICAgIHJldHVybiBWZWN0b3I8Q2FwdHVyZURldmljZT4oKTsK
IAotICAgIHJldHVybiBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6Z2V0U291cmNlc0luZm8oKTsKKyAg
ICByZXR1cm4gQ2FwdHVyZURldmljZU1hbmFnZXI6OmdldEF1ZGlvU291cmNlc0luZm8oKTsKK30K
KworVmVjdG9yPENhcHR1cmVEZXZpY2U+IEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OmdldFZpZGVv
U291cmNlc0luZm8oKQoreworICAgIGlmICghaXNBdmFpbGFibGUoKSkKKyAgICAgICAgcmV0dXJu
IFZlY3RvcjxDYXB0dXJlRGV2aWNlPigpOworCisgICAgcmV0dXJuIENhcHR1cmVEZXZpY2VNYW5h
Z2VyOjpnZXRWaWRlb1NvdXJjZXNJbmZvKCk7CiB9CiAKIHZvaWQgQVZDYXB0dXJlRGV2aWNlTWFu
YWdlcjo6cmVnaXN0ZXJGb3JEZXZpY2VOb3RpZmljYXRpb25zKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlRGV2aWNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9D
YXB0dXJlRGV2aWNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NTI1MzJkNjVmMjI1OTMxYTBlYjVjNTA1NWM0
NzQwNjE0MjcyOTI2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVEZXZpY2UuY3BwCkBAIC0wLDAgKzEsMTE3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNvcmVBdWRpb0NhcHR1cmVEZXZpY2UuaCIKKworI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFBMQVRGT1JNKE1BQykKKworI2luY2x1ZGUgIkNhcHR1
cmVEZXZpY2VNYW5hZ2VyLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgPEF1ZGlv
VW5pdC9BdWRpb1VuaXQuaD4KKyNpbmNsdWRlIDxDb3JlTWVkaWEvQ01TeW5jLmg+CisKKyNpbXBv
cnQgIkNvcmVNZWRpYVNvZnRMaW5rLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGlj
IGJvb2wgZ2V0RGV2aWNlSW5mbyh1aW50MzJfdCBkZXZpY2VJRCwgU3RyaW5nJiBwZXJzaXN0ZW50
SUQsIFN0cmluZyYgbGFiZWwpCit7CisgICAgQ0ZTdHJpbmdSZWYgdW5pcXVlSUQ7CisgICAgQXVk
aW9PYmplY3RQcm9wZXJ0eUFkZHJlc3MgYWRkcmVzcyB7IGtBdWRpb0RldmljZVByb3BlcnR5RGV2
aWNlVUlELCBrQXVkaW9EZXZpY2VQcm9wZXJ0eVNjb3BlSW5wdXQsIGtBdWRpb09iamVjdFByb3Bl
cnR5RWxlbWVudE1hc3RlciB9OworICAgIFVJbnQzMiBkYXRhU2l6ZSA9IHNpemVvZih1bmlxdWVJ
RCk7CisgICAgYXV0byBlcnIgPSBBdWRpb09iamVjdEdldFByb3BlcnR5RGF0YShzdGF0aWNfY2Fz
dDxVSW50MzI+KGRldmljZUlEKSwgJmFkZHJlc3MsIDAsIG51bGxwdHIsICZkYXRhU2l6ZSwgJnVu
aXF1ZUlEKTsKKyAgICBpZiAoZXJyKSB7CisgICAgICAgIExPRyhNZWRpYSwgIkNvcmVBdWRpb0Nh
cHR1cmVEZXZpY2U6OmdldERldmljZUluZm8gZmFpbGVkIHRvIGdldCBkZXZpY2UgdW5pcXVlIGlk
IHdpdGggZXJyb3IgJWQgKCUuNHMpIiwgKGludCllcnIsIChjaGFyKikmZXJyKTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBwZXJzaXN0ZW50SUQgPSB1bmlxdWVJRDsKKyAgICBD
RlJlbGVhc2UodW5pcXVlSUQpOworCisgICAgQ0ZTdHJpbmdSZWYgbG9jYWxpemVkTmFtZTsKKyAg
ICBhZGRyZXNzID0geyBrQXVkaW9PYmplY3RQcm9wZXJ0eU5hbWUsIGtBdWRpb09iamVjdFByb3Bl
cnR5U2NvcGVHbG9iYWwsIGtBdWRpb09iamVjdFByb3BlcnR5RWxlbWVudE1hc3RlciB9OworICAg
IGRhdGFTaXplID0gc2l6ZW9mKGxvY2FsaXplZE5hbWUpOworICAgIGVyciA9IEF1ZGlvT2JqZWN0
R2V0UHJvcGVydHlEYXRhKHN0YXRpY19jYXN0PFVJbnQzMj4oZGV2aWNlSUQpLCAmYWRkcmVzcywg
MCwgbnVsbHB0ciwgJmRhdGFTaXplLCAmbG9jYWxpemVkTmFtZSk7CisgICAgaWYgKGVycikgewor
ICAgICAgICBMT0coTWVkaWEsICJDb3JlQXVkaW9DYXB0dXJlRGV2aWNlOjpnZXREZXZpY2VJbmZv
IGZhaWxlZCB0byBnZXQgZGV2aWNlIG5hbWUgd2l0aCBlcnJvciAlZCAoJS40cykiLCAoaW50KWVy
ciwgKGNoYXIqKSZlcnIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGxhYmVs
ID0gbG9jYWxpemVkTmFtZTsKKyAgICBDRlJlbGVhc2UobG9jYWxpemVkTmFtZSk7CisKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworUmVmUHRyPENvcmVBdWRpb0NhcHR1cmVEZXZpY2U+IENvcmVBdWRp
b0NhcHR1cmVEZXZpY2U6OmNyZWF0ZSh1aW50MzJfdCBkZXZpY2VJRCkKK3sKKyAgICBTdHJpbmcg
cGVyc2lzdGVudElEOworICAgIFN0cmluZyBsYWJlbDsKKyAgICBpZiAoIWdldERldmljZUluZm8o
ZGV2aWNlSUQsIHBlcnNpc3RlbnRJRCwgbGFiZWwpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ29yZUF1ZGlvQ2FwdHVyZURldmljZShkZXZpY2VJ
RCwgcGVyc2lzdGVudElELCBsYWJlbCkpOworfQorCitDb3JlQXVkaW9DYXB0dXJlRGV2aWNlOjpD
b3JlQXVkaW9DYXB0dXJlRGV2aWNlKHVpbnQzMl90IGRldmljZUlELCBjb25zdCBTdHJpbmcmIHBl
cnNpc3RlbnRJRCwgY29uc3QgU3RyaW5nJiBsYWJlbCkKKyAgICA6IENhcHR1cmVEZXZpY2UocGVy
c2lzdGVudElELCBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpBdWRpbywgbGFiZWwpCisgICAg
LCBtX2RldmljZUlEKGRldmljZUlEKQoreworfQorCit1aW50MzJfdCBDb3JlQXVkaW9DYXB0dXJl
RGV2aWNlOjpkZXZpY2VJRCgpCit7CisgICAgcmV0dXJuIG1fZGV2aWNlSUQ7Cit9CisKK1JldGFp
blB0cjxDTUNsb2NrUmVmPiBDb3JlQXVkaW9DYXB0dXJlRGV2aWNlOjpkZXZpY2VDbG9jaygpCit7
CisgICAgaWYgKG1fZGV2aWNlQ2xvY2spCisgICAgICAgIHJldHVybiBtX2RldmljZUNsb2NrOwor
CisgICAgQ01DbG9ja1JlZiBjbG9jazsKKyAgICBhdXRvIGVyciA9IENNQXVkaW9EZXZpY2VDbG9j
a0NyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBwZXJzaXN0ZW50SWQoKS5jcmVhdGVDRlN0cmlu
ZygpLmdldCgpLCAmY2xvY2spOworICAgIGlmIChlcnIpIHsKKyAgICAgICAgTE9HKE1lZGlhLCAi
Q29yZUF1ZGlvQ2FwdHVyZURldmljZTo6Q01BdWRpb0RldmljZUNsb2NrQ3JlYXRlKCVwKSBDTUF1
ZGlvRGV2aWNlQ2xvY2tDcmVhdGUgZmFpbGVkIHdpdGggZXJyb3IgJWQgKCUuNHMpIiwgdGhpcywg
KGludCllcnIsIChjaGFyKikmZXJyKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQor
CisgICAgbV9kZXZpY2VDbG9jayA9IGFkb3B0Q0YoY2xvY2spOworCisgICAgcmV0dXJuIG1fZGV2
aWNlQ2xvY2s7Cit9CisKK2Jvb2wgQ29yZUF1ZGlvQ2FwdHVyZURldmljZTo6aXNBbGl2ZSgpCit7
CisgICAgQXVkaW9PYmplY3RQcm9wZXJ0eUFkZHJlc3MgYWRkcmVzcyA9IHsga0F1ZGlvRGV2aWNl
UHJvcGVydHlEZXZpY2VJc0FsaXZlLCBrQXVkaW9PYmplY3RQcm9wZXJ0eVNjb3BlR2xvYmFsLCBr
QXVkaW9PYmplY3RQcm9wZXJ0eUVsZW1lbnRNYXN0ZXIgfTsKKyAgICBVSW50MzIgc3RhdGUgPSAw
OworICAgIFVJbnQzMiBkYXRhU2l6ZSA9IHNpemVvZihzdGF0ZSk7CisgICAgaWYgKEF1ZGlvT2Jq
ZWN0R2V0UHJvcGVydHlEYXRhKHN0YXRpY19jYXN0PFVJbnQzMj4obV9kZXZpY2VJRCksICZhZGRy
ZXNzLCAwLCBudWxscHRyLCAmZGF0YVNpemUsICZzdGF0ZSkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICByZXR1cm4gc3RhdGU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJl
RGV2aWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1
ZGlvQ2FwdHVyZURldmljZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5ZWYxMzljZWUyOGU2ZjQ1OWRjMTc5NTI1
ZDFmZDRhOTE0OGE3NWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZURldmljZS5oCkBAIC0wLDAgKzEsNTkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFBMQVRGT1JNKE1BQykKKworI2lu
Y2x1ZGUgIkNhcHR1cmVEZXZpY2UuaCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK3R5cGVkZWYgc3RydWN0IE9wYXF1ZUNNQ2xvY2sq
IENNQ2xvY2tSZWY7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ29yZUF1ZGlvQ2Fw
dHVyZURldmljZSA6IHB1YmxpYyBDYXB0dXJlRGV2aWNlLCBwdWJsaWMgUmVmQ291bnRlZDxDb3Jl
QXVkaW9DYXB0dXJlRGV2aWNlPiB7CitwdWJsaWM6CisKKyAgICBzdGF0aWMgUmVmUHRyPENvcmVB
dWRpb0NhcHR1cmVEZXZpY2U+IGNyZWF0ZSh1aW50MzJfdCk7CisgICAgdmlydHVhbCB+Q29yZUF1
ZGlvQ2FwdHVyZURldmljZSgpID0gZGVmYXVsdDsKKworICAgIHVpbnQzMl90IGRldmljZUlEKCk7
CisgICAgUmV0YWluUHRyPENNQ2xvY2tSZWY+IGRldmljZUNsb2NrKCk7CisgICAgYm9vbCBpc0Fs
aXZlKCk7CisKK3ByaXZhdGU6CisgICAgQ29yZUF1ZGlvQ2FwdHVyZURldmljZSh1aW50MzJfdCwg
Y29uc3QgU3RyaW5nJiBwZXJzaXN0ZW50SUQsIGNvbnN0IFN0cmluZyYgbGFiZWwpOworCisgICAg
dWludDMyX3QgbV9kZXZpY2VJRCB7IDAgfTsKKyAgICBSZXRhaW5QdHI8Q01DbG9ja1JlZj4gbV9k
ZXZpY2VDbG9jazsKK307CisKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
RU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgUExBVEZPUk0oTUFDKQorCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZURldmlj
ZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Nv
cmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMzZjYzE1N2E0MDA3
YTQ3MTBiYmZlNmI3NzliMmQ5YjNkMWQ5MTY3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5h
Z2VyLmNwcApAQCAtMCwwICsxLDE0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDb3JlQXVkaW9D
YXB0dXJlRGV2aWNlTWFuYWdlci5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgUExB
VEZPUk0oTUFDKQorCisjaW5jbHVkZSAiQ29yZUF1ZGlvQ2FwdHVyZURldmljZS5oIgorI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlIDxBdWRpb1VuaXQvQXVkaW9Vbml0Lmg+CisjaW5jbHVk
ZSA8Q29yZU1lZGlhL0NNU3luYy5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgor
CisjaW1wb3J0ICJDb3JlTWVkaWFTb2Z0TGluay5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K0NvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyJiBDb3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFu
YWdlcjo6c2luZ2xldG9uKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q29yZUF1ZGlv
Q2FwdHVyZURldmljZU1hbmFnZXI+IG1hbmFnZXI7CisgICAgcmV0dXJuIG1hbmFnZXI7Cit9CisK
K1ZlY3RvcjxDYXB0dXJlRGV2aWNlPiYgQ29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXI6OmNh
cHR1cmVEZXZpY2VzKCkKK3sKKyAgICBjb3JlQXVkaW9DYXB0dXJlRGV2aWNlcygpOworICAgIHJl
dHVybiBtX2RldmljZXM7Cit9CisKK3N0YXRpYyBib29sIGRldmljZUhhc0lucHV0U3RyZWFtcyhB
dWRpb09iamVjdElEIGRldmljZUlEKQoreworICAgIFVJbnQzMiBkYXRhU2l6ZSA9IDA7CisgICAg
QXVkaW9PYmplY3RQcm9wZXJ0eUFkZHJlc3MgYWRkcmVzcyA9IHsga0F1ZGlvRGV2aWNlUHJvcGVy
dHlTdHJlYW1zLCBrQXVkaW9EZXZpY2VQcm9wZXJ0eVNjb3BlSW5wdXQsIGtBdWRpb09iamVjdFBy
b3BlcnR5RWxlbWVudE1hc3RlciB9OworICAgIGF1dG8gZXJyID0gQXVkaW9PYmplY3RHZXRQcm9w
ZXJ0eURhdGFTaXplKGRldmljZUlELCAmYWRkcmVzcywgMCwgbnVsbHB0ciwgJmRhdGFTaXplKTsK
KworICAgIHJldHVybiAhZXJyICYmIGRhdGFTaXplOworfQorCitWZWN0b3I8UmVmPENvcmVBdWRp
b0NhcHR1cmVEZXZpY2U+PiYgQ29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXI6OmNvcmVBdWRp
b0NhcHR1cmVEZXZpY2VzKCkKK3sKKyAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZDsKKyAgICBp
ZiAoIWluaXRpYWxpemVkKSB7CisgICAgICAgIGluaXRpYWxpemVkID0gdHJ1ZTsKKyAgICAgICAg
cmVmcmVzaEF1ZGlvQ2FwdHVyZURldmljZXMoKTsKKworICAgICAgICBBdWRpb09iamVjdFByb3Bl
cnR5QWRkcmVzcyBhZGRyZXNzID0geyBrQXVkaW9IYXJkd2FyZVByb3BlcnR5RGV2aWNlcywga0F1
ZGlvT2JqZWN0UHJvcGVydHlTY29wZUdsb2JhbCwga0F1ZGlvT2JqZWN0UHJvcGVydHlFbGVtZW50
TWFzdGVyIH07CisgICAgICAgIGF1dG8gZXJyID0gQXVkaW9PYmplY3RBZGRQcm9wZXJ0eUxpc3Rl
bmVyKGtBdWRpb09iamVjdFN5c3RlbU9iamVjdCwgJmFkZHJlc3MsIGRldmljZXNDaGFuZ2VkLCB0
aGlzKTsKKyAgICAgICAgaWYgKGVycikKKyAgICAgICAgICAgIExPR19FUlJPUigiQ29yZUF1ZGlv
Q2FwdHVyZURldmljZU1hbmFnZXI6OmRldmljZXMoJXApIEF1ZGlvT2JqZWN0QWRkUHJvcGVydHlM
aXN0ZW5lciByZXR1cm5lZCBlcnJvciAlZCAoJS40cykiLCB0aGlzLCAoaW50KWVyciwgKGNoYXIq
KSZlcnIpOworICAgIH0KKworICAgIHJldHVybiBtX2NvcmVBdWRpb0NhcHR1cmVEZXZpY2VzOwor
fQorCit2b2lkIENvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyOjpyZWZyZXNoQXVkaW9DYXB0
dXJlRGV2aWNlcygpCit7CisgICAgQXVkaW9PYmplY3RQcm9wZXJ0eUFkZHJlc3MgYWRkcmVzcyA9
IHsga0F1ZGlvSGFyZHdhcmVQcm9wZXJ0eURldmljZXMsIGtBdWRpb09iamVjdFByb3BlcnR5U2Nv
cGVHbG9iYWwsIGtBdWRpb09iamVjdFByb3BlcnR5RWxlbWVudE1hc3RlciB9OworICAgIFVJbnQz
MiBkYXRhU2l6ZSA9IDA7CisgICAgYXV0byBlcnIgPSBBdWRpb09iamVjdEdldFByb3BlcnR5RGF0
YVNpemUoa0F1ZGlvT2JqZWN0U3lzdGVtT2JqZWN0LCAmYWRkcmVzcywgMCwgbnVsbHB0ciwgJmRh
dGFTaXplKTsKKyAgICBpZiAoZXJyKSB7CisgICAgICAgIExPRyhNZWRpYSwgIkNvcmVBdWRpb0Nh
cHR1cmVEZXZpY2VNYW5hZ2VyOjpyZWZyZXNoQXVkaW9DYXB0dXJlRGV2aWNlcyglcCkgZmFpbGVk
IHRvIGdldCBzaXplIG9mIGRldmljZSBsaXN0ICVkICglLjRzKSIsIHRoaXMsIChpbnQpZXJyLCAo
Y2hhciopJmVycik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzaXplX3QgZGV2aWNl
Q291bnQgPSBkYXRhU2l6ZSAvIHNpemVvZihBdWRpb09iamVjdElEKTsKKyAgICBBdWRpb09iamVj
dElEIGRldmljZUlEc1tkZXZpY2VDb3VudF07CisgICAgZXJyID0gQXVkaW9PYmplY3RHZXRQcm9w
ZXJ0eURhdGEoa0F1ZGlvT2JqZWN0U3lzdGVtT2JqZWN0LCAmYWRkcmVzcywgMCwgbnVsbHB0ciwg
JmRhdGFTaXplLCBkZXZpY2VJRHMpOworICAgIGlmIChlcnIpIHsKKyAgICAgICAgTE9HKE1lZGlh
LCAiQ29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXI6OnJlZnJlc2hBdWRpb0NhcHR1cmVEZXZp
Y2VzKCVwKSBmYWlsZWQgdG8gZ2V0IGRldmljZSBsaXN0ICVkICglLjRzKSIsIHRoaXMsIChpbnQp
ZXJyLCAoY2hhciopJmVycik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBib29sIGhh
dmVEZXZpY2VDaGFuZ2VzID0gZmFsc2U7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBkZXZp
Y2VDb3VudDsgaSsrKSB7CisgICAgICAgIEF1ZGlvT2JqZWN0SUQgZGV2aWNlSUQgPSBkZXZpY2VJ
RHNbaV07CisgICAgICAgIGlmICghZGV2aWNlSGFzSW5wdXRTdHJlYW1zKGRldmljZUlEKSkKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmIChzdGQ6OmFueV9vZihtX2NvcmVBdWRp
b0NhcHR1cmVEZXZpY2VzLmJlZ2luKCksIG1fY29yZUF1ZGlvQ2FwdHVyZURldmljZXMuZW5kKCks
IFtkZXZpY2VJRF0oYXV0byYgZGV2aWNlKSB7IHJldHVybiBkZXZpY2UtPmRldmljZUlEKCkgPT0g
ZGV2aWNlSUQ7IH0pKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgYXV0byBkZXZp
Y2UgPSBDb3JlQXVkaW9DYXB0dXJlRGV2aWNlOjpjcmVhdGUoZGV2aWNlSUQpOworICAgICAgICBp
ZiAoIWRldmljZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBtX2NvcmVBdWRpb0Nh
cHR1cmVEZXZpY2VzLmFwcGVuZChkZXZpY2UucmVsZWFzZU5vbk51bGwoKSk7CisKKyAgICAgICAg
aGF2ZURldmljZUNoYW5nZXMgPSB0cnVlOworICAgIH0KKworICAgIGZvciAoYXV0byYgZGV2aWNl
IDogbV9jb3JlQXVkaW9DYXB0dXJlRGV2aWNlcykgeworICAgICAgICBib29sIGlzQWxpdmUgPSBk
ZXZpY2UtPmlzQWxpdmUoKTsKKyAgICAgICAgaWYgKGRldmljZS0+ZW5hYmxlZCgpICE9IGlzQWxp
dmUpIHsKKyAgICAgICAgICAgIGRldmljZS0+c2V0RW5hYmxlZChpc0FsaXZlKTsKKyAgICAgICAg
ICAgIGhhdmVEZXZpY2VDaGFuZ2VzID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlm
IChoYXZlRGV2aWNlQ2hhbmdlcykgeworICAgICAgICBtX2RldmljZXMgPSBWZWN0b3I8Q2FwdHVy
ZURldmljZT4oKTsKKworICAgICAgICBmb3IgKGF1dG8gJmRldmljZSA6IG1fY29yZUF1ZGlvQ2Fw
dHVyZURldmljZXMpIHsKKyAgICAgICAgICAgIENhcHR1cmVEZXZpY2UgY2FwdHVyZURldmljZShk
ZXZpY2UtPnBlcnNpc3RlbnRJZCgpLCBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpBdWRpbywg
ZGV2aWNlLT5sYWJlbCgpKTsKKyAgICAgICAgICAgIGNhcHR1cmVEZXZpY2Uuc2V0RW5hYmxlZChk
ZXZpY2UtPmVuYWJsZWQoKSk7CisgICAgICAgICAgICBtX2RldmljZXMuYXBwZW5kKGNhcHR1cmVE
ZXZpY2UpOworICAgICAgICB9CisgICAgfQorfQorCitPU1N0YXR1cyBDb3JlQXVkaW9DYXB0dXJl
RGV2aWNlTWFuYWdlcjo6ZGV2aWNlc0NoYW5nZWQoQXVkaW9PYmplY3RJRCwgVUludDMyLCBjb25z
dCBBdWRpb09iamVjdFByb3BlcnR5QWRkcmVzcyosIHZvaWQgKnVzZXJEYXRhKQoreworICAgIHN0
YXRpY19jYXN0PENvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyKj4odXNlckRhdGEpLT5yZWZy
ZXNoQXVkaW9DYXB0dXJlRGV2aWNlcygpOworICAgIHJldHVybiAwOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQTEFURk9S
TShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvQ29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjViNGYxNjRiMTJhYjIyNzRmZWVjMTJlZDg4YzdmYzRmYWU4NzdjMWMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1
ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIuaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKSAmJiBQTEFURk9STShNQUMpCisKKyNpbmNsdWRlICJDYXB0dXJlRGV2
aWNlLmgiCisjaW5jbHVkZSAiQ2FwdHVyZURldmljZU1hbmFnZXIuaCIKKyNpbmNsdWRlIDxDb3Jl
QXVkaW8vQ29yZUF1ZGlvLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgQ29yZUF1ZGlvQ2FwdHVyZURldmljZTsKKworY2xhc3MgQ29y
ZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIgZmluYWwgOiBwdWJsaWMgQ2FwdHVyZURldmljZU1h
bmFnZXIgeworICAgIGZyaWVuZCBjbGFzcyBOZXZlckRlc3Ryb3llZDxDb3JlQXVkaW9DYXB0dXJl
RGV2aWNlTWFuYWdlcj47CitwdWJsaWM6CisgICAgc3RhdGljIENvcmVBdWRpb0NhcHR1cmVEZXZp
Y2VNYW5hZ2VyJiBzaW5nbGV0b24oKTsKKworICAgIFZlY3RvcjxDYXB0dXJlRGV2aWNlPiYgY2Fw
dHVyZURldmljZXMoKSBmaW5hbDsKKworICAgIFZlY3RvcjxSZWY8Q29yZUF1ZGlvQ2FwdHVyZURl
dmljZT4+JiBjb3JlQXVkaW9DYXB0dXJlRGV2aWNlcygpOworCitwcml2YXRlOgorICAgIENvcmVB
dWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyKCkgPSBkZWZhdWx0OworICAgIH5Db3JlQXVkaW9DYXB0
dXJlRGV2aWNlTWFuYWdlcigpID0gZGVmYXVsdDsKKyAgICAKKyAgICBzdGF0aWMgT1NTdGF0dXMg
ZGV2aWNlc0NoYW5nZWQoQXVkaW9PYmplY3RJRCwgVUludDMyLCBjb25zdCBBdWRpb09iamVjdFBy
b3BlcnR5QWRkcmVzcyosIHZvaWQqKTsKKworICAgIHZvaWQgcmVmcmVzaEF1ZGlvQ2FwdHVyZURl
dmljZXMoKTsKKworICAgIFZlY3RvcjxDYXB0dXJlRGV2aWNlPiBtX2RldmljZXM7CisgICAgVmVj
dG9yPFJlZjxDb3JlQXVkaW9DYXB0dXJlRGV2aWNlPj4gbV9jb3JlQXVkaW9DYXB0dXJlRGV2aWNl
czsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJ
QV9TVFJFQU0gJiYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2Uu
Y3BwCmluZGV4IDI5YzcwMTE0MzhjNTA0NGFjYmFmMmU2ZWFiZTc5OTNhM2Q0ZmZkOGQuLjYzZGZm
YmZiNDE1ODcyMTZjMzFlM2ZiNDBlZjUyMTUwZDY0YjcwNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlv
Q2FwdHVyZVNvdXJjZS5jcHAKQEAgLTMwLDYgKzMwLDggQEAKIAogI2luY2x1ZGUgIkF1ZGlvU2Ft
cGxlQnVmZmVyTGlzdC5oIgogI2luY2x1ZGUgIkF1ZGlvU2FtcGxlRGF0YVNvdXJjZS5oIgorI2lu
Y2x1ZGUgIkNvcmVBdWRpb0NhcHR1cmVEZXZpY2UuaCIKKyNpbmNsdWRlICJDb3JlQXVkaW9DYXB0
dXJlRGV2aWNlTWFuYWdlci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZWRp
YVRpbWVBVkZvdW5kYXRpb24uaCIKICNpbmNsdWRlIDxBdWRpb1Rvb2xib3gvQXVkaW9Db252ZXJ0
ZXIuaD4KQEAgLTc4LDcgKzgwLDE1IEBAIENvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OkNvcmVBdWRp
b0NhcHR1cmVTb3VyY2UoY29uc3QgQ2FwdHVyZURldmljZSYgZGV2aWNlSW5mbykKICAgICA6IFJl
YWx0aW1lTWVkaWFTb3VyY2UoZW1wdHlTdHJpbmcoKSwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlw
ZTo6QXVkaW8sIGRldmljZUluZm8ubGFiZWwoKSkKICAgICAsIG1fY2FwdHVyZURldmljZUlEKDAp
CiB7Ci0gICAgLy8gRklYTUU6IHVzZSBkZXZpY2VJbmZvIHRvIHNldCB0aGUgbV9jYXB0dXJlRGV2
aWNlSUQKKyNpZiBQTEFURk9STShNQUMpCisgICAgZm9yIChhdXRvJiBwbGF0Zm9ybURldmljZSA6
IENvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb3JlQXVkaW9DYXB0
dXJlRGV2aWNlcygpKSB7CisgICAgICAgIGlmIChwbGF0Zm9ybURldmljZS0+cGVyc2lzdGVudElk
KCkgPT0gZGV2aWNlSW5mby5wZXJzaXN0ZW50SWQoKSkgeworICAgICAgICAgICAgbV9jYXB0dXJl
RGV2aWNlSUQgPSBwbGF0Zm9ybURldmljZS0+ZGV2aWNlSUQoKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgfQorICAgIEFTU0VSVChtX2NhcHR1cmVEZXZpY2VJRCk7CisjZW5k
aWYKIAogICAgIHNldFBlcnNpc3RlbnRJRChkZXZpY2VJbmZvLnBlcnNpc3RlbnRJZCgpKTsKICAg
ICBzZXRNdXRlZCh0cnVlKTsKQEAgLTQwOCwyNCArNDE4LDI2IEBAIE9TU3RhdHVzIENvcmVBdWRp
b0NhcHR1cmVTb3VyY2U6OnNldHVwQXVkaW9Vbml0cygpCiAKIHZvaWQgQ29yZUF1ZGlvQ2FwdHVy
ZVNvdXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKCkKIHsKLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9j
az4gbG9jayhtX2ludGVybmFsU3RhdGVMb2NrKTsKLSAgICBpZiAobV9pb1VuaXRTdGFydGVkKQot
ICAgICAgICByZXR1cm47CisgICAgeworICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9j
ayhtX2ludGVybmFsU3RhdGVMb2NrKTsKKyAgICAgICAgaWYgKG1faW9Vbml0U3RhcnRlZCkKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICBPU1N0YXR1cyBlcnI7CisgICAgICAgIGlmICgh
bV9pb1VuaXQpIHsKKyAgICAgICAgICAgIGVyciA9IHNldHVwQXVkaW9Vbml0cygpOworICAgICAg
ICAgICAgaWYgKGVycikKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAotICAg
IE9TU3RhdHVzIGVycjsKLSAgICBpZiAoIW1faW9Vbml0KSB7Ci0gICAgICAgIGVyciA9IHNldHVw
QXVkaW9Vbml0cygpOwotICAgICAgICBpZiAoZXJyKQorICAgICAgICBlcnIgPSBBdWRpb091dHB1
dFVuaXRTdGFydChtX2lvVW5pdCk7CisgICAgICAgIGlmIChlcnIpIHsKKyAgICAgICAgICAgIExP
RyhNZWRpYSwgIkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnN0YXJ0KCVwKSBBdWRpb091dHB1dFVu
aXRTdGFydCBmYWlsZWQgd2l0aCBlcnJvciAlZCAoJS40cykiLCB0aGlzLCAoaW50KWVyciwgKGNo
YXIqKSZlcnIpOwogICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICAgICAgfQogCi0gICAg
ZXJyID0gQXVkaW9PdXRwdXRVbml0U3RhcnQobV9pb1VuaXQpOwotICAgIGlmIChlcnIpIHsKLSAg
ICAgICAgTE9HKE1lZGlhLCAiQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6c3RhcnQoJXApIEF1ZGlv
T3V0cHV0VW5pdFN0YXJ0IGZhaWxlZCB3aXRoIGVycm9yICVkICglLjRzKSIsIHRoaXMsIChpbnQp
ZXJyLCAoY2hhciopJmVycik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgbV9pb1VuaXRTdGFy
dGVkID0gdHJ1ZTsKICAgICB9Ci0KLSAgICBtX2lvVW5pdFN0YXJ0ZWQgPSB0cnVlOwogICAgIHNl
dE11dGVkKGZhbHNlKTsKIH0KIApAQCAtNDMzLDE0ICs0NDUsMTQgQEAgdm9pZCBDb3JlQXVkaW9D
YXB0dXJlU291cmNlOjpzdG9wUHJvZHVjaW5nRGF0YSgpCiB7CiAgICAgc3RkOjpsb2NrX2d1YXJk
PExvY2s+IGxvY2sobV9pbnRlcm5hbFN0YXRlTG9jayk7CiAKLSAgICBBU1NFUlQobV9pb1VuaXQp
OwotCi0gICAgYXV0byBlcnIgPSBBdWRpb091dHB1dFVuaXRTdG9wKG1faW9Vbml0KTsKLSAgICBp
ZiAoZXJyKSB7Ci0gICAgICAgIExPRyhNZWRpYSwgIkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnN0
b3AoJXApIEF1ZGlvT3V0cHV0VW5pdFN0b3AgZmFpbGVkIHdpdGggZXJyb3IgJWQgKCUuNHMpIiwg
dGhpcywgKGludCllcnIsIChjaGFyKikmZXJyKTsKLSAgICAgICAgcmV0dXJuOworICAgIGlmICht
X2lvVW5pdCkgeworICAgICAgICBhdXRvIGVyciA9IEF1ZGlvT3V0cHV0VW5pdFN0b3AobV9pb1Vu
aXQpOworICAgICAgICBpZiAoZXJyKSB7CisgICAgICAgICAgICBMT0coTWVkaWEsICJDb3JlQXVk
aW9DYXB0dXJlU291cmNlOjpzdG9wKCVwKSBBdWRpb091dHB1dFVuaXRTdG9wIGZhaWxlZCB3aXRo
IGVycm9yICVkICglLjRzKSIsIHRoaXMsIChpbnQpZXJyLCAoY2hhciopJmVycik7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgbV9pb1VuaXRTdGFydGVkID0gZmFsc2U7
CiAgICAgfQotICAgIG1faW9Vbml0U3RhcnRlZCA9IGZhbHNlOwogICAgIHNldE11dGVkKHRydWUp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHAKaW5k
ZXggMTUwMThjOTk5NGVlMDQ4ODM0MTRmZDU2OTg1ZDhkMTJkODQ0OTIxYS4uMTcxZjAzNmUxNTZk
MjJjNTI3MjJlMTE2MzgzYTY5MmU3Yjg1NGE4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyTWFjLmNwcApAQCAtMzMsOCArMzMsMTAgQEAKICNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQogI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuaCIKIAor
I2luY2x1ZGUgIkFWQXVkaW9DYXB0dXJlU291cmNlLmgiCiAjaW5jbHVkZSAiQVZDYXB0dXJlRGV2
aWNlTWFuYWdlci5oIgogI2luY2x1ZGUgIkFWVmlkZW9DYXB0dXJlU291cmNlLmgiCisjaW5jbHVk
ZSAiQ29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIuaCIKICNpbmNsdWRlICJDb3JlQXVkaW9D
YXB0dXJlU291cmNlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lZGlhU3Ry
ZWFtUHJpdmF0ZS5oIgpAQCAtNDIsNiArNDQsMjggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Cit2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OnNldFVzZUFWRm91bmRhdGlvbkF1
ZGlvQ2FwdHVyZShib29sIGVuYWJsZWQpCit7CisgICAgc3RhdGljIGJvb2wgYWN0aXZlID0gZmFs
c2U7CisgICAgaWYgKGFjdGl2ZSA9PSBlbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBh
Y3RpdmUgPSBlbmFibGVkOworICAgIGlmIChhY3RpdmUpIHsKKyAgICAgICAgUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlcjo6c2luZ2xldG9uKCkuc2V0QXVkaW9GYWN0b3J5KEFWQXVkaW9DYXB0dXJl
U291cmNlOjpmYWN0b3J5KCkpOworICAgICAgICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpz
aW5nbGV0b24oKS5zZXRBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyKEFWQ2FwdHVyZURldmljZU1h
bmFnZXI6OnNpbmdsZXRvbigpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBSZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5zZXRBdWRpb0ZhY3RvcnkoQ29yZUF1ZGlvQ2FwdHVy
ZVNvdXJjZTo6ZmFjdG9yeSgpKTsKKyNpZiBQTEFURk9STShNQUMpCisgICAgICAgIFJlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLnNldEF1ZGlvQ2FwdHVyZURldmljZU1hbmFn
ZXIoQ29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmdsZXRvbigpKTsKKyNlbHNlCisg
ICAgICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLnNldEF1ZGlvQ2Fw
dHVyZURldmljZU1hbmFnZXIoQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkpOwor
I2VuZGlmCisgICAgfQorfQorCisKKwogUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlciYgUmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlcjo6cGxhdGZvcm1DZW50ZXIoKQogewogICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CkBAIC02NSw2ICs4OSwxMyBAQCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
TWFjOjpSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjKCkKIAogICAgIG1fYXVkaW9GYWN0b3J5
ID0gJkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OmZhY3RvcnkoKTsKICAgICBtX3ZpZGVvRmFjdG9y
eSA9ICZBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6ZmFjdG9yeSgpOworCisjaWYgUExBVEZPUk0oTUFD
KQorICAgIG1fYXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlciA9ICZDb3JlQXVkaW9DYXB0dXJlRGV2
aWNlTWFuYWdlcjo6c2luZ2xldG9uKCk7CisjZWxzZQorICAgIG1fYXVkaW9DYXB0dXJlRGV2aWNl
TWFuYWdlciA9ICZBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKTsKKyNlbmRpZgor
ICAgIG1fdmlkZW9DYXB0dXJlRGV2aWNlTWFuYWdlciA9ICZBVkNhcHR1cmVEZXZpY2VNYW5hZ2Vy
OjpzaW5nbGV0b24oKTsKIH0KIAogUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYzo6flJlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMoKQpAQCAtMTAzLDcgKzEzNCw3IEBAIHZvaWQgUmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlck1hYzo6Y3JlYXRlTWVkaWFTdHJlYW0oTmV3TWVkaWFTdHJlYW1I
YW5kbGVyIGNvbXBsCiAgICAgU3RyaW5nIGludmFsaWRDb25zdHJhaW50OwogCiAgICAgaWYgKCFh
dWRpb0RldmljZUlELmlzRW1wdHkoKSkgewotICAgICAgICBhdXRvIGF1ZGlvRGV2aWNlID0gQVZD
YXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkuZGV2aWNlV2l0aFVJRChhdWRpb0Rldmlj
ZUlELCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbyk7CisgICAgICAgIGF1dG8gYXVk
aW9EZXZpY2UgPSBtX2F1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXItPmRldmljZVdpdGhVSUQoYXVk
aW9EZXZpY2VJRCwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6QXVkaW8pOwogICAgICAgICBp
ZiAoYXVkaW9EZXZpY2UgJiYgbV9hdWRpb0ZhY3RvcnkpIHsKICAgICAgICAgICAgIGlmIChhdXRv
IGF1ZGlvU291cmNlID0gbV9hdWRpb0ZhY3RvcnktPmNyZWF0ZU1lZGlhU291cmNlRm9yQ2FwdHVy
ZURldmljZVdpdGhDb25zdHJhaW50cyhhdWRpb0RldmljZS52YWx1ZSgpLCBhdWRpb0NvbnN0cmFp
bnRzLCBpbnZhbGlkQ29uc3RyYWludCkpCiAgICAgICAgICAgICAgICAgYXVkaW9Tb3VyY2VzLmFw
cGVuZChhdWRpb1NvdXJjZS5yZWxlYXNlTm9uTnVsbCgpKTsKQEAgLTExNCw3ICsxNDUsNyBAQCB2
b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OmNyZWF0ZU1lZGlhU3RyZWFtKE5ld01l
ZGlhU3RyZWFtSGFuZGxlciBjb21wbAogICAgICAgICB9CiAgICAgfQogICAgIGlmICghdmlkZW9E
ZXZpY2VJRC5pc0VtcHR5KCkpIHsKLSAgICAgICAgYXV0byB2aWRlb0RldmljZSA9IEFWQ2FwdHVy
ZURldmljZU1hbmFnZXI6OnNpbmdsZXRvbigpLmRldmljZVdpdGhVSUQodmlkZW9EZXZpY2VJRCwg
UmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6VmlkZW8pOworICAgICAgICBhdXRvIHZpZGVvRGV2
aWNlID0gbV92aWRlb0NhcHR1cmVEZXZpY2VNYW5hZ2VyLT5kZXZpY2VXaXRoVUlEKHZpZGVvRGV2
aWNlSUQsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvKTsKICAgICAgICAgaWYgKHZp
ZGVvRGV2aWNlICYmIG1fdmlkZW9GYWN0b3J5KSB7CiAgICAgICAgICAgICBpZiAoYXV0byB2aWRl
b1NvdXJjZSA9IG1fdmlkZW9GYWN0b3J5LT5jcmVhdGVNZWRpYVNvdXJjZUZvckNhcHR1cmVEZXZp
Y2VXaXRoQ29uc3RyYWludHModmlkZW9EZXZpY2UudmFsdWUoKSwgdmlkZW9Db25zdHJhaW50cywg
aW52YWxpZENvbnN0cmFpbnQpKQogICAgICAgICAgICAgICAgIHZpZGVvU291cmNlcy5hcHBlbmQo
dmlkZW9Tb3VyY2UucmVsZWFzZU5vbk51bGwoKSk7CkBAIC0xMzMsNyArMTY0LDE1IEBAIHZvaWQg
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYzo6Y3JlYXRlTWVkaWFTdHJlYW0oTmV3TWVkaWFT
dHJlYW1IYW5kbGVyIGNvbXBsCiAKIFZlY3RvcjxDYXB0dXJlRGV2aWNlPiBSZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyTWFjOjpnZXRNZWRpYVN0cmVhbURldmljZXMoKQogewotICAgIHJldHVybiBB
VkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5nZXRTb3VyY2VzSW5mbygpOworICAg
IFZlY3RvcjxDYXB0dXJlRGV2aWNlPiByZXN1bHQ7CisKKyAgICBpZiAobV9hdWRpb0NhcHR1cmVE
ZXZpY2VNYW5hZ2VyKQorICAgICAgICByZXN1bHQuYXBwZW5kVmVjdG9yKG1fYXVkaW9DYXB0dXJl
RGV2aWNlTWFuYWdlci0+Z2V0QXVkaW9Tb3VyY2VzSW5mbygpKTsKKworICAgIGlmIChtX3ZpZGVv
Q2FwdHVyZURldmljZU1hbmFnZXIpCisgICAgICAgIHJlc3VsdC5hcHBlbmRWZWN0b3IobV92aWRl
b0NhcHR1cmVEZXZpY2VNYW5hZ2VyLT5nZXRWaWRlb1NvdXJjZXNJbmZvKCkpOworCisgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAogVmVjdG9yPFN0cmluZz4gUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
ck1hYzo6YmVzdFNvdXJjZXNGb3JUeXBlQW5kQ29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6VHlwZSB0eXBlLCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzJiBjb25zdHJhaW50cywgU3RyaW5n
JiBpbnZhbGlkQ29uc3RyYWludCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
ck1hYy5oCmluZGV4IDc2YmM4MjdlNTQ5ZGFmNDJjMTM2YmM3OWYzYWE3MjliZTc0MmI2NTQuLjFi
ZjQ5N2ZkNmQ3YzNjMTY2ZmRhODJkZWEyYjEzMWIxM2M4YTQ0ODQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1Jl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBSZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyTWFjIGZpbmFsIDogcHVibGljIFJlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXIgewogcHVibGljOgogICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMoKTsK
IAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNldFVzZUFWRm91bmRhdGlvbkF1ZGlv
Q2FwdHVyZShib29sIGVuYWJsZWQpOwogcHJpdmF0ZToKICAgICB+UmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlck1hYygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAppbmRl
eCBjODQxN2IwYzI5ODI0YmIxMWZhODgxMTQwNjA1NjAwNzA2ZmMzYWUxLi4zMmEzNjMxNzhhYmYy
ZDY5NzM1Mjg5MWNjMjE2YjQwZmQxMmM1N2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eS5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5
T3JpZ2luRGF0YS5oPgogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRB
VElPTikKLSNpbmNsdWRlIDxXZWJDb3JlL0FWQ2FwdHVyZURldmljZU1hbmFnZXIuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuaD4KICNlbmRpZgogCiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTMzNiw3ICszMzYsNyBAQCB2b2lkIFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpzeW5jV2l0aFdlYkNvcmVQcmVmcygpIGNv
bnN0CiAKICNpZiBVU0UoQVZGT1VOREFUSU9OKQogICAgIGJvb2wgdXNlQVZGb3VuZGF0aW9uQXVk
aW9DYXB0dXJlID0gbV9wYWdlLnByZWZlcmVuY2VzKCkudXNlQVZGb3VuZGF0aW9uQXVkaW9DYXB0
dXJlKCk7Ci0gICAgV2ViQ29yZTo6QVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2V0VXNlQVZGb3Vu
ZGF0aW9uQXVkaW9DYXB0dXJlKHVzZUFWRm91bmRhdGlvbkF1ZGlvQ2FwdHVyZSk7CisgICAgV2Vi
Q29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYzo6c2V0VXNlQVZGb3VuZGF0aW9uQXVk
aW9DYXB0dXJlKHVzZUFWRm91bmRhdGlvbkF1ZGlvQ2FwdHVyZSk7CiAjZW5kaWYKICNlbmRpZgog
fQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>307155</attachid>
            <date>2017-04-14 15:31:18 -0700</date>
            <delta_ts>2017-04-17 10:00:55 -0700</delta_ts>
            <desc>Patch for landing.</desc>
            <filename>bug-170778-20170414153117.patch</filename>
            <type>text/plain</type>
            <size>50096</size>
            <attacher name="Jeremy Jones">jeremyj-wk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1MjUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWY2NDllNGZmZGI0MDgw
ZGExYTFkZTM1ZDU1NGI2MDE0ZjVjN2U5YS4uZjEzMDMwYTVkMzJmNmQxMGE1OTc4MjA2MTViZmRk
MjgzYjRiYjk4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDE3LTA0LTEyICBKZXJl
bXkgSm9uZXMgIDxqZXJlbXlqQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBlbnVtZXJh
dGVEZXZpY2VzIHRvIGFsbG93IHNlcGFyYXRlIENhcHR1cmVEZXZpY2VNYW5hZ2VycyBmb3IgYXVk
aW8gYW5kIHZpZGVvLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTcwNzc4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAg
ICAgIEFkZCBDb3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlciB0byBlbnVtZXJhdGUgQ29yZUF1
ZGlvIGRldmljZXMuCisKKyAgICAgICAgUmVmYWN0b3IgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
ciBhbmQgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYyB0byBwcm92aWRlIGluZGVwZW5kZW50
IGF1ZGlvIGFuZCB2aWRlbyBjYXB0dXJlIGRldmljZSBtYW5hZ2VycworICAgICAgICBhbmQgdGhl
IGFiaWxpaXR5IHRvIG92ZXJyaWRlIHRoZSBjYXB0dXJlIGRldmljZSBtYW5hZ2Vycy4KKworICAg
ICAgICBDb3JlQXVkaW9DYXB0dXJlU291cmNlIG5vdyB1c2VzIENvcmVBdWRpb0NhcHR1cmVEZXZp
Y2VNYW5hZ2VyIHRvIHVzZSB0aGUgc3BlY2lmaWVkIGRldmljZSBpbnN0ZWFkIG9mIHRoZSBkZWZh
dWx0IG9uZS4gCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuY3Bw
OgorICAgICAgICAoQ2FwdHVyZURldmljZU1hbmFnZXI6OmdldEF1ZGlvU291cmNlc0luZm8pOgor
ICAgICAgICAoQ2FwdHVyZURldmljZU1hbmFnZXI6OmdldFZpZGVvU291cmNlc0luZm8pOgorICAg
ICAgICAoQ2FwdHVyZURldmljZU1hbmFnZXI6OmdldFNvdXJjZXNJbmZvKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2V0QXVkaW9D
YXB0dXJlRGV2aWNlTWFuYWdlcik6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291
cmNlQ2VudGVyOjp1bnNldEF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2V0VmlkZW9DYXB0dXJlRGV2aWNlTWFu
YWdlcik6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjp1bnNl
dFZpZGVvQ2FwdHVyZURldmljZU1hbmFnZXIpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmRlZmF1bHRBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmRlZmF1bHRWaWRl
b0NhcHR1cmVEZXZpY2VNYW5hZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXI6OmF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6dmlkZW9DYXB0dXJlRGV2aWNlTWFuYWdlcik6
CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFn
ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNl
TWFuYWdlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnJl
ZnJlc2hBVkNhcHR1cmVEZXZpY2VzT2ZUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkFWQ2FwdHVy
ZURldmljZU1hbmFnZXI6OnJlZnJlc2hDYXB0dXJlRGV2aWNlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpnZXRBdWRpb1NvdXJjZXNJbmZvKToKKyAgICAgICAg
KFdlYkNvcmU6OkFWQ2FwdHVyZURldmljZU1hbmFnZXI6OmdldFZpZGVvU291cmNlc0luZm8pOgor
ICAgICAgICAoV2ViQ29yZTo6QVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2V0VXNlQVZGb3VuZGF0
aW9uQXVkaW9DYXB0dXJlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFWQ2FwdHVyZURl
dmljZU1hbmFnZXI6OmdldFNvdXJjZXNJbmZvKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZURldmljZS5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6Z2V0RGV2aWNlSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpDb3JlQXVk
aW9DYXB0dXJlRGV2aWNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUF1ZGlvQ2Fw
dHVyZURldmljZTo6Q29yZUF1ZGlvQ2FwdHVyZURldmljZSk6CisgICAgICAgIChXZWJDb3JlOjpD
b3JlQXVkaW9DYXB0dXJlRGV2aWNlOjpkZXZpY2VJRCk6CisgICAgICAgIChXZWJDb3JlOjpDb3Jl
QXVkaW9DYXB0dXJlRGV2aWNlOjpkZXZpY2VDbG9jayk6CisgICAgICAgIChXZWJDb3JlOjpDb3Jl
QXVkaW9DYXB0dXJlRGV2aWNlOjppc0FsaXZlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZURldmljZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5oLgorICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdl
ci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29yZUF1ZGlvQ2FwdHVyZURldmljZU1h
bmFnZXI6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJDb3JlOjpDb3JlQXVkaW9DYXB0dXJlRGV2
aWNlTWFuYWdlcjo6Y2FwdHVyZURldmljZXMpOgorICAgICAgICAoV2ViQ29yZTo6ZGV2aWNlSGFz
SW5wdXRTdHJlYW1zKToKKyAgICAgICAgKFdlYkNvcmU6OkNvcmVBdWRpb0NhcHR1cmVEZXZpY2VN
YW5hZ2VyOjpjb3JlQXVkaW9DYXB0dXJlRGV2aWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpDb3Jl
QXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlcjo6cmVmcmVzaEF1ZGlvQ2FwdHVyZURldmljZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXI6OmRldmljZXND
aGFuZ2VkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2Fw
dHVyZURldmljZU1hbmFnZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuaC4KKyAgICAgICAgKiBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpDb3JlQXVkaW9DYXB0dXJlU291cmNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpzdG9wUHJvZHVj
aW5nRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXJNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlck1hYzo6c2V0VXNlQVZGb3VuZGF0aW9uQXVkaW9DYXB0dXJlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OlJlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXJNYWMpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
ck1hYzo6Y3JlYXRlTWVkaWFTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlck1hYzo6Z2V0TWVkaWFTdHJlYW1EZXZpY2VzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5oOgorCiAy
MDE3LTA0LTExICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBEaXNh
YmxlIG91dGRhdGVkIFdyaXRhYmxlU3RyZWFtIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDExNDY3OTVhYzdl
MGEzZGE2NDU4MGUzMmFlNjVlYWQ3YzM3MDkzZWMuLmE3MGU3NTNjY2ExODg5OTA3ODdkNzkyMDI3
MDI5ZTFhMWU0ZDEzZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNy0wNC0xMiAg
SmVyZW15IEpvbmVzICA8amVyZW15akBhcHBsZS5jb20+CisKKyAgICAgICAgUmVmYWN0b3IgZW51
bWVyYXRlRGV2aWNlcyB0byBhbGxvdyBzZXBhcmF0ZSBDYXB0dXJlRGV2aWNlTWFuYWdlcnMgZm9y
IGF1ZGlvIGFuZCB2aWRlby4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3MDc3OAorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAg
ICAgICAgc2V0VXNlQVZGb3VuZGF0aW9uQXVkaW9DYXB0dXJlIGlzIG1vdmVkIGZyb20gQVZDYXB0
dXJlRGV2aWNlTWFuYWdlciB0byBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLgorCisgICAg
ICAgICogVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHk6OnN5bmNXaXRoV2ViQ29yZVByZWZzKToKKwogMjAxNy0wNC0xMSAgRGVhbiBKYWNrc29uICA8
ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgRGlzYWJsZSBvdXRkYXRlZCBXcml0YWJsZVN0cmVh
bSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCBhZjJlOWJhMTY5ZDA4N2FiZGVhOWQ5Y2E0ZDYzYzFhMWIxOWNmMjE2Li4zMDM0
YTZhYmZhOTM0NDFiZGE4OWE5NTNkNDNmMGJjNTNiYzRmNDI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNjcxLDYgKzE2NzEs
MTAgQEAKIAkJM0YyQjMzRUYxNjVBRjE1NjAwRTM5ODdDIC8qIEpTV2ViS2l0Q1NTVmlld3BvcnRS
dWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzRjJC
MzNFQTE2NUFGMTU1MDBFMzk4N0MgLyogSlNXZWJLaXRDU1NWaWV3cG9ydFJ1bGUuaCAqLzsgfTsK
IAkJM0Y0MkIzMUQxODgxMTkxQjAwMjc4QUFDIC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xs
ZXJBVktpdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
M0Y0MkIzMUIxODgxMTkxQjAwMjc4QUFDIC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJB
VktpdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTNGNDJCMzFFMTg4MTE5MUIwMDI3OEFBQyAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
QVZLaXQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
RjQyQjMxQzE4ODExOTFCMDAyNzhBQUMgLyogV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFW
S2l0Lm1tICovOyB9OworCQkzRjgwMjAzNTFFOUU0N0JGMDBERUM2MUQgLyogQ29yZUF1ZGlvQ2Fw
dHVyZURldmljZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gM0Y4MDIwMzIxRTlFMzgxRDAwREVDNjFEIC8qIENvcmVBdWRpb0NhcHR1cmVEZXZpY2UuaCAq
LzsgfTsKKwkJM0Y4MDIwMzYxRTlFNDdDMzAwREVDNjFEIC8qIENvcmVBdWRpb0NhcHR1cmVEZXZp
Y2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gM0Y4
MDIwMzExRTlFMzgxRDAwREVDNjFEIC8qIENvcmVBdWRpb0NhcHR1cmVEZXZpY2UuY3BwICovOyB9
OworCQkzRjgwMjAzNzFFOUU0N0M1MDBERUM2MUQgLyogQ29yZUF1ZGlvQ2FwdHVyZURldmljZU1h
bmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDNG
ODAyMDM0MUU5RTM4MUQwMERFQzYxRCAvKiBDb3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlci5o
ICovOyB9OworCQkzRjgwMjAzODFFOUU0N0M5MDBERUM2MUQgLyogQ29yZUF1ZGlvQ2FwdHVyZURl
dmljZU1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gM0Y4MDIwMzMxRTlFMzgxRDAwREVDNjFEIC8qIENvcmVBdWRpb0NhcHR1cmVEZXZpY2VN
YW5hZ2VyLmNwcCAqLzsgfTsKIAkJM0ZCQzRBRjMxODk4ODE1NjAwNDZFRTM4IC8qIFdlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gM0ZCQzRBRjExODk4ODE1NjAwNDZFRTM4IC8qIFdlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tICovOyB9OwogCQkzRkJDNEFGNDE4OTg4MTU2MDA0NkVF
MzggLyogV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDNGQkM0QUYyMTg5ODgxNTYwMDQ2RUUzOCAv
KiBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTNGRjFGQTY2MUU3MzUwRkQwMEMxMDAyRiAv
KiBDb3JlQXVkaW9DYXB0dXJlU291cmNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDNGM0JCNTgyMUU3MDlFRTQwMEM3MDFGMiAvKiBDb3JlQXVkaW9D
YXB0dXJlU291cmNlLmNwcCAqLzsgfTsKQEAgLTkyNjMsNiArOTI2NywxMCBAQAogCQkzRjNCQjU4
MzFFNzA5RUU0MDBDNzAxRjIgLyogQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBDb3JlQXVkaW9DYXB0dXJlU291cmNlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTNGNDJCMzFCMTg4MTE5MUIwMDI3OEFBQyAvKiBXZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTNGNDJCMzFDMTg4MTE5MUIwMDI3OEFBQyAvKiBXZWJWaWRlb0Z1bGxz
Y3JlZW5Db250cm9sbGVyQVZLaXQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTNGODAyMDMxMUU5RTM4MUQwMERFQzYxRCAvKiBDb3JlQXVkaW9D
YXB0dXJlRGV2aWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENv
cmVBdWRpb0NhcHR1cmVEZXZpY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkz
RjgwMjAzMjFFOUUzODFEMDBERUM2MUQgLyogQ29yZUF1ZGlvQ2FwdHVyZURldmljZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb3JlQXVkaW9DYXB0dXJlRGV2aWNlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTNGODAyMDMzMUU5RTM4MUQwMERFQzYxRCAvKiBD
b3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBDb3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTNGODAyMDM0MUU5RTM4MUQwMERFQzYxRCAvKiBDb3JlQXVk
aW9DYXB0dXJlRGV2aWNlTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDb3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkzRkJDNEFGMTE4OTg4MTU2MDA0NkVFMzggLyogV2ViVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBX
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJM0ZCQzRBRjIxODk4ODE1NjAwNDZFRTM4IC8qIFdlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUFWS2l0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTNGRkZGOUE2MTU5RDlBNTUwMDIwQkJENSAvKiBXZWJLaXRDU1NWaWV3cG9ydFJ1bGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViS2l0Q1NTVmlld3BvcnRSdWxl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2MTIyLDggKzE2MTMwLDEyIEBA
CiAJCQkJMDcwMzYzREQxODFBMUNEQzAwQzA3NEE1IC8qIEFWTWVkaWFDYXB0dXJlU291cmNlLm1t
ICovLAogCQkJCTA3MDM2M0RFMTgxQTFDREMwMEMwNzRBNSAvKiBBVlZpZGVvQ2FwdHVyZVNvdXJj
ZS5oICovLAogCQkJCTA3MDM2M0RGMTgxQTFDREMwMEMwNzRBNSAvKiBBVlZpZGVvQ2FwdHVyZVNv
dXJjZS5tbSAqLywKLQkJCQkzRjNCQjU4MjFFNzA5RUU0MDBDNzAxRjIgLyogQ29yZUF1ZGlvQ2Fw
dHVyZVNvdXJjZS5jcHAgKi8sCiAJCQkJM0YzQkI1ODMxRTcwOUVFNDAwQzcwMUYyIC8qIENvcmVB
dWRpb0NhcHR1cmVTb3VyY2UuaCAqLywKKwkJCQkzRjNCQjU4MjFFNzA5RUU0MDBDNzAxRjIgLyog
Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHAgKi8sCisJCQkJM0Y4MDIwMzIxRTlFMzgxRDAwREVD
NjFEIC8qIENvcmVBdWRpb0NhcHR1cmVEZXZpY2UuaCAqLywKKwkJCQkzRjgwMjAzMTFFOUUzODFE
MDBERUM2MUQgLyogQ29yZUF1ZGlvQ2FwdHVyZURldmljZS5jcHAgKi8sCisJCQkJM0Y4MDIwMzQx
RTlFMzgxRDAwREVDNjFEIC8qIENvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmggKi8sCisJ
CQkJM0Y4MDIwMzMxRTlFMzgxRDAwREVDNjFEIC8qIENvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5h
Z2VyLmNwcCAqLywKIAkJCQkwNzQ0RUNFQjFFMEM0QUU1MDAwRDA5NDQgLyogTW9ja1JlYWx0aW1l
QXVkaW9Tb3VyY2VNYWMuaCAqLywKIAkJCQkwNzQ0RUNFQzFFMEM0QUU1MDAwRDA5NDQgLyogTW9j
a1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMubW0gKi8sCiAJCQkJMDdFRTc2RUQxQkVBNjE5ODAwRjg5
MTMzIC8qIE1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLmggKi8sCkBAIC0yODEyMyw2ICsyODEz
NSw3IEBACiAJCQkJNzExOEZFRDUxNTY4NUNDNjAwMzBCNzlBIC8qIEpTU1ZHVmlld1NwZWMuaCBp
biBIZWFkZXJzICovLAogCQkJCTg0ODUyMjdFMTE5MDE2MkMwMDZFREM3RiAvKiBKU1NWR1ZLZXJu
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzFEQ0I3MDIxNTY4MTk3NjAwODYyMjcxIC8q
IEpTU1ZHWm9vbUFuZFBhbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJM0Y4MDIwMzUxRTlFNDdCRjAw
REVDNjFEIC8qIENvcmVBdWRpb0NhcHR1cmVEZXZpY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUIy
RkEzRTE5MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1pvb21FdmVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNjVERjMyMDQwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTVGV4dC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTMzQTE0QjkwQjdEMUQ1MjAwQTUzRkZEIC8qIEpTVGV4dEV2ZW50LmggaW4gSGVhZGVy
cyAqLywKQEAgLTI4Njk5LDYgKzI4NzEyLDcgQEAKIAkJCQkxQUQ4RjgxQjExQ0FCOUU5MDBFOTNF
NTQgLyogUGxhdGZvcm1TdHJhdGVnaWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjdEMDczMzE4
ODRDNTZDMDBCNEFGODYgLyogUGxhdGZvcm1UZXh0VHJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJ
CTA3NEU4MkJCMThBNjlGMEUwMDdFRjU0QyAvKiBQbGF0Zm9ybVRpbWVSYW5nZXMuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTNGODAyMDM3MUU5RTQ3QzUwMERFQzYxRCAvKiBDb3JlQXVkaW9DYXB0dXJl
RGV2aWNlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTJCMEQ0QkUxQzU3RkQxRTAwNzdD
RTUzIC8qIFBsYXRmb3JtVmlldy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM1QzQ3NkIwOUFDNEQ0
RjAwQTZBQUI0IC8qIFBsYXRmb3JtV2hlZWxFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFG
RkM0NTkxRDVFODY2MTAwMjY3QTY2IC8qIFBsdWdpbkJsYWNrbGlzdC5oIGluIEhlYWRlcnMgKi8s
CkBAIC0zMTc3Myw2ICszMTc4Nyw3IEBACiAJCQkJNTExRUYyQzQxN0YwRkQzNTAwRTRGQTE2IC8q
IEpTSURCRmFjdG9yeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTFFRjJDNTE3RjBGRDM1MDBF
NEZBMTYgLyogSlNJREJJbmRleC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTQxMjk5QjFDNkMx
Njc0MDA1OUU3MTQgLyogSlNJREJJbmRleEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkz
RjgwMjAzNjFFOUU0N0MzMDBERUM2MUQgLyogQ29yZUF1ZGlvQ2FwdHVyZURldmljZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk1MTFFRjJDNjE3RjBGRDM1MDBFNEZBMTYgLyogSlNJREJLZXlSYW5n
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTFFRjJDNzE3RjBGRDM1MDBFNEZBMTYgLyogSlNJ
REJPYmplY3RTdG9yZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTFFRjJEMTE3RjBGREYxMDBF
NEZBMTYgLyogSlNJREJPYmplY3RTdG9yZUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMz
MjE5LDYgKzMzMjM0LDcgQEAKIAkJCQk4NDE5RDJBQzEyMEQ5MkZDMDAxNDFGOEYgLyogU1ZHUGF0
aEJ5dGVTdHJlYW1Tb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBNTgwRDAwQkYy
MjAwNzFCNzgyIC8qIFNWR1BhdGhFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg0NzZD
OUVGMTFERjZBNTgwMDU1NUIwMiAvKiBTVkdQYXRoUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTNGODAyMDM4MUU5RTQ3QzkwMERFQzYxRCAvKiBDb3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFu
YWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzM5QzM3MTFEREJCOEFFMDBGRUZCMjkgLyog
U1ZHUGF0aFNlZ0xpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODQ3NkM5RTUxMURGNkEwQjAw
NTU1QjAyIC8qIFNWR1BhdGhTZWdMaXN0QnVpbGRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4
NEI2Qjk3NzEyMEYxM0U1MDBCOEVGQUYgLyogU1ZHUGF0aFNlZ0xpc3RTb3VyY2UuY3BwIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCmluZGV4IGMwYTQxZDExNGIyNWI3YTU3
MTMzZTA3YmNmNDJjYTJlMmIzYWQ4MTMuLjJkYTNiODQxMjNkZDcwZmVjNDc3ZmE3YmM4NTYwY2Rk
YmI0ZTZmZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCkBAIC00OSw3ICs0OSw3IEBACiAj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkg
JiYgVVNFKEFWRk9VTkRBVElPTikKLSNpbmNsdWRlICJBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgi
CisjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5oIgogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKQpAQCAtNjMwLDcgKzYzMCw3IEBAIHZvaWQgU2V0dGluZ3M6
OnNldFVzZUFWRm91bmRhdGlvbkF1ZGlvQ2FwdHVyZShib29sIHVzZUFWRm91bmRhdGlvbkF1ZGlv
Q2FwdHVyZSkKIHsKICAgICBnVXNlQVZGb3VuZGF0aW9uQXVkaW9DYXB0dXJlID0gdXNlQVZGb3Vu
ZGF0aW9uQXVkaW9DYXB0dXJlOwogI2lmIFVTRShBVkZPVU5EQVRJT04pCi0gICAgQVZDYXB0dXJl
RGV2aWNlTWFuYWdlcjo6c2V0VXNlQVZGb3VuZGF0aW9uQXVkaW9DYXB0dXJlKHVzZUFWRm91bmRh
dGlvbkF1ZGlvQ2FwdHVyZSk7CisgICAgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYzo6c2V0
VXNlQVZGb3VuZGF0aW9uQXVkaW9DYXB0dXJlKHVzZUFWRm91bmRhdGlvbkF1ZGlvQ2FwdHVyZSk7
CiAjZW5kaWYKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwCmluZGV4IDcxOWJiMWVi
YmQxYmMxZDFmMmQ5ZjBjMzg0NGZmZThkNjU2YmIxYjQuLjIwZWU3MTczZjBjM2Q4MGU0NDg1OTZl
ZjAyOGMzODI2ODI2ZWNjMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAKQEAgLTQ0LDExICs0
NCwyNCBAQCBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6fkNhcHR1cmVEZXZpY2VNYW5hZ2VyKCkKIHsK
IH0KIAotVmVjdG9yPENhcHR1cmVEZXZpY2U+IENhcHR1cmVEZXZpY2VNYW5hZ2VyOjpnZXRTb3Vy
Y2VzSW5mbygpCitWZWN0b3I8Q2FwdHVyZURldmljZT4gQ2FwdHVyZURldmljZU1hbmFnZXI6Omdl
dEF1ZGlvU291cmNlc0luZm8oKQogewogICAgIFZlY3RvcjxDYXB0dXJlRGV2aWNlPiBzb3VyY2Vz
SW5mbzsKLSAgICBmb3IgKGF1dG8gY2FwdHVyZURldmljZSA6IGNhcHR1cmVEZXZpY2VzKCkpIHsK
LSAgICAgICAgaWYgKCFjYXB0dXJlRGV2aWNlLmVuYWJsZWQoKSB8fCBjYXB0dXJlRGV2aWNlLnR5
cGUoKSA9PSBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpVbmtub3duKQorICAgIGZvciAoYXV0
byYgY2FwdHVyZURldmljZSA6IGNhcHR1cmVEZXZpY2VzKCkpIHsKKyAgICAgICAgaWYgKCFjYXB0
dXJlRGV2aWNlLmVuYWJsZWQoKSB8fCBjYXB0dXJlRGV2aWNlLnR5cGUoKSAhPSBDYXB0dXJlRGV2
aWNlOjpEZXZpY2VUeXBlOjpBdWRpbykKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAg
IHNvdXJjZXNJbmZvLmFwcGVuZChjYXB0dXJlRGV2aWNlKTsKKyAgICB9CisgICAgTE9HKE1lZGlh
LCAiQ2FwdHVyZURldmljZU1hbmFnZXI6OmdldFNvdXJjZXNJbmZvKCVwKSwgZm91bmQgJXp1IGFj
dGl2ZSBkZXZpY2VzIiwgdGhpcywgc291cmNlc0luZm8uc2l6ZSgpKTsKKyAgICByZXR1cm4gc291
cmNlc0luZm87Cit9CisKK1ZlY3RvcjxDYXB0dXJlRGV2aWNlPiBDYXB0dXJlRGV2aWNlTWFuYWdl
cjo6Z2V0VmlkZW9Tb3VyY2VzSW5mbygpCit7CisgICAgVmVjdG9yPENhcHR1cmVEZXZpY2U+IHNv
dXJjZXNJbmZvOworICAgIGZvciAoYXV0byYgY2FwdHVyZURldmljZSA6IGNhcHR1cmVEZXZpY2Vz
KCkpIHsKKyAgICAgICAgaWYgKCFjYXB0dXJlRGV2aWNlLmVuYWJsZWQoKSB8fCBjYXB0dXJlRGV2
aWNlLnR5cGUoKSAhPSBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpWaWRlbykKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCiAgICAgICAgIHNvdXJjZXNJbmZvLmFwcGVuZChjYXB0dXJlRGV2aWNl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1
cmVEZXZpY2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9D
YXB0dXJlRGV2aWNlTWFuYWdlci5oCmluZGV4IDhjYmQ0NTZiZTdiMWI5YzM0ZjAzNjMzZWM3MjQ1
NTYxZDMzYjAzNWYuLjM3OWZlNzQ5M2RlNWVhMDk5N2U0NTA4YTMwOTQxOTY3YTA0MTQ5MmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZp
Y2VNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2Fw
dHVyZURldmljZU1hbmFnZXIuaApAQCAtMzYsNyArMzYsOCBAQCBjbGFzcyBDYXB0dXJlRGV2aWNl
TWFuYWdlciB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCBWZWN0b3I8Q2FwdHVyZURldmljZT4mIGNh
cHR1cmVEZXZpY2VzKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZWZyZXNoQ2FwdHVyZURldmlj
ZXMoKSB7IH0KLSAgICB2aXJ0dWFsIFZlY3RvcjxDYXB0dXJlRGV2aWNlPiBnZXRTb3VyY2VzSW5m
bygpOworICAgIHZpcnR1YWwgVmVjdG9yPENhcHR1cmVEZXZpY2U+IGdldEF1ZGlvU291cmNlc0lu
Zm8oKTsKKyAgICB2aXJ0dWFsIFZlY3RvcjxDYXB0dXJlRGV2aWNlPiBnZXRWaWRlb1NvdXJjZXNJ
bmZvKCk7CiAgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPENhcHR1cmVEZXZpY2U+IGRldmljZVdp
dGhVSUQoY29uc3QgU3RyaW5nJiwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSk7CiAKIHByb3Rl
Y3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Jl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKaW5kZXggNzg1ZDYyMWM0YmI3
ZDE2NGExZGZiN2ZjMzA2ODg5NDllNzkwOGZhNS4uOTU1OTk4ZDY2NzFjZGQxNWJiMDdiYTkyMzAy
NjJmOWE3MjY2Mzc0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKQEAgLTg4
LDYgKzg4LDI4IEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6dW5zZXRWaWRlb0Zh
Y3RvcnkoUmVhbHRpbWVNZWRpYVNvdXJjZTo6Q2FwdHVyZUZhCiAgICAgICAgIG1fdmlkZW9GYWN0
b3J5ID0gbnVsbHB0cjsKIH0KIAordm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzZXRB
dWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyKENhcHR1cmVEZXZpY2VNYW5hZ2VyJiBkZXZpY2VNYW5h
Z2VyKQoreworICAgIG1fYXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlciA9ICZkZXZpY2VNYW5hZ2Vy
OworfQorCit2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnVuc2V0QXVkaW9DYXB0dXJl
RGV2aWNlTWFuYWdlcihDYXB0dXJlRGV2aWNlTWFuYWdlciYgZGV2aWNlTWFuYWdlcikKK3sKKyAg
ICBpZiAobV9hdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyID09ICZkZXZpY2VNYW5hZ2VyKQorICAg
ICAgICBtX2F1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIgPSBudWxscHRyOworfQorCit2b2lkIFJl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNldFZpZGVvQ2FwdHVyZURldmljZU1hbmFnZXIoQ2Fw
dHVyZURldmljZU1hbmFnZXImIGRldmljZU1hbmFnZXIpCit7CisgICAgbV92aWRlb0NhcHR1cmVE
ZXZpY2VNYW5hZ2VyID0gJmRldmljZU1hbmFnZXI7Cit9CisKK3ZvaWQgUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlcjo6dW5zZXRWaWRlb0NhcHR1cmVEZXZpY2VNYW5hZ2VyKENhcHR1cmVEZXZpY2VN
YW5hZ2VyJiBkZXZpY2VNYW5hZ2VyKQoreworICAgIGlmIChtX3ZpZGVvQ2FwdHVyZURldmljZU1h
bmFnZXIgPT0gJmRldmljZU1hbmFnZXIpCisgICAgICAgIG1fdmlkZW9DYXB0dXJlRGV2aWNlTWFu
YWdlciA9IG51bGxwdHI7Cit9CisgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRp
ZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oCmlu
ZGV4IDYxYjdlOWU1YzkyOWU5YTBiNjM5MTYyNjg4M2JhOTY4MmY2MjdhMGEuLjUxMjQxYWQ5MTgy
MmEyZDc4MGIwM2ZjMWYyYzFlY2Q2MzY3MTU1NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyLmgKQEAgLTQyLDYgKzQyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2Fw
dHVyZURldmljZTsKK2NsYXNzIENhcHR1cmVEZXZpY2VNYW5hZ2VyOwogY2xhc3MgTWVkaWFDb25z
dHJhaW50czsKIGNsYXNzIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczsKIGNsYXNzIFJlYWx0
aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50czsKQEAgLTc2LDYgKzc3LDE3IEBAIHB1
YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVuc2V0VmlkZW9GYWN0b3J5KFJlYWx0aW1l
TWVkaWFTb3VyY2U6OkNhcHR1cmVGYWN0b3J5Jik7CiAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZTo6
Q2FwdHVyZUZhY3RvcnkqIHZpZGVvRmFjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlkZW9GYWN0
b3J5OyB9CiAKKyAgICB2aXJ0dWFsIENhcHR1cmVEZXZpY2VNYW5hZ2VyKiBkZWZhdWx0QXVkaW9D
YXB0dXJlRGV2aWNlTWFuYWdlcigpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIENh
cHR1cmVEZXZpY2VNYW5hZ2VyKiBkZWZhdWx0VmlkZW9DYXB0dXJlRGV2aWNlTWFuYWdlcigpIHsg
cmV0dXJuIG51bGxwdHI7IH0KKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QXVkaW9DYXB0
dXJlRGV2aWNlTWFuYWdlcihDYXB0dXJlRGV2aWNlTWFuYWdlciYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgdW5zZXRBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyKENhcHR1cmVEZXZpY2VNYW5h
Z2VyJik7CisgICAgQ2FwdHVyZURldmljZU1hbmFnZXIqIGF1ZGlvQ2FwdHVyZURldmljZU1hbmFn
ZXIoKSBjb25zdCB7IHJldHVybiBtX2F1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXI7IH0KKworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VmlkZW9DYXB0dXJlRGV2aWNlTWFuYWdlcihDYXB0dXJl
RGV2aWNlTWFuYWdlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdW5zZXRWaWRlb0NhcHR1
cmVEZXZpY2VNYW5hZ2VyKENhcHR1cmVEZXZpY2VNYW5hZ2VyJik7CisgICAgQ2FwdHVyZURldmlj
ZU1hbmFnZXIqIHZpZGVvQ2FwdHVyZURldmljZU1hbmFnZXIoKSBjb25zdCB7IHJldHVybiBtX3Zp
ZGVvQ2FwdHVyZURldmljZU1hbmFnZXI7IH0KKwogcHJvdGVjdGVkOgogICAgIFJlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXIoKTsKIApAQCAtODQsNiArOTYsOSBAQCBwcm90ZWN0ZWQ6CiAKICAgICBS
ZWFsdGltZU1lZGlhU291cmNlOjpDYXB0dXJlRmFjdG9yeSogbV9hdWRpb0ZhY3RvcnkgeyBudWxs
cHRyIH07CiAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZTo6Q2FwdHVyZUZhY3RvcnkqIG1fdmlkZW9G
YWN0b3J5IHsgbnVsbHB0ciB9OworCisgICAgQ2FwdHVyZURldmljZU1hbmFnZXIqIG1fYXVkaW9D
YXB0dXJlRGV2aWNlTWFuYWdlciB7IG51bGxwdHIgfTsKKyAgICBDYXB0dXJlRGV2aWNlTWFuYWdl
ciogbV92aWRlb0NhcHR1cmVEZXZpY2VNYW5hZ2VyIHsgbnVsbHB0ciB9OwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKaW5kZXggYzYw
Y2EzYjg1MmM2NDA3NzMyNzgyYjBkYTI3OGMzYjhmZWM0YjdkNC4uMGNiMTcyMjQ0YmE1ODhhMGI2
NzAzNGQ0YWI2Yzc1MjQwMmY1N2YwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5o
CkBAIC01MSwxMSArNTEsMTIgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEFWQ2FwdHVyZURldmlj
ZU1hbmFnZXImIHNpbmdsZXRvbigpOwogCi0gICAgVmVjdG9yPENhcHR1cmVEZXZpY2U+IGdldFNv
dXJjZXNJbmZvKCkgZmluYWw7Ci0KICAgICB2b2lkIGRldmljZUNvbm5lY3RlZCgpOwogICAgIHZv
aWQgZGV2aWNlRGlzY29ubmVjdGVkKEFWQ2FwdHVyZURldmljZSopOwogCisgICAgVmVjdG9yPENh
cHR1cmVEZXZpY2U+IGdldEF1ZGlvU291cmNlc0luZm8oKSBmaW5hbDsKKyAgICBWZWN0b3I8Q2Fw
dHVyZURldmljZT4gZ2V0VmlkZW9Tb3VyY2VzSW5mbygpIGZpbmFsOworCiBwcm90ZWN0ZWQ6CiAg
ICAgc3RhdGljIGJvb2wgaXNBdmFpbGFibGUoKTsKIApAQCAtNjQsNiArNjUsNyBAQCBwcm90ZWN0
ZWQ6CiAKICAgICB2b2lkIHJlZnJlc2hDYXB0dXJlRGV2aWNlcygpIGZpbmFsOwogICAgIHZvaWQg
cmVnaXN0ZXJGb3JEZXZpY2VOb3RpZmljYXRpb25zKCk7CisgICAgdm9pZCByZWZyZXNoQVZDYXB0
dXJlRGV2aWNlc09mVHlwZShDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlKTsKIAogICAgIFJldGFp
blB0cjxXZWJDb3JlQVZDYXB0dXJlRGV2aWNlTWFuYWdlck9ic2VydmVyPiBtX29iamNPYnNlcnZl
cjsKICAgICBWZWN0b3I8Q2FwdHVyZURldmljZT4gbV9kZXZpY2VzOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFn
ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJl
RGV2aWNlTWFuYWdlci5tbQppbmRleCBiMzkxNTM2YzhiNTJmMWI3YmU5YWExOWNiNjZlYzFjZDQx
ODI1NTAwLi5jYWMxMzM1NGVmZGZhYTllOGFlNDc4OTEwNWNlOWIwZDk0MzYwN2M5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2
aWNlTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbQpAQCAtMzIsNyArMzIsNiBAQAogI2ltcG9ydCAi
QVZNZWRpYUNhcHR1cmVTb3VyY2UuaCIKICNpbXBvcnQgIkFWVmlkZW9DYXB0dXJlU291cmNlLmgi
CiAjaW1wb3J0ICJBdWRpb1NvdXJjZVByb3ZpZGVyLmgiCi0jaW1wb3J0ICJDb3JlQXVkaW9DYXB0
dXJlU291cmNlLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJNZWRpYUNvbnN0cmFp
bnRzLmgiCiAjaW1wb3J0ICJSZWFsdGltZU1lZGlhU291cmNlLmgiCkBAIC05MywxOSArOTIsNiBA
QCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lk
IEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNldFVzZUFWRm91bmRhdGlvbkF1ZGlvQ2FwdHVyZShi
b29sIGVuYWJsZWQpCi17Ci0gICAgc3RhdGljIGJvb2wgYWN0aXZlID0gZmFsc2U7Ci0gICAgaWYg
KGFjdGl2ZSA9PSBlbmFibGVkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhY3RpdmUgPSBlbmFi
bGVkOwotICAgIGlmIChhY3RpdmUpCi0gICAgICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6
OnNpbmdsZXRvbigpLnNldEF1ZGlvRmFjdG9yeShBVkF1ZGlvQ2FwdHVyZVNvdXJjZTo6ZmFjdG9y
eSgpKTsKLSAgICBlbHNlCi0gICAgICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmds
ZXRvbigpLnNldEF1ZGlvRmFjdG9yeShDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpmYWN0b3J5KCkp
OwotfQotCiBWZWN0b3I8Q2FwdHVyZURldmljZT4mIEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OmNh
cHR1cmVEZXZpY2VzKCkKIHsKICAgICBpZiAoIWlzQXZhaWxhYmxlKCkpCkBAIC0xMzQsMzIgKzEy
MCwzNCBAQCBpbmxpbmUgc3RhdGljIGJvb2wgZGV2aWNlSXNBdmFpbGFibGUoQVZDYXB0dXJlRGV2
aWNlVHlwZWRlZiAqZGV2aWNlKQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEFWQ2FwdHVy
ZURldmljZU1hbmFnZXI6OnJlZnJlc2hDYXB0dXJlRGV2aWNlcygpCit2b2lkIEFWQ2FwdHVyZURl
dmljZU1hbmFnZXI6OnJlZnJlc2hBVkNhcHR1cmVEZXZpY2VzT2ZUeXBlKENhcHR1cmVEZXZpY2U6
OkRldmljZVR5cGUgdHlwZSkKIHsKKyAgICBBU1NFUlQodHlwZSA9PSBDYXB0dXJlRGV2aWNlOjpE
ZXZpY2VUeXBlOjpWaWRlbyB8fCB0eXBlID09IENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OkF1
ZGlvKTsKKworICAgIE5TU3RyaW5nICpwbGF0Zm9ybVR5cGUgPSAodHlwZSA9PSBDYXB0dXJlRGV2
aWNlOjpEZXZpY2VUeXBlOjpWaWRlbykgPyBBVk1lZGlhVHlwZVZpZGVvIDogQVZNZWRpYVR5cGVB
dWRpbzsKKwogICAgIGZvciAoQVZDYXB0dXJlRGV2aWNlVHlwZWRlZiAqcGxhdGZvcm1EZXZpY2Ug
aW4gW2dldEFWQ2FwdHVyZURldmljZUNsYXNzKCkgZGV2aWNlc10pIHsKIAotICAgICAgICBDYXB0
dXJlRGV2aWNlIGNhcHR1cmVEZXZpY2U7Ci0gICAgICAgIGlmICghY2FwdHVyZURldmljZUZyb21E
ZXZpY2VJRChwbGF0Zm9ybURldmljZS51bmlxdWVJRCwgY2FwdHVyZURldmljZSkpIHsKLSAgICAg
ICAgICAgIGJvb2wgaGFzQXVkaW8gPSBbcGxhdGZvcm1EZXZpY2UgaGFzTWVkaWFUeXBlOkFWTWVk
aWFUeXBlQXVkaW9dIHx8IFtwbGF0Zm9ybURldmljZSBoYXNNZWRpYVR5cGU6QVZNZWRpYVR5cGVN
dXhlZF07Ci0gICAgICAgICAgICBib29sIGhhc1ZpZGVvID0gW3BsYXRmb3JtRGV2aWNlIGhhc01l
ZGlhVHlwZTpBVk1lZGlhVHlwZVZpZGVvXSB8fCBbcGxhdGZvcm1EZXZpY2UgaGFzTWVkaWFUeXBl
OkFWTWVkaWFUeXBlTXV4ZWRdOwotICAgICAgICAgICAgaWYgKCFoYXNBdWRpbyAmJiAhaGFzVmlk
ZW8pCi0gICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGJvb2wgaGFzTWF0Y2hpbmdU
eXBlID0gW3BsYXRmb3JtRGV2aWNlIGhhc01lZGlhVHlwZTpwbGF0Zm9ybVR5cGVdIHx8IFtwbGF0
Zm9ybURldmljZSBoYXNNZWRpYVR5cGU6QVZNZWRpYVR5cGVNdXhlZF07CisgICAgICAgIGlmICgh
aGFzTWF0Y2hpbmdUeXBlKQorICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIENh
cHR1cmVEZXZpY2U6OkRldmljZVR5cGUgdHlwZSA9IGhhc1ZpZGVvID8gQ2FwdHVyZURldmljZTo6
RGV2aWNlVHlwZTo6VmlkZW8gOiBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpBdWRpbzsKLSAg
ICAgICAgICAgIENhcHR1cmVEZXZpY2UgY2FwdHVyZURldmljZShwbGF0Zm9ybURldmljZS51bmlx
dWVJRCwgdHlwZSwgcGxhdGZvcm1EZXZpY2UubG9jYWxpemVkTmFtZSk7Ci0gICAgICAgICAgICBj
YXB0dXJlRGV2aWNlLnNldEVuYWJsZWQoZGV2aWNlSXNBdmFpbGFibGUocGxhdGZvcm1EZXZpY2Up
KTsKLSAgICAgICAgICAgIG1fZGV2aWNlcy5hcHBlbmQoY2FwdHVyZURldmljZSk7CisgICAgICAg
IENhcHR1cmVEZXZpY2UgZXhpc3RpbmdDYXB0dXJlRGV2aWNlOworICAgICAgICBpZiAoY2FwdHVy
ZURldmljZUZyb21EZXZpY2VJRChwbGF0Zm9ybURldmljZS51bmlxdWVJRCwgZXhpc3RpbmdDYXB0
dXJlRGV2aWNlKSAmJiBleGlzdGluZ0NhcHR1cmVEZXZpY2UudHlwZSgpID09IHR5cGUpCisgICAg
ICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgaWYgKGhhc1ZpZGVvICYmIGhhc0F1ZGlv
KSB7Ci0gICAgICAgICAgICAgICAgLy8gQWRkIHRoZSBhdWRpbyBjb21wb25lbnQgYXMgYSBzZXBh
cmF0ZSBkZXZpY2UuCi0gICAgICAgICAgICAgICAgQ2FwdHVyZURldmljZSBhdWRpb0NhcHR1cmVE
ZXZpY2UocGxhdGZvcm1EZXZpY2UudW5pcXVlSUQsIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6
OkF1ZGlvLCBwbGF0Zm9ybURldmljZS5sb2NhbGl6ZWROYW1lKTsKLSAgICAgICAgICAgICAgICBj
YXB0dXJlRGV2aWNlLnNldEVuYWJsZWQoZGV2aWNlSXNBdmFpbGFibGUocGxhdGZvcm1EZXZpY2Up
KTsKLSAgICAgICAgICAgICAgICBtX2RldmljZXMuYXBwZW5kKGF1ZGlvQ2FwdHVyZURldmljZSk7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICAgICAgQ2FwdHVyZURldmljZSBjYXB0dXJl
RGV2aWNlKHBsYXRmb3JtRGV2aWNlLnVuaXF1ZUlELCB0eXBlLCBwbGF0Zm9ybURldmljZS5sb2Nh
bGl6ZWROYW1lKTsKKyAgICAgICAgY2FwdHVyZURldmljZS5zZXRFbmFibGVkKGRldmljZUlzQXZh
aWxhYmxlKHBsYXRmb3JtRGV2aWNlKSk7CisgICAgICAgIG1fZGV2aWNlcy5hcHBlbmQoY2FwdHVy
ZURldmljZSk7CiAgICAgfQogfQogCit2b2lkIEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnJlZnJl
c2hDYXB0dXJlRGV2aWNlcygpCit7CisgICAgcmVmcmVzaEFWQ2FwdHVyZURldmljZXNPZlR5cGUo
Q2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6VmlkZW8pOworICAgIHJlZnJlc2hBVkNhcHR1cmVE
ZXZpY2VzT2ZUeXBlKENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OkF1ZGlvKTsKK30KKwogYm9v
bCBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjppc0F2YWlsYWJsZSgpCiB7CiAgICAgcmV0dXJuIEFW
Rm91bmRhdGlvbkxpYnJhcnkoKTsKQEAgLTE4MiwxMiArMTcwLDIwIEBAIEFWQ2FwdHVyZURldmlj
ZU1hbmFnZXI6On5BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyKCkKICAgICBbbV9vYmpjT2JzZXJ2ZXIg
ZGlzY29ubmVjdF07CiB9CiAKLVZlY3RvcjxDYXB0dXJlRGV2aWNlPiBBVkNhcHR1cmVEZXZpY2VN
YW5hZ2VyOjpnZXRTb3VyY2VzSW5mbygpCitWZWN0b3I8Q2FwdHVyZURldmljZT4gQVZDYXB0dXJl
RGV2aWNlTWFuYWdlcjo6Z2V0QXVkaW9Tb3VyY2VzSW5mbygpCiB7CiAgICAgaWYgKCFpc0F2YWls
YWJsZSgpKQogICAgICAgICByZXR1cm4gVmVjdG9yPENhcHR1cmVEZXZpY2U+KCk7CiAKLSAgICBy
ZXR1cm4gQ2FwdHVyZURldmljZU1hbmFnZXI6OmdldFNvdXJjZXNJbmZvKCk7CisgICAgcmV0dXJu
IENhcHR1cmVEZXZpY2VNYW5hZ2VyOjpnZXRBdWRpb1NvdXJjZXNJbmZvKCk7Cit9CisKK1ZlY3Rv
cjxDYXB0dXJlRGV2aWNlPiBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpnZXRWaWRlb1NvdXJjZXNJ
bmZvKCkKK3sKKyAgICBpZiAoIWlzQXZhaWxhYmxlKCkpCisgICAgICAgIHJldHVybiBWZWN0b3I8
Q2FwdHVyZURldmljZT4oKTsKKworICAgIHJldHVybiBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6Z2V0
VmlkZW9Tb3VyY2VzSW5mbygpOwogfQogCiB2b2lkIEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnJl
Z2lzdGVyRm9yRGV2aWNlTm90aWZpY2F0aW9ucygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZURldmljZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZURl
dmljZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uODUyNTMyZDY1ZjIyNTkzMWEwZWI1YzUwNTVjNDc0MDYxNDI3
MjkyNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlRGV2aWNlLmNwcApAQCAtMCwwICsxLDExNyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJDb3JlQXVkaW9DYXB0dXJlRGV2aWNlLmgiCisKKyNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKSAmJiBQTEFURk9STShNQUMpCisKKyNpbmNsdWRlICJDYXB0dXJlRGV2aWNl
TWFuYWdlci5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlIDxBdWRpb1VuaXQvQXVk
aW9Vbml0Lmg+CisjaW5jbHVkZSA8Q29yZU1lZGlhL0NNU3luYy5oPgorCisjaW1wb3J0ICJDb3Jl
TWVkaWFTb2Z0TGluay5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBib29sIGdl
dERldmljZUluZm8odWludDMyX3QgZGV2aWNlSUQsIFN0cmluZyYgcGVyc2lzdGVudElELCBTdHJp
bmcmIGxhYmVsKQoreworICAgIENGU3RyaW5nUmVmIHVuaXF1ZUlEOworICAgIEF1ZGlvT2JqZWN0
UHJvcGVydHlBZGRyZXNzIGFkZHJlc3MgeyBrQXVkaW9EZXZpY2VQcm9wZXJ0eURldmljZVVJRCwg
a0F1ZGlvRGV2aWNlUHJvcGVydHlTY29wZUlucHV0LCBrQXVkaW9PYmplY3RQcm9wZXJ0eUVsZW1l
bnRNYXN0ZXIgfTsKKyAgICBVSW50MzIgZGF0YVNpemUgPSBzaXplb2YodW5pcXVlSUQpOworICAg
IGF1dG8gZXJyID0gQXVkaW9PYmplY3RHZXRQcm9wZXJ0eURhdGEoc3RhdGljX2Nhc3Q8VUludDMy
PihkZXZpY2VJRCksICZhZGRyZXNzLCAwLCBudWxscHRyLCAmZGF0YVNpemUsICZ1bmlxdWVJRCk7
CisgICAgaWYgKGVycikgeworICAgICAgICBMT0coTWVkaWEsICJDb3JlQXVkaW9DYXB0dXJlRGV2
aWNlOjpnZXREZXZpY2VJbmZvIGZhaWxlZCB0byBnZXQgZGV2aWNlIHVuaXF1ZSBpZCB3aXRoIGVy
cm9yICVkICglLjRzKSIsIChpbnQpZXJyLCAoY2hhciopJmVycik7CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisgICAgcGVyc2lzdGVudElEID0gdW5pcXVlSUQ7CisgICAgQ0ZSZWxlYXNl
KHVuaXF1ZUlEKTsKKworICAgIENGU3RyaW5nUmVmIGxvY2FsaXplZE5hbWU7CisgICAgYWRkcmVz
cyA9IHsga0F1ZGlvT2JqZWN0UHJvcGVydHlOYW1lLCBrQXVkaW9PYmplY3RQcm9wZXJ0eVNjb3Bl
R2xvYmFsLCBrQXVkaW9PYmplY3RQcm9wZXJ0eUVsZW1lbnRNYXN0ZXIgfTsKKyAgICBkYXRhU2l6
ZSA9IHNpemVvZihsb2NhbGl6ZWROYW1lKTsKKyAgICBlcnIgPSBBdWRpb09iamVjdEdldFByb3Bl
cnR5RGF0YShzdGF0aWNfY2FzdDxVSW50MzI+KGRldmljZUlEKSwgJmFkZHJlc3MsIDAsIG51bGxw
dHIsICZkYXRhU2l6ZSwgJmxvY2FsaXplZE5hbWUpOworICAgIGlmIChlcnIpIHsKKyAgICAgICAg
TE9HKE1lZGlhLCAiQ29yZUF1ZGlvQ2FwdHVyZURldmljZTo6Z2V0RGV2aWNlSW5mbyBmYWlsZWQg
dG8gZ2V0IGRldmljZSBuYW1lIHdpdGggZXJyb3IgJWQgKCUuNHMpIiwgKGludCllcnIsIChjaGFy
KikmZXJyKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBsYWJlbCA9IGxvY2Fs
aXplZE5hbWU7CisgICAgQ0ZSZWxlYXNlKGxvY2FsaXplZE5hbWUpOworCisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK1JlZlB0cjxDb3JlQXVkaW9DYXB0dXJlRGV2aWNlPiBDb3JlQXVkaW9DYXB0dXJl
RGV2aWNlOjpjcmVhdGUodWludDMyX3QgZGV2aWNlSUQpCit7CisgICAgU3RyaW5nIHBlcnNpc3Rl
bnRJRDsKKyAgICBTdHJpbmcgbGFiZWw7CisgICAgaWYgKCFnZXREZXZpY2VJbmZvKGRldmljZUlE
LCBwZXJzaXN0ZW50SUQsIGxhYmVsKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IENvcmVBdWRpb0NhcHR1cmVEZXZpY2UoZGV2aWNlSUQsIHBlcnNp
c3RlbnRJRCwgbGFiZWwpKTsKK30KKworQ29yZUF1ZGlvQ2FwdHVyZURldmljZTo6Q29yZUF1ZGlv
Q2FwdHVyZURldmljZSh1aW50MzJfdCBkZXZpY2VJRCwgY29uc3QgU3RyaW5nJiBwZXJzaXN0ZW50
SUQsIGNvbnN0IFN0cmluZyYgbGFiZWwpCisgICAgOiBDYXB0dXJlRGV2aWNlKHBlcnNpc3RlbnRJ
RCwgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6QXVkaW8sIGxhYmVsKQorICAgICwgbV9kZXZp
Y2VJRChkZXZpY2VJRCkKK3sKK30KKwordWludDMyX3QgQ29yZUF1ZGlvQ2FwdHVyZURldmljZTo6
ZGV2aWNlSUQoKQoreworICAgIHJldHVybiBtX2RldmljZUlEOworfQorCitSZXRhaW5QdHI8Q01D
bG9ja1JlZj4gQ29yZUF1ZGlvQ2FwdHVyZURldmljZTo6ZGV2aWNlQ2xvY2soKQoreworICAgIGlm
IChtX2RldmljZUNsb2NrKQorICAgICAgICByZXR1cm4gbV9kZXZpY2VDbG9jazsKKworICAgIENN
Q2xvY2tSZWYgY2xvY2s7CisgICAgYXV0byBlcnIgPSBDTUF1ZGlvRGV2aWNlQ2xvY2tDcmVhdGUo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgcGVyc2lzdGVudElkKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQo
KSwgJmNsb2NrKTsKKyAgICBpZiAoZXJyKSB7CisgICAgICAgIExPRyhNZWRpYSwgIkNvcmVBdWRp
b0NhcHR1cmVEZXZpY2U6OkNNQXVkaW9EZXZpY2VDbG9ja0NyZWF0ZSglcCkgQ01BdWRpb0Rldmlj
ZUNsb2NrQ3JlYXRlIGZhaWxlZCB3aXRoIGVycm9yICVkICglLjRzKSIsIHRoaXMsIChpbnQpZXJy
LCAoY2hhciopJmVycik7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIG1f
ZGV2aWNlQ2xvY2sgPSBhZG9wdENGKGNsb2NrKTsKKworICAgIHJldHVybiBtX2RldmljZUNsb2Nr
OworfQorCitib29sIENvcmVBdWRpb0NhcHR1cmVEZXZpY2U6OmlzQWxpdmUoKQoreworICAgIEF1
ZGlvT2JqZWN0UHJvcGVydHlBZGRyZXNzIGFkZHJlc3MgPSB7IGtBdWRpb0RldmljZVByb3BlcnR5
RGV2aWNlSXNBbGl2ZSwga0F1ZGlvT2JqZWN0UHJvcGVydHlTY29wZUdsb2JhbCwga0F1ZGlvT2Jq
ZWN0UHJvcGVydHlFbGVtZW50TWFzdGVyIH07CisgICAgVUludDMyIHN0YXRlID0gMDsKKyAgICBV
SW50MzIgZGF0YVNpemUgPSBzaXplb2Yoc3RhdGUpOworICAgIGlmIChBdWRpb09iamVjdEdldFBy
b3BlcnR5RGF0YShzdGF0aWNfY2FzdDxVSW50MzI+KG1fZGV2aWNlSUQpLCAmYWRkcmVzcywgMCwg
bnVsbHB0ciwgJmRhdGFTaXplLCAmc3RhdGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
cmV0dXJuIHN0YXRlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZURldmljZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1
cmVEZXZpY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43OWVmMTM5Y2VlMjhlNmY0NTlkYzE3OTUyNWQxZmQ0YTkx
NDhhNzVlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVEZXZpY2UuaApAQCAtMCwwICsxLDU5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQTEFURk9STShNQUMpCisKKyNpbmNsdWRlICJD
YXB0dXJlRGV2aWNlLmgiCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgorCit0eXBlZGVmIHN0cnVjdCBPcGFxdWVDTUNsb2NrKiBDTUNsb2Nr
UmVmOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENvcmVBdWRpb0NhcHR1cmVEZXZp
Y2UgOiBwdWJsaWMgQ2FwdHVyZURldmljZSwgcHVibGljIFJlZkNvdW50ZWQ8Q29yZUF1ZGlvQ2Fw
dHVyZURldmljZT4geworcHVibGljOgorCisgICAgc3RhdGljIFJlZlB0cjxDb3JlQXVkaW9DYXB0
dXJlRGV2aWNlPiBjcmVhdGUodWludDMyX3QpOworICAgIHZpcnR1YWwgfkNvcmVBdWRpb0NhcHR1
cmVEZXZpY2UoKSA9IGRlZmF1bHQ7CisKKyAgICB1aW50MzJfdCBkZXZpY2VJRCgpOworICAgIFJl
dGFpblB0cjxDTUNsb2NrUmVmPiBkZXZpY2VDbG9jaygpOworICAgIGJvb2wgaXNBbGl2ZSgpOwor
Citwcml2YXRlOgorICAgIENvcmVBdWRpb0NhcHR1cmVEZXZpY2UodWludDMyX3QsIGNvbnN0IFN0
cmluZyYgcGVyc2lzdGVudElELCBjb25zdCBTdHJpbmcmIGxhYmVsKTsKKworICAgIHVpbnQzMl90
IG1fZGV2aWNlSUQgeyAwIH07CisgICAgUmV0YWluUHRyPENNQ2xvY2tSZWY+IG1fZGV2aWNlQ2xv
Y2s7Cit9OworCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShN
RURJQV9TVFJFQU0pICYmIFBMQVRGT1JNKE1BQykKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2Vy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9D
YXB0dXJlRGV2aWNlTWFuYWdlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjM2Y2MxNTdhNDAwN2E0NzEwYmJm
ZTZiNzc5YjJkOWIzZDFkOTE2NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAK
QEAgLTAsMCArMSwxNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ29yZUF1ZGlvQ2FwdHVyZURl
dmljZU1hbmFnZXIuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFBMQVRGT1JNKE1B
QykKKworI2luY2x1ZGUgIkNvcmVBdWRpb0NhcHR1cmVEZXZpY2UuaCIKKyNpbmNsdWRlICJMb2dn
aW5nLmgiCisjaW5jbHVkZSA8QXVkaW9Vbml0L0F1ZGlvVW5pdC5oPgorI2luY2x1ZGUgPENvcmVN
ZWRpYS9DTVN5bmMuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworI2ltcG9y
dCAiQ29yZU1lZGlhU29mdExpbmsuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitDb3JlQXVk
aW9DYXB0dXJlRGV2aWNlTWFuYWdlciYgQ29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXI6OnNp
bmdsZXRvbigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPENvcmVBdWRpb0NhcHR1cmVE
ZXZpY2VNYW5hZ2VyPiBtYW5hZ2VyOworICAgIHJldHVybiBtYW5hZ2VyOworfQorCitWZWN0b3I8
Q2FwdHVyZURldmljZT4mIENvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyOjpjYXB0dXJlRGV2
aWNlcygpCit7CisgICAgY29yZUF1ZGlvQ2FwdHVyZURldmljZXMoKTsKKyAgICByZXR1cm4gbV9k
ZXZpY2VzOworfQorCitzdGF0aWMgYm9vbCBkZXZpY2VIYXNJbnB1dFN0cmVhbXMoQXVkaW9PYmpl
Y3RJRCBkZXZpY2VJRCkKK3sKKyAgICBVSW50MzIgZGF0YVNpemUgPSAwOworICAgIEF1ZGlvT2Jq
ZWN0UHJvcGVydHlBZGRyZXNzIGFkZHJlc3MgPSB7IGtBdWRpb0RldmljZVByb3BlcnR5U3RyZWFt
cywga0F1ZGlvRGV2aWNlUHJvcGVydHlTY29wZUlucHV0LCBrQXVkaW9PYmplY3RQcm9wZXJ0eUVs
ZW1lbnRNYXN0ZXIgfTsKKyAgICBhdXRvIGVyciA9IEF1ZGlvT2JqZWN0R2V0UHJvcGVydHlEYXRh
U2l6ZShkZXZpY2VJRCwgJmFkZHJlc3MsIDAsIG51bGxwdHIsICZkYXRhU2l6ZSk7CisKKyAgICBy
ZXR1cm4gIWVyciAmJiBkYXRhU2l6ZTsKK30KKworVmVjdG9yPFJlZjxDb3JlQXVkaW9DYXB0dXJl
RGV2aWNlPj4mIENvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyOjpjb3JlQXVkaW9DYXB0dXJl
RGV2aWNlcygpCit7CisgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQ7CisgICAgaWYgKCFpbml0
aWFsaXplZCkgeworICAgICAgICBpbml0aWFsaXplZCA9IHRydWU7CisgICAgICAgIHJlZnJlc2hB
dWRpb0NhcHR1cmVEZXZpY2VzKCk7CisKKyAgICAgICAgQXVkaW9PYmplY3RQcm9wZXJ0eUFkZHJl
c3MgYWRkcmVzcyA9IHsga0F1ZGlvSGFyZHdhcmVQcm9wZXJ0eURldmljZXMsIGtBdWRpb09iamVj
dFByb3BlcnR5U2NvcGVHbG9iYWwsIGtBdWRpb09iamVjdFByb3BlcnR5RWxlbWVudE1hc3RlciB9
OworICAgICAgICBhdXRvIGVyciA9IEF1ZGlvT2JqZWN0QWRkUHJvcGVydHlMaXN0ZW5lcihrQXVk
aW9PYmplY3RTeXN0ZW1PYmplY3QsICZhZGRyZXNzLCBkZXZpY2VzQ2hhbmdlZCwgdGhpcyk7Cisg
ICAgICAgIGlmIChlcnIpCisgICAgICAgICAgICBMT0dfRVJST1IoIkNvcmVBdWRpb0NhcHR1cmVE
ZXZpY2VNYW5hZ2VyOjpkZXZpY2VzKCVwKSBBdWRpb09iamVjdEFkZFByb3BlcnR5TGlzdGVuZXIg
cmV0dXJuZWQgZXJyb3IgJWQgKCUuNHMpIiwgdGhpcywgKGludCllcnIsIChjaGFyKikmZXJyKTsK
KyAgICB9CisKKyAgICByZXR1cm4gbV9jb3JlQXVkaW9DYXB0dXJlRGV2aWNlczsKK30KKwordm9p
ZCBDb3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlcjo6cmVmcmVzaEF1ZGlvQ2FwdHVyZURldmlj
ZXMoKQoreworICAgIEF1ZGlvT2JqZWN0UHJvcGVydHlBZGRyZXNzIGFkZHJlc3MgPSB7IGtBdWRp
b0hhcmR3YXJlUHJvcGVydHlEZXZpY2VzLCBrQXVkaW9PYmplY3RQcm9wZXJ0eVNjb3BlR2xvYmFs
LCBrQXVkaW9PYmplY3RQcm9wZXJ0eUVsZW1lbnRNYXN0ZXIgfTsKKyAgICBVSW50MzIgZGF0YVNp
emUgPSAwOworICAgIGF1dG8gZXJyID0gQXVkaW9PYmplY3RHZXRQcm9wZXJ0eURhdGFTaXplKGtB
dWRpb09iamVjdFN5c3RlbU9iamVjdCwgJmFkZHJlc3MsIDAsIG51bGxwdHIsICZkYXRhU2l6ZSk7
CisgICAgaWYgKGVycikgeworICAgICAgICBMT0coTWVkaWEsICJDb3JlQXVkaW9DYXB0dXJlRGV2
aWNlTWFuYWdlcjo6cmVmcmVzaEF1ZGlvQ2FwdHVyZURldmljZXMoJXApIGZhaWxlZCB0byBnZXQg
c2l6ZSBvZiBkZXZpY2UgbGlzdCAlZCAoJS40cykiLCB0aGlzLCAoaW50KWVyciwgKGNoYXIqKSZl
cnIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc2l6ZV90IGRldmljZUNvdW50ID0g
ZGF0YVNpemUgLyBzaXplb2YoQXVkaW9PYmplY3RJRCk7CisgICAgQXVkaW9PYmplY3RJRCBkZXZp
Y2VJRHNbZGV2aWNlQ291bnRdOworICAgIGVyciA9IEF1ZGlvT2JqZWN0R2V0UHJvcGVydHlEYXRh
KGtBdWRpb09iamVjdFN5c3RlbU9iamVjdCwgJmFkZHJlc3MsIDAsIG51bGxwdHIsICZkYXRhU2l6
ZSwgZGV2aWNlSURzKTsKKyAgICBpZiAoZXJyKSB7CisgICAgICAgIExPRyhNZWRpYSwgIkNvcmVB
dWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyOjpyZWZyZXNoQXVkaW9DYXB0dXJlRGV2aWNlcyglcCkg
ZmFpbGVkIHRvIGdldCBkZXZpY2UgbGlzdCAlZCAoJS40cykiLCB0aGlzLCAoaW50KWVyciwgKGNo
YXIqKSZlcnIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYm9vbCBoYXZlRGV2aWNl
Q2hhbmdlcyA9IGZhbHNlOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGV2aWNlQ291bnQ7
IGkrKykgeworICAgICAgICBBdWRpb09iamVjdElEIGRldmljZUlEID0gZGV2aWNlSURzW2ldOwor
ICAgICAgICBpZiAoIWRldmljZUhhc0lucHV0U3RyZWFtcyhkZXZpY2VJRCkpCisgICAgICAgICAg
ICBjb250aW51ZTsKKworICAgICAgICBpZiAoc3RkOjphbnlfb2YobV9jb3JlQXVkaW9DYXB0dXJl
RGV2aWNlcy5iZWdpbigpLCBtX2NvcmVBdWRpb0NhcHR1cmVEZXZpY2VzLmVuZCgpLCBbZGV2aWNl
SURdKGF1dG8mIGRldmljZSkgeyByZXR1cm4gZGV2aWNlLT5kZXZpY2VJRCgpID09IGRldmljZUlE
OyB9KSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGF1dG8gZGV2aWNlID0gQ29y
ZUF1ZGlvQ2FwdHVyZURldmljZTo6Y3JlYXRlKGRldmljZUlEKTsKKyAgICAgICAgaWYgKCFkZXZp
Y2UpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgbV9jb3JlQXVkaW9DYXB0dXJlRGV2
aWNlcy5hcHBlbmQoZGV2aWNlLnJlbGVhc2VOb25OdWxsKCkpOworCisgICAgICAgIGhhdmVEZXZp
Y2VDaGFuZ2VzID0gdHJ1ZTsKKyAgICB9CisKKyAgICBmb3IgKGF1dG8mIGRldmljZSA6IG1fY29y
ZUF1ZGlvQ2FwdHVyZURldmljZXMpIHsKKyAgICAgICAgYm9vbCBpc0FsaXZlID0gZGV2aWNlLT5p
c0FsaXZlKCk7CisgICAgICAgIGlmIChkZXZpY2UtPmVuYWJsZWQoKSAhPSBpc0FsaXZlKSB7Cisg
ICAgICAgICAgICBkZXZpY2UtPnNldEVuYWJsZWQoaXNBbGl2ZSk7CisgICAgICAgICAgICBoYXZl
RGV2aWNlQ2hhbmdlcyA9IHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoaGF2ZURl
dmljZUNoYW5nZXMpIHsKKyAgICAgICAgbV9kZXZpY2VzID0gVmVjdG9yPENhcHR1cmVEZXZpY2U+
KCk7CisKKyAgICAgICAgZm9yIChhdXRvICZkZXZpY2UgOiBtX2NvcmVBdWRpb0NhcHR1cmVEZXZp
Y2VzKSB7CisgICAgICAgICAgICBDYXB0dXJlRGV2aWNlIGNhcHR1cmVEZXZpY2UoZGV2aWNlLT5w
ZXJzaXN0ZW50SWQoKSwgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6QXVkaW8sIGRldmljZS0+
bGFiZWwoKSk7CisgICAgICAgICAgICBjYXB0dXJlRGV2aWNlLnNldEVuYWJsZWQoZGV2aWNlLT5l
bmFibGVkKCkpOworICAgICAgICAgICAgbV9kZXZpY2VzLmFwcGVuZChjYXB0dXJlRGV2aWNlKTsK
KyAgICAgICAgfQorICAgIH0KK30KKworT1NTdGF0dXMgQ29yZUF1ZGlvQ2FwdHVyZURldmljZU1h
bmFnZXI6OmRldmljZXNDaGFuZ2VkKEF1ZGlvT2JqZWN0SUQsIFVJbnQzMiwgY29uc3QgQXVkaW9P
YmplY3RQcm9wZXJ0eUFkZHJlc3MqLCB2b2lkICp1c2VyRGF0YSkKK3sKKyAgICBzdGF0aWNfY2Fz
dDxDb3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlcio+KHVzZXJEYXRhKS0+cmVmcmVzaEF1ZGlv
Q2FwdHVyZURldmljZXMoKTsKKyAgICByZXR1cm4gMDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgUExBVEZPUk0oTUFDKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVB
dWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
YjRmMTY0YjEyYWIyMjc0ZmVlYzEyZWQ4OGM3ZmM0ZmFlODc3YzFjCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1
cmVEZXZpY2VNYW5hZ2VyLmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkgJiYgUExBVEZPUk0oTUFDKQorCisjaW5jbHVkZSAiQ2FwdHVyZURldmljZS5oIgor
I2luY2x1ZGUgIkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgiCisjaW5jbHVkZSA8Q29yZUF1ZGlvL0Nv
cmVBdWRpby5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIENvcmVBdWRpb0NhcHR1cmVEZXZpY2U7CisKK2NsYXNzIENvcmVBdWRpb0Nh
cHR1cmVEZXZpY2VNYW5hZ2VyIGZpbmFsIDogcHVibGljIENhcHR1cmVEZXZpY2VNYW5hZ2VyIHsK
KyAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8Q29yZUF1ZGlvQ2FwdHVyZURldmljZU1h
bmFnZXI+OworcHVibGljOgorICAgIHN0YXRpYyBDb3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdl
ciYgc2luZ2xldG9uKCk7CisKKyAgICBWZWN0b3I8Q2FwdHVyZURldmljZT4mIGNhcHR1cmVEZXZp
Y2VzKCkgZmluYWw7CisKKyAgICBWZWN0b3I8UmVmPENvcmVBdWRpb0NhcHR1cmVEZXZpY2U+PiYg
Y29yZUF1ZGlvQ2FwdHVyZURldmljZXMoKTsKKworcHJpdmF0ZToKKyAgICBDb3JlQXVkaW9DYXB0
dXJlRGV2aWNlTWFuYWdlcigpID0gZGVmYXVsdDsKKyAgICB+Q29yZUF1ZGlvQ2FwdHVyZURldmlj
ZU1hbmFnZXIoKSA9IGRlZmF1bHQ7CisgICAgCisgICAgc3RhdGljIE9TU3RhdHVzIGRldmljZXND
aGFuZ2VkKEF1ZGlvT2JqZWN0SUQsIFVJbnQzMiwgY29uc3QgQXVkaW9PYmplY3RQcm9wZXJ0eUFk
ZHJlc3MqLCB2b2lkKik7CisKKyAgICB2b2lkIHJlZnJlc2hBdWRpb0NhcHR1cmVEZXZpY2VzKCk7
CisKKyAgICBWZWN0b3I8Q2FwdHVyZURldmljZT4gbV9kZXZpY2VzOworICAgIFZlY3RvcjxSZWY8
Q29yZUF1ZGlvQ2FwdHVyZURldmljZT4+IG1fY29yZUF1ZGlvQ2FwdHVyZURldmljZXM7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFN
ICYmIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmNwcAppbmRl
eCAyOWM3MDExNDM4YzUwNDRhY2JhZjJlNmVhYmU3OTkzYTNkNGZmZDhkLi42M2RmZmJmYjQxNTg3
MjE2YzMxZTNmYjQwZWY1MjE1MGQ2NGI3MDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVT
b3VyY2UuY3BwCkBAIC0zMCw2ICszMCw4IEBACiAKICNpbmNsdWRlICJBdWRpb1NhbXBsZUJ1ZmZl
ckxpc3QuaCIKICNpbmNsdWRlICJBdWRpb1NhbXBsZURhdGFTb3VyY2UuaCIKKyNpbmNsdWRlICJD
b3JlQXVkaW9DYXB0dXJlRGV2aWNlLmgiCisjaW5jbHVkZSAiQ29yZUF1ZGlvQ2FwdHVyZURldmlj
ZU1hbmFnZXIuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVkaWFUaW1lQVZG
b3VuZGF0aW9uLmgiCiAjaW5jbHVkZSA8QXVkaW9Ub29sYm94L0F1ZGlvQ29udmVydGVyLmg+CkBA
IC03OCw3ICs4MCwxNSBAQCBDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpDb3JlQXVkaW9DYXB0dXJl
U291cmNlKGNvbnN0IENhcHR1cmVEZXZpY2UmIGRldmljZUluZm8pCiAgICAgOiBSZWFsdGltZU1l
ZGlhU291cmNlKGVtcHR5U3RyaW5nKCksIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlv
LCBkZXZpY2VJbmZvLmxhYmVsKCkpCiAgICAgLCBtX2NhcHR1cmVEZXZpY2VJRCgwKQogewotICAg
IC8vIEZJWE1FOiB1c2UgZGV2aWNlSW5mbyB0byBzZXQgdGhlIG1fY2FwdHVyZURldmljZUlECisj
aWYgUExBVEZPUk0oTUFDKQorICAgIGZvciAoYXV0byYgcGxhdGZvcm1EZXZpY2UgOiBDb3JlQXVk
aW9DYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkuY29yZUF1ZGlvQ2FwdHVyZURldmlj
ZXMoKSkgeworICAgICAgICBpZiAocGxhdGZvcm1EZXZpY2UtPnBlcnNpc3RlbnRJZCgpID09IGRl
dmljZUluZm8ucGVyc2lzdGVudElkKCkpIHsKKyAgICAgICAgICAgIG1fY2FwdHVyZURldmljZUlE
ID0gcGxhdGZvcm1EZXZpY2UtPmRldmljZUlEKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorICAgIH0KKyAgICBBU1NFUlQobV9jYXB0dXJlRGV2aWNlSUQpOworI2VuZGlmCiAKICAg
ICBzZXRQZXJzaXN0ZW50SUQoZGV2aWNlSW5mby5wZXJzaXN0ZW50SWQoKSk7CiAgICAgc2V0TXV0
ZWQodHJ1ZSk7CkBAIC00MDgsMjQgKzQxOCwyNiBAQCBPU1N0YXR1cyBDb3JlQXVkaW9DYXB0dXJl
U291cmNlOjpzZXR1cEF1ZGlvVW5pdHMoKQogCiB2b2lkIENvcmVBdWRpb0NhcHR1cmVTb3VyY2U6
OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCiB7Ci0gICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2so
bV9pbnRlcm5hbFN0YXRlTG9jayk7Ci0gICAgaWYgKG1faW9Vbml0U3RhcnRlZCkKLSAgICAgICAg
cmV0dXJuOworICAgIHsKKyAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9pbnRl
cm5hbFN0YXRlTG9jayk7CisgICAgICAgIGlmIChtX2lvVW5pdFN0YXJ0ZWQpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgT1NTdGF0dXMgZXJyOworICAgICAgICBpZiAoIW1faW9Vbml0
KSB7CisgICAgICAgICAgICBlcnIgPSBzZXR1cEF1ZGlvVW5pdHMoKTsKKyAgICAgICAgICAgIGlm
IChlcnIpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKLSAgICBPU1N0YXR1
cyBlcnI7Ci0gICAgaWYgKCFtX2lvVW5pdCkgewotICAgICAgICBlcnIgPSBzZXR1cEF1ZGlvVW5p
dHMoKTsKLSAgICAgICAgaWYgKGVycikKKyAgICAgICAgZXJyID0gQXVkaW9PdXRwdXRVbml0U3Rh
cnQobV9pb1VuaXQpOworICAgICAgICBpZiAoZXJyKSB7CisgICAgICAgICAgICBMT0coTWVkaWEs
ICJDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpzdGFydCglcCkgQXVkaW9PdXRwdXRVbml0U3RhcnQg
ZmFpbGVkIHdpdGggZXJyb3IgJWQgKCUuNHMpIiwgdGhpcywgKGludCllcnIsIChjaGFyKikmZXJy
KTsKICAgICAgICAgICAgIHJldHVybjsKLSAgICB9CisgICAgICAgIH0KIAotICAgIGVyciA9IEF1
ZGlvT3V0cHV0VW5pdFN0YXJ0KG1faW9Vbml0KTsKLSAgICBpZiAoZXJyKSB7Ci0gICAgICAgIExP
RyhNZWRpYSwgIkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnN0YXJ0KCVwKSBBdWRpb091dHB1dFVu
aXRTdGFydCBmYWlsZWQgd2l0aCBlcnJvciAlZCAoJS40cykiLCB0aGlzLCAoaW50KWVyciwgKGNo
YXIqKSZlcnIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIG1faW9Vbml0U3RhcnRlZCA9IHRy
dWU7CiAgICAgfQotCi0gICAgbV9pb1VuaXRTdGFydGVkID0gdHJ1ZTsKICAgICBzZXRNdXRlZChm
YWxzZSk7CiB9CiAKQEAgLTQzMywxNCArNDQ1LDE0IEBAIHZvaWQgQ29yZUF1ZGlvQ2FwdHVyZVNv
dXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEoKQogewogICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBs
b2NrKG1faW50ZXJuYWxTdGF0ZUxvY2spOwogCi0gICAgQVNTRVJUKG1faW9Vbml0KTsKLQotICAg
IGF1dG8gZXJyID0gQXVkaW9PdXRwdXRVbml0U3RvcChtX2lvVW5pdCk7Ci0gICAgaWYgKGVycikg
ewotICAgICAgICBMT0coTWVkaWEsICJDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpzdG9wKCVwKSBB
dWRpb091dHB1dFVuaXRTdG9wIGZhaWxlZCB3aXRoIGVycm9yICVkICglLjRzKSIsIHRoaXMsIChp
bnQpZXJyLCAoY2hhciopJmVycik7Ci0gICAgICAgIHJldHVybjsKKyAgICBpZiAobV9pb1VuaXQp
IHsKKyAgICAgICAgYXV0byBlcnIgPSBBdWRpb091dHB1dFVuaXRTdG9wKG1faW9Vbml0KTsKKyAg
ICAgICAgaWYgKGVycikgeworICAgICAgICAgICAgTE9HKE1lZGlhLCAiQ29yZUF1ZGlvQ2FwdHVy
ZVNvdXJjZTo6c3RvcCglcCkgQXVkaW9PdXRwdXRVbml0U3RvcCBmYWlsZWQgd2l0aCBlcnJvciAl
ZCAoJS40cykiLCB0aGlzLCAoaW50KWVyciwgKGNoYXIqKSZlcnIpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisgICAgICAgIG1faW9Vbml0U3RhcnRlZCA9IGZhbHNlOwogICAgIH0K
LSAgICBtX2lvVW5pdFN0YXJ0ZWQgPSBmYWxzZTsKICAgICBzZXRNdXRlZCh0cnVlKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuY3BwCmluZGV4IDE1MDE4
Yzk5OTRlZTA0ODgzNDE0ZmQ1Njk4NWQ4ZDEyZDg0NDkyMWEuLmU4NzUwOGU5NTIxNzVjOTJlODQx
NTUxOTU5YTcyM2EzZmIzNzVlMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlck1hYy5jcHAKQEAgLTMzLDggKzMzLDEwIEBACiAjaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKICNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmgiCiAKKyNpbmNsdWRl
ICJBVkF1ZGlvQ2FwdHVyZVNvdXJjZS5oIgogI2luY2x1ZGUgIkFWQ2FwdHVyZURldmljZU1hbmFn
ZXIuaCIKICNpbmNsdWRlICJBVlZpZGVvQ2FwdHVyZVNvdXJjZS5oIgorI2luY2x1ZGUgIkNvcmVB
dWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiQ29yZUF1ZGlvQ2FwdHVyZVNv
dXJjZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbVByaXZh
dGUuaCIKQEAgLTQyLDYgKzQ0LDI5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAordm9pZCBS
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjOjpzZXRVc2VBVkZvdW5kYXRpb25BdWRpb0NhcHR1
cmUoYm9vbCBlbmFibGVkKQoreworICAgIHN0YXRpYyBib29sIGFjdGl2ZSA9IGZhbHNlOworICAg
IGlmIChhY3RpdmUgPT0gZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYWN0aXZlID0g
ZW5hYmxlZDsKKyAgICBpZiAoYWN0aXZlKSB7CisgICAgICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VD
ZW50ZXI6OnNpbmdsZXRvbigpLnNldEF1ZGlvRmFjdG9yeShBVkF1ZGlvQ2FwdHVyZVNvdXJjZTo6
ZmFjdG9yeSgpKTsKKyAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9u
KCkuc2V0QXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlcihBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpz
aW5nbGV0b24oKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlcjo6c2luZ2xldG9uKCkuc2V0QXVkaW9GYWN0b3J5KENvcmVBdWRpb0NhcHR1cmVTb3VyY2U6
OmZhY3RvcnkoKSk7CisjaWYgUExBVEZPUk0oTUFDKQorICAgICAgICBSZWFsdGltZU1lZGlhU291
cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5zZXRBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyKENvcmVB
dWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKSk7CisjZWxzZQorICAgICAgICAv
LyBGSVhNRSAxNzA4NjE6IFVzZSBBVkF1ZGlvU2Vzc2lvbiB0byBlbnVtZXJhdGUgYXVkaW8gY2Fw
dHVyZSBkZXZpY2VzIG9uIGlPUworICAgICAgICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpz
aW5nbGV0b24oKS5zZXRBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyKEFWQ2FwdHVyZURldmljZU1h
bmFnZXI6OnNpbmdsZXRvbigpKTsKKyNlbmRpZgorICAgIH0KK30KKworCisKIFJlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXImIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnBsYXRmb3JtQ2VudGVy
KCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwpAQCAtNjUsNiArOTAsMTQgQEAgUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYzo6UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYygp
CiAKICAgICBtX2F1ZGlvRmFjdG9yeSA9ICZDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpmYWN0b3J5
KCk7CiAgICAgbV92aWRlb0ZhY3RvcnkgPSAmQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmZhY3Rvcnko
KTsKKworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBtX2F1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIg
PSAmQ29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmdsZXRvbigpOworI2Vsc2UKKyAg
ICAvLyBGSVhNRSAxNzA4NjE6IFVzZSBBVkF1ZGlvU2Vzc2lvbiB0byBlbnVtZXJhdGUgYXVkaW8g
Y2FwdHVyZSBkZXZpY2VzIG9uIGlPUworICAgIG1fYXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlciA9
ICZBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKTsKKyNlbmRpZgorICAgIG1fdmlk
ZW9DYXB0dXJlRGV2aWNlTWFuYWdlciA9ICZBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0
b24oKTsKIH0KIAogUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYzo6flJlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXJNYWMoKQpAQCAtMTAzLDcgKzEzNiw3IEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlck1hYzo6Y3JlYXRlTWVkaWFTdHJlYW0oTmV3TWVkaWFTdHJlYW1IYW5kbGVyIGNv
bXBsCiAgICAgU3RyaW5nIGludmFsaWRDb25zdHJhaW50OwogCiAgICAgaWYgKCFhdWRpb0Rldmlj
ZUlELmlzRW1wdHkoKSkgewotICAgICAgICBhdXRvIGF1ZGlvRGV2aWNlID0gQVZDYXB0dXJlRGV2
aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkuZGV2aWNlV2l0aFVJRChhdWRpb0RldmljZUlELCBSZWFs
dGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbyk7CisgICAgICAgIGF1dG8gYXVkaW9EZXZpY2Ug
PSBtX2F1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXItPmRldmljZVdpdGhVSUQoYXVkaW9EZXZpY2VJ
RCwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6QXVkaW8pOwogICAgICAgICBpZiAoYXVkaW9E
ZXZpY2UgJiYgbV9hdWRpb0ZhY3RvcnkpIHsKICAgICAgICAgICAgIGlmIChhdXRvIGF1ZGlvU291
cmNlID0gbV9hdWRpb0ZhY3RvcnktPmNyZWF0ZU1lZGlhU291cmNlRm9yQ2FwdHVyZURldmljZVdp
dGhDb25zdHJhaW50cyhhdWRpb0RldmljZS52YWx1ZSgpLCBhdWRpb0NvbnN0cmFpbnRzLCBpbnZh
bGlkQ29uc3RyYWludCkpCiAgICAgICAgICAgICAgICAgYXVkaW9Tb3VyY2VzLmFwcGVuZChhdWRp
b1NvdXJjZS5yZWxlYXNlTm9uTnVsbCgpKTsKQEAgLTExNCw3ICsxNDcsNyBAQCB2b2lkIFJlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OmNyZWF0ZU1lZGlhU3RyZWFtKE5ld01lZGlhU3RyZWFt
SGFuZGxlciBjb21wbAogICAgICAgICB9CiAgICAgfQogICAgIGlmICghdmlkZW9EZXZpY2VJRC5p
c0VtcHR5KCkpIHsKLSAgICAgICAgYXV0byB2aWRlb0RldmljZSA9IEFWQ2FwdHVyZURldmljZU1h
bmFnZXI6OnNpbmdsZXRvbigpLmRldmljZVdpdGhVSUQodmlkZW9EZXZpY2VJRCwgUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6VHlwZTo6VmlkZW8pOworICAgICAgICBhdXRvIHZpZGVvRGV2aWNlID0gbV92
aWRlb0NhcHR1cmVEZXZpY2VNYW5hZ2VyLT5kZXZpY2VXaXRoVUlEKHZpZGVvRGV2aWNlSUQsIFJl
YWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvKTsKICAgICAgICAgaWYgKHZpZGVvRGV2aWNl
ICYmIG1fdmlkZW9GYWN0b3J5KSB7CiAgICAgICAgICAgICBpZiAoYXV0byB2aWRlb1NvdXJjZSA9
IG1fdmlkZW9GYWN0b3J5LT5jcmVhdGVNZWRpYVNvdXJjZUZvckNhcHR1cmVEZXZpY2VXaXRoQ29u
c3RyYWludHModmlkZW9EZXZpY2UudmFsdWUoKSwgdmlkZW9Db25zdHJhaW50cywgaW52YWxpZENv
bnN0cmFpbnQpKQogICAgICAgICAgICAgICAgIHZpZGVvU291cmNlcy5hcHBlbmQodmlkZW9Tb3Vy
Y2UucmVsZWFzZU5vbk51bGwoKSk7CkBAIC0xMzMsNyArMTY2LDE1IEBAIHZvaWQgUmVhbHRpbWVN
ZWRpYVNvdXJjZUNlbnRlck1hYzo6Y3JlYXRlTWVkaWFTdHJlYW0oTmV3TWVkaWFTdHJlYW1IYW5k
bGVyIGNvbXBsCiAKIFZlY3RvcjxDYXB0dXJlRGV2aWNlPiBSZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyTWFjOjpnZXRNZWRpYVN0cmVhbURldmljZXMoKQogewotICAgIHJldHVybiBBVkNhcHR1cmVE
ZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5nZXRTb3VyY2VzSW5mbygpOworICAgIFZlY3RvcjxD
YXB0dXJlRGV2aWNlPiByZXN1bHQ7CisKKyAgICBpZiAobV9hdWRpb0NhcHR1cmVEZXZpY2VNYW5h
Z2VyKQorICAgICAgICByZXN1bHQuYXBwZW5kVmVjdG9yKG1fYXVkaW9DYXB0dXJlRGV2aWNlTWFu
YWdlci0+Z2V0QXVkaW9Tb3VyY2VzSW5mbygpKTsKKworICAgIGlmIChtX3ZpZGVvQ2FwdHVyZURl
dmljZU1hbmFnZXIpCisgICAgICAgIHJlc3VsdC5hcHBlbmRWZWN0b3IobV92aWRlb0NhcHR1cmVE
ZXZpY2VNYW5hZ2VyLT5nZXRWaWRlb1NvdXJjZXNJbmZvKCkpOworCisgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAogVmVjdG9yPFN0cmluZz4gUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYzo6YmVz
dFNvdXJjZXNGb3JUeXBlQW5kQ29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSB0
eXBlLCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzJiBjb25zdHJhaW50cywgU3RyaW5nJiBpbnZhbGlk
Q29uc3RyYWludCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5oCmlu
ZGV4IDc2YmM4MjdlNTQ5ZGFmNDJjMTM2YmM3OWYzYWE3MjliZTc0MmI2NTQuLjFiZjQ5N2ZkNmQ3
YzNjMTY2ZmRhODJkZWEyYjEzMWIxM2M4YTQ0ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXJNYWMuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBSZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyTWFjIGZpbmFsIDogcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIg
ewogcHVibGljOgogICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMoKTsKIAorICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNldFVzZUFWRm91bmRhdGlvbkF1ZGlvQ2FwdHVyZShi
b29sIGVuYWJsZWQpOwogcHJpdmF0ZToKICAgICB+UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1h
YygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAppbmRleCBjODQxN2Iw
YzI5ODI0YmIxMWZhODgxMTQwNjA1NjAwNzA2ZmMzYWUxLi4zMmEzNjMxNzhhYmYyZDY5NzM1Mjg5
MWNjMjE2YjQwZmQxMmM1N2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5j
cHAKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0
YS5oPgogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRBVElPTikKLSNp
bmNsdWRlIDxXZWJDb3JlL0FWQ2FwdHVyZURldmljZU1hbmFnZXIuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuaD4KICNlbmRpZgogCiB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKQEAgLTMzNiw3ICszMzYsNyBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlclByb3h5OjpzeW5jV2l0aFdlYkNvcmVQcmVmcygpIGNvbnN0CiAKICNp
ZiBVU0UoQVZGT1VOREFUSU9OKQogICAgIGJvb2wgdXNlQVZGb3VuZGF0aW9uQXVkaW9DYXB0dXJl
ID0gbV9wYWdlLnByZWZlcmVuY2VzKCkudXNlQVZGb3VuZGF0aW9uQXVkaW9DYXB0dXJlKCk7Ci0g
ICAgV2ViQ29yZTo6QVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2V0VXNlQVZGb3VuZGF0aW9uQXVk
aW9DYXB0dXJlKHVzZUFWRm91bmRhdGlvbkF1ZGlvQ2FwdHVyZSk7CisgICAgV2ViQ29yZTo6UmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYzo6c2V0VXNlQVZGb3VuZGF0aW9uQXVkaW9DYXB0dXJl
KHVzZUFWRm91bmRhdGlvbkF1ZGlvQ2FwdHVyZSk7CiAjZW5kaWYKICNlbmRpZgogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>