<?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>156041</bug_id>
          
          <creation_ts>2016-03-30 14:46:00 -0700</creation_ts>
          <short_desc>Make BlobData use ThreadSafeSharedBuffer instead of RawData</short_desc>
          <delta_ts>2016-03-30 22:45:14 -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>WebCore Misc.</component>
          <version>Safari 9</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>
          
          <blocked>143193</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>ap</cc>
    
    <cc>clopez</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1179192</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-03-30 14:46:00 -0700</bug_when>
    <thetext>Make BlobData thread safe

This is in prep for https://bugs.webkit.org/show_bug.cgi?id=143193</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1179232</commentid>
    <comment_count>1</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-03-30 16:34:00 -0700</bug_when>
    <thetext>Retitling:

Make BlobData use ThreadSafeSharedBuffer instead of RawData

That&apos;s all that is really needed here.

This, sadly, extends to touching various other code sites...
...but not so sad because it&apos;s a pretty nice cleanup! (removing dead code, etc)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1179239</commentid>
    <comment_count>2</comment_count>
      <attachid>275238</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-03-30 16:59:02 -0700</bug_when>
    <thetext>Created attachment 275238
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1179247</commentid>
    <comment_count>3</comment_count>
      <attachid>275242</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-03-30 17:23:38 -0700</bug_when>
    <thetext>Created attachment 275242
Patch v2 - EWS and landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1179278</commentid>
    <comment_count>4</comment_count>
      <attachid>275242</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-30 18:21:03 -0700</bug_when>
    <thetext>Comment on attachment 275242
Patch v2 - EWS and landing

Clearing flags on attachment: 275242

Committed r198869: &lt;http://trac.webkit.org/changeset/198869&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1179279</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-30 18:21:06 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1179308</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2016-03-30 20:04:11 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 275242 [details]
&gt; Patch v2 - EWS and landing
&gt; 
&gt; Clearing flags on attachment: 275242
&gt; 
&gt; Committed r198869: &lt;http://trac.webkit.org/changeset/198869&gt;

This broke the GTK+ debug build:

https://build.webkit.org/builders/GTK%20Linux%2064-bit%20Debug%20%28Build%29/builds/57122/steps/compile-webkit/logs/stdio/text</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1179316</commentid>
    <comment_count>7</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-03-30 20:59:52 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #4)
&gt; &gt; Comment on attachment 275242 [details]
&gt; &gt; Patch v2 - EWS and landing
&gt; &gt; 
&gt; &gt; Clearing flags on attachment: 275242
&gt; &gt; 
&gt; &gt; Committed r198869: &lt;http://trac.webkit.org/changeset/198869&gt;
&gt; 
&gt; This broke the GTK+ debug build:
&gt; 
&gt; https://build.webkit.org/builders/GTK%20Linux%2064-bit%20Debug%20%28Build%29/
&gt; builds/57122/steps/compile-webkit/logs/stdio/text

I fixed The build breakage from GTK EWS, which gave the final patch the green light.

That&apos;s about all that was in my power to do...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1179321</commentid>
    <comment_count>8</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-03-30 21:19:35 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; (In reply to comment #4)
&gt; &gt; &gt; Comment on attachment 275242 [details]
&gt; &gt; &gt; Patch v2 - EWS and landing
&gt; &gt; &gt; 
&gt; &gt; &gt; Clearing flags on attachment: 275242
&gt; &gt; &gt; 
&gt; &gt; &gt; Committed r198869: &lt;http://trac.webkit.org/changeset/198869&gt;
&gt; &gt; 
&gt; &gt; This broke the GTK+ debug build:
&gt; &gt; 
&gt; &gt; https://build.webkit.org/builders/GTK%20Linux%2064-bit%20Debug%20%28Build%29/
&gt; &gt; builds/57122/steps/compile-webkit/logs/stdio/text
&gt; 
&gt; I fixed The build breakage from GTK EWS, which gave the final patch the
&gt; green light.
&gt; 
&gt; That&apos;s about all that was in my power to do...

Easy fixes...

ASSERT(blobItem.type == BlobDataItem::Type::File);
becomes
ASSERT(blobItem.type() == BlobDataItem::Type::File);

I&apos;m at home without a clean checkout. If nobody has fixed that by tomorrow morning I&apos;ll check it in when I get into the office.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1179332</commentid>
    <comment_count>9</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-03-30 22:45:14 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/198883</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>275238</attachid>
            <date>2016-03-30 16:59:02 -0700</date>
            <delta_ts>2016-03-30 17:23:38 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>38113</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBjMGUzZWVhLi44MGY0MjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsODIg
QEAKIDIwMTYtMDMtMzAgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCisgICAg
ICAgIE1ha2UgQmxvYkRhdGEgdXNlIFRocmVhZFNhZmVTaGFyZWRCdWZmZXIgaW5zdGVhZCBvZiBS
YXdEYXRhLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU2MDQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
Tm8gbmV3IHRlc3RzIChObyBjaGFuZ2UgaW4gYmVoYXZpb3IpLgorCisgICAgICAgICogTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpjb25z
dW1lVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmV4dHJhY3RGcm9tVGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpibG9iRnJvbUFycmF5QnVmZmVyKToKKyAgICAgICAgKiBNb2R1
bGVzL2ZldGNoL0ZldGNoQm9keS5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9UaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlQmlu
YXJ5RGF0YSk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsQ2xpZW50V3JhcHBlci5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpkaWRSZWNlaXZlQmlu
YXJ5RGF0YSk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oOgorICAg
ICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NGcmFtZSk6CisgICAgICAgICogTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dl
YnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
U29ja2V0Q2hhbm5lbENsaWVudDo6ZGlkUmVjZWl2ZUJpbmFyeURhdGEpOgorICAgICAgICAqIE1v
ZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6
ZGlkUmVjZWl2ZUJpbmFyeURhdGEpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9Xb3Jr
ZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oOgorICAgICAgICAqIGZpbGVhcGkvQmxvYi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpCbG9iOjpCbG9iKToKKyAgICAgICAgKiBmaWxlYXBpL0Js
b2IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJsb2I6OmNyZWF0ZSk6CisgICAgICAgICogZmlsZWFw
aS9XZWJLaXRCbG9iQnVpbGRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQmxvYkRh
dGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmxvYkRhdGE6OkJsb2JEYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OkJsb2JEYXRhSXRlbTo6bGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JE
YXRhOjphcHBlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JEYXRhOjpzZXRDb250ZW50
VHlwZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YS5oOgor
ICAgICAgICAoV2ViQ29yZTo6QmxvYkRhdGFJdGVtOjp0eXBlKToKKyAgICAgICAgKFdlYkNvcmU6
OkJsb2JEYXRhSXRlbTo6ZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iRGF0YUl0ZW06OmZp
bGUpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYkRhdGFJdGVtOjpCbG9iRGF0YUl0ZW0pOgorICAg
ICAgICAoV2ViQ29yZTo6QmxvYkRhdGE6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSYXdE
YXRhOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmF3RGF0YTo6ZGF0YSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSYXdEYXRhOjpsZW5ndGgpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UmF3RGF0YTo6UmF3RGF0YSk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9CbG9iUGFydC5oOgorICAgICAgICAoV2ViQ29yZTo6QmxvYlBhcnQ6
OkJsb2JQYXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JQYXJ0OjpkYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OkJsb2JQYXJ0Ojptb3ZlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9CbG9iUmVnaXN0cnlJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JSZWdpc3RyeUlt
cGw6OmFwcGVuZFN0b3JhZ2VJdGVtcyk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iUmVnaXN0cnlJ
bXBsOjpyZWdpc3RlckZpbGVCbG9iVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JSZWdpc3Ry
eUltcGw6OnJlZ2lzdGVyQmxvYlVSTCk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iUmVnaXN0cnlJ
bXBsOjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmxvYlJlc291cmNl
SGFuZGxlOjpnZXRTaXplRm9yTmV4dCk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iUmVzb3VyY2VI
YW5kbGU6OnJlYWRTeW5jKToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JSZXNvdXJjZUhhbmRsZTo6
cmVhZERhdGFTeW5jKToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JSZXNvdXJjZUhhbmRsZTo6cmVh
ZEZpbGVTeW5jKToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JSZXNvdXJjZUhhbmRsZTo6cmVhZEFz
eW5jKToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JSZXNvdXJjZUhhbmRsZTo6cmVhZERhdGFBc3lu
Yyk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iUmVzb3VyY2VIYW5kbGU6OnJlYWRGaWxlQXN5bmMp
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjph
cHBlbmRCbG9iUmVzb2x2ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvTGluZUVuZGluZy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpub3JtYWxpemVUb0NST3JMRik6CisgICAgICAgIChXZWJD
b3JlOjpub3JtYWxpemVMaW5lRW5kaW5nc1RvTmF0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6Om5v
cm1hbGl6ZUxpbmVFbmRpbmdzVG9DUik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpub3Jt
YWxpemVMaW5lRW5kaW5nc1RvTEYpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL3RleHQv
TGluZUVuZGluZy5oOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2VCbG9iKToKKworMjAxNi0wMy0zMCAg
QnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKICAgICAgICAgUmFuZG9tIFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSBjbGVhbnVwLgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU2MDMyCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5LmNwcAppbmRleCBkYWNjMmQ4Li5jYTUwNTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCkBAIC0yMDEsNyArMjAxLDcgQEAgdm9pZCBGZXRj
aEJvZHk6OmNvbnN1bWVUZXh0KENvbnN1bWVyOjpUeXBlIHR5cGUsIERlZmVycmVkV3JhcHBlciYg
cHJvbWlzZSkKICAgICBBU1NFUlQodHlwZSA9PSBDb25zdW1lcjo6VHlwZTo6QXJyYXlCdWZmZXIg
fHwgdHlwZSA9PSBDb25zdW1lcjo6VHlwZTo6QmxvYik7CiAKICAgICBpZiAodHlwZSA9PSBDb25z
dW1lcjo6VHlwZTo6QXJyYXlCdWZmZXIpIHsKLSAgICAgICAgVmVjdG9yPGNoYXI+IGRhdGEgPSBl
eHRyYWN0RnJvbVRleHQoKTsKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEgPSBleHRyYWN0
RnJvbVRleHQoKTsKICAgICAgICAgZnVsZmlsbFByb21pc2VXaXRoQXJyYXlCdWZmZXIocHJvbWlz
ZSwgZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTIzMiwxMiArMjMyLDEyIEBAIHZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1lQmxvYihGZXRjaEJvZHlP
d25lciYgb3duZXIsIENvbnN1bWVyOjpUeXBlIHR5cGUsIERlZmVycmVkCiAgICAgb3duZXIubG9h
ZEJsb2IoKm1fYmxvYiwgbG9hZGluZ1R5cGUodHlwZSkpOwogfQogCi1WZWN0b3I8Y2hhcj4gRmV0
Y2hCb2R5OjpleHRyYWN0RnJvbVRleHQoKSBjb25zdAorVmVjdG9yPHVpbnQ4X3Q+IEZldGNoQm9k
eTo6ZXh0cmFjdEZyb21UZXh0KCkgY29uc3QKIHsKICAgICBBU1NFUlQobV90eXBlID09IFR5cGU6
OlRleHQpOwogICAgIC8vIEZJWE1FOiBUaGlzIGRvdWJsZSBhbGxvY2F0aW9uIGlzIG5vdCBlZmZp
Y2llbnQuIE1pZ2h0IHdhbnQgdG8gZml4IHRoYXQgYXQgV1RGU3RyaW5nIGxldmVsLgogICAgIENT
dHJpbmcgZGF0YSA9IG1fdGV4dC51dGY4KCk7Ci0gICAgVmVjdG9yPGNoYXI+IHZhbHVlKGRhdGEu
bGVuZ3RoKCkpOworICAgIFZlY3Rvcjx1aW50OF90PiB2YWx1ZShkYXRhLmxlbmd0aCgpKTsKICAg
ICBtZW1jcHkodmFsdWUuZGF0YSgpLCBkYXRhLmRhdGEoKSwgZGF0YS5sZW5ndGgoKSk7CiAgICAg
cmV0dXJuIHZhbHVlOwogfQpAQCAtMjQ1LDEwICsyNDUsMTAgQEAgVmVjdG9yPGNoYXI+IEZldGNo
Qm9keTo6ZXh0cmFjdEZyb21UZXh0KCkgY29uc3QKIHN0YXRpYyBpbmxpbmUgUmVmUHRyPEJsb2I+
IGJsb2JGcm9tQXJyYXlCdWZmZXIoQXJyYXlCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSkKIHsKICAgICBpZiAoIWJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIEJsb2I6OmNy
ZWF0ZShWZWN0b3I8Y2hhcj4oKSwgY29udGVudFR5cGUpOworICAgICAgICByZXR1cm4gQmxvYjo6
Y3JlYXRlKFZlY3Rvcjx1aW50OF90PigpLCBjb250ZW50VHlwZSk7CiAKICAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkIHRyeSB0byBtb3ZlIGJ1ZmZlciB0byBCbG9iIHdpdGhvdXQgZG9pbmcgdGhpcyBj
b3B5LgotICAgIFZlY3RvcjxjaGFyPiB2YWx1ZShidWZmZXItPmJ5dGVMZW5ndGgoKSk7CisgICAg
VmVjdG9yPHVpbnQ4X3Q+IHZhbHVlKGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICBtZW1jcHko
dmFsdWUuZGF0YSgpLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAg
IHJldHVybiBCbG9iOjpjcmVhdGUoV1RGTW92ZSh2YWx1ZSksIGNvbnRlbnRUeXBlKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCmluZGV4IGY3YWM2ZDcuLmJiYmNk
MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaApAQCAtODcsNyAr
ODcsNyBAQCBwcml2YXRlOgogICAgIH07CiAgICAgdm9pZCBjb25zdW1lKEZldGNoQm9keU93bmVy
JiwgQ29uc3VtZXI6OlR5cGUsIERlZmVycmVkV3JhcHBlciYmKTsKIAotICAgIFZlY3RvcjxjaGFy
PiBleHRyYWN0RnJvbVRleHQoKSBjb25zdDsKKyAgICBWZWN0b3I8dWludDhfdD4gZXh0cmFjdEZy
b21UZXh0KCkgY29uc3Q7CiAgICAgYm9vbCBwcm9jZXNzSWZFbXB0eU9yRGlzdHVyYmVkKENvbnN1
bWVyOjpUeXBlLCBEZWZlcnJlZFdyYXBwZXImKTsKICAgICB2b2lkIGNvbnN1bWVBcnJheUJ1ZmZl
cihDb25zdW1lcjo6VHlwZSwgRGVmZXJyZWRXcmFwcGVyJik7CiAgICAgdm9pZCBjb25zdW1lVGV4
dChDb25zdW1lcjo6VHlwZSwgRGVmZXJyZWRXcmFwcGVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGll
bnRXcmFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuY3BwCmluZGV4IDY2MGZlNzguLjEyMjQ4
MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBw
ZXIuY3BwCkBAIC0xODAsMTAgKzE4MCwxMCBAQCB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsQ2xpZW50V3JhcHBlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZQogICAg
ICAgICBwcm9jZXNzUGVuZGluZ1Rhc2tzKCk7CiB9CiAKLXZvaWQgVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlQmluYXJ5RGF0YShWZWN0b3I8Y2hhcj4m
JiBiaW5hcnlEYXRhKQordm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBw
ZXI6OmRpZFJlY2VpdmVCaW5hcnlEYXRhKFZlY3Rvcjx1aW50OF90PiYmIGJpbmFyeURhdGEpCiB7
CiAgICAgcmVmKCk7Ci0gICAgVmVjdG9yPGNoYXI+KiBjYXB0dXJlZERhdGEgPSBuZXcgVmVjdG9y
PGNoYXI+KFdURk1vdmUoYmluYXJ5RGF0YSkpOworICAgIFZlY3Rvcjx1aW50OF90PiogY2FwdHVy
ZWREYXRhID0gbmV3IFZlY3Rvcjx1aW50OF90PihXVEZNb3ZlKGJpbmFyeURhdGEpKTsKICAgICBt
X3BlbmRpbmdUYXNrcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpUYXNrPihbdGhpcywgY2FwdHVyZWREYXRhXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYp
IHsKICAgICAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2Vp
dmVCaW5hcnlEYXRhKFdURk1vdmUoKmNhcHR1cmVkRGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xp
ZW50V3JhcHBlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5oCmluZGV4IGEzODk0YzkuLjdmNWZjNzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmgK
QEAgLTc5LDcgKzc5LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBkaWRDb25uZWN0KCk7CiAgICAg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwotICAgIHZvaWQg
ZGlkUmVjZWl2ZUJpbmFyeURhdGEoVmVjdG9yPGNoYXI+JiYpOworICAgIHZvaWQgZGlkUmVjZWl2
ZUJpbmFyeURhdGEoVmVjdG9yPHVpbnQ4X3Q+JiYpOwogICAgIHZvaWQgZGlkVXBkYXRlQnVmZmVy
ZWRBbW91bnQodW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3VudCk7CiAgICAgdm9pZCBkaWRTdGFy
dENsb3NpbmdIYW5kc2hha2UoKTsKICAgICB2b2lkIGRpZENsb3NlKHVuc2lnbmVkIGxvbmcgdW5o
YW5kbGVkQnVmZmVyZWRBbW91bnQsIFdlYlNvY2tldENoYW5uZWxDbGllbnQ6OkNsb3NpbmdIYW5k
c2hha2VDb21wbGV0aW9uU3RhdHVzLCB1bnNpZ25lZCBzaG9ydCBjb2RlLCBjb25zdCBTdHJpbmcm
IHJlYXNvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMv
V2ViU29ja2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXQuY3BwCmluZGV4IGJkNTFlOWUuLmNmYmU2NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCkBAIC01NjEsNyArNTYxLDcgQEAgdm9pZCBX
ZWJTb2NrZXQ6OmRpZFJlY2VpdmVNZXNzYWdlKGNvbnN0IFN0cmluZyYgbXNnKQogICAgIGRpc3Bh
dGNoRXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVhdGUobXNnLCBTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
KG1fdXJsKS0+dG9TdHJpbmcoKSkpOwogfQogCi12b2lkIFdlYlNvY2tldDo6ZGlkUmVjZWl2ZUJp
bmFyeURhdGEoVmVjdG9yPGNoYXI+JiYgYmluYXJ5RGF0YSkKK3ZvaWQgV2ViU29ja2V0OjpkaWRS
ZWNlaXZlQmluYXJ5RGF0YShWZWN0b3I8dWludDhfdD4mJiBiaW5hcnlEYXRhKQogewogICAgIExP
RyhOZXR3b3JrLCAiV2ViU29ja2V0ICVwIGRpZFJlY2VpdmVCaW5hcnlEYXRhKCkgJWx1IGJ5dGUg
YmluYXJ5IG1lc3NhZ2UiLCB0aGlzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihiaW5hcnlE
YXRhLnNpemUoKSkpOwogICAgIHN3aXRjaCAobV9iaW5hcnlUeXBlKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKaW5kZXggNTAwODVlMC4uMDc2MjY2
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaApA
QCAtMTAwLDcgKzEwMCw3IEBAIHB1YmxpYzoKICAgICAvLyBXZWJTb2NrZXRDaGFubmVsQ2xpZW50
IGZ1bmN0aW9ucy4KICAgICB2b2lkIGRpZENvbm5lY3QoKSBvdmVycmlkZTsKICAgICB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBkaWRSZWNlaXZlQmluYXJ5RGF0YShWZWN0b3I8Y2hhcj4mJikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBkaWRSZWNlaXZlQmluYXJ5RGF0YShWZWN0b3I8dWludDhfdD4mJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZUVycm9yKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRVcGRh
dGVCdWZmZXJlZEFtb3VudCh1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KSBvdmVycmlkZTsK
ICAgICB2b2lkIGRpZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3Bw
CmluZGV4IDk0YzNmMzYuLjFhMWU5NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTU4Niw3ICs1ODYsNyBA
QCBib29sIFdlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NGcmFtZSgpCiAgICAgICAgICAgICAvLyBz
byB3ZSBzaG91bGQgcHJldGVuZCB0aGF0IHdlIGhhdmUgZmluaXNoZWQgdG8gcmVhZCB0aGlzIGZy
YW1lIGFuZAogICAgICAgICAgICAgLy8gbWFrZSBzdXJlIHRoYXQgdGhlIG1lbWJlciB2YXJpYWJs
ZXMgYXJlIGluIGEgY29uc2lzdGVudCBzdGF0ZSBiZWZvcmUKICAgICAgICAgICAgIC8vIHRoZSBo
YW5kbGVyIGlzIGludm9rZWQuCi0gICAgICAgICAgICBWZWN0b3I8Y2hhcj4gY29udGludW91c0Zy
YW1lRGF0YSA9IFdURk1vdmUobV9jb250aW51b3VzRnJhbWVEYXRhKTsKKyAgICAgICAgICAgIFZl
Y3Rvcjx1aW50OF90PiBjb250aW51b3VzRnJhbWVEYXRhID0gV1RGTW92ZShtX2NvbnRpbnVvdXNG
cmFtZURhdGEpOwogICAgICAgICAgICAgbV9oYXNDb250aW51b3VzRnJhbWUgPSBmYWxzZTsKICAg
ICAgICAgICAgIGlmIChtX2NvbnRpbnVvdXNGcmFtZU9wQ29kZSA9PSBXZWJTb2NrZXRGcmFtZTo6
T3BDb2RlVGV4dCkgewogICAgICAgICAgICAgICAgIFN0cmluZyBtZXNzYWdlOwpAQCAtNjI2LDcg
KzYyNiw3IEBAIGJvb2wgV2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc0ZyYW1lKCkKIAogICAgIGNh
c2UgV2ViU29ja2V0RnJhbWU6Ok9wQ29kZUJpbmFyeToKICAgICAgICAgaWYgKGZyYW1lLmZpbmFs
KSB7Ci0gICAgICAgICAgICBWZWN0b3I8Y2hhcj4gYmluYXJ5RGF0YShmcmFtZS5wYXlsb2FkTGVu
Z3RoKTsKKyAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBiaW5hcnlEYXRhKGZyYW1lLnBheWxv
YWRMZW5ndGgpOwogICAgICAgICAgICAgbWVtY3B5KGJpbmFyeURhdGEuZGF0YSgpLCBmcmFtZS5w
YXlsb2FkLCBmcmFtZS5wYXlsb2FkTGVuZ3RoKTsKICAgICAgICAgICAgIHNraXBCdWZmZXIoZnJh
bWVFbmQgLSBtX2J1ZmZlci5kYXRhKCkpOwogICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2Vp
dmVCaW5hcnlEYXRhKFdURk1vdmUoYmluYXJ5RGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggM2FlNzJkOS4u
M2I2YTUyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMv
V2ViU29ja2V0Q2hhbm5lbC5oCkBAIC0yMDQsNyArMjA0LDcgQEAgcHJpdmF0ZToKICAgICAvLyBQ
cml2YXRlIG1lbWJlcnMgb25seSBmb3IgaHliaS0xMCBwcm90b2NvbC4KICAgICBib29sIG1faGFz
Q29udGludW91c0ZyYW1lOwogICAgIFdlYlNvY2tldEZyYW1lOjpPcENvZGUgbV9jb250aW51b3Vz
RnJhbWVPcENvZGU7Ci0gICAgVmVjdG9yPGNoYXI+IG1fY29udGludW91c0ZyYW1lRGF0YTsKKyAg
ICBWZWN0b3I8dWludDhfdD4gbV9jb250aW51b3VzRnJhbWVEYXRhOwogICAgIHVuc2lnbmVkIHNo
b3J0IG1fY2xvc2VFdmVudENvZGU7CiAgICAgU3RyaW5nIG1fY2xvc2VFdmVudFJlYXNvbjsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENo
YW5uZWxDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRDaGFubmVsQ2xpZW50LmgKaW5kZXggZGE3OTI4Zi4uYmQ5ODhiMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWxDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbENs
aWVudC5oCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmly
dHVhbCB+V2ViU29ja2V0Q2hhbm5lbENsaWVudCgpIHsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ29ubmVjdCgpIHsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2Uo
Y29uc3QgU3RyaW5nJikgeyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQmluYXJ5
RGF0YShWZWN0b3I8Y2hhcj4mJikgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZl
QmluYXJ5RGF0YShWZWN0b3I8dWludDhfdD4mJikgeyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlTWVzc2FnZUVycm9yKCkgeyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRVcGRh
dGVCdWZmZXJlZEFtb3VudCh1bnNpZ25lZCBsb25nIC8qIGJ1ZmZlcmVkQW1vdW50ICovKSB7IH0K
ICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpIHsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggNzllMjA3Mi4uMjlm
MWQ0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtl
clRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCkBAIC0y
ODgsMTIgKzI4OCwxMiBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQ
ZWVyOjpkaWRSZWNlaXZlTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lcwogICAgIH0sIG1fdGFza01v
ZGUpOwogfQogCi12b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpk
aWRSZWNlaXZlQmluYXJ5RGF0YShWZWN0b3I8Y2hhcj4mJiBiaW5hcnlEYXRhKQordm9pZCBXb3Jr
ZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6ZGlkUmVjZWl2ZUJpbmFyeURhdGEo
VmVjdG9yPHVpbnQ4X3Q+JiYgYmluYXJ5RGF0YSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwogCiAgICAgUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBl
cj4gd29ya2VyQ2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlcjsKLSAgICBWZWN0
b3I8Y2hhcj4qIGNhcHR1cmVkRGF0YSA9IG5ldyBWZWN0b3I8Y2hhcj4oV1RGTW92ZShiaW5hcnlE
YXRhKSk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+KiBjYXB0dXJlZERhdGEgPSBuZXcgVmVjdG9yPHVp
bnQ4X3Q+KFdURk1vdmUoYmluYXJ5RGF0YSkpOwogICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tG
b3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbd29ya2VyQ2xpZW50V3JhcHBlciwgY2FwdHVyZWRE
YXRhXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewogICAgICAgICBBU1NFUlRf
VU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKICAgICAgICAg
d29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkUmVjZWl2ZUJpbmFyeURhdGEoV1RGTW92ZSgqY2FwdHVy
ZWREYXRhKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMv
V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCmluZGV4IGJj
ODM5MmUuLmM0YzA5YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29j
a2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5o
CkBAIC0xMDAsNyArMTAwLDcgQEAgcHVibGljOgogICAgICAgICAvLyBXZWJTb2NrZXRDaGFubmVs
Q2xpZW50IGZ1bmN0aW9ucy4KICAgICAgICAgdm9pZCBkaWRDb25uZWN0KCkgb3ZlcnJpZGU7CiAg
ICAgICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSBvdmVy
cmlkZTsKLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlQmluYXJ5RGF0YShWZWN0b3I8Y2hhcj4mJikg
b3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZUJpbmFyeURhdGEoVmVjdG9yPHVpbnQ4
X3Q+JiYpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50KHVu
c2lnbmVkIGxvbmcgYnVmZmVyZWRBbW91bnQpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGRpZFN0
YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGRpZENsb3NlKHVu
c2lnbmVkIGxvbmcgdW5oYW5kbGVkQnVmZmVyZWRBbW91bnQsIENsb3NpbmdIYW5kc2hha2VDb21w
bGV0aW9uU3RhdHVzLCB1bnNpZ25lZCBzaG9ydCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbikg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuY3BwIGIv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcAppbmRleCAwNTJmYjg2Li5iMmYyMjgyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgQmxvYjo6QmxvYigpCiAg
ICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1faW50ZXJuYWxVUkws
IFZlY3RvcjxCbG9iUGFydD4oKSwgU3RyaW5nKCkpOwogfQogCi1CbG9iOjpCbG9iKFZlY3Rvcjxj
aGFyPiBkYXRhLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQorQmxvYjo6QmxvYihWZWN0b3I8
dWludDhfdD4gZGF0YSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKICAgICA6IG1fdHlwZShj
b250ZW50VHlwZSkKICAgICAsIG1fc2l6ZShkYXRhLnNpemUoKSkKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9i
LmgKaW5kZXggOTA0OThlMC4uOTMzMzNkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9CbG9iLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmgKQEAgLTQ4LDcg
KzQ4LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCbG9iKTsKICAg
ICB9CiAKLSAgICBzdGF0aWMgUmVmPEJsb2I+IGNyZWF0ZShWZWN0b3I8Y2hhcj4gZGF0YSwgY29u
c3QgU3RyaW5nJiBjb250ZW50VHlwZSkKKyAgICBzdGF0aWMgUmVmPEJsb2I+IGNyZWF0ZShWZWN0
b3I8dWludDhfdD4gZGF0YSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKICAgICB7CiAgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJsb2IoV1RGTW92ZShkYXRhKSwgY29udGVudFR5cGUp
KTsKICAgICB9CkBAIC05MSw3ICs5MSw3IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIEJs
b2IoKTsKLSAgICBCbG9iKFZlY3RvcjxjaGFyPiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7
CisgICAgQmxvYihWZWN0b3I8dWludDhfdD4sIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwog
ICAgIEJsb2IoVmVjdG9yPEJsb2JQYXJ0PiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CiAK
ICAgICBlbnVtIFVuaW5pdGlhbGl6ZWRDb250cnVjdG9yIHsgdW5pbml0aWFsaXplZENvbnRydWN0
b3IgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvV2ViS2l0QmxvYkJ1aWxk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvV2ViS2l0QmxvYkJ1aWxkZXIuaAppbmRleCBh
MTZjMGMzLi5iYTg3YjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dlYktp
dEJsb2JCdWlsZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9XZWJLaXRCbG9iQnVp
bGRlci5oCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBWZWN0b3I8
QmxvYlBhcnQ+IG1faXRlbXM7Ci0gICAgVmVjdG9yPGNoYXI+IG1fYXBwZW5kYWJsZURhdGE7Cisg
ICAgVmVjdG9yPHVpbnQ4X3Q+IG1fYXBwZW5kYWJsZURhdGE7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Js
b2JEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGEuY3Bw
CmluZGV4IDM2MmM3MmIuLmFjZDU4MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvQmxvYkRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvQmxvYkRhdGEuY3BwCkBAIC0zOSw2ICszOSwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK0Jsb2JEYXRhOjpCbG9iRGF0YShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQorICAg
IDogbV9jb250ZW50VHlwZShjb250ZW50VHlwZSkKK3sKKyAgICBBU1NFUlQoQmxvYjo6aXNOb3Jt
YWxpemVkQ29udGVudFR5cGUoY29udGVudFR5cGUpKTsKK30KKwogY29uc3QgbG9uZyBsb25nIEJs
b2JEYXRhSXRlbTo6dG9FbmRPZkZpbGUgPSAtMTsKIAogbG9uZyBsb25nIEJsb2JEYXRhSXRlbTo6
bGVuZ3RoKCkgY29uc3QKQEAgLTQ2LDMxICs1MiwyNSBAQCBsb25nIGxvbmcgQmxvYkRhdGFJdGVt
OjpsZW5ndGgoKSBjb25zdAogICAgIGlmIChtX2xlbmd0aCAhPSB0b0VuZE9mRmlsZSkKICAgICAg
ICAgcmV0dXJuIG1fbGVuZ3RoOwogCi0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBEYXRh
OgorICAgIHN3aXRjaCAobV90eXBlKSB7CisgICAgY2FzZSBUeXBlOjpEYXRhOgogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIG1fbGVuZ3RoOwotICAgIGNhc2Ug
RmlsZToKLSAgICAgICAgcmV0dXJuIGZpbGUtPnNpemUoKTsKKyAgICBjYXNlIFR5cGU6OkZpbGU6
CisgICAgICAgIHJldHVybiBtX2ZpbGUtPnNpemUoKTsKICAgICB9CiAKICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICByZXR1cm4gbV9sZW5ndGg7CiB9CiAKLXZvaWQgQmxvYkRhdGE6OnNl
dENvbnRlbnRUeXBlKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCi17Ci0gICAgQVNTRVJUKEJs
b2I6OmlzTm9ybWFsaXplZENvbnRlbnRUeXBlKGNvbnRlbnRUeXBlKSk7Ci0gICAgbV9jb250ZW50
VHlwZSA9IGNvbnRlbnRUeXBlOwotfQotCi12b2lkIEJsb2JEYXRhOjphcHBlbmREYXRhKFBhc3NS
ZWZQdHI8UmF3RGF0YT4gZGF0YSkKK3ZvaWQgQmxvYkRhdGE6OmFwcGVuZERhdGEoY29uc3QgVGhy
ZWFkU2FmZURhdGFCdWZmZXImIGRhdGEpCiB7Ci0gICAgc2l6ZV90IGRhdGFTaXplID0gZGF0YS0+
bGVuZ3RoKCk7CisgICAgc2l6ZV90IGRhdGFTaXplID0gZGF0YS5kYXRhKCkgPyBkYXRhLmRhdGEo
KS0+c2l6ZSgpIDogMDsKICAgICBhcHBlbmREYXRhKGRhdGEsIDAsIGRhdGFTaXplKTsKIH0KIAot
dm9pZCBCbG9iRGF0YTo6YXBwZW5kRGF0YShQYXNzUmVmUHRyPFJhd0RhdGE+IGRhdGEsIGxvbmcg
bG9uZyBvZmZzZXQsIGxvbmcgbG9uZyBsZW5ndGgpCit2b2lkIEJsb2JEYXRhOjphcHBlbmREYXRh
KGNvbnN0IFRocmVhZFNhZmVEYXRhQnVmZmVyJiBkYXRhLCBsb25nIGxvbmcgb2Zmc2V0LCBsb25n
IGxvbmcgbGVuZ3RoKQogewogICAgIG1faXRlbXMuYXBwZW5kKEJsb2JEYXRhSXRlbShkYXRhLCBv
ZmZzZXQsIGxlbmd0aCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9CbG9iRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9i
RGF0YS5oCmluZGV4IDE0M2M1ZWQuLjIxZGJkZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Jsb2JEYXRhLmgKQEAgLTMyLDUyICszMiwzMSBAQAogI2RlZmluZSBCbG9iRGF0
YV9oCiAKICNpbmNsdWRlICJCbG9iRGF0YUZpbGVSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJUaHJl
YWRTYWZlRGF0YUJ1ZmZlci5oIgogI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFk
U2FmZVJlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBSYXdEYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8UmF3
RGF0YT4geworY2xhc3MgQmxvYkRhdGFJdGVtIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJh
d0RhdGE+IGNyZWF0ZShWZWN0b3I8Y2hhcj4mJiBkYXRhKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgUmF3RGF0YShXVEZNb3ZlKGRhdGEpKSk7Ci0gICAgfQotCi0gICAgc3Rh
dGljIFJlZjxSYXdEYXRhPiBjcmVhdGUoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCi0g
ICAgewotICAgICAgICBWZWN0b3I8Y2hhcj4gZGF0YVZlY3RvcihzaXplKTsKLSAgICAgICAgbWVt
Y3B5KGRhdGFWZWN0b3IuZGF0YSgpLCBkYXRhLCBzaXplKTsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgUmF3RGF0YShXVEZNb3ZlKGRhdGFWZWN0b3IpKSk7Ci0gICAgfQotCi0gICAgY29u
c3QgY2hhciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5kYXRhKCk7IH0KLSAgICBzaXpl
X3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLnNpemUoKTsgfQotCi1wcml2YXRlOgot
ICAgIFJhd0RhdGEoVmVjdG9yPGNoYXI+JiYgZGF0YSkKLSAgICAgICAgOiBtX2RhdGEoV1RGTW92
ZShkYXRhKSkKLSAgICB7Ci0gICAgfQotCi0gICAgVmVjdG9yPGNoYXI+IG1fZGF0YTsKLX07Ci0K
LXN0cnVjdCBCbG9iRGF0YUl0ZW0gewogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBjb25zdCBs
b25nIGxvbmcgdG9FbmRPZkZpbGU7CiAKLSAgICBlbnVtIHsKKyAgICBlbnVtIGNsYXNzIFR5cGUg
ewogICAgICAgICBEYXRhLAogICAgICAgICBGaWxlCi0gICAgfSB0eXBlOworICAgIH07CisKKyAg
ICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KIAogICAgIC8vIEZvciBEYXRh
IHR5cGUuCi0gICAgUmVmUHRyPFJhd0RhdGE+IGRhdGE7CisgICAgY29uc3QgVGhyZWFkU2FmZURh
dGFCdWZmZXImIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KIAogICAgIC8vIEZvciBG
aWxlIHR5cGUuCi0gICAgUmVmUHRyPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4gZmlsZTsKKyAgICBC
bG9iRGF0YUZpbGVSZWZlcmVuY2UqIGZpbGUoKSBjb25zdCB7IHJldHVybiBtX2ZpbGUuZ2V0KCk7
IH0KIAogICAgIGxvbmcgbG9uZyBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsgfQog
ICAgIGxvbmcgbG9uZyBsZW5ndGgoKSBjb25zdDsgLy8gQ29tcHV0ZXMgZmlsZSBsZW5ndGggaWYg
aXQncyBub3Qga25vd24geWV0LgpAQCAtODYsNTUgKzY1LDU5IEBAIHByaXZhdGU6CiAgICAgZnJp
ZW5kIGNsYXNzIEJsb2JEYXRhOwogCiAgICAgZXhwbGljaXQgQmxvYkRhdGFJdGVtKFBhc3NSZWZQ
dHI8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiBmaWxlKQotICAgICAgICA6IHR5cGUoRmlsZSkKLSAg
ICAgICAgLCBmaWxlKGZpbGUpCisgICAgICAgIDogbV90eXBlKFR5cGU6OkZpbGUpCisgICAgICAg
ICwgbV9maWxlKGZpbGUpCiAgICAgICAgICwgbV9vZmZzZXQoMCkKICAgICAgICAgLCBtX2xlbmd0
aCh0b0VuZE9mRmlsZSkKICAgICB7CiAgICAgfQogCi0gICAgQmxvYkRhdGFJdGVtKFBhc3NSZWZQ
dHI8UmF3RGF0YT4gZGF0YSwgbG9uZyBsb25nIG9mZnNldCwgbG9uZyBsb25nIGxlbmd0aCkKLSAg
ICAgICAgOiB0eXBlKERhdGEpCi0gICAgICAgICwgZGF0YShkYXRhKQorICAgIEJsb2JEYXRhSXRl
bShUaHJlYWRTYWZlRGF0YUJ1ZmZlciBkYXRhLCBsb25nIGxvbmcgb2Zmc2V0LCBsb25nIGxvbmcg
bGVuZ3RoKQorICAgICAgICA6IG1fdHlwZShUeXBlOjpEYXRhKQorICAgICAgICAsIG1fZGF0YShk
YXRhKQogICAgICAgICAsIG1fb2Zmc2V0KG9mZnNldCkKICAgICAgICAgLCBtX2xlbmd0aChsZW5n
dGgpCiAgICAgewogICAgIH0KIAogICAgIEJsb2JEYXRhSXRlbShCbG9iRGF0YUZpbGVSZWZlcmVu
Y2UqIGZpbGUsIGxvbmcgbG9uZyBvZmZzZXQsIGxvbmcgbG9uZyBsZW5ndGgpCi0gICAgICAgIDog
dHlwZShGaWxlKQotICAgICAgICAsIGZpbGUoZmlsZSkKKyAgICAgICAgOiBtX3R5cGUoVHlwZTo6
RmlsZSkKKyAgICAgICAgLCBtX2ZpbGUoZmlsZSkKICAgICAgICAgLCBtX29mZnNldChvZmZzZXQp
CiAgICAgICAgICwgbV9sZW5ndGgobGVuZ3RoKQogICAgIHsKICAgICB9CiAKKyAgICBUeXBlIG1f
dHlwZTsKKyAgICBUaHJlYWRTYWZlRGF0YUJ1ZmZlciBtX2RhdGE7CisgICAgUmVmUHRyPEJsb2JE
YXRhRmlsZVJlZmVyZW5jZT4gbV9maWxlOworCiAgICAgbG9uZyBsb25nIG1fb2Zmc2V0OwogICAg
IGxvbmcgbG9uZyBtX2xlbmd0aDsKIH07CiAKIHR5cGVkZWYgVmVjdG9yPEJsb2JEYXRhSXRlbT4g
QmxvYkRhdGFJdGVtTGlzdDsKIAotY2xhc3MgQmxvYkRhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxC
bG9iRGF0YT4geworY2xhc3MgQmxvYkRhdGEgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
QmxvYkRhdGE+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEJsb2JEYXRhPiBjcmVhdGUoKQor
ICAgIHN0YXRpYyBSZWY8QmxvYkRhdGE+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmxvYkRhdGEpOworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCbG9iRGF0YShjb250ZW50VHlwZSkpOwogICAgIH0KIAog
ICAgIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRU
eXBlOyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb250ZW50VHlwZShjb25zdCBTdHJp
bmcmKTsKIAogICAgIGNvbnN0IEJsb2JEYXRhSXRlbUxpc3QmIGl0ZW1zKCkgY29uc3QgeyByZXR1
cm4gbV9pdGVtczsgfQogICAgIHZvaWQgc3dhcEl0ZW1zKEJsb2JEYXRhSXRlbUxpc3QmKTsKIAot
ICAgIHZvaWQgYXBwZW5kRGF0YShQYXNzUmVmUHRyPFJhd0RhdGE+KTsKKyAgICB2b2lkIGFwcGVu
ZERhdGEoY29uc3QgVGhyZWFkU2FmZURhdGFCdWZmZXImKTsKICAgICB2b2lkIGFwcGVuZEZpbGUo
UGFzc1JlZlB0cjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+KTsKIAogcHJpdmF0ZToKICAgICBmcmll
bmQgY2xhc3MgQmxvYlJlZ2lzdHJ5SW1wbDsKKyAgICBCbG9iRGF0YShjb25zdCBTdHJpbmcmIGNv
bnRlbnRUeXBlKTsKIAotICAgIHZvaWQgYXBwZW5kRGF0YShQYXNzUmVmUHRyPFJhd0RhdGE+LCBs
b25nIGxvbmcgb2Zmc2V0LCBsb25nIGxvbmcgbGVuZ3RoKTsKKyAgICB2b2lkIGFwcGVuZERhdGEo
Y29uc3QgVGhyZWFkU2FmZURhdGFCdWZmZXImLCBsb25nIGxvbmcgb2Zmc2V0LCBsb25nIGxvbmcg
bGVuZ3RoKTsKICAgICB2b2lkIGFwcGVuZEZpbGUoQmxvYkRhdGFGaWxlUmVmZXJlbmNlKiwgbG9u
ZyBsb25nIG9mZnNldCwgbG9uZyBsb25nIGxlbmd0aCk7CiAKICAgICBTdHJpbmcgbV9jb250ZW50
VHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlBh
cnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlBhcnQuaAppbmRleCA1
NWY0OWMzLi5iYTE5YzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Jsb2JQYXJ0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9i
UGFydC5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgQmxv
YlBhcnQoVmVjdG9yPGNoYXI+IGRhdGEpCisgICAgQmxvYlBhcnQoVmVjdG9yPHVpbnQ4X3Q+IGRh
dGEpCiAgICAgICAgIDogbV90eXBlKERhdGEpCiAgICAgICAgICwgbV9kYXRhKFdURk1vdmUoZGF0
YSkpCiAgICAgewpAQCAtNTYsMTMgKzU2LDEzIEBAIHB1YmxpYzoKIAogICAgIFR5cGUgdHlwZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogCi0gICAgY29uc3QgVmVjdG9yPGNoYXI+JiBkYXRh
KCkgY29uc3QKKyAgICBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEoKSBjb25zdAogICAgIHsK
ICAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBEYXRhKTsKICAgICAgICAgcmV0dXJuIG1fZGF0YTsK
ICAgICB9CiAKLSAgICBWZWN0b3I8Y2hhcj4gbW92ZURhdGEoKQorICAgIFZlY3Rvcjx1aW50OF90
PiBtb3ZlRGF0YSgpCiAgICAgewogICAgICAgICBBU1NFUlQobV90eXBlID09IERhdGEpOwogICAg
ICAgICByZXR1cm4gV1RGTW92ZShtX2RhdGEpOwpAQCAtODEsNyArODEsNyBAQCBwdWJsaWM6CiAK
IHByaXZhdGU6CiAgICAgVHlwZSBtX3R5cGU7Ci0gICAgVmVjdG9yPGNoYXI+IG1fZGF0YTsKKyAg
ICBWZWN0b3I8dWludDhfdD4gbV9kYXRhOwogICAgIFVSTCBtX3VybDsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCmlu
ZGV4IGNjMDRiYjkuLjg4YjBmMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcApAQCAtOTgsMTEgKzk4LDExIEBAIHZvaWQg
QmxvYlJlZ2lzdHJ5SW1wbDo6YXBwZW5kU3RvcmFnZUl0ZW1zKEJsb2JEYXRhKiBibG9iRGF0YSwg
Y29uc3QgQmxvYkRhdGFJdGVtCiAgICAgZm9yICg7IGl0ZXIgIT0gaXRlbXMuZW5kKCkgJiYgbGVu
Z3RoID4gMDsgKytpdGVyKSB7CiAgICAgICAgIGxvbmcgbG9uZyBjdXJyZW50TGVuZ3RoID0gaXRl
ci0+bGVuZ3RoKCkgLSBvZmZzZXQ7CiAgICAgICAgIGxvbmcgbG9uZyBuZXdMZW5ndGggPSBjdXJy
ZW50TGVuZ3RoID4gbGVuZ3RoID8gbGVuZ3RoIDogY3VycmVudExlbmd0aDsKLSAgICAgICAgaWYg
KGl0ZXItPnR5cGUgPT0gQmxvYkRhdGFJdGVtOjpEYXRhKQotICAgICAgICAgICAgYmxvYkRhdGEt
PmFwcGVuZERhdGEoaXRlci0+ZGF0YSwgaXRlci0+b2Zmc2V0KCkgKyBvZmZzZXQsIG5ld0xlbmd0
aCk7CisgICAgICAgIGlmIChpdGVyLT50eXBlKCkgPT0gQmxvYkRhdGFJdGVtOjpUeXBlOjpEYXRh
KQorICAgICAgICAgICAgYmxvYkRhdGEtPmFwcGVuZERhdGEoaXRlci0+ZGF0YSgpLCBpdGVyLT5v
ZmZzZXQoKSArIG9mZnNldCwgbmV3TGVuZ3RoKTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ICBBU1NFUlQoaXRlci0+dHlwZSA9PSBCbG9iRGF0YUl0ZW06OkZpbGUpOwotICAgICAgICAgICAg
YmxvYkRhdGEtPmFwcGVuZEZpbGUoaXRlci0+ZmlsZS5nZXQoKSwgaXRlci0+b2Zmc2V0KCkgKyBv
ZmZzZXQsIG5ld0xlbmd0aCk7CisgICAgICAgICAgICBBU1NFUlQoaXRlci0+dHlwZSgpID09IEJs
b2JEYXRhSXRlbTo6VHlwZTo6RmlsZSk7CisgICAgICAgICAgICBibG9iRGF0YS0+YXBwZW5kRmls
ZShpdGVyLT5maWxlKCksIGl0ZXItPm9mZnNldCgpICsgb2Zmc2V0LCBuZXdMZW5ndGgpOwogICAg
ICAgICB9CiAgICAgICAgIGxlbmd0aCAtPSBuZXdMZW5ndGg7CiAgICAgICAgIG9mZnNldCA9IDA7
CkBAIC0xMTUsOCArMTE1LDcgQEAgdm9pZCBCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckZpbGVC
bG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBSZWZQdHI8QmxvYkRhdGFGaWxlUmUKICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwogICAgIHJlZ2lzdGVyQmxvYlJlc291cmNlSGFuZGxlQ29uc3RydWN0
b3IoKTsKIAotICAgIFJlZlB0cjxCbG9iRGF0YT4gYmxvYkRhdGEgPSBCbG9iRGF0YTo6Y3JlYXRl
KCk7Ci0gICAgYmxvYkRhdGEtPnNldENvbnRlbnRUeXBlKGNvbnRlbnRUeXBlKTsKKyAgICBSZWZQ
dHI8QmxvYkRhdGE+IGJsb2JEYXRhID0gQmxvYkRhdGE6OmNyZWF0ZShjb250ZW50VHlwZSk7CiAK
ICAgICBibG9iRGF0YS0+YXBwZW5kRmlsZShmaWxlKTsKICAgICBtX2Jsb2JzLnNldCh1cmwuc3Ry
aW5nKCksIGJsb2JEYXRhLnJlbGVhc2UoKSk7CkBAIC0xMjcsOCArMTI2LDcgQEAgdm9pZCBCbG9i
UmVnaXN0cnlJbXBsOjpyZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxCbG9i
UGFydD4gYmxvYlBhcnQKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIHJlZ2lzdGVy
QmxvYlJlc291cmNlSGFuZGxlQ29uc3RydWN0b3IoKTsKIAotICAgIFJlZlB0cjxCbG9iRGF0YT4g
YmxvYkRhdGEgPSBCbG9iRGF0YTo6Y3JlYXRlKCk7Ci0gICAgYmxvYkRhdGEtPnNldENvbnRlbnRU
eXBlKGNvbnRlbnRUeXBlKTsKKyAgICBSZWZQdHI8QmxvYkRhdGE+IGJsb2JEYXRhID0gQmxvYkRh
dGE6OmNyZWF0ZShjb250ZW50VHlwZSk7CiAKICAgICAvLyBUaGUgYmxvYiBkYXRhIGlzIHN0b3Jl
ZCBpbiB0aGUgImNhbm9uaWNhbCIgd2F5LiBUaGF0IGlzLCBpdCBvbmx5IGNvbnRhaW5zIGEgbGlz
dCBvZiBEYXRhIGFuZCBGaWxlIGl0ZW1zLgogICAgIC8vIDEpIFRoZSBEYXRhIGl0ZW0gaXMgZGVu
b3RlZCBieSB0aGUgcmF3IGRhdGEgYW5kIHRoZSByYW5nZS4KQEAgLTEzOSw4ICsxMzcsOSBAQCB2
b2lkIEJsb2JSZWdpc3RyeUltcGw6OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCwgVmVj
dG9yPEJsb2JQYXJ0PiBibG9iUGFydAogICAgIGZvciAoQmxvYlBhcnQmIHBhcnQgOiBibG9iUGFy
dHMpIHsKICAgICAgICAgc3dpdGNoIChwYXJ0LnR5cGUoKSkgewogICAgICAgICBjYXNlIEJsb2JQ
YXJ0OjpEYXRhOiB7Ci0gICAgICAgICAgICBSZWZQdHI8UmF3RGF0YT4gcmF3RGF0YSA9IFJhd0Rh
dGE6OmNyZWF0ZShwYXJ0Lm1vdmVEYXRhKCkpOwotICAgICAgICAgICAgYmxvYkRhdGEtPmFwcGVu
ZERhdGEocmF3RGF0YS5yZWxlYXNlKCkpOworICAgICAgICAgICAgYXV0byBtb3ZlZERhdGEgPSBw
YXJ0Lm1vdmVEYXRhKCk7CisgICAgICAgICAgICBhdXRvIGRhdGEgPSBUaHJlYWRTYWZlRGF0YUJ1
ZmZlcjo6YWRvcHRWZWN0b3IobW92ZWREYXRhKTsKKyAgICAgICAgICAgIGJsb2JEYXRhLT5hcHBl
bmREYXRhKGRhdGEpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBCbG9iUGFydDo6QmxvYjogewpAQCAtMTk2LDggKzE5NSw3IEBAIHZvaWQgQmxvYlJlZ2lzdHJ5
SW1wbDo6cmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYg
c3JjVVJMCiAgICAgICAgIGVuZCA9IG9yaWdpbmFsU2l6ZTsKIAogICAgIHVuc2lnbmVkIGxvbmcg
bG9uZyBuZXdMZW5ndGggPSBlbmQgLSBzdGFydDsKLSAgICBSZWZQdHI8QmxvYkRhdGE+IG5ld0Rh
dGEgPSBCbG9iRGF0YTo6Y3JlYXRlKCk7Ci0gICAgbmV3RGF0YS0+c2V0Q29udGVudFR5cGUob3Jp
Z2luYWxEYXRhLT5jb250ZW50VHlwZSgpKTsKKyAgICBSZWZQdHI8QmxvYkRhdGE+IG5ld0RhdGEg
PSBCbG9iRGF0YTo6Y3JlYXRlKG9yaWdpbmFsRGF0YS0+Y29udGVudFR5cGUoKSk7CiAKICAgICBh
cHBlbmRTdG9yYWdlSXRlbXMobmV3RGF0YS5nZXQoKSwgb3JpZ2luYWxEYXRhLT5pdGVtcygpLCBz
dGFydCwgbmV3TGVuZ3RoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCmluZGV4IDYxZjIzMzQuLmNmYWUyMzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFu
ZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJj
ZUhhbmRsZS5jcHAKQEAgLTI1MywxNiArMjUzLDE2IEBAIHZvaWQgQmxvYlJlc291cmNlSGFuZGxl
OjpnZXRTaXplRm9yTmV4dCgpCiAgICAgfQogCiAgICAgY29uc3QgQmxvYkRhdGFJdGVtJiBpdGVt
ID0gbV9ibG9iRGF0YS0+aXRlbXMoKS5hdChtX3NpemVJdGVtQ291bnQpOwotICAgIHN3aXRjaCAo
aXRlbS50eXBlKSB7Ci0gICAgY2FzZSBCbG9iRGF0YUl0ZW06OkRhdGE6CisgICAgc3dpdGNoIChp
dGVtLnR5cGUoKSkgeworICAgIGNhc2UgQmxvYkRhdGFJdGVtOjpUeXBlOjpEYXRhOgogICAgICAg
ICBkaWRHZXRTaXplKGl0ZW0ubGVuZ3RoKCkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEJs
b2JEYXRhSXRlbTo6RmlsZToKKyAgICBjYXNlIEJsb2JEYXRhSXRlbTo6VHlwZTo6RmlsZToKICAg
ICAgICAgLy8gRmlsZXMga25vdyB0aGVpciBzaXplcywgYnV0IGFza2luZyB0aGUgc3RyZWFtIHRv
IHZlcmlmeSB0aGF0IHRoZSBmaWxlIHdhc24ndCBtb2RpZmllZC4KICAgICAgICAgaWYgKG1fYXN5
bmMpCi0gICAgICAgICAgICBtX2FzeW5jU3RyZWFtLT5nZXRTaXplKGl0ZW0uZmlsZS0+cGF0aCgp
LCBpdGVtLmZpbGUtPmV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSgpKTsKKyAgICAgICAgICAgIG1f
YXN5bmNTdHJlYW0tPmdldFNpemUoaXRlbS5maWxlKCktPnBhdGgoKSwgaXRlbS5maWxlKCktPmV4
cGVjdGVkTW9kaWZpY2F0aW9uVGltZSgpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgZGlk
R2V0U2l6ZShtX3N0cmVhbS0+Z2V0U2l6ZShpdGVtLmZpbGUtPnBhdGgoKSwgaXRlbS5maWxlLT5l
eHBlY3RlZE1vZGlmaWNhdGlvblRpbWUoKSkpOworICAgICAgICAgICAgZGlkR2V0U2l6ZShtX3N0
cmVhbS0+Z2V0U2l6ZShpdGVtLmZpbGUoKS0+cGF0aCgpLCBpdGVtLmZpbGUoKS0+ZXhwZWN0ZWRN
b2RpZmljYXRpb25UaW1lKCkpKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0zNTEsOSArMzUxLDkgQEAgaW50IEJsb2JSZXNv
dXJjZUhhbmRsZTo6cmVhZFN5bmMoY2hhciogYnVmLCBpbnQgbGVuZ3RoKQogICAgICAgICAKICAg
ICAgICAgY29uc3QgQmxvYkRhdGFJdGVtJiBpdGVtID0gbV9ibG9iRGF0YS0+aXRlbXMoKS5hdCht
X3JlYWRJdGVtQ291bnQpOwogICAgICAgICBpbnQgYnl0ZXNSZWFkID0gMDsKLSAgICAgICAgaWYg
KGl0ZW0udHlwZSA9PSBCbG9iRGF0YUl0ZW06OkRhdGEpCisgICAgICAgIGlmIChpdGVtLnR5cGUo
KSA9PSBCbG9iRGF0YUl0ZW06OlR5cGU6OkRhdGEpCiAgICAgICAgICAgICBieXRlc1JlYWQgPSBy
ZWFkRGF0YVN5bmMoaXRlbSwgYnVmICsgb2Zmc2V0LCByZW1haW5pbmcpOwotICAgICAgICBlbHNl
IGlmIChpdGVtLnR5cGUgPT0gQmxvYkRhdGFJdGVtOjpGaWxlKQorICAgICAgICBlbHNlIGlmIChp
dGVtLnR5cGUoKSA9PSBCbG9iRGF0YUl0ZW06OlR5cGU6OkZpbGUpCiAgICAgICAgICAgICBieXRl
c1JlYWQgPSByZWFkRmlsZVN5bmMoaXRlbSwgYnVmICsgb2Zmc2V0LCByZW1haW5pbmcpOwogICAg
ICAgICBlbHNlCiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTM4OSw3ICsz
ODksNyBAQCBpbnQgQmxvYlJlc291cmNlSGFuZGxlOjpyZWFkRGF0YVN5bmMoY29uc3QgQmxvYkRh
dGFJdGVtJiBpdGVtLCBjaGFyKiBidWYsIGludCBsZQogICAgIGludCBieXRlc1RvUmVhZCA9IChs
ZW5ndGggPiByZW1haW5pbmcpID8gc3RhdGljX2Nhc3Q8aW50PihyZW1haW5pbmcpIDogbGVuZ3Ro
OwogICAgIGlmIChieXRlc1RvUmVhZCA+IG1fdG90YWxSZW1haW5pbmdTaXplKQogICAgICAgICBi
eXRlc1RvUmVhZCA9IHN0YXRpY19jYXN0PGludD4obV90b3RhbFJlbWFpbmluZ1NpemUpOwotICAg
IG1lbWNweShidWYsIGl0ZW0uZGF0YS0+ZGF0YSgpICsgaXRlbS5vZmZzZXQoKSArIG1fY3VycmVu
dEl0ZW1SZWFkU2l6ZSwgYnl0ZXNUb1JlYWQpOworICAgIG1lbWNweShidWYsIGl0ZW0uZGF0YSgp
LmRhdGEoKSArIGl0ZW0ub2Zmc2V0KCkgKyBtX2N1cnJlbnRJdGVtUmVhZFNpemUsIGJ5dGVzVG9S
ZWFkKTsKICAgICBtX3RvdGFsUmVtYWluaW5nU2l6ZSAtPSBieXRlc1RvUmVhZDsKIAogICAgIG1f
Y3VycmVudEl0ZW1SZWFkU2l6ZSArPSBieXRlc1RvUmVhZDsKQEAgLTQxMSw3ICs0MTEsNyBAQCBp
bnQgQmxvYlJlc291cmNlSGFuZGxlOjpyZWFkRmlsZVN5bmMoY29uc3QgQmxvYkRhdGFJdGVtJiBp
dGVtLCBjaGFyKiBidWYsIGludCBsZQogICAgICAgICBsb25nIGxvbmcgYnl0ZXNUb1JlYWQgPSBt
X2l0ZW1MZW5ndGhMaXN0W21fcmVhZEl0ZW1Db3VudF0gLSBtX2N1cnJlbnRJdGVtUmVhZFNpemU7
CiAgICAgICAgIGlmIChieXRlc1RvUmVhZCA+IG1fdG90YWxSZW1haW5pbmdTaXplKQogICAgICAg
ICAgICAgYnl0ZXNUb1JlYWQgPSBtX3RvdGFsUmVtYWluaW5nU2l6ZTsKLSAgICAgICAgYm9vbCBz
dWNjZXNzID0gbV9zdHJlYW0tPm9wZW5Gb3JSZWFkKGl0ZW0uZmlsZS0+cGF0aCgpLCBpdGVtLm9m
ZnNldCgpICsgbV9jdXJyZW50SXRlbVJlYWRTaXplLCBieXRlc1RvUmVhZCk7CisgICAgICAgIGJv
b2wgc3VjY2VzcyA9IG1fc3RyZWFtLT5vcGVuRm9yUmVhZChpdGVtLmZpbGUoKS0+cGF0aCgpLCBp
dGVtLm9mZnNldCgpICsgbV9jdXJyZW50SXRlbVJlYWRTaXplLCBieXRlc1RvUmVhZCk7CiAgICAg
ICAgIG1fY3VycmVudEl0ZW1SZWFkU2l6ZSA9IDA7CiAgICAgICAgIGlmICghc3VjY2Vzcykgewog
ICAgICAgICAgICAgbV9lcnJvckNvZGUgPSBub3RSZWFkYWJsZUVycm9yOwpAQCAtNDUyLDkgKzQ1
Miw5IEBAIHZvaWQgQmxvYlJlc291cmNlSGFuZGxlOjpyZWFkQXN5bmMoKQogICAgIH0KIAogICAg
IGNvbnN0IEJsb2JEYXRhSXRlbSYgaXRlbSA9IG1fYmxvYkRhdGEtPml0ZW1zKCkuYXQobV9yZWFk
SXRlbUNvdW50KTsKLSAgICBpZiAoaXRlbS50eXBlID09IEJsb2JEYXRhSXRlbTo6RGF0YSkKKyAg
ICBpZiAoaXRlbS50eXBlKCkgPT0gQmxvYkRhdGFJdGVtOjpUeXBlOjpEYXRhKQogICAgICAgICBy
ZWFkRGF0YUFzeW5jKGl0ZW0pOwotICAgIGVsc2UgaWYgKGl0ZW0udHlwZSA9PSBCbG9iRGF0YUl0
ZW06OkZpbGUpCisgICAgZWxzZSBpZiAoaXRlbS50eXBlKCkgPT0gQmxvYkRhdGFJdGVtOjpUeXBl
OjpGaWxlKQogICAgICAgICByZWFkRmlsZUFzeW5jKGl0ZW0pOwogICAgIGVsc2UKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC00NjQsMTIgKzQ2NCwxNCBAQCB2b2lkIEJsb2JSZXNv
dXJjZUhhbmRsZTo6cmVhZERhdGFBc3luYyhjb25zdCBCbG9iRGF0YUl0ZW0mIGl0ZW0pCiB7CiAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQobV9hc3luYyk7CisgICAgQVNT
RVJUKGl0ZW0uZGF0YSgpLmRhdGEoKSk7CisKICAgICBSZWY8QmxvYlJlc291cmNlSGFuZGxlPiBw
cm90ZWN0KCp0aGlzKTsKIAogICAgIGxvbmcgbG9uZyBieXRlc1RvUmVhZCA9IGl0ZW0ubGVuZ3Ro
KCkgLSBtX2N1cnJlbnRJdGVtUmVhZFNpemU7CiAgICAgaWYgKGJ5dGVzVG9SZWFkID4gbV90b3Rh
bFJlbWFpbmluZ1NpemUpCiAgICAgICAgIGJ5dGVzVG9SZWFkID0gbV90b3RhbFJlbWFpbmluZ1Np
emU7Ci0gICAgY29uc3VtZURhdGEoaXRlbS5kYXRhLT5kYXRhKCkgKyBpdGVtLm9mZnNldCgpICsg
bV9jdXJyZW50SXRlbVJlYWRTaXplLCBzdGF0aWNfY2FzdDxpbnQ+KGJ5dGVzVG9SZWFkKSk7Cisg
ICAgY29uc3VtZURhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oaXRlbS5kYXRhKCku
ZGF0YSgpLT5kYXRhKCkpICsgaXRlbS5vZmZzZXQoKSArIG1fY3VycmVudEl0ZW1SZWFkU2l6ZSwg
c3RhdGljX2Nhc3Q8aW50PihieXRlc1RvUmVhZCkpOwogICAgIG1fY3VycmVudEl0ZW1SZWFkU2l6
ZSA9IDA7CiB9CiAKQEAgLTQ4Niw3ICs0ODgsNyBAQCB2b2lkIEJsb2JSZXNvdXJjZUhhbmRsZTo6
cmVhZEZpbGVBc3luYyhjb25zdCBCbG9iRGF0YUl0ZW0mIGl0ZW0pCiAgICAgbG9uZyBsb25nIGJ5
dGVzVG9SZWFkID0gbV9pdGVtTGVuZ3RoTGlzdFttX3JlYWRJdGVtQ291bnRdIC0gbV9jdXJyZW50
SXRlbVJlYWRTaXplOwogICAgIGlmIChieXRlc1RvUmVhZCA+IG1fdG90YWxSZW1haW5pbmdTaXpl
KQogICAgICAgICBieXRlc1RvUmVhZCA9IHN0YXRpY19jYXN0PGludD4obV90b3RhbFJlbWFpbmlu
Z1NpemUpOwotICAgIG1fYXN5bmNTdHJlYW0tPm9wZW5Gb3JSZWFkKGl0ZW0uZmlsZS0+cGF0aCgp
LCBpdGVtLm9mZnNldCgpICsgbV9jdXJyZW50SXRlbVJlYWRTaXplLCBieXRlc1RvUmVhZCk7Cisg
ICAgbV9hc3luY1N0cmVhbS0+b3BlbkZvclJlYWQoaXRlbS5maWxlKCktPnBhdGgoKSwgaXRlbS5v
ZmZzZXQoKSArIG1fY3VycmVudEl0ZW1SZWFkU2l6ZSwgYnl0ZXNUb1JlYWQpOwogICAgIG1fZmls
ZU9wZW5lZCA9IHRydWU7CiAgICAgbV9jdXJyZW50SXRlbVJlYWRTaXplID0gMDsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5o
CmluZGV4IDFhZWE2MTUuLmNlODY5NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuaApAQCAtNDQsNyArNDQsNyBAQCBjbGFz
cyBCbG9iRGF0YTsKIGNsYXNzIEZpbGVTdHJlYW07CiBjbGFzcyBSZXNvdXJjZUhhbmRsZUNsaWVu
dDsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKLXN0cnVjdCBCbG9iRGF0YUl0ZW07CitjbGFzcyBC
bG9iRGF0YUl0ZW07CiAKIGNsYXNzIEJsb2JSZXNvdXJjZUhhbmRsZSBmaW5hbCA6IHB1YmxpYyBG
aWxlU3RyZWFtQ2xpZW50LCBwdWJsaWMgUmVzb3VyY2VIYW5kbGUgIHsKIHB1YmxpYzoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKaW5kZXggODAzMzVkOC4u
ODg1YTk4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3Jt
RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5j
cHAKQEAgLTI5MywxMCArMjkzLDExIEBAIHN0YXRpYyB2b2lkIGFwcGVuZEJsb2JSZXNvbHZlZChG
b3JtRGF0YSogZm9ybURhdGEsIGNvbnN0IFVSTCYgdXJsKQogICAgIGNvbnN0IEJsb2JEYXRhSXRl
bUxpc3Q6OmNvbnN0X2l0ZXJhdG9yIGl0ZW5kID0gYmxvYkRhdGEtPml0ZW1zKCkuZW5kKCk7CiAg
ICAgZm9yICg7IGl0ICE9IGl0ZW5kOyArK2l0KSB7CiAgICAgICAgIGNvbnN0IEJsb2JEYXRhSXRl
bSYgYmxvYkl0ZW0gPSAqaXQ7Ci0gICAgICAgIGlmIChibG9iSXRlbS50eXBlID09IEJsb2JEYXRh
SXRlbTo6RGF0YSkKLSAgICAgICAgICAgIGZvcm1EYXRhLT5hcHBlbmREYXRhKGJsb2JJdGVtLmRh
dGEtPmRhdGEoKSArIHN0YXRpY19jYXN0PGludD4oYmxvYkl0ZW0ub2Zmc2V0KCkpLCBzdGF0aWNf
Y2FzdDxpbnQ+KGJsb2JJdGVtLmxlbmd0aCgpKSk7Ci0gICAgICAgIGVsc2UgaWYgKGJsb2JJdGVt
LnR5cGUgPT0gQmxvYkRhdGFJdGVtOjpGaWxlKQotICAgICAgICAgICAgZm9ybURhdGEtPmFwcGVu
ZEZpbGVSYW5nZShibG9iSXRlbS5maWxlLT5wYXRoKCksIGJsb2JJdGVtLm9mZnNldCgpLCBibG9i
SXRlbS5sZW5ndGgoKSwgYmxvYkl0ZW0uZmlsZS0+ZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKCkp
OworICAgICAgICBpZiAoYmxvYkl0ZW0udHlwZSgpID09IEJsb2JEYXRhSXRlbTo6VHlwZTo6RGF0
YSkgeworICAgICAgICAgICAgQVNTRVJUKGJsb2JJdGVtLmRhdGEoKS5kYXRhKCkpOworICAgICAg
ICAgICAgZm9ybURhdGEtPmFwcGVuZERhdGEoYmxvYkl0ZW0uZGF0YSgpLmRhdGEoKS0+ZGF0YSgp
ICsgc3RhdGljX2Nhc3Q8aW50PihibG9iSXRlbS5vZmZzZXQoKSksIHN0YXRpY19jYXN0PGludD4o
YmxvYkl0ZW0ubGVuZ3RoKCkpKTsKKyAgICAgICAgfSBlbHNlIGlmIChibG9iSXRlbS50eXBlKCkg
PT0gQmxvYkRhdGFJdGVtOjpUeXBlOjpGaWxlKQorICAgICAgICAgICAgZm9ybURhdGEtPmFwcGVu
ZEZpbGVSYW5nZShibG9iSXRlbS5maWxlKCktPnBhdGgoKSwgYmxvYkl0ZW0ub2Zmc2V0KCksIGJs
b2JJdGVtLmxlbmd0aCgpLCBibG9iSXRlbS5maWxlKCktPmV4cGVjdGVkTW9kaWZpY2F0aW9uVGlt
ZSgpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9MaW5lRW5kaW5n
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTGluZUVuZGluZy5jcHAKaW5kZXgg
YzBiMDc2NS4uNDI1NzQyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9MaW5lRW5kaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xpbmVF
bmRpbmcuY3BwCkBAIC0xNTMsMTAgKzE1Myw4IEBAIHZvaWQgaW50ZXJuYWxOb3JtYWxpemVMaW5l
RW5kaW5nc1RvQ1JMRihjb25zdCBDU3RyaW5nJiBmcm9tLCBPdXRwdXRCdWZmZXImIGJ1ZmZlCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBub3JtYWxpemVUb0NST3JMRihjb25zdCBDU3Ry
aW5nJiBmcm9tLCBWZWN0b3I8Y2hhcj4mIHJlc3VsdCwgYm9vbCB0b0NSKTsKLQogLy8gTm9ybWFs
aXplIGFsbCBsaW5lLWVuZGluZ3MgdG8gQ1Igb3IgTEYuCi12b2lkIG5vcm1hbGl6ZVRvQ1JPckxG
KGNvbnN0IENTdHJpbmcmIGZyb20sIFZlY3RvcjxjaGFyPiYgcmVzdWx0LCBib29sIHRvQ1IpCitz
dGF0aWMgdm9pZCBub3JtYWxpemVUb0NST3JMRihjb25zdCBDU3RyaW5nJiBmcm9tLCBWZWN0b3I8
dWludDhfdD4mIHJlc3VsdCwgYm9vbCB0b0NSKQogewogICAgIC8vIENvbXB1dGUgdGhlIG5ldyBs
ZW5ndGguCiAgICAgc2l6ZV90IG5ld0xlbiA9IDA7CkBAIC0xODEsNyArMTc5LDcgQEAgdm9pZCBu
b3JtYWxpemVUb0NST3JMRihjb25zdCBDU3RyaW5nJiBmcm9tLCBWZWN0b3I8Y2hhcj4mIHJlc3Vs
dCwgYm9vbCB0b0NSKQogICAgIHAgPSBmcm9tLmRhdGEoKTsKICAgICBzaXplX3Qgb2xkUmVzdWx0
U2l6ZSA9IHJlc3VsdC5zaXplKCk7CiAgICAgcmVzdWx0Lmdyb3cob2xkUmVzdWx0U2l6ZSArIG5l
d0xlbik7Ci0gICAgY2hhciogcSA9IHJlc3VsdC5kYXRhKCkgKyBvbGRSZXN1bHRTaXplOworICAg
IHVpbnQ4X3QqIHEgPSByZXN1bHQuZGF0YSgpICsgb2xkUmVzdWx0U2l6ZTsKIAogICAgIC8vIElm
IG5vIG5lZWQgdG8gZml4IHRoZSBzdHJpbmcsIGp1c3QgY29weSB0aGUgc3RyaW5nIG92ZXIuCiAg
ICAgaWYgKCFuZWVkRml4KSB7CkBAIC0yMTQsMjMgKzIxMiwxMyBAQCBDU3RyaW5nIG5vcm1hbGl6
ZUxpbmVFbmRpbmdzVG9DUkxGKGNvbnN0IENTdHJpbmcmIGZyb20pCiAgICAgcmV0dXJuIGJ1ZmZl
ci5idWZmZXIoKTsKIH0KIAotdm9pZCBub3JtYWxpemVMaW5lRW5kaW5nc1RvQ1IoY29uc3QgQ1N0
cmluZyYgZnJvbSwgVmVjdG9yPGNoYXI+JiByZXN1bHQpCi17Ci0gICAgbm9ybWFsaXplVG9DUk9y
TEYoZnJvbSwgcmVzdWx0LCB0cnVlKTsKLX0KLQotdm9pZCBub3JtYWxpemVMaW5lRW5kaW5nc1Rv
TEYoY29uc3QgQ1N0cmluZyYgZnJvbSwgVmVjdG9yPGNoYXI+JiByZXN1bHQpCi17Ci0gICAgbm9y
bWFsaXplVG9DUk9yTEYoZnJvbSwgcmVzdWx0LCBmYWxzZSk7Ci19Ci0KLXZvaWQgbm9ybWFsaXpl
TGluZUVuZGluZ3NUb05hdGl2ZShjb25zdCBDU3RyaW5nJiBmcm9tLCBWZWN0b3I8Y2hhcj4mIHJl
c3VsdCkKK3ZvaWQgbm9ybWFsaXplTGluZUVuZGluZ3NUb05hdGl2ZShjb25zdCBDU3RyaW5nJiBm
cm9tLCBWZWN0b3I8dWludDhfdD4mIHJlc3VsdCkKIHsKICNpZiBPUyhXSU5ET1dTKQogICAgIFZl
Y3RvckNoYXJBcHBlbmRCdWZmZXIgYnVmZmVyKHJlc3VsdCk7CiAgICAgaW50ZXJuYWxOb3JtYWxp
emVMaW5lRW5kaW5nc1RvQ1JMRihmcm9tLCBidWZmZXIpOwogI2Vsc2UKLSAgICBub3JtYWxpemVM
aW5lRW5kaW5nc1RvTEYoZnJvbSwgcmVzdWx0KTsKKyAgICBub3JtYWxpemVUb0NST3JMRihmcm9t
LCByZXN1bHQsIGZhbHNlKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L0xpbmVFbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvTGluZUVuZGluZy5oCmluZGV4IDQzMDZjZTguLmE0MWNiODAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTGluZUVuZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvTGluZUVuZGluZy5oCkBAIC00MCwxNSArNDAsOSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAvLyBOb3JtYWxpemUgYWxsIGxpbmUtZW5kaW5ncyBpbiB0aGUgZ2l2ZW4gc3Ry
aW5nIHRvIENSTEYuCiBDU3RyaW5nIG5vcm1hbGl6ZUxpbmVFbmRpbmdzVG9DUkxGKGNvbnN0IENT
dHJpbmcmIGZyb20pOwogCi0vLyBOb3JtYWxpemUgYWxsIGxpbmUtZW5kaW5ncyBpbiB0aGUgZ2l2
ZW4gc3RyaW5nIHRvIENSIGFuZCBhcHBlbmQgdGhlIHJlc3VsdCB0byB0aGUgZ2l2ZW4gYnVmZmVy
Lgotdm9pZCBub3JtYWxpemVMaW5lRW5kaW5nc1RvQ1IoY29uc3QgQ1N0cmluZyYgZnJvbSwgVmVj
dG9yPGNoYXI+JiByZXN1bHQpOwotCi0vLyBOb3JtYWxpemUgYWxsIGxpbmUtZW5kaW5ncyBpbiB0
aGUgZ2l2ZW4gc3RyaW5nIHRvIExGIGFuZCBhcHBlbmQgdGhlIHJlc3VsdCB0byB0aGUgZ2l2ZW4g
YnVmZmVyLgotdm9pZCBub3JtYWxpemVMaW5lRW5kaW5nc1RvTEYoY29uc3QgQ1N0cmluZyYgZnJv
bSwgVmVjdG9yPGNoYXI+JiByZXN1bHQpOwotCiAvLyBOb3JtYWxpemUgYWxsIGxpbmUtZW5kaW5n
cyBpbiB0aGUgZ2l2ZW4gc3RyaW5nIHRvIHRoZSBuYXRpdmUgbGluZS1lbmRpbmdzIGFuZCBhcHBl
bmQgdGhlIHJlc3VsdCB0byB0aGUgZ2l2ZW4gYnVmZmVyLgogLy8gKE5vcm1hbGl6ZSB0byBDUkxG
IG9uIFdpbmRvd3MgYW5kIG5vcm1hbGl6ZSB0byBMRiBvbiBhbGwgb3RoZXIgcGxhdGZvcm1zLikK
LXZvaWQgbm9ybWFsaXplTGluZUVuZGluZ3NUb05hdGl2ZShjb25zdCBDU3RyaW5nJiBmcm9tLCBW
ZWN0b3I8Y2hhcj4mIHJlc3VsdCk7Cit2b2lkIG5vcm1hbGl6ZUxpbmVFbmRpbmdzVG9OYXRpdmUo
Y29uc3QgQ1N0cmluZyYgZnJvbSwgVmVjdG9yPHVpbnQ4X3Q+JiByZXN1bHQpOwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4
IDAwNDE0M2UuLmQwNzYzZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApA
QCAtMjM4LDcgKzIzOCw3IEBAIEJsb2IqIFhNTEh0dHBSZXF1ZXN0OjpyZXNwb25zZUJsb2IoKQog
ICAgIGlmICghbV9yZXNwb25zZUJsb2IpIHsKICAgICAgICAgaWYgKG1fYmluYXJ5UmVzcG9uc2VC
dWlsZGVyKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogV2UganVzdCByZWNlaXZlZCB0aGUgZGF0
YSBmcm9tIE5ldHdvcmtQcm9jZXNzLCBhbmQgYXJlIHNlbmRpbmcgaXQgYmFjay4gVGhpcyBpcyBp
bmVmZmljaWVudC4KLSAgICAgICAgICAgIFZlY3RvcjxjaGFyPiBkYXRhOworICAgICAgICAgICAg
VmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAgICAgICAgICAgICBkYXRhLmFwcGVuZChtX2JpbmFyeVJl
c3BvbnNlQnVpbGRlci0+ZGF0YSgpLCBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+c2l6ZSgpKTsK
ICAgICAgICAgICAgIFN0cmluZyBub3JtYWxpemVkQ29udGVudFR5cGUgPSBCbG9iOjpub3JtYWxp
emVkQ29udGVudFR5cGUocmVzcG9uc2VNSU1FVHlwZSgpKTsgLy8gcmVzcG9uc2VNSU1FVHlwZSBk
ZWZhdWx0cyB0byB0ZXh0L3htbCB3aGljaCBtYXkgYmUgaW5jb3JyZWN0LgogICAgICAgICAgICAg
bV9yZXNwb25zZUJsb2IgPSBCbG9iOjpjcmVhdGUoV1RGTW92ZShkYXRhKSwgbm9ybWFsaXplZENv
bnRlbnRUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBlYzVlODU5Li40YjBkOTM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTYtMDMtMzAgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgorCisgICAgICAgIE1ha2UgQmxvYkRhdGEgdXNlIFRocmVhZFNhZmVTaGFyZWRCdWZmZXIg
aW5zdGVhZCBvZiBSYXdEYXRhLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTU2MDQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpmaWxlc0luQmxvYik6
CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJ
UEM6OkFyZ3VtZW50Q29kZXI8QmxvYlBhcnQ+OjpkZWNvZGUpOgorCiAyMDE2LTAzLTMwICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIHJlZmVy
ZW5jZXMgaW5zdGVhZCBvZiBwb2ludGVycyBpbiBzY3JvbGxiYXItcmVsYXRlZCBjb2RlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9i
UmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3
b3JrQmxvYlJlZ2lzdHJ5LmNwcAppbmRleCBlOTlkN2NmLi4wMjVlMmZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Js
b2JSZWdpc3RyeS5jcHAKQEAgLTE0MSw4ICsxNDEsOCBAQCBWZWN0b3I8UmVmUHRyPEJsb2JEYXRh
RmlsZVJlZmVyZW5jZT4+IE5ldHdvcmtCbG9iUmVnaXN0cnk6OmZpbGVzSW5CbG9iKE5ldHdvcmtD
bwogCiAgICAgVmVjdG9yPFJlZlB0cjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiByZXN1bHQ7CiAg
ICAgZm9yIChjb25zdCBCbG9iRGF0YUl0ZW0mIGl0ZW0gOiBibG9iRGF0YS0+aXRlbXMoKSkgewot
ICAgICAgICBpZiAoaXRlbS50eXBlID09IEJsb2JEYXRhSXRlbTo6RmlsZSkKLSAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoaXRlbS5maWxlKTsKKyAgICAgICAgaWYgKGl0ZW0udHlwZSgpID09IEJs
b2JEYXRhSXRlbTo6VHlwZTo6RmlsZSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoaXRlbS5m
aWxlKCkpOwogICAgIH0KIAogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDdjMmNmMzIuLjA0OTBmZWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
CkBAIC0xODYxLDcgKzE4NjEsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8QmxvYlBhcnQ+OjpkZWNv
ZGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBCbG9iUGFydCYgYmxvYlBhcgogCiAgICAgc3dp
dGNoICh0eXBlKSB7CiAgICAgY2FzZSBCbG9iUGFydDo6RGF0YTogewotICAgICAgICBWZWN0b3I8
Y2hhcj4gZGF0YTsKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAgICAgICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoZGF0YSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IGJsb2JQYXJ0ID0gQmxvYlBhcnQoV1RGTW92ZShkYXRhKSk7Cg==
</data>
<flag name="review"
          id="299606"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>275242</attachid>
            <date>2016-03-30 17:23:38 -0700</date>
            <delta_ts>2016-03-30 18:21:03 -0700</delta_ts>
            <desc>Patch v2 - EWS and landing</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>40673</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBjMGUzZWVhLi41ZjBiYzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsODUg
QEAKIDIwMTYtMDMtMzAgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCisgICAg
ICAgIE1ha2UgQmxvYkRhdGEgdXNlIFRocmVhZFNhZmVTaGFyZWRCdWZmZXIgaW5zdGVhZCBvZiBS
YXdEYXRhLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU2MDQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAg
ICBObyBuZXcgdGVzdHMgKE5vIGNoYW5nZSBpbiBiZWhhdmlvcikuCisKKyAgICAgICAgKiBNb2R1
bGVzL2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmNv
bnN1bWVUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6ZXh0cmFjdEZyb21UZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OmJsb2JGcm9tQXJyYXlCdWZmZXIpOgorICAgICAgICAqIE1v
ZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Lmg6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1Ro
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFJlY2VpdmVC
aW5hcnlEYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRz
L1dlYlNvY2tldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmRpZFJlY2VpdmVC
aW5hcnlEYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Lmg6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc0ZyYW1lKToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oOgorICAgICAgICAqIE1vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJTb2NrZXRDaGFubmVsQ2xpZW50OjpkaWRSZWNlaXZlQmluYXJ5RGF0YSk6CisgICAgICAgICog
TW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVy
OjpkaWRSZWNlaXZlQmluYXJ5RGF0YSk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dv
cmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmg6CisgICAgICAgICogZmlsZWFwaS9CbG9i
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJsb2I6OkJsb2IpOgorICAgICAgICAqIGZpbGVhcGkv
QmxvYi5oOgorICAgICAgICAoV2ViQ29yZTo6QmxvYjo6Y3JlYXRlKToKKyAgICAgICAgKiBmaWxl
YXBpL1dlYktpdEJsb2JCdWlsZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9i
RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCbG9iRGF0YTo6QmxvYkRhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6QmxvYkRhdGFJdGVtOjpsZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6Qmxv
YkRhdGE6OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYkRhdGE6OnNldENvbnRl
bnRUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhLmg6
CisgICAgICAgIChXZWJDb3JlOjpCbG9iRGF0YUl0ZW06OnR5cGUpOgorICAgICAgICAoV2ViQ29y
ZTo6QmxvYkRhdGFJdGVtOjpkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JEYXRhSXRlbTo6
ZmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iRGF0YUl0ZW06OkJsb2JEYXRhSXRlbSk6Cisg
ICAgICAgIChXZWJDb3JlOjpCbG9iRGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJh
d0RhdGE6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSYXdEYXRhOjpkYXRh
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJhd0RhdGE6Omxlbmd0aCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpSYXdEYXRhOjpSYXdEYXRhKTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JQYXJ0Lmg6CisgICAgICAgIChXZWJDb3JlOjpCbG9iUGFy
dDo6QmxvYlBhcnQpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYlBhcnQ6OmRhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6QmxvYlBhcnQ6Om1vdmVEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5
SW1wbDo6YXBwZW5kU3RvcmFnZUl0ZW1zKToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JSZWdpc3Ry
eUltcGw6OnJlZ2lzdGVyRmlsZUJsb2JVUkwpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYlJlZ2lz
dHJ5SW1wbDo6cmVnaXN0ZXJCbG9iVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JSZWdpc3Ry
eUltcGw6OnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCbG9iUmVzb3Vy
Y2VIYW5kbGU6OmdldFNpemVGb3JOZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JSZXNvdXJj
ZUhhbmRsZTo6cmVhZFN5bmMpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYlJlc291cmNlSGFuZGxl
OjpyZWFkRGF0YVN5bmMpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYlJlc291cmNlSGFuZGxlOjpy
ZWFkRmlsZVN5bmMpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYlJlc291cmNlSGFuZGxlOjpyZWFk
QXN5bmMpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYlJlc291cmNlSGFuZGxlOjpyZWFkRGF0YUFz
eW5jKToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JSZXNvdXJjZUhhbmRsZTo6cmVhZEZpbGVBc3lu
Yyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmFwcGVuZEJsb2JSZXNvbHZlZCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jl
c291cmNlSGFuZGxlU291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpibG9iSXNPdXRPZkRhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6YWRkRW5jb2RlZEJsb2JJdGVtVG9Tb3VwTWVzc2FnZUJvZHkp
OgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvTGluZUVuZGluZy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpub3JtYWxpemVUb0NST3JMRik6CisgICAgICAgIChXZWJDb3JlOjpub3JtYWxpemVMaW5l
RW5kaW5nc1RvTmF0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6Om5vcm1hbGl6ZUxpbmVFbmRpbmdz
VG9DUik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpub3JtYWxpemVMaW5lRW5kaW5nc1Rv
TEYpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvTGluZUVuZGluZy5oOgorICAg
ICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRw
UmVxdWVzdDo6cmVzcG9uc2VCbG9iKToKKworMjAxNi0wMy0zMCAgQnJhZHkgRWlkc29uICA8YmVp
ZHNvbkBhcHBsZS5jb20+CisKICAgICAgICAgUmFuZG9tIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBj
bGVhbnVwLgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU2MDMyCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAppbmRl
eCBkYWNjMmQ4Li5jYTUwNTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHkuY3BwCkBAIC0yMDEsNyArMjAxLDcgQEAgdm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVUZXh0
KENvbnN1bWVyOjpUeXBlIHR5cGUsIERlZmVycmVkV3JhcHBlciYgcHJvbWlzZSkKICAgICBBU1NF
UlQodHlwZSA9PSBDb25zdW1lcjo6VHlwZTo6QXJyYXlCdWZmZXIgfHwgdHlwZSA9PSBDb25zdW1l
cjo6VHlwZTo6QmxvYik7CiAKICAgICBpZiAodHlwZSA9PSBDb25zdW1lcjo6VHlwZTo6QXJyYXlC
dWZmZXIpIHsKLSAgICAgICAgVmVjdG9yPGNoYXI+IGRhdGEgPSBleHRyYWN0RnJvbVRleHQoKTsK
KyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEgPSBleHRyYWN0RnJvbVRleHQoKTsKICAgICAg
ICAgZnVsZmlsbFByb21pc2VXaXRoQXJyYXlCdWZmZXIocHJvbWlzZSwgZGF0YS5kYXRhKCksIGRh
dGEuc2l6ZSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTIzMiwxMiArMjMyLDEyIEBA
IHZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1lQmxvYihGZXRjaEJvZHlPd25lciYgb3duZXIsIENvbnN1
bWVyOjpUeXBlIHR5cGUsIERlZmVycmVkCiAgICAgb3duZXIubG9hZEJsb2IoKm1fYmxvYiwgbG9h
ZGluZ1R5cGUodHlwZSkpOwogfQogCi1WZWN0b3I8Y2hhcj4gRmV0Y2hCb2R5OjpleHRyYWN0RnJv
bVRleHQoKSBjb25zdAorVmVjdG9yPHVpbnQ4X3Q+IEZldGNoQm9keTo6ZXh0cmFjdEZyb21UZXh0
KCkgY29uc3QKIHsKICAgICBBU1NFUlQobV90eXBlID09IFR5cGU6OlRleHQpOwogICAgIC8vIEZJ
WE1FOiBUaGlzIGRvdWJsZSBhbGxvY2F0aW9uIGlzIG5vdCBlZmZpY2llbnQuIE1pZ2h0IHdhbnQg
dG8gZml4IHRoYXQgYXQgV1RGU3RyaW5nIGxldmVsLgogICAgIENTdHJpbmcgZGF0YSA9IG1fdGV4
dC51dGY4KCk7Ci0gICAgVmVjdG9yPGNoYXI+IHZhbHVlKGRhdGEubGVuZ3RoKCkpOworICAgIFZl
Y3Rvcjx1aW50OF90PiB2YWx1ZShkYXRhLmxlbmd0aCgpKTsKICAgICBtZW1jcHkodmFsdWUuZGF0
YSgpLCBkYXRhLmRhdGEoKSwgZGF0YS5sZW5ndGgoKSk7CiAgICAgcmV0dXJuIHZhbHVlOwogfQpA
QCAtMjQ1LDEwICsyNDUsMTAgQEAgVmVjdG9yPGNoYXI+IEZldGNoQm9keTo6ZXh0cmFjdEZyb21U
ZXh0KCkgY29uc3QKIHN0YXRpYyBpbmxpbmUgUmVmUHRyPEJsb2I+IGJsb2JGcm9tQXJyYXlCdWZm
ZXIoQXJyYXlCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKIHsKICAg
ICBpZiAoIWJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShWZWN0b3I8Y2hhcj4o
KSwgY29udGVudFR5cGUpOworICAgICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKFZlY3Rvcjx1aW50
OF90PigpLCBjb250ZW50VHlwZSk7CiAKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHRyeSB0byBt
b3ZlIGJ1ZmZlciB0byBCbG9iIHdpdGhvdXQgZG9pbmcgdGhpcyBjb3B5LgotICAgIFZlY3Rvcjxj
aGFyPiB2YWx1ZShidWZmZXItPmJ5dGVMZW5ndGgoKSk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHZh
bHVlKGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICBtZW1jcHkodmFsdWUuZGF0YSgpLCBidWZm
ZXItPmRhdGEoKSwgYnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIHJldHVybiBCbG9iOjpjcmVh
dGUoV1RGTW92ZSh2YWx1ZSksIGNvbnRlbnRUeXBlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoQm9keS5oCmluZGV4IGY3YWM2ZDcuLmJiYmNkMDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaApAQCAtODcsNyArODcsNyBAQCBwcml2YXRlOgog
ICAgIH07CiAgICAgdm9pZCBjb25zdW1lKEZldGNoQm9keU93bmVyJiwgQ29uc3VtZXI6OlR5cGUs
IERlZmVycmVkV3JhcHBlciYmKTsKIAotICAgIFZlY3RvcjxjaGFyPiBleHRyYWN0RnJvbVRleHQo
KSBjb25zdDsKKyAgICBWZWN0b3I8dWludDhfdD4gZXh0cmFjdEZyb21UZXh0KCkgY29uc3Q7CiAg
ICAgYm9vbCBwcm9jZXNzSWZFbXB0eU9yRGlzdHVyYmVkKENvbnN1bWVyOjpUeXBlLCBEZWZlcnJl
ZFdyYXBwZXImKTsKICAgICB2b2lkIGNvbnN1bWVBcnJheUJ1ZmZlcihDb25zdW1lcjo6VHlwZSwg
RGVmZXJyZWRXcmFwcGVyJik7CiAgICAgdm9pZCBjb25zdW1lVGV4dChDb25zdW1lcjo6VHlwZSwg
RGVmZXJyZWRXcmFwcGVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bENsaWVudFdyYXBwZXIuY3BwCmluZGV4IDY2MGZlNzguLjEyMjQ4MDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bENsaWVudFdyYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuY3BwCkBAIC0xODAsMTAg
KzE4MCwxMCBAQCB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6
ZGlkUmVjZWl2ZU1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZQogICAgICAgICBwcm9jZXNzUGVuZGlu
Z1Rhc2tzKCk7CiB9CiAKLXZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFw
cGVyOjpkaWRSZWNlaXZlQmluYXJ5RGF0YShWZWN0b3I8Y2hhcj4mJiBiaW5hcnlEYXRhKQordm9p
ZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFJlY2VpdmVCaW5h
cnlEYXRhKFZlY3Rvcjx1aW50OF90PiYmIGJpbmFyeURhdGEpCiB7CiAgICAgcmVmKCk7Ci0gICAg
VmVjdG9yPGNoYXI+KiBjYXB0dXJlZERhdGEgPSBuZXcgVmVjdG9yPGNoYXI+KFdURk1vdmUoYmlu
YXJ5RGF0YSkpOworICAgIFZlY3Rvcjx1aW50OF90PiogY2FwdHVyZWREYXRhID0gbmV3IFZlY3Rv
cjx1aW50OF90PihXVEZNb3ZlKGJpbmFyeURhdGEpKTsKICAgICBtX3BlbmRpbmdUYXNrcy5hcHBl
bmQoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywg
Y2FwdHVyZWREYXRhXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAgICAgaWYgKG1f
Y2xpZW50KQogICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVCaW5hcnlEYXRhKFdURk1v
dmUoKmNhcHR1cmVkRGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
Q2xpZW50V3JhcHBlci5oCmluZGV4IGEzODk0YzkuLjdmNWZjNzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENs
aWVudFdyYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmgKQEAgLTc5LDcgKzc5LDcgQEAg
cHVibGljOgogCiAgICAgdm9pZCBkaWRDb25uZWN0KCk7CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVz
c2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJpbmFyeURh
dGEoVmVjdG9yPGNoYXI+JiYpOworICAgIHZvaWQgZGlkUmVjZWl2ZUJpbmFyeURhdGEoVmVjdG9y
PHVpbnQ4X3Q+JiYpOwogICAgIHZvaWQgZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQodW5zaWduZWQg
bG9uZyBidWZmZXJlZEFtb3VudCk7CiAgICAgdm9pZCBkaWRTdGFydENsb3NpbmdIYW5kc2hha2Uo
KTsKICAgICB2b2lkIGRpZENsb3NlKHVuc2lnbmVkIGxvbmcgdW5oYW5kbGVkQnVmZmVyZWRBbW91
bnQsIFdlYlNvY2tldENoYW5uZWxDbGllbnQ6OkNsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uU3Rh
dHVzLCB1bnNpZ25lZCBzaG9ydCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCmluZGV4IGJkNTFl
OWUuLmNmYmU2NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXQuY3BwCkBAIC01NjEsNyArNTYxLDcgQEAgdm9pZCBXZWJTb2NrZXQ6OmRpZFJlY2Vp
dmVNZXNzYWdlKGNvbnN0IFN0cmluZyYgbXNnKQogICAgIGRpc3BhdGNoRXZlbnQoTWVzc2FnZUV2
ZW50OjpjcmVhdGUobXNnLCBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1fdXJsKS0+dG9TdHJpbmco
KSkpOwogfQogCi12b2lkIFdlYlNvY2tldDo6ZGlkUmVjZWl2ZUJpbmFyeURhdGEoVmVjdG9yPGNo
YXI+JiYgYmluYXJ5RGF0YSkKK3ZvaWQgV2ViU29ja2V0OjpkaWRSZWNlaXZlQmluYXJ5RGF0YShW
ZWN0b3I8dWludDhfdD4mJiBiaW5hcnlEYXRhKQogewogICAgIExPRyhOZXR3b3JrLCAiV2ViU29j
a2V0ICVwIGRpZFJlY2VpdmVCaW5hcnlEYXRhKCkgJWx1IGJ5dGUgYmluYXJ5IG1lc3NhZ2UiLCB0
aGlzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihiaW5hcnlEYXRhLnNpemUoKSkpOwogICAg
IHN3aXRjaCAobV9iaW5hcnlUeXBlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0LmgKaW5kZXggNTAwODVlMC4uMDc2MjY2YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaApAQCAtMTAwLDcgKzEwMCw3IEBA
IHB1YmxpYzoKICAgICAvLyBXZWJTb2NrZXRDaGFubmVsQ2xpZW50IGZ1bmN0aW9ucy4KICAgICB2
b2lkIGRpZENvbm5lY3QoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKGNv
bnN0IFN0cmluZyYgbWVzc2FnZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQmluYXJ5
RGF0YShWZWN0b3I8Y2hhcj4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlQmluYXJ5
RGF0YShWZWN0b3I8dWludDhfdD4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVz
c2FnZUVycm9yKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRVcGRhdGVCdWZmZXJlZEFtb3VudCh1
bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFN0YXJ0
Q2xvc2luZ0hhbmRzaGFrZSgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDk0YzNmMzYuLjFh
MWU5NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJT
b2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMv
V2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTU4Niw3ICs1ODYsNyBAQCBib29sIFdlYlNvY2tldENo
YW5uZWw6OnByb2Nlc3NGcmFtZSgpCiAgICAgICAgICAgICAvLyBzbyB3ZSBzaG91bGQgcHJldGVu
ZCB0aGF0IHdlIGhhdmUgZmluaXNoZWQgdG8gcmVhZCB0aGlzIGZyYW1lIGFuZAogICAgICAgICAg
ICAgLy8gbWFrZSBzdXJlIHRoYXQgdGhlIG1lbWJlciB2YXJpYWJsZXMgYXJlIGluIGEgY29uc2lz
dGVudCBzdGF0ZSBiZWZvcmUKICAgICAgICAgICAgIC8vIHRoZSBoYW5kbGVyIGlzIGludm9rZWQu
Ci0gICAgICAgICAgICBWZWN0b3I8Y2hhcj4gY29udGludW91c0ZyYW1lRGF0YSA9IFdURk1vdmUo
bV9jb250aW51b3VzRnJhbWVEYXRhKTsKKyAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBjb250
aW51b3VzRnJhbWVEYXRhID0gV1RGTW92ZShtX2NvbnRpbnVvdXNGcmFtZURhdGEpOwogICAgICAg
ICAgICAgbV9oYXNDb250aW51b3VzRnJhbWUgPSBmYWxzZTsKICAgICAgICAgICAgIGlmIChtX2Nv
bnRpbnVvdXNGcmFtZU9wQ29kZSA9PSBXZWJTb2NrZXRGcmFtZTo6T3BDb2RlVGV4dCkgewogICAg
ICAgICAgICAgICAgIFN0cmluZyBtZXNzYWdlOwpAQCAtNjI2LDcgKzYyNiw3IEBAIGJvb2wgV2Vi
U29ja2V0Q2hhbm5lbDo6cHJvY2Vzc0ZyYW1lKCkKIAogICAgIGNhc2UgV2ViU29ja2V0RnJhbWU6
Ok9wQ29kZUJpbmFyeToKICAgICAgICAgaWYgKGZyYW1lLmZpbmFsKSB7Ci0gICAgICAgICAgICBW
ZWN0b3I8Y2hhcj4gYmluYXJ5RGF0YShmcmFtZS5wYXlsb2FkTGVuZ3RoKTsKKyAgICAgICAgICAg
IFZlY3Rvcjx1aW50OF90PiBiaW5hcnlEYXRhKGZyYW1lLnBheWxvYWRMZW5ndGgpOwogICAgICAg
ICAgICAgbWVtY3B5KGJpbmFyeURhdGEuZGF0YSgpLCBmcmFtZS5wYXlsb2FkLCBmcmFtZS5wYXls
b2FkTGVuZ3RoKTsKICAgICAgICAgICAgIHNraXBCdWZmZXIoZnJhbWVFbmQgLSBtX2J1ZmZlci5k
YXRhKCkpOwogICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVCaW5hcnlEYXRhKFdURk1v
dmUoYmluYXJ5RGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29j
a2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggM2FlNzJkOS4uM2I2YTUyOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5o
CkBAIC0yMDQsNyArMjA0LDcgQEAgcHJpdmF0ZToKICAgICAvLyBQcml2YXRlIG1lbWJlcnMgb25s
eSBmb3IgaHliaS0xMCBwcm90b2NvbC4KICAgICBib29sIG1faGFzQ29udGludW91c0ZyYW1lOwog
ICAgIFdlYlNvY2tldEZyYW1lOjpPcENvZGUgbV9jb250aW51b3VzRnJhbWVPcENvZGU7Ci0gICAg
VmVjdG9yPGNoYXI+IG1fY29udGludW91c0ZyYW1lRGF0YTsKKyAgICBWZWN0b3I8dWludDhfdD4g
bV9jb250aW51b3VzRnJhbWVEYXRhOwogICAgIHVuc2lnbmVkIHNob3J0IG1fY2xvc2VFdmVudENv
ZGU7CiAgICAgU3RyaW5nIG1fY2xvc2VFdmVudFJlYXNvbjsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWxDbGllbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsQ2xpZW50LmgK
aW5kZXggZGE3OTI4Zi4uYmQ5ODhiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWxDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oCkBAIC00Myw3ICs0
Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB+V2ViU29ja2V0Q2hh
bm5lbENsaWVudCgpIHsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29ubmVjdCgpIHsgfQog
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoY29uc3QgU3RyaW5nJikgeyB9
Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQmluYXJ5RGF0YShWZWN0b3I8Y2hhcj4m
JikgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQmluYXJ5RGF0YShWZWN0b3I8
dWludDhfdD4mJikgeyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUVy
cm9yKCkgeyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRVcGRhdGVCdWZmZXJlZEFtb3VudCh1
bnNpZ25lZCBsb25nIC8qIGJ1ZmZlcmVkQW1vdW50ICovKSB7IH0KICAgICAgICAgdmlydHVhbCB2
b2lkIGRpZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggNzllMjA3Mi4uMjlmMWQ0NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29y
a2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCkBAIC0yODgsMTIgKzI4OCwxMiBAQCB2
b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpkaWRSZWNlaXZlTWVz
c2FnZShjb25zdCBTdHJpbmcmIG1lcwogICAgIH0sIG1fdGFza01vZGUpOwogfQogCi12b2lkIFdv
cmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpkaWRSZWNlaXZlQmluYXJ5RGF0
YShWZWN0b3I8Y2hhcj4mJiBiaW5hcnlEYXRhKQordm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbDo6UGVlcjo6ZGlkUmVjZWl2ZUJpbmFyeURhdGEoVmVjdG9yPHVpbnQ4X3Q+JiYg
YmluYXJ5RGF0YSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgUmVmUHRy
PFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50V3Jh
cHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlcjsKLSAgICBWZWN0b3I8Y2hhcj4qIGNhcHR1cmVk
RGF0YSA9IG5ldyBWZWN0b3I8Y2hhcj4oV1RGTW92ZShiaW5hcnlEYXRhKSk7CisgICAgVmVjdG9y
PHVpbnQ4X3Q+KiBjYXB0dXJlZERhdGEgPSBuZXcgVmVjdG9yPHVpbnQ4X3Q+KFdURk1vdmUoYmlu
YXJ5RGF0YSkpOwogICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9i
YWxTY29wZShbd29ya2VyQ2xpZW50V3JhcHBlciwgY2FwdHVyZWREYXRhXSAoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCkgewogICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNv
bnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKICAgICAgICAgd29ya2VyQ2xpZW50V3JhcHBl
ci0+ZGlkUmVjZWl2ZUJpbmFyeURhdGEoV1RGTW92ZSgqY2FwdHVyZWREYXRhKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3Jr
ZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCmluZGV4IGJjODM5MmUuLmM0YzA5YWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29j
a2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCkBAIC0xMDAsNyArMTAwLDcg
QEAgcHVibGljOgogICAgICAgICAvLyBXZWJTb2NrZXRDaGFubmVsQ2xpZW50IGZ1bmN0aW9ucy4K
ICAgICAgICAgdm9pZCBkaWRDb25uZWN0KCkgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgZGlkUmVj
ZWl2ZU1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSBvdmVycmlkZTsKLSAgICAgICAgdm9p
ZCBkaWRSZWNlaXZlQmluYXJ5RGF0YShWZWN0b3I8Y2hhcj4mJikgb3ZlcnJpZGU7CisgICAgICAg
IHZvaWQgZGlkUmVjZWl2ZUJpbmFyeURhdGEoVmVjdG9yPHVpbnQ4X3Q+JiYpIG92ZXJyaWRlOwog
ICAgICAgICB2b2lkIGRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50KHVuc2lnbmVkIGxvbmcgYnVmZmVy
ZWRBbW91bnQpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGRpZFN0YXJ0Q2xvc2luZ0hhbmRzaGFr
ZSgpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGRpZENsb3NlKHVuc2lnbmVkIGxvbmcgdW5oYW5k
bGVkQnVmZmVyZWRBbW91bnQsIENsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uU3RhdHVzLCB1bnNp
Z25lZCBzaG9ydCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbikgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuY3BwIGIvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9CbG9iLmNwcAppbmRleCAwNTJmYjg2Li5iMmYyMjgyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0Jsb2IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxv
Yi5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgQmxvYjo6QmxvYigpCiAgICAgVGhyZWFkYWJsZUJsb2JS
ZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1faW50ZXJuYWxVUkwsIFZlY3RvcjxCbG9iUGFydD4o
KSwgU3RyaW5nKCkpOwogfQogCi1CbG9iOjpCbG9iKFZlY3RvcjxjaGFyPiBkYXRhLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlKQorQmxvYjo6QmxvYihWZWN0b3I8dWludDhfdD4gZGF0YSwgY29u
c3QgU3RyaW5nJiBjb250ZW50VHlwZSkKICAgICA6IG1fdHlwZShjb250ZW50VHlwZSkKICAgICAs
IG1fc2l6ZShkYXRhLnNpemUoKSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvQmxvYi5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmgKaW5kZXggOTA0OThlMC4u
OTMzMzNkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCbG9iKTsKICAgICB9CiAKLSAgICBzdGF0aWMg
UmVmPEJsb2I+IGNyZWF0ZShWZWN0b3I8Y2hhcj4gZGF0YSwgY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSkKKyAgICBzdGF0aWMgUmVmPEJsb2I+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4gZGF0YSwg
Y29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEJsb2IoV1RGTW92ZShkYXRhKSwgY29udGVudFR5cGUpKTsKICAgICB9CkBAIC05MSw3
ICs5MSw3IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIEJsb2IoKTsKLSAgICBCbG9iKFZl
Y3RvcjxjaGFyPiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAgQmxvYihWZWN0b3I8
dWludDhfdD4sIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwogICAgIEJsb2IoVmVjdG9yPEJs
b2JQYXJ0PiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CiAKICAgICBlbnVtIFVuaW5pdGlh
bGl6ZWRDb250cnVjdG9yIHsgdW5pbml0aWFsaXplZENvbnRydWN0b3IgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvV2ViS2l0QmxvYkJ1aWxkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvV2ViS2l0QmxvYkJ1aWxkZXIuaAppbmRleCBhMTZjMGMzLi5iYTg3YjNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dlYktpdEJsb2JCdWlsZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9XZWJLaXRCbG9iQnVpbGRlci5oCkBAIC01NSw3ICs1
NSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBWZWN0b3I8QmxvYlBhcnQ+IG1faXRlbXM7
Ci0gICAgVmVjdG9yPGNoYXI+IG1fYXBwZW5kYWJsZURhdGE7CisgICAgVmVjdG9yPHVpbnQ4X3Q+
IG1fYXBwZW5kYWJsZURhdGE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGEuY3BwCmluZGV4IDM2MmM3MmIuLmFj
ZDU4MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRh
dGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGEuY3Bw
CkBAIC0zOSw2ICszOSwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK0Jsb2JEYXRhOjpC
bG9iRGF0YShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQorICAgIDogbV9jb250ZW50VHlwZShj
b250ZW50VHlwZSkKK3sKKyAgICBBU1NFUlQoQmxvYjo6aXNOb3JtYWxpemVkQ29udGVudFR5cGUo
Y29udGVudFR5cGUpKTsKK30KKwogY29uc3QgbG9uZyBsb25nIEJsb2JEYXRhSXRlbTo6dG9FbmRP
ZkZpbGUgPSAtMTsKIAogbG9uZyBsb25nIEJsb2JEYXRhSXRlbTo6bGVuZ3RoKCkgY29uc3QKQEAg
LTQ2LDMxICs1MiwyNSBAQCBsb25nIGxvbmcgQmxvYkRhdGFJdGVtOjpsZW5ndGgoKSBjb25zdAog
ICAgIGlmIChtX2xlbmd0aCAhPSB0b0VuZE9mRmlsZSkKICAgICAgICAgcmV0dXJuIG1fbGVuZ3Ro
OwogCi0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBEYXRhOgorICAgIHN3aXRjaCAobV90
eXBlKSB7CisgICAgY2FzZSBUeXBlOjpEYXRhOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICAgcmV0dXJuIG1fbGVuZ3RoOwotICAgIGNhc2UgRmlsZToKLSAgICAgICAgcmV0
dXJuIGZpbGUtPnNpemUoKTsKKyAgICBjYXNlIFR5cGU6OkZpbGU6CisgICAgICAgIHJldHVybiBt
X2ZpbGUtPnNpemUoKTsKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICBy
ZXR1cm4gbV9sZW5ndGg7CiB9CiAKLXZvaWQgQmxvYkRhdGE6OnNldENvbnRlbnRUeXBlKGNvbnN0
IFN0cmluZyYgY29udGVudFR5cGUpCi17Ci0gICAgQVNTRVJUKEJsb2I6OmlzTm9ybWFsaXplZENv
bnRlbnRUeXBlKGNvbnRlbnRUeXBlKSk7Ci0gICAgbV9jb250ZW50VHlwZSA9IGNvbnRlbnRUeXBl
OwotfQotCi12b2lkIEJsb2JEYXRhOjphcHBlbmREYXRhKFBhc3NSZWZQdHI8UmF3RGF0YT4gZGF0
YSkKK3ZvaWQgQmxvYkRhdGE6OmFwcGVuZERhdGEoY29uc3QgVGhyZWFkU2FmZURhdGFCdWZmZXIm
IGRhdGEpCiB7Ci0gICAgc2l6ZV90IGRhdGFTaXplID0gZGF0YS0+bGVuZ3RoKCk7CisgICAgc2l6
ZV90IGRhdGFTaXplID0gZGF0YS5kYXRhKCkgPyBkYXRhLmRhdGEoKS0+c2l6ZSgpIDogMDsKICAg
ICBhcHBlbmREYXRhKGRhdGEsIDAsIGRhdGFTaXplKTsKIH0KIAotdm9pZCBCbG9iRGF0YTo6YXBw
ZW5kRGF0YShQYXNzUmVmUHRyPFJhd0RhdGE+IGRhdGEsIGxvbmcgbG9uZyBvZmZzZXQsIGxvbmcg
bG9uZyBsZW5ndGgpCit2b2lkIEJsb2JEYXRhOjphcHBlbmREYXRhKGNvbnN0IFRocmVhZFNhZmVE
YXRhQnVmZmVyJiBkYXRhLCBsb25nIGxvbmcgb2Zmc2V0LCBsb25nIGxvbmcgbGVuZ3RoKQogewog
ICAgIG1faXRlbXMuYXBwZW5kKEJsb2JEYXRhSXRlbShkYXRhLCBvZmZzZXQsIGxlbmd0aCkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YS5oCmluZGV4IDE0M2M1
ZWQuLjIxZGJkZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
QmxvYkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRh
LmgKQEAgLTMyLDUyICszMiwzMSBAQAogI2RlZmluZSBCbG9iRGF0YV9oCiAKICNpbmNsdWRlICJC
bG9iRGF0YUZpbGVSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJUaHJlYWRTYWZlRGF0YUJ1ZmZlci5o
IgogI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jbGFzcyBSYXdEYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8UmF3RGF0YT4geworY2xhc3MgQmxv
YkRhdGFJdGVtIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJhd0RhdGE+IGNyZWF0ZShWZWN0
b3I8Y2hhcj4mJiBkYXRhKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmF3
RGF0YShXVEZNb3ZlKGRhdGEpKSk7Ci0gICAgfQotCi0gICAgc3RhdGljIFJlZjxSYXdEYXRhPiBj
cmVhdGUoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCi0gICAgewotICAgICAgICBWZWN0
b3I8Y2hhcj4gZGF0YVZlY3RvcihzaXplKTsKLSAgICAgICAgbWVtY3B5KGRhdGFWZWN0b3IuZGF0
YSgpLCBkYXRhLCBzaXplKTsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmF3RGF0YShX
VEZNb3ZlKGRhdGFWZWN0b3IpKSk7Ci0gICAgfQotCi0gICAgY29uc3QgY2hhciogZGF0YSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGF0YS5kYXRhKCk7IH0KLSAgICBzaXplX3QgbGVuZ3RoKCkgY29uc3Qg
eyByZXR1cm4gbV9kYXRhLnNpemUoKTsgfQotCi1wcml2YXRlOgotICAgIFJhd0RhdGEoVmVjdG9y
PGNoYXI+JiYgZGF0YSkKLSAgICAgICAgOiBtX2RhdGEoV1RGTW92ZShkYXRhKSkKLSAgICB7Ci0g
ICAgfQotCi0gICAgVmVjdG9yPGNoYXI+IG1fZGF0YTsKLX07Ci0KLXN0cnVjdCBCbG9iRGF0YUl0
ZW0gewogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBjb25zdCBsb25nIGxvbmcgdG9FbmRPZkZp
bGU7CiAKLSAgICBlbnVtIHsKKyAgICBlbnVtIGNsYXNzIFR5cGUgewogICAgICAgICBEYXRhLAog
ICAgICAgICBGaWxlCi0gICAgfSB0eXBlOworICAgIH07CisKKyAgICBUeXBlIHR5cGUoKSBjb25z
dCB7IHJldHVybiBtX3R5cGU7IH0KIAogICAgIC8vIEZvciBEYXRhIHR5cGUuCi0gICAgUmVmUHRy
PFJhd0RhdGE+IGRhdGE7CisgICAgY29uc3QgVGhyZWFkU2FmZURhdGFCdWZmZXImIGRhdGEoKSBj
b25zdCB7IHJldHVybiBtX2RhdGE7IH0KIAogICAgIC8vIEZvciBGaWxlIHR5cGUuCi0gICAgUmVm
UHRyPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4gZmlsZTsKKyAgICBCbG9iRGF0YUZpbGVSZWZlcmVu
Y2UqIGZpbGUoKSBjb25zdCB7IHJldHVybiBtX2ZpbGUuZ2V0KCk7IH0KIAogICAgIGxvbmcgbG9u
ZyBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsgfQogICAgIGxvbmcgbG9uZyBsZW5n
dGgoKSBjb25zdDsgLy8gQ29tcHV0ZXMgZmlsZSBsZW5ndGggaWYgaXQncyBub3Qga25vd24geWV0
LgpAQCAtODYsNTUgKzY1LDU5IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEJsb2JEYXRh
OwogCiAgICAgZXhwbGljaXQgQmxvYkRhdGFJdGVtKFBhc3NSZWZQdHI8QmxvYkRhdGFGaWxlUmVm
ZXJlbmNlPiBmaWxlKQotICAgICAgICA6IHR5cGUoRmlsZSkKLSAgICAgICAgLCBmaWxlKGZpbGUp
CisgICAgICAgIDogbV90eXBlKFR5cGU6OkZpbGUpCisgICAgICAgICwgbV9maWxlKGZpbGUpCiAg
ICAgICAgICwgbV9vZmZzZXQoMCkKICAgICAgICAgLCBtX2xlbmd0aCh0b0VuZE9mRmlsZSkKICAg
ICB7CiAgICAgfQogCi0gICAgQmxvYkRhdGFJdGVtKFBhc3NSZWZQdHI8UmF3RGF0YT4gZGF0YSwg
bG9uZyBsb25nIG9mZnNldCwgbG9uZyBsb25nIGxlbmd0aCkKLSAgICAgICAgOiB0eXBlKERhdGEp
Ci0gICAgICAgICwgZGF0YShkYXRhKQorICAgIEJsb2JEYXRhSXRlbShUaHJlYWRTYWZlRGF0YUJ1
ZmZlciBkYXRhLCBsb25nIGxvbmcgb2Zmc2V0LCBsb25nIGxvbmcgbGVuZ3RoKQorICAgICAgICA6
IG1fdHlwZShUeXBlOjpEYXRhKQorICAgICAgICAsIG1fZGF0YShkYXRhKQogICAgICAgICAsIG1f
b2Zmc2V0KG9mZnNldCkKICAgICAgICAgLCBtX2xlbmd0aChsZW5ndGgpCiAgICAgewogICAgIH0K
IAogICAgIEJsb2JEYXRhSXRlbShCbG9iRGF0YUZpbGVSZWZlcmVuY2UqIGZpbGUsIGxvbmcgbG9u
ZyBvZmZzZXQsIGxvbmcgbG9uZyBsZW5ndGgpCi0gICAgICAgIDogdHlwZShGaWxlKQotICAgICAg
ICAsIGZpbGUoZmlsZSkKKyAgICAgICAgOiBtX3R5cGUoVHlwZTo6RmlsZSkKKyAgICAgICAgLCBt
X2ZpbGUoZmlsZSkKICAgICAgICAgLCBtX29mZnNldChvZmZzZXQpCiAgICAgICAgICwgbV9sZW5n
dGgobGVuZ3RoKQogICAgIHsKICAgICB9CiAKKyAgICBUeXBlIG1fdHlwZTsKKyAgICBUaHJlYWRT
YWZlRGF0YUJ1ZmZlciBtX2RhdGE7CisgICAgUmVmUHRyPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4g
bV9maWxlOworCiAgICAgbG9uZyBsb25nIG1fb2Zmc2V0OwogICAgIGxvbmcgbG9uZyBtX2xlbmd0
aDsKIH07CiAKIHR5cGVkZWYgVmVjdG9yPEJsb2JEYXRhSXRlbT4gQmxvYkRhdGFJdGVtTGlzdDsK
IAotY2xhc3MgQmxvYkRhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxCbG9iRGF0YT4geworY2xhc3Mg
QmxvYkRhdGEgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QmxvYkRhdGE+IHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPEJsb2JEYXRhPiBjcmVhdGUoKQorICAgIHN0YXRpYyBSZWY8Qmxv
YkRhdGE+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQmxvYkRhdGEpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBCbG9iRGF0YShjb250ZW50VHlwZSkpOwogICAgIH0KIAogICAgIGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRUeXBlOyB9Ci0gICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRDb250ZW50VHlwZShjb25zdCBTdHJpbmcmKTsKIAogICAgIGNvbnN0
IEJsb2JEYXRhSXRlbUxpc3QmIGl0ZW1zKCkgY29uc3QgeyByZXR1cm4gbV9pdGVtczsgfQogICAg
IHZvaWQgc3dhcEl0ZW1zKEJsb2JEYXRhSXRlbUxpc3QmKTsKIAotICAgIHZvaWQgYXBwZW5kRGF0
YShQYXNzUmVmUHRyPFJhd0RhdGE+KTsKKyAgICB2b2lkIGFwcGVuZERhdGEoY29uc3QgVGhyZWFk
U2FmZURhdGFCdWZmZXImKTsKICAgICB2b2lkIGFwcGVuZEZpbGUoUGFzc1JlZlB0cjxCbG9iRGF0
YUZpbGVSZWZlcmVuY2U+KTsKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgQmxvYlJlZ2lz
dHJ5SW1wbDsKKyAgICBCbG9iRGF0YShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKIAotICAg
IHZvaWQgYXBwZW5kRGF0YShQYXNzUmVmUHRyPFJhd0RhdGE+LCBsb25nIGxvbmcgb2Zmc2V0LCBs
b25nIGxvbmcgbGVuZ3RoKTsKKyAgICB2b2lkIGFwcGVuZERhdGEoY29uc3QgVGhyZWFkU2FmZURh
dGFCdWZmZXImLCBsb25nIGxvbmcgb2Zmc2V0LCBsb25nIGxvbmcgbGVuZ3RoKTsKICAgICB2b2lk
IGFwcGVuZEZpbGUoQmxvYkRhdGFGaWxlUmVmZXJlbmNlKiwgbG9uZyBsb25nIG9mZnNldCwgbG9u
ZyBsb25nIGxlbmd0aCk7CiAKICAgICBTdHJpbmcgbV9jb250ZW50VHlwZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlBhcnQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlBhcnQuaAppbmRleCA1NWY0OWMzLi5iYTE5YzNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JQYXJ0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUGFydC5oCkBAIC00Miw3ICs0
Miw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgQmxvYlBhcnQoVmVjdG9yPGNoYXI+
IGRhdGEpCisgICAgQmxvYlBhcnQoVmVjdG9yPHVpbnQ4X3Q+IGRhdGEpCiAgICAgICAgIDogbV90
eXBlKERhdGEpCiAgICAgICAgICwgbV9kYXRhKFdURk1vdmUoZGF0YSkpCiAgICAgewpAQCAtNTYs
MTMgKzU2LDEzIEBAIHB1YmxpYzoKIAogICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dHlwZTsgfQogCi0gICAgY29uc3QgVmVjdG9yPGNoYXI+JiBkYXRhKCkgY29uc3QKKyAgICBjb25z
dCBWZWN0b3I8dWludDhfdD4mIGRhdGEoKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKG1f
dHlwZSA9PSBEYXRhKTsKICAgICAgICAgcmV0dXJuIG1fZGF0YTsKICAgICB9CiAKLSAgICBWZWN0
b3I8Y2hhcj4gbW92ZURhdGEoKQorICAgIFZlY3Rvcjx1aW50OF90PiBtb3ZlRGF0YSgpCiAgICAg
ewogICAgICAgICBBU1NFUlQobV90eXBlID09IERhdGEpOwogICAgICAgICByZXR1cm4gV1RGTW92
ZShtX2RhdGEpOwpAQCAtODEsNyArODEsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgVHlw
ZSBtX3R5cGU7Ci0gICAgVmVjdG9yPGNoYXI+IG1fZGF0YTsKKyAgICBWZWN0b3I8dWludDhfdD4g
bV9kYXRhOwogICAgIFVSTCBtX3VybDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCmluZGV4IGNjMDRiYjkuLjg4YjBm
MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lz
dHJ5SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVn
aXN0cnlJbXBsLmNwcApAQCAtOTgsMTEgKzk4LDExIEBAIHZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6
YXBwZW5kU3RvcmFnZUl0ZW1zKEJsb2JEYXRhKiBibG9iRGF0YSwgY29uc3QgQmxvYkRhdGFJdGVt
CiAgICAgZm9yICg7IGl0ZXIgIT0gaXRlbXMuZW5kKCkgJiYgbGVuZ3RoID4gMDsgKytpdGVyKSB7
CiAgICAgICAgIGxvbmcgbG9uZyBjdXJyZW50TGVuZ3RoID0gaXRlci0+bGVuZ3RoKCkgLSBvZmZz
ZXQ7CiAgICAgICAgIGxvbmcgbG9uZyBuZXdMZW5ndGggPSBjdXJyZW50TGVuZ3RoID4gbGVuZ3Ro
ID8gbGVuZ3RoIDogY3VycmVudExlbmd0aDsKLSAgICAgICAgaWYgKGl0ZXItPnR5cGUgPT0gQmxv
YkRhdGFJdGVtOjpEYXRhKQotICAgICAgICAgICAgYmxvYkRhdGEtPmFwcGVuZERhdGEoaXRlci0+
ZGF0YSwgaXRlci0+b2Zmc2V0KCkgKyBvZmZzZXQsIG5ld0xlbmd0aCk7CisgICAgICAgIGlmIChp
dGVyLT50eXBlKCkgPT0gQmxvYkRhdGFJdGVtOjpUeXBlOjpEYXRhKQorICAgICAgICAgICAgYmxv
YkRhdGEtPmFwcGVuZERhdGEoaXRlci0+ZGF0YSgpLCBpdGVyLT5vZmZzZXQoKSArIG9mZnNldCwg
bmV3TGVuZ3RoKTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBBU1NFUlQoaXRlci0+dHlw
ZSA9PSBCbG9iRGF0YUl0ZW06OkZpbGUpOwotICAgICAgICAgICAgYmxvYkRhdGEtPmFwcGVuZEZp
bGUoaXRlci0+ZmlsZS5nZXQoKSwgaXRlci0+b2Zmc2V0KCkgKyBvZmZzZXQsIG5ld0xlbmd0aCk7
CisgICAgICAgICAgICBBU1NFUlQoaXRlci0+dHlwZSgpID09IEJsb2JEYXRhSXRlbTo6VHlwZTo6
RmlsZSk7CisgICAgICAgICAgICBibG9iRGF0YS0+YXBwZW5kRmlsZShpdGVyLT5maWxlKCksIGl0
ZXItPm9mZnNldCgpICsgb2Zmc2V0LCBuZXdMZW5ndGgpOwogICAgICAgICB9CiAgICAgICAgIGxl
bmd0aCAtPSBuZXdMZW5ndGg7CiAgICAgICAgIG9mZnNldCA9IDA7CkBAIC0xMTUsOCArMTE1LDcg
QEAgdm9pZCBCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYg
dXJsLCBSZWZQdHI8QmxvYkRhdGFGaWxlUmUKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwog
ICAgIHJlZ2lzdGVyQmxvYlJlc291cmNlSGFuZGxlQ29uc3RydWN0b3IoKTsKIAotICAgIFJlZlB0
cjxCbG9iRGF0YT4gYmxvYkRhdGEgPSBCbG9iRGF0YTo6Y3JlYXRlKCk7Ci0gICAgYmxvYkRhdGEt
PnNldENvbnRlbnRUeXBlKGNvbnRlbnRUeXBlKTsKKyAgICBSZWZQdHI8QmxvYkRhdGE+IGJsb2JE
YXRhID0gQmxvYkRhdGE6OmNyZWF0ZShjb250ZW50VHlwZSk7CiAKICAgICBibG9iRGF0YS0+YXBw
ZW5kRmlsZShmaWxlKTsKICAgICBtX2Jsb2JzLnNldCh1cmwuc3RyaW5nKCksIGJsb2JEYXRhLnJl
bGVhc2UoKSk7CkBAIC0xMjcsOCArMTI2LDcgQEAgdm9pZCBCbG9iUmVnaXN0cnlJbXBsOjpyZWdp
c3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxCbG9iUGFydD4gYmxvYlBhcnQKICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIHJlZ2lzdGVyQmxvYlJlc291cmNlSGFuZGxl
Q29uc3RydWN0b3IoKTsKIAotICAgIFJlZlB0cjxCbG9iRGF0YT4gYmxvYkRhdGEgPSBCbG9iRGF0
YTo6Y3JlYXRlKCk7Ci0gICAgYmxvYkRhdGEtPnNldENvbnRlbnRUeXBlKGNvbnRlbnRUeXBlKTsK
KyAgICBSZWZQdHI8QmxvYkRhdGE+IGJsb2JEYXRhID0gQmxvYkRhdGE6OmNyZWF0ZShjb250ZW50
VHlwZSk7CiAKICAgICAvLyBUaGUgYmxvYiBkYXRhIGlzIHN0b3JlZCBpbiB0aGUgImNhbm9uaWNh
bCIgd2F5LiBUaGF0IGlzLCBpdCBvbmx5IGNvbnRhaW5zIGEgbGlzdCBvZiBEYXRhIGFuZCBGaWxl
IGl0ZW1zLgogICAgIC8vIDEpIFRoZSBEYXRhIGl0ZW0gaXMgZGVub3RlZCBieSB0aGUgcmF3IGRh
dGEgYW5kIHRoZSByYW5nZS4KQEAgLTEzOSw4ICsxMzcsOSBAQCB2b2lkIEJsb2JSZWdpc3RyeUlt
cGw6OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCwgVmVjdG9yPEJsb2JQYXJ0PiBibG9i
UGFydAogICAgIGZvciAoQmxvYlBhcnQmIHBhcnQgOiBibG9iUGFydHMpIHsKICAgICAgICAgc3dp
dGNoIChwYXJ0LnR5cGUoKSkgewogICAgICAgICBjYXNlIEJsb2JQYXJ0OjpEYXRhOiB7Ci0gICAg
ICAgICAgICBSZWZQdHI8UmF3RGF0YT4gcmF3RGF0YSA9IFJhd0RhdGE6OmNyZWF0ZShwYXJ0Lm1v
dmVEYXRhKCkpOwotICAgICAgICAgICAgYmxvYkRhdGEtPmFwcGVuZERhdGEocmF3RGF0YS5yZWxl
YXNlKCkpOworICAgICAgICAgICAgYXV0byBtb3ZlZERhdGEgPSBwYXJ0Lm1vdmVEYXRhKCk7Cisg
ICAgICAgICAgICBhdXRvIGRhdGEgPSBUaHJlYWRTYWZlRGF0YUJ1ZmZlcjo6YWRvcHRWZWN0b3Io
bW92ZWREYXRhKTsKKyAgICAgICAgICAgIGJsb2JEYXRhLT5hcHBlbmREYXRhKGRhdGEpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBCbG9iUGFydDo6QmxvYjog
ewpAQCAtMTk2LDggKzE5NSw3IEBAIHZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6cmVnaXN0ZXJCbG9i
VVJMRm9yU2xpY2UoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMCiAgICAgICAgIGVu
ZCA9IG9yaWdpbmFsU2l6ZTsKIAogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBuZXdMZW5ndGggPSBl
bmQgLSBzdGFydDsKLSAgICBSZWZQdHI8QmxvYkRhdGE+IG5ld0RhdGEgPSBCbG9iRGF0YTo6Y3Jl
YXRlKCk7Ci0gICAgbmV3RGF0YS0+c2V0Q29udGVudFR5cGUob3JpZ2luYWxEYXRhLT5jb250ZW50
VHlwZSgpKTsKKyAgICBSZWZQdHI8QmxvYkRhdGE+IG5ld0RhdGEgPSBCbG9iRGF0YTo6Y3JlYXRl
KG9yaWdpbmFsRGF0YS0+Y29udGVudFR5cGUoKSk7CiAKICAgICBhcHBlbmRTdG9yYWdlSXRlbXMo
bmV3RGF0YS5nZXQoKSwgb3JpZ2luYWxEYXRhLT5pdGVtcygpLCBzdGFydCwgbmV3TGVuZ3RoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3Vy
Y2VIYW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3Vy
Y2VIYW5kbGUuY3BwCmluZGV4IDYxZjIzMzQuLmNmYWUyMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAKQEAgLTI1
MywxNiArMjUzLDE2IEBAIHZvaWQgQmxvYlJlc291cmNlSGFuZGxlOjpnZXRTaXplRm9yTmV4dCgp
CiAgICAgfQogCiAgICAgY29uc3QgQmxvYkRhdGFJdGVtJiBpdGVtID0gbV9ibG9iRGF0YS0+aXRl
bXMoKS5hdChtX3NpemVJdGVtQ291bnQpOwotICAgIHN3aXRjaCAoaXRlbS50eXBlKSB7Ci0gICAg
Y2FzZSBCbG9iRGF0YUl0ZW06OkRhdGE6CisgICAgc3dpdGNoIChpdGVtLnR5cGUoKSkgeworICAg
IGNhc2UgQmxvYkRhdGFJdGVtOjpUeXBlOjpEYXRhOgogICAgICAgICBkaWRHZXRTaXplKGl0ZW0u
bGVuZ3RoKCkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEJsb2JEYXRhSXRlbTo6RmlsZToK
KyAgICBjYXNlIEJsb2JEYXRhSXRlbTo6VHlwZTo6RmlsZToKICAgICAgICAgLy8gRmlsZXMga25v
dyB0aGVpciBzaXplcywgYnV0IGFza2luZyB0aGUgc3RyZWFtIHRvIHZlcmlmeSB0aGF0IHRoZSBm
aWxlIHdhc24ndCBtb2RpZmllZC4KICAgICAgICAgaWYgKG1fYXN5bmMpCi0gICAgICAgICAgICBt
X2FzeW5jU3RyZWFtLT5nZXRTaXplKGl0ZW0uZmlsZS0+cGF0aCgpLCBpdGVtLmZpbGUtPmV4cGVj
dGVkTW9kaWZpY2F0aW9uVGltZSgpKTsKKyAgICAgICAgICAgIG1fYXN5bmNTdHJlYW0tPmdldFNp
emUoaXRlbS5maWxlKCktPnBhdGgoKSwgaXRlbS5maWxlKCktPmV4cGVjdGVkTW9kaWZpY2F0aW9u
VGltZSgpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgZGlkR2V0U2l6ZShtX3N0cmVhbS0+
Z2V0U2l6ZShpdGVtLmZpbGUtPnBhdGgoKSwgaXRlbS5maWxlLT5leHBlY3RlZE1vZGlmaWNhdGlv
blRpbWUoKSkpOworICAgICAgICAgICAgZGlkR2V0U2l6ZShtX3N0cmVhbS0+Z2V0U2l6ZShpdGVt
LmZpbGUoKS0+cGF0aCgpLCBpdGVtLmZpbGUoKS0+ZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKCkp
KTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CkBAIC0zNTEsOSArMzUxLDkgQEAgaW50IEJsb2JSZXNvdXJjZUhhbmRsZTo6cmVhZFN5
bmMoY2hhciogYnVmLCBpbnQgbGVuZ3RoKQogICAgICAgICAKICAgICAgICAgY29uc3QgQmxvYkRh
dGFJdGVtJiBpdGVtID0gbV9ibG9iRGF0YS0+aXRlbXMoKS5hdChtX3JlYWRJdGVtQ291bnQpOwog
ICAgICAgICBpbnQgYnl0ZXNSZWFkID0gMDsKLSAgICAgICAgaWYgKGl0ZW0udHlwZSA9PSBCbG9i
RGF0YUl0ZW06OkRhdGEpCisgICAgICAgIGlmIChpdGVtLnR5cGUoKSA9PSBCbG9iRGF0YUl0ZW06
OlR5cGU6OkRhdGEpCiAgICAgICAgICAgICBieXRlc1JlYWQgPSByZWFkRGF0YVN5bmMoaXRlbSwg
YnVmICsgb2Zmc2V0LCByZW1haW5pbmcpOwotICAgICAgICBlbHNlIGlmIChpdGVtLnR5cGUgPT0g
QmxvYkRhdGFJdGVtOjpGaWxlKQorICAgICAgICBlbHNlIGlmIChpdGVtLnR5cGUoKSA9PSBCbG9i
RGF0YUl0ZW06OlR5cGU6OkZpbGUpCiAgICAgICAgICAgICBieXRlc1JlYWQgPSByZWFkRmlsZVN5
bmMoaXRlbSwgYnVmICsgb2Zmc2V0LCByZW1haW5pbmcpOwogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTM4OSw3ICszODksNyBAQCBpbnQgQmxvYlJl
c291cmNlSGFuZGxlOjpyZWFkRGF0YVN5bmMoY29uc3QgQmxvYkRhdGFJdGVtJiBpdGVtLCBjaGFy
KiBidWYsIGludCBsZQogICAgIGludCBieXRlc1RvUmVhZCA9IChsZW5ndGggPiByZW1haW5pbmcp
ID8gc3RhdGljX2Nhc3Q8aW50PihyZW1haW5pbmcpIDogbGVuZ3RoOwogICAgIGlmIChieXRlc1Rv
UmVhZCA+IG1fdG90YWxSZW1haW5pbmdTaXplKQogICAgICAgICBieXRlc1RvUmVhZCA9IHN0YXRp
Y19jYXN0PGludD4obV90b3RhbFJlbWFpbmluZ1NpemUpOwotICAgIG1lbWNweShidWYsIGl0ZW0u
ZGF0YS0+ZGF0YSgpICsgaXRlbS5vZmZzZXQoKSArIG1fY3VycmVudEl0ZW1SZWFkU2l6ZSwgYnl0
ZXNUb1JlYWQpOworICAgIG1lbWNweShidWYsIGl0ZW0uZGF0YSgpLmRhdGEoKSArIGl0ZW0ub2Zm
c2V0KCkgKyBtX2N1cnJlbnRJdGVtUmVhZFNpemUsIGJ5dGVzVG9SZWFkKTsKICAgICBtX3RvdGFs
UmVtYWluaW5nU2l6ZSAtPSBieXRlc1RvUmVhZDsKIAogICAgIG1fY3VycmVudEl0ZW1SZWFkU2l6
ZSArPSBieXRlc1RvUmVhZDsKQEAgLTQxMSw3ICs0MTEsNyBAQCBpbnQgQmxvYlJlc291cmNlSGFu
ZGxlOjpyZWFkRmlsZVN5bmMoY29uc3QgQmxvYkRhdGFJdGVtJiBpdGVtLCBjaGFyKiBidWYsIGlu
dCBsZQogICAgICAgICBsb25nIGxvbmcgYnl0ZXNUb1JlYWQgPSBtX2l0ZW1MZW5ndGhMaXN0W21f
cmVhZEl0ZW1Db3VudF0gLSBtX2N1cnJlbnRJdGVtUmVhZFNpemU7CiAgICAgICAgIGlmIChieXRl
c1RvUmVhZCA+IG1fdG90YWxSZW1haW5pbmdTaXplKQogICAgICAgICAgICAgYnl0ZXNUb1JlYWQg
PSBtX3RvdGFsUmVtYWluaW5nU2l6ZTsKLSAgICAgICAgYm9vbCBzdWNjZXNzID0gbV9zdHJlYW0t
Pm9wZW5Gb3JSZWFkKGl0ZW0uZmlsZS0+cGF0aCgpLCBpdGVtLm9mZnNldCgpICsgbV9jdXJyZW50
SXRlbVJlYWRTaXplLCBieXRlc1RvUmVhZCk7CisgICAgICAgIGJvb2wgc3VjY2VzcyA9IG1fc3Ry
ZWFtLT5vcGVuRm9yUmVhZChpdGVtLmZpbGUoKS0+cGF0aCgpLCBpdGVtLm9mZnNldCgpICsgbV9j
dXJyZW50SXRlbVJlYWRTaXplLCBieXRlc1RvUmVhZCk7CiAgICAgICAgIG1fY3VycmVudEl0ZW1S
ZWFkU2l6ZSA9IDA7CiAgICAgICAgIGlmICghc3VjY2VzcykgewogICAgICAgICAgICAgbV9lcnJv
ckNvZGUgPSBub3RSZWFkYWJsZUVycm9yOwpAQCAtNDUyLDkgKzQ1Miw5IEBAIHZvaWQgQmxvYlJl
c291cmNlSGFuZGxlOjpyZWFkQXN5bmMoKQogICAgIH0KIAogICAgIGNvbnN0IEJsb2JEYXRhSXRl
bSYgaXRlbSA9IG1fYmxvYkRhdGEtPml0ZW1zKCkuYXQobV9yZWFkSXRlbUNvdW50KTsKLSAgICBp
ZiAoaXRlbS50eXBlID09IEJsb2JEYXRhSXRlbTo6RGF0YSkKKyAgICBpZiAoaXRlbS50eXBlKCkg
PT0gQmxvYkRhdGFJdGVtOjpUeXBlOjpEYXRhKQogICAgICAgICByZWFkRGF0YUFzeW5jKGl0ZW0p
OwotICAgIGVsc2UgaWYgKGl0ZW0udHlwZSA9PSBCbG9iRGF0YUl0ZW06OkZpbGUpCisgICAgZWxz
ZSBpZiAoaXRlbS50eXBlKCkgPT0gQmxvYkRhdGFJdGVtOjpUeXBlOjpGaWxlKQogICAgICAgICBy
ZWFkRmlsZUFzeW5jKGl0ZW0pOwogICAgIGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CkBAIC00NjQsMTIgKzQ2NCwxNCBAQCB2b2lkIEJsb2JSZXNvdXJjZUhhbmRsZTo6cmVhZERh
dGFBc3luYyhjb25zdCBCbG9iRGF0YUl0ZW0mIGl0ZW0pCiB7CiAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKICAgICBBU1NFUlQobV9hc3luYyk7CisgICAgQVNTRVJUKGl0ZW0uZGF0YSgpLmRh
dGEoKSk7CisKICAgICBSZWY8QmxvYlJlc291cmNlSGFuZGxlPiBwcm90ZWN0KCp0aGlzKTsKIAog
ICAgIGxvbmcgbG9uZyBieXRlc1RvUmVhZCA9IGl0ZW0ubGVuZ3RoKCkgLSBtX2N1cnJlbnRJdGVt
UmVhZFNpemU7CiAgICAgaWYgKGJ5dGVzVG9SZWFkID4gbV90b3RhbFJlbWFpbmluZ1NpemUpCiAg
ICAgICAgIGJ5dGVzVG9SZWFkID0gbV90b3RhbFJlbWFpbmluZ1NpemU7Ci0gICAgY29uc3VtZURh
dGEoaXRlbS5kYXRhLT5kYXRhKCkgKyBpdGVtLm9mZnNldCgpICsgbV9jdXJyZW50SXRlbVJlYWRT
aXplLCBzdGF0aWNfY2FzdDxpbnQ+KGJ5dGVzVG9SZWFkKSk7CisgICAgY29uc3VtZURhdGEocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oaXRlbS5kYXRhKCkuZGF0YSgpLT5kYXRhKCkpICsg
aXRlbS5vZmZzZXQoKSArIG1fY3VycmVudEl0ZW1SZWFkU2l6ZSwgc3RhdGljX2Nhc3Q8aW50Pihi
eXRlc1RvUmVhZCkpOwogICAgIG1fY3VycmVudEl0ZW1SZWFkU2l6ZSA9IDA7CiB9CiAKQEAgLTQ4
Niw3ICs0ODgsNyBAQCB2b2lkIEJsb2JSZXNvdXJjZUhhbmRsZTo6cmVhZEZpbGVBc3luYyhjb25z
dCBCbG9iRGF0YUl0ZW0mIGl0ZW0pCiAgICAgbG9uZyBsb25nIGJ5dGVzVG9SZWFkID0gbV9pdGVt
TGVuZ3RoTGlzdFttX3JlYWRJdGVtQ291bnRdIC0gbV9jdXJyZW50SXRlbVJlYWRTaXplOwogICAg
IGlmIChieXRlc1RvUmVhZCA+IG1fdG90YWxSZW1haW5pbmdTaXplKQogICAgICAgICBieXRlc1Rv
UmVhZCA9IHN0YXRpY19jYXN0PGludD4obV90b3RhbFJlbWFpbmluZ1NpemUpOwotICAgIG1fYXN5
bmNTdHJlYW0tPm9wZW5Gb3JSZWFkKGl0ZW0uZmlsZS0+cGF0aCgpLCBpdGVtLm9mZnNldCgpICsg
bV9jdXJyZW50SXRlbVJlYWRTaXplLCBieXRlc1RvUmVhZCk7CisgICAgbV9hc3luY1N0cmVhbS0+
b3BlbkZvclJlYWQoaXRlbS5maWxlKCktPnBhdGgoKSwgaXRlbS5vZmZzZXQoKSArIG1fY3VycmVu
dEl0ZW1SZWFkU2l6ZSwgYnl0ZXNUb1JlYWQpOwogICAgIG1fZmlsZU9wZW5lZCA9IHRydWU7CiAg
ICAgbV9jdXJyZW50SXRlbVJlYWRTaXplID0gMDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5oCmluZGV4IDFhZWE2MTUuLmNl
ODY5NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJl
c291cmNlSGFuZGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9i
UmVzb3VyY2VIYW5kbGUuaApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBCbG9iRGF0YTsKIGNsYXNz
IEZpbGVTdHJlYW07CiBjbGFzcyBSZXNvdXJjZUhhbmRsZUNsaWVudDsKIGNsYXNzIFJlc291cmNl
UmVxdWVzdDsKLXN0cnVjdCBCbG9iRGF0YUl0ZW07CitjbGFzcyBCbG9iRGF0YUl0ZW07CiAKIGNs
YXNzIEJsb2JSZXNvdXJjZUhhbmRsZSBmaW5hbCA6IHB1YmxpYyBGaWxlU3RyZWFtQ2xpZW50LCBw
dWJsaWMgUmVzb3VyY2VIYW5kbGUgIHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKaW5kZXggODAzMzVkOC4uODg1YTk4MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKQEAgLTI5MywxMCArMjkz
LDExIEBAIHN0YXRpYyB2b2lkIGFwcGVuZEJsb2JSZXNvbHZlZChGb3JtRGF0YSogZm9ybURhdGEs
IGNvbnN0IFVSTCYgdXJsKQogICAgIGNvbnN0IEJsb2JEYXRhSXRlbUxpc3Q6OmNvbnN0X2l0ZXJh
dG9yIGl0ZW5kID0gYmxvYkRhdGEtPml0ZW1zKCkuZW5kKCk7CiAgICAgZm9yICg7IGl0ICE9IGl0
ZW5kOyArK2l0KSB7CiAgICAgICAgIGNvbnN0IEJsb2JEYXRhSXRlbSYgYmxvYkl0ZW0gPSAqaXQ7
Ci0gICAgICAgIGlmIChibG9iSXRlbS50eXBlID09IEJsb2JEYXRhSXRlbTo6RGF0YSkKLSAgICAg
ICAgICAgIGZvcm1EYXRhLT5hcHBlbmREYXRhKGJsb2JJdGVtLmRhdGEtPmRhdGEoKSArIHN0YXRp
Y19jYXN0PGludD4oYmxvYkl0ZW0ub2Zmc2V0KCkpLCBzdGF0aWNfY2FzdDxpbnQ+KGJsb2JJdGVt
Lmxlbmd0aCgpKSk7Ci0gICAgICAgIGVsc2UgaWYgKGJsb2JJdGVtLnR5cGUgPT0gQmxvYkRhdGFJ
dGVtOjpGaWxlKQotICAgICAgICAgICAgZm9ybURhdGEtPmFwcGVuZEZpbGVSYW5nZShibG9iSXRl
bS5maWxlLT5wYXRoKCksIGJsb2JJdGVtLm9mZnNldCgpLCBibG9iSXRlbS5sZW5ndGgoKSwgYmxv
Ykl0ZW0uZmlsZS0+ZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKCkpOworICAgICAgICBpZiAoYmxv
Ykl0ZW0udHlwZSgpID09IEJsb2JEYXRhSXRlbTo6VHlwZTo6RGF0YSkgeworICAgICAgICAgICAg
QVNTRVJUKGJsb2JJdGVtLmRhdGEoKS5kYXRhKCkpOworICAgICAgICAgICAgZm9ybURhdGEtPmFw
cGVuZERhdGEoYmxvYkl0ZW0uZGF0YSgpLmRhdGEoKS0+ZGF0YSgpICsgc3RhdGljX2Nhc3Q8aW50
PihibG9iSXRlbS5vZmZzZXQoKSksIHN0YXRpY19jYXN0PGludD4oYmxvYkl0ZW0ubGVuZ3RoKCkp
KTsKKyAgICAgICAgfSBlbHNlIGlmIChibG9iSXRlbS50eXBlKCkgPT0gQmxvYkRhdGFJdGVtOjpU
eXBlOjpGaWxlKQorICAgICAgICAgICAgZm9ybURhdGEtPmFwcGVuZEZpbGVSYW5nZShibG9iSXRl
bS5maWxlKCktPnBhdGgoKSwgYmxvYkl0ZW0ub2Zmc2V0KCksIGJsb2JJdGVtLmxlbmd0aCgpLCBi
bG9iSXRlbS5maWxlKCktPmV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSgpKTsKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVT
b3VwLmNwcAppbmRleCBkYTEwMDVjLi4yMzUwNTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcApA
QCAtNzY5LDMwICs3NjksMzAgQEAgc3RhdGljIGJvb2wgYWRkRmlsZVRvU291cE1lc3NhZ2VCb2R5
KFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGZpbGVOYW0KIAogc3RhdGljIGJv
b2wgYmxvYklzT3V0T2ZEYXRlKGNvbnN0IEJsb2JEYXRhSXRlbSYgYmxvYkl0ZW0pCiB7Ci0gICAg
QVNTRVJUKGJsb2JJdGVtLnR5cGUgPT0gQmxvYkRhdGFJdGVtOjpGaWxlKTsKLSAgICBpZiAoIWlz
VmFsaWRGaWxlVGltZShibG9iSXRlbS5maWxlLT5leHBlY3RlZE1vZGlmaWNhdGlvblRpbWUoKSkp
CisgICAgQVNTRVJUKGJsb2JJdGVtLnR5cGUgPT0gQmxvYkRhdGFJdGVtOjpUeXBlOjpGaWxlKTsK
KyAgICBpZiAoIWlzVmFsaWRGaWxlVGltZShibG9iSXRlbS5maWxlKCktPmV4cGVjdGVkTW9kaWZp
Y2F0aW9uVGltZSgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgdGltZV90IGZpbGVN
b2RpZmljYXRpb25UaW1lOwotICAgIGlmICghZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoYmxvYkl0
ZW0uZmlsZS0+cGF0aCgpLCBmaWxlTW9kaWZpY2F0aW9uVGltZSkpCisgICAgaWYgKCFnZXRGaWxl
TW9kaWZpY2F0aW9uVGltZShibG9iSXRlbS5maWxlKCktPnBhdGgoKSwgZmlsZU1vZGlmaWNhdGlv
blRpbWUpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIHJldHVybiBmaWxlTW9kaWZpY2F0
aW9uVGltZSAhPSBzdGF0aWNfY2FzdDx0aW1lX3Q+KGJsb2JJdGVtLmZpbGUtPmV4cGVjdGVkTW9k
aWZpY2F0aW9uVGltZSgpKTsKKyAgICByZXR1cm4gZmlsZU1vZGlmaWNhdGlvblRpbWUgIT0gc3Rh
dGljX2Nhc3Q8dGltZV90PihibG9iSXRlbS5maWxlKCktPmV4cGVjdGVkTW9kaWZpY2F0aW9uVGlt
ZSgpKTsKIH0KIAogc3RhdGljIHZvaWQgYWRkRW5jb2RlZEJsb2JJdGVtVG9Tb3VwTWVzc2FnZUJv
ZHkoU291cE1lc3NhZ2UqIG1lc3NhZ2UsIGNvbnN0IEJsb2JEYXRhSXRlbSYgYmxvYkl0ZW0sIHVu
c2lnbmVkIGxvbmcmIHRvdGFsQm9keVNpemUpCiB7Ci0gICAgaWYgKGJsb2JJdGVtLnR5cGUgPT0g
QmxvYkRhdGFJdGVtOjpEYXRhKSB7CisgICAgaWYgKGJsb2JJdGVtLnR5cGUoKSA9PSBCbG9iRGF0
YUl0ZW06OlR5cGU6OkRhdGEpIHsKICAgICAgICAgdG90YWxCb2R5U2l6ZSArPSBibG9iSXRlbS5s
ZW5ndGgoKTsKLSAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfYXBwZW5kKG1lc3NhZ2UtPnJlcXVl
c3RfYm9keSwgU09VUF9NRU1PUllfVEVNUE9SQVJZLCBibG9iSXRlbS5kYXRhLT5kYXRhKCkgKyBi
bG9iSXRlbS5vZmZzZXQoKSwgYmxvYkl0ZW0ubGVuZ3RoKCkpOworICAgICAgICBzb3VwX21lc3Nh
Z2VfYm9keV9hcHBlbmQobWVzc2FnZS0+cmVxdWVzdF9ib2R5LCBTT1VQX01FTU9SWV9URU1QT1JB
UlksIGJsb2JJdGVtLmRhdGEoKS5kYXRhKCktPmRhdGEoKSArIGJsb2JJdGVtLm9mZnNldCgpLCBi
bG9iSXRlbS5sZW5ndGgoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBBU1NFUlQo
YmxvYkl0ZW0udHlwZSA9PSBCbG9iRGF0YUl0ZW06OkZpbGUpOworICAgIEFTU0VSVChibG9iSXRl
bS50eXBlID09IEJsb2JEYXRhSXRlbTo6VHlwZTo6RmlsZSk7CiAgICAgaWYgKGJsb2JJc091dE9m
RGF0ZShibG9iSXRlbSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGFkZEZpbGVUb1NvdXBNZXNz
YWdlQm9keShtZXNzYWdlLCBibG9iSXRlbS5maWxlLT5wYXRoKCksIGJsb2JJdGVtLm9mZnNldCgp
LCBibG9iSXRlbS5sZW5ndGgoKSA9PSBCbG9iRGF0YUl0ZW06OnRvRW5kT2ZGaWxlID8gMCA6IGJs
b2JJdGVtLmxlbmd0aCgpLCAgdG90YWxCb2R5U2l6ZSk7CisgICAgYWRkRmlsZVRvU291cE1lc3Nh
Z2VCb2R5KG1lc3NhZ2UsIGJsb2JJdGVtLmZpbGUoKS0+cGF0aCgpLCBibG9iSXRlbS5vZmZzZXQo
KSwgYmxvYkl0ZW0ubGVuZ3RoKCkgPT0gQmxvYkRhdGFJdGVtOjp0b0VuZE9mRmlsZSA/IDAgOiBi
bG9iSXRlbS5sZW5ndGgoKSwgIHRvdGFsQm9keVNpemUpOwogfQogCiBzdGF0aWMgdm9pZCBhZGRF
bmNvZGVkQmxvYlRvU291cE1lc3NhZ2VCb2R5KFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBjb25zdCBG
b3JtRGF0YUVsZW1lbnQmIGVsZW1lbnQsIHVuc2lnbmVkIGxvbmcmIHRvdGFsQm9keVNpemUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xpbmVFbmRpbmcuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9MaW5lRW5kaW5nLmNwcAppbmRleCBjMGIwNzY1
Li40MjU3NDI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xpbmVF
bmRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTGluZUVuZGluZy5j
cHAKQEAgLTE1MywxMCArMTUzLDggQEAgdm9pZCBpbnRlcm5hbE5vcm1hbGl6ZUxpbmVFbmRpbmdz
VG9DUkxGKGNvbnN0IENTdHJpbmcmIGZyb20sIE91dHB1dEJ1ZmZlciYgYnVmZmUKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi12b2lkIG5vcm1hbGl6ZVRvQ1JPckxGKGNvbnN0IENTdHJpbmcmIGZy
b20sIFZlY3RvcjxjaGFyPiYgcmVzdWx0LCBib29sIHRvQ1IpOwotCiAvLyBOb3JtYWxpemUgYWxs
IGxpbmUtZW5kaW5ncyB0byBDUiBvciBMRi4KLXZvaWQgbm9ybWFsaXplVG9DUk9yTEYoY29uc3Qg
Q1N0cmluZyYgZnJvbSwgVmVjdG9yPGNoYXI+JiByZXN1bHQsIGJvb2wgdG9DUikKK3N0YXRpYyB2
b2lkIG5vcm1hbGl6ZVRvQ1JPckxGKGNvbnN0IENTdHJpbmcmIGZyb20sIFZlY3Rvcjx1aW50OF90
PiYgcmVzdWx0LCBib29sIHRvQ1IpCiB7CiAgICAgLy8gQ29tcHV0ZSB0aGUgbmV3IGxlbmd0aC4K
ICAgICBzaXplX3QgbmV3TGVuID0gMDsKQEAgLTE4MSw3ICsxNzksNyBAQCB2b2lkIG5vcm1hbGl6
ZVRvQ1JPckxGKGNvbnN0IENTdHJpbmcmIGZyb20sIFZlY3RvcjxjaGFyPiYgcmVzdWx0LCBib29s
IHRvQ1IpCiAgICAgcCA9IGZyb20uZGF0YSgpOwogICAgIHNpemVfdCBvbGRSZXN1bHRTaXplID0g
cmVzdWx0LnNpemUoKTsKICAgICByZXN1bHQuZ3JvdyhvbGRSZXN1bHRTaXplICsgbmV3TGVuKTsK
LSAgICBjaGFyKiBxID0gcmVzdWx0LmRhdGEoKSArIG9sZFJlc3VsdFNpemU7CisgICAgdWludDhf
dCogcSA9IHJlc3VsdC5kYXRhKCkgKyBvbGRSZXN1bHRTaXplOwogCiAgICAgLy8gSWYgbm8gbmVl
ZCB0byBmaXggdGhlIHN0cmluZywganVzdCBjb3B5IHRoZSBzdHJpbmcgb3Zlci4KICAgICBpZiAo
IW5lZWRGaXgpIHsKQEAgLTIxNCwyMyArMjEyLDEzIEBAIENTdHJpbmcgbm9ybWFsaXplTGluZUVu
ZGluZ3NUb0NSTEYoY29uc3QgQ1N0cmluZyYgZnJvbSkKICAgICByZXR1cm4gYnVmZmVyLmJ1ZmZl
cigpOwogfQogCi12b2lkIG5vcm1hbGl6ZUxpbmVFbmRpbmdzVG9DUihjb25zdCBDU3RyaW5nJiBm
cm9tLCBWZWN0b3I8Y2hhcj4mIHJlc3VsdCkKLXsKLSAgICBub3JtYWxpemVUb0NST3JMRihmcm9t
LCByZXN1bHQsIHRydWUpOwotfQotCi12b2lkIG5vcm1hbGl6ZUxpbmVFbmRpbmdzVG9MRihjb25z
dCBDU3RyaW5nJiBmcm9tLCBWZWN0b3I8Y2hhcj4mIHJlc3VsdCkKLXsKLSAgICBub3JtYWxpemVU
b0NST3JMRihmcm9tLCByZXN1bHQsIGZhbHNlKTsKLX0KLQotdm9pZCBub3JtYWxpemVMaW5lRW5k
aW5nc1RvTmF0aXZlKGNvbnN0IENTdHJpbmcmIGZyb20sIFZlY3RvcjxjaGFyPiYgcmVzdWx0KQor
dm9pZCBub3JtYWxpemVMaW5lRW5kaW5nc1RvTmF0aXZlKGNvbnN0IENTdHJpbmcmIGZyb20sIFZl
Y3Rvcjx1aW50OF90PiYgcmVzdWx0KQogewogI2lmIE9TKFdJTkRPV1MpCiAgICAgVmVjdG9yQ2hh
ckFwcGVuZEJ1ZmZlciBidWZmZXIocmVzdWx0KTsKICAgICBpbnRlcm5hbE5vcm1hbGl6ZUxpbmVF
bmRpbmdzVG9DUkxGKGZyb20sIGJ1ZmZlcik7CiAjZWxzZQotICAgIG5vcm1hbGl6ZUxpbmVFbmRp
bmdzVG9MRihmcm9tLCByZXN1bHQpOworICAgIG5vcm1hbGl6ZVRvQ1JPckxGKGZyb20sIHJlc3Vs
dCwgZmFsc2UpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvTGluZUVuZGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9MaW5l
RW5kaW5nLmgKaW5kZXggNDMwNmNlOC4uYTQxY2I4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9MaW5lRW5kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9MaW5lRW5kaW5nLmgKQEAgLTQwLDE1ICs0MCw5IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIC8vIE5vcm1hbGl6ZSBhbGwgbGluZS1lbmRpbmdzIGluIHRoZSBnaXZlbiBzdHJpbmcgdG8g
Q1JMRi4KIENTdHJpbmcgbm9ybWFsaXplTGluZUVuZGluZ3NUb0NSTEYoY29uc3QgQ1N0cmluZyYg
ZnJvbSk7CiAKLS8vIE5vcm1hbGl6ZSBhbGwgbGluZS1lbmRpbmdzIGluIHRoZSBnaXZlbiBzdHJp
bmcgdG8gQ1IgYW5kIGFwcGVuZCB0aGUgcmVzdWx0IHRvIHRoZSBnaXZlbiBidWZmZXIuCi12b2lk
IG5vcm1hbGl6ZUxpbmVFbmRpbmdzVG9DUihjb25zdCBDU3RyaW5nJiBmcm9tLCBWZWN0b3I8Y2hh
cj4mIHJlc3VsdCk7Ci0KLS8vIE5vcm1hbGl6ZSBhbGwgbGluZS1lbmRpbmdzIGluIHRoZSBnaXZl
biBzdHJpbmcgdG8gTEYgYW5kIGFwcGVuZCB0aGUgcmVzdWx0IHRvIHRoZSBnaXZlbiBidWZmZXIu
Ci12b2lkIG5vcm1hbGl6ZUxpbmVFbmRpbmdzVG9MRihjb25zdCBDU3RyaW5nJiBmcm9tLCBWZWN0
b3I8Y2hhcj4mIHJlc3VsdCk7Ci0KIC8vIE5vcm1hbGl6ZSBhbGwgbGluZS1lbmRpbmdzIGluIHRo
ZSBnaXZlbiBzdHJpbmcgdG8gdGhlIG5hdGl2ZSBsaW5lLWVuZGluZ3MgYW5kIGFwcGVuZCB0aGUg
cmVzdWx0IHRvIHRoZSBnaXZlbiBidWZmZXIuCiAvLyAoTm9ybWFsaXplIHRvIENSTEYgb24gV2lu
ZG93cyBhbmQgbm9ybWFsaXplIHRvIExGIG9uIGFsbCBvdGhlciBwbGF0Zm9ybXMuKQotdm9pZCBu
b3JtYWxpemVMaW5lRW5kaW5nc1RvTmF0aXZlKGNvbnN0IENTdHJpbmcmIGZyb20sIFZlY3Rvcjxj
aGFyPiYgcmVzdWx0KTsKK3ZvaWQgbm9ybWFsaXplTGluZUVuZGluZ3NUb05hdGl2ZShjb25zdCBD
U3RyaW5nJiBmcm9tLCBWZWN0b3I8dWludDhfdD4mIHJlc3VsdCk7CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggMDA0MTQz
ZS4uZDA3NjNmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC0yMzgs
NyArMjM4LDcgQEAgQmxvYiogWE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNlQmxvYigpCiAgICAgaWYg
KCFtX3Jlc3BvbnNlQmxvYikgewogICAgICAgICBpZiAobV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIp
IHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBqdXN0IHJlY2VpdmVkIHRoZSBkYXRhIGZyb20g
TmV0d29ya1Byb2Nlc3MsIGFuZCBhcmUgc2VuZGluZyBpdCBiYWNrLiBUaGlzIGlzIGluZWZmaWNp
ZW50LgotICAgICAgICAgICAgVmVjdG9yPGNoYXI+IGRhdGE7CisgICAgICAgICAgICBWZWN0b3I8
dWludDhfdD4gZGF0YTsKICAgICAgICAgICAgIGRhdGEuYXBwZW5kKG1fYmluYXJ5UmVzcG9uc2VC
dWlsZGVyLT5kYXRhKCksIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT5zaXplKCkpOwogICAgICAg
ICAgICAgU3RyaW5nIG5vcm1hbGl6ZWRDb250ZW50VHlwZSA9IEJsb2I6Om5vcm1hbGl6ZWRDb250
ZW50VHlwZShyZXNwb25zZU1JTUVUeXBlKCkpOyAvLyByZXNwb25zZU1JTUVUeXBlIGRlZmF1bHRz
IHRvIHRleHQveG1sIHdoaWNoIG1heSBiZSBpbmNvcnJlY3QuCiAgICAgICAgICAgICBtX3Jlc3Bv
bnNlQmxvYiA9IEJsb2I6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpLCBub3JtYWxpemVkQ29udGVudFR5
cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCmluZGV4IGVjNWU4NTkuLjlkOTYwMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNSBAQAorMjAxNi0wMy0zMCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgTWFrZSBCbG9iRGF0YSB1c2UgVGhyZWFkU2FmZVNoYXJlZEJ1ZmZlciBpbnN0ZWFk
IG9mIFJhd0RhdGEuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTYwNDEKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Jsb2JSZWdpc3RyeTo6ZmlsZXNJbkJsb2IpOgorICAg
ICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpB
cmd1bWVudENvZGVyPEJsb2JQYXJ0Pjo6ZGVjb2RlKToKKwogMjAxNi0wMy0zMCAgTXlsZXMgQy4g
TWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSByZWZlcmVuY2Vz
IGluc3RlYWQgb2YgcG9pbnRlcnMgaW4gc2Nyb2xsYmFyLXJlbGF0ZWQgY29kZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lz
dHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Js
b2JSZWdpc3RyeS5jcHAKaW5kZXggZTk5ZDdjZi4uMDI1ZTJmYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVn
aXN0cnkuY3BwCkBAIC0xNDEsOCArMTQxLDggQEAgVmVjdG9yPFJlZlB0cjxCbG9iRGF0YUZpbGVS
ZWZlcmVuY2U+PiBOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpmaWxlc0luQmxvYihOZXR3b3JrQ28KIAog
ICAgIFZlY3RvcjxSZWZQdHI8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4gcmVzdWx0OwogICAgIGZv
ciAoY29uc3QgQmxvYkRhdGFJdGVtJiBpdGVtIDogYmxvYkRhdGEtPml0ZW1zKCkpIHsKLSAgICAg
ICAgaWYgKGl0ZW0udHlwZSA9PSBCbG9iRGF0YUl0ZW06OkZpbGUpCi0gICAgICAgICAgICByZXN1
bHQuYXBwZW5kKGl0ZW0uZmlsZSk7CisgICAgICAgIGlmIChpdGVtLnR5cGUoKSA9PSBCbG9iRGF0
YUl0ZW06OlR5cGU6OkZpbGUpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGl0ZW0uZmlsZSgp
KTsKICAgICB9CiAKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCA3YzJjZjMyLi4wNDkwZmVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAt
MTg2MSw3ICsxODYxLDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPEJsb2JQYXJ0Pjo6ZGVjb2RlKEFy
Z3VtZW50RGVjb2RlciYgZGVjb2RlciwgQmxvYlBhcnQmIGJsb2JQYXIKIAogICAgIHN3aXRjaCAo
dHlwZSkgewogICAgIGNhc2UgQmxvYlBhcnQ6OkRhdGE6IHsKLSAgICAgICAgVmVjdG9yPGNoYXI+
IGRhdGE7CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwogICAgICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGRhdGEpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBibG9i
UGFydCA9IEJsb2JQYXJ0KFdURk1vdmUoZGF0YSkpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>