<?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>159750</bug_id>
          
          <creation_ts>2016-07-13 17:17:07 -0700</creation_ts>
          <short_desc>Modernize WebSocket handle</short_desc>
          <delta_ts>2016-07-14 00:06:54 -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>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>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1210799</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-07-13 17:17:07 -0700</bug_when>
    <thetext>Modernize WebSocket handle</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1210801</commentid>
    <comment_count>1</comment_count>
      <attachid>283591</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-07-13 17:21:31 -0700</bug_when>
    <thetext>Created attachment 283591
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1210805</commentid>
    <comment_count>2</comment_count>
      <attachid>283591</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-07-13 17:30:03 -0700</bug_when>
    <thetext>Comment on attachment 283591
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        This patch just removes ThreadableWebSocketChannel::InvalidMessage which is never used

It&apos;s problematic this was never used.

Can we do some archeology and find out why? (e.g., was it used at one time, and that use was just dropped inadvertently?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1210811</commentid>
    <comment_count>3</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-07-13 17:48:29 -0700</bug_when>
    <thetext>InvalidMessage was introduced but not used in https://bugs.webkit.org/show_bug.cgi?id=80356
It was used in https://bugs.webkit.org/show_bug.cgi?id=80103
It was removed sometime.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1210894</commentid>
    <comment_count>4</comment_count>
      <attachid>283608</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-07-13 23:51:29 -0700</bug_when>
    <thetext>Created attachment 283608
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1210901</commentid>
    <comment_count>5</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-07-14 00:06:54 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/203217</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283591</attachid>
            <date>2016-07-13 17:21:31 -0700</date>
            <delta_ts>2016-07-13 23:51:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159750-20160713172046.patch</filename>
            <type>text/plain</type>
            <size>25974</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMzIwNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYyIEBACisyMDE2LTA3LTEzICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW9kZXJuaXpl
IFdlYlNvY2tldCBoYW5kbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1OTc1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cy4gIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKyAgICAgICAg
VGhpcyBwYXRjaCBqdXN0IHJlbW92ZXMgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkludmFs
aWRNZXNzYWdlIHdoaWNoIGlzIG5ldmVyIHVzZWQKKyAgICAgICAgYW5kIG1ha2VzIG91ciB1c2Ug
b2YgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50IGEgcmVmZXJlbmNlIGluc3RlYWQgb2YgYSBwb2lu
dGVyLgorCisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OnNlbmQpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tl
dENoYW5uZWw6OmNvbm5lY3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvU29ja2V0U3Ry
ZWFtSGFuZGxlQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVC
YXNlOjpTb2NrZXRTdHJlYW1IYW5kbGVCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0
cmVhbUhhbmRsZUJhc2U6OnNlbmQpOgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFu
ZGxlQmFzZTo6ZGlzY29ubmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5k
bGVCYXNlOjpzZW5kUGVuZGluZ0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFt
SGFuZGxlQmFzZTo6c2V0Q2xpZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL1NvY2tldFN0cmVhbUhhbmRsZUJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0
cmVhbUhhbmRsZUJhc2U6On5Tb2NrZXRTdHJlYW1IYW5kbGVCYXNlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNvY2tldFN0cmVhbUhhbmRsZUJhc2U6OmJ1ZmZlcmVkQW1vdW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUJhc2U6OmNsaWVudCk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNv
Y2tldFN0cmVhbUhhbmRsZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2Nm
L1NvY2tldFN0cmVhbUhhbmRsZUNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0
cmVhbUhhbmRsZTo6U29ja2V0U3RyZWFtSGFuZGxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tl
dFN0cmVhbUhhbmRsZTo6YWRkQ09OTkVDVENyZWRlbnRpYWxzKToKKyAgICAgICAgKFdlYkNvcmU6
OlNvY2tldFN0cmVhbUhhbmRsZTo6Y29weUNGU3RyZWFtRGVzY3JpcHRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlOjpyZWFkU3RyZWFtQ2FsbGJhY2spOgorICAgICAg
ICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlOjp3cml0ZVN0cmVhbUNhbGxiYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZTo6cmVwb3J0RXJyb3JUb0NsaWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGU6On5Tb2NrZXRTdHJlYW1IYW5k
bGUpOgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlOjpwbGF0Zm9ybUNsb3Nl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZTo6cG9ydCk6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZS5oOgorICAgICAgICAo
V2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVDdXJsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNvY2tldFN0cmVhbUhhbmRsZTo6U29ja2V0U3RyZWFtSGFuZGxlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZTo6cGxhdGZvcm1DbG9zZSk6CisgICAgICAgIChXZWJD
b3JlOjpTb2NrZXRTdHJlYW1IYW5kbGU6OnJlYWREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNv
Y2tldFN0cmVhbUhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U29j
a2V0U3RyZWFtSGFuZGxlOjpkaWRPcGVuU29ja2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tl
dFN0cmVhbUhhbmRsZTo6Y3JlYXRlQ29weSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9z
b3VwL1NvY2tldFN0cmVhbUhhbmRsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291
cC9Tb2NrZXRTdHJlYW1IYW5kbGVTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0
cmVhbUhhbmRsZTo6U29ja2V0U3RyZWFtSGFuZGxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tl
dFN0cmVhbUhhbmRsZTo6flNvY2tldFN0cmVhbUhhbmRsZSk6CisgICAgICAgIChXZWJDb3JlOjpT
b2NrZXRTdHJlYW1IYW5kbGU6OmNvbm5lY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRT
dHJlYW1IYW5kbGU6OmNvbm5lY3RlZENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tl
dFN0cmVhbUhhbmRsZTo6cmVhZEJ5dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVh
bUhhbmRsZTo6ZGlkRmFpbCk6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGU6
OndyaXRlUmVhZHkpOgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlOjpwbGF0
Zm9ybUNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZTo6YmVnaW5X
YWl0aW5nRm9yU29ja2V0V3JpdGFiaWxpdHkpOgorCiAyMDE2LTA3LTEyICBSeW9zdWtlIE5pd2Eg
IDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjIwMjk1Myk6IENsaWNr
aW5nIG9uIGlucHV0W3R5cGU9ZmlsZV0gZG9lc24ndCBvcGVuIGEgZmlsZSBwaWNrZXIKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9U
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCShyZXZpc2lvbiAyMDI5OTQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaAko
d29ya2luZyBjb3B5KQpAQCAtNTQsOCArNTQsNyBAQCBwdWJsaWM6CiAKICAgICBlbnVtIFNlbmRS
ZXN1bHQgewogICAgICAgICBTZW5kU3VjY2VzcywKLSAgICAgICAgU2VuZEZhaWwsCi0gICAgICAg
IEludmFsaWRNZXNzYWdlCisgICAgICAgIFNlbmRGYWlsCiAgICAgfTsKIAogICAgIHZpcnR1YWwg
dm9pZCBjb25uZWN0KGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpID0gMDsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3Bw
CShyZXZpc2lvbiAyMDI5OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMv
V2ViU29ja2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIzLDEyICszMjMsNyBAQCB2b2lkIFdl
YlNvY2tldDo6c2VuZChjb25zdCBTdHJpbmcmIG1lc3NhCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgQVNTRVJUKG1fY2hhbm5lbCk7Ci0gICAgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6
OlNlbmRSZXN1bHQgcmVzdWx0ID0gbV9jaGFubmVsLT5zZW5kKG1lc3NhZ2UpOwotICAgIGlmIChy
ZXN1bHQgPT0gVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkludmFsaWRNZXNzYWdlKSB7Ci0g
ICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2Fn
ZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIEFTQ0lJTGl0ZXJhbCgiV2Vic29ja2V0
IG1lc3NhZ2UgY29udGFpbnMgaW52YWxpZCBjaGFyYWN0ZXIocykuIikpOwotICAgICAgICBlYyA9
IFNZTlRBWF9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgbV9jaGFubmVsLT5zZW5k
KG1lc3NhZ2UpOwogfQogCiB2b2lkIFdlYlNvY2tldDo6c2VuZChBcnJheUJ1ZmZlciYgYmluYXJ5
RGF0YSwgRXhjZXB0aW9uQ29kZSYgZWMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCShyZXZpc2lvbiAyMDI5
OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5l
bC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk3LDcgKzk3LDcgQEAgdm9pZCBXZWJTb2NrZXRDaGFu
bmVsOjpjb25uZWN0KGNvbnN0IFVSTAogICAgICAgICBpZiAoTmV0d29ya2luZ0NvbnRleHQqIG5l
dHdvcmtpbmdDb250ZXh0ID0gZnJhbWUtPmxvYWRlcigpLm5ldHdvcmtpbmdDb250ZXh0KCkpIHsK
ICAgICAgICAgICAgIHJlZigpOwogICAgICAgICAgICAgUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdl
KCk7Ci0gICAgICAgICAgICBtX2hhbmRsZSA9IFNvY2tldFN0cmVhbUhhbmRsZTo6Y3JlYXRlKG1f
aGFuZHNoYWtlLT51cmwoKSwgdGhpcywgKm5ldHdvcmtpbmdDb250ZXh0LCAocGFnZSA/IHBhZ2Ut
PnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkgOiBmYWxzZSkpOworICAgICAgICAgICAgbV9oYW5kbGUg
PSBTb2NrZXRTdHJlYW1IYW5kbGU6OmNyZWF0ZShtX2hhbmRzaGFrZS0+dXJsKCksICp0aGlzLCAq
bmV0d29ya2luZ0NvbnRleHQsIChwYWdlID8gcGFnZS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKSA6
IGZhbHNlKSk7CiAgICAgICAgIH0KICAgICB9CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUJhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5jcHAJ
KHJldmlzaW9uIDIwMjk5NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29j
a2V0U3RyZWFtSGFuZGxlQmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCB1bnNpZ25lZCBpbnQgYnVmZmVyU2l6ZSA9IDEw
MCAqIDEwMjQgKiAxMDI0OwogCi1Tb2NrZXRTdHJlYW1IYW5kbGVCYXNlOjpTb2NrZXRTdHJlYW1I
YW5kbGVCYXNlKGNvbnN0IFVSTCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqIGNsaWVu
dCkKK1NvY2tldFN0cmVhbUhhbmRsZUJhc2U6OlNvY2tldFN0cmVhbUhhbmRsZUJhc2UoY29uc3Qg
VVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYgY2xpZW50KQogICAgIDogbV91cmwo
dXJsKQogICAgICwgbV9jbGllbnQoY2xpZW50KQogICAgICwgbV9zdGF0ZShDb25uZWN0aW5nKQpA
QCAtNjAsOCArNjAsNyBAQCBib29sIFNvY2tldFN0cmVhbUhhbmRsZUJhc2U6OnNlbmQoY29uc3Qg
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgbV9idWZmZXIu
YXBwZW5kKGRhdGEsIGxlbmd0aCk7Ci0gICAgICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgICAg
IG1fY2xpZW50LT5kaWRVcGRhdGVCdWZmZXJlZEFtb3VudChzdGF0aWNfY2FzdDxTb2NrZXRTdHJl
YW1IYW5kbGUmPigqdGhpcyksIGJ1ZmZlcmVkQW1vdW50KCkpOworICAgICAgICBtX2NsaWVudC5k
aWRVcGRhdGVCdWZmZXJlZEFtb3VudChzdGF0aWNfY2FzdDxTb2NrZXRTdHJlYW1IYW5kbGUmPigq
dGhpcyksIGJ1ZmZlcmVkQW1vdW50KCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAg
ICAgaW50IGJ5dGVzV3JpdHRlbiA9IDA7CkBAIC03NSw4ICs3NCw3IEBAIGJvb2wgU29ja2V0U3Ry
ZWFtSGFuZGxlQmFzZTo6c2VuZChjb25zdCAKICAgICB9CiAgICAgaWYgKGJ5dGVzV3JpdHRlbiA8
IGxlbmd0aCkgewogICAgICAgICBtX2J1ZmZlci5hcHBlbmQoZGF0YSArIGJ5dGVzV3JpdHRlbiwg
bGVuZ3RoIC0gYnl0ZXNXcml0dGVuKTsKLSAgICAgICAgaWYgKG1fY2xpZW50KQotICAgICAgICAg
ICAgbV9jbGllbnQtPmRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50KHN0YXRpY19jYXN0PFNvY2tldFN0
cmVhbUhhbmRsZSY+KCp0aGlzKSwgYnVmZmVyZWRBbW91bnQoKSk7CisgICAgICAgIG1fY2xpZW50
LmRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50KHN0YXRpY19jYXN0PFNvY2tldFN0cmVhbUhhbmRsZSY+
KCp0aGlzKSwgYnVmZmVyZWRBbW91bnQoKSk7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwogfQpA
QCAtOTksMTIgKzk3LDYgQEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlOjpkaXNjb25uZWN0
KAogICAgIG1fc3RhdGUgPSBDbG9zZWQ7CiB9CiAKLXZvaWQgU29ja2V0U3RyZWFtSGFuZGxlQmFz
ZTo6c2V0Q2xpZW50KFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCogY2xpZW50KQotewotICAgIEFT
U0VSVCghY2xpZW50IHx8ICghbV9jbGllbnQgJiYgbV9zdGF0ZSA9PSBDb25uZWN0aW5nKSk7Ci0g
ICAgbV9jbGllbnQgPSBjbGllbnQ7Ci19Ci0KIGJvb2wgU29ja2V0U3RyZWFtSGFuZGxlQmFzZTo6
c2VuZFBlbmRpbmdEYXRhKCkKIHsKICAgICBpZiAobV9zdGF0ZSAhPSBPcGVuICYmIG1fc3RhdGUg
IT0gQ2xvc2luZykKQEAgLTEyNiw4ICsxMTgsNyBAQCBib29sIFNvY2tldFN0cmVhbUhhbmRsZUJh
c2U6OnNlbmRQZW5kaW5nCiAgICAgICAgIEFTU0VSVChtX2J1ZmZlci5zaXplKCkgLSBieXRlc1dy
aXR0ZW4gPD0gYnVmZmVyU2l6ZSk7CiAgICAgICAgIG1fYnVmZmVyLmNvbnN1bWUoYnl0ZXNXcml0
dGVuKTsKICAgICB9IHdoaWxlICghcGVuZGluZyAmJiAhbV9idWZmZXIuaXNFbXB0eSgpKTsKLSAg
ICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5kaWRVcGRhdGVCdWZmZXJlZEFtb3Vu
dChzdGF0aWNfY2FzdDxTb2NrZXRTdHJlYW1IYW5kbGUmPigqdGhpcyksIGJ1ZmZlcmVkQW1vdW50
KCkpOworICAgIG1fY2xpZW50LmRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50KHN0YXRpY19jYXN0PFNv
Y2tldFN0cmVhbUhhbmRsZSY+KCp0aGlzKSwgYnVmZmVyZWRBbW91bnQoKSk7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0
U3RyZWFtSGFuZGxlQmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5oCShyZXZpc2lvbiAyMDI5OTQpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUJhc2UuaAko
d29ya2luZyBjb3B5KQpAQCAtMzYsMzQgKzM2LDMzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotICAgIGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZTsKLSAgICBjbGFzcyBTb2NrZXRTdHJlYW1I
YW5kbGVDbGllbnQ7CitjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGU7CitjbGFzcyBTb2NrZXRTdHJl
YW1IYW5kbGVDbGllbnQ7CiAKLSAgICBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlIHsKLSAg
ICBwdWJsaWM6Ci0gICAgICAgIGVudW0gU29ja2V0U3RyZWFtU3RhdGUgeyBDb25uZWN0aW5nLCBP
cGVuLCBDbG9zaW5nLCBDbG9zZWQgfTsKLSAgICAgICAgdmlydHVhbCB+U29ja2V0U3RyZWFtSGFu
ZGxlQmFzZSgpIHsgfQotICAgICAgICBTb2NrZXRTdHJlYW1TdGF0ZSBzdGF0ZSgpIGNvbnN0Owot
Ci0gICAgICAgIGJvb2wgc2VuZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKLSAgICAg
ICAgdm9pZCBjbG9zZSgpOyAvLyBEaXNjb25uZWN0IGFmdGVyIGFsbCBkYXRhIGluIGJ1ZmZlciBh
cmUgc2VudC4KLSAgICAgICAgdm9pZCBkaXNjb25uZWN0KCk7Ci0gICAgICAgIHNpemVfdCBidWZm
ZXJlZEFtb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLnNpemUoKTsgfQotCi0gICAgICAg
IFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCogY2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9jbGll
bnQ7IH0KLSAgICAgICAgdm9pZCBzZXRDbGllbnQoU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Kik7
Ci0KLSAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIFNvY2tldFN0cmVhbUhhbmRsZUJhc2UoY29uc3Qg
VVJMJiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Kik7Ci0KLSAgICAgICAgYm9vbCBzZW5kUGVu
ZGluZ0RhdGEoKTsKLSAgICAgICAgdmlydHVhbCBpbnQgcGxhdGZvcm1TZW5kKGNvbnN0IGNoYXIq
IGRhdGEsIGludCBsZW5ndGgpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQ2xv
c2UoKSA9IDA7Ci0KLSAgICAgICAgVVJMIG1fdXJsOwotICAgICAgICBTb2NrZXRTdHJlYW1IYW5k
bGVDbGllbnQqIG1fY2xpZW50OwotICAgICAgICBTdHJlYW1CdWZmZXI8Y2hhciwgMTAyNCAqIDEw
MjQ+IG1fYnVmZmVyOwotICAgICAgICBTb2NrZXRTdHJlYW1TdGF0ZSBtX3N0YXRlOwotICAgIH07
CitjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlIHsKK3B1YmxpYzoKKyAgICBlbnVtIFNvY2tl
dFN0cmVhbVN0YXRlIHsgQ29ubmVjdGluZywgT3BlbiwgQ2xvc2luZywgQ2xvc2VkIH07CisgICAg
dmlydHVhbCB+U29ja2V0U3RyZWFtSGFuZGxlQmFzZSgpIHsgfQorICAgIFNvY2tldFN0cmVhbVN0
YXRlIHN0YXRlKCkgY29uc3Q7CisKKyAgICBib29sIHNlbmQoY29uc3QgY2hhciogZGF0YSwgaW50
IGxlbmd0aCk7CisgICAgdm9pZCBjbG9zZSgpOyAvLyBEaXNjb25uZWN0IGFmdGVyIGFsbCBkYXRh
IGluIGJ1ZmZlciBhcmUgc2VudC4KKyAgICB2b2lkIGRpc2Nvbm5lY3QoKTsKKyAgICBzaXplX3Qg
YnVmZmVyZWRBbW91bnQoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5zaXplKCk7IH0KKworICAg
IFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYgY2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9jbGll
bnQ7IH0KKworcHJvdGVjdGVkOgorICAgIFNvY2tldFN0cmVhbUhhbmRsZUJhc2UoY29uc3QgVVJM
JiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Jik7CisKKyAgICBib29sIHNlbmRQZW5kaW5nRGF0
YSgpOworICAgIHZpcnR1YWwgaW50IHBsYXRmb3JtU2VuZChjb25zdCBjaGFyKiBkYXRhLCBpbnQg
bGVuZ3RoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQ2xvc2UoKSA9IDA7CisKKyAg
ICBVUkwgbV91cmw7CisgICAgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiBtX2NsaWVudDsKKyAg
ICBTdHJlYW1CdWZmZXI8Y2hhciwgMTAyNCAqIDEwMjQ+IG1fYnVmZmVyOworICAgIFNvY2tldFN0
cmVhbVN0YXRlIG1fc3RhdGU7Cit9OwogCiB9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0
cmVhbUhhbmRsZS5oCShyZXZpc2lvbiAyMDI5OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3
ICs0Nyw3IEBAIGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudDsKIAogY2xhc3MgU29ja2V0
U3RyZWFtSGFuZGxlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNvY2tldFN0cmVhbUhh
bmRsZT4sIHB1YmxpYyBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlIHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmPFNvY2tldFN0cmVhbUhhbmRsZT4gY3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBTb2NrZXRT
dHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCwgTmV0d29ya2luZ0NvbnRleHQmIG5ldHdvcmtpbmdD
b250ZXh0LCBib29sIHVzZXNFcGhlbWVyYWxTZXNzaW9uKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IFNvY2tldFN0cmVhbUhhbmRsZSh1cmwsIGNsaWVudCwgbmV0d29ya2luZ0NvbnRleHQsIHVzZXNF
cGhlbWVyYWxTZXNzaW9uKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNvY2tldFN0cmVhbUhhbmRsZT4g
Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQmIGNsaWVudCwg
TmV0d29ya2luZ0NvbnRleHQmIG5ldHdvcmtpbmdDb250ZXh0LCBib29sIHVzZXNFcGhlbWVyYWxT
ZXNzaW9uKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNvY2tldFN0cmVhbUhhbmRsZSh1cmwsIGNs
aWVudCwgbmV0d29ya2luZ0NvbnRleHQsIHVzZXNFcGhlbWVyYWxTZXNzaW9uKSk7IH0KIAogICAg
IHZpcnR1YWwgflNvY2tldFN0cmVhbUhhbmRsZSgpOwogCkBAIC01NSw3ICs1NSw3IEBAIHByaXZh
dGU6CiAgICAgdmlydHVhbCBpbnQgcGxhdGZvcm1TZW5kKGNvbnN0IGNoYXIqIGRhdGEsIGludCBs
ZW5ndGgpOwogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNsb3NlKCk7CiAKLSAgICBTb2NrZXRT
dHJlYW1IYW5kbGUoY29uc3QgVVJMJiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50KiwgTmV0d29y
a2luZ0NvbnRleHQmLCBib29sIHVzZXNFcGhlbWVyYWxTZXNzaW9uKTsKKyAgICBTb2NrZXRTdHJl
YW1IYW5kbGUoY29uc3QgVVJMJiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiwgTmV0d29ya2lu
Z0NvbnRleHQmLCBib29sIHVzZXNFcGhlbWVyYWxTZXNzaW9uKTsKICAgICB2b2lkIGNyZWF0ZVN0
cmVhbXMoKTsKICAgICB2b2lkIHNjaGVkdWxlU3RyZWFtcygpOwogICAgIHZvaWQgY2hvb3NlUHJv
eHkoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3Ry
ZWFtSGFuZGxlQ0ZOZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwCShyZXZpc2lvbiAyMDI5OTQp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRs
ZUNGTmV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsMTQgKzY3LDE0IEBAIGV4dGVybiAiQyIg
Y29uc3QgQ0ZTdHJpbmdSZWYgX2tDRlN0cmVhbVMKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1T
b2NrZXRTdHJlYW1IYW5kbGU6OlNvY2tldFN0cmVhbUhhbmRsZShjb25zdCBVUkwmIHVybCwgU29j
a2V0U3RyZWFtSGFuZGxlQ2xpZW50KiBjbGllbnQsIE5ldHdvcmtpbmdDb250ZXh0JiBuZXR3b3Jr
aW5nQ29udGV4dCwgYm9vbCB1c2VzRXBoZW1lcmFsU2Vzc2lvbikKK1NvY2tldFN0cmVhbUhhbmRs
ZTo6U29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0IFVSTCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5kbGVD
bGllbnQmIGNsaWVudCwgTmV0d29ya2luZ0NvbnRleHQmIG5ldHdvcmtpbmdDb250ZXh0LCBib29s
IHVzZXNFcGhlbWVyYWxTZXNzaW9uKQogICAgIDogU29ja2V0U3RyZWFtSGFuZGxlQmFzZSh1cmws
IGNsaWVudCkKICAgICAsIG1fY29ubmVjdGluZ1N1YnN0YXRlKE5ldykKICAgICAsIG1fY29ubmVj
dGlvblR5cGUoVW5rbm93bikKICAgICAsIG1fc2VudFN0b3JlZENyZWRlbnRpYWxzKGZhbHNlKQog
ICAgICwgbV9uZXR3b3JraW5nQ29udGV4dChuZXR3b3JraW5nQ29udGV4dCkKIHsKLSAgICBMT0co
TmV0d29yaywgIlNvY2tldFN0cmVhbUhhbmRsZSAlcCBuZXcgY2xpZW50ICVwIiwgdGhpcywgbV9j
bGllbnQpOworICAgIExPRyhOZXR3b3JrLCAiU29ja2V0U3RyZWFtSGFuZGxlICVwIG5ldyBjbGll
bnQgJXAiLCB0aGlzLCAmbV9jbGllbnQpOwogCiAgICAgQVNTRVJUKHVybC5wcm90b2NvbElzKCJ3
cyIpIHx8IHVybC5wcm90b2NvbElzKCJ3c3MiKSk7CiAKQEAgLTg3LDcgKzg3LDcgQEAgU29ja2V0
U3RyZWFtSGFuZGxlOjpTb2NrZXRTdHJlYW1IYW5kbGUoYwogICAgIGlmICh1cmwucHJvdG9jb2xJ
cygid3MiKQogICAgICAgICAmJiAhdXNlc0VwaGVtZXJhbFNlc3Npb24KICAgICAgICAgJiYgX0NG
TmV0d29ya0lzS25vd25IU1RTSG9zdFdpdGhTZXNzaW9uKG1faHR0cHNVUkwuZ2V0KCksIG51bGxw
dHIpKSB7Ci0gICAgICAgIG1fY2xpZW50LT5kaWRGYWlsU29ja2V0U3RyZWFtKCp0aGlzLCBTb2Nr
ZXRTdHJlYW1FcnJvcigwLCBtX3VybC5zdHJpbmcoKSwgIldlYlNvY2tldCBjb25uZWN0aW9uIGZh
aWxlZCBiZWNhdXNlIGl0IHZpb2xhdGVzIEhUVFAgU3RyaWN0IFRyYW5zcG9ydCBTZWN1cml0eS4i
KSk7CisgICAgICAgIG1fY2xpZW50LmRpZEZhaWxTb2NrZXRTdHJlYW0oKnRoaXMsIFNvY2tldFN0
cmVhbUVycm9yKDAsIG1fdXJsLnN0cmluZygpLCAiV2ViU29ja2V0IGNvbm5lY3Rpb24gZmFpbGVk
IGJlY2F1c2UgaXQgdmlvbGF0ZXMgSFRUUCBTdHJpY3QgVHJhbnNwb3J0IFNlY3VyaXR5LiIpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgpAQCAtMzg4LDcgKzM4OCw3IEBAIHZvaWQg
U29ja2V0U3RyZWFtSGFuZGxlOjphZGRDT05ORUNUQ3JlZGUKIAogICAgIGlmICghQ0ZIVFRQQXV0
aGVudGljYXRpb25SZXF1aXJlc1VzZXJOYW1lQW5kUGFzc3dvcmQoYXV0aGVudGljYXRpb24uZ2V0
KCkpKSB7CiAgICAgICAgIC8vIFRoYXQncyBhbGwgd2UgY2FuIG9mZmVyLi4uCi0gICAgICAgIG1f
Y2xpZW50LT5kaWRGYWlsU29ja2V0U3RyZWFtKCp0aGlzLCBTb2NrZXRTdHJlYW1FcnJvcigwLCBt
X3VybC5zdHJpbmcoKSwgIlByb3h5IGF1dGhlbnRpY2F0aW9uIHNjaGVtZSBpcyBub3Qgc3VwcG9y
dGVkIGZvciBXZWJTb2NrZXRzIikpOworICAgICAgICBtX2NsaWVudC5kaWRGYWlsU29ja2V0U3Ry
ZWFtKCp0aGlzLCBTb2NrZXRTdHJlYW1FcnJvcigwLCBtX3VybC5zdHJpbmcoKSwgIlByb3h5IGF1
dGhlbnRpY2F0aW9uIHNjaGVtZSBpcyBub3Qgc3VwcG9ydGVkIGZvciBXZWJTb2NrZXRzIikpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zOTksNyArMzk5LDcgQEAgdm9pZCBTb2NrZXRT
dHJlYW1IYW5kbGU6OmFkZENPTk5FQ1RDcmVkZQogCiAgICAgaWYgKCFtZXRob2RDRiB8fCAhcmVh
bG1DRikgewogICAgICAgICAvLyBUaGlzIHNob3VsZG4ndCBoYXBwZW4sIGJ1dCBvbiBzb21lIE9T
IHZlcnNpb25zIHdlIGdldCBpbmNvbXBsZXRlIGF1dGhlbnRpY2F0aW9uIGRhdGEsIHNlZSA8cmRh
cjovL3Byb2JsZW0vMTA0MTYzMTY+LgotICAgICAgICBtX2NsaWVudC0+ZGlkRmFpbFNvY2tldFN0
cmVhbSgqdGhpcywgU29ja2V0U3RyZWFtRXJyb3IoMCwgbV91cmwuc3RyaW5nKCksICJXZWJTb2Nr
ZXQgcHJveHkgYXV0aGVudGljYXRpb24gY291bGRuJ3QgYmUgaGFuZGxlZCIpKTsKKyAgICAgICAg
bV9jbGllbnQuZGlkRmFpbFNvY2tldFN0cmVhbSgqdGhpcywgU29ja2V0U3RyZWFtRXJyb3IoMCwg
bV91cmwuc3RyaW5nKCksICJXZWJTb2NrZXQgcHJveHkgYXV0aGVudGljYXRpb24gY291bGRuJ3Qg
YmUgaGFuZGxlZCIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDE4LDcgKzQxOCw3
IEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjphZGRDT05ORUNUQ3JlZGUKIAogICAgICAgICBp
ZiAoIXByb3h5QXV0aG9yaXphdGlvblN0cmluZykgewogICAgICAgICAgICAgLy8gRmFpbHMgZS5n
LiBmb3IgTlRMTSBhdXRoLgotICAgICAgICAgICAgbV9jbGllbnQtPmRpZEZhaWxTb2NrZXRTdHJl
YW0oKnRoaXMsIFNvY2tldFN0cmVhbUVycm9yKDAsIG1fdXJsLnN0cmluZygpLCAiUHJveHkgYXV0
aGVudGljYXRpb24gc2NoZW1lIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIFdlYlNvY2tldHMiKSk7Cisg
ICAgICAgICAgICBtX2NsaWVudC5kaWRGYWlsU29ja2V0U3RyZWFtKCp0aGlzLCBTb2NrZXRTdHJl
YW1FcnJvcigwLCBtX3VybC5zdHJpbmcoKSwgIlByb3h5IGF1dGhlbnRpY2F0aW9uIHNjaGVtZSBp
cyBub3Qgc3VwcG9ydGVkIGZvciBXZWJTb2NrZXRzIikpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKQEAgLTQzMCw3ICs0MzAsNyBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6
YWRkQ09OTkVDVENyZWRlCiAKICAgICAvLyBGSVhNRTogT24gcGxhdGZvcm1zIHdoZXJlIEF1dGhC
cm9rZXJBZ2VudCBpcyBub3QgYXZhaWxhYmxlLCBhc2sgdGhlIGNsaWVudCBpZiBjcmVkZW50aWFs
cyBjb3VsZCBub3QgYmUgZm91bmQuCiAKLSAgICBtX2NsaWVudC0+ZGlkRmFpbFNvY2tldFN0cmVh
bSgqdGhpcywgU29ja2V0U3RyZWFtRXJyb3IoMCwgbV91cmwuc3RyaW5nKCksICJQcm94eSBjcmVk
ZW50aWFscyBhcmUgbm90IGF2YWlsYWJsZSIpKTsKKyAgICBtX2NsaWVudC5kaWRGYWlsU29ja2V0
U3RyZWFtKCp0aGlzLCBTb2NrZXRTdHJlYW1FcnJvcigwLCBtX3VybC5zdHJpbmcoKSwgIlByb3h5
IGNyZWRlbnRpYWxzIGFyZSBub3QgYXZhaWxhYmxlIikpOwogfQogCiBDRlN0cmluZ1JlZiBTb2Nr
ZXRTdHJlYW1IYW5kbGU6OmNvcHlDRlN0cmVhbURlc2NyaXB0aW9uKHZvaWQqIGluZm8pCkBAIC01
MDUsMTQgKzUwNSwxNCBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6cmVhZFN0cmVhbUNhbGxi
CiAgICAgICAgICAgICAgICAgICAgIGFkZENPTk5FQ1RDcmVkZW50aWFscyhwcm94eVJlc3BvbnNl
LmdldCgpKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRGYWlsU29ja2V0U3RyZWFt
KCp0aGlzLCBTb2NrZXRTdHJlYW1FcnJvcihzdGF0aWNfY2FzdDxpbnQ+KHByb3h5UmVzcG9uc2VD
b2RlKSwgbV91cmwuc3RyaW5nKCksICJQcm94eSBjb25uZWN0aW9uIGNvdWxkIG5vdCBiZSBlc3Rh
Ymxpc2hlZCwgdW5leHBlY3RlZCByZXNwb25zZSBjb2RlIikpOworICAgICAgICAgICAgICAgICAg
ICBtX2NsaWVudC5kaWRGYWlsU29ja2V0U3RyZWFtKCp0aGlzLCBTb2NrZXRTdHJlYW1FcnJvcihz
dGF0aWNfY2FzdDxpbnQ+KHByb3h5UmVzcG9uc2VDb2RlKSwgbV91cmwuc3RyaW5nKCksICJQcm94
eSBjb25uZWN0aW9uIGNvdWxkIG5vdCBiZSBlc3RhYmxpc2hlZCwgdW5leHBlY3RlZCByZXNwb25z
ZSBjb2RlIikpOwogICAgICAgICAgICAgICAgICAgICBwbGF0Zm9ybUNsb3NlKCk7CiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBtX2Nvbm5lY3RpbmdTdWJzdGF0ZSA9IENvbm5lY3RlZDsKICAgICAgICAgICAg
IG1fc3RhdGUgPSBPcGVuOwotICAgICAgICAgICAgbV9jbGllbnQtPmRpZE9wZW5Tb2NrZXRTdHJl
YW0oKnRoaXMpOworICAgICAgICAgICAgbV9jbGllbnQuZGlkT3BlblNvY2tldFN0cmVhbSgqdGhp
cyk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBOb3QgYW4gImVsc2UgaWYiLCB3ZSBjb3VsZCBo
YXZlIG1hZGUgYSBjbGllbnQgY2FsbCBhYm92ZSwgYW5kIGl0IGNvdWxkIGNsb3NlIHRoZSBjb25u
ZWN0aW9uLgpAQCAtNTMzLDcgKzUzMyw3IEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpyZWFk
U3RyZWFtQ2FsbGIKICAgICAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgICAgICByZXR1cm47CiAK
LSAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKCp0aGlzLCByZWlu
dGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihwdHIpLCBsZW5ndGgpOworICAgICAgICBtX2NsaWVu
dC5kaWRSZWNlaXZlU29ja2V0U3RyZWFtRGF0YSgqdGhpcywgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBjaGFyKj4ocHRyKSwgbGVuZ3RoKTsKIAogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNTgz
LDcgKzU4Myw3IEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjp3cml0ZVN0cmVhbUNhbGwKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIG1fY29ubmVjdGluZ1N1YnN0YXRlID0gQ29ubmVjdGVk
OwogICAgICAgICAgICAgbV9zdGF0ZSA9IE9wZW47Ci0gICAgICAgICAgICBtX2NsaWVudC0+ZGlk
T3BlblNvY2tldFN0cmVhbSgqdGhpcyk7CisgICAgICAgICAgICBtX2NsaWVudC5kaWRPcGVuU29j
a2V0U3RyZWFtKCp0aGlzKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIE5vdCBhbiAiZWxzZSBp
ZiIsIHdlIGNvdWxkIGhhdmUgbWFkZSBhIGNsaWVudCBjYWxsIGFib3ZlLCBhbmQgaXQgY291bGQg
Y2xvc2UgdGhlIGNvbm5lY3Rpb24uCkBAIC02MzYsNyArNjM2LDcgQEAgdm9pZCBTb2NrZXRTdHJl
YW1IYW5kbGU6OnJlcG9ydEVycm9yVG9DbAogICAgICAgICBkZXNjcmlwdGlvbiA9IFN0cmluZyhk
ZXNjcmlwdGlvbkNGLmdldCgpKTsKICAgICB9CiAKLSAgICBtX2NsaWVudC0+ZGlkRmFpbFNvY2tl
dFN0cmVhbSgqdGhpcywgU29ja2V0U3RyZWFtRXJyb3Ioc3RhdGljX2Nhc3Q8aW50PihlcnJvckNv
ZGUpLCBtX3VybC5zdHJpbmcoKSwgZGVzY3JpcHRpb24pKTsKKyAgICBtX2NsaWVudC5kaWRGYWls
U29ja2V0U3RyZWFtKCp0aGlzLCBTb2NrZXRTdHJlYW1FcnJvcihzdGF0aWNfY2FzdDxpbnQ+KGVy
cm9yQ29kZSksIG1fdXJsLnN0cmluZygpLCBkZXNjcmlwdGlvbikpOwogfQogCiBTb2NrZXRTdHJl
YW1IYW5kbGU6On5Tb2NrZXRTdHJlYW1IYW5kbGUoKQpAQCAtNjY0LDcgKzY2NCw3IEBAIHZvaWQg
U29ja2V0U3RyZWFtSGFuZGxlOjpwbGF0Zm9ybUNsb3NlKCkKICAgICBBU1NFUlQoIW1fcmVhZFN0
cmVhbSA9PSAhbV93cml0ZVN0cmVhbSk7CiAgICAgaWYgKCFtX3JlYWRTdHJlYW0pIHsKICAgICAg
ICAgaWYgKG1fY29ubmVjdGluZ1N1YnN0YXRlID09IE5ldyB8fCBtX2Nvbm5lY3RpbmdTdWJzdGF0
ZSA9PSBFeGVjdXRpbmdQQUNGaWxlKQotICAgICAgICAgICAgbV9jbGllbnQtPmRpZENsb3NlU29j
a2V0U3RyZWFtKCp0aGlzKTsKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZENsb3NlU29ja2V0U3Ry
ZWFtKCp0aGlzKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjgyLDcgKzY4Miw3IEBA
IHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpwbGF0Zm9ybUNsb3NlKCkKICAgICBtX3JlYWRTdHJl
YW0gPSAwOwogICAgIG1fd3JpdGVTdHJlYW0gPSAwOwogCi0gICAgbV9jbGllbnQtPmRpZENsb3Nl
U29ja2V0U3RyZWFtKCp0aGlzKTsKKyAgICBtX2NsaWVudC5kaWRDbG9zZVNvY2tldFN0cmVhbSgq
dGhpcyk7CiB9CiAKIHVuc2lnbmVkIHNob3J0IFNvY2tldFN0cmVhbUhhbmRsZTo6cG9ydCgpIGNv
bnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3Ry
ZWFtSGFuZGxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZS5oCShyZXZpc2lvbiAyMDI5OTQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTUxLDEyICs1MSwxMiBAQCBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGVDbGll
bnQ7CiAKIGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxTb2NrZXRTdHJlYW1IYW5kbGU+LCBwdWJsaWMgU29ja2V0U3RyZWFtSGFuZGxlQmFzZSB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTb2NrZXRTdHJlYW1IYW5kbGU+IGNyZWF0ZShjb25z
dCBVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50KiBjbGllbnQsIE5ldHdvcmtpbmdD
b250ZXh0JiwgYm9vbCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTb2NrZXRTdHJlYW1IYW5kbGUo
dXJsLCBjbGllbnQpKTsgfQorICAgIHN0YXRpYyBSZWY8U29ja2V0U3RyZWFtSGFuZGxlPiBjcmVh
dGUoY29uc3QgVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYgY2xpZW50LCBOZXR3
b3JraW5nQ29udGV4dCYsIGJvb2wpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU29ja2V0U3RyZWFt
SGFuZGxlKHVybCwgY2xpZW50KSk7IH0KIAogICAgIHZpcnR1YWwgflNvY2tldFN0cmVhbUhhbmRs
ZSgpOwogCiBwcml2YXRlOgotICAgIFNvY2tldFN0cmVhbUhhbmRsZShjb25zdCBVUkwmLCBTb2Nr
ZXRTdHJlYW1IYW5kbGVDbGllbnQqKTsKKyAgICBTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgVVJM
JiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Jik7CiAKICAgICBpbnQgcGxhdGZvcm1TZW5kKGNv
bnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgcGxhdGZvcm1D
bG9zZSgpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL1NvY2tldFN0cmVhbUhhbmRsZUN1cmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVDdXJsLmNwcAkocmV2
aXNpb24gMjAyOTk0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Nv
Y2tldFN0cmVhbUhhbmRsZUN1cmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MiwxMCArNDIsMTAg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Tb2NrZXRTdHJlYW1IYW5kbGU6OlNvY2tldFN0
cmVhbUhhbmRsZShjb25zdCBVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50KiBjbGll
bnQpCitTb2NrZXRTdHJlYW1IYW5kbGU6OlNvY2tldFN0cmVhbUhhbmRsZShjb25zdCBVUkwmIHVy
bCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiBjbGllbnQpCiAgICAgOiBTb2NrZXRTdHJlYW1I
YW5kbGVCYXNlKHVybCwgY2xpZW50KQogewotICAgIExPRyhOZXR3b3JrLCAiU29ja2V0U3RyZWFt
SGFuZGxlICVwIG5ldyBjbGllbnQgJXAiLCB0aGlzLCBtX2NsaWVudCk7CisgICAgTE9HKE5ldHdv
cmssICJTb2NrZXRTdHJlYW1IYW5kbGUgJXAgbmV3IGNsaWVudCAlcCIsIHRoaXMsICZtX2NsaWVu
dCk7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBzdGFydFRocmVhZCgpOwogfQpA
QCAtODAsOCArODAsNyBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6cGxhdGZvcm1DbG9zZSgp
CiAKICAgICBzdG9wVGhyZWFkKCk7CiAKLSAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xp
ZW50LT5kaWRDbG9zZVNvY2tldFN0cmVhbSgqdGhpcyk7CisgICAgbV9jbGllbnQuZGlkQ2xvc2VT
b2NrZXRTdHJlYW0oKnRoaXMpOwogfQogCiBib29sIFNvY2tldFN0cmVhbUhhbmRsZTo6cmVhZERh
dGEoQ1VSTCogY3VybEhhbmRsZSkKQEAgLTI1Niw4ICsyNTUsOCBAQCB2b2lkIFNvY2tldFN0cmVh
bUhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEoCiAKICAgICBmb3IgKGF1dG8mIHNvY2tldERhdGEgOiBy
ZWNlaXZlRGF0YSkgewogICAgICAgICBpZiAoc29ja2V0RGF0YS5zaXplID4gMCkgewotICAgICAg
ICAgICAgaWYgKG1fY2xpZW50ICYmIHN0YXRlKCkgPT0gT3BlbikKLSAgICAgICAgICAgICAgICBt
X2NsaWVudC0+ZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoKnRoaXMsIHNvY2tldERhdGEuZGF0
YS5nZXQoKSwgc29ja2V0RGF0YS5zaXplKTsKKyAgICAgICAgICAgIGlmIChzdGF0ZSgpID09IE9w
ZW4pCisgICAgICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEo
KnRoaXMsIHNvY2tldERhdGEuZGF0YS5nZXQoKSwgc29ja2V0RGF0YS5zaXplKTsKICAgICAgICAg
fSBlbHNlCiAgICAgICAgICAgICBwbGF0Zm9ybUNsb3NlKCk7CiAgICAgfQpAQCAtMjY5LDggKzI2
OCw3IEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpkaWRPcGVuU29ja2V0KCkKIAogICAgIG1f
c3RhdGUgPSBPcGVuOwogCi0gICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+ZGlk
T3BlblNvY2tldFN0cmVhbSgqdGhpcyk7CisgICAgbV9jbGllbnQuZGlkT3BlblNvY2tldFN0cmVh
bSgqdGhpcyk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxjaGFyW10+IFNvY2tldFN0cmVhbUhhbmRs
ZTo6Y3JlYXRlQ29weShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJl
YW1IYW5kbGUuaAkocmV2aXNpb24gMjAyOTk0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCwx
NCArNDgsMTQgQEAgY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50OwogCiBjbGFzcyBTb2Nr
ZXRTdHJlYW1IYW5kbGUgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxTb2NrZXRTdHJlYW1IYW5k
bGU+LCBwdWJsaWMgU29ja2V0U3RyZWFtSGFuZGxlQmFzZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZjxTb2NrZXRTdHJlYW1IYW5kbGU+IGNyZWF0ZShjb25zdCBVUkwmIHVybCwgU29ja2V0U3Ry
ZWFtSGFuZGxlQ2xpZW50KiBjbGllbnQsIE5ldHdvcmtpbmdDb250ZXh0JiwgYm9vbCkgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTb2NrZXRTdHJlYW1IYW5kbGUodXJsLCBjbGllbnQpKTsgfQotICAg
IHN0YXRpYyBSZWY8U29ja2V0U3RyZWFtSGFuZGxlPiBjcmVhdGUoR1NvY2tldENvbm5lY3Rpb24q
IHNvY2tldENvbm5lY3Rpb24sIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCogY2xpZW50KSB7IHJl
dHVybiBhZG9wdFJlZigqbmV3IFNvY2tldFN0cmVhbUhhbmRsZShzb2NrZXRDb25uZWN0aW9uLCBj
bGllbnQpKTsgfQorICAgIHN0YXRpYyBSZWY8U29ja2V0U3RyZWFtSGFuZGxlPiBjcmVhdGUoY29u
c3QgVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYgY2xpZW50LCBOZXR3b3JraW5n
Q29udGV4dCYsIGJvb2wpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU29ja2V0U3RyZWFtSGFuZGxl
KHVybCwgY2xpZW50KSk7IH0KKyAgICBzdGF0aWMgUmVmPFNvY2tldFN0cmVhbUhhbmRsZT4gY3Jl
YXRlKEdTb2NrZXRDb25uZWN0aW9uKiBzb2NrZXRDb25uZWN0aW9uLCBTb2NrZXRTdHJlYW1IYW5k
bGVDbGllbnQmIGNsaWVudCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTb2NrZXRTdHJlYW1IYW5k
bGUoc29ja2V0Q29ubmVjdGlvbiwgY2xpZW50KSk7IH0KIAogICAgIHZpcnR1YWwgflNvY2tldFN0
cmVhbUhhbmRsZSgpOwogCiBwcml2YXRlOgotICAgIFNvY2tldFN0cmVhbUhhbmRsZShjb25zdCBV
UkwmLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqKTsKLSAgICBTb2NrZXRTdHJlYW1IYW5kbGUo
R1NvY2tldENvbm5lY3Rpb24qLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqKTsKKyAgICBTb2Nr
ZXRTdHJlYW1IYW5kbGUoY29uc3QgVVJMJiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Jik7Cisg
ICAgU29ja2V0U3RyZWFtSGFuZGxlKEdTb2NrZXRDb25uZWN0aW9uKiwgU29ja2V0U3RyZWFtSGFu
ZGxlQ2xpZW50Jik7CiAKICAgICBpbnQgcGxhdGZvcm1TZW5kKGNvbnN0IGNoYXIqIGRhdGEsIGlu
dCBsZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgcGxhdGZvcm1DbG9zZSgpIG92ZXJyaWRlOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhh
bmRsZVNvdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVTb3VwLmNwcAkocmV2aXNpb24gMjAyOTk0KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZVNv
dXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCwxMSArNDgsMTEgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1Tb2NrZXRTdHJlYW1IYW5kbGU6OlNvY2tldFN0cmVhbUhhbmRsZShjb25zdCBV
UkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50KiBjbGllbnQpCitTb2NrZXRTdHJlYW1I
YW5kbGU6OlNvY2tldFN0cmVhbUhhbmRsZShjb25zdCBVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFu
ZGxlQ2xpZW50JiBjbGllbnQpCiAgICAgOiBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlKHVybCwgY2xp
ZW50KQogICAgICwgbV9jYW5jZWxsYWJsZShhZG9wdEdSZWYoZ19jYW5jZWxsYWJsZV9uZXcoKSkp
CiB7Ci0gICAgTE9HKE5ldHdvcmssICJTb2NrZXRTdHJlYW1IYW5kbGUgJXAgbmV3IGNsaWVudCAl
cCIsIHRoaXMsIG1fY2xpZW50KTsKKyAgICBMT0coTmV0d29yaywgIlNvY2tldFN0cmVhbUhhbmRs
ZSAlcCBuZXcgY2xpZW50ICVwIiwgdGhpcywgJm1fY2xpZW50KTsKICAgICB1bnNpZ25lZCBwb3J0
ID0gdXJsLmhhc1BvcnQoKSA/IHVybC5wb3J0KCkgOiAodXJsLnByb3RvY29sSXMoIndzcyIpID8g
NDQzIDogODApOwogCiAgICAgR1JlZlB0cjxHU29ja2V0Q2xpZW50PiBzb2NrZXRDbGllbnQgPSBh
ZG9wdEdSZWYoZ19zb2NrZXRfY2xpZW50X25ldygpKTsKQEAgLTY0LDExICs2NCwxMSBAQCBTb2Nr
ZXRTdHJlYW1IYW5kbGU6OlNvY2tldFN0cmVhbUhhbmRsZShjCiAgICAgICAgIHJlaW50ZXJwcmV0
X2Nhc3Q8R0FzeW5jUmVhZHlDYWxsYmFjaz4oY29ubmVjdGVkQ2FsbGJhY2spLCBwcm90ZWN0ZWRU
aGlzLmxlYWtSZWYoKSk7CiB9CiAKLVNvY2tldFN0cmVhbUhhbmRsZTo6U29ja2V0U3RyZWFtSGFu
ZGxlKEdTb2NrZXRDb25uZWN0aW9uKiBzb2NrZXRDb25uZWN0aW9uLCBTb2NrZXRTdHJlYW1IYW5k
bGVDbGllbnQqIGNsaWVudCkKK1NvY2tldFN0cmVhbUhhbmRsZTo6U29ja2V0U3RyZWFtSGFuZGxl
KEdTb2NrZXRDb25uZWN0aW9uKiBzb2NrZXRDb25uZWN0aW9uLCBTb2NrZXRTdHJlYW1IYW5kbGVD
bGllbnQmIGNsaWVudCkKICAgICA6IFNvY2tldFN0cmVhbUhhbmRsZUJhc2UoVVJMKCksIGNsaWVu
dCkKICAgICAsIG1fY2FuY2VsbGFibGUoYWRvcHRHUmVmKGdfY2FuY2VsbGFibGVfbmV3KCkpKQog
ewotICAgIExPRyhOZXR3b3JrLCAiU29ja2V0U3RyZWFtSGFuZGxlICVwIG5ldyBjbGllbnQgJXAi
LCB0aGlzLCBtX2NsaWVudCk7CisgICAgTE9HKE5ldHdvcmssICJTb2NrZXRTdHJlYW1IYW5kbGUg
JXAgbmV3IGNsaWVudCAlcCIsIHRoaXMsICZtX2NsaWVudCk7CiAgICAgR1JlZlB0cjxHU29ja2V0
Q29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IHNvY2tldENvbm5lY3Rpb247CiAgICAgY29ubmVjdGVk
KFdURk1vdmUoY29ubmVjdGlvbikpOwogfQpAQCAtNzYsNyArNzYsNiBAQCBTb2NrZXRTdHJlYW1I
YW5kbGU6OlNvY2tldFN0cmVhbUhhbmRsZShHCiBTb2NrZXRTdHJlYW1IYW5kbGU6On5Tb2NrZXRT
dHJlYW1IYW5kbGUoKQogewogICAgIExPRyhOZXR3b3JrLCAiU29ja2V0U3RyZWFtSGFuZGxlICVw
IGRlbGV0ZSIsIHRoaXMpOwotICAgIHNldENsaWVudChudWxscHRyKTsKIH0KIAogdm9pZCBTb2Nr
ZXRTdHJlYW1IYW5kbGU6OmNvbm5lY3RlZChHUmVmUHRyPEdTb2NrZXRDb25uZWN0aW9uPiYmIHNv
Y2tldENvbm5lY3Rpb24pCkBAIC05MSw3ICs5MCw3IEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxl
Ojpjb25uZWN0ZWQoR1JlZlAKICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxHQXN5bmNSZWFkeUNh
bGxiYWNrPihyZWFkUmVhZHlDYWxsYmFjayksIHByb3RlY3RlZFRoaXMubGVha1JlZigpKTsKIAog
ICAgIG1fc3RhdGUgPSBPcGVuOwotICAgIG1fY2xpZW50LT5kaWRPcGVuU29ja2V0U3RyZWFtKCp0
aGlzKTsKKyAgICBtX2NsaWVudC5kaWRPcGVuU29ja2V0U3RyZWFtKCp0aGlzKTsKIH0KIAogdm9p
ZCBTb2NrZXRTdHJlYW1IYW5kbGU6OmNvbm5lY3RlZENhbGxiYWNrKEdTb2NrZXRDbGllbnQqIGNs
aWVudCwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIFNvY2tldFN0cmVhbUhhbmRsZSogaGFuZGxlKQpA
QCAtMTI0LDcgKzEyMyw3IEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpyZWFkQnl0ZXMoZ3Nz
aXoKIAogICAgIC8vIFRoZSBjbGllbnQgY2FuIGNsb3NlIHRoZSBoYW5kbGUsIHBvdGVudGlhbGx5
IHJlbW92aW5nIHRoZSBsYXN0IHJlZmVyZW5jZS4KICAgICBSZWZQdHI8U29ja2V0U3RyZWFtSGFu
ZGxlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlU29ja2V0
U3RyZWFtRGF0YSgqdGhpcywgbV9yZWFkQnVmZmVyLmdldCgpLCBieXRlc1JlYWQpOworICAgIG1f
Y2xpZW50LmRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKCp0aGlzLCBtX3JlYWRCdWZmZXIuZ2V0
KCksIGJ5dGVzUmVhZCk7CiAgICAgaWYgKG1faW5wdXRTdHJlYW0pIHsKICAgICAgICAgZ19pbnB1
dF9zdHJlYW1fcmVhZF9hc3luYyhtX2lucHV0U3RyZWFtLmdldCgpLCBtX3JlYWRCdWZmZXIuZ2V0
KCksIFJFQURfQlVGRkVSX1NJWkUsIEdfUFJJT1JJVFlfREVGQVVMVCwgbV9jYW5jZWxsYWJsZS5n
ZXQoKSwKICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8R0FzeW5jUmVhZHlDYWxsYmFjaz4o
cmVhZFJlYWR5Q2FsbGJhY2spLCBwcm90ZWN0ZWRUaGlzLmxlYWtSZWYoKSk7CkBAIC0xNTAsNyAr
MTQ5LDcgQEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGU6OnJlYWRSZWFkeUNhbGxiYQogCiB2b2lk
IFNvY2tldFN0cmVhbUhhbmRsZTo6ZGlkRmFpbChTb2NrZXRTdHJlYW1FcnJvciYmIGVycm9yKQog
ewotICAgIG1fY2xpZW50LT5kaWRGYWlsU29ja2V0U3RyZWFtKCp0aGlzLCBXVEZNb3ZlKGVycm9y
KSk7CisgICAgbV9jbGllbnQuZGlkRmFpbFNvY2tldFN0cmVhbSgqdGhpcywgV1RGTW92ZShlcnJv
cikpOwogfQogCiB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6d3JpdGVSZWFkeSgpCkBAIC0yMDcs
NyArMjA2LDcgQEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGU6OnBsYXRmb3JtQ2xvc2UoKQogICAg
IG1faW5wdXRTdHJlYW0gPSBudWxscHRyOwogICAgIG1fcmVhZEJ1ZmZlciA9IG51bGxwdHI7CiAK
LSAgICBtX2NsaWVudC0+ZGlkQ2xvc2VTb2NrZXRTdHJlYW0oKnRoaXMpOworICAgIG1fY2xpZW50
LmRpZENsb3NlU29ja2V0U3RyZWFtKCp0aGlzKTsKIH0KIAogdm9pZCBTb2NrZXRTdHJlYW1IYW5k
bGU6OmJlZ2luV2FpdGluZ0ZvclNvY2tldFdyaXRhYmlsaXR5KCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283608</attachid>
            <date>2016-07-13 23:51:29 -0700</date>
            <delta_ts>2016-07-14 00:06:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159750-20160713235047.patch</filename>
            <type>text/plain</type>
            <size>27468</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMzIxNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYyIEBACisyMDE2LTA3LTEzICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW9kZXJuaXpl
IFdlYlNvY2tldCBoYW5kbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1OTc1MAorCisgICAgICAgIFJldmlld2VkIGJ5IEJyYWR5IEVpZHNvbi4KKwor
ICAgICAgICBObyBuZXcgdGVzdHMuICBObyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisgICAgICAgIFRo
aXMgcGF0Y2gganVzdCByZW1vdmVzIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpJbnZhbGlk
TWVzc2FnZSB3aGljaCBpcyBuZXZlciB1c2VkCisgICAgICAgIGFuZCBtYWtlcyBvdXIgdXNlIG9m
IFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCBhIHJlZmVyZW5jZSBpbnN0ZWFkIG9mIGEgcG9pbnRl
ci4KKworICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbC5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpzZW5kKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRD
aGFubmVsOjpjb25uZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVh
bUhhbmRsZUJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlQmFz
ZTo6U29ja2V0U3RyZWFtSGFuZGxlQmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJl
YW1IYW5kbGVCYXNlOjpzZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRs
ZUJhc2U6OmRpc2Nvbm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxl
QmFzZTo6c2VuZFBlbmRpbmdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhh
bmRsZUJhc2U6OnNldENsaWVudCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9Tb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJl
YW1IYW5kbGVCYXNlOjp+U29ja2V0U3RyZWFtSGFuZGxlQmFzZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTb2NrZXRTdHJlYW1IYW5kbGVCYXNlOjpidWZmZXJlZEFtb3VudCk6CisgICAgICAgIChXZWJD
b3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVCYXNlOjpjbGllbnQpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlLmg6CisgICAgICAgIChXZWJDb3JlOjpTb2Nr
ZXRTdHJlYW1IYW5kbGU6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9T
b2NrZXRTdHJlYW1IYW5kbGVDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJl
YW1IYW5kbGU6OlNvY2tldFN0cmVhbUhhbmRsZSk6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRT
dHJlYW1IYW5kbGU6OmFkZENPTk5FQ1RDcmVkZW50aWFscyk6CisgICAgICAgIChXZWJDb3JlOjpT
b2NrZXRTdHJlYW1IYW5kbGU6OmNvcHlDRlN0cmVhbURlc2NyaXB0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZTo6cmVhZFN0cmVhbUNhbGxiYWNrKToKKyAgICAgICAg
KFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZTo6d3JpdGVTdHJlYW1DYWxsYmFjayk6CisgICAg
ICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGU6OnJlcG9ydEVycm9yVG9DbGllbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlOjp+U29ja2V0U3RyZWFtSGFuZGxl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZTo6cGxhdGZvcm1DbG9zZSk6
CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGU6OnBvcnQpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGUuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlQ3VybC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTb2NrZXRTdHJlYW1IYW5kbGU6OlNvY2tldFN0cmVhbUhhbmRsZSk6CisgICAgICAgIChXZWJD
b3JlOjpTb2NrZXRTdHJlYW1IYW5kbGU6OnBsYXRmb3JtQ2xvc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6U29ja2V0U3RyZWFtSGFuZGxlOjpyZWFkRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTb2Nr
ZXRTdHJlYW1IYW5kbGU6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tl
dFN0cmVhbUhhbmRsZTo6ZGlkT3BlblNvY2tldCk6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRT
dHJlYW1IYW5kbGU6OmNyZWF0ZUNvcHkpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291
cC9Tb2NrZXRTdHJlYW1IYW5kbGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
U29ja2V0U3RyZWFtSGFuZGxlU291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJl
YW1IYW5kbGU6OlNvY2tldFN0cmVhbUhhbmRsZSk6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRT
dHJlYW1IYW5kbGU6On5Tb2NrZXRTdHJlYW1IYW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6U29j
a2V0U3RyZWFtSGFuZGxlOjpjb25uZWN0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3Ry
ZWFtSGFuZGxlOjpjb25uZWN0ZWRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRT
dHJlYW1IYW5kbGU6OnJlYWRCeXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1I
YW5kbGU6OmRpZEZhaWwpOgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlOjp3
cml0ZVJlYWR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZTo6cGxhdGZv
cm1DbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGU6OmJlZ2luV2Fp
dGluZ0ZvclNvY2tldFdyaXRhYmlsaXR5KToKKwogMjAxNi0wNy0xMyAgQ2FybG9zIEdhcmNpYSBD
YW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dMaWJdIFVzZSBhIEdTb3Vy
Y2UgaW5zdGVhZCBvZiBhIHRocmVhZCB0byBwb2xsIG1lbW9yeSBwcmVzc3VyZSBldmVudEZEIGlu
IGxpbnV4IGltcGxlbWVudGF0aW9uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNv
Y2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaAko
cmV2aXNpb24gMjAzMjE2KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1Ro
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDggKzU0LDcg
QEAgcHVibGljOgogCiAgICAgZW51bSBTZW5kUmVzdWx0IHsKICAgICAgICAgU2VuZFN1Y2Nlc3Ms
Ci0gICAgICAgIFNlbmRGYWlsLAotICAgICAgICBJbnZhbGlkTWVzc2FnZQorICAgICAgICBTZW5k
RmFpbAogICAgIH07CiAKICAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdChjb25zdCBVUkwmLCBjb25z
dCBTdHJpbmcmIHByb3RvY29sKSA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnNvY2tldHMvV2ViU29ja2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAkocmV2aXNpb24gMjAzMjE2KQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMzOCwxMiArMzM4LDcgQEAgdm9pZCBXZWJTb2NrZXQ6OnNlbmQoY29uc3QgU3RyaW5nJiBt
ZXNzYQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIEFTU0VSVChtX2NoYW5uZWwpOwotICAg
IFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IHJlc3VsdCA9IG1fY2hhbm5l
bC0+c2VuZChtZXNzYWdlKTsKLSAgICBpZiAocmVzdWx0ID09IFRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsOjpJbnZhbGlkTWVzc2FnZSkgewotICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVy
cm9yLCBBU0NJSUxpdGVyYWwoIldlYnNvY2tldCBtZXNzYWdlIGNvbnRhaW5zIGludmFsaWQgY2hh
cmFjdGVyKHMpLiIpKTsKLSAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwotICAgICAgICByZXR1cm47
Ci0gICAgfQorICAgIG1fY2hhbm5lbC0+c2VuZChtZXNzYWdlKTsKIH0KIAogdm9pZCBXZWJTb2Nr
ZXQ6OnNlbmQoQXJyYXlCdWZmZXImIGJpbmFyeURhdGEsIEV4Y2VwdGlvbkNvZGUmIGVjKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRDaGFubmVsLmNwcAkocmV2aXNpb24gMjAzMjE2KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Nyw3
ICs5Nyw3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6Y29ubmVjdChjb25zdCBVUkwKICAgICAg
ICAgaWYgKE5ldHdvcmtpbmdDb250ZXh0KiBuZXR3b3JraW5nQ29udGV4dCA9IGZyYW1lLT5sb2Fk
ZXIoKS5uZXR3b3JraW5nQ29udGV4dCgpKSB7CiAgICAgICAgICAgICByZWYoKTsKICAgICAgICAg
ICAgIFBhZ2UqIHBhZ2UgPSBmcmFtZS0+cGFnZSgpOwotICAgICAgICAgICAgbV9oYW5kbGUgPSBT
b2NrZXRTdHJlYW1IYW5kbGU6OmNyZWF0ZShtX2hhbmRzaGFrZS0+dXJsKCksIHRoaXMsICpuZXR3
b3JraW5nQ29udGV4dCwgKHBhZ2UgPyBwYWdlLT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpIDogZmFs
c2UpKTsKKyAgICAgICAgICAgIG1faGFuZGxlID0gU29ja2V0U3RyZWFtSGFuZGxlOjpjcmVhdGUo
bV9oYW5kc2hha2UtPnVybCgpLCAqdGhpcywgKm5ldHdvcmtpbmdDb250ZXh0LCAocGFnZSA/IHBh
Z2UtPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkgOiBmYWxzZSkpOwogICAgICAgICB9CiAgICAgfQog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5k
bGVCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1NvY2tldFN0cmVhbUhhbmRsZUJhc2UuY3BwCShyZXZpc2lvbiAyMDMyMTYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUJhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY29uc3Qg
dW5zaWduZWQgaW50IGJ1ZmZlclNpemUgPSAxMDAgKiAxMDI0ICogMTAyNDsKIAotU29ja2V0U3Ry
ZWFtSGFuZGxlQmFzZTo6U29ja2V0U3RyZWFtSGFuZGxlQmFzZShjb25zdCBVUkwmIHVybCwgU29j
a2V0U3RyZWFtSGFuZGxlQ2xpZW50KiBjbGllbnQpCitTb2NrZXRTdHJlYW1IYW5kbGVCYXNlOjpT
b2NrZXRTdHJlYW1IYW5kbGVCYXNlKGNvbnN0IFVSTCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5kbGVD
bGllbnQmIGNsaWVudCkKICAgICA6IG1fdXJsKHVybCkKICAgICAsIG1fY2xpZW50KGNsaWVudCkK
ICAgICAsIG1fc3RhdGUoQ29ubmVjdGluZykKQEAgLTYwLDggKzYwLDcgQEAgYm9vbCBTb2NrZXRT
dHJlYW1IYW5kbGVCYXNlOjpzZW5kKGNvbnN0IAogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICB9CiAgICAgICAgIG1fYnVmZmVyLmFwcGVuZChkYXRhLCBsZW5ndGgpOwotICAgICAg
ICBpZiAobV9jbGllbnQpCi0gICAgICAgICAgICBtX2NsaWVudC0+ZGlkVXBkYXRlQnVmZmVyZWRB
bW91bnQoc3RhdGljX2Nhc3Q8U29ja2V0U3RyZWFtSGFuZGxlJj4oKnRoaXMpLCBidWZmZXJlZEFt
b3VudCgpKTsKKyAgICAgICAgbV9jbGllbnQuZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQoc3RhdGlj
X2Nhc3Q8U29ja2V0U3RyZWFtSGFuZGxlJj4oKnRoaXMpLCBidWZmZXJlZEFtb3VudCgpKTsKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIGludCBieXRlc1dyaXR0ZW4gPSAwOwpAQCAt
NzUsOCArNzQsNyBAQCBib29sIFNvY2tldFN0cmVhbUhhbmRsZUJhc2U6OnNlbmQoY29uc3QgCiAg
ICAgfQogICAgIGlmIChieXRlc1dyaXR0ZW4gPCBsZW5ndGgpIHsKICAgICAgICAgbV9idWZmZXIu
YXBwZW5kKGRhdGEgKyBieXRlc1dyaXR0ZW4sIGxlbmd0aCAtIGJ5dGVzV3JpdHRlbik7Ci0gICAg
ICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgICAgIG1fY2xpZW50LT5kaWRVcGRhdGVCdWZmZXJl
ZEFtb3VudChzdGF0aWNfY2FzdDxTb2NrZXRTdHJlYW1IYW5kbGUmPigqdGhpcyksIGJ1ZmZlcmVk
QW1vdW50KCkpOworICAgICAgICBtX2NsaWVudC5kaWRVcGRhdGVCdWZmZXJlZEFtb3VudChzdGF0
aWNfY2FzdDxTb2NrZXRTdHJlYW1IYW5kbGUmPigqdGhpcyksIGJ1ZmZlcmVkQW1vdW50KCkpOwog
ICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTk5LDEyICs5Nyw2IEBAIHZvaWQgU29ja2V0
U3RyZWFtSGFuZGxlQmFzZTo6ZGlzY29ubmVjdCgKICAgICBtX3N0YXRlID0gQ2xvc2VkOwogfQog
Ci12b2lkIFNvY2tldFN0cmVhbUhhbmRsZUJhc2U6OnNldENsaWVudChTb2NrZXRTdHJlYW1IYW5k
bGVDbGllbnQqIGNsaWVudCkKLXsKLSAgICBBU1NFUlQoIWNsaWVudCB8fCAoIW1fY2xpZW50ICYm
IG1fc3RhdGUgPT0gQ29ubmVjdGluZykpOwotICAgIG1fY2xpZW50ID0gY2xpZW50OwotfQotCiBi
b29sIFNvY2tldFN0cmVhbUhhbmRsZUJhc2U6OnNlbmRQZW5kaW5nRGF0YSgpCiB7CiAgICAgaWYg
KG1fc3RhdGUgIT0gT3BlbiAmJiBtX3N0YXRlICE9IENsb3NpbmcpCkBAIC0xMjYsOCArMTE4LDcg
QEAgYm9vbCBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlOjpzZW5kUGVuZGluZwogICAgICAgICBBU1NF
UlQobV9idWZmZXIuc2l6ZSgpIC0gYnl0ZXNXcml0dGVuIDw9IGJ1ZmZlclNpemUpOwogICAgICAg
ICBtX2J1ZmZlci5jb25zdW1lKGJ5dGVzV3JpdHRlbik7CiAgICAgfSB3aGlsZSAoIXBlbmRpbmcg
JiYgIW1fYnVmZmVyLmlzRW1wdHkoKSk7Ci0gICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2Ns
aWVudC0+ZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQoc3RhdGljX2Nhc3Q8U29ja2V0U3RyZWFtSGFu
ZGxlJj4oKnRoaXMpLCBidWZmZXJlZEFtb3VudCgpKTsKKyAgICBtX2NsaWVudC5kaWRVcGRhdGVC
dWZmZXJlZEFtb3VudChzdGF0aWNfY2FzdDxTb2NrZXRTdHJlYW1IYW5kbGUmPigqdGhpcyksIGJ1
ZmZlcmVkQW1vdW50KCkpOwogICAgIHJldHVybiB0cnVlOwogfQogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUJhc2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUJh
c2UuaAkocmV2aXNpb24gMjAzMjE2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9Tb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDM0ICszNiwz
MyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBTb2NrZXRTdHJlYW1IYW5k
bGU7Ci0gICAgY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50OworY2xhc3MgU29ja2V0U3Ry
ZWFtSGFuZGxlOworY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50OwogCi0gICAgY2xhc3Mg
U29ja2V0U3RyZWFtSGFuZGxlQmFzZSB7Ci0gICAgcHVibGljOgotICAgICAgICBlbnVtIFNvY2tl
dFN0cmVhbVN0YXRlIHsgQ29ubmVjdGluZywgT3BlbiwgQ2xvc2luZywgQ2xvc2VkIH07Ci0gICAg
ICAgIHZpcnR1YWwgflNvY2tldFN0cmVhbUhhbmRsZUJhc2UoKSB7IH0KLSAgICAgICAgU29ja2V0
U3RyZWFtU3RhdGUgc3RhdGUoKSBjb25zdDsKLQotICAgICAgICBib29sIHNlbmQoY29uc3QgY2hh
ciogZGF0YSwgaW50IGxlbmd0aCk7Ci0gICAgICAgIHZvaWQgY2xvc2UoKTsgLy8gRGlzY29ubmVj
dCBhZnRlciBhbGwgZGF0YSBpbiBidWZmZXIgYXJlIHNlbnQuCi0gICAgICAgIHZvaWQgZGlzY29u
bmVjdCgpOwotICAgICAgICBzaXplX3QgYnVmZmVyZWRBbW91bnQoKSBjb25zdCB7IHJldHVybiBt
X2J1ZmZlci5zaXplKCk7IH0KLQotICAgICAgICBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqIGNs
aWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9Ci0gICAgICAgIHZvaWQgc2V0Q2xpZW50
KFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCopOwotCi0gICAgcHJvdGVjdGVkOgotICAgICAgICBT
b2NrZXRTdHJlYW1IYW5kbGVCYXNlKGNvbnN0IFVSTCYsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVu
dCopOwotCi0gICAgICAgIGJvb2wgc2VuZFBlbmRpbmdEYXRhKCk7Ci0gICAgICAgIHZpcnR1YWwg
aW50IHBsYXRmb3JtU2VuZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKSA9IDA7Ci0gICAg
ICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNsb3NlKCkgPSAwOwotCi0gICAgICAgIFVSTCBtX3Vy
bDsKLSAgICAgICAgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50KiBtX2NsaWVudDsKLSAgICAgICAg
U3RyZWFtQnVmZmVyPGNoYXIsIDEwMjQgKiAxMDI0PiBtX2J1ZmZlcjsKLSAgICAgICAgU29ja2V0
U3RyZWFtU3RhdGUgbV9zdGF0ZTsKLSAgICB9OworY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlQmFz
ZSB7CitwdWJsaWM6CisgICAgZW51bSBTb2NrZXRTdHJlYW1TdGF0ZSB7IENvbm5lY3RpbmcsIE9w
ZW4sIENsb3NpbmcsIENsb3NlZCB9OworICAgIHZpcnR1YWwgflNvY2tldFN0cmVhbUhhbmRsZUJh
c2UoKSB7IH0KKyAgICBTb2NrZXRTdHJlYW1TdGF0ZSBzdGF0ZSgpIGNvbnN0OworCisgICAgYm9v
bCBzZW5kKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpOworICAgIHZvaWQgY2xvc2UoKTsg
Ly8gRGlzY29ubmVjdCBhZnRlciBhbGwgZGF0YSBpbiBidWZmZXIgYXJlIHNlbnQuCisgICAgdm9p
ZCBkaXNjb25uZWN0KCk7CisgICAgc2l6ZV90IGJ1ZmZlcmVkQW1vdW50KCkgY29uc3QgeyByZXR1
cm4gbV9idWZmZXIuc2l6ZSgpOyB9CisKKyAgICBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQmIGNs
aWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9CisKK3Byb3RlY3RlZDoKKyAgICBTb2Nr
ZXRTdHJlYW1IYW5kbGVCYXNlKGNvbnN0IFVSTCYsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYp
OworCisgICAgYm9vbCBzZW5kUGVuZGluZ0RhdGEoKTsKKyAgICB2aXJ0dWFsIGludCBwbGF0Zm9y
bVNlbmQoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBwbGF0Zm9ybUNsb3NlKCkgPSAwOworCisgICAgVVJMIG1fdXJsOworICAgIFNvY2tldFN0cmVh
bUhhbmRsZUNsaWVudCYgbV9jbGllbnQ7CisgICAgU3RyZWFtQnVmZmVyPGNoYXIsIDEwMjQgKiAx
MDI0PiBtX2J1ZmZlcjsKKyAgICBTb2NrZXRTdHJlYW1TdGF0ZSBtX3N0YXRlOworfTsKIAogfSAg
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGUuaAkocmV2aXNpb24gMjAzMjE2
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5k
bGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBTb2NrZXRTdHJlYW1I
YW5kbGVDbGllbnQ7CiAKIGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZSA6IHB1YmxpYyBUaHJlYWRT
YWZlUmVmQ291bnRlZDxTb2NrZXRTdHJlYW1IYW5kbGU+LCBwdWJsaWMgU29ja2V0U3RyZWFtSGFu
ZGxlQmFzZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTb2NrZXRTdHJlYW1IYW5kbGU+IGNy
ZWF0ZShjb25zdCBVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50KiBjbGllbnQsIE5l
dHdvcmtpbmdDb250ZXh0JiBuZXR3b3JraW5nQ29udGV4dCwgYm9vbCB1c2VzRXBoZW1lcmFsU2Vz
c2lvbikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTb2NrZXRTdHJlYW1IYW5kbGUodXJsLCBjbGll
bnQsIG5ldHdvcmtpbmdDb250ZXh0LCB1c2VzRXBoZW1lcmFsU2Vzc2lvbikpOyB9CisgICAgc3Rh
dGljIFJlZjxTb2NrZXRTdHJlYW1IYW5kbGU+IGNyZWF0ZShjb25zdCBVUkwmIHVybCwgU29ja2V0
U3RyZWFtSGFuZGxlQ2xpZW50JiBjbGllbnQsIE5ldHdvcmtpbmdDb250ZXh0JiBuZXR3b3JraW5n
Q29udGV4dCwgYm9vbCB1c2VzRXBoZW1lcmFsU2Vzc2lvbikgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTb2NrZXRTdHJlYW1IYW5kbGUodXJsLCBjbGllbnQsIG5ldHdvcmtpbmdDb250ZXh0LCB1c2Vz
RXBoZW1lcmFsU2Vzc2lvbikpOyB9CiAKICAgICB2aXJ0dWFsIH5Tb2NrZXRTdHJlYW1IYW5kbGUo
KTsKIApAQCAtNTUsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgaW50IHBsYXRmb3Jt
U2VuZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKICAgICB2aXJ0dWFsIHZvaWQgcGxh
dGZvcm1DbG9zZSgpOwogCi0gICAgU29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0IFVSTCYsIFNvY2tl
dFN0cmVhbUhhbmRsZUNsaWVudCosIE5ldHdvcmtpbmdDb250ZXh0JiwgYm9vbCB1c2VzRXBoZW1l
cmFsU2Vzc2lvbik7CisgICAgU29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0IFVSTCYsIFNvY2tldFN0
cmVhbUhhbmRsZUNsaWVudCYsIE5ldHdvcmtpbmdDb250ZXh0JiwgYm9vbCB1c2VzRXBoZW1lcmFs
U2Vzc2lvbik7CiAgICAgdm9pZCBjcmVhdGVTdHJlYW1zKCk7CiAgICAgdm9pZCBzY2hlZHVsZVN0
cmVhbXMoKTsKICAgICB2b2lkIGNob29zZVByb3h5KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUNGTmV0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRs
ZUNGTmV0LmNwcAkocmV2aXNpb24gMjAzMjE2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVDRk5ldC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTY3LDE0ICs2NywxNCBAQCBleHRlcm4gIkMiIGNvbnN0IENGU3RyaW5nUmVmIF9rQ0ZTdHJlYW1T
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU29ja2V0U3RyZWFtSGFuZGxlOjpTb2NrZXRTdHJl
YW1IYW5kbGUoY29uc3QgVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCogY2xpZW50
LCBOZXR3b3JraW5nQ29udGV4dCYgbmV0d29ya2luZ0NvbnRleHQsIGJvb2wgdXNlc0VwaGVtZXJh
bFNlc3Npb24pCitTb2NrZXRTdHJlYW1IYW5kbGU6OlNvY2tldFN0cmVhbUhhbmRsZShjb25zdCBV
UkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiBjbGllbnQsIE5ldHdvcmtpbmdDb250
ZXh0JiBuZXR3b3JraW5nQ29udGV4dCwgYm9vbCB1c2VzRXBoZW1lcmFsU2Vzc2lvbikKICAgICA6
IFNvY2tldFN0cmVhbUhhbmRsZUJhc2UodXJsLCBjbGllbnQpCiAgICAgLCBtX2Nvbm5lY3RpbmdT
dWJzdGF0ZShOZXcpCiAgICAgLCBtX2Nvbm5lY3Rpb25UeXBlKFVua25vd24pCiAgICAgLCBtX3Nl
bnRTdG9yZWRDcmVkZW50aWFscyhmYWxzZSkKICAgICAsIG1fbmV0d29ya2luZ0NvbnRleHQobmV0
d29ya2luZ0NvbnRleHQpCiB7Ci0gICAgTE9HKE5ldHdvcmssICJTb2NrZXRTdHJlYW1IYW5kbGUg
JXAgbmV3IGNsaWVudCAlcCIsIHRoaXMsIG1fY2xpZW50KTsKKyAgICBMT0coTmV0d29yaywgIlNv
Y2tldFN0cmVhbUhhbmRsZSAlcCBuZXcgY2xpZW50ICVwIiwgdGhpcywgJm1fY2xpZW50KTsKIAog
ICAgIEFTU0VSVCh1cmwucHJvdG9jb2xJcygid3MiKSB8fCB1cmwucHJvdG9jb2xJcygid3NzIikp
OwogCkBAIC04Nyw3ICs4Nyw3IEBAIFNvY2tldFN0cmVhbUhhbmRsZTo6U29ja2V0U3RyZWFtSGFu
ZGxlKGMKICAgICBpZiAodXJsLnByb3RvY29sSXMoIndzIikKICAgICAgICAgJiYgIXVzZXNFcGhl
bWVyYWxTZXNzaW9uCiAgICAgICAgICYmIF9DRk5ldHdvcmtJc0tub3duSFNUU0hvc3RXaXRoU2Vz
c2lvbihtX2h0dHBzVVJMLmdldCgpLCBudWxscHRyKSkgewotICAgICAgICBtX2NsaWVudC0+ZGlk
RmFpbFNvY2tldFN0cmVhbSgqdGhpcywgU29ja2V0U3RyZWFtRXJyb3IoMCwgbV91cmwuc3RyaW5n
KCksICJXZWJTb2NrZXQgY29ubmVjdGlvbiBmYWlsZWQgYmVjYXVzZSBpdCB2aW9sYXRlcyBIVFRQ
IFN0cmljdCBUcmFuc3BvcnQgU2VjdXJpdHkuIikpOworICAgICAgICBtX2NsaWVudC5kaWRGYWls
U29ja2V0U3RyZWFtKCp0aGlzLCBTb2NrZXRTdHJlYW1FcnJvcigwLCBtX3VybC5zdHJpbmcoKSwg
IldlYlNvY2tldCBjb25uZWN0aW9uIGZhaWxlZCBiZWNhdXNlIGl0IHZpb2xhdGVzIEhUVFAgU3Ry
aWN0IFRyYW5zcG9ydCBTZWN1cml0eS4iKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5k
aWYKQEAgLTM4OCw3ICszODgsNyBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6YWRkQ09OTkVD
VENyZWRlCiAKICAgICBpZiAoIUNGSFRUUEF1dGhlbnRpY2F0aW9uUmVxdWlyZXNVc2VyTmFtZUFu
ZFBhc3N3b3JkKGF1dGhlbnRpY2F0aW9uLmdldCgpKSkgewogICAgICAgICAvLyBUaGF0J3MgYWxs
IHdlIGNhbiBvZmZlci4uLgotICAgICAgICBtX2NsaWVudC0+ZGlkRmFpbFNvY2tldFN0cmVhbSgq
dGhpcywgU29ja2V0U3RyZWFtRXJyb3IoMCwgbV91cmwuc3RyaW5nKCksICJQcm94eSBhdXRoZW50
aWNhdGlvbiBzY2hlbWUgaXMgbm90IHN1cHBvcnRlZCBmb3IgV2ViU29ja2V0cyIpKTsKKyAgICAg
ICAgbV9jbGllbnQuZGlkRmFpbFNvY2tldFN0cmVhbSgqdGhpcywgU29ja2V0U3RyZWFtRXJyb3Io
MCwgbV91cmwuc3RyaW5nKCksICJQcm94eSBhdXRoZW50aWNhdGlvbiBzY2hlbWUgaXMgbm90IHN1
cHBvcnRlZCBmb3IgV2ViU29ja2V0cyIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAt
Mzk5LDcgKzM5OSw3IEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjphZGRDT05ORUNUQ3JlZGUK
IAogICAgIGlmICghbWV0aG9kQ0YgfHwgIXJlYWxtQ0YpIHsKICAgICAgICAgLy8gVGhpcyBzaG91
bGRuJ3QgaGFwcGVuLCBidXQgb24gc29tZSBPUyB2ZXJzaW9ucyB3ZSBnZXQgaW5jb21wbGV0ZSBh
dXRoZW50aWNhdGlvbiBkYXRhLCBzZWUgPHJkYXI6Ly9wcm9ibGVtLzEwNDE2MzE2Pi4KLSAgICAg
ICAgbV9jbGllbnQtPmRpZEZhaWxTb2NrZXRTdHJlYW0oKnRoaXMsIFNvY2tldFN0cmVhbUVycm9y
KDAsIG1fdXJsLnN0cmluZygpLCAiV2ViU29ja2V0IHByb3h5IGF1dGhlbnRpY2F0aW9uIGNvdWxk
bid0IGJlIGhhbmRsZWQiKSk7CisgICAgICAgIG1fY2xpZW50LmRpZEZhaWxTb2NrZXRTdHJlYW0o
KnRoaXMsIFNvY2tldFN0cmVhbUVycm9yKDAsIG1fdXJsLnN0cmluZygpLCAiV2ViU29ja2V0IHBy
b3h5IGF1dGhlbnRpY2F0aW9uIGNvdWxkbid0IGJlIGhhbmRsZWQiKSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKQEAgLTQxOCw3ICs0MTgsNyBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6
YWRkQ09OTkVDVENyZWRlCiAKICAgICAgICAgaWYgKCFwcm94eUF1dGhvcml6YXRpb25TdHJpbmcp
IHsKICAgICAgICAgICAgIC8vIEZhaWxzIGUuZy4gZm9yIE5UTE0gYXV0aC4KLSAgICAgICAgICAg
IG1fY2xpZW50LT5kaWRGYWlsU29ja2V0U3RyZWFtKCp0aGlzLCBTb2NrZXRTdHJlYW1FcnJvcigw
LCBtX3VybC5zdHJpbmcoKSwgIlByb3h5IGF1dGhlbnRpY2F0aW9uIHNjaGVtZSBpcyBub3Qgc3Vw
cG9ydGVkIGZvciBXZWJTb2NrZXRzIikpOworICAgICAgICAgICAgbV9jbGllbnQuZGlkRmFpbFNv
Y2tldFN0cmVhbSgqdGhpcywgU29ja2V0U3RyZWFtRXJyb3IoMCwgbV91cmwuc3RyaW5nKCksICJQ
cm94eSBhdXRoZW50aWNhdGlvbiBzY2hlbWUgaXMgbm90IHN1cHBvcnRlZCBmb3IgV2ViU29ja2V0
cyIpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC00MzAsNyArNDMwLDcg
QEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGU6OmFkZENPTk5FQ1RDcmVkZQogCiAgICAgLy8gRklY
TUU6IE9uIHBsYXRmb3JtcyB3aGVyZSBBdXRoQnJva2VyQWdlbnQgaXMgbm90IGF2YWlsYWJsZSwg
YXNrIHRoZSBjbGllbnQgaWYgY3JlZGVudGlhbHMgY291bGQgbm90IGJlIGZvdW5kLgogCi0gICAg
bV9jbGllbnQtPmRpZEZhaWxTb2NrZXRTdHJlYW0oKnRoaXMsIFNvY2tldFN0cmVhbUVycm9yKDAs
IG1fdXJsLnN0cmluZygpLCAiUHJveHkgY3JlZGVudGlhbHMgYXJlIG5vdCBhdmFpbGFibGUiKSk7
CisgICAgbV9jbGllbnQuZGlkRmFpbFNvY2tldFN0cmVhbSgqdGhpcywgU29ja2V0U3RyZWFtRXJy
b3IoMCwgbV91cmwuc3RyaW5nKCksICJQcm94eSBjcmVkZW50aWFscyBhcmUgbm90IGF2YWlsYWJs
ZSIpKTsKIH0KIAogQ0ZTdHJpbmdSZWYgU29ja2V0U3RyZWFtSGFuZGxlOjpjb3B5Q0ZTdHJlYW1E
ZXNjcmlwdGlvbih2b2lkKiBpbmZvKQpAQCAtNTA1LDE0ICs1MDUsMTQgQEAgdm9pZCBTb2NrZXRT
dHJlYW1IYW5kbGU6OnJlYWRTdHJlYW1DYWxsYgogICAgICAgICAgICAgICAgICAgICBhZGRDT05O
RUNUQ3JlZGVudGlhbHMocHJveHlSZXNwb25zZS5nZXQoKSk7CiAgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICBt
X2NsaWVudC0+ZGlkRmFpbFNvY2tldFN0cmVhbSgqdGhpcywgU29ja2V0U3RyZWFtRXJyb3Ioc3Rh
dGljX2Nhc3Q8aW50Pihwcm94eVJlc3BvbnNlQ29kZSksIG1fdXJsLnN0cmluZygpLCAiUHJveHkg
Y29ubmVjdGlvbiBjb3VsZCBub3QgYmUgZXN0YWJsaXNoZWQsIHVuZXhwZWN0ZWQgcmVzcG9uc2Ug
Y29kZSIpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9jbGllbnQuZGlkRmFpbFNvY2tldFN0cmVh
bSgqdGhpcywgU29ja2V0U3RyZWFtRXJyb3Ioc3RhdGljX2Nhc3Q8aW50Pihwcm94eVJlc3BvbnNl
Q29kZSksIG1fdXJsLnN0cmluZygpLCAiUHJveHkgY29ubmVjdGlvbiBjb3VsZCBub3QgYmUgZXN0
YWJsaXNoZWQsIHVuZXhwZWN0ZWQgcmVzcG9uc2UgY29kZSIpKTsKICAgICAgICAgICAgICAgICAg
ICAgcGxhdGZvcm1DbG9zZSgpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgbV9jb25uZWN0aW5nU3Vic3Rh
dGUgPSBDb25uZWN0ZWQ7CiAgICAgICAgICAgICBtX3N0YXRlID0gT3BlbjsKLSAgICAgICAgICAg
IG1fY2xpZW50LT5kaWRPcGVuU29ja2V0U3RyZWFtKCp0aGlzKTsKKyAgICAgICAgICAgIG1fY2xp
ZW50LmRpZE9wZW5Tb2NrZXRTdHJlYW0oKnRoaXMpOwogICAgICAgICB9CiAKICAgICAgICAgLy8g
Tm90IGFuICJlbHNlIGlmIiwgd2UgY291bGQgaGF2ZSBtYWRlIGEgY2xpZW50IGNhbGwgYWJvdmUs
IGFuZCBpdCBjb3VsZCBjbG9zZSB0aGUgY29ubmVjdGlvbi4KQEAgLTUzMyw3ICs1MzMsNyBAQCB2
b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6cmVhZFN0cmVhbUNhbGxiCiAgICAgICAgIGlmICghbGVu
Z3RoKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZl
U29ja2V0U3RyZWFtRGF0YSgqdGhpcywgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4ocHRy
KSwgbGVuZ3RoKTsKKyAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEo
KnRoaXMsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHB0ciksIGxlbmd0aCk7CiAKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTU4Myw3ICs1ODMsNyBAQCB2b2lkIFNvY2tldFN0cmVh
bUhhbmRsZTo6d3JpdGVTdHJlYW1DYWxsCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBtX2Nv
bm5lY3RpbmdTdWJzdGF0ZSA9IENvbm5lY3RlZDsKICAgICAgICAgICAgIG1fc3RhdGUgPSBPcGVu
OwotICAgICAgICAgICAgbV9jbGllbnQtPmRpZE9wZW5Tb2NrZXRTdHJlYW0oKnRoaXMpOworICAg
ICAgICAgICAgbV9jbGllbnQuZGlkT3BlblNvY2tldFN0cmVhbSgqdGhpcyk7CiAgICAgICAgIH0K
IAogICAgICAgICAvLyBOb3QgYW4gImVsc2UgaWYiLCB3ZSBjb3VsZCBoYXZlIG1hZGUgYSBjbGll
bnQgY2FsbCBhYm92ZSwgYW5kIGl0IGNvdWxkIGNsb3NlIHRoZSBjb25uZWN0aW9uLgpAQCAtNjM2
LDcgKzYzNiw3IEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpyZXBvcnRFcnJvclRvQ2wKICAg
ICAgICAgZGVzY3JpcHRpb24gPSBTdHJpbmcoZGVzY3JpcHRpb25DRi5nZXQoKSk7CiAgICAgfQog
Ci0gICAgbV9jbGllbnQtPmRpZEZhaWxTb2NrZXRTdHJlYW0oKnRoaXMsIFNvY2tldFN0cmVhbUVy
cm9yKHN0YXRpY19jYXN0PGludD4oZXJyb3JDb2RlKSwgbV91cmwuc3RyaW5nKCksIGRlc2NyaXB0
aW9uKSk7CisgICAgbV9jbGllbnQuZGlkRmFpbFNvY2tldFN0cmVhbSgqdGhpcywgU29ja2V0U3Ry
ZWFtRXJyb3Ioc3RhdGljX2Nhc3Q8aW50PihlcnJvckNvZGUpLCBtX3VybC5zdHJpbmcoKSwgZGVz
Y3JpcHRpb24pKTsKIH0KIAogU29ja2V0U3RyZWFtSGFuZGxlOjp+U29ja2V0U3RyZWFtSGFuZGxl
KCkKQEAgLTY2NCw3ICs2NjQsNyBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6cGxhdGZvcm1D
bG9zZSgpCiAgICAgQVNTRVJUKCFtX3JlYWRTdHJlYW0gPT0gIW1fd3JpdGVTdHJlYW0pOwogICAg
IGlmICghbV9yZWFkU3RyZWFtKSB7CiAgICAgICAgIGlmIChtX2Nvbm5lY3RpbmdTdWJzdGF0ZSA9
PSBOZXcgfHwgbV9jb25uZWN0aW5nU3Vic3RhdGUgPT0gRXhlY3V0aW5nUEFDRmlsZSkKLSAgICAg
ICAgICAgIG1fY2xpZW50LT5kaWRDbG9zZVNvY2tldFN0cmVhbSgqdGhpcyk7CisgICAgICAgICAg
ICBtX2NsaWVudC5kaWRDbG9zZVNvY2tldFN0cmVhbSgqdGhpcyk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTY4Miw3ICs2ODIsNyBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6cGxh
dGZvcm1DbG9zZSgpCiAgICAgbV9yZWFkU3RyZWFtID0gMDsKICAgICBtX3dyaXRlU3RyZWFtID0g
MDsKIAotICAgIG1fY2xpZW50LT5kaWRDbG9zZVNvY2tldFN0cmVhbSgqdGhpcyk7CisgICAgbV9j
bGllbnQuZGlkQ2xvc2VTb2NrZXRTdHJlYW0oKnRoaXMpOwogfQogCiB1bnNpZ25lZCBzaG9ydCBT
b2NrZXRTdHJlYW1IYW5kbGU6OnBvcnQoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGUuaAko
cmV2aXNpb24gMjAzMjE2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L1NvY2tldFN0cmVhbUhhbmRsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSwxMiArNTEsMTIgQEAg
Y2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50OwogCiBjbGFzcyBTb2NrZXRTdHJlYW1IYW5k
bGUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U29ja2V0U3RyZWFtSGFuZGxlPiwgcHVi
bGljIFNvY2tldFN0cmVhbUhhbmRsZUJhc2UgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U29j
a2V0U3RyZWFtSGFuZGxlPiBjcmVhdGUoY29uc3QgVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRs
ZUNsaWVudCogY2xpZW50LCBOZXR3b3JraW5nQ29udGV4dCYsIGJvb2wpIHsgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU29ja2V0U3RyZWFtSGFuZGxlKHVybCwgY2xpZW50KSk7IH0KKyAgICBzdGF0aWMg
UmVmPFNvY2tldFN0cmVhbUhhbmRsZT4gY3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBTb2NrZXRTdHJl
YW1IYW5kbGVDbGllbnQmIGNsaWVudCwgTmV0d29ya2luZ0NvbnRleHQmLCBib29sKSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IFNvY2tldFN0cmVhbUhhbmRsZSh1cmwsIGNsaWVudCkpOyB9CiAKICAg
ICB2aXJ0dWFsIH5Tb2NrZXRTdHJlYW1IYW5kbGUoKTsKIAogcHJpdmF0ZToKLSAgICBTb2NrZXRT
dHJlYW1IYW5kbGUoY29uc3QgVVJMJiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Kik7CisgICAg
U29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0IFVSTCYsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYp
OwogCiAgICAgaW50IHBsYXRmb3JtU2VuZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKSBv
dmVycmlkZTsKICAgICB2b2lkIHBsYXRmb3JtQ2xvc2UoKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVDdXJsLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29j
a2V0U3RyZWFtSGFuZGxlQ3VybC5jcHAJKHJldmlzaW9uIDIwMzIxNikKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVDdXJsLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDIsMTAgKzQyLDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
U29ja2V0U3RyZWFtSGFuZGxlOjpTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgVVJMJiB1cmwsIFNv
Y2tldFN0cmVhbUhhbmRsZUNsaWVudCogY2xpZW50KQorU29ja2V0U3RyZWFtSGFuZGxlOjpTb2Nr
ZXRTdHJlYW1IYW5kbGUoY29uc3QgVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYg
Y2xpZW50KQogICAgIDogU29ja2V0U3RyZWFtSGFuZGxlQmFzZSh1cmwsIGNsaWVudCkKIHsKLSAg
ICBMT0coTmV0d29yaywgIlNvY2tldFN0cmVhbUhhbmRsZSAlcCBuZXcgY2xpZW50ICVwIiwgdGhp
cywgbV9jbGllbnQpOworICAgIExPRyhOZXR3b3JrLCAiU29ja2V0U3RyZWFtSGFuZGxlICVwIG5l
dyBjbGllbnQgJXAiLCB0aGlzLCAmbV9jbGllbnQpOwogICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CiAgICAgc3RhcnRUaHJlYWQoKTsKIH0KQEAgLTgwLDggKzgwLDcgQEAgdm9pZCBTb2NrZXRT
dHJlYW1IYW5kbGU6OnBsYXRmb3JtQ2xvc2UoKQogCiAgICAgc3RvcFRocmVhZCgpOwogCi0gICAg
aWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+ZGlkQ2xvc2VTb2NrZXRTdHJlYW0oKnRo
aXMpOworICAgIG1fY2xpZW50LmRpZENsb3NlU29ja2V0U3RyZWFtKCp0aGlzKTsKIH0KIAogYm9v
bCBTb2NrZXRTdHJlYW1IYW5kbGU6OnJlYWREYXRhKENVUkwqIGN1cmxIYW5kbGUpCkBAIC0yNTYs
OCArMjU1LDggQEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGU6OmRpZFJlY2VpdmVEYXRhKAogCiAg
ICAgZm9yIChhdXRvJiBzb2NrZXREYXRhIDogcmVjZWl2ZURhdGEpIHsKICAgICAgICAgaWYgKHNv
Y2tldERhdGEuc2l6ZSA+IDApIHsKLSAgICAgICAgICAgIGlmIChtX2NsaWVudCAmJiBzdGF0ZSgp
ID09IE9wZW4pCi0gICAgICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVTb2NrZXRTdHJl
YW1EYXRhKCp0aGlzLCBzb2NrZXREYXRhLmRhdGEuZ2V0KCksIHNvY2tldERhdGEuc2l6ZSk7Cisg
ICAgICAgICAgICBpZiAoc3RhdGUoKSA9PSBPcGVuKQorICAgICAgICAgICAgICAgIG1fY2xpZW50
LmRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKCp0aGlzLCBzb2NrZXREYXRhLmRhdGEuZ2V0KCks
IHNvY2tldERhdGEuc2l6ZSk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgcGxhdGZvcm1D
bG9zZSgpOwogICAgIH0KQEAgLTI2OSw4ICsyNjgsNyBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRs
ZTo6ZGlkT3BlblNvY2tldCgpCiAKICAgICBtX3N0YXRlID0gT3BlbjsKIAotICAgIGlmIChtX2Ns
aWVudCkKLSAgICAgICAgbV9jbGllbnQtPmRpZE9wZW5Tb2NrZXRTdHJlYW0oKnRoaXMpOworICAg
IG1fY2xpZW50LmRpZE9wZW5Tb2NrZXRTdHJlYW0oKnRoaXMpOwogfQogCiBzdGQ6OnVuaXF1ZV9w
dHI8Y2hhcltdPiBTb2NrZXRTdHJlYW1IYW5kbGU6OmNyZWF0ZUNvcHkoY29uc3QgY2hhciogZGF0
YSwgaW50IGxlbmd0aCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9Tb2NrZXRTdHJlYW1IYW5kbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlLmgJKHJldmlzaW9uIDIwMzIxNikK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5k
bGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsMTQgKzQ4LDE0IEBAIGNsYXNzIFNvY2tldFN0cmVh
bUhhbmRsZUNsaWVudDsKIAogY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlIGZpbmFsIDogcHVibGlj
IFJlZkNvdW50ZWQ8U29ja2V0U3RyZWFtSGFuZGxlPiwgcHVibGljIFNvY2tldFN0cmVhbUhhbmRs
ZUJhc2UgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U29ja2V0U3RyZWFtSGFuZGxlPiBjcmVh
dGUoY29uc3QgVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCogY2xpZW50LCBOZXR3
b3JraW5nQ29udGV4dCYsIGJvb2wpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU29ja2V0U3RyZWFt
SGFuZGxlKHVybCwgY2xpZW50KSk7IH0KLSAgICBzdGF0aWMgUmVmPFNvY2tldFN0cmVhbUhhbmRs
ZT4gY3JlYXRlKEdTb2NrZXRDb25uZWN0aW9uKiBzb2NrZXRDb25uZWN0aW9uLCBTb2NrZXRTdHJl
YW1IYW5kbGVDbGllbnQqIGNsaWVudCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTb2NrZXRTdHJl
YW1IYW5kbGUoc29ja2V0Q29ubmVjdGlvbiwgY2xpZW50KSk7IH0KKyAgICBzdGF0aWMgUmVmPFNv
Y2tldFN0cmVhbUhhbmRsZT4gY3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5k
bGVDbGllbnQmIGNsaWVudCwgTmV0d29ya2luZ0NvbnRleHQmLCBib29sKSB7IHJldHVybiBhZG9w
dFJlZigqbmV3IFNvY2tldFN0cmVhbUhhbmRsZSh1cmwsIGNsaWVudCkpOyB9CisgICAgc3RhdGlj
IFJlZjxTb2NrZXRTdHJlYW1IYW5kbGU+IGNyZWF0ZShHU29ja2V0Q29ubmVjdGlvbiogc29ja2V0
Q29ubmVjdGlvbiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiBjbGllbnQpIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU29ja2V0U3RyZWFtSGFuZGxlKHNvY2tldENvbm5lY3Rpb24sIGNsaWVudCkp
OyB9CiAKICAgICB2aXJ0dWFsIH5Tb2NrZXRTdHJlYW1IYW5kbGUoKTsKIAogcHJpdmF0ZToKLSAg
ICBTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgVVJMJiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50
Kik7Ci0gICAgU29ja2V0U3RyZWFtSGFuZGxlKEdTb2NrZXRDb25uZWN0aW9uKiwgU29ja2V0U3Ry
ZWFtSGFuZGxlQ2xpZW50Kik7CisgICAgU29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0IFVSTCYsIFNv
Y2tldFN0cmVhbUhhbmRsZUNsaWVudCYpOworICAgIFNvY2tldFN0cmVhbUhhbmRsZShHU29ja2V0
Q29ubmVjdGlvbiosIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYpOwogCiAgICAgaW50IHBsYXRm
b3JtU2VuZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lk
IHBsYXRmb3JtQ2xvc2UoKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVTb3VwLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlU291
cC5jcHAJKHJldmlzaW9uIDIwMzIxNikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVTb3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgs
MTEgKzQ4LDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU29ja2V0U3RyZWFtSGFuZGxl
OjpTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNs
aWVudCogY2xpZW50KQorU29ja2V0U3RyZWFtSGFuZGxlOjpTb2NrZXRTdHJlYW1IYW5kbGUoY29u
c3QgVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYgY2xpZW50KQogICAgIDogU29j
a2V0U3RyZWFtSGFuZGxlQmFzZSh1cmwsIGNsaWVudCkKICAgICAsIG1fY2FuY2VsbGFibGUoYWRv
cHRHUmVmKGdfY2FuY2VsbGFibGVfbmV3KCkpKQogewotICAgIExPRyhOZXR3b3JrLCAiU29ja2V0
U3RyZWFtSGFuZGxlICVwIG5ldyBjbGllbnQgJXAiLCB0aGlzLCBtX2NsaWVudCk7CisgICAgTE9H
KE5ldHdvcmssICJTb2NrZXRTdHJlYW1IYW5kbGUgJXAgbmV3IGNsaWVudCAlcCIsIHRoaXMsICZt
X2NsaWVudCk7CiAgICAgdW5zaWduZWQgcG9ydCA9IHVybC5oYXNQb3J0KCkgPyB1cmwucG9ydCgp
IDogKHVybC5wcm90b2NvbElzKCJ3c3MiKSA/IDQ0MyA6IDgwKTsKIAogICAgIEdSZWZQdHI8R1Nv
Y2tldENsaWVudD4gc29ja2V0Q2xpZW50ID0gYWRvcHRHUmVmKGdfc29ja2V0X2NsaWVudF9uZXco
KSk7CkBAIC02NCwxMSArNjQsMTEgQEAgU29ja2V0U3RyZWFtSGFuZGxlOjpTb2NrZXRTdHJlYW1I
YW5kbGUoYwogICAgICAgICByZWludGVycHJldF9jYXN0PEdBc3luY1JlYWR5Q2FsbGJhY2s+KGNv
bm5lY3RlZENhbGxiYWNrKSwgcHJvdGVjdGVkVGhpcy5sZWFrUmVmKCkpOwogfQogCi1Tb2NrZXRT
dHJlYW1IYW5kbGU6OlNvY2tldFN0cmVhbUhhbmRsZShHU29ja2V0Q29ubmVjdGlvbiogc29ja2V0
Q29ubmVjdGlvbiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50KiBjbGllbnQpCitTb2NrZXRTdHJl
YW1IYW5kbGU6OlNvY2tldFN0cmVhbUhhbmRsZShHU29ja2V0Q29ubmVjdGlvbiogc29ja2V0Q29u
bmVjdGlvbiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiBjbGllbnQpCiAgICAgOiBTb2NrZXRT
dHJlYW1IYW5kbGVCYXNlKFVSTCgpLCBjbGllbnQpCiAgICAgLCBtX2NhbmNlbGxhYmxlKGFkb3B0
R1JlZihnX2NhbmNlbGxhYmxlX25ldygpKSkKIHsKLSAgICBMT0coTmV0d29yaywgIlNvY2tldFN0
cmVhbUhhbmRsZSAlcCBuZXcgY2xpZW50ICVwIiwgdGhpcywgbV9jbGllbnQpOworICAgIExPRyhO
ZXR3b3JrLCAiU29ja2V0U3RyZWFtSGFuZGxlICVwIG5ldyBjbGllbnQgJXAiLCB0aGlzLCAmbV9j
bGllbnQpOwogICAgIEdSZWZQdHI8R1NvY2tldENvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBzb2Nr
ZXRDb25uZWN0aW9uOwogICAgIGNvbm5lY3RlZChXVEZNb3ZlKGNvbm5lY3Rpb24pKTsKIH0KQEAg
LTc2LDcgKzc2LDYgQEAgU29ja2V0U3RyZWFtSGFuZGxlOjpTb2NrZXRTdHJlYW1IYW5kbGUoRwog
U29ja2V0U3RyZWFtSGFuZGxlOjp+U29ja2V0U3RyZWFtSGFuZGxlKCkKIHsKICAgICBMT0coTmV0
d29yaywgIlNvY2tldFN0cmVhbUhhbmRsZSAlcCBkZWxldGUiLCB0aGlzKTsKLSAgICBzZXRDbGll
bnQobnVsbHB0cik7CiB9CiAKIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpjb25uZWN0ZWQoR1Jl
ZlB0cjxHU29ja2V0Q29ubmVjdGlvbj4mJiBzb2NrZXRDb25uZWN0aW9uKQpAQCAtOTEsNyArOTAs
NyBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6Y29ubmVjdGVkKEdSZWZQCiAgICAgICAgIHJl
aW50ZXJwcmV0X2Nhc3Q8R0FzeW5jUmVhZHlDYWxsYmFjaz4ocmVhZFJlYWR5Q2FsbGJhY2spLCBw
cm90ZWN0ZWRUaGlzLmxlYWtSZWYoKSk7CiAKICAgICBtX3N0YXRlID0gT3BlbjsKLSAgICBtX2Ns
aWVudC0+ZGlkT3BlblNvY2tldFN0cmVhbSgqdGhpcyk7CisgICAgbV9jbGllbnQuZGlkT3BlblNv
Y2tldFN0cmVhbSgqdGhpcyk7CiB9CiAKIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpjb25uZWN0
ZWRDYWxsYmFjayhHU29ja2V0Q2xpZW50KiBjbGllbnQsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBT
b2NrZXRTdHJlYW1IYW5kbGUqIGhhbmRsZSkKQEAgLTEyNCw3ICsxMjMsNyBAQCB2b2lkIFNvY2tl
dFN0cmVhbUhhbmRsZTo6cmVhZEJ5dGVzKGdzc2l6CiAKICAgICAvLyBUaGUgY2xpZW50IGNhbiBj
bG9zZSB0aGUgaGFuZGxlLCBwb3RlbnRpYWxseSByZW1vdmluZyB0aGUgbGFzdCByZWZlcmVuY2Uu
CiAgICAgUmVmUHRyPFNvY2tldFN0cmVhbUhhbmRsZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAg
ICBtX2NsaWVudC0+ZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoKnRoaXMsIG1fcmVhZEJ1ZmZl
ci5nZXQoKSwgYnl0ZXNSZWFkKTsKKyAgICBtX2NsaWVudC5kaWRSZWNlaXZlU29ja2V0U3RyZWFt
RGF0YSgqdGhpcywgbV9yZWFkQnVmZmVyLmdldCgpLCBieXRlc1JlYWQpOwogICAgIGlmIChtX2lu
cHV0U3RyZWFtKSB7CiAgICAgICAgIGdfaW5wdXRfc3RyZWFtX3JlYWRfYXN5bmMobV9pbnB1dFN0
cmVhbS5nZXQoKSwgbV9yZWFkQnVmZmVyLmdldCgpLCBSRUFEX0JVRkZFUl9TSVpFLCBHX1BSSU9S
SVRZX0RFRkFVTFQsIG1fY2FuY2VsbGFibGUuZ2V0KCksCiAgICAgICAgICAgICByZWludGVycHJl
dF9jYXN0PEdBc3luY1JlYWR5Q2FsbGJhY2s+KHJlYWRSZWFkeUNhbGxiYWNrKSwgcHJvdGVjdGVk
VGhpcy5sZWFrUmVmKCkpOwpAQCAtMTUwLDcgKzE0OSw3IEBAIHZvaWQgU29ja2V0U3RyZWFtSGFu
ZGxlOjpyZWFkUmVhZHlDYWxsYmEKIAogdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGU6OmRpZEZhaWwo
U29ja2V0U3RyZWFtRXJyb3ImJiBlcnJvcikKIHsKLSAgICBtX2NsaWVudC0+ZGlkRmFpbFNvY2tl
dFN0cmVhbSgqdGhpcywgV1RGTW92ZShlcnJvcikpOworICAgIG1fY2xpZW50LmRpZEZhaWxTb2Nr
ZXRTdHJlYW0oKnRoaXMsIFdURk1vdmUoZXJyb3IpKTsKIH0KIAogdm9pZCBTb2NrZXRTdHJlYW1I
YW5kbGU6OndyaXRlUmVhZHkoKQpAQCAtMjA3LDcgKzIwNiw3IEBAIHZvaWQgU29ja2V0U3RyZWFt
SGFuZGxlOjpwbGF0Zm9ybUNsb3NlKCkKICAgICBtX2lucHV0U3RyZWFtID0gbnVsbHB0cjsKICAg
ICBtX3JlYWRCdWZmZXIgPSBudWxscHRyOwogCi0gICAgbV9jbGllbnQtPmRpZENsb3NlU29ja2V0
U3RyZWFtKCp0aGlzKTsKKyAgICBtX2NsaWVudC5kaWRDbG9zZVNvY2tldFN0cmVhbSgqdGhpcyk7
CiB9CiAKIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpiZWdpbldhaXRpbmdGb3JTb2NrZXRXcml0
YWJpbGl0eSgpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDMyMTYpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxNi0wNy0x
MyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAg
IE1vZGVybml6ZSBXZWJTb2NrZXQgaGFuZGxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk3NTAKKworICAgICAgICBSZXZpZXdlZCBieSBCcmFkeSBF
aWRzb24uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL3NvdXAvV2ViU29j
a2V0U2VydmVyU291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6OmNvbm5lY3Rpb25DYWxsYmFjayk6
CisKIDIwMTYtMDctMTMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFJFR1JFU1NJT04ocjIwMjI3Myk6IFtHVEtdIFJlZGlyZWN0ZWQgWCB3aW5k
b3cgaXMgcmVzaXplZCB0byB0aGUgcHJldmlvdXMgc2l6ZSBvbiBzaXplIGFsbG9jYXRlCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL3NvdXAvV2ViU29ja2V0
U2VydmVyU291cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0lu
c3BlY3RvclNlcnZlci9zb3VwL1dlYlNvY2tldFNlcnZlclNvdXAuY3BwCShyZXZpc2lvbiAyMDMy
MTYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL3NvdXAvV2Vi
U29ja2V0U2VydmVyU291cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgc3Rh
dGljIGdib29sZWFuIGNvbm5lY3Rpb25DYWxsYmFjayhHU29jawogI2VuZGlmCiAKICAgICBhdXRv
IHdlYlNvY2tldENvbm5lY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlNvY2tldFNlcnZlckNv
bm5lY3Rpb24+KHNlcnZlci0+Y2xpZW50KCksIHNlcnZlcik7Ci0gICAgd2ViU29ja2V0Q29ubmVj
dGlvbi0+c2V0U29ja2V0SGFuZGxlKFNvY2tldFN0cmVhbUhhbmRsZTo6Y3JlYXRlKGNvbm5lY3Rp
b24sIHdlYlNvY2tldENvbm5lY3Rpb24uZ2V0KCkpKTsKKyAgICB3ZWJTb2NrZXRDb25uZWN0aW9u
LT5zZXRTb2NrZXRIYW5kbGUoU29ja2V0U3RyZWFtSGFuZGxlOjpjcmVhdGUoY29ubmVjdGlvbiwg
KndlYlNvY2tldENvbm5lY3Rpb24pKTsKICAgICBzZXJ2ZXItPmRpZEFjY2VwdENvbm5lY3Rpb24o
V1RGTW92ZSh3ZWJTb2NrZXRDb25uZWN0aW9uKSk7CiAKICAgICByZXR1cm4gVFJVRTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>