<?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>174065</bug_id>
          
          <creation_ts>2017-06-30 21:18:56 -0700</creation_ts>
          <short_desc>WebContent processes crash when the network process crashes with pending connection requests</short_desc>
          <delta_ts>2017-07-03 12:47:16 -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>WebKit2</component>
          <version>Safari Technology Preview</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>achristensen</cc>
    
    <cc>andersca</cc>
    
    <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>koivisto</cc>
    
    <cc>sam</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1324761</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-06-30 21:18:56 -0700</bug_when>
    <thetext>When the network process crashes after a CreateNetworkConnectionToWebProcess is sent from UI process (in response to GetNetworkProcessConnection) but before the reply is provided, the originating WebContent process crashes inside ensureNetworkProcessConnection.

Here&apos;s one way to reproduce this crash:
1. Start two WebContent process A and B
2. Kill the network process
3. Load a new page in process A
4. Suspend the network process newly created in step 3 (kill -STOP pid)
5. Load a new page in process B
6. Kill the network process suspended in step 4
7. WebContent process B crashes.

In the actual crash happening in the field, step 4 is likely some sort of a spin or a delay in IPC. What’s important is the network process crasehs after process B requested a new network connection but before fulfilling the reply. In that case, networkProcessCrashedOrFailedToLaunch would simply return 0 in GetNetworkProcessConnection::DelayedReply, and this causes the originating WebContent process to crash inside ensureNetworkProcessConnection.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1324762</commentid>
    <comment_count>1</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-06-30 21:19:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/30359835&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1324770</commentid>
    <comment_count>2</comment_count>
      <attachid>314370</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-06-30 21:46:32 -0700</bug_when>
    <thetext>Created attachment 314370
Fixes the bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1324971</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-07-02 17:26:49 -0700</bug_when>
    <thetext>Ping reviewers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1325192</commentid>
    <comment_count>4</comment_count>
      <attachid>314370</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-07-03 11:46:27 -0700</bug_when>
    <thetext>Comment on attachment 314370
Fixes the bug

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

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKProcessPoolPrivate.h:78
&gt; +- (pid_t)_networkProcessIdentifier;

Availability macros.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1325194</commentid>
    <comment_count>5</comment_count>
      <attachid>314504</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-07-03 11:50:00 -0700</bug_when>
    <thetext>Created attachment 314504
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1325207</commentid>
    <comment_count>6</comment_count>
      <attachid>314504</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-07-03 12:47:14 -0700</bug_when>
    <thetext>Comment on attachment 314504
Patch for landing

Clearing flags on attachment: 314504

Committed r219087: &lt;http://trac.webkit.org/changeset/219087&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1325208</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-07-03 12:47:16 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314370</attachid>
            <date>2017-06-30 21:46:32 -0700</date>
            <delta_ts>2017-07-03 11:49:57 -0700</delta_ts>
            <desc>Fixes the bug</desc>
            <filename>bug-174065-20170630214631.patch</filename>
            <type>text/plain</type>
            <size>21947</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxODk4NSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDE3LTA2LTMwICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFdlYkNvbnRlbnQgcHJvY2Vzc2Vz
IGNyYXNoIHdoZW4gdGhlIG5ldHdvcmsgcHJvY2VzcyBjcmFzaGVzIHdpdGggcGVuZGluZyBjb25u
ZWN0aW9uIHJlcXVlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzQwNjUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMwMzU5ODM1PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBidWcgd2FzIGNh
dXNlZCBieSB0aGUgVUkgcHJvY2VzcyBjbGVhcmluZyBhd2F5IHBlbmRpbmcgbmV0d29yayBjb25u
ZWN0aW9uIHJlcXVlc3RzIHdoZW5ldmVyIHRoZSBleGlzdGluZworICAgICAgICBuZXR3b3JrIHBy
b2Nlc3MgY3Jhc2hlZC4gVGhpcyByZXN1bHRlZCBpbiBXZWJDb250ZW50IHByb2Nlc3Mga2lsbGlu
ZyBpdHNlbGYgaW5zaWRlIGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi4KKworICAgICAg
ICBGaXhlZCB0aGUgYnVnIGJ5IHJlLWxhdW5jaGluZyBhIG5ldyBuZXR3b3JrIHByb2Nlc3Mgd2hl
biB0aGlzIGhhcHBlbnMuIFdlIGRvbid0IHRyeSB0byByZS1sYXVuY2ggYSBuZXcgcHJvY2Vzcwor
ICAgICAgICBpZiB0aGUgcHJldmlvdXMgYXR0ZW1wdCB0byBsYXVuY2ggYSBuZXR3b3JrIHByb2Nl
c3MgaGFkIGZhaWxlZC4KKworICAgICAgICBUaGlzIHBhdGNoIHNwbGl0cyBOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpuZXR3b3JrUHJvY2Vzc0NyYXNoZWRPckZhaWxlZFRvTGF1bmNoIGludG8gbmV0d29y
a1Byb2Nlc3NGYWlsZWRUb0xhdW5jaAorICAgICAgICBhbmQgbmV0d29ya1Byb2Nlc3NDcmFzaGVk
IHRvIGRpZmZlcmVudGlhdGUgdGhvc2UgdHdvIGNhc2VzLCBhbmQgaW52b2tlIHRoZSByZXNwZWN0
aXZlIGNhbGxiYWNrcyBpbiBXZWJQcm9jZXNzUG9vbC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfbmV0
d29ya1Byb2Nlc3NJZGVudGlmaWVyXSk6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3NQcm94eTo6bmV0d29ya1Byb2Nlc3NDcmFzaGVkKTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzUHJveHk6Om5ldHdvcmtQcm9jZXNzQ3Jhc2hlZE9yRmFpbGVkVG9MYXVu
Y2gpOiBTcGxpdCBpbnRvIHRoZSB0d28gZm9sbG93aW5nIGZ1bmN0aW9ucy4KKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6bmV0d29ya1Byb2Nlc3NGYWlsZWRUb0xhdW5jaCk6
IEV4dHJhY3RlZCBmcm9tIG5ldHdvcmtQcm9jZXNzQ3Jhc2hlZE9yRmFpbGVkVG9MYXVuY2guCisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmNsZWFyQ2FsbGJhY2tTdGF0ZXMp
OiBFeHRyYWN0ZWQgZnJvbSBuZXR3b3JrUHJvY2Vzc0NyYXNoZWRPckZhaWxlZFRvTGF1bmNoCisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZENsb3NlKTogQ2FsbCBuZXR3
b3JrUHJvY2Vzc0NyYXNoZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6
OmRpZEZpbmlzaExhdW5jaGluZyk6IENhbGwgbmV0d29ya1Byb2Nlc3NGYWlsZWRUb0xhdW5jaC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Bvb2w6Om5ldHdvcmtQcm9jZXNzQ3Jhc2hlZCk6IFN0YXJ0IGEgbmV3IG5ldHdvcmsg
cHJvY2VzcyB3aGVuIHRoZXJlIGFyZSBwZW5kaW5nIGNvbm5lY3Rpb24KKyAgICAgICAgcmVxdWVz
dHMgdGhlIGNyYWNoZWQgbmV0d29yayBmYWlsZWQgdG8gZnVsbGZpbC4KKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Bvb2w6Om5ldHdvcmtQcm9jZXNzRmFpbGVkVG9MYXVuY2gpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorCiAyMDE3LTA2LTI5ICBSeW9zdWtlIE5p
d2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEFzc2VydCB0aGF0IGNhbGxiYWNrIElE
IGlzIG5vdCAwIG9yIC0xIGR1cmluZyBlbmNvZGluZyBhbmQgZGVjb2RpbmcKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkocmV2aXNpb24gMjE4OTg1
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDg0LDE0ICs0ODQsMjUgQEAgTmV0d29ya1Byb2Nlc3NQcm94eSYgV2ViUHJv
Y2Vzc1Bvb2w6OmVucwogICAgIHJldHVybiAqbV9uZXR3b3JrUHJvY2VzczsKIH0KIAotdm9pZCBX
ZWJQcm9jZXNzUG9vbDo6bmV0d29ya1Byb2Nlc3NDcmFzaGVkKE5ldHdvcmtQcm9jZXNzUHJveHkq
IG5ldHdvcmtQcm9jZXNzUHJveHkpCit2b2lkIFdlYlByb2Nlc3NQb29sOjpuZXR3b3JrUHJvY2Vz
c0NyYXNoZWQoTmV0d29ya1Byb2Nlc3NQcm94eSYgbmV0d29ya1Byb2Nlc3NQcm94eSwgVmVjdG9y
PFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b246OkRlbGF5ZWRSZXBseT4+JiYgcGVuZGluZ1JlcGxpZXMpCit7CisgICAgbmV0d29ya1Byb2Nl
c3NGYWlsZWRUb0xhdW5jaChuZXR3b3JrUHJvY2Vzc1Byb3h5KTsKKyAgICBBU1NFUlQoIW1fbmV0
d29ya1Byb2Nlc3MpOworICAgIGlmIChwZW5kaW5nUmVwbGllcy5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybjsKKyAgICBhdXRvJiBuZXdOZXR3b3JrUHJvY2VzcyA9IGVuc3VyZU5ldHdvcmtQcm9j
ZXNzKCk7CisgICAgZm9yIChhdXRvJiByZXBseSA6IHBlbmRpbmdSZXBsaWVzKQorICAgICAgICBu
ZXdOZXR3b3JrUHJvY2Vzcy5nZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oV1RGTW92ZShyZXBs
eSkpOworfQorCit2b2lkIFdlYlByb2Nlc3NQb29sOjpuZXR3b3JrUHJvY2Vzc0ZhaWxlZFRvTGF1
bmNoKE5ldHdvcmtQcm9jZXNzUHJveHkmIG5ldHdvcmtQcm9jZXNzUHJveHkpCiB7CiAgICAgQVNT
RVJUKG1fbmV0d29ya1Byb2Nlc3MpOwotICAgIEFTU0VSVChuZXR3b3JrUHJvY2Vzc1Byb3h5ID09
IG1fbmV0d29ya1Byb2Nlc3MuZ2V0KCkpOworICAgIEFTU0VSVCgmbmV0d29ya1Byb2Nlc3NQcm94
eSA9PSBtX25ldHdvcmtQcm9jZXNzLmdldCgpKTsKICAgICBtX2RpZE5ldHdvcmtQcm9jZXNzQ3Jh
c2ggPSB0cnVlOwogCiAgICAgZm9yIChhdXRvJiBzdXBwbGVtZW50IDogbV9zdXBwbGVtZW50cy52
YWx1ZXMoKSkKLSAgICAgICAgc3VwcGxlbWVudC0+cHJvY2Vzc0RpZENsb3NlKG5ldHdvcmtQcm9j
ZXNzUHJveHkpOworICAgICAgICBzdXBwbGVtZW50LT5wcm9jZXNzRGlkQ2xvc2UoJm5ldHdvcmtQ
cm9jZXNzUHJveHkpOwogCiAgICAgbV9jbGllbnQubmV0d29ya1Byb2Nlc3NEaWRDcmFzaCh0aGlz
KTsKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHJl
dmlzaW9uIDIxODk4NSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMTUsNyArMzE1LDggQEAgcHVibGljOgogICAgIC8vIE5l
dHdvcmsgUHJvY2VzcyBNYW5hZ2VtZW50CiAgICAgTmV0d29ya1Byb2Nlc3NQcm94eSYgZW5zdXJl
TmV0d29ya1Byb2Nlc3MoKTsKICAgICBOZXR3b3JrUHJvY2Vzc1Byb3h5KiBuZXR3b3JrUHJvY2Vz
cygpIHsgcmV0dXJuIG1fbmV0d29ya1Byb2Nlc3MuZ2V0KCk7IH0KLSAgICB2b2lkIG5ldHdvcmtQ
cm9jZXNzQ3Jhc2hlZChOZXR3b3JrUHJvY2Vzc1Byb3h5Kik7CisgICAgdm9pZCBuZXR3b3JrUHJv
Y2Vzc0NyYXNoZWQoTmV0d29ya1Byb2Nlc3NQcm94eSYsIFZlY3RvcjxSZWY8TWVzc2FnZXM6Oldl
YlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+
PiYmKTsKKyAgICB2b2lkIG5ldHdvcmtQcm9jZXNzRmFpbGVkVG9MYXVuY2goTmV0d29ya1Byb2Nl
c3NQcm94eSYpOwogCiAgICAgdm9pZCBnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oUmVmPE1l
c3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVs
YXllZFJlcGx5PiYmKTsKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1Byb2Nlc3NQb29sLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQkocmV2aXNpb24gMjE4OTg1KQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0zODksNiArMzg5LDExIEBAIC0gKHZvaWQpX3Rlcm1pbmF0ZURhdGFiYXNlUHJvY2Vz
cwogICAgIF9wcm9jZXNzUG9vbC0+dGVybWluYXRlRGF0YWJhc2VQcm9jZXNzKCk7CiB9CiAKKy0g
KHBpZF90KV9uZXR3b3JrUHJvY2Vzc0lkZW50aWZpZXIKK3sKKyAgICByZXR1cm4gX3Byb2Nlc3NQ
b29sLT5uZXR3b3JrUHJvY2Vzc0lkZW50aWZpZXIoKTsKK30KKwogLSAodm9pZClfc3luY05ldHdv
cmtQcm9jZXNzQ29va2llcwogewogICAgIF9wcm9jZXNzUG9vbC0+c3luY05ldHdvcmtQcm9jZXNz
Q29va2llcygpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1By
b2Nlc3NQb29sUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaAkocmV2aXNpb24gMjE4OTg1KQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC03NSw2ICs3NSw5IEBACiAtICh2b2lkKV90ZXJtaW5hdGVEYXRh
YmFzZVByb2Nlc3M7CiAKIC8vIFRlc3Qgb25seS4KKy0gKHBpZF90KV9uZXR3b3JrUHJvY2Vzc0lk
ZW50aWZpZXI7CisKKy8vIFRlc3Qgb25seS4KIC0gKHNpemVfdClfd2ViUHJvY2Vzc0NvdW50IFdL
X0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogLSAo
dm9pZClfc3luY05ldHdvcmtQcm9jZXNzQ29va2llcyBXS19BUElfQVZBSUxBQkxFKG1hY29zeChX
S19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAJKHJl
dmlzaW9uIDIxODk4NSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjQsNyArMTY0LDIwIEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGVsZXRlV2Vic2l0ZUQKICAgICBzZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrUHJvY2Vzczo6RGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKHNlc3Npb25JRCwg
ZGF0YVR5cGVzLCBvcmlnaW5zLCBjb29raWVIb3N0TmFtZXMsIGNhbGxiYWNrSUQpLCAwKTsKIH0K
IAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpuZXR3b3JrUHJvY2Vzc0NyYXNoZWRPckZhaWxl
ZFRvTGF1bmNoKCkKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6bmV0d29ya1Byb2Nlc3NDcmFz
aGVkKCkKK3sKKyAgICBjbGVhckNhbGxiYWNrU3RhdGVzKCk7CisKKyAgICBWZWN0b3I8UmVmPE1l
c3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVs
YXllZFJlcGx5Pj4gcGVuZGluZ1JlcGxpZXM7CisgICAgcGVuZGluZ1JlcGxpZXMucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy5zaXplKCkpOworICAgIGZv
ciAoYXV0byYgcmVwbHkgOiBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcykKKyAgICAgICAgcGVu
ZGluZ1JlcGxpZXMuYXBwZW5kKFdURk1vdmUocmVwbHkpKTsKKworICAgIC8vIFRlbGwgdGhlIG5l
dHdvcmsgcHJvY2VzcyBtYW5hZ2VyIHRvIGZvcmdldCBhYm91dCB0aGlzIG5ldHdvcmsgcHJvY2Vz
cyBwcm94eS4gVGhpcyBtYXkgY2F1c2UgdXMgdG8gYmUgZGVsZXRlZC4KKyAgICBtX3Byb2Nlc3NQ
b29sLm5ldHdvcmtQcm9jZXNzQ3Jhc2hlZCgqdGhpcywgV1RGTW92ZShwZW5kaW5nUmVwbGllcykp
OworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6Om5ldHdvcmtQcm9jZXNzRmFpbGVkVG9M
YXVuY2goKQogewogICAgIC8vIFRoZSBuZXR3b3JrIHByb2Nlc3MgbXVzdCBoYXZlIGNyYXNoZWQg
b3IgZXhpdGVkLCBzZW5kIGFueSBwZW5kaW5nIHN5bmMgcmVwbGllcyB3ZSBtaWdodCBoYXZlLgog
ICAgIHdoaWxlICghbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMuaXNFbXB0eSgpKSB7CkBAIC0x
NzgsNyArMTkxLDEzIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6bmV0d29ya1Byb2Nlc3MK
ICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKICNlbmRpZgogICAgIH0KKyAgICBjbGVhckNhbGxi
YWNrU3RhdGVzKCk7CisgICAgLy8gVGVsbCB0aGUgbmV0d29yayBwcm9jZXNzIG1hbmFnZXIgdG8g
Zm9yZ2V0IGFib3V0IHRoaXMgbmV0d29yayBwcm9jZXNzIHByb3h5LiBUaGlzIG1heSBjYXVzZSB1
cyB0byBiZSBkZWxldGVkLgorICAgIG1fcHJvY2Vzc1Bvb2wubmV0d29ya1Byb2Nlc3NGYWlsZWRU
b0xhdW5jaCgqdGhpcyk7Cit9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Y2xlYXJDYWxs
YmFja1N0YXRlcygpCit7CiAgICAgZm9yIChjb25zdCBhdXRvJiBjYWxsYmFjayA6IG1fcGVuZGlu
Z0ZldGNoV2Vic2l0ZURhdGFDYWxsYmFja3MudmFsdWVzKCkpCiAgICAgICAgIGNhbGxiYWNrKFdl
YnNpdGVEYXRhKCkpOwogICAgIG1fcGVuZGluZ0ZldGNoV2Vic2l0ZURhdGFDYWxsYmFja3MuY2xl
YXIoKTsKQEAgLTE5MCw5ICsyMDksNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6Om5ldHdv
cmtQcm9jZXNzCiAgICAgZm9yIChjb25zdCBhdXRvJiBjYWxsYmFjayA6IG1fcGVuZGluZ0RlbGV0
ZVdlYnNpdGVEYXRhRm9yT3JpZ2luc0NhbGxiYWNrcy52YWx1ZXMoKSkKICAgICAgICAgY2FsbGJh
Y2soKTsKICAgICBtX3BlbmRpbmdEZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnNDYWxsYmFja3Mu
Y2xlYXIoKTsKLQotICAgIC8vIFRlbGwgdGhlIG5ldHdvcmsgcHJvY2VzcyBtYW5hZ2VyIHRvIGZv
cmdldCBhYm91dCB0aGlzIG5ldHdvcmsgcHJvY2VzcyBwcm94eS4gVGhpcyBtYXkgY2F1c2UgdXMg
dG8gYmUgZGVsZXRlZC4KLSAgICBtX3Byb2Nlc3NQb29sLm5ldHdvcmtQcm9jZXNzQ3Jhc2hlZCh0
aGlzKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKQEAgLTIy
Myw3ICsyMzksNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZENsb3NlKElQQzo6CiAg
ICAgbV90b2tlbkZvckhvbGRpbmdMb2NrZWRGaWxlcyA9IG51bGxwdHI7CiAKICAgICAvLyBUaGlz
IG1heSBjYXVzZSB1cyB0byBiZSBkZWxldGVkLgotICAgIG5ldHdvcmtQcm9jZXNzQ3Jhc2hlZE9y
RmFpbGVkVG9MYXVuY2goKTsKKyAgICBuZXR3b3JrUHJvY2Vzc0NyYXNoZWQoKTsKIH0KIAogdm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UsIElQQzo6U3RyaW5nUmVmZXJlbmNlKQpAQCAt
MzAyLDcgKzMxOCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmMK
ICAgICBDaGlsZFByb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKGxhdW5jaGVyLCBjb25u
ZWN0aW9uSWRlbnRpZmllcik7CiAKICAgICBpZiAoSVBDOjpDb25uZWN0aW9uOjppZGVudGlmaWVy
SXNOdWxsKGNvbm5lY3Rpb25JZGVudGlmaWVyKSkgewotICAgICAgICBuZXR3b3JrUHJvY2Vzc0Ny
YXNoZWRPckZhaWxlZFRvTGF1bmNoKCk7CisgICAgICAgIG5ldHdvcmtQcm9jZXNzRmFpbGVkVG9M
YXVuY2goKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAkocmV2
aXNpb24gMjE4OTg1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC04Niw3ICs4Niw5IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBjb25uZWN0aW9uV2lsbE9wZW4oSVBDOjpDb25uZWN0aW9uJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBwcm9jZXNzV2lsbFNodXREb3duKElQQzo6Q29ubmVjdGlvbiYpIG92ZXJyaWRl
OwogCi0gICAgdm9pZCBuZXR3b3JrUHJvY2Vzc0NyYXNoZWRPckZhaWxlZFRvTGF1bmNoKCk7Cisg
ICAgdm9pZCBuZXR3b3JrUHJvY2Vzc0ZhaWxlZFRvTGF1bmNoKCk7CisgICAgdm9pZCBuZXR3b3Jr
UHJvY2Vzc0NyYXNoZWQoKTsKKyAgICB2b2lkIGNsZWFyQ2FsbGJhY2tTdGF0ZXMoKTsKIAogICAg
IC8vIFByb2Nlc3NUaHJvdHRsZXJDbGllbnQKICAgICB2b2lkIHNlbmRQcm9jZXNzV2lsbFN1c3Bl
bmRJbW1pbmVudGx5KCkgb3ZlcnJpZGU7CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMTkwMzkpCisrKyBUb29scy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMCBAQAorMjAxNy0wNi0zMCAgUnlvc3VrZSBO
aXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBXZWJDb250ZW50IHByb2Nlc3NlcyBj
cmFzaCB3aGVuIHRoZSBuZXR3b3JrIHByb2Nlc3MgY3Jhc2hlcyB3aXRoIHBlbmRpbmcgY29ubmVj
dGlvbiByZXF1ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTc0MDY1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMDM1OTgzNT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBBUEkgdG8gZW5z
dXJlIFVJIHByb2Nlc3MgdHJpZXMgdG8gcmVsYXVuY2ggYSBuZXcgbmV0d29yayBwcm9jZXNzIHdo
ZW4gdGhlIG5ldHdvcmsgcHJvY2VzcworICAgICAgICBjcmFzaGVzIHdpdGggcGVuZGluZyBuZXR3
b3JrIGNvbm5lY3Rpb24gcmVxdWVzdHMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdDIvTmV0d29ya1Byb2Nlc3NDcmFzaFdpdGhQZW5kaW5nQ29ubmVjdGlv
bi5tbTogQWRkZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0TmF2aWdhdGlv
bkRlbGVnYXRlLmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0TmF2aWdhdGlv
bkRlbGVnYXRlLm1tOgorICAgICAgICAoLVtUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXdX
ZWJDb250ZW50UHJvY2Vzc0RpZFRlcm1pbmF0ZTpdKTogQWRkZWQuCisKIDIwMTctMDYtMzAgIE1l
Z2FuIEdhcmRuZXIgIDxtZWdhbl9nYXJkbmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmll
d2VkIG1hYyBidWlsZCBmaXguCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24g
MjE4OTg1KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTUxMCw2ICs1MTAsNyBAQAogCQk5OTg0
RkFDQzFDRkZBRjYwMDA4RDE5OEMgLyogV0tXZWJWaWV3VGV4dElucHV0Lm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk4NEZBQ0ExQ0ZGQUVFRTAwOEQx
OThDIC8qIFdLV2ViVmlld1RleHRJbnB1dC5tbSAqLzsgfTsKIAkJOTk4NEZBQ0UxQ0ZGQjA5MDAw
OEQxOThDIC8qIGVkaXRhYmxlLWJvZHkuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTg0RkFDRDFDRkZCMDM4MDA4RDE5OEMgLyogZWRp
dGFibGUtYm9keS5odG1sICovOyB9OwogCQk5QjA3ODZBNTFDNTg4NUMzMDBEMTU5RTMgLyogSW5q
ZWN0ZWRCdW5kbGVNYWtlQWxsU2hhZG93Um9vdHNPcGVuX0J1bmRsZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjA3ODZBNDFDNTg4NUMzMDBEMTU5
RTMgLyogSW5qZWN0ZWRCdW5kbGVNYWtlQWxsU2hhZG93Um9vdHNPcGVuX0J1bmRsZS5jcHAgKi87
IH07CisJCTlCMTlDREEwMUYwNkRGRTMwMDA1NDhERCAvKiBOZXR3b3JrUHJvY2Vzc0NyYXNoV2l0
aFBlbmRpbmdDb25uZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOUIxOUNEOUUxRjA2REZFMzAwMDU0OEREIC8qIE5ldHdvcmtQcm9jZXNzQ3Jh
c2hXaXRoUGVuZGluZ0Nvbm5lY3Rpb24ubW0gKi87IH07CiAJCTlCMjZGQ0NBMTU5RDE2REUwMEND
Mzc2NSAvKiBIVE1MRm9ybUNvbGxlY3Rpb25OYW1lZEl0ZW0uaHRtbCBpbiBDb3B5IFJlc291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjI2RkNCNDE1OUQxNUU3MDBD
QzM3NjUgLyogSFRNTEZvcm1Db2xsZWN0aW9uTmFtZWRJdGVtLmh0bWwgKi87IH07CiAJCTlCMjcw
RkVFMUREQzJDMEIwMDJENTNGMyAvKiBjbG9zZWQtc2hhZG93LXRyZWUtdGVzdC5odG1sIGluIENv
cHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMjcwRkVE
MUREQzI1RkQwMDJENTNGMyAvKiBjbG9zZWQtc2hhZG93LXRyZWUtdGVzdC5odG1sICovOyB9Owog
CQk5QjRGOEZBNzE1OUQ1MkREMDAyRDlGOTQgLyogSFRNTENvbGxlY3Rpb25OYW1lZEl0ZW0uaHRt
bCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
QjRGOEZBNjE1OUQ1MkNBMDAyRDlGOTQgLyogSFRNTENvbGxlY3Rpb25OYW1lZEl0ZW0uaHRtbCAq
LzsgfTsKQEAgLTEzNzksNiArMTM4MCw3IEBACiAJCTk5ODRGQUNEMUNGRkIwMzgwMDhEMTk4QyAv
KiBlZGl0YWJsZS1ib2R5Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiZWRpdGFi
bGUtYm9keS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIwNzg2QTIxQzU4
ODMwRjAwRDE1OUUzIC8qIEluamVjdGVkQnVuZGxlTWFrZUFsbFNoYWRvd1Jvb3RzT3Blbi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmplY3RlZEJ1bmRsZU1ha2VB
bGxTaGFkb3dSb290c09wZW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjA3
ODZBNDFDNTg4NUMzMDBEMTU5RTMgLyogSW5qZWN0ZWRCdW5kbGVNYWtlQWxsU2hhZG93Um9vdHNP
cGVuX0J1bmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmpl
Y3RlZEJ1bmRsZU1ha2VBbGxTaGFkb3dSb290c09wZW5fQnVuZGxlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJOUIxOUNEOUUxRjA2REZFMzAwMDU0OEREIC8qIE5ldHdvcmtQcm9j
ZXNzQ3Jhc2hXaXRoUGVuZGluZ0Nvbm5lY3Rpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IG5hbWUgPSBOZXR3b3JrUHJvY2Vzc0NyYXNoV2l0aFBlbmRpbmdDb25uZWN0aW9u
Lm1tOyBwYXRoID0gV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzc0NyYXNoV2l0aFBlbmRpbmdDb25uZWN0
aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjI2RkM2QjE1OUQwNjEwMDBD
QzM3NjUgLyogSFRNTEZvcm1Db2xsZWN0aW9uTmFtZWRJdGVtLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gSFRNTEZvcm1Db2xsZWN0aW9uTmFtZWRJdGVtLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjI2RkNCNDE1OUQxNUU3MDBDQzM3NjUgLyog
SFRNTEZvcm1Db2xsZWN0aW9uTmFtZWRJdGVtLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBh
dGggPSBIVE1MRm9ybUNvbGxlY3Rpb25OYW1lZEl0ZW0uaHRtbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOUIyNzBGRUQxRERDMjVGRDAwMkQ1M0YzIC8qIGNsb3NlZC1zaGFkb3ctdHJl
ZS10ZXN0Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiY2xvc2VkLXNoYWRvdy10
cmVlLXRlc3QuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTQ2LDYgKzIx
NDgsNyBAQAogCQkJCTJEMTY0NkUxMUQxODYyQ0QwMDAxNUExQSAvKiBEZWZlcnJlZFZpZXdJbldp
bmRvd1N0YXRlQ2hhbmdlLm1tICovLAogCQkJCUI1NUFEMUQxMTc5RjMzNjYwMEFDMTQ5NCAvKiBQ
cmV2ZW50SW1hZ2VMb2FkV2l0aEF1dG9SZXNpemluZy5tbSAqLywKIAkJCQlCNTVBRDFEMzE3OUYz
QUJGMDBBQzE0OTQgLyogUHJldmVudEltYWdlTG9hZFdpdGhBdXRvUmVzaXppbmdfQnVuZGxlLmNw
cCAqLywKKwkJCQk5QjE5Q0Q5RTFGMDZERkUzMDAwNTQ4REQgLyogTmV0d29ya1Byb2Nlc3NDcmFz
aFdpdGhQZW5kaW5nQ29ubmVjdGlvbi5tbSAqLywKIAkJCQkyOTQzQkU4NDE2MURGRUI4MDA5OTlF
M0QgLyogVXNlckNvbnRlbnRUZXN0Lm1tICovLAogCQkJCUJDM0M0QzdEMTQ1ODdBQTYwMDI1RkI2
MiAvKiBXS0Jyb3dzaW5nQ29udGV4dEdyb3VwVGVzdC5tbSAqLywKIAkJCQlCQzNDNEM3MDE0NTc1
QjZBMDAyNUZCNjIgLyogV0tCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGVUZXN0Lm1tICovLApA
QCAtMzEwNCw2ICszMTA3LDcgQEAKIAkJCQk3Q0NFN0YwNTFBNDExQUU2MDA0NDdDNEMgLyogTmV3
Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0RnJhbWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTJFQ0ZGNTU1MUQ5QjEyRjgwMEI1NTM5NCAvKiBOb3dQbGF5aW5nQ29udHJvbHNUZXN0cy5tbSBp
biBTb3VyY2VzICovLAogCQkJCUExMEYwNDdFMUUzQUQyOUMwMEM5NUUxOSAvKiBOU0ZpbGVNYW5h
Z2VyRXh0cmFzLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJOUIxOUNEQTAxRjA2REZFMzAwMDU0OERE
IC8qIE5ldHdvcmtQcm9jZXNzQ3Jhc2hXaXRoUGVuZGluZ0Nvbm5lY3Rpb24ubW0gaW4gU291cmNl
cyAqLywKIAkJCQkzN0EyMkFBNzFEQ0FBMjcyMDBBRkJGQzQgLyogT2JzZXJ2ZWRSZW5kZXJpbmdQ
cm9ncmVzc0V2ZW50c0FmdGVyQ3Jhc2gubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YyNTFB
NDExQUY2MDA0NDdDNEMgLyogT3BlbkFuZENsb3NlV2luZG93Lm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQ0VCQ0ExMkYxRTNBNjYwMTAwQzczMjkzIC8qIE92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9s
aWN5Lm1tIGluIFNvdXJjZXMgKi8sCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3NDcmFzaFdpdGhQZW5kaW5nQ29ubmVjdGlvbi5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvTmV0d29ya1Byb2Nlc3ND
cmFzaFdpdGhQZW5kaW5nQ29ubmVjdGlvbi5tbQkobm9uZXhpc3RlbnQpCisrKyBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvTmV0d29ya1Byb2Nlc3NDcmFzaFdpdGhQZW5kaW5nQ29u
bmVjdGlvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExMiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbXBvcnQgImNvbmZpZy5oIgorCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2lt
cG9ydCAiVGVzdC5oIgorI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgorI2ltcG9y
dCA8V2ViS2l0L1dLQ29udGV4dFByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1Byb2Nlc3NH
cm91cFByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oPgor
I2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XZWJL
aXQuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKworI2lmIFdLX0FQSV9FTkFCTEVECisK
K25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworc3RhdGljIGJvb2wgbG9hZGVkT3JDcmFzaGVk
ID0gZmFsc2U7CitzdGF0aWMgYm9vbCBsb2FkZWQgPSBmYWxzZTsKK3N0YXRpYyBib29sIHdlYlBy
b2Nlc3NDcmFzaGVkID0gZmFsc2U7CitzdGF0aWMgYm9vbCBuZXR3b3JrUHJvY2Vzc0NyYXNoZWQg
PSBmYWxzZTsKKworVEVTVChXZWJLaXQyLCBOZXR3b3JrUHJvY2Vzc0NyYXNoV2l0aFBlbmRpbmdD
b25uZWN0aW9uKQoreworICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25m
aWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRd
KTsKKyAgICBSZXRhaW5QdHI8V0tQcm9jZXNzUG9vbD4gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtb
V0tQcm9jZXNzUG9vbCBhbGxvY10gaW5pdF0pOworICAgIFtjb25maWd1cmF0aW9uIHNldFByb2Nl
c3NQb29sOnByb2Nlc3NQb29sLmdldCgpXTsKKworICAgIC8vIEZJWE1FOiBBZG9wdCB0aGUgbmV3
IEFQSSBvbmNlIGl0J3MgYWRkZWQgaW4gd2Via2l0Lm9yZy9iLzE3NDA2MS4KKyAgICBXS0NvbnRl
eHRDbGllbnRWMCBjbGllbnQ7CisgICAgbWVtc2V0KCZjbGllbnQsIDAsIHNpemVvZihjbGllbnQp
KTsKKyAgICBjbGllbnQubmV0d29ya1Byb2Nlc3NEaWRDcmFzaCA9IFtdKFdLQ29udGV4dFJlZiBj
b250ZXh0LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKSB7CisgICAgICAgIG5ldHdvcmtQcm9jZXNz
Q3Jhc2hlZCA9IHRydWU7CisgICAgfTsKKyAgICBXS0NvbnRleHRTZXRDbGllbnQoc3RhdGljX2Nh
c3Q8V0tDb250ZXh0UmVmPihwcm9jZXNzUG9vbC5nZXQoKSksICZjbGllbnQuYmFzZSk7CisKKyAg
ICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3MSA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlv
bjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmll
dzIgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3Qo
MCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworCisg
ICAgW3dlYlZpZXcxLmdldCgpIGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhV
Ukw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJhYm91dDpibGFuayJdXV07CisgICAgW3dlYlZpZXcx
LmdldCgpIF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKworICAgIFt3ZWJWaWV3
Mi5nZXQoKSBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBV
UkxXaXRoU3RyaW5nOkAiYWJvdXQ6YmxhbmsiXV1dOworICAgIFt3ZWJWaWV3Mi5nZXQoKSBfdGVz
dF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisKKyAgICBwaWRfdCB3ZWJWaWV3MVBJRCA9
IFt3ZWJWaWV3MS5nZXQoKSBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdOworICAgIHBpZF90IHdlYlZp
ZXcyUElEID0gW3dlYlZpZXcyLmdldCgpIF93ZWJQcm9jZXNzSWRlbnRpZmllcl07CisgICAgRVhQ
RUNUX05FKHdlYlZpZXcxUElELCB3ZWJWaWV3MlBJRCk7CisKKyAgICBwaWRfdCBpbml0aWFsTmV0
d29ya1Byb2Nlc3NJZGVudGlmaWZlciA9IFtwcm9jZXNzUG9vbC5nZXQoKSBfbmV0d29ya1Byb2Nl
c3NJZGVudGlmaWVyXTsKKyAgICBFWFBFQ1RfTkUoaW5pdGlhbE5ldHdvcmtQcm9jZXNzSWRlbnRp
ZmlmZXIsIDApOworICAgIGtpbGwoaW5pdGlhbE5ldHdvcmtQcm9jZXNzSWRlbnRpZmlmZXIsIFNJ
R0tJTEwpOworICAgIFV0aWw6OnJ1bigmbmV0d29ya1Byb2Nlc3NDcmFzaGVkKTsKKyAgICBuZXR3
b3JrUHJvY2Vzc0NyYXNoZWQgPSBmYWxzZTsKKworICAgIFt3ZWJWaWV3MS5nZXQoKSBsb2FkUmVx
dWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0g
VVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rv
cnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXV07CisgICAgW3dlYlZpZXcxLmdldCgpIF90
ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKworICAgIHBpZF90IHJlbGF1bmNoZWRO
ZXR3b3JrUHJvY2Vzc0lkZW50aWZpZXIgPSBbcHJvY2Vzc1Bvb2wuZ2V0KCkgX25ldHdvcmtQcm9j
ZXNzSWRlbnRpZmllcl07CisgICAgRVhQRUNUX05FKGluaXRpYWxOZXR3b3JrUHJvY2Vzc0lkZW50
aWZpZmVyLCByZWxhdW5jaGVkTmV0d29ya1Byb2Nlc3NJZGVudGlmaWVyKTsKKyAgICBFWFBFQ1Rf
RkFMU0UobmV0d29ya1Byb2Nlc3NDcmFzaGVkKTsKKworICAgIGtpbGwocmVsYXVuY2hlZE5ldHdv
cmtQcm9jZXNzSWRlbnRpZmllciwgU0lHU1RPUCk7CisKKyAgICBbd2ViVmlldzIuZ2V0KCkgbG9h
ZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5k
bGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGly
ZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV1dOworICAgIFV0aWw6OnNsZWVwKDAu
NSk7IC8vIFdhaXQgZm9yIHRoZSBXZWJDb250ZW50IHByb2Nlc3MgdG8gc2VuZCBDcmVhdGVOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcworICAgIGtpbGwocmVsYXVuY2hlZE5ldHdvcmtQcm9j
ZXNzSWRlbnRpZmllciwgU0lHS0lMTCk7CisgICAgVXRpbDo6cnVuKCZuZXR3b3JrUHJvY2Vzc0Ny
YXNoZWQpOworCisgICAgYXV0byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdE5h
dmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIGxvYWRlZE9yQ3Jhc2hlZCA9IGZh
bHNlOworICAgIFtuYXZpZ2F0aW9uRGVsZWdhdGUgc2V0RGlkRmluaXNoTmF2aWdhdGlvbjpeKFdL
V2ViVmlldyAqLCBXS05hdmlnYXRpb24gKikgeworICAgICAgICBsb2FkZWRPckNyYXNoZWQgPSB0
cnVlOworICAgICAgICBsb2FkZWQgPSB0cnVlOworICAgIH1dOworICAgIFtuYXZpZ2F0aW9uRGVs
ZWdhdGUgc2V0V2ViQ29udGVudFByb2Nlc3NEaWRUZXJtaW5hdGU6XihXS1dlYlZpZXcgKikgewor
ICAgICAgICBsb2FkZWRPckNyYXNoZWQgPSB0cnVlOworICAgICAgICB3ZWJQcm9jZXNzQ3Jhc2hl
ZCA9IHRydWU7CisgICAgfV07CisgICAgW3dlYlZpZXcyIHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpu
YXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCldOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
bG9hZGVkT3JDcmFzaGVkKTsKKyAgICBFWFBFQ1RfVFJVRShsb2FkZWQpOworICAgIEVYUEVDVF9G
QUxTRSh3ZWJQcm9jZXNzQ3Jhc2hlZCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRB
UEkKKworI2VuZGlmCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3ROYXZpZ2F0
aW9uRGVsZWdhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rl
c3ROYXZpZ2F0aW9uRGVsZWdhdGUuaAkocmV2aXNpb24gMjE4OTg1KQorKysgVG9vbHMvVGVzdFdl
YktpdEFQSS9jb2NvYS9UZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM1LDYgKzM1LDcgQEAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGlkRmFp
bFByb3Zpc2lvbmFsTmF2aWdhdGlvbikoV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvbiAqLCBOU0Vy
cm9yICopOwogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRGaW5pc2hOYXZp
Z2F0aW9uKShXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uICopOwogQHByb3BlcnR5IChub25hdG9t
aWMsIGNvcHkpIHZvaWQgKF5yZW5kZXJpbmdQcm9ncmVzc0RpZENoYW5nZSkoV0tXZWJWaWV3ICos
IF9XS1JlbmRlcmluZ1Byb2dyZXNzRXZlbnRzKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5
KSB2b2lkIChed2ViQ29udGVudFByb2Nlc3NEaWRUZXJtaW5hdGUpKFdLV2ViVmlldyAqKTsKIAog
LSAodm9pZCl3YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbjsKIApJbmRleDogVG9vbHMvVGVzdFdl
YktpdEFQSS9jb2NvYS9UZXN0TmF2aWdhdGlvbkRlbGVnYXRlLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5tbQkocmV2aXNp
b24gMjE4OTg1KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0TmF2aWdhdGlvbkRl
bGVnYXRlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSwxMiBAQCAtICh2b2lkKXdlYlZp
ZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkCiAgICAgICAgIF9kaWRGaW5pc2hOYXZpZ2F0aW9u
KHdlYlZpZXcsIG5hdmlnYXRpb24pOwogfQogCistICh2b2lkKXdlYlZpZXdXZWJDb250ZW50UHJv
Y2Vzc0RpZFRlcm1pbmF0ZTooV0tXZWJWaWV3ICopd2ViVmlldworeworICAgIGlmIChfd2ViQ29u
dGVudFByb2Nlc3NEaWRUZXJtaW5hdGUpCisgICAgICAgIF93ZWJDb250ZW50UHJvY2Vzc0RpZFRl
cm1pbmF0ZSh3ZWJWaWV3KTsKK30KKwogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2Vi
VmlldyByZW5kZXJpbmdQcm9ncmVzc0RpZENoYW5nZTooX1dLUmVuZGVyaW5nUHJvZ3Jlc3NFdmVu
dHMpcHJvZ3Jlc3NFdmVudHMKIHsKICAgICBpZiAoX3JlbmRlcmluZ1Byb2dyZXNzRGlkQ2hhbmdl
KQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314504</attachid>
            <date>2017-07-03 11:50:00 -0700</date>
            <delta_ts>2017-07-03 12:47:14 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-174065-20170703115001.patch</filename>
            <type>text/plain</type>
            <size>22097</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxOTA4MCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDE3LTA2LTMwICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFdlYkNvbnRlbnQgcHJvY2Vzc2Vz
IGNyYXNoIHdoZW4gdGhlIG5ldHdvcmsgcHJvY2VzcyBjcmFzaGVzIHdpdGggcGVuZGluZyBjb25u
ZWN0aW9uIHJlcXVlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzQwNjUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMwMzU5ODM1PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgVGhlIGJ1ZyB3YXMgY2F1c2Vk
IGJ5IHRoZSBVSSBwcm9jZXNzIGNsZWFyaW5nIGF3YXkgcGVuZGluZyBuZXR3b3JrIGNvbm5lY3Rp
b24gcmVxdWVzdHMgd2hlbmV2ZXIgdGhlIGV4aXN0aW5nCisgICAgICAgIG5ldHdvcmsgcHJvY2Vz
cyBjcmFzaGVkLiBUaGlzIHJlc3VsdGVkIGluIFdlYkNvbnRlbnQgcHJvY2VzcyBraWxsaW5nIGl0
c2VsZiBpbnNpZGUgZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLgorCisgICAgICAgIEZp
eGVkIHRoZSBidWcgYnkgcmUtbGF1bmNoaW5nIGEgbmV3IG5ldHdvcmsgcHJvY2VzcyB3aGVuIHRo
aXMgaGFwcGVucy4gV2UgZG9uJ3QgdHJ5IHRvIHJlLWxhdW5jaCBhIG5ldyBwcm9jZXNzCisgICAg
ICAgIGlmIHRoZSBwcmV2aW91cyBhdHRlbXB0IHRvIGxhdW5jaCBhIG5ldHdvcmsgcHJvY2VzcyBo
YWQgZmFpbGVkLgorCisgICAgICAgIFRoaXMgcGF0Y2ggc3BsaXRzIE5ldHdvcmtQcm9jZXNzUHJv
eHk6Om5ldHdvcmtQcm9jZXNzQ3Jhc2hlZE9yRmFpbGVkVG9MYXVuY2ggaW50byBuZXR3b3JrUHJv
Y2Vzc0ZhaWxlZFRvTGF1bmNoCisgICAgICAgIGFuZCBuZXR3b3JrUHJvY2Vzc0NyYXNoZWQgdG8g
ZGlmZmVyZW50aWF0ZSB0aG9zZSB0d28gY2FzZXMsIGFuZCBpbnZva2UgdGhlIHJlc3BlY3RpdmUg
Y2FsbGJhY2tzIGluIFdlYlByb2Nlc3NQb29sLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1Byb2Nlc3NQb29sLm1tOgorICAgICAgICAoLVtXS1Byb2Nlc3NQb29sIF9uZXR3b3Jr
UHJvY2Vzc0lkZW50aWZpZXJdKTogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1By
b3h5OjpuZXR3b3JrUHJvY2Vzc0NyYXNoZWQpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3NQcm94eTo6bmV0d29ya1Byb2Nlc3NDcmFzaGVkT3JGYWlsZWRUb0xhdW5jaCk6
IFNwbGl0IGludG8gdGhlIHR3byBmb2xsb3dpbmcgZnVuY3Rpb25zLgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpuZXR3b3JrUHJvY2Vzc0ZhaWxlZFRvTGF1bmNoKTogRXh0
cmFjdGVkIGZyb20gbmV0d29ya1Byb2Nlc3NDcmFzaGVkT3JGYWlsZWRUb0xhdW5jaC4KKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6Y2xlYXJDYWxsYmFja1N0YXRlcyk6IEV4
dHJhY3RlZCBmcm9tIG5ldHdvcmtQcm9jZXNzQ3Jhc2hlZE9yRmFpbGVkVG9MYXVuY2gKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkQ2xvc2UpOiBDYWxsIG5ldHdvcmtQ
cm9jZXNzQ3Jhc2hlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlk
RmluaXNoTGF1bmNoaW5nKTogQ2FsbCBuZXR3b3JrUHJvY2Vzc0ZhaWxlZFRvTGF1bmNoLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6bmV0d29ya1Byb2Nlc3NDcmFzaGVkKTogU3RhcnQgYSBuZXcgbmV0d29yayBwcm9j
ZXNzIHdoZW4gdGhlcmUgYXJlIHBlbmRpbmcgY29ubmVjdGlvbgorICAgICAgICByZXF1ZXN0cyB0
aGUgY3JhY2hlZCBuZXR3b3JrIGZhaWxlZCB0byBmdWxsZmlsLgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbDo6bmV0d29ya1Byb2Nlc3NGYWlsZWRUb0xhdW5jaCk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisKIDIwMTctMDctMDMgIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBEcm9wIFJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZSdzIHN0YXRpc3RpY3NMb2NrCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAJKHJldmlzaW9uIDIxOTA4MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5MCwxNCArNDkw
LDI1IEBAIE5ldHdvcmtQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnMKICAgICByZXR1
cm4gKm1fbmV0d29ya1Byb2Nlc3M7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6Om5ldHdvcmtQ
cm9jZXNzQ3Jhc2hlZChOZXR3b3JrUHJvY2Vzc1Byb3h5KiBuZXR3b3JrUHJvY2Vzc1Byb3h5KQor
dm9pZCBXZWJQcm9jZXNzUG9vbDo6bmV0d29ya1Byb2Nlc3NDcmFzaGVkKE5ldHdvcmtQcm9jZXNz
UHJveHkmIG5ldHdvcmtQcm9jZXNzUHJveHksIFZlY3RvcjxSZWY8TWVzc2FnZXM6OldlYlByb2Nl
c3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+PiYmIHBl
bmRpbmdSZXBsaWVzKQoreworICAgIG5ldHdvcmtQcm9jZXNzRmFpbGVkVG9MYXVuY2gobmV0d29y
a1Byb2Nlc3NQcm94eSk7CisgICAgQVNTRVJUKCFtX25ldHdvcmtQcm9jZXNzKTsKKyAgICBpZiAo
cGVuZGluZ1JlcGxpZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisgICAgYXV0byYgbmV3
TmV0d29ya1Byb2Nlc3MgPSBlbnN1cmVOZXR3b3JrUHJvY2VzcygpOworICAgIGZvciAoYXV0byYg
cmVwbHkgOiBwZW5kaW5nUmVwbGllcykKKyAgICAgICAgbmV3TmV0d29ya1Byb2Nlc3MuZ2V0TmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uKFdURk1vdmUocmVwbHkpKTsKK30KKwordm9pZCBXZWJQcm9j
ZXNzUG9vbDo6bmV0d29ya1Byb2Nlc3NGYWlsZWRUb0xhdW5jaChOZXR3b3JrUHJvY2Vzc1Byb3h5
JiBuZXR3b3JrUHJvY2Vzc1Byb3h5KQogewogICAgIEFTU0VSVChtX25ldHdvcmtQcm9jZXNzKTsK
LSAgICBBU1NFUlQobmV0d29ya1Byb2Nlc3NQcm94eSA9PSBtX25ldHdvcmtQcm9jZXNzLmdldCgp
KTsKKyAgICBBU1NFUlQoJm5ldHdvcmtQcm9jZXNzUHJveHkgPT0gbV9uZXR3b3JrUHJvY2Vzcy5n
ZXQoKSk7CiAgICAgbV9kaWROZXR3b3JrUHJvY2Vzc0NyYXNoID0gdHJ1ZTsKIAogICAgIGZvciAo
YXV0byYgc3VwcGxlbWVudCA6IG1fc3VwcGxlbWVudHMudmFsdWVzKCkpCi0gICAgICAgIHN1cHBs
ZW1lbnQtPnByb2Nlc3NEaWRDbG9zZShuZXR3b3JrUHJvY2Vzc1Byb3h5KTsKKyAgICAgICAgc3Vw
cGxlbWVudC0+cHJvY2Vzc0RpZENsb3NlKCZuZXR3b3JrUHJvY2Vzc1Byb3h5KTsKIAogICAgIG1f
Y2xpZW50Lm5ldHdvcmtQcm9jZXNzRGlkQ3Jhc2godGhpcyk7CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCShyZXZpc2lvbiAyMTkwODApCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAkod29ya2luZyBjb3B5KQpAQCAt
MzE1LDcgKzMxNSw4IEBAIHB1YmxpYzoKICAgICAvLyBOZXR3b3JrIFByb2Nlc3MgTWFuYWdlbWVu
dAogICAgIE5ldHdvcmtQcm9jZXNzUHJveHkmIGVuc3VyZU5ldHdvcmtQcm9jZXNzKFdlYnNpdGVE
YXRhU3RvcmUqIHdpdGhXZWJzaXRlRGF0YVN0b3JlID0gbnVsbHB0cik7CiAgICAgTmV0d29ya1By
b2Nlc3NQcm94eSogbmV0d29ya1Byb2Nlc3MoKSB7IHJldHVybiBtX25ldHdvcmtQcm9jZXNzLmdl
dCgpOyB9Ci0gICAgdm9pZCBuZXR3b3JrUHJvY2Vzc0NyYXNoZWQoTmV0d29ya1Byb2Nlc3NQcm94
eSopOworICAgIHZvaWQgbmV0d29ya1Byb2Nlc3NDcmFzaGVkKE5ldHdvcmtQcm9jZXNzUHJveHkm
LCBWZWN0b3I8UmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbjo6RGVsYXllZFJlcGx5Pj4mJik7CisgICAgdm9pZCBuZXR3b3JrUHJvY2Vzc0Zh
aWxlZFRvTGF1bmNoKE5ldHdvcmtQcm9jZXNzUHJveHkmKTsKIAogICAgIHZvaWQgZ2V0TmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uKFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4mJik7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0JKHJl
dmlzaW9uIDIxOTA4MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQ
cm9jZXNzUG9vbC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzk0LDYgKzM5NCwxMSBAQCAtICh2b2lk
KV90ZXJtaW5hdGVOZXR3b3JrUHJvY2VzcwogICAgIF9wcm9jZXNzUG9vbC0+dGVybWluYXRlTmV0
d29ya1Byb2Nlc3MoKTsKIH0KIAorLSAocGlkX3QpX25ldHdvcmtQcm9jZXNzSWRlbnRpZmllcgor
eworICAgIHJldHVybiBfcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzSWRlbnRpZmllcigpOwor
fQorCiAtICh2b2lkKV9zeW5jTmV0d29ya1Byb2Nlc3NDb29raWVzCiB7CiAgICAgX3Byb2Nlc3NQ
b29sLT5zeW5jTmV0d29ya1Byb2Nlc3NDb29raWVzKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5o
CShyZXZpc2lvbiAyMTkwODApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc2LDYgKzc2LDkgQEAK
IC0gKHZvaWQpX3Rlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzOwogCiAvLyBUZXN0IG9ubHkuCistIChw
aWRfdClfbmV0d29ya1Byb2Nlc3NJZGVudGlmaWVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdL
X01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCisvLyBUZXN0IG9ubHkuCiAtIChzaXplX3Qp
X3dlYlByb2Nlc3NDb3VudCBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9z
KFdLX0lPU19UQkEpKTsKIC0gKHZvaWQpX3N5bmNOZXR3b3JrUHJvY2Vzc0Nvb2tpZXMgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwCShyZXZpc2lvbiAyMTkwODApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTY0LDcgKzE2NCwyMCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRlbGV0ZVdlYnNpdGVE
CiAgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkRlbGV0ZVdlYnNpdGVEYXRhRm9y
T3JpZ2lucyhzZXNzaW9uSUQsIGRhdGFUeXBlcywgb3JpZ2lucywgY29va2llSG9zdE5hbWVzLCBj
YWxsYmFja0lEKSwgMCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6bmV0d29ya1By
b2Nlc3NDcmFzaGVkT3JGYWlsZWRUb0xhdW5jaCgpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6
Om5ldHdvcmtQcm9jZXNzQ3Jhc2hlZCgpCit7CisgICAgY2xlYXJDYWxsYmFja1N0YXRlcygpOwor
CisgICAgVmVjdG9yPFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4+IHBlbmRpbmdSZXBsaWVzOworICAgIHBlbmRp
bmdSZXBsaWVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9wZW5kaW5nQ29ubmVjdGlvblJlcGxp
ZXMuc2l6ZSgpKTsKKyAgICBmb3IgKGF1dG8mIHJlcGx5IDogbV9wZW5kaW5nQ29ubmVjdGlvblJl
cGxpZXMpCisgICAgICAgIHBlbmRpbmdSZXBsaWVzLmFwcGVuZChXVEZNb3ZlKHJlcGx5KSk7CisK
KyAgICAvLyBUZWxsIHRoZSBuZXR3b3JrIHByb2Nlc3MgbWFuYWdlciB0byBmb3JnZXQgYWJvdXQg
dGhpcyBuZXR3b3JrIHByb2Nlc3MgcHJveHkuIFRoaXMgbWF5IGNhdXNlIHVzIHRvIGJlIGRlbGV0
ZWQuCisgICAgbV9wcm9jZXNzUG9vbC5uZXR3b3JrUHJvY2Vzc0NyYXNoZWQoKnRoaXMsIFdURk1v
dmUocGVuZGluZ1JlcGxpZXMpKTsKK30KKwordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpuZXR3
b3JrUHJvY2Vzc0ZhaWxlZFRvTGF1bmNoKCkKIHsKICAgICAvLyBUaGUgbmV0d29yayBwcm9jZXNz
IG11c3QgaGF2ZSBjcmFzaGVkIG9yIGV4aXRlZCwgc2VuZCBhbnkgcGVuZGluZyBzeW5jIHJlcGxp
ZXMgd2UgbWlnaHQgaGF2ZS4KICAgICB3aGlsZSAoIW1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVz
LmlzRW1wdHkoKSkgewpAQCAtMTc4LDcgKzE5MSwxMyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJv
eHk6Om5ldHdvcmtQcm9jZXNzCiAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CiAjZW5kaWYKICAg
ICB9CisgICAgY2xlYXJDYWxsYmFja1N0YXRlcygpOworICAgIC8vIFRlbGwgdGhlIG5ldHdvcmsg
cHJvY2VzcyBtYW5hZ2VyIHRvIGZvcmdldCBhYm91dCB0aGlzIG5ldHdvcmsgcHJvY2VzcyBwcm94
eS4gVGhpcyBtYXkgY2F1c2UgdXMgdG8gYmUgZGVsZXRlZC4KKyAgICBtX3Byb2Nlc3NQb29sLm5l
dHdvcmtQcm9jZXNzRmFpbGVkVG9MYXVuY2goKnRoaXMpOworfQogCit2b2lkIE5ldHdvcmtQcm9j
ZXNzUHJveHk6OmNsZWFyQ2FsbGJhY2tTdGF0ZXMoKQorewogICAgIGZvciAoY29uc3QgYXV0byYg
Y2FsbGJhY2sgOiBtX3BlbmRpbmdGZXRjaFdlYnNpdGVEYXRhQ2FsbGJhY2tzLnZhbHVlcygpKQog
ICAgICAgICBjYWxsYmFjayhXZWJzaXRlRGF0YSgpKTsKICAgICBtX3BlbmRpbmdGZXRjaFdlYnNp
dGVEYXRhQ2FsbGJhY2tzLmNsZWFyKCk7CkBAIC0xOTAsOSArMjA5LDYgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpuZXR3b3JrUHJvY2VzcwogICAgIGZvciAoY29uc3QgYXV0byYgY2FsbGJh
Y2sgOiBtX3BlbmRpbmdEZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnNDYWxsYmFja3MudmFsdWVz
KCkpCiAgICAgICAgIGNhbGxiYWNrKCk7CiAgICAgbV9wZW5kaW5nRGVsZXRlV2Vic2l0ZURhdGFG
b3JPcmlnaW5zQ2FsbGJhY2tzLmNsZWFyKCk7Ci0KLSAgICAvLyBUZWxsIHRoZSBuZXR3b3JrIHBy
b2Nlc3MgbWFuYWdlciB0byBmb3JnZXQgYWJvdXQgdGhpcyBuZXR3b3JrIHByb2Nlc3MgcHJveHku
IFRoaXMgbWF5IGNhdXNlIHVzIHRvIGJlIGRlbGV0ZWQuCi0gICAgbV9wcm9jZXNzUG9vbC5uZXR3
b3JrUHJvY2Vzc0NyYXNoZWQodGhpcyk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6
ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29k
ZXImIGRlY29kZXIpCkBAIC0yMjMsNyArMjM5LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpkaWRDbG9zZShJUEM6OgogICAgIG1fdG9rZW5Gb3JIb2xkaW5nTG9ja2VkRmlsZXMgPSBudWxs
cHRyOwogCiAgICAgLy8gVGhpcyBtYXkgY2F1c2UgdXMgdG8gYmUgZGVsZXRlZC4KLSAgICBuZXR3
b3JrUHJvY2Vzc0NyYXNoZWRPckZhaWxlZFRvTGF1bmNoKCk7CisgICAgbmV0d29ya1Byb2Nlc3ND
cmFzaGVkKCk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZUludmFs
aWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlLCBJUEM6OlN0
cmluZ1JlZmVyZW5jZSkKQEAgLTMwMiw3ICszMTgsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJv
eHk6OmRpZEZpbmlzaExhdW5jCiAgICAgQ2hpbGRQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5j
aGluZyhsYXVuY2hlciwgY29ubmVjdGlvbklkZW50aWZpZXIpOwogCiAgICAgaWYgKElQQzo6Q29u
bmVjdGlvbjo6aWRlbnRpZmllcklzTnVsbChjb25uZWN0aW9uSWRlbnRpZmllcikpIHsKLSAgICAg
ICAgbmV0d29ya1Byb2Nlc3NDcmFzaGVkT3JGYWlsZWRUb0xhdW5jaCgpOworICAgICAgICBuZXR3
b3JrUHJvY2Vzc0ZhaWxlZFRvTGF1bmNoKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9uIDIxOTA4MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtODYs
NyArODYsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgY29ubmVjdGlvbldpbGxPcGVuKElQQzo6Q29u
bmVjdGlvbiYpIG92ZXJyaWRlOwogICAgIHZvaWQgcHJvY2Vzc1dpbGxTaHV0RG93bihJUEM6OkNv
bm5lY3Rpb24mKSBvdmVycmlkZTsKIAotICAgIHZvaWQgbmV0d29ya1Byb2Nlc3NDcmFzaGVkT3JG
YWlsZWRUb0xhdW5jaCgpOworICAgIHZvaWQgbmV0d29ya1Byb2Nlc3NGYWlsZWRUb0xhdW5jaCgp
OworICAgIHZvaWQgbmV0d29ya1Byb2Nlc3NDcmFzaGVkKCk7CisgICAgdm9pZCBjbGVhckNhbGxi
YWNrU3RhdGVzKCk7CiAKICAgICAvLyBQcm9jZXNzVGhyb3R0bGVyQ2xpZW50CiAgICAgdm9pZCBz
ZW5kUHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseSgpIG92ZXJyaWRlOwpJbmRleDogVG9vbHMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjE5MDgw
KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIw
MTctMDYtMzAgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgV2Vi
Q29udGVudCBwcm9jZXNzZXMgY3Jhc2ggd2hlbiB0aGUgbmV0d29yayBwcm9jZXNzIGNyYXNoZXMg
d2l0aCBwZW5kaW5nIGNvbm5lY3Rpb24gcmVxdWVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDA2NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
MzAzNTk4MzU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KKworICAgICAgICBB
ZGQgYSBBUEkgdG8gZW5zdXJlIFVJIHByb2Nlc3MgdHJpZXMgdG8gcmVsYXVuY2ggYSBuZXcgbmV0
d29yayBwcm9jZXNzIHdoZW4gdGhlIG5ldHdvcmsgcHJvY2VzcworICAgICAgICBjcmFzaGVzIHdp
dGggcGVuZGluZyBuZXR3b3JrIGNvbm5lY3Rpb24gcmVxdWVzdHMuCisKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvTmV0d29ya1Byb2Nlc3NDcmFzaFdpdGhQ
ZW5kaW5nQ29ubmVjdGlvbi5tbTogQWRkZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2Nv
YS9UZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2Nv
YS9UZXN0TmF2aWdhdGlvbkRlbGVnYXRlLm1tOgorICAgICAgICAoLVtUZXN0TmF2aWdhdGlvbkRl
bGVnYXRlIHdlYlZpZXdXZWJDb250ZW50UHJvY2Vzc0RpZFRlcm1pbmF0ZTpdKTogQWRkZWQuCisK
IDIwMTctMDctMDMgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBSRUdSRVNTSU9OKHIyMTUwOTYpIFF1ZXJpZXMgb2YgVVJMcyB3aXRoIG5vbi1z
cGVjaWFsIHNjaGVtZXMgc2hvdWxkIG5vdCBwZXJjZW50LWVuY29kZSBzaW5nbGUgcXVvdGVzCklu
ZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjE5MDgwKQorKysgVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtp
bmcgY29weSkKQEAgLTUxMiw2ICs1MTIsNyBAQAogCQk5OTg0RkFDQzFDRkZBRjYwMDA4RDE5OEMg
LyogV0tXZWJWaWV3VGV4dElucHV0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTk4NEZBQ0ExQ0ZGQUVFRTAwOEQxOThDIC8qIFdLV2ViVmlld1RleHRJ
bnB1dC5tbSAqLzsgfTsKIAkJOTk4NEZBQ0UxQ0ZGQjA5MDAwOEQxOThDIC8qIGVkaXRhYmxlLWJv
ZHkuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5OTg0RkFDRDFDRkZCMDM4MDA4RDE5OEMgLyogZWRpdGFibGUtYm9keS5odG1sICovOyB9
OwogCQk5QjA3ODZBNTFDNTg4NUMzMDBEMTU5RTMgLyogSW5qZWN0ZWRCdW5kbGVNYWtlQWxsU2hh
ZG93Um9vdHNPcGVuX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5QjA3ODZBNDFDNTg4NUMzMDBEMTU5RTMgLyogSW5qZWN0ZWRCdW5kbGVN
YWtlQWxsU2hhZG93Um9vdHNPcGVuX0J1bmRsZS5jcHAgKi87IH07CisJCTlCMTlDREEwMUYwNkRG
RTMwMDA1NDhERCAvKiBOZXR3b3JrUHJvY2Vzc0NyYXNoV2l0aFBlbmRpbmdDb25uZWN0aW9uLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIxOUNEOUUx
RjA2REZFMzAwMDU0OEREIC8qIE5ldHdvcmtQcm9jZXNzQ3Jhc2hXaXRoUGVuZGluZ0Nvbm5lY3Rp
b24ubW0gKi87IH07CiAJCTlCMjZGQ0NBMTU5RDE2REUwMENDMzc2NSAvKiBIVE1MRm9ybUNvbGxl
Y3Rpb25OYW1lZEl0ZW0uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5QjI2RkNCNDE1OUQxNUU3MDBDQzM3NjUgLyogSFRNTEZvcm1Db2xs
ZWN0aW9uTmFtZWRJdGVtLmh0bWwgKi87IH07CiAJCTlCMjcwRkVFMUREQzJDMEIwMDJENTNGMyAv
KiBjbG9zZWQtc2hhZG93LXRyZWUtdGVzdC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMjcwRkVEMUREQzI1RkQwMDJENTNGMyAvKiBj
bG9zZWQtc2hhZG93LXRyZWUtdGVzdC5odG1sICovOyB9OwogCQk5QjRGOEZBNzE1OUQ1MkREMDAy
RDlGOTQgLyogSFRNTENvbGxlY3Rpb25OYW1lZEl0ZW0uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjRGOEZBNjE1OUQ1MkNBMDAyRDlG
OTQgLyogSFRNTENvbGxlY3Rpb25OYW1lZEl0ZW0uaHRtbCAqLzsgfTsKQEAgLTEzODgsNiArMTM4
OSw3IEBACiAJCTk5ODRGQUNEMUNGRkIwMzgwMDhEMTk4QyAvKiBlZGl0YWJsZS1ib2R5Lmh0bWwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiZWRpdGFibGUtYm9keS5odG1sIjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIwNzg2QTIxQzU4ODMwRjAwRDE1OUUzIC8qIEluamVj
dGVkQnVuZGxlTWFrZUFsbFNoYWRvd1Jvb3RzT3Blbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBJbmplY3RlZEJ1bmRsZU1ha2VBbGxTaGFkb3dSb290c09wZW4uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjA3ODZBNDFDNTg4NUMzMDBEMTU5RTMg
LyogSW5qZWN0ZWRCdW5kbGVNYWtlQWxsU2hhZG93Um9vdHNPcGVuX0J1bmRsZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmplY3RlZEJ1bmRsZU1ha2VBbGxTaGFk
b3dSb290c09wZW5fQnVuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUIx
OUNEOUUxRjA2REZFMzAwMDU0OEREIC8qIE5ldHdvcmtQcm9jZXNzQ3Jhc2hXaXRoUGVuZGluZ0Nv
bm5lY3Rpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBOZXR3
b3JrUHJvY2Vzc0NyYXNoV2l0aFBlbmRpbmdDb25uZWN0aW9uLm1tOyBwYXRoID0gV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzc0NyYXNoV2l0aFBlbmRpbmdDb25uZWN0aW9uLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5QjI2RkM2QjE1OUQwNjEwMDBDQzM3NjUgLyogSFRNTEZvcm1Db2xs
ZWN0aW9uTmFtZWRJdGVtLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gSFRNTEZvcm1Db2xsZWN0aW9uTmFtZWRJdGVtLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5QjI2RkNCNDE1OUQxNUU3MDBDQzM3NjUgLyogSFRNTEZvcm1Db2xsZWN0aW9uTmFt
ZWRJdGVtLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBIVE1MRm9ybUNvbGxlY3Rp
b25OYW1lZEl0ZW0uaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIyNzBGRUQx
RERDMjVGRDAwMkQ1M0YzIC8qIGNsb3NlZC1zaGFkb3ctdHJlZS10ZXN0Lmh0bWwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0Lmh0bWw7IHBhdGggPSAiY2xvc2VkLXNoYWRvdy10cmVlLXRlc3QuaHRtbCI7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTYyLDYgKzIxNjQsNyBAQAogCQkJCTJEMTY0NkUx
MUQxODYyQ0QwMDAxNUExQSAvKiBEZWZlcnJlZFZpZXdJbldpbmRvd1N0YXRlQ2hhbmdlLm1tICov
LAogCQkJCUI1NUFEMUQxMTc5RjMzNjYwMEFDMTQ5NCAvKiBQcmV2ZW50SW1hZ2VMb2FkV2l0aEF1
dG9SZXNpemluZy5tbSAqLywKIAkJCQlCNTVBRDFEMzE3OUYzQUJGMDBBQzE0OTQgLyogUHJldmVu
dEltYWdlTG9hZFdpdGhBdXRvUmVzaXppbmdfQnVuZGxlLmNwcCAqLywKKwkJCQk5QjE5Q0Q5RTFG
MDZERkUzMDAwNTQ4REQgLyogTmV0d29ya1Byb2Nlc3NDcmFzaFdpdGhQZW5kaW5nQ29ubmVjdGlv
bi5tbSAqLywKIAkJCQkyOTQzQkU4NDE2MURGRUI4MDA5OTlFM0QgLyogVXNlckNvbnRlbnRUZXN0
Lm1tICovLAogCQkJCUJDM0M0QzdEMTQ1ODdBQTYwMDI1RkI2MiAvKiBXS0Jyb3dzaW5nQ29udGV4
dEdyb3VwVGVzdC5tbSAqLywKIAkJCQlCQzNDNEM3MDE0NTc1QjZBMDAyNUZCNjIgLyogV0tCcm93
c2luZ0NvbnRleHRMb2FkRGVsZWdhdGVUZXN0Lm1tICovLApAQCAtMzEyMiw2ICszMTI1LDcgQEAK
IAkJCQk3Q0NFN0YwNTFBNDExQUU2MDA0NDdDNEMgLyogTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5
TGF5b3V0RnJhbWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJFQ0ZGNTU1MUQ5QjEyRjgwMEI1
NTM5NCAvKiBOb3dQbGF5aW5nQ29udHJvbHNUZXN0cy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUEx
MEYwNDdFMUUzQUQyOUMwMEM5NUUxOSAvKiBOU0ZpbGVNYW5hZ2VyRXh0cmFzLm1tIGluIFNvdXJj
ZXMgKi8sCisJCQkJOUIxOUNEQTAxRjA2REZFMzAwMDU0OEREIC8qIE5ldHdvcmtQcm9jZXNzQ3Jh
c2hXaXRoUGVuZGluZ0Nvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQkzN0EyMkFBNzFE
Q0FBMjcyMDBBRkJGQzQgLyogT2JzZXJ2ZWRSZW5kZXJpbmdQcm9ncmVzc0V2ZW50c0FmdGVyQ3Jh
c2gubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YyNTFBNDExQUY2MDA0NDdDNEMgLyogT3Bl
bkFuZENsb3NlV2luZG93Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0VCQ0ExMkYxRTNBNjYwMTAw
QzczMjkzIC8qIE92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5Lm1tIGluIFNvdXJjZXMgKi8s
CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvTmV0d29ya1Byb2Nlc3ND
cmFzaFdpdGhQZW5kaW5nQ29ubmVjdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDIvTmV0d29ya1Byb2Nlc3NDcmFzaFdpdGhQZW5kaW5nQ29ubmVj
dGlvbi5tbQkobm9uZXhpc3RlbnQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3NDcmFzaFdpdGhQZW5kaW5nQ29ubmVjdGlvbi5tbQkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDExMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgor
CisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdC5oIgorI2ltcG9y
dCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgorI2ltcG9ydCA8V2ViS2l0L1dLQ29udGV4dFBy
aXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1Byb2Nlc3NHcm91cFByaXZhdGUuaD4KKyNpbXBv
cnQgPFdlYktpdC9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2Vi
Vmlld1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4KKyNpbXBvcnQgPHd0Zi9S
ZXRhaW5QdHIuaD4KKworI2lmIFdLX0FQSV9FTkFCTEVECisKK25hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJIHsKKworc3RhdGljIGJvb2wgbG9hZGVkT3JDcmFzaGVkID0gZmFsc2U7CitzdGF0aWMgYm9v
bCBsb2FkZWQgPSBmYWxzZTsKK3N0YXRpYyBib29sIHdlYlByb2Nlc3NDcmFzaGVkID0gZmFsc2U7
CitzdGF0aWMgYm9vbCBuZXR3b3JrUHJvY2Vzc0NyYXNoZWQgPSBmYWxzZTsKKworVEVTVChXZWJL
aXQyLCBOZXR3b3JrUHJvY2Vzc0NyYXNoV2l0aFBlbmRpbmdDb25uZWN0aW9uKQoreworICAgIFJl
dGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhb
W1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBSZXRhaW5QdHI8V0tQ
cm9jZXNzUG9vbD4gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10g
aW5pdF0pOworICAgIFtjb25maWd1cmF0aW9uIHNldFByb2Nlc3NQb29sOnByb2Nlc3NQb29sLmdl
dCgpXTsKKworICAgIC8vIEZJWE1FOiBBZG9wdCB0aGUgbmV3IEFQSSBvbmNlIGl0J3MgYWRkZWQg
aW4gd2Via2l0Lm9yZy9iLzE3NDA2MS4KKyAgICBXS0NvbnRleHRDbGllbnRWMCBjbGllbnQ7Cisg
ICAgbWVtc2V0KCZjbGllbnQsIDAsIHNpemVvZihjbGllbnQpKTsKKyAgICBjbGllbnQubmV0d29y
a1Byb2Nlc3NEaWRDcmFzaCA9IFtdKFdLQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCB2b2lkKiBj
bGllbnRJbmZvKSB7CisgICAgICAgIG5ldHdvcmtQcm9jZXNzQ3Jhc2hlZCA9IHRydWU7CisgICAg
fTsKKyAgICBXS0NvbnRleHRTZXRDbGllbnQoc3RhdGljX2Nhc3Q8V0tDb250ZXh0UmVmPihwcm9j
ZXNzUG9vbC5nZXQoKSksICZjbGllbnQuYmFzZSk7CisKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3
PiB3ZWJWaWV3MSA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNN
YWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgp
XSk7CisgICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldzIgPSBhZG9wdE5TKFtbV0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZp
Z3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworCisgICAgW3dlYlZpZXcxLmdldCgpIGxv
YWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJp
bmc6QCJhYm91dDpibGFuayJdXV07CisgICAgW3dlYlZpZXcxLmdldCgpIF90ZXN0X3dhaXRGb3JE
aWRGaW5pc2hOYXZpZ2F0aW9uXTsKKworICAgIFt3ZWJWaWV3Mi5nZXQoKSBsb2FkUmVxdWVzdDpb
TlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiYWJvdXQ6
YmxhbmsiXV1dOworICAgIFt3ZWJWaWV3Mi5nZXQoKSBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2
aWdhdGlvbl07CisKKyAgICBwaWRfdCB3ZWJWaWV3MVBJRCA9IFt3ZWJWaWV3MS5nZXQoKSBfd2Vi
UHJvY2Vzc0lkZW50aWZpZXJdOworICAgIHBpZF90IHdlYlZpZXcyUElEID0gW3dlYlZpZXcyLmdl
dCgpIF93ZWJQcm9jZXNzSWRlbnRpZmllcl07CisgICAgRVhQRUNUX05FKHdlYlZpZXcxUElELCB3
ZWJWaWV3MlBJRCk7CisKKyAgICBwaWRfdCBpbml0aWFsTmV0d29ya1Byb2Nlc3NJZGVudGlmaWZl
ciA9IFtwcm9jZXNzUG9vbC5nZXQoKSBfbmV0d29ya1Byb2Nlc3NJZGVudGlmaWVyXTsKKyAgICBF
WFBFQ1RfTkUoaW5pdGlhbE5ldHdvcmtQcm9jZXNzSWRlbnRpZmlmZXIsIDApOworICAgIGtpbGwo
aW5pdGlhbE5ldHdvcmtQcm9jZXNzSWRlbnRpZmlmZXIsIFNJR0tJTEwpOworICAgIFV0aWw6OnJ1
bigmbmV0d29ya1Byb2Nlc3NDcmFzaGVkKTsKKyAgICBuZXR3b3JrUHJvY2Vzc0NyYXNoZWQgPSBm
YWxzZTsKKworICAgIFt3ZWJWaWV3MS5nZXQoKSBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJl
cXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1w
bGUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJl
c291cmNlcyJdXV07CisgICAgW3dlYlZpZXcxLmdldCgpIF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hO
YXZpZ2F0aW9uXTsKKworICAgIHBpZF90IHJlbGF1bmNoZWROZXR3b3JrUHJvY2Vzc0lkZW50aWZp
ZXIgPSBbcHJvY2Vzc1Bvb2wuZ2V0KCkgX25ldHdvcmtQcm9jZXNzSWRlbnRpZmllcl07CisgICAg
RVhQRUNUX05FKGluaXRpYWxOZXR3b3JrUHJvY2Vzc0lkZW50aWZpZmVyLCByZWxhdW5jaGVkTmV0
d29ya1Byb2Nlc3NJZGVudGlmaWVyKTsKKyAgICBFWFBFQ1RfRkFMU0UobmV0d29ya1Byb2Nlc3ND
cmFzaGVkKTsKKworICAgIGtpbGwocmVsYXVuY2hlZE5ldHdvcmtQcm9jZXNzSWRlbnRpZmllciwg
U0lHU1RPUCk7CisKKyAgICBbd2ViVmlldzIuZ2V0KCkgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVz
dCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAi
c2ltcGxlIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQ
SS5yZXNvdXJjZXMiXV1dOworICAgIFV0aWw6OnNsZWVwKDAuNSk7IC8vIFdhaXQgZm9yIHRoZSBX
ZWJDb250ZW50IHByb2Nlc3MgdG8gc2VuZCBDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcworICAgIGtpbGwocmVsYXVuY2hlZE5ldHdvcmtQcm9jZXNzSWRlbnRpZmllciwgU0lHS0lM
TCk7CisgICAgVXRpbDo6cnVuKCZuZXR3b3JrUHJvY2Vzc0NyYXNoZWQpOworCisgICAgYXV0byBu
YXZpZ2F0aW9uRGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxv
Y10gaW5pdF0pOworICAgIGxvYWRlZE9yQ3Jhc2hlZCA9IGZhbHNlOworICAgIFtuYXZpZ2F0aW9u
RGVsZWdhdGUgc2V0RGlkRmluaXNoTmF2aWdhdGlvbjpeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRp
b24gKikgeworICAgICAgICBsb2FkZWRPckNyYXNoZWQgPSB0cnVlOworICAgICAgICBsb2FkZWQg
PSB0cnVlOworICAgIH1dOworICAgIFtuYXZpZ2F0aW9uRGVsZWdhdGUgc2V0V2ViQ29udGVudFBy
b2Nlc3NEaWRUZXJtaW5hdGU6XihXS1dlYlZpZXcgKikgeworICAgICAgICBsb2FkZWRPckNyYXNo
ZWQgPSB0cnVlOworICAgICAgICB3ZWJQcm9jZXNzQ3Jhc2hlZCA9IHRydWU7CisgICAgfV07Cisg
ICAgW3dlYlZpZXcyIHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0
KCldOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmbG9hZGVkT3JDcmFzaGVkKTsKKyAg
ICBFWFBFQ1RfVFJVRShsb2FkZWQpOworICAgIEVYUEVDVF9GQUxTRSh3ZWJQcm9jZXNzQ3Jhc2hl
ZCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKKworI2VuZGlmCkluZGV4OiBU
b29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUu
aAkocmV2aXNpb24gMjE5MDgwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0TmF2
aWdhdGlvbkRlbGVnYXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAKIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlv
bikoV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvbiAqLCBOU0Vycm9yICopOwogQHByb3BlcnR5IChu
b25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRGaW5pc2hOYXZpZ2F0aW9uKShXS1dlYlZpZXcgKiwg
V0tOYXZpZ2F0aW9uICopOwogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5yZW5k
ZXJpbmdQcm9ncmVzc0RpZENoYW5nZSkoV0tXZWJWaWV3ICosIF9XS1JlbmRlcmluZ1Byb2dyZXNz
RXZlbnRzKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkIChed2ViQ29udGVudFBy
b2Nlc3NEaWRUZXJtaW5hdGUpKFdLV2ViVmlldyAqKTsKIAogLSAodm9pZCl3YWl0Rm9yRGlkRmlu
aXNoTmF2aWdhdGlvbjsKIApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0TmF2
aWdhdGlvbkRlbGVnYXRlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29j
b2EvVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5tbQkocmV2aXNpb24gMjE5MDgwKQorKysgVG9vbHMv
VGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0TmF2aWdhdGlvbkRlbGVnYXRlLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC00NSw2ICs0NSwxMiBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZp
ZXcgZGlkCiAgICAgICAgIF9kaWRGaW5pc2hOYXZpZ2F0aW9uKHdlYlZpZXcsIG5hdmlnYXRpb24p
OwogfQogCistICh2b2lkKXdlYlZpZXdXZWJDb250ZW50UHJvY2Vzc0RpZFRlcm1pbmF0ZTooV0tX
ZWJWaWV3ICopd2ViVmlldworeworICAgIGlmIChfd2ViQ29udGVudFByb2Nlc3NEaWRUZXJtaW5h
dGUpCisgICAgICAgIF93ZWJDb250ZW50UHJvY2Vzc0RpZFRlcm1pbmF0ZSh3ZWJWaWV3KTsKK30K
KwogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyByZW5kZXJpbmdQcm9ncmVz
c0RpZENoYW5nZTooX1dLUmVuZGVyaW5nUHJvZ3Jlc3NFdmVudHMpcHJvZ3Jlc3NFdmVudHMKIHsK
ICAgICBpZiAoX3JlbmRlcmluZ1Byb2dyZXNzRGlkQ2hhbmdlKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>