<?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>168610</bug_id>
          
          <creation_ts>2017-02-20 12:59:49 -0800</creation_ts>
          <short_desc>[MediaStream iOS] Respond to capture interruptions and notifications</short_desc>
          <delta_ts>2017-02-23 18:38:53 -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>Media</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>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1279037</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-02-20 12:59:49 -0800</bug_when>
    <thetext>Respond to capture interruptions and notifications</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1279077</commentid>
    <comment_count>1</comment_count>
      <attachid>302179</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-02-20 15:17:06 -0800</bug_when>
    <thetext>Created attachment 302179
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1279078</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-20 15:19:33 -0800</bug_when>
    <thetext>Attachment 302179 did not pass style-queue:


ERROR: Source/WebCore/platform/mediastream/mac/AVMediaCaptureSource.mm:423:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 1 in 4 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>1279527</commentid>
    <comment_count>3</comment_count>
      <attachid>302179</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2017-02-21 14:19:11 -0800</bug_when>
    <thetext>Comment on attachment 302179
Proposed patch

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

r=me, with nits:

&gt; Source/WebCore/platform/mediastream/mac/AVMediaCaptureSource.mm:83
&gt; +#if PLATFORM(IOS)
&gt; +SOFT_LINK_POINTER(AVFoundation, AVCaptureSessionRuntimeErrorNotification, NSString *)
&gt; +SOFT_LINK_POINTER(AVFoundation, AVCaptureSessionWasInterruptedNotification, NSString *)
&gt; +SOFT_LINK_POINTER(AVFoundation, AVCaptureSessionInterruptionEndedNotification, NSString *)
&gt; +SOFT_LINK_POINTER(AVFoundation, AVCaptureSessionInterruptionReasonKey, NSString *)
&gt; +SOFT_LINK_POINTER(AVFoundation, AVCaptureSessionErrorKey, NSString *)
&gt; +#endif

Rather than defining these only on IOS, you could make these SOFT_LINK_POINTER_OPTIONAL().

&gt; Source/WebCore/platform/mediastream/mac/AVMediaCaptureSource.mm:169
&gt; +    if (![m_session isRunning])
&gt; +        return;
&gt; +
&gt; +    [m_session stopRunning];

Seems like this could just be:

if ([m_session isRunning])
    [m_session stopRunning];

&gt; Source/WebCore/platform/mediastream/mac/AVMediaCaptureSource.mm:180
&gt; +    [m_objcObserver.get() addNotificationObservers];

You shouldn&apos;t need the .get() here.

&gt; Source/WebCore/platform/mediastream/mac/AVMediaCaptureSource.mm:189
&gt; +    [m_objcObserver.get() removeNotificationObservers];

Ditto.

&gt; Source/WebCore/platform/mediastream/mac/AVMediaCaptureSource.mm:365
&gt; +    [center addObserver:self selector:@selector(sessionRuntimeError:) name:AVCaptureSessionRuntimeErrorNotification object:session];
&gt; +    [center addObserver:self selector:@selector(beginSessionInterrupted:) name:AVCaptureSessionWasInterruptedNotification object:session];
&gt; +    [center addObserver:self selector:@selector(endSessionInterrupted:) name:AVCaptureSessionInterruptionEndedNotification object:session];

Though, if you make the notification names _OPTIONAL, you&apos;ll have to check them before adding observers here.

&gt; Source/WebCore/platform/mediastream/mac/AVMediaCaptureSource.mm:419
&gt; +    if (!m_callback)
&gt; +        return;
&gt; +
&gt; +    m_callback-&gt;captureSessionRuntimeError(error);

This could be:

if (m_callback)
    m_callback-&gt;captureSessionRuntimeError(error);

&gt; Source/WebCore/platform/mediastream/mac/AVMediaCaptureSource.mm:429
&gt; +    if (!m_callback)
&gt; +        return;
&gt; +
&gt; +    m_callback-&gt;captureSessionBeginInterruption(notification);

Ditto.

&gt; Source/WebCore/platform/mediastream/mac/AVMediaCaptureSource.mm:440
&gt; +    if (!m_callback)
&gt; +        return;
&gt; +
&gt; +    m_callback-&gt;captureSessionEndInterruption(notification);

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1279974</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-02-22 11:19:36 -0800</bug_when>
    <thetext>&lt;rdar://problem/30656822&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1279976</commentid>
    <comment_count>5</comment_count>
      <attachid>302420</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-02-22 11:29:48 -0800</bug_when>
    <thetext>Created attachment 302420
Patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1279983</commentid>
    <comment_count>6</comment_count>
      <attachid>302420</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-22 12:08:44 -0800</bug_when>
    <thetext>Comment on attachment 302420
Patch for landing.

Clearing flags on attachment: 302420

Committed r212844: &lt;http://trac.webkit.org/changeset/212844&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302179</attachid>
            <date>2017-02-20 15:17:06 -0800</date>
            <delta_ts>2017-02-22 17:16:27 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>ios_notifications_patch_4.txt</filename>
            <type>text/plain</type>
            <size>22978</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxMjY2NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ0IEBACisyMDE3LTAyLTIwICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVhbSBp
T1NdIFJlc3BvbmQgdG8gY2FwdHVyZSBpbnRlcnJ1cHRpb25zIGFuZCBub3RpZmljYXRpb25zCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjg2MTAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFt
QVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3Ry
ZWFtQVZGT2JqQzo6ZW5zdXJlTGF5ZXIpOiBEcml2ZS1ieSBjbGVhbnVwOiBkb24ndCBjcmVhdGUK
KyAgICAgICAgYSBzYW1wbGUgYnVmZmVyIGRpc3BsYXkgbGF5ZXIgdW5sZXNzIHRoZXJlIGlzIGFu
IGFjdGl2ZSB2aWRlbyB0cmFjay4KKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFWTWVkaWFD
YXB0dXJlU291cmNlOjpBVk1lZGlhQ2FwdHVyZVNvdXJjZSk6IEFkZCBzdGF0aWNfYXNzZXJ0cyB0
byBlbnN1cmUgdGhhdAorICAgICAgICBXZWJDb3JlOjpJbnRlcnJ1cHRpb25SZWFzb24gdmFsdWVz
IG1hcCBkaXJlY3RseSB0byBBVkNhcHR1cmVTZXNzaW9uSW50ZXJydXB0aW9uUmVhc29uIHZhbHVl
cy4KKyAgICAgICAgKFdlYkNvcmU6OkFWTWVkaWFDYXB0dXJlU291cmNlOjp+QVZNZWRpYUNhcHR1
cmVTb3VyY2UpOiBNaW5vciBjbGVhbnVwLgorICAgICAgICAoV2ViQ29yZTo6QVZNZWRpYUNhcHR1
cmVTb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSk6IFN0YXJ0IGxpc3RlbmluZyBmb3Igbm90aWZp
Y2F0aW9ucyBiZWZvcmUKKyAgICAgICAgc3RhcnRpbmcgdGhlIHNlc3Npb24uCisgICAgICAgIChX
ZWJDb3JlOjpBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEpOiBSZW1vdmUg
dGhlIG5vdGlmaWNhdGlvbiBvYnNlcnZlcnMgYmVmb3JlCisgICAgICAgIHN0b3BwaW5nIHRoZSBz
ZXNzaW9uLgorICAgICAgICAoV2ViQ29yZTo6QVZNZWRpYUNhcHR1cmVTb3VyY2U6OnNldHVwU2Vz
c2lvbik6IE1pbm9yIHN0eWxlIGNsZWFudXAuCisgICAgICAgIChXZWJDb3JlOjpBVk1lZGlhQ2Fw
dHVyZVNvdXJjZTo6Y2FwdHVyZVNlc3Npb25SdW50aW1lRXJyb3IpOiBOZXcuIFdoZW4gdGhlIGVy
cm9yIGlzIEFWRXJyb3JNZWRpYVNlcnZpY2VzV2VyZVJlc2V0LAorICAgICAgICBzb21ldGltZXMg
Y2F1c2VkIGJ5IGEgbWVkaWFzZXJ2ZXJkIGNyYXNoLCB0cnkgdG8gcmVzdGFydCB0aGUgc2Vzc2lv
biBvbmUgdGltZS4KKyAgICAgICAgKFdlYkNvcmU6OkFWTWVkaWFDYXB0dXJlU291cmNlOjpjYXB0
dXJlU2Vzc2lvbkJlZ2luSW50ZXJydXB0aW9uKTogU3RvcmUgdGhlIGludGVycnVwdGlvbiByZWFz
b24uCisgICAgICAgIChXZWJDb3JlOjpBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6Y2FwdHVyZVNlc3Np
b25FbmRJbnRlcnJ1cHRpb24pOiBUcnkgdG8gcmVzdGFydCB0aGUgc2Vzc2lvbiBpZgorICAgICAg
ICBpdCB3YXMgaW50ZXJydXB0ZWQgYmVjYXVzZSB0aGUgYXBwIHdlbnQgaW50byBtdWx0aS1hcHAg
bGF5b3V0IG1vZGUuCisgICAgICAgIChXZWJDb3JlOjpzZXNzaW9uS1ZPUHJvcGVydGllcyk6IERy
aXZlLWJ5IGNsZWFudXAuCisgICAgICAgICgtW1dlYkNvcmVBVk1lZGlhQ2FwdHVyZVNvdXJjZU9i
c2VydmVyIGluaXRXaXRoQ2FsbGJhY2s6XSk6CisgICAgICAgICgtW1dlYkNvcmVBVk1lZGlhQ2Fw
dHVyZVNvdXJjZU9ic2VydmVyIGRpc2Nvbm5lY3RdKToKKyAgICAgICAgKC1bV2ViQ29yZUFWTWVk
aWFDYXB0dXJlU291cmNlT2JzZXJ2ZXIgYWRkTm90aWZpY2F0aW9uT2JzZXJ2ZXJzXSk6CisgICAg
ICAgICgtW1dlYkNvcmVBVk1lZGlhQ2FwdHVyZVNvdXJjZU9ic2VydmVyIHJlbW92ZU5vdGlmaWNh
dGlvbk9ic2VydmVyc10pOgorICAgICAgICAoLVtXZWJDb3JlQVZNZWRpYUNhcHR1cmVTb3VyY2VP
YnNlcnZlciBzZXNzaW9uUnVudGltZUVycm9yOl0pOgorICAgICAgICAoLVtXZWJDb3JlQVZNZWRp
YUNhcHR1cmVTb3VyY2VPYnNlcnZlciBiZWdpblNlc3Npb25JbnRlcnJ1cHRlZDpdKToKKyAgICAg
ICAgKC1bV2ViQ29yZUFWTWVkaWFDYXB0dXJlU291cmNlT2JzZXJ2ZXIgZW5kU2Vzc2lvbkludGVy
cnVwdGVkOl0pOgorCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9D
YXB0dXJlU291cmNlLm1tOgorICAgICAgICAoV2ViQ29yZTo6QVZWaWRlb0NhcHR1cmVTb3VyY2U6
OmluaXRpYWxpemVDYXBhYmlsaXRpZXMpOiBOb3QgYWxsIEFWQ2FwdHVyZVNlc3Npb24gcHJlc2V0
IHN0cmluZ3MKKyAgICAgICAgYXJlIGF2YWlsYWJsZSBvbiBhbGwgcGxhdGZvcm1zIHNvIGxvYWQg
d2l0aCBTT0ZUX0xJTktfUE9JTlRFUl9PUFRJT05BTCBhbmQgTlVMTCBjaGVjayBiZWZvcmUgdXNl
LgorICAgICAgICAoV2ViQ29yZTo6c2l6ZUZvclByZXNldCk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6QVZWaWRlb0NhcHR1cmVTb3VyY2U6OmJlc3RTZXNzaW9uUHJlc2V0Rm9yVmlkZW9EaW1l
bnNpb25zKTogRGl0dG8uCisKIDIwMTctMDItMjAgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBh
cHBsZS5jb20+CiAKICAgICAgICAgTnVsbHB0ciBkZXJlZmVyZW5jZXMgd2hlbiBzdG9wcGluZyBh
IGxvYWQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVk1l
ZGlhQ2FwdHVyZVNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5oCShyZXZpc2lvbiAyMTIzMzkp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1
cmVTb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQCBPQkpDX0NMQVNTIEFW
Q2FwdHVyZURldmljZTsKIE9CSkNfQ0xBU1MgQVZDYXB0dXJlT3V0cHV0OwogT0JKQ19DTEFTUyBB
VkNhcHR1cmVTZXNzaW9uOwogT0JKQ19DTEFTUyBBVkNhcHR1cmVWaWRlb0RhdGFPdXRwdXQ7CitP
QkpDX0NMQVNTIE5TRXJyb3I7CiBPQkpDX0NMQVNTIFdlYkNvcmVBVk1lZGlhQ2FwdHVyZVNvdXJj
ZU9ic2VydmVyOwogCiB0eXBlZGVmIHN0cnVjdCBvcGFxdWVDTVNhbXBsZUJ1ZmZlciAqQ01TYW1w
bGVCdWZmZXJSZWY7CkBAIC01Myw3ICs1NCwxMiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZv
aWQgY2FwdHVyZU91dHB1dERpZE91dHB1dFNhbXBsZUJ1ZmZlckZyb21Db25uZWN0aW9uKEFWQ2Fw
dHVyZU91dHB1dCosIENNU2FtcGxlQnVmZmVyUmVmLCBBVkNhcHR1cmVDb25uZWN0aW9uKikgPSAw
OwogCi0gICAgdmlydHVhbCB2b2lkIGNhcHR1cmVTZXNzaW9uSXNSdW5uaW5nRGlkQ2hhbmdlKGJv
b2wpOworICAgIHZvaWQgY2FwdHVyZVNlc3Npb25Jc1J1bm5pbmdEaWRDaGFuZ2UoYm9vbCk7Cisg
ICAgdm9pZCBjYXB0dXJlU2Vzc2lvblJ1bnRpbWVFcnJvcihSZXRhaW5QdHI8TlNFcnJvcj4pOwor
CisgICAgZW51bSBjbGFzcyBJbnRlcnJ1cHRpb25SZWFzb24geyBOb25lLCBWaWRlb05vdEFsbG93
ZWRJbkJhY2tncm91bmQsIEF1ZGlvSW5Vc2UsIFZpZGVvSW5Vc2UsIFZpZGVvTm90QWxsb3dlZElu
U2lkZUJ5U2lkZSB9OworICAgIHZvaWQgY2FwdHVyZVNlc3Npb25CZWdpbkludGVycnVwdGlvbihS
ZXRhaW5QdHI8TlNOb3RpZmljYXRpb24+KTsKKyAgICB2b2lkIGNhcHR1cmVTZXNzaW9uRW5kSW50
ZXJydXB0aW9uKFJldGFpblB0cjxOU05vdGlmaWNhdGlvbj4pOwogCiAgICAgQVZDYXB0dXJlU2Vz
c2lvbiAqc2Vzc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbi5nZXQoKTsgfQogCkBAIC05
OCw3ICsxMDQsOCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlQ2Fw
YWJpbGl0aWVzPiBtX2NhcGFiaWxpdGllczsKICAgICBSZXRhaW5QdHI8QVZDYXB0dXJlU2Vzc2lv
bj4gbV9zZXNzaW9uOwogICAgIFJldGFpblB0cjxBVkNhcHR1cmVEZXZpY2U+IG1fZGV2aWNlOwot
ICAgIGJvb2wgbV9pc1J1bm5pbmcgeyBmYWxzZX07CisgICAgSW50ZXJydXB0aW9uUmVhc29uIG1f
aW50ZXJydXB0aW9uIHsgSW50ZXJydXB0aW9uUmVhc29uOjpOb25lIH07CisgICAgYm9vbCBtX2lz
UnVubmluZyB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3Vy
Y2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLm1tCShyZXZpc2lvbiAyMTIzMzkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UubW0J
KHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAKICNpbXBvcnQgPEFWRm91bmRhdGlvbi9B
VkNhcHR1cmVJbnB1dC5oPgogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWQ2FwdHVyZU91dHB1dC5o
PgogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWQ2FwdHVyZVNlc3Npb24uaD4KKyNpbXBvcnQgPEFW
Rm91bmRhdGlvbi9BVkVycm9yLmg+CiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KICNpbXBvcnQg
PHd0Zi9NYWluVGhyZWFkLmg+CiAKQEAgLTcyLDIwICs3MywyNiBAQCBTT0ZUX0xJTktfQ0xBU1Mo
QVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVWCiBTT0ZUX0xJTktfUE9JTlRFUihBVkZvdW5kYXRpb24s
IEFWTWVkaWFUeXBlQXVkaW8sIE5TU3RyaW5nICopCiBTT0ZUX0xJTktfUE9JTlRFUihBVkZvdW5k
YXRpb24sIEFWTWVkaWFUeXBlTXV4ZWQsIE5TU3RyaW5nICopCiBTT0ZUX0xJTktfUE9JTlRFUihB
VkZvdW5kYXRpb24sIEFWTWVkaWFUeXBlVmlkZW8sIE5TU3RyaW5nICopCi1TT0ZUX0xJTktfUE9J
TlRFUihBVkZvdW5kYXRpb24sIEFWQ2FwdHVyZVNlc3Npb25QcmVzZXQxMjgweDcyMCwgTlNTdHJp
bmcgKikKLVNPRlRfTElOS19QT0lOVEVSKEFWRm91bmRhdGlvbiwgQVZDYXB0dXJlU2Vzc2lvblBy
ZXNldDY0MHg0ODAsIE5TU3RyaW5nICopCi1TT0ZUX0xJTktfUE9JTlRFUihBVkZvdW5kYXRpb24s
IEFWQ2FwdHVyZVNlc3Npb25QcmVzZXQzNTJ4Mjg4LCBOU1N0cmluZyAqKQotU09GVF9MSU5LX1BP
SU5URVIoQVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVTZXNzaW9uUHJlc2V0TG93LCBOU1N0cmluZyAq
KQotU09GVF9MSU5LX1BPSU5URVIoQVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVTZXNzaW9uRGlkU3Rv
cFJ1bm5pbmdOb3RpZmljYXRpb24sIE5TU3RyaW5nICopCisKKyNpZiBQTEFURk9STShJT1MpCitT
T0ZUX0xJTktfUE9JTlRFUihBVkZvdW5kYXRpb24sIEFWQ2FwdHVyZVNlc3Npb25SdW50aW1lRXJy
b3JOb3RpZmljYXRpb24sIE5TU3RyaW5nICopCitTT0ZUX0xJTktfUE9JTlRFUihBVkZvdW5kYXRp
b24sIEFWQ2FwdHVyZVNlc3Npb25XYXNJbnRlcnJ1cHRlZE5vdGlmaWNhdGlvbiwgTlNTdHJpbmcg
KikKK1NPRlRfTElOS19QT0lOVEVSKEFWRm91bmRhdGlvbiwgQVZDYXB0dXJlU2Vzc2lvbkludGVy
cnVwdGlvbkVuZGVkTm90aWZpY2F0aW9uLCBOU1N0cmluZyAqKQorU09GVF9MSU5LX1BPSU5URVIo
QVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVTZXNzaW9uSW50ZXJydXB0aW9uUmVhc29uS2V5LCBOU1N0
cmluZyAqKQorU09GVF9MSU5LX1BPSU5URVIoQVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVTZXNzaW9u
RXJyb3JLZXksIE5TU3RyaW5nICopCisjZW5kaWYKIAogI2RlZmluZSBBVk1lZGlhVHlwZUF1ZGlv
IGdldEFWTWVkaWFUeXBlQXVkaW8oKQogI2RlZmluZSBBVk1lZGlhVHlwZU11eGVkIGdldEFWTWVk
aWFUeXBlTXV4ZWQoKQogI2RlZmluZSBBVk1lZGlhVHlwZVZpZGVvIGdldEFWTWVkaWFUeXBlVmlk
ZW8oKQotI2RlZmluZSBBVkNhcHR1cmVTZXNzaW9uUHJlc2V0MTI4MHg3MjAgZ2V0QVZDYXB0dXJl
U2Vzc2lvblByZXNldDEyODB4NzIwKCkKLSNkZWZpbmUgQVZDYXB0dXJlU2Vzc2lvblByZXNldDY0
MHg0ODAgZ2V0QVZDYXB0dXJlU2Vzc2lvblByZXNldDY0MHg0ODAoKQotI2RlZmluZSBBVkNhcHR1
cmVTZXNzaW9uUHJlc2V0MzUyeDI4OCBnZXRBVkNhcHR1cmVTZXNzaW9uUHJlc2V0MzUyeDI4OCgp
Ci0jZGVmaW5lIEFWQ2FwdHVyZVNlc3Npb25QcmVzZXRMb3cgZ2V0QVZDYXB0dXJlU2Vzc2lvblBy
ZXNldExvdygpCi0jZGVmaW5lIEFWQ2FwdHVyZVNlc3Npb25EaWRTdG9wUnVubmluZ05vdGlmaWNh
dGlvbiBnZXRBVkNhcHR1cmVTZXNzaW9uRGlkU3RvcFJ1bm5pbmdOb3RpZmljYXRpb24oKQorCisj
aWYgUExBVEZPUk0oSU9TKQorI2RlZmluZSBBVkNhcHR1cmVTZXNzaW9uUnVudGltZUVycm9yTm90
aWZpY2F0aW9uIGdldEFWQ2FwdHVyZVNlc3Npb25SdW50aW1lRXJyb3JOb3RpZmljYXRpb24oKQor
I2RlZmluZSBBVkNhcHR1cmVTZXNzaW9uV2FzSW50ZXJydXB0ZWROb3RpZmljYXRpb24gZ2V0QVZD
YXB0dXJlU2Vzc2lvbldhc0ludGVycnVwdGVkTm90aWZpY2F0aW9uKCkKKyNkZWZpbmUgQVZDYXB0
dXJlU2Vzc2lvbkludGVycnVwdGlvbkVuZGVkTm90aWZpY2F0aW9uIGdldEFWQ2FwdHVyZVNlc3Np
b25JbnRlcnJ1cHRpb25FbmRlZE5vdGlmaWNhdGlvbigpCisjZGVmaW5lIEFWQ2FwdHVyZVNlc3Np
b25JbnRlcnJ1cHRpb25SZWFzb25LZXkgZ2V0QVZDYXB0dXJlU2Vzc2lvbkludGVycnVwdGlvblJl
YXNvbktleSgpCisjZGVmaW5lIEFWQ2FwdHVyZVNlc3Npb25FcnJvcktleSBnZXRBVkNhcHR1cmVT
ZXNzaW9uRXJyb3JLZXkoKQorI2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBA
IC05NiwxMyArMTAzLDIwIEBAIEBpbnRlcmZhY2UgV2ViQ29yZUFWTWVkaWFDYXB0dXJlU291cmNl
T2IKIAogLShpZClpbml0V2l0aENhbGxiYWNrOihBVk1lZGlhQ2FwdHVyZVNvdXJjZSopY2FsbGJh
Y2s7CiAtKHZvaWQpZGlzY29ubmVjdDsKLS0odm9pZCljYXB0dXJlT3V0cHV0OihBVkNhcHR1cmVP
dXRwdXRUeXBlICopY2FwdHVyZU91dHB1dCBkaWRPdXRwdXRTYW1wbGVCdWZmZXI6KENNU2FtcGxl
QnVmZmVyUmVmKXNhbXBsZUJ1ZmZlciBmcm9tQ29ubmVjdGlvbjooQVZDYXB0dXJlQ29ubmVjdGlv
blR5cGUgKiljb25uZWN0aW9uOwotLSh2b2lkKW9ic2VydmVWYWx1ZUZvcktleVBhdGg6a2V5UGF0
aCBvZk9iamVjdDooaWQpb2JqZWN0IGNoYW5nZTooTlNEaWN0aW9uYXJ5ICopY2hhbmdlIGNvbnRl
eHQ6KHZvaWQqKWNvbnRleHQ7CistKHZvaWQpYWRkTm90aWZpY2F0aW9uT2JzZXJ2ZXJzOworLSh2
b2lkKXJlbW92ZU5vdGlmaWNhdGlvbk9ic2VydmVyczsKKy0odm9pZCljYXB0dXJlT3V0cHV0OihB
VkNhcHR1cmVPdXRwdXRUeXBlKiljYXB0dXJlT3V0cHV0IGRpZE91dHB1dFNhbXBsZUJ1ZmZlcjoo
Q01TYW1wbGVCdWZmZXJSZWYpc2FtcGxlQnVmZmVyIGZyb21Db25uZWN0aW9uOihBVkNhcHR1cmVD
b25uZWN0aW9uVHlwZSopY29ubmVjdGlvbjsKKy0odm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRo
OmtleVBhdGggb2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE5TRGljdGlvbmFyeSopY2hhbmdl
IGNvbnRleHQ6KHZvaWQqKWNvbnRleHQ7CisjaWYgUExBVEZPUk0oSU9TKQorLSh2b2lkKXNlc3Np
b25SdW50aW1lRXJyb3I6KE5TTm90aWZpY2F0aW9uKilub3RpZmljYXRpb247CistKHZvaWQpYmVn
aW5TZXNzaW9uSW50ZXJydXB0ZWQ6KE5TTm90aWZpY2F0aW9uKilub3RpZmljYXRpb247CistKHZv
aWQpZW5kU2Vzc2lvbkludGVycnVwdGVkOihOU05vdGlmaWNhdGlvbiopbm90aWZpY2F0aW9uOwor
I2VuZGlmCiBAZW5kCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIE5TQXJyYXkqIHNl
c3Npb25LVk9Qcm9wZXJ0aWVzKCk7CitzdGF0aWMgTlNBcnJheTxOU1N0cmluZyo+KiBzZXNzaW9u
S1ZPUHJvcGVydGllcygpOwogCiBzdGF0aWMgZGlzcGF0Y2hfcXVldWVfdCBnbG9iYUF1ZGlvQ2Fw
dHVyZVNlcmlhbFF1ZXVlKCkKIHsKQEAgLTEzMCw2ICsxNDQsMTEgQEAgQVZNZWRpYUNhcHR1cmVT
b3VyY2U6OkFWTWVkaWFDYXB0dXJlU291cgogICAgICwgbV9vYmpjT2JzZXJ2ZXIoYWRvcHROUyhb
W1dlYkNvcmVBVk1lZGlhQ2FwdHVyZVNvdXJjZU9ic2VydmVyIGFsbG9jXSBpbml0V2l0aENhbGxi
YWNrOnRoaXNdKSkKICAgICAsIG1fZGV2aWNlKGRldmljZSkKIHsKKyAgICBzdGF0aWNfYXNzZXJ0
KHN0YXRpY19jYXN0PGludD4oSW50ZXJydXB0aW9uUmVhc29uOjpWaWRlb05vdEFsbG93ZWRJbkJh
Y2tncm91bmQpID09IHN0YXRpY19jYXN0PGludD4oQVZDYXB0dXJlU2Vzc2lvbkludGVycnVwdGlv
blJlYXNvblZpZGVvRGV2aWNlTm90QXZhaWxhYmxlSW5CYWNrZ3JvdW5kKSwgIkludGVycnVwdGlv
blJlYXNvbjo6VmlkZW9Ob3RBbGxvd2VkSW5CYWNrZ3JvdW5kIGlzIG5vdCBBVkNhcHR1cmVTZXNz
aW9uSW50ZXJydXB0aW9uUmVhc29uVmlkZW9EZXZpY2VOb3RBdmFpbGFibGVJbkJhY2tncm91bmQg
YXMgZXhwZWN0ZWQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PGludD4oSW50ZXJy
dXB0aW9uUmVhc29uOjpWaWRlb05vdEFsbG93ZWRJblNpZGVCeVNpZGUpID09IEFWQ2FwdHVyZVNl
c3Npb25JbnRlcnJ1cHRpb25SZWFzb25WaWRlb0RldmljZU5vdEF2YWlsYWJsZVdpdGhNdWx0aXBs
ZUZvcmVncm91bmRBcHBzLCAiSW50ZXJydXB0aW9uUmVhc29uOjpWaWRlb05vdEFsbG93ZWRJblNp
ZGVCeVNpZGUgaXMgbm90IEFWQ2FwdHVyZVNlc3Npb25JbnRlcnJ1cHRpb25SZWFzb25WaWRlb0Rl
dmljZU5vdEF2YWlsYWJsZVdpdGhNdWx0aXBsZUZvcmVncm91bmRBcHBzIGFzIGV4cGVjdGVkIik7
CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxpbnQ+KEludGVycnVwdGlvblJlYXNvbjo6
VmlkZW9JblVzZSkgPT0gQVZDYXB0dXJlU2Vzc2lvbkludGVycnVwdGlvblJlYXNvblZpZGVvRGV2
aWNlSW5Vc2VCeUFub3RoZXJDbGllbnQsICJJbnRlcnJ1cHRpb25SZWFzb246OlZpZGVvSW5Vc2Ug
aXMgbm90IEFWQ2FwdHVyZVNlc3Npb25JbnRlcnJ1cHRpb25SZWFzb25WaWRlb0RldmljZUluVXNl
QnlBbm90aGVyQ2xpZW50IGFzIGV4cGVjdGVkIik7CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNf
Y2FzdDxpbnQ+KEludGVycnVwdGlvblJlYXNvbjo6QXVkaW9JblVzZSkgPT0gQVZDYXB0dXJlU2Vz
c2lvbkludGVycnVwdGlvblJlYXNvbkF1ZGlvRGV2aWNlSW5Vc2VCeUFub3RoZXJDbGllbnQsICJJ
bnRlcnJ1cHRpb25SZWFzb246OkF1ZGlvSW5Vc2UgaXMgbm90IEFWQ2FwdHVyZVNlc3Npb25JbnRl
cnJ1cHRpb25SZWFzb25BdWRpb0RldmljZUluVXNlQnlBbm90aGVyQ2xpZW50IGFzIGV4cGVjdGVk
Iik7CisKICAgICBzZXRQZXJzaXN0ZW50SUQoZGV2aWNlLnVuaXF1ZUlEKTsKICAgICBzZXRNdXRl
ZCh0cnVlKTsKIH0KQEAgLTEzOCwxMSArMTU3LDE2IEBAIEFWTWVkaWFDYXB0dXJlU291cmNlOjp+
QVZNZWRpYUNhcHR1cmVTb3UKIHsKICAgICBbbV9vYmpjT2JzZXJ2ZXIgZGlzY29ubmVjdF07CiAK
LSAgICBpZiAobV9zZXNzaW9uKSB7Ci0gICAgICAgIGZvciAoTlNTdHJpbmcgKmtleU5hbWUgaW4g
c2Vzc2lvbktWT1Byb3BlcnRpZXMoKSkKLSAgICAgICAgICAgIFttX3Nlc3Npb24gcmVtb3ZlT2Jz
ZXJ2ZXI6bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDprZXlOYW1lXTsKLSAgICAgICAg
W21fc2Vzc2lvbiBzdG9wUnVubmluZ107Ci0gICAgfQorICAgIGlmICghbV9zZXNzaW9uKQorICAg
ICAgICByZXR1cm47CisKKyAgICBmb3IgKE5TU3RyaW5nICprZXlOYW1lIGluIHNlc3Npb25LVk9Q
cm9wZXJ0aWVzKCkpCisgICAgICAgIFttX3Nlc3Npb24gcmVtb3ZlT2JzZXJ2ZXI6bV9vYmpjT2Jz
ZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDprZXlOYW1lXTsKKworICAgIGlmICghW21fc2Vzc2lvbiBp
c1J1bm5pbmddKQorICAgICAgICByZXR1cm47CisKKyAgICBbbV9zZXNzaW9uIHN0b3BSdW5uaW5n
XTsKIH0KIAogdm9pZCBBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKCkK
QEAgLTE1Miw3ICsxNzYsOCBAQCB2b2lkIEFWTWVkaWFDYXB0dXJlU291cmNlOjpzdGFydFByb2R1
Y2luCiAgICAgCiAgICAgaWYgKFttX3Nlc3Npb24gaXNSdW5uaW5nXSkKICAgICAgICAgcmV0dXJu
OwotICAgIAorCisgICAgW21fb2JqY09ic2VydmVyLmdldCgpIGFkZE5vdGlmaWNhdGlvbk9ic2Vy
dmVyc107CiAgICAgW21fc2Vzc2lvbiBzdGFydFJ1bm5pbmddOwogfQogCkBAIC0xNjEsNiArMTg2
LDcgQEAgdm9pZCBBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6c3RvcFByb2R1Y2luZwogICAgIGlmICgh
bV9zZXNzaW9uIHx8ICFbbV9zZXNzaW9uIGlzUnVubmluZ10pCiAgICAgICAgIHJldHVybjsKIAor
ICAgIFttX29iamNPYnNlcnZlci5nZXQoKSByZW1vdmVOb3RpZmljYXRpb25PYnNlcnZlcnNdOwog
ICAgIFttX3Nlc3Npb24gc3RvcFJ1bm5pbmddOwogfQogCkBAIC0yMjMsNyArMjQ5LDcgQEAgdm9p
ZCBBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6c2V0dXBTZXNzaW9uKAogICAgICAgICByZXR1cm47CiAK
ICAgICBtX3Nlc3Npb24gPSBhZG9wdE5TKFthbGxvY0FWQ2FwdHVyZVNlc3Npb25JbnN0YW5jZSgp
IGluaXRdKTsKLSAgICBmb3IgKE5TU3RyaW5nICprZXlOYW1lIGluIHNlc3Npb25LVk9Qcm9wZXJ0
aWVzKCkpCisgICAgZm9yIChOU1N0cmluZyoga2V5TmFtZSBpbiBzZXNzaW9uS1ZPUHJvcGVydGll
cygpKQogICAgICAgICBbbV9zZXNzaW9uIGFkZE9ic2VydmVyOm1fb2JqY09ic2VydmVyLmdldCgp
IGZvcktleVBhdGg6a2V5TmFtZSBvcHRpb25zOk5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcg
Y29udGV4dDoodm9pZCAqKW5pbF07CiAKICAgICBbbV9zZXNzaW9uIGJlZ2luQ29uZmlndXJhdGlv
bl07CkBAIC0yNTMsNiArMjc5LDM1IEBAIHZvaWQgQVZNZWRpYUNhcHR1cmVTb3VyY2U6OmNhcHR1
cmVTZXNzaW8KICAgICB9KTsKIH0KIAorI2lmIFBMQVRGT1JNKElPUykKK3ZvaWQgQVZNZWRpYUNh
cHR1cmVTb3VyY2U6OmNhcHR1cmVTZXNzaW9uUnVudGltZUVycm9yKFJldGFpblB0cjxOU0Vycm9y
PiBlcnJvcikKK3sKKyAgICBpZiAoIW1faXNSdW5uaW5nIHx8IGVycm9yLmdldCgpLmNvZGUgIT0g
QVZFcnJvck1lZGlhU2VydmljZXNXZXJlUmVzZXQpCisgICAgICAgIHJldHVybjsKKworICAgIC8v
IFRyeSB0byByZXN0YXJ0IHRoZSBzZXNzaW9uLCBidXQgcmVzZXQgbV9pc1J1bm5pbmcgaW1tZWRp
YXRlbHkgc28gaWYgaXQgZmFpbHMgd2Ugd29uJ3QgdHJ5IGFnYWluLgorICAgIFttX3Nlc3Npb24g
c3RhcnRSdW5uaW5nXTsKKyAgICBtX2lzUnVubmluZyA9IFttX3Nlc3Npb24gaXNSdW5uaW5nXTsK
K30KKwordm9pZCBBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6Y2FwdHVyZVNlc3Npb25CZWdpbkludGVy
cnVwdGlvbihSZXRhaW5QdHI8TlNOb3RpZmljYXRpb24+IG5vdGlmaWNhdGlvbikKK3sKKyAgICBt
X2ludGVycnVwdGlvbiA9IHN0YXRpY19jYXN0PEFWTWVkaWFDYXB0dXJlU291cmNlOjpJbnRlcnJ1
cHRpb25SZWFzb24+KFtub3RpZmljYXRpb24uZ2V0KCkudXNlckluZm9bQVZDYXB0dXJlU2Vzc2lv
bkludGVycnVwdGlvblJlYXNvbktleV0gaW50ZWdlclZhbHVlXSk7Cit9CisKK3ZvaWQgQVZNZWRp
YUNhcHR1cmVTb3VyY2U6OmNhcHR1cmVTZXNzaW9uRW5kSW50ZXJydXB0aW9uKFJldGFpblB0cjxO
U05vdGlmaWNhdGlvbj4pCit7CisgICAgSW50ZXJydXB0aW9uUmVhc29uIHJlYXNvbiA9IG1faW50
ZXJydXB0aW9uOworCisgICAgbV9pbnRlcnJ1cHRpb24gPSBJbnRlcnJ1cHRpb25SZWFzb246Ok5v
bmU7CisgICAgaWYgKHJlYXNvbiAhPSBJbnRlcnJ1cHRpb25SZWFzb246OlZpZGVvTm90QWxsb3dl
ZEluU2lkZUJ5U2lkZSB8fCBtX2lzUnVubmluZykKKyAgICAgICAgcmV0dXJuOworCisgICAgW21f
c2Vzc2lvbiBzdGFydFJ1bm5pbmddOworICAgIG1faXNSdW5uaW5nID0gW21fc2Vzc2lvbiBpc1J1
bm5pbmddOworfQorI2VuZGlmCisKIHZvaWQgQVZNZWRpYUNhcHR1cmVTb3VyY2U6OnNldFZpZGVv
U2FtcGxlQnVmZmVyRGVsZWdhdGUoQVZDYXB0dXJlVmlkZW9EYXRhT3V0cHV0VHlwZSogdmlkZW9P
dXRwdXQpCiB7CiAgICAgW3ZpZGVvT3V0cHV0IHNldFNhbXBsZUJ1ZmZlckRlbGVnYXRlOm1fb2Jq
Y09ic2VydmVyLmdldCgpIHF1ZXVlOmdsb2JhVmlkZW9DYXB0dXJlU2VyaWFsUXVldWUoKV07CkBA
IC0yNjksNyArMzI0LDcgQEAgQXVkaW9Tb3VyY2VQcm92aWRlciogQVZNZWRpYUNhcHR1cmVTb3Vy
YwogICAgIHJldHVybiBudWxscHRyOwogfQogCi1OU0FycmF5KiBzZXNzaW9uS1ZPUHJvcGVydGll
cygpCitOU0FycmF5PE5TU3RyaW5nKj4qIHNlc3Npb25LVk9Qcm9wZXJ0aWVzKCkKIHsKICAgICBz
dGF0aWMgTlNBcnJheSoga2V5cyA9IFtAW0AicnVubmluZyJdIHJldGFpbl07CiAgICAgcmV0dXJu
IGtleXM7CkBAIC0yODYsNiArMzQxLDcgQEAgLSAoaWQpaW5pdFdpdGhDYWxsYmFjazooQVZNZWRp
YUNhcHR1cmVTbwogICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgbV9jYWxsYmFjayA9IGNhbGxi
YWNrOworCiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKQEAgLTI5Myw5ICszNDksMzIgQEAgLSAodm9p
ZClkaXNjb25uZWN0CiB7CiAgICAgW05TT2JqZWN0IGNhbmNlbFByZXZpb3VzUGVyZm9ybVJlcXVl
c3RzV2l0aFRhcmdldDpzZWxmXTsKICAgICBtX2NhbGxiYWNrID0gMDsKKyAgICBbc2VsZiByZW1v
dmVOb3RpZmljYXRpb25PYnNlcnZlcnNdOworfQorCistICh2b2lkKWFkZE5vdGlmaWNhdGlvbk9i
c2VydmVycworeworI2lmIFBMQVRGT1JNKElPUykKKyAgICBBU1NFUlQobV9jYWxsYmFjayk7CisK
KyAgICBOU05vdGlmaWNhdGlvbkNlbnRlciogY2VudGVyID0gW05TTm90aWZpY2F0aW9uQ2VudGVy
IGRlZmF1bHRDZW50ZXJdOworICAgIEFWQ2FwdHVyZVNlc3Npb25UeXBlKiBzZXNzaW9uID0gbV9j
YWxsYmFjay0+c2Vzc2lvbigpOworCisgICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVj
dG9yOkBzZWxlY3RvcihzZXNzaW9uUnVudGltZUVycm9yOikgbmFtZTpBVkNhcHR1cmVTZXNzaW9u
UnVudGltZUVycm9yTm90aWZpY2F0aW9uIG9iamVjdDpzZXNzaW9uXTsKKyAgICBbY2VudGVyIGFk
ZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGJlZ2luU2Vzc2lvbkludGVycnVwdGVk
OikgbmFtZTpBVkNhcHR1cmVTZXNzaW9uV2FzSW50ZXJydXB0ZWROb3RpZmljYXRpb24gb2JqZWN0
OnNlc3Npb25dOworICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0
b3IoZW5kU2Vzc2lvbkludGVycnVwdGVkOikgbmFtZTpBVkNhcHR1cmVTZXNzaW9uSW50ZXJydXB0
aW9uRW5kZWROb3RpZmljYXRpb24gb2JqZWN0OnNlc3Npb25dOworI2VuZGlmCit9CisKKy0gKHZv
aWQpcmVtb3ZlTm90aWZpY2F0aW9uT2JzZXJ2ZXJzCit7CisjaWYgUExBVEZPUk0oSU9TKQorICAg
IEFTU0VSVChtX2NhbGxiYWNrKTsKKyAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRD
ZW50ZXJdIHJlbW92ZU9ic2VydmVyOm1fY2FsbGJhY2stPnNlc3Npb24oKV07CisjZW5kaWYKIH0K
IAotLSAodm9pZCljYXB0dXJlT3V0cHV0OihBVkNhcHR1cmVPdXRwdXRUeXBlICopY2FwdHVyZU91
dHB1dCBkaWRPdXRwdXRTYW1wbGVCdWZmZXI6KENNU2FtcGxlQnVmZmVyUmVmKXNhbXBsZUJ1ZmZl
ciBmcm9tQ29ubmVjdGlvbjooQVZDYXB0dXJlQ29ubmVjdGlvblR5cGUgKiljb25uZWN0aW9uCist
ICh2b2lkKWNhcHR1cmVPdXRwdXQ6KEFWQ2FwdHVyZU91dHB1dFR5cGUqKWNhcHR1cmVPdXRwdXQg
ZGlkT3V0cHV0U2FtcGxlQnVmZmVyOihDTVNhbXBsZUJ1ZmZlclJlZilzYW1wbGVCdWZmZXIgZnJv
bUNvbm5lY3Rpb246KEFWQ2FwdHVyZUNvbm5lY3Rpb25UeXBlKiljb25uZWN0aW9uCiB7CiAgICAg
aWYgKCFtX2NhbGxiYWNrKQogICAgICAgICByZXR1cm47CkBAIC0zMDMsNyArMzgyLDcgQEAgLSAo
dm9pZCljYXB0dXJlT3V0cHV0OihBVkNhcHR1cmVPdXRwdXRUeQogICAgIG1fY2FsbGJhY2stPmNh
cHR1cmVPdXRwdXREaWRPdXRwdXRTYW1wbGVCdWZmZXJGcm9tQ29ubmVjdGlvbihjYXB0dXJlT3V0
cHV0LCBzYW1wbGVCdWZmZXIsIGNvbm5lY3Rpb24pOwogfQogCi0tKHZvaWQpb2JzZXJ2ZVZhbHVl
Rm9yS2V5UGF0aDprZXlQYXRoIG9mT2JqZWN0OihpZClvYmplY3QgY2hhbmdlOihOU0RpY3Rpb25h
cnkgKiljaGFuZ2UgY29udGV4dDoodm9pZCopY29udGV4dAorLSAodm9pZClvYnNlcnZlVmFsdWVG
b3JLZXlQYXRoOmtleVBhdGggb2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE5TRGljdGlvbmFy
eSopY2hhbmdlIGNvbnRleHQ6KHZvaWQqKWNvbnRleHQKIHsKICAgICBVTlVTRURfUEFSQU0ob2Jq
ZWN0KTsKICAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7CkBAIC0zMjgsNiArNDA3LDQwIEBAIC0o
dm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOmtleVBhdGggb2YKICAgICAgICAgbV9jYWxsYmFj
ay0+Y2FwdHVyZVNlc3Npb25Jc1J1bm5pbmdEaWRDaGFuZ2UoW25ld1ZhbHVlIGJvb2xWYWx1ZV0p
OwogfQogCisjaWYgUExBVEZPUk0oSU9TKQorLSAodm9pZClzZXNzaW9uUnVudGltZUVycm9yOihO
U05vdGlmaWNhdGlvbiopbm90aWZpY2F0aW9uCit7CisgICAgTlNFcnJvciAqZXJyb3IgPSBub3Rp
ZmljYXRpb24udXNlckluZm9bQVZDYXB0dXJlU2Vzc2lvbkVycm9yS2V5XTsKKyAgICBMT0coTWVk
aWEsICJXZWJDb3JlQVZNZWRpYUNhcHR1cmVTb3VyY2VPYnNlcnZlcjo6c2Vzc2lvblJ1bnRpbWVF
cnJvciglcCkgLSBlcnJvciA9ICVzIiwgc2VsZiwgW1tlcnJvciBsb2NhbGl6ZWREZXNjcmlwdGlv
bl0gVVRGOFN0cmluZ10pOworCisgICAgaWYgKCFtX2NhbGxiYWNrKQorICAgICAgICByZXR1cm47
CisKKyAgICBtX2NhbGxiYWNrLT5jYXB0dXJlU2Vzc2lvblJ1bnRpbWVFcnJvcihlcnJvcik7Cit9
CisKKy0odm9pZCliZWdpblNlc3Npb25JbnRlcnJ1cHRlZDooTlNOb3RpZmljYXRpb24qKW5vdGlm
aWNhdGlvbgoreworICAgIExPRyhNZWRpYSwgIldlYkNvcmVBVk1lZGlhQ2FwdHVyZVNvdXJjZU9i
c2VydmVyOjpiZWdpblNlc3Npb25JbnRlcnJ1cHRlZCglcCkgLSByZWFzb24gPSAlZCIsIHNlbGYs
IFtub3RpZmljYXRpb24udXNlckluZm9bQVZDYXB0dXJlU2Vzc2lvbkludGVycnVwdGlvblJlYXNv
bktleV0gaW50ZWdlclZhbHVlXSk7CisKKyAgICBpZiAoIW1fY2FsbGJhY2spCisgICAgICAgIHJl
dHVybjsKKworICAgIG1fY2FsbGJhY2stPmNhcHR1cmVTZXNzaW9uQmVnaW5JbnRlcnJ1cHRpb24o
bm90aWZpY2F0aW9uKTsKKworfQorCistICh2b2lkKWVuZFNlc3Npb25JbnRlcnJ1cHRlZDooTlNO
b3RpZmljYXRpb24qKW5vdGlmaWNhdGlvbgoreworICAgIExPRyhNZWRpYSwgIldlYkNvcmVBVk1l
ZGlhQ2FwdHVyZVNvdXJjZU9ic2VydmVyOjplbmRTZXNzaW9uSW50ZXJydXB0ZWQoJXApICIsIHNl
bGYpOworCisgICAgaWYgKCFtX2NhbGxiYWNrKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2Nh
bGxiYWNrLT5jYXB0dXJlU2Vzc2lvbkVuZEludGVycnVwdGlvbihub3RpZmljYXRpb24pOworfQor
I2VuZGlmCisKIEBlbmQKIAogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3Vy
Y2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tCShyZXZpc2lvbiAyMTIzMzkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0J
KHdvcmtpbmcgY29weSkKQEAgLTg0LDEyICs4NCwxMiBAQCBTT0ZUX0xJTktfQ0xBU1MoQVZGb3Vu
ZGF0aW9uLCBBVkZyYW1lUmF0CiAjZGVmaW5lIEFWQ2FwdHVyZVZpZGVvUHJldmlld0xheWVyIGdl
dEFWQ2FwdHVyZVZpZGVvUHJldmlld0xheWVyQ2xhc3MoKQogI2RlZmluZSBBVkZyYW1lUmF0ZVJh
bmdlIGdldEFWRnJhbWVSYXRlUmFuZ2VDbGFzcygpCiAKLVNPRlRfTElOS19QT0lOVEVSKEFWRm91
bmRhdGlvbiwgQVZDYXB0dXJlU2Vzc2lvblByZXNldDEyODB4NzIwLCBOU1N0cmluZyAqKQotU09G
VF9MSU5LX1BPSU5URVIoQVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVTZXNzaW9uUHJlc2V0OTYweDU0
MCwgTlNTdHJpbmcgKikKLVNPRlRfTElOS19QT0lOVEVSKEFWRm91bmRhdGlvbiwgQVZDYXB0dXJl
U2Vzc2lvblByZXNldDY0MHg0ODAsIE5TU3RyaW5nICopCi1TT0ZUX0xJTktfUE9JTlRFUihBVkZv
dW5kYXRpb24sIEFWQ2FwdHVyZVNlc3Npb25QcmVzZXQzNTJ4Mjg4LCBOU1N0cmluZyAqKQotU09G
VF9MSU5LX1BPSU5URVIoQVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVTZXNzaW9uUHJlc2V0MzIweDI0
MCwgTlNTdHJpbmcgKikKLVNPRlRfTElOS19QT0lOVEVSKEFWRm91bmRhdGlvbiwgQVZDYXB0dXJl
U2Vzc2lvblByZXNldExvdywgTlNTdHJpbmcgKikKK1NPRlRfTElOS19QT0lOVEVSX09QVElPTkFM
KEFWRm91bmRhdGlvbiwgQVZDYXB0dXJlU2Vzc2lvblByZXNldDEyODB4NzIwLCBOU1N0cmluZyAq
KQorU09GVF9MSU5LX1BPSU5URVJfT1BUSU9OQUwoQVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVTZXNz
aW9uUHJlc2V0OTYweDU0MCwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19QT0lOVEVSX09QVElPTkFM
KEFWRm91bmRhdGlvbiwgQVZDYXB0dXJlU2Vzc2lvblByZXNldDY0MHg0ODAsIE5TU3RyaW5nICop
CitTT0ZUX0xJTktfUE9JTlRFUl9PUFRJT05BTChBVkZvdW5kYXRpb24sIEFWQ2FwdHVyZVNlc3Np
b25QcmVzZXQzNTJ4Mjg4LCBOU1N0cmluZyAqKQorU09GVF9MSU5LX1BPSU5URVJfT1BUSU9OQUwo
QVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVTZXNzaW9uUHJlc2V0MzIweDI0MCwgTlNTdHJpbmcgKikK
K1NPRlRfTElOS19QT0lOVEVSX09QVElPTkFMKEFWRm91bmRhdGlvbiwgQVZDYXB0dXJlU2Vzc2lv
blByZXNldExvdywgTlNTdHJpbmcgKikKIAogI2RlZmluZSBBVkNhcHR1cmVTZXNzaW9uUHJlc2V0
MTI4MHg3MjAgZ2V0QVZDYXB0dXJlU2Vzc2lvblByZXNldDEyODB4NzIwKCkKICNkZWZpbmUgQVZD
YXB0dXJlU2Vzc2lvblByZXNldDk2MHg1NDAgZ2V0QVZDYXB0dXJlU2Vzc2lvblByZXNldDk2MHg1
NDAoKQpAQCAtMTY0LDI3ICsxNjQsMjcgQEAgdm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6aW5p
dGlhbGl6ZUNhcAogICAgICAgICAgICAgaGlnaGVzdEZyYW1lUmF0ZVJhbmdlID0gc3RkOjptYXg8
RmxvYXQ2ND4oaGlnaGVzdEZyYW1lUmF0ZVJhbmdlLCByYW5nZS5tYXhGcmFtZVJhdGUpOwogICAg
ICAgICB9CiAKLSAgICAgICAgaWYgKFt2aWRlb0RldmljZSBzdXBwb3J0c0FWQ2FwdHVyZVNlc3Np
b25QcmVzZXQ6QVZDYXB0dXJlU2Vzc2lvblByZXNldDEyODB4NzIwXSkgeworICAgICAgICBpZiAo
QVZDYXB0dXJlU2Vzc2lvblByZXNldDEyODB4NzIwICYmIFt2aWRlb0RldmljZSBzdXBwb3J0c0FW
Q2FwdHVyZVNlc3Npb25QcmVzZXQ6QVZDYXB0dXJlU2Vzc2lvblByZXNldDEyODB4NzIwXSkgewog
ICAgICAgICAgICAgdXBkYXRlU2l6ZU1pbk1heChtaW5pbXVtV2lkdGgsIG1heGltdW1XaWR0aCwg
MTI4MCk7CiAgICAgICAgICAgICB1cGRhdGVTaXplTWluTWF4KG1pbmltdW1IZWlnaHQsIG1heGlt
dW1IZWlnaHQsIDcyMCk7CiAgICAgICAgICAgICB1cGRhdGVBc3BlY3RSYXRpb01pbk1heChtaW5p
bXVtQXNwZWN0UmF0aW8sIG1heGltdW1Bc3BlY3RSYXRpbywgMTI4MC4wIC8gNzIwKTsKICAgICAg
ICAgfQotICAgICAgICBpZiAoW3ZpZGVvRGV2aWNlIHN1cHBvcnRzQVZDYXB0dXJlU2Vzc2lvblBy
ZXNldDpBVkNhcHR1cmVTZXNzaW9uUHJlc2V0OTYweDU0MF0pIHsKKyAgICAgICAgaWYgKEFWQ2Fw
dHVyZVNlc3Npb25QcmVzZXQ5NjB4NTQwICYmIFt2aWRlb0RldmljZSBzdXBwb3J0c0FWQ2FwdHVy
ZVNlc3Npb25QcmVzZXQ6QVZDYXB0dXJlU2Vzc2lvblByZXNldDk2MHg1NDBdKSB7CiAgICAgICAg
ICAgICB1cGRhdGVTaXplTWluTWF4KG1pbmltdW1XaWR0aCwgbWF4aW11bVdpZHRoLCA5NjApOwog
ICAgICAgICAgICAgdXBkYXRlU2l6ZU1pbk1heChtaW5pbXVtSGVpZ2h0LCBtYXhpbXVtSGVpZ2h0
LCA1NDApOwogICAgICAgICAgICAgdXBkYXRlQXNwZWN0UmF0aW9NaW5NYXgobWluaW11bUFzcGVj
dFJhdGlvLCBtYXhpbXVtQXNwZWN0UmF0aW8sIDk2MCAvIDU0MCk7CiAgICAgICAgIH0KLSAgICAg
ICAgaWYgKFt2aWRlb0RldmljZSBzdXBwb3J0c0FWQ2FwdHVyZVNlc3Npb25QcmVzZXQ6QVZDYXB0
dXJlU2Vzc2lvblByZXNldDY0MHg0ODBdKSB7CisgICAgICAgIGlmIChBVkNhcHR1cmVTZXNzaW9u
UHJlc2V0NjQweDQ4MCAmJiBbdmlkZW9EZXZpY2Ugc3VwcG9ydHNBVkNhcHR1cmVTZXNzaW9uUHJl
c2V0OkFWQ2FwdHVyZVNlc3Npb25QcmVzZXQ2NDB4NDgwXSkgewogICAgICAgICAgICAgdXBkYXRl
U2l6ZU1pbk1heChtaW5pbXVtV2lkdGgsIG1heGltdW1XaWR0aCwgNjQwKTsKICAgICAgICAgICAg
IHVwZGF0ZVNpemVNaW5NYXgobWluaW11bUhlaWdodCwgbWF4aW11bUhlaWdodCwgNDgwKTsKICAg
ICAgICAgICAgIHVwZGF0ZUFzcGVjdFJhdGlvTWluTWF4KG1pbmltdW1Bc3BlY3RSYXRpbywgbWF4
aW11bUFzcGVjdFJhdGlvLCA2NDAgLyA0ODApOwogICAgICAgICB9Ci0gICAgICAgIGlmIChbdmlk
ZW9EZXZpY2Ugc3VwcG9ydHNBVkNhcHR1cmVTZXNzaW9uUHJlc2V0OkFWQ2FwdHVyZVNlc3Npb25Q
cmVzZXQzNTJ4Mjg4XSkgeworICAgICAgICBpZiAoQVZDYXB0dXJlU2Vzc2lvblByZXNldDM1Mngy
ODggJiYgW3ZpZGVvRGV2aWNlIHN1cHBvcnRzQVZDYXB0dXJlU2Vzc2lvblByZXNldDpBVkNhcHR1
cmVTZXNzaW9uUHJlc2V0MzUyeDI4OF0pIHsKICAgICAgICAgICAgIHVwZGF0ZVNpemVNaW5NYXgo
bWluaW11bVdpZHRoLCBtYXhpbXVtV2lkdGgsIDM1Mik7CiAgICAgICAgICAgICB1cGRhdGVTaXpl
TWluTWF4KG1pbmltdW1IZWlnaHQsIG1heGltdW1IZWlnaHQsIDI4OCk7CiAgICAgICAgICAgICB1
cGRhdGVBc3BlY3RSYXRpb01pbk1heChtaW5pbXVtQXNwZWN0UmF0aW8sIG1heGltdW1Bc3BlY3RS
YXRpbywgMzUyIC8gMjg4KTsKICAgICAgICAgfQotICAgICAgICBpZiAoW3ZpZGVvRGV2aWNlIHN1
cHBvcnRzQVZDYXB0dXJlU2Vzc2lvblByZXNldDpBVkNhcHR1cmVTZXNzaW9uUHJlc2V0MzIweDI0
MF0pIHsKKyAgICAgICAgaWYgKEFWQ2FwdHVyZVNlc3Npb25QcmVzZXQzMjB4MjQwICYmIFt2aWRl
b0RldmljZSBzdXBwb3J0c0FWQ2FwdHVyZVNlc3Npb25QcmVzZXQ6QVZDYXB0dXJlU2Vzc2lvblBy
ZXNldDMyMHgyNDBdKSB7CiAgICAgICAgICAgICB1cGRhdGVTaXplTWluTWF4KG1pbmltdW1XaWR0
aCwgbWF4aW11bVdpZHRoLCAzMjApOwogICAgICAgICAgICAgdXBkYXRlU2l6ZU1pbk1heChtaW5p
bXVtSGVpZ2h0LCBtYXhpbXVtSGVpZ2h0LCAyNDApOwogICAgICAgICAgICAgdXBkYXRlQXNwZWN0
UmF0aW9NaW5NYXgobWluaW11bUFzcGVjdFJhdGlvLCBtYXhpbXVtQXNwZWN0UmF0aW8sIDMyMCAv
IDI0MCk7CkBAIC0yMzksMTkgKzIzOSwxOSBAQCBzdGF0aWMgSW50U2l6ZSBzaXplRm9yUHJlc2V0
KE5TU3RyaW5nKiBwCiAgICAgaWYgKCFwcmVzZXQpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAg
ICBpZiAoW3ByZXNldCBpc0VxdWFsVG9TdHJpbmc6QVZDYXB0dXJlU2Vzc2lvblByZXNldDEyODB4
NzIwXSkKKyAgICBpZiAoQVZDYXB0dXJlU2Vzc2lvblByZXNldDEyODB4NzIwICYmIFtwcmVzZXQg
aXNFcXVhbFRvU3RyaW5nOkFWQ2FwdHVyZVNlc3Npb25QcmVzZXQxMjgweDcyMF0pCiAgICAgICAg
IHJldHVybiB7IDEyODAsIDcyMCB9OwogCi0gICAgaWYgKFtwcmVzZXQgaXNFcXVhbFRvU3RyaW5n
OkFWQ2FwdHVyZVNlc3Npb25QcmVzZXQ5NjB4NTQwXSkKKyAgICBpZiAoQVZDYXB0dXJlU2Vzc2lv
blByZXNldDk2MHg1NDAgJiYgW3ByZXNldCBpc0VxdWFsVG9TdHJpbmc6QVZDYXB0dXJlU2Vzc2lv
blByZXNldDk2MHg1NDBdKQogICAgICAgICByZXR1cm4geyA5NjAsIDU0MCB9OwogCi0gICAgaWYg
KFtwcmVzZXQgaXNFcXVhbFRvU3RyaW5nOkFWQ2FwdHVyZVNlc3Npb25QcmVzZXQ2NDB4NDgwXSkK
KyAgICBpZiAoQVZDYXB0dXJlU2Vzc2lvblByZXNldDY0MHg0ODAgJiYgW3ByZXNldCBpc0VxdWFs
VG9TdHJpbmc6QVZDYXB0dXJlU2Vzc2lvblByZXNldDY0MHg0ODBdKQogICAgICAgICByZXR1cm4g
eyA2NDAsIDQ4MCB9OwogCi0gICAgaWYgKFtwcmVzZXQgaXNFcXVhbFRvU3RyaW5nOkFWQ2FwdHVy
ZVNlc3Npb25QcmVzZXQzNTJ4Mjg4XSkKKyAgICBpZiAoQVZDYXB0dXJlU2Vzc2lvblByZXNldDM1
MngyODggJiYgW3ByZXNldCBpc0VxdWFsVG9TdHJpbmc6QVZDYXB0dXJlU2Vzc2lvblByZXNldDM1
MngyODhdKQogICAgICAgICByZXR1cm4geyAzNTIsIDI4OCB9OwogCi0gICAgaWYgKFtwcmVzZXQg
aXNFcXVhbFRvU3RyaW5nOkFWQ2FwdHVyZVNlc3Npb25QcmVzZXQzMjB4MjQwXSkKKyAgICBpZiAo
QVZDYXB0dXJlU2Vzc2lvblByZXNldDMyMHgyNDAgJiYgW3ByZXNldCBpc0VxdWFsVG9TdHJpbmc6
QVZDYXB0dXJlU2Vzc2lvblByZXNldDMyMHgyNDBdKQogICAgICAgICByZXR1cm4geyAzMjAsIDI0
MCB9OwogICAgIAogICAgIHJldHVybiB7IH07CkBAIC00OTUsMTkgKzQ5NSwxOSBAQCBOU1N0cmlu
ZyogQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmJlc3RTZXNzCiAgICAgICAgIHJldHVybiBuaWw7CiAK
ICAgICBBVkNhcHR1cmVEZXZpY2VUeXBlZGVmICp2aWRlb0RldmljZSA9IGRldmljZSgpOwotICAg
IGlmICgoIXdpZHRoIHx8IHdpZHRoLnZhbHVlKCkgPT0gMTI4MCkgJiYgKCFoZWlnaHQgfHwgaGVp
Z2h0LnZhbHVlKCkgPT0gNzIwKSkKKyAgICBpZiAoKCF3aWR0aCB8fCB3aWR0aC52YWx1ZSgpID09
IDEyODApICYmICghaGVpZ2h0IHx8IGhlaWdodC52YWx1ZSgpID09IDcyMCkgJiYgQVZDYXB0dXJl
U2Vzc2lvblByZXNldDEyODB4NzIwKQogICAgICAgICByZXR1cm4gW3ZpZGVvRGV2aWNlIHN1cHBv
cnRzQVZDYXB0dXJlU2Vzc2lvblByZXNldDpBVkNhcHR1cmVTZXNzaW9uUHJlc2V0MTI4MHg3MjBd
ID8gQVZDYXB0dXJlU2Vzc2lvblByZXNldDEyODB4NzIwIDogbmlsOwogCi0gICAgaWYgKCghd2lk
dGggfHwgd2lkdGgudmFsdWUoKSA9PSA5NjApICYmICghaGVpZ2h0IHx8IGhlaWdodC52YWx1ZSgp
ID09IDU0MCApKQorICAgIGlmICgoIXdpZHRoIHx8IHdpZHRoLnZhbHVlKCkgPT0gOTYwKSAmJiAo
IWhlaWdodCB8fCBoZWlnaHQudmFsdWUoKSA9PSA1NDApICYmIEFWQ2FwdHVyZVNlc3Npb25QcmVz
ZXQ5NjB4NTQwKQogICAgICAgICByZXR1cm4gW3ZpZGVvRGV2aWNlIHN1cHBvcnRzQVZDYXB0dXJl
U2Vzc2lvblByZXNldDpBVkNhcHR1cmVTZXNzaW9uUHJlc2V0OTYweDU0MF0gPyBBVkNhcHR1cmVT
ZXNzaW9uUHJlc2V0OTYweDU0MCA6IG5pbDsKIAotICAgIGlmICgoIXdpZHRoIHx8IHdpZHRoLnZh
bHVlKCkgPT0gNjQwKSAmJiAoIWhlaWdodCB8fCBoZWlnaHQudmFsdWUoKSA9PSA0ODAgKSkKKyAg
ICBpZiAoKCF3aWR0aCB8fCB3aWR0aC52YWx1ZSgpID09IDY0MCkgJiYgKCFoZWlnaHQgfHwgaGVp
Z2h0LnZhbHVlKCkgPT0gNDgwICkgJiYgQVZDYXB0dXJlU2Vzc2lvblByZXNldDY0MHg0ODApCiAg
ICAgICAgIHJldHVybiBbdmlkZW9EZXZpY2Ugc3VwcG9ydHNBVkNhcHR1cmVTZXNzaW9uUHJlc2V0
OkFWQ2FwdHVyZVNlc3Npb25QcmVzZXQ2NDB4NDgwXSA/IEFWQ2FwdHVyZVNlc3Npb25QcmVzZXQ2
NDB4NDgwIDogbmlsOwogCi0gICAgaWYgKCghd2lkdGggfHwgd2lkdGgudmFsdWUoKSA9PSAzNTIp
ICYmICghaGVpZ2h0IHx8IGhlaWdodC52YWx1ZSgpID09IDI4OCApKQorICAgIGlmICgoIXdpZHRo
IHx8IHdpZHRoLnZhbHVlKCkgPT0gMzUyKSAmJiAoIWhlaWdodCB8fCBoZWlnaHQudmFsdWUoKSA9
PSAyODggKSAmJiBBVkNhcHR1cmVTZXNzaW9uUHJlc2V0MzUyeDI4OCkKICAgICAgICAgcmV0dXJu
IFt2aWRlb0RldmljZSBzdXBwb3J0c0FWQ2FwdHVyZVNlc3Npb25QcmVzZXQ6QVZDYXB0dXJlU2Vz
c2lvblByZXNldDM1MngyODhdID8gQVZDYXB0dXJlU2Vzc2lvblByZXNldDM1MngyODggOiBuaWw7
CiAKLSAgICBpZiAoKCF3aWR0aCB8fCB3aWR0aC52YWx1ZSgpID09IDMyMCkgJiYgKCFoZWlnaHQg
fHwgaGVpZ2h0LnZhbHVlKCkgPT0gMjQwICkpCisgICAgaWYgKCghd2lkdGggfHwgd2lkdGgudmFs
dWUoKSA9PSAzMjApICYmICghaGVpZ2h0IHx8IGhlaWdodC52YWx1ZSgpID09IDI0MCApICYmIEFW
Q2FwdHVyZVNlc3Npb25QcmVzZXQzMjB4MjQwKQogICAgICAgICByZXR1cm4gW3ZpZGVvRGV2aWNl
IHN1cHBvcnRzQVZDYXB0dXJlU2Vzc2lvblByZXNldDpBVkNhcHR1cmVTZXNzaW9uUHJlc2V0MzIw
eDI0MF0gPyBBVkNhcHR1cmVTZXNzaW9uUHJlc2V0MzIweDI0MCA6IG5pbDsKIAogICAgIHJldHVy
biBuaWw7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302420</attachid>
            <date>2017-02-22 11:29:48 -0800</date>
            <delta_ts>2017-02-22 12:08:44 -0800</delta_ts>
            <desc>Patch for landing.</desc>
            <filename>ios_interruptions_patch_4.txt</filename>
            <type>text/plain</type>
            <size>22924</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxMjgyOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ0IEBACisyMDE3LTAyLTIyICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVhbSBp
T1NdIFJlc3BvbmQgdG8gY2FwdHVyZSBpbnRlcnJ1cHRpb25zIGFuZCBub3RpZmljYXRpb25zCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjg2MTAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBKZXIgTm9ibGUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakM6OmVuc3VyZUxheWVyKTogRHJpdmUtYnkgY2xlYW51cDogZG9uJ3QgY3JlYXRlCisgICAg
ICAgIGEgc2FtcGxlIGJ1ZmZlciBkaXNwbGF5IGxheWVyIHVubGVzcyB0aGVyZSBpcyBhbiBhY3Rp
dmUgdmlkZW8gdHJhY2suCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZN
ZWRpYUNhcHR1cmVTb3VyY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
QVZNZWRpYUNhcHR1cmVTb3VyY2UubW06CisgICAgICAgIChXZWJDb3JlOjpBVk1lZGlhQ2FwdHVy
ZVNvdXJjZTo6QVZNZWRpYUNhcHR1cmVTb3VyY2UpOiBBZGQgc3RhdGljX2Fzc2VydHMgdG8gZW5z
dXJlIHRoYXQKKyAgICAgICAgV2ViQ29yZTo6SW50ZXJydXB0aW9uUmVhc29uIHZhbHVlcyBtYXAg
ZGlyZWN0bHkgdG8gQVZDYXB0dXJlU2Vzc2lvbkludGVycnVwdGlvblJlYXNvbiB2YWx1ZXMuCisg
ICAgICAgIChXZWJDb3JlOjpBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6fkFWTWVkaWFDYXB0dXJlU291
cmNlKTogTWlub3IgY2xlYW51cC4KKyAgICAgICAgKFdlYkNvcmU6OkFWTWVkaWFDYXB0dXJlU291
cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEpOiBTdGFydCBsaXN0ZW5pbmcgZm9yIG5vdGlmaWNhdGlv
bnMgYmVmb3JlCisgICAgICAgIHN0YXJ0aW5nIHRoZSBzZXNzaW9uLgorICAgICAgICAoV2ViQ29y
ZTo6QVZNZWRpYUNhcHR1cmVTb3VyY2U6OnN0b3BQcm9kdWNpbmdEYXRhKTogUmVtb3ZlIHRoZSBu
b3RpZmljYXRpb24gb2JzZXJ2ZXJzIGJlZm9yZQorICAgICAgICBzdG9wcGluZyB0aGUgc2Vzc2lv
bi4KKyAgICAgICAgKFdlYkNvcmU6OkFWTWVkaWFDYXB0dXJlU291cmNlOjpzZXR1cFNlc3Npb24p
OiBNaW5vciBzdHlsZSBjbGVhbnVwLgorICAgICAgICAoV2ViQ29yZTo6QVZNZWRpYUNhcHR1cmVT
b3VyY2U6OmNhcHR1cmVTZXNzaW9uUnVudGltZUVycm9yKTogTmV3LiBXaGVuIHRoZSBlcnJvciBp
cyBBVkVycm9yTWVkaWFTZXJ2aWNlc1dlcmVSZXNldCwKKyAgICAgICAgc29tZXRpbWVzIGNhdXNl
ZCBieSBhIG1lZGlhc2VydmVyZCBjcmFzaCwgdHJ5IHRvIHJlc3RhcnQgdGhlIHNlc3Npb24gb25l
IHRpbWUuCisgICAgICAgIChXZWJDb3JlOjpBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6Y2FwdHVyZVNl
c3Npb25CZWdpbkludGVycnVwdGlvbik6IFN0b3JlIHRoZSBpbnRlcnJ1cHRpb24gcmVhc29uLgor
ICAgICAgICAoV2ViQ29yZTo6QVZNZWRpYUNhcHR1cmVTb3VyY2U6OmNhcHR1cmVTZXNzaW9uRW5k
SW50ZXJydXB0aW9uKTogVHJ5IHRvIHJlc3RhcnQgdGhlIHNlc3Npb24gaWYKKyAgICAgICAgaXQg
d2FzIGludGVycnVwdGVkIGJlY2F1c2UgdGhlIGFwcCB3ZW50IGludG8gbXVsdGktYXBwIGxheW91
dCBtb2RlLgorICAgICAgICAoV2ViQ29yZTo6c2Vzc2lvbktWT1Byb3BlcnRpZXMpOiBEcml2ZS1i
eSBjbGVhbnVwLgorICAgICAgICAoLVtXZWJDb3JlQVZNZWRpYUNhcHR1cmVTb3VyY2VPYnNlcnZl
ciBpbml0V2l0aENhbGxiYWNrOl0pOgorICAgICAgICAoLVtXZWJDb3JlQVZNZWRpYUNhcHR1cmVT
b3VyY2VPYnNlcnZlciBkaXNjb25uZWN0XSk6CisgICAgICAgICgtW1dlYkNvcmVBVk1lZGlhQ2Fw
dHVyZVNvdXJjZU9ic2VydmVyIGFkZE5vdGlmaWNhdGlvbk9ic2VydmVyc10pOgorICAgICAgICAo
LVtXZWJDb3JlQVZNZWRpYUNhcHR1cmVTb3VyY2VPYnNlcnZlciByZW1vdmVOb3RpZmljYXRpb25P
YnNlcnZlcnNdKToKKyAgICAgICAgKC1bV2ViQ29yZUFWTWVkaWFDYXB0dXJlU291cmNlT2JzZXJ2
ZXIgc2Vzc2lvblJ1bnRpbWVFcnJvcjpdKToKKyAgICAgICAgKC1bV2ViQ29yZUFWTWVkaWFDYXB0
dXJlU291cmNlT2JzZXJ2ZXIgYmVnaW5TZXNzaW9uSW50ZXJydXB0ZWQ6XSk6CisgICAgICAgICgt
W1dlYkNvcmVBVk1lZGlhQ2FwdHVyZVNvdXJjZU9ic2VydmVyIGVuZFNlc3Npb25JbnRlcnJ1cHRl
ZDpdKToKKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVy
ZVNvdXJjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291cmNlOjppbml0
aWFsaXplQ2FwYWJpbGl0aWVzKTogTm90IGFsbCBBVkNhcHR1cmVTZXNzaW9uIHByZXNldCBzdHJp
bmdzCisgICAgICAgIGFyZSBhdmFpbGFibGUgb24gYWxsIHBsYXRmb3JtcyBzbyBsb2FkIHdpdGgg
U09GVF9MSU5LX1BPSU5URVJfT1BUSU9OQUwgYW5kIE5VTEwgY2hlY2sgYmVmb3JlIHVzZS4KKyAg
ICAgICAgKFdlYkNvcmU6OnNpemVGb3JQcmVzZXQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OkFWVmlkZW9DYXB0dXJlU291cmNlOjpiZXN0U2Vzc2lvblByZXNldEZvclZpZGVvRGltZW5zaW9u
cyk6IERpdHRvLgorCiAyMDE3LTAyLTIyICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNv
bT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIyMDc2NjkpOiBDcmFzaCBhZnRlciBtdXRhdGluZyBz
ZWxlY3RvciB0ZXh0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UuaAkocmV2aXNpb24g
MjEyODI4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVk
aWFDYXB0dXJlU291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAgT0JKQ19D
TEFTUyBBVkNhcHR1cmVEZXZpY2U7CiBPQkpDX0NMQVNTIEFWQ2FwdHVyZU91dHB1dDsKIE9CSkNf
Q0xBU1MgQVZDYXB0dXJlU2Vzc2lvbjsKIE9CSkNfQ0xBU1MgQVZDYXB0dXJlVmlkZW9EYXRhT3V0
cHV0OworT0JKQ19DTEFTUyBOU0Vycm9yOwogT0JKQ19DTEFTUyBXZWJDb3JlQVZNZWRpYUNhcHR1
cmVTb3VyY2VPYnNlcnZlcjsKIAogdHlwZWRlZiBzdHJ1Y3Qgb3BhcXVlQ01TYW1wbGVCdWZmZXIg
KkNNU2FtcGxlQnVmZmVyUmVmOwpAQCAtNTMsNyArNTQsMTIgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCB2b2lkIGNhcHR1cmVPdXRwdXREaWRPdXRwdXRTYW1wbGVCdWZmZXJGcm9tQ29ubmVjdGlv
bihBVkNhcHR1cmVPdXRwdXQqLCBDTVNhbXBsZUJ1ZmZlclJlZiwgQVZDYXB0dXJlQ29ubmVjdGlv
biopID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBjYXB0dXJlU2Vzc2lvbklzUnVubmluZ0RpZENo
YW5nZShib29sKTsKKyAgICB2b2lkIGNhcHR1cmVTZXNzaW9uSXNSdW5uaW5nRGlkQ2hhbmdlKGJv
b2wpOworICAgIHZvaWQgY2FwdHVyZVNlc3Npb25SdW50aW1lRXJyb3IoUmV0YWluUHRyPE5TRXJy
b3I+KTsKKworICAgIGVudW0gY2xhc3MgSW50ZXJydXB0aW9uUmVhc29uIHsgTm9uZSwgVmlkZW9O
b3RBbGxvd2VkSW5CYWNrZ3JvdW5kLCBBdWRpb0luVXNlLCBWaWRlb0luVXNlLCBWaWRlb05vdEFs
bG93ZWRJblNpZGVCeVNpZGUgfTsKKyAgICB2b2lkIGNhcHR1cmVTZXNzaW9uQmVnaW5JbnRlcnJ1
cHRpb24oUmV0YWluUHRyPE5TTm90aWZpY2F0aW9uPik7CisgICAgdm9pZCBjYXB0dXJlU2Vzc2lv
bkVuZEludGVycnVwdGlvbihSZXRhaW5QdHI8TlNOb3RpZmljYXRpb24+KTsKIAogICAgIEFWQ2Fw
dHVyZVNlc3Npb24gKnNlc3Npb24oKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb24uZ2V0KCk7IH0K
IApAQCAtOTgsNyArMTA0LDggQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8UmVhbHRpbWVNZWRpYVNv
dXJjZUNhcGFiaWxpdGllcz4gbV9jYXBhYmlsaXRpZXM7CiAgICAgUmV0YWluUHRyPEFWQ2FwdHVy
ZVNlc3Npb24+IG1fc2Vzc2lvbjsKICAgICBSZXRhaW5QdHI8QVZDYXB0dXJlRGV2aWNlPiBtX2Rl
dmljZTsKLSAgICBib29sIG1faXNSdW5uaW5nIHsgZmFsc2V9OworICAgIEludGVycnVwdGlvblJl
YXNvbiBtX2ludGVycnVwdGlvbiB7IEludGVycnVwdGlvblJlYXNvbjo6Tm9uZSB9OworICAgIGJv
b2wgbV9pc1J1bm5pbmcgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0
dXJlU291cmNlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5tbQkocmV2aXNpb24gMjEyODI4KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291
cmNlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBACiAjaW1wb3J0IDxBVkZvdW5k
YXRpb24vQVZDYXB0dXJlSW5wdXQuaD4KICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkNhcHR1cmVP
dXRwdXQuaD4KICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkNhcHR1cmVTZXNzaW9uLmg+CisjaW1w
b3J0IDxBVkZvdW5kYXRpb24vQVZFcnJvci5oPgogI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+CiAj
aW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgogCkBAIC03MiwyMCArNzMsMjQgQEAgU09GVF9MSU5L
X0NMQVNTKEFWRm91bmRhdGlvbiwgQVZDYXB0dXJlVgogU09GVF9MSU5LX1BPSU5URVIoQVZGb3Vu
ZGF0aW9uLCBBVk1lZGlhVHlwZUF1ZGlvLCBOU1N0cmluZyAqKQogU09GVF9MSU5LX1BPSU5URVIo
QVZGb3VuZGF0aW9uLCBBVk1lZGlhVHlwZU11eGVkLCBOU1N0cmluZyAqKQogU09GVF9MSU5LX1BP
SU5URVIoQVZGb3VuZGF0aW9uLCBBVk1lZGlhVHlwZVZpZGVvLCBOU1N0cmluZyAqKQotU09GVF9M
SU5LX1BPSU5URVIoQVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVTZXNzaW9uUHJlc2V0MTI4MHg3MjAs
IE5TU3RyaW5nICopCi1TT0ZUX0xJTktfUE9JTlRFUihBVkZvdW5kYXRpb24sIEFWQ2FwdHVyZVNl
c3Npb25QcmVzZXQ2NDB4NDgwLCBOU1N0cmluZyAqKQotU09GVF9MSU5LX1BPSU5URVIoQVZGb3Vu
ZGF0aW9uLCBBVkNhcHR1cmVTZXNzaW9uUHJlc2V0MzUyeDI4OCwgTlNTdHJpbmcgKikKLVNPRlRf
TElOS19QT0lOVEVSKEFWRm91bmRhdGlvbiwgQVZDYXB0dXJlU2Vzc2lvblByZXNldExvdywgTlNT
dHJpbmcgKikKLVNPRlRfTElOS19QT0lOVEVSKEFWRm91bmRhdGlvbiwgQVZDYXB0dXJlU2Vzc2lv
bkRpZFN0b3BSdW5uaW5nTm90aWZpY2F0aW9uLCBOU1N0cmluZyAqKQogCiAjZGVmaW5lIEFWTWVk
aWFUeXBlQXVkaW8gZ2V0QVZNZWRpYVR5cGVBdWRpbygpCiAjZGVmaW5lIEFWTWVkaWFUeXBlTXV4
ZWQgZ2V0QVZNZWRpYVR5cGVNdXhlZCgpCiAjZGVmaW5lIEFWTWVkaWFUeXBlVmlkZW8gZ2V0QVZN
ZWRpYVR5cGVWaWRlbygpCi0jZGVmaW5lIEFWQ2FwdHVyZVNlc3Npb25QcmVzZXQxMjgweDcyMCBn
ZXRBVkNhcHR1cmVTZXNzaW9uUHJlc2V0MTI4MHg3MjAoKQotI2RlZmluZSBBVkNhcHR1cmVTZXNz
aW9uUHJlc2V0NjQweDQ4MCBnZXRBVkNhcHR1cmVTZXNzaW9uUHJlc2V0NjQweDQ4MCgpCi0jZGVm
aW5lIEFWQ2FwdHVyZVNlc3Npb25QcmVzZXQzNTJ4Mjg4IGdldEFWQ2FwdHVyZVNlc3Npb25QcmVz
ZXQzNTJ4Mjg4KCkKLSNkZWZpbmUgQVZDYXB0dXJlU2Vzc2lvblByZXNldExvdyBnZXRBVkNhcHR1
cmVTZXNzaW9uUHJlc2V0TG93KCkKLSNkZWZpbmUgQVZDYXB0dXJlU2Vzc2lvbkRpZFN0b3BSdW5u
aW5nTm90aWZpY2F0aW9uIGdldEFWQ2FwdHVyZVNlc3Npb25EaWRTdG9wUnVubmluZ05vdGlmaWNh
dGlvbigpCisKKyNpZiBQTEFURk9STShJT1MpCitTT0ZUX0xJTktfUE9JTlRFUl9PUFRJT05BTChB
VkZvdW5kYXRpb24sIEFWQ2FwdHVyZVNlc3Npb25SdW50aW1lRXJyb3JOb3RpZmljYXRpb24sIE5T
U3RyaW5nICopCitTT0ZUX0xJTktfUE9JTlRFUl9PUFRJT05BTChBVkZvdW5kYXRpb24sIEFWQ2Fw
dHVyZVNlc3Npb25XYXNJbnRlcnJ1cHRlZE5vdGlmaWNhdGlvbiwgTlNTdHJpbmcgKikKK1NPRlRf
TElOS19QT0lOVEVSX09QVElPTkFMKEFWRm91bmRhdGlvbiwgQVZDYXB0dXJlU2Vzc2lvbkludGVy
cnVwdGlvbkVuZGVkTm90aWZpY2F0aW9uLCBOU1N0cmluZyAqKQorU09GVF9MSU5LX1BPSU5URVJf
T1BUSU9OQUwoQVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVTZXNzaW9uSW50ZXJydXB0aW9uUmVhc29u
S2V5LCBOU1N0cmluZyAqKQorU09GVF9MSU5LX1BPSU5URVJfT1BUSU9OQUwoQVZGb3VuZGF0aW9u
LCBBVkNhcHR1cmVTZXNzaW9uRXJyb3JLZXksIE5TU3RyaW5nICopCisKKyNkZWZpbmUgQVZDYXB0
dXJlU2Vzc2lvblJ1bnRpbWVFcnJvck5vdGlmaWNhdGlvbiBnZXRBVkNhcHR1cmVTZXNzaW9uUnVu
dGltZUVycm9yTm90aWZpY2F0aW9uKCkKKyNkZWZpbmUgQVZDYXB0dXJlU2Vzc2lvbldhc0ludGVy
cnVwdGVkTm90aWZpY2F0aW9uIGdldEFWQ2FwdHVyZVNlc3Npb25XYXNJbnRlcnJ1cHRlZE5vdGlm
aWNhdGlvbigpCisjZGVmaW5lIEFWQ2FwdHVyZVNlc3Npb25JbnRlcnJ1cHRpb25FbmRlZE5vdGlm
aWNhdGlvbiBnZXRBVkNhcHR1cmVTZXNzaW9uSW50ZXJydXB0aW9uRW5kZWROb3RpZmljYXRpb24o
KQorI2RlZmluZSBBVkNhcHR1cmVTZXNzaW9uSW50ZXJydXB0aW9uUmVhc29uS2V5IGdldEFWQ2Fw
dHVyZVNlc3Npb25JbnRlcnJ1cHRpb25SZWFzb25LZXkoKQorI2RlZmluZSBBVkNhcHR1cmVTZXNz
aW9uRXJyb3JLZXkgZ2V0QVZDYXB0dXJlU2Vzc2lvbkVycm9yS2V5KCkKKyNlbmRpZgogCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtOTYsMTMgKzEwMSwyMCBAQCBAaW50ZXJmYWNlIFdl
YkNvcmVBVk1lZGlhQ2FwdHVyZVNvdXJjZU9iCiAKIC0oaWQpaW5pdFdpdGhDYWxsYmFjazooQVZN
ZWRpYUNhcHR1cmVTb3VyY2UqKWNhbGxiYWNrOwogLSh2b2lkKWRpc2Nvbm5lY3Q7Ci0tKHZvaWQp
Y2FwdHVyZU91dHB1dDooQVZDYXB0dXJlT3V0cHV0VHlwZSAqKWNhcHR1cmVPdXRwdXQgZGlkT3V0
cHV0U2FtcGxlQnVmZmVyOihDTVNhbXBsZUJ1ZmZlclJlZilzYW1wbGVCdWZmZXIgZnJvbUNvbm5l
Y3Rpb246KEFWQ2FwdHVyZUNvbm5lY3Rpb25UeXBlICopY29ubmVjdGlvbjsKLS0odm9pZClvYnNl
cnZlVmFsdWVGb3JLZXlQYXRoOmtleVBhdGggb2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE5T
RGljdGlvbmFyeSAqKWNoYW5nZSBjb250ZXh0Oih2b2lkKiljb250ZXh0OworLSh2b2lkKWFkZE5v
dGlmaWNhdGlvbk9ic2VydmVyczsKKy0odm9pZClyZW1vdmVOb3RpZmljYXRpb25PYnNlcnZlcnM7
CistKHZvaWQpY2FwdHVyZU91dHB1dDooQVZDYXB0dXJlT3V0cHV0VHlwZSopY2FwdHVyZU91dHB1
dCBkaWRPdXRwdXRTYW1wbGVCdWZmZXI6KENNU2FtcGxlQnVmZmVyUmVmKXNhbXBsZUJ1ZmZlciBm
cm9tQ29ubmVjdGlvbjooQVZDYXB0dXJlQ29ubmVjdGlvblR5cGUqKWNvbm5lY3Rpb247CistKHZv
aWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDprZXlQYXRoIG9mT2JqZWN0OihpZClvYmplY3QgY2hh
bmdlOihOU0RpY3Rpb25hcnkqKWNoYW5nZSBjb250ZXh0Oih2b2lkKiljb250ZXh0OworI2lmIFBM
QVRGT1JNKElPUykKKy0odm9pZClzZXNzaW9uUnVudGltZUVycm9yOihOU05vdGlmaWNhdGlvbiop
bm90aWZpY2F0aW9uOworLSh2b2lkKWJlZ2luU2Vzc2lvbkludGVycnVwdGVkOihOU05vdGlmaWNh
dGlvbiopbm90aWZpY2F0aW9uOworLSh2b2lkKWVuZFNlc3Npb25JbnRlcnJ1cHRlZDooTlNOb3Rp
ZmljYXRpb24qKW5vdGlmaWNhdGlvbjsKKyNlbmRpZgogQGVuZAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLXN0YXRpYyBOU0FycmF5KiBzZXNzaW9uS1ZPUHJvcGVydGllcygpOworc3RhdGljIE5T
QXJyYXk8TlNTdHJpbmcqPiogc2Vzc2lvbktWT1Byb3BlcnRpZXMoKTsKIAogc3RhdGljIGRpc3Bh
dGNoX3F1ZXVlX3QgZ2xvYmFBdWRpb0NhcHR1cmVTZXJpYWxRdWV1ZSgpCiB7CkBAIC0xMzAsNiAr
MTQyLDEzIEBAIEFWTWVkaWFDYXB0dXJlU291cmNlOjpBVk1lZGlhQ2FwdHVyZVNvdXIKICAgICAs
IG1fb2JqY09ic2VydmVyKGFkb3B0TlMoW1tXZWJDb3JlQVZNZWRpYUNhcHR1cmVTb3VyY2VPYnNl
cnZlciBhbGxvY10gaW5pdFdpdGhDYWxsYmFjazp0aGlzXSkpCiAgICAgLCBtX2RldmljZShkZXZp
Y2UpCiB7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8
aW50PihJbnRlcnJ1cHRpb25SZWFzb246OlZpZGVvTm90QWxsb3dlZEluQmFja2dyb3VuZCkgPT0g
c3RhdGljX2Nhc3Q8aW50PihBVkNhcHR1cmVTZXNzaW9uSW50ZXJydXB0aW9uUmVhc29uVmlkZW9E
ZXZpY2VOb3RBdmFpbGFibGVJbkJhY2tncm91bmQpLCAiSW50ZXJydXB0aW9uUmVhc29uOjpWaWRl
b05vdEFsbG93ZWRJbkJhY2tncm91bmQgaXMgbm90IEFWQ2FwdHVyZVNlc3Npb25JbnRlcnJ1cHRp
b25SZWFzb25WaWRlb0RldmljZU5vdEF2YWlsYWJsZUluQmFja2dyb3VuZCBhcyBleHBlY3RlZCIp
OworICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8aW50PihJbnRlcnJ1cHRpb25SZWFzb246
OlZpZGVvTm90QWxsb3dlZEluU2lkZUJ5U2lkZSkgPT0gQVZDYXB0dXJlU2Vzc2lvbkludGVycnVw
dGlvblJlYXNvblZpZGVvRGV2aWNlTm90QXZhaWxhYmxlV2l0aE11bHRpcGxlRm9yZWdyb3VuZEFw
cHMsICJJbnRlcnJ1cHRpb25SZWFzb246OlZpZGVvTm90QWxsb3dlZEluU2lkZUJ5U2lkZSBpcyBu
b3QgQVZDYXB0dXJlU2Vzc2lvbkludGVycnVwdGlvblJlYXNvblZpZGVvRGV2aWNlTm90QXZhaWxh
YmxlV2l0aE11bHRpcGxlRm9yZWdyb3VuZEFwcHMgYXMgZXhwZWN0ZWQiKTsKKyAgICBzdGF0aWNf
YXNzZXJ0KHN0YXRpY19jYXN0PGludD4oSW50ZXJydXB0aW9uUmVhc29uOjpWaWRlb0luVXNlKSA9
PSBBVkNhcHR1cmVTZXNzaW9uSW50ZXJydXB0aW9uUmVhc29uVmlkZW9EZXZpY2VJblVzZUJ5QW5v
dGhlckNsaWVudCwgIkludGVycnVwdGlvblJlYXNvbjo6VmlkZW9JblVzZSBpcyBub3QgQVZDYXB0
dXJlU2Vzc2lvbkludGVycnVwdGlvblJlYXNvblZpZGVvRGV2aWNlSW5Vc2VCeUFub3RoZXJDbGll
bnQgYXMgZXhwZWN0ZWQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PGludD4oSW50
ZXJydXB0aW9uUmVhc29uOjpBdWRpb0luVXNlKSA9PSBBVkNhcHR1cmVTZXNzaW9uSW50ZXJydXB0
aW9uUmVhc29uQXVkaW9EZXZpY2VJblVzZUJ5QW5vdGhlckNsaWVudCwgIkludGVycnVwdGlvblJl
YXNvbjo6QXVkaW9JblVzZSBpcyBub3QgQVZDYXB0dXJlU2Vzc2lvbkludGVycnVwdGlvblJlYXNv
bkF1ZGlvRGV2aWNlSW5Vc2VCeUFub3RoZXJDbGllbnQgYXMgZXhwZWN0ZWQiKTsKKyNlbmRpZgor
ICAgIAogICAgIHNldFBlcnNpc3RlbnRJRChkZXZpY2UudW5pcXVlSUQpOwogICAgIHNldE11dGVk
KHRydWUpOwogfQpAQCAtMTM4LDExICsxNTcsMTUgQEAgQVZNZWRpYUNhcHR1cmVTb3VyY2U6On5B
Vk1lZGlhQ2FwdHVyZVNvdQogewogICAgIFttX29iamNPYnNlcnZlciBkaXNjb25uZWN0XTsKIAot
ICAgIGlmIChtX3Nlc3Npb24pIHsKLSAgICAgICAgZm9yIChOU1N0cmluZyAqa2V5TmFtZSBpbiBz
ZXNzaW9uS1ZPUHJvcGVydGllcygpKQotICAgICAgICAgICAgW21fc2Vzc2lvbiByZW1vdmVPYnNl
cnZlcjptX29iamNPYnNlcnZlci5nZXQoKSBmb3JLZXlQYXRoOmtleU5hbWVdOworICAgIGlmICgh
bV9zZXNzaW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKE5TU3RyaW5nICprZXlOYW1l
IGluIHNlc3Npb25LVk9Qcm9wZXJ0aWVzKCkpCisgICAgICAgIFttX3Nlc3Npb24gcmVtb3ZlT2Jz
ZXJ2ZXI6bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDprZXlOYW1lXTsKKworICAgIGlm
IChbbV9zZXNzaW9uIGlzUnVubmluZ10pCiAgICAgICAgIFttX3Nlc3Npb24gc3RvcFJ1bm5pbmdd
OwotICAgIH0KKwogfQogCiB2b2lkIEFWTWVkaWFDYXB0dXJlU291cmNlOjpzdGFydFByb2R1Y2lu
Z0RhdGEoKQpAQCAtMTUyLDcgKzE3NSw4IEBAIHZvaWQgQVZNZWRpYUNhcHR1cmVTb3VyY2U6OnN0
YXJ0UHJvZHVjaW4KICAgICAKICAgICBpZiAoW21fc2Vzc2lvbiBpc1J1bm5pbmddKQogICAgICAg
ICByZXR1cm47Ci0gICAgCisKKyAgICBbbV9vYmpjT2JzZXJ2ZXIgYWRkTm90aWZpY2F0aW9uT2Jz
ZXJ2ZXJzXTsKICAgICBbbV9zZXNzaW9uIHN0YXJ0UnVubmluZ107CiB9CiAKQEAgLTE2MSw2ICsx
ODUsNyBAQCB2b2lkIEFWTWVkaWFDYXB0dXJlU291cmNlOjpzdG9wUHJvZHVjaW5nCiAgICAgaWYg
KCFtX3Nlc3Npb24gfHwgIVttX3Nlc3Npb24gaXNSdW5uaW5nXSkKICAgICAgICAgcmV0dXJuOwog
CisgICAgW21fb2JqY09ic2VydmVyIHJlbW92ZU5vdGlmaWNhdGlvbk9ic2VydmVyc107CiAgICAg
W21fc2Vzc2lvbiBzdG9wUnVubmluZ107CiB9CiAKQEAgLTIyMyw3ICsyNDgsNyBAQCB2b2lkIEFW
TWVkaWFDYXB0dXJlU291cmNlOjpzZXR1cFNlc3Npb24oCiAgICAgICAgIHJldHVybjsKIAogICAg
IG1fc2Vzc2lvbiA9IGFkb3B0TlMoW2FsbG9jQVZDYXB0dXJlU2Vzc2lvbkluc3RhbmNlKCkgaW5p
dF0pOwotICAgIGZvciAoTlNTdHJpbmcgKmtleU5hbWUgaW4gc2Vzc2lvbktWT1Byb3BlcnRpZXMo
KSkKKyAgICBmb3IgKE5TU3RyaW5nKiBrZXlOYW1lIGluIHNlc3Npb25LVk9Qcm9wZXJ0aWVzKCkp
CiAgICAgICAgIFttX3Nlc3Npb24gYWRkT2JzZXJ2ZXI6bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkgZm9y
S2V5UGF0aDprZXlOYW1lIG9wdGlvbnM6TlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbk5ldyBjb250
ZXh0Oih2b2lkICopbmlsXTsKIAogICAgIFttX3Nlc3Npb24gYmVnaW5Db25maWd1cmF0aW9uXTsK
QEAgLTI1Myw2ICsyNzgsMzUgQEAgdm9pZCBBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6Y2FwdHVyZVNl
c3NpbwogICAgIH0pOwogfQogCisjaWYgUExBVEZPUk0oSU9TKQordm9pZCBBVk1lZGlhQ2FwdHVy
ZVNvdXJjZTo6Y2FwdHVyZVNlc3Npb25SdW50aW1lRXJyb3IoUmV0YWluUHRyPE5TRXJyb3I+IGVy
cm9yKQoreworICAgIGlmICghbV9pc1J1bm5pbmcgfHwgZXJyb3IuZ2V0KCkuY29kZSAhPSBBVkVy
cm9yTWVkaWFTZXJ2aWNlc1dlcmVSZXNldCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gVHJ5
IHRvIHJlc3RhcnQgdGhlIHNlc3Npb24sIGJ1dCByZXNldCBtX2lzUnVubmluZyBpbW1lZGlhdGVs
eSBzbyBpZiBpdCBmYWlscyB3ZSB3b24ndCB0cnkgYWdhaW4uCisgICAgW21fc2Vzc2lvbiBzdGFy
dFJ1bm5pbmddOworICAgIG1faXNSdW5uaW5nID0gW21fc2Vzc2lvbiBpc1J1bm5pbmddOworfQor
Cit2b2lkIEFWTWVkaWFDYXB0dXJlU291cmNlOjpjYXB0dXJlU2Vzc2lvbkJlZ2luSW50ZXJydXB0
aW9uKFJldGFpblB0cjxOU05vdGlmaWNhdGlvbj4gbm90aWZpY2F0aW9uKQoreworICAgIG1faW50
ZXJydXB0aW9uID0gc3RhdGljX2Nhc3Q8QVZNZWRpYUNhcHR1cmVTb3VyY2U6OkludGVycnVwdGlv
blJlYXNvbj4oW25vdGlmaWNhdGlvbi5nZXQoKS51c2VySW5mb1tBVkNhcHR1cmVTZXNzaW9uSW50
ZXJydXB0aW9uUmVhc29uS2V5XSBpbnRlZ2VyVmFsdWVdKTsKK30KKwordm9pZCBBVk1lZGlhQ2Fw
dHVyZVNvdXJjZTo6Y2FwdHVyZVNlc3Npb25FbmRJbnRlcnJ1cHRpb24oUmV0YWluUHRyPE5TTm90
aWZpY2F0aW9uPikKK3sKKyAgICBJbnRlcnJ1cHRpb25SZWFzb24gcmVhc29uID0gbV9pbnRlcnJ1
cHRpb247CisKKyAgICBtX2ludGVycnVwdGlvbiA9IEludGVycnVwdGlvblJlYXNvbjo6Tm9uZTsK
KyAgICBpZiAocmVhc29uICE9IEludGVycnVwdGlvblJlYXNvbjo6VmlkZW9Ob3RBbGxvd2VkSW5T
aWRlQnlTaWRlIHx8IG1faXNSdW5uaW5nKQorICAgICAgICByZXR1cm47CisKKyAgICBbbV9zZXNz
aW9uIHN0YXJ0UnVubmluZ107CisgICAgbV9pc1J1bm5pbmcgPSBbbV9zZXNzaW9uIGlzUnVubmlu
Z107Cit9CisjZW5kaWYKKwogdm9pZCBBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6c2V0VmlkZW9TYW1w
bGVCdWZmZXJEZWxlZ2F0ZShBVkNhcHR1cmVWaWRlb0RhdGFPdXRwdXRUeXBlKiB2aWRlb091dHB1
dCkKIHsKICAgICBbdmlkZW9PdXRwdXQgc2V0U2FtcGxlQnVmZmVyRGVsZWdhdGU6bV9vYmpjT2Jz
ZXJ2ZXIuZ2V0KCkgcXVldWU6Z2xvYmFWaWRlb0NhcHR1cmVTZXJpYWxRdWV1ZSgpXTsKQEAgLTI2
OSw3ICszMjMsNyBAQCBBdWRpb1NvdXJjZVByb3ZpZGVyKiBBVk1lZGlhQ2FwdHVyZVNvdXJjCiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLU5TQXJyYXkqIHNlc3Npb25LVk9Qcm9wZXJ0aWVzKCkK
K05TQXJyYXk8TlNTdHJpbmcqPiogc2Vzc2lvbktWT1Byb3BlcnRpZXMoKQogewogICAgIHN0YXRp
YyBOU0FycmF5KiBrZXlzID0gW0BbQCJydW5uaW5nIl0gcmV0YWluXTsKICAgICByZXR1cm4ga2V5
czsKQEAgLTI4Niw2ICszNDAsNyBAQCAtIChpZClpbml0V2l0aENhbGxiYWNrOihBVk1lZGlhQ2Fw
dHVyZVNvCiAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICBtX2NhbGxiYWNrID0gY2FsbGJhY2s7
CisKICAgICByZXR1cm4gc2VsZjsKIH0KIApAQCAtMjkzLDkgKzM0OCwzMiBAQCAtICh2b2lkKWRp
c2Nvbm5lY3QKIHsKICAgICBbTlNPYmplY3QgY2FuY2VsUHJldmlvdXNQZXJmb3JtUmVxdWVzdHNX
aXRoVGFyZ2V0OnNlbGZdOwogICAgIG1fY2FsbGJhY2sgPSAwOworICAgIFtzZWxmIHJlbW92ZU5v
dGlmaWNhdGlvbk9ic2VydmVyc107CiB9CiAKLS0gKHZvaWQpY2FwdHVyZU91dHB1dDooQVZDYXB0
dXJlT3V0cHV0VHlwZSAqKWNhcHR1cmVPdXRwdXQgZGlkT3V0cHV0U2FtcGxlQnVmZmVyOihDTVNh
bXBsZUJ1ZmZlclJlZilzYW1wbGVCdWZmZXIgZnJvbUNvbm5lY3Rpb246KEFWQ2FwdHVyZUNvbm5l
Y3Rpb25UeXBlICopY29ubmVjdGlvbgorLSAodm9pZClhZGROb3RpZmljYXRpb25PYnNlcnZlcnMK
K3sKKyNpZiBQTEFURk9STShJT1MpCisgICAgQVNTRVJUKG1fY2FsbGJhY2spOworCisgICAgTlNO
b3RpZmljYXRpb25DZW50ZXIqIGNlbnRlciA9IFtOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0
Q2VudGVyXTsKKyAgICBBVkNhcHR1cmVTZXNzaW9uVHlwZSogc2Vzc2lvbiA9IG1fY2FsbGJhY2st
PnNlc3Npb24oKTsKKworICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2Vs
ZWN0b3Ioc2Vzc2lvblJ1bnRpbWVFcnJvcjopIG5hbWU6QVZDYXB0dXJlU2Vzc2lvblJ1bnRpbWVF
cnJvck5vdGlmaWNhdGlvbiBvYmplY3Q6c2Vzc2lvbl07CisgICAgW2NlbnRlciBhZGRPYnNlcnZl
cjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihiZWdpblNlc3Npb25JbnRlcnJ1cHRlZDopIG5hbWU6
QVZDYXB0dXJlU2Vzc2lvbldhc0ludGVycnVwdGVkTm90aWZpY2F0aW9uIG9iamVjdDpzZXNzaW9u
XTsKKyAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGVuZFNl
c3Npb25JbnRlcnJ1cHRlZDopIG5hbWU6QVZDYXB0dXJlU2Vzc2lvbkludGVycnVwdGlvbkVuZGVk
Tm90aWZpY2F0aW9uIG9iamVjdDpzZXNzaW9uXTsKKyNlbmRpZgorfQorCistICh2b2lkKXJlbW92
ZU5vdGlmaWNhdGlvbk9ic2VydmVycworeworI2lmIFBMQVRGT1JNKElPUykKKyAgICBBU1NFUlQo
bV9jYWxsYmFjayk7CisgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBy
ZW1vdmVPYnNlcnZlcjptX2NhbGxiYWNrLT5zZXNzaW9uKCldOworI2VuZGlmCit9CisKKy0gKHZv
aWQpY2FwdHVyZU91dHB1dDooQVZDYXB0dXJlT3V0cHV0VHlwZSopY2FwdHVyZU91dHB1dCBkaWRP
dXRwdXRTYW1wbGVCdWZmZXI6KENNU2FtcGxlQnVmZmVyUmVmKXNhbXBsZUJ1ZmZlciBmcm9tQ29u
bmVjdGlvbjooQVZDYXB0dXJlQ29ubmVjdGlvblR5cGUqKWNvbm5lY3Rpb24KIHsKICAgICBpZiAo
IW1fY2FsbGJhY2spCiAgICAgICAgIHJldHVybjsKQEAgLTMwMyw3ICszODEsNyBAQCAtICh2b2lk
KWNhcHR1cmVPdXRwdXQ6KEFWQ2FwdHVyZU91dHB1dFR5CiAgICAgbV9jYWxsYmFjay0+Y2FwdHVy
ZU91dHB1dERpZE91dHB1dFNhbXBsZUJ1ZmZlckZyb21Db25uZWN0aW9uKGNhcHR1cmVPdXRwdXQs
IHNhbXBsZUJ1ZmZlciwgY29ubmVjdGlvbik7CiB9CiAKLS0odm9pZClvYnNlcnZlVmFsdWVGb3JL
ZXlQYXRoOmtleVBhdGggb2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE5TRGljdGlvbmFyeSAq
KWNoYW5nZSBjb250ZXh0Oih2b2lkKiljb250ZXh0CistICh2b2lkKW9ic2VydmVWYWx1ZUZvcktl
eVBhdGg6a2V5UGF0aCBvZk9iamVjdDooaWQpb2JqZWN0IGNoYW5nZTooTlNEaWN0aW9uYXJ5Kilj
aGFuZ2UgY29udGV4dDoodm9pZCopY29udGV4dAogewogICAgIFVOVVNFRF9QQVJBTShvYmplY3Qp
OwogICAgIFVOVVNFRF9QQVJBTShjb250ZXh0KTsKQEAgLTMyOCw2ICs0MDYsMzMgQEAgLSh2b2lk
KW9ic2VydmVWYWx1ZUZvcktleVBhdGg6a2V5UGF0aCBvZgogICAgICAgICBtX2NhbGxiYWNrLT5j
YXB0dXJlU2Vzc2lvbklzUnVubmluZ0RpZENoYW5nZShbbmV3VmFsdWUgYm9vbFZhbHVlXSk7CiB9
CiAKKyNpZiBQTEFURk9STShJT1MpCistICh2b2lkKXNlc3Npb25SdW50aW1lRXJyb3I6KE5TTm90
aWZpY2F0aW9uKilub3RpZmljYXRpb24KK3sKKyAgICBOU0Vycm9yICplcnJvciA9IG5vdGlmaWNh
dGlvbi51c2VySW5mb1tBVkNhcHR1cmVTZXNzaW9uRXJyb3JLZXldOworICAgIExPRyhNZWRpYSwg
IldlYkNvcmVBVk1lZGlhQ2FwdHVyZVNvdXJjZU9ic2VydmVyOjpzZXNzaW9uUnVudGltZUVycm9y
KCVwKSAtIGVycm9yID0gJXMiLCBzZWxmLCBbW2Vycm9yIGxvY2FsaXplZERlc2NyaXB0aW9uXSBV
VEY4U3RyaW5nXSk7CisKKyAgICBpZiAobV9jYWxsYmFjaykKKyAgICAgICAgbV9jYWxsYmFjay0+
Y2FwdHVyZVNlc3Npb25SdW50aW1lRXJyb3IoZXJyb3IpOworfQorCistKHZvaWQpYmVnaW5TZXNz
aW9uSW50ZXJydXB0ZWQ6KE5TTm90aWZpY2F0aW9uKilub3RpZmljYXRpb24KK3sKKyAgICBMT0co
TWVkaWEsICJXZWJDb3JlQVZNZWRpYUNhcHR1cmVTb3VyY2VPYnNlcnZlcjo6YmVnaW5TZXNzaW9u
SW50ZXJydXB0ZWQoJXApIC0gcmVhc29uID0gJWQiLCBzZWxmLCBbbm90aWZpY2F0aW9uLnVzZXJJ
bmZvW0FWQ2FwdHVyZVNlc3Npb25JbnRlcnJ1cHRpb25SZWFzb25LZXldIGludGVnZXJWYWx1ZV0p
OworCisgICAgaWYgKG1fY2FsbGJhY2spCisgICAgICAgIG1fY2FsbGJhY2stPmNhcHR1cmVTZXNz
aW9uQmVnaW5JbnRlcnJ1cHRpb24obm90aWZpY2F0aW9uKTsKK30KKworLSAodm9pZCllbmRTZXNz
aW9uSW50ZXJydXB0ZWQ6KE5TTm90aWZpY2F0aW9uKilub3RpZmljYXRpb24KK3sKKyAgICBMT0co
TWVkaWEsICJXZWJDb3JlQVZNZWRpYUNhcHR1cmVTb3VyY2VPYnNlcnZlcjo6ZW5kU2Vzc2lvbklu
dGVycnVwdGVkKCVwKSAiLCBzZWxmKTsKKworICAgIGlmIChtX2NhbGxiYWNrKQorICAgICAgICBt
X2NhbGxiYWNrLT5jYXB0dXJlU2Vzc2lvbkVuZEludGVycnVwdGlvbihub3RpZmljYXRpb24pOwor
fQorI2VuZGlmCisKIEBlbmQKIAogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVT
b3VyY2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tCShyZXZpc2lvbiAyMTI4MjgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2Uu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTg0LDEyICs4NCwxMiBAQCBTT0ZUX0xJTktfQ0xBU1MoQVZG
b3VuZGF0aW9uLCBBVkZyYW1lUmF0CiAjZGVmaW5lIEFWQ2FwdHVyZVZpZGVvUHJldmlld0xheWVy
IGdldEFWQ2FwdHVyZVZpZGVvUHJldmlld0xheWVyQ2xhc3MoKQogI2RlZmluZSBBVkZyYW1lUmF0
ZVJhbmdlIGdldEFWRnJhbWVSYXRlUmFuZ2VDbGFzcygpCiAKLVNPRlRfTElOS19QT0lOVEVSKEFW
Rm91bmRhdGlvbiwgQVZDYXB0dXJlU2Vzc2lvblByZXNldDEyODB4NzIwLCBOU1N0cmluZyAqKQot
U09GVF9MSU5LX1BPSU5URVIoQVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVTZXNzaW9uUHJlc2V0OTYw
eDU0MCwgTlNTdHJpbmcgKikKLVNPRlRfTElOS19QT0lOVEVSKEFWRm91bmRhdGlvbiwgQVZDYXB0
dXJlU2Vzc2lvblByZXNldDY0MHg0ODAsIE5TU3RyaW5nICopCi1TT0ZUX0xJTktfUE9JTlRFUihB
VkZvdW5kYXRpb24sIEFWQ2FwdHVyZVNlc3Npb25QcmVzZXQzNTJ4Mjg4LCBOU1N0cmluZyAqKQot
U09GVF9MSU5LX1BPSU5URVIoQVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVTZXNzaW9uUHJlc2V0MzIw
eDI0MCwgTlNTdHJpbmcgKikKLVNPRlRfTElOS19QT0lOVEVSKEFWRm91bmRhdGlvbiwgQVZDYXB0
dXJlU2Vzc2lvblByZXNldExvdywgTlNTdHJpbmcgKikKK1NPRlRfTElOS19QT0lOVEVSX09QVElP
TkFMKEFWRm91bmRhdGlvbiwgQVZDYXB0dXJlU2Vzc2lvblByZXNldDEyODB4NzIwLCBOU1N0cmlu
ZyAqKQorU09GVF9MSU5LX1BPSU5URVJfT1BUSU9OQUwoQVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVT
ZXNzaW9uUHJlc2V0OTYweDU0MCwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19QT0lOVEVSX09QVElP
TkFMKEFWRm91bmRhdGlvbiwgQVZDYXB0dXJlU2Vzc2lvblByZXNldDY0MHg0ODAsIE5TU3RyaW5n
ICopCitTT0ZUX0xJTktfUE9JTlRFUl9PUFRJT05BTChBVkZvdW5kYXRpb24sIEFWQ2FwdHVyZVNl
c3Npb25QcmVzZXQzNTJ4Mjg4LCBOU1N0cmluZyAqKQorU09GVF9MSU5LX1BPSU5URVJfT1BUSU9O
QUwoQVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVTZXNzaW9uUHJlc2V0MzIweDI0MCwgTlNTdHJpbmcg
KikKK1NPRlRfTElOS19QT0lOVEVSX09QVElPTkFMKEFWRm91bmRhdGlvbiwgQVZDYXB0dXJlU2Vz
c2lvblByZXNldExvdywgTlNTdHJpbmcgKikKIAogI2RlZmluZSBBVkNhcHR1cmVTZXNzaW9uUHJl
c2V0MTI4MHg3MjAgZ2V0QVZDYXB0dXJlU2Vzc2lvblByZXNldDEyODB4NzIwKCkKICNkZWZpbmUg
QVZDYXB0dXJlU2Vzc2lvblByZXNldDk2MHg1NDAgZ2V0QVZDYXB0dXJlU2Vzc2lvblByZXNldDk2
MHg1NDAoKQpAQCAtMTY0LDI3ICsxNjQsMjcgQEAgdm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6
aW5pdGlhbGl6ZUNhcAogICAgICAgICAgICAgaGlnaGVzdEZyYW1lUmF0ZVJhbmdlID0gc3RkOjpt
YXg8RmxvYXQ2ND4oaGlnaGVzdEZyYW1lUmF0ZVJhbmdlLCByYW5nZS5tYXhGcmFtZVJhdGUpOwog
ICAgICAgICB9CiAKLSAgICAgICAgaWYgKFt2aWRlb0RldmljZSBzdXBwb3J0c0FWQ2FwdHVyZVNl
c3Npb25QcmVzZXQ6QVZDYXB0dXJlU2Vzc2lvblByZXNldDEyODB4NzIwXSkgeworICAgICAgICBp
ZiAoQVZDYXB0dXJlU2Vzc2lvblByZXNldDEyODB4NzIwICYmIFt2aWRlb0RldmljZSBzdXBwb3J0
c0FWQ2FwdHVyZVNlc3Npb25QcmVzZXQ6QVZDYXB0dXJlU2Vzc2lvblByZXNldDEyODB4NzIwXSkg
ewogICAgICAgICAgICAgdXBkYXRlU2l6ZU1pbk1heChtaW5pbXVtV2lkdGgsIG1heGltdW1XaWR0
aCwgMTI4MCk7CiAgICAgICAgICAgICB1cGRhdGVTaXplTWluTWF4KG1pbmltdW1IZWlnaHQsIG1h
eGltdW1IZWlnaHQsIDcyMCk7CiAgICAgICAgICAgICB1cGRhdGVBc3BlY3RSYXRpb01pbk1heCht
aW5pbXVtQXNwZWN0UmF0aW8sIG1heGltdW1Bc3BlY3RSYXRpbywgMTI4MC4wIC8gNzIwKTsKICAg
ICAgICAgfQotICAgICAgICBpZiAoW3ZpZGVvRGV2aWNlIHN1cHBvcnRzQVZDYXB0dXJlU2Vzc2lv
blByZXNldDpBVkNhcHR1cmVTZXNzaW9uUHJlc2V0OTYweDU0MF0pIHsKKyAgICAgICAgaWYgKEFW
Q2FwdHVyZVNlc3Npb25QcmVzZXQ5NjB4NTQwICYmIFt2aWRlb0RldmljZSBzdXBwb3J0c0FWQ2Fw
dHVyZVNlc3Npb25QcmVzZXQ6QVZDYXB0dXJlU2Vzc2lvblByZXNldDk2MHg1NDBdKSB7CiAgICAg
ICAgICAgICB1cGRhdGVTaXplTWluTWF4KG1pbmltdW1XaWR0aCwgbWF4aW11bVdpZHRoLCA5NjAp
OwogICAgICAgICAgICAgdXBkYXRlU2l6ZU1pbk1heChtaW5pbXVtSGVpZ2h0LCBtYXhpbXVtSGVp
Z2h0LCA1NDApOwogICAgICAgICAgICAgdXBkYXRlQXNwZWN0UmF0aW9NaW5NYXgobWluaW11bUFz
cGVjdFJhdGlvLCBtYXhpbXVtQXNwZWN0UmF0aW8sIDk2MCAvIDU0MCk7CiAgICAgICAgIH0KLSAg
ICAgICAgaWYgKFt2aWRlb0RldmljZSBzdXBwb3J0c0FWQ2FwdHVyZVNlc3Npb25QcmVzZXQ6QVZD
YXB0dXJlU2Vzc2lvblByZXNldDY0MHg0ODBdKSB7CisgICAgICAgIGlmIChBVkNhcHR1cmVTZXNz
aW9uUHJlc2V0NjQweDQ4MCAmJiBbdmlkZW9EZXZpY2Ugc3VwcG9ydHNBVkNhcHR1cmVTZXNzaW9u
UHJlc2V0OkFWQ2FwdHVyZVNlc3Npb25QcmVzZXQ2NDB4NDgwXSkgewogICAgICAgICAgICAgdXBk
YXRlU2l6ZU1pbk1heChtaW5pbXVtV2lkdGgsIG1heGltdW1XaWR0aCwgNjQwKTsKICAgICAgICAg
ICAgIHVwZGF0ZVNpemVNaW5NYXgobWluaW11bUhlaWdodCwgbWF4aW11bUhlaWdodCwgNDgwKTsK
ICAgICAgICAgICAgIHVwZGF0ZUFzcGVjdFJhdGlvTWluTWF4KG1pbmltdW1Bc3BlY3RSYXRpbywg
bWF4aW11bUFzcGVjdFJhdGlvLCA2NDAgLyA0ODApOwogICAgICAgICB9Ci0gICAgICAgIGlmIChb
dmlkZW9EZXZpY2Ugc3VwcG9ydHNBVkNhcHR1cmVTZXNzaW9uUHJlc2V0OkFWQ2FwdHVyZVNlc3Np
b25QcmVzZXQzNTJ4Mjg4XSkgeworICAgICAgICBpZiAoQVZDYXB0dXJlU2Vzc2lvblByZXNldDM1
MngyODggJiYgW3ZpZGVvRGV2aWNlIHN1cHBvcnRzQVZDYXB0dXJlU2Vzc2lvblByZXNldDpBVkNh
cHR1cmVTZXNzaW9uUHJlc2V0MzUyeDI4OF0pIHsKICAgICAgICAgICAgIHVwZGF0ZVNpemVNaW5N
YXgobWluaW11bVdpZHRoLCBtYXhpbXVtV2lkdGgsIDM1Mik7CiAgICAgICAgICAgICB1cGRhdGVT
aXplTWluTWF4KG1pbmltdW1IZWlnaHQsIG1heGltdW1IZWlnaHQsIDI4OCk7CiAgICAgICAgICAg
ICB1cGRhdGVBc3BlY3RSYXRpb01pbk1heChtaW5pbXVtQXNwZWN0UmF0aW8sIG1heGltdW1Bc3Bl
Y3RSYXRpbywgMzUyIC8gMjg4KTsKICAgICAgICAgfQotICAgICAgICBpZiAoW3ZpZGVvRGV2aWNl
IHN1cHBvcnRzQVZDYXB0dXJlU2Vzc2lvblByZXNldDpBVkNhcHR1cmVTZXNzaW9uUHJlc2V0MzIw
eDI0MF0pIHsKKyAgICAgICAgaWYgKEFWQ2FwdHVyZVNlc3Npb25QcmVzZXQzMjB4MjQwICYmIFt2
aWRlb0RldmljZSBzdXBwb3J0c0FWQ2FwdHVyZVNlc3Npb25QcmVzZXQ6QVZDYXB0dXJlU2Vzc2lv
blByZXNldDMyMHgyNDBdKSB7CiAgICAgICAgICAgICB1cGRhdGVTaXplTWluTWF4KG1pbmltdW1X
aWR0aCwgbWF4aW11bVdpZHRoLCAzMjApOwogICAgICAgICAgICAgdXBkYXRlU2l6ZU1pbk1heCht
aW5pbXVtSGVpZ2h0LCBtYXhpbXVtSGVpZ2h0LCAyNDApOwogICAgICAgICAgICAgdXBkYXRlQXNw
ZWN0UmF0aW9NaW5NYXgobWluaW11bUFzcGVjdFJhdGlvLCBtYXhpbXVtQXNwZWN0UmF0aW8sIDMy
MCAvIDI0MCk7CkBAIC0yMzksMTkgKzIzOSwxOSBAQCBzdGF0aWMgSW50U2l6ZSBzaXplRm9yUHJl
c2V0KE5TU3RyaW5nKiBwCiAgICAgaWYgKCFwcmVzZXQpCiAgICAgICAgIHJldHVybiB7IH07CiAK
LSAgICBpZiAoW3ByZXNldCBpc0VxdWFsVG9TdHJpbmc6QVZDYXB0dXJlU2Vzc2lvblByZXNldDEy
ODB4NzIwXSkKKyAgICBpZiAoQVZDYXB0dXJlU2Vzc2lvblByZXNldDEyODB4NzIwICYmIFtwcmVz
ZXQgaXNFcXVhbFRvU3RyaW5nOkFWQ2FwdHVyZVNlc3Npb25QcmVzZXQxMjgweDcyMF0pCiAgICAg
ICAgIHJldHVybiB7IDEyODAsIDcyMCB9OwogCi0gICAgaWYgKFtwcmVzZXQgaXNFcXVhbFRvU3Ry
aW5nOkFWQ2FwdHVyZVNlc3Npb25QcmVzZXQ5NjB4NTQwXSkKKyAgICBpZiAoQVZDYXB0dXJlU2Vz
c2lvblByZXNldDk2MHg1NDAgJiYgW3ByZXNldCBpc0VxdWFsVG9TdHJpbmc6QVZDYXB0dXJlU2Vz
c2lvblByZXNldDk2MHg1NDBdKQogICAgICAgICByZXR1cm4geyA5NjAsIDU0MCB9OwogCi0gICAg
aWYgKFtwcmVzZXQgaXNFcXVhbFRvU3RyaW5nOkFWQ2FwdHVyZVNlc3Npb25QcmVzZXQ2NDB4NDgw
XSkKKyAgICBpZiAoQVZDYXB0dXJlU2Vzc2lvblByZXNldDY0MHg0ODAgJiYgW3ByZXNldCBpc0Vx
dWFsVG9TdHJpbmc6QVZDYXB0dXJlU2Vzc2lvblByZXNldDY0MHg0ODBdKQogICAgICAgICByZXR1
cm4geyA2NDAsIDQ4MCB9OwogCi0gICAgaWYgKFtwcmVzZXQgaXNFcXVhbFRvU3RyaW5nOkFWQ2Fw
dHVyZVNlc3Npb25QcmVzZXQzNTJ4Mjg4XSkKKyAgICBpZiAoQVZDYXB0dXJlU2Vzc2lvblByZXNl
dDM1MngyODggJiYgW3ByZXNldCBpc0VxdWFsVG9TdHJpbmc6QVZDYXB0dXJlU2Vzc2lvblByZXNl
dDM1MngyODhdKQogICAgICAgICByZXR1cm4geyAzNTIsIDI4OCB9OwogCi0gICAgaWYgKFtwcmVz
ZXQgaXNFcXVhbFRvU3RyaW5nOkFWQ2FwdHVyZVNlc3Npb25QcmVzZXQzMjB4MjQwXSkKKyAgICBp
ZiAoQVZDYXB0dXJlU2Vzc2lvblByZXNldDMyMHgyNDAgJiYgW3ByZXNldCBpc0VxdWFsVG9TdHJp
bmc6QVZDYXB0dXJlU2Vzc2lvblByZXNldDMyMHgyNDBdKQogICAgICAgICByZXR1cm4geyAzMjAs
IDI0MCB9OwogICAgIAogICAgIHJldHVybiB7IH07CkBAIC00OTUsMTkgKzQ5NSwxOSBAQCBOU1N0
cmluZyogQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmJlc3RTZXNzCiAgICAgICAgIHJldHVybiBuaWw7
CiAKICAgICBBVkNhcHR1cmVEZXZpY2VUeXBlZGVmICp2aWRlb0RldmljZSA9IGRldmljZSgpOwot
ICAgIGlmICgoIXdpZHRoIHx8IHdpZHRoLnZhbHVlKCkgPT0gMTI4MCkgJiYgKCFoZWlnaHQgfHwg
aGVpZ2h0LnZhbHVlKCkgPT0gNzIwKSkKKyAgICBpZiAoKCF3aWR0aCB8fCB3aWR0aC52YWx1ZSgp
ID09IDEyODApICYmICghaGVpZ2h0IHx8IGhlaWdodC52YWx1ZSgpID09IDcyMCkgJiYgQVZDYXB0
dXJlU2Vzc2lvblByZXNldDEyODB4NzIwKQogICAgICAgICByZXR1cm4gW3ZpZGVvRGV2aWNlIHN1
cHBvcnRzQVZDYXB0dXJlU2Vzc2lvblByZXNldDpBVkNhcHR1cmVTZXNzaW9uUHJlc2V0MTI4MHg3
MjBdID8gQVZDYXB0dXJlU2Vzc2lvblByZXNldDEyODB4NzIwIDogbmlsOwogCi0gICAgaWYgKCgh
d2lkdGggfHwgd2lkdGgudmFsdWUoKSA9PSA5NjApICYmICghaGVpZ2h0IHx8IGhlaWdodC52YWx1
ZSgpID09IDU0MCApKQorICAgIGlmICgoIXdpZHRoIHx8IHdpZHRoLnZhbHVlKCkgPT0gOTYwKSAm
JiAoIWhlaWdodCB8fCBoZWlnaHQudmFsdWUoKSA9PSA1NDApICYmIEFWQ2FwdHVyZVNlc3Npb25Q
cmVzZXQ5NjB4NTQwKQogICAgICAgICByZXR1cm4gW3ZpZGVvRGV2aWNlIHN1cHBvcnRzQVZDYXB0
dXJlU2Vzc2lvblByZXNldDpBVkNhcHR1cmVTZXNzaW9uUHJlc2V0OTYweDU0MF0gPyBBVkNhcHR1
cmVTZXNzaW9uUHJlc2V0OTYweDU0MCA6IG5pbDsKIAotICAgIGlmICgoIXdpZHRoIHx8IHdpZHRo
LnZhbHVlKCkgPT0gNjQwKSAmJiAoIWhlaWdodCB8fCBoZWlnaHQudmFsdWUoKSA9PSA0ODAgKSkK
KyAgICBpZiAoKCF3aWR0aCB8fCB3aWR0aC52YWx1ZSgpID09IDY0MCkgJiYgKCFoZWlnaHQgfHwg
aGVpZ2h0LnZhbHVlKCkgPT0gNDgwICkgJiYgQVZDYXB0dXJlU2Vzc2lvblByZXNldDY0MHg0ODAp
CiAgICAgICAgIHJldHVybiBbdmlkZW9EZXZpY2Ugc3VwcG9ydHNBVkNhcHR1cmVTZXNzaW9uUHJl
c2V0OkFWQ2FwdHVyZVNlc3Npb25QcmVzZXQ2NDB4NDgwXSA/IEFWQ2FwdHVyZVNlc3Npb25QcmVz
ZXQ2NDB4NDgwIDogbmlsOwogCi0gICAgaWYgKCghd2lkdGggfHwgd2lkdGgudmFsdWUoKSA9PSAz
NTIpICYmICghaGVpZ2h0IHx8IGhlaWdodC52YWx1ZSgpID09IDI4OCApKQorICAgIGlmICgoIXdp
ZHRoIHx8IHdpZHRoLnZhbHVlKCkgPT0gMzUyKSAmJiAoIWhlaWdodCB8fCBoZWlnaHQudmFsdWUo
KSA9PSAyODggKSAmJiBBVkNhcHR1cmVTZXNzaW9uUHJlc2V0MzUyeDI4OCkKICAgICAgICAgcmV0
dXJuIFt2aWRlb0RldmljZSBzdXBwb3J0c0FWQ2FwdHVyZVNlc3Npb25QcmVzZXQ6QVZDYXB0dXJl
U2Vzc2lvblByZXNldDM1MngyODhdID8gQVZDYXB0dXJlU2Vzc2lvblByZXNldDM1MngyODggOiBu
aWw7CiAKLSAgICBpZiAoKCF3aWR0aCB8fCB3aWR0aC52YWx1ZSgpID09IDMyMCkgJiYgKCFoZWln
aHQgfHwgaGVpZ2h0LnZhbHVlKCkgPT0gMjQwICkpCisgICAgaWYgKCghd2lkdGggfHwgd2lkdGgu
dmFsdWUoKSA9PSAzMjApICYmICghaGVpZ2h0IHx8IGhlaWdodC52YWx1ZSgpID09IDI0MCApICYm
IEFWQ2FwdHVyZVNlc3Npb25QcmVzZXQzMjB4MjQwKQogICAgICAgICByZXR1cm4gW3ZpZGVvRGV2
aWNlIHN1cHBvcnRzQVZDYXB0dXJlU2Vzc2lvblByZXNldDpBVkNhcHR1cmVTZXNzaW9uUHJlc2V0
MzIweDI0MF0gPyBBVkNhcHR1cmVTZXNzaW9uUHJlc2V0MzIweDI0MCA6IG5pbDsKIAogICAgIHJl
dHVybiBuaWw7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>