<?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>183873</bug_id>
          
          <creation_ts>2018-03-21 15:00:02 -0700</creation_ts>
          <short_desc>Promptly terminate service worker processes when they are no longer needed</short_desc>
          <delta_ts>2018-03-23 15:16:31 -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>Service Workers</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>183941</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1408187</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-21 15:00:02 -0700</bug_when>
    <thetext>Promptly terminate service worker processes when they are no longer needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1408188</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-21 15:00:37 -0700</bug_when>
    <thetext>&lt;rdar://problem/38676995&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1408459</commentid>
    <comment_count>2</comment_count>
      <attachid>336301</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-22 13:19:14 -0700</bug_when>
    <thetext>Created attachment 336301
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1408477</commentid>
    <comment_count>3</comment_count>
      <attachid>336309</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-22 13:53:30 -0700</bug_when>
    <thetext>Created attachment 336309
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1408533</commentid>
    <comment_count>4</comment_count>
      <attachid>336324</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-22 16:25:39 -0700</bug_when>
    <thetext>Created attachment 336324
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1408559</commentid>
    <comment_count>5</comment_count>
      <attachid>336337</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-22 16:58:53 -0700</bug_when>
    <thetext>Created attachment 336337
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1408743</commentid>
    <comment_count>6</comment_count>
      <attachid>336384</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-23 10:08:36 -0700</bug_when>
    <thetext>Created attachment 336384
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1408807</commentid>
    <comment_count>7</comment_count>
      <attachid>336384</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-03-23 11:58:23 -0700</bug_when>
    <thetext>Comment on attachment 336384
Patch

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

&gt; Source/WebKit/ChangeLog:37
&gt; +        prevent the service worker process from ever being terminated.

There is no need for this once https://bugs.webkit.org/show_bug.cgi?id=183941 lands.
We should ask for registration of service worker clients at creation of the first service worker process now that we have more than one.
We could add an assertion in WebProcess::registerServiceWorkerClients to ensure that this is not a service worker process getting this message for safety.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1408829</commentid>
    <comment_count>8</comment_count>
      <attachid>336384</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-03-23 12:40:46 -0700</bug_when>
    <thetext>Comment on attachment 336384
Patch

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

&gt; Source/WebCore/workers/service/server/SWServer.cpp:745
&gt; +    auto&amp; clientIdentifiersForSecurityOrigin = m_clientsBySecurityOrigin.ensure(WTFMove(securityOrigin), [] {

Would it be more efficient and simpler if m_clientsBySecurityOrigin takes a SecurityOriginData?
It is unfortunate that we would need to create all these Ref&lt;SecurityOrigin&gt; just for querying this map.
I guess there are other places that would be affected by this change.

&gt; Source/WebCore/workers/service/server/SWServer.cpp:789
&gt; +        if (m_shouldDisableServiceWorkerProcessTerminationDelay)

It might be better to keep the idea of a timer for terminating workers even in the context of API tests.
This would make it closer to actual WebKit behavior.
Can we instead do startOneShort(m_shouldDisableServiceWorkerProcessTerminationDelay ? 0 : terminationDelay); ?

Or maybe, since we have this piping from UIProcess to WebProcess, we could pass the timer value itself in case we want at some point to give application the ability to set this value.

&gt; Source/WebCore/workers/service/server/SWServer.cpp:801
&gt; +    clientsForSecurityOrigin.removeFirstMatching([&amp;] (const auto&amp; identifier) {

Would it be better if it was a HashSet. We probably do not need to keep the order here.
Maybe we can also assert that we are actually finding this clientIdentifier.

&gt; Source/WebKit/StorageProcess/StorageProcess.cpp:134
&gt; +    return false;

I wonder whether WTF::anyOf(m_swServers.values(), [&amp;]...) would work here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1408892</commentid>
    <comment_count>9</comment_count>
      <attachid>336423</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-23 14:36:01 -0700</bug_when>
    <thetext>Created attachment 336423
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1408914</commentid>
    <comment_count>10</comment_count>
      <attachid>336423</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-03-23 15:16:29 -0700</bug_when>
    <thetext>Comment on attachment 336423
Patch

Clearing flags on attachment: 336423

Committed r229927: &lt;https://trac.webkit.org/changeset/229927&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1408915</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-03-23 15:16:31 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336301</attachid>
            <date>2018-03-22 13:19:14 -0700</date>
            <delta_ts>2018-03-22 13:53:30 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>183873_terminateServiceWorkerProcesses_wip.patch</filename>
            <type>text/plain</type>
            <size>12859</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5j
cHAKaW5kZXggYTc0YTFhYjAyNDAuLjAwYjgyYjUyZmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApAQCAtNjQxLDEwICs2NDEs
MTUgQEAgdm9pZCBTV1NlcnZlcjo6dGVybWluYXRlV29ya2VySW50ZXJuYWwoU1dTZXJ2ZXJXb3Jr
ZXImIHdvcmtlciwgVGVybWluYXRpb25Nb2RlIG0KICAgICB9OwogfQogCi12b2lkIFNXU2VydmVy
OjptYXJrQWxsV29ya2Vyc0FzVGVybWluYXRlZCgpCit2b2lkIFNXU2VydmVyOjptYXJrQWxsV29y
a2Vyc0Zvck9yaWdpbkFzVGVybWluYXRlZChjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKQog
ewotICAgIHdoaWxlICghbV9ydW5uaW5nT3JUZXJtaW5hdGluZ1dvcmtlcnMuaXNFbXB0eSgpKQot
ICAgICAgICB3b3JrZXJDb250ZXh0VGVybWluYXRlZChtX3J1bm5pbmdPclRlcm1pbmF0aW5nV29y
a2Vycy5iZWdpbigpLT52YWx1ZSk7CisgICAgVmVjdG9yPFNXU2VydmVyV29ya2VyKj4gdGVybWlu
YXRlZFdvcmtlcnM7CisgICAgZm9yIChhdXRvJiB3b3JrZXIgOiBtX3J1bm5pbmdPclRlcm1pbmF0
aW5nV29ya2Vycy52YWx1ZXMoKSkgeworICAgICAgICBpZiAob3JpZ2luLmlzU2FtZVNjaGVtZUhv
c3RQb3J0KHdvcmtlci0+c2VjdXJpdHlPcmlnaW4oKSkpCisgICAgICAgICAgICB0ZXJtaW5hdGVk
V29ya2Vycy5hcHBlbmQod29ya2VyLnB0cigpKTsKKyAgICB9CisgICAgZm9yIChhdXRvJiB0ZXJt
aW5hdGVkV29ya2VyIDogdGVybWluYXRlZFdvcmtlcnMpCisgICAgICAgIHdvcmtlckNvbnRleHRU
ZXJtaW5hdGVkKCp0ZXJtaW5hdGVkV29ya2VyKTsKIH0KIAogdm9pZCBTV1NlcnZlcjo6d29ya2Vy
Q29udGV4dFRlcm1pbmF0ZWQoU1dTZXJ2ZXJXb3JrZXImIHdvcmtlcikKQEAgLTcyOSwxMiArNzM0
LDE5IEBAIHZvaWQgU1dTZXJ2ZXI6OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChDbGllbnRP
cmlnaW4mJiBjbGllbnRPcmlnaW4sIFNlcnZpY2VXCiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2Ns
aWVudHNCeUlkLmFkZChjbGllbnRJZGVudGlmaWVyLCBXVEZNb3ZlKGRhdGEpKTsKICAgICBBU1NF
UlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwogCisgICAgYXV0byBz
ZWN1cml0eU9yaWdpbiA9IGNsaWVudE9yaWdpbi5jbGllbnRPcmlnaW4uc2VjdXJpdHlPcmlnaW4o
KTsKKwogICAgIGF1dG8mIGNsaWVudElkZW50aWZpZXJzRm9yT3JpZ2luID0gbV9jbGllbnRJZGVu
dGlmaWVyc1Blck9yaWdpbi5lbnN1cmUoV1RGTW92ZShjbGllbnRPcmlnaW4pLCBbXSB7CiAgICAg
ICAgIHJldHVybiBDbGllbnRzIHsgfTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAgICAgY2xp
ZW50SWRlbnRpZmllcnNGb3JPcmlnaW4uaWRlbnRpZmllcnMuYXBwZW5kKGNsaWVudElkZW50aWZp
ZXIpOwogICAgIGNsaWVudElkZW50aWZpZXJzRm9yT3JpZ2luLnRlcm1pbmF0ZVNlcnZpY2VXb3Jr
ZXJzVGltZXIgPSBudWxscHRyOwogCisgICAgYXV0byYgY2xpZW50SWRlbnRpZmllcnNGb3JTZWN1
cml0eU9yaWdpbiA9IG1fY2xpZW50c0J5U2VjdXJpdHlPcmlnaW4uZW5zdXJlKFdURk1vdmUoc2Vj
dXJpdHlPcmlnaW4pLCBbXSB7CisgICAgICAgIHJldHVybiBWZWN0b3I8U2VydmljZVdvcmtlckNs
aWVudElkZW50aWZpZXI+IHsgfTsKKyAgICB9KS5pdGVyYXRvci0+dmFsdWU7CisgICAgY2xpZW50
SWRlbnRpZmllcnNGb3JTZWN1cml0eU9yaWdpbi5hcHBlbmQoY2xpZW50SWRlbnRpZmllcik7CisK
ICAgICBpZiAoIWNvbnRyb2xsaW5nU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIp
CiAgICAgICAgIHJldHVybjsKIApAQCAtNzQ5LDYgKzc2MSw4IEBAIHZvaWQgU1dTZXJ2ZXI6OnJl
Z2lzdGVyU2VydmljZVdvcmtlckNsaWVudChDbGllbnRPcmlnaW4mJiBjbGllbnRPcmlnaW4sIFNl
cnZpY2VXCiAKIHZvaWQgU1dTZXJ2ZXI6OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KGNv
bnN0IENsaWVudE9yaWdpbiYgY2xpZW50T3JpZ2luLCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRp
ZmllciBjbGllbnRJZGVudGlmaWVyKQogeworICAgIGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBjbGll
bnRPcmlnaW4uY2xpZW50T3JpZ2luLnNlY3VyaXR5T3JpZ2luKCk7CisKICAgICBib29sIHdhc1Jl
bW92ZWQgPSBtX2NsaWVudHNCeUlkLnJlbW92ZShjbGllbnRJZGVudGlmaWVyKTsKICAgICBBU1NF
UlRfVU5VU0VEKHdhc1JlbW92ZWQsIHdhc1JlbW92ZWQpOwogCkBAIC03NjEsMTYgKzc3NSwzMCBA
QCB2b2lkIFNXU2VydmVyOjp1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChjb25zdCBDbGll
bnRPcmlnaW4mIGNsaWVudE9yaWdpbiwgUwogICAgIH0pOwogICAgIGlmIChjbGllbnRJZGVudGlm
aWVycy5pc0VtcHR5KCkpIHsKICAgICAgICAgQVNTRVJUKCFpdGVyYXRvci0+dmFsdWUudGVybWlu
YXRlU2VydmljZVdvcmtlcnNUaW1lcik7Ci0gICAgICAgIGl0ZXJhdG9yLT52YWx1ZS50ZXJtaW5h
dGVTZXJ2aWNlV29ya2Vyc1RpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxUaW1lcj4oW2NsaWVudE9y
aWdpbiwgdGhpc10geworICAgICAgICBpdGVyYXRvci0+dmFsdWUudGVybWluYXRlU2VydmljZVdv
cmtlcnNUaW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8VGltZXI+KFtjbGllbnRPcmlnaW4sIHNlY3Vy
aXR5T3JpZ2luID0gc2VjdXJpdHlPcmlnaW4uY29weVJlZigpLCB0aGlzXSB7CiAgICAgICAgICAg
ICBmb3IgKGF1dG8mIHdvcmtlciA6IG1fcnVubmluZ09yVGVybWluYXRpbmdXb3JrZXJzLnZhbHVl
cygpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHdvcmtlci0+aXNSdW5uaW5nKCkgJiYgd29ya2Vy
LT5vcmlnaW4oKSA9PSBjbGllbnRPcmlnaW4pCiAgICAgICAgICAgICAgICAgICAgIHRlcm1pbmF0
ZVdvcmtlcih3b3JrZXIpOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFtX2NsaWVu
dHNCeVNlY3VyaXR5T3JpZ2luLmNvbnRhaW5zKHNlY3VyaXR5T3JpZ2luLnB0cigpKSkgeworICAg
ICAgICAgICAgICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uOjpjb25uZWN0aW9uRm9yT3JpZ2luKHNlY3VyaXR5T3JpZ2luKSkKKyAgICAgICAgICAg
ICAgICAgICAgY29ubmVjdGlvbi0+Y29ubmVjdGlvbk1heU5vTG9uZ2VyQmVOZWVkZWQoKTsKKyAg
ICAgICAgICAgIH0KKwogICAgICAgICAgICAgbV9jbGllbnRJZGVudGlmaWVyc1Blck9yaWdpbi5y
ZW1vdmUoY2xpZW50T3JpZ2luKTsKICAgICAgICAgfSk7CiAgICAgICAgIGl0ZXJhdG9yLT52YWx1
ZS50ZXJtaW5hdGVTZXJ2aWNlV29ya2Vyc1RpbWVyLT5zdGFydE9uZVNob3QodGVybWluYXRpb25E
ZWxheSk7CiAgICAgfQogCisgICAgYXV0byBjbGllbnRzQnlTZWN1cml0eU9yaWdpbkl0ZXJhdG9y
ID0gbV9jbGllbnRzQnlTZWN1cml0eU9yaWdpbi5maW5kKHNlY3VyaXR5T3JpZ2luLnB0cigpKTsK
KyAgICBBU1NFUlQoY2xpZW50c0J5U2VjdXJpdHlPcmlnaW5JdGVyYXRvciAhPSBtX2NsaWVudHNC
eVNlY3VyaXR5T3JpZ2luLmVuZCgpKTsKKyAgICBhdXRvJiBjbGllbnRzRm9yU2VjdXJpdHlPcmln
aW4gPSBjbGllbnRzQnlTZWN1cml0eU9yaWdpbkl0ZXJhdG9yLT52YWx1ZTsKKyAgICBjbGllbnRz
Rm9yU2VjdXJpdHlPcmlnaW4ucmVtb3ZlRmlyc3RNYXRjaGluZyhbJl0gKGNvbnN0IGF1dG8mIGlk
ZW50aWZpZXIpIHsKKyAgICAgICAgcmV0dXJuIGNsaWVudElkZW50aWZpZXIgPT0gaWRlbnRpZmll
cjsKKyAgICB9KTsKKyAgICBpZiAoY2xpZW50c0ZvclNlY3VyaXR5T3JpZ2luLmlzRW1wdHkoKSkK
KyAgICAgICAgbV9jbGllbnRzQnlTZWN1cml0eU9yaWdpbi5yZW1vdmUoY2xpZW50c0J5U2VjdXJp
dHlPcmlnaW5JdGVyYXRvcik7CisKICAgICBhdXRvIHJlZ2lzdHJhdGlvbkl0ZXJhdG9yID0gbV9j
bGllbnRUb0NvbnRyb2xsaW5nUmVnaXN0cmF0aW9uLmZpbmQoY2xpZW50SWRlbnRpZmllcik7CiAg
ICAgaWYgKHJlZ2lzdHJhdGlvbkl0ZXJhdG9yID09IG1fY2xpZW50VG9Db250cm9sbGluZ1JlZ2lz
dHJhdGlvbi5lbmQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNzgxLDYgKzgwOSwxMSBAQCB2b2lk
IFNXU2VydmVyOjp1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChjb25zdCBDbGllbnRPcmln
aW4mIGNsaWVudE9yaWdpbiwgUwogICAgIG1fY2xpZW50VG9Db250cm9sbGluZ1JlZ2lzdHJhdGlv
bi5yZW1vdmUocmVnaXN0cmF0aW9uSXRlcmF0b3IpOwogfQogCitib29sIFNXU2VydmVyOjpuZWVk
c1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4mIG9yaWdp
bikgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jbGllbnRzQnlTZWN1cml0eU9yaWdpbi5jb250YWlu
cygmb3JpZ2luKTsKK30KKwogdm9pZCBTV1NlcnZlcjo6cmVzb2x2ZVJlZ2lzdHJhdGlvblJlYWR5
UmVxdWVzdHMoU1dTZXJ2ZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJhdGlvbikKIHsKICAgICBmb3Ig
KGF1dG8qIGNvbm5lY3Rpb24gOiBtX2Nvbm5lY3Rpb25zLnZhbHVlcygpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCmluZGV4IDRjMDZlNWU3
YzU1Li4zMzFkZGZhMGRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXIuaApAQCAtMTQ1LDcgKzE0NSw3IEBAIHB1YmxpYzoKICAgICBzdGQ6
Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiBzZXJ2aWNlV29ya2VyQ2xpZW50V2l0
aE9yaWdpbkJ5SUQoY29uc3QgQ2xpZW50T3JpZ2luJiwgY29uc3QgU2VydmljZVdvcmtlckNsaWVu
dElkZW50aWZpZXImKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBTV1NlcnZlcldvcmtlciog
YWN0aXZlV29ya2VyRnJvbVJlZ2lzdHJhdGlvbklEKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25J
ZGVudGlmaWVyKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbWFya0FsbFdvcmtlcnNBc1Rl
cm1pbmF0ZWQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG1hcmtBbGxXb3JrZXJzRm9yT3Jp
Z2luQXNUZXJtaW5hdGVkKGNvbnN0IFNlY3VyaXR5T3JpZ2luJik7CiAgICAgCiAgICAgQ29ubmVj
dGlvbiogZ2V0Q29ubmVjdGlvbihTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIGlkZW50aWZp
ZXIpIHsgcmV0dXJuIG1fY29ubmVjdGlvbnMuZ2V0KGlkZW50aWZpZXIpOyB9CiAgICAgU1dPcmln
aW5TdG9yZSYgb3JpZ2luU3RvcmUoKSB7IHJldHVybiBtX29yaWdpblN0b3JlOyB9CkBAIC0xNzcs
NiArMTc3LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0T3JpZ2luc1dp
dGhSZWdpc3RyYXRpb25zKEZ1bmN0aW9uPHZvaWQoY29uc3QgSGFzaFNldDxTZWN1cml0eU9yaWdp
bkRhdGE+Jik+JiYpOwogCiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgeyBy
ZXR1cm4gbV9zZXNzaW9uSUQ7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIG5lZWRzU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbkZvck9yaWdpbihTZWN1cml0eU9yaWdpbiYpIGNvbnN0OwogCiBw
cml2YXRlOgogICAgIHZvaWQgcmVnaXN0ZXJDb25uZWN0aW9uKENvbm5lY3Rpb24mKTsKQEAgLTIx
NSw2ICsyMTYsNyBAQCBwcml2YXRlOgogCiAgICAgSGFzaE1hcDxTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgUmVmPFNXU2VydmVyV29ya2VyPj4gbV9ydW5uaW5nT3JUZXJtaW5hdGluZ1dvcmtlcnM7
CiAKKyAgICBIYXNoTWFwPFJlZlB0cjxTZWN1cml0eU9yaWdpbj4sIFZlY3RvcjxTZXJ2aWNlV29y
a2VyQ2xpZW50SWRlbnRpZmllcj4+IG1fY2xpZW50c0J5U2VjdXJpdHlPcmlnaW47CiAgICAgc3Ry
dWN0IENsaWVudHMgewogICAgICAgICBWZWN0b3I8U2VydmljZVdvcmtlckNsaWVudElkZW50aWZp
ZXI+IGlkZW50aWZpZXJzOwogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGltZXI+IHRlcm1pbmF0
ZVNlcnZpY2VXb3JrZXJzVGltZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
aAppbmRleCA0YWMzZDVmN2M2My4uNmYxMDJiYzUyNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uaApAQCAtNzgsNiArNzgsOCBAQCBwdWJsaWM6CiAKICAgICBTZWN1cml0
eU9yaWdpbiYgb3JpZ2luKCkgeyByZXR1cm4gbV9vcmlnaW4uZ2V0KCk7IH0KIAorICAgIHZpcnR1
YWwgdm9pZCBjb25uZWN0aW9uTWF5Tm9Mb25nZXJCZU5lZWRlZCgpID0gMDsKKwogcHJvdGVjdGVk
OgogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bihSZWY8U2VjdXJpdHlPcmlnaW4+JiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0
b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCmluZGV4IGZjY2M4MzdlYzYwLi4xZjU1NTdlMjlk
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9T
dG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5jcHAKQEAgLTI4LDYgKzI4LDggQEAKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAor
I2luY2x1ZGUgIkNoaWxkUHJvY2Vzc01lc3NhZ2VzLmgiCisjaW5jbHVkZSAiU3RvcmFnZVByb2Nl
c3MuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9T
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaD4KQEAgLTEwMiw2ICsxMDQsMTYgQEAgdm9pZCBXZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmRpZEZpbmlzaFNraXBXYWl0aW5nKHVpbnQ2NF90
IGNhbGxiYWNrSUQpCiAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb246OkRpZEZpbmlzaFNraXBXYWl0aW5nIHsgY2FsbGJhY2tJRCB9KTsKIH0KIAordm9pZCBX
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNvbm5lY3Rpb25NYXlOb0xvbmdlckJlTmVl
ZGVkKCkKK3sKKyAgICBTdG9yYWdlUHJvY2Vzczo6c2luZ2xldG9uKCkuc3dDb250ZXh0Q29ubmVj
dGlvbk1heU5vTG9uZ2VyQmVOZWVkZWQoKnRoaXMpOworfQorCit2b2lkIFdlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbjo6dGVybWluYXRlKCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpDaGls
ZFByb2Nlc3M6OlNodXREb3duKCksIDApOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAog
I2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAppbmRleCBkNDZhZjViNzJlOS4uYmIxMGJkZWY5
MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0
b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
LmgKQEAgLTQ3LDYgKzQ3LDggQEAgcHVibGljOgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVy
CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29k
ZXImKSBmaW5hbDsKIAorICAgIHZvaWQgdGVybWluYXRlKCk7CisKIHByaXZhdGU6CiAgICAgZXhw
bGljaXQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKFJlZjxXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbj4mJiwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJik7CiAKQEAgLTY1LDYgKzY3LDggQEAg
cHJpdmF0ZToKICAgICB2b2lkIGNsYWltQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlm
aWVyKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaFNraXBXYWl0aW5nKHVpbnQ2NF90IGNhbGxi
YWNrSUQpIGZpbmFsOwogCisgICAgdm9pZCBjb25uZWN0aW9uTWF5Tm9Mb25nZXJCZU5lZWRlZCgp
IGZpbmFsOworCiAgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9pcGNDb25uZWN0aW9uOwogICAg
IAogfTsgLy8gY2xhc3MgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwCmluZGV4IGUwMWJiYjQz
ZTljLi5mYWYxMmUzNzMwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vz
cy9TdG9yYWdlUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9T
dG9yYWdlUHJvY2Vzcy5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJTdG9yYWdlUHJv
Y2Vzcy5oIgogCiAjaW5jbHVkZSAiQ2hpbGRQcm9jZXNzTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJM
b2dnaW5nLmgiCiAjaW5jbHVkZSAiU3RvcmFnZVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIK
ICNpbmNsdWRlICJTdG9yYWdlUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU3RvcmFnZVBy
b2Nlc3NQcm94eU1lc3NhZ2VzLmgiCkBAIC0xMTEsMzIgKzExMiwyNiBAQCB2b2lkIFN0b3JhZ2VQ
cm9jZXNzOjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiAjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQogdm9pZCBTdG9yYWdlUHJvY2Vzczo6Y29ubmVjdGlvblRvQ29udGV4
dFByb2Nlc3NXYXNDbG9zZWQoUmVmPFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbj4mJiBz
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKQogewotICAgIFJlZjxTZWN1cml0eU9yaWdpbj4gb3Jp
Z2luID0gc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi0+b3JpZ2luKCk7Ci0gICAgYm9vbCBzaG91
bGRSZWxhdW5jaCA9IG5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvck9yaWdpbihvcmln
aW4pOwotCiAgICAgc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi0+Y29ubmVjdGlvbkNsb3NlZCgp
OwotICAgIG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbnMucmVtb3ZlKG9yaWdpbi5wdHIoKSk7
CisgICAgbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9ucy5yZW1vdmUoJnNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24tPm9yaWdpbigpKTsKIAogICAgIGZvciAoYXV0byYgc3dTZXJ2ZXIgOiBtX3N3
U2VydmVycy52YWx1ZXMoKSkKLSAgICAgICAgc3dTZXJ2ZXItPm1hcmtBbGxXb3JrZXJzQXNUZXJt
aW5hdGVkKCk7CisgICAgICAgIHN3U2VydmVyLT5tYXJrQWxsV29ya2Vyc0Zvck9yaWdpbkFzVGVy
bWluYXRlZChzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLT5vcmlnaW4oKSk7CiAKLSAgICBpZiAo
c2hvdWxkUmVsYXVuY2gpCisgICAgUmVmPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBzZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLT5vcmlnaW4oKTsKKyAgICBpZiAobmVlZHNTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uRm9yT3JpZ2luKG9yaWdpbikpIHsKKyAgICAgICAgUkVMRUFTRV9MT0coU2Vy
dmljZVdvcmtlciwgIkNvbm5lY3Rpb24gdG8gc2VydmljZSB3b3JrZXIgcHJvY2VzcyB3YXMgY2xv
c2VkIGJ1dCBpcyBzdGlsbCBuZWVkZWQsIHJlbGF1bmNoaW5nIGl0Iik7CiAgICAgICAgIGNyZWF0
ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ob3JpZ2luLCBzdGQ6Om51bGxvcHQpOworICAgIH0K
IH0KIAotLy8gVGhlIHJ1bGUgaXMgdGhhdCB3ZSBuZWVkIGEgY29udGV4dCBwcm9jZXNzIChhbmQg
YSBjb25uZWN0aW9uIHRvIGl0KSBhcyBsb25nIGFzIHdlIGhhdmUgU1dTZXJ2ZXJDb25uZWN0aW9u
cyB0byByZWd1bGFyIFdlYlByb2Nlc3Nlcy4KIGJvb2wgU3RvcmFnZVByb2Nlc3M6Om5lZWRzU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvck9yaWdpbihTZWN1cml0eU9yaWdpbiYgb3JpZ2luKSBj
b25zdAogewotICAgIGlmIChtX3N3U2VydmVyQ29ubmVjdGlvbnMuaXNFbXB0eSgpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICBhdXRvKiBjb250ZXh0Q29ubmVjdGlvbiA9IG1fc2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbnMuZ2V0KCZvcmlnaW4pOwotCi0gICAgLy8gSWYgdGhlIGxhc3Qg
U1dTZXJ2ZXJDb25uZWN0aW9uIGlzIHRvIHRoZSBjb250ZXh0IHByb2Nlc3MsIHRoZW4gd2Ugbm8g
bG9uZ2VyIG5lZWQgdGhlIGNvbnRleHQgY29ubmVjdGlvbi4KLSAgICBpZiAobV9zd1NlcnZlckNv
bm5lY3Rpb25zLnNpemUoKSA9PSAxICYmIGNvbnRleHRDb25uZWN0aW9uICYmICZtX3N3U2VydmVy
Q29ubmVjdGlvbnMuYmVnaW4oKS0+dmFsdWUtPmlwY0Nvbm5lY3Rpb24oKSA9PSBjb250ZXh0Q29u
bmVjdGlvbi0+aXBjQ29ubmVjdGlvbigpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICBmb3IgKGF1dG8mIHN3U2VydmVyIDogbV9zd1NlcnZlcnMudmFsdWVz
KCkpIHsKKyAgICAgICAgaWYgKHN3U2VydmVyLT5uZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b25Gb3JPcmlnaW4ob3JpZ2luKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAg
ICByZXR1cm4gZmFsc2U7CiB9CiAjZW5kaWYKIApAQCAtNTMxLDYgKzUyNiwxOSBAQCB2b2lkIFN0
b3JhZ2VQcm9jZXNzOjp1bnJlZ2lzdGVyU1dTZXJ2ZXJDb25uZWN0aW9uKFdlYlNXU2VydmVyQ29u
bmVjdGlvbiYgY29ubmVjdAogICAgIG1fc3dTZXJ2ZXJDb25uZWN0aW9ucy5yZW1vdmUoY29ubmVj
dGlvbi5pZGVudGlmaWVyKCkpOwogICAgIHN3T3JpZ2luU3RvcmVGb3JTZXNzaW9uKGNvbm5lY3Rp
b24uc2Vzc2lvbklEKCkpLnVucmVnaXN0ZXJTV1NlcnZlckNvbm5lY3Rpb24oY29ubmVjdGlvbik7
CiB9CisKK3ZvaWQgU3RvcmFnZVByb2Nlc3M6OnN3Q29udGV4dENvbm5lY3Rpb25NYXlOb0xvbmdl
ckJlTmVlZGVkKFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgc2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbikKK3sKKyAgICBhdXRvJiBvcmlnaW4gPSBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLm9yaWdpbigpOworICAgIGlmIChuZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JP
cmlnaW4ob3JpZ2luKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUkVMRUFTRV9MT0coU2Vydmlj
ZVdvcmtlciwgIlNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgaXMgbm8gbG9uZ2VyIG5lZWRlZCwgdGVy
bWluYXRpbmcgaXQiKTsKKyAgICBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLnRlcm1pbmF0ZSgp
OworCisgICAgc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jb25uZWN0aW9uQ2xvc2VkKCk7Cisg
ICAgbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9ucy5yZW1vdmUoJm9yaWdpbik7Cit9CiAjZW5k
aWYKIAogI2lmICFQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3Rv
cmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nl
c3MvU3RvcmFnZVByb2Nlc3MuaAppbmRleCBkNTZlZDQwMDEzNC4uOTRiNThlOGVhMTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmgKQEAgLTEwMCw2
ICsxMDAsOCBAQCBwdWJsaWM6CiAgICAgV2ViQ29yZTo6U1dTZXJ2ZXImIHN3U2VydmVyRm9yU2Vz
c2lvbihQQUw6OlNlc3Npb25JRCk7CiAgICAgdm9pZCByZWdpc3RlclNXU2VydmVyQ29ubmVjdGlv
bihXZWJTV1NlcnZlckNvbm5lY3Rpb24mKTsKICAgICB2b2lkIHVucmVnaXN0ZXJTV1NlcnZlckNv
bm5lY3Rpb24oV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJik7CisKKyAgICB2b2lkIHN3Q29udGV4dENv
bm5lY3Rpb25NYXlOb0xvbmdlckJlTmVlZGVkKFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
biYpOwogI2VuZGlmCiAKICAgICB2b2lkIGRpZFJlY2VpdmVTdG9yYWdlUHJvY2Vzc01lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336309</attachid>
            <date>2018-03-22 13:53:30 -0700</date>
            <delta_ts>2018-03-22 16:25:39 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>183873_terminateServiceWorkerProcesses_wip.patch</filename>
            <type>text/plain</type>
            <size>14807</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5j
cHAKaW5kZXggYTc0YTFhYjAyNDAuLjAwYjgyYjUyZmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApAQCAtNjQxLDEwICs2NDEs
MTUgQEAgdm9pZCBTV1NlcnZlcjo6dGVybWluYXRlV29ya2VySW50ZXJuYWwoU1dTZXJ2ZXJXb3Jr
ZXImIHdvcmtlciwgVGVybWluYXRpb25Nb2RlIG0KICAgICB9OwogfQogCi12b2lkIFNXU2VydmVy
OjptYXJrQWxsV29ya2Vyc0FzVGVybWluYXRlZCgpCit2b2lkIFNXU2VydmVyOjptYXJrQWxsV29y
a2Vyc0Zvck9yaWdpbkFzVGVybWluYXRlZChjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKQog
ewotICAgIHdoaWxlICghbV9ydW5uaW5nT3JUZXJtaW5hdGluZ1dvcmtlcnMuaXNFbXB0eSgpKQot
ICAgICAgICB3b3JrZXJDb250ZXh0VGVybWluYXRlZChtX3J1bm5pbmdPclRlcm1pbmF0aW5nV29y
a2Vycy5iZWdpbigpLT52YWx1ZSk7CisgICAgVmVjdG9yPFNXU2VydmVyV29ya2VyKj4gdGVybWlu
YXRlZFdvcmtlcnM7CisgICAgZm9yIChhdXRvJiB3b3JrZXIgOiBtX3J1bm5pbmdPclRlcm1pbmF0
aW5nV29ya2Vycy52YWx1ZXMoKSkgeworICAgICAgICBpZiAob3JpZ2luLmlzU2FtZVNjaGVtZUhv
c3RQb3J0KHdvcmtlci0+c2VjdXJpdHlPcmlnaW4oKSkpCisgICAgICAgICAgICB0ZXJtaW5hdGVk
V29ya2Vycy5hcHBlbmQod29ya2VyLnB0cigpKTsKKyAgICB9CisgICAgZm9yIChhdXRvJiB0ZXJt
aW5hdGVkV29ya2VyIDogdGVybWluYXRlZFdvcmtlcnMpCisgICAgICAgIHdvcmtlckNvbnRleHRU
ZXJtaW5hdGVkKCp0ZXJtaW5hdGVkV29ya2VyKTsKIH0KIAogdm9pZCBTV1NlcnZlcjo6d29ya2Vy
Q29udGV4dFRlcm1pbmF0ZWQoU1dTZXJ2ZXJXb3JrZXImIHdvcmtlcikKQEAgLTcyOSwxMiArNzM0
LDE5IEBAIHZvaWQgU1dTZXJ2ZXI6OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChDbGllbnRP
cmlnaW4mJiBjbGllbnRPcmlnaW4sIFNlcnZpY2VXCiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2Ns
aWVudHNCeUlkLmFkZChjbGllbnRJZGVudGlmaWVyLCBXVEZNb3ZlKGRhdGEpKTsKICAgICBBU1NF
UlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwogCisgICAgYXV0byBz
ZWN1cml0eU9yaWdpbiA9IGNsaWVudE9yaWdpbi5jbGllbnRPcmlnaW4uc2VjdXJpdHlPcmlnaW4o
KTsKKwogICAgIGF1dG8mIGNsaWVudElkZW50aWZpZXJzRm9yT3JpZ2luID0gbV9jbGllbnRJZGVu
dGlmaWVyc1Blck9yaWdpbi5lbnN1cmUoV1RGTW92ZShjbGllbnRPcmlnaW4pLCBbXSB7CiAgICAg
ICAgIHJldHVybiBDbGllbnRzIHsgfTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAgICAgY2xp
ZW50SWRlbnRpZmllcnNGb3JPcmlnaW4uaWRlbnRpZmllcnMuYXBwZW5kKGNsaWVudElkZW50aWZp
ZXIpOwogICAgIGNsaWVudElkZW50aWZpZXJzRm9yT3JpZ2luLnRlcm1pbmF0ZVNlcnZpY2VXb3Jr
ZXJzVGltZXIgPSBudWxscHRyOwogCisgICAgYXV0byYgY2xpZW50SWRlbnRpZmllcnNGb3JTZWN1
cml0eU9yaWdpbiA9IG1fY2xpZW50c0J5U2VjdXJpdHlPcmlnaW4uZW5zdXJlKFdURk1vdmUoc2Vj
dXJpdHlPcmlnaW4pLCBbXSB7CisgICAgICAgIHJldHVybiBWZWN0b3I8U2VydmljZVdvcmtlckNs
aWVudElkZW50aWZpZXI+IHsgfTsKKyAgICB9KS5pdGVyYXRvci0+dmFsdWU7CisgICAgY2xpZW50
SWRlbnRpZmllcnNGb3JTZWN1cml0eU9yaWdpbi5hcHBlbmQoY2xpZW50SWRlbnRpZmllcik7CisK
ICAgICBpZiAoIWNvbnRyb2xsaW5nU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIp
CiAgICAgICAgIHJldHVybjsKIApAQCAtNzQ5LDYgKzc2MSw4IEBAIHZvaWQgU1dTZXJ2ZXI6OnJl
Z2lzdGVyU2VydmljZVdvcmtlckNsaWVudChDbGllbnRPcmlnaW4mJiBjbGllbnRPcmlnaW4sIFNl
cnZpY2VXCiAKIHZvaWQgU1dTZXJ2ZXI6OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KGNv
bnN0IENsaWVudE9yaWdpbiYgY2xpZW50T3JpZ2luLCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRp
ZmllciBjbGllbnRJZGVudGlmaWVyKQogeworICAgIGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBjbGll
bnRPcmlnaW4uY2xpZW50T3JpZ2luLnNlY3VyaXR5T3JpZ2luKCk7CisKICAgICBib29sIHdhc1Jl
bW92ZWQgPSBtX2NsaWVudHNCeUlkLnJlbW92ZShjbGllbnRJZGVudGlmaWVyKTsKICAgICBBU1NF
UlRfVU5VU0VEKHdhc1JlbW92ZWQsIHdhc1JlbW92ZWQpOwogCkBAIC03NjEsMTYgKzc3NSwzMCBA
QCB2b2lkIFNXU2VydmVyOjp1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChjb25zdCBDbGll
bnRPcmlnaW4mIGNsaWVudE9yaWdpbiwgUwogICAgIH0pOwogICAgIGlmIChjbGllbnRJZGVudGlm
aWVycy5pc0VtcHR5KCkpIHsKICAgICAgICAgQVNTRVJUKCFpdGVyYXRvci0+dmFsdWUudGVybWlu
YXRlU2VydmljZVdvcmtlcnNUaW1lcik7Ci0gICAgICAgIGl0ZXJhdG9yLT52YWx1ZS50ZXJtaW5h
dGVTZXJ2aWNlV29ya2Vyc1RpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxUaW1lcj4oW2NsaWVudE9y
aWdpbiwgdGhpc10geworICAgICAgICBpdGVyYXRvci0+dmFsdWUudGVybWluYXRlU2VydmljZVdv
cmtlcnNUaW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8VGltZXI+KFtjbGllbnRPcmlnaW4sIHNlY3Vy
aXR5T3JpZ2luID0gc2VjdXJpdHlPcmlnaW4uY29weVJlZigpLCB0aGlzXSB7CiAgICAgICAgICAg
ICBmb3IgKGF1dG8mIHdvcmtlciA6IG1fcnVubmluZ09yVGVybWluYXRpbmdXb3JrZXJzLnZhbHVl
cygpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHdvcmtlci0+aXNSdW5uaW5nKCkgJiYgd29ya2Vy
LT5vcmlnaW4oKSA9PSBjbGllbnRPcmlnaW4pCiAgICAgICAgICAgICAgICAgICAgIHRlcm1pbmF0
ZVdvcmtlcih3b3JrZXIpOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFtX2NsaWVu
dHNCeVNlY3VyaXR5T3JpZ2luLmNvbnRhaW5zKHNlY3VyaXR5T3JpZ2luLnB0cigpKSkgeworICAg
ICAgICAgICAgICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uOjpjb25uZWN0aW9uRm9yT3JpZ2luKHNlY3VyaXR5T3JpZ2luKSkKKyAgICAgICAgICAg
ICAgICAgICAgY29ubmVjdGlvbi0+Y29ubmVjdGlvbk1heU5vTG9uZ2VyQmVOZWVkZWQoKTsKKyAg
ICAgICAgICAgIH0KKwogICAgICAgICAgICAgbV9jbGllbnRJZGVudGlmaWVyc1Blck9yaWdpbi5y
ZW1vdmUoY2xpZW50T3JpZ2luKTsKICAgICAgICAgfSk7CiAgICAgICAgIGl0ZXJhdG9yLT52YWx1
ZS50ZXJtaW5hdGVTZXJ2aWNlV29ya2Vyc1RpbWVyLT5zdGFydE9uZVNob3QodGVybWluYXRpb25E
ZWxheSk7CiAgICAgfQogCisgICAgYXV0byBjbGllbnRzQnlTZWN1cml0eU9yaWdpbkl0ZXJhdG9y
ID0gbV9jbGllbnRzQnlTZWN1cml0eU9yaWdpbi5maW5kKHNlY3VyaXR5T3JpZ2luLnB0cigpKTsK
KyAgICBBU1NFUlQoY2xpZW50c0J5U2VjdXJpdHlPcmlnaW5JdGVyYXRvciAhPSBtX2NsaWVudHNC
eVNlY3VyaXR5T3JpZ2luLmVuZCgpKTsKKyAgICBhdXRvJiBjbGllbnRzRm9yU2VjdXJpdHlPcmln
aW4gPSBjbGllbnRzQnlTZWN1cml0eU9yaWdpbkl0ZXJhdG9yLT52YWx1ZTsKKyAgICBjbGllbnRz
Rm9yU2VjdXJpdHlPcmlnaW4ucmVtb3ZlRmlyc3RNYXRjaGluZyhbJl0gKGNvbnN0IGF1dG8mIGlk
ZW50aWZpZXIpIHsKKyAgICAgICAgcmV0dXJuIGNsaWVudElkZW50aWZpZXIgPT0gaWRlbnRpZmll
cjsKKyAgICB9KTsKKyAgICBpZiAoY2xpZW50c0ZvclNlY3VyaXR5T3JpZ2luLmlzRW1wdHkoKSkK
KyAgICAgICAgbV9jbGllbnRzQnlTZWN1cml0eU9yaWdpbi5yZW1vdmUoY2xpZW50c0J5U2VjdXJp
dHlPcmlnaW5JdGVyYXRvcik7CisKICAgICBhdXRvIHJlZ2lzdHJhdGlvbkl0ZXJhdG9yID0gbV9j
bGllbnRUb0NvbnRyb2xsaW5nUmVnaXN0cmF0aW9uLmZpbmQoY2xpZW50SWRlbnRpZmllcik7CiAg
ICAgaWYgKHJlZ2lzdHJhdGlvbkl0ZXJhdG9yID09IG1fY2xpZW50VG9Db250cm9sbGluZ1JlZ2lz
dHJhdGlvbi5lbmQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNzgxLDYgKzgwOSwxMSBAQCB2b2lk
IFNXU2VydmVyOjp1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChjb25zdCBDbGllbnRPcmln
aW4mIGNsaWVudE9yaWdpbiwgUwogICAgIG1fY2xpZW50VG9Db250cm9sbGluZ1JlZ2lzdHJhdGlv
bi5yZW1vdmUocmVnaXN0cmF0aW9uSXRlcmF0b3IpOwogfQogCitib29sIFNXU2VydmVyOjpuZWVk
c1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4mIG9yaWdp
bikgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jbGllbnRzQnlTZWN1cml0eU9yaWdpbi5jb250YWlu
cygmb3JpZ2luKTsKK30KKwogdm9pZCBTV1NlcnZlcjo6cmVzb2x2ZVJlZ2lzdHJhdGlvblJlYWR5
UmVxdWVzdHMoU1dTZXJ2ZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJhdGlvbikKIHsKICAgICBmb3Ig
KGF1dG8qIGNvbm5lY3Rpb24gOiBtX2Nvbm5lY3Rpb25zLnZhbHVlcygpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCmluZGV4IDRjMDZlNWU3
YzU1Li4zMzFkZGZhMGRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXIuaApAQCAtMTQ1LDcgKzE0NSw3IEBAIHB1YmxpYzoKICAgICBzdGQ6
Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiBzZXJ2aWNlV29ya2VyQ2xpZW50V2l0
aE9yaWdpbkJ5SUQoY29uc3QgQ2xpZW50T3JpZ2luJiwgY29uc3QgU2VydmljZVdvcmtlckNsaWVu
dElkZW50aWZpZXImKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBTV1NlcnZlcldvcmtlciog
YWN0aXZlV29ya2VyRnJvbVJlZ2lzdHJhdGlvbklEKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25J
ZGVudGlmaWVyKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbWFya0FsbFdvcmtlcnNBc1Rl
cm1pbmF0ZWQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG1hcmtBbGxXb3JrZXJzRm9yT3Jp
Z2luQXNUZXJtaW5hdGVkKGNvbnN0IFNlY3VyaXR5T3JpZ2luJik7CiAgICAgCiAgICAgQ29ubmVj
dGlvbiogZ2V0Q29ubmVjdGlvbihTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIGlkZW50aWZp
ZXIpIHsgcmV0dXJuIG1fY29ubmVjdGlvbnMuZ2V0KGlkZW50aWZpZXIpOyB9CiAgICAgU1dPcmln
aW5TdG9yZSYgb3JpZ2luU3RvcmUoKSB7IHJldHVybiBtX29yaWdpblN0b3JlOyB9CkBAIC0xNzcs
NiArMTc3LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0T3JpZ2luc1dp
dGhSZWdpc3RyYXRpb25zKEZ1bmN0aW9uPHZvaWQoY29uc3QgSGFzaFNldDxTZWN1cml0eU9yaWdp
bkRhdGE+Jik+JiYpOwogCiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgeyBy
ZXR1cm4gbV9zZXNzaW9uSUQ7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIG5lZWRzU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbkZvck9yaWdpbihTZWN1cml0eU9yaWdpbiYpIGNvbnN0OwogCiBw
cml2YXRlOgogICAgIHZvaWQgcmVnaXN0ZXJDb25uZWN0aW9uKENvbm5lY3Rpb24mKTsKQEAgLTIx
NSw2ICsyMTYsNyBAQCBwcml2YXRlOgogCiAgICAgSGFzaE1hcDxTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgUmVmPFNXU2VydmVyV29ya2VyPj4gbV9ydW5uaW5nT3JUZXJtaW5hdGluZ1dvcmtlcnM7
CiAKKyAgICBIYXNoTWFwPFJlZlB0cjxTZWN1cml0eU9yaWdpbj4sIFZlY3RvcjxTZXJ2aWNlV29y
a2VyQ2xpZW50SWRlbnRpZmllcj4+IG1fY2xpZW50c0J5U2VjdXJpdHlPcmlnaW47CiAgICAgc3Ry
dWN0IENsaWVudHMgewogICAgICAgICBWZWN0b3I8U2VydmljZVdvcmtlckNsaWVudElkZW50aWZp
ZXI+IGlkZW50aWZpZXJzOwogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGltZXI+IHRlcm1pbmF0
ZVNlcnZpY2VXb3JrZXJzVGltZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
aAppbmRleCA0YWMzZDVmN2M2My4uNmYxMDJiYzUyNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uaApAQCAtNzgsNiArNzgsOCBAQCBwdWJsaWM6CiAKICAgICBTZWN1cml0
eU9yaWdpbiYgb3JpZ2luKCkgeyByZXR1cm4gbV9vcmlnaW4uZ2V0KCk7IH0KIAorICAgIHZpcnR1
YWwgdm9pZCBjb25uZWN0aW9uTWF5Tm9Mb25nZXJCZU5lZWRlZCgpID0gMDsKKwogcHJvdGVjdGVk
OgogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bihSZWY8U2VjdXJpdHlPcmlnaW4+JiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0
b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCmluZGV4IGZjY2M4MzdlYzYwLi4xNDg1MGFjZGY2
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9T
dG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAor
I2luY2x1ZGUgIlN0b3JhZ2VQcm9jZXNzLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgiCiAjaW5jbHVkZSAiV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmg+CkBAIC0xMDIs
NiArMTAzLDE2IEBAIHZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpkaWRGaW5p
c2hTa2lwV2FpdGluZyh1aW50NjRfdCBjYWxsYmFja0lEKQogICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpEaWRGaW5pc2hTa2lwV2FpdGluZyB7IGNhbGxi
YWNrSUQgfSk7CiB9CiAKK3ZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjb25u
ZWN0aW9uTWF5Tm9Mb25nZXJCZU5lZWRlZCgpCit7CisgICAgU3RvcmFnZVByb2Nlc3M6OnNpbmds
ZXRvbigpLnN3Q29udGV4dENvbm5lY3Rpb25NYXlOb0xvbmdlckJlTmVlZGVkKCp0aGlzKTsKK30K
Kwordm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnRlcm1pbmF0ZSgpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlRlcm1pbmF0
ZVByb2Nlc3MoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291
cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5oCmluZGV4IGQ0NmFmNWI3MmU5Li5iYjEwYmRlZjkyYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAtNDcsNiAr
NDcsOCBAQCBwdWJsaWM6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwog
CisgICAgdm9pZCB0ZXJtaW5hdGUoKTsKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24oUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmLCBS
ZWY8SVBDOjpDb25uZWN0aW9uPiYmKTsKIApAQCAtNjUsNiArNjcsOCBAQCBwcml2YXRlOgogICAg
IHZvaWQgY2xhaW1Db21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIpIGZpbmFsOwog
ICAgIHZvaWQgZGlkRmluaXNoU2tpcFdhaXRpbmcodWludDY0X3QgY2FsbGJhY2tJRCkgZmluYWw7
CiAKKyAgICB2b2lkIGNvbm5lY3Rpb25NYXlOb0xvbmdlckJlTmVlZGVkKCkgZmluYWw7CisKICAg
ICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2lwY0Nvbm5lY3Rpb247CiAgICAgCiB9OyAvLyBjbGFz
cyBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9TdG9y
YWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5jcHAKaW5kZXggZTAxYmJiNDNlOWMuLmZhZjEyZTM3
MzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9j
ZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNz
LmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIlN0b3JhZ2VQcm9jZXNzLmgiCiAKICNp
bmNsdWRlICJDaGlsZFByb2Nlc3NNZXNzYWdlcy5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNp
bmNsdWRlICJTdG9yYWdlUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIlN0
b3JhZ2VQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJTdG9yYWdlUHJvY2Vzc1Byb3h5TWVz
c2FnZXMuaCIKQEAgLTExMSwzMiArMTEyLDI2IEBAIHZvaWQgU3RvcmFnZVByb2Nlc3M6OmRpZENs
b3NlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCiB2b2lkIFN0b3JhZ2VQcm9jZXNzOjpjb25uZWN0aW9uVG9Db250ZXh0UHJvY2Vzc1dhc0Ns
b3NlZChSZWY8V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uPiYmIHNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24pCiB7Ci0gICAgUmVmPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBzZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLT5vcmlnaW4oKTsKLSAgICBib29sIHNob3VsZFJlbGF1bmNoID0g
bmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2luKG9yaWdpbik7Ci0KICAgICBz
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLT5jb25uZWN0aW9uQ2xvc2VkKCk7Ci0gICAgbV9zZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9ucy5yZW1vdmUob3JpZ2luLnB0cigpKTsKKyAgICBtX3NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb25zLnJlbW92ZSgmc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi0+
b3JpZ2luKCkpOwogCiAgICAgZm9yIChhdXRvJiBzd1NlcnZlciA6IG1fc3dTZXJ2ZXJzLnZhbHVl
cygpKQotICAgICAgICBzd1NlcnZlci0+bWFya0FsbFdvcmtlcnNBc1Rlcm1pbmF0ZWQoKTsKKyAg
ICAgICAgc3dTZXJ2ZXItPm1hcmtBbGxXb3JrZXJzRm9yT3JpZ2luQXNUZXJtaW5hdGVkKHNlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24tPm9yaWdpbigpKTsKIAotICAgIGlmIChzaG91bGRSZWxhdW5j
aCkKKyAgICBSZWY8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IHNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24tPm9yaWdpbigpOworICAgIGlmIChuZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25G
b3JPcmlnaW4ob3JpZ2luKSkgeworICAgICAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAi
Q29ubmVjdGlvbiB0byBzZXJ2aWNlIHdvcmtlciBwcm9jZXNzIHdhcyBjbG9zZWQgYnV0IGlzIHN0
aWxsIG5lZWRlZCwgcmVsYXVuY2hpbmcgaXQiKTsKICAgICAgICAgY3JlYXRlU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbihvcmlnaW4sIHN0ZDo6bnVsbG9wdCk7CisgICAgfQogfQogCi0vLyBUaGUg
cnVsZSBpcyB0aGF0IHdlIG5lZWQgYSBjb250ZXh0IHByb2Nlc3MgKGFuZCBhIGNvbm5lY3Rpb24g
dG8gaXQpIGFzIGxvbmcgYXMgd2UgaGF2ZSBTV1NlcnZlckNvbm5lY3Rpb25zIHRvIHJlZ3VsYXIg
V2ViUHJvY2Vzc2VzLgogYm9vbCBTdG9yYWdlUHJvY2Vzczo6bmVlZHNTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uRm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pIGNvbnN0CiB7Ci0gICAg
aWYgKG1fc3dTZXJ2ZXJDb25uZWN0aW9ucy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIGF1dG8qIGNvbnRleHRDb25uZWN0aW9uID0gbV9zZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9ucy5nZXQoJm9yaWdpbik7Ci0KLSAgICAvLyBJZiB0aGUgbGFzdCBTV1NlcnZlckNvbm5l
Y3Rpb24gaXMgdG8gdGhlIGNvbnRleHQgcHJvY2VzcywgdGhlbiB3ZSBubyBsb25nZXIgbmVlZCB0
aGUgY29udGV4dCBjb25uZWN0aW9uLgotICAgIGlmIChtX3N3U2VydmVyQ29ubmVjdGlvbnMuc2l6
ZSgpID09IDEgJiYgY29udGV4dENvbm5lY3Rpb24gJiYgJm1fc3dTZXJ2ZXJDb25uZWN0aW9ucy5i
ZWdpbigpLT52YWx1ZS0+aXBjQ29ubmVjdGlvbigpID09IGNvbnRleHRDb25uZWN0aW9uLT5pcGND
b25uZWN0aW9uKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiB0cnVlOwor
ICAgIGZvciAoYXV0byYgc3dTZXJ2ZXIgOiBtX3N3U2VydmVycy52YWx1ZXMoKSkgeworICAgICAg
ICBpZiAoc3dTZXJ2ZXItPm5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvck9yaWdpbihv
cmlnaW4pKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxz
ZTsKIH0KICNlbmRpZgogCkBAIC01MzEsNiArNTI2LDE5IEBAIHZvaWQgU3RvcmFnZVByb2Nlc3M6
OnVucmVnaXN0ZXJTV1NlcnZlckNvbm5lY3Rpb24oV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJiBjb25u
ZWN0CiAgICAgbV9zd1NlcnZlckNvbm5lY3Rpb25zLnJlbW92ZShjb25uZWN0aW9uLmlkZW50aWZp
ZXIoKSk7CiAgICAgc3dPcmlnaW5TdG9yZUZvclNlc3Npb24oY29ubmVjdGlvbi5zZXNzaW9uSUQo
KSkudW5yZWdpc3RlclNXU2VydmVyQ29ubmVjdGlvbihjb25uZWN0aW9uKTsKIH0KKwordm9pZCBT
dG9yYWdlUHJvY2Vzczo6c3dDb250ZXh0Q29ubmVjdGlvbk1heU5vTG9uZ2VyQmVOZWVkZWQoV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKQor
eworICAgIGF1dG8mIG9yaWdpbiA9IHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ub3JpZ2luKCk7
CisgICAgaWYgKG5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvck9yaWdpbihvcmlnaW4p
KQorICAgICAgICByZXR1cm47CisKKyAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiU2Vy
dmljZSB3b3JrZXIgcHJvY2VzcyBpcyBubyBsb25nZXIgbmVlZGVkLCB0ZXJtaW5hdGluZyBpdCIp
OworICAgIHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24udGVybWluYXRlKCk7CisKKyAgICBzZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNvbm5lY3Rpb25DbG9zZWQoKTsKKyAgICBtX3NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb25zLnJlbW92ZSgmb3JpZ2luKTsKK30KICNlbmRpZgogCiAjaWYgIVBM
QVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9T
dG9yYWdlUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJv
Y2Vzcy5oCmluZGV4IGQ1NmVkNDAwMTM0Li45NGI1OGU4ZWExMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuaApAQCAtMTAwLDYgKzEwMCw4IEBAIHB1
YmxpYzoKICAgICBXZWJDb3JlOjpTV1NlcnZlciYgc3dTZXJ2ZXJGb3JTZXNzaW9uKFBBTDo6U2Vz
c2lvbklEKTsKICAgICB2b2lkIHJlZ2lzdGVyU1dTZXJ2ZXJDb25uZWN0aW9uKFdlYlNXU2VydmVy
Q29ubmVjdGlvbiYpOwogICAgIHZvaWQgdW5yZWdpc3RlclNXU2VydmVyQ29ubmVjdGlvbihXZWJT
V1NlcnZlckNvbm5lY3Rpb24mKTsKKworICAgIHZvaWQgc3dDb250ZXh0Q29ubmVjdGlvbk1heU5v
TG9uZ2VyQmVOZWVkZWQoV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJik7CiAjZW5kaWYK
IAogICAgIHZvaWQgZGlkUmVjZWl2ZVN0b3JhZ2VQcm9jZXNzTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcApp
bmRleCAzMGJjOTUwNTg4Yi4uOTQ3M2VlZjRkNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbi5jcHAKQEAgLTMyNyw2ICszMjcsMTIgQEAgdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbjo6ZGlkRmluaXNoU2tpcFdhaXRpbmcodWludDY0X3QgY2FsbGJhY2tJRCkKICAg
ICAgICAgY2FsbGJhY2soKTsKIH0KIAorTk9fUkVUVVJOIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb246OnRlcm1pbmF0ZVByb2Nlc3MoKQoreworICAgIFJFTEVBU0VfTE9HKFNlcnZp
Y2VXb3JrZXIsICJTZXJ2aWNlIHdvcmtlciBwcm9jZXNzIGlzIGV4aXRpbmcgYmVjYXVzZSBpdCBp
cyBubyBsb25nZXIgbmVlZGVkIik7CisgICAgX2V4aXQoRVhJVF9TVUNDRVNTKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKaW5kZXggM2NiN2M2OGU4ZmYuLjhlODIwN2Q2
OWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKQEAgLTg3LDYgKzg3LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGNsYWltQ29tcGxldGVkKHVpbnQ2NF90IGNsYWltUmVxdWVzdElk
ZW50aWZpZXIpOwogICAgIHZvaWQgZGlkRmluaXNoU2tpcFdhaXRpbmcodWludDY0X3QgY2FsbGJh
Y2tJRCk7CiAgICAgdm9pZCBzZXRVc2VyQWdlbnQoU3RyaW5nJiYgdXNlckFnZW50KTsKKyAgICB2
b2lkIHRlcm1pbmF0ZVByb2Nlc3MoKTsKIAogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29u
bmVjdGlvblRvU3RvcmFnZVByb2Nlc3M7CiAgICAgdWludDY0X3QgbV9wYWdlR3JvdXBJRDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5kZXggNzM3
YzQxZmVkMGYuLjI3YmVlMzIzZWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMzYsNiArMzYsNyBAQCBtZXNzYWdlcyAtPiBXZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbiB7CiAgICAgRGlkRmluaXNoU2tpcFdhaXRpbmcodWludDY0
X3QgY2FsbGJhY2tJRCkKICAgICBTZXRVc2VyQWdlbnQoU3RyaW5nIHVzZXJBZ2VudCkKICAgICBV
cGRhdGVQcmVmZXJlbmNlc1N0b3JlKHN0cnVjdCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmUg
c3RvcmUpCisgICAgVGVybWluYXRlUHJvY2VzcygpCiB9CiAKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336324</attachid>
            <date>2018-03-22 16:25:39 -0700</date>
            <delta_ts>2018-03-22 16:58:53 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>183873_terminateServiceWorkerProcesses_wip.patch</filename>
            <type>text/plain</type>
            <size>17312</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5j
cHAKaW5kZXggYTc0YTFhYjAyNDAuLjAwYjgyYjUyZmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApAQCAtNjQxLDEwICs2NDEs
MTUgQEAgdm9pZCBTV1NlcnZlcjo6dGVybWluYXRlV29ya2VySW50ZXJuYWwoU1dTZXJ2ZXJXb3Jr
ZXImIHdvcmtlciwgVGVybWluYXRpb25Nb2RlIG0KICAgICB9OwogfQogCi12b2lkIFNXU2VydmVy
OjptYXJrQWxsV29ya2Vyc0FzVGVybWluYXRlZCgpCit2b2lkIFNXU2VydmVyOjptYXJrQWxsV29y
a2Vyc0Zvck9yaWdpbkFzVGVybWluYXRlZChjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKQog
ewotICAgIHdoaWxlICghbV9ydW5uaW5nT3JUZXJtaW5hdGluZ1dvcmtlcnMuaXNFbXB0eSgpKQot
ICAgICAgICB3b3JrZXJDb250ZXh0VGVybWluYXRlZChtX3J1bm5pbmdPclRlcm1pbmF0aW5nV29y
a2Vycy5iZWdpbigpLT52YWx1ZSk7CisgICAgVmVjdG9yPFNXU2VydmVyV29ya2VyKj4gdGVybWlu
YXRlZFdvcmtlcnM7CisgICAgZm9yIChhdXRvJiB3b3JrZXIgOiBtX3J1bm5pbmdPclRlcm1pbmF0
aW5nV29ya2Vycy52YWx1ZXMoKSkgeworICAgICAgICBpZiAob3JpZ2luLmlzU2FtZVNjaGVtZUhv
c3RQb3J0KHdvcmtlci0+c2VjdXJpdHlPcmlnaW4oKSkpCisgICAgICAgICAgICB0ZXJtaW5hdGVk
V29ya2Vycy5hcHBlbmQod29ya2VyLnB0cigpKTsKKyAgICB9CisgICAgZm9yIChhdXRvJiB0ZXJt
aW5hdGVkV29ya2VyIDogdGVybWluYXRlZFdvcmtlcnMpCisgICAgICAgIHdvcmtlckNvbnRleHRU
ZXJtaW5hdGVkKCp0ZXJtaW5hdGVkV29ya2VyKTsKIH0KIAogdm9pZCBTV1NlcnZlcjo6d29ya2Vy
Q29udGV4dFRlcm1pbmF0ZWQoU1dTZXJ2ZXJXb3JrZXImIHdvcmtlcikKQEAgLTcyOSwxMiArNzM0
LDE5IEBAIHZvaWQgU1dTZXJ2ZXI6OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChDbGllbnRP
cmlnaW4mJiBjbGllbnRPcmlnaW4sIFNlcnZpY2VXCiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2Ns
aWVudHNCeUlkLmFkZChjbGllbnRJZGVudGlmaWVyLCBXVEZNb3ZlKGRhdGEpKTsKICAgICBBU1NF
UlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwogCisgICAgYXV0byBz
ZWN1cml0eU9yaWdpbiA9IGNsaWVudE9yaWdpbi5jbGllbnRPcmlnaW4uc2VjdXJpdHlPcmlnaW4o
KTsKKwogICAgIGF1dG8mIGNsaWVudElkZW50aWZpZXJzRm9yT3JpZ2luID0gbV9jbGllbnRJZGVu
dGlmaWVyc1Blck9yaWdpbi5lbnN1cmUoV1RGTW92ZShjbGllbnRPcmlnaW4pLCBbXSB7CiAgICAg
ICAgIHJldHVybiBDbGllbnRzIHsgfTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAgICAgY2xp
ZW50SWRlbnRpZmllcnNGb3JPcmlnaW4uaWRlbnRpZmllcnMuYXBwZW5kKGNsaWVudElkZW50aWZp
ZXIpOwogICAgIGNsaWVudElkZW50aWZpZXJzRm9yT3JpZ2luLnRlcm1pbmF0ZVNlcnZpY2VXb3Jr
ZXJzVGltZXIgPSBudWxscHRyOwogCisgICAgYXV0byYgY2xpZW50SWRlbnRpZmllcnNGb3JTZWN1
cml0eU9yaWdpbiA9IG1fY2xpZW50c0J5U2VjdXJpdHlPcmlnaW4uZW5zdXJlKFdURk1vdmUoc2Vj
dXJpdHlPcmlnaW4pLCBbXSB7CisgICAgICAgIHJldHVybiBWZWN0b3I8U2VydmljZVdvcmtlckNs
aWVudElkZW50aWZpZXI+IHsgfTsKKyAgICB9KS5pdGVyYXRvci0+dmFsdWU7CisgICAgY2xpZW50
SWRlbnRpZmllcnNGb3JTZWN1cml0eU9yaWdpbi5hcHBlbmQoY2xpZW50SWRlbnRpZmllcik7CisK
ICAgICBpZiAoIWNvbnRyb2xsaW5nU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIp
CiAgICAgICAgIHJldHVybjsKIApAQCAtNzQ5LDYgKzc2MSw4IEBAIHZvaWQgU1dTZXJ2ZXI6OnJl
Z2lzdGVyU2VydmljZVdvcmtlckNsaWVudChDbGllbnRPcmlnaW4mJiBjbGllbnRPcmlnaW4sIFNl
cnZpY2VXCiAKIHZvaWQgU1dTZXJ2ZXI6OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KGNv
bnN0IENsaWVudE9yaWdpbiYgY2xpZW50T3JpZ2luLCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRp
ZmllciBjbGllbnRJZGVudGlmaWVyKQogeworICAgIGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBjbGll
bnRPcmlnaW4uY2xpZW50T3JpZ2luLnNlY3VyaXR5T3JpZ2luKCk7CisKICAgICBib29sIHdhc1Jl
bW92ZWQgPSBtX2NsaWVudHNCeUlkLnJlbW92ZShjbGllbnRJZGVudGlmaWVyKTsKICAgICBBU1NF
UlRfVU5VU0VEKHdhc1JlbW92ZWQsIHdhc1JlbW92ZWQpOwogCkBAIC03NjEsMTYgKzc3NSwzMCBA
QCB2b2lkIFNXU2VydmVyOjp1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChjb25zdCBDbGll
bnRPcmlnaW4mIGNsaWVudE9yaWdpbiwgUwogICAgIH0pOwogICAgIGlmIChjbGllbnRJZGVudGlm
aWVycy5pc0VtcHR5KCkpIHsKICAgICAgICAgQVNTRVJUKCFpdGVyYXRvci0+dmFsdWUudGVybWlu
YXRlU2VydmljZVdvcmtlcnNUaW1lcik7Ci0gICAgICAgIGl0ZXJhdG9yLT52YWx1ZS50ZXJtaW5h
dGVTZXJ2aWNlV29ya2Vyc1RpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxUaW1lcj4oW2NsaWVudE9y
aWdpbiwgdGhpc10geworICAgICAgICBpdGVyYXRvci0+dmFsdWUudGVybWluYXRlU2VydmljZVdv
cmtlcnNUaW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8VGltZXI+KFtjbGllbnRPcmlnaW4sIHNlY3Vy
aXR5T3JpZ2luID0gc2VjdXJpdHlPcmlnaW4uY29weVJlZigpLCB0aGlzXSB7CiAgICAgICAgICAg
ICBmb3IgKGF1dG8mIHdvcmtlciA6IG1fcnVubmluZ09yVGVybWluYXRpbmdXb3JrZXJzLnZhbHVl
cygpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHdvcmtlci0+aXNSdW5uaW5nKCkgJiYgd29ya2Vy
LT5vcmlnaW4oKSA9PSBjbGllbnRPcmlnaW4pCiAgICAgICAgICAgICAgICAgICAgIHRlcm1pbmF0
ZVdvcmtlcih3b3JrZXIpOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFtX2NsaWVu
dHNCeVNlY3VyaXR5T3JpZ2luLmNvbnRhaW5zKHNlY3VyaXR5T3JpZ2luLnB0cigpKSkgeworICAg
ICAgICAgICAgICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uOjpjb25uZWN0aW9uRm9yT3JpZ2luKHNlY3VyaXR5T3JpZ2luKSkKKyAgICAgICAgICAg
ICAgICAgICAgY29ubmVjdGlvbi0+Y29ubmVjdGlvbk1heU5vTG9uZ2VyQmVOZWVkZWQoKTsKKyAg
ICAgICAgICAgIH0KKwogICAgICAgICAgICAgbV9jbGllbnRJZGVudGlmaWVyc1Blck9yaWdpbi5y
ZW1vdmUoY2xpZW50T3JpZ2luKTsKICAgICAgICAgfSk7CiAgICAgICAgIGl0ZXJhdG9yLT52YWx1
ZS50ZXJtaW5hdGVTZXJ2aWNlV29ya2Vyc1RpbWVyLT5zdGFydE9uZVNob3QodGVybWluYXRpb25E
ZWxheSk7CiAgICAgfQogCisgICAgYXV0byBjbGllbnRzQnlTZWN1cml0eU9yaWdpbkl0ZXJhdG9y
ID0gbV9jbGllbnRzQnlTZWN1cml0eU9yaWdpbi5maW5kKHNlY3VyaXR5T3JpZ2luLnB0cigpKTsK
KyAgICBBU1NFUlQoY2xpZW50c0J5U2VjdXJpdHlPcmlnaW5JdGVyYXRvciAhPSBtX2NsaWVudHNC
eVNlY3VyaXR5T3JpZ2luLmVuZCgpKTsKKyAgICBhdXRvJiBjbGllbnRzRm9yU2VjdXJpdHlPcmln
aW4gPSBjbGllbnRzQnlTZWN1cml0eU9yaWdpbkl0ZXJhdG9yLT52YWx1ZTsKKyAgICBjbGllbnRz
Rm9yU2VjdXJpdHlPcmlnaW4ucmVtb3ZlRmlyc3RNYXRjaGluZyhbJl0gKGNvbnN0IGF1dG8mIGlk
ZW50aWZpZXIpIHsKKyAgICAgICAgcmV0dXJuIGNsaWVudElkZW50aWZpZXIgPT0gaWRlbnRpZmll
cjsKKyAgICB9KTsKKyAgICBpZiAoY2xpZW50c0ZvclNlY3VyaXR5T3JpZ2luLmlzRW1wdHkoKSkK
KyAgICAgICAgbV9jbGllbnRzQnlTZWN1cml0eU9yaWdpbi5yZW1vdmUoY2xpZW50c0J5U2VjdXJp
dHlPcmlnaW5JdGVyYXRvcik7CisKICAgICBhdXRvIHJlZ2lzdHJhdGlvbkl0ZXJhdG9yID0gbV9j
bGllbnRUb0NvbnRyb2xsaW5nUmVnaXN0cmF0aW9uLmZpbmQoY2xpZW50SWRlbnRpZmllcik7CiAg
ICAgaWYgKHJlZ2lzdHJhdGlvbkl0ZXJhdG9yID09IG1fY2xpZW50VG9Db250cm9sbGluZ1JlZ2lz
dHJhdGlvbi5lbmQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNzgxLDYgKzgwOSwxMSBAQCB2b2lk
IFNXU2VydmVyOjp1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChjb25zdCBDbGllbnRPcmln
aW4mIGNsaWVudE9yaWdpbiwgUwogICAgIG1fY2xpZW50VG9Db250cm9sbGluZ1JlZ2lzdHJhdGlv
bi5yZW1vdmUocmVnaXN0cmF0aW9uSXRlcmF0b3IpOwogfQogCitib29sIFNXU2VydmVyOjpuZWVk
c1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4mIG9yaWdp
bikgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jbGllbnRzQnlTZWN1cml0eU9yaWdpbi5jb250YWlu
cygmb3JpZ2luKTsKK30KKwogdm9pZCBTV1NlcnZlcjo6cmVzb2x2ZVJlZ2lzdHJhdGlvblJlYWR5
UmVxdWVzdHMoU1dTZXJ2ZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJhdGlvbikKIHsKICAgICBmb3Ig
KGF1dG8qIGNvbm5lY3Rpb24gOiBtX2Nvbm5lY3Rpb25zLnZhbHVlcygpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCmluZGV4IDRjMDZlNWU3
YzU1Li4zMzFkZGZhMGRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXIuaApAQCAtMTQ1LDcgKzE0NSw3IEBAIHB1YmxpYzoKICAgICBzdGQ6
Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiBzZXJ2aWNlV29ya2VyQ2xpZW50V2l0
aE9yaWdpbkJ5SUQoY29uc3QgQ2xpZW50T3JpZ2luJiwgY29uc3QgU2VydmljZVdvcmtlckNsaWVu
dElkZW50aWZpZXImKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBTV1NlcnZlcldvcmtlciog
YWN0aXZlV29ya2VyRnJvbVJlZ2lzdHJhdGlvbklEKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25J
ZGVudGlmaWVyKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbWFya0FsbFdvcmtlcnNBc1Rl
cm1pbmF0ZWQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG1hcmtBbGxXb3JrZXJzRm9yT3Jp
Z2luQXNUZXJtaW5hdGVkKGNvbnN0IFNlY3VyaXR5T3JpZ2luJik7CiAgICAgCiAgICAgQ29ubmVj
dGlvbiogZ2V0Q29ubmVjdGlvbihTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIGlkZW50aWZp
ZXIpIHsgcmV0dXJuIG1fY29ubmVjdGlvbnMuZ2V0KGlkZW50aWZpZXIpOyB9CiAgICAgU1dPcmln
aW5TdG9yZSYgb3JpZ2luU3RvcmUoKSB7IHJldHVybiBtX29yaWdpblN0b3JlOyB9CkBAIC0xNzcs
NiArMTc3LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0T3JpZ2luc1dp
dGhSZWdpc3RyYXRpb25zKEZ1bmN0aW9uPHZvaWQoY29uc3QgSGFzaFNldDxTZWN1cml0eU9yaWdp
bkRhdGE+Jik+JiYpOwogCiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgeyBy
ZXR1cm4gbV9zZXNzaW9uSUQ7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIG5lZWRzU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbkZvck9yaWdpbihTZWN1cml0eU9yaWdpbiYpIGNvbnN0OwogCiBw
cml2YXRlOgogICAgIHZvaWQgcmVnaXN0ZXJDb25uZWN0aW9uKENvbm5lY3Rpb24mKTsKQEAgLTIx
NSw2ICsyMTYsNyBAQCBwcml2YXRlOgogCiAgICAgSGFzaE1hcDxTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgUmVmPFNXU2VydmVyV29ya2VyPj4gbV9ydW5uaW5nT3JUZXJtaW5hdGluZ1dvcmtlcnM7
CiAKKyAgICBIYXNoTWFwPFJlZlB0cjxTZWN1cml0eU9yaWdpbj4sIFZlY3RvcjxTZXJ2aWNlV29y
a2VyQ2xpZW50SWRlbnRpZmllcj4+IG1fY2xpZW50c0J5U2VjdXJpdHlPcmlnaW47CiAgICAgc3Ry
dWN0IENsaWVudHMgewogICAgICAgICBWZWN0b3I8U2VydmljZVdvcmtlckNsaWVudElkZW50aWZp
ZXI+IGlkZW50aWZpZXJzOwogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGltZXI+IHRlcm1pbmF0
ZVNlcnZpY2VXb3JrZXJzVGltZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
aAppbmRleCA0YWMzZDVmN2M2My4uNmYxMDJiYzUyNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uaApAQCAtNzgsNiArNzgsOCBAQCBwdWJsaWM6CiAKICAgICBTZWN1cml0
eU9yaWdpbiYgb3JpZ2luKCkgeyByZXR1cm4gbV9vcmlnaW4uZ2V0KCk7IH0KIAorICAgIHZpcnR1
YWwgdm9pZCBjb25uZWN0aW9uTWF5Tm9Mb25nZXJCZU5lZWRlZCgpID0gMDsKKwogcHJvdGVjdGVk
OgogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bihSZWY8U2VjdXJpdHlPcmlnaW4+JiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0
b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCmluZGV4IGZjY2M4MzdlYzYwLi4xNDg1MGFjZGY2
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9T
dG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAor
I2luY2x1ZGUgIlN0b3JhZ2VQcm9jZXNzLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgiCiAjaW5jbHVkZSAiV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmg+CkBAIC0xMDIs
NiArMTAzLDE2IEBAIHZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpkaWRGaW5p
c2hTa2lwV2FpdGluZyh1aW50NjRfdCBjYWxsYmFja0lEKQogICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpEaWRGaW5pc2hTa2lwV2FpdGluZyB7IGNhbGxi
YWNrSUQgfSk7CiB9CiAKK3ZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjb25u
ZWN0aW9uTWF5Tm9Mb25nZXJCZU5lZWRlZCgpCit7CisgICAgU3RvcmFnZVByb2Nlc3M6OnNpbmds
ZXRvbigpLnN3Q29udGV4dENvbm5lY3Rpb25NYXlOb0xvbmdlckJlTmVlZGVkKCp0aGlzKTsKK30K
Kwordm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnRlcm1pbmF0ZSgpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlRlcm1pbmF0
ZVByb2Nlc3MoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291
cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5oCmluZGV4IGQ0NmFmNWI3MmU5Li5iYjEwYmRlZjkyYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAtNDcsNiAr
NDcsOCBAQCBwdWJsaWM6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwog
CisgICAgdm9pZCB0ZXJtaW5hdGUoKTsKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24oUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmLCBS
ZWY8SVBDOjpDb25uZWN0aW9uPiYmKTsKIApAQCAtNjUsNiArNjcsOCBAQCBwcml2YXRlOgogICAg
IHZvaWQgY2xhaW1Db21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIpIGZpbmFsOwog
ICAgIHZvaWQgZGlkRmluaXNoU2tpcFdhaXRpbmcodWludDY0X3QgY2FsbGJhY2tJRCkgZmluYWw7
CiAKKyAgICB2b2lkIGNvbm5lY3Rpb25NYXlOb0xvbmdlckJlTmVlZGVkKCkgZmluYWw7CisKICAg
ICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2lwY0Nvbm5lY3Rpb247CiAgICAgCiB9OyAvLyBjbGFz
cyBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9TdG9y
YWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5jcHAKaW5kZXggZTAxYmJiNDNlOWMuLmZhZjEyZTM3
MzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9j
ZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNz
LmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIlN0b3JhZ2VQcm9jZXNzLmgiCiAKICNp
bmNsdWRlICJDaGlsZFByb2Nlc3NNZXNzYWdlcy5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNp
bmNsdWRlICJTdG9yYWdlUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIlN0
b3JhZ2VQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJTdG9yYWdlUHJvY2Vzc1Byb3h5TWVz
c2FnZXMuaCIKQEAgLTExMSwzMiArMTEyLDI2IEBAIHZvaWQgU3RvcmFnZVByb2Nlc3M6OmRpZENs
b3NlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCiB2b2lkIFN0b3JhZ2VQcm9jZXNzOjpjb25uZWN0aW9uVG9Db250ZXh0UHJvY2Vzc1dhc0Ns
b3NlZChSZWY8V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uPiYmIHNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24pCiB7Ci0gICAgUmVmPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBzZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLT5vcmlnaW4oKTsKLSAgICBib29sIHNob3VsZFJlbGF1bmNoID0g
bmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2luKG9yaWdpbik7Ci0KICAgICBz
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLT5jb25uZWN0aW9uQ2xvc2VkKCk7Ci0gICAgbV9zZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9ucy5yZW1vdmUob3JpZ2luLnB0cigpKTsKKyAgICBtX3NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb25zLnJlbW92ZSgmc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi0+
b3JpZ2luKCkpOwogCiAgICAgZm9yIChhdXRvJiBzd1NlcnZlciA6IG1fc3dTZXJ2ZXJzLnZhbHVl
cygpKQotICAgICAgICBzd1NlcnZlci0+bWFya0FsbFdvcmtlcnNBc1Rlcm1pbmF0ZWQoKTsKKyAg
ICAgICAgc3dTZXJ2ZXItPm1hcmtBbGxXb3JrZXJzRm9yT3JpZ2luQXNUZXJtaW5hdGVkKHNlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24tPm9yaWdpbigpKTsKIAotICAgIGlmIChzaG91bGRSZWxhdW5j
aCkKKyAgICBSZWY8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IHNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24tPm9yaWdpbigpOworICAgIGlmIChuZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25G
b3JPcmlnaW4ob3JpZ2luKSkgeworICAgICAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAi
Q29ubmVjdGlvbiB0byBzZXJ2aWNlIHdvcmtlciBwcm9jZXNzIHdhcyBjbG9zZWQgYnV0IGlzIHN0
aWxsIG5lZWRlZCwgcmVsYXVuY2hpbmcgaXQiKTsKICAgICAgICAgY3JlYXRlU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbihvcmlnaW4sIHN0ZDo6bnVsbG9wdCk7CisgICAgfQogfQogCi0vLyBUaGUg
cnVsZSBpcyB0aGF0IHdlIG5lZWQgYSBjb250ZXh0IHByb2Nlc3MgKGFuZCBhIGNvbm5lY3Rpb24g
dG8gaXQpIGFzIGxvbmcgYXMgd2UgaGF2ZSBTV1NlcnZlckNvbm5lY3Rpb25zIHRvIHJlZ3VsYXIg
V2ViUHJvY2Vzc2VzLgogYm9vbCBTdG9yYWdlUHJvY2Vzczo6bmVlZHNTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uRm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pIGNvbnN0CiB7Ci0gICAg
aWYgKG1fc3dTZXJ2ZXJDb25uZWN0aW9ucy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIGF1dG8qIGNvbnRleHRDb25uZWN0aW9uID0gbV9zZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9ucy5nZXQoJm9yaWdpbik7Ci0KLSAgICAvLyBJZiB0aGUgbGFzdCBTV1NlcnZlckNvbm5l
Y3Rpb24gaXMgdG8gdGhlIGNvbnRleHQgcHJvY2VzcywgdGhlbiB3ZSBubyBsb25nZXIgbmVlZCB0
aGUgY29udGV4dCBjb25uZWN0aW9uLgotICAgIGlmIChtX3N3U2VydmVyQ29ubmVjdGlvbnMuc2l6
ZSgpID09IDEgJiYgY29udGV4dENvbm5lY3Rpb24gJiYgJm1fc3dTZXJ2ZXJDb25uZWN0aW9ucy5i
ZWdpbigpLT52YWx1ZS0+aXBjQ29ubmVjdGlvbigpID09IGNvbnRleHRDb25uZWN0aW9uLT5pcGND
b25uZWN0aW9uKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiB0cnVlOwor
ICAgIGZvciAoYXV0byYgc3dTZXJ2ZXIgOiBtX3N3U2VydmVycy52YWx1ZXMoKSkgeworICAgICAg
ICBpZiAoc3dTZXJ2ZXItPm5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvck9yaWdpbihv
cmlnaW4pKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxz
ZTsKIH0KICNlbmRpZgogCkBAIC01MzEsNiArNTI2LDE5IEBAIHZvaWQgU3RvcmFnZVByb2Nlc3M6
OnVucmVnaXN0ZXJTV1NlcnZlckNvbm5lY3Rpb24oV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJiBjb25u
ZWN0CiAgICAgbV9zd1NlcnZlckNvbm5lY3Rpb25zLnJlbW92ZShjb25uZWN0aW9uLmlkZW50aWZp
ZXIoKSk7CiAgICAgc3dPcmlnaW5TdG9yZUZvclNlc3Npb24oY29ubmVjdGlvbi5zZXNzaW9uSUQo
KSkudW5yZWdpc3RlclNXU2VydmVyQ29ubmVjdGlvbihjb25uZWN0aW9uKTsKIH0KKwordm9pZCBT
dG9yYWdlUHJvY2Vzczo6c3dDb250ZXh0Q29ubmVjdGlvbk1heU5vTG9uZ2VyQmVOZWVkZWQoV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKQor
eworICAgIGF1dG8mIG9yaWdpbiA9IHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ub3JpZ2luKCk7
CisgICAgaWYgKG5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvck9yaWdpbihvcmlnaW4p
KQorICAgICAgICByZXR1cm47CisKKyAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiU2Vy
dmljZSB3b3JrZXIgcHJvY2VzcyBpcyBubyBsb25nZXIgbmVlZGVkLCB0ZXJtaW5hdGluZyBpdCIp
OworICAgIHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24udGVybWluYXRlKCk7CisKKyAgICBzZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNvbm5lY3Rpb25DbG9zZWQoKTsKKyAgICBtX3NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb25zLnJlbW92ZSgmb3JpZ2luKTsKK30KICNlbmRpZgogCiAjaWYgIVBM
QVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9T
dG9yYWdlUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJv
Y2Vzcy5oCmluZGV4IGQ1NmVkNDAwMTM0Li45NGI1OGU4ZWExMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuaApAQCAtMTAwLDYgKzEwMCw4IEBAIHB1
YmxpYzoKICAgICBXZWJDb3JlOjpTV1NlcnZlciYgc3dTZXJ2ZXJGb3JTZXNzaW9uKFBBTDo6U2Vz
c2lvbklEKTsKICAgICB2b2lkIHJlZ2lzdGVyU1dTZXJ2ZXJDb25uZWN0aW9uKFdlYlNXU2VydmVy
Q29ubmVjdGlvbiYpOwogICAgIHZvaWQgdW5yZWdpc3RlclNXU2VydmVyQ29ubmVjdGlvbihXZWJT
V1NlcnZlckNvbm5lY3Rpb24mKTsKKworICAgIHZvaWQgc3dDb250ZXh0Q29ubmVjdGlvbk1heU5v
TG9uZ2VyQmVOZWVkZWQoV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJik7CiAjZW5kaWYK
IAogICAgIHZvaWQgZGlkUmVjZWl2ZVN0b3JhZ2VQcm9jZXNzTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmNwcAppbmRleCAxYWUxMmE1NjQwMS4uZGM0M2I5ZjA5NjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTYxNCw3ICs2MTQsNyBAQCB2b2lkIFdl
YlByb2Nlc3NQb29sOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvU3RvcmFnZVBy
b2Nlc3MoU3RvcmFnZVBybwogCiAgICAgQVNTRVJUKHdlYnNpdGVEYXRhU3RvcmUtPnNlc3Npb25J
RCgpLmlzVmFsaWQoKSk7CiAgICAgaWYgKHdlYnNpdGVEYXRhU3RvcmUtPnNlc3Npb25JRCgpLmlz
VmFsaWQoKSkKLSAgICAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNz
OjpSZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRzIHsgd2Vic2l0ZURhdGFTdG9yZS0+c2Vzc2lv
bklEKCkgfSk7CisgICAgICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vz
czo6UmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50cyB7IHdlYnNpdGVEYXRhU3RvcmUtPnNlc3Np
b25JRCgpIH0sIEluY2x1ZGVTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzOjpObyk7CiAKICAgICB1cGRh
dGVQcm9jZXNzQXNzZXJ0aW9ucygpOwogICAgIGluaXRpYWxpemVOZXdXZWJQcm9jZXNzKHNlcnZp
Y2VXb3JrZXJQcm9jZXNzUHJveHksICp3ZWJzaXRlRGF0YVN0b3JlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IGFmMWI0MGI2NTAzLi5mZDFjZTY0YzcyMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0xNTUsNyArMTU1
LDggQEAgcHVibGljOgogICAgIC8vIFdlYlByb2Nlc3Mgb3IgTmV0d29ya1Byb2Nlc3MgYXMgYXBw
cm9wb3JpYXRlIGZvciBjdXJyZW50IHByb2Nlc3MgbW9kZWwuIFRoZSBjb25uZWN0aW9uIG11c3Qg
YmUgbm9uLW51bGwuCiAgICAgSVBDOjpDb25uZWN0aW9uKiBuZXR3b3JraW5nUHJvY2Vzc0Nvbm5l
Y3Rpb24oKTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgc2VuZFRvQWxsUHJvY2Vz
c2VzKGNvbnN0IFQmIG1lc3NhZ2UpOworICAgIGVudW0gY2xhc3MgSW5jbHVkZVNlcnZpY2VXb3Jr
ZXJQcm9jZXNzZXMgeyBObywgWWVzIH07CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBz
ZW5kVG9BbGxQcm9jZXNzZXMoY29uc3QgVCYgbWVzc2FnZSwgSW5jbHVkZVNlcnZpY2VXb3JrZXJQ
cm9jZXNzZXMgPSBJbmNsdWRlU2VydmljZVdvcmtlclByb2Nlc3Nlczo6WWVzKTsKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiB2b2lkIHNlbmRUb0FsbFByb2Nlc3Nlc1JlbGF1bmNoaW5nVGhlbUlm
TmVjZXNzYXJ5KGNvbnN0IFQmIG1lc3NhZ2UpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZv
aWQgc2VuZFRvT25lUHJvY2VzcyhUJiYgbWVzc2FnZSk7CiAKQEAgLTcwMCwxMyArNzAxLDE4IEBA
IHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNlbmRUb1N0b3JhZ2VQcm9jZXNzUmVsYXVuY2hpbmdJZk5l
Y2Vzc2FyeShUJiYgbWVzc2FnZSkKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnNlbmRUb0FsbFByb2Nlc3Nlcyhjb25zdCBUJiBtZXNzYWdlKQordm9pZCBX
ZWJQcm9jZXNzUG9vbDo6c2VuZFRvQWxsUHJvY2Vzc2VzKGNvbnN0IFQmIG1lc3NhZ2UsIEluY2x1
ZGVTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzIGluY2x1ZGVTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKQog
ewogICAgIHNpemVfdCBwcm9jZXNzQ291bnQgPSBtX3Byb2Nlc3Nlcy5zaXplKCk7CiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBwcm9jZXNzQ291bnQ7ICsraSkgewogICAgICAgICBXZWJQcm9j
ZXNzUHJveHkqIHByb2Nlc3MgPSBtX3Byb2Nlc3Nlc1tpXS5nZXQoKTsKLSAgICAgICAgaWYgKHBy
b2Nlc3MtPmNhblNlbmRNZXNzYWdlKCkpCi0gICAgICAgICAgICBwcm9jZXNzLT5zZW5kKFQobWVz
c2FnZSksIDApOworICAgICAgICBpZiAoIXByb2Nlc3MtPmNhblNlbmRNZXNzYWdlKCkpCisgICAg
ICAgICAgICBjb250aW51ZTsKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgICAgIGlm
IChpbmNsdWRlU2VydmljZVdvcmtlclByb2Nlc3NlcyA9PSBJbmNsdWRlU2VydmljZVdvcmtlclBy
b2Nlc3Nlczo6Tm8gJiYgcHJvY2Vzcy0+aXNTZXJ2aWNlV29ya2VyUHJvY2VzcygpKQorICAgICAg
ICAgICAgY29udGludWU7CisjZW5kaWYKKyAgICAgICAgcHJvY2Vzcy0+c2VuZChUKG1lc3NhZ2Up
LCAwKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAppbmRl
eCAzMGJjOTUwNTg4Yi4uOTQ3M2VlZjRkNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbi5jcHAKQEAgLTMyNyw2ICszMjcsMTIgQEAgdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbjo6ZGlkRmluaXNoU2tpcFdhaXRpbmcodWludDY0X3QgY2FsbGJhY2tJRCkKICAgICAg
ICAgY2FsbGJhY2soKTsKIH0KIAorTk9fUkVUVVJOIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb246OnRlcm1pbmF0ZVByb2Nlc3MoKQoreworICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VX
b3JrZXIsICJTZXJ2aWNlIHdvcmtlciBwcm9jZXNzIGlzIGV4aXRpbmcgYmVjYXVzZSBpdCBpcyBu
byBsb25nZXIgbmVlZGVkIik7CisgICAgX2V4aXQoRVhJVF9TVUNDRVNTKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKaW5kZXggM2NiN2M2OGU4ZmYuLjhlODIwN2Q2OWRm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKQEAgLTg3LDYgKzg3LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGNsYWltQ29tcGxldGVkKHVpbnQ2NF90IGNsYWltUmVxdWVzdElkZW50
aWZpZXIpOwogICAgIHZvaWQgZGlkRmluaXNoU2tpcFdhaXRpbmcodWludDY0X3QgY2FsbGJhY2tJ
RCk7CiAgICAgdm9pZCBzZXRVc2VyQWdlbnQoU3RyaW5nJiYgdXNlckFnZW50KTsKKyAgICB2b2lk
IHRlcm1pbmF0ZVByb2Nlc3MoKTsKIAogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVj
dGlvblRvU3RvcmFnZVByb2Nlc3M7CiAgICAgdWludDY0X3QgbV9wYWdlR3JvdXBJRDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5kZXggNzM3YzQx
ZmVkMGYuLjI3YmVlMzIzZWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbi5tZXNzYWdlcy5pbgpAQCAtMzYsNiArMzYsNyBAQCBtZXNzYWdlcyAtPiBXZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbiB7CiAgICAgRGlkRmluaXNoU2tpcFdhaXRpbmcodWludDY0X3Qg
Y2FsbGJhY2tJRCkKICAgICBTZXRVc2VyQWdlbnQoU3RyaW5nIHVzZXJBZ2VudCkKICAgICBVcGRh
dGVQcmVmZXJlbmNlc1N0b3JlKHN0cnVjdCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmUgc3Rv
cmUpCisgICAgVGVybWluYXRlUHJvY2VzcygpCiB9CiAKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336337</attachid>
            <date>2018-03-22 16:58:53 -0700</date>
            <delta_ts>2018-03-23 10:08:35 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>183873_terminateServiceWorkerProcesses_wip.patch</filename>
            <type>text/plain</type>
            <size>26229</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5j
cHAKaW5kZXggYTc0YTFhYjAyNDAuLmQxZjExZmQ5YTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApAQCAtNjQxLDEwICs2NDEs
MTUgQEAgdm9pZCBTV1NlcnZlcjo6dGVybWluYXRlV29ya2VySW50ZXJuYWwoU1dTZXJ2ZXJXb3Jr
ZXImIHdvcmtlciwgVGVybWluYXRpb25Nb2RlIG0KICAgICB9OwogfQogCi12b2lkIFNXU2VydmVy
OjptYXJrQWxsV29ya2Vyc0FzVGVybWluYXRlZCgpCit2b2lkIFNXU2VydmVyOjptYXJrQWxsV29y
a2Vyc0Zvck9yaWdpbkFzVGVybWluYXRlZChjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKQog
ewotICAgIHdoaWxlICghbV9ydW5uaW5nT3JUZXJtaW5hdGluZ1dvcmtlcnMuaXNFbXB0eSgpKQot
ICAgICAgICB3b3JrZXJDb250ZXh0VGVybWluYXRlZChtX3J1bm5pbmdPclRlcm1pbmF0aW5nV29y
a2Vycy5iZWdpbigpLT52YWx1ZSk7CisgICAgVmVjdG9yPFNXU2VydmVyV29ya2VyKj4gdGVybWlu
YXRlZFdvcmtlcnM7CisgICAgZm9yIChhdXRvJiB3b3JrZXIgOiBtX3J1bm5pbmdPclRlcm1pbmF0
aW5nV29ya2Vycy52YWx1ZXMoKSkgeworICAgICAgICBpZiAob3JpZ2luLmlzU2FtZVNjaGVtZUhv
c3RQb3J0KHdvcmtlci0+c2VjdXJpdHlPcmlnaW4oKSkpCisgICAgICAgICAgICB0ZXJtaW5hdGVk
V29ya2Vycy5hcHBlbmQod29ya2VyLnB0cigpKTsKKyAgICB9CisgICAgZm9yIChhdXRvJiB0ZXJt
aW5hdGVkV29ya2VyIDogdGVybWluYXRlZFdvcmtlcnMpCisgICAgICAgIHdvcmtlckNvbnRleHRU
ZXJtaW5hdGVkKCp0ZXJtaW5hdGVkV29ya2VyKTsKIH0KIAogdm9pZCBTV1NlcnZlcjo6d29ya2Vy
Q29udGV4dFRlcm1pbmF0ZWQoU1dTZXJ2ZXJXb3JrZXImIHdvcmtlcikKQEAgLTcyOSwxMiArNzM0
LDE5IEBAIHZvaWQgU1dTZXJ2ZXI6OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChDbGllbnRP
cmlnaW4mJiBjbGllbnRPcmlnaW4sIFNlcnZpY2VXCiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2Ns
aWVudHNCeUlkLmFkZChjbGllbnRJZGVudGlmaWVyLCBXVEZNb3ZlKGRhdGEpKTsKICAgICBBU1NF
UlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwogCisgICAgYXV0byBz
ZWN1cml0eU9yaWdpbiA9IGNsaWVudE9yaWdpbi5jbGllbnRPcmlnaW4uc2VjdXJpdHlPcmlnaW4o
KTsKKwogICAgIGF1dG8mIGNsaWVudElkZW50aWZpZXJzRm9yT3JpZ2luID0gbV9jbGllbnRJZGVu
dGlmaWVyc1Blck9yaWdpbi5lbnN1cmUoV1RGTW92ZShjbGllbnRPcmlnaW4pLCBbXSB7CiAgICAg
ICAgIHJldHVybiBDbGllbnRzIHsgfTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAgICAgY2xp
ZW50SWRlbnRpZmllcnNGb3JPcmlnaW4uaWRlbnRpZmllcnMuYXBwZW5kKGNsaWVudElkZW50aWZp
ZXIpOwogICAgIGNsaWVudElkZW50aWZpZXJzRm9yT3JpZ2luLnRlcm1pbmF0ZVNlcnZpY2VXb3Jr
ZXJzVGltZXIgPSBudWxscHRyOwogCisgICAgYXV0byYgY2xpZW50SWRlbnRpZmllcnNGb3JTZWN1
cml0eU9yaWdpbiA9IG1fY2xpZW50c0J5U2VjdXJpdHlPcmlnaW4uZW5zdXJlKFdURk1vdmUoc2Vj
dXJpdHlPcmlnaW4pLCBbXSB7CisgICAgICAgIHJldHVybiBWZWN0b3I8U2VydmljZVdvcmtlckNs
aWVudElkZW50aWZpZXI+IHsgfTsKKyAgICB9KS5pdGVyYXRvci0+dmFsdWU7CisgICAgY2xpZW50
SWRlbnRpZmllcnNGb3JTZWN1cml0eU9yaWdpbi5hcHBlbmQoY2xpZW50SWRlbnRpZmllcik7CisK
ICAgICBpZiAoIWNvbnRyb2xsaW5nU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIp
CiAgICAgICAgIHJldHVybjsKIApAQCAtNzQ5LDYgKzc2MSw4IEBAIHZvaWQgU1dTZXJ2ZXI6OnJl
Z2lzdGVyU2VydmljZVdvcmtlckNsaWVudChDbGllbnRPcmlnaW4mJiBjbGllbnRPcmlnaW4sIFNl
cnZpY2VXCiAKIHZvaWQgU1dTZXJ2ZXI6OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KGNv
bnN0IENsaWVudE9yaWdpbiYgY2xpZW50T3JpZ2luLCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRp
ZmllciBjbGllbnRJZGVudGlmaWVyKQogeworICAgIGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBjbGll
bnRPcmlnaW4uY2xpZW50T3JpZ2luLnNlY3VyaXR5T3JpZ2luKCk7CisKICAgICBib29sIHdhc1Jl
bW92ZWQgPSBtX2NsaWVudHNCeUlkLnJlbW92ZShjbGllbnRJZGVudGlmaWVyKTsKICAgICBBU1NF
UlRfVU5VU0VEKHdhc1JlbW92ZWQsIHdhc1JlbW92ZWQpOwogCkBAIC03NjAsMTcgKzc3NCwzNiBA
QCB2b2lkIFNXU2VydmVyOjp1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChjb25zdCBDbGll
bnRPcmlnaW4mIGNsaWVudE9yaWdpbiwgUwogICAgICAgICByZXR1cm4gY2xpZW50SWRlbnRpZmll
ciA9PSBpZGVudGlmaWVyOwogICAgIH0pOwogICAgIGlmIChjbGllbnRJZGVudGlmaWVycy5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgQVNTRVJUKCFpdGVyYXRvci0+dmFsdWUudGVybWluYXRlU2Vydmlj
ZVdvcmtlcnNUaW1lcik7Ci0gICAgICAgIGl0ZXJhdG9yLT52YWx1ZS50ZXJtaW5hdGVTZXJ2aWNl
V29ya2Vyc1RpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxUaW1lcj4oW2NsaWVudE9yaWdpbiwgdGhp
c10geworICAgICAgICBhdXRvIHRlcm1pbmF0ZVdvcmtlcnNJbkNsaWVudE9yaWdpbiA9IFtjbGll
bnRPcmlnaW4sIHNlY3VyaXR5T3JpZ2luID0gc2VjdXJpdHlPcmlnaW4uY29weVJlZigpLCB0aGlz
XSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHdvcmtlciA6IG1fcnVubmluZ09yVGVybWluYXRp
bmdXb3JrZXJzLnZhbHVlcygpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHdvcmtlci0+aXNSdW5u
aW5nKCkgJiYgd29ya2VyLT5vcmlnaW4oKSA9PSBjbGllbnRPcmlnaW4pCiAgICAgICAgICAgICAg
ICAgICAgIHRlcm1pbmF0ZVdvcmtlcih3b3JrZXIpOwogICAgICAgICAgICAgfQorICAgICAgICAg
ICAgaWYgKCFtX2NsaWVudHNCeVNlY3VyaXR5T3JpZ2luLmNvbnRhaW5zKHNlY3VyaXR5T3JpZ2lu
LnB0cigpKSkgeworICAgICAgICAgICAgICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjb25uZWN0aW9uRm9yT3JpZ2luKHNlY3VyaXR5T3JpZ2lu
KSkKKyAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbi0+Y29ubmVjdGlvbk1heU5vTG9uZ2Vy
QmVOZWVkZWQoKTsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgbV9jbGllbnRJZGVudGlm
aWVyc1Blck9yaWdpbi5yZW1vdmUoY2xpZW50T3JpZ2luKTsKLSAgICAgICAgfSk7Ci0gICAgICAg
IGl0ZXJhdG9yLT52YWx1ZS50ZXJtaW5hdGVTZXJ2aWNlV29ya2Vyc1RpbWVyLT5zdGFydE9uZVNo
b3QodGVybWluYXRpb25EZWxheSk7CisgICAgICAgIH07CisgICAgICAgIGlmIChtX3Nob3VsZERp
c2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXkpCisgICAgICAgICAgICB0
ZXJtaW5hdGVXb3JrZXJzSW5DbGllbnRPcmlnaW4oKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICBBU1NFUlQoIWl0ZXJhdG9yLT52YWx1ZS50ZXJtaW5hdGVTZXJ2aWNlV29ya2Vyc1RpbWVy
KTsKKyAgICAgICAgICAgIGl0ZXJhdG9yLT52YWx1ZS50ZXJtaW5hdGVTZXJ2aWNlV29ya2Vyc1Rp
bWVyID0gc3RkOjptYWtlX3VuaXF1ZTxUaW1lcj4oV1RGTW92ZSh0ZXJtaW5hdGVXb3JrZXJzSW5D
bGllbnRPcmlnaW4pKTsKKyAgICAgICAgICAgIGl0ZXJhdG9yLT52YWx1ZS50ZXJtaW5hdGVTZXJ2
aWNlV29ya2Vyc1RpbWVyLT5zdGFydE9uZVNob3QodGVybWluYXRpb25EZWxheSk7CisgICAgICAg
IH0KICAgICB9CiAKKyAgICBhdXRvIGNsaWVudHNCeVNlY3VyaXR5T3JpZ2luSXRlcmF0b3IgPSBt
X2NsaWVudHNCeVNlY3VyaXR5T3JpZ2luLmZpbmQoc2VjdXJpdHlPcmlnaW4ucHRyKCkpOworICAg
IEFTU0VSVChjbGllbnRzQnlTZWN1cml0eU9yaWdpbkl0ZXJhdG9yICE9IG1fY2xpZW50c0J5U2Vj
dXJpdHlPcmlnaW4uZW5kKCkpOworICAgIGF1dG8mIGNsaWVudHNGb3JTZWN1cml0eU9yaWdpbiA9
IGNsaWVudHNCeVNlY3VyaXR5T3JpZ2luSXRlcmF0b3ItPnZhbHVlOworICAgIGNsaWVudHNGb3JT
ZWN1cml0eU9yaWdpbi5yZW1vdmVGaXJzdE1hdGNoaW5nKFsmXSAoY29uc3QgYXV0byYgaWRlbnRp
ZmllcikgeworICAgICAgICByZXR1cm4gY2xpZW50SWRlbnRpZmllciA9PSBpZGVudGlmaWVyOwor
ICAgIH0pOworICAgIGlmIChjbGllbnRzRm9yU2VjdXJpdHlPcmlnaW4uaXNFbXB0eSgpKQorICAg
ICAgICBtX2NsaWVudHNCeVNlY3VyaXR5T3JpZ2luLnJlbW92ZShjbGllbnRzQnlTZWN1cml0eU9y
aWdpbkl0ZXJhdG9yKTsKKwogICAgIGF1dG8gcmVnaXN0cmF0aW9uSXRlcmF0b3IgPSBtX2NsaWVu
dFRvQ29udHJvbGxpbmdSZWdpc3RyYXRpb24uZmluZChjbGllbnRJZGVudGlmaWVyKTsKICAgICBp
ZiAocmVnaXN0cmF0aW9uSXRlcmF0b3IgPT0gbV9jbGllbnRUb0NvbnRyb2xsaW5nUmVnaXN0cmF0
aW9uLmVuZCgpKQogICAgICAgICByZXR1cm47CkBAIC03ODEsNiArODE0LDExIEBAIHZvaWQgU1dT
ZXJ2ZXI6OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IENsaWVudE9yaWdpbiYg
Y2xpZW50T3JpZ2luLCBTCiAgICAgbV9jbGllbnRUb0NvbnRyb2xsaW5nUmVnaXN0cmF0aW9uLnJl
bW92ZShyZWdpc3RyYXRpb25JdGVyYXRvcik7CiB9CiAKK2Jvb2wgU1dTZXJ2ZXI6Om5lZWRzU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvck9yaWdpbihTZWN1cml0eU9yaWdpbiYgb3JpZ2luKSBj
b25zdAoreworICAgIHJldHVybiBtX2NsaWVudHNCeVNlY3VyaXR5T3JpZ2luLmNvbnRhaW5zKCZv
cmlnaW4pOworfQorCiB2b2lkIFNXU2VydmVyOjpyZXNvbHZlUmVnaXN0cmF0aW9uUmVhZHlSZXF1
ZXN0cyhTV1NlcnZlclJlZ2lzdHJhdGlvbiYgcmVnaXN0cmF0aW9uKQogewogICAgIGZvciAoYXV0
byogY29ubmVjdGlvbiA6IG1fY29ubmVjdGlvbnMudmFsdWVzKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKaW5kZXggNGMwNmU1ZTdjNTUu
LjUxOTcxMzFkMDUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlci5oCkBAIC0xNDUsNyArMTQ1LDcgQEAgcHVibGljOgogICAgIHN0ZDo6b3B0
aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+IHNlcnZpY2VXb3JrZXJDbGllbnRXaXRoT3Jp
Z2luQnlJRChjb25zdCBDbGllbnRPcmlnaW4mLCBjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRl
bnRpZmllciYpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFNXU2VydmVyV29ya2VyKiBhY3Rp
dmVXb3JrZXJGcm9tUmVnaXN0cmF0aW9uSUQoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50
aWZpZXIpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBtYXJrQWxsV29ya2Vyc0FzVGVybWlu
YXRlZCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbWFya0FsbFdvcmtlcnNGb3JPcmlnaW5B
c1Rlcm1pbmF0ZWQoY29uc3QgU2VjdXJpdHlPcmlnaW4mKTsKICAgICAKICAgICBDb25uZWN0aW9u
KiBnZXRDb25uZWN0aW9uKFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgaWRlbnRpZmllcikg
eyByZXR1cm4gbV9jb25uZWN0aW9ucy5nZXQoaWRlbnRpZmllcik7IH0KICAgICBTV09yaWdpblN0
b3JlJiBvcmlnaW5TdG9yZSgpIHsgcmV0dXJuIG1fb3JpZ2luU3RvcmU7IH0KQEAgLTE3Nyw2ICsx
NzcsOSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRPcmlnaW5zV2l0aFJl
Z2lzdHJhdGlvbnMoRnVuY3Rpb248dm9pZChjb25zdCBIYXNoU2V0PFNlY3VyaXR5T3JpZ2luRGF0
YT4mKT4mJik7CiAKICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCB7IHJldHVy
biBtX3Nlc3Npb25JRDsgfQorICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgbmVlZHNTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uRm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luJikgY29uc3Q7CisKKyAgICB2
b2lkIGRpc2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXkoKSB7IG1fc2hv
dWxkRGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSA9IHRydWU7IH0K
IAogcHJpdmF0ZToKICAgICB2b2lkIHJlZ2lzdGVyQ29ubmVjdGlvbihDb25uZWN0aW9uJik7CkBA
IC0yMTUsNiArMjE4LDcgQEAgcHJpdmF0ZToKIAogICAgIEhhc2hNYXA8U2VydmljZVdvcmtlcklk
ZW50aWZpZXIsIFJlZjxTV1NlcnZlcldvcmtlcj4+IG1fcnVubmluZ09yVGVybWluYXRpbmdXb3Jr
ZXJzOwogCisgICAgSGFzaE1hcDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBWZWN0b3I8U2Vydmlj
ZVdvcmtlckNsaWVudElkZW50aWZpZXI+PiBtX2NsaWVudHNCeVNlY3VyaXR5T3JpZ2luOwogICAg
IHN0cnVjdCBDbGllbnRzIHsKICAgICAgICAgVmVjdG9yPFNlcnZpY2VXb3JrZXJDbGllbnRJZGVu
dGlmaWVyPiBpZGVudGlmaWVyczsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFRpbWVyPiB0ZXJt
aW5hdGVTZXJ2aWNlV29ya2Vyc1RpbWVyOwpAQCAtMjI5LDYgKzIzMyw3IEBAIHByaXZhdGU6CiAg
ICAgSGFzaE1hcDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBIYXNoTWFwPFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBWZWN0b3I8UnVuU2VydmljZVdvcmtlckNhbGxiYWNrPj4+IG1fc2VydmljZVdv
cmtlclJ1blJlcXVlc3RzOwogICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOwogICAgIGJv
b2wgbV9pbXBvcnRDb21wbGV0ZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9zaG91bGREaXNhYmxl
U2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5IHsgZmFsc2UgfTsKICAgICBWZWN0
b3I8Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPj4gbV9jbGVhckNvbXBsZXRpb25DYWxsYmFja3M7
CiAgICAgVmVjdG9yPEZ1bmN0aW9uPHZvaWQoY29uc3QgSGFzaFNldDxTZWN1cml0eU9yaWdpbkRh
dGE+Jik+PiBtX2dldE9yaWdpbnNXaXRoUmVnaXN0cmF0aW9uc0NhbGxiYWNrczsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAppbmRleCA0YWMzZDVmN2M2My4uNmYxMDJi
YzUyNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAtNzgsNiAr
NzgsOCBAQCBwdWJsaWM6CiAKICAgICBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKCkgeyByZXR1cm4g
bV9vcmlnaW4uZ2V0KCk7IH0KIAorICAgIHZpcnR1YWwgdm9pZCBjb25uZWN0aW9uTWF5Tm9Mb25n
ZXJCZU5lZWRlZCgpID0gMDsKKwogcHJvdGVjdGVkOgogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxp
Y2l0IFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihSZWY8U2VjdXJpdHlPcmlnaW4+JiYpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TdG9yYWdlL1N0b3Jh
Z2VQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggNjc2ODBkZjEyZGYuLmZkOTcwNzRm
ODIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TdG9yYWdlL1N0b3JhZ2VQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU3RvcmFn
ZS9TdG9yYWdlUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC01NCw2ICs1NCw3IEBAIHN0
cnVjdCBTdG9yYWdlUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgU3RyaW5nIHNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnk7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAg
ICAgVmVjdG9yPFN0cmluZz4gdXJsU2NoZW1lc1NlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlOworICAg
IGJvb2wgc2hvdWxkRGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSB7
IGZhbHNlIH07CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFn
ZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3Bw
IGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKaW5kZXggZmNjYzgzN2VjNjAuLjE0ODUwYWNkZjZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3Jh
Z2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNw
cApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCisjaW5j
bHVkZSAiU3RvcmFnZVByb2Nlc3MuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMu
aCIKICNpbmNsdWRlICJXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaD4KQEAgLTEwMiw2ICsx
MDMsMTYgQEAgdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmRpZEZpbmlzaFNr
aXBXYWl0aW5nKHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb246OkRpZEZpbmlzaFNraXBXYWl0aW5nIHsgY2FsbGJhY2tJ
RCB9KTsKIH0KIAordm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNvbm5lY3Rp
b25NYXlOb0xvbmdlckJlTmVlZGVkKCkKK3sKKyAgICBTdG9yYWdlUHJvY2Vzczo6c2luZ2xldG9u
KCkuc3dDb250ZXh0Q29ubmVjdGlvbk1heU5vTG9uZ2VyQmVOZWVkZWQoKnRoaXMpOworfQorCit2
b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6dGVybWluYXRlKCkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6VGVybWluYXRlUHJv
Y2VzcygpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmgKaW5kZXggZDQ2YWY1YjcyZTkuLmJiMTBiZGVmOTJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCkBAIC00Nyw2ICs0Nyw4
IEBAIHB1YmxpYzoKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVj
ZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CiAKKyAg
ICB2b2lkIHRlcm1pbmF0ZSgpOworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbihSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYsIFJlZjxJ
UEM6OkNvbm5lY3Rpb24+JiYpOwogCkBAIC02NSw2ICs2Nyw4IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBjbGFpbUNvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllcikgZmluYWw7CiAgICAg
dm9pZCBkaWRGaW5pc2hTa2lwV2FpdGluZyh1aW50NjRfdCBjYWxsYmFja0lEKSBmaW5hbDsKIAor
ICAgIHZvaWQgY29ubmVjdGlvbk1heU5vTG9uZ2VyQmVOZWVkZWQoKSBmaW5hbDsKKwogICAgIFJl
ZjxJUEM6OkNvbm5lY3Rpb24+IG1faXBjQ29ubmVjdGlvbjsKICAgICAKIH07IC8vIGNsYXNzIFdl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
dG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQ
cm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcAppbmRleCBlMDFiYmI0M2U5Yy4uZjRmMzc5NDFlOTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3Mu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3Bw
CkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiU3RvcmFnZVByb2Nlc3MuaCIKIAogI2luY2x1
ZGUgIkNoaWxkUHJvY2Vzc01lc3NhZ2VzLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1
ZGUgIlN0b3JhZ2VQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiU3RvcmFn
ZVByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlN0b3JhZ2VQcm9jZXNzUHJveHlNZXNzYWdl
cy5oIgpAQCAtMTExLDMyICsxMTIsMjYgQEAgdm9pZCBTdG9yYWdlUHJvY2Vzczo6ZGlkQ2xvc2Uo
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
IHZvaWQgU3RvcmFnZVByb2Nlc3M6OmNvbm5lY3Rpb25Ub0NvbnRleHRQcm9jZXNzV2FzQ2xvc2Vk
KFJlZjxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24+JiYgc2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbikKIHsKLSAgICBSZWY8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IHNlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24tPm9yaWdpbigpOwotICAgIGJvb2wgc2hvdWxkUmVsYXVuY2ggPSBuZWVk
c1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JPcmlnaW4ob3JpZ2luKTsKLQogICAgIHNlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24tPmNvbm5lY3Rpb25DbG9zZWQoKTsKLSAgICBtX3NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb25zLnJlbW92ZShvcmlnaW4ucHRyKCkpOworICAgIG1fc2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbnMucmVtb3ZlKCZzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLT5vcmln
aW4oKSk7CiAKICAgICBmb3IgKGF1dG8mIHN3U2VydmVyIDogbV9zd1NlcnZlcnMudmFsdWVzKCkp
Ci0gICAgICAgIHN3U2VydmVyLT5tYXJrQWxsV29ya2Vyc0FzVGVybWluYXRlZCgpOworICAgICAg
ICBzd1NlcnZlci0+bWFya0FsbFdvcmtlcnNGb3JPcmlnaW5Bc1Rlcm1pbmF0ZWQoc2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi0+b3JpZ2luKCkpOwogCi0gICAgaWYgKHNob3VsZFJlbGF1bmNoKQor
ICAgIFJlZjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gc2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi0+b3JpZ2luKCk7CisgICAgaWYgKG5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvck9y
aWdpbihvcmlnaW4pKSB7CisgICAgICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJDb25u
ZWN0aW9uIHRvIHNlcnZpY2Ugd29ya2VyIHByb2Nlc3Mgd2FzIGNsb3NlZCBidXQgaXMgc3RpbGwg
bmVlZGVkLCByZWxhdW5jaGluZyBpdCIpOwogICAgICAgICBjcmVhdGVTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uKG9yaWdpbiwgc3RkOjpudWxsb3B0KTsKKyAgICB9CiB9CiAKLS8vIFRoZSBydWxl
IGlzIHRoYXQgd2UgbmVlZCBhIGNvbnRleHQgcHJvY2VzcyAoYW5kIGEgY29ubmVjdGlvbiB0byBp
dCkgYXMgbG9uZyBhcyB3ZSBoYXZlIFNXU2VydmVyQ29ubmVjdGlvbnMgdG8gcmVndWxhciBXZWJQ
cm9jZXNzZXMuCiBib29sIFN0b3JhZ2VQcm9jZXNzOjpuZWVkc1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb25Gb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikgY29uc3QKIHsKLSAgICBpZiAo
bV9zd1NlcnZlckNvbm5lY3Rpb25zLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgYXV0byogY29udGV4dENvbm5lY3Rpb24gPSBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b25zLmdldCgmb3JpZ2luKTsKLQotICAgIC8vIElmIHRoZSBsYXN0IFNXU2VydmVyQ29ubmVjdGlv
biBpcyB0byB0aGUgY29udGV4dCBwcm9jZXNzLCB0aGVuIHdlIG5vIGxvbmdlciBuZWVkIHRoZSBj
b250ZXh0IGNvbm5lY3Rpb24uCi0gICAgaWYgKG1fc3dTZXJ2ZXJDb25uZWN0aW9ucy5zaXplKCkg
PT0gMSAmJiBjb250ZXh0Q29ubmVjdGlvbiAmJiAmbV9zd1NlcnZlckNvbm5lY3Rpb25zLmJlZ2lu
KCktPnZhbHVlLT5pcGNDb25uZWN0aW9uKCkgPT0gY29udGV4dENvbm5lY3Rpb24tPmlwY0Nvbm5l
Y3Rpb24oKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7CisgICAg
Zm9yIChhdXRvJiBzd1NlcnZlciA6IG1fc3dTZXJ2ZXJzLnZhbHVlcygpKSB7CisgICAgICAgIGlm
IChzd1NlcnZlci0+bmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2luKG9yaWdp
bikpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOwog
fQogI2VuZGlmCiAKQEAgLTIxNiw2ICsyMTEsOCBAQCB2b2lkIFN0b3JhZ2VQcm9jZXNzOjppbml0
aWFsaXplV2Vic2l0ZURhdGFTdG9yZShjb25zdCBTdG9yYWdlUHJvY2Vzc0NyZWF0aW9uUGFyYQog
CiAgICAgZm9yIChhdXRvJiBzY2hlbWUgOiBwYXJhbWV0ZXJzLnVybFNjaGVtZXNTZXJ2aWNlV29y
a2Vyc0NhbkhhbmRsZSkKICAgICAgICAgcmVnaXN0ZXJVUkxTY2hlbWVTZXJ2aWNlV29ya2Vyc0Nh
bkhhbmRsZShzY2hlbWUpOworCisgICAgbV9zaG91bGREaXNhYmxlU2VydmljZVdvcmtlclByb2Nl
c3NUZXJtaW5hdGlvbkRlbGF5ID0gcGFyYW1ldGVycy5zaG91bGREaXNhYmxlU2VydmljZVdvcmtl
clByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5OwogI2VuZGlmCiB9CiAKQEAgLTQ0NCw2ICs0NDEsOCBA
QCBTV1NlcnZlciYgU3RvcmFnZVByb2Nlc3M6OnN3U2VydmVyRm9yU2Vzc2lvbihQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQpCiAgICAgQVNTRVJUKHNlc3Npb25JRC5pc0VwaGVtZXJhbCgpIHx8ICFw
YXRoLmlzRW1wdHkoKSk7CiAKICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtl
X3VuaXF1ZTxTV1NlcnZlcj4obWFrZVVuaXF1ZVJlZjxXZWJTV09yaWdpblN0b3JlPigpLCBXVEZN
b3ZlKHBhdGgpLCBzZXNzaW9uSUQpOworICAgIGlmIChtX3Nob3VsZERpc2FibGVTZXJ2aWNlV29y
a2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXkpCisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFs
dWUtPmRpc2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXkoKTsKICAgICBy
ZXR1cm4gKnJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CiB9CiAKQEAgLTUzMSw2ICs1MzAsMjkgQEAg
dm9pZCBTdG9yYWdlUHJvY2Vzczo6dW5yZWdpc3RlclNXU2VydmVyQ29ubmVjdGlvbihXZWJTV1Nl
cnZlckNvbm5lY3Rpb24mIGNvbm5lY3QKICAgICBtX3N3U2VydmVyQ29ubmVjdGlvbnMucmVtb3Zl
KGNvbm5lY3Rpb24uaWRlbnRpZmllcigpKTsKICAgICBzd09yaWdpblN0b3JlRm9yU2Vzc2lvbihj
b25uZWN0aW9uLnNlc3Npb25JRCgpKS51bnJlZ2lzdGVyU1dTZXJ2ZXJDb25uZWN0aW9uKGNvbm5l
Y3Rpb24pOwogfQorCit2b2lkIFN0b3JhZ2VQcm9jZXNzOjpzd0NvbnRleHRDb25uZWN0aW9uTWF5
Tm9Mb25nZXJCZU5lZWRlZChXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mIHNlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24pCit7CisgICAgYXV0byYgb3JpZ2luID0gc2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5vcmlnaW4oKTsKKyAgICBpZiAobmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uRm9yT3JpZ2luKG9yaWdpbikpCisgICAgICAgIHJldHVybjsKKworICAgIFJFTEVBU0VfTE9H
KFNlcnZpY2VXb3JrZXIsICJTZXJ2aWNlIHdvcmtlciBwcm9jZXNzIGlzIG5vIGxvbmdlciBuZWVk
ZWQsIHRlcm1pbmF0aW5nIGl0Iik7CisgICAgc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi50ZXJt
aW5hdGUoKTsKKworICAgIHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY29ubmVjdGlvbkNsb3Nl
ZCgpOworICAgIG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbnMucmVtb3ZlKCZvcmlnaW4pOwor
fQorCit2b2lkIFN0b3JhZ2VQcm9jZXNzOjpkaXNhYmxlU2VydmljZVdvcmtlclByb2Nlc3NUZXJt
aW5hdGlvbkRlbGF5KCkKK3sKKyAgICBpZiAobV9zaG91bGREaXNhYmxlU2VydmljZVdvcmtlclBy
b2Nlc3NUZXJtaW5hdGlvbkRlbGF5KQorICAgICAgICByZXR1cm47CisKKyAgICBtX3Nob3VsZERp
c2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXkgPSB0cnVlOworICAgIGZv
ciAoYXV0byYgc3dTZXJ2ZXIgOiBtX3N3U2VydmVycy52YWx1ZXMoKSkKKyAgICAgICAgc3dTZXJ2
ZXItPmRpc2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXkoKTsKK30KICNl
bmRpZgogCiAjaWYgIVBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
dG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJv
Y2Vzcy9TdG9yYWdlUHJvY2Vzcy5oCmluZGV4IGQ1NmVkNDAwMTM0Li5kMTJmZTMxNmU5ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuaApAQCAtMTAw
LDYgKzEwMCw4IEBAIHB1YmxpYzoKICAgICBXZWJDb3JlOjpTV1NlcnZlciYgc3dTZXJ2ZXJGb3JT
ZXNzaW9uKFBBTDo6U2Vzc2lvbklEKTsKICAgICB2b2lkIHJlZ2lzdGVyU1dTZXJ2ZXJDb25uZWN0
aW9uKFdlYlNXU2VydmVyQ29ubmVjdGlvbiYpOwogICAgIHZvaWQgdW5yZWdpc3RlclNXU2VydmVy
Q29ubmVjdGlvbihXZWJTV1NlcnZlckNvbm5lY3Rpb24mKTsKKworICAgIHZvaWQgc3dDb250ZXh0
Q29ubmVjdGlvbk1heU5vTG9uZ2VyQmVOZWVkZWQoV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uJik7CiAjZW5kaWYKIAogICAgIHZvaWQgZGlkUmVjZWl2ZVN0b3JhZ2VQcm9jZXNzTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKQEAgLTE0NSw2ICsxNDcsOCBAQCBw
cml2YXRlOgogICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoY29uc3Qg
V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXImIGRlc3RpbmF0aW9uSWRlbnRp
ZmllciwgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiwgV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIgc291cmNlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VP
cmlnaW4pOwogICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIoV2ViQ29yZTo6U2Vy
dmljZVdvcmtlcklkZW50aWZpZXIgZGVzdGluYXRpb24sIFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVz
c2FnZVBvcnRzJiYsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJPckNsaWVudElkZW50aWZp
ZXImIHNvdXJjZSwgV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcik7CiAKKyAg
ICB2b2lkIGRpc2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXkoKTsKKwog
ICAgIFdlYlNXT3JpZ2luU3RvcmUmIHN3T3JpZ2luU3RvcmVGb3JTZXNzaW9uKFBBTDo6U2Vzc2lv
bklEKTsKICAgICBib29sIG5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvck9yaWdpbihX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYpIGNvbnN0OwogI2VuZGlmCkBAIC0xNzUsNiArMTc5LDcg
QEAgcHJpdmF0ZToKIAogICAgIEhhc2hNYXA8UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
PiwgUmVmPFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbj4+IG1fc2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbnM7CiAgICAgYm9vbCBtX3dhaXRpbmdGb3JTZXJ2ZXJUb0NvbnRleHRQcm9jZXNz
Q29ubmVjdGlvbiB7IGZhbHNlIH07CisgICAgYm9vbCBtX3Nob3VsZERpc2FibGVTZXJ2aWNlV29y
a2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXkgeyBmYWxzZSB9OwogICAgIEhhc2hNYXA8UEFMOjpT
ZXNzaW9uSUQsIFN0cmluZz4gbV9zd0RhdGFiYXNlUGF0aHM7CiAgICAgSGFzaE1hcDxQQUw6OlNl
c3Npb25JRCwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNXU2VydmVyPj4gbV9zd1NlcnZlcnM7
CiAgICAgSGFzaE1hcDxXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJT
V1NlcnZlckNvbm5lY3Rpb24qPiBtX3N3U2VydmVyQ29ubmVjdGlvbnM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5tZXNzYWdlcy5pbgpp
bmRleCBhYjJmNDg3YzA1NC4uODFkMTkzMGU0YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtNDUsNSAr
NDUsNyBAQCBtZXNzYWdlcyAtPiBTdG9yYWdlUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAg
UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJDbGllbnRJZGVudGlmaWVyIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgc3RydWN0IFdlYkNv
cmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzIG1lc3NhZ2UsIFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIFN0cmluZyBzb3VyY2VPcmlnaW4pCiAKICAg
ICBQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciBkZXN0aW5hdGlvbiwgc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRz
IG1lc3NhZ2UsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJPckNsaWVudElkZW50aWZpZXIgc291cmNl
LCBXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlm
aWVyKQorCisgICAgRGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSgp
CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1Byb2Nlc3NQb29sLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
UHJvY2Vzc1Bvb2wubW0KaW5kZXggNDNiZWU2ZWU1Y2IuLjg2MGM4YzMxMWQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQpAQCAt
NDI5LDYgKzQyOSwxMSBAQCBzdGF0aWMgTlNEaWN0aW9uYXJ5ICpwb2xpY2llc0hhc2hNYXBUb0Rp
Y3Rpb25hcnkoY29uc3QgSGFzaE1hcDxTdHJpbmcsIEhhc2hNYXA8UwogICAgIF9wcm9jZXNzUG9v
bC0+dGVybWluYXRlU2VydmljZVdvcmtlclByb2Nlc3NlcygpOwogfQogCistICh2b2lkKV9kaXNh
YmxlU2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5Cit7CisgICAgX3Byb2Nlc3NQ
b29sLT5kaXNhYmxlU2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5KCk7Cit9CisK
IC0gKHBpZF90KV9uZXR3b3JrUHJvY2Vzc0lkZW50aWZpZXIKIHsKICAgICByZXR1cm4gX3Byb2Nl
c3NQb29sLT5uZXR3b3JrUHJvY2Vzc0lkZW50aWZpZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgKaW5kZXgg
YTlkOTliY2VlZjguLmRhMTEzYjQ1MDE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaApAQCAtNzksNiArNzks
NyBAQAogLSAodm9pZClfdGVybWluYXRlU3RvcmFnZVByb2Nlc3M7CiAtICh2b2lkKV90ZXJtaW5h
dGVOZXR3b3JrUHJvY2VzczsKIC0gKHZvaWQpX3Rlcm1pbmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNz
ZXMgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7
CistICh2b2lkKV9kaXNhYmxlU2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5IFdL
X0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCiAv
LyBUZXN0IG9ubHkuCiAtIChwaWRfdClfbmV0d29ya1Byb2Nlc3NJZGVudGlmaWVyIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3N4KDEwLjEzKSwgaW9zKDExLjApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCAxYWUxMmE1NjQwMS4uNzc1MzQ5MTE2ZTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTU1Nyw2ICs1
NTcsOCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjplbnN1cmVTdG9yYWdlUHJvY2Vzc0FuZFdlYnNp
dGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZSogcgogCiAgICAgICAgIGlmICghbV9zY2hlbWVz
U2VydmljZVdvcmtlcnNDYW5IYW5kbGUuaXNFbXB0eSgpKQogICAgICAgICAgICAgcGFyYW1ldGVy
cy51cmxTY2hlbWVzU2VydmljZVdvcmtlcnNDYW5IYW5kbGUgPSBjb3B5VG9WZWN0b3IobV9zY2hl
bWVzU2VydmljZVdvcmtlcnNDYW5IYW5kbGUpOworCisgICAgICAgIHBhcmFtZXRlcnMuc2hvdWxk
RGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSA9IG1fc2hvdWxkRGlz
YWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheTsKICNlbmRpZgogCiAgICAg
ICAgIG1fc3RvcmFnZVByb2Nlc3MgPSBTdG9yYWdlUHJvY2Vzc1Byb3h5OjpjcmVhdGUoKnRoaXMp
OwpAQCAtNjE0LDcgKzYxNiw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtl
ckNvbnRleHRDb25uZWN0aW9uVG9TdG9yYWdlUHJvY2VzcyhTdG9yYWdlUHJvCiAKICAgICBBU1NF
UlQod2Vic2l0ZURhdGFTdG9yZS0+c2Vzc2lvbklEKCkuaXNWYWxpZCgpKTsKICAgICBpZiAod2Vi
c2l0ZURhdGFTdG9yZS0+c2Vzc2lvbklEKCkuaXNWYWxpZCgpKQotICAgICAgICBzZW5kVG9BbGxQ
cm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVu
dHMgeyB3ZWJzaXRlRGF0YVN0b3JlLT5zZXNzaW9uSUQoKSB9KTsKKyAgICAgICAgc2VuZFRvQWxs
UHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpSZWdpc3RlclNlcnZpY2VXb3JrZXJDbGll
bnRzIHsgd2Vic2l0ZURhdGFTdG9yZS0+c2Vzc2lvbklEKCkgfSwgSW5jbHVkZVNlcnZpY2VXb3Jr
ZXJQcm9jZXNzZXM6Ok5vKTsKIAogICAgIHVwZGF0ZVByb2Nlc3NBc3NlcnRpb25zKCk7CiAgICAg
aW5pdGlhbGl6ZU5ld1dlYlByb2Nlc3Moc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSwgKndlYnNp
dGVEYXRhU3RvcmUpOwpAQCAtNjI4LDYgKzYzMCwxNSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpl
c3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3MoU3RvcmFnZVBy
bwogfQogI2VuZGlmCiAKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmRpc2FibGVTZXJ2aWNlV29ya2Vy
UHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXkoKQoreworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
KyAgICBtX3Nob3VsZERpc2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXkg
PSB0cnVlOworICAgIGlmIChtX3N0b3JhZ2VQcm9jZXNzKQorICAgICAgICBtX3N0b3JhZ2VQcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzczo6RGlzYWJsZVNlcnZpY2VXb3JrZXJQ
cm9jZXNzVGVybWluYXRpb25EZWxheSgpLCAwKTsKKyNlbmRpZgorfQorCiB2b2lkIFdlYlByb2Nl
c3NQb29sOjp3aWxsU3RhcnRVc2luZ1ByaXZhdGVCcm93c2luZygpCiB7CiAgICAgZm9yIChhdXRv
KiBwcm9jZXNzUG9vbCA6IGFsbFByb2Nlc3NQb29scygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmgKaW5kZXggYWYxYjQwYjY1MDMuLmUyOGQyYjNjYWYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTE1NSw3ICsxNTUsOCBAQCBw
dWJsaWM6CiAgICAgLy8gV2ViUHJvY2VzcyBvciBOZXR3b3JrUHJvY2VzcyBhcyBhcHByb3Bvcmlh
dGUgZm9yIGN1cnJlbnQgcHJvY2VzcyBtb2RlbC4gVGhlIGNvbm5lY3Rpb24gbXVzdCBiZSBub24t
bnVsbC4KICAgICBJUEM6OkNvbm5lY3Rpb24qIG5ldHdvcmtpbmdQcm9jZXNzQ29ubmVjdGlvbigp
OwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBzZW5kVG9BbGxQcm9jZXNzZXMoY29u
c3QgVCYgbWVzc2FnZSk7CisgICAgZW51bSBjbGFzcyBJbmNsdWRlU2VydmljZVdvcmtlclByb2Nl
c3NlcyB7IE5vLCBZZXMgfTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIHNlbmRUb0Fs
bFByb2Nlc3Nlcyhjb25zdCBUJiBtZXNzYWdlLCBJbmNsdWRlU2VydmljZVdvcmtlclByb2Nlc3Nl
cyA9IEluY2x1ZGVTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzOjpZZXMpOwogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+IHZvaWQgc2VuZFRvQWxsUHJvY2Vzc2VzUmVsYXVuY2hpbmdUaGVtSWZOZWNlc3Nh
cnkoY29uc3QgVCYgbWVzc2FnZSk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBzZW5k
VG9PbmVQcm9jZXNzKFQmJiBtZXNzYWdlKTsKIApAQCAtMjcwLDYgKzI3MSw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHRlcm1pbmF0ZVN0b3JhZ2VQcm9jZXNzKCk7CiAgICAgdm9pZCB0ZXJtaW5hdGVO
ZXR3b3JrUHJvY2VzcygpOwogICAgIHZvaWQgdGVybWluYXRlU2VydmljZVdvcmtlclByb2Nlc3Nl
cygpOworICAgIHZvaWQgZGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxh
eSgpOwogCiAgICAgdm9pZCBzeW5jTmV0d29ya1Byb2Nlc3NDb29raWVzKCk7CiAKQEAgLTUxNyw2
ICs1MTksNyBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luPiwgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eSo+IG1fc2VydmljZVdvcmtlclByb2Nl
c3NlczsKICAgICBib29sIG1fd2FpdGluZ0ZvcldvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlv
biB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2FsbG93c0FueVNTTENlcnRpZmljYXRlRm9yU2Vydmlj
ZVdvcmtlciB7IGZhbHNlIH07CisgICAgYm9vbCBtX3Nob3VsZERpc2FibGVTZXJ2aWNlV29ya2Vy
UHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXkgeyBmYWxzZSB9OwogICAgIFN0cmluZyBtX3NlcnZpY2VX
b3JrZXJVc2VyQWdlbnQ7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJQcmVmZXJlbmNlc1N0b3JlPiBt
X3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlczsKICAgICBIYXNoTWFwPFN0cmluZywgYm9vbD4gbV9t
YXlIYXZlUmVnaXN0ZXJlZFNlcnZpY2VXb3JrZXJzOwpAQCAtNzAwLDEzICs3MDMsMTggQEAgdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6c2VuZFRvU3RvcmFnZVByb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNz
YXJ5KFQmJiBtZXNzYWdlKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6c2VuZFRvQWxsUHJvY2Vzc2VzKGNvbnN0IFQmIG1lc3NhZ2UpCit2b2lkIFdlYlBy
b2Nlc3NQb29sOjpzZW5kVG9BbGxQcm9jZXNzZXMoY29uc3QgVCYgbWVzc2FnZSwgSW5jbHVkZVNl
cnZpY2VXb3JrZXJQcm9jZXNzZXMgaW5jbHVkZVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMpCiB7CiAg
ICAgc2l6ZV90IHByb2Nlc3NDb3VudCA9IG1fcHJvY2Vzc2VzLnNpemUoKTsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHByb2Nlc3NDb3VudDsgKytpKSB7CiAgICAgICAgIFdlYlByb2Nlc3NQ
cm94eSogcHJvY2VzcyA9IG1fcHJvY2Vzc2VzW2ldLmdldCgpOwotICAgICAgICBpZiAocHJvY2Vz
cy0+Y2FuU2VuZE1lc3NhZ2UoKSkKLSAgICAgICAgICAgIHByb2Nlc3MtPnNlbmQoVChtZXNzYWdl
KSwgMCk7CisgICAgICAgIGlmICghcHJvY2Vzcy0+Y2FuU2VuZE1lc3NhZ2UoKSkKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICAgICAgaWYgKGlu
Y2x1ZGVTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzID09IEluY2x1ZGVTZXJ2aWNlV29ya2VyUHJvY2Vz
c2VzOjpObyAmJiBwcm9jZXNzLT5pc1NlcnZpY2VXb3JrZXJQcm9jZXNzKCkpCisgICAgICAgICAg
ICBjb250aW51ZTsKKyNlbmRpZgorICAgICAgICBwcm9jZXNzLT5zZW5kKFQobWVzc2FnZSksIDAp
OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCmluZGV4IDMw
YmM5NTA1ODhiLi45NDczZWVmNGQ2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
LmNwcApAQCAtMzI3LDYgKzMyNywxMiBAQCB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uOjpkaWRGaW5pc2hTa2lwV2FpdGluZyh1aW50NjRfdCBjYWxsYmFja0lEKQogICAgICAgICBj
YWxsYmFjaygpOwogfQogCitOT19SRVRVUk4gdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbjo6dGVybWluYXRlUHJvY2VzcygpCit7CisgICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtl
ciwgIlNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgaXMgZXhpdGluZyBiZWNhdXNlIGl0IGlzIG5vIGxv
bmdlciBuZWVkZWQiKTsKKyAgICBfZXhpdChFWElUX1NVQ0NFU1MpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAppbmRleCAzY2I3YzY4ZThmZi4uOGU4MjA3ZDY5ZGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaApAQCAtODcsNiArODcsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgY2xhaW1Db21wbGV0ZWQodWludDY0X3QgY2xhaW1SZXF1ZXN0SWRlbnRpZmll
cik7CiAgICAgdm9pZCBkaWRGaW5pc2hTa2lwV2FpdGluZyh1aW50NjRfdCBjYWxsYmFja0lEKTsK
ICAgICB2b2lkIHNldFVzZXJBZ2VudChTdHJpbmcmJiB1c2VyQWdlbnQpOworICAgIHZvaWQgdGVy
bWluYXRlUHJvY2VzcygpOwogCiAgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9u
VG9TdG9yYWdlUHJvY2VzczsKICAgICB1aW50NjRfdCBtX3BhZ2VHcm91cElEOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCA3MzdjNDFmZWQw
Zi4uMjdiZWUzMjNlYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
Lm1lc3NhZ2VzLmluCkBAIC0zNiw2ICszNiw3IEBAIG1lc3NhZ2VzIC0+IFdlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uIHsKICAgICBEaWRGaW5pc2hTa2lwV2FpdGluZyh1aW50NjRfdCBjYWxs
YmFja0lEKQogICAgIFNldFVzZXJBZ2VudChTdHJpbmcgdXNlckFnZW50KQogICAgIFVwZGF0ZVBy
ZWZlcmVuY2VzU3RvcmUoc3RydWN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSBzdG9yZSkK
KyAgICBUZXJtaW5hdGVQcm9jZXNzKCkKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1t
CmluZGV4IGEwY2ZiNmE1NzY3Li40ZGU2OGY5ZjkxZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW0KKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW0K
QEAgLTEzMTQsNiArMTMxNCw4IEBAIFRFU1QoU2VydmljZVdvcmtlcnMsIFByb2Nlc3NQZXJPcmln
aW4pCiAgICAgW2NvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1Bvb2wgX3JlZ2lzdGVyVVJMU2No
ZW1lU2VydmljZVdvcmtlcnNDYW5IYW5kbGU6QCJzdzEiXTsKICAgICBbY29uZmlndXJhdGlvbi5n
ZXQoKS5wcm9jZXNzUG9vbCBfcmVnaXN0ZXJVUkxTY2hlbWVTZXJ2aWNlV29ya2Vyc0NhbkhhbmRs
ZTpAInN3MiJdOwogCisgICAgW2NvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1Bvb2wgX2Rpc2Fi
bGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXldOworCiAgICAgUmV0YWluUHRy
PFdLV2ViVmlldz4gd2ViVmlldzEgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJh
dGlvbi5nZXQoKV0pOwogCiAgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0MSA9IFtOU1VSTFJlcXVl
c3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJzdzE6Ly9ob3N0L21haW4u
aHRtbCJdXTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336384</attachid>
            <date>2018-03-23 10:08:36 -0700</date>
            <delta_ts>2018-03-23 14:35:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183873-20180323100836.patch</filename>
            <type>text/plain</type>
            <size>35672</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5ODk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTczNDg3YWU5MzM3OTYz
NWU1ZGIzNzhlMTZhOTlmNDBjMTgyZTljNy4uM2YzYjNjYWIzOGE2MDE4NGU1NGNiNDQ2NTUwMTA2
ZDE3NjY2MjEwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE4LTAzLTIzICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUHJvbXB0bHkgdGVybWluYXRl
IHNlcnZpY2Ugd29ya2VyIHByb2Nlc3NlcyB3aGVuIHRoZXkgYXJlIG5vIGxvbmdlciBuZWVkZWQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mzg3Mwor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzg2NzY5OTU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIFN0b3JhZ2VQcm9jZXNzIG5vdyBrZWVwcyB0
cmFjayBvZiBzZXJ2aWNlIHdvcmtlciBjbGllbnRzIGZvciBlYWNoIHNlY3VyaXR5CisgICAgICAg
IG9yaWdpbi4gV2hlbiB0aGVyZSBpcyBubyBsb25nZXIgYW55IGNsaWVudHMgZm9yIGEgZ2l2ZW4g
c2VjdXJpdHkgb3JpZ2luLCB0aGUKKyAgICAgICAgU3RvcmFnZVByb2Nlc3MgYXNrcyB0aGUgc2Vy
dmljZSB3b3JrZXIgcHJvY2VzcyBmb3IgdGhlIGdpdmVuIG9yaWdpbiB0byB0ZXJtaW5hdGUKKyAg
ICAgICAgYW5kIHNldmVycyBpdHMgY29ubmVjdGlvbiB0byBpdC4KKworICAgICAgICBDaGFuZ2Ug
aXMgY292ZXJlZCBieSBBUEkgdGVzdC4KKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6Om1hcmtBbGxXb3Jr
ZXJzRm9yT3JpZ2luQXNUZXJtaW5hdGVkKToKKyAgICAgICAgUGFzcyB0aGUgc2VjdXJpdHkgb3Jp
Z2luIHNpbmNlIHRoaXMgaXMgY2FsbGVkIHdoZW4gYSBzZXJ2aWNlIHdvcmtlciBwcm9jZXNzCisg
ICAgICAgIGNyYXNoZXMuIFdoZW4gYSBzZXJ2aWNlIHdvcmtlciBwcm9jZXNzIGZvciBvcmlnaW4g
QSBjcmFzaGVzLCB3ZSBvbmx5IHdhbnQKKyAgICAgICAgdG8gbWFyayBzZXJ2aWNlIHdvcmtlcnMg
aW4gb3JpZ2luIEEgYXMgdGVybWluYXRlZCwgbm90IEFMTCBvZiB0aGVtLgorCisgICAgICAgIChX
ZWJDb3JlOjpTV1NlcnZlcjo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlNXU2VydmVyOjp1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6bmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9y
T3JpZ2luIGNvbnN0KToKKyAgICAgICAgVHdlYWsgbG9naWMgc28gdGhhdCB3ZSBvbmx5IHJlbGF1
bmNoIGEgc2VydmljZSB3b3JrZXIgcHJvY2VzcyBpZiB3ZSBzdGlsbAorICAgICAgICBoYXZlIGNs
aWVudHMgZm9yIGl0cyBzZWN1cml0eSBvcmlnaW4uCisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6ZGlzYWJs
ZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSk6CisgICAgICAgIEFkZCBhIHdh
eSB0byBkaXNhYmxlIHRoZSBzZXJ2aWNlIHdvcmtlciB0ZXJtaW5hdGlvbiBkZWxheSB0byBmYWNp
bGl0YXRlCisgICAgICAgIHRlc3RpbmcuCisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOgorCiAyMDE4LTAzLTIzICBNaWd1ZWwg
R29tZXogIDxtYWdvbWV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bV1BFXSBBdm9pZCBz
b2Z0d2FyZSBjb2xvciBjb252ZXJzaW9uIGluc2lkZSBCaXRtYXBUZXh0dXJlR0wKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5k
ZXggNWQzMmU0MmRlNzM1YzlmYTk5ZWExODNkMTYxNTA5NDQwNzhjMTY4YS4uM2Q0NTJjNTRlYTk3
MjY2MmIzYmNlNzFmMDIzOTZjODUxZjcxZGQ5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OSBAQAor
MjAxOC0wMy0yMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFBy
b21wdGx5IHRlcm1pbmF0ZSBzZXJ2aWNlIHdvcmtlciBwcm9jZXNzZXMgd2hlbiB0aGV5IGFyZSBu
byBsb25nZXIgbmVlZGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODM4NzMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM4Njc2OTk1PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBTdG9yYWdlUHJv
Y2VzcyBub3cga2VlcHMgdHJhY2sgb2Ygc2VydmljZSB3b3JrZXIgY2xpZW50cyBmb3IgZWFjaCBz
ZWN1cml0eQorICAgICAgICBvcmlnaW4uIFdoZW4gdGhlcmUgaXMgbm8gbG9uZ2VyIGFueSBjbGll
bnRzIGZvciBhIGdpdmVuIHNlY3VyaXR5IG9yaWdpbiwgdGhlCisgICAgICAgIFN0b3JhZ2VQcm9j
ZXNzIGFza3MgdGhlIHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgZm9yIHRoZSBnaXZlbiBvcmlnaW4g
dG8gdGVybWluYXRlCisgICAgICAgIGFuZCBzZXZlcnMgaXRzIGNvbm5lY3Rpb24gdG8gaXQuCisK
KyAgICAgICAgKiBTaGFyZWQvU3RvcmFnZS9TdG9yYWdlUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5oOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uOjpjb25uZWN0aW9uTWF5Tm9Mb25nZXJCZU5lZWRlZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6dGVybWluYXRlKToKKyAg
ICAgICAgKiBTdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5oOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVByb2Nlc3M6OmNvbm5lY3Rpb25Ub0NvbnRleHRQ
cm9jZXNzV2FzQ2xvc2VkKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVByb2Nlc3M6Om5lZWRz
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvck9yaWdpbiBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6OlN0b3JhZ2VQcm9jZXNzOjppbml0aWFsaXplV2Vic2l0ZURhdGFTdG9yZSk6CisgICAgICAg
IChXZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzOjpzd1NlcnZlckZvclNlc3Npb24pOgorICAgICAgICAo
V2ViS2l0OjpTdG9yYWdlUHJvY2Vzczo6c3dDb250ZXh0Q29ubmVjdGlvbk1heU5vTG9uZ2VyQmVO
ZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlUHJvY2Vzczo6ZGlzYWJsZVNlcnZpY2VX
b3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSk6CisgICAgICAgICogU3RvcmFnZVByb2Nlc3Mv
U3RvcmFnZVByb2Nlc3MuaDoKKyAgICAgICAgKiBTdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vz
cy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bv
b2wubW06CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX2Rpc2FibGVTZXJ2aWNlV29ya2VyUHJv
Y2Vzc1Rlcm1pbmF0aW9uRGVsYXldKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
UHJvY2Vzc1Bvb2xQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZVN0b3JhZ2VQcm9j
ZXNzQW5kV2Vic2l0ZURhdGFTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29s
Ojplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3MpOgorICAg
ICAgICBPbmx5IHNlbmQgdGhlIFdlYlByb2Nlc3M6OlJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVu
dHMgSVBDIHRvIFdlYiBwcm9jZXNzZXMgdGhhdAorICAgICAgICBhcmUgbm90IHNlcnZpY2Ugd29y
a2VyIHByb2Nlc3Nlcy4gU2VydmljZSB3b3JrZXIgcHJvY2Vzc2VzIGhhdmUgYSBkdW1teSBkb2N1
bWVudAorICAgICAgICBhbmQgdGhpcyBkdW1teSBkb2N1bWVudCB3b3VsZCByZWdpc3RlciBpdHNl
bGYgYXMgYSBjbGllbnQgb3RoZXJ3aXNlLiBUaGlzIHdvdWxkCisgICAgICAgIHByZXZlbnQgdGhl
IHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgZnJvbSBldmVyIGJlaW5nIHRlcm1pbmF0ZWQuCisKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmRpc2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vz
c1Rlcm1pbmF0aW9uRGVsYXkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5o
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2VuZFRvQWxsUHJvY2Vzc2VzKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6
dGVybWluYXRlUHJvY2Vzcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluOgorCiAyMDE4LTAzLTIzICBN
aWd1ZWwgR29tZXogIDxtYWdvbWV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bV1BFXSBB
dm9pZCBzb2Z0d2FyZSBjb2xvciBjb252ZXJzaW9uIGluc2lkZSBCaXRtYXBUZXh0dXJlR0wKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAK
aW5kZXggYTc0YTFhYjAyNDAyOWNhZDUxODI0OTA3NDFmMDdkZjkwYjM1ZDQ1ZS4uZDFmMTFmZDlh
MjA4YTA0NTVmZDRjODI0NTFlNGY5MzY1ZWM4NGQwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKQEAgLTY0MSwxMCArNjQxLDE1
IEBAIHZvaWQgU1dTZXJ2ZXI6OnRlcm1pbmF0ZVdvcmtlckludGVybmFsKFNXU2VydmVyV29ya2Vy
JiB3b3JrZXIsIFRlcm1pbmF0aW9uTW9kZSBtCiAgICAgfTsKIH0KIAotdm9pZCBTV1NlcnZlcjo6
bWFya0FsbFdvcmtlcnNBc1Rlcm1pbmF0ZWQoKQordm9pZCBTV1NlcnZlcjo6bWFya0FsbFdvcmtl
cnNGb3JPcmlnaW5Bc1Rlcm1pbmF0ZWQoY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikKIHsK
LSAgICB3aGlsZSAoIW1fcnVubmluZ09yVGVybWluYXRpbmdXb3JrZXJzLmlzRW1wdHkoKSkKLSAg
ICAgICAgd29ya2VyQ29udGV4dFRlcm1pbmF0ZWQobV9ydW5uaW5nT3JUZXJtaW5hdGluZ1dvcmtl
cnMuYmVnaW4oKS0+dmFsdWUpOworICAgIFZlY3RvcjxTV1NlcnZlcldvcmtlcio+IHRlcm1pbmF0
ZWRXb3JrZXJzOworICAgIGZvciAoYXV0byYgd29ya2VyIDogbV9ydW5uaW5nT3JUZXJtaW5hdGlu
Z1dvcmtlcnMudmFsdWVzKCkpIHsKKyAgICAgICAgaWYgKG9yaWdpbi5pc1NhbWVTY2hlbWVIb3N0
UG9ydCh3b3JrZXItPnNlY3VyaXR5T3JpZ2luKCkpKQorICAgICAgICAgICAgdGVybWluYXRlZFdv
cmtlcnMuYXBwZW5kKHdvcmtlci5wdHIoKSk7CisgICAgfQorICAgIGZvciAoYXV0byYgdGVybWlu
YXRlZFdvcmtlciA6IHRlcm1pbmF0ZWRXb3JrZXJzKQorICAgICAgICB3b3JrZXJDb250ZXh0VGVy
bWluYXRlZCgqdGVybWluYXRlZFdvcmtlcik7CiB9CiAKIHZvaWQgU1dTZXJ2ZXI6OndvcmtlckNv
bnRleHRUZXJtaW5hdGVkKFNXU2VydmVyV29ya2VyJiB3b3JrZXIpCkBAIC03MjksMTIgKzczNCwx
OSBAQCB2b2lkIFNXU2VydmVyOjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoQ2xpZW50T3Jp
Z2luJiYgY2xpZW50T3JpZ2luLCBTZXJ2aWNlVwogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9jbGll
bnRzQnlJZC5hZGQoY2xpZW50SWRlbnRpZmllciwgV1RGTW92ZShkYXRhKSk7CiAgICAgQVNTRVJU
X1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKIAorICAgIGF1dG8gc2Vj
dXJpdHlPcmlnaW4gPSBjbGllbnRPcmlnaW4uY2xpZW50T3JpZ2luLnNlY3VyaXR5T3JpZ2luKCk7
CisKICAgICBhdXRvJiBjbGllbnRJZGVudGlmaWVyc0Zvck9yaWdpbiA9IG1fY2xpZW50SWRlbnRp
ZmllcnNQZXJPcmlnaW4uZW5zdXJlKFdURk1vdmUoY2xpZW50T3JpZ2luKSwgW10gewogICAgICAg
ICByZXR1cm4gQ2xpZW50cyB7IH07CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogICAgIGNsaWVu
dElkZW50aWZpZXJzRm9yT3JpZ2luLmlkZW50aWZpZXJzLmFwcGVuZChjbGllbnRJZGVudGlmaWVy
KTsKICAgICBjbGllbnRJZGVudGlmaWVyc0Zvck9yaWdpbi50ZXJtaW5hdGVTZXJ2aWNlV29ya2Vy
c1RpbWVyID0gbnVsbHB0cjsKIAorICAgIGF1dG8mIGNsaWVudElkZW50aWZpZXJzRm9yU2VjdXJp
dHlPcmlnaW4gPSBtX2NsaWVudHNCeVNlY3VyaXR5T3JpZ2luLmVuc3VyZShXVEZNb3ZlKHNlY3Vy
aXR5T3JpZ2luKSwgW10geworICAgICAgICByZXR1cm4gVmVjdG9yPFNlcnZpY2VXb3JrZXJDbGll
bnRJZGVudGlmaWVyPiB7IH07CisgICAgfSkuaXRlcmF0b3ItPnZhbHVlOworICAgIGNsaWVudElk
ZW50aWZpZXJzRm9yU2VjdXJpdHlPcmlnaW4uYXBwZW5kKGNsaWVudElkZW50aWZpZXIpOworCiAg
ICAgaWYgKCFjb250cm9sbGluZ1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKQog
ICAgICAgICByZXR1cm47CiAKQEAgLTc0OSw2ICs3NjEsOCBAQCB2b2lkIFNXU2VydmVyOjpyZWdp
c3RlclNlcnZpY2VXb3JrZXJDbGllbnQoQ2xpZW50T3JpZ2luJiYgY2xpZW50T3JpZ2luLCBTZXJ2
aWNlVwogCiB2b2lkIFNXU2VydmVyOjp1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChjb25z
dCBDbGllbnRPcmlnaW4mIGNsaWVudE9yaWdpbiwgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZp
ZXIgY2xpZW50SWRlbnRpZmllcikKIHsKKyAgICBhdXRvIHNlY3VyaXR5T3JpZ2luID0gY2xpZW50
T3JpZ2luLmNsaWVudE9yaWdpbi5zZWN1cml0eU9yaWdpbigpOworCiAgICAgYm9vbCB3YXNSZW1v
dmVkID0gbV9jbGllbnRzQnlJZC5yZW1vdmUoY2xpZW50SWRlbnRpZmllcik7CiAgICAgQVNTRVJU
X1VOVVNFRCh3YXNSZW1vdmVkLCB3YXNSZW1vdmVkKTsKIApAQCAtNzYwLDE3ICs3NzQsMzYgQEAg
dm9pZCBTV1NlcnZlcjo6dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgQ2xpZW50
T3JpZ2luJiBjbGllbnRPcmlnaW4sIFMKICAgICAgICAgcmV0dXJuIGNsaWVudElkZW50aWZpZXIg
PT0gaWRlbnRpZmllcjsKICAgICB9KTsKICAgICBpZiAoY2xpZW50SWRlbnRpZmllcnMuaXNFbXB0
eSgpKSB7Ci0gICAgICAgIEFTU0VSVCghaXRlcmF0b3ItPnZhbHVlLnRlcm1pbmF0ZVNlcnZpY2VX
b3JrZXJzVGltZXIpOwotICAgICAgICBpdGVyYXRvci0+dmFsdWUudGVybWluYXRlU2VydmljZVdv
cmtlcnNUaW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8VGltZXI+KFtjbGllbnRPcmlnaW4sIHRoaXNd
IHsKKyAgICAgICAgYXV0byB0ZXJtaW5hdGVXb3JrZXJzSW5DbGllbnRPcmlnaW4gPSBbY2xpZW50
T3JpZ2luLCBzZWN1cml0eU9yaWdpbiA9IHNlY3VyaXR5T3JpZ2luLmNvcHlSZWYoKSwgdGhpc10g
ewogICAgICAgICAgICAgZm9yIChhdXRvJiB3b3JrZXIgOiBtX3J1bm5pbmdPclRlcm1pbmF0aW5n
V29ya2Vycy52YWx1ZXMoKSkgewogICAgICAgICAgICAgICAgIGlmICh3b3JrZXItPmlzUnVubmlu
ZygpICYmIHdvcmtlci0+b3JpZ2luKCkgPT0gY2xpZW50T3JpZ2luKQogICAgICAgICAgICAgICAg
ICAgICB0ZXJtaW5hdGVXb3JrZXIod29ya2VyKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGlmICghbV9jbGllbnRzQnlTZWN1cml0eU9yaWdpbi5jb250YWlucyhzZWN1cml0eU9yaWdpbi5w
dHIoKSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IFNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlvbkZvck9yaWdpbihzZWN1cml0eU9yaWdpbikp
CisgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24tPmNvbm5lY3Rpb25NYXlOb0xvbmdlckJl
TmVlZGVkKCk7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIG1fY2xpZW50SWRlbnRpZmll
cnNQZXJPcmlnaW4ucmVtb3ZlKGNsaWVudE9yaWdpbik7Ci0gICAgICAgIH0pOwotICAgICAgICBp
dGVyYXRvci0+dmFsdWUudGVybWluYXRlU2VydmljZVdvcmtlcnNUaW1lci0+c3RhcnRPbmVTaG90
KHRlcm1pbmF0aW9uRGVsYXkpOworICAgICAgICB9OworICAgICAgICBpZiAobV9zaG91bGREaXNh
YmxlU2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5KQorICAgICAgICAgICAgdGVy
bWluYXRlV29ya2Vyc0luQ2xpZW50T3JpZ2luKCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgQVNTRVJUKCFpdGVyYXRvci0+dmFsdWUudGVybWluYXRlU2VydmljZVdvcmtlcnNUaW1lcik7
CisgICAgICAgICAgICBpdGVyYXRvci0+dmFsdWUudGVybWluYXRlU2VydmljZVdvcmtlcnNUaW1l
ciA9IHN0ZDo6bWFrZV91bmlxdWU8VGltZXI+KFdURk1vdmUodGVybWluYXRlV29ya2Vyc0luQ2xp
ZW50T3JpZ2luKSk7CisgICAgICAgICAgICBpdGVyYXRvci0+dmFsdWUudGVybWluYXRlU2Vydmlj
ZVdvcmtlcnNUaW1lci0+c3RhcnRPbmVTaG90KHRlcm1pbmF0aW9uRGVsYXkpOworICAgICAgICB9
CiAgICAgfQogCisgICAgYXV0byBjbGllbnRzQnlTZWN1cml0eU9yaWdpbkl0ZXJhdG9yID0gbV9j
bGllbnRzQnlTZWN1cml0eU9yaWdpbi5maW5kKHNlY3VyaXR5T3JpZ2luLnB0cigpKTsKKyAgICBB
U1NFUlQoY2xpZW50c0J5U2VjdXJpdHlPcmlnaW5JdGVyYXRvciAhPSBtX2NsaWVudHNCeVNlY3Vy
aXR5T3JpZ2luLmVuZCgpKTsKKyAgICBhdXRvJiBjbGllbnRzRm9yU2VjdXJpdHlPcmlnaW4gPSBj
bGllbnRzQnlTZWN1cml0eU9yaWdpbkl0ZXJhdG9yLT52YWx1ZTsKKyAgICBjbGllbnRzRm9yU2Vj
dXJpdHlPcmlnaW4ucmVtb3ZlRmlyc3RNYXRjaGluZyhbJl0gKGNvbnN0IGF1dG8mIGlkZW50aWZp
ZXIpIHsKKyAgICAgICAgcmV0dXJuIGNsaWVudElkZW50aWZpZXIgPT0gaWRlbnRpZmllcjsKKyAg
ICB9KTsKKyAgICBpZiAoY2xpZW50c0ZvclNlY3VyaXR5T3JpZ2luLmlzRW1wdHkoKSkKKyAgICAg
ICAgbV9jbGllbnRzQnlTZWN1cml0eU9yaWdpbi5yZW1vdmUoY2xpZW50c0J5U2VjdXJpdHlPcmln
aW5JdGVyYXRvcik7CisKICAgICBhdXRvIHJlZ2lzdHJhdGlvbkl0ZXJhdG9yID0gbV9jbGllbnRU
b0NvbnRyb2xsaW5nUmVnaXN0cmF0aW9uLmZpbmQoY2xpZW50SWRlbnRpZmllcik7CiAgICAgaWYg
KHJlZ2lzdHJhdGlvbkl0ZXJhdG9yID09IG1fY2xpZW50VG9Db250cm9sbGluZ1JlZ2lzdHJhdGlv
bi5lbmQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNzgxLDYgKzgxNCwxMSBAQCB2b2lkIFNXU2Vy
dmVyOjp1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChjb25zdCBDbGllbnRPcmlnaW4mIGNs
aWVudE9yaWdpbiwgUwogICAgIG1fY2xpZW50VG9Db250cm9sbGluZ1JlZ2lzdHJhdGlvbi5yZW1v
dmUocmVnaXN0cmF0aW9uSXRlcmF0b3IpOwogfQogCitib29sIFNXU2VydmVyOjpuZWVkc1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb25Gb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9jbGllbnRzQnlTZWN1cml0eU9yaWdpbi5jb250YWlucygmb3Jp
Z2luKTsKK30KKwogdm9pZCBTV1NlcnZlcjo6cmVzb2x2ZVJlZ2lzdHJhdGlvblJlYWR5UmVxdWVz
dHMoU1dTZXJ2ZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJhdGlvbikKIHsKICAgICBmb3IgKGF1dG8q
IGNvbm5lY3Rpb24gOiBtX2Nvbm5lY3Rpb25zLnZhbHVlcygpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCmluZGV4IDRjMDZlNWU3YzU1Mzgw
N2NmNDlkYjZkZjQwMzc1NzM3NjcwMWEzMmUuLjUxOTcxMzFkMDUxNDE0OWNhODIzMmExZjhiYTA4
Y2U4NmZjOGY2YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyLmgKQEAgLTE0NSw3ICsxNDUsNyBAQCBwdWJsaWM6CiAgICAgc3RkOjpvcHRp
b25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4gc2VydmljZVdvcmtlckNsaWVudFdpdGhPcmln
aW5CeUlEKGNvbnN0IENsaWVudE9yaWdpbiYsIGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVu
dGlmaWVyJikgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU1dTZXJ2ZXJXb3JrZXIqIGFjdGl2
ZVdvcmtlckZyb21SZWdpc3RyYXRpb25JRChTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRp
Zmllcik7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG1hcmtBbGxXb3JrZXJzQXNUZXJtaW5h
dGVkKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBtYXJrQWxsV29ya2Vyc0Zvck9yaWdpbkFz
VGVybWluYXRlZChjb25zdCBTZWN1cml0eU9yaWdpbiYpOwogICAgIAogICAgIENvbm5lY3Rpb24q
IGdldENvbm5lY3Rpb24oU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKSB7
IHJldHVybiBtX2Nvbm5lY3Rpb25zLmdldChpZGVudGlmaWVyKTsgfQogICAgIFNXT3JpZ2luU3Rv
cmUmIG9yaWdpblN0b3JlKCkgeyByZXR1cm4gbV9vcmlnaW5TdG9yZTsgfQpAQCAtMTc3LDYgKzE3
Nyw5IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldE9yaWdpbnNXaXRoUmVn
aXN0cmF0aW9ucyhGdW5jdGlvbjx2b2lkKGNvbnN0IEhhc2hTZXQ8U2VjdXJpdHlPcmlnaW5EYXRh
PiYpPiYmKTsKIAogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJu
IG1fc2Vzc2lvbklEOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBuZWVkc1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb25Gb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4mKSBjb25zdDsKKworICAgIHZv
aWQgZGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSgpIHsgbV9zaG91
bGREaXNhYmxlU2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5ID0gdHJ1ZTsgfQog
CiBwcml2YXRlOgogICAgIHZvaWQgcmVnaXN0ZXJDb25uZWN0aW9uKENvbm5lY3Rpb24mKTsKQEAg
LTIxNSw2ICsyMTgsNyBAQCBwcml2YXRlOgogCiAgICAgSGFzaE1hcDxTZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgUmVmPFNXU2VydmVyV29ya2VyPj4gbV9ydW5uaW5nT3JUZXJtaW5hdGluZ1dvcmtl
cnM7CiAKKyAgICBIYXNoTWFwPFJlZlB0cjxTZWN1cml0eU9yaWdpbj4sIFZlY3RvcjxTZXJ2aWNl
V29ya2VyQ2xpZW50SWRlbnRpZmllcj4+IG1fY2xpZW50c0J5U2VjdXJpdHlPcmlnaW47CiAgICAg
c3RydWN0IENsaWVudHMgewogICAgICAgICBWZWN0b3I8U2VydmljZVdvcmtlckNsaWVudElkZW50
aWZpZXI+IGlkZW50aWZpZXJzOwogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGltZXI+IHRlcm1p
bmF0ZVNlcnZpY2VXb3JrZXJzVGltZXI7CkBAIC0yMjksNiArMjMzLDcgQEAgcHJpdmF0ZToKICAg
ICBIYXNoTWFwPFJlZlB0cjxTZWN1cml0eU9yaWdpbj4sIEhhc2hNYXA8U2VydmljZVdvcmtlcklk
ZW50aWZpZXIsIFZlY3RvcjxSdW5TZXJ2aWNlV29ya2VyQ2FsbGJhY2s+Pj4gbV9zZXJ2aWNlV29y
a2VyUnVuUmVxdWVzdHM7CiAgICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAgICAgYm9v
bCBtX2ltcG9ydENvbXBsZXRlZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX3Nob3VsZERpc2FibGVT
ZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXkgeyBmYWxzZSB9OwogICAgIFZlY3Rv
cjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+PiBtX2NsZWFyQ29tcGxldGlvbkNhbGxiYWNrczsK
ICAgICBWZWN0b3I8RnVuY3Rpb248dm9pZChjb25zdCBIYXNoU2V0PFNlY3VyaXR5T3JpZ2luRGF0
YT4mKT4+IG1fZ2V0T3JpZ2luc1dpdGhSZWdpc3RyYXRpb25zQ2FsbGJhY2tzOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCmluZGV4IDRhYzNkNWY3YzYzYTEwMTQzODUx
MzIzNmY2NDg0Y2ZkM2U2OGY1MmYuLjZmMTAyYmM1MjViNzBkMDUzNGU3ZjcxMGE0NGYyNTk5ODM2
YWE5YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAtNzgsNiAr
NzgsOCBAQCBwdWJsaWM6CiAKICAgICBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKCkgeyByZXR1cm4g
bV9vcmlnaW4uZ2V0KCk7IH0KIAorICAgIHZpcnR1YWwgdm9pZCBjb25uZWN0aW9uTWF5Tm9Mb25n
ZXJCZU5lZWRlZCgpID0gMDsKKwogcHJvdGVjdGVkOgogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxp
Y2l0IFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihSZWY8U2VjdXJpdHlPcmlnaW4+JiYpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TdG9yYWdlL1N0b3Jh
Z2VQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggNjc2ODBkZjEyZGY0N2NhOTIzOTM5
YmNkYWM5ODZjOGEyMmNmZmE4YS4uZmQ5NzA3NGY4MjE2NmJjOTI0YjcxOWUyODRkNjNhOTI3ODVj
YWIxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU3RvcmFnZS9TdG9yYWdlUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1N0b3Jh
Z2UvU3RvcmFnZVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtNTQsNiArNTQsNyBAQCBz
dHJ1Y3QgU3RvcmFnZVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgewogICAgIFN0cmluZyBzZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5OwogICAgIFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwog
ICAgIFZlY3RvcjxTdHJpbmc+IHVybFNjaGVtZXNTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZTsKKyAg
ICBib29sIHNob3VsZERpc2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXkg
eyBmYWxzZSB9OwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3Jh
Z2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNw
cCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24uY3BwCmluZGV4IGZjY2M4MzdlYzYwNDExNDY3ODE4OWE3YjQz
OGNlMmE5NWViNmYyM2IuLjE0ODUwYWNkZjZmMWZiZTg4OTVkOTMwNWQwNTEzNDZmOTk4MmQ4OGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU3Rv
cmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
Y3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKKyNp
bmNsdWRlICJTdG9yYWdlUHJvY2Vzcy5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVy
cy5oIgogI2luY2x1ZGUgIldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oPgpAQCAtMTAyLDYg
KzEwMywxNiBAQCB2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6ZGlkRmluaXNo
U2tpcFdhaXRpbmcodWludDY0X3QgY2FsbGJhY2tJRCkKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6RGlkRmluaXNoU2tpcFdhaXRpbmcgeyBjYWxsYmFj
a0lEIH0pOwogfQogCit2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVj
dGlvbk1heU5vTG9uZ2VyQmVOZWVkZWQoKQoreworICAgIFN0b3JhZ2VQcm9jZXNzOjpzaW5nbGV0
b24oKS5zd0NvbnRleHRDb25uZWN0aW9uTWF5Tm9Mb25nZXJCZU5lZWRlZCgqdGhpcyk7Cit9CisK
K3ZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp0ZXJtaW5hdGUoKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpUZXJtaW5hdGVQ
cm9jZXNzKCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nl
c3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJj
ZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uaAppbmRleCBkNDZhZjViNzJlOTkzNDcwZWE1YTgyY2I1YmQwYmU5ZTdiN2Fm
NmEzLi5iYjEwYmRlZjkyY2VmYTU2MmE3OGQ4Zjk1MjFkYzM4ZTcxZGJjNjdiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCkBAIC00Nyw2ICs0
Nyw4IEBAIHB1YmxpYzoKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlk
UmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CiAK
KyAgICB2b2lkIHRlcm1pbmF0ZSgpOworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbihSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYsIFJl
ZjxJUEM6OkNvbm5lY3Rpb24+JiYpOwogCkBAIC02NSw2ICs2Nyw4IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBjbGFpbUNvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllcikgZmluYWw7CiAg
ICAgdm9pZCBkaWRGaW5pc2hTa2lwV2FpdGluZyh1aW50NjRfdCBjYWxsYmFja0lEKSBmaW5hbDsK
IAorICAgIHZvaWQgY29ubmVjdGlvbk1heU5vTG9uZ2VyQmVOZWVkZWQoKSBmaW5hbDsKKwogICAg
IFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1faXBjQ29ubmVjdGlvbjsKICAgICAKIH07IC8vIGNsYXNz
IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1N0b3Jh
Z2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcAppbmRleCBiZDFhZDUwYTgxZjRhNTNlOTIxZGUx
YWMzZGQ4OTBlZGIxNWY4ODI1Li43NTQ0ZDU4ZDI0NzdhNzZkYjVjMzAxOTVmYmZjMWM1MDQyNjVh
YTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9j
ZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNz
LmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIlN0b3JhZ2VQcm9jZXNzLmgiCiAKICNp
bmNsdWRlICJDaGlsZFByb2Nlc3NNZXNzYWdlcy5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNp
bmNsdWRlICJTdG9yYWdlUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIlN0
b3JhZ2VQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJTdG9yYWdlUHJvY2Vzc1Byb3h5TWVz
c2FnZXMuaCIKQEAgLTExMSwzMiArMTEyLDI2IEBAIHZvaWQgU3RvcmFnZVByb2Nlc3M6OmRpZENs
b3NlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCiB2b2lkIFN0b3JhZ2VQcm9jZXNzOjpjb25uZWN0aW9uVG9Db250ZXh0UHJvY2Vzc1dhc0Ns
b3NlZChSZWY8V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uPiYmIHNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24pCiB7Ci0gICAgUmVmPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBzZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLT5vcmlnaW4oKTsKLSAgICBib29sIHNob3VsZFJlbGF1bmNoID0g
bmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2luKG9yaWdpbik7Ci0KICAgICBz
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLT5jb25uZWN0aW9uQ2xvc2VkKCk7Ci0gICAgbV9zZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9ucy5yZW1vdmUob3JpZ2luLnB0cigpKTsKKyAgICBtX3NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb25zLnJlbW92ZSgmc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi0+
b3JpZ2luKCkpOwogCiAgICAgZm9yIChhdXRvJiBzd1NlcnZlciA6IG1fc3dTZXJ2ZXJzLnZhbHVl
cygpKQotICAgICAgICBzd1NlcnZlci0+bWFya0FsbFdvcmtlcnNBc1Rlcm1pbmF0ZWQoKTsKKyAg
ICAgICAgc3dTZXJ2ZXItPm1hcmtBbGxXb3JrZXJzRm9yT3JpZ2luQXNUZXJtaW5hdGVkKHNlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24tPm9yaWdpbigpKTsKIAotICAgIGlmIChzaG91bGRSZWxhdW5j
aCkKKyAgICBSZWY8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IHNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24tPm9yaWdpbigpOworICAgIGlmIChuZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25G
b3JPcmlnaW4ob3JpZ2luKSkgeworICAgICAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAi
Q29ubmVjdGlvbiB0byBzZXJ2aWNlIHdvcmtlciBwcm9jZXNzIHdhcyBjbG9zZWQgYnV0IGlzIHN0
aWxsIG5lZWRlZCwgcmVsYXVuY2hpbmcgaXQiKTsKICAgICAgICAgY3JlYXRlU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbihvcmlnaW4sIHN0ZDo6bnVsbG9wdCk7CisgICAgfQogfQogCi0vLyBUaGUg
cnVsZSBpcyB0aGF0IHdlIG5lZWQgYSBjb250ZXh0IHByb2Nlc3MgKGFuZCBhIGNvbm5lY3Rpb24g
dG8gaXQpIGFzIGxvbmcgYXMgd2UgaGF2ZSBTV1NlcnZlckNvbm5lY3Rpb25zIHRvIHJlZ3VsYXIg
V2ViUHJvY2Vzc2VzLgogYm9vbCBTdG9yYWdlUHJvY2Vzczo6bmVlZHNTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uRm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pIGNvbnN0CiB7Ci0gICAg
aWYgKG1fc3dTZXJ2ZXJDb25uZWN0aW9ucy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIGF1dG8qIGNvbnRleHRDb25uZWN0aW9uID0gbV9zZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9ucy5nZXQoJm9yaWdpbik7Ci0KLSAgICAvLyBJZiB0aGUgbGFzdCBTV1NlcnZlckNvbm5l
Y3Rpb24gaXMgdG8gdGhlIGNvbnRleHQgcHJvY2VzcywgdGhlbiB3ZSBubyBsb25nZXIgbmVlZCB0
aGUgY29udGV4dCBjb25uZWN0aW9uLgotICAgIGlmIChtX3N3U2VydmVyQ29ubmVjdGlvbnMuc2l6
ZSgpID09IDEgJiYgY29udGV4dENvbm5lY3Rpb24gJiYgJm1fc3dTZXJ2ZXJDb25uZWN0aW9ucy5i
ZWdpbigpLT52YWx1ZS0+aXBjQ29ubmVjdGlvbigpID09IGNvbnRleHRDb25uZWN0aW9uLT5pcGND
b25uZWN0aW9uKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiB0cnVlOwor
ICAgIGZvciAoYXV0byYgc3dTZXJ2ZXIgOiBtX3N3U2VydmVycy52YWx1ZXMoKSkgeworICAgICAg
ICBpZiAoc3dTZXJ2ZXItPm5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvck9yaWdpbihv
cmlnaW4pKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxz
ZTsKIH0KICNlbmRpZgogCkBAIC0yMTYsNiArMjExLDggQEAgdm9pZCBTdG9yYWdlUHJvY2Vzczo6
aW5pdGlhbGl6ZVdlYnNpdGVEYXRhU3RvcmUoY29uc3QgU3RvcmFnZVByb2Nlc3NDcmVhdGlvblBh
cmEKIAogICAgIGZvciAoYXV0byYgc2NoZW1lIDogcGFyYW1ldGVycy51cmxTY2hlbWVzU2Vydmlj
ZVdvcmtlcnNDYW5IYW5kbGUpCiAgICAgICAgIHJlZ2lzdGVyVVJMU2NoZW1lU2VydmljZVdvcmtl
cnNDYW5IYW5kbGUoc2NoZW1lKTsKKworICAgIG1fc2hvdWxkRGlzYWJsZVNlcnZpY2VXb3JrZXJQ
cm9jZXNzVGVybWluYXRpb25EZWxheSA9IHBhcmFtZXRlcnMuc2hvdWxkRGlzYWJsZVNlcnZpY2VX
b3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheTsKICNlbmRpZgogfQogCkBAIC00NDksNiArNDQ2
LDggQEAgU1dTZXJ2ZXImIFN0b3JhZ2VQcm9jZXNzOjpzd1NlcnZlckZvclNlc3Npb24oUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgIEFTU0VSVChzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSB8
fCAhcGF0aC5pc0VtcHR5KCkpOwogCiAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6
bWFrZV91bmlxdWU8U1dTZXJ2ZXI+KG1ha2VVbmlxdWVSZWY8V2ViU1dPcmlnaW5TdG9yZT4oKSwg
V1RGTW92ZShwYXRoKSwgc2Vzc2lvbklEKTsKKyAgICBpZiAobV9zaG91bGREaXNhYmxlU2Vydmlj
ZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5KQorICAgICAgICByZXN1bHQuaXRlcmF0b3It
PnZhbHVlLT5kaXNhYmxlU2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5KCk7CiAg
ICAgcmV0dXJuICpyZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwogfQogCkBAIC01MzYsNiArNTM1LDI5
IEBAIHZvaWQgU3RvcmFnZVByb2Nlc3M6OnVucmVnaXN0ZXJTV1NlcnZlckNvbm5lY3Rpb24oV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uJiBjb25uZWN0CiAgICAgbV9zd1NlcnZlckNvbm5lY3Rpb25zLnJl
bW92ZShjb25uZWN0aW9uLmlkZW50aWZpZXIoKSk7CiAgICAgc3dPcmlnaW5TdG9yZUZvclNlc3Np
b24oY29ubmVjdGlvbi5zZXNzaW9uSUQoKSkudW5yZWdpc3RlclNXU2VydmVyQ29ubmVjdGlvbihj
b25uZWN0aW9uKTsKIH0KKwordm9pZCBTdG9yYWdlUHJvY2Vzczo6c3dDb250ZXh0Q29ubmVjdGlv
bk1heU5vTG9uZ2VyQmVOZWVkZWQoV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBzZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uKQoreworICAgIGF1dG8mIG9yaWdpbiA9IHNlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24ub3JpZ2luKCk7CisgICAgaWYgKG5lZWRzU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbkZvck9yaWdpbihvcmlnaW4pKQorICAgICAgICByZXR1cm47CisKKyAgICBSRUxFQVNF
X0xPRyhTZXJ2aWNlV29ya2VyLCAiU2VydmljZSB3b3JrZXIgcHJvY2VzcyBpcyBubyBsb25nZXIg
bmVlZGVkLCB0ZXJtaW5hdGluZyBpdCIpOworICAgIHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
dGVybWluYXRlKCk7CisKKyAgICBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNvbm5lY3Rpb25D
bG9zZWQoKTsKKyAgICBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25zLnJlbW92ZSgmb3JpZ2lu
KTsKK30KKwordm9pZCBTdG9yYWdlUHJvY2Vzczo6ZGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNz
VGVybWluYXRpb25EZWxheSgpCit7CisgICAgaWYgKG1fc2hvdWxkRGlzYWJsZVNlcnZpY2VXb3Jr
ZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9zaG91
bGREaXNhYmxlU2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5ID0gdHJ1ZTsKKyAg
ICBmb3IgKGF1dG8mIHN3U2VydmVyIDogbV9zd1NlcnZlcnMudmFsdWVzKCkpCisgICAgICAgIHN3
U2VydmVyLT5kaXNhYmxlU2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5KCk7Cit9
CiAjZW5kaWYKIAogI2lmICFQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFn
ZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuaAppbmRleCBkNTZlZDQwMDEzNGQ4OTNlZmYyYTNlYjI4
OTEwYjYzNTY4MzNmOTAxLi5kMTJmZTMxNmU5ZjI2MTc5Zjc0NTRhNzFjNzljOWZmYTM5YzA2YmM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNz
LmgKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5oCkBA
IC0xMDAsNiArMTAwLDggQEAgcHVibGljOgogICAgIFdlYkNvcmU6OlNXU2VydmVyJiBzd1NlcnZl
ckZvclNlc3Npb24oUEFMOjpTZXNzaW9uSUQpOwogICAgIHZvaWQgcmVnaXN0ZXJTV1NlcnZlckNv
bm5lY3Rpb24oV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyU1dT
ZXJ2ZXJDb25uZWN0aW9uKFdlYlNXU2VydmVyQ29ubmVjdGlvbiYpOworCisgICAgdm9pZCBzd0Nv
bnRleHRDb25uZWN0aW9uTWF5Tm9Mb25nZXJCZU5lZWRlZChXZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24mKTsKICNlbmRpZgogCiAgICAgdm9pZCBkaWRSZWNlaXZlU3RvcmFnZVByb2Nlc3NN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwpAQCAtMTQ1LDYgKzE0Nyw4
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChj
b25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYgZGVzdGluYXRpb25J
ZGVudGlmaWVyLCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmLCBXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNv
dXJjZU9yaWdpbik7CiAgICAgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcihXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBkZXN0aW5hdGlvbiwgV2ViQ29yZTo6TWVzc2FnZVdp
dGhNZXNzYWdlUG9ydHMmJiwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlck9yQ2xpZW50SWRl
bnRpZmllciYgc291cmNlLCBXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKTsK
IAorICAgIHZvaWQgZGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSgp
OworCiAgICAgV2ViU1dPcmlnaW5TdG9yZSYgc3dPcmlnaW5TdG9yZUZvclNlc3Npb24oUEFMOjpT
ZXNzaW9uSUQpOwogICAgIGJvb2wgbmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yT3Jp
Z2luKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJikgY29uc3Q7CiAjZW5kaWYKQEAgLTE3NSw2ICsx
NzksNyBAQCBwcml2YXRlOgogCiAgICAgSGFzaE1hcDxSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW4+LCBSZWY8V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uPj4gbV9zZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uczsKICAgICBib29sIG1fd2FpdGluZ0ZvclNlcnZlclRvQ29udGV4dFBy
b2Nlc3NDb25uZWN0aW9uIHsgZmFsc2UgfTsKKyAgICBib29sIG1fc2hvdWxkRGlzYWJsZVNlcnZp
Y2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSB7IGZhbHNlIH07CiAgICAgSGFzaE1hcDxQ
QUw6OlNlc3Npb25JRCwgU3RyaW5nPiBtX3N3RGF0YWJhc2VQYXRoczsKICAgICBIYXNoTWFwPFBB
TDo6U2Vzc2lvbklELCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1dTZXJ2ZXI+PiBtX3N3U2Vy
dmVyczsKICAgICBIYXNoTWFwPFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIs
IFdlYlNXU2VydmVyQ29ubmVjdGlvbio+IG1fc3dTZXJ2ZXJDb25uZWN0aW9uczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLm1lc3NhZ2Vz
LmluCmluZGV4IGFiMmY0ODdjMDU0ZDdmZGJlZmJiODc0NTFiYTRhNTcwZTViMmRlNzQuLjgxZDE5
MzBlNGExNDdhMzQ1MDU3ZjE5NWQ0MDA4ZDc5NGU5OTUzNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAt
NDUsNSArNDUsNyBAQCBtZXNzYWdlcyAtPiBTdG9yYWdlUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7
CiAgICAgUG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoc3RydWN0IFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgc3RydWN0
IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzIG1lc3NhZ2UsIFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIFN0cmluZyBzb3VyY2VPcmlnaW4p
CiAKICAgICBQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBkZXN0aW5hdGlvbiwgc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2Fn
ZVBvcnRzIG1lc3NhZ2UsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJPckNsaWVudElkZW50aWZpZXIg
c291cmNlLCBXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIGNvbm5lY3Rpb25J
ZGVudGlmaWVyKQorCisgICAgRGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25E
ZWxheSgpCiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLUHJvY2Vzc1Bvb2wubW0KaW5kZXggY2JmOTk5ZTc4ZjRmZjIzNTNkYWFmMzMwNDE1NDlm
NzVlNDRhNzg3Yi4uODMzNjZhMDA1Nzc5MmU0MDlmNGViMmJiMDUzYTNkY2Q2Y2NjYjk4YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wu
bW0KQEAgLTQzNCw2ICs0MzQsMTEgQEAgc3RhdGljIE5TRGljdGlvbmFyeSAqcG9saWNpZXNIYXNo
TWFwVG9EaWN0aW9uYXJ5KGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFwPFMKICAgICBfcHJv
Y2Vzc1Bvb2wtPnRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKTsKIH0KIAorLSAodm9p
ZClfZGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheQoreworICAgIF9w
cm9jZXNzUG9vbC0+ZGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSgp
OworfQorCiAtIChwaWRfdClfbmV0d29ya1Byb2Nlc3NJZGVudGlmaWVyCiB7CiAgICAgcmV0dXJu
IF9wcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3NJZGVudGlmaWVyKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5o
CmluZGV4IDlmMGZhNGRiMGQ5M2E3YmJlMTVkNWFlN2NkZjcwNzNlNGMzNDQwYjIuLjQ0Yjc2MmU2
M2Q5NmQzNTNjZGIzOGY4MmY3ZWNlMjY3ZGMxOGNhMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCkBAIC04
MSw2ICs4MSw3IEBACiAtICh2b2lkKV90ZXJtaW5hdGVTdG9yYWdlUHJvY2VzczsKIC0gKHZvaWQp
X3Rlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzOwogLSAodm9pZClfdGVybWluYXRlU2VydmljZVdvcmtl
clByb2Nlc3NlcyBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lP
U19UQkEpKTsKKy0gKHZvaWQpX2Rpc2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9u
RGVsYXkgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJB
KSk7CiAKIC8vIFRlc3Qgb25seS4KIC0gKHBpZF90KV9uZXR3b3JrUHJvY2Vzc0lkZW50aWZpZXIg
V0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTMpLCBpb3MoMTEuMCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDcxYzBhNTkyNGYxMGE0YzczOTM2
MTM3YmQ3OGVlZjE1NWQ0ZWU2MzMuLjk1NjIxNTFiNGU4M2MwN2M2MDkxMmRjYWE0M2Y4OGZlOGMw
ZGQwNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAg
LTU1Nyw2ICs1NTcsOCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjplbnN1cmVTdG9yYWdlUHJvY2Vz
c0FuZFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZSogcgogCiAgICAgICAgIGlmICgh
bV9zY2hlbWVzU2VydmljZVdvcmtlcnNDYW5IYW5kbGUuaXNFbXB0eSgpKQogICAgICAgICAgICAg
cGFyYW1ldGVycy51cmxTY2hlbWVzU2VydmljZVdvcmtlcnNDYW5IYW5kbGUgPSBjb3B5VG9WZWN0
b3IobV9zY2hlbWVzU2VydmljZVdvcmtlcnNDYW5IYW5kbGUpOworCisgICAgICAgIHBhcmFtZXRl
cnMuc2hvdWxkRGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSA9IG1f
c2hvdWxkRGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheTsKICNlbmRp
ZgogCiAgICAgICAgIG1fc3RvcmFnZVByb2Nlc3MgPSBTdG9yYWdlUHJvY2Vzc1Byb3h5OjpjcmVh
dGUoKnRoaXMpOwpAQCAtNjE0LDcgKzYxNiw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFi
bGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9TdG9yYWdlUHJvY2VzcyhTdG9yYWdlUHJvCiAK
ICAgICBBU1NFUlQod2Vic2l0ZURhdGFTdG9yZS0+c2Vzc2lvbklEKCkuaXNWYWxpZCgpKTsKICAg
ICBpZiAod2Vic2l0ZURhdGFTdG9yZS0+c2Vzc2lvbklEKCkuaXNWYWxpZCgpKQotICAgICAgICBz
ZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlJlZ2lzdGVyU2VydmljZVdv
cmtlckNsaWVudHMgeyB3ZWJzaXRlRGF0YVN0b3JlLT5zZXNzaW9uSUQoKSB9KTsKKyAgICAgICAg
c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpSZWdpc3RlclNlcnZpY2VX
b3JrZXJDbGllbnRzIHsgd2Vic2l0ZURhdGFTdG9yZS0+c2Vzc2lvbklEKCkgfSwgU2hvdWxkSW5j
bHVkZVNlcnZpY2VXb3JrZXJQcm9jZXNzZXM6Ok5vKTsKIAogICAgIHVwZGF0ZVByb2Nlc3NBc3Nl
cnRpb25zKCk7CiAgICAgaW5pdGlhbGl6ZU5ld1dlYlByb2Nlc3Moc2VydmljZVdvcmtlclByb2Nl
c3NQcm94eSwgKndlYnNpdGVEYXRhU3RvcmUpOwpAQCAtNjI4LDYgKzYzMCwxNSBAQCB2b2lkIFdl
YlByb2Nlc3NQb29sOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvU3RvcmFnZVBy
b2Nlc3MoU3RvcmFnZVBybwogfQogI2VuZGlmCiAKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmRpc2Fi
bGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXkoKQoreworI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKKyAgICBtX3Nob3VsZERpc2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rl
cm1pbmF0aW9uRGVsYXkgPSB0cnVlOworICAgIGlmIChtX3N0b3JhZ2VQcm9jZXNzKQorICAgICAg
ICBtX3N0b3JhZ2VQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzczo6RGlzYWJs
ZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSgpLCAwKTsKKyNlbmRpZgorfQor
CiB2b2lkIFdlYlByb2Nlc3NQb29sOjp3aWxsU3RhcnRVc2luZ1ByaXZhdGVCcm93c2luZygpCiB7
CiAgICAgZm9yIChhdXRvKiBwcm9jZXNzUG9vbCA6IGFsbFByb2Nlc3NQb29scygpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggZTRhM2ZhMDhkNzVkMDgxNzVl
ZTljZDA1NDY0N2VkMzEwMzQxNWZkZS4uZGRiMTBhOWMxYWUyNzk0MmRmOTgwMDYzMjA4MWRhZDg1
NGE1NjU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0x
NTUsNyArMTU1LDggQEAgcHVibGljOgogICAgIC8vIFdlYlByb2Nlc3Mgb3IgTmV0d29ya1Byb2Nl
c3MgYXMgYXBwcm9wb3JpYXRlIGZvciBjdXJyZW50IHByb2Nlc3MgbW9kZWwuIFRoZSBjb25uZWN0
aW9uIG11c3QgYmUgbm9uLW51bGwuCiAgICAgSVBDOjpDb25uZWN0aW9uKiBuZXR3b3JraW5nUHJv
Y2Vzc0Nvbm5lY3Rpb24oKTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgc2VuZFRv
QWxsUHJvY2Vzc2VzKGNvbnN0IFQmIG1lc3NhZ2UpOworICAgIGVudW0gY2xhc3MgU2hvdWxkSW5j
bHVkZVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMgeyBObywgWWVzIH07CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gdm9pZCBzZW5kVG9BbGxQcm9jZXNzZXMoY29uc3QgVCYgbWVzc2FnZSwgU2hvdWxk
SW5jbHVkZVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMgPSBTaG91bGRJbmNsdWRlU2VydmljZVdvcmtl
clByb2Nlc3Nlczo6WWVzKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIHNlbmRUb0Fs
bFByb2Nlc3Nlc1JlbGF1bmNoaW5nVGhlbUlmTmVjZXNzYXJ5KGNvbnN0IFQmIG1lc3NhZ2UpOwog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgc2VuZFRvT25lUHJvY2VzcyhUJiYgbWVzc2Fn
ZSk7CiAKQEAgLTI3Miw2ICsyNzMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB0ZXJtaW5hdGVTdG9y
YWdlUHJvY2VzcygpOwogICAgIHZvaWQgdGVybWluYXRlTmV0d29ya1Byb2Nlc3MoKTsKICAgICB2
b2lkIHRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKTsKKyAgICB2b2lkIGRpc2FibGVT
ZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXkoKTsKIAogICAgIHZvaWQgc3luY05l
dHdvcmtQcm9jZXNzQ29va2llcygpOwogCkBAIC01MTksNiArNTIxLDcgQEAgcHJpdmF0ZToKICAg
ICBIYXNoTWFwPFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4sIFNlcnZpY2VXb3JrZXJQ
cm9jZXNzUHJveHkqPiBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXM7CiAgICAgYm9vbCBtX3dhaXRp
bmdGb3JXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24geyBmYWxzZSB9OwogICAgIGJvb2wg
bV9hbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvclNlcnZpY2VXb3JrZXIgeyBmYWxzZSB9OworICAg
IGJvb2wgbV9zaG91bGREaXNhYmxlU2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5
IHsgZmFsc2UgfTsKICAgICBTdHJpbmcgbV9zZXJ2aWNlV29ya2VyVXNlckFnZW50OwogICAgIHN0
ZDo6b3B0aW9uYWw8V2ViUHJlZmVyZW5jZXNTdG9yZT4gbV9zZXJ2aWNlV29ya2VyUHJlZmVyZW5j
ZXM7CiAgICAgSGFzaE1hcDxTdHJpbmcsIGJvb2w+IG1fbWF5SGF2ZVJlZ2lzdGVyZWRTZXJ2aWNl
V29ya2VyczsKQEAgLTcwMywxMyArNzA2LDE4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNlbmRU
b1N0b3JhZ2VQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShUJiYgbWVzc2FnZSkKIH0KIAog
dGVtcGxhdGU8dHlwZW5hbWUgVD4KLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNlbmRUb0FsbFByb2Nl
c3Nlcyhjb25zdCBUJiBtZXNzYWdlKQordm9pZCBXZWJQcm9jZXNzUG9vbDo6c2VuZFRvQWxsUHJv
Y2Vzc2VzKGNvbnN0IFQmIG1lc3NhZ2UsIFNob3VsZEluY2x1ZGVTZXJ2aWNlV29ya2VyUHJvY2Vz
c2VzIHNob3VsZEluY2x1ZGVTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKQogewogICAgIHNpemVfdCBw
cm9jZXNzQ291bnQgPSBtX3Byb2Nlc3Nlcy5zaXplKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBwcm9jZXNzQ291bnQ7ICsraSkgewogICAgICAgICBXZWJQcm9jZXNzUHJveHkqIHByb2Nl
c3MgPSBtX3Byb2Nlc3Nlc1tpXS5nZXQoKTsKLSAgICAgICAgaWYgKHByb2Nlc3MtPmNhblNlbmRN
ZXNzYWdlKCkpCi0gICAgICAgICAgICBwcm9jZXNzLT5zZW5kKFQobWVzc2FnZSksIDApOworICAg
ICAgICBpZiAoIXByb2Nlc3MtPmNhblNlbmRNZXNzYWdlKCkpCisgICAgICAgICAgICBjb250aW51
ZTsKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgICAgIGlmIChzaG91bGRJbmNsdWRl
U2VydmljZVdvcmtlclByb2Nlc3NlcyA9PSBTaG91bGRJbmNsdWRlU2VydmljZVdvcmtlclByb2Nl
c3Nlczo6Tm8gJiYgcHJvY2Vzcy0+aXNTZXJ2aWNlV29ya2VyUHJvY2VzcygpKQorICAgICAgICAg
ICAgY29udGludWU7CisjZW5kaWYKKyAgICAgICAgcHJvY2Vzcy0+c2VuZChUKG1lc3NhZ2UpLCAw
KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAppbmRleCAz
MGJjOTUwNTg4YjE1YzA4YTM4MjE4YTY1ZDc1ODEwN2IzMjlmZWZlLi45NDczZWVmNGQ2MTI1MmFm
M2RmNDA0MWI3ZmE1ZWY4MDAyZTYwZDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24uY3BwCkBAIC0zMjcsNiArMzI3LDEyIEBAIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb246OmRpZEZpbmlzaFNraXBXYWl0aW5nKHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgICAg
IGNhbGxiYWNrKCk7CiB9CiAKK05PX1JFVFVSTiB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uOjp0ZXJtaW5hdGVQcm9jZXNzKCkKK3sKKyAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29y
a2VyLCAiU2VydmljZSB3b3JrZXIgcHJvY2VzcyBpcyBleGl0aW5nIGJlY2F1c2UgaXQgaXMgbm8g
bG9uZ2VyIG5lZWRlZCIpOworICAgIF9leGl0KEVYSVRfU1VDQ0VTUyk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCmluZGV4IDNjYjdjNjhlOGZmNjFhZDY2ZGMwNmQ5ZDlm
MGQyZDcwZjFkMjYzZjAuLjhlODIwN2Q2OWRmMDE3Y2M0ZWU3ZTY4NmY2MTk5ZGVhY2RlZDczNjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaApAQCAtODcsNiArODcsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgY2xhaW1Db21wbGV0ZWQodWludDY0X3QgY2xhaW1SZXF1ZXN0SWRlbnRp
Zmllcik7CiAgICAgdm9pZCBkaWRGaW5pc2hTa2lwV2FpdGluZyh1aW50NjRfdCBjYWxsYmFja0lE
KTsKICAgICB2b2lkIHNldFVzZXJBZ2VudChTdHJpbmcmJiB1c2VyQWdlbnQpOworICAgIHZvaWQg
dGVybWluYXRlUHJvY2VzcygpOwogCiAgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0
aW9uVG9TdG9yYWdlUHJvY2VzczsKICAgICB1aW50NjRfdCBtX3BhZ2VHcm91cElEOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCA3MzdjNDFm
ZWQwZjBlYTE0NmNjM2U5MGM2NGMxZDY2YmRhN2M2MGJhLi4yN2JlZTMyM2ViYjlhY2RjMzBmYjJm
NjhhMjYwZTJjYjQ5N2RmNGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbi5tZXNzYWdlcy5pbgpAQCAtMzYsNiArMzYsNyBAQCBtZXNzYWdlcyAtPiBXZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbiB7CiAgICAgRGlkRmluaXNoU2tpcFdhaXRpbmcodWludDY0X3Qg
Y2FsbGJhY2tJRCkKICAgICBTZXRVc2VyQWdlbnQoU3RyaW5nIHVzZXJBZ2VudCkKICAgICBVcGRh
dGVQcmVmZXJlbmNlc1N0b3JlKHN0cnVjdCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmUgc3Rv
cmUpCisgICAgVGVybWluYXRlUHJvY2VzcygpCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGU0ZGY0MGY3NmJhZDFlYThjNjRi
OGQ5NmM1Yjc3MjRlYzkwNDhhMzguLmRjNDgxNzlkMjgxMDA4Y2NkNDU5ZTM2OGQ1YTQyOWM0Yjcx
YjFkZmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNSBAQAorMjAxOC0wMy0yMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgorCisgICAgICAgIFByb21wdGx5IHRlcm1pbmF0ZSBzZXJ2aWNlIHdvcmtlciBwcm9jZXNz
ZXMgd2hlbiB0aGV5IGFyZSBubyBsb25nZXIgbmVlZGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODM4NzMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzM4Njc2OTk1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZCBBUEkgdGVzdCBjb3ZlcmFnZS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tOgorCiAyMDE4LTAzLTIzICBDYXJs
b3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmll
d2VkLiBSdW4gSlNDIEdMaWIgQVBJIHRlc3RzIGluIEdUSysgYW5kIFdQRSBib3RzLgpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2Vy
QmFzaWMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VX
b3JrZXJCYXNpYy5tbQppbmRleCBhMGNmYjZhNTc2N2E0NzcwNTA1MzU3YTIzOTQzMzgzYmQxZWI3
NjhjLi45MTY2OGI5YzM3NmM4YWU2Y2E1NTYwOWUxNjc0NGU2NDNkZTIzNmZmIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNp
Yy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VX
b3JrZXJCYXNpYy5tbQpAQCAtMTI4Miw2ICsxMjgyLDE1IEBAIFRFU1QoU2VydmljZVdvcmtlcnMs
IE5vbkRlZmF1bHRTZXNzaW9uSUQpCiAgICAgZG9uZSA9IGZhbHNlOwogfQogCit2b2lkIHdhaXRV
bnRpbFNlcnZpY2VXb3JrZXJQcm9jZXNzQ291bnQoV0tQcm9jZXNzUG9vbCAqcHJvY2Vzc1Bvb2ws
IHVuc2lnbmVkIHByb2Nlc3NDb3VudCkKK3sKKyAgICBkbyB7CisgICAgICAgIGlmIChwcm9jZXNz
UG9vbC5fc2VydmljZVdvcmtlclByb2Nlc3NDb3VudCA9PSBwcm9jZXNzQ291bnQpCisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNwaW5SdW5Mb29wKDEp
OworICAgIH0gd2hpbGUgKHRydWUpOworfQorCiBURVNUKFNlcnZpY2VXb3JrZXJzLCBQcm9jZXNz
UGVyT3JpZ2luKQogewogICAgIEFTU0VSVChtYWluQnl0ZXMpOwpAQCAtMTMxMSw4ICsxMzIwLDEz
IEBAIFRFU1QoU2VydmljZVdvcmtlcnMsIFByb2Nlc3NQZXJPcmlnaW4pCiAgICAgaGFuZGxlcjIt
PnJlc291cmNlcy5zZXQoInN3MjovL2hvc3Qvc3cuanMiLCBSZXNvdXJjZUluZm8geyBAImFwcGxp
Y2F0aW9uL2phdmFzY3JpcHQiLCBzY3JpcHRCeXRlcyB9KTsKICAgICBbY29uZmlndXJhdGlvbiBz
ZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIyLmdldCgpIGZvclVSTFNjaGVtZTpAInN3MiJdOwog
Ci0gICAgW2NvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1Bvb2wgX3JlZ2lzdGVyVVJMU2NoZW1l
U2VydmljZVdvcmtlcnNDYW5IYW5kbGU6QCJzdzEiXTsKLSAgICBbY29uZmlndXJhdGlvbi5nZXQo
KS5wcm9jZXNzUG9vbCBfcmVnaXN0ZXJVUkxTY2hlbWVTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZTpA
InN3MiJdOworICAgIFdLUHJvY2Vzc1Bvb2wgKnByb2Nlc3NQb29sID0gY29uZmlndXJhdGlvbi5n
ZXQoKS5wcm9jZXNzUG9vbDsKKyAgICBbcHJvY2Vzc1Bvb2wgX3JlZ2lzdGVyVVJMU2NoZW1lU2Vy
dmljZVdvcmtlcnNDYW5IYW5kbGU6QCJzdzEiXTsKKyAgICBbcHJvY2Vzc1Bvb2wgX3JlZ2lzdGVy
VVJMU2NoZW1lU2VydmljZVdvcmtlcnNDYW5IYW5kbGU6QCJzdzIiXTsKKworICAgIC8vIE5vcm1h
bGx5LCBzZXJ2aWNlIHdvcmtlcnMgZ2V0IHRlcm1pbmF0ZWQgc2V2ZXJhbCBzZWNvbmRzIGFmdGVy
IHRoZWlyIGNsaWVudHMgYXJlIGdvbmUuCisgICAgLy8gRGlzYWJsZSB0aGlzIGRlbGF5IGZvciB0
aGUgcHVycG9zZSBvZiB0ZXN0aW5nLgorICAgIFtwcm9jZXNzUG9vbCBfZGlzYWJsZVNlcnZpY2VX
b3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheV07CiAKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3
PiB3ZWJWaWV3MSA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNN
YWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgp
XSk7CiAKQEAgLTEzMjIsNyArMTMzNiw3IEBAIFRFU1QoU2VydmljZVdvcmtlcnMsIFByb2Nlc3NQ
ZXJPcmlnaW4pCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKICAgICBkb25l
ID0gZmFsc2U7CiAKLSAgICBFWFBFQ1RfRVEoMVUsIHdlYlZpZXcxLmdldCgpLmNvbmZpZ3VyYXRp
b24ucHJvY2Vzc1Bvb2wuX3NlcnZpY2VXb3JrZXJQcm9jZXNzQ291bnQpOworICAgIEVYUEVDVF9F
USgxVSwgcHJvY2Vzc1Bvb2wuX3NlcnZpY2VXb3JrZXJQcm9jZXNzQ291bnQpOwogCiAgICAgUmV0
YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldzIgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29u
ZmlndXJhdGlvbi5nZXQoKV0pOwogICAgIFt3ZWJWaWV3MiBsb2FkUmVxdWVzdDpyZXF1ZXN0MV07
CkBAIC0xMzMwLDcgKzEzNDQsNyBAQCBURVNUKFNlcnZpY2VXb3JrZXJzLCBQcm9jZXNzUGVyT3Jp
Z2luKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiAgICAgZG9uZSA9IGZh
bHNlOwogCi0gICAgRVhQRUNUX0VRKDFVLCB3ZWJWaWV3Mi5nZXQoKS5jb25maWd1cmF0aW9uLnBy
b2Nlc3NQb29sLl9zZXJ2aWNlV29ya2VyUHJvY2Vzc0NvdW50KTsKKyAgICBFWFBFQ1RfRVEoMVUs
IHByb2Nlc3NQb29sLl9zZXJ2aWNlV29ya2VyUHJvY2Vzc0NvdW50KTsKIAogICAgIFJldGFpblB0
cjxXS1dlYlZpZXc+IHdlYlZpZXczID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3Vy
YXRpb24uZ2V0KCldKTsKICAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QyID0gW05TVVJMUmVxdWVz
dCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAInN3MjovL2hvc3QvbWFpbi5o
dG1sIl1dOwpAQCAtMTMzOSw3ICsxMzUzLDIxIEBAIFRFU1QoU2VydmljZVdvcmtlcnMsIFByb2Nl
c3NQZXJPcmlnaW4pCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKICAgICBk
b25lID0gZmFsc2U7CiAKLSAgICBFWFBFQ1RfRVEoMlUsIHdlYlZpZXczLmdldCgpLmNvbmZpZ3Vy
YXRpb24ucHJvY2Vzc1Bvb2wuX3NlcnZpY2VXb3JrZXJQcm9jZXNzQ291bnQpOworICAgIEVYUEVD
VF9FUSgyVSwgcHJvY2Vzc1Bvb2wuX3NlcnZpY2VXb3JrZXJQcm9jZXNzQ291bnQpOworCisgICAg
TlNVUkxSZXF1ZXN0ICphYm91dEJsYW5rUmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdp
dGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJhYm91dDpibGFuayJdXTsKKyAgICBbd2ViVmll
dzMgbG9hZFJlcXVlc3Q6YWJvdXRCbGFua1JlcXVlc3RdOworCisgICAgd2FpdFVudGlsU2Vydmlj
ZVdvcmtlclByb2Nlc3NDb3VudChwcm9jZXNzUG9vbCwgMSk7CisgICAgRVhQRUNUX0VRKDFVLCBw
cm9jZXNzUG9vbC5fc2VydmljZVdvcmtlclByb2Nlc3NDb3VudCk7CisKKyAgICBbd2ViVmlldzIg
bG9hZFJlcXVlc3Q6YWJvdXRCbGFua1JlcXVlc3RdOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnNwaW5SdW5Mb29wKDEwKTsKKyAgICBFWFBFQ1RfRVEoMVUsIHByb2Nlc3NQb29sLl9zZXJ2aWNl
V29ya2VyUHJvY2Vzc0NvdW50KTsKKworICAgIFt3ZWJWaWV3MSBsb2FkUmVxdWVzdDphYm91dEJs
YW5rUmVxdWVzdF07CisgICAgd2FpdFVudGlsU2VydmljZVdvcmtlclByb2Nlc3NDb3VudChwcm9j
ZXNzUG9vbCwgMCk7CisgICAgRVhQRUNUX0VRKDBVLCBwcm9jZXNzUG9vbC5fc2VydmljZVdvcmtl
clByb2Nlc3NDb3VudCk7CiB9CiAKICNlbmRpZiAvLyBXS19BUElfRU5BQkxFRAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336423</attachid>
            <date>2018-03-23 14:36:01 -0700</date>
            <delta_ts>2018-03-23 15:16:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183873-20180323143600.patch</filename>
            <type>text/plain</type>
            <size>33600</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5OTE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGE2YTUwNjA0NWMwZmZj
Mjg4MzE1MTc0Y2ZhN2JmNjg3MmI0OGU5MS4uOTNlYzc4Zjk3MmZkNzg5OWUxNjdiNDJiZGJjYTQx
YTRkYWJmNDVjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE4LTAzLTIzICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUHJvbXB0bHkgdGVybWluYXRl
IHNlcnZpY2Ugd29ya2VyIHByb2Nlc3NlcyB3aGVuIHRoZXkgYXJlIG5vIGxvbmdlciBuZWVkZWQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mzg3Mwor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzg2NzY5OTU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
WW91ZW5uIEZhYmxldC4KKworICAgICAgICBUaGUgU3RvcmFnZVByb2Nlc3Mgbm93IGtlZXBzIHRy
YWNrIG9mIHNlcnZpY2Ugd29ya2VyIGNsaWVudHMgZm9yIGVhY2ggc2VjdXJpdHkKKyAgICAgICAg
b3JpZ2luLiBXaGVuIHRoZXJlIGlzIG5vIGxvbmdlciBhbnkgY2xpZW50cyBmb3IgYSBnaXZlbiBz
ZWN1cml0eSBvcmlnaW4sIHRoZQorICAgICAgICBTdG9yYWdlUHJvY2VzcyBhc2tzIHRoZSBzZXJ2
aWNlIHdvcmtlciBwcm9jZXNzIGZvciB0aGUgZ2l2ZW4gb3JpZ2luIHRvIHRlcm1pbmF0ZQorICAg
ICAgICBhbmQgc2V2ZXJzIGl0cyBjb25uZWN0aW9uIHRvIGl0LgorCisgICAgICAgIENoYW5nZSBp
cyBjb3ZlcmVkIGJ5IEFQSSB0ZXN0LgorCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6bWFya0FsbFdvcmtl
cnNGb3JPcmlnaW5Bc1Rlcm1pbmF0ZWQpOgorICAgICAgICBQYXNzIHRoZSBzZWN1cml0eSBvcmln
aW4gc2luY2UgdGhpcyBpcyBjYWxsZWQgd2hlbiBhIHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MKKyAg
ICAgICAgY3Jhc2hlcy4gV2hlbiBhIHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgZm9yIG9yaWdpbiBB
IGNyYXNoZXMsIHdlIG9ubHkgd2FudAorICAgICAgICB0byBtYXJrIHNlcnZpY2Ugd29ya2VycyBp
biBvcmlnaW4gQSBhcyB0ZXJtaW5hdGVkLCBub3QgQUxMIG9mIHRoZW0uCisKKyAgICAgICAgKFdl
YkNvcmU6OlNXU2VydmVyOjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQpOgorICAgICAgICAo
V2ViQ29yZTo6U1dTZXJ2ZXI6OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNXU2VydmVyOjpuZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JP
cmlnaW4gY29uc3QpOgorICAgICAgICBUd2VhayBsb2dpYyBzbyB0aGF0IHdlIG9ubHkgcmVsYXVu
Y2ggYSBzZXJ2aWNlIHdvcmtlciBwcm9jZXNzIGlmIHdlIHN0aWxsCisgICAgICAgIGhhdmUgY2xp
ZW50cyBmb3IgaXRzIHNlY3VyaXR5IG9yaWdpbi4KKworICAgICAgICAqIHdvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpkaXNhYmxl
U2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5KToKKyAgICAgICAgQWRkIGEgd2F5
IHRvIGRpc2FibGUgdGhlIHNlcnZpY2Ugd29ya2VyIHRlcm1pbmF0aW9uIGRlbGF5IHRvIGZhY2ls
aXRhdGUKKyAgICAgICAgdGVzdGluZy4KKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg6CisKIDIwMTgtMDMtMjMgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYlByb2Nlc3NQb29sIHNob3Vs
ZCBub3QgYXNrIHRvIHJlZ2lzdGVyIGFsbCBjbGllbnRzIGZvciBlYWNoIHNlcnZpY2Ugd29ya2Vy
IHByb2Nlc3MgY3JlYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMzg3ZDY5YjM0YjNjYTk2OGI5YzRjNGUwNGM2
MGRmNmFkNWExOWZlMS4uNjFmMmQxM2IzZThjMGIwMjY3ZmQ2ODI0MGE3YmZjMWU1YWFlM2Y1YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAxOC0wMy0yMyAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgorCisgICAgICAgIFByb21wdGx5IHRlcm1pbmF0ZSBzZXJ2aWNlIHdvcmtl
ciBwcm9jZXNzZXMgd2hlbiB0aGV5IGFyZSBubyBsb25nZXIgbmVlZGVkCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODM4NzMKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzM4Njc2OTk1PgorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQu
CisKKyAgICAgICAgVGhlIFN0b3JhZ2VQcm9jZXNzIG5vdyBrZWVwcyB0cmFjayBvZiBzZXJ2aWNl
IHdvcmtlciBjbGllbnRzIGZvciBlYWNoIHNlY3VyaXR5CisgICAgICAgIG9yaWdpbi4gV2hlbiB0
aGVyZSBpcyBubyBsb25nZXIgYW55IGNsaWVudHMgZm9yIGEgZ2l2ZW4gc2VjdXJpdHkgb3JpZ2lu
LCB0aGUKKyAgICAgICAgU3RvcmFnZVByb2Nlc3MgYXNrcyB0aGUgc2VydmljZSB3b3JrZXIgcHJv
Y2VzcyBmb3IgdGhlIGdpdmVuIG9yaWdpbiB0byB0ZXJtaW5hdGUKKyAgICAgICAgYW5kIHNldmVy
cyBpdHMgY29ubmVjdGlvbiB0byBpdC4KKworICAgICAgICAqIFNoYXJlZC9TdG9yYWdlL1N0b3Jh
Z2VQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogU3RvcmFnZVByb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNvbm5lY3Rpb25NYXlO
b0xvbmdlckJlTmVlZGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uOjp0ZXJtaW5hdGUpOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg6CisgICAgICAgICogU3RvcmFn
ZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlUHJv
Y2Vzczo6Y29ubmVjdGlvblRvQ29udGV4dFByb2Nlc3NXYXNDbG9zZWQpOgorICAgICAgICAoV2Vi
S2l0OjpTdG9yYWdlUHJvY2Vzczo6bmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yT3Jp
Z2luIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVByb2Nlc3M6OmluaXRpYWxpemVX
ZWJzaXRlRGF0YVN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVByb2Nlc3M6OnN3U2Vy
dmVyRm9yU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzOjpzd0NvbnRl
eHRDb25uZWN0aW9uTWF5Tm9Mb25nZXJCZU5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3Jh
Z2VQcm9jZXNzOjpkaXNhYmxlU2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5KToK
KyAgICAgICAgKiBTdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5oOgorICAgICAgICAqIFN0
b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9v
bCBfZGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheV0pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6ZW5zdXJlU3RvcmFnZVByb2Nlc3NBbmRXZWJzaXRlRGF0YVN0b3JlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmRpc2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rl
cm1pbmF0aW9uRGVsYXkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjp0
ZXJtaW5hdGVQcm9jZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisKIDIwMTgtMDMtMjMgIFlv
dWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYlByb2Nlc3NQb29s
IHNob3VsZCBub3QgYXNrIHRvIHJlZ2lzdGVyIGFsbCBjbGllbnRzIGZvciBlYWNoIHNlcnZpY2Ug
d29ya2VyIHByb2Nlc3MgY3JlYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKaW5kZXggZDEzMWVmYTM5ZTQwNTY4YmYyYzY3Njc1
MDdmNWI0ZDBmYzlhM2JhOC4uYmVlZjBlMzFjMjcxYTlhY2E2NWE5ZDEzYjc5NzFhZDI0YzMxNDQ2
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlci5jcHAKQEAgLTY0MSwxMCArNjQxLDE1IEBAIHZvaWQgU1dTZXJ2ZXI6OnRlcm1pbmF0ZVdv
cmtlckludGVybmFsKFNXU2VydmVyV29ya2VyJiB3b3JrZXIsIFRlcm1pbmF0aW9uTW9kZSBtCiAg
ICAgfTsKIH0KIAotdm9pZCBTV1NlcnZlcjo6bWFya0FsbFdvcmtlcnNBc1Rlcm1pbmF0ZWQoKQor
dm9pZCBTV1NlcnZlcjo6bWFya0FsbFdvcmtlcnNGb3JPcmlnaW5Bc1Rlcm1pbmF0ZWQoY29uc3Qg
U2VjdXJpdHlPcmlnaW4mIG9yaWdpbikKIHsKLSAgICB3aGlsZSAoIW1fcnVubmluZ09yVGVybWlu
YXRpbmdXb3JrZXJzLmlzRW1wdHkoKSkKLSAgICAgICAgd29ya2VyQ29udGV4dFRlcm1pbmF0ZWQo
bV9ydW5uaW5nT3JUZXJtaW5hdGluZ1dvcmtlcnMuYmVnaW4oKS0+dmFsdWUpOworICAgIFZlY3Rv
cjxTV1NlcnZlcldvcmtlcio+IHRlcm1pbmF0ZWRXb3JrZXJzOworICAgIGZvciAoYXV0byYgd29y
a2VyIDogbV9ydW5uaW5nT3JUZXJtaW5hdGluZ1dvcmtlcnMudmFsdWVzKCkpIHsKKyAgICAgICAg
aWYgKG9yaWdpbi5pc1NhbWVTY2hlbWVIb3N0UG9ydCh3b3JrZXItPnNlY3VyaXR5T3JpZ2luKCkp
KQorICAgICAgICAgICAgdGVybWluYXRlZFdvcmtlcnMuYXBwZW5kKHdvcmtlci5wdHIoKSk7Cisg
ICAgfQorICAgIGZvciAoYXV0byYgdGVybWluYXRlZFdvcmtlciA6IHRlcm1pbmF0ZWRXb3JrZXJz
KQorICAgICAgICB3b3JrZXJDb250ZXh0VGVybWluYXRlZCgqdGVybWluYXRlZFdvcmtlcik7CiB9
CiAKIHZvaWQgU1dTZXJ2ZXI6OndvcmtlckNvbnRleHRUZXJtaW5hdGVkKFNXU2VydmVyV29ya2Vy
JiB3b3JrZXIpCkBAIC03MzAsNyArNzM1LDcgQEAgdm9pZCBTV1NlcnZlcjo6cmVnaXN0ZXJTZXJ2
aWNlV29ya2VyQ2xpZW50KENsaWVudE9yaWdpbiYmIGNsaWVudE9yaWdpbiwgU2VydmljZVcKICAg
ICBBU1NFUlQoIW1fY2xpZW50c0J5SWQuY29udGFpbnMoY2xpZW50SWRlbnRpZmllcikpOwogICAg
IG1fY2xpZW50c0J5SWQuYWRkKGNsaWVudElkZW50aWZpZXIsIFdURk1vdmUoZGF0YSkpOwogCi0g
ICAgYXV0byYgY2xpZW50SWRlbnRpZmllcnNGb3JPcmlnaW4gPSBtX2NsaWVudElkZW50aWZpZXJz
UGVyT3JpZ2luLmVuc3VyZShXVEZNb3ZlKGNsaWVudE9yaWdpbiksIFtdIHsKKyAgICBhdXRvJiBj
bGllbnRJZGVudGlmaWVyc0Zvck9yaWdpbiA9IG1fY2xpZW50SWRlbnRpZmllcnNQZXJPcmlnaW4u
ZW5zdXJlKGNsaWVudE9yaWdpbiwgW10gewogICAgICAgICByZXR1cm4gQ2xpZW50cyB7IH07CiAg
ICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogCkBAIC03MzgsNiArNzQzLDEwIEBAIHZvaWQgU1dTZXJ2
ZXI6OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChDbGllbnRPcmlnaW4mJiBjbGllbnRPcmln
aW4sIFNlcnZpY2VXCiAgICAgY2xpZW50SWRlbnRpZmllcnNGb3JPcmlnaW4uaWRlbnRpZmllcnMu
YXBwZW5kKGNsaWVudElkZW50aWZpZXIpOwogICAgIGNsaWVudElkZW50aWZpZXJzRm9yT3JpZ2lu
LnRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJzVGltZXIgPSBudWxscHRyOwogCisgICAgbV9jbGllbnRz
QnlTZWN1cml0eU9yaWdpbi5lbnN1cmUoY2xpZW50T3JpZ2luLmNsaWVudE9yaWdpbiwgW10gewor
ICAgICAgICByZXR1cm4gSGFzaFNldDxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4geyB9
OworICAgIH0pLml0ZXJhdG9yLT52YWx1ZS5hZGQoY2xpZW50SWRlbnRpZmllcik7CisKICAgICBp
ZiAoIWNvbnRyb2xsaW5nU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpCiAgICAg
ICAgIHJldHVybjsKIApAQCAtNzY5LDExICs3NzgsMjMgQEAgdm9pZCBTV1NlcnZlcjo6dW5yZWdp
c3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgQ2xpZW50T3JpZ2luJiBjbGllbnRPcmlnaW4s
IFMKICAgICAgICAgICAgICAgICBpZiAod29ya2VyLT5pc1J1bm5pbmcoKSAmJiB3b3JrZXItPm9y
aWdpbigpID09IGNsaWVudE9yaWdpbikKICAgICAgICAgICAgICAgICAgICAgdGVybWluYXRlV29y
a2VyKHdvcmtlcik7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIW1fY2xpZW50c0J5
U2VjdXJpdHlPcmlnaW4uY29udGFpbnMoY2xpZW50T3JpZ2luLmNsaWVudE9yaWdpbikpIHsKKyAg
ICAgICAgICAgICAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IFNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbjo6Y29ubmVjdGlvbkZvck9yaWdpbihjbGllbnRPcmlnaW4uY2xpZW50T3JpZ2luLnNl
Y3VyaXR5T3JpZ2luKCkpKQorICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLT5jb25uZWN0
aW9uTWF5Tm9Mb25nZXJCZU5lZWRlZCgpOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBt
X2NsaWVudElkZW50aWZpZXJzUGVyT3JpZ2luLnJlbW92ZShjbGllbnRPcmlnaW4pOwogICAgICAg
ICB9KTsKLSAgICAgICAgaXRlcmF0b3ItPnZhbHVlLnRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJzVGlt
ZXItPnN0YXJ0T25lU2hvdCh0ZXJtaW5hdGlvbkRlbGF5KTsKKyAgICAgICAgaXRlcmF0b3ItPnZh
bHVlLnRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJzVGltZXItPnN0YXJ0T25lU2hvdChtX3Nob3VsZERp
c2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXkgPyAwX3MgOiB0ZXJtaW5h
dGlvbkRlbGF5KTsKICAgICB9CiAKKyAgICBhdXRvIGNsaWVudHNCeVNlY3VyaXR5T3JpZ2luSXRl
cmF0b3IgPSBtX2NsaWVudHNCeVNlY3VyaXR5T3JpZ2luLmZpbmQoY2xpZW50T3JpZ2luLmNsaWVu
dE9yaWdpbik7CisgICAgQVNTRVJUKGNsaWVudHNCeVNlY3VyaXR5T3JpZ2luSXRlcmF0b3IgIT0g
bV9jbGllbnRzQnlTZWN1cml0eU9yaWdpbi5lbmQoKSk7CisgICAgYXV0byYgY2xpZW50c0ZvclNl
Y3VyaXR5T3JpZ2luID0gY2xpZW50c0J5U2VjdXJpdHlPcmlnaW5JdGVyYXRvci0+dmFsdWU7Cisg
ICAgY2xpZW50c0ZvclNlY3VyaXR5T3JpZ2luLnJlbW92ZShjbGllbnRJZGVudGlmaWVyKTsKKyAg
ICBpZiAoY2xpZW50c0ZvclNlY3VyaXR5T3JpZ2luLmlzRW1wdHkoKSkKKyAgICAgICAgbV9jbGll
bnRzQnlTZWN1cml0eU9yaWdpbi5yZW1vdmUoY2xpZW50c0J5U2VjdXJpdHlPcmlnaW5JdGVyYXRv
cik7CisKICAgICBhdXRvIHJlZ2lzdHJhdGlvbkl0ZXJhdG9yID0gbV9jbGllbnRUb0NvbnRyb2xs
aW5nUmVnaXN0cmF0aW9uLmZpbmQoY2xpZW50SWRlbnRpZmllcik7CiAgICAgaWYgKHJlZ2lzdHJh
dGlvbkl0ZXJhdG9yID09IG1fY2xpZW50VG9Db250cm9sbGluZ1JlZ2lzdHJhdGlvbi5lbmQoKSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtNzg0LDYgKzgwNSwxMSBAQCB2b2lkIFNXU2VydmVyOjp1bnJl
Z2lzdGVyU2VydmljZVdvcmtlckNsaWVudChjb25zdCBDbGllbnRPcmlnaW4mIGNsaWVudE9yaWdp
biwgUwogICAgIG1fY2xpZW50VG9Db250cm9sbGluZ1JlZ2lzdHJhdGlvbi5yZW1vdmUocmVnaXN0
cmF0aW9uSXRlcmF0b3IpOwogfQogCitib29sIFNXU2VydmVyOjpuZWVkc1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb25Gb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9jbGllbnRzQnlTZWN1cml0eU9yaWdpbi5jb250YWlucyhTZWN1cml0
eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihvcmlnaW4pKTsKK30KKwogdm9pZCBTV1Nl
cnZlcjo6cmVzb2x2ZVJlZ2lzdHJhdGlvblJlYWR5UmVxdWVzdHMoU1dTZXJ2ZXJSZWdpc3RyYXRp
b24mIHJlZ2lzdHJhdGlvbikKIHsKICAgICBmb3IgKGF1dG8qIGNvbm5lY3Rpb24gOiBtX2Nvbm5l
Y3Rpb25zLnZhbHVlcygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlci5oCmluZGV4IDRjMDZlNWU3YzU1MzgwN2NmNDlkYjZkZjQwMzc1NzM3Njcw
MWEzMmUuLjYwNmRiNDZhZDAyN2NmMWJjNTVhZjc3MWI4ODI3ZjEwMDIzNDUyZmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKQEAgLTE0
NSw3ICsxNDUsNyBAQCBwdWJsaWM6CiAgICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xp
ZW50RGF0YT4gc2VydmljZVdvcmtlckNsaWVudFdpdGhPcmlnaW5CeUlEKGNvbnN0IENsaWVudE9y
aWdpbiYsIGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJikgY29uc3Q7CiAgICAg
V0VCQ09SRV9FWFBPUlQgU1dTZXJ2ZXJXb3JrZXIqIGFjdGl2ZVdvcmtlckZyb21SZWdpc3RyYXRp
b25JRChTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcik7CiAKLSAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIG1hcmtBbGxXb3JrZXJzQXNUZXJtaW5hdGVkKCk7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBtYXJrQWxsV29ya2Vyc0Zvck9yaWdpbkFzVGVybWluYXRlZChjb25zdCBTZWN1
cml0eU9yaWdpbiYpOwogICAgIAogICAgIENvbm5lY3Rpb24qIGdldENvbm5lY3Rpb24oU1dTZXJ2
ZXJDb25uZWN0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKSB7IHJldHVybiBtX2Nvbm5lY3Rpb25z
LmdldChpZGVudGlmaWVyKTsgfQogICAgIFNXT3JpZ2luU3RvcmUmIG9yaWdpblN0b3JlKCkgeyBy
ZXR1cm4gbV9vcmlnaW5TdG9yZTsgfQpAQCAtMTc3LDYgKzE3Nyw5IEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGdldE9yaWdpbnNXaXRoUmVnaXN0cmF0aW9ucyhGdW5jdGlvbjx2
b2lkKGNvbnN0IEhhc2hTZXQ8U2VjdXJpdHlPcmlnaW5EYXRhPiYpPiYmKTsKIAogICAgIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbklEOyB9CisgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBuZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JPcmln
aW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mKSBjb25zdDsKKworICAgIHZvaWQgZGlzYWJsZVNlcnZp
Y2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSgpIHsgbV9zaG91bGREaXNhYmxlU2Vydmlj
ZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5ID0gdHJ1ZTsgfQogCiBwcml2YXRlOgogICAg
IHZvaWQgcmVnaXN0ZXJDb25uZWN0aW9uKENvbm5lY3Rpb24mKTsKQEAgLTIxNSw2ICsyMTgsNyBA
QCBwcml2YXRlOgogCiAgICAgSGFzaE1hcDxTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgUmVmPFNX
U2VydmVyV29ya2VyPj4gbV9ydW5uaW5nT3JUZXJtaW5hdGluZ1dvcmtlcnM7CiAKKyAgICBIYXNo
TWFwPFNlY3VyaXR5T3JpZ2luRGF0YSwgSGFzaFNldDxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRp
Zmllcj4+IG1fY2xpZW50c0J5U2VjdXJpdHlPcmlnaW47CiAgICAgc3RydWN0IENsaWVudHMgewog
ICAgICAgICBWZWN0b3I8U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+IGlkZW50aWZpZXJz
OwogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGltZXI+IHRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJz
VGltZXI7CkBAIC0yMjksNiArMjMzLDcgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPFJlZlB0cjxT
ZWN1cml0eU9yaWdpbj4sIEhhc2hNYXA8U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFZlY3RvcjxS
dW5TZXJ2aWNlV29ya2VyQ2FsbGJhY2s+Pj4gbV9zZXJ2aWNlV29ya2VyUnVuUmVxdWVzdHM7CiAg
ICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAgICAgYm9vbCBtX2ltcG9ydENvbXBsZXRl
ZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX3Nob3VsZERpc2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vz
c1Rlcm1pbmF0aW9uRGVsYXkgeyBmYWxzZSB9OwogICAgIFZlY3RvcjxDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+PiBtX2NsZWFyQ29tcGxldGlvbkNhbGxiYWNrczsKICAgICBWZWN0b3I8RnVuY3Rp
b248dm9pZChjb25zdCBIYXNoU2V0PFNlY3VyaXR5T3JpZ2luRGF0YT4mKT4+IG1fZ2V0T3JpZ2lu
c1dpdGhSZWdpc3RyYXRpb25zQ2FsbGJhY2tzOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5oCmluZGV4IDRhYzNkNWY3YzYzYTEwMTQzODUxMzIzNmY2NDg0Y2ZkM2U2OGY1
MmYuLjZmMTAyYmM1MjViNzBkMDUzNGU3ZjcxMGE0NGYyNTk5ODM2YWE5YjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAtNzgsNiArNzgsOCBAQCBwdWJsaWM6CiAK
ICAgICBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKCkgeyByZXR1cm4gbV9vcmlnaW4uZ2V0KCk7IH0K
IAorICAgIHZpcnR1YWwgdm9pZCBjb25uZWN0aW9uTWF5Tm9Mb25nZXJCZU5lZWRlZCgpID0gMDsK
KwogcHJvdGVjdGVkOgogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbihSZWY8U2VjdXJpdHlPcmlnaW4+JiYpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1N0b3JhZ2UvU3RvcmFnZVByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuY3BwCmluZGV4IDZlNWVhYmUyOTJmNzI5OWFlZjMyNzMzMWJhNzI5ZGJkZTc0
YzUyYTUuLjZmNTVjMTIxZjFmMGRjYzAyMTg5YWI2ZTE3ZmNiZmUyZjBmYzhlZjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1N0b3JhZ2UvU3RvcmFnZVByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1N0b3JhZ2UvU3RvcmFnZVBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC00MSw3ICs0MSw3IEBAIHZvaWQgU3RvcmFn
ZVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIp
IGNvbnN0CiAgICAgZW5jb2RlciA8PCBpbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkgPDwgaW5kZXhl
ZERhdGFiYXNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogI2VuZGlmCiAjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQotICAgIGVuY29kZXIgPDwgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRp
cmVjdG9yeSA8PCBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFu
ZGxlIDw8IHVybFNjaGVtZXNTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZTsKKyAgICBlbmNvZGVyIDw8
IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkgPDwgc2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSA8PCB1cmxTY2hlbWVzU2VydmljZVdvcmtl
cnNDYW5IYW5kbGUgPDwgc2hvdWxkRGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRp
b25EZWxheTsKICNlbmRpZgogfQogCkBAIC03MSw2ICs3MSw5IEBAIGJvb2wgU3RvcmFnZVByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFN0b3Jh
Z2VQcm9jCiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC51cmxTY2hlbWVzU2Vydmlj
ZVdvcmtlcnNDYW5IYW5kbGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHJlc3VsdC5zaG91bGREaXNhYmxlU2VydmljZVdvcmtlclByb2Nlc3NUZXJt
aW5hdGlvbkRlbGF5KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiAKICAgICByZXR1
cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1N0b3JhZ2UvU3RvcmFn
ZVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1N0b3Jh
Z2UvU3RvcmFnZVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCA2NzY4MGRmMTJkZjQ3
Y2E5MjM5MzliY2RhYzk4NmM4YTIyY2ZmYThhLi5mZDk3MDc0ZjgyMTY2YmM5MjRiNzE5ZTI4NGQ2
M2E5Mjc4NWNhYjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TdG9yYWdlL1N0
b3JhZ2VQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvU3RvcmFnZS9TdG9yYWdlUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC01NCw2ICs1
NCw3IEBAIHN0cnVjdCBTdG9yYWdlUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgU3Ry
aW5nIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnk7CiAgICAgU2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGU7CiAgICAgVmVjdG9yPFN0cmluZz4gdXJsU2NoZW1lc1NlcnZpY2VXb3JrZXJzQ2FuSGFu
ZGxlOworICAgIGJvb2wgc2hvdWxkRGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRp
b25EZWxheSB7IGZhbHNlIH07CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKaW5kZXggZmNjYzgzN2VjNjA0MTE0Njc4
MTg5YTdiNDM4Y2UyYTk1ZWI2ZjIzYi4uMTQ4NTBhY2RmNmYxZmJlODg5NWQ5MzA1ZDA1MTM0NmY5
OTgyZDg4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKIAorI2luY2x1ZGUgIlN0b3JhZ2VQcm9jZXNzLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNz
YWdlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmg+CkBA
IC0xMDIsNiArMTAzLDE2IEBAIHZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpk
aWRGaW5pc2hTa2lwV2FpdGluZyh1aW50NjRfdCBjYWxsYmFja0lEKQogICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpEaWRGaW5pc2hTa2lwV2FpdGluZyB7
IGNhbGxiYWNrSUQgfSk7CiB9CiAKK3ZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
Ojpjb25uZWN0aW9uTWF5Tm9Mb25nZXJCZU5lZWRlZCgpCit7CisgICAgU3RvcmFnZVByb2Nlc3M6
OnNpbmdsZXRvbigpLnN3Q29udGV4dENvbm5lY3Rpb25NYXlOb0xvbmdlckJlTmVlZGVkKCp0aGlz
KTsKK30KKwordm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnRlcm1pbmF0ZSgp
Cit7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlRl
cm1pbmF0ZVByb2Nlc3MoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYg
Ly8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9y
YWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5o
IGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5oCmluZGV4IGQ0NmFmNWI3MmU5OTM0NzBlYTVhODJjYjViZDBi
ZTllN2I3YWY2YTMuLmJiMTBiZGVmOTJjZWZhNTYyYTc4ZDhmOTUyMWRjMzhlNzFkYmM2N2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAg
LTQ3LDYgKzQ3LDggQEAgcHVibGljOgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBm
aW5hbDsKIAorICAgIHZvaWQgdGVybWluYXRlKCk7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQg
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bj4mJiwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJik7CiAKQEAgLTY1LDYgKzY3LDggQEAgcHJpdmF0
ZToKICAgICB2b2lkIGNsYWltQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyKSBm
aW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaFNraXBXYWl0aW5nKHVpbnQ2NF90IGNhbGxiYWNrSUQp
IGZpbmFsOwogCisgICAgdm9pZCBjb25uZWN0aW9uTWF5Tm9Mb25nZXJCZU5lZWRlZCgpIGZpbmFs
OworCiAgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9pcGNDb25uZWN0aW9uOwogICAgIAogfTsg
Ly8gY2xhc3MgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwCmluZGV4IGJkMWFkNTBhODFmNGE1
M2U5MjFkZTFhYzNkZDg5MGVkYjE1Zjg4MjUuLmRkNDg4YzZmZGZmODFjNjYyNWJiOTEwZDIwNzgz
NWMyMTY4OWVhNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3Rv
cmFnZVByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFn
ZVByb2Nlc3MuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiU3RvcmFnZVByb2Nlc3Mu
aCIKIAogI2luY2x1ZGUgIkNoaWxkUHJvY2Vzc01lc3NhZ2VzLmgiCisjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgogI2luY2x1ZGUgIlN0b3JhZ2VQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5j
bHVkZSAiU3RvcmFnZVByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlN0b3JhZ2VQcm9jZXNz
UHJveHlNZXNzYWdlcy5oIgpAQCAtNDQsNiArNDUsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2Vy
dmljZVdvcmtlckNsaWVudElkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHRFbmNv
ZGluZy5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KKyNpbmNsdWRlIDx3dGYvQWxnb3Jp
dGhtcy5oPgogI2luY2x1ZGUgPHd0Zi9DYWxsYmFja0FnZ3JlZ2F0b3IuaD4KICNpbmNsdWRlIDx3
dGYvQ3Jvc3NUaHJlYWRUYXNrLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KQEAgLTEx
MSwzMiArMTEzLDI0IEBAIHZvaWQgU3RvcmFnZVByb2Nlc3M6OmRpZENsb3NlKElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbikKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiB2b2lkIFN0b3Jh
Z2VQcm9jZXNzOjpjb25uZWN0aW9uVG9Db250ZXh0UHJvY2Vzc1dhc0Nsb3NlZChSZWY8V2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uPiYmIHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24pCiB7
Ci0gICAgUmVmPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLT5vcmlnaW4oKTsKLSAgICBib29sIHNob3VsZFJlbGF1bmNoID0gbmVlZHNTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uRm9yT3JpZ2luKG9yaWdpbik7Ci0KICAgICBzZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLT5jb25uZWN0aW9uQ2xvc2VkKCk7Ci0gICAgbV9zZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9ucy5yZW1vdmUob3JpZ2luLnB0cigpKTsKKyAgICBtX3NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb25zLnJlbW92ZSgmc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi0+b3JpZ2luKCkpOwogCiAg
ICAgZm9yIChhdXRvJiBzd1NlcnZlciA6IG1fc3dTZXJ2ZXJzLnZhbHVlcygpKQotICAgICAgICBz
d1NlcnZlci0+bWFya0FsbFdvcmtlcnNBc1Rlcm1pbmF0ZWQoKTsKKyAgICAgICAgc3dTZXJ2ZXIt
Pm1hcmtBbGxXb3JrZXJzRm9yT3JpZ2luQXNUZXJtaW5hdGVkKHNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24tPm9yaWdpbigpKTsKIAotICAgIGlmIChzaG91bGRSZWxhdW5jaCkKKyAgICBSZWY8U2Vj
dXJpdHlPcmlnaW4+IG9yaWdpbiA9IHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24tPm9yaWdpbigp
OworICAgIGlmIChuZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JPcmlnaW4ob3JpZ2lu
KSkgeworICAgICAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiQ29ubmVjdGlvbiB0byBz
ZXJ2aWNlIHdvcmtlciBwcm9jZXNzIHdhcyBjbG9zZWQgYnV0IGlzIHN0aWxsIG5lZWRlZCwgcmVs
YXVuY2hpbmcgaXQiKTsKICAgICAgICAgY3JlYXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihv
cmlnaW4sIHN0ZDo6bnVsbG9wdCk7CisgICAgfQogfQogCi0vLyBUaGUgcnVsZSBpcyB0aGF0IHdl
IG5lZWQgYSBjb250ZXh0IHByb2Nlc3MgKGFuZCBhIGNvbm5lY3Rpb24gdG8gaXQpIGFzIGxvbmcg
YXMgd2UgaGF2ZSBTV1NlcnZlckNvbm5lY3Rpb25zIHRvIHJlZ3VsYXIgV2ViUHJvY2Vzc2VzLgog
Ym9vbCBTdG9yYWdlUHJvY2Vzczo6bmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yT3Jp
Z2luKFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pIGNvbnN0CiB7Ci0gICAgaWYgKG1fc3dTZXJ2ZXJD
b25uZWN0aW9ucy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8q
IGNvbnRleHRDb25uZWN0aW9uID0gbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9ucy5nZXQoJm9y
aWdpbik7Ci0KLSAgICAvLyBJZiB0aGUgbGFzdCBTV1NlcnZlckNvbm5lY3Rpb24gaXMgdG8gdGhl
IGNvbnRleHQgcHJvY2VzcywgdGhlbiB3ZSBubyBsb25nZXIgbmVlZCB0aGUgY29udGV4dCBjb25u
ZWN0aW9uLgotICAgIGlmIChtX3N3U2VydmVyQ29ubmVjdGlvbnMuc2l6ZSgpID09IDEgJiYgY29u
dGV4dENvbm5lY3Rpb24gJiYgJm1fc3dTZXJ2ZXJDb25uZWN0aW9ucy5iZWdpbigpLT52YWx1ZS0+
aXBjQ29ubmVjdGlvbigpID09IGNvbnRleHRDb25uZWN0aW9uLT5pcGNDb25uZWN0aW9uKCkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBXVEY6
OmFueU9mKG1fc3dTZXJ2ZXJzLnZhbHVlcygpLCBbJl0oYXV0byYgc3dTZXJ2ZXIpIHsKKyAgICAg
ICAgcmV0dXJuIHN3U2VydmVyLT5uZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JPcmln
aW4ob3JpZ2luKTsKKyAgICB9KTsKIH0KICNlbmRpZgogCkBAIC0yMTYsNiArMjEwLDggQEAgdm9p
ZCBTdG9yYWdlUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYnNpdGVEYXRhU3RvcmUoY29uc3QgU3RvcmFn
ZVByb2Nlc3NDcmVhdGlvblBhcmEKIAogICAgIGZvciAoYXV0byYgc2NoZW1lIDogcGFyYW1ldGVy
cy51cmxTY2hlbWVzU2VydmljZVdvcmtlcnNDYW5IYW5kbGUpCiAgICAgICAgIHJlZ2lzdGVyVVJM
U2NoZW1lU2VydmljZVdvcmtlcnNDYW5IYW5kbGUoc2NoZW1lKTsKKworICAgIG1fc2hvdWxkRGlz
YWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSA9IHBhcmFtZXRlcnMuc2hv
dWxkRGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheTsKICNlbmRpZgog
fQogCkBAIC00NDksNiArNDQ1LDggQEAgU1dTZXJ2ZXImIFN0b3JhZ2VQcm9jZXNzOjpzd1NlcnZl
ckZvclNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgIEFTU0VSVChzZXNzaW9u
SUQuaXNFcGhlbWVyYWwoKSB8fCAhcGF0aC5pc0VtcHR5KCkpOwogCiAgICAgcmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U1dTZXJ2ZXI+KG1ha2VVbmlxdWVSZWY8V2Vi
U1dPcmlnaW5TdG9yZT4oKSwgV1RGTW92ZShwYXRoKSwgc2Vzc2lvbklEKTsKKyAgICBpZiAobV9z
aG91bGREaXNhYmxlU2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5KQorICAgICAg
ICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5kaXNhYmxlU2VydmljZVdvcmtlclByb2Nlc3NUZXJt
aW5hdGlvbkRlbGF5KCk7CiAgICAgcmV0dXJuICpyZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwogfQog
CkBAIC01MzYsNiArNTM0LDI5IEBAIHZvaWQgU3RvcmFnZVByb2Nlc3M6OnVucmVnaXN0ZXJTV1Nl
cnZlckNvbm5lY3Rpb24oV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJiBjb25uZWN0CiAgICAgbV9zd1Nl
cnZlckNvbm5lY3Rpb25zLnJlbW92ZShjb25uZWN0aW9uLmlkZW50aWZpZXIoKSk7CiAgICAgc3dP
cmlnaW5TdG9yZUZvclNlc3Npb24oY29ubmVjdGlvbi5zZXNzaW9uSUQoKSkudW5yZWdpc3RlclNX
U2VydmVyQ29ubmVjdGlvbihjb25uZWN0aW9uKTsKIH0KKwordm9pZCBTdG9yYWdlUHJvY2Vzczo6
c3dDb250ZXh0Q29ubmVjdGlvbk1heU5vTG9uZ2VyQmVOZWVkZWQoV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uJiBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKQoreworICAgIGF1dG8mIG9y
aWdpbiA9IHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ub3JpZ2luKCk7CisgICAgaWYgKG5lZWRz
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvck9yaWdpbihvcmlnaW4pKQorICAgICAgICByZXR1
cm47CisKKyAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiU2VydmljZSB3b3JrZXIgcHJv
Y2VzcyBpcyBubyBsb25nZXIgbmVlZGVkLCB0ZXJtaW5hdGluZyBpdCIpOworICAgIHNlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24udGVybWluYXRlKCk7CisKKyAgICBzZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmNvbm5lY3Rpb25DbG9zZWQoKTsKKyAgICBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b25zLnJlbW92ZSgmb3JpZ2luKTsKK30KKwordm9pZCBTdG9yYWdlUHJvY2Vzczo6ZGlzYWJsZVNl
cnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSgpCit7CisgICAgaWYgKG1fc2hvdWxk
RGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgbV9zaG91bGREaXNhYmxlU2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlv
bkRlbGF5ID0gdHJ1ZTsKKyAgICBmb3IgKGF1dG8mIHN3U2VydmVyIDogbV9zd1NlcnZlcnMudmFs
dWVzKCkpCisgICAgICAgIHN3U2VydmVyLT5kaXNhYmxlU2VydmljZVdvcmtlclByb2Nlc3NUZXJt
aW5hdGlvbkRlbGF5KCk7Cit9CiAjZW5kaWYKIAogI2lmICFQTEFURk9STShDT0NPQSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuaCBiL1Nv
dXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuaAppbmRleCBkNTZlZDQw
MDEzNGQ4OTNlZmYyYTNlYjI4OTEwYjYzNTY4MzNmOTAxLi5kMTJmZTMxNmU5ZjI2MTc5Zjc0NTRh
NzFjNzljOWZmYTM5YzA2YmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9j
ZXNzL1N0b3JhZ2VQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9T
dG9yYWdlUHJvY2Vzcy5oCkBAIC0xMDAsNiArMTAwLDggQEAgcHVibGljOgogICAgIFdlYkNvcmU6
OlNXU2VydmVyJiBzd1NlcnZlckZvclNlc3Npb24oUEFMOjpTZXNzaW9uSUQpOwogICAgIHZvaWQg
cmVnaXN0ZXJTV1NlcnZlckNvbm5lY3Rpb24oV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJik7CiAgICAg
dm9pZCB1bnJlZ2lzdGVyU1dTZXJ2ZXJDb25uZWN0aW9uKFdlYlNXU2VydmVyQ29ubmVjdGlvbiYp
OworCisgICAgdm9pZCBzd0NvbnRleHRDb25uZWN0aW9uTWF5Tm9Mb25nZXJCZU5lZWRlZChXZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mKTsKICNlbmRpZgogCiAgICAgdm9pZCBkaWRSZWNl
aXZlU3RvcmFnZVByb2Nlc3NNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYp
OwpAQCAtMTQ1LDYgKzE0Nyw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwb3N0TWVzc2FnZVRvU2Vy
dmljZVdvcmtlckNsaWVudChjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRp
ZmllciYgZGVzdGluYXRpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQ
b3J0cyYmLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbik7CiAgICAgdm9pZCBwb3N0TWVzc2FnZVRvU2Vy
dmljZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBkZXN0aW5hdGlvbiwg
V2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiwgY29uc3QgV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlck9yQ2xpZW50SWRlbnRpZmllciYgc291cmNlLCBXZWJDb3JlOjpTV1NlcnZlckNvbm5l
Y3Rpb25JZGVudGlmaWVyKTsKIAorICAgIHZvaWQgZGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNz
VGVybWluYXRpb25EZWxheSgpOworCiAgICAgV2ViU1dPcmlnaW5TdG9yZSYgc3dPcmlnaW5TdG9y
ZUZvclNlc3Npb24oUEFMOjpTZXNzaW9uSUQpOwogICAgIGJvb2wgbmVlZHNTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uRm9yT3JpZ2luKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJikgY29uc3Q7CiAj
ZW5kaWYKQEAgLTE3NSw2ICsxNzksNyBAQCBwcml2YXRlOgogCiAgICAgSGFzaE1hcDxSZWZQdHI8
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+LCBSZWY8V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uPj4gbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uczsKICAgICBib29sIG1fd2FpdGluZ0Zv
clNlcnZlclRvQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uIHsgZmFsc2UgfTsKKyAgICBib29sIG1f
c2hvdWxkRGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSB7IGZhbHNl
IH07CiAgICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgU3RyaW5nPiBtX3N3RGF0YWJhc2VQYXRo
czsKICAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6
U1dTZXJ2ZXI+PiBtX3N3U2VydmVyczsKICAgICBIYXNoTWFwPFdlYkNvcmU6OlNXU2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIsIFdlYlNXU2VydmVyQ29ubmVjdGlvbio+IG1fc3dTZXJ2ZXJDb25u
ZWN0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFn
ZVByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3Jh
Z2VQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGFiMmY0ODdjMDU0ZDdmZGJlZmJiODc0NTFiYTRh
NTcwZTViMmRlNzQuLjgxZDE5MzBlNGExNDdhMzQ1MDU3ZjE5NWQ0MDA4ZDc5NGU5OTUzNjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vz
cy5tZXNzYWdlcy5pbgpAQCAtNDUsNSArNDUsNyBAQCBtZXNzYWdlcyAtPiBTdG9yYWdlUHJvY2Vz
cyBMZWdhY3lSZWNlaXZlciB7CiAgICAgUG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQo
c3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIGRlc3RpbmF0aW9u
SWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzIG1lc3Nh
Z2UsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIFN0
cmluZyBzb3VyY2VPcmlnaW4pCiAKICAgICBQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcihXZWJD
b3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBkZXN0aW5hdGlvbiwgc3RydWN0IFdlYkNvcmU6
Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzIG1lc3NhZ2UsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJP
ckNsaWVudElkZW50aWZpZXIgc291cmNlLCBXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKQorCisgICAgRGlzYWJsZVNlcnZpY2VXb3JrZXJQ
cm9jZXNzVGVybWluYXRpb25EZWxheSgpCiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KaW5kZXggY2JmOTk5ZTc4ZjRm
ZjIzNTNkYWFmMzMwNDE1NDlmNzVlNDRhNzg3Yi4uODMzNjZhMDA1Nzc5MmU0MDlmNGViMmJiMDUz
YTNkY2Q2Y2NjYjk4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLUHJvY2Vzc1Bvb2wubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLUHJvY2Vzc1Bvb2wubW0KQEAgLTQzNCw2ICs0MzQsMTEgQEAgc3RhdGljIE5TRGljdGlv
bmFyeSAqcG9saWNpZXNIYXNoTWFwVG9EaWN0aW9uYXJ5KGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBI
YXNoTWFwPFMKICAgICBfcHJvY2Vzc1Bvb2wtPnRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNz
ZXMoKTsKIH0KIAorLSAodm9pZClfZGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRp
b25EZWxheQoreworICAgIF9wcm9jZXNzUG9vbC0+ZGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNz
VGVybWluYXRpb25EZWxheSgpOworfQorCiAtIChwaWRfdClfbmV0d29ya1Byb2Nlc3NJZGVudGlm
aWVyCiB7CiAgICAgcmV0dXJuIF9wcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3NJZGVudGlmaWVy
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9j
ZXNzUG9vbFByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1By
b2Nlc3NQb29sUHJpdmF0ZS5oCmluZGV4IDlmMGZhNGRiMGQ5M2E3YmJlMTVkNWFlN2NkZjcwNzNl
NGMzNDQwYjIuLjQ0Yjc2MmU2M2Q5NmQzNTNjZGIzOGY4MmY3ZWNlMjY3ZGMxOGNhMGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJp
dmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQ
b29sUHJpdmF0ZS5oCkBAIC04MSw2ICs4MSw3IEBACiAtICh2b2lkKV90ZXJtaW5hdGVTdG9yYWdl
UHJvY2VzczsKIC0gKHZvaWQpX3Rlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzOwogLSAodm9pZClfdGVy
bWluYXRlU2VydmljZVdvcmtlclByb2Nlc3NlcyBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19N
QUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpX2Rpc2FibGVTZXJ2aWNlV29ya2Vy
UHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXkgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RC
QSksIGlvcyhXS19JT1NfVEJBKSk7CiAKIC8vIFRlc3Qgb25seS4KIC0gKHBpZF90KV9uZXR3b3Jr
UHJvY2Vzc0lkZW50aWZpZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTMpLCBpb3MoMTEu
MCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IGM0
OWM4YmFlOGY0NDc2OGY2MGI0MGM0YmZhMDRlNDQzNWY2ZmZiNDAuLjM1MWJmNmFiMjZiNmVlZmQ4
M2ZhOTYyN2E4ZTRjNzY2MjFhMDdmNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5jcHAKQEAgLTU1Nyw2ICs1NTcsOCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpl
bnN1cmVTdG9yYWdlUHJvY2Vzc0FuZFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZSog
cgogCiAgICAgICAgIGlmICghbV9zY2hlbWVzU2VydmljZVdvcmtlcnNDYW5IYW5kbGUuaXNFbXB0
eSgpKQogICAgICAgICAgICAgcGFyYW1ldGVycy51cmxTY2hlbWVzU2VydmljZVdvcmtlcnNDYW5I
YW5kbGUgPSBjb3B5VG9WZWN0b3IobV9zY2hlbWVzU2VydmljZVdvcmtlcnNDYW5IYW5kbGUpOwor
CisgICAgICAgIHBhcmFtZXRlcnMuc2hvdWxkRGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVy
bWluYXRpb25EZWxheSA9IG1fc2hvdWxkRGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWlu
YXRpb25EZWxheTsKICNlbmRpZgogCiAgICAgICAgIG1fc3RvcmFnZVByb2Nlc3MgPSBTdG9yYWdl
UHJvY2Vzc1Byb3h5OjpjcmVhdGUoKnRoaXMpOwpAQCAtNjI3LDYgKzYyOSwxOCBAQCB2b2lkIFdl
YlByb2Nlc3NQb29sOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvU3RvcmFnZVBy
b2Nlc3MoU3RvcmFnZVBybwogfQogI2VuZGlmCiAKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmRpc2Fi
bGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXkoKQoreworI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKKyAgICBpZiAobV9zaG91bGREaXNhYmxlU2VydmljZVdvcmtlclByb2Nl
c3NUZXJtaW5hdGlvbkRlbGF5KQorICAgICAgICByZXR1cm47CisKKyAgICBtX3Nob3VsZERpc2Fi
bGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXkgPSB0cnVlOworICAgIGlmICht
X3N0b3JhZ2VQcm9jZXNzKQorICAgICAgICBtX3N0b3JhZ2VQcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpTdG9yYWdlUHJvY2Vzczo6RGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25E
ZWxheSgpLCAwKTsKKyNlbmRpZgorfQorCiB2b2lkIFdlYlByb2Nlc3NQb29sOjp3aWxsU3RhcnRV
c2luZ1ByaXZhdGVCcm93c2luZygpCiB7CiAgICAgZm9yIChhdXRvKiBwcm9jZXNzUG9vbCA6IGFs
bFByb2Nlc3NQb29scygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgK
aW5kZXggZTRhM2ZhMDhkNzVkMDgxNzVlZTljZDA1NDY0N2VkMzEwMzQxNWZkZS4uNDU3ZjRjNGIx
NDM4MGY2ZWQzY2I2MmYxYzVmMzY4MTBiMTU4MDA1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0yNzIsNiArMjcyLDcgQEAgcHVibGljOgogICAgIHZvaWQg
dGVybWluYXRlU3RvcmFnZVByb2Nlc3MoKTsKICAgICB2b2lkIHRlcm1pbmF0ZU5ldHdvcmtQcm9j
ZXNzKCk7CiAgICAgdm9pZCB0ZXJtaW5hdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCk7CisgICAg
dm9pZCBkaXNhYmxlU2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5KCk7CiAKICAg
ICB2b2lkIHN5bmNOZXR3b3JrUHJvY2Vzc0Nvb2tpZXMoKTsKIApAQCAtNTE5LDYgKzUyMCw3IEBA
IHByaXZhdGU6CiAgICAgSGFzaE1hcDxSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+LCBT
ZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5Kj4gbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzOwogICAg
IGJvb2wgbV93YWl0aW5nRm9yV29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uIHsgZmFsc2Ug
fTsKICAgICBib29sIG1fYWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JTZXJ2aWNlV29ya2VyIHsg
ZmFsc2UgfTsKKyAgICBib29sIG1fc2hvdWxkRGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVy
bWluYXRpb25EZWxheSB7IGZhbHNlIH07CiAgICAgU3RyaW5nIG1fc2VydmljZVdvcmtlclVzZXJB
Z2VudDsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYlByZWZlcmVuY2VzU3RvcmU+IG1fc2VydmljZVdv
cmtlclByZWZlcmVuY2VzOwogICAgIEhhc2hNYXA8U3RyaW5nLCBib29sPiBtX21heUhhdmVSZWdp
c3RlcmVkU2VydmljZVdvcmtlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAK
aW5kZXggMzBiYzk1MDU4OGIxNWMwOGEzODIxOGE2NWQ3NTgxMDdiMzI5ZmVmZS4uOTQ3M2VlZjRk
NjEyNTJhZjNkZjQwNDFiN2ZhNWVmODAwMmU2MGQ4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uLmNwcApAQCAtMzI3LDYgKzMyNywxMiBAQCB2b2lkIFdlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uOjpkaWRGaW5pc2hTa2lwV2FpdGluZyh1aW50NjRfdCBjYWxsYmFja0lEKQog
ICAgICAgICBjYWxsYmFjaygpOwogfQogCitOT19SRVRVUk4gdm9pZCBXZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbjo6dGVybWluYXRlUHJvY2VzcygpCit7CisgICAgUkVMRUFTRV9MT0coU2Vy
dmljZVdvcmtlciwgIlNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgaXMgZXhpdGluZyBiZWNhdXNlIGl0
IGlzIG5vIGxvbmdlciBuZWVkZWQiKTsKKyAgICBfZXhpdChFWElUX1NVQ0NFU1MpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAppbmRleCAzY2I3YzY4ZThmZjYxYWQ2NmRj
MDZkOWQ5ZjBkMmQ3MGYxZDI2M2YwLi44ZTgyMDdkNjlkZjAxN2NjNGVlN2U2ODZmNjE5OWRlYWNk
ZWQ3MzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKQEAgLTg3LDYgKzg3LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGNsYWltQ29tcGxldGVkKHVpbnQ2NF90IGNsYWltUmVxdWVz
dElkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkRmluaXNoU2tpcFdhaXRpbmcodWludDY0X3QgY2Fs
bGJhY2tJRCk7CiAgICAgdm9pZCBzZXRVc2VyQWdlbnQoU3RyaW5nJiYgdXNlckFnZW50KTsKKyAg
ICB2b2lkIHRlcm1pbmF0ZVByb2Nlc3MoKTsKIAogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1f
Y29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3M7CiAgICAgdWludDY0X3QgbV9wYWdlR3JvdXBJRDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5kZXgg
NzM3YzQxZmVkMGYwZWExNDZjYzNlOTBjNjRjMWQ2NmJkYTdjNjBiYS4uMjdiZWUzMjNlYmI5YWNk
YzMwZmIyZjY4YTI2MGUyY2I0OTdkZjRjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTM2LDYgKzM2LDcgQEAgbWVzc2FnZXMgLT4gV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gewogICAgIERpZEZpbmlzaFNraXBXYWl0aW5nKHVp
bnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgU2V0VXNlckFnZW50KFN0cmluZyB1c2VyQWdlbnQpCiAg
ICAgVXBkYXRlUHJlZmVyZW5jZXNTdG9yZShzdHJ1Y3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0
b3JlIHN0b3JlKQorICAgIFRlcm1pbmF0ZVByb2Nlc3MoKQogfQogCiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5OTIxMzIwMDlhOWJl
YjMwMDdjMzM2YTI1NGQ5YWFjMmJjMWMyYTM1Li45MDlmOGIyYTgyMWJhNDYyOTVlOGQyMDdkMmNm
NzU2MjZmYmZhZTNlIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTgtMDMtMjMgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBQcm9tcHRseSB0ZXJtaW5hdGUgc2VydmljZSB3b3JrZXIg
cHJvY2Vzc2VzIHdoZW4gdGhleSBhcmUgbm8gbG9uZ2VyIG5lZWRlZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzODczCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS8zODY3Njk5NT4KKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0Lgor
CisgICAgICAgIEFkZCBBUEkgdGVzdCBjb3ZlcmFnZS4KKworICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tOgorCiAyMDE4LTAzLTIz
ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgU3RvcCB1c2lu
ZyBkaXNwYXRjaF9zZXRfdGFyZ2V0X3F1ZXVlKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW0KaW5kZXgg
YTBjZmI2YTU3NjdhNDc3MDUwNTM1N2EyMzk0MzM4M2JkMWViNzY4Yy4uOTE2NjhiOWMzNzZjOGFl
NmNhNTU2MDllMTY3NDRlNjQzZGUyMzZmZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW0KKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW0KQEAgLTEy
ODIsNiArMTI4MiwxNSBAQCBURVNUKFNlcnZpY2VXb3JrZXJzLCBOb25EZWZhdWx0U2Vzc2lvbklE
KQogICAgIGRvbmUgPSBmYWxzZTsKIH0KIAordm9pZCB3YWl0VW50aWxTZXJ2aWNlV29ya2VyUHJv
Y2Vzc0NvdW50KFdLUHJvY2Vzc1Bvb2wgKnByb2Nlc3NQb29sLCB1bnNpZ25lZCBwcm9jZXNzQ291
bnQpCit7CisgICAgZG8geworICAgICAgICBpZiAocHJvY2Vzc1Bvb2wuX3NlcnZpY2VXb3JrZXJQ
cm9jZXNzQ291bnQgPT0gcHJvY2Vzc0NvdW50KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpzcGluUnVuTG9vcCgxKTsKKyAgICB9IHdoaWxlICh0cnVl
KTsKK30KKwogVEVTVChTZXJ2aWNlV29ya2VycywgUHJvY2Vzc1Blck9yaWdpbikKIHsKICAgICBB
U1NFUlQobWFpbkJ5dGVzKTsKQEAgLTEzMTEsOCArMTMyMCwxMyBAQCBURVNUKFNlcnZpY2VXb3Jr
ZXJzLCBQcm9jZXNzUGVyT3JpZ2luKQogICAgIGhhbmRsZXIyLT5yZXNvdXJjZXMuc2V0KCJzdzI6
Ly9ob3N0L3N3LmpzIiwgUmVzb3VyY2VJbmZvIHsgQCJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Iiwg
c2NyaXB0Qnl0ZXMgfSk7CiAgICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpo
YW5kbGVyMi5nZXQoKSBmb3JVUkxTY2hlbWU6QCJzdzIiXTsKIAotICAgIFtjb25maWd1cmF0aW9u
LmdldCgpLnByb2Nlc3NQb29sIF9yZWdpc3RlclVSTFNjaGVtZVNlcnZpY2VXb3JrZXJzQ2FuSGFu
ZGxlOkAic3cxIl07Ci0gICAgW2NvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1Bvb2wgX3JlZ2lz
dGVyVVJMU2NoZW1lU2VydmljZVdvcmtlcnNDYW5IYW5kbGU6QCJzdzIiXTsKKyAgICBXS1Byb2Nl
c3NQb29sICpwcm9jZXNzUG9vbCA9IGNvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1Bvb2w7Cisg
ICAgW3Byb2Nlc3NQb29sIF9yZWdpc3RlclVSTFNjaGVtZVNlcnZpY2VXb3JrZXJzQ2FuSGFuZGxl
OkAic3cxIl07CisgICAgW3Byb2Nlc3NQb29sIF9yZWdpc3RlclVSTFNjaGVtZVNlcnZpY2VXb3Jr
ZXJzQ2FuSGFuZGxlOkAic3cyIl07CisKKyAgICAvLyBOb3JtYWxseSwgc2VydmljZSB3b3JrZXJz
IGdldCB0ZXJtaW5hdGVkIHNldmVyYWwgc2Vjb25kcyBhZnRlciB0aGVpciBjbGllbnRzIGFyZSBn
b25lLgorICAgIC8vIERpc2FibGUgdGhpcyBkZWxheSBmb3IgdGhlIHB1cnBvc2Ugb2YgdGVzdGlu
Zy4KKyAgICBbcHJvY2Vzc1Bvb2wgX2Rpc2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0
aW9uRGVsYXldOwogCiAgICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldzEgPSBhZG9wdE5T
KFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2
MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogCkBAIC0xMzIyLDcgKzEz
MzYsNyBAQCBURVNUKFNlcnZpY2VXb3JrZXJzLCBQcm9jZXNzUGVyT3JpZ2luKQogICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiAgICAgZG9uZSA9IGZhbHNlOwogCi0gICAgRVhQ
RUNUX0VRKDFVLCB3ZWJWaWV3MS5nZXQoKS5jb25maWd1cmF0aW9uLnByb2Nlc3NQb29sLl9zZXJ2
aWNlV29ya2VyUHJvY2Vzc0NvdW50KTsKKyAgICBFWFBFQ1RfRVEoMVUsIHByb2Nlc3NQb29sLl9z
ZXJ2aWNlV29ya2VyUHJvY2Vzc0NvdW50KTsKIAogICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdl
YlZpZXcyID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VS
ZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsK
ICAgICBbd2ViVmlldzIgbG9hZFJlcXVlc3Q6cmVxdWVzdDFdOwpAQCAtMTMzMCw3ICsxMzQ0LDcg
QEAgVEVTVChTZXJ2aWNlV29ya2VycywgUHJvY2Vzc1Blck9yaWdpbikKICAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmRvbmUpOwogICAgIGRvbmUgPSBmYWxzZTsKIAotICAgIEVYUEVDVF9F
USgxVSwgd2ViVmlldzIuZ2V0KCkuY29uZmlndXJhdGlvbi5wcm9jZXNzUG9vbC5fc2VydmljZVdv
cmtlclByb2Nlc3NDb3VudCk7CisgICAgRVhQRUNUX0VRKDFVLCBwcm9jZXNzUG9vbC5fc2Vydmlj
ZVdvcmtlclByb2Nlc3NDb3VudCk7CiAKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3
MyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgw
LCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAg
TlNVUkxSZXF1ZXN0ICpyZXF1ZXN0MiA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05T
VVJMIFVSTFdpdGhTdHJpbmc6QCJzdzI6Ly9ob3N0L21haW4uaHRtbCJdXTsKQEAgLTEzMzksNyAr
MTM1MywyMSBAQCBURVNUKFNlcnZpY2VXb3JrZXJzLCBQcm9jZXNzUGVyT3JpZ2luKQogICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiAgICAgZG9uZSA9IGZhbHNlOwogCi0gICAg
RVhQRUNUX0VRKDJVLCB3ZWJWaWV3My5nZXQoKS5jb25maWd1cmF0aW9uLnByb2Nlc3NQb29sLl9z
ZXJ2aWNlV29ya2VyUHJvY2Vzc0NvdW50KTsKKyAgICBFWFBFQ1RfRVEoMlUsIHByb2Nlc3NQb29s
Ll9zZXJ2aWNlV29ya2VyUHJvY2Vzc0NvdW50KTsKKworICAgIE5TVVJMUmVxdWVzdCAqYWJvdXRC
bGFua1JlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRo
U3RyaW5nOkAiYWJvdXQ6YmxhbmsiXV07CisgICAgW3dlYlZpZXczIGxvYWRSZXF1ZXN0OmFib3V0
QmxhbmtSZXF1ZXN0XTsKKworICAgIHdhaXRVbnRpbFNlcnZpY2VXb3JrZXJQcm9jZXNzQ291bnQo
cHJvY2Vzc1Bvb2wsIDEpOworICAgIEVYUEVDVF9FUSgxVSwgcHJvY2Vzc1Bvb2wuX3NlcnZpY2VX
b3JrZXJQcm9jZXNzQ291bnQpOworCisgICAgW3dlYlZpZXcyIGxvYWRSZXF1ZXN0OmFib3V0Qmxh
bmtSZXF1ZXN0XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpzcGluUnVuTG9vcCgxMCk7Cisg
ICAgRVhQRUNUX0VRKDFVLCBwcm9jZXNzUG9vbC5fc2VydmljZVdvcmtlclByb2Nlc3NDb3VudCk7
CisKKyAgICBbd2ViVmlldzEgbG9hZFJlcXVlc3Q6YWJvdXRCbGFua1JlcXVlc3RdOworICAgIHdh
aXRVbnRpbFNlcnZpY2VXb3JrZXJQcm9jZXNzQ291bnQocHJvY2Vzc1Bvb2wsIDApOworICAgIEVY
UEVDVF9FUSgwVSwgcHJvY2Vzc1Bvb2wuX3NlcnZpY2VXb3JrZXJQcm9jZXNzQ291bnQpOwogfQog
CiAjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQK
</data>

          </attachment>
      

    </bug>

</bugzilla>