<?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>180156</bug_id>
          
          <creation_ts>2017-11-29 11:40:44 -0800</creation_ts>
          <short_desc>[MediaStream] Clean up audio and video capture factories</short_desc>
          <delta_ts>2018-01-31 09:41:22 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebRTC</component>
          <version>Other</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="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1375937</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-11-29 11:40:44 -0800</bug_when>
    <thetext>Clean up audio and video capture factories</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1375944</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-11-29 11:42:11 -0800</bug_when>
    <thetext>&lt;rdar://problem/35753435&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1375954</commentid>
    <comment_count>2</comment_count>
      <attachid>327884</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-11-29 12:03:54 -0800</bug_when>
    <thetext>Created attachment 327884
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1375956</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-11-29 12:06:56 -0800</bug_when>
    <thetext>Attachment 327884 did not pass style-queue:


ERROR: Source/WebCore/platform/mediastream/RealtimeMediaSourceSettings.cpp:49:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 1 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1375976</commentid>
    <comment_count>4</comment_count>
      <attachid>327884</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-11-29 12:50:50 -0800</bug_when>
    <thetext>Comment on attachment 327884
Proposed patch

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

&gt; Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.mm:137
&gt; +    RealtimeMediaSourceCenter::singleton().videoFactory().unsetActiveSource(*this);

Maybe we can do without this change (see other lower comments) or find a way to grab the factory that created the source.

&gt; Source/WebCore/platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp:-64
&gt; -    m_supportedConstraints.setSupportsGroupId(true);

We are going from default supportsGroupId being true to being false.
Is that what we want?

&gt; Source/WebCore/platform/mediastream/mac/RealtimeMediaSourceCenterMac.h:53
&gt; +    void unsetAudioFactory(RealtimeMediaSource::AudioCaptureFactory&amp;) override { m_audioFactoryOverride = nullptr; }

should be final.

&gt; Source/WebCore/platform/mock/MockRealtimeAudioSource.cpp:97
&gt; +    RealtimeMediaSourceCenter::singleton().videoFactory().unsetActiveSource(*this);

Should be audioFactory probably.
But do we need that change though?

Previously, we had a tight coupling between the factory and the source set as active/inactive.
Now, we could set an active mock video source to a non-mock video factory if we are switching dynamically the source center audio factory.
There might be an issue here although probably restricted to people switching from/to mock while capturing audio?

&gt; Source/WebCore/platform/mock/MockRealtimeAudioSource.cpp:125
&gt; +    RealtimeMediaSourceCenter::singleton().videoFactory().setActiveSource(*this);

audioFactory as well if we need that change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376001</commentid>
    <comment_count>5</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-11-29 13:32:36 -0800</bug_when>
    <thetext>(In reply to youenn fablet from comment #4)
&gt; Comment on attachment 327884 [details]
&gt; Proposed patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=327884&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.mm:137
&gt; &gt; +    RealtimeMediaSourceCenter::singleton().videoFactory().unsetActiveSource(*this);

If we expose &quot;static VideoCaptureSourceFactoryMac&amp; videoCaptureSourceFactory()&quot; as a static method of RealtimeMediaSourceCenterMac, we could probably write RealtimeMediaSourceCenterMac::videoCaptureSourceFactory().unsetActiveSource(*this);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376048</commentid>
    <comment_count>6</comment_count>
      <attachid>327884</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-11-29 14:47:54 -0800</bug_when>
    <thetext>Comment on attachment 327884
Proposed patch

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

&gt;&gt;&gt; Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.mm:137
&gt;&gt;&gt; +    RealtimeMediaSourceCenter::singleton().videoFactory().unsetActiveSource(*this);
&gt;&gt; 
&gt;&gt; Maybe we can do without this change (see other lower comments) or find a way to grab the factory that created the source.
&gt; 
&gt; If we expose &quot;static VideoCaptureSourceFactoryMac&amp; videoCaptureSourceFactory()&quot; as a static method of RealtimeMediaSourceCenterMac, we could probably write RealtimeMediaSourceCenterMac::videoCaptureSourceFactory().unsetActiveSource(*this);

Good idea, fixed.

&gt;&gt; Source/WebCore/platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp:-64
&gt;&gt; -    m_supportedConstraints.setSupportsGroupId(true);
&gt; 
&gt; We are going from default supportsGroupId being true to being false.
&gt; Is that what we want?

Yes, the we do not support it.

&gt;&gt; Source/WebCore/platform/mediastream/mac/RealtimeMediaSourceCenterMac.h:53
&gt;&gt; +    void unsetAudioFactory(RealtimeMediaSource::AudioCaptureFactory&amp;) override { m_audioFactoryOverride = nullptr; }
&gt; 
&gt; should be final.

Fixed.

&gt;&gt; Source/WebCore/platform/mock/MockRealtimeAudioSource.cpp:97
&gt;&gt; +    RealtimeMediaSourceCenter::singleton().videoFactory().unsetActiveSource(*this);
&gt; 
&gt; Should be audioFactory probably.
&gt; But do we need that change though?
&gt; 
&gt; Previously, we had a tight coupling between the factory and the source set as active/inactive.
&gt; Now, we could set an active mock video source to a non-mock video factory if we are switching dynamically the source center audio factory.
&gt; There might be an issue here although probably restricted to people switching from/to mock while capturing audio?

Oops, fixed.

&gt;&gt; Source/WebCore/platform/mock/MockRealtimeAudioSource.cpp:125
&gt;&gt; +    RealtimeMediaSourceCenter::singleton().videoFactory().setActiveSource(*this);
&gt; 
&gt; audioFactory as well if we need that change.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376049</commentid>
    <comment_count>7</comment_count>
      <attachid>327912</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-11-29 14:48:28 -0800</bug_when>
    <thetext>Created attachment 327912
Patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376050</commentid>
    <comment_count>8</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-11-29 14:50:10 -0800</bug_when>
    <thetext>Attachment 327912 did not pass style-queue:


ERROR: Source/WebCore/platform/mediastream/RealtimeMediaSourceSettings.cpp:49:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WebCore/platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp:48:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 2 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376097</commentid>
    <comment_count>9</comment_count>
      <attachid>327922</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-11-29 16:24:55 -0800</bug_when>
    <thetext>Created attachment 327922
Patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376098</commentid>
    <comment_count>10</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-11-29 16:26:33 -0800</bug_when>
    <thetext>Attachment 327922 did not pass style-queue:


ERROR: Source/WebCore/platform/mediastream/RealtimeMediaSourceSettings.cpp:49:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WebCore/platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp:48:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 2 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376179</commentid>
    <comment_count>11</comment_count>
      <attachid>327943</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-11-29 18:29:09 -0800</bug_when>
    <thetext>Created attachment 327943
Patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376182</commentid>
    <comment_count>12</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-11-29 18:32:04 -0800</bug_when>
    <thetext>Attachment 327943 did not pass style-queue:


ERROR: Source/WebCore/platform/mediastream/RealtimeMediaSourceSettings.cpp:49:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WebCore/platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp:48:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 2 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376188</commentid>
    <comment_count>13</comment_count>
      <attachid>327943</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-11-29 19:36:30 -0800</bug_when>
    <thetext>Comment on attachment 327943
Patch for landing.

Clearing flags on attachment: 327943

Committed r225313: &lt;https://trac.webkit.org/changeset/225313&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327884</attachid>
            <date>2017-11-29 12:03:54 -0800</date>
            <delta_ts>2017-11-29 20:24:22 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>factory_cleanup_patch_1.txt</filename>
            <type>text/plain</type>
            <size>28408</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNTI4MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY4IEBACisyMDE3LTExLTI5ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVhbV0g
Q2xlYW4gdXAgYXVkaW8gYW5kIHZpZGVvIGNhcHR1cmUgZmFjdG9yaWVzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAxNTYKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzM1NzUzNDM1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzZXRBdWRpb0ZhY3Rv
cnkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
cjo6dW5zZXRBdWRpb0ZhY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlcjo6YXVkaW9GYWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNldFZpZGVvRmFjdG9yeSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjp1bnNldFZp
ZGVvRmFjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291
cmNlQ2VudGVyOjp2aWRlb0ZhY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2V0QXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlcik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjp1bnNl
dEF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6YXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlcik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzZXRW
aWRlb0NhcHR1cmVEZXZpY2VNYW5hZ2VyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnVuc2V0VmlkZW9DYXB0dXJlRGV2aWNlTWFuYWdlcik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjp2
aWRlb0NhcHR1cmVEZXZpY2VNYW5hZ2VyKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzZXRBdWRpb0ZhY3RvcnkpOgorICAgICAgICAo
V2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6dW5zZXRBdWRpb0ZhY3RvcnkpOgor
ICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5n
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OmZh
Y2luZ01vZGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdz
Ojp2aWRlb0ZhY2luZ01vZGVFbnVtKToKKyAgICAgICAgKFdlYkNvcmU6OnVzZXJGYWNpbmcpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6ZW52aXJvbm1lbnRGYWNpbmcpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6bGVmdEZhY2luZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpyaWdodEZhY2luZyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmg6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGlt
ZU1lZGlhU291cmNlU2V0dGluZ3M6OlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyk6IERlbGV0
ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291
cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJl
U291cmNlLm1tOgorICAgICAgICAoV2ViQ29yZTo6QVZWaWRlb0NhcHR1cmVTb3VyY2U6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6fkFWVmlkZW9DYXB0
dXJlU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291cmNlOjpzZXR1
cENhcHR1cmVTZXNzaW9uKToKKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBVlZpZGVvQ2FwdHVyZVNvdXJjZUZhY3Rvcnk6OnNldFZpZGVvQ2FwdHVyZVBhZ2VTdGF0ZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjphdlZpZGVvQ2FwdHVyZVNvdXJjZUZhY3Rvcnkp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QVZWaWRlb0NhcHR1cmVTb3VyY2U6OmZhY3Rv
cnkpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnZpZGVvQ2FwdHVy
ZVNvdXJjZUZhY3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlck1hYzo6YXVkaW9GYWN0b3J5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXJNYWM6OnZpZGVvRmFjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyTWFjOjphdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OnZpZGVvQ2FwdHVyZURl
dmljZU1hbmFnZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
ck1hYzo6UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYyk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjOjpkZWZhdWx0QXVkaW9GYWN0b3J5
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJN
YWM6OmRlZmF1bHRWaWRlb0ZhY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYzo6ZGVmYXVsdEF1ZGlvQ2FwdHVyZURldmljZU1hbmFn
ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
ck1hYzo6ZGVmYXVsdFZpZGVvQ2FwdHVyZURldmljZU1hbmFnZXIpOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFj
Lmg6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6fk1vY2tSZWFsdGlt
ZUF1ZGlvU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZUF1ZGlvU291cmNl
OjpzdGFydFByb2R1Y2luZ0RhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFs
dGltZVZpZGVvU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVv
U291cmNlOjp+TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6TW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSk6CisgICAgICAgICogcGxh
dGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5oOgorCiAyMDE3LTExLTI5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgSW50cm9kdWNlIFNlcnZpY2VX
b3JrZXJDb250YWluZXI6OmVuc3VyZVNXQ2xpZW50Q29ubmVjdGlvbigpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAkocmV2aXNpb24gMjI1MjcxKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEzOCw3MCArMTM4LDYgQEAgVmVjdG9yPENhcHR1cmVEZXZpY2U+
IFJlYWx0aW1lTWVkaWFTb3VyYwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgUmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlcjo6c2V0QXVkaW9GYWN0b3J5KFJlYWx0aW1lTWVkaWFTb3VyY2U6
OkF1ZGlvQ2FwdHVyZUZhY3RvcnkmIGZhY3RvcnkpCi17Ci0gICAgbV9hdWRpb0ZhY3RvcnkgPSAm
ZmFjdG9yeTsKLX0KLQotdm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjp1bnNldEF1ZGlv
RmFjdG9yeShSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpb0NhcHR1cmVGYWN0b3J5JiBmYWN0b3J5
KQotewotICAgIGlmIChtX2F1ZGlvRmFjdG9yeSA9PSAmZmFjdG9yeSkKLSAgICAgICAgbV9hdWRp
b0ZhY3RvcnkgPSBudWxscHRyOwotfQotCi1SZWFsdGltZU1lZGlhU291cmNlOjpBdWRpb0NhcHR1
cmVGYWN0b3J5JiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjphdWRpb0ZhY3RvcnkoKQotewot
ICAgIHJldHVybiBtX2F1ZGlvRmFjdG9yeSA/ICptX2F1ZGlvRmFjdG9yeSA6IGRlZmF1bHRBdWRp
b0ZhY3RvcnkoKTsKLX0KLQotdm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzZXRWaWRl
b0ZhY3RvcnkoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW9DYXB0dXJlRmFjdG9yeSYgZmFjdG9y
eSkKLXsKLSAgICBtX3ZpZGVvRmFjdG9yeSA9ICZmYWN0b3J5OwotfQotCi12b2lkIFJlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXI6OnVuc2V0VmlkZW9GYWN0b3J5KFJlYWx0aW1lTWVkaWFTb3VyY2U6
OlZpZGVvQ2FwdHVyZUZhY3RvcnkmIGZhY3RvcnkpCi17Ci0gICAgaWYgKG1fdmlkZW9GYWN0b3J5
ID09ICZmYWN0b3J5KQotICAgICAgICBtX3ZpZGVvRmFjdG9yeSA9IG51bGxwdHI7Ci19Ci0KLVJl
YWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvQ2FwdHVyZUZhY3RvcnkmIFJlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXI6OnZpZGVvRmFjdG9yeSgpCi17Ci0gICAgcmV0dXJuIG1fdmlkZW9GYWN0b3J5ID8g
Km1fdmlkZW9GYWN0b3J5IDogZGVmYXVsdFZpZGVvRmFjdG9yeSgpOwotfQotCi12b2lkIFJlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNldEF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIoQ2FwdHVy
ZURldmljZU1hbmFnZXImIGRldmljZU1hbmFnZXIpCi17Ci0gICAgbV9hdWRpb0NhcHR1cmVEZXZp
Y2VNYW5hZ2VyID0gJmRldmljZU1hbmFnZXI7Ci19Ci0KLXZvaWQgUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlcjo6dW5zZXRBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyKENhcHR1cmVEZXZpY2VNYW5h
Z2VyJiBkZXZpY2VNYW5hZ2VyKQotewotICAgIGlmIChtX2F1ZGlvQ2FwdHVyZURldmljZU1hbmFn
ZXIgPT0gJmRldmljZU1hbmFnZXIpCi0gICAgICAgIG1fYXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdl
ciA9IG51bGxwdHI7Ci19Ci0KLUNhcHR1cmVEZXZpY2VNYW5hZ2VyJiBSZWFsdGltZU1lZGlhU291
cmNlQ2VudGVyOjphdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyKCkKLXsKLSAgICByZXR1cm4gbV9h
dWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyID8gKm1fYXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlciA6
IGRlZmF1bHRBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyKCk7Ci19Ci0KLXZvaWQgUmVhbHRpbWVN
ZWRpYVNvdXJjZUNlbnRlcjo6c2V0VmlkZW9DYXB0dXJlRGV2aWNlTWFuYWdlcihDYXB0dXJlRGV2
aWNlTWFuYWdlciYgZGV2aWNlTWFuYWdlcikKLXsKLSAgICBtX3ZpZGVvQ2FwdHVyZURldmljZU1h
bmFnZXIgPSAmZGV2aWNlTWFuYWdlcjsKLX0KLQotdm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyOjp1bnNldFZpZGVvQ2FwdHVyZURldmljZU1hbmFnZXIoQ2FwdHVyZURldmljZU1hbmFnZXIm
IGRldmljZU1hbmFnZXIpCi17Ci0gICAgaWYgKG1fdmlkZW9DYXB0dXJlRGV2aWNlTWFuYWdlciA9
PSAmZGV2aWNlTWFuYWdlcikKLSAgICAgICAgbV92aWRlb0NhcHR1cmVEZXZpY2VNYW5hZ2VyID0g
bnVsbHB0cjsKLX0KLQotQ2FwdHVyZURldmljZU1hbmFnZXImIFJlYWx0aW1lTWVkaWFTb3VyY2VD
ZW50ZXI6OnZpZGVvQ2FwdHVyZURldmljZU1hbmFnZXIoKQotewotICAgIHJldHVybiBtX3ZpZGVv
Q2FwdHVyZURldmljZU1hbmFnZXIgPyAqbV92aWRlb0NhcHR1cmVEZXZpY2VNYW5hZ2VyIDogZGVm
YXVsdFZpZGVvQ2FwdHVyZURldmljZU1hbmFnZXIoKTsKLX0KLQogc3RhdGljIHZvaWQgYWRkU3Ry
aW5nVG9TSEExKFNIQTEmIHNoYTEsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIGlmIChz
dHJpbmcuaXNFbXB0eSgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaAkocmV2
aXNpb24gMjI1MjcxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAog
LyoKICAqIENvcHlyaWdodCAoQykgMjAxMSBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02OSwyNyArNjksMTQg
QEAgcHVibGljOgogICAgIAogICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRD
b25zdHJhaW50cyYgc3VwcG9ydGVkQ29uc3RyYWludHMoKSB7IHJldHVybiBtX3N1cHBvcnRlZENv
bnN0cmFpbnRzOyB9CiAKLSAgICB2aXJ0dWFsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvQ2Fw
dHVyZUZhY3RvcnkmIGRlZmF1bHRBdWRpb0ZhY3RvcnkoKSA9IDA7Ci0gICAgdmlydHVhbCBSZWFs
dGltZU1lZGlhU291cmNlOjpWaWRlb0NhcHR1cmVGYWN0b3J5JiBkZWZhdWx0VmlkZW9GYWN0b3J5
KCkgPSAwOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzZXRBdWRpb0ZhY3Rvcnko
UmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW9DYXB0dXJlRmFjdG9yeSYpIHsgfQorICAgIFdFQkNP
UkVfRVhQT1JUIHZpcnR1YWwgdm9pZCB1bnNldEF1ZGlvRmFjdG9yeShSZWFsdGltZU1lZGlhU291
cmNlOjpBdWRpb0NhcHR1cmVGYWN0b3J5JikgeyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVh
bCBSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpb0NhcHR1cmVGYWN0b3J5JiBhdWRpb0ZhY3Rvcnko
KSA9IDA7CiAKLSAgICB2aXJ0dWFsIENhcHR1cmVEZXZpY2VNYW5hZ2VyJiBkZWZhdWx0QXVkaW9D
YXB0dXJlRGV2aWNlTWFuYWdlcigpID0gMDsKLSAgICB2aXJ0dWFsIENhcHR1cmVEZXZpY2VNYW5h
Z2VyJiBkZWZhdWx0VmlkZW9DYXB0dXJlRGV2aWNlTWFuYWdlcigpID0gMDsKKyAgICB2aXJ0dWFs
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvQ2FwdHVyZUZhY3RvcnkmIHZpZGVvRmFjdG9yeSgp
ID0gMDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QXVkaW9GYWN0b3J5KFJlYWx0aW1l
TWVkaWFTb3VyY2U6OkF1ZGlvQ2FwdHVyZUZhY3RvcnkmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHVuc2V0QXVkaW9GYWN0b3J5KFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvQ2FwdHVyZUZh
Y3RvcnkmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpb0Nh
cHR1cmVGYWN0b3J5JiBhdWRpb0ZhY3RvcnkoKTsKLQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0VmlkZW9GYWN0b3J5KFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvQ2FwdHVyZUZhY3Rvcnkm
KTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVuc2V0VmlkZW9GYWN0b3J5KFJlYWx0aW1lTWVk
aWFTb3VyY2U6OlZpZGVvQ2FwdHVyZUZhY3RvcnkmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWFs
dGltZU1lZGlhU291cmNlOjpWaWRlb0NhcHR1cmVGYWN0b3J5JiB2aWRlb0ZhY3RvcnkoKTsKLQot
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlcihDYXB0
dXJlRGV2aWNlTWFuYWdlciYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdW5zZXRBdWRpb0Nh
cHR1cmVEZXZpY2VNYW5hZ2VyKENhcHR1cmVEZXZpY2VNYW5hZ2VyJik7Ci0gICAgQ2FwdHVyZURl
dmljZU1hbmFnZXImIGF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIoKTsKLQotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0VmlkZW9DYXB0dXJlRGV2aWNlTWFuYWdlcihDYXB0dXJlRGV2aWNlTWFu
YWdlciYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdW5zZXRWaWRlb0NhcHR1cmVEZXZpY2VN
YW5hZ2VyKENhcHR1cmVEZXZpY2VNYW5hZ2VyJik7Ci0gICAgQ2FwdHVyZURldmljZU1hbmFnZXIm
IHZpZGVvQ2FwdHVyZURldmljZU1hbmFnZXIoKTsKKyAgICB2aXJ0dWFsIENhcHR1cmVEZXZpY2VN
YW5hZ2VyJiBhdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyKCkgPSAwOworICAgIHZpcnR1YWwgQ2Fw
dHVyZURldmljZU1hbmFnZXImIHZpZGVvQ2FwdHVyZURldmljZU1hbmFnZXIoKSA9IDA7CiAKICAg
ICBTdHJpbmcgaGFzaFN0cmluZ1dpdGhTYWx0KGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0IFN0cmlu
ZyYgaGFzaFNhbHQpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8Q2FwdHVyZURl
dmljZT4gY2FwdHVyZURldmljZVdpdGhVbmlxdWVJRChjb25zdCBTdHJpbmcmIGlkLCBjb25zdCBT
dHJpbmcmIGhhc2hTYWx0KTsKQEAgLTEwOCw5ICs5NSw2IEBAIHByb3RlY3RlZDoKICAgICBzdGF0
aWMgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlciYgcGxhdGZvcm1DZW50ZXIoKTsKICAgICBSZWFs
dGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMgbV9zdXBwb3J0ZWRDb25zdHJhaW50
czsKIAotICAgIFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvQ2FwdHVyZUZhY3RvcnkqIG1fYXVk
aW9GYWN0b3J5IHsgbnVsbHB0ciB9OwotICAgIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvQ2Fw
dHVyZUZhY3RvcnkqIG1fdmlkZW9GYWN0b3J5IHsgbnVsbHB0ciB9OwotCiAgICAgQ2FwdHVyZURl
dmljZU1hbmFnZXIqIG1fYXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlciB7IG51bGxwdHIgfTsKICAg
ICBDYXB0dXJlRGV2aWNlTWFuYWdlciogbV92aWRlb0NhcHR1cmVEZXZpY2VNYW5hZ2VyIHsgbnVs
bHB0ciB9OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Jl
YWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmNwcAko
cmV2aXNpb24gMjI1MjcxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNTgg
KzM3LDM0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGNvbnN0IEF0b21pY1N0
cmluZyYgdXNlckZhY2luZygpCitTdHJpbmcgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpm
YWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlIG1v
ZGUpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gdXNlckZhY2lu
ZygidXNlciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHJldHVy
biB1c2VyRmFjaW5nOwotfQotc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgZW52aXJvbm1lbnRG
YWNpbmcoKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGVudmly
b25tZW50RmFjaW5nKCJlbnZpcm9ubWVudCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpOwotICAgIHJldHVybiBlbnZpcm9ubWVudEZhY2luZzsKLX0KLQotc3RhdGljIGNvbnN0
IEF0b21pY1N0cmluZyYgbGVmdEZhY2luZygpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEF0b21pY1N0cmluZz4gbGVmdEZhY2luZygibGVmdCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpOwotICAgIHJldHVybiBsZWZ0RmFjaW5nOwotfQotCi1zdGF0aWMgY29uc3Qg
QXRvbWljU3RyaW5nJiByaWdodEZhY2luZygpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEF0b21pY1N0cmluZz4gcmlnaHRGYWNpbmcoInJpZ2h0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIHJpZ2h0RmFjaW5nOwotfQotCi1jb25zdCBBdG9t
aWNTdHJpbmcmIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6ZmFjaW5nTW9kZShSZWFsdGlt
ZU1lZGlhU291cmNlU2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9kZSBtb2RlKQotewotICAgIHN3aXRj
aCAobW9kZSkgewotICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpVc2VyOgot
ICAgICAgICByZXR1cm4gdXNlckZhY2luZygpOwotICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJj
ZVNldHRpbmdzOjpFbnZpcm9ubWVudDoKLSAgICAgICAgcmV0dXJuIGVudmlyb25tZW50RmFjaW5n
KCk7Ci0gICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkxlZnQ6Ci0gICAgICAg
IHJldHVybiBsZWZ0RmFjaW5nKCk7Ci0gICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3M6OlJpZ2h0OgotICAgICAgICByZXR1cm4gcmlnaHRGYWNpbmcoKTsKLSAgICBjYXNlIFJlYWx0
aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VW5rbm93bjoKLSAgICAgICAgcmV0dXJuIGVtcHR5QXRv
bSgpOwotICAgIH0KLSAgICAKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4g
ZW1wdHlBdG9tKCk7CisgICAgc3RhdGljIGNvbnN0IE5ldmVyRGVzdHJveWVkPFN0cmluZz4gdmFs
dWVzW10gPSB7CisgICAgICAgIE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJ1bmtub3duIiksCisg
ICAgICAgIE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJ1c2VyIiksCisgICAgICAgIE1BS0VfU1RB
VElDX1NUUklOR19JTVBMKCJlbnZpcm9ubWVudCIpLAorICAgICAgICBNQUtFX1NUQVRJQ19TVFJJ
TkdfSU1QTCgibGVmdCIpLAorICAgICAgICBNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgicmlnaHQi
KSwKKyAgICB9OworICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihSZWFsdGlt
ZU1lZGlhU291cmNlU2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9kZTo6VW5rbm93bikgPT0gMCwgIlJl
YWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlOjpVbmtub3duIGlzIG5v
dCAwIGFzIGV4cGVjdGVkIik7CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+
KFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlOjpVc2VyKSA9PSAx
LCAiUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0ZhY2luZ01vZGU6OlVzZXIgaXMg
bm90IDEgYXMgZXhwZWN0ZWQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVf
dD4oUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0ZhY2luZ01vZGU6OkVudmlyb25t
ZW50KSA9PSAyLCAiUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0ZhY2luZ01vZGU6
OkVudmlyb25tZW50IGlzIG5vdCAyIGFzIGV4cGVjdGVkIik7CisgICAgc3RhdGljX2Fzc2VydChz
dGF0aWNfY2FzdDxzaXplX3Q+KFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNp
bmdNb2RlOjpMZWZ0KSA9PSAzLCAiUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0Zh
Y2luZ01vZGU6OkxlZnQgaXMgbm90IDMgYXMgZXhwZWN0ZWQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0
KHN0YXRpY19jYXN0PHNpemVfdD4oUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0Zh
Y2luZ01vZGU6OlJpZ2h0KSA9PSA0LCAiUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRl
b0ZhY2luZ01vZGU6OlJpZ2h0IGlzIG5vdCA0IGFzIGV4cGVjdGVkIik7CisgICAgQVNTRVJUKHN0
YXRpY19jYXN0PHNpemVfdD4obW9kZSkgPCBXVEZfQVJSQVlfTEVOR1RIKHZhbHVlcykpOworICAg
IHJldHVybiB2YWx1ZXNbc3RhdGljX2Nhc3Q8c2l6ZV90Pihtb2RlKV07CiB9CiAKIFJlYWx0aW1l
TWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlIFJlYWx0aW1lTWVkaWFTb3VyY2VT
ZXR0aW5nczo6dmlkZW9GYWNpbmdNb2RlRW51bShjb25zdCBTdHJpbmcmIG1vZGUpCiB7Ci0gICAg
aWYgKG1vZGUgPT0gdXNlckZhY2luZygpKQotICAgICAgICByZXR1cm4gUmVhbHRpbWVNZWRpYVNv
dXJjZVNldHRpbmdzOjpVc2VyOwotICAgIGlmIChtb2RlID09IGVudmlyb25tZW50RmFjaW5nKCkp
Ci0gICAgICAgIHJldHVybiBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkVudmlyb25tZW50
OwotICAgIGlmIChtb2RlID09IGxlZnRGYWNpbmcoKSkKLSAgICAgICAgcmV0dXJuIFJlYWx0aW1l
TWVkaWFTb3VyY2VTZXR0aW5nczo6TGVmdDsKLSAgICBpZiAobW9kZSA9PSByaWdodEZhY2luZygp
KQotICAgICAgICByZXR1cm4gUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpSaWdodDsKKyAg
ICBpZiAobW9kZSA9PSAidXNlciIpCisgICAgICAgIHJldHVybiBSZWFsdGltZU1lZGlhU291cmNl
U2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9kZTo6VXNlcjsKKyAgICBpZiAobW9kZSA9PSAiZW52aXJv
bm1lbnQiKQorICAgICAgICByZXR1cm4gUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRl
b0ZhY2luZ01vZGU6OkVudmlyb25tZW50OworICAgIGlmIChtb2RlID09ICJsZWZ0IikKKyAgICAg
ICAgcmV0dXJuIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlOjpM
ZWZ0OworICAgIGlmIChtb2RlID09ICJyaWdodCIpCisgICAgICAgIHJldHVybiBSZWFsdGltZU1l
ZGlhU291cmNlU2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9kZTo6UmlnaHQ7CiAKICAgICByZXR1cm4g
UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpVbmtub3duOwogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRp
bWVNZWRpYVNvdXJjZVNldHRpbmdzLmgJKHJldmlzaW9uIDIyNTI3MSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oCSh3
b3JraW5nIGNvcHkpCkBAIC00MSwxMyArNDEsMTAgQEAgcHVibGljOgogICAgIGVudW0gU291cmNl
VHlwZSB7IE5vbmUsIENhbWVyYSwgTWljcm9waG9uZSB9OwogICAgIGVudW0gVmlkZW9GYWNpbmdN
b2RlIHsgVW5rbm93biwgVXNlciwgRW52aXJvbm1lbnQsIExlZnQsIFJpZ2h0IH07CiAKLSAgICBz
dGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBmYWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VT
ZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlKTsKLQorICAgIHN0YXRpYyBTdHJpbmcgZmFjaW5nTW9k
ZShSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9kZSk7CiAgICAgc3Rh
dGljIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlIHZpZGVvRmFj
aW5nTW9kZUVudW0oY29uc3QgU3RyaW5nJik7CiAKLSAgICBleHBsaWNpdCBSZWFsdGltZU1lZGlh
U291cmNlU2V0dGluZ3MoKQotICAgIHsKLSAgICB9CisgICAgZXhwbGljaXQgUmVhbHRpbWVNZWRp
YVNvdXJjZVNldHRpbmdzKCkgPSBkZWZhdWx0OwogCiAgICAgYm9vbCBzdXBwb3J0c1dpZHRoKCkg
Y29uc3QgeyByZXR1cm4gbV9zdXBwb3J0ZWRDb25zdHJhaW50cy5zdXBwb3J0c1dpZHRoKCk7IH0K
ICAgICB1aW50MzJfdCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGg7IH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJj
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oCShyZXZpc2lvbiAyMjUyNzEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UuaAkod29y
a2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBjbGFzcyBQaXhlbEJ1ZmZlckNvbmZvcm1lckNW
OwogCiBjbGFzcyBBVlZpZGVvQ2FwdHVyZVNvdXJjZSA6IHB1YmxpYyBBVk1lZGlhQ2FwdHVyZVNv
dXJjZSwgcHJpdmF0ZSBPcmllbnRhdGlvbk5vdGlmaWVyOjpPYnNlcnZlciB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIENhcHR1cmVTb3VyY2VPckVycm9yIGNyZWF0ZShBVkNhcHR1cmVEZXZpY2UqLCBj
b25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzKik7CisgICAgc3RhdGlj
IENhcHR1cmVTb3VyY2VPckVycm9yIGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBN
ZWRpYUNvbnN0cmFpbnRzKik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgVmlkZW9DYXB0
dXJlRmFjdG9yeSYgZmFjdG9yeSgpOwogCkBAIC04OSw4ICs4OSw2IEBAIHByaXZhdGU6CiAgICAg
UmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBtX2J1ZmZlcjsKICAgICBSZXRhaW5QdHI8QVZD
YXB0dXJlVmlkZW9EYXRhT3V0cHV0PiBtX3ZpZGVvT3V0cHV0OwogCi0gICAgc3RkOjp1bmlxdWVf
cHRyPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+IG1fcGl4ZWxCdWZmZXJDb25mb3JtZXI7Ci0KICAg
ICBpbnQzMl90IG1fd2lkdGggeyAwIH07CiAgICAgaW50MzJfdCBtX2hlaWdodCB7IDAgfTsKICAg
ICBpbnQgbV9zZW5zb3JPcmllbnRhdGlvbiB7IDAgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1
cmVTb3VyY2UubW0JKHJldmlzaW9uIDIyNTI3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbQkod29ya2luZyBjb3B5KQpA
QCAtMTEwLDMxICsxMTAsMTIgQEAgY29uc3QgT1NUeXBlIHZpZGVvQ2FwdHVyZUZvcm1hdCA9IGtD
VlBpeAogY29uc3QgT1NUeXBlIHZpZGVvQ2FwdHVyZUZvcm1hdCA9IGtDVlBpeGVsRm9ybWF0VHlw
ZV80MjBZcENiQ3I4QmlQbGFuYXJGdWxsUmFuZ2U7CiAjZW5kaWYKIAotY2xhc3MgQVZWaWRlb0Nh
cHR1cmVTb3VyY2VGYWN0b3J5IDogcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvQ2Fw
dHVyZUZhY3RvcnkKLSNpZiBQTEFURk9STShJT1MpCi0gICAgLCBwdWJsaWMgUmVhbHRpbWVNZWRp
YVNvdXJjZTo6U2luZ2xlU291cmNlRmFjdG9yeTxBVlZpZGVvQ2FwdHVyZVNvdXJjZT4KLSNlbmRp
ZgorQ2FwdHVyZVNvdXJjZU9yRXJyb3IgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmNyZWF0ZShjb25z
dCBBdG9taWNTdHJpbmcmIGlkLCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzKiBjb25zdHJhaW50cykK
IHsKLXB1YmxpYzoKLSAgICBDYXB0dXJlU291cmNlT3JFcnJvciBjcmVhdGVWaWRlb0NhcHR1cmVT
b3VyY2UoY29uc3QgU3RyaW5nJiBkZXZpY2VJRCwgY29uc3QgTWVkaWFDb25zdHJhaW50cyogY29u
c3RyYWludHMpIGZpbmFsIHsKLSAgICAgICAgQVZDYXB0dXJlRGV2aWNlVHlwZWRlZiAqZGV2aWNl
ID0gW2dldEFWQ2FwdHVyZURldmljZUNsYXNzKCkgZGV2aWNlV2l0aFVuaXF1ZUlEOmRldmljZUlE
XTsKLSAgICAgICAgaWYgKCFkZXZpY2UpCi0gICAgICAgICAgICByZXR1cm4geyB9OwotICAgICAg
ICByZXR1cm4gQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmNyZWF0ZShkZXZpY2UsIGRldmljZUlELCBj
b25zdHJhaW50cyk7Ci0gICAgfQotCi0jaWYgUExBVEZPUk0oSU9TKQotcHJpdmF0ZToKLSAgICB2
b2lkIHNldFZpZGVvQ2FwdHVyZVBhZ2VTdGF0ZShib29sIGludGVycnVwdGVkLCBib29sIHBhZ2VN
dXRlZCkKLSAgICB7Ci0gICAgICAgIGlmIChhY3RpdmVTb3VyY2UoKSkKLSAgICAgICAgICAgIGFj
dGl2ZVNvdXJjZSgpLT5zZXRJbnRlcnJ1cHRlZChpbnRlcnJ1cHRlZCwgcGFnZU11dGVkKTsKLSAg
ICB9Ci0jZW5kaWYKLX07CisgICAgQVZDYXB0dXJlRGV2aWNlVHlwZWRlZiAqZGV2aWNlID0gW2dl
dEFWQ2FwdHVyZURldmljZUNsYXNzKCkgZGV2aWNlV2l0aFVuaXF1ZUlEOmlkXTsKKyAgICBpZiAo
IWRldmljZSkKKyAgICAgICAgcmV0dXJuIHsgfTsKIAotQ2FwdHVyZVNvdXJjZU9yRXJyb3IgQVZW
aWRlb0NhcHR1cmVTb3VyY2U6OmNyZWF0ZShBVkNhcHR1cmVEZXZpY2VUeXBlZGVmKiBkZXZpY2Us
IGNvbnN0IEF0b21pY1N0cmluZyYgaWQsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMqIGNvbnN0cmFp
bnRzKQotewogICAgIGF1dG8gc291cmNlID0gYWRvcHRSZWYoKm5ldyBBVlZpZGVvQ2FwdHVyZVNv
dXJjZShkZXZpY2UsIGlkKSk7CiAgICAgaWYgKGNvbnN0cmFpbnRzKSB7CiAgICAgICAgIGF1dG8g
cmVzdWx0ID0gc291cmNlLT5hcHBseUNvbnN0cmFpbnRzKCpjb25zdHJhaW50cyk7CkBAIC0xNDUs
MTcgKzEyNiw2IEBAIENhcHR1cmVTb3VyY2VPckVycm9yIEFWVmlkZW9DYXB0dXJlU291cmMKICAg
ICByZXR1cm4gQ2FwdHVyZVNvdXJjZU9yRXJyb3IoV1RGTW92ZShzb3VyY2UpKTsKIH0KIAotc3Rh
dGljIEFWVmlkZW9DYXB0dXJlU291cmNlRmFjdG9yeSYgYXZWaWRlb0NhcHR1cmVTb3VyY2VGYWN0
b3J5KCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QVZWaWRlb0NhcHR1cmVTb3VyY2VG
YWN0b3J5PiBmYWN0b3J5OwotICAgIHJldHVybiBmYWN0b3J5LmdldCgpOwotfQotCi1SZWFsdGlt
ZU1lZGlhU291cmNlOjpWaWRlb0NhcHR1cmVGYWN0b3J5JiBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6
ZmFjdG9yeSgpCi17Ci0gICAgcmV0dXJuIGF2VmlkZW9DYXB0dXJlU291cmNlRmFjdG9yeSgpOwot
fQotCiBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6QVZWaWRlb0NhcHR1cmVTb3VyY2UoQVZDYXB0dXJl
RGV2aWNlVHlwZWRlZiogZGV2aWNlLCBjb25zdCBBdG9taWNTdHJpbmcmIGlkKQogICAgIDogQVZN
ZWRpYUNhcHR1cmVTb3VyY2UoZGV2aWNlLCBpZCwgVHlwZTo6VmlkZW8pCiB7CkBAIC0xNjQsNyAr
MTM0LDcgQEAgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OkFWVmlkZW9DYXB0dXJlU291cgogQVZWaWRl
b0NhcHR1cmVTb3VyY2U6On5BVlZpZGVvQ2FwdHVyZVNvdXJjZSgpCiB7CiAjaWYgUExBVEZPUk0o
SU9TKQotICAgIGF2VmlkZW9DYXB0dXJlU291cmNlRmFjdG9yeSgpLnVuc2V0QWN0aXZlU291cmNl
KCp0aGlzKTsKKyAgICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS52aWRl
b0ZhY3RvcnkoKS51bnNldEFjdGl2ZVNvdXJjZSgqdGhpcyk7CiAjZW5kaWYKIH0KIApAQCAtNDE0
LDcgKzM4NCw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IHNlbnNvck9yaWVudGF0aW9uRnJvbVYKIGJv
b2wgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNldHVwQ2FwdHVyZVNlc3Npb24oKQogewogI2lmIFBM
QVRGT1JNKElPUykKLSAgICBhdlZpZGVvQ2FwdHVyZVNvdXJjZUZhY3RvcnkoKS5zZXRBY3RpdmVT
b3VyY2UoKnRoaXMpOworICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigp
LnZpZGVvRmFjdG9yeSgpLnNldEFjdGl2ZVNvdXJjZSgqdGhpcyk7CiAjZW5kaWYKIAogICAgIE5T
RXJyb3IgKmVycm9yID0gbmlsOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291
cmNlQ2VudGVyTWFjLmNwcAkocmV2aXNpb24gMjI1MjcxKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCwzMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
K2NsYXNzIFZpZGVvQ2FwdHVyZVNvdXJjZUZhY3RvcnlNYWMgZmluYWwgOiBwdWJsaWMgUmVhbHRp
bWVNZWRpYVNvdXJjZTo6VmlkZW9DYXB0dXJlRmFjdG9yeQorI2lmIFBMQVRGT1JNKElPUykKKyAg
ICAsIHB1YmxpYyBSZWFsdGltZU1lZGlhU291cmNlOjpTaW5nbGVTb3VyY2VGYWN0b3J5PERpc3Bs
YXlDYXB0dXJlU291cmNlPgorI2VuZGlmCit7CitwdWJsaWM6CisgICAgQ2FwdHVyZVNvdXJjZU9y
RXJyb3IgY3JlYXRlVmlkZW9DYXB0dXJlU291cmNlKGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0IE1l
ZGlhQ29uc3RyYWludHMqIGNvbnN0cmFpbnRzKSBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJu
IEFWVmlkZW9DYXB0dXJlU291cmNlOjpjcmVhdGUoaWQsIGNvbnN0cmFpbnRzKTsKKyAgICB9CisK
KyNpZiBQTEFURk9STShJT1MpCitwcml2YXRlOgorICAgIHZvaWQgc2V0VmlkZW9DYXB0dXJlUGFn
ZVN0YXRlKGJvb2wgaW50ZXJydXB0ZWQsIGJvb2wgcGFnZU11dGVkKQorICAgIHsKKyAgICAgICAg
aWYgKGFjdGl2ZVNvdXJjZSgpKQorICAgICAgICAgICAgYWN0aXZlU291cmNlKCktPnNldEludGVy
cnVwdGVkKGludGVycnVwdGVkLCBwYWdlTXV0ZWQpOworICAgIH0KKyNlbmRpZgorfTsKKworc3Rh
dGljIFZpZGVvQ2FwdHVyZVNvdXJjZUZhY3RvcnlNYWMmIHZpZGVvQ2FwdHVyZVNvdXJjZUZhY3Rv
cnkoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWaWRlb0NhcHR1cmVTb3VyY2VGYWN0
b3J5TWFjPiBmYWN0b3J5OworICAgIHJldHVybiBmYWN0b3J5LmdldCgpOworfQorCiBSZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyTWFjJiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjOjpzaW5n
bGV0b24oKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CkBAIC01NiwyOCArODMsMjUg
QEAgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlciYgUmVhbHRpbWVNZWRpYQogICAgIHJldHVybiBS
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjOjpzaW5nbGV0b24oKTsKIH0KIAotUmVhbHRpbWVN
ZWRpYVNvdXJjZUNlbnRlck1hYzo6UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYygpCi17Ci0g
ICAgbV9zdXBwb3J0ZWRDb25zdHJhaW50cy5zZXRTdXBwb3J0c1NhbXBsZVJhdGUoZmFsc2UpOwot
ICAgIG1fc3VwcG9ydGVkQ29uc3RyYWludHMuc2V0U3VwcG9ydHNTYW1wbGVTaXplKGZhbHNlKTsK
LSAgICBtX3N1cHBvcnRlZENvbnN0cmFpbnRzLnNldFN1cHBvcnRzRWNob0NhbmNlbGxhdGlvbihm
YWxzZSk7Ci0gICAgbV9zdXBwb3J0ZWRDb25zdHJhaW50cy5zZXRTdXBwb3J0c0dyb3VwSWQodHJ1
ZSk7Ci19CitSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjOjpSZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyTWFjKCkgPSBkZWZhdWx0OwogCiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjOjp+
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYygpID0gZGVmYXVsdDsKIAogCi1SZWFsdGltZU1l
ZGlhU291cmNlOjpBdWRpb0NhcHR1cmVGYWN0b3J5JiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
TWFjOjpkZWZhdWx0QXVkaW9GYWN0b3J5KCkKK1JlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvQ2Fw
dHVyZUZhY3RvcnkmIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OmF1ZGlvRmFjdG9yeSgp
CiB7CisgICAgaWYgKG1fYXVkaW9GYWN0b3J5T3ZlcnJpZGUpCisgICAgICAgIHJldHVybiAqbV9h
dWRpb0ZhY3RvcnlPdmVycmlkZTsKKwogICAgIHJldHVybiBDb3JlQXVkaW9DYXB0dXJlU291cmNl
OjpmYWN0b3J5KCk7CiB9CiAKLVJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvQ2FwdHVyZUZhY3Rv
cnkmIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OmRlZmF1bHRWaWRlb0ZhY3RvcnkoKQor
UmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW9DYXB0dXJlRmFjdG9yeSYgUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlck1hYzo6dmlkZW9GYWN0b3J5KCkKIHsKLSAgICByZXR1cm4gQVZWaWRlb0NhcHR1
cmVTb3VyY2U6OmZhY3RvcnkoKTsKKyAgICByZXR1cm4gdmlkZW9DYXB0dXJlU291cmNlRmFjdG9y
eSgpOwogfQogCi1DYXB0dXJlRGV2aWNlTWFuYWdlciYgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
ck1hYzo6ZGVmYXVsdEF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIoKQorQ2FwdHVyZURldmljZU1h
bmFnZXImIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OmF1ZGlvQ2FwdHVyZURldmljZU1h
bmFnZXIoKQogewogI2lmIFBMQVRGT1JNKE1BQykKICAgICByZXR1cm4gQ29yZUF1ZGlvQ2FwdHVy
ZURldmljZU1hbmFnZXI6OnNpbmdsZXRvbigpOwpAQCAtODYsNyArMTEwLDcgQEAgQ2FwdHVyZURl
dmljZU1hbmFnZXImIFJlYWx0aW1lTWVkaWFTb3VyYwogI2VuZGlmCiB9CiAKLUNhcHR1cmVEZXZp
Y2VNYW5hZ2VyJiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjOjpkZWZhdWx0VmlkZW9DYXB0
dXJlRGV2aWNlTWFuYWdlcigpCitDYXB0dXJlRGV2aWNlTWFuYWdlciYgUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlck1hYzo6dmlkZW9DYXB0dXJlRGV2aWNlTWFuYWdlcigpCiB7CiAgICAgcmV0dXJu
IEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmdsZXRvbigpOwogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJN
YWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5oCShyZXZpc2lvbiAyMjUyNzEpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlck1hYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMy0yMDE2IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMtMjAxNyBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00OSwxMSArNDksMTcgQEAgcHJpdmF0
ZToKICAgICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjKCk7CiAgICAgflJlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXJNYWMoKTsKIAotICAgIFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvQ2Fw
dHVyZUZhY3RvcnkmIGRlZmF1bHRBdWRpb0ZhY3RvcnkoKSBmaW5hbDsKLSAgICBSZWFsdGltZU1l
ZGlhU291cmNlOjpWaWRlb0NhcHR1cmVGYWN0b3J5JiBkZWZhdWx0VmlkZW9GYWN0b3J5KCkgZmlu
YWw7CisgICAgdm9pZCBzZXRBdWRpb0ZhY3RvcnkoUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW9D
YXB0dXJlRmFjdG9yeSYgZmFjdG9yeSkgb3ZlcnJpZGUgeyBtX2F1ZGlvRmFjdG9yeU92ZXJyaWRl
ID0gJmZhY3Rvcnk7IH0KKyAgICB2b2lkIHVuc2V0QXVkaW9GYWN0b3J5KFJlYWx0aW1lTWVkaWFT
b3VyY2U6OkF1ZGlvQ2FwdHVyZUZhY3RvcnkmKSBvdmVycmlkZSB7IG1fYXVkaW9GYWN0b3J5T3Zl
cnJpZGUgPSBudWxscHRyOyB9CisKKyAgICBSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpb0NhcHR1
cmVGYWN0b3J5JiBhdWRpb0ZhY3RvcnkoKSBmaW5hbDsKKyAgICBSZWFsdGltZU1lZGlhU291cmNl
OjpWaWRlb0NhcHR1cmVGYWN0b3J5JiB2aWRlb0ZhY3RvcnkoKSBmaW5hbDsKKworICAgIENhcHR1
cmVEZXZpY2VNYW5hZ2VyJiBhdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyKCkgZmluYWw7CisgICAg
Q2FwdHVyZURldmljZU1hbmFnZXImIHZpZGVvQ2FwdHVyZURldmljZU1hbmFnZXIoKSBmaW5hbDsK
KworICAgIFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvQ2FwdHVyZUZhY3RvcnkqIG1fYXVkaW9G
YWN0b3J5T3ZlcnJpZGUgeyBudWxscHRyIH07CiAKLSAgICBDYXB0dXJlRGV2aWNlTWFuYWdlciYg
ZGVmYXVsdEF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIoKSBmaW5hbDsKLSAgICBDYXB0dXJlRGV2
aWNlTWFuYWdlciYgZGVmYXVsdFZpZGVvQ2FwdHVyZURldmljZU1hbmFnZXIoKSBmaW5hbDsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuY3BwCShyZXZpc2lv
biAyMjUyNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1
ZGlvU291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC05NCw3ICs5NCw3IEBAIE1vY2tSZWFsdGltZUF1
ZGlvU291cmNlOjpNb2NrUmVhbHRpbWVBdWQKIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjp+TW9j
a1JlYWx0aW1lQXVkaW9Tb3VyY2UoKQogewogI2lmIFBMQVRGT1JNKElPUykKLSAgICBtb2NrQXVk
aW9DYXB0dXJlU291cmNlRmFjdG9yeSgpLnVuc2V0QWN0aXZlU291cmNlKCp0aGlzKTsKKyAgICBS
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS52aWRlb0ZhY3RvcnkoKS51bnNl
dEFjdGl2ZVNvdXJjZSgqdGhpcyk7CiAjZW5kaWYKIH0KIApAQCAtMTIyLDcgKzEyMiw3IEBAIHZv
aWQgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OmluaXRpYWxpemUKIHZvaWQgTW9ja1JlYWx0aW1l
QXVkaW9Tb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCiB7CiAjaWYgUExBVEZPUk0oSU9TKQot
ICAgIG1vY2tBdWRpb0NhcHR1cmVTb3VyY2VGYWN0b3J5KCkuc2V0QWN0aXZlU291cmNlKCp0aGlz
KTsKKyAgICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS52aWRlb0ZhY3Rv
cnkoKS5zZXRBY3RpdmVTb3VyY2UoKnRoaXMpOwogI2VuZGlmCiAKICAgICBpZiAoIXNhbXBsZVJh
dGUoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmgJKHJldmlzaW9uIDIyNTI3MSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykg
MjAxMyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEzLTIxMDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtNDMsMTAgKzQzLDExIEBAIHByaXZhdGU6CiAgICAgTW9ja1Jl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIoKSA9IGRlZmF1bHQ7CiAgICAgZnJpZW5kIE5ldmVyRGVz
dHJveWVkPE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyPjsKIAotICAgIFJlYWx0aW1lTWVk
aWFTb3VyY2U6OkF1ZGlvQ2FwdHVyZUZhY3RvcnkmIGRlZmF1bHRBdWRpb0ZhY3RvcnkoKSBmaW5h
bCB7IHJldHVybiBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6ZmFjdG9yeSgpOyB9Ci0gICAgUmVh
bHRpbWVNZWRpYVNvdXJjZTo6VmlkZW9DYXB0dXJlRmFjdG9yeSYgZGVmYXVsdFZpZGVvRmFjdG9y
eSgpIGZpbmFsIHsgcmV0dXJuIE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpmYWN0b3J5KCk7IH0K
LSAgICBDYXB0dXJlRGV2aWNlTWFuYWdlciYgZGVmYXVsdEF1ZGlvQ2FwdHVyZURldmljZU1hbmFn
ZXIoKSBmaW5hbCB7IHJldHVybiBtX2RlZmF1bHRBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyOyB9
Ci0gICAgQ2FwdHVyZURldmljZU1hbmFnZXImIGRlZmF1bHRWaWRlb0NhcHR1cmVEZXZpY2VNYW5h
Z2VyKCkgZmluYWwgeyByZXR1cm4gbV9kZWZhdWx0VmlkZW9DYXB0dXJlRGV2aWNlTWFuYWdlcjsg
fQorICAgIFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvQ2FwdHVyZUZhY3RvcnkmIGF1ZGlvRmFj
dG9yeSgpIGZpbmFsIHsgcmV0dXJuIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjpmYWN0b3J5KCk7
IH0KKyAgICBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlb0NhcHR1cmVGYWN0b3J5JiB2aWRlb0Zh
Y3RvcnkoKSBmaW5hbCB7IHJldHVybiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6ZmFjdG9yeSgp
OyB9CisKKyAgICBDYXB0dXJlRGV2aWNlTWFuYWdlciYgYXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdl
cigpIGZpbmFsIHsgcmV0dXJuIG1fYXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlcjsgfQorICAgIENh
cHR1cmVEZXZpY2VNYW5hZ2VyJiB2aWRlb0NhcHR1cmVEZXZpY2VNYW5hZ2VyKCkgZmluYWwgeyBy
ZXR1cm4gbV92aWRlb0NhcHR1cmVEZXZpY2VNYW5hZ2VyOyB9CiAKICAgICBjbGFzcyBNb2NrQXVk
aW9DYXB0dXJlRGV2aWNlTWFuYWdlciBmaW5hbCA6IHB1YmxpYyBDYXB0dXJlRGV2aWNlTWFuYWdl
ciB7CiAgICAgcHJpdmF0ZToKQEAgLTU3LDggKzU4LDggQEAgcHJpdmF0ZToKICAgICAgICAgVmVj
dG9yPENhcHR1cmVEZXZpY2U+JiBjYXB0dXJlRGV2aWNlcygpIGZpbmFsIHsgcmV0dXJuIE1vY2tS
ZWFsdGltZU1lZGlhU291cmNlOjp2aWRlb0RldmljZXMoKTsgfQogICAgIH07CiAKLSAgICBNb2Nr
QXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlciBtX2RlZmF1bHRBdWRpb0NhcHR1cmVEZXZpY2VNYW5h
Z2VyOwotICAgIE1vY2tWaWRlb0NhcHR1cmVEZXZpY2VNYW5hZ2VyIG1fZGVmYXVsdFZpZGVvQ2Fw
dHVyZURldmljZU1hbmFnZXI7CisgICAgTW9ja0F1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIgbV9h
dWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyOworICAgIE1vY2tWaWRlb0NhcHR1cmVEZXZpY2VNYW5h
Z2VyIG1fdmlkZW9DYXB0dXJlRGV2aWNlTWFuYWdlcjsKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3Vy
Y2UuY3BwCShyZXZpc2lvbiAyMjUyNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE0LDE0ICsx
MTQsMTQgQEAgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6Ok1vY2tSZWFsdGltZVZpZAogTW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2U6On5Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZSgpCiB7CiAjaWYgUExB
VEZPUk0oSU9TKQotICAgIG1vY2tWaWRlb0NhcHR1cmVTb3VyY2VGYWN0b3J5KCkudW5zZXRBY3Rp
dmVTb3VyY2UoKnRoaXMpOworICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRv
bigpLnZpZGVvRmFjdG9yeSgpLnVuc2V0QWN0aXZlU291cmNlKCp0aGlzKTsKICNlbmRpZgogfQog
CiB2b2lkIE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEoKQogewog
I2lmIFBMQVRGT1JNKElPUykKLSAgICBtb2NrVmlkZW9DYXB0dXJlU291cmNlRmFjdG9yeSgpLnNl
dEFjdGl2ZVNvdXJjZSgqdGhpcyk7CisgICAgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2lu
Z2xldG9uKCkudmlkZW9GYWN0b3J5KCkuc2V0QWN0aXZlU291cmNlKCp0aGlzKTsKICNlbmRpZgog
CiAgICAgaWYgKHNpemUoKS5pc0VtcHR5KCkpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmgJKHJldmlzaW9u
IDIyNTI3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlk
ZW9Tb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327912</attachid>
            <date>2017-11-29 14:48:28 -0800</date>
            <delta_ts>2017-11-29 16:24:55 -0800</delta_ts>
            <desc>Patch for landing.</desc>
            <filename>factory_cleanup_patch_2.txt</filename>
            <type>text/plain</type>
            <size>33851</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNTI4MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY4IEBACisyMDE3LTExLTI5ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVhbV0g
Q2xlYW4gdXAgYXVkaW8gYW5kIHZpZGVvIGNhcHR1cmUgZmFjdG9yaWVzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAxNTYKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzM1NzUzNDM1PgorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQu
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNldEF1ZGlvRmFjdG9y
eSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
Ojp1bnNldEF1ZGlvRmFjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyOjphdWRpb0ZhY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2V0VmlkZW9GYWN0b3J5KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnVuc2V0Vmlk
ZW9GYWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXI6OnZpZGVvRmFjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyOjpzZXRBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnVuc2V0
QXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpS
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjphdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNldFZp
ZGVvQ2FwdHVyZURldmljZU1hbmFnZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6dW5zZXRWaWRlb0NhcHR1cmVEZXZpY2VNYW5hZ2VyKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnZp
ZGVvQ2FwdHVyZURldmljZU1hbmFnZXIpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNldEF1ZGlvRmFjdG9yeSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjp1bnNldEF1ZGlvRmFjdG9yeSk6Cisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6ZmFj
aW5nTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6
OnZpZGVvRmFjaW5nTW9kZUVudW0pOgorICAgICAgICAoV2ViQ29yZTo6dXNlckZhY2luZyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjplbnZpcm9ubWVudEZhY2luZyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpsZWZ0RmFjaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OnJpZ2h0RmFjaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1l
TWVkaWFTb3VyY2VTZXR0aW5nczo6UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3Vy
Y2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVT
b3VyY2UubW06CisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291cmNlOjp+QVZWaWRlb0NhcHR1
cmVTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6QVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNldHVw
Q2FwdHVyZVNlc3Npb24pOgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkFWVmlkZW9DYXB0dXJlU291cmNlRmFjdG9yeTo6c2V0VmlkZW9DYXB0dXJlUGFnZVN0YXRlKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmF2VmlkZW9DYXB0dXJlU291cmNlRmFjdG9yeSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6ZmFjdG9y
eSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXJNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dmlkZW9DYXB0dXJl
U291cmNlRmFjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyTWFjOjphdWRpb0ZhY3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlck1hYzo6dmlkZW9GYWN0b3J5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXJNYWM6OmF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYzo6dmlkZW9DYXB0dXJlRGV2
aWNlTWFuYWdlcik6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
TWFjOjpSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OmRlZmF1bHRBdWRpb0ZhY3Rvcnkp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1h
Yzo6ZGVmYXVsdFZpZGVvRmFjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyTWFjOjpkZWZhdWx0QXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdl
cik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
TWFjOjpkZWZhdWx0VmlkZW9DYXB0dXJlRGV2aWNlTWFuYWdlcik6IERlbGV0ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjp+TW9ja1JlYWx0aW1l
QXVkaW9Tb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6
OnN0YXJ0UHJvZHVjaW5nRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2U6On5Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2Nr
UmVhbHRpbWVWaWRlb1NvdXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmg6CisKIDIwMTctMTEtMjkgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBJbnRyb2R1Y2UgU2VydmljZVdv
cmtlckNvbnRhaW5lcjo6ZW5zdXJlU1dDbGllbnRDb25uZWN0aW9uKCkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlh
U291cmNlLmgJKHJldmlzaW9uIDIyNTI3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtODQsMjgg
Kzg0LDYgQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxh
YmxlKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiwgY29uc3QgQXVk
aW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCAvKm51bWJlck9mRnJhbWVzKi8pIHsgfQogICAg
IH07CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTb3VyY2U+IGNsYXNzIFNpbmdsZVNvdXJjZUZh
Y3RvcnkgewotICAgIHB1YmxpYzoKLSAgICAgICAgdm9pZCBzZXRBY3RpdmVTb3VyY2UoU291cmNl
JiBzb3VyY2UpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChtX2FjdGl2ZVNvdXJjZSA9PSAm
c291cmNlKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGlmIChtX2FjdGl2
ZVNvdXJjZSAmJiBtX2FjdGl2ZVNvdXJjZS0+aXNQcm9kdWNpbmdEYXRhKCkpCi0gICAgICAgICAg
ICAgICAgbV9hY3RpdmVTb3VyY2UtPnNldE11dGVkKHRydWUpOwotICAgICAgICAgICAgbV9hY3Rp
dmVTb3VyY2UgPSAmc291cmNlOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCB1bnNldEFjdGl2
ZVNvdXJjZShTb3VyY2UmIHNvdXJjZSkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKG1fYWN0
aXZlU291cmNlID09ICZzb3VyY2UpCi0gICAgICAgICAgICAgICAgbV9hY3RpdmVTb3VyY2UgPSBu
dWxscHRyOwotICAgICAgICB9Ci0KLSAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZSogYWN0aXZl
U291cmNlKCkgeyByZXR1cm4gbV9hY3RpdmVTb3VyY2U7IH0KLSAgICBwcml2YXRlOgotICAgICAg
ICBSZWFsdGltZU1lZGlhU291cmNlKiBtX2FjdGl2ZVNvdXJjZSB7IG51bGxwdHIgfTsKLSAgICB9
OwotCiAgICAgY2xhc3MgQXVkaW9DYXB0dXJlRmFjdG9yeSB7CiAgICAgcHVibGljOgogICAgICAg
ICB2aXJ0dWFsIH5BdWRpb0NhcHR1cmVGYWN0b3J5KCkgPSBkZWZhdWx0OwpAQCAtMjEwLDYgKzE4
OCwyNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNhcHR1cmVGYWlsZWQoKTsKIAorI2lmIFBMQVRG
T1JNKElPUykKKyAgICB2b2lkIHNldEFjdGl2ZVNvdXJjZShSZWFsdGltZU1lZGlhU291cmNlJiBz
b3VyY2UpCisgICAgeworICAgICAgICBpZiAobV9hY3RpdmVTb3VyY2UgPT0gJnNvdXJjZSkKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKG1fYWN0aXZlU291cmNlICYmIG1fYWN0aXZl
U291cmNlLT5pc1Byb2R1Y2luZ0RhdGEoKSkKKyAgICAgICAgICAgIG1fYWN0aXZlU291cmNlLT5z
ZXRNdXRlZCh0cnVlKTsKKyAgICAgICAgbV9hY3RpdmVTb3VyY2UgPSAmc291cmNlOworICAgIH0K
KworICAgIHZvaWQgdW5zZXRBY3RpdmVTb3VyY2UoUmVhbHRpbWVNZWRpYVNvdXJjZSYgc291cmNl
KQorICAgIHsKKyAgICAgICAgaWYgKG1fYWN0aXZlU291cmNlID09ICZzb3VyY2UpCisgICAgICAg
ICAgICBtX2FjdGl2ZVNvdXJjZSA9IG51bGxwdHI7CisgICAgfQorCisgICAgUmVhbHRpbWVNZWRp
YVNvdXJjZSogYWN0aXZlU291cmNlKCkgeyByZXR1cm4gbV9hY3RpdmVTb3VyY2U7IH0KKyNlbmRp
ZgorCisKICAgICAvLyBUZXN0aW5nIG9ubHkKICAgICB2aXJ0dWFsIHZvaWQgZGVsYXlTYW1wbGVz
KGZsb2F0KSB7IH07CiAKQEAgLTI2Myw2ICsyNjEsMTAgQEAgcHJpdmF0ZToKICAgICBkb3VibGUg
bV9maXRuZXNzU2NvcmUgeyBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCkg
fTsKICAgICBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9kZSBtX2Zh
Y2luZ01vZGUgeyBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlVzZXJ9OwogCisjaWYgUExB
VEZPUk0oSU9TKQorICAgIFJlYWx0aW1lTWVkaWFTb3VyY2UqIG1fYWN0aXZlU291cmNlIHsgbnVs
bHB0ciB9OworI2VuZGlmCisKICAgICBib29sIG1fZWNob0NhbmNlbGxhdGlvbiB7IGZhbHNlIH07
CiAgICAgYm9vbCBtX3BlbmRpbmdTZXR0aW5nc0RpZENoYW5nZU5vdGlmaWNhdGlvbiB7IGZhbHNl
IH07CiAgICAgYm9vbCBtX2lzUHJvZHVjaW5nRGF0YSB7IGZhbHNlIH07CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAkocmV2aXNpb24gMjI1MjcxKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEzOCw3MCArMTM4LDYgQEAgVmVjdG9yPENhcHR1cmVEZXZpY2U+
IFJlYWx0aW1lTWVkaWFTb3VyYwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgUmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlcjo6c2V0QXVkaW9GYWN0b3J5KFJlYWx0aW1lTWVkaWFTb3VyY2U6
OkF1ZGlvQ2FwdHVyZUZhY3RvcnkmIGZhY3RvcnkpCi17Ci0gICAgbV9hdWRpb0ZhY3RvcnkgPSAm
ZmFjdG9yeTsKLX0KLQotdm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjp1bnNldEF1ZGlv
RmFjdG9yeShSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpb0NhcHR1cmVGYWN0b3J5JiBmYWN0b3J5
KQotewotICAgIGlmIChtX2F1ZGlvRmFjdG9yeSA9PSAmZmFjdG9yeSkKLSAgICAgICAgbV9hdWRp
b0ZhY3RvcnkgPSBudWxscHRyOwotfQotCi1SZWFsdGltZU1lZGlhU291cmNlOjpBdWRpb0NhcHR1
cmVGYWN0b3J5JiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjphdWRpb0ZhY3RvcnkoKQotewot
ICAgIHJldHVybiBtX2F1ZGlvRmFjdG9yeSA/ICptX2F1ZGlvRmFjdG9yeSA6IGRlZmF1bHRBdWRp
b0ZhY3RvcnkoKTsKLX0KLQotdm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzZXRWaWRl
b0ZhY3RvcnkoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW9DYXB0dXJlRmFjdG9yeSYgZmFjdG9y
eSkKLXsKLSAgICBtX3ZpZGVvRmFjdG9yeSA9ICZmYWN0b3J5OwotfQotCi12b2lkIFJlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXI6OnVuc2V0VmlkZW9GYWN0b3J5KFJlYWx0aW1lTWVkaWFTb3VyY2U6
OlZpZGVvQ2FwdHVyZUZhY3RvcnkmIGZhY3RvcnkpCi17Ci0gICAgaWYgKG1fdmlkZW9GYWN0b3J5
ID09ICZmYWN0b3J5KQotICAgICAgICBtX3ZpZGVvRmFjdG9yeSA9IG51bGxwdHI7Ci19Ci0KLVJl
YWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvQ2FwdHVyZUZhY3RvcnkmIFJlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXI6OnZpZGVvRmFjdG9yeSgpCi17Ci0gICAgcmV0dXJuIG1fdmlkZW9GYWN0b3J5ID8g
Km1fdmlkZW9GYWN0b3J5IDogZGVmYXVsdFZpZGVvRmFjdG9yeSgpOwotfQotCi12b2lkIFJlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNldEF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIoQ2FwdHVy
ZURldmljZU1hbmFnZXImIGRldmljZU1hbmFnZXIpCi17Ci0gICAgbV9hdWRpb0NhcHR1cmVEZXZp
Y2VNYW5hZ2VyID0gJmRldmljZU1hbmFnZXI7Ci19Ci0KLXZvaWQgUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlcjo6dW5zZXRBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyKENhcHR1cmVEZXZpY2VNYW5h
Z2VyJiBkZXZpY2VNYW5hZ2VyKQotewotICAgIGlmIChtX2F1ZGlvQ2FwdHVyZURldmljZU1hbmFn
ZXIgPT0gJmRldmljZU1hbmFnZXIpCi0gICAgICAgIG1fYXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdl
ciA9IG51bGxwdHI7Ci19Ci0KLUNhcHR1cmVEZXZpY2VNYW5hZ2VyJiBSZWFsdGltZU1lZGlhU291
cmNlQ2VudGVyOjphdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyKCkKLXsKLSAgICByZXR1cm4gbV9h
dWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyID8gKm1fYXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlciA6
IGRlZmF1bHRBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyKCk7Ci19Ci0KLXZvaWQgUmVhbHRpbWVN
ZWRpYVNvdXJjZUNlbnRlcjo6c2V0VmlkZW9DYXB0dXJlRGV2aWNlTWFuYWdlcihDYXB0dXJlRGV2
aWNlTWFuYWdlciYgZGV2aWNlTWFuYWdlcikKLXsKLSAgICBtX3ZpZGVvQ2FwdHVyZURldmljZU1h
bmFnZXIgPSAmZGV2aWNlTWFuYWdlcjsKLX0KLQotdm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyOjp1bnNldFZpZGVvQ2FwdHVyZURldmljZU1hbmFnZXIoQ2FwdHVyZURldmljZU1hbmFnZXIm
IGRldmljZU1hbmFnZXIpCi17Ci0gICAgaWYgKG1fdmlkZW9DYXB0dXJlRGV2aWNlTWFuYWdlciA9
PSAmZGV2aWNlTWFuYWdlcikKLSAgICAgICAgbV92aWRlb0NhcHR1cmVEZXZpY2VNYW5hZ2VyID0g
bnVsbHB0cjsKLX0KLQotQ2FwdHVyZURldmljZU1hbmFnZXImIFJlYWx0aW1lTWVkaWFTb3VyY2VD
ZW50ZXI6OnZpZGVvQ2FwdHVyZURldmljZU1hbmFnZXIoKQotewotICAgIHJldHVybiBtX3ZpZGVv
Q2FwdHVyZURldmljZU1hbmFnZXIgPyAqbV92aWRlb0NhcHR1cmVEZXZpY2VNYW5hZ2VyIDogZGVm
YXVsdFZpZGVvQ2FwdHVyZURldmljZU1hbmFnZXIoKTsKLX0KLQogc3RhdGljIHZvaWQgYWRkU3Ry
aW5nVG9TSEExKFNIQTEmIHNoYTEsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIGlmIChz
dHJpbmcuaXNFbXB0eSgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaAkocmV2
aXNpb24gMjI1MjcxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAog
LyoKICAqIENvcHlyaWdodCAoQykgMjAxMSBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02OSwyNyArNjksMTQg
QEAgcHVibGljOgogICAgIAogICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRD
b25zdHJhaW50cyYgc3VwcG9ydGVkQ29uc3RyYWludHMoKSB7IHJldHVybiBtX3N1cHBvcnRlZENv
bnN0cmFpbnRzOyB9CiAKLSAgICB2aXJ0dWFsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvQ2Fw
dHVyZUZhY3RvcnkmIGRlZmF1bHRBdWRpb0ZhY3RvcnkoKSA9IDA7Ci0gICAgdmlydHVhbCBSZWFs
dGltZU1lZGlhU291cmNlOjpWaWRlb0NhcHR1cmVGYWN0b3J5JiBkZWZhdWx0VmlkZW9GYWN0b3J5
KCkgPSAwOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzZXRBdWRpb0ZhY3Rvcnko
UmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW9DYXB0dXJlRmFjdG9yeSYpIHsgfQorICAgIFdFQkNP
UkVfRVhQT1JUIHZpcnR1YWwgdm9pZCB1bnNldEF1ZGlvRmFjdG9yeShSZWFsdGltZU1lZGlhU291
cmNlOjpBdWRpb0NhcHR1cmVGYWN0b3J5JikgeyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVh
bCBSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpb0NhcHR1cmVGYWN0b3J5JiBhdWRpb0ZhY3Rvcnko
KSA9IDA7CiAKLSAgICB2aXJ0dWFsIENhcHR1cmVEZXZpY2VNYW5hZ2VyJiBkZWZhdWx0QXVkaW9D
YXB0dXJlRGV2aWNlTWFuYWdlcigpID0gMDsKLSAgICB2aXJ0dWFsIENhcHR1cmVEZXZpY2VNYW5h
Z2VyJiBkZWZhdWx0VmlkZW9DYXB0dXJlRGV2aWNlTWFuYWdlcigpID0gMDsKKyAgICB2aXJ0dWFs
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvQ2FwdHVyZUZhY3RvcnkmIHZpZGVvRmFjdG9yeSgp
ID0gMDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QXVkaW9GYWN0b3J5KFJlYWx0aW1l
TWVkaWFTb3VyY2U6OkF1ZGlvQ2FwdHVyZUZhY3RvcnkmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHVuc2V0QXVkaW9GYWN0b3J5KFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvQ2FwdHVyZUZh
Y3RvcnkmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpb0Nh
cHR1cmVGYWN0b3J5JiBhdWRpb0ZhY3RvcnkoKTsKLQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0VmlkZW9GYWN0b3J5KFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvQ2FwdHVyZUZhY3Rvcnkm
KTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVuc2V0VmlkZW9GYWN0b3J5KFJlYWx0aW1lTWVk
aWFTb3VyY2U6OlZpZGVvQ2FwdHVyZUZhY3RvcnkmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWFs
dGltZU1lZGlhU291cmNlOjpWaWRlb0NhcHR1cmVGYWN0b3J5JiB2aWRlb0ZhY3RvcnkoKTsKLQot
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlcihDYXB0
dXJlRGV2aWNlTWFuYWdlciYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdW5zZXRBdWRpb0Nh
cHR1cmVEZXZpY2VNYW5hZ2VyKENhcHR1cmVEZXZpY2VNYW5hZ2VyJik7Ci0gICAgQ2FwdHVyZURl
dmljZU1hbmFnZXImIGF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIoKTsKLQotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0VmlkZW9DYXB0dXJlRGV2aWNlTWFuYWdlcihDYXB0dXJlRGV2aWNlTWFu
YWdlciYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdW5zZXRWaWRlb0NhcHR1cmVEZXZpY2VN
YW5hZ2VyKENhcHR1cmVEZXZpY2VNYW5hZ2VyJik7Ci0gICAgQ2FwdHVyZURldmljZU1hbmFnZXIm
IHZpZGVvQ2FwdHVyZURldmljZU1hbmFnZXIoKTsKKyAgICB2aXJ0dWFsIENhcHR1cmVEZXZpY2VN
YW5hZ2VyJiBhdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyKCkgPSAwOworICAgIHZpcnR1YWwgQ2Fw
dHVyZURldmljZU1hbmFnZXImIHZpZGVvQ2FwdHVyZURldmljZU1hbmFnZXIoKSA9IDA7CiAKICAg
ICBTdHJpbmcgaGFzaFN0cmluZ1dpdGhTYWx0KGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0IFN0cmlu
ZyYgaGFzaFNhbHQpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8Q2FwdHVyZURl
dmljZT4gY2FwdHVyZURldmljZVdpdGhVbmlxdWVJRChjb25zdCBTdHJpbmcmIGlkLCBjb25zdCBT
dHJpbmcmIGhhc2hTYWx0KTsKQEAgLTEwOCw5ICs5NSw2IEBAIHByb3RlY3RlZDoKICAgICBzdGF0
aWMgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlciYgcGxhdGZvcm1DZW50ZXIoKTsKICAgICBSZWFs
dGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMgbV9zdXBwb3J0ZWRDb25zdHJhaW50
czsKIAotICAgIFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvQ2FwdHVyZUZhY3RvcnkqIG1fYXVk
aW9GYWN0b3J5IHsgbnVsbHB0ciB9OwotICAgIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvQ2Fw
dHVyZUZhY3RvcnkqIG1fdmlkZW9GYWN0b3J5IHsgbnVsbHB0ciB9OwotCiAgICAgQ2FwdHVyZURl
dmljZU1hbmFnZXIqIG1fYXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlciB7IG51bGxwdHIgfTsKICAg
ICBDYXB0dXJlRGV2aWNlTWFuYWdlciogbV92aWRlb0NhcHR1cmVEZXZpY2VNYW5hZ2VyIHsgbnVs
bHB0ciB9OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Jl
YWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmNwcAko
cmV2aXNpb24gMjI1MjcxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNTgg
KzM3LDM0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGNvbnN0IEF0b21pY1N0
cmluZyYgdXNlckZhY2luZygpCitTdHJpbmcgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpm
YWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlIG1v
ZGUpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gdXNlckZhY2lu
ZygidXNlciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHJldHVy
biB1c2VyRmFjaW5nOwotfQotc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgZW52aXJvbm1lbnRG
YWNpbmcoKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGVudmly
b25tZW50RmFjaW5nKCJlbnZpcm9ubWVudCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpOwotICAgIHJldHVybiBlbnZpcm9ubWVudEZhY2luZzsKLX0KLQotc3RhdGljIGNvbnN0
IEF0b21pY1N0cmluZyYgbGVmdEZhY2luZygpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEF0b21pY1N0cmluZz4gbGVmdEZhY2luZygibGVmdCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpOwotICAgIHJldHVybiBsZWZ0RmFjaW5nOwotfQotCi1zdGF0aWMgY29uc3Qg
QXRvbWljU3RyaW5nJiByaWdodEZhY2luZygpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEF0b21pY1N0cmluZz4gcmlnaHRGYWNpbmcoInJpZ2h0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIHJpZ2h0RmFjaW5nOwotfQotCi1jb25zdCBBdG9t
aWNTdHJpbmcmIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6ZmFjaW5nTW9kZShSZWFsdGlt
ZU1lZGlhU291cmNlU2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9kZSBtb2RlKQotewotICAgIHN3aXRj
aCAobW9kZSkgewotICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpVc2VyOgot
ICAgICAgICByZXR1cm4gdXNlckZhY2luZygpOwotICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJj
ZVNldHRpbmdzOjpFbnZpcm9ubWVudDoKLSAgICAgICAgcmV0dXJuIGVudmlyb25tZW50RmFjaW5n
KCk7Ci0gICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkxlZnQ6Ci0gICAgICAg
IHJldHVybiBsZWZ0RmFjaW5nKCk7Ci0gICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3M6OlJpZ2h0OgotICAgICAgICByZXR1cm4gcmlnaHRGYWNpbmcoKTsKLSAgICBjYXNlIFJlYWx0
aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VW5rbm93bjoKLSAgICAgICAgcmV0dXJuIGVtcHR5QXRv
bSgpOwotICAgIH0KLSAgICAKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4g
ZW1wdHlBdG9tKCk7CisgICAgc3RhdGljIGNvbnN0IE5ldmVyRGVzdHJveWVkPFN0cmluZz4gdmFs
dWVzW10gPSB7CisgICAgICAgIE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJ1bmtub3duIiksCisg
ICAgICAgIE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJ1c2VyIiksCisgICAgICAgIE1BS0VfU1RB
VElDX1NUUklOR19JTVBMKCJlbnZpcm9ubWVudCIpLAorICAgICAgICBNQUtFX1NUQVRJQ19TVFJJ
TkdfSU1QTCgibGVmdCIpLAorICAgICAgICBNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgicmlnaHQi
KSwKKyAgICB9OworICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihSZWFsdGlt
ZU1lZGlhU291cmNlU2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9kZTo6VW5rbm93bikgPT0gMCwgIlJl
YWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlOjpVbmtub3duIGlzIG5v
dCAwIGFzIGV4cGVjdGVkIik7CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+
KFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlOjpVc2VyKSA9PSAx
LCAiUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0ZhY2luZ01vZGU6OlVzZXIgaXMg
bm90IDEgYXMgZXhwZWN0ZWQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVf
dD4oUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0ZhY2luZ01vZGU6OkVudmlyb25t
ZW50KSA9PSAyLCAiUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0ZhY2luZ01vZGU6
OkVudmlyb25tZW50IGlzIG5vdCAyIGFzIGV4cGVjdGVkIik7CisgICAgc3RhdGljX2Fzc2VydChz
dGF0aWNfY2FzdDxzaXplX3Q+KFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNp
bmdNb2RlOjpMZWZ0KSA9PSAzLCAiUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0Zh
Y2luZ01vZGU6OkxlZnQgaXMgbm90IDMgYXMgZXhwZWN0ZWQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0
KHN0YXRpY19jYXN0PHNpemVfdD4oUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0Zh
Y2luZ01vZGU6OlJpZ2h0KSA9PSA0LCAiUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRl
b0ZhY2luZ01vZGU6OlJpZ2h0IGlzIG5vdCA0IGFzIGV4cGVjdGVkIik7CisgICAgQVNTRVJUKHN0
YXRpY19jYXN0PHNpemVfdD4obW9kZSkgPCBXVEZfQVJSQVlfTEVOR1RIKHZhbHVlcykpOworICAg
IHJldHVybiB2YWx1ZXNbc3RhdGljX2Nhc3Q8c2l6ZV90Pihtb2RlKV07CiB9CiAKIFJlYWx0aW1l
TWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlIFJlYWx0aW1lTWVkaWFTb3VyY2VT
ZXR0aW5nczo6dmlkZW9GYWNpbmdNb2RlRW51bShjb25zdCBTdHJpbmcmIG1vZGUpCiB7Ci0gICAg
aWYgKG1vZGUgPT0gdXNlckZhY2luZygpKQotICAgICAgICByZXR1cm4gUmVhbHRpbWVNZWRpYVNv
dXJjZVNldHRpbmdzOjpVc2VyOwotICAgIGlmIChtb2RlID09IGVudmlyb25tZW50RmFjaW5nKCkp
Ci0gICAgICAgIHJldHVybiBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkVudmlyb25tZW50
OwotICAgIGlmIChtb2RlID09IGxlZnRGYWNpbmcoKSkKLSAgICAgICAgcmV0dXJuIFJlYWx0aW1l
TWVkaWFTb3VyY2VTZXR0aW5nczo6TGVmdDsKLSAgICBpZiAobW9kZSA9PSByaWdodEZhY2luZygp
KQotICAgICAgICByZXR1cm4gUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpSaWdodDsKKyAg
ICBpZiAobW9kZSA9PSAidXNlciIpCisgICAgICAgIHJldHVybiBSZWFsdGltZU1lZGlhU291cmNl
U2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9kZTo6VXNlcjsKKyAgICBpZiAobW9kZSA9PSAiZW52aXJv
bm1lbnQiKQorICAgICAgICByZXR1cm4gUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRl
b0ZhY2luZ01vZGU6OkVudmlyb25tZW50OworICAgIGlmIChtb2RlID09ICJsZWZ0IikKKyAgICAg
ICAgcmV0dXJuIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlOjpM
ZWZ0OworICAgIGlmIChtb2RlID09ICJyaWdodCIpCisgICAgICAgIHJldHVybiBSZWFsdGltZU1l
ZGlhU291cmNlU2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9kZTo6UmlnaHQ7CiAKICAgICByZXR1cm4g
UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpVbmtub3duOwogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRp
bWVNZWRpYVNvdXJjZVNldHRpbmdzLmgJKHJldmlzaW9uIDIyNTI3MSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oCSh3
b3JraW5nIGNvcHkpCkBAIC00MSwxMyArNDEsMTAgQEAgcHVibGljOgogICAgIGVudW0gU291cmNl
VHlwZSB7IE5vbmUsIENhbWVyYSwgTWljcm9waG9uZSB9OwogICAgIGVudW0gVmlkZW9GYWNpbmdN
b2RlIHsgVW5rbm93biwgVXNlciwgRW52aXJvbm1lbnQsIExlZnQsIFJpZ2h0IH07CiAKLSAgICBz
dGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBmYWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VT
ZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlKTsKLQorICAgIHN0YXRpYyBTdHJpbmcgZmFjaW5nTW9k
ZShSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9kZSk7CiAgICAgc3Rh
dGljIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlIHZpZGVvRmFj
aW5nTW9kZUVudW0oY29uc3QgU3RyaW5nJik7CiAKLSAgICBleHBsaWNpdCBSZWFsdGltZU1lZGlh
U291cmNlU2V0dGluZ3MoKQotICAgIHsKLSAgICB9CisgICAgZXhwbGljaXQgUmVhbHRpbWVNZWRp
YVNvdXJjZVNldHRpbmdzKCkgPSBkZWZhdWx0OwogCiAgICAgYm9vbCBzdXBwb3J0c1dpZHRoKCkg
Y29uc3QgeyByZXR1cm4gbV9zdXBwb3J0ZWRDb25zdHJhaW50cy5zdXBwb3J0c1dpZHRoKCk7IH0K
ICAgICB1aW50MzJfdCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGg7IH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJj
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oCShyZXZpc2lvbiAyMjUyNzEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UuaAkod29y
a2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBjbGFzcyBQaXhlbEJ1ZmZlckNvbmZvcm1lckNW
OwogCiBjbGFzcyBBVlZpZGVvQ2FwdHVyZVNvdXJjZSA6IHB1YmxpYyBBVk1lZGlhQ2FwdHVyZVNv
dXJjZSwgcHJpdmF0ZSBPcmllbnRhdGlvbk5vdGlmaWVyOjpPYnNlcnZlciB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIENhcHR1cmVTb3VyY2VPckVycm9yIGNyZWF0ZShBVkNhcHR1cmVEZXZpY2UqLCBj
b25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzKik7CisgICAgc3RhdGlj
IENhcHR1cmVTb3VyY2VPckVycm9yIGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBN
ZWRpYUNvbnN0cmFpbnRzKik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgVmlkZW9DYXB0
dXJlRmFjdG9yeSYgZmFjdG9yeSgpOwogCkBAIC04OSw4ICs4OSw2IEBAIHByaXZhdGU6CiAgICAg
UmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBtX2J1ZmZlcjsKICAgICBSZXRhaW5QdHI8QVZD
YXB0dXJlVmlkZW9EYXRhT3V0cHV0PiBtX3ZpZGVvT3V0cHV0OwogCi0gICAgc3RkOjp1bmlxdWVf
cHRyPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+IG1fcGl4ZWxCdWZmZXJDb25mb3JtZXI7Ci0KICAg
ICBpbnQzMl90IG1fd2lkdGggeyAwIH07CiAgICAgaW50MzJfdCBtX2hlaWdodCB7IDAgfTsKICAg
ICBpbnQgbV9zZW5zb3JPcmllbnRhdGlvbiB7IDAgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1
cmVTb3VyY2UubW0JKHJldmlzaW9uIDIyNTI3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbQkod29ya2luZyBjb3B5KQpA
QCAtMzgsNyArMzgsNyBAQAogI2ltcG9ydCAiTm90SW1wbGVtZW50ZWQuaCIKICNpbXBvcnQgIlBp
eGVsQnVmZmVyQ29uZm9ybWVyQ1YuaCIKICNpbXBvcnQgIlBsYXRmb3JtTGF5ZXIuaCIKLSNpbXBv
cnQgIlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCIKKyNpbXBvcnQgIlJlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXJNYWMuaCIKICNpbXBvcnQgIlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5o
IgogI2ltcG9ydCAiV2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlLmgiCiAjaW1wb3J0
IDxBVkZvdW5kYXRpb24vQVZDYXB0dXJlRGV2aWNlLmg+CkBAIC0xMTAsMzEgKzExMCwxMiBAQCBj
b25zdCBPU1R5cGUgdmlkZW9DYXB0dXJlRm9ybWF0ID0ga0NWUGl4CiBjb25zdCBPU1R5cGUgdmlk
ZW9DYXB0dXJlRm9ybWF0ID0ga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjhCaVBsYW5hckZ1
bGxSYW5nZTsKICNlbmRpZgogCi1jbGFzcyBBVlZpZGVvQ2FwdHVyZVNvdXJjZUZhY3RvcnkgOiBw
dWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW9DYXB0dXJlRmFjdG9yeQotI2lmIFBMQVRG
T1JNKElPUykKLSAgICAsIHB1YmxpYyBSZWFsdGltZU1lZGlhU291cmNlOjpTaW5nbGVTb3VyY2VG
YWN0b3J5PEFWVmlkZW9DYXB0dXJlU291cmNlPgotI2VuZGlmCitDYXB0dXJlU291cmNlT3JFcnJv
ciBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgaWQsIGNv
bnN0IE1lZGlhQ29uc3RyYWludHMqIGNvbnN0cmFpbnRzKQogewotcHVibGljOgotICAgIENhcHR1
cmVTb3VyY2VPckVycm9yIGNyZWF0ZVZpZGVvQ2FwdHVyZVNvdXJjZShjb25zdCBTdHJpbmcmIGRl
dmljZUlELCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzKiBjb25zdHJhaW50cykgZmluYWwgewotICAg
ICAgICBBVkNhcHR1cmVEZXZpY2VUeXBlZGVmICpkZXZpY2UgPSBbZ2V0QVZDYXB0dXJlRGV2aWNl
Q2xhc3MoKSBkZXZpY2VXaXRoVW5pcXVlSUQ6ZGV2aWNlSURdOwotICAgICAgICBpZiAoIWRldmlj
ZSkKLSAgICAgICAgICAgIHJldHVybiB7IH07Ci0gICAgICAgIHJldHVybiBBVlZpZGVvQ2FwdHVy
ZVNvdXJjZTo6Y3JlYXRlKGRldmljZSwgZGV2aWNlSUQsIGNvbnN0cmFpbnRzKTsKLSAgICB9Ci0K
LSNpZiBQTEFURk9STShJT1MpCi1wcml2YXRlOgotICAgIHZvaWQgc2V0VmlkZW9DYXB0dXJlUGFn
ZVN0YXRlKGJvb2wgaW50ZXJydXB0ZWQsIGJvb2wgcGFnZU11dGVkKQotICAgIHsKLSAgICAgICAg
aWYgKGFjdGl2ZVNvdXJjZSgpKQotICAgICAgICAgICAgYWN0aXZlU291cmNlKCktPnNldEludGVy
cnVwdGVkKGludGVycnVwdGVkLCBwYWdlTXV0ZWQpOwotICAgIH0KLSNlbmRpZgotfTsKKyAgICBB
VkNhcHR1cmVEZXZpY2VUeXBlZGVmICpkZXZpY2UgPSBbZ2V0QVZDYXB0dXJlRGV2aWNlQ2xhc3Mo
KSBkZXZpY2VXaXRoVW5pcXVlSUQ6aWRdOworICAgIGlmICghZGV2aWNlKQorICAgICAgICByZXR1
cm4geyB9OwogCi1DYXB0dXJlU291cmNlT3JFcnJvciBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6Y3Jl
YXRlKEFWQ2FwdHVyZURldmljZVR5cGVkZWYqIGRldmljZSwgY29uc3QgQXRvbWljU3RyaW5nJiBp
ZCwgY29uc3QgTWVkaWFDb25zdHJhaW50cyogY29uc3RyYWludHMpCi17CiAgICAgYXV0byBzb3Vy
Y2UgPSBhZG9wdFJlZigqbmV3IEFWVmlkZW9DYXB0dXJlU291cmNlKGRldmljZSwgaWQpKTsKICAg
ICBpZiAoY29uc3RyYWludHMpIHsKICAgICAgICAgYXV0byByZXN1bHQgPSBzb3VyY2UtPmFwcGx5
Q29uc3RyYWludHMoKmNvbnN0cmFpbnRzKTsKQEAgLTE0NSwxNyArMTI2LDYgQEAgQ2FwdHVyZVNv
dXJjZU9yRXJyb3IgQVZWaWRlb0NhcHR1cmVTb3VyYwogICAgIHJldHVybiBDYXB0dXJlU291cmNl
T3JFcnJvcihXVEZNb3ZlKHNvdXJjZSkpOwogfQogCi1zdGF0aWMgQVZWaWRlb0NhcHR1cmVTb3Vy
Y2VGYWN0b3J5JiBhdlZpZGVvQ2FwdHVyZVNvdXJjZUZhY3RvcnkoKQotewotICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxBVlZpZGVvQ2FwdHVyZVNvdXJjZUZhY3Rvcnk+IGZhY3Rvcnk7Ci0gICAg
cmV0dXJuIGZhY3RvcnkuZ2V0KCk7Ci19Ci0KLVJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvQ2Fw
dHVyZUZhY3RvcnkmIEFWVmlkZW9DYXB0dXJlU291cmNlOjpmYWN0b3J5KCkKLXsKLSAgICByZXR1
cm4gYXZWaWRlb0NhcHR1cmVTb3VyY2VGYWN0b3J5KCk7Ci19Ci0KIEFWVmlkZW9DYXB0dXJlU291
cmNlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZShBVkNhcHR1cmVEZXZpY2VUeXBlZGVmKiBkZXZpY2Us
IGNvbnN0IEF0b21pY1N0cmluZyYgaWQpCiAgICAgOiBBVk1lZGlhQ2FwdHVyZVNvdXJjZShkZXZp
Y2UsIGlkLCBUeXBlOjpWaWRlbykKIHsKQEAgLTE2NCw3ICsxMzQsNyBAQCBBVlZpZGVvQ2FwdHVy
ZVNvdXJjZTo6QVZWaWRlb0NhcHR1cmVTb3VyCiBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6fkFWVmlk
ZW9DYXB0dXJlU291cmNlKCkKIHsKICNpZiBQTEFURk9STShJT1MpCi0gICAgYXZWaWRlb0NhcHR1
cmVTb3VyY2VGYWN0b3J5KCkudW5zZXRBY3RpdmVTb3VyY2UoKnRoaXMpOworICAgIFJlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXJNYWM6OnZpZGVvQ2FwdHVyZVNvdXJjZUZhY3RvcnkoKS51bnNldEFj
dGl2ZVNvdXJjZSgqdGhpcyk7CiAjZW5kaWYKIH0KIApAQCAtNDE0LDcgKzM4NCw3IEBAIHN0YXRp
YyBpbmxpbmUgaW50IHNlbnNvck9yaWVudGF0aW9uRnJvbVYKIGJvb2wgQVZWaWRlb0NhcHR1cmVT
b3VyY2U6OnNldHVwQ2FwdHVyZVNlc3Npb24oKQogewogI2lmIFBMQVRGT1JNKElPUykKLSAgICBh
dlZpZGVvQ2FwdHVyZVNvdXJjZUZhY3RvcnkoKS5zZXRBY3RpdmVTb3VyY2UoKnRoaXMpOworICAg
IFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OnZpZGVvQ2FwdHVyZVNvdXJjZUZhY3Rvcnko
KS5zZXRBY3RpdmVTb3VyY2UoKnRoaXMpOwogI2VuZGlmCiAKICAgICBOU0Vycm9yICplcnJvciA9
IG5pbDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3Jl
QXVkaW9DYXB0dXJlU291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHAJKHJldmlzaW9u
IDIyNTI3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3Jl
QXVkaW9DYXB0dXJlU291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsOSArNTQsNiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgUEFMOwogCiBjbGFzcyBDb3JlQXVk
aW9DYXB0dXJlU291cmNlRmFjdG9yeSA6IHB1YmxpYyBSZWFsdGltZU1lZGlhU291cmNlOjpBdWRp
b0NhcHR1cmVGYWN0b3J5Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgICwgcHVibGljIFJlYWx0aW1l
TWVkaWFTb3VyY2U6OlNpbmdsZVNvdXJjZUZhY3Rvcnk8Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZT4K
LSNlbmRpZgogewogcHVibGljOgogICAgIENhcHR1cmVTb3VyY2VPckVycm9yIGNyZWF0ZUF1ZGlv
Q2FwdHVyZVNvdXJjZShjb25zdCBTdHJpbmcmIGRldmljZUlELCBjb25zdCBNZWRpYUNvbnN0cmFp
bnRzKiBjb25zdHJhaW50cykgZmluYWwgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyTWFjLmNwcAkocmV2aXNpb24gMjI1MjcxKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCwzNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK2NsYXNzIFZpZGVvQ2FwdHVyZVNvdXJjZUZhY3RvcnlNYWMgZmluYWwgOiBwdWJsaWMg
UmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW9DYXB0dXJlRmFjdG9yeQoreworcHVibGljOgorICAg
IENhcHR1cmVTb3VyY2VPckVycm9yIGNyZWF0ZVZpZGVvQ2FwdHVyZVNvdXJjZShjb25zdCBTdHJp
bmcmIGlkLCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzKiBjb25zdHJhaW50cykgZmluYWwKKyAgICB7
CisgICAgICAgIHJldHVybiBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6Y3JlYXRlKGlkLCBjb25zdHJh
aW50cyk7CisgICAgfQorCisjaWYgUExBVEZPUk0oSU9TKQorcHJpdmF0ZToKKyAgICB2b2lkIHNl
dFZpZGVvQ2FwdHVyZVBhZ2VTdGF0ZShib29sIGludGVycnVwdGVkLCBib29sIHBhZ2VNdXRlZCkK
KyAgICB7CisgICAgICAgIGlmIChhY3RpdmVTb3VyY2UoKSkKKyAgICAgICAgICAgIGFjdGl2ZVNv
dXJjZSgpLT5zZXRJbnRlcnJ1cHRlZChpbnRlcnJ1cHRlZCwgcGFnZU11dGVkKTsKKyAgICB9Cisj
ZW5kaWYKK307CisKK1JlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvQ2FwdHVyZUZhY3RvcnkmIFJl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OnZpZGVvQ2FwdHVyZVNvdXJjZUZhY3RvcnkoKQor
eworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWaWRlb0NhcHR1cmVTb3VyY2VGYWN0b3J5TWFj
PiBmYWN0b3J5OworICAgIHJldHVybiBmYWN0b3J5LmdldCgpOworfQorCitSZWFsdGltZU1lZGlh
U291cmNlOjpBdWRpb0NhcHR1cmVGYWN0b3J5JiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFj
OjphdWRpb0NhcHR1cmVTb3VyY2VGYWN0b3J5KCkKK3sKKyAgICByZXR1cm4gUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlck1hYzo6c2luZ2xldG9uKCkuYXVkaW9GYWN0b3J5KCk7Cit9CisKIFJlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMmIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OnNp
bmdsZXRvbigpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKQEAgLTU2LDI4ICs4NSwy
NSBAQCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyJiBSZWFsdGltZU1lZGlhCiAgICAgcmV0dXJu
IFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OnNpbmdsZXRvbigpOwogfQogCi1SZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyTWFjOjpSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjKCkKLXsK
LSAgICBtX3N1cHBvcnRlZENvbnN0cmFpbnRzLnNldFN1cHBvcnRzU2FtcGxlUmF0ZShmYWxzZSk7
Ci0gICAgbV9zdXBwb3J0ZWRDb25zdHJhaW50cy5zZXRTdXBwb3J0c1NhbXBsZVNpemUoZmFsc2Up
OwotICAgIG1fc3VwcG9ydGVkQ29uc3RyYWludHMuc2V0U3VwcG9ydHNFY2hvQ2FuY2VsbGF0aW9u
KGZhbHNlKTsKLSAgICBtX3N1cHBvcnRlZENvbnN0cmFpbnRzLnNldFN1cHBvcnRzR3JvdXBJZCh0
cnVlKTsKLX0KK1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OlJlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXJNYWMoKSA9IGRlZmF1bHQ7CiAKIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6
On5SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjKCkgPSBkZWZhdWx0OwogCiAKLVJlYWx0aW1l
TWVkaWFTb3VyY2U6OkF1ZGlvQ2FwdHVyZUZhY3RvcnkmIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXJNYWM6OmRlZmF1bHRBdWRpb0ZhY3RvcnkoKQorUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW9D
YXB0dXJlRmFjdG9yeSYgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYzo6YXVkaW9GYWN0b3J5
KCkKIHsKKyAgICBpZiAobV9hdWRpb0ZhY3RvcnlPdmVycmlkZSkKKyAgICAgICAgcmV0dXJuICpt
X2F1ZGlvRmFjdG9yeU92ZXJyaWRlOworCiAgICAgcmV0dXJuIENvcmVBdWRpb0NhcHR1cmVTb3Vy
Y2U6OmZhY3RvcnkoKTsKIH0KIAotUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW9DYXB0dXJlRmFj
dG9yeSYgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYzo6ZGVmYXVsdFZpZGVvRmFjdG9yeSgp
CitSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlb0NhcHR1cmVGYWN0b3J5JiBSZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyTWFjOjp2aWRlb0ZhY3RvcnkoKQogewotICAgIHJldHVybiBBVlZpZGVvQ2Fw
dHVyZVNvdXJjZTo6ZmFjdG9yeSgpOworICAgIHJldHVybiB2aWRlb0NhcHR1cmVTb3VyY2VGYWN0
b3J5KCk7CiB9CiAKLUNhcHR1cmVEZXZpY2VNYW5hZ2VyJiBSZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyTWFjOjpkZWZhdWx0QXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlcigpCitDYXB0dXJlRGV2aWNl
TWFuYWdlciYgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYzo6YXVkaW9DYXB0dXJlRGV2aWNl
TWFuYWdlcigpCiB7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHJldHVybiBDb3JlQXVkaW9DYXB0
dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCk7CkBAIC04Niw3ICsxMTIsNyBAQCBDYXB0dXJl
RGV2aWNlTWFuYWdlciYgUmVhbHRpbWVNZWRpYVNvdXJjCiAjZW5kaWYKIH0KIAotQ2FwdHVyZURl
dmljZU1hbmFnZXImIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OmRlZmF1bHRWaWRlb0Nh
cHR1cmVEZXZpY2VNYW5hZ2VyKCkKK0NhcHR1cmVEZXZpY2VNYW5hZ2VyJiBSZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyTWFjOjp2aWRlb0NhcHR1cmVEZXZpY2VNYW5hZ2VyKCkKIHsKICAgICByZXR1
cm4gQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCk7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
ck1hYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmgJKHJldmlzaW9uIDIyNTI3MSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291
cmNlQ2VudGVyTWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEzLTIwMTYgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMy0yMDE3IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ0LDE2ICs0NCwyNCBAQCBjbGFz
cyBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjIGZpbmFsCiBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMmIHNpbmdsZXRvbigp
OwogCisgICAgc3RhdGljIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvQ2FwdHVyZUZhY3Rvcnkm
IHZpZGVvQ2FwdHVyZVNvdXJjZUZhY3RvcnkoKTsKKyAgICBzdGF0aWMgUmVhbHRpbWVNZWRpYVNv
dXJjZTo6QXVkaW9DYXB0dXJlRmFjdG9yeSYgYXVkaW9DYXB0dXJlU291cmNlRmFjdG9yeSgpOwor
CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBOZXZlckRlc3Ryb3llZDxSZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyTWFjPjsKICAgICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjKCk7CiAg
ICAgflJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMoKTsKIAotICAgIFJlYWx0aW1lTWVkaWFT
b3VyY2U6OkF1ZGlvQ2FwdHVyZUZhY3RvcnkmIGRlZmF1bHRBdWRpb0ZhY3RvcnkoKSBmaW5hbDsK
LSAgICBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlb0NhcHR1cmVGYWN0b3J5JiBkZWZhdWx0Vmlk
ZW9GYWN0b3J5KCkgZmluYWw7CisgICAgdm9pZCBzZXRBdWRpb0ZhY3RvcnkoUmVhbHRpbWVNZWRp
YVNvdXJjZTo6QXVkaW9DYXB0dXJlRmFjdG9yeSYgZmFjdG9yeSkgZmluYWwgeyBtX2F1ZGlvRmFj
dG9yeU92ZXJyaWRlID0gJmZhY3Rvcnk7IH0KKyAgICB2b2lkIHVuc2V0QXVkaW9GYWN0b3J5KFJl
YWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvQ2FwdHVyZUZhY3RvcnkmKSBmaW5hbCB7IG1fYXVkaW9G
YWN0b3J5T3ZlcnJpZGUgPSBudWxscHRyOyB9CisKKyAgICBSZWFsdGltZU1lZGlhU291cmNlOjpB
dWRpb0NhcHR1cmVGYWN0b3J5JiBhdWRpb0ZhY3RvcnkoKSBmaW5hbDsKKyAgICBSZWFsdGltZU1l
ZGlhU291cmNlOjpWaWRlb0NhcHR1cmVGYWN0b3J5JiB2aWRlb0ZhY3RvcnkoKSBmaW5hbDsKKwor
ICAgIENhcHR1cmVEZXZpY2VNYW5hZ2VyJiBhdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyKCkgZmlu
YWw7CisgICAgQ2FwdHVyZURldmljZU1hbmFnZXImIHZpZGVvQ2FwdHVyZURldmljZU1hbmFnZXIo
KSBmaW5hbDsKIAotICAgIENhcHR1cmVEZXZpY2VNYW5hZ2VyJiBkZWZhdWx0QXVkaW9DYXB0dXJl
RGV2aWNlTWFuYWdlcigpIGZpbmFsOwotICAgIENhcHR1cmVEZXZpY2VNYW5hZ2VyJiBkZWZhdWx0
VmlkZW9DYXB0dXJlRGV2aWNlTWFuYWdlcigpIGZpbmFsOworICAgIFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OkF1ZGlvQ2FwdHVyZUZhY3RvcnkqIG1fYXVkaW9GYWN0b3J5T3ZlcnJpZGUgeyBudWxscHRy
IH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmNwcAko
cmV2aXNpb24gMjI1MjcxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVh
bHRpbWVBdWRpb1NvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1
ZGUgIkNhcHR1cmVEZXZpY2UuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVk
aWFDb25zdHJhaW50cy5oIgorI2luY2x1ZGUgIk1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJSZWFsdGltZU1lZGlh
U291cmNlU2V0dGluZ3MuaCIKICNpbmNsdWRlIDx3dGYvVVVJRC5oPgpAQCAtNDIsOSArNDMsNiBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZUZh
Y3RvcnkgOiBwdWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW9DYXB0dXJlRmFjdG9yeQot
I2lmIFBMQVRGT1JNKElPUykKLSAgICAsIHB1YmxpYyBSZWFsdGltZU1lZGlhU291cmNlOjpTaW5n
bGVTb3VyY2VGYWN0b3J5PE1vY2tSZWFsdGltZUF1ZGlvU291cmNlPgotI2VuZGlmCiB7CiBwdWJs
aWM6CiAgICAgQ2FwdHVyZVNvdXJjZU9yRXJyb3IgY3JlYXRlQXVkaW9DYXB0dXJlU291cmNlKGNv
bnN0IFN0cmluZyYgZGV2aWNlSUQsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMqIGNvbnN0cmFpbnRz
KSBmaW5hbCB7CkBAIC05NCw3ICs5Miw3IEBAIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjpNb2Nr
UmVhbHRpbWVBdWQKIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjp+TW9ja1JlYWx0aW1lQXVkaW9T
b3VyY2UoKQogewogI2lmIFBMQVRGT1JNKElPUykKLSAgICBtb2NrQXVkaW9DYXB0dXJlU291cmNl
RmFjdG9yeSgpLnVuc2V0QWN0aXZlU291cmNlKCp0aGlzKTsKKyAgICBNb2NrUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlcjo6YXVkaW9DYXB0dXJlU291cmNlRmFjdG9yKCkudW5zZXRBY3RpdmVTb3Vy
Y2UoKnRoaXMpOwogI2VuZGlmCiB9CiAKQEAgLTEyMiw3ICsxMjAsNyBAQCB2b2lkIE1vY2tSZWFs
dGltZUF1ZGlvU291cmNlOjppbml0aWFsaXplCiB2b2lkIE1vY2tSZWFsdGltZUF1ZGlvU291cmNl
OjpzdGFydFByb2R1Y2luZ0RhdGEoKQogewogI2lmIFBMQVRGT1JNKElPUykKLSAgICBtb2NrQXVk
aW9DYXB0dXJlU291cmNlRmFjdG9yeSgpLnNldEFjdGl2ZVNvdXJjZSgqdGhpcyk7CisgICAgTW9j
a1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmF1ZGlvQ2FwdHVyZVNvdXJjZUZhY3RvcigpLnNl
dEFjdGl2ZVNvdXJjZSgqdGhpcyk7CiAjZW5kaWYKIAogICAgIGlmICghc2FtcGxlUmF0ZSgpKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9j
a1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaAkocmV2aXNpb24gMjI1MjcxKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjEw
NyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0zOSwxNCArMzksMTggQEAgY2xhc3MgTW9ja1JlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXIgZmluYQogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNl
dE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyRW5hYmxlZChib29sKTsKIAorICAgIHN0YXRp
YyBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlb0NhcHR1cmVGYWN0b3J5JiB2aWRlb0NhcHR1cmVT
b3VyY2VGYWN0b3J5KCkgeyByZXR1cm4gTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmZhY3Rvcnko
KTsgfQorICAgIHN0YXRpYyBSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpb0NhcHR1cmVGYWN0b3J5
JiBhdWRpb0NhcHR1cmVTb3VyY2VGYWN0b3J5KCkgeyByZXR1cm4gTW9ja1JlYWx0aW1lQXVkaW9T
b3VyY2U6OmZhY3RvcnkoKTsgfQorCiBwcml2YXRlOgogICAgIE1vY2tSZWFsdGltZU1lZGlhU291
cmNlQ2VudGVyKCkgPSBkZWZhdWx0OwogICAgIGZyaWVuZCBOZXZlckRlc3Ryb3llZDxNb2NrUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlcj47CiAKLSAgICBSZWFsdGltZU1lZGlhU291cmNlOjpBdWRp
b0NhcHR1cmVGYWN0b3J5JiBkZWZhdWx0QXVkaW9GYWN0b3J5KCkgZmluYWwgeyByZXR1cm4gTW9j
a1JlYWx0aW1lQXVkaW9Tb3VyY2U6OmZhY3RvcnkoKTsgfQotICAgIFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OlZpZGVvQ2FwdHVyZUZhY3RvcnkmIGRlZmF1bHRWaWRlb0ZhY3RvcnkoKSBmaW5hbCB7IHJl
dHVybiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6ZmFjdG9yeSgpOyB9Ci0gICAgQ2FwdHVyZURl
dmljZU1hbmFnZXImIGRlZmF1bHRBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyKCkgZmluYWwgeyBy
ZXR1cm4gbV9kZWZhdWx0QXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlcjsgfQotICAgIENhcHR1cmVE
ZXZpY2VNYW5hZ2VyJiBkZWZhdWx0VmlkZW9DYXB0dXJlRGV2aWNlTWFuYWdlcigpIGZpbmFsIHsg
cmV0dXJuIG1fZGVmYXVsdFZpZGVvQ2FwdHVyZURldmljZU1hbmFnZXI7IH0KKyAgICBSZWFsdGlt
ZU1lZGlhU291cmNlOjpBdWRpb0NhcHR1cmVGYWN0b3J5JiBhdWRpb0ZhY3RvcnkoKSBmaW5hbCB7
IHJldHVybiBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6ZmFjdG9yeSgpOyB9CisgICAgUmVhbHRp
bWVNZWRpYVNvdXJjZTo6VmlkZW9DYXB0dXJlRmFjdG9yeSYgdmlkZW9GYWN0b3J5KCkgZmluYWwg
eyByZXR1cm4gTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmZhY3RvcnkoKTsgfQorCisgICAgQ2Fw
dHVyZURldmljZU1hbmFnZXImIGF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIoKSBmaW5hbCB7IHJl
dHVybiBtX2F1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXI7IH0KKyAgICBDYXB0dXJlRGV2aWNlTWFu
YWdlciYgdmlkZW9DYXB0dXJlRGV2aWNlTWFuYWdlcigpIGZpbmFsIHsgcmV0dXJuIG1fdmlkZW9D
YXB0dXJlRGV2aWNlTWFuYWdlcjsgfQogCiAgICAgY2xhc3MgTW9ja0F1ZGlvQ2FwdHVyZURldmlj
ZU1hbmFnZXIgZmluYWwgOiBwdWJsaWMgQ2FwdHVyZURldmljZU1hbmFnZXIgewogICAgIHByaXZh
dGU6CkBAIC01Nyw4ICs2MSw4IEBAIHByaXZhdGU6CiAgICAgICAgIFZlY3RvcjxDYXB0dXJlRGV2
aWNlPiYgY2FwdHVyZURldmljZXMoKSBmaW5hbCB7IHJldHVybiBNb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZTo6dmlkZW9EZXZpY2VzKCk7IH0KICAgICB9OwogCi0gICAgTW9ja0F1ZGlvQ2FwdHVyZURl
dmljZU1hbmFnZXIgbV9kZWZhdWx0QXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlcjsKLSAgICBNb2Nr
VmlkZW9DYXB0dXJlRGV2aWNlTWFuYWdlciBtX2RlZmF1bHRWaWRlb0NhcHR1cmVEZXZpY2VNYW5h
Z2VyOworICAgIE1vY2tBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyIG1fYXVkaW9DYXB0dXJlRGV2
aWNlTWFuYWdlcjsKKyAgICBNb2NrVmlkZW9DYXB0dXJlRGV2aWNlTWFuYWdlciBtX3ZpZGVvQ2Fw
dHVyZURldmljZU1hbmFnZXI7CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAkocmV2aXNp
b24gMjI1MjcxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVW
aWRlb1NvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRl
ICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lZGlhQ29uc3Ry
YWludHMuaCIKKyNpbmNsdWRlICJNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oIgogI2lu
Y2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgogI2lu
Y2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oIgpAQCAtNDksOSArNTAsNiBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZUZhY3Rv
cnkgOiBwdWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW9DYXB0dXJlRmFjdG9yeQotI2lm
IFBMQVRGT1JNKElPUykKLSAgICAsIHB1YmxpYyBSZWFsdGltZU1lZGlhU291cmNlOjpTaW5nbGVT
b3VyY2VGYWN0b3J5PE1vY2tSZWFsdGltZVZpZGVvU291cmNlPgotI2VuZGlmCiB7CiBwdWJsaWM6
CiAgICAgQ2FwdHVyZVNvdXJjZU9yRXJyb3IgY3JlYXRlVmlkZW9DYXB0dXJlU291cmNlKGNvbnN0
IFN0cmluZyYgZGV2aWNlSUQsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMqIGNvbnN0cmFpbnRzKSBm
aW5hbCB7CkBAIC0xMTQsMTQgKzExMiwxNCBAQCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6TW9j
a1JlYWx0aW1lVmlkCiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6fk1vY2tSZWFsdGltZVZpZGVv
U291cmNlKCkKIHsKICNpZiBQTEFURk9STShJT1MpCi0gICAgbW9ja1ZpZGVvQ2FwdHVyZVNvdXJj
ZUZhY3RvcnkoKS51bnNldEFjdGl2ZVNvdXJjZSgqdGhpcyk7CisgICAgTW9ja1JlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXI6OnZpZGVvQ2FwdHVyZVNvdXJjZUZhY3RvcnkudW5zZXRBY3RpdmVTb3Vy
Y2UoKnRoaXMpOwogI2VuZGlmCiB9CiAKIHZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OnN0
YXJ0UHJvZHVjaW5nRGF0YSgpCiB7CiAjaWYgUExBVEZPUk0oSU9TKQotICAgIG1vY2tWaWRlb0Nh
cHR1cmVTb3VyY2VGYWN0b3J5KCkuc2V0QWN0aXZlU291cmNlKCp0aGlzKTsKKyAgICBNb2NrUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6dmlkZW9DYXB0dXJlU291cmNlRmFjdG9yeSgpLnNldEFj
dGl2ZVNvdXJjZSgqdGhpcyk7CiAjZW5kaWYKIAogICAgIGlmIChzaXplKCkuaXNFbXB0eSgpKSB7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291
cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZS5oCShyZXZpc2lvbiAyMjUyNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327922</attachid>
            <date>2017-11-29 16:24:55 -0800</date>
            <delta_ts>2017-11-29 18:29:09 -0800</delta_ts>
            <desc>Patch for landing.</desc>
            <filename>factory_cleanup_patch_3.txt</filename>
            <type>text/plain</type>
            <size>32711</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNTI4MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY4IEBACisyMDE3LTExLTI5ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVhbV0g
Q2xlYW4gdXAgYXVkaW8gYW5kIHZpZGVvIGNhcHR1cmUgZmFjdG9yaWVzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAxNTYKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzM1NzUzNDM1PgorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQu
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNldEF1ZGlvRmFjdG9y
eSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
Ojp1bnNldEF1ZGlvRmFjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyOjphdWRpb0ZhY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2V0VmlkZW9GYWN0b3J5KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnVuc2V0Vmlk
ZW9GYWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXI6OnZpZGVvRmFjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyOjpzZXRBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnVuc2V0
QXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpS
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjphdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNldFZp
ZGVvQ2FwdHVyZURldmljZU1hbmFnZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6dW5zZXRWaWRlb0NhcHR1cmVEZXZpY2VNYW5hZ2VyKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnZp
ZGVvQ2FwdHVyZURldmljZU1hbmFnZXIpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNldEF1ZGlvRmFjdG9yeSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjp1bnNldEF1ZGlvRmFjdG9yeSk6Cisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6ZmFj
aW5nTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6
OnZpZGVvRmFjaW5nTW9kZUVudW0pOgorICAgICAgICAoV2ViQ29yZTo6dXNlckZhY2luZyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjplbnZpcm9ubWVudEZhY2luZyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpsZWZ0RmFjaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OnJpZ2h0RmFjaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1l
TWVkaWFTb3VyY2VTZXR0aW5nczo6UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3Vy
Y2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVT
b3VyY2UubW06CisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291cmNlOjp+QVZWaWRlb0NhcHR1
cmVTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6QVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNldHVw
Q2FwdHVyZVNlc3Npb24pOgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkFWVmlkZW9DYXB0dXJlU291cmNlRmFjdG9yeTo6c2V0VmlkZW9DYXB0dXJlUGFnZVN0YXRlKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmF2VmlkZW9DYXB0dXJlU291cmNlRmFjdG9yeSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6ZmFjdG9y
eSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXJNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dmlkZW9DYXB0dXJl
U291cmNlRmFjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyTWFjOjphdWRpb0ZhY3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlck1hYzo6dmlkZW9GYWN0b3J5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXJNYWM6OmF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYzo6dmlkZW9DYXB0dXJlRGV2
aWNlTWFuYWdlcik6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
TWFjOjpSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OmRlZmF1bHRBdWRpb0ZhY3Rvcnkp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1h
Yzo6ZGVmYXVsdFZpZGVvRmFjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyTWFjOjpkZWZhdWx0QXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdl
cik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
TWFjOjpkZWZhdWx0VmlkZW9DYXB0dXJlRGV2aWNlTWFuYWdlcik6IERlbGV0ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjp+TW9ja1JlYWx0aW1l
QXVkaW9Tb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6
OnN0YXJ0UHJvZHVjaW5nRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2U6On5Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2Nr
UmVhbHRpbWVWaWRlb1NvdXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmg6CisKIDIwMTctMTEtMjkgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBJbnRyb2R1Y2UgU2VydmljZVdv
cmtlckNvbnRhaW5lcjo6ZW5zdXJlU1dDbGllbnRDb25uZWN0aW9uKCkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlh
U291cmNlLmgJKHJldmlzaW9uIDIyNTI3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTA2LDcg
KzEwNiwxMSBAQCBwdWJsaWM6CiAgICAgICAgIFJlYWx0aW1lTWVkaWFTb3VyY2UqIG1fYWN0aXZl
U291cmNlIHsgbnVsbHB0ciB9OwogICAgIH07CiAKLSAgICBjbGFzcyBBdWRpb0NhcHR1cmVGYWN0
b3J5IHsKKyAgICBjbGFzcyBBdWRpb0NhcHR1cmVGYWN0b3J5CisjaWYgUExBVEZPUk0oSU9TKQor
ICAgICAgICAsIHB1YmxpYyBSZWFsdGltZU1lZGlhU291cmNlOjpTaW5nbGVTb3VyY2VGYWN0b3J5
PEFWVmlkZW9DYXB0dXJlU291cmNlPgorI2VuZGlmCisgICAgewogICAgIHB1YmxpYzoKICAgICAg
ICAgdmlydHVhbCB+QXVkaW9DYXB0dXJlRmFjdG9yeSgpID0gZGVmYXVsdDsKICAgICAgICAgdmly
dHVhbCBDYXB0dXJlU291cmNlT3JFcnJvciBjcmVhdGVBdWRpb0NhcHR1cmVTb3VyY2UoY29uc3Qg
U3RyaW5nJiBhdWRpb0RldmljZUlELCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzKikgPSAwOwpAQCAt
MTE1LDcgKzExOSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIEF1ZGlvQ2FwdHVyZUZhY3RvcnkoKSA9
IGRlZmF1bHQ7CiAgICAgfTsKIAotICAgIGNsYXNzIFZpZGVvQ2FwdHVyZUZhY3RvcnkgeworICAg
IGNsYXNzIFZpZGVvQ2FwdHVyZUZhY3RvcnkKKyNpZiBQTEFURk9STShJT1MpCisgICAgICAgICwg
cHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlNpbmdsZVNvdXJjZUZhY3Rvcnk8QVZWaWRlb0Nh
cHR1cmVTb3VyY2U+CisjZW5kaWYKKyAgICB7CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFs
IH5WaWRlb0NhcHR1cmVGYWN0b3J5KCkgPSBkZWZhdWx0OwogICAgICAgICB2aXJ0dWFsIENhcHR1
cmVTb3VyY2VPckVycm9yIGNyZWF0ZVZpZGVvQ2FwdHVyZVNvdXJjZShjb25zdCBTdHJpbmcmIHZp
ZGVvRGV2aWNlSUQsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMqKSA9IDA7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAkocmV2aXNpb24gMjI1MjcxKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEzOCw3MCArMTM4LDYgQEAgVmVjdG9yPENhcHR1cmVEZXZpY2U+
IFJlYWx0aW1lTWVkaWFTb3VyYwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgUmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlcjo6c2V0QXVkaW9GYWN0b3J5KFJlYWx0aW1lTWVkaWFTb3VyY2U6
OkF1ZGlvQ2FwdHVyZUZhY3RvcnkmIGZhY3RvcnkpCi17Ci0gICAgbV9hdWRpb0ZhY3RvcnkgPSAm
ZmFjdG9yeTsKLX0KLQotdm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjp1bnNldEF1ZGlv
RmFjdG9yeShSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpb0NhcHR1cmVGYWN0b3J5JiBmYWN0b3J5
KQotewotICAgIGlmIChtX2F1ZGlvRmFjdG9yeSA9PSAmZmFjdG9yeSkKLSAgICAgICAgbV9hdWRp
b0ZhY3RvcnkgPSBudWxscHRyOwotfQotCi1SZWFsdGltZU1lZGlhU291cmNlOjpBdWRpb0NhcHR1
cmVGYWN0b3J5JiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjphdWRpb0ZhY3RvcnkoKQotewot
ICAgIHJldHVybiBtX2F1ZGlvRmFjdG9yeSA/ICptX2F1ZGlvRmFjdG9yeSA6IGRlZmF1bHRBdWRp
b0ZhY3RvcnkoKTsKLX0KLQotdm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzZXRWaWRl
b0ZhY3RvcnkoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW9DYXB0dXJlRmFjdG9yeSYgZmFjdG9y
eSkKLXsKLSAgICBtX3ZpZGVvRmFjdG9yeSA9ICZmYWN0b3J5OwotfQotCi12b2lkIFJlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXI6OnVuc2V0VmlkZW9GYWN0b3J5KFJlYWx0aW1lTWVkaWFTb3VyY2U6
OlZpZGVvQ2FwdHVyZUZhY3RvcnkmIGZhY3RvcnkpCi17Ci0gICAgaWYgKG1fdmlkZW9GYWN0b3J5
ID09ICZmYWN0b3J5KQotICAgICAgICBtX3ZpZGVvRmFjdG9yeSA9IG51bGxwdHI7Ci19Ci0KLVJl
YWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvQ2FwdHVyZUZhY3RvcnkmIFJlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXI6OnZpZGVvRmFjdG9yeSgpCi17Ci0gICAgcmV0dXJuIG1fdmlkZW9GYWN0b3J5ID8g
Km1fdmlkZW9GYWN0b3J5IDogZGVmYXVsdFZpZGVvRmFjdG9yeSgpOwotfQotCi12b2lkIFJlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNldEF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIoQ2FwdHVy
ZURldmljZU1hbmFnZXImIGRldmljZU1hbmFnZXIpCi17Ci0gICAgbV9hdWRpb0NhcHR1cmVEZXZp
Y2VNYW5hZ2VyID0gJmRldmljZU1hbmFnZXI7Ci19Ci0KLXZvaWQgUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlcjo6dW5zZXRBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyKENhcHR1cmVEZXZpY2VNYW5h
Z2VyJiBkZXZpY2VNYW5hZ2VyKQotewotICAgIGlmIChtX2F1ZGlvQ2FwdHVyZURldmljZU1hbmFn
ZXIgPT0gJmRldmljZU1hbmFnZXIpCi0gICAgICAgIG1fYXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdl
ciA9IG51bGxwdHI7Ci19Ci0KLUNhcHR1cmVEZXZpY2VNYW5hZ2VyJiBSZWFsdGltZU1lZGlhU291
cmNlQ2VudGVyOjphdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyKCkKLXsKLSAgICByZXR1cm4gbV9h
dWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyID8gKm1fYXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlciA6
IGRlZmF1bHRBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyKCk7Ci19Ci0KLXZvaWQgUmVhbHRpbWVN
ZWRpYVNvdXJjZUNlbnRlcjo6c2V0VmlkZW9DYXB0dXJlRGV2aWNlTWFuYWdlcihDYXB0dXJlRGV2
aWNlTWFuYWdlciYgZGV2aWNlTWFuYWdlcikKLXsKLSAgICBtX3ZpZGVvQ2FwdHVyZURldmljZU1h
bmFnZXIgPSAmZGV2aWNlTWFuYWdlcjsKLX0KLQotdm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyOjp1bnNldFZpZGVvQ2FwdHVyZURldmljZU1hbmFnZXIoQ2FwdHVyZURldmljZU1hbmFnZXIm
IGRldmljZU1hbmFnZXIpCi17Ci0gICAgaWYgKG1fdmlkZW9DYXB0dXJlRGV2aWNlTWFuYWdlciA9
PSAmZGV2aWNlTWFuYWdlcikKLSAgICAgICAgbV92aWRlb0NhcHR1cmVEZXZpY2VNYW5hZ2VyID0g
bnVsbHB0cjsKLX0KLQotQ2FwdHVyZURldmljZU1hbmFnZXImIFJlYWx0aW1lTWVkaWFTb3VyY2VD
ZW50ZXI6OnZpZGVvQ2FwdHVyZURldmljZU1hbmFnZXIoKQotewotICAgIHJldHVybiBtX3ZpZGVv
Q2FwdHVyZURldmljZU1hbmFnZXIgPyAqbV92aWRlb0NhcHR1cmVEZXZpY2VNYW5hZ2VyIDogZGVm
YXVsdFZpZGVvQ2FwdHVyZURldmljZU1hbmFnZXIoKTsKLX0KLQogc3RhdGljIHZvaWQgYWRkU3Ry
aW5nVG9TSEExKFNIQTEmIHNoYTEsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIGlmIChz
dHJpbmcuaXNFbXB0eSgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaAkocmV2
aXNpb24gMjI1MjcxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAog
LyoKICAqIENvcHlyaWdodCAoQykgMjAxMSBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02OSwyNyArNjksMTQg
QEAgcHVibGljOgogICAgIAogICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRD
b25zdHJhaW50cyYgc3VwcG9ydGVkQ29uc3RyYWludHMoKSB7IHJldHVybiBtX3N1cHBvcnRlZENv
bnN0cmFpbnRzOyB9CiAKLSAgICB2aXJ0dWFsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvQ2Fw
dHVyZUZhY3RvcnkmIGRlZmF1bHRBdWRpb0ZhY3RvcnkoKSA9IDA7Ci0gICAgdmlydHVhbCBSZWFs
dGltZU1lZGlhU291cmNlOjpWaWRlb0NhcHR1cmVGYWN0b3J5JiBkZWZhdWx0VmlkZW9GYWN0b3J5
KCkgPSAwOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzZXRBdWRpb0ZhY3Rvcnko
UmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW9DYXB0dXJlRmFjdG9yeSYpIHsgfQorICAgIFdFQkNP
UkVfRVhQT1JUIHZpcnR1YWwgdm9pZCB1bnNldEF1ZGlvRmFjdG9yeShSZWFsdGltZU1lZGlhU291
cmNlOjpBdWRpb0NhcHR1cmVGYWN0b3J5JikgeyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVh
bCBSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpb0NhcHR1cmVGYWN0b3J5JiBhdWRpb0ZhY3Rvcnko
KSA9IDA7CiAKLSAgICB2aXJ0dWFsIENhcHR1cmVEZXZpY2VNYW5hZ2VyJiBkZWZhdWx0QXVkaW9D
YXB0dXJlRGV2aWNlTWFuYWdlcigpID0gMDsKLSAgICB2aXJ0dWFsIENhcHR1cmVEZXZpY2VNYW5h
Z2VyJiBkZWZhdWx0VmlkZW9DYXB0dXJlRGV2aWNlTWFuYWdlcigpID0gMDsKKyAgICB2aXJ0dWFs
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvQ2FwdHVyZUZhY3RvcnkmIHZpZGVvRmFjdG9yeSgp
ID0gMDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QXVkaW9GYWN0b3J5KFJlYWx0aW1l
TWVkaWFTb3VyY2U6OkF1ZGlvQ2FwdHVyZUZhY3RvcnkmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHVuc2V0QXVkaW9GYWN0b3J5KFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvQ2FwdHVyZUZh
Y3RvcnkmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpb0Nh
cHR1cmVGYWN0b3J5JiBhdWRpb0ZhY3RvcnkoKTsKLQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0VmlkZW9GYWN0b3J5KFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvQ2FwdHVyZUZhY3Rvcnkm
KTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVuc2V0VmlkZW9GYWN0b3J5KFJlYWx0aW1lTWVk
aWFTb3VyY2U6OlZpZGVvQ2FwdHVyZUZhY3RvcnkmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWFs
dGltZU1lZGlhU291cmNlOjpWaWRlb0NhcHR1cmVGYWN0b3J5JiB2aWRlb0ZhY3RvcnkoKTsKLQot
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlcihDYXB0
dXJlRGV2aWNlTWFuYWdlciYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdW5zZXRBdWRpb0Nh
cHR1cmVEZXZpY2VNYW5hZ2VyKENhcHR1cmVEZXZpY2VNYW5hZ2VyJik7Ci0gICAgQ2FwdHVyZURl
dmljZU1hbmFnZXImIGF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIoKTsKLQotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0VmlkZW9DYXB0dXJlRGV2aWNlTWFuYWdlcihDYXB0dXJlRGV2aWNlTWFu
YWdlciYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdW5zZXRWaWRlb0NhcHR1cmVEZXZpY2VN
YW5hZ2VyKENhcHR1cmVEZXZpY2VNYW5hZ2VyJik7Ci0gICAgQ2FwdHVyZURldmljZU1hbmFnZXIm
IHZpZGVvQ2FwdHVyZURldmljZU1hbmFnZXIoKTsKKyAgICB2aXJ0dWFsIENhcHR1cmVEZXZpY2VN
YW5hZ2VyJiBhdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyKCkgPSAwOworICAgIHZpcnR1YWwgQ2Fw
dHVyZURldmljZU1hbmFnZXImIHZpZGVvQ2FwdHVyZURldmljZU1hbmFnZXIoKSA9IDA7CiAKICAg
ICBTdHJpbmcgaGFzaFN0cmluZ1dpdGhTYWx0KGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0IFN0cmlu
ZyYgaGFzaFNhbHQpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8Q2FwdHVyZURl
dmljZT4gY2FwdHVyZURldmljZVdpdGhVbmlxdWVJRChjb25zdCBTdHJpbmcmIGlkLCBjb25zdCBT
dHJpbmcmIGhhc2hTYWx0KTsKQEAgLTEwOCw5ICs5NSw2IEBAIHByb3RlY3RlZDoKICAgICBzdGF0
aWMgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlciYgcGxhdGZvcm1DZW50ZXIoKTsKICAgICBSZWFs
dGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMgbV9zdXBwb3J0ZWRDb25zdHJhaW50
czsKIAotICAgIFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvQ2FwdHVyZUZhY3RvcnkqIG1fYXVk
aW9GYWN0b3J5IHsgbnVsbHB0ciB9OwotICAgIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvQ2Fw
dHVyZUZhY3RvcnkqIG1fdmlkZW9GYWN0b3J5IHsgbnVsbHB0ciB9OwotCiAgICAgQ2FwdHVyZURl
dmljZU1hbmFnZXIqIG1fYXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlciB7IG51bGxwdHIgfTsKICAg
ICBDYXB0dXJlRGV2aWNlTWFuYWdlciogbV92aWRlb0NhcHR1cmVEZXZpY2VNYW5hZ2VyIHsgbnVs
bHB0ciB9OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Jl
YWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmNwcAko
cmV2aXNpb24gMjI1MjcxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNTgg
KzM3LDM0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGNvbnN0IEF0b21pY1N0
cmluZyYgdXNlckZhY2luZygpCitTdHJpbmcgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpm
YWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlIG1v
ZGUpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gdXNlckZhY2lu
ZygidXNlciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHJldHVy
biB1c2VyRmFjaW5nOwotfQotc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgZW52aXJvbm1lbnRG
YWNpbmcoKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGVudmly
b25tZW50RmFjaW5nKCJlbnZpcm9ubWVudCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpOwotICAgIHJldHVybiBlbnZpcm9ubWVudEZhY2luZzsKLX0KLQotc3RhdGljIGNvbnN0
IEF0b21pY1N0cmluZyYgbGVmdEZhY2luZygpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEF0b21pY1N0cmluZz4gbGVmdEZhY2luZygibGVmdCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpOwotICAgIHJldHVybiBsZWZ0RmFjaW5nOwotfQotCi1zdGF0aWMgY29uc3Qg
QXRvbWljU3RyaW5nJiByaWdodEZhY2luZygpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEF0b21pY1N0cmluZz4gcmlnaHRGYWNpbmcoInJpZ2h0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIHJpZ2h0RmFjaW5nOwotfQotCi1jb25zdCBBdG9t
aWNTdHJpbmcmIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6ZmFjaW5nTW9kZShSZWFsdGlt
ZU1lZGlhU291cmNlU2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9kZSBtb2RlKQotewotICAgIHN3aXRj
aCAobW9kZSkgewotICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpVc2VyOgot
ICAgICAgICByZXR1cm4gdXNlckZhY2luZygpOwotICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJj
ZVNldHRpbmdzOjpFbnZpcm9ubWVudDoKLSAgICAgICAgcmV0dXJuIGVudmlyb25tZW50RmFjaW5n
KCk7Ci0gICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkxlZnQ6Ci0gICAgICAg
IHJldHVybiBsZWZ0RmFjaW5nKCk7Ci0gICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3M6OlJpZ2h0OgotICAgICAgICByZXR1cm4gcmlnaHRGYWNpbmcoKTsKLSAgICBjYXNlIFJlYWx0
aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VW5rbm93bjoKLSAgICAgICAgcmV0dXJuIGVtcHR5QXRv
bSgpOwotICAgIH0KLSAgICAKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4g
ZW1wdHlBdG9tKCk7CisgICAgc3RhdGljIGNvbnN0IE5ldmVyRGVzdHJveWVkPFN0cmluZz4gdmFs
dWVzW10gPSB7CisgICAgICAgIE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJ1bmtub3duIiksCisg
ICAgICAgIE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJ1c2VyIiksCisgICAgICAgIE1BS0VfU1RB
VElDX1NUUklOR19JTVBMKCJlbnZpcm9ubWVudCIpLAorICAgICAgICBNQUtFX1NUQVRJQ19TVFJJ
TkdfSU1QTCgibGVmdCIpLAorICAgICAgICBNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgicmlnaHQi
KSwKKyAgICB9OworICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihSZWFsdGlt
ZU1lZGlhU291cmNlU2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9kZTo6VW5rbm93bikgPT0gMCwgIlJl
YWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlOjpVbmtub3duIGlzIG5v
dCAwIGFzIGV4cGVjdGVkIik7CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+
KFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlOjpVc2VyKSA9PSAx
LCAiUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0ZhY2luZ01vZGU6OlVzZXIgaXMg
bm90IDEgYXMgZXhwZWN0ZWQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVf
dD4oUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0ZhY2luZ01vZGU6OkVudmlyb25t
ZW50KSA9PSAyLCAiUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0ZhY2luZ01vZGU6
OkVudmlyb25tZW50IGlzIG5vdCAyIGFzIGV4cGVjdGVkIik7CisgICAgc3RhdGljX2Fzc2VydChz
dGF0aWNfY2FzdDxzaXplX3Q+KFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNp
bmdNb2RlOjpMZWZ0KSA9PSAzLCAiUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0Zh
Y2luZ01vZGU6OkxlZnQgaXMgbm90IDMgYXMgZXhwZWN0ZWQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0
KHN0YXRpY19jYXN0PHNpemVfdD4oUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0Zh
Y2luZ01vZGU6OlJpZ2h0KSA9PSA0LCAiUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRl
b0ZhY2luZ01vZGU6OlJpZ2h0IGlzIG5vdCA0IGFzIGV4cGVjdGVkIik7CisgICAgQVNTRVJUKHN0
YXRpY19jYXN0PHNpemVfdD4obW9kZSkgPCBXVEZfQVJSQVlfTEVOR1RIKHZhbHVlcykpOworICAg
IHJldHVybiB2YWx1ZXNbc3RhdGljX2Nhc3Q8c2l6ZV90Pihtb2RlKV07CiB9CiAKIFJlYWx0aW1l
TWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlIFJlYWx0aW1lTWVkaWFTb3VyY2VT
ZXR0aW5nczo6dmlkZW9GYWNpbmdNb2RlRW51bShjb25zdCBTdHJpbmcmIG1vZGUpCiB7Ci0gICAg
aWYgKG1vZGUgPT0gdXNlckZhY2luZygpKQotICAgICAgICByZXR1cm4gUmVhbHRpbWVNZWRpYVNv
dXJjZVNldHRpbmdzOjpVc2VyOwotICAgIGlmIChtb2RlID09IGVudmlyb25tZW50RmFjaW5nKCkp
Ci0gICAgICAgIHJldHVybiBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkVudmlyb25tZW50
OwotICAgIGlmIChtb2RlID09IGxlZnRGYWNpbmcoKSkKLSAgICAgICAgcmV0dXJuIFJlYWx0aW1l
TWVkaWFTb3VyY2VTZXR0aW5nczo6TGVmdDsKLSAgICBpZiAobW9kZSA9PSByaWdodEZhY2luZygp
KQotICAgICAgICByZXR1cm4gUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpSaWdodDsKKyAg
ICBpZiAobW9kZSA9PSAidXNlciIpCisgICAgICAgIHJldHVybiBSZWFsdGltZU1lZGlhU291cmNl
U2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9kZTo6VXNlcjsKKyAgICBpZiAobW9kZSA9PSAiZW52aXJv
bm1lbnQiKQorICAgICAgICByZXR1cm4gUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRl
b0ZhY2luZ01vZGU6OkVudmlyb25tZW50OworICAgIGlmIChtb2RlID09ICJsZWZ0IikKKyAgICAg
ICAgcmV0dXJuIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlOjpM
ZWZ0OworICAgIGlmIChtb2RlID09ICJyaWdodCIpCisgICAgICAgIHJldHVybiBSZWFsdGltZU1l
ZGlhU291cmNlU2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9kZTo6UmlnaHQ7CiAKICAgICByZXR1cm4g
UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpVbmtub3duOwogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRp
bWVNZWRpYVNvdXJjZVNldHRpbmdzLmgJKHJldmlzaW9uIDIyNTI3MSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oCSh3
b3JraW5nIGNvcHkpCkBAIC00MSwxMyArNDEsMTAgQEAgcHVibGljOgogICAgIGVudW0gU291cmNl
VHlwZSB7IE5vbmUsIENhbWVyYSwgTWljcm9waG9uZSB9OwogICAgIGVudW0gVmlkZW9GYWNpbmdN
b2RlIHsgVW5rbm93biwgVXNlciwgRW52aXJvbm1lbnQsIExlZnQsIFJpZ2h0IH07CiAKLSAgICBz
dGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBmYWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VT
ZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlKTsKLQorICAgIHN0YXRpYyBTdHJpbmcgZmFjaW5nTW9k
ZShSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9kZSk7CiAgICAgc3Rh
dGljIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlIHZpZGVvRmFj
aW5nTW9kZUVudW0oY29uc3QgU3RyaW5nJik7CiAKLSAgICBleHBsaWNpdCBSZWFsdGltZU1lZGlh
U291cmNlU2V0dGluZ3MoKQotICAgIHsKLSAgICB9CisgICAgZXhwbGljaXQgUmVhbHRpbWVNZWRp
YVNvdXJjZVNldHRpbmdzKCkgPSBkZWZhdWx0OwogCiAgICAgYm9vbCBzdXBwb3J0c1dpZHRoKCkg
Y29uc3QgeyByZXR1cm4gbV9zdXBwb3J0ZWRDb25zdHJhaW50cy5zdXBwb3J0c1dpZHRoKCk7IH0K
ICAgICB1aW50MzJfdCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGg7IH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJj
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oCShyZXZpc2lvbiAyMjUyNzEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UuaAkod29y
a2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBjbGFzcyBQaXhlbEJ1ZmZlckNvbmZvcm1lckNW
OwogCiBjbGFzcyBBVlZpZGVvQ2FwdHVyZVNvdXJjZSA6IHB1YmxpYyBBVk1lZGlhQ2FwdHVyZVNv
dXJjZSwgcHJpdmF0ZSBPcmllbnRhdGlvbk5vdGlmaWVyOjpPYnNlcnZlciB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIENhcHR1cmVTb3VyY2VPckVycm9yIGNyZWF0ZShBVkNhcHR1cmVEZXZpY2UqLCBj
b25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzKik7CisgICAgc3RhdGlj
IENhcHR1cmVTb3VyY2VPckVycm9yIGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBN
ZWRpYUNvbnN0cmFpbnRzKik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgVmlkZW9DYXB0
dXJlRmFjdG9yeSYgZmFjdG9yeSgpOwogCkBAIC04OSw4ICs4OSw2IEBAIHByaXZhdGU6CiAgICAg
UmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBtX2J1ZmZlcjsKICAgICBSZXRhaW5QdHI8QVZD
YXB0dXJlVmlkZW9EYXRhT3V0cHV0PiBtX3ZpZGVvT3V0cHV0OwogCi0gICAgc3RkOjp1bmlxdWVf
cHRyPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+IG1fcGl4ZWxCdWZmZXJDb25mb3JtZXI7Ci0KICAg
ICBpbnQzMl90IG1fd2lkdGggeyAwIH07CiAgICAgaW50MzJfdCBtX2hlaWdodCB7IDAgfTsKICAg
ICBpbnQgbV9zZW5zb3JPcmllbnRhdGlvbiB7IDAgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1
cmVTb3VyY2UubW0JKHJldmlzaW9uIDIyNTI3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbQkod29ya2luZyBjb3B5KQpA
QCAtMzgsNyArMzgsNyBAQAogI2ltcG9ydCAiTm90SW1wbGVtZW50ZWQuaCIKICNpbXBvcnQgIlBp
eGVsQnVmZmVyQ29uZm9ybWVyQ1YuaCIKICNpbXBvcnQgIlBsYXRmb3JtTGF5ZXIuaCIKLSNpbXBv
cnQgIlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCIKKyNpbXBvcnQgIlJlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXJNYWMuaCIKICNpbXBvcnQgIlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5o
IgogI2ltcG9ydCAiV2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlLmgiCiAjaW1wb3J0
IDxBVkZvdW5kYXRpb24vQVZDYXB0dXJlRGV2aWNlLmg+CkBAIC0xMTAsMzEgKzExMCwxMiBAQCBj
b25zdCBPU1R5cGUgdmlkZW9DYXB0dXJlRm9ybWF0ID0ga0NWUGl4CiBjb25zdCBPU1R5cGUgdmlk
ZW9DYXB0dXJlRm9ybWF0ID0ga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjhCaVBsYW5hckZ1
bGxSYW5nZTsKICNlbmRpZgogCi1jbGFzcyBBVlZpZGVvQ2FwdHVyZVNvdXJjZUZhY3RvcnkgOiBw
dWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW9DYXB0dXJlRmFjdG9yeQotI2lmIFBMQVRG
T1JNKElPUykKLSAgICAsIHB1YmxpYyBSZWFsdGltZU1lZGlhU291cmNlOjpTaW5nbGVTb3VyY2VG
YWN0b3J5PEFWVmlkZW9DYXB0dXJlU291cmNlPgotI2VuZGlmCitDYXB0dXJlU291cmNlT3JFcnJv
ciBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgaWQsIGNv
bnN0IE1lZGlhQ29uc3RyYWludHMqIGNvbnN0cmFpbnRzKQogewotcHVibGljOgotICAgIENhcHR1
cmVTb3VyY2VPckVycm9yIGNyZWF0ZVZpZGVvQ2FwdHVyZVNvdXJjZShjb25zdCBTdHJpbmcmIGRl
dmljZUlELCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzKiBjb25zdHJhaW50cykgZmluYWwgewotICAg
ICAgICBBVkNhcHR1cmVEZXZpY2VUeXBlZGVmICpkZXZpY2UgPSBbZ2V0QVZDYXB0dXJlRGV2aWNl
Q2xhc3MoKSBkZXZpY2VXaXRoVW5pcXVlSUQ6ZGV2aWNlSURdOwotICAgICAgICBpZiAoIWRldmlj
ZSkKLSAgICAgICAgICAgIHJldHVybiB7IH07Ci0gICAgICAgIHJldHVybiBBVlZpZGVvQ2FwdHVy
ZVNvdXJjZTo6Y3JlYXRlKGRldmljZSwgZGV2aWNlSUQsIGNvbnN0cmFpbnRzKTsKLSAgICB9Ci0K
LSNpZiBQTEFURk9STShJT1MpCi1wcml2YXRlOgotICAgIHZvaWQgc2V0VmlkZW9DYXB0dXJlUGFn
ZVN0YXRlKGJvb2wgaW50ZXJydXB0ZWQsIGJvb2wgcGFnZU11dGVkKQotICAgIHsKLSAgICAgICAg
aWYgKGFjdGl2ZVNvdXJjZSgpKQotICAgICAgICAgICAgYWN0aXZlU291cmNlKCktPnNldEludGVy
cnVwdGVkKGludGVycnVwdGVkLCBwYWdlTXV0ZWQpOwotICAgIH0KLSNlbmRpZgotfTsKKyAgICBB
VkNhcHR1cmVEZXZpY2VUeXBlZGVmICpkZXZpY2UgPSBbZ2V0QVZDYXB0dXJlRGV2aWNlQ2xhc3Mo
KSBkZXZpY2VXaXRoVW5pcXVlSUQ6aWRdOworICAgIGlmICghZGV2aWNlKQorICAgICAgICByZXR1
cm4geyB9OwogCi1DYXB0dXJlU291cmNlT3JFcnJvciBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6Y3Jl
YXRlKEFWQ2FwdHVyZURldmljZVR5cGVkZWYqIGRldmljZSwgY29uc3QgQXRvbWljU3RyaW5nJiBp
ZCwgY29uc3QgTWVkaWFDb25zdHJhaW50cyogY29uc3RyYWludHMpCi17CiAgICAgYXV0byBzb3Vy
Y2UgPSBhZG9wdFJlZigqbmV3IEFWVmlkZW9DYXB0dXJlU291cmNlKGRldmljZSwgaWQpKTsKICAg
ICBpZiAoY29uc3RyYWludHMpIHsKICAgICAgICAgYXV0byByZXN1bHQgPSBzb3VyY2UtPmFwcGx5
Q29uc3RyYWludHMoKmNvbnN0cmFpbnRzKTsKQEAgLTE0NSwxNyArMTI2LDYgQEAgQ2FwdHVyZVNv
dXJjZU9yRXJyb3IgQVZWaWRlb0NhcHR1cmVTb3VyYwogICAgIHJldHVybiBDYXB0dXJlU291cmNl
T3JFcnJvcihXVEZNb3ZlKHNvdXJjZSkpOwogfQogCi1zdGF0aWMgQVZWaWRlb0NhcHR1cmVTb3Vy
Y2VGYWN0b3J5JiBhdlZpZGVvQ2FwdHVyZVNvdXJjZUZhY3RvcnkoKQotewotICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxBVlZpZGVvQ2FwdHVyZVNvdXJjZUZhY3Rvcnk+IGZhY3Rvcnk7Ci0gICAg
cmV0dXJuIGZhY3RvcnkuZ2V0KCk7Ci19Ci0KLVJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvQ2Fw
dHVyZUZhY3RvcnkmIEFWVmlkZW9DYXB0dXJlU291cmNlOjpmYWN0b3J5KCkKLXsKLSAgICByZXR1
cm4gYXZWaWRlb0NhcHR1cmVTb3VyY2VGYWN0b3J5KCk7Ci19Ci0KIEFWVmlkZW9DYXB0dXJlU291
cmNlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZShBVkNhcHR1cmVEZXZpY2VUeXBlZGVmKiBkZXZpY2Us
IGNvbnN0IEF0b21pY1N0cmluZyYgaWQpCiAgICAgOiBBVk1lZGlhQ2FwdHVyZVNvdXJjZShkZXZp
Y2UsIGlkLCBUeXBlOjpWaWRlbykKIHsKQEAgLTE2NCw3ICsxMzQsNyBAQCBBVlZpZGVvQ2FwdHVy
ZVNvdXJjZTo6QVZWaWRlb0NhcHR1cmVTb3VyCiBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6fkFWVmlk
ZW9DYXB0dXJlU291cmNlKCkKIHsKICNpZiBQTEFURk9STShJT1MpCi0gICAgYXZWaWRlb0NhcHR1
cmVTb3VyY2VGYWN0b3J5KCkudW5zZXRBY3RpdmVTb3VyY2UoKnRoaXMpOworICAgIFJlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXJNYWM6OnZpZGVvQ2FwdHVyZVNvdXJjZUZhY3RvcnkoKS51bnNldEFj
dGl2ZVNvdXJjZSgqdGhpcyk7CiAjZW5kaWYKIH0KIApAQCAtNDE0LDcgKzM4NCw3IEBAIHN0YXRp
YyBpbmxpbmUgaW50IHNlbnNvck9yaWVudGF0aW9uRnJvbVYKIGJvb2wgQVZWaWRlb0NhcHR1cmVT
b3VyY2U6OnNldHVwQ2FwdHVyZVNlc3Npb24oKQogewogI2lmIFBMQVRGT1JNKElPUykKLSAgICBh
dlZpZGVvQ2FwdHVyZVNvdXJjZUZhY3RvcnkoKS5zZXRBY3RpdmVTb3VyY2UoKnRoaXMpOworICAg
IFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OnZpZGVvQ2FwdHVyZVNvdXJjZUZhY3Rvcnko
KS5zZXRBY3RpdmVTb3VyY2UoKnRoaXMpOwogI2VuZGlmCiAKICAgICBOU0Vycm9yICplcnJvciA9
IG5pbDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3Jl
QXVkaW9DYXB0dXJlU291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHAJKHJldmlzaW9u
IDIyNTI3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3Jl
QXVkaW9DYXB0dXJlU291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsOSArNTQsNiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgUEFMOwogCiBjbGFzcyBDb3JlQXVk
aW9DYXB0dXJlU291cmNlRmFjdG9yeSA6IHB1YmxpYyBSZWFsdGltZU1lZGlhU291cmNlOjpBdWRp
b0NhcHR1cmVGYWN0b3J5Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgICwgcHVibGljIFJlYWx0aW1l
TWVkaWFTb3VyY2U6OlNpbmdsZVNvdXJjZUZhY3Rvcnk8Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZT4K
LSNlbmRpZgogewogcHVibGljOgogICAgIENhcHR1cmVTb3VyY2VPckVycm9yIGNyZWF0ZUF1ZGlv
Q2FwdHVyZVNvdXJjZShjb25zdCBTdHJpbmcmIGRldmljZUlELCBjb25zdCBNZWRpYUNvbnN0cmFp
bnRzKiBjb25zdHJhaW50cykgZmluYWwgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyTWFjLmNwcAkocmV2aXNpb24gMjI1MjcxKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCwzNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK2NsYXNzIFZpZGVvQ2FwdHVyZVNvdXJjZUZhY3RvcnlNYWMgZmluYWwgOiBwdWJsaWMg
UmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW9DYXB0dXJlRmFjdG9yeQoreworcHVibGljOgorICAg
IENhcHR1cmVTb3VyY2VPckVycm9yIGNyZWF0ZVZpZGVvQ2FwdHVyZVNvdXJjZShjb25zdCBTdHJp
bmcmIGlkLCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzKiBjb25zdHJhaW50cykgZmluYWwKKyAgICB7
CisgICAgICAgIHJldHVybiBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6Y3JlYXRlKGlkLCBjb25zdHJh
aW50cyk7CisgICAgfQorCisjaWYgUExBVEZPUk0oSU9TKQorcHJpdmF0ZToKKyAgICB2b2lkIHNl
dFZpZGVvQ2FwdHVyZVBhZ2VTdGF0ZShib29sIGludGVycnVwdGVkLCBib29sIHBhZ2VNdXRlZCkK
KyAgICB7CisgICAgICAgIGlmIChhY3RpdmVTb3VyY2UoKSkKKyAgICAgICAgICAgIGFjdGl2ZVNv
dXJjZSgpLT5zZXRJbnRlcnJ1cHRlZChpbnRlcnJ1cHRlZCwgcGFnZU11dGVkKTsKKyAgICB9Cisj
ZW5kaWYKK307CisKK1JlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvQ2FwdHVyZUZhY3RvcnkmIFJl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OnZpZGVvQ2FwdHVyZVNvdXJjZUZhY3RvcnkoKQor
eworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWaWRlb0NhcHR1cmVTb3VyY2VGYWN0b3J5TWFj
PiBmYWN0b3J5OworICAgIHJldHVybiBmYWN0b3J5LmdldCgpOworfQorCitSZWFsdGltZU1lZGlh
U291cmNlOjpBdWRpb0NhcHR1cmVGYWN0b3J5JiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFj
OjphdWRpb0NhcHR1cmVTb3VyY2VGYWN0b3J5KCkKK3sKKyAgICByZXR1cm4gUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlck1hYzo6c2luZ2xldG9uKCkuYXVkaW9GYWN0b3J5KCk7Cit9CisKIFJlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMmIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OnNp
bmdsZXRvbigpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKQEAgLTU2LDI4ICs4NSwy
NSBAQCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyJiBSZWFsdGltZU1lZGlhCiAgICAgcmV0dXJu
IFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OnNpbmdsZXRvbigpOwogfQogCi1SZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyTWFjOjpSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjKCkKLXsK
LSAgICBtX3N1cHBvcnRlZENvbnN0cmFpbnRzLnNldFN1cHBvcnRzU2FtcGxlUmF0ZShmYWxzZSk7
Ci0gICAgbV9zdXBwb3J0ZWRDb25zdHJhaW50cy5zZXRTdXBwb3J0c1NhbXBsZVNpemUoZmFsc2Up
OwotICAgIG1fc3VwcG9ydGVkQ29uc3RyYWludHMuc2V0U3VwcG9ydHNFY2hvQ2FuY2VsbGF0aW9u
KGZhbHNlKTsKLSAgICBtX3N1cHBvcnRlZENvbnN0cmFpbnRzLnNldFN1cHBvcnRzR3JvdXBJZCh0
cnVlKTsKLX0KK1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OlJlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXJNYWMoKSA9IGRlZmF1bHQ7CiAKIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6
On5SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjKCkgPSBkZWZhdWx0OwogCiAKLVJlYWx0aW1l
TWVkaWFTb3VyY2U6OkF1ZGlvQ2FwdHVyZUZhY3RvcnkmIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXJNYWM6OmRlZmF1bHRBdWRpb0ZhY3RvcnkoKQorUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW9D
YXB0dXJlRmFjdG9yeSYgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYzo6YXVkaW9GYWN0b3J5
KCkKIHsKKyAgICBpZiAobV9hdWRpb0ZhY3RvcnlPdmVycmlkZSkKKyAgICAgICAgcmV0dXJuICpt
X2F1ZGlvRmFjdG9yeU92ZXJyaWRlOworCiAgICAgcmV0dXJuIENvcmVBdWRpb0NhcHR1cmVTb3Vy
Y2U6OmZhY3RvcnkoKTsKIH0KIAotUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW9DYXB0dXJlRmFj
dG9yeSYgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYzo6ZGVmYXVsdFZpZGVvRmFjdG9yeSgp
CitSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlb0NhcHR1cmVGYWN0b3J5JiBSZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyTWFjOjp2aWRlb0ZhY3RvcnkoKQogewotICAgIHJldHVybiBBVlZpZGVvQ2Fw
dHVyZVNvdXJjZTo6ZmFjdG9yeSgpOworICAgIHJldHVybiB2aWRlb0NhcHR1cmVTb3VyY2VGYWN0
b3J5KCk7CiB9CiAKLUNhcHR1cmVEZXZpY2VNYW5hZ2VyJiBSZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyTWFjOjpkZWZhdWx0QXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlcigpCitDYXB0dXJlRGV2aWNl
TWFuYWdlciYgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYzo6YXVkaW9DYXB0dXJlRGV2aWNl
TWFuYWdlcigpCiB7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHJldHVybiBDb3JlQXVkaW9DYXB0
dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCk7CkBAIC04Niw3ICsxMTIsNyBAQCBDYXB0dXJl
RGV2aWNlTWFuYWdlciYgUmVhbHRpbWVNZWRpYVNvdXJjCiAjZW5kaWYKIH0KIAotQ2FwdHVyZURl
dmljZU1hbmFnZXImIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OmRlZmF1bHRWaWRlb0Nh
cHR1cmVEZXZpY2VNYW5hZ2VyKCkKK0NhcHR1cmVEZXZpY2VNYW5hZ2VyJiBSZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyTWFjOjp2aWRlb0NhcHR1cmVEZXZpY2VNYW5hZ2VyKCkKIHsKICAgICByZXR1
cm4gQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCk7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
ck1hYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmgJKHJldmlzaW9uIDIyNTI3MSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291
cmNlQ2VudGVyTWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEzLTIwMTYgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMy0yMDE3IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ0LDE2ICs0NCwyNCBAQCBjbGFz
cyBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjIGZpbmFsCiBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMmIHNpbmdsZXRvbigp
OwogCisgICAgc3RhdGljIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvQ2FwdHVyZUZhY3Rvcnkm
IHZpZGVvQ2FwdHVyZVNvdXJjZUZhY3RvcnkoKTsKKyAgICBzdGF0aWMgUmVhbHRpbWVNZWRpYVNv
dXJjZTo6QXVkaW9DYXB0dXJlRmFjdG9yeSYgYXVkaW9DYXB0dXJlU291cmNlRmFjdG9yeSgpOwor
CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBOZXZlckRlc3Ryb3llZDxSZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyTWFjPjsKICAgICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjKCk7CiAg
ICAgflJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMoKTsKIAotICAgIFJlYWx0aW1lTWVkaWFT
b3VyY2U6OkF1ZGlvQ2FwdHVyZUZhY3RvcnkmIGRlZmF1bHRBdWRpb0ZhY3RvcnkoKSBmaW5hbDsK
LSAgICBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlb0NhcHR1cmVGYWN0b3J5JiBkZWZhdWx0Vmlk
ZW9GYWN0b3J5KCkgZmluYWw7CisgICAgdm9pZCBzZXRBdWRpb0ZhY3RvcnkoUmVhbHRpbWVNZWRp
YVNvdXJjZTo6QXVkaW9DYXB0dXJlRmFjdG9yeSYgZmFjdG9yeSkgZmluYWwgeyBtX2F1ZGlvRmFj
dG9yeU92ZXJyaWRlID0gJmZhY3Rvcnk7IH0KKyAgICB2b2lkIHVuc2V0QXVkaW9GYWN0b3J5KFJl
YWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvQ2FwdHVyZUZhY3RvcnkmKSBmaW5hbCB7IG1fYXVkaW9G
YWN0b3J5T3ZlcnJpZGUgPSBudWxscHRyOyB9CisKKyAgICBSZWFsdGltZU1lZGlhU291cmNlOjpB
dWRpb0NhcHR1cmVGYWN0b3J5JiBhdWRpb0ZhY3RvcnkoKSBmaW5hbDsKKyAgICBSZWFsdGltZU1l
ZGlhU291cmNlOjpWaWRlb0NhcHR1cmVGYWN0b3J5JiB2aWRlb0ZhY3RvcnkoKSBmaW5hbDsKKwor
ICAgIENhcHR1cmVEZXZpY2VNYW5hZ2VyJiBhdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyKCkgZmlu
YWw7CisgICAgQ2FwdHVyZURldmljZU1hbmFnZXImIHZpZGVvQ2FwdHVyZURldmljZU1hbmFnZXIo
KSBmaW5hbDsKIAotICAgIENhcHR1cmVEZXZpY2VNYW5hZ2VyJiBkZWZhdWx0QXVkaW9DYXB0dXJl
RGV2aWNlTWFuYWdlcigpIGZpbmFsOwotICAgIENhcHR1cmVEZXZpY2VNYW5hZ2VyJiBkZWZhdWx0
VmlkZW9DYXB0dXJlRGV2aWNlTWFuYWdlcigpIGZpbmFsOworICAgIFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OkF1ZGlvQ2FwdHVyZUZhY3RvcnkqIG1fYXVkaW9GYWN0b3J5T3ZlcnJpZGUgeyBudWxscHRy
IH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmNwcAko
cmV2aXNpb24gMjI1MjcxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVh
bHRpbWVBdWRpb1NvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1
ZGUgIkNhcHR1cmVEZXZpY2UuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVk
aWFDb25zdHJhaW50cy5oIgorI2luY2x1ZGUgIk1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJSZWFsdGltZU1lZGlh
U291cmNlU2V0dGluZ3MuaCIKICNpbmNsdWRlIDx3dGYvVVVJRC5oPgpAQCAtNDIsOSArNDMsNiBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZUZh
Y3RvcnkgOiBwdWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW9DYXB0dXJlRmFjdG9yeQot
I2lmIFBMQVRGT1JNKElPUykKLSAgICAsIHB1YmxpYyBSZWFsdGltZU1lZGlhU291cmNlOjpTaW5n
bGVTb3VyY2VGYWN0b3J5PE1vY2tSZWFsdGltZUF1ZGlvU291cmNlPgotI2VuZGlmCiB7CiBwdWJs
aWM6CiAgICAgQ2FwdHVyZVNvdXJjZU9yRXJyb3IgY3JlYXRlQXVkaW9DYXB0dXJlU291cmNlKGNv
bnN0IFN0cmluZyYgZGV2aWNlSUQsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMqIGNvbnN0cmFpbnRz
KSBmaW5hbCB7CkBAIC05NCw3ICs5Miw3IEBAIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjpNb2Nr
UmVhbHRpbWVBdWQKIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjp+TW9ja1JlYWx0aW1lQXVkaW9T
b3VyY2UoKQogewogI2lmIFBMQVRGT1JNKElPUykKLSAgICBtb2NrQXVkaW9DYXB0dXJlU291cmNl
RmFjdG9yeSgpLnVuc2V0QWN0aXZlU291cmNlKCp0aGlzKTsKKyAgICBNb2NrUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlcjo6YXVkaW9DYXB0dXJlU291cmNlRmFjdG9yKCkudW5zZXRBY3RpdmVTb3Vy
Y2UoKnRoaXMpOwogI2VuZGlmCiB9CiAKQEAgLTEyMiw3ICsxMjAsNyBAQCB2b2lkIE1vY2tSZWFs
dGltZUF1ZGlvU291cmNlOjppbml0aWFsaXplCiB2b2lkIE1vY2tSZWFsdGltZUF1ZGlvU291cmNl
OjpzdGFydFByb2R1Y2luZ0RhdGEoKQogewogI2lmIFBMQVRGT1JNKElPUykKLSAgICBtb2NrQXVk
aW9DYXB0dXJlU291cmNlRmFjdG9yeSgpLnNldEFjdGl2ZVNvdXJjZSgqdGhpcyk7CisgICAgTW9j
a1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmF1ZGlvQ2FwdHVyZVNvdXJjZUZhY3RvcigpLnNl
dEFjdGl2ZVNvdXJjZSgqdGhpcyk7CiAjZW5kaWYKIAogICAgIGlmICghc2FtcGxlUmF0ZSgpKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9j
a1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaAkocmV2aXNpb24gMjI1MjcxKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjEw
NyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0zOSwxNCArMzksMTggQEAgY2xhc3MgTW9ja1JlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXIgZmluYQogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNl
dE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyRW5hYmxlZChib29sKTsKIAorICAgIHN0YXRp
YyBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlb0NhcHR1cmVGYWN0b3J5JiB2aWRlb0NhcHR1cmVT
b3VyY2VGYWN0b3J5KCkgeyByZXR1cm4gTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmZhY3Rvcnko
KTsgfQorICAgIHN0YXRpYyBSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpb0NhcHR1cmVGYWN0b3J5
JiBhdWRpb0NhcHR1cmVTb3VyY2VGYWN0b3J5KCkgeyByZXR1cm4gTW9ja1JlYWx0aW1lQXVkaW9T
b3VyY2U6OmZhY3RvcnkoKTsgfQorCiBwcml2YXRlOgogICAgIE1vY2tSZWFsdGltZU1lZGlhU291
cmNlQ2VudGVyKCkgPSBkZWZhdWx0OwogICAgIGZyaWVuZCBOZXZlckRlc3Ryb3llZDxNb2NrUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlcj47CiAKLSAgICBSZWFsdGltZU1lZGlhU291cmNlOjpBdWRp
b0NhcHR1cmVGYWN0b3J5JiBkZWZhdWx0QXVkaW9GYWN0b3J5KCkgZmluYWwgeyByZXR1cm4gTW9j
a1JlYWx0aW1lQXVkaW9Tb3VyY2U6OmZhY3RvcnkoKTsgfQotICAgIFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OlZpZGVvQ2FwdHVyZUZhY3RvcnkmIGRlZmF1bHRWaWRlb0ZhY3RvcnkoKSBmaW5hbCB7IHJl
dHVybiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6ZmFjdG9yeSgpOyB9Ci0gICAgQ2FwdHVyZURl
dmljZU1hbmFnZXImIGRlZmF1bHRBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyKCkgZmluYWwgeyBy
ZXR1cm4gbV9kZWZhdWx0QXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlcjsgfQotICAgIENhcHR1cmVE
ZXZpY2VNYW5hZ2VyJiBkZWZhdWx0VmlkZW9DYXB0dXJlRGV2aWNlTWFuYWdlcigpIGZpbmFsIHsg
cmV0dXJuIG1fZGVmYXVsdFZpZGVvQ2FwdHVyZURldmljZU1hbmFnZXI7IH0KKyAgICBSZWFsdGlt
ZU1lZGlhU291cmNlOjpBdWRpb0NhcHR1cmVGYWN0b3J5JiBhdWRpb0ZhY3RvcnkoKSBmaW5hbCB7
IHJldHVybiBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6ZmFjdG9yeSgpOyB9CisgICAgUmVhbHRp
bWVNZWRpYVNvdXJjZTo6VmlkZW9DYXB0dXJlRmFjdG9yeSYgdmlkZW9GYWN0b3J5KCkgZmluYWwg
eyByZXR1cm4gTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmZhY3RvcnkoKTsgfQorCisgICAgQ2Fw
dHVyZURldmljZU1hbmFnZXImIGF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIoKSBmaW5hbCB7IHJl
dHVybiBtX2F1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXI7IH0KKyAgICBDYXB0dXJlRGV2aWNlTWFu
YWdlciYgdmlkZW9DYXB0dXJlRGV2aWNlTWFuYWdlcigpIGZpbmFsIHsgcmV0dXJuIG1fdmlkZW9D
YXB0dXJlRGV2aWNlTWFuYWdlcjsgfQogCiAgICAgY2xhc3MgTW9ja0F1ZGlvQ2FwdHVyZURldmlj
ZU1hbmFnZXIgZmluYWwgOiBwdWJsaWMgQ2FwdHVyZURldmljZU1hbmFnZXIgewogICAgIHByaXZh
dGU6CkBAIC01Nyw4ICs2MSw4IEBAIHByaXZhdGU6CiAgICAgICAgIFZlY3RvcjxDYXB0dXJlRGV2
aWNlPiYgY2FwdHVyZURldmljZXMoKSBmaW5hbCB7IHJldHVybiBNb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZTo6dmlkZW9EZXZpY2VzKCk7IH0KICAgICB9OwogCi0gICAgTW9ja0F1ZGlvQ2FwdHVyZURl
dmljZU1hbmFnZXIgbV9kZWZhdWx0QXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlcjsKLSAgICBNb2Nr
VmlkZW9DYXB0dXJlRGV2aWNlTWFuYWdlciBtX2RlZmF1bHRWaWRlb0NhcHR1cmVEZXZpY2VNYW5h
Z2VyOworICAgIE1vY2tBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyIG1fYXVkaW9DYXB0dXJlRGV2
aWNlTWFuYWdlcjsKKyAgICBNb2NrVmlkZW9DYXB0dXJlRGV2aWNlTWFuYWdlciBtX3ZpZGVvQ2Fw
dHVyZURldmljZU1hbmFnZXI7CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAkocmV2aXNp
b24gMjI1MjcxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVW
aWRlb1NvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRl
ICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lZGlhQ29uc3Ry
YWludHMuaCIKKyNpbmNsdWRlICJNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oIgogI2lu
Y2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgogI2lu
Y2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oIgpAQCAtNDksOSArNTAsNiBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZUZhY3Rv
cnkgOiBwdWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW9DYXB0dXJlRmFjdG9yeQotI2lm
IFBMQVRGT1JNKElPUykKLSAgICAsIHB1YmxpYyBSZWFsdGltZU1lZGlhU291cmNlOjpTaW5nbGVT
b3VyY2VGYWN0b3J5PE1vY2tSZWFsdGltZVZpZGVvU291cmNlPgotI2VuZGlmCiB7CiBwdWJsaWM6
CiAgICAgQ2FwdHVyZVNvdXJjZU9yRXJyb3IgY3JlYXRlVmlkZW9DYXB0dXJlU291cmNlKGNvbnN0
IFN0cmluZyYgZGV2aWNlSUQsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMqIGNvbnN0cmFpbnRzKSBm
aW5hbCB7CkBAIC0xMTQsMTQgKzExMiwxNCBAQCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6TW9j
a1JlYWx0aW1lVmlkCiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6fk1vY2tSZWFsdGltZVZpZGVv
U291cmNlKCkKIHsKICNpZiBQTEFURk9STShJT1MpCi0gICAgbW9ja1ZpZGVvQ2FwdHVyZVNvdXJj
ZUZhY3RvcnkoKS51bnNldEFjdGl2ZVNvdXJjZSgqdGhpcyk7CisgICAgTW9ja1JlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXI6OnZpZGVvQ2FwdHVyZVNvdXJjZUZhY3RvcnkudW5zZXRBY3RpdmVTb3Vy
Y2UoKnRoaXMpOwogI2VuZGlmCiB9CiAKIHZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OnN0
YXJ0UHJvZHVjaW5nRGF0YSgpCiB7CiAjaWYgUExBVEZPUk0oSU9TKQotICAgIG1vY2tWaWRlb0Nh
cHR1cmVTb3VyY2VGYWN0b3J5KCkuc2V0QWN0aXZlU291cmNlKCp0aGlzKTsKKyAgICBNb2NrUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6dmlkZW9DYXB0dXJlU291cmNlRmFjdG9yeSgpLnNldEFj
dGl2ZVNvdXJjZSgqdGhpcyk7CiAjZW5kaWYKIAogICAgIGlmIChzaXplKCkuaXNFbXB0eSgpKSB7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291
cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZS5oCShyZXZpc2lvbiAyMjUyNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327943</attachid>
            <date>2017-11-29 18:29:09 -0800</date>
            <delta_ts>2017-11-29 19:36:30 -0800</delta_ts>
            <desc>Patch for landing.</desc>
            <filename>factory_cleanup_patch_4.txt</filename>
            <type>text/plain</type>
            <size>33432</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNTI4MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY4IEBACisyMDE3LTExLTI5ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVhbV0g
Q2xlYW4gdXAgYXVkaW8gYW5kIHZpZGVvIGNhcHR1cmUgZmFjdG9yaWVzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAxNTYKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzM1NzUzNDM1PgorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQu
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNldEF1ZGlvRmFjdG9y
eSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
Ojp1bnNldEF1ZGlvRmFjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyOjphdWRpb0ZhY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2V0VmlkZW9GYWN0b3J5KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnVuc2V0Vmlk
ZW9GYWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXI6OnZpZGVvRmFjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyOjpzZXRBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnVuc2V0
QXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpS
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjphdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNldFZp
ZGVvQ2FwdHVyZURldmljZU1hbmFnZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6dW5zZXRWaWRlb0NhcHR1cmVEZXZpY2VNYW5hZ2VyKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnZp
ZGVvQ2FwdHVyZURldmljZU1hbmFnZXIpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNldEF1ZGlvRmFjdG9yeSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjp1bnNldEF1ZGlvRmFjdG9yeSk6Cisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6ZmFj
aW5nTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6
OnZpZGVvRmFjaW5nTW9kZUVudW0pOgorICAgICAgICAoV2ViQ29yZTo6dXNlckZhY2luZyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjplbnZpcm9ubWVudEZhY2luZyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpsZWZ0RmFjaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OnJpZ2h0RmFjaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1l
TWVkaWFTb3VyY2VTZXR0aW5nczo6UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3Vy
Y2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVT
b3VyY2UubW06CisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291cmNlOjp+QVZWaWRlb0NhcHR1
cmVTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6QVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNldHVw
Q2FwdHVyZVNlc3Npb24pOgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkFWVmlkZW9DYXB0dXJlU291cmNlRmFjdG9yeTo6c2V0VmlkZW9DYXB0dXJlUGFnZVN0YXRlKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmF2VmlkZW9DYXB0dXJlU291cmNlRmFjdG9yeSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6ZmFjdG9y
eSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXJNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dmlkZW9DYXB0dXJl
U291cmNlRmFjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyTWFjOjphdWRpb0ZhY3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlck1hYzo6dmlkZW9GYWN0b3J5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXJNYWM6OmF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYzo6dmlkZW9DYXB0dXJlRGV2
aWNlTWFuYWdlcik6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
TWFjOjpSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OmRlZmF1bHRBdWRpb0ZhY3Rvcnkp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1h
Yzo6ZGVmYXVsdFZpZGVvRmFjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyTWFjOjpkZWZhdWx0QXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdl
cik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
TWFjOjpkZWZhdWx0VmlkZW9DYXB0dXJlRGV2aWNlTWFuYWdlcik6IERlbGV0ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjp+TW9ja1JlYWx0aW1l
QXVkaW9Tb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6
OnN0YXJ0UHJvZHVjaW5nRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2U6On5Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2Nr
UmVhbHRpbWVWaWRlb1NvdXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmg6CisKIDIwMTctMTEtMjkgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBJbnRyb2R1Y2UgU2VydmljZVdv
cmtlckNvbnRhaW5lcjo6ZW5zdXJlU1dDbGllbnRDb25uZWN0aW9uKCkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlh
U291cmNlLmgJKHJldmlzaW9uIDIyNTI3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtODQsOSAr
ODQsOSBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFi
bGUoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmLCBjb25zdCBBdWRp
b1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90IC8qbnVtYmVyT2ZGcmFtZXMqLykgeyB9CiAgICAg
fTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNvdXJjZT4gY2xhc3MgU2luZ2xlU291cmNlRmFj
dG9yeSB7CisgICAgY2xhc3MgU2luZ2xlU291cmNlRmFjdG9yeSB7CiAgICAgcHVibGljOgotICAg
ICAgICB2b2lkIHNldEFjdGl2ZVNvdXJjZShTb3VyY2UmIHNvdXJjZSkKKyAgICAgICAgdm9pZCBz
ZXRBY3RpdmVTb3VyY2UoUmVhbHRpbWVNZWRpYVNvdXJjZSYgc291cmNlKQogICAgICAgICB7CiAg
ICAgICAgICAgICBpZiAobV9hY3RpdmVTb3VyY2UgPT0gJnNvdXJjZSkKICAgICAgICAgICAgICAg
ICByZXR1cm47CkBAIC05NSw3ICs5NSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fYWN0aXZl
U291cmNlID0gJnNvdXJjZTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgdW5zZXRBY3RpdmVT
b3VyY2UoU291cmNlJiBzb3VyY2UpCisgICAgICAgIHZvaWQgdW5zZXRBY3RpdmVTb3VyY2UoUmVh
bHRpbWVNZWRpYVNvdXJjZSYgc291cmNlKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAobV9h
Y3RpdmVTb3VyY2UgPT0gJnNvdXJjZSkKICAgICAgICAgICAgICAgICBtX2FjdGl2ZVNvdXJjZSA9
IG51bGxwdHI7CkBAIC0xMDYsNyArMTA2LDExIEBAIHB1YmxpYzoKICAgICAgICAgUmVhbHRpbWVN
ZWRpYVNvdXJjZSogbV9hY3RpdmVTb3VyY2UgeyBudWxscHRyIH07CiAgICAgfTsKIAotICAgIGNs
YXNzIEF1ZGlvQ2FwdHVyZUZhY3RvcnkgeworICAgIGNsYXNzIEF1ZGlvQ2FwdHVyZUZhY3RvcnkK
KyNpZiBQTEFURk9STShJT1MpCisgICAgICAgIDogcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2U6
OlNpbmdsZVNvdXJjZUZhY3RvcnkKKyNlbmRpZgorICAgIHsKICAgICBwdWJsaWM6CiAgICAgICAg
IHZpcnR1YWwgfkF1ZGlvQ2FwdHVyZUZhY3RvcnkoKSA9IGRlZmF1bHQ7CiAgICAgICAgIHZpcnR1
YWwgQ2FwdHVyZVNvdXJjZU9yRXJyb3IgY3JlYXRlQXVkaW9DYXB0dXJlU291cmNlKGNvbnN0IFN0
cmluZyYgYXVkaW9EZXZpY2VJRCwgY29uc3QgTWVkaWFDb25zdHJhaW50cyopID0gMDsKQEAgLTEx
NSw3ICsxMTksMTEgQEAgcHVibGljOgogICAgICAgICBBdWRpb0NhcHR1cmVGYWN0b3J5KCkgPSBk
ZWZhdWx0OwogICAgIH07CiAKLSAgICBjbGFzcyBWaWRlb0NhcHR1cmVGYWN0b3J5IHsKKyAgICBj
bGFzcyBWaWRlb0NhcHR1cmVGYWN0b3J5CisjaWYgUExBVEZPUk0oSU9TKQorICAgICAgICA6IHB1
YmxpYyBSZWFsdGltZU1lZGlhU291cmNlOjpTaW5nbGVTb3VyY2VGYWN0b3J5CisjZW5kaWYKKyAg
ICB7CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIH5WaWRlb0NhcHR1cmVGYWN0b3J5KCkg
PSBkZWZhdWx0OwogICAgICAgICB2aXJ0dWFsIENhcHR1cmVTb3VyY2VPckVycm9yIGNyZWF0ZVZp
ZGVvQ2FwdHVyZVNvdXJjZShjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNlSUQsIGNvbnN0IE1lZGlh
Q29uc3RyYWludHMqKSA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNw
cAkocmV2aXNpb24gMjI1MjcxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOCw3
MCArMTM4LDYgQEAgVmVjdG9yPENhcHR1cmVEZXZpY2U+IFJlYWx0aW1lTWVkaWFTb3VyYwogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2V0
QXVkaW9GYWN0b3J5KFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvQ2FwdHVyZUZhY3RvcnkmIGZh
Y3RvcnkpCi17Ci0gICAgbV9hdWRpb0ZhY3RvcnkgPSAmZmFjdG9yeTsKLX0KLQotdm9pZCBSZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyOjp1bnNldEF1ZGlvRmFjdG9yeShSZWFsdGltZU1lZGlhU291
cmNlOjpBdWRpb0NhcHR1cmVGYWN0b3J5JiBmYWN0b3J5KQotewotICAgIGlmIChtX2F1ZGlvRmFj
dG9yeSA9PSAmZmFjdG9yeSkKLSAgICAgICAgbV9hdWRpb0ZhY3RvcnkgPSBudWxscHRyOwotfQot
Ci1SZWFsdGltZU1lZGlhU291cmNlOjpBdWRpb0NhcHR1cmVGYWN0b3J5JiBSZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyOjphdWRpb0ZhY3RvcnkoKQotewotICAgIHJldHVybiBtX2F1ZGlvRmFjdG9y
eSA/ICptX2F1ZGlvRmFjdG9yeSA6IGRlZmF1bHRBdWRpb0ZhY3RvcnkoKTsKLX0KLQotdm9pZCBS
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzZXRWaWRlb0ZhY3RvcnkoUmVhbHRpbWVNZWRpYVNv
dXJjZTo6VmlkZW9DYXB0dXJlRmFjdG9yeSYgZmFjdG9yeSkKLXsKLSAgICBtX3ZpZGVvRmFjdG9y
eSA9ICZmYWN0b3J5OwotfQotCi12b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnVuc2V0
VmlkZW9GYWN0b3J5KFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvQ2FwdHVyZUZhY3RvcnkmIGZh
Y3RvcnkpCi17Ci0gICAgaWYgKG1fdmlkZW9GYWN0b3J5ID09ICZmYWN0b3J5KQotICAgICAgICBt
X3ZpZGVvRmFjdG9yeSA9IG51bGxwdHI7Ci19Ci0KLVJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVv
Q2FwdHVyZUZhY3RvcnkmIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnZpZGVvRmFjdG9yeSgp
Ci17Ci0gICAgcmV0dXJuIG1fdmlkZW9GYWN0b3J5ID8gKm1fdmlkZW9GYWN0b3J5IDogZGVmYXVs
dFZpZGVvRmFjdG9yeSgpOwotfQotCi12b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNl
dEF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIoQ2FwdHVyZURldmljZU1hbmFnZXImIGRldmljZU1h
bmFnZXIpCi17Ci0gICAgbV9hdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyID0gJmRldmljZU1hbmFn
ZXI7Ci19Ci0KLXZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6dW5zZXRBdWRpb0NhcHR1
cmVEZXZpY2VNYW5hZ2VyKENhcHR1cmVEZXZpY2VNYW5hZ2VyJiBkZXZpY2VNYW5hZ2VyKQotewot
ICAgIGlmIChtX2F1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIgPT0gJmRldmljZU1hbmFnZXIpCi0g
ICAgICAgIG1fYXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlciA9IG51bGxwdHI7Ci19Ci0KLUNhcHR1
cmVEZXZpY2VNYW5hZ2VyJiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjphdWRpb0NhcHR1cmVE
ZXZpY2VNYW5hZ2VyKCkKLXsKLSAgICByZXR1cm4gbV9hdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2Vy
ID8gKm1fYXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlciA6IGRlZmF1bHRBdWRpb0NhcHR1cmVEZXZp
Y2VNYW5hZ2VyKCk7Ci19Ci0KLXZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2V0Vmlk
ZW9DYXB0dXJlRGV2aWNlTWFuYWdlcihDYXB0dXJlRGV2aWNlTWFuYWdlciYgZGV2aWNlTWFuYWdl
cikKLXsKLSAgICBtX3ZpZGVvQ2FwdHVyZURldmljZU1hbmFnZXIgPSAmZGV2aWNlTWFuYWdlcjsK
LX0KLQotdm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjp1bnNldFZpZGVvQ2FwdHVyZURl
dmljZU1hbmFnZXIoQ2FwdHVyZURldmljZU1hbmFnZXImIGRldmljZU1hbmFnZXIpCi17Ci0gICAg
aWYgKG1fdmlkZW9DYXB0dXJlRGV2aWNlTWFuYWdlciA9PSAmZGV2aWNlTWFuYWdlcikKLSAgICAg
ICAgbV92aWRlb0NhcHR1cmVEZXZpY2VNYW5hZ2VyID0gbnVsbHB0cjsKLX0KLQotQ2FwdHVyZURl
dmljZU1hbmFnZXImIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnZpZGVvQ2FwdHVyZURldmlj
ZU1hbmFnZXIoKQotewotICAgIHJldHVybiBtX3ZpZGVvQ2FwdHVyZURldmljZU1hbmFnZXIgPyAq
bV92aWRlb0NhcHR1cmVEZXZpY2VNYW5hZ2VyIDogZGVmYXVsdFZpZGVvQ2FwdHVyZURldmljZU1h
bmFnZXIoKTsKLX0KLQogc3RhdGljIHZvaWQgYWRkU3RyaW5nVG9TSEExKFNIQTEmIHNoYTEsIGNv
bnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIGlmIChzdHJpbmcuaXNFbXB0eSgpKQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaAkocmV2aXNpb24gMjI1MjcxKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAx
MSBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAx
MiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEz
LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEzLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC02OSwyNyArNjksMTQgQEAgcHVibGljOgogICAgIAogICAgIGNv
bnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyYgc3VwcG9ydGVkQ29u
c3RyYWludHMoKSB7IHJldHVybiBtX3N1cHBvcnRlZENvbnN0cmFpbnRzOyB9CiAKLSAgICB2aXJ0
dWFsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvQ2FwdHVyZUZhY3RvcnkmIGRlZmF1bHRBdWRp
b0ZhY3RvcnkoKSA9IDA7Ci0gICAgdmlydHVhbCBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlb0Nh
cHR1cmVGYWN0b3J5JiBkZWZhdWx0VmlkZW9GYWN0b3J5KCkgPSAwOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZpcnR1YWwgdm9pZCBzZXRBdWRpb0ZhY3RvcnkoUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVk
aW9DYXB0dXJlRmFjdG9yeSYpIHsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCB1
bnNldEF1ZGlvRmFjdG9yeShSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpb0NhcHR1cmVGYWN0b3J5
JikgeyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBSZWFsdGltZU1lZGlhU291cmNlOjpB
dWRpb0NhcHR1cmVGYWN0b3J5JiBhdWRpb0ZhY3RvcnkoKSA9IDA7CiAKLSAgICB2aXJ0dWFsIENh
cHR1cmVEZXZpY2VNYW5hZ2VyJiBkZWZhdWx0QXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlcigpID0g
MDsKLSAgICB2aXJ0dWFsIENhcHR1cmVEZXZpY2VNYW5hZ2VyJiBkZWZhdWx0VmlkZW9DYXB0dXJl
RGV2aWNlTWFuYWdlcigpID0gMDsKKyAgICB2aXJ0dWFsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZp
ZGVvQ2FwdHVyZUZhY3RvcnkmIHZpZGVvRmFjdG9yeSgpID0gMDsKIAotICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0QXVkaW9GYWN0b3J5KFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvQ2FwdHVy
ZUZhY3RvcnkmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVuc2V0QXVkaW9GYWN0b3J5KFJl
YWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvQ2FwdHVyZUZhY3RvcnkmKTsKLSAgICBXRUJDT1JFX0VY
UE9SVCBSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpb0NhcHR1cmVGYWN0b3J5JiBhdWRpb0ZhY3Rv
cnkoKTsKLQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VmlkZW9GYWN0b3J5KFJlYWx0aW1l
TWVkaWFTb3VyY2U6OlZpZGVvQ2FwdHVyZUZhY3RvcnkmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHVuc2V0VmlkZW9GYWN0b3J5KFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvQ2FwdHVyZUZh
Y3RvcnkmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlb0Nh
cHR1cmVGYWN0b3J5JiB2aWRlb0ZhY3RvcnkoKTsKLQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0QXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlcihDYXB0dXJlRGV2aWNlTWFuYWdlciYpOwotICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgdW5zZXRBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyKENhcHR1
cmVEZXZpY2VNYW5hZ2VyJik7Ci0gICAgQ2FwdHVyZURldmljZU1hbmFnZXImIGF1ZGlvQ2FwdHVy
ZURldmljZU1hbmFnZXIoKTsKLQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VmlkZW9DYXB0
dXJlRGV2aWNlTWFuYWdlcihDYXB0dXJlRGV2aWNlTWFuYWdlciYpOwotICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgdW5zZXRWaWRlb0NhcHR1cmVEZXZpY2VNYW5hZ2VyKENhcHR1cmVEZXZpY2VNYW5h
Z2VyJik7Ci0gICAgQ2FwdHVyZURldmljZU1hbmFnZXImIHZpZGVvQ2FwdHVyZURldmljZU1hbmFn
ZXIoKTsKKyAgICB2aXJ0dWFsIENhcHR1cmVEZXZpY2VNYW5hZ2VyJiBhdWRpb0NhcHR1cmVEZXZp
Y2VNYW5hZ2VyKCkgPSAwOworICAgIHZpcnR1YWwgQ2FwdHVyZURldmljZU1hbmFnZXImIHZpZGVv
Q2FwdHVyZURldmljZU1hbmFnZXIoKSA9IDA7CiAKICAgICBTdHJpbmcgaGFzaFN0cmluZ1dpdGhT
YWx0KGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0IFN0cmluZyYgaGFzaFNhbHQpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8Q2FwdHVyZURldmljZT4gY2FwdHVyZURldmljZVdpdGhV
bmlxdWVJRChjb25zdCBTdHJpbmcmIGlkLCBjb25zdCBTdHJpbmcmIGhhc2hTYWx0KTsKQEAgLTEw
OCw5ICs5NSw2IEBAIHByb3RlY3RlZDoKICAgICBzdGF0aWMgUmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlciYgcGxhdGZvcm1DZW50ZXIoKTsKICAgICBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVk
Q29uc3RyYWludHMgbV9zdXBwb3J0ZWRDb25zdHJhaW50czsKIAotICAgIFJlYWx0aW1lTWVkaWFT
b3VyY2U6OkF1ZGlvQ2FwdHVyZUZhY3RvcnkqIG1fYXVkaW9GYWN0b3J5IHsgbnVsbHB0ciB9Owot
ICAgIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvQ2FwdHVyZUZhY3RvcnkqIG1fdmlkZW9GYWN0
b3J5IHsgbnVsbHB0ciB9OwotCiAgICAgQ2FwdHVyZURldmljZU1hbmFnZXIqIG1fYXVkaW9DYXB0
dXJlRGV2aWNlTWFuYWdlciB7IG51bGxwdHIgfTsKICAgICBDYXB0dXJlRGV2aWNlTWFuYWdlciog
bV92aWRlb0NhcHR1cmVEZXZpY2VNYW5hZ2VyIHsgbnVsbHB0ciB9OwogfTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5n
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmNwcAkocmV2aXNpb24gMjI1MjcxKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRp
bmdzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNTggKzM3LDM0IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgdXNlckZhY2luZygpCitTdHJp
bmcgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpmYWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFT
b3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlIG1vZGUpCiB7Ci0gICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEF0b21pY1N0cmluZz4gdXNlckZhY2luZygidXNlciIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHJldHVybiB1c2VyRmFjaW5nOwotfQotc3RhdGlj
IGNvbnN0IEF0b21pY1N0cmluZyYgZW52aXJvbm1lbnRGYWNpbmcoKQotewotICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGVudmlyb25tZW50RmFjaW5nKCJlbnZpcm9ubWVu
dCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHJldHVybiBlbnZp
cm9ubWVudEZhY2luZzsKLX0KLQotc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgbGVmdEZhY2lu
ZygpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gbGVmdEZhY2lu
ZygibGVmdCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHJldHVy
biBsZWZ0RmFjaW5nOwotfQotCi1zdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiByaWdodEZhY2lu
ZygpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gcmlnaHRGYWNp
bmcoInJpZ2h0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0
dXJuIHJpZ2h0RmFjaW5nOwotfQotCi1jb25zdCBBdG9taWNTdHJpbmcmIFJlYWx0aW1lTWVkaWFT
b3VyY2VTZXR0aW5nczo6ZmFjaW5nTW9kZShSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlZp
ZGVvRmFjaW5nTW9kZSBtb2RlKQotewotICAgIHN3aXRjaCAobW9kZSkgewotICAgIGNhc2UgUmVh
bHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpVc2VyOgotICAgICAgICByZXR1cm4gdXNlckZhY2lu
ZygpOwotICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpFbnZpcm9ubWVudDoK
LSAgICAgICAgcmV0dXJuIGVudmlyb25tZW50RmFjaW5nKCk7Ci0gICAgY2FzZSBSZWFsdGltZU1l
ZGlhU291cmNlU2V0dGluZ3M6OkxlZnQ6Ci0gICAgICAgIHJldHVybiBsZWZ0RmFjaW5nKCk7Ci0g
ICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlJpZ2h0OgotICAgICAgICByZXR1
cm4gcmlnaHRGYWNpbmcoKTsKLSAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6
VW5rbm93bjoKLSAgICAgICAgcmV0dXJuIGVtcHR5QXRvbSgpOwotICAgIH0KLSAgICAKLSAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gZW1wdHlBdG9tKCk7CisgICAgc3RhdGlj
IGNvbnN0IE5ldmVyRGVzdHJveWVkPFN0cmluZz4gdmFsdWVzW10gPSB7CisgICAgICAgIE1BS0Vf
U1RBVElDX1NUUklOR19JTVBMKCJ1bmtub3duIiksCisgICAgICAgIE1BS0VfU1RBVElDX1NUUklO
R19JTVBMKCJ1c2VyIiksCisgICAgICAgIE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJlbnZpcm9u
bWVudCIpLAorICAgICAgICBNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgibGVmdCIpLAorICAgICAg
ICBNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgicmlnaHQiKSwKKyAgICB9OworICAgIHN0YXRpY19h
c3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlZp
ZGVvRmFjaW5nTW9kZTo6VW5rbm93bikgPT0gMCwgIlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5n
czo6VmlkZW9GYWNpbmdNb2RlOjpVbmtub3duIGlzIG5vdCAwIGFzIGV4cGVjdGVkIik7CisgICAg
c3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0
aW5nczo6VmlkZW9GYWNpbmdNb2RlOjpVc2VyKSA9PSAxLCAiUmVhbHRpbWVNZWRpYVNvdXJjZVNl
dHRpbmdzOjpWaWRlb0ZhY2luZ01vZGU6OlVzZXIgaXMgbm90IDEgYXMgZXhwZWN0ZWQiKTsKKyAg
ICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oUmVhbHRpbWVNZWRpYVNvdXJjZVNl
dHRpbmdzOjpWaWRlb0ZhY2luZ01vZGU6OkVudmlyb25tZW50KSA9PSAyLCAiUmVhbHRpbWVNZWRp
YVNvdXJjZVNldHRpbmdzOjpWaWRlb0ZhY2luZ01vZGU6OkVudmlyb25tZW50IGlzIG5vdCAyIGFz
IGV4cGVjdGVkIik7CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFJlYWx0
aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlOjpMZWZ0KSA9PSAzLCAiUmVh
bHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0ZhY2luZ01vZGU6OkxlZnQgaXMgbm90IDMg
YXMgZXhwZWN0ZWQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oUmVh
bHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0ZhY2luZ01vZGU6OlJpZ2h0KSA9PSA0LCAi
UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0ZhY2luZ01vZGU6OlJpZ2h0IGlzIG5v
dCA0IGFzIGV4cGVjdGVkIik7CisgICAgQVNTRVJUKHN0YXRpY19jYXN0PHNpemVfdD4obW9kZSkg
PCBXVEZfQVJSQVlfTEVOR1RIKHZhbHVlcykpOworICAgIHJldHVybiB2YWx1ZXNbc3RhdGljX2Nh
c3Q8c2l6ZV90Pihtb2RlKV07CiB9CiAKIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6Vmlk
ZW9GYWNpbmdNb2RlIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6dmlkZW9GYWNpbmdNb2Rl
RW51bShjb25zdCBTdHJpbmcmIG1vZGUpCiB7Ci0gICAgaWYgKG1vZGUgPT0gdXNlckZhY2luZygp
KQotICAgICAgICByZXR1cm4gUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpVc2VyOwotICAg
IGlmIChtb2RlID09IGVudmlyb25tZW50RmFjaW5nKCkpCi0gICAgICAgIHJldHVybiBSZWFsdGlt
ZU1lZGlhU291cmNlU2V0dGluZ3M6OkVudmlyb25tZW50OwotICAgIGlmIChtb2RlID09IGxlZnRG
YWNpbmcoKSkKLSAgICAgICAgcmV0dXJuIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6TGVm
dDsKLSAgICBpZiAobW9kZSA9PSByaWdodEZhY2luZygpKQotICAgICAgICByZXR1cm4gUmVhbHRp
bWVNZWRpYVNvdXJjZVNldHRpbmdzOjpSaWdodDsKKyAgICBpZiAobW9kZSA9PSAidXNlciIpCisg
ICAgICAgIHJldHVybiBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9k
ZTo6VXNlcjsKKyAgICBpZiAobW9kZSA9PSAiZW52aXJvbm1lbnQiKQorICAgICAgICByZXR1cm4g
UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0ZhY2luZ01vZGU6OkVudmlyb25tZW50
OworICAgIGlmIChtb2RlID09ICJsZWZ0IikKKyAgICAgICAgcmV0dXJuIFJlYWx0aW1lTWVkaWFT
b3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlOjpMZWZ0OworICAgIGlmIChtb2RlID09ICJy
aWdodCIpCisgICAgICAgIHJldHVybiBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlZpZGVv
RmFjaW5nTW9kZTo6UmlnaHQ7CiAKICAgICByZXR1cm4gUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRp
bmdzOjpVbmtub3duOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmgJ
KHJldmlzaW9uIDIyNTI3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L1JlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSwxMyAr
NDEsMTAgQEAgcHVibGljOgogICAgIGVudW0gU291cmNlVHlwZSB7IE5vbmUsIENhbWVyYSwgTWlj
cm9waG9uZSB9OwogICAgIGVudW0gVmlkZW9GYWNpbmdNb2RlIHsgVW5rbm93biwgVXNlciwgRW52
aXJvbm1lbnQsIExlZnQsIFJpZ2h0IH07CiAKLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5n
JiBmYWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2Rl
KTsKLQorICAgIHN0YXRpYyBTdHJpbmcgZmFjaW5nTW9kZShSZWFsdGltZU1lZGlhU291cmNlU2V0
dGluZ3M6OlZpZGVvRmFjaW5nTW9kZSk7CiAgICAgc3RhdGljIFJlYWx0aW1lTWVkaWFTb3VyY2VT
ZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlIHZpZGVvRmFjaW5nTW9kZUVudW0oY29uc3QgU3RyaW5n
Jik7CiAKLSAgICBleHBsaWNpdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MoKQotICAgIHsK
LSAgICB9CisgICAgZXhwbGljaXQgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzKCkgPSBkZWZh
dWx0OwogCiAgICAgYm9vbCBzdXBwb3J0c1dpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9zdXBwb3J0
ZWRDb25zdHJhaW50cy5zdXBwb3J0c1dpZHRoKCk7IH0KICAgICB1aW50MzJfdCB3aWR0aCgpIGNv
bnN0IHsgcmV0dXJuIG1fd2lkdGg7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5o
CShyZXZpc2lvbiAyMjUyNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUs
NyBAQCBjbGFzcyBQaXhlbEJ1ZmZlckNvbmZvcm1lckNWOwogCiBjbGFzcyBBVlZpZGVvQ2FwdHVy
ZVNvdXJjZSA6IHB1YmxpYyBBVk1lZGlhQ2FwdHVyZVNvdXJjZSwgcHJpdmF0ZSBPcmllbnRhdGlv
bk5vdGlmaWVyOjpPYnNlcnZlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIENhcHR1cmVTb3VyY2VP
ckVycm9yIGNyZWF0ZShBVkNhcHR1cmVEZXZpY2UqLCBjb25zdCBBdG9taWNTdHJpbmcmLCBjb25z
dCBNZWRpYUNvbnN0cmFpbnRzKik7CisgICAgc3RhdGljIENhcHR1cmVTb3VyY2VPckVycm9yIGNy
ZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzKik7CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgVmlkZW9DYXB0dXJlRmFjdG9yeSYgZmFjdG9yeSgpOwog
CkBAIC04OSw4ICs4OSw2IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPENNU2FtcGxlQnVmZmVy
UmVmPiBtX2J1ZmZlcjsKICAgICBSZXRhaW5QdHI8QVZDYXB0dXJlVmlkZW9EYXRhT3V0cHV0PiBt
X3ZpZGVvT3V0cHV0OwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPFBpeGVsQnVmZmVyQ29uZm9ybWVy
Q1Y+IG1fcGl4ZWxCdWZmZXJDb25mb3JtZXI7Ci0KICAgICBpbnQzMl90IG1fd2lkdGggeyAwIH07
CiAgICAgaW50MzJfdCBtX2hlaWdodCB7IDAgfTsKICAgICBpbnQgbV9zZW5zb3JPcmllbnRhdGlv
biB7IDAgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9B
VlZpZGVvQ2FwdHVyZVNvdXJjZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0JKHJldmlzaW9uIDIy
NTI3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVv
Q2FwdHVyZVNvdXJjZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQAogI2ltcG9y
dCAiTm90SW1wbGVtZW50ZWQuaCIKICNpbXBvcnQgIlBpeGVsQnVmZmVyQ29uZm9ybWVyQ1YuaCIK
ICNpbXBvcnQgIlBsYXRmb3JtTGF5ZXIuaCIKLSNpbXBvcnQgIlJlYWx0aW1lTWVkaWFTb3VyY2VD
ZW50ZXIuaCIKKyNpbXBvcnQgIlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuaCIKICNpbXBv
cnQgIlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oIgogI2ltcG9ydCAiV2ViQWN0aW9uRGlz
YWJsaW5nQ0FMYXllckRlbGVnYXRlLmgiCiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZDYXB0dXJl
RGV2aWNlLmg+CkBAIC0xMTAsMzEgKzExMCwxMiBAQCBjb25zdCBPU1R5cGUgdmlkZW9DYXB0dXJl
Rm9ybWF0ID0ga0NWUGl4CiBjb25zdCBPU1R5cGUgdmlkZW9DYXB0dXJlRm9ybWF0ID0ga0NWUGl4
ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjhCaVBsYW5hckZ1bGxSYW5nZTsKICNlbmRpZgogCi1jbGFz
cyBBVlZpZGVvQ2FwdHVyZVNvdXJjZUZhY3RvcnkgOiBwdWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6VmlkZW9DYXB0dXJlRmFjdG9yeQotI2lmIFBMQVRGT1JNKElPUykKLSAgICAsIHB1YmxpYyBS
ZWFsdGltZU1lZGlhU291cmNlOjpTaW5nbGVTb3VyY2VGYWN0b3J5PEFWVmlkZW9DYXB0dXJlU291
cmNlPgotI2VuZGlmCitDYXB0dXJlU291cmNlT3JFcnJvciBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6
Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgaWQsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMqIGNv
bnN0cmFpbnRzKQogewotcHVibGljOgotICAgIENhcHR1cmVTb3VyY2VPckVycm9yIGNyZWF0ZVZp
ZGVvQ2FwdHVyZVNvdXJjZShjb25zdCBTdHJpbmcmIGRldmljZUlELCBjb25zdCBNZWRpYUNvbnN0
cmFpbnRzKiBjb25zdHJhaW50cykgZmluYWwgewotICAgICAgICBBVkNhcHR1cmVEZXZpY2VUeXBl
ZGVmICpkZXZpY2UgPSBbZ2V0QVZDYXB0dXJlRGV2aWNlQ2xhc3MoKSBkZXZpY2VXaXRoVW5pcXVl
SUQ6ZGV2aWNlSURdOwotICAgICAgICBpZiAoIWRldmljZSkKLSAgICAgICAgICAgIHJldHVybiB7
IH07Ci0gICAgICAgIHJldHVybiBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6Y3JlYXRlKGRldmljZSwg
ZGV2aWNlSUQsIGNvbnN0cmFpbnRzKTsKLSAgICB9Ci0KLSNpZiBQTEFURk9STShJT1MpCi1wcml2
YXRlOgotICAgIHZvaWQgc2V0VmlkZW9DYXB0dXJlUGFnZVN0YXRlKGJvb2wgaW50ZXJydXB0ZWQs
IGJvb2wgcGFnZU11dGVkKQotICAgIHsKLSAgICAgICAgaWYgKGFjdGl2ZVNvdXJjZSgpKQotICAg
ICAgICAgICAgYWN0aXZlU291cmNlKCktPnNldEludGVycnVwdGVkKGludGVycnVwdGVkLCBwYWdl
TXV0ZWQpOwotICAgIH0KLSNlbmRpZgotfTsKKyAgICBBVkNhcHR1cmVEZXZpY2VUeXBlZGVmICpk
ZXZpY2UgPSBbZ2V0QVZDYXB0dXJlRGV2aWNlQ2xhc3MoKSBkZXZpY2VXaXRoVW5pcXVlSUQ6aWRd
OworICAgIGlmICghZGV2aWNlKQorICAgICAgICByZXR1cm4geyB9OwogCi1DYXB0dXJlU291cmNl
T3JFcnJvciBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6Y3JlYXRlKEFWQ2FwdHVyZURldmljZVR5cGVk
ZWYqIGRldmljZSwgY29uc3QgQXRvbWljU3RyaW5nJiBpZCwgY29uc3QgTWVkaWFDb25zdHJhaW50
cyogY29uc3RyYWludHMpCi17CiAgICAgYXV0byBzb3VyY2UgPSBhZG9wdFJlZigqbmV3IEFWVmlk
ZW9DYXB0dXJlU291cmNlKGRldmljZSwgaWQpKTsKICAgICBpZiAoY29uc3RyYWludHMpIHsKICAg
ICAgICAgYXV0byByZXN1bHQgPSBzb3VyY2UtPmFwcGx5Q29uc3RyYWludHMoKmNvbnN0cmFpbnRz
KTsKQEAgLTE0NSwxNyArMTI2LDYgQEAgQ2FwdHVyZVNvdXJjZU9yRXJyb3IgQVZWaWRlb0NhcHR1
cmVTb3VyYwogICAgIHJldHVybiBDYXB0dXJlU291cmNlT3JFcnJvcihXVEZNb3ZlKHNvdXJjZSkp
OwogfQogCi1zdGF0aWMgQVZWaWRlb0NhcHR1cmVTb3VyY2VGYWN0b3J5JiBhdlZpZGVvQ2FwdHVy
ZVNvdXJjZUZhY3RvcnkoKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBVlZpZGVvQ2Fw
dHVyZVNvdXJjZUZhY3Rvcnk+IGZhY3Rvcnk7Ci0gICAgcmV0dXJuIGZhY3RvcnkuZ2V0KCk7Ci19
Ci0KLVJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvQ2FwdHVyZUZhY3RvcnkmIEFWVmlkZW9DYXB0
dXJlU291cmNlOjpmYWN0b3J5KCkKLXsKLSAgICByZXR1cm4gYXZWaWRlb0NhcHR1cmVTb3VyY2VG
YWN0b3J5KCk7Ci19Ci0KIEFWVmlkZW9DYXB0dXJlU291cmNlOjpBVlZpZGVvQ2FwdHVyZVNvdXJj
ZShBVkNhcHR1cmVEZXZpY2VUeXBlZGVmKiBkZXZpY2UsIGNvbnN0IEF0b21pY1N0cmluZyYgaWQp
CiAgICAgOiBBVk1lZGlhQ2FwdHVyZVNvdXJjZShkZXZpY2UsIGlkLCBUeXBlOjpWaWRlbykKIHsK
QEAgLTE2NCw3ICsxMzQsNyBAQCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6QVZWaWRlb0NhcHR1cmVT
b3VyCiBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6fkFWVmlkZW9DYXB0dXJlU291cmNlKCkKIHsKICNp
ZiBQTEFURk9STShJT1MpCi0gICAgYXZWaWRlb0NhcHR1cmVTb3VyY2VGYWN0b3J5KCkudW5zZXRB
Y3RpdmVTb3VyY2UoKnRoaXMpOworICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OnZp
ZGVvQ2FwdHVyZVNvdXJjZUZhY3RvcnkoKS51bnNldEFjdGl2ZVNvdXJjZSgqdGhpcyk7CiAjZW5k
aWYKIH0KIApAQCAtNDE0LDcgKzM4NCw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IHNlbnNvck9yaWVu
dGF0aW9uRnJvbVYKIGJvb2wgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNldHVwQ2FwdHVyZVNlc3Np
b24oKQogewogI2lmIFBMQVRGT1JNKElPUykKLSAgICBhdlZpZGVvQ2FwdHVyZVNvdXJjZUZhY3Rv
cnkoKS5zZXRBY3RpdmVTb3VyY2UoKnRoaXMpOworICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXJNYWM6OnZpZGVvQ2FwdHVyZVNvdXJjZUZhY3RvcnkoKS5zZXRBY3RpdmVTb3VyY2UoKnRoaXMp
OwogI2VuZGlmCiAKICAgICBOU0Vycm9yICplcnJvciA9IG5pbDsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29y
ZUF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHAJKHJldmlzaW9uIDIyNTI3MSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTQsOSArNTQsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2lu
ZyBuYW1lc3BhY2UgUEFMOwogCiBjbGFzcyBDb3JlQXVkaW9DYXB0dXJlU291cmNlRmFjdG9yeSA6
IHB1YmxpYyBSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpb0NhcHR1cmVGYWN0b3J5Ci0jaWYgUExB
VEZPUk0oSU9TKQotICAgICwgcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlNpbmdsZVNvdXJj
ZUZhY3Rvcnk8Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZT4KLSNlbmRpZgogewogcHVibGljOgogICAg
IENhcHR1cmVTb3VyY2VPckVycm9yIGNyZWF0ZUF1ZGlvQ2FwdHVyZVNvdXJjZShjb25zdCBTdHJp
bmcmIGRldmljZUlELCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzKiBjb25zdHJhaW50cykgZmluYWwg
ewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXJNYWMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmNwcAko
cmV2aXNpb24gMjI1MjcxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
NCw2ICs0NCwzNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFZpZGVvQ2FwdHVy
ZVNvdXJjZUZhY3RvcnlNYWMgZmluYWwgOiBwdWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJjZTo6Vmlk
ZW9DYXB0dXJlRmFjdG9yeQoreworcHVibGljOgorICAgIENhcHR1cmVTb3VyY2VPckVycm9yIGNy
ZWF0ZVZpZGVvQ2FwdHVyZVNvdXJjZShjb25zdCBTdHJpbmcmIGlkLCBjb25zdCBNZWRpYUNvbnN0
cmFpbnRzKiBjb25zdHJhaW50cykgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBBVlZpZGVv
Q2FwdHVyZVNvdXJjZTo6Y3JlYXRlKGlkLCBjb25zdHJhaW50cyk7CisgICAgfQorCisjaWYgUExB
VEZPUk0oSU9TKQorcHJpdmF0ZToKKyAgICB2b2lkIHNldFZpZGVvQ2FwdHVyZVBhZ2VTdGF0ZShi
b29sIGludGVycnVwdGVkLCBib29sIHBhZ2VNdXRlZCkKKyAgICB7CisgICAgICAgIGlmIChhY3Rp
dmVTb3VyY2UoKSkKKyAgICAgICAgICAgIGFjdGl2ZVNvdXJjZSgpLT5zZXRJbnRlcnJ1cHRlZChp
bnRlcnJ1cHRlZCwgcGFnZU11dGVkKTsKKyAgICB9CisjZW5kaWYKK307CisKK1JlYWx0aW1lTWVk
aWFTb3VyY2U6OlZpZGVvQ2FwdHVyZUZhY3RvcnkmIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJN
YWM6OnZpZGVvQ2FwdHVyZVNvdXJjZUZhY3RvcnkoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxWaWRlb0NhcHR1cmVTb3VyY2VGYWN0b3J5TWFjPiBmYWN0b3J5OworICAgIHJldHVybiBm
YWN0b3J5LmdldCgpOworfQorCitSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpb0NhcHR1cmVGYWN0
b3J5JiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjOjphdWRpb0NhcHR1cmVTb3VyY2VGYWN0
b3J5KCkKK3sKKyAgICByZXR1cm4gUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYzo6c2luZ2xl
dG9uKCkuYXVkaW9GYWN0b3J5KCk7Cit9CisKIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMm
IFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OnNpbmdsZXRvbigpCiB7CiAgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKQEAgLTU2LDI4ICs4NSwyNSBAQCBSZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyJiBSZWFsdGltZU1lZGlhCiAgICAgcmV0dXJuIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXJNYWM6OnNpbmdsZXRvbigpOwogfQogCi1SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjOjpS
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjKCkKLXsKLSAgICBtX3N1cHBvcnRlZENvbnN0cmFp
bnRzLnNldFN1cHBvcnRzU2FtcGxlUmF0ZShmYWxzZSk7Ci0gICAgbV9zdXBwb3J0ZWRDb25zdHJh
aW50cy5zZXRTdXBwb3J0c1NhbXBsZVNpemUoZmFsc2UpOwotICAgIG1fc3VwcG9ydGVkQ29uc3Ry
YWludHMuc2V0U3VwcG9ydHNFY2hvQ2FuY2VsbGF0aW9uKGZhbHNlKTsKLSAgICBtX3N1cHBvcnRl
ZENvbnN0cmFpbnRzLnNldFN1cHBvcnRzR3JvdXBJZCh0cnVlKTsKLX0KK1JlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXJNYWM6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMoKSA9IGRlZmF1bHQ7
CiAKIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6On5SZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyTWFjKCkgPSBkZWZhdWx0OwogCiAKLVJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvQ2FwdHVy
ZUZhY3RvcnkmIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OmRlZmF1bHRBdWRpb0ZhY3Rv
cnkoKQorUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW9DYXB0dXJlRmFjdG9yeSYgUmVhbHRpbWVN
ZWRpYVNvdXJjZUNlbnRlck1hYzo6YXVkaW9GYWN0b3J5KCkKIHsKKyAgICBpZiAobV9hdWRpb0Zh
Y3RvcnlPdmVycmlkZSkKKyAgICAgICAgcmV0dXJuICptX2F1ZGlvRmFjdG9yeU92ZXJyaWRlOwor
CiAgICAgcmV0dXJuIENvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OmZhY3RvcnkoKTsKIH0KIAotUmVh
bHRpbWVNZWRpYVNvdXJjZTo6VmlkZW9DYXB0dXJlRmFjdG9yeSYgUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlck1hYzo6ZGVmYXVsdFZpZGVvRmFjdG9yeSgpCitSZWFsdGltZU1lZGlhU291cmNlOjpW
aWRlb0NhcHR1cmVGYWN0b3J5JiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjOjp2aWRlb0Zh
Y3RvcnkoKQogewotICAgIHJldHVybiBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6ZmFjdG9yeSgpOwor
ICAgIHJldHVybiB2aWRlb0NhcHR1cmVTb3VyY2VGYWN0b3J5KCk7CiB9CiAKLUNhcHR1cmVEZXZp
Y2VNYW5hZ2VyJiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjOjpkZWZhdWx0QXVkaW9DYXB0
dXJlRGV2aWNlTWFuYWdlcigpCitDYXB0dXJlRGV2aWNlTWFuYWdlciYgUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlck1hYzo6YXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlcigpCiB7CiAjaWYgUExBVEZP
Uk0oTUFDKQogICAgIHJldHVybiBDb3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xl
dG9uKCk7CkBAIC04Niw3ICsxMTIsNyBAQCBDYXB0dXJlRGV2aWNlTWFuYWdlciYgUmVhbHRpbWVN
ZWRpYVNvdXJjCiAjZW5kaWYKIH0KIAotQ2FwdHVyZURldmljZU1hbmFnZXImIFJlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXJNYWM6OmRlZmF1bHRWaWRlb0NhcHR1cmVEZXZpY2VNYW5hZ2VyKCkKK0Nh
cHR1cmVEZXZpY2VNYW5hZ2VyJiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjOjp2aWRlb0Nh
cHR1cmVEZXZpY2VNYW5hZ2VyKCkKIHsKICAgICByZXR1cm4gQVZDYXB0dXJlRGV2aWNlTWFuYWdl
cjo6c2luZ2xldG9uKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyTWFjLmgJKHJldmlzaW9uIDIyNTI3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTYgQXBw
bGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE3
IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTQ0LDE2ICs0NCwyNCBAQCBjbGFzcyBSZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyTWFjIGZpbmFsCiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXJNYWMmIHNpbmdsZXRvbigpOwogCisgICAgc3RhdGljIFJlYWx0aW1l
TWVkaWFTb3VyY2U6OlZpZGVvQ2FwdHVyZUZhY3RvcnkmIHZpZGVvQ2FwdHVyZVNvdXJjZUZhY3Rv
cnkoKTsKKyAgICBzdGF0aWMgUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW9DYXB0dXJlRmFjdG9y
eSYgYXVkaW9DYXB0dXJlU291cmNlRmFjdG9yeSgpOworCiBwcml2YXRlOgogICAgIGZyaWVuZCBj
bGFzcyBOZXZlckRlc3Ryb3llZDxSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjPjsKICAgICBS
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjKCk7CiAgICAgflJlYWx0aW1lTWVkaWFTb3VyY2VD
ZW50ZXJNYWMoKTsKIAotICAgIFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvQ2FwdHVyZUZhY3Rv
cnkmIGRlZmF1bHRBdWRpb0ZhY3RvcnkoKSBmaW5hbDsKLSAgICBSZWFsdGltZU1lZGlhU291cmNl
OjpWaWRlb0NhcHR1cmVGYWN0b3J5JiBkZWZhdWx0VmlkZW9GYWN0b3J5KCkgZmluYWw7CisgICAg
dm9pZCBzZXRBdWRpb0ZhY3RvcnkoUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW9DYXB0dXJlRmFj
dG9yeSYgZmFjdG9yeSkgZmluYWwgeyBtX2F1ZGlvRmFjdG9yeU92ZXJyaWRlID0gJmZhY3Rvcnk7
IH0KKyAgICB2b2lkIHVuc2V0QXVkaW9GYWN0b3J5KFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlv
Q2FwdHVyZUZhY3RvcnkmKSBmaW5hbCB7IG1fYXVkaW9GYWN0b3J5T3ZlcnJpZGUgPSBudWxscHRy
OyB9CisKKyAgICBSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpb0NhcHR1cmVGYWN0b3J5JiBhdWRp
b0ZhY3RvcnkoKSBmaW5hbDsKKyAgICBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlb0NhcHR1cmVG
YWN0b3J5JiB2aWRlb0ZhY3RvcnkoKSBmaW5hbDsKKworICAgIENhcHR1cmVEZXZpY2VNYW5hZ2Vy
JiBhdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyKCkgZmluYWw7CisgICAgQ2FwdHVyZURldmljZU1h
bmFnZXImIHZpZGVvQ2FwdHVyZURldmljZU1hbmFnZXIoKSBmaW5hbDsKIAotICAgIENhcHR1cmVE
ZXZpY2VNYW5hZ2VyJiBkZWZhdWx0QXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlcigpIGZpbmFsOwot
ICAgIENhcHR1cmVEZXZpY2VNYW5hZ2VyJiBkZWZhdWx0VmlkZW9DYXB0dXJlRGV2aWNlTWFuYWdl
cigpIGZpbmFsOworICAgIFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvQ2FwdHVyZUZhY3Rvcnkq
IG1fYXVkaW9GYWN0b3J5T3ZlcnJpZGUgeyBudWxscHRyIH07CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGlt
ZUF1ZGlvU291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmNwcAkocmV2aXNpb24gMjI1MjcxKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkNhcHR1cmVEZXZpY2UuaCIKICNp
bmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVkaWFDb25zdHJhaW50cy5oIgorI2luY2x1
ZGUgIk1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVt
ZW50ZWQuaCIKICNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuaCIKICNpbmNs
dWRlIDx3dGYvVVVJRC5oPgpAQCAtNDIsOSArNDMsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZUZhY3RvcnkgOiBwdWJsaWMgUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6QXVkaW9DYXB0dXJlRmFjdG9yeQotI2lmIFBMQVRGT1JNKElPUykKLSAgICAs
IHB1YmxpYyBSZWFsdGltZU1lZGlhU291cmNlOjpTaW5nbGVTb3VyY2VGYWN0b3J5PE1vY2tSZWFs
dGltZUF1ZGlvU291cmNlPgotI2VuZGlmCiB7CiBwdWJsaWM6CiAgICAgQ2FwdHVyZVNvdXJjZU9y
RXJyb3IgY3JlYXRlQXVkaW9DYXB0dXJlU291cmNlKGNvbnN0IFN0cmluZyYgZGV2aWNlSUQsIGNv
bnN0IE1lZGlhQ29uc3RyYWludHMqIGNvbnN0cmFpbnRzKSBmaW5hbCB7CkBAIC05NCw3ICs5Miw3
IEBAIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjpNb2NrUmVhbHRpbWVBdWQKIE1vY2tSZWFsdGlt
ZUF1ZGlvU291cmNlOjp+TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UoKQogewogI2lmIFBMQVRGT1JN
KElPUykKLSAgICBtb2NrQXVkaW9DYXB0dXJlU291cmNlRmFjdG9yeSgpLnVuc2V0QWN0aXZlU291
cmNlKCp0aGlzKTsKKyAgICBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6YXVkaW9DYXB0
dXJlU291cmNlRmFjdG9yeSgpLnVuc2V0QWN0aXZlU291cmNlKCp0aGlzKTsKICNlbmRpZgogfQog
CkBAIC0xMjIsNyArMTIwLDcgQEAgdm9pZCBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6aW5pdGlh
bGl6ZQogdm9pZCBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKCkK
IHsKICNpZiBQTEFURk9STShJT1MpCi0gICAgbW9ja0F1ZGlvQ2FwdHVyZVNvdXJjZUZhY3Rvcnko
KS5zZXRBY3RpdmVTb3VyY2UoKnRoaXMpOworICAgIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyOjphdWRpb0NhcHR1cmVTb3VyY2VGYWN0b3J5KCkuc2V0QWN0aXZlU291cmNlKCp0aGlzKTsK
ICNlbmRpZgogCiAgICAgaWYgKCFzYW1wbGVSYXRlKCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlci5oCShyZXZpc2lvbiAyMjUyNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiAr
MSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMTA3IEFwcGxlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM5LDE0ICsz
OSwxOCBAQCBjbGFzcyBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlciBmaW5hCiBwdWJsaWM6
CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0TW9ja1JlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXJFbmFibGVkKGJvb2wpOwogCisgICAgc3RhdGljIFJlYWx0aW1lTWVkaWFTb3VyY2U6
OlZpZGVvQ2FwdHVyZUZhY3RvcnkmIHZpZGVvQ2FwdHVyZVNvdXJjZUZhY3RvcnkoKSB7IHJldHVy
biBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6ZmFjdG9yeSgpOyB9CisgICAgc3RhdGljIFJlYWx0
aW1lTWVkaWFTb3VyY2U6OkF1ZGlvQ2FwdHVyZUZhY3RvcnkmIGF1ZGlvQ2FwdHVyZVNvdXJjZUZh
Y3RvcnkoKSB7IHJldHVybiBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6ZmFjdG9yeSgpOyB9CisK
IHByaXZhdGU6CiAgICAgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIoKSA9IGRlZmF1bHQ7
CiAgICAgZnJpZW5kIE5ldmVyRGVzdHJveWVkPE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
PjsKIAotICAgIFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvQ2FwdHVyZUZhY3RvcnkmIGRlZmF1
bHRBdWRpb0ZhY3RvcnkoKSBmaW5hbCB7IHJldHVybiBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6
ZmFjdG9yeSgpOyB9Ci0gICAgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW9DYXB0dXJlRmFjdG9y
eSYgZGVmYXVsdFZpZGVvRmFjdG9yeSgpIGZpbmFsIHsgcmV0dXJuIE1vY2tSZWFsdGltZVZpZGVv
U291cmNlOjpmYWN0b3J5KCk7IH0KLSAgICBDYXB0dXJlRGV2aWNlTWFuYWdlciYgZGVmYXVsdEF1
ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIoKSBmaW5hbCB7IHJldHVybiBtX2RlZmF1bHRBdWRpb0Nh
cHR1cmVEZXZpY2VNYW5hZ2VyOyB9Ci0gICAgQ2FwdHVyZURldmljZU1hbmFnZXImIGRlZmF1bHRW
aWRlb0NhcHR1cmVEZXZpY2VNYW5hZ2VyKCkgZmluYWwgeyByZXR1cm4gbV9kZWZhdWx0VmlkZW9D
YXB0dXJlRGV2aWNlTWFuYWdlcjsgfQorICAgIFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvQ2Fw
dHVyZUZhY3RvcnkmIGF1ZGlvRmFjdG9yeSgpIGZpbmFsIHsgcmV0dXJuIE1vY2tSZWFsdGltZUF1
ZGlvU291cmNlOjpmYWN0b3J5KCk7IH0KKyAgICBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlb0Nh
cHR1cmVGYWN0b3J5JiB2aWRlb0ZhY3RvcnkoKSBmaW5hbCB7IHJldHVybiBNb2NrUmVhbHRpbWVW
aWRlb1NvdXJjZTo6ZmFjdG9yeSgpOyB9CisKKyAgICBDYXB0dXJlRGV2aWNlTWFuYWdlciYgYXVk
aW9DYXB0dXJlRGV2aWNlTWFuYWdlcigpIGZpbmFsIHsgcmV0dXJuIG1fYXVkaW9DYXB0dXJlRGV2
aWNlTWFuYWdlcjsgfQorICAgIENhcHR1cmVEZXZpY2VNYW5hZ2VyJiB2aWRlb0NhcHR1cmVEZXZp
Y2VNYW5hZ2VyKCkgZmluYWwgeyByZXR1cm4gbV92aWRlb0NhcHR1cmVEZXZpY2VNYW5hZ2VyOyB9
CiAKICAgICBjbGFzcyBNb2NrQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlciBmaW5hbCA6IHB1Ymxp
YyBDYXB0dXJlRGV2aWNlTWFuYWdlciB7CiAgICAgcHJpdmF0ZToKQEAgLTU3LDggKzYxLDggQEAg
cHJpdmF0ZToKICAgICAgICAgVmVjdG9yPENhcHR1cmVEZXZpY2U+JiBjYXB0dXJlRGV2aWNlcygp
IGZpbmFsIHsgcmV0dXJuIE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjp2aWRlb0RldmljZXMoKTsg
fQogICAgIH07CiAKLSAgICBNb2NrQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlciBtX2RlZmF1bHRB
dWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyOwotICAgIE1vY2tWaWRlb0NhcHR1cmVEZXZpY2VNYW5h
Z2VyIG1fZGVmYXVsdFZpZGVvQ2FwdHVyZURldmljZU1hbmFnZXI7CisgICAgTW9ja0F1ZGlvQ2Fw
dHVyZURldmljZU1hbmFnZXIgbV9hdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyOworICAgIE1vY2tW
aWRlb0NhcHR1cmVEZXZpY2VNYW5hZ2VyIG1fdmlkZW9DYXB0dXJlRGV2aWNlTWFuYWdlcjsKIH07
CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlk
ZW9Tb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCShyZXZpc2lvbiAyMjUyNzEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRl
ICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVkaWFDb25zdHJhaW50cy5oIgorI2luY2x1ZGUgIk1v
Y2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQu
aCIKICNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNv
dXJjZVNldHRpbmdzLmgiCkBAIC00OSw5ICs1MCw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIE1vY2tSZWFsdGltZVZpZGVvU291cmNlRmFjdG9yeSA6IHB1YmxpYyBSZWFsdGltZU1l
ZGlhU291cmNlOjpWaWRlb0NhcHR1cmVGYWN0b3J5Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgICwg
cHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlNpbmdsZVNvdXJjZUZhY3Rvcnk8TW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2U+Ci0jZW5kaWYKIHsKIHB1YmxpYzoKICAgICBDYXB0dXJlU291cmNlT3JF
cnJvciBjcmVhdGVWaWRlb0NhcHR1cmVTb3VyY2UoY29uc3QgU3RyaW5nJiBkZXZpY2VJRCwgY29u
c3QgTWVkaWFDb25zdHJhaW50cyogY29uc3RyYWludHMpIGZpbmFsIHsKQEAgLTExNCwxNCArMTEy
LDE0IEBAIE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpNb2NrUmVhbHRpbWVWaWQKIE1vY2tSZWFs
dGltZVZpZGVvU291cmNlOjp+TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UoKQogewogI2lmIFBMQVRG
T1JNKElPUykKLSAgICBtb2NrVmlkZW9DYXB0dXJlU291cmNlRmFjdG9yeSgpLnVuc2V0QWN0aXZl
U291cmNlKCp0aGlzKTsKKyAgICBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6dmlkZW9D
YXB0dXJlU291cmNlRmFjdG9yeSgpLnVuc2V0QWN0aXZlU291cmNlKCp0aGlzKTsKICNlbmRpZgog
fQogCiB2b2lkIE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEoKQog
ewogI2lmIFBMQVRGT1JNKElPUykKLSAgICBtb2NrVmlkZW9DYXB0dXJlU291cmNlRmFjdG9yeSgp
LnNldEFjdGl2ZVNvdXJjZSgqdGhpcyk7CisgICAgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXI6OnZpZGVvQ2FwdHVyZVNvdXJjZUZhY3RvcnkoKS5zZXRBY3RpdmVTb3VyY2UoKnRoaXMpOwog
I2VuZGlmCiAKICAgICBpZiAoc2l6ZSgpLmlzRW1wdHkoKSkgewpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaAko
cmV2aXNpb24gMjI1MjcxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
</data>

          </attachment>
      

    </bug>

</bugzilla>