<?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>102592</bug_id>
          
          <creation_ts>2012-11-17 11:37:24 -0800</creation_ts>
          <short_desc>NetworkProcess Authentication</short_desc>
          <delta_ts>2012-11-19 15:15:40 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>102593</dependson>
          <blocked>98537</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>japhet</cc>
    
    <cc>levin+threading</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>769972</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-11-17 11:37:24 -0800</bug_when>
    <thetext>Get basic authentication working in the NetworkProcess</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770047</commentid>
    <comment_count>1</comment_count>
      <attachid>174836</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-11-17 17:58:17 -0800</bug_when>
    <thetext>Created attachment 174836
Patch v1 - Take care of basic authentication

FIXMEs mark some more advanced outliers like dealing with downloads and handling client certs.

But this gets basic &quot;enter username/password for a subresource&quot; authentication working.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770062</commentid>
    <comment_count>2</comment_count>
      <attachid>174836</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-11-17 20:37:47 -0800</bug_when>
    <thetext>Comment on attachment 174836
Patch v1 - Take care of basic authentication

Attachment 174836 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14875522

New failing tests:
media/media-continues-playing-after-replace-source.html
inspector-protocol/nmi-webaudio.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770077</commentid>
    <comment_count>3</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-11-17 22:09:17 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 174836 [details])
&gt; Attachment 174836 [details] did not pass mac-ews (mac):
&gt; Output: http://queues.webkit.org/results/14875522
&gt; 
&gt; New failing tests:
&gt; media/media-continues-playing-after-replace-source.html
&gt; inspector-protocol/nmi-webaudio.html

Can&apos;t be related to this patch.  The only changes (besides a *relaxed* ASSERT) are in NetworkProcess code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770093</commentid>
    <comment_count>4</comment_count>
      <attachid>174836</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2012-11-17 23:38:30 -0800</bug_when>
    <thetext>Comment on attachment 174836
Patch v1 - Take care of basic authentication

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

&gt; Source/WebKit2/ChangeLog:8
&gt; +        This get&apos;s basic HTTP authentication working with the WebProcess by dispatching authentication

Did you mean &quot;with the NetworkProcess&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770145</commentid>
    <comment_count>5</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-11-18 10:11:53 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 174836 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=174836&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/ChangeLog:8
&gt; &gt; +        This get&apos;s basic HTTP authentication working with the WebProcess by dispatching authentication
&gt; 
&gt; Did you mean &quot;with the NetworkProcess&quot;?

I did mean that, yes.  Will fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770844</commentid>
    <comment_count>6</comment_count>
      <attachid>174836</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-11-19 10:26:23 -0800</bug_when>
    <thetext>Comment on attachment 174836
Patch v1 - Take care of basic authentication

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

&gt; Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp:317
&gt; +    return OSAtomicIncrement64Barrier(&amp;uniqueCanAuthenticateAgainstProtectionSpaceID);

Why not use WTF::atomicIncrement?

&gt; Source/WebKit2/WebProcess/Network/WebResourceLoader.h:94
&gt;      RefPtr&lt;WebCore::ResourceLoader&gt; m_coreLoader;
&gt; +    WebCore::AuthenticationChallenge m_currentAuthenticationChallenge;

What is the reason to not use a pointer? Not all requests even have authentication.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770869</commentid>
    <comment_count>7</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-11-19 11:08:27 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 174836 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=174836&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp:317
&gt; &gt; +    return OSAtomicIncrement64Barrier(&amp;uniqueCanAuthenticateAgainstProtectionSpaceID);
&gt; 
&gt; Why not use WTF::atomicIncrement?

Great question.  I didn&apos;t know about it until now.

That said, there&apos;s no 64 bit specialization of it yet, and the Darwin specific version is already scattered about.

I&apos;ll replace them all in a single followup.

&gt; &gt; Source/WebKit2/WebProcess/Network/WebResourceLoader.h:94
&gt; &gt;      RefPtr&lt;WebCore::ResourceLoader&gt; m_coreLoader;
&gt; &gt; +    WebCore::AuthenticationChallenge m_currentAuthenticationChallenge;
&gt; 
&gt; What is the reason to not use a pointer? Not all requests even have authentication.

This makes sense to do.  Will change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770881</commentid>
    <comment_count>8</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-11-19 11:23:32 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/135179</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770951</commentid>
    <comment_count>9</comment_count>
      <attachid>174836</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-11-19 12:39:24 -0800</bug_when>
    <thetext>Comment on attachment 174836
Patch v1 - Take care of basic authentication

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

&gt; Source/WebKit2/WebProcess/Network/WebResourceLoader.h:34
&gt; +#include &lt;WebCore/AuthenticationChallenge.h&gt;

I think that you could get rid of this include now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771084</commentid>
    <comment_count>10</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-11-19 15:15:40 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/135198 as that followup</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174836</attachid>
            <date>2012-11-17 17:58:17 -0800</date>
            <delta_ts>2012-11-19 12:39:24 -0800</delta_ts>
            <desc>Patch v1 - Take care of basic authentication</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>33622</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhNzAxYWM2Li5kODk1ZmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjQg
QEAKIDIwMTItMTEtMTcgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCisgICAg
ICAgIE5ldHdvcmtQcm9jZXNzIEF1dGhlbnRpY2F0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyNTkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdlIGFuIEFTU0VSVCB0aGF0IGFzc3VtZXMg
dGhlcmUgc2hvdWxkIGJlIGEgcmVzb3VyY2UgaGFuZGxlIHdoaWNoIGlzIG5vdCB0cnVlIHdpdGgg
dGhlIE5ldHdvcmtQcm9jZXNzLgorCisgICAgICAgIEFsc28gZXhwb3J0IHNvbWUgbW9yZSBzdHVm
Zi4KKworICAgICAgICBObyBuZXcgdGVzdHMgKFBsYXRmb3JtIHN1cHBvcnQsIG5vIGVmZmVjdCBp
biB0ZXN0ZWQgY29uZmlncykuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKworICAgICAg
ICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKTogT25seSBBU1NFUlQg
dGhhdCB0aGUgaGFuZGxlIGhhcyBhIGNoYWxsZW5nZSBpZgorICAgICAgICAgIHRoZXJlIGlzIGEg
aGFuZGxlLgorCisyMDEyLTExLTE3ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4K
KwogICAgICAgICBBZGQgYW4gaW50ZWdlciBpZGVudGlmaWVyIGZpZWxkIHRvIEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlQmFzZS4KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwMjU5MwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDAwNDQ4Y2EuLjlkODhh
NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0yNDUsNiArMjQ1LDcgQEAgX19aTjdXZWJDb3Jl
MTREb2N1bWVudExvYWRlcjEwY29tbWl0RGF0YUVQS2NtCiBfX1pON1dlYkNvcmUxNERvY3VtZW50
TG9hZGVyMTNhdHRhY2hUb0ZyYW1lRXYKIF9fWk43V2ViQ29yZTE0RG9jdW1lbnRMb2FkZXIxNWRl
dGFjaEZyb21GcmFtZUV2CiBfX1pON1dlYkNvcmUxNERvY3VtZW50TG9hZGVyMThhZGRBcmNoaXZl
UmVzb3VyY2VFTjNXVEYxMFBhc3NSZWZQdHJJTlNfMTVBcmNoaXZlUmVzb3VyY2VFRUUKK19fWk43
V2ViQ29yZTE0UmVzb3VyY2VMb2FkZXIzMmRpZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
RVJLTlNfMjNBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUUKIF9fWk43V2ViQ29yZTIxU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlMTFkZXNlcmlhbGl6ZUVQTjNKU0M5RXhlY1N0YXRlRVBOUzFfMTRKU0dsb2Jh
bE9iamVjdEVQTjNXVEY2VmVjdG9ySU5TNl82UmVmUHRySU5TXzExTWVzc2FnZVBvcnRFRUVMbTFF
RUVOU18yMlNlcmlhbGl6YXRpb25FcnJvck1vZGVFCiBfX1pON1dlYkNvcmUyMVNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTZjcmVhdGVFUE4zSlNDOUV4ZWNTdGF0ZUVOUzFfN0pTVmFsdWVFUE4zV1RGNlZl
Y3RvcklOUzVfNlJlZlB0cklOU18xMU1lc3NhZ2VQb3J0RUVFTG0xRUVFUE5TNl9JTlM3X0lOUzVf
MTFBcnJheUJ1ZmZlckVFRUxtMUVFRU5TXzIyU2VyaWFsaXphdGlvbkVycm9yTW9kZUUKIF9fWk43
V2ViQ29yZTIxU2VyaWFsaXplZFNjcmlwdFZhbHVlNmNyZWF0ZUVSS04zV1RGNlN0cmluZ0UKQEAg
LTYyOSw2ICs2MzAsNyBAQCBfX1pON1dlYkNvcmUyM0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlMjNj
YWxjdWxhdGVRdW90YUZvck9yaWdpbkVQS05TXzE0U2VjdXJpdHlPcgogX19aTjdXZWJDb3JlMjNB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZTIzY2FsY3VsYXRlVXNhZ2VGb3JPcmlnaW5FUEtOU18xNFNl
Y3VyaXR5T3JpZ2luRVJ4CiBfX1pON1dlYkNvcmUyM0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlMjZz
dG9yZVVwZGF0ZWRRdW90YUZvck9yaWdpbkVQS05TXzE0U2VjdXJpdHlPcmlnaW5FeAogX19aTjdX
ZWJDb3JlMjNBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTVlbXB0eUV2CitfX1pON1dlYkNvcmUyM0F1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlMjNzZXRBdXRoZW50aWNhdGlvbkNsaWVudEVQTlNfMjBBdXRo
ZW50aWNhdGlvbkNsaWVudEUKIF9fWk43V2ViQ29yZTIzQXV0aGVudGljYXRpb25DaGFsbGVuZ2VD
MUVSS05TXzE1UHJvdGVjdGlvblNwYWNlRVJLTlNfMTBDcmVkZW50aWFsRWpSS05TXzE2UmVzb3Vy
Y2VSZXNwb25zZUVSS05TXzEzUmVzb3VyY2VFcnJvckV5CiBfX1pON1dlYkNvcmUyM2NyZWF0ZUZy
YWdtZW50RnJvbU5vZGVzRVBOU184RG9jdW1lbnRFUktOM1dURjZWZWN0b3JJUE5TXzROb2RlRUxt
MEVFRQogX19aTjdXZWJDb3JlMjNkYXRhRm9yVVJMQ29tcG9uZW50VHlwZUVQNU5TVVJMbApAQCAt
NjcyLDYgKzY3NCw4IEBAIF9fWk43V2ViQ29yZTI2c3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXNF
dgogX19aTjdXZWJDb3JlMjZDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlckQyRXYKIF9fWk43V2Vi
Q29yZTI2Q29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXJDMkVQTlNfMjJTY3JpcHRFeGVjdXRpb25D
b250ZXh0RQogX19aTjdXZWJDb3JlMjZDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjE2Y29udGV4
dERlc3Ryb3llZEV2CitfX1pON1dlYkNvcmUyN0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZTdj
b21wYXJlRVJLTlNfMjNBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUVTM18KK19fWk43V2ViQ29yZTI3
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlN251bGxpZnlFdgogX19aTjdXZWJDb3JlMjdBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZUJhc2VDMkV2CiBfX1pON1dlYkNvcmUyN0NTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbkMxRU4zV1RGMTBQYXNzUmVmUHRySU5TXzROb2RlRUVFYlJLTlMxXzZTdHJp
bmdFCiBfX1pON1dlYkNvcmUyN0RldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazE0c2V0T3JpZW50
YXRpb25FTjNXVEYxMFBhc3NSZWZQdHJJTlNfMjFEZXZpY2VPcmllbnRhdGlvbkRhdGFFRUUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDVjYzM2YmYuLmU0OTlk
NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAtNDgxLDcg
KzQ4MSw4IEBAIGJvb2wgUmVzb3VyY2VMb2FkZXI6OnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdl
KCkKIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCiB7Ci0gICAgQVNT
RVJUKGhhbmRsZSgpLT5oYXNBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpKTsKKyAgICBBU1NFUlQo
IWhhbmRsZSgpIHx8IGhhbmRsZSgpLT5oYXNBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpKTsKKwog
ICAgIC8vIFByb3RlY3QgdGhpcyBpbiB0aGlzIGRlbGVnYXRlIG1ldGhvZCBzaW5jZSB0aGUgYWRk
aXRpb25hbCBwcm9jZXNzaW5nIGNhbiBkbwogICAgIC8vIGFueXRoaW5nIGluY2x1ZGluZyBwb3Nz
aWJseSBkZXJlZmluZyB0aGlzOyBvbmUgZXhhbXBsZSBvZiB0aGlzIGlzIFJhZGFyIDMyNjYyMTYu
CiAgICAgUmVmUHRyPFJlc291cmNlTG9hZGVyPiBwcm90ZWN0b3IodGhpcyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggNDk3OGY2MS4uMWY0MDcxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDc4IEBACiAyMDEyLTEx
LTE3ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAorICAgICAgICBOZXR3b3Jr
UHJvY2VzcyBBdXRoZW50aWNhdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEwMjU5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoaXMgZ2V0J3MgYmFzaWMgSFRUUCBhdXRoZW50aWNhdGlvbiB3b3Jr
aW5nIHdpdGggdGhlIFdlYlByb2Nlc3MgYnkgZGlzcGF0Y2hpbmcgYXV0aGVudGljYXRpb24KKyAg
ICAgICAgcmVsYXRlZCBldmVudHMgdG8gdGhlIFdlYlByb2Nlc3MgYW5kIHJlbHlpbmcgb24gZXhp
c3RpbmcgY2xpZW50IEFQSXMgdG8gYW5zd2VyIHRoZW0uCisKKyAgICAgICAgSW1wbGVtZW50IFJl
c291cmNlSGFuZGxlQ2xpZW50IG1ldGhvZHMgcmVsYXRlZCB0byBhdXRoIGNoYWxsZW5nZXMgYW5k
IG1lc3NhZ2UgdGhlbSB0byB0aGUgV2ViUHJvY2Vzcy4KKyAgICAgICAgQWxzbyBpbXBsZW1lbnQg
bWVzc2FnaW5nIGJhY2sgZnJvbSB0aGUgV2ViUHJvY2VzcyB0byByZXNwb25zZSB0byB0aG9zZSBh
dXRoIGNoYWxsZW5nZXM6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6d2lsbFNlbmRSZXF1ZXN0UmVzcG9uc2VNYXAp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVz
dCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1
ZXN0SGFuZGxlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2hv
dWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnJlY2VpdmVk
Q2FuY2VsbGF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpy
ZWNlaXZlZEF1dGhlbnRpY2F0aW9uQ3JlZGVudGlhbCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6cmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRBdXRoZW50
aWNhdGlvbkNyZWRlbnRpYWwpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OnJlY2VpdmVkQXV0aGVudGljYXRpb25DYW5jZWxsYXRpb24pOgorICAgICAgICAoV2ViS2l0
OjpjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlUmVzcG9uc2VNYXApOgorICAg
ICAgICAoV2ViS2l0OjpnZW5lcmF0ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3Bh
Y2VJRCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y2FuQXV0aGVu
dGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUhhbmRs
ZWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5p
bjoKKworICAgICAgICBJbXBsZW1lbnQgbWVzc2FnaW5nIHRvIHJlc3BvbnNlIHRvIGF1dGggY2hh
bGxlbmdlcyBmcm9tIHRoZSBOZXR3b3JrUHJvY2VzcywgYW5kIGltcGxlbWVudAorICAgICAgICBB
dXRoZW50aWNhdGlvbkNsaWVudCB0byByZXNwb25zZSB0byBhdXRoIHJlc3BvbnNlcyBmcm9tIFdl
YlByb2Nlc3MgY2xpZW50czoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6Y2FuQXV0
aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6cmVjZWl2ZWRDcmVk
ZW50aWFsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkZXI6OnJlY2VpdmVkUmVx
dWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJl
c291cmNlTG9hZGVyOjpyZWNlaXZlZENhbmNlbGxhdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291
cmNlTG9hZGVyOjpyZWZBdXRoZW50aWNhdGlvbkNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlJlc291cmNlTG9hZGVyOjpkZXJlZkF1dGhlbnRpY2F0aW9uQ2xpZW50KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW46CisKKyAgICAg
ICAgQWRkIGEgQmxvY2tpbmdSZXNwb25zZU1hcCBmb3IgYm9vbCByZXNwb25zZXMsIHdoaWNoIGRv
bid0IG5lZWQgT3duUHRyIHRyaWNrZXJ5OgorICAgICAgICAqIFNoYXJlZC9CbG9ja2luZ1Jlc3Bv
bnNlTWFwLmg6CisgICAgICAgIChCbG9ja2luZ0Jvb2xSZXNwb25zZU1hcDo6d2FpdEZvclJlc3Bv
bnNlKToKKyAgICAgICAgKEJsb2NraW5nQm9vbFJlc3BvbnNlTWFwOjpkaWRSZWNlaXZlUmVzcG9u
c2UpOgorCisgICAgICAgIEFkZCAiYWxsb3dzU3RvcmVkQ3JlZGVudGlhbHMiIHRvIE5ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzIHNvIHRoZSBOZXR3b3JrUHJvY2VzcworICAgICAgICBhbHJl
YWR5IGhhcyB0aGUgYW5zd2VyIHdoZW4gdGhlIHF1ZXN0aW9uIGlzIGFza2VkOgorICAgICAgICAq
IFNoYXJlZC9OZXR3b3JrL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6Ok5ldHdvcmtSZXNvdXJj
ZUxvYWRQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBh
cmFtZXRlcnM6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9OZXR3b3JrL05ldHdvcmtSZXNv
dXJjZUxvYWRQYXJhbWV0ZXJzLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxv
YWRQYXJhbWV0ZXJzOjphbGxvd1N0b3JlZENyZWRlbnRpYWxzKToKKworICAgICAgICBHcmFiIHRo
ZSB2YWx1ZSBmb3IgImFsbG93c1N0b3JlZENyZWRlbnRpYWxzIiB3aGVuIHNjaGVkdWxpbmcgdGhl
IGxvYWQgaW4gdGhlIE5ldHdvcmtQcm9jZXNzOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNv
dXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlTG9hZCk6CisKKyAgICAgICAgQWRkIGEgRklYTUUg
Zm9yIGNsaWVudCBjZXJ0czoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL21h
Yy9BdXRoZW50aWNhdGlvbk1hbmFnZXIubWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50
aWNhdGlvbk1hbmFnZXI6OnRyeVVzZVBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvRm9yQ2hhbGxlbmdl
KToKKworICAgICAgICBBZGQgYSBGSVhNRSBmb3IgZG93bmxvYWRzOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvRG93bmxvYWRzL21hYy9Eb3dubG9hZE1hYy5tbToKKworICAgICAgICBSZW1vdmUgdW51
c2VkIG1lc3NhZ2luZyByZWxhdGVkIG1ldGhvZHM6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oOgorCisyMDEyLTExLTE3ICBCcmFkeSBF
aWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKwogICAgICAgICBBZGQgYW4gaW50ZWdlciBpZGVu
dGlmaWVyIGZpZWxkIHRvIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZS4KICAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjU5MwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cAppbmRleCAyMDg4MzM0Li4wNmJiNjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTE3OSw3ICsxNzks
NyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbChSZXNvdXJjZUhhbmRsZSos
IGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogICAgIHNjaGVkdWxlU3RvcE9uTWFpblRocmVh
ZCgpOwogfQogCi1zdGF0aWMgQmxvY2tpbmdSZXNwb25zZU1hcDxSZXNvdXJjZVJlcXVlc3QqPiYg
cmVzcG9uc2VNYXAoKQorc3RhdGljIEJsb2NraW5nUmVzcG9uc2VNYXA8UmVzb3VyY2VSZXF1ZXN0
Kj4mIHdpbGxTZW5kUmVxdWVzdFJlc3BvbnNlTWFwKCkKIHsKICAgICBBdG9taWNhbGx5SW5pdGlh
bGl6ZWRTdGF0aWMoQmxvY2tpbmdSZXNwb25zZU1hcDxSZXNvdXJjZVJlcXVlc3QqPiYsIHJlc3Bv
bnNlTWFwID0gKm5ldyBCbG9ja2luZ1Jlc3BvbnNlTWFwPFJlc291cmNlUmVxdWVzdCo+KTsKICAg
ICByZXR1cm4gcmVzcG9uc2VNYXA7CkBAIC0yMDAsNyArMjAwLDcgQEAgdm9pZCBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVx
dWVzdCYgcmUKIAogICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpXaWxsU2Vu
ZFJlcXVlc3QocmVxdWVzdElELCByZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKSk7CiAgICAgCi0g
ICAgT3duUHRyPFJlc291cmNlUmVxdWVzdD4gbmV3UmVxdWVzdCA9IHJlc3BvbnNlTWFwKCkud2Fp
dEZvclJlc3BvbnNlKHJlcXVlc3RJRCk7CisgICAgT3duUHRyPFJlc291cmNlUmVxdWVzdD4gbmV3
UmVxdWVzdCA9IHdpbGxTZW5kUmVxdWVzdFJlc3BvbnNlTWFwKCkud2FpdEZvclJlc3BvbnNlKHJl
cXVlc3RJRCk7CiAgICAgcmVxdWVzdCA9ICpuZXdSZXF1ZXN0OwogCiAgICAgUnVuTG9vcDo6bWFp
bigpLT5kaXNwYXRjaChXVEY6OmJpbmQoJk5ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnJl
Y2VpdmVkUmVkaXJlY3QsICZOZXR3b3JrUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya1Jlc291cmNl
TG9hZFNjaGVkdWxlcigpLCBtX2lkZW50aWZpZXIsIHJlcXVlc3QudXJsKCkpKTsKQEAgLTIwOCw3
ICsyMDgsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJl
c291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1ZXN0JiByZQogCiB2b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0SGFuZGxlZCh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgbmV3UmVxdWVzdCkKIHsKLSAgICByZXNwb25zZU1h
cCgpLmRpZFJlY2VpdmVSZXNwb25zZShyZXF1ZXN0SUQsIGFkb3B0UHRyKG5ldyBSZXNvdXJjZVJl
cXVlc3QobmV3UmVxdWVzdCkpKTsKKyAgICB3aWxsU2VuZFJlcXVlc3RSZXNwb25zZU1hcCgpLmRp
ZFJlY2VpdmVSZXNwb25zZShyZXF1ZXN0SUQsIGFkb3B0UHRyKG5ldyBSZXNvdXJjZVJlcXVlc3Qo
bmV3UmVxdWVzdCkpKTsKIH0KIAogLy8gRklYTUUgKE5ldHdvcmtQcm9jZXNzKTogTWFueSBvZiB0
aGUgZm9sbG93aW5nIFJlc291cmNlSGFuZGxlQ2xpZW50IG1ldGhvZHMgZGVmaW5pdGVseSBuZWVk
IGltcGxlbWVudGF0aW9ucy4gQSBmZXcgd2lsbCBub3QuCkBAIC0yNDEsMzAgKzI0MSw5NCBAQCB2
b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6d2lsbENhY2hlUmVzcG9uc2UoV2ViQ29yZTo6UmVz
b3VyY2VIYW5kbGUqLCBXZWJDb3JlOgogCiBib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2hv
dWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqKQogewotICAg
IG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIC8vIFdoZW4gdGhlIFdl
YlByb2Nlc3MgaXMgaGFuZGxpbmcgbG9hZGluZyBhIGNsaWVudCBpcyBjb25zdWx0ZWQgZWFjaCB0
aW1lIHRoaXMgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UgcXVlc3Rpb24gaXMgYXNrZWQuCisg
ICAgLy8gSW4gTmV0d29ya1Byb2Nlc3MgbW9kZSB3ZSBhc2sgdGhlIFdlYlByb2Nlc3MgY2xpZW50
IHVwIGZyb250IG9uY2UgYW5kIHRoZW4gcmV1c2UgdGhlIGNhY2hlZCBhbnN3ZXIuCisKKyAgICBy
ZXR1cm4gbV9yZXF1ZXN0UGFyYW1ldGVycy5hbGxvd1N0b3JlZENyZWRlbnRpYWxzKCkgPT0gQWxs
b3dTdG9yZWRDcmVkZW50aWFsczsKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSos
IGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikKK3ZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViQ29yZTo6
UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYg
Y2hhbGxlbmdlKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgQVNTRVJUKG1fY3VycmVu
dEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmlzTnVsbCgpKTsKKyAgICBtX2N1cnJlbnRBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSA9IGNoYWxsZW5nZTsKKworICAgIHNlbmQoTWVzc2FnZXM6OldlYlJl
c291cmNlTG9hZGVyOjpEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY2hhbGxlbmdl
KSk7CiB9CiAKLXZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRDYW5jZWxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZShXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6OkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRD
YW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNv
bnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCiB7Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICBBU1NFUlQoIW1fY3VycmVudEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlLmlzTnVsbCgpKTsKKyAgICBBU1NFUlQobV9jdXJyZW50QXV0aGVudGljYXRpb25DaGFs
bGVuZ2UuaWRlbnRpZmllcigpID09IGNoYWxsZW5nZS5pZGVudGlmaWVyKCkpOworCisgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKG1fY3VycmVudEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSk7CiB9CiAKLXZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpyZWNlaXZlZENhbmNlbGxhdGlvbihXZWJDb3JlOjpSZXNvdXJj
ZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikKK3ZvaWQg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpyZWNlaXZlZENhbmNlbGxhdGlvbihXZWJDb3JlOjpSZXNv
dXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFs
bGVuZ2UpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZWNlaXZlZEF1dGhlbnRpY2F0
aW9uQ2FuY2VsbGF0aW9uKGNoYWxsZW5nZSk7Cit9CisKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpyZWNlaXZlZEF1dGhlbnRpY2F0aW9uQ3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSYgY2hhbGxlbmdlLCBjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKQorewor
ICAgIEFTU0VSVCghbV9jdXJyZW50QXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaXNOdWxsKCkpOwor
ICAgIEFTU0VSVChtX2N1cnJlbnRBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5hdXRoZW50aWNhdGlv
bkNsaWVudCgpKTsKKworICAgIGlmIChtX2N1cnJlbnRBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5p
ZGVudGlmaWVyKCkgIT0gY2hhbGxlbmdlLmlkZW50aWZpZXIoKSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIAorICAgIG1fY3VycmVudEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmF1dGhlbnRpY2F0aW9u
Q2xpZW50KCktPnJlY2VpdmVkQ3JlZGVudGlhbChtX2N1cnJlbnRBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSwgY3JlZGVudGlhbCk7CisgICAgbV9jdXJyZW50QXV0aGVudGljYXRpb25DaGFsbGVuZ2Ug
PSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpOworfQorCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6cmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRBdXRoZW50aWNhdGlvbkNyZWRl
bnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkKK3sKKyAgICBB
U1NFUlQoIW1fY3VycmVudEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmlzTnVsbCgpKTsKKyAgICBB
U1NFUlQobV9jdXJyZW50QXV0aGVudGljYXRpb25DaGFsbGVuZ2UuYXV0aGVudGljYXRpb25DbGll
bnQoKSk7CisKKyAgICBpZiAobV9jdXJyZW50QXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaWRlbnRp
ZmllcigpICE9IGNoYWxsZW5nZS5pZGVudGlmaWVyKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fY3VycmVudEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmF1dGhlbnRpY2F0aW9uQ2xpZW50KCkt
PnJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbChtX2N1cnJlbnRBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSk7CisgICAgbV9jdXJyZW50QXV0aGVudGljYXRpb25DaGFsbGVu
Z2UgPSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpOworfQorCit2b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6cmVjZWl2ZWRBdXRoZW50aWNhdGlvbkNhbmNlbGxhdGlvbihjb25zdCBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKQoreworICAgIEFTU0VSVCghbV9jdXJyZW50QXV0
aGVudGljYXRpb25DaGFsbGVuZ2UuaXNOdWxsKCkpOworICAgIEFTU0VSVChtX2N1cnJlbnRBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZS5hdXRoZW50aWNhdGlvbkNsaWVudCgpKTsKKworICAgIGlmICht
X2N1cnJlbnRBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5pZGVudGlmaWVyKCkgIT0gY2hhbGxlbmdl
LmlkZW50aWZpZXIoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jdXJyZW50QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UuYXV0aGVudGljYXRpb25DbGllbnQoKS0+cmVjZWl2ZWRDYW5jZWxsYXRp
b24obV9jdXJyZW50QXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOworICAgIG1fY3VycmVudEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlID0gQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKTsKIH0KIAogI2lm
IFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCi1ib29sIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShXZWJDb3JlOjpS
ZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSYpCitzdGF0aWMg
QmxvY2tpbmdCb29sUmVzcG9uc2VNYXAmIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9u
U3BhY2VSZXNwb25zZU1hcCgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4g
ZmFsc2U7CisgICAgQXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljKEJsb2NraW5nQm9vbFJlc3Bv
bnNlTWFwJiwgcmVzcG9uc2VNYXAgPSAqbmV3IEJsb2NraW5nQm9vbFJlc3BvbnNlTWFwKTsKKyAg
ICByZXR1cm4gcmVzcG9uc2VNYXA7Cit9CisKK3N0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZUNhbkF1
dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VJRCgpCit7CisgICAgc3RhdGljIGludDY0
X3QgdW5pcXVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUlEOworICAgIHJl
dHVybiBPU0F0b21pY0luY3JlbWVudDY0QmFycmllcigmdW5pcXVlQ2FuQXV0aGVudGljYXRlQWdh
aW5zdFByb3RlY3Rpb25TcGFjZUlEKTsKK30KKworYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoV2ViQ29yZTo6UmVzb3VyY2VI
YW5kbGUqLCBjb25zdCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSkK
K3sKKyAgICB1aW50NjRfdCByZXF1ZXN0SUQgPSBnZW5lcmF0ZUNhbkF1dGhlbnRpY2F0ZUFnYWlu
c3RQcm90ZWN0aW9uU3BhY2VJRCgpOworCisgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VM
b2FkZXI6OkNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UocmVxdWVzdElELCBw
cm90ZWN0aW9uU3BhY2UpKTsKKworICAgIHJldHVybiBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJv
dGVjdGlvblNwYWNlUmVzcG9uc2VNYXAoKS53YWl0Rm9yUmVzcG9uc2UocmVxdWVzdElEKTsKK30K
Kwordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90
ZWN0aW9uU3BhY2VIYW5kbGVkKHVpbnQ2NF90IHJlcXVlc3RJRCwgYm9vbCBjYW5BdXRoZW50aWNh
dGUpCit7CisgICAgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZVJlc3BvbnNl
TWFwKCkuZGlkUmVjZWl2ZVJlc3BvbnNlKHJlcXVlc3RJRCwgY2FuQXV0aGVudGljYXRlKTsKIH0K
ICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5oCmluZGV4IDc2Nzg3ZTIuLjE1NzNhMWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCkBA
IC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgIk5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNl
TG9hZFBhcmFtZXRlcnMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZUNsaWVudC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkZXJPcHRpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9S
ZXNvdXJjZVJlcXVlc3QuaD4KQEAgLTExMSw3ICsxMTIsMTEgQEAgcHJpdmF0ZToKICAgICBOZXR3
b3JrUmVzb3VyY2VMb2FkZXIoY29uc3QgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmLCBS
ZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyopOwog
CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3RIYW5kbGVkKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7Ci0KKyAgICB2b2lkIGNhbkF1dGhlbnRpY2F0
ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VIYW5kbGVkKHVpbnQ2NF90IHJlcXVlc3RJRCwgYm9vbCBj
YW5BdXRoZW50aWNhdGUpOworICAgIHZvaWQgcmVjZWl2ZWRBdXRoZW50aWNhdGlvbkNyZWRlbnRp
YWwoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBjb25zdCBXZWJDb3Jl
OjpDcmVkZW50aWFsJik7CisgICAgdm9pZCByZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91
dEF1dGhlbnRpY2F0aW9uQ3JlZGVudGlhbChjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYpOworICAgIHZvaWQgcmVjZWl2ZWRBdXRoZW50aWNhdGlvbkNhbmNlbGxhdGlvbihj
b25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOworICAgIAogICAgIHZvaWQg
c2NoZWR1bGVTdG9wT25NYWluVGhyZWFkKCk7CiAgICAgc3RhdGljIHZvaWQgcGVyZm9ybVN0b3Bz
KHZvaWQqKTsKIApAQCAtMTIzLDYgKzEyOCw4IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFJlbW90
ZU5ldHdvcmtpbmdDb250ZXh0PiBtX25ldHdvcmtpbmdDb250ZXh0OwogICAgIFJlZlB0cjxXZWJD
b3JlOjpSZXNvdXJjZUhhbmRsZT4gbV9oYW5kbGU7ICAgIAogICAgIFJlZlB0cjxOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcz4gbV9jb25uZWN0aW9uOworICAgIAorICAgIFdlYkNvcmU6OkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIG1fY3VycmVudEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4K
aW5kZXggNDQ2MDBhYi4uYzZjMGYwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgpA
QCAtMjQsNiArMjQsMTEgQEAKIAogbWVzc2FnZXMgLT4gTmV0d29ya1Jlc291cmNlTG9hZGVyIHsK
ICAgICBXaWxsU2VuZFJlcXVlc3RIYW5kbGVkKHVpbnQ2NF90IHJlcXVlc3RJRCwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0IG5ld1JlcXVlc3QpCisgICAgQ2FuQXV0aGVudGljYXRlQWdhaW5zdFBy
b3RlY3Rpb25TcGFjZUhhbmRsZWQodWludDY0X3QgcmVxdWVzdElELCBib29sIGNhbkF1dGhlbnRp
Y2F0ZSkKKyAgICAKKyAgICBSZWNlaXZlZEF1dGhlbnRpY2F0aW9uQ3JlZGVudGlhbChXZWJDb3Jl
OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBjaGFsbGVuZ2UsIFdlYkNvcmU6OkNyZWRlbnRpYWwg
Y3JlZGVudGlhbCkKKyAgICBSZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dEF1dGhlbnRp
Y2F0aW9uQ3JlZGVudGlhbChXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBjaGFsbGVu
Z2UpCisgICAgUmVjZWl2ZWRBdXRoZW50aWNhdGlvbkNhbmNlbGxhdGlvbihXZWJDb3JlOjpBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSBjaGFsbGVuZ2UpCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoTkVU
V09SS19QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Jsb2NraW5n
UmVzcG9uc2VNYXAuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9CbG9ja2luZ1Jlc3BvbnNlTWFw
LmgKaW5kZXggYjE0MzZmNS4uY2IwMDEyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL0Jsb2NraW5nUmVzcG9uc2VNYXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQmxv
Y2tpbmdSZXNwb25zZU1hcC5oCkBAIC02NCw0ICs2NCwzNiBAQCBwcml2YXRlOgogICAgIEhhc2hN
YXA8dWludDY0X3QsIE93blB0cjxUPiA+IG1fcmVzcG9uc2VzOwogfTsKIAorY2xhc3MgQmxvY2tp
bmdCb29sUmVzcG9uc2VNYXAgeworcHVibGljOgorICAgIGJvb2wgd2FpdEZvclJlc3BvbnNlKHVp
bnQ2NF90IHJlcXVlc3RJRCkKKyAgICB7CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAg
ICAgICBNdXRleExvY2tlciBsb2NrZXIobV9tdXRleCk7CisKKyAgICAgICAgICAgIGlmIChib29s
IHJlc3BvbnNlID0gbV9yZXNwb25zZXMudGFrZShyZXF1ZXN0SUQpKQorICAgICAgICAgICAgICAg
IHJldHVybiByZXNwb25zZTsKKworICAgICAgICAgICAgbV9jb25kaXRpb24ud2FpdChtX211dGV4
KTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICB2b2lk
IGRpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wgcmVzcG9uc2UpCisg
ICAgeworICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9tdXRleCk7CisgICAgICAgIEFTU0VS
VCghbV9yZXNwb25zZXMuY29udGFpbnMocmVxdWVzdElEKSk7CisKKyAgICAgICAgbV9yZXNwb25z
ZXMuc2V0KHJlcXVlc3RJRCwgcmVzcG9uc2UpOworICAgICAgICBtX2NvbmRpdGlvbi5zaWduYWwo
KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgTXV0ZXggbV9tdXRleDsKKyAgICBUaHJlYWRDb25k
aXRpb24gbV9jb25kaXRpb247CisKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBib29sPiBtX3Jlc3Bv
bnNlczsKK307CisKICNlbmRpZiAvLyBCbG9ja2luZ1Jlc3BvbnNlTWFwX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtSZXNvdXJjZUxv
YWRQYXJhbWV0ZXJzLmNwcAppbmRleCBkNDA4ZjE1Li45NDI0NjNhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnMuY3BwCkBAIC0zNywxMyArMzcsMTUgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBO
ZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRl
cnMoKQogICAgIDogbV9wcmlvcml0eShSZXNvdXJjZUxvYWRQcmlvcml0eVZlcnlMb3cpCiAgICAg
LCBtX2NvbnRlbnRTbmlmZmluZ1BvbGljeShTbmlmZkNvbnRlbnQpCisgICAgLCBtX2FsbG93U3Rv
cmVkQ3JlZGVudGlhbHMoRG9Ob3RBbGxvd1N0b3JlZENyZWRlbnRpYWxzKQogewogfQogCi1OZXR3
b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUxvYWRQcmlvcml0eSBwcmlv
cml0eSwgQ29udGVudFNuaWZmaW5nUG9saWN5IGNvbnRlbnRTbmlmZmluZ1BvbGljeSkKK05ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyhj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlTG9hZFByaW9yaXR5IHByaW9y
aXR5LCBDb250ZW50U25pZmZpbmdQb2xpY3kgY29udGVudFNuaWZmaW5nUG9saWN5LCBTdG9yZWRD
cmVkZW50aWFscyBhbGxvd1N0b3JlZENyZWRlbnRpYWxzKQogICAgIDogbV9yZXF1ZXN0KHJlcXVl
c3QpCiAgICAgLCBtX3ByaW9yaXR5KHByaW9yaXR5KQogICAgICwgbV9jb250ZW50U25pZmZpbmdQ
b2xpY3koY29udGVudFNuaWZmaW5nUG9saWN5KQorICAgICwgbV9hbGxvd1N0b3JlZENyZWRlbnRp
YWxzKGFsbG93U3RvcmVkQ3JlZGVudGlhbHMpCiB7CiB9CiAKQEAgLTUyLDYgKzU0LDcgQEAgdm9p
ZCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50
RW5jb2RlciYgZW5jb2RlcikgY28KICAgICBlbmNvZGVyLmVuY29kZShtX3JlcXVlc3QpOwogICAg
IGVuY29kZXIuZW5jb2RlRW51bShtX3ByaW9yaXR5KTsKICAgICBlbmNvZGVyLmVuY29kZUVudW0o
bV9jb250ZW50U25pZmZpbmdQb2xpY3kpOworICAgIGVuY29kZXIuZW5jb2RlRW51bShtX2FsbG93
U3RvcmVkQ3JlZGVudGlhbHMpOwogfQogCiBib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBOZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVycyYgcmVzdWx0KQpAQCAtNjIsNiArNjUsOCBAQCBib29sIE5ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVy
KiBkZWNvZGVyLCBOZQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLT5k
ZWNvZGVFbnVtKHJlc3VsdC5tX2NvbnRlbnRTbmlmZmluZ1BvbGljeSkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZUVudW0ocmVzdWx0Lm1fYWxsb3dTdG9y
ZWRDcmVkZW50aWFscykpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiB0cnVl
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Jl
c291cmNlTG9hZFBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05l
dHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgKaW5kZXggNDk2ZjIxMC4uMTRhMzk1ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3Jr
UmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIE5ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzX2gKICNkZWZpbmUgTmV0d29ya1Jlc291cmNlTG9hZFBh
cmFtZXRlcnNfaAogCisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkZXJPcHRpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9S
ZXNvdXJjZVJlcXVlc3QuaD4KIApAQCAtNDMsNyArNDQsNyBAQCB0eXBlZGVmIHVpbnQ2NF90IFJl
c291cmNlTG9hZElkZW50aWZpZXI7CiBjbGFzcyBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVy
cyB7CiBwdWJsaWM6CiAgICAgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMoKTsKLSAgICBO
ZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRQcmlvcml0eSwgV2ViQ29yZTo6Q29udGVudFNuaWZm
aW5nUG9saWN5KTsKKyAgICBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyhjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRQcmlvcml0eSwgV2Vi
Q29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5LCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFscyk7
CiAKICAgICB2b2lkIGVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXImKSBjb25zdDsKICAg
ICBzdGF0aWMgYm9vbCBkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiwgTmV0d29ya1Jl
c291cmNlTG9hZFBhcmFtZXRlcnMmKTsKQEAgLTUxLDExICs1MiwxMyBAQCBwdWJsaWM6CiAgICAg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4g
bV9yZXF1ZXN0OyB9CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VMb2FkUHJpb3JpdHkgcHJpb3JpdHko
KSBjb25zdCB7IHJldHVybiBtX3ByaW9yaXR5OyB9CiAgICAgV2ViQ29yZTo6Q29udGVudFNuaWZm
aW5nUG9saWN5IGNvbnRlbnRTbmlmZmluZ1BvbGljeSgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVu
dFNuaWZmaW5nUG9saWN5OyB9CisgICAgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHMgYWxsb3dT
dG9yZWRDcmVkZW50aWFscygpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dTdG9yZWRDcmVkZW50aWFs
czsgfQogCiBwcml2YXRlOgogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBtX3JlcXVlc3Q7
CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VMb2FkUHJpb3JpdHkgbV9wcmlvcml0eTsKICAgICBXZWJD
b3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3kgbV9jb250ZW50U25pZmZpbmdQb2xpY3k7CisgICAg
V2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHMgbV9hbGxvd1N0b3JlZENyZWRlbnRpYWxzOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0F1dGhlbnRpY2F0aW9uL21hYy9BdXRoZW50aWNhdGlvbk1hbmFnZXIubWFjLm1tIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9tYWMvQXV0aGVudGljYXRp
b25NYW5hZ2VyLm1hYy5tbQppbmRleCBjMGI5MmYxLi4xYTc3MmMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL21hYy9BdXRoZW50aWNhdGlvbk1h
bmFnZXIubWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQXV0aGVudGljYXRp
b24vbWFjL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5tYWMubW0KQEAgLTM4LDYgKzM4LDkgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIGJvb2wgQXV0aGVudGljYXRpb25NYW5hZ2VyOjp0cnlVc2VQbGF0
Zm9ybUNlcnRpZmljYXRlSW5mb0ZvckNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYgY2hhbGxlbmdlLCBjb25zdCBQbGF0Zm9ybUNlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNh
dGVJbmZvKQogeworICAgIC8vIEZJWE1FIChOZXR3b3JrUHJvY2Vzcyk6IFRoaXMgb2NjdXJzIGlu
IHRoZSBXZWJQcm9jZXNzIGFuZCB0aGVyZWZvcmUgd29uJ3Qgd29yay4KKyAgICAvLyBXZSBuZWVk
IHRoaXMgdG8gaGFwcGVuIGluIHRoZSBOZXR3b3JrUHJvY2Vzcy4KKwogICAgIENGQXJyYXlSZWYg
Y2hhaW4gPSBjZXJ0aWZpY2F0ZUluZm8uY2VydGlmaWNhdGVDaGFpbigpOwogICAgIGlmICghY2hh
aW4pCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvRG93bmxvYWRzL21hYy9Eb3dubG9hZE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvRG93bmxvYWRzL21hYy9Eb3dubG9hZE1hYy5tbQppbmRleCA2MDFkMDEzLi44MzEw
OGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9tYWMv
RG93bmxvYWRNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMv
bWFjL0Rvd25sb2FkTWFjLm1tCkBAIC0xMDksNiArMTA5LDcgQEAgdm9pZCBEb3dubG9hZDo6cGxh
dGZvcm1EaWRGaW5pc2goKQogewogfQogCisvLyBGSVhNRSAoTmV0d29ya1Byb2Nlc3MpOiBEb3du
bG9hZHMgYW5kIHRoZWlyIGNyZWRlbnRpYWxzIGhhdmUgdG8gZ28gdGhyb3VnaCB0aGUgTmV0d29y
a1Byb2Nlc3MKIHZvaWQgRG93bmxvYWQ6OnJlY2VpdmVkQ3JlZGVudGlhbChjb25zdCBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIGNvbnN0IENyZWRlbnRp
YWwmIGNyZWRlbnRpYWwpCiB7CiAgICAgW2F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLnNlbmRlcigp
IHVzZUNyZWRlbnRpYWw6bWFjKGNyZWRlbnRpYWwpIGZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
OmF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLm5zVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKV07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IGQ2ODQ3NTQuLjliNjg3YmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC02MSwxMSArNjEsNiBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiog
Y29ubmVjdGlvbgogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIE5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rp
b24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJiwgT3duUHRy
PENvcmVJUEM6Ok1lc3NhZ2VFbmNvZGVyPiYpCi17Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci19Ci0KIHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDbG9zZShDb3JlSVBDOjpD
b25uZWN0aW9uKikKIHsKICAgICAvLyBUaGUgTmV0d29ya1Byb2Nlc3MgcHJvYmFibHkgY3Jhc2hl
ZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaAppbmRleCBiYWI1NGNmLi43ZGU1MjNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbi5oCkBAIC02MSw3ICs2MSw2IEBAIHByaXZhdGU6CiAKICAgICAvLyBD
b3JlSVBDOjpDb25uZWN0aW9uOjpDbGllbnQKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1l
c3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6
TWVzc2FnZURlY29kZXImKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdl
KENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3Nh
Z2VEZWNvZGVyJiwgT3duUHRyPENvcmVJUEM6Ok1lc3NhZ2VFbmNvZGVyPiYpOwogICAgIHZpcnR1
YWwgdm9pZCBkaWRDbG9zZShDb3JlSVBDOjpDb25uZWN0aW9uKik7CiAgICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6
U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIENvcmVJUEM6OlN0cmluZ1JlZmVy
ZW5jZSBtZXNzYWdlTmFtZSkgT1ZFUlJJREU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAK
aW5kZXggNDZmMDMxYy4uMjg4MjBkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKQEAg
LTk3LDcgKzk3LDE1IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZUxv
YWQoUmVzb3VyY2VMb2FkZXIqIHJlc291cmNlTG9hZGVyLCBSZXNvCiAgICAgICAgIERFRklORV9T
VEFUSUNfTE9DQUwoS1VSTCwgZGF0YVVSTCwgKEtVUkwoKSwgImRhdGE6IikpOwogICAgICAgICBy
ZXF1ZXN0LnNldFVSTChkYXRhVVJMKTsKICAgICB9Ci0gICAgTmV0d29ya1Jlc291cmNlTG9hZFBh
cmFtZXRlcnMgbG9hZFBhcmFtZXRlcnMocmVxdWVzdCwgcHJpb3JpdHksIHJlc291cmNlTG9hZGVy
LT5zaG91bGRTbmlmZkNvbnRlbnQoKSA/IFNuaWZmQ29udGVudCA6IERvTm90U25pZmZDb250ZW50
KTsKKyAgICAKKyAgICAvLyBGSVhNRSAoTmV0d29ya1Byb2Nlc3MpOiBXaGVuIHRoZSBSZXNvdXJj
ZUxvYWRlciBhc2tzIGl0cyBGcmFtZUxvYWRlckNsaWVudCBhYm91dCB1c2luZworICAgIC8vIGNy
ZWRlbnRpYWwgc3RvcmFnZSBpdCBwYXNzZXMgYWxvbmcgaXRzIGlkZW50aWZpZXIuCisgICAgLy8g
QnV0IGF0IHRoaXMgcG9pbnQgaXQgZG9lc24ndCBoYXZlIHRoZSBjb3JyZWN0IGlkZW50aWZpZXIg
eWV0LgorICAgIC8vIEluIHByYWN0aWNlIGNsaWVudHMgd2Uga25vdyBhYm91dCBkb24ndCBjYXJl
IGFib3V0IHRoZSBpZGVudGlmaWVyLCBidXQgdGhpcyBpcyBhbm90aGVyIHJlYXNvbgorICAgIC8v
IHdlIG5lZWQgdG8gbWFrZSBzdXJlIFJlc291cmNlTG9hZGVycyBnZXQgY29ycmVjdCBpZGVudGlm
aWVycyByaWdodCBvZmYgdGhlIGJhdC4KKyAgICBTdG9yZWRDcmVkZW50aWFscyBhbGxvd1N0b3Jl
ZENyZWRlbnRpYWxzID0gcmVzb3VyY2VMb2FkZXItPnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdl
KCkgPyBBbGxvd1N0b3JlZENyZWRlbnRpYWxzIDogRG9Ob3RBbGxvd1N0b3JlZENyZWRlbnRpYWxz
OworICAgIAorICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzIGxvYWRQYXJhbWV0ZXJz
KHJlcXVlc3QsIHByaW9yaXR5LCByZXNvdXJjZUxvYWRlci0+c2hvdWxkU25pZmZDb250ZW50KCkg
PyBTbmlmZkNvbnRlbnQgOiBEb05vdFNuaWZmQ29udGVudCwgYWxsb3dTdG9yZWRDcmVkZW50aWFs
cyk7CiAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5j
b25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6U2NoZWR1bGVSZXNvdXJjZUxvYWQobG9hZFBhcmFtZXRlcnMpLCBNZXNzYWdlczo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlNjaGVkdWxlUmVzb3VyY2VMb2FkOjpSZXBseShp
ZGVudGlmaWVyKSwgMCkpIHsKICAgICAgICAgLy8gRklYTUUgKE5ldHdvcmtQcm9jZXNzKTogV2hh
dCBzaG91bGQgd2UgZG8gaWYgdGhpcyBmYWlscz8KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVz
b3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJl
c291cmNlTG9hZGVyLmNwcAppbmRleCAzZTUyM2Y4Li4xMGVlNWNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAK
QEAgLTExNyw2ICsxMTcsNTcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJl
c291cmNlKGNvbnN0IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUmIGhhbmQKICAgICBtX2NvcmVM
b2FkZXItPmRpZEZpbmlzaExvYWRpbmcoZmluaXNoVGltZSk7CiB9CiAKK3ZvaWQgV2ViUmVzb3Vy
Y2VMb2FkZXI6OmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UodWludDY0X3Qg
cmVxdWVzdElELCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSkKK3sKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OkNhbkF1dGhlbnRpY2F0ZUFn
YWluc3RQcm90ZWN0aW9uU3BhY2VIYW5kbGVkKHJlcXVlc3RJRCwgbV9jb3JlTG9hZGVyLT5jYW5B
dXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKHByb3RlY3Rpb25TcGFjZSkpKTsKK30K
Kwordm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCit7CisgICAgTE9H
KE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSBmb3IgJyVzJyIsIG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CisKKyAgICBtX2N1cnJlbnRBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSA9IGNoYWxsZW5nZTsKKyAgICBtX2N1cnJlbnRBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5zZXRB
dXRoZW50aWNhdGlvbkNsaWVudCh0aGlzKTsKKworICAgIG1fY29yZUxvYWRlci0+ZGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKG1fY3VycmVudEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KTsKK30KKwordm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkQ2FuY2VsQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkKK3sKKyAg
ICBpZiAobV9jdXJyZW50QXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaWRlbnRpZmllcigpICE9IGNo
YWxsZW5nZS5pZGVudGlmaWVyKCkpCisgICAgICAgIHJldHVybjsKKworICAgIExPRyhOZXR3b3Jr
LCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjpkaWRDYW5jZWxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSBmb3IgJyVzJyIsIG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7CisKKyAgICBtX2NvcmVMb2FkZXItPmRpZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKG1fY3VycmVudEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKTsKKyAgICBtX2N1cnJlbnRB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSA9IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCk7Cit9CisK
Ky8vIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2xpZW50Cit2b2lkIFdlYlJlc291cmNlTG9hZGVy
OjpyZWNlaXZlZENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxs
ZW5nZSwgY29uc3QgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCkKK3sKKyAgICBBU1NFUlQoY2hhbGxl
bmdlID09IG1fY3VycmVudEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OlJlY2VpdmVkQXV0aGVudGljYXRpb25DcmVkZW50
aWFsKGNoYWxsZW5nZSwgY3JlZGVudGlhbCkpOworCisgICAgbV9jdXJyZW50QXV0aGVudGljYXRp
b25DaGFsbGVuZ2UgPSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpOworfQorCit2b2lkIFdlYlJl
c291cmNlTG9hZGVyOjpyZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwo
Y29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkKK3sKKyAgICBBU1NFUlQo
Y2hhbGxlbmdlID09IG1fY3VycmVudEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OlJlY2VpdmVkUmVxdWVzdFRvQ29udGlu
dWVXaXRob3V0QXV0aGVudGljYXRpb25DcmVkZW50aWFsKGNoYWxsZW5nZSkpOworCisgICAgbV9j
dXJyZW50QXV0aGVudGljYXRpb25DaGFsbGVuZ2UgPSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgp
OworfQorCit2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpyZWNlaXZlZENhbmNlbGxhdGlvbihjb25z
dCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKQoreworICAgIEFTU0VSVChjaGFs
bGVuZ2UgPT0gbV9jdXJyZW50QXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOworICAgIHNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6UmVjZWl2ZWRBdXRoZW50aWNhdGlvbkNhbmNl
bGxhdGlvbihjaGFsbGVuZ2UpKTsKKworICAgIG1fY3VycmVudEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlID0gQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAppbmRleCA4
NzRmYmVkLi42ODg2NDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaApAQCAtMzEsNiArMzEsOCBAQAogI2luY2x1ZGUg
IkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSAiU2hh
cmVhYmxlUmVzb3VyY2UuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9BdXRoZW50aWNhdGlvbkNsaWVudC5oPgogI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CkBAIC00MCw2ICs0Miw3IEBAIGNsYXNzIERhdGFSZWZlcmVuY2U7
CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFByb3RlY3Rpb25TcGFjZTsKIGNsYXNz
IFJlc291cmNlQnVmZmVyOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlTG9h
ZGVyOwpAQCAtNTEsNyArNTQsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdHlwZWRlZiB1aW50
NjRfdCBSZXNvdXJjZUxvYWRJZGVudGlmaWVyOwogCi1jbGFzcyBXZWJSZXNvdXJjZUxvYWRlciA6
IHB1YmxpYyBSZWZDb3VudGVkPFdlYlJlc291cmNlTG9hZGVyPiwgcHVibGljIENvcmVJUEM6Ok1l
c3NhZ2VTZW5kZXI8V2ViUmVzb3VyY2VMb2FkZXI+IHsKK2NsYXNzIFdlYlJlc291cmNlTG9hZGVy
IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViUmVzb3VyY2VMb2FkZXI+LCBwdWJsaWMgQ29yZUlQQzo6
TWVzc2FnZVNlbmRlcjxXZWJSZXNvdXJjZUxvYWRlcj4sIHB1YmxpYyBXZWJDb3JlOjpBdXRoZW50
aWNhdGlvbkNsaWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViUmVzb3Vy
Y2VMb2FkZXI+IGNyZWF0ZShQYXNzUmVmUHRyPFdlYkNvcmU6OlJlc291cmNlTG9hZGVyPik7CiAK
QEAgLTYzLDYgKzY2LDEzIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGlkUmVjZWl2ZVdlYlJlc291
cmNlTG9hZGVyTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlE
LCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYpOwogCisgICAgdXNpbmcgUmVmQ291bnRlZDxXZWJS
ZXNvdXJjZUxvYWRlcj46OnJlZjsKKyAgICB1c2luZyBSZWZDb3VudGVkPFdlYlJlc291cmNlTG9h
ZGVyPjo6ZGVyZWY7CisKKyAgICB2aXJ0dWFsIHZvaWQgcmVjZWl2ZWRDcmVkZW50aWFsKGNvbnN0
IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgY29uc3QgV2ViQ29yZTo6Q3JlZGVu
dGlhbCYpOworICAgIHZpcnR1YWwgdm9pZCByZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91
dENyZWRlbnRpYWwoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcmVjZWl2ZWRDYW5jZWxsYXRpb24oY29uc3QgV2ViQ29yZTo6QXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UmKTsKKwogcHJpdmF0ZToKICAgICBXZWJSZXNvdXJjZUxvYWRlcihQ
YXNzUmVmUHRyPFdlYkNvcmU6OlJlc291cmNlTG9hZGVyPik7CiAKQEAgLTczLDcgKzgzLDE1IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBkaWRGYWlsUmVzb3VyY2VMb2FkKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImKTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNvdXJjZShjb25zdCBTaGFyZWFi
bGVSZXNvdXJjZTo6SGFuZGxlJiwgZG91YmxlIGZpbmlzaFRpbWUpOwogCisgICAgdm9pZCBjYW5B
dXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29u
c3QgV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlJik7CisgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2Um
KTsKKyAgICB2b2lkIGRpZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IFdlYkNv
cmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CisKKyAgICB2aXJ0dWFsIHZvaWQgcmVmQXV0
aGVudGljYXRpb25DbGllbnQoKSB7IHJlZigpOyB9CisgICAgdmlydHVhbCB2b2lkIGRlcmVmQXV0
aGVudGljYXRpb25DbGllbnQoKSB7IGRlcmVmKCk7IH0KKwogICAgIFJlZlB0cjxXZWJDb3JlOjpS
ZXNvdXJjZUxvYWRlcj4gbV9jb3JlTG9hZGVyOworICAgIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlIG1fY3VycmVudEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4KaW5kZXggNTVhNDI5
NS4uOTZiMzBiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgpAQCAtMjgsNiArMjgs
MTAgQEAgbWVzc2FnZXMgLT4gV2ViUmVzb3VyY2VMb2FkZXIgewogICAgIERpZFJlY2VpdmVEYXRh
KENvcmVJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCwg
Ym9vbCBhbGxBdE9uY2UpCiAgICAgRGlkRmluaXNoUmVzb3VyY2VMb2FkKGRvdWJsZSBmaW5pc2hU
aW1lKQogICAgIERpZEZhaWxSZXNvdXJjZUxvYWQoV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJv
cikKKyAgICAKKyAgICBDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKHVpbnQ2
NF90IHJlcXVlc3RJRCwgV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlIHByb3RlY3Rpb25TcGFjZSkK
KyAgICBEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UgY2hhbGxlbmdlKQorICAgIERpZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNoYWxsZW5nZSkKIAogICAg
IC8vIERpZFJlY2VpdmVSZXNvdXJjZSBpcyBmb3Igd2hlbiB3ZSBoYXZlIHRoZSBlbnRpcmUgcmVz
b3VyY2UgZGF0YSBhdmFpbGFibGUgYXQgb25jZSwgc3VjaCBhcyB3aGVuIHRoZSByZXNvdXJjZSBp
cyBjYWNoZWQgaW4gbWVtb3J5CiAgICAgRGlkUmVjZWl2ZVJlc291cmNlKFdlYktpdDo6U2hhcmVh
YmxlUmVzb3VyY2U6OkhhbmRsZSByZXNvdXJjZSwgZG91YmxlIGZpbmlzaFRpbWUpCg==
</data>
<flag name="review"
          id="190062"
          type_id="1"
          status="+"
          setter="ap"
    />
    <flag name="commit-queue"
          id="190067"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
      

    </bug>

</bugzilla>