<?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>185225</bug_id>
          
          <creation_ts>2018-05-02 15:50:21 -0700</creation_ts>
          <short_desc>Load hangs if the WebProcess fails to launch</short_desc>
          <delta_ts>2018-05-03 12:59:12 -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>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>mitz</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1419902</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-05-02 15:50:21 -0700</bug_when>
    <thetext>Load hangs if the WebProcess fails to launch because we do not attempt to relaunch, nor do we notify the client that we failed to launch the WebProcess.
Also, since WebPageProxy::isValid() returns true while in this state, follow-up loads / reloads do not work and do not relaunch the WebProcess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1419903</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-05-02 15:50:41 -0700</bug_when>
    <thetext>&lt;rdar://problem/38249058&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1419912</commentid>
    <comment_count>2</comment_count>
      <attachid>339362</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-05-02 16:08:10 -0700</bug_when>
    <thetext>Created attachment 339362
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1419995</commentid>
    <comment_count>3</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2018-05-02 19:45:16 -0700</bug_when>
    <thetext>/Volumes/Data/EWS/WebKit/Tools/TestWebKitAPI/Tests/WebKitCocoa/WebContentProcessDidTerminate.mm:37:8: error: unknown type name &apos;_WKProcessTerminationReason&apos;; did you mean &apos;WKProcessTerminationReason&apos;?
static _WKProcessTerminationReason expectedCrashReason;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1419996</commentid>
    <comment_count>4</comment_count>
      <attachid>339362</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2018-05-02 19:48:32 -0700</bug_when>
    <thetext>Comment on attachment 339362
Patch

r=me

Please fix the 32bit build before landing.

Seems bad that one can get into the state where a web process never launches. Why do we believe that a re-launch would succeed in this case, when the original launch failed? Do we need to investigate or log more to learn why the original launch failed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1420001</commentid>
    <comment_count>5</comment_count>
      <attachid>339362</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-05-02 20:38:12 -0700</bug_when>
    <thetext>Comment on attachment 339362
Patch

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

&gt; Source/WebKit/UIProcess/Launcher/mac/ProcessLauncherMac.mm:234
&gt; +    xpc_connection_set_event_handler(m_xpcConnection.get(), errorHandler);

xpc_connection_set_event_handler adds the event handler asynchronously so there might be a race here.
See https://trac.webkit.org/changeset/230314</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1420136</commentid>
    <comment_count>6</comment_count>
      <attachid>339362</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-05-03 08:57:50 -0700</bug_when>
    <thetext>Comment on attachment 339362
Patch

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

&gt;&gt; Source/WebKit/UIProcess/Launcher/mac/ProcessLauncherMac.mm:234
&gt;&gt; +    xpc_connection_set_event_handler(m_xpcConnection.get(), errorHandler);
&gt; 
&gt; xpc_connection_set_event_handler adds the event handler asynchronously so there might be a race here.
&gt; See https://trac.webkit.org/changeset/230314

The commit you refer to is about dispatch_source_set_event_handler in IPC code. This is xpc_connection_set_event_handler() in process launching code, which we use only to listen for errors.
Could you please clarify what the issue is here? Do you believe my patch introduced a race? As far as I can tell, I am not not changing the ordering of things here, I merely moved the lambda into its own variable so that I could call it to simulate an error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1420249</commentid>
    <comment_count>7</comment_count>
      <attachid>339436</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-05-03 12:08:03 -0700</bug_when>
    <thetext>Created attachment 339436
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1420276</commentid>
    <comment_count>8</comment_count>
      <attachid>339436</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-05-03 12:59:11 -0700</bug_when>
    <thetext>Comment on attachment 339436
Patch

Clearing flags on attachment: 339436

Committed r231321: &lt;https://trac.webkit.org/changeset/231321&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1420277</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-05-03 12:59:12 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>339362</attachid>
            <date>2018-05-02 16:08:10 -0700</date>
            <delta_ts>2018-05-03 12:08:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185225-20180502160810.patch</filename>
            <type>text/plain</type>
            <size>21843</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMxMjMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDk5OTYzOWRlYzdmNDgyYWQ1
NjQzYmMzNWY4ZDQ5NWRkMTY2NzhhYmYuLmFlNWQ1OTNhMmYyMWU0ZDNhNmZiOTk0Y2JhNmNjOTc4
ZDEzZTZhNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTgtMDUtMDIgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBMb2FkIGhhbmdzIGlmIHRoZSBXZWJQ
cm9jZXNzIGZhaWxzIHRvIGxhdW5jaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTg1MjI1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zODI0OTA1OD4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIGEg
cHJvY2VzcyBmYWlscyB0byBsYXVuY2gsIENoaWxkUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVu
Y2hpbmcoKSBnZXRzIGNhbGxlZCB3aXRoIGFuCisgICAgICAgIGludmFsaWQgY29ubmVjdGlvbiBp
ZGVudGlmaWVyLiBXaGlsZSBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmco
KSBwcm9wZXJseSBkZWFscyB3aXRoCisgICAgICAgIHRoaXMgc2l0dWF0aW9uLCBXZWJQcm9jZXNz
UHJveHk6OmRpZEZpbmlzaExhdW5jaGluZygpIGRvZXMgbm90LiBBcyBhIHJlc3VsdCwgd2UgZG8g
bm90IGF0dGVtcHQgdG8KKyAgICAgICAgcmVsYXVuY2ggdGhlIHByb2Nlc3MsIHdlIGRvIG5vdCBu
b3RpZnkgdGhlIGNsaWVudCBhbmQgV2ViUGFnZVByb3h5OjptX2lzVmFsaWQgc3RheXMgdHJ1ZS4K
KworICAgICAgICBUaGlzIHBhdGNoIHRodXMgdXBkYXRlcyBXZWJQcm9jZXNzUHJveHk6OmRpZEZp
bmlzaExhdW5jaGluZygpIHRvIGNoZWNrIGlmIHRoZSBjb25uZWN0aW9uIGlkZW50aWZpZXIKKyAg
ICAgICAgaXMgdmFsaWQgYW5kIHRyZWF0cyBpdCBhcyBhIGNyYXNoLiBBcyBhIHJlc3VsdCwgdGhl
IFdlYlBhZ2VQcm94aWVzIHByb3Blcmx5IHJlc2V0IHRoZWlyIHN0YXRlIGFuZAorICAgICAgICB0
aGUgY2xpZW50IGdldHMgbm90aWZpZWQgb2YgdGhlIGNyYXNoIHNvIHRoYXQgaXQgY2FuIGF0dGVt
cHQgdG8gcmVsb2FkLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQ
b29sLm1tOgorICAgICAgICAoLVtXS1Byb2Nlc3NQb29sIF9tYWtlTmV4dFdlYlByb2Nlc3NMYXVu
Y2hGYWlsRm9yVGVzdGluZ10pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9j
ZXNzUG9vbFByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xh
dW5jaGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNo
ZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2Vz
cyk6CisgICAgICAgIEFkZCBTUEkgdG8gbWFrZSB0aGUgbmV4dCBXZWJQcm9jZXNzIGxhdW5jaCBm
YWlsLCBmb3IgdGhlIHB1cnBvc2Ugb2YgQVBJIHRlc3RpbmcuCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpnZXRMYXVuY2hPcHRpb25z
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpkaWRDbG9zZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0RpZFRlcm1pbmF0ZU9yRmFpbGVkVG9M
YXVuY2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5j
aGluZyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorCiAyMDE4LTA1
LTAxICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFVz
ZSBkZWZhdWx0IHN0ZDo6b3B0aW9uYWwgaWYgaXQgaXMgcHJvdmlkZWQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KaW5kZXggMjFkNzhm
NTk0YzIyYjkxMTU3NGFlMDkxZWJjMjhmYTFiYzMyNGE3Ni4uYTI3YTdiNWViNGIyMzA1Zjg0NTI5
ZjhhMTc5ODIxNWFiMjY1NTkxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KQEAgLTQ1OSw2ICs0NTksMTEgQEAgLSAoc2l6ZV90
KV93ZWJQcm9jZXNzQ291bnQKICAgICByZXR1cm4gX3Byb2Nlc3NQb29sLT5wcm9jZXNzZXMoKS5z
aXplKCk7CiB9CiAKKy0gKHZvaWQpX21ha2VOZXh0V2ViUHJvY2Vzc0xhdW5jaEZhaWxGb3JUZXN0
aW5nCit7CisgICAgX3Byb2Nlc3NQb29sLT5zZXRTaG91bGRNYWtlTmV4dFdlYlByb2Nlc3NMYXVu
Y2hGYWlsRm9yVGVzdGluZyh0cnVlKTsKK30KKwogLSAoc2l6ZV90KV9wcmV3YXJtZWRXZWJQcm9j
ZXNzQ291bnQKIHsKICAgICBzaXplX3QgcmVzdWx0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgKaW5kZXgg
NThlODc2OTI2YjQyMTM5ZTdjMTNiNzNmZDhjMTRkNzMxMjRkNDRiNy4uNDZkZjAyYjNkNWVhOWFh
MjIxYjQ3ZjZjYjg3NTNlOGZjMjhmM2ExZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgKQEAgLTk0LDYgKzk0
LDcgQEAKIC0gKHNpemVfdClfcGx1Z2luUHJvY2Vzc0NvdW50IFdLX0FQSV9BVkFJTEFCTEUobWFj
b3N4KDEwLjEzLjQpLCBpb3MoMTEuMykpOwogLSAoc2l6ZV90KV9zZXJ2aWNlV29ya2VyUHJvY2Vz
c0NvdW50IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RC
QSkpOwogLSAodm9pZClfc3luY05ldHdvcmtQcm9jZXNzQ29va2llcyBXS19BUElfQVZBSUxBQkxF
KG1hY29zeCgxMC4xMyksIGlvcygxMS4wKSk7CistICh2b2lkKV9tYWtlTmV4dFdlYlByb2Nlc3NM
YXVuY2hGYWlsRm9yVGVzdGluZyBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwg
aW9zKFdLX0lPU19UQkEpKTsKIAogLy8gVGVzdCBvbmx5LiBSZXR1cm5zIHdlYiBwcm9jZXNzZXMg
cnVubmluZyB3ZWIgcGFnZXMgKGRvZXMgbm90IGluY2x1ZGUgd2ViIHByb2Nlc3NlcyBydW5uaW5n
IHNlcnZpY2Ugd29ya2VycykKIC0gKHNpemVfdClfd2ViUGFnZUNvbnRlbnRQcm9jZXNzQ291bnQg
V0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTMuNCksIGlvcygxMS4zKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oCmluZGV4IDEz
YWI5MmJlY2Q3MzVkYTdhMjY4ZTQyZmEzYzllM2Y2ZTQxNTJlNGIuLjNhYmFiYmNjZWVkY2UzZTc5
ZGVkZTBhMzM5MzFhNTJmMmVmNTczNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oCkBAIC02NSw2ICs2NSw3IEBAIHB1YmxpYzoK
ICAgICAgICAgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lkZW50aWZpZXI7CiAg
ICAgICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IGV4dHJhSW5pdGlhbGl6YXRpb25EYXRhOwog
ICAgICAgICBib29sIG5vblZhbGlkSW5qZWN0ZWRDb2RlQWxsb3dlZCB7IGZhbHNlIH07CisgICAg
ICAgIGJvb2wgc2hvdWxkTWFrZVByb2Nlc3NMYXVuY2hGYWlsRm9yVGVzdGluZyB7IGZhbHNlIH07
CiAKICNpZiBFTkFCTEUoREVWRUxPUEVSX01PREUpICYmIChQTEFURk9STShHVEspIHx8IFBMQVRG
T1JNKFdQRSkpCiAgICAgICAgIFN0cmluZyBwcm9jZXNzQ21kUHJlZml4OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJN
YWMubW0KaW5kZXggMGUwNzI2MmE5NjVkNGNhN2QyMTU5OGMzOGVmY2VjNWE4OWJkYzFmNS4uMjRj
NzllY2RhZmFkMzU4NTVkZTg4ZDExOGE1NDljNWE3NDQ4NTc5OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFj
Lm1tCkBAIC0yMDIsOCArMjAyLDggQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nl
c3MoKQogICAgIHhwY19kaWN0aW9uYXJ5X3NldF92YWx1ZShib290c3RyYXBNZXNzYWdlLmdldCgp
LCAiZXh0cmEtaW5pdGlhbGl6YXRpb24tZGF0YSIsIGV4dHJhSW5pdGlhbGl6YXRpb25EYXRhLmdl
dCgpKTsKIAogICAgIGF1dG8gd2Vha1Byb2Nlc3NMYXVuY2hlciA9IG1fd2Vha1B0ckZhY3Rvcnku
Y3JlYXRlV2Vha1B0cigqdGhpcyk7Ci0gICAgeHBjX2Nvbm5lY3Rpb25fc2V0X2V2ZW50X2hhbmRs
ZXIobV94cGNDb25uZWN0aW9uLmdldCgpLCBbd2Vha1Byb2Nlc3NMYXVuY2hlciwgbGlzdGVuaW5n
UG9ydF0oeHBjX29iamVjdF90IGV2ZW50KSB7Ci0gICAgICAgIEFTU0VSVCh4cGNfZ2V0X3R5cGUo
ZXZlbnQpID09IFhQQ19UWVBFX0VSUk9SKTsKKyAgICBhdXRvIGVycm9ySGFuZGxlciA9IFt3ZWFr
UHJvY2Vzc0xhdW5jaGVyLCBsaXN0ZW5pbmdQb3J0XSh4cGNfb2JqZWN0X3QgZXZlbnQpIHsKKyAg
ICAgICAgQVNTRVJUKCFldmVudCB8fCB4cGNfZ2V0X3R5cGUoZXZlbnQpID09IFhQQ19UWVBFX0VS
Uk9SKTsKIAogICAgICAgICBhdXRvIHByb2Nlc3NMYXVuY2hlciA9IHdlYWtQcm9jZXNzTGF1bmNo
ZXIuZ2V0KCk7CiAgICAgICAgIGlmICghcHJvY2Vzc0xhdW5jaGVyKQpAQCAtMjI5LDEwICsyMjks
MTkgQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogICAgICAgICBwcm9j
ZXNzTGF1bmNoZXItPm1feHBjQ29ubmVjdGlvbiA9IG51bGxwdHI7CiAKICAgICAgICAgcHJvY2Vz
c0xhdW5jaGVyLT5kaWRGaW5pc2hMYXVuY2hpbmdQcm9jZXNzKDAsIElQQzo6Q29ubmVjdGlvbjo6
SWRlbnRpZmllcigpKTsKLSAgICB9KTsKKyAgICB9OworCisgICAgeHBjX2Nvbm5lY3Rpb25fc2V0
X2V2ZW50X2hhbmRsZXIobV94cGNDb25uZWN0aW9uLmdldCgpLCBlcnJvckhhbmRsZXIpOwogCiAg
ICAgeHBjX2Nvbm5lY3Rpb25fcmVzdW1lKG1feHBjQ29ubmVjdGlvbi5nZXQoKSk7CiAKKyAgICBp
ZiAoVU5MSUtFTFkobV9sYXVuY2hPcHRpb25zLnNob3VsZE1ha2VQcm9jZXNzTGF1bmNoRmFpbEZv
clRlc3RpbmcpKSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbZXJyb3JIYW5k
bGVyID0gV1RGTW92ZShlcnJvckhhbmRsZXIpXSB7CisgICAgICAgICAgICBlcnJvckhhbmRsZXIo
bnVsbHB0cik7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgcmVm
KCk7CiAgICAgeHBjX2Nvbm5lY3Rpb25fc2VuZF9tZXNzYWdlX3dpdGhfcmVwbHkobV94cGNDb25u
ZWN0aW9uLmdldCgpLCBib290c3RyYXBNZXNzYWdlLmdldCgpLCBkaXNwYXRjaF9nZXRfbWFpbl9x
dWV1ZSgpLCBeKHhwY19vYmplY3RfdCByZXBseSkgewogICAgICAgICAvLyBFcnJvcnMgYXJlIGhh
bmRsZWQgaW4gdGhlIGV2ZW50IGhhbmRsZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuaAppbmRleCA4YzZhNTdjZDEwNDZhMzgwMjBmMzZmYTJiMjQ1ZmIyMTYxMTFlY2E5
Li43MGM0NTQxMzY4NjA2OWNjYzk0MzMwZTYwYjZmMmU4NmVhNTU3ZDE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTI3Niw2ICsyNzYsOSBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIHN5bmNOZXR3b3JrUHJvY2Vzc0Nvb2tpZXMoKTsKIAorICAgIHZvaWQgc2V0
U2hvdWxkTWFrZU5leHRXZWJQcm9jZXNzTGF1bmNoRmFpbEZvclRlc3RpbmcoYm9vbCB2YWx1ZSkg
eyBtX3Nob3VsZE1ha2VOZXh0V2ViUHJvY2Vzc0xhdW5jaEZhaWxGb3JUZXN0aW5nID0gdmFsdWU7
IH0KKyAgICBib29sIHNob3VsZE1ha2VOZXh0V2ViUHJvY2Vzc0xhdW5jaEZhaWxGb3JUZXN0aW5n
KCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRNYWtlTmV4dFdlYlByb2Nlc3NMYXVuY2hGYWlsRm9y
VGVzdGluZzsgfQorCiAgICAgdm9pZCByZXBvcnRXZWJDb250ZW50Q1BVVGltZShTZWNvbmRzIGNw
dVRpbWUsIHVpbnQ2NF90IGFjdGl2aXR5U3RhdGUpOwogCiAgICAgdm9pZCBhbGxvd1NwZWNpZmlj
SFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QoY29uc3QgV2ViQ2VydGlmaWNhdGVJbmZvKiwgY29uc3Qg
U3RyaW5nJiBob3N0KTsKQEAgLTYzMSw2ICs2MzQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9q
YXZhU2NyaXB0Q29uZmlndXJhdGlvbkZpbGVFbmFibGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1f
YWx3YXlzUnVuc0F0QmFja2dyb3VuZFByaW9yaXR5OwogICAgIGJvb2wgbV9zaG91bGRUYWtlVUlC
YWNrZ3JvdW5kQXNzZXJ0aW9uOworICAgIGJvb2wgbV9zaG91bGRNYWtlTmV4dFdlYlByb2Nlc3NM
YXVuY2hGYWlsRm9yVGVzdGluZyB7IGZhbHNlIH07CiAKICAgICBVc2VyT2JzZXJ2YWJsZVBhZ2VD
b3VudGVyIG1fdXNlck9ic2VydmFibGVQYWdlQ291bnRlcjsKICAgICBQcm9jZXNzU3VwcHJlc3Np
b25EaXNhYmxlZENvdW50ZXIgbV9wcm9jZXNzU3VwcHJlc3Npb25EaXNhYmxlZEZvclBhZ2VDb3Vu
dGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXgg
NDE1NmQ4MzM4M2RmNmJlZjg5ZDViYjQyMjM1MDZlZGE1MmI3YTM5ZS4uZTA3M2U0ZDNlNjI1Njcw
NjQ4NWQ4NTEzM2I2NzVjODhjYjZmODdkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0xNzQsNiArMTc0LDExIEBAIHZvaWQgV2ViUHJvY2Vzc1By
b3h5OjpnZXRMYXVuY2hPcHRpb25zKFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyYgbGF1
bmNoT3B0CiAgICAgfQogCiAgICAgbGF1bmNoT3B0aW9ucy5ub25WYWxpZEluamVjdGVkQ29kZUFs
bG93ZWQgPSBzaG91bGRBbGxvd05vblZhbGlkSW5qZWN0ZWRDb2RlKCk7CisKKyAgICBpZiAocHJv
Y2Vzc1Bvb2woKS5zaG91bGRNYWtlTmV4dFdlYlByb2Nlc3NMYXVuY2hGYWlsRm9yVGVzdGluZygp
KSB7CisgICAgICAgIHByb2Nlc3NQb29sKCkuc2V0U2hvdWxkTWFrZU5leHRXZWJQcm9jZXNzTGF1
bmNoRmFpbEZvclRlc3RpbmcoZmFsc2UpOworICAgICAgICBsYXVuY2hPcHRpb25zLnNob3VsZE1h
a2VQcm9jZXNzTGF1bmNoRmFpbEZvclRlc3RpbmcgPSB0cnVlOworICAgIH0KIH0KIAogdm9pZCBX
ZWJQcm9jZXNzUHJveHk6OmNvbm5lY3Rpb25XaWxsT3BlbihJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24pCkBAIC02NTEsMTIgKzY1NiwxOCBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkUmVj
ZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZQogfQog
CiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikKK3sKKyAg
ICBwcm9jZXNzRGlkVGVybWluYXRlT3JGYWlsZWRUb0xhdW5jaCgpOworfQorCit2b2lkIFdlYlBy
b2Nlc3NQcm94eTo6cHJvY2Vzc0RpZFRlcm1pbmF0ZU9yRmFpbGVkVG9MYXVuY2goKQogewogICAg
IC8vIFByb3RlY3Qgb3Vyc2VsdmVzLCBhcyB0aGUgY2FsbCB0byBkaXNjb25uZWN0KCkgYmVsb3cg
bWF5IG90aGVyd2lzZSBjYXVzZSB1cwogICAgIC8vIHRvIGJlIGRlbGV0ZWQgYmVmb3JlIHdlIGNh
biBmaW5pc2ggb3VyIHdvcmsuCiAgICAgUmVmPFdlYlByb2Nlc3NQcm94eT4gcHJvdGVjdCgqdGhp
cyk7CiAKLSAgICB3ZWJDb25uZWN0aW9uKCktPmRpZENsb3NlKCk7CisgICAgaWYgKGF1dG8qIHdl
YkNvbm5lY3Rpb24gPSB0aGlzLT53ZWJDb25uZWN0aW9uKCkpCisgICAgICAgIHdlYkNvbm5lY3Rp
b24tPmRpZENsb3NlKCk7CiAKICAgICBhdXRvIHBhZ2VzID0gY29weVRvVmVjdG9yT2Y8UmVmUHRy
PFdlYlBhZ2VQcm94eT4+KG1fcGFnZU1hcC52YWx1ZXMoKSk7CiAKQEAgLTY3MSwxMyArNjgyLDEz
IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKQogICAg
IH0KICNlbmRpZgogCi0gICAgZm9yIChhdXRvJiBwYWdlIDogcGFnZXMpCi0gICAgICAgIHBhZ2Ut
PnByb2Nlc3NEaWRUZXJtaW5hdGUoUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uOjpDcmFzaCk7Ci0K
ICAgICBmb3IgKGF1dG8qIHN1c3BlbmRlZFBhZ2UgOiBjb3B5VG9WZWN0b3JPZjxTdXNwZW5kZWRQ
YWdlUHJveHkqPihtX3N1c3BlbmRlZFBhZ2VNYXAudmFsdWVzKCkpKQogICAgICAgICBzdXNwZW5k
ZWRQYWdlLT53ZWJQcm9jZXNzRGlkQ2xvc2UoKnRoaXMpOwogCiAgICAgbV9zdXNwZW5kZWRQYWdl
TWFwLmNsZWFyKCk7CisKKyAgICBmb3IgKGF1dG8mIHBhZ2UgOiBwYWdlcykKKyAgICAgICAgcGFn
ZS0+cHJvY2Vzc0RpZFRlcm1pbmF0ZShQcm9jZXNzVGVybWluYXRpb25SZWFzb246OkNyYXNoKTsK
IH0KIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNl
aXZlck5hbWUsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKQpAQCAtNzM3LDYgKzc0
OCwxMSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nlc3NM
YXVuY2hlciogbGF1bmNoZXIsIElQQzo6Q29ubmVjdAogewogICAgIENoaWxkUHJvY2Vzc1Byb3h5
OjpkaWRGaW5pc2hMYXVuY2hpbmcobGF1bmNoZXIsIGNvbm5lY3Rpb25JZGVudGlmaWVyKTsKIAor
ICAgIGlmICghSVBDOjpDb25uZWN0aW9uOjppZGVudGlmaWVySXNWYWxpZChjb25uZWN0aW9uSWRl
bnRpZmllcikpIHsKKyAgICAgICAgcHJvY2Vzc0RpZFRlcm1pbmF0ZU9yRmFpbGVkVG9MYXVuY2go
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGZvciAoV2ViUGFnZVByb3h5KiBwYWdl
IDogbV9wYWdlTWFwLnZhbHVlcygpKSB7CiAgICAgICAgIEFTU0VSVCh0aGlzID09ICZwYWdlLT5w
cm9jZXNzKCkpOwogICAgICAgICBwYWdlLT5wcm9jZXNzRGlkRmluaXNoTGF1bmNoaW5nKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IGVmMTY4NDIxZGM0
ZTViMDBiOWEwZTkwYmQyMTE3OWExZDY1MDlhYjguLjZmNWM4YWU5NGZkNjEyMmM4MjJlM2U5ZDQ0
YWMzZTY1NzhjYzYzYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5oCkBAIC0yNzAsNiArMjcwLDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgdXBkYXRlQmFja2dy
b3VuZFJlc3BvbnNpdmVuZXNzVGltZXIoKTsKIAorICAgIHZvaWQgcHJvY2Vzc0RpZFRlcm1pbmF0
ZU9yRmFpbGVkVG9MYXVuY2goKTsKKwogICAgIC8vIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50CiAg
ICAgZnJpZW5kIGNsYXNzIFdlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CiAgICAgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3ZTU0
N2RlNzY2MGJhZDY2MTYxNmYwNTE4OWMwZjRhNzM3MDg3MzExLi40MmE4YzdkMTE5M2YxZDA2ZTE0
YzI4ODFhOTVjZjQ3NjMwMzUzMzk2IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTgtMDUtMDIgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBMb2FkIGhhbmdzIGlmIHRoZSBXZWJQcm9j
ZXNzIGZhaWxzIHRvIGxhdW5jaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTg1MjI1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zODI0OTA1OD4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgQVBJIHRl
c3QgY292ZXJhZ2UuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1dlYkNvbnRlbnRQcm9jZXNzRGlkVGVybWluYXRlLm1tOiBBZGRlZC4KKyAgICAg
ICAgKC1bQ3Jhc2hPblN0YXJ0TmF2aWdhdGlvbkRlbGVnYXRlIF93ZWJWaWV3OndlYkNvbnRlbnRQ
cm9jZXNzRGlkVGVybWluYXRlV2l0aFJlYXNvbjpdKToKKyAgICAgICAgKC1bQ3Jhc2hPblN0YXJ0
TmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6ZGlkRmluaXNoTmF2aWdhdGlvbjpdKToKKyAgICAg
ICAgKC1bQ3Jhc2hSZWNvdmVyeVNjcmlwdE1lc3NhZ2VIYW5kbGVyIHVzZXJDb250ZW50Q29udHJv
bGxlcjpkaWRSZWNlaXZlU2NyaXB0TWVzc2FnZTpdKToKKyAgICAgICAgKFRFU1QpOgorCiAyMDE4
LTA1LTAyICBDYXJsb3MgQWxiZXJ0byBMb3BleiBQZXJleiAgPGNsb3BlekBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFtHVEtdIEdlbmVyYXRlIGEgSlNDIGJ1bmRsZSBvbiB0aGUgNjQgYW5kIDMyIGJp
dCByZWxlYXNlIGJvdHMgYW5kIHVwbG9hZCBpdCB0byB3ZWJraXRndGsub3JnCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IGYxOTkzZmRhM2I5ZDQ5MDU1Y2M1NTM5YTlhYTY3NjEwMjllZDczMzAu
LjJjNjc2ODQ1NzFlNDM2N2I5Njc3Zjk1YjJiMzA2N2ZhYzcxMmQ1OWEgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC01NDUsNiArNTQ1LDcgQEAKIAkJN0NENEMyNkUxRTJDMEU2RTAwOTI5NDcw
IC8qIFN0cmluZ0NvbmNhdGVuYXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdDRDRDMjZDMUUyQzBFNkUwMDkyOTQ3MCAvKiBTdHJpbmdDb25jYXRl
bmF0ZS5jcHAgKi87IH07CiAJCTdDRUZBOTY2MUFDMEI5RTIwMEI5MTBGRCAvKiBfV0tVc2VyQ29u
dGVudEV4dGVuc2lvblN0b3JlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0NFRkE5NjQxQUMwQjlFMjAwQjkxMEZEIC8qIF9XS1VzZXJDb250ZW50RXh0
ZW5zaW9uU3RvcmUubW0gKi87IH07CiAJCTdDRkJDQUU1MTc0MzIzOEYwMEIyQkZDRiAvKiBXaWxs
TG9hZF9CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0NGQkNBRTMxNzQzMjM4RTAwQjJCRkNGIC8qIFdpbGxMb2FkX0J1bmRsZS5jcHAgKi87
IH07CisJCTgzMEYyRTBDMjA5QTZBOEUwMEQzNkZGMSAvKiBXZWJDb250ZW50UHJvY2Vzc0RpZFRl
cm1pbmF0ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDgzMEYyRTBCMjA5QTZBNzQwMEQzNkZGMSAvKiBXZWJDb250ZW50UHJvY2Vzc0RpZFRlcm1pbmF0
ZS5tbSAqLzsgfTsKIAkJODMxNDhCMDYyMDJBQzZBNDAwQkFERTk5IC8qIEluamVjdGVkQnVuZGxl
RGlzYWJsZU92ZXJyaWRlQnVpbHRpbnNCZWhhdmlvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzE0OEIwNTIwMkFDNjgyMDBCQURFOTkgLyogSW5q
ZWN0ZWRCdW5kbGVEaXNhYmxlT3ZlcnJpZGVCdWlsdGluc0JlaGF2aW9yLmNwcCAqLzsgfTsKIAkJ
ODMxNDhCMDcyMDJBQzZBRDAwQkFERTk5IC8qIEluamVjdGVkQnVuZGxlRGlzYWJsZU92ZXJyaWRl
QnVpbHRpbnNCZWhhdmlvcl9CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODMxNDhCMDQyMDJBQzY4MjAwQkFERTk5IC8qIEluamVjdGVkQnVu
ZGxlRGlzYWJsZU92ZXJyaWRlQnVpbHRpbnNCZWhhdmlvcl9CdW5kbGUuY3BwICovOyB9OwogCQk4
MzE0OEIwOTIwMkFDNzhEMDBCQURFOTkgLyogb3ZlcnJpZGUtYnVpbHRpbnMtdGVzdC5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMTQ4
QjA4MjAyQUM3NjgwMEJBREU5OSAvKiBvdmVycmlkZS1idWlsdGlucy10ZXN0Lmh0bWwgKi87IH07
CkBAIC0xNTc1LDYgKzE1NzYsNyBAQAogCQk3Q0ZCQ0FERDE3NDMyMzRGMDBCMkJGQ0YgLyogV2ls
bExvYWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2lsbExvYWQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0ZCQ0FFMzE3NDMyMzhFMDBCMkJG
Q0YgLyogV2lsbExvYWRfQnVuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdpbGxMb2FkX0J1bmRsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTgxQjUwMTkyMTQwRjIzMjMwMEQ5RUI1OCAvKiBTdHJpbmdCdWlsZGVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cmluZ0J1aWxkZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk4MzBGMkUwQjIwOUE2QTc0MDBEMzZGRjEgLyogV2ViQ29udGVu
dFByb2Nlc3NEaWRUZXJtaW5hdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBXZWJDb250ZW50UHJvY2Vzc0RpZFRlcm1pbmF0ZS5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODMxNDhCMDQyMDJBQzY4MjAwQkFERTk5IC8qIEluamVjdGVkQnVuZGxl
RGlzYWJsZU92ZXJyaWRlQnVpbHRpbnNCZWhhdmlvcl9CdW5kbGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5qZWN0ZWRCdW5kbGVEaXNhYmxlT3ZlcnJpZGVCdWls
dGluc0JlaGF2aW9yX0J1bmRsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgz
MTQ4QjA1MjAyQUM2ODIwMEJBREU5OSAvKiBJbmplY3RlZEJ1bmRsZURpc2FibGVPdmVycmlkZUJ1
aWx0aW5zQmVoYXZpb3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SW5qZWN0ZWRCdW5kbGVEaXNhYmxlT3ZlcnJpZGVCdWlsdGluc0JlaGF2aW9yLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMxNDhCMDgyMDJBQzc2ODAwQkFERTk5IC8qIG92ZXJy
aWRlLWJ1aWx0aW5zLXRlc3QuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJvdmVy
cmlkZS1idWlsdGlucy10ZXN0Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MjI0NSw2ICsyMjQ3LDcgQEAKIAkJCQk5M0U5NDNGMTFDRDNFODdFMDBBQzA4QzIgLyogVmlkZW9D
b250cm9sc01hbmFnZXIubW0gKi8sCiAJCQkJNjM1NkZCMjExRUM0RTBCQTAwNDRCRjE4IC8qIFZp
c2libGVDb250ZW50UmVjdC5tbSAqLywKIAkJCQk4Mzc3OUMzNzFGODJGRUIwMDA3Q0RBOEEgLyog
VmlzaXRlZExpbmtTdG9yZS5tbSAqLywKKwkJCQk4MzBGMkUwQjIwOUE2QTc0MDBEMzZGRjEgLyog
V2ViQ29udGVudFByb2Nlc3NEaWRUZXJtaW5hdGUubW0gKi8sCiAJCQkJNUM5NzNGNUIxRjU4RUYw
QTAwMzU5QzI3IC8qIFdlYkdMUG9saWN5Lm1tICovLAogCQkJCTUxNzE0RUI2MUNGOEM3QTQwMDQ3
MjNDNCAvKiBXZWJQcm9jZXNzS2lsbElEQkNsZWFudXAubW0gKi8sCiAJCQkJQzFEOEVFMjEyMDI4
RThFMzAwOEVCMTQxIC8qIFdlYlByb2Nlc3NUZXJtaW5hdGUubW0gKi8sCkBAIC0zNzY5LDYgKzM3
NzIsNyBAQAogCQkJCTgzNzc5QzM4MUY4MkZFQ0UwMDdDREE4QSAvKiBWaXNpdGVkTGlua1N0b3Jl
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYxMzlFNzcxQTQyM0E1QjAwRjU5MEY1IC8qIFdlYWtP
YmpDUHRyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMTkxQTQxMUFFNjAwNDQ3QzRDIC8q
IFdlYkFyY2hpdmUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJODMwRjJFMEMyMDlBNkE4RTAwRDM2
RkYxIC8qIFdlYkNvbnRlbnRQcm9jZXNzRGlkVGVybWluYXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJN0M4M0UwNEMxRDBBNjQxODAwRkVCQ0YzIC8qIFdlYkNvcmVOU1VSTFNlc3Npb24ubW0gaW4g
U291cmNlcyAqLywKIAkJCQk3Q0NFN0YxQTFBNDExQUU2MDA0NDdDNEMgLyogV2ViQ29yZVN0YXRp
c3RpY3NXaXRoTm9XZWJQcm9jZXNzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDOTczRjVDMUY1
OEVGOEIwMDM1OUMyNyAvKiBXZWJHTFBvbGljeS5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJDb250ZW50UHJvY2Vz
c0RpZFRlcm1pbmF0ZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
V2ViQ29udGVudFByb2Nlc3NEaWRUZXJtaW5hdGUubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjk2NTYwYmZkNzk1
ODUzMDdjZGQyM2ZlMzQxN2JmMmRmZDVkOTA5NgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2ViQ29udGVudFByb2Nlc3NEaWRUZXJtaW5h
dGUubW0KQEAgLTAsMCArMSwxNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisKKyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJUZXN0LmgiCisjaW1w
b3J0IDxXZWJLaXQvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJL
aXQvV0tOYXZpZ2F0aW9uUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLUHJvY2Vzc1Bvb2xQ
cml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Lmg+CisjaW1wb3J0IDx3dGYvUmV0
YWluUHRyLmg+CisKK3N0YXRpYyBib29sIGRpZENyYXNoOworc3RhdGljIF9XS1Byb2Nlc3NUZXJt
aW5hdGlvblJlYXNvbiBleHBlY3RlZENyYXNoUmVhc29uOworc3RhdGljIGJvb2wgZmluaXNoZWRM
b2FkOworc3RhdGljIGJvb2wgc2hvdWxkTG9hZEFnYWluT25DcmFzaDsKK3N0YXRpYyBib29sIHJl
Y2VpdmVkU2NyaXB0TWVzc2FnZTsKKworc3RhdGljIE5TU3RyaW5nICp0ZXN0SFRNTCA9IEAiPHNj
cmlwdD53aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2Fn
ZSgnTE9BREVEJyk7PC9zY3JpcHQ+IjsKKworQGludGVyZmFjZSBDcmFzaE9uU3RhcnROYXZpZ2F0
aW9uRGVsZWdhdGUgOiBOU09iamVjdCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGU+CitAZW5kCisKK0Bp
bXBsZW1lbnRhdGlvbiBDcmFzaE9uU3RhcnROYXZpZ2F0aW9uRGVsZWdhdGUKKworLSAodm9pZClf
d2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyB3ZWJDb250ZW50UHJvY2Vzc0RpZFRlcm1pbmF0
ZVdpdGhSZWFzb246KF9XS1Byb2Nlc3NUZXJtaW5hdGlvblJlYXNvbilyZWFzb24KK3sKKyAgICBF
WFBFQ1RfRkFMU0UoZGlkQ3Jhc2gpOworICAgIGRpZENyYXNoID0gdHJ1ZTsKKyAgICBFWFBFQ1Rf
RVEoZXhwZWN0ZWRDcmFzaFJlYXNvbiwgcmVhc29uKTsKKyAgICBFWFBFQ1RfRVEoMCwgd2ViVmll
dy5fd2ViUHJvY2Vzc0lkZW50aWZpZXIpOworCisgICAgLy8gQXR0ZW1wdCB0aGUgbG9hZCBhZ2Fp
bi4KKyAgICBpZiAoc2hvdWxkTG9hZEFnYWluT25DcmFzaCkKKyAgICAgICAgW3dlYlZpZXcgbG9h
ZEhUTUxTdHJpbmc6dGVzdEhUTUwgYmFzZVVSTDpuaWxdOworfQorCistICh2b2lkKXdlYlZpZXc6
KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkRmluaXNoTmF2aWdhdGlvbjooV0tOYXZpZ2F0aW9uICop
bmF2aWdhdGlvbgoreworICAgIGZpbmlzaGVkTG9hZCA9IHRydWU7Cit9CisKK0BlbmQKKworQGlu
dGVyZmFjZSBDcmFzaFJlY292ZXJ5U2NyaXB0TWVzc2FnZUhhbmRsZXIgOiBOU09iamVjdCA8V0tT
Y3JpcHRNZXNzYWdlSGFuZGxlcj4KK0BlbmQKKworQGltcGxlbWVudGF0aW9uIENyYXNoUmVjb3Zl
cnlTY3JpcHRNZXNzYWdlSGFuZGxlcgorCistICh2b2lkKXVzZXJDb250ZW50Q29udHJvbGxlcjoo
V0tVc2VyQ29udGVudENvbnRyb2xsZXIgKil1c2VyQ29udGVudENvbnRyb2xsZXIgZGlkUmVjZWl2
ZVNjcmlwdE1lc3NhZ2U6KFdLU2NyaXB0TWVzc2FnZSAqKW1lc3NhZ2UKK3sKKyAgICBFWFBFQ1Rf
U1RSRVEoWyhOU1N0cmluZyAqKVttZXNzYWdlIGJvZHldIFVURjhTdHJpbmddLCAiTE9BREVEIik7
CisgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gdHJ1ZTsKK30KKworQGVuZAorCitURVNUKFdL
TmF2aWdhdGlvbiwgRmFpbHVyZVRvU3RhcnRXZWJQcm9jZXNzUmVjb3ZlcnkpCit7CisgICAgYXV0
byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2Nd
IGluaXRdKTsKKyAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtbQ3Jhc2hSZWNvdmVyeVNjcmlw
dE1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7CisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJD
b250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBu
YW1lOkAidGVzdEhhbmRsZXIiXTsKKworICAgIFtjb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NQ
b29sIF9tYWtlTmV4dFdlYlByb2Nlc3NMYXVuY2hGYWlsRm9yVGVzdGluZ107CisKKyAgICBhdXRv
IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFr
ZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0p
OworCisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tDcmFzaE9uU3RhcnROYXZpZ2F0aW9u
RGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdh
dGU6ZGVsZWdhdGUuZ2V0KCldOworCisgICAgZmluaXNoZWRMb2FkID0gZmFsc2U7CisgICAgZGlk
Q3Jhc2ggPSBmYWxzZTsKKyAgICByZWNlaXZlZFNjcmlwdE1lc3NhZ2UgPSBmYWxzZTsKKyAgICBl
eHBlY3RlZENyYXNoUmVhc29uID0gX1dLUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uQ3Jhc2g7Cisg
ICAgc2hvdWxkTG9hZEFnYWluT25DcmFzaCA9IHRydWU7CisKKyAgICBbd2ViVmlldyBsb2FkSFRN
TFN0cmluZzp0ZXN0SFRNTCBiYXNlVVJMOm5pbF07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZmaW5pc2hlZExvYWQpOworCisgICAgRVhQRUNUX1RSVUUoZGlkQ3Jhc2gpOworICAgIEVY
UEVDVF9UUlVFKCEhd2ViVmlldy5nZXQoKS5fd2ViUHJvY2Vzc0lkZW50aWZpZXIpOworICAgIEVY
UEVDVF9UUlVFKHJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7Cit9CisKK1RFU1QoV0tOYXZpZ2F0aW9u
LCBGYWlsdXJlVG9TdGFydFdlYlByb2Nlc3NBZnRlckNyYXNoUmVjb3ZlcnkpCit7CisgICAgYXV0
byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2Nd
IGluaXRdKTsKKyAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtbQ3Jhc2hSZWNvdmVyeVNjcmlw
dE1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7CisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJD
b250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBu
YW1lOkAidGVzdEhhbmRsZXIiXTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29u
ZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisKKyAgICBhdXRvIGRlbGVnYXRlID0g
YWRvcHROUyhbW0NyYXNoT25TdGFydE5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwor
ICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAg
ICByZWNlaXZlZFNjcmlwdE1lc3NhZ2UgPSBmYWxzZTsKKyAgICBmaW5pc2hlZExvYWQgPSBmYWxz
ZTsKKyAgICBkaWRDcmFzaCA9IGZhbHNlOworCisgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6
dGVzdEhUTUwgYmFzZVVSTDpuaWxdOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZmlu
aXNoZWRMb2FkKTsKKworICAgIEVYUEVDVF9GQUxTRShkaWRDcmFzaCk7CisgICAgRVhQRUNUX1RS
VUUoISF3ZWJWaWV3LmdldCgpLl93ZWJQcm9jZXNzSWRlbnRpZmllcik7CisgICAgRVhQRUNUX1RS
VUUocmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKKworICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9
IGZhbHNlOworICAgIHNob3VsZExvYWRBZ2Fpbk9uQ3Jhc2ggPSBmYWxzZTsKKyAgICBleHBlY3Rl
ZENyYXNoUmVhc29uID0gX1dLUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uUmVxdWVzdGVkQnlDbGll
bnQ7CisgICAgW3dlYlZpZXcgX2tpbGxXZWJDb250ZW50UHJvY2Vzc0FuZFJlc2V0U3RhdGVdOwor
CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkaWRDcmFzaCk7CisgICAgRVhQRUNUX1RS
VUUoIXdlYlZpZXcuZ2V0KCkuX3dlYlByb2Nlc3NJZGVudGlmaWVyKTsKKyAgICBFWFBFQ1RfRkFM
U0UocmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKKworICAgIGV4cGVjdGVkQ3Jhc2hSZWFzb24gPSBf
V0tQcm9jZXNzVGVybWluYXRpb25SZWFzb25DcmFzaDsKKyAgICBkaWRDcmFzaCA9IGZhbHNlOwor
ICAgIGZpbmlzaGVkTG9hZCA9IGZhbHNlOworICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZh
bHNlOworICAgIHNob3VsZExvYWRBZ2Fpbk9uQ3Jhc2ggPSB0cnVlOworCisgICAgW2NvbmZpZ3Vy
YXRpb24uZ2V0KCkucHJvY2Vzc1Bvb2wgX21ha2VOZXh0V2ViUHJvY2Vzc0xhdW5jaEZhaWxGb3JU
ZXN0aW5nXTsKKyAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzp0ZXN0SFRNTCBiYXNlVVJMOm5p
bF07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmZpbmlzaGVkTG9hZCk7CisKKyAg
ICBFWFBFQ1RfVFJVRShkaWRDcmFzaCk7CisgICAgRVhQRUNUX1RSVUUoISF3ZWJWaWV3LmdldCgp
Ll93ZWJQcm9jZXNzSWRlbnRpZmllcik7CisgICAgRVhQRUNUX1RSVUUocmVjZWl2ZWRTY3JpcHRN
ZXNzYWdlKTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>339436</attachid>
            <date>2018-05-03 12:08:03 -0700</date>
            <delta_ts>2018-05-03 12:59:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185225-20180503120803.patch</filename>
            <type>text/plain</type>
            <size>21887</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMxMjMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDk5OTYzOWRlYzdmNDgyYWQ1
NjQzYmMzNWY4ZDQ5NWRkMTY2NzhhYmYuLmUyMjYxOTA4MGU5N2M4MGY5MmIwNDRkNGY1ZGE2ZWY3
YjY5MTg0NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTgtMDUtMDIgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBMb2FkIGhhbmdzIGlmIHRoZSBXZWJQ
cm9jZXNzIGZhaWxzIHRvIGxhdW5jaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTg1MjI1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zODI0OTA1OD4K
KworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZiBHYXJlbi4KKworICAgICAgICBXaGVuIGEgcHJv
Y2VzcyBmYWlscyB0byBsYXVuY2gsIENoaWxkUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hp
bmcoKSBnZXRzIGNhbGxlZCB3aXRoIGFuCisgICAgICAgIGludmFsaWQgY29ubmVjdGlvbiBpZGVu
dGlmaWVyLiBXaGlsZSBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcoKSBw
cm9wZXJseSBkZWFscyB3aXRoCisgICAgICAgIHRoaXMgc2l0dWF0aW9uLCBXZWJQcm9jZXNzUHJv
eHk6OmRpZEZpbmlzaExhdW5jaGluZygpIGRvZXMgbm90LiBBcyBhIHJlc3VsdCwgd2UgZG8gbm90
IGF0dGVtcHQgdG8KKyAgICAgICAgcmVsYXVuY2ggdGhlIHByb2Nlc3MsIHdlIGRvIG5vdCBub3Rp
ZnkgdGhlIGNsaWVudCBhbmQgV2ViUGFnZVByb3h5OjptX2lzVmFsaWQgc3RheXMgdHJ1ZS4KKwor
ICAgICAgICBUaGlzIHBhdGNoIHRodXMgdXBkYXRlcyBXZWJQcm9jZXNzUHJveHk6OmRpZEZpbmlz
aExhdW5jaGluZygpIHRvIGNoZWNrIGlmIHRoZSBjb25uZWN0aW9uIGlkZW50aWZpZXIKKyAgICAg
ICAgaXMgdmFsaWQgYW5kIHRyZWF0cyBpdCBhcyBhIGNyYXNoLiBBcyBhIHJlc3VsdCwgdGhlIFdl
YlBhZ2VQcm94aWVzIHByb3Blcmx5IHJlc2V0IHRoZWlyIHN0YXRlIGFuZAorICAgICAgICB0aGUg
Y2xpZW50IGdldHMgbm90aWZpZWQgb2YgdGhlIGNyYXNoIHNvIHRoYXQgaXQgY2FuIGF0dGVtcHQg
dG8gcmVsb2FkLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29s
Lm1tOgorICAgICAgICAoLVtXS1Byb2Nlc3NQb29sIF9tYWtlTmV4dFdlYlByb2Nlc3NMYXVuY2hG
YWlsRm9yVGVzdGluZ10pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNz
UG9vbFByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5j
aGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJN
YWMubW06CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2Vzcyk6
CisgICAgICAgIEFkZCBTUEkgdG8gbWFrZSB0aGUgbmV4dCBXZWJQcm9jZXNzIGxhdW5jaCBmYWls
LCBmb3IgdGhlIHB1cnBvc2Ugb2YgQVBJIHRlc3RpbmcuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpnZXRMYXVuY2hPcHRpb25zKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpkaWRDbG9zZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0RpZFRlcm1pbmF0ZU9yRmFpbGVkVG9MYXVu
Y2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGlu
Zyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorCiAyMDE4LTA1LTAx
ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFVzZSBk
ZWZhdWx0IHN0ZDo6b3B0aW9uYWwgaWYgaXQgaXMgcHJvdmlkZWQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KaW5kZXggMjFkNzhmNTk0
YzIyYjkxMTU3NGFlMDkxZWJjMjhmYTFiYzMyNGE3Ni4uYTI3YTdiNWViNGIyMzA1Zjg0NTI5Zjhh
MTc5ODIxNWFiMjY1NTkxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KQEAgLTQ1OSw2ICs0NTksMTEgQEAgLSAoc2l6ZV90KV93
ZWJQcm9jZXNzQ291bnQKICAgICByZXR1cm4gX3Byb2Nlc3NQb29sLT5wcm9jZXNzZXMoKS5zaXpl
KCk7CiB9CiAKKy0gKHZvaWQpX21ha2VOZXh0V2ViUHJvY2Vzc0xhdW5jaEZhaWxGb3JUZXN0aW5n
Cit7CisgICAgX3Byb2Nlc3NQb29sLT5zZXRTaG91bGRNYWtlTmV4dFdlYlByb2Nlc3NMYXVuY2hG
YWlsRm9yVGVzdGluZyh0cnVlKTsKK30KKwogLSAoc2l6ZV90KV9wcmV3YXJtZWRXZWJQcm9jZXNz
Q291bnQKIHsKICAgICBzaXplX3QgcmVzdWx0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgKaW5kZXggNThl
ODc2OTI2YjQyMTM5ZTdjMTNiNzNmZDhjMTRkNzMxMjRkNDRiNy4uNDZkZjAyYjNkNWVhOWFhMjIx
YjQ3ZjZjYjg3NTNlOGZjMjhmM2ExZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgKQEAgLTk0LDYgKzk0LDcg
QEAKIC0gKHNpemVfdClfcGx1Z2luUHJvY2Vzc0NvdW50IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4
KDEwLjEzLjQpLCBpb3MoMTEuMykpOwogLSAoc2l6ZV90KV9zZXJ2aWNlV29ya2VyUHJvY2Vzc0Nv
dW50IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkp
OwogLSAodm9pZClfc3luY05ldHdvcmtQcm9jZXNzQ29va2llcyBXS19BUElfQVZBSUxBQkxFKG1h
Y29zeCgxMC4xMyksIGlvcygxMS4wKSk7CistICh2b2lkKV9tYWtlTmV4dFdlYlByb2Nlc3NMYXVu
Y2hGYWlsRm9yVGVzdGluZyBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9z
KFdLX0lPU19UQkEpKTsKIAogLy8gVGVzdCBvbmx5LiBSZXR1cm5zIHdlYiBwcm9jZXNzZXMgcnVu
bmluZyB3ZWIgcGFnZXMgKGRvZXMgbm90IGluY2x1ZGUgd2ViIHByb2Nlc3NlcyBydW5uaW5nIHNl
cnZpY2Ugd29ya2VycykKIC0gKHNpemVfdClfd2ViUGFnZUNvbnRlbnRQcm9jZXNzQ291bnQgV0tf
QVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTMuNCksIGlvcygxMS4zKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oCmluZGV4IDEzYWI5
MmJlY2Q3MzVkYTdhMjY4ZTQyZmEzYzllM2Y2ZTQxNTJlNGIuLjNhYmFiYmNjZWVkY2UzZTc5ZGVk
ZTBhMzM5MzFhNTJmMmVmNTczNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oCkBAIC02NSw2ICs2NSw3IEBAIHB1YmxpYzoKICAg
ICAgICAgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lkZW50aWZpZXI7CiAgICAg
ICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IGV4dHJhSW5pdGlhbGl6YXRpb25EYXRhOwogICAg
ICAgICBib29sIG5vblZhbGlkSW5qZWN0ZWRDb2RlQWxsb3dlZCB7IGZhbHNlIH07CisgICAgICAg
IGJvb2wgc2hvdWxkTWFrZVByb2Nlc3NMYXVuY2hGYWlsRm9yVGVzdGluZyB7IGZhbHNlIH07CiAK
ICNpZiBFTkFCTEUoREVWRUxPUEVSX01PREUpICYmIChQTEFURk9STShHVEspIHx8IFBMQVRGT1JN
KFdQRSkpCiAgICAgICAgIFN0cmluZyBwcm9jZXNzQ21kUHJlZml4OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMu
bW0KaW5kZXggMGUwNzI2MmE5NjVkNGNhN2QyMTU5OGMzOGVmY2VjNWE4OWJkYzFmNS4uMjRjNzll
Y2RhZmFkMzU4NTVkZTg4ZDExOGE1NDljNWE3NDQ4NTc5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1t
CkBAIC0yMDIsOCArMjAyLDggQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3Mo
KQogICAgIHhwY19kaWN0aW9uYXJ5X3NldF92YWx1ZShib290c3RyYXBNZXNzYWdlLmdldCgpLCAi
ZXh0cmEtaW5pdGlhbGl6YXRpb24tZGF0YSIsIGV4dHJhSW5pdGlhbGl6YXRpb25EYXRhLmdldCgp
KTsKIAogICAgIGF1dG8gd2Vha1Byb2Nlc3NMYXVuY2hlciA9IG1fd2Vha1B0ckZhY3RvcnkuY3Jl
YXRlV2Vha1B0cigqdGhpcyk7Ci0gICAgeHBjX2Nvbm5lY3Rpb25fc2V0X2V2ZW50X2hhbmRsZXIo
bV94cGNDb25uZWN0aW9uLmdldCgpLCBbd2Vha1Byb2Nlc3NMYXVuY2hlciwgbGlzdGVuaW5nUG9y
dF0oeHBjX29iamVjdF90IGV2ZW50KSB7Ci0gICAgICAgIEFTU0VSVCh4cGNfZ2V0X3R5cGUoZXZl
bnQpID09IFhQQ19UWVBFX0VSUk9SKTsKKyAgICBhdXRvIGVycm9ySGFuZGxlciA9IFt3ZWFrUHJv
Y2Vzc0xhdW5jaGVyLCBsaXN0ZW5pbmdQb3J0XSh4cGNfb2JqZWN0X3QgZXZlbnQpIHsKKyAgICAg
ICAgQVNTRVJUKCFldmVudCB8fCB4cGNfZ2V0X3R5cGUoZXZlbnQpID09IFhQQ19UWVBFX0VSUk9S
KTsKIAogICAgICAgICBhdXRvIHByb2Nlc3NMYXVuY2hlciA9IHdlYWtQcm9jZXNzTGF1bmNoZXIu
Z2V0KCk7CiAgICAgICAgIGlmICghcHJvY2Vzc0xhdW5jaGVyKQpAQCAtMjI5LDEwICsyMjksMTkg
QEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogICAgICAgICBwcm9jZXNz
TGF1bmNoZXItPm1feHBjQ29ubmVjdGlvbiA9IG51bGxwdHI7CiAKICAgICAgICAgcHJvY2Vzc0xh
dW5jaGVyLT5kaWRGaW5pc2hMYXVuY2hpbmdQcm9jZXNzKDAsIElQQzo6Q29ubmVjdGlvbjo6SWRl
bnRpZmllcigpKTsKLSAgICB9KTsKKyAgICB9OworCisgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X2V2
ZW50X2hhbmRsZXIobV94cGNDb25uZWN0aW9uLmdldCgpLCBlcnJvckhhbmRsZXIpOwogCiAgICAg
eHBjX2Nvbm5lY3Rpb25fcmVzdW1lKG1feHBjQ29ubmVjdGlvbi5nZXQoKSk7CiAKKyAgICBpZiAo
VU5MSUtFTFkobV9sYXVuY2hPcHRpb25zLnNob3VsZE1ha2VQcm9jZXNzTGF1bmNoRmFpbEZvclRl
c3RpbmcpKSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbZXJyb3JIYW5kbGVy
ID0gV1RGTW92ZShlcnJvckhhbmRsZXIpXSB7CisgICAgICAgICAgICBlcnJvckhhbmRsZXIobnVs
bHB0cik7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgcmVmKCk7
CiAgICAgeHBjX2Nvbm5lY3Rpb25fc2VuZF9tZXNzYWdlX3dpdGhfcmVwbHkobV94cGNDb25uZWN0
aW9uLmdldCgpLCBib290c3RyYXBNZXNzYWdlLmdldCgpLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1
ZSgpLCBeKHhwY19vYmplY3RfdCByZXBseSkgewogICAgICAgICAvLyBFcnJvcnMgYXJlIGhhbmRs
ZWQgaW4gdGhlIGV2ZW50IGhhbmRsZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuaAppbmRleCA4YzZhNTdjZDEwNDZhMzgwMjBmMzZmYTJiMjQ1ZmIyMTYxMTFlY2E5Li43
MGM0NTQxMzY4NjA2OWNjYzk0MzMwZTYwYjZmMmU4NmVhNTU3ZDE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTI3Niw2ICsyNzYsOSBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIHN5bmNOZXR3b3JrUHJvY2Vzc0Nvb2tpZXMoKTsKIAorICAgIHZvaWQgc2V0U2hv
dWxkTWFrZU5leHRXZWJQcm9jZXNzTGF1bmNoRmFpbEZvclRlc3RpbmcoYm9vbCB2YWx1ZSkgeyBt
X3Nob3VsZE1ha2VOZXh0V2ViUHJvY2Vzc0xhdW5jaEZhaWxGb3JUZXN0aW5nID0gdmFsdWU7IH0K
KyAgICBib29sIHNob3VsZE1ha2VOZXh0V2ViUHJvY2Vzc0xhdW5jaEZhaWxGb3JUZXN0aW5nKCkg
Y29uc3QgeyByZXR1cm4gbV9zaG91bGRNYWtlTmV4dFdlYlByb2Nlc3NMYXVuY2hGYWlsRm9yVGVz
dGluZzsgfQorCiAgICAgdm9pZCByZXBvcnRXZWJDb250ZW50Q1BVVGltZShTZWNvbmRzIGNwdVRp
bWUsIHVpbnQ2NF90IGFjdGl2aXR5U3RhdGUpOwogCiAgICAgdm9pZCBhbGxvd1NwZWNpZmljSFRU
UFNDZXJ0aWZpY2F0ZUZvckhvc3QoY29uc3QgV2ViQ2VydGlmaWNhdGVJbmZvKiwgY29uc3QgU3Ry
aW5nJiBob3N0KTsKQEAgLTYzMSw2ICs2MzQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9qYXZh
U2NyaXB0Q29uZmlndXJhdGlvbkZpbGVFbmFibGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1fYWx3
YXlzUnVuc0F0QmFja2dyb3VuZFByaW9yaXR5OwogICAgIGJvb2wgbV9zaG91bGRUYWtlVUlCYWNr
Z3JvdW5kQXNzZXJ0aW9uOworICAgIGJvb2wgbV9zaG91bGRNYWtlTmV4dFdlYlByb2Nlc3NMYXVu
Y2hGYWlsRm9yVGVzdGluZyB7IGZhbHNlIH07CiAKICAgICBVc2VyT2JzZXJ2YWJsZVBhZ2VDb3Vu
dGVyIG1fdXNlck9ic2VydmFibGVQYWdlQ291bnRlcjsKICAgICBQcm9jZXNzU3VwcHJlc3Npb25E
aXNhYmxlZENvdW50ZXIgbV9wcm9jZXNzU3VwcHJlc3Npb25EaXNhYmxlZEZvclBhZ2VDb3VudGVy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggNDE1
NmQ4MzM4M2RmNmJlZjg5ZDViYjQyMjM1MDZlZGE1MmI3YTM5ZS4uZTA3M2U0ZDNlNjI1NjcwNjQ4
NWQ4NTEzM2I2NzVjODhjYjZmODdkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuY3BwCkBAIC0xNzQsNiArMTc0LDExIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5
OjpnZXRMYXVuY2hPcHRpb25zKFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyYgbGF1bmNo
T3B0CiAgICAgfQogCiAgICAgbGF1bmNoT3B0aW9ucy5ub25WYWxpZEluamVjdGVkQ29kZUFsbG93
ZWQgPSBzaG91bGRBbGxvd05vblZhbGlkSW5qZWN0ZWRDb2RlKCk7CisKKyAgICBpZiAocHJvY2Vz
c1Bvb2woKS5zaG91bGRNYWtlTmV4dFdlYlByb2Nlc3NMYXVuY2hGYWlsRm9yVGVzdGluZygpKSB7
CisgICAgICAgIHByb2Nlc3NQb29sKCkuc2V0U2hvdWxkTWFrZU5leHRXZWJQcm9jZXNzTGF1bmNo
RmFpbEZvclRlc3RpbmcoZmFsc2UpOworICAgICAgICBsYXVuY2hPcHRpb25zLnNob3VsZE1ha2VQ
cm9jZXNzTGF1bmNoRmFpbEZvclRlc3RpbmcgPSB0cnVlOworICAgIH0KIH0KIAogdm9pZCBXZWJQ
cm9jZXNzUHJveHk6OmNvbm5lY3Rpb25XaWxsT3BlbihJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24pCkBAIC02NTEsMTIgKzY1NiwxOCBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkUmVjZWl2
ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZQogfQogCiB2
b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikKK3sKKyAgICBw
cm9jZXNzRGlkVGVybWluYXRlT3JGYWlsZWRUb0xhdW5jaCgpOworfQorCit2b2lkIFdlYlByb2Nl
c3NQcm94eTo6cHJvY2Vzc0RpZFRlcm1pbmF0ZU9yRmFpbGVkVG9MYXVuY2goKQogewogICAgIC8v
IFByb3RlY3Qgb3Vyc2VsdmVzLCBhcyB0aGUgY2FsbCB0byBkaXNjb25uZWN0KCkgYmVsb3cgbWF5
IG90aGVyd2lzZSBjYXVzZSB1cwogICAgIC8vIHRvIGJlIGRlbGV0ZWQgYmVmb3JlIHdlIGNhbiBm
aW5pc2ggb3VyIHdvcmsuCiAgICAgUmVmPFdlYlByb2Nlc3NQcm94eT4gcHJvdGVjdCgqdGhpcyk7
CiAKLSAgICB3ZWJDb25uZWN0aW9uKCktPmRpZENsb3NlKCk7CisgICAgaWYgKGF1dG8qIHdlYkNv
bm5lY3Rpb24gPSB0aGlzLT53ZWJDb25uZWN0aW9uKCkpCisgICAgICAgIHdlYkNvbm5lY3Rpb24t
PmRpZENsb3NlKCk7CiAKICAgICBhdXRvIHBhZ2VzID0gY29weVRvVmVjdG9yT2Y8UmVmUHRyPFdl
YlBhZ2VQcm94eT4+KG1fcGFnZU1hcC52YWx1ZXMoKSk7CiAKQEAgLTY3MSwxMyArNjgyLDEzIEBA
IHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKQogICAgIH0K
ICNlbmRpZgogCi0gICAgZm9yIChhdXRvJiBwYWdlIDogcGFnZXMpCi0gICAgICAgIHBhZ2UtPnBy
b2Nlc3NEaWRUZXJtaW5hdGUoUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uOjpDcmFzaCk7Ci0KICAg
ICBmb3IgKGF1dG8qIHN1c3BlbmRlZFBhZ2UgOiBjb3B5VG9WZWN0b3JPZjxTdXNwZW5kZWRQYWdl
UHJveHkqPihtX3N1c3BlbmRlZFBhZ2VNYXAudmFsdWVzKCkpKQogICAgICAgICBzdXNwZW5kZWRQ
YWdlLT53ZWJQcm9jZXNzRGlkQ2xvc2UoKnRoaXMpOwogCiAgICAgbV9zdXNwZW5kZWRQYWdlTWFw
LmNsZWFyKCk7CisKKyAgICBmb3IgKGF1dG8mIHBhZ2UgOiBwYWdlcykKKyAgICAgICAgcGFnZS0+
cHJvY2Vzc0RpZFRlcm1pbmF0ZShQcm9jZXNzVGVybWluYXRpb25SZWFzb246OkNyYXNoKTsKIH0K
IAogdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZl
ck5hbWUsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKQpAQCAtNzM3LDYgKzc0OCwx
MSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVu
Y2hlciogbGF1bmNoZXIsIElQQzo6Q29ubmVjdAogewogICAgIENoaWxkUHJvY2Vzc1Byb3h5Ojpk
aWRGaW5pc2hMYXVuY2hpbmcobGF1bmNoZXIsIGNvbm5lY3Rpb25JZGVudGlmaWVyKTsKIAorICAg
IGlmICghSVBDOjpDb25uZWN0aW9uOjppZGVudGlmaWVySXNWYWxpZChjb25uZWN0aW9uSWRlbnRp
ZmllcikpIHsKKyAgICAgICAgcHJvY2Vzc0RpZFRlcm1pbmF0ZU9yRmFpbGVkVG9MYXVuY2goKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGZvciAoV2ViUGFnZVByb3h5KiBwYWdlIDog
bV9wYWdlTWFwLnZhbHVlcygpKSB7CiAgICAgICAgIEFTU0VSVCh0aGlzID09ICZwYWdlLT5wcm9j
ZXNzKCkpOwogICAgICAgICBwYWdlLT5wcm9jZXNzRGlkRmluaXNoTGF1bmNoaW5nKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IGVmMTY4NDIxZGM0ZTVi
MDBiOWEwZTkwYmQyMTE3OWExZDY1MDlhYjguLjZmNWM4YWU5NGZkNjEyMmM4MjJlM2U5ZDQ0YWMz
ZTY1NzhjYzYzYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5o
CkBAIC0yNzAsNiArMjcwLDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgdXBkYXRlQmFja2dyb3Vu
ZFJlc3BvbnNpdmVuZXNzVGltZXIoKTsKIAorICAgIHZvaWQgcHJvY2Vzc0RpZFRlcm1pbmF0ZU9y
RmFpbGVkVG9MYXVuY2goKTsKKwogICAgIC8vIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50CiAgICAg
ZnJpZW5kIGNsYXNzIFdlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CiAgICAgdm9pZCBkaWRSZWNl
aXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3ZTU0N2Rl
NzY2MGJhZDY2MTYxNmYwNTE4OWMwZjRhNzM3MDg3MzExLi4yMDE5MjZhN2VhYWMwMDk1OTY4NjI4
Zjg4MjRhZjk5NDlhYmY1Y2Y5IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTgtMDUtMDIgIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBMb2FkIGhhbmdzIGlmIHRoZSBXZWJQcm9jZXNz
IGZhaWxzIHRvIGxhdW5jaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTg1MjI1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zODI0OTA1OD4KKworICAg
ICAgICBSZXZpZXdlZCBieSBHZW9mZiBHYXJlbi4KKworICAgICAgICBBZGQgQVBJIHRlc3QgY292
ZXJhZ2UuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1dlYkNvbnRlbnRQcm9jZXNzRGlkVGVybWluYXRlLm1tOiBBZGRlZC4KKyAgICAgICAgKC1b
Q3Jhc2hPblN0YXJ0TmF2aWdhdGlvbkRlbGVnYXRlIF93ZWJWaWV3OndlYkNvbnRlbnRQcm9jZXNz
RGlkVGVybWluYXRlV2l0aFJlYXNvbjpdKToKKyAgICAgICAgKC1bQ3Jhc2hPblN0YXJ0TmF2aWdh
dGlvbkRlbGVnYXRlIHdlYlZpZXc6ZGlkRmluaXNoTmF2aWdhdGlvbjpdKToKKyAgICAgICAgKC1b
Q3Jhc2hSZWNvdmVyeVNjcmlwdE1lc3NhZ2VIYW5kbGVyIHVzZXJDb250ZW50Q29udHJvbGxlcjpk
aWRSZWNlaXZlU2NyaXB0TWVzc2FnZTpdKToKKyAgICAgICAgKFRFU1QpOgorCiAyMDE4LTA1LTAy
ICBDYXJsb3MgQWxiZXJ0byBMb3BleiBQZXJleiAgPGNsb3BlekBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtHVEtdIEdlbmVyYXRlIGEgSlNDIGJ1bmRsZSBvbiB0aGUgNjQgYW5kIDMyIGJpdCByZWxl
YXNlIGJvdHMgYW5kIHVwbG9hZCBpdCB0byB3ZWJraXRndGsub3JnCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IGYxOTkzZmRhM2I5ZDQ5MDU1Y2M1NTM5YTlhYTY3NjEwMjllZDczMzAuLjJjNjc2
ODQ1NzFlNDM2N2I5Njc3Zjk1YjJiMzA2N2ZhYzcxMmQ1OWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC01NDUsNiArNTQ1LDcgQEAKIAkJN0NENEMyNkUxRTJDMEU2RTAwOTI5NDcwIC8qIFN0
cmluZ0NvbmNhdGVuYXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdDRDRDMjZDMUUyQzBFNkUwMDkyOTQ3MCAvKiBTdHJpbmdDb25jYXRlbmF0ZS5j
cHAgKi87IH07CiAJCTdDRUZBOTY2MUFDMEI5RTIwMEI5MTBGRCAvKiBfV0tVc2VyQ29udGVudEV4
dGVuc2lvblN0b3JlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0NFRkE5NjQxQUMwQjlFMjAwQjkxMEZEIC8qIF9XS1VzZXJDb250ZW50RXh0ZW5zaW9u
U3RvcmUubW0gKi87IH07CiAJCTdDRkJDQUU1MTc0MzIzOEYwMEIyQkZDRiAvKiBXaWxsTG9hZF9C
dW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0NGQkNBRTMxNzQzMjM4RTAwQjJCRkNGIC8qIFdpbGxMb2FkX0J1bmRsZS5jcHAgKi87IH07CisJ
CTgzMEYyRTBDMjA5QTZBOEUwMEQzNkZGMSAvKiBXZWJDb250ZW50UHJvY2Vzc0RpZFRlcm1pbmF0
ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMEYy
RTBCMjA5QTZBNzQwMEQzNkZGMSAvKiBXZWJDb250ZW50UHJvY2Vzc0RpZFRlcm1pbmF0ZS5tbSAq
LzsgfTsKIAkJODMxNDhCMDYyMDJBQzZBNDAwQkFERTk5IC8qIEluamVjdGVkQnVuZGxlRGlzYWJs
ZU92ZXJyaWRlQnVpbHRpbnNCZWhhdmlvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4MzE0OEIwNTIwMkFDNjgyMDBCQURFOTkgLyogSW5qZWN0ZWRC
dW5kbGVEaXNhYmxlT3ZlcnJpZGVCdWlsdGluc0JlaGF2aW9yLmNwcCAqLzsgfTsKIAkJODMxNDhC
MDcyMDJBQzZBRDAwQkFERTk5IC8qIEluamVjdGVkQnVuZGxlRGlzYWJsZU92ZXJyaWRlQnVpbHRp
bnNCZWhhdmlvcl9CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODMxNDhCMDQyMDJBQzY4MjAwQkFERTk5IC8qIEluamVjdGVkQnVuZGxlRGlz
YWJsZU92ZXJyaWRlQnVpbHRpbnNCZWhhdmlvcl9CdW5kbGUuY3BwICovOyB9OwogCQk4MzE0OEIw
OTIwMkFDNzhEMDBCQURFOTkgLyogb3ZlcnJpZGUtYnVpbHRpbnMtdGVzdC5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMTQ4QjA4MjAy
QUM3NjgwMEJBREU5OSAvKiBvdmVycmlkZS1idWlsdGlucy10ZXN0Lmh0bWwgKi87IH07CkBAIC0x
NTc1LDYgKzE1NzYsNyBAQAogCQk3Q0ZCQ0FERDE3NDMyMzRGMDBCMkJGQ0YgLyogV2lsbExvYWQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2lsbExvYWQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0ZCQ0FFMzE3NDMyMzhFMDBCMkJGQ0YgLyog
V2lsbExvYWRfQnVuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdpbGxMb2FkX0J1bmRsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgxQjUw
MTkyMTQwRjIzMjMwMEQ5RUI1OCAvKiBTdHJpbmdCdWlsZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cmluZ0J1aWxkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk4MzBGMkUwQjIwOUE2QTc0MDBEMzZGRjEgLyogV2ViQ29udGVudFByb2Nl
c3NEaWRUZXJtaW5hdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBXZWJDb250ZW50UHJvY2Vzc0RpZFRlcm1pbmF0ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJODMxNDhCMDQyMDJBQzY4MjAwQkFERTk5IC8qIEluamVjdGVkQnVuZGxlRGlzYWJs
ZU92ZXJyaWRlQnVpbHRpbnNCZWhhdmlvcl9CdW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSW5qZWN0ZWRCdW5kbGVEaXNhYmxlT3ZlcnJpZGVCdWlsdGluc0Jl
aGF2aW9yX0J1bmRsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMTQ4QjA1
MjAyQUM2ODIwMEJBREU5OSAvKiBJbmplY3RlZEJ1bmRsZURpc2FibGVPdmVycmlkZUJ1aWx0aW5z
QmVoYXZpb3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5qZWN0
ZWRCdW5kbGVEaXNhYmxlT3ZlcnJpZGVCdWlsdGluc0JlaGF2aW9yLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJODMxNDhCMDgyMDJBQzc2ODAwQkFERTk5IC8qIG92ZXJyaWRlLWJ1
aWx0aW5zLXRlc3QuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJvdmVycmlkZS1i
dWlsdGlucy10ZXN0Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjI0NSw2
ICsyMjQ3LDcgQEAKIAkJCQk5M0U5NDNGMTFDRDNFODdFMDBBQzA4QzIgLyogVmlkZW9Db250cm9s
c01hbmFnZXIubW0gKi8sCiAJCQkJNjM1NkZCMjExRUM0RTBCQTAwNDRCRjE4IC8qIFZpc2libGVD
b250ZW50UmVjdC5tbSAqLywKIAkJCQk4Mzc3OUMzNzFGODJGRUIwMDA3Q0RBOEEgLyogVmlzaXRl
ZExpbmtTdG9yZS5tbSAqLywKKwkJCQk4MzBGMkUwQjIwOUE2QTc0MDBEMzZGRjEgLyogV2ViQ29u
dGVudFByb2Nlc3NEaWRUZXJtaW5hdGUubW0gKi8sCiAJCQkJNUM5NzNGNUIxRjU4RUYwQTAwMzU5
QzI3IC8qIFdlYkdMUG9saWN5Lm1tICovLAogCQkJCTUxNzE0RUI2MUNGOEM3QTQwMDQ3MjNDNCAv
KiBXZWJQcm9jZXNzS2lsbElEQkNsZWFudXAubW0gKi8sCiAJCQkJQzFEOEVFMjEyMDI4RThFMzAw
OEVCMTQxIC8qIFdlYlByb2Nlc3NUZXJtaW5hdGUubW0gKi8sCkBAIC0zNzY5LDYgKzM3NzIsNyBA
QAogCQkJCTgzNzc5QzM4MUY4MkZFQ0UwMDdDREE4QSAvKiBWaXNpdGVkTGlua1N0b3JlLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEYxMzlFNzcxQTQyM0E1QjAwRjU5MEY1IC8qIFdlYWtPYmpDUHRy
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMTkxQTQxMUFFNjAwNDQ3QzRDIC8qIFdlYkFy
Y2hpdmUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJODMwRjJFMEMyMDlBNkE4RTAwRDM2RkYxIC8q
IFdlYkNvbnRlbnRQcm9jZXNzRGlkVGVybWluYXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4
M0UwNEMxRDBBNjQxODAwRkVCQ0YzIC8qIFdlYkNvcmVOU1VSTFNlc3Npb24ubW0gaW4gU291cmNl
cyAqLywKIAkJCQk3Q0NFN0YxQTFBNDExQUU2MDA0NDdDNEMgLyogV2ViQ29yZVN0YXRpc3RpY3NX
aXRoTm9XZWJQcm9jZXNzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDOTczRjVDMUY1OEVGOEIw
MDM1OUMyNyAvKiBXZWJHTFBvbGljeS5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJDb250ZW50UHJvY2Vzc0RpZFRl
cm1pbmF0ZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2ViQ29u
dGVudFByb2Nlc3NEaWRUZXJtaW5hdGUubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODJlODJjZjRiZDk4NzUwZDFi
MGVkYTI0YTA2YzE3Y2U3ZjA0ZGQ4NgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2ViQ29udGVudFByb2Nlc3NEaWRUZXJtaW5hdGUubW0K
QEAgLTAsMCArMSwxNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNp
ZiBXS19BUElfRU5BQkxFRAorCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9y
dCAiVGVzdC5oIgorI2ltcG9ydCA8V2ViS2l0L1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5o
PgorI2ltcG9ydCA8V2ViS2l0L1dLTmF2aWdhdGlvblByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktp
dC9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlldy5oPgor
I2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCitzdGF0aWMgYm9vbCBkaWRDcmFzaDsKK3N0YXRp
YyBfV0tQcm9jZXNzVGVybWluYXRpb25SZWFzb24gZXhwZWN0ZWRDcmFzaFJlYXNvbjsKK3N0YXRp
YyBib29sIGZpbmlzaGVkTG9hZDsKK3N0YXRpYyBib29sIHNob3VsZExvYWRBZ2Fpbk9uQ3Jhc2g7
CitzdGF0aWMgYm9vbCByZWNlaXZlZFNjcmlwdE1lc3NhZ2U7CisKK3N0YXRpYyBOU1N0cmluZyAq
dGVzdEhUTUwgPSBAIjxzY3JpcHQ+d2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhh
bmRsZXIucG9zdE1lc3NhZ2UoJ0xPQURFRCcpOzwvc2NyaXB0PiI7CisKK0BpbnRlcmZhY2UgQ3Jh
c2hPblN0YXJ0TmF2aWdhdGlvbkRlbGVnYXRlIDogTlNPYmplY3QgPFdLTmF2aWdhdGlvbkRlbGVn
YXRlPgorQGVuZAorCitAaW1wbGVtZW50YXRpb24gQ3Jhc2hPblN0YXJ0TmF2aWdhdGlvbkRlbGVn
YXRlCisKKy0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgd2ViQ29udGVudFBy
b2Nlc3NEaWRUZXJtaW5hdGVXaXRoUmVhc29uOihfV0tQcm9jZXNzVGVybWluYXRpb25SZWFzb24p
cmVhc29uCit7CisgICAgRVhQRUNUX0ZBTFNFKGRpZENyYXNoKTsKKyAgICBkaWRDcmFzaCA9IHRy
dWU7CisgICAgRVhQRUNUX0VRKGV4cGVjdGVkQ3Jhc2hSZWFzb24sIHJlYXNvbik7CisgICAgRVhQ
RUNUX0VRKDAsIHdlYlZpZXcuX3dlYlByb2Nlc3NJZGVudGlmaWVyKTsKKworICAgIC8vIEF0dGVt
cHQgdGhlIGxvYWQgYWdhaW4uCisgICAgaWYgKHNob3VsZExvYWRBZ2Fpbk9uQ3Jhc2gpCisgICAg
ICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOnRlc3RIVE1MIGJhc2VVUkw6bmlsXTsKK30KKwor
LSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEZpbmlzaE5hdmlnYXRpb246
KFdLTmF2aWdhdGlvbiAqKW5hdmlnYXRpb24KK3sKKyAgICBmaW5pc2hlZExvYWQgPSB0cnVlOwor
fQorCitAZW5kCisKK0BpbnRlcmZhY2UgQ3Jhc2hSZWNvdmVyeVNjcmlwdE1lc3NhZ2VIYW5kbGVy
IDogTlNPYmplY3QgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+CitAZW5kCisKK0BpbXBsZW1lbnRh
dGlvbiBDcmFzaFJlY292ZXJ5U2NyaXB0TWVzc2FnZUhhbmRsZXIKKworLSAodm9pZCl1c2VyQ29u
dGVudENvbnRyb2xsZXI6KFdLVXNlckNvbnRlbnRDb250cm9sbGVyICopdXNlckNvbnRlbnRDb250
cm9sbGVyIGRpZFJlY2VpdmVTY3JpcHRNZXNzYWdlOihXS1NjcmlwdE1lc3NhZ2UgKiltZXNzYWdl
Cit7CisgICAgRVhQRUNUX1NUUkVRKFsoTlNTdHJpbmcgKilbbWVzc2FnZSBib2R5XSBVVEY4U3Ry
aW5nXSwgIkxPQURFRCIpOworICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IHRydWU7Cit9CisK
K0BlbmQKKworVEVTVChXS05hdmlnYXRpb24sIEZhaWx1cmVUb1N0YXJ0V2ViUHJvY2Vzc1JlY292
ZXJ5KQoreworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25m
aWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbW0Ny
YXNoUmVjb3ZlcnlTY3JpcHRNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOworICAgIFtbY29u
ZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVy
OmhhbmRsZXIuZ2V0KCkgbmFtZTpAInRlc3RIYW5kbGVyIl07CisKKyAgICBbY29uZmlndXJhdGlv
bi5nZXQoKS5wcm9jZXNzUG9vbCBfbWFrZU5leHRXZWJQcm9jZXNzTGF1bmNoRmFpbEZvclRlc3Rp
bmddOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZp
Z3VyYXRpb24uZ2V0KCldKTsKKworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbQ3Jhc2hP
blN0YXJ0TmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXcgc2V0
TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKworICAgIGZpbmlzaGVkTG9hZCA9
IGZhbHNlOworICAgIGRpZENyYXNoID0gZmFsc2U7CisgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdl
ID0gZmFsc2U7CisgICAgZXhwZWN0ZWRDcmFzaFJlYXNvbiA9IF9XS1Byb2Nlc3NUZXJtaW5hdGlv
blJlYXNvbkNyYXNoOworICAgIHNob3VsZExvYWRBZ2Fpbk9uQ3Jhc2ggPSB0cnVlOworCisgICAg
W3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6dGVzdEhUTUwgYmFzZVVSTDpuaWxdOworICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmZmluaXNoZWRMb2FkKTsKKworICAgIEVYUEVDVF9UUlVFKGRp
ZENyYXNoKTsKKyAgICBFWFBFQ1RfVFJVRSghIXdlYlZpZXcuZ2V0KCkuX3dlYlByb2Nlc3NJZGVu
dGlmaWVyKTsKKyAgICBFWFBFQ1RfVFJVRShyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOworfQorCitU
RVNUKFdLTmF2aWdhdGlvbiwgRmFpbHVyZVRvU3RhcnRXZWJQcm9jZXNzQWZ0ZXJDcmFzaFJlY292
ZXJ5KQoreworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25m
aWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbW0Ny
YXNoUmVjb3ZlcnlTY3JpcHRNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOworICAgIFtbY29u
ZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVy
OmhhbmRsZXIuZ2V0KCkgbmFtZTpAInRlc3RIYW5kbGVyIl07CisKKyAgICBhdXRvIHdlYlZpZXcg
PSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwg
MCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworCisgICAg
YXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tDcmFzaE9uU3RhcnROYXZpZ2F0aW9uRGVsZWdhdGUg
YWxsb2NdIGluaXRdKTsKKyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdh
dGUuZ2V0KCldOworCisgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7CisgICAgZmlu
aXNoZWRMb2FkID0gZmFsc2U7CisgICAgZGlkQ3Jhc2ggPSBmYWxzZTsKKworICAgIFt3ZWJWaWV3
IGxvYWRIVE1MU3RyaW5nOnRlc3RIVE1MIGJhc2VVUkw6bmlsXTsKKyAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmZpbmlzaGVkTG9hZCk7CisKKyAgICBFWFBFQ1RfRkFMU0UoZGlkQ3Jhc2gp
OworICAgIEVYUEVDVF9UUlVFKCEhd2ViVmlldy5nZXQoKS5fd2ViUHJvY2Vzc0lkZW50aWZpZXIp
OworICAgIEVYUEVDVF9UUlVFKHJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7CisKKyAgICByZWNlaXZl
ZFNjcmlwdE1lc3NhZ2UgPSBmYWxzZTsKKyAgICBzaG91bGRMb2FkQWdhaW5PbkNyYXNoID0gZmFs
c2U7CisgICAgZXhwZWN0ZWRDcmFzaFJlYXNvbiA9IF9XS1Byb2Nlc3NUZXJtaW5hdGlvblJlYXNv
blJlcXVlc3RlZEJ5Q2xpZW50OworICAgIFt3ZWJWaWV3IF9raWxsV2ViQ29udGVudFByb2Nlc3NB
bmRSZXNldFN0YXRlXTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZGlkQ3Jhc2gp
OworICAgIEVYUEVDVF9UUlVFKCF3ZWJWaWV3LmdldCgpLl93ZWJQcm9jZXNzSWRlbnRpZmllcik7
CisgICAgRVhQRUNUX0ZBTFNFKHJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7CisKKyAgICBleHBlY3Rl
ZENyYXNoUmVhc29uID0gX1dLUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uQ3Jhc2g7CisgICAgZGlk
Q3Jhc2ggPSBmYWxzZTsKKyAgICBmaW5pc2hlZExvYWQgPSBmYWxzZTsKKyAgICByZWNlaXZlZFNj
cmlwdE1lc3NhZ2UgPSBmYWxzZTsKKyAgICBzaG91bGRMb2FkQWdhaW5PbkNyYXNoID0gdHJ1ZTsK
KworICAgIFtjb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NQb29sIF9tYWtlTmV4dFdlYlByb2Nl
c3NMYXVuY2hGYWlsRm9yVGVzdGluZ107CisgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6dGVz
dEhUTUwgYmFzZVVSTDpuaWxdOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZmaW5p
c2hlZExvYWQpOworCisgICAgRVhQRUNUX1RSVUUoZGlkQ3Jhc2gpOworICAgIEVYUEVDVF9UUlVF
KCEhd2ViVmlldy5nZXQoKS5fd2ViUHJvY2Vzc0lkZW50aWZpZXIpOworICAgIEVYUEVDVF9UUlVF
KHJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7Cit9CisKKyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>