<?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>153328</bug_id>
          
          <creation_ts>2016-01-21 15:41:17 -0800</creation_ts>
          <short_desc>Use credentials from a URL with NetworkSession like we did with ResourceHandle</short_desc>
          <delta_ts>2016-01-23 01:44:24 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>ap</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1157468</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-01-21 15:41:17 -0800</bug_when>
    <thetext>Use CredentialStorage with NetworkSession like we did with ResourceHandle</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1157469</commentid>
    <comment_count>1</comment_count>
      <attachid>269507</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-01-21 15:45:24 -0800</bug_when>
    <thetext>Created attachment 269507
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1157775</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-01-22 12:12:15 -0800</bug_when>
    <thetext>I hoped that we would get rid of CredentialStorage when using NetworkSession, it&apos;s an abomination.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1157799</commentid>
    <comment_count>3</comment_count>
      <attachid>269601</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-01-22 13:38:27 -0800</bug_when>
    <thetext>Created attachment 269601
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1157800</commentid>
    <comment_count>4</comment_count>
      <attachid>269601</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-01-22 13:38:55 -0800</bug_when>
    <thetext>Comment on attachment 269601
Patch

This patch was uploading buggy WIP before trying another approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1157900</commentid>
    <comment_count>5</comment_count>
      <attachid>269622</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-01-22 16:49:05 -0800</bug_when>
    <thetext>Created attachment 269622
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1158018</commentid>
    <comment_count>6</comment_count>
      <attachid>269622</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-23 01:44:20 -0800</bug_when>
    <thetext>Comment on attachment 269622
Patch

Clearing flags on attachment: 269622

Committed r195509: &lt;http://trac.webkit.org/changeset/195509&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1158019</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-23 01:44:24 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>269507</attachid>
            <date>2016-01-21 15:45:24 -0800</date>
            <delta_ts>2016-01-22 13:38:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-153328-20160121154457.patch</filename>
            <type>text/plain</type>
            <size>19698</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NTM5MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDE2LTAxLTIxICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIENyZWRl
bnRpYWxTdG9yYWdlIHdpdGggTmV0d29ya1Nlc3Npb24gbGlrZSB3ZSBkaWQgd2l0aCBSZXNvdXJj
ZUhhbmRsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTUzMzI4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBwYXRjaCBmaXhlcyBhdCBsZWFzdCBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2Jhc2lj
LWF1dGgtY3JlZGVudGlhbHMtZXNjYXBpbmcuaHRtbCB3aGVuIHVzaW5nIE5ldHdvcmtTZXNzaW9u
LgorCisgICAgICAgICogcGxhdGZvcm0vVVJMLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9DcmVkZW50aWFsQmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbEJhc2U6OmVu
Y29kaW5nUmVxdWlyZXNQbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Q3JlZGVudGlhbFN0b3JhZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Byb3RlY3Rp
b25TcGFjZUJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZUJhc2U6OmVu
Y29kaW5nUmVxdWlyZXNQbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VSZXF1ZXN0QmFzZS5oOgorICAgICAgICBBZGQgc29tZSBXRUJDT1JFX0VYUE9SVCBt
YWNyb3MgZm9yIGZ1bmN0aW9ucyB0aGF0IGFyZSBub3cgdXNlZCBpbiBXZWJLaXQyLgorCiAyMDE2
LTAxLTIwICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVz
b3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZSBkZWxl
Z2F0ZSBtZXRob2RzIGRvbid0IE5VTEwtY2hlY2sgbV9oYW5kbGUtPmNsaWVudCgpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9VUkwuaAkocmV2aXNpb24gMTk1MzkzKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vVVJMLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0MCw4ICsxNDAsOCBAQCBwdWJsaWM6CiAg
ICAgLy8gSW5wdXQgaXMgbGlrZSAiZm9vLmNvbSIgb3IgImZvby5jb206ODAwMCIuCiAgICAgdm9p
ZCBzZXRIb3N0QW5kUG9ydChjb25zdCBTdHJpbmcmKTsKIAotICAgIHZvaWQgc2V0VXNlcihjb25z
dCBTdHJpbmcmKTsKLSAgICB2b2lkIHNldFBhc3MoY29uc3QgU3RyaW5nJik7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRVc2VyKGNvbnN0IFN0cmluZyYpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0UGFzcyhjb25zdCBTdHJpbmcmKTsKIAogICAgIC8vIElmIHlvdSBwYXNzIGFuIGVt
cHR5IHBhdGggZm9yIEhUVFAgb3IgSFRUUFMgVVJMcywgdGhlIHJlc3VsdGluZyBwYXRoCiAgICAg
Ly8gd2lsbCBiZSAiLyIuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Ny
ZWRlbnRpYWxCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9DcmVkZW50aWFsQmFzZS5oCShyZXZpc2lvbiAxOTUzOTMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUx
LDcgKzUxLDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBlbmNvZGluZ1JlcXVpcmVzUGxhdGZvcm1E
YXRhKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHN0YXRpYyBib29sIGNvbXBhcmUo
Y29uc3QgQ3JlZGVudGlhbCYsIGNvbnN0IENyZWRlbnRpYWwmKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgYm9vbCBjb21wYXJlKGNvbnN0IENyZWRlbnRpYWwmLCBjb25zdCBDcmVkZW50aWFs
Jik7CiAKIHByb3RlY3RlZDoKICAgICBXRUJDT1JFX0VYUE9SVCBDcmVkZW50aWFsQmFzZSgpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlh
bFN0b3JhZ2UuaAkocmV2aXNpb24gMTk1MzkzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw5ICs0Myw5
IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgQ3JlZGVudGlhbFN0b3JhZ2Um
IGRlZmF1bHRDcmVkZW50aWFsU3RvcmFnZSgpOwogCiAgICAgLy8gV2ViQ29yZSBzZXNzaW9uIGNy
ZWRlbnRpYWwgc3RvcmFnZS4KLSAgICB2b2lkIHNldChjb25zdCBDcmVkZW50aWFsJiwgY29uc3Qg
UHJvdGVjdGlvblNwYWNlJiwgY29uc3QgVVJMJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXQoY29uc3QgQ3JlZGVudGlhbCYsIGNvbnN0IFByb3RlY3Rpb25TcGFjZSYsIGNvbnN0IFVSTCYp
OwogICAgIFdFQkNPUkVfRVhQT1JUIENyZWRlbnRpYWwgZ2V0KGNvbnN0IFByb3RlY3Rpb25TcGFj
ZSYpOwotICAgIHZvaWQgcmVtb3ZlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcmVtb3ZlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYpOwogCiAgICAgLy8g
T1MgcGVyc2lzdGVudCBzdG9yYWdlLgogICAgIFdFQkNPUkVfRVhQT1JUIENyZWRlbnRpYWwgZ2V0
RnJvbVBlcnNpc3RlbnRTdG9yYWdlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYpOwpAQCAtNTgsNyAr
NTgsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBUaGVzZSBtZXRob2RzIHdvcmsgZm9yIGF1dGhlbnRp
Y2F0aW9uIHNjaGVtZXMgdGhhdCBzdXBwb3J0IHNlbmRpbmcgY3JlZGVudGlhbHMgd2l0aG91dCB3
YWl0aW5nIGZvciBhIHJlcXVlc3QuIEUuZy4sIGZvciBIVFRQIEJhc2ljIGF1dGhlbnRpY2F0aW9u
IHNjaGVtZQogICAgIC8vIGEgY2xpZW50IHNob3VsZCBhc3N1bWUgdGhhdCBhbGwgcGF0aHMgYXQg
b3IgZGVlcGVyIHRoYW4gdGhlIGRlcHRoIG9mIGEga25vd24gcHJvdGVjdGVkIHJlc291cmNlIHNo
YXJlIGFyZSB3aXRoaW4gdGhlIHNhbWUgcHJvdGVjdGlvbiBzcGFjZS4KLSAgICBib29sIHNldChj
b25zdCBDcmVkZW50aWFsJiwgY29uc3QgVVJMJik7IC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgVVJM
IGNvcnJlc3BvbmRzIHRvIGEga25vd24gcHJvdGVjdGlvbiBzcGFjZSwgc28gY3JlZGVudGlhbHMg
Y291bGQgYmUgdXBkYXRlZC4KKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNldChjb25zdCBDcmVk
ZW50aWFsJiwgY29uc3QgVVJMJik7IC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgVVJMIGNvcnJlc3Bv
bmRzIHRvIGEga25vd24gcHJvdGVjdGlvbiBzcGFjZSwgc28gY3JlZGVudGlhbHMgY291bGQgYmUg
dXBkYXRlZC4KICAgICBXRUJDT1JFX0VYUE9SVCBDcmVkZW50aWFsIGdldChjb25zdCBVUkwmKTsK
IAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJvdGVj
dGlvblNwYWNlQmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUHJvdGVjdGlvblNwYWNlQmFzZS5oCShyZXZpc2lvbiAxOTUzOTMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Byb3RlY3Rpb25TcGFjZUJhc2UuaAkod29ya2luZyBj
b3B5KQpAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgUHJvdGVj
dGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWUgYXV0aGVudGljYXRpb25TY2hlbWUoKSBjb25z
dDsKICAgICAKICAgICBib29sIHJlY2VpdmVzQ3JlZGVudGlhbFNlY3VyZWx5KCkgY29uc3Q7Ci0g
ICAgYm9vbCBpc1Bhc3N3b3JkQmFzZWQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29s
IGlzUGFzc3dvcmRCYXNlZCgpIGNvbnN0OwogCiAgICAgYm9vbCBlbmNvZGluZ1JlcXVpcmVzUGxh
dGZvcm1EYXRhKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIApJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgJKHJl
dmlzaW9uIDE5NTM5MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VSZXF1ZXN0QmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgVVJMJiB1cmwoKSBjb25z
dDsKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRVUkwoY29uc3QgVVJMJiB1cmwpOwog
Ci0gICAgICAgIHZvaWQgcmVtb3ZlQ3JlZGVudGlhbHMoKTsKKyAgICAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCByZW1vdmVDcmVkZW50aWFscygpOwogCiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIFJl
c291cmNlUmVxdWVzdENhY2hlUG9saWN5IGNhY2hlUG9saWN5KCkgY29uc3Q7CiAgICAgICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0Q2FjaGVQb2xpY3koUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xp
Y3kgY2FjaGVQb2xpY3kpOwpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTk1NDI0KQorKysgU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkgQEAKKzIw
MTYtMDEtMjEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKwor
ICAgICAgICBVc2UgQ3JlZGVudGlhbFN0b3JhZ2Ugd2l0aCBOZXR3b3JrU2Vzc2lvbiBsaWtlIHdl
IGRpZCB3aXRoIFJlc291cmNlSGFuZGxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTMzMjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6Ok5ldHdvcmtMb2FkKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRh
c2s6OnNldFBlbmRpbmdEb3dubG9hZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya1Nlc3Npb25Db2NvYS5tbToKKyAgICAgICAgKHRvTlNVUkxTZXNzaW9uUmVzcG9uc2VE
aXNwb3NpdGlvbik6CisgICAgICAgICgtW1dLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNz
aW9uOnRhc2s6ZGlkUmVjZWl2ZUNoYWxsZW5nZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmRlZmF1bHRTZXNzaW9uKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Nlc3Npb246Ok5ldHdvcmtTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Nlc3Npb246On5OZXR3b3JrU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtTZXNzaW9uOjpkYXRhVGFza0ZvcklkZW50aWZpZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrU2Vzc2lvbjo6dGFrZURvd25sb2FkSUQpOgorICAgICAgICAoV2ViS2l0OjphcHBseUJhc2lj
QXV0aG9yaXphdGlvbkhlYWRlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFzazo6
TmV0d29ya0RhdGFUYXNrKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrOjp0cnlQ
YXNzd29yZEJhc2VkQXV0aGVudGljYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0
YVRhc2s6On5OZXR3b3JrRGF0YVRhc2spOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lv
bjo6Y3JlYXRlRGF0YVRhc2tXaXRoUmVxdWVzdCk6IERlbGV0ZWQuCisgICAgICAgICogU2hhcmVk
L0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5oOgorCiAyMDE2LTAxLTIxICBE
ZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBDcmFzaCBpbiBf
ZW5kUG90ZW50aWFsVGFwQW5kRW5hYmxlRG91YmxlVGFwR2VzdHVyZXNJZk5lY2Vzc2FyeQpJbmRl
eDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAkocmV2
aXNpb24gMTk1MzkzKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xv
YWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBAIE5ldHdvcmtMb2FkOjpOZXR3
b3JrTG9hZChOZXR3b3JrTG9hZENsaWUKICNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogICAgIGlm
ICghcGFyYW1ldGVycy5kZWZlcnNMb2FkaW5nKSB7CiAgICAgICAgIGlmIChhdXRvKiBuZXR3b3Jr
U2Vzc2lvbiA9IFNlc3Npb25UcmFja2VyOjpuZXR3b3JrU2Vzc2lvbihwYXJhbWV0ZXJzLnNlc3Np
b25JRCkpIHsKLSAgICAgICAgICAgIG1fdGFzayA9IG5ldHdvcmtTZXNzaW9uLT5jcmVhdGVEYXRh
VGFza1dpdGhSZXF1ZXN0KHBhcmFtZXRlcnMucmVxdWVzdCwgKnRoaXMpOworICAgICAgICAgICAg
bV90YXNrID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrRGF0YVRhc2s+KCpuZXR3b3JrU2Vzc2lv
biwgKnRoaXMsIHBhcmFtZXRlcnMucmVxdWVzdCk7CiAgICAgICAgICAgICBtX3Rhc2stPnJlc3Vt
ZSgpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpJ
bmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5o
CShyZXZpc2lvbiAxOTUzOTMpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU2Vzc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBAIE9CSkNfQ0xBU1Mg
V0tOZXR3b3JrU2Vzc2lvbkRlbGVnYXRlOwogI2VuZGlmCiAKICNpbmNsdWRlICJEb3dubG9hZElE
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DcmVkZW50aWFsLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9G
cmFtZUxvYWRlclR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXNzaW9uSUQuaD4KICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtNDEsNiArNDIsNyBAQCBPQkpDX0NMQVNTIFdLTmV0d29y
a1Nlc3Npb25EZWxlZ2F0ZTsKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZTsKQEAgLTYzLDExICs2NSwxMiBAQCBlbnVtIGNsYXNzIEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlRGlzcG9zCiBjbGFzcyBOZXR3b3JrU2Vzc2lvbjsKIGNsYXNzIFBlbmRp
bmdEb3dubG9hZDsKIAordHlwZWRlZiBzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0Jik+IFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXI7Cit0eXBlZGVmIHN0
ZDo6ZnVuY3Rpb248dm9pZChBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLCBjb25z
dCBXZWJDb3JlOjpDcmVkZW50aWFsJik+IENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyOworICAg
IAogY2xhc3MgTmV0d29ya1Nlc3Npb25UYXNrQ2xpZW50IHsKIHB1YmxpYzoKLSAgICB0eXBlZGVm
IHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKT4gUmVk
aXJlY3RDb21wbGV0aW9uSGFuZGxlcjsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFBlcmZvcm1IVFRQ
UmVkaXJlY3Rpb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIpID0gMDsKLSAg
ICB0eXBlZGVmIHN0ZDo6ZnVuY3Rpb248dm9pZChBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bv
c2l0aW9uLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJik+IENoYWxsZW5nZUNvbXBsZXRpb25I
YW5kbGVyOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKGNvbnN0IFdlYkNv
cmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIp
ID0gMDsKICAgICB0eXBlZGVmIHN0ZDo6ZnVuY3Rpb248dm9pZChXZWJDb3JlOjpQb2xpY3lBY3Rp
b24pPiBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJlc3BvbnNlQ29t
cGxldGlvbkhhbmRsZXIpID0gMDsKQEAgLTgxLDExICs4NCw3IEBAIHB1YmxpYzoKIGNsYXNzIE5l
dHdvcmtEYXRhVGFzayB7CiAgICAgZnJpZW5kIGNsYXNzIE5ldHdvcmtTZXNzaW9uOwogcHVibGlj
OgotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGV4cGxpY2l0IE5ldHdvcmtEYXRhVGFzayhOZXR3
b3JrU2Vzc2lvbiYsIE5ldHdvcmtTZXNzaW9uVGFza0NsaWVudCYsIFJldGFpblB0cjxOU1VSTFNl
c3Npb25EYXRhVGFzaz4mJik7Ci0jZWxzZQotICAgIGV4cGxpY2l0IE5ldHdvcmtEYXRhVGFzayhO
ZXR3b3JrU2Vzc2lvbiYsIE5ldHdvcmtTZXNzaW9uVGFza0NsaWVudCYpOwotI2VuZGlmCisgICAg
ZXhwbGljaXQgTmV0d29ya0RhdGFUYXNrKE5ldHdvcmtTZXNzaW9uJiwgTmV0d29ya1Nlc3Npb25U
YXNrQ2xpZW50JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAKICAgICB2b2lk
IHN1c3BlbmQoKTsKICAgICB2b2lkIGNhbmNlbCgpOwpAQCAtMTExLDEyICsxMTAsMTYgQEAgcHVi
bGljOgogICAgICAgICBBU1NFUlQoIW1fcGVuZGluZ0Rvd25sb2FkKTsKICAgICAgICAgbV9wZW5k
aW5nRG93bmxvYWQgPSAmcGVuZGluZ0Rvd25sb2FkOwogICAgIH0KKyAgICBib29sIHRyeVBhc3N3
b3JkQmFzZWRBdXRoZW50aWNhdGlvbihjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyKTsKICAgICAKIHByaXZhdGU6CiAgICAg
TmV0d29ya1Nlc3Npb24mIG1fc2Vzc2lvbjsKICAgICBOZXR3b3JrU2Vzc2lvblRhc2tDbGllbnQm
IG1fY2xpZW50OwogICAgIFBlbmRpbmdEb3dubG9hZCogbV9wZW5kaW5nRG93bmxvYWQgeyBudWxs
cHRyIH07CiAgICAgRG93bmxvYWRJRCBtX3BlbmRpbmdEb3dubG9hZElEOworICAgIFN0cmluZyBt
X3VzZXI7CisgICAgU3RyaW5nIG1fcGFzc3dvcmQ7CisgICAgV2ViQ29yZTo6Q3JlZGVudGlhbCBt
X2luaXRpYWxDcmVkZW50aWFsOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJldGFpblB0cjxO
U1VSTFNlc3Npb25EYXRhVGFzaz4gbV90YXNrOwogI2VuZGlmCkBAIC0xMzMsOCArMTM2LDYgQEAg
cHVibGljOgogICAgIH5OZXR3b3JrU2Vzc2lvbigpOwogCiAgICAgc3RhdGljIE5ldHdvcmtTZXNz
aW9uJiBkZWZhdWx0U2Vzc2lvbigpOwotICAgIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3Jr
RGF0YVRhc2s+IGNyZWF0ZURhdGFUYXNrV2l0aFJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiwgTmV0d29ya1Nlc3Npb25UYXNrQ2xpZW50Jik7CiAKICAgICBOZXR3b3JrRGF0
YVRhc2sqIGRhdGFUYXNrRm9ySWRlbnRpZmllcihOZXR3b3JrRGF0YVRhc2s6OlRhc2tJZGVudGlm
aWVyKTsKIApAQCAtMTQzLDYgKzE0NCw3IEBAIHB1YmxpYzoKICAgICBEb3dubG9hZElEIHRha2VE
b3dubG9hZElEKE5ldHdvcmtEYXRhVGFzazo6VGFza0lkZW50aWZpZXIpOwogICAgIAogcHJpdmF0
ZToKKyAgICBXZWJDb3JlOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAgICAgSGFzaE1hcDxOZXR3
b3JrRGF0YVRhc2s6OlRhc2tJZGVudGlmaWVyLCBOZXR3b3JrRGF0YVRhc2sqPiBtX2RhdGFUYXNr
TWFwOwogICAgIEhhc2hNYXA8TmV0d29ya0RhdGFUYXNrOjpUYXNrSWRlbnRpZmllciwgRG93bmxv
YWRJRD4gbV9kb3dubG9hZE1hcDsKICNpZiBQTEFURk9STShDT0NPQSkKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Np
b25Db2NvYS5tbQkocmV2aXNpb24gMTk1MzkzKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDcs
NiArNDcsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbXBvcnQgPHd0
Zi9NYWluVGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbXBvcnQg
PHd0Zi90ZXh0L0Jhc2U2NC5oPgogCiBzdGF0aWMgTlNVUkxTZXNzaW9uUmVzcG9uc2VEaXNwb3Np
dGlvbiB0b05TVVJMU2Vzc2lvblJlc3BvbnNlRGlzcG9zaXRpb24oV2ViQ29yZTo6UG9saWN5QWN0
aW9uIGRpc3Bvc2l0aW9uKQogewpAQCAtMTA5LDExICsxMTAsMjIgQEAgLSAodm9pZClVUkxTZXNz
aW9uOihOU1VSTFNlc3Npb24gKilzZXNzaQogLSAodm9pZClVUkxTZXNzaW9uOihOU1VSTFNlc3Np
b24gKilzZXNzaW9uIHRhc2s6KE5TVVJMU2Vzc2lvblRhc2sgKil0YXNrIGRpZFJlY2VpdmVDaGFs
bGVuZ2U6KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2UgY29tcGxldGlv
bkhhbmRsZXI6KHZvaWQgKF4pKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiBk
aXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICpjcmVkZW50aWFsKSljb21wbGV0aW9uSGFuZGxl
cgogewogICAgIGlmIChhdXRvKiBuZXR3b3JrRGF0YVRhc2sgPSBfc2Vzc2lvbi0+ZGF0YVRhc2tG
b3JJZGVudGlmaWVyKHRhc2sudGFza0lkZW50aWZpZXIpKSB7CisgICAgICAgIAorICAgICAgICBp
ZiAoY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5pc1Byb3h5KSB7CisgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbCwgbmls
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCiAgICAgICAgIGF1dG8gY29tcGxl
dGlvbkhhbmRsZXJDb3B5ID0gQmxvY2tfY29weShjb21wbGV0aW9uSGFuZGxlcik7Ci0gICAgICAg
IG5ldHdvcmtEYXRhVGFzay0+Y2xpZW50KCkuZGlkUmVjZWl2ZUNoYWxsZW5nZShjaGFsbGVuZ2Us
IFtjb21wbGV0aW9uSGFuZGxlckNvcHldKFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VE
aXNwb3NpdGlvbiBkaXNwb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6Q3JlZGVudGlhbCYgY3JlZGVu
dGlhbCkgeworICAgICAgICBhdXRvIGNoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyID0gW2NvbXBs
ZXRpb25IYW5kbGVyQ29weV0oV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0
aW9uIGRpc3Bvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJiBjcmVkZW50aWFsKQor
ICAgICAgICB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlckNvcHkodG9OU1VSTFNlc3Np
b25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24oZGlzcG9zaXRpb24pLCBjcmVkZW50aWFsLm5zQ3Jl
ZGVudGlhbCgpKTsKICAgICAgICAgICAgIEJsb2NrX3JlbGVhc2UoY29tcGxldGlvbkhhbmRsZXJD
b3B5KTsKLSAgICAgICAgfSk7CisgICAgICAgIH07CisgICAgICAgIGlmIChuZXR3b3JrRGF0YVRh
c2stPnRyeVBhc3N3b3JkQmFzZWRBdXRoZW50aWNhdGlvbihjaGFsbGVuZ2UsIGNoYWxsZW5nZUNv
bXBsZXRpb25IYW5kbGVyKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgICAg
IG5ldHdvcmtEYXRhVGFzay0+Y2xpZW50KCkuZGlkUmVjZWl2ZUNoYWxsZW5nZShjaGFsbGVuZ2Us
IGNoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB9CiB9CiAKQEAgLTIwMyw2ICsyMTUs
NyBAQCBOZXR3b3JrU2Vzc2lvbiYgTmV0d29ya1Nlc3Npb246OmRlZmF1bHRTCiB9CiAKIE5ldHdv
cmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbihUeXBlIHR5cGUsIFdlYkNvcmU6OlNlc3Npb25JRCBz
ZXNzaW9uSUQpCisgICAgOiBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCiB7CiAgICAgbV9zZXNzaW9u
RGVsZWdhdGUgPSBhZG9wdE5TKFtbV0tOZXR3b3JrU2Vzc2lvbkRlbGVnYXRlIGFsbG9jXSBpbml0
V2l0aE5ldHdvcmtTZXNzaW9uOip0aGlzXSk7CiAKQEAgLTIyOSwxMSArMjQyLDYgQEAgTmV0d29y
a1Nlc3Npb246On5OZXR3b3JrU2Vzc2lvbigpCiAgICAgW21fc2Vzc2lvbiBpbnZhbGlkYXRlQW5k
Q2FuY2VsXTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtEYXRhVGFzaz4gTmV0d29ya1Nl
c3Npb246OmNyZWF0ZURhdGFUYXNrV2l0aFJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBOZXR3b3JrU2Vzc2lvblRhc2tDbGllbnQmIGNsaWVudCkKLXsKLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrRGF0YVRhc2s+KCp0aGlzLCBjbGllbnQs
IFttX3Nlc3Npb24gZGF0YVRhc2tXaXRoUmVxdWVzdDpyZXF1ZXN0Lm5zVVJMUmVxdWVzdChXZWJD
b3JlOjpVcGRhdGVIVFRQQm9keSldKTsKLX0KLQogTmV0d29ya0RhdGFUYXNrKiBOZXR3b3JrU2Vz
c2lvbjo6ZGF0YVRhc2tGb3JJZGVudGlmaWVyKE5ldHdvcmtEYXRhVGFzazo6VGFza0lkZW50aWZp
ZXIgdGFza0lkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKQEAgLTI2
MywxNiArMjcxLDk4IEBAIERvd25sb2FkSUQgTmV0d29ya1Nlc3Npb246OnRha2VEb3dubG9hZEkK
ICAgICByZXR1cm4gZG93bmxvYWRJRDsKIH0KIAotTmV0d29ya0RhdGFUYXNrOjpOZXR3b3JrRGF0
YVRhc2soTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtTZXNzaW9uVGFza0NsaWVudCYg
Y2xpZW50LCBSZXRhaW5QdHI8TlNVUkxTZXNzaW9uRGF0YVRhc2s+JiYgdGFzaykKKworc3RhdGlj
IHZvaWQgYXBwbHlCYXNpY0F1dGhvcml6YXRpb25IZWFkZXIoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJiBjcmVkZW50aWFsKQorewor
ICAgIFN0cmluZyBhdXRoZW50aWNhdGlvbkhlYWRlciA9ICJCYXNpYyAiICsgYmFzZTY0RW5jb2Rl
KFN0cmluZyhjcmVkZW50aWFsLnVzZXIoKSArICI6IiArIGNyZWRlbnRpYWwucGFzc3dvcmQoKSku
dXRmOCgpKTsKKyAgICAKKyAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChXZWJDb3JlOjpI
VFRQSGVhZGVyTmFtZTo6QXV0aG9yaXphdGlvbiwgYXV0aGVudGljYXRpb25IZWFkZXIpOworfQor
ICAgIAorTmV0d29ya0RhdGFUYXNrOjpOZXR3b3JrRGF0YVRhc2soTmV0d29ya1Nlc3Npb24mIHNl
c3Npb24sIE5ldHdvcmtTZXNzaW9uVGFza0NsaWVudCYgY2xpZW50LCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3RXaXRoQ3JlZGVudGlhbHMpCiAgICAgOiBtX3Nlc3Npb24o
c2Vzc2lvbikKICAgICAsIG1fY2xpZW50KGNsaWVudCkKLSAgICAsIG1fdGFzayhXVEZNb3ZlKHRh
c2spKQogewotICAgIEFTU0VSVCghbV9zZXNzaW9uLm1fZGF0YVRhc2tNYXAuY29udGFpbnModGFz
a0lkZW50aWZpZXIoKSkpOwogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgCisgICAg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QgPSByZXF1ZXN0V2l0aENyZWRlbnRpYWxz
OworICAgIAorICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSB0aGUgcmVzdWx0IG9mIGFza2lu
ZyBhIGNsaWVudCBzb21ld2hlcmUuCisgICAgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFn
ZSA9IHRydWU7CisgICAgCisgICAgLy8gQ3JlZGVudGlhbHMgZm9yIGZ0cCBjYW4gb25seSBiZSBw
YXNzZWQgaW4gVVJMLgorICAgIGlmIChyZXF1ZXN0LnVybCgpLnByb3RvY29sSXNJbkhUVFBGYW1p
bHkoKSkgeworICAgICAgICBtX3VzZXIgPSByZXF1ZXN0LnVybCgpLnVzZXIoKTsKKyAgICAgICAg
bV9wYXNzd29yZCA9IHJlcXVlc3QudXJsKCkucGFzcygpOworICAgICAgICByZXF1ZXN0LnJlbW92
ZUNyZWRlbnRpYWxzKCk7CisgICAgICAgIAorICAgICAgICBpZiAoc2hvdWxkVXNlQ3JlZGVudGlh
bFN0b3JhZ2UpIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24g
PSBTZXNzaW9uVHJhY2tlcjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbi5tX3Nlc3Npb25JRCkpIHsK
KyAgICAgICAgICAgICAgICBpZiAobV91c2VyLmlzRW1wdHkoKSAmJiBtX3Bhc3N3b3JkLmlzRW1w
dHkoKSkKKyAgICAgICAgICAgICAgICAgICAgbV9pbml0aWFsQ3JlZGVudGlhbCA9IG5ldHdvcmtT
dG9yYWdlU2Vzc2lvbi0+Y3JlZGVudGlhbFN0b3JhZ2UoKS5nZXQocmVxdWVzdC51cmwoKSk7Cisg
ICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlIGlz
IGFscmVhZHkgYSBwcm90ZWN0aW9uIHNwYWNlIGtub3duIGZvciB0aGUgVVJMLCB1cGRhdGUgc3Rv
cmVkIGNyZWRlbnRpYWxzIGJlZm9yZSBzZW5kaW5nIGEgcmVxdWVzdC4KKyAgICAgICAgICAgICAg
ICAgICAgLy8gVGhpcyBtYWtlcyBpdCBwb3NzaWJsZSB0byBpbXBsZW1lbnQgbG9nb3V0IGJ5IHNl
bmRpbmcgYW4gWE1MSHR0cFJlcXVlc3Qgd2l0aCBrbm93biBpbmNvcnJlY3QgY3JlZGVudGlhbHMs
IGFuZCBhYm9ydGluZyBpdCBpbW1lZGlhdGVseQorICAgICAgICAgICAgICAgICAgICAvLyAoc28g
dGhhdCBhbiBhdXRoZW50aWNhdGlvbiBkaWFsb2cgZG9lc24ndCBwb3AgdXApLgorICAgICAgICAg
ICAgICAgICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPmNyZWRlbnRpYWxTdG9yYWdlKCkuc2V0
KFdlYkNvcmU6OkNyZWRlbnRpYWwobV91c2VyLCBtX3Bhc3N3b3JkLCBXZWJDb3JlOjpDcmVkZW50
aWFsUGVyc2lzdGVuY2VOb25lKSwgcmVxdWVzdC51cmwoKSk7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIGlmICghbV9pbml0aWFs
Q3JlZGVudGlhbC5pc0VtcHR5KCkpIHsKKyAgICAgICAgLy8gRklYTUU6IFN1cHBvcnQgRGlnZXN0
IGF1dGhlbnRpY2F0aW9uLCBhbmQgUHJveHktQXV0aG9yaXphdGlvbi4KKyAgICAgICAgYXBwbHlC
YXNpY0F1dGhvcml6YXRpb25IZWFkZXIocmVxdWVzdCwgbV9pbml0aWFsQ3JlZGVudGlhbCk7Cisg
ICAgfQorCisgICAgbV90YXNrID0gW21fc2Vzc2lvbi5tX3Nlc3Npb24gZGF0YVRhc2tXaXRoUmVx
dWVzdDpyZXF1ZXN0Lm5zVVJMUmVxdWVzdChXZWJDb3JlOjpVcGRhdGVIVFRQQm9keSldOworICAg
IEFTU0VSVCghbV9zZXNzaW9uLm1fZGF0YVRhc2tNYXAuY29udGFpbnModGFza0lkZW50aWZpZXIo
KSkpOwogICAgIG1fc2Vzc2lvbi5tX2RhdGFUYXNrTWFwLmFkZCh0YXNrSWRlbnRpZmllcigpLCB0
aGlzKTsKIH0KIAorYm9vbCBOZXR3b3JrRGF0YVRhc2s6OnRyeVBhc3N3b3JkQmFzZWRBdXRoZW50
aWNhdGlvbihjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdl
LCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBp
ZiAoIWNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKS5pc1Bhc3N3b3JkQmFzZWQoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlmICghbV91c2VyLmlzTnVsbCgpICYmICFtX3Bh
c3N3b3JkLmlzTnVsbCgpKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlVzZUNyZWRlbnRpYWwsIFdlYkNvcmU6OkNyZWRlbnRp
YWwobV91c2VyLCBtX3Bhc3N3b3JkLCBXZWJDb3JlOjpDcmVkZW50aWFsUGVyc2lzdGVuY2VGb3JT
ZXNzaW9uKSk7CisgICAgICAgIG1fdXNlciA9IFN0cmluZygpOworICAgICAgICBtX3Bhc3N3b3Jk
ID0gU3RyaW5nKCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICAvLyBG
SVhNRTogVGhpcyBzaG91bGQgYmUgZnJvbSBhIGNsaWVudCBvciBzb21ldGhpbmcuCisgICAgYm9v
bCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSA9IHRydWU7CisgICAgCisgICAgLy8gRklYTUU6
IERvIG5vdCB1c2UgdGhlIHN5bmMgdmVyc2lvbiBvZiBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFn
ZSB3aGVuIHRoZSBjbGllbnQgcmV0dXJucyB0cnVlIGZyb20gdXNlc0FzeW5jQ2FsbGJhY2tzLgor
ICAgIGlmIChzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSkgeworICAgICAgICBpZiAoYXV0byog
bmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gU2Vzc2lvblRyYWNrZXI6OnN0b3JhZ2VTZXNzaW9uKG1f
c2Vzc2lvbi5tX3Nlc3Npb25JRCkpIHsKKyAgICAgICAgICAgIGlmICghbV9pbml0aWFsQ3JlZGVu
dGlhbC5pc0VtcHR5KCkgfHwgY2hhbGxlbmdlLnByZXZpb3VzRmFpbHVyZUNvdW50KCkpIHsKKyAg
ICAgICAgICAgICAgICAvLyBUaGUgc3RvcmVkIGNyZWRlbnRpYWwgd2Fzbid0IGFjY2VwdGVkLCBz
dG9wIHVzaW5nIGl0LgorICAgICAgICAgICAgICAgIC8vIFRoZXJlIGlzIGEgcmFjZSBjb25kaXRp
b24gaGVyZSwgc2luY2UgYSBkaWZmZXJlbnQgY3JlZGVudGlhbCBtaWdodCBoYXZlIGFscmVhZHkg
YmVlbiBzdG9yZWQgYnkgYW5vdGhlciBSZXNvdXJjZUhhbmRsZSwKKyAgICAgICAgICAgICAgICAv
LyBidXQgdGhlIG9ic2VydmFibGUgZWZmZWN0IHNob3VsZCBiZSB2ZXJ5IG1pbm9yLCBpZiBhbnku
CisgICAgICAgICAgICAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5jcmVkZW50aWFsU3RvcmFn
ZSgpLnJlbW92ZShjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCkpOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoIWNoYWxsZW5nZS5wcmV2aW91c0ZhaWx1cmVD
b3VudCgpKSB7CisgICAgICAgICAgICAgICAgV2ViQ29yZTo6Q3JlZGVudGlhbCBjcmVkZW50aWFs
ID0gbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5jcmVkZW50aWFsU3RvcmFnZSgpLmdldChjaGFsbGVu
Z2UucHJvdGVjdGlvblNwYWNlKCkpOworICAgICAgICAgICAgICAgIGlmICghY3JlZGVudGlhbC5p
c0VtcHR5KCkgJiYgY3JlZGVudGlhbCAhPSBtX2luaXRpYWxDcmVkZW50aWFsKSB7CisgICAgICAg
ICAgICAgICAgICAgIEFTU0VSVChjcmVkZW50aWFsLnBlcnNpc3RlbmNlKCkgPT0gV2ViQ29yZTo6
Q3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChjaGFs
bGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCkuaHR0cFN0YXR1c0NvZGUoKSA9PSA0MDEpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIFN0b3JlIHRoZSBjcmVkZW50aWFsIGJhY2ssIHBvc3NpYmx5
IGFkZGluZyBpdCBhcyBhIGRlZmF1bHQgZm9yIHRoaXMgZGlyZWN0b3J5LgorICAgICAgICAgICAg
ICAgICAgICAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5jcmVkZW50aWFsU3RvcmFnZSgpLnNl
dChjcmVkZW50aWFsLCBjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCksIGNoYWxsZW5nZS5mYWls
dXJlUmVzcG9uc2UoKS51cmwoKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3Np
dGlvbjo6VXNlQ3JlZGVudGlhbCwgY3JlZGVudGlhbCk7CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIH0KKyAgICAKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIE5ldHdvcmtEYXRhVGFzazo6fk5l
dHdvcmtEYXRhVGFzaygpCiB7CiAgICAgQVNTRVJUKG1fc2Vzc2lvbi5tX2RhdGFUYXNrTWFwLmNv
bnRhaW5zKHRhc2tJZGVudGlmaWVyKCkpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9B
dXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmgJ
KHJldmlzaW9uIDE5NTM5MykKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BdXRoZW50aWNhdGlv
bi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNiBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHN1cHBsZW1lbnROYW1lKCk7CiAKICNp
ZiBVU0UoTkVUV09SS19TRVNTSU9OKQotICAgIHR5cGVkZWYgTmV0d29ya1Nlc3Npb25UYXNrQ2xp
ZW50OjpDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxl
cjsKICAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBw
YWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIpOwogICAgIHZvaWQgZGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFBlbmRpbmdEb3dubG9hZCYsIGNvbnN0IFdlYkNvcmU6
OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIpOwog
ICAgIHZvaWQgY29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKERv
d25sb2FkSUQsIGJvb2wgY2FuQXV0aGVudGljYXRlKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>269601</attachid>
            <date>2016-01-22 13:38:27 -0800</date>
            <delta_ts>2016-01-22 16:49:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-153328-20160122133800.patch</filename>
            <type>text/plain</type>
            <size>25529</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NTM5MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDE2LTAxLTIxICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIENyZWRl
bnRpYWxTdG9yYWdlIHdpdGggTmV0d29ya1Nlc3Npb24gbGlrZSB3ZSBkaWQgd2l0aCBSZXNvdXJj
ZUhhbmRsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTUzMzI4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBwYXRjaCBmaXhlcyBhdCBsZWFzdCBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2Jhc2lj
LWF1dGgtY3JlZGVudGlhbHMtZXNjYXBpbmcuaHRtbCB3aGVuIHVzaW5nIE5ldHdvcmtTZXNzaW9u
LgorCisgICAgICAgICogcGxhdGZvcm0vVVJMLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9DcmVkZW50aWFsQmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbEJhc2U6OmVu
Y29kaW5nUmVxdWlyZXNQbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Q3JlZGVudGlhbFN0b3JhZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Byb3RlY3Rp
b25TcGFjZUJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZUJhc2U6OmVu
Y29kaW5nUmVxdWlyZXNQbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VSZXF1ZXN0QmFzZS5oOgorICAgICAgICBBZGQgc29tZSBXRUJDT1JFX0VYUE9SVCBt
YWNyb3MgZm9yIGZ1bmN0aW9ucyB0aGF0IGFyZSBub3cgdXNlZCBpbiBXZWJLaXQyLgorCiAyMDE2
LTAxLTIwICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVz
b3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZSBkZWxl
Z2F0ZSBtZXRob2RzIGRvbid0IE5VTEwtY2hlY2sgbV9oYW5kbGUtPmNsaWVudCgpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9VUkwuaAkocmV2aXNpb24gMTk1MzkzKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vVVJMLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0MCw4ICsxNDAsOCBAQCBwdWJsaWM6CiAg
ICAgLy8gSW5wdXQgaXMgbGlrZSAiZm9vLmNvbSIgb3IgImZvby5jb206ODAwMCIuCiAgICAgdm9p
ZCBzZXRIb3N0QW5kUG9ydChjb25zdCBTdHJpbmcmKTsKIAotICAgIHZvaWQgc2V0VXNlcihjb25z
dCBTdHJpbmcmKTsKLSAgICB2b2lkIHNldFBhc3MoY29uc3QgU3RyaW5nJik7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRVc2VyKGNvbnN0IFN0cmluZyYpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0UGFzcyhjb25zdCBTdHJpbmcmKTsKIAogICAgIC8vIElmIHlvdSBwYXNzIGFuIGVt
cHR5IHBhdGggZm9yIEhUVFAgb3IgSFRUUFMgVVJMcywgdGhlIHJlc3VsdGluZyBwYXRoCiAgICAg
Ly8gd2lsbCBiZSAiLyIuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Ny
ZWRlbnRpYWxCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9DcmVkZW50aWFsQmFzZS5oCShyZXZpc2lvbiAxOTUzOTMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUx
LDcgKzUxLDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBlbmNvZGluZ1JlcXVpcmVzUGxhdGZvcm1E
YXRhKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHN0YXRpYyBib29sIGNvbXBhcmUo
Y29uc3QgQ3JlZGVudGlhbCYsIGNvbnN0IENyZWRlbnRpYWwmKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgYm9vbCBjb21wYXJlKGNvbnN0IENyZWRlbnRpYWwmLCBjb25zdCBDcmVkZW50aWFs
Jik7CiAKIHByb3RlY3RlZDoKICAgICBXRUJDT1JFX0VYUE9SVCBDcmVkZW50aWFsQmFzZSgpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlh
bFN0b3JhZ2UuaAkocmV2aXNpb24gMTk1MzkzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw5ICs0Myw5
IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgQ3JlZGVudGlhbFN0b3JhZ2Um
IGRlZmF1bHRDcmVkZW50aWFsU3RvcmFnZSgpOwogCiAgICAgLy8gV2ViQ29yZSBzZXNzaW9uIGNy
ZWRlbnRpYWwgc3RvcmFnZS4KLSAgICB2b2lkIHNldChjb25zdCBDcmVkZW50aWFsJiwgY29uc3Qg
UHJvdGVjdGlvblNwYWNlJiwgY29uc3QgVVJMJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXQoY29uc3QgQ3JlZGVudGlhbCYsIGNvbnN0IFByb3RlY3Rpb25TcGFjZSYsIGNvbnN0IFVSTCYp
OwogICAgIFdFQkNPUkVfRVhQT1JUIENyZWRlbnRpYWwgZ2V0KGNvbnN0IFByb3RlY3Rpb25TcGFj
ZSYpOwotICAgIHZvaWQgcmVtb3ZlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcmVtb3ZlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYpOwogCiAgICAgLy8g
T1MgcGVyc2lzdGVudCBzdG9yYWdlLgogICAgIFdFQkNPUkVfRVhQT1JUIENyZWRlbnRpYWwgZ2V0
RnJvbVBlcnNpc3RlbnRTdG9yYWdlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYpOwpAQCAtNTgsNyAr
NTgsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBUaGVzZSBtZXRob2RzIHdvcmsgZm9yIGF1dGhlbnRp
Y2F0aW9uIHNjaGVtZXMgdGhhdCBzdXBwb3J0IHNlbmRpbmcgY3JlZGVudGlhbHMgd2l0aG91dCB3
YWl0aW5nIGZvciBhIHJlcXVlc3QuIEUuZy4sIGZvciBIVFRQIEJhc2ljIGF1dGhlbnRpY2F0aW9u
IHNjaGVtZQogICAgIC8vIGEgY2xpZW50IHNob3VsZCBhc3N1bWUgdGhhdCBhbGwgcGF0aHMgYXQg
b3IgZGVlcGVyIHRoYW4gdGhlIGRlcHRoIG9mIGEga25vd24gcHJvdGVjdGVkIHJlc291cmNlIHNo
YXJlIGFyZSB3aXRoaW4gdGhlIHNhbWUgcHJvdGVjdGlvbiBzcGFjZS4KLSAgICBib29sIHNldChj
b25zdCBDcmVkZW50aWFsJiwgY29uc3QgVVJMJik7IC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgVVJM
IGNvcnJlc3BvbmRzIHRvIGEga25vd24gcHJvdGVjdGlvbiBzcGFjZSwgc28gY3JlZGVudGlhbHMg
Y291bGQgYmUgdXBkYXRlZC4KKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNldChjb25zdCBDcmVk
ZW50aWFsJiwgY29uc3QgVVJMJik7IC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgVVJMIGNvcnJlc3Bv
bmRzIHRvIGEga25vd24gcHJvdGVjdGlvbiBzcGFjZSwgc28gY3JlZGVudGlhbHMgY291bGQgYmUg
dXBkYXRlZC4KICAgICBXRUJDT1JFX0VYUE9SVCBDcmVkZW50aWFsIGdldChjb25zdCBVUkwmKTsK
IAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJvdGVj
dGlvblNwYWNlQmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUHJvdGVjdGlvblNwYWNlQmFzZS5oCShyZXZpc2lvbiAxOTUzOTMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Byb3RlY3Rpb25TcGFjZUJhc2UuaAkod29ya2luZyBj
b3B5KQpAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgUHJvdGVj
dGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWUgYXV0aGVudGljYXRpb25TY2hlbWUoKSBjb25z
dDsKICAgICAKICAgICBib29sIHJlY2VpdmVzQ3JlZGVudGlhbFNlY3VyZWx5KCkgY29uc3Q7Ci0g
ICAgYm9vbCBpc1Bhc3N3b3JkQmFzZWQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29s
IGlzUGFzc3dvcmRCYXNlZCgpIGNvbnN0OwogCiAgICAgYm9vbCBlbmNvZGluZ1JlcXVpcmVzUGxh
dGZvcm1EYXRhKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIApJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgJKHJl
dmlzaW9uIDE5NTM5MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VSZXF1ZXN0QmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgVVJMJiB1cmwoKSBjb25z
dDsKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRVUkwoY29uc3QgVVJMJiB1cmwpOwog
Ci0gICAgICAgIHZvaWQgcmVtb3ZlQ3JlZGVudGlhbHMoKTsKKyAgICAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCByZW1vdmVDcmVkZW50aWFscygpOwogCiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIFJl
c291cmNlUmVxdWVzdENhY2hlUG9saWN5IGNhY2hlUG9saWN5KCkgY29uc3Q7CiAgICAgICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0Q2FjaGVQb2xpY3koUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xp
Y3kgY2FjaGVQb2xpY3kpOwpAQCAtOTMsNyArOTMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIHRlbXBsYXRlPHNpemVfdCBsZW5ndGg+IHZvaWQgc2V0SFRUUEhlYWRlckZpZWxkKGNv
bnN0IGNoYXIgKCYpW2xlbmd0aF0sIGNvbnN0IFN0cmluZyYpID0gZGVsZXRlOwogICAgICAgICB0
ZW1wbGF0ZTxzaXplX3QgbGVuZ3RoPiB2b2lkIGFkZEhUVFBIZWFkZXJGaWVsZChjb25zdCBjaGFy
ICgmKVtsZW5ndGhdLCBjb25zdCBTdHJpbmcmKSA9IGRlbGV0ZTsKIAotICAgICAgICB2b2lkIGNs
ZWFySFRUUEF1dGhvcml6YXRpb24oKTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVh
ckhUVFBBdXRob3JpemF0aW9uKCk7CiAKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGh0
dHBDb250ZW50VHlwZSgpIGNvbnN0OwogICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEhU
VFBDb250ZW50VHlwZShjb25zdCBTdHJpbmcmKTsKQEAgLTEwNSw3ICsxMDUsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIAogICAgICAgICBTdHJpbmcgaHR0cE9yaWdpbigpIGNvbnN0
OwogICAgICAgICB2b2lkIHNldEhUVFBPcmlnaW4oY29uc3QgU3RyaW5nJik7Ci0gICAgICAgIHZv
aWQgY2xlYXJIVFRQT3JpZ2luKCk7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJI
VFRQT3JpZ2luKCk7CiAKICAgICAgICAgU3RyaW5nIGh0dHBVc2VyQWdlbnQoKSBjb25zdDsKICAg
ICAgICAgdm9pZCBzZXRIVFRQVXNlckFnZW50KGNvbnN0IFN0cmluZyYpOwpJbmRleDogU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwkocmV2aXNpb24gMTk1NDI0KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTYtMDEtMjEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBVc2UgQ3JlZGVudGlhbFN0b3JhZ2Ug
d2l0aCBOZXR3b3JrU2Vzc2lvbiBsaWtlIHdlIGRpZCB3aXRoIFJlc291cmNlSGFuZGxlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTMzMjgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtMb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6Ok5ldHdv
cmtMb2FkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2s6OnNldFBlbmRpbmdEb3dubG9hZCk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbToKKyAgICAg
ICAgKHRvTlNVUkxTZXNzaW9uUmVzcG9uc2VEaXNwb3NpdGlvbik6CisgICAgICAgICgtW1dLTmV0
d29ya1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9uOnRhc2s6ZGlkUmVjZWl2ZUNoYWxsZW5nZTpj
b21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmRl
ZmF1bHRTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246Ok5ldHdvcmtT
ZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246On5OZXR3b3JrU2Vzc2lv
bik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpkYXRhVGFza0ZvcklkZW50aWZp
ZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6dGFrZURvd25sb2FkSUQpOgor
ICAgICAgICAoV2ViS2l0OjphcHBseUJhc2ljQXV0aG9yaXphdGlvbkhlYWRlcik6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFzazo6TmV0d29ya0RhdGFUYXNrKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0RhdGFUYXNrOjp0cnlQYXNzd29yZEJhc2VkQXV0aGVudGljYXRpb24pOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2s6On5OZXR3b3JrRGF0YVRhc2spOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6Y3JlYXRlRGF0YVRhc2tXaXRoUmVxdWVzdCk6
IERlbGV0ZWQuCisgICAgICAgICogU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9u
TWFuYWdlci5oOgorCiAyMDE2LTAxLTIxICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4K
IAogICAgICAgICBbaU9TXSBDcmFzaCBpbiBfZW5kUG90ZW50aWFsVGFwQW5kRW5hYmxlRG91Ymxl
VGFwR2VzdHVyZXNJZk5lY2Vzc2FyeQpJbmRleDogU291cmNlL1dlYktpdDIvY29uZmlnLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvY29uZmlnLmgJKHJldmlzaW9uIDE5NTM5MykKKysr
IFNvdXJjZS9XZWJLaXQyL2NvbmZpZy5oCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3IEBA
CiAjZGVmaW5lIEhBVkVfV0lORE9XX1NFUlZFUl9PQ0NMVVNJT05fTk9USUZJQ0FUSU9OUyAxCiAj
ZW5kaWYKICNpZm5kZWYgVVNFX05FVFdPUktfU0VTU0lPTgotI2RlZmluZSBVU0VfTkVUV09SS19T
RVNTSU9OIDAKKyNkZWZpbmUgVVNFX05FVFdPUktfU0VTU0lPTiAxCiAjZW5kaWYKICNlbmRpZgog
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3Bw
CShyZXZpc2lvbiAxOTUzOTMpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrTG9hZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAgTmV0d29ya0xvYWQ6
Ok5ldHdvcmtMb2FkKE5ldHdvcmtMb2FkQ2xpZQogI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAg
ICAgaWYgKCFwYXJhbWV0ZXJzLmRlZmVyc0xvYWRpbmcpIHsKICAgICAgICAgaWYgKGF1dG8qIG5l
dHdvcmtTZXNzaW9uID0gU2Vzc2lvblRyYWNrZXI6Om5ldHdvcmtTZXNzaW9uKHBhcmFtZXRlcnMu
c2Vzc2lvbklEKSkgewotICAgICAgICAgICAgbV90YXNrID0gbmV0d29ya1Nlc3Npb24tPmNyZWF0
ZURhdGFUYXNrV2l0aFJlcXVlc3QocGFyYW1ldGVycy5yZXF1ZXN0LCAqdGhpcyk7CisgICAgICAg
ICAgICBtX3Rhc2sgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtEYXRhVGFzaz4oKm5ldHdvcmtT
ZXNzaW9uLCAqdGhpcywgcGFyYW1ldGVycy5yZXF1ZXN0KTsKICAgICAgICAgICAgIG1fdGFzay0+
cmVzdW1lKCk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CkBAIC0yNDIsNiArMjQyLDExIEBAIHZvaWQgTmV0d29ya0xvYWQ6OmRpZEJlY29tZURvd25s
b2FkKCkKICAgICBtX2NsaWVudC5kaWRDb252ZXJ0VG9Eb3dubG9hZCgpOwogfQogCitib29sIE5l
dHdvcmtMb2FkOjpzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSgpCit7CisgICAgcmV0dXJuIG1f
cGFyYW1ldGVycy5hbGxvd1N0b3JlZENyZWRlbnRpYWxzID09IEFsbG93U3RvcmVkQ3JlZGVudGlh
bHM7Cit9CisKICNlbHNlCiAKIHZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZUFz
eW5jKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlY2Vp
dmVkUmVzcG9uc2UpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
TG9hZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtMb2FkLmgJKHJldmlzaW9uIDE5NTM5MykKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtMb2FkLmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDYgKzczLDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmKSBmaW5hbCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVX
aXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsIG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgdm9pZCBkaWRCZWNvbWVEb3dubG9hZCgpIGZpbmFsIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSgpIG92ZXJyaWRlOwogI2Vs
c2UKICAgICAvLyBSZXNvdXJjZUhhbmRsZUNsaWVudAogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2Vu
ZFJlcXVlc3RBc3luYyhXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0
UmVzcG9uc2UpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Nlc3Npb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCShyZXZpc2lvbiAxOTUzOTMpCisrKyBTb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2
ICszNCw3IEBAIE9CSkNfQ0xBU1MgV0tOZXR3b3JrU2Vzc2lvbkRlbGVnYXRlOwogI2VuZGlmCiAK
ICNpbmNsdWRlICJEb3dubG9hZElELmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DcmVkZW50aWFsLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtNDEsNiArNDIsNyBA
QCBPQkpDX0NMQVNTIFdLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZTsKICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvV2Vh
a1B0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKQEAgLTYzLDE3ICs2NSwxOSBA
QCBlbnVtIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zCiBjbGFzcyBOZXR3b3Jr
U2Vzc2lvbjsKIGNsYXNzIFBlbmRpbmdEb3dubG9hZDsKIAordHlwZWRlZiBzdGQ6OmZ1bmN0aW9u
PHZvaWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik+IFJlZGlyZWN0Q29tcGxldGlv
bkhhbmRsZXI7Cit0eXBlZGVmIHN0ZDo6ZnVuY3Rpb248dm9pZChBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZURpc3Bvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJik+IENoYWxsZW5nZUNv
bXBsZXRpb25IYW5kbGVyOworICAgIAogY2xhc3MgTmV0d29ya1Nlc3Npb25UYXNrQ2xpZW50IHsK
IHB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmKT4gUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlcjsKICAgICB2aXJ0dWFs
IHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFJlZGlyZWN0Q29tcGxl
dGlvbkhhbmRsZXIpID0gMDsKLSAgICB0eXBlZGVmIHN0ZDo6ZnVuY3Rpb248dm9pZChBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJik+
IENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZl
Q2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxl
bmdlQ29tcGxldGlvbkhhbmRsZXIpID0gMDsKICAgICB0eXBlZGVmIHN0ZDo6ZnVuY3Rpb248dm9p
ZChXZWJDb3JlOjpQb2xpY3lBY3Rpb24pPiBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyOwogICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZURhdGEoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRCZWNvbWVEb3dubG9hZCgpID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoKSA9IDA7CiAK
ICAgICB2aXJ0dWFsIH5OZXR3b3JrU2Vzc2lvblRhc2tDbGllbnQoKSB7IH0KIH07CkBAIC04MSwx
MSArODUsNyBAQCBwdWJsaWM6CiBjbGFzcyBOZXR3b3JrRGF0YVRhc2sgewogICAgIGZyaWVuZCBj
bGFzcyBOZXR3b3JrU2Vzc2lvbjsKIHB1YmxpYzoKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBl
eHBsaWNpdCBOZXR3b3JrRGF0YVRhc2soTmV0d29ya1Nlc3Npb24mLCBOZXR3b3JrU2Vzc2lvblRh
c2tDbGllbnQmLCBSZXRhaW5QdHI8TlNVUkxTZXNzaW9uRGF0YVRhc2s+JiYpOwotI2Vsc2UKLSAg
ICBleHBsaWNpdCBOZXR3b3JrRGF0YVRhc2soTmV0d29ya1Nlc3Npb24mLCBOZXR3b3JrU2Vzc2lv
blRhc2tDbGllbnQmKTsKLSNlbmRpZgorICAgIGV4cGxpY2l0IE5ldHdvcmtEYXRhVGFzayhOZXR3
b3JrU2Vzc2lvbiYsIE5ldHdvcmtTZXNzaW9uVGFza0NsaWVudCYsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYpOwogCiAgICAgdm9pZCBzdXNwZW5kKCk7CiAgICAgdm9pZCBjYW5jZWwo
KTsKQEAgLTExMSwxMiArMTExLDE5IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKCFtX3BlbmRp
bmdEb3dubG9hZCk7CiAgICAgICAgIG1fcGVuZGluZ0Rvd25sb2FkID0gJnBlbmRpbmdEb3dubG9h
ZDsKICAgICB9CisgICAgYm9vbCB0cnlQYXNzd29yZEJhc2VkQXV0aGVudGljYXRpb24oY29uc3Qg
V2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFu
ZGxlcik7CisgICAgdm9pZCBzZXRVc2VyKGNvbnN0IFN0cmluZyYgdXNlcikgeyBtX3VzZXIgPSB1
c2VyOyB9CisgICAgdm9pZCBzZXRQYXNzd29yZChjb25zdCBTdHJpbmcmIHBhc3N3b3JkKSB7IG1f
cGFzc3dvcmQgPSBwYXNzd29yZDsgfQorICAgIHZvaWQgc2V0SW5pdGlhbENyZWRlbnRpYWwoY29u
c3QgV2ViQ29yZTo6Q3JlZGVudGlhbCBjcmVkZW50aWFsKSB7IG1faW5pdGlhbENyZWRlbnRpYWwg
PSBjcmVkZW50aWFsOyB9CiAgICAgCiBwcml2YXRlOgogICAgIE5ldHdvcmtTZXNzaW9uJiBtX3Nl
c3Npb247CiAgICAgTmV0d29ya1Nlc3Npb25UYXNrQ2xpZW50JiBtX2NsaWVudDsKICAgICBQZW5k
aW5nRG93bmxvYWQqIG1fcGVuZGluZ0Rvd25sb2FkIHsgbnVsbHB0ciB9OwogICAgIERvd25sb2Fk
SUQgbV9wZW5kaW5nRG93bmxvYWRJRDsKKyAgICBTdHJpbmcgbV91c2VyOworICAgIFN0cmluZyBt
X3Bhc3N3b3JkOworICAgIFdlYkNvcmU6OkNyZWRlbnRpYWwgbV9pbml0aWFsQ3JlZGVudGlhbDsK
ICNpZiBQTEFURk9STShDT0NPQSkKICAgICBSZXRhaW5QdHI8TlNVUkxTZXNzaW9uRGF0YVRhc2s+
IG1fdGFzazsKICNlbmRpZgpAQCAtMTMzLDE2ICsxNDAsMTYgQEAgcHVibGljOgogICAgIH5OZXR3
b3JrU2Vzc2lvbigpOwogCiAgICAgc3RhdGljIE5ldHdvcmtTZXNzaW9uJiBkZWZhdWx0U2Vzc2lv
bigpOwotICAgIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrRGF0YVRhc2s+IGNyZWF0ZURh
dGFUYXNrV2l0aFJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgTmV0d29y
a1Nlc3Npb25UYXNrQ2xpZW50Jik7CiAKICAgICBOZXR3b3JrRGF0YVRhc2sqIGRhdGFUYXNrRm9y
SWRlbnRpZmllcihOZXR3b3JrRGF0YVRhc2s6OlRhc2tJZGVudGlmaWVyKTsKIAogICAgIHZvaWQg
YWRkRG93bmxvYWRJRChOZXR3b3JrRGF0YVRhc2s6OlRhc2tJZGVudGlmaWVyLCBEb3dubG9hZElE
KTsKICAgICBEb3dubG9hZElEIGRvd25sb2FkSUQoTmV0d29ya0RhdGFUYXNrOjpUYXNrSWRlbnRp
Zmllcik7CiAgICAgRG93bmxvYWRJRCB0YWtlRG93bmxvYWRJRChOZXR3b3JrRGF0YVRhc2s6OlRh
c2tJZGVudGlmaWVyKTsKKyAgICBXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgeyByZXR1
cm4gbV9zZXNzaW9uSUQ7IH0KICAgICAKIHByaXZhdGU6CisgICAgV2ViQ29yZTo6U2Vzc2lvbklE
IG1fc2Vzc2lvbklEOwogICAgIEhhc2hNYXA8TmV0d29ya0RhdGFUYXNrOjpUYXNrSWRlbnRpZmll
ciwgTmV0d29ya0RhdGFUYXNrKj4gbV9kYXRhVGFza01hcDsKICAgICBIYXNoTWFwPE5ldHdvcmtE
YXRhVGFzazo6VGFza0lkZW50aWZpZXIsIERvd25sb2FkSUQ+IG1fZG93bmxvYWRNYXA7CiAjaWYg
UExBVEZPUk0oQ09DT0EpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0JKHJldmlzaW9uIDE5NTM5
MykKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9u
Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbXBvcnQgPFdlYkNv
cmUvU2hhcmVkQnVmZmVyLmg+CiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgogI2ltcG9ydCA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9CYXNlNjQuaD4KIAogc3Rh
dGljIE5TVVJMU2Vzc2lvblJlc3BvbnNlRGlzcG9zaXRpb24gdG9OU1VSTFNlc3Npb25SZXNwb25z
ZURpc3Bvc2l0aW9uKFdlYkNvcmU6OlBvbGljeUFjdGlvbiBkaXNwb3NpdGlvbikKIHsKQEAgLTc0
LDYgKzc1LDEzIEBAIHN0YXRpYyBOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXQKICAg
ICB9CiB9CiAKK3N0YXRpYyB2b2lkIGFwcGx5QmFzaWNBdXRob3JpemF0aW9uSGVhZGVyKFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6Q3JlZGVudGlhbCYg
Y3JlZGVudGlhbCkKK3sKKyAgICBTdHJpbmcgYXV0aGVudGljYXRpb25IZWFkZXIgPSAiQmFzaWMg
IiArIGJhc2U2NEVuY29kZShTdHJpbmcoY3JlZGVudGlhbC51c2VyKCkgKyAiOiIgKyBjcmVkZW50
aWFsLnBhc3N3b3JkKCkpLnV0ZjgoKSk7CisgICAgCisgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVy
RmllbGQoV2ViQ29yZTo6SFRUUEhlYWRlck5hbWU6OkF1dGhvcml6YXRpb24sIGF1dGhlbnRpY2F0
aW9uSGVhZGVyKTsKK30KKwogQGludGVyZmFjZSBXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUgOiBO
U09iamVjdCA8TlNVUkxTZXNzaW9uRGF0YURlbGVnYXRlPiB7CiAgICAgV2ViS2l0OjpOZXR3b3Jr
U2Vzc2lvbiogX3Nlc3Npb247CiB9CkBAIC05NSwxMSArMTAzLDQzIEBAIC0gKGlkKWluaXRXaXRo
TmV0d29ya1Nlc3Npb246KFdlYktpdDo6TmUKICAgICByZXR1cm4gc2VsZjsKIH0KIAotLSAodm9p
ZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilzZXNzaW9uIHRhc2s6KE5TVVJMU2Vzc2lvblRh
c2sgKil0YXNrIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOihOU0hUVFBVUkxSZXNwb25zZSAq
KXJlc3BvbnNlIG5ld1JlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgY29tcGxldGlvbkhh
bmRsZXI6KHZvaWQgKF4pKE5TVVJMUmVxdWVzdCAqKSljb21wbGV0aW9uSGFuZGxlcgorLSAodm9p
ZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilzZXNzaW9uIHRhc2s6KE5TVVJMU2Vzc2lvblRh
c2sgKil0YXNrIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOihOU0hUVFBVUkxSZXNwb25zZSAq
KXJlZGlyZWN0UmVzcG9uc2UgbmV3UmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdFdpdGhD
cmVkZW50aWFscyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNVUkxSZXF1ZXN0ICopKWNv
bXBsZXRpb25IYW5kbGVyCiB7CisgICAgLy8gRklYTUU6IEFkZCBhIHRlc3QgdGhhdCByZWRpcmVj
dHMgdG8gYSBVUkwgd2l0aCBhIHVzZXIgYW5kIHBhc3MgdGhhdCBzZW5kcyBhbiBhdXRoZW50aWNh
dGlvbiBjaGFsbGVuZ2UgdGhlbiBhY2NlcHRzIHRoZSB1c2VyIGFuZCBwYXNzLgorCiAgICAgaWYg
KGF1dG8qIG5ldHdvcmtEYXRhVGFzayA9IF9zZXNzaW9uLT5kYXRhVGFza0ZvcklkZW50aWZpZXIo
dGFzay50YXNrSWRlbnRpZmllcikpIHsKKyAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
IHJlcXVlc3QocmVxdWVzdFdpdGhDcmVkZW50aWFscyk7CisgICAgICAgIAorICAgICAgICBjb25z
dCBXZWJDb3JlOjpVUkwmIHVybCA9IHJlcXVlc3QudXJsKCk7CisgICAgICAgIFN0cmluZyB1c2Vy
ID0gdXJsLnVzZXIoKTsKKyAgICAgICAgU3RyaW5nIHBhc3N3b3JkID0gdXJsLnBhc3MoKTsKKyAg
ICAgICAgbmV0d29ya0RhdGFUYXNrLT5zZXRVc2VyKHVzZXIpOworICAgICAgICBuZXR3b3JrRGF0
YVRhc2stPnNldFBhc3N3b3JkKHBhc3N3b3JkKTsKKyAgICAgICAgcmVxdWVzdC5yZW1vdmVDcmVk
ZW50aWFscygpOworICAgICAgICAKKyAgICAgICAgaWYgKCFwcm90b2NvbEhvc3RBbmRQb3J0QXJl
RXF1YWwocmVxdWVzdC51cmwoKSwgcmVkaXJlY3RSZXNwb25zZS5VUkwpKSB7CisgICAgICAgICAg
ICAvLyBUaGUgbmV0d29yayBsYXllciBtaWdodCBjYXJyeSBvdmVyIHNvbWUgaGVhZGVycyBmcm9t
IHRoZSBvcmlnaW5hbCByZXF1ZXN0IHRoYXQKKyAgICAgICAgICAgIC8vIHdlIHdhbnQgdG8gc3Ry
aXAgaGVyZSBiZWNhdXNlIHRoZSByZWRpcmVjdCBpcyBjcm9zcy1vcmlnaW4uCisgICAgICAgICAg
ICByZXF1ZXN0LmNsZWFySFRUUEF1dGhvcml6YXRpb24oKTsKKyAgICAgICAgICAgIHJlcXVlc3Qu
Y2xlYXJIVFRQT3JpZ2luKCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBPbmx5
IGNvbnNpZGVyIGFwcGx5aW5nIGF1dGhlbnRpY2F0aW9uIGNyZWRlbnRpYWxzIGlmIHRoaXMgaXMg
YWN0dWFsbHkgYSByZWRpcmVjdCBhbmQgdGhlIHJlZGlyZWN0CisgICAgICAgICAgICAvLyBVUkwg
ZGlkbid0IGluY2x1ZGUgY3JlZGVudGlhbHMgb2YgaXRzIG93bi4KKyAgICAgICAgICAgIGlmICh1
c2VyLmlzRW1wdHkoKSAmJiBwYXNzd29yZC5pc0VtcHR5KCkgJiYgcmVkaXJlY3RSZXNwb25zZSkg
eworICAgICAgICAgICAgICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBXZWJL
aXQ6OlNlc3Npb25UcmFja2VyOjpzdG9yYWdlU2Vzc2lvbihfc2Vzc2lvbi0+c2Vzc2lvbklEKCkp
KSB7CisgICAgICAgICAgICAgICAgICAgIFdlYkNvcmU6OkNyZWRlbnRpYWwgY3JlZGVudGlhbCA9
IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+Y3JlZGVudGlhbFN0b3JhZ2UoKS5nZXQocmVxdWVzdC51
cmwoKSk7CisgICAgICAgICAgICAgICAgICAgIGlmICghY3JlZGVudGlhbC5pc0VtcHR5KCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIG5ldHdvcmtEYXRhVGFzay0+c2V0SW5pdGlhbENyZWRl
bnRpYWwoY3JlZGVudGlhbCk7CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIEZJWE1FOiBTdXBwb3J0IERpZ2VzdCBhdXRoZW50aWNhdGlvbiwgYW5k
IFByb3h5LUF1dGhvcml6YXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICBhcHBseUJhc2lj
QXV0aG9yaXphdGlvbkhlYWRlcihyZXF1ZXN0LCBjcmVkZW50aWFsKTsKKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICAKICAgICAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlckNvcHkgPSBCbG9ja19jb3B5KGNv
bXBsZXRpb25IYW5kbGVyKTsKLSAgICAgICAgbmV0d29ya0RhdGFUYXNrLT5jbGllbnQoKS53aWxs
UGVyZm9ybUhUVFBSZWRpcmVjdGlvbihyZXNwb25zZSwgcmVxdWVzdCwgW2NvbXBsZXRpb25IYW5k
bGVyQ29weV0oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KSB7CisgICAg
ICAgIG5ldHdvcmtEYXRhVGFzay0+Y2xpZW50KCkud2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24o
cmVkaXJlY3RSZXNwb25zZSwgcmVxdWVzdCwgW2NvbXBsZXRpb25IYW5kbGVyQ29weV0oY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KSB7CiAgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlckNvcHkocmVxdWVzdC5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6VXBkYXRlSFRUUEJv
ZHkpKTsKICAgICAgICAgICAgIEJsb2NrX3JlbGVhc2UoY29tcGxldGlvbkhhbmRsZXJDb3B5KTsK
ICAgICAgICAgfSk7CkBAIC0xMDksMTEgKzE0OSwyMiBAQCAtICh2b2lkKVVSTFNlc3Npb246KE5T
VVJMU2Vzc2lvbiAqKXNlc3NpCiAtICh2b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXNl
c3Npb24gdGFzazooTlNVUkxTZXNzaW9uVGFzayAqKXRhc2sgZGlkUmVjZWl2ZUNoYWxsZW5nZToo
TlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZSBjb21wbGV0aW9uSGFuZGxl
cjoodm9pZCAoXikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0
aW9uLCBOU1VSTENyZWRlbnRpYWwgKmNyZWRlbnRpYWwpKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAg
ICAgaWYgKGF1dG8qIG5ldHdvcmtEYXRhVGFzayA9IF9zZXNzaW9uLT5kYXRhVGFza0ZvcklkZW50
aWZpZXIodGFzay50YXNrSWRlbnRpZmllcikpIHsKKyAgICAgICAgCisgICAgICAgIGlmIChjaGFs
bGVuZ2UucHJvdGVjdGlvblNwYWNlLmlzUHJveHkpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFsLCBuaWwpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKICAgICAgICAgYXV0byBjb21wbGV0aW9uSGFu
ZGxlckNvcHkgPSBCbG9ja19jb3B5KGNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICAgICAgbmV0d29y
a0RhdGFUYXNrLT5jbGllbnQoKS5kaWRSZWNlaXZlQ2hhbGxlbmdlKGNoYWxsZW5nZSwgW2NvbXBs
ZXRpb25IYW5kbGVyQ29weV0oV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0
aW9uIGRpc3Bvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJiBjcmVkZW50aWFsKSB7
CisgICAgICAgIGF1dG8gY2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIgPSBbY29tcGxldGlvbkhh
bmRsZXJDb3B5XShXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24gZGlz
cG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmIGNyZWRlbnRpYWwpCisgICAgICAg
IHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyQ29weSh0b05TVVJMU2Vzc2lvbkF1dGhD
aGFsbGVuZ2VEaXNwb3NpdGlvbihkaXNwb3NpdGlvbiksIGNyZWRlbnRpYWwubnNDcmVkZW50aWFs
KCkpOwogICAgICAgICAgICAgQmxvY2tfcmVsZWFzZShjb21wbGV0aW9uSGFuZGxlckNvcHkpOwot
ICAgICAgICB9KTsKKyAgICAgICAgfTsKKyAgICAgICAgaWYgKG5ldHdvcmtEYXRhVGFzay0+dHJ5
UGFzc3dvcmRCYXNlZEF1dGhlbnRpY2F0aW9uKGNoYWxsZW5nZSwgY2hhbGxlbmdlQ29tcGxldGlv
bkhhbmRsZXIpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICAgICAgbmV0d29y
a0RhdGFUYXNrLT5jbGllbnQoKS5kaWRSZWNlaXZlQ2hhbGxlbmdlKGNoYWxsZW5nZSwgY2hhbGxl
bmdlQ29tcGxldGlvbkhhbmRsZXIpOwogICAgIH0KIH0KIApAQCAtMjAzLDYgKzI1NCw3IEBAIE5l
dHdvcmtTZXNzaW9uJiBOZXR3b3JrU2Vzc2lvbjo6ZGVmYXVsdFMKIH0KIAogTmV0d29ya1Nlc3Np
b246Ok5ldHdvcmtTZXNzaW9uKFR5cGUgdHlwZSwgV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25J
RCkKKyAgICA6IG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKIHsKICAgICBtX3Nlc3Npb25EZWxlZ2F0
ZSA9IGFkb3B0TlMoW1tXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoTmV0
d29ya1Nlc3Npb246KnRoaXNdKTsKIApAQCAtMjI5LDExICsyODEsNiBAQCBOZXR3b3JrU2Vzc2lv
bjo6fk5ldHdvcmtTZXNzaW9uKCkKICAgICBbbV9zZXNzaW9uIGludmFsaWRhdGVBbmRDYW5jZWxd
OwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0RhdGFUYXNrPiBOZXR3b3JrU2Vzc2lvbjo6
Y3JlYXRlRGF0YVRhc2tXaXRoUmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIE5ldHdvcmtTZXNzaW9uVGFza0NsaWVudCYgY2xpZW50KQotewotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtEYXRhVGFzaz4oKnRoaXMsIGNsaWVudCwgW21fc2Vz
c2lvbiBkYXRhVGFza1dpdGhSZXF1ZXN0OnJlcXVlc3QubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OlVw
ZGF0ZUhUVFBCb2R5KV0pOwotfQotCiBOZXR3b3JrRGF0YVRhc2sqIE5ldHdvcmtTZXNzaW9uOjpk
YXRhVGFza0ZvcklkZW50aWZpZXIoTmV0d29ya0RhdGFUYXNrOjpUYXNrSWRlbnRpZmllciB0YXNr
SWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwpAQCAtMjYyLDE3ICsz
MDksODUgQEAgRG93bmxvYWRJRCBOZXR3b3JrU2Vzc2lvbjo6dGFrZURvd25sb2FkSQogICAgIEFT
U0VSVChkb3dubG9hZElELmRvd25sb2FkSUQoKSk7CiAgICAgcmV0dXJuIGRvd25sb2FkSUQ7CiB9
Ci0KLU5ldHdvcmtEYXRhVGFzazo6TmV0d29ya0RhdGFUYXNrKE5ldHdvcmtTZXNzaW9uJiBzZXNz
aW9uLCBOZXR3b3JrU2Vzc2lvblRhc2tDbGllbnQmIGNsaWVudCwgUmV0YWluUHRyPE5TVVJMU2Vz
c2lvbkRhdGFUYXNrPiYmIHRhc2spCisgICAgCitOZXR3b3JrRGF0YVRhc2s6Ok5ldHdvcmtEYXRh
VGFzayhOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya1Nlc3Npb25UYXNrQ2xpZW50JiBj
bGllbnQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdFdpdGhDcmVkZW50
aWFscykKICAgICA6IG1fc2Vzc2lvbihzZXNzaW9uKQogICAgICwgbV9jbGllbnQoY2xpZW50KQot
ICAgICwgbV90YXNrKFdURk1vdmUodGFzaykpCiB7Ci0gICAgQVNTRVJUKCFtX3Nlc3Npb24ubV9k
YXRhVGFza01hcC5jb250YWlucyh0YXNrSWRlbnRpZmllcigpKSk7CiAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKKyAgICAKKyAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCA9
IHJlcXVlc3RXaXRoQ3JlZGVudGlhbHM7CisgICAgCisgICAgLy8gQ3JlZGVudGlhbHMgZm9yIGZ0
cCBjYW4gb25seSBiZSBwYXNzZWQgaW4gVVJMLgorICAgIGlmIChyZXF1ZXN0LnVybCgpLnByb3Rv
Y29sSXNJbkhUVFBGYW1pbHkoKSkgeworICAgICAgICBtX3VzZXIgPSByZXF1ZXN0LnVybCgpLnVz
ZXIoKTsKKyAgICAgICAgbV9wYXNzd29yZCA9IHJlcXVlc3QudXJsKCkucGFzcygpOworICAgICAg
ICByZXF1ZXN0LnJlbW92ZUNyZWRlbnRpYWxzKCk7CisgICAgICAgIAorICAgICAgICBpZiAobV9j
bGllbnQuc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoKSkgeworICAgICAgICAgICAgaWYgKGF1
dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IFNlc3Npb25UcmFja2VyOjpzdG9yYWdlU2Vzc2lv
bihzZXNzaW9uLm1fc2Vzc2lvbklEKSkgeworICAgICAgICAgICAgICAgIGlmIChtX3VzZXIuaXNF
bXB0eSgpICYmIG1fcGFzc3dvcmQuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgICAgICBtX2lu
aXRpYWxDcmVkZW50aWFsID0gbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5jcmVkZW50aWFsU3RvcmFn
ZSgpLmdldChyZXF1ZXN0LnVybCgpKTsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgYWxyZWFkeSBhIHByb3RlY3Rpb24gc3BhY2Uga25v
d24gZm9yIHRoZSBVUkwsIHVwZGF0ZSBzdG9yZWQgY3JlZGVudGlhbHMgYmVmb3JlIHNlbmRpbmcg
YSByZXF1ZXN0LgorICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIG1ha2VzIGl0IHBvc3NpYmxl
IHRvIGltcGxlbWVudCBsb2dvdXQgYnkgc2VuZGluZyBhbiBYTUxIdHRwUmVxdWVzdCB3aXRoIGtu
b3duIGluY29ycmVjdCBjcmVkZW50aWFscywgYW5kIGFib3J0aW5nIGl0IGltbWVkaWF0ZWx5Cisg
ICAgICAgICAgICAgICAgICAgIC8vIChzbyB0aGF0IGFuIGF1dGhlbnRpY2F0aW9uIGRpYWxvZyBk
b2Vzbid0IHBvcCB1cCkuCisgICAgICAgICAgICAgICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lv
bi0+Y3JlZGVudGlhbFN0b3JhZ2UoKS5zZXQoV2ViQ29yZTo6Q3JlZGVudGlhbChtX3VzZXIsIG1f
cGFzc3dvcmQsIFdlYkNvcmU6OkNyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUpLCByZXF1ZXN0LnVy
bCgpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
CisgICAgCisgICAgaWYgKCFtX2luaXRpYWxDcmVkZW50aWFsLmlzRW1wdHkoKSkgeworICAgICAg
ICAvLyBGSVhNRTogU3VwcG9ydCBEaWdlc3QgYXV0aGVudGljYXRpb24sIGFuZCBQcm94eS1BdXRo
b3JpemF0aW9uLgorICAgICAgICBhcHBseUJhc2ljQXV0aG9yaXphdGlvbkhlYWRlcihyZXF1ZXN0
LCBtX2luaXRpYWxDcmVkZW50aWFsKTsKKyAgICB9CisKKyAgICAvLyBGSVhNRTogRG8gYSBjaGVj
ayBmb3IgY29udGVudCBzbmlmZmluZyBoZXJlIGxpa2Ugd2UgZG8gaW4gUmVzb3VyY2VIYW5kbGU6
OmNyZWF0ZU5TVVJMQ29ubmVjdGlvbi4KKyAgICBtX3Rhc2sgPSBbbV9zZXNzaW9uLm1fc2Vzc2lv
biBkYXRhVGFza1dpdGhSZXF1ZXN0OnJlcXVlc3QubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OlVwZGF0
ZUhUVFBCb2R5KV07CisgICAgQVNTRVJUKCFtX3Nlc3Npb24ubV9kYXRhVGFza01hcC5jb250YWlu
cyh0YXNrSWRlbnRpZmllcigpKSk7CiAgICAgbV9zZXNzaW9uLm1fZGF0YVRhc2tNYXAuYWRkKHRh
c2tJZGVudGlmaWVyKCksIHRoaXMpOwogfQogCitib29sIE5ldHdvcmtEYXRhVGFzazo6dHJ5UGFz
c3dvcmRCYXNlZEF1dGhlbnRpY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlJiBjaGFsbGVuZ2UsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25I
YW5kbGVyKQoreworICAgIGlmICghY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpLmlzUGFzc3dv
cmRCYXNlZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKCFtX3VzZXIu
aXNOdWxsKCkgJiYgIW1fcGFzc3dvcmQuaXNOdWxsKCkpIHsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6VXNlQ3JlZGVudGlhbCwg
V2ViQ29yZTo6Q3JlZGVudGlhbChtX3VzZXIsIG1fcGFzc3dvcmQsIFdlYkNvcmU6OkNyZWRlbnRp
YWxQZXJzaXN0ZW5jZUZvclNlc3Npb24pKTsKKyAgICAgICAgbV91c2VyID0gU3RyaW5nKCk7Cisg
ICAgICAgIG1fcGFzc3dvcmQgPSBTdHJpbmcoKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorCisgICAgaWYgKG1fY2xpZW50LnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKCkpIHsKKyAg
ICAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IFNlc3Npb25UcmFja2VyOjpz
dG9yYWdlU2Vzc2lvbihtX3Nlc3Npb24ubV9zZXNzaW9uSUQpKSB7CisgICAgICAgICAgICBpZiAo
IW1faW5pdGlhbENyZWRlbnRpYWwuaXNFbXB0eSgpIHx8IGNoYWxsZW5nZS5wcmV2aW91c0ZhaWx1
cmVDb3VudCgpKSB7CisgICAgICAgICAgICAgICAgLy8gVGhlIHN0b3JlZCBjcmVkZW50aWFsIHdh
c24ndCBhY2NlcHRlZCwgc3RvcCB1c2luZyBpdC4KKyAgICAgICAgICAgICAgICAvLyBUaGVyZSBp
cyBhIHJhY2UgY29uZGl0aW9uIGhlcmUsIHNpbmNlIGEgZGlmZmVyZW50IGNyZWRlbnRpYWwgbWln
aHQgaGF2ZSBhbHJlYWR5IGJlZW4gc3RvcmVkIGJ5IGFub3RoZXIgTmV0d29ya0RhdGFUYXNrLAor
ICAgICAgICAgICAgICAgIC8vIGJ1dCB0aGUgb2JzZXJ2YWJsZSBlZmZlY3Qgc2hvdWxkIGJlIHZl
cnkgbWlub3IsIGlmIGFueS4KKyAgICAgICAgICAgICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24t
PmNyZWRlbnRpYWxTdG9yYWdlKCkucmVtb3ZlKGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKSk7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICghY2hhbGxlbmdl
LnByZXZpb3VzRmFpbHVyZUNvdW50KCkpIHsKKyAgICAgICAgICAgICAgICBXZWJDb3JlOjpDcmVk
ZW50aWFsIGNyZWRlbnRpYWwgPSBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPmNyZWRlbnRpYWxTdG9y
YWdlKCkuZ2V0KGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKSk7CisgICAgICAgICAgICAgICAg
aWYgKCFjcmVkZW50aWFsLmlzRW1wdHkoKSAmJiBjcmVkZW50aWFsICE9IG1faW5pdGlhbENyZWRl
bnRpYWwpIHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGNyZWRlbnRpYWwucGVyc2lzdGVu
Y2UoKSA9PSBXZWJDb3JlOjpDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25lKTsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKGNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS5odHRwU3RhdHVzQ29kZSgp
ID09IDQwMSkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3RvcmUgdGhlIGNyZWRlbnRp
YWwgYmFjaywgcG9zc2libHkgYWRkaW5nIGl0IGFzIGEgZGVmYXVsdCBmb3IgdGhpcyBkaXJlY3Rv
cnkuCisgICAgICAgICAgICAgICAgICAgICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPmNyZWRl
bnRpYWxTdG9yYWdlKCkuc2V0KGNyZWRlbnRpYWwsIGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2Uo
KSwgY2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLnVybCgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpVc2VDcmVkZW50aWFsLCBjcmVkZW50aWFsKTsKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIHJldHVybiBmYWxzZTsKK30KKwogTmV0
d29ya0RhdGFUYXNrOjp+TmV0d29ya0RhdGFUYXNrKCkKIHsKICAgICBBU1NFUlQobV9zZXNzaW9u
Lm1fZGF0YVRhc2tNYXAuY29udGFpbnModGFza0lkZW50aWZpZXIoKSkpOwpJbmRleDogU291cmNl
L1dlYktpdDIvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50
aWNhdGlvbk1hbmFnZXIuaAkocmV2aXNpb24gMTk1MzkzKQorKysgU291cmNlL1dlYktpdDIvU2hh
cmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC01Niw3ICs1Niw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgY2hhciogc3VwcGxl
bWVudE5hbWUoKTsKIAogI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCi0gICAgdHlwZWRlZiBOZXR3
b3JrU2Vzc2lvblRhc2tDbGllbnQ6OkNoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyIENoYWxsZW5n
ZUNvbXBsZXRpb25IYW5kbGVyOwogICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlcik7CiAg
ICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoUGVuZGluZ0Rvd25sb2Fk
JiwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBDaGFsbGVuZ2VDb21w
bGV0aW9uSGFuZGxlcik7CiAgICAgdm9pZCBjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQ
cm90ZWN0aW9uU3BhY2UoRG93bmxvYWRJRCwgYm9vbCBjYW5BdXRoZW50aWNhdGUpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>269622</attachid>
            <date>2016-01-22 16:49:05 -0800</date>
            <delta_ts>2016-01-23 01:44:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-153328-20160122164837.patch</filename>
            <type>text/plain</type>
            <size>12952</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NTQ5NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE2LTAxLTIyICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIGNyZWRl
bnRpYWxzIGZyb20gYSBVUkwgd2l0aCBOZXR3b3JrU2Vzc2lvbiBsaWtlIHdlIGRpZCB3aXRoIFJl
c291cmNlSGFuZGxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTMzMjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGlzIHBhdGNoIGZpeGVzIGF0IGxlYXN0IGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qv
YmFzaWMtYXV0aC1jcmVkZW50aWFscy1lc2NhcGluZy5odG1sIHdoZW4gdXNpbmcgTmV0d29ya1Nl
c3Npb24uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Byb3RlY3Rpb25TcGFjZUJhc2Uu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZUJhc2U6OmVuY29kaW5nUmVxdWly
ZXNQbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1
ZXN0QmFzZS5oOgorICAgICAgICBBZGQgc29tZSBXRUJDT1JFX0VYUE9SVCBtYWNyb3MgZm9yIGZ1
bmN0aW9ucyB0aGF0IGFyZSBub3cgdXNlZCBpbiBXZWJLaXQyLgorCiAyMDE2LTAxLTIyICBFbnJp
Y2EgQ2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBvcnQgZm9y
IERhdGFEZXRlY3RvcnMgaW4gV0sgKGlPUykuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Byb3RlY3Rpb25TcGFjZUJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Byb3RlY3Rpb25TcGFjZUJhc2UuaAkocmV2aXNpb24gMTk1
MzkzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Qcm90ZWN0aW9uU3BhY2VC
YXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogICAgIFdFQkNP
UkVfRVhQT1JUIFByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lIGF1dGhlbnRpY2F0
aW9uU2NoZW1lKCkgY29uc3Q7CiAgICAgCiAgICAgYm9vbCByZWNlaXZlc0NyZWRlbnRpYWxTZWN1
cmVseSgpIGNvbnN0OwotICAgIGJvb2wgaXNQYXNzd29yZEJhc2VkKCkgY29uc3Q7CisgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBpc1Bhc3N3b3JkQmFzZWQoKSBjb25zdDsKIAogICAgIGJvb2wgZW5j
b2RpbmdSZXF1aXJlc1BsYXRmb3JtRGF0YSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VS
ZXF1ZXN0QmFzZS5oCShyZXZpc2lvbiAxOTUzOTMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyAr
NjUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0
IFVSTCYgdXJsKCkgY29uc3Q7CiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VVJMKGNv
bnN0IFVSTCYgdXJsKTsKIAotICAgICAgICB2b2lkIHJlbW92ZUNyZWRlbnRpYWxzKCk7CisgICAg
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlQ3JlZGVudGlhbHMoKTsKIAogICAgICAgICBX
RUJDT1JFX0VYUE9SVCBSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeSBjYWNoZVBvbGljeSgpIGNv
bnN0OwogICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENhY2hlUG9saWN5KFJlc291cmNl
UmVxdWVzdENhY2hlUG9saWN5IGNhY2hlUG9saWN5KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9u
IDE5NTQyNCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDMzIEBACisyMDE2LTAxLTIyICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIGNyZWRlbnRpYWxzIGZyb20gYSBVUkwgd2l0aCBO
ZXR3b3JrU2Vzc2lvbiBsaWtlIHdlIGRpZCB3aXRoIFJlc291cmNlSGFuZGxlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTMzMjgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtMb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6Ok5ldHdvcmtMb2Fk
KToKKyAgICAgICAgY3JlYXRlRGF0YVRhc2tXaXRoUmVxdWVzdCBpcyBiZWluZyByZW1vdmVkLCBz
byB1c2Ugc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrRGF0YVRhc2s+IGRpcmVjdGx5IGluc3RlYWQu
CisgICAgICAgIEFsc28sIGNyZWF0ZSB0aGUgdGFzayBldmVuIGlmIHdlIGFyZSBkZWZlcnJpbmcg
bG9hZGluZy4gIERvbid0IGNhbGwgcmVzdW1lIGlmIHdlIGFyZSBkZWZlcnJpbmcgbG9hZGluZy4K
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oOgorICAgICAgICBDYWxs
YmFja3MgYXJlIG5vdCBqdXN0IHVzZWQgaW4gTmV0d29ya1Nlc3Npb25UYXNrQ2xpZW50LCBzbyBk
ZWNsYXJlIHRoZW0gb3V0c2lkZS4KKyAgICAgICAgVGhlIE5ldHdvcmtEYXRhVGFzayBub3cgdGFr
ZXMgYSBSZXNvdXJjZVJlcXVlc3Qgc28gd2UgY2FuIHN0cmlwIGl0cyBjcmVkZW50aWFscy4KKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tOgorICAg
ICAgICAoLVtXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUgVVJMU2Vzc2lvbjp0YXNrOmRpZFJlY2Vp
dmVDaGFsbGVuZ2U6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgIFRyeSBjcmVkZW50aWFs
cyBzdG9yZWQgd2l0aCB0aGUgTmV0d29ya0RhdGFUYXNrIGJlZm9yZSBhc2tpbmcgdGhlIGNsaWVu
dCBmb3IgY3JlZGVudGlhbHMuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjp+TmV0
d29ya1Nlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6ZGF0YVRhc2tG
b3JJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OnRha2VEb3du
bG9hZElEKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrOjpOZXR3b3JrRGF0YVRh
c2spOgorICAgICAgICBTdHJpcCB0aGUgY3JlZGVudGlhbHMgZnJvbSB0aGUgdXJsIGJlZm9yZSBj
cmVhdGluZyB0aGUgdGFzayBiZWNhdXNlIHdlIGRvIG5vdCBrbm93IHRoZSBhdXRoZW50aWNhdGlv
biB0eXBlLgorICAgICAgICBXZSB3aWxsIHVzZSB0aGVzZSBjcmVkZW50aWFscyB3aGVuIGEgY2hh
bGxlbmdlIGlzIHJlY2VpdmVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2s6On5O
ZXR3b3JrRGF0YVRhc2spOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2s6OnRyeVBh
c3N3b3JkQmFzZWRBdXRoZW50aWNhdGlvbik6CisgICAgICAgIElmIHdlIGhhdmUgY3JlZGVudGlh
bHMgZnJvbSB0aGUgaW5pdGlhbCBVUkwsIHRyeSB1c2luZyB0aGVtIGlmIGl0IGlzIGFwcHJvcHJp
YXRlLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2s6OmNhbmNlbCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpjcmVhdGVEYXRhVGFza1dpdGhSZXF1ZXN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5h
Z2VyLmg6CisKIDIwMTYtMDEtMjEgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAg
ICAgICAgIFtpT1NdIENyYXNoIGluIF9lbmRQb3RlbnRpYWxUYXBBbmRFbmFibGVEb3VibGVUYXBH
ZXN0dXJlc0lmTmVjZXNzYXJ5CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrTG9hZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0xvYWQuY3BwCShyZXZpc2lvbiAxOTUzOTMpCisrKyBTb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDEzICs1
MCwxMiBAQCBOZXR3b3JrTG9hZDo6TmV0d29ya0xvYWQoTmV0d29ya0xvYWRDbGllCiAgICAgLCBt
X2N1cnJlbnRSZXF1ZXN0KHBhcmFtZXRlcnMucmVxdWVzdCkKIHsKICNpZiBVU0UoTkVUV09SS19T
RVNTSU9OKQotICAgIGlmICghcGFyYW1ldGVycy5kZWZlcnNMb2FkaW5nKSB7Ci0gICAgICAgIGlm
IChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IFNlc3Npb25UcmFja2VyOjpuZXR3b3JrU2Vzc2lvbihw
YXJhbWV0ZXJzLnNlc3Npb25JRCkpIHsKLSAgICAgICAgICAgIG1fdGFzayA9IG5ldHdvcmtTZXNz
aW9uLT5jcmVhdGVEYXRhVGFza1dpdGhSZXF1ZXN0KHBhcmFtZXRlcnMucmVxdWVzdCwgKnRoaXMp
OworICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IFNlc3Npb25UcmFja2VyOjpuZXR3b3Jr
U2Vzc2lvbihwYXJhbWV0ZXJzLnNlc3Npb25JRCkpIHsKKyAgICAgICAgbV90YXNrID0gc3RkOjpt
YWtlX3VuaXF1ZTxOZXR3b3JrRGF0YVRhc2s+KCpuZXR3b3JrU2Vzc2lvbiwgKnRoaXMsIHBhcmFt
ZXRlcnMucmVxdWVzdCk7CisgICAgICAgIGlmICghcGFyYW1ldGVycy5kZWZlcnNMb2FkaW5nKQog
ICAgICAgICAgICAgbV90YXNrLT5yZXN1bWUoKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9CisgICAgfSBlbHNlCisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogI2Vsc2UKICAgICBtX2hhbmRsZSA9IFJlc291cmNlSGFuZGxlOjpj
cmVhdGUobV9uZXR3b3JraW5nQ29udGV4dC5nZXQoKSwgcGFyYW1ldGVycy5yZXF1ZXN0LCB0aGlz
LCBwYXJhbWV0ZXJzLmRlZmVyc0xvYWRpbmcsIHBhcmFtZXRlcnMuY29udGVudFNuaWZmaW5nUG9s
aWN5ID09IFNuaWZmQ29udGVudCk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAkocmV2aXNpb24gMTk1MzkzKQorKysgU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAkod29ya2luZyBjb3B5
KQpAQCAtNDEsNiArNDEsNyBAQCBPQkpDX0NMQVNTIFdLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZTsK
ICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
ICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsK
QEAgLTYzLDEzICs2NCwxNCBAQCBlbnVtIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlz
cG9zCiBjbGFzcyBOZXR3b3JrU2Vzc2lvbjsKIGNsYXNzIFBlbmRpbmdEb3dubG9hZDsKIAordHlw
ZWRlZiBzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik+
IFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXI7Cit0eXBlZGVmIHN0ZDo6ZnVuY3Rpb248dm9pZChB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50
aWFsJik+IENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyOwordHlwZWRlZiBzdGQ6OmZ1bmN0aW9u
PHZvaWQoV2ViQ29yZTo6UG9saWN5QWN0aW9uKT4gUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlcjsK
KwogY2xhc3MgTmV0d29ya1Nlc3Npb25UYXNrQ2xpZW50IHsKIHB1YmxpYzoKLSAgICB0eXBlZGVm
IHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKT4gUmVk
aXJlY3RDb21wbGV0aW9uSGFuZGxlcjsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFBlcmZvcm1IVFRQ
UmVkaXJlY3Rpb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIpID0gMDsKLSAg
ICB0eXBlZGVmIHN0ZDo6ZnVuY3Rpb248dm9pZChBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bv
c2l0aW9uLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJik+IENoYWxsZW5nZUNvbXBsZXRpb25I
YW5kbGVyOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKGNvbnN0IFdlYkNv
cmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIp
ID0gMDsKLSAgICB0eXBlZGVmIHN0ZDo6ZnVuY3Rpb248dm9pZChXZWJDb3JlOjpQb2xpY3lBY3Rp
b24pPiBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJlc3BvbnNlQ29t
cGxldGlvbkhhbmRsZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRD
b21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgPSAwOwpAQCAt
ODEsMTEgKzgzLDcgQEAgcHVibGljOgogY2xhc3MgTmV0d29ya0RhdGFUYXNrIHsKICAgICBmcmll
bmQgY2xhc3MgTmV0d29ya1Nlc3Npb247CiBwdWJsaWM6Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0g
ICAgZXhwbGljaXQgTmV0d29ya0RhdGFUYXNrKE5ldHdvcmtTZXNzaW9uJiwgTmV0d29ya1Nlc3Np
b25UYXNrQ2xpZW50JiwgUmV0YWluUHRyPE5TVVJMU2Vzc2lvbkRhdGFUYXNrPiYmKTsKLSNlbHNl
Ci0gICAgZXhwbGljaXQgTmV0d29ya0RhdGFUYXNrKE5ldHdvcmtTZXNzaW9uJiwgTmV0d29ya1Nl
c3Npb25UYXNrQ2xpZW50Jik7Ci0jZW5kaWYKKyAgICBleHBsaWNpdCBOZXR3b3JrRGF0YVRhc2so
TmV0d29ya1Nlc3Npb24mLCBOZXR3b3JrU2Vzc2lvblRhc2tDbGllbnQmLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmKTsKIAogICAgIHZvaWQgc3VzcGVuZCgpOwogICAgIHZvaWQgY2Fu
Y2VsKCk7CkBAIC0xMTEsMTIgKzEwOSwxNSBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVCghbV9w
ZW5kaW5nRG93bmxvYWQpOwogICAgICAgICBtX3BlbmRpbmdEb3dubG9hZCA9ICZwZW5kaW5nRG93
bmxvYWQ7CiAgICAgfQorICAgIGJvb2wgdHJ5UGFzc3dvcmRCYXNlZEF1dGhlbnRpY2F0aW9uKGNv
bnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlv
bkhhbmRsZXIpOwogICAgIAogcHJpdmF0ZToKICAgICBOZXR3b3JrU2Vzc2lvbiYgbV9zZXNzaW9u
OwogICAgIE5ldHdvcmtTZXNzaW9uVGFza0NsaWVudCYgbV9jbGllbnQ7CiAgICAgUGVuZGluZ0Rv
d25sb2FkKiBtX3BlbmRpbmdEb3dubG9hZCB7IG51bGxwdHIgfTsKICAgICBEb3dubG9hZElEIG1f
cGVuZGluZ0Rvd25sb2FkSUQ7CisgICAgU3RyaW5nIG1fdXNlcjsKKyAgICBTdHJpbmcgbV9wYXNz
d29yZDsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBSZXRhaW5QdHI8TlNVUkxTZXNzaW9uRGF0
YVRhc2s+IG1fdGFzazsKICNlbmRpZgpAQCAtMTMzLDggKzEzNCw2IEBAIHB1YmxpYzoKICAgICB+
TmV0d29ya1Nlc3Npb24oKTsKIAogICAgIHN0YXRpYyBOZXR3b3JrU2Vzc2lvbiYgZGVmYXVsdFNl
c3Npb24oKTsKLSAgICAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0RhdGFUYXNrPiBjcmVh
dGVEYXRhVGFza1dpdGhSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIE5l
dHdvcmtTZXNzaW9uVGFza0NsaWVudCYpOwogCiAgICAgTmV0d29ya0RhdGFUYXNrKiBkYXRhVGFz
a0ZvcklkZW50aWZpZXIoTmV0d29ya0RhdGFUYXNrOjpUYXNrSWRlbnRpZmllcik7CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2Eu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya1Nlc3Npb25Db2NvYS5tbQkocmV2aXNpb24gMTk1MzkzKQorKysgU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQkod29ya2luZyBjb3B5
KQpAQCAtMTEwLDEwICsxMTAsMTYgQEAgLSAodm9pZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24g
KilzZXNzaQogewogICAgIGlmIChhdXRvKiBuZXR3b3JrRGF0YVRhc2sgPSBfc2Vzc2lvbi0+ZGF0
YVRhc2tGb3JJZGVudGlmaWVyKHRhc2sudGFza0lkZW50aWZpZXIpKSB7CiAgICAgICAgIGF1dG8g
Y29tcGxldGlvbkhhbmRsZXJDb3B5ID0gQmxvY2tfY29weShjb21wbGV0aW9uSGFuZGxlcik7Ci0g
ICAgICAgIG5ldHdvcmtEYXRhVGFzay0+Y2xpZW50KCkuZGlkUmVjZWl2ZUNoYWxsZW5nZShjaGFs
bGVuZ2UsIFtjb21wbGV0aW9uSGFuZGxlckNvcHldKFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2VEaXNwb3NpdGlvbiBkaXNwb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6Q3JlZGVudGlhbCYg
Y3JlZGVudGlhbCkgeworICAgICAgICBhdXRvIGNoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyID0g
W2NvbXBsZXRpb25IYW5kbGVyQ29weV0oV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURp
c3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJiBjcmVkZW50
aWFsKQorICAgICAgICB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlckNvcHkodG9OU1VS
TFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24oZGlzcG9zaXRpb24pLCBjcmVkZW50aWFs
Lm5zQ3JlZGVudGlhbCgpKTsKICAgICAgICAgICAgIEJsb2NrX3JlbGVhc2UoY29tcGxldGlvbkhh
bmRsZXJDb3B5KTsKLSAgICAgICAgfSk7CisgICAgICAgIH07CisgICAgICAgIAorICAgICAgICBp
ZiAobmV0d29ya0RhdGFUYXNrLT50cnlQYXNzd29yZEJhc2VkQXV0aGVudGljYXRpb24oY2hhbGxl
bmdlLCBjaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlcikpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIAorICAgICAgICBuZXR3b3JrRGF0YVRhc2stPmNsaWVudCgpLmRpZFJlY2VpdmVDaGFs
bGVuZ2UoY2hhbGxlbmdlLCBjaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlcik7CiAgICAgfQogfQog
CkBAIC0yMjksMTEgKzIzNSw2IEBAIE5ldHdvcmtTZXNzaW9uOjp+TmV0d29ya1Nlc3Npb24oKQog
ICAgIFttX3Nlc3Npb24gaW52YWxpZGF0ZUFuZENhbmNlbF07CiB9CiAKLXN0ZDo6dW5pcXVlX3B0
cjxOZXR3b3JrRGF0YVRhc2s+IE5ldHdvcmtTZXNzaW9uOjpjcmVhdGVEYXRhVGFza1dpdGhSZXF1
ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgTmV0d29ya1Nlc3Np
b25UYXNrQ2xpZW50JiBjbGllbnQpCi17Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TmV0
d29ya0RhdGFUYXNrPigqdGhpcywgY2xpZW50LCBbbV9zZXNzaW9uIGRhdGFUYXNrV2l0aFJlcXVl
c3Q6cmVxdWVzdC5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6VXBkYXRlSFRUUEJvZHkpXSk7Ci19Ci0K
IE5ldHdvcmtEYXRhVGFzayogTmV0d29ya1Nlc3Npb246OmRhdGFUYXNrRm9ySWRlbnRpZmllcihO
ZXR3b3JrRGF0YVRhc2s6OlRhc2tJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyKQogewogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CkBAIC0yNjMsMTMgKzI2NCwyMCBAQCBEb3dubG9hZElEIE5l
dHdvcmtTZXNzaW9uOjp0YWtlRG93bmxvYWRJCiAgICAgcmV0dXJuIGRvd25sb2FkSUQ7CiB9CiAK
LU5ldHdvcmtEYXRhVGFzazo6TmV0d29ya0RhdGFUYXNrKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9u
LCBOZXR3b3JrU2Vzc2lvblRhc2tDbGllbnQmIGNsaWVudCwgUmV0YWluUHRyPE5TVVJMU2Vzc2lv
bkRhdGFUYXNrPiYmIHRhc2spCitOZXR3b3JrRGF0YVRhc2s6Ok5ldHdvcmtEYXRhVGFzayhOZXR3
b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya1Nlc3Npb25UYXNrQ2xpZW50JiBjbGllbnQsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdFdpdGhDcmVkZW50aWFscykKICAg
ICA6IG1fc2Vzc2lvbihzZXNzaW9uKQogICAgICwgbV9jbGllbnQoY2xpZW50KQotICAgICwgbV90
YXNrKFdURk1vdmUodGFzaykpCiB7Ci0gICAgQVNTRVJUKCFtX3Nlc3Npb24ubV9kYXRhVGFza01h
cC5jb250YWlucyh0YXNrSWRlbnRpZmllcigpKSk7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKKworICAgIGF1dG8gcmVxdWVzdCA9IHJlcXVlc3RXaXRoQ3JlZGVudGlhbHM7CisgICAgbV91
c2VyID0gcmVxdWVzdC51cmwoKS51c2VyKCk7CisgICAgbV9wYXNzd29yZCA9IHJlcXVlc3QudXJs
KCkucGFzcygpOworICAgIHJlcXVlc3QucmVtb3ZlQ3JlZGVudGlhbHMoKTsKKyAgICAKKyAgICBt
X3Rhc2sgPSBbbV9zZXNzaW9uLm1fc2Vzc2lvbiBkYXRhVGFza1dpdGhSZXF1ZXN0OnJlcXVlc3Qu
bnNVUkxSZXF1ZXN0KFdlYkNvcmU6OlVwZGF0ZUhUVFBCb2R5KV07CisgICAgCisgICAgQVNTRVJU
KCFtX3Nlc3Npb24ubV9kYXRhVGFza01hcC5jb250YWlucyh0YXNrSWRlbnRpZmllcigpKSk7CiAg
ICAgbV9zZXNzaW9uLm1fZGF0YVRhc2tNYXAuYWRkKHRhc2tJZGVudGlmaWVyKCksIHRoaXMpOwog
fQogCkBAIC0yODEsNiArMjg5LDIxIEBAIE5ldHdvcmtEYXRhVGFzazo6fk5ldHdvcmtEYXRhVGFz
aygpCiAgICAgbV9zZXNzaW9uLm1fZGF0YVRhc2tNYXAucmVtb3ZlKHRhc2tJZGVudGlmaWVyKCkp
OwogfQogCitib29sIE5ldHdvcmtEYXRhVGFzazo6dHJ5UGFzc3dvcmRCYXNlZEF1dGhlbnRpY2F0
aW9uKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UsIENo
YWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmICgh
Y2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpLmlzUGFzc3dvcmRCYXNlZCgpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIW1fdXNlci5pc051bGwoKSAmJiAhbV9wYXNzd29yZC5p
c051bGwoKSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZURpc3Bvc2l0aW9uOjpVc2VDcmVkZW50aWFsLCBXZWJDb3JlOjpDcmVkZW50aWFsKG1fdXNl
ciwgbV9wYXNzd29yZCwgV2ViQ29yZTo6Q3JlZGVudGlhbFBlcnNpc3RlbmNlRm9yU2Vzc2lvbikp
OworICAgICAgICBtX3VzZXIgPSBTdHJpbmcoKTsKKyAgICAgICAgbV9wYXNzd29yZCA9IFN0cmlu
ZygpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisgICAgCiB2b2lkIE5ldHdvcmtEYXRhVGFzazo6Y2FuY2VsKCkKIHsKICAgICBbbV90YXNrIGNh
bmNlbF07CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVu
dGljYXRpb25NYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0F1
dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5oCShyZXZpc2lvbiAxOTUzOTMpCisr
KyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5h
Z2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDYgQEAgcHVibGljOgogICAgIHN0YXRp
YyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOwogCiAjaWYgVVNFKE5FVFdPUktfU0VTU0lP
TikKLSAgICB0eXBlZGVmIE5ldHdvcmtTZXNzaW9uVGFza0NsaWVudDo6Q2hhbGxlbmdlQ29tcGxl
dGlvbkhhbmRsZXIgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXI7CiAgICAgdm9pZCBkaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFt
ZUlELCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENoYWxsZW5nZUNv
bXBsZXRpb25IYW5kbGVyKTsKICAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZShQZW5kaW5nRG93bmxvYWQmLCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2b2lkIGNvbnRpbnVlQ2Fu
QXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShEb3dubG9hZElELCBib29sIGNhbkF1
dGhlbnRpY2F0ZSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>