<?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>144501</bug_id>
          
          <creation_ts>2015-05-01 14:45:26 -0700</creation_ts>
          <short_desc>Back/forward navigation to an error page in Safari breaks the back-forward list</short_desc>
          <delta_ts>2015-05-01 16:48:31 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (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>mitz</reporter>
          <assigned_to>mitz</assigned_to>
          <cc>andersca</cc>
    
    <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>japhet</cc>
    
    <cc>sam</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1090886</commentid>
    <comment_count>0</comment_count>
    <who name="">mitz</who>
    <bug_when>2015-05-01 14:45:26 -0700</bug_when>
    <thetext>&lt;rdar://problem/8636045&gt;

To reproduce:

1. Make a new Safari empty window
2. Type a bogus address in the Smart Search Field (e.g. &quot;http://bad.example&quot;) and hit Return to get a page-load error page
3. Type a real address in the Smart Search Field (e.g. &quot;http://apple.com&quot;) and hit Return to visit the real page
4. click Back to go back to the error page

At this point the Back button should be disabled, and the Forward button should be enabled. But instead, the Back button is enabled, and the Forward button is disabled. Clicking and holding the Back button shows an extra “Failed to open page” item in the Back list. Clicking the Back button again doesn’t anything.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090888</commentid>
    <comment_count>1</comment_count>
    <who name="">mitz</who>
    <bug_when>2015-05-01 14:46:57 -0700</bug_when>
    <thetext>The mechanism that is supposed to prevent this is FrameLoader::shouldReloadToHandleUnreachableURL. The special handling only kicks in if the error page is being loaded synchronously from beneath dispatchDidFailProvisionalLoad. That is not the case when using WebKit2, because dispatchDidFailProvisionalLoad returns immediately after sending a message to the UI process, and the latter later calls back to load the error page.

I am going to fix this by sending the necessary context along to the UI process and restoring it if and when we load the error page from within the UI’s process handling of the error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090950</commentid>
    <comment_count>2</comment_count>
      <attachid>252188</attachid>
    <who name="">mitz</who>
    <bug_when>2015-05-01 16:16:21 -0700</bug_when>
    <thetext>Created attachment 252188
Handle error page loads in the context of the provisional load error that triggered them</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090977</commentid>
    <comment_count>3</comment_count>
    <who name="">mitz</who>
    <bug_when>2015-05-01 16:48:31 -0700</bug_when>
    <thetext>Fixed in &lt;http://trac.webkit.org/r183698&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252188</attachid>
            <date>2015-05-01 16:16:21 -0700</date>
            <delta_ts>2015-05-01 16:29:58 -0700</delta_ts>
            <desc>Handle error page loads in the context of the provisional load error that triggered them</desc>
            <filename>bug-144501-20150501161509.patch</filename>
            <type>text/plain</type>
            <size>27023</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MzY5NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDE1LTA1LTAxICBEYW4gQmVy
bnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViQ29yZSBwYXJ0IG9mIDxyZGFy
Oi8vcHJvYmxlbS84NjM2MDQ1PiBCYWNrL2ZvcndhcmQgbmF2aWdhdGlvbiB0byBhbiBlcnJvciBw
YWdlIGluIFNhZmFyaSBicmVha3MgdGhlIGJhY2stZm9yd2FyZCBsaXN0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ1MDEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDJDb2NvYS9Mb2FkQWx0ZXJuYXRlSFRNTFN0cmluZy5tbQorCisgICAgICAgIE5v
cm1hbGx5LCBsb2FkaW5nIHN1YnN0aXR1dGUgZGF0YSAoc3VjaCBhcyBhbiBlcnJvciBwYWdlKSBj
cmVhdGVzIGEgbmV3IGJhY2stZm9yd2FyZCBsaXN0CisgICAgICAgIGl0ZW0uIEZyYW1lTG9hZGVy
IGhhcyBhIG1lY2hhbmlzbSB0aGF0IGRldGVjdHMgd2hlbiBhIHN1YnN0aXR1dGUgZGF0YSBsb2Fk
IG9jY3VycyBkdXJpbmcKKyAgICAgICAgaGFuZGxpbmcgb2YgYSBwcm92aXNpb25hbCBsb2FkIGVy
cm9yIGFuZCBwcmV2ZW50cyB0aGUgY3JlYXRpb24gb2YgYSBuZXcgYmFjay1mb3J3YXJkcyBsaXN0
CisgICAgICAgIGl0ZW0gaW4gdGhhdCBjYXNlIGlmIHRoZSB1bnJlYWNoYWJsZSBVUkwgaXMgdGhl
IHNhbWUgYXMgdGhlIGZhaWxpbmcgcHJvdmlzaW9uYWwgVVJMLiBUaGlzCisgICAgICAgIG1lY2hh
bmlzbSB3YXMgYnJva2VuIGluIFdlYktpdDIsIHdoZXJlIGhhbmRsaW5nIHRoZSBwcm92aXNpb25h
bCBsb2FkIGVycm9yIGlzIGFzeW5jaHJvbm91cy4KKworICAgICAgICBUaGUgZml4IGlzIHRvIGNh
cHR1cmUgc29tZSBzdGF0ZSAobmFtZWx5LCB0aGUgZmFpbGluZyBwcm92aXNpb25hbCBVUkwpIHdo
ZW4gZGlzcGF0Y2hpbmcgdGhlCisgICAgICAgIGxvYWQgZXJyb3IgYW5kIGFsbG93IGl0IHRvIGJl
IHJlc3RvcmVkIHdoZW4gbG9hZGluZyB0aGUgc3Vic3RpdHV0ZSBkYXRhLgorCisgICAgICAgICog
bG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpG
cmFtZUxvYWRlcik6IFJlbW92ZWQgaW5pdGlhbGl6YXRpb24gb2YKKyAgICAgICAgbV9kZWxlZ2F0
ZUlzSGFuZGxpbmdQcm92aXNpb25hbExvYWRFcnJvci4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyOjpzaG91bGRSZWxvYWRUb0hhbmRsZVVucmVhY2hhYmxlVVJMKTogSW5zdGVhZCBvZiBj
aGVja2luZworICAgICAgICBtX2RlbGVnYXRlSXNIYW5kbGluZ1Byb3Zpc2lvbmFsTG9hZEVycm9y
IGFuZCBpZiB0cnVlIHVzaW5nIHRoZSBwcm92aXNpb25hbCBkb2N1bWVudCBsb2FkZXLigJlzCisg
ICAgICAgIFVSTCwgY2hlY2sgbV9wcm92aXNpb25hbExvYWRFcnJvckJlaW5nSGFuZGxlZFVSTC4K
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjaGVja0xvYWRDb21wbGV0ZUZvclRoaXNG
cmFtZSk6IEluc3RlYWQgb2YgY2hlY2tpbmcgYW5kIHNldHRpbmcKKyAgICAgICAgbV9kZWxlZ2F0
ZUlzSGFuZGxpbmdQcm92aXNpb25hbExvYWRFcnJvciwgdXNlIG1fcHJvdmlzaW9uYWxMb2FkRXJy
b3JCZWluZ0hhbmRsZWRVUkwuCisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6cHJvdmlzaW9uYWxMb2FkRXJyb3JCZWluZ0hhbmRs
ZWRVUkwpOiBBZGRlZCB0aGlzIGdldHRlci4gVGhlIGNsaWVudAorICAgICAgICBjYW4gY2FsbCB0
aGlzIGZyb20gaXRzIG92ZXJyaWRlIG9mIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZCBh
bmQgc3RvcmUgdGhlIHJlc3VsdC4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzZXRQ
cm92aXNpb25hbExvYWRFcnJvckJlaW5nSGFuZGxlZFVSTCk6IEFkZGVkIHRoaXMgc2V0dGVyLiBU
aGUKKyAgICAgICAgY2xpZW50IGNhbiBjYWxsIHRoaXMgcHJpb3IgdG8gbG9hZGluZyBzdWJzdGl0
dXRlIGRhdGEgaWYgaXTigJlzIGRvbmUgYXMgcGFydCBvZiBoYW5kbGluZyBhCisgICAgICAgIHBy
ZXZpb3VzbHktZGlzcGF0Y2hlZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkLgorCiAyMDE1LTA1LTAx
ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJl
dmlld2VkLCByb2xsaW5nIG91dCByMTgzNjg3LgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuY3BwCShyZXZpc2lvbiAxODM2NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjAsNyArMjIwLDYgQEAgRnJhbWVM
b2FkZXI6OkZyYW1lTG9hZGVyKEZyYW1lJiBmcmFtZSwgRgogICAgICwgbV9taXhlZENvbnRlbnRD
aGVja2VyKGZyYW1lKQogICAgICwgbV9zdGF0ZShGcmFtZVN0YXRlUHJvdmlzaW9uYWwpCiAgICAg
LCBtX2xvYWRUeXBlKEZyYW1lTG9hZFR5cGU6OlN0YW5kYXJkKQotICAgICwgbV9kZWxlZ2F0ZUlz
SGFuZGxpbmdQcm92aXNpb25hbExvYWRFcnJvcihmYWxzZSkKICAgICAsIG1fcXVpY2tSZWRpcmVj
dENvbWluZyhmYWxzZSkKICAgICAsIG1fc2VudFJlZGlyZWN0Tm90aWZpY2F0aW9uKGZhbHNlKQog
ICAgICwgbV9pblN0b3BBbGxMb2FkZXJzKGZhbHNlKQpAQCAtMTUxMCwxMyArMTUwOSwxMCBAQCBi
b29sIEZyYW1lTG9hZGVyOjpzaG91bGRSZWxvYWRUb0hhbmRsZVVuCiAgICAgLy8gY2FzZSBoYW5k
bGVzIHdlbGwtZm9ybWVkIFVSTHMgdGhhdCBjYW4ndCBiZSBsb2FkZWQsIGFuZCB0aGUgbGF0dGVy
CiAgICAgLy8gY2FzZSBoYW5kbGVzIG1hbGZvcm1lZCBVUkxzIGFuZCB1bmtub3duIHNjaGVtZXMu
IExvYWRpbmcgYWx0ZXJuYXRlIGNvbnRlbnQKICAgICAvLyBhdCBvdGhlciB0aW1lcyBiZWhhdmVz
IGxpa2UgYSBzdGFuZGFyZCBsb2FkLgotICAgIERvY3VtZW50TG9hZGVyKiBjb21wYXJlRG9jdW1l
bnRMb2FkZXIgPSAwOwogICAgIGlmIChwb2xpY3lDaGVja2VyKCkuZGVsZWdhdGVJc0RlY2lkaW5n
TmF2aWdhdGlvblBvbGljeSgpIHx8IHBvbGljeUNoZWNrZXIoKS5kZWxlZ2F0ZUlzSGFuZGxpbmdV
bmltcGxlbWVudGFibGVQb2xpY3koKSkKLSAgICAgICAgY29tcGFyZURvY3VtZW50TG9hZGVyID0g
bV9wb2xpY3lEb2N1bWVudExvYWRlci5nZXQoKTsKLSAgICBlbHNlIGlmIChtX2RlbGVnYXRlSXNI
YW5kbGluZ1Byb3Zpc2lvbmFsTG9hZEVycm9yKQotICAgICAgICBjb21wYXJlRG9jdW1lbnRMb2Fk
ZXIgPSBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIuZ2V0KCk7CisgICAgICAgIHJldHVybiBt
X3BvbGljeURvY3VtZW50TG9hZGVyICYmIHVucmVhY2hhYmxlVVJMID09IG1fcG9saWN5RG9jdW1l
bnRMb2FkZXItPnJlcXVlc3QoKS51cmwoKTsKIAotICAgIHJldHVybiBjb21wYXJlRG9jdW1lbnRM
b2FkZXIgJiYgdW5yZWFjaGFibGVVUkwgPT0gY29tcGFyZURvY3VtZW50TG9hZGVyLT5yZXF1ZXN0
KCkudXJsKCk7CisgICAgcmV0dXJuIHVucmVhY2hhYmxlVVJMID09IG1fcHJvdmlzaW9uYWxMb2Fk
RXJyb3JCZWluZ0hhbmRsZWRVUkw7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OnJlbG9hZFdpdGhP
dmVycmlkZUVuY29kaW5nKGNvbnN0IFN0cmluZyYgZW5jb2RpbmcpCkBAIC0yMTcwLDcgKzIxNjYs
NyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjaGVja0xvYWRDb21wbGV0ZUZvclRoCiAKICAgICBzd2l0
Y2ggKG1fc3RhdGUpIHsKICAgICAgICAgY2FzZSBGcmFtZVN0YXRlUHJvdmlzaW9uYWw6IHsKLSAg
ICAgICAgICAgIGlmIChtX2RlbGVnYXRlSXNIYW5kbGluZ1Byb3Zpc2lvbmFsTG9hZEVycm9yKQor
ICAgICAgICAgICAgaWYgKCFtX3Byb3Zpc2lvbmFsTG9hZEVycm9yQmVpbmdIYW5kbGVkVVJMLmlz
RW1wdHkoKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAgIFJlZlB0cjxE
b2N1bWVudExvYWRlcj4gcGRsID0gbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyOwpAQCAtMjE5
Miw5ICsyMTg4LDkgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y2hlY2tMb2FkQ29tcGxldGVGb3JUaAog
ICAgICAgICAgICAgLy8gT25seSByZXNldCBpZiB3ZSBhcmVuJ3QgYWxyZWFkeSBnb2luZyB0byBh
IG5ldyBwcm92aXNpb25hbCBpdGVtLgogICAgICAgICAgICAgYm9vbCBzaG91bGRSZXNldCA9ICFo
aXN0b3J5KCkucHJvdmlzaW9uYWxJdGVtKCk7CiAgICAgICAgICAgICBpZiAoIXBkbC0+aXNMb2Fk
aW5nSW5BUElTZW5zZSgpIHx8IHBkbC0+aXNTdG9wcGluZygpKSB7Ci0gICAgICAgICAgICAgICAg
bV9kZWxlZ2F0ZUlzSGFuZGxpbmdQcm92aXNpb25hbExvYWRFcnJvciA9IHRydWU7CisgICAgICAg
ICAgICAgICAgbV9wcm92aXNpb25hbExvYWRFcnJvckJlaW5nSGFuZGxlZFVSTCA9IG1fcHJvdmlz
aW9uYWxEb2N1bWVudExvYWRlci0+dXJsKCk7CiAgICAgICAgICAgICAgICAgbV9jbGllbnQuZGlz
cGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGVycm9yKTsKLSAgICAgICAgICAgICAgICBtX2Rl
bGVnYXRlSXNIYW5kbGluZ1Byb3Zpc2lvbmFsTG9hZEVycm9yID0gZmFsc2U7CisgICAgICAgICAg
ICAgICAgbV9wcm92aXNpb25hbExvYWRFcnJvckJlaW5nSGFuZGxlZFVSTCA9IHsgfTsKIAogICAg
ICAgICAgICAgICAgIEFTU0VSVCghcGRsLT5pc0xvYWRpbmcoKSk7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5oCShyZXZpc2lvbiAxODM2NzIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjkxLDYgKzI5MSw5IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldE92ZXJyaWRlUmVzb3VyY2VMb2FkUHJpb3JpdHlGb3JUZXN0
aW5nKFJlc291cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5KSB7IG1fb3ZlcnJpZGVSZXNvdXJjZUxv
YWRQcmlvcml0eUZvclRlc3RpbmcgPSBwcmlvcml0eTsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgY2xlYXJUZXN0aW5nT3ZlcnJpZGVzKCk7CiAKKyAgICBjb25zdCBVUkwmIHByb3Zpc2lvbmFs
TG9hZEVycm9yQmVpbmdIYW5kbGVkVVJMKCkgY29uc3QgeyByZXR1cm4gbV9wcm92aXNpb25hbExv
YWRFcnJvckJlaW5nSGFuZGxlZFVSTDsgfQorICAgIHZvaWQgc2V0UHJvdmlzaW9uYWxMb2FkRXJy
b3JCZWluZ0hhbmRsZWRVUkwoY29uc3QgVVJMJiB1cmwpIHsgbV9wcm92aXNpb25hbExvYWRFcnJv
ckJlaW5nSGFuZGxlZFVSTCA9IHVybDsgfQorCiBwcml2YXRlOgogICAgIGVudW0gRm9ybVN1Ym1p
c3Npb25DYWNoZUxvYWRQb2xpY3kgewogICAgICAgICBNYXlBdHRlbXB0Q2FjaGVPbmx5TG9hZEZv
ckZvcm1TdWJtaXNzaW9uSXRlbSwKQEAgLTQwMiw3ICs0MDUsNyBAQCBwcml2YXRlOgogICAgIFJl
ZlB0cjxEb2N1bWVudExvYWRlcj4gbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyOwogICAgIFJl
ZlB0cjxEb2N1bWVudExvYWRlcj4gbV9wb2xpY3lEb2N1bWVudExvYWRlcjsKIAotICAgIGJvb2wg
bV9kZWxlZ2F0ZUlzSGFuZGxpbmdQcm92aXNpb25hbExvYWRFcnJvcjsKKyAgICBVUkwgbV9wcm92
aXNpb25hbExvYWRFcnJvckJlaW5nSGFuZGxlZFVSTDsKIAogICAgIGJvb2wgbV9xdWlja1JlZGly
ZWN0Q29taW5nOwogICAgIGJvb2wgbV9zZW50UmVkaXJlY3ROb3RpZmljYXRpb247CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxODM2OTUpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwzNCBAQAorMjAxNS0wNS0wMSAgRGFuIEJlcm5zdGVpbiAg
PG1pdHpAYXBwbGUuY29tPgorCisgICAgICAgIFdlYktpdDIgcGFydCBvZiA8cmRhcjovL3Byb2Js
ZW0vODYzNjA0NT4gQmFjay9mb3J3YXJkIG5hdmlnYXRpb24gdG8gYW4gZXJyb3IgcGFnZSBpbiBT
YWZhcmkgYnJlYWtzIHRoZSBiYWNrLWZvcndhcmQgbGlzdAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0NTAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkQWx0ZXJuYXRlSFRNTFN0cmluZyk6
IElmIHRoaXMgaXMgY2FsbGVkIGR1cmluZworICAgICAgICBkaWRGYWlsUHJvdmlzaW9uYWxMb2Fk
Rm9yRnJhbWUsIHNlbmQgYmFjayB0aGUgcHJvdmlzaW9uYWwgVVJMIGNhcHR1cmVkIGF0IHRoZSB0
aW1lIG9mCisgICAgICAgIGZhaWx1cmUuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKTogR2V0IHRoZSBwcm92aXNpb2luYWwgVVJM
IGFuZCBrZWVwCisgICAgICAgIGl0IGluIG5ldyBtZW1iZXIgdmFyaWFibGUgbV9mYWlsaW5nUHJv
dmlzaW9uYWxMb2FkVVJMIGZvciB0aGUgZHVyYXRpb24gb2YgdGhlIGNsaWVudOKAmXMKKyAgICAg
ICAgaGFuZGxpbmcgb2YgdGhpcyBtZXNzYWdlLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46
IEFkZGVkIHByb3Zpc2lvbmFsVVJMIHBhcmFtZXRlciB0bworICAgICAgICBEaWRGYWlsUHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWUuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZCk6IFNlbmQgdGhlIFVSTCBm
b3IgdGhpcyBlcnJvcgorICAgICAgICB0byB0aGUgVUkgcHJvY2Vzcy4KKworICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
bG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcpOiBUZW1wb3JhcmlseSByZXN0b3JlIHRoZSBsb2FkZXLi
gJlzIHN0YXRlIHRvCisgICAgICAgIHJlZmxlY3QgdGhlIHByb3Zpc2lvbmFsIGxvYWQgZXJyb3Ig
YmVpbmcgaGFuZGxlZC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46IEFkZGVk
IHByb3Zpc2lvbmFsTG9hZEVycm9yVVJMIHBhcmFtZXRlciB0bworICAgICAgICBMb2FkQWx0ZXJu
YXRlSFRNTFN0cmluZy4KKwogMjAxNS0wNS0wMSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgQWRkIEFQSSB0byBkaXNhYmxlIG1ldGEgcmVmcmVzaGVzLgpJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDE4
MzY3MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC05NTgsNyArOTU4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRBbHRl
cm5hdGVIVE1MU3RyaQogCiAgICAgbV9wcm9jZXNzLT5hc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJM
KGJhc2VVUkwpOwogICAgIG1fcHJvY2Vzcy0+YXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTCh1bnJl
YWNoYWJsZVVSTCk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2Fk
QWx0ZXJuYXRlSFRNTFN0cmluZyhodG1sU3RyaW5nLCBiYXNlVVJMLCB1bnJlYWNoYWJsZVVSTCwg
VXNlckRhdGEocHJvY2VzcygpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEpLmdl
dCgpKSksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkxvYWRBbHRlcm5hdGVIVE1MU3RyaW5nKGh0bWxTdHJpbmcsIGJhc2VVUkwsIHVucmVhY2hhYmxl
VVJMLCBtX2ZhaWxpbmdQcm92aXNpb25hbExvYWRVUkwsIFVzZXJEYXRhKHByb2Nlc3MoKS50cmFu
c2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhKS5nZXQoKSkpLCBtX3BhZ2VJRCk7CiAgICAg
bV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCktPnN0YXJ0KCk7CiB9CiAKQEAgLTI4MjEs
NyArMjgyMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlU2VydmVyUmVkaXIKICAg
ICAgICAgbV9sb2FkZXJDbGllbnQtPmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lv
bmFsTG9hZEZvckZyYW1lKCp0aGlzLCAqZnJhbWUsIG5hdmlnYXRpb24uZ2V0KCksIG1fcHJvY2Vz
cy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwog
fQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgUmVzb3VyY2VFcnJv
ciYgZXJyb3IsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIHByb3Zpc2lvbmFsVVJMLCBjb25zdCBSZXNvdXJj
ZUVycm9yJiBlcnJvciwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewogICAgIFdlYkZyYW1l
UHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdF
X0NIRUNLKGZyYW1lKTsKQEAgLTI4MzksNiArMjgzOSwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
ZGlkRmFpbFByb3Zpc2lvbmFsTG9hCiAgICAgZnJhbWUtPmRpZEZhaWxQcm92aXNpb25hbExvYWQo
KTsKIAogICAgIG1fcGFnZUxvYWRTdGF0ZS5jb21taXRDaGFuZ2VzKCk7CisKKyAgICBBU1NFUlQo
IW1fZmFpbGluZ1Byb3Zpc2lvbmFsTG9hZFVSTCk7CisgICAgbV9mYWlsaW5nUHJvdmlzaW9uYWxM
b2FkVVJMID0gcHJvdmlzaW9uYWxVUkw7CisKICAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KSB7
CiAgICAgICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkKICAgICAgICAgICAgIG1fbmF2aWdh
dGlvbkNsaWVudC0+ZGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbldpdGhFcnJvcigqdGhpcywg
KmZyYW1lLCBuYXZpZ2F0aW9uLmdldCgpLCBlcnJvciwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5k
bGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CkBAIC0yODQ4LDYgKzI4NTIs
OCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hCiAgICAgICAgIH0K
ICAgICB9IGVsc2UKICAgICAgICAgbV9sb2FkZXJDbGllbnQtPmRpZEZhaWxQcm92aXNpb25hbExv
YWRXaXRoRXJyb3JGb3JGcmFtZSgqdGhpcywgKmZyYW1lLCBuYXZpZ2F0aW9uLmdldCgpLCBlcnJv
ciwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgp
KS5nZXQoKSk7CisKKyAgICBtX2ZhaWxpbmdQcm92aXNpb25hbExvYWRVUkwgPSB7IH07CiB9CiAK
IHZvaWQgV2ViUGFnZVByb3h5OjpjbGVhckxvYWREZXBlbmRlbnRDYWxsYmFja3MoKQpJbmRleDog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMTgzNjcyKQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDc4LDcgKzEwNzgsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkaWRTdGFydFByb3Zp
c2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdW5yZWFjaGFibGVVUkwsIGNvbnN0
IFVzZXJEYXRhJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNp
b25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IGNvbnN0IFN0cmluZyYsIGNvbnN0IFVzZXJEYXRhJik7Ci0gICAgdm9pZCBkaWRGYWlsUHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklE
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgVXNlckRhdGEmKTsKKyAgICB2
b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgcHJvdmlzaW9uYWxVUkwsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGlkQ29t
bWl0TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRl
ciwgdWludDMyX3QgZnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZv
JiwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZy
YW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgVXNlckRh
dGEmKTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFVzZXJEYXRhJik7CkBAIC0xNDUwLDYgKzE0NTAs
NyBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJQYWdlSW5qZWN0ZWRCdW5kbGVD
bGllbnQ+IG1faW5qZWN0ZWRCdW5kbGVDbGllbnQ7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
TmF2aWdhdGlvblN0YXRlPiBtX25hdmlnYXRpb25TdGF0ZTsKKyAgICBTdHJpbmcgbV9mYWlsaW5n
UHJvdmlzaW9uYWxMb2FkVVJMOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPERyYXdpbmdBcmVhUHJv
eHk+IG1fZHJhd2luZ0FyZWE7CiAjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgko
cmV2aXNpb24gMTgzNjcyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMTI5LDcgKzEyOSw3IEBAIG1lc3NhZ2Vz
IC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgIyBGcmFtZSBsb2FkIG1lc3NhZ2VzCiAgICAgRGlkU3Rh
cnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZp
Z2F0aW9uSUQsIFN0cmluZyB1cmwsIFN0cmluZyB1bnJlYWNoYWJsZVVSTCwgV2ViS2l0OjpVc2Vy
RGF0YSB1c2VyRGF0YSkKICAgICBEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25h
bExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFN0
cmluZyB1cmwsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCi0gICAgRGlkRmFpbFByb3Zpc2lv
bmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvciwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkK
KyAgICBEaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWlu
dDY0X3QgbmF2aWdhdGlvbklELCBTdHJpbmcgcHJvdmlzaW9uYWxVUkwsIFdlYkNvcmU6OlJlc291
cmNlRXJyb3IgZXJyb3IsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgRGlkQ29tbWl0
TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgU3Ry
aW5nIG1pbWVUeXBlLCBib29sIGhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWludDMyX3QgbG9h
ZFR5cGUsIFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyBjZXJ0aWZpY2F0ZUluZm8sIFdlYktpdDo6
VXNlckRhdGEgdXNlckRhdGEpCiAgICAgRGlkRmFpbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFt
ZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3Is
IFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgRGlkRmluaXNoRG9jdW1lbnRMb2FkRm9y
RnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJLaXQ6OlVz
ZXJEYXRhIHVzZXJEYXRhKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJ
KHJldmlzaW9uIDE4MzY3MikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00ODMsNyAr
NDgzLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYQogICAgICAg
ICBuYXZpZ2F0aW9uSUQgPSBzdGF0aWNfY2FzdDxXZWJEb2N1bWVudExvYWRlcio+KGRvY3VtZW50
TG9hZGVyKS0+bmF2aWdhdGlvbklEKCk7CiAKICAgICAvLyBOb3RpZnkgdGhlIFVJUHJvY2Vzcy4K
LSAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEZhaWxQcm92aXNp
b25hbExvYWRGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIG5hdmlnYXRpb25JRCwgZXJyb3Is
IFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRs
ZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkpOworICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6RGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKG1fZnJhbWUtPmZy
YW1lSUQoKSwgbmF2aWdhdGlvbklELCBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkucHJv
dmlzaW9uYWxMb2FkRXJyb3JCZWluZ0hhbmRsZWRVUkwoKSwgZXJyb3IsIFVzZXJEYXRhKFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0
KCkpLmdldCgpKSkpOwogCiAgICAgLy8gSWYgd2UgaGF2ZSBhIGxvYWQgbGlzdGVuZXIsIG5vdGlm
eSBpdC4KICAgICBpZiAoV2ViRnJhbWU6OkxvYWRMaXN0ZW5lciogbG9hZExpc3RlbmVyID0gbV9m
cmFtZS0+bG9hZExpc3RlbmVyKCkpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAxODM2NzIpCisrKyBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNjgs
MTEgKzEwNjgsMTQgQEAgdm9pZCBXZWJQYWdlOjpsb2FkSFRNTFN0cmluZyh1aW50NjRfdCBuYQog
ICAgIGxvYWRTdHJpbmcobmF2aWdhdGlvbklELCBodG1sU3RyaW5nLCBBU0NJSUxpdGVyYWwoInRl
eHQvaHRtbCIpLCBiYXNlVVJMLCBVUkwoKSwgdXNlckRhdGEpOwogfQogCi12b2lkIFdlYlBhZ2U6
OmxvYWRBbHRlcm5hdGVIVE1MU3RyaW5nKGNvbnN0IFN0cmluZyYgaHRtbFN0cmluZywgY29uc3Qg
U3RyaW5nJiBiYXNlVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIHVucmVhY2hhYmxlVVJMU3RyaW5n
LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCit2b2lkIFdlYlBhZ2U6OmxvYWRBbHRlcm5hdGVI
VE1MU3RyaW5nKGNvbnN0IFN0cmluZyYgaHRtbFN0cmluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJM
U3RyaW5nLCBjb25zdCBTdHJpbmcmIHVucmVhY2hhYmxlVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcm
IHByb3Zpc2lvbmFsTG9hZEVycm9yVVJMU3RyaW5nLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEp
CiB7CiAgICAgVVJMIGJhc2VVUkwgPSBiYXNlVVJMU3RyaW5nLmlzRW1wdHkoKSA/IGJsYW5rVVJM
KCkgOiBVUkwoVVJMKCksIGJhc2VVUkxTdHJpbmcpOwogICAgIFVSTCB1bnJlYWNoYWJsZVVSTCA9
IHVucmVhY2hhYmxlVVJMU3RyaW5nLmlzRW1wdHkoKSA/IFVSTCgpIDogVVJMKFVSTCgpLCB1bnJl
YWNoYWJsZVVSTFN0cmluZyk7CisgICAgVVJMIHByb3Zpc2lvbmFsTG9hZEVycm9yVVJMID0gcHJv
dmlzaW9uYWxMb2FkRXJyb3JVUkxTdHJpbmcuaXNFbXB0eSgpID8gVVJMKCkgOiBVUkwoVVJMKCks
IHByb3Zpc2lvbmFsTG9hZEVycm9yVVJMU3RyaW5nKTsKKyAgICBtX21haW5GcmFtZS0+Y29yZUZy
YW1lKCktPmxvYWRlcigpLnNldFByb3Zpc2lvbmFsTG9hZEVycm9yQmVpbmdIYW5kbGVkVVJMKHBy
b3Zpc2lvbmFsTG9hZEVycm9yVVJMKTsKICAgICBsb2FkU3RyaW5nKDAsIGh0bWxTdHJpbmcsIEFT
Q0lJTGl0ZXJhbCgidGV4dC9odG1sIiksIGJhc2VVUkwsIHVucmVhY2hhYmxlVVJMLCB1c2VyRGF0
YSk7CisgICAgbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5zZXRQcm92aXNpb25h
bExvYWRFcnJvckJlaW5nSGFuZGxlZFVSTCh7IH0pOwogfQogCiB2b2lkIFdlYlBhZ2U6OmxvYWRQ
bGFpblRleHRTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0IFVzZXJEYXRhJiB1c2Vy
RGF0YSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aAkocmV2aXNpb24gMTgzNjcyKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtOTMyLDcgKzkzMiw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBsb2FkUmVxdWVzdCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYsIGNvbnN0
IFVzZXJEYXRhJik7CiAgICAgdm9pZCBsb2FkRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
LCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSwgY29u
c3QgU3RyaW5nJiBiYXNlVVJMLCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgbG9hZEhUTUxT
dHJpbmcodWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIGh0bWxTdHJpbmcsIGNv
bnN0IFN0cmluZyYgYmFzZVVSTCwgY29uc3QgVXNlckRhdGEmKTsKLSAgICB2b2lkIGxvYWRBbHRl
cm5hdGVIVE1MU3RyaW5nKGNvbnN0IFN0cmluZyYgaHRtbFN0cmluZywgY29uc3QgU3RyaW5nJiBi
YXNlVVJMLCBjb25zdCBTdHJpbmcmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBVc2VyRGF0YSYpOwor
ICAgIHZvaWQgbG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcoY29uc3QgU3RyaW5nJiBodG1sU3RyaW5n
LCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgdW5yZWFjaGFibGVVUkwsIGNv
bnN0IFN0cmluZyYgcHJvdmlzaW9uYWxMb2FkRXJyb3JVUkwsIGNvbnN0IFVzZXJEYXRhJik7CiAg
ICAgdm9pZCBsb2FkUGxhaW5UZXh0U3RyaW5nKGNvbnN0IFN0cmluZyYsIGNvbnN0IFVzZXJEYXRh
Jik7CiAgICAgdm9pZCBsb2FkV2ViQXJjaGl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIG5hdmlnYXRlVG9VUkxXaXRoU2ltdWxhdGVk
Q2xpY2soY29uc3QgU3RyaW5nJiB1cmwsIFdlYkNvcmU6OkludFBvaW50IGRvY3VtZW50UG9pbnQs
IFdlYkNvcmU6OkludFBvaW50IHNjcmVlblBvaW50KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCShyZXZpc2lv
biAxODM2NzIpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMTI4LDcgKzEyOCw3IEBAIG1lc3NhZ2VzIC0+
IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIExvYWRSZXF1ZXN0KHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFdlYktpdDo6U2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIFdlYktpdDo6VXNlckRh
dGEgdXNlckRhdGEpCiAgICAgTG9hZERhdGEoSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEsIFN0cmlu
ZyBNSU1FVHlwZSwgU3RyaW5nIGVuY29kaW5nLCBTdHJpbmcgYmFzZVVSTCwgV2ViS2l0OjpVc2Vy
RGF0YSB1c2VyRGF0YSkKICAgICBMb2FkSFRNTFN0cmluZyh1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IFN0cmluZyBodG1sU3RyaW5nLCBTdHJpbmcgYmFzZVVSTCwgV2ViS2l0OjpVc2VyRGF0YSB1c2Vy
RGF0YSkKLSAgICBMb2FkQWx0ZXJuYXRlSFRNTFN0cmluZyhTdHJpbmcgaHRtbFN0cmluZywgU3Ry
aW5nIGJhc2VVUkwsIFN0cmluZyB1bnJlYWNoYWJsZVVSTCwgV2ViS2l0OjpVc2VyRGF0YSB1c2Vy
RGF0YSkKKyAgICBMb2FkQWx0ZXJuYXRlSFRNTFN0cmluZyhTdHJpbmcgaHRtbFN0cmluZywgU3Ry
aW5nIGJhc2VVUkwsIFN0cmluZyB1bnJlYWNoYWJsZVVSTCwgU3RyaW5nIHByb3Zpc2lvbmFsTG9h
ZEVycm9yVVJMLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogICAgIExvYWRQbGFpblRleHRT
dHJpbmcoU3RyaW5nIHN0cmluZywgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKICAgICBMb2Fk
V2ViQXJjaGl2ZURhdGEoSVBDOjpEYXRhUmVmZXJlbmNlIHdlYkFyY2hpdmVEYXRhLCBXZWJLaXQ6
OlVzZXJEYXRhIHVzZXJEYXRhKQogICAgIE5hdmlnYXRlVG9VUkxXaXRoU2ltdWxhdGVkQ2xpY2so
U3RyaW5nIHVybCwgV2ViQ29yZTo6SW50UG9pbnQgZG9jdW1lbnRQb2ludCwgV2ViQ29yZTo6SW50
UG9pbnQgc2NyZWVuUG9pbnQpCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODM2OTUpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxNS0wNS0wMSAgRGFuIEJlcm5zdGVpbiAg
PG1pdHpAYXBwbGUuY29tPgorCisgICAgICAgIFRlc3QgZm9yIDxyZGFyOi8vcHJvYmxlbS84NjM2
MDQ1PiBCYWNrL2ZvcndhcmQgbmF2aWdhdGlvbiB0byBhbiBlcnJvciBwYWdlIGluIFNhZmFyaSBi
cmVha3MgdGhlIGJhY2stZm9yd2FyZCBsaXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ1MDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
MkNvY29hL0xvYWRBbHRlcm5hdGVIVE1MU3RyaW5nLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bTG9h
ZEFsdGVybmF0ZUhUTUxTdHJpbmdGcm9tUHJvdmlzaW9uYWxMb2FkRXJyb3JDb250cm9sbGVyIHdl
YlZpZXc6ZGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbjp3aXRoRXJyb3I6XSk6CisgICAgICAg
ICgtW0xvYWRBbHRlcm5hdGVIVE1MU3RyaW5nRnJvbVByb3Zpc2lvbmFsTG9hZEVycm9yQ29udHJv
bGxlciB3ZWJWaWV3OmRpZEZpbmlzaE5hdmlnYXRpb246XSk6CisKIDIwMTUtMDUtMDEgIEJhc2ls
ZSBDbGVtZW50ICA8YmFzaWxlX2NsZW1lbnRAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3
ZWQuIEFkZCBteXNlbGYgYXMgYSBjb21taXRlciBpbiBjb250cmlidXRvcnMuanNvbi4KSW5kZXg6
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxODM2NzIpCisrKyBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBj
b3B5KQpAQCAtNDEsNiArNDEsNyBAQAogCQkzNzhFNjQ3NzE2MzI2NTVFMDBCNkM2NzYgLyogSW5q
ZWN0ZWRCdW5kbGVGcmFtZUhpdFRlc3RfQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3OEU2NDc1MTYzMjY1NUQwMEI2QzY3NiAvKiBJbmpl
Y3RlZEJ1bmRsZUZyYW1lSGl0VGVzdF9CdW5kbGUuY3BwICovOyB9OwogCQkzNzhFNjQ3OTE2MzI3
MDc0MDBCNkM2NzYgLyogbGluay13aXRoLXRpdGxlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc4RTY0NzgxNjMyNkZERjAwQjZDNjc2
IC8qIGxpbmstd2l0aC10aXRsZS5odG1sICovOyB9OwogCQkzNzkwMjhCOTE0RkFDMjRDMDA3RTZC
NDMgLyogYWNjZXB0c0ZpcnN0TW91c2UuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzkwMjhCODE0RkFCRTQ5MDA3RTZCNDMgLyogYWNj
ZXB0c0ZpcnN0TW91c2UuaHRtbCAqLzsgfTsKKwkJMzdEMzZFRDcxQUY0MkVDRDAwQkFGNUQ5IC8q
IExvYWRBbHRlcm5hdGVIVE1MU3RyaW5nLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMzdEMzZFRDYxQUY0MkVDRDAwQkFGNUQ5IC8qIExvYWRBbHRlcm5h
dGVIVE1MU3RyaW5nLm1tICovOyB9OwogCQkzN0RDNjc5MTE0MEQ3RDc2MDBBQkNDREIgLyogRE9N
UmFuZ2VPZlN0cmluZy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDM3REM2NzhGMTQwRDdEM0EwMEFCQ0NEQiAvKiBET01SYW5nZU9mU3Ry
aW5nLmh0bWwgKi87IH07CiAJCTM3RTEwNjRDMTY5NzY4MTgwMEI3OEJEMCAvKiBET01IVE1MVGFi
bGVDZWxsRWxlbWVudENlbGxBYm92ZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3RTEwNjRCMTY5NzY3RjcwMEI3OEJEMCAvKiBET01I
VE1MVGFibGVDZWxsRWxlbWVudENlbGxBYm92ZS5odG1sICovOyB9OwogCQk0QkZERkZBNzEzMTQ3
NzZDMDA2MUYyNEIgLyogSGl0VGVzdFJlc3VsdE5vZGVIYW5kbGVfQnVuZGxlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCRkRGRkE2MTMxNDc3NkMw
MDYxRjI0QiAvKiBIaXRUZXN0UmVzdWx0Tm9kZUhhbmRsZV9CdW5kbGUuY3BwICovOyB9OwpAQCAt
NDg3LDYgKzQ4OCw3IEBACiAJCTM3OTlBRDM5MTQxMjBBNDMwMDVFQjBDNiAvKiBTdHJpbmdCeUV2
YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmluZy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHRGcm9tU3RyaW5nLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzN0E2ODk1RDE0OEE5QjUwMDA1MTAwRkEg
LyogU3VicmVzb3VyY2VFcnJvckNyYXNoLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gU3VicmVzb3VyY2VFcnJvckNyYXNoLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkzN0M3ODRERTE5N0M4RjJFMDAxMEE0OTYgLyogUmVuZGVyZWRJbWFnZUZyb21E
T01Ob2RlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVuZGVy
ZWRJbWFnZUZyb21ET01Ob2RlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzN0Qz
NkVENjFBRjQyRUNEMDBCQUY1RDkgLyogTG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBMb2FkQWx0ZXJuYXRlSFRNTFN0cmlu
Zy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzdEQzY3OEIxNDBEN0M1MDAwQUJD
Q0RCIC8qIERPTVJhbmdlT2ZTdHJpbmcubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBET01SYW5nZU9mU3RyaW5nLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkzN0RDNjc4RjE0MEQ3RDNBMDBBQkNDREIgLyogRE9NUmFuZ2VPZlN0cmluZy5odG1sICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gRE9NUmFuZ2VPZlN0cmluZy5odG1sOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkzN0UxMDY0QTE2OTc2NzY0MDBCNzhCRDAgLyogRE9NSFRN
TFRhYmxlQ2VsbENlbGxBYm92ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IERPTUhUTUxUYWJsZUNlbGxDZWxsQWJvdmUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC04MzIsNiArODM0LDcgQEAKIAkJCQlDOTU1MDFCRTE5QUQyRkFGMDA0OUJFM0Ug
LyogUHJlZmVyZW5jZXMubW0gKi8sCiAJCQkJN0NDM0UxRkExOTdFMjM0MTAwQkU2MjUyIC8qIFVz
ZXJDb250ZW50Q29udHJvbGxlci5tbSAqLywKIAkJCQkwRjNCOTRBNTFBNzcyNjZDMDBERTMyNzIg
LyogV0tXZWJWaWV3RXZhbHVhdGVKYXZhU2NyaXB0Lm1tICovLAorCQkJCTM3RDM2RUQ2MUFGNDJF
Q0QwMEJBRjVEOSAvKiBMb2FkQWx0ZXJuYXRlSFRNTFN0cmluZy5tbSAqLywKIAkJCSk7CiAJCQlu
YW1lID0gIldlYktpdDIgQ29jb2EiOwogCQkJcGF0aCA9IFdlYktpdDJDb2NvYTsKQEAgLTE1NDcs
NiArMTU1MCw3IEBACiAJCQkJN0NDRTdFREQxQTQxMUE5MjAwNDQ3QzRDIC8qIFRpbWVSYW5nZXMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFRDMxQTQxMUE3RTAwNDQ3QzRDIC8qIFR5cGlu
Z1N0eWxlQ3Jhc2gubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VERTFBNDExQTkyMDA0NDdD
NEMgLyogVVJMLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTM3RDM2RUQ3MUFGNDJFQ0QwMEJBRjVE
OSAvKiBMb2FkQWx0ZXJuYXRlSFRNTFN0cmluZy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3
RUIwMUE0MTFBNDQwMDQ0N0M0QyAvKiBVUkxFeHRyYXMubW0gaW4gU291cmNlcyAqLywKIAkJCQk3
Q0NFN0YyNzFBNDExQUY2MDA0NDdDNEMgLyogVXNlckNvbnRlbnRDb250cm9sbGVyLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJN0NDRTdGMkQxQTQxMUIxMDAwNDQ3QzRDIC8qIFVzZXJDb250ZW50VGVz
dC5tbSBpbiBTb3VyY2VzICovLApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyQ29jb2EvTG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvTG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcu
bW0JKHJldmlzaW9uIDApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2Nv
YS9Mb2FkQWx0ZXJuYXRlSFRNTFN0cmluZy5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDk2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0IDxXZWJLaXQvV0tG
b3VuZGF0aW9uLmg+CisKKyNpZiBXS19BUElfRU5BQkxFRAorCisjaW1wb3J0ICJQbGF0Zm9ybVV0
aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdC5oIgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1By
aXZhdGUuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKworc3RhdGljIGJvb2wgaXNEb25l
OworCitAaW50ZXJmYWNlIExvYWRBbHRlcm5hdGVIVE1MU3RyaW5nRnJvbVByb3Zpc2lvbmFsTG9h
ZEVycm9yQ29udHJvbGxlciA6IE5TT2JqZWN0IDxXS05hdmlnYXRpb25EZWxlZ2F0ZT4KK0BlbmQK
KworQGltcGxlbWVudGF0aW9uIExvYWRBbHRlcm5hdGVIVE1MU3RyaW5nRnJvbVByb3Zpc2lvbmFs
TG9hZEVycm9yQ29udHJvbGxlcgorCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZp
ZXcgZGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbjooV0tOYXZpZ2F0aW9uICopbmF2aWdhdGlv
biB3aXRoRXJyb3I6KE5TRXJyb3IgKillcnJvcgoreworICAgIFt3ZWJWaWV3IF9sb2FkQWx0ZXJu
YXRlSFRNTFN0cmluZzpAImVycm9yIHBhZ2UiIGJhc2VVUkw6bmlsIGZvclVucmVhY2hhYmxlVVJM
OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiZGF0YToiXV07Cit9CisKKy0gKHZvaWQpd2ViVmlldzoo
V0tXZWJWaWV3ICopd2ViVmlldyBkaWRGaW5pc2hOYXZpZ2F0aW9uOihXS05hdmlnYXRpb24gKilu
YXZpZ2F0aW9uCit7CisgICAgaXNEb25lID0gdHJ1ZTsKK30KKworQGVuZAorCitzdGF0aWMgTlNT
dHJpbmcgKnVubG9hZGFibGVVUkwgPSBAImRhdGE6IjsKK3N0YXRpYyBOU1N0cmluZyAqbG9hZGFi
bGVVUkwgPSBAImRhdGE6dGV4dC9odG1sLG5vJTIwZXJyb3IiOworCitURVNUKFdLV2ViVmlldywg
TG9hZEFsdGVybmF0ZUhUTUxTdHJpbmdGcm9tUHJvdmlzaW9uYWxMb2FkRXJyb3IpCit7CisgICAg
YXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdF0pOworICAgIGF1
dG8gY29udHJvbGxlciA9IGFkb3B0TlMoW1tMb2FkQWx0ZXJuYXRlSFRNTFN0cmluZ0Zyb21Qcm92
aXNpb25hbExvYWRFcnJvckNvbnRyb2xsZXIgYWxsb2NdIGluaXRdKTsKKyAgICBbd2ViVmlldyBz
ZXROYXZpZ2F0aW9uRGVsZWdhdGU6Y29udHJvbGxlci5nZXQoKV07CisKKyAgICBbd2ViVmlldyBs
b2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3Ry
aW5nOnVubG9hZGFibGVVUkxdXV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0Rv
bmUpOworICAgIGlzRG9uZSA9IGZhbHNlOworCisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05T
VVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpsb2FkYWJsZVVS
TF1dXTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CisgICAgaXNEb25l
ID0gZmFsc2U7CisKKyAgICBbd2ViVmlldyBnb0JhY2tdOworICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmaXNEb25lKTsKKyAgICBpc0RvbmUgPSBmYWxzZTsKKworICAgIFdLQmFja0Zvcndh
cmRMaXN0ICpsaXN0ID0gW3dlYlZpZXcgYmFja0ZvcndhcmRMaXN0XTsKKyAgICBFWFBFQ1RfRVEo
KE5TVUludGVnZXIpMCwgbGlzdC5iYWNrTGlzdC5jb3VudCk7CisgICAgRVhQRUNUX0VRKChOU1VJ
bnRlZ2VyKTEsIGxpc3QuZm9yd2FyZExpc3QuY291bnQpOworICAgIEVYUEVDVF9TVFJFUShbW2xp
c3QuZm9yd2FyZExpc3QuZmlyc3RPYmplY3QgVVJMXSBhYnNvbHV0ZVN0cmluZ10uVVRGOFN0cmlu
ZywgbG9hZGFibGVVUkwuVVRGOFN0cmluZyk7CisgICAgRVhQRUNUX1NUUkVRKFtbbGlzdC5jdXJy
ZW50SXRlbSBVUkxdIGFic29sdXRlU3RyaW5nXS5VVEY4U3RyaW5nLCB1bmxvYWRhYmxlVVJMLlVU
RjhTdHJpbmcpOworCisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgY2FuR29Gb3J3YXJkXSk7Cisg
ICAgaWYgKCFbd2ViVmlldyBjYW5Hb0ZvcndhcmRdKQorICAgICAgICByZXR1cm47CisKKyAgICBb
d2ViVmlldyBnb0ZvcndhcmRdOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25l
KTsKKyAgICBpc0RvbmUgPSBmYWxzZTsKKworICAgIEVYUEVDVF9FUSgoTlNVSW50ZWdlcikxLCBs
aXN0LmJhY2tMaXN0LmNvdW50KTsKKyAgICBFWFBFQ1RfRVEoKE5TVUludGVnZXIpMCwgbGlzdC5m
b3J3YXJkTGlzdC5jb3VudCk7CisgICAgRVhQRUNUX1NUUkVRKFtbbGlzdC5iYWNrTGlzdC5maXJz
dE9iamVjdCBVUkxdIGFic29sdXRlU3RyaW5nXS5VVEY4U3RyaW5nLCB1bmxvYWRhYmxlVVJMLlVU
RjhTdHJpbmcpOworICAgIEVYUEVDVF9TVFJFUShbW2xpc3QuY3VycmVudEl0ZW0gVVJMXSBhYnNv
bHV0ZVN0cmluZ10uVVRGOFN0cmluZywgbG9hZGFibGVVUkwuVVRGOFN0cmluZyk7Cit9CisKKyNl
bmRpZgo=
</data>
<flag name="review"
          id="277022"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>