<?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>238154</bug_id>
          
          <creation_ts>2022-03-21 14:30:48 -0700</creation_ts>
          <short_desc>[WebAuthn] Support getAssertion for virtual HID authenticators</short_desc>
          <delta_ts>2022-03-30 15:32:05 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="pascoe@apple.com">pascoe</reporter>
          <assigned_to name="pascoe@apple.com">pascoe</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1853340</commentid>
    <comment_count>0</comment_count>
    <who name="pascoe@apple.com">pascoe</who>
    <bug_when>2022-03-21 14:30:48 -0700</bug_when>
    <thetext>Virtual authenticators for WebAuthn support different transprots: nfc, usb, internal, and ble. Currently, we only fully support the internal transport and makeCredential for usb-transport. The default transport for web-platform-tests is usb. 

We should support getAssertion for the usb transport to run more WPT tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853341</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-03-21 14:31:00 -0700</bug_when>
    <thetext>&lt;rdar://problem/90593150&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853342</commentid>
    <comment_count>2</comment_count>
      <attachid>455276</attachid>
    <who name="pascoe@apple.com">pascoe</who>
    <bug_when>2022-03-21 14:35:48 -0700</bug_when>
    <thetext>Created attachment 455276
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853376</commentid>
    <comment_count>3</comment_count>
      <attachid>455276</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-03-21 15:41:09 -0700</bug_when>
    <thetext>Comment on attachment 455276
Patch

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

r=me, but please correct the pass-by-value mistake.

&gt; Source/WebCore/ChangeLog:9
&gt; +        Virtual authenticators for WebAuthn support different transprots: nfc, usb, internal,

*transports

&gt; Source/WebCore/Modules/webauthn/WebAuthenticationUtils.cpp:91
&gt; +

Nit: Extra blank line here.

&gt; Source/WebKit/UIProcess/WebAuthentication/Virtual/VirtualAuthenticatorManager.cpp:62
&gt; +    VirtualCredential cred = credential;

Weird that you have to make this copy!

&gt; Source/WebKit/UIProcess/WebAuthentication/Virtual/VirtualAuthenticatorManager.cpp:66
&gt; +Vector&lt;VirtualCredential&gt; VirtualAuthenticatorManager::credentialsMatchingList(const String&amp; authenticatorId, const String&amp; rpId, Vector&lt;Vector&lt;uint8_t&gt;&gt; credentialIds)

credentialIds should be passed as a const&amp; since you only read it.

&gt; Source/WebKit/UIProcess/WebAuthentication/Virtual/VirtualAuthenticatorUtils.h:39
&gt; +Vector&lt;uint8_t&gt; signatureForPrivateKey(RetainPtr&lt;SecKeyRef&gt; privateKey, const Vector&lt;uint8_t&gt;&amp; authData, const Vector&lt;uint8_t&gt; clientDataHash);

clientDataHash should be a const referenced, not just a const vector.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853390</commentid>
    <comment_count>4</comment_count>
      <attachid>455293</attachid>
    <who name="pascoe@apple.com">pascoe</who>
    <bug_when>2022-03-21 16:07:51 -0700</bug_when>
    <thetext>Created attachment 455293
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853673</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-03-22 08:41:05 -0700</bug_when>
    <thetext>ChangeLog entry in Source/WebCore/ChangeLog contains OOPS!.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853704</commentid>
    <comment_count>6</comment_count>
    <who name="pascoe@apple.com">pascoe</who>
    <bug_when>2022-03-22 09:14:39 -0700</bug_when>
    <thetext>Committed r291624 (?): &lt;https://commits.webkit.org/r291624&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856588</commentid>
    <comment_count>7</comment_count>
    <who name="pascoe@apple.com">pascoe</who>
    <bug_when>2022-03-30 15:32:05 -0700</bug_when>
    <thetext>*** Bug 237857 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455276</attachid>
            <date>2022-03-21 14:35:48 -0700</date>
            <delta_ts>2022-03-21 16:07:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238154-20220321143547.patch</filename>
            <type>text/plain</type>
            <size>19743</size>
            <attacher name="pascoe@apple.com">pascoe</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNDkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDcwMTQyYmVlMjZjMzc4
Zjg5Njc4ZmU0NzM4YzMwZmNiOGNiMWE2OS4uMjBlMTJlMzVhNmY5ZjU1YTA4MDY2ZTc0MmI5MGZl
YmRhYzI1NmJiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIyLTAzLTIxICBKIFBh
c2NvZSAgPGpfcGFzY29lQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIFN1cHBvcnQg
Z2V0QXNzZXJ0aW9uIGZvciB2aXJ0dWFsIEhJRCBhdXRoZW50aWNhdG9ycworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4MTU0CisgICAgICAgIHJkYXI6
Ly9wcm9ibGVtLzkwNTkzMTUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVmlydHVhbCBhdXRoZW50aWNhdG9ycyBmb3IgV2ViQXV0aG4gc3VwcG9ydCBk
aWZmZXJlbnQgdHJhbnNwcm90czogbmZjLCB1c2IsIGludGVybmFsLAorICAgICAgICBhbmQgYmxl
LiBDdXJyZW50bHksIHdlIG9ubHkgZnVsbHkgc3VwcG9ydCB0aGUgaW50ZXJuYWwgdHJhbnNwb3J0
IGFuZCBtYWtlQ3JlZGVudGlhbCBmb3IKKyAgICAgICAgdXNiLXRyYW5zcG9ydC4gVGhlIGRlZmF1
bHQgdHJhbnNwb3J0IGZvciB3ZWItcGxhdGZvcm0tdGVzdHMgaXMgdXNiLiBUaGlzIHBhdGNoIGlt
cGxlbWVudHMKKyAgICAgICAgZ2V0QXNzZXJ0aW9uIGZvciBoaWQtYmFzZWQgdmlydHVhbCBhdXRo
bmV0aWNhdG9ycy4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vV2ViQXV0aGVudGljYXRp
b25VdGlscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpidWlsZFVzZXJFbnRpdHlNYXApOgorICAg
ICAgICAoV2ViQ29yZTo6YnVpbGRDcmVkZW50aWFsRGVzY3JpcHRvcik6CisgICAgICAgICogTW9k
dWxlcy93ZWJhdXRobi9XZWJBdXRoZW50aWNhdGlvblV0aWxzLmg6CisgICAgICAgICogTW9kdWxl
cy93ZWJhdXRobi9maWRvL0ZpZG9Db25zdGFudHMuaDoKKwogMjAyMi0wMy0xOCAgRW5yaXF1ZSBP
Y2HDsWEgR29uesOhbGV6ICA8ZW9jYW5oYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHU3RyZWFt
ZXJdIEFkZCBzdG9wIHBvc2l0aW9uIHRvIHRoZSByYW5nZSByZXF1ZXN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDlm
NDRhNzY4MjZhYWI5NzBlZTFmZDIwMWE5NDQwNGE5NzA4NjAxYTEuLjgyNmIxMGZkOTI2ODFkNmRk
MGM5OGNjNThhNjA2OWFkOGUxY2E4NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMjIt
MDMtMjEgIEogUGFzY29lICA8al9wYXNjb2VAYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJBdXRo
bl0gU3VwcG9ydCBnZXRBc3NlcnRpb24gZm9yIHZpcnR1YWwgSElEIGF1dGhlbnRpY2F0b3JzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgxNTQKKyAg
ICAgICAgcmRhcjovL3Byb2JsZW0vOTA1OTMxNTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBWaXJ0dWFsIGF1dGhlbnRpY2F0b3JzIGZvciBXZWJBdXRo
biBzdXBwb3J0IGRpZmZlcmVudCB0cmFuc3Byb3RzOiBuZmMsIHVzYiwgaW50ZXJuYWwsCisgICAg
ICAgIGFuZCBibGUuIEN1cnJlbnRseSwgd2Ugb25seSBmdWxseSBzdXBwb3J0IHRoZSBpbnRlcm5h
bCB0cmFuc3BvcnQgYW5kIG1ha2VDcmVkZW50aWFsIGZvcgorICAgICAgICB1c2ItdHJhbnNwb3J0
LiBUaGUgZGVmYXVsdCB0cmFuc3BvcnQgZm9yIHdlYi1wbGF0Zm9ybS10ZXN0cyBpcyB1c2IuIFRo
aXMgcGF0Y2ggaW1wbGVtZW50cworICAgICAgICBnZXRBc3NlcnRpb24gZm9yIGhpZC1iYXNlZCB2
aXJ0dWFsIGF1dGhuZXRpY2F0b3JzLgorCisgICAgICAgIFRlc3RlZCB2aWEgbWFudWFsbHkgY3Jl
YXRpbmcgdmlydHVhbCBhdXRoZW50aWNhdG9yIGFuZCBwZXJmb3JtaW5nIGNyZWF0ZSAvIGdldC4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9WaXJ0dWFsL1ZpcnR1YWxB
dXRoZW50aWNhdG9yTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlZpcnR1YWxBdXRoZW50
aWNhdG9yTWFuYWdlcjo6YWRkQ3JlZGVudGlhbCk6CisgICAgICAgIChXZWJLaXQ6OlZpcnR1YWxB
dXRoZW50aWNhdG9yTWFuYWdlcjo6Y3JlZGVudGlhbHNNYXRjaGluZ0xpc3QpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9WaXJ0dWFsL1ZpcnR1YWxBdXRoZW50aWNhdG9y
TWFuYWdlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9WaXJ0dWFs
L1ZpcnR1YWxBdXRoZW50aWNhdG9yVXRpbHMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vVmlydHVhbC9WaXJ0dWFsQXV0aGVudGljYXRvclV0aWxzLm1tOgorICAgICAg
ICAoV2ViS2l0Ojpwcml2YXRlS2V5RnJvbUJhc2U2NCk6CisgICAgICAgIChXZWJLaXQ6OnNpZ25h
dHVyZUZvclByaXZhdGVLZXkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9WaXJ0dWFsL1ZpcnR1YWxIaWRDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Vmly
dHVhbEhpZENvbm5lY3Rpb246OnBhcnNlUmVxdWVzdCk6CisKIDIwMjItMDMtMTggIEtpbW1vIEtp
bm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWN5Y2xpbmcgYSB3ZWJn
bCBjb250ZXh0IHdoZW4gaXQgaGFzIGJlZW4gbG9zdCBhbmQgcmVzdG9yZWQgY2F1c2VzIGEgY3Jh
c2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vV2ViQXV0aGVu
dGljYXRpb25VdGlscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1dlYkF1
dGhlbnRpY2F0aW9uVXRpbHMuY3BwCmluZGV4IGVkOTM0Njg2NmE3ZWYzYzEzZWZjZTQ1NjVmMzk5
MWNlMjk1MTBhMDAuLmFhZWVhNzA1MDIyNDM3YWUzMjI0ZjI5ZjUyZTQzMDJhOTEzMWJlNzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vV2ViQXV0aGVudGljYXRp
b25VdGlscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9XZWJBdXRo
ZW50aWNhdGlvblV0aWxzLmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShXRUJfQVVU
SE4pCiAKICNpbmNsdWRlICJDQk9SV3JpdGVyLmgiCisjaW5jbHVkZSAiRmlkb0NvbnN0YW50cy5o
IgogI2luY2x1ZGUgIldlYkF1dGhlbnRpY2F0aW9uQ29uc3RhbnRzLmgiCiAjaW5jbHVkZSA8cGFs
L2NyeXB0by9DcnlwdG9EaWdlc3QuaD4KICNpbmNsdWRlIDx3dGYvSlNPTlZhbHVlcy5oPgpAQCAt
ODcsNiArODgsMjMgQEAgVmVjdG9yPHVpbnQ4X3Q+IGJ1aWxkQXR0ZXN0ZWRDcmVkZW50aWFsRGF0
YShjb25zdCBWZWN0b3I8dWludDhfdD4mIGFhZ3VpZCwgY29uc3QKICAgICByZXR1cm4gYXR0ZXN0
ZWRDcmVkZW50aWFsRGF0YTsKIH0KIAorCitjYm9yOjpDQk9SVmFsdWU6Ok1hcFZhbHVlIGJ1aWxk
VXNlckVudGl0eU1hcChjb25zdCBWZWN0b3I8dWludDhfdD4mIHVzZXJJZCwgY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lKQoreworICAgIGNib3I6OkNCT1JWYWx1
ZTo6TWFwVmFsdWUgdXNlckVudGl0eU1hcDsKKyAgICB1c2VyRW50aXR5TWFwW2Nib3I6OkNCT1JW
YWx1ZShmaWRvOjprRW50aXR5SWRNYXBLZXkpXSA9IGNib3I6OkNCT1JWYWx1ZSh1c2VySWQpOwor
ICAgIHVzZXJFbnRpdHlNYXBbY2Jvcjo6Q0JPUlZhbHVlKGZpZG86OmtFbnRpdHlOYW1lTWFwS2V5
KV0gPSBjYm9yOjpDQk9SVmFsdWUobmFtZSk7CisgICAgdXNlckVudGl0eU1hcFtjYm9yOjpDQk9S
VmFsdWUoZmlkbzo6a0Rpc3BsYXlOYW1lTWFwS2V5KV0gPSBjYm9yOjpDQk9SVmFsdWUoZGlzcGxh
eU5hbWUpOworICAgIHJldHVybiB1c2VyRW50aXR5TWFwOworfQorCitjYm9yOjpDQk9SVmFsdWU6
Ok1hcFZhbHVlIGJ1aWxkQ3JlZGVudGlhbERlc2NyaXB0b3IoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBjcmVkZW50aWFsSWQpCit7CisgICAgY2Jvcjo6Q0JPUlZhbHVlOjpNYXBWYWx1ZSBjcmVkZW50
aWFsOworICAgIGNyZWRlbnRpYWxbY2Jvcjo6Q0JPUlZhbHVlKCJpZCIpXSA9IGNib3I6OkNCT1JW
YWx1ZShjcmVkZW50aWFsSWQpOworICAgIHJldHVybiBjcmVkZW50aWFsOworfQorCiBWZWN0b3I8
dWludDhfdD4gYnVpbGRBdXRoRGF0YShjb25zdCBTdHJpbmcmIHJwSWQsIGNvbnN0IHVpbnQ4X3Qg
ZmxhZ3MsIGNvbnN0IHVpbnQzMl90IGNvdW50ZXIsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgb3B0
aW9uYWxBdHRlc3RlZENyZWRlbnRpYWxEYXRhKQogewogICAgIFZlY3Rvcjx1aW50OF90PiBhdXRo
RGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vV2ViQXV0
aGVudGljYXRpb25VdGlscy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9XZWJB
dXRoZW50aWNhdGlvblV0aWxzLmgKaW5kZXggMzMyMTU3ZTUyMTMwMzA4N2U1YTczNGU0N2ZiZTdm
ODk4ZDBiMDg1Yi4uNGZlYTExYzA3YThhMzkyYmI4NDYyODJlY2E4OWQ5ZDk4MjBkNzYyNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9XZWJBdXRoZW50aWNhdGlv
blV0aWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9XZWJBdXRoZW50
aWNhdGlvblV0aWxzLmgKQEAgLTUxLDYgKzUxLDggQEAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVp
bnQ4X3Q+IGJ1aWxkQXV0aERhdGEoY29uc3QgU3RyaW5nJiBycElkLCBjb25zdCB1aW50OF90IGYK
IAogV0VCQ09SRV9FWFBPUlQgY2Jvcjo6Q0JPUlZhbHVlOjpNYXBWYWx1ZSBidWlsZEF0dGVzdGF0
aW9uTWFwKFZlY3Rvcjx1aW50OF90PiYmLCBTdHJpbmcmJiwgY2Jvcjo6Q0JPUlZhbHVlOjpNYXBW
YWx1ZSYmLCBjb25zdCBBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlJik7CiAKK1dFQkNP
UkVfRVhQT1JUIGNib3I6OkNCT1JWYWx1ZTo6TWFwVmFsdWUgYnVpbGRDcmVkZW50aWFsRGVzY3Jp
cHRvcihjb25zdCBWZWN0b3I8dWludDhfdD4mIGNyZWRlbnRpYWxJZCk7CisKIC8vIGh0dHBzOi8v
d3d3LnczLm9yZy9UUi93ZWJhdXRobi8jYXR0ZXN0YXRpb24tb2JqZWN0CiBXRUJDT1JFX0VYUE9S
VCBWZWN0b3I8dWludDhfdD4gYnVpbGRBdHRlc3RhdGlvbk9iamVjdChWZWN0b3I8dWludDhfdD4m
JiBhdXRoRGF0YSwgU3RyaW5nJiYgZm9ybWF0LCBjYm9yOjpDQk9SVmFsdWU6Ok1hcFZhbHVlJiYg
c3RhdGVtZW50TWFwLCBjb25zdCBBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlJik7CiAK
QEAgLTU4LDYgKzYwLDcgQEAgV0VCQ09SRV9FWFBPUlQgUmVmPEFycmF5QnVmZmVyPiBidWlsZENs
aWVudERhdGFKc29uKENsaWVudERhdGFUeXBlIC8qdHlwZSovLCBjb24KIAogV0VCQ09SRV9FWFBP
UlQgVmVjdG9yPHVpbnQ4X3Q+IGJ1aWxkQ2xpZW50RGF0YUpzb25IYXNoKGNvbnN0IEFycmF5QnVm
ZmVyJiBjbGllbnREYXRhSnNvbik7CiAKK1dFQkNPUkVfRVhQT1JUIGNib3I6OkNCT1JWYWx1ZTo6
TWFwVmFsdWUgYnVpbGRVc2VyRW50aXR5TWFwKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgdXNlcklk
LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUpOwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvQ29uc3RhbnRzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0NvbnN0YW50cy5oCmlu
ZGV4IGRjNzcxMWI2M2FkNjM1ZTI4MmFkMjdhOWNiNmNiMjE1NmY2Njc0NzAuLjJhZDE1ODM0NWUy
NTZjMTg2ODI3YmZjOGRjY2NjZjdkYTJlZmJjNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvQ29uc3RhbnRzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9Db25zdGFudHMuaApAQCAtMjY2LDcgKzI2Niwx
NCBAQCBjb25zdCBpbnQ2NF90IGtDdGFwTWFrZUNyZWRlbnRpYWxQdWJLZXlDcmVkUGFyYW1zS2V5
ID0gNDsKIGNvbnN0IGludDY0X3Qga0N0YXBNYWtlQ3JlZGVudGlhbEV4Y2x1ZGVMaXN0S2V5ID0g
NTsKIGNvbnN0IGludDY0X3Qga0N0YXBNYWtlQ3JlZGVudGlhbEV4dGVuc2lvbnNLZXkgPSA2Owog
Y29uc3QgaW50NjRfdCBrQ3RhcE1ha2VDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnNLZXkgPSA3Owor
Citjb25zdCBpbnQ2NF90IGtDdGFwR2V0QXNzZXJ0aW9uUnBJZEtleSA9IDE7Citjb25zdCBpbnQ2
NF90IGtDdGFwR2V0QXNzZXJ0aW9uQ2xpZW50RGF0YUhhc2hLZXkgPSAyOworY29uc3QgaW50NjRf
dCBrQ3RhcEdldEFzc2VydGlvbkFsbG93TGlzdEtleSA9IDM7Citjb25zdCBpbnQ2NF90IGtDdGFw
R2V0QXNzZXJ0aW9uRXh0ZW5zaW9uc0tleSA9IDQ7CiBjb25zdCBpbnQ2NF90IGtDdGFwR2V0QXNz
ZXJ0aW9uUmVxdWVzdE9wdGlvbnNLZXkgPSA1OworY29uc3QgaW50NjRfdCBrQ3RhcEdldEFzc2Vy
dGlvblBpblV2QXV0aFBhcmFtS2V5ID0gNjsKK2NvbnN0IGludDY0X3Qga0N0YXBHZXRBc3NlcnRp
b25QaW5VdkF1dGhQcm90b2NvbEtleSA9IDc7CiAKIH0gLy8gbmFtZXNwYWNlIGZpZG8KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vVmlydHVh
bC9WaXJ0dWFsQXV0aGVudGljYXRvck1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vVmlydHVhbC9WaXJ0dWFsQXV0aGVudGljYXRvck1hbmFnZXIu
Y3BwCmluZGV4IDI3NWIxZWI3OGI1ZWFkZjQ5MmRlNGUyMzMwN2M2MzYyOTkxN2I0NDUuLmJlZjBl
Njg5ZGFjODU2NjNlNDU2N2RmMzBjNzU4YTJjMGE2MTZkYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwvVmlydHVhbEF1dGhlbnRp
Y2F0b3JNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9WaXJ0dWFsL1ZpcnR1YWxBdXRoZW50aWNhdG9yTWFuYWdlci5jcHAKQEAgLTU5LDcg
KzU5LDE5IEBAIGJvb2wgVmlydHVhbEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpyZW1vdmVBdXRoZW50
aWNhdG9yKGNvbnN0IFN0cmluZyYgaWQpCiAKIHZvaWQgVmlydHVhbEF1dGhlbnRpY2F0b3JNYW5h
Z2VyOjphZGRDcmVkZW50aWFsKGNvbnN0IFN0cmluZyYgYXV0aGVudGljYXRvcklkLCBjb25zdCBW
aXJ0dWFsQ3JlZGVudGlhbCYgY3JlZGVudGlhbCkKIHsKLSAgICBtX2NyZWRlbnRpYWxzQnlBdXRo
ZW50aWNhdG9yLmdldChhdXRoZW50aWNhdG9ySWQpLmFwcGVuZChjcmVkZW50aWFsKTsKKyAgICBW
aXJ0dWFsQ3JlZGVudGlhbCBjcmVkID0gY3JlZGVudGlhbDsKKyAgICBtX2NyZWRlbnRpYWxzQnlB
dXRoZW50aWNhdG9yLmZpbmQoYXV0aGVudGljYXRvcklkKS0+dmFsdWUuYXBwZW5kKGNyZWQpOwor
fQorCitWZWN0b3I8VmlydHVhbENyZWRlbnRpYWw+IFZpcnR1YWxBdXRoZW50aWNhdG9yTWFuYWdl
cjo6Y3JlZGVudGlhbHNNYXRjaGluZ0xpc3QoY29uc3QgU3RyaW5nJiBhdXRoZW50aWNhdG9ySWQs
IGNvbnN0IFN0cmluZyYgcnBJZCwgVmVjdG9yPFZlY3Rvcjx1aW50OF90Pj4gY3JlZGVudGlhbElk
cykKK3sKKyAgICBWZWN0b3I8VmlydHVhbENyZWRlbnRpYWw+IG1hdGNoaW5nOworICAgIGF1dG8g
aXQgPSBtX2NyZWRlbnRpYWxzQnlBdXRoZW50aWNhdG9yLmZpbmQoYXV0aGVudGljYXRvcklkKTsK
KyAgICBmb3IgKGF1dG8mIGNyZWRlbnRpYWwgOiBpdC0+dmFsdWUpIHsKKyAgICAgICAgaWYgKGNy
ZWRlbnRpYWwucnBJZCA9PSBycElkICYmICgoY3JlZGVudGlhbElkcy5pc0VtcHR5KCkgJiYgY3Jl
ZGVudGlhbC5pc1Jlc2lkZW50Q3JlZGVudGlhbCkgfHwgY3JlZGVudGlhbElkcy5jb250YWlucyhj
cmVkZW50aWFsLmNyZWRlbnRpYWxJZCkpKQorICAgICAgICAgICAgbWF0Y2hpbmcuYXBwZW5kKGNy
ZWRlbnRpYWwpOworICAgIH0KKyAgICByZXR1cm4gbWF0Y2hpbmc7CiB9CiAKIFVuaXF1ZVJlZjxB
dXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZT4gVmlydHVhbEF1dGhlbnRpY2F0b3JNYW5hZ2Vy
OjpjcmVhdGVTZXJ2aWNlKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3BvcnQgdHJhbnNwb3J0
LCBBdXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZTo6T2JzZXJ2ZXImIG9ic2VydmVyKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
VmlydHVhbC9WaXJ0dWFsQXV0aGVudGljYXRvck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwvVmlydHVhbEF1dGhlbnRpY2F0b3JNYW5h
Z2VyLmgKaW5kZXggMTFkZjA5NjFiYTVmZjE5YjgwYTI1ZWNjYzFlYmI1Y2FkOGE3MTRkNy4uZWVm
NjdiNDdjNmYwNTA3NmZmOTJjNTVmZjA2ZDdmNzE0ZmNjZDM1MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vVmlydHVhbC9WaXJ0dWFsQXV0aGVu
dGljYXRvck1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9WaXJ0dWFsL1ZpcnR1YWxBdXRoZW50aWNhdG9yTWFuYWdlci5oCkBAIC00NSw2ICs0
NSw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzVmlydHVhbCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IHRydWU7IH0KIAogICAgIHZvaWQgYWRkQ3JlZGVudGlhbChjb25zdCBTdHJpbmcmLCBjb25zdCBW
aXJ0dWFsQ3JlZGVudGlhbCYpOworICAgIFZlY3RvcjxWaXJ0dWFsQ3JlZGVudGlhbD4gY3JlZGVu
dGlhbHNNYXRjaGluZ0xpc3QoY29uc3QgU3RyaW5nJiBhdXRoZW50aWNhdG9ySWQsIGNvbnN0IFN0
cmluZyYgcnBJZCwgVmVjdG9yPFZlY3Rvcjx1aW50OF90Pj4gY3JlZGVudGlhbElkcyk7CiAKIHBy
b3RlY3RlZDoKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvckxvY2FsQXV0aGVudGljYXRvcihDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKExvY2FsQXV0aGVudGljYXRvclBvbGljeSk+JiYpIG92ZXJyaWRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
VmlydHVhbC9WaXJ0dWFsQXV0aGVudGljYXRvclV0aWxzLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9WaXJ0dWFsL1ZpcnR1YWxBdXRoZW50aWNhdG9yVXRpbHMu
aAppbmRleCA3NzdiOGNiNjc5NjcyOWJjNzVhOGM0MzYzNmE5YTc0YTE1NWViZDdhLi4wZjAxOWIw
MDM2MWJkNDdkMDU2Y2VjODEwYmNiMGM5ZmUyMGY5ZTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9WaXJ0dWFsL1ZpcnR1YWxBdXRoZW50aWNh
dG9yVXRpbHMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9WaXJ0dWFsL1ZpcnR1YWxBdXRoZW50aWNhdG9yVXRpbHMuaApAQCAtMzUsNiArMzUsOCBAQCB1
aW50OF90IGZsYWdzRm9yQ29uZmlnKGNvbnN0IFZpcnR1YWxBdXRoZW50aWNhdG9yQ29uZmlndXJh
dGlvbiYpOwogUmV0YWluUHRyPFNlY0tleVJlZj4gY3JlYXRlUHJpdmF0ZUtleSgpOwogc3RkOjpw
YWlyPFZlY3Rvcjx1aW50OF90PiwgVmVjdG9yPHVpbnQ4X3Q+PiBjcmVkZW50aWFsSWRBbmRDb3Nl
UHViS2V5Rm9yUHJpdmF0ZUtleShSZXRhaW5QdHI8U2VjS2V5UmVmPiBwcml2YXRlS2V5KTsKIFN0
cmluZyBiYXNlNjRQcml2YXRlS2V5KFJldGFpblB0cjxTZWNLZXlSZWY+IHByaXZhdGVLZXkpOwor
UmV0YWluUHRyPFNlY0tleVJlZj4gcHJpdmF0ZUtleUZyb21CYXNlNjQoY29uc3QgU3RyaW5nJiBi
YXNlNjRQcml2YXRlS2V5KTsKK1ZlY3Rvcjx1aW50OF90PiBzaWduYXR1cmVGb3JQcml2YXRlS2V5
KFJldGFpblB0cjxTZWNLZXlSZWY+IHByaXZhdGVLZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
YXV0aERhdGEsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiBjbGllbnREYXRhSGFzaCk7CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9WaXJ0dWFsL1ZpcnR1YWxBdXRoZW50aWNhdG9yVXRpbHMubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9WaXJ0dWFsL1ZpcnR1YWxB
dXRoZW50aWNhdG9yVXRpbHMubW0KaW5kZXggODY3NTk5N2QzN2E3ZGQ3NWI0YjU0ZTYyNmU4OGQw
MGYzZTIwYWZmMy4uMzg1ZjE5MDg2NmM4ZjlmMWZjOTk4MjA1MjZjNmZjNjQ3MTdhODgwNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vVmlydHVh
bC9WaXJ0dWFsQXV0aGVudGljYXRvclV0aWxzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwvVmlydHVhbEF1dGhlbnRpY2F0b3JVdGlscy5t
bQpAQCAtMzIsNiArMzIsOCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvV2ViQXV0aGVudGljYXRpb25D
b25zdGFudHMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1dlYkF1dGhlbnRpY2F0aW9uVXRpbHMuaD4K
ICNpbmNsdWRlIDxwYWwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oPgorI2luY2x1ZGUgPHd0Zi9jb2Nv
YS9UeXBlQ2FzdHNDb2NvYS5oPgorI2luY2x1ZGUgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtMTA5LDYg
KzExMSwzOSBAQCBTdHJpbmcgYmFzZTY0UHJpdmF0ZUtleShSZXRhaW5QdHI8U2VjS2V5UmVmPiBw
cml2YXRlS2V5KQogICAgIHJldHVybiBTdHJpbmcoW25zUHJpdmF0ZUtleVJlcCBiYXNlNjRFbmNv
ZGVkU3RyaW5nV2l0aE9wdGlvbnM6MF0pOwogfQogCitSZXRhaW5QdHI8U2VjS2V5UmVmPiBwcml2
YXRlS2V5RnJvbUJhc2U2NChjb25zdCBTdHJpbmcmIGJhc2U2NFByaXZhdGVLZXkpCit7CisgICAg
TlNEaWN0aW9uYXJ5KiBvcHRpb25zID0gQHsKKyAgICAgICAgKGlkKWtTZWNBdHRyS2V5VHlwZTog
KGlkKWtTZWNBdHRyS2V5VHlwZUVDU0VDUHJpbWVSYW5kb20sCisgICAgICAgIChpZClrU2VjQXR0
cktleUNsYXNzOiAoaWQpa1NlY0F0dHJLZXlDbGFzc1ByaXZhdGUsCisgICAgICAgIChpZClrU2Vj
QXR0cktleVNpemVJbkJpdHM6IEAyNTYsCisgICAgfTsKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBw
cml2YXRlS2V5ID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCYXNlNjRFbmNvZGVk
U3RyaW5nOmJhc2U2NFByaXZhdGVLZXkgb3B0aW9uczowXSk7CisgICAgQ0ZFcnJvclJlZiBlcnJv
clJlZiA9IG51bGxwdHI7CisgICAgYXV0byBrZXkgPSBhZG9wdENGKFNlY0tleUNyZWF0ZVdpdGhE
YXRhKAorICAgICAgICBicmlkZ2VfY2FzdChwcml2YXRlS2V5LmdldCgpKSwKKyAgICAgICAgYnJp
ZGdlX2Nhc3Qob3B0aW9ucyksCisgICAgICAgICZlcnJvclJlZgorICAgICkpOworICAgIEFTU0VS
VCghZXJyb3JSZWYpOworICAgIHJldHVybiBrZXk7Cit9CisKK1ZlY3Rvcjx1aW50OF90PiBzaWdu
YXR1cmVGb3JQcml2YXRlS2V5KFJldGFpblB0cjxTZWNLZXlSZWY+IHByaXZhdGVLZXksIGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgYXV0aERhdGEsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiBjbGllbnRE
YXRhSGFzaCkKK3sKKyAgICBOU011dGFibGVEYXRhICpkYXRhVG9TaWduID0gW05TTXV0YWJsZURh
dGEgZGF0YVdpdGhCeXRlczphdXRoRGF0YS5kYXRhKCkgbGVuZ3RoOmF1dGhEYXRhLnNpemUoKV07
CisgICAgW2RhdGFUb1NpZ24gYXBwZW5kQnl0ZXM6Y2xpZW50RGF0YUhhc2guZGF0YSgpIGxlbmd0
aDpjbGllbnREYXRhSGFzaC5zaXplKCldOworICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHNpZ25h
dHVyZTsKKyAgICB7CisgICAgICAgIENGRXJyb3JSZWYgZXJyb3JSZWYgPSBudWxscHRyOworICAg
ICAgICBzaWduYXR1cmUgPSBhZG9wdENGKFNlY0tleUNyZWF0ZVNpZ25hdHVyZSgoX19icmlkZ2Ug
U2VjS2V5UmVmKSgoaWQpcHJpdmF0ZUtleS5nZXQoKSksIGtTZWNLZXlBbGdvcml0aG1FQ0RTQVNp
Z25hdHVyZU1lc3NhZ2VYOTYyU0hBMjU2LCAoX19icmlkZ2UgQ0ZEYXRhUmVmKWRhdGFUb1NpZ24s
ICZlcnJvclJlZikpOworICAgICAgICBhdXRvIHJldGFpbkVycm9yID0gYWRvcHRDRihlcnJvclJl
Zik7CisgICAgICAgIEFTU0VSVCghZXJyb3JSZWYpOworICAgIH0KKworICAgIHJldHVybiB2ZWN0
b3JGcm9tTlNEYXRhKChOU0RhdGEgKilzaWduYXR1cmUuZ2V0KCkpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9WaXJ0dWFsL1ZpcnR1YWxI
aWRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL1ZpcnR1YWwvVmlydHVhbEhpZENvbm5lY3Rpb24uY3BwCmluZGV4IGMzNDhiYzIxZTFjZDMw
NGI0YzYyNjYzMTMwOGI5Y2EzNmFiZWNkZmEuLjE1MGZlNDJjZDQ2NzY5YzUzNjYwOTFkNmY0ZmY0
YzMxZWE2ZmM1ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL1ZpcnR1YWwvVmlydHVhbEhpZENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwvVmlydHVhbEhpZENvbm5l
Y3Rpb24uY3BwCkBAIC0yMTIsMTkgKzIxMiwxNyBAQCB2b2lkIFZpcnR1YWxIaWRDb25uZWN0aW9u
OjpwYXJzZVJlcXVlc3QoKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGNyZWRlbnRpYWwudXNlckhhbmRsZSA9IGl0LT5zZWNvbmQuZ2V0Qnl0ZVN0
cmluZygpOwotCi0gICAgICAgICAgICBtYW5hZ2VyLT5hZGRDcmVkZW50aWFsKG1fYXV0aGVudGlj
YXRvcklkLCBjcmVkZW50aWFsKTsKICAgICAgICAgICAgIGF1dG8gY3JlZGVudGlhbElkQW5kQ29z
ZVB1YktleSA9IGNyZWRlbnRpYWxJZEFuZENvc2VQdWJLZXlGb3JQcml2YXRlS2V5KHByaXZhdGVL
ZXkpOworICAgICAgICAgICAgY3JlZGVudGlhbC5jcmVkZW50aWFsSWQgPSBjcmVkZW50aWFsSWRB
bmRDb3NlUHViS2V5LmZpcnN0OworICAgICAgICAgICAgbWFuYWdlci0+YWRkQ3JlZGVudGlhbCht
X2F1dGhlbnRpY2F0b3JJZCwgY3JlZGVudGlhbCk7CiAKICAgICAgICAgICAgIGF1dG8gYXR0ZXN0
ZWRDcmVkZW50aWFsRGF0YSA9IGJ1aWxkQXR0ZXN0ZWRDcmVkZW50aWFsRGF0YShWZWN0b3I8dWlu
dDhfdD4oYWFndWlkTGVuZ3RoLCAwKSwgY3JlZGVudGlhbElkQW5kQ29zZVB1YktleS5maXJzdCwg
Y3JlZGVudGlhbElkQW5kQ29zZVB1YktleS5zZWNvbmQpOwogCiAgICAgICAgICAgICBhdXRvIGF1
dGhlbnRpY2F0b3JEYXRhID0gYnVpbGRBdXRoRGF0YShjcmVkZW50aWFsLnJwSWQsIGZsYWdzRm9y
Q29uZmlnKG1fY29uZmlndXJhdGlvbiksIGNyZWRlbnRpYWwuc2lnbkNvdW50LCBhdHRlc3RlZENy
ZWRlbnRpYWxEYXRhKTsKICAgICAgICAgICAgIENCT1JWYWx1ZTo6TWFwVmFsdWUgcmVzcG9uc2U7
CisgICAgICAgICAgICByZXNwb25zZVtDQk9SVmFsdWUoMSldID0gQ0JPUlZhbHVlKCJub25lIik7
CiAgICAgICAgICAgICByZXNwb25zZVtDQk9SVmFsdWUoMildID0gQ0JPUlZhbHVlKGF1dGhlbnRp
Y2F0b3JEYXRhKTsKLQogICAgICAgICAgICAgYXV0byBhdHRPYmogPSBidWlsZEF0dGVzdGF0aW9u
TWFwKFdURk1vdmUoYXV0aGVudGljYXRvckRhdGEpLCAiIiwgeyB9LCBBdHRlc3RhdGlvbkNvbnZl
eWFuY2VQcmVmZXJlbmNlOjpOb25lKTsKLQotICAgICAgICAgICAgcmVzcG9uc2VbQ0JPUlZhbHVl
KDEpXSA9IENCT1JWYWx1ZSgibm9uZSIpOwogICAgICAgICAgICAgcmVzcG9uc2VbQ0JPUlZhbHVl
KDMpXSA9IENCT1JWYWx1ZShhdHRPYmopOwogICAgICAgICAgICAgYXV0byBwYXlsb2FkID0gQ0JP
UldyaXRlcjo6d3JpdGUoQ0JPUlZhbHVlKHJlc3BvbnNlKSk7CiAgICAgICAgICAgICBWZWN0b3I8
dWludDhfdD4gYnVmZmVyOwpAQCAtMjMyLDYgKzIzMCw5MyBAQCB2b2lkIFZpcnR1YWxIaWRDb25u
ZWN0aW9uOjpwYXJzZVJlcXVlc3QoKQogICAgICAgICAgICAgYnVmZmVyLmFwcGVuZChzdGF0aWNf
Y2FzdDx1aW50OF90PihmaWRvOjpDdGFwRGV2aWNlUmVzcG9uc2VDb2RlOjprU3VjY2VzcykpOwog
ICAgICAgICAgICAgYnVmZmVyLmFwcGVuZFZlY3RvcigqcGF5bG9hZCk7CiAKKyAgICAgICAgICAg
IGF1dG8gbWVzc2FnZSA9IEZpZG9IaWRNZXNzYWdlOjpjcmVhdGUobV9yZXF1ZXN0TWVzc2FnZS0+
Y2hhbm5lbElkKCksIEZpZG9IaWREZXZpY2VDb21tYW5kOjprQ2JvciwgV1RGTW92ZShidWZmZXIp
KTsKKyAgICAgICAgICAgIHJlY2VpdmVIaWRNZXNzYWdlKFdURk1vdmUoKm1lc3NhZ2UpKTsKKyAg
ICAgICAgfSBlbHNlIGlmIChjbWQgPT0gQ3RhcFJlcXVlc3RDb21tYW5kOjprQXV0aGVudGljYXRv
ckdldEFzc2VydGlvbikgeworICAgICAgICAgICAgYXV0byBpdCA9IHJlcXVlc3RNYXAtPmdldE1h
cCgpLmZpbmQoQ0JPUlZhbHVlKGtDdGFwR2V0QXNzZXJ0aW9uUnBJZEtleSkpOworICAgICAgICAg
ICAgaWYgKGl0ID09IHJlcXVlc3RNYXAtPmdldE1hcCgpLmVuZCgpKSB7CisgICAgICAgICAgICAg
ICAgcmVjaWV2ZVJlc3BvbnNlQ29kZShDdGFwRGV2aWNlUmVzcG9uc2VDb2RlOjprQ3RhcDJFcnJN
aXNzaW5nUGFyYW1ldGVyKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBhdXRvIHJwSWQgPSBpdC0+c2Vjb25kLmdldFN0cmluZygpOworICAgICAg
ICAgICAgKHZvaWQpcnBJZDsKKyAgICAgICAgICAgIGl0ID0gcmVxdWVzdE1hcC0+Z2V0TWFwKCku
ZmluZChDQk9SVmFsdWUoa0N0YXBHZXRBc3NlcnRpb25DbGllbnREYXRhSGFzaEtleSkpOworICAg
ICAgICAgICAgaWYgKGl0ID09IHJlcXVlc3RNYXAtPmdldE1hcCgpLmVuZCgpKSB7CisgICAgICAg
ICAgICAgICAgcmVjaWV2ZVJlc3BvbnNlQ29kZShDdGFwRGV2aWNlUmVzcG9uc2VDb2RlOjprQ3Rh
cDJFcnJNaXNzaW5nUGFyYW1ldGVyKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBhdXRvIGNsaWVudERhdGFIYXNoID0gaXQtPnNlY29uZC5nZXRC
eXRlU3RyaW5nKCk7CisgICAgICAgICAgICAodm9pZCljbGllbnREYXRhSGFzaDsKKyAgICAgICAg
ICAgIFZlY3RvcjxWZWN0b3I8dWludDhfdD4+IGFsbG93TGlzdDsKKyAgICAgICAgICAgIGl0ID0g
cmVxdWVzdE1hcC0+Z2V0TWFwKCkuZmluZChDQk9SVmFsdWUoa0N0YXBHZXRBc3NlcnRpb25BbGxv
d0xpc3RLZXkpKTsKKyAgICAgICAgICAgIGlmIChpdCAhPSByZXF1ZXN0TWFwLT5nZXRNYXAoKS5l
bmQoKSkgeworICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8mIGNib3JBbGxvd0xpc3QgPSBpdC0+
c2Vjb25kLmdldEFycmF5KCk7CisgICAgICAgICAgICAgICAgaWYgKGNib3JBbGxvd0xpc3QuaXNF
bXB0eSgpKSB7CisgICAgICAgICAgICAgICAgICAgIHJlY2lldmVSZXNwb25zZUNvZGUoQ3RhcERl
dmljZVJlc3BvbnNlQ29kZTo6a0N0YXAyRXJySW52YWxpZE9wdGlvbik7CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBmb3Ig
KGNvbnN0IGF1dG8mIGNib3JDcmVkZW50aWFsIDogY2JvckFsbG93TGlzdCkgeworICAgICAgICAg
ICAgICAgICAgICBhdXRvJiBjcmVkTWFwID0gY2JvckNyZWRlbnRpYWwuZ2V0TWFwKCk7CisgICAg
ICAgICAgICAgICAgICAgIGF1dG8gaXRyID0gY3JlZE1hcC5maW5kKENCT1JWYWx1ZShmaWRvOjpr
RW50aXR5SWRNYXBLZXkpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGl0ciA9PSBjcmVkTWFw
LmVuZCgpIHx8ICFpdHItPnNlY29uZC5pc0J5dGVTdHJpbmcoKSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgcmVjaWV2ZVJlc3BvbnNlQ29kZShDdGFwRGV2aWNlUmVzcG9uc2VDb2RlOjprQ3Rh
cDJFcnJJbnZhbGlkT3B0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBhbGxvd0xpc3QuYXBwZW5k
KGl0ci0+c2Vjb25kLmdldEJ5dGVTdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBpdCA9IHJlcXVlc3RNYXAtPmdldE1hcCgpLmZpbmQoQ0JP
UlZhbHVlKGtDdGFwR2V0QXNzZXJ0aW9uUmVxdWVzdE9wdGlvbnNLZXkpKTsKKyAgICAgICAgICAg
IGlmIChpdCAhPSByZXF1ZXN0TWFwLT5nZXRNYXAoKS5lbmQoKSkgeworICAgICAgICAgICAgICAg
IGF1dG8mIG9wdGlvbk1hcCA9IGl0LT5zZWNvbmQuZ2V0TWFwKCk7CisKKyAgICAgICAgICAgICAg
ICBhdXRvIGl0ciA9IG9wdGlvbk1hcC5maW5kKENCT1JWYWx1ZShrVXNlclZlcmlmaWNhdGlvbk1h
cEtleSkpOworICAgICAgICAgICAgICAgIGlmIChpdHIgIT0gb3B0aW9uTWFwLmVuZCgpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGF1dG8gcmVxdWlyZVVzZXJWZXJpZmljYXRpb24gPSBpdHItPnNl
Y29uZC5nZXRCb29sKCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChyZXF1aXJlVXNlclZlcmlm
aWNhdGlvbiAmJiAhbV9jb25maWd1cmF0aW9uLmhhc1VzZXJWZXJpZmljYXRpb24pIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJlY2lldmVSZXNwb25zZUNvZGUoQ3RhcERldmljZVJlc3BvbnNl
Q29kZTo6a0N0YXAyRXJySW52YWxpZE9wdGlvbik7CisgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHJl
cXVpcmVVc2VyVmVyaWZpY2F0aW9uICYmICFtX2NvbmZpZ3VyYXRpb24uaXNVc2VyVmVyaWZpZWQp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lldmVSZXNwb25zZUNvZGUoQ3RhcERldmlj
ZVJlc3BvbnNlQ29kZTo6a0N0YXAyRXJyT3BlcmF0aW9uRGVuaWVkKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgICAgIGl0ciA9IG9wdGlvbk1hcC5maW5kKENCT1JWYWx1ZShrVXNl
clByZXNlbmNlTWFwS2V5KSk7CisgICAgICAgICAgICAgICAgaWYgKGl0ciAhPSBvcHRpb25NYXAu
ZW5kKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byByZXF1aXJlVXNlclByZXNlbmNlID0g
aXRyLT5zZWNvbmQuZ2V0Qm9vbCgpOworICAgICAgICAgICAgICAgICAgICBpZiAocmVxdWlyZVVz
ZXJQcmVzZW5jZSAmJiAhbV9jb25maWd1cmF0aW9uLmlzVXNlckNvbnNlbnRpbmcpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJlY2lldmVSZXNwb25zZUNvZGUoQ3RhcERldmljZVJlc3BvbnNl
Q29kZTo6a0N0YXAyRXJyT3BlcmF0aW9uRGVuaWVkKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGF1dG8gbWF0Y2hpbmdDcmVkZW50aWFscyA9IG1fbWFuYWdl
ci0+Y3JlZGVudGlhbHNNYXRjaGluZ0xpc3QobV9hdXRoZW50aWNhdG9ySWQsIHJwSWQsIGFsbG93
TGlzdCk7CisgICAgICAgICAgICBpZiAobWF0Y2hpbmdDcmVkZW50aWFscy5pc0VtcHR5KCkpIHsK
KyAgICAgICAgICAgICAgICByZWNpZXZlUmVzcG9uc2VDb2RlKEN0YXBEZXZpY2VSZXNwb25zZUNv
ZGU6OmtDdGFwMkVyck5vQ3JlZGVudGlhbHMpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGF1dG8mIGNyZWRlbnRpYWwgPSBtYXRjaGluZ0NyZWRl
bnRpYWxzWzBdOworICAgICAgICAgICAgQ0JPUlZhbHVlOjpNYXBWYWx1ZSByZXNwb25zZTsKKwor
ICAgICAgICAgICAgcmVzcG9uc2VbQ0JPUlZhbHVlKDEpXSA9IENCT1JWYWx1ZShidWlsZENyZWRl
bnRpYWxEZXNjcmlwdG9yKGNyZWRlbnRpYWwuY3JlZGVudGlhbElkKSk7CisgICAgICAgICAgICBh
dXRvIGtleSA9IHByaXZhdGVLZXlGcm9tQmFzZTY0KGNyZWRlbnRpYWwucHJpdmF0ZUtleSk7Cisg
ICAgICAgICAgICBhdXRvIGNyZWRlbnRpYWxJZEFuZENvc2VQdWJLZXkgPSBjcmVkZW50aWFsSWRB
bmRDb3NlUHViS2V5Rm9yUHJpdmF0ZUtleShrZXkpOworICAgICAgICAgICAgYXV0byBhdHRlc3Rl
ZENyZWRlbnRpYWxEYXRhID0gYnVpbGRBdHRlc3RlZENyZWRlbnRpYWxEYXRhKFZlY3Rvcjx1aW50
OF90PihhYWd1aWRMZW5ndGgsIDApLCBjcmVkZW50aWFsSWRBbmRDb3NlUHViS2V5LmZpcnN0LCBj
cmVkZW50aWFsSWRBbmRDb3NlUHViS2V5LnNlY29uZCk7CisgICAgICAgICAgICBhdXRvIGF1dGhE
YXRhID0gYnVpbGRBdXRoRGF0YShycElkLCBmbGFnc0ZvckNvbmZpZyhtX2NvbmZpZ3VyYXRpb24p
LCBjcmVkZW50aWFsLnNpZ25Db3VudCwgYXR0ZXN0ZWRDcmVkZW50aWFsRGF0YSk7CisgICAgICAg
ICAgICByZXNwb25zZVtDQk9SVmFsdWUoMildID0gQ0JPUlZhbHVlKGF1dGhEYXRhKTsKKyAgICAg
ICAgICAgIHJlc3BvbnNlW0NCT1JWYWx1ZSgzKV0gPSBDQk9SVmFsdWUoc2lnbmF0dXJlRm9yUHJp
dmF0ZUtleShrZXksIGF1dGhEYXRhLCBjbGllbnREYXRhSGFzaCkpOworICAgICAgICAgICAgaWYg
KGNyZWRlbnRpYWwudXNlckhhbmRsZSkKKyAgICAgICAgICAgICAgICByZXNwb25zZVtDQk9SVmFs
dWUoNCldID0gQ0JPUlZhbHVlKGJ1aWxkVXNlckVudGl0eU1hcCgqY3JlZGVudGlhbC51c2VySGFu
ZGxlLCAiIiwgIiIpKTsKKyAgICAgICAgICAgIHJlc3BvbnNlW0NCT1JWYWx1ZSg1KV0gPSBDQk9S
VmFsdWUoKGludDY0X3QpbWF0Y2hpbmdDcmVkZW50aWFscy5zaXplKCkpOworICAgICAgICAgICAg
YXV0byBwYXlsb2FkID0gQ0JPUldyaXRlcjo6d3JpdGUoQ0JPUlZhbHVlKHJlc3BvbnNlKSk7Cisg
ICAgICAgICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyOworICAgICAgICAgICAgYnVmZmVyLnJl
c2VydmVDYXBhY2l0eShwYXlsb2FkLT5zaXplKCkgKyAxKTsKKyAgICAgICAgICAgIGJ1ZmZlci5h
cHBlbmQoc3RhdGljX2Nhc3Q8dWludDhfdD4oZmlkbzo6Q3RhcERldmljZVJlc3BvbnNlQ29kZTo6
a1N1Y2Nlc3MpKTsKKyAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmRWZWN0b3IoKnBheWxvYWQpOwor
CiAgICAgICAgICAgICBhdXRvIG1lc3NhZ2UgPSBGaWRvSGlkTWVzc2FnZTo6Y3JlYXRlKG1fcmVx
dWVzdE1lc3NhZ2UtPmNoYW5uZWxJZCgpLCBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a0Nib3IsIFdU
Rk1vdmUoYnVmZmVyKSk7CiAgICAgICAgICAgICByZWNlaXZlSGlkTWVzc2FnZShXVEZNb3ZlKCpt
ZXNzYWdlKSk7CiAgICAgICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455293</attachid>
            <date>2022-03-21 16:07:51 -0700</date>
            <delta_ts>2022-03-22 08:41:06 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-238154-20220321160750.patch</filename>
            <type>text/plain</type>
            <size>19954</size>
            <attacher name="pascoe@apple.com">pascoe</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNDkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDcwMTQyYmVlMjZjMzc4
Zjg5Njc4ZmU0NzM4YzMwZmNiOGNiMWE2OS4uMjBlMTJlMzVhNmY5ZjU1YTA4MDY2ZTc0MmI5MGZl
YmRhYzI1NmJiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIyLTAzLTIxICBKIFBh
c2NvZSAgPGpfcGFzY29lQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIFN1cHBvcnQg
Z2V0QXNzZXJ0aW9uIGZvciB2aXJ0dWFsIEhJRCBhdXRoZW50aWNhdG9ycworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4MTU0CisgICAgICAgIHJkYXI6
Ly9wcm9ibGVtLzkwNTkzMTUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVmlydHVhbCBhdXRoZW50aWNhdG9ycyBmb3IgV2ViQXV0aG4gc3VwcG9ydCBk
aWZmZXJlbnQgdHJhbnNwcm90czogbmZjLCB1c2IsIGludGVybmFsLAorICAgICAgICBhbmQgYmxl
LiBDdXJyZW50bHksIHdlIG9ubHkgZnVsbHkgc3VwcG9ydCB0aGUgaW50ZXJuYWwgdHJhbnNwb3J0
IGFuZCBtYWtlQ3JlZGVudGlhbCBmb3IKKyAgICAgICAgdXNiLXRyYW5zcG9ydC4gVGhlIGRlZmF1
bHQgdHJhbnNwb3J0IGZvciB3ZWItcGxhdGZvcm0tdGVzdHMgaXMgdXNiLiBUaGlzIHBhdGNoIGlt
cGxlbWVudHMKKyAgICAgICAgZ2V0QXNzZXJ0aW9uIGZvciBoaWQtYmFzZWQgdmlydHVhbCBhdXRo
bmV0aWNhdG9ycy4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vV2ViQXV0aGVudGljYXRp
b25VdGlscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpidWlsZFVzZXJFbnRpdHlNYXApOgorICAg
ICAgICAoV2ViQ29yZTo6YnVpbGRDcmVkZW50aWFsRGVzY3JpcHRvcik6CisgICAgICAgICogTW9k
dWxlcy93ZWJhdXRobi9XZWJBdXRoZW50aWNhdGlvblV0aWxzLmg6CisgICAgICAgICogTW9kdWxl
cy93ZWJhdXRobi9maWRvL0ZpZG9Db25zdGFudHMuaDoKKwogMjAyMi0wMy0xOCAgRW5yaXF1ZSBP
Y2HDsWEgR29uesOhbGV6ICA8ZW9jYW5oYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHU3RyZWFt
ZXJdIEFkZCBzdG9wIHBvc2l0aW9uIHRvIHRoZSByYW5nZSByZXF1ZXN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDlm
NDRhNzY4MjZhYWI5NzBlZTFmZDIwMWE5NDQwNGE5NzA4NjAxYTEuLmViMGQzN2Y1ZjI0YTg3YmMz
MDZiYTczMGFmODQ1NWY3NDJjZjZjM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMjIt
MDMtMjEgIEogUGFzY29lICA8al9wYXNjb2VAYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJBdXRo
bl0gU3VwcG9ydCBnZXRBc3NlcnRpb24gZm9yIHZpcnR1YWwgSElEIGF1dGhlbnRpY2F0b3JzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgxNTQKKyAg
ICAgICAgcmRhcjovL3Byb2JsZW0vOTA1OTMxNTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBWaXJ0dWFsIGF1dGhlbnRpY2F0b3JzIGZvciBXZWJBdXRo
biBzdXBwb3J0IGRpZmZlcmVudCB0cmFuc3BvcnRzOiBuZmMsIHVzYiwgaW50ZXJuYWwsCisgICAg
ICAgIGFuZCBibGUuIEN1cnJlbnRseSwgd2Ugb25seSBmdWxseSBzdXBwb3J0IHRoZSBpbnRlcm5h
bCB0cmFuc3BvcnQgYW5kIG1ha2VDcmVkZW50aWFsIGZvcgorICAgICAgICB1c2ItdHJhbnNwb3J0
LiBUaGUgZGVmYXVsdCB0cmFuc3BvcnQgZm9yIHdlYi1wbGF0Zm9ybS10ZXN0cyBpcyB1c2IuIFRo
aXMgcGF0Y2ggaW1wbGVtZW50cworICAgICAgICBnZXRBc3NlcnRpb24gZm9yIGhpZC1iYXNlZCB2
aXJ0dWFsIGF1dGhuZXRpY2F0b3JzLgorCisgICAgICAgIFRlc3RlZCB2aWEgbWFudWFsbHkgY3Jl
YXRpbmcgdmlydHVhbCBhdXRoZW50aWNhdG9yIGFuZCBwZXJmb3JtaW5nIGNyZWF0ZSAvIGdldC4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9WaXJ0dWFsL1ZpcnR1YWxB
dXRoZW50aWNhdG9yTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlZpcnR1YWxBdXRoZW50
aWNhdG9yTWFuYWdlcjo6YWRkQ3JlZGVudGlhbCk6CisgICAgICAgIChXZWJLaXQ6OlZpcnR1YWxB
dXRoZW50aWNhdG9yTWFuYWdlcjo6Y3JlZGVudGlhbHNNYXRjaGluZ0xpc3QpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9WaXJ0dWFsL1ZpcnR1YWxBdXRoZW50aWNhdG9y
TWFuYWdlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9WaXJ0dWFs
L1ZpcnR1YWxBdXRoZW50aWNhdG9yVXRpbHMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vVmlydHVhbC9WaXJ0dWFsQXV0aGVudGljYXRvclV0aWxzLm1tOgorICAgICAg
ICAoV2ViS2l0Ojpwcml2YXRlS2V5RnJvbUJhc2U2NCk6CisgICAgICAgIChXZWJLaXQ6OnNpZ25h
dHVyZUZvclByaXZhdGVLZXkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9WaXJ0dWFsL1ZpcnR1YWxIaWRDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Vmly
dHVhbEhpZENvbm5lY3Rpb246OnBhcnNlUmVxdWVzdCk6CisKIDIwMjItMDMtMTggIEtpbW1vIEtp
bm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWN5Y2xpbmcgYSB3ZWJn
bCBjb250ZXh0IHdoZW4gaXQgaGFzIGJlZW4gbG9zdCBhbmQgcmVzdG9yZWQgY2F1c2VzIGEgY3Jh
c2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vV2ViQXV0aGVu
dGljYXRpb25VdGlscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1dlYkF1
dGhlbnRpY2F0aW9uVXRpbHMuY3BwCmluZGV4IGVkOTM0Njg2NmE3ZWYzYzEzZWZjZTQ1NjVmMzk5
MWNlMjk1MTBhMDAuLmMxZmJmMDU2Y2M2YWI1ZTE4Mjk4ODIyNDYzNDQxYjRhODVlYWJkNGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vV2ViQXV0aGVudGljYXRp
b25VdGlscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9XZWJBdXRo
ZW50aWNhdGlvblV0aWxzLmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShXRUJfQVVU
SE4pCiAKICNpbmNsdWRlICJDQk9SV3JpdGVyLmgiCisjaW5jbHVkZSAiRmlkb0NvbnN0YW50cy5o
IgogI2luY2x1ZGUgIldlYkF1dGhlbnRpY2F0aW9uQ29uc3RhbnRzLmgiCiAjaW5jbHVkZSA8cGFs
L2NyeXB0by9DcnlwdG9EaWdlc3QuaD4KICNpbmNsdWRlIDx3dGYvSlNPTlZhbHVlcy5oPgpAQCAt
ODcsNiArODgsMjIgQEAgVmVjdG9yPHVpbnQ4X3Q+IGJ1aWxkQXR0ZXN0ZWRDcmVkZW50aWFsRGF0
YShjb25zdCBWZWN0b3I8dWludDhfdD4mIGFhZ3VpZCwgY29uc3QKICAgICByZXR1cm4gYXR0ZXN0
ZWRDcmVkZW50aWFsRGF0YTsKIH0KIAorY2Jvcjo6Q0JPUlZhbHVlOjpNYXBWYWx1ZSBidWlsZFVz
ZXJFbnRpdHlNYXAoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB1c2VySWQsIGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSkKK3sKKyAgICBjYm9yOjpDQk9SVmFsdWU6
Ok1hcFZhbHVlIHVzZXJFbnRpdHlNYXA7CisgICAgdXNlckVudGl0eU1hcFtjYm9yOjpDQk9SVmFs
dWUoZmlkbzo6a0VudGl0eUlkTWFwS2V5KV0gPSBjYm9yOjpDQk9SVmFsdWUodXNlcklkKTsKKyAg
ICB1c2VyRW50aXR5TWFwW2Nib3I6OkNCT1JWYWx1ZShmaWRvOjprRW50aXR5TmFtZU1hcEtleSld
ID0gY2Jvcjo6Q0JPUlZhbHVlKG5hbWUpOworICAgIHVzZXJFbnRpdHlNYXBbY2Jvcjo6Q0JPUlZh
bHVlKGZpZG86OmtEaXNwbGF5TmFtZU1hcEtleSldID0gY2Jvcjo6Q0JPUlZhbHVlKGRpc3BsYXlO
YW1lKTsKKyAgICByZXR1cm4gdXNlckVudGl0eU1hcDsKK30KKworY2Jvcjo6Q0JPUlZhbHVlOjpN
YXBWYWx1ZSBidWlsZENyZWRlbnRpYWxEZXNjcmlwdG9yKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
Y3JlZGVudGlhbElkKQoreworICAgIGNib3I6OkNCT1JWYWx1ZTo6TWFwVmFsdWUgY3JlZGVudGlh
bDsKKyAgICBjcmVkZW50aWFsW2Nib3I6OkNCT1JWYWx1ZSgiaWQiKV0gPSBjYm9yOjpDQk9SVmFs
dWUoY3JlZGVudGlhbElkKTsKKyAgICByZXR1cm4gY3JlZGVudGlhbDsKK30KKwogVmVjdG9yPHVp
bnQ4X3Q+IGJ1aWxkQXV0aERhdGEoY29uc3QgU3RyaW5nJiBycElkLCBjb25zdCB1aW50OF90IGZs
YWdzLCBjb25zdCB1aW50MzJfdCBjb3VudGVyLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIG9wdGlv
bmFsQXR0ZXN0ZWRDcmVkZW50aWFsRGF0YSkKIHsKICAgICBWZWN0b3I8dWludDhfdD4gYXV0aERh
dGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1dlYkF1dGhl
bnRpY2F0aW9uVXRpbHMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vV2ViQXV0
aGVudGljYXRpb25VdGlscy5oCmluZGV4IDMzMjE1N2U1MjEzMDMwODdlNWE3MzRlNDdmYmU3Zjg5
OGQwYjA4NWIuLjRmZWExMWMwN2E4YTM5MmJiODQ2MjgyZWNhODlkOWQ5ODIwZDc2MjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vV2ViQXV0aGVudGljYXRpb25V
dGlscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vV2ViQXV0aGVudGlj
YXRpb25VdGlscy5oCkBAIC01MSw2ICs1MSw4IEBAIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50
OF90PiBidWlsZEF1dGhEYXRhKGNvbnN0IFN0cmluZyYgcnBJZCwgY29uc3QgdWludDhfdCBmCiAK
IFdFQkNPUkVfRVhQT1JUIGNib3I6OkNCT1JWYWx1ZTo6TWFwVmFsdWUgYnVpbGRBdHRlc3RhdGlv
bk1hcChWZWN0b3I8dWludDhfdD4mJiwgU3RyaW5nJiYsIGNib3I6OkNCT1JWYWx1ZTo6TWFwVmFs
dWUmJiwgY29uc3QgQXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZSYpOwogCitXRUJDT1JF
X0VYUE9SVCBjYm9yOjpDQk9SVmFsdWU6Ok1hcFZhbHVlIGJ1aWxkQ3JlZGVudGlhbERlc2NyaXB0
b3IoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjcmVkZW50aWFsSWQpOworCiAvLyBodHRwczovL3d3
dy53My5vcmcvVFIvd2ViYXV0aG4vI2F0dGVzdGF0aW9uLW9iamVjdAogV0VCQ09SRV9FWFBPUlQg
VmVjdG9yPHVpbnQ4X3Q+IGJ1aWxkQXR0ZXN0YXRpb25PYmplY3QoVmVjdG9yPHVpbnQ4X3Q+JiYg
YXV0aERhdGEsIFN0cmluZyYmIGZvcm1hdCwgY2Jvcjo6Q0JPUlZhbHVlOjpNYXBWYWx1ZSYmIHN0
YXRlbWVudE1hcCwgY29uc3QgQXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZSYpOwogCkBA
IC01OCw2ICs2MCw3IEBAIFdFQkNPUkVfRVhQT1JUIFJlZjxBcnJheUJ1ZmZlcj4gYnVpbGRDbGll
bnREYXRhSnNvbihDbGllbnREYXRhVHlwZSAvKnR5cGUqLywgY29uCiAKIFdFQkNPUkVfRVhQT1JU
IFZlY3Rvcjx1aW50OF90PiBidWlsZENsaWVudERhdGFKc29uSGFzaChjb25zdCBBcnJheUJ1ZmZl
ciYgY2xpZW50RGF0YUpzb24pOwogCitXRUJDT1JFX0VYUE9SVCBjYm9yOjpDQk9SVmFsdWU6Ok1h
cFZhbHVlIGJ1aWxkVXNlckVudGl0eU1hcChjb25zdCBWZWN0b3I8dWludDhfdD4mIHVzZXJJZCwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lKTsKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0NvbnN0YW50cy5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9Db25zdGFudHMuaAppbmRl
eCBkYzc3MTFiNjNhZDYzNWUyODJhZDI3YTljYjZjYjIxNTZmNjY3NDcwLi4yYWQxNTgzNDVlMjU2
YzE4NjgyN2JmYzhkY2NjY2Y3ZGEyZWZiYzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0NvbnN0YW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvQ29uc3RhbnRzLmgKQEAgLTI2Niw3ICsyNjYsMTQg
QEAgY29uc3QgaW50NjRfdCBrQ3RhcE1ha2VDcmVkZW50aWFsUHViS2V5Q3JlZFBhcmFtc0tleSA9
IDQ7CiBjb25zdCBpbnQ2NF90IGtDdGFwTWFrZUNyZWRlbnRpYWxFeGNsdWRlTGlzdEtleSA9IDU7
CiBjb25zdCBpbnQ2NF90IGtDdGFwTWFrZUNyZWRlbnRpYWxFeHRlbnNpb25zS2V5ID0gNjsKIGNv
bnN0IGludDY0X3Qga0N0YXBNYWtlQ3JlZGVudGlhbFJlcXVlc3RPcHRpb25zS2V5ID0gNzsKKwor
Y29uc3QgaW50NjRfdCBrQ3RhcEdldEFzc2VydGlvblJwSWRLZXkgPSAxOworY29uc3QgaW50NjRf
dCBrQ3RhcEdldEFzc2VydGlvbkNsaWVudERhdGFIYXNoS2V5ID0gMjsKK2NvbnN0IGludDY0X3Qg
a0N0YXBHZXRBc3NlcnRpb25BbGxvd0xpc3RLZXkgPSAzOworY29uc3QgaW50NjRfdCBrQ3RhcEdl
dEFzc2VydGlvbkV4dGVuc2lvbnNLZXkgPSA0OwogY29uc3QgaW50NjRfdCBrQ3RhcEdldEFzc2Vy
dGlvblJlcXVlc3RPcHRpb25zS2V5ID0gNTsKK2NvbnN0IGludDY0X3Qga0N0YXBHZXRBc3NlcnRp
b25QaW5VdkF1dGhQYXJhbUtleSA9IDY7Citjb25zdCBpbnQ2NF90IGtDdGFwR2V0QXNzZXJ0aW9u
UGluVXZBdXRoUHJvdG9jb2xLZXkgPSA3OwogCiB9IC8vIG5hbWVzcGFjZSBmaWRvCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwv
VmlydHVhbEF1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwvVmlydHVhbEF1dGhlbnRpY2F0b3JNYW5hZ2VyLmNw
cAppbmRleCAyNzViMWViNzhiNWVhZGY0OTJkZTRlMjMzMDdjNjM2Mjk5MTdiNDQ1Li4wM2E1YjQ5
MDMxODEyMzA4OTVhNmIwZWMzOTExYTU3MjhjMDJhZDUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9WaXJ0dWFsL1ZpcnR1YWxBdXRoZW50aWNh
dG9yTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vVmlydHVhbC9WaXJ0dWFsQXV0aGVudGljYXRvck1hbmFnZXIuY3BwCkBAIC01Nyw5ICs1
NywyMCBAQCBib29sIFZpcnR1YWxBdXRoZW50aWNhdG9yTWFuYWdlcjo6cmVtb3ZlQXV0aGVudGlj
YXRvcihjb25zdCBTdHJpbmcmIGlkKQogICAgIHJldHVybiBtX3ZpcnR1YWxBdXRoZW50aWNhdG9y
cy5yZW1vdmUoaWQpOwogfQogCi12b2lkIFZpcnR1YWxBdXRoZW50aWNhdG9yTWFuYWdlcjo6YWRk
Q3JlZGVudGlhbChjb25zdCBTdHJpbmcmIGF1dGhlbnRpY2F0b3JJZCwgY29uc3QgVmlydHVhbENy
ZWRlbnRpYWwmIGNyZWRlbnRpYWwpCit2b2lkIFZpcnR1YWxBdXRoZW50aWNhdG9yTWFuYWdlcjo6
YWRkQ3JlZGVudGlhbChjb25zdCBTdHJpbmcmIGF1dGhlbnRpY2F0b3JJZCwgVmlydHVhbENyZWRl
bnRpYWwmIGNyZWRlbnRpYWwpCiB7Ci0gICAgbV9jcmVkZW50aWFsc0J5QXV0aGVudGljYXRvci5n
ZXQoYXV0aGVudGljYXRvcklkKS5hcHBlbmQoY3JlZGVudGlhbCk7CisgICAgbV9jcmVkZW50aWFs
c0J5QXV0aGVudGljYXRvci5maW5kKGF1dGhlbnRpY2F0b3JJZCktPnZhbHVlLmFwcGVuZChXVEZN
b3ZlKGNyZWRlbnRpYWwpKTsKK30KKworVmVjdG9yPFZpcnR1YWxDcmVkZW50aWFsPiBWaXJ0dWFs
QXV0aGVudGljYXRvck1hbmFnZXI6OmNyZWRlbnRpYWxzTWF0Y2hpbmdMaXN0KGNvbnN0IFN0cmlu
ZyYgYXV0aGVudGljYXRvcklkLCBjb25zdCBTdHJpbmcmIHJwSWQsIGNvbnN0IFZlY3RvcjxWZWN0
b3I8dWludDhfdD4+JiBjcmVkZW50aWFsSWRzKQoreworICAgIFZlY3RvcjxWaXJ0dWFsQ3JlZGVu
dGlhbD4gbWF0Y2hpbmc7CisgICAgYXV0byBpdCA9IG1fY3JlZGVudGlhbHNCeUF1dGhlbnRpY2F0
b3IuZmluZChhdXRoZW50aWNhdG9ySWQpOworICAgIGZvciAoYXV0byYgY3JlZGVudGlhbCA6IGl0
LT52YWx1ZSkgeworICAgICAgICBpZiAoY3JlZGVudGlhbC5ycElkID09IHJwSWQgJiYgKChjcmVk
ZW50aWFsSWRzLmlzRW1wdHkoKSAmJiBjcmVkZW50aWFsLmlzUmVzaWRlbnRDcmVkZW50aWFsKSB8
fCBjcmVkZW50aWFsSWRzLmNvbnRhaW5zKGNyZWRlbnRpYWwuY3JlZGVudGlhbElkKSkpCisgICAg
ICAgICAgICBtYXRjaGluZy5hcHBlbmQoY3JlZGVudGlhbCk7CisgICAgfQorICAgIHJldHVybiBt
YXRjaGluZzsKIH0KIAogVW5pcXVlUmVmPEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlPiBW
aXJ0dWFsQXV0aGVudGljYXRvck1hbmFnZXI6OmNyZWF0ZVNlcnZpY2UoV2ViQ29yZTo6QXV0aGVu
dGljYXRvclRyYW5zcG9ydCB0cmFuc3BvcnQsIEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNl
OjpPYnNlcnZlciYgb2JzZXJ2ZXIpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9WaXJ0dWFsL1ZpcnR1YWxBdXRoZW50aWNhdG9yTWFu
YWdlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vVmlydHVh
bC9WaXJ0dWFsQXV0aGVudGljYXRvck1hbmFnZXIuaAppbmRleCAxMWRmMDk2MWJhNWZmMTliODBh
MjVlY2NjMWViYjVjYWQ4YTcxNGQ3Li4wZjlkM2FjODU4MGI1YTNlZGU1MWE1MGJkMWYxOTg2NmY2
NjljZGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9WaXJ0dWFsL1ZpcnR1YWxBdXRoZW50aWNhdG9yTWFuYWdlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwvVmlydHVhbEF1dGhlbnRp
Y2F0b3JNYW5hZ2VyLmgKQEAgLTQ0LDcgKzQ0LDggQEAgcHVibGljOgogCiAgICAgYm9vbCBpc1Zp
cnR1YWwoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2b2lkIGFkZENyZWRl
bnRpYWwoY29uc3QgU3RyaW5nJiwgY29uc3QgVmlydHVhbENyZWRlbnRpYWwmKTsKKyAgICB2b2lk
IGFkZENyZWRlbnRpYWwoY29uc3QgU3RyaW5nJiwgVmlydHVhbENyZWRlbnRpYWwmKTsKKyAgICBW
ZWN0b3I8VmlydHVhbENyZWRlbnRpYWw+IGNyZWRlbnRpYWxzTWF0Y2hpbmdMaXN0KGNvbnN0IFN0
cmluZyYgYXV0aGVudGljYXRvcklkLCBjb25zdCBTdHJpbmcmIHJwSWQsIGNvbnN0IFZlY3RvcjxW
ZWN0b3I8dWludDhfdD4+JiBjcmVkZW50aWFsSWRzKTsKIAogcHJvdGVjdGVkOgogICAgIHZvaWQg
ZGVjaWRlUG9saWN5Rm9yTG9jYWxBdXRoZW50aWNhdG9yKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
TG9jYWxBdXRoZW50aWNhdG9yUG9saWN5KT4mJikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9WaXJ0dWFsL1ZpcnR1YWxBdXRo
ZW50aWNhdG9yVXRpbHMuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL1ZpcnR1YWwvVmlydHVhbEF1dGhlbnRpY2F0b3JVdGlscy5oCmluZGV4IDc3N2I4Y2I2Nzk2
NzI5YmM3NWE4YzQzNjM2YTlhNzRhMTU1ZWJkN2EuLjhmYWJjOTE2ZDdjYjc4M2YzYjBhYzlkZGEy
Zjk1ZTc0MDgwMWViOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL1ZpcnR1YWwvVmlydHVhbEF1dGhlbnRpY2F0b3JVdGlscy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1ZpcnR1YWwvVmlydHVhbEF1
dGhlbnRpY2F0b3JVdGlscy5oCkBAIC0zNSw2ICszNSw4IEBAIHVpbnQ4X3QgZmxhZ3NGb3JDb25m
aWcoY29uc3QgVmlydHVhbEF1dGhlbnRpY2F0b3JDb25maWd1cmF0aW9uJik7CiBSZXRhaW5QdHI8
U2VjS2V5UmVmPiBjcmVhdGVQcml2YXRlS2V5KCk7CiBzdGQ6OnBhaXI8VmVjdG9yPHVpbnQ4X3Q+
LCBWZWN0b3I8dWludDhfdD4+IGNyZWRlbnRpYWxJZEFuZENvc2VQdWJLZXlGb3JQcml2YXRlS2V5
KFJldGFpblB0cjxTZWNLZXlSZWY+IHByaXZhdGVLZXkpOwogU3RyaW5nIGJhc2U2NFByaXZhdGVL
ZXkoUmV0YWluUHRyPFNlY0tleVJlZj4gcHJpdmF0ZUtleSk7CitSZXRhaW5QdHI8U2VjS2V5UmVm
PiBwcml2YXRlS2V5RnJvbUJhc2U2NChjb25zdCBTdHJpbmcmIGJhc2U2NFByaXZhdGVLZXkpOwor
VmVjdG9yPHVpbnQ4X3Q+IHNpZ25hdHVyZUZvclByaXZhdGVLZXkoUmV0YWluUHRyPFNlY0tleVJl
Zj4gcHJpdmF0ZUtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhdXRoRGF0YSwgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBjbGllbnREYXRhSGFzaCk7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9W
aXJ0dWFsL1ZpcnR1YWxBdXRoZW50aWNhdG9yVXRpbHMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9WaXJ0dWFsL1ZpcnR1YWxBdXRoZW50aWNhdG9yVXRpbHMu
bW0KaW5kZXggODY3NTk5N2QzN2E3ZGQ3NWI0YjU0ZTYyNmU4OGQwMGYzZTIwYWZmMy4uNzZlMzNh
NzM4NjdiYzRmN2VjZjdiY2Q2NmMwOGVhYzU2ZWY2MGYxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vVmlydHVhbC9WaXJ0dWFsQXV0aGVudGlj
YXRvclV0aWxzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL1ZpcnR1YWwvVmlydHVhbEF1dGhlbnRpY2F0b3JVdGlscy5tbQpAQCAtMzIsNiArMzIsOCBA
QAogI2luY2x1ZGUgPFdlYkNvcmUvV2ViQXV0aGVudGljYXRpb25Db25zdGFudHMuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1dlYkF1dGhlbnRpY2F0aW9uVXRpbHMuaD4KICNpbmNsdWRlIDxwYWwvY3J5
cHRvL0NyeXB0b0RpZ2VzdC5oPgorI2luY2x1ZGUgPHd0Zi9jb2NvYS9UeXBlQ2FzdHNDb2NvYS5o
PgorI2luY2x1ZGUgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtMTA5LDYgKzExMSwzOSBAQCBTdHJpbmcg
YmFzZTY0UHJpdmF0ZUtleShSZXRhaW5QdHI8U2VjS2V5UmVmPiBwcml2YXRlS2V5KQogICAgIHJl
dHVybiBTdHJpbmcoW25zUHJpdmF0ZUtleVJlcCBiYXNlNjRFbmNvZGVkU3RyaW5nV2l0aE9wdGlv
bnM6MF0pOwogfQogCitSZXRhaW5QdHI8U2VjS2V5UmVmPiBwcml2YXRlS2V5RnJvbUJhc2U2NChj
b25zdCBTdHJpbmcmIGJhc2U2NFByaXZhdGVLZXkpCit7CisgICAgTlNEaWN0aW9uYXJ5KiBvcHRp
b25zID0gQHsKKyAgICAgICAgKGlkKWtTZWNBdHRyS2V5VHlwZTogKGlkKWtTZWNBdHRyS2V5VHlw
ZUVDU0VDUHJpbWVSYW5kb20sCisgICAgICAgIChpZClrU2VjQXR0cktleUNsYXNzOiAoaWQpa1Nl
Y0F0dHJLZXlDbGFzc1ByaXZhdGUsCisgICAgICAgIChpZClrU2VjQXR0cktleVNpemVJbkJpdHM6
IEAyNTYsCisgICAgfTsKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBwcml2YXRlS2V5ID0gYWRvcHRO
UyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCYXNlNjRFbmNvZGVkU3RyaW5nOmJhc2U2NFByaXZh
dGVLZXkgb3B0aW9uczowXSk7CisgICAgQ0ZFcnJvclJlZiBlcnJvclJlZiA9IG51bGxwdHI7Cisg
ICAgYXV0byBrZXkgPSBhZG9wdENGKFNlY0tleUNyZWF0ZVdpdGhEYXRhKAorICAgICAgICBicmlk
Z2VfY2FzdChwcml2YXRlS2V5LmdldCgpKSwKKyAgICAgICAgYnJpZGdlX2Nhc3Qob3B0aW9ucyks
CisgICAgICAgICZlcnJvclJlZgorICAgICkpOworICAgIEFTU0VSVCghZXJyb3JSZWYpOworICAg
IHJldHVybiBrZXk7Cit9CisKK1ZlY3Rvcjx1aW50OF90PiBzaWduYXR1cmVGb3JQcml2YXRlS2V5
KFJldGFpblB0cjxTZWNLZXlSZWY+IHByaXZhdGVLZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
YXV0aERhdGEsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY2xpZW50RGF0YUhhc2gpCit7CisgICAg
TlNNdXRhYmxlRGF0YSAqZGF0YVRvU2lnbiA9IFtOU011dGFibGVEYXRhIGRhdGFXaXRoQnl0ZXM6
YXV0aERhdGEuZGF0YSgpIGxlbmd0aDphdXRoRGF0YS5zaXplKCldOworICAgIFtkYXRhVG9TaWdu
IGFwcGVuZEJ5dGVzOmNsaWVudERhdGFIYXNoLmRhdGEoKSBsZW5ndGg6Y2xpZW50RGF0YUhhc2gu
c2l6ZSgpXTsKKyAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBzaWduYXR1cmU7CisgICAgeworICAg
ICAgICBDRkVycm9yUmVmIGVycm9yUmVmID0gbnVsbHB0cjsKKyAgICAgICAgc2lnbmF0dXJlID0g
YWRvcHRDRihTZWNLZXlDcmVhdGVTaWduYXR1cmUoKF9fYnJpZGdlIFNlY0tleVJlZikoKGlkKXBy
aXZhdGVLZXkuZ2V0KCkpLCBrU2VjS2V5QWxnb3JpdGhtRUNEU0FTaWduYXR1cmVNZXNzYWdlWDk2
MlNIQTI1NiwgKF9fYnJpZGdlIENGRGF0YVJlZilkYXRhVG9TaWduLCAmZXJyb3JSZWYpKTsKKyAg
ICAgICAgYXV0byByZXRhaW5FcnJvciA9IGFkb3B0Q0YoZXJyb3JSZWYpOworICAgICAgICBBU1NF
UlQoIWVycm9yUmVmKTsKKyAgICB9CisKKyAgICByZXR1cm4gdmVjdG9yRnJvbU5TRGF0YSgoTlNE
YXRhICopc2lnbmF0dXJlLmdldCgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNl
bmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vVmlydHVhbC9WaXJ0dWFsSGlkQ29ubmVjdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9WaXJ0dWFsL1ZpcnR1
YWxIaWRDb25uZWN0aW9uLmNwcAppbmRleCBjMzQ4YmMyMWUxY2QzMDRiNGM2MjY2MzEzMDhiOWNh
MzZhYmVjZGZhLi4xNTBmZTQyY2Q0Njc2OWM1MzY2MDkxZDZmNGZmNGMzMWVhNmZjNWY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9WaXJ0dWFs
L1ZpcnR1YWxIaWRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9WaXJ0dWFsL1ZpcnR1YWxIaWRDb25uZWN0aW9uLmNwcApAQCAtMjEy
LDE5ICsyMTIsMTcgQEAgdm9pZCBWaXJ0dWFsSGlkQ29ubmVjdGlvbjo6cGFyc2VSZXF1ZXN0KCkK
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjcmVk
ZW50aWFsLnVzZXJIYW5kbGUgPSBpdC0+c2Vjb25kLmdldEJ5dGVTdHJpbmcoKTsKLQotICAgICAg
ICAgICAgbWFuYWdlci0+YWRkQ3JlZGVudGlhbChtX2F1dGhlbnRpY2F0b3JJZCwgY3JlZGVudGlh
bCk7CiAgICAgICAgICAgICBhdXRvIGNyZWRlbnRpYWxJZEFuZENvc2VQdWJLZXkgPSBjcmVkZW50
aWFsSWRBbmRDb3NlUHViS2V5Rm9yUHJpdmF0ZUtleShwcml2YXRlS2V5KTsKKyAgICAgICAgICAg
IGNyZWRlbnRpYWwuY3JlZGVudGlhbElkID0gY3JlZGVudGlhbElkQW5kQ29zZVB1YktleS5maXJz
dDsKKyAgICAgICAgICAgIG1hbmFnZXItPmFkZENyZWRlbnRpYWwobV9hdXRoZW50aWNhdG9ySWQs
IGNyZWRlbnRpYWwpOwogCiAgICAgICAgICAgICBhdXRvIGF0dGVzdGVkQ3JlZGVudGlhbERhdGEg
PSBidWlsZEF0dGVzdGVkQ3JlZGVudGlhbERhdGEoVmVjdG9yPHVpbnQ4X3Q+KGFhZ3VpZExlbmd0
aCwgMCksIGNyZWRlbnRpYWxJZEFuZENvc2VQdWJLZXkuZmlyc3QsIGNyZWRlbnRpYWxJZEFuZENv
c2VQdWJLZXkuc2Vjb25kKTsKIAogICAgICAgICAgICAgYXV0byBhdXRoZW50aWNhdG9yRGF0YSA9
IGJ1aWxkQXV0aERhdGEoY3JlZGVudGlhbC5ycElkLCBmbGFnc0ZvckNvbmZpZyhtX2NvbmZpZ3Vy
YXRpb24pLCBjcmVkZW50aWFsLnNpZ25Db3VudCwgYXR0ZXN0ZWRDcmVkZW50aWFsRGF0YSk7CiAg
ICAgICAgICAgICBDQk9SVmFsdWU6Ok1hcFZhbHVlIHJlc3BvbnNlOworICAgICAgICAgICAgcmVz
cG9uc2VbQ0JPUlZhbHVlKDEpXSA9IENCT1JWYWx1ZSgibm9uZSIpOwogICAgICAgICAgICAgcmVz
cG9uc2VbQ0JPUlZhbHVlKDIpXSA9IENCT1JWYWx1ZShhdXRoZW50aWNhdG9yRGF0YSk7Ci0KICAg
ICAgICAgICAgIGF1dG8gYXR0T2JqID0gYnVpbGRBdHRlc3RhdGlvbk1hcChXVEZNb3ZlKGF1dGhl
bnRpY2F0b3JEYXRhKSwgIiIsIHsgfSwgQXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZTo6
Tm9uZSk7Ci0KLSAgICAgICAgICAgIHJlc3BvbnNlW0NCT1JWYWx1ZSgxKV0gPSBDQk9SVmFsdWUo
Im5vbmUiKTsKICAgICAgICAgICAgIHJlc3BvbnNlW0NCT1JWYWx1ZSgzKV0gPSBDQk9SVmFsdWUo
YXR0T2JqKTsKICAgICAgICAgICAgIGF1dG8gcGF5bG9hZCA9IENCT1JXcml0ZXI6OndyaXRlKENC
T1JWYWx1ZShyZXNwb25zZSkpOwogICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsK
QEAgLTIzMiw2ICsyMzAsOTMgQEAgdm9pZCBWaXJ0dWFsSGlkQ29ubmVjdGlvbjo6cGFyc2VSZXF1
ZXN0KCkKICAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoc3RhdGljX2Nhc3Q8dWludDhfdD4oZmlk
bzo6Q3RhcERldmljZVJlc3BvbnNlQ29kZTo6a1N1Y2Nlc3MpKTsKICAgICAgICAgICAgIGJ1ZmZl
ci5hcHBlbmRWZWN0b3IoKnBheWxvYWQpOwogCisgICAgICAgICAgICBhdXRvIG1lc3NhZ2UgPSBG
aWRvSGlkTWVzc2FnZTo6Y3JlYXRlKG1fcmVxdWVzdE1lc3NhZ2UtPmNoYW5uZWxJZCgpLCBGaWRv
SGlkRGV2aWNlQ29tbWFuZDo6a0Nib3IsIFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgICAgICBy
ZWNlaXZlSGlkTWVzc2FnZShXVEZNb3ZlKCptZXNzYWdlKSk7CisgICAgICAgIH0gZWxzZSBpZiAo
Y21kID09IEN0YXBSZXF1ZXN0Q29tbWFuZDo6a0F1dGhlbnRpY2F0b3JHZXRBc3NlcnRpb24pIHsK
KyAgICAgICAgICAgIGF1dG8gaXQgPSByZXF1ZXN0TWFwLT5nZXRNYXAoKS5maW5kKENCT1JWYWx1
ZShrQ3RhcEdldEFzc2VydGlvblJwSWRLZXkpKTsKKyAgICAgICAgICAgIGlmIChpdCA9PSByZXF1
ZXN0TWFwLT5nZXRNYXAoKS5lbmQoKSkgeworICAgICAgICAgICAgICAgIHJlY2lldmVSZXNwb25z
ZUNvZGUoQ3RhcERldmljZVJlc3BvbnNlQ29kZTo6a0N0YXAyRXJyTWlzc2luZ1BhcmFtZXRlcik7
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYXV0
byBycElkID0gaXQtPnNlY29uZC5nZXRTdHJpbmcoKTsKKyAgICAgICAgICAgICh2b2lkKXJwSWQ7
CisgICAgICAgICAgICBpdCA9IHJlcXVlc3RNYXAtPmdldE1hcCgpLmZpbmQoQ0JPUlZhbHVlKGtD
dGFwR2V0QXNzZXJ0aW9uQ2xpZW50RGF0YUhhc2hLZXkpKTsKKyAgICAgICAgICAgIGlmIChpdCA9
PSByZXF1ZXN0TWFwLT5nZXRNYXAoKS5lbmQoKSkgeworICAgICAgICAgICAgICAgIHJlY2lldmVS
ZXNwb25zZUNvZGUoQ3RhcERldmljZVJlc3BvbnNlQ29kZTo6a0N0YXAyRXJyTWlzc2luZ1BhcmFt
ZXRlcik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgYXV0byBjbGllbnREYXRhSGFzaCA9IGl0LT5zZWNvbmQuZ2V0Qnl0ZVN0cmluZygpOworICAg
ICAgICAgICAgKHZvaWQpY2xpZW50RGF0YUhhc2g7CisgICAgICAgICAgICBWZWN0b3I8VmVjdG9y
PHVpbnQ4X3Q+PiBhbGxvd0xpc3Q7CisgICAgICAgICAgICBpdCA9IHJlcXVlc3RNYXAtPmdldE1h
cCgpLmZpbmQoQ0JPUlZhbHVlKGtDdGFwR2V0QXNzZXJ0aW9uQWxsb3dMaXN0S2V5KSk7CisgICAg
ICAgICAgICBpZiAoaXQgIT0gcmVxdWVzdE1hcC0+Z2V0TWFwKCkuZW5kKCkpIHsKKyAgICAgICAg
ICAgICAgICBjb25zdCBhdXRvJiBjYm9yQWxsb3dMaXN0ID0gaXQtPnNlY29uZC5nZXRBcnJheSgp
OworICAgICAgICAgICAgICAgIGlmIChjYm9yQWxsb3dMaXN0LmlzRW1wdHkoKSkgeworICAgICAg
ICAgICAgICAgICAgICByZWNpZXZlUmVzcG9uc2VDb2RlKEN0YXBEZXZpY2VSZXNwb25zZUNvZGU6
OmtDdGFwMkVyckludmFsaWRPcHRpb24pOworICAgICAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBjYm9y
Q3JlZGVudGlhbCA6IGNib3JBbGxvd0xpc3QpIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byYg
Y3JlZE1hcCA9IGNib3JDcmVkZW50aWFsLmdldE1hcCgpOworICAgICAgICAgICAgICAgICAgICBh
dXRvIGl0ciA9IGNyZWRNYXAuZmluZChDQk9SVmFsdWUoZmlkbzo6a0VudGl0eUlkTWFwS2V5KSk7
CisgICAgICAgICAgICAgICAgICAgIGlmIChpdHIgPT0gY3JlZE1hcC5lbmQoKSB8fCAhaXRyLT5z
ZWNvbmQuaXNCeXRlU3RyaW5nKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lldmVS
ZXNwb25zZUNvZGUoQ3RhcERldmljZVJlc3BvbnNlQ29kZTo6a0N0YXAyRXJySW52YWxpZE9wdGlv
bik7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgYWxsb3dMaXN0LmFwcGVuZChpdHItPnNlY29uZC5nZXRC
eXRlU3RyaW5nKCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgaXQgPSByZXF1ZXN0TWFwLT5nZXRNYXAoKS5maW5kKENCT1JWYWx1ZShrQ3RhcEdldEFz
c2VydGlvblJlcXVlc3RPcHRpb25zS2V5KSk7CisgICAgICAgICAgICBpZiAoaXQgIT0gcmVxdWVz
dE1hcC0+Z2V0TWFwKCkuZW5kKCkpIHsKKyAgICAgICAgICAgICAgICBhdXRvJiBvcHRpb25NYXAg
PSBpdC0+c2Vjb25kLmdldE1hcCgpOworCisgICAgICAgICAgICAgICAgYXV0byBpdHIgPSBvcHRp
b25NYXAuZmluZChDQk9SVmFsdWUoa1VzZXJWZXJpZmljYXRpb25NYXBLZXkpKTsKKyAgICAgICAg
ICAgICAgICBpZiAoaXRyICE9IG9wdGlvbk1hcC5lbmQoKSkgeworICAgICAgICAgICAgICAgICAg
ICBhdXRvIHJlcXVpcmVVc2VyVmVyaWZpY2F0aW9uID0gaXRyLT5zZWNvbmQuZ2V0Qm9vbCgpOwor
ICAgICAgICAgICAgICAgICAgICBpZiAocmVxdWlyZVVzZXJWZXJpZmljYXRpb24gJiYgIW1fY29u
ZmlndXJhdGlvbi5oYXNVc2VyVmVyaWZpY2F0aW9uKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICByZWNpZXZlUmVzcG9uc2VDb2RlKEN0YXBEZXZpY2VSZXNwb25zZUNvZGU6OmtDdGFwMkVycklu
dmFsaWRPcHRpb24pOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChyZXF1aXJlVXNlclZlcmlmaWNh
dGlvbiAmJiAhbV9jb25maWd1cmF0aW9uLmlzVXNlclZlcmlmaWVkKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICByZWNpZXZlUmVzcG9uc2VDb2RlKEN0YXBEZXZpY2VSZXNwb25zZUNvZGU6OmtD
dGFwMkVyck9wZXJhdGlvbkRlbmllZCk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
ICAgICBpdHIgPSBvcHRpb25NYXAuZmluZChDQk9SVmFsdWUoa1VzZXJQcmVzZW5jZU1hcEtleSkp
OworICAgICAgICAgICAgICAgIGlmIChpdHIgIT0gb3B0aW9uTWFwLmVuZCgpKSB7CisgICAgICAg
ICAgICAgICAgICAgIGF1dG8gcmVxdWlyZVVzZXJQcmVzZW5jZSA9IGl0ci0+c2Vjb25kLmdldEJv
b2woKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJlcXVpcmVVc2VyUHJlc2VuY2UgJiYgIW1f
Y29uZmlndXJhdGlvbi5pc1VzZXJDb25zZW50aW5nKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICByZWNpZXZlUmVzcG9uc2VDb2RlKEN0YXBEZXZpY2VSZXNwb25zZUNvZGU6OmtDdGFwMkVyck9w
ZXJhdGlvbkRlbmllZCk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBhdXRvIG1hdGNoaW5nQ3JlZGVudGlhbHMgPSBtX21hbmFnZXItPmNyZWRlbnRpYWxzTWF0
Y2hpbmdMaXN0KG1fYXV0aGVudGljYXRvcklkLCBycElkLCBhbGxvd0xpc3QpOworICAgICAgICAg
ICAgaWYgKG1hdGNoaW5nQ3JlZGVudGlhbHMuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAg
cmVjaWV2ZVJlc3BvbnNlQ29kZShDdGFwRGV2aWNlUmVzcG9uc2VDb2RlOjprQ3RhcDJFcnJOb0Ny
ZWRlbnRpYWxzKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBhdXRvJiBjcmVkZW50aWFsID0gbWF0Y2hpbmdDcmVkZW50aWFsc1swXTsKKyAgICAg
ICAgICAgIENCT1JWYWx1ZTo6TWFwVmFsdWUgcmVzcG9uc2U7CisKKyAgICAgICAgICAgIHJlc3Bv
bnNlW0NCT1JWYWx1ZSgxKV0gPSBDQk9SVmFsdWUoYnVpbGRDcmVkZW50aWFsRGVzY3JpcHRvcihj
cmVkZW50aWFsLmNyZWRlbnRpYWxJZCkpOworICAgICAgICAgICAgYXV0byBrZXkgPSBwcml2YXRl
S2V5RnJvbUJhc2U2NChjcmVkZW50aWFsLnByaXZhdGVLZXkpOworICAgICAgICAgICAgYXV0byBj
cmVkZW50aWFsSWRBbmRDb3NlUHViS2V5ID0gY3JlZGVudGlhbElkQW5kQ29zZVB1YktleUZvclBy
aXZhdGVLZXkoa2V5KTsKKyAgICAgICAgICAgIGF1dG8gYXR0ZXN0ZWRDcmVkZW50aWFsRGF0YSA9
IGJ1aWxkQXR0ZXN0ZWRDcmVkZW50aWFsRGF0YShWZWN0b3I8dWludDhfdD4oYWFndWlkTGVuZ3Ro
LCAwKSwgY3JlZGVudGlhbElkQW5kQ29zZVB1YktleS5maXJzdCwgY3JlZGVudGlhbElkQW5kQ29z
ZVB1YktleS5zZWNvbmQpOworICAgICAgICAgICAgYXV0byBhdXRoRGF0YSA9IGJ1aWxkQXV0aERh
dGEocnBJZCwgZmxhZ3NGb3JDb25maWcobV9jb25maWd1cmF0aW9uKSwgY3JlZGVudGlhbC5zaWdu
Q291bnQsIGF0dGVzdGVkQ3JlZGVudGlhbERhdGEpOworICAgICAgICAgICAgcmVzcG9uc2VbQ0JP
UlZhbHVlKDIpXSA9IENCT1JWYWx1ZShhdXRoRGF0YSk7CisgICAgICAgICAgICByZXNwb25zZVtD
Qk9SVmFsdWUoMyldID0gQ0JPUlZhbHVlKHNpZ25hdHVyZUZvclByaXZhdGVLZXkoa2V5LCBhdXRo
RGF0YSwgY2xpZW50RGF0YUhhc2gpKTsKKyAgICAgICAgICAgIGlmIChjcmVkZW50aWFsLnVzZXJI
YW5kbGUpCisgICAgICAgICAgICAgICAgcmVzcG9uc2VbQ0JPUlZhbHVlKDQpXSA9IENCT1JWYWx1
ZShidWlsZFVzZXJFbnRpdHlNYXAoKmNyZWRlbnRpYWwudXNlckhhbmRsZSwgIiIsICIiKSk7Cisg
ICAgICAgICAgICByZXNwb25zZVtDQk9SVmFsdWUoNSldID0gQ0JPUlZhbHVlKChpbnQ2NF90KW1h
dGNoaW5nQ3JlZGVudGlhbHMuc2l6ZSgpKTsKKyAgICAgICAgICAgIGF1dG8gcGF5bG9hZCA9IENC
T1JXcml0ZXI6OndyaXRlKENCT1JWYWx1ZShyZXNwb25zZSkpOworICAgICAgICAgICAgVmVjdG9y
PHVpbnQ4X3Q+IGJ1ZmZlcjsKKyAgICAgICAgICAgIGJ1ZmZlci5yZXNlcnZlQ2FwYWNpdHkocGF5
bG9hZC0+c2l6ZSgpICsgMSk7CisgICAgICAgICAgICBidWZmZXIuYXBwZW5kKHN0YXRpY19jYXN0
PHVpbnQ4X3Q+KGZpZG86OkN0YXBEZXZpY2VSZXNwb25zZUNvZGU6OmtTdWNjZXNzKSk7CisgICAg
ICAgICAgICBidWZmZXIuYXBwZW5kVmVjdG9yKCpwYXlsb2FkKTsKKwogICAgICAgICAgICAgYXV0
byBtZXNzYWdlID0gRmlkb0hpZE1lc3NhZ2U6OmNyZWF0ZShtX3JlcXVlc3RNZXNzYWdlLT5jaGFu
bmVsSWQoKSwgRmlkb0hpZERldmljZUNvbW1hbmQ6OmtDYm9yLCBXVEZNb3ZlKGJ1ZmZlcikpOwog
ICAgICAgICAgICAgcmVjZWl2ZUhpZE1lc3NhZ2UoV1RGTW92ZSgqbWVzc2FnZSkpOwogICAgICAg
ICB9Cg==
</data>
<flag name="commit-queue"
          id="483347"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>