<?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>234180</bug_id>
          
          <creation_ts>2021-12-10 15:02:51 -0800</creation_ts>
          <short_desc>[WebAuthn] Allow same-site, cross-origin iframe get()</short_desc>
          <delta_ts>2022-03-02 16:30:34 -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>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>
          <dependson>234283</dependson>
    
    <dependson>234309</dependson>
          <blocked>222240</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="pascoe@apple.com">pascoe</reporter>
          <assigned_to name="pascoe@apple.com">pascoe</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1823014</commentid>
    <comment_count>0</comment_count>
    <who name="pascoe@apple.com">pascoe</who>
    <bug_when>2021-12-10 15:02:51 -0800</bug_when>
    <thetext>WebAuthn Level 2 specifies a feature policy: https://w3c.github.io/webauthn/#sctn-iframe-guidance, functionality to get credentials from a cross-origin iframe should be enabled if the iframe has the allow=&quot;publickey-credentials-get&quot; attribute/value pair.

This patch implements this functionality only for same-site, cross-origin i-frames.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823016</commentid>
    <comment_count>1</comment_count>
    <who name="pascoe@apple.com">pascoe</who>
    <bug_when>2021-12-10 15:03:16 -0800</bug_when>
    <thetext>rdar://85161142</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823028</commentid>
    <comment_count>2</comment_count>
      <attachid>446826</attachid>
    <who name="pascoe@apple.com">pascoe</who>
    <bug_when>2021-12-10 15:18:38 -0800</bug_when>
    <thetext>Created attachment 446826
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823578</commentid>
    <comment_count>3</comment_count>
      <attachid>446826</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2021-12-13 09:43:03 -0800</bug_when>
    <thetext>Comment on attachment 446826
Patch

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

I think this patch needs a bit of work before it&apos;s ready to land. Please adjust the same-site test, and switch from a boolean to a two-state enum that documents its purpose.

&gt; Source/WebCore/Modules/webauthn/AuthenticatorCoordinator.cpp:184
&gt; +        if (domain != RegistrableDomain(parentDocument-&gt;securityOrigin().data()))

You should use &quot;areRegistrableDomainsEqual&quot; from the RegistrableDomains header.

We identify same-site in Document like this:

    // Only prevent cross-site navigations.
    RefPtr targetDocument = targetFrame.document();
    if (targetDocument &amp;&amp; (targetDocument-&gt;securityOrigin().isSameOriginDomain(SecurityOrigin::create(destinationURL)) || areRegistrableDomainsEqual(targetDocument-&gt;url(), destinationURL)))
        return false;

You should probably use something like that to be consistent. It should also handle all the weird cases of data/Blob URLs and so forth properly.

&gt; Source/WebCore/Modules/webauthn/WebAuthenticationUtils.h:55
&gt; +WEBCORE_EXPORT Ref&lt;ArrayBuffer&gt; buildClientDataJson(ClientDataType /*type*/, const BufferSource&amp; challenge, const SecurityOrigin&amp; /*origin*/, const bool crossOrigin);

Instead of this boolean, we should create a two-state enum to represent this state. Something like WebAuthn::CrossOrigin::Yes/No, or WebAuthn::Scope::CrossOrigin/SameOrigin. There are many examples in the sources of this pattern.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823728</commentid>
    <comment_count>4</comment_count>
      <attachid>447053</attachid>
    <who name="pascoe@apple.com">pascoe</who>
    <bug_when>2021-12-13 13:38:52 -0800</bug_when>
    <thetext>Created attachment 447053
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823756</commentid>
    <comment_count>5</comment_count>
      <attachid>447053</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2021-12-13 14:22:16 -0800</bug_when>
    <thetext>Comment on attachment 447053
Patch

Looks great -- thank you for making those changes! r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823815</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-12-13 16:00:08 -0800</bug_when>
    <thetext>Committed r286993 (?): &lt;https://commits.webkit.org/r286993&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 447053.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823871</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2021-12-13 18:40:50 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 234283</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446826</attachid>
            <date>2021-12-10 15:18:38 -0800</date>
            <delta_ts>2021-12-13 13:38:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234180-20211210151837.patch</filename>
            <type>text/plain</type>
            <size>27600</size>
            <attacher name="pascoe@apple.com">pascoe</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2ODQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzBjOTg2ZDgyNjE5Y2I4
MjlkNmUyYjY4NTI4ZWZkZWY5YTliZjZhYi4uMDg1Y2ViMTY3MDdjOTFjZmQzOTk3ZTk2ZWRlYzAy
YzA1Mjc3Nzg1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDIxLTEyLTEwICBKIFBh
c2NvZSAgPGpfcGFzY29lQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIEFsbG93IHNh
bWUtc2l0ZSwgY3Jvc3Mtb3JpZ2luIGlmcmFtZSBnZXQoKQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MTgwCisgICAgICAgIHJkYXI6Ly84NTE2MTE0
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBX
ZWIgQXV0aGVudGljYXRpb24gbGV2ZWwgMiBzcGVjaWZpZXMgYSBmZWF0dXJlIHBvbGljeSB0byBh
bGxvdyBnZXQgY2FsbHMgaW4KKyAgICAgICAgY3Jvc3Mtb3JpZ2luIGktZnJhbWVzLiBUaGlzIHBh
dGNoIGltcGxlbWVudHMgdGhpcyBmZWF0dXJlIHBvbGljeSBwYXJ0aWFsbHkuIE9ubHkKKyAgICAg
ICAgc2FtZS1zaXRlLCBjcm9zcy1vcmlnaW4gaS1mcmFtZXMgYXJlIHN1cHBvcnRlZCBpbnN0ZWFk
LiBUaGlzIGlzIGZvciB0cmFja2luZyBwcmV2ZW50aW9uCisgICAgICAgIHB1cnBvc2VzLiBodHRw
czovL3czYy5naXRodWIuaW8vd2ViYXV0aG4vI3NjdG4taWZyYW1lLWd1aWRhbmNlCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBhbHNvIHN0YXJ0cyBwYXNzaW5nIENsaWVudERhdGFKU09OIGhhc2hlcyB0
byBBU0MgdG8gYXZvaWQgdGhlIHNpdHVhdGlvbgorICAgICAgICB3aGVyZSBXZWJLaXQgaW5jbHVk
ZXMgY3Jvc3NPcmlnaW4gb3Igb3RoZXIgZmllbGRzIGluIENsaWVudERhdGFKU09OIHRoYXQgQVND
IGlzCisgICAgICAgIHVuYXdhcmUgb2Ygd2hlbiBnZW5lcmF0aW5nIENsaWVudERhdGFKU09OLgor
CisgICAgICAgIEFkZGVkIGxheW91dCB0ZXN0IGNhc2VzIGZvciBzYW1lLXNpdGUsIGNyb3NzLW9y
aWdpbiBnZXQgY2FsbHMuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0
b3JDb29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3I6OmNyZWF0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpkb2VzSGF2ZVNhbWVTaXRl
QXNBbmNlc3RvcnMpOgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRvckNvb3JkaW5hdG9y
OjpkaXNjb3ZlckZyb21FeHRlcm5hbFNvdXJjZSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdXRobi9XZWJBdXRoZW50aWNhdGlvblV0aWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJ1
aWxkQ2xpZW50RGF0YUpzb24pOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vV2ViQXV0aGVu
dGljYXRpb25VdGlscy5oOgorICAgICAgICAqIGh0bWwvRmVhdHVyZVBvbGljeS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpwb2xpY3lUeXBlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpGZWF0dXJl
UG9saWN5OjpwYXJzZSk6CisgICAgICAgIChXZWJDb3JlOjpGZWF0dXJlUG9saWN5OjphbGxvd3Mg
Y29uc3QpOgorICAgICAgICAqIGh0bWwvRmVhdHVyZVBvbGljeS5oOgorCiAyMDIxLTEyLTEwICBB
bGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJRkNdIEVuYWJs
ZSBiaWRpIGhhbmRsaW5nIGZvciBjb250ZW50IHdpdGggaW5saW5lIGJveGVzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4
IDY1OGE0ZDJlMjQxNTZmNDQzYWI4NTZkMmFjNGJhYTkyZDc0ODgwM2UuLjRmNzg0NmMxZGM0NjY1
ZjM1ZDBmNTFlZGFmMjlhOWNmYTNmOTExZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIw
MjEtMTItMTAgIEogUGFzY29lICA8al9wYXNjb2VAYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJB
dXRobl0gQWxsb3cgc2FtZS1zaXRlLCBjcm9zcy1vcmlnaW4gaWZyYW1lIGdldCgpCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQxODAKKyAgICAgICAg
cmRhcjovLzg1MTYxMTQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhlIFdlYiBBdXRoZW50aWNhdGlvbiBsZXZlbCAyIHNwZWNpZmllcyBhIGZlYXR1
cmUgcG9saWN5IHRvIGFsbG93IGdldCBjYWxscyBpbgorICAgICAgICBjcm9zcy1vcmlnaW4gaS1m
cmFtZXMuIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyB0aGlzIGZlYXR1cmUgcG9saWN5IHBhcnRpYWxs
eS4gT25seQorICAgICAgICBzYW1lLXNpdGUsIGNyb3NzLW9yaWdpbiBpLWZyYW1lcyBhcmUgc3Vw
cG9ydGVkIGluc3RlYWQuIFRoaXMgaXMgZm9yIHRyYWNraW5nIHByZXZlbnRpb24KKyAgICAgICAg
cHVycG9zZXMuIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJhdXRobi8jc2N0bi1pZnJhbWUtZ3Vp
ZGFuY2UKKworICAgICAgICBUaGlzIHBhdGNoIGFsc28gc3RhcnRzIHBhc3NpbmcgQ2xpZW50RGF0
YUpTT04gaGFzaGVzIHRvIEFTQyB0byBhdm9pZCB0aGUgc2l0dWF0aW9uCisgICAgICAgIHdoZXJl
IFdlYktpdCBpbmNsdWRlcyBjcm9zc09yaWdpbiBvciBvdGhlciBmaWVsZHMgaW4gQ2xpZW50RGF0
YUpTT04gdGhhdCBBU0MgaXMKKyAgICAgICAgdW5hd2FyZSBvZiB3aGVuIGdlbmVyYXRpbmcgQ2xp
ZW50RGF0YUpTT04uCisKKyAgICAgICAgQWRkZWQgbGF5b3V0IHRlc3QgY2FzZXMgZm9yIHNhbWUt
c2l0ZSwgY3Jvc3Mtb3JpZ2luIGdldCBjYWxscy4KKworICAgICAgICAqIFBsYXRmb3JtL3NwaS9D
b2NvYS9BdXRoZW50aWNhdGlvblNlcnZpY2VzQ29yZVNQSS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbToKKyAgICAgICAgKHByb2R1
Y2VDbGllbnREYXRhSnNvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L0NvY29hL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5Lm1tOgorICAgICAgICAoV2Vi
S2l0Ojpjb25maWd1cmVSZWdpc3RyYXRpb25SZXF1ZXN0Q29udGV4dCk6CisgICAgICAgIChXZWJL
aXQ6OmNvbmZpZ3VyYXRpb25Bc3NlcnRpb25SZXF1ZXN0Q29udGV4dCk6CisgICAgICAgIChXZWJL
aXQ6OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5Ojpjb250ZXh0Rm9yUmVxdWVzdCk6
CisKIDIwMjEtMTItMTAgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFJFR1JFU1NJT04gKGlPUyAxNSk6IFNhZmFyaSBsb3NlcyBOZXR3b3JrIGFjY2VzcyB3aGVu
IGVzdGFibGlzaGluZyBXZWJSVEMgc2Vzc2lvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwCmluZGV4
IDQ5MGY2NWFlMmUxNTVlMThhY2U4YzM1MmY2MWQ0MDg0ZGZjOTBmZjEuLmIzODQ0MzEzYTU2ZDU1
OGE3OTcwZmNkZTk5YjJhYjE2ZDZkMmI1ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAKQEAg
LTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQu
aCIKICNpbmNsdWRlICJBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhLmgiCiAjaW5jbHVkZSAiRG9j
dW1lbnQuaCIKKyNpbmNsdWRlICJGZWF0dXJlUG9saWN5LmgiCiAjaW5jbHVkZSAiSlNCYXNpY0Ny
ZWRlbnRpYWwuaCIKICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUg
IlB1YmxpY0tleUNyZWRlbnRpYWwuaCIKQEAgLTE0OCw3ICsxNDksNyBAQCB2b2lkIEF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvcjo6Y3JlYXRlKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwgY29uc3Qg
UHVibGljS2V5QwogICAgIG9wdGlvbnMuZXh0ZW5zaW9ucyA9IEF1dGhlbnRpY2F0aW9uRXh0ZW5z
aW9uc0NsaWVudElucHV0cyB7IFN0cmluZygpLCBwcm9jZXNzR29vZ2xlTGVnYWN5QXBwSWRTdXBw
b3J0RXh0ZW5zaW9uKG9wdGlvbnMuZXh0ZW5zaW9ucywgb3B0aW9ucy5ycC5pZCkgfTsKIAogICAg
IC8vIFN0ZXAgMTMtMTUuCi0gICAgYXV0byBjbGllbnREYXRhSnNvbiA9IGJ1aWxkQ2xpZW50RGF0
YUpzb24oQ2xpZW50RGF0YVR5cGU6OkNyZWF0ZSwgb3B0aW9ucy5jaGFsbGVuZ2UsIGNhbGxlck9y
aWdpbik7CisgICAgYXV0byBjbGllbnREYXRhSnNvbiA9IGJ1aWxkQ2xpZW50RGF0YUpzb24oQ2xp
ZW50RGF0YVR5cGU6OkNyZWF0ZSwgb3B0aW9ucy5jaGFsbGVuZ2UsIGNhbGxlck9yaWdpbiwgIXNh
bWVPcmlnaW5XaXRoQW5jZXN0b3JzKTsKICAgICBhdXRvIGNsaWVudERhdGFKc29uSGFzaCA9IGJ1
aWxkQ2xpZW50RGF0YUpzb25IYXNoKGNsaWVudERhdGFKc29uKTsKIAogICAgIC8vIFN0ZXAgNCwg
MTctMjEuCkBAIC0xNzUsNiArMTc2LDE3IEBAIHZvaWQgQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
OjpjcmVhdGUoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBQdWJsaWNLZXlDCiAgICAg
bV9jbGllbnQtPm1ha2VDcmVkZW50aWFsKCpmcmFtZSwgY2FsbGVyT3JpZ2luLCBjbGllbnREYXRh
SnNvbkhhc2gsIG9wdGlvbnMsIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAorc3RhdGljIGJvb2wg
ZG9lc0hhdmVTYW1lU2l0ZUFzQW5jZXN0b3JzKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkKK3sK
KyAgICBhdXRvJiBvcmlnaW4gPSBkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpOworICAgIFJlZ2lz
dHJhYmxlRG9tYWluIGRvbWFpbiB7IG9yaWdpbi5kYXRhKCkgfTsKKyAgICBmb3IgKGF1dG8gKnBh
cmVudERvY3VtZW50ID0gZG9jdW1lbnQucGFyZW50RG9jdW1lbnQoKTsgcGFyZW50RG9jdW1lbnQ7
IHBhcmVudERvY3VtZW50ID0gcGFyZW50RG9jdW1lbnQtPnBhcmVudERvY3VtZW50KCkpIHsKKyAg
ICAgICAgaWYgKGRvbWFpbiAhPSBSZWdpc3RyYWJsZURvbWFpbihwYXJlbnREb2N1bWVudC0+c2Vj
dXJpdHlPcmlnaW4oKS5kYXRhKCkpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OmRp
c2NvdmVyRnJvbUV4dGVybmFsU291cmNlKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwgY29uc3Qg
UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiBvcHRpb25zLCBib29sIHNhbWVPcmln
aW5XaXRoQW5jZXN0b3JzLCBSZWZQdHI8QWJvcnRTaWduYWw+JiYgYWJvcnRTaWduYWwsIENyZWRl
bnRpYWxQcm9taXNlJiYgcHJvbWlzZSkgY29uc3QKIHsKICAgICB1c2luZyBuYW1lc3BhY2UgQXV0
aGVudGljYXRvckNvb3JkaW5hdG9ySW50ZXJuYWw7CkBAIC0xODUsNyArMTk3LDggQEAgdm9pZCBB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OmRpc2NvdmVyRnJvbUV4dGVybmFsU291cmNlKGNvbnN0
IERvY3VtZW50JiBkb2N1bWUKICAgICAvLyBUaGUgZm9sbG93aW5nIGltcGxlbWVudHMgaHR0cHM6
Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLyNjcmVhdGVDcmVkZW50aWFsIGFzIG9mIDUgRGVjZW1i
ZXIgMjAxNy4KICAgICAvLyBTdGVwIDEsIDMsIDEzIGFyZSBoYW5kbGVkIGJ5IHRoZSBjYWxsZXIu
CiAgICAgLy8gU3RlcCAyLgotICAgIGlmICghc2FtZU9yaWdpbldpdGhBbmNlc3RvcnMpIHsKKyAg
ICAvLyBUaGlzIGltcGxlbWVudHMgaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI3Nj
dG4tcGVybWlzc2lvbnMtcG9saWN5IGV4Y2VwdCBvbmx5IHNhbWUtc2l0ZSwgY3Jvc3Mtb3JpZ2lu
IGlzIHBlcm1pdHRlZC4KKyAgICBpZiAoIXNhbWVPcmlnaW5XaXRoQW5jZXN0b3JzICYmICEoaXNG
ZWF0dXJlUG9saWN5QWxsb3dlZEJ5RG9jdW1lbnRBbmRBbGxPd25lcnMoRmVhdHVyZVBvbGljeTo6
VHlwZTo6UHVibGlja2V5Q3JlZGVudGlhbHNHZXRSdWxlLCBkb2N1bWVudCwgTG9nRmVhdHVyZVBv
bGljeUZhaWx1cmU6Ok5vKSAmJiBkb2VzSGF2ZVNhbWVTaXRlQXNBbmNlc3RvcnMoZG9jdW1lbnQp
KSkgewogICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBOb3RBbGxvd2VkRXJyb3Is
ICJUaGUgb3JpZ2luIG9mIHRoZSBkb2N1bWVudCBpcyBub3QgdGhlIHNhbWUgYXMgaXRzIGFuY2Vz
dG9ycy4iX3MgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yMTksNyArMjMyLDcgQEAg
dm9pZCBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OmRpc2NvdmVyRnJvbUV4dGVybmFsU291cmNl
KGNvbnN0IERvY3VtZW50JiBkb2N1bWUKICAgICB9CiAKICAgICAvLyBTdGVwIDEwLTEyLgotICAg
IGF1dG8gY2xpZW50RGF0YUpzb24gPSBidWlsZENsaWVudERhdGFKc29uKENsaWVudERhdGFUeXBl
OjpHZXQsIG9wdGlvbnMuY2hhbGxlbmdlLCBjYWxsZXJPcmlnaW4pOworICAgIGF1dG8gY2xpZW50
RGF0YUpzb24gPSBidWlsZENsaWVudERhdGFKc29uKENsaWVudERhdGFUeXBlOjpHZXQsIG9wdGlv
bnMuY2hhbGxlbmdlLCBjYWxsZXJPcmlnaW4sICFzYW1lT3JpZ2luV2l0aEFuY2VzdG9ycyk7CiAg
ICAgYXV0byBjbGllbnREYXRhSnNvbkhhc2ggPSBidWlsZENsaWVudERhdGFKc29uSGFzaChjbGll
bnREYXRhSnNvbik7CiAKICAgICAvLyBTdGVwIDQsIDE0LTE5LgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9XZWJBdXRoZW50aWNhdGlvblV0aWxzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vV2ViQXV0aGVudGljYXRpb25VdGlscy5jcHAK
aW5kZXggYzhlMGQyODJkNTNiMDg2ZDIxOTQ3ZmZlMTBmZDhmNjk4ZWQwNDg5Ni4uZDE2NGZiNDMw
MmZhNjYwODc2MmY3ZDJhMjEwMWU5MTViOTI0MjFjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdXRobi9XZWJBdXRoZW50aWNhdGlvblV0aWxzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1dlYkF1dGhlbnRpY2F0aW9uVXRpbHMuY3BwCkBA
IC0xMzQsNyArMTM0LDcgQEAgVmVjdG9yPHVpbnQ4X3Q+IGJ1aWxkQXR0ZXN0YXRpb25PYmplY3Qo
VmVjdG9yPHVpbnQ4X3Q+JiYgYXV0aERhdGEsIFN0cmluZyYmIGZvcm0KIH0KIAogLy8gRklYTUUo
MTgxOTQ4KTogQWRkIHRva2VuIGJpbmRpbmcgSUQuCi1SZWY8QXJyYXlCdWZmZXI+IGJ1aWxkQ2xp
ZW50RGF0YUpzb24oQ2xpZW50RGF0YVR5cGUgdHlwZSwgY29uc3QgQnVmZmVyU291cmNlJiBjaGFs
bGVuZ2UsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pCitSZWY8QXJyYXlCdWZmZXI+IGJ1
aWxkQ2xpZW50RGF0YUpzb24oQ2xpZW50RGF0YVR5cGUgdHlwZSwgY29uc3QgQnVmZmVyU291cmNl
JiBjaGFsbGVuZ2UsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIGNvbnN0IGJvb2wgY3Jv
c3NPcmlnaW4pCiB7CiAgICAgYXV0byBvYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwog
ICAgIHN3aXRjaCAodHlwZSkgewpAQCAtMTQ3LDYgKzE0Nyw4IEBAIFJlZjxBcnJheUJ1ZmZlcj4g
YnVpbGRDbGllbnREYXRhSnNvbihDbGllbnREYXRhVHlwZSB0eXBlLCBjb25zdCBCdWZmZXJTb3Vy
Y2UmIGNoCiAgICAgfQogICAgIG9iamVjdC0+c2V0U3RyaW5nKCJjaGFsbGVuZ2UiX3MsIGJhc2U2
NFVSTEVuY29kZVRvU3RyaW5nKGNoYWxsZW5nZS5kYXRhKCksIGNoYWxsZW5nZS5sZW5ndGgoKSkp
OwogICAgIG9iamVjdC0+c2V0U3RyaW5nKCJvcmlnaW4iX3MsIG9yaWdpbi50b1Jhd1N0cmluZygp
KTsKKyAgICBpZiAoY3Jvc3NPcmlnaW4pCisgICAgICAgIG9iamVjdC0+c2V0Qm9vbGVhbigiY3Jv
c3NPcmlnaW4iX3MsIGNyb3NzT3JpZ2luKTsKIAogICAgIGF1dG8gdXRmOEpTT05TdHJpbmcgPSBv
YmplY3QtPnRvSlNPTlN0cmluZygpLnV0ZjgoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdXRobi9XZWJBdXRoZW50aWNhdGlvblV0aWxzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1dGhuL1dlYkF1dGhlbnRpY2F0aW9uVXRpbHMuaAppbmRleCBhMDc5
MjExZGViMTdjOGUyNmJiZjFlODlkMzIwZjExYzg1OTM3ZTU3Li5lNDYyMTg4NGUzNDc2M2RkZjg4
YzcyMzBlZGU2YWY4ZGVlNzFhM2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1dGhuL1dlYkF1dGhlbnRpY2F0aW9uVXRpbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1dGhuL1dlYkF1dGhlbnRpY2F0aW9uVXRpbHMuaApAQCAtNTIsNyArNTIsNyBA
QCBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gYnVpbGRBdXRoRGF0YShjb25zdCBTdHJp
bmcmIHJwSWQsIGNvbnN0IHVpbnQ4X3QgZgogLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1
dGhuLyNhdHRlc3RhdGlvbi1vYmplY3QKIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBi
dWlsZEF0dGVzdGF0aW9uT2JqZWN0KFZlY3Rvcjx1aW50OF90PiYmIGF1dGhEYXRhLCBTdHJpbmcm
JiBmb3JtYXQsIGNib3I6OkNCT1JWYWx1ZTo6TWFwVmFsdWUmJiBzdGF0ZW1lbnRNYXAsIGNvbnN0
IEF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2UmKTsKIAotV0VCQ09SRV9FWFBPUlQgUmVm
PEFycmF5QnVmZmVyPiBidWlsZENsaWVudERhdGFKc29uKENsaWVudERhdGFUeXBlIC8qdHlwZSov
LCBjb25zdCBCdWZmZXJTb3VyY2UmIGNoYWxsZW5nZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIC8q
b3JpZ2luKi8pOworV0VCQ09SRV9FWFBPUlQgUmVmPEFycmF5QnVmZmVyPiBidWlsZENsaWVudERh
dGFKc29uKENsaWVudERhdGFUeXBlIC8qdHlwZSovLCBjb25zdCBCdWZmZXJTb3VyY2UmIGNoYWxs
ZW5nZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIC8qb3JpZ2luKi8sIGNvbnN0IGJvb2wgY3Jvc3NP
cmlnaW4pOwogCiBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gYnVpbGRDbGllbnREYXRh
SnNvbkhhc2goY29uc3QgQXJyYXlCdWZmZXImIGNsaWVudERhdGFKc29uKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GZWF0dXJlUG9saWN5LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRmVhdHVyZVBvbGljeS5jcHAKaW5kZXggNTYwMGNhMWFiYjA0Yjk0YmJmZmM0ZmVkNTA0
MzViMTM0NTI5NjNlNi4uNTg0OGQwYWI5YzJkNzU2NGYwOGY0ODc1MmI5MzVlMTgxMGIxMTgxNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GZWF0dXJlUG9saWN5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0ZlYXR1cmVQb2xpY3kuY3BwCkBAIC02Nyw2ICs2NywxMCBAQCBz
dGF0aWMgY29uc3QgY2hhciogcG9saWN5VHlwZU5hbWUoRmVhdHVyZVBvbGljeTo6VHlwZSB0eXBl
KQogICAgIGNhc2UgRmVhdHVyZVBvbGljeTo6VHlwZTo6TWFnbmV0b21ldGVyOgogICAgICAgICBy
ZXR1cm4gIk1hZ25ldG9tZXRlciI7CiAjZW5kaWYKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorICAg
IGNhc2UgRmVhdHVyZVBvbGljeTo6VHlwZTo6UHVibGlja2V5Q3JlZGVudGlhbHNHZXRSdWxlOgor
ICAgICAgICByZXR1cm4gIlB1YmxpY2tleUNyZWRlbnRpYWxzR2V0IjsKKyNlbmRpZgogI2lmIEVO
QUJMRShXRUJYUikKICAgICBjYXNlIEZlYXR1cmVQb2xpY3k6OlR5cGU6OlhSU3BhdGlhbFRyYWNr
aW5nOgogICAgICAgICByZXR1cm4gIlhSU3BhdGlhbFRyYWNraW5nIjsKQEAgLTE4NCw2ICsxODgs
OSBAQCBGZWF0dXJlUG9saWN5IEZlYXR1cmVQb2xpY3k6OnBhcnNlKERvY3VtZW50JiBkb2N1bWVu
dCwgY29uc3QgSFRNTElGcmFtZUVsZW1lbnQmCiAgICAgYm9vbCBpc0FjY2VsZXJvbWV0ZXJJbml0
aWFsaXplZCA9IGZhbHNlOwogICAgIGJvb2wgaXNNYWduZXRvbWV0ZXJJbml0aWFsaXplZCA9IGZh
bHNlOwogI2VuZGlmCisjaWYgRU5BQkxFKFdFQl9BVVRITikKKyAgICBib29sIGlzUHVibGlja2V5
Q3JlZGVudGlhbHNHZXRJbml0aWFsaXplZCA9IGZhbHNlOworI2VuZGlmCiAjaWYgRU5BQkxFKFdF
QlhSKQogICAgIGJvb2wgaXNYUlNwYXRpYWxUcmFja2luZ0luaXRpYWxpemVkID0gZmFsc2U7CiAj
ZW5kaWYKQEAgLTI1MSw2ICsyNTgsMTMgQEAgRmVhdHVyZVBvbGljeSBGZWF0dXJlUG9saWN5Ojpw
YXJzZShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IEhUTUxJRnJhbWVFbGVtZW50JgogICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgIH0KICNlbmRpZgorI2lmIEVOQUJMRShXRUJfQVVUSE4p
CisgICAgICAgIGlmIChpdGVtLnN0YXJ0c1dpdGgoInB1YmxpY2tleS1jcmVkZW50aWFscy1nZXQi
KSkgeworICAgICAgICAgICAgaXNQdWJsaWNrZXlDcmVkZW50aWFsc0dldEluaXRpYWxpemVkID0g
dHJ1ZTsKKyAgICAgICAgICAgIHVwZGF0ZUxpc3QoZG9jdW1lbnQsIHBvbGljeS5tX3B1YmxpY2tl
eUNyZWRlbnRpYWxzR2V0UnVsZSwgaXRlbS5zdWJzdHJpbmcoMjYpKTsKKyAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICB9CisjZW5kaWYKICNpZiBFTkFCTEUoV0VCWFIpCiAgICAgICAgIGlm
IChpdGVtLnN0YXJ0c1dpdGgoInhyLXNwYXRpYWwtdHJhY2tpbmciKSkgewogICAgICAgICAgICAg
aXNYUlNwYXRpYWxUcmFja2luZ0luaXRpYWxpemVkID0gdHJ1ZTsKQEAgLTI4Myw2ICsyOTcsMTAg
QEAgRmVhdHVyZVBvbGljeSBGZWF0dXJlUG9saWN5OjpwYXJzZShEb2N1bWVudCYgZG9jdW1lbnQs
IGNvbnN0IEhUTUxJRnJhbWVFbGVtZW50JgogICAgIGlmICghaXNNYWduZXRvbWV0ZXJJbml0aWFs
aXplZCkKICAgICAgICAgcG9saWN5Lm1fbWFnbmV0b21ldGVyUnVsZS5hbGxvd2VkTGlzdC5hZGQo
ZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkpOwogI2VuZGlmCisjaWYgRU5BQkxFKFdF
Ql9BVVRITikKKyAgICBpZiAoIWlzUHVibGlja2V5Q3JlZGVudGlhbHNHZXRJbml0aWFsaXplZCkK
KyAgICAgICAgcG9saWN5Lm1fcHVibGlja2V5Q3JlZGVudGlhbHNHZXRSdWxlLmFsbG93ZWRMaXN0
LmFkZChkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSk7CisjZW5kaWYKICNpZiBFTkFC
TEUoV0VCWFIpCiAgICAgaWYgKCFpc1hSU3BhdGlhbFRyYWNraW5nSW5pdGlhbGl6ZWQpCiAgICAg
ICAgIHBvbGljeS5tX3hyU3BhdGlhbFRyYWNraW5nUnVsZS5hbGxvd2VkTGlzdC5hZGQoZG9jdW1l
bnQuc2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkpOwpAQCAtMzM4LDYgKzM1NiwxMCBAQCBib29sIEZl
YXR1cmVQb2xpY3k6OmFsbG93cyhUeXBlIHR5cGUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYg
b3JpZ2luKSBjb25zdAogICAgIGNhc2UgVHlwZTo6TWFnbmV0b21ldGVyOgogICAgICAgICByZXR1
cm4gaXNBbGxvd2VkQnlGZWF0dXJlUG9saWN5KG1fbWFnbmV0b21ldGVyUnVsZSwgb3JpZ2luKTsK
ICNlbmRpZgorI2lmIEVOQUJMRShXRUJfQVVUSE4pCisgICAgY2FzZSBUeXBlOjpQdWJsaWNrZXlD
cmVkZW50aWFsc0dldFJ1bGU6CisgICAgICAgIHJldHVybiBpc0FsbG93ZWRCeUZlYXR1cmVQb2xp
Y3kobV9wdWJsaWNrZXlDcmVkZW50aWFsc0dldFJ1bGUsIG9yaWdpbik7CisjZW5kaWYKICNpZiBF
TkFCTEUoV0VCWFIpCiAgICAgY2FzZSBUeXBlOjpYUlNwYXRpYWxUcmFja2luZzoKICAgICAgICAg
cmV0dXJuIGlzQWxsb3dlZEJ5RmVhdHVyZVBvbGljeShtX3hyU3BhdGlhbFRyYWNraW5nUnVsZSwg
b3JpZ2luKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmVhdHVyZVBvbGljeS5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9GZWF0dXJlUG9saWN5LmgKaW5kZXggZTY0MGY4YTVkNzIz
ZGUwMWU5YTY0YjUxMDY2NmI5M2E2Nzk3YTc5Mi4uMjhlZmEzMTU4NTEwOTAzMWI5NzM0ZDBmMTIz
NTFmOTNkZWJlMzQ4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GZWF0dXJlUG9s
aWN5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GZWF0dXJlUG9saWN5LmgKQEAgLTUzLDYg
KzUzLDkgQEAgcHVibGljOgogICAgICAgICBBY2NlbGVyb21ldGVyLAogICAgICAgICBNYWduZXRv
bWV0ZXIsCiAjZW5kaWYKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorICAgICAgICBQdWJsaWNrZXlD
cmVkZW50aWFsc0dldFJ1bGUsCisjZW5kaWYKICNpZiBFTkFCTEUoV0VCWFIpCiAgICAgICAgIFhS
U3BhdGlhbFRyYWNraW5nLAogI2VuZGlmCkBAIC04MSw2ICs4NCw5IEBAIHByaXZhdGU6CiAgICAg
QWxsb3dSdWxlIG1fYWNjZWxlcm9tZXRlclJ1bGU7CiAgICAgQWxsb3dSdWxlIG1fbWFnbmV0b21l
dGVyUnVsZTsKICNlbmRpZgorI2lmIEVOQUJMRShXRUJfQVVUSE4pCisgICAgQWxsb3dSdWxlIG1f
cHVibGlja2V5Q3JlZGVudGlhbHNHZXRSdWxlOworI2VuZGlmCiAjaWYgRU5BQkxFKFdFQlhSKQog
ICAgIEFsbG93UnVsZSBtX3hyU3BhdGlhbFRyYWNraW5nUnVsZTsKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvQ29jb2EvQXV0aGVudGljYXRpb25TZXJ2aWNl
c0NvcmVTUEkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL0NvY29hL0F1dGhlbnRpY2F0
aW9uU2VydmljZXNDb3JlU1BJLmgKaW5kZXggMzk0ODIyZDU1MGU5NTJhMmVkOTdhOGIyNmNiNTVk
MTI2NzExYjE3ZC4uZDZhYzY4NTY3YjZhOGI5MjgxMjRkNDYzZTA0ODM4ZDdjMTlkNDUxOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvQ29jb2EvQXV0aGVudGljYXRpb25T
ZXJ2aWNlc0NvcmVTUEkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9Db2NvYS9B
dXRoZW50aWNhdGlvblNlcnZpY2VzQ29yZVNQSS5oCkBAIC0xMDcsNyArMTA3LDggQEAgdHlwZWRl
ZiBOU19FTlVNKE5TSW50ZWdlciwgQVNDU2VjdXJpdHlLZXlQdWJsaWNLZXlDcmVkZW50aWFsS2lu
ZCkgewogCiBAaW50ZXJmYWNlIEFTQ1B1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMg
OiBOU09iamVjdCA8TlNTZWN1cmVDb2Rpbmc+CiAKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5
KSBOU0RhdGEgKmNoYWxsZW5nZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBudWxsYWJsZSwgY29w
eSkgTlNEYXRhICpjaGFsbGVuZ2U7CitAcHJvcGVydHkgKG5vbmF0b21pYywgbnVsbGFibGUsIGNv
cHkpIE5TRGF0YSAqY2xpZW50RGF0YUhhc2g7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkg
TlNTdHJpbmcgKnJlbHlpbmdQYXJ0eUlkZW50aWZpZXI7CiBAcHJvcGVydHkgKG5vbmF0b21pYywg
Y29weSkgTlNTdHJpbmcgKnVzZXJOYW1lOwogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5T
RGF0YSAqdXNlcklkZW50aWZpZXI7CkBAIC0xMTgsNiArMTE5LDEzIEBAIHR5cGVkZWYgTlNfRU5V
TShOU0ludGVnZXIsIEFTQ1NlY3VyaXR5S2V5UHVibGljS2V5Q3JlZGVudGlhbEtpbmQpIHsKIAog
QGVuZAogCitAaW50ZXJmYWNlIEFTQ1B1YmxpY0tleUNyZWRlbnRpYWxBc3NlcnRpb25PcHRpb25z
IDogTlNPYmplY3QgPE5TU2VjdXJlQ29kaW5nPgorQHByb3BlcnR5IChub25hdG9taWMsIGNvcHks
IHJlYWRvbmx5KSBOU1N0cmluZyAqcmVseWluZ1BhcnR5SWRlbnRpZmllcjsKK0Bwcm9wZXJ0eSAo
bm9uYXRvbWljLCBudWxsYWJsZSwgY29weSwgcmVhZG9ubHkpIE5TRGF0YSAqY2hhbGxlbmdlOwor
QHByb3BlcnR5IChub25hdG9taWMsIG51bGxhYmxlLCBjb3B5KSBOU0RhdGEgKmNsaWVudERhdGFI
YXNoOworQHByb3BlcnR5IChub25hdG9taWMsIG51bGxhYmxlLCByZWFkb25seSwgY29weSkgTlNT
dHJpbmcgKnVzZXJWZXJpZmljYXRpb25QcmVmZXJlbmNlOworQGVuZAorCiBAaW50ZXJmYWNlIEFT
Q1NlY3VyaXR5S2V5UHVibGljS2V5Q3JlZGVudGlhbExvZ2luQ2hvaWNlIDogTlNPYmplY3QgPEFT
Q0xvZ2luQ2hvaWNlUHJvdG9jb2w+CiAKIC0gKGluc3RhbmNldHlwZSlpbml0UmVnaXN0cmF0aW9u
Q2hvaWNlV2l0aE9wdGlvbnM6KEFTQ1B1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMg
KilvcHRpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQppbmRleCBlNWY5ZDZlNGY3MTFj
ZmFkMDE4MTNmNTRhMjQ4MTIwZTdjY2YzMGY2Li45Yzk1ZjA2ZDY1YTA4NWEyNGEyOGEyZGI4ZjM1
ZWU2NTMxNWFjYzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQpAQCAtODcsNyArODcs
NyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TRGF0YT4gcHJvZHVjZUNsaWVudERhdGFKc29uKF9XS1dl
YkF1dGhlbnRpY2F0aW9uVHlwZSB0eXBlLCBOUwogICAgIGF1dG8gY2hhbGxlbmdlQnVmZmVyID0g
QXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihj
aGFsbGVuZ2UuYnl0ZXMpLCBjaGFsbGVuZ2UubGVuZ3RoKTsKICAgICBhdXRvIHNlY3VyaXR5T3Jp
Z2luID0gV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcob3JpZ2luKTsK
IAotICAgIGF1dG8gY2xpZW50RGF0YUpzb24gPSBidWlsZENsaWVudERhdGFKc29uKGNsaWVudERh
dGFUeXBlLCBXZWJDb3JlOjpCdWZmZXJTb3VyY2UoY2hhbGxlbmdlQnVmZmVyKSwgc2VjdXJpdHlP
cmlnaW4pOworICAgIGF1dG8gY2xpZW50RGF0YUpzb24gPSBidWlsZENsaWVudERhdGFKc29uKGNs
aWVudERhdGFUeXBlLCBXZWJDb3JlOjpCdWZmZXJTb3VyY2UoY2hhbGxlbmdlQnVmZmVyKSwgc2Vj
dXJpdHlPcmlnaW4sIGZhbHNlIC8qY3Jvc3NPcmlnaW4qLyk7CiAgICAgcmV0dXJuIGFkb3B0TlMo
W1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXM6Y2xpZW50RGF0YUpzb24tPmRhdGEoKSBsZW5n
dGg6Y2xpZW50RGF0YUpzb24tPmJ5dGVMZW5ndGgoKV0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3JQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5Lm1tCmluZGV4
IDNmMDljMGQ3MDAwZDMwZjZkNDAzYWEzNzI5YzlhOThkZDI5MjRiOTQuLjNiMjE4M2UyZTVhYjlk
MGY5MmI5Yzk2NjViYWJjNzk2YjdlOGEzNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRv
clByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L0NvY29hL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5Lm1tCkBAIC0xNDUsNyArMTQ1
LDcgQEAgc3RhdGljIGlubGluZSBSZXRhaW5QdHI8QVNDUHVibGljS2V5Q3JlZGVudGlhbERlc2Ny
aXB0b3I+IHRvQVNDRGVzY3JpcHRvcihQdWJsaWMKICAgICByZXR1cm4gYWRvcHROUyhbYWxsb2NB
U0NQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvckluc3RhbmNlKCkgaW5pdFdpdGhDcmVkZW50
aWFsSUQ6V2ViQ29yZTo6dG9OU0RhdGEoZGVzY3JpcHRvci5pZCkuZ2V0KCkgdHJhbnNwb3J0czp0
cmFuc3BvcnRzLmdldCgpXSk7CiB9CiAKLXN0YXRpYyBSZXRhaW5QdHI8QVNDQ3JlZGVudGlhbFJl
cXVlc3RDb250ZXh0PiBjb25maWd1cmVSZWdpc3RyYXRpb25SZXF1ZXN0Q29udGV4dChjb25zdCBQ
dWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiBvcHRpb25zKQorc3RhdGljIFJldGFp
blB0cjxBU0NDcmVkZW50aWFsUmVxdWVzdENvbnRleHQ+IGNvbmZpZ3VyZVJlZ2lzdHJhdGlvblJl
cXVlc3RDb250ZXh0KGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmIG9w
dGlvbnMsIE5TRGF0YSAqaGFzaCkKIHsKICAgICBBU0NDcmVkZW50aWFsUmVxdWVzdFR5cGVzIHJl
cXVlc3RUeXBlcyA9IEFTQ0NyZWRlbnRpYWxSZXF1ZXN0VHlwZVBsYXRmb3JtUHVibGljS2V5UmVn
aXN0cmF0aW9uIHwgQVNDQ3JlZGVudGlhbFJlcXVlc3RUeXBlU2VjdXJpdHlLZXlQdWJsaWNLZXlS
ZWdpc3RyYXRpb247CiAKQEAgLTE2OSw3ICsxNjksMTAgQEAgc3RhdGljIFJldGFpblB0cjxBU0ND
cmVkZW50aWFsUmVxdWVzdENvbnRleHQ+IGNvbmZpZ3VyZVJlZ2lzdHJhdGlvblJlcXVlc3RDb250
ZXgKIAogICAgIGF1dG8gY3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyA9IGFkb3B0TlMoW2FsbG9j
QVNDUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uc0luc3RhbmNlKCkgaW5pdF0pOwog
Ci0gICAgW2NyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMgc2V0Q2hhbGxlbmdlOldlYkNvcmU6OnRv
TlNEYXRhKG9wdGlvbnMuY2hhbGxlbmdlKS5nZXQoKV07CisgICAgaWYgKFtjcmVkZW50aWFsQ3Jl
YXRpb25PcHRpb25zIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0Q2xpZW50RGF0YUhh
c2g6KV0pCisgICAgICAgIFtjcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zIHNldENsaWVudERhdGFI
YXNoOnRvTlNEYXRhKGhhc2gpLmdldCgpXTsKKyAgICBlbHNlCisgICAgICAgIFtjcmVkZW50aWFs
Q3JlYXRpb25PcHRpb25zIHNldENoYWxsZW5nZTpXZWJDb3JlOjp0b05TRGF0YShvcHRpb25zLmNo
YWxsZW5nZSkuZ2V0KCldOwogICAgIFtjcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zIHNldFJlbHlp
bmdQYXJ0eUlkZW50aWZpZXI6b3B0aW9ucy5ycC5pZF07CiAgICAgW2NyZWRlbnRpYWxDcmVhdGlv
bk9wdGlvbnMgc2V0VXNlck5hbWU6b3B0aW9ucy51c2VyLm5hbWVdOwogICAgIFtjcmVkZW50aWFs
Q3JlYXRpb25PcHRpb25zIHNldFVzZXJJZGVudGlmaWVyOldlYkNvcmU6OnRvTlNEYXRhKG9wdGlv
bnMudXNlci5pZCkuZ2V0KCldOwpAQCAtMjAyLDcgKzIwNSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8
QVNDQ3JlZGVudGlhbFJlcXVlc3RDb250ZXh0PiBjb25maWd1cmVSZWdpc3RyYXRpb25SZXF1ZXN0
Q29udGV4CiAgICAgcmV0dXJuIHJlcXVlc3RDb250ZXh0OwogfQogCi1zdGF0aWMgUmV0YWluUHRy
PEFTQ0NyZWRlbnRpYWxSZXF1ZXN0Q29udGV4dD4gY29uZmlndXJhdGlvbkFzc2VydGlvblJlcXVl
c3RDb250ZXh0KGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYgb3B0aW9u
cykKK3N0YXRpYyBSZXRhaW5QdHI8QVNDQ3JlZGVudGlhbFJlcXVlc3RDb250ZXh0PiBjb25maWd1
cmF0aW9uQXNzZXJ0aW9uUmVxdWVzdENvbnRleHQoY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbFJl
cXVlc3RPcHRpb25zJiBvcHRpb25zLCBWZWN0b3I8dWludF84PiBoYXNoKQogewogICAgIEFTQ0Ny
ZWRlbnRpYWxSZXF1ZXN0VHlwZXMgcmVxdWVzdFR5cGVzID0gQVNDQ3JlZGVudGlhbFJlcXVlc3RU
eXBlUGxhdGZvcm1QdWJsaWNLZXlBc3NlcnRpb24gfCBBU0NDcmVkZW50aWFsUmVxdWVzdFR5cGVT
ZWN1cml0eUtleVB1YmxpY0tleUFzc2VydGlvbjsKIApAQCAtMjI3LDEzICsyMzAsMzAgQEAgc3Rh
dGljIFJldGFpblB0cjxBU0NDcmVkZW50aWFsUmVxdWVzdENvbnRleHQ+IGNvbmZpZ3VyYXRpb25B
c3NlcnRpb25SZXF1ZXN0Q29udGUKICAgICBhdXRvIHJlcXVlc3RDb250ZXh0ID0gYWRvcHROUyhb
YWxsb2NBU0NDcmVkZW50aWFsUmVxdWVzdENvbnRleHRJbnN0YW5jZSgpIGluaXRXaXRoUmVxdWVz
dFR5cGVzOnJlcXVlc3RUeXBlc10pOwogICAgIFtyZXF1ZXN0Q29udGV4dCBzZXRSZWx5aW5nUGFy
dHlJZGVudGlmaWVyOm9wdGlvbnMucnBJZF07CiAKLSAgICBhdXRvIGNoYWxsZW5nZSA9IFdlYkNv
cmU6OnRvTlNEYXRhKG9wdGlvbnMuY2hhbGxlbmdlKTsKKyAgICBpZiAocmVxdWVzdFR5cGVzICYg
QVNDQ3JlZGVudGlhbFJlcXVlc3RUeXBlUGxhdGZvcm1QdWJsaWNLZXlBc3NlcnRpb24pIHsKKyAg
ICAgICAgYXV0byBhc3NlcnRpb25PcHRpb25zID0gYWRvcHROUyhhbGxvY0FTQ1B1YmxpY0tleUNy
ZWRlbnRpYWxBc3NlcnRpb25PcHRpb25zSW5zdGFuY2UoKSk7CisgICAgICAgIGlmIChbYXNzZXJ0
aW9uT3B0aW9ucyByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGluaXRXaXRoS2luZDpyZWx5
aW5nUGFydHlJZGVudGlmaWVyOmNsaWVudERhdGFIYXNoOnVzZXJWZXJpZmljYXRpb25QcmVmZXJl
bmNlOmFsbG93ZWRDcmVkZW50aWFsczopXSkgeworICAgICAgICAgICAgYXV0byBuc0hhc2ggPSB0
b05TRGF0YShoYXNoKTsKKyAgICAgICAgICAgIFthc3NlcnRpb25PcHRpb25zIGluaXRXaXRoS2lu
ZDpBU0NQdWJsaWNLZXlDcmVkZW50aWFsS2luZFBsYXRmb3JtIHJlbHlpbmdQYXJ0eUlkZW50aWZp
ZXI6b3B0aW9ucy5ycElkIGNsaWVudERhdGFIYXNoOm5zSGFzaCB1c2VyVmVyaWZpY2F0aW9uUHJl
ZmVyZW5jZTp1c2VyVmVyaWZpY2F0aW9uLmdldCgpIGFsbG93ZWRDcmVkZW50aWFsczphbGxvd2Vk
Q3JlZGVudGlhbHMuZ2V0KCldCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBhdXRvIGNo
YWxsZW5nZSA9IFdlYkNvcmU6OnRvTlNEYXRhKG9wdGlvbnMuY2hhbGxlbmdlKTsKKyAgICAgICAg
ICAgIFthc3NlcnRpb25PcHRpb25zIGluaXRXaXRoS2luZDpBU0NQdWJsaWNLZXlDcmVkZW50aWFs
S2luZFBsYXRmb3JtIHJlbHlpbmdQYXJ0eUlkZW50aWZpZXI6b3B0aW9ucy5ycElkIGNoYWxsZW5n
ZTpjaGFsbGVuZ2UuZ2V0KCkgdXNlclZlcmlmaWNhdGlvblByZWZlcmVuY2U6dXNlclZlcmlmaWNh
dGlvbi5nZXQoKSBhbGxvd2VkQ3JlZGVudGlhbHM6YWxsb3dlZENyZWRlbnRpYWxzLmdldCgpXQor
ICAgICAgICB9CiAKLSAgICBpZiAocmVxdWVzdFR5cGVzICYgQVNDQ3JlZGVudGlhbFJlcXVlc3RU
eXBlUGxhdGZvcm1QdWJsaWNLZXlBc3NlcnRpb24pCi0gICAgICAgIFtyZXF1ZXN0Q29udGV4dCBz
ZXRQbGF0Zm9ybUtleUNyZWRlbnRpYWxBc3NlcnRpb25PcHRpb25zOlthbGxvY0FTQ1B1YmxpY0tl
eUNyZWRlbnRpYWxBc3NlcnRpb25PcHRpb25zSW5zdGFuY2UoKSBpbml0V2l0aEtpbmQ6QVNDUHVi
bGljS2V5Q3JlZGVudGlhbEtpbmRQbGF0Zm9ybSByZWx5aW5nUGFydHlJZGVudGlmaWVyOm9wdGlv
bnMucnBJZCBjaGFsbGVuZ2U6Y2hhbGxlbmdlLmdldCgpIHVzZXJWZXJpZmljYXRpb25QcmVmZXJl
bmNlOnVzZXJWZXJpZmljYXRpb24uZ2V0KCkgYWxsb3dlZENyZWRlbnRpYWxzOmFsbG93ZWRDcmVk
ZW50aWFscy5nZXQoKV1dOworICAgICAgICBbcmVxdWVzdENvbnRleHQgc2V0UGxhdGZvcm1LZXlD
cmVkZW50aWFsQXNzZXJ0aW9uT3B0aW9uczphc3NlcnRpb25PcHRpb25zLmdldCgpXTsKKyAgICB9
CiAKLSAgICBpZiAocmVxdWVzdFR5cGVzICYgQVNDQ3JlZGVudGlhbFJlcXVlc3RUeXBlU2VjdXJp
dHlLZXlQdWJsaWNLZXlBc3NlcnRpb24pCi0gICAgICAgIFtyZXF1ZXN0Q29udGV4dCBzZXRTZWN1
cml0eUtleUNyZWRlbnRpYWxBc3NlcnRpb25PcHRpb25zOlthbGxvY0FTQ1B1YmxpY0tleUNyZWRl
bnRpYWxBc3NlcnRpb25PcHRpb25zSW5zdGFuY2UoKSBpbml0V2l0aEtpbmQ6QVNDUHVibGljS2V5
Q3JlZGVudGlhbEtpbmRTZWN1cml0eUtleSByZWx5aW5nUGFydHlJZGVudGlmaWVyOm9wdGlvbnMu
cnBJZCBjaGFsbGVuZ2U6Y2hhbGxlbmdlLmdldCgpIHVzZXJWZXJpZmljYXRpb25QcmVmZXJlbmNl
OnVzZXJWZXJpZmljYXRpb24uZ2V0KCkgYWxsb3dlZENyZWRlbnRpYWxzOmFsbG93ZWRDcmVkZW50
aWFscy5nZXQoKV1dOworICAgIGlmIChyZXF1ZXN0VHlwZXMgJiBBU0NDcmVkZW50aWFsUmVxdWVz
dFR5cGVTZWN1cml0eUtleVB1YmxpY0tleUFzc2VydGlvbikgeworICAgICAgICBhdXRvIGFzc2Vy
dGlvbk9wdGlvbnMgPSBhZG9wdE5TKGFsbG9jQVNDUHVibGljS2V5Q3JlZGVudGlhbEFzc2VydGlv
bk9wdGlvbnNJbnN0YW5jZSgpKTsKKyAgICAgICAgaWYgKFthc3NlcnRpb25PcHRpb25zIHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoaW5pdFdpdGhLaW5kOnJlbHlpbmdQYXJ0eUlkZW50aWZp
ZXI6Y2xpZW50RGF0YUhhc2g6dXNlclZlcmlmaWNhdGlvblByZWZlcmVuY2U6YWxsb3dlZENyZWRl
bnRpYWxzOildKSB7CisgICAgICAgICAgICBhdXRvIG5zSGFzaCA9IHRvTlNEYXRhKGhhc2gpOwor
ICAgICAgICAgICAgW2Fzc2VydGlvbk9wdGlvbnMgaW5pdFdpdGhLaW5kOkFTQ1B1YmxpY0tleUNy
ZWRlbnRpYWxLaW5kU2VjdXJpdHlLZXkgcmVseWluZ1BhcnR5SWRlbnRpZmllcjpvcHRpb25zLnJw
SWQgY2xpZW50RGF0YUhhc2g6bnNIYXNoIHVzZXJWZXJpZmljYXRpb25QcmVmZXJlbmNlOnVzZXJW
ZXJpZmljYXRpb24uZ2V0KCkgYWxsb3dlZENyZWRlbnRpYWxzOmFsbG93ZWRDcmVkZW50aWFscy5n
ZXQoKV1dOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgYXV0byBjaGFsbGVuZ2UgPSBX
ZWJDb3JlOjp0b05TRGF0YShvcHRpb25zLmNoYWxsZW5nZSk7CisgICAgICAgICAgICBbYXNzZXJ0
aW9uT3B0aW9ucyBpbml0V2l0aEtpbmQ6QVNDUHVibGljS2V5Q3JlZGVudGlhbEtpbmRTZWN1cml0
eUtleSByZWx5aW5nUGFydHlJZGVudGlmaWVyOm9wdGlvbnMucnBJZCBjaGFsbGVuZ2U6Y2hhbGxl
bmdlLmdldCgpIHVzZXJWZXJpZmljYXRpb25QcmVmZXJlbmNlOnVzZXJWZXJpZmljYXRpb24uZ2V0
KCkgYWxsb3dlZENyZWRlbnRpYWxzOmFsbG93ZWRDcmVkZW50aWFscy5nZXQoKV1dOworICAgICAg
ICB9CisgICAgICAgIFtyZXF1ZXN0Q29udGV4dCBzZXRTZWN1cml0eUtleUNyZWRlbnRpYWxBc3Nl
cnRpb25PcHRpb25zOmFzc2VydGlvbk9wdGlvbnMuZ2V0KCldOworICAgIH0KIAogICAgIHJldHVy
biByZXF1ZXN0Q29udGV4dDsKIH0KQEAgLTI0Miw5ICsyNjIsOSBAQCBSZXRhaW5QdHI8QVNDQ3Jl
ZGVudGlhbFJlcXVlc3RDb250ZXh0PiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6
Y29udGV4dAogewogICAgIFJldGFpblB0cjxBU0NDcmVkZW50aWFsUmVxdWVzdENvbnRleHQ+IHJl
c3VsdDsKICAgICBXVEY6OnN3aXRjaE9uKHJlcXVlc3REYXRhLm9wdGlvbnMsIFsmXShjb25zdCBQ
dWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiBvcHRpb25zKSB7Ci0gICAgICAgIHJl
c3VsdCA9IGNvbmZpZ3VyZVJlZ2lzdHJhdGlvblJlcXVlc3RDb250ZXh0KG9wdGlvbnMpOworICAg
ICAgICByZXN1bHQgPSBjb25maWd1cmVSZWdpc3RyYXRpb25SZXF1ZXN0Q29udGV4dChvcHRpb25z
LCByZXF1ZXN0RGF0YS5oYXNoKTsKICAgICB9LCBbJl0oY29uc3QgUHVibGljS2V5Q3JlZGVudGlh
bFJlcXVlc3RPcHRpb25zJiBvcHRpb25zKSB7Ci0gICAgICAgIHJlc3VsdCA9IGNvbmZpZ3VyYXRp
b25Bc3NlcnRpb25SZXF1ZXN0Q29udGV4dChvcHRpb25zKTsKKyAgICAgICAgcmVzdWx0ID0gY29u
ZmlndXJhdGlvbkFzc2VydGlvblJlcXVlc3RDb250ZXh0KG9wdGlvbnMsIHJlcXVlc3REYXRhLmhh
c2gpOwogICAgIH0pOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYjJlMDE1ZDYzMDg2
NDA5NGIwZmJkY2U5OTk4NGIxY2U0M2ViZDhkOC4uZThlNTk2N2FmM2E4MGI1OWIxOWMxY2Q3ZTM5
NTYxMWNjMGZkZjE1NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTEyLTEwICBKIFBhc2Nv
ZSAgPGpfcGFzY29lQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIEFsbG93IHNhbWUt
c2l0ZSwgY3Jvc3Mtb3JpZ2luIGlmcmFtZSBnZXQoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MTgwCisgICAgICAgIHJkYXI6Ly84NTE2MTE0Mgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBsYXlv
dXQgdGVzdCBmb3IgV2ViQXV0aG4gZ2V0IGFzc2VydGlvbnMgb24gY3Jvc3Mtc2l0ZSwgc2FtZS1z
aXRlcyBpLWZyYW1lcyB3aXRoCisgICAgICAgIHB1YmxpY2tleS1jcmVkZW50aWFscy1nZXQgZmVh
dHVyZSBwb2xpY3kuCisKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNy
ZWRlbnRpYWwtc2FtZS1vcmlnaW4td2l0aC1hbmNlc3RvcnMuaHR0cHMtZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1zYW1lLW9y
aWdpbi13aXRoLWFuY2VzdG9ycy5odHRwcy5odG1sOgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1
dGhuL3Jlc291cmNlcy91dGlsLmpzOgorCiAyMDIxLTEyLTEwICBBbGFuIEJ1anRhcyAgPHphbGFu
QGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJRkNdIEVuYWJsZSBiaWRpIGhhbmRsaW5nIGZv
ciBjb250ZW50IHdpdGggaW5saW5lIGJveGVzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtc2FtZS1vcmlnaW4td2l0aC1hbmNl
c3RvcnMuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4v
cHVibGljLWtleS1jcmVkZW50aWFsLXNhbWUtb3JpZ2luLXdpdGgtYW5jZXN0b3JzLmh0dHBzLWV4
cGVjdGVkLnR4dAppbmRleCA2NTMwNjQ1YTE5NGI0NWFjZDA5ODNmYzM3M2I1YWI2ZGE5NWYxNTk4
Li43MTZlMWY3ZmJmZTRhODUyOWEzOWNmYjVmZTQ3NzYyNTFmZDc3YjAwIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtc2FtZS1v
cmlnaW4td2l0aC1hbmNlc3RvcnMuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1zYW1lLW9yaWdpbi13aXRo
LWFuY2VzdG9ycy5odHRwcy1leHBlY3RlZC50eHQKQEAgLTIsNCArMiw2IEBACiAKIFBBU1MgVGVz
dHMgdGhhdCBhIGZyYW1lIHRoYXQgZG9lc24ndCBzaGFyZSB0aGUgc2FtZSBvcmlnaW4gd2l0aCBh
bGwgaXRzIGFuY2VzdG9ycyBjb3VsZCBub3QgYWNjZXNzIHRoZSBBUEkuCiBQQVNTIFRlc3RzIHRo
YXQgYSBmcmFtZSB0aGF0IGRvZXNuJ3Qgc2hhcmUgdGhlIHNhbWUgb3JpZ2luIHdpdGggYWxsIGl0
cyBhbmNlc3RvcnMgY291bGQgbm90IGFjY2VzcyB0aGUgQVBJLiAyCitQQVNTIFRlc3RzIHRoYXQg
YSBmcmFtZSB0aGF0IGlzIHNhbWUtc2l0ZSwgY3Jvc3Mtb3JpZ2luIHdpdGhvdXQgcHVibGlja2V5
LWNyZWRlbnRpYWxzLWdldCBmZWF0dXJlIHBvbGljeSBjYW5ub3QgdXNlIGdldCgpLgorUEFTUyBU
ZXN0cyB0aGF0IGEgZnJhbWUgdGhhdCBpcyBzYW1lLXNpdGUsIGNyb3NzLW9yaWdpbiB3aXRoIHB1
YmxpY2tleS1jcmVkZW50aWFscy1nZXQgZmVhdHVyZSBwb2xpY3kgY2FuIHVzZSBnZXQoKS4KIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVk
ZW50aWFsLXNhbWUtb3JpZ2luLXdpdGgtYW5jZXN0b3JzLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0
cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtc2FtZS1vcmlnaW4td2l0
aC1hbmNlc3RvcnMuaHR0cHMuaHRtbAppbmRleCA0ZjFjNDBkOTFmZTc5MWRiZGUyMDlkMjg1MjY1
YWUyMDhiNzNkMjMyLi5jMzI1MjE2NzFkZTE3YWM5NWRkMTM3Y2U4ZmQ5NDk3YjM4YzlhNzczIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRl
bnRpYWwtc2FtZS1vcmlnaW4td2l0aC1hbmNlc3RvcnMuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtc2FtZS1vcmlnaW4t
d2l0aC1hbmNlc3RvcnMuaHR0cHMuaHRtbApAQCAtMjIsNiArMjIsMTggQEAKICAgICAgICAgICAg
ICAgICBhc3NlcnRfZXF1YWxzKG1lc3NhZ2UuZGF0YSwgIlBBU1MuIik7CiAgICAgICAgICAgICB9
KTsKICAgICAgICAgfSwgIlRlc3RzIHRoYXQgYSBmcmFtZSB0aGF0IGRvZXNuJ3Qgc2hhcmUgdGhl
IHNhbWUgb3JpZ2luIHdpdGggYWxsIGl0cyBhbmNlc3RvcnMgY291bGQgbm90IGFjY2VzcyB0aGUg
QVBJLiAyIik7CisKKyAgICAgICAgcHJvbWlzZV90ZXN0KHQgPT4geworICAgICAgICAgICAgcmV0
dXJuIHdpdGhTYW1lU2l0ZUlmcmFtZSgic2FtZXNpdGUtaWZyYW1lLmh0bWwiKS50aGVuKChtZXNz
YWdlKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhtZXNzYWdlLmRhdGEsICJU
aHJvdyBOb3RBbGxvd2VkRXJyb3I6IFRoZSBvcmlnaW4gb2YgdGhlIGRvY3VtZW50IGlzIG5vdCB0
aGUgc2FtZSBhcyBpdHMgYW5jZXN0b3JzLiIpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0s
ICJUZXN0cyB0aGF0IGEgZnJhbWUgdGhhdCBpcyBzYW1lLXNpdGUsIGNyb3NzLW9yaWdpbiB3aXRo
b3V0IHB1YmxpY2tleS1jcmVkZW50aWFscy1nZXQgZmVhdHVyZSBwb2xpY3kgY2Fubm90IHVzZSBn
ZXQoKS4iKTsKKworICAgICAgICBwcm9taXNlX3Rlc3QodCA9PiB7CisgICAgICAgICAgICByZXR1
cm4gd2l0aFNhbWVTaXRlSWZyYW1lKCJzYW1lc2l0ZS1pZnJhbWUuaHRtbCIsICJwdWJsaWNrZXkt
Y3JlZGVudGlhbHMtZ2V0IikudGhlbigobWVzc2FnZSkgPT4geworICAgICAgICAgICAgICAgIGFz
c2VydF9lcXVhbHMobWVzc2FnZS5kYXRhLCAiVGhyb3cgVW5rbm93bkVycm9yOiBVbmtub3duIGlu
dGVybmFsIGVycm9yLiBFcnJvciBjb2RlOiAyNTUiKTsKKyAgICAgICAgICAgIH0pOworICAgICAg
ICB9LCAiVGVzdHMgdGhhdCBhIGZyYW1lIHRoYXQgaXMgc2FtZS1zaXRlLCBjcm9zcy1vcmlnaW4g
d2l0aCBwdWJsaWNrZXktY3JlZGVudGlhbHMtZ2V0IGZlYXR1cmUgcG9saWN5IGNhbiB1c2UgZ2V0
KCkuIik7CiAgICAgPC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9yZXNvdXJjZXMvc2FtZXNpdGUtaWZyYW1lLmh0bWwg
Yi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9yZXNvdXJjZXMvc2FtZXNpdGUtaWZyYW1l
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uODk5ODYyMmU1ZjIyMDZhM2M2NmExZDhmNjAyYzExNGY2OTYyNmYy
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3Jlc291
cmNlcy9zYW1lc2l0ZS1pZnJhbWUuaHRtbApAQCAtMCwwICsxLDI5IEBACis8c2NyaXB0IHNyYz0i
Li91dGlsLmpzIj48L3NjcmlwdD4KKzxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iaW5wdXQiPgorPHNj
cmlwdD4KKyAgICBjb25zdCB1cmwgPSBuZXcgVVJMKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTsKKyAg
ICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRo
ZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3Rh
Z2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgcGF5bG9hZEJhc2U2NDogW3Rl
c3REdW1teU1lc3NhZ2VQYXlsb2FkQmFzZTY0XSB9IH0pOworCisgICAgZnVuY3Rpb24gbWVzc2Fn
ZVRvVG9wKG1lc3NhZ2UpIHsKKyAgICAgICAgdG9wLnBvc3RNZXNzYWdlKG1lc3NhZ2UsICIqIik7
CisgICAgfQorCisgICAgY29uc3QgcmVxdWVzdE9wdGlvbnMgPSB7CisgICAgICAgIHB1YmxpY0tl
eTogeworICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2Iiks
CisgICAgICAgIH0KKyAgICB9OworCisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAg
IGludGVybmFscy53aXRoVXNlckdlc3R1cmUoKCkgPT4geyBpbnB1dC5mb2N1cygpOyB9KTsKKwor
ICAgIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQocmVxdWVzdE9wdGlvbnMpLnRoZW4oCisgICAg
ICAgIGZ1bmN0aW9uKHZhbHVlKSB7CisgICAgICAgICAgICBtZXNzYWdlVG9Ub3AoIkFjY2VzcyBH
cmFudGVkICIgKyB2YWx1ZSk7CisgICAgICAgIH0sCisgICAgICAgIGZ1bmN0aW9uKGV4Y2VwdGlv
bikgeworICAgICAgICAgICAgbWVzc2FnZVRvVG9wKCJUaHJvdyAiICsgZXhjZXB0aW9uLm5hbWUg
KyAiOiAiICsgZXhjZXB0aW9uLm1lc3NhZ2UpOworICAgICAgfQorICAgICk7Cis8L3NjcmlwdD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3Jlc291cmNlcy91dGls
LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcmVzb3VyY2VzL3V0aWwuanMKaW5k
ZXggOGJmNmQwMmJhMjc4Y2RhZmI3OTA4YWY0NWRhNTI1ZTI1ZDM4MTZmMC4uZmQ3YmI1MzI5NTdh
YmFmYmE5ODgzMDFjNzNlNGJmZjk0MWMzOGNjMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0
cC93cHQvd2ViYXV0aG4vcmVzb3VyY2VzL3V0aWwuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93
cHQvd2ViYXV0aG4vcmVzb3VyY2VzL3V0aWwuanMKQEAgLTMxNiw2ICszMTYsMjAgQEAgZnVuY3Rp
b24gd2l0aENyb3NzT3JpZ2luSWZyYW1lKHJlc291cmNlRmlsZSkKICAgICB9KTsKIH0KIAorZnVu
Y3Rpb24gd2l0aFNhbWVTaXRlSWZyYW1lKHJlc291cmNlRmlsZSwgYWxsb3cgPSAiIikKK3sKKyAg
ICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHsKKyAgICAgICAgd2FpdEZvckxvYWQo
KS50aGVuKChtZXNzYWdlKSA9PiB7CisgICAgICAgICAgICByZXNvbHZlKG1lc3NhZ2UpOworICAg
ICAgIH0pOworICAgICAgIGNvbnN0IGZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZy
YW1lIik7CisgICAgICAgY29uc3QgaG9zdCA9IGdldF9ob3N0X2luZm8oKTsKKyAgICAgICBmcmFt
ZS5hbGxvdyA9IGFsbG93OworICAgICAgIGZyYW1lLnNyYyA9ICJodHRwczovLyIgKyBob3N0Lk9S
SUdJTkFMX0hPU1QgKyAiOiIgKyBob3N0LkhUVFBTX1BPUlQyICsgUkVTT1VSQ0VTX0RJUiArIHJl
c291cmNlRmlsZTsKKyAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGZyYW1lKTsKKyAg
ICB9KTsKK30KKwogZnVuY3Rpb24gcHJvbWlzZVJlamVjdHModGVzdCwgZXhwZWN0ZWQsIHByb21p
c2UsIGRlc2NyaXB0aW9uKQogewogICAgIHJldHVybiBwcm9taXNlLnRoZW4odGVzdC51bnJlYWNo
ZWRfZnVuYygiU2hvdWxkIGhhdmUgcmVqZWN0ZWQ6ICIgKyBkZXNjcmlwdGlvbikpLmNhdGNoKGZ1
bmN0aW9uKGUpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447053</attachid>
            <date>2021-12-13 13:38:52 -0800</date>
            <delta_ts>2021-12-14 03:44:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234180-20211213133852.patch</filename>
            <type>text/plain</type>
            <size>35474</size>
            <attacher name="pascoe@apple.com">pascoe</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2OTUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmEyYzZkM2RkNmNmZmNj
ZmNjMTFhZjg1ZGQ2NjU0MTg5MmRiNDhiMy4uMDdjOGI0ZmVkZDc1OGUxMjc1NzgzZjhhZjU4N2Yx
YmU0YWIyMDMzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDIxLTEyLTEzICBKIFBh
c2NvZSAgPGpfcGFzY29lQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIEFsbG93IHNh
bWUtc2l0ZSwgY3Jvc3Mtb3JpZ2luIGlmcmFtZSBnZXQoKQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MTgwCisgICAgICAgIHJkYXI6Ly84NTE2MTE0
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBX
ZWIgQXV0aGVudGljYXRpb24gbGV2ZWwgMiBzcGVjaWZpZXMgYSBmZWF0dXJlIHBvbGljeSB0byBh
bGxvdyBnZXQgY2FsbHMgaW4KKyAgICAgICAgY3Jvc3Mtb3JpZ2luIGktZnJhbWVzLiBUaGlzIHBh
dGNoIGltcGxlbWVudHMgdGhpcyBmZWF0dXJlIHBvbGljeSBwYXJ0aWFsbHkuIE9ubHkKKyAgICAg
ICAgc2FtZS1zaXRlLCBjcm9zcy1vcmlnaW4gaS1mcmFtZXMgYXJlIHN1cHBvcnRlZCBpbnN0ZWFk
LiBUaGlzIGlzIGZvciB0cmFja2luZyBwcmV2ZW50aW9uCisgICAgICAgIHB1cnBvc2VzLiBodHRw
czovL3czYy5naXRodWIuaW8vd2ViYXV0aG4vI3NjdG4taWZyYW1lLWd1aWRhbmNlCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBhbHNvIHN0YXJ0cyBwYXNzaW5nIENsaWVudERhdGFKU09OIGhhc2hlcyB0
byBBU0MgdG8gYXZvaWQgdGhlIHNpdHVhdGlvbgorICAgICAgICB3aGVyZSBXZWJLaXQgaW5jbHVk
ZXMgY3Jvc3NPcmlnaW4gb3Igb3RoZXIgZmllbGRzIGluIENsaWVudERhdGFKU09OIHRoYXQgQVND
IGlzCisgICAgICAgIHVuYXdhcmUgb2Ygd2hlbiBnZW5lcmF0aW5nIENsaWVudERhdGFKU09OLgor
CisgICAgICAgIEFkZGVkIGxheW91dCB0ZXN0IGNhc2VzIGZvciBzYW1lLXNpdGUsIGNyb3NzLW9y
aWdpbiBnZXQgY2FsbHMuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0
b3JDb29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3I6OmNyZWF0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpkb2VzSGF2ZVNhbWVTaXRl
QXNBbmNlc3RvcnMpOgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRvckNvb3JkaW5hdG9y
OjpkaXNjb3ZlckZyb21FeHRlcm5hbFNvdXJjZSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdXRobi9XZWJBdXRoZW50aWNhdGlvblV0aWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJ1
aWxkQ2xpZW50RGF0YUpzb24pOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vV2ViQXV0aGVu
dGljYXRpb25VdGlscy5oOgorICAgICAgICAqIGh0bWwvRmVhdHVyZVBvbGljeS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpwb2xpY3lUeXBlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpGZWF0dXJl
UG9saWN5OjpwYXJzZSk6CisgICAgICAgIChXZWJDb3JlOjpGZWF0dXJlUG9saWN5OjphbGxvd3Mg
Y29uc3QpOgorICAgICAgICAqIGh0bWwvRmVhdHVyZVBvbGljeS5oOgorCiAyMDIxLTEyLTEzICBK
ZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVp
bGQgZml4OyBhZGQgYSBjb252ZW5pZW5jZSBmdW5jdGlvbiB0byBzYWZlbHkgY29tcGFyZSBwb3Nz
aWJseSBudWxsIENGU3RyaW5nUmVmcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMTExNzc1MDcxZTI0ODk0NTg2ZDcy
YzQzNDhhZWFiOGE3MTU0N2U3NC4uNjQ0OTQ5MzFmNDJjZjNiZjM0ZWU2ODMzYjNlMGI0NjEwMmM2
ZjM1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAyMS0xMi0xMyAgSiBQYXNjb2UgIDxq
X3Bhc2NvZUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBBbGxvdyBzYW1lLXNpdGUs
IGNyb3NzLW9yaWdpbiBpZnJhbWUgZ2V0KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzNDE4MAorICAgICAgICByZGFyOi8vODUxNjExNDIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgV2ViIEF1dGhl
bnRpY2F0aW9uIGxldmVsIDIgc3BlY2lmaWVzIGEgZmVhdHVyZSBwb2xpY3kgdG8gYWxsb3cgZ2V0
IGNhbGxzIGluCisgICAgICAgIGNyb3NzLW9yaWdpbiBpLWZyYW1lcy4gVGhpcyBwYXRjaCBpbXBs
ZW1lbnRzIHRoaXMgZmVhdHVyZSBwb2xpY3kgcGFydGlhbGx5LiBPbmx5CisgICAgICAgIHNhbWUt
c2l0ZSwgY3Jvc3Mtb3JpZ2luIGktZnJhbWVzIGFyZSBzdXBwb3J0ZWQgaW5zdGVhZC4gVGhpcyBp
cyBmb3IgdHJhY2tpbmcgcHJldmVudGlvbgorICAgICAgICBwdXJwb3Nlcy4gaHR0cHM6Ly93M2Mu
Z2l0aHViLmlvL3dlYmF1dGhuLyNzY3RuLWlmcmFtZS1ndWlkYW5jZQorCisgICAgICAgIFRoaXMg
cGF0Y2ggYWxzbyBzdGFydHMgcGFzc2luZyBDbGllbnREYXRhSlNPTiBoYXNoZXMgdG8gQVNDIHRv
IGF2b2lkIHRoZSBzaXR1YXRpb24KKyAgICAgICAgd2hlcmUgV2ViS2l0IGluY2x1ZGVzIGNyb3Nz
T3JpZ2luIG9yIG90aGVyIGZpZWxkcyBpbiBDbGllbnREYXRhSlNPTiB0aGF0IEFTQyBpcworICAg
ICAgICB1bmF3YXJlIG9mIHdoZW4gZ2VuZXJhdGluZyBDbGllbnREYXRhSlNPTi4KKworICAgICAg
ICBBZGRlZCBsYXlvdXQgdGVzdCBjYXNlcyBmb3Igc2FtZS1zaXRlLCBjcm9zcy1vcmlnaW4gZ2V0
IGNhbGxzLgorCisgICAgICAgICogUGxhdGZvcm0vc3BpL0NvY29hL0F1dGhlbnRpY2F0aW9uU2Vy
dmljZXNDb3JlU1BJLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRo
ZW50aWNhdGlvblBhbmVsLm1tOgorICAgICAgICAocHJvZHVjZUNsaWVudERhdGFKc29uKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6OmNvbmZpZ3VyZVJlZ2lzdHJh
dGlvblJlcXVlc3RDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6Y29uZmlndXJhdGlvbkFzc2Vy
dGlvblJlcXVlc3RDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yUHJveHk6OmNvbnRleHRGb3JSZXF1ZXN0KToKKwogMjAyMS0xMi0xMyAgSm9vbmdo
dW4gUGFyayAgPGpoNzE4LnBhcmtAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4g
Rml4IGJ1aWxkIGVycm9yIHNpbmNlIHIyODY5NDYuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L0NyZWRlbnRpYWxzQ29udGFpbmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQ3JlZGVudGlhbHND
b250YWluZXIuY3BwCmluZGV4IGQzMDlkOGJhNGQ1M2M3YzI5NzY5MmE4MTdmYTNlYWNhYjAxOTM3
OTAuLmQ1NmM1ZGE2OTc0OWRjNTIyOGNkNDNmZTJhZDFhY2YyYjNiYTAzYjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQ3JlZGVudGlhbHND
b250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFn
ZW1lbnQvQ3JlZGVudGlhbHNDb250YWluZXIuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVk
ZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAi
U2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlICJXZWJBdXRoZW50aWNhdGlvbkNvbnN0YW50cy5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ1LDE5ICs0NiwyNyBAQCBDcmVkZW50aWFs
c0NvbnRhaW5lcjo6Q3JlZGVudGlhbHNDb250YWluZXIoV2Vha1B0cjxEb2N1bWVudD4mJiBkb2N1
bWVudCkKIHsKIH0KIAotYm9vbCBDcmVkZW50aWFsc0NvbnRhaW5lcjo6ZG9lc0hhdmVTYW1lT3Jp
Z2luQXNJdHNBbmNlc3RvcnMoKQorV2ViQXV0aG46OlNjb3BlIENyZWRlbnRpYWxzQ29udGFpbmVy
OjpzY29wZSgpCiB7Ci0gICAgLy8gVGhlIGZvbGxvd2luZyBpbXBsZW1lbnRzIGh0dHBzOi8vdzNj
LmdpdGh1Yi5pby93ZWJhcHBzZWMtY3JlZGVudGlhbC1tYW5hZ2VtZW50LyNzYW1lLW9yaWdpbi13
aXRoLWl0cy1hbmNlc3RvcnMKLSAgICAvLyBhcyBvZiAxNCBOb3ZlbWJlciAyMDE3LgogICAgIGlm
ICghbV9kb2N1bWVudCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCisgICAgICAgIHJldHVybiBX
ZWJBdXRobjo6U2NvcGU6OkNyb3NzT3JpZ2luOworICAgIAorICAgIGJvb2wgaXNTYW1lT3JpZ2lu
ID0gdHJ1ZTsKKyAgICBib29sIGlzU2FtZVNpdGUgPSB0cnVlOwogICAgIGF1dG8mIG9yaWdpbiA9
IG1fZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCk7CisgICAgYXV0byYgdXJsID0gbV9kb2N1bWVu
dC0+dXJsKCk7CiAgICAgZm9yIChhdXRvKiBkb2N1bWVudCA9IG1fZG9jdW1lbnQtPnBhcmVudERv
Y3VtZW50KCk7IGRvY3VtZW50OyBkb2N1bWVudCA9IGRvY3VtZW50LT5wYXJlbnREb2N1bWVudCgp
KSB7CisgICAgICAgIGlmICghb3JpZ2luLmlzU2FtZU9yaWdpbkRvbWFpbihkb2N1bWVudC0+c2Vj
dXJpdHlPcmlnaW4oKSkgJiYgIWFyZVJlZ2lzdHJhYmxlRG9tYWluc0VxdWFsKHVybCwgZG9jdW1l
bnQtPnVybCgpKSkKKyAgICAgICAgICAgIGlzU2FtZVNpdGUgPSBmYWxzZTsKICAgICAgICAgaWYg
KCFvcmlnaW4uaXNTYW1lT3JpZ2luQXMoZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkpKQotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaXNTYW1lT3JpZ2luID0gZmFsc2U7
CiAgICAgfQotICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKGlzU2FtZU9yaWdpbikKKyAgICAg
ICAgcmV0dXJuIFdlYkF1dGhuOjpTY29wZTo6U2FtZU9yaWdpbjsKKyAgICBpZiAoaXNTYW1lU2l0
ZSkKKyAgICAgICAgcmV0dXJuIFdlYkF1dGhuOjpTY29wZTo6U2FtZVNpdGU7CisgICAgcmV0dXJu
IFdlYkF1dGhuOjpTY29wZTo6Q3Jvc3NPcmlnaW47CiB9CiAKIHZvaWQgQ3JlZGVudGlhbHNDb250
YWluZXI6OmdldChDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmJiBvcHRpb25zLCBDcmVkZW50aWFs
UHJvbWlzZSYmIHByb21pc2UpCkBAIC04OSw3ICs5OCw3IEBAIHZvaWQgQ3JlZGVudGlhbHNDb250
YWluZXI6OmdldChDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmJiBvcHRpb25zLCBDcmVkZW50aWFs
UHJvCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2RvY3VtZW50LT5wYWdlKCktPmF1
dGhlbnRpY2F0b3JDb29yZGluYXRvcigpLmRpc2NvdmVyRnJvbUV4dGVybmFsU291cmNlKCptX2Rv
Y3VtZW50LCBvcHRpb25zLnB1YmxpY0tleS52YWx1ZSgpLCBkb2VzSGF2ZVNhbWVPcmlnaW5Bc0l0
c0FuY2VzdG9ycygpLCBXVEZNb3ZlKG9wdGlvbnMuc2lnbmFsKSwgV1RGTW92ZShwcm9taXNlKSk7
CisgICAgbV9kb2N1bWVudC0+cGFnZSgpLT5hdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IoKS5kaXNj
b3ZlckZyb21FeHRlcm5hbFNvdXJjZSgqbV9kb2N1bWVudCwgb3B0aW9ucy5wdWJsaWNLZXkudmFs
dWUoKSwgc2NvcGUoKSwgV1RGTW92ZShvcHRpb25zLnNpZ25hbCksIFdURk1vdmUocHJvbWlzZSkp
OwogfQogCiB2b2lkIENyZWRlbnRpYWxzQ29udGFpbmVyOjpzdG9yZShjb25zdCBCYXNpY0NyZWRl
bnRpYWwmLCBDcmVkZW50aWFsUHJvbWlzZSYmIHByb21pc2UpCkBAIC0xMjQsNyArMTMzLDcgQEAg
dm9pZCBDcmVkZW50aWFsc0NvbnRhaW5lcjo6aXNDcmVhdGUoQ3JlZGVudGlhbENyZWF0aW9uT3B0
aW9ucyYmIG9wdGlvbnMsIENyZWRlbnQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1f
ZG9jdW1lbnQtPnBhZ2UoKS0+YXV0aGVudGljYXRvckNvb3JkaW5hdG9yKCkuY3JlYXRlKCptX2Rv
Y3VtZW50LCBvcHRpb25zLnB1YmxpY0tleS52YWx1ZSgpLCBkb2VzSGF2ZVNhbWVPcmlnaW5Bc0l0
c0FuY2VzdG9ycygpLCBXVEZNb3ZlKG9wdGlvbnMuc2lnbmFsKSwgV1RGTW92ZShwcm9taXNlKSk7
CisgICAgbV9kb2N1bWVudC0+cGFnZSgpLT5hdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IoKS5jcmVh
dGUoKm1fZG9jdW1lbnQsIG9wdGlvbnMucHVibGljS2V5LnZhbHVlKCksIHNjb3BlKCksIFdURk1v
dmUob3B0aW9ucy5zaWduYWwpLCBXVEZNb3ZlKHByb21pc2UpKTsKIH0KIAogdm9pZCBDcmVkZW50
aWFsc0NvbnRhaW5lcjo6cHJldmVudFNpbGVudEFjY2VzcyhET01Qcm9taXNlRGVmZXJyZWQ8dm9p
ZD4mJiBwcm9taXNlKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
cmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsc0NvbnRhaW5lci5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsc0NvbnRhaW5lci5oCmlu
ZGV4IDRlMWJiNGU1YmU1ZTUyNTVhMzc3ODZmOGVmNjliOGE3N2RhZjUzYzcuLjlhNmIxMmRkYzIy
Mjk4ZjQ3YzFlMzI5NjJiNmE2Y2YzOWViNWQ5MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQ3JlZGVudGlhbHNDb250YWluZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L0NyZWRlbnRpYWxz
Q29udGFpbmVyLmgKQEAgLTMyLDYgKzMyLDEwIEBACiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCituYW1lc3BhY2UgV2ViQXV0aG4geworZW51
bSBjbGFzcyBTY29wZTsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEb2N1bWVu
dDsKQEAgLTU0LDcgKzU4LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBDcmVkZW50aWFsc0Nv
bnRhaW5lcihXZWFrUHRyPERvY3VtZW50PiYmKTsKIAotICAgIGJvb2wgZG9lc0hhdmVTYW1lT3Jp
Z2luQXNJdHNBbmNlc3RvcnMoKTsKKyAgICBXZWJBdXRobjo6U2NvcGUgc2NvcGUoKTsKIAogICAg
IFdlYWtQdHI8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3Bw
CmluZGV4IDQ5MGY2NWFlMmUxNTVlMThhY2U4YzM1MmY2MWQ0MDg0ZGZjOTBmZjEuLjVkNDc3N2I4
YzAzYTA5MmY3MTkxZGU0NDQ1NDhlYTdmOWM2ZjNjNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5j
cHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JD
bGllbnQuaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhLmgiCiAjaW5jbHVk
ZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJGZWF0dXJlUG9saWN5LmgiCiAjaW5jbHVkZSAiSlNC
YXNpY0NyZWRlbnRpYWwuaCIKICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogI2lu
Y2x1ZGUgIlB1YmxpY0tleUNyZWRlbnRpYWwuaCIKQEAgLTEwNCw3ICsxMDUsNyBAQCB2b2lkIEF1
dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6c2V0Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBdXRoZW50
aWNhdG9yQ29vcmRpbmF0bwogICAgIG1fY2xpZW50ID0gV1RGTW92ZShjbGllbnQpOwogfQogCi12
b2lkIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6Y3JlYXRlKGNvbnN0IERvY3VtZW50JiBkb2N1
bWVudCwgY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyYgb3B0aW9ucywg
Ym9vbCBzYW1lT3JpZ2luV2l0aEFuY2VzdG9ycywgUmVmUHRyPEFib3J0U2lnbmFsPiYmIGFib3J0
U2lnbmFsLCBDcmVkZW50aWFsUHJvbWlzZSYmIHByb21pc2UpIGNvbnN0Cit2b2lkIEF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvcjo6Y3JlYXRlKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwgY29uc3Qg
UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyYgb3B0aW9ucywgV2ViQXV0aG46OlNj
b3BlIHNjb3BlLCBSZWZQdHI8QWJvcnRTaWduYWw+JiYgYWJvcnRTaWduYWwsIENyZWRlbnRpYWxQ
cm9taXNlJiYgcHJvbWlzZSkgY29uc3QKIHsKICAgICB1c2luZyBuYW1lc3BhY2UgQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9ySW50ZXJuYWw7CiAKQEAgLTExNCw3ICsxMTUsNyBAQCB2b2lkIEF1dGhl
bnRpY2F0b3JDb29yZGluYXRvcjo6Y3JlYXRlKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwgY29u
c3QgUHVibGljS2V5QwogICAgIC8vIFRoZSBmb2xsb3dpbmcgaW1wbGVtZW50cyBodHRwczovL3d3
dy53My5vcmcvVFIvd2ViYXV0aG4vI2NyZWF0ZUNyZWRlbnRpYWwgYXMgb2YgNSBEZWNlbWJlciAy
MDE3LgogICAgIC8vIFN0ZXAgMSwgMywgMTYgYXJlIGhhbmRsZWQgYnkgdGhlIGNhbGxlci4KICAg
ICAvLyBTdGVwIDIuCi0gICAgaWYgKCFzYW1lT3JpZ2luV2l0aEFuY2VzdG9ycykgeworICAgIGlm
IChzY29wZSAhPSBXZWJBdXRobjo6U2NvcGU6OlNhbWVPcmlnaW4pIHsKICAgICAgICAgcHJvbWlz
ZS5yZWplY3QoRXhjZXB0aW9uIHsgTm90QWxsb3dlZEVycm9yLCAiVGhlIG9yaWdpbiBvZiB0aGUg
ZG9jdW1lbnQgaXMgbm90IHRoZSBzYW1lIGFzIGl0cyBhbmNlc3RvcnMuIl9zIH0pOwogICAgICAg
ICByZXR1cm47CiAgICAgfQpAQCAtMTQ4LDcgKzE0OSw3IEBAIHZvaWQgQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yOjpjcmVhdGUoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBQdWJsaWNL
ZXlDCiAgICAgb3B0aW9ucy5leHRlbnNpb25zID0gQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xp
ZW50SW5wdXRzIHsgU3RyaW5nKCksIHByb2Nlc3NHb29nbGVMZWdhY3lBcHBJZFN1cHBvcnRFeHRl
bnNpb24ob3B0aW9ucy5leHRlbnNpb25zLCBvcHRpb25zLnJwLmlkKSB9OwogCiAgICAgLy8gU3Rl
cCAxMy0xNS4KLSAgICBhdXRvIGNsaWVudERhdGFKc29uID0gYnVpbGRDbGllbnREYXRhSnNvbihD
bGllbnREYXRhVHlwZTo6Q3JlYXRlLCBvcHRpb25zLmNoYWxsZW5nZSwgY2FsbGVyT3JpZ2luKTsK
KyAgICBhdXRvIGNsaWVudERhdGFKc29uID0gYnVpbGRDbGllbnREYXRhSnNvbihDbGllbnREYXRh
VHlwZTo6Q3JlYXRlLCBvcHRpb25zLmNoYWxsZW5nZSwgY2FsbGVyT3JpZ2luLCBzY29wZSk7CiAg
ICAgYXV0byBjbGllbnREYXRhSnNvbkhhc2ggPSBidWlsZENsaWVudERhdGFKc29uSGFzaChjbGll
bnREYXRhSnNvbik7CiAKICAgICAvLyBTdGVwIDQsIDE3LTIxLgpAQCAtMTc1LDcgKzE3Niw3IEBA
IHZvaWQgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpjcmVhdGUoY29uc3QgRG9jdW1lbnQmIGRv
Y3VtZW50LCBjb25zdCBQdWJsaWNLZXlDCiAgICAgbV9jbGllbnQtPm1ha2VDcmVkZW50aWFsKCpm
cmFtZSwgY2FsbGVyT3JpZ2luLCBjbGllbnREYXRhSnNvbkhhc2gsIG9wdGlvbnMsIFdURk1vdmUo
Y2FsbGJhY2spKTsKIH0KIAotdm9pZCBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OmRpc2NvdmVy
RnJvbUV4dGVybmFsU291cmNlKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgUHVibGlj
S2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiBvcHRpb25zLCBib29sIHNhbWVPcmlnaW5XaXRo
QW5jZXN0b3JzLCBSZWZQdHI8QWJvcnRTaWduYWw+JiYgYWJvcnRTaWduYWwsIENyZWRlbnRpYWxQ
cm9taXNlJiYgcHJvbWlzZSkgY29uc3QKK3ZvaWQgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpk
aXNjb3ZlckZyb21FeHRlcm5hbFNvdXJjZShjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0
IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYgb3B0aW9ucywgV2ViQXV0aG46OlNj
b3BlIHNjb3BlLCBSZWZQdHI8QWJvcnRTaWduYWw+JiYgYWJvcnRTaWduYWwsIENyZWRlbnRpYWxQ
cm9taXNlJiYgcHJvbWlzZSkgY29uc3QKIHsKICAgICB1c2luZyBuYW1lc3BhY2UgQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9ySW50ZXJuYWw7CiAKQEAgLTE4NSw3ICsxODYsOCBAQCB2b2lkIEF1dGhl
bnRpY2F0b3JDb29yZGluYXRvcjo6ZGlzY292ZXJGcm9tRXh0ZXJuYWxTb3VyY2UoY29uc3QgRG9j
dW1lbnQmIGRvY3VtZQogICAgIC8vIFRoZSBmb2xsb3dpbmcgaW1wbGVtZW50cyBodHRwczovL3d3
dy53My5vcmcvVFIvd2ViYXV0aG4vI2NyZWF0ZUNyZWRlbnRpYWwgYXMgb2YgNSBEZWNlbWJlciAy
MDE3LgogICAgIC8vIFN0ZXAgMSwgMywgMTMgYXJlIGhhbmRsZWQgYnkgdGhlIGNhbGxlci4KICAg
ICAvLyBTdGVwIDIuCi0gICAgaWYgKCFzYW1lT3JpZ2luV2l0aEFuY2VzdG9ycykgeworICAgIC8v
IFRoaXMgaW1wbGVtZW50cyBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jc2N0bi1w
ZXJtaXNzaW9ucy1wb2xpY3kgZXhjZXB0IG9ubHkgc2FtZS1zaXRlLCBjcm9zcy1vcmlnaW4gaXMg
cGVybWl0dGVkLgorICAgIGlmIChzY29wZSAhPSBXZWJBdXRobjo6U2NvcGU6OlNhbWVPcmlnaW4g
JiYgIShzY29wZSA9PSBXZWJBdXRobjo6U2NvcGU6OlNhbWVTaXRlICYmIGlzRmVhdHVyZVBvbGlj
eUFsbG93ZWRCeURvY3VtZW50QW5kQWxsT3duZXJzKEZlYXR1cmVQb2xpY3k6OlR5cGU6OlB1Ymxp
Y2tleUNyZWRlbnRpYWxzR2V0UnVsZSwgZG9jdW1lbnQsIExvZ0ZlYXR1cmVQb2xpY3lGYWlsdXJl
OjpObykpKSB7CiAgICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IE5vdEFsbG93ZWRF
cnJvciwgIlRoZSBvcmlnaW4gb2YgdGhlIGRvY3VtZW50IGlzIG5vdCB0aGUgc2FtZSBhcyBpdHMg
YW5jZXN0b3JzLiJfcyB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTIxOSw3ICsyMjEs
NyBAQCB2b2lkIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6ZGlzY292ZXJGcm9tRXh0ZXJuYWxT
b3VyY2UoY29uc3QgRG9jdW1lbnQmIGRvY3VtZQogICAgIH0KIAogICAgIC8vIFN0ZXAgMTAtMTIu
Ci0gICAgYXV0byBjbGllbnREYXRhSnNvbiA9IGJ1aWxkQ2xpZW50RGF0YUpzb24oQ2xpZW50RGF0
YVR5cGU6OkdldCwgb3B0aW9ucy5jaGFsbGVuZ2UsIGNhbGxlck9yaWdpbik7CisgICAgYXV0byBj
bGllbnREYXRhSnNvbiA9IGJ1aWxkQ2xpZW50RGF0YUpzb24oQ2xpZW50RGF0YVR5cGU6OkdldCwg
b3B0aW9ucy5jaGFsbGVuZ2UsIGNhbGxlck9yaWdpbiwgc2NvcGUpOwogICAgIGF1dG8gY2xpZW50
RGF0YUpzb25IYXNoID0gYnVpbGRDbGllbnREYXRhSnNvbkhhc2goY2xpZW50RGF0YUpzb24pOwog
CiAgICAgLy8gU3RlcCA0LCAxNC0xOS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oCmluZGV4IGZmZmUyMGIw
MDE3NGVkMjRlNjg3ZjQ3N2M5MDQ0MmY3NWI2MTM1NWUuLmY0OTUwMzA4NmM5YWNjNzkxOTMzODdm
NzZmYjZhNWJlYTIwNzgwYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaApAQCAtMzEsNiArMzEsMTAg
QEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5o
PgogCituYW1lc3BhY2UgV2ViQXV0aG4geworZW51bSBjbGFzcyBTY29wZTsKK30KKwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBBYm9ydFNpZ25hbDsKQEAgLTUzLDggKzU3LDggQEAgcHVi
bGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQ+JiYpOwogCiAgICAgLy8gVGhlIGZvbGxvd2lu
ZyBtZXRob2RzIGltcGxlbWVudCBzdGF0aWMgbWV0aG9kcyBvZiBQdWJsaWNLZXlDcmVkZW50aWFs
LgotICAgIHZvaWQgY3JlYXRlKGNvbnN0IERvY3VtZW50JiwgY29uc3QgUHVibGljS2V5Q3JlZGVu
dGlhbENyZWF0aW9uT3B0aW9ucyYsIGJvb2wgc2FtZU9yaWdpbldpdGhBbmNlc3RvcnMsIFJlZlB0
cjxBYm9ydFNpZ25hbD4mJiwgQ3JlZGVudGlhbFByb21pc2UmJikgY29uc3Q7Ci0gICAgdm9pZCBk
aXNjb3ZlckZyb21FeHRlcm5hbFNvdXJjZShjb25zdCBEb2N1bWVudCYsIGNvbnN0IFB1YmxpY0tl
eUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYsIGJvb2wgc2FtZU9yaWdpbldpdGhBbmNlc3RvcnMs
IFJlZlB0cjxBYm9ydFNpZ25hbD4mJiwgQ3JlZGVudGlhbFByb21pc2UmJikgY29uc3Q7CisgICAg
dm9pZCBjcmVhdGUoY29uc3QgRG9jdW1lbnQmLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsQ3Jl
YXRpb25PcHRpb25zJiwgV2ViQXV0aG46OlNjb3BlLCBSZWZQdHI8QWJvcnRTaWduYWw+JiYsIENy
ZWRlbnRpYWxQcm9taXNlJiYpIGNvbnN0OworICAgIHZvaWQgZGlzY292ZXJGcm9tRXh0ZXJuYWxT
b3VyY2UoY29uc3QgRG9jdW1lbnQmLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9w
dGlvbnMmLCBXZWJBdXRobjo6U2NvcGUsIFJlZlB0cjxBYm9ydFNpZ25hbD4mJiwgQ3JlZGVudGlh
bFByb21pc2UmJikgY29uc3Q7CiAgICAgdm9pZCBpc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhl
bnRpY2F0b3JBdmFpbGFibGUoRE9NUHJvbWlzZURlZmVycmVkPElETEJvb2xlYW4+JiYpIGNvbnN0
OwogCiAgICAgdm9pZCByZXNldFVzZXJHZXN0dXJlUmVxdWlyZW1lbnQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vV2ViQXV0aGVudGljYXRpb25Db25zdGFu
dHMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vV2ViQXV0aGVudGljYXRpb25D
b25zdGFudHMuaAppbmRleCA0NTFmZjMzYjI4ZWQ1MGI1YmFmN2I5YTM5Y2VhODIwNzdlNTMxMTUx
Li44NGE3N2JlYzdiYTJhM2M5OWE3MGMzMDQzNDJkOTFhNGYxOTc5MWE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1dlYkF1dGhlbnRpY2F0aW9uQ29uc3RhbnRz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9XZWJBdXRoZW50aWNhdGlv
bkNvbnN0YW50cy5oCkBAIC04MCwzICs4MCwxMyBAQCBlbnVtIGNsYXNzIENsaWVudERhdGFUeXBl
IDogYm9vbCB7CiBjb25zdCBjaGFyIExvY2FsQXV0aGVudGljYXRpb3JBY2Nlc3NHcm91cFtdID0g
ImNvbS5hcHBsZS53ZWJraXQud2ViYXV0aG4iOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
K25hbWVzcGFjZSBXZWJBdXRobiB7CisKK2VudW0gY2xhc3MgU2NvcGUgeworICAgIENyb3NzT3Jp
Z2luLAorICAgIFNhbWVPcmlnaW4sCisgICAgU2FtZVNpdGUKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYkF1dGhuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1dl
YkF1dGhlbnRpY2F0aW9uVXRpbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRo
bi9XZWJBdXRoZW50aWNhdGlvblV0aWxzLmNwcAppbmRleCBjOGUwZDI4MmQ1M2IwODZkMjE5NDdm
ZmUxMGZkOGY2OThlZDA0ODk2Li44ZDQ3M2NhMjU5ZjJjNmJjMGY1YjVhMjZiMGMyZDJhODQwY2Rm
NWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1dlYkF1dGhl
bnRpY2F0aW9uVXRpbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4v
V2ViQXV0aGVudGljYXRpb25VdGlscy5jcHAKQEAgLTEzNCw3ICsxMzQsNyBAQCBWZWN0b3I8dWlu
dDhfdD4gYnVpbGRBdHRlc3RhdGlvbk9iamVjdChWZWN0b3I8dWludDhfdD4mJiBhdXRoRGF0YSwg
U3RyaW5nJiYgZm9ybQogfQogCiAvLyBGSVhNRSgxODE5NDgpOiBBZGQgdG9rZW4gYmluZGluZyBJ
RC4KLVJlZjxBcnJheUJ1ZmZlcj4gYnVpbGRDbGllbnREYXRhSnNvbihDbGllbnREYXRhVHlwZSB0
eXBlLCBjb25zdCBCdWZmZXJTb3VyY2UmIGNoYWxsZW5nZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4m
IG9yaWdpbikKK1JlZjxBcnJheUJ1ZmZlcj4gYnVpbGRDbGllbnREYXRhSnNvbihDbGllbnREYXRh
VHlwZSB0eXBlLCBjb25zdCBCdWZmZXJTb3VyY2UmIGNoYWxsZW5nZSwgY29uc3QgU2VjdXJpdHlP
cmlnaW4mIG9yaWdpbiwgV2ViQXV0aG46OlNjb3BlIHNjb3BlKQogewogICAgIGF1dG8gb2JqZWN0
ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBzd2l0Y2ggKHR5cGUpIHsKQEAgLTE0Nyw2
ICsxNDcsOCBAQCBSZWY8QXJyYXlCdWZmZXI+IGJ1aWxkQ2xpZW50RGF0YUpzb24oQ2xpZW50RGF0
YVR5cGUgdHlwZSwgY29uc3QgQnVmZmVyU291cmNlJiBjaAogICAgIH0KICAgICBvYmplY3QtPnNl
dFN0cmluZygiY2hhbGxlbmdlIl9zLCBiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhjaGFsbGVuZ2Uu
ZGF0YSgpLCBjaGFsbGVuZ2UubGVuZ3RoKCkpKTsKICAgICBvYmplY3QtPnNldFN0cmluZygib3Jp
Z2luIl9zLCBvcmlnaW4udG9SYXdTdHJpbmcoKSk7CisgICAgaWYgKHNjb3BlICE9IFdlYkF1dGhu
OjpTY29wZTo6U2FtZU9yaWdpbikKKyAgICAgICAgb2JqZWN0LT5zZXRCb29sZWFuKCJjcm9zc09y
aWdpbiJfcywgc2NvcGUgIT0gV2ViQXV0aG46OlNjb3BlOjpTYW1lT3JpZ2luKTsKIAogICAgIGF1
dG8gdXRmOEpTT05TdHJpbmcgPSBvYmplY3QtPnRvSlNPTlN0cmluZygpLnV0ZjgoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9XZWJBdXRoZW50aWNhdGlv
blV0aWxzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1dlYkF1dGhlbnRpY2F0
aW9uVXRpbHMuaAppbmRleCBhMDc5MjExZGViMTdjOGUyNmJiZjFlODlkMzIwZjExYzg1OTM3ZTU3
Li5hNjQyNTQ0ZDRhNjU4NjhiYjRkYTk3MzJkYWUwMjhjZGZjNTU4YzBiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1dlYkF1dGhlbnRpY2F0aW9uVXRpbHMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1dlYkF1dGhlbnRpY2F0aW9uVXRp
bHMuaApAQCAtNTIsNyArNTIsNyBAQCBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gYnVp
bGRBdXRoRGF0YShjb25zdCBTdHJpbmcmIHJwSWQsIGNvbnN0IHVpbnQ4X3QgZgogLy8gaHR0cHM6
Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLyNhdHRlc3RhdGlvbi1vYmplY3QKIFdFQkNPUkVfRVhQ
T1JUIFZlY3Rvcjx1aW50OF90PiBidWlsZEF0dGVzdGF0aW9uT2JqZWN0KFZlY3Rvcjx1aW50OF90
PiYmIGF1dGhEYXRhLCBTdHJpbmcmJiBmb3JtYXQsIGNib3I6OkNCT1JWYWx1ZTo6TWFwVmFsdWUm
JiBzdGF0ZW1lbnRNYXAsIGNvbnN0IEF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2UmKTsK
IAotV0VCQ09SRV9FWFBPUlQgUmVmPEFycmF5QnVmZmVyPiBidWlsZENsaWVudERhdGFKc29uKENs
aWVudERhdGFUeXBlIC8qdHlwZSovLCBjb25zdCBCdWZmZXJTb3VyY2UmIGNoYWxsZW5nZSwgY29u
c3QgU2VjdXJpdHlPcmlnaW4mIC8qb3JpZ2luKi8pOworV0VCQ09SRV9FWFBPUlQgUmVmPEFycmF5
QnVmZmVyPiBidWlsZENsaWVudERhdGFKc29uKENsaWVudERhdGFUeXBlIC8qdHlwZSovLCBjb25z
dCBCdWZmZXJTb3VyY2UmIGNoYWxsZW5nZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIC8qb3JpZ2lu
Ki8sIFdlYkF1dGhuOjpTY29wZSk7CiAKIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBi
dWlsZENsaWVudERhdGFKc29uSGFzaChjb25zdCBBcnJheUJ1ZmZlciYgY2xpZW50RGF0YUpzb24p
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZlYXR1cmVQb2xpY3kuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9GZWF0dXJlUG9saWN5LmNwcAppbmRleCA1NjAwY2ExYWJiMDRi
OTRiYmZmYzRmZWQ1MDQzNWIxMzQ1Mjk2M2U2Li41ODQ4ZDBhYjljMmQ3NTY0ZjA4ZjQ4NzUyYjkz
NWUxODEwYjExODE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZlYXR1cmVQb2xp
Y3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmVhdHVyZVBvbGljeS5jcHAKQEAgLTY3
LDYgKzY3LDEwIEBAIHN0YXRpYyBjb25zdCBjaGFyKiBwb2xpY3lUeXBlTmFtZShGZWF0dXJlUG9s
aWN5OjpUeXBlIHR5cGUpCiAgICAgY2FzZSBGZWF0dXJlUG9saWN5OjpUeXBlOjpNYWduZXRvbWV0
ZXI6CiAgICAgICAgIHJldHVybiAiTWFnbmV0b21ldGVyIjsKICNlbmRpZgorI2lmIEVOQUJMRShX
RUJfQVVUSE4pCisgICAgY2FzZSBGZWF0dXJlUG9saWN5OjpUeXBlOjpQdWJsaWNrZXlDcmVkZW50
aWFsc0dldFJ1bGU6CisgICAgICAgIHJldHVybiAiUHVibGlja2V5Q3JlZGVudGlhbHNHZXQiOwor
I2VuZGlmCiAjaWYgRU5BQkxFKFdFQlhSKQogICAgIGNhc2UgRmVhdHVyZVBvbGljeTo6VHlwZTo6
WFJTcGF0aWFsVHJhY2tpbmc6CiAgICAgICAgIHJldHVybiAiWFJTcGF0aWFsVHJhY2tpbmciOwpA
QCAtMTg0LDYgKzE4OCw5IEBAIEZlYXR1cmVQb2xpY3kgRmVhdHVyZVBvbGljeTo6cGFyc2UoRG9j
dW1lbnQmIGRvY3VtZW50LCBjb25zdCBIVE1MSUZyYW1lRWxlbWVudCYKICAgICBib29sIGlzQWNj
ZWxlcm9tZXRlckluaXRpYWxpemVkID0gZmFsc2U7CiAgICAgYm9vbCBpc01hZ25ldG9tZXRlcklu
aXRpYWxpemVkID0gZmFsc2U7CiAjZW5kaWYKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorICAgIGJv
b2wgaXNQdWJsaWNrZXlDcmVkZW50aWFsc0dldEluaXRpYWxpemVkID0gZmFsc2U7CisjZW5kaWYK
ICNpZiBFTkFCTEUoV0VCWFIpCiAgICAgYm9vbCBpc1hSU3BhdGlhbFRyYWNraW5nSW5pdGlhbGl6
ZWQgPSBmYWxzZTsKICNlbmRpZgpAQCAtMjUxLDYgKzI1OCwxMyBAQCBGZWF0dXJlUG9saWN5IEZl
YXR1cmVQb2xpY3k6OnBhcnNlKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgSFRNTElGcmFtZUVs
ZW1lbnQmCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogI2VuZGlmCisjaWYgRU5B
QkxFKFdFQl9BVVRITikKKyAgICAgICAgaWYgKGl0ZW0uc3RhcnRzV2l0aCgicHVibGlja2V5LWNy
ZWRlbnRpYWxzLWdldCIpKSB7CisgICAgICAgICAgICBpc1B1YmxpY2tleUNyZWRlbnRpYWxzR2V0
SW5pdGlhbGl6ZWQgPSB0cnVlOworICAgICAgICAgICAgdXBkYXRlTGlzdChkb2N1bWVudCwgcG9s
aWN5Lm1fcHVibGlja2V5Q3JlZGVudGlhbHNHZXRSdWxlLCBpdGVtLnN1YnN0cmluZygyNikpOwor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyNlbmRpZgogI2lmIEVOQUJMRShXRUJY
UikKICAgICAgICAgaWYgKGl0ZW0uc3RhcnRzV2l0aCgieHItc3BhdGlhbC10cmFja2luZyIpKSB7
CiAgICAgICAgICAgICBpc1hSU3BhdGlhbFRyYWNraW5nSW5pdGlhbGl6ZWQgPSB0cnVlOwpAQCAt
MjgzLDYgKzI5NywxMCBAQCBGZWF0dXJlUG9saWN5IEZlYXR1cmVQb2xpY3k6OnBhcnNlKERvY3Vt
ZW50JiBkb2N1bWVudCwgY29uc3QgSFRNTElGcmFtZUVsZW1lbnQmCiAgICAgaWYgKCFpc01hZ25l
dG9tZXRlckluaXRpYWxpemVkKQogICAgICAgICBwb2xpY3kubV9tYWduZXRvbWV0ZXJSdWxlLmFs
bG93ZWRMaXN0LmFkZChkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSk7CiAjZW5kaWYK
KyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorICAgIGlmICghaXNQdWJsaWNrZXlDcmVkZW50aWFsc0dl
dEluaXRpYWxpemVkKQorICAgICAgICBwb2xpY3kubV9wdWJsaWNrZXlDcmVkZW50aWFsc0dldFJ1
bGUuYWxsb3dlZExpc3QuYWRkKGRvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpKTsKKyNl
bmRpZgogI2lmIEVOQUJMRShXRUJYUikKICAgICBpZiAoIWlzWFJTcGF0aWFsVHJhY2tpbmdJbml0
aWFsaXplZCkKICAgICAgICAgcG9saWN5Lm1feHJTcGF0aWFsVHJhY2tpbmdSdWxlLmFsbG93ZWRM
aXN0LmFkZChkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSk7CkBAIC0zMzgsNiArMzU2
LDEwIEBAIGJvb2wgRmVhdHVyZVBvbGljeTo6YWxsb3dzKFR5cGUgdHlwZSwgY29uc3QgU2VjdXJp
dHlPcmlnaW5EYXRhJiBvcmlnaW4pIGNvbnN0CiAgICAgY2FzZSBUeXBlOjpNYWduZXRvbWV0ZXI6
CiAgICAgICAgIHJldHVybiBpc0FsbG93ZWRCeUZlYXR1cmVQb2xpY3kobV9tYWduZXRvbWV0ZXJS
dWxlLCBvcmlnaW4pOwogI2VuZGlmCisjaWYgRU5BQkxFKFdFQl9BVVRITikKKyAgICBjYXNlIFR5
cGU6OlB1YmxpY2tleUNyZWRlbnRpYWxzR2V0UnVsZToKKyAgICAgICAgcmV0dXJuIGlzQWxsb3dl
ZEJ5RmVhdHVyZVBvbGljeShtX3B1YmxpY2tleUNyZWRlbnRpYWxzR2V0UnVsZSwgb3JpZ2luKTsK
KyNlbmRpZgogI2lmIEVOQUJMRShXRUJYUikKICAgICBjYXNlIFR5cGU6OlhSU3BhdGlhbFRyYWNr
aW5nOgogICAgICAgICByZXR1cm4gaXNBbGxvd2VkQnlGZWF0dXJlUG9saWN5KG1feHJTcGF0aWFs
VHJhY2tpbmdSdWxlLCBvcmlnaW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9G
ZWF0dXJlUG9saWN5LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZlYXR1cmVQb2xpY3kuaAppbmRl
eCBlNjQwZjhhNWQ3MjNkZTAxZTlhNjRiNTEwNjY2YjkzYTY3OTdhNzkyLi4yOGVmYTMxNTg1MTA5
MDMxYjk3MzRkMGYxMjM1MWY5M2RlYmUzNDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0ZlYXR1cmVQb2xpY3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZlYXR1cmVQb2xp
Y3kuaApAQCAtNTMsNiArNTMsOSBAQCBwdWJsaWM6CiAgICAgICAgIEFjY2VsZXJvbWV0ZXIsCiAg
ICAgICAgIE1hZ25ldG9tZXRlciwKICNlbmRpZgorI2lmIEVOQUJMRShXRUJfQVVUSE4pCisgICAg
ICAgIFB1YmxpY2tleUNyZWRlbnRpYWxzR2V0UnVsZSwKKyNlbmRpZgogI2lmIEVOQUJMRShXRUJY
UikKICAgICAgICAgWFJTcGF0aWFsVHJhY2tpbmcsCiAjZW5kaWYKQEAgLTgxLDYgKzg0LDkgQEAg
cHJpdmF0ZToKICAgICBBbGxvd1J1bGUgbV9hY2NlbGVyb21ldGVyUnVsZTsKICAgICBBbGxvd1J1
bGUgbV9tYWduZXRvbWV0ZXJSdWxlOwogI2VuZGlmCisjaWYgRU5BQkxFKFdFQl9BVVRITikKKyAg
ICBBbGxvd1J1bGUgbV9wdWJsaWNrZXlDcmVkZW50aWFsc0dldFJ1bGU7CisjZW5kaWYKICNpZiBF
TkFCTEUoV0VCWFIpCiAgICAgQWxsb3dSdWxlIG1feHJTcGF0aWFsVHJhY2tpbmdSdWxlOwogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9Db2NvYS9BdXRoZW50
aWNhdGlvblNlcnZpY2VzQ29yZVNQSS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvQ29j
b2EvQXV0aGVudGljYXRpb25TZXJ2aWNlc0NvcmVTUEkuaAppbmRleCAzOTQ4MjJkNTUwZTk1MmEy
ZWQ5N2E4YjI2Y2I1NWQxMjY3MTFiMTdkLi5kNmFjNjg1NjdiNmE4YjkyODEyNGQ0NjNlMDQ4Mzhk
N2MxOWQ0NTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9Db2NvYS9B
dXRoZW50aWNhdGlvblNlcnZpY2VzQ29yZVNQSS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vc3BpL0NvY29hL0F1dGhlbnRpY2F0aW9uU2VydmljZXNDb3JlU1BJLmgKQEAgLTEwNyw3ICsx
MDcsOCBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBBU0NTZWN1cml0eUtleVB1YmxpY0tl
eUNyZWRlbnRpYWxLaW5kKSB7CiAKIEBpbnRlcmZhY2UgQVNDUHVibGljS2V5Q3JlZGVudGlhbENy
ZWF0aW9uT3B0aW9ucyA6IE5TT2JqZWN0IDxOU1NlY3VyZUNvZGluZz4KIAotQHByb3BlcnR5IChu
b25hdG9taWMsIGNvcHkpIE5TRGF0YSAqY2hhbGxlbmdlOworQHByb3BlcnR5IChub25hdG9taWMs
IG51bGxhYmxlLCBjb3B5KSBOU0RhdGEgKmNoYWxsZW5nZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWlj
LCBudWxsYWJsZSwgY29weSkgTlNEYXRhICpjbGllbnREYXRhSGFzaDsKIEBwcm9wZXJ0eSAobm9u
YXRvbWljLCBjb3B5KSBOU1N0cmluZyAqcmVseWluZ1BhcnR5SWRlbnRpZmllcjsKIEBwcm9wZXJ0
eSAobm9uYXRvbWljLCBjb3B5KSBOU1N0cmluZyAqdXNlck5hbWU7CiBAcHJvcGVydHkgKG5vbmF0
b21pYywgY29weSkgTlNEYXRhICp1c2VySWRlbnRpZmllcjsKQEAgLTExOCw2ICsxMTksMTMgQEAg
dHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgQVNDU2VjdXJpdHlLZXlQdWJsaWNLZXlDcmVkZW50
aWFsS2luZCkgewogCiBAZW5kCiAKK0BpbnRlcmZhY2UgQVNDUHVibGljS2V5Q3JlZGVudGlhbEFz
c2VydGlvbk9wdGlvbnMgOiBOU09iamVjdCA8TlNTZWN1cmVDb2Rpbmc+CitAcHJvcGVydHkgKG5v
bmF0b21pYywgY29weSwgcmVhZG9ubHkpIE5TU3RyaW5nICpyZWx5aW5nUGFydHlJZGVudGlmaWVy
OworQHByb3BlcnR5IChub25hdG9taWMsIG51bGxhYmxlLCBjb3B5LCByZWFkb25seSkgTlNEYXRh
ICpjaGFsbGVuZ2U7CitAcHJvcGVydHkgKG5vbmF0b21pYywgbnVsbGFibGUsIGNvcHkpIE5TRGF0
YSAqY2xpZW50RGF0YUhhc2g7CitAcHJvcGVydHkgKG5vbmF0b21pYywgbnVsbGFibGUsIHJlYWRv
bmx5LCBjb3B5KSBOU1N0cmluZyAqdXNlclZlcmlmaWNhdGlvblByZWZlcmVuY2U7CitAZW5kCisK
IEBpbnRlcmZhY2UgQVNDU2VjdXJpdHlLZXlQdWJsaWNLZXlDcmVkZW50aWFsTG9naW5DaG9pY2Ug
OiBOU09iamVjdCA8QVNDTG9naW5DaG9pY2VQcm90b2NvbD4KIAogLSAoaW5zdGFuY2V0eXBlKWlu
aXRSZWdpc3RyYXRpb25DaG9pY2VXaXRoT3B0aW9uczooQVNDUHVibGljS2V5Q3JlZGVudGlhbENy
ZWF0aW9uT3B0aW9ucyAqKW9wdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCmluZGV4
IGU1ZjlkNmU0ZjcxMWNmYWQwMTgxM2Y1NGEyNDgxMjBlN2NjZjMwZjYuLjRiOTE0ZTQwMTRjM2Jh
ZTg1ODNkMzc4MTEyNmMxMTZiMGY4ODVkMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1t
CkBAIC04Nyw3ICs4Nyw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNEYXRhPiBwcm9kdWNlQ2xpZW50
RGF0YUpzb24oX1dLV2ViQXV0aGVudGljYXRpb25UeXBlIHR5cGUsIE5TCiAgICAgYXV0byBjaGFs
bGVuZ2VCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDhfdCo+KGNoYWxsZW5nZS5ieXRlcyksIGNoYWxsZW5nZS5sZW5ndGgpOwogICAgIGF1
dG8gc2VjdXJpdHlPcmlnaW4gPSBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0
cmluZyhvcmlnaW4pOwogCi0gICAgYXV0byBjbGllbnREYXRhSnNvbiA9IGJ1aWxkQ2xpZW50RGF0
YUpzb24oY2xpZW50RGF0YVR5cGUsIFdlYkNvcmU6OkJ1ZmZlclNvdXJjZShjaGFsbGVuZ2VCdWZm
ZXIpLCBzZWN1cml0eU9yaWdpbik7CisgICAgYXV0byBjbGllbnREYXRhSnNvbiA9IGJ1aWxkQ2xp
ZW50RGF0YUpzb24oY2xpZW50RGF0YVR5cGUsIFdlYkNvcmU6OkJ1ZmZlclNvdXJjZShjaGFsbGVu
Z2VCdWZmZXIpLCBzZWN1cml0eU9yaWdpbiwgV2ViQXV0aG46OlNjb3BlOjpTYW1lT3JpZ2luKTsK
ICAgICByZXR1cm4gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlczpjbGllbnRE
YXRhSnNvbi0+ZGF0YSgpIGxlbmd0aDpjbGllbnREYXRhSnNvbi0+Ynl0ZUxlbmd0aCgpXSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L0NvY29hL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5Lm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yUHJveHkubW0KaW5kZXggM2YwOWMwZDcwMDBkMzBmNmQ0MDNhYTM3MjljOWE5OGRkMjky
NGI5NC4uM2IyMTgzZTJlNWFiOWQwZjkyYjljOTY2NWJhYmM3OTZiN2U4YTM1YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJv
eHkubW0KQEAgLTE0NSw3ICsxNDUsNyBAQCBzdGF0aWMgaW5saW5lIFJldGFpblB0cjxBU0NQdWJs
aWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvcj4gdG9BU0NEZXNjcmlwdG9yKFB1YmxpYwogICAgIHJl
dHVybiBhZG9wdE5TKFthbGxvY0FTQ1B1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9ySW5zdGFu
Y2UoKSBpbml0V2l0aENyZWRlbnRpYWxJRDpXZWJDb3JlOjp0b05TRGF0YShkZXNjcmlwdG9yLmlk
KS5nZXQoKSB0cmFuc3BvcnRzOnRyYW5zcG9ydHMuZ2V0KCldKTsKIH0KIAotc3RhdGljIFJldGFp
blB0cjxBU0NDcmVkZW50aWFsUmVxdWVzdENvbnRleHQ+IGNvbmZpZ3VyZVJlZ2lzdHJhdGlvblJl
cXVlc3RDb250ZXh0KGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmIG9w
dGlvbnMpCitzdGF0aWMgUmV0YWluUHRyPEFTQ0NyZWRlbnRpYWxSZXF1ZXN0Q29udGV4dD4gY29u
ZmlndXJlUmVnaXN0cmF0aW9uUmVxdWVzdENvbnRleHQoY29uc3QgUHVibGljS2V5Q3JlZGVudGlh
bENyZWF0aW9uT3B0aW9ucyYgb3B0aW9ucywgTlNEYXRhICpoYXNoKQogewogICAgIEFTQ0NyZWRl
bnRpYWxSZXF1ZXN0VHlwZXMgcmVxdWVzdFR5cGVzID0gQVNDQ3JlZGVudGlhbFJlcXVlc3RUeXBl
UGxhdGZvcm1QdWJsaWNLZXlSZWdpc3RyYXRpb24gfCBBU0NDcmVkZW50aWFsUmVxdWVzdFR5cGVT
ZWN1cml0eUtleVB1YmxpY0tleVJlZ2lzdHJhdGlvbjsKIApAQCAtMTY5LDcgKzE2OSwxMCBAQCBz
dGF0aWMgUmV0YWluUHRyPEFTQ0NyZWRlbnRpYWxSZXF1ZXN0Q29udGV4dD4gY29uZmlndXJlUmVn
aXN0cmF0aW9uUmVxdWVzdENvbnRleAogCiAgICAgYXV0byBjcmVkZW50aWFsQ3JlYXRpb25PcHRp
b25zID0gYWRvcHROUyhbYWxsb2NBU0NQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25z
SW5zdGFuY2UoKSBpbml0XSk7CiAKLSAgICBbY3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyBzZXRD
aGFsbGVuZ2U6V2ViQ29yZTo6dG9OU0RhdGEob3B0aW9ucy5jaGFsbGVuZ2UpLmdldCgpXTsKKyAg
ICBpZiAoW2NyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3RvcihzZXRDbGllbnREYXRhSGFzaDopXSkKKyAgICAgICAgW2NyZWRlbnRpYWxDcmVhdGlvbk9w
dGlvbnMgc2V0Q2xpZW50RGF0YUhhc2g6dG9OU0RhdGEoaGFzaCkuZ2V0KCldOworICAgIGVsc2UK
KyAgICAgICAgW2NyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMgc2V0Q2hhbGxlbmdlOldlYkNvcmU6
OnRvTlNEYXRhKG9wdGlvbnMuY2hhbGxlbmdlKS5nZXQoKV07CiAgICAgW2NyZWRlbnRpYWxDcmVh
dGlvbk9wdGlvbnMgc2V0UmVseWluZ1BhcnR5SWRlbnRpZmllcjpvcHRpb25zLnJwLmlkXTsKICAg
ICBbY3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyBzZXRVc2VyTmFtZTpvcHRpb25zLnVzZXIubmFt
ZV07CiAgICAgW2NyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMgc2V0VXNlcklkZW50aWZpZXI6V2Vi
Q29yZTo6dG9OU0RhdGEob3B0aW9ucy51c2VyLmlkKS5nZXQoKV07CkBAIC0yMDIsNyArMjA1LDcg
QEAgc3RhdGljIFJldGFpblB0cjxBU0NDcmVkZW50aWFsUmVxdWVzdENvbnRleHQ+IGNvbmZpZ3Vy
ZVJlZ2lzdHJhdGlvblJlcXVlc3RDb250ZXgKICAgICByZXR1cm4gcmVxdWVzdENvbnRleHQ7CiB9
CiAKLXN0YXRpYyBSZXRhaW5QdHI8QVNDQ3JlZGVudGlhbFJlcXVlc3RDb250ZXh0PiBjb25maWd1
cmF0aW9uQXNzZXJ0aW9uUmVxdWVzdENvbnRleHQoY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbFJl
cXVlc3RPcHRpb25zJiBvcHRpb25zKQorc3RhdGljIFJldGFpblB0cjxBU0NDcmVkZW50aWFsUmVx
dWVzdENvbnRleHQ+IGNvbmZpZ3VyYXRpb25Bc3NlcnRpb25SZXF1ZXN0Q29udGV4dChjb25zdCBQ
dWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmIG9wdGlvbnMsIFZlY3Rvcjx1aW50Xzg+
IGhhc2gpCiB7CiAgICAgQVNDQ3JlZGVudGlhbFJlcXVlc3RUeXBlcyByZXF1ZXN0VHlwZXMgPSBB
U0NDcmVkZW50aWFsUmVxdWVzdFR5cGVQbGF0Zm9ybVB1YmxpY0tleUFzc2VydGlvbiB8IEFTQ0Ny
ZWRlbnRpYWxSZXF1ZXN0VHlwZVNlY3VyaXR5S2V5UHVibGljS2V5QXNzZXJ0aW9uOwogCkBAIC0y
MjcsMTMgKzIzMCwzMCBAQCBzdGF0aWMgUmV0YWluUHRyPEFTQ0NyZWRlbnRpYWxSZXF1ZXN0Q29u
dGV4dD4gY29uZmlndXJhdGlvbkFzc2VydGlvblJlcXVlc3RDb250ZQogICAgIGF1dG8gcmVxdWVz
dENvbnRleHQgPSBhZG9wdE5TKFthbGxvY0FTQ0NyZWRlbnRpYWxSZXF1ZXN0Q29udGV4dEluc3Rh
bmNlKCkgaW5pdFdpdGhSZXF1ZXN0VHlwZXM6cmVxdWVzdFR5cGVzXSk7CiAgICAgW3JlcXVlc3RD
b250ZXh0IHNldFJlbHlpbmdQYXJ0eUlkZW50aWZpZXI6b3B0aW9ucy5ycElkXTsKIAotICAgIGF1
dG8gY2hhbGxlbmdlID0gV2ViQ29yZTo6dG9OU0RhdGEob3B0aW9ucy5jaGFsbGVuZ2UpOworICAg
IGlmIChyZXF1ZXN0VHlwZXMgJiBBU0NDcmVkZW50aWFsUmVxdWVzdFR5cGVQbGF0Zm9ybVB1Ymxp
Y0tleUFzc2VydGlvbikgeworICAgICAgICBhdXRvIGFzc2VydGlvbk9wdGlvbnMgPSBhZG9wdE5T
KGFsbG9jQVNDUHVibGljS2V5Q3JlZGVudGlhbEFzc2VydGlvbk9wdGlvbnNJbnN0YW5jZSgpKTsK
KyAgICAgICAgaWYgKFthc3NlcnRpb25PcHRpb25zIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0
b3IoaW5pdFdpdGhLaW5kOnJlbHlpbmdQYXJ0eUlkZW50aWZpZXI6Y2xpZW50RGF0YUhhc2g6dXNl
clZlcmlmaWNhdGlvblByZWZlcmVuY2U6YWxsb3dlZENyZWRlbnRpYWxzOildKSB7CisgICAgICAg
ICAgICBhdXRvIG5zSGFzaCA9IHRvTlNEYXRhKGhhc2gpOworICAgICAgICAgICAgW2Fzc2VydGlv
bk9wdGlvbnMgaW5pdFdpdGhLaW5kOkFTQ1B1YmxpY0tleUNyZWRlbnRpYWxLaW5kUGxhdGZvcm0g
cmVseWluZ1BhcnR5SWRlbnRpZmllcjpvcHRpb25zLnJwSWQgY2xpZW50RGF0YUhhc2g6bnNIYXNo
IHVzZXJWZXJpZmljYXRpb25QcmVmZXJlbmNlOnVzZXJWZXJpZmljYXRpb24uZ2V0KCkgYWxsb3dl
ZENyZWRlbnRpYWxzOmFsbG93ZWRDcmVkZW50aWFscy5nZXQoKV0KKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIGF1dG8gY2hhbGxlbmdlID0gV2ViQ29yZTo6dG9OU0RhdGEob3B0aW9ucy5j
aGFsbGVuZ2UpOworICAgICAgICAgICAgW2Fzc2VydGlvbk9wdGlvbnMgaW5pdFdpdGhLaW5kOkFT
Q1B1YmxpY0tleUNyZWRlbnRpYWxLaW5kUGxhdGZvcm0gcmVseWluZ1BhcnR5SWRlbnRpZmllcjpv
cHRpb25zLnJwSWQgY2hhbGxlbmdlOmNoYWxsZW5nZS5nZXQoKSB1c2VyVmVyaWZpY2F0aW9uUHJl
ZmVyZW5jZTp1c2VyVmVyaWZpY2F0aW9uLmdldCgpIGFsbG93ZWRDcmVkZW50aWFsczphbGxvd2Vk
Q3JlZGVudGlhbHMuZ2V0KCldCisgICAgICAgIH0KIAotICAgIGlmIChyZXF1ZXN0VHlwZXMgJiBB
U0NDcmVkZW50aWFsUmVxdWVzdFR5cGVQbGF0Zm9ybVB1YmxpY0tleUFzc2VydGlvbikKLSAgICAg
ICAgW3JlcXVlc3RDb250ZXh0IHNldFBsYXRmb3JtS2V5Q3JlZGVudGlhbEFzc2VydGlvbk9wdGlv
bnM6W2FsbG9jQVNDUHVibGljS2V5Q3JlZGVudGlhbEFzc2VydGlvbk9wdGlvbnNJbnN0YW5jZSgp
IGluaXRXaXRoS2luZDpBU0NQdWJsaWNLZXlDcmVkZW50aWFsS2luZFBsYXRmb3JtIHJlbHlpbmdQ
YXJ0eUlkZW50aWZpZXI6b3B0aW9ucy5ycElkIGNoYWxsZW5nZTpjaGFsbGVuZ2UuZ2V0KCkgdXNl
clZlcmlmaWNhdGlvblByZWZlcmVuY2U6dXNlclZlcmlmaWNhdGlvbi5nZXQoKSBhbGxvd2VkQ3Jl
ZGVudGlhbHM6YWxsb3dlZENyZWRlbnRpYWxzLmdldCgpXV07CisgICAgICAgIFtyZXF1ZXN0Q29u
dGV4dCBzZXRQbGF0Zm9ybUtleUNyZWRlbnRpYWxBc3NlcnRpb25PcHRpb25zOmFzc2VydGlvbk9w
dGlvbnMuZ2V0KCldOworICAgIH0KIAotICAgIGlmIChyZXF1ZXN0VHlwZXMgJiBBU0NDcmVkZW50
aWFsUmVxdWVzdFR5cGVTZWN1cml0eUtleVB1YmxpY0tleUFzc2VydGlvbikKLSAgICAgICAgW3Jl
cXVlc3RDb250ZXh0IHNldFNlY3VyaXR5S2V5Q3JlZGVudGlhbEFzc2VydGlvbk9wdGlvbnM6W2Fs
bG9jQVNDUHVibGljS2V5Q3JlZGVudGlhbEFzc2VydGlvbk9wdGlvbnNJbnN0YW5jZSgpIGluaXRX
aXRoS2luZDpBU0NQdWJsaWNLZXlDcmVkZW50aWFsS2luZFNlY3VyaXR5S2V5IHJlbHlpbmdQYXJ0
eUlkZW50aWZpZXI6b3B0aW9ucy5ycElkIGNoYWxsZW5nZTpjaGFsbGVuZ2UuZ2V0KCkgdXNlclZl
cmlmaWNhdGlvblByZWZlcmVuY2U6dXNlclZlcmlmaWNhdGlvbi5nZXQoKSBhbGxvd2VkQ3JlZGVu
dGlhbHM6YWxsb3dlZENyZWRlbnRpYWxzLmdldCgpXV07CisgICAgaWYgKHJlcXVlc3RUeXBlcyAm
IEFTQ0NyZWRlbnRpYWxSZXF1ZXN0VHlwZVNlY3VyaXR5S2V5UHVibGljS2V5QXNzZXJ0aW9uKSB7
CisgICAgICAgIGF1dG8gYXNzZXJ0aW9uT3B0aW9ucyA9IGFkb3B0TlMoYWxsb2NBU0NQdWJsaWNL
ZXlDcmVkZW50aWFsQXNzZXJ0aW9uT3B0aW9uc0luc3RhbmNlKCkpOworICAgICAgICBpZiAoW2Fz
c2VydGlvbk9wdGlvbnMgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihpbml0V2l0aEtpbmQ6
cmVseWluZ1BhcnR5SWRlbnRpZmllcjpjbGllbnREYXRhSGFzaDp1c2VyVmVyaWZpY2F0aW9uUHJl
ZmVyZW5jZTphbGxvd2VkQ3JlZGVudGlhbHM6KV0pIHsKKyAgICAgICAgICAgIGF1dG8gbnNIYXNo
ID0gdG9OU0RhdGEoaGFzaCk7CisgICAgICAgICAgICBbYXNzZXJ0aW9uT3B0aW9ucyBpbml0V2l0
aEtpbmQ6QVNDUHVibGljS2V5Q3JlZGVudGlhbEtpbmRTZWN1cml0eUtleSByZWx5aW5nUGFydHlJ
ZGVudGlmaWVyOm9wdGlvbnMucnBJZCBjbGllbnREYXRhSGFzaDpuc0hhc2ggdXNlclZlcmlmaWNh
dGlvblByZWZlcmVuY2U6dXNlclZlcmlmaWNhdGlvbi5nZXQoKSBhbGxvd2VkQ3JlZGVudGlhbHM6
YWxsb3dlZENyZWRlbnRpYWxzLmdldCgpXV07CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICBhdXRvIGNoYWxsZW5nZSA9IFdlYkNvcmU6OnRvTlNEYXRhKG9wdGlvbnMuY2hhbGxlbmdlKTsK
KyAgICAgICAgICAgIFthc3NlcnRpb25PcHRpb25zIGluaXRXaXRoS2luZDpBU0NQdWJsaWNLZXlD
cmVkZW50aWFsS2luZFNlY3VyaXR5S2V5IHJlbHlpbmdQYXJ0eUlkZW50aWZpZXI6b3B0aW9ucy5y
cElkIGNoYWxsZW5nZTpjaGFsbGVuZ2UuZ2V0KCkgdXNlclZlcmlmaWNhdGlvblByZWZlcmVuY2U6
dXNlclZlcmlmaWNhdGlvbi5nZXQoKSBhbGxvd2VkQ3JlZGVudGlhbHM6YWxsb3dlZENyZWRlbnRp
YWxzLmdldCgpXV07CisgICAgICAgIH0KKyAgICAgICAgW3JlcXVlc3RDb250ZXh0IHNldFNlY3Vy
aXR5S2V5Q3JlZGVudGlhbEFzc2VydGlvbk9wdGlvbnM6YXNzZXJ0aW9uT3B0aW9ucy5nZXQoKV07
CisgICAgfQogCiAgICAgcmV0dXJuIHJlcXVlc3RDb250ZXh0OwogfQpAQCAtMjQyLDkgKzI2Miw5
IEBAIFJldGFpblB0cjxBU0NDcmVkZW50aWFsUmVxdWVzdENvbnRleHQ+IFdlYkF1dGhlbnRpY2F0
b3JDb29yZGluYXRvclByb3h5Ojpjb250ZXh0CiB7CiAgICAgUmV0YWluUHRyPEFTQ0NyZWRlbnRp
YWxSZXF1ZXN0Q29udGV4dD4gcmVzdWx0OwogICAgIFdURjo6c3dpdGNoT24ocmVxdWVzdERhdGEu
b3B0aW9ucywgWyZdKGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmIG9w
dGlvbnMpIHsKLSAgICAgICAgcmVzdWx0ID0gY29uZmlndXJlUmVnaXN0cmF0aW9uUmVxdWVzdENv
bnRleHQob3B0aW9ucyk7CisgICAgICAgIHJlc3VsdCA9IGNvbmZpZ3VyZVJlZ2lzdHJhdGlvblJl
cXVlc3RDb250ZXh0KG9wdGlvbnMsIHJlcXVlc3REYXRhLmhhc2gpOwogICAgIH0sIFsmXShjb25z
dCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmIG9wdGlvbnMpIHsKLSAgICAgICAg
cmVzdWx0ID0gY29uZmlndXJhdGlvbkFzc2VydGlvblJlcXVlc3RDb250ZXh0KG9wdGlvbnMpOwor
ICAgICAgICByZXN1bHQgPSBjb25maWd1cmF0aW9uQXNzZXJ0aW9uUmVxdWVzdENvbnRleHQob3B0
aW9ucywgcmVxdWVzdERhdGEuaGFzaCk7CiAgICAgfSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiYmIwMzg0ZGVkYjQyMTgzMmEyYzllMTllMGI3YmVjYzIxNzRkYTE1Li44ZjU0ODQy
ODQ4MzkyMWQ1NjRlYThhMzUwY2EwNThlMTZkMTMxY2Q5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAK
KzIwMjEtMTItMTMgIEogUGFzY29lICA8al9wYXNjb2VAYXBwbGUuY29tPgorCisgICAgICAgIFtX
ZWJBdXRobl0gQWxsb3cgc2FtZS1zaXRlLCBjcm9zcy1vcmlnaW4gaWZyYW1lIGdldCgpCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQxODAKKyAgICAg
ICAgcmRhcjovLzg1MTYxMTQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIGxheW91dCB0ZXN0IGZvciBXZWJBdXRobiBnZXQgYXNzZXJ0aW9ucyBv
biBjcm9zcy1zaXRlLCBzYW1lLXNpdGVzIGktZnJhbWVzIHdpdGgKKyAgICAgICAgcHVibGlja2V5
LWNyZWRlbnRpYWxzLWdldCBmZWF0dXJlIHBvbGljeS4KKworICAgICAgICAqIGh0dHAvd3B0L3dl
YmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1zYW1lLW9yaWdpbi13aXRoLWFuY2VzdG9ycy5o
dHRwcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtl
eS1jcmVkZW50aWFsLXNhbWUtb3JpZ2luLXdpdGgtYW5jZXN0b3JzLmh0dHBzLmh0bWw6CisgICAg
ICAgICogaHR0cC93cHQvd2ViYXV0aG4vcmVzb3VyY2VzL3V0aWwuanM6CisKIDIwMjEtMTItMTMg
IFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+CiAKICAgICAgICAgW2Nz
cy13cml0aW5nLW1vZGVzXSBVc2UgdGhlIGNvcnJlY3QgbWFyZ2lucyBpbiBjb21wdXRlSW5saW5l
UHJlZmVycmVkTG9naWNhbFdpZHRocyBpbiBvcnRob2dvbmFsIGZsb3dzCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtc2FtZS1v
cmlnaW4td2l0aC1hbmNlc3RvcnMuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0
cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLXNhbWUtb3JpZ2luLXdpdGgtYW5j
ZXN0b3JzLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCA2NTMwNjQ1YTE5NGI0NWFjZDA5ODNmYzM3
M2I1YWI2ZGE5NWYxNTk4Li5jNzAyMWQ4MTgxNzAyNDRkNjI0OGJmMDVlZDZhOGU5OWNjODcxM2Yx
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNy
ZWRlbnRpYWwtc2FtZS1vcmlnaW4td2l0aC1hbmNlc3RvcnMuaHR0cHMtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1z
YW1lLW9yaWdpbi13aXRoLWFuY2VzdG9ycy5odHRwcy1leHBlY3RlZC50eHQKQEAgLTIsNCArMiw3
IEBACiAKIFBBU1MgVGVzdHMgdGhhdCBhIGZyYW1lIHRoYXQgZG9lc24ndCBzaGFyZSB0aGUgc2Ft
ZSBvcmlnaW4gd2l0aCBhbGwgaXRzIGFuY2VzdG9ycyBjb3VsZCBub3QgYWNjZXNzIHRoZSBBUEku
CiBQQVNTIFRlc3RzIHRoYXQgYSBmcmFtZSB0aGF0IGRvZXNuJ3Qgc2hhcmUgdGhlIHNhbWUgb3Jp
Z2luIHdpdGggYWxsIGl0cyBhbmNlc3RvcnMgY291bGQgbm90IGFjY2VzcyB0aGUgQVBJLiAyCitQ
QVNTIFRlc3RzIHRoYXQgYSBmcmFtZSB0aGF0IGlzIHNhbWUtc2l0ZSwgY3Jvc3Mtb3JpZ2luIHdp
dGhvdXQgcHVibGlja2V5LWNyZWRlbnRpYWxzLWdldCBmZWF0dXJlIHBvbGljeSBjYW5ub3QgdXNl
IGdldCgpLgorUEFTUyBUZXN0cyB0aGF0IGEgZnJhbWUgdGhhdCBpcyBzYW1lLXNpdGUsIGNyb3Nz
LW9yaWdpbiB3aXRoIHB1YmxpY2tleS1jcmVkZW50aWFscy1nZXQgZmVhdHVyZSBwb2xpY3kgY2Fu
IHVzZSBnZXQoKS4KK1BBU1MgVGVzdHMgdGhhdCBhIGZyYW1lIHRoYXQgaXMgY3Jvc3Mtb3JpZ2lu
LCBOT1Qgc2FtZS1zaXRlICB3aXRoIHB1YmxpY2tleS1jcmVkZW50aWFscy1nZXQgZmVhdHVyZSBw
b2xpY3kgY2Fubm90IHVzZSBnZXQoKS4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93
cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLXNhbWUtb3JpZ2luLXdpdGgtYW5jZXN0
b3JzLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5
LWNyZWRlbnRpYWwtc2FtZS1vcmlnaW4td2l0aC1hbmNlc3RvcnMuaHR0cHMuaHRtbAppbmRleCA0
ZjFjNDBkOTFmZTc5MWRiZGUyMDlkMjg1MjY1YWUyMDhiNzNkMjMyLi41ODE0NzVlNTIwNTA0ZDA4
YTljMWZhNmYyNzgyNmM0ZTI1NTI4YjYyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dw
dC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtc2FtZS1vcmlnaW4td2l0aC1hbmNlc3Rv
cnMuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMt
a2V5LWNyZWRlbnRpYWwtc2FtZS1vcmlnaW4td2l0aC1hbmNlc3RvcnMuaHR0cHMuaHRtbApAQCAt
MjIsNiArMjIsMjQgQEAKICAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKG1lc3NhZ2UuZGF0
YSwgIlBBU1MuIik7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSwgIlRlc3RzIHRoYXQgYSBm
cmFtZSB0aGF0IGRvZXNuJ3Qgc2hhcmUgdGhlIHNhbWUgb3JpZ2luIHdpdGggYWxsIGl0cyBhbmNl
c3RvcnMgY291bGQgbm90IGFjY2VzcyB0aGUgQVBJLiAyIik7CisKKyAgICAgICAgcHJvbWlzZV90
ZXN0KHQgPT4geworICAgICAgICAgICAgcmV0dXJuIHdpdGhTYW1lU2l0ZUlmcmFtZSgic2FtZXNp
dGUtaWZyYW1lLmh0bWwiKS50aGVuKChtZXNzYWdlKSA9PiB7CisgICAgICAgICAgICAgICAgYXNz
ZXJ0X2VxdWFscyhtZXNzYWdlLmRhdGEsICJUaHJvdyBOb3RBbGxvd2VkRXJyb3I6IFRoZSBvcmln
aW4gb2YgdGhlIGRvY3VtZW50IGlzIG5vdCB0aGUgc2FtZSBhcyBpdHMgYW5jZXN0b3JzLiIpOwor
ICAgICAgICAgICAgfSk7CisgICAgICAgIH0sICJUZXN0cyB0aGF0IGEgZnJhbWUgdGhhdCBpcyBz
YW1lLXNpdGUsIGNyb3NzLW9yaWdpbiB3aXRob3V0IHB1YmxpY2tleS1jcmVkZW50aWFscy1nZXQg
ZmVhdHVyZSBwb2xpY3kgY2Fubm90IHVzZSBnZXQoKS4iKTsKKworICAgICAgICBwcm9taXNlX3Rl
c3QodCA9PiB7CisgICAgICAgICAgICByZXR1cm4gd2l0aFNhbWVTaXRlSWZyYW1lKCJzYW1lc2l0
ZS1pZnJhbWUuaHRtbCIsICJwdWJsaWNrZXktY3JlZGVudGlhbHMtZ2V0IikudGhlbigobWVzc2Fn
ZSkgPT4geworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMobWVzc2FnZS5kYXRhLCAiUEFT
UyEiKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9LCAiVGVzdHMgdGhhdCBhIGZyYW1lIHRo
YXQgaXMgc2FtZS1zaXRlLCBjcm9zcy1vcmlnaW4gd2l0aCBwdWJsaWNrZXktY3JlZGVudGlhbHMt
Z2V0IGZlYXR1cmUgcG9saWN5IGNhbiB1c2UgZ2V0KCkuIik7CisKKyAgICAgICAgcHJvbWlzZV90
ZXN0KHQgPT4geworICAgICAgICAgICAgcmV0dXJuIHdpdGhDcm9zc09yaWdpbklmcmFtZSgic2Ft
ZXNpdGUtaWZyYW1lLmh0bWwiLCAicHVibGlja2V5LWNyZWRlbnRpYWxzLWdldCIpLnRoZW4oKG1l
c3NhZ2UpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKG1lc3NhZ2UuZGF0YSwg
IlRocm93IE5vdEFsbG93ZWRFcnJvcjogVGhlIG9yaWdpbiBvZiB0aGUgZG9jdW1lbnQgaXMgbm90
IHRoZSBzYW1lIGFzIGl0cyBhbmNlc3RvcnMuIik7CisgICAgICAgICAgICB9KTsKKyAgICAgICAg
fSwgIlRlc3RzIHRoYXQgYSBmcmFtZSB0aGF0IGlzIGNyb3NzLW9yaWdpbiwgTk9UIHNhbWUtc2l0
ZSAgd2l0aCBwdWJsaWNrZXktY3JlZGVudGlhbHMtZ2V0IGZlYXR1cmUgcG9saWN5IGNhbm5vdCB1
c2UgZ2V0KCkuIik7CiAgICAgPC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9yZXNvdXJjZXMvc2FtZXNpdGUtaWZyYW1l
Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9yZXNvdXJjZXMvc2FtZXNpdGUt
aWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzZiMDc0Y2ZkNDZjYzI1MzdlNjllMWU0MWU2MDBiYzU2
ZmRmMDg3ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhu
L3Jlc291cmNlcy9zYW1lc2l0ZS1pZnJhbWUuaHRtbApAQCAtMCwwICsxLDMwIEBACis8c2NyaXB0
IHNyYz0iLi91dGlsLmpzIj48L3NjcmlwdD4KKzxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iaW5wdXQi
PgorPHNjcmlwdD4KKyAgICBjb25zdCB1cmwgPSBuZXcgVVJMKHdpbmRvdy5sb2NhdGlvbi5ocmVm
KTsKKyAgICBpZiAod2luZG93LmludGVybmFscykKK2ludGVybmFscy5zZXRNb2NrV2ViQXV0aGVu
dGljYXRpb25Db25maWd1cmF0aW9uKHsgbmZjOiB7IGVycm9yOiAic3VjY2VzcyIsIHBheWxvYWRC
YXNlNjQ6IFt0ZXN0TmZjQ3RhcFZlcnNpb25CYXNlNjQsIHRlc3RHZXRJbmZvUmVzcG9uc2VBcGR1
QmFzZTY0LCB0ZXN0QXNzZXJ0aW9uTWVzc2FnZUFwZHVCYXNlNjRdIH0gfSk7CisKKyAgICBmdW5j
dGlvbiBtZXNzYWdlVG9Ub3AobWVzc2FnZSkgeworICAgICAgICB0b3AucG9zdE1lc3NhZ2UobWVz
c2FnZSwgIioiKTsKKyAgICB9CisKKyAgICBjb25zdCByZXF1ZXN0T3B0aW9ucyA9IHsKKyAgICAg
ICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5
KCIxMjM0NTYiKSwKKyAgICAgICAgICAgIHRpbWVvdXQ6IDEwMAorICAgICAgICB9CisgICAgfTsK
KworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICBpbnRlcm5hbHMud2l0aFVzZXJH
ZXN0dXJlKCgpID0+IHsgaW5wdXQuZm9jdXMoKTsgfSk7CisKKyAgICBuYXZpZ2F0b3IuY3JlZGVu
dGlhbHMuZ2V0KHJlcXVlc3RPcHRpb25zKS50aGVuKAorICAgICAgICBmdW5jdGlvbih2YWx1ZSkg
eworICAgICAgICAgICAgbWVzc2FnZVRvVG9wKCJQQVNTISIpOworICAgICAgICB9LAorICAgICAg
ICBmdW5jdGlvbihleGNlcHRpb24pIHsKKyAgICAgICAgICAgIG1lc3NhZ2VUb1RvcCgiVGhyb3cg
IiArIGV4Y2VwdGlvbi5uYW1lICsgIjogIiArIGV4Y2VwdGlvbi5tZXNzYWdlKTsKKyAgICAgIH0K
KyAgICApOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJh
dXRobi9yZXNvdXJjZXMvdXRpbC5qcyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3Jl
c291cmNlcy91dGlsLmpzCmluZGV4IDhiZjZkMDJiYTI3OGNkYWZiNzkwOGFmNDVkYTUyNWUyNWQz
ODE2ZjAuLjgwMmUxOTVhOTAxNDU4YjFiNTY3NGViZjc1NzRhZWM1ODRlODU5NjIgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3Jlc291cmNlcy91dGlsLmpzCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3Jlc291cmNlcy91dGlsLmpzCkBAIC0zMDQs
MTggKzMwNCwzMyBAQCBmdW5jdGlvbiB3YWl0Rm9yTG9hZCgpCiAgICAgfSk7CiB9CiAKLWZ1bmN0
aW9uIHdpdGhDcm9zc09yaWdpbklmcmFtZShyZXNvdXJjZUZpbGUpCitmdW5jdGlvbiB3aXRoQ3Jv
c3NPcmlnaW5JZnJhbWUocmVzb3VyY2VGaWxlLCBhbGxvdyA9ICIiKQogewogICAgIHJldHVybiBu
ZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gewogICAgICAgICB3YWl0Rm9yTG9hZCgpLnRoZW4oKG1l
c3NhZ2UpID0+IHsKICAgICAgICAgICAgIHJlc29sdmUobWVzc2FnZSk7CiAgICAgICAgIH0pOwog
ICAgICAgICBjb25zdCBmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOwor
ICAgICAgICBmcmFtZS5hbGxvdyA9IGFsbG93OwogICAgICAgICBmcmFtZS5zcmMgPSBnZXRfaG9z
dF9pbmZvKCkuSFRUUFNfUkVNT1RFX09SSUdJTiArIFJFU09VUkNFU19ESVIgKyByZXNvdXJjZUZp
bGU7CiAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZnJhbWUpOwogICAgIH0pOwog
fQogCitmdW5jdGlvbiB3aXRoU2FtZVNpdGVJZnJhbWUocmVzb3VyY2VGaWxlLCBhbGxvdyA9ICIi
KQoreworICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4geworICAgICAgICB3YWl0
Rm9yTG9hZCgpLnRoZW4oKG1lc3NhZ2UpID0+IHsKKyAgICAgICAgICAgIHJlc29sdmUobWVzc2Fn
ZSk7CisgICAgICAgfSk7CisgICAgICAgY29uc3QgZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJpZnJhbWUiKTsKKyAgICAgICBjb25zdCBob3N0ID0gZ2V0X2hvc3RfaW5mbygpOworICAg
ICAgIGZyYW1lLmFsbG93ID0gYWxsb3c7CisgICAgICAgZnJhbWUuc3JjID0gImh0dHBzOi8vIiAr
IGhvc3QuT1JJR0lOQUxfSE9TVCArICI6IiArIGhvc3QuSFRUUFNfUE9SVDIgKyBSRVNPVVJDRVNf
RElSICsgcmVzb3VyY2VGaWxlOworICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZnJh
bWUpOworICAgIH0pOworfQorCiBmdW5jdGlvbiBwcm9taXNlUmVqZWN0cyh0ZXN0LCBleHBlY3Rl
ZCwgcHJvbWlzZSwgZGVzY3JpcHRpb24pCiB7CiAgICAgcmV0dXJuIHByb21pc2UudGhlbih0ZXN0
LnVucmVhY2hlZF9mdW5jKCJTaG91bGQgaGF2ZSByZWplY3RlZDogIiArIGRlc2NyaXB0aW9uKSku
Y2F0Y2goZnVuY3Rpb24oZSkgewo=
</data>
<flag name="commit-queue"
          id="472668"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>