<?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>231771</bug_id>
          
          <creation_ts>2021-10-14 14:17:51 -0700</creation_ts>
          <short_desc>Add a callback to know when the service worker loads via -[WKWebView _loadServiceWorker:]</short_desc>
          <delta_ts>2021-10-18 15:21:50 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit API</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Timothy Hatcher">timothy</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>japhet</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1804500</commentid>
    <comment_count>0</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2021-10-14 14:17:51 -0700</bug_when>
    <thetext>Currently there is no way to know the service worker has loaded. Currently `webView:didFinishNavigation:` fires early and the service worker loads after this.

A new delegate or a completion handler on _loadServiceWorker: would be great. The completion handler should likely pass an `NSError`, or `bool` for success or failure reporting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804509</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-10-14 14:26:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/84274364&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805623</commentid>
    <comment_count>2</comment_count>
      <attachid>441618</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-10-18 09:44:33 -0700</bug_when>
    <thetext>Created attachment 441618
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805656</commentid>
    <comment_count>3</comment_count>
      <attachid>441624</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-10-18 11:16:58 -0700</bug_when>
    <thetext>Created attachment 441624
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805669</commentid>
    <comment_count>4</comment_count>
      <attachid>441624</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-10-18 12:08:02 -0700</bug_when>
    <thetext>Comment on attachment 441624
Patch

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

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:4812
&gt; +            m_serviceWorkerLaunchCompletionHandler(false);

I think you need this in the destructor too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805671</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-10-18 12:09:33 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #4)
&gt; Comment on attachment 441624 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=441624&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/WebPageProxy.cpp:4812
&gt; &gt; +            m_serviceWorkerLaunchCompletionHandler(false);
&gt; 
&gt; I think you need this in the destructor too.

Good point, will fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805678</commentid>
    <comment_count>6</comment_count>
      <attachid>441631</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-10-18 12:37:34 -0700</bug_when>
    <thetext>Created attachment 441631
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805733</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-18 15:21:48 -0700</bug_when>
    <thetext>Committed r284406 (243179@main): &lt;https://commits.webkit.org/243179@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 441631.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441618</attachid>
            <date>2021-10-18 09:44:33 -0700</date>
            <delta_ts>2021-10-18 11:16:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231771-20211018094432.patch</filename>
            <type>text/plain</type>
            <size>21764</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0MzcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjczZjBhZTJmZmM0ZTA4
ZDM1OWNjYWY0OWJjZDgxNzVmYWNjNzMwNS4uZDE4ZTFjZjQwY2E0MzY4OGY5MmU1NTlmMWZjM2U5
YzUwMDBkYzZlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIxLTEwLTE4ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGEgY2FsbGJhY2sgdG8g
a25vdyB3aGVuIHRoZSBzZXJ2aWNlIHdvcmtlciBsb2FkcyB2aWEgLVtXS1dlYlZpZXcgX2xvYWRT
ZXJ2aWNlV29ya2VyOl0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzMTc3MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODQyNzQzNjQ+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVM
b2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNv
bnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjp3
aWxsU2V0dGxlUmVnaXN0cmF0aW9uUHJvbWlzZSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyQ29udGFpbmVyOjpqb2JGYWlsZWRXaXRoRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYlJlc29sdmVkV2l0aFJlZ2lzdHJhdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JGYWlsZWRMb2Fk
aW5nU2NyaXB0KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRh
aW5lci5oOgorCiAyMDIxLTEwLTE4ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlh
LmNvbT4KIAogICAgICAgICBbR1N0cmVhbWVyXSBmYXN0L21lZGlhc3RyZWFtL3ZpZGVvLXJvdGF0
aW9uIHRlc3RzIGFyZSBmYWlsaW5nIGR1ZSB0byBtaXNzaW5nIFRlc3RDb250cm9sbGVyOjp0YWtl
Vmlld1BvcnRTbmFwc2hvdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBkZGE1MWY5MDE4OTJhZDg0MGEyNmJhZjBiMWU4
MjY3OTE3NWVkY2IyLi43ZDA2NDNlZmJjYmVkZTY3Y2NjYjU5YmIwMzY5YjljYmY5M2U1NDk0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIxLTEwLTE4ICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGEgY2FsbGJhY2sgdG8ga25vdyB3aGVuIHRoZSBz
ZXJ2aWNlIHdvcmtlciBsb2FkcyB2aWEgLVtXS1dlYlZpZXcgX2xvYWRTZXJ2aWNlV29ya2VyOl0K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTc3MQor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vODQyNzQzNjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9sb2FkU2VydmljZVdvcmtlcjpjb21wbGV0aW9u
SGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9sb2FkU2VydmljZVdvcmtlcjpdKTog
RGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZEZpbmlzaFNlcnZpY2VXb3JrZXJQYWdl
UmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRGYWlsTG9h
ZEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXNldFN0YXRlQWZ0
ZXJQcm9jZXNzRXhpdGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkU2Vy
dmljZVdvcmtlcik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hTZXJ2aWNlV29ya2VyUGFnZVJl
Z2lzdHJhdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5oOgorCiAyMDIxLTEwLTE4ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNn
YXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR0xJQl0gU2ltcGxpZnkgU2xlZXBEaXNhYmxl
ciBieSBjaGVja2luZyBpZiB3ZSBhcmUgdW5kZXIgc2FuZGJveApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCA5ZTEwMzNhMTgzOWI1ZGMyZjQ4NGI3MDIwMGM2
ZmY5MTRkOTkxNTQ2Li5lNzU4MmQ4OTVmZGFhOWE2NzU3ZDlmMjE2MmVjYzUyZDFlMTY0MTA4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMzMwLDYgKzMz
MCwxMCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgd2lsbEluamVjdFVzZXJTY3JpcHQo
RE9NV3JhcHBlcldvcmxkJikgeyB9CiAKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAg
dmlydHVhbCB2b2lkIGRpZEZpbmlzaFNlcnZpY2VXb3JrZXJQYWdlUmVnaXN0cmF0aW9uKGJvb2wg
c3VjY2VzcykgeyBVTlVTRURfUEFSQU0oc3VjY2Vzcyk7IH0KKyNlbmRpZgorCiAjaWYgRU5BQkxF
KFdFQl9SVEMpCiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbFN0YXJ0VXNpbmdQZWVyQ29u
bmVjdGlvbkhhbmRsZXIoUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKikgeyB9CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29u
dGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
Q29udGFpbmVyLmNwcAppbmRleCA3NTZjMTI0ZTY3ZGQzNzBiNjk0ZGRmMmYxMmI4OTE4ZmU4Yzhm
NWVkLi4yNTEzODA5ZGQ4Y2ZjYzNlYmNmNDA4OWVhNDUxOTNjYjcwZDljOGQwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250
YWluZXIuY3BwCkBAIC0zNCw2ICszNCw4IEBACiAjaW5jbHVkZSAiRXZlbnRMb29wLmgiCiAjaW5j
bHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgorI2luY2x1ZGUgIkZy
YW1lTG9hZGVyLmgiCisjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJJ
RExUeXBlcy5oIgogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAi
SlNTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmgiCkBAIC0xOTEsNiArMTkzLDE2IEBAIHZvaWQg
U2VydmljZVdvcmtlckNvbnRhaW5lcjo6YWRkUmVnaXN0cmF0aW9uKGNvbnN0IFN0cmluZyYgcmVs
YXRpdmVTY3JpcHRVUkwsIGNvCiAgICAgc2NoZWR1bGVKb2IobWFrZVVuaXF1ZTxTZXJ2aWNlV29y
a2VySm9iPigqdGhpcywgV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShqb2JEYXRhKSkpOwogfQog
Cit2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OndpbGxTZXR0bGVSZWdpc3RyYXRpb25Qcm9t
aXNlKGJvb2wgc3VjY2VzcykKK3sKKyAgICBhdXRvKiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpOworICAgIFBhZ2UqIHBhZ2UgPSBpczxEb2N1bWVudD4oY29udGV4dCkgPyBkb3du
Y2FzdDxEb2N1bWVudD4oKmNvbnRleHQpLnBhZ2UoKSA6IG51bGxwdHI7CisgICAgaWYgKCFwYWdl
IHx8ICFwYWdlLT5pc1NlcnZpY2VXb3JrZXJQYWdlKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IHBhZ2UtPm1haW5GcmFtZSgpLmxvYWRlcigpLmNsaWVudCgpLmRpZEZpbmlzaFNlcnZpY2VXb3Jr
ZXJQYWdlUmVnaXN0cmF0aW9uKHN1Y2Nlc3MpOworfQorCiB2b2lkIFNlcnZpY2VXb3JrZXJDb250
YWluZXI6OnVucmVnaXN0ZXJSZWdpc3RyYXRpb24oU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklk
ZW50aWZpZXIgcmVnaXN0cmF0aW9uSWRlbnRpZmllciwgRE9NUHJvbWlzZURlZmVycmVkPElETEJv
b2xlYW4+JiYgcHJvbWlzZSkKIHsKICAgICBBU1NFUlQoIW1faXNTdG9wcGVkKTsKQEAgLTMzNCw2
ICszNDYsOSBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYkZhaWxlZFdpdGhFeGNl
cHRpb24oU2VydmljZVdvcmtlckpvYiYgam9iLCBjb25zdAogCiAgICAgQ09OVEFJTkVSX1JFTEVB
U0VfTE9HX0VSUk9SKCJqb2JGYWlsZWRXaXRoRXhjZXB0aW9uOiBKb2IgJSIgUFJJdTY0ICIgZmFp
bGVkIHdpdGggZXJyb3IgJXMiLCBqb2IuaWRlbnRpZmllcigpLnRvVUludDY0KCksIGV4Y2VwdGlv
bi5tZXNzYWdlKCkudXRmOCgpLmRhdGEoKSk7CiAKKyAgICBpZiAoam9iLmRhdGEoKS50eXBlID09
IFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpSZWdpc3RlcikKKyAgICAgICAgd2lsbFNldHRsZVJlZ2lz
dHJhdGlvblByb21pc2UoZmFsc2UpOworCiAgICAgYXV0byBwcm9taXNlID0gam9iLnRha2VQcm9t
aXNlKCk7CiAgICAgaWYgKCFwcm9taXNlKQogICAgICAgICByZXR1cm47CkBAIC0zNTYsOSArMzcx
LDEwIEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iUmVzb2x2ZWRXaXRoUmVnaXN0
cmF0aW9uKFNlcnZpY2VXb3JrZXJKb2ImIGpvYiwKICAgICBBU1NFUlQobV9jcmVhdGlvblRocmVh
ZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uo
am9iLmhhc1Byb21pc2UoKSB8fCBqb2IuZGF0YSgpLnR5cGUgPT0gU2VydmljZVdvcmtlckpvYlR5
cGU6OlVwZGF0ZSwgIk9ubHkgc29mdCB1cGRhdGVzIGhhdmUgbm8gcHJvbWlzZSIpOwogCi0gICAg
aWYgKGpvYi5kYXRhKCkudHlwZSA9PSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6UmVnaXN0ZXIpCisg
ICAgaWYgKGpvYi5kYXRhKCkudHlwZSA9PSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6UmVnaXN0ZXIp
IHsKICAgICAgICAgQ09OVEFJTkVSX1JFTEVBU0VfTE9HKCJqb2JSZXNvbHZlZFdpdGhSZWdpc3Ry
YXRpb246IFJlZ2lzdHJhdGlvbiBqb2IgJSIgUFJJdTY0ICIgc3VjY2VlZGVkIiwgam9iLmlkZW50
aWZpZXIoKS50b1VJbnQ2NCgpKTsKLSAgICBlbHNlIHsKKyAgICAgICAgd2lsbFNldHRsZVJlZ2lz
dHJhdGlvblByb21pc2UodHJ1ZSk7CisgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUKGpvYi5k
YXRhKCkudHlwZSA9PSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6VXBkYXRlKTsKICAgICAgICAgQ09O
VEFJTkVSX1JFTEVBU0VfTE9HKCJqb2JSZXNvbHZlZFdpdGhSZWdpc3RyYXRpb246IFVwZGF0ZSBq
b2IgJSIgUFJJdTY0ICIgc3VjY2VlZGVkIiwgam9iLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsK
ICAgICB9CkBAIC00NzUsNiArNDkxLDkgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpq
b2JGYWlsZWRMb2FkaW5nU2NyaXB0KFNlcnZpY2VXb3JrZXJKb2ImIGpvYiwgY29uc3QKIAogICAg
IENPTlRBSU5FUl9SRUxFQVNFX0xPR19FUlJPUigiam9iRmluaXNoZWRMb2FkaW5nU2NyaXB0OiBG
YWlsZWQgdG8gZmV0Y2ggc2NyaXB0IGZvciBqb2IgJSIgUFJJdTY0ICIsIGVycm9yOiAlcyIsIGpv
Yi5pZGVudGlmaWVyKCkudG9VSW50NjQoKSwgZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKS51
dGY4KCkuZGF0YSgpKTsKIAorICAgIGlmIChqb2IuZGF0YSgpLnR5cGUgPT0gU2VydmljZVdvcmtl
ckpvYlR5cGU6OlJlZ2lzdGVyKQorICAgICAgICB3aWxsU2V0dGxlUmVnaXN0cmF0aW9uUHJvbWlz
ZShmYWxzZSk7CisKICAgICBpZiAoYXV0byBwcm9taXNlID0gam9iLnRha2VQcm9taXNlKCkpIHsK
ICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpE
T01NYW5pcHVsYXRpb24sIFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgZXhjZXB0aW9uID0g
V1RGTW92ZShleGNlcHRpb24pXSgpIG11dGFibGUgewogICAgICAgICAgICAgcHJvbWlzZS0+cmVq
ZWN0KFdURk1vdmUoZXhjZXB0aW9uKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaAppbmRleCA2ZjViMzcxNzYwY2Ji
MzBiYmM4NzhjMzA3MmNmZDk4NDZlNWUzMmVmLi5lZmRmMDk0MjZhNzk2NjQ0OTU1NzQxNmUzM2M2
MmUyZTYzZDAxY2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmgKQEAgLTEwNSw2ICsxMDUsNyBAQCBwcml2YXRl
OgogCiAgICAgdm9pZCBub3RpZnlGYWlsZWRGZXRjaGluZ1NjcmlwdChTZXJ2aWNlV29ya2VySm9i
JiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgZGVzdHJveUpvYihTZXJ2aWNlV29y
a2VySm9iJik7CisgICAgdm9pZCB3aWxsU2V0dGxlUmVnaXN0cmF0aW9uUHJvbWlzZShib29sIHN1
Y2Nlc3MpOwogCiAgICAgRG9jdW1lbnRPcldvcmtlcklkZW50aWZpZXIgY29udGV4dElkZW50aWZp
ZXIoKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW0KaW5kZXggMTczZDczMGQ1MjU1ODdmZjQyMmVlYjkwMjg3ZDMyOGQ1N2ZlN2Q3Zi4u
ZWQ2NDM5ZTVmYzg5YTU4MWU4NzIyYzVkMjBkMmEzZjk0MDAwNTNmZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0yMzk5LDEzICsyMzk5
LDE1IEBAIC0gKFdLTmF2aWdhdGlvbiAqKV9sb2FkUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVx
dWVzdCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9sCiAgICAgcmV0dXJuIHdyYXBwZXIoX3BhZ2Ut
PmxvYWRSZXF1ZXN0KHJlcXVlc3QsIHBvbGljeSkpOwogfQogCi0tICh2b2lkKV9sb2FkU2Vydmlj
ZVdvcmtlcjooTlNVUkwgKil1cmwKKy0gKHZvaWQpX2xvYWRTZXJ2aWNlV29ya2VyOihOU1VSTCAq
KXVybCAgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wgc3VjY2VzcykpY29tcGxldGlv
bkhhbmRsZXIKIHsKICAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgaWYgKF9wYWdlLT5pc1Nl
cnZpY2VXb3JrZXJQYWdlKCkpCiAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludGVybmFs
SW5jb25zaXN0ZW5jeUV4Y2VwdGlvbiBmb3JtYXQ6QCJUaGUgV0tXZWJWaWV3IHdhcyBhbHJlYWR5
IHVzZWQgdG8gbG9hZCBhIHNlcnZpY2Ugd29ya2VyIl07CiAKLSAgICBfcGFnZS0+bG9hZFNlcnZp
Y2VXb3JrZXIodXJsKTsKKyAgICBfcGFnZS0+bG9hZFNlcnZpY2VXb3JrZXIodXJsLCBbY29tcGxl
dGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShib29sIHN1Y2Nl
c3MpIG11dGFibGUgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdWNjZXNzKTsKKyAgICB9
KTsKIH0KIAogLSAodm9pZClfZ3JhbnRBY2Nlc3NUb0Fzc2V0U2VydmljZXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4
IGNiN2YzMzQzZmRlZTAyMDVhZTBjZTI2NmNmODMxNzlmMTFkYWQwNDEuLjFhZDc1YmExYjRkM2Fj
NjAyMmE3ZjBmYWUzZmE5OTU1M2VhYzAwMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApAQCAtNDA4LDcgKzQwOCw3IEBA
IGZvciB0aGlzIHByb3BlcnR5LgogLSAodm9pZClfZGlkTG9hZEFwcEluaXRpYXRlZFJlcXVlc3Q6
KHZvaWQgKF4pKEJPT0wgcmVzdWx0KSljb21wbGV0aW9uSGFuZGxlcjsKIC0gKHZvaWQpX2RpZExv
YWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0Oih2b2lkICheKShCT09MIHJlc3VsdCkpY29tcGxldGlv
bkhhbmRsZXI7CiAKLS0gKHZvaWQpX2xvYWRTZXJ2aWNlV29ya2VyOihOU1VSTCAqKXVybCBXS19B
UElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9p
ZClfbG9hZFNlcnZpY2VXb3JrZXI6KE5TVVJMICopdXJsIGNvbXBsZXRpb25IYW5kbGVyOih2b2lk
ICheKShCT09MIHN1Y2Nlc3MpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKIC0gKHZvaWQpX3N1c3BlbmRQYWdl
Oih2b2lkICheKShCT09MKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29z
KDEyLjApLCBpb3MoMTUuMCkpOwogLSAodm9pZClfcmVzdW1lUGFnZToodm9pZCAoXikoQk9PTCkp
Y29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMi4wKSwgaW9zKDE1LjAp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDM5YWE0MDM4
NWZkZTExYmU3YzMzOWY5ZTc1MWU5NzczZmIxMmQ5MTUuLjgxNmY5MWNjMjY5NDM4NmYxNDgwZWM0
ZTc0YjQxMjBiZTNjMTc1NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcApAQCAtNDgwNiw2ICs0ODA2LDExIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsUHJv
dmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwCiAgICAg
ICAgIHBhZ2VDbGllbnQoKS5kaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yTWFpbkZyYW1lKCk7CiAg
ICAgICAgIGlmIChuYXZpZ2F0aW9uKQogICAgICAgICAgICAgbmF2aWdhdGlvbi0+c2V0Q2xpZW50
TmF2aWdhdGlvbkFjdGl2aXR5KG51bGxwdHIpOworCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQorICAgICAgICBpZiAobV9pc1NlcnZpY2VXb3JrZXJQYWdlICYmIG1fc2VydmljZVdvcmtlckxh
dW5jaENvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICAgICAgbV9zZXJ2aWNlV29ya2VyTGF1bmNo
Q29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworI2VuZGlmCiAgICAgfQogCiAgICAgZnJhbWUuZGlk
RmFpbFByb3Zpc2lvbmFsTG9hZCgpOwpAQCAtNDgyOSw2ICs0ODM0LDE3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nl
c3NQcm94eT4mJiBwCiAgICAgICAgIG1fcHJvdmlzaW9uYWxQYWdlID0gbnVsbHB0cjsKIH0KIAor
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hT
ZXJ2aWNlV29ya2VyUGFnZVJlZ2lzdHJhdGlvbihib29sIHN1Y2Nlc3MpCit7CisgICAgQVNTRVJU
KG1faXNTZXJ2aWNlV29ya2VyUGFnZSk7CisgICAgQVNTRVJUKG1fc2VydmljZVdvcmtlckxhdW5j
aENvbXBsZXRpb25IYW5kbGVyKTsKKworICAgIGlmIChtX3NlcnZpY2VXb3JrZXJMYXVuY2hDb21w
bGV0aW9uSGFuZGxlcikKKyAgICAgICAgbV9zZXJ2aWNlV29ya2VyTGF1bmNoQ29tcGxldGlvbkhh
bmRsZXIoc3VjY2Vzcyk7Cit9CisjZW5kaWYKKwogI2lmIEVOQUJMRShJTlRFTExJR0VOVF9UUkFD
S0lOR19QUkVWRU5USU9OKQogc3RhdGljIE9wdGlvblNldDxDcm9zc1NpdGVOYXZpZ2F0aW9uRGF0
YVRyYW5zZmVyOjpGbGFnPiBjaGVja0lmTmF2aWdhdGlvbkNvbnRhaW5zRGF0YVRyYW5zZmVyKGNv
bnN0IFNlY3VyaXR5T3JpZ2luRGF0YSByZXF1ZXN0ZXJPcmlnaW4sIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgY3VycmVudFJlcXVlc3QpCiB7CkBAIC01MDkyLDYgKzUxMDgsMTEgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZEZhaWxMb2FkRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZy
YW1lSW5mb0RhdGEmJgogICAgICAgICBwYWdlQ2xpZW50KCkuZGlkRmFpbE5hdmlnYXRpb24obmF2
aWdhdGlvbi5nZXQoKSk7CiAgICAgICAgIGlmIChuYXZpZ2F0aW9uKQogICAgICAgICAgICAgbmF2
aWdhdGlvbi0+c2V0Q2xpZW50TmF2aWdhdGlvbkFjdGl2aXR5KG51bGxwdHIpOworCisjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQorICAgICAgICBpZiAobV9pc1NlcnZpY2VXb3JrZXJQYWdlICYm
IG1fc2VydmljZVdvcmtlckxhdW5jaENvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICAgICAgbV9z
ZXJ2aWNlV29ya2VyTGF1bmNoQ29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworI2VuZGlmCiAgICAg
fQogfQogCkBAIC04MDAxLDYgKzgwMjIsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0U3Rh
dGVBZnRlclByb2Nlc3NFeGl0ZWQoUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uIHRlcm1pbmEKICAg
ICBpZiAobV93aGVlbEV2ZW50Q29hbGVzY2VyKQogICAgICAgICBtX3doZWVsRXZlbnRDb2FsZXNj
ZXItPmNsZWFyKCk7CiAKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgaWYgKG1faXNT
ZXJ2aWNlV29ya2VyUGFnZSAmJiBtX3NlcnZpY2VXb3JrZXJMYXVuY2hDb21wbGV0aW9uSGFuZGxl
cikKKyAgICAgICAgbV9zZXJ2aWNlV29ya2VyTGF1bmNoQ29tcGxldGlvbkhhbmRsZXIoZmFsc2Up
OworI2VuZGlmCisKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAhRU5BQkxFKElPU19UT1VD
SF9FVkVOVFMpCiAgICAgbV90b3VjaEV2ZW50UXVldWUuY2xlYXIoKTsKICNlbmRpZgpAQCAtMTA3
MDgsMTYgKzEwNzM0LDI2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXROZWVkc0RPTVdpbmRvd1Jl
c2l6ZUV2ZW50KCkKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXROZWVkc0RPTVdpbmRv
d1Jlc2l6ZUV2ZW50KCkpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFNlcnZpY2VXb3Jr
ZXIoY29uc3QgVVJMJiB1cmwpCit2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFNlcnZpY2VXb3JrZXIo
Y29uc3QgVVJMJiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBzdWNjZXNzKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgaWYg
KG1faXNDbG9zZWQpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25I
YW5kbGVyKGZhbHNlKTsKIAogICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAi
bG9hZFNlcnZpY2VXb3JrZXI6Iik7CiAKKyAgICBpZiAobV9zZXJ2aWNlV29ya2VyTGF1bmNoQ29t
cGxldGlvbkhhbmRsZXIpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7
CisKICAgICBtX2lzU2VydmljZVdvcmtlclBhZ2UgPSB0cnVlOworICAgIG1fc2VydmljZVdvcmtl
ckxhdW5jaENvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcik7CisK
ICAgICBDU3RyaW5nIGh0bWwgPSBtYWtlU3RyaW5nKCI8c2NyaXB0Pm5hdmlnYXRvci5zZXJ2aWNl
V29ya2VyLnJlZ2lzdGVyKCciLCB1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgIicpOzwvc2Ny
aXB0PiIpLnV0ZjgoKTsKICAgICBsb2FkRGF0YSh7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KGh0bWwuZGF0YSgpKSwgaHRtbC5sZW5ndGgoKSB9LCAidGV4dC9odG1sIl9zLCAiVVRG
LTgiX3MsIHVybC5wcm90b2NvbEhvc3RBbmRQb3J0KCkpOworI2Vsc2UKKyAgICBVTlVTRURfUEFS
QU0odXJsKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisjZW5kaWYKIH0KIAogI2lm
ICFQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAppbmRleCBjYzAwMjRhYjlmNWI3ZDY4MjlmZmEyMDI1MzFiMTVkNTY5ZTQwMDE5Li43MjQ0Njgy
Njk3MjBiNTNiYjFiMDkzM2EwZWI0M2E4NWQ4YTU3NWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaApAQCAtNTU2LDcgKzU1Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJl
bW90ZUluc3BlY3RvckluZm9ybWF0aW9uRGlkQ2hhbmdlKCk7CiAjZW5kaWYKIAotICAgIHZvaWQg
bG9hZFNlcnZpY2VXb3JrZXIoY29uc3QgVVJMJik7CisgICAgdm9pZCBsb2FkU2VydmljZVdvcmtl
cihjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgc3VjY2Vzcyk+JiYpOwog
CiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJv
eHkqIGZ1bGxTY3JlZW5NYW5hZ2VyKCk7CkBAIC0yNTIwLDYgKzI1MjAsMTAgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHJlc2V0U3BlZWNoU3ludGhlc2l6ZXIoKTsKICNlbmRpZgogCisjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQorICAgIHZvaWQgZGlkRmluaXNoU2VydmljZVdvcmtlclBhZ2VSZWdp
c3RyYXRpb24oYm9vbCBzdWNjZXNzKTsKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBzdGF0aWMgYm9vbCBpc0luSGFyZHdhcmVLZXlib2FyZE1vZGUoKTsKICAgICB2b2lk
IGNsZWFyQXVkaWJsZUFjdGl2aXR5KCk7CkBAIC0zMDE0LDcgKzMwMTgsMTAgQEAgcHJpdmF0ZToK
IAogICAgIGJvb2wgbV9uZWVkc0ZvbnRBdHRyaWJ1dGVzIHsgZmFsc2UgfTsKICAgICBib29sIG1f
bWF5SGF2ZVVuaXZlcnNhbEZpbGVSZWFkU2FuZGJveEV4dGVuc2lvbiB7IGZhbHNlIH07CisjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGJvb2wgbV9pc1NlcnZpY2VXb3JrZXJQYWdlIHsg
ZmFsc2UgfTsKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiBtX3NlcnZpY2VXb3Jr
ZXJMYXVuY2hDb21wbGV0aW9uSGFuZGxlcjsKKyNlbmRpZgogCiAgICAgUnVuTG9vcDo6VGltZXI8
V2ViUGFnZVByb3h5PiBtX3RyeUNsb3NlVGltZW91dFRpbWVyOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggNWVkZjMxZDM0M2Fl
ZDhkNzIxNjlkYjk3MzUyZTViNzFmNzI4NTA4OC4uNTgxMDhmNzQzMTRkYjVhOTU2Nzg1MzRlN2Jj
MTcxMDA0Nzc3ODBiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbgpAQCAtMjU4LDYgKzI1OCwxMCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdl
UHJveHkgewogICAgIFNob3dDb250ZXh0TWVudShXZWJLaXQ6OkNvbnRleHRNZW51Q29udGV4dERh
dGEgY29udGV4dE1lbnVDb250ZXh0RGF0YSwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKICNl
bmRpZgogCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIERpZEZpbmlzaFNlcnZpY2VX
b3JrZXJQYWdlUmVnaXN0cmF0aW9uKGJvb2wgc3VjY2VzcykKKyNlbmRpZgorCiAgICAgIyBEYXRh
YmFzZSBtZXNzYWdlcwogICAgIEV4Y2VlZGVkRGF0YWJhc2VRdW90YShXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCwgU3RyaW5nIG9yaWdpbklkZW50aWZpZXIsIFN0cmluZyBkYXRhYmFz
ZU5hbWUsIFN0cmluZyBkYXRhYmFzZURpc3BsYXlOYW1lLCB1aW50NjRfdCBjdXJyZW50UXVvdGEs
IHVpbnQ2NF90IGN1cnJlbnRPcmlnaW5Vc2FnZSwgdWludDY0X3QgY3VycmVudERhdGFiYXNlVXNh
Z2UsIHVpbnQ2NF90IGV4cGVjdGVkVXNhZ2UpIC0+ICh1aW50NjRfdCBuZXdRdW90YSkgU3luY2hy
b25vdXMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggMTNkNjM4NzQ4ZTEw
YjVkZjM3ZjkwN2I4M2ExZDU5M2U0YmVmYjNhZi4uOTlhNTFhYjVmZWFhZTQ3OWEwM2EzZDU4MWM4
ODk0NzBiMDBlZTljMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xOTM5
LDYgKzE5MzksMTcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkQ3JlYXRlV2luZG93
KERPTVdpbmRvdyYgd2luZG93KQogICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6RGlkQ3JlYXRlV2luZG93KG1fZnJhbWUtPmZyYW1lSUQoKSwgd2luZG93LmlkZW50aWZp
ZXIoKSkpOwogfQogCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQordm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGlkRmluaXNoU2VydmljZVdvcmtlclBhZ2VSZWdpc3RyYXRpb24oYm9vbCBz
dWNjZXNzKQoreworICAgIGF1dG8qIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CisgICAgaWYg
KCF3ZWJQYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRpZEZpbmlzaFNlcnZpY2VXb3JrZXJQYWdlUmVnaXN0cmF0aW9uKHN1
Y2Nlc3MpKTsKK30KKyNlbmRpZgorCiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogYm9v
bCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxkRW5hYmxlSW5BcHBCcm93c2VyUHJpdmFjeVBy
b3RlY3Rpb25zKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggZWQz
MjQ0MmNhOTBmMzIzNGJlMmY1YzZjNjczOWFhYzNiYTFhODA4MS4uYmI1MjlkM2FlYzRlMmM3NWYx
YTdkZTkxYjEwYjU1ODJkNDUyMmI0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAg
LTE2NCw2ICsxNjQsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVu
dChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYsIGNvbnN0IFVSTCYpIGZpbmFsOwogICAgIHZvaWQg
ZGlkRGV0ZWN0WFNTKGNvbnN0IFVSTCYsIGJvb2wgZGlkQmxvY2tFbnRpcmVQYWdlKSBmaW5hbDsK
IAorI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICB2b2lkIGRpZEZpbmlzaFNlcnZpY2VX
b3JrZXJQYWdlUmVnaXN0cmF0aW9uKGJvb2wgc3VjY2VzcykgZmluYWw7CisjZW5kaWYKKwogICAg
IFdlYkNvcmU6OlJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JikgY29uc3QgZmluYWw7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBi
bG9ja2VkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgY29uc3QgZmluYWw7
CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkQnlDb250ZW50QmxvY2tlckVycm9y
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDc1MjI5OGViYjk4MTQw
NmI2ZDE2ZTBjMzUzYzUxOTM4OTAyOTQxODEuLmNhMDA5NzE4OGFlYTA0NDVjZGQzMTdhZWRjOGQ3
MWU0NGFhZmI0YjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0xMC0xOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIGNhbGxiYWNrIHRvIGtub3cgd2hlbiB0aGUgc2Vy
dmljZSB3b3JrZXIgbG9hZHMgdmlhIC1bV0tXZWJWaWV3IF9sb2FkU2VydmljZVdvcmtlcjpdCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzE3NzEKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg0Mjc0MzY0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBBUEkgdGVzdCBjb3ZlcmFnZS4KKworICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1t
OgorCiAyMDIxLTEwLTE4ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4K
IAogICAgICAgICBbR1N0cmVhbWVyXSBmYXN0L21lZGlhc3RyZWFtL3ZpZGVvLXJvdGF0aW9uIHRl
c3RzIGFyZSBmYWlsaW5nIGR1ZSB0byBtaXNzaW5nIFRlc3RDb250cm9sbGVyOjp0YWtlVmlld1Bv
cnRTbmFwc2hvdApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbQppbmRleCA2ZjRkZWUyYjE3ZGM4MjAzMDJk
ODYzNjVlN2QxYjBjOTFkNDlkMWQ3Li4yOTBlYzY0ODZhZmFlZDgwNGQyM2E1MTBhMTViNTBlOGQ1
NGYxZGUwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1NlcnZpY2VXb3JrZXJCYXNpYy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbQpAQCAtMjY3Nyw5ICsyNjc3LDE0IEBAIFRF
U1QoU2VydmljZVdvcmtlciwgRXh0ZW5zaW9uU2VydmljZVdvcmtlcikKICAgICBbW3dlYlZpZXcg
X3JlbW90ZU9iamVjdFJlZ2lzdHJ5XSByZWdpc3RlckV4cG9ydGVkT2JqZWN0Om9iamVjdC5nZXQo
KSBpbnRlcmZhY2U6aW50ZXJmYWNlXTsKIAogICAgIC8vIFRoZSBzZXJ2aWNlIHdvcmtlciBzY3Jp
cHQgc2hvdWxkIGdldCBsb2FkZWQgb3ZlciB0aGUgY3VzdG9tIHNjaGVtZSBoYW5kbGVyLgorICAg
IGRvbmUgPSBmYWxzZTsKICAgICBkaWRTdGFydFVSTFNjaGVtZVRhc2sgPSBmYWxzZTsKLSAgICBb
d2ViVmlldyBfbG9hZFNlcnZpY2VXb3JrZXI6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJzdy1leHQ6
Ly9BQkMvc3cuanMiXV07Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkaWRTdGFydFVS
TFNjaGVtZVRhc2spOworICAgIFt3ZWJWaWV3IF9sb2FkU2VydmljZVdvcmtlcjpbTlNVUkwgVVJM
V2l0aFN0cmluZzpAInN3LWV4dDovL0FCQy9zdy5qcyJdIGNvbXBsZXRpb25IYW5kbGVyOl4oQk9P
TCBzdWNjZXNzKSB7CisgICAgICAgIEVYUEVDVF9UUlVFKHN1Y2Nlc3MpOworICAgICAgICBFWFBF
Q1RfVFJVRShkaWRTdGFydFVSTFNjaGVtZVRhc2spOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAg
ICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwogCiAgICAgLy8gVGhl
IGluamVjdGVkIGJ1bmRsZSBzaG91bGQgaGF2ZSBiZWVuIG5vdGlmaWVkIHRoYXQgdGhlIHNlcnZp
Y2Ugd29ya2VyJ3MgZ2xvYmFsIG9iamVjdCB3YXMgYXZhaWxhYmxlLgogICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmc2VydmljZVdvcmtlckdsb2JhbE9iamVjdElzQXZhaWxhYmxlKTsKQEAg
LTI3MDUsMyArMjcxMCw2MiBAQCBURVNUKFNlcnZpY2VXb3JrZXIsIEV4dGVuc2lvblNlcnZpY2VX
b3JrZXIpCiAgICAgd2hpbGUgKHdlYlZpZXdDb25maWd1cmF0aW9uLnByb2Nlc3NQb29sLl9zZXJ2
aWNlV29ya2VyUHJvY2Vzc0NvdW50KQogICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpzcGlu
UnVuTG9vcCgxMCk7CiB9CisKK1RFU1QoU2VydmljZVdvcmtlciwgRXh0ZW5zaW9uU2VydmljZVdv
cmtlckZhaWx1cmVCYWRTY3JpcHQpCit7CisgICAgW1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dX
ZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zXTsKKworICAgIC8vIFN0YXJ0IHdpdGggYSBj
bGVhbiBzbGF0ZSBkYXRhIHN0b3JlCisgICAgW1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERh
dGFTdG9yZV0gcmVtb3ZlRGF0YU9mVHlwZXM6W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxXZWJzaXRl
RGF0YVR5cGVzXSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRpb25I
YW5kbGVyOl4oKSB7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisgICAgYXV0byBz
Y2hlbWVIYW5kbGVyID0gYWRvcHROUyhbU2VydmljZVdvcmtlclNjaGVtZUhhbmRsZXIgbmV3XSk7
CisgICAgW3NjaGVtZUhhbmRsZXIgYWRkTWFwcGluZ0Zyb21VUkxTdHJpbmc6QCJzdy1leHQ6Ly9B
QkMvYmFkLXN3LmpzIiB0b0RhdGE6IjEgPSAxOyJdOworCisgICAgV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiAqd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVz
dF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJTZXJ2aWNlV29ya2VyUGFn
ZVBsdWdJbiJdOworICAgIFt3ZWJWaWV3Q29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVy
OnNjaGVtZUhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAic3ctZXh0Il07CisgICAgYXV0byB3
ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VS
ZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOndlYlZpZXdDb25maWd1cmF0aW9uXSk7
CisKKyAgICBhdXRvIG9iamVjdCA9IGFkb3B0TlMoW1tTZXJ2aWNlV29ya2VyUGFnZVJlbW90ZU9i
amVjdCBhbGxvY10gaW5pdF0pOworICAgIF9XS1JlbW90ZU9iamVjdEludGVyZmFjZSAqaW50ZXJm
YWNlID0gW19XS1JlbW90ZU9iamVjdEludGVyZmFjZSByZW1vdGVPYmplY3RJbnRlcmZhY2VXaXRo
UHJvdG9jb2w6QHByb3RvY29sKFNlcnZpY2VXb3JrZXJQYWdlUHJvdG9jb2wpXTsKKyAgICBbW3dl
YlZpZXcgX3JlbW90ZU9iamVjdFJlZ2lzdHJ5XSByZWdpc3RlckV4cG9ydGVkT2JqZWN0Om9iamVj
dC5nZXQoKSBpbnRlcmZhY2U6aW50ZXJmYWNlXTsKKworICAgIC8vIFRoZSBzZXJ2aWNlIHdvcmtl
ciBzY3JpcHQgc2hvdWxkIGdldCBsb2FkZWQgb3ZlciB0aGUgY3VzdG9tIHNjaGVtZSBoYW5kbGVy
LgorICAgIGRvbmUgPSBmYWxzZTsKKyAgICBkaWRTdGFydFVSTFNjaGVtZVRhc2sgPSBmYWxzZTsK
KyAgICBbd2ViVmlldyBfbG9hZFNlcnZpY2VXb3JrZXI6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJz
dy1leHQ6Ly9BQkMvYmFkLXN3LmpzIl0gY29tcGxldGlvbkhhbmRsZXI6XihCT09MIHN1Y2Nlc3Mp
IHsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKHN1Y2Nlc3MpOworICAgICAgICBFWFBFQ1RfVFJVRShk
aWRTdGFydFVSTFNjaGVtZVRhc2spOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworfQorCitURVNUKFNlcnZpY2VXb3Jr
ZXIsIEV4dGVuc2lvblNlcnZpY2VXb3JrZXJGYWlsdXJlQmFkVVJMKQoreworICAgIFtXS1dlYnNp
dGVEYXRhU3RvcmUgX2FsbG93V2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2luc107CisKKyAg
ICAvLyBTdGFydCB3aXRoIGEgY2xlYW4gc2xhdGUgZGF0YSBzdG9yZQorICAgIFtbV0tXZWJzaXRl
RGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdIHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVE
YXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3Rh
bnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgeworICAgICAgICBkb25lID0gdHJ1ZTsKKyAg
ICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBm
YWxzZTsKKworICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKndlYlZpZXdDb25maWd1cmF0aW9u
ID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1
Z0luQ2xhc3NOYW1lOkAiU2VydmljZVdvcmtlclBhZ2VQbHVnSW4iXTsKKyAgICBhdXRvIHdlYlZp
ZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3Qo
MCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246d2ViVmlld0NvbmZpZ3VyYXRpb25dKTsKKwor
ICAgIGF1dG8gb2JqZWN0ID0gYWRvcHROUyhbW1NlcnZpY2VXb3JrZXJQYWdlUmVtb3RlT2JqZWN0
IGFsbG9jXSBpbml0XSk7CisgICAgX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNlICppbnRlcmZhY2Ug
PSBbX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNlIHJlbW90ZU9iamVjdEludGVyZmFjZVdpdGhQcm90
b2NvbDpAcHJvdG9jb2woU2VydmljZVdvcmtlclBhZ2VQcm90b2NvbCldOworICAgIFtbd2ViVmll
dyBfcmVtb3RlT2JqZWN0UmVnaXN0cnldIHJlZ2lzdGVyRXhwb3J0ZWRPYmplY3Q6b2JqZWN0Lmdl
dCgpIGludGVyZmFjZTppbnRlcmZhY2VdOworCisgICAgZG9uZSA9IGZhbHNlOworICAgIFt3ZWJW
aWV3IF9sb2FkU2VydmljZVdvcmtlcjpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vQUJD
L2RvZXMtbm90LWV4aXN0LmpzIl0gY29tcGxldGlvbkhhbmRsZXI6XihCT09MIHN1Y2Nlc3MpIHsK
KyAgICAgICAgRVhQRUNUX0ZBTFNFKHN1Y2Nlc3MpOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAg
ICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441624</attachid>
            <date>2021-10-18 11:16:58 -0700</date>
            <delta_ts>2021-10-18 12:37:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231771-20211018111657.patch</filename>
            <type>text/plain</type>
            <size>22061</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0MzcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjczZjBhZTJmZmM0ZTA4
ZDM1OWNjYWY0OWJjZDgxNzVmYWNjNzMwNS4uZDE4ZTFjZjQwY2E0MzY4OGY5MmU1NTlmMWZjM2U5
YzUwMDBkYzZlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIxLTEwLTE4ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGEgY2FsbGJhY2sgdG8g
a25vdyB3aGVuIHRoZSBzZXJ2aWNlIHdvcmtlciBsb2FkcyB2aWEgLVtXS1dlYlZpZXcgX2xvYWRT
ZXJ2aWNlV29ya2VyOl0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzMTc3MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODQyNzQzNjQ+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVM
b2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNv
bnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjp3
aWxsU2V0dGxlUmVnaXN0cmF0aW9uUHJvbWlzZSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyQ29udGFpbmVyOjpqb2JGYWlsZWRXaXRoRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYlJlc29sdmVkV2l0aFJlZ2lzdHJhdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JGYWlsZWRMb2Fk
aW5nU2NyaXB0KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRh
aW5lci5oOgorCiAyMDIxLTEwLTE4ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlh
LmNvbT4KIAogICAgICAgICBbR1N0cmVhbWVyXSBmYXN0L21lZGlhc3RyZWFtL3ZpZGVvLXJvdGF0
aW9uIHRlc3RzIGFyZSBmYWlsaW5nIGR1ZSB0byBtaXNzaW5nIFRlc3RDb250cm9sbGVyOjp0YWtl
Vmlld1BvcnRTbmFwc2hvdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBkZGE1MWY5MDE4OTJhZDg0MGEyNmJhZjBiMWU4
MjY3OTE3NWVkY2IyLi43ZDA2NDNlZmJjYmVkZTY3Y2NjYjU5YmIwMzY5YjljYmY5M2U1NDk0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIxLTEwLTE4ICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGEgY2FsbGJhY2sgdG8ga25vdyB3aGVuIHRoZSBz
ZXJ2aWNlIHdvcmtlciBsb2FkcyB2aWEgLVtXS1dlYlZpZXcgX2xvYWRTZXJ2aWNlV29ya2VyOl0K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTc3MQor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vODQyNzQzNjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9sb2FkU2VydmljZVdvcmtlcjpjb21wbGV0aW9u
SGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9sb2FkU2VydmljZVdvcmtlcjpdKTog
RGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZEZpbmlzaFNlcnZpY2VXb3JrZXJQYWdl
UmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRGYWlsTG9h
ZEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXNldFN0YXRlQWZ0
ZXJQcm9jZXNzRXhpdGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkU2Vy
dmljZVdvcmtlcik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hTZXJ2aWNlV29ya2VyUGFnZVJl
Z2lzdHJhdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5oOgorCiAyMDIxLTEwLTE4ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNn
YXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR0xJQl0gU2ltcGxpZnkgU2xlZXBEaXNhYmxl
ciBieSBjaGVja2luZyBpZiB3ZSBhcmUgdW5kZXIgc2FuZGJveApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCA5ZTEwMzNhMTgzOWI1ZGMyZjQ4NGI3MDIwMGM2
ZmY5MTRkOTkxNTQ2Li5lNzU4MmQ4OTVmZGFhOWE2NzU3ZDlmMjE2MmVjYzUyZDFlMTY0MTA4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMzMwLDYgKzMz
MCwxMCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgd2lsbEluamVjdFVzZXJTY3JpcHQo
RE9NV3JhcHBlcldvcmxkJikgeyB9CiAKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAg
dmlydHVhbCB2b2lkIGRpZEZpbmlzaFNlcnZpY2VXb3JrZXJQYWdlUmVnaXN0cmF0aW9uKGJvb2wg
c3VjY2VzcykgeyBVTlVTRURfUEFSQU0oc3VjY2Vzcyk7IH0KKyNlbmRpZgorCiAjaWYgRU5BQkxF
KFdFQl9SVEMpCiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbFN0YXJ0VXNpbmdQZWVyQ29u
bmVjdGlvbkhhbmRsZXIoUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKikgeyB9CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29u
dGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
Q29udGFpbmVyLmNwcAppbmRleCA3NTZjMTI0ZTY3ZGQzNzBiNjk0ZGRmMmYxMmI4OTE4ZmU4Yzhm
NWVkLi4yNTEzODA5ZGQ4Y2ZjYzNlYmNmNDA4OWVhNDUxOTNjYjcwZDljOGQwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250
YWluZXIuY3BwCkBAIC0zNCw2ICszNCw4IEBACiAjaW5jbHVkZSAiRXZlbnRMb29wLmgiCiAjaW5j
bHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgorI2luY2x1ZGUgIkZy
YW1lTG9hZGVyLmgiCisjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJJ
RExUeXBlcy5oIgogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAi
SlNTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmgiCkBAIC0xOTEsNiArMTkzLDE2IEBAIHZvaWQg
U2VydmljZVdvcmtlckNvbnRhaW5lcjo6YWRkUmVnaXN0cmF0aW9uKGNvbnN0IFN0cmluZyYgcmVs
YXRpdmVTY3JpcHRVUkwsIGNvCiAgICAgc2NoZWR1bGVKb2IobWFrZVVuaXF1ZTxTZXJ2aWNlV29y
a2VySm9iPigqdGhpcywgV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShqb2JEYXRhKSkpOwogfQog
Cit2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OndpbGxTZXR0bGVSZWdpc3RyYXRpb25Qcm9t
aXNlKGJvb2wgc3VjY2VzcykKK3sKKyAgICBhdXRvKiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpOworICAgIFBhZ2UqIHBhZ2UgPSBpczxEb2N1bWVudD4oY29udGV4dCkgPyBkb3du
Y2FzdDxEb2N1bWVudD4oKmNvbnRleHQpLnBhZ2UoKSA6IG51bGxwdHI7CisgICAgaWYgKCFwYWdl
IHx8ICFwYWdlLT5pc1NlcnZpY2VXb3JrZXJQYWdlKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IHBhZ2UtPm1haW5GcmFtZSgpLmxvYWRlcigpLmNsaWVudCgpLmRpZEZpbmlzaFNlcnZpY2VXb3Jr
ZXJQYWdlUmVnaXN0cmF0aW9uKHN1Y2Nlc3MpOworfQorCiB2b2lkIFNlcnZpY2VXb3JrZXJDb250
YWluZXI6OnVucmVnaXN0ZXJSZWdpc3RyYXRpb24oU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklk
ZW50aWZpZXIgcmVnaXN0cmF0aW9uSWRlbnRpZmllciwgRE9NUHJvbWlzZURlZmVycmVkPElETEJv
b2xlYW4+JiYgcHJvbWlzZSkKIHsKICAgICBBU1NFUlQoIW1faXNTdG9wcGVkKTsKQEAgLTMzNCw2
ICszNDYsOSBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYkZhaWxlZFdpdGhFeGNl
cHRpb24oU2VydmljZVdvcmtlckpvYiYgam9iLCBjb25zdAogCiAgICAgQ09OVEFJTkVSX1JFTEVB
U0VfTE9HX0VSUk9SKCJqb2JGYWlsZWRXaXRoRXhjZXB0aW9uOiBKb2IgJSIgUFJJdTY0ICIgZmFp
bGVkIHdpdGggZXJyb3IgJXMiLCBqb2IuaWRlbnRpZmllcigpLnRvVUludDY0KCksIGV4Y2VwdGlv
bi5tZXNzYWdlKCkudXRmOCgpLmRhdGEoKSk7CiAKKyAgICBpZiAoam9iLmRhdGEoKS50eXBlID09
IFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpSZWdpc3RlcikKKyAgICAgICAgd2lsbFNldHRsZVJlZ2lz
dHJhdGlvblByb21pc2UoZmFsc2UpOworCiAgICAgYXV0byBwcm9taXNlID0gam9iLnRha2VQcm9t
aXNlKCk7CiAgICAgaWYgKCFwcm9taXNlKQogICAgICAgICByZXR1cm47CkBAIC0zNTYsOSArMzcx
LDEwIEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iUmVzb2x2ZWRXaXRoUmVnaXN0
cmF0aW9uKFNlcnZpY2VXb3JrZXJKb2ImIGpvYiwKICAgICBBU1NFUlQobV9jcmVhdGlvblRocmVh
ZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uo
am9iLmhhc1Byb21pc2UoKSB8fCBqb2IuZGF0YSgpLnR5cGUgPT0gU2VydmljZVdvcmtlckpvYlR5
cGU6OlVwZGF0ZSwgIk9ubHkgc29mdCB1cGRhdGVzIGhhdmUgbm8gcHJvbWlzZSIpOwogCi0gICAg
aWYgKGpvYi5kYXRhKCkudHlwZSA9PSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6UmVnaXN0ZXIpCisg
ICAgaWYgKGpvYi5kYXRhKCkudHlwZSA9PSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6UmVnaXN0ZXIp
IHsKICAgICAgICAgQ09OVEFJTkVSX1JFTEVBU0VfTE9HKCJqb2JSZXNvbHZlZFdpdGhSZWdpc3Ry
YXRpb246IFJlZ2lzdHJhdGlvbiBqb2IgJSIgUFJJdTY0ICIgc3VjY2VlZGVkIiwgam9iLmlkZW50
aWZpZXIoKS50b1VJbnQ2NCgpKTsKLSAgICBlbHNlIHsKKyAgICAgICAgd2lsbFNldHRsZVJlZ2lz
dHJhdGlvblByb21pc2UodHJ1ZSk7CisgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUKGpvYi5k
YXRhKCkudHlwZSA9PSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6VXBkYXRlKTsKICAgICAgICAgQ09O
VEFJTkVSX1JFTEVBU0VfTE9HKCJqb2JSZXNvbHZlZFdpdGhSZWdpc3RyYXRpb246IFVwZGF0ZSBq
b2IgJSIgUFJJdTY0ICIgc3VjY2VlZGVkIiwgam9iLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsK
ICAgICB9CkBAIC00NzUsNiArNDkxLDkgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpq
b2JGYWlsZWRMb2FkaW5nU2NyaXB0KFNlcnZpY2VXb3JrZXJKb2ImIGpvYiwgY29uc3QKIAogICAg
IENPTlRBSU5FUl9SRUxFQVNFX0xPR19FUlJPUigiam9iRmluaXNoZWRMb2FkaW5nU2NyaXB0OiBG
YWlsZWQgdG8gZmV0Y2ggc2NyaXB0IGZvciBqb2IgJSIgUFJJdTY0ICIsIGVycm9yOiAlcyIsIGpv
Yi5pZGVudGlmaWVyKCkudG9VSW50NjQoKSwgZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKS51
dGY4KCkuZGF0YSgpKTsKIAorICAgIGlmIChqb2IuZGF0YSgpLnR5cGUgPT0gU2VydmljZVdvcmtl
ckpvYlR5cGU6OlJlZ2lzdGVyKQorICAgICAgICB3aWxsU2V0dGxlUmVnaXN0cmF0aW9uUHJvbWlz
ZShmYWxzZSk7CisKICAgICBpZiAoYXV0byBwcm9taXNlID0gam9iLnRha2VQcm9taXNlKCkpIHsK
ICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpE
T01NYW5pcHVsYXRpb24sIFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgZXhjZXB0aW9uID0g
V1RGTW92ZShleGNlcHRpb24pXSgpIG11dGFibGUgewogICAgICAgICAgICAgcHJvbWlzZS0+cmVq
ZWN0KFdURk1vdmUoZXhjZXB0aW9uKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaAppbmRleCA2ZjViMzcxNzYwY2Ji
MzBiYmM4NzhjMzA3MmNmZDk4NDZlNWUzMmVmLi5lZmRmMDk0MjZhNzk2NjQ0OTU1NzQxNmUzM2M2
MmUyZTYzZDAxY2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmgKQEAgLTEwNSw2ICsxMDUsNyBAQCBwcml2YXRl
OgogCiAgICAgdm9pZCBub3RpZnlGYWlsZWRGZXRjaGluZ1NjcmlwdChTZXJ2aWNlV29ya2VySm9i
JiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgZGVzdHJveUpvYihTZXJ2aWNlV29y
a2VySm9iJik7CisgICAgdm9pZCB3aWxsU2V0dGxlUmVnaXN0cmF0aW9uUHJvbWlzZShib29sIHN1
Y2Nlc3MpOwogCiAgICAgRG9jdW1lbnRPcldvcmtlcklkZW50aWZpZXIgY29udGV4dElkZW50aWZp
ZXIoKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW0KaW5kZXggMTczZDczMGQ1MjU1ODdmZjQyMmVlYjkwMjg3ZDMyOGQ1N2ZlN2Q3Zi4u
Mjg4N2MwYTJkNjY0NTUzOGJhZmQyNzdlNGYxYmViNDhmZjYyMjZhYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0yMzk5LDEzICsyMzk5
LDIwIEBAIC0gKFdLTmF2aWdhdGlvbiAqKV9sb2FkUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVx
dWVzdCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9sCiAgICAgcmV0dXJuIHdyYXBwZXIoX3BhZ2Ut
PmxvYWRSZXF1ZXN0KHJlcXVlc3QsIHBvbGljeSkpOwogfQogCi0tICh2b2lkKV9sb2FkU2Vydmlj
ZVdvcmtlcjooTlNVUkwgKil1cmwKKy0gKHZvaWQpX2xvYWRTZXJ2aWNlV29ya2VyOihOU1VSTCAq
KXVybCAgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wgc3VjY2VzcykpY29tcGxldGlv
bkhhbmRsZXIKIHsKICAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CiAgICAgaWYgKF9wYWdlLT5pc1Nl
cnZpY2VXb3JrZXJQYWdlKCkpCiAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludGVybmFs
SW5jb25zaXN0ZW5jeUV4Y2VwdGlvbiBmb3JtYXQ6QCJUaGUgV0tXZWJWaWV3IHdhcyBhbHJlYWR5
IHVzZWQgdG8gbG9hZCBhIHNlcnZpY2Ugd29ya2VyIl07CiAKLSAgICBfcGFnZS0+bG9hZFNlcnZp
Y2VXb3JrZXIodXJsKTsKKyAgICBfcGFnZS0+bG9hZFNlcnZpY2VXb3JrZXIodXJsLCBbY29tcGxl
dGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShib29sIHN1Y2Nl
c3MpIG11dGFibGUgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdWNjZXNzKTsKKyAgICB9
KTsKK30KKworLSAodm9pZClfbG9hZFNlcnZpY2VXb3JrZXI6KE5TVVJMICopdXJsCit7CisgICAg
W3NlbGYgX2xvYWRTZXJ2aWNlV29ya2VyOnVybCBjb21wbGV0aW9uSGFuZGxlcjpeKEJPT0wpIHsg
fV07CiB9CiAKIC0gKHZvaWQpX2dyYW50QWNjZXNzVG9Bc3NldFNlcnZpY2VzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAppbmRl
eCBjYjdmMzM0M2ZkZWUwMjA1YWUwY2UyNjZjZjgzMTc5ZjExZGFkMDQxLi5jODhiNDg3NDBmOTI5
YzUwZmU4ZmIzMWZmOTk4ZmVhYzM2MjBhZGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKQEAgLTQwOCw3ICs0MDgsOCBA
QCBmb3IgdGhpcyBwcm9wZXJ0eS4KIC0gKHZvaWQpX2RpZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0
Oih2b2lkICheKShCT09MIHJlc3VsdCkpY29tcGxldGlvbkhhbmRsZXI7CiAtICh2b2lkKV9kaWRM
b2FkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdDoodm9pZCAoXikoQk9PTCByZXN1bHQpKWNvbXBsZXRp
b25IYW5kbGVyOwogCi0tICh2b2lkKV9sb2FkU2VydmljZVdvcmtlcjooTlNVUkwgKil1cmwgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZv
aWQpX2xvYWRTZXJ2aWNlV29ya2VyOihOU1VSTCAqKXVybCBXS19BUElfQVZBSUxBQkxFKG1hY29z
KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOyAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgb25j
ZSBjbGllbnRzIGhhdmUgYWRvcHRlZCB0aGUgdmVyc2lvbiB3aXRoIGEgY29tcGxldGlvbiBoYW5k
bGVyLgorLSAodm9pZClfbG9hZFNlcnZpY2VXb3JrZXI6KE5TVVJMICopdXJsIGNvbXBsZXRpb25I
YW5kbGVyOih2b2lkICheKShCT09MIHN1Y2Nlc3MpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKIC0gKHZvaWQp
X3N1c3BlbmRQYWdlOih2b2lkICheKShCT09MKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZB
SUxBQkxFKG1hY29zKDEyLjApLCBpb3MoMTUuMCkpOwogLSAodm9pZClfcmVzdW1lUGFnZToodm9p
ZCAoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMi4w
KSwgaW9zKDE1LjApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmlu
ZGV4IDM5YWE0MDM4NWZkZTExYmU3YzMzOWY5ZTc1MWU5NzczZmIxMmQ5MTUuLjgxNmY5MWNjMjY5
NDM4NmYxNDgwZWM0ZTc0YjQxMjBiZTNjMTc1NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcApAQCAtNDgwNiw2ICs0ODA2LDExIEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94
eT4mJiBwCiAgICAgICAgIHBhZ2VDbGllbnQoKS5kaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yTWFp
bkZyYW1lKCk7CiAgICAgICAgIGlmIChuYXZpZ2F0aW9uKQogICAgICAgICAgICAgbmF2aWdhdGlv
bi0+c2V0Q2xpZW50TmF2aWdhdGlvbkFjdGl2aXR5KG51bGxwdHIpOworCisjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQorICAgICAgICBpZiAobV9pc1NlcnZpY2VXb3JrZXJQYWdlICYmIG1fc2Vy
dmljZVdvcmtlckxhdW5jaENvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICAgICAgbV9zZXJ2aWNl
V29ya2VyTGF1bmNoQ29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworI2VuZGlmCiAgICAgfQogCiAg
ICAgZnJhbWUuZGlkRmFpbFByb3Zpc2lvbmFsTG9hZCgpOwpAQCAtNDgyOSw2ICs0ODM0LDE3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQo
UmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwCiAgICAgICAgIG1fcHJvdmlzaW9uYWxQYWdlID0gbnVs
bHB0cjsKIH0KIAorI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKK3ZvaWQgV2ViUGFnZVByb3h5
OjpkaWRGaW5pc2hTZXJ2aWNlV29ya2VyUGFnZVJlZ2lzdHJhdGlvbihib29sIHN1Y2Nlc3MpCit7
CisgICAgQVNTRVJUKG1faXNTZXJ2aWNlV29ya2VyUGFnZSk7CisgICAgQVNTRVJUKG1fc2Vydmlj
ZVdvcmtlckxhdW5jaENvbXBsZXRpb25IYW5kbGVyKTsKKworICAgIGlmIChtX3NlcnZpY2VXb3Jr
ZXJMYXVuY2hDb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgbV9zZXJ2aWNlV29ya2VyTGF1bmNo
Q29tcGxldGlvbkhhbmRsZXIoc3VjY2Vzcyk7Cit9CisjZW5kaWYKKwogI2lmIEVOQUJMRShJTlRF
TExJR0VOVF9UUkFDS0lOR19QUkVWRU5USU9OKQogc3RhdGljIE9wdGlvblNldDxDcm9zc1NpdGVO
YXZpZ2F0aW9uRGF0YVRyYW5zZmVyOjpGbGFnPiBjaGVja0lmTmF2aWdhdGlvbkNvbnRhaW5zRGF0
YVRyYW5zZmVyKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSByZXF1ZXN0ZXJPcmlnaW4sIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgY3VycmVudFJlcXVlc3QpCiB7CkBAIC01MDkyLDYgKzUxMDgsMTEg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxMb2FkRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmJgogICAgICAgICBwYWdlQ2xpZW50KCkuZGlkRmFpbE5h
dmlnYXRpb24obmF2aWdhdGlvbi5nZXQoKSk7CiAgICAgICAgIGlmIChuYXZpZ2F0aW9uKQogICAg
ICAgICAgICAgbmF2aWdhdGlvbi0+c2V0Q2xpZW50TmF2aWdhdGlvbkFjdGl2aXR5KG51bGxwdHIp
OworCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgICAgICBpZiAobV9pc1NlcnZpY2VX
b3JrZXJQYWdlICYmIG1fc2VydmljZVdvcmtlckxhdW5jaENvbXBsZXRpb25IYW5kbGVyKQorICAg
ICAgICAgICAgbV9zZXJ2aWNlV29ya2VyTGF1bmNoQ29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwor
I2VuZGlmCiAgICAgfQogfQogCkBAIC04MDAxLDYgKzgwMjIsMTEgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnJlc2V0U3RhdGVBZnRlclByb2Nlc3NFeGl0ZWQoUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29u
IHRlcm1pbmEKICAgICBpZiAobV93aGVlbEV2ZW50Q29hbGVzY2VyKQogICAgICAgICBtX3doZWVs
RXZlbnRDb2FsZXNjZXItPmNsZWFyKCk7CiAKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisg
ICAgaWYgKG1faXNTZXJ2aWNlV29ya2VyUGFnZSAmJiBtX3NlcnZpY2VXb3JrZXJMYXVuY2hDb21w
bGV0aW9uSGFuZGxlcikKKyAgICAgICAgbV9zZXJ2aWNlV29ya2VyTGF1bmNoQ29tcGxldGlvbkhh
bmRsZXIoZmFsc2UpOworI2VuZGlmCisKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAhRU5B
QkxFKElPU19UT1VDSF9FVkVOVFMpCiAgICAgbV90b3VjaEV2ZW50UXVldWUuY2xlYXIoKTsKICNl
bmRpZgpAQCAtMTA3MDgsMTYgKzEwNzM0LDI2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXROZWVk
c0RPTVdpbmRvd1Jlc2l6ZUV2ZW50KCkKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRO
ZWVkc0RPTVdpbmRvd1Jlc2l6ZUV2ZW50KCkpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6bG9h
ZFNlcnZpY2VXb3JrZXIoY29uc3QgVVJMJiB1cmwpCit2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFNl
cnZpY2VXb3JrZXIoY29uc3QgVVJMJiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBz
dWNjZXNzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCiAgICAgaWYgKG1faXNDbG9zZWQpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJu
IGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKIAogICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xP
RyhMb2FkaW5nLCAibG9hZFNlcnZpY2VXb3JrZXI6Iik7CiAKKyAgICBpZiAobV9zZXJ2aWNlV29y
a2VyTGF1bmNoQ29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFu
ZGxlcihmYWxzZSk7CisKICAgICBtX2lzU2VydmljZVdvcmtlclBhZ2UgPSB0cnVlOworICAgIG1f
c2VydmljZVdvcmtlckxhdW5jaENvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcik7CisKICAgICBDU3RyaW5nIGh0bWwgPSBtYWtlU3RyaW5nKCI8c2NyaXB0Pm5hdmln
YXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCciLCB1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEo
KSwgIicpOzwvc2NyaXB0PiIpLnV0ZjgoKTsKICAgICBsb2FkRGF0YSh7IHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdWludDhfdCo+KGh0bWwuZGF0YSgpKSwgaHRtbC5sZW5ndGgoKSB9LCAidGV4dC9o
dG1sIl9zLCAiVVRGLTgiX3MsIHVybC5wcm90b2NvbEhvc3RBbmRQb3J0KCkpOworI2Vsc2UKKyAg
ICBVTlVTRURfUEFSQU0odXJsKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisjZW5k
aWYKIH0KIAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaAppbmRleCBjYzAwMjRhYjlmNWI3ZDY4MjlmZmEyMDI1MzFiMTVkNTY5ZTQw
MDE5Li43MjQ0NjgyNjk3MjBiNTNiYjFiMDkzM2EwZWI0M2E4NWQ4YTU3NWE1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtNTU2LDcgKzU1Niw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHJlbW90ZUluc3BlY3RvckluZm9ybWF0aW9uRGlkQ2hhbmdlKCk7CiAjZW5kaWYK
IAotICAgIHZvaWQgbG9hZFNlcnZpY2VXb3JrZXIoY29uc3QgVVJMJik7CisgICAgdm9pZCBsb2Fk
U2VydmljZVdvcmtlcihjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgc3Vj
Y2Vzcyk+JiYpOwogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIFdlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyUHJveHkqIGZ1bGxTY3JlZW5NYW5hZ2VyKCk7CkBAIC0yNTIwLDYgKzI1MjAsMTAg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc2V0U3BlZWNoU3ludGhlc2l6ZXIoKTsKICNlbmRpZgog
CisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIHZvaWQgZGlkRmluaXNoU2VydmljZVdv
cmtlclBhZ2VSZWdpc3RyYXRpb24oYm9vbCBzdWNjZXNzKTsKKyNlbmRpZgorCiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICBzdGF0aWMgYm9vbCBpc0luSGFyZHdhcmVLZXlib2FyZE1vZGUo
KTsKICAgICB2b2lkIGNsZWFyQXVkaWJsZUFjdGl2aXR5KCk7CkBAIC0zMDE0LDcgKzMwMTgsMTAg
QEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9uZWVkc0ZvbnRBdHRyaWJ1dGVzIHsgZmFsc2UgfTsK
ICAgICBib29sIG1fbWF5SGF2ZVVuaXZlcnNhbEZpbGVSZWFkU2FuZGJveEV4dGVuc2lvbiB7IGZh
bHNlIH07CisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGJvb2wgbV9pc1NlcnZpY2VX
b3JrZXJQYWdlIHsgZmFsc2UgfTsKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiBt
X3NlcnZpY2VXb3JrZXJMYXVuY2hDb21wbGV0aW9uSGFuZGxlcjsKKyNlbmRpZgogCiAgICAgUnVu
TG9vcDo6VGltZXI8V2ViUGFnZVByb3h5PiBtX3RyeUNsb3NlVGltZW91dFRpbWVyOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXgg
NWVkZjMxZDM0M2FlZDhkNzIxNjlkYjk3MzUyZTViNzFmNzI4NTA4OC4uNTgxMDhmNzQzMTRkYjVh
OTU2Nzg1MzRlN2JjMTcxMDA0Nzc3ODBiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjU4LDYgKzI1OCwxMCBAQCBtZXNzYWdl
cyAtPiBXZWJQYWdlUHJveHkgewogICAgIFNob3dDb250ZXh0TWVudShXZWJLaXQ6OkNvbnRleHRN
ZW51Q29udGV4dERhdGEgY29udGV4dE1lbnVDb250ZXh0RGF0YSwgV2ViS2l0OjpVc2VyRGF0YSB1
c2VyRGF0YSkKICNlbmRpZgogCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIERpZEZp
bmlzaFNlcnZpY2VXb3JrZXJQYWdlUmVnaXN0cmF0aW9uKGJvb2wgc3VjY2VzcykKKyNlbmRpZgor
CiAgICAgIyBEYXRhYmFzZSBtZXNzYWdlcwogICAgIEV4Y2VlZGVkRGF0YWJhc2VRdW90YShXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgU3RyaW5nIG9yaWdpbklkZW50aWZpZXIsIFN0
cmluZyBkYXRhYmFzZU5hbWUsIFN0cmluZyBkYXRhYmFzZURpc3BsYXlOYW1lLCB1aW50NjRfdCBj
dXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRPcmlnaW5Vc2FnZSwgdWludDY0X3QgY3VycmVu
dERhdGFiYXNlVXNhZ2UsIHVpbnQ2NF90IGV4cGVjdGVkVXNhZ2UpIC0+ICh1aW50NjRfdCBuZXdR
dW90YSkgU3luY2hyb25vdXMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXgg
MTNkNjM4NzQ4ZTEwYjVkZjM3ZjkwN2I4M2ExZDU5M2U0YmVmYjNhZi4uOTlhNTFhYjVmZWFhZTQ3
OWEwM2EzZDU4MWM4ODk0NzBiMDBlZTljMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwCkBAIC0xOTM5LDYgKzE5MzksMTcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlk
Q3JlYXRlV2luZG93KERPTVdpbmRvdyYgd2luZG93KQogICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6RGlkQ3JlYXRlV2luZG93KG1fZnJhbWUtPmZyYW1lSUQoKSwgd2lu
ZG93LmlkZW50aWZpZXIoKSkpOwogfQogCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQordm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkRmluaXNoU2VydmljZVdvcmtlclBhZ2VSZWdpc3Ry
YXRpb24oYm9vbCBzdWNjZXNzKQoreworICAgIGF1dG8qIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdl
KCk7CisgICAgaWYgKCF3ZWJQYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICB3ZWJQYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEZpbmlzaFNlcnZpY2VXb3JrZXJQYWdlUmVn
aXN0cmF0aW9uKHN1Y2Nlc3MpKTsKK30KKyNlbmRpZgorCiAjaWYgRU5BQkxFKEFQUF9CT1VORF9E
T01BSU5TKQogYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxkRW5hYmxlSW5BcHBCcm93
c2VyUHJpdmFjeVByb3RlY3Rpb25zKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmgKaW5kZXggZWQzMjQ0MmNhOTBmMzIzNGJlMmY1YzZjNjczOWFhYzNiYTFhODA4MS4uYmI1Mjlk
M2FlYzRlMmM3NWYxYTdkZTkxYjEwYjU1ODJkNDUyMmI0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmgKQEAgLTE2NCw2ICsxNjQsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJ1bklu
c2VjdXJlQ29udGVudChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYsIGNvbnN0IFVSTCYpIGZpbmFs
OwogICAgIHZvaWQgZGlkRGV0ZWN0WFNTKGNvbnN0IFVSTCYsIGJvb2wgZGlkQmxvY2tFbnRpcmVQ
YWdlKSBmaW5hbDsKIAorI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICB2b2lkIGRpZEZp
bmlzaFNlcnZpY2VXb3JrZXJQYWdlUmVnaXN0cmF0aW9uKGJvb2wgc3VjY2VzcykgZmluYWw7Cisj
ZW5kaWYKKwogICAgIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3IoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgY29uc3QgZmluYWw7CiAgICAgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jikg
Y29uc3QgZmluYWw7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkQnlDb250ZW50
QmxvY2tlckVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIGNvbnN0IGZpbmFs
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDc1
MjI5OGViYjk4MTQwNmI2ZDE2ZTBjMzUzYzUxOTM4OTAyOTQxODEuLmNhMDA5NzE4OGFlYTA0NDVj
ZGQzMTdhZWRjOGQ3MWU0NGFhZmI0YjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0xMC0xOCAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIGNhbGxiYWNrIHRvIGtub3cg
d2hlbiB0aGUgc2VydmljZSB3b3JrZXIgbG9hZHMgdmlhIC1bV0tXZWJWaWV3IF9sb2FkU2Vydmlj
ZVdvcmtlcjpdCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzE3NzEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg0Mjc0MzY0PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBBUEkgdGVzdCBjb3ZlcmFn
ZS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdv
cmtlckJhc2ljLm1tOgorCiAyMDIxLTEwLTE4ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRA
aWdhbGlhLmNvbT4KIAogICAgICAgICBbR1N0cmVhbWVyXSBmYXN0L21lZGlhc3RyZWFtL3ZpZGVv
LXJvdGF0aW9uIHRlc3RzIGFyZSBmYWlsaW5nIGR1ZSB0byBtaXNzaW5nIFRlc3RDb250cm9sbGVy
Ojp0YWtlVmlld1BvcnRTbmFwc2hvdApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW0gYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbQppbmRleCA2ZjRkZWUy
YjE3ZGM4MjAzMDJkODYzNjVlN2QxYjBjOTFkNDlkMWQ3Li4yOTBlYzY0ODZhZmFlZDgwNGQyM2E1
MTBhMTViNTBlOGQ1NGYxZGUwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbQpAQCAtMjY3Nyw5ICsy
Njc3LDE0IEBAIFRFU1QoU2VydmljZVdvcmtlciwgRXh0ZW5zaW9uU2VydmljZVdvcmtlcikKICAg
ICBbW3dlYlZpZXcgX3JlbW90ZU9iamVjdFJlZ2lzdHJ5XSByZWdpc3RlckV4cG9ydGVkT2JqZWN0
Om9iamVjdC5nZXQoKSBpbnRlcmZhY2U6aW50ZXJmYWNlXTsKIAogICAgIC8vIFRoZSBzZXJ2aWNl
IHdvcmtlciBzY3JpcHQgc2hvdWxkIGdldCBsb2FkZWQgb3ZlciB0aGUgY3VzdG9tIHNjaGVtZSBo
YW5kbGVyLgorICAgIGRvbmUgPSBmYWxzZTsKICAgICBkaWRTdGFydFVSTFNjaGVtZVRhc2sgPSBm
YWxzZTsKLSAgICBbd2ViVmlldyBfbG9hZFNlcnZpY2VXb3JrZXI6W05TVVJMIFVSTFdpdGhTdHJp
bmc6QCJzdy1leHQ6Ly9BQkMvc3cuanMiXV07Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZkaWRTdGFydFVSTFNjaGVtZVRhc2spOworICAgIFt3ZWJWaWV3IF9sb2FkU2VydmljZVdvcmtl
cjpbTlNVUkwgVVJMV2l0aFN0cmluZzpAInN3LWV4dDovL0FCQy9zdy5qcyJdIGNvbXBsZXRpb25I
YW5kbGVyOl4oQk9PTCBzdWNjZXNzKSB7CisgICAgICAgIEVYUEVDVF9UUlVFKHN1Y2Nlc3MpOwor
ICAgICAgICBFWFBFQ1RfVFJVRShkaWRTdGFydFVSTFNjaGVtZVRhc2spOworICAgICAgICBkb25l
ID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwog
CiAgICAgLy8gVGhlIGluamVjdGVkIGJ1bmRsZSBzaG91bGQgaGF2ZSBiZWVuIG5vdGlmaWVkIHRo
YXQgdGhlIHNlcnZpY2Ugd29ya2VyJ3MgZ2xvYmFsIG9iamVjdCB3YXMgYXZhaWxhYmxlLgogICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmc2VydmljZVdvcmtlckdsb2JhbE9iamVjdElzQXZh
aWxhYmxlKTsKQEAgLTI3MDUsMyArMjcxMCw2MiBAQCBURVNUKFNlcnZpY2VXb3JrZXIsIEV4dGVu
c2lvblNlcnZpY2VXb3JrZXIpCiAgICAgd2hpbGUgKHdlYlZpZXdDb25maWd1cmF0aW9uLnByb2Nl
c3NQb29sLl9zZXJ2aWNlV29ya2VyUHJvY2Vzc0NvdW50KQogICAgICAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpzcGluUnVuTG9vcCgxMCk7CiB9CisKK1RFU1QoU2VydmljZVdvcmtlciwgRXh0ZW5z
aW9uU2VydmljZVdvcmtlckZhaWx1cmVCYWRTY3JpcHQpCit7CisgICAgW1dLV2Vic2l0ZURhdGFT
dG9yZSBfYWxsb3dXZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zXTsKKworICAgIC8vIFN0
YXJ0IHdpdGggYSBjbGVhbiBzbGF0ZSBkYXRhIHN0b3JlCisgICAgW1tXS1dlYnNpdGVEYXRhU3Rv
cmUgZGVmYXVsdERhdGFTdG9yZV0gcmVtb3ZlRGF0YU9mVHlwZXM6W1dLV2Vic2l0ZURhdGFTdG9y
ZSBhbGxXZWJzaXRlRGF0YVR5cGVzXSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3Rd
IGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOwor
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOwor
CisgICAgYXV0byBzY2hlbWVIYW5kbGVyID0gYWRvcHROUyhbU2VydmljZVdvcmtlclNjaGVtZUhh
bmRsZXIgbmV3XSk7CisgICAgW3NjaGVtZUhhbmRsZXIgYWRkTWFwcGluZ0Zyb21VUkxTdHJpbmc6
QCJzdy1leHQ6Ly9BQkMvYmFkLXN3LmpzIiB0b0RhdGE6IjEgPSAxOyJdOworCisgICAgV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiAqd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJTZXJ2
aWNlV29ya2VyUGFnZVBsdWdJbiJdOworICAgIFt3ZWJWaWV3Q29uZmlndXJhdGlvbiBzZXRVUkxT
Y2hlbWVIYW5kbGVyOnNjaGVtZUhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAic3ctZXh0Il07
CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOndlYlZpZXdDb25m
aWd1cmF0aW9uXSk7CisKKyAgICBhdXRvIG9iamVjdCA9IGFkb3B0TlMoW1tTZXJ2aWNlV29ya2Vy
UGFnZVJlbW90ZU9iamVjdCBhbGxvY10gaW5pdF0pOworICAgIF9XS1JlbW90ZU9iamVjdEludGVy
ZmFjZSAqaW50ZXJmYWNlID0gW19XS1JlbW90ZU9iamVjdEludGVyZmFjZSByZW1vdGVPYmplY3RJ
bnRlcmZhY2VXaXRoUHJvdG9jb2w6QHByb3RvY29sKFNlcnZpY2VXb3JrZXJQYWdlUHJvdG9jb2wp
XTsKKyAgICBbW3dlYlZpZXcgX3JlbW90ZU9iamVjdFJlZ2lzdHJ5XSByZWdpc3RlckV4cG9ydGVk
T2JqZWN0Om9iamVjdC5nZXQoKSBpbnRlcmZhY2U6aW50ZXJmYWNlXTsKKworICAgIC8vIFRoZSBz
ZXJ2aWNlIHdvcmtlciBzY3JpcHQgc2hvdWxkIGdldCBsb2FkZWQgb3ZlciB0aGUgY3VzdG9tIHNj
aGVtZSBoYW5kbGVyLgorICAgIGRvbmUgPSBmYWxzZTsKKyAgICBkaWRTdGFydFVSTFNjaGVtZVRh
c2sgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBfbG9hZFNlcnZpY2VXb3JrZXI6W05TVVJMIFVSTFdp
dGhTdHJpbmc6QCJzdy1leHQ6Ly9BQkMvYmFkLXN3LmpzIl0gY29tcGxldGlvbkhhbmRsZXI6XihC
T09MIHN1Y2Nlc3MpIHsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKHN1Y2Nlc3MpOworICAgICAgICBF
WFBFQ1RfVFJVRShkaWRTdGFydFVSTFNjaGVtZVRhc2spOworICAgICAgICBkb25lID0gdHJ1ZTsK
KyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworfQorCitURVNU
KFNlcnZpY2VXb3JrZXIsIEV4dGVuc2lvblNlcnZpY2VXb3JrZXJGYWlsdXJlQmFkVVJMKQorewor
ICAgIFtXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbG93V2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxsT3Jp
Z2luc107CisKKyAgICAvLyBTdGFydCB3aXRoIGEgY2xlYW4gc2xhdGUgZGF0YSBzdG9yZQorICAg
IFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdIHJlbW92ZURhdGFPZlR5cGVz
OltXS1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5jZTpb
TlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgeworICAgICAgICBkb25l
ID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwor
ICAgIGRvbmUgPSBmYWxzZTsKKworICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKndlYlZpZXdD
b25maWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlv
bldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiU2VydmljZVdvcmtlclBhZ2VQbHVnSW4iXTsKKyAg
ICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
Ok5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246d2ViVmlld0NvbmZpZ3Vy
YXRpb25dKTsKKworICAgIGF1dG8gb2JqZWN0ID0gYWRvcHROUyhbW1NlcnZpY2VXb3JrZXJQYWdl
UmVtb3RlT2JqZWN0IGFsbG9jXSBpbml0XSk7CisgICAgX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNl
ICppbnRlcmZhY2UgPSBbX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNlIHJlbW90ZU9iamVjdEludGVy
ZmFjZVdpdGhQcm90b2NvbDpAcHJvdG9jb2woU2VydmljZVdvcmtlclBhZ2VQcm90b2NvbCldOwor
ICAgIFtbd2ViVmlldyBfcmVtb3RlT2JqZWN0UmVnaXN0cnldIHJlZ2lzdGVyRXhwb3J0ZWRPYmpl
Y3Q6b2JqZWN0LmdldCgpIGludGVyZmFjZTppbnRlcmZhY2VdOworCisgICAgZG9uZSA9IGZhbHNl
OworICAgIFt3ZWJWaWV3IF9sb2FkU2VydmljZVdvcmtlcjpbTlNVUkwgVVJMV2l0aFN0cmluZzpA
Imh0dHBzOi8vQUJDL2RvZXMtbm90LWV4aXN0LmpzIl0gY29tcGxldGlvbkhhbmRsZXI6XihCT09M
IHN1Y2Nlc3MpIHsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKHN1Y2Nlc3MpOworICAgICAgICBkb25l
ID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwor
fQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441631</attachid>
            <date>2021-10-18 12:37:34 -0700</date>
            <delta_ts>2021-10-18 15:21:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231771-20211018123733.patch</filename>
            <type>text/plain</type>
            <size>24590</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0Mzg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjNjN2ViZGQ4MzA5ZjUw
MjgxNDk5MzJmYzI0MTJjZWNiODRkNTc5YS4uODRmZjlmODdmMDhjMDYyMjBiYWQ3OTgyZDRhYmQ5
ZGE5ODdmZGEyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIxLTEwLTE4ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGEgY2FsbGJhY2sgdG8g
a25vdyB3aGVuIHRoZSBzZXJ2aWNlIHdvcmtlciBsb2FkcyB2aWEgLVtXS1dlYlZpZXcgX2xvYWRT
ZXJ2aWNlV29ya2VyOl0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzMTc3MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODQyNzQzNjQ+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICAqIGxvYWRlci9GcmFt
ZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
Q29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6
OndpbGxTZXR0bGVSZWdpc3RyYXRpb25Qcm9taXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJDb250YWluZXI6OmpvYkZhaWxlZFdpdGhFeGNlcHRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iUmVzb2x2ZWRXaXRoUmVnaXN0cmF0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYkZhaWxlZExv
YWRpbmdTY3JpcHQpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29u
dGFpbmVyLmg6CisKIDIwMjEtMTAtMTggIFR5bGVyIFdpbGNvY2sgIDx0eWxlcl93QGFwcGxlLmNv
bT4KIAogICAgICAgICBBWDogUmV0dXJuIEFYRW1wdHlHcm91cCBzdWJyb2xlIGZvciBncm91cHMg
d2l0aCBubyBhY2Nlc3NpYmxlIGNvbnRlbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNDYzNzNmNDI0ZDA3ZTIzZTE5
Y2U5ZmVmOTc2NWNjOWM0NmI0ODJhZS4uMjU4YmI3ZWNlYjE1NTEzZmM2MDA2M2MyZGM5MjI3NWMz
NjFlYzQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAyMS0xMC0xOCAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIGNhbGxiYWNrIHRvIGtub3cg
d2hlbiB0aGUgc2VydmljZSB3b3JrZXIgbG9hZHMgdmlhIC1bV0tXZWJWaWV3IF9sb2FkU2Vydmlj
ZVdvcmtlcjpdCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzE3NzEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg0Mjc0MzY0PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9sb2FkU2VydmljZVdvcmtl
cjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9sb2FkU2Vydmlj
ZVdvcmtlcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWVTaGFyZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZEZpbmlzaFNlcnZp
Y2VXb3JrZXJQYWdlUmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpkaWRGYWlsTG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpy
ZXNldFN0YXRlQWZ0ZXJQcm9jZXNzRXhpdGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5Ojpsb2FkU2VydmljZVdvcmtlcik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hTZXJ2aWNl
V29ya2VyUGFnZVJlZ2lzdHJhdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorCiAyMDIxLTEwLTE4ICBBbGV4IENocmlzdGVu
c2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2ZXJ0IHIyODQyMTYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggOWUxMDMzYTE4
MzliNWRjMmY0ODRiNzAyMDBjNmZmOTE0ZDk5MTU0Ni4uZTc1ODJkODk1ZmRhYTlhNjc1N2Q5ZjIx
NjJlY2M1MmQxZTE2NDEwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xp
ZW50LmgKQEAgLTMzMCw2ICszMzAsMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHdp
bGxJbmplY3RVc2VyU2NyaXB0KERPTVdyYXBwZXJXb3JsZCYpIHsgfQogCisjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQorICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hTZXJ2aWNlV29ya2VyUGFn
ZVJlZ2lzdHJhdGlvbihib29sIHN1Y2Nlc3MpIHsgVU5VU0VEX1BBUkFNKHN1Y2Nlc3MpOyB9Cisj
ZW5kaWYKKwogI2lmIEVOQUJMRShXRUJfUlRDKQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdp
bGxTdGFydFVzaW5nUGVlckNvbm5lY3Rpb25IYW5kbGVyKFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxl
ciopIHsgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKaW5kZXggNzU2YzEyNGU2N2RkMzcwYjY5
NGRkZjJmMTJiODkxOGZlOGM4ZjVlZC4uMjUxMzgwOWRkOGNmY2MzZWJjZjQwODllYTQ1MTkzY2I3
MGQ5YzhkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcApAQCAtMzQsNiArMzQsOCBAQAogI2luY2x1ZGUg
IkV2ZW50TG9vcC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJFeGNlcHRp
b24uaCIKKyNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xp
ZW50LmgiCiAjaW5jbHVkZSAiSURMVHlwZXMuaCIKICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZl
cnJlZC5oIgogI2luY2x1ZGUgIkpTU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5oIgpAQCAtMTkx
LDYgKzE5MywxNiBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmFkZFJlZ2lzdHJhdGlv
bihjb25zdCBTdHJpbmcmIHJlbGF0aXZlU2NyaXB0VVJMLCBjbwogICAgIHNjaGVkdWxlSm9iKG1h
a2VVbmlxdWU8U2VydmljZVdvcmtlckpvYj4oKnRoaXMsIFdURk1vdmUocHJvbWlzZSksIFdURk1v
dmUoam9iRGF0YSkpKTsKIH0KIAordm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjp3aWxsU2V0
dGxlUmVnaXN0cmF0aW9uUHJvbWlzZShib29sIHN1Y2Nlc3MpCit7CisgICAgYXV0byogY29udGV4
dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBQYWdlKiBwYWdlID0gaXM8RG9jdW1l
bnQ+KGNvbnRleHQpID8gZG93bmNhc3Q8RG9jdW1lbnQ+KCpjb250ZXh0KS5wYWdlKCkgOiBudWxs
cHRyOworICAgIGlmICghcGFnZSB8fCAhcGFnZS0+aXNTZXJ2aWNlV29ya2VyUGFnZSgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBwYWdlLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5jbGllbnQoKS5k
aWRGaW5pc2hTZXJ2aWNlV29ya2VyUGFnZVJlZ2lzdHJhdGlvbihzdWNjZXNzKTsKK30KKwogdm9p
ZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjp1bnJlZ2lzdGVyUmVnaXN0cmF0aW9uKFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIHJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIERPTVBy
b21pc2VEZWZlcnJlZDxJRExCb29sZWFuPiYmIHByb21pc2UpCiB7CiAgICAgQVNTRVJUKCFtX2lz
U3RvcHBlZCk7CkBAIC0zMzQsNiArMzQ2LDkgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVy
Ojpqb2JGYWlsZWRXaXRoRXhjZXB0aW9uKFNlcnZpY2VXb3JrZXJKb2ImIGpvYiwgY29uc3QKIAog
ICAgIENPTlRBSU5FUl9SRUxFQVNFX0xPR19FUlJPUigiam9iRmFpbGVkV2l0aEV4Y2VwdGlvbjog
Sm9iICUiIFBSSXU2NCAiIGZhaWxlZCB3aXRoIGVycm9yICVzIiwgam9iLmlkZW50aWZpZXIoKS50
b1VJbnQ2NCgpLCBleGNlcHRpb24ubWVzc2FnZSgpLnV0ZjgoKS5kYXRhKCkpOwogCisgICAgaWYg
KGpvYi5kYXRhKCkudHlwZSA9PSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6UmVnaXN0ZXIpCisgICAg
ICAgIHdpbGxTZXR0bGVSZWdpc3RyYXRpb25Qcm9taXNlKGZhbHNlKTsKKwogICAgIGF1dG8gcHJv
bWlzZSA9IGpvYi50YWtlUHJvbWlzZSgpOwogICAgIGlmICghcHJvbWlzZSkKICAgICAgICAgcmV0
dXJuOwpAQCAtMzU2LDkgKzM3MSwxMCBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6Ompv
YlJlc29sdmVkV2l0aFJlZ2lzdHJhdGlvbihTZXJ2aWNlV29ya2VySm9iJiBqb2IsCiAgICAgQVNT
RVJUKG1fY3JlYXRpb25UaHJlYWQucHRyKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKICAgICBB
U1NFUlRfV0lUSF9NRVNTQUdFKGpvYi5oYXNQcm9taXNlKCkgfHwgam9iLmRhdGEoKS50eXBlID09
IFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpVcGRhdGUsICJPbmx5IHNvZnQgdXBkYXRlcyBoYXZlIG5v
IHByb21pc2UiKTsKIAotICAgIGlmIChqb2IuZGF0YSgpLnR5cGUgPT0gU2VydmljZVdvcmtlckpv
YlR5cGU6OlJlZ2lzdGVyKQorICAgIGlmIChqb2IuZGF0YSgpLnR5cGUgPT0gU2VydmljZVdvcmtl
ckpvYlR5cGU6OlJlZ2lzdGVyKSB7CiAgICAgICAgIENPTlRBSU5FUl9SRUxFQVNFX0xPRygiam9i
UmVzb2x2ZWRXaXRoUmVnaXN0cmF0aW9uOiBSZWdpc3RyYXRpb24gam9iICUiIFBSSXU2NCAiIHN1
Y2NlZWRlZCIsIGpvYi5pZGVudGlmaWVyKCkudG9VSW50NjQoKSk7Ci0gICAgZWxzZSB7CisgICAg
ICAgIHdpbGxTZXR0bGVSZWdpc3RyYXRpb25Qcm9taXNlKHRydWUpOworICAgIH0gZWxzZSB7CiAg
ICAgICAgIEFTU0VSVChqb2IuZGF0YSgpLnR5cGUgPT0gU2VydmljZVdvcmtlckpvYlR5cGU6OlVw
ZGF0ZSk7CiAgICAgICAgIENPTlRBSU5FUl9SRUxFQVNFX0xPRygiam9iUmVzb2x2ZWRXaXRoUmVn
aXN0cmF0aW9uOiBVcGRhdGUgam9iICUiIFBSSXU2NCAiIHN1Y2NlZWRlZCIsIGpvYi5pZGVudGlm
aWVyKCkudG9VSW50NjQoKSk7CiAgICAgfQpAQCAtNDc1LDYgKzQ5MSw5IEBAIHZvaWQgU2Vydmlj
ZVdvcmtlckNvbnRhaW5lcjo6am9iRmFpbGVkTG9hZGluZ1NjcmlwdChTZXJ2aWNlV29ya2VySm9i
JiBqb2IsIGNvbnN0CiAKICAgICBDT05UQUlORVJfUkVMRUFTRV9MT0dfRVJST1IoImpvYkZpbmlz
aGVkTG9hZGluZ1NjcmlwdDogRmFpbGVkIHRvIGZldGNoIHNjcmlwdCBmb3Igam9iICUiIFBSSXU2
NCAiLCBlcnJvcjogJXMiLCBqb2IuaWRlbnRpZmllcigpLnRvVUludDY0KCksIGVycm9yLmxvY2Fs
aXplZERlc2NyaXB0aW9uKCkudXRmOCgpLmRhdGEoKSk7CiAKKyAgICBpZiAoam9iLmRhdGEoKS50
eXBlID09IFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpSZWdpc3RlcikKKyAgICAgICAgd2lsbFNldHRs
ZVJlZ2lzdHJhdGlvblByb21pc2UoZmFsc2UpOworCiAgICAgaWYgKGF1dG8gcHJvbWlzZSA9IGpv
Yi50YWtlUHJvbWlzZSgpKSB7CiAgICAgICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgq
dGhpcywgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbcHJvbWlzZSA9IFdURk1vdmUocHJv
bWlzZSksIGV4Y2VwdGlvbiA9IFdURk1vdmUoZXhjZXB0aW9uKV0oKSBtdXRhYmxlIHsKICAgICAg
ICAgICAgIHByb21pc2UtPnJlamVjdChXVEZNb3ZlKGV4Y2VwdGlvbikpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmgK
aW5kZXggNmY1YjM3MTc2MGNiYjMwYmJjODc4YzMwNzJjZmQ5ODQ2ZTVlMzJlZi4uZWZkZjA5NDI2
YTc5NjY0NDk1NTc0MTZlMzNjNjJlMmU2M2QwMWNjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oCkBAIC0xMDUs
NiArMTA1LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgbm90aWZ5RmFpbGVkRmV0Y2hpbmdTY3Jp
cHQoU2VydmljZVdvcmtlckpvYiYsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGRl
c3Ryb3lKb2IoU2VydmljZVdvcmtlckpvYiYpOworICAgIHZvaWQgd2lsbFNldHRsZVJlZ2lzdHJh
dGlvblByb21pc2UoYm9vbCBzdWNjZXNzKTsKIAogICAgIERvY3VtZW50T3JXb3JrZXJJZGVudGlm
aWVyIGNvbnRleHRJZGVudGlmaWVyKCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDE3M2Q3MzBkNTI1NTg3ZmY0MjJlZWI5
MDI4N2QzMjhkNTdmZTdkN2YuLjI4ODdjMGEyZDY2NDU1MzhiYWZkMjc3ZTRmMWJlYjQ4ZmY2MjI2
YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bQpAQCAtMjM5OSwxMyArMjM5OSwyMCBAQCAtIChXS05hdmlnYXRpb24gKilfbG9hZFJlcXVlc3Q6
KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3Qgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbAogICAgIHJl
dHVybiB3cmFwcGVyKF9wYWdlLT5sb2FkUmVxdWVzdChyZXF1ZXN0LCBwb2xpY3kpKTsKIH0KIAot
LSAodm9pZClfbG9hZFNlcnZpY2VXb3JrZXI6KE5TVVJMICopdXJsCistICh2b2lkKV9sb2FkU2Vy
dmljZVdvcmtlcjooTlNVUkwgKil1cmwgIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShCT09M
IHN1Y2Nlc3MpKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAgICAgVEhST1dfSUZfU1VTUEVOREVEOwog
ICAgIGlmIChfcGFnZS0+aXNTZXJ2aWNlV29ya2VyUGFnZSgpKQogICAgICAgICBbTlNFeGNlcHRp
b24gcmFpc2U6TlNJbnRlcm5hbEluY29uc2lzdGVuY3lFeGNlcHRpb24gZm9ybWF0OkAiVGhlIFdL
V2ViVmlldyB3YXMgYWxyZWFkeSB1c2VkIHRvIGxvYWQgYSBzZXJ2aWNlIHdvcmtlciJdOwogCi0g
ICAgX3BhZ2UtPmxvYWRTZXJ2aWNlV29ya2VyKHVybCk7CisgICAgX3BhZ2UtPmxvYWRTZXJ2aWNl
V29ya2VyKHVybCwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25I
YW5kbGVyKV0oYm9vbCBzdWNjZXNzKSBtdXRhYmxlIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoc3VjY2Vzcyk7CisgICAgfSk7Cit9CisKKy0gKHZvaWQpX2xvYWRTZXJ2aWNlV29ya2VyOihO
U1VSTCAqKXVybAoreworICAgIFtzZWxmIF9sb2FkU2VydmljZVdvcmtlcjp1cmwgY29tcGxldGlv
bkhhbmRsZXI6XihCT09MKSB7IH1dOwogfQogCiAtICh2b2lkKV9ncmFudEFjY2Vzc1RvQXNzZXRT
ZXJ2aWNlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXdQcml2YXRlLmgKaW5kZXggY2I3ZjMzNDNmZGVlMDIwNWFlMGNlMjY2Y2Y4MzE3OWYxMWRh
ZDA0MS4uYzg4YjQ4NzQwZjkyOWM1MGZlOGZiMzFmZjk5OGZlYWMzNjIwYWRiMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5o
CkBAIC00MDgsNyArNDA4LDggQEAgZm9yIHRoaXMgcHJvcGVydHkuCiAtICh2b2lkKV9kaWRMb2Fk
QXBwSW5pdGlhdGVkUmVxdWVzdDoodm9pZCAoXikoQk9PTCByZXN1bHQpKWNvbXBsZXRpb25IYW5k
bGVyOwogLSAodm9pZClfZGlkTG9hZE5vbkFwcEluaXRpYXRlZFJlcXVlc3Q6KHZvaWQgKF4pKEJP
T0wgcmVzdWx0KSljb21wbGV0aW9uSGFuZGxlcjsKIAotLSAodm9pZClfbG9hZFNlcnZpY2VXb3Jr
ZXI6KE5TVVJMICopdXJsIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhX
S19JT1NfVEJBKSk7CistICh2b2lkKV9sb2FkU2VydmljZVdvcmtlcjooTlNVUkwgKil1cmwgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsgLy8gRklY
TUU6IFJlbW92ZSB0aGlzIG9uY2UgY2xpZW50cyBoYXZlIGFkb3B0ZWQgdGhlIHZlcnNpb24gd2l0
aCBhIGNvbXBsZXRpb24gaGFuZGxlci4KKy0gKHZvaWQpX2xvYWRTZXJ2aWNlV29ya2VyOihOU1VS
TCAqKXVybCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCBzdWNjZXNzKSljb21wbGV0
aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9T
X1RCQSkpOwogCiAtICh2b2lkKV9zdXNwZW5kUGFnZToodm9pZCAoXikoQk9PTCkpY29tcGxldGlv
bkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMi4wKSwgaW9zKDE1LjApKTsKIC0gKHZv
aWQpX3Jlc3VtZVBhZ2U6KHZvaWQgKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3MoMTIuMCksIGlvcygxNS4wKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAppbmRleCAzOWFhNDAzODVmZGUxMWJlN2MzMzlmOWU3NTFlOTc3M2Zi
MTJkOTE1Li4zODJiNTNlZjdlOTc2Y2JiZjJhNDliODM4YjdiYTYxZmQyNDY3YWIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTQ4MDYsNiArNDgwNiw4IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQo
UmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwCiAgICAgICAgIHBhZ2VDbGllbnQoKS5kaWRGYWlsUHJv
dmlzaW9uYWxMb2FkRm9yTWFpbkZyYW1lKCk7CiAgICAgICAgIGlmIChuYXZpZ2F0aW9uKQogICAg
ICAgICAgICAgbmF2aWdhdGlvbi0+c2V0Q2xpZW50TmF2aWdhdGlvbkFjdGl2aXR5KG51bGxwdHIp
OworCisgICAgICAgIGNhbGxTZXJ2aWNlV29ya2VyTGF1bmNoQ29tcGxldGlvbkhhbmRsZXJJZk5l
Y2Vzc2FyeSgpOwogICAgIH0KIAogICAgIGZyYW1lLmRpZEZhaWxQcm92aXNpb25hbExvYWQoKTsK
QEAgLTQ4MjksNiArNDgzMSwyNSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lv
bmFsTG9hZEZvckZyYW1lU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcAogICAgICAgICBt
X3Byb3Zpc2lvbmFsUGFnZSA9IG51bGxwdHI7CiB9CiAKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoU2VydmljZVdvcmtlclBhZ2VSZWdpc3Ry
YXRpb24oYm9vbCBzdWNjZXNzKQoreworICAgIEFTU0VSVChtX2lzU2VydmljZVdvcmtlclBhZ2Up
OworICAgIEFTU0VSVChtX3NlcnZpY2VXb3JrZXJMYXVuY2hDb21wbGV0aW9uSGFuZGxlcik7CisK
KyAgICBpZiAobV9zZXJ2aWNlV29ya2VyTGF1bmNoQ29tcGxldGlvbkhhbmRsZXIpCisgICAgICAg
IG1fc2VydmljZVdvcmtlckxhdW5jaENvbXBsZXRpb25IYW5kbGVyKHN1Y2Nlc3MpOworfQorI2Vu
ZGlmCisKK3ZvaWQgV2ViUGFnZVByb3h5OjpjYWxsU2VydmljZVdvcmtlckxhdW5jaENvbXBsZXRp
b25IYW5kbGVySWZOZWNlc3NhcnkoKQoreworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAg
ICBpZiAobV9pc1NlcnZpY2VXb3JrZXJQYWdlICYmIG1fc2VydmljZVdvcmtlckxhdW5jaENvbXBs
ZXRpb25IYW5kbGVyKQorICAgICAgICBtX3NlcnZpY2VXb3JrZXJMYXVuY2hDb21wbGV0aW9uSGFu
ZGxlcihmYWxzZSk7CisjZW5kaWYKK30KKwogI2lmIEVOQUJMRShJTlRFTExJR0VOVF9UUkFDS0lO
R19QUkVWRU5USU9OKQogc3RhdGljIE9wdGlvblNldDxDcm9zc1NpdGVOYXZpZ2F0aW9uRGF0YVRy
YW5zZmVyOjpGbGFnPiBjaGVja0lmTmF2aWdhdGlvbkNvbnRhaW5zRGF0YVRyYW5zZmVyKGNvbnN0
IFNlY3VyaXR5T3JpZ2luRGF0YSByZXF1ZXN0ZXJPcmlnaW4sIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgY3VycmVudFJlcXVlc3QpCiB7CkBAIC01MDkyLDYgKzUxMTMsOCBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGlkRmFpbExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJ
bmZvRGF0YSYmCiAgICAgICAgIHBhZ2VDbGllbnQoKS5kaWRGYWlsTmF2aWdhdGlvbihuYXZpZ2F0
aW9uLmdldCgpKTsKICAgICAgICAgaWYgKG5hdmlnYXRpb24pCiAgICAgICAgICAgICBuYXZpZ2F0
aW9uLT5zZXRDbGllbnROYXZpZ2F0aW9uQWN0aXZpdHkobnVsbHB0cik7CisKKyAgICAgICAgY2Fs
bFNlcnZpY2VXb3JrZXJMYXVuY2hDb21wbGV0aW9uSGFuZGxlcklmTmVjZXNzYXJ5KCk7CiAgICAg
fQogfQogCkBAIC03ODQ2LDYgKzc4NjksOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzZXRTdGF0
ZShSZXNldFN0YXRlUmVhc29uIHJlc2V0U3RhdGVSZWFzb24pCiAgICAgICAgIG1fY29udGV4dElE
Rm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uSW5XZWJQcm9jZXNzID0gMDsKICNlbmRpZgogCisgICAg
aWYgKHJlc2V0U3RhdGVSZWFzb24gIT0gUmVzZXRTdGF0ZVJlYXNvbjo6TmF2aWdhdGlvblN3YXAp
CisgICAgICAgIGNhbGxTZXJ2aWNlV29ya2VyTGF1bmNoQ29tcGxldGlvbkhhbmRsZXJJZk5lY2Vz
c2FyeSgpOworCiAgICAgaWYgKG1fb3BlblBhbmVsUmVzdWx0TGlzdGVuZXIpIHsKICAgICAgICAg
bV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci0+aW52YWxpZGF0ZSgpOwogICAgICAgICBtX29wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyID0gbnVsbHB0cjsKQEAgLTEwNzA4LDE2ICsxMDczNCwyNiBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6c2V0TmVlZHNET01XaW5kb3dSZXNpemVFdmVudCgpCiAgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TmVlZHNET01XaW5kb3dSZXNpemVFdmVudCgpKTsKIH0K
IAotdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRTZXJ2aWNlV29ya2VyKGNvbnN0IFVSTCYgdXJsKQor
dm9pZCBXZWJQYWdlUHJveHk6OmxvYWRTZXJ2aWNlV29ya2VyKGNvbnN0IFVSTCYgdXJsLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgc3VjY2Vzcyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGlmIChtX2lzQ2xvc2VkKQotICAgICAg
ICByZXR1cm47CisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CiAKICAg
ICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgImxvYWRTZXJ2aWNlV29ya2VyOiIp
OwogCisgICAgaWYgKG1fc2VydmljZVdvcmtlckxhdW5jaENvbXBsZXRpb25IYW5kbGVyKQorICAg
ICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworCiAgICAgbV9pc1NlcnZpY2VX
b3JrZXJQYWdlID0gdHJ1ZTsKKyAgICBtX3NlcnZpY2VXb3JrZXJMYXVuY2hDb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpOworCiAgICAgQ1N0cmluZyBodG1sID0g
bWFrZVN0cmluZygiPHNjcmlwdD5uYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcignIiwg
dXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksICInKTs8L3NjcmlwdD4iKS51dGY4KCk7CiAgICAg
bG9hZERhdGEoeyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihodG1sLmRhdGEoKSks
IGh0bWwubGVuZ3RoKCkgfSwgInRleHQvaHRtbCJfcywgIlVURi04Il9zLCB1cmwucHJvdG9jb2xI
b3N0QW5kUG9ydCgpKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHVybCk7CisgICAgY29tcGxl
dGlvbkhhbmRsZXIoZmFsc2UpOworI2VuZGlmCiB9CiAKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlM
WSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggY2MwMDI0YWI5ZjVi
N2Q2ODI5ZmZhMjAyNTMxYjE1ZDU2OWU0MDAxOS4uMmFlZTA4NGM3NjYxOGJjZjcyNTZjMWZkODFj
MWM4MmIyYjA0NjY5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAg
LTU1Niw3ICs1NTYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdGVJbnNwZWN0b3JJbmZvcm1h
dGlvbkRpZENoYW5nZSgpOwogI2VuZGlmCiAKLSAgICB2b2lkIGxvYWRTZXJ2aWNlV29ya2VyKGNv
bnN0IFVSTCYpOworICAgIHZvaWQgbG9hZFNlcnZpY2VXb3JrZXIoY29uc3QgVVJMJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sIHN1Y2Nlc3MpPiYmKTsKIAogI2lmIEVOQUJMRShGVUxMU0NS
RUVOX0FQSSkKICAgICBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5KiBmdWxsU2NyZWVuTWFuYWdl
cigpOwpAQCAtMjUyMCw2ICsyNTIwLDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXNldFNwZWVj
aFN5bnRoZXNpemVyKCk7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAg
ICB2b2lkIGRpZEZpbmlzaFNlcnZpY2VXb3JrZXJQYWdlUmVnaXN0cmF0aW9uKGJvb2wgc3VjY2Vz
cyk7CisjZW5kaWYKKyAgICB2b2lkIGNhbGxTZXJ2aWNlV29ya2VyTGF1bmNoQ29tcGxldGlvbkhh
bmRsZXJJZk5lY2Vzc2FyeSgpOworCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBzdGF0
aWMgYm9vbCBpc0luSGFyZHdhcmVLZXlib2FyZE1vZGUoKTsKICAgICB2b2lkIGNsZWFyQXVkaWJs
ZUFjdGl2aXR5KCk7CkBAIC0zMDE0LDcgKzMwMTksMTAgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wg
bV9uZWVkc0ZvbnRBdHRyaWJ1dGVzIHsgZmFsc2UgfTsKICAgICBib29sIG1fbWF5SGF2ZVVuaXZl
cnNhbEZpbGVSZWFkU2FuZGJveEV4dGVuc2lvbiB7IGZhbHNlIH07CisjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQogICAgIGJvb2wgbV9pc1NlcnZpY2VXb3JrZXJQYWdlIHsgZmFsc2UgfTsKKyAg
ICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiBtX3NlcnZpY2VXb3JrZXJMYXVuY2hDb21w
bGV0aW9uSGFuZGxlcjsKKyNlbmRpZgogCiAgICAgUnVuTG9vcDo6VGltZXI8V2ViUGFnZVByb3h5
PiBtX3RyeUNsb3NlVGltZW91dFRpbWVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggNWVkZjMxZDM0M2FlZDhkNzIxNjlkYjk3
MzUyZTViNzFmNzI4NTA4OC4uNTgxMDhmNzQzMTRkYjVhOTU2Nzg1MzRlN2JjMTcxMDA0Nzc3ODBi
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbgpAQCAtMjU4LDYgKzI1OCwxMCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAg
IFNob3dDb250ZXh0TWVudShXZWJLaXQ6OkNvbnRleHRNZW51Q29udGV4dERhdGEgY29udGV4dE1l
bnVDb250ZXh0RGF0YSwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKICNlbmRpZgogCisjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIERpZEZpbmlzaFNlcnZpY2VXb3JrZXJQYWdlUmVn
aXN0cmF0aW9uKGJvb2wgc3VjY2VzcykKKyNlbmRpZgorCiAgICAgIyBEYXRhYmFzZSBtZXNzYWdl
cwogICAgIEV4Y2VlZGVkRGF0YWJhc2VRdW90YShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgU3RyaW5nIG9yaWdpbklkZW50aWZpZXIsIFN0cmluZyBkYXRhYmFzZU5hbWUsIFN0cmlu
ZyBkYXRhYmFzZURpc3BsYXlOYW1lLCB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1
cnJlbnRPcmlnaW5Vc2FnZSwgdWludDY0X3QgY3VycmVudERhdGFiYXNlVXNhZ2UsIHVpbnQ2NF90
IGV4cGVjdGVkVXNhZ2UpIC0+ICh1aW50NjRfdCBuZXdRdW90YSkgU3luY2hyb25vdXMKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggMTNkNjM4NzQ4ZTEwYjVkZjM3ZjkwN2I4
M2ExZDU5M2U0YmVmYjNhZi4uOTlhNTFhYjVmZWFhZTQ3OWEwM2EzZDU4MWM4ODk0NzBiMDBlZTlj
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xOTM5LDYgKzE5MzksMTcg
QEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkQ3JlYXRlV2luZG93KERPTVdpbmRvdyYg
d2luZG93KQogICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkQ3Jl
YXRlV2luZG93KG1fZnJhbWUtPmZyYW1lSUQoKSwgd2luZG93LmlkZW50aWZpZXIoKSkpOwogfQog
CisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6
ZGlkRmluaXNoU2VydmljZVdvcmtlclBhZ2VSZWdpc3RyYXRpb24oYm9vbCBzdWNjZXNzKQorewor
ICAgIGF1dG8qIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CisgICAgaWYgKCF3ZWJQYWdlKQor
ICAgICAgICByZXR1cm47CisKKyAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkRpZEZpbmlzaFNlcnZpY2VXb3JrZXJQYWdlUmVnaXN0cmF0aW9uKHN1Y2Nlc3MpKTsKK30K
KyNlbmRpZgorCiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogYm9vbCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6c2hvdWxkRW5hYmxlSW5BcHBCcm93c2VyUHJpdmFjeVByb3RlY3Rpb25zKCkg
Y29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggZWQzMjQ0MmNhOTBmMzIz
NGJlMmY1YzZjNjczOWFhYzNiYTFhODA4MS4uYmI1MjlkM2FlYzRlMmM3NWYxYTdkZTkxYjEwYjU1
ODJkNDUyMmI0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTE2NCw2ICsxNjQs
MTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbiYsIGNvbnN0IFVSTCYpIGZpbmFsOwogICAgIHZvaWQgZGlkRGV0ZWN0WFNT
KGNvbnN0IFVSTCYsIGJvb2wgZGlkQmxvY2tFbnRpcmVQYWdlKSBmaW5hbDsKIAorI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKKyAgICB2b2lkIGRpZEZpbmlzaFNlcnZpY2VXb3JrZXJQYWdlUmVn
aXN0cmF0aW9uKGJvb2wgc3VjY2VzcykgZmluYWw7CisjZW5kaWYKKwogICAgIFdlYkNvcmU6OlJl
c291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JikgY29uc3QgZmluYWw7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3Io
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgY29uc3QgZmluYWw7CiAgICAgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkQnlDb250ZW50QmxvY2tlckVycm9yKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDc1YjgzN2I1MmI3NmFmODg3NWNkMDBhZTMy
MDY3MzkzNTJmMTljZjQuLmQyOTc1YjY3OTk5ZGI5ZTAxNzhkMjdiOWE5ODJhZTgxNzQ1ZDE2OGIg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAyMS0xMC0xOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIEFkZCBhIGNhbGxiYWNrIHRvIGtub3cgd2hlbiB0aGUgc2VydmljZSB3b3JrZXIg
bG9hZHMgdmlhIC1bV0tXZWJWaWV3IF9sb2FkU2VydmljZVdvcmtlcjpdCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzE3NzEKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzg0Mjc0MzY0PgorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5z
ZW4uCisKKyAgICAgICAgQWRkIEFQSSB0ZXN0IGNvdmVyYWdlLgorCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW06CisKIDIwMjEt
MTAtMTggIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIFt3
ZWJraXRzY21weV0gQWxsb3cgcmVwb3NpdG9yaWVzIHRvIGRlZmluZSBjdXN0b20gc2V0dXAgY29t
bWFuZHMgKEZvbGxvdzAtdXApCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tCmluZGV4IDZmNGRlZTJiMTdk
YzgyMDMwMmQ4NjM2NWU3ZDFiMGM5MWQ0OWQxZDcuLmQ0ZGMwMDNkNWY5NTNjNmQ4NDQ3Nzg4YTI2
OGUwMTU4YmZjNDcxNDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tCkBAIC0yNjc3LDkgKzI2Nzcs
MTQgQEAgVEVTVChTZXJ2aWNlV29ya2VyLCBFeHRlbnNpb25TZXJ2aWNlV29ya2VyKQogICAgIFtb
d2ViVmlldyBfcmVtb3RlT2JqZWN0UmVnaXN0cnldIHJlZ2lzdGVyRXhwb3J0ZWRPYmplY3Q6b2Jq
ZWN0LmdldCgpIGludGVyZmFjZTppbnRlcmZhY2VdOwogCiAgICAgLy8gVGhlIHNlcnZpY2Ugd29y
a2VyIHNjcmlwdCBzaG91bGQgZ2V0IGxvYWRlZCBvdmVyIHRoZSBjdXN0b20gc2NoZW1lIGhhbmRs
ZXIuCisgICAgZG9uZSA9IGZhbHNlOwogICAgIGRpZFN0YXJ0VVJMU2NoZW1lVGFzayA9IGZhbHNl
OwotICAgIFt3ZWJWaWV3IF9sb2FkU2VydmljZVdvcmtlcjpbTlNVUkwgVVJMV2l0aFN0cmluZzpA
InN3LWV4dDovL0FCQy9zdy5qcyJdXTsKLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRp
ZFN0YXJ0VVJMU2NoZW1lVGFzayk7CisgICAgW3dlYlZpZXcgX2xvYWRTZXJ2aWNlV29ya2VyOltO
U1VSTCBVUkxXaXRoU3RyaW5nOkAic3ctZXh0Oi8vQUJDL3N3LmpzIl0gY29tcGxldGlvbkhhbmRs
ZXI6XihCT09MIHN1Y2Nlc3MpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUoc3VjY2Vzcyk7CisgICAg
ICAgIEVYUEVDVF9UUlVFKGRpZFN0YXJ0VVJMU2NoZW1lVGFzayk7CisgICAgICAgIGRvbmUgPSB0
cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiAKICAg
ICAvLyBUaGUgaW5qZWN0ZWQgYnVuZGxlIHNob3VsZCBoYXZlIGJlZW4gbm90aWZpZWQgdGhhdCB0
aGUgc2VydmljZSB3b3JrZXIncyBnbG9iYWwgb2JqZWN0IHdhcyBhdmFpbGFibGUuCiAgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZzZXJ2aWNlV29ya2VyR2xvYmFsT2JqZWN0SXNBdmFpbGFi
bGUpOwpAQCAtMjcwNSwzICsyNzEwLDExNSBAQCBURVNUKFNlcnZpY2VXb3JrZXIsIEV4dGVuc2lv
blNlcnZpY2VXb3JrZXIpCiAgICAgd2hpbGUgKHdlYlZpZXdDb25maWd1cmF0aW9uLnByb2Nlc3NQ
b29sLl9zZXJ2aWNlV29ya2VyUHJvY2Vzc0NvdW50KQogICAgICAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpzcGluUnVuTG9vcCgxMCk7CiB9CisKK1RFU1QoU2VydmljZVdvcmtlciwgRXh0ZW5zaW9u
U2VydmljZVdvcmtlckZhaWx1cmVCYWRTY3JpcHQpCit7CisgICAgW1dLV2Vic2l0ZURhdGFTdG9y
ZSBfYWxsb3dXZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zXTsKKworICAgIC8vIFN0YXJ0
IHdpdGggYSBjbGVhbiBzbGF0ZSBkYXRhIHN0b3JlCisgICAgW1tXS1dlYnNpdGVEYXRhU3RvcmUg
ZGVmYXVsdERhdGFTdG9yZV0gcmVtb3ZlRGF0YU9mVHlwZXM6W1dLV2Vic2l0ZURhdGFTdG9yZSBh
bGxXZWJzaXRlRGF0YVR5cGVzXSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNv
bXBsZXRpb25IYW5kbGVyOl4oKSB7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisg
ICAgYXV0byBzY2hlbWVIYW5kbGVyID0gYWRvcHROUyhbU2VydmljZVdvcmtlclNjaGVtZUhhbmRs
ZXIgbmV3XSk7CisgICAgW3NjaGVtZUhhbmRsZXIgYWRkTWFwcGluZ0Zyb21VUkxTdHJpbmc6QCJz
dy1leHQ6Ly9BQkMvYmFkLXN3LmpzIiB0b0RhdGE6IjEgPSAxOyJdOworCisgICAgV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiAqd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJTZXJ2aWNl
V29ya2VyUGFnZVBsdWdJbiJdOworICAgIFt3ZWJWaWV3Q29uZmlndXJhdGlvbiBzZXRVUkxTY2hl
bWVIYW5kbGVyOnNjaGVtZUhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAic3ctZXh0Il07Cisg
ICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOndlYlZpZXdDb25maWd1
cmF0aW9uXSk7CisKKyAgICBhdXRvIG9iamVjdCA9IGFkb3B0TlMoW1tTZXJ2aWNlV29ya2VyUGFn
ZVJlbW90ZU9iamVjdCBhbGxvY10gaW5pdF0pOworICAgIF9XS1JlbW90ZU9iamVjdEludGVyZmFj
ZSAqaW50ZXJmYWNlID0gW19XS1JlbW90ZU9iamVjdEludGVyZmFjZSByZW1vdGVPYmplY3RJbnRl
cmZhY2VXaXRoUHJvdG9jb2w6QHByb3RvY29sKFNlcnZpY2VXb3JrZXJQYWdlUHJvdG9jb2wpXTsK
KyAgICBbW3dlYlZpZXcgX3JlbW90ZU9iamVjdFJlZ2lzdHJ5XSByZWdpc3RlckV4cG9ydGVkT2Jq
ZWN0Om9iamVjdC5nZXQoKSBpbnRlcmZhY2U6aW50ZXJmYWNlXTsKKworICAgIC8vIFRoZSBzZXJ2
aWNlIHdvcmtlciBzY3JpcHQgc2hvdWxkIGdldCBsb2FkZWQgb3ZlciB0aGUgY3VzdG9tIHNjaGVt
ZSBoYW5kbGVyLgorICAgIGRvbmUgPSBmYWxzZTsKKyAgICBkaWRTdGFydFVSTFNjaGVtZVRhc2sg
PSBmYWxzZTsKKyAgICBbd2ViVmlldyBfbG9hZFNlcnZpY2VXb3JrZXI6W05TVVJMIFVSTFdpdGhT
dHJpbmc6QCJzdy1leHQ6Ly9BQkMvYmFkLXN3LmpzIl0gY29tcGxldGlvbkhhbmRsZXI6XihCT09M
IHN1Y2Nlc3MpIHsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKHN1Y2Nlc3MpOworICAgICAgICBFWFBF
Q1RfVFJVRShkaWRTdGFydFVSTFNjaGVtZVRhc2spOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAg
ICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworfQorCitURVNUKFNl
cnZpY2VXb3JrZXIsIEV4dGVuc2lvblNlcnZpY2VXb3JrZXJGYWlsdXJlQmFkVVJMKQoreworICAg
IFtXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbG93V2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2lu
c107CisKKyAgICAvLyBTdGFydCB3aXRoIGEgY2xlYW4gc2xhdGUgZGF0YSBzdG9yZQorICAgIFtb
V0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdIHJlbW92ZURhdGFPZlR5cGVzOltX
S1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5jZTpbTlNE
YXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgeworICAgICAgICBkb25lID0g
dHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAg
IGRvbmUgPSBmYWxzZTsKKworICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKndlYlZpZXdDb25m
aWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldp
dGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiU2VydmljZVdvcmtlclBhZ2VQbHVnSW4iXTsKKyAgICBh
dXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5T
TWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246d2ViVmlld0NvbmZpZ3VyYXRp
b25dKTsKKworICAgIGF1dG8gb2JqZWN0ID0gYWRvcHROUyhbW1NlcnZpY2VXb3JrZXJQYWdlUmVt
b3RlT2JqZWN0IGFsbG9jXSBpbml0XSk7CisgICAgX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNlICpp
bnRlcmZhY2UgPSBbX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNlIHJlbW90ZU9iamVjdEludGVyZmFj
ZVdpdGhQcm90b2NvbDpAcHJvdG9jb2woU2VydmljZVdvcmtlclBhZ2VQcm90b2NvbCldOworICAg
IFtbd2ViVmlldyBfcmVtb3RlT2JqZWN0UmVnaXN0cnldIHJlZ2lzdGVyRXhwb3J0ZWRPYmplY3Q6
b2JqZWN0LmdldCgpIGludGVyZmFjZTppbnRlcmZhY2VdOworCisgICAgZG9uZSA9IGZhbHNlOwor
ICAgIFt3ZWJWaWV3IF9sb2FkU2VydmljZVdvcmtlcjpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0
dHBzOi8vQUJDL2RvZXMtbm90LWV4aXN0LmpzIl0gY29tcGxldGlvbkhhbmRsZXI6XihCT09MIHN1
Y2Nlc3MpIHsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKHN1Y2Nlc3MpOworICAgICAgICBkb25lID0g
dHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworfQor
CitURVNUKFNlcnZpY2VXb3JrZXIsIEV4dGVuc2lvblNlcnZpY2VXb3JrZXJGYWlsdXJlVmlld0Ns
b3NlZCkKK3sKKyAgICBbV0tXZWJzaXRlRGF0YVN0b3JlIF9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jk
c0ZvckFsbE9yaWdpbnNdOworCisgICAgLy8gU3RhcnQgd2l0aCBhIGNsZWFuIHNsYXRlIGRhdGEg
c3RvcmUKKyAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSByZW1vdmVE
YXRhT2ZUeXBlczpbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbFdlYnNpdGVEYXRhVHlwZXNdIG1vZGlm
aWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6XigpIHsKKyAg
ICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZkb25lKTsKKyAgICBkb25lID0gZmFsc2U7CisKKyAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9u
ICp3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2Nv
bmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIlNlcnZpY2VXb3JrZXJQYWdlUGx1
Z0luIl07CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOndlYlZp
ZXdDb25maWd1cmF0aW9uXSk7CisKKyAgICBhdXRvIG9iamVjdCA9IGFkb3B0TlMoW1tTZXJ2aWNl
V29ya2VyUGFnZVJlbW90ZU9iamVjdCBhbGxvY10gaW5pdF0pOworICAgIF9XS1JlbW90ZU9iamVj
dEludGVyZmFjZSAqaW50ZXJmYWNlID0gW19XS1JlbW90ZU9iamVjdEludGVyZmFjZSByZW1vdGVP
YmplY3RJbnRlcmZhY2VXaXRoUHJvdG9jb2w6QHByb3RvY29sKFNlcnZpY2VXb3JrZXJQYWdlUHJv
dG9jb2wpXTsKKyAgICBbW3dlYlZpZXcgX3JlbW90ZU9iamVjdFJlZ2lzdHJ5XSByZWdpc3RlckV4
cG9ydGVkT2JqZWN0Om9iamVjdC5nZXQoKSBpbnRlcmZhY2U6aW50ZXJmYWNlXTsKKworICAgIFt3
ZWJWaWV3IF9sb2FkU2VydmljZVdvcmtlcjpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8v
QUJDL2RvZXMtbm90LWV4aXN0LmpzIl0gY29tcGxldGlvbkhhbmRsZXI6XihCT09MIHN1Y2Nlc3Mp
IHsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKHN1Y2Nlc3MpOworICAgICAgICBkb25lID0gdHJ1ZTsK
KyAgICB9XTsKKyAgICBbd2ViVmlldyBfY2xvc2VdOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmZG9uZSk7Cit9CisKK1RFU1QoU2VydmljZVdvcmtlciwgRXh0ZW5zaW9uU2VydmljZVdv
cmtlckZhaWx1cmVWaWV3RGVzdHJveWVkKQoreworICAgIFtXS1dlYnNpdGVEYXRhU3RvcmUgX2Fs
bG93V2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2luc107CisKKyAgICAvLyBTdGFydCB3aXRo
IGEgY2xlYW4gc2xhdGUgZGF0YSBzdG9yZQorICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1
bHREYXRhU3RvcmVdIHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vi
c2l0ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0
aW9uSGFuZGxlcjpeKCkgeworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIEBh
dXRvcmVsZWFzZXBvb2wgeworICAgICAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICp3ZWJWaWV3
Q29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRp
b25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIlNlcnZpY2VXb3JrZXJQYWdlUGx1Z0luIl07Cisg
ICAgICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjp3ZWJWaWV3Q29u
ZmlndXJhdGlvbl0pOworCisgICAgICAgIGF1dG8gb2JqZWN0ID0gYWRvcHROUyhbW1NlcnZpY2VX
b3JrZXJQYWdlUmVtb3RlT2JqZWN0IGFsbG9jXSBpbml0XSk7CisgICAgICAgIF9XS1JlbW90ZU9i
amVjdEludGVyZmFjZSAqaW50ZXJmYWNlID0gW19XS1JlbW90ZU9iamVjdEludGVyZmFjZSByZW1v
dGVPYmplY3RJbnRlcmZhY2VXaXRoUHJvdG9jb2w6QHByb3RvY29sKFNlcnZpY2VXb3JrZXJQYWdl
UHJvdG9jb2wpXTsKKyAgICAgICAgW1t3ZWJWaWV3IF9yZW1vdGVPYmplY3RSZWdpc3RyeV0gcmVn
aXN0ZXJFeHBvcnRlZE9iamVjdDpvYmplY3QuZ2V0KCkgaW50ZXJmYWNlOmludGVyZmFjZV07CisK
KyAgICAgICAgW3dlYlZpZXcgX2xvYWRTZXJ2aWNlV29ya2VyOltOU1VSTCBVUkxXaXRoU3RyaW5n
OkAiaHR0cHM6Ly9BQkMvZG9lcy1ub3QtZXhpc3QuanMiXSBjb21wbGV0aW9uSGFuZGxlcjpeKEJP
T0wgc3VjY2VzcykgeworICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKHN1Y2Nlc3MpOworICAgICAg
ICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgIH1dOworICAgIH0KKyAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmRvbmUpOworfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>