<?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>155890</bug_id>
          
          <creation_ts>2016-03-25 10:23:25 -0700</creation_ts>
          <short_desc>Disk cache speculative validation requests do not have the &apos;Referer&apos; HTTP header set</short_desc>
          <delta_ts>2016-03-28 09:04:36 -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>achristensen</cc>
    
    <cc>barraclough</cc>
    
    <cc>beidson</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>koivisto</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1178001</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-03-25 10:23:25 -0700</bug_when>
    <thetext>Disk cache speculative validation requests do not have the &apos;Referer&apos; HTTP header set. This is breaking some streaming sites (such as twitch.tv).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178002</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-03-25 10:23:46 -0700</bug_when>
    <thetext>rdar://problem/25279962</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178333</commentid>
    <comment_count>2</comment_count>
      <attachid>274999</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-03-27 15:39:32 -0700</bug_when>
    <thetext>Created attachment 274999
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178406</commentid>
    <comment_count>3</comment_count>
      <attachid>274999</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-03-28 05:34:50 -0700</bug_when>
    <thetext>Comment on attachment 274999
Patch

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

r=me

&gt; LayoutTests/http/tests/cache/disk-cache/speculative-validation/validation-request-expected.txt:8
&gt; +PASS validationRequestHeader(&apos;Referer&apos;) is initialReferer

The test seems rather barebones considering this affects all headers, not just &quot;Referer&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178418</commentid>
    <comment_count>4</comment_count>
      <attachid>275022</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-03-28 09:03:47 -0700</bug_when>
    <thetext>Created attachment 275022
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178419</commentid>
    <comment_count>5</comment_count>
      <attachid>275022</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-03-28 09:04:31 -0700</bug_when>
    <thetext>Comment on attachment 275022
Patch

Clearing flags on attachment: 275022

Committed r198741: &lt;http://trac.webkit.org/changeset/198741&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178420</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-03-28 09:04:36 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274999</attachid>
            <date>2016-03-27 15:39:32 -0700</date>
            <delta_ts>2016-03-28 09:03:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155890-20160327153935.patch</filename>
            <type>text/plain</type>
            <size>30566</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4NzA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmI4ODMzODBmZjZjNDIz
MzdkYTZmYTY2N2M2YmE3MmQ3ZDFkZDVkMi4uZmIyYjQyNzU1OWUxNDVhZWY3OWI0MWVhNWFmNDk3
MjBhOTdhODZhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE2LTAzLTI1ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzayBjYWNoZSBzcGVjdWxh
dGl2ZSB2YWxpZGF0aW9uIHJlcXVlc3RzIGRvIG5vdCBoYXZlIHRoZSAnUmVmZXJlcicgSFRUUCBo
ZWFkZXIgc2V0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTU4OTAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI1Mjc5OTYyPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4cG9ydCBhIGNvdXBsZSBtb3Jl
IHN5bWJvbHMgc28gd2UgY2FuIHVzZSB0aGVtIGZyb20gV2ViS2l0Mi4KKworICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oOgorCiAyMDE2LTAzLTI1ICBKZXIgTm9ibGUgIDxqZXIu
bm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtNYWNdIEF1ZGlvIHRyYWNrcyBpbiBhbHRlcm5h
dGUgZ3JvdXBzIGFyZSBub3QgcmVwcmVzZW50ZWQgY29ycmVjdGx5IGFzIEF1ZGlvVHJhY2tzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKaW5kZXggZTkyNWE3MTJmNzcwNTAwZjM5NDNmMzhmOTk2OTQ1NmFlMGJjZWQ0OC4uMTRh
ODAwN2U5ZWM2Y2E4MGY4YmVmNzYxMmZkNDgzYTViMTBhYzQyOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDc4IEBACisyMDE2LTAzLTI3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisK
KyAgICAgICAgRGlzayBjYWNoZSBzcGVjdWxhdGl2ZSB2YWxpZGF0aW9uIHJlcXVlc3RzIGRvIG5v
dCBoYXZlIHRoZSAnUmVmZXJlcicgSFRUUCBoZWFkZXIgc2V0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU4OTAKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzI1Mjc5OTYyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIERpc2sgY2FjaGUgc3BlY3VsYXRpdmUgdmFsaWRhdGlvbiByZXF1ZXN0cyBkaWQgbm90
IGhhdmUgdGhlICdSZWZlcmVyJworICAgICAgICBIVFRQIGhlYWRlciBzZXQuIFRoaXMgd2FzIGJy
ZWFraW5nIHNvbWUgc3RyZWFtaW5nIHNpdGVzIChzdWNoIGFzCisgICAgICAgIHR3aXRjaC50diku
CisKKyAgICAgICAgV2Ugbm93IHN0b3JlIGFsbCB0aGUgb3JpZ2luYWwgcmVxdWVzdCdzIEhUVFAg
aGVhZGVycyBpbiB0aGUgZGlzayBjYWNoZQorICAgICAgICBzbyB3ZSBjYW4gcmUtdXNlIHRoZW0g
Zm9yIHRoZSBzcGVjdWxhdGl2ZSB2YWxpZGF0aW9uIHJlcXVlc3RzLiBXaGVuIHRoZQorICAgICAg
ICBhY3R1YWwgcmVxdWVzdCBjb21lcyBsYXRlciBvbiwgd2UgYWxzbyBtYWtlIHN1cmUgdGhhdCB0
aGUgSFRUUCBoZWFkZXJzCisgICAgICAgIHVzZWQgaW4gdGhlIHNwZWN1bGF0aXZlIHZhbGlkYXRp
b24gcmVxdWVzdCBtYXRjaCB0aGUgb25lcyBmcm9tIHRoZQorICAgICAgICBlZmZlY3RpdmUgcmVx
dWVzdC4gSWYgdGhleSBkb24ndCB3ZSBkb24ndCB1c2UgdGhlIHNwZWN1bGF0aXZlbHkKKyAgICAg
ICAgdmFsaWRhdGVkIHJlc291cmNlIGFzIHRoZSBzZXJ2ZXIgbWF5IHJldHVybiBhIGRpZmZlcmVu
dCByZXNvdXJjZSBpbgorICAgICAgICBzdWNoIGNhc2UuCisKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2Fj
aGU6OkNhY2hlOjpyZXRyaWV2ZSk6CisgICAgICAgIFBhc3MgdGhlIGVmZmVjdGl2ZSBSZXNvdXJj
ZVJlcXVlc3QgdG8gdGhlIE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIKKyAgICAg
ICAgc28gaXQgY2FuIGNoZWNrIHRoYXQgdGhlIHNwZWN1bGF0aXZlIHZhbGlkYXRpb24gcmVxdWVz
dCdzIEhUVFAgaGVhZGVycworICAgICAgICBtYXRjaCB0aGUgZWZmZWN0aXZlIHJlcXVlc3QncyBo
ZWFkZXJzLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3Bl
Y3VsYXRpdmVMb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtD
YWNoZTo6Y29uc3RydWN0UmV2YWxpZGF0aW9uUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6UHJlbG9hZGVkRW50cnk6OlByZWxv
YWRlZEVudHJ5KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxv
YWRNYW5hZ2VyOjpQcmVsb2FkZWRFbnRyeTo6cmV2YWxpZGF0aW9uUmVxdWVzdCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6UHJlbG9hZGVk
RW50cnk6Ondhc1JldmFsaWRhdGVkKToKKyAgICAgICAgV2Ugbm93IGhhdmUgYSBtZW1iZXIgaW4g
UHJlbG9hZGVkRW50cnkgdG8ga2VlcCB0aGUgcmVxdWVzdCB1c2VkIGZvciB2YWxpZGF0aW9uLCBp
ZgorICAgICAgICBzcGVjdWxhdGl2ZSB2YWxpZGF0aW9uIHdhcyBkb25lLiBUaGlzIGlzIHNvIHRo
YXQgd2UgY2FuIGNvbXBhcmUgaXRzIEhUVFAgaGVhZGVycworICAgICAgICB3aXRoIHRoZSBvbmVz
IG9mIHRoZSBlZmZlY3RpdmUgcmVxdWVzdCBsYXRlciBvbi4KKworICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ2FjaGU6OmR1bXBIVFRQSGVhZGVyc0RpZmYpOgorICAgICAgICBEZWJ1ZyBmdW5jdGlv
biB0aGF0IHByaW50cyB3aGljaCBIVFRQIGhlYWRlcnMgZGlkIG5vdCBtYXRjaCBpbiB0aGUgc3Bl
Y3VsYXRpdmUKKyAgICAgICAgdmFsaWRhdGlvbiByZXF1ZXN0IGFuZCBpbiB0aGUgZWZmZWN0aXZl
IHJlcXVlc3QuCisKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpyZXF1ZXN0c0hlYWRl
cnNNYXRjaCk6CisgICAgICAgIE5ldyB1dGlsaXR5IGZ1bmN0aW9uIHRvIGNoZWNrIHRoYXQgdGhl
IHNwZWN1bGF0aXZlIHZhbGlkYXRpb24gcmVxdWVzdCdzIEhUVFAKKyAgICAgICAgaGVhZGVycyBt
YXRjaCB0aGUgb25lcyBvZiB0aGUgZWZmZWN0aXZlIHJlcXVlc3RzLiBOb3RlIHRoYXQgd2UgYWxs
b3cgZm9yCisgICAgICAgIGhlYWRlcnMgcmVsYXRlZCB0byB2YWxpZGF0aW9uIHRvIGRpZmZlci4K
KworICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6
OmNhblVzZVByZWxvYWRlZEVudHJ5KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpT
cGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpjYW5Vc2VQZW5kaW5nUHJlbG9hZCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6cmV0cmlldmUpOgor
ICAgICAgICBDaGVjayB0aGF0IHRoZSBzcGVjdWxhdGl2ZSB2YWxpZGF0aW9uIHJlcXVlc3QncyBI
VFRQIGhlYWRlcnMgbWF0Y2ggdGhlCisgICAgICAgIG9uZXMgb2YgdGhlIGVmZmVjdGl2ZSByZXF1
ZXN0LiBJZiB0aGV5IGRvbid0IHRoZW4gZG8gbm90IHVzZSB0aGUKKyAgICAgICAgc3BlY3VsYXRp
dmVseSB2YWxpZGF0ZWQgcmVzb3VyY2UuCisKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hl
OjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjphZGRQcmVsb2FkZWRFbnRyeSk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6cmV2YWxpZGF0ZUVu
dHJ5KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWRNYW5h
Z2VyOjpwcmVsb2FkRW50cnkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1
bGF0aXZlTG9hZE1hbmFnZXI6OnN0YXJ0U3BlY3VsYXRpdmVSZXZhbGlkYXRpb24pOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFn
ZXIuaDoKKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJl
c291cmNlc0VudHJ5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdWJyZXNv
dXJjZUluZm86OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3VicmVz
b3VyY2VJbmZvOjpkZWNvZGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN1YnJl
c291cmNlc0VudHJ5OjplbmNvZGVBc1N0b3JhZ2VSZWNvcmQpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ2FjaGU6OlN1YnJlc291cmNlc0VudHJ5OjpkZWNvZGVTdG9yYWdlUmVjb3JkKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRy
eS5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN1YnJlc291cmNlSW5mbzo6U3Vi
cmVzb3VyY2VJbmZvKToKKyAgICAgICAgLSBLZWVwIGFsbCB0aGUgcmVxdWVzdCdzIGhlYWRlcnMg
aW4gU3VicmVzb3VyY2VJbmZvIGluc3RlYWQgb2YganVzdCB0aGUKKyAgICAgICAgICAnVXNlci1B
Z2VudCcgb25lLgorICAgICAgICAtIERyb3AgdGhlIGN1c3RvbSBjb3B5IGNvbnN0cnVjdG9yIC8g
YXNzaWdubWVudCBvcGVyYXRvciBmb3IKKyAgICAgICAgICBTdWJyZXNvdXJjZUluZm8gdGhhdCB3
ZXJlIG1ha2luZyBpc29sYXRlZCBjb3BpZXMgb24gdGhlIG1lbWJlcnMuCisgICAgICAgICAgV2Ug
dGVjaG5pY2FsbHkgZG9uJ3QgbmVlZCB0byB1c2UgU3VicmVzb3VyY2VJbmZvIG9iamVjdHMgaW4g
b3RoZXIKKyAgICAgICAgICB0aHJlYWRzIHRoYW4gdGhlIG1haW4gb25lLiBJbiBTcGVjdWxhdGl2
ZUxvYWRNYW5hZ2VyOjpwcmVsb2FkRW50cnkoKSwKKyAgICAgICAgICB3ZSBub3cgbWFrZSBjYXB0
dXJlIGEgU3VicmVzb3VyY2VJbmZvKiBpbiB0aGUgbGFtYmRhIHRvIGF2b2lkIGNhbGxpbmcKKyAg
ICAgICAgICB0aGUgY29weSBjb25zdHJ1Y3Rvci4gV2UgYWxzbyBtYWtlIHN1cmUgdGhhdCB0aGUg
b2JqZWN0IGdldHMgZGVzdHJveWVkCisgICAgICAgICAgaW4gdGhlIGxhbWJkYSBmdW5jdGlvbiwg
d2hpY2ggaXMgZXhlY3V0ZWQgaW4gdGhlIG1haW4gdGhyZWFkLgorCiAyMDE2LTAzLTI1ICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdXNlIG9mIGV4dGVy
biAiQyIgdG8gaW5jbHVkZSBRdWFydHpDb3JlIGZpbGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5oCmluZGV4IGU0ZGUwNThlM2Y0MzFkYjRiMzA3
Zjg2MGU5MDEwZmU3ODQ1MWI5ZWQuLjQyMzVhNjNmZDBjZGRkZmUzM2JmZTcwOTZiYWI3NzBiZWU4
OTliZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhl
YWRlck1hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRl
ck1hcC5oCkBAIC0xMzksNyArMTM5LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFN0
cmluZyBnZXQoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwogICAgIHZv
aWQgYWRkKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7Ci0gICAgYm9v
bCBjb250YWlucyhjb25zdCBTdHJpbmcmKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29s
IGNvbnRhaW5zKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAgIGJvb2wgcmVtb3ZlKGNvbnN0IFN0
cmluZyYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGdldChIVFRQSGVhZGVyTmFtZSkg
Y29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlUmVxdWVzdEJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VSZXF1ZXN0QmFzZS5oCmluZGV4IGQwMTYwMmRiY2FlNTYyYmRiZWUyZDljMGIwMWVmZjU0NWVh
OWFiYzAuLmZjZTNjNTE4YzIxOTNiOTA2MTg3OTMzNTJhODFlZGJiNDYzOTZkYTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFz
ZS5oCkBAIC0xMzAsNyArMTMwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldFByaW9yaXR5KFJlc291cmNlTG9hZFByaW9yaXR5KTsKIAogICAg
ICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzQ29uZGl0aW9uYWwoKSBjb25zdDsKLSAgICAgICAg
dm9pZCBtYWtlVW5jb25kaXRpb25hbCgpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG1h
a2VVbmNvbmRpdGlvbmFsKCk7CiAKICAgICAgICAgLy8gV2hldGhlciB0aGUgYXNzb2NpYXRlZCBS
ZXNvdXJjZUhhbmRsZUNsaWVudCBuZWVkcyB0byBiZSBub3RpZmllZCBvZgogICAgICAgICAvLyB1
cGxvYWQgcHJvZ3Jlc3MgbWFkZSBmb3IgdGhhdCByZXNvdXJjZS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCmluZGV4IDExOTA0
ZmU2ZTM3OTg4YTg0YmY5NDBkNzQxMTk2NDFiNjExNmRiYjguLjUxODhiZDUxMzg5OTM3ZGRkNjZm
OWU2ODllODA1MmI2OTdkNjViOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcApAQCAtMzY4LDcgKzM2OCw3IEBAIHZvaWQg
Q2FjaGU6OnJldHJpZXZlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgR2xvYmFsRnJhbWVJCiAgICAgfQogCiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEVfU1BF
Q1VMQVRJVkVfUkVWQUxJREFUSU9OKQotICAgIGlmIChtX3NwZWN1bGF0aXZlTG9hZE1hbmFnZXIg
JiYgbV9zcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLT5yZXRyaWV2ZShmcmFtZUlELCBzdG9yYWdlS2V5
LCBbcmVxdWVzdCwgY29tcGxldGlvbkhhbmRsZXJdKHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gZW50
cnkpIHsKKyAgICBpZiAobV9zcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyICYmIG1fc3BlY3VsYXRpdmVM
b2FkTWFuYWdlci0+cmV0cmlldmUoZnJhbWVJRCwgc3RvcmFnZUtleSwgcmVxdWVzdCwgW3JlcXVl
c3QsIGNvbXBsZXRpb25IYW5kbGVyXShzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IGVudHJ5KSB7CiAg
ICAgICAgIGlmIChlbnRyeSAmJiB2ZXJpZnlWYXJ5aW5nUmVxdWVzdEhlYWRlcnMoZW50cnktPnZh
cnlpbmdSZXF1ZXN0SGVhZGVycygpLCByZXF1ZXN0KSkKICAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKFdURk1vdmUoZW50cnkpKTsKICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2Fk
LmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVj
dWxhdGl2ZUxvYWQuaAppbmRleCBiMjRmOWM4NWU4NDYxNmU5YzU5YTQ2MWIwNzMyMmZmNjYxNDFl
MTFmLi44ZDAxNDFhMzdmZDk3ZWQyMDg4YjFkZGViYTgwY2JjMWJjZTM0ZWMyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxh
dGl2ZUxvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaApAQCAtNDksNiArNDksOCBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIH5TcGVjdWxhdGl2ZUxvYWQoKTsKIAorICAgIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW5hbFJl
cXVlc3Q7IH0KKwogcHJpdmF0ZToKICAgICAvLyBOZXR3b3JrTG9hZENsaWVudC4KICAgICB2b2lk
IGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcg
bG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRlIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2Fk
TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcAppbmRleCBmOGYwMmZkOTRiOGU3Y2FlNDE4
YzFhNjY1ZTk1M2RkMDI3NWExNzdmLi44ZjkzZmEzZWU2YTdmZjA4NGM5MmQzZDM2OTE1MWQ0NzJl
ZmU3ZjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2Vy
LmNwcApAQCAtODQsMjQgKzg0LDI1IEBAIHN0YXRpYyBpbmxpbmUgS2V5IG1ha2VTdWJyZXNvdXJj
ZXNLZXkoY29uc3QgS2V5JiByZXNvdXJjZUtleSkKICAgICByZXR1cm4gS2V5KHJlc291cmNlS2V5
LnBhcnRpdGlvbigpLCBzdWJyZXNvdXJjZXNUeXBlKCksIHJlc291cmNlS2V5LnJhbmdlKCksIHJl
c291cmNlS2V5LmlkZW50aWZpZXIoKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgUmVzb3VyY2VSZXF1
ZXN0IGNvbnN0cnVjdFJldmFsaWRhdGlvblJlcXVlc3QoY29uc3QgRW50cnkmIGVudHJ5LCBjb25z
dCBTdWJyZXNvdXJjZUluZm8mIHN1YlJlc291cmNlSW5mbykKK3N0YXRpYyBpbmxpbmUgc3RkOjp1
bmlxdWVfcHRyPFJlc291cmNlUmVxdWVzdD4gY29uc3RydWN0UmV2YWxpZGF0aW9uUmVxdWVzdChj
b25zdCBFbnRyeSYgZW50cnksIGNvbnN0IFN1YnJlc291cmNlSW5mbyYgc3ViUmVzb3VyY2VJbmZv
KQogewotICAgIFJlc291cmNlUmVxdWVzdCByZXZhbGlkYXRpb25SZXF1ZXN0KGVudHJ5LmtleSgp
LmlkZW50aWZpZXIoKSk7Ci0gICAgcmV2YWxpZGF0aW9uUmVxdWVzdC5zZXRIVFRQVXNlckFnZW50
KHN1YlJlc291cmNlSW5mby5odHRwVXNlckFnZW50KTsKLSAgICByZXZhbGlkYXRpb25SZXF1ZXN0
LnNldEZpcnN0UGFydHlGb3JDb29raWVzKHN1YlJlc291cmNlSW5mby5maXJzdFBhcnR5Rm9yQ29v
a2llcyk7CisgICAgYXV0byByZXZhbGlkYXRpb25SZXF1ZXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxS
ZXNvdXJjZVJlcXVlc3Q+KGVudHJ5LmtleSgpLmlkZW50aWZpZXIoKSk7CisgICAgcmV2YWxpZGF0
aW9uUmVxdWVzdC0+c2V0SFRUUEhlYWRlckZpZWxkcyhzdWJSZXNvdXJjZUluZm8ucmVxdWVzdEhl
YWRlcnMpOworICAgIHJldmFsaWRhdGlvblJlcXVlc3QtPnNldEZpcnN0UGFydHlGb3JDb29raWVz
KHN1YlJlc291cmNlSW5mby5maXJzdFBhcnR5Rm9yQ29va2llcyk7CiAjaWYgRU5BQkxFKENBQ0hF
X1BBUlRJVElPTklORykKICAgICBpZiAoZW50cnkua2V5KCkuaGFzUGFydGl0aW9uKCkpCi0gICAg
ICAgIHJldmFsaWRhdGlvblJlcXVlc3Quc2V0Q2FjaGVQYXJ0aXRpb24oZW50cnkua2V5KCkucGFy
dGl0aW9uKCkpOworICAgICAgICByZXZhbGlkYXRpb25SZXF1ZXN0LT5zZXRDYWNoZVBhcnRpdGlv
bihlbnRyeS5rZXkoKS5wYXJ0aXRpb24oKSk7CiAjZW5kaWYKICAgICBBU1NFUlRfV0lUSF9NRVNT
QUdFKGVudHJ5LmtleSgpLnJhbmdlKCkuaXNFbXB0eSgpLCAicmFuZ2UgaXMgbm90IHN1cHBvcnRl
ZCIpOwogCisgICAgcmV2YWxpZGF0aW9uUmVxdWVzdC0+bWFrZVVuY29uZGl0aW9uYWwoKTsKICAg
ICBTdHJpbmcgZVRhZyA9IGVudHJ5LnJlc3BvbnNlKCkuaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFk
ZXJOYW1lOjpFVGFnKTsKICAgICBpZiAoIWVUYWcuaXNFbXB0eSgpKQotICAgICAgICByZXZhbGlk
YXRpb25SZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6SWZOb25lTWF0
Y2gsIGVUYWcpOworICAgICAgICByZXZhbGlkYXRpb25SZXF1ZXN0LT5zZXRIVFRQSGVhZGVyRmll
bGQoSFRUUEhlYWRlck5hbWU6OklmTm9uZU1hdGNoLCBlVGFnKTsKIAogICAgIFN0cmluZyBsYXN0
TW9kaWZpZWQgPSBlbnRyeS5yZXNwb25zZSgpLmh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFt
ZTo6TGFzdE1vZGlmaWVkKTsKICAgICBpZiAoIWxhc3RNb2RpZmllZC5pc0VtcHR5KCkpCi0gICAg
ICAgIHJldmFsaWRhdGlvblJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1l
OjpJZk1vZGlmaWVkU2luY2UsIGxhc3RNb2RpZmllZCk7CisgICAgICAgIHJldmFsaWRhdGlvblJl
cXVlc3QtPnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6SWZNb2RpZmllZFNpbmNl
LCBsYXN0TW9kaWZpZWQpOwogCiAgICAgcmV0dXJuIHJldmFsaWRhdGlvblJlcXVlc3Q7CiB9CkBA
IC0xMzIsMTAgKzEzMywxMCBAQCBwcml2YXRlOgogY2xhc3MgU3BlY3VsYXRpdmVMb2FkTWFuYWdl
cjo6UHJlbG9hZGVkRW50cnkgOiBwcml2YXRlIEV4cGlyaW5nRW50cnkgewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFByZWxvYWRlZEVudHJ5KHN0ZDo6dW5pcXVl
X3B0cjxFbnRyeT4gZW50cnksIFdhc1JldmFsaWRhdGVkIHdhc1JldmFsaWRhdGVkLCBzdGQ6OmZ1
bmN0aW9uPHZvaWQoKT4mJiBsaWZldGltZVJlYWNoZWRIYW5kbGVyKQorICAgIFByZWxvYWRlZEVu
dHJ5KHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gZW50cnksIHN0ZDo6dW5pcXVlX3B0cjxSZXNvdXJj
ZVJlcXVlc3Q+IHNwZWN1bGF0aXZlVmFsaWRhdGlvblJlcXVlc3QsIHN0ZDo6ZnVuY3Rpb248dm9p
ZCgpPiYmIGxpZmV0aW1lUmVhY2hlZEhhbmRsZXIpCiAgICAgICAgIDogRXhwaXJpbmdFbnRyeShX
VEZNb3ZlKGxpZmV0aW1lUmVhY2hlZEhhbmRsZXIpKQogICAgICAgICAsIG1fZW50cnkoV1RGTW92
ZShlbnRyeSkpCi0gICAgICAgICwgbV93YXNSZXZhbGlkYXRlZCh3YXNSZXZhbGlkYXRlZCA9PSBX
YXNSZXZhbGlkYXRlZDo6WWVzKQorICAgICAgICAsIG1fc3BlY3VsYXRpdmVWYWxpZGF0aW9uUmVx
dWVzdChXVEZNb3ZlKHNwZWN1bGF0aXZlVmFsaWRhdGlvblJlcXVlc3QpKQogICAgIHsgfQogCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiB0YWtlQ2FjaGVFbnRyeSgpCkBAIC0xNDQsMTEgKzE0
NSwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBXVEZNb3ZlKG1fZW50cnkpOwogICAgIH0K
IAotICAgIGJvb2wgd2FzUmV2YWxpZGF0ZWQoKSBjb25zdCB7IHJldHVybiBtX3dhc1JldmFsaWRh
dGVkOyB9CisgICAgUmVzb3VyY2VSZXF1ZXN0KiByZXZhbGlkYXRpb25SZXF1ZXN0KCkgY29uc3Qg
eyByZXR1cm4gbV9zcGVjdWxhdGl2ZVZhbGlkYXRpb25SZXF1ZXN0LmdldCgpOyB9CisgICAgYm9v
bCB3YXNSZXZhbGlkYXRlZCgpIGNvbnN0IHsgcmV0dXJuICEhbV9zcGVjdWxhdGl2ZVZhbGlkYXRp
b25SZXF1ZXN0OyB9CiAKIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBtX2Vu
dHJ5OwotICAgIGJvb2wgbV93YXNSZXZhbGlkYXRlZDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVz
b3VyY2VSZXF1ZXN0PiBtX3NwZWN1bGF0aXZlVmFsaWRhdGlvblJlcXVlc3Q7CiB9OwogCiBjbGFz
cyBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpQZW5kaW5nRnJhbWVMb2FkIDogcHVibGljIFJlZkNv
dW50ZWQ8UGVuZGluZ0ZyYW1lTG9hZD4gewpAQCAtMjQ2LDIyICsyNDgsODkgQEAgU3BlY3VsYXRp
dmVMb2FkTWFuYWdlcjo6flNwZWN1bGF0aXZlTG9hZE1hbmFnZXIoKQogewogfQogCi1ib29sIFNw
ZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnJldHJpZXZlKGNvbnN0IEdsb2JhbEZyYW1lSUQmIGZyYW1l
SUQsIGNvbnN0IEtleSYgc3RvcmFnZUtleSwgY29uc3QgUmV0cmlldmVDb21wbGV0aW9uSGFuZGxl
ciYgY29tcGxldGlvbkhhbmRsZXIpCisjaWYgIUxPR19ESVNBQkxFRAorCitzdGF0aWMgdm9pZCBk
dW1wSFRUUEhlYWRlcnNEaWZmKGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnNBLCBjb25zdCBI
VFRQSGVhZGVyTWFwJiBoZWFkZXJzQikKK3sKKyAgICBhdXRvIGFFbmQgPSBoZWFkZXJzQS5lbmQo
KTsKKyAgICBmb3IgKGF1dG8gaXQgPSBoZWFkZXJzQS5iZWdpbigpOyBpdCAhPSBhRW5kOyArK2l0
KSB7CisgICAgICAgIFN0cmluZyB2YWx1ZUIgPSBoZWFkZXJzQi5nZXQoaXQtPmtleSk7CisgICAg
ICAgIGlmICh2YWx1ZUIuaXNOdWxsKCkpCisgICAgICAgICAgICBMT0coTmV0d29ya0NhY2hlU3Bl
Y3VsYXRpdmVQcmVsb2FkaW5nLCAiKiAnJXMnIEhUVFAgaGVhZGVyIGlzIG9ubHkgaW4gZmlyc3Qg
cmVxdWVzdCAodmFsdWU6ICVzKSIsIGl0LT5rZXkudXRmOCgpLmRhdGEoKSwgaXQtPnZhbHVlLnV0
ZjgoKS5kYXRhKCkpOworICAgICAgICBlbHNlIGlmIChpdC0+dmFsdWUgIT0gdmFsdWVCKQorICAg
ICAgICAgICAgTE9HKE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUHJlbG9hZGluZywgIiogJyVzJyBI
VFRQIGhlYWRlciBkaWZmZXJzIGluIGJvdGggcmVxdWVzdHM6ICVzICE9ICVzIiwgaXQtPmtleS51
dGY4KCkuZGF0YSgpLCBpdC0+dmFsdWUudXRmOCgpLmRhdGEoKSwgdmFsdWVCLnV0ZjgoKS5kYXRh
KCkpOworICAgIH0KKyAgICBhdXRvIGJFbmQgPSBoZWFkZXJzQi5lbmQoKTsKKyAgICBmb3IgKGF1
dG8gaXQgPSBoZWFkZXJzQi5iZWdpbigpOyBpdCAhPSBiRW5kOyArK2l0KSB7CisgICAgICAgIGlm
ICghaGVhZGVyc0EuY29udGFpbnMoaXQtPmtleSkpCisgICAgICAgICAgICBMT0coTmV0d29ya0Nh
Y2hlU3BlY3VsYXRpdmVQcmVsb2FkaW5nLCAiKiAnJXMnIEhUVFAgaGVhZGVyIGlzIG9ubHkgaW4g
c2Vjb25kIHJlcXVlc3QgKHZhbHVlOiAlcykiLCBpdC0+a2V5LnV0ZjgoKS5kYXRhKCksIGl0LT52
YWx1ZS51dGY4KCkuZGF0YSgpKTsKKyAgICB9Cit9CisKKyNlbmRpZgorCitzdGF0aWMgYm9vbCBy
ZXF1ZXN0c0hlYWRlcnNNYXRjaChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGEsIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgYikKK3sKKyAgICBzdGF0aWMgY29uc3QgSFRUUEhlYWRlck5hbWUgaGVhZGVy
c0FsbG93ZWRUb01pc21hdGNoW10gPSB7CisgICAgICAgIEhUVFBIZWFkZXJOYW1lOjpJZk1hdGNo
LAorICAgICAgICBIVFRQSGVhZGVyTmFtZTo6SWZNb2RpZmllZFNpbmNlLAorICAgICAgICBIVFRQ
SGVhZGVyTmFtZTo6SWZOb25lTWF0Y2gsCisgICAgICAgIEhUVFBIZWFkZXJOYW1lOjpJZlJhbmdl
LAorICAgICAgICBIVFRQSGVhZGVyTmFtZTo6SWZVbm1vZGlmaWVkU2luY2UsCisgICAgICAgIEhU
VFBIZWFkZXJOYW1lOjpDYWNoZUNvbnRyb2wKKyAgICB9OworCisgICAgSFRUUEhlYWRlck1hcCBo
ZWFkZXJzQSA9IGEuaHR0cEhlYWRlckZpZWxkcygpOworICAgIEhUVFBIZWFkZXJNYXAgaGVhZGVy
c0IgPSBiLmh0dHBIZWFkZXJGaWVsZHMoKTsKKyAgICBmb3IgKGF1dG8gaGVhZGVyTmFtZSA6IGhl
YWRlcnNBbGxvd2VkVG9NaXNtYXRjaCkgeworICAgICAgICBoZWFkZXJzQS5yZW1vdmUoaGVhZGVy
TmFtZSk7CisgICAgICAgIGhlYWRlcnNCLnJlbW92ZShoZWFkZXJOYW1lKTsKKyAgICB9CisKKyAg
ICBpZiAoaGVhZGVyc0EgIT0gaGVhZGVyc0IpIHsKKyAgICAgICAgTE9HKE5ldHdvcmtDYWNoZVNw
ZWN1bGF0aXZlUHJlbG9hZGluZywgIkNhbm5vdCByZXVzZSBzcGVjdWxhdGl2ZWx5IHZhbGlkYXRl
ZCBlbnRyeSBiZWNhdXNlIEhUVFAgaGVhZGVycyB1c2VkIGZvciB2YWxpZGF0aW9uIGRvIG5vdCBt
YXRjaCIpOworI2lmICFMT0dfRElTQUJMRUQKKyAgICAgICAgZHVtcEhUVFBIZWFkZXJzRGlmZiho
ZWFkZXJzQSwgaGVhZGVyc0IpOworI2VuZGlmCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6Y2Fu
VXNlUHJlbG9hZGVkRW50cnkoY29uc3QgUHJlbG9hZGVkRW50cnkmIGVudHJ5LCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIGFjdHVhbFJlcXVlc3QpCit7CisgICAgaWYgKCFlbnRyeS53YXNSZXZhbGlk
YXRlZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIEFTU0VSVChlbnRyeS5yZXZhbGlk
YXRpb25SZXF1ZXN0KCkpOworICAgIHJldHVybiByZXF1ZXN0c0hlYWRlcnNNYXRjaCgqZW50cnku
cmV2YWxpZGF0aW9uUmVxdWVzdCgpLCBhY3R1YWxSZXF1ZXN0KTsKK30KKworYm9vbCBTcGVjdWxh
dGl2ZUxvYWRNYW5hZ2VyOjpjYW5Vc2VQZW5kaW5nUHJlbG9hZChjb25zdCBTcGVjdWxhdGl2ZUxv
YWQmIGxvYWQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgYWN0dWFsUmVxdWVzdCkKK3sKKyAgICBy
ZXR1cm4gcmVxdWVzdHNIZWFkZXJzTWF0Y2gobG9hZC5vcmlnaW5hbFJlcXVlc3QoKSwgYWN0dWFs
UmVxdWVzdCk7Cit9CisKK2Jvb2wgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6cmV0cmlldmUoY29u
c3QgR2xvYmFsRnJhbWVJRCYgZnJhbWVJRCwgY29uc3QgS2V5JiBzdG9yYWdlS2V5LCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJldHJpZXZlQ29tcGxldGlv
bkhhbmRsZXImIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIC8vIENoZWNrIGFscmVhZHkgcHJl
bG9hZGVkIGVudHJpZXMuCiAgICAgaWYgKGF1dG8gcHJlbG9hZGVkRW50cnkgPSBtX3ByZWxvYWRl
ZEVudHJpZXMudGFrZShzdG9yYWdlS2V5KSkgeworICAgICAgICBpZiAoIWNhblVzZVByZWxvYWRl
ZEVudHJ5KCpwcmVsb2FkZWRFbnRyeSwgcmVxdWVzdCkpIHsKKyAgICAgICAgICAgIExPRyhOZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZVByZWxvYWRpbmcsICIoTmV0d29ya1Byb2Nlc3MpIFJldHJpZXZh
bDogQ291bGQgbm90IHVzZSBwcmVsb2FkZWQgZW50cnkgdG8gc2F0aXNmeSByZXF1ZXN0IGZvciAn
JXMnIGR1ZSB0byBIVFRQIGhlYWRlcnMgbWlzbWF0Y2g6Iiwgc3RvcmFnZUtleS5pZGVudGlmaWVy
KCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBsb2dTcGVjdWxhdGl2ZUxvYWRpbmdEaWFn
bm9zdGljTWVzc2FnZShmcmFtZUlELCBwcmVsb2FkZWRFbnRyeS0+d2FzUmV2YWxpZGF0ZWQoKSA/
IERpYWdub3N0aWNMb2dnaW5nS2V5czo6d2FzdGVkU3BlY3VsYXRpdmVXYXJtdXBXaXRoUmV2YWxp
ZGF0aW9uS2V5KCkgOiBEaWFnbm9zdGljTG9nZ2luZ0tleXM6Ondhc3RlZFNwZWN1bGF0aXZlV2Fy
bXVwV2l0aG91dFJldmFsaWRhdGlvbktleSgpKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgfQorCiAgICAgICAgIExPRyhOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVByZWxvYWRp
bmcsICIoTmV0d29ya1Byb2Nlc3MpIFJldHJpZXZhbDogVXNpbmcgcHJlbG9hZGVkIGVudHJ5IHRv
IHNhdGlzZnkgcmVxdWVzdCBmb3IgJyVzJzoiLCBzdG9yYWdlS2V5LmlkZW50aWZpZXIoKS51dGY4
KCkuZGF0YSgpKTsKLSAgICAgICAgaWYgKHByZWxvYWRlZEVudHJ5LT53YXNSZXZhbGlkYXRlZCgp
KQotICAgICAgICAgICAgbG9nU3BlY3VsYXRpdmVMb2FkaW5nRGlhZ25vc3RpY01lc3NhZ2UoZnJh
bWVJRCwgRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpzdWNjZXNzZnVsU3BlY3VsYXRpdmVXYXJtdXBX
aXRoUmV2YWxpZGF0aW9uS2V5KCkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBsb2dTcGVj
dWxhdGl2ZUxvYWRpbmdEaWFnbm9zdGljTWVzc2FnZShmcmFtZUlELCBEaWFnbm9zdGljTG9nZ2lu
Z0tleXM6OnN1Y2Nlc3NmdWxTcGVjdWxhdGl2ZVdhcm11cFdpdGhvdXRSZXZhbGlkYXRpb25LZXko
KSk7CisgICAgICAgIGxvZ1NwZWN1bGF0aXZlTG9hZGluZ0RpYWdub3N0aWNNZXNzYWdlKGZyYW1l
SUQsIHByZWxvYWRlZEVudHJ5LT53YXNSZXZhbGlkYXRlZCgpID8gRGlhZ25vc3RpY0xvZ2dpbmdL
ZXlzOjpzdWNjZXNzZnVsU3BlY3VsYXRpdmVXYXJtdXBXaXRoUmV2YWxpZGF0aW9uS2V5KCkgOiBE
aWFnbm9zdGljTG9nZ2luZ0tleXM6OnN1Y2Nlc3NmdWxTcGVjdWxhdGl2ZVdhcm11cFdpdGhvdXRS
ZXZhbGlkYXRpb25LZXkoKSk7CiAKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocHJlbG9hZGVk
RW50cnktPnRha2VDYWNoZUVudHJ5KCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAK
ICAgICAvLyBDaGVjayBwZW5kaW5nIHNwZWN1bGF0aXZlIHJldmFsaWRhdGlvbnMuCi0gICAgaWYg
KCFtX3BlbmRpbmdQcmVsb2Fkcy5jb250YWlucyhzdG9yYWdlS2V5KSkgeworICAgIGF1dG8qIHBl
bmRpbmdQcmVsb2FkID0gbV9wZW5kaW5nUHJlbG9hZHMuZ2V0KHN0b3JhZ2VLZXkpOworICAgIGlm
ICghcGVuZGluZ1ByZWxvYWQpIHsKICAgICAgICAgaWYgKG1fbm90UHJlbG9hZGVkRW50cmllcy5y
ZW1vdmUoc3RvcmFnZUtleSkpCiAgICAgICAgICAgICBsb2dTcGVjdWxhdGl2ZUxvYWRpbmdEaWFn
bm9zdGljTWVzc2FnZShmcmFtZUlELCBEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmVudHJ5V3Jvbmds
eU5vdFdhcm1lZFVwS2V5KCkpOwogICAgICAgICBlbHNlCkBAIC0yNzAsNiArMzM5LDEyIEBAIGJv
b2wgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6cmV0cmlldmUoY29uc3QgR2xvYmFsRnJhbWVJRCYg
ZnJhbWVJRCwgY29uc3QgS2V5JiBzCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKKyAg
ICBpZiAoIWNhblVzZVBlbmRpbmdQcmVsb2FkKCpwZW5kaW5nUHJlbG9hZCwgcmVxdWVzdCkpIHsK
KyAgICAgICAgTE9HKE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUHJlbG9hZGluZywgIihOZXR3b3Jr
UHJvY2VzcykgUmV0cmlldmFsOiByZXZhbGlkYXRpb24gYWxyZWFkeSBpbiBwcm9ncmVzcyBmb3Ig
JyVzJyBidXQgdW51c2FibGUgZHVlIHRvIEhUVFAgaGVhZGVycyBtaXNtYXRjaDoiLCBzdG9yYWdl
S2V5LmlkZW50aWZpZXIoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgbG9nU3BlY3VsYXRpdmVM
b2FkaW5nRGlhZ25vc3RpY01lc3NhZ2UoZnJhbWVJRCwgRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjp3
YXN0ZWRTcGVjdWxhdGl2ZVdhcm11cFdpdGhSZXZhbGlkYXRpb25LZXkoKSk7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKICAgICBMT0coTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVQcmVs
b2FkaW5nLCAiKE5ldHdvcmtQcm9jZXNzKSBSZXRyaWV2YWw6IHJldmFsaWRhdGlvbiBhbHJlYWR5
IGluIHByb2dyZXNzIGZvciAnJXMnOiIsIHN0b3JhZ2VLZXkuaWRlbnRpZmllcigpLnV0ZjgoKS5k
YXRhKCkpOwogCiAgICAgLy8gRklYTUU6IFRoaXMgYnJlYWtzIGluY3JlbWVudGFsIGxvYWRpbmcg
d2hlbiB0aGUgcmV2YWxpZGF0aW9uIGlzIG5vdCBzdWNjZXNzZnVsLgpAQCAtMzE2LDEyICszOTEs
MTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpyZWdpc3RlckxvYWQoY29uc3QgR2xv
YmFsRnJhbWVJRCYgZnJhbWVJRCwgY29uc3QgUmUKICAgICAgICAgcGVuZGluZ0ZyYW1lTG9hZC0+
cmVnaXN0ZXJTdWJyZXNvdXJjZUxvYWQocmVxdWVzdCwgcmVzb3VyY2VLZXkpOwogfQogCi12b2lk
IFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OmFkZFByZWxvYWRlZEVudHJ5KHN0ZDo6dW5pcXVlX3B0
cjxFbnRyeT4gZW50cnksIGNvbnN0IEdsb2JhbEZyYW1lSUQmIGZyYW1lSUQsIFdhc1JldmFsaWRh
dGVkIHdhc1JldmFsaWRhdGVkKQordm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjphZGRQcmVs
b2FkZWRFbnRyeShzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IGVudHJ5LCBjb25zdCBHbG9iYWxGcmFt
ZUlEJiBmcmFtZUlELCBzdGQ6OnVuaXF1ZV9wdHI8UmVzb3VyY2VSZXF1ZXN0PiByZXZhbGlkYXRp
b25SZXF1ZXN0KQogewogICAgIEFTU0VSVChlbnRyeSk7CiAgICAgQVNTRVJUKCFlbnRyeS0+bmVl
ZHNWYWxpZGF0aW9uKCkpOwogICAgIGF1dG8ga2V5ID0gZW50cnktPmtleSgpOwotICAgIG1fcHJl
bG9hZGVkRW50cmllcy5hZGQoa2V5LCBzdGQ6Om1ha2VfdW5pcXVlPFByZWxvYWRlZEVudHJ5PihX
VEZNb3ZlKGVudHJ5KSwgd2FzUmV2YWxpZGF0ZWQsIFt0aGlzLCBrZXksIGZyYW1lSURdIHsKKyAg
ICBtX3ByZWxvYWRlZEVudHJpZXMuYWRkKGtleSwgc3RkOjptYWtlX3VuaXF1ZTxQcmVsb2FkZWRF
bnRyeT4oV1RGTW92ZShlbnRyeSksIFdURk1vdmUocmV2YWxpZGF0aW9uUmVxdWVzdCksIFt0aGlz
LCBrZXksIGZyYW1lSURdIHsKICAgICAgICAgYXV0byBwcmVsb2FkZWRFbnRyeSA9IG1fcHJlbG9h
ZGVkRW50cmllcy50YWtlKGtleSk7CiAgICAgICAgIEFTU0VSVChwcmVsb2FkZWRFbnRyeSk7CiAg
ICAgICAgIGlmIChwcmVsb2FkZWRFbnRyeS0+d2FzUmV2YWxpZGF0ZWQoKSkKQEAgLTM4MSwxMyAr
NDU2LDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6cmV2YWxpZGF0ZUVudHJ5KHN0
ZDo6dW5pcXVlX3B0cjxFbnRyeT4gZW50cnksIGNvbnN0CiAgICAgaWYgKCFrZXkucmFuZ2UoKS5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlc291cmNlUmVxdWVzdCByZXZhbGlk
YXRpb25SZXF1ZXN0ID0gY29uc3RydWN0UmV2YWxpZGF0aW9uUmVxdWVzdCgqZW50cnksIHN1YnJl
c291cmNlSW5mbyk7CisgICAgUmVzb3VyY2VSZXF1ZXN0KiByZXZhbGlkYXRpb25SZXF1ZXN0UHRy
ID0gY29uc3RydWN0UmV2YWxpZGF0aW9uUmVxdWVzdCgqZW50cnksIHN1YnJlc291cmNlSW5mbyku
cmVsZWFzZSgpOwogCiAgICAgTE9HKE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUHJlbG9hZGluZywg
IihOZXR3b3JrUHJvY2VzcykgU3BlY3VsYXRpdmVseSByZXZhbGlkYXRpbmcgJyVzJzoiLCBrZXku
aWRlbnRpZmllcigpLnV0ZjgoKS5kYXRhKCkpOwotICAgIGF1dG8gcmV2YWxpZGF0b3IgPSBzdGQ6
Om1ha2VfdW5pcXVlPFNwZWN1bGF0aXZlTG9hZD4oZnJhbWVJRCwgcmV2YWxpZGF0aW9uUmVxdWVz
dCwgV1RGTW92ZShlbnRyeSksIFt0aGlzLCBrZXksIGZyYW1lSURdKHN0ZDo6dW5pcXVlX3B0cjxF
bnRyeT4gcmV2YWxpZGF0ZWRFbnRyeSkgeworCisgICAgYXV0byByZXZhbGlkYXRvciA9IHN0ZDo6
bWFrZV91bmlxdWU8U3BlY3VsYXRpdmVMb2FkPihmcmFtZUlELCAqcmV2YWxpZGF0aW9uUmVxdWVz
dFB0ciwgV1RGTW92ZShlbnRyeSksIFt0aGlzLCBrZXksIHJldmFsaWRhdGlvblJlcXVlc3RQdHIs
IGZyYW1lSURdKHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gcmV2YWxpZGF0ZWRFbnRyeSkgewogICAg
ICAgICBBU1NFUlQoIXJldmFsaWRhdGVkRW50cnkgfHwgIXJldmFsaWRhdGVkRW50cnktPm5lZWRz
VmFsaWRhdGlvbigpKTsKICAgICAgICAgQVNTRVJUKCFyZXZhbGlkYXRlZEVudHJ5IHx8IHJldmFs
aWRhdGVkRW50cnktPmtleSgpID09IGtleSk7CiAKKyAgICAgICAgYXV0byByZXZhbGlkYXRpb25S
ZXF1ZXN0ID0gc3RkOjp1bmlxdWVfcHRyPFJlc291cmNlUmVxdWVzdD4ocmV2YWxpZGF0aW9uUmVx
dWVzdFB0cik7CiAgICAgICAgIGF1dG8gcHJvdGVjdFJldmFsaWRhdG9yID0gbV9wZW5kaW5nUHJl
bG9hZHMudGFrZShrZXkpOwogICAgICAgICBMT0coTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVQcmVs
b2FkaW5nLCAiKE5ldHdvcmtQcm9jZXNzKSBTcGVjdWxhdGl2ZSByZXZhbGlkYXRpb24gY29tcGxl
dGVkIGZvciAnJXMnOiIsIGtleS5pZGVudGlmaWVyKCkudXRmOCgpLmRhdGEoKSk7CiAKQEAgLTM5
OCw3ICs0NzUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnJldmFsaWRhdGVFbnRy
eShzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IGVudHJ5LCBjb25zdAogICAgICAgICB9CiAKICAgICAg
ICAgaWYgKHJldmFsaWRhdGVkRW50cnkpCi0gICAgICAgICAgICBhZGRQcmVsb2FkZWRFbnRyeShX
VEZNb3ZlKHJldmFsaWRhdGVkRW50cnkpLCBmcmFtZUlELCBXYXNSZXZhbGlkYXRlZDo6WWVzKTsK
KyAgICAgICAgICAgIGFkZFByZWxvYWRlZEVudHJ5KFdURk1vdmUocmV2YWxpZGF0ZWRFbnRyeSks
IGZyYW1lSUQsIFdURk1vdmUocmV2YWxpZGF0aW9uUmVxdWVzdCkpOwogICAgIH0pOwogICAgIG1f
cGVuZGluZ1ByZWxvYWRzLmFkZChrZXksIFdURk1vdmUocmV2YWxpZGF0b3IpKTsKIH0KQEAgLTQw
Niw3ICs0ODMsOSBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnJldmFsaWRhdGVFbnRy
eShzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IGVudHJ5LCBjb25zdAogdm9pZCBTcGVjdWxhdGl2ZUxv
YWRNYW5hZ2VyOjpwcmVsb2FkRW50cnkoY29uc3QgS2V5JiBrZXksIGNvbnN0IFN1YnJlc291cmNl
SW5mbyYgc3ViUmVzb3VyY2VJbmZvLCBjb25zdCBHbG9iYWxGcmFtZUlEJiBmcmFtZUlEKQogewog
ICAgIG1fcGVuZGluZ1ByZWxvYWRzLmFkZChrZXksIG51bGxwdHIpOwotICAgIHJldHJpZXZlRW50
cnlGcm9tU3RvcmFnZShrZXksIFt0aGlzLCBrZXksIHN1YlJlc291cmNlSW5mbywgZnJhbWVJRF0o
c3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBlbnRyeSkgeworICAgIGF1dG8qIHN1YlJlc291cmNlSW5m
b1B0ciA9IG5ldyBTdWJyZXNvdXJjZUluZm8oc3ViUmVzb3VyY2VJbmZvKTsKKyAgICByZXRyaWV2
ZUVudHJ5RnJvbVN0b3JhZ2Uoa2V5LCBbdGhpcywga2V5LCBzdWJSZXNvdXJjZUluZm9QdHIsIGZy
YW1lSURdKHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gZW50cnkpIHsKKyAgICAgICAgYXV0byBzdWJS
ZXNvdXJjZUluZm8gPSBzdGQ6OnVuaXF1ZV9wdHI8U3VicmVzb3VyY2VJbmZvPihzdWJSZXNvdXJj
ZUluZm9QdHIpOwogICAgICAgICBtX3BlbmRpbmdQcmVsb2Fkcy5yZW1vdmUoa2V5KTsKIAogICAg
ICAgICBpZiAoc2F0aXNmeVBlbmRpbmdSZXF1ZXN0cyhrZXksIGVudHJ5LmdldCgpKSkgewpAQCAt
NDE5LDE3ICs0OTgsMTcgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpwcmVsb2FkRW50
cnkoY29uc3QgS2V5JiBrZXksIGNvbnN0IFN1YnJlc291cmNlSW5mbyYKICAgICAgICAgICAgIHJl
dHVybjsKIAogICAgICAgICBpZiAoZW50cnktPm5lZWRzVmFsaWRhdGlvbigpKQotICAgICAgICAg
ICAgcmV2YWxpZGF0ZUVudHJ5KFdURk1vdmUoZW50cnkpLCBzdWJSZXNvdXJjZUluZm8sIGZyYW1l
SUQpOworICAgICAgICAgICAgcmV2YWxpZGF0ZUVudHJ5KFdURk1vdmUoZW50cnkpLCAqc3ViUmVz
b3VyY2VJbmZvLCBmcmFtZUlEKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgYWRkUHJlbG9h
ZGVkRW50cnkoV1RGTW92ZShlbnRyeSksIGZyYW1lSUQsIFdhc1JldmFsaWRhdGVkOjpObyk7Cisg
ICAgICAgICAgICBhZGRQcmVsb2FkZWRFbnRyeShXVEZNb3ZlKGVudHJ5KSwgZnJhbWVJRCk7CiAg
ICAgfSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6c3RhcnRTcGVjdWxhdGl2
ZVJldmFsaWRhdGlvbihjb25zdCBHbG9iYWxGcmFtZUlEJiBmcmFtZUlELCBTdWJyZXNvdXJjZXNF
bnRyeSYgZW50cnkpCiB7CiAgICAgZm9yIChhdXRvJiBzdWJyZXNvdXJjZVBhaXIgOiBlbnRyeS5z
dWJyZXNvdXJjZXMoKSkgewotICAgICAgICBhdXRvIGtleSA9IHN1YnJlc291cmNlUGFpci5rZXk7
Ci0gICAgICAgIGF1dG8gc3VicmVzb3VyY2VJbmZvID0gc3VicmVzb3VyY2VQYWlyLnZhbHVlOwor
ICAgICAgICBhdXRvJiBrZXkgPSBzdWJyZXNvdXJjZVBhaXIua2V5OworICAgICAgICBhdXRvJiBz
dWJyZXNvdXJjZUluZm8gPSBzdWJyZXNvdXJjZVBhaXIudmFsdWU7CiAgICAgICAgIGlmICghc3Vi
cmVzb3VyY2VJbmZvLmlzVHJhbnNpZW50KQogICAgICAgICAgICAgcHJlbG9hZEVudHJ5KGtleSwg
c3VicmVzb3VyY2VJbmZvLCBmcmFtZUlEKTsKICAgICAgICAgZWxzZSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2
ZUxvYWRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmgKaW5kZXggMDBjODMzYjM0NmM4NjNjM2Nm
ODc5OTg4Mjg0MjUwZjUxZDJmMjZlNC4uZGNiYmZhYmFhOWY1ZmM2NzZiZTM5MmQ3NTc4MjY5Nzkz
YjkyOGY5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIu
aApAQCAtNTEsMTEgKzUxLDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVyTG9hZChjb25z
dCBHbG9iYWxGcmFtZUlEJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3Qg
S2V5JiByZXNvdXJjZUtleSk7CiAKICAgICB0eXBlZGVmIHN0ZDo6ZnVuY3Rpb248dm9pZCAoc3Rk
Ojp1bmlxdWVfcHRyPEVudHJ5Pik+IFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXI7Ci0gICAgYm9v
bCByZXRyaWV2ZShjb25zdCBHbG9iYWxGcmFtZUlEJiwgY29uc3QgS2V5JiBzdG9yYWdlS2V5LCBj
b25zdCBSZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyJik7CisgICAgYm9vbCByZXRyaWV2ZShjb25z
dCBHbG9iYWxGcmFtZUlEJiwgY29uc3QgS2V5JiBzdG9yYWdlS2V5LCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyJik7CiAKIHBy
aXZhdGU6Ci0gICAgZW51bSBjbGFzcyBXYXNSZXZhbGlkYXRlZCB7IE5vLCBZZXMgfTsKLSAgICB2
b2lkIGFkZFByZWxvYWRlZEVudHJ5KHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4sIGNvbnN0IEdsb2Jh
bEZyYW1lSUQmLCBXYXNSZXZhbGlkYXRlZCk7CisgICAgY2xhc3MgUHJlbG9hZGVkRW50cnk7CisK
KyAgICB2b2lkIGFkZFByZWxvYWRlZEVudHJ5KHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4sIGNvbnN0
IEdsb2JhbEZyYW1lSUQmLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
PiByZXZhbGlkYXRpb25SZXF1ZXN0ID0gbnVsbHB0cik7CiAgICAgdm9pZCBwcmVsb2FkRW50cnko
Y29uc3QgS2V5JiwgY29uc3QgU3VicmVzb3VyY2VJbmZvJiwgY29uc3QgR2xvYmFsRnJhbWVJRCYp
OwogICAgIHZvaWQgcmV0cmlldmVFbnRyeUZyb21TdG9yYWdlKGNvbnN0IEtleSYsIGNvbnN0IFJl
dHJpZXZlQ29tcGxldGlvbkhhbmRsZXImKTsKICAgICB2b2lkIHJldmFsaWRhdGVFbnRyeShzdGQ6
OnVuaXF1ZV9wdHI8RW50cnk+LCBjb25zdCBTdWJyZXNvdXJjZUluZm8mLCBjb25zdCBHbG9iYWxG
cmFtZUlEJik7CkBAIC02Myw2ICs2NCw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXRyaWV2ZVN1
YnJlc291cmNlc0VudHJ5KGNvbnN0IEtleSYgc3RvcmFnZUtleSwgc3RkOjpmdW5jdGlvbjx2b2lk
IChzdGQ6OnVuaXF1ZV9wdHI8U3VicmVzb3VyY2VzRW50cnk+KT4pOwogICAgIHZvaWQgc3RhcnRT
cGVjdWxhdGl2ZVJldmFsaWRhdGlvbihjb25zdCBHbG9iYWxGcmFtZUlEJiwgU3VicmVzb3VyY2Vz
RW50cnkmKTsKIAorICAgIHN0YXRpYyBib29sIGNhblVzZVByZWxvYWRlZEVudHJ5KGNvbnN0IFBy
ZWxvYWRlZEVudHJ5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBhY3R1YWxSZXF1
ZXN0KTsKKyAgICBzdGF0aWMgYm9vbCBjYW5Vc2VQZW5kaW5nUHJlbG9hZChjb25zdCBTcGVjdWxh
dGl2ZUxvYWQmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIGFjdHVhbFJlcXVlc3Qp
OworCiAgICAgU3RvcmFnZSYgbV9zdG9yYWdlOwogCiAgICAgY2xhc3MgUGVuZGluZ0ZyYW1lTG9h
ZDsKQEAgLTcxLDcgKzc1LDYgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPEtleSwgc3RkOjp1bmlx
dWVfcHRyPFNwZWN1bGF0aXZlTG9hZD4+IG1fcGVuZGluZ1ByZWxvYWRzOwogICAgIEhhc2hNYXA8
S2V5LCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXI+Pj4g
bV9wZW5kaW5nUmV0cmlldmVSZXF1ZXN0czsKIAotICAgIGNsYXNzIFByZWxvYWRlZEVudHJ5Owog
ICAgIEhhc2hNYXA8S2V5LCBzdGQ6OnVuaXF1ZV9wdHI8UHJlbG9hZGVkRW50cnk+PiBtX3ByZWxv
YWRlZEVudHJpZXM7CiAKICAgICBjbGFzcyBFeHBpcmluZ0VudHJ5OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3VicmVzb3VyY2Vz
RW50cnkuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlU3VicmVzb3VyY2VzRW50cnkuY3BwCmluZGV4IDU2NGI4NWRiNDg1NDZkOGZmZjg4YTE3ODRm
ZDMwZmE0NTAyOTQ3ZTkuLmEyOGNiY2EwOWI0ODBlOWJkNDJkMjhkZjA0ODU0YjY3ZjgxOGY4ZWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVN1YnJlc291cmNlc0VudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5jcHAKQEAgLTQwLDcgKzQw
LDcgQEAgdm9pZCBTdWJyZXNvdXJjZUluZm86OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAogewogICAgIGVuY29kZXIgPDwgZmlyc3RQYXJ0eUZvckNvb2tpZXM7CiAgICAgZW5jb2RlciA8
PCBpc1RyYW5zaWVudDsKLSAgICBlbmNvZGVyIDw8IGh0dHBVc2VyQWdlbnQ7CisgICAgcmVxdWVz
dEhlYWRlcnMuZW5jb2RlKGVuY29kZXIpOwogfQogCiBib29sIFN1YnJlc291cmNlSW5mbzo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIsIFN1YnJlc291cmNlSW5mbyYgaW5mbykKQEAgLTQ5LDI2ICs0
OSwxMSBAQCBib29sIFN1YnJlc291cmNlSW5mbzo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFN1
YnJlc291cmNlSW5mbyYgaW5mbykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoaW5mby5pc1RyYW5zaWVudCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGluZm8uaHR0cFVzZXJBZ2VudCkpCisgICAgaWYgKCFXZWJD
b3JlOjpIVFRQSGVhZGVyTWFwOjpkZWNvZGUoZGVjb2RlciwgaW5mby5yZXF1ZXN0SGVhZGVycykp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotU3VicmVzb3Vy
Y2VJbmZvOjpTdWJyZXNvdXJjZUluZm8oY29uc3QgU3VicmVzb3VyY2VJbmZvJiBzdWJyZXNvdXJj
ZUluZm8pCi0gICAgOiBmaXJzdFBhcnR5Rm9yQ29va2llcyhzdWJyZXNvdXJjZUluZm8uZmlyc3RQ
YXJ0eUZvckNvb2tpZXMuaXNvbGF0ZWRDb3B5KCkpCi0gICAgLCBodHRwVXNlckFnZW50KHN1YnJl
c291cmNlSW5mby5odHRwVXNlckFnZW50Lmlzb2xhdGVkQ29weSgpKQotICAgICwgaXNUcmFuc2ll
bnQoc3VicmVzb3VyY2VJbmZvLmlzVHJhbnNpZW50KQotewotfQotCi1TdWJyZXNvdXJjZUluZm8m
IFN1YnJlc291cmNlSW5mbzo6b3BlcmF0b3I9KGNvbnN0IFN1YnJlc291cmNlSW5mbyYgb3RoZXIp
Ci17Ci0gICAgZmlyc3RQYXJ0eUZvckNvb2tpZXMgPSBvdGhlci5maXJzdFBhcnR5Rm9yQ29va2ll
cy5pc29sYXRlZENvcHkoKTsKLSAgICBodHRwVXNlckFnZW50ID0gb3RoZXIuaHR0cFVzZXJBZ2Vu
dC5pc29sYXRlZENvcHkoKTsKLSAgICBpc1RyYW5zaWVudCA9IG90aGVyLmlzVHJhbnNpZW50Owot
ICAgIHJldHVybiAqdGhpczsKLX0KLQogU3RvcmFnZTo6UmVjb3JkIFN1YnJlc291cmNlc0VudHJ5
OjplbmNvZGVBc1N0b3JhZ2VSZWNvcmQoKSBjb25zdAogewogICAgIEVuY29kZXIgZW5jb2RlcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVN1YnJlc291cmNlc0VudHJ5LmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5oCmluZGV4IGM3YjFjNTBlZGFiNjEz
Y2ZhNmI2NWI3NjNjZGM0MGRmMGY0M2YwYTYuLjY1YzM1YjBmNDQyZTg1MGUxY2UzYzBlOWZjMDY4
YTUxNzdlNTczN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmgKKysrIGIvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuaApAQCAt
MzksMjMgKzM5LDIxIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogbmFtZXNwYWNlIE5ldHdvcmtDYWNo
ZSB7CiAKIHN0cnVjdCBTdWJyZXNvdXJjZUluZm8geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOworcHVibGljOgorCiAgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHN0
YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwgU3VicmVzb3VyY2VJbmZvJik7CiAKICAgICBTdWJy
ZXNvdXJjZUluZm8oKSA9IGRlZmF1bHQ7CiAgICAgU3VicmVzb3VyY2VJbmZvKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBpc1RyYW5zaWVudCA9IGZhbHNlKQog
ICAgICAgICA6IGZpcnN0UGFydHlGb3JDb29raWVzKHJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tp
ZXMoKSkKLSAgICAgICAgLCBodHRwVXNlckFnZW50KHJlcXVlc3QuaHR0cFVzZXJBZ2VudCgpKQor
ICAgICAgICAsIHJlcXVlc3RIZWFkZXJzKHJlcXVlc3QuaHR0cEhlYWRlckZpZWxkcygpKQogICAg
ICAgICAsIGlzVHJhbnNpZW50KGlzVHJhbnNpZW50KQogICAgIHsgfQogCi0gICAgU3VicmVzb3Vy
Y2VJbmZvKGNvbnN0IFN1YnJlc291cmNlSW5mbyYpOwotICAgIFN1YnJlc291cmNlSW5mbyhTdWJy
ZXNvdXJjZUluZm8mJikgPSBkZWZhdWx0OwotICAgIFN1YnJlc291cmNlSW5mbyYgb3BlcmF0b3I9
KGNvbnN0IFN1YnJlc291cmNlSW5mbyYpOwotICAgIFN1YnJlc291cmNlSW5mbyYgb3BlcmF0b3I9
KFN1YnJlc291cmNlSW5mbyYmKSA9IGRlZmF1bHQ7Ci0KICAgICBXZWJDb3JlOjpVUkwgZmlyc3RQ
YXJ0eUZvckNvb2tpZXM7Ci0gICAgU3RyaW5nIGh0dHBVc2VyQWdlbnQ7CisgICAgV2ViQ29yZTo6
SFRUUEhlYWRlck1hcCByZXF1ZXN0SGVhZGVyczsKICAgICBib29sIGlzVHJhbnNpZW50IHsgZmFs
c2UgfTsKIH07CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCAwOTNhMzQxOGNmMDFiZjFkNjM5YmY0ZWVjMzFlYjYyNTlmMDA2
MGUyLi44ZTdmNTUxNmRlMzgyNjk4MzliNmZhMmQ3Y2Q5ZWJiMDFhMDZhZjIwIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTcgQEAKKzIwMTYtMDMtMjUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
KworICAgICAgICBEaXNrIGNhY2hlIHNwZWN1bGF0aXZlIHZhbGlkYXRpb24gcmVxdWVzdHMgZG8g
bm90IGhhdmUgdGhlICdSZWZlcmVyJyBIVFRQIGhlYWRlciBzZXQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTg5MAorICAgICAgICA8cmRhcjovL3By
b2JsZW0vMjUyNzk5NjI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVXBkYXRlIGV4aXN0aW5nIGxheW91dCB0ZXN0IHRvIG1ha2Ugc3VyZSB0aGF0IHNw
ZWN1bGF0aXZlIHZhbGlkYXRpb24KKyAgICAgICAgcmVxdWVzdHMgaGF2ZSB0aGVpciBIVFRQICdS
ZWZlcmVyJyBoZWFkZXIgc2V0LgorCisgICAgICAgICogaHR0cC90ZXN0cy9jYWNoZS9kaXNrLWNh
Y2hlL3NwZWN1bGF0aXZlLXZhbGlkYXRpb24vdmFsaWRhdGlvbi1yZXF1ZXN0LWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2NhY2hlL2Rpc2stY2FjaGUvc3BlY3VsYXRpdmUtdmFs
aWRhdGlvbi92YWxpZGF0aW9uLXJlcXVlc3QuaHRtbDoKKwogMjAxNi0wMy0yNSAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBBdWRpbyB0cmFja3MgaW4g
YWx0ZXJuYXRlIGdyb3VwcyBhcmUgbm90IHJlcHJlc2VudGVkIGNvcnJlY3RseSBhcyBBdWRpb1Ry
YWNrcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9kaXNrLWNhY2hl
L3NwZWN1bGF0aXZlLXZhbGlkYXRpb24vdmFsaWRhdGlvbi1yZXF1ZXN0LWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvZGlzay1jYWNoZS9zcGVjdWxhdGl2ZS12YWxp
ZGF0aW9uL3ZhbGlkYXRpb24tcmVxdWVzdC1leHBlY3RlZC50eHQKaW5kZXggOThiNGFlY2E3NDk0
NWM5MjRlNGI3OTkwMWNjMWY1MjI1NzYzMTU4NS4uMzRmZjY0NTBmYmYxNjM5NDZkZTI0MjA4NmZj
NTBjNDkxNzI3OGZiMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9k
aXNrLWNhY2hlL3NwZWN1bGF0aXZlLXZhbGlkYXRpb24vdmFsaWRhdGlvbi1yZXF1ZXN0LWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL2Rpc2stY2FjaGUvc3Bl
Y3VsYXRpdmUtdmFsaWRhdGlvbi92YWxpZGF0aW9uLXJlcXVlc3QtZXhwZWN0ZWQudHh0CkBAIC01
LDYgKzUsNyBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURQogCiBQQVNTIHZhbGlkYXRpb25SZXF1
ZXN0SGVhZGVyKCdJZi1Ob25lLU1hdGNoJykgaXMgIjEyMzQ1Njc4OSIKIFBBU1MgdmFsaWRhdGlv
blJlcXVlc3RIZWFkZXIoJ1VzZXItQWdlbnQnKSBpcyBpbml0aWFsVXNlckFnZW50CitQQVNTIHZh
bGlkYXRpb25SZXF1ZXN0SGVhZGVyKCdSZWZlcmVyJykgaXMgaW5pdGlhbFJlZmVyZXIKIFBBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9kaXNrLWNhY2hlL3NwZWN1bGF0aXZlLXZhbGlk
YXRpb24vdmFsaWRhdGlvbi1yZXF1ZXN0Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nh
Y2hlL2Rpc2stY2FjaGUvc3BlY3VsYXRpdmUtdmFsaWRhdGlvbi92YWxpZGF0aW9uLXJlcXVlc3Qu
aHRtbAppbmRleCBhZDg0YjYyZTU3YzJmMDcyZmE3Y2U2MWIwMWQ2NDQ1OGM2ZDAyOTliLi4wNmQ2
YjBlMWIyOTMzMWQxZDcyMzYzYmY4MTAxMjdkZDZhODg0MTRiIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2NhY2hlL2Rpc2stY2FjaGUvc3BlY3VsYXRpdmUtdmFsaWRhdGlvbi92
YWxpZGF0aW9uLXJlcXVlc3QuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hl
L2Rpc2stY2FjaGUvc3BlY3VsYXRpdmUtdmFsaWRhdGlvbi92YWxpZGF0aW9uLXJlcXVlc3QuaHRt
bApAQCAtMTUsNiArMTUsNyBAQCBmdW5jdGlvbiBmcmFtZUxvYWRlZCgpCiB7CiAgICAgaWYgKHN0
YXRlID09ICJ3YXJtdXAiKSB7CiAgICAgICAgIGluaXRpYWxVc2VyQWdlbnQgPSB2YWxpZGF0aW9u
UmVxdWVzdEhlYWRlcignVXNlci1BZ2VudCcpOworICAgICAgICBpbml0aWFsUmVmZXJlciA9IHZh
bGlkYXRpb25SZXF1ZXN0SGVhZGVyKCdSZWZlcmVyJyk7CiAgICAgICAgIC8vIE5hdmlnYXRlIGZy
YW1lIHRvICdhYm91dDpibGFuaycgdG8gZmx1c2ggdG8gc3VicmVzb3VyY2UgbG9hZHMgbWV0YWRh
dGEgdG8gZGlzay4KICAgICAgICAgc3RhdGUgPSAiZmx1c2hpbmdNZXRhZGF0YSI7CiAgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0RnJhbWUiKS5zcmMgPSAiYWJvdXQ6Ymxhbmsi
OwpAQCAtMzEsNiArMzIsNyBAQCBmdW5jdGlvbiBmcmFtZUxvYWRlZCgpCiAgICAgICAgIC8vIFZh
bGlkYXRlIHRoZSBIVFRQIGhlYWRlcnMgb2YgdGhlIHNwZWN1bGF0aXZlIHZhbGlkYXRpb24gcmVx
dWVzdC4KICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ2YWxpZGF0aW9uUmVxdWVzdEhl
YWRlcignSWYtTm9uZS1NYXRjaCcpIiwgIjEyMzQ1Njc4OSIpOwogICAgICAgICBzaG91bGRCZSgi
dmFsaWRhdGlvblJlcXVlc3RIZWFkZXIoJ1VzZXItQWdlbnQnKSIsICJpbml0aWFsVXNlckFnZW50
Iik7CisgICAgICAgIHNob3VsZEJlKCJ2YWxpZGF0aW9uUmVxdWVzdEhlYWRlcignUmVmZXJlcicp
IiwgImluaXRpYWxSZWZlcmVyIik7CiAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>275022</attachid>
            <date>2016-03-28 09:03:47 -0700</date>
            <delta_ts>2016-03-28 09:04:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155890-20160328090350.patch</filename>
            <type>text/plain</type>
            <size>31742</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4NzA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmI4ODMzODBmZjZjNDIz
MzdkYTZmYTY2N2M2YmE3MmQ3ZDFkZDVkMi4uZGVjMTMwOGRmMzgzZDc4MWYzMTEyNzdmMzg0MGM5
ZTkzMzdmMzFhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE2LTAzLTI1ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzayBjYWNoZSBzcGVjdWxh
dGl2ZSB2YWxpZGF0aW9uIHJlcXVlc3RzIGRvIG5vdCBoYXZlIHRoZSAnUmVmZXJlcicgSFRUUCBo
ZWFkZXIgc2V0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTU4OTAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI1Mjc5OTYyPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgorCisgICAgICAgIEV4cG9ydCBhIGNvdXBsZSBtb3Jl
IHN5bWJvbHMgc28gd2UgY2FuIHVzZSB0aGVtIGZyb20gV2ViS2l0Mi4KKworICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oOgorCiAyMDE2LTAzLTI1ICBKZXIgTm9ibGUgIDxqZXIu
bm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtNYWNdIEF1ZGlvIHRyYWNrcyBpbiBhbHRlcm5h
dGUgZ3JvdXBzIGFyZSBub3QgcmVwcmVzZW50ZWQgY29ycmVjdGx5IGFzIEF1ZGlvVHJhY2tzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKaW5kZXggZTkyNWE3MTJmNzcwNTAwZjM5NDNmMzhmOTk2OTQ1NmFlMGJjZWQ0OC4uYmY1
MjZjZTM5NDBmMTkxNmZhMDdjZmQ1MjEwNzQxYmNkNzhmNWE3MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDc4IEBACisyMDE2LTAzLTI3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisK
KyAgICAgICAgRGlzayBjYWNoZSBzcGVjdWxhdGl2ZSB2YWxpZGF0aW9uIHJlcXVlc3RzIGRvIG5v
dCBoYXZlIHRoZSAnUmVmZXJlcicgSFRUUCBoZWFkZXIgc2V0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU4OTAKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzI1Mjc5OTYyPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgorCisg
ICAgICAgIERpc2sgY2FjaGUgc3BlY3VsYXRpdmUgdmFsaWRhdGlvbiByZXF1ZXN0cyBkaWQgbm90
IGhhdmUgdGhlICdSZWZlcmVyJworICAgICAgICBIVFRQIGhlYWRlciBzZXQuIFRoaXMgd2FzIGJy
ZWFraW5nIHNvbWUgc3RyZWFtaW5nIHNpdGVzIChzdWNoIGFzCisgICAgICAgIHR3aXRjaC50diku
CisKKyAgICAgICAgV2Ugbm93IHN0b3JlIGFsbCB0aGUgb3JpZ2luYWwgcmVxdWVzdCdzIEhUVFAg
aGVhZGVycyBpbiB0aGUgZGlzayBjYWNoZQorICAgICAgICBzbyB3ZSBjYW4gcmUtdXNlIHRoZW0g
Zm9yIHRoZSBzcGVjdWxhdGl2ZSB2YWxpZGF0aW9uIHJlcXVlc3RzLiBXaGVuIHRoZQorICAgICAg
ICBhY3R1YWwgcmVxdWVzdCBjb21lcyBsYXRlciBvbiwgd2UgYWxzbyBtYWtlIHN1cmUgdGhhdCB0
aGUgSFRUUCBoZWFkZXJzCisgICAgICAgIHVzZWQgaW4gdGhlIHNwZWN1bGF0aXZlIHZhbGlkYXRp
b24gcmVxdWVzdCBtYXRjaCB0aGUgb25lcyBmcm9tIHRoZQorICAgICAgICBlZmZlY3RpdmUgcmVx
dWVzdC4gSWYgdGhleSBkb24ndCB3ZSBkb24ndCB1c2UgdGhlIHNwZWN1bGF0aXZlbHkKKyAgICAg
ICAgdmFsaWRhdGVkIHJlc291cmNlIGFzIHRoZSBzZXJ2ZXIgbWF5IHJldHVybiBhIGRpZmZlcmVu
dCByZXNvdXJjZSBpbgorICAgICAgICBzdWNoIGNhc2UuCisKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2Fj
aGU6OkNhY2hlOjpyZXRyaWV2ZSk6CisgICAgICAgIFBhc3MgdGhlIGVmZmVjdGl2ZSBSZXNvdXJj
ZVJlcXVlc3QgdG8gdGhlIE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIKKyAgICAg
ICAgc28gaXQgY2FuIGNoZWNrIHRoYXQgdGhlIHNwZWN1bGF0aXZlIHZhbGlkYXRpb24gcmVxdWVz
dCdzIEhUVFAgaGVhZGVycworICAgICAgICBtYXRjaCB0aGUgZWZmZWN0aXZlIHJlcXVlc3QncyBo
ZWFkZXJzLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3Bl
Y3VsYXRpdmVMb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtD
YWNoZTo6Y29uc3RydWN0UmV2YWxpZGF0aW9uUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6UHJlbG9hZGVkRW50cnk6OlByZWxv
YWRlZEVudHJ5KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxv
YWRNYW5hZ2VyOjpQcmVsb2FkZWRFbnRyeTo6cmV2YWxpZGF0aW9uUmVxdWVzdCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6UHJlbG9hZGVk
RW50cnk6Ondhc1JldmFsaWRhdGVkKToKKyAgICAgICAgV2Ugbm93IGhhdmUgYSBtZW1iZXIgaW4g
UHJlbG9hZGVkRW50cnkgdG8ga2VlcCB0aGUgcmVxdWVzdCB1c2VkIGZvciB2YWxpZGF0aW9uLCBp
ZgorICAgICAgICBzcGVjdWxhdGl2ZSB2YWxpZGF0aW9uIHdhcyBkb25lLiBUaGlzIGlzIHNvIHRo
YXQgd2UgY2FuIGNvbXBhcmUgaXRzIEhUVFAgaGVhZGVycworICAgICAgICB3aXRoIHRoZSBvbmVz
IG9mIHRoZSBlZmZlY3RpdmUgcmVxdWVzdCBsYXRlciBvbi4KKworICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ2FjaGU6OmR1bXBIVFRQSGVhZGVyc0RpZmYpOgorICAgICAgICBEZWJ1ZyBmdW5jdGlv
biB0aGF0IHByaW50cyB3aGljaCBIVFRQIGhlYWRlcnMgZGlkIG5vdCBtYXRjaCBpbiB0aGUgc3Bl
Y3VsYXRpdmUKKyAgICAgICAgdmFsaWRhdGlvbiByZXF1ZXN0IGFuZCBpbiB0aGUgZWZmZWN0aXZl
IHJlcXVlc3QuCisKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpyZXF1ZXN0c0hlYWRl
cnNNYXRjaCk6CisgICAgICAgIE5ldyB1dGlsaXR5IGZ1bmN0aW9uIHRvIGNoZWNrIHRoYXQgdGhl
IHNwZWN1bGF0aXZlIHZhbGlkYXRpb24gcmVxdWVzdCdzIEhUVFAKKyAgICAgICAgaGVhZGVycyBt
YXRjaCB0aGUgb25lcyBvZiB0aGUgZWZmZWN0aXZlIHJlcXVlc3RzLiBOb3RlIHRoYXQgd2UgYWxs
b3cgZm9yCisgICAgICAgIGhlYWRlcnMgcmVsYXRlZCB0byB2YWxpZGF0aW9uIHRvIGRpZmZlci4K
KworICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6
OmNhblVzZVByZWxvYWRlZEVudHJ5KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpT
cGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpjYW5Vc2VQZW5kaW5nUHJlbG9hZCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6cmV0cmlldmUpOgor
ICAgICAgICBDaGVjayB0aGF0IHRoZSBzcGVjdWxhdGl2ZSB2YWxpZGF0aW9uIHJlcXVlc3QncyBI
VFRQIGhlYWRlcnMgbWF0Y2ggdGhlCisgICAgICAgIG9uZXMgb2YgdGhlIGVmZmVjdGl2ZSByZXF1
ZXN0LiBJZiB0aGV5IGRvbid0IHRoZW4gZG8gbm90IHVzZSB0aGUKKyAgICAgICAgc3BlY3VsYXRp
dmVseSB2YWxpZGF0ZWQgcmVzb3VyY2UuCisKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hl
OjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjphZGRQcmVsb2FkZWRFbnRyeSk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6cmV2YWxpZGF0ZUVu
dHJ5KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWRNYW5h
Z2VyOjpwcmVsb2FkRW50cnkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1
bGF0aXZlTG9hZE1hbmFnZXI6OnN0YXJ0U3BlY3VsYXRpdmVSZXZhbGlkYXRpb24pOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFn
ZXIuaDoKKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJl
c291cmNlc0VudHJ5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdWJyZXNv
dXJjZUluZm86OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3VicmVz
b3VyY2VJbmZvOjpkZWNvZGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN1YnJl
c291cmNlc0VudHJ5OjplbmNvZGVBc1N0b3JhZ2VSZWNvcmQpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ2FjaGU6OlN1YnJlc291cmNlc0VudHJ5OjpkZWNvZGVTdG9yYWdlUmVjb3JkKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRy
eS5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN1YnJlc291cmNlSW5mbzo6U3Vi
cmVzb3VyY2VJbmZvKToKKyAgICAgICAgLSBLZWVwIGFsbCB0aGUgcmVxdWVzdCdzIGhlYWRlcnMg
aW4gU3VicmVzb3VyY2VJbmZvIGluc3RlYWQgb2YganVzdCB0aGUKKyAgICAgICAgICAnVXNlci1B
Z2VudCcgb25lLgorICAgICAgICAtIERyb3AgdGhlIGN1c3RvbSBjb3B5IGNvbnN0cnVjdG9yIC8g
YXNzaWdubWVudCBvcGVyYXRvciBmb3IKKyAgICAgICAgICBTdWJyZXNvdXJjZUluZm8gdGhhdCB3
ZXJlIG1ha2luZyBpc29sYXRlZCBjb3BpZXMgb24gdGhlIG1lbWJlcnMuCisgICAgICAgICAgV2Ug
dGVjaG5pY2FsbHkgZG9uJ3QgbmVlZCB0byB1c2UgU3VicmVzb3VyY2VJbmZvIG9iamVjdHMgaW4g
b3RoZXIKKyAgICAgICAgICB0aHJlYWRzIHRoYW4gdGhlIG1haW4gb25lLiBJbiBTcGVjdWxhdGl2
ZUxvYWRNYW5hZ2VyOjpwcmVsb2FkRW50cnkoKSwKKyAgICAgICAgICB3ZSBub3cgbWFrZSBjYXB0
dXJlIGEgU3VicmVzb3VyY2VJbmZvKiBpbiB0aGUgbGFtYmRhIHRvIGF2b2lkIGNhbGxpbmcKKyAg
ICAgICAgICB0aGUgY29weSBjb25zdHJ1Y3Rvci4gV2UgYWxzbyBtYWtlIHN1cmUgdGhhdCB0aGUg
b2JqZWN0IGdldHMgZGVzdHJveWVkCisgICAgICAgICAgaW4gdGhlIGxhbWJkYSBmdW5jdGlvbiwg
d2hpY2ggaXMgZXhlY3V0ZWQgaW4gdGhlIG1haW4gdGhyZWFkLgorCiAyMDE2LTAzLTI1ICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdXNlIG9mIGV4dGVy
biAiQyIgdG8gaW5jbHVkZSBRdWFydHpDb3JlIGZpbGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5oCmluZGV4IGU0ZGUwNThlM2Y0MzFkYjRiMzA3
Zjg2MGU5MDEwZmU3ODQ1MWI5ZWQuLjQyMzVhNjNmZDBjZGRkZmUzM2JmZTcwOTZiYWI3NzBiZWU4
OTliZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhl
YWRlck1hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRl
ck1hcC5oCkBAIC0xMzksNyArMTM5LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFN0
cmluZyBnZXQoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwogICAgIHZv
aWQgYWRkKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7Ci0gICAgYm9v
bCBjb250YWlucyhjb25zdCBTdHJpbmcmKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29s
IGNvbnRhaW5zKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAgIGJvb2wgcmVtb3ZlKGNvbnN0IFN0
cmluZyYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGdldChIVFRQSGVhZGVyTmFtZSkg
Y29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlUmVxdWVzdEJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VSZXF1ZXN0QmFzZS5oCmluZGV4IGQwMTYwMmRiY2FlNTYyYmRiZWUyZDljMGIwMWVmZjU0NWVh
OWFiYzAuLmZjZTNjNTE4YzIxOTNiOTA2MTg3OTMzNTJhODFlZGJiNDYzOTZkYTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFz
ZS5oCkBAIC0xMzAsNyArMTMwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldFByaW9yaXR5KFJlc291cmNlTG9hZFByaW9yaXR5KTsKIAogICAg
ICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzQ29uZGl0aW9uYWwoKSBjb25zdDsKLSAgICAgICAg
dm9pZCBtYWtlVW5jb25kaXRpb25hbCgpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG1h
a2VVbmNvbmRpdGlvbmFsKCk7CiAKICAgICAgICAgLy8gV2hldGhlciB0aGUgYXNzb2NpYXRlZCBS
ZXNvdXJjZUhhbmRsZUNsaWVudCBuZWVkcyB0byBiZSBub3RpZmllZCBvZgogICAgICAgICAvLyB1
cGxvYWQgcHJvZ3Jlc3MgbWFkZSBmb3IgdGhhdCByZXNvdXJjZS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCmluZGV4IDExOTA0
ZmU2ZTM3OTg4YTg0YmY5NDBkNzQxMTk2NDFiNjExNmRiYjguLjUxODhiZDUxMzg5OTM3ZGRkNjZm
OWU2ODllODA1MmI2OTdkNjViOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcApAQCAtMzY4LDcgKzM2OCw3IEBAIHZvaWQg
Q2FjaGU6OnJldHJpZXZlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgR2xvYmFsRnJhbWVJCiAgICAgfQogCiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEVfU1BF
Q1VMQVRJVkVfUkVWQUxJREFUSU9OKQotICAgIGlmIChtX3NwZWN1bGF0aXZlTG9hZE1hbmFnZXIg
JiYgbV9zcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLT5yZXRyaWV2ZShmcmFtZUlELCBzdG9yYWdlS2V5
LCBbcmVxdWVzdCwgY29tcGxldGlvbkhhbmRsZXJdKHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gZW50
cnkpIHsKKyAgICBpZiAobV9zcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyICYmIG1fc3BlY3VsYXRpdmVM
b2FkTWFuYWdlci0+cmV0cmlldmUoZnJhbWVJRCwgc3RvcmFnZUtleSwgcmVxdWVzdCwgW3JlcXVl
c3QsIGNvbXBsZXRpb25IYW5kbGVyXShzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IGVudHJ5KSB7CiAg
ICAgICAgIGlmIChlbnRyeSAmJiB2ZXJpZnlWYXJ5aW5nUmVxdWVzdEhlYWRlcnMoZW50cnktPnZh
cnlpbmdSZXF1ZXN0SGVhZGVycygpLCByZXF1ZXN0KSkKICAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKFdURk1vdmUoZW50cnkpKTsKICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2Fk
LmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVj
dWxhdGl2ZUxvYWQuaAppbmRleCBiMjRmOWM4NWU4NDYxNmU5YzU5YTQ2MWIwNzMyMmZmNjYxNDFl
MTFmLi44ZDAxNDFhMzdmZDk3ZWQyMDg4YjFkZGViYTgwY2JjMWJjZTM0ZWMyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxh
dGl2ZUxvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaApAQCAtNDksNiArNDksOCBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIH5TcGVjdWxhdGl2ZUxvYWQoKTsKIAorICAgIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW5hbFJl
cXVlc3Q7IH0KKwogcHJpdmF0ZToKICAgICAvLyBOZXR3b3JrTG9hZENsaWVudC4KICAgICB2b2lk
IGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcg
bG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRlIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2Fk
TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcAppbmRleCBmOGYwMmZkOTRiOGU3Y2FlNDE4
YzFhNjY1ZTk1M2RkMDI3NWExNzdmLi44ZjkzZmEzZWU2YTdmZjA4NGM5MmQzZDM2OTE1MWQ0NzJl
ZmU3ZjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2Vy
LmNwcApAQCAtODQsMjQgKzg0LDI1IEBAIHN0YXRpYyBpbmxpbmUgS2V5IG1ha2VTdWJyZXNvdXJj
ZXNLZXkoY29uc3QgS2V5JiByZXNvdXJjZUtleSkKICAgICByZXR1cm4gS2V5KHJlc291cmNlS2V5
LnBhcnRpdGlvbigpLCBzdWJyZXNvdXJjZXNUeXBlKCksIHJlc291cmNlS2V5LnJhbmdlKCksIHJl
c291cmNlS2V5LmlkZW50aWZpZXIoKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgUmVzb3VyY2VSZXF1
ZXN0IGNvbnN0cnVjdFJldmFsaWRhdGlvblJlcXVlc3QoY29uc3QgRW50cnkmIGVudHJ5LCBjb25z
dCBTdWJyZXNvdXJjZUluZm8mIHN1YlJlc291cmNlSW5mbykKK3N0YXRpYyBpbmxpbmUgc3RkOjp1
bmlxdWVfcHRyPFJlc291cmNlUmVxdWVzdD4gY29uc3RydWN0UmV2YWxpZGF0aW9uUmVxdWVzdChj
b25zdCBFbnRyeSYgZW50cnksIGNvbnN0IFN1YnJlc291cmNlSW5mbyYgc3ViUmVzb3VyY2VJbmZv
KQogewotICAgIFJlc291cmNlUmVxdWVzdCByZXZhbGlkYXRpb25SZXF1ZXN0KGVudHJ5LmtleSgp
LmlkZW50aWZpZXIoKSk7Ci0gICAgcmV2YWxpZGF0aW9uUmVxdWVzdC5zZXRIVFRQVXNlckFnZW50
KHN1YlJlc291cmNlSW5mby5odHRwVXNlckFnZW50KTsKLSAgICByZXZhbGlkYXRpb25SZXF1ZXN0
LnNldEZpcnN0UGFydHlGb3JDb29raWVzKHN1YlJlc291cmNlSW5mby5maXJzdFBhcnR5Rm9yQ29v
a2llcyk7CisgICAgYXV0byByZXZhbGlkYXRpb25SZXF1ZXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxS
ZXNvdXJjZVJlcXVlc3Q+KGVudHJ5LmtleSgpLmlkZW50aWZpZXIoKSk7CisgICAgcmV2YWxpZGF0
aW9uUmVxdWVzdC0+c2V0SFRUUEhlYWRlckZpZWxkcyhzdWJSZXNvdXJjZUluZm8ucmVxdWVzdEhl
YWRlcnMpOworICAgIHJldmFsaWRhdGlvblJlcXVlc3QtPnNldEZpcnN0UGFydHlGb3JDb29raWVz
KHN1YlJlc291cmNlSW5mby5maXJzdFBhcnR5Rm9yQ29va2llcyk7CiAjaWYgRU5BQkxFKENBQ0hF
X1BBUlRJVElPTklORykKICAgICBpZiAoZW50cnkua2V5KCkuaGFzUGFydGl0aW9uKCkpCi0gICAg
ICAgIHJldmFsaWRhdGlvblJlcXVlc3Quc2V0Q2FjaGVQYXJ0aXRpb24oZW50cnkua2V5KCkucGFy
dGl0aW9uKCkpOworICAgICAgICByZXZhbGlkYXRpb25SZXF1ZXN0LT5zZXRDYWNoZVBhcnRpdGlv
bihlbnRyeS5rZXkoKS5wYXJ0aXRpb24oKSk7CiAjZW5kaWYKICAgICBBU1NFUlRfV0lUSF9NRVNT
QUdFKGVudHJ5LmtleSgpLnJhbmdlKCkuaXNFbXB0eSgpLCAicmFuZ2UgaXMgbm90IHN1cHBvcnRl
ZCIpOwogCisgICAgcmV2YWxpZGF0aW9uUmVxdWVzdC0+bWFrZVVuY29uZGl0aW9uYWwoKTsKICAg
ICBTdHJpbmcgZVRhZyA9IGVudHJ5LnJlc3BvbnNlKCkuaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFk
ZXJOYW1lOjpFVGFnKTsKICAgICBpZiAoIWVUYWcuaXNFbXB0eSgpKQotICAgICAgICByZXZhbGlk
YXRpb25SZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6SWZOb25lTWF0
Y2gsIGVUYWcpOworICAgICAgICByZXZhbGlkYXRpb25SZXF1ZXN0LT5zZXRIVFRQSGVhZGVyRmll
bGQoSFRUUEhlYWRlck5hbWU6OklmTm9uZU1hdGNoLCBlVGFnKTsKIAogICAgIFN0cmluZyBsYXN0
TW9kaWZpZWQgPSBlbnRyeS5yZXNwb25zZSgpLmh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFt
ZTo6TGFzdE1vZGlmaWVkKTsKICAgICBpZiAoIWxhc3RNb2RpZmllZC5pc0VtcHR5KCkpCi0gICAg
ICAgIHJldmFsaWRhdGlvblJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1l
OjpJZk1vZGlmaWVkU2luY2UsIGxhc3RNb2RpZmllZCk7CisgICAgICAgIHJldmFsaWRhdGlvblJl
cXVlc3QtPnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6SWZNb2RpZmllZFNpbmNl
LCBsYXN0TW9kaWZpZWQpOwogCiAgICAgcmV0dXJuIHJldmFsaWRhdGlvblJlcXVlc3Q7CiB9CkBA
IC0xMzIsMTAgKzEzMywxMCBAQCBwcml2YXRlOgogY2xhc3MgU3BlY3VsYXRpdmVMb2FkTWFuYWdl
cjo6UHJlbG9hZGVkRW50cnkgOiBwcml2YXRlIEV4cGlyaW5nRW50cnkgewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFByZWxvYWRlZEVudHJ5KHN0ZDo6dW5pcXVl
X3B0cjxFbnRyeT4gZW50cnksIFdhc1JldmFsaWRhdGVkIHdhc1JldmFsaWRhdGVkLCBzdGQ6OmZ1
bmN0aW9uPHZvaWQoKT4mJiBsaWZldGltZVJlYWNoZWRIYW5kbGVyKQorICAgIFByZWxvYWRlZEVu
dHJ5KHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gZW50cnksIHN0ZDo6dW5pcXVlX3B0cjxSZXNvdXJj
ZVJlcXVlc3Q+IHNwZWN1bGF0aXZlVmFsaWRhdGlvblJlcXVlc3QsIHN0ZDo6ZnVuY3Rpb248dm9p
ZCgpPiYmIGxpZmV0aW1lUmVhY2hlZEhhbmRsZXIpCiAgICAgICAgIDogRXhwaXJpbmdFbnRyeShX
VEZNb3ZlKGxpZmV0aW1lUmVhY2hlZEhhbmRsZXIpKQogICAgICAgICAsIG1fZW50cnkoV1RGTW92
ZShlbnRyeSkpCi0gICAgICAgICwgbV93YXNSZXZhbGlkYXRlZCh3YXNSZXZhbGlkYXRlZCA9PSBX
YXNSZXZhbGlkYXRlZDo6WWVzKQorICAgICAgICAsIG1fc3BlY3VsYXRpdmVWYWxpZGF0aW9uUmVx
dWVzdChXVEZNb3ZlKHNwZWN1bGF0aXZlVmFsaWRhdGlvblJlcXVlc3QpKQogICAgIHsgfQogCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiB0YWtlQ2FjaGVFbnRyeSgpCkBAIC0xNDQsMTEgKzE0
NSwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBXVEZNb3ZlKG1fZW50cnkpOwogICAgIH0K
IAotICAgIGJvb2wgd2FzUmV2YWxpZGF0ZWQoKSBjb25zdCB7IHJldHVybiBtX3dhc1JldmFsaWRh
dGVkOyB9CisgICAgUmVzb3VyY2VSZXF1ZXN0KiByZXZhbGlkYXRpb25SZXF1ZXN0KCkgY29uc3Qg
eyByZXR1cm4gbV9zcGVjdWxhdGl2ZVZhbGlkYXRpb25SZXF1ZXN0LmdldCgpOyB9CisgICAgYm9v
bCB3YXNSZXZhbGlkYXRlZCgpIGNvbnN0IHsgcmV0dXJuICEhbV9zcGVjdWxhdGl2ZVZhbGlkYXRp
b25SZXF1ZXN0OyB9CiAKIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBtX2Vu
dHJ5OwotICAgIGJvb2wgbV93YXNSZXZhbGlkYXRlZDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVz
b3VyY2VSZXF1ZXN0PiBtX3NwZWN1bGF0aXZlVmFsaWRhdGlvblJlcXVlc3Q7CiB9OwogCiBjbGFz
cyBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpQZW5kaW5nRnJhbWVMb2FkIDogcHVibGljIFJlZkNv
dW50ZWQ8UGVuZGluZ0ZyYW1lTG9hZD4gewpAQCAtMjQ2LDIyICsyNDgsODkgQEAgU3BlY3VsYXRp
dmVMb2FkTWFuYWdlcjo6flNwZWN1bGF0aXZlTG9hZE1hbmFnZXIoKQogewogfQogCi1ib29sIFNw
ZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnJldHJpZXZlKGNvbnN0IEdsb2JhbEZyYW1lSUQmIGZyYW1l
SUQsIGNvbnN0IEtleSYgc3RvcmFnZUtleSwgY29uc3QgUmV0cmlldmVDb21wbGV0aW9uSGFuZGxl
ciYgY29tcGxldGlvbkhhbmRsZXIpCisjaWYgIUxPR19ESVNBQkxFRAorCitzdGF0aWMgdm9pZCBk
dW1wSFRUUEhlYWRlcnNEaWZmKGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnNBLCBjb25zdCBI
VFRQSGVhZGVyTWFwJiBoZWFkZXJzQikKK3sKKyAgICBhdXRvIGFFbmQgPSBoZWFkZXJzQS5lbmQo
KTsKKyAgICBmb3IgKGF1dG8gaXQgPSBoZWFkZXJzQS5iZWdpbigpOyBpdCAhPSBhRW5kOyArK2l0
KSB7CisgICAgICAgIFN0cmluZyB2YWx1ZUIgPSBoZWFkZXJzQi5nZXQoaXQtPmtleSk7CisgICAg
ICAgIGlmICh2YWx1ZUIuaXNOdWxsKCkpCisgICAgICAgICAgICBMT0coTmV0d29ya0NhY2hlU3Bl
Y3VsYXRpdmVQcmVsb2FkaW5nLCAiKiAnJXMnIEhUVFAgaGVhZGVyIGlzIG9ubHkgaW4gZmlyc3Qg
cmVxdWVzdCAodmFsdWU6ICVzKSIsIGl0LT5rZXkudXRmOCgpLmRhdGEoKSwgaXQtPnZhbHVlLnV0
ZjgoKS5kYXRhKCkpOworICAgICAgICBlbHNlIGlmIChpdC0+dmFsdWUgIT0gdmFsdWVCKQorICAg
ICAgICAgICAgTE9HKE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUHJlbG9hZGluZywgIiogJyVzJyBI
VFRQIGhlYWRlciBkaWZmZXJzIGluIGJvdGggcmVxdWVzdHM6ICVzICE9ICVzIiwgaXQtPmtleS51
dGY4KCkuZGF0YSgpLCBpdC0+dmFsdWUudXRmOCgpLmRhdGEoKSwgdmFsdWVCLnV0ZjgoKS5kYXRh
KCkpOworICAgIH0KKyAgICBhdXRvIGJFbmQgPSBoZWFkZXJzQi5lbmQoKTsKKyAgICBmb3IgKGF1
dG8gaXQgPSBoZWFkZXJzQi5iZWdpbigpOyBpdCAhPSBiRW5kOyArK2l0KSB7CisgICAgICAgIGlm
ICghaGVhZGVyc0EuY29udGFpbnMoaXQtPmtleSkpCisgICAgICAgICAgICBMT0coTmV0d29ya0Nh
Y2hlU3BlY3VsYXRpdmVQcmVsb2FkaW5nLCAiKiAnJXMnIEhUVFAgaGVhZGVyIGlzIG9ubHkgaW4g
c2Vjb25kIHJlcXVlc3QgKHZhbHVlOiAlcykiLCBpdC0+a2V5LnV0ZjgoKS5kYXRhKCksIGl0LT52
YWx1ZS51dGY4KCkuZGF0YSgpKTsKKyAgICB9Cit9CisKKyNlbmRpZgorCitzdGF0aWMgYm9vbCBy
ZXF1ZXN0c0hlYWRlcnNNYXRjaChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGEsIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgYikKK3sKKyAgICBzdGF0aWMgY29uc3QgSFRUUEhlYWRlck5hbWUgaGVhZGVy
c0FsbG93ZWRUb01pc21hdGNoW10gPSB7CisgICAgICAgIEhUVFBIZWFkZXJOYW1lOjpJZk1hdGNo
LAorICAgICAgICBIVFRQSGVhZGVyTmFtZTo6SWZNb2RpZmllZFNpbmNlLAorICAgICAgICBIVFRQ
SGVhZGVyTmFtZTo6SWZOb25lTWF0Y2gsCisgICAgICAgIEhUVFBIZWFkZXJOYW1lOjpJZlJhbmdl
LAorICAgICAgICBIVFRQSGVhZGVyTmFtZTo6SWZVbm1vZGlmaWVkU2luY2UsCisgICAgICAgIEhU
VFBIZWFkZXJOYW1lOjpDYWNoZUNvbnRyb2wKKyAgICB9OworCisgICAgSFRUUEhlYWRlck1hcCBo
ZWFkZXJzQSA9IGEuaHR0cEhlYWRlckZpZWxkcygpOworICAgIEhUVFBIZWFkZXJNYXAgaGVhZGVy
c0IgPSBiLmh0dHBIZWFkZXJGaWVsZHMoKTsKKyAgICBmb3IgKGF1dG8gaGVhZGVyTmFtZSA6IGhl
YWRlcnNBbGxvd2VkVG9NaXNtYXRjaCkgeworICAgICAgICBoZWFkZXJzQS5yZW1vdmUoaGVhZGVy
TmFtZSk7CisgICAgICAgIGhlYWRlcnNCLnJlbW92ZShoZWFkZXJOYW1lKTsKKyAgICB9CisKKyAg
ICBpZiAoaGVhZGVyc0EgIT0gaGVhZGVyc0IpIHsKKyAgICAgICAgTE9HKE5ldHdvcmtDYWNoZVNw
ZWN1bGF0aXZlUHJlbG9hZGluZywgIkNhbm5vdCByZXVzZSBzcGVjdWxhdGl2ZWx5IHZhbGlkYXRl
ZCBlbnRyeSBiZWNhdXNlIEhUVFAgaGVhZGVycyB1c2VkIGZvciB2YWxpZGF0aW9uIGRvIG5vdCBt
YXRjaCIpOworI2lmICFMT0dfRElTQUJMRUQKKyAgICAgICAgZHVtcEhUVFBIZWFkZXJzRGlmZiho
ZWFkZXJzQSwgaGVhZGVyc0IpOworI2VuZGlmCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6Y2Fu
VXNlUHJlbG9hZGVkRW50cnkoY29uc3QgUHJlbG9hZGVkRW50cnkmIGVudHJ5LCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIGFjdHVhbFJlcXVlc3QpCit7CisgICAgaWYgKCFlbnRyeS53YXNSZXZhbGlk
YXRlZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIEFTU0VSVChlbnRyeS5yZXZhbGlk
YXRpb25SZXF1ZXN0KCkpOworICAgIHJldHVybiByZXF1ZXN0c0hlYWRlcnNNYXRjaCgqZW50cnku
cmV2YWxpZGF0aW9uUmVxdWVzdCgpLCBhY3R1YWxSZXF1ZXN0KTsKK30KKworYm9vbCBTcGVjdWxh
dGl2ZUxvYWRNYW5hZ2VyOjpjYW5Vc2VQZW5kaW5nUHJlbG9hZChjb25zdCBTcGVjdWxhdGl2ZUxv
YWQmIGxvYWQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgYWN0dWFsUmVxdWVzdCkKK3sKKyAgICBy
ZXR1cm4gcmVxdWVzdHNIZWFkZXJzTWF0Y2gobG9hZC5vcmlnaW5hbFJlcXVlc3QoKSwgYWN0dWFs
UmVxdWVzdCk7Cit9CisKK2Jvb2wgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6cmV0cmlldmUoY29u
c3QgR2xvYmFsRnJhbWVJRCYgZnJhbWVJRCwgY29uc3QgS2V5JiBzdG9yYWdlS2V5LCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJldHJpZXZlQ29tcGxldGlv
bkhhbmRsZXImIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIC8vIENoZWNrIGFscmVhZHkgcHJl
bG9hZGVkIGVudHJpZXMuCiAgICAgaWYgKGF1dG8gcHJlbG9hZGVkRW50cnkgPSBtX3ByZWxvYWRl
ZEVudHJpZXMudGFrZShzdG9yYWdlS2V5KSkgeworICAgICAgICBpZiAoIWNhblVzZVByZWxvYWRl
ZEVudHJ5KCpwcmVsb2FkZWRFbnRyeSwgcmVxdWVzdCkpIHsKKyAgICAgICAgICAgIExPRyhOZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZVByZWxvYWRpbmcsICIoTmV0d29ya1Byb2Nlc3MpIFJldHJpZXZh
bDogQ291bGQgbm90IHVzZSBwcmVsb2FkZWQgZW50cnkgdG8gc2F0aXNmeSByZXF1ZXN0IGZvciAn
JXMnIGR1ZSB0byBIVFRQIGhlYWRlcnMgbWlzbWF0Y2g6Iiwgc3RvcmFnZUtleS5pZGVudGlmaWVy
KCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBsb2dTcGVjdWxhdGl2ZUxvYWRpbmdEaWFn
bm9zdGljTWVzc2FnZShmcmFtZUlELCBwcmVsb2FkZWRFbnRyeS0+d2FzUmV2YWxpZGF0ZWQoKSA/
IERpYWdub3N0aWNMb2dnaW5nS2V5czo6d2FzdGVkU3BlY3VsYXRpdmVXYXJtdXBXaXRoUmV2YWxp
ZGF0aW9uS2V5KCkgOiBEaWFnbm9zdGljTG9nZ2luZ0tleXM6Ondhc3RlZFNwZWN1bGF0aXZlV2Fy
bXVwV2l0aG91dFJldmFsaWRhdGlvbktleSgpKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgfQorCiAgICAgICAgIExPRyhOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVByZWxvYWRp
bmcsICIoTmV0d29ya1Byb2Nlc3MpIFJldHJpZXZhbDogVXNpbmcgcHJlbG9hZGVkIGVudHJ5IHRv
IHNhdGlzZnkgcmVxdWVzdCBmb3IgJyVzJzoiLCBzdG9yYWdlS2V5LmlkZW50aWZpZXIoKS51dGY4
KCkuZGF0YSgpKTsKLSAgICAgICAgaWYgKHByZWxvYWRlZEVudHJ5LT53YXNSZXZhbGlkYXRlZCgp
KQotICAgICAgICAgICAgbG9nU3BlY3VsYXRpdmVMb2FkaW5nRGlhZ25vc3RpY01lc3NhZ2UoZnJh
bWVJRCwgRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpzdWNjZXNzZnVsU3BlY3VsYXRpdmVXYXJtdXBX
aXRoUmV2YWxpZGF0aW9uS2V5KCkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBsb2dTcGVj
dWxhdGl2ZUxvYWRpbmdEaWFnbm9zdGljTWVzc2FnZShmcmFtZUlELCBEaWFnbm9zdGljTG9nZ2lu
Z0tleXM6OnN1Y2Nlc3NmdWxTcGVjdWxhdGl2ZVdhcm11cFdpdGhvdXRSZXZhbGlkYXRpb25LZXko
KSk7CisgICAgICAgIGxvZ1NwZWN1bGF0aXZlTG9hZGluZ0RpYWdub3N0aWNNZXNzYWdlKGZyYW1l
SUQsIHByZWxvYWRlZEVudHJ5LT53YXNSZXZhbGlkYXRlZCgpID8gRGlhZ25vc3RpY0xvZ2dpbmdL
ZXlzOjpzdWNjZXNzZnVsU3BlY3VsYXRpdmVXYXJtdXBXaXRoUmV2YWxpZGF0aW9uS2V5KCkgOiBE
aWFnbm9zdGljTG9nZ2luZ0tleXM6OnN1Y2Nlc3NmdWxTcGVjdWxhdGl2ZVdhcm11cFdpdGhvdXRS
ZXZhbGlkYXRpb25LZXkoKSk7CiAKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocHJlbG9hZGVk
RW50cnktPnRha2VDYWNoZUVudHJ5KCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAK
ICAgICAvLyBDaGVjayBwZW5kaW5nIHNwZWN1bGF0aXZlIHJldmFsaWRhdGlvbnMuCi0gICAgaWYg
KCFtX3BlbmRpbmdQcmVsb2Fkcy5jb250YWlucyhzdG9yYWdlS2V5KSkgeworICAgIGF1dG8qIHBl
bmRpbmdQcmVsb2FkID0gbV9wZW5kaW5nUHJlbG9hZHMuZ2V0KHN0b3JhZ2VLZXkpOworICAgIGlm
ICghcGVuZGluZ1ByZWxvYWQpIHsKICAgICAgICAgaWYgKG1fbm90UHJlbG9hZGVkRW50cmllcy5y
ZW1vdmUoc3RvcmFnZUtleSkpCiAgICAgICAgICAgICBsb2dTcGVjdWxhdGl2ZUxvYWRpbmdEaWFn
bm9zdGljTWVzc2FnZShmcmFtZUlELCBEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmVudHJ5V3Jvbmds
eU5vdFdhcm1lZFVwS2V5KCkpOwogICAgICAgICBlbHNlCkBAIC0yNzAsNiArMzM5LDEyIEBAIGJv
b2wgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6cmV0cmlldmUoY29uc3QgR2xvYmFsRnJhbWVJRCYg
ZnJhbWVJRCwgY29uc3QgS2V5JiBzCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKKyAg
ICBpZiAoIWNhblVzZVBlbmRpbmdQcmVsb2FkKCpwZW5kaW5nUHJlbG9hZCwgcmVxdWVzdCkpIHsK
KyAgICAgICAgTE9HKE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUHJlbG9hZGluZywgIihOZXR3b3Jr
UHJvY2VzcykgUmV0cmlldmFsOiByZXZhbGlkYXRpb24gYWxyZWFkeSBpbiBwcm9ncmVzcyBmb3Ig
JyVzJyBidXQgdW51c2FibGUgZHVlIHRvIEhUVFAgaGVhZGVycyBtaXNtYXRjaDoiLCBzdG9yYWdl
S2V5LmlkZW50aWZpZXIoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgbG9nU3BlY3VsYXRpdmVM
b2FkaW5nRGlhZ25vc3RpY01lc3NhZ2UoZnJhbWVJRCwgRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjp3
YXN0ZWRTcGVjdWxhdGl2ZVdhcm11cFdpdGhSZXZhbGlkYXRpb25LZXkoKSk7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKICAgICBMT0coTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVQcmVs
b2FkaW5nLCAiKE5ldHdvcmtQcm9jZXNzKSBSZXRyaWV2YWw6IHJldmFsaWRhdGlvbiBhbHJlYWR5
IGluIHByb2dyZXNzIGZvciAnJXMnOiIsIHN0b3JhZ2VLZXkuaWRlbnRpZmllcigpLnV0ZjgoKS5k
YXRhKCkpOwogCiAgICAgLy8gRklYTUU6IFRoaXMgYnJlYWtzIGluY3JlbWVudGFsIGxvYWRpbmcg
d2hlbiB0aGUgcmV2YWxpZGF0aW9uIGlzIG5vdCBzdWNjZXNzZnVsLgpAQCAtMzE2LDEyICszOTEs
MTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpyZWdpc3RlckxvYWQoY29uc3QgR2xv
YmFsRnJhbWVJRCYgZnJhbWVJRCwgY29uc3QgUmUKICAgICAgICAgcGVuZGluZ0ZyYW1lTG9hZC0+
cmVnaXN0ZXJTdWJyZXNvdXJjZUxvYWQocmVxdWVzdCwgcmVzb3VyY2VLZXkpOwogfQogCi12b2lk
IFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OmFkZFByZWxvYWRlZEVudHJ5KHN0ZDo6dW5pcXVlX3B0
cjxFbnRyeT4gZW50cnksIGNvbnN0IEdsb2JhbEZyYW1lSUQmIGZyYW1lSUQsIFdhc1JldmFsaWRh
dGVkIHdhc1JldmFsaWRhdGVkKQordm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjphZGRQcmVs
b2FkZWRFbnRyeShzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IGVudHJ5LCBjb25zdCBHbG9iYWxGcmFt
ZUlEJiBmcmFtZUlELCBzdGQ6OnVuaXF1ZV9wdHI8UmVzb3VyY2VSZXF1ZXN0PiByZXZhbGlkYXRp
b25SZXF1ZXN0KQogewogICAgIEFTU0VSVChlbnRyeSk7CiAgICAgQVNTRVJUKCFlbnRyeS0+bmVl
ZHNWYWxpZGF0aW9uKCkpOwogICAgIGF1dG8ga2V5ID0gZW50cnktPmtleSgpOwotICAgIG1fcHJl
bG9hZGVkRW50cmllcy5hZGQoa2V5LCBzdGQ6Om1ha2VfdW5pcXVlPFByZWxvYWRlZEVudHJ5PihX
VEZNb3ZlKGVudHJ5KSwgd2FzUmV2YWxpZGF0ZWQsIFt0aGlzLCBrZXksIGZyYW1lSURdIHsKKyAg
ICBtX3ByZWxvYWRlZEVudHJpZXMuYWRkKGtleSwgc3RkOjptYWtlX3VuaXF1ZTxQcmVsb2FkZWRF
bnRyeT4oV1RGTW92ZShlbnRyeSksIFdURk1vdmUocmV2YWxpZGF0aW9uUmVxdWVzdCksIFt0aGlz
LCBrZXksIGZyYW1lSURdIHsKICAgICAgICAgYXV0byBwcmVsb2FkZWRFbnRyeSA9IG1fcHJlbG9h
ZGVkRW50cmllcy50YWtlKGtleSk7CiAgICAgICAgIEFTU0VSVChwcmVsb2FkZWRFbnRyeSk7CiAg
ICAgICAgIGlmIChwcmVsb2FkZWRFbnRyeS0+d2FzUmV2YWxpZGF0ZWQoKSkKQEAgLTM4MSwxMyAr
NDU2LDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6cmV2YWxpZGF0ZUVudHJ5KHN0
ZDo6dW5pcXVlX3B0cjxFbnRyeT4gZW50cnksIGNvbnN0CiAgICAgaWYgKCFrZXkucmFuZ2UoKS5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlc291cmNlUmVxdWVzdCByZXZhbGlk
YXRpb25SZXF1ZXN0ID0gY29uc3RydWN0UmV2YWxpZGF0aW9uUmVxdWVzdCgqZW50cnksIHN1YnJl
c291cmNlSW5mbyk7CisgICAgUmVzb3VyY2VSZXF1ZXN0KiByZXZhbGlkYXRpb25SZXF1ZXN0UHRy
ID0gY29uc3RydWN0UmV2YWxpZGF0aW9uUmVxdWVzdCgqZW50cnksIHN1YnJlc291cmNlSW5mbyku
cmVsZWFzZSgpOwogCiAgICAgTE9HKE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUHJlbG9hZGluZywg
IihOZXR3b3JrUHJvY2VzcykgU3BlY3VsYXRpdmVseSByZXZhbGlkYXRpbmcgJyVzJzoiLCBrZXku
aWRlbnRpZmllcigpLnV0ZjgoKS5kYXRhKCkpOwotICAgIGF1dG8gcmV2YWxpZGF0b3IgPSBzdGQ6
Om1ha2VfdW5pcXVlPFNwZWN1bGF0aXZlTG9hZD4oZnJhbWVJRCwgcmV2YWxpZGF0aW9uUmVxdWVz
dCwgV1RGTW92ZShlbnRyeSksIFt0aGlzLCBrZXksIGZyYW1lSURdKHN0ZDo6dW5pcXVlX3B0cjxF
bnRyeT4gcmV2YWxpZGF0ZWRFbnRyeSkgeworCisgICAgYXV0byByZXZhbGlkYXRvciA9IHN0ZDo6
bWFrZV91bmlxdWU8U3BlY3VsYXRpdmVMb2FkPihmcmFtZUlELCAqcmV2YWxpZGF0aW9uUmVxdWVz
dFB0ciwgV1RGTW92ZShlbnRyeSksIFt0aGlzLCBrZXksIHJldmFsaWRhdGlvblJlcXVlc3RQdHIs
IGZyYW1lSURdKHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gcmV2YWxpZGF0ZWRFbnRyeSkgewogICAg
ICAgICBBU1NFUlQoIXJldmFsaWRhdGVkRW50cnkgfHwgIXJldmFsaWRhdGVkRW50cnktPm5lZWRz
VmFsaWRhdGlvbigpKTsKICAgICAgICAgQVNTRVJUKCFyZXZhbGlkYXRlZEVudHJ5IHx8IHJldmFs
aWRhdGVkRW50cnktPmtleSgpID09IGtleSk7CiAKKyAgICAgICAgYXV0byByZXZhbGlkYXRpb25S
ZXF1ZXN0ID0gc3RkOjp1bmlxdWVfcHRyPFJlc291cmNlUmVxdWVzdD4ocmV2YWxpZGF0aW9uUmVx
dWVzdFB0cik7CiAgICAgICAgIGF1dG8gcHJvdGVjdFJldmFsaWRhdG9yID0gbV9wZW5kaW5nUHJl
bG9hZHMudGFrZShrZXkpOwogICAgICAgICBMT0coTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVQcmVs
b2FkaW5nLCAiKE5ldHdvcmtQcm9jZXNzKSBTcGVjdWxhdGl2ZSByZXZhbGlkYXRpb24gY29tcGxl
dGVkIGZvciAnJXMnOiIsIGtleS5pZGVudGlmaWVyKCkudXRmOCgpLmRhdGEoKSk7CiAKQEAgLTM5
OCw3ICs0NzUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnJldmFsaWRhdGVFbnRy
eShzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IGVudHJ5LCBjb25zdAogICAgICAgICB9CiAKICAgICAg
ICAgaWYgKHJldmFsaWRhdGVkRW50cnkpCi0gICAgICAgICAgICBhZGRQcmVsb2FkZWRFbnRyeShX
VEZNb3ZlKHJldmFsaWRhdGVkRW50cnkpLCBmcmFtZUlELCBXYXNSZXZhbGlkYXRlZDo6WWVzKTsK
KyAgICAgICAgICAgIGFkZFByZWxvYWRlZEVudHJ5KFdURk1vdmUocmV2YWxpZGF0ZWRFbnRyeSks
IGZyYW1lSUQsIFdURk1vdmUocmV2YWxpZGF0aW9uUmVxdWVzdCkpOwogICAgIH0pOwogICAgIG1f
cGVuZGluZ1ByZWxvYWRzLmFkZChrZXksIFdURk1vdmUocmV2YWxpZGF0b3IpKTsKIH0KQEAgLTQw
Niw3ICs0ODMsOSBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnJldmFsaWRhdGVFbnRy
eShzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IGVudHJ5LCBjb25zdAogdm9pZCBTcGVjdWxhdGl2ZUxv
YWRNYW5hZ2VyOjpwcmVsb2FkRW50cnkoY29uc3QgS2V5JiBrZXksIGNvbnN0IFN1YnJlc291cmNl
SW5mbyYgc3ViUmVzb3VyY2VJbmZvLCBjb25zdCBHbG9iYWxGcmFtZUlEJiBmcmFtZUlEKQogewog
ICAgIG1fcGVuZGluZ1ByZWxvYWRzLmFkZChrZXksIG51bGxwdHIpOwotICAgIHJldHJpZXZlRW50
cnlGcm9tU3RvcmFnZShrZXksIFt0aGlzLCBrZXksIHN1YlJlc291cmNlSW5mbywgZnJhbWVJRF0o
c3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBlbnRyeSkgeworICAgIGF1dG8qIHN1YlJlc291cmNlSW5m
b1B0ciA9IG5ldyBTdWJyZXNvdXJjZUluZm8oc3ViUmVzb3VyY2VJbmZvKTsKKyAgICByZXRyaWV2
ZUVudHJ5RnJvbVN0b3JhZ2Uoa2V5LCBbdGhpcywga2V5LCBzdWJSZXNvdXJjZUluZm9QdHIsIGZy
YW1lSURdKHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gZW50cnkpIHsKKyAgICAgICAgYXV0byBzdWJS
ZXNvdXJjZUluZm8gPSBzdGQ6OnVuaXF1ZV9wdHI8U3VicmVzb3VyY2VJbmZvPihzdWJSZXNvdXJj
ZUluZm9QdHIpOwogICAgICAgICBtX3BlbmRpbmdQcmVsb2Fkcy5yZW1vdmUoa2V5KTsKIAogICAg
ICAgICBpZiAoc2F0aXNmeVBlbmRpbmdSZXF1ZXN0cyhrZXksIGVudHJ5LmdldCgpKSkgewpAQCAt
NDE5LDE3ICs0OTgsMTcgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpwcmVsb2FkRW50
cnkoY29uc3QgS2V5JiBrZXksIGNvbnN0IFN1YnJlc291cmNlSW5mbyYKICAgICAgICAgICAgIHJl
dHVybjsKIAogICAgICAgICBpZiAoZW50cnktPm5lZWRzVmFsaWRhdGlvbigpKQotICAgICAgICAg
ICAgcmV2YWxpZGF0ZUVudHJ5KFdURk1vdmUoZW50cnkpLCBzdWJSZXNvdXJjZUluZm8sIGZyYW1l
SUQpOworICAgICAgICAgICAgcmV2YWxpZGF0ZUVudHJ5KFdURk1vdmUoZW50cnkpLCAqc3ViUmVz
b3VyY2VJbmZvLCBmcmFtZUlEKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgYWRkUHJlbG9h
ZGVkRW50cnkoV1RGTW92ZShlbnRyeSksIGZyYW1lSUQsIFdhc1JldmFsaWRhdGVkOjpObyk7Cisg
ICAgICAgICAgICBhZGRQcmVsb2FkZWRFbnRyeShXVEZNb3ZlKGVudHJ5KSwgZnJhbWVJRCk7CiAg
ICAgfSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6c3RhcnRTcGVjdWxhdGl2
ZVJldmFsaWRhdGlvbihjb25zdCBHbG9iYWxGcmFtZUlEJiBmcmFtZUlELCBTdWJyZXNvdXJjZXNF
bnRyeSYgZW50cnkpCiB7CiAgICAgZm9yIChhdXRvJiBzdWJyZXNvdXJjZVBhaXIgOiBlbnRyeS5z
dWJyZXNvdXJjZXMoKSkgewotICAgICAgICBhdXRvIGtleSA9IHN1YnJlc291cmNlUGFpci5rZXk7
Ci0gICAgICAgIGF1dG8gc3VicmVzb3VyY2VJbmZvID0gc3VicmVzb3VyY2VQYWlyLnZhbHVlOwor
ICAgICAgICBhdXRvJiBrZXkgPSBzdWJyZXNvdXJjZVBhaXIua2V5OworICAgICAgICBhdXRvJiBz
dWJyZXNvdXJjZUluZm8gPSBzdWJyZXNvdXJjZVBhaXIudmFsdWU7CiAgICAgICAgIGlmICghc3Vi
cmVzb3VyY2VJbmZvLmlzVHJhbnNpZW50KQogICAgICAgICAgICAgcHJlbG9hZEVudHJ5KGtleSwg
c3VicmVzb3VyY2VJbmZvLCBmcmFtZUlEKTsKICAgICAgICAgZWxzZSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2
ZUxvYWRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmgKaW5kZXggMDBjODMzYjM0NmM4NjNjM2Nm
ODc5OTg4Mjg0MjUwZjUxZDJmMjZlNC4uZGNiYmZhYmFhOWY1ZmM2NzZiZTM5MmQ3NTc4MjY5Nzkz
YjkyOGY5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIu
aApAQCAtNTEsMTEgKzUxLDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVyTG9hZChjb25z
dCBHbG9iYWxGcmFtZUlEJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3Qg
S2V5JiByZXNvdXJjZUtleSk7CiAKICAgICB0eXBlZGVmIHN0ZDo6ZnVuY3Rpb248dm9pZCAoc3Rk
Ojp1bmlxdWVfcHRyPEVudHJ5Pik+IFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXI7Ci0gICAgYm9v
bCByZXRyaWV2ZShjb25zdCBHbG9iYWxGcmFtZUlEJiwgY29uc3QgS2V5JiBzdG9yYWdlS2V5LCBj
b25zdCBSZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyJik7CisgICAgYm9vbCByZXRyaWV2ZShjb25z
dCBHbG9iYWxGcmFtZUlEJiwgY29uc3QgS2V5JiBzdG9yYWdlS2V5LCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyJik7CiAKIHBy
aXZhdGU6Ci0gICAgZW51bSBjbGFzcyBXYXNSZXZhbGlkYXRlZCB7IE5vLCBZZXMgfTsKLSAgICB2
b2lkIGFkZFByZWxvYWRlZEVudHJ5KHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4sIGNvbnN0IEdsb2Jh
bEZyYW1lSUQmLCBXYXNSZXZhbGlkYXRlZCk7CisgICAgY2xhc3MgUHJlbG9hZGVkRW50cnk7CisK
KyAgICB2b2lkIGFkZFByZWxvYWRlZEVudHJ5KHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4sIGNvbnN0
IEdsb2JhbEZyYW1lSUQmLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
PiByZXZhbGlkYXRpb25SZXF1ZXN0ID0gbnVsbHB0cik7CiAgICAgdm9pZCBwcmVsb2FkRW50cnko
Y29uc3QgS2V5JiwgY29uc3QgU3VicmVzb3VyY2VJbmZvJiwgY29uc3QgR2xvYmFsRnJhbWVJRCYp
OwogICAgIHZvaWQgcmV0cmlldmVFbnRyeUZyb21TdG9yYWdlKGNvbnN0IEtleSYsIGNvbnN0IFJl
dHJpZXZlQ29tcGxldGlvbkhhbmRsZXImKTsKICAgICB2b2lkIHJldmFsaWRhdGVFbnRyeShzdGQ6
OnVuaXF1ZV9wdHI8RW50cnk+LCBjb25zdCBTdWJyZXNvdXJjZUluZm8mLCBjb25zdCBHbG9iYWxG
cmFtZUlEJik7CkBAIC02Myw2ICs2NCw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXRyaWV2ZVN1
YnJlc291cmNlc0VudHJ5KGNvbnN0IEtleSYgc3RvcmFnZUtleSwgc3RkOjpmdW5jdGlvbjx2b2lk
IChzdGQ6OnVuaXF1ZV9wdHI8U3VicmVzb3VyY2VzRW50cnk+KT4pOwogICAgIHZvaWQgc3RhcnRT
cGVjdWxhdGl2ZVJldmFsaWRhdGlvbihjb25zdCBHbG9iYWxGcmFtZUlEJiwgU3VicmVzb3VyY2Vz
RW50cnkmKTsKIAorICAgIHN0YXRpYyBib29sIGNhblVzZVByZWxvYWRlZEVudHJ5KGNvbnN0IFBy
ZWxvYWRlZEVudHJ5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBhY3R1YWxSZXF1
ZXN0KTsKKyAgICBzdGF0aWMgYm9vbCBjYW5Vc2VQZW5kaW5nUHJlbG9hZChjb25zdCBTcGVjdWxh
dGl2ZUxvYWQmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIGFjdHVhbFJlcXVlc3Qp
OworCiAgICAgU3RvcmFnZSYgbV9zdG9yYWdlOwogCiAgICAgY2xhc3MgUGVuZGluZ0ZyYW1lTG9h
ZDsKQEAgLTcxLDcgKzc1LDYgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPEtleSwgc3RkOjp1bmlx
dWVfcHRyPFNwZWN1bGF0aXZlTG9hZD4+IG1fcGVuZGluZ1ByZWxvYWRzOwogICAgIEhhc2hNYXA8
S2V5LCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXI+Pj4g
bV9wZW5kaW5nUmV0cmlldmVSZXF1ZXN0czsKIAotICAgIGNsYXNzIFByZWxvYWRlZEVudHJ5Owog
ICAgIEhhc2hNYXA8S2V5LCBzdGQ6OnVuaXF1ZV9wdHI8UHJlbG9hZGVkRW50cnk+PiBtX3ByZWxv
YWRlZEVudHJpZXM7CiAKICAgICBjbGFzcyBFeHBpcmluZ0VudHJ5OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3VicmVzb3VyY2Vz
RW50cnkuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlU3VicmVzb3VyY2VzRW50cnkuY3BwCmluZGV4IDU2NGI4NWRiNDg1NDZkOGZmZjg4YTE3ODRm
ZDMwZmE0NTAyOTQ3ZTkuLmEyOGNiY2EwOWI0ODBlOWJkNDJkMjhkZjA0ODU0YjY3ZjgxOGY4ZWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVN1YnJlc291cmNlc0VudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5jcHAKQEAgLTQwLDcgKzQw
LDcgQEAgdm9pZCBTdWJyZXNvdXJjZUluZm86OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAogewogICAgIGVuY29kZXIgPDwgZmlyc3RQYXJ0eUZvckNvb2tpZXM7CiAgICAgZW5jb2RlciA8
PCBpc1RyYW5zaWVudDsKLSAgICBlbmNvZGVyIDw8IGh0dHBVc2VyQWdlbnQ7CisgICAgcmVxdWVz
dEhlYWRlcnMuZW5jb2RlKGVuY29kZXIpOwogfQogCiBib29sIFN1YnJlc291cmNlSW5mbzo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIsIFN1YnJlc291cmNlSW5mbyYgaW5mbykKQEAgLTQ5LDI2ICs0
OSwxMSBAQCBib29sIFN1YnJlc291cmNlSW5mbzo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFN1
YnJlc291cmNlSW5mbyYgaW5mbykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoaW5mby5pc1RyYW5zaWVudCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGluZm8uaHR0cFVzZXJBZ2VudCkpCisgICAgaWYgKCFXZWJD
b3JlOjpIVFRQSGVhZGVyTWFwOjpkZWNvZGUoZGVjb2RlciwgaW5mby5yZXF1ZXN0SGVhZGVycykp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotU3VicmVzb3Vy
Y2VJbmZvOjpTdWJyZXNvdXJjZUluZm8oY29uc3QgU3VicmVzb3VyY2VJbmZvJiBzdWJyZXNvdXJj
ZUluZm8pCi0gICAgOiBmaXJzdFBhcnR5Rm9yQ29va2llcyhzdWJyZXNvdXJjZUluZm8uZmlyc3RQ
YXJ0eUZvckNvb2tpZXMuaXNvbGF0ZWRDb3B5KCkpCi0gICAgLCBodHRwVXNlckFnZW50KHN1YnJl
c291cmNlSW5mby5odHRwVXNlckFnZW50Lmlzb2xhdGVkQ29weSgpKQotICAgICwgaXNUcmFuc2ll
bnQoc3VicmVzb3VyY2VJbmZvLmlzVHJhbnNpZW50KQotewotfQotCi1TdWJyZXNvdXJjZUluZm8m
IFN1YnJlc291cmNlSW5mbzo6b3BlcmF0b3I9KGNvbnN0IFN1YnJlc291cmNlSW5mbyYgb3RoZXIp
Ci17Ci0gICAgZmlyc3RQYXJ0eUZvckNvb2tpZXMgPSBvdGhlci5maXJzdFBhcnR5Rm9yQ29va2ll
cy5pc29sYXRlZENvcHkoKTsKLSAgICBodHRwVXNlckFnZW50ID0gb3RoZXIuaHR0cFVzZXJBZ2Vu
dC5pc29sYXRlZENvcHkoKTsKLSAgICBpc1RyYW5zaWVudCA9IG90aGVyLmlzVHJhbnNpZW50Owot
ICAgIHJldHVybiAqdGhpczsKLX0KLQogU3RvcmFnZTo6UmVjb3JkIFN1YnJlc291cmNlc0VudHJ5
OjplbmNvZGVBc1N0b3JhZ2VSZWNvcmQoKSBjb25zdAogewogICAgIEVuY29kZXIgZW5jb2RlcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVN1YnJlc291cmNlc0VudHJ5LmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5oCmluZGV4IGM3YjFjNTBlZGFiNjEz
Y2ZhNmI2NWI3NjNjZGM0MGRmMGY0M2YwYTYuLjY1YzM1YjBmNDQyZTg1MGUxY2UzYzBlOWZjMDY4
YTUxNzdlNTczN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmgKKysrIGIvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuaApAQCAt
MzksMjMgKzM5LDIxIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogbmFtZXNwYWNlIE5ldHdvcmtDYWNo
ZSB7CiAKIHN0cnVjdCBTdWJyZXNvdXJjZUluZm8geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOworcHVibGljOgorCiAgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHN0
YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwgU3VicmVzb3VyY2VJbmZvJik7CiAKICAgICBTdWJy
ZXNvdXJjZUluZm8oKSA9IGRlZmF1bHQ7CiAgICAgU3VicmVzb3VyY2VJbmZvKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBpc1RyYW5zaWVudCA9IGZhbHNlKQog
ICAgICAgICA6IGZpcnN0UGFydHlGb3JDb29raWVzKHJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tp
ZXMoKSkKLSAgICAgICAgLCBodHRwVXNlckFnZW50KHJlcXVlc3QuaHR0cFVzZXJBZ2VudCgpKQor
ICAgICAgICAsIHJlcXVlc3RIZWFkZXJzKHJlcXVlc3QuaHR0cEhlYWRlckZpZWxkcygpKQogICAg
ICAgICAsIGlzVHJhbnNpZW50KGlzVHJhbnNpZW50KQogICAgIHsgfQogCi0gICAgU3VicmVzb3Vy
Y2VJbmZvKGNvbnN0IFN1YnJlc291cmNlSW5mbyYpOwotICAgIFN1YnJlc291cmNlSW5mbyhTdWJy
ZXNvdXJjZUluZm8mJikgPSBkZWZhdWx0OwotICAgIFN1YnJlc291cmNlSW5mbyYgb3BlcmF0b3I9
KGNvbnN0IFN1YnJlc291cmNlSW5mbyYpOwotICAgIFN1YnJlc291cmNlSW5mbyYgb3BlcmF0b3I9
KFN1YnJlc291cmNlSW5mbyYmKSA9IGRlZmF1bHQ7Ci0KICAgICBXZWJDb3JlOjpVUkwgZmlyc3RQ
YXJ0eUZvckNvb2tpZXM7Ci0gICAgU3RyaW5nIGh0dHBVc2VyQWdlbnQ7CisgICAgV2ViQ29yZTo6
SFRUUEhlYWRlck1hcCByZXF1ZXN0SGVhZGVyczsKICAgICBib29sIGlzVHJhbnNpZW50IHsgZmFs
c2UgfTsKIH07CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCAwOTNhMzQxOGNmMDFiZjFkNjM5YmY0ZWVjMzFlYjYyNTlmMDA2
MGUyLi5iOTY2YTdkMWEyY2EzMDQ1MTIyYjZmMTIxYzNlNzM1YTg0N2NiMjg2IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTcgQEAKKzIwMTYtMDMtMjUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
KworICAgICAgICBEaXNrIGNhY2hlIHNwZWN1bGF0aXZlIHZhbGlkYXRpb24gcmVxdWVzdHMgZG8g
bm90IGhhdmUgdGhlICdSZWZlcmVyJyBIVFRQIGhlYWRlciBzZXQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTg5MAorICAgICAgICA8cmRhcjovL3By
b2JsZW0vMjUyNzk5NjI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCisK
KyAgICAgICAgVXBkYXRlIGV4aXN0aW5nIGxheW91dCB0ZXN0IHRvIG1ha2Ugc3VyZSB0aGF0IHNw
ZWN1bGF0aXZlIHZhbGlkYXRpb24KKyAgICAgICAgcmVxdWVzdHMgaGF2ZSB0aGVpciBIVFRQICdS
ZWZlcmVyJyBoZWFkZXIgc2V0LgorCisgICAgICAgICogaHR0cC90ZXN0cy9jYWNoZS9kaXNrLWNh
Y2hlL3NwZWN1bGF0aXZlLXZhbGlkYXRpb24vdmFsaWRhdGlvbi1yZXF1ZXN0LWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2NhY2hlL2Rpc2stY2FjaGUvc3BlY3VsYXRpdmUtdmFs
aWRhdGlvbi92YWxpZGF0aW9uLXJlcXVlc3QuaHRtbDoKKwogMjAxNi0wMy0yNSAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBBdWRpbyB0cmFja3MgaW4g
YWx0ZXJuYXRlIGdyb3VwcyBhcmUgbm90IHJlcHJlc2VudGVkIGNvcnJlY3RseSBhcyBBdWRpb1Ry
YWNrcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9kaXNrLWNhY2hl
L3NwZWN1bGF0aXZlLXZhbGlkYXRpb24vdmFsaWRhdGlvbi1yZXF1ZXN0LWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvZGlzay1jYWNoZS9zcGVjdWxhdGl2ZS12YWxp
ZGF0aW9uL3ZhbGlkYXRpb24tcmVxdWVzdC1leHBlY3RlZC50eHQKaW5kZXggOThiNGFlY2E3NDk0
NWM5MjRlNGI3OTkwMWNjMWY1MjI1NzYzMTU4NS4uY2E0ODIyMzM4MWY1NGIzNTcyNjNiNGU0NDc2
NTM0NWM1ZTE1YTk5NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9k
aXNrLWNhY2hlL3NwZWN1bGF0aXZlLXZhbGlkYXRpb24vdmFsaWRhdGlvbi1yZXF1ZXN0LWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL2Rpc2stY2FjaGUvc3Bl
Y3VsYXRpdmUtdmFsaWRhdGlvbi92YWxpZGF0aW9uLXJlcXVlc3QtZXhwZWN0ZWQudHh0CkBAIC00
LDcgKzQsMTIgQEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUKIAogCiBQQVNTIHZhbGlkYXRpb25S
ZXF1ZXN0SGVhZGVyKCdJZi1Ob25lLU1hdGNoJykgaXMgIjEyMzQ1Njc4OSIKLVBBU1MgdmFsaWRh
dGlvblJlcXVlc3RIZWFkZXIoJ1VzZXItQWdlbnQnKSBpcyBpbml0aWFsVXNlckFnZW50CitQQVNT
IHZhbGlkYXRpb25SZXF1ZXN0SGVhZGVyKCdBY2NlcHQnKSBpcyBpbml0aWFsSGVhZGVyVmFsdWVz
WydBY2NlcHQnXQorUEFTUyB2YWxpZGF0aW9uUmVxdWVzdEhlYWRlcignQWNjZXB0LUVuY29kaW5n
JykgaXMgaW5pdGlhbEhlYWRlclZhbHVlc1snQWNjZXB0LUVuY29kaW5nJ10KK1BBU1MgdmFsaWRh
dGlvblJlcXVlc3RIZWFkZXIoJ0FjY2VwdC1MYW5ndWFnZScpIGlzIGluaXRpYWxIZWFkZXJWYWx1
ZXNbJ0FjY2VwdC1MYW5ndWFnZSddCitQQVNTIHZhbGlkYXRpb25SZXF1ZXN0SGVhZGVyKCdDb25u
ZWN0aW9uJykgaXMgaW5pdGlhbEhlYWRlclZhbHVlc1snQ29ubmVjdGlvbiddCitQQVNTIHZhbGlk
YXRpb25SZXF1ZXN0SGVhZGVyKCdSZWZlcmVyJykgaXMgaW5pdGlhbEhlYWRlclZhbHVlc1snUmVm
ZXJlciddCitQQVNTIHZhbGlkYXRpb25SZXF1ZXN0SGVhZGVyKCdVc2VyLUFnZW50JykgaXMgaW5p
dGlhbEhlYWRlclZhbHVlc1snVXNlci1BZ2VudCddCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvY2FjaGUvZGlzay1jYWNoZS9zcGVjdWxhdGl2ZS12YWxpZGF0aW9uL3ZhbGlkYXRpb24tcmVx
dWVzdC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9kaXNrLWNhY2hlL3NwZWN1
bGF0aXZlLXZhbGlkYXRpb24vdmFsaWRhdGlvbi1yZXF1ZXN0Lmh0bWwKaW5kZXggYWQ4NGI2MmU1
N2MyZjA3MmZhN2NlNjFiMDFkNjQ0NThjNmQwMjk5Yi4uZGU2YTU4ZDNlMjIxOWJlODlkYjBkMGNh
ODEwMTA4YWUwNjJmZGFmNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNo
ZS9kaXNrLWNhY2hlL3NwZWN1bGF0aXZlLXZhbGlkYXRpb24vdmFsaWRhdGlvbi1yZXF1ZXN0Lmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9kaXNrLWNhY2hlL3NwZWN1bGF0
aXZlLXZhbGlkYXRpb24vdmFsaWRhdGlvbi1yZXF1ZXN0Lmh0bWwKQEAgLTUsNiArNSw5IEBAIGpz
VGVzdElzQXN5bmMgPSB0cnVlOwogCiBzdGF0ZSA9ICJ3YXJtdXAiOwogCit2YXIgaGVhZGVyc1Rv
Q2hlY2sgPSBbIkFjY2VwdCIsICJBY2NlcHQtRW5jb2RpbmciLCAiQWNjZXB0LUxhbmd1YWdlIiwg
IkNvbm5lY3Rpb24iLCAiUmVmZXJlciIsICJVc2VyLUFnZW50Il07Cit2YXIgaGVhZGVyVG9DaGVj
azsKKwogZnVuY3Rpb24gdmFsaWRhdGlvblJlcXVlc3RIZWFkZXIoaGVhZGVyTmFtZSkKIHsKICAg
ICByZXR1cm4gZnJhbWVzWzBdLmFsbFJlcXVlc3RIZWFkZXJzW2hlYWRlck5hbWVdOwpAQCAtMTQs
NyArMTcsMTEgQEAgZnVuY3Rpb24gdmFsaWRhdGlvblJlcXVlc3RIZWFkZXIoaGVhZGVyTmFtZSkK
IGZ1bmN0aW9uIGZyYW1lTG9hZGVkKCkKIHsKICAgICBpZiAoc3RhdGUgPT0gIndhcm11cCIpIHsK
LSAgICAgICAgaW5pdGlhbFVzZXJBZ2VudCA9IHZhbGlkYXRpb25SZXF1ZXN0SGVhZGVyKCdVc2Vy
LUFnZW50Jyk7CisgICAgICAgIGluaXRpYWxIZWFkZXJWYWx1ZXMgPSBbXTsKKyAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBoZWFkZXJzVG9DaGVjay5sZW5ndGg7IGkrKykgeworICAgICAgICAg
ICAgaGVhZGVyVG9DaGVjayA9IGhlYWRlcnNUb0NoZWNrW2ldOworICAgICAgICAgICAgaW5pdGlh
bEhlYWRlclZhbHVlc1toZWFkZXJUb0NoZWNrXSA9IHZhbGlkYXRpb25SZXF1ZXN0SGVhZGVyKGhl
YWRlclRvQ2hlY2spOworICAgICAgICB9CiAgICAgICAgIC8vIE5hdmlnYXRlIGZyYW1lIHRvICdh
Ym91dDpibGFuaycgdG8gZmx1c2ggdG8gc3VicmVzb3VyY2UgbG9hZHMgbWV0YWRhdGEgdG8gZGlz
ay4KICAgICAgICAgc3RhdGUgPSAiZmx1c2hpbmdNZXRhZGF0YSI7CiAgICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJ0ZXN0RnJhbWUiKS5zcmMgPSAiYWJvdXQ6YmxhbmsiOwpAQCAtMzAs
NyArMzcsMTEgQEAgZnVuY3Rpb24gZnJhbWVMb2FkZWQoKQogICAgIGlmIChzdGF0ZSA9PSAic3Bl
Y3VsYXRpdmVSZXZhbGlkYXRpb24iKSB7CiAgICAgICAgIC8vIFZhbGlkYXRlIHRoZSBIVFRQIGhl
YWRlcnMgb2YgdGhlIHNwZWN1bGF0aXZlIHZhbGlkYXRpb24gcmVxdWVzdC4KICAgICAgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJ2YWxpZGF0aW9uUmVxdWVzdEhlYWRlcignSWYtTm9uZS1NYXRj
aCcpIiwgIjEyMzQ1Njc4OSIpOwotICAgICAgICBzaG91bGRCZSgidmFsaWRhdGlvblJlcXVlc3RI
ZWFkZXIoJ1VzZXItQWdlbnQnKSIsICJpbml0aWFsVXNlckFnZW50Iik7CisKKyAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBoZWFkZXJzVG9DaGVjay5sZW5ndGg7IGkrKykgeworICAgICAgICAg
ICAgaGVhZGVyVG9DaGVjayA9IGhlYWRlcnNUb0NoZWNrW2ldOworICAgICAgICAgICAgc2hvdWxk
QmUoInZhbGlkYXRpb25SZXF1ZXN0SGVhZGVyKCciICsgaGVhZGVyVG9DaGVjayArICInKSIsICJp
bml0aWFsSGVhZGVyVmFsdWVzWyciICsgaGVhZGVyVG9DaGVjayArICInXSIpOworICAgICAgICB9
CiAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>