<?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>97886</bug_id>
          
          <creation_ts>2012-09-28 03:46:47 -0700</creation_ts>
          <short_desc>[EFL][WK2] Remove &quot;web&quot; word from ewk_web_error APIs</short_desc>
          <delta_ts>2012-10-05 04:32:59 -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>WebKit EFL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jongseok Yang">js45.yang</reporter>
          <assigned_to name="Jongseok Yang">js45.yang</assigned_to>
          <cc>cdumez</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>rakuco</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>730458</commentid>
    <comment_count>0</comment_count>
    <who name="Jongseok Yang">js45.yang</who>
    <bug_when>2012-09-28 03:46:47 -0700</bug_when>
    <thetext>&quot;ewk&quot; means &quot;EFL WebKit&quot; and the name of orignal WK APIs for ewk_web_error APIs does not include &quot;web&quot; word.
So, it&apos; better to remove &quot;web&quot; word from them.

The patch will be uploaded soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735144</commentid>
    <comment_count>1</comment_count>
      <attachid>167208</attachid>
    <who name="Jongseok Yang">js45.yang</who>
    <bug_when>2012-10-04 17:08:45 -0700</bug_when>
    <thetext>Created attachment 167208
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735147</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-04 17:11:26 -0700</bug_when>
    <thetext>Attachment 167208 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1
Source/WebKit2/UIProcess/API/efl/EWebKit2.h:35:  Alphabetical sorting problem.  [build/include_order] [4]
Tools/MiniBrowser/efl/main.c:194:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 2 in 19 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735152</commentid>
    <comment_count>3</comment_count>
      <attachid>167211</attachid>
    <who name="Jongseok Yang">js45.yang</who>
    <bug_when>2012-10-04 17:15:24 -0700</bug_when>
    <thetext>Created attachment 167211
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735154</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-04 17:19:31 -0700</bug_when>
    <thetext>Attachment 167211 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1
Tools/ChangeLog:1:  ChangeLog entry has no bug number  [changelog/bugnumber] [5]
Source/WebKit2/ChangeLog:1:  ChangeLog entry has no bug number  [changelog/bugnumber] [5]
Tools/MiniBrowser/efl/main.c:194:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 3 in 19 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735161</commentid>
    <comment_count>5</comment_count>
      <attachid>167213</attachid>
    <who name="Jongseok Yang">js45.yang</who>
    <bug_when>2012-10-04 17:23:29 -0700</bug_when>
    <thetext>Created attachment 167213
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735162</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-04 17:26:07 -0700</bug_when>
    <thetext>Attachment 167213 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1
Tools/MiniBrowser/efl/main.c:194:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 1 in 19 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735167</commentid>
    <comment_count>7</comment_count>
      <attachid>167213</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-10-04 17:30:20 -0700</bug_when>
    <thetext>Comment on attachment 167213
Patch

Did you run Tools/Scripts/check-webkit-style before submitting patch ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735193</commentid>
    <comment_count>8</comment_count>
      <attachid>167216</attachid>
    <who name="Jongseok Yang">js45.yang</who>
    <bug_when>2012-10-04 17:51:00 -0700</bug_when>
    <thetext>Created attachment 167216
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735195</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-04 17:53:12 -0700</bug_when>
    <thetext>Attachment 167216 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1
Tools/MiniBrowser/efl/main.c:194:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 1 in 19 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735198</commentid>
    <comment_count>10</comment_count>
      <attachid>167218</attachid>
    <who name="Jongseok Yang">js45.yang</who>
    <bug_when>2012-10-04 17:55:45 -0700</bug_when>
    <thetext>Created attachment 167218
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735199</commentid>
    <comment_count>11</comment_count>
    <who name="Jongseok Yang">js45.yang</who>
    <bug_when>2012-10-04 17:57:08 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 167213 [details])
&gt; Did you run Tools/Scripts/check-webkit-style before submitting patch ?

I&apos;m sorry that I uploaded wrong patch file.
Please check new one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735215</commentid>
    <comment_count>12</comment_count>
      <attachid>167218</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-10-04 18:40:16 -0700</bug_when>
    <thetext>Comment on attachment 167218
Patch

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

&gt; Source/WebKit2/ChangeLog:10
&gt; +

It would be good if you say where this removal is discussed.

http://lists.webkit.org/pipermail/webkit-efl/2012-September/000308.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735357</commentid>
    <comment_count>13</comment_count>
      <attachid>167218</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-10-04 22:40:18 -0700</bug_when>
    <thetext>Comment on attachment 167218
Patch

LGTM. Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735452</commentid>
    <comment_count>14</comment_count>
      <attachid>167218</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-05 00:39:40 -0700</bug_when>
    <thetext>Comment on attachment 167218
Patch

Rejecting attachment 167218 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
web_error_private.h&apos;
patching file Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_cookie_manager.cpp
patching file Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_download_job.cpp
patching file Tools/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file Tools/MiniBrowser/efl/main.c
Hunk #1 succeeded at 189 (offset 2 lines).

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--force&apos;, u&apos;--reviewer&apos;, u&apos;Gyuyoung K...&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue

Full output: http://queues.webkit.org/results/14171621</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735508</commentid>
    <comment_count>15</comment_count>
      <attachid>167287</attachid>
    <who name="Jongseok Yang">js45.yang</who>
    <bug_when>2012-10-05 02:02:25 -0700</bug_when>
    <thetext>Created attachment 167287
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735511</commentid>
    <comment_count>16</comment_count>
    <who name="Jongseok Yang">js45.yang</who>
    <bug_when>2012-10-05 02:06:41 -0700</bug_when>
    <thetext>ewk_web_error_free function was moved from public header to private header by Ryuan Choi&apos;s patch.
So, I rebased the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735558</commentid>
    <comment_count>17</comment_count>
      <attachid>167304</attachid>
    <who name="Jongseok Yang">js45.yang</who>
    <bug_when>2012-10-05 04:05:17 -0700</bug_when>
    <thetext>Created attachment 167304
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735559</commentid>
    <comment_count>18</comment_count>
    <who name="Jongseok Yang">js45.yang</who>
    <bug_when>2012-10-05 04:06:06 -0700</bug_when>
    <thetext>I rebased the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735569</commentid>
    <comment_count>19</comment_count>
      <attachid>167304</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-05 04:32:54 -0700</bug_when>
    <thetext>Comment on attachment 167304
Patch

Clearing flags on attachment: 167304

Committed r130494: &lt;http://trac.webkit.org/changeset/130494&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735570</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-05 04:32:59 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167208</attachid>
            <date>2012-10-04 17:08:45 -0700</date>
            <delta_ts>2012-10-04 17:15:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>47493</size>
            <attacher name="Jongseok Yang">js45.yang</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBlNGQ1ZGZiLi5iYzlkNTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTMg
QEAKKzIwMTItMDktMjggIEpvbmdzZW9rIFlhbmcgIDxqczQ1LnlhbmdAc2Ftc3VuZy5jb20+CisK
KyAgICAgICAgW0VGTF1bV0syXSBSZW1vdmUgIndlYiIgd29yZCBmcm9tIGV3a193ZWJfZXJyb3Ig
QVBJcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc4
ODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1v
dmUgIndlYiIgd29yZCBmcm9tIGV3a193ZWJfZXJyb3IgQVBJcy4KKyAgICAgICAgIndlYiIgd29y
ZCB3YXMgcmVkdW5kYW50IGJlY2F1c2UgImV3ayIgbWVhbnMgIkVGTCBXZWJLaXQiIGFuZCBXSyBB
UElzIGZvciBlcnJvciBkb2VzIG5vdCBoYXZlICJ3ZWIiIHdvcmQuCisKKyAgICAgICAgKiBQbGF0
Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X2Rvd25sb2FkX2NsaWVudC5j
cHA6CisgICAgICAgIChkaWRGYWlsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tf
Y29va2llX21hbmFnZXIuY3BwOgorICAgICAgICAoZ2V0QWNjZXB0UG9saWN5Q2FsbGJhY2spOgor
ICAgICAgICAoZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXNDYWxsYmFjayk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX2Nvb2tpZV9tYW5hZ2VyLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX2Rvd25sb2FkX2pvYl9wcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX2Vycm9yLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a193ZWJfZXJyb3IuY3BwLgorICAgICAgICAoX0V3a19FcnJvcik6Cisg
ICAgICAgIChfRXdrX0Vycm9yOjpfRXdrX0Vycm9yKToKKyAgICAgICAgKF9Fd2tfRXJyb3I6On5f
RXdrX0Vycm9yKToKKyAgICAgICAgKGV3a19lcnJvcl9mcmVlKToKKyAgICAgICAgKGV3a19lcnJv
cl90eXBlX2dldCk6CisgICAgICAgIChld2tfZXJyb3JfdXJsX2dldCk6CisgICAgICAgIChld2tf
ZXJyb3JfY29kZV9nZXQpOgorICAgICAgICAoZXdrX2Vycm9yX2Rlc2NyaXB0aW9uX2dldCk6Cisg
ICAgICAgIChld2tfZXJyb3JfY2FuY2VsbGF0aW9uX2dldCk6CisgICAgICAgIChld2tfZXJyb3Jf
bmV3KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfZXJyb3IuaDogUmVuYW1lZCBm
cm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a193ZWJfZXJyb3IuaC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfZXJyb3JfcHJpdmF0ZS5oOiBSZW5hbWVkIGZy
b20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3dlYl9lcnJvcl9wcml2YXRl
LmguCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwOgorICAgICAgICAo
ZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9mYWlsZWQpOgorICAgICAgICAoZXdrX3ZpZXdfZG93bmxv
YWRfam9iX2ZhaWxlZCk6CisgICAgICAgIChld2tfdmlld19sb2FkX2Vycm9yKToKKyAgICAgICAg
KGV3a192aWV3X2xvYWRfcHJvdmlzaW9uYWxfZmFpbGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfdmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3
X2xvYWRlcl9jbGllbnQuY3BwOgorICAgICAgICAoZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JGcmFt
ZSk6CisgICAgICAgIChkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19yZXNvdXJjZV9sb2FkX2NsaWVudC5jcHA6Cisg
ICAgICAgIChkaWRGYWlsTG9hZEZvclJlc291cmNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2VmbC90ZXN0cy90ZXN0X2V3azJfY29va2llX21hbmFnZXIuY3BwOgorICAgICAgICAoZ2V0QWNj
ZXB0UG9saWN5Q2FsbGJhY2spOgorICAgICAgICAoZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXNDYWxs
YmFjayk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2Rvd25s
b2FkX2pvYi5jcHA6CisgICAgICAgIChvbl9kb3dubG9hZF9mYWlsZWQpOgorCiAyMDEyLTA5LTI3
ICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc4MjMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UK
aW5kZXggZDM5MzJiNi4uMGI4ZWI1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZv
cm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTQ3
LDYgKzQ3LDcgQEAgTElTVChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX2NvbnRleHRfcmVxdWVzdF9tYW5hZ2VyX2NsaWVudC5jcHAKICAgICBVSVByb2Nl
c3MvQVBJL2VmbC9ld2tfY29va2llX21hbmFnZXIuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX2Rvd25sb2FkX2pvYi5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfZXJyb3IuY3Bw
CiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Zvcm1fc3VibWlzc2lvbl9yZXF1ZXN0LmNwcAog
ICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19pbnRlbnQuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX2ludGVudF9zZXJ2aWNlLmNwcApAQCAtNjQsNyArNjUsNiBAQCBMSVNUKEFQUEVORCBX
ZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wb2xpY3lfY2xp
ZW50LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3Jlc291cmNlX2xvYWRfY2xp
ZW50LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3VpX2NsaWVudC5jcHAKLSAg
ICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfd2ViX2Vycm9yLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkv
ZWZsL2V3a193ZWJfcmVzb3VyY2UuY3BwCiAKICAgICBVSVByb2Nlc3MvY2Fpcm8vQmFja2luZ1N0
b3JlQ2Fpcm8uY3BwCkBAIC0yMTcsNiArMjE3LDcgQEAgU0VUIChFV2ViS2l0Ml9IRUFERVJTCiAg
ICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29u
dGV4dC5oIgogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX2Nvb2tpZV9tYW5hZ2VyLmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElS
fS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfZG93bmxvYWRfam9iLmgiCisgICAgIiR7Q01BS0VfQ1VS
UkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfZXJyb3IuaCIKICAgICAiJHtD
TUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19mb3JtX3N1Ym1p
c3Npb25fcmVxdWVzdC5oIgogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2ludGVudC5oIgogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJ
Un0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2ludGVudF9zZXJ2aWNlLmgiCkBAIC0yMjksNyArMjMw
LDYgQEAgU0VUIChFV2ViS2l0Ml9IRUFERVJTCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0Vf
RElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3Jlc3BvbnNlLmgiCiAgICAgIiR7Q01BS0Vf
Q1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3NjaGVtZV9yZXF1
ZXN0LmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfdmlldy5oIgotICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX3dlYl9lcnJvci5oIgogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJ
Un0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3dlYl9yZXNvdXJjZS5oIgogKQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaAppbmRleCAxM2VmYWIxLi4yOWVlNmVk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmgKQEAgLTMy
LDYgKzMyLDcgQEAKICNpbmNsdWRlICJld2tfYmFja19mb3J3YXJkX2xpc3RfaXRlbS5oIgogI2lu
Y2x1ZGUgImV3a19jb250ZXh0LmgiCiAjaW5jbHVkZSAiZXdrX2Nvb2tpZV9tYW5hZ2VyLmgiCisj
aW5jbHVkZSAiZXdrX2Vycm9yLmgiCiAjaW5jbHVkZSAiZXdrX2Rvd25sb2FkX2pvYi5oIgogI2lu
Y2x1ZGUgImV3a19mb3JtX3N1Ym1pc3Npb25fcmVxdWVzdC5oIgogI2luY2x1ZGUgImV3a19pbnRl
bnQuaCIKQEAgLTQ1LDcgKzQ2LDYgQEAKICNpbmNsdWRlICJld2tfdXJsX3Jlc3BvbnNlLmgiCiAj
aW5jbHVkZSAiZXdrX3VybF9zY2hlbWVfcmVxdWVzdC5oIgogI2luY2x1ZGUgImV3a192aWV3Lmgi
Ci0jaW5jbHVkZSAiZXdrX3dlYl9lcnJvci5oIgogI2luY2x1ZGUgImV3a193ZWJfcmVzb3VyY2Uu
aCIKIAogI2VuZGlmIC8vIEVXZWJLaXQyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X2Rvd25sb2FkX2NsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9kb3dubG9hZF9jbGllbnQuY3Bw
CmluZGV4IDlkOTI0YmYuLjU2OTA5MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X2Rvd25sb2FkX2NsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfZG93bmxvYWRfY2xpZW50LmNw
cApAQCAtMzMsMTEgKzMzLDExIEBACiAjaW5jbHVkZSAiZXdrX2NvbnRleHRfcHJpdmF0ZS5oIgog
I2luY2x1ZGUgImV3a19kb3dubG9hZF9qb2IuaCIKICNpbmNsdWRlICJld2tfZG93bmxvYWRfam9i
X3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfZXJyb3IuaCIKKyNpbmNsdWRlICJld2tfZXJyb3Jf
cHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a191cmxfcmVzcG9uc2UuaCIKICNpbmNsdWRlICJld2tf
dXJsX3Jlc3BvbnNlX3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfdmlld19wcml2YXRlLmgiCi0j
aW5jbHVkZSAiZXdrX3dlYl9lcnJvci5oIgotI2luY2x1ZGUgImV3a193ZWJfZXJyb3JfcHJpdmF0
ZS5oIgogI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
IApAQCAtOTUsMTAgKzk1LDEwIEBAIHN0YXRpYyB2b2lkIGRpZEZhaWwoV0tDb250ZXh0UmVmLCBX
S0Rvd25sb2FkUmVmIHdrRG93bmxvYWQsIFdLRXJyb3JSZWYgZXJyb3IsIGNvCiAgICAgRXdrX0Rv
d25sb2FkX0pvYiogZG93bmxvYWQgPSBld2tfY29udGV4dF9kb3dubG9hZF9qb2JfZ2V0KHRvRXdr
Q29udGV4dChjbGllbnRJbmZvKSwgZG93bmxvYWRJZCk7CiAgICAgQVNTRVJUKGRvd25sb2FkKTsK
IAotICAgIEV3a19XZWJfRXJyb3IqIGV3a0Vycm9yID0gZXdrX3dlYl9lcnJvcl9uZXcoZXJyb3Ip
OworICAgIEV3a19FcnJvciogZXdrRXJyb3IgPSBld2tfZXJyb3JfbmV3KGVycm9yKTsKICAgICBl
d2tfZG93bmxvYWRfam9iX3N0YXRlX3NldChkb3dubG9hZCwgRVdLX0RPV05MT0FEX0pPQl9TVEFU
RV9GQUlMRUQpOwogICAgIGV3a192aWV3X2Rvd25sb2FkX2pvYl9mYWlsZWQoZXdrX2Rvd25sb2Fk
X2pvYl92aWV3X2dldChkb3dubG9hZCksIGRvd25sb2FkLCBld2tFcnJvcik7Ci0gICAgZXdrX3dl
Yl9lcnJvcl9mcmVlKGV3a0Vycm9yKTsKKyAgICBld2tfZXJyb3JfZnJlZShld2tFcnJvcik7CiAg
ICAgZXdrX2NvbnRleHRfZG93bmxvYWRfam9iX3JlbW92ZSh0b0V3a0NvbnRleHQoY2xpZW50SW5m
byksIGRvd25sb2FkSWQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfY29va2llX21hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2Nvb2tpZV9tYW5hZ2VyLmNwcAppbmRleCA0NWRkNzVlLi5hNTIwNDcz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29va2ll
X21hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19j
b29raWVfbWFuYWdlci5jcHAKQEAgLTMzLDggKzMzLDggQEAKICNpbmNsdWRlICJXS1JldGFpblB0
ci5oIgogI2luY2x1ZGUgIldLU3RyaW5nLmgiCiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlclBy
b3h5LmgiCisjaW5jbHVkZSAiZXdrX2Vycm9yX3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfcHJp
dmF0ZS5oIgotI2luY2x1ZGUgImV3a193ZWJfZXJyb3JfcHJpdmF0ZS5oIgogI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAt
MTQyLDEyICsxNDIsMTIgQEAgc3RydWN0IEdldF9Qb2xpY3lfQXN5bmNfRGF0YSB7CiBzdGF0aWMg
dm9pZCBnZXRBY2NlcHRQb2xpY3lDYWxsYmFjayhXS0hUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9s
aWN5LCBXS0Vycm9yUmVmIHdrRXJyb3IsIHZvaWQqIGRhdGEpCiB7CiAgICAgR2V0X1BvbGljeV9B
c3luY19EYXRhKiBjYWxsYmFja0RhdGEgPSBzdGF0aWNfY2FzdDxHZXRfUG9saWN5X0FzeW5jX0Rh
dGEqPihkYXRhKTsKLSAgICBFd2tfV2ViX0Vycm9yKiBld2tFcnJvciA9IHdrRXJyb3IgPyBld2tf
d2ViX2Vycm9yX25ldyh3a0Vycm9yKSA6IDA7CisgICAgRXdrX0Vycm9yKiBld2tFcnJvciA9IHdr
RXJyb3IgPyBld2tfZXJyb3JfbmV3KHdrRXJyb3IpIDogMDsKIAogICAgIGNhbGxiYWNrRGF0YS0+
Y2FsbGJhY2soc3RhdGljX2Nhc3Q8RXdrX0Nvb2tpZV9BY2NlcHRfUG9saWN5Pihwb2xpY3kpLCBl
d2tFcnJvciwgY2FsbGJhY2tEYXRhLT51c2VyRGF0YSk7CiAKICAgICBpZiAoZXdrRXJyb3IpCi0g
ICAgICAgIGV3a193ZWJfZXJyb3JfZnJlZShld2tFcnJvcik7CisgICAgICAgIGV3a19lcnJvcl9m
cmVlKGV3a0Vycm9yKTsKICAgICBkZWxldGUgY2FsbGJhY2tEYXRhOwogfQogCkBAIC0xNzIsNyAr
MTcyLDcgQEAgc3RhdGljIHZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXNDYWxsYmFjayhXS0Fy
cmF5UmVmIHdrSG9zdG5hbWVzLCBXS0Vycm9yUmVmIHcKIHsKICAgICBFaW5hX0xpc3QqIGhvc3Ru
YW1lcyA9IDA7CiAgICAgR2V0X0hvc3RuYW1lc19Bc3luY19EYXRhKiBjYWxsYmFja0RhdGEgPSBz
dGF0aWNfY2FzdDxHZXRfSG9zdG5hbWVzX0FzeW5jX0RhdGEqPihjb250ZXh0KTsKLSAgICBFd2tf
V2ViX0Vycm9yKiBld2tFcnJvciA9IHdrRXJyb3IgPyBld2tfd2ViX2Vycm9yX25ldyh3a0Vycm9y
KSA6IDA7CisgICAgRXdrX0Vycm9yKiBld2tFcnJvciA9IHdrRXJyb3IgPyBld2tfZXJyb3JfbmV3
KHdrRXJyb3IpIDogMDsKIAogICAgIGNvbnN0IHNpemVfdCBob3N0bmFtZUNvdW50ID0gV0tBcnJh
eUdldFNpemUod2tIb3N0bmFtZXMpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaG9zdG5h
bWVDb3VudDsgKytpKSB7CkBAIC0xODksNyArMTg5LDcgQEAgc3RhdGljIHZvaWQgZ2V0SG9zdG5h
bWVzV2l0aENvb2tpZXNDYWxsYmFjayhXS0FycmF5UmVmIHdrSG9zdG5hbWVzLCBXS0Vycm9yUmVm
IHcKICAgICBFSU5BX0xJU1RfRlJFRShob3N0bmFtZXMsIGl0ZW0pCiAgICAgICBlaW5hX3N0cmlu
Z3NoYXJlX2RlbChzdGF0aWNfY2FzdDxFaW5hX1N0cmluZ3NoYXJlKj4oaXRlbSkpOwogICAgIGlm
IChld2tFcnJvcikKLSAgICAgICAgZXdrX3dlYl9lcnJvcl9mcmVlKGV3a0Vycm9yKTsKKyAgICAg
ICAgZXdrX2Vycm9yX2ZyZWUoZXdrRXJyb3IpOwogICAgIGRlbGV0ZSBjYWxsYmFja0RhdGE7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb29r
aWVfbWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nvb2tp
ZV9tYW5hZ2VyLmgKaW5kZXggZTM3NzgwOC4uODk5NzkxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nvb2tpZV9tYW5hZ2VyLmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nvb2tpZV9tYW5hZ2VyLmgKQEAgLTMxLDcg
KzMxLDcgQEAKICNpZm5kZWYgZXdrX2Nvb2tpZV9tYW5hZ2VyX2gKICNkZWZpbmUgZXdrX2Nvb2tp
ZV9tYW5hZ2VyX2gKIAotI2luY2x1ZGUgImV3a193ZWJfZXJyb3IuaCIKKyNpbmNsdWRlICJld2tf
ZXJyb3IuaCIKICNpbmNsdWRlIDxFaW5hLmg+CiAKICNpZmRlZiBfX2NwbHVzcGx1cwpAQCAtNzcs
NyArNzcsNyBAQCB0eXBlZGVmIGVudW0gX0V3a19Db29raWVfUGVyc2lzdGVudF9TdG9yYWdlIEV3
a19Db29raWVfUGVyc2lzdGVudF9TdG9yYWdlOwogICogQHR5cGVkZWYgRXdrX0Nvb2tpZV9NYW5h
Z2VyX0FzeW5jX1BvbGljeV9HZXRfQ2IgRXdrX0Nvb2tpZV9NYW5hZ2VyX0FzeW5jX1BvbGljeV9H
ZXRfQ2IKICAqIEBicmllZiBDYWxsYmFjayB0eXBlIGZvciB1c2Ugd2l0aCBld2tfY29va2llX21h
bmFnZXJfYXN5bmNfYWNjZXB0X3BvbGljeV9nZXQKICAqLwotdHlwZWRlZiB2b2lkICgqRXdrX0Nv
b2tpZV9NYW5hZ2VyX0FzeW5jX1BvbGljeV9HZXRfQ2IpKEV3a19Db29raWVfQWNjZXB0X1BvbGlj
eSBwb2xpY3ksIEV3a19XZWJfRXJyb3IgKmVycm9yLCB2b2lkICpldmVudF9pbmZvKTsKK3R5cGVk
ZWYgdm9pZCAoKkV3a19Db29raWVfTWFuYWdlcl9Bc3luY19Qb2xpY3lfR2V0X0NiKShFd2tfQ29v
a2llX0FjY2VwdF9Qb2xpY3kgcG9saWN5LCBFd2tfRXJyb3IgKmVycm9yLCB2b2lkICpldmVudF9p
bmZvKTsKIAogLyoqCiAgKiBAdHlwZWRlZiBFd2tfQ29va2llX01hbmFnZXJfQXN5bmNfSG9zdG5h
bWVzX0dldF9DYiBFd2tfQ29va2llX01hbmFnZXJfQXN5bmNfSG9zdG5hbWVzX0dldF9DYgpAQCAt
ODcsNyArODcsNyBAQCB0eXBlZGVmIHZvaWQgKCpFd2tfQ29va2llX01hbmFnZXJfQXN5bmNfUG9s
aWN5X0dldF9DYikoRXdrX0Nvb2tpZV9BY2NlcHRfUG9saWN5CiAgKiBzYXZlIHlvdXJzZWxmIHNv
bWUgY3B1IGN5Y2xlcyBhbmQgdXNlIGVpbmFfc3RyaW5nc2hhcmVfcmVmKCkgaW5zdGVhZCBvZiBl
aW5hX3N0cmluZ3NoYXJlX2FkZCgpCiAgKiBvciBzdHJkdXAoKS4KICAqLwotdHlwZWRlZiB2b2lk
ICgqRXdrX0Nvb2tpZV9NYW5hZ2VyX0FzeW5jX0hvc3RuYW1lc19HZXRfQ2IpKEVpbmFfTGlzdCog
aG9zdG5hbWVzLCBFd2tfV2ViX0Vycm9yICplcnJvciwgdm9pZCAqZXZlbnRfaW5mbyk7Cit0eXBl
ZGVmIHZvaWQgKCpFd2tfQ29va2llX01hbmFnZXJfQXN5bmNfSG9zdG5hbWVzX0dldF9DYikoRWlu
YV9MaXN0KiBob3N0bmFtZXMsIEV3a19FcnJvciAqZXJyb3IsIHZvaWQgKmV2ZW50X2luZm8pOwog
CiAvKioKICAqIEB0eXBlZGVmIEV3a19Db29raWVfTWFuYWdlcl9DaGFuZ2VzX1dhdGNoX0NiIEV3
a19Db29raWVfTWFuYWdlcl9DaGFuZ2VzX1dhdGNoX0NiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfZG93bmxvYWRfam9iX3ByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19kb3dubG9hZF9qb2JfcHJpdmF0ZS5oCmlu
ZGV4IGQwNDM0OTQuLjgxYjU0NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a19kb3dubG9hZF9qb2JfcHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19kb3dubG9hZF9qb2JfcHJpdmF0ZS5oCkBAIC0zMSw3ICsz
MSw3IEBACiAKIHR5cGVkZWYgc3RydWN0IF9Fd2tfRG93bmxvYWRfSm9iIEV3a19Eb3dubG9hZF9K
b2I7CiB0eXBlZGVmIHN0cnVjdCBfRXdrX1VybF9SZXNwb25zZSBFd2tfVXJsX1Jlc3BvbnNlOwot
dHlwZWRlZiBzdHJ1Y3QgX0V3a19XZWJfRXJyb3IgRXdrX1dlYl9FcnJvcjsKK3R5cGVkZWYgc3Ry
dWN0IF9Fd2tfRXJyb3IgRXdrX0Vycm9yOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIERv
d25sb2FkUHJveHk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfZXJyb3IuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Vy
cm9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNTZiZjljCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Vycm9y
LmNwcApAQCAtMCwwICsxLDEzMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBD
b3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgImV3a19lcnJvci5oIgorCisjaW5jbHVkZSAiRXJyb3JzRWZsLmgi
CisjaW5jbHVkZSAiV0tFaW5hU2hhcmVkU3RyaW5nLmgiCisjaW5jbHVkZSAiV0tTdHJpbmcuaCIK
KyNpbmNsdWRlICJXS1VSTC5oIgorI2luY2x1ZGUgImV3a19lcnJvcl9wcml2YXRlLmgiCisjaW5j
bHVkZSA8V0tBUElDYXN0Lmg+CisjaW5jbHVkZSA8V0tFcnJvci5oPgorI2luY2x1ZGUgPFdLUmV0
YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCit1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK3N0cnVjdCBfRXdrX0Vycm9y
IHsKKyAgICBXS1JldGFpblB0cjxXS0Vycm9yUmVmPiB3a0Vycm9yOworCisgICAgV0tFaW5hU2hh
cmVkU3RyaW5nIHVybDsKKyAgICBXS0VpbmFTaGFyZWRTdHJpbmcgZGVzY3JpcHRpb247CisKKyAg
ICBfRXdrX0Vycm9yKFdLRXJyb3JSZWYgZXJyb3JSZWYpCisgICAgICAgIDogd2tFcnJvcihlcnJv
clJlZikKKyAgICAgICAgLCB1cmwoQWRvcHRXSywgV0tFcnJvckNvcHlGYWlsaW5nVVJMKGVycm9y
UmVmKSkKKyAgICAgICAgLCBkZXNjcmlwdGlvbihBZG9wdFdLLCBXS0Vycm9yQ29weUxvY2FsaXpl
ZERlc2NyaXB0aW9uKGVycm9yUmVmKSkKKyAgICB7IH0KKworICAgIH5fRXdrX0Vycm9yKCkKKyAg
ICB7CisgICAgfQorfTsKKworI2RlZmluZSBFV0tfRVJST1JfV0tfR0VUX09SX1JFVFVSTihlcnJv
ciwgd2tFcnJvcl8sIC4uLikgICAgXAorICAgIGlmICghKGVycm9yKSkgeyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEVJTkFfTE9HX0NSSVQoImVy
cm9yIGlzIE5VTEwuIik7ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIF9f
VkFfQVJHU19fOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICBpZiAoIShlcnJvciktPndrRXJyb3IpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgIEVJTkFfTE9HX0NSSVQoImVycm9yLT53a0Vycm9yIGlzIE5VTEwuIik7
ICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gX19WQV9BUkdTX187ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFdLRXJyb3JSZWYgd2tFcnJvcl8g
PSAoZXJyb3IpLT53a0Vycm9yLmdldCgpCisKK3ZvaWQgZXdrX2Vycm9yX2ZyZWUoRXdrX0Vycm9y
KiBlcnJvcikKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihlcnJvcik7CisKKyAg
ICBkZWxldGUgZXJyb3I7Cit9CisKK0V3a19FcnJvcl9UeXBlIGV3a19lcnJvcl90eXBlX2dldChj
b25zdCBFd2tfRXJyb3IqIGVycm9yKQoreworICAgIEVXS19FUlJPUl9XS19HRVRfT1JfUkVUVVJO
KGVycm9yLCB3a0Vycm9yLCBFV0tfRVJST1JfVFlQRV9OT05FKTsKKworICAgIFdLUmV0YWluUHRy
PFdLU3RyaW5nUmVmPiB3a0RvbWFpbihBZG9wdFdLLCBXS0Vycm9yQ29weURvbWFpbih3a0Vycm9y
KSk7CisgICAgV1RGOjpTdHJpbmcgZXJyb3JEb21haW4gPSB0b1dURlN0cmluZyh3a0RvbWFpbi5n
ZXQoKSk7CisKKyAgICBpZiAoZXJyb3JEb21haW4gPT0gZXJyb3JEb21haW5OZXR3b3JrKQorICAg
ICAgICByZXR1cm4gRVdLX0VSUk9SX1RZUEVfTkVUV09SSzsKKyAgICBpZiAoZXJyb3JEb21haW4g
PT0gZXJyb3JEb21haW5Qb2xpY3kpCisgICAgICAgIHJldHVybiBFV0tfRVJST1JfVFlQRV9QT0xJ
Q1k7CisgICAgaWYgKGVycm9yRG9tYWluID09IGVycm9yRG9tYWluUGx1Z2luKQorICAgICAgICBy
ZXR1cm4gRVdLX0VSUk9SX1RZUEVfUExVR0lOOworICAgIGlmIChlcnJvckRvbWFpbiA9PSBlcnJv
ckRvbWFpbkRvd25sb2FkKQorICAgICAgICByZXR1cm4gRVdLX0VSUk9SX1RZUEVfRE9XTkxPQUQ7
CisgICAgaWYgKGVycm9yRG9tYWluID09IGVycm9yRG9tYWluUHJpbnQpCisgICAgICAgIHJldHVy
biBFV0tfRVJST1JfVFlQRV9QUklOVDsKKyAgICByZXR1cm4gRVdLX0VSUk9SX1RZUEVfSU5URVJO
QUw7Cit9CisKK2NvbnN0IGNoYXIqIGV3a19lcnJvcl91cmxfZ2V0KGNvbnN0IEV3a19FcnJvciog
ZXJyb3IpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGVycm9yLCAwKTsK
KworICAgIHJldHVybiBlcnJvci0+dXJsOworfQorCitpbnQgZXdrX2Vycm9yX2NvZGVfZ2V0KGNv
bnN0IEV3a19FcnJvciogZXJyb3IpCit7CisgICAgRVdLX0VSUk9SX1dLX0dFVF9PUl9SRVRVUk4o
ZXJyb3IsIHdrRXJyb3IsIDApOworCisgICAgcmV0dXJuIFdLRXJyb3JHZXRFcnJvckNvZGUod2tF
cnJvcik7Cit9CisKK2NvbnN0IGNoYXIqIGV3a19lcnJvcl9kZXNjcmlwdGlvbl9nZXQoY29uc3Qg
RXdrX0Vycm9yKiBlcnJvcikKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwo
ZXJyb3IsIDApOworCisgICAgcmV0dXJuIGVycm9yLT5kZXNjcmlwdGlvbjsKK30KKworRWluYV9C
b29sIGV3a19lcnJvcl9jYW5jZWxsYXRpb25fZ2V0KGNvbnN0IEV3a19FcnJvciogZXJyb3IpCit7
CisgICAgRVdLX0VSUk9SX1dLX0dFVF9PUl9SRVRVUk4oZXJyb3IsIHdrRXJyb3IsIGZhbHNlKTsK
KworICAgIHJldHVybiB0b0ltcGwod2tFcnJvciktPnBsYXRmb3JtRXJyb3IoKS5pc0NhbmNlbGxh
dGlvbigpOworfQorCitFd2tfRXJyb3IqIGV3a19lcnJvcl9uZXcoV0tFcnJvclJlZiBlcnJvcikK
K3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoZXJyb3IsIDApOworCisgICAg
cmV0dXJuIG5ldyBFd2tfRXJyb3IoZXJyb3IpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Vycm9yLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfZXJyb3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5jYjcwMDk2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX2Vycm9yLmgKQEAgLTAsMCArMSwxMjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
Ky8qKgorICogQGZpbGUgICAgZXdrX2Vycm9yLmgKKyAqIEBicmllZiAgIERlc2NyaWJlcyB0aGUg
V2ViIEVycm9yIEFQSS4KKyAqLworCisjaWZuZGVmIGV3a19lcnJvcl9oCisjZGVmaW5lIGV3a19l
cnJvcl9oCisKKyNpbmNsdWRlIDxFaW5hLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJu
ICJDIiB7CisjZW5kaWYKKworLyoqIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIEBhIEV3a19FcnJv
ci4gKi8KK3R5cGVkZWYgc3RydWN0IF9Fd2tfRXJyb3IgRXdrX0Vycm9yOworCisvLy8gQ3JlYXRl
cyBhIHR5cGUgbmFtZSBmb3IgRXdrX0Vycm9yX1R5cGUuCit0eXBlZGVmIGVudW0geworICAgIEVX
S19FUlJPUl9UWVBFX05PTkUsCisgICAgRVdLX0VSUk9SX1RZUEVfSU5URVJOQUwsCisgICAgRVdL
X0VSUk9SX1RZUEVfTkVUV09SSywKKyAgICBFV0tfRVJST1JfVFlQRV9QT0xJQ1ksCisgICAgRVdL
X0VSUk9SX1RZUEVfUExVR0lOLAorICAgIEVXS19FUlJPUl9UWVBFX0RPV05MT0FELAorICAgIEVX
S19FUlJPUl9UWVBFX1BSSU5UCit9IEV3a19FcnJvcl9UeXBlOworCisvKioKKyAqIEZyZWVzIHRo
ZSBnaXZlbiBvYmplY3QuCisgKgorICogQHBhcmFtIGVycm9yIHRoZSBlcnJvciBvYmplY3QgdG8g
ZnJlZQorICovCitFQVBJIHZvaWQgZXdrX2Vycm9yX2ZyZWUoRXdrX0Vycm9yICplcnJvcik7CisK
Ky8qKgorICogUXVlcnkgdHlwZSBmb3IgdGhpcyBlcnJvci4KKyAqCisgKiBAcGFyYW0gZXJyb3Ig
ZXJyb3Igb2JqZWN0IHRvIHF1ZXJ5LgorICoKKyAqIEByZXR1cm4gdGhlIGVycm9yIHR5cGUsIHRo
YXQgbWF5IGJlIEBjIE5VTEwuIFRoaXMgcG9pbnRlciBpcworICogICAgICAgICBndWFyYW50ZWVk
IHRvIGJlIGVpbmFfc3RyaW5nc2hhcmUsIHNvIHdoZW5ldmVyIHBvc3NpYmxlCisgKiAgICAgICAg
IHNhdmUgeW91cnNlbGYgc29tZSBjcHUgY3ljbGVzIGFuZCB1c2UKKyAqICAgICAgICAgZWluYV9z
dHJpbmdzaGFyZV9yZWYoKSBpbnN0ZWFkIG9mIGVpbmFfc3RyaW5nc2hhcmVfYWRkKCkgb3IKKyAq
ICAgICAgICAgc3RyZHVwKCkuCisgKi8KK0VBUEkgRXdrX0Vycm9yX1R5cGUgZXdrX2Vycm9yX3R5
cGVfZ2V0KGNvbnN0IEV3a19FcnJvciAqZXJyb3IpOworCisvKioKKyAqIFF1ZXJ5IGZhaWxpbmcg
VVJMIGZvciB0aGlzIGVycm9yLgorICoKKyAqIFVSTCB0aGF0IGZhaWxlZCBsb2FkaW5nLgorICoK
KyAqIEBwYXJhbSBlcnJvciBlcnJvciBvYmplY3QgdG8gcXVlcnkuCisgKgorICogQHJldHVybiB0
aGUgVVJMIHBvaW50ZXIsIHRoYXQgbWF5IGJlIEBjIE5VTEwuIFRoaXMgcG9pbnRlciBpcworICog
ICAgICAgICBndWFyYW50ZWVkIHRvIGJlIGVpbmFfc3RyaW5nc2hhcmUsIHNvIHdoZW5ldmVyIHBv
c3NpYmxlCisgKiAgICAgICAgIHNhdmUgeW91cnNlbGYgc29tZSBjcHUgY3ljbGVzIGFuZCB1c2UK
KyAqICAgICAgICAgZWluYV9zdHJpbmdzaGFyZV9yZWYoKSBpbnN0ZWFkIG9mIGVpbmFfc3RyaW5n
c2hhcmVfYWRkKCkgb3IKKyAqICAgICAgICAgc3RyZHVwKCkuCisgKi8KK0VBUEkgY29uc3QgY2hh
ciAqZXdrX2Vycm9yX3VybF9nZXQoY29uc3QgRXdrX0Vycm9yICplcnJvcik7CisKKy8qKgorICog
UXVlcnkgSFRUUCBlcnJvciBjb2RlLgorICoKKyAqIEBwYXJhbSBlcnJvciBlcnJvciBvYmplY3Qg
dG8gcXVlcnkuCisgKgorICogQHJldHVybiB0aGUgSFRUUCBlcnJvciBjb2RlLgorICovCitFQVBJ
IGludCBld2tfZXJyb3JfY29kZV9nZXQoY29uc3QgRXdrX0Vycm9yICplcnJvcik7CisKKy8qKgor
ICogUXVlcnkgZGVzY3JpcHRpb24gZm9yIHRoaXMgZXJyb3IuCisgKgorICogQHBhcmFtIGVycm9y
IGVycm9yIG9iamVjdCB0byBxdWVyeS4KKyAqCisgKiBAcmV0dXJuIHRoZSBkZXNjcmlwdGlvbiBw
b2ludGVyLCB0aGF0IG1heSBiZSBAYyBOVUxMLiBUaGlzIHBvaW50ZXIgaXMKKyAqICAgICAgICAg
Z3VhcmFudGVlZCB0byBiZSBlaW5hX3N0cmluZ3NoYXJlLCBzbyB3aGVuZXZlciBwb3NzaWJsZQor
ICogICAgICAgICBzYXZlIHlvdXJzZWxmIHNvbWUgY3B1IGN5Y2xlcyBhbmQgdXNlCisgKiAgICAg
ICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVmKCkgaW5zdGVhZCBvZiBlaW5hX3N0cmluZ3NoYXJlX2Fk
ZCgpIG9yCisgKiAgICAgICAgIHN0cmR1cCgpLgorICovCitFQVBJIGNvbnN0IGNoYXIgKmV3a19l
cnJvcl9kZXNjcmlwdGlvbl9nZXQoY29uc3QgRXdrX0Vycm9yICplcnJvcik7CisKKy8qKgorICog
UXVlcnkgaWYgZXJyb3Igc2hvdWxkIGJlIHRyZWF0ZWQgYXMgYSBjYW5jZWxsYXRpb24uCisgKgor
ICogQHBhcmFtIGVycm9yIGVycm9yIG9iamVjdCB0byBxdWVyeS4KKyAqCisgKiBAcmV0dXJuIEBj
IEVJTkFfVFJVRSBpZiB0aGlzIGVycm9yIHNob3VsZCBiZSB0cmVhdGVkIGFzIGEgY2FuY2VsbGF0
aW9uLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQorICovCitFQVBJIEVpbmFfQm9vbCBld2tfZXJy
b3JfY2FuY2VsbGF0aW9uX2dldChjb25zdCBFd2tfRXJyb3IgKmVycm9yKTsKKworI2lmZGVmIF9f
Y3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8vIGV3a19lcnJvcl9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfZXJyb3JfcHJpdmF0ZS5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Vycm9yX3ByaXZhdGUuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzA0MWY5Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Vycm9yX3ByaXZhdGUuaApA
QCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0
aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIGV3a19lcnJvcl9w
cml2YXRlX2gKKyNkZWZpbmUgZXdrX2Vycm9yX3ByaXZhdGVfaAorCisjaW5jbHVkZSA8V0tFcnJv
ci5oPgorCit0eXBlZGVmIHN0cnVjdCBfRXdrX0Vycm9yIEV3a19FcnJvcjsKKworRXdrX0Vycm9y
KiBld2tfZXJyb3JfbmV3KFdLRXJyb3JSZWYgZXJyb3IpOworCisjZW5kaWYgLy8gZXdrX2Vycm9y
X3ByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcu
Y3BwCmluZGV4IDUxNzVmNzkuLmEwODA5NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKQEAgLTk4NCw3ICs5ODQsNyBAQCB2b2lkIGV3a192aWV3
X3Jlc291cmNlX2xvYWRfcmVzcG9uc2UoRXZhc19PYmplY3QqIGV3a1ZpZXcsIHVpbnQ2NF90IHJl
c291cmNlSWRlbgogICoKICAqIEVtaXRzIHNpZ25hbDogInJlc291cmNlLHJlcXVlc3QsZmluaXNo
ZWQiIHdpdGggcG9pbnRlciB0byB0aGUgcmVzb3VyY2UgbG9hZCBlcnJvci4KICAqLwotdm9pZCBl
d2tfdmlld19yZXNvdXJjZV9sb2FkX2ZhaWxlZChFdmFzX09iamVjdCogZXdrVmlldywgdWludDY0
X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBFd2tfV2ViX0Vycm9yKiBlcnJvcikKK3ZvaWQgZXdrX3Zp
ZXdfcmVzb3VyY2VfbG9hZF9mYWlsZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIHVpbnQ2NF90IHJl
c291cmNlSWRlbnRpZmllciwgRXdrX0Vycm9yKiBlcnJvcikKIHsKICAgICBFV0tfVklFV19TRF9H
RVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRf
T1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdik7CkBAIC0xMjgzLDcgKzEyODMsNyBAQCB2b2lkIGV3
a192aWV3X2Rvd25sb2FkX2pvYl9yZXF1ZXN0ZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19E
b3dubG9hZF9Kb2IqIGRvdwogICoKICAqIEVtaXRzIHNpZ25hbDogImRvd25sb2FkLGZhaWxlZCIg
d2l0aCBwb2ludGVyIHRvIGEgRXdrX0Rvd25sb2FkX0pvYl9FcnJvci4KICAqLwotdm9pZCBld2tf
dmlld19kb3dubG9hZF9qb2JfZmFpbGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfRG93bmxv
YWRfSm9iKiBkb3dubG9hZCwgRXdrX1dlYl9FcnJvciogZXJyb3IpCit2b2lkIGV3a192aWV3X2Rv
d25sb2FkX2pvYl9mYWlsZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19Eb3dubG9hZF9Kb2Iq
IGRvd25sb2FkLCBFd2tfRXJyb3IqIGVycm9yKQogewogICAgIEV3a19Eb3dubG9hZF9Kb2JfRXJy
b3IgZG93bmxvYWRFcnJvciA9IHsgZG93bmxvYWQsIGVycm9yIH07CiAgICAgZXZhc19vYmplY3Rf
c21hcnRfY2FsbGJhY2tfY2FsbChld2tWaWV3LCAiZG93bmxvYWQsZmFpbGVkIiwgJmRvd25sb2Fk
RXJyb3IpOwpAQCAtMTM5NCwxMSArMTM5NCwxMSBAQCB2b2lkIGV3a192aWV3X2Zvcm1fc3VibWlz
c2lvbl9yZXF1ZXN0X25ldyhFdmFzX09iamVjdCogZXdrVmlldywgRXdrX0Zvcm1fU3VibWlzcwog
ICogQGludGVybmFsCiAgKiBSZXBvcnRzIGxvYWQgZmFpbGVkIHdpdGggZXJyb3IgaW5mb3JtYXRp
b24uCiAgKgotICogRW1pdHMgc2lnbmFsOiAibG9hZCxlcnJvciIgd2l0aCBwb2ludGVyIHRvIEV3
a19XZWJfRXJyb3IuCisgKiBFbWl0cyBzaWduYWw6ICJsb2FkLGVycm9yIiB3aXRoIHBvaW50ZXIg
dG8gRXdrX0Vycm9yLgogICovCi12b2lkIGV3a192aWV3X2xvYWRfZXJyb3IoRXZhc19PYmplY3Qq
IGV3a1ZpZXcsIGNvbnN0IEV3a19XZWJfRXJyb3IqIGVycm9yKQordm9pZCBld2tfdmlld19sb2Fk
X2Vycm9yKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBFd2tfRXJyb3IqIGVycm9yKQogewot
ICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmlldywgImxvYWQsZXJyb3Ii
LCBjb25zdF9jYXN0PEV3a19XZWJfRXJyb3IqPihlcnJvcikpOworICAgIGV2YXNfb2JqZWN0X3Nt
YXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmlldywgImxvYWQsZXJyb3IiLCBjb25zdF9jYXN0PEV3a19F
cnJvcio+KGVycm9yKSk7CiB9CiAKIC8qKgpAQCAtMTQxNywxMSArMTQxNywxMSBAQCB2b2lkIGV3
a192aWV3X2xvYWRfZmluaXNoZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAgKiBAaW50ZXJuYWwK
ICAqIFJlcG9ydHMgdmlldyBwcm92aXNpb25hbCBsb2FkIGZhaWxlZCB3aXRoIGVycm9yIGluZm9y
bWF0aW9uLgogICoKLSAqIEVtaXRzIHNpZ25hbDogImxvYWQscHJvdmlzaW9uYWwsZmFpbGVkIiB3
aXRoIHBvaW50ZXIgdG8gRXdrX1dlYl9FcnJvci4KKyAqIEVtaXRzIHNpZ25hbDogImxvYWQscHJv
dmlzaW9uYWwsZmFpbGVkIiB3aXRoIHBvaW50ZXIgdG8gRXdrX0Vycm9yLgogICovCi12b2lkIGV3
a192aWV3X2xvYWRfcHJvdmlzaW9uYWxfZmFpbGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25z
dCBFd2tfV2ViX0Vycm9yKiBlcnJvcikKK3ZvaWQgZXdrX3ZpZXdfbG9hZF9wcm92aXNpb25hbF9m
YWlsZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IEV3a19FcnJvciogZXJyb3IpCiB7Ci0g
ICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tWaWV3LCAibG9hZCxwcm92aXNp
b25hbCxmYWlsZWQiLCBjb25zdF9jYXN0PEV3a19XZWJfRXJyb3IqPihlcnJvcikpOworICAgIGV2
YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmlldywgImxvYWQscHJvdmlzaW9uYWws
ZmFpbGVkIiwgY29uc3RfY2FzdDxFd2tfRXJyb3IqPihlcnJvcikpOwogfQogCiAvKioKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCmluZGV4IGNjZmE2MzYuLmQ0
MjFkMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192
aWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaApA
QCAtNDQsMTAgKzQ0LDEwIEBACiAgKiAgIGV3a19mb3JtX3N1Ym1pc3Npb25fcmVxdWVzdF9zdWJt
aXQoKSB3aWxsIGJlIGNhbGxlZCBhdXRvbWF0aWNhbGx5LgogICogLSAiaW50ZW50LHJlcXVlc3Qs
bmV3IiwgRXdrX0ludGVudCo6IHJlcG9ydHMgbmV3IFdlYiBpbnRlbnQgcmVxdWVzdC4KICAqIC0g
ImludGVudCxzZXJ2aWNlLHJlZ2lzdGVyIiwgRXdrX0ludGVudF9TZXJ2aWNlKjogcmVwb3J0cyBu
ZXcgV2ViIGludGVudCBzZXJ2aWNlIHJlZ2lzdHJhdGlvbi4KLSAqIC0gImxvYWQsZXJyb3IiLCBj
b25zdCBFd2tfV2ViX0Vycm9yKjogcmVwb3J0cyBtYWluIGZyYW1lIGxvYWQgZmFpbGVkLgorICog
LSAibG9hZCxlcnJvciIsIGNvbnN0IEV3a19FcnJvcio6IHJlcG9ydHMgbWFpbiBmcmFtZSBsb2Fk
IGZhaWxlZC4KICAqIC0gImxvYWQsZmluaXNoZWQiLCB2b2lkOiByZXBvcnRzIGxvYWQgZmluaXNo
ZWQuCiAgKiAtICJsb2FkLHByb2dyZXNzIiwgZG91YmxlKjogbG9hZCBwcm9ncmVzcyBoYXMgY2hh
bmdlZCAodmFsdWUgZnJvbSAwLjAgdG8gMS4wKS4KLSAqIC0gImxvYWQscHJvdmlzaW9uYWwsZmFp
bGVkIiwgY29uc3QgRXdrX1dlYl9FcnJvcio6IHZpZXcgcHJvdmlzaW9uYWwgbG9hZCBmYWlsZWQu
CisgKiAtICJsb2FkLHByb3Zpc2lvbmFsLGZhaWxlZCIsIGNvbnN0IEV3a19FcnJvcio6IHZpZXcg
cHJvdmlzaW9uYWwgbG9hZCBmYWlsZWQuCiAgKiAtICJsb2FkLHByb3Zpc2lvbmFsLHJlZGlyZWN0
Iiwgdm9pZDogdmlldyByZWNlaXZlZCByZWRpcmVjdCBmb3IgcHJvdmlzaW9uYWwgbG9hZC4KICAq
IC0gImxvYWQscHJvdmlzaW9uYWwsc3RhcnRlZCIsIHZvaWQ6IHZpZXcgc3RhcnRlZCBwcm92aXNp
b25hbCBsb2FkLgogICogLSAicG9saWN5LGRlY2lzaW9uLG5hdmlnYXRpb24iLCBFd2tfTmF2aWdh
dGlvbl9Qb2xpY3lfRGVjaXNpb24qOiBhIG5hdmlnYXRpb24gcG9saWN5IGRlY2lzaW9uIHNob3Vs
ZCBiZSB0YWtlbi4KQEAgLTczLDEyICs3MywxMiBAQAogI2luY2x1ZGUgImV3a19iYWNrX2Zvcndh
cmRfbGlzdC5oIgogI2luY2x1ZGUgImV3a19jb250ZXh0LmgiCiAjaW5jbHVkZSAiZXdrX2Rvd25s
b2FkX2pvYi5oIgorI2luY2x1ZGUgImV3a19lcnJvci5oIgogI2luY2x1ZGUgImV3a19pbnRlbnQu
aCIKICNpbmNsdWRlICJld2tfc2V0dGluZ3MuaCIKICNpbmNsdWRlICJld2tfdG91Y2guaCIKICNp
bmNsdWRlICJld2tfdXJsX3JlcXVlc3QuaCIKICNpbmNsdWRlICJld2tfdXJsX3Jlc3BvbnNlLmgi
Ci0jaW5jbHVkZSAiZXdrX3dlYl9lcnJvci5oIgogI2luY2x1ZGUgImV3a193ZWJfcmVzb3VyY2Uu
aCIKICNpbmNsdWRlIDxFdmFzLmg+CiAKQEAgLTIzMCw3ICsyMzAsNyBAQCB0eXBlZGVmIHN0cnVj
dCBfRXdrX1dlYl9SZXNvdXJjZV9Mb2FkX0Vycm9yIEV3a19XZWJfUmVzb3VyY2VfTG9hZF9FcnJv
cjsKICAqLwogc3RydWN0IF9Fd2tfV2ViX1Jlc291cmNlX0xvYWRfRXJyb3IgewogICAgIEV3a19X
ZWJfUmVzb3VyY2UgKnJlc291cmNlOyAvKio8IHJlc291cmNlIHRoYXQgZmFpbGVkIGxvYWRpbmcg
Ki8KLSAgICBFd2tfV2ViX0Vycm9yICplcnJvcjsgLyoqPCBsb2FkIGVycm9yICovCisgICAgRXdr
X0Vycm9yICplcnJvcjsgLyoqPCBsb2FkIGVycm9yICovCiB9OwogCiAvLy8gQ3JlYXRlcyBhIHR5
cGUgbmFtZSBmb3IgX0V3a19Eb3dubG9hZF9Kb2JfRXJyb3IuCkBAIC0yNDEsNyArMjQxLDcgQEAg
dHlwZWRlZiBzdHJ1Y3QgX0V3a19Eb3dubG9hZF9Kb2JfRXJyb3IgRXdrX0Rvd25sb2FkX0pvYl9F
cnJvcjsKICAqLwogc3RydWN0IF9Fd2tfRG93bmxvYWRfSm9iX0Vycm9yIHsKICAgICBFd2tfRG93
bmxvYWRfSm9iICpkb3dubG9hZF9qb2I7IC8qKjwgZG93bmxvYWQgdGhhdCBmYWlsZWQgKi8KLSAg
ICBFd2tfV2ViX0Vycm9yICplcnJvcjsgLyoqPCBkb3dubG9hZCBlcnJvciAqLworICAgIEV3a19F
cnJvciAqZXJyb3I7IC8qKjwgZG93bmxvYWQgZXJyb3IgKi8KIH07CiAKIC8qKgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfbG9hZGVyX2NsaWVu
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19sb2FkZXJf
Y2xpZW50LmNwcAppbmRleCA5OTdjYTM1Li4xODY3YjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19sb2FkZXJfY2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19sb2FkZXJfY2xpZW50LmNw
cApAQCAtMjgsMTQgKzI4LDE0IEBACiAKICNpbmNsdWRlICJXS0ZyYW1lLmgiCiAjaW5jbHVkZSAi
ZXdrX2JhY2tfZm9yd2FyZF9saXN0X3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfZXJyb3IuaCIK
KyNpbmNsdWRlICJld2tfZXJyb3JfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19pbnRlbnQuaCIK
ICNpbmNsdWRlICJld2tfaW50ZW50X3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfaW50ZW50X3Nl
cnZpY2UuaCIKICNpbmNsdWRlICJld2tfaW50ZW50X3NlcnZpY2VfcHJpdmF0ZS5oIgogI2luY2x1
ZGUgImV3a192aWV3X2xvYWRlcl9jbGllbnRfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a192aWV3
X3ByaXZhdGUuaCIKLSNpbmNsdWRlICJld2tfd2ViX2Vycm9yLmgiCi0jaW5jbHVkZSAiZXdrX3dl
Yl9lcnJvcl9wcml2YXRlLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViS2l0OwpAQCAtOTAsMTAgKzkwLDEwIEBAIHN0YXRpYyB2b2lkIGRpZEZh
aWxMb2FkV2l0aEVycm9yRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS0Vy
cm9yUmVmCiAgICAgICAgIHJldHVybjsKIAogICAgIEV2YXNfT2JqZWN0KiBld2tWaWV3ID0gc3Rh
dGljX2Nhc3Q8RXZhc19PYmplY3QqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7Ci0g
ICAgRXdrX1dlYl9FcnJvciogZXdrRXJyb3IgPSBld2tfd2ViX2Vycm9yX25ldyhlcnJvcik7Cisg
ICAgRXdrX0Vycm9yKiBld2tFcnJvciA9IGV3a19lcnJvcl9uZXcoZXJyb3IpOwogICAgIGV3a192
aWV3X2xvYWRfZXJyb3IoZXdrVmlldywgZXdrRXJyb3IpOwogICAgIGV3a192aWV3X2xvYWRfZmlu
aXNoZWQoZXdrVmlldyk7Ci0gICAgZXdrX3dlYl9lcnJvcl9mcmVlKGV3a0Vycm9yKTsKKyAgICBl
d2tfZXJyb3JfZnJlZShld2tFcnJvcik7CiB9CiAKIHN0YXRpYyB2b2lkIGRpZFN0YXJ0UHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYg
Lyp1c2VyRGF0YSovLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQpAQCAtMTIwLDkgKzEyMCw5IEBA
IHN0YXRpYyB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZShXS1Bh
Z2VSZWYsIFdLRnJhbWVSZWYgZnJhbWUsCiAgICAgICAgIHJldHVybjsKIAogICAgIEV2YXNfT2Jq
ZWN0KiBld2tWaWV3ID0gc3RhdGljX2Nhc3Q8RXZhc19PYmplY3QqPihjb25zdF9jYXN0PHZvaWQq
PihjbGllbnRJbmZvKSk7Ci0gICAgRXdrX1dlYl9FcnJvciogZXdrRXJyb3IgPSBld2tfd2ViX2Vy
cm9yX25ldyhlcnJvcik7CisgICAgRXdrX0Vycm9yKiBld2tFcnJvciA9IGV3a19lcnJvcl9uZXco
ZXJyb3IpOwogICAgIGV3a192aWV3X2xvYWRfcHJvdmlzaW9uYWxfZmFpbGVkKGV3a1ZpZXcsIGV3
a0Vycm9yKTsKLSAgICBld2tfd2ViX2Vycm9yX2ZyZWUoZXdrRXJyb3IpOworICAgIGV3a19lcnJv
cl9mcmVlKGV3a0Vycm9yKTsKIH0KIAogc3RhdGljIHZvaWQgZGlkQ2hhbmdlQmFja0ZvcndhcmRM
aXN0KFdLUGFnZVJlZiwgV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmIGFkZGVkSXRlbSwgV0tBcnJh
eVJlZiByZW1vdmVkSXRlbXMsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmgKaW5kZXggNGNi
YTIyZC4uOWFlMmM1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a192aWV3X3ByaXZhdGUuaApAQCAtNDMsNyArNDMsNyBAQCB0eXBlZGVmIHN0cnVjdCBf
RXdrX0Rvd25sb2FkX0pvYiBFd2tfRG93bmxvYWRfSm9iOwogdHlwZWRlZiBzdHJ1Y3QgX0V3a19G
b3JtX1N1Ym1pc3Npb25fUmVxdWVzdCBFd2tfRm9ybV9TdWJtaXNzaW9uX1JlcXVlc3Q7CiB0eXBl
ZGVmIHN0cnVjdCBfRXdrX1VybF9SZXF1ZXN0IEV3a19VcmxfUmVxdWVzdDsKIHR5cGVkZWYgc3Ry
dWN0IF9Fd2tfVXJsX1Jlc3BvbnNlIEV3a19VcmxfUmVzcG9uc2U7Ci10eXBlZGVmIHN0cnVjdCBf
RXdrX1dlYl9FcnJvciBFd2tfV2ViX0Vycm9yOwordHlwZWRlZiBzdHJ1Y3QgX0V3a19FcnJvciBF
d2tfRXJyb3I7CiB0eXBlZGVmIHN0cnVjdCBfRXdrX1dlYl9SZXNvdXJjZSBFd2tfV2ViX1Jlc291
cmNlOwogdHlwZWRlZiBzdHJ1Y3QgX0V3a19OYXZpZ2F0aW9uX1BvbGljeV9EZWNpc2lvbiBFd2tf
TmF2aWdhdGlvbl9Qb2xpY3lfRGVjaXNpb247CiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQpAQCAt
NTYsNyArNTYsNyBAQCB0eXBlZGVmIHN0cnVjdCBfRXdrX0ludGVudF9TZXJ2aWNlIEV3a19JbnRl
bnRfU2VydmljZTsKIHZvaWQgZXdrX3ZpZXdfY3Vyc29yX3NldChFdmFzX09iamVjdCogZXdrVmll
dywgY29uc3QgV2ViQ29yZTo6Q3Vyc29yJiBjdXJzb3IpOwogdm9pZCBld2tfdmlld19kaXNwbGF5
KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0KTsKIHZv
aWQgZXdrX3ZpZXdfZG93bmxvYWRfam9iX2NhbmNlbGxlZChFdmFzX09iamVjdCogZXdrVmlldywg
RXdrX0Rvd25sb2FkX0pvYiopOwotdm9pZCBld2tfdmlld19kb3dubG9hZF9qb2JfZmFpbGVkKEV2
YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfRG93bmxvYWRfSm9iKiwgRXdrX1dlYl9FcnJvciopOwor
dm9pZCBld2tfdmlld19kb3dubG9hZF9qb2JfZmFpbGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBF
d2tfRG93bmxvYWRfSm9iKiwgRXdrX0Vycm9yKik7CiB2b2lkIGV3a192aWV3X2Rvd25sb2FkX2pv
Yl9maW5pc2hlZChFdmFzX09iamVjdCogZXdrVmlldywgRXdrX0Rvd25sb2FkX0pvYiopOwogdm9p
ZCBld2tfdmlld19kb3dubG9hZF9qb2JfcmVxdWVzdGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBF
d2tfRG93bmxvYWRfSm9iKik7CiB2b2lkIGV3a192aWV3X2Zvcm1fc3VibWlzc2lvbl9yZXF1ZXN0
X25ldyhFdmFzX09iamVjdCogZXdrVmlldywgRXdrX0Zvcm1fU3VibWlzc2lvbl9SZXF1ZXN0Kik7
CkBAIC02NSwxMCArNjUsMTAgQEAgdm9pZCBld2tfdmlld19mdWxsX3NjcmVlbl9lbnRlcihFdmFz
X09iamVjdCogZXdrVmlldyk7CiB2b2lkIGV3a192aWV3X2Z1bGxfc2NyZWVuX2V4aXQoRXZhc19P
YmplY3QqIGV3a1ZpZXcpOwogI2VuZGlmCiB2b2lkIGV3a192aWV3X2ltYWdlX2RhdGFfc2V0KEV2
YXNfT2JqZWN0KiBld2tWaWV3LCB2b2lkKiBpbWFnZURhdGEsIGNvbnN0IFdlYkNvcmU6OkludFNp
emUmIHNpemUpOwotdm9pZCBld2tfdmlld19sb2FkX2Vycm9yKEV2YXNfT2JqZWN0KiBld2tWaWV3
LCBjb25zdCBFd2tfV2ViX0Vycm9yKiBlcnJvcik7Cit2b2lkIGV3a192aWV3X2xvYWRfZXJyb3Io
RXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IEV3a19FcnJvciogZXJyb3IpOwogdm9pZCBld2tf
dmlld19sb2FkX2ZpbmlzaGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKIHZvaWQgZXdrX3ZpZXdf
bG9hZF9wcm9ncmVzc19jaGFuZ2VkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBkb3VibGUgcHJvZ3Jl
c3MpOwotdm9pZCBld2tfdmlld19sb2FkX3Byb3Zpc2lvbmFsX2ZhaWxlZChFdmFzX09iamVjdCog
ZXdrVmlldywgY29uc3QgRXdrX1dlYl9FcnJvciogZXJyb3IpOwordm9pZCBld2tfdmlld19sb2Fk
X3Byb3Zpc2lvbmFsX2ZhaWxlZChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgRXdrX0Vycm9y
KiBlcnJvcik7CiB2b2lkIGV3a192aWV3X2xvYWRfcHJvdmlzaW9uYWxfcmVkaXJlY3QoRXZhc19P
YmplY3QqIGV3a1ZpZXcpOwogdm9pZCBld2tfdmlld19sb2FkX3Byb3Zpc2lvbmFsX3N0YXJ0ZWQo
RXZhc19PYmplY3QqIGV3a1ZpZXcpOwogdm9pZCBld2tfdmlld19uYXZpZ2F0aW9uX3BvbGljeV9k
ZWNpc2lvbihFdmFzX09iamVjdCogZXdrVmlldywgRXdrX05hdmlnYXRpb25fUG9saWN5X0RlY2lz
aW9uKiBkZWNpc2lvbik7CkBAIC03Niw3ICs3Niw3IEBAIHZvaWQgZXdrX3ZpZXdfbmV3X3dpbmRv
d19wb2xpY3lfZGVjaXNpb24oRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19OYXZpZ2F0aW9uX1Bv
CiB2b2lkIGV3a192aWV3X3BhZ2VfY2xvc2UoRXZhc19PYmplY3QqIGV3a1ZpZXcpOwogV0tQYWdl
UmVmIGV3a192aWV3X3BhZ2VfY3JlYXRlKEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKIHZvaWQgZXdr
X3ZpZXdfdGl0bGVfY2hhbmdlZChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgY2hhciogdGl0
bGUpOwotdm9pZCBld2tfdmlld19yZXNvdXJjZV9sb2FkX2ZhaWxlZChFdmFzX09iamVjdCogZXdr
VmlldywgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBFd2tfV2ViX0Vycm9yKiBlcnJvcik7
Cit2b2lkIGV3a192aWV3X3Jlc291cmNlX2xvYWRfZmFpbGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3
LCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIsIEV3a19FcnJvciogZXJyb3IpOwogdm9pZCBl
d2tfdmlld19yZXNvdXJjZV9sb2FkX2ZpbmlzaGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCB1aW50
NjRfdCByZXNvdXJjZUlkZW50aWZpZXIpOwogdm9pZCBld2tfdmlld19yZXNvdXJjZV9sb2FkX2lu
aXRpYXRlZChFdmFzX09iamVjdCogZXdrVmlldywgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVy
LCBFd2tfV2ViX1Jlc291cmNlKiByZXNvdXJjZSwgRXdrX1VybF9SZXF1ZXN0KiByZXF1ZXN0KTsK
IHZvaWQgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9yZXNwb25zZShFdmFzX09iamVjdCogZXdrVmll
dywgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBFd2tfVXJsX1Jlc3BvbnNlKiByZXNwb25z
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmll
d19yZXNvdXJjZV9sb2FkX2NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfdmlld19yZXNvdXJjZV9sb2FkX2NsaWVudC5jcHAKaW5kZXggMTEzZTE3OC4uZjk3
ODM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Zp
ZXdfcmVzb3VyY2VfbG9hZF9jbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a192aWV3X3Jlc291cmNlX2xvYWRfY2xpZW50LmNwcApAQCAtMzIsMTQgKzMy
LDE0IEBACiAjaW5jbHVkZSAiV0tVUkwuaCIKICNpbmNsdWRlICJXS1VSTFJlcXVlc3QuaCIKICNp
bmNsdWRlICJXS1VSTFJlc3BvbnNlLmgiCisjaW5jbHVkZSAiZXdrX2Vycm9yLmgiCisjaW5jbHVk
ZSAiZXdrX2Vycm9yX3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfdXJsX3JlcXVlc3QuaCIKICNp
bmNsdWRlICJld2tfdXJsX3JlcXVlc3RfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a191cmxfcmVz
cG9uc2UuaCIKICNpbmNsdWRlICJld2tfdXJsX3Jlc3BvbnNlX3ByaXZhdGUuaCIKICNpbmNsdWRl
ICJld2tfdmlld19wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9j
bGllbnRfcHJpdmF0ZS5oIgotI2luY2x1ZGUgImV3a193ZWJfZXJyb3IuaCIKLSNpbmNsdWRlICJl
d2tfd2ViX2Vycm9yX3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfd2ViX3Jlc291cmNlLmgiCiAj
aW5jbHVkZSAiZXdrX3dlYl9yZXNvdXJjZV9wcml2YXRlLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgpAQCAtODgsMTAgKzg4LDEwIEBAIHN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRG
b3JSZXNvdXJjZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIHVpbnQ2NF90IHJlc291cmNlSWRlCiAK
IHN0YXRpYyB2b2lkIGRpZEZhaWxMb2FkRm9yUmVzb3VyY2UoV0tQYWdlUmVmLCBXS0ZyYW1lUmVm
LCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIsIFdLRXJyb3JSZWYgd2tFcnJvciwgY29uc3Qg
dm9pZCogY2xpZW50SW5mbykKIHsKLSAgICBFd2tfV2ViX0Vycm9yKiBld2tFcnJvciA9IGV3a193
ZWJfZXJyb3JfbmV3KHdrRXJyb3IpOworICAgIEV3a19FcnJvciogZXdrRXJyb3IgPSBld2tfZXJy
b3JfbmV3KHdrRXJyb3IpOwogICAgIGV3a192aWV3X3Jlc291cmNlX2xvYWRfZmFpbGVkKHRvRXdr
VmlldyhjbGllbnRJbmZvKSwgcmVzb3VyY2VJZGVudGlmaWVyLCBld2tFcnJvcik7CiAgICAgZXdr
X3ZpZXdfcmVzb3VyY2VfbG9hZF9maW5pc2hlZCh0b0V3a1ZpZXcoY2xpZW50SW5mbyksIHJlc291
cmNlSWRlbnRpZmllcik7Ci0gICAgZXdrX3dlYl9lcnJvcl9mcmVlKGV3a0Vycm9yKTsKKyAgICBl
d2tfZXJyb3JfZnJlZShld2tFcnJvcik7CiB9CiAKIHZvaWQgZXdrX3ZpZXdfcmVzb3VyY2VfbG9h
ZF9jbGllbnRfYXR0YWNoKFdLUGFnZVJlZiBwYWdlUmVmLCBFdmFzX09iamVjdCogZXdrVmlldykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a193ZWJfZXJy
b3IuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3dlYl9lcnJvci5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcwMzgwYmQuLjAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3dlYl9lcnJvci5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSwxMzAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRl
bCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgImV3a193ZWJfZXJyb3IuaCIKLQotI2luY2x1ZGUgIkVycm9y
c0VmbC5oIgotI2luY2x1ZGUgIldLRWluYVNoYXJlZFN0cmluZy5oIgotI2luY2x1ZGUgIldLU3Ry
aW5nLmgiCi0jaW5jbHVkZSAiV0tVUkwuaCIKLSNpbmNsdWRlICJld2tfd2ViX2Vycm9yX3ByaXZh
dGUuaCIKLSNpbmNsdWRlIDxXS0FQSUNhc3QuaD4KLSNpbmNsdWRlIDxXS0Vycm9yLmg+Ci0jaW5j
bHVkZSA8V0tSZXRhaW5QdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0KLXVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLQotc3RydWN0
IF9Fd2tfV2ViX0Vycm9yIHsKLSAgICBXS1JldGFpblB0cjxXS0Vycm9yUmVmPiB3a0Vycm9yOwot
Ci0gICAgV0tFaW5hU2hhcmVkU3RyaW5nIHVybDsKLSAgICBXS0VpbmFTaGFyZWRTdHJpbmcgZGVz
Y3JpcHRpb247Ci0KLSAgICBfRXdrX1dlYl9FcnJvcihXS0Vycm9yUmVmIGVycm9yUmVmKQotICAg
ICAgICA6IHdrRXJyb3IoZXJyb3JSZWYpCi0gICAgICAgICwgdXJsKEFkb3B0V0ssIFdLRXJyb3JD
b3B5RmFpbGluZ1VSTChlcnJvclJlZikpCi0gICAgICAgICwgZGVzY3JpcHRpb24oQWRvcHRXSywg
V0tFcnJvckNvcHlMb2NhbGl6ZWREZXNjcmlwdGlvbihlcnJvclJlZikpCi0gICAgeyB9Ci0KLSAg
ICB+X0V3a19XZWJfRXJyb3IoKQotICAgIHsKLSAgICB9Ci19OwotCi0jZGVmaW5lIEVXS19XRUJf
RVJST1JfV0tfR0VUX09SX1JFVFVSTihlcnJvciwgd2tFcnJvcl8sIC4uLikgICAgXAotICAgIGlm
ICghKGVycm9yKSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
Ci0gICAgICAgIEVJTkFfTE9HX0NSSVQoImVycm9yIGlzIE5VTEwuIik7ICAgICAgICAgICAgICAg
ICAgICAgIFwKLSAgICAgICAgcmV0dXJuIF9fVkFfQVJHU19fOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKLSAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBpZiAoIShlcnJvciktPndrRXJyb3IpIHsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIEVJTkFfTE9HX0NSSVQo
ImVycm9yLT53a0Vycm9yIGlzIE5VTEwuIik7ICAgICAgICAgICAgXAotICAgICAgICByZXR1cm4g
X19WQV9BUkdTX187ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAotICAgIFdLRXJyb3JSZWYgd2tFcnJvcl8gPSAoZXJyb3IpLT53a0Vycm9yLmdldCgpCi0KLXZv
aWQgZXdrX3dlYl9lcnJvcl9mcmVlKEV3a19XZWJfRXJyb3IqIGVycm9yKQotewotICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOKGVycm9yKTsKLQotICAgIGRlbGV0ZSBlcnJvcjsKLX0KLQot
RXdrX1dlYl9FcnJvcl9UeXBlIGV3a193ZWJfZXJyb3JfdHlwZV9nZXQoY29uc3QgRXdrX1dlYl9F
cnJvciogZXJyb3IpCi17Ci0gICAgRVdLX1dFQl9FUlJPUl9XS19HRVRfT1JfUkVUVVJOKGVycm9y
LCB3a0Vycm9yLCBFV0tfV0VCX0VSUk9SX1RZUEVfTk9ORSk7Ci0KLSAgICBXS1JldGFpblB0cjxX
S1N0cmluZ1JlZj4gd2tEb21haW4oQWRvcHRXSywgV0tFcnJvckNvcHlEb21haW4od2tFcnJvcikp
OwotICAgIFdURjo6U3RyaW5nIGVycm9yRG9tYWluID0gdG9XVEZTdHJpbmcod2tEb21haW4uZ2V0
KCkpOwotCi0gICAgaWYgKGVycm9yRG9tYWluID09IGVycm9yRG9tYWluTmV0d29yaykKLSAgICAg
ICAgcmV0dXJuIEVXS19XRUJfRVJST1JfVFlQRV9ORVRXT1JLOwotICAgIGlmIChlcnJvckRvbWFp
biA9PSBlcnJvckRvbWFpblBvbGljeSkKLSAgICAgICAgcmV0dXJuIEVXS19XRUJfRVJST1JfVFlQ
RV9QT0xJQ1k7Ci0gICAgaWYgKGVycm9yRG9tYWluID09IGVycm9yRG9tYWluUGx1Z2luKQotICAg
ICAgICByZXR1cm4gRVdLX1dFQl9FUlJPUl9UWVBFX1BMVUdJTjsKLSAgICBpZiAoZXJyb3JEb21h
aW4gPT0gZXJyb3JEb21haW5Eb3dubG9hZCkKLSAgICAgICAgcmV0dXJuIEVXS19XRUJfRVJST1Jf
VFlQRV9ET1dOTE9BRDsKLSAgICBpZiAoZXJyb3JEb21haW4gPT0gZXJyb3JEb21haW5QcmludCkK
LSAgICAgICAgcmV0dXJuIEVXS19XRUJfRVJST1JfVFlQRV9QUklOVDsKLSAgICByZXR1cm4gRVdL
X1dFQl9FUlJPUl9UWVBFX0lOVEVSTkFMOwotfQotCi1jb25zdCBjaGFyKiBld2tfd2ViX2Vycm9y
X3VybF9nZXQoY29uc3QgRXdrX1dlYl9FcnJvciogZXJyb3IpCi17Ci0gICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk5fVkFMKGVycm9yLCAwKTsKLQotICAgIHJldHVybiBlcnJvci0+dXJsOwot
fQotCi1pbnQgZXdrX3dlYl9lcnJvcl9jb2RlX2dldChjb25zdCBFd2tfV2ViX0Vycm9yKiBlcnJv
cikKLXsKLSAgICBFV0tfV0VCX0VSUk9SX1dLX0dFVF9PUl9SRVRVUk4oZXJyb3IsIHdrRXJyb3Is
IDApOwotCi0gICAgcmV0dXJuIFdLRXJyb3JHZXRFcnJvckNvZGUod2tFcnJvcik7Ci19Ci0KLWNv
bnN0IGNoYXIqIGV3a193ZWJfZXJyb3JfZGVzY3JpcHRpb25fZ2V0KGNvbnN0IEV3a19XZWJfRXJy
b3IqIGVycm9yKQotewotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChlcnJvciwg
MCk7Ci0KLSAgICByZXR1cm4gZXJyb3ItPmRlc2NyaXB0aW9uOwotfQotCi1FaW5hX0Jvb2wgZXdr
X3dlYl9lcnJvcl9jYW5jZWxsYXRpb25fZ2V0KGNvbnN0IEV3a19XZWJfRXJyb3IqIGVycm9yKQot
ewotICAgIEVXS19XRUJfRVJST1JfV0tfR0VUX09SX1JFVFVSTihlcnJvciwgd2tFcnJvciwgZmFs
c2UpOwotCi0gICAgcmV0dXJuIHRvSW1wbCh3a0Vycm9yKS0+cGxhdGZvcm1FcnJvcigpLmlzQ2Fu
Y2VsbGF0aW9uKCk7Ci19Ci0KLUV3a19XZWJfRXJyb3IqIGV3a193ZWJfZXJyb3JfbmV3KFdLRXJy
b3JSZWYgZXJyb3IpCi17Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGVycm9y
LCAwKTsKLQotICAgIHJldHVybiBuZXcgRXdrX1dlYl9FcnJvcihlcnJvcik7Ci19CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfd2ViX2Vycm9yLmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfd2ViX2Vycm9yLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRiYTBjN2EuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3dlYl9lcnJvci5oCisrKyAvZGV2L251bGwKQEAgLTEs
MTI0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24u
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLS8qKgotICogQGZpbGUgICAgZXdrX3dl
Yl9lcnJvci5oCi0gKiBAYnJpZWYgICBEZXNjcmliZXMgdGhlIFdlYiBFcnJvciBBUEkuCi0gKi8K
LQotI2lmbmRlZiBld2tfd2ViX2Vycm9yX2gKLSNkZWZpbmUgZXdrX3dlYl9lcnJvcl9oCi0KLSNp
bmNsdWRlIDxFaW5hLmg+Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5k
aWYKLQotLyoqIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIEBhIEV3a19XZWJfRXJyb3IuICovCi10
eXBlZGVmIHN0cnVjdCBfRXdrX1dlYl9FcnJvciBFd2tfV2ViX0Vycm9yOwotCi0vLy8gQ3JlYXRl
cyBhIHR5cGUgbmFtZSBmb3IgRXdrX1dlYl9FcnJvcl9UeXBlLgotdHlwZWRlZiBlbnVtIHsKLSAg
ICBFV0tfV0VCX0VSUk9SX1RZUEVfTk9ORSwKLSAgICBFV0tfV0VCX0VSUk9SX1RZUEVfSU5URVJO
QUwsCi0gICAgRVdLX1dFQl9FUlJPUl9UWVBFX05FVFdPUkssCi0gICAgRVdLX1dFQl9FUlJPUl9U
WVBFX1BPTElDWSwKLSAgICBFV0tfV0VCX0VSUk9SX1RZUEVfUExVR0lOLAotICAgIEVXS19XRUJf
RVJST1JfVFlQRV9ET1dOTE9BRCwKLSAgICBFV0tfV0VCX0VSUk9SX1RZUEVfUFJJTlQKLX0gRXdr
X1dlYl9FcnJvcl9UeXBlOwotCi0vKioKLSAqIEZyZWVzIHRoZSBnaXZlbiBvYmplY3QuCi0gKgot
ICogQHBhcmFtIGVycm9yIHRoZSBlcnJvciBvYmplY3QgdG8gZnJlZQotICovCi1FQVBJIHZvaWQg
ZXdrX3dlYl9lcnJvcl9mcmVlKEV3a19XZWJfRXJyb3IgKmVycm9yKTsKLQotLyoqCi0gKiBRdWVy
eSB0eXBlIGZvciB0aGlzIGVycm9yLgotICoKLSAqIEBwYXJhbSBlcnJvciBlcnJvciBvYmplY3Qg
dG8gcXVlcnkuCi0gKgotICogQHJldHVybiB0aGUgZXJyb3IgdHlwZSwgdGhhdCBtYXkgYmUgQGMg
TlVMTC4gVGhpcyBwb2ludGVyIGlzCi0gKiAgICAgICAgIGd1YXJhbnRlZWQgdG8gYmUgZWluYV9z
dHJpbmdzaGFyZSwgc28gd2hlbmV2ZXIgcG9zc2libGUKLSAqICAgICAgICAgc2F2ZSB5b3Vyc2Vs
ZiBzb21lIGNwdSBjeWNsZXMgYW5kIHVzZQotICogICAgICAgICBlaW5hX3N0cmluZ3NoYXJlX3Jl
ZigpIGluc3RlYWQgb2YgZWluYV9zdHJpbmdzaGFyZV9hZGQoKSBvcgotICogICAgICAgICBzdHJk
dXAoKS4KLSAqLwotRUFQSSBFd2tfV2ViX0Vycm9yX1R5cGUgZXdrX3dlYl9lcnJvcl90eXBlX2dl
dChjb25zdCBFd2tfV2ViX0Vycm9yICplcnJvcik7Ci0KLS8qKgotICogUXVlcnkgZmFpbGluZyBV
UkwgZm9yIHRoaXMgZXJyb3IuCi0gKgotICogVVJMIHRoYXQgZmFpbGVkIGxvYWRpbmcuCi0gKgot
ICogQHBhcmFtIGVycm9yIGVycm9yIG9iamVjdCB0byBxdWVyeS4KLSAqCi0gKiBAcmV0dXJuIHRo
ZSBVUkwgcG9pbnRlciwgdGhhdCBtYXkgYmUgQGMgTlVMTC4gVGhpcyBwb2ludGVyIGlzCi0gKiAg
ICAgICAgIGd1YXJhbnRlZWQgdG8gYmUgZWluYV9zdHJpbmdzaGFyZSwgc28gd2hlbmV2ZXIgcG9z
c2libGUKLSAqICAgICAgICAgc2F2ZSB5b3Vyc2VsZiBzb21lIGNwdSBjeWNsZXMgYW5kIHVzZQot
ICogICAgICAgICBlaW5hX3N0cmluZ3NoYXJlX3JlZigpIGluc3RlYWQgb2YgZWluYV9zdHJpbmdz
aGFyZV9hZGQoKSBvcgotICogICAgICAgICBzdHJkdXAoKS4KLSAqLwotRUFQSSBjb25zdCBjaGFy
ICpld2tfd2ViX2Vycm9yX3VybF9nZXQoY29uc3QgRXdrX1dlYl9FcnJvciAqZXJyb3IpOwotCi0v
KioKLSAqIFF1ZXJ5IEhUVFAgZXJyb3IgY29kZS4KLSAqCi0gKiBAcGFyYW0gZXJyb3IgZXJyb3Ig
b2JqZWN0IHRvIHF1ZXJ5LgotICoKLSAqIEByZXR1cm4gdGhlIEhUVFAgZXJyb3IgY29kZS4KLSAq
LwotRUFQSSBpbnQgZXdrX3dlYl9lcnJvcl9jb2RlX2dldChjb25zdCBFd2tfV2ViX0Vycm9yICpl
cnJvcik7Ci0KLS8qKgotICogUXVlcnkgZGVzY3JpcHRpb24gZm9yIHRoaXMgZXJyb3IuCi0gKgot
ICogQHBhcmFtIGVycm9yIGVycm9yIG9iamVjdCB0byBxdWVyeS4KLSAqCi0gKiBAcmV0dXJuIHRo
ZSBkZXNjcmlwdGlvbiBwb2ludGVyLCB0aGF0IG1heSBiZSBAYyBOVUxMLiBUaGlzIHBvaW50ZXIg
aXMKLSAqICAgICAgICAgZ3VhcmFudGVlZCB0byBiZSBlaW5hX3N0cmluZ3NoYXJlLCBzbyB3aGVu
ZXZlciBwb3NzaWJsZQotICogICAgICAgICBzYXZlIHlvdXJzZWxmIHNvbWUgY3B1IGN5Y2xlcyBh
bmQgdXNlCi0gKiAgICAgICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVmKCkgaW5zdGVhZCBvZiBlaW5h
X3N0cmluZ3NoYXJlX2FkZCgpIG9yCi0gKiAgICAgICAgIHN0cmR1cCgpLgotICovCi1FQVBJIGNv
bnN0IGNoYXIgKmV3a193ZWJfZXJyb3JfZGVzY3JpcHRpb25fZ2V0KGNvbnN0IEV3a19XZWJfRXJy
b3IgKmVycm9yKTsKLQotLyoqCi0gKiBRdWVyeSBpZiBlcnJvciBzaG91bGQgYmUgdHJlYXRlZCBh
cyBhIGNhbmNlbGxhdGlvbi4KLSAqCi0gKiBAcGFyYW0gZXJyb3IgZXJyb3Igb2JqZWN0IHRvIHF1
ZXJ5LgotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHRoaXMgZXJyb3Igc2hvdWxkIGJl
IHRyZWF0ZWQgYXMgYSBjYW5jZWxsYXRpb24sIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCi0gKi8K
LUVBUEkgRWluYV9Cb29sIGV3a193ZWJfZXJyb3JfY2FuY2VsbGF0aW9uX2dldChjb25zdCBFd2tf
V2ViX0Vycm9yICplcnJvcik7Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCi0KLSNl
bmRpZiAvLyBld2tfd2ViX2Vycm9yX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a193ZWJfZXJyb3JfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX3dlYl9lcnJvcl9wcml2YXRlLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGM5YTMxZTUuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3dlYl9lcnJvcl9wcml2YXRlLmgKKysrIC9kZXYvbnVsbApAQCAtMSwz
NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIGV3a193ZWJfZXJyb3JfcHJp
dmF0ZV9oCi0jZGVmaW5lIGV3a193ZWJfZXJyb3JfcHJpdmF0ZV9oCi0KLSNpbmNsdWRlIDxXS0Vy
cm9yLmg+Ci0KLXR5cGVkZWYgc3RydWN0IF9Fd2tfV2ViX0Vycm9yIEV3a19XZWJfRXJyb3I7Ci0K
LUV3a19XZWJfRXJyb3IqIGV3a193ZWJfZXJyb3JfbmV3KFdLRXJyb3JSZWYgZXJyb3IpOwotCi0j
ZW5kaWYgLy8gZXdrX3dlYl9lcnJvcl9wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9jb29raWVfbWFuYWdlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfY29va2ll
X21hbmFnZXIuY3BwCmluZGV4IDQzNTNjZWQuLjhjOWZkZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9jb29raWVfbWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2sy
X2Nvb2tpZV9tYW5hZ2VyLmNwcApAQCAtNjUsNyArNjUsNyBAQCBzdGF0aWMgdm9pZCBzZXJ2ZXJD
YWxsYmFjayhTb3VwU2VydmVyKiBzZXJ2ZXIsIFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBjb25zdCBj
aGFyKgogICAgIHNvdXBfbWVzc2FnZV9ib2R5X2NvbXBsZXRlKG1lc3NhZ2UtPnJlc3BvbnNlX2Jv
ZHkpOwogfQogCi1zdGF0aWMgdm9pZCBnZXRBY2NlcHRQb2xpY3lDYWxsYmFjayhFd2tfQ29va2ll
X0FjY2VwdF9Qb2xpY3kgcG9saWN5LCBFd2tfV2ViX0Vycm9yKiBlcnJvciwgdm9pZCogZXZlbnRf
aW5mbykKK3N0YXRpYyB2b2lkIGdldEFjY2VwdFBvbGljeUNhbGxiYWNrKEV3a19Db29raWVfQWNj
ZXB0X1BvbGljeSBwb2xpY3ksIEV3a19FcnJvciogZXJyb3IsIHZvaWQqIGV2ZW50X2luZm8pCiB7
CiAgICAgQVNTRVJUX0ZBTFNFKGVycm9yKTsKICAgICBFd2tfQ29va2llX0FjY2VwdF9Qb2xpY3kq
IHJldCA9IHN0YXRpY19jYXN0PEV3a19Db29raWVfQWNjZXB0X1BvbGljeSo+KGV2ZW50X2luZm8p
OwpAQCAtODEsNyArODEsNyBAQCBzdGF0aWMgRXdrX0Nvb2tpZV9BY2NlcHRfUG9saWN5IGdldEFj
Y2VwdFBvbGljeShFd2tfQ29va2llX01hbmFnZXIqIG1hbmFnZXIpCiAgICAgcmV0dXJuIHBvbGlj
eTsKIH0KIAotc3RhdGljIHZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXNDYWxsYmFjayhFaW5h
X0xpc3QqIGhvc3RuYW1lcywgRXdrX1dlYl9FcnJvciogZXJyb3IsIHZvaWQqIGV2ZW50X2luZm8p
CitzdGF0aWMgdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llc0NhbGxiYWNrKEVpbmFfTGlzdCog
aG9zdG5hbWVzLCBFd2tfRXJyb3IqIGVycm9yLCB2b2lkKiBldmVudF9pbmZvKQogewogICAgIEFT
U0VSVF9GQUxTRShlcnJvcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9kb3dubG9hZF9qb2IuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2Rvd25sb2FkX2pvYi5jcHAKaW5k
ZXggMjJjOTdhYS4uZDI4MTIyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2Rvd25sb2FkX2pvYi5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2Rvd25sb2FkX2pvYi5jcHAK
QEAgLTEzMSw3ICsxMzEsNyBAQCBzdGF0aWMgdm9pZCBvbl9kb3dubG9hZF9jYW5jZWxsZWQodm9p
ZCogdXNlckRhdGEsIEV2YXNfT2JqZWN0KiB3ZWJ2aWV3LCB2b2lkKiBldgogc3RhdGljIHZvaWQg
b25fZG93bmxvYWRfZmFpbGVkKHZvaWQqIHVzZXJEYXRhLCBFdmFzX09iamVjdCogd2Vidmlldywg
dm9pZCogZXZlbnRJbmZvKQogewogICAgIEV3a19Eb3dubG9hZF9Kb2JfRXJyb3IqIGRvd25sb2Fk
RXJyb3IgPSBzdGF0aWNfY2FzdDxFd2tfRG93bmxvYWRfSm9iX0Vycm9yKj4oZXZlbnRJbmZvKTsK
LSAgICBmcHJpbnRmKHN0ZGVyciwgIkRvd25sb2FkIGVycm9yOiAlc1xuIiwgZXdrX3dlYl9lcnJv
cl9kZXNjcmlwdGlvbl9nZXQoZG93bmxvYWRFcnJvci0+ZXJyb3IpKTsKKyAgICBmcHJpbnRmKHN0
ZGVyciwgIkRvd25sb2FkIGVycm9yOiAlc1xuIiwgZXdrX2Vycm9yX2Rlc2NyaXB0aW9uX2dldChk
b3dubG9hZEVycm9yLT5lcnJvcikpOwogICAgIGVjb3JlX21haW5fbG9vcF9xdWl0KCk7CiAgICAg
RkFJTCgpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IGExMTI3YjIuLmEyZDdiYjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0wOS0yOCAgSm9uZ3Nlb2sg
WWFuZyAgPGpzNDUueWFuZ0BzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIFJlbW92
ZSAid2ViIiB3b3JkIGZyb20gZXdrX3dlYl9lcnJvciBBUElzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Nzg4NgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSAid2ViIiB3b3JkIGZyb20gZXdrX3dl
Yl9lcnJvciBBUElzLgorICAgICAgICAid2ViIiB3b3JkIHdhcyByZWR1bmRhbnQgYmVjYXVzZSAi
ZXdrIiBtZWFucyAiRUZMIFdlYktpdCIgYW5kIFdLIEFQSXMgZm9yIGVycm9yIGRvZXMgbm90IGhh
dmUgIndlYiIgd29yZC4KKworICAgICAgICAqIE1pbmlCcm93c2VyL2VmbC9tYWluLmM6CisgICAg
ICAgIChvbl9lcnJvcik6CisKIDIwMTItMDktMjcgIEFsZXhhbmRyZSBFbGlhcyAgPGFlbGlhc0Bj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBEdW1wUmVuZGVyVHJlZSBzdXBwb3J0
IGZvciBzb2Z0d2FyZSBjb21wb3NpdGluZwpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIv
ZWZsL21haW4uYyBiL1Rvb2xzL01pbmlCcm93c2VyL2VmbC9tYWluLmMKaW5kZXggYjQ0ZTUxNC4u
ZjBjNzczNyAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvZWZsL21haW4uYworKysgYi9U
b29scy9NaW5pQnJvd3Nlci9lZmwvbWFpbi5jCkBAIC0xODcsMTMgKzE4NywxMyBAQCBzdGF0aWMg
dm9pZAogb25fZXJyb3Iodm9pZCAqdXNlcl9kYXRhLCBFdmFzX09iamVjdCAqd2Vidmlldywgdm9p
ZCAqZXZlbnRfaW5mbykKIHsKICAgICBFaW5hX1N0cmJ1ZiogYnVmZmVyOwotICAgIGNvbnN0IEV3
a19XZWJfRXJyb3IgKmVycm9yID0gKGNvbnN0IEV3a19XZWJfRXJyb3IgKilldmVudF9pbmZvOwor
ICAgIGNvbnN0IEV3a19FcnJvciAqZXJyb3IgPSAoY29uc3QgRXdrX0Vycm9yICopZXZlbnRfaW5m
bzsKIAogICAgIGJ1ZmZlciA9IGVpbmFfc3RyYnVmX25ldygpOwogICAgIGVpbmFfc3RyYnVmX2Fw
cGVuZF9wcmludGYoYnVmZmVyLCAiPGh0bWw+PGJvZHk+PGRpdiBzdHlsZT1cImNvbG9yOiNmZjAw
MDBcIj5FUlJPUiE8L2Rpdj48YnI+PGRpdj5Db2RlOiAlZDxicj5EZXNjcmlwdGlvbjogJXM8YnI+
VVJMOiAlczwvZGl2PjwvYm9keTwvaHRtbD4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZXdrX3dlYl9lcnJvcl9jb2RlX2dldChlcnJvciksIGV3a193ZWJfZXJyb3JfZGVzY3JpcHRp
b25fZ2V0KGVycm9yKSwgZXdrX3dlYl9lcnJvcl91cmxfZ2V0KGVycm9yKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBld2tfZXJyb3JfY29kZV9nZXQoZXJyb3IpLCBld2tfZXJyb3Jf
ZGVzY3JpcHRpb25fZ2V0KGVycm9yKSwgZXdrX2Vycm9yX3VybF9nZXQoZXJyb3IpKTsKIAotICAg
IGV3a192aWV3X2h0bWxfc3RyaW5nX2xvYWQod2VidmlldywgZWluYV9zdHJidWZfc3RyaW5nX2dl
dChidWZmZXIpLCAwLCBld2tfd2ViX2Vycm9yX3VybF9nZXQoZXJyb3IpKTsKKyAgICBld2tfdmll
d19odG1sX3N0cmluZ19sb2FkKHdlYnZpZXcsIGVpbmFfc3RyYnVmX3N0cmluZ19nZXQoYnVmZmVy
KSwgMCwgZXdrX2Vycm9yX3VybF9nZXQoZXJyb3IpKTsKICAgICBlaW5hX3N0cmJ1Zl9mcmVlKGJ1
ZmZlcik7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167211</attachid>
            <date>2012-10-04 17:15:24 -0700</date>
            <delta_ts>2012-10-04 17:23:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>47481</size>
            <attacher name="Jongseok Yang">js45.yang</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBlNGQ1ZGZiLi5iYzlkNTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTMg
QEAKKzIwMTItMDktMjggIEpvbmdzZW9rIFlhbmcgIDxqczQ1LnlhbmdAc2Ftc3VuZy5jb20+CisK
KyAgICAgICAgW0VGTF1bV0syXSBSZW1vdmUgIndlYiIgd29yZCBmcm9tIGV3a193ZWJfZXJyb3Ig
QVBJcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9WFhY
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3Zl
ICJ3ZWIiIHdvcmQgZnJvbSBld2tfd2ViX2Vycm9yIEFQSXMuCisgICAgICAgICJ3ZWIiIHdvcmQg
d2FzIHJlZHVuZGFudCBiZWNhdXNlICJld2siIG1lYW5zICJFRkwgV2ViS2l0IiBhbmQgV0sgQVBJ
cyBmb3IgZXJyb3IgZG9lcyBub3QgaGF2ZSAid2ViIiB3b3JkLgorCisgICAgICAgICogUGxhdGZv
cm1FZmwuY21ha2U6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9kb3dubG9hZF9jbGllbnQuY3Bw
OgorICAgICAgICAoZGlkRmFpbCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nv
b2tpZV9tYW5hZ2VyLmNwcDoKKyAgICAgICAgKGdldEFjY2VwdFBvbGljeUNhbGxiYWNrKToKKyAg
ICAgICAgKGdldEhvc3RuYW1lc1dpdGhDb29raWVzQ2FsbGJhY2spOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZWZsL2V3a19jb29raWVfbWFuYWdlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZWZsL2V3a19kb3dubG9hZF9qb2JfcHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZWZsL2V3a19lcnJvci5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfd2ViX2Vycm9yLmNwcC4KKyAgICAgICAgKF9Fd2tfRXJyb3IpOgorICAg
ICAgICAoX0V3a19FcnJvcjo6X0V3a19FcnJvcik6CisgICAgICAgIChfRXdrX0Vycm9yOjp+X0V3
a19FcnJvcik6CisgICAgICAgIChld2tfZXJyb3JfZnJlZSk6CisgICAgICAgIChld2tfZXJyb3Jf
dHlwZV9nZXQpOgorICAgICAgICAoZXdrX2Vycm9yX3VybF9nZXQpOgorICAgICAgICAoZXdrX2Vy
cm9yX2NvZGVfZ2V0KToKKyAgICAgICAgKGV3a19lcnJvcl9kZXNjcmlwdGlvbl9nZXQpOgorICAg
ICAgICAoZXdrX2Vycm9yX2NhbmNlbGxhdGlvbl9nZXQpOgorICAgICAgICAoZXdrX2Vycm9yX25l
dyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Vycm9yLmg6IFJlbmFtZWQgZnJv
bSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfd2ViX2Vycm9yLmguCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Vycm9yX3ByaXZhdGUuaDogUmVuYW1lZCBmcm9t
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a193ZWJfZXJyb3JfcHJpdmF0ZS5o
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcDoKKyAgICAgICAgKGV3
a192aWV3X3Jlc291cmNlX2xvYWRfZmFpbGVkKToKKyAgICAgICAgKGV3a192aWV3X2Rvd25sb2Fk
X2pvYl9mYWlsZWQpOgorICAgICAgICAoZXdrX3ZpZXdfbG9hZF9lcnJvcik6CisgICAgICAgIChl
d2tfdmlld19sb2FkX3Byb3Zpc2lvbmFsX2ZhaWxlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3ZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19s
b2FkZXJfY2xpZW50LmNwcDoKKyAgICAgICAgKGRpZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJhbWUp
OgorICAgICAgICAoZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZvckZyYW1lKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmg6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9jbGllbnQuY3BwOgorICAg
ICAgICAoZGlkRmFpbExvYWRGb3JSZXNvdXJjZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9l
ZmwvdGVzdHMvdGVzdF9ld2syX2Nvb2tpZV9tYW5hZ2VyLmNwcDoKKyAgICAgICAgKGdldEFjY2Vw
dFBvbGljeUNhbGxiYWNrKToKKyAgICAgICAgKGdldEhvc3RuYW1lc1dpdGhDb29raWVzQ2FsbGJh
Y2spOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9kb3dubG9h
ZF9qb2IuY3BwOgorICAgICAgICAob25fZG93bmxvYWRfZmFpbGVkKToKKwogMjAxMi0wOS0yNyAg
QmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3ODIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCmlu
ZGV4IGQzOTMyYjYuLjBiOGViNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
RWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC00Nyw2
ICs0Nyw3IEBAIExJU1QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19jb250ZXh0X3JlcXVlc3RfbWFuYWdlcl9jbGllbnQuY3BwCiAgICAgVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX2Nvb2tpZV9tYW5hZ2VyLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3
a19kb3dubG9hZF9qb2IuY3BwCisgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Vycm9yLmNwcAog
ICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19mb3JtX3N1Ym1pc3Npb25fcmVxdWVzdC5jcHAKICAg
ICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfaW50ZW50LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a19pbnRlbnRfc2VydmljZS5jcHAKQEAgLTY0LDcgKzY1LDYgQEAgTElTVChBUFBFTkQgV2Vi
S2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcG9saWN5X2NsaWVu
dC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19yZXNvdXJjZV9sb2FkX2NsaWVu
dC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld191aV9jbGllbnQuY3BwCi0gICAg
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX3dlYl9lcnJvci5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfd2ViX3Jlc291cmNlLmNwcAogCiAgICAgVUlQcm9jZXNzL2NhaXJvL0JhY2tpbmdTdG9y
ZUNhaXJvLmNwcApAQCAtMjE3LDYgKzIxNyw3IEBAIFNFVCAoRVdlYktpdDJfSEVBREVSUwogICAg
ICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRl
eHQuaCIKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a19jb29raWVfbWFuYWdlci5oIgogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0v
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Rvd25sb2FkX2pvYi5oIgorICAgICIke0NNQUtFX0NVUlJF
TlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Vycm9yLmgiCiAgICAgIiR7Q01B
S0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfZm9ybV9zdWJtaXNz
aW9uX3JlcXVlc3QuaCIKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a19pbnRlbnQuaCIKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19pbnRlbnRfc2VydmljZS5oIgpAQCAtMjI5LDcgKzIzMCw2
IEBAIFNFVCAoRVdlYktpdDJfSEVBREVSUwogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJ
Un0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9yZXNwb25zZS5oIgogICAgICIke0NNQUtFX0NV
UlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9zY2hlbWVfcmVxdWVz
dC5oIgogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX3ZpZXcuaCIKLSAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a193ZWJfZXJyb3IuaCIKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a193ZWJfcmVzb3VyY2UuaCIKICkKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmgKaW5kZXggMTNlZmFiMS4uNmQxNGQ4ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oCkBAIC0zMyw2
ICszMyw3IEBACiAjaW5jbHVkZSAiZXdrX2NvbnRleHQuaCIKICNpbmNsdWRlICJld2tfY29va2ll
X21hbmFnZXIuaCIKICNpbmNsdWRlICJld2tfZG93bmxvYWRfam9iLmgiCisjaW5jbHVkZSAiZXdr
X2Vycm9yLmgiCiAjaW5jbHVkZSAiZXdrX2Zvcm1fc3VibWlzc2lvbl9yZXF1ZXN0LmgiCiAjaW5j
bHVkZSAiZXdrX2ludGVudC5oIgogI2luY2x1ZGUgImV3a19pbnRlbnRfc2VydmljZS5oIgpAQCAt
NDUsNyArNDYsNiBAQAogI2luY2x1ZGUgImV3a191cmxfcmVzcG9uc2UuaCIKICNpbmNsdWRlICJl
d2tfdXJsX3NjaGVtZV9yZXF1ZXN0LmgiCiAjaW5jbHVkZSAiZXdrX3ZpZXcuaCIKLSNpbmNsdWRl
ICJld2tfd2ViX2Vycm9yLmgiCiAjaW5jbHVkZSAiZXdrX3dlYl9yZXNvdXJjZS5oIgogCiAjZW5k
aWYgLy8gRVdlYktpdDJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX2NvbnRleHRfZG93bmxvYWRfY2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X2Rvd25sb2FkX2NsaWVudC5jcHAKaW5kZXggOWQ5
MjRiZi4uNTY5MDkwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX2NvbnRleHRfZG93bmxvYWRfY2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9kb3dubG9hZF9jbGllbnQuY3BwCkBAIC0zMywx
MSArMzMsMTEgQEAKICNpbmNsdWRlICJld2tfY29udGV4dF9wcml2YXRlLmgiCiAjaW5jbHVkZSAi
ZXdrX2Rvd25sb2FkX2pvYi5oIgogI2luY2x1ZGUgImV3a19kb3dubG9hZF9qb2JfcHJpdmF0ZS5o
IgorI2luY2x1ZGUgImV3a19lcnJvci5oIgorI2luY2x1ZGUgImV3a19lcnJvcl9wcml2YXRlLmgi
CiAjaW5jbHVkZSAiZXdrX3VybF9yZXNwb25zZS5oIgogI2luY2x1ZGUgImV3a191cmxfcmVzcG9u
c2VfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a192aWV3X3ByaXZhdGUuaCIKLSNpbmNsdWRlICJl
d2tfd2ViX2Vycm9yLmgiCi0jaW5jbHVkZSAiZXdrX3dlYl9lcnJvcl9wcml2YXRlLmgiCiAjaW5j
bHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCkBAIC05NSwx
MCArOTUsMTAgQEAgc3RhdGljIHZvaWQgZGlkRmFpbChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRS
ZWYgd2tEb3dubG9hZCwgV0tFcnJvclJlZiBlcnJvciwgY28KICAgICBFd2tfRG93bmxvYWRfSm9i
KiBkb3dubG9hZCA9IGV3a19jb250ZXh0X2Rvd25sb2FkX2pvYl9nZXQodG9Fd2tDb250ZXh0KGNs
aWVudEluZm8pLCBkb3dubG9hZElkKTsKICAgICBBU1NFUlQoZG93bmxvYWQpOwogCi0gICAgRXdr
X1dlYl9FcnJvciogZXdrRXJyb3IgPSBld2tfd2ViX2Vycm9yX25ldyhlcnJvcik7CisgICAgRXdr
X0Vycm9yKiBld2tFcnJvciA9IGV3a19lcnJvcl9uZXcoZXJyb3IpOwogICAgIGV3a19kb3dubG9h
ZF9qb2Jfc3RhdGVfc2V0KGRvd25sb2FkLCBFV0tfRE9XTkxPQURfSk9CX1NUQVRFX0ZBSUxFRCk7
CiAgICAgZXdrX3ZpZXdfZG93bmxvYWRfam9iX2ZhaWxlZChld2tfZG93bmxvYWRfam9iX3ZpZXdf
Z2V0KGRvd25sb2FkKSwgZG93bmxvYWQsIGV3a0Vycm9yKTsKLSAgICBld2tfd2ViX2Vycm9yX2Zy
ZWUoZXdrRXJyb3IpOworICAgIGV3a19lcnJvcl9mcmVlKGV3a0Vycm9yKTsKICAgICBld2tfY29u
dGV4dF9kb3dubG9hZF9qb2JfcmVtb3ZlKHRvRXdrQ29udGV4dChjbGllbnRJbmZvKSwgZG93bmxv
YWRJZCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a19jb29raWVfbWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfY29va2llX21hbmFnZXIuY3BwCmluZGV4IDQ1ZGQ3NWUuLmE1MjA0NzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb29raWVfbWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nvb2tpZV9tYW5h
Z2VyLmNwcApAQCAtMzMsOCArMzMsOCBAQAogI2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCiAjaW5j
bHVkZSAiV0tTdHJpbmcuaCIKICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyUHJveHkuaCIKKyNp
bmNsdWRlICJld2tfZXJyb3JfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19wcml2YXRlLmgiCi0j
aW5jbHVkZSAiZXdrX3dlYl9lcnJvcl9wcml2YXRlLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC0xNDIsMTIgKzE0
MiwxMiBAQCBzdHJ1Y3QgR2V0X1BvbGljeV9Bc3luY19EYXRhIHsKIHN0YXRpYyB2b2lkIGdldEFj
Y2VwdFBvbGljeUNhbGxiYWNrKFdLSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3ksIFdLRXJy
b3JSZWYgd2tFcnJvciwgdm9pZCogZGF0YSkKIHsKICAgICBHZXRfUG9saWN5X0FzeW5jX0RhdGEq
IGNhbGxiYWNrRGF0YSA9IHN0YXRpY19jYXN0PEdldF9Qb2xpY3lfQXN5bmNfRGF0YSo+KGRhdGEp
OwotICAgIEV3a19XZWJfRXJyb3IqIGV3a0Vycm9yID0gd2tFcnJvciA/IGV3a193ZWJfZXJyb3Jf
bmV3KHdrRXJyb3IpIDogMDsKKyAgICBFd2tfRXJyb3IqIGV3a0Vycm9yID0gd2tFcnJvciA/IGV3
a19lcnJvcl9uZXcod2tFcnJvcikgOiAwOwogCiAgICAgY2FsbGJhY2tEYXRhLT5jYWxsYmFjayhz
dGF0aWNfY2FzdDxFd2tfQ29va2llX0FjY2VwdF9Qb2xpY3k+KHBvbGljeSksIGV3a0Vycm9yLCBj
YWxsYmFja0RhdGEtPnVzZXJEYXRhKTsKIAogICAgIGlmIChld2tFcnJvcikKLSAgICAgICAgZXdr
X3dlYl9lcnJvcl9mcmVlKGV3a0Vycm9yKTsKKyAgICAgICAgZXdrX2Vycm9yX2ZyZWUoZXdrRXJy
b3IpOwogICAgIGRlbGV0ZSBjYWxsYmFja0RhdGE7CiB9CiAKQEAgLTE3Miw3ICsxNzIsNyBAQCBz
dGF0aWMgdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llc0NhbGxiYWNrKFdLQXJyYXlSZWYgd2tI
b3N0bmFtZXMsIFdLRXJyb3JSZWYgdwogewogICAgIEVpbmFfTGlzdCogaG9zdG5hbWVzID0gMDsK
ICAgICBHZXRfSG9zdG5hbWVzX0FzeW5jX0RhdGEqIGNhbGxiYWNrRGF0YSA9IHN0YXRpY19jYXN0
PEdldF9Ib3N0bmFtZXNfQXN5bmNfRGF0YSo+KGNvbnRleHQpOwotICAgIEV3a19XZWJfRXJyb3Iq
IGV3a0Vycm9yID0gd2tFcnJvciA/IGV3a193ZWJfZXJyb3JfbmV3KHdrRXJyb3IpIDogMDsKKyAg
ICBFd2tfRXJyb3IqIGV3a0Vycm9yID0gd2tFcnJvciA/IGV3a19lcnJvcl9uZXcod2tFcnJvcikg
OiAwOwogCiAgICAgY29uc3Qgc2l6ZV90IGhvc3RuYW1lQ291bnQgPSBXS0FycmF5R2V0U2l6ZSh3
a0hvc3RuYW1lcyk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBob3N0bmFtZUNvdW50OyAr
K2kpIHsKQEAgLTE4OSw3ICsxODksNyBAQCBzdGF0aWMgdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29v
a2llc0NhbGxiYWNrKFdLQXJyYXlSZWYgd2tIb3N0bmFtZXMsIFdLRXJyb3JSZWYgdwogICAgIEVJ
TkFfTElTVF9GUkVFKGhvc3RuYW1lcywgaXRlbSkKICAgICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVs
KHN0YXRpY19jYXN0PEVpbmFfU3RyaW5nc2hhcmUqPihpdGVtKSk7CiAgICAgaWYgKGV3a0Vycm9y
KQotICAgICAgICBld2tfd2ViX2Vycm9yX2ZyZWUoZXdrRXJyb3IpOworICAgICAgICBld2tfZXJy
b3JfZnJlZShld2tFcnJvcik7CiAgICAgZGVsZXRlIGNhbGxiYWNrRGF0YTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nvb2tpZV9tYW5hZ2Vy
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29va2llX21hbmFnZXIu
aAppbmRleCBlMzc3ODA4Li5jMzFiOTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfY29va2llX21hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9ld2tfY29va2llX21hbmFnZXIuaApAQCAtMzEsNyArMzEsNyBAQAog
I2lmbmRlZiBld2tfY29va2llX21hbmFnZXJfaAogI2RlZmluZSBld2tfY29va2llX21hbmFnZXJf
aAogCi0jaW5jbHVkZSAiZXdrX3dlYl9lcnJvci5oIgorI2luY2x1ZGUgImV3a19lcnJvci5oIgog
I2luY2x1ZGUgPEVpbmEuaD4KIAogI2lmZGVmIF9fY3BsdXNwbHVzCkBAIC03Nyw3ICs3Nyw3IEBA
IHR5cGVkZWYgZW51bSBfRXdrX0Nvb2tpZV9QZXJzaXN0ZW50X1N0b3JhZ2UgRXdrX0Nvb2tpZV9Q
ZXJzaXN0ZW50X1N0b3JhZ2U7CiAgKiBAdHlwZWRlZiBFd2tfQ29va2llX01hbmFnZXJfQXN5bmNf
UG9saWN5X0dldF9DYiBFd2tfQ29va2llX01hbmFnZXJfQXN5bmNfUG9saWN5X0dldF9DYgogICog
QGJyaWVmIENhbGxiYWNrIHR5cGUgZm9yIHVzZSB3aXRoIGV3a19jb29raWVfbWFuYWdlcl9hc3lu
Y19hY2NlcHRfcG9saWN5X2dldAogICovCi10eXBlZGVmIHZvaWQgKCpFd2tfQ29va2llX01hbmFn
ZXJfQXN5bmNfUG9saWN5X0dldF9DYikoRXdrX0Nvb2tpZV9BY2NlcHRfUG9saWN5IHBvbGljeSwg
RXdrX1dlYl9FcnJvciAqZXJyb3IsIHZvaWQgKmV2ZW50X2luZm8pOwordHlwZWRlZiB2b2lkICgq
RXdrX0Nvb2tpZV9NYW5hZ2VyX0FzeW5jX1BvbGljeV9HZXRfQ2IpKEV3a19Db29raWVfQWNjZXB0
X1BvbGljeSBwb2xpY3ksIEV3a19FcnJvciAqZXJyb3IsIHZvaWQgKmV2ZW50X2luZm8pOwogCiAv
KioKICAqIEB0eXBlZGVmIEV3a19Db29raWVfTWFuYWdlcl9Bc3luY19Ib3N0bmFtZXNfR2V0X0Ni
IEV3a19Db29raWVfTWFuYWdlcl9Bc3luY19Ib3N0bmFtZXNfR2V0X0NiCkBAIC04Nyw3ICs4Nyw3
IEBAIHR5cGVkZWYgdm9pZCAoKkV3a19Db29raWVfTWFuYWdlcl9Bc3luY19Qb2xpY3lfR2V0X0Ni
KShFd2tfQ29va2llX0FjY2VwdF9Qb2xpY3kKICAqIHNhdmUgeW91cnNlbGYgc29tZSBjcHUgY3lj
bGVzIGFuZCB1c2UgZWluYV9zdHJpbmdzaGFyZV9yZWYoKSBpbnN0ZWFkIG9mIGVpbmFfc3RyaW5n
c2hhcmVfYWRkKCkKICAqIG9yIHN0cmR1cCgpLgogICovCi10eXBlZGVmIHZvaWQgKCpFd2tfQ29v
a2llX01hbmFnZXJfQXN5bmNfSG9zdG5hbWVzX0dldF9DYikoRWluYV9MaXN0KiBob3N0bmFtZXMs
IEV3a19XZWJfRXJyb3IgKmVycm9yLCB2b2lkICpldmVudF9pbmZvKTsKK3R5cGVkZWYgdm9pZCAo
KkV3a19Db29raWVfTWFuYWdlcl9Bc3luY19Ib3N0bmFtZXNfR2V0X0NiKShFaW5hX0xpc3QgKmhv
c3RuYW1lcywgRXdrX0Vycm9yICplcnJvciwgdm9pZCAqZXZlbnRfaW5mbyk7CiAKIC8qKgogICog
QHR5cGVkZWYgRXdrX0Nvb2tpZV9NYW5hZ2VyX0NoYW5nZXNfV2F0Y2hfQ2IgRXdrX0Nvb2tpZV9N
YW5hZ2VyX0NoYW5nZXNfV2F0Y2hfQ2IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a19kb3dubG9hZF9qb2JfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Rvd25sb2FkX2pvYl9wcml2YXRlLmgKaW5kZXggZDA0MzQ5
NC4uODFiNTQ0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX2Rvd25sb2FkX2pvYl9wcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX2Rvd25sb2FkX2pvYl9wcml2YXRlLmgKQEAgLTMxLDcgKzMxLDcgQEAKIAog
dHlwZWRlZiBzdHJ1Y3QgX0V3a19Eb3dubG9hZF9Kb2IgRXdrX0Rvd25sb2FkX0pvYjsKIHR5cGVk
ZWYgc3RydWN0IF9Fd2tfVXJsX1Jlc3BvbnNlIEV3a19VcmxfUmVzcG9uc2U7Ci10eXBlZGVmIHN0
cnVjdCBfRXdrX1dlYl9FcnJvciBFd2tfV2ViX0Vycm9yOwordHlwZWRlZiBzdHJ1Y3QgX0V3a19F
cnJvciBFd2tfRXJyb3I7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgRG93bmxvYWRQcm94
eTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19lcnJv
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfZXJyb3IuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY1NmJmOWMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfZXJyb3IuY3BwCkBAIC0w
LDAgKzEsMTMwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9u
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiZXdrX2Vycm9yLmgiCisKKyNpbmNsdWRlICJFcnJvcnNFZmwuaCIKKyNpbmNsdWRl
ICJXS0VpbmFTaGFyZWRTdHJpbmcuaCIKKyNpbmNsdWRlICJXS1N0cmluZy5oIgorI2luY2x1ZGUg
IldLVVJMLmgiCisjaW5jbHVkZSAiZXdrX2Vycm9yX3ByaXZhdGUuaCIKKyNpbmNsdWRlIDxXS0FQ
SUNhc3QuaD4KKyNpbmNsdWRlIDxXS0Vycm9yLmg+CisjaW5jbHVkZSA8V0tSZXRhaW5QdHIuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworc3RydWN0IF9Fd2tfRXJyb3IgeworICAgIFdL
UmV0YWluUHRyPFdLRXJyb3JSZWY+IHdrRXJyb3I7CisKKyAgICBXS0VpbmFTaGFyZWRTdHJpbmcg
dXJsOworICAgIFdLRWluYVNoYXJlZFN0cmluZyBkZXNjcmlwdGlvbjsKKworICAgIF9Fd2tfRXJy
b3IoV0tFcnJvclJlZiBlcnJvclJlZikKKyAgICAgICAgOiB3a0Vycm9yKGVycm9yUmVmKQorICAg
ICAgICAsIHVybChBZG9wdFdLLCBXS0Vycm9yQ29weUZhaWxpbmdVUkwoZXJyb3JSZWYpKQorICAg
ICAgICAsIGRlc2NyaXB0aW9uKEFkb3B0V0ssIFdLRXJyb3JDb3B5TG9jYWxpemVkRGVzY3JpcHRp
b24oZXJyb3JSZWYpKQorICAgIHsgfQorCisgICAgfl9Fd2tfRXJyb3IoKQorICAgIHsKKyAgICB9
Cit9OworCisjZGVmaW5lIEVXS19FUlJPUl9XS19HRVRfT1JfUkVUVVJOKGVycm9yLCB3a0Vycm9y
XywgLi4uKSAgICBcCisgICAgaWYgKCEoZXJyb3IpKSB7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgRUlOQV9MT0dfQ1JJVCgiZXJyb3IgaXMgTlVM
TC4iKTsgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gX19WQV9BUkdTX187
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICgh
KGVycm9yKS0+d2tFcnJvcikgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgRUlOQV9MT0dfQ1JJVCgiZXJyb3ItPndrRXJyb3IgaXMgTlVMTC4iKTsgICAgICAgICAg
ICBcCisgICAgICAgIHJldHVybiBfX1ZBX0FSR1NfXzsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgV0tFcnJvclJlZiB3a0Vycm9yXyA9IChlcnJvcikt
PndrRXJyb3IuZ2V0KCkKKwordm9pZCBld2tfZXJyb3JfZnJlZShFd2tfRXJyb3IqIGVycm9yKQor
eworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGVycm9yKTsKKworICAgIGRlbGV0ZSBl
cnJvcjsKK30KKworRXdrX0Vycm9yX1R5cGUgZXdrX2Vycm9yX3R5cGVfZ2V0KGNvbnN0IEV3a19F
cnJvciogZXJyb3IpCit7CisgICAgRVdLX0VSUk9SX1dLX0dFVF9PUl9SRVRVUk4oZXJyb3IsIHdr
RXJyb3IsIEVXS19FUlJPUl9UWVBFX05PTkUpOworCisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdS
ZWY+IHdrRG9tYWluKEFkb3B0V0ssIFdLRXJyb3JDb3B5RG9tYWluKHdrRXJyb3IpKTsKKyAgICBX
VEY6OlN0cmluZyBlcnJvckRvbWFpbiA9IHRvV1RGU3RyaW5nKHdrRG9tYWluLmdldCgpKTsKKwor
ICAgIGlmIChlcnJvckRvbWFpbiA9PSBlcnJvckRvbWFpbk5ldHdvcmspCisgICAgICAgIHJldHVy
biBFV0tfRVJST1JfVFlQRV9ORVRXT1JLOworICAgIGlmIChlcnJvckRvbWFpbiA9PSBlcnJvckRv
bWFpblBvbGljeSkKKyAgICAgICAgcmV0dXJuIEVXS19FUlJPUl9UWVBFX1BPTElDWTsKKyAgICBp
ZiAoZXJyb3JEb21haW4gPT0gZXJyb3JEb21haW5QbHVnaW4pCisgICAgICAgIHJldHVybiBFV0tf
RVJST1JfVFlQRV9QTFVHSU47CisgICAgaWYgKGVycm9yRG9tYWluID09IGVycm9yRG9tYWluRG93
bmxvYWQpCisgICAgICAgIHJldHVybiBFV0tfRVJST1JfVFlQRV9ET1dOTE9BRDsKKyAgICBpZiAo
ZXJyb3JEb21haW4gPT0gZXJyb3JEb21haW5QcmludCkKKyAgICAgICAgcmV0dXJuIEVXS19FUlJP
Ul9UWVBFX1BSSU5UOworICAgIHJldHVybiBFV0tfRVJST1JfVFlQRV9JTlRFUk5BTDsKK30KKwor
Y29uc3QgY2hhciogZXdrX2Vycm9yX3VybF9nZXQoY29uc3QgRXdrX0Vycm9yKiBlcnJvcikKK3sK
KyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoZXJyb3IsIDApOworCisgICAgcmV0
dXJuIGVycm9yLT51cmw7Cit9CisKK2ludCBld2tfZXJyb3JfY29kZV9nZXQoY29uc3QgRXdrX0Vy
cm9yKiBlcnJvcikKK3sKKyAgICBFV0tfRVJST1JfV0tfR0VUX09SX1JFVFVSTihlcnJvciwgd2tF
cnJvciwgMCk7CisKKyAgICByZXR1cm4gV0tFcnJvckdldEVycm9yQ29kZSh3a0Vycm9yKTsKK30K
KworY29uc3QgY2hhciogZXdrX2Vycm9yX2Rlc2NyaXB0aW9uX2dldChjb25zdCBFd2tfRXJyb3Iq
IGVycm9yKQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChlcnJvciwgMCk7
CisKKyAgICByZXR1cm4gZXJyb3ItPmRlc2NyaXB0aW9uOworfQorCitFaW5hX0Jvb2wgZXdrX2Vy
cm9yX2NhbmNlbGxhdGlvbl9nZXQoY29uc3QgRXdrX0Vycm9yKiBlcnJvcikKK3sKKyAgICBFV0tf
RVJST1JfV0tfR0VUX09SX1JFVFVSTihlcnJvciwgd2tFcnJvciwgZmFsc2UpOworCisgICAgcmV0
dXJuIHRvSW1wbCh3a0Vycm9yKS0+cGxhdGZvcm1FcnJvcigpLmlzQ2FuY2VsbGF0aW9uKCk7Cit9
CisKK0V3a19FcnJvciogZXdrX2Vycm9yX25ldyhXS0Vycm9yUmVmIGVycm9yKQoreworICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChlcnJvciwgMCk7CisKKyAgICByZXR1cm4gbmV3
IEV3a19FcnJvcihlcnJvcik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfZXJyb3IuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a19lcnJvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiNzAwOTYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
ZXJyb3IuaApAQCAtMCwwICsxLDEyNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRl
bCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLyoqCisgKiBA
ZmlsZSAgICBld2tfZXJyb3IuaAorICogQGJyaWVmICAgRGVzY3JpYmVzIHRoZSBXZWIgRXJyb3Ig
QVBJLgorICovCisKKyNpZm5kZWYgZXdrX2Vycm9yX2gKKyNkZWZpbmUgZXdrX2Vycm9yX2gKKwor
I2luY2x1ZGUgPEVpbmEuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNl
bmRpZgorCisvKiogQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgQGEgRXdrX0Vycm9yLiAqLwordHlw
ZWRlZiBzdHJ1Y3QgX0V3a19FcnJvciBFd2tfRXJyb3I7CisKKy8vLyBDcmVhdGVzIGEgdHlwZSBu
YW1lIGZvciBFd2tfRXJyb3JfVHlwZS4KK3R5cGVkZWYgZW51bSB7CisgICAgRVdLX0VSUk9SX1RZ
UEVfTk9ORSwKKyAgICBFV0tfRVJST1JfVFlQRV9JTlRFUk5BTCwKKyAgICBFV0tfRVJST1JfVFlQ
RV9ORVRXT1JLLAorICAgIEVXS19FUlJPUl9UWVBFX1BPTElDWSwKKyAgICBFV0tfRVJST1JfVFlQ
RV9QTFVHSU4sCisgICAgRVdLX0VSUk9SX1RZUEVfRE9XTkxPQUQsCisgICAgRVdLX0VSUk9SX1RZ
UEVfUFJJTlQKK30gRXdrX0Vycm9yX1R5cGU7CisKKy8qKgorICogRnJlZXMgdGhlIGdpdmVuIG9i
amVjdC4KKyAqCisgKiBAcGFyYW0gZXJyb3IgdGhlIGVycm9yIG9iamVjdCB0byBmcmVlCisgKi8K
K0VBUEkgdm9pZCBld2tfZXJyb3JfZnJlZShFd2tfRXJyb3IgKmVycm9yKTsKKworLyoqCisgKiBR
dWVyeSB0eXBlIGZvciB0aGlzIGVycm9yLgorICoKKyAqIEBwYXJhbSBlcnJvciBlcnJvciBvYmpl
Y3QgdG8gcXVlcnkuCisgKgorICogQHJldHVybiB0aGUgZXJyb3IgdHlwZSwgdGhhdCBtYXkgYmUg
QGMgTlVMTC4gVGhpcyBwb2ludGVyIGlzCisgKiAgICAgICAgIGd1YXJhbnRlZWQgdG8gYmUgZWlu
YV9zdHJpbmdzaGFyZSwgc28gd2hlbmV2ZXIgcG9zc2libGUKKyAqICAgICAgICAgc2F2ZSB5b3Vy
c2VsZiBzb21lIGNwdSBjeWNsZXMgYW5kIHVzZQorICogICAgICAgICBlaW5hX3N0cmluZ3NoYXJl
X3JlZigpIGluc3RlYWQgb2YgZWluYV9zdHJpbmdzaGFyZV9hZGQoKSBvcgorICogICAgICAgICBz
dHJkdXAoKS4KKyAqLworRUFQSSBFd2tfRXJyb3JfVHlwZSBld2tfZXJyb3JfdHlwZV9nZXQoY29u
c3QgRXdrX0Vycm9yICplcnJvcik7CisKKy8qKgorICogUXVlcnkgZmFpbGluZyBVUkwgZm9yIHRo
aXMgZXJyb3IuCisgKgorICogVVJMIHRoYXQgZmFpbGVkIGxvYWRpbmcuCisgKgorICogQHBhcmFt
IGVycm9yIGVycm9yIG9iamVjdCB0byBxdWVyeS4KKyAqCisgKiBAcmV0dXJuIHRoZSBVUkwgcG9p
bnRlciwgdGhhdCBtYXkgYmUgQGMgTlVMTC4gVGhpcyBwb2ludGVyIGlzCisgKiAgICAgICAgIGd1
YXJhbnRlZWQgdG8gYmUgZWluYV9zdHJpbmdzaGFyZSwgc28gd2hlbmV2ZXIgcG9zc2libGUKKyAq
ICAgICAgICAgc2F2ZSB5b3Vyc2VsZiBzb21lIGNwdSBjeWNsZXMgYW5kIHVzZQorICogICAgICAg
ICBlaW5hX3N0cmluZ3NoYXJlX3JlZigpIGluc3RlYWQgb2YgZWluYV9zdHJpbmdzaGFyZV9hZGQo
KSBvcgorICogICAgICAgICBzdHJkdXAoKS4KKyAqLworRUFQSSBjb25zdCBjaGFyICpld2tfZXJy
b3JfdXJsX2dldChjb25zdCBFd2tfRXJyb3IgKmVycm9yKTsKKworLyoqCisgKiBRdWVyeSBIVFRQ
IGVycm9yIGNvZGUuCisgKgorICogQHBhcmFtIGVycm9yIGVycm9yIG9iamVjdCB0byBxdWVyeS4K
KyAqCisgKiBAcmV0dXJuIHRoZSBIVFRQIGVycm9yIGNvZGUuCisgKi8KK0VBUEkgaW50IGV3a19l
cnJvcl9jb2RlX2dldChjb25zdCBFd2tfRXJyb3IgKmVycm9yKTsKKworLyoqCisgKiBRdWVyeSBk
ZXNjcmlwdGlvbiBmb3IgdGhpcyBlcnJvci4KKyAqCisgKiBAcGFyYW0gZXJyb3IgZXJyb3Igb2Jq
ZWN0IHRvIHF1ZXJ5LgorICoKKyAqIEByZXR1cm4gdGhlIGRlc2NyaXB0aW9uIHBvaW50ZXIsIHRo
YXQgbWF5IGJlIEBjIE5VTEwuIFRoaXMgcG9pbnRlciBpcworICogICAgICAgICBndWFyYW50ZWVk
IHRvIGJlIGVpbmFfc3RyaW5nc2hhcmUsIHNvIHdoZW5ldmVyIHBvc3NpYmxlCisgKiAgICAgICAg
IHNhdmUgeW91cnNlbGYgc29tZSBjcHUgY3ljbGVzIGFuZCB1c2UKKyAqICAgICAgICAgZWluYV9z
dHJpbmdzaGFyZV9yZWYoKSBpbnN0ZWFkIG9mIGVpbmFfc3RyaW5nc2hhcmVfYWRkKCkgb3IKKyAq
ICAgICAgICAgc3RyZHVwKCkuCisgKi8KK0VBUEkgY29uc3QgY2hhciAqZXdrX2Vycm9yX2Rlc2Ny
aXB0aW9uX2dldChjb25zdCBFd2tfRXJyb3IgKmVycm9yKTsKKworLyoqCisgKiBRdWVyeSBpZiBl
cnJvciBzaG91bGQgYmUgdHJlYXRlZCBhcyBhIGNhbmNlbGxhdGlvbi4KKyAqCisgKiBAcGFyYW0g
ZXJyb3IgZXJyb3Igb2JqZWN0IHRvIHF1ZXJ5LgorICoKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVF
IGlmIHRoaXMgZXJyb3Igc2hvdWxkIGJlIHRyZWF0ZWQgYXMgYSBjYW5jZWxsYXRpb24sIEBjIEVJ
TkFfRkFMU0Ugb3RoZXJ3aXNlCisgKi8KK0VBUEkgRWluYV9Cb29sIGV3a19lcnJvcl9jYW5jZWxs
YXRpb25fZ2V0KGNvbnN0IEV3a19FcnJvciAqZXJyb3IpOworCisjaWZkZWYgX19jcGx1c3BsdXMK
K30KKyNlbmRpZgorCisjZW5kaWYgLy8gZXdrX2Vycm9yX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19lcnJvcl9wcml2YXRlLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfZXJyb3JfcHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzMDQxZjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfZXJyb3JfcHJpdmF0ZS5oCkBAIC0wLDAgKzEs
MzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgZXdrX2Vycm9yX3ByaXZhdGVfaAor
I2RlZmluZSBld2tfZXJyb3JfcHJpdmF0ZV9oCisKKyNpbmNsdWRlIDxXS0Vycm9yLmg+CisKK3R5
cGVkZWYgc3RydWN0IF9Fd2tfRXJyb3IgRXdrX0Vycm9yOworCitFd2tfRXJyb3IqIGV3a19lcnJv
cl9uZXcoV0tFcnJvclJlZiBlcnJvcik7CisKKyNlbmRpZiAvLyBld2tfZXJyb3JfcHJpdmF0ZV9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKaW5kZXgg
NTE3NWY3OS4uYTA4MDk0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a192aWV3LmNwcApAQCAtOTg0LDcgKzk4NCw3IEBAIHZvaWQgZXdrX3ZpZXdfcmVzb3VyY2Vf
bG9hZF9yZXNwb25zZShFdmFzX09iamVjdCogZXdrVmlldywgdWludDY0X3QgcmVzb3VyY2VJZGVu
CiAgKgogICogRW1pdHMgc2lnbmFsOiAicmVzb3VyY2UscmVxdWVzdCxmaW5pc2hlZCIgd2l0aCBw
b2ludGVyIHRvIHRoZSByZXNvdXJjZSBsb2FkIGVycm9yLgogICovCi12b2lkIGV3a192aWV3X3Jl
c291cmNlX2xvYWRfZmFpbGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCB1aW50NjRfdCByZXNvdXJj
ZUlkZW50aWZpZXIsIEV3a19XZWJfRXJyb3IqIGVycm9yKQordm9pZCBld2tfdmlld19yZXNvdXJj
ZV9sb2FkX2ZhaWxlZChFdmFzX09iamVjdCogZXdrVmlldywgdWludDY0X3QgcmVzb3VyY2VJZGVu
dGlmaWVyLCBFd2tfRXJyb3IqIGVycm9yKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRV
Uk4oZXdrVmlldywgc21hcnREYXRhKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4o
c21hcnREYXRhLCBwcml2KTsKQEAgLTEyODMsNyArMTI4Myw3IEBAIHZvaWQgZXdrX3ZpZXdfZG93
bmxvYWRfam9iX3JlcXVlc3RlZChFdmFzX09iamVjdCogZXdrVmlldywgRXdrX0Rvd25sb2FkX0pv
YiogZG93CiAgKgogICogRW1pdHMgc2lnbmFsOiAiZG93bmxvYWQsZmFpbGVkIiB3aXRoIHBvaW50
ZXIgdG8gYSBFd2tfRG93bmxvYWRfSm9iX0Vycm9yLgogICovCi12b2lkIGV3a192aWV3X2Rvd25s
b2FkX2pvYl9mYWlsZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19Eb3dubG9hZF9Kb2IqIGRv
d25sb2FkLCBFd2tfV2ViX0Vycm9yKiBlcnJvcikKK3ZvaWQgZXdrX3ZpZXdfZG93bmxvYWRfam9i
X2ZhaWxlZChFdmFzX09iamVjdCogZXdrVmlldywgRXdrX0Rvd25sb2FkX0pvYiogZG93bmxvYWQs
IEV3a19FcnJvciogZXJyb3IpCiB7CiAgICAgRXdrX0Rvd25sb2FkX0pvYl9FcnJvciBkb3dubG9h
ZEVycm9yID0geyBkb3dubG9hZCwgZXJyb3IgfTsKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxs
YmFja19jYWxsKGV3a1ZpZXcsICJkb3dubG9hZCxmYWlsZWQiLCAmZG93bmxvYWRFcnJvcik7CkBA
IC0xMzk0LDExICsxMzk0LDExIEBAIHZvaWQgZXdrX3ZpZXdfZm9ybV9zdWJtaXNzaW9uX3JlcXVl
c3RfbmV3KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfRm9ybV9TdWJtaXNzCiAgKiBAaW50ZXJu
YWwKICAqIFJlcG9ydHMgbG9hZCBmYWlsZWQgd2l0aCBlcnJvciBpbmZvcm1hdGlvbi4KICAqCi0g
KiBFbWl0cyBzaWduYWw6ICJsb2FkLGVycm9yIiB3aXRoIHBvaW50ZXIgdG8gRXdrX1dlYl9FcnJv
ci4KKyAqIEVtaXRzIHNpZ25hbDogImxvYWQsZXJyb3IiIHdpdGggcG9pbnRlciB0byBFd2tfRXJy
b3IuCiAgKi8KLXZvaWQgZXdrX3ZpZXdfbG9hZF9lcnJvcihFdmFzX09iamVjdCogZXdrVmlldywg
Y29uc3QgRXdrX1dlYl9FcnJvciogZXJyb3IpCit2b2lkIGV3a192aWV3X2xvYWRfZXJyb3IoRXZh
c19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IEV3a19FcnJvciogZXJyb3IpCiB7Ci0gICAgZXZhc19v
YmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tWaWV3LCAibG9hZCxlcnJvciIsIGNvbnN0X2Nh
c3Q8RXdrX1dlYl9FcnJvcio+KGVycm9yKSk7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJh
Y2tfY2FsbChld2tWaWV3LCAibG9hZCxlcnJvciIsIGNvbnN0X2Nhc3Q8RXdrX0Vycm9yKj4oZXJy
b3IpKTsKIH0KIAogLyoqCkBAIC0xNDE3LDExICsxNDE3LDExIEBAIHZvaWQgZXdrX3ZpZXdfbG9h
ZF9maW5pc2hlZChFdmFzX09iamVjdCogZXdrVmlldykKICAqIEBpbnRlcm5hbAogICogUmVwb3J0
cyB2aWV3IHByb3Zpc2lvbmFsIGxvYWQgZmFpbGVkIHdpdGggZXJyb3IgaW5mb3JtYXRpb24uCiAg
KgotICogRW1pdHMgc2lnbmFsOiAibG9hZCxwcm92aXNpb25hbCxmYWlsZWQiIHdpdGggcG9pbnRl
ciB0byBFd2tfV2ViX0Vycm9yLgorICogRW1pdHMgc2lnbmFsOiAibG9hZCxwcm92aXNpb25hbCxm
YWlsZWQiIHdpdGggcG9pbnRlciB0byBFd2tfRXJyb3IuCiAgKi8KLXZvaWQgZXdrX3ZpZXdfbG9h
ZF9wcm92aXNpb25hbF9mYWlsZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IEV3a19XZWJf
RXJyb3IqIGVycm9yKQordm9pZCBld2tfdmlld19sb2FkX3Byb3Zpc2lvbmFsX2ZhaWxlZChFdmFz
X09iamVjdCogZXdrVmlldywgY29uc3QgRXdrX0Vycm9yKiBlcnJvcikKIHsKLSAgICBldmFzX29i
amVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a1ZpZXcsICJsb2FkLHByb3Zpc2lvbmFsLGZhaWxl
ZCIsIGNvbnN0X2Nhc3Q8RXdrX1dlYl9FcnJvcio+KGVycm9yKSk7CisgICAgZXZhc19vYmplY3Rf
c21hcnRfY2FsbGJhY2tfY2FsbChld2tWaWV3LCAibG9hZCxwcm92aXNpb25hbCxmYWlsZWQiLCBj
b25zdF9jYXN0PEV3a19FcnJvcio+KGVycm9yKSk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKaW5kZXggY2NmYTYzNi4uZDQyMWQzMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCkBAIC00NCwxMCAr
NDQsMTAgQEAKICAqICAgZXdrX2Zvcm1fc3VibWlzc2lvbl9yZXF1ZXN0X3N1Ym1pdCgpIHdpbGwg
YmUgY2FsbGVkIGF1dG9tYXRpY2FsbHkuCiAgKiAtICJpbnRlbnQscmVxdWVzdCxuZXciLCBFd2tf
SW50ZW50KjogcmVwb3J0cyBuZXcgV2ViIGludGVudCByZXF1ZXN0LgogICogLSAiaW50ZW50LHNl
cnZpY2UscmVnaXN0ZXIiLCBFd2tfSW50ZW50X1NlcnZpY2UqOiByZXBvcnRzIG5ldyBXZWIgaW50
ZW50IHNlcnZpY2UgcmVnaXN0cmF0aW9uLgotICogLSAibG9hZCxlcnJvciIsIGNvbnN0IEV3a19X
ZWJfRXJyb3IqOiByZXBvcnRzIG1haW4gZnJhbWUgbG9hZCBmYWlsZWQuCisgKiAtICJsb2FkLGVy
cm9yIiwgY29uc3QgRXdrX0Vycm9yKjogcmVwb3J0cyBtYWluIGZyYW1lIGxvYWQgZmFpbGVkLgog
ICogLSAibG9hZCxmaW5pc2hlZCIsIHZvaWQ6IHJlcG9ydHMgbG9hZCBmaW5pc2hlZC4KICAqIC0g
ImxvYWQscHJvZ3Jlc3MiLCBkb3VibGUqOiBsb2FkIHByb2dyZXNzIGhhcyBjaGFuZ2VkICh2YWx1
ZSBmcm9tIDAuMCB0byAxLjApLgotICogLSAibG9hZCxwcm92aXNpb25hbCxmYWlsZWQiLCBjb25z
dCBFd2tfV2ViX0Vycm9yKjogdmlldyBwcm92aXNpb25hbCBsb2FkIGZhaWxlZC4KKyAqIC0gImxv
YWQscHJvdmlzaW9uYWwsZmFpbGVkIiwgY29uc3QgRXdrX0Vycm9yKjogdmlldyBwcm92aXNpb25h
bCBsb2FkIGZhaWxlZC4KICAqIC0gImxvYWQscHJvdmlzaW9uYWwscmVkaXJlY3QiLCB2b2lkOiB2
aWV3IHJlY2VpdmVkIHJlZGlyZWN0IGZvciBwcm92aXNpb25hbCBsb2FkLgogICogLSAibG9hZCxw
cm92aXNpb25hbCxzdGFydGVkIiwgdm9pZDogdmlldyBzdGFydGVkIHByb3Zpc2lvbmFsIGxvYWQu
CiAgKiAtICJwb2xpY3ksZGVjaXNpb24sbmF2aWdhdGlvbiIsIEV3a19OYXZpZ2F0aW9uX1BvbGlj
eV9EZWNpc2lvbio6IGEgbmF2aWdhdGlvbiBwb2xpY3kgZGVjaXNpb24gc2hvdWxkIGJlIHRha2Vu
LgpAQCAtNzMsMTIgKzczLDEyIEBACiAjaW5jbHVkZSAiZXdrX2JhY2tfZm9yd2FyZF9saXN0Lmgi
CiAjaW5jbHVkZSAiZXdrX2NvbnRleHQuaCIKICNpbmNsdWRlICJld2tfZG93bmxvYWRfam9iLmgi
CisjaW5jbHVkZSAiZXdrX2Vycm9yLmgiCiAjaW5jbHVkZSAiZXdrX2ludGVudC5oIgogI2luY2x1
ZGUgImV3a19zZXR0aW5ncy5oIgogI2luY2x1ZGUgImV3a190b3VjaC5oIgogI2luY2x1ZGUgImV3
a191cmxfcmVxdWVzdC5oIgogI2luY2x1ZGUgImV3a191cmxfcmVzcG9uc2UuaCIKLSNpbmNsdWRl
ICJld2tfd2ViX2Vycm9yLmgiCiAjaW5jbHVkZSAiZXdrX3dlYl9yZXNvdXJjZS5oIgogI2luY2x1
ZGUgPEV2YXMuaD4KIApAQCAtMjMwLDcgKzIzMCw3IEBAIHR5cGVkZWYgc3RydWN0IF9Fd2tfV2Vi
X1Jlc291cmNlX0xvYWRfRXJyb3IgRXdrX1dlYl9SZXNvdXJjZV9Mb2FkX0Vycm9yOwogICovCiBz
dHJ1Y3QgX0V3a19XZWJfUmVzb3VyY2VfTG9hZF9FcnJvciB7CiAgICAgRXdrX1dlYl9SZXNvdXJj
ZSAqcmVzb3VyY2U7IC8qKjwgcmVzb3VyY2UgdGhhdCBmYWlsZWQgbG9hZGluZyAqLwotICAgIEV3
a19XZWJfRXJyb3IgKmVycm9yOyAvKio8IGxvYWQgZXJyb3IgKi8KKyAgICBFd2tfRXJyb3IgKmVy
cm9yOyAvKio8IGxvYWQgZXJyb3IgKi8KIH07CiAKIC8vLyBDcmVhdGVzIGEgdHlwZSBuYW1lIGZv
ciBfRXdrX0Rvd25sb2FkX0pvYl9FcnJvci4KQEAgLTI0MSw3ICsyNDEsNyBAQCB0eXBlZGVmIHN0
cnVjdCBfRXdrX0Rvd25sb2FkX0pvYl9FcnJvciBFd2tfRG93bmxvYWRfSm9iX0Vycm9yOwogICov
CiBzdHJ1Y3QgX0V3a19Eb3dubG9hZF9Kb2JfRXJyb3IgewogICAgIEV3a19Eb3dubG9hZF9Kb2Ig
KmRvd25sb2FkX2pvYjsgLyoqPCBkb3dubG9hZCB0aGF0IGZhaWxlZCAqLwotICAgIEV3a19XZWJf
RXJyb3IgKmVycm9yOyAvKio8IGRvd25sb2FkIGVycm9yICovCisgICAgRXdrX0Vycm9yICplcnJv
cjsgLyoqPCBkb3dubG9hZCBlcnJvciAqLwogfTsKIAogLyoqCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19sb2FkZXJfY2xpZW50LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X2xvYWRlcl9jbGllbnQuY3Bw
CmluZGV4IDk5N2NhMzUuLjE4NjdiNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a192aWV3X2xvYWRlcl9jbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X2xvYWRlcl9jbGllbnQuY3BwCkBAIC0yOCwx
NCArMjgsMTQgQEAKIAogI2luY2x1ZGUgIldLRnJhbWUuaCIKICNpbmNsdWRlICJld2tfYmFja19m
b3J3YXJkX2xpc3RfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a19lcnJvci5oIgorI2luY2x1ZGUg
ImV3a19lcnJvcl9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX2ludGVudC5oIgogI2luY2x1ZGUg
ImV3a19pbnRlbnRfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19pbnRlbnRfc2VydmljZS5oIgog
I2luY2x1ZGUgImV3a19pbnRlbnRfc2VydmljZV9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3Zp
ZXdfbG9hZGVyX2NsaWVudF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0ZS5o
IgotI2luY2x1ZGUgImV3a193ZWJfZXJyb3IuaCIKLSNpbmNsdWRlICJld2tfd2ViX2Vycm9yX3By
aXZhdGUuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJLaXQ7CkBAIC05MCwxMCArOTAsMTAgQEAgc3RhdGljIHZvaWQgZGlkRmFpbExvYWRXaXRo
RXJyb3JGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYgZnJhbWUsIFdLRXJyb3JSZWYKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgRXZhc19PYmplY3QqIGV3a1ZpZXcgPSBzdGF0aWNfY2FzdDxF
dmFzX09iamVjdCo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKTsKLSAgICBFd2tfV2Vi
X0Vycm9yKiBld2tFcnJvciA9IGV3a193ZWJfZXJyb3JfbmV3KGVycm9yKTsKKyAgICBFd2tfRXJy
b3IqIGV3a0Vycm9yID0gZXdrX2Vycm9yX25ldyhlcnJvcik7CiAgICAgZXdrX3ZpZXdfbG9hZF9l
cnJvcihld2tWaWV3LCBld2tFcnJvcik7CiAgICAgZXdrX3ZpZXdfbG9hZF9maW5pc2hlZChld2tW
aWV3KTsKLSAgICBld2tfd2ViX2Vycm9yX2ZyZWUoZXdrRXJyb3IpOworICAgIGV3a19lcnJvcl9m
cmVlKGV3a0Vycm9yKTsKIH0KIAogc3RhdGljIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRG
b3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiAvKnVzZXJEYXRh
Ki8sIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCkBAIC0xMjAsOSArMTIwLDkgQEAgc3RhdGljIHZv
aWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZvckZyYW1lKFdLUGFnZVJlZiwgV0tG
cmFtZVJlZiBmcmFtZSwKICAgICAgICAgcmV0dXJuOwogCiAgICAgRXZhc19PYmplY3QqIGV3a1Zp
ZXcgPSBzdGF0aWNfY2FzdDxFdmFzX09iamVjdCo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudElu
Zm8pKTsKLSAgICBFd2tfV2ViX0Vycm9yKiBld2tFcnJvciA9IGV3a193ZWJfZXJyb3JfbmV3KGVy
cm9yKTsKKyAgICBFd2tfRXJyb3IqIGV3a0Vycm9yID0gZXdrX2Vycm9yX25ldyhlcnJvcik7CiAg
ICAgZXdrX3ZpZXdfbG9hZF9wcm92aXNpb25hbF9mYWlsZWQoZXdrVmlldywgZXdrRXJyb3IpOwot
ICAgIGV3a193ZWJfZXJyb3JfZnJlZShld2tFcnJvcik7CisgICAgZXdrX2Vycm9yX2ZyZWUoZXdr
RXJyb3IpOwogfQogCiBzdGF0aWMgdm9pZCBkaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3QoV0tQYWdl
UmVmLCBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYgYWRkZWRJdGVtLCBXS0FycmF5UmVmIHJlbW92
ZWRJdGVtcywgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaAppbmRleCA0Y2JhMjJkLi45YWUy
YzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmll
d19wcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Zp
ZXdfcHJpdmF0ZS5oCkBAIC00Myw3ICs0Myw3IEBAIHR5cGVkZWYgc3RydWN0IF9Fd2tfRG93bmxv
YWRfSm9iIEV3a19Eb3dubG9hZF9Kb2I7CiB0eXBlZGVmIHN0cnVjdCBfRXdrX0Zvcm1fU3VibWlz
c2lvbl9SZXF1ZXN0IEV3a19Gb3JtX1N1Ym1pc3Npb25fUmVxdWVzdDsKIHR5cGVkZWYgc3RydWN0
IF9Fd2tfVXJsX1JlcXVlc3QgRXdrX1VybF9SZXF1ZXN0OwogdHlwZWRlZiBzdHJ1Y3QgX0V3a19V
cmxfUmVzcG9uc2UgRXdrX1VybF9SZXNwb25zZTsKLXR5cGVkZWYgc3RydWN0IF9Fd2tfV2ViX0Vy
cm9yIEV3a19XZWJfRXJyb3I7Cit0eXBlZGVmIHN0cnVjdCBfRXdrX0Vycm9yIEV3a19FcnJvcjsK
IHR5cGVkZWYgc3RydWN0IF9Fd2tfV2ViX1Jlc291cmNlIEV3a19XZWJfUmVzb3VyY2U7CiB0eXBl
ZGVmIHN0cnVjdCBfRXdrX05hdmlnYXRpb25fUG9saWN5X0RlY2lzaW9uIEV3a19OYXZpZ2F0aW9u
X1BvbGljeV9EZWNpc2lvbjsKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCkBAIC01Niw3ICs1Niw3
IEBAIHR5cGVkZWYgc3RydWN0IF9Fd2tfSW50ZW50X1NlcnZpY2UgRXdrX0ludGVudF9TZXJ2aWNl
Owogdm9pZCBld2tfdmlld19jdXJzb3Jfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBX
ZWJDb3JlOjpDdXJzb3ImIGN1cnNvcik7CiB2b2lkIGV3a192aWV3X2Rpc3BsYXkoRXZhc19PYmpl
Y3QqIGV3a1ZpZXcsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHJlY3QpOwogdm9pZCBld2tfdmll
d19kb3dubG9hZF9qb2JfY2FuY2VsbGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfRG93bmxv
YWRfSm9iKik7Ci12b2lkIGV3a192aWV3X2Rvd25sb2FkX2pvYl9mYWlsZWQoRXZhc19PYmplY3Qq
IGV3a1ZpZXcsIEV3a19Eb3dubG9hZF9Kb2IqLCBFd2tfV2ViX0Vycm9yKik7Cit2b2lkIGV3a192
aWV3X2Rvd25sb2FkX2pvYl9mYWlsZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19Eb3dubG9h
ZF9Kb2IqLCBFd2tfRXJyb3IqKTsKIHZvaWQgZXdrX3ZpZXdfZG93bmxvYWRfam9iX2ZpbmlzaGVk
KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfRG93bmxvYWRfSm9iKik7CiB2b2lkIGV3a192aWV3
X2Rvd25sb2FkX2pvYl9yZXF1ZXN0ZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19Eb3dubG9h
ZF9Kb2IqKTsKIHZvaWQgZXdrX3ZpZXdfZm9ybV9zdWJtaXNzaW9uX3JlcXVlc3RfbmV3KEV2YXNf
T2JqZWN0KiBld2tWaWV3LCBFd2tfRm9ybV9TdWJtaXNzaW9uX1JlcXVlc3QqKTsKQEAgLTY1LDEw
ICs2NSwxMCBAQCB2b2lkIGV3a192aWV3X2Z1bGxfc2NyZWVuX2VudGVyKEV2YXNfT2JqZWN0KiBl
d2tWaWV3KTsKIHZvaWQgZXdrX3ZpZXdfZnVsbF9zY3JlZW5fZXhpdChFdmFzX09iamVjdCogZXdr
Vmlldyk7CiAjZW5kaWYKIHZvaWQgZXdrX3ZpZXdfaW1hZ2VfZGF0YV9zZXQoRXZhc19PYmplY3Qq
IGV3a1ZpZXcsIHZvaWQqIGltYWdlRGF0YSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSk7
Ci12b2lkIGV3a192aWV3X2xvYWRfZXJyb3IoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IEV3
a19XZWJfRXJyb3IqIGVycm9yKTsKK3ZvaWQgZXdrX3ZpZXdfbG9hZF9lcnJvcihFdmFzX09iamVj
dCogZXdrVmlldywgY29uc3QgRXdrX0Vycm9yKiBlcnJvcik7CiB2b2lkIGV3a192aWV3X2xvYWRf
ZmluaXNoZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcpOwogdm9pZCBld2tfdmlld19sb2FkX3Byb2dy
ZXNzX2NoYW5nZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGRvdWJsZSBwcm9ncmVzcyk7Ci12b2lk
IGV3a192aWV3X2xvYWRfcHJvdmlzaW9uYWxfZmFpbGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBj
b25zdCBFd2tfV2ViX0Vycm9yKiBlcnJvcik7Cit2b2lkIGV3a192aWV3X2xvYWRfcHJvdmlzaW9u
YWxfZmFpbGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBFd2tfRXJyb3IqIGVycm9yKTsK
IHZvaWQgZXdrX3ZpZXdfbG9hZF9wcm92aXNpb25hbF9yZWRpcmVjdChFdmFzX09iamVjdCogZXdr
Vmlldyk7CiB2b2lkIGV3a192aWV3X2xvYWRfcHJvdmlzaW9uYWxfc3RhcnRlZChFdmFzX09iamVj
dCogZXdrVmlldyk7CiB2b2lkIGV3a192aWV3X25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uKEV2
YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfTmF2aWdhdGlvbl9Qb2xpY3lfRGVjaXNpb24qIGRlY2lz
aW9uKTsKQEAgLTc2LDcgKzc2LDcgQEAgdm9pZCBld2tfdmlld19uZXdfd2luZG93X3BvbGljeV9k
ZWNpc2lvbihFdmFzX09iamVjdCogZXdrVmlldywgRXdrX05hdmlnYXRpb25fUG8KIHZvaWQgZXdr
X3ZpZXdfcGFnZV9jbG9zZShFdmFzX09iamVjdCogZXdrVmlldyk7CiBXS1BhZ2VSZWYgZXdrX3Zp
ZXdfcGFnZV9jcmVhdGUoRXZhc19PYmplY3QqIGV3a1ZpZXcpOwogdm9pZCBld2tfdmlld190aXRs
ZV9jaGFuZ2VkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBjaGFyKiB0aXRsZSk7Ci12b2lk
IGV3a192aWV3X3Jlc291cmNlX2xvYWRfZmFpbGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCB1aW50
NjRfdCByZXNvdXJjZUlkZW50aWZpZXIsIEV3a19XZWJfRXJyb3IqIGVycm9yKTsKK3ZvaWQgZXdr
X3ZpZXdfcmVzb3VyY2VfbG9hZF9mYWlsZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIHVpbnQ2NF90
IHJlc291cmNlSWRlbnRpZmllciwgRXdrX0Vycm9yKiBlcnJvcik7CiB2b2lkIGV3a192aWV3X3Jl
c291cmNlX2xvYWRfZmluaXNoZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIHVpbnQ2NF90IHJlc291
cmNlSWRlbnRpZmllcik7CiB2b2lkIGV3a192aWV3X3Jlc291cmNlX2xvYWRfaW5pdGlhdGVkKEV2
YXNfT2JqZWN0KiBld2tWaWV3LCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIsIEV3a19XZWJf
UmVzb3VyY2UqIHJlc291cmNlLCBFd2tfVXJsX1JlcXVlc3QqIHJlcXVlc3QpOwogdm9pZCBld2tf
dmlld19yZXNvdXJjZV9sb2FkX3Jlc3BvbnNlKEV2YXNfT2JqZWN0KiBld2tWaWV3LCB1aW50NjRf
dCByZXNvdXJjZUlkZW50aWZpZXIsIEV3a19VcmxfUmVzcG9uc2UqIHJlc3BvbnNlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3Jlc291cmNl
X2xvYWRfY2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192
aWV3X3Jlc291cmNlX2xvYWRfY2xpZW50LmNwcAppbmRleCAxMTNlMTc4Li5mOTc4MzhkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19yZXNvdXJj
ZV9sb2FkX2NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9jbGllbnQuY3BwCkBAIC0zMiwxNCArMzIsMTQgQEAKICNp
bmNsdWRlICJXS1VSTC5oIgogI2luY2x1ZGUgIldLVVJMUmVxdWVzdC5oIgogI2luY2x1ZGUgIldL
VVJMUmVzcG9uc2UuaCIKKyNpbmNsdWRlICJld2tfZXJyb3IuaCIKKyNpbmNsdWRlICJld2tfZXJy
b3JfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a191cmxfcmVxdWVzdC5oIgogI2luY2x1ZGUgImV3
a191cmxfcmVxdWVzdF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3VybF9yZXNwb25zZS5oIgog
I2luY2x1ZGUgImV3a191cmxfcmVzcG9uc2VfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a192aWV3
X3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfdmlld19yZXNvdXJjZV9sb2FkX2NsaWVudF9wcml2
YXRlLmgiCi0jaW5jbHVkZSAiZXdrX3dlYl9lcnJvci5oIgotI2luY2x1ZGUgImV3a193ZWJfZXJy
b3JfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a193ZWJfcmVzb3VyY2UuaCIKICNpbmNsdWRlICJl
d2tfd2ViX3Jlc291cmNlX3ByaXZhdGUuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
CkBAIC04OCwxMCArODgsMTAgQEAgc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZEZvclJlc291cmNl
KFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgdWludDY0X3QgcmVzb3VyY2VJZGUKIAogc3RhdGljIHZv
aWQgZGlkRmFpbExvYWRGb3JSZXNvdXJjZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIHVpbnQ2NF90
IHJlc291cmNlSWRlbnRpZmllciwgV0tFcnJvclJlZiB3a0Vycm9yLCBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKQogewotICAgIEV3a19XZWJfRXJyb3IqIGV3a0Vycm9yID0gZXdrX3dlYl9lcnJvcl9u
ZXcod2tFcnJvcik7CisgICAgRXdrX0Vycm9yKiBld2tFcnJvciA9IGV3a19lcnJvcl9uZXcod2tF
cnJvcik7CiAgICAgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9mYWlsZWQodG9Fd2tWaWV3KGNsaWVu
dEluZm8pLCByZXNvdXJjZUlkZW50aWZpZXIsIGV3a0Vycm9yKTsKICAgICBld2tfdmlld19yZXNv
dXJjZV9sb2FkX2ZpbmlzaGVkKHRvRXdrVmlldyhjbGllbnRJbmZvKSwgcmVzb3VyY2VJZGVudGlm
aWVyKTsKLSAgICBld2tfd2ViX2Vycm9yX2ZyZWUoZXdrRXJyb3IpOworICAgIGV3a19lcnJvcl9m
cmVlKGV3a0Vycm9yKTsKIH0KIAogdm9pZCBld2tfdmlld19yZXNvdXJjZV9sb2FkX2NsaWVudF9h
dHRhY2goV0tQYWdlUmVmIHBhZ2VSZWYsIEV2YXNfT2JqZWN0KiBld2tWaWV3KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3dlYl9lcnJvci5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfd2ViX2Vycm9yLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzAzODBiZC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfd2ViX2Vycm9yLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDEzMCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0
aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiZXdrX3dlYl9lcnJvci5oIgotCi0jaW5jbHVkZSAiRXJyb3JzRWZsLmgiCi0j
aW5jbHVkZSAiV0tFaW5hU2hhcmVkU3RyaW5nLmgiCi0jaW5jbHVkZSAiV0tTdHJpbmcuaCIKLSNp
bmNsdWRlICJXS1VSTC5oIgotI2luY2x1ZGUgImV3a193ZWJfZXJyb3JfcHJpdmF0ZS5oIgotI2lu
Y2x1ZGUgPFdLQVBJQ2FzdC5oPgotI2luY2x1ZGUgPFdLRXJyb3IuaD4KLSNpbmNsdWRlIDxXS1Jl
dGFpblB0ci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLQotdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7Ci11c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotCi1zdHJ1Y3QgX0V3a19XZWJf
RXJyb3IgewotICAgIFdLUmV0YWluUHRyPFdLRXJyb3JSZWY+IHdrRXJyb3I7Ci0KLSAgICBXS0Vp
bmFTaGFyZWRTdHJpbmcgdXJsOwotICAgIFdLRWluYVNoYXJlZFN0cmluZyBkZXNjcmlwdGlvbjsK
LQotICAgIF9Fd2tfV2ViX0Vycm9yKFdLRXJyb3JSZWYgZXJyb3JSZWYpCi0gICAgICAgIDogd2tF
cnJvcihlcnJvclJlZikKLSAgICAgICAgLCB1cmwoQWRvcHRXSywgV0tFcnJvckNvcHlGYWlsaW5n
VVJMKGVycm9yUmVmKSkKLSAgICAgICAgLCBkZXNjcmlwdGlvbihBZG9wdFdLLCBXS0Vycm9yQ29w
eUxvY2FsaXplZERlc2NyaXB0aW9uKGVycm9yUmVmKSkKLSAgICB7IH0KLQotICAgIH5fRXdrX1dl
Yl9FcnJvcigpCi0gICAgewotICAgIH0KLX07Ci0KLSNkZWZpbmUgRVdLX1dFQl9FUlJPUl9XS19H
RVRfT1JfUkVUVVJOKGVycm9yLCB3a0Vycm9yXywgLi4uKSAgICBcCi0gICAgaWYgKCEoZXJyb3Ip
KSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAg
RUlOQV9MT0dfQ1JJVCgiZXJyb3IgaXMgTlVMTC4iKTsgICAgICAgICAgICAgICAgICAgICAgXAot
ICAgICAgICByZXR1cm4gX19WQV9BUkdTX187ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAotICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAotICAgIGlmICghKGVycm9yKS0+d2tFcnJvcikgeyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgRUlOQV9MT0dfQ1JJVCgiZXJyb3ItPndr
RXJyb3IgaXMgTlVMTC4iKTsgICAgICAgICAgICBcCi0gICAgICAgIHJldHVybiBfX1ZBX0FSR1Nf
XzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgV0tF
cnJvclJlZiB3a0Vycm9yXyA9IChlcnJvciktPndrRXJyb3IuZ2V0KCkKLQotdm9pZCBld2tfd2Vi
X2Vycm9yX2ZyZWUoRXdrX1dlYl9FcnJvciogZXJyb3IpCi17Ci0gICAgRUlOQV9TQUZFVFlfT05f
TlVMTF9SRVRVUk4oZXJyb3IpOwotCi0gICAgZGVsZXRlIGVycm9yOwotfQotCi1Fd2tfV2ViX0Vy
cm9yX1R5cGUgZXdrX3dlYl9lcnJvcl90eXBlX2dldChjb25zdCBFd2tfV2ViX0Vycm9yKiBlcnJv
cikKLXsKLSAgICBFV0tfV0VCX0VSUk9SX1dLX0dFVF9PUl9SRVRVUk4oZXJyb3IsIHdrRXJyb3Is
IEVXS19XRUJfRVJST1JfVFlQRV9OT05FKTsKLQotICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVm
PiB3a0RvbWFpbihBZG9wdFdLLCBXS0Vycm9yQ29weURvbWFpbih3a0Vycm9yKSk7Ci0gICAgV1RG
OjpTdHJpbmcgZXJyb3JEb21haW4gPSB0b1dURlN0cmluZyh3a0RvbWFpbi5nZXQoKSk7Ci0KLSAg
ICBpZiAoZXJyb3JEb21haW4gPT0gZXJyb3JEb21haW5OZXR3b3JrKQotICAgICAgICByZXR1cm4g
RVdLX1dFQl9FUlJPUl9UWVBFX05FVFdPUks7Ci0gICAgaWYgKGVycm9yRG9tYWluID09IGVycm9y
RG9tYWluUG9saWN5KQotICAgICAgICByZXR1cm4gRVdLX1dFQl9FUlJPUl9UWVBFX1BPTElDWTsK
LSAgICBpZiAoZXJyb3JEb21haW4gPT0gZXJyb3JEb21haW5QbHVnaW4pCi0gICAgICAgIHJldHVy
biBFV0tfV0VCX0VSUk9SX1RZUEVfUExVR0lOOwotICAgIGlmIChlcnJvckRvbWFpbiA9PSBlcnJv
ckRvbWFpbkRvd25sb2FkKQotICAgICAgICByZXR1cm4gRVdLX1dFQl9FUlJPUl9UWVBFX0RPV05M
T0FEOwotICAgIGlmIChlcnJvckRvbWFpbiA9PSBlcnJvckRvbWFpblByaW50KQotICAgICAgICBy
ZXR1cm4gRVdLX1dFQl9FUlJPUl9UWVBFX1BSSU5UOwotICAgIHJldHVybiBFV0tfV0VCX0VSUk9S
X1RZUEVfSU5URVJOQUw7Ci19Ci0KLWNvbnN0IGNoYXIqIGV3a193ZWJfZXJyb3JfdXJsX2dldChj
b25zdCBFd2tfV2ViX0Vycm9yKiBlcnJvcikKLXsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JF
VFVSTl9WQUwoZXJyb3IsIDApOwotCi0gICAgcmV0dXJuIGVycm9yLT51cmw7Ci19Ci0KLWludCBl
d2tfd2ViX2Vycm9yX2NvZGVfZ2V0KGNvbnN0IEV3a19XZWJfRXJyb3IqIGVycm9yKQotewotICAg
IEVXS19XRUJfRVJST1JfV0tfR0VUX09SX1JFVFVSTihlcnJvciwgd2tFcnJvciwgMCk7Ci0KLSAg
ICByZXR1cm4gV0tFcnJvckdldEVycm9yQ29kZSh3a0Vycm9yKTsKLX0KLQotY29uc3QgY2hhciog
ZXdrX3dlYl9lcnJvcl9kZXNjcmlwdGlvbl9nZXQoY29uc3QgRXdrX1dlYl9FcnJvciogZXJyb3Ip
Ci17Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGVycm9yLCAwKTsKLQotICAg
IHJldHVybiBlcnJvci0+ZGVzY3JpcHRpb247Ci19Ci0KLUVpbmFfQm9vbCBld2tfd2ViX2Vycm9y
X2NhbmNlbGxhdGlvbl9nZXQoY29uc3QgRXdrX1dlYl9FcnJvciogZXJyb3IpCi17Ci0gICAgRVdL
X1dFQl9FUlJPUl9XS19HRVRfT1JfUkVUVVJOKGVycm9yLCB3a0Vycm9yLCBmYWxzZSk7Ci0KLSAg
ICByZXR1cm4gdG9JbXBsKHdrRXJyb3IpLT5wbGF0Zm9ybUVycm9yKCkuaXNDYW5jZWxsYXRpb24o
KTsKLX0KLQotRXdrX1dlYl9FcnJvciogZXdrX3dlYl9lcnJvcl9uZXcoV0tFcnJvclJlZiBlcnJv
cikKLXsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoZXJyb3IsIDApOwotCi0g
ICAgcmV0dXJuIG5ldyBFd2tfV2ViX0Vycm9yKGVycm9yKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a193ZWJfZXJyb3IuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a193ZWJfZXJyb3IuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNGJhMGM3YS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfd2ViX2Vycm9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMjQgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotLyoqCi0gKiBAZmlsZSAgICBld2tfd2ViX2Vycm9yLmgK
LSAqIEBicmllZiAgIERlc2NyaWJlcyB0aGUgV2ViIEVycm9yIEFQSS4KLSAqLwotCi0jaWZuZGVm
IGV3a193ZWJfZXJyb3JfaAotI2RlZmluZSBld2tfd2ViX2Vycm9yX2gKLQotI2luY2x1ZGUgPEVp
bmEuaD4KLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKLSNlbmRpZgotCi0vKiog
Q3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgQGEgRXdrX1dlYl9FcnJvci4gKi8KLXR5cGVkZWYgc3Ry
dWN0IF9Fd2tfV2ViX0Vycm9yIEV3a19XZWJfRXJyb3I7Ci0KLS8vLyBDcmVhdGVzIGEgdHlwZSBu
YW1lIGZvciBFd2tfV2ViX0Vycm9yX1R5cGUuCi10eXBlZGVmIGVudW0gewotICAgIEVXS19XRUJf
RVJST1JfVFlQRV9OT05FLAotICAgIEVXS19XRUJfRVJST1JfVFlQRV9JTlRFUk5BTCwKLSAgICBF
V0tfV0VCX0VSUk9SX1RZUEVfTkVUV09SSywKLSAgICBFV0tfV0VCX0VSUk9SX1RZUEVfUE9MSUNZ
LAotICAgIEVXS19XRUJfRVJST1JfVFlQRV9QTFVHSU4sCi0gICAgRVdLX1dFQl9FUlJPUl9UWVBF
X0RPV05MT0FELAotICAgIEVXS19XRUJfRVJST1JfVFlQRV9QUklOVAotfSBFd2tfV2ViX0Vycm9y
X1R5cGU7Ci0KLS8qKgotICogRnJlZXMgdGhlIGdpdmVuIG9iamVjdC4KLSAqCi0gKiBAcGFyYW0g
ZXJyb3IgdGhlIGVycm9yIG9iamVjdCB0byBmcmVlCi0gKi8KLUVBUEkgdm9pZCBld2tfd2ViX2Vy
cm9yX2ZyZWUoRXdrX1dlYl9FcnJvciAqZXJyb3IpOwotCi0vKioKLSAqIFF1ZXJ5IHR5cGUgZm9y
IHRoaXMgZXJyb3IuCi0gKgotICogQHBhcmFtIGVycm9yIGVycm9yIG9iamVjdCB0byBxdWVyeS4K
LSAqCi0gKiBAcmV0dXJuIHRoZSBlcnJvciB0eXBlLCB0aGF0IG1heSBiZSBAYyBOVUxMLiBUaGlz
IHBvaW50ZXIgaXMKLSAqICAgICAgICAgZ3VhcmFudGVlZCB0byBiZSBlaW5hX3N0cmluZ3NoYXJl
LCBzbyB3aGVuZXZlciBwb3NzaWJsZQotICogICAgICAgICBzYXZlIHlvdXJzZWxmIHNvbWUgY3B1
IGN5Y2xlcyBhbmQgdXNlCi0gKiAgICAgICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVmKCkgaW5zdGVh
ZCBvZiBlaW5hX3N0cmluZ3NoYXJlX2FkZCgpIG9yCi0gKiAgICAgICAgIHN0cmR1cCgpLgotICov
Ci1FQVBJIEV3a19XZWJfRXJyb3JfVHlwZSBld2tfd2ViX2Vycm9yX3R5cGVfZ2V0KGNvbnN0IEV3
a19XZWJfRXJyb3IgKmVycm9yKTsKLQotLyoqCi0gKiBRdWVyeSBmYWlsaW5nIFVSTCBmb3IgdGhp
cyBlcnJvci4KLSAqCi0gKiBVUkwgdGhhdCBmYWlsZWQgbG9hZGluZy4KLSAqCi0gKiBAcGFyYW0g
ZXJyb3IgZXJyb3Igb2JqZWN0IHRvIHF1ZXJ5LgotICoKLSAqIEByZXR1cm4gdGhlIFVSTCBwb2lu
dGVyLCB0aGF0IG1heSBiZSBAYyBOVUxMLiBUaGlzIHBvaW50ZXIgaXMKLSAqICAgICAgICAgZ3Vh
cmFudGVlZCB0byBiZSBlaW5hX3N0cmluZ3NoYXJlLCBzbyB3aGVuZXZlciBwb3NzaWJsZQotICog
ICAgICAgICBzYXZlIHlvdXJzZWxmIHNvbWUgY3B1IGN5Y2xlcyBhbmQgdXNlCi0gKiAgICAgICAg
IGVpbmFfc3RyaW5nc2hhcmVfcmVmKCkgaW5zdGVhZCBvZiBlaW5hX3N0cmluZ3NoYXJlX2FkZCgp
IG9yCi0gKiAgICAgICAgIHN0cmR1cCgpLgotICovCi1FQVBJIGNvbnN0IGNoYXIgKmV3a193ZWJf
ZXJyb3JfdXJsX2dldChjb25zdCBFd2tfV2ViX0Vycm9yICplcnJvcik7Ci0KLS8qKgotICogUXVl
cnkgSFRUUCBlcnJvciBjb2RlLgotICoKLSAqIEBwYXJhbSBlcnJvciBlcnJvciBvYmplY3QgdG8g
cXVlcnkuCi0gKgotICogQHJldHVybiB0aGUgSFRUUCBlcnJvciBjb2RlLgotICovCi1FQVBJIGlu
dCBld2tfd2ViX2Vycm9yX2NvZGVfZ2V0KGNvbnN0IEV3a19XZWJfRXJyb3IgKmVycm9yKTsKLQot
LyoqCi0gKiBRdWVyeSBkZXNjcmlwdGlvbiBmb3IgdGhpcyBlcnJvci4KLSAqCi0gKiBAcGFyYW0g
ZXJyb3IgZXJyb3Igb2JqZWN0IHRvIHF1ZXJ5LgotICoKLSAqIEByZXR1cm4gdGhlIGRlc2NyaXB0
aW9uIHBvaW50ZXIsIHRoYXQgbWF5IGJlIEBjIE5VTEwuIFRoaXMgcG9pbnRlciBpcwotICogICAg
ICAgICBndWFyYW50ZWVkIHRvIGJlIGVpbmFfc3RyaW5nc2hhcmUsIHNvIHdoZW5ldmVyIHBvc3Np
YmxlCi0gKiAgICAgICAgIHNhdmUgeW91cnNlbGYgc29tZSBjcHUgY3ljbGVzIGFuZCB1c2UKLSAq
ICAgICAgICAgZWluYV9zdHJpbmdzaGFyZV9yZWYoKSBpbnN0ZWFkIG9mIGVpbmFfc3RyaW5nc2hh
cmVfYWRkKCkgb3IKLSAqICAgICAgICAgc3RyZHVwKCkuCi0gKi8KLUVBUEkgY29uc3QgY2hhciAq
ZXdrX3dlYl9lcnJvcl9kZXNjcmlwdGlvbl9nZXQoY29uc3QgRXdrX1dlYl9FcnJvciAqZXJyb3Ip
OwotCi0vKioKLSAqIFF1ZXJ5IGlmIGVycm9yIHNob3VsZCBiZSB0cmVhdGVkIGFzIGEgY2FuY2Vs
bGF0aW9uLgotICoKLSAqIEBwYXJhbSBlcnJvciBlcnJvciBvYmplY3QgdG8gcXVlcnkuCi0gKgot
ICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgdGhpcyBlcnJvciBzaG91bGQgYmUgdHJlYXRlZCBh
cyBhIGNhbmNlbGxhdGlvbiwgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKLSAqLwotRUFQSSBFaW5h
X0Jvb2wgZXdrX3dlYl9lcnJvcl9jYW5jZWxsYXRpb25fZ2V0KGNvbnN0IEV3a19XZWJfRXJyb3Ig
KmVycm9yKTsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLQotI2VuZGlmIC8vIGV3
a193ZWJfZXJyb3JfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3dlYl9lcnJvcl9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfd2ViX2Vycm9yX3ByaXZhdGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggYzlhMzFlNS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfd2ViX2Vycm9yX3ByaXZhdGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgZXdrX3dlYl9lcnJvcl9wcml2YXRlX2gKLSNk
ZWZpbmUgZXdrX3dlYl9lcnJvcl9wcml2YXRlX2gKLQotI2luY2x1ZGUgPFdLRXJyb3IuaD4KLQot
dHlwZWRlZiBzdHJ1Y3QgX0V3a19XZWJfRXJyb3IgRXdrX1dlYl9FcnJvcjsKLQotRXdrX1dlYl9F
cnJvciogZXdrX3dlYl9lcnJvcl9uZXcoV0tFcnJvclJlZiBlcnJvcik7Ci0KLSNlbmRpZiAvLyBl
d2tfd2ViX2Vycm9yX3ByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2Nvb2tpZV9tYW5hZ2VyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9jb29raWVfbWFuYWdlci5j
cHAKaW5kZXggNDM1M2NlZC4uOGM5ZmRlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2Nvb2tpZV9tYW5hZ2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfY29va2llX21h
bmFnZXIuY3BwCkBAIC02NSw3ICs2NSw3IEBAIHN0YXRpYyB2b2lkIHNlcnZlckNhbGxiYWNrKFNv
dXBTZXJ2ZXIqIHNlcnZlciwgU291cE1lc3NhZ2UqIG1lc3NhZ2UsIGNvbnN0IGNoYXIqCiAgICAg
c291cF9tZXNzYWdlX2JvZHlfY29tcGxldGUobWVzc2FnZS0+cmVzcG9uc2VfYm9keSk7CiB9CiAK
LXN0YXRpYyB2b2lkIGdldEFjY2VwdFBvbGljeUNhbGxiYWNrKEV3a19Db29raWVfQWNjZXB0X1Bv
bGljeSBwb2xpY3ksIEV3a19XZWJfRXJyb3IqIGVycm9yLCB2b2lkKiBldmVudF9pbmZvKQorc3Rh
dGljIHZvaWQgZ2V0QWNjZXB0UG9saWN5Q2FsbGJhY2soRXdrX0Nvb2tpZV9BY2NlcHRfUG9saWN5
IHBvbGljeSwgRXdrX0Vycm9yKiBlcnJvciwgdm9pZCogZXZlbnRfaW5mbykKIHsKICAgICBBU1NF
UlRfRkFMU0UoZXJyb3IpOwogICAgIEV3a19Db29raWVfQWNjZXB0X1BvbGljeSogcmV0ID0gc3Rh
dGljX2Nhc3Q8RXdrX0Nvb2tpZV9BY2NlcHRfUG9saWN5Kj4oZXZlbnRfaW5mbyk7CkBAIC04MSw3
ICs4MSw3IEBAIHN0YXRpYyBFd2tfQ29va2llX0FjY2VwdF9Qb2xpY3kgZ2V0QWNjZXB0UG9saWN5
KEV3a19Db29raWVfTWFuYWdlciogbWFuYWdlcikKICAgICByZXR1cm4gcG9saWN5OwogfQogCi1z
dGF0aWMgdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llc0NhbGxiYWNrKEVpbmFfTGlzdCogaG9z
dG5hbWVzLCBFd2tfV2ViX0Vycm9yKiBlcnJvciwgdm9pZCogZXZlbnRfaW5mbykKK3N0YXRpYyB2
b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzQ2FsbGJhY2soRWluYV9MaXN0KiBob3N0bmFtZXMs
IEV3a19FcnJvciogZXJyb3IsIHZvaWQqIGV2ZW50X2luZm8pCiB7CiAgICAgQVNTRVJUX0ZBTFNF
KGVycm9yKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
dGVzdHMvdGVzdF9ld2syX2Rvd25sb2FkX2pvYi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfZG93bmxvYWRfam9iLmNwcAppbmRleCAyMmM5N2Fh
Li5kMjgxMjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90
ZXN0cy90ZXN0X2V3azJfZG93bmxvYWRfam9iLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfZG93bmxvYWRfam9iLmNwcApAQCAtMTMxLDcg
KzEzMSw3IEBAIHN0YXRpYyB2b2lkIG9uX2Rvd25sb2FkX2NhbmNlbGxlZCh2b2lkKiB1c2VyRGF0
YSwgRXZhc19PYmplY3QqIHdlYnZpZXcsIHZvaWQqIGV2CiBzdGF0aWMgdm9pZCBvbl9kb3dubG9h
ZF9mYWlsZWQodm9pZCogdXNlckRhdGEsIEV2YXNfT2JqZWN0KiB3ZWJ2aWV3LCB2b2lkKiBldmVu
dEluZm8pCiB7CiAgICAgRXdrX0Rvd25sb2FkX0pvYl9FcnJvciogZG93bmxvYWRFcnJvciA9IHN0
YXRpY19jYXN0PEV3a19Eb3dubG9hZF9Kb2JfRXJyb3IqPihldmVudEluZm8pOwotICAgIGZwcmlu
dGYoc3RkZXJyLCAiRG93bmxvYWQgZXJyb3I6ICVzXG4iLCBld2tfd2ViX2Vycm9yX2Rlc2NyaXB0
aW9uX2dldChkb3dubG9hZEVycm9yLT5lcnJvcikpOworICAgIGZwcmludGYoc3RkZXJyLCAiRG93
bmxvYWQgZXJyb3I6ICVzXG4iLCBld2tfZXJyb3JfZGVzY3JpcHRpb25fZ2V0KGRvd25sb2FkRXJy
b3ItPmVycm9yKSk7CiAgICAgZWNvcmVfbWFpbl9sb29wX3F1aXQoKTsKICAgICBGQUlMKCk7CiB9
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTEx
MjdiMi4uYTJkN2JiNSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTA5LTI4ICBKb25nc2VvayBZYW5nICA8anM0
NS55YW5nQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdW1dLMl0gUmVtb3ZlICJ3ZWIiIHdv
cmQgZnJvbSBld2tfd2ViX2Vycm9yIEFQSXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPVhYWAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFJlbW92ZSAid2ViIiB3b3JkIGZyb20gZXdrX3dlYl9lcnJvciBBUElz
LgorICAgICAgICAid2ViIiB3b3JkIHdhcyByZWR1bmRhbnQgYmVjYXVzZSAiZXdrIiBtZWFucyAi
RUZMIFdlYktpdCIgYW5kIFdLIEFQSXMgZm9yIGVycm9yIGRvZXMgbm90IGhhdmUgIndlYiIgd29y
ZC4KKworICAgICAgICAqIE1pbmlCcm93c2VyL2VmbC9tYWluLmM6CisgICAgICAgIChvbl9lcnJv
cik6CisKIDIwMTItMDktMjcgIEFsZXhhbmRyZSBFbGlhcyAgPGFlbGlhc0BjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgW2Nocm9taXVtXSBEdW1wUmVuZGVyVHJlZSBzdXBwb3J0IGZvciBzb2Z0d2Fy
ZSBjb21wb3NpdGluZwpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvZWZsL21haW4uYyBi
L1Rvb2xzL01pbmlCcm93c2VyL2VmbC9tYWluLmMKaW5kZXggYjQ0ZTUxNC4uZjBjNzczNyAxMDA2
NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvZWZsL21haW4uYworKysgYi9Ub29scy9NaW5pQnJv
d3Nlci9lZmwvbWFpbi5jCkBAIC0xODcsMTMgKzE4NywxMyBAQCBzdGF0aWMgdm9pZAogb25fZXJy
b3Iodm9pZCAqdXNlcl9kYXRhLCBFdmFzX09iamVjdCAqd2Vidmlldywgdm9pZCAqZXZlbnRfaW5m
bykKIHsKICAgICBFaW5hX1N0cmJ1ZiogYnVmZmVyOwotICAgIGNvbnN0IEV3a19XZWJfRXJyb3Ig
KmVycm9yID0gKGNvbnN0IEV3a19XZWJfRXJyb3IgKilldmVudF9pbmZvOworICAgIGNvbnN0IEV3
a19FcnJvciAqZXJyb3IgPSAoY29uc3QgRXdrX0Vycm9yICopZXZlbnRfaW5mbzsKIAogICAgIGJ1
ZmZlciA9IGVpbmFfc3RyYnVmX25ldygpOwogICAgIGVpbmFfc3RyYnVmX2FwcGVuZF9wcmludGYo
YnVmZmVyLCAiPGh0bWw+PGJvZHk+PGRpdiBzdHlsZT1cImNvbG9yOiNmZjAwMDBcIj5FUlJPUiE8
L2Rpdj48YnI+PGRpdj5Db2RlOiAlZDxicj5EZXNjcmlwdGlvbjogJXM8YnI+VVJMOiAlczwvZGl2
PjwvYm9keTwvaHRtbD4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXdrX3dlYl9l
cnJvcl9jb2RlX2dldChlcnJvciksIGV3a193ZWJfZXJyb3JfZGVzY3JpcHRpb25fZ2V0KGVycm9y
KSwgZXdrX3dlYl9lcnJvcl91cmxfZ2V0KGVycm9yKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBld2tfZXJyb3JfY29kZV9nZXQoZXJyb3IpLCBld2tfZXJyb3JfZGVzY3JpcHRpb25f
Z2V0KGVycm9yKSwgZXdrX2Vycm9yX3VybF9nZXQoZXJyb3IpKTsKIAotICAgIGV3a192aWV3X2h0
bWxfc3RyaW5nX2xvYWQod2VidmlldywgZWluYV9zdHJidWZfc3RyaW5nX2dldChidWZmZXIpLCAw
LCBld2tfd2ViX2Vycm9yX3VybF9nZXQoZXJyb3IpKTsKKyAgICBld2tfdmlld19odG1sX3N0cmlu
Z19sb2FkKHdlYnZpZXcsIGVpbmFfc3RyYnVmX3N0cmluZ19nZXQoYnVmZmVyKSwgMCwgZXdrX2Vy
cm9yX3VybF9nZXQoZXJyb3IpKTsKICAgICBlaW5hX3N0cmJ1Zl9mcmVlKGJ1ZmZlcik7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167213</attachid>
            <date>2012-10-04 17:23:29 -0700</date>
            <delta_ts>2012-10-04 17:51:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>47485</size>
            <attacher name="Jongseok Yang">js45.yang</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBlNGQ1ZGZiLi5iYzlkNTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTMg
QEAKKzIwMTItMDktMjggIEpvbmdzZW9rIFlhbmcgIDxqczQ1LnlhbmdAc2Ftc3VuZy5jb20+CisK
KyAgICAgICAgW0VGTF1bV0syXSBSZW1vdmUgIndlYiIgd29yZCBmcm9tIGV3a193ZWJfZXJyb3Ig
QVBJcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc4
ODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1v
dmUgIndlYiIgd29yZCBmcm9tIGV3a193ZWJfZXJyb3IgQVBJcy4KKyAgICAgICAgIndlYiIgd29y
ZCB3YXMgcmVkdW5kYW50IGJlY2F1c2UgImV3ayIgbWVhbnMgIkVGTCBXZWJLaXQiIGFuZCBXSyBB
UElzIGZvciBlcnJvciBkb2VzIG5vdCBoYXZlICJ3ZWIiIHdvcmQuCisKKyAgICAgICAgKiBQbGF0
Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X2Rvd25sb2FkX2NsaWVudC5j
cHA6CisgICAgICAgIChkaWRGYWlsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tf
Y29va2llX21hbmFnZXIuY3BwOgorICAgICAgICAoZ2V0QWNjZXB0UG9saWN5Q2FsbGJhY2spOgor
ICAgICAgICAoZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXNDYWxsYmFjayk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX2Nvb2tpZV9tYW5hZ2VyLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX2Rvd25sb2FkX2pvYl9wcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX2Vycm9yLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a193ZWJfZXJyb3IuY3BwLgorICAgICAgICAoX0V3a19FcnJvcik6Cisg
ICAgICAgIChfRXdrX0Vycm9yOjpfRXdrX0Vycm9yKToKKyAgICAgICAgKF9Fd2tfRXJyb3I6On5f
RXdrX0Vycm9yKToKKyAgICAgICAgKGV3a19lcnJvcl9mcmVlKToKKyAgICAgICAgKGV3a19lcnJv
cl90eXBlX2dldCk6CisgICAgICAgIChld2tfZXJyb3JfdXJsX2dldCk6CisgICAgICAgIChld2tf
ZXJyb3JfY29kZV9nZXQpOgorICAgICAgICAoZXdrX2Vycm9yX2Rlc2NyaXB0aW9uX2dldCk6Cisg
ICAgICAgIChld2tfZXJyb3JfY2FuY2VsbGF0aW9uX2dldCk6CisgICAgICAgIChld2tfZXJyb3Jf
bmV3KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfZXJyb3IuaDogUmVuYW1lZCBm
cm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a193ZWJfZXJyb3IuaC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfZXJyb3JfcHJpdmF0ZS5oOiBSZW5hbWVkIGZy
b20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3dlYl9lcnJvcl9wcml2YXRl
LmguCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwOgorICAgICAgICAo
ZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9mYWlsZWQpOgorICAgICAgICAoZXdrX3ZpZXdfZG93bmxv
YWRfam9iX2ZhaWxlZCk6CisgICAgICAgIChld2tfdmlld19sb2FkX2Vycm9yKToKKyAgICAgICAg
KGV3a192aWV3X2xvYWRfcHJvdmlzaW9uYWxfZmFpbGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfdmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3
X2xvYWRlcl9jbGllbnQuY3BwOgorICAgICAgICAoZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JGcmFt
ZSk6CisgICAgICAgIChkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19yZXNvdXJjZV9sb2FkX2NsaWVudC5jcHA6Cisg
ICAgICAgIChkaWRGYWlsTG9hZEZvclJlc291cmNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2VmbC90ZXN0cy90ZXN0X2V3azJfY29va2llX21hbmFnZXIuY3BwOgorICAgICAgICAoZ2V0QWNj
ZXB0UG9saWN5Q2FsbGJhY2spOgorICAgICAgICAoZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXNDYWxs
YmFjayk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2Rvd25s
b2FkX2pvYi5jcHA6CisgICAgICAgIChvbl9kb3dubG9hZF9mYWlsZWQpOgorCiAyMDEyLTA5LTI3
ICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc4MjMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UK
aW5kZXggZDM5MzJiNi4uMGI4ZWI1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZv
cm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTQ3
LDYgKzQ3LDcgQEAgTElTVChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX2NvbnRleHRfcmVxdWVzdF9tYW5hZ2VyX2NsaWVudC5jcHAKICAgICBVSVByb2Nl
c3MvQVBJL2VmbC9ld2tfY29va2llX21hbmFnZXIuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX2Rvd25sb2FkX2pvYi5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfZXJyb3IuY3Bw
CiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Zvcm1fc3VibWlzc2lvbl9yZXF1ZXN0LmNwcAog
ICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19pbnRlbnQuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX2ludGVudF9zZXJ2aWNlLmNwcApAQCAtNjQsNyArNjUsNiBAQCBMSVNUKEFQUEVORCBX
ZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wb2xpY3lfY2xp
ZW50LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3Jlc291cmNlX2xvYWRfY2xp
ZW50LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3VpX2NsaWVudC5jcHAKLSAg
ICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfd2ViX2Vycm9yLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkv
ZWZsL2V3a193ZWJfcmVzb3VyY2UuY3BwCiAKICAgICBVSVByb2Nlc3MvY2Fpcm8vQmFja2luZ1N0
b3JlQ2Fpcm8uY3BwCkBAIC0yMTcsNiArMjE3LDcgQEAgU0VUIChFV2ViS2l0Ml9IRUFERVJTCiAg
ICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29u
dGV4dC5oIgogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX2Nvb2tpZV9tYW5hZ2VyLmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElS
fS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfZG93bmxvYWRfam9iLmgiCisgICAgIiR7Q01BS0VfQ1VS
UkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfZXJyb3IuaCIKICAgICAiJHtD
TUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19mb3JtX3N1Ym1p
c3Npb25fcmVxdWVzdC5oIgogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2ludGVudC5oIgogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJ
Un0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2ludGVudF9zZXJ2aWNlLmgiCkBAIC0yMjksNyArMjMw
LDYgQEAgU0VUIChFV2ViS2l0Ml9IRUFERVJTCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0Vf
RElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3Jlc3BvbnNlLmgiCiAgICAgIiR7Q01BS0Vf
Q1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3NjaGVtZV9yZXF1
ZXN0LmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfdmlldy5oIgotICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX3dlYl9lcnJvci5oIgogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJ
Un0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3dlYl9yZXNvdXJjZS5oIgogKQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaAppbmRleCAxM2VmYWIxLi42ZDE0ZDhl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmgKQEAgLTMz
LDYgKzMzLDcgQEAKICNpbmNsdWRlICJld2tfY29udGV4dC5oIgogI2luY2x1ZGUgImV3a19jb29r
aWVfbWFuYWdlci5oIgogI2luY2x1ZGUgImV3a19kb3dubG9hZF9qb2IuaCIKKyNpbmNsdWRlICJl
d2tfZXJyb3IuaCIKICNpbmNsdWRlICJld2tfZm9ybV9zdWJtaXNzaW9uX3JlcXVlc3QuaCIKICNp
bmNsdWRlICJld2tfaW50ZW50LmgiCiAjaW5jbHVkZSAiZXdrX2ludGVudF9zZXJ2aWNlLmgiCkBA
IC00NSw3ICs0Niw2IEBACiAjaW5jbHVkZSAiZXdrX3VybF9yZXNwb25zZS5oIgogI2luY2x1ZGUg
ImV3a191cmxfc2NoZW1lX3JlcXVlc3QuaCIKICNpbmNsdWRlICJld2tfdmlldy5oIgotI2luY2x1
ZGUgImV3a193ZWJfZXJyb3IuaCIKICNpbmNsdWRlICJld2tfd2ViX3Jlc291cmNlLmgiCiAKICNl
bmRpZiAvLyBFV2ViS2l0Ml9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfY29udGV4dF9kb3dubG9hZF9jbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfZG93bmxvYWRfY2xpZW50LmNwcAppbmRleCA5
ZDkyNGJmLi41NjkwOTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfY29udGV4dF9kb3dubG9hZF9jbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X2Rvd25sb2FkX2NsaWVudC5jcHAKQEAgLTMz
LDExICszMywxMSBAQAogI2luY2x1ZGUgImV3a19jb250ZXh0X3ByaXZhdGUuaCIKICNpbmNsdWRl
ICJld2tfZG93bmxvYWRfam9iLmgiCiAjaW5jbHVkZSAiZXdrX2Rvd25sb2FkX2pvYl9wcml2YXRl
LmgiCisjaW5jbHVkZSAiZXdrX2Vycm9yLmgiCisjaW5jbHVkZSAiZXdrX2Vycm9yX3ByaXZhdGUu
aCIKICNpbmNsdWRlICJld2tfdXJsX3Jlc3BvbnNlLmgiCiAjaW5jbHVkZSAiZXdrX3VybF9yZXNw
b25zZV9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0ZS5oIgotI2luY2x1ZGUg
ImV3a193ZWJfZXJyb3IuaCIKLSNpbmNsdWRlICJld2tfd2ViX2Vycm9yX3ByaXZhdGUuaCIKICNp
bmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKQEAgLTk1
LDEwICs5NSwxMCBAQCBzdGF0aWMgdm9pZCBkaWRGYWlsKFdLQ29udGV4dFJlZiwgV0tEb3dubG9h
ZFJlZiB3a0Rvd25sb2FkLCBXS0Vycm9yUmVmIGVycm9yLCBjbwogICAgIEV3a19Eb3dubG9hZF9K
b2IqIGRvd25sb2FkID0gZXdrX2NvbnRleHRfZG93bmxvYWRfam9iX2dldCh0b0V3a0NvbnRleHQo
Y2xpZW50SW5mbyksIGRvd25sb2FkSWQpOwogICAgIEFTU0VSVChkb3dubG9hZCk7CiAKLSAgICBF
d2tfV2ViX0Vycm9yKiBld2tFcnJvciA9IGV3a193ZWJfZXJyb3JfbmV3KGVycm9yKTsKKyAgICBF
d2tfRXJyb3IqIGV3a0Vycm9yID0gZXdrX2Vycm9yX25ldyhlcnJvcik7CiAgICAgZXdrX2Rvd25s
b2FkX2pvYl9zdGF0ZV9zZXQoZG93bmxvYWQsIEVXS19ET1dOTE9BRF9KT0JfU1RBVEVfRkFJTEVE
KTsKICAgICBld2tfdmlld19kb3dubG9hZF9qb2JfZmFpbGVkKGV3a19kb3dubG9hZF9qb2Jfdmll
d19nZXQoZG93bmxvYWQpLCBkb3dubG9hZCwgZXdrRXJyb3IpOwotICAgIGV3a193ZWJfZXJyb3Jf
ZnJlZShld2tFcnJvcik7CisgICAgZXdrX2Vycm9yX2ZyZWUoZXdrRXJyb3IpOwogICAgIGV3a19j
b250ZXh0X2Rvd25sb2FkX2pvYl9yZW1vdmUodG9Fd2tDb250ZXh0KGNsaWVudEluZm8pLCBkb3du
bG9hZElkKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX2Nvb2tpZV9tYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19jb29raWVfbWFuYWdlci5jcHAKaW5kZXggNDVkZDc1ZS4uYTUyMDQ3MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nvb2tpZV9tYW5hZ2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29va2llX21h
bmFnZXIuY3BwCkBAIC0zMyw4ICszMyw4IEBACiAjaW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKICNp
bmNsdWRlICJXS1N0cmluZy5oIgogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXJQcm94eS5oIgor
I2luY2x1ZGUgImV3a19lcnJvcl9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIK
LSNpbmNsdWRlICJld2tfd2ViX2Vycm9yX3ByaXZhdGUuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTE0MiwxMiAr
MTQyLDEyIEBAIHN0cnVjdCBHZXRfUG9saWN5X0FzeW5jX0RhdGEgewogc3RhdGljIHZvaWQgZ2V0
QWNjZXB0UG9saWN5Q2FsbGJhY2soV0tIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSwgV0tF
cnJvclJlZiB3a0Vycm9yLCB2b2lkKiBkYXRhKQogewogICAgIEdldF9Qb2xpY3lfQXN5bmNfRGF0
YSogY2FsbGJhY2tEYXRhID0gc3RhdGljX2Nhc3Q8R2V0X1BvbGljeV9Bc3luY19EYXRhKj4oZGF0
YSk7Ci0gICAgRXdrX1dlYl9FcnJvciogZXdrRXJyb3IgPSB3a0Vycm9yID8gZXdrX3dlYl9lcnJv
cl9uZXcod2tFcnJvcikgOiAwOworICAgIEV3a19FcnJvciogZXdrRXJyb3IgPSB3a0Vycm9yID8g
ZXdrX2Vycm9yX25ldyh3a0Vycm9yKSA6IDA7CiAKICAgICBjYWxsYmFja0RhdGEtPmNhbGxiYWNr
KHN0YXRpY19jYXN0PEV3a19Db29raWVfQWNjZXB0X1BvbGljeT4ocG9saWN5KSwgZXdrRXJyb3Is
IGNhbGxiYWNrRGF0YS0+dXNlckRhdGEpOwogCiAgICAgaWYgKGV3a0Vycm9yKQotICAgICAgICBl
d2tfd2ViX2Vycm9yX2ZyZWUoZXdrRXJyb3IpOworICAgICAgICBld2tfZXJyb3JfZnJlZShld2tF
cnJvcik7CiAgICAgZGVsZXRlIGNhbGxiYWNrRGF0YTsKIH0KIApAQCAtMTcyLDcgKzE3Miw3IEBA
IHN0YXRpYyB2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzQ2FsbGJhY2soV0tBcnJheVJlZiB3
a0hvc3RuYW1lcywgV0tFcnJvclJlZiB3CiB7CiAgICAgRWluYV9MaXN0KiBob3N0bmFtZXMgPSAw
OwogICAgIEdldF9Ib3N0bmFtZXNfQXN5bmNfRGF0YSogY2FsbGJhY2tEYXRhID0gc3RhdGljX2Nh
c3Q8R2V0X0hvc3RuYW1lc19Bc3luY19EYXRhKj4oY29udGV4dCk7Ci0gICAgRXdrX1dlYl9FcnJv
ciogZXdrRXJyb3IgPSB3a0Vycm9yID8gZXdrX3dlYl9lcnJvcl9uZXcod2tFcnJvcikgOiAwOwor
ICAgIEV3a19FcnJvciogZXdrRXJyb3IgPSB3a0Vycm9yID8gZXdrX2Vycm9yX25ldyh3a0Vycm9y
KSA6IDA7CiAKICAgICBjb25zdCBzaXplX3QgaG9zdG5hbWVDb3VudCA9IFdLQXJyYXlHZXRTaXpl
KHdrSG9zdG5hbWVzKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGhvc3RuYW1lQ291bnQ7
ICsraSkgewpAQCAtMTg5LDcgKzE4OSw3IEBAIHN0YXRpYyB2b2lkIGdldEhvc3RuYW1lc1dpdGhD
b29raWVzQ2FsbGJhY2soV0tBcnJheVJlZiB3a0hvc3RuYW1lcywgV0tFcnJvclJlZiB3CiAgICAg
RUlOQV9MSVNUX0ZSRUUoaG9zdG5hbWVzLCBpdGVtKQogICAgICAgZWluYV9zdHJpbmdzaGFyZV9k
ZWwoc3RhdGljX2Nhc3Q8RWluYV9TdHJpbmdzaGFyZSo+KGl0ZW0pKTsKICAgICBpZiAoZXdrRXJy
b3IpCi0gICAgICAgIGV3a193ZWJfZXJyb3JfZnJlZShld2tFcnJvcik7CisgICAgICAgIGV3a19l
cnJvcl9mcmVlKGV3a0Vycm9yKTsKICAgICBkZWxldGUgY2FsbGJhY2tEYXRhOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29va2llX21hbmFn
ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb29raWVfbWFuYWdl
ci5oCmluZGV4IGUzNzc4MDguLmMzMWI5MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19jb29raWVfbWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb29raWVfbWFuYWdlci5oCkBAIC0zMSw3ICszMSw3IEBA
CiAjaWZuZGVmIGV3a19jb29raWVfbWFuYWdlcl9oCiAjZGVmaW5lIGV3a19jb29raWVfbWFuYWdl
cl9oCiAKLSNpbmNsdWRlICJld2tfd2ViX2Vycm9yLmgiCisjaW5jbHVkZSAiZXdrX2Vycm9yLmgi
CiAjaW5jbHVkZSA8RWluYS5oPgogCiAjaWZkZWYgX19jcGx1c3BsdXMKQEAgLTc3LDcgKzc3LDcg
QEAgdHlwZWRlZiBlbnVtIF9Fd2tfQ29va2llX1BlcnNpc3RlbnRfU3RvcmFnZSBFd2tfQ29va2ll
X1BlcnNpc3RlbnRfU3RvcmFnZTsKICAqIEB0eXBlZGVmIEV3a19Db29raWVfTWFuYWdlcl9Bc3lu
Y19Qb2xpY3lfR2V0X0NiIEV3a19Db29raWVfTWFuYWdlcl9Bc3luY19Qb2xpY3lfR2V0X0NiCiAg
KiBAYnJpZWYgQ2FsbGJhY2sgdHlwZSBmb3IgdXNlIHdpdGggZXdrX2Nvb2tpZV9tYW5hZ2VyX2Fz
eW5jX2FjY2VwdF9wb2xpY3lfZ2V0CiAgKi8KLXR5cGVkZWYgdm9pZCAoKkV3a19Db29raWVfTWFu
YWdlcl9Bc3luY19Qb2xpY3lfR2V0X0NiKShFd2tfQ29va2llX0FjY2VwdF9Qb2xpY3kgcG9saWN5
LCBFd2tfV2ViX0Vycm9yICplcnJvciwgdm9pZCAqZXZlbnRfaW5mbyk7Cit0eXBlZGVmIHZvaWQg
KCpFd2tfQ29va2llX01hbmFnZXJfQXN5bmNfUG9saWN5X0dldF9DYikoRXdrX0Nvb2tpZV9BY2Nl
cHRfUG9saWN5IHBvbGljeSwgRXdrX0Vycm9yICplcnJvciwgdm9pZCAqZXZlbnRfaW5mbyk7CiAK
IC8qKgogICogQHR5cGVkZWYgRXdrX0Nvb2tpZV9NYW5hZ2VyX0FzeW5jX0hvc3RuYW1lc19HZXRf
Q2IgRXdrX0Nvb2tpZV9NYW5hZ2VyX0FzeW5jX0hvc3RuYW1lc19HZXRfQ2IKQEAgLTg3LDcgKzg3
LDcgQEAgdHlwZWRlZiB2b2lkICgqRXdrX0Nvb2tpZV9NYW5hZ2VyX0FzeW5jX1BvbGljeV9HZXRf
Q2IpKEV3a19Db29raWVfQWNjZXB0X1BvbGljeQogICogc2F2ZSB5b3Vyc2VsZiBzb21lIGNwdSBj
eWNsZXMgYW5kIHVzZSBlaW5hX3N0cmluZ3NoYXJlX3JlZigpIGluc3RlYWQgb2YgZWluYV9zdHJp
bmdzaGFyZV9hZGQoKQogICogb3Igc3RyZHVwKCkuCiAgKi8KLXR5cGVkZWYgdm9pZCAoKkV3a19D
b29raWVfTWFuYWdlcl9Bc3luY19Ib3N0bmFtZXNfR2V0X0NiKShFaW5hX0xpc3QqIGhvc3RuYW1l
cywgRXdrX1dlYl9FcnJvciAqZXJyb3IsIHZvaWQgKmV2ZW50X2luZm8pOwordHlwZWRlZiB2b2lk
ICgqRXdrX0Nvb2tpZV9NYW5hZ2VyX0FzeW5jX0hvc3RuYW1lc19HZXRfQ2IpKEVpbmFfTGlzdCAq
aG9zdG5hbWVzLCBFd2tfRXJyb3IgKmVycm9yLCB2b2lkICpldmVudF9pbmZvKTsKIAogLyoqCiAg
KiBAdHlwZWRlZiBFd2tfQ29va2llX01hbmFnZXJfQ2hhbmdlc19XYXRjaF9DYiBFd2tfQ29va2ll
X01hbmFnZXJfQ2hhbmdlc19XYXRjaF9DYgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX2Rvd25sb2FkX2pvYl9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfZG93bmxvYWRfam9iX3ByaXZhdGUuaAppbmRleCBkMDQz
NDk0Li44MWI1NDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfZG93bmxvYWRfam9iX3ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfZG93bmxvYWRfam9iX3ByaXZhdGUuaApAQCAtMzEsNyArMzEsNyBAQAog
CiB0eXBlZGVmIHN0cnVjdCBfRXdrX0Rvd25sb2FkX0pvYiBFd2tfRG93bmxvYWRfSm9iOwogdHlw
ZWRlZiBzdHJ1Y3QgX0V3a19VcmxfUmVzcG9uc2UgRXdrX1VybF9SZXNwb25zZTsKLXR5cGVkZWYg
c3RydWN0IF9Fd2tfV2ViX0Vycm9yIEV3a19XZWJfRXJyb3I7Cit0eXBlZGVmIHN0cnVjdCBfRXdr
X0Vycm9yIEV3a19FcnJvcjsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBEb3dubG9hZFBy
b3h5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Vy
cm9yLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19lcnJvci5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjU2YmY5YwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19lcnJvci5jcHAKQEAg
LTAsMCArMSwxMzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRp
b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJld2tfZXJyb3IuaCIKKworI2luY2x1ZGUgIkVycm9yc0VmbC5oIgorI2luY2x1
ZGUgIldLRWluYVNoYXJlZFN0cmluZy5oIgorI2luY2x1ZGUgIldLU3RyaW5nLmgiCisjaW5jbHVk
ZSAiV0tVUkwuaCIKKyNpbmNsdWRlICJld2tfZXJyb3JfcHJpdmF0ZS5oIgorI2luY2x1ZGUgPFdL
QVBJQ2FzdC5oPgorI2luY2x1ZGUgPFdLRXJyb3IuaD4KKyNpbmNsdWRlIDxXS1JldGFpblB0ci5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7Cit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitzdHJ1Y3QgX0V3a19FcnJvciB7CisgICAg
V0tSZXRhaW5QdHI8V0tFcnJvclJlZj4gd2tFcnJvcjsKKworICAgIFdLRWluYVNoYXJlZFN0cmlu
ZyB1cmw7CisgICAgV0tFaW5hU2hhcmVkU3RyaW5nIGRlc2NyaXB0aW9uOworCisgICAgX0V3a19F
cnJvcihXS0Vycm9yUmVmIGVycm9yUmVmKQorICAgICAgICA6IHdrRXJyb3IoZXJyb3JSZWYpCisg
ICAgICAgICwgdXJsKEFkb3B0V0ssIFdLRXJyb3JDb3B5RmFpbGluZ1VSTChlcnJvclJlZikpCisg
ICAgICAgICwgZGVzY3JpcHRpb24oQWRvcHRXSywgV0tFcnJvckNvcHlMb2NhbGl6ZWREZXNjcmlw
dGlvbihlcnJvclJlZikpCisgICAgeyB9CisKKyAgICB+X0V3a19FcnJvcigpCisgICAgeworICAg
IH0KK307CisKKyNkZWZpbmUgRVdLX0VSUk9SX1dLX0dFVF9PUl9SRVRVUk4oZXJyb3IsIHdrRXJy
b3JfLCAuLi4pICAgIFwKKyAgICBpZiAoIShlcnJvcikpIHsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBFSU5BX0xPR19DUklUKCJlcnJvciBpcyBO
VUxMLiIpOyAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBfX1ZBX0FSR1Nf
XzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYg
KCEoZXJyb3IpLT53a0Vycm9yKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICBFSU5BX0xPR19DUklUKCJlcnJvci0+d2tFcnJvciBpcyBOVUxMLiIpOyAgICAgICAg
ICAgIFwKKyAgICAgICAgcmV0dXJuIF9fVkFfQVJHU19fOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBXS0Vycm9yUmVmIHdrRXJyb3JfID0gKGVycm9y
KS0+d2tFcnJvci5nZXQoKQorCit2b2lkIGV3a19lcnJvcl9mcmVlKEV3a19FcnJvciogZXJyb3Ip
Cit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oZXJyb3IpOworCisgICAgZGVsZXRl
IGVycm9yOworfQorCitFd2tfRXJyb3JfVHlwZSBld2tfZXJyb3JfdHlwZV9nZXQoY29uc3QgRXdr
X0Vycm9yKiBlcnJvcikKK3sKKyAgICBFV0tfRVJST1JfV0tfR0VUX09SX1JFVFVSTihlcnJvciwg
d2tFcnJvciwgRVdLX0VSUk9SX1RZUEVfTk9ORSk7CisKKyAgICBXS1JldGFpblB0cjxXS1N0cmlu
Z1JlZj4gd2tEb21haW4oQWRvcHRXSywgV0tFcnJvckNvcHlEb21haW4od2tFcnJvcikpOworICAg
IFdURjo6U3RyaW5nIGVycm9yRG9tYWluID0gdG9XVEZTdHJpbmcod2tEb21haW4uZ2V0KCkpOwor
CisgICAgaWYgKGVycm9yRG9tYWluID09IGVycm9yRG9tYWluTmV0d29yaykKKyAgICAgICAgcmV0
dXJuIEVXS19FUlJPUl9UWVBFX05FVFdPUks7CisgICAgaWYgKGVycm9yRG9tYWluID09IGVycm9y
RG9tYWluUG9saWN5KQorICAgICAgICByZXR1cm4gRVdLX0VSUk9SX1RZUEVfUE9MSUNZOworICAg
IGlmIChlcnJvckRvbWFpbiA9PSBlcnJvckRvbWFpblBsdWdpbikKKyAgICAgICAgcmV0dXJuIEVX
S19FUlJPUl9UWVBFX1BMVUdJTjsKKyAgICBpZiAoZXJyb3JEb21haW4gPT0gZXJyb3JEb21haW5E
b3dubG9hZCkKKyAgICAgICAgcmV0dXJuIEVXS19FUlJPUl9UWVBFX0RPV05MT0FEOworICAgIGlm
IChlcnJvckRvbWFpbiA9PSBlcnJvckRvbWFpblByaW50KQorICAgICAgICByZXR1cm4gRVdLX0VS
Uk9SX1RZUEVfUFJJTlQ7CisgICAgcmV0dXJuIEVXS19FUlJPUl9UWVBFX0lOVEVSTkFMOworfQor
Citjb25zdCBjaGFyKiBld2tfZXJyb3JfdXJsX2dldChjb25zdCBFd2tfRXJyb3IqIGVycm9yKQor
eworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChlcnJvciwgMCk7CisKKyAgICBy
ZXR1cm4gZXJyb3ItPnVybDsKK30KKworaW50IGV3a19lcnJvcl9jb2RlX2dldChjb25zdCBFd2tf
RXJyb3IqIGVycm9yKQoreworICAgIEVXS19FUlJPUl9XS19HRVRfT1JfUkVUVVJOKGVycm9yLCB3
a0Vycm9yLCAwKTsKKworICAgIHJldHVybiBXS0Vycm9yR2V0RXJyb3JDb2RlKHdrRXJyb3IpOwor
fQorCitjb25zdCBjaGFyKiBld2tfZXJyb3JfZGVzY3JpcHRpb25fZ2V0KGNvbnN0IEV3a19FcnJv
ciogZXJyb3IpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGVycm9yLCAw
KTsKKworICAgIHJldHVybiBlcnJvci0+ZGVzY3JpcHRpb247Cit9CisKK0VpbmFfQm9vbCBld2tf
ZXJyb3JfY2FuY2VsbGF0aW9uX2dldChjb25zdCBFd2tfRXJyb3IqIGVycm9yKQoreworICAgIEVX
S19FUlJPUl9XS19HRVRfT1JfUkVUVVJOKGVycm9yLCB3a0Vycm9yLCBmYWxzZSk7CisKKyAgICBy
ZXR1cm4gdG9JbXBsKHdrRXJyb3IpLT5wbGF0Zm9ybUVycm9yKCkuaXNDYW5jZWxsYXRpb24oKTsK
K30KKworRXdrX0Vycm9yKiBld2tfZXJyb3JfbmV3KFdLRXJyb3JSZWYgZXJyb3IpCit7CisgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGVycm9yLCAwKTsKKworICAgIHJldHVybiBu
ZXcgRXdrX0Vycm9yKGVycm9yKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a19lcnJvci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX2Vycm9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2I3MDA5
NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a19lcnJvci5oCkBAIC0wLDAgKzEsMTI0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIElu
dGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvKioKKyAq
IEBmaWxlICAgIGV3a19lcnJvci5oCisgKiBAYnJpZWYgICBEZXNjcmliZXMgdGhlIFdlYiBFcnJv
ciBBUEkuCisgKi8KKworI2lmbmRlZiBld2tfZXJyb3JfaAorI2RlZmluZSBld2tfZXJyb3JfaAor
CisjaW5jbHVkZSA8RWluYS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgewor
I2VuZGlmCisKKy8qKiBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciBAYSBFd2tfRXJyb3IuICovCit0
eXBlZGVmIHN0cnVjdCBfRXdrX0Vycm9yIEV3a19FcnJvcjsKKworLy8vIENyZWF0ZXMgYSB0eXBl
IG5hbWUgZm9yIEV3a19FcnJvcl9UeXBlLgordHlwZWRlZiBlbnVtIHsKKyAgICBFV0tfRVJST1Jf
VFlQRV9OT05FLAorICAgIEVXS19FUlJPUl9UWVBFX0lOVEVSTkFMLAorICAgIEVXS19FUlJPUl9U
WVBFX05FVFdPUkssCisgICAgRVdLX0VSUk9SX1RZUEVfUE9MSUNZLAorICAgIEVXS19FUlJPUl9U
WVBFX1BMVUdJTiwKKyAgICBFV0tfRVJST1JfVFlQRV9ET1dOTE9BRCwKKyAgICBFV0tfRVJST1Jf
VFlQRV9QUklOVAorfSBFd2tfRXJyb3JfVHlwZTsKKworLyoqCisgKiBGcmVlcyB0aGUgZ2l2ZW4g
b2JqZWN0LgorICoKKyAqIEBwYXJhbSBlcnJvciB0aGUgZXJyb3Igb2JqZWN0IHRvIGZyZWUKKyAq
LworRUFQSSB2b2lkIGV3a19lcnJvcl9mcmVlKEV3a19FcnJvciAqZXJyb3IpOworCisvKioKKyAq
IFF1ZXJ5IHR5cGUgZm9yIHRoaXMgZXJyb3IuCisgKgorICogQHBhcmFtIGVycm9yIGVycm9yIG9i
amVjdCB0byBxdWVyeS4KKyAqCisgKiBAcmV0dXJuIHRoZSBlcnJvciB0eXBlLCB0aGF0IG1heSBi
ZSBAYyBOVUxMLiBUaGlzIHBvaW50ZXIgaXMKKyAqICAgICAgICAgZ3VhcmFudGVlZCB0byBiZSBl
aW5hX3N0cmluZ3NoYXJlLCBzbyB3aGVuZXZlciBwb3NzaWJsZQorICogICAgICAgICBzYXZlIHlv
dXJzZWxmIHNvbWUgY3B1IGN5Y2xlcyBhbmQgdXNlCisgKiAgICAgICAgIGVpbmFfc3RyaW5nc2hh
cmVfcmVmKCkgaW5zdGVhZCBvZiBlaW5hX3N0cmluZ3NoYXJlX2FkZCgpIG9yCisgKiAgICAgICAg
IHN0cmR1cCgpLgorICovCitFQVBJIEV3a19FcnJvcl9UeXBlIGV3a19lcnJvcl90eXBlX2dldChj
b25zdCBFd2tfRXJyb3IgKmVycm9yKTsKKworLyoqCisgKiBRdWVyeSBmYWlsaW5nIFVSTCBmb3Ig
dGhpcyBlcnJvci4KKyAqCisgKiBVUkwgdGhhdCBmYWlsZWQgbG9hZGluZy4KKyAqCisgKiBAcGFy
YW0gZXJyb3IgZXJyb3Igb2JqZWN0IHRvIHF1ZXJ5LgorICoKKyAqIEByZXR1cm4gdGhlIFVSTCBw
b2ludGVyLCB0aGF0IG1heSBiZSBAYyBOVUxMLiBUaGlzIHBvaW50ZXIgaXMKKyAqICAgICAgICAg
Z3VhcmFudGVlZCB0byBiZSBlaW5hX3N0cmluZ3NoYXJlLCBzbyB3aGVuZXZlciBwb3NzaWJsZQor
ICogICAgICAgICBzYXZlIHlvdXJzZWxmIHNvbWUgY3B1IGN5Y2xlcyBhbmQgdXNlCisgKiAgICAg
ICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVmKCkgaW5zdGVhZCBvZiBlaW5hX3N0cmluZ3NoYXJlX2Fk
ZCgpIG9yCisgKiAgICAgICAgIHN0cmR1cCgpLgorICovCitFQVBJIGNvbnN0IGNoYXIgKmV3a19l
cnJvcl91cmxfZ2V0KGNvbnN0IEV3a19FcnJvciAqZXJyb3IpOworCisvKioKKyAqIFF1ZXJ5IEhU
VFAgZXJyb3IgY29kZS4KKyAqCisgKiBAcGFyYW0gZXJyb3IgZXJyb3Igb2JqZWN0IHRvIHF1ZXJ5
LgorICoKKyAqIEByZXR1cm4gdGhlIEhUVFAgZXJyb3IgY29kZS4KKyAqLworRUFQSSBpbnQgZXdr
X2Vycm9yX2NvZGVfZ2V0KGNvbnN0IEV3a19FcnJvciAqZXJyb3IpOworCisvKioKKyAqIFF1ZXJ5
IGRlc2NyaXB0aW9uIGZvciB0aGlzIGVycm9yLgorICoKKyAqIEBwYXJhbSBlcnJvciBlcnJvciBv
YmplY3QgdG8gcXVlcnkuCisgKgorICogQHJldHVybiB0aGUgZGVzY3JpcHRpb24gcG9pbnRlciwg
dGhhdCBtYXkgYmUgQGMgTlVMTC4gVGhpcyBwb2ludGVyIGlzCisgKiAgICAgICAgIGd1YXJhbnRl
ZWQgdG8gYmUgZWluYV9zdHJpbmdzaGFyZSwgc28gd2hlbmV2ZXIgcG9zc2libGUKKyAqICAgICAg
ICAgc2F2ZSB5b3Vyc2VsZiBzb21lIGNwdSBjeWNsZXMgYW5kIHVzZQorICogICAgICAgICBlaW5h
X3N0cmluZ3NoYXJlX3JlZigpIGluc3RlYWQgb2YgZWluYV9zdHJpbmdzaGFyZV9hZGQoKSBvcgor
ICogICAgICAgICBzdHJkdXAoKS4KKyAqLworRUFQSSBjb25zdCBjaGFyICpld2tfZXJyb3JfZGVz
Y3JpcHRpb25fZ2V0KGNvbnN0IEV3a19FcnJvciAqZXJyb3IpOworCisvKioKKyAqIFF1ZXJ5IGlm
IGVycm9yIHNob3VsZCBiZSB0cmVhdGVkIGFzIGEgY2FuY2VsbGF0aW9uLgorICoKKyAqIEBwYXJh
bSBlcnJvciBlcnJvciBvYmplY3QgdG8gcXVlcnkuCisgKgorICogQHJldHVybiBAYyBFSU5BX1RS
VUUgaWYgdGhpcyBlcnJvciBzaG91bGQgYmUgdHJlYXRlZCBhcyBhIGNhbmNlbGxhdGlvbiwgQGMg
RUlOQV9GQUxTRSBvdGhlcndpc2UKKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX2Vycm9yX2NhbmNl
bGxhdGlvbl9nZXQoY29uc3QgRXdrX0Vycm9yICplcnJvcik7CisKKyNpZmRlZiBfX2NwbHVzcGx1
cworfQorI2VuZGlmCisKKyNlbmRpZiAvLyBld2tfZXJyb3JfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Vycm9yX3ByaXZhdGUuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19lcnJvcl9wcml2YXRlLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDMwNDFmOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19lcnJvcl9wcml2YXRlLmgKQEAgLTAsMCAr
MSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBld2tfZXJyb3JfcHJpdmF0ZV9o
CisjZGVmaW5lIGV3a19lcnJvcl9wcml2YXRlX2gKKworI2luY2x1ZGUgPFdLRXJyb3IuaD4KKwor
dHlwZWRlZiBzdHJ1Y3QgX0V3a19FcnJvciBFd2tfRXJyb3I7CisKK0V3a19FcnJvciogZXdrX2Vy
cm9yX25ldyhXS0Vycm9yUmVmIGVycm9yKTsKKworI2VuZGlmIC8vIGV3a19lcnJvcl9wcml2YXRl
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAppbmRl
eCA1MTc1Zjc5Li5hMDgwOTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3ZpZXcuY3BwCkBAIC05ODQsNyArOTg0LDcgQEAgdm9pZCBld2tfdmlld19yZXNvdXJj
ZV9sb2FkX3Jlc3BvbnNlKEV2YXNfT2JqZWN0KiBld2tWaWV3LCB1aW50NjRfdCByZXNvdXJjZUlk
ZW4KICAqCiAgKiBFbWl0cyBzaWduYWw6ICJyZXNvdXJjZSxyZXF1ZXN0LGZpbmlzaGVkIiB3aXRo
IHBvaW50ZXIgdG8gdGhlIHJlc291cmNlIGxvYWQgZXJyb3IuCiAgKi8KLXZvaWQgZXdrX3ZpZXdf
cmVzb3VyY2VfbG9hZF9mYWlsZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIHVpbnQ2NF90IHJlc291
cmNlSWRlbnRpZmllciwgRXdrX1dlYl9FcnJvciogZXJyb3IpCit2b2lkIGV3a192aWV3X3Jlc291
cmNlX2xvYWRfZmFpbGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCB1aW50NjRfdCByZXNvdXJjZUlk
ZW50aWZpZXIsIEV3a19FcnJvciogZXJyb3IpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JF
VFVSTihld2tWaWV3LCBzbWFydERhdGEpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVS
TihzbWFydERhdGEsIHByaXYpOwpAQCAtMTI4Myw3ICsxMjgzLDcgQEAgdm9pZCBld2tfdmlld19k
b3dubG9hZF9qb2JfcmVxdWVzdGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfRG93bmxvYWRf
Sm9iKiBkb3cKICAqCiAgKiBFbWl0cyBzaWduYWw6ICJkb3dubG9hZCxmYWlsZWQiIHdpdGggcG9p
bnRlciB0byBhIEV3a19Eb3dubG9hZF9Kb2JfRXJyb3IuCiAgKi8KLXZvaWQgZXdrX3ZpZXdfZG93
bmxvYWRfam9iX2ZhaWxlZChFdmFzX09iamVjdCogZXdrVmlldywgRXdrX0Rvd25sb2FkX0pvYiog
ZG93bmxvYWQsIEV3a19XZWJfRXJyb3IqIGVycm9yKQordm9pZCBld2tfdmlld19kb3dubG9hZF9q
b2JfZmFpbGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfRG93bmxvYWRfSm9iKiBkb3dubG9h
ZCwgRXdrX0Vycm9yKiBlcnJvcikKIHsKICAgICBFd2tfRG93bmxvYWRfSm9iX0Vycm9yIGRvd25s
b2FkRXJyb3IgPSB7IGRvd25sb2FkLCBlcnJvciB9OwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2Nh
bGxiYWNrX2NhbGwoZXdrVmlldywgImRvd25sb2FkLGZhaWxlZCIsICZkb3dubG9hZEVycm9yKTsK
QEAgLTEzOTQsMTEgKzEzOTQsMTEgQEAgdm9pZCBld2tfdmlld19mb3JtX3N1Ym1pc3Npb25fcmVx
dWVzdF9uZXcoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19Gb3JtX1N1Ym1pc3MKICAqIEBpbnRl
cm5hbAogICogUmVwb3J0cyBsb2FkIGZhaWxlZCB3aXRoIGVycm9yIGluZm9ybWF0aW9uLgogICoK
LSAqIEVtaXRzIHNpZ25hbDogImxvYWQsZXJyb3IiIHdpdGggcG9pbnRlciB0byBFd2tfV2ViX0Vy
cm9yLgorICogRW1pdHMgc2lnbmFsOiAibG9hZCxlcnJvciIgd2l0aCBwb2ludGVyIHRvIEV3a19F
cnJvci4KICAqLwotdm9pZCBld2tfdmlld19sb2FkX2Vycm9yKEV2YXNfT2JqZWN0KiBld2tWaWV3
LCBjb25zdCBFd2tfV2ViX0Vycm9yKiBlcnJvcikKK3ZvaWQgZXdrX3ZpZXdfbG9hZF9lcnJvcihF
dmFzX09iamVjdCogZXdrVmlldywgY29uc3QgRXdrX0Vycm9yKiBlcnJvcikKIHsKLSAgICBldmFz
X29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a1ZpZXcsICJsb2FkLGVycm9yIiwgY29uc3Rf
Y2FzdDxFd2tfV2ViX0Vycm9yKj4oZXJyb3IpKTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxs
YmFja19jYWxsKGV3a1ZpZXcsICJsb2FkLGVycm9yIiwgY29uc3RfY2FzdDxFd2tfRXJyb3IqPihl
cnJvcikpOwogfQogCiAvKioKQEAgLTE0MTcsMTEgKzE0MTcsMTEgQEAgdm9pZCBld2tfdmlld19s
b2FkX2ZpbmlzaGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3KQogICogQGludGVybmFsCiAgKiBSZXBv
cnRzIHZpZXcgcHJvdmlzaW9uYWwgbG9hZCBmYWlsZWQgd2l0aCBlcnJvciBpbmZvcm1hdGlvbi4K
ICAqCi0gKiBFbWl0cyBzaWduYWw6ICJsb2FkLHByb3Zpc2lvbmFsLGZhaWxlZCIgd2l0aCBwb2lu
dGVyIHRvIEV3a19XZWJfRXJyb3IuCisgKiBFbWl0cyBzaWduYWw6ICJsb2FkLHByb3Zpc2lvbmFs
LGZhaWxlZCIgd2l0aCBwb2ludGVyIHRvIEV3a19FcnJvci4KICAqLwotdm9pZCBld2tfdmlld19s
b2FkX3Byb3Zpc2lvbmFsX2ZhaWxlZChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgRXdrX1dl
Yl9FcnJvciogZXJyb3IpCit2b2lkIGV3a192aWV3X2xvYWRfcHJvdmlzaW9uYWxfZmFpbGVkKEV2
YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBFd2tfRXJyb3IqIGVycm9yKQogewotICAgIGV2YXNf
b2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmlldywgImxvYWQscHJvdmlzaW9uYWwsZmFp
bGVkIiwgY29uc3RfY2FzdDxFd2tfV2ViX0Vycm9yKj4oZXJyb3IpKTsKKyAgICBldmFzX29iamVj
dF9zbWFydF9jYWxsYmFja19jYWxsKGV3a1ZpZXcsICJsb2FkLHByb3Zpc2lvbmFsLGZhaWxlZCIs
IGNvbnN0X2Nhc3Q8RXdrX0Vycm9yKj4oZXJyb3IpKTsKIH0KIAogLyoqCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaAppbmRleCBjY2ZhNjM2Li5kNDIxZDMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKQEAgLTQ0LDEw
ICs0NCwxMCBAQAogICogICBld2tfZm9ybV9zdWJtaXNzaW9uX3JlcXVlc3Rfc3VibWl0KCkgd2ls
bCBiZSBjYWxsZWQgYXV0b21hdGljYWxseS4KICAqIC0gImludGVudCxyZXF1ZXN0LG5ldyIsIEV3
a19JbnRlbnQqOiByZXBvcnRzIG5ldyBXZWIgaW50ZW50IHJlcXVlc3QuCiAgKiAtICJpbnRlbnQs
c2VydmljZSxyZWdpc3RlciIsIEV3a19JbnRlbnRfU2VydmljZSo6IHJlcG9ydHMgbmV3IFdlYiBp
bnRlbnQgc2VydmljZSByZWdpc3RyYXRpb24uCi0gKiAtICJsb2FkLGVycm9yIiwgY29uc3QgRXdr
X1dlYl9FcnJvcio6IHJlcG9ydHMgbWFpbiBmcmFtZSBsb2FkIGZhaWxlZC4KKyAqIC0gImxvYWQs
ZXJyb3IiLCBjb25zdCBFd2tfRXJyb3IqOiByZXBvcnRzIG1haW4gZnJhbWUgbG9hZCBmYWlsZWQu
CiAgKiAtICJsb2FkLGZpbmlzaGVkIiwgdm9pZDogcmVwb3J0cyBsb2FkIGZpbmlzaGVkLgogICog
LSAibG9hZCxwcm9ncmVzcyIsIGRvdWJsZSo6IGxvYWQgcHJvZ3Jlc3MgaGFzIGNoYW5nZWQgKHZh
bHVlIGZyb20gMC4wIHRvIDEuMCkuCi0gKiAtICJsb2FkLHByb3Zpc2lvbmFsLGZhaWxlZCIsIGNv
bnN0IEV3a19XZWJfRXJyb3IqOiB2aWV3IHByb3Zpc2lvbmFsIGxvYWQgZmFpbGVkLgorICogLSAi
bG9hZCxwcm92aXNpb25hbCxmYWlsZWQiLCBjb25zdCBFd2tfRXJyb3IqOiB2aWV3IHByb3Zpc2lv
bmFsIGxvYWQgZmFpbGVkLgogICogLSAibG9hZCxwcm92aXNpb25hbCxyZWRpcmVjdCIsIHZvaWQ6
IHZpZXcgcmVjZWl2ZWQgcmVkaXJlY3QgZm9yIHByb3Zpc2lvbmFsIGxvYWQuCiAgKiAtICJsb2Fk
LHByb3Zpc2lvbmFsLHN0YXJ0ZWQiLCB2b2lkOiB2aWV3IHN0YXJ0ZWQgcHJvdmlzaW9uYWwgbG9h
ZC4KICAqIC0gInBvbGljeSxkZWNpc2lvbixuYXZpZ2F0aW9uIiwgRXdrX05hdmlnYXRpb25fUG9s
aWN5X0RlY2lzaW9uKjogYSBuYXZpZ2F0aW9uIHBvbGljeSBkZWNpc2lvbiBzaG91bGQgYmUgdGFr
ZW4uCkBAIC03MywxMiArNzMsMTIgQEAKICNpbmNsdWRlICJld2tfYmFja19mb3J3YXJkX2xpc3Qu
aCIKICNpbmNsdWRlICJld2tfY29udGV4dC5oIgogI2luY2x1ZGUgImV3a19kb3dubG9hZF9qb2Iu
aCIKKyNpbmNsdWRlICJld2tfZXJyb3IuaCIKICNpbmNsdWRlICJld2tfaW50ZW50LmgiCiAjaW5j
bHVkZSAiZXdrX3NldHRpbmdzLmgiCiAjaW5jbHVkZSAiZXdrX3RvdWNoLmgiCiAjaW5jbHVkZSAi
ZXdrX3VybF9yZXF1ZXN0LmgiCiAjaW5jbHVkZSAiZXdrX3VybF9yZXNwb25zZS5oIgotI2luY2x1
ZGUgImV3a193ZWJfZXJyb3IuaCIKICNpbmNsdWRlICJld2tfd2ViX3Jlc291cmNlLmgiCiAjaW5j
bHVkZSA8RXZhcy5oPgogCkBAIC0yMzAsNyArMjMwLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX0V3a19X
ZWJfUmVzb3VyY2VfTG9hZF9FcnJvciBFd2tfV2ViX1Jlc291cmNlX0xvYWRfRXJyb3I7CiAgKi8K
IHN0cnVjdCBfRXdrX1dlYl9SZXNvdXJjZV9Mb2FkX0Vycm9yIHsKICAgICBFd2tfV2ViX1Jlc291
cmNlICpyZXNvdXJjZTsgLyoqPCByZXNvdXJjZSB0aGF0IGZhaWxlZCBsb2FkaW5nICovCi0gICAg
RXdrX1dlYl9FcnJvciAqZXJyb3I7IC8qKjwgbG9hZCBlcnJvciAqLworICAgIEV3a19FcnJvciAq
ZXJyb3I7IC8qKjwgbG9hZCBlcnJvciAqLwogfTsKIAogLy8vIENyZWF0ZXMgYSB0eXBlIG5hbWUg
Zm9yIF9Fd2tfRG93bmxvYWRfSm9iX0Vycm9yLgpAQCAtMjQxLDcgKzI0MSw3IEBAIHR5cGVkZWYg
c3RydWN0IF9Fd2tfRG93bmxvYWRfSm9iX0Vycm9yIEV3a19Eb3dubG9hZF9Kb2JfRXJyb3I7CiAg
Ki8KIHN0cnVjdCBfRXdrX0Rvd25sb2FkX0pvYl9FcnJvciB7CiAgICAgRXdrX0Rvd25sb2FkX0pv
YiAqZG93bmxvYWRfam9iOyAvKio8IGRvd25sb2FkIHRoYXQgZmFpbGVkICovCi0gICAgRXdrX1dl
Yl9FcnJvciAqZXJyb3I7IC8qKjwgZG93bmxvYWQgZXJyb3IgKi8KKyAgICBFd2tfRXJyb3IgKmVy
cm9yOyAvKio8IGRvd25sb2FkIGVycm9yICovCiB9OwogCiAvKioKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X2xvYWRlcl9jbGllbnQuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfbG9hZGVyX2NsaWVudC5j
cHAKaW5kZXggOTk3Y2EzNS4uMTg2N2I1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfbG9hZGVyX2NsaWVudC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfbG9hZGVyX2NsaWVudC5jcHAKQEAgLTI4
LDE0ICsyOCwxNCBAQAogCiAjaW5jbHVkZSAiV0tGcmFtZS5oIgogI2luY2x1ZGUgImV3a19iYWNr
X2ZvcndhcmRfbGlzdF9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX2Vycm9yLmgiCisjaW5jbHVk
ZSAiZXdrX2Vycm9yX3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfaW50ZW50LmgiCiAjaW5jbHVk
ZSAiZXdrX2ludGVudF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX2ludGVudF9zZXJ2aWNlLmgi
CiAjaW5jbHVkZSAiZXdrX2ludGVudF9zZXJ2aWNlX3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tf
dmlld19sb2FkZXJfY2xpZW50X3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfdmlld19wcml2YXRl
LmgiCi0jaW5jbHVkZSAiZXdrX3dlYl9lcnJvci5oIgotI2luY2x1ZGUgImV3a193ZWJfZXJyb3Jf
cHJpdmF0ZS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNw
YWNlIFdlYktpdDsKQEAgLTkwLDEwICs5MCwxMCBAQCBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZFdp
dGhFcnJvckZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiBmcmFtZSwgV0tFcnJvclJlZgog
ICAgICAgICByZXR1cm47CiAKICAgICBFdmFzX09iamVjdCogZXdrVmlldyA9IHN0YXRpY19jYXN0
PEV2YXNfT2JqZWN0Kj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOwotICAgIEV3a19X
ZWJfRXJyb3IqIGV3a0Vycm9yID0gZXdrX3dlYl9lcnJvcl9uZXcoZXJyb3IpOworICAgIEV3a19F
cnJvciogZXdrRXJyb3IgPSBld2tfZXJyb3JfbmV3KGVycm9yKTsKICAgICBld2tfdmlld19sb2Fk
X2Vycm9yKGV3a1ZpZXcsIGV3a0Vycm9yKTsKICAgICBld2tfdmlld19sb2FkX2ZpbmlzaGVkKGV3
a1ZpZXcpOwotICAgIGV3a193ZWJfZXJyb3JfZnJlZShld2tFcnJvcik7CisgICAgZXdrX2Vycm9y
X2ZyZWUoZXdrRXJyb3IpOwogfQogCiBzdGF0aWMgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmIC8qdXNlckRh
dGEqLywgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKQEAgLTEyMCw5ICsxMjAsOSBAQCBzdGF0aWMg
dm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUoV0tQYWdlUmVmLCBX
S0ZyYW1lUmVmIGZyYW1lLAogICAgICAgICByZXR1cm47CiAKICAgICBFdmFzX09iamVjdCogZXdr
VmlldyA9IHN0YXRpY19jYXN0PEV2YXNfT2JqZWN0Kj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50
SW5mbykpOwotICAgIEV3a19XZWJfRXJyb3IqIGV3a0Vycm9yID0gZXdrX3dlYl9lcnJvcl9uZXco
ZXJyb3IpOworICAgIEV3a19FcnJvciogZXdrRXJyb3IgPSBld2tfZXJyb3JfbmV3KGVycm9yKTsK
ICAgICBld2tfdmlld19sb2FkX3Byb3Zpc2lvbmFsX2ZhaWxlZChld2tWaWV3LCBld2tFcnJvcik7
Ci0gICAgZXdrX3dlYl9lcnJvcl9mcmVlKGV3a0Vycm9yKTsKKyAgICBld2tfZXJyb3JfZnJlZShl
d2tFcnJvcik7CiB9CiAKIHN0YXRpYyB2b2lkIGRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdChXS1Bh
Z2VSZWYsIFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZiBhZGRlZEl0ZW0sIFdLQXJyYXlSZWYgcmVt
b3ZlZEl0ZW1zLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oCmluZGV4IDRjYmEyMmQuLjlh
ZTJjNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192
aWV3X3ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
dmlld19wcml2YXRlLmgKQEAgLTQzLDcgKzQzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX0V3a19Eb3du
bG9hZF9Kb2IgRXdrX0Rvd25sb2FkX0pvYjsKIHR5cGVkZWYgc3RydWN0IF9Fd2tfRm9ybV9TdWJt
aXNzaW9uX1JlcXVlc3QgRXdrX0Zvcm1fU3VibWlzc2lvbl9SZXF1ZXN0OwogdHlwZWRlZiBzdHJ1
Y3QgX0V3a19VcmxfUmVxdWVzdCBFd2tfVXJsX1JlcXVlc3Q7CiB0eXBlZGVmIHN0cnVjdCBfRXdr
X1VybF9SZXNwb25zZSBFd2tfVXJsX1Jlc3BvbnNlOwotdHlwZWRlZiBzdHJ1Y3QgX0V3a19XZWJf
RXJyb3IgRXdrX1dlYl9FcnJvcjsKK3R5cGVkZWYgc3RydWN0IF9Fd2tfRXJyb3IgRXdrX0Vycm9y
OwogdHlwZWRlZiBzdHJ1Y3QgX0V3a19XZWJfUmVzb3VyY2UgRXdrX1dlYl9SZXNvdXJjZTsKIHR5
cGVkZWYgc3RydWN0IF9Fd2tfTmF2aWdhdGlvbl9Qb2xpY3lfRGVjaXNpb24gRXdrX05hdmlnYXRp
b25fUG9saWN5X0RlY2lzaW9uOwogI2lmIEVOQUJMRShXRUJfSU5URU5UUykKQEAgLTU2LDcgKzU2
LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX0V3a19JbnRlbnRfU2VydmljZSBFd2tfSW50ZW50X1NlcnZp
Y2U7CiB2b2lkIGV3a192aWV3X2N1cnNvcl9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0
IFdlYkNvcmU6OkN1cnNvciYgY3Vyc29yKTsKIHZvaWQgZXdrX3ZpZXdfZGlzcGxheShFdmFzX09i
amVjdCogZXdrVmlldywgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCk7CiB2b2lkIGV3a192
aWV3X2Rvd25sb2FkX2pvYl9jYW5jZWxsZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19Eb3du
bG9hZF9Kb2IqKTsKLXZvaWQgZXdrX3ZpZXdfZG93bmxvYWRfam9iX2ZhaWxlZChFdmFzX09iamVj
dCogZXdrVmlldywgRXdrX0Rvd25sb2FkX0pvYiosIEV3a19XZWJfRXJyb3IqKTsKK3ZvaWQgZXdr
X3ZpZXdfZG93bmxvYWRfam9iX2ZhaWxlZChFdmFzX09iamVjdCogZXdrVmlldywgRXdrX0Rvd25s
b2FkX0pvYiosIEV3a19FcnJvciopOwogdm9pZCBld2tfdmlld19kb3dubG9hZF9qb2JfZmluaXNo
ZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19Eb3dubG9hZF9Kb2IqKTsKIHZvaWQgZXdrX3Zp
ZXdfZG93bmxvYWRfam9iX3JlcXVlc3RlZChFdmFzX09iamVjdCogZXdrVmlldywgRXdrX0Rvd25s
b2FkX0pvYiopOwogdm9pZCBld2tfdmlld19mb3JtX3N1Ym1pc3Npb25fcmVxdWVzdF9uZXcoRXZh
c19PYmplY3QqIGV3a1ZpZXcsIEV3a19Gb3JtX1N1Ym1pc3Npb25fUmVxdWVzdCopOwpAQCAtNjUs
MTAgKzY1LDEwIEBAIHZvaWQgZXdrX3ZpZXdfZnVsbF9zY3JlZW5fZW50ZXIoRXZhc19PYmplY3Qq
IGV3a1ZpZXcpOwogdm9pZCBld2tfdmlld19mdWxsX3NjcmVlbl9leGl0KEV2YXNfT2JqZWN0KiBl
d2tWaWV3KTsKICNlbmRpZgogdm9pZCBld2tfdmlld19pbWFnZV9kYXRhX3NldChFdmFzX09iamVj
dCogZXdrVmlldywgdm9pZCogaW1hZ2VEYXRhLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXpl
KTsKLXZvaWQgZXdrX3ZpZXdfbG9hZF9lcnJvcihFdmFzX09iamVjdCogZXdrVmlldywgY29uc3Qg
RXdrX1dlYl9FcnJvciogZXJyb3IpOwordm9pZCBld2tfdmlld19sb2FkX2Vycm9yKEV2YXNfT2Jq
ZWN0KiBld2tWaWV3LCBjb25zdCBFd2tfRXJyb3IqIGVycm9yKTsKIHZvaWQgZXdrX3ZpZXdfbG9h
ZF9maW5pc2hlZChFdmFzX09iamVjdCogZXdrVmlldyk7CiB2b2lkIGV3a192aWV3X2xvYWRfcHJv
Z3Jlc3NfY2hhbmdlZChFdmFzX09iamVjdCogZXdrVmlldywgZG91YmxlIHByb2dyZXNzKTsKLXZv
aWQgZXdrX3ZpZXdfbG9hZF9wcm92aXNpb25hbF9mYWlsZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcs
IGNvbnN0IEV3a19XZWJfRXJyb3IqIGVycm9yKTsKK3ZvaWQgZXdrX3ZpZXdfbG9hZF9wcm92aXNp
b25hbF9mYWlsZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IEV3a19FcnJvciogZXJyb3Ip
Owogdm9pZCBld2tfdmlld19sb2FkX3Byb3Zpc2lvbmFsX3JlZGlyZWN0KEV2YXNfT2JqZWN0KiBl
d2tWaWV3KTsKIHZvaWQgZXdrX3ZpZXdfbG9hZF9wcm92aXNpb25hbF9zdGFydGVkKEV2YXNfT2Jq
ZWN0KiBld2tWaWV3KTsKIHZvaWQgZXdrX3ZpZXdfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24o
RXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19OYXZpZ2F0aW9uX1BvbGljeV9EZWNpc2lvbiogZGVj
aXNpb24pOwpAQCAtNzYsNyArNzYsNyBAQCB2b2lkIGV3a192aWV3X25ld193aW5kb3dfcG9saWN5
X2RlY2lzaW9uKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfTmF2aWdhdGlvbl9Qbwogdm9pZCBl
d2tfdmlld19wYWdlX2Nsb3NlKEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKIFdLUGFnZVJlZiBld2tf
dmlld19wYWdlX2NyZWF0ZShFdmFzX09iamVjdCogZXdrVmlldyk7CiB2b2lkIGV3a192aWV3X3Rp
dGxlX2NoYW5nZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIqIHRpdGxlKTsKLXZv
aWQgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9mYWlsZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIHVp
bnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwgRXdrX1dlYl9FcnJvciogZXJyb3IpOwordm9pZCBl
d2tfdmlld19yZXNvdXJjZV9sb2FkX2ZhaWxlZChFdmFzX09iamVjdCogZXdrVmlldywgdWludDY0
X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBFd2tfRXJyb3IqIGVycm9yKTsKIHZvaWQgZXdrX3ZpZXdf
cmVzb3VyY2VfbG9hZF9maW5pc2hlZChFdmFzX09iamVjdCogZXdrVmlldywgdWludDY0X3QgcmVz
b3VyY2VJZGVudGlmaWVyKTsKIHZvaWQgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9pbml0aWF0ZWQo
RXZhc19PYmplY3QqIGV3a1ZpZXcsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwgRXdrX1dl
Yl9SZXNvdXJjZSogcmVzb3VyY2UsIEV3a19VcmxfUmVxdWVzdCogcmVxdWVzdCk7CiB2b2lkIGV3
a192aWV3X3Jlc291cmNlX2xvYWRfcmVzcG9uc2UoRXZhc19PYmplY3QqIGV3a1ZpZXcsIHVpbnQ2
NF90IHJlc291cmNlSWRlbnRpZmllciwgRXdrX1VybF9SZXNwb25zZSogcmVzcG9uc2UpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcmVzb3Vy
Y2VfbG9hZF9jbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3ZpZXdfcmVzb3VyY2VfbG9hZF9jbGllbnQuY3BwCmluZGV4IDExM2UxNzguLmY5NzgzOGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3Jlc291
cmNlX2xvYWRfY2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfdmlld19yZXNvdXJjZV9sb2FkX2NsaWVudC5jcHAKQEAgLTMyLDE0ICszMiwxNCBAQAog
I2luY2x1ZGUgIldLVVJMLmgiCiAjaW5jbHVkZSAiV0tVUkxSZXF1ZXN0LmgiCiAjaW5jbHVkZSAi
V0tVUkxSZXNwb25zZS5oIgorI2luY2x1ZGUgImV3a19lcnJvci5oIgorI2luY2x1ZGUgImV3a19l
cnJvcl9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3VybF9yZXF1ZXN0LmgiCiAjaW5jbHVkZSAi
ZXdrX3VybF9yZXF1ZXN0X3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfdXJsX3Jlc3BvbnNlLmgi
CiAjaW5jbHVkZSAiZXdrX3VybF9yZXNwb25zZV9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3Zp
ZXdfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a192aWV3X3Jlc291cmNlX2xvYWRfY2xpZW50X3By
aXZhdGUuaCIKLSNpbmNsdWRlICJld2tfd2ViX2Vycm9yLmgiCi0jaW5jbHVkZSAiZXdrX3dlYl9l
cnJvcl9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3dlYl9yZXNvdXJjZS5oIgogI2luY2x1ZGUg
ImV3a193ZWJfcmVzb3VyY2VfcHJpdmF0ZS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KQEAgLTg4LDEwICs4OCwxMCBAQCBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkRm9yUmVzb3Vy
Y2UoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCB1aW50NjRfdCByZXNvdXJjZUlkZQogCiBzdGF0aWMg
dm9pZCBkaWRGYWlsTG9hZEZvclJlc291cmNlKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgdWludDY0
X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBXS0Vycm9yUmVmIHdrRXJyb3IsIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pCiB7Ci0gICAgRXdrX1dlYl9FcnJvciogZXdrRXJyb3IgPSBld2tfd2ViX2Vycm9y
X25ldyh3a0Vycm9yKTsKKyAgICBFd2tfRXJyb3IqIGV3a0Vycm9yID0gZXdrX2Vycm9yX25ldyh3
a0Vycm9yKTsKICAgICBld2tfdmlld19yZXNvdXJjZV9sb2FkX2ZhaWxlZCh0b0V3a1ZpZXcoY2xp
ZW50SW5mbyksIHJlc291cmNlSWRlbnRpZmllciwgZXdrRXJyb3IpOwogICAgIGV3a192aWV3X3Jl
c291cmNlX2xvYWRfZmluaXNoZWQodG9Fd2tWaWV3KGNsaWVudEluZm8pLCByZXNvdXJjZUlkZW50
aWZpZXIpOwotICAgIGV3a193ZWJfZXJyb3JfZnJlZShld2tFcnJvcik7CisgICAgZXdrX2Vycm9y
X2ZyZWUoZXdrRXJyb3IpOwogfQogCiB2b2lkIGV3a192aWV3X3Jlc291cmNlX2xvYWRfY2xpZW50
X2F0dGFjaChXS1BhZ2VSZWYgcGFnZVJlZiwgRXZhc19PYmplY3QqIGV3a1ZpZXcpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfd2ViX2Vycm9yLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a193ZWJfZXJyb3IuY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MDM4MGJkLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a193ZWJfZXJyb3IuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsMTMwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9y
YXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJld2tfd2ViX2Vycm9yLmgiCi0KLSNpbmNsdWRlICJFcnJvcnNFZmwuaCIK
LSNpbmNsdWRlICJXS0VpbmFTaGFyZWRTdHJpbmcuaCIKLSNpbmNsdWRlICJXS1N0cmluZy5oIgot
I2luY2x1ZGUgIldLVVJMLmgiCi0jaW5jbHVkZSAiZXdrX3dlYl9lcnJvcl9wcml2YXRlLmgiCi0j
aW5jbHVkZSA8V0tBUElDYXN0Lmg+Ci0jaW5jbHVkZSA8V0tFcnJvci5oPgotI2luY2x1ZGUgPFdL
UmV0YWluUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotCi11c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KLXN0cnVjdCBfRXdrX1dl
Yl9FcnJvciB7Ci0gICAgV0tSZXRhaW5QdHI8V0tFcnJvclJlZj4gd2tFcnJvcjsKLQotICAgIFdL
RWluYVNoYXJlZFN0cmluZyB1cmw7Ci0gICAgV0tFaW5hU2hhcmVkU3RyaW5nIGRlc2NyaXB0aW9u
OwotCi0gICAgX0V3a19XZWJfRXJyb3IoV0tFcnJvclJlZiBlcnJvclJlZikKLSAgICAgICAgOiB3
a0Vycm9yKGVycm9yUmVmKQotICAgICAgICAsIHVybChBZG9wdFdLLCBXS0Vycm9yQ29weUZhaWxp
bmdVUkwoZXJyb3JSZWYpKQotICAgICAgICAsIGRlc2NyaXB0aW9uKEFkb3B0V0ssIFdLRXJyb3JD
b3B5TG9jYWxpemVkRGVzY3JpcHRpb24oZXJyb3JSZWYpKQotICAgIHsgfQotCi0gICAgfl9Fd2tf
V2ViX0Vycm9yKCkKLSAgICB7Ci0gICAgfQotfTsKLQotI2RlZmluZSBFV0tfV0VCX0VSUk9SX1dL
X0dFVF9PUl9SRVRVUk4oZXJyb3IsIHdrRXJyb3JfLCAuLi4pICAgIFwKLSAgICBpZiAoIShlcnJv
cikpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAg
ICBFSU5BX0xPR19DUklUKCJlcnJvciBpcyBOVUxMLiIpOyAgICAgICAgICAgICAgICAgICAgICBc
Ci0gICAgICAgIHJldHVybiBfX1ZBX0FSR1NfXzsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCi0gICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCi0gICAgaWYgKCEoZXJyb3IpLT53a0Vycm9yKSB7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBFSU5BX0xPR19DUklUKCJlcnJvci0+
d2tFcnJvciBpcyBOVUxMLiIpOyAgICAgICAgICAgIFwKLSAgICAgICAgcmV0dXJuIF9fVkFfQVJH
U19fOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBX
S0Vycm9yUmVmIHdrRXJyb3JfID0gKGVycm9yKS0+d2tFcnJvci5nZXQoKQotCi12b2lkIGV3a193
ZWJfZXJyb3JfZnJlZShFd2tfV2ViX0Vycm9yKiBlcnJvcikKLXsKLSAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTihlcnJvcik7Ci0KLSAgICBkZWxldGUgZXJyb3I7Ci19Ci0KLUV3a19XZWJf
RXJyb3JfVHlwZSBld2tfd2ViX2Vycm9yX3R5cGVfZ2V0KGNvbnN0IEV3a19XZWJfRXJyb3IqIGVy
cm9yKQotewotICAgIEVXS19XRUJfRVJST1JfV0tfR0VUX09SX1JFVFVSTihlcnJvciwgd2tFcnJv
ciwgRVdLX1dFQl9FUlJPUl9UWVBFX05PTkUpOwotCi0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdS
ZWY+IHdrRG9tYWluKEFkb3B0V0ssIFdLRXJyb3JDb3B5RG9tYWluKHdrRXJyb3IpKTsKLSAgICBX
VEY6OlN0cmluZyBlcnJvckRvbWFpbiA9IHRvV1RGU3RyaW5nKHdrRG9tYWluLmdldCgpKTsKLQot
ICAgIGlmIChlcnJvckRvbWFpbiA9PSBlcnJvckRvbWFpbk5ldHdvcmspCi0gICAgICAgIHJldHVy
biBFV0tfV0VCX0VSUk9SX1RZUEVfTkVUV09SSzsKLSAgICBpZiAoZXJyb3JEb21haW4gPT0gZXJy
b3JEb21haW5Qb2xpY3kpCi0gICAgICAgIHJldHVybiBFV0tfV0VCX0VSUk9SX1RZUEVfUE9MSUNZ
OwotICAgIGlmIChlcnJvckRvbWFpbiA9PSBlcnJvckRvbWFpblBsdWdpbikKLSAgICAgICAgcmV0
dXJuIEVXS19XRUJfRVJST1JfVFlQRV9QTFVHSU47Ci0gICAgaWYgKGVycm9yRG9tYWluID09IGVy
cm9yRG9tYWluRG93bmxvYWQpCi0gICAgICAgIHJldHVybiBFV0tfV0VCX0VSUk9SX1RZUEVfRE9X
TkxPQUQ7Ci0gICAgaWYgKGVycm9yRG9tYWluID09IGVycm9yRG9tYWluUHJpbnQpCi0gICAgICAg
IHJldHVybiBFV0tfV0VCX0VSUk9SX1RZUEVfUFJJTlQ7Ci0gICAgcmV0dXJuIEVXS19XRUJfRVJS
T1JfVFlQRV9JTlRFUk5BTDsKLX0KLQotY29uc3QgY2hhciogZXdrX3dlYl9lcnJvcl91cmxfZ2V0
KGNvbnN0IEV3a19XZWJfRXJyb3IqIGVycm9yKQotewotICAgIEVJTkFfU0FGRVRZX09OX05VTExf
UkVUVVJOX1ZBTChlcnJvciwgMCk7Ci0KLSAgICByZXR1cm4gZXJyb3ItPnVybDsKLX0KLQotaW50
IGV3a193ZWJfZXJyb3JfY29kZV9nZXQoY29uc3QgRXdrX1dlYl9FcnJvciogZXJyb3IpCi17Ci0g
ICAgRVdLX1dFQl9FUlJPUl9XS19HRVRfT1JfUkVUVVJOKGVycm9yLCB3a0Vycm9yLCAwKTsKLQot
ICAgIHJldHVybiBXS0Vycm9yR2V0RXJyb3JDb2RlKHdrRXJyb3IpOwotfQotCi1jb25zdCBjaGFy
KiBld2tfd2ViX2Vycm9yX2Rlc2NyaXB0aW9uX2dldChjb25zdCBFd2tfV2ViX0Vycm9yKiBlcnJv
cikKLXsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoZXJyb3IsIDApOwotCi0g
ICAgcmV0dXJuIGVycm9yLT5kZXNjcmlwdGlvbjsKLX0KLQotRWluYV9Cb29sIGV3a193ZWJfZXJy
b3JfY2FuY2VsbGF0aW9uX2dldChjb25zdCBFd2tfV2ViX0Vycm9yKiBlcnJvcikKLXsKLSAgICBF
V0tfV0VCX0VSUk9SX1dLX0dFVF9PUl9SRVRVUk4oZXJyb3IsIHdrRXJyb3IsIGZhbHNlKTsKLQot
ICAgIHJldHVybiB0b0ltcGwod2tFcnJvciktPnBsYXRmb3JtRXJyb3IoKS5pc0NhbmNlbGxhdGlv
bigpOwotfQotCi1Fd2tfV2ViX0Vycm9yKiBld2tfd2ViX2Vycm9yX25ldyhXS0Vycm9yUmVmIGVy
cm9yKQotewotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChlcnJvciwgMCk7Ci0K
LSAgICByZXR1cm4gbmV3IEV3a19XZWJfRXJyb3IoZXJyb3IpOwotfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3dlYl9lcnJvci5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3dlYl9lcnJvci5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA0YmEwYzdhLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a193ZWJfZXJyb3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDEyNCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0vKioKLSAqIEBmaWxlICAgIGV3a193ZWJfZXJyb3Iu
aAotICogQGJyaWVmICAgRGVzY3JpYmVzIHRoZSBXZWIgRXJyb3IgQVBJLgotICovCi0KLSNpZm5k
ZWYgZXdrX3dlYl9lcnJvcl9oCi0jZGVmaW5lIGV3a193ZWJfZXJyb3JfaAotCi0jaW5jbHVkZSA8
RWluYS5oPgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KLS8q
KiBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciBAYSBFd2tfV2ViX0Vycm9yLiAqLwotdHlwZWRlZiBz
dHJ1Y3QgX0V3a19XZWJfRXJyb3IgRXdrX1dlYl9FcnJvcjsKLQotLy8vIENyZWF0ZXMgYSB0eXBl
IG5hbWUgZm9yIEV3a19XZWJfRXJyb3JfVHlwZS4KLXR5cGVkZWYgZW51bSB7Ci0gICAgRVdLX1dF
Ql9FUlJPUl9UWVBFX05PTkUsCi0gICAgRVdLX1dFQl9FUlJPUl9UWVBFX0lOVEVSTkFMLAotICAg
IEVXS19XRUJfRVJST1JfVFlQRV9ORVRXT1JLLAotICAgIEVXS19XRUJfRVJST1JfVFlQRV9QT0xJ
Q1ksCi0gICAgRVdLX1dFQl9FUlJPUl9UWVBFX1BMVUdJTiwKLSAgICBFV0tfV0VCX0VSUk9SX1RZ
UEVfRE9XTkxPQUQsCi0gICAgRVdLX1dFQl9FUlJPUl9UWVBFX1BSSU5UCi19IEV3a19XZWJfRXJy
b3JfVHlwZTsKLQotLyoqCi0gKiBGcmVlcyB0aGUgZ2l2ZW4gb2JqZWN0LgotICoKLSAqIEBwYXJh
bSBlcnJvciB0aGUgZXJyb3Igb2JqZWN0IHRvIGZyZWUKLSAqLwotRUFQSSB2b2lkIGV3a193ZWJf
ZXJyb3JfZnJlZShFd2tfV2ViX0Vycm9yICplcnJvcik7Ci0KLS8qKgotICogUXVlcnkgdHlwZSBm
b3IgdGhpcyBlcnJvci4KLSAqCi0gKiBAcGFyYW0gZXJyb3IgZXJyb3Igb2JqZWN0IHRvIHF1ZXJ5
LgotICoKLSAqIEByZXR1cm4gdGhlIGVycm9yIHR5cGUsIHRoYXQgbWF5IGJlIEBjIE5VTEwuIFRo
aXMgcG9pbnRlciBpcwotICogICAgICAgICBndWFyYW50ZWVkIHRvIGJlIGVpbmFfc3RyaW5nc2hh
cmUsIHNvIHdoZW5ldmVyIHBvc3NpYmxlCi0gKiAgICAgICAgIHNhdmUgeW91cnNlbGYgc29tZSBj
cHUgY3ljbGVzIGFuZCB1c2UKLSAqICAgICAgICAgZWluYV9zdHJpbmdzaGFyZV9yZWYoKSBpbnN0
ZWFkIG9mIGVpbmFfc3RyaW5nc2hhcmVfYWRkKCkgb3IKLSAqICAgICAgICAgc3RyZHVwKCkuCi0g
Ki8KLUVBUEkgRXdrX1dlYl9FcnJvcl9UeXBlIGV3a193ZWJfZXJyb3JfdHlwZV9nZXQoY29uc3Qg
RXdrX1dlYl9FcnJvciAqZXJyb3IpOwotCi0vKioKLSAqIFF1ZXJ5IGZhaWxpbmcgVVJMIGZvciB0
aGlzIGVycm9yLgotICoKLSAqIFVSTCB0aGF0IGZhaWxlZCBsb2FkaW5nLgotICoKLSAqIEBwYXJh
bSBlcnJvciBlcnJvciBvYmplY3QgdG8gcXVlcnkuCi0gKgotICogQHJldHVybiB0aGUgVVJMIHBv
aW50ZXIsIHRoYXQgbWF5IGJlIEBjIE5VTEwuIFRoaXMgcG9pbnRlciBpcwotICogICAgICAgICBn
dWFyYW50ZWVkIHRvIGJlIGVpbmFfc3RyaW5nc2hhcmUsIHNvIHdoZW5ldmVyIHBvc3NpYmxlCi0g
KiAgICAgICAgIHNhdmUgeW91cnNlbGYgc29tZSBjcHUgY3ljbGVzIGFuZCB1c2UKLSAqICAgICAg
ICAgZWluYV9zdHJpbmdzaGFyZV9yZWYoKSBpbnN0ZWFkIG9mIGVpbmFfc3RyaW5nc2hhcmVfYWRk
KCkgb3IKLSAqICAgICAgICAgc3RyZHVwKCkuCi0gKi8KLUVBUEkgY29uc3QgY2hhciAqZXdrX3dl
Yl9lcnJvcl91cmxfZ2V0KGNvbnN0IEV3a19XZWJfRXJyb3IgKmVycm9yKTsKLQotLyoqCi0gKiBR
dWVyeSBIVFRQIGVycm9yIGNvZGUuCi0gKgotICogQHBhcmFtIGVycm9yIGVycm9yIG9iamVjdCB0
byBxdWVyeS4KLSAqCi0gKiBAcmV0dXJuIHRoZSBIVFRQIGVycm9yIGNvZGUuCi0gKi8KLUVBUEkg
aW50IGV3a193ZWJfZXJyb3JfY29kZV9nZXQoY29uc3QgRXdrX1dlYl9FcnJvciAqZXJyb3IpOwot
Ci0vKioKLSAqIFF1ZXJ5IGRlc2NyaXB0aW9uIGZvciB0aGlzIGVycm9yLgotICoKLSAqIEBwYXJh
bSBlcnJvciBlcnJvciBvYmplY3QgdG8gcXVlcnkuCi0gKgotICogQHJldHVybiB0aGUgZGVzY3Jp
cHRpb24gcG9pbnRlciwgdGhhdCBtYXkgYmUgQGMgTlVMTC4gVGhpcyBwb2ludGVyIGlzCi0gKiAg
ICAgICAgIGd1YXJhbnRlZWQgdG8gYmUgZWluYV9zdHJpbmdzaGFyZSwgc28gd2hlbmV2ZXIgcG9z
c2libGUKLSAqICAgICAgICAgc2F2ZSB5b3Vyc2VsZiBzb21lIGNwdSBjeWNsZXMgYW5kIHVzZQot
ICogICAgICAgICBlaW5hX3N0cmluZ3NoYXJlX3JlZigpIGluc3RlYWQgb2YgZWluYV9zdHJpbmdz
aGFyZV9hZGQoKSBvcgotICogICAgICAgICBzdHJkdXAoKS4KLSAqLwotRUFQSSBjb25zdCBjaGFy
ICpld2tfd2ViX2Vycm9yX2Rlc2NyaXB0aW9uX2dldChjb25zdCBFd2tfV2ViX0Vycm9yICplcnJv
cik7Ci0KLS8qKgotICogUXVlcnkgaWYgZXJyb3Igc2hvdWxkIGJlIHRyZWF0ZWQgYXMgYSBjYW5j
ZWxsYXRpb24uCi0gKgotICogQHBhcmFtIGVycm9yIGVycm9yIG9iamVjdCB0byBxdWVyeS4KLSAq
Ci0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiB0aGlzIGVycm9yIHNob3VsZCBiZSB0cmVhdGVk
IGFzIGEgY2FuY2VsbGF0aW9uLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQotICovCi1FQVBJIEVp
bmFfQm9vbCBld2tfd2ViX2Vycm9yX2NhbmNlbGxhdGlvbl9nZXQoY29uc3QgRXdrX1dlYl9FcnJv
ciAqZXJyb3IpOwotCi0jaWZkZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRpZgotCi0jZW5kaWYgLy8g
ZXdrX3dlYl9lcnJvcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfd2ViX2Vycm9yX3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a193ZWJfZXJyb3JfcHJpdmF0ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBjOWEzMWU1Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a193ZWJfZXJyb3JfcHJpdmF0ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBld2tfd2ViX2Vycm9yX3ByaXZhdGVfaAot
I2RlZmluZSBld2tfd2ViX2Vycm9yX3ByaXZhdGVfaAotCi0jaW5jbHVkZSA8V0tFcnJvci5oPgot
Ci10eXBlZGVmIHN0cnVjdCBfRXdrX1dlYl9FcnJvciBFd2tfV2ViX0Vycm9yOwotCi1Fd2tfV2Vi
X0Vycm9yKiBld2tfd2ViX2Vycm9yX25ldyhXS0Vycm9yUmVmIGVycm9yKTsKLQotI2VuZGlmIC8v
IGV3a193ZWJfZXJyb3JfcHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfY29va2llX21hbmFnZXIuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2Nvb2tpZV9tYW5hZ2Vy
LmNwcAppbmRleCA0MzUzY2VkLi44YzlmZGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfY29va2llX21hbmFnZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9jb29raWVf
bWFuYWdlci5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgc3RhdGljIHZvaWQgc2VydmVyQ2FsbGJhY2so
U291cFNlcnZlciogc2VydmVyLCBTb3VwTWVzc2FnZSogbWVzc2FnZSwgY29uc3QgY2hhcioKICAg
ICBzb3VwX21lc3NhZ2VfYm9keV9jb21wbGV0ZShtZXNzYWdlLT5yZXNwb25zZV9ib2R5KTsKIH0K
IAotc3RhdGljIHZvaWQgZ2V0QWNjZXB0UG9saWN5Q2FsbGJhY2soRXdrX0Nvb2tpZV9BY2NlcHRf
UG9saWN5IHBvbGljeSwgRXdrX1dlYl9FcnJvciogZXJyb3IsIHZvaWQqIGV2ZW50X2luZm8pCitz
dGF0aWMgdm9pZCBnZXRBY2NlcHRQb2xpY3lDYWxsYmFjayhFd2tfQ29va2llX0FjY2VwdF9Qb2xp
Y3kgcG9saWN5LCBFd2tfRXJyb3IqIGVycm9yLCB2b2lkKiBldmVudF9pbmZvKQogewogICAgIEFT
U0VSVF9GQUxTRShlcnJvcik7CiAgICAgRXdrX0Nvb2tpZV9BY2NlcHRfUG9saWN5KiByZXQgPSBz
dGF0aWNfY2FzdDxFd2tfQ29va2llX0FjY2VwdF9Qb2xpY3kqPihldmVudF9pbmZvKTsKQEAgLTgx
LDcgKzgxLDcgQEAgc3RhdGljIEV3a19Db29raWVfQWNjZXB0X1BvbGljeSBnZXRBY2NlcHRQb2xp
Y3koRXdrX0Nvb2tpZV9NYW5hZ2VyKiBtYW5hZ2VyKQogICAgIHJldHVybiBwb2xpY3k7CiB9CiAK
LXN0YXRpYyB2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzQ2FsbGJhY2soRWluYV9MaXN0KiBo
b3N0bmFtZXMsIEV3a19XZWJfRXJyb3IqIGVycm9yLCB2b2lkKiBldmVudF9pbmZvKQorc3RhdGlj
IHZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXNDYWxsYmFjayhFaW5hX0xpc3QqIGhvc3RuYW1l
cywgRXdrX0Vycm9yKiBlcnJvciwgdm9pZCogZXZlbnRfaW5mbykKIHsKICAgICBBU1NFUlRfRkFM
U0UoZXJyb3IpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC90ZXN0cy90ZXN0X2V3azJfZG93bmxvYWRfam9iLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9kb3dubG9hZF9qb2IuY3BwCmluZGV4IDIyYzk3
YWEuLmQyODEyMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L3Rlc3RzL3Rlc3RfZXdrMl9kb3dubG9hZF9qb2IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9kb3dubG9hZF9qb2IuY3BwCkBAIC0xMzEs
NyArMTMxLDcgQEAgc3RhdGljIHZvaWQgb25fZG93bmxvYWRfY2FuY2VsbGVkKHZvaWQqIHVzZXJE
YXRhLCBFdmFzX09iamVjdCogd2Vidmlldywgdm9pZCogZXYKIHN0YXRpYyB2b2lkIG9uX2Rvd25s
b2FkX2ZhaWxlZCh2b2lkKiB1c2VyRGF0YSwgRXZhc19PYmplY3QqIHdlYnZpZXcsIHZvaWQqIGV2
ZW50SW5mbykKIHsKICAgICBFd2tfRG93bmxvYWRfSm9iX0Vycm9yKiBkb3dubG9hZEVycm9yID0g
c3RhdGljX2Nhc3Q8RXdrX0Rvd25sb2FkX0pvYl9FcnJvcio+KGV2ZW50SW5mbyk7Ci0gICAgZnBy
aW50ZihzdGRlcnIsICJEb3dubG9hZCBlcnJvcjogJXNcbiIsIGV3a193ZWJfZXJyb3JfZGVzY3Jp
cHRpb25fZ2V0KGRvd25sb2FkRXJyb3ItPmVycm9yKSk7CisgICAgZnByaW50ZihzdGRlcnIsICJE
b3dubG9hZCBlcnJvcjogJXNcbiIsIGV3a19lcnJvcl9kZXNjcmlwdGlvbl9nZXQoZG93bmxvYWRF
cnJvci0+ZXJyb3IpKTsKICAgICBlY29yZV9tYWluX2xvb3BfcXVpdCgpOwogICAgIEZBSUwoKTsK
IH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBh
MTEyN2IyLi5hMmQ3YmI1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDktMjggIEpvbmdzZW9rIFlhbmcgIDxq
czQ1LnlhbmdAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bV0syXSBSZW1vdmUgIndlYiIg
d29yZCBmcm9tIGV3a193ZWJfZXJyb3IgQVBJcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc4ODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgIndlYiIgd29yZCBmcm9tIGV3a193ZWJfZXJyb3Ig
QVBJcy4KKyAgICAgICAgIndlYiIgd29yZCB3YXMgcmVkdW5kYW50IGJlY2F1c2UgImV3ayIgbWVh
bnMgIkVGTCBXZWJLaXQiIGFuZCBXSyBBUElzIGZvciBlcnJvciBkb2VzIG5vdCBoYXZlICJ3ZWIi
IHdvcmQuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9lZmwvbWFpbi5jOgorICAgICAgICAob25f
ZXJyb3IpOgorCiAyMDEyLTA5LTI3ICBBbGV4YW5kcmUgRWxpYXMgIDxhZWxpYXNAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gRHVtcFJlbmRlclRyZWUgc3VwcG9ydCBmb3Igc29m
dHdhcmUgY29tcG9zaXRpbmcKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL2VmbC9tYWlu
LmMgYi9Ub29scy9NaW5pQnJvd3Nlci9lZmwvbWFpbi5jCmluZGV4IGI0NGU1MTQuLmYwYzc3Mzcg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL2VmbC9tYWluLmMKKysrIGIvVG9vbHMvTWlu
aUJyb3dzZXIvZWZsL21haW4uYwpAQCAtMTg3LDEzICsxODcsMTMgQEAgc3RhdGljIHZvaWQKIG9u
X2Vycm9yKHZvaWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKndlYnZpZXcsIHZvaWQgKmV2ZW50
X2luZm8pCiB7CiAgICAgRWluYV9TdHJidWYqIGJ1ZmZlcjsKLSAgICBjb25zdCBFd2tfV2ViX0Vy
cm9yICplcnJvciA9IChjb25zdCBFd2tfV2ViX0Vycm9yICopZXZlbnRfaW5mbzsKKyAgICBjb25z
dCBFd2tfRXJyb3IgKmVycm9yID0gKGNvbnN0IEV3a19FcnJvciAqKWV2ZW50X2luZm87CiAKICAg
ICBidWZmZXIgPSBlaW5hX3N0cmJ1Zl9uZXcoKTsKICAgICBlaW5hX3N0cmJ1Zl9hcHBlbmRfcHJp
bnRmKGJ1ZmZlciwgIjxodG1sPjxib2R5PjxkaXYgc3R5bGU9XCJjb2xvcjojZmYwMDAwXCI+RVJS
T1IhPC9kaXY+PGJyPjxkaXY+Q29kZTogJWQ8YnI+RGVzY3JpcHRpb246ICVzPGJyPlVSTDogJXM8
L2Rpdj48L2JvZHk8L2h0bWw+IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV3a193
ZWJfZXJyb3JfY29kZV9nZXQoZXJyb3IpLCBld2tfd2ViX2Vycm9yX2Rlc2NyaXB0aW9uX2dldChl
cnJvciksIGV3a193ZWJfZXJyb3JfdXJsX2dldChlcnJvcikpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZXdrX2Vycm9yX2NvZGVfZ2V0KGVycm9yKSwgZXdrX2Vycm9yX2Rlc2NyaXB0
aW9uX2dldChlcnJvciksIGV3a19lcnJvcl91cmxfZ2V0KGVycm9yKSk7CiAKLSAgICBld2tfdmll
d19odG1sX3N0cmluZ19sb2FkKHdlYnZpZXcsIGVpbmFfc3RyYnVmX3N0cmluZ19nZXQoYnVmZmVy
KSwgMCwgZXdrX3dlYl9lcnJvcl91cmxfZ2V0KGVycm9yKSk7CisgICAgZXdrX3ZpZXdfaHRtbF9z
dHJpbmdfbG9hZCh3ZWJ2aWV3LCBlaW5hX3N0cmJ1Zl9zdHJpbmdfZ2V0KGJ1ZmZlciksIDAsIGV3
a19lcnJvcl91cmxfZ2V0KGVycm9yKSk7CiAgICAgZWluYV9zdHJidWZfZnJlZShidWZmZXIpOwog
fQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167216</attachid>
            <date>2012-10-04 17:51:00 -0700</date>
            <delta_ts>2012-10-04 17:55:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>47485</size>
            <attacher name="Jongseok Yang">js45.yang</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBlNGQ1ZGZiLi5iYzlkNTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTMg
QEAKKzIwMTItMDktMjggIEpvbmdzZW9rIFlhbmcgIDxqczQ1LnlhbmdAc2Ftc3VuZy5jb20+CisK
KyAgICAgICAgW0VGTF1bV0syXSBSZW1vdmUgIndlYiIgd29yZCBmcm9tIGV3a193ZWJfZXJyb3Ig
QVBJcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc4
ODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1v
dmUgIndlYiIgd29yZCBmcm9tIGV3a193ZWJfZXJyb3IgQVBJcy4KKyAgICAgICAgIndlYiIgd29y
ZCB3YXMgcmVkdW5kYW50IGJlY2F1c2UgImV3ayIgbWVhbnMgIkVGTCBXZWJLaXQiIGFuZCBXSyBB
UElzIGZvciBlcnJvciBkb2VzIG5vdCBoYXZlICJ3ZWIiIHdvcmQuCisKKyAgICAgICAgKiBQbGF0
Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X2Rvd25sb2FkX2NsaWVudC5j
cHA6CisgICAgICAgIChkaWRGYWlsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tf
Y29va2llX21hbmFnZXIuY3BwOgorICAgICAgICAoZ2V0QWNjZXB0UG9saWN5Q2FsbGJhY2spOgor
ICAgICAgICAoZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXNDYWxsYmFjayk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX2Nvb2tpZV9tYW5hZ2VyLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX2Rvd25sb2FkX2pvYl9wcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX2Vycm9yLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a193ZWJfZXJyb3IuY3BwLgorICAgICAgICAoX0V3a19FcnJvcik6Cisg
ICAgICAgIChfRXdrX0Vycm9yOjpfRXdrX0Vycm9yKToKKyAgICAgICAgKF9Fd2tfRXJyb3I6On5f
RXdrX0Vycm9yKToKKyAgICAgICAgKGV3a19lcnJvcl9mcmVlKToKKyAgICAgICAgKGV3a19lcnJv
cl90eXBlX2dldCk6CisgICAgICAgIChld2tfZXJyb3JfdXJsX2dldCk6CisgICAgICAgIChld2tf
ZXJyb3JfY29kZV9nZXQpOgorICAgICAgICAoZXdrX2Vycm9yX2Rlc2NyaXB0aW9uX2dldCk6Cisg
ICAgICAgIChld2tfZXJyb3JfY2FuY2VsbGF0aW9uX2dldCk6CisgICAgICAgIChld2tfZXJyb3Jf
bmV3KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfZXJyb3IuaDogUmVuYW1lZCBm
cm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a193ZWJfZXJyb3IuaC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfZXJyb3JfcHJpdmF0ZS5oOiBSZW5hbWVkIGZy
b20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3dlYl9lcnJvcl9wcml2YXRl
LmguCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwOgorICAgICAgICAo
ZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9mYWlsZWQpOgorICAgICAgICAoZXdrX3ZpZXdfZG93bmxv
YWRfam9iX2ZhaWxlZCk6CisgICAgICAgIChld2tfdmlld19sb2FkX2Vycm9yKToKKyAgICAgICAg
KGV3a192aWV3X2xvYWRfcHJvdmlzaW9uYWxfZmFpbGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfdmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3
X2xvYWRlcl9jbGllbnQuY3BwOgorICAgICAgICAoZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JGcmFt
ZSk6CisgICAgICAgIChkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19yZXNvdXJjZV9sb2FkX2NsaWVudC5jcHA6Cisg
ICAgICAgIChkaWRGYWlsTG9hZEZvclJlc291cmNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2VmbC90ZXN0cy90ZXN0X2V3azJfY29va2llX21hbmFnZXIuY3BwOgorICAgICAgICAoZ2V0QWNj
ZXB0UG9saWN5Q2FsbGJhY2spOgorICAgICAgICAoZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXNDYWxs
YmFjayk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2Rvd25s
b2FkX2pvYi5jcHA6CisgICAgICAgIChvbl9kb3dubG9hZF9mYWlsZWQpOgorCiAyMDEyLTA5LTI3
ICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc4MjMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UK
aW5kZXggZDM5MzJiNi4uMGI4ZWI1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZv
cm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTQ3
LDYgKzQ3LDcgQEAgTElTVChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX2NvbnRleHRfcmVxdWVzdF9tYW5hZ2VyX2NsaWVudC5jcHAKICAgICBVSVByb2Nl
c3MvQVBJL2VmbC9ld2tfY29va2llX21hbmFnZXIuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX2Rvd25sb2FkX2pvYi5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfZXJyb3IuY3Bw
CiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Zvcm1fc3VibWlzc2lvbl9yZXF1ZXN0LmNwcAog
ICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19pbnRlbnQuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX2ludGVudF9zZXJ2aWNlLmNwcApAQCAtNjQsNyArNjUsNiBAQCBMSVNUKEFQUEVORCBX
ZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wb2xpY3lfY2xp
ZW50LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3Jlc291cmNlX2xvYWRfY2xp
ZW50LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3VpX2NsaWVudC5jcHAKLSAg
ICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfd2ViX2Vycm9yLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkv
ZWZsL2V3a193ZWJfcmVzb3VyY2UuY3BwCiAKICAgICBVSVByb2Nlc3MvY2Fpcm8vQmFja2luZ1N0
b3JlQ2Fpcm8uY3BwCkBAIC0yMTcsNiArMjE3LDcgQEAgU0VUIChFV2ViS2l0Ml9IRUFERVJTCiAg
ICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29u
dGV4dC5oIgogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX2Nvb2tpZV9tYW5hZ2VyLmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElS
fS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfZG93bmxvYWRfam9iLmgiCisgICAgIiR7Q01BS0VfQ1VS
UkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfZXJyb3IuaCIKICAgICAiJHtD
TUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19mb3JtX3N1Ym1p
c3Npb25fcmVxdWVzdC5oIgogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2ludGVudC5oIgogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJ
Un0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2ludGVudF9zZXJ2aWNlLmgiCkBAIC0yMjksNyArMjMw
LDYgQEAgU0VUIChFV2ViS2l0Ml9IRUFERVJTCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0Vf
RElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3Jlc3BvbnNlLmgiCiAgICAgIiR7Q01BS0Vf
Q1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3NjaGVtZV9yZXF1
ZXN0LmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfdmlldy5oIgotICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX3dlYl9lcnJvci5oIgogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJ
Un0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3dlYl9yZXNvdXJjZS5oIgogKQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaAppbmRleCAxM2VmYWIxLi42ZDE0ZDhl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmgKQEAgLTMz
LDYgKzMzLDcgQEAKICNpbmNsdWRlICJld2tfY29udGV4dC5oIgogI2luY2x1ZGUgImV3a19jb29r
aWVfbWFuYWdlci5oIgogI2luY2x1ZGUgImV3a19kb3dubG9hZF9qb2IuaCIKKyNpbmNsdWRlICJl
d2tfZXJyb3IuaCIKICNpbmNsdWRlICJld2tfZm9ybV9zdWJtaXNzaW9uX3JlcXVlc3QuaCIKICNp
bmNsdWRlICJld2tfaW50ZW50LmgiCiAjaW5jbHVkZSAiZXdrX2ludGVudF9zZXJ2aWNlLmgiCkBA
IC00NSw3ICs0Niw2IEBACiAjaW5jbHVkZSAiZXdrX3VybF9yZXNwb25zZS5oIgogI2luY2x1ZGUg
ImV3a191cmxfc2NoZW1lX3JlcXVlc3QuaCIKICNpbmNsdWRlICJld2tfdmlldy5oIgotI2luY2x1
ZGUgImV3a193ZWJfZXJyb3IuaCIKICNpbmNsdWRlICJld2tfd2ViX3Jlc291cmNlLmgiCiAKICNl
bmRpZiAvLyBFV2ViS2l0Ml9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfY29udGV4dF9kb3dubG9hZF9jbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfZG93bmxvYWRfY2xpZW50LmNwcAppbmRleCA5
ZDkyNGJmLi41NjkwOTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfY29udGV4dF9kb3dubG9hZF9jbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X2Rvd25sb2FkX2NsaWVudC5jcHAKQEAgLTMz
LDExICszMywxMSBAQAogI2luY2x1ZGUgImV3a19jb250ZXh0X3ByaXZhdGUuaCIKICNpbmNsdWRl
ICJld2tfZG93bmxvYWRfam9iLmgiCiAjaW5jbHVkZSAiZXdrX2Rvd25sb2FkX2pvYl9wcml2YXRl
LmgiCisjaW5jbHVkZSAiZXdrX2Vycm9yLmgiCisjaW5jbHVkZSAiZXdrX2Vycm9yX3ByaXZhdGUu
aCIKICNpbmNsdWRlICJld2tfdXJsX3Jlc3BvbnNlLmgiCiAjaW5jbHVkZSAiZXdrX3VybF9yZXNw
b25zZV9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0ZS5oIgotI2luY2x1ZGUg
ImV3a193ZWJfZXJyb3IuaCIKLSNpbmNsdWRlICJld2tfd2ViX2Vycm9yX3ByaXZhdGUuaCIKICNp
bmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKQEAgLTk1
LDEwICs5NSwxMCBAQCBzdGF0aWMgdm9pZCBkaWRGYWlsKFdLQ29udGV4dFJlZiwgV0tEb3dubG9h
ZFJlZiB3a0Rvd25sb2FkLCBXS0Vycm9yUmVmIGVycm9yLCBjbwogICAgIEV3a19Eb3dubG9hZF9K
b2IqIGRvd25sb2FkID0gZXdrX2NvbnRleHRfZG93bmxvYWRfam9iX2dldCh0b0V3a0NvbnRleHQo
Y2xpZW50SW5mbyksIGRvd25sb2FkSWQpOwogICAgIEFTU0VSVChkb3dubG9hZCk7CiAKLSAgICBF
d2tfV2ViX0Vycm9yKiBld2tFcnJvciA9IGV3a193ZWJfZXJyb3JfbmV3KGVycm9yKTsKKyAgICBF
d2tfRXJyb3IqIGV3a0Vycm9yID0gZXdrX2Vycm9yX25ldyhlcnJvcik7CiAgICAgZXdrX2Rvd25s
b2FkX2pvYl9zdGF0ZV9zZXQoZG93bmxvYWQsIEVXS19ET1dOTE9BRF9KT0JfU1RBVEVfRkFJTEVE
KTsKICAgICBld2tfdmlld19kb3dubG9hZF9qb2JfZmFpbGVkKGV3a19kb3dubG9hZF9qb2Jfdmll
d19nZXQoZG93bmxvYWQpLCBkb3dubG9hZCwgZXdrRXJyb3IpOwotICAgIGV3a193ZWJfZXJyb3Jf
ZnJlZShld2tFcnJvcik7CisgICAgZXdrX2Vycm9yX2ZyZWUoZXdrRXJyb3IpOwogICAgIGV3a19j
b250ZXh0X2Rvd25sb2FkX2pvYl9yZW1vdmUodG9Fd2tDb250ZXh0KGNsaWVudEluZm8pLCBkb3du
bG9hZElkKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX2Nvb2tpZV9tYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19jb29raWVfbWFuYWdlci5jcHAKaW5kZXggNDVkZDc1ZS4uYTUyMDQ3MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nvb2tpZV9tYW5hZ2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29va2llX21h
bmFnZXIuY3BwCkBAIC0zMyw4ICszMyw4IEBACiAjaW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKICNp
bmNsdWRlICJXS1N0cmluZy5oIgogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXJQcm94eS5oIgor
I2luY2x1ZGUgImV3a19lcnJvcl9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIK
LSNpbmNsdWRlICJld2tfd2ViX2Vycm9yX3ByaXZhdGUuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTE0MiwxMiAr
MTQyLDEyIEBAIHN0cnVjdCBHZXRfUG9saWN5X0FzeW5jX0RhdGEgewogc3RhdGljIHZvaWQgZ2V0
QWNjZXB0UG9saWN5Q2FsbGJhY2soV0tIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSwgV0tF
cnJvclJlZiB3a0Vycm9yLCB2b2lkKiBkYXRhKQogewogICAgIEdldF9Qb2xpY3lfQXN5bmNfRGF0
YSogY2FsbGJhY2tEYXRhID0gc3RhdGljX2Nhc3Q8R2V0X1BvbGljeV9Bc3luY19EYXRhKj4oZGF0
YSk7Ci0gICAgRXdrX1dlYl9FcnJvciogZXdrRXJyb3IgPSB3a0Vycm9yID8gZXdrX3dlYl9lcnJv
cl9uZXcod2tFcnJvcikgOiAwOworICAgIEV3a19FcnJvciogZXdrRXJyb3IgPSB3a0Vycm9yID8g
ZXdrX2Vycm9yX25ldyh3a0Vycm9yKSA6IDA7CiAKICAgICBjYWxsYmFja0RhdGEtPmNhbGxiYWNr
KHN0YXRpY19jYXN0PEV3a19Db29raWVfQWNjZXB0X1BvbGljeT4ocG9saWN5KSwgZXdrRXJyb3Is
IGNhbGxiYWNrRGF0YS0+dXNlckRhdGEpOwogCiAgICAgaWYgKGV3a0Vycm9yKQotICAgICAgICBl
d2tfd2ViX2Vycm9yX2ZyZWUoZXdrRXJyb3IpOworICAgICAgICBld2tfZXJyb3JfZnJlZShld2tF
cnJvcik7CiAgICAgZGVsZXRlIGNhbGxiYWNrRGF0YTsKIH0KIApAQCAtMTcyLDcgKzE3Miw3IEBA
IHN0YXRpYyB2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzQ2FsbGJhY2soV0tBcnJheVJlZiB3
a0hvc3RuYW1lcywgV0tFcnJvclJlZiB3CiB7CiAgICAgRWluYV9MaXN0KiBob3N0bmFtZXMgPSAw
OwogICAgIEdldF9Ib3N0bmFtZXNfQXN5bmNfRGF0YSogY2FsbGJhY2tEYXRhID0gc3RhdGljX2Nh
c3Q8R2V0X0hvc3RuYW1lc19Bc3luY19EYXRhKj4oY29udGV4dCk7Ci0gICAgRXdrX1dlYl9FcnJv
ciogZXdrRXJyb3IgPSB3a0Vycm9yID8gZXdrX3dlYl9lcnJvcl9uZXcod2tFcnJvcikgOiAwOwor
ICAgIEV3a19FcnJvciogZXdrRXJyb3IgPSB3a0Vycm9yID8gZXdrX2Vycm9yX25ldyh3a0Vycm9y
KSA6IDA7CiAKICAgICBjb25zdCBzaXplX3QgaG9zdG5hbWVDb3VudCA9IFdLQXJyYXlHZXRTaXpl
KHdrSG9zdG5hbWVzKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGhvc3RuYW1lQ291bnQ7
ICsraSkgewpAQCAtMTg5LDcgKzE4OSw3IEBAIHN0YXRpYyB2b2lkIGdldEhvc3RuYW1lc1dpdGhD
b29raWVzQ2FsbGJhY2soV0tBcnJheVJlZiB3a0hvc3RuYW1lcywgV0tFcnJvclJlZiB3CiAgICAg
RUlOQV9MSVNUX0ZSRUUoaG9zdG5hbWVzLCBpdGVtKQogICAgICAgZWluYV9zdHJpbmdzaGFyZV9k
ZWwoc3RhdGljX2Nhc3Q8RWluYV9TdHJpbmdzaGFyZSo+KGl0ZW0pKTsKICAgICBpZiAoZXdrRXJy
b3IpCi0gICAgICAgIGV3a193ZWJfZXJyb3JfZnJlZShld2tFcnJvcik7CisgICAgICAgIGV3a19l
cnJvcl9mcmVlKGV3a0Vycm9yKTsKICAgICBkZWxldGUgY2FsbGJhY2tEYXRhOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29va2llX21hbmFn
ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb29raWVfbWFuYWdl
ci5oCmluZGV4IGUzNzc4MDguLmMzMWI5MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19jb29raWVfbWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb29raWVfbWFuYWdlci5oCkBAIC0zMSw3ICszMSw3IEBA
CiAjaWZuZGVmIGV3a19jb29raWVfbWFuYWdlcl9oCiAjZGVmaW5lIGV3a19jb29raWVfbWFuYWdl
cl9oCiAKLSNpbmNsdWRlICJld2tfd2ViX2Vycm9yLmgiCisjaW5jbHVkZSAiZXdrX2Vycm9yLmgi
CiAjaW5jbHVkZSA8RWluYS5oPgogCiAjaWZkZWYgX19jcGx1c3BsdXMKQEAgLTc3LDcgKzc3LDcg
QEAgdHlwZWRlZiBlbnVtIF9Fd2tfQ29va2llX1BlcnNpc3RlbnRfU3RvcmFnZSBFd2tfQ29va2ll
X1BlcnNpc3RlbnRfU3RvcmFnZTsKICAqIEB0eXBlZGVmIEV3a19Db29raWVfTWFuYWdlcl9Bc3lu
Y19Qb2xpY3lfR2V0X0NiIEV3a19Db29raWVfTWFuYWdlcl9Bc3luY19Qb2xpY3lfR2V0X0NiCiAg
KiBAYnJpZWYgQ2FsbGJhY2sgdHlwZSBmb3IgdXNlIHdpdGggZXdrX2Nvb2tpZV9tYW5hZ2VyX2Fz
eW5jX2FjY2VwdF9wb2xpY3lfZ2V0CiAgKi8KLXR5cGVkZWYgdm9pZCAoKkV3a19Db29raWVfTWFu
YWdlcl9Bc3luY19Qb2xpY3lfR2V0X0NiKShFd2tfQ29va2llX0FjY2VwdF9Qb2xpY3kgcG9saWN5
LCBFd2tfV2ViX0Vycm9yICplcnJvciwgdm9pZCAqZXZlbnRfaW5mbyk7Cit0eXBlZGVmIHZvaWQg
KCpFd2tfQ29va2llX01hbmFnZXJfQXN5bmNfUG9saWN5X0dldF9DYikoRXdrX0Nvb2tpZV9BY2Nl
cHRfUG9saWN5IHBvbGljeSwgRXdrX0Vycm9yICplcnJvciwgdm9pZCAqZXZlbnRfaW5mbyk7CiAK
IC8qKgogICogQHR5cGVkZWYgRXdrX0Nvb2tpZV9NYW5hZ2VyX0FzeW5jX0hvc3RuYW1lc19HZXRf
Q2IgRXdrX0Nvb2tpZV9NYW5hZ2VyX0FzeW5jX0hvc3RuYW1lc19HZXRfQ2IKQEAgLTg3LDcgKzg3
LDcgQEAgdHlwZWRlZiB2b2lkICgqRXdrX0Nvb2tpZV9NYW5hZ2VyX0FzeW5jX1BvbGljeV9HZXRf
Q2IpKEV3a19Db29raWVfQWNjZXB0X1BvbGljeQogICogc2F2ZSB5b3Vyc2VsZiBzb21lIGNwdSBj
eWNsZXMgYW5kIHVzZSBlaW5hX3N0cmluZ3NoYXJlX3JlZigpIGluc3RlYWQgb2YgZWluYV9zdHJp
bmdzaGFyZV9hZGQoKQogICogb3Igc3RyZHVwKCkuCiAgKi8KLXR5cGVkZWYgdm9pZCAoKkV3a19D
b29raWVfTWFuYWdlcl9Bc3luY19Ib3N0bmFtZXNfR2V0X0NiKShFaW5hX0xpc3QqIGhvc3RuYW1l
cywgRXdrX1dlYl9FcnJvciAqZXJyb3IsIHZvaWQgKmV2ZW50X2luZm8pOwordHlwZWRlZiB2b2lk
ICgqRXdrX0Nvb2tpZV9NYW5hZ2VyX0FzeW5jX0hvc3RuYW1lc19HZXRfQ2IpKEVpbmFfTGlzdCAq
aG9zdG5hbWVzLCBFd2tfRXJyb3IgKmVycm9yLCB2b2lkICpldmVudF9pbmZvKTsKIAogLyoqCiAg
KiBAdHlwZWRlZiBFd2tfQ29va2llX01hbmFnZXJfQ2hhbmdlc19XYXRjaF9DYiBFd2tfQ29va2ll
X01hbmFnZXJfQ2hhbmdlc19XYXRjaF9DYgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX2Rvd25sb2FkX2pvYl9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfZG93bmxvYWRfam9iX3ByaXZhdGUuaAppbmRleCBkMDQz
NDk0Li44MWI1NDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfZG93bmxvYWRfam9iX3ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfZG93bmxvYWRfam9iX3ByaXZhdGUuaApAQCAtMzEsNyArMzEsNyBAQAog
CiB0eXBlZGVmIHN0cnVjdCBfRXdrX0Rvd25sb2FkX0pvYiBFd2tfRG93bmxvYWRfSm9iOwogdHlw
ZWRlZiBzdHJ1Y3QgX0V3a19VcmxfUmVzcG9uc2UgRXdrX1VybF9SZXNwb25zZTsKLXR5cGVkZWYg
c3RydWN0IF9Fd2tfV2ViX0Vycm9yIEV3a19XZWJfRXJyb3I7Cit0eXBlZGVmIHN0cnVjdCBfRXdr
X0Vycm9yIEV3a19FcnJvcjsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBEb3dubG9hZFBy
b3h5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Vy
cm9yLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19lcnJvci5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjU2YmY5YwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19lcnJvci5jcHAKQEAg
LTAsMCArMSwxMzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRp
b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJld2tfZXJyb3IuaCIKKworI2luY2x1ZGUgIkVycm9yc0VmbC5oIgorI2luY2x1
ZGUgIldLRWluYVNoYXJlZFN0cmluZy5oIgorI2luY2x1ZGUgIldLU3RyaW5nLmgiCisjaW5jbHVk
ZSAiV0tVUkwuaCIKKyNpbmNsdWRlICJld2tfZXJyb3JfcHJpdmF0ZS5oIgorI2luY2x1ZGUgPFdL
QVBJQ2FzdC5oPgorI2luY2x1ZGUgPFdLRXJyb3IuaD4KKyNpbmNsdWRlIDxXS1JldGFpblB0ci5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7Cit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitzdHJ1Y3QgX0V3a19FcnJvciB7CisgICAg
V0tSZXRhaW5QdHI8V0tFcnJvclJlZj4gd2tFcnJvcjsKKworICAgIFdLRWluYVNoYXJlZFN0cmlu
ZyB1cmw7CisgICAgV0tFaW5hU2hhcmVkU3RyaW5nIGRlc2NyaXB0aW9uOworCisgICAgX0V3a19F
cnJvcihXS0Vycm9yUmVmIGVycm9yUmVmKQorICAgICAgICA6IHdrRXJyb3IoZXJyb3JSZWYpCisg
ICAgICAgICwgdXJsKEFkb3B0V0ssIFdLRXJyb3JDb3B5RmFpbGluZ1VSTChlcnJvclJlZikpCisg
ICAgICAgICwgZGVzY3JpcHRpb24oQWRvcHRXSywgV0tFcnJvckNvcHlMb2NhbGl6ZWREZXNjcmlw
dGlvbihlcnJvclJlZikpCisgICAgeyB9CisKKyAgICB+X0V3a19FcnJvcigpCisgICAgeworICAg
IH0KK307CisKKyNkZWZpbmUgRVdLX0VSUk9SX1dLX0dFVF9PUl9SRVRVUk4oZXJyb3IsIHdrRXJy
b3JfLCAuLi4pICAgIFwKKyAgICBpZiAoIShlcnJvcikpIHsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBFSU5BX0xPR19DUklUKCJlcnJvciBpcyBO
VUxMLiIpOyAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBfX1ZBX0FSR1Nf
XzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYg
KCEoZXJyb3IpLT53a0Vycm9yKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICBFSU5BX0xPR19DUklUKCJlcnJvci0+d2tFcnJvciBpcyBOVUxMLiIpOyAgICAgICAg
ICAgIFwKKyAgICAgICAgcmV0dXJuIF9fVkFfQVJHU19fOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBXS0Vycm9yUmVmIHdrRXJyb3JfID0gKGVycm9y
KS0+d2tFcnJvci5nZXQoKQorCit2b2lkIGV3a19lcnJvcl9mcmVlKEV3a19FcnJvciogZXJyb3Ip
Cit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oZXJyb3IpOworCisgICAgZGVsZXRl
IGVycm9yOworfQorCitFd2tfRXJyb3JfVHlwZSBld2tfZXJyb3JfdHlwZV9nZXQoY29uc3QgRXdr
X0Vycm9yKiBlcnJvcikKK3sKKyAgICBFV0tfRVJST1JfV0tfR0VUX09SX1JFVFVSTihlcnJvciwg
d2tFcnJvciwgRVdLX0VSUk9SX1RZUEVfTk9ORSk7CisKKyAgICBXS1JldGFpblB0cjxXS1N0cmlu
Z1JlZj4gd2tEb21haW4oQWRvcHRXSywgV0tFcnJvckNvcHlEb21haW4od2tFcnJvcikpOworICAg
IFdURjo6U3RyaW5nIGVycm9yRG9tYWluID0gdG9XVEZTdHJpbmcod2tEb21haW4uZ2V0KCkpOwor
CisgICAgaWYgKGVycm9yRG9tYWluID09IGVycm9yRG9tYWluTmV0d29yaykKKyAgICAgICAgcmV0
dXJuIEVXS19FUlJPUl9UWVBFX05FVFdPUks7CisgICAgaWYgKGVycm9yRG9tYWluID09IGVycm9y
RG9tYWluUG9saWN5KQorICAgICAgICByZXR1cm4gRVdLX0VSUk9SX1RZUEVfUE9MSUNZOworICAg
IGlmIChlcnJvckRvbWFpbiA9PSBlcnJvckRvbWFpblBsdWdpbikKKyAgICAgICAgcmV0dXJuIEVX
S19FUlJPUl9UWVBFX1BMVUdJTjsKKyAgICBpZiAoZXJyb3JEb21haW4gPT0gZXJyb3JEb21haW5E
b3dubG9hZCkKKyAgICAgICAgcmV0dXJuIEVXS19FUlJPUl9UWVBFX0RPV05MT0FEOworICAgIGlm
IChlcnJvckRvbWFpbiA9PSBlcnJvckRvbWFpblByaW50KQorICAgICAgICByZXR1cm4gRVdLX0VS
Uk9SX1RZUEVfUFJJTlQ7CisgICAgcmV0dXJuIEVXS19FUlJPUl9UWVBFX0lOVEVSTkFMOworfQor
Citjb25zdCBjaGFyKiBld2tfZXJyb3JfdXJsX2dldChjb25zdCBFd2tfRXJyb3IqIGVycm9yKQor
eworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChlcnJvciwgMCk7CisKKyAgICBy
ZXR1cm4gZXJyb3ItPnVybDsKK30KKworaW50IGV3a19lcnJvcl9jb2RlX2dldChjb25zdCBFd2tf
RXJyb3IqIGVycm9yKQoreworICAgIEVXS19FUlJPUl9XS19HRVRfT1JfUkVUVVJOKGVycm9yLCB3
a0Vycm9yLCAwKTsKKworICAgIHJldHVybiBXS0Vycm9yR2V0RXJyb3JDb2RlKHdrRXJyb3IpOwor
fQorCitjb25zdCBjaGFyKiBld2tfZXJyb3JfZGVzY3JpcHRpb25fZ2V0KGNvbnN0IEV3a19FcnJv
ciogZXJyb3IpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGVycm9yLCAw
KTsKKworICAgIHJldHVybiBlcnJvci0+ZGVzY3JpcHRpb247Cit9CisKK0VpbmFfQm9vbCBld2tf
ZXJyb3JfY2FuY2VsbGF0aW9uX2dldChjb25zdCBFd2tfRXJyb3IqIGVycm9yKQoreworICAgIEVX
S19FUlJPUl9XS19HRVRfT1JfUkVUVVJOKGVycm9yLCB3a0Vycm9yLCBmYWxzZSk7CisKKyAgICBy
ZXR1cm4gdG9JbXBsKHdrRXJyb3IpLT5wbGF0Zm9ybUVycm9yKCkuaXNDYW5jZWxsYXRpb24oKTsK
K30KKworRXdrX0Vycm9yKiBld2tfZXJyb3JfbmV3KFdLRXJyb3JSZWYgZXJyb3IpCit7CisgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGVycm9yLCAwKTsKKworICAgIHJldHVybiBu
ZXcgRXdrX0Vycm9yKGVycm9yKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a19lcnJvci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX2Vycm9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2I3MDA5
NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a19lcnJvci5oCkBAIC0wLDAgKzEsMTI0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIElu
dGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvKioKKyAq
IEBmaWxlICAgIGV3a19lcnJvci5oCisgKiBAYnJpZWYgICBEZXNjcmliZXMgdGhlIFdlYiBFcnJv
ciBBUEkuCisgKi8KKworI2lmbmRlZiBld2tfZXJyb3JfaAorI2RlZmluZSBld2tfZXJyb3JfaAor
CisjaW5jbHVkZSA8RWluYS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgewor
I2VuZGlmCisKKy8qKiBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciBAYSBFd2tfRXJyb3IuICovCit0
eXBlZGVmIHN0cnVjdCBfRXdrX0Vycm9yIEV3a19FcnJvcjsKKworLy8vIENyZWF0ZXMgYSB0eXBl
IG5hbWUgZm9yIEV3a19FcnJvcl9UeXBlLgordHlwZWRlZiBlbnVtIHsKKyAgICBFV0tfRVJST1Jf
VFlQRV9OT05FLAorICAgIEVXS19FUlJPUl9UWVBFX0lOVEVSTkFMLAorICAgIEVXS19FUlJPUl9U
WVBFX05FVFdPUkssCisgICAgRVdLX0VSUk9SX1RZUEVfUE9MSUNZLAorICAgIEVXS19FUlJPUl9U
WVBFX1BMVUdJTiwKKyAgICBFV0tfRVJST1JfVFlQRV9ET1dOTE9BRCwKKyAgICBFV0tfRVJST1Jf
VFlQRV9QUklOVAorfSBFd2tfRXJyb3JfVHlwZTsKKworLyoqCisgKiBGcmVlcyB0aGUgZ2l2ZW4g
b2JqZWN0LgorICoKKyAqIEBwYXJhbSBlcnJvciB0aGUgZXJyb3Igb2JqZWN0IHRvIGZyZWUKKyAq
LworRUFQSSB2b2lkIGV3a19lcnJvcl9mcmVlKEV3a19FcnJvciAqZXJyb3IpOworCisvKioKKyAq
IFF1ZXJ5IHR5cGUgZm9yIHRoaXMgZXJyb3IuCisgKgorICogQHBhcmFtIGVycm9yIGVycm9yIG9i
amVjdCB0byBxdWVyeS4KKyAqCisgKiBAcmV0dXJuIHRoZSBlcnJvciB0eXBlLCB0aGF0IG1heSBi
ZSBAYyBOVUxMLiBUaGlzIHBvaW50ZXIgaXMKKyAqICAgICAgICAgZ3VhcmFudGVlZCB0byBiZSBl
aW5hX3N0cmluZ3NoYXJlLCBzbyB3aGVuZXZlciBwb3NzaWJsZQorICogICAgICAgICBzYXZlIHlv
dXJzZWxmIHNvbWUgY3B1IGN5Y2xlcyBhbmQgdXNlCisgKiAgICAgICAgIGVpbmFfc3RyaW5nc2hh
cmVfcmVmKCkgaW5zdGVhZCBvZiBlaW5hX3N0cmluZ3NoYXJlX2FkZCgpIG9yCisgKiAgICAgICAg
IHN0cmR1cCgpLgorICovCitFQVBJIEV3a19FcnJvcl9UeXBlIGV3a19lcnJvcl90eXBlX2dldChj
b25zdCBFd2tfRXJyb3IgKmVycm9yKTsKKworLyoqCisgKiBRdWVyeSBmYWlsaW5nIFVSTCBmb3Ig
dGhpcyBlcnJvci4KKyAqCisgKiBVUkwgdGhhdCBmYWlsZWQgbG9hZGluZy4KKyAqCisgKiBAcGFy
YW0gZXJyb3IgZXJyb3Igb2JqZWN0IHRvIHF1ZXJ5LgorICoKKyAqIEByZXR1cm4gdGhlIFVSTCBw
b2ludGVyLCB0aGF0IG1heSBiZSBAYyBOVUxMLiBUaGlzIHBvaW50ZXIgaXMKKyAqICAgICAgICAg
Z3VhcmFudGVlZCB0byBiZSBlaW5hX3N0cmluZ3NoYXJlLCBzbyB3aGVuZXZlciBwb3NzaWJsZQor
ICogICAgICAgICBzYXZlIHlvdXJzZWxmIHNvbWUgY3B1IGN5Y2xlcyBhbmQgdXNlCisgKiAgICAg
ICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVmKCkgaW5zdGVhZCBvZiBlaW5hX3N0cmluZ3NoYXJlX2Fk
ZCgpIG9yCisgKiAgICAgICAgIHN0cmR1cCgpLgorICovCitFQVBJIGNvbnN0IGNoYXIgKmV3a19l
cnJvcl91cmxfZ2V0KGNvbnN0IEV3a19FcnJvciAqZXJyb3IpOworCisvKioKKyAqIFF1ZXJ5IEhU
VFAgZXJyb3IgY29kZS4KKyAqCisgKiBAcGFyYW0gZXJyb3IgZXJyb3Igb2JqZWN0IHRvIHF1ZXJ5
LgorICoKKyAqIEByZXR1cm4gdGhlIEhUVFAgZXJyb3IgY29kZS4KKyAqLworRUFQSSBpbnQgZXdr
X2Vycm9yX2NvZGVfZ2V0KGNvbnN0IEV3a19FcnJvciAqZXJyb3IpOworCisvKioKKyAqIFF1ZXJ5
IGRlc2NyaXB0aW9uIGZvciB0aGlzIGVycm9yLgorICoKKyAqIEBwYXJhbSBlcnJvciBlcnJvciBv
YmplY3QgdG8gcXVlcnkuCisgKgorICogQHJldHVybiB0aGUgZGVzY3JpcHRpb24gcG9pbnRlciwg
dGhhdCBtYXkgYmUgQGMgTlVMTC4gVGhpcyBwb2ludGVyIGlzCisgKiAgICAgICAgIGd1YXJhbnRl
ZWQgdG8gYmUgZWluYV9zdHJpbmdzaGFyZSwgc28gd2hlbmV2ZXIgcG9zc2libGUKKyAqICAgICAg
ICAgc2F2ZSB5b3Vyc2VsZiBzb21lIGNwdSBjeWNsZXMgYW5kIHVzZQorICogICAgICAgICBlaW5h
X3N0cmluZ3NoYXJlX3JlZigpIGluc3RlYWQgb2YgZWluYV9zdHJpbmdzaGFyZV9hZGQoKSBvcgor
ICogICAgICAgICBzdHJkdXAoKS4KKyAqLworRUFQSSBjb25zdCBjaGFyICpld2tfZXJyb3JfZGVz
Y3JpcHRpb25fZ2V0KGNvbnN0IEV3a19FcnJvciAqZXJyb3IpOworCisvKioKKyAqIFF1ZXJ5IGlm
IGVycm9yIHNob3VsZCBiZSB0cmVhdGVkIGFzIGEgY2FuY2VsbGF0aW9uLgorICoKKyAqIEBwYXJh
bSBlcnJvciBlcnJvciBvYmplY3QgdG8gcXVlcnkuCisgKgorICogQHJldHVybiBAYyBFSU5BX1RS
VUUgaWYgdGhpcyBlcnJvciBzaG91bGQgYmUgdHJlYXRlZCBhcyBhIGNhbmNlbGxhdGlvbiwgQGMg
RUlOQV9GQUxTRSBvdGhlcndpc2UKKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX2Vycm9yX2NhbmNl
bGxhdGlvbl9nZXQoY29uc3QgRXdrX0Vycm9yICplcnJvcik7CisKKyNpZmRlZiBfX2NwbHVzcGx1
cworfQorI2VuZGlmCisKKyNlbmRpZiAvLyBld2tfZXJyb3JfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Vycm9yX3ByaXZhdGUuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19lcnJvcl9wcml2YXRlLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDMwNDFmOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19lcnJvcl9wcml2YXRlLmgKQEAgLTAsMCAr
MSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBld2tfZXJyb3JfcHJpdmF0ZV9o
CisjZGVmaW5lIGV3a19lcnJvcl9wcml2YXRlX2gKKworI2luY2x1ZGUgPFdLRXJyb3IuaD4KKwor
dHlwZWRlZiBzdHJ1Y3QgX0V3a19FcnJvciBFd2tfRXJyb3I7CisKK0V3a19FcnJvciogZXdrX2Vy
cm9yX25ldyhXS0Vycm9yUmVmIGVycm9yKTsKKworI2VuZGlmIC8vIGV3a19lcnJvcl9wcml2YXRl
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAppbmRl
eCA1MTc1Zjc5Li5hMDgwOTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3ZpZXcuY3BwCkBAIC05ODQsNyArOTg0LDcgQEAgdm9pZCBld2tfdmlld19yZXNvdXJj
ZV9sb2FkX3Jlc3BvbnNlKEV2YXNfT2JqZWN0KiBld2tWaWV3LCB1aW50NjRfdCByZXNvdXJjZUlk
ZW4KICAqCiAgKiBFbWl0cyBzaWduYWw6ICJyZXNvdXJjZSxyZXF1ZXN0LGZpbmlzaGVkIiB3aXRo
IHBvaW50ZXIgdG8gdGhlIHJlc291cmNlIGxvYWQgZXJyb3IuCiAgKi8KLXZvaWQgZXdrX3ZpZXdf
cmVzb3VyY2VfbG9hZF9mYWlsZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIHVpbnQ2NF90IHJlc291
cmNlSWRlbnRpZmllciwgRXdrX1dlYl9FcnJvciogZXJyb3IpCit2b2lkIGV3a192aWV3X3Jlc291
cmNlX2xvYWRfZmFpbGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCB1aW50NjRfdCByZXNvdXJjZUlk
ZW50aWZpZXIsIEV3a19FcnJvciogZXJyb3IpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JF
VFVSTihld2tWaWV3LCBzbWFydERhdGEpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVS
TihzbWFydERhdGEsIHByaXYpOwpAQCAtMTI4Myw3ICsxMjgzLDcgQEAgdm9pZCBld2tfdmlld19k
b3dubG9hZF9qb2JfcmVxdWVzdGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfRG93bmxvYWRf
Sm9iKiBkb3cKICAqCiAgKiBFbWl0cyBzaWduYWw6ICJkb3dubG9hZCxmYWlsZWQiIHdpdGggcG9p
bnRlciB0byBhIEV3a19Eb3dubG9hZF9Kb2JfRXJyb3IuCiAgKi8KLXZvaWQgZXdrX3ZpZXdfZG93
bmxvYWRfam9iX2ZhaWxlZChFdmFzX09iamVjdCogZXdrVmlldywgRXdrX0Rvd25sb2FkX0pvYiog
ZG93bmxvYWQsIEV3a19XZWJfRXJyb3IqIGVycm9yKQordm9pZCBld2tfdmlld19kb3dubG9hZF9q
b2JfZmFpbGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfRG93bmxvYWRfSm9iKiBkb3dubG9h
ZCwgRXdrX0Vycm9yKiBlcnJvcikKIHsKICAgICBFd2tfRG93bmxvYWRfSm9iX0Vycm9yIGRvd25s
b2FkRXJyb3IgPSB7IGRvd25sb2FkLCBlcnJvciB9OwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2Nh
bGxiYWNrX2NhbGwoZXdrVmlldywgImRvd25sb2FkLGZhaWxlZCIsICZkb3dubG9hZEVycm9yKTsK
QEAgLTEzOTQsMTEgKzEzOTQsMTEgQEAgdm9pZCBld2tfdmlld19mb3JtX3N1Ym1pc3Npb25fcmVx
dWVzdF9uZXcoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19Gb3JtX1N1Ym1pc3MKICAqIEBpbnRl
cm5hbAogICogUmVwb3J0cyBsb2FkIGZhaWxlZCB3aXRoIGVycm9yIGluZm9ybWF0aW9uLgogICoK
LSAqIEVtaXRzIHNpZ25hbDogImxvYWQsZXJyb3IiIHdpdGggcG9pbnRlciB0byBFd2tfV2ViX0Vy
cm9yLgorICogRW1pdHMgc2lnbmFsOiAibG9hZCxlcnJvciIgd2l0aCBwb2ludGVyIHRvIEV3a19F
cnJvci4KICAqLwotdm9pZCBld2tfdmlld19sb2FkX2Vycm9yKEV2YXNfT2JqZWN0KiBld2tWaWV3
LCBjb25zdCBFd2tfV2ViX0Vycm9yKiBlcnJvcikKK3ZvaWQgZXdrX3ZpZXdfbG9hZF9lcnJvcihF
dmFzX09iamVjdCogZXdrVmlldywgY29uc3QgRXdrX0Vycm9yKiBlcnJvcikKIHsKLSAgICBldmFz
X29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a1ZpZXcsICJsb2FkLGVycm9yIiwgY29uc3Rf
Y2FzdDxFd2tfV2ViX0Vycm9yKj4oZXJyb3IpKTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxs
YmFja19jYWxsKGV3a1ZpZXcsICJsb2FkLGVycm9yIiwgY29uc3RfY2FzdDxFd2tfRXJyb3IqPihl
cnJvcikpOwogfQogCiAvKioKQEAgLTE0MTcsMTEgKzE0MTcsMTEgQEAgdm9pZCBld2tfdmlld19s
b2FkX2ZpbmlzaGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3KQogICogQGludGVybmFsCiAgKiBSZXBv
cnRzIHZpZXcgcHJvdmlzaW9uYWwgbG9hZCBmYWlsZWQgd2l0aCBlcnJvciBpbmZvcm1hdGlvbi4K
ICAqCi0gKiBFbWl0cyBzaWduYWw6ICJsb2FkLHByb3Zpc2lvbmFsLGZhaWxlZCIgd2l0aCBwb2lu
dGVyIHRvIEV3a19XZWJfRXJyb3IuCisgKiBFbWl0cyBzaWduYWw6ICJsb2FkLHByb3Zpc2lvbmFs
LGZhaWxlZCIgd2l0aCBwb2ludGVyIHRvIEV3a19FcnJvci4KICAqLwotdm9pZCBld2tfdmlld19s
b2FkX3Byb3Zpc2lvbmFsX2ZhaWxlZChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgRXdrX1dl
Yl9FcnJvciogZXJyb3IpCit2b2lkIGV3a192aWV3X2xvYWRfcHJvdmlzaW9uYWxfZmFpbGVkKEV2
YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBFd2tfRXJyb3IqIGVycm9yKQogewotICAgIGV2YXNf
b2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmlldywgImxvYWQscHJvdmlzaW9uYWwsZmFp
bGVkIiwgY29uc3RfY2FzdDxFd2tfV2ViX0Vycm9yKj4oZXJyb3IpKTsKKyAgICBldmFzX29iamVj
dF9zbWFydF9jYWxsYmFja19jYWxsKGV3a1ZpZXcsICJsb2FkLHByb3Zpc2lvbmFsLGZhaWxlZCIs
IGNvbnN0X2Nhc3Q8RXdrX0Vycm9yKj4oZXJyb3IpKTsKIH0KIAogLyoqCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaAppbmRleCBjY2ZhNjM2Li5kNDIxZDMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKQEAgLTQ0LDEw
ICs0NCwxMCBAQAogICogICBld2tfZm9ybV9zdWJtaXNzaW9uX3JlcXVlc3Rfc3VibWl0KCkgd2ls
bCBiZSBjYWxsZWQgYXV0b21hdGljYWxseS4KICAqIC0gImludGVudCxyZXF1ZXN0LG5ldyIsIEV3
a19JbnRlbnQqOiByZXBvcnRzIG5ldyBXZWIgaW50ZW50IHJlcXVlc3QuCiAgKiAtICJpbnRlbnQs
c2VydmljZSxyZWdpc3RlciIsIEV3a19JbnRlbnRfU2VydmljZSo6IHJlcG9ydHMgbmV3IFdlYiBp
bnRlbnQgc2VydmljZSByZWdpc3RyYXRpb24uCi0gKiAtICJsb2FkLGVycm9yIiwgY29uc3QgRXdr
X1dlYl9FcnJvcio6IHJlcG9ydHMgbWFpbiBmcmFtZSBsb2FkIGZhaWxlZC4KKyAqIC0gImxvYWQs
ZXJyb3IiLCBjb25zdCBFd2tfRXJyb3IqOiByZXBvcnRzIG1haW4gZnJhbWUgbG9hZCBmYWlsZWQu
CiAgKiAtICJsb2FkLGZpbmlzaGVkIiwgdm9pZDogcmVwb3J0cyBsb2FkIGZpbmlzaGVkLgogICog
LSAibG9hZCxwcm9ncmVzcyIsIGRvdWJsZSo6IGxvYWQgcHJvZ3Jlc3MgaGFzIGNoYW5nZWQgKHZh
bHVlIGZyb20gMC4wIHRvIDEuMCkuCi0gKiAtICJsb2FkLHByb3Zpc2lvbmFsLGZhaWxlZCIsIGNv
bnN0IEV3a19XZWJfRXJyb3IqOiB2aWV3IHByb3Zpc2lvbmFsIGxvYWQgZmFpbGVkLgorICogLSAi
bG9hZCxwcm92aXNpb25hbCxmYWlsZWQiLCBjb25zdCBFd2tfRXJyb3IqOiB2aWV3IHByb3Zpc2lv
bmFsIGxvYWQgZmFpbGVkLgogICogLSAibG9hZCxwcm92aXNpb25hbCxyZWRpcmVjdCIsIHZvaWQ6
IHZpZXcgcmVjZWl2ZWQgcmVkaXJlY3QgZm9yIHByb3Zpc2lvbmFsIGxvYWQuCiAgKiAtICJsb2Fk
LHByb3Zpc2lvbmFsLHN0YXJ0ZWQiLCB2b2lkOiB2aWV3IHN0YXJ0ZWQgcHJvdmlzaW9uYWwgbG9h
ZC4KICAqIC0gInBvbGljeSxkZWNpc2lvbixuYXZpZ2F0aW9uIiwgRXdrX05hdmlnYXRpb25fUG9s
aWN5X0RlY2lzaW9uKjogYSBuYXZpZ2F0aW9uIHBvbGljeSBkZWNpc2lvbiBzaG91bGQgYmUgdGFr
ZW4uCkBAIC03MywxMiArNzMsMTIgQEAKICNpbmNsdWRlICJld2tfYmFja19mb3J3YXJkX2xpc3Qu
aCIKICNpbmNsdWRlICJld2tfY29udGV4dC5oIgogI2luY2x1ZGUgImV3a19kb3dubG9hZF9qb2Iu
aCIKKyNpbmNsdWRlICJld2tfZXJyb3IuaCIKICNpbmNsdWRlICJld2tfaW50ZW50LmgiCiAjaW5j
bHVkZSAiZXdrX3NldHRpbmdzLmgiCiAjaW5jbHVkZSAiZXdrX3RvdWNoLmgiCiAjaW5jbHVkZSAi
ZXdrX3VybF9yZXF1ZXN0LmgiCiAjaW5jbHVkZSAiZXdrX3VybF9yZXNwb25zZS5oIgotI2luY2x1
ZGUgImV3a193ZWJfZXJyb3IuaCIKICNpbmNsdWRlICJld2tfd2ViX3Jlc291cmNlLmgiCiAjaW5j
bHVkZSA8RXZhcy5oPgogCkBAIC0yMzAsNyArMjMwLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX0V3a19X
ZWJfUmVzb3VyY2VfTG9hZF9FcnJvciBFd2tfV2ViX1Jlc291cmNlX0xvYWRfRXJyb3I7CiAgKi8K
IHN0cnVjdCBfRXdrX1dlYl9SZXNvdXJjZV9Mb2FkX0Vycm9yIHsKICAgICBFd2tfV2ViX1Jlc291
cmNlICpyZXNvdXJjZTsgLyoqPCByZXNvdXJjZSB0aGF0IGZhaWxlZCBsb2FkaW5nICovCi0gICAg
RXdrX1dlYl9FcnJvciAqZXJyb3I7IC8qKjwgbG9hZCBlcnJvciAqLworICAgIEV3a19FcnJvciAq
ZXJyb3I7IC8qKjwgbG9hZCBlcnJvciAqLwogfTsKIAogLy8vIENyZWF0ZXMgYSB0eXBlIG5hbWUg
Zm9yIF9Fd2tfRG93bmxvYWRfSm9iX0Vycm9yLgpAQCAtMjQxLDcgKzI0MSw3IEBAIHR5cGVkZWYg
c3RydWN0IF9Fd2tfRG93bmxvYWRfSm9iX0Vycm9yIEV3a19Eb3dubG9hZF9Kb2JfRXJyb3I7CiAg
Ki8KIHN0cnVjdCBfRXdrX0Rvd25sb2FkX0pvYl9FcnJvciB7CiAgICAgRXdrX0Rvd25sb2FkX0pv
YiAqZG93bmxvYWRfam9iOyAvKio8IGRvd25sb2FkIHRoYXQgZmFpbGVkICovCi0gICAgRXdrX1dl
Yl9FcnJvciAqZXJyb3I7IC8qKjwgZG93bmxvYWQgZXJyb3IgKi8KKyAgICBFd2tfRXJyb3IgKmVy
cm9yOyAvKio8IGRvd25sb2FkIGVycm9yICovCiB9OwogCiAvKioKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X2xvYWRlcl9jbGllbnQuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfbG9hZGVyX2NsaWVudC5j
cHAKaW5kZXggOTk3Y2EzNS4uMTg2N2I1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfbG9hZGVyX2NsaWVudC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfbG9hZGVyX2NsaWVudC5jcHAKQEAgLTI4
LDE0ICsyOCwxNCBAQAogCiAjaW5jbHVkZSAiV0tGcmFtZS5oIgogI2luY2x1ZGUgImV3a19iYWNr
X2ZvcndhcmRfbGlzdF9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX2Vycm9yLmgiCisjaW5jbHVk
ZSAiZXdrX2Vycm9yX3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfaW50ZW50LmgiCiAjaW5jbHVk
ZSAiZXdrX2ludGVudF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX2ludGVudF9zZXJ2aWNlLmgi
CiAjaW5jbHVkZSAiZXdrX2ludGVudF9zZXJ2aWNlX3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tf
dmlld19sb2FkZXJfY2xpZW50X3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfdmlld19wcml2YXRl
LmgiCi0jaW5jbHVkZSAiZXdrX3dlYl9lcnJvci5oIgotI2luY2x1ZGUgImV3a193ZWJfZXJyb3Jf
cHJpdmF0ZS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNw
YWNlIFdlYktpdDsKQEAgLTkwLDEwICs5MCwxMCBAQCBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZFdp
dGhFcnJvckZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiBmcmFtZSwgV0tFcnJvclJlZgog
ICAgICAgICByZXR1cm47CiAKICAgICBFdmFzX09iamVjdCogZXdrVmlldyA9IHN0YXRpY19jYXN0
PEV2YXNfT2JqZWN0Kj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOwotICAgIEV3a19X
ZWJfRXJyb3IqIGV3a0Vycm9yID0gZXdrX3dlYl9lcnJvcl9uZXcoZXJyb3IpOworICAgIEV3a19F
cnJvciogZXdrRXJyb3IgPSBld2tfZXJyb3JfbmV3KGVycm9yKTsKICAgICBld2tfdmlld19sb2Fk
X2Vycm9yKGV3a1ZpZXcsIGV3a0Vycm9yKTsKICAgICBld2tfdmlld19sb2FkX2ZpbmlzaGVkKGV3
a1ZpZXcpOwotICAgIGV3a193ZWJfZXJyb3JfZnJlZShld2tFcnJvcik7CisgICAgZXdrX2Vycm9y
X2ZyZWUoZXdrRXJyb3IpOwogfQogCiBzdGF0aWMgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmIC8qdXNlckRh
dGEqLywgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKQEAgLTEyMCw5ICsxMjAsOSBAQCBzdGF0aWMg
dm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUoV0tQYWdlUmVmLCBX
S0ZyYW1lUmVmIGZyYW1lLAogICAgICAgICByZXR1cm47CiAKICAgICBFdmFzX09iamVjdCogZXdr
VmlldyA9IHN0YXRpY19jYXN0PEV2YXNfT2JqZWN0Kj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50
SW5mbykpOwotICAgIEV3a19XZWJfRXJyb3IqIGV3a0Vycm9yID0gZXdrX3dlYl9lcnJvcl9uZXco
ZXJyb3IpOworICAgIEV3a19FcnJvciogZXdrRXJyb3IgPSBld2tfZXJyb3JfbmV3KGVycm9yKTsK
ICAgICBld2tfdmlld19sb2FkX3Byb3Zpc2lvbmFsX2ZhaWxlZChld2tWaWV3LCBld2tFcnJvcik7
Ci0gICAgZXdrX3dlYl9lcnJvcl9mcmVlKGV3a0Vycm9yKTsKKyAgICBld2tfZXJyb3JfZnJlZShl
d2tFcnJvcik7CiB9CiAKIHN0YXRpYyB2b2lkIGRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdChXS1Bh
Z2VSZWYsIFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZiBhZGRlZEl0ZW0sIFdLQXJyYXlSZWYgcmVt
b3ZlZEl0ZW1zLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oCmluZGV4IDRjYmEyMmQuLjlh
ZTJjNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192
aWV3X3ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
dmlld19wcml2YXRlLmgKQEAgLTQzLDcgKzQzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX0V3a19Eb3du
bG9hZF9Kb2IgRXdrX0Rvd25sb2FkX0pvYjsKIHR5cGVkZWYgc3RydWN0IF9Fd2tfRm9ybV9TdWJt
aXNzaW9uX1JlcXVlc3QgRXdrX0Zvcm1fU3VibWlzc2lvbl9SZXF1ZXN0OwogdHlwZWRlZiBzdHJ1
Y3QgX0V3a19VcmxfUmVxdWVzdCBFd2tfVXJsX1JlcXVlc3Q7CiB0eXBlZGVmIHN0cnVjdCBfRXdr
X1VybF9SZXNwb25zZSBFd2tfVXJsX1Jlc3BvbnNlOwotdHlwZWRlZiBzdHJ1Y3QgX0V3a19XZWJf
RXJyb3IgRXdrX1dlYl9FcnJvcjsKK3R5cGVkZWYgc3RydWN0IF9Fd2tfRXJyb3IgRXdrX0Vycm9y
OwogdHlwZWRlZiBzdHJ1Y3QgX0V3a19XZWJfUmVzb3VyY2UgRXdrX1dlYl9SZXNvdXJjZTsKIHR5
cGVkZWYgc3RydWN0IF9Fd2tfTmF2aWdhdGlvbl9Qb2xpY3lfRGVjaXNpb24gRXdrX05hdmlnYXRp
b25fUG9saWN5X0RlY2lzaW9uOwogI2lmIEVOQUJMRShXRUJfSU5URU5UUykKQEAgLTU2LDcgKzU2
LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX0V3a19JbnRlbnRfU2VydmljZSBFd2tfSW50ZW50X1NlcnZp
Y2U7CiB2b2lkIGV3a192aWV3X2N1cnNvcl9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0
IFdlYkNvcmU6OkN1cnNvciYgY3Vyc29yKTsKIHZvaWQgZXdrX3ZpZXdfZGlzcGxheShFdmFzX09i
amVjdCogZXdrVmlldywgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCk7CiB2b2lkIGV3a192
aWV3X2Rvd25sb2FkX2pvYl9jYW5jZWxsZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19Eb3du
bG9hZF9Kb2IqKTsKLXZvaWQgZXdrX3ZpZXdfZG93bmxvYWRfam9iX2ZhaWxlZChFdmFzX09iamVj
dCogZXdrVmlldywgRXdrX0Rvd25sb2FkX0pvYiosIEV3a19XZWJfRXJyb3IqKTsKK3ZvaWQgZXdr
X3ZpZXdfZG93bmxvYWRfam9iX2ZhaWxlZChFdmFzX09iamVjdCogZXdrVmlldywgRXdrX0Rvd25s
b2FkX0pvYiosIEV3a19FcnJvciopOwogdm9pZCBld2tfdmlld19kb3dubG9hZF9qb2JfZmluaXNo
ZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19Eb3dubG9hZF9Kb2IqKTsKIHZvaWQgZXdrX3Zp
ZXdfZG93bmxvYWRfam9iX3JlcXVlc3RlZChFdmFzX09iamVjdCogZXdrVmlldywgRXdrX0Rvd25s
b2FkX0pvYiopOwogdm9pZCBld2tfdmlld19mb3JtX3N1Ym1pc3Npb25fcmVxdWVzdF9uZXcoRXZh
c19PYmplY3QqIGV3a1ZpZXcsIEV3a19Gb3JtX1N1Ym1pc3Npb25fUmVxdWVzdCopOwpAQCAtNjUs
MTAgKzY1LDEwIEBAIHZvaWQgZXdrX3ZpZXdfZnVsbF9zY3JlZW5fZW50ZXIoRXZhc19PYmplY3Qq
IGV3a1ZpZXcpOwogdm9pZCBld2tfdmlld19mdWxsX3NjcmVlbl9leGl0KEV2YXNfT2JqZWN0KiBl
d2tWaWV3KTsKICNlbmRpZgogdm9pZCBld2tfdmlld19pbWFnZV9kYXRhX3NldChFdmFzX09iamVj
dCogZXdrVmlldywgdm9pZCogaW1hZ2VEYXRhLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXpl
KTsKLXZvaWQgZXdrX3ZpZXdfbG9hZF9lcnJvcihFdmFzX09iamVjdCogZXdrVmlldywgY29uc3Qg
RXdrX1dlYl9FcnJvciogZXJyb3IpOwordm9pZCBld2tfdmlld19sb2FkX2Vycm9yKEV2YXNfT2Jq
ZWN0KiBld2tWaWV3LCBjb25zdCBFd2tfRXJyb3IqIGVycm9yKTsKIHZvaWQgZXdrX3ZpZXdfbG9h
ZF9maW5pc2hlZChFdmFzX09iamVjdCogZXdrVmlldyk7CiB2b2lkIGV3a192aWV3X2xvYWRfcHJv
Z3Jlc3NfY2hhbmdlZChFdmFzX09iamVjdCogZXdrVmlldywgZG91YmxlIHByb2dyZXNzKTsKLXZv
aWQgZXdrX3ZpZXdfbG9hZF9wcm92aXNpb25hbF9mYWlsZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcs
IGNvbnN0IEV3a19XZWJfRXJyb3IqIGVycm9yKTsKK3ZvaWQgZXdrX3ZpZXdfbG9hZF9wcm92aXNp
b25hbF9mYWlsZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IEV3a19FcnJvciogZXJyb3Ip
Owogdm9pZCBld2tfdmlld19sb2FkX3Byb3Zpc2lvbmFsX3JlZGlyZWN0KEV2YXNfT2JqZWN0KiBl
d2tWaWV3KTsKIHZvaWQgZXdrX3ZpZXdfbG9hZF9wcm92aXNpb25hbF9zdGFydGVkKEV2YXNfT2Jq
ZWN0KiBld2tWaWV3KTsKIHZvaWQgZXdrX3ZpZXdfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24o
RXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19OYXZpZ2F0aW9uX1BvbGljeV9EZWNpc2lvbiogZGVj
aXNpb24pOwpAQCAtNzYsNyArNzYsNyBAQCB2b2lkIGV3a192aWV3X25ld193aW5kb3dfcG9saWN5
X2RlY2lzaW9uKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfTmF2aWdhdGlvbl9Qbwogdm9pZCBl
d2tfdmlld19wYWdlX2Nsb3NlKEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKIFdLUGFnZVJlZiBld2tf
dmlld19wYWdlX2NyZWF0ZShFdmFzX09iamVjdCogZXdrVmlldyk7CiB2b2lkIGV3a192aWV3X3Rp
dGxlX2NoYW5nZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIqIHRpdGxlKTsKLXZv
aWQgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9mYWlsZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIHVp
bnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwgRXdrX1dlYl9FcnJvciogZXJyb3IpOwordm9pZCBl
d2tfdmlld19yZXNvdXJjZV9sb2FkX2ZhaWxlZChFdmFzX09iamVjdCogZXdrVmlldywgdWludDY0
X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBFd2tfRXJyb3IqIGVycm9yKTsKIHZvaWQgZXdrX3ZpZXdf
cmVzb3VyY2VfbG9hZF9maW5pc2hlZChFdmFzX09iamVjdCogZXdrVmlldywgdWludDY0X3QgcmVz
b3VyY2VJZGVudGlmaWVyKTsKIHZvaWQgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9pbml0aWF0ZWQo
RXZhc19PYmplY3QqIGV3a1ZpZXcsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwgRXdrX1dl
Yl9SZXNvdXJjZSogcmVzb3VyY2UsIEV3a19VcmxfUmVxdWVzdCogcmVxdWVzdCk7CiB2b2lkIGV3
a192aWV3X3Jlc291cmNlX2xvYWRfcmVzcG9uc2UoRXZhc19PYmplY3QqIGV3a1ZpZXcsIHVpbnQ2
NF90IHJlc291cmNlSWRlbnRpZmllciwgRXdrX1VybF9SZXNwb25zZSogcmVzcG9uc2UpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcmVzb3Vy
Y2VfbG9hZF9jbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3ZpZXdfcmVzb3VyY2VfbG9hZF9jbGllbnQuY3BwCmluZGV4IDExM2UxNzguLmY5NzgzOGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3Jlc291
cmNlX2xvYWRfY2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfdmlld19yZXNvdXJjZV9sb2FkX2NsaWVudC5jcHAKQEAgLTMyLDE0ICszMiwxNCBAQAog
I2luY2x1ZGUgIldLVVJMLmgiCiAjaW5jbHVkZSAiV0tVUkxSZXF1ZXN0LmgiCiAjaW5jbHVkZSAi
V0tVUkxSZXNwb25zZS5oIgorI2luY2x1ZGUgImV3a19lcnJvci5oIgorI2luY2x1ZGUgImV3a19l
cnJvcl9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3VybF9yZXF1ZXN0LmgiCiAjaW5jbHVkZSAi
ZXdrX3VybF9yZXF1ZXN0X3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfdXJsX3Jlc3BvbnNlLmgi
CiAjaW5jbHVkZSAiZXdrX3VybF9yZXNwb25zZV9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3Zp
ZXdfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a192aWV3X3Jlc291cmNlX2xvYWRfY2xpZW50X3By
aXZhdGUuaCIKLSNpbmNsdWRlICJld2tfd2ViX2Vycm9yLmgiCi0jaW5jbHVkZSAiZXdrX3dlYl9l
cnJvcl9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3dlYl9yZXNvdXJjZS5oIgogI2luY2x1ZGUg
ImV3a193ZWJfcmVzb3VyY2VfcHJpdmF0ZS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KQEAgLTg4LDEwICs4OCwxMCBAQCBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkRm9yUmVzb3Vy
Y2UoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCB1aW50NjRfdCByZXNvdXJjZUlkZQogCiBzdGF0aWMg
dm9pZCBkaWRGYWlsTG9hZEZvclJlc291cmNlKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgdWludDY0
X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBXS0Vycm9yUmVmIHdrRXJyb3IsIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pCiB7Ci0gICAgRXdrX1dlYl9FcnJvciogZXdrRXJyb3IgPSBld2tfd2ViX2Vycm9y
X25ldyh3a0Vycm9yKTsKKyAgICBFd2tfRXJyb3IqIGV3a0Vycm9yID0gZXdrX2Vycm9yX25ldyh3
a0Vycm9yKTsKICAgICBld2tfdmlld19yZXNvdXJjZV9sb2FkX2ZhaWxlZCh0b0V3a1ZpZXcoY2xp
ZW50SW5mbyksIHJlc291cmNlSWRlbnRpZmllciwgZXdrRXJyb3IpOwogICAgIGV3a192aWV3X3Jl
c291cmNlX2xvYWRfZmluaXNoZWQodG9Fd2tWaWV3KGNsaWVudEluZm8pLCByZXNvdXJjZUlkZW50
aWZpZXIpOwotICAgIGV3a193ZWJfZXJyb3JfZnJlZShld2tFcnJvcik7CisgICAgZXdrX2Vycm9y
X2ZyZWUoZXdrRXJyb3IpOwogfQogCiB2b2lkIGV3a192aWV3X3Jlc291cmNlX2xvYWRfY2xpZW50
X2F0dGFjaChXS1BhZ2VSZWYgcGFnZVJlZiwgRXZhc19PYmplY3QqIGV3a1ZpZXcpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfd2ViX2Vycm9yLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a193ZWJfZXJyb3IuY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MDM4MGJkLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a193ZWJfZXJyb3IuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsMTMwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9y
YXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJld2tfd2ViX2Vycm9yLmgiCi0KLSNpbmNsdWRlICJFcnJvcnNFZmwuaCIK
LSNpbmNsdWRlICJXS0VpbmFTaGFyZWRTdHJpbmcuaCIKLSNpbmNsdWRlICJXS1N0cmluZy5oIgot
I2luY2x1ZGUgIldLVVJMLmgiCi0jaW5jbHVkZSAiZXdrX3dlYl9lcnJvcl9wcml2YXRlLmgiCi0j
aW5jbHVkZSA8V0tBUElDYXN0Lmg+Ci0jaW5jbHVkZSA8V0tFcnJvci5oPgotI2luY2x1ZGUgPFdL
UmV0YWluUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotCi11c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KLXN0cnVjdCBfRXdrX1dl
Yl9FcnJvciB7Ci0gICAgV0tSZXRhaW5QdHI8V0tFcnJvclJlZj4gd2tFcnJvcjsKLQotICAgIFdL
RWluYVNoYXJlZFN0cmluZyB1cmw7Ci0gICAgV0tFaW5hU2hhcmVkU3RyaW5nIGRlc2NyaXB0aW9u
OwotCi0gICAgX0V3a19XZWJfRXJyb3IoV0tFcnJvclJlZiBlcnJvclJlZikKLSAgICAgICAgOiB3
a0Vycm9yKGVycm9yUmVmKQotICAgICAgICAsIHVybChBZG9wdFdLLCBXS0Vycm9yQ29weUZhaWxp
bmdVUkwoZXJyb3JSZWYpKQotICAgICAgICAsIGRlc2NyaXB0aW9uKEFkb3B0V0ssIFdLRXJyb3JD
b3B5TG9jYWxpemVkRGVzY3JpcHRpb24oZXJyb3JSZWYpKQotICAgIHsgfQotCi0gICAgfl9Fd2tf
V2ViX0Vycm9yKCkKLSAgICB7Ci0gICAgfQotfTsKLQotI2RlZmluZSBFV0tfV0VCX0VSUk9SX1dL
X0dFVF9PUl9SRVRVUk4oZXJyb3IsIHdrRXJyb3JfLCAuLi4pICAgIFwKLSAgICBpZiAoIShlcnJv
cikpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAg
ICBFSU5BX0xPR19DUklUKCJlcnJvciBpcyBOVUxMLiIpOyAgICAgICAgICAgICAgICAgICAgICBc
Ci0gICAgICAgIHJldHVybiBfX1ZBX0FSR1NfXzsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCi0gICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCi0gICAgaWYgKCEoZXJyb3IpLT53a0Vycm9yKSB7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBFSU5BX0xPR19DUklUKCJlcnJvci0+
d2tFcnJvciBpcyBOVUxMLiIpOyAgICAgICAgICAgIFwKLSAgICAgICAgcmV0dXJuIF9fVkFfQVJH
U19fOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBX
S0Vycm9yUmVmIHdrRXJyb3JfID0gKGVycm9yKS0+d2tFcnJvci5nZXQoKQotCi12b2lkIGV3a193
ZWJfZXJyb3JfZnJlZShFd2tfV2ViX0Vycm9yKiBlcnJvcikKLXsKLSAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTihlcnJvcik7Ci0KLSAgICBkZWxldGUgZXJyb3I7Ci19Ci0KLUV3a19XZWJf
RXJyb3JfVHlwZSBld2tfd2ViX2Vycm9yX3R5cGVfZ2V0KGNvbnN0IEV3a19XZWJfRXJyb3IqIGVy
cm9yKQotewotICAgIEVXS19XRUJfRVJST1JfV0tfR0VUX09SX1JFVFVSTihlcnJvciwgd2tFcnJv
ciwgRVdLX1dFQl9FUlJPUl9UWVBFX05PTkUpOwotCi0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdS
ZWY+IHdrRG9tYWluKEFkb3B0V0ssIFdLRXJyb3JDb3B5RG9tYWluKHdrRXJyb3IpKTsKLSAgICBX
VEY6OlN0cmluZyBlcnJvckRvbWFpbiA9IHRvV1RGU3RyaW5nKHdrRG9tYWluLmdldCgpKTsKLQot
ICAgIGlmIChlcnJvckRvbWFpbiA9PSBlcnJvckRvbWFpbk5ldHdvcmspCi0gICAgICAgIHJldHVy
biBFV0tfV0VCX0VSUk9SX1RZUEVfTkVUV09SSzsKLSAgICBpZiAoZXJyb3JEb21haW4gPT0gZXJy
b3JEb21haW5Qb2xpY3kpCi0gICAgICAgIHJldHVybiBFV0tfV0VCX0VSUk9SX1RZUEVfUE9MSUNZ
OwotICAgIGlmIChlcnJvckRvbWFpbiA9PSBlcnJvckRvbWFpblBsdWdpbikKLSAgICAgICAgcmV0
dXJuIEVXS19XRUJfRVJST1JfVFlQRV9QTFVHSU47Ci0gICAgaWYgKGVycm9yRG9tYWluID09IGVy
cm9yRG9tYWluRG93bmxvYWQpCi0gICAgICAgIHJldHVybiBFV0tfV0VCX0VSUk9SX1RZUEVfRE9X
TkxPQUQ7Ci0gICAgaWYgKGVycm9yRG9tYWluID09IGVycm9yRG9tYWluUHJpbnQpCi0gICAgICAg
IHJldHVybiBFV0tfV0VCX0VSUk9SX1RZUEVfUFJJTlQ7Ci0gICAgcmV0dXJuIEVXS19XRUJfRVJS
T1JfVFlQRV9JTlRFUk5BTDsKLX0KLQotY29uc3QgY2hhciogZXdrX3dlYl9lcnJvcl91cmxfZ2V0
KGNvbnN0IEV3a19XZWJfRXJyb3IqIGVycm9yKQotewotICAgIEVJTkFfU0FGRVRZX09OX05VTExf
UkVUVVJOX1ZBTChlcnJvciwgMCk7Ci0KLSAgICByZXR1cm4gZXJyb3ItPnVybDsKLX0KLQotaW50
IGV3a193ZWJfZXJyb3JfY29kZV9nZXQoY29uc3QgRXdrX1dlYl9FcnJvciogZXJyb3IpCi17Ci0g
ICAgRVdLX1dFQl9FUlJPUl9XS19HRVRfT1JfUkVUVVJOKGVycm9yLCB3a0Vycm9yLCAwKTsKLQot
ICAgIHJldHVybiBXS0Vycm9yR2V0RXJyb3JDb2RlKHdrRXJyb3IpOwotfQotCi1jb25zdCBjaGFy
KiBld2tfd2ViX2Vycm9yX2Rlc2NyaXB0aW9uX2dldChjb25zdCBFd2tfV2ViX0Vycm9yKiBlcnJv
cikKLXsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoZXJyb3IsIDApOwotCi0g
ICAgcmV0dXJuIGVycm9yLT5kZXNjcmlwdGlvbjsKLX0KLQotRWluYV9Cb29sIGV3a193ZWJfZXJy
b3JfY2FuY2VsbGF0aW9uX2dldChjb25zdCBFd2tfV2ViX0Vycm9yKiBlcnJvcikKLXsKLSAgICBF
V0tfV0VCX0VSUk9SX1dLX0dFVF9PUl9SRVRVUk4oZXJyb3IsIHdrRXJyb3IsIGZhbHNlKTsKLQot
ICAgIHJldHVybiB0b0ltcGwod2tFcnJvciktPnBsYXRmb3JtRXJyb3IoKS5pc0NhbmNlbGxhdGlv
bigpOwotfQotCi1Fd2tfV2ViX0Vycm9yKiBld2tfd2ViX2Vycm9yX25ldyhXS0Vycm9yUmVmIGVy
cm9yKQotewotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChlcnJvciwgMCk7Ci0K
LSAgICByZXR1cm4gbmV3IEV3a19XZWJfRXJyb3IoZXJyb3IpOwotfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3dlYl9lcnJvci5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3dlYl9lcnJvci5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA0YmEwYzdhLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a193ZWJfZXJyb3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDEyNCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0vKioKLSAqIEBmaWxlICAgIGV3a193ZWJfZXJyb3Iu
aAotICogQGJyaWVmICAgRGVzY3JpYmVzIHRoZSBXZWIgRXJyb3IgQVBJLgotICovCi0KLSNpZm5k
ZWYgZXdrX3dlYl9lcnJvcl9oCi0jZGVmaW5lIGV3a193ZWJfZXJyb3JfaAotCi0jaW5jbHVkZSA8
RWluYS5oPgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KLS8q
KiBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciBAYSBFd2tfV2ViX0Vycm9yLiAqLwotdHlwZWRlZiBz
dHJ1Y3QgX0V3a19XZWJfRXJyb3IgRXdrX1dlYl9FcnJvcjsKLQotLy8vIENyZWF0ZXMgYSB0eXBl
IG5hbWUgZm9yIEV3a19XZWJfRXJyb3JfVHlwZS4KLXR5cGVkZWYgZW51bSB7Ci0gICAgRVdLX1dF
Ql9FUlJPUl9UWVBFX05PTkUsCi0gICAgRVdLX1dFQl9FUlJPUl9UWVBFX0lOVEVSTkFMLAotICAg
IEVXS19XRUJfRVJST1JfVFlQRV9ORVRXT1JLLAotICAgIEVXS19XRUJfRVJST1JfVFlQRV9QT0xJ
Q1ksCi0gICAgRVdLX1dFQl9FUlJPUl9UWVBFX1BMVUdJTiwKLSAgICBFV0tfV0VCX0VSUk9SX1RZ
UEVfRE9XTkxPQUQsCi0gICAgRVdLX1dFQl9FUlJPUl9UWVBFX1BSSU5UCi19IEV3a19XZWJfRXJy
b3JfVHlwZTsKLQotLyoqCi0gKiBGcmVlcyB0aGUgZ2l2ZW4gb2JqZWN0LgotICoKLSAqIEBwYXJh
bSBlcnJvciB0aGUgZXJyb3Igb2JqZWN0IHRvIGZyZWUKLSAqLwotRUFQSSB2b2lkIGV3a193ZWJf
ZXJyb3JfZnJlZShFd2tfV2ViX0Vycm9yICplcnJvcik7Ci0KLS8qKgotICogUXVlcnkgdHlwZSBm
b3IgdGhpcyBlcnJvci4KLSAqCi0gKiBAcGFyYW0gZXJyb3IgZXJyb3Igb2JqZWN0IHRvIHF1ZXJ5
LgotICoKLSAqIEByZXR1cm4gdGhlIGVycm9yIHR5cGUsIHRoYXQgbWF5IGJlIEBjIE5VTEwuIFRo
aXMgcG9pbnRlciBpcwotICogICAgICAgICBndWFyYW50ZWVkIHRvIGJlIGVpbmFfc3RyaW5nc2hh
cmUsIHNvIHdoZW5ldmVyIHBvc3NpYmxlCi0gKiAgICAgICAgIHNhdmUgeW91cnNlbGYgc29tZSBj
cHUgY3ljbGVzIGFuZCB1c2UKLSAqICAgICAgICAgZWluYV9zdHJpbmdzaGFyZV9yZWYoKSBpbnN0
ZWFkIG9mIGVpbmFfc3RyaW5nc2hhcmVfYWRkKCkgb3IKLSAqICAgICAgICAgc3RyZHVwKCkuCi0g
Ki8KLUVBUEkgRXdrX1dlYl9FcnJvcl9UeXBlIGV3a193ZWJfZXJyb3JfdHlwZV9nZXQoY29uc3Qg
RXdrX1dlYl9FcnJvciAqZXJyb3IpOwotCi0vKioKLSAqIFF1ZXJ5IGZhaWxpbmcgVVJMIGZvciB0
aGlzIGVycm9yLgotICoKLSAqIFVSTCB0aGF0IGZhaWxlZCBsb2FkaW5nLgotICoKLSAqIEBwYXJh
bSBlcnJvciBlcnJvciBvYmplY3QgdG8gcXVlcnkuCi0gKgotICogQHJldHVybiB0aGUgVVJMIHBv
aW50ZXIsIHRoYXQgbWF5IGJlIEBjIE5VTEwuIFRoaXMgcG9pbnRlciBpcwotICogICAgICAgICBn
dWFyYW50ZWVkIHRvIGJlIGVpbmFfc3RyaW5nc2hhcmUsIHNvIHdoZW5ldmVyIHBvc3NpYmxlCi0g
KiAgICAgICAgIHNhdmUgeW91cnNlbGYgc29tZSBjcHUgY3ljbGVzIGFuZCB1c2UKLSAqICAgICAg
ICAgZWluYV9zdHJpbmdzaGFyZV9yZWYoKSBpbnN0ZWFkIG9mIGVpbmFfc3RyaW5nc2hhcmVfYWRk
KCkgb3IKLSAqICAgICAgICAgc3RyZHVwKCkuCi0gKi8KLUVBUEkgY29uc3QgY2hhciAqZXdrX3dl
Yl9lcnJvcl91cmxfZ2V0KGNvbnN0IEV3a19XZWJfRXJyb3IgKmVycm9yKTsKLQotLyoqCi0gKiBR
dWVyeSBIVFRQIGVycm9yIGNvZGUuCi0gKgotICogQHBhcmFtIGVycm9yIGVycm9yIG9iamVjdCB0
byBxdWVyeS4KLSAqCi0gKiBAcmV0dXJuIHRoZSBIVFRQIGVycm9yIGNvZGUuCi0gKi8KLUVBUEkg
aW50IGV3a193ZWJfZXJyb3JfY29kZV9nZXQoY29uc3QgRXdrX1dlYl9FcnJvciAqZXJyb3IpOwot
Ci0vKioKLSAqIFF1ZXJ5IGRlc2NyaXB0aW9uIGZvciB0aGlzIGVycm9yLgotICoKLSAqIEBwYXJh
bSBlcnJvciBlcnJvciBvYmplY3QgdG8gcXVlcnkuCi0gKgotICogQHJldHVybiB0aGUgZGVzY3Jp
cHRpb24gcG9pbnRlciwgdGhhdCBtYXkgYmUgQGMgTlVMTC4gVGhpcyBwb2ludGVyIGlzCi0gKiAg
ICAgICAgIGd1YXJhbnRlZWQgdG8gYmUgZWluYV9zdHJpbmdzaGFyZSwgc28gd2hlbmV2ZXIgcG9z
c2libGUKLSAqICAgICAgICAgc2F2ZSB5b3Vyc2VsZiBzb21lIGNwdSBjeWNsZXMgYW5kIHVzZQot
ICogICAgICAgICBlaW5hX3N0cmluZ3NoYXJlX3JlZigpIGluc3RlYWQgb2YgZWluYV9zdHJpbmdz
aGFyZV9hZGQoKSBvcgotICogICAgICAgICBzdHJkdXAoKS4KLSAqLwotRUFQSSBjb25zdCBjaGFy
ICpld2tfd2ViX2Vycm9yX2Rlc2NyaXB0aW9uX2dldChjb25zdCBFd2tfV2ViX0Vycm9yICplcnJv
cik7Ci0KLS8qKgotICogUXVlcnkgaWYgZXJyb3Igc2hvdWxkIGJlIHRyZWF0ZWQgYXMgYSBjYW5j
ZWxsYXRpb24uCi0gKgotICogQHBhcmFtIGVycm9yIGVycm9yIG9iamVjdCB0byBxdWVyeS4KLSAq
Ci0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiB0aGlzIGVycm9yIHNob3VsZCBiZSB0cmVhdGVk
IGFzIGEgY2FuY2VsbGF0aW9uLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQotICovCi1FQVBJIEVp
bmFfQm9vbCBld2tfd2ViX2Vycm9yX2NhbmNlbGxhdGlvbl9nZXQoY29uc3QgRXdrX1dlYl9FcnJv
ciAqZXJyb3IpOwotCi0jaWZkZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRpZgotCi0jZW5kaWYgLy8g
ZXdrX3dlYl9lcnJvcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfd2ViX2Vycm9yX3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a193ZWJfZXJyb3JfcHJpdmF0ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBjOWEzMWU1Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a193ZWJfZXJyb3JfcHJpdmF0ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBld2tfd2ViX2Vycm9yX3ByaXZhdGVfaAot
I2RlZmluZSBld2tfd2ViX2Vycm9yX3ByaXZhdGVfaAotCi0jaW5jbHVkZSA8V0tFcnJvci5oPgot
Ci10eXBlZGVmIHN0cnVjdCBfRXdrX1dlYl9FcnJvciBFd2tfV2ViX0Vycm9yOwotCi1Fd2tfV2Vi
X0Vycm9yKiBld2tfd2ViX2Vycm9yX25ldyhXS0Vycm9yUmVmIGVycm9yKTsKLQotI2VuZGlmIC8v
IGV3a193ZWJfZXJyb3JfcHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfY29va2llX21hbmFnZXIuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2Nvb2tpZV9tYW5hZ2Vy
LmNwcAppbmRleCA0MzUzY2VkLi44YzlmZGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfY29va2llX21hbmFnZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9jb29raWVf
bWFuYWdlci5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgc3RhdGljIHZvaWQgc2VydmVyQ2FsbGJhY2so
U291cFNlcnZlciogc2VydmVyLCBTb3VwTWVzc2FnZSogbWVzc2FnZSwgY29uc3QgY2hhcioKICAg
ICBzb3VwX21lc3NhZ2VfYm9keV9jb21wbGV0ZShtZXNzYWdlLT5yZXNwb25zZV9ib2R5KTsKIH0K
IAotc3RhdGljIHZvaWQgZ2V0QWNjZXB0UG9saWN5Q2FsbGJhY2soRXdrX0Nvb2tpZV9BY2NlcHRf
UG9saWN5IHBvbGljeSwgRXdrX1dlYl9FcnJvciogZXJyb3IsIHZvaWQqIGV2ZW50X2luZm8pCitz
dGF0aWMgdm9pZCBnZXRBY2NlcHRQb2xpY3lDYWxsYmFjayhFd2tfQ29va2llX0FjY2VwdF9Qb2xp
Y3kgcG9saWN5LCBFd2tfRXJyb3IqIGVycm9yLCB2b2lkKiBldmVudF9pbmZvKQogewogICAgIEFT
U0VSVF9GQUxTRShlcnJvcik7CiAgICAgRXdrX0Nvb2tpZV9BY2NlcHRfUG9saWN5KiByZXQgPSBz
dGF0aWNfY2FzdDxFd2tfQ29va2llX0FjY2VwdF9Qb2xpY3kqPihldmVudF9pbmZvKTsKQEAgLTgx
LDcgKzgxLDcgQEAgc3RhdGljIEV3a19Db29raWVfQWNjZXB0X1BvbGljeSBnZXRBY2NlcHRQb2xp
Y3koRXdrX0Nvb2tpZV9NYW5hZ2VyKiBtYW5hZ2VyKQogICAgIHJldHVybiBwb2xpY3k7CiB9CiAK
LXN0YXRpYyB2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzQ2FsbGJhY2soRWluYV9MaXN0KiBo
b3N0bmFtZXMsIEV3a19XZWJfRXJyb3IqIGVycm9yLCB2b2lkKiBldmVudF9pbmZvKQorc3RhdGlj
IHZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXNDYWxsYmFjayhFaW5hX0xpc3QqIGhvc3RuYW1l
cywgRXdrX0Vycm9yKiBlcnJvciwgdm9pZCogZXZlbnRfaW5mbykKIHsKICAgICBBU1NFUlRfRkFM
U0UoZXJyb3IpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC90ZXN0cy90ZXN0X2V3azJfZG93bmxvYWRfam9iLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9kb3dubG9hZF9qb2IuY3BwCmluZGV4IDIyYzk3
YWEuLmQyODEyMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L3Rlc3RzL3Rlc3RfZXdrMl9kb3dubG9hZF9qb2IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9kb3dubG9hZF9qb2IuY3BwCkBAIC0xMzEs
NyArMTMxLDcgQEAgc3RhdGljIHZvaWQgb25fZG93bmxvYWRfY2FuY2VsbGVkKHZvaWQqIHVzZXJE
YXRhLCBFdmFzX09iamVjdCogd2Vidmlldywgdm9pZCogZXYKIHN0YXRpYyB2b2lkIG9uX2Rvd25s
b2FkX2ZhaWxlZCh2b2lkKiB1c2VyRGF0YSwgRXZhc19PYmplY3QqIHdlYnZpZXcsIHZvaWQqIGV2
ZW50SW5mbykKIHsKICAgICBFd2tfRG93bmxvYWRfSm9iX0Vycm9yKiBkb3dubG9hZEVycm9yID0g
c3RhdGljX2Nhc3Q8RXdrX0Rvd25sb2FkX0pvYl9FcnJvcio+KGV2ZW50SW5mbyk7Ci0gICAgZnBy
aW50ZihzdGRlcnIsICJEb3dubG9hZCBlcnJvcjogJXNcbiIsIGV3a193ZWJfZXJyb3JfZGVzY3Jp
cHRpb25fZ2V0KGRvd25sb2FkRXJyb3ItPmVycm9yKSk7CisgICAgZnByaW50ZihzdGRlcnIsICJE
b3dubG9hZCBlcnJvcjogJXNcbiIsIGV3a19lcnJvcl9kZXNjcmlwdGlvbl9nZXQoZG93bmxvYWRF
cnJvci0+ZXJyb3IpKTsKICAgICBlY29yZV9tYWluX2xvb3BfcXVpdCgpOwogICAgIEZBSUwoKTsK
IH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBh
MTEyN2IyLi5hMmQ3YmI1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDktMjggIEpvbmdzZW9rIFlhbmcgIDxq
czQ1LnlhbmdAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bV0syXSBSZW1vdmUgIndlYiIg
d29yZCBmcm9tIGV3a193ZWJfZXJyb3IgQVBJcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc4ODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgIndlYiIgd29yZCBmcm9tIGV3a193ZWJfZXJyb3Ig
QVBJcy4KKyAgICAgICAgIndlYiIgd29yZCB3YXMgcmVkdW5kYW50IGJlY2F1c2UgImV3ayIgbWVh
bnMgIkVGTCBXZWJLaXQiIGFuZCBXSyBBUElzIGZvciBlcnJvciBkb2VzIG5vdCBoYXZlICJ3ZWIi
IHdvcmQuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9lZmwvbWFpbi5jOgorICAgICAgICAob25f
ZXJyb3IpOgorCiAyMDEyLTA5LTI3ICBBbGV4YW5kcmUgRWxpYXMgIDxhZWxpYXNAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gRHVtcFJlbmRlclRyZWUgc3VwcG9ydCBmb3Igc29m
dHdhcmUgY29tcG9zaXRpbmcKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL2VmbC9tYWlu
LmMgYi9Ub29scy9NaW5pQnJvd3Nlci9lZmwvbWFpbi5jCmluZGV4IGI0NGU1MTQuLmYwYzc3Mzcg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL2VmbC9tYWluLmMKKysrIGIvVG9vbHMvTWlu
aUJyb3dzZXIvZWZsL21haW4uYwpAQCAtMTg3LDEzICsxODcsMTMgQEAgc3RhdGljIHZvaWQKIG9u
X2Vycm9yKHZvaWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKndlYnZpZXcsIHZvaWQgKmV2ZW50
X2luZm8pCiB7CiAgICAgRWluYV9TdHJidWYqIGJ1ZmZlcjsKLSAgICBjb25zdCBFd2tfV2ViX0Vy
cm9yICplcnJvciA9IChjb25zdCBFd2tfV2ViX0Vycm9yICopZXZlbnRfaW5mbzsKKyAgICBjb25z
dCBFd2tfRXJyb3IgKmVycm9yID0gKGNvbnN0IEV3a19FcnJvciAqKWV2ZW50X2luZm87CiAKICAg
ICBidWZmZXIgPSBlaW5hX3N0cmJ1Zl9uZXcoKTsKICAgICBlaW5hX3N0cmJ1Zl9hcHBlbmRfcHJp
bnRmKGJ1ZmZlciwgIjxodG1sPjxib2R5PjxkaXYgc3R5bGU9XCJjb2xvcjojZmYwMDAwXCI+RVJS
T1IhPC9kaXY+PGJyPjxkaXY+Q29kZTogJWQ8YnI+RGVzY3JpcHRpb246ICVzPGJyPlVSTDogJXM8
L2Rpdj48L2JvZHk8L2h0bWw+IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV3a193
ZWJfZXJyb3JfY29kZV9nZXQoZXJyb3IpLCBld2tfd2ViX2Vycm9yX2Rlc2NyaXB0aW9uX2dldChl
cnJvciksIGV3a193ZWJfZXJyb3JfdXJsX2dldChlcnJvcikpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZXdrX2Vycm9yX2NvZGVfZ2V0KGVycm9yKSwgZXdrX2Vycm9yX2Rlc2NyaXB0
aW9uX2dldChlcnJvciksIGV3a19lcnJvcl91cmxfZ2V0KGVycm9yKSk7CiAKLSAgICBld2tfdmll
d19odG1sX3N0cmluZ19sb2FkKHdlYnZpZXcsIGVpbmFfc3RyYnVmX3N0cmluZ19nZXQoYnVmZmVy
KSwgMCwgZXdrX3dlYl9lcnJvcl91cmxfZ2V0KGVycm9yKSk7CisgICAgZXdrX3ZpZXdfaHRtbF9z
dHJpbmdfbG9hZCh3ZWJ2aWV3LCBlaW5hX3N0cmJ1Zl9zdHJpbmdfZ2V0KGJ1ZmZlciksIDAsIGV3
a19lcnJvcl91cmxfZ2V0KGVycm9yKSk7CiAgICAgZWluYV9zdHJidWZfZnJlZShidWZmZXIpOwog
fQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167218</attachid>
            <date>2012-10-04 17:55:45 -0700</date>
            <delta_ts>2012-10-05 02:02:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>47463</size>
            <attacher name="Jongseok Yang">js45.yang</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBlNGQ1ZGZiLi5jZTYzMmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTMg
QEAKKzIwMTItMDktMjggIEpvbmdzZW9rIFlhbmcgIDxqczQ1LnlhbmdAc2Ftc3VuZy5jb20+CisK
KyAgICAgICAgW0VGTF1bV0syXSBSZW1vdmUgIndlYiIgd29yZCBmcm9tIGV3a193ZWJfZXJyb3Ig
QVBJcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc4
ODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1v
dmUgIndlYiIgd29yZCBmcm9tIGV3a193ZWJfZXJyb3IgQVBJcy4KKyAgICAgICAgIndlYiIgd29y
ZCB3YXMgcmVkdW5kYW50IGJlY2F1c2UgImV3ayIgbWVhbnMgIkVGTCBXZWJLaXQiIGFuZCBXSyBB
UElzIGZvciBlcnJvciBkb2VzIG5vdCBoYXZlICJ3ZWIiIHdvcmQuCisKKyAgICAgICAgKiBQbGF0
Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X2Rvd25sb2FkX2NsaWVudC5j
cHA6CisgICAgICAgIChkaWRGYWlsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tf
Y29va2llX21hbmFnZXIuY3BwOgorICAgICAgICAoZ2V0QWNjZXB0UG9saWN5Q2FsbGJhY2spOgor
ICAgICAgICAoZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXNDYWxsYmFjayk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX2Nvb2tpZV9tYW5hZ2VyLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX2Rvd25sb2FkX2pvYl9wcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX2Vycm9yLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a193ZWJfZXJyb3IuY3BwLgorICAgICAgICAoX0V3a19FcnJvcik6Cisg
ICAgICAgIChfRXdrX0Vycm9yOjpfRXdrX0Vycm9yKToKKyAgICAgICAgKF9Fd2tfRXJyb3I6On5f
RXdrX0Vycm9yKToKKyAgICAgICAgKGV3a19lcnJvcl9mcmVlKToKKyAgICAgICAgKGV3a19lcnJv
cl90eXBlX2dldCk6CisgICAgICAgIChld2tfZXJyb3JfdXJsX2dldCk6CisgICAgICAgIChld2tf
ZXJyb3JfY29kZV9nZXQpOgorICAgICAgICAoZXdrX2Vycm9yX2Rlc2NyaXB0aW9uX2dldCk6Cisg
ICAgICAgIChld2tfZXJyb3JfY2FuY2VsbGF0aW9uX2dldCk6CisgICAgICAgIChld2tfZXJyb3Jf
bmV3KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfZXJyb3IuaDogUmVuYW1lZCBm
cm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a193ZWJfZXJyb3IuaC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfZXJyb3JfcHJpdmF0ZS5oOiBSZW5hbWVkIGZy
b20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3dlYl9lcnJvcl9wcml2YXRl
LmguCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwOgorICAgICAgICAo
ZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9mYWlsZWQpOgorICAgICAgICAoZXdrX3ZpZXdfZG93bmxv
YWRfam9iX2ZhaWxlZCk6CisgICAgICAgIChld2tfdmlld19sb2FkX2Vycm9yKToKKyAgICAgICAg
KGV3a192aWV3X2xvYWRfcHJvdmlzaW9uYWxfZmFpbGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfdmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3
X2xvYWRlcl9jbGllbnQuY3BwOgorICAgICAgICAoZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JGcmFt
ZSk6CisgICAgICAgIChkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19yZXNvdXJjZV9sb2FkX2NsaWVudC5jcHA6Cisg
ICAgICAgIChkaWRGYWlsTG9hZEZvclJlc291cmNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2VmbC90ZXN0cy90ZXN0X2V3azJfY29va2llX21hbmFnZXIuY3BwOgorICAgICAgICAoZ2V0QWNj
ZXB0UG9saWN5Q2FsbGJhY2spOgorICAgICAgICAoZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXNDYWxs
YmFjayk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2Rvd25s
b2FkX2pvYi5jcHA6CisgICAgICAgIChvbl9kb3dubG9hZF9mYWlsZWQpOgorCiAyMDEyLTA5LTI3
ICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc4MjMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UK
aW5kZXggZDM5MzJiNi4uMGI4ZWI1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZv
cm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTQ3
LDYgKzQ3LDcgQEAgTElTVChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX2NvbnRleHRfcmVxdWVzdF9tYW5hZ2VyX2NsaWVudC5jcHAKICAgICBVSVByb2Nl
c3MvQVBJL2VmbC9ld2tfY29va2llX21hbmFnZXIuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX2Rvd25sb2FkX2pvYi5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfZXJyb3IuY3Bw
CiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Zvcm1fc3VibWlzc2lvbl9yZXF1ZXN0LmNwcAog
ICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19pbnRlbnQuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX2ludGVudF9zZXJ2aWNlLmNwcApAQCAtNjQsNyArNjUsNiBAQCBMSVNUKEFQUEVORCBX
ZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wb2xpY3lfY2xp
ZW50LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3Jlc291cmNlX2xvYWRfY2xp
ZW50LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3VpX2NsaWVudC5jcHAKLSAg
ICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfd2ViX2Vycm9yLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkv
ZWZsL2V3a193ZWJfcmVzb3VyY2UuY3BwCiAKICAgICBVSVByb2Nlc3MvY2Fpcm8vQmFja2luZ1N0
b3JlQ2Fpcm8uY3BwCkBAIC0yMTcsNiArMjE3LDcgQEAgU0VUIChFV2ViS2l0Ml9IRUFERVJTCiAg
ICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29u
dGV4dC5oIgogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX2Nvb2tpZV9tYW5hZ2VyLmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElS
fS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfZG93bmxvYWRfam9iLmgiCisgICAgIiR7Q01BS0VfQ1VS
UkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfZXJyb3IuaCIKICAgICAiJHtD
TUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19mb3JtX3N1Ym1p
c3Npb25fcmVxdWVzdC5oIgogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2ludGVudC5oIgogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJ
Un0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2ludGVudF9zZXJ2aWNlLmgiCkBAIC0yMjksNyArMjMw
LDYgQEAgU0VUIChFV2ViS2l0Ml9IRUFERVJTCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0Vf
RElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3Jlc3BvbnNlLmgiCiAgICAgIiR7Q01BS0Vf
Q1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3NjaGVtZV9yZXF1
ZXN0LmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfdmlldy5oIgotICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX3dlYl9lcnJvci5oIgogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJ
Un0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3dlYl9yZXNvdXJjZS5oIgogKQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaAppbmRleCAxM2VmYWIxLi42ZDE0ZDhl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmgKQEAgLTMz
LDYgKzMzLDcgQEAKICNpbmNsdWRlICJld2tfY29udGV4dC5oIgogI2luY2x1ZGUgImV3a19jb29r
aWVfbWFuYWdlci5oIgogI2luY2x1ZGUgImV3a19kb3dubG9hZF9qb2IuaCIKKyNpbmNsdWRlICJl
d2tfZXJyb3IuaCIKICNpbmNsdWRlICJld2tfZm9ybV9zdWJtaXNzaW9uX3JlcXVlc3QuaCIKICNp
bmNsdWRlICJld2tfaW50ZW50LmgiCiAjaW5jbHVkZSAiZXdrX2ludGVudF9zZXJ2aWNlLmgiCkBA
IC00NSw3ICs0Niw2IEBACiAjaW5jbHVkZSAiZXdrX3VybF9yZXNwb25zZS5oIgogI2luY2x1ZGUg
ImV3a191cmxfc2NoZW1lX3JlcXVlc3QuaCIKICNpbmNsdWRlICJld2tfdmlldy5oIgotI2luY2x1
ZGUgImV3a193ZWJfZXJyb3IuaCIKICNpbmNsdWRlICJld2tfd2ViX3Jlc291cmNlLmgiCiAKICNl
bmRpZiAvLyBFV2ViS2l0Ml9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfY29udGV4dF9kb3dubG9hZF9jbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfZG93bmxvYWRfY2xpZW50LmNwcAppbmRleCA5
ZDkyNGJmLi41NjkwOTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfY29udGV4dF9kb3dubG9hZF9jbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X2Rvd25sb2FkX2NsaWVudC5jcHAKQEAgLTMz
LDExICszMywxMSBAQAogI2luY2x1ZGUgImV3a19jb250ZXh0X3ByaXZhdGUuaCIKICNpbmNsdWRl
ICJld2tfZG93bmxvYWRfam9iLmgiCiAjaW5jbHVkZSAiZXdrX2Rvd25sb2FkX2pvYl9wcml2YXRl
LmgiCisjaW5jbHVkZSAiZXdrX2Vycm9yLmgiCisjaW5jbHVkZSAiZXdrX2Vycm9yX3ByaXZhdGUu
aCIKICNpbmNsdWRlICJld2tfdXJsX3Jlc3BvbnNlLmgiCiAjaW5jbHVkZSAiZXdrX3VybF9yZXNw
b25zZV9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0ZS5oIgotI2luY2x1ZGUg
ImV3a193ZWJfZXJyb3IuaCIKLSNpbmNsdWRlICJld2tfd2ViX2Vycm9yX3ByaXZhdGUuaCIKICNp
bmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKQEAgLTk1
LDEwICs5NSwxMCBAQCBzdGF0aWMgdm9pZCBkaWRGYWlsKFdLQ29udGV4dFJlZiwgV0tEb3dubG9h
ZFJlZiB3a0Rvd25sb2FkLCBXS0Vycm9yUmVmIGVycm9yLCBjbwogICAgIEV3a19Eb3dubG9hZF9K
b2IqIGRvd25sb2FkID0gZXdrX2NvbnRleHRfZG93bmxvYWRfam9iX2dldCh0b0V3a0NvbnRleHQo
Y2xpZW50SW5mbyksIGRvd25sb2FkSWQpOwogICAgIEFTU0VSVChkb3dubG9hZCk7CiAKLSAgICBF
d2tfV2ViX0Vycm9yKiBld2tFcnJvciA9IGV3a193ZWJfZXJyb3JfbmV3KGVycm9yKTsKKyAgICBF
d2tfRXJyb3IqIGV3a0Vycm9yID0gZXdrX2Vycm9yX25ldyhlcnJvcik7CiAgICAgZXdrX2Rvd25s
b2FkX2pvYl9zdGF0ZV9zZXQoZG93bmxvYWQsIEVXS19ET1dOTE9BRF9KT0JfU1RBVEVfRkFJTEVE
KTsKICAgICBld2tfdmlld19kb3dubG9hZF9qb2JfZmFpbGVkKGV3a19kb3dubG9hZF9qb2Jfdmll
d19nZXQoZG93bmxvYWQpLCBkb3dubG9hZCwgZXdrRXJyb3IpOwotICAgIGV3a193ZWJfZXJyb3Jf
ZnJlZShld2tFcnJvcik7CisgICAgZXdrX2Vycm9yX2ZyZWUoZXdrRXJyb3IpOwogICAgIGV3a19j
b250ZXh0X2Rvd25sb2FkX2pvYl9yZW1vdmUodG9Fd2tDb250ZXh0KGNsaWVudEluZm8pLCBkb3du
bG9hZElkKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX2Nvb2tpZV9tYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19jb29raWVfbWFuYWdlci5jcHAKaW5kZXggNDVkZDc1ZS4uYTUyMDQ3MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nvb2tpZV9tYW5hZ2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29va2llX21h
bmFnZXIuY3BwCkBAIC0zMyw4ICszMyw4IEBACiAjaW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKICNp
bmNsdWRlICJXS1N0cmluZy5oIgogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXJQcm94eS5oIgor
I2luY2x1ZGUgImV3a19lcnJvcl9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIK
LSNpbmNsdWRlICJld2tfd2ViX2Vycm9yX3ByaXZhdGUuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTE0MiwxMiAr
MTQyLDEyIEBAIHN0cnVjdCBHZXRfUG9saWN5X0FzeW5jX0RhdGEgewogc3RhdGljIHZvaWQgZ2V0
QWNjZXB0UG9saWN5Q2FsbGJhY2soV0tIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSwgV0tF
cnJvclJlZiB3a0Vycm9yLCB2b2lkKiBkYXRhKQogewogICAgIEdldF9Qb2xpY3lfQXN5bmNfRGF0
YSogY2FsbGJhY2tEYXRhID0gc3RhdGljX2Nhc3Q8R2V0X1BvbGljeV9Bc3luY19EYXRhKj4oZGF0
YSk7Ci0gICAgRXdrX1dlYl9FcnJvciogZXdrRXJyb3IgPSB3a0Vycm9yID8gZXdrX3dlYl9lcnJv
cl9uZXcod2tFcnJvcikgOiAwOworICAgIEV3a19FcnJvciogZXdrRXJyb3IgPSB3a0Vycm9yID8g
ZXdrX2Vycm9yX25ldyh3a0Vycm9yKSA6IDA7CiAKICAgICBjYWxsYmFja0RhdGEtPmNhbGxiYWNr
KHN0YXRpY19jYXN0PEV3a19Db29raWVfQWNjZXB0X1BvbGljeT4ocG9saWN5KSwgZXdrRXJyb3Is
IGNhbGxiYWNrRGF0YS0+dXNlckRhdGEpOwogCiAgICAgaWYgKGV3a0Vycm9yKQotICAgICAgICBl
d2tfd2ViX2Vycm9yX2ZyZWUoZXdrRXJyb3IpOworICAgICAgICBld2tfZXJyb3JfZnJlZShld2tF
cnJvcik7CiAgICAgZGVsZXRlIGNhbGxiYWNrRGF0YTsKIH0KIApAQCAtMTcyLDcgKzE3Miw3IEBA
IHN0YXRpYyB2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzQ2FsbGJhY2soV0tBcnJheVJlZiB3
a0hvc3RuYW1lcywgV0tFcnJvclJlZiB3CiB7CiAgICAgRWluYV9MaXN0KiBob3N0bmFtZXMgPSAw
OwogICAgIEdldF9Ib3N0bmFtZXNfQXN5bmNfRGF0YSogY2FsbGJhY2tEYXRhID0gc3RhdGljX2Nh
c3Q8R2V0X0hvc3RuYW1lc19Bc3luY19EYXRhKj4oY29udGV4dCk7Ci0gICAgRXdrX1dlYl9FcnJv
ciogZXdrRXJyb3IgPSB3a0Vycm9yID8gZXdrX3dlYl9lcnJvcl9uZXcod2tFcnJvcikgOiAwOwor
ICAgIEV3a19FcnJvciogZXdrRXJyb3IgPSB3a0Vycm9yID8gZXdrX2Vycm9yX25ldyh3a0Vycm9y
KSA6IDA7CiAKICAgICBjb25zdCBzaXplX3QgaG9zdG5hbWVDb3VudCA9IFdLQXJyYXlHZXRTaXpl
KHdrSG9zdG5hbWVzKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGhvc3RuYW1lQ291bnQ7
ICsraSkgewpAQCAtMTg5LDcgKzE4OSw3IEBAIHN0YXRpYyB2b2lkIGdldEhvc3RuYW1lc1dpdGhD
b29raWVzQ2FsbGJhY2soV0tBcnJheVJlZiB3a0hvc3RuYW1lcywgV0tFcnJvclJlZiB3CiAgICAg
RUlOQV9MSVNUX0ZSRUUoaG9zdG5hbWVzLCBpdGVtKQogICAgICAgZWluYV9zdHJpbmdzaGFyZV9k
ZWwoc3RhdGljX2Nhc3Q8RWluYV9TdHJpbmdzaGFyZSo+KGl0ZW0pKTsKICAgICBpZiAoZXdrRXJy
b3IpCi0gICAgICAgIGV3a193ZWJfZXJyb3JfZnJlZShld2tFcnJvcik7CisgICAgICAgIGV3a19l
cnJvcl9mcmVlKGV3a0Vycm9yKTsKICAgICBkZWxldGUgY2FsbGJhY2tEYXRhOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29va2llX21hbmFn
ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb29raWVfbWFuYWdl
ci5oCmluZGV4IGUzNzc4MDguLmMzMWI5MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19jb29raWVfbWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb29raWVfbWFuYWdlci5oCkBAIC0zMSw3ICszMSw3IEBA
CiAjaWZuZGVmIGV3a19jb29raWVfbWFuYWdlcl9oCiAjZGVmaW5lIGV3a19jb29raWVfbWFuYWdl
cl9oCiAKLSNpbmNsdWRlICJld2tfd2ViX2Vycm9yLmgiCisjaW5jbHVkZSAiZXdrX2Vycm9yLmgi
CiAjaW5jbHVkZSA8RWluYS5oPgogCiAjaWZkZWYgX19jcGx1c3BsdXMKQEAgLTc3LDcgKzc3LDcg
QEAgdHlwZWRlZiBlbnVtIF9Fd2tfQ29va2llX1BlcnNpc3RlbnRfU3RvcmFnZSBFd2tfQ29va2ll
X1BlcnNpc3RlbnRfU3RvcmFnZTsKICAqIEB0eXBlZGVmIEV3a19Db29raWVfTWFuYWdlcl9Bc3lu
Y19Qb2xpY3lfR2V0X0NiIEV3a19Db29raWVfTWFuYWdlcl9Bc3luY19Qb2xpY3lfR2V0X0NiCiAg
KiBAYnJpZWYgQ2FsbGJhY2sgdHlwZSBmb3IgdXNlIHdpdGggZXdrX2Nvb2tpZV9tYW5hZ2VyX2Fz
eW5jX2FjY2VwdF9wb2xpY3lfZ2V0CiAgKi8KLXR5cGVkZWYgdm9pZCAoKkV3a19Db29raWVfTWFu
YWdlcl9Bc3luY19Qb2xpY3lfR2V0X0NiKShFd2tfQ29va2llX0FjY2VwdF9Qb2xpY3kgcG9saWN5
LCBFd2tfV2ViX0Vycm9yICplcnJvciwgdm9pZCAqZXZlbnRfaW5mbyk7Cit0eXBlZGVmIHZvaWQg
KCpFd2tfQ29va2llX01hbmFnZXJfQXN5bmNfUG9saWN5X0dldF9DYikoRXdrX0Nvb2tpZV9BY2Nl
cHRfUG9saWN5IHBvbGljeSwgRXdrX0Vycm9yICplcnJvciwgdm9pZCAqZXZlbnRfaW5mbyk7CiAK
IC8qKgogICogQHR5cGVkZWYgRXdrX0Nvb2tpZV9NYW5hZ2VyX0FzeW5jX0hvc3RuYW1lc19HZXRf
Q2IgRXdrX0Nvb2tpZV9NYW5hZ2VyX0FzeW5jX0hvc3RuYW1lc19HZXRfQ2IKQEAgLTg3LDcgKzg3
LDcgQEAgdHlwZWRlZiB2b2lkICgqRXdrX0Nvb2tpZV9NYW5hZ2VyX0FzeW5jX1BvbGljeV9HZXRf
Q2IpKEV3a19Db29raWVfQWNjZXB0X1BvbGljeQogICogc2F2ZSB5b3Vyc2VsZiBzb21lIGNwdSBj
eWNsZXMgYW5kIHVzZSBlaW5hX3N0cmluZ3NoYXJlX3JlZigpIGluc3RlYWQgb2YgZWluYV9zdHJp
bmdzaGFyZV9hZGQoKQogICogb3Igc3RyZHVwKCkuCiAgKi8KLXR5cGVkZWYgdm9pZCAoKkV3a19D
b29raWVfTWFuYWdlcl9Bc3luY19Ib3N0bmFtZXNfR2V0X0NiKShFaW5hX0xpc3QqIGhvc3RuYW1l
cywgRXdrX1dlYl9FcnJvciAqZXJyb3IsIHZvaWQgKmV2ZW50X2luZm8pOwordHlwZWRlZiB2b2lk
ICgqRXdrX0Nvb2tpZV9NYW5hZ2VyX0FzeW5jX0hvc3RuYW1lc19HZXRfQ2IpKEVpbmFfTGlzdCAq
aG9zdG5hbWVzLCBFd2tfRXJyb3IgKmVycm9yLCB2b2lkICpldmVudF9pbmZvKTsKIAogLyoqCiAg
KiBAdHlwZWRlZiBFd2tfQ29va2llX01hbmFnZXJfQ2hhbmdlc19XYXRjaF9DYiBFd2tfQ29va2ll
X01hbmFnZXJfQ2hhbmdlc19XYXRjaF9DYgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX2Rvd25sb2FkX2pvYl9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfZG93bmxvYWRfam9iX3ByaXZhdGUuaAppbmRleCBkMDQz
NDk0Li44MWI1NDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfZG93bmxvYWRfam9iX3ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfZG93bmxvYWRfam9iX3ByaXZhdGUuaApAQCAtMzEsNyArMzEsNyBAQAog
CiB0eXBlZGVmIHN0cnVjdCBfRXdrX0Rvd25sb2FkX0pvYiBFd2tfRG93bmxvYWRfSm9iOwogdHlw
ZWRlZiBzdHJ1Y3QgX0V3a19VcmxfUmVzcG9uc2UgRXdrX1VybF9SZXNwb25zZTsKLXR5cGVkZWYg
c3RydWN0IF9Fd2tfV2ViX0Vycm9yIEV3a19XZWJfRXJyb3I7Cit0eXBlZGVmIHN0cnVjdCBfRXdr
X0Vycm9yIEV3a19FcnJvcjsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBEb3dubG9hZFBy
b3h5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Vy
cm9yLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19lcnJvci5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjU2YmY5YwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19lcnJvci5jcHAKQEAg
LTAsMCArMSwxMzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRp
b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJld2tfZXJyb3IuaCIKKworI2luY2x1ZGUgIkVycm9yc0VmbC5oIgorI2luY2x1
ZGUgIldLRWluYVNoYXJlZFN0cmluZy5oIgorI2luY2x1ZGUgIldLU3RyaW5nLmgiCisjaW5jbHVk
ZSAiV0tVUkwuaCIKKyNpbmNsdWRlICJld2tfZXJyb3JfcHJpdmF0ZS5oIgorI2luY2x1ZGUgPFdL
QVBJQ2FzdC5oPgorI2luY2x1ZGUgPFdLRXJyb3IuaD4KKyNpbmNsdWRlIDxXS1JldGFpblB0ci5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7Cit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitzdHJ1Y3QgX0V3a19FcnJvciB7CisgICAg
V0tSZXRhaW5QdHI8V0tFcnJvclJlZj4gd2tFcnJvcjsKKworICAgIFdLRWluYVNoYXJlZFN0cmlu
ZyB1cmw7CisgICAgV0tFaW5hU2hhcmVkU3RyaW5nIGRlc2NyaXB0aW9uOworCisgICAgX0V3a19F
cnJvcihXS0Vycm9yUmVmIGVycm9yUmVmKQorICAgICAgICA6IHdrRXJyb3IoZXJyb3JSZWYpCisg
ICAgICAgICwgdXJsKEFkb3B0V0ssIFdLRXJyb3JDb3B5RmFpbGluZ1VSTChlcnJvclJlZikpCisg
ICAgICAgICwgZGVzY3JpcHRpb24oQWRvcHRXSywgV0tFcnJvckNvcHlMb2NhbGl6ZWREZXNjcmlw
dGlvbihlcnJvclJlZikpCisgICAgeyB9CisKKyAgICB+X0V3a19FcnJvcigpCisgICAgeworICAg
IH0KK307CisKKyNkZWZpbmUgRVdLX0VSUk9SX1dLX0dFVF9PUl9SRVRVUk4oZXJyb3IsIHdrRXJy
b3JfLCAuLi4pICAgIFwKKyAgICBpZiAoIShlcnJvcikpIHsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBFSU5BX0xPR19DUklUKCJlcnJvciBpcyBO
VUxMLiIpOyAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBfX1ZBX0FSR1Nf
XzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYg
KCEoZXJyb3IpLT53a0Vycm9yKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICBFSU5BX0xPR19DUklUKCJlcnJvci0+d2tFcnJvciBpcyBOVUxMLiIpOyAgICAgICAg
ICAgIFwKKyAgICAgICAgcmV0dXJuIF9fVkFfQVJHU19fOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBXS0Vycm9yUmVmIHdrRXJyb3JfID0gKGVycm9y
KS0+d2tFcnJvci5nZXQoKQorCit2b2lkIGV3a19lcnJvcl9mcmVlKEV3a19FcnJvciogZXJyb3Ip
Cit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oZXJyb3IpOworCisgICAgZGVsZXRl
IGVycm9yOworfQorCitFd2tfRXJyb3JfVHlwZSBld2tfZXJyb3JfdHlwZV9nZXQoY29uc3QgRXdr
X0Vycm9yKiBlcnJvcikKK3sKKyAgICBFV0tfRVJST1JfV0tfR0VUX09SX1JFVFVSTihlcnJvciwg
d2tFcnJvciwgRVdLX0VSUk9SX1RZUEVfTk9ORSk7CisKKyAgICBXS1JldGFpblB0cjxXS1N0cmlu
Z1JlZj4gd2tEb21haW4oQWRvcHRXSywgV0tFcnJvckNvcHlEb21haW4od2tFcnJvcikpOworICAg
IFdURjo6U3RyaW5nIGVycm9yRG9tYWluID0gdG9XVEZTdHJpbmcod2tEb21haW4uZ2V0KCkpOwor
CisgICAgaWYgKGVycm9yRG9tYWluID09IGVycm9yRG9tYWluTmV0d29yaykKKyAgICAgICAgcmV0
dXJuIEVXS19FUlJPUl9UWVBFX05FVFdPUks7CisgICAgaWYgKGVycm9yRG9tYWluID09IGVycm9y
RG9tYWluUG9saWN5KQorICAgICAgICByZXR1cm4gRVdLX0VSUk9SX1RZUEVfUE9MSUNZOworICAg
IGlmIChlcnJvckRvbWFpbiA9PSBlcnJvckRvbWFpblBsdWdpbikKKyAgICAgICAgcmV0dXJuIEVX
S19FUlJPUl9UWVBFX1BMVUdJTjsKKyAgICBpZiAoZXJyb3JEb21haW4gPT0gZXJyb3JEb21haW5E
b3dubG9hZCkKKyAgICAgICAgcmV0dXJuIEVXS19FUlJPUl9UWVBFX0RPV05MT0FEOworICAgIGlm
IChlcnJvckRvbWFpbiA9PSBlcnJvckRvbWFpblByaW50KQorICAgICAgICByZXR1cm4gRVdLX0VS
Uk9SX1RZUEVfUFJJTlQ7CisgICAgcmV0dXJuIEVXS19FUlJPUl9UWVBFX0lOVEVSTkFMOworfQor
Citjb25zdCBjaGFyKiBld2tfZXJyb3JfdXJsX2dldChjb25zdCBFd2tfRXJyb3IqIGVycm9yKQor
eworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChlcnJvciwgMCk7CisKKyAgICBy
ZXR1cm4gZXJyb3ItPnVybDsKK30KKworaW50IGV3a19lcnJvcl9jb2RlX2dldChjb25zdCBFd2tf
RXJyb3IqIGVycm9yKQoreworICAgIEVXS19FUlJPUl9XS19HRVRfT1JfUkVUVVJOKGVycm9yLCB3
a0Vycm9yLCAwKTsKKworICAgIHJldHVybiBXS0Vycm9yR2V0RXJyb3JDb2RlKHdrRXJyb3IpOwor
fQorCitjb25zdCBjaGFyKiBld2tfZXJyb3JfZGVzY3JpcHRpb25fZ2V0KGNvbnN0IEV3a19FcnJv
ciogZXJyb3IpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGVycm9yLCAw
KTsKKworICAgIHJldHVybiBlcnJvci0+ZGVzY3JpcHRpb247Cit9CisKK0VpbmFfQm9vbCBld2tf
ZXJyb3JfY2FuY2VsbGF0aW9uX2dldChjb25zdCBFd2tfRXJyb3IqIGVycm9yKQoreworICAgIEVX
S19FUlJPUl9XS19HRVRfT1JfUkVUVVJOKGVycm9yLCB3a0Vycm9yLCBmYWxzZSk7CisKKyAgICBy
ZXR1cm4gdG9JbXBsKHdrRXJyb3IpLT5wbGF0Zm9ybUVycm9yKCkuaXNDYW5jZWxsYXRpb24oKTsK
K30KKworRXdrX0Vycm9yKiBld2tfZXJyb3JfbmV3KFdLRXJyb3JSZWYgZXJyb3IpCit7CisgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGVycm9yLCAwKTsKKworICAgIHJldHVybiBu
ZXcgRXdrX0Vycm9yKGVycm9yKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a19lcnJvci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX2Vycm9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2I3MDA5
NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a19lcnJvci5oCkBAIC0wLDAgKzEsMTI0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIElu
dGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvKioKKyAq
IEBmaWxlICAgIGV3a19lcnJvci5oCisgKiBAYnJpZWYgICBEZXNjcmliZXMgdGhlIFdlYiBFcnJv
ciBBUEkuCisgKi8KKworI2lmbmRlZiBld2tfZXJyb3JfaAorI2RlZmluZSBld2tfZXJyb3JfaAor
CisjaW5jbHVkZSA8RWluYS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgewor
I2VuZGlmCisKKy8qKiBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciBAYSBFd2tfRXJyb3IuICovCit0
eXBlZGVmIHN0cnVjdCBfRXdrX0Vycm9yIEV3a19FcnJvcjsKKworLy8vIENyZWF0ZXMgYSB0eXBl
IG5hbWUgZm9yIEV3a19FcnJvcl9UeXBlLgordHlwZWRlZiBlbnVtIHsKKyAgICBFV0tfRVJST1Jf
VFlQRV9OT05FLAorICAgIEVXS19FUlJPUl9UWVBFX0lOVEVSTkFMLAorICAgIEVXS19FUlJPUl9U
WVBFX05FVFdPUkssCisgICAgRVdLX0VSUk9SX1RZUEVfUE9MSUNZLAorICAgIEVXS19FUlJPUl9U
WVBFX1BMVUdJTiwKKyAgICBFV0tfRVJST1JfVFlQRV9ET1dOTE9BRCwKKyAgICBFV0tfRVJST1Jf
VFlQRV9QUklOVAorfSBFd2tfRXJyb3JfVHlwZTsKKworLyoqCisgKiBGcmVlcyB0aGUgZ2l2ZW4g
b2JqZWN0LgorICoKKyAqIEBwYXJhbSBlcnJvciB0aGUgZXJyb3Igb2JqZWN0IHRvIGZyZWUKKyAq
LworRUFQSSB2b2lkIGV3a19lcnJvcl9mcmVlKEV3a19FcnJvciAqZXJyb3IpOworCisvKioKKyAq
IFF1ZXJ5IHR5cGUgZm9yIHRoaXMgZXJyb3IuCisgKgorICogQHBhcmFtIGVycm9yIGVycm9yIG9i
amVjdCB0byBxdWVyeS4KKyAqCisgKiBAcmV0dXJuIHRoZSBlcnJvciB0eXBlLCB0aGF0IG1heSBi
ZSBAYyBOVUxMLiBUaGlzIHBvaW50ZXIgaXMKKyAqICAgICAgICAgZ3VhcmFudGVlZCB0byBiZSBl
aW5hX3N0cmluZ3NoYXJlLCBzbyB3aGVuZXZlciBwb3NzaWJsZQorICogICAgICAgICBzYXZlIHlv
dXJzZWxmIHNvbWUgY3B1IGN5Y2xlcyBhbmQgdXNlCisgKiAgICAgICAgIGVpbmFfc3RyaW5nc2hh
cmVfcmVmKCkgaW5zdGVhZCBvZiBlaW5hX3N0cmluZ3NoYXJlX2FkZCgpIG9yCisgKiAgICAgICAg
IHN0cmR1cCgpLgorICovCitFQVBJIEV3a19FcnJvcl9UeXBlIGV3a19lcnJvcl90eXBlX2dldChj
b25zdCBFd2tfRXJyb3IgKmVycm9yKTsKKworLyoqCisgKiBRdWVyeSBmYWlsaW5nIFVSTCBmb3Ig
dGhpcyBlcnJvci4KKyAqCisgKiBVUkwgdGhhdCBmYWlsZWQgbG9hZGluZy4KKyAqCisgKiBAcGFy
YW0gZXJyb3IgZXJyb3Igb2JqZWN0IHRvIHF1ZXJ5LgorICoKKyAqIEByZXR1cm4gdGhlIFVSTCBw
b2ludGVyLCB0aGF0IG1heSBiZSBAYyBOVUxMLiBUaGlzIHBvaW50ZXIgaXMKKyAqICAgICAgICAg
Z3VhcmFudGVlZCB0byBiZSBlaW5hX3N0cmluZ3NoYXJlLCBzbyB3aGVuZXZlciBwb3NzaWJsZQor
ICogICAgICAgICBzYXZlIHlvdXJzZWxmIHNvbWUgY3B1IGN5Y2xlcyBhbmQgdXNlCisgKiAgICAg
ICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVmKCkgaW5zdGVhZCBvZiBlaW5hX3N0cmluZ3NoYXJlX2Fk
ZCgpIG9yCisgKiAgICAgICAgIHN0cmR1cCgpLgorICovCitFQVBJIGNvbnN0IGNoYXIgKmV3a19l
cnJvcl91cmxfZ2V0KGNvbnN0IEV3a19FcnJvciAqZXJyb3IpOworCisvKioKKyAqIFF1ZXJ5IEhU
VFAgZXJyb3IgY29kZS4KKyAqCisgKiBAcGFyYW0gZXJyb3IgZXJyb3Igb2JqZWN0IHRvIHF1ZXJ5
LgorICoKKyAqIEByZXR1cm4gdGhlIEhUVFAgZXJyb3IgY29kZS4KKyAqLworRUFQSSBpbnQgZXdr
X2Vycm9yX2NvZGVfZ2V0KGNvbnN0IEV3a19FcnJvciAqZXJyb3IpOworCisvKioKKyAqIFF1ZXJ5
IGRlc2NyaXB0aW9uIGZvciB0aGlzIGVycm9yLgorICoKKyAqIEBwYXJhbSBlcnJvciBlcnJvciBv
YmplY3QgdG8gcXVlcnkuCisgKgorICogQHJldHVybiB0aGUgZGVzY3JpcHRpb24gcG9pbnRlciwg
dGhhdCBtYXkgYmUgQGMgTlVMTC4gVGhpcyBwb2ludGVyIGlzCisgKiAgICAgICAgIGd1YXJhbnRl
ZWQgdG8gYmUgZWluYV9zdHJpbmdzaGFyZSwgc28gd2hlbmV2ZXIgcG9zc2libGUKKyAqICAgICAg
ICAgc2F2ZSB5b3Vyc2VsZiBzb21lIGNwdSBjeWNsZXMgYW5kIHVzZQorICogICAgICAgICBlaW5h
X3N0cmluZ3NoYXJlX3JlZigpIGluc3RlYWQgb2YgZWluYV9zdHJpbmdzaGFyZV9hZGQoKSBvcgor
ICogICAgICAgICBzdHJkdXAoKS4KKyAqLworRUFQSSBjb25zdCBjaGFyICpld2tfZXJyb3JfZGVz
Y3JpcHRpb25fZ2V0KGNvbnN0IEV3a19FcnJvciAqZXJyb3IpOworCisvKioKKyAqIFF1ZXJ5IGlm
IGVycm9yIHNob3VsZCBiZSB0cmVhdGVkIGFzIGEgY2FuY2VsbGF0aW9uLgorICoKKyAqIEBwYXJh
bSBlcnJvciBlcnJvciBvYmplY3QgdG8gcXVlcnkuCisgKgorICogQHJldHVybiBAYyBFSU5BX1RS
VUUgaWYgdGhpcyBlcnJvciBzaG91bGQgYmUgdHJlYXRlZCBhcyBhIGNhbmNlbGxhdGlvbiwgQGMg
RUlOQV9GQUxTRSBvdGhlcndpc2UKKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX2Vycm9yX2NhbmNl
bGxhdGlvbl9nZXQoY29uc3QgRXdrX0Vycm9yICplcnJvcik7CisKKyNpZmRlZiBfX2NwbHVzcGx1
cworfQorI2VuZGlmCisKKyNlbmRpZiAvLyBld2tfZXJyb3JfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Vycm9yX3ByaXZhdGUuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19lcnJvcl9wcml2YXRlLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDMwNDFmOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19lcnJvcl9wcml2YXRlLmgKQEAgLTAsMCAr
MSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBld2tfZXJyb3JfcHJpdmF0ZV9o
CisjZGVmaW5lIGV3a19lcnJvcl9wcml2YXRlX2gKKworI2luY2x1ZGUgPFdLRXJyb3IuaD4KKwor
dHlwZWRlZiBzdHJ1Y3QgX0V3a19FcnJvciBFd2tfRXJyb3I7CisKK0V3a19FcnJvciogZXdrX2Vy
cm9yX25ldyhXS0Vycm9yUmVmIGVycm9yKTsKKworI2VuZGlmIC8vIGV3a19lcnJvcl9wcml2YXRl
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAppbmRl
eCA1MTc1Zjc5Li5hMDgwOTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3ZpZXcuY3BwCkBAIC05ODQsNyArOTg0LDcgQEAgdm9pZCBld2tfdmlld19yZXNvdXJj
ZV9sb2FkX3Jlc3BvbnNlKEV2YXNfT2JqZWN0KiBld2tWaWV3LCB1aW50NjRfdCByZXNvdXJjZUlk
ZW4KICAqCiAgKiBFbWl0cyBzaWduYWw6ICJyZXNvdXJjZSxyZXF1ZXN0LGZpbmlzaGVkIiB3aXRo
IHBvaW50ZXIgdG8gdGhlIHJlc291cmNlIGxvYWQgZXJyb3IuCiAgKi8KLXZvaWQgZXdrX3ZpZXdf
cmVzb3VyY2VfbG9hZF9mYWlsZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIHVpbnQ2NF90IHJlc291
cmNlSWRlbnRpZmllciwgRXdrX1dlYl9FcnJvciogZXJyb3IpCit2b2lkIGV3a192aWV3X3Jlc291
cmNlX2xvYWRfZmFpbGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCB1aW50NjRfdCByZXNvdXJjZUlk
ZW50aWZpZXIsIEV3a19FcnJvciogZXJyb3IpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JF
VFVSTihld2tWaWV3LCBzbWFydERhdGEpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVS
TihzbWFydERhdGEsIHByaXYpOwpAQCAtMTI4Myw3ICsxMjgzLDcgQEAgdm9pZCBld2tfdmlld19k
b3dubG9hZF9qb2JfcmVxdWVzdGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfRG93bmxvYWRf
Sm9iKiBkb3cKICAqCiAgKiBFbWl0cyBzaWduYWw6ICJkb3dubG9hZCxmYWlsZWQiIHdpdGggcG9p
bnRlciB0byBhIEV3a19Eb3dubG9hZF9Kb2JfRXJyb3IuCiAgKi8KLXZvaWQgZXdrX3ZpZXdfZG93
bmxvYWRfam9iX2ZhaWxlZChFdmFzX09iamVjdCogZXdrVmlldywgRXdrX0Rvd25sb2FkX0pvYiog
ZG93bmxvYWQsIEV3a19XZWJfRXJyb3IqIGVycm9yKQordm9pZCBld2tfdmlld19kb3dubG9hZF9q
b2JfZmFpbGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfRG93bmxvYWRfSm9iKiBkb3dubG9h
ZCwgRXdrX0Vycm9yKiBlcnJvcikKIHsKICAgICBFd2tfRG93bmxvYWRfSm9iX0Vycm9yIGRvd25s
b2FkRXJyb3IgPSB7IGRvd25sb2FkLCBlcnJvciB9OwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2Nh
bGxiYWNrX2NhbGwoZXdrVmlldywgImRvd25sb2FkLGZhaWxlZCIsICZkb3dubG9hZEVycm9yKTsK
QEAgLTEzOTQsMTEgKzEzOTQsMTEgQEAgdm9pZCBld2tfdmlld19mb3JtX3N1Ym1pc3Npb25fcmVx
dWVzdF9uZXcoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19Gb3JtX1N1Ym1pc3MKICAqIEBpbnRl
cm5hbAogICogUmVwb3J0cyBsb2FkIGZhaWxlZCB3aXRoIGVycm9yIGluZm9ybWF0aW9uLgogICoK
LSAqIEVtaXRzIHNpZ25hbDogImxvYWQsZXJyb3IiIHdpdGggcG9pbnRlciB0byBFd2tfV2ViX0Vy
cm9yLgorICogRW1pdHMgc2lnbmFsOiAibG9hZCxlcnJvciIgd2l0aCBwb2ludGVyIHRvIEV3a19F
cnJvci4KICAqLwotdm9pZCBld2tfdmlld19sb2FkX2Vycm9yKEV2YXNfT2JqZWN0KiBld2tWaWV3
LCBjb25zdCBFd2tfV2ViX0Vycm9yKiBlcnJvcikKK3ZvaWQgZXdrX3ZpZXdfbG9hZF9lcnJvcihF
dmFzX09iamVjdCogZXdrVmlldywgY29uc3QgRXdrX0Vycm9yKiBlcnJvcikKIHsKLSAgICBldmFz
X29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a1ZpZXcsICJsb2FkLGVycm9yIiwgY29uc3Rf
Y2FzdDxFd2tfV2ViX0Vycm9yKj4oZXJyb3IpKTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxs
YmFja19jYWxsKGV3a1ZpZXcsICJsb2FkLGVycm9yIiwgY29uc3RfY2FzdDxFd2tfRXJyb3IqPihl
cnJvcikpOwogfQogCiAvKioKQEAgLTE0MTcsMTEgKzE0MTcsMTEgQEAgdm9pZCBld2tfdmlld19s
b2FkX2ZpbmlzaGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3KQogICogQGludGVybmFsCiAgKiBSZXBv
cnRzIHZpZXcgcHJvdmlzaW9uYWwgbG9hZCBmYWlsZWQgd2l0aCBlcnJvciBpbmZvcm1hdGlvbi4K
ICAqCi0gKiBFbWl0cyBzaWduYWw6ICJsb2FkLHByb3Zpc2lvbmFsLGZhaWxlZCIgd2l0aCBwb2lu
dGVyIHRvIEV3a19XZWJfRXJyb3IuCisgKiBFbWl0cyBzaWduYWw6ICJsb2FkLHByb3Zpc2lvbmFs
LGZhaWxlZCIgd2l0aCBwb2ludGVyIHRvIEV3a19FcnJvci4KICAqLwotdm9pZCBld2tfdmlld19s
b2FkX3Byb3Zpc2lvbmFsX2ZhaWxlZChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgRXdrX1dl
Yl9FcnJvciogZXJyb3IpCit2b2lkIGV3a192aWV3X2xvYWRfcHJvdmlzaW9uYWxfZmFpbGVkKEV2
YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBFd2tfRXJyb3IqIGVycm9yKQogewotICAgIGV2YXNf
b2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmlldywgImxvYWQscHJvdmlzaW9uYWwsZmFp
bGVkIiwgY29uc3RfY2FzdDxFd2tfV2ViX0Vycm9yKj4oZXJyb3IpKTsKKyAgICBldmFzX29iamVj
dF9zbWFydF9jYWxsYmFja19jYWxsKGV3a1ZpZXcsICJsb2FkLHByb3Zpc2lvbmFsLGZhaWxlZCIs
IGNvbnN0X2Nhc3Q8RXdrX0Vycm9yKj4oZXJyb3IpKTsKIH0KIAogLyoqCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaAppbmRleCBjY2ZhNjM2Li5kNDIxZDMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKQEAgLTQ0LDEw
ICs0NCwxMCBAQAogICogICBld2tfZm9ybV9zdWJtaXNzaW9uX3JlcXVlc3Rfc3VibWl0KCkgd2ls
bCBiZSBjYWxsZWQgYXV0b21hdGljYWxseS4KICAqIC0gImludGVudCxyZXF1ZXN0LG5ldyIsIEV3
a19JbnRlbnQqOiByZXBvcnRzIG5ldyBXZWIgaW50ZW50IHJlcXVlc3QuCiAgKiAtICJpbnRlbnQs
c2VydmljZSxyZWdpc3RlciIsIEV3a19JbnRlbnRfU2VydmljZSo6IHJlcG9ydHMgbmV3IFdlYiBp
bnRlbnQgc2VydmljZSByZWdpc3RyYXRpb24uCi0gKiAtICJsb2FkLGVycm9yIiwgY29uc3QgRXdr
X1dlYl9FcnJvcio6IHJlcG9ydHMgbWFpbiBmcmFtZSBsb2FkIGZhaWxlZC4KKyAqIC0gImxvYWQs
ZXJyb3IiLCBjb25zdCBFd2tfRXJyb3IqOiByZXBvcnRzIG1haW4gZnJhbWUgbG9hZCBmYWlsZWQu
CiAgKiAtICJsb2FkLGZpbmlzaGVkIiwgdm9pZDogcmVwb3J0cyBsb2FkIGZpbmlzaGVkLgogICog
LSAibG9hZCxwcm9ncmVzcyIsIGRvdWJsZSo6IGxvYWQgcHJvZ3Jlc3MgaGFzIGNoYW5nZWQgKHZh
bHVlIGZyb20gMC4wIHRvIDEuMCkuCi0gKiAtICJsb2FkLHByb3Zpc2lvbmFsLGZhaWxlZCIsIGNv
bnN0IEV3a19XZWJfRXJyb3IqOiB2aWV3IHByb3Zpc2lvbmFsIGxvYWQgZmFpbGVkLgorICogLSAi
bG9hZCxwcm92aXNpb25hbCxmYWlsZWQiLCBjb25zdCBFd2tfRXJyb3IqOiB2aWV3IHByb3Zpc2lv
bmFsIGxvYWQgZmFpbGVkLgogICogLSAibG9hZCxwcm92aXNpb25hbCxyZWRpcmVjdCIsIHZvaWQ6
IHZpZXcgcmVjZWl2ZWQgcmVkaXJlY3QgZm9yIHByb3Zpc2lvbmFsIGxvYWQuCiAgKiAtICJsb2Fk
LHByb3Zpc2lvbmFsLHN0YXJ0ZWQiLCB2b2lkOiB2aWV3IHN0YXJ0ZWQgcHJvdmlzaW9uYWwgbG9h
ZC4KICAqIC0gInBvbGljeSxkZWNpc2lvbixuYXZpZ2F0aW9uIiwgRXdrX05hdmlnYXRpb25fUG9s
aWN5X0RlY2lzaW9uKjogYSBuYXZpZ2F0aW9uIHBvbGljeSBkZWNpc2lvbiBzaG91bGQgYmUgdGFr
ZW4uCkBAIC03MywxMiArNzMsMTIgQEAKICNpbmNsdWRlICJld2tfYmFja19mb3J3YXJkX2xpc3Qu
aCIKICNpbmNsdWRlICJld2tfY29udGV4dC5oIgogI2luY2x1ZGUgImV3a19kb3dubG9hZF9qb2Iu
aCIKKyNpbmNsdWRlICJld2tfZXJyb3IuaCIKICNpbmNsdWRlICJld2tfaW50ZW50LmgiCiAjaW5j
bHVkZSAiZXdrX3NldHRpbmdzLmgiCiAjaW5jbHVkZSAiZXdrX3RvdWNoLmgiCiAjaW5jbHVkZSAi
ZXdrX3VybF9yZXF1ZXN0LmgiCiAjaW5jbHVkZSAiZXdrX3VybF9yZXNwb25zZS5oIgotI2luY2x1
ZGUgImV3a193ZWJfZXJyb3IuaCIKICNpbmNsdWRlICJld2tfd2ViX3Jlc291cmNlLmgiCiAjaW5j
bHVkZSA8RXZhcy5oPgogCkBAIC0yMzAsNyArMjMwLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX0V3a19X
ZWJfUmVzb3VyY2VfTG9hZF9FcnJvciBFd2tfV2ViX1Jlc291cmNlX0xvYWRfRXJyb3I7CiAgKi8K
IHN0cnVjdCBfRXdrX1dlYl9SZXNvdXJjZV9Mb2FkX0Vycm9yIHsKICAgICBFd2tfV2ViX1Jlc291
cmNlICpyZXNvdXJjZTsgLyoqPCByZXNvdXJjZSB0aGF0IGZhaWxlZCBsb2FkaW5nICovCi0gICAg
RXdrX1dlYl9FcnJvciAqZXJyb3I7IC8qKjwgbG9hZCBlcnJvciAqLworICAgIEV3a19FcnJvciAq
ZXJyb3I7IC8qKjwgbG9hZCBlcnJvciAqLwogfTsKIAogLy8vIENyZWF0ZXMgYSB0eXBlIG5hbWUg
Zm9yIF9Fd2tfRG93bmxvYWRfSm9iX0Vycm9yLgpAQCAtMjQxLDcgKzI0MSw3IEBAIHR5cGVkZWYg
c3RydWN0IF9Fd2tfRG93bmxvYWRfSm9iX0Vycm9yIEV3a19Eb3dubG9hZF9Kb2JfRXJyb3I7CiAg
Ki8KIHN0cnVjdCBfRXdrX0Rvd25sb2FkX0pvYl9FcnJvciB7CiAgICAgRXdrX0Rvd25sb2FkX0pv
YiAqZG93bmxvYWRfam9iOyAvKio8IGRvd25sb2FkIHRoYXQgZmFpbGVkICovCi0gICAgRXdrX1dl
Yl9FcnJvciAqZXJyb3I7IC8qKjwgZG93bmxvYWQgZXJyb3IgKi8KKyAgICBFd2tfRXJyb3IgKmVy
cm9yOyAvKio8IGRvd25sb2FkIGVycm9yICovCiB9OwogCiAvKioKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X2xvYWRlcl9jbGllbnQuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfbG9hZGVyX2NsaWVudC5j
cHAKaW5kZXggOTk3Y2EzNS4uMTg2N2I1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfbG9hZGVyX2NsaWVudC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfbG9hZGVyX2NsaWVudC5jcHAKQEAgLTI4
LDE0ICsyOCwxNCBAQAogCiAjaW5jbHVkZSAiV0tGcmFtZS5oIgogI2luY2x1ZGUgImV3a19iYWNr
X2ZvcndhcmRfbGlzdF9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX2Vycm9yLmgiCisjaW5jbHVk
ZSAiZXdrX2Vycm9yX3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfaW50ZW50LmgiCiAjaW5jbHVk
ZSAiZXdrX2ludGVudF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX2ludGVudF9zZXJ2aWNlLmgi
CiAjaW5jbHVkZSAiZXdrX2ludGVudF9zZXJ2aWNlX3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tf
dmlld19sb2FkZXJfY2xpZW50X3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfdmlld19wcml2YXRl
LmgiCi0jaW5jbHVkZSAiZXdrX3dlYl9lcnJvci5oIgotI2luY2x1ZGUgImV3a193ZWJfZXJyb3Jf
cHJpdmF0ZS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNw
YWNlIFdlYktpdDsKQEAgLTkwLDEwICs5MCwxMCBAQCBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZFdp
dGhFcnJvckZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiBmcmFtZSwgV0tFcnJvclJlZgog
ICAgICAgICByZXR1cm47CiAKICAgICBFdmFzX09iamVjdCogZXdrVmlldyA9IHN0YXRpY19jYXN0
PEV2YXNfT2JqZWN0Kj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOwotICAgIEV3a19X
ZWJfRXJyb3IqIGV3a0Vycm9yID0gZXdrX3dlYl9lcnJvcl9uZXcoZXJyb3IpOworICAgIEV3a19F
cnJvciogZXdrRXJyb3IgPSBld2tfZXJyb3JfbmV3KGVycm9yKTsKICAgICBld2tfdmlld19sb2Fk
X2Vycm9yKGV3a1ZpZXcsIGV3a0Vycm9yKTsKICAgICBld2tfdmlld19sb2FkX2ZpbmlzaGVkKGV3
a1ZpZXcpOwotICAgIGV3a193ZWJfZXJyb3JfZnJlZShld2tFcnJvcik7CisgICAgZXdrX2Vycm9y
X2ZyZWUoZXdrRXJyb3IpOwogfQogCiBzdGF0aWMgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmIC8qdXNlckRh
dGEqLywgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKQEAgLTEyMCw5ICsxMjAsOSBAQCBzdGF0aWMg
dm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUoV0tQYWdlUmVmLCBX
S0ZyYW1lUmVmIGZyYW1lLAogICAgICAgICByZXR1cm47CiAKICAgICBFdmFzX09iamVjdCogZXdr
VmlldyA9IHN0YXRpY19jYXN0PEV2YXNfT2JqZWN0Kj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50
SW5mbykpOwotICAgIEV3a19XZWJfRXJyb3IqIGV3a0Vycm9yID0gZXdrX3dlYl9lcnJvcl9uZXco
ZXJyb3IpOworICAgIEV3a19FcnJvciogZXdrRXJyb3IgPSBld2tfZXJyb3JfbmV3KGVycm9yKTsK
ICAgICBld2tfdmlld19sb2FkX3Byb3Zpc2lvbmFsX2ZhaWxlZChld2tWaWV3LCBld2tFcnJvcik7
Ci0gICAgZXdrX3dlYl9lcnJvcl9mcmVlKGV3a0Vycm9yKTsKKyAgICBld2tfZXJyb3JfZnJlZShl
d2tFcnJvcik7CiB9CiAKIHN0YXRpYyB2b2lkIGRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdChXS1Bh
Z2VSZWYsIFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZiBhZGRlZEl0ZW0sIFdLQXJyYXlSZWYgcmVt
b3ZlZEl0ZW1zLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oCmluZGV4IDRjYmEyMmQuLjlh
ZTJjNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192
aWV3X3ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
dmlld19wcml2YXRlLmgKQEAgLTQzLDcgKzQzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX0V3a19Eb3du
bG9hZF9Kb2IgRXdrX0Rvd25sb2FkX0pvYjsKIHR5cGVkZWYgc3RydWN0IF9Fd2tfRm9ybV9TdWJt
aXNzaW9uX1JlcXVlc3QgRXdrX0Zvcm1fU3VibWlzc2lvbl9SZXF1ZXN0OwogdHlwZWRlZiBzdHJ1
Y3QgX0V3a19VcmxfUmVxdWVzdCBFd2tfVXJsX1JlcXVlc3Q7CiB0eXBlZGVmIHN0cnVjdCBfRXdr
X1VybF9SZXNwb25zZSBFd2tfVXJsX1Jlc3BvbnNlOwotdHlwZWRlZiBzdHJ1Y3QgX0V3a19XZWJf
RXJyb3IgRXdrX1dlYl9FcnJvcjsKK3R5cGVkZWYgc3RydWN0IF9Fd2tfRXJyb3IgRXdrX0Vycm9y
OwogdHlwZWRlZiBzdHJ1Y3QgX0V3a19XZWJfUmVzb3VyY2UgRXdrX1dlYl9SZXNvdXJjZTsKIHR5
cGVkZWYgc3RydWN0IF9Fd2tfTmF2aWdhdGlvbl9Qb2xpY3lfRGVjaXNpb24gRXdrX05hdmlnYXRp
b25fUG9saWN5X0RlY2lzaW9uOwogI2lmIEVOQUJMRShXRUJfSU5URU5UUykKQEAgLTU2LDcgKzU2
LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX0V3a19JbnRlbnRfU2VydmljZSBFd2tfSW50ZW50X1NlcnZp
Y2U7CiB2b2lkIGV3a192aWV3X2N1cnNvcl9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0
IFdlYkNvcmU6OkN1cnNvciYgY3Vyc29yKTsKIHZvaWQgZXdrX3ZpZXdfZGlzcGxheShFdmFzX09i
amVjdCogZXdrVmlldywgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCk7CiB2b2lkIGV3a192
aWV3X2Rvd25sb2FkX2pvYl9jYW5jZWxsZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19Eb3du
bG9hZF9Kb2IqKTsKLXZvaWQgZXdrX3ZpZXdfZG93bmxvYWRfam9iX2ZhaWxlZChFdmFzX09iamVj
dCogZXdrVmlldywgRXdrX0Rvd25sb2FkX0pvYiosIEV3a19XZWJfRXJyb3IqKTsKK3ZvaWQgZXdr
X3ZpZXdfZG93bmxvYWRfam9iX2ZhaWxlZChFdmFzX09iamVjdCogZXdrVmlldywgRXdrX0Rvd25s
b2FkX0pvYiosIEV3a19FcnJvciopOwogdm9pZCBld2tfdmlld19kb3dubG9hZF9qb2JfZmluaXNo
ZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19Eb3dubG9hZF9Kb2IqKTsKIHZvaWQgZXdrX3Zp
ZXdfZG93bmxvYWRfam9iX3JlcXVlc3RlZChFdmFzX09iamVjdCogZXdrVmlldywgRXdrX0Rvd25s
b2FkX0pvYiopOwogdm9pZCBld2tfdmlld19mb3JtX3N1Ym1pc3Npb25fcmVxdWVzdF9uZXcoRXZh
c19PYmplY3QqIGV3a1ZpZXcsIEV3a19Gb3JtX1N1Ym1pc3Npb25fUmVxdWVzdCopOwpAQCAtNjUs
MTAgKzY1LDEwIEBAIHZvaWQgZXdrX3ZpZXdfZnVsbF9zY3JlZW5fZW50ZXIoRXZhc19PYmplY3Qq
IGV3a1ZpZXcpOwogdm9pZCBld2tfdmlld19mdWxsX3NjcmVlbl9leGl0KEV2YXNfT2JqZWN0KiBl
d2tWaWV3KTsKICNlbmRpZgogdm9pZCBld2tfdmlld19pbWFnZV9kYXRhX3NldChFdmFzX09iamVj
dCogZXdrVmlldywgdm9pZCogaW1hZ2VEYXRhLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXpl
KTsKLXZvaWQgZXdrX3ZpZXdfbG9hZF9lcnJvcihFdmFzX09iamVjdCogZXdrVmlldywgY29uc3Qg
RXdrX1dlYl9FcnJvciogZXJyb3IpOwordm9pZCBld2tfdmlld19sb2FkX2Vycm9yKEV2YXNfT2Jq
ZWN0KiBld2tWaWV3LCBjb25zdCBFd2tfRXJyb3IqIGVycm9yKTsKIHZvaWQgZXdrX3ZpZXdfbG9h
ZF9maW5pc2hlZChFdmFzX09iamVjdCogZXdrVmlldyk7CiB2b2lkIGV3a192aWV3X2xvYWRfcHJv
Z3Jlc3NfY2hhbmdlZChFdmFzX09iamVjdCogZXdrVmlldywgZG91YmxlIHByb2dyZXNzKTsKLXZv
aWQgZXdrX3ZpZXdfbG9hZF9wcm92aXNpb25hbF9mYWlsZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcs
IGNvbnN0IEV3a19XZWJfRXJyb3IqIGVycm9yKTsKK3ZvaWQgZXdrX3ZpZXdfbG9hZF9wcm92aXNp
b25hbF9mYWlsZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IEV3a19FcnJvciogZXJyb3Ip
Owogdm9pZCBld2tfdmlld19sb2FkX3Byb3Zpc2lvbmFsX3JlZGlyZWN0KEV2YXNfT2JqZWN0KiBl
d2tWaWV3KTsKIHZvaWQgZXdrX3ZpZXdfbG9hZF9wcm92aXNpb25hbF9zdGFydGVkKEV2YXNfT2Jq
ZWN0KiBld2tWaWV3KTsKIHZvaWQgZXdrX3ZpZXdfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24o
RXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19OYXZpZ2F0aW9uX1BvbGljeV9EZWNpc2lvbiogZGVj
aXNpb24pOwpAQCAtNzYsNyArNzYsNyBAQCB2b2lkIGV3a192aWV3X25ld193aW5kb3dfcG9saWN5
X2RlY2lzaW9uKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfTmF2aWdhdGlvbl9Qbwogdm9pZCBl
d2tfdmlld19wYWdlX2Nsb3NlKEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKIFdLUGFnZVJlZiBld2tf
dmlld19wYWdlX2NyZWF0ZShFdmFzX09iamVjdCogZXdrVmlldyk7CiB2b2lkIGV3a192aWV3X3Rp
dGxlX2NoYW5nZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIqIHRpdGxlKTsKLXZv
aWQgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9mYWlsZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIHVp
bnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwgRXdrX1dlYl9FcnJvciogZXJyb3IpOwordm9pZCBl
d2tfdmlld19yZXNvdXJjZV9sb2FkX2ZhaWxlZChFdmFzX09iamVjdCogZXdrVmlldywgdWludDY0
X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBFd2tfRXJyb3IqIGVycm9yKTsKIHZvaWQgZXdrX3ZpZXdf
cmVzb3VyY2VfbG9hZF9maW5pc2hlZChFdmFzX09iamVjdCogZXdrVmlldywgdWludDY0X3QgcmVz
b3VyY2VJZGVudGlmaWVyKTsKIHZvaWQgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9pbml0aWF0ZWQo
RXZhc19PYmplY3QqIGV3a1ZpZXcsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwgRXdrX1dl
Yl9SZXNvdXJjZSogcmVzb3VyY2UsIEV3a19VcmxfUmVxdWVzdCogcmVxdWVzdCk7CiB2b2lkIGV3
a192aWV3X3Jlc291cmNlX2xvYWRfcmVzcG9uc2UoRXZhc19PYmplY3QqIGV3a1ZpZXcsIHVpbnQ2
NF90IHJlc291cmNlSWRlbnRpZmllciwgRXdrX1VybF9SZXNwb25zZSogcmVzcG9uc2UpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcmVzb3Vy
Y2VfbG9hZF9jbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3ZpZXdfcmVzb3VyY2VfbG9hZF9jbGllbnQuY3BwCmluZGV4IDExM2UxNzguLmY5NzgzOGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3Jlc291
cmNlX2xvYWRfY2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfdmlld19yZXNvdXJjZV9sb2FkX2NsaWVudC5jcHAKQEAgLTMyLDE0ICszMiwxNCBAQAog
I2luY2x1ZGUgIldLVVJMLmgiCiAjaW5jbHVkZSAiV0tVUkxSZXF1ZXN0LmgiCiAjaW5jbHVkZSAi
V0tVUkxSZXNwb25zZS5oIgorI2luY2x1ZGUgImV3a19lcnJvci5oIgorI2luY2x1ZGUgImV3a19l
cnJvcl9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3VybF9yZXF1ZXN0LmgiCiAjaW5jbHVkZSAi
ZXdrX3VybF9yZXF1ZXN0X3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfdXJsX3Jlc3BvbnNlLmgi
CiAjaW5jbHVkZSAiZXdrX3VybF9yZXNwb25zZV9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3Zp
ZXdfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a192aWV3X3Jlc291cmNlX2xvYWRfY2xpZW50X3By
aXZhdGUuaCIKLSNpbmNsdWRlICJld2tfd2ViX2Vycm9yLmgiCi0jaW5jbHVkZSAiZXdrX3dlYl9l
cnJvcl9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3dlYl9yZXNvdXJjZS5oIgogI2luY2x1ZGUg
ImV3a193ZWJfcmVzb3VyY2VfcHJpdmF0ZS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KQEAgLTg4LDEwICs4OCwxMCBAQCBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkRm9yUmVzb3Vy
Y2UoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCB1aW50NjRfdCByZXNvdXJjZUlkZQogCiBzdGF0aWMg
dm9pZCBkaWRGYWlsTG9hZEZvclJlc291cmNlKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgdWludDY0
X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBXS0Vycm9yUmVmIHdrRXJyb3IsIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pCiB7Ci0gICAgRXdrX1dlYl9FcnJvciogZXdrRXJyb3IgPSBld2tfd2ViX2Vycm9y
X25ldyh3a0Vycm9yKTsKKyAgICBFd2tfRXJyb3IqIGV3a0Vycm9yID0gZXdrX2Vycm9yX25ldyh3
a0Vycm9yKTsKICAgICBld2tfdmlld19yZXNvdXJjZV9sb2FkX2ZhaWxlZCh0b0V3a1ZpZXcoY2xp
ZW50SW5mbyksIHJlc291cmNlSWRlbnRpZmllciwgZXdrRXJyb3IpOwogICAgIGV3a192aWV3X3Jl
c291cmNlX2xvYWRfZmluaXNoZWQodG9Fd2tWaWV3KGNsaWVudEluZm8pLCByZXNvdXJjZUlkZW50
aWZpZXIpOwotICAgIGV3a193ZWJfZXJyb3JfZnJlZShld2tFcnJvcik7CisgICAgZXdrX2Vycm9y
X2ZyZWUoZXdrRXJyb3IpOwogfQogCiB2b2lkIGV3a192aWV3X3Jlc291cmNlX2xvYWRfY2xpZW50
X2F0dGFjaChXS1BhZ2VSZWYgcGFnZVJlZiwgRXZhc19PYmplY3QqIGV3a1ZpZXcpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfd2ViX2Vycm9yLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a193ZWJfZXJyb3IuY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MDM4MGJkLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a193ZWJfZXJyb3IuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsMTMwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9y
YXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJld2tfd2ViX2Vycm9yLmgiCi0KLSNpbmNsdWRlICJFcnJvcnNFZmwuaCIK
LSNpbmNsdWRlICJXS0VpbmFTaGFyZWRTdHJpbmcuaCIKLSNpbmNsdWRlICJXS1N0cmluZy5oIgot
I2luY2x1ZGUgIldLVVJMLmgiCi0jaW5jbHVkZSAiZXdrX3dlYl9lcnJvcl9wcml2YXRlLmgiCi0j
aW5jbHVkZSA8V0tBUElDYXN0Lmg+Ci0jaW5jbHVkZSA8V0tFcnJvci5oPgotI2luY2x1ZGUgPFdL
UmV0YWluUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotCi11c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KLXN0cnVjdCBfRXdrX1dl
Yl9FcnJvciB7Ci0gICAgV0tSZXRhaW5QdHI8V0tFcnJvclJlZj4gd2tFcnJvcjsKLQotICAgIFdL
RWluYVNoYXJlZFN0cmluZyB1cmw7Ci0gICAgV0tFaW5hU2hhcmVkU3RyaW5nIGRlc2NyaXB0aW9u
OwotCi0gICAgX0V3a19XZWJfRXJyb3IoV0tFcnJvclJlZiBlcnJvclJlZikKLSAgICAgICAgOiB3
a0Vycm9yKGVycm9yUmVmKQotICAgICAgICAsIHVybChBZG9wdFdLLCBXS0Vycm9yQ29weUZhaWxp
bmdVUkwoZXJyb3JSZWYpKQotICAgICAgICAsIGRlc2NyaXB0aW9uKEFkb3B0V0ssIFdLRXJyb3JD
b3B5TG9jYWxpemVkRGVzY3JpcHRpb24oZXJyb3JSZWYpKQotICAgIHsgfQotCi0gICAgfl9Fd2tf
V2ViX0Vycm9yKCkKLSAgICB7Ci0gICAgfQotfTsKLQotI2RlZmluZSBFV0tfV0VCX0VSUk9SX1dL
X0dFVF9PUl9SRVRVUk4oZXJyb3IsIHdrRXJyb3JfLCAuLi4pICAgIFwKLSAgICBpZiAoIShlcnJv
cikpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAg
ICBFSU5BX0xPR19DUklUKCJlcnJvciBpcyBOVUxMLiIpOyAgICAgICAgICAgICAgICAgICAgICBc
Ci0gICAgICAgIHJldHVybiBfX1ZBX0FSR1NfXzsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCi0gICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCi0gICAgaWYgKCEoZXJyb3IpLT53a0Vycm9yKSB7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBFSU5BX0xPR19DUklUKCJlcnJvci0+
d2tFcnJvciBpcyBOVUxMLiIpOyAgICAgICAgICAgIFwKLSAgICAgICAgcmV0dXJuIF9fVkFfQVJH
U19fOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBX
S0Vycm9yUmVmIHdrRXJyb3JfID0gKGVycm9yKS0+d2tFcnJvci5nZXQoKQotCi12b2lkIGV3a193
ZWJfZXJyb3JfZnJlZShFd2tfV2ViX0Vycm9yKiBlcnJvcikKLXsKLSAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTihlcnJvcik7Ci0KLSAgICBkZWxldGUgZXJyb3I7Ci19Ci0KLUV3a19XZWJf
RXJyb3JfVHlwZSBld2tfd2ViX2Vycm9yX3R5cGVfZ2V0KGNvbnN0IEV3a19XZWJfRXJyb3IqIGVy
cm9yKQotewotICAgIEVXS19XRUJfRVJST1JfV0tfR0VUX09SX1JFVFVSTihlcnJvciwgd2tFcnJv
ciwgRVdLX1dFQl9FUlJPUl9UWVBFX05PTkUpOwotCi0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdS
ZWY+IHdrRG9tYWluKEFkb3B0V0ssIFdLRXJyb3JDb3B5RG9tYWluKHdrRXJyb3IpKTsKLSAgICBX
VEY6OlN0cmluZyBlcnJvckRvbWFpbiA9IHRvV1RGU3RyaW5nKHdrRG9tYWluLmdldCgpKTsKLQot
ICAgIGlmIChlcnJvckRvbWFpbiA9PSBlcnJvckRvbWFpbk5ldHdvcmspCi0gICAgICAgIHJldHVy
biBFV0tfV0VCX0VSUk9SX1RZUEVfTkVUV09SSzsKLSAgICBpZiAoZXJyb3JEb21haW4gPT0gZXJy
b3JEb21haW5Qb2xpY3kpCi0gICAgICAgIHJldHVybiBFV0tfV0VCX0VSUk9SX1RZUEVfUE9MSUNZ
OwotICAgIGlmIChlcnJvckRvbWFpbiA9PSBlcnJvckRvbWFpblBsdWdpbikKLSAgICAgICAgcmV0
dXJuIEVXS19XRUJfRVJST1JfVFlQRV9QTFVHSU47Ci0gICAgaWYgKGVycm9yRG9tYWluID09IGVy
cm9yRG9tYWluRG93bmxvYWQpCi0gICAgICAgIHJldHVybiBFV0tfV0VCX0VSUk9SX1RZUEVfRE9X
TkxPQUQ7Ci0gICAgaWYgKGVycm9yRG9tYWluID09IGVycm9yRG9tYWluUHJpbnQpCi0gICAgICAg
IHJldHVybiBFV0tfV0VCX0VSUk9SX1RZUEVfUFJJTlQ7Ci0gICAgcmV0dXJuIEVXS19XRUJfRVJS
T1JfVFlQRV9JTlRFUk5BTDsKLX0KLQotY29uc3QgY2hhciogZXdrX3dlYl9lcnJvcl91cmxfZ2V0
KGNvbnN0IEV3a19XZWJfRXJyb3IqIGVycm9yKQotewotICAgIEVJTkFfU0FGRVRZX09OX05VTExf
UkVUVVJOX1ZBTChlcnJvciwgMCk7Ci0KLSAgICByZXR1cm4gZXJyb3ItPnVybDsKLX0KLQotaW50
IGV3a193ZWJfZXJyb3JfY29kZV9nZXQoY29uc3QgRXdrX1dlYl9FcnJvciogZXJyb3IpCi17Ci0g
ICAgRVdLX1dFQl9FUlJPUl9XS19HRVRfT1JfUkVUVVJOKGVycm9yLCB3a0Vycm9yLCAwKTsKLQot
ICAgIHJldHVybiBXS0Vycm9yR2V0RXJyb3JDb2RlKHdrRXJyb3IpOwotfQotCi1jb25zdCBjaGFy
KiBld2tfd2ViX2Vycm9yX2Rlc2NyaXB0aW9uX2dldChjb25zdCBFd2tfV2ViX0Vycm9yKiBlcnJv
cikKLXsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoZXJyb3IsIDApOwotCi0g
ICAgcmV0dXJuIGVycm9yLT5kZXNjcmlwdGlvbjsKLX0KLQotRWluYV9Cb29sIGV3a193ZWJfZXJy
b3JfY2FuY2VsbGF0aW9uX2dldChjb25zdCBFd2tfV2ViX0Vycm9yKiBlcnJvcikKLXsKLSAgICBF
V0tfV0VCX0VSUk9SX1dLX0dFVF9PUl9SRVRVUk4oZXJyb3IsIHdrRXJyb3IsIGZhbHNlKTsKLQot
ICAgIHJldHVybiB0b0ltcGwod2tFcnJvciktPnBsYXRmb3JtRXJyb3IoKS5pc0NhbmNlbGxhdGlv
bigpOwotfQotCi1Fd2tfV2ViX0Vycm9yKiBld2tfd2ViX2Vycm9yX25ldyhXS0Vycm9yUmVmIGVy
cm9yKQotewotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChlcnJvciwgMCk7Ci0K
LSAgICByZXR1cm4gbmV3IEV3a19XZWJfRXJyb3IoZXJyb3IpOwotfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3dlYl9lcnJvci5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3dlYl9lcnJvci5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA0YmEwYzdhLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a193ZWJfZXJyb3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDEyNCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0vKioKLSAqIEBmaWxlICAgIGV3a193ZWJfZXJyb3Iu
aAotICogQGJyaWVmICAgRGVzY3JpYmVzIHRoZSBXZWIgRXJyb3IgQVBJLgotICovCi0KLSNpZm5k
ZWYgZXdrX3dlYl9lcnJvcl9oCi0jZGVmaW5lIGV3a193ZWJfZXJyb3JfaAotCi0jaW5jbHVkZSA8
RWluYS5oPgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KLS8q
KiBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciBAYSBFd2tfV2ViX0Vycm9yLiAqLwotdHlwZWRlZiBz
dHJ1Y3QgX0V3a19XZWJfRXJyb3IgRXdrX1dlYl9FcnJvcjsKLQotLy8vIENyZWF0ZXMgYSB0eXBl
IG5hbWUgZm9yIEV3a19XZWJfRXJyb3JfVHlwZS4KLXR5cGVkZWYgZW51bSB7Ci0gICAgRVdLX1dF
Ql9FUlJPUl9UWVBFX05PTkUsCi0gICAgRVdLX1dFQl9FUlJPUl9UWVBFX0lOVEVSTkFMLAotICAg
IEVXS19XRUJfRVJST1JfVFlQRV9ORVRXT1JLLAotICAgIEVXS19XRUJfRVJST1JfVFlQRV9QT0xJ
Q1ksCi0gICAgRVdLX1dFQl9FUlJPUl9UWVBFX1BMVUdJTiwKLSAgICBFV0tfV0VCX0VSUk9SX1RZ
UEVfRE9XTkxPQUQsCi0gICAgRVdLX1dFQl9FUlJPUl9UWVBFX1BSSU5UCi19IEV3a19XZWJfRXJy
b3JfVHlwZTsKLQotLyoqCi0gKiBGcmVlcyB0aGUgZ2l2ZW4gb2JqZWN0LgotICoKLSAqIEBwYXJh
bSBlcnJvciB0aGUgZXJyb3Igb2JqZWN0IHRvIGZyZWUKLSAqLwotRUFQSSB2b2lkIGV3a193ZWJf
ZXJyb3JfZnJlZShFd2tfV2ViX0Vycm9yICplcnJvcik7Ci0KLS8qKgotICogUXVlcnkgdHlwZSBm
b3IgdGhpcyBlcnJvci4KLSAqCi0gKiBAcGFyYW0gZXJyb3IgZXJyb3Igb2JqZWN0IHRvIHF1ZXJ5
LgotICoKLSAqIEByZXR1cm4gdGhlIGVycm9yIHR5cGUsIHRoYXQgbWF5IGJlIEBjIE5VTEwuIFRo
aXMgcG9pbnRlciBpcwotICogICAgICAgICBndWFyYW50ZWVkIHRvIGJlIGVpbmFfc3RyaW5nc2hh
cmUsIHNvIHdoZW5ldmVyIHBvc3NpYmxlCi0gKiAgICAgICAgIHNhdmUgeW91cnNlbGYgc29tZSBj
cHUgY3ljbGVzIGFuZCB1c2UKLSAqICAgICAgICAgZWluYV9zdHJpbmdzaGFyZV9yZWYoKSBpbnN0
ZWFkIG9mIGVpbmFfc3RyaW5nc2hhcmVfYWRkKCkgb3IKLSAqICAgICAgICAgc3RyZHVwKCkuCi0g
Ki8KLUVBUEkgRXdrX1dlYl9FcnJvcl9UeXBlIGV3a193ZWJfZXJyb3JfdHlwZV9nZXQoY29uc3Qg
RXdrX1dlYl9FcnJvciAqZXJyb3IpOwotCi0vKioKLSAqIFF1ZXJ5IGZhaWxpbmcgVVJMIGZvciB0
aGlzIGVycm9yLgotICoKLSAqIFVSTCB0aGF0IGZhaWxlZCBsb2FkaW5nLgotICoKLSAqIEBwYXJh
bSBlcnJvciBlcnJvciBvYmplY3QgdG8gcXVlcnkuCi0gKgotICogQHJldHVybiB0aGUgVVJMIHBv
aW50ZXIsIHRoYXQgbWF5IGJlIEBjIE5VTEwuIFRoaXMgcG9pbnRlciBpcwotICogICAgICAgICBn
dWFyYW50ZWVkIHRvIGJlIGVpbmFfc3RyaW5nc2hhcmUsIHNvIHdoZW5ldmVyIHBvc3NpYmxlCi0g
KiAgICAgICAgIHNhdmUgeW91cnNlbGYgc29tZSBjcHUgY3ljbGVzIGFuZCB1c2UKLSAqICAgICAg
ICAgZWluYV9zdHJpbmdzaGFyZV9yZWYoKSBpbnN0ZWFkIG9mIGVpbmFfc3RyaW5nc2hhcmVfYWRk
KCkgb3IKLSAqICAgICAgICAgc3RyZHVwKCkuCi0gKi8KLUVBUEkgY29uc3QgY2hhciAqZXdrX3dl
Yl9lcnJvcl91cmxfZ2V0KGNvbnN0IEV3a19XZWJfRXJyb3IgKmVycm9yKTsKLQotLyoqCi0gKiBR
dWVyeSBIVFRQIGVycm9yIGNvZGUuCi0gKgotICogQHBhcmFtIGVycm9yIGVycm9yIG9iamVjdCB0
byBxdWVyeS4KLSAqCi0gKiBAcmV0dXJuIHRoZSBIVFRQIGVycm9yIGNvZGUuCi0gKi8KLUVBUEkg
aW50IGV3a193ZWJfZXJyb3JfY29kZV9nZXQoY29uc3QgRXdrX1dlYl9FcnJvciAqZXJyb3IpOwot
Ci0vKioKLSAqIFF1ZXJ5IGRlc2NyaXB0aW9uIGZvciB0aGlzIGVycm9yLgotICoKLSAqIEBwYXJh
bSBlcnJvciBlcnJvciBvYmplY3QgdG8gcXVlcnkuCi0gKgotICogQHJldHVybiB0aGUgZGVzY3Jp
cHRpb24gcG9pbnRlciwgdGhhdCBtYXkgYmUgQGMgTlVMTC4gVGhpcyBwb2ludGVyIGlzCi0gKiAg
ICAgICAgIGd1YXJhbnRlZWQgdG8gYmUgZWluYV9zdHJpbmdzaGFyZSwgc28gd2hlbmV2ZXIgcG9z
c2libGUKLSAqICAgICAgICAgc2F2ZSB5b3Vyc2VsZiBzb21lIGNwdSBjeWNsZXMgYW5kIHVzZQot
ICogICAgICAgICBlaW5hX3N0cmluZ3NoYXJlX3JlZigpIGluc3RlYWQgb2YgZWluYV9zdHJpbmdz
aGFyZV9hZGQoKSBvcgotICogICAgICAgICBzdHJkdXAoKS4KLSAqLwotRUFQSSBjb25zdCBjaGFy
ICpld2tfd2ViX2Vycm9yX2Rlc2NyaXB0aW9uX2dldChjb25zdCBFd2tfV2ViX0Vycm9yICplcnJv
cik7Ci0KLS8qKgotICogUXVlcnkgaWYgZXJyb3Igc2hvdWxkIGJlIHRyZWF0ZWQgYXMgYSBjYW5j
ZWxsYXRpb24uCi0gKgotICogQHBhcmFtIGVycm9yIGVycm9yIG9iamVjdCB0byBxdWVyeS4KLSAq
Ci0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiB0aGlzIGVycm9yIHNob3VsZCBiZSB0cmVhdGVk
IGFzIGEgY2FuY2VsbGF0aW9uLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQotICovCi1FQVBJIEVp
bmFfQm9vbCBld2tfd2ViX2Vycm9yX2NhbmNlbGxhdGlvbl9nZXQoY29uc3QgRXdrX1dlYl9FcnJv
ciAqZXJyb3IpOwotCi0jaWZkZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRpZgotCi0jZW5kaWYgLy8g
ZXdrX3dlYl9lcnJvcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfd2ViX2Vycm9yX3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a193ZWJfZXJyb3JfcHJpdmF0ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBjOWEzMWU1Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a193ZWJfZXJyb3JfcHJpdmF0ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBld2tfd2ViX2Vycm9yX3ByaXZhdGVfaAot
I2RlZmluZSBld2tfd2ViX2Vycm9yX3ByaXZhdGVfaAotCi0jaW5jbHVkZSA8V0tFcnJvci5oPgot
Ci10eXBlZGVmIHN0cnVjdCBfRXdrX1dlYl9FcnJvciBFd2tfV2ViX0Vycm9yOwotCi1Fd2tfV2Vi
X0Vycm9yKiBld2tfd2ViX2Vycm9yX25ldyhXS0Vycm9yUmVmIGVycm9yKTsKLQotI2VuZGlmIC8v
IGV3a193ZWJfZXJyb3JfcHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfY29va2llX21hbmFnZXIuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2Nvb2tpZV9tYW5hZ2Vy
LmNwcAppbmRleCA0MzUzY2VkLi44YzlmZGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfY29va2llX21hbmFnZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9jb29raWVf
bWFuYWdlci5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgc3RhdGljIHZvaWQgc2VydmVyQ2FsbGJhY2so
U291cFNlcnZlciogc2VydmVyLCBTb3VwTWVzc2FnZSogbWVzc2FnZSwgY29uc3QgY2hhcioKICAg
ICBzb3VwX21lc3NhZ2VfYm9keV9jb21wbGV0ZShtZXNzYWdlLT5yZXNwb25zZV9ib2R5KTsKIH0K
IAotc3RhdGljIHZvaWQgZ2V0QWNjZXB0UG9saWN5Q2FsbGJhY2soRXdrX0Nvb2tpZV9BY2NlcHRf
UG9saWN5IHBvbGljeSwgRXdrX1dlYl9FcnJvciogZXJyb3IsIHZvaWQqIGV2ZW50X2luZm8pCitz
dGF0aWMgdm9pZCBnZXRBY2NlcHRQb2xpY3lDYWxsYmFjayhFd2tfQ29va2llX0FjY2VwdF9Qb2xp
Y3kgcG9saWN5LCBFd2tfRXJyb3IqIGVycm9yLCB2b2lkKiBldmVudF9pbmZvKQogewogICAgIEFT
U0VSVF9GQUxTRShlcnJvcik7CiAgICAgRXdrX0Nvb2tpZV9BY2NlcHRfUG9saWN5KiByZXQgPSBz
dGF0aWNfY2FzdDxFd2tfQ29va2llX0FjY2VwdF9Qb2xpY3kqPihldmVudF9pbmZvKTsKQEAgLTgx
LDcgKzgxLDcgQEAgc3RhdGljIEV3a19Db29raWVfQWNjZXB0X1BvbGljeSBnZXRBY2NlcHRQb2xp
Y3koRXdrX0Nvb2tpZV9NYW5hZ2VyKiBtYW5hZ2VyKQogICAgIHJldHVybiBwb2xpY3k7CiB9CiAK
LXN0YXRpYyB2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzQ2FsbGJhY2soRWluYV9MaXN0KiBo
b3N0bmFtZXMsIEV3a19XZWJfRXJyb3IqIGVycm9yLCB2b2lkKiBldmVudF9pbmZvKQorc3RhdGlj
IHZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXNDYWxsYmFjayhFaW5hX0xpc3QqIGhvc3RuYW1l
cywgRXdrX0Vycm9yKiBlcnJvciwgdm9pZCogZXZlbnRfaW5mbykKIHsKICAgICBBU1NFUlRfRkFM
U0UoZXJyb3IpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC90ZXN0cy90ZXN0X2V3azJfZG93bmxvYWRfam9iLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9kb3dubG9hZF9qb2IuY3BwCmluZGV4IDIyYzk3
YWEuLmQyODEyMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L3Rlc3RzL3Rlc3RfZXdrMl9kb3dubG9hZF9qb2IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9kb3dubG9hZF9qb2IuY3BwCkBAIC0xMzEs
NyArMTMxLDcgQEAgc3RhdGljIHZvaWQgb25fZG93bmxvYWRfY2FuY2VsbGVkKHZvaWQqIHVzZXJE
YXRhLCBFdmFzX09iamVjdCogd2Vidmlldywgdm9pZCogZXYKIHN0YXRpYyB2b2lkIG9uX2Rvd25s
b2FkX2ZhaWxlZCh2b2lkKiB1c2VyRGF0YSwgRXZhc19PYmplY3QqIHdlYnZpZXcsIHZvaWQqIGV2
ZW50SW5mbykKIHsKICAgICBFd2tfRG93bmxvYWRfSm9iX0Vycm9yKiBkb3dubG9hZEVycm9yID0g
c3RhdGljX2Nhc3Q8RXdrX0Rvd25sb2FkX0pvYl9FcnJvcio+KGV2ZW50SW5mbyk7Ci0gICAgZnBy
aW50ZihzdGRlcnIsICJEb3dubG9hZCBlcnJvcjogJXNcbiIsIGV3a193ZWJfZXJyb3JfZGVzY3Jp
cHRpb25fZ2V0KGRvd25sb2FkRXJyb3ItPmVycm9yKSk7CisgICAgZnByaW50ZihzdGRlcnIsICJE
b3dubG9hZCBlcnJvcjogJXNcbiIsIGV3a19lcnJvcl9kZXNjcmlwdGlvbl9nZXQoZG93bmxvYWRF
cnJvci0+ZXJyb3IpKTsKICAgICBlY29yZV9tYWluX2xvb3BfcXVpdCgpOwogICAgIEZBSUwoKTsK
IH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBh
MTEyN2IyLi4xMTMzYzZjIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDktMjggIEpvbmdzZW9rIFlhbmcgIDxq
czQ1LnlhbmdAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bV0syXSBSZW1vdmUgIndlYiIg
d29yZCBmcm9tIGV3a193ZWJfZXJyb3IgQVBJcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc4ODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgIndlYiIgd29yZCBmcm9tIGV3a193ZWJfZXJyb3Ig
QVBJcy4KKyAgICAgICAgIndlYiIgd29yZCB3YXMgcmVkdW5kYW50IGJlY2F1c2UgImV3ayIgbWVh
bnMgIkVGTCBXZWJLaXQiIGFuZCBXSyBBUElzIGZvciBlcnJvciBkb2VzIG5vdCBoYXZlICJ3ZWIi
IHdvcmQuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9lZmwvbWFpbi5jOgorICAgICAgICAob25f
ZXJyb3IpOgorCiAyMDEyLTA5LTI3ICBBbGV4YW5kcmUgRWxpYXMgIDxhZWxpYXNAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gRHVtcFJlbmRlclRyZWUgc3VwcG9ydCBmb3Igc29m
dHdhcmUgY29tcG9zaXRpbmcKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL2VmbC9tYWlu
LmMgYi9Ub29scy9NaW5pQnJvd3Nlci9lZmwvbWFpbi5jCmluZGV4IGI0NGU1MTQuLjE2YmIwZGIg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL2VmbC9tYWluLmMKKysrIGIvVG9vbHMvTWlu
aUJyb3dzZXIvZWZsL21haW4uYwpAQCAtMTg3LDEzICsxODcsMTMgQEAgc3RhdGljIHZvaWQKIG9u
X2Vycm9yKHZvaWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKndlYnZpZXcsIHZvaWQgKmV2ZW50
X2luZm8pCiB7CiAgICAgRWluYV9TdHJidWYqIGJ1ZmZlcjsKLSAgICBjb25zdCBFd2tfV2ViX0Vy
cm9yICplcnJvciA9IChjb25zdCBFd2tfV2ViX0Vycm9yICopZXZlbnRfaW5mbzsKKyAgICBjb25z
dCBFd2tfRXJyb3IgKmVycm9yID0gKGNvbnN0IEV3a19FcnJvciAqKWV2ZW50X2luZm87CiAKICAg
ICBidWZmZXIgPSBlaW5hX3N0cmJ1Zl9uZXcoKTsKICAgICBlaW5hX3N0cmJ1Zl9hcHBlbmRfcHJp
bnRmKGJ1ZmZlciwgIjxodG1sPjxib2R5PjxkaXYgc3R5bGU9XCJjb2xvcjojZmYwMDAwXCI+RVJS
T1IhPC9kaXY+PGJyPjxkaXY+Q29kZTogJWQ8YnI+RGVzY3JpcHRpb246ICVzPGJyPlVSTDogJXM8
L2Rpdj48L2JvZHk8L2h0bWw+IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV3a193
ZWJfZXJyb3JfY29kZV9nZXQoZXJyb3IpLCBld2tfd2ViX2Vycm9yX2Rlc2NyaXB0aW9uX2dldChl
cnJvciksIGV3a193ZWJfZXJyb3JfdXJsX2dldChlcnJvcikpOworICAgICAgICBld2tfZXJyb3Jf
Y29kZV9nZXQoZXJyb3IpLCBld2tfZXJyb3JfZGVzY3JpcHRpb25fZ2V0KGVycm9yKSwgZXdrX2Vy
cm9yX3VybF9nZXQoZXJyb3IpKTsKIAotICAgIGV3a192aWV3X2h0bWxfc3RyaW5nX2xvYWQod2Vi
dmlldywgZWluYV9zdHJidWZfc3RyaW5nX2dldChidWZmZXIpLCAwLCBld2tfd2ViX2Vycm9yX3Vy
bF9nZXQoZXJyb3IpKTsKKyAgICBld2tfdmlld19odG1sX3N0cmluZ19sb2FkKHdlYnZpZXcsIGVp
bmFfc3RyYnVmX3N0cmluZ19nZXQoYnVmZmVyKSwgMCwgZXdrX2Vycm9yX3VybF9nZXQoZXJyb3Ip
KTsKICAgICBlaW5hX3N0cmJ1Zl9mcmVlKGJ1ZmZlcik7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167287</attachid>
            <date>2012-10-05 02:02:25 -0700</date>
            <delta_ts>2012-10-05 04:05:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97886-20121005180133.patch</filename>
            <type>text/plain</type>
            <size>48735</size>
            <attacher name="Jongseok Yang">js45.yang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwNDcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZTlmNGFlYjJlYzA2ODY5
M2Q5NzdjM2Q1ZmJlNTZhZmE4N2M3ZTgwZi4uM2FiOTUzOWM0MjQwNWQ4ODQwZTIzM2I1NWY3Y2Zk
NjQ2ZTFjNjVlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDEyLTEwLTA1ICBKb25n
c2VvayBZYW5nICA8anM0NS55YW5nQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdW1dLMl0g
UmVtb3ZlICJ3ZWIiIHdvcmQgZnJvbSBld2tfd2ViX2Vycm9yIEFQSXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3ODg2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlICJ3ZWIiIHdvcmQgZnJvbSBl
d2tfd2ViX2Vycm9yIEFQSXMuCisgICAgICAgICJ3ZWIiIHdvcmQgd2FzIHJlZHVuZGFudCBiZWNh
dXNlICJld2siIG1lYW5zICJFRkwgV2ViS2l0IiBhbmQgV0sgQVBJcyBmb3IgZXJyb3IgZG9lcyBu
b3QgaGF2ZSAid2ViIiB3b3JkLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfY29udGV4dF9kb3dubG9hZF9jbGllbnQuY3BwOgorICAgICAgICAoZGlkRmFp
bCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nvb2tpZV9tYW5hZ2VyLmNwcDoK
KyAgICAgICAgKGdldEFjY2VwdFBvbGljeUNhbGxiYWNrKToKKyAgICAgICAgKGdldEhvc3RuYW1l
c1dpdGhDb29raWVzQ2FsbGJhY2spOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19j
b29raWVfbWFuYWdlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19kb3dubG9h
ZF9qb2JfcHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19lcnJvci5j
cHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfd2Vi
X2Vycm9yLmNwcC4KKyAgICAgICAgKF9Fd2tfRXJyb3IpOgorICAgICAgICAoX0V3a19FcnJvcjo6
X0V3a19FcnJvcik6CisgICAgICAgIChfRXdrX0Vycm9yOjp+X0V3a19FcnJvcik6CisgICAgICAg
IChld2tfZXJyb3JfZnJlZSk6CisgICAgICAgIChld2tfZXJyb3JfdHlwZV9nZXQpOgorICAgICAg
ICAoZXdrX2Vycm9yX3VybF9nZXQpOgorICAgICAgICAoZXdrX2Vycm9yX2NvZGVfZ2V0KToKKyAg
ICAgICAgKGV3a19lcnJvcl9kZXNjcmlwdGlvbl9nZXQpOgorICAgICAgICAoZXdrX2Vycm9yX2Nh
bmNlbGxhdGlvbl9nZXQpOgorICAgICAgICAoZXdrX2Vycm9yX25ldyk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX2Vycm9yLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9ld2tfd2ViX2Vycm9yLmguCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX2Vycm9yX3ByaXZhdGUuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a193ZWJfZXJyb3JfcHJpdmF0ZS5oLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcDoKKyAgICAgICAgKGV3a192aWV3X3Jlc291cmNlX2xv
YWRfZmFpbGVkKToKKyAgICAgICAgKGV3a192aWV3X2Rvd25sb2FkX2pvYl9mYWlsZWQpOgorICAg
ICAgICAoZXdrX3ZpZXdfbG9hZF9lcnJvcik6CisgICAgICAgIChld2tfdmlld19sb2FkX3Byb3Zp
c2lvbmFsX2ZhaWxlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19sb2FkZXJfY2xpZW50LmNwcDoK
KyAgICAgICAgKGRpZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJhbWUpOgorICAgICAgICAoZGlkRmFp
bFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZvckZyYW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9jbGllbnQuY3BwOgorICAgICAgICAoZGlkRmFpbExvYWRG
b3JSZXNvdXJjZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2sy
X2Nvb2tpZV9tYW5hZ2VyLmNwcDoKKyAgICAgICAgKGdldEFjY2VwdFBvbGljeUNhbGxiYWNrKToK
KyAgICAgICAgKGdldEhvc3RuYW1lc1dpdGhDb29raWVzQ2FsbGJhY2spOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9kb3dubG9hZF9qb2IuY3BwOgorICAgICAg
ICAob25fZG93bmxvYWRfZmFpbGVkKToKKwogMjAxMi0xMC0wNCAgUnl1YW4gQ2hvaSAgPHJ5dWFu
LmNob2lAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF1bV0syXSBld2tfd2ViX2Vycm9yX2Zy
ZWUgaXMgbm90IGEgcHVibGljIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZv
cm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCA0MDM2
YjdlNTEwMjlhNzc5NWEwZjQxYjMxOWI0NmIwZTczM2EwODRkLi44OWRiYjEzZmNmZWEzYTIxY2Uw
YTc2ODc5ZDJjOGYyZTczYzMzZDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtNTMs
NiArNTMsNyBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfY29udGV4dF9yZXF1ZXN0X21hbmFnZXJfY2xpZW50LmNwcAogICAgIFVJUHJvY2Vz
cy9BUEkvZWZsL2V3a19jb29raWVfbWFuYWdlci5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9l
d2tfZG93bmxvYWRfam9iLmNwcAorICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19lcnJvci5jcHAK
ICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfZm9ybV9zdWJtaXNzaW9uX3JlcXVlc3QuY3BwCiAg
ICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2ludGVudC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfaW50ZW50X3NlcnZpY2UuY3BwCkBAIC03MCw3ICs3MSw2IEBAIExJU1QoQVBQRU5EIFdl
YktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3BvbGljeV9jbGll
bnQuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9jbGll
bnQuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfdWlfY2xpZW50LmNwcAotICAg
IFVJUHJvY2Vzcy9BUEkvZWZsL2V3a193ZWJfZXJyb3IuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3dlYl9yZXNvdXJjZS5jcHAKIAogICAgIFVJUHJvY2Vzcy9jYWlyby9CYWNraW5nU3Rv
cmVDYWlyby5jcHAKQEAgLTIyOCw2ICsyMjgsNyBAQCBTRVQgKEVXZWJLaXQyX0hFQURFUlMKICAg
ICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250
ZXh0LmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfY29va2llX21hbmFnZXIuaCIKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19kb3dubG9hZF9qb2IuaCIKKyAgICAiJHtDTUFLRV9DVVJS
RU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19lcnJvci5oIgogICAgICIke0NN
QUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Zvcm1fc3VibWlz
c2lvbl9yZXF1ZXN0LmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfaW50ZW50LmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElS
fS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfaW50ZW50X3NlcnZpY2UuaCIKQEAgLTI0MCw3ICsyNDEs
NiBAQCBTRVQgKEVXZWJLaXQyX0hFQURFUlMKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9E
SVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfcmVzcG9uc2UuaCIKICAgICAiJHtDTUFLRV9D
VVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfc2NoZW1lX3JlcXVl
c3QuaCIKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a192aWV3LmgiCi0gICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfd2ViX2Vycm9yLmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElS
fS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfd2ViX3Jlc291cmNlLmgiCiApCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oCmluZGV4IDEzZWZhYjEzYWMzNDA5Y2Iz
YjRjZTk2NWMxNDBmNWJjMGQ0ZDM1MmEuLjZkMTRkOGVjMTNlYzMwY2JiNDE0MDU2NzFlYzljMDE0
NTJhMDI0ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VX
ZWJLaXQyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIu
aApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgImV3a19jb250ZXh0LmgiCiAjaW5jbHVkZSAi
ZXdrX2Nvb2tpZV9tYW5hZ2VyLmgiCiAjaW5jbHVkZSAiZXdrX2Rvd25sb2FkX2pvYi5oIgorI2lu
Y2x1ZGUgImV3a19lcnJvci5oIgogI2luY2x1ZGUgImV3a19mb3JtX3N1Ym1pc3Npb25fcmVxdWVz
dC5oIgogI2luY2x1ZGUgImV3a19pbnRlbnQuaCIKICNpbmNsdWRlICJld2tfaW50ZW50X3NlcnZp
Y2UuaCIKQEAgLTQ1LDcgKzQ2LDYgQEAKICNpbmNsdWRlICJld2tfdXJsX3Jlc3BvbnNlLmgiCiAj
aW5jbHVkZSAiZXdrX3VybF9zY2hlbWVfcmVxdWVzdC5oIgogI2luY2x1ZGUgImV3a192aWV3Lmgi
Ci0jaW5jbHVkZSAiZXdrX3dlYl9lcnJvci5oIgogI2luY2x1ZGUgImV3a193ZWJfcmVzb3VyY2Uu
aCIKIAogI2VuZGlmIC8vIEVXZWJLaXQyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X2Rvd25sb2FkX2NsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9kb3dubG9hZF9jbGllbnQuY3Bw
CmluZGV4IDQyZGJjNWMwZDMxZDQyNzc1NTczZjE5NGM5ZGQwMWQ2YjE5YTgxNmQuLjZlNDNkYzFm
NjVjODZiYmM4YTljYTFkNjBhMzM1YmNiZGE0MjU5MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X2Rvd25sb2FkX2NsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfZG93bmxvYWRf
Y2xpZW50LmNwcApAQCAtMzMsMTAgKzMzLDEwIEBACiAjaW5jbHVkZSAiZXdrX2NvbnRleHRfcHJp
dmF0ZS5oIgogI2luY2x1ZGUgImV3a19kb3dubG9hZF9qb2IuaCIKICNpbmNsdWRlICJld2tfZG93
bmxvYWRfam9iX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfZXJyb3JfcHJpdmF0ZS5oIgogI2lu
Y2x1ZGUgImV3a191cmxfcmVzcG9uc2UuaCIKICNpbmNsdWRlICJld2tfdXJsX3Jlc3BvbnNlX3By
aXZhdGUuaCIKICNpbmNsdWRlICJld2tfdmlld19wcml2YXRlLmgiCi0jaW5jbHVkZSAiZXdrX3dl
Yl9lcnJvcl9wcml2YXRlLmgiCiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgogCkBAIC05NCwxMCArOTQsMTAgQEAgc3RhdGljIHZvaWQgZGlkRmFpbChX
S0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYgd2tEb3dubG9hZCwgV0tFcnJvclJlZiBlcnJvciwg
Y28KICAgICBFd2tfRG93bmxvYWRfSm9iKiBkb3dubG9hZCA9IGV3a19jb250ZXh0X2Rvd25sb2Fk
X2pvYl9nZXQodG9Fd2tDb250ZXh0KGNsaWVudEluZm8pLCBkb3dubG9hZElkKTsKICAgICBBU1NF
UlQoZG93bmxvYWQpOwogCi0gICAgRXdrX1dlYl9FcnJvciogZXdrRXJyb3IgPSBld2tfd2ViX2Vy
cm9yX25ldyhlcnJvcik7CisgICAgRXdrX0Vycm9yKiBld2tFcnJvciA9IGV3a19lcnJvcl9uZXco
ZXJyb3IpOwogICAgIGV3a19kb3dubG9hZF9qb2Jfc3RhdGVfc2V0KGRvd25sb2FkLCBFV0tfRE9X
TkxPQURfSk9CX1NUQVRFX0ZBSUxFRCk7CiAgICAgZXdrX3ZpZXdfZG93bmxvYWRfam9iX2ZhaWxl
ZChld2tfZG93bmxvYWRfam9iX3ZpZXdfZ2V0KGRvd25sb2FkKSwgZG93bmxvYWQsIGV3a0Vycm9y
KTsKLSAgICBld2tfd2ViX2Vycm9yX2ZyZWUoZXdrRXJyb3IpOworICAgIGV3a19lcnJvcl9mcmVl
KGV3a0Vycm9yKTsKICAgICBld2tfY29udGV4dF9kb3dubG9hZF9qb2JfcmVtb3ZlKHRvRXdrQ29u
dGV4dChjbGllbnRJbmZvKSwgZG93bmxvYWRJZCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb29raWVfbWFuYWdlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29va2llX21hbmFnZXIuY3BwCmluZGV4IDQ1
ZGQ3NWU2MzJkYmE1ZDQ3ZGQ5NjliMzM5Y2U3NzA0MzY1NmY5ZGEuLmE1MjA0NzMzNjQxNDlhNzk3
ZGEyMDNmNTVmMzQzMmU2ZDMyNmE2MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a19jb29raWVfbWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nvb2tpZV9tYW5hZ2VyLmNwcApAQCAtMzMsOCArMzMsOCBA
QAogI2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCiAjaW5jbHVkZSAiV0tTdHJpbmcuaCIKICNpbmNs
dWRlICJXZWJDb29raWVNYW5hZ2VyUHJveHkuaCIKKyNpbmNsdWRlICJld2tfZXJyb3JfcHJpdmF0
ZS5oIgogI2luY2x1ZGUgImV3a19wcml2YXRlLmgiCi0jaW5jbHVkZSAiZXdrX3dlYl9lcnJvcl9w
cml2YXRlLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCkBAIC0xNDIsMTIgKzE0MiwxMiBAQCBzdHJ1Y3QgR2V0X1BvbGlj
eV9Bc3luY19EYXRhIHsKIHN0YXRpYyB2b2lkIGdldEFjY2VwdFBvbGljeUNhbGxiYWNrKFdLSFRU
UENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3ksIFdLRXJyb3JSZWYgd2tFcnJvciwgdm9pZCogZGF0
YSkKIHsKICAgICBHZXRfUG9saWN5X0FzeW5jX0RhdGEqIGNhbGxiYWNrRGF0YSA9IHN0YXRpY19j
YXN0PEdldF9Qb2xpY3lfQXN5bmNfRGF0YSo+KGRhdGEpOwotICAgIEV3a19XZWJfRXJyb3IqIGV3
a0Vycm9yID0gd2tFcnJvciA/IGV3a193ZWJfZXJyb3JfbmV3KHdrRXJyb3IpIDogMDsKKyAgICBF
d2tfRXJyb3IqIGV3a0Vycm9yID0gd2tFcnJvciA/IGV3a19lcnJvcl9uZXcod2tFcnJvcikgOiAw
OwogCiAgICAgY2FsbGJhY2tEYXRhLT5jYWxsYmFjayhzdGF0aWNfY2FzdDxFd2tfQ29va2llX0Fj
Y2VwdF9Qb2xpY3k+KHBvbGljeSksIGV3a0Vycm9yLCBjYWxsYmFja0RhdGEtPnVzZXJEYXRhKTsK
IAogICAgIGlmIChld2tFcnJvcikKLSAgICAgICAgZXdrX3dlYl9lcnJvcl9mcmVlKGV3a0Vycm9y
KTsKKyAgICAgICAgZXdrX2Vycm9yX2ZyZWUoZXdrRXJyb3IpOwogICAgIGRlbGV0ZSBjYWxsYmFj
a0RhdGE7CiB9CiAKQEAgLTE3Miw3ICsxNzIsNyBAQCBzdGF0aWMgdm9pZCBnZXRIb3N0bmFtZXNX
aXRoQ29va2llc0NhbGxiYWNrKFdLQXJyYXlSZWYgd2tIb3N0bmFtZXMsIFdLRXJyb3JSZWYgdwog
ewogICAgIEVpbmFfTGlzdCogaG9zdG5hbWVzID0gMDsKICAgICBHZXRfSG9zdG5hbWVzX0FzeW5j
X0RhdGEqIGNhbGxiYWNrRGF0YSA9IHN0YXRpY19jYXN0PEdldF9Ib3N0bmFtZXNfQXN5bmNfRGF0
YSo+KGNvbnRleHQpOwotICAgIEV3a19XZWJfRXJyb3IqIGV3a0Vycm9yID0gd2tFcnJvciA/IGV3
a193ZWJfZXJyb3JfbmV3KHdrRXJyb3IpIDogMDsKKyAgICBFd2tfRXJyb3IqIGV3a0Vycm9yID0g
d2tFcnJvciA/IGV3a19lcnJvcl9uZXcod2tFcnJvcikgOiAwOwogCiAgICAgY29uc3Qgc2l6ZV90
IGhvc3RuYW1lQ291bnQgPSBXS0FycmF5R2V0U2l6ZSh3a0hvc3RuYW1lcyk7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBob3N0bmFtZUNvdW50OyArK2kpIHsKQEAgLTE4OSw3ICsxODksNyBA
QCBzdGF0aWMgdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llc0NhbGxiYWNrKFdLQXJyYXlSZWYg
d2tIb3N0bmFtZXMsIFdLRXJyb3JSZWYgdwogICAgIEVJTkFfTElTVF9GUkVFKGhvc3RuYW1lcywg
aXRlbSkKICAgICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVsKHN0YXRpY19jYXN0PEVpbmFfU3RyaW5n
c2hhcmUqPihpdGVtKSk7CiAgICAgaWYgKGV3a0Vycm9yKQotICAgICAgICBld2tfd2ViX2Vycm9y
X2ZyZWUoZXdrRXJyb3IpOworICAgICAgICBld2tfZXJyb3JfZnJlZShld2tFcnJvcik7CiAgICAg
ZGVsZXRlIGNhbGxiYWNrRGF0YTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX2Nvb2tpZV9tYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfY29va2llX21hbmFnZXIuaAppbmRleCBlMzc3ODA4NjQ5MjlkOTA2
NWE3ZWEwYjUyMDRmNTdkYjQxZGY3MDAwLi5jMzFiOTAwMTg0MjA4NmRiZjJlNzMzODQ0MWMwM2Ix
YmYxMWZjMjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfY29va2llX21hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfY29va2llX21hbmFnZXIuaApAQCAtMzEsNyArMzEsNyBAQAogI2lmbmRlZiBld2tfY29v
a2llX21hbmFnZXJfaAogI2RlZmluZSBld2tfY29va2llX21hbmFnZXJfaAogCi0jaW5jbHVkZSAi
ZXdrX3dlYl9lcnJvci5oIgorI2luY2x1ZGUgImV3a19lcnJvci5oIgogI2luY2x1ZGUgPEVpbmEu
aD4KIAogI2lmZGVmIF9fY3BsdXNwbHVzCkBAIC03Nyw3ICs3Nyw3IEBAIHR5cGVkZWYgZW51bSBf
RXdrX0Nvb2tpZV9QZXJzaXN0ZW50X1N0b3JhZ2UgRXdrX0Nvb2tpZV9QZXJzaXN0ZW50X1N0b3Jh
Z2U7CiAgKiBAdHlwZWRlZiBFd2tfQ29va2llX01hbmFnZXJfQXN5bmNfUG9saWN5X0dldF9DYiBF
d2tfQ29va2llX01hbmFnZXJfQXN5bmNfUG9saWN5X0dldF9DYgogICogQGJyaWVmIENhbGxiYWNr
IHR5cGUgZm9yIHVzZSB3aXRoIGV3a19jb29raWVfbWFuYWdlcl9hc3luY19hY2NlcHRfcG9saWN5
X2dldAogICovCi10eXBlZGVmIHZvaWQgKCpFd2tfQ29va2llX01hbmFnZXJfQXN5bmNfUG9saWN5
X0dldF9DYikoRXdrX0Nvb2tpZV9BY2NlcHRfUG9saWN5IHBvbGljeSwgRXdrX1dlYl9FcnJvciAq
ZXJyb3IsIHZvaWQgKmV2ZW50X2luZm8pOwordHlwZWRlZiB2b2lkICgqRXdrX0Nvb2tpZV9NYW5h
Z2VyX0FzeW5jX1BvbGljeV9HZXRfQ2IpKEV3a19Db29raWVfQWNjZXB0X1BvbGljeSBwb2xpY3ks
IEV3a19FcnJvciAqZXJyb3IsIHZvaWQgKmV2ZW50X2luZm8pOwogCiAvKioKICAqIEB0eXBlZGVm
IEV3a19Db29raWVfTWFuYWdlcl9Bc3luY19Ib3N0bmFtZXNfR2V0X0NiIEV3a19Db29raWVfTWFu
YWdlcl9Bc3luY19Ib3N0bmFtZXNfR2V0X0NiCkBAIC04Nyw3ICs4Nyw3IEBAIHR5cGVkZWYgdm9p
ZCAoKkV3a19Db29raWVfTWFuYWdlcl9Bc3luY19Qb2xpY3lfR2V0X0NiKShFd2tfQ29va2llX0Fj
Y2VwdF9Qb2xpY3kKICAqIHNhdmUgeW91cnNlbGYgc29tZSBjcHUgY3ljbGVzIGFuZCB1c2UgZWlu
YV9zdHJpbmdzaGFyZV9yZWYoKSBpbnN0ZWFkIG9mIGVpbmFfc3RyaW5nc2hhcmVfYWRkKCkKICAq
IG9yIHN0cmR1cCgpLgogICovCi10eXBlZGVmIHZvaWQgKCpFd2tfQ29va2llX01hbmFnZXJfQXN5
bmNfSG9zdG5hbWVzX0dldF9DYikoRWluYV9MaXN0KiBob3N0bmFtZXMsIEV3a19XZWJfRXJyb3Ig
KmVycm9yLCB2b2lkICpldmVudF9pbmZvKTsKK3R5cGVkZWYgdm9pZCAoKkV3a19Db29raWVfTWFu
YWdlcl9Bc3luY19Ib3N0bmFtZXNfR2V0X0NiKShFaW5hX0xpc3QgKmhvc3RuYW1lcywgRXdrX0Vy
cm9yICplcnJvciwgdm9pZCAqZXZlbnRfaW5mbyk7CiAKIC8qKgogICogQHR5cGVkZWYgRXdrX0Nv
b2tpZV9NYW5hZ2VyX0NoYW5nZXNfV2F0Y2hfQ2IgRXdrX0Nvb2tpZV9NYW5hZ2VyX0NoYW5nZXNf
V2F0Y2hfQ2IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a19kb3dubG9hZF9qb2JfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX2Rvd25sb2FkX2pvYl9wcml2YXRlLmgKaW5kZXggZDA0MzQ5NGMzYmE1NWMyZDM5MTY4
MTJkZjJkYmYzYTg1ZTk4ZTU1My4uODFiNTQ0YmZlYTMyZmVmOTBhMGZjM2ViOTk5YjcyZWYyMGEx
NGVmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Rv
d25sb2FkX2pvYl9wcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX2Rvd25sb2FkX2pvYl9wcml2YXRlLmgKQEAgLTMxLDcgKzMxLDcgQEAKIAogdHlwZWRl
ZiBzdHJ1Y3QgX0V3a19Eb3dubG9hZF9Kb2IgRXdrX0Rvd25sb2FkX0pvYjsKIHR5cGVkZWYgc3Ry
dWN0IF9Fd2tfVXJsX1Jlc3BvbnNlIEV3a19VcmxfUmVzcG9uc2U7Ci10eXBlZGVmIHN0cnVjdCBf
RXdrX1dlYl9FcnJvciBFd2tfV2ViX0Vycm9yOwordHlwZWRlZiBzdHJ1Y3QgX0V3a19FcnJvciBF
d2tfRXJyb3I7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgRG93bmxvYWRQcm94eTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19lcnJvci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfZXJyb3IuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmE3ZDU3NmQwYTU2YWNhMDg4N2NiMTQ0OTYwMzNkYTg0YTU1YzkzZDEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfZXJyb3IuY3BwCkBA
IC0wLDAgKzEsMTM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0
aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiZXdrX2Vycm9yLmgiCisKKyNpbmNsdWRlICJFcnJvcnNFZmwuaCIKKyNpbmNs
dWRlICJXS0VpbmFTaGFyZWRTdHJpbmcuaCIKKyNpbmNsdWRlICJXS1N0cmluZy5oIgorI2luY2x1
ZGUgIldLVVJMLmgiCisjaW5jbHVkZSAiZXdrX2Vycm9yX3ByaXZhdGUuaCIKKyNpbmNsdWRlIDxX
S0FQSUNhc3QuaD4KKyNpbmNsdWRlIDxXS0Vycm9yLmg+CisjaW5jbHVkZSA8V0tSZXRhaW5QdHIu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworc3RydWN0IF9Fd2tfRXJyb3IgeworICAg
IFdLUmV0YWluUHRyPFdLRXJyb3JSZWY+IHdrRXJyb3I7CisKKyAgICBXS0VpbmFTaGFyZWRTdHJp
bmcgdXJsOworICAgIFdLRWluYVNoYXJlZFN0cmluZyBkZXNjcmlwdGlvbjsKKworICAgIF9Fd2tf
RXJyb3IoV0tFcnJvclJlZiBlcnJvclJlZikKKyAgICAgICAgOiB3a0Vycm9yKGVycm9yUmVmKQor
ICAgICAgICAsIHVybChBZG9wdFdLLCBXS0Vycm9yQ29weUZhaWxpbmdVUkwoZXJyb3JSZWYpKQor
ICAgICAgICAsIGRlc2NyaXB0aW9uKEFkb3B0V0ssIFdLRXJyb3JDb3B5TG9jYWxpemVkRGVzY3Jp
cHRpb24oZXJyb3JSZWYpKQorICAgIHsgfQorCisgICAgfl9Fd2tfRXJyb3IoKQorICAgIHsKKyAg
ICB9Cit9OworCisjZGVmaW5lIEVXS19FUlJPUl9XS19HRVRfT1JfUkVUVVJOKGVycm9yLCB3a0Vy
cm9yXywgLi4uKSAgICBcCisgICAgaWYgKCEoZXJyb3IpKSB7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgRUlOQV9MT0dfQ1JJVCgiZXJyb3IgaXMg
TlVMTC4iKTsgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gX19WQV9BUkdT
X187ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlm
ICghKGVycm9yKS0+d2tFcnJvcikgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgRUlOQV9MT0dfQ1JJVCgiZXJyb3ItPndrRXJyb3IgaXMgTlVMTC4iKTsgICAgICAg
ICAgICBcCisgICAgICAgIHJldHVybiBfX1ZBX0FSR1NfXzsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgV0tFcnJvclJlZiB3a0Vycm9yXyA9IChlcnJv
ciktPndrRXJyb3IuZ2V0KCkKKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIEZyZWVzIHRoZSBnaXZl
biBvYmplY3QuCisgKi8KK3ZvaWQgZXdrX2Vycm9yX2ZyZWUoRXdrX0Vycm9yKiBlcnJvcikKK3sK
KyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihlcnJvcik7CisKKyAgICBkZWxldGUgZXJy
b3I7Cit9CisKK0V3a19FcnJvcl9UeXBlIGV3a19lcnJvcl90eXBlX2dldChjb25zdCBFd2tfRXJy
b3IqIGVycm9yKQoreworICAgIEVXS19FUlJPUl9XS19HRVRfT1JfUkVUVVJOKGVycm9yLCB3a0Vy
cm9yLCBFV0tfRVJST1JfVFlQRV9OT05FKTsKKworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVm
PiB3a0RvbWFpbihBZG9wdFdLLCBXS0Vycm9yQ29weURvbWFpbih3a0Vycm9yKSk7CisgICAgV1RG
OjpTdHJpbmcgZXJyb3JEb21haW4gPSB0b1dURlN0cmluZyh3a0RvbWFpbi5nZXQoKSk7CisKKyAg
ICBpZiAoZXJyb3JEb21haW4gPT0gZXJyb3JEb21haW5OZXR3b3JrKQorICAgICAgICByZXR1cm4g
RVdLX0VSUk9SX1RZUEVfTkVUV09SSzsKKyAgICBpZiAoZXJyb3JEb21haW4gPT0gZXJyb3JEb21h
aW5Qb2xpY3kpCisgICAgICAgIHJldHVybiBFV0tfRVJST1JfVFlQRV9QT0xJQ1k7CisgICAgaWYg
KGVycm9yRG9tYWluID09IGVycm9yRG9tYWluUGx1Z2luKQorICAgICAgICByZXR1cm4gRVdLX0VS
Uk9SX1RZUEVfUExVR0lOOworICAgIGlmIChlcnJvckRvbWFpbiA9PSBlcnJvckRvbWFpbkRvd25s
b2FkKQorICAgICAgICByZXR1cm4gRVdLX0VSUk9SX1RZUEVfRE9XTkxPQUQ7CisgICAgaWYgKGVy
cm9yRG9tYWluID09IGVycm9yRG9tYWluUHJpbnQpCisgICAgICAgIHJldHVybiBFV0tfRVJST1Jf
VFlQRV9QUklOVDsKKyAgICByZXR1cm4gRVdLX0VSUk9SX1RZUEVfSU5URVJOQUw7Cit9CisKK2Nv
bnN0IGNoYXIqIGV3a19lcnJvcl91cmxfZ2V0KGNvbnN0IEV3a19FcnJvciogZXJyb3IpCit7Cisg
ICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGVycm9yLCAwKTsKKworICAgIHJldHVy
biBlcnJvci0+dXJsOworfQorCitpbnQgZXdrX2Vycm9yX2NvZGVfZ2V0KGNvbnN0IEV3a19FcnJv
ciogZXJyb3IpCit7CisgICAgRVdLX0VSUk9SX1dLX0dFVF9PUl9SRVRVUk4oZXJyb3IsIHdrRXJy
b3IsIDApOworCisgICAgcmV0dXJuIFdLRXJyb3JHZXRFcnJvckNvZGUod2tFcnJvcik7Cit9CisK
K2NvbnN0IGNoYXIqIGV3a19lcnJvcl9kZXNjcmlwdGlvbl9nZXQoY29uc3QgRXdrX0Vycm9yKiBl
cnJvcikKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoZXJyb3IsIDApOwor
CisgICAgcmV0dXJuIGVycm9yLT5kZXNjcmlwdGlvbjsKK30KKworRWluYV9Cb29sIGV3a19lcnJv
cl9jYW5jZWxsYXRpb25fZ2V0KGNvbnN0IEV3a19FcnJvciogZXJyb3IpCit7CisgICAgRVdLX0VS
Uk9SX1dLX0dFVF9PUl9SRVRVUk4oZXJyb3IsIHdrRXJyb3IsIGZhbHNlKTsKKworICAgIHJldHVy
biB0b0ltcGwod2tFcnJvciktPnBsYXRmb3JtRXJyb3IoKS5pc0NhbmNlbGxhdGlvbigpOworfQor
CitFd2tfRXJyb3IqIGV3a19lcnJvcl9uZXcoV0tFcnJvclJlZiBlcnJvcikKK3sKKyAgICBFSU5B
X1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoZXJyb3IsIDApOworCisgICAgcmV0dXJuIG5ldyBF
d2tfRXJyb3IoZXJyb3IpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX2Vycm9yLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfZXJyb3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMTIxNGQxMjEyZmIyNWQ2YmIwNjNlMmFhYThjZGRiNDIy
Y2Y2YjllCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX2Vycm9yLmgKQEAgLTAsMCArMSwxMTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8q
KgorICogQGZpbGUgICAgZXdrX2Vycm9yLmgKKyAqIEBicmllZiAgIERlc2NyaWJlcyB0aGUgV2Vi
IEVycm9yIEFQSS4KKyAqLworCisjaWZuZGVmIGV3a19lcnJvcl9oCisjZGVmaW5lIGV3a19lcnJv
cl9oCisKKyNpbmNsdWRlIDxFaW5hLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJD
IiB7CisjZW5kaWYKKworLyoqIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIEBhIEV3a19FcnJvci4g
Ki8KK3R5cGVkZWYgc3RydWN0IF9Fd2tfRXJyb3IgRXdrX0Vycm9yOworCisvLy8gQ3JlYXRlcyBh
IHR5cGUgbmFtZSBmb3IgRXdrX0Vycm9yX1R5cGUuCit0eXBlZGVmIGVudW0geworICAgIEVXS19F
UlJPUl9UWVBFX05PTkUsCisgICAgRVdLX0VSUk9SX1RZUEVfSU5URVJOQUwsCisgICAgRVdLX0VS
Uk9SX1RZUEVfTkVUV09SSywKKyAgICBFV0tfRVJST1JfVFlQRV9QT0xJQ1ksCisgICAgRVdLX0VS
Uk9SX1RZUEVfUExVR0lOLAorICAgIEVXS19FUlJPUl9UWVBFX0RPV05MT0FELAorICAgIEVXS19F
UlJPUl9UWVBFX1BSSU5UCit9IEV3a19FcnJvcl9UeXBlOworCisvKioKKyAqIFF1ZXJ5IHR5cGUg
Zm9yIHRoaXMgZXJyb3IuCisgKgorICogQHBhcmFtIGVycm9yIGVycm9yIG9iamVjdCB0byBxdWVy
eS4KKyAqCisgKiBAcmV0dXJuIHRoZSBlcnJvciB0eXBlLCB0aGF0IG1heSBiZSBAYyBOVUxMLiBU
aGlzIHBvaW50ZXIgaXMKKyAqICAgICAgICAgZ3VhcmFudGVlZCB0byBiZSBlaW5hX3N0cmluZ3No
YXJlLCBzbyB3aGVuZXZlciBwb3NzaWJsZQorICogICAgICAgICBzYXZlIHlvdXJzZWxmIHNvbWUg
Y3B1IGN5Y2xlcyBhbmQgdXNlCisgKiAgICAgICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVmKCkgaW5z
dGVhZCBvZiBlaW5hX3N0cmluZ3NoYXJlX2FkZCgpIG9yCisgKiAgICAgICAgIHN0cmR1cCgpLgor
ICovCitFQVBJIEV3a19FcnJvcl9UeXBlIGV3a19lcnJvcl90eXBlX2dldChjb25zdCBFd2tfRXJy
b3IgKmVycm9yKTsKKworLyoqCisgKiBRdWVyeSBmYWlsaW5nIFVSTCBmb3IgdGhpcyBlcnJvci4K
KyAqCisgKiBVUkwgdGhhdCBmYWlsZWQgbG9hZGluZy4KKyAqCisgKiBAcGFyYW0gZXJyb3IgZXJy
b3Igb2JqZWN0IHRvIHF1ZXJ5LgorICoKKyAqIEByZXR1cm4gdGhlIFVSTCBwb2ludGVyLCB0aGF0
IG1heSBiZSBAYyBOVUxMLiBUaGlzIHBvaW50ZXIgaXMKKyAqICAgICAgICAgZ3VhcmFudGVlZCB0
byBiZSBlaW5hX3N0cmluZ3NoYXJlLCBzbyB3aGVuZXZlciBwb3NzaWJsZQorICogICAgICAgICBz
YXZlIHlvdXJzZWxmIHNvbWUgY3B1IGN5Y2xlcyBhbmQgdXNlCisgKiAgICAgICAgIGVpbmFfc3Ry
aW5nc2hhcmVfcmVmKCkgaW5zdGVhZCBvZiBlaW5hX3N0cmluZ3NoYXJlX2FkZCgpIG9yCisgKiAg
ICAgICAgIHN0cmR1cCgpLgorICovCitFQVBJIGNvbnN0IGNoYXIgKmV3a19lcnJvcl91cmxfZ2V0
KGNvbnN0IEV3a19FcnJvciAqZXJyb3IpOworCisvKioKKyAqIFF1ZXJ5IEhUVFAgZXJyb3IgY29k
ZS4KKyAqCisgKiBAcGFyYW0gZXJyb3IgZXJyb3Igb2JqZWN0IHRvIHF1ZXJ5LgorICoKKyAqIEBy
ZXR1cm4gdGhlIEhUVFAgZXJyb3IgY29kZS4KKyAqLworRUFQSSBpbnQgZXdrX2Vycm9yX2NvZGVf
Z2V0KGNvbnN0IEV3a19FcnJvciAqZXJyb3IpOworCisvKioKKyAqIFF1ZXJ5IGRlc2NyaXB0aW9u
IGZvciB0aGlzIGVycm9yLgorICoKKyAqIEBwYXJhbSBlcnJvciBlcnJvciBvYmplY3QgdG8gcXVl
cnkuCisgKgorICogQHJldHVybiB0aGUgZGVzY3JpcHRpb24gcG9pbnRlciwgdGhhdCBtYXkgYmUg
QGMgTlVMTC4gVGhpcyBwb2ludGVyIGlzCisgKiAgICAgICAgIGd1YXJhbnRlZWQgdG8gYmUgZWlu
YV9zdHJpbmdzaGFyZSwgc28gd2hlbmV2ZXIgcG9zc2libGUKKyAqICAgICAgICAgc2F2ZSB5b3Vy
c2VsZiBzb21lIGNwdSBjeWNsZXMgYW5kIHVzZQorICogICAgICAgICBlaW5hX3N0cmluZ3NoYXJl
X3JlZigpIGluc3RlYWQgb2YgZWluYV9zdHJpbmdzaGFyZV9hZGQoKSBvcgorICogICAgICAgICBz
dHJkdXAoKS4KKyAqLworRUFQSSBjb25zdCBjaGFyICpld2tfZXJyb3JfZGVzY3JpcHRpb25fZ2V0
KGNvbnN0IEV3a19FcnJvciAqZXJyb3IpOworCisvKioKKyAqIFF1ZXJ5IGlmIGVycm9yIHNob3Vs
ZCBiZSB0cmVhdGVkIGFzIGEgY2FuY2VsbGF0aW9uLgorICoKKyAqIEBwYXJhbSBlcnJvciBlcnJv
ciBvYmplY3QgdG8gcXVlcnkuCisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgdGhpcyBl
cnJvciBzaG91bGQgYmUgdHJlYXRlZCBhcyBhIGNhbmNlbGxhdGlvbiwgQGMgRUlOQV9GQUxTRSBv
dGhlcndpc2UKKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX2Vycm9yX2NhbmNlbGxhdGlvbl9nZXQo
Y29uc3QgRXdrX0Vycm9yICplcnJvcik7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlm
CisKKyNlbmRpZiAvLyBld2tfZXJyb3JfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX2Vycm9yX3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a19lcnJvcl9wcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmYwMTk4OGMyNGEz
YTc5NTdiZDgxNGI2ODkzZjBkMDFiYWQwNTkyOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19lcnJvcl9wcml2YXRlLmgKQEAgLTAsMCArMSwz
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBld2tfZXJyb3JfcHJpdmF0ZV9oCisj
ZGVmaW5lIGV3a19lcnJvcl9wcml2YXRlX2gKKworI2luY2x1ZGUgPFdLRXJyb3IuaD4KKwordHlw
ZWRlZiBzdHJ1Y3QgX0V3a19FcnJvciBFd2tfRXJyb3I7CisKK0V3a19FcnJvciogZXdrX2Vycm9y
X25ldyhXS0Vycm9yUmVmIGVycm9yKTsKK3ZvaWQgZXdrX2Vycm9yX2ZyZWUoRXdrX0Vycm9yKiBl
cnJvcik7CisKKyNlbmRpZiAvLyBld2tfZXJyb3JfcHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKaW5kZXggNTU4Y2QyMjFhNDI3NmYwNmI1
ZWI5MzE2MzljZjY4YTc3MWUwM2FjZC4uNGYyYjNhM2NlNzViOTYxNDlmMjQ5NTU4ZGE3ZDBmNzQ1
YWE4NWZkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3
LmNwcApAQCAtOTg0LDcgKzk4NCw3IEBAIHZvaWQgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9yZXNw
b25zZShFdmFzX09iamVjdCogZXdrVmlldywgdWludDY0X3QgcmVzb3VyY2VJZGVuCiAgKgogICog
RW1pdHMgc2lnbmFsOiAicmVzb3VyY2UscmVxdWVzdCxmaW5pc2hlZCIgd2l0aCBwb2ludGVyIHRv
IHRoZSByZXNvdXJjZSBsb2FkIGVycm9yLgogICovCi12b2lkIGV3a192aWV3X3Jlc291cmNlX2xv
YWRfZmFpbGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZp
ZXIsIEV3a19XZWJfRXJyb3IqIGVycm9yKQordm9pZCBld2tfdmlld19yZXNvdXJjZV9sb2FkX2Zh
aWxlZChFdmFzX09iamVjdCogZXdrVmlldywgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBF
d2tfRXJyb3IqIGVycm9yKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmll
dywgc21hcnREYXRhKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRh
LCBwcml2KTsKQEAgLTEyOTksNyArMTI5OSw3IEBAIHZvaWQgZXdrX3ZpZXdfZG93bmxvYWRfam9i
X3JlcXVlc3RlZChFdmFzX09iamVjdCogZXdrVmlldywgRXdrX0Rvd25sb2FkX0pvYiogZG93CiAg
KgogICogRW1pdHMgc2lnbmFsOiAiZG93bmxvYWQsZmFpbGVkIiB3aXRoIHBvaW50ZXIgdG8gYSBF
d2tfRG93bmxvYWRfSm9iX0Vycm9yLgogICovCi12b2lkIGV3a192aWV3X2Rvd25sb2FkX2pvYl9m
YWlsZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19Eb3dubG9hZF9Kb2IqIGRvd25sb2FkLCBF
d2tfV2ViX0Vycm9yKiBlcnJvcikKK3ZvaWQgZXdrX3ZpZXdfZG93bmxvYWRfam9iX2ZhaWxlZChF
dmFzX09iamVjdCogZXdrVmlldywgRXdrX0Rvd25sb2FkX0pvYiogZG93bmxvYWQsIEV3a19FcnJv
ciogZXJyb3IpCiB7CiAgICAgRXdrX0Rvd25sb2FkX0pvYl9FcnJvciBkb3dubG9hZEVycm9yID0g
eyBkb3dubG9hZCwgZXJyb3IgfTsKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxs
KGV3a1ZpZXcsICJkb3dubG9hZCxmYWlsZWQiLCAmZG93bmxvYWRFcnJvcik7CkBAIC0xNDEwLDEx
ICsxNDEwLDExIEBAIHZvaWQgZXdrX3ZpZXdfZm9ybV9zdWJtaXNzaW9uX3JlcXVlc3RfbmV3KEV2
YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfRm9ybV9TdWJtaXNzCiAgKiBAaW50ZXJuYWwKICAqIFJl
cG9ydHMgbG9hZCBmYWlsZWQgd2l0aCBlcnJvciBpbmZvcm1hdGlvbi4KICAqCi0gKiBFbWl0cyBz
aWduYWw6ICJsb2FkLGVycm9yIiB3aXRoIHBvaW50ZXIgdG8gRXdrX1dlYl9FcnJvci4KKyAqIEVt
aXRzIHNpZ25hbDogImxvYWQsZXJyb3IiIHdpdGggcG9pbnRlciB0byBFd2tfRXJyb3IuCiAgKi8K
LXZvaWQgZXdrX3ZpZXdfbG9hZF9lcnJvcihFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgRXdr
X1dlYl9FcnJvciogZXJyb3IpCit2b2lkIGV3a192aWV3X2xvYWRfZXJyb3IoRXZhc19PYmplY3Qq
IGV3a1ZpZXcsIGNvbnN0IEV3a19FcnJvciogZXJyb3IpCiB7Ci0gICAgZXZhc19vYmplY3Rfc21h
cnRfY2FsbGJhY2tfY2FsbChld2tWaWV3LCAibG9hZCxlcnJvciIsIGNvbnN0X2Nhc3Q8RXdrX1dl
Yl9FcnJvcio+KGVycm9yKSk7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChl
d2tWaWV3LCAibG9hZCxlcnJvciIsIGNvbnN0X2Nhc3Q8RXdrX0Vycm9yKj4oZXJyb3IpKTsKIH0K
IAogLyoqCkBAIC0xNDMzLDExICsxNDMzLDExIEBAIHZvaWQgZXdrX3ZpZXdfbG9hZF9maW5pc2hl
ZChFdmFzX09iamVjdCogZXdrVmlldykKICAqIEBpbnRlcm5hbAogICogUmVwb3J0cyB2aWV3IHBy
b3Zpc2lvbmFsIGxvYWQgZmFpbGVkIHdpdGggZXJyb3IgaW5mb3JtYXRpb24uCiAgKgotICogRW1p
dHMgc2lnbmFsOiAibG9hZCxwcm92aXNpb25hbCxmYWlsZWQiIHdpdGggcG9pbnRlciB0byBFd2tf
V2ViX0Vycm9yLgorICogRW1pdHMgc2lnbmFsOiAibG9hZCxwcm92aXNpb25hbCxmYWlsZWQiIHdp
dGggcG9pbnRlciB0byBFd2tfRXJyb3IuCiAgKi8KLXZvaWQgZXdrX3ZpZXdfbG9hZF9wcm92aXNp
b25hbF9mYWlsZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IEV3a19XZWJfRXJyb3IqIGVy
cm9yKQordm9pZCBld2tfdmlld19sb2FkX3Byb3Zpc2lvbmFsX2ZhaWxlZChFdmFzX09iamVjdCog
ZXdrVmlldywgY29uc3QgRXdrX0Vycm9yKiBlcnJvcikKIHsKLSAgICBldmFzX29iamVjdF9zbWFy
dF9jYWxsYmFja19jYWxsKGV3a1ZpZXcsICJsb2FkLHByb3Zpc2lvbmFsLGZhaWxlZCIsIGNvbnN0
X2Nhc3Q8RXdrX1dlYl9FcnJvcio+KGVycm9yKSk7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2Fs
bGJhY2tfY2FsbChld2tWaWV3LCAibG9hZCxwcm92aXNpb25hbCxmYWlsZWQiLCBjb25zdF9jYXN0
PEV3a19FcnJvcio+KGVycm9yKSk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a192aWV3LmgKaW5kZXggZTk4OTViMmM1MzlhZDcxZTUyMmQyMzFhMDM5MTc2
NzU0Zjk4YjQwZC4uZDBkOTNhZDA5MTRlZGI2YjM5Yjc0ZTg4Njg0NWRhODdiNTYwN2I3MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCkBAIC00NCwxMCAr
NDQsMTAgQEAKICAqICAgZXdrX2Zvcm1fc3VibWlzc2lvbl9yZXF1ZXN0X3N1Ym1pdCgpIHdpbGwg
YmUgY2FsbGVkIGF1dG9tYXRpY2FsbHkuCiAgKiAtICJpbnRlbnQscmVxdWVzdCxuZXciLCBFd2tf
SW50ZW50KjogcmVwb3J0cyBuZXcgV2ViIGludGVudCByZXF1ZXN0LgogICogLSAiaW50ZW50LHNl
cnZpY2UscmVnaXN0ZXIiLCBFd2tfSW50ZW50X1NlcnZpY2UqOiByZXBvcnRzIG5ldyBXZWIgaW50
ZW50IHNlcnZpY2UgcmVnaXN0cmF0aW9uLgotICogLSAibG9hZCxlcnJvciIsIGNvbnN0IEV3a19X
ZWJfRXJyb3IqOiByZXBvcnRzIG1haW4gZnJhbWUgbG9hZCBmYWlsZWQuCisgKiAtICJsb2FkLGVy
cm9yIiwgY29uc3QgRXdrX0Vycm9yKjogcmVwb3J0cyBtYWluIGZyYW1lIGxvYWQgZmFpbGVkLgog
ICogLSAibG9hZCxmaW5pc2hlZCIsIHZvaWQ6IHJlcG9ydHMgbG9hZCBmaW5pc2hlZC4KICAqIC0g
ImxvYWQscHJvZ3Jlc3MiLCBkb3VibGUqOiBsb2FkIHByb2dyZXNzIGhhcyBjaGFuZ2VkICh2YWx1
ZSBmcm9tIDAuMCB0byAxLjApLgotICogLSAibG9hZCxwcm92aXNpb25hbCxmYWlsZWQiLCBjb25z
dCBFd2tfV2ViX0Vycm9yKjogdmlldyBwcm92aXNpb25hbCBsb2FkIGZhaWxlZC4KKyAqIC0gImxv
YWQscHJvdmlzaW9uYWwsZmFpbGVkIiwgY29uc3QgRXdrX0Vycm9yKjogdmlldyBwcm92aXNpb25h
bCBsb2FkIGZhaWxlZC4KICAqIC0gImxvYWQscHJvdmlzaW9uYWwscmVkaXJlY3QiLCB2b2lkOiB2
aWV3IHJlY2VpdmVkIHJlZGlyZWN0IGZvciBwcm92aXNpb25hbCBsb2FkLgogICogLSAibG9hZCxw
cm92aXNpb25hbCxzdGFydGVkIiwgdm9pZDogdmlldyBzdGFydGVkIHByb3Zpc2lvbmFsIGxvYWQu
CiAgKiAtICJwb2xpY3ksZGVjaXNpb24sbmF2aWdhdGlvbiIsIEV3a19OYXZpZ2F0aW9uX1BvbGlj
eV9EZWNpc2lvbio6IGEgbmF2aWdhdGlvbiBwb2xpY3kgZGVjaXNpb24gc2hvdWxkIGJlIHRha2Vu
LgpAQCAtNzMsMTIgKzczLDEyIEBACiAjaW5jbHVkZSAiZXdrX2JhY2tfZm9yd2FyZF9saXN0Lmgi
CiAjaW5jbHVkZSAiZXdrX2NvbnRleHQuaCIKICNpbmNsdWRlICJld2tfZG93bmxvYWRfam9iLmgi
CisjaW5jbHVkZSAiZXdrX2Vycm9yLmgiCiAjaW5jbHVkZSAiZXdrX2ludGVudC5oIgogI2luY2x1
ZGUgImV3a19zZXR0aW5ncy5oIgogI2luY2x1ZGUgImV3a190b3VjaC5oIgogI2luY2x1ZGUgImV3
a191cmxfcmVxdWVzdC5oIgogI2luY2x1ZGUgImV3a191cmxfcmVzcG9uc2UuaCIKLSNpbmNsdWRl
ICJld2tfd2ViX2Vycm9yLmgiCiAjaW5jbHVkZSAiZXdrX3dlYl9yZXNvdXJjZS5oIgogI2luY2x1
ZGUgPEV2YXMuaD4KIApAQCAtMjM0LDcgKzIzNCw3IEBAIHR5cGVkZWYgc3RydWN0IF9Fd2tfV2Vi
X1Jlc291cmNlX0xvYWRfRXJyb3IgRXdrX1dlYl9SZXNvdXJjZV9Mb2FkX0Vycm9yOwogICovCiBz
dHJ1Y3QgX0V3a19XZWJfUmVzb3VyY2VfTG9hZF9FcnJvciB7CiAgICAgRXdrX1dlYl9SZXNvdXJj
ZSAqcmVzb3VyY2U7IC8qKjwgcmVzb3VyY2UgdGhhdCBmYWlsZWQgbG9hZGluZyAqLwotICAgIEV3
a19XZWJfRXJyb3IgKmVycm9yOyAvKio8IGxvYWQgZXJyb3IgKi8KKyAgICBFd2tfRXJyb3IgKmVy
cm9yOyAvKio8IGxvYWQgZXJyb3IgKi8KIH07CiAKIC8vLyBDcmVhdGVzIGEgdHlwZSBuYW1lIGZv
ciBfRXdrX0Rvd25sb2FkX0pvYl9FcnJvci4KQEAgLTI0NSw3ICsyNDUsNyBAQCB0eXBlZGVmIHN0
cnVjdCBfRXdrX0Rvd25sb2FkX0pvYl9FcnJvciBFd2tfRG93bmxvYWRfSm9iX0Vycm9yOwogICov
CiBzdHJ1Y3QgX0V3a19Eb3dubG9hZF9Kb2JfRXJyb3IgewogICAgIEV3a19Eb3dubG9hZF9Kb2Ig
KmRvd25sb2FkX2pvYjsgLyoqPCBkb3dubG9hZCB0aGF0IGZhaWxlZCAqLwotICAgIEV3a19XZWJf
RXJyb3IgKmVycm9yOyAvKio8IGRvd25sb2FkIGVycm9yICovCisgICAgRXdrX0Vycm9yICplcnJv
cjsgLyoqPCBkb3dubG9hZCBlcnJvciAqLwogfTsKIAogLyoqCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19sb2FkZXJfY2xpZW50LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X2xvYWRlcl9jbGllbnQuY3Bw
CmluZGV4IDg2YzljMDg1NDBhODU4MzFmM2FkYzM3ZTgwMjk1MDNlY2MwNDg2ZWYuLmNkYzgwNThi
NzlkYjE1ZGM4MjNlMWFkYTFmODFjNGY3Mzg1MzNhZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X2xvYWRlcl9jbGllbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X2xvYWRlcl9jbGllbnQuY3Bw
CkBAIC0yOCwxMyArMjgsMTMgQEAKIAogI2luY2x1ZGUgIldLRnJhbWUuaCIKICNpbmNsdWRlICJl
d2tfYmFja19mb3J3YXJkX2xpc3RfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a19lcnJvcl9wcml2
YXRlLmgiCiAjaW5jbHVkZSAiZXdrX2ludGVudC5oIgogI2luY2x1ZGUgImV3a19pbnRlbnRfcHJp
dmF0ZS5oIgogI2luY2x1ZGUgImV3a19pbnRlbnRfc2VydmljZS5oIgogI2luY2x1ZGUgImV3a19p
bnRlbnRfc2VydmljZV9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3ZpZXdfbG9hZGVyX2NsaWVu
dF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0ZS5oIgotI2luY2x1ZGUgImV3
a193ZWJfZXJyb3JfcHJpdmF0ZS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAog
dXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKQEAgLTg5LDEwICs4OSwxMCBAQCBzdGF0aWMgdm9pZCBk
aWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiBmcmFtZSwg
V0tFcnJvclJlZgogICAgICAgICByZXR1cm47CiAKICAgICBFdmFzX09iamVjdCogZXdrVmlldyA9
IHN0YXRpY19jYXN0PEV2YXNfT2JqZWN0Kj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykp
OwotICAgIEV3a19XZWJfRXJyb3IqIGV3a0Vycm9yID0gZXdrX3dlYl9lcnJvcl9uZXcoZXJyb3Ip
OworICAgIEV3a19FcnJvciogZXdrRXJyb3IgPSBld2tfZXJyb3JfbmV3KGVycm9yKTsKICAgICBl
d2tfdmlld19sb2FkX2Vycm9yKGV3a1ZpZXcsIGV3a0Vycm9yKTsKICAgICBld2tfdmlld19sb2Fk
X2ZpbmlzaGVkKGV3a1ZpZXcpOwotICAgIGV3a193ZWJfZXJyb3JfZnJlZShld2tFcnJvcik7Cisg
ICAgZXdrX2Vycm9yX2ZyZWUoZXdrRXJyb3IpOwogfQogCiBzdGF0aWMgdm9pZCBkaWRTdGFydFBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBl
UmVmIC8qdXNlckRhdGEqLywgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKQEAgLTExOSw5ICsxMTks
OSBAQCBzdGF0aWMgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUo
V0tQYWdlUmVmLCBXS0ZyYW1lUmVmIGZyYW1lLAogICAgICAgICByZXR1cm47CiAKICAgICBFdmFz
X09iamVjdCogZXdrVmlldyA9IHN0YXRpY19jYXN0PEV2YXNfT2JqZWN0Kj4oY29uc3RfY2FzdDx2
b2lkKj4oY2xpZW50SW5mbykpOwotICAgIEV3a19XZWJfRXJyb3IqIGV3a0Vycm9yID0gZXdrX3dl
Yl9lcnJvcl9uZXcoZXJyb3IpOworICAgIEV3a19FcnJvciogZXdrRXJyb3IgPSBld2tfZXJyb3Jf
bmV3KGVycm9yKTsKICAgICBld2tfdmlld19sb2FkX3Byb3Zpc2lvbmFsX2ZhaWxlZChld2tWaWV3
LCBld2tFcnJvcik7Ci0gICAgZXdrX3dlYl9lcnJvcl9mcmVlKGV3a0Vycm9yKTsKKyAgICBld2tf
ZXJyb3JfZnJlZShld2tFcnJvcik7CiB9CiAKIHN0YXRpYyB2b2lkIGRpZENoYW5nZUJhY2tGb3J3
YXJkTGlzdChXS1BhZ2VSZWYsIFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZiBhZGRlZEl0ZW0sIFdL
QXJyYXlSZWYgcmVtb3ZlZEl0ZW1zLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oCmluZGV4
IDJmZThiYWRhYTBkZmY1NGVhNzFlMGU2ZmUxZWJlZmZlNTAyMThlNzguLjZmZTQwZTkwNDg5ZmVi
OWYwOTU1MzU5YjNiMzU4OWI5YmVkZGI0NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmgKQEAgLTQzLDcgKzQzLDcgQEAgdHlw
ZWRlZiBzdHJ1Y3QgX0V3a19Eb3dubG9hZF9Kb2IgRXdrX0Rvd25sb2FkX0pvYjsKIHR5cGVkZWYg
c3RydWN0IF9Fd2tfRm9ybV9TdWJtaXNzaW9uX1JlcXVlc3QgRXdrX0Zvcm1fU3VibWlzc2lvbl9S
ZXF1ZXN0OwogdHlwZWRlZiBzdHJ1Y3QgX0V3a19VcmxfUmVxdWVzdCBFd2tfVXJsX1JlcXVlc3Q7
CiB0eXBlZGVmIHN0cnVjdCBfRXdrX1VybF9SZXNwb25zZSBFd2tfVXJsX1Jlc3BvbnNlOwotdHlw
ZWRlZiBzdHJ1Y3QgX0V3a19XZWJfRXJyb3IgRXdrX1dlYl9FcnJvcjsKK3R5cGVkZWYgc3RydWN0
IF9Fd2tfRXJyb3IgRXdrX0Vycm9yOwogdHlwZWRlZiBzdHJ1Y3QgX0V3a19XZWJfUmVzb3VyY2Ug
RXdrX1dlYl9SZXNvdXJjZTsKIHR5cGVkZWYgc3RydWN0IF9Fd2tfTmF2aWdhdGlvbl9Qb2xpY3lf
RGVjaXNpb24gRXdrX05hdmlnYXRpb25fUG9saWN5X0RlY2lzaW9uOwogI2lmIEVOQUJMRShXRUJf
SU5URU5UUykKQEAgLTU2LDcgKzU2LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX0V3a19JbnRlbnRfU2Vy
dmljZSBFd2tfSW50ZW50X1NlcnZpY2U7CiB2b2lkIGV3a192aWV3X2N1cnNvcl9zZXQoRXZhc19P
YmplY3QqIGV3a1ZpZXcsIGNvbnN0IFdlYkNvcmU6OkN1cnNvciYgY3Vyc29yKTsKIHZvaWQgZXdr
X3ZpZXdfZGlzcGxheShFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYgcmVjdCk7CiB2b2lkIGV3a192aWV3X2Rvd25sb2FkX2pvYl9jYW5jZWxsZWQoRXZhc19PYmpl
Y3QqIGV3a1ZpZXcsIEV3a19Eb3dubG9hZF9Kb2IqKTsKLXZvaWQgZXdrX3ZpZXdfZG93bmxvYWRf
am9iX2ZhaWxlZChFdmFzX09iamVjdCogZXdrVmlldywgRXdrX0Rvd25sb2FkX0pvYiosIEV3a19X
ZWJfRXJyb3IqKTsKK3ZvaWQgZXdrX3ZpZXdfZG93bmxvYWRfam9iX2ZhaWxlZChFdmFzX09iamVj
dCogZXdrVmlldywgRXdrX0Rvd25sb2FkX0pvYiosIEV3a19FcnJvciopOwogdm9pZCBld2tfdmll
d19kb3dubG9hZF9qb2JfZmluaXNoZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19Eb3dubG9h
ZF9Kb2IqKTsKIHZvaWQgZXdrX3ZpZXdfZG93bmxvYWRfam9iX3JlcXVlc3RlZChFdmFzX09iamVj
dCogZXdrVmlldywgRXdrX0Rvd25sb2FkX0pvYiopOwogdm9pZCBld2tfdmlld19mb3JtX3N1Ym1p
c3Npb25fcmVxdWVzdF9uZXcoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19Gb3JtX1N1Ym1pc3Np
b25fUmVxdWVzdCopOwpAQCAtNjUsMTAgKzY1LDEwIEBAIHZvaWQgZXdrX3ZpZXdfZnVsbF9zY3Jl
ZW5fZW50ZXIoRXZhc19PYmplY3QqIGV3a1ZpZXcpOwogdm9pZCBld2tfdmlld19mdWxsX3NjcmVl
bl9leGl0KEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKICNlbmRpZgogdm9pZCBld2tfdmlld19pbWFn
ZV9kYXRhX3NldChFdmFzX09iamVjdCogZXdrVmlldywgdm9pZCogaW1hZ2VEYXRhLCBjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiBzaXplKTsKLXZvaWQgZXdrX3ZpZXdfbG9hZF9lcnJvcihFdmFzX09i
amVjdCogZXdrVmlldywgY29uc3QgRXdrX1dlYl9FcnJvciogZXJyb3IpOwordm9pZCBld2tfdmll
d19sb2FkX2Vycm9yKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBFd2tfRXJyb3IqIGVycm9y
KTsKIHZvaWQgZXdrX3ZpZXdfbG9hZF9maW5pc2hlZChFdmFzX09iamVjdCogZXdrVmlldyk7CiB2
b2lkIGV3a192aWV3X2xvYWRfcHJvZ3Jlc3NfY2hhbmdlZChFdmFzX09iamVjdCogZXdrVmlldywg
ZG91YmxlIHByb2dyZXNzKTsKLXZvaWQgZXdrX3ZpZXdfbG9hZF9wcm92aXNpb25hbF9mYWlsZWQo
RXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IEV3a19XZWJfRXJyb3IqIGVycm9yKTsKK3ZvaWQg
ZXdrX3ZpZXdfbG9hZF9wcm92aXNpb25hbF9mYWlsZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNv
bnN0IEV3a19FcnJvciogZXJyb3IpOwogdm9pZCBld2tfdmlld19sb2FkX3Byb3Zpc2lvbmFsX3Jl
ZGlyZWN0KEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKIHZvaWQgZXdrX3ZpZXdfbG9hZF9wcm92aXNp
b25hbF9zdGFydGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKIHZvaWQgZXdrX3ZpZXdfbmF2aWdh
dGlvbl9wb2xpY3lfZGVjaXNpb24oRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19OYXZpZ2F0aW9u
X1BvbGljeV9EZWNpc2lvbiogZGVjaXNpb24pOwpAQCAtNzYsNyArNzYsNyBAQCB2b2lkIGV3a192
aWV3X25ld193aW5kb3dfcG9saWN5X2RlY2lzaW9uKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tf
TmF2aWdhdGlvbl9Qbwogdm9pZCBld2tfdmlld19wYWdlX2Nsb3NlKEV2YXNfT2JqZWN0KiBld2tW
aWV3KTsKIFdLUGFnZVJlZiBld2tfdmlld19wYWdlX2NyZWF0ZShFdmFzX09iamVjdCogZXdrVmll
dyk7CiB2b2lkIGV3a192aWV3X3RpdGxlX2NoYW5nZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNv
bnN0IGNoYXIqIHRpdGxlKTsKLXZvaWQgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9mYWlsZWQoRXZh
c19PYmplY3QqIGV3a1ZpZXcsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwgRXdrX1dlYl9F
cnJvciogZXJyb3IpOwordm9pZCBld2tfdmlld19yZXNvdXJjZV9sb2FkX2ZhaWxlZChFdmFzX09i
amVjdCogZXdrVmlldywgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBFd2tfRXJyb3IqIGVy
cm9yKTsKIHZvaWQgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9maW5pc2hlZChFdmFzX09iamVjdCog
ZXdrVmlldywgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyKTsKIHZvaWQgZXdrX3ZpZXdfcmVz
b3VyY2VfbG9hZF9pbml0aWF0ZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIHVpbnQ2NF90IHJlc291
cmNlSWRlbnRpZmllciwgRXdrX1dlYl9SZXNvdXJjZSogcmVzb3VyY2UsIEV3a19VcmxfUmVxdWVz
dCogcmVxdWVzdCk7CiB2b2lkIGV3a192aWV3X3Jlc291cmNlX2xvYWRfcmVzcG9uc2UoRXZhc19P
YmplY3QqIGV3a1ZpZXcsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwgRXdrX1VybF9SZXNw
b25zZSogcmVzcG9uc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9jbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9jbGllbnQuY3BwCmluZGV4
IDFlNzI0YWRkYTU5NDczNWNkMTllMThhY2QwZmE3MmMwNDA0YzE4NTMuLmM4YmVlYzZiNjdkNmRj
MTcwZDUwZTBlMGI5NmM1YTVkNmVjZjEyNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3Jlc291cmNlX2xvYWRfY2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19yZXNvdXJjZV9sb2FkX2Ns
aWVudC5jcHAKQEAgLTMyLDEzICszMiwxMyBAQAogI2luY2x1ZGUgIldLVVJMLmgiCiAjaW5jbHVk
ZSAiV0tVUkxSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiV0tVUkxSZXNwb25zZS5oIgorI2luY2x1ZGUg
ImV3a19lcnJvcl9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3VybF9yZXF1ZXN0LmgiCiAjaW5j
bHVkZSAiZXdrX3VybF9yZXF1ZXN0X3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfdXJsX3Jlc3Bv
bnNlLmgiCiAjaW5jbHVkZSAiZXdrX3VybF9yZXNwb25zZV9wcml2YXRlLmgiCiAjaW5jbHVkZSAi
ZXdrX3ZpZXdfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a192aWV3X3Jlc291cmNlX2xvYWRfY2xp
ZW50X3ByaXZhdGUuaCIKLSNpbmNsdWRlICJld2tfd2ViX2Vycm9yX3ByaXZhdGUuaCIKICNpbmNs
dWRlICJld2tfd2ViX3Jlc291cmNlLmgiCiAjaW5jbHVkZSAiZXdrX3dlYl9yZXNvdXJjZV9wcml2
YXRlLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtODcsMTAgKzg3LDEwIEBA
IHN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRGb3JSZXNvdXJjZShXS1BhZ2VSZWYsIFdLRnJhbWVS
ZWYsIHVpbnQ2NF90IHJlc291cmNlSWRlCiAKIHN0YXRpYyB2b2lkIGRpZEZhaWxMb2FkRm9yUmVz
b3VyY2UoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIs
IFdLRXJyb3JSZWYgd2tFcnJvciwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKLSAgICBFd2tf
V2ViX0Vycm9yKiBld2tFcnJvciA9IGV3a193ZWJfZXJyb3JfbmV3KHdrRXJyb3IpOworICAgIEV3
a19FcnJvciogZXdrRXJyb3IgPSBld2tfZXJyb3JfbmV3KHdrRXJyb3IpOwogICAgIGV3a192aWV3
X3Jlc291cmNlX2xvYWRfZmFpbGVkKHRvRXdrVmlldyhjbGllbnRJbmZvKSwgcmVzb3VyY2VJZGVu
dGlmaWVyLCBld2tFcnJvcik7CiAgICAgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9maW5pc2hlZCh0
b0V3a1ZpZXcoY2xpZW50SW5mbyksIHJlc291cmNlSWRlbnRpZmllcik7Ci0gICAgZXdrX3dlYl9l
cnJvcl9mcmVlKGV3a0Vycm9yKTsKKyAgICBld2tfZXJyb3JfZnJlZShld2tFcnJvcik7CiB9CiAK
IHZvaWQgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9jbGllbnRfYXR0YWNoKFdLUGFnZVJlZiBwYWdl
UmVmLCBFdmFzX09iamVjdCogZXdrVmlldykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a193ZWJfZXJyb3IuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3dlYl9lcnJvci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGE5OGI2ZDRjMjdiMzMyZmFmMjEzMDk2YTEwMTMyYTMwZDk2NDM1MmMuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3dlYl9lcnJvci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzQgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
ImV3a193ZWJfZXJyb3IuaCIKLQotI2luY2x1ZGUgIkVycm9yc0VmbC5oIgotI2luY2x1ZGUgIldL
RWluYVNoYXJlZFN0cmluZy5oIgotI2luY2x1ZGUgIldLU3RyaW5nLmgiCi0jaW5jbHVkZSAiV0tV
UkwuaCIKLSNpbmNsdWRlICJld2tfd2ViX2Vycm9yX3ByaXZhdGUuaCIKLSNpbmNsdWRlIDxXS0FQ
SUNhc3QuaD4KLSNpbmNsdWRlIDxXS0Vycm9yLmg+Ci0jaW5jbHVkZSA8V0tSZXRhaW5QdHIuaD4K
LSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLQotc3RydWN0IF9Fd2tfV2ViX0Vycm9yIHsKLSAg
ICBXS1JldGFpblB0cjxXS0Vycm9yUmVmPiB3a0Vycm9yOwotCi0gICAgV0tFaW5hU2hhcmVkU3Ry
aW5nIHVybDsKLSAgICBXS0VpbmFTaGFyZWRTdHJpbmcgZGVzY3JpcHRpb247Ci0KLSAgICBfRXdr
X1dlYl9FcnJvcihXS0Vycm9yUmVmIGVycm9yUmVmKQotICAgICAgICA6IHdrRXJyb3IoZXJyb3JS
ZWYpCi0gICAgICAgICwgdXJsKEFkb3B0V0ssIFdLRXJyb3JDb3B5RmFpbGluZ1VSTChlcnJvclJl
ZikpCi0gICAgICAgICwgZGVzY3JpcHRpb24oQWRvcHRXSywgV0tFcnJvckNvcHlMb2NhbGl6ZWRE
ZXNjcmlwdGlvbihlcnJvclJlZikpCi0gICAgeyB9Ci0KLSAgICB+X0V3a19XZWJfRXJyb3IoKQot
ICAgIHsKLSAgICB9Ci19OwotCi0jZGVmaW5lIEVXS19XRUJfRVJST1JfV0tfR0VUX09SX1JFVFVS
TihlcnJvciwgd2tFcnJvcl8sIC4uLikgICAgXAotICAgIGlmICghKGVycm9yKSkgeyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIEVJTkFfTE9HX0NS
SVQoImVycm9yIGlzIE5VTEwuIik7ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgcmV0
dXJuIF9fVkFfQVJHU19fOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAg
ICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKLSAgICBpZiAoIShlcnJvciktPndrRXJyb3IpIHsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCi0gICAgICAgIEVJTkFfTE9HX0NSSVQoImVycm9yLT53a0Vycm9yIGlzIE5V
TEwuIik7ICAgICAgICAgICAgXAotICAgICAgICByZXR1cm4gX19WQV9BUkdTX187ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIFdLRXJyb3JSZWYgd2tF
cnJvcl8gPSAoZXJyb3IpLT53a0Vycm9yLmdldCgpCi0KLS8qKgotICogQGludGVybmFsCi0gKiBG
cmVlcyB0aGUgZ2l2ZW4gb2JqZWN0LgotICovCi12b2lkIGV3a193ZWJfZXJyb3JfZnJlZShFd2tf
V2ViX0Vycm9yKiBlcnJvcikKLXsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihlcnJv
cik7Ci0KLSAgICBkZWxldGUgZXJyb3I7Ci19Ci0KLUV3a19XZWJfRXJyb3JfVHlwZSBld2tfd2Vi
X2Vycm9yX3R5cGVfZ2V0KGNvbnN0IEV3a19XZWJfRXJyb3IqIGVycm9yKQotewotICAgIEVXS19X
RUJfRVJST1JfV0tfR0VUX09SX1JFVFVSTihlcnJvciwgd2tFcnJvciwgRVdLX1dFQl9FUlJPUl9U
WVBFX05PTkUpOwotCi0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHdrRG9tYWluKEFkb3B0
V0ssIFdLRXJyb3JDb3B5RG9tYWluKHdrRXJyb3IpKTsKLSAgICBXVEY6OlN0cmluZyBlcnJvckRv
bWFpbiA9IHRvV1RGU3RyaW5nKHdrRG9tYWluLmdldCgpKTsKLQotICAgIGlmIChlcnJvckRvbWFp
biA9PSBlcnJvckRvbWFpbk5ldHdvcmspCi0gICAgICAgIHJldHVybiBFV0tfV0VCX0VSUk9SX1RZ
UEVfTkVUV09SSzsKLSAgICBpZiAoZXJyb3JEb21haW4gPT0gZXJyb3JEb21haW5Qb2xpY3kpCi0g
ICAgICAgIHJldHVybiBFV0tfV0VCX0VSUk9SX1RZUEVfUE9MSUNZOwotICAgIGlmIChlcnJvckRv
bWFpbiA9PSBlcnJvckRvbWFpblBsdWdpbikKLSAgICAgICAgcmV0dXJuIEVXS19XRUJfRVJST1Jf
VFlQRV9QTFVHSU47Ci0gICAgaWYgKGVycm9yRG9tYWluID09IGVycm9yRG9tYWluRG93bmxvYWQp
Ci0gICAgICAgIHJldHVybiBFV0tfV0VCX0VSUk9SX1RZUEVfRE9XTkxPQUQ7Ci0gICAgaWYgKGVy
cm9yRG9tYWluID09IGVycm9yRG9tYWluUHJpbnQpCi0gICAgICAgIHJldHVybiBFV0tfV0VCX0VS
Uk9SX1RZUEVfUFJJTlQ7Ci0gICAgcmV0dXJuIEVXS19XRUJfRVJST1JfVFlQRV9JTlRFUk5BTDsK
LX0KLQotY29uc3QgY2hhciogZXdrX3dlYl9lcnJvcl91cmxfZ2V0KGNvbnN0IEV3a19XZWJfRXJy
b3IqIGVycm9yKQotewotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChlcnJvciwg
MCk7Ci0KLSAgICByZXR1cm4gZXJyb3ItPnVybDsKLX0KLQotaW50IGV3a193ZWJfZXJyb3JfY29k
ZV9nZXQoY29uc3QgRXdrX1dlYl9FcnJvciogZXJyb3IpCi17Ci0gICAgRVdLX1dFQl9FUlJPUl9X
S19HRVRfT1JfUkVUVVJOKGVycm9yLCB3a0Vycm9yLCAwKTsKLQotICAgIHJldHVybiBXS0Vycm9y
R2V0RXJyb3JDb2RlKHdrRXJyb3IpOwotfQotCi1jb25zdCBjaGFyKiBld2tfd2ViX2Vycm9yX2Rl
c2NyaXB0aW9uX2dldChjb25zdCBFd2tfV2ViX0Vycm9yKiBlcnJvcikKLXsKLSAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoZXJyb3IsIDApOwotCi0gICAgcmV0dXJuIGVycm9yLT5k
ZXNjcmlwdGlvbjsKLX0KLQotRWluYV9Cb29sIGV3a193ZWJfZXJyb3JfY2FuY2VsbGF0aW9uX2dl
dChjb25zdCBFd2tfV2ViX0Vycm9yKiBlcnJvcikKLXsKLSAgICBFV0tfV0VCX0VSUk9SX1dLX0dF
VF9PUl9SRVRVUk4oZXJyb3IsIHdrRXJyb3IsIGZhbHNlKTsKLQotICAgIHJldHVybiB0b0ltcGwo
d2tFcnJvciktPnBsYXRmb3JtRXJyb3IoKS5pc0NhbmNlbGxhdGlvbigpOwotfQotCi1Fd2tfV2Vi
X0Vycm9yKiBld2tfd2ViX2Vycm9yX25ldyhXS0Vycm9yUmVmIGVycm9yKQotewotICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChlcnJvciwgMCk7Ci0KLSAgICByZXR1cm4gbmV3IEV3
a19XZWJfRXJyb3IoZXJyb3IpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3dlYl9lcnJvci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3dlYl9lcnJvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3Njhi
OWE0MTE5ODY5ZTk1ODQ2ODYyNWM5ZjYwMWE1ZTZlZDJlYWVjLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a193ZWJfZXJyb3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDExNyArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0vKioKLSAqIEBmaWxlICAgIGV3a193ZWJfZXJyb3IuaAotICogQGJy
aWVmICAgRGVzY3JpYmVzIHRoZSBXZWIgRXJyb3IgQVBJLgotICovCi0KLSNpZm5kZWYgZXdrX3dl
Yl9lcnJvcl9oCi0jZGVmaW5lIGV3a193ZWJfZXJyb3JfaAotCi0jaW5jbHVkZSA8RWluYS5oPgot
Ci0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KLS8qKiBDcmVhdGVz
IGEgdHlwZSBuYW1lIGZvciBAYSBFd2tfV2ViX0Vycm9yLiAqLwotdHlwZWRlZiBzdHJ1Y3QgX0V3
a19XZWJfRXJyb3IgRXdrX1dlYl9FcnJvcjsKLQotLy8vIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9y
IEV3a19XZWJfRXJyb3JfVHlwZS4KLXR5cGVkZWYgZW51bSB7Ci0gICAgRVdLX1dFQl9FUlJPUl9U
WVBFX05PTkUsCi0gICAgRVdLX1dFQl9FUlJPUl9UWVBFX0lOVEVSTkFMLAotICAgIEVXS19XRUJf
RVJST1JfVFlQRV9ORVRXT1JLLAotICAgIEVXS19XRUJfRVJST1JfVFlQRV9QT0xJQ1ksCi0gICAg
RVdLX1dFQl9FUlJPUl9UWVBFX1BMVUdJTiwKLSAgICBFV0tfV0VCX0VSUk9SX1RZUEVfRE9XTkxP
QUQsCi0gICAgRVdLX1dFQl9FUlJPUl9UWVBFX1BSSU5UCi19IEV3a19XZWJfRXJyb3JfVHlwZTsK
LQotLyoqCi0gKiBRdWVyeSB0eXBlIGZvciB0aGlzIGVycm9yLgotICoKLSAqIEBwYXJhbSBlcnJv
ciBlcnJvciBvYmplY3QgdG8gcXVlcnkuCi0gKgotICogQHJldHVybiB0aGUgZXJyb3IgdHlwZSwg
dGhhdCBtYXkgYmUgQGMgTlVMTC4gVGhpcyBwb2ludGVyIGlzCi0gKiAgICAgICAgIGd1YXJhbnRl
ZWQgdG8gYmUgZWluYV9zdHJpbmdzaGFyZSwgc28gd2hlbmV2ZXIgcG9zc2libGUKLSAqICAgICAg
ICAgc2F2ZSB5b3Vyc2VsZiBzb21lIGNwdSBjeWNsZXMgYW5kIHVzZQotICogICAgICAgICBlaW5h
X3N0cmluZ3NoYXJlX3JlZigpIGluc3RlYWQgb2YgZWluYV9zdHJpbmdzaGFyZV9hZGQoKSBvcgot
ICogICAgICAgICBzdHJkdXAoKS4KLSAqLwotRUFQSSBFd2tfV2ViX0Vycm9yX1R5cGUgZXdrX3dl
Yl9lcnJvcl90eXBlX2dldChjb25zdCBFd2tfV2ViX0Vycm9yICplcnJvcik7Ci0KLS8qKgotICog
UXVlcnkgZmFpbGluZyBVUkwgZm9yIHRoaXMgZXJyb3IuCi0gKgotICogVVJMIHRoYXQgZmFpbGVk
IGxvYWRpbmcuCi0gKgotICogQHBhcmFtIGVycm9yIGVycm9yIG9iamVjdCB0byBxdWVyeS4KLSAq
Ci0gKiBAcmV0dXJuIHRoZSBVUkwgcG9pbnRlciwgdGhhdCBtYXkgYmUgQGMgTlVMTC4gVGhpcyBw
b2ludGVyIGlzCi0gKiAgICAgICAgIGd1YXJhbnRlZWQgdG8gYmUgZWluYV9zdHJpbmdzaGFyZSwg
c28gd2hlbmV2ZXIgcG9zc2libGUKLSAqICAgICAgICAgc2F2ZSB5b3Vyc2VsZiBzb21lIGNwdSBj
eWNsZXMgYW5kIHVzZQotICogICAgICAgICBlaW5hX3N0cmluZ3NoYXJlX3JlZigpIGluc3RlYWQg
b2YgZWluYV9zdHJpbmdzaGFyZV9hZGQoKSBvcgotICogICAgICAgICBzdHJkdXAoKS4KLSAqLwot
RUFQSSBjb25zdCBjaGFyICpld2tfd2ViX2Vycm9yX3VybF9nZXQoY29uc3QgRXdrX1dlYl9FcnJv
ciAqZXJyb3IpOwotCi0vKioKLSAqIFF1ZXJ5IEhUVFAgZXJyb3IgY29kZS4KLSAqCi0gKiBAcGFy
YW0gZXJyb3IgZXJyb3Igb2JqZWN0IHRvIHF1ZXJ5LgotICoKLSAqIEByZXR1cm4gdGhlIEhUVFAg
ZXJyb3IgY29kZS4KLSAqLwotRUFQSSBpbnQgZXdrX3dlYl9lcnJvcl9jb2RlX2dldChjb25zdCBF
d2tfV2ViX0Vycm9yICplcnJvcik7Ci0KLS8qKgotICogUXVlcnkgZGVzY3JpcHRpb24gZm9yIHRo
aXMgZXJyb3IuCi0gKgotICogQHBhcmFtIGVycm9yIGVycm9yIG9iamVjdCB0byBxdWVyeS4KLSAq
Ci0gKiBAcmV0dXJuIHRoZSBkZXNjcmlwdGlvbiBwb2ludGVyLCB0aGF0IG1heSBiZSBAYyBOVUxM
LiBUaGlzIHBvaW50ZXIgaXMKLSAqICAgICAgICAgZ3VhcmFudGVlZCB0byBiZSBlaW5hX3N0cmlu
Z3NoYXJlLCBzbyB3aGVuZXZlciBwb3NzaWJsZQotICogICAgICAgICBzYXZlIHlvdXJzZWxmIHNv
bWUgY3B1IGN5Y2xlcyBhbmQgdXNlCi0gKiAgICAgICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVmKCkg
aW5zdGVhZCBvZiBlaW5hX3N0cmluZ3NoYXJlX2FkZCgpIG9yCi0gKiAgICAgICAgIHN0cmR1cCgp
LgotICovCi1FQVBJIGNvbnN0IGNoYXIgKmV3a193ZWJfZXJyb3JfZGVzY3JpcHRpb25fZ2V0KGNv
bnN0IEV3a19XZWJfRXJyb3IgKmVycm9yKTsKLQotLyoqCi0gKiBRdWVyeSBpZiBlcnJvciBzaG91
bGQgYmUgdHJlYXRlZCBhcyBhIGNhbmNlbGxhdGlvbi4KLSAqCi0gKiBAcGFyYW0gZXJyb3IgZXJy
b3Igb2JqZWN0IHRvIHF1ZXJ5LgotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHRoaXMg
ZXJyb3Igc2hvdWxkIGJlIHRyZWF0ZWQgYXMgYSBjYW5jZWxsYXRpb24sIEBjIEVJTkFfRkFMU0Ug
b3RoZXJ3aXNlCi0gKi8KLUVBUEkgRWluYV9Cb29sIGV3a193ZWJfZXJyb3JfY2FuY2VsbGF0aW9u
X2dldChjb25zdCBFd2tfV2ViX0Vycm9yICplcnJvcik7Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwot
fQotI2VuZGlmCi0KLSNlbmRpZiAvLyBld2tfd2ViX2Vycm9yX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a193ZWJfZXJyb3JfcHJpdmF0ZS5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3dlYl9lcnJvcl9wcml2YXRlLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg4OTNhMmJiYmRmNjFkYTI2NDZiYWFlNDRkNDg0
N2MyMzdiNDAzYjAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3dlYl9lcnJvcl9wcml2YXRl
LmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aWZuZGVmIGV3a193ZWJfZXJyb3JfcHJpdmF0ZV9oCi0jZGVmaW5lIGV3a193ZWJfZXJyb3JfcHJp
dmF0ZV9oCi0KLSNpbmNsdWRlIDxXS0Vycm9yLmg+Ci0KLXR5cGVkZWYgc3RydWN0IF9Fd2tfV2Vi
X0Vycm9yIEV3a19XZWJfRXJyb3I7Ci0KLUV3a19XZWJfRXJyb3IqIGV3a193ZWJfZXJyb3JfbmV3
KFdLRXJyb3JSZWYgZXJyb3IpOwotdm9pZCBld2tfd2ViX2Vycm9yX2ZyZWUoRXdrX1dlYl9FcnJv
ciogZXJyb3IpOwotCi0jZW5kaWYgLy8gZXdrX3dlYl9lcnJvcl9wcml2YXRlX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9jb29r
aWVfbWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90
ZXN0X2V3azJfY29va2llX21hbmFnZXIuY3BwCmluZGV4IDc4OGFjYzkyM2U3MDgwMzAxMDZmNTcy
MzU2Yjk4YmViOTBjMGYwYTIuLjM3MWM5ODAxNWZiMDk1ZmRkOTBhZGMyOTRjMmMzY2U1MWNiYjg4
ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rl
c3RfZXdrMl9jb29raWVfbWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2Nvb2tpZV9tYW5hZ2VyLmNwcApAQCAtNjUsNyArNjUs
NyBAQCBzdGF0aWMgdm9pZCBzZXJ2ZXJDYWxsYmFjayhTb3VwU2VydmVyKiBzZXJ2ZXIsIFNvdXBN
ZXNzYWdlKiBtZXNzYWdlLCBjb25zdCBjaGFyKgogICAgIHNvdXBfbWVzc2FnZV9ib2R5X2NvbXBs
ZXRlKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHkpOwogfQogCi1zdGF0aWMgdm9pZCBnZXRBY2NlcHRQ
b2xpY3lDYWxsYmFjayhFd2tfQ29va2llX0FjY2VwdF9Qb2xpY3kgcG9saWN5LCBFd2tfV2ViX0Vy
cm9yKiBlcnJvciwgdm9pZCogZXZlbnRfaW5mbykKK3N0YXRpYyB2b2lkIGdldEFjY2VwdFBvbGlj
eUNhbGxiYWNrKEV3a19Db29raWVfQWNjZXB0X1BvbGljeSBwb2xpY3ksIEV3a19FcnJvciogZXJy
b3IsIHZvaWQqIGV2ZW50X2luZm8pCiB7CiAgICAgQVNTRVJUX0ZBTFNFKGVycm9yKTsKICAgICBF
d2tfQ29va2llX0FjY2VwdF9Qb2xpY3kqIHJldCA9IHN0YXRpY19jYXN0PEV3a19Db29raWVfQWNj
ZXB0X1BvbGljeSo+KGV2ZW50X2luZm8pOwpAQCAtODEsNyArODEsNyBAQCBzdGF0aWMgRXdrX0Nv
b2tpZV9BY2NlcHRfUG9saWN5IGdldEFjY2VwdFBvbGljeShFd2tfQ29va2llX01hbmFnZXIqIG1h
bmFnZXIpCiAgICAgcmV0dXJuIHBvbGljeTsKIH0KIAotc3RhdGljIHZvaWQgZ2V0SG9zdG5hbWVz
V2l0aENvb2tpZXNDYWxsYmFjayhFaW5hX0xpc3QqIGhvc3RuYW1lcywgRXdrX1dlYl9FcnJvciog
ZXJyb3IsIHZvaWQqIGV2ZW50X2luZm8pCitzdGF0aWMgdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29v
a2llc0NhbGxiYWNrKEVpbmFfTGlzdCogaG9zdG5hbWVzLCBFd2tfRXJyb3IqIGVycm9yLCB2b2lk
KiBldmVudF9pbmZvKQogewogICAgIEFTU0VSVF9GQUxTRShlcnJvcik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9kb3dubG9h
ZF9qb2IuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9l
d2syX2Rvd25sb2FkX2pvYi5jcHAKaW5kZXggNDMzZThkMTM3NTdmYTYwZTUwNjk2Y2EyOTU4YWQ3
Y2RjOWQ1Y2FhNy4uZjgxMWQ0MzdiM2M3YzRkMWRhZjUwMzc5NWYxMDFmYmVkN2IzOWI3MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2sy
X2Rvd25sb2FkX2pvYi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
dGVzdHMvdGVzdF9ld2syX2Rvd25sb2FkX2pvYi5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCBzdGF0
aWMgdm9pZCBvbl9kb3dubG9hZF9jYW5jZWxsZWQodm9pZCogdXNlckRhdGEsIEV2YXNfT2JqZWN0
KiB3ZWJ2aWV3LCB2b2lkKiBldgogc3RhdGljIHZvaWQgb25fZG93bmxvYWRfZmFpbGVkKHZvaWQq
IHVzZXJEYXRhLCBFdmFzX09iamVjdCogd2Vidmlldywgdm9pZCogZXZlbnRJbmZvKQogewogICAg
IEV3a19Eb3dubG9hZF9Kb2JfRXJyb3IqIGRvd25sb2FkRXJyb3IgPSBzdGF0aWNfY2FzdDxFd2tf
RG93bmxvYWRfSm9iX0Vycm9yKj4oZXZlbnRJbmZvKTsKLSAgICBmcHJpbnRmKHN0ZGVyciwgIkRv
d25sb2FkIGVycm9yOiAlc1xuIiwgZXdrX3dlYl9lcnJvcl9kZXNjcmlwdGlvbl9nZXQoZG93bmxv
YWRFcnJvci0+ZXJyb3IpKTsKKyAgICBmcHJpbnRmKHN0ZGVyciwgIkRvd25sb2FkIGVycm9yOiAl
c1xuIiwgZXdrX2Vycm9yX2Rlc2NyaXB0aW9uX2dldChkb3dubG9hZEVycm9yLT5lcnJvcikpOwog
ICAgIGVjb3JlX21haW5fbG9vcF9xdWl0KCk7CiAgICAgRkFJTCgpOwogfQpkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDllOWE1YjllOWEzNjQxMjk2
NWU0NzBiZmFlNjQ5NTNlYzVlNzRiMmYuLmZhNTY2ZGM2ZWIwY2ZiNTcwZWU4N2MxMTZjNzgyMThl
NWE0NzI1MzMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0xMC0wNSAgSm9uZ3Nlb2sgWWFuZyAgPGpzNDUueWFu
Z0BzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIFJlbW92ZSAid2ViIiB3b3JkIGZy
b20gZXdrX3dlYl9lcnJvciBBUElzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05Nzg4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFJlbW92ZSAid2ViIiB3b3JkIGZyb20gZXdrX3dlYl9lcnJvciBBUElzLgor
ICAgICAgICAid2ViIiB3b3JkIHdhcyByZWR1bmRhbnQgYmVjYXVzZSAiZXdrIiBtZWFucyAiRUZM
IFdlYktpdCIgYW5kIFdLIEFQSXMgZm9yIGVycm9yIGRvZXMgbm90IGhhdmUgIndlYiIgd29yZC4K
KworICAgICAgICAqIE1pbmlCcm93c2VyL2VmbC9tYWluLmM6CisgICAgICAgIChvbl9lcnJvcik6
CisKIDIwMTItMTAtMDQgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KIAogICAgICAgICBbV0syXVtXS1RSXSBJbXBsZW1lbnQgVUlDbGllbnQgZm9jdXMgY2Fs
bGJhY2tzIGluIFdlYktpdFRlc3RSdW5uZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2Vy
L2VmbC9tYWluLmMgYi9Ub29scy9NaW5pQnJvd3Nlci9lZmwvbWFpbi5jCmluZGV4IGUzYzBjODZl
NDk1NmZhNjlhODgyNTM5YzhkOGUxZjg0MDY4YmRiZmEuLjVhMTg5ZDI3OTUzNWU2Y2ZlMzdkOTYz
MGY1MmE2NWZjNTM2NGI0MzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL2VmbC9tYWlu
LmMKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvZWZsL21haW4uYwpAQCAtMTg5LDEzICsxODksMTMg
QEAgc3RhdGljIHZvaWQKIG9uX2Vycm9yKHZvaWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKndl
YnZpZXcsIHZvaWQgKmV2ZW50X2luZm8pCiB7CiAgICAgRWluYV9TdHJidWYqIGJ1ZmZlcjsKLSAg
ICBjb25zdCBFd2tfV2ViX0Vycm9yICplcnJvciA9IChjb25zdCBFd2tfV2ViX0Vycm9yICopZXZl
bnRfaW5mbzsKKyAgICBjb25zdCBFd2tfRXJyb3IgKmVycm9yID0gKGNvbnN0IEV3a19FcnJvciAq
KWV2ZW50X2luZm87CiAKICAgICBidWZmZXIgPSBlaW5hX3N0cmJ1Zl9uZXcoKTsKICAgICBlaW5h
X3N0cmJ1Zl9hcHBlbmRfcHJpbnRmKGJ1ZmZlciwgIjxodG1sPjxib2R5PjxkaXYgc3R5bGU9XCJj
b2xvcjojZmYwMDAwXCI+RVJST1IhPC9kaXY+PGJyPjxkaXY+Q29kZTogJWQ8YnI+RGVzY3JpcHRp
b246ICVzPGJyPlVSTDogJXM8L2Rpdj48L2JvZHk8L2h0bWw+IiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGV3a193ZWJfZXJyb3JfY29kZV9nZXQoZXJyb3IpLCBld2tfd2ViX2Vycm9y
X2Rlc2NyaXB0aW9uX2dldChlcnJvciksIGV3a193ZWJfZXJyb3JfdXJsX2dldChlcnJvcikpOwor
ICAgICAgICBld2tfZXJyb3JfY29kZV9nZXQoZXJyb3IpLCBld2tfZXJyb3JfZGVzY3JpcHRpb25f
Z2V0KGVycm9yKSwgZXdrX2Vycm9yX3VybF9nZXQoZXJyb3IpKTsKIAotICAgIGV3a192aWV3X2h0
bWxfc3RyaW5nX2xvYWQod2VidmlldywgZWluYV9zdHJidWZfc3RyaW5nX2dldChidWZmZXIpLCAw
LCBld2tfd2ViX2Vycm9yX3VybF9nZXQoZXJyb3IpKTsKKyAgICBld2tfdmlld19odG1sX3N0cmlu
Z19sb2FkKHdlYnZpZXcsIGVpbmFfc3RyYnVmX3N0cmluZ19nZXQoYnVmZmVyKSwgMCwgZXdrX2Vy
cm9yX3VybF9nZXQoZXJyb3IpKTsKICAgICBlaW5hX3N0cmJ1Zl9mcmVlKGJ1ZmZlcik7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167304</attachid>
            <date>2012-10-05 04:05:17 -0700</date>
            <delta_ts>2012-10-05 04:32:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97886-20121005200425.patch</filename>
            <type>text/plain</type>
            <size>48629</size>
            <attacher name="Jongseok Yang">js45.yang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwNDkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMThmNTE4NjJmYTliNTVi
ZmM1MzNmNzc4YjBiODcyZjdiM2YyNjkwYS4uYjgxYzBjMmMzNjA4NThiOGEyYTExYTgzYzg0N2Zk
ZDE2YjFhODM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDEyLTEwLTA1ICBKb25n
c2VvayBZYW5nICA8anM0NS55YW5nQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdW1dLMl0g
UmVtb3ZlICJ3ZWIiIHdvcmQgZnJvbSBld2tfd2ViX2Vycm9yIEFQSXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3ODg2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlICJ3ZWIiIHdvcmQgZnJvbSBl
d2tfd2ViX2Vycm9yIEFQSXMuCisgICAgICAgICJ3ZWIiIHdvcmQgd2FzIHJlZHVuZGFudCBiZWNh
dXNlICJld2siIG1lYW5zICJFRkwgV2ViS2l0IiBhbmQgV0sgQVBJcyBmb3IgZXJyb3IgZG9lcyBu
b3QgaGF2ZSAid2ViIiB3b3JkLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfY29udGV4dF9kb3dubG9hZF9jbGllbnQuY3BwOgorICAgICAgICAoZGlkRmFp
bCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nvb2tpZV9tYW5hZ2VyLmNwcDoK
KyAgICAgICAgKGdldEFjY2VwdFBvbGljeUNhbGxiYWNrKToKKyAgICAgICAgKGdldEhvc3RuYW1l
c1dpdGhDb29raWVzQ2FsbGJhY2spOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19j
b29raWVfbWFuYWdlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19kb3dubG9h
ZF9qb2JfcHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19lcnJvci5j
cHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfd2Vi
X2Vycm9yLmNwcC4KKyAgICAgICAgKF9Fd2tfRXJyb3IpOgorICAgICAgICAoX0V3a19FcnJvcjo6
X0V3a19FcnJvcik6CisgICAgICAgIChfRXdrX0Vycm9yOjp+X0V3a19FcnJvcik6CisgICAgICAg
IChld2tfZXJyb3JfZnJlZSk6CisgICAgICAgIChld2tfZXJyb3JfdHlwZV9nZXQpOgorICAgICAg
ICAoZXdrX2Vycm9yX3VybF9nZXQpOgorICAgICAgICAoZXdrX2Vycm9yX2NvZGVfZ2V0KToKKyAg
ICAgICAgKGV3a19lcnJvcl9kZXNjcmlwdGlvbl9nZXQpOgorICAgICAgICAoZXdrX2Vycm9yX2Nh
bmNlbGxhdGlvbl9nZXQpOgorICAgICAgICAoZXdrX2Vycm9yX25ldyk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX2Vycm9yLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9ld2tfd2ViX2Vycm9yLmguCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX2Vycm9yX3ByaXZhdGUuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a193ZWJfZXJyb3JfcHJpdmF0ZS5oLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcDoKKyAgICAgICAgKGV3a192aWV3X3Jlc291cmNlX2xv
YWRfZmFpbGVkKToKKyAgICAgICAgKGV3a192aWV3X2Rvd25sb2FkX2pvYl9mYWlsZWQpOgorICAg
ICAgICAoZXdrX3ZpZXdfbG9hZF9lcnJvcik6CisgICAgICAgIChld2tfdmlld19sb2FkX3Byb3Zp
c2lvbmFsX2ZhaWxlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19sb2FkZXJfY2xpZW50LmNwcDoK
KyAgICAgICAgKGRpZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJhbWUpOgorICAgICAgICAoZGlkRmFp
bFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZvckZyYW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9jbGllbnQuY3BwOgorICAgICAgICAoZGlkRmFpbExvYWRG
b3JSZXNvdXJjZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2sy
X2Nvb2tpZV9tYW5hZ2VyLmNwcDoKKyAgICAgICAgKGdldEFjY2VwdFBvbGljeUNhbGxiYWNrKToK
KyAgICAgICAgKGdldEhvc3RuYW1lc1dpdGhDb29raWVzQ2FsbGJhY2spOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9kb3dubG9hZF9qb2IuY3BwOgorICAgICAg
ICAob25fZG93bmxvYWRfZmFpbGVkKToKKwogMjAxMi0xMC0wNSAgU3VkYXJzYW5hIE5hZ2luZW5p
ICA8c3VkYXJzYW5hLm5hZ2luZW5pQGludGVsLmNvbT4KIAogICAgICAgICBbV0syXVtHVEtdW0VG
TF0gc3RhbmRhcmRfb3V0cHV0IHJldHVybmVkIGJ5IGdfc3Bhd25fc3luYyBtdXN0IGJlIGZyZWVk
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IDRhOWZjODM0ZWVjYjA4YTI4NjgzZmY1YjQ3
YTk2YjdjZjk4MWNiMmQuLjFiYmYzZGI3NjhkODQ1MzlkZmEyNGI4ODgwYjBlOTkyZmY3OGM4MTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC01Myw2ICs1Myw3IEBAIExJU1QoQVBQRU5E
IFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X3JlcXVl
c3RfbWFuYWdlcl9jbGllbnQuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nvb2tpZV9t
YW5hZ2VyLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19kb3dubG9hZF9qb2IuY3BwCisg
ICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Vycm9yLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a19mb3JtX3N1Ym1pc3Npb25fcmVxdWVzdC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9l
d2tfaW50ZW50LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19pbnRlbnRfc2VydmljZS5j
cHAKQEAgLTcxLDcgKzcyLDYgQEAgTElTVChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcG9saWN5X2NsaWVudC5jcHAKICAgICBVSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfdmlld19yZXNvdXJjZV9sb2FkX2NsaWVudC5jcHAKICAgICBVSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfdmlld191aV9jbGllbnQuY3BwCi0gICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3dlYl9lcnJvci5jcHAKIAogICAgIFVJUHJvY2Vzcy9jYWlyby9CYWNraW5nU3RvcmVDYWlyby5j
cHAKIApAQCAtMjI4LDYgKzIyOCw3IEBAIFNFVCAoRVdlYktpdDJfSEVBREVSUwogICAgICIke0NN
QUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuaCIK
ICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19j
b29raWVfbWFuYWdlci5oIgogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2Rvd25sb2FkX2pvYi5oIgorICAgICIke0NNQUtFX0NVUlJFTlRfU09V
UkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Vycm9yLmgiCiAgICAgIiR7Q01BS0VfQ1VS
UkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfZm9ybV9zdWJtaXNzaW9uX3Jl
cXVlc3QuaCIKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19pbnRlbnQuaCIKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a19pbnRlbnRfc2VydmljZS5oIgpAQCAtMjQxLDcgKzI0Miw2IEBAIFNF
VCAoRVdlYktpdDJfSEVBREVSUwogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX3VybF9yZXNwb25zZS5oIgogICAgICIke0NNQUtFX0NVUlJFTlRf
U09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9zY2hlbWVfcmVxdWVzdC5oIgog
ICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Zp
ZXcuaCIKLSAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a193ZWJfZXJyb3IuaCIKICkKIAogSU5TVEFMTChGSUxFUyAke0NNQUtFX0JJTkFSWV9ESVJ9
L1dlYktpdDIvZWZsL2V3ZWJraXQyLnBjIERFU1RJTkFUSU9OIGxpYi9wa2djb25maWcpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaAppbmRleCA2M2YyOTU4MWRm
MjRlNzQ2NDBkYjBiZjE0YjJkZmU0ZjM5ZGU1ZDVmLi4wODUwOTRjNjkyZjVjMjc4YzMyZjgzODFl
YmFjMGZkNTIxMTFhMjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9FV2ViS2l0Mi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VX
ZWJLaXQyLmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJld2tfY29udGV4dC5oIgogI2lu
Y2x1ZGUgImV3a19jb29raWVfbWFuYWdlci5oIgogI2luY2x1ZGUgImV3a19kb3dubG9hZF9qb2Iu
aCIKKyNpbmNsdWRlICJld2tfZXJyb3IuaCIKICNpbmNsdWRlICJld2tfZm9ybV9zdWJtaXNzaW9u
X3JlcXVlc3QuaCIKICNpbmNsdWRlICJld2tfaW50ZW50LmgiCiAjaW5jbHVkZSAiZXdrX2ludGVu
dF9zZXJ2aWNlLmgiCkBAIC00Niw2ICs0Nyw1IEBACiAjaW5jbHVkZSAiZXdrX3VybF9yZXNwb25z
ZS5oIgogI2luY2x1ZGUgImV3a191cmxfc2NoZW1lX3JlcXVlc3QuaCIKICNpbmNsdWRlICJld2tf
dmlldy5oIgotI2luY2x1ZGUgImV3a193ZWJfZXJyb3IuaCIKIAogI2VuZGlmIC8vIEVXZWJLaXQy
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250
ZXh0X2Rvd25sb2FkX2NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfY29udGV4dF9kb3dubG9hZF9jbGllbnQuY3BwCmluZGV4IDQyZGJjNWMwZDMxZDQyNzc1
NTczZjE5NGM5ZGQwMWQ2YjE5YTgxNmQuLjZlNDNkYzFmNjVjODZiYmM4YTljYTFkNjBhMzM1YmNi
ZGE0MjU5MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a19jb250ZXh0X2Rvd25sb2FkX2NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfZG93bmxvYWRfY2xpZW50LmNwcApAQCAtMzMsMTAgKzMz
LDEwIEBACiAjaW5jbHVkZSAiZXdrX2NvbnRleHRfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19k
b3dubG9hZF9qb2IuaCIKICNpbmNsdWRlICJld2tfZG93bmxvYWRfam9iX3ByaXZhdGUuaCIKKyNp
bmNsdWRlICJld2tfZXJyb3JfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a191cmxfcmVzcG9uc2Uu
aCIKICNpbmNsdWRlICJld2tfdXJsX3Jlc3BvbnNlX3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tf
dmlld19wcml2YXRlLmgiCi0jaW5jbHVkZSAiZXdrX3dlYl9lcnJvcl9wcml2YXRlLmgiCiAjaW5j
bHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCkBAIC05NCwx
MCArOTQsMTAgQEAgc3RhdGljIHZvaWQgZGlkRmFpbChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRS
ZWYgd2tEb3dubG9hZCwgV0tFcnJvclJlZiBlcnJvciwgY28KICAgICBFd2tfRG93bmxvYWRfSm9i
KiBkb3dubG9hZCA9IGV3a19jb250ZXh0X2Rvd25sb2FkX2pvYl9nZXQodG9Fd2tDb250ZXh0KGNs
aWVudEluZm8pLCBkb3dubG9hZElkKTsKICAgICBBU1NFUlQoZG93bmxvYWQpOwogCi0gICAgRXdr
X1dlYl9FcnJvciogZXdrRXJyb3IgPSBld2tfd2ViX2Vycm9yX25ldyhlcnJvcik7CisgICAgRXdr
X0Vycm9yKiBld2tFcnJvciA9IGV3a19lcnJvcl9uZXcoZXJyb3IpOwogICAgIGV3a19kb3dubG9h
ZF9qb2Jfc3RhdGVfc2V0KGRvd25sb2FkLCBFV0tfRE9XTkxPQURfSk9CX1NUQVRFX0ZBSUxFRCk7
CiAgICAgZXdrX3ZpZXdfZG93bmxvYWRfam9iX2ZhaWxlZChld2tfZG93bmxvYWRfam9iX3ZpZXdf
Z2V0KGRvd25sb2FkKSwgZG93bmxvYWQsIGV3a0Vycm9yKTsKLSAgICBld2tfd2ViX2Vycm9yX2Zy
ZWUoZXdrRXJyb3IpOworICAgIGV3a19lcnJvcl9mcmVlKGV3a0Vycm9yKTsKICAgICBld2tfY29u
dGV4dF9kb3dubG9hZF9qb2JfcmVtb3ZlKHRvRXdrQ29udGV4dChjbGllbnRJbmZvKSwgZG93bmxv
YWRJZCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a19jb29raWVfbWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfY29va2llX21hbmFnZXIuY3BwCmluZGV4IDQ1ZGQ3NWU2MzJkYmE1ZDQ3ZGQ5NjliMzM5
Y2U3NzA0MzY1NmY5ZGEuLmE1MjA0NzMzNjQxNDlhNzk3ZGEyMDNmNTVmMzQzMmU2ZDMyNmE2MGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb29raWVf
bWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nv
b2tpZV9tYW5hZ2VyLmNwcApAQCAtMzMsOCArMzMsOCBAQAogI2luY2x1ZGUgIldLUmV0YWluUHRy
LmgiCiAjaW5jbHVkZSAiV0tTdHJpbmcuaCIKICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyUHJv
eHkuaCIKKyNpbmNsdWRlICJld2tfZXJyb3JfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19wcml2
YXRlLmgiCi0jaW5jbHVkZSAiZXdrX3dlYl9lcnJvcl9wcml2YXRlLmgiCiAjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC0x
NDIsMTIgKzE0MiwxMiBAQCBzdHJ1Y3QgR2V0X1BvbGljeV9Bc3luY19EYXRhIHsKIHN0YXRpYyB2
b2lkIGdldEFjY2VwdFBvbGljeUNhbGxiYWNrKFdLSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xp
Y3ksIFdLRXJyb3JSZWYgd2tFcnJvciwgdm9pZCogZGF0YSkKIHsKICAgICBHZXRfUG9saWN5X0Fz
eW5jX0RhdGEqIGNhbGxiYWNrRGF0YSA9IHN0YXRpY19jYXN0PEdldF9Qb2xpY3lfQXN5bmNfRGF0
YSo+KGRhdGEpOwotICAgIEV3a19XZWJfRXJyb3IqIGV3a0Vycm9yID0gd2tFcnJvciA/IGV3a193
ZWJfZXJyb3JfbmV3KHdrRXJyb3IpIDogMDsKKyAgICBFd2tfRXJyb3IqIGV3a0Vycm9yID0gd2tF
cnJvciA/IGV3a19lcnJvcl9uZXcod2tFcnJvcikgOiAwOwogCiAgICAgY2FsbGJhY2tEYXRhLT5j
YWxsYmFjayhzdGF0aWNfY2FzdDxFd2tfQ29va2llX0FjY2VwdF9Qb2xpY3k+KHBvbGljeSksIGV3
a0Vycm9yLCBjYWxsYmFja0RhdGEtPnVzZXJEYXRhKTsKIAogICAgIGlmIChld2tFcnJvcikKLSAg
ICAgICAgZXdrX3dlYl9lcnJvcl9mcmVlKGV3a0Vycm9yKTsKKyAgICAgICAgZXdrX2Vycm9yX2Zy
ZWUoZXdrRXJyb3IpOwogICAgIGRlbGV0ZSBjYWxsYmFja0RhdGE7CiB9CiAKQEAgLTE3Miw3ICsx
NzIsNyBAQCBzdGF0aWMgdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llc0NhbGxiYWNrKFdLQXJy
YXlSZWYgd2tIb3N0bmFtZXMsIFdLRXJyb3JSZWYgdwogewogICAgIEVpbmFfTGlzdCogaG9zdG5h
bWVzID0gMDsKICAgICBHZXRfSG9zdG5hbWVzX0FzeW5jX0RhdGEqIGNhbGxiYWNrRGF0YSA9IHN0
YXRpY19jYXN0PEdldF9Ib3N0bmFtZXNfQXN5bmNfRGF0YSo+KGNvbnRleHQpOwotICAgIEV3a19X
ZWJfRXJyb3IqIGV3a0Vycm9yID0gd2tFcnJvciA/IGV3a193ZWJfZXJyb3JfbmV3KHdrRXJyb3Ip
IDogMDsKKyAgICBFd2tfRXJyb3IqIGV3a0Vycm9yID0gd2tFcnJvciA/IGV3a19lcnJvcl9uZXco
d2tFcnJvcikgOiAwOwogCiAgICAgY29uc3Qgc2l6ZV90IGhvc3RuYW1lQ291bnQgPSBXS0FycmF5
R2V0U2l6ZSh3a0hvc3RuYW1lcyk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBob3N0bmFt
ZUNvdW50OyArK2kpIHsKQEAgLTE4OSw3ICsxODksNyBAQCBzdGF0aWMgdm9pZCBnZXRIb3N0bmFt
ZXNXaXRoQ29va2llc0NhbGxiYWNrKFdLQXJyYXlSZWYgd2tIb3N0bmFtZXMsIFdLRXJyb3JSZWYg
dwogICAgIEVJTkFfTElTVF9GUkVFKGhvc3RuYW1lcywgaXRlbSkKICAgICAgIGVpbmFfc3RyaW5n
c2hhcmVfZGVsKHN0YXRpY19jYXN0PEVpbmFfU3RyaW5nc2hhcmUqPihpdGVtKSk7CiAgICAgaWYg
KGV3a0Vycm9yKQotICAgICAgICBld2tfd2ViX2Vycm9yX2ZyZWUoZXdrRXJyb3IpOworICAgICAg
ICBld2tfZXJyb3JfZnJlZShld2tFcnJvcik7CiAgICAgZGVsZXRlIGNhbGxiYWNrRGF0YTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nvb2tp
ZV9tYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29va2ll
X21hbmFnZXIuaAppbmRleCBlMzc3ODA4NjQ5MjlkOTA2NWE3ZWEwYjUyMDRmNTdkYjQxZGY3MDAw
Li5jMzFiOTAwMTg0MjA4NmRiZjJlNzMzODQ0MWMwM2IxYmYxMWZjMjI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29va2llX21hbmFnZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29va2llX21hbmFnZXIuaApA
QCAtMzEsNyArMzEsNyBAQAogI2lmbmRlZiBld2tfY29va2llX21hbmFnZXJfaAogI2RlZmluZSBl
d2tfY29va2llX21hbmFnZXJfaAogCi0jaW5jbHVkZSAiZXdrX3dlYl9lcnJvci5oIgorI2luY2x1
ZGUgImV3a19lcnJvci5oIgogI2luY2x1ZGUgPEVpbmEuaD4KIAogI2lmZGVmIF9fY3BsdXNwbHVz
CkBAIC03Nyw3ICs3Nyw3IEBAIHR5cGVkZWYgZW51bSBfRXdrX0Nvb2tpZV9QZXJzaXN0ZW50X1N0
b3JhZ2UgRXdrX0Nvb2tpZV9QZXJzaXN0ZW50X1N0b3JhZ2U7CiAgKiBAdHlwZWRlZiBFd2tfQ29v
a2llX01hbmFnZXJfQXN5bmNfUG9saWN5X0dldF9DYiBFd2tfQ29va2llX01hbmFnZXJfQXN5bmNf
UG9saWN5X0dldF9DYgogICogQGJyaWVmIENhbGxiYWNrIHR5cGUgZm9yIHVzZSB3aXRoIGV3a19j
b29raWVfbWFuYWdlcl9hc3luY19hY2NlcHRfcG9saWN5X2dldAogICovCi10eXBlZGVmIHZvaWQg
KCpFd2tfQ29va2llX01hbmFnZXJfQXN5bmNfUG9saWN5X0dldF9DYikoRXdrX0Nvb2tpZV9BY2Nl
cHRfUG9saWN5IHBvbGljeSwgRXdrX1dlYl9FcnJvciAqZXJyb3IsIHZvaWQgKmV2ZW50X2luZm8p
OwordHlwZWRlZiB2b2lkICgqRXdrX0Nvb2tpZV9NYW5hZ2VyX0FzeW5jX1BvbGljeV9HZXRfQ2Ip
KEV3a19Db29raWVfQWNjZXB0X1BvbGljeSBwb2xpY3ksIEV3a19FcnJvciAqZXJyb3IsIHZvaWQg
KmV2ZW50X2luZm8pOwogCiAvKioKICAqIEB0eXBlZGVmIEV3a19Db29raWVfTWFuYWdlcl9Bc3lu
Y19Ib3N0bmFtZXNfR2V0X0NiIEV3a19Db29raWVfTWFuYWdlcl9Bc3luY19Ib3N0bmFtZXNfR2V0
X0NiCkBAIC04Nyw3ICs4Nyw3IEBAIHR5cGVkZWYgdm9pZCAoKkV3a19Db29raWVfTWFuYWdlcl9B
c3luY19Qb2xpY3lfR2V0X0NiKShFd2tfQ29va2llX0FjY2VwdF9Qb2xpY3kKICAqIHNhdmUgeW91
cnNlbGYgc29tZSBjcHUgY3ljbGVzIGFuZCB1c2UgZWluYV9zdHJpbmdzaGFyZV9yZWYoKSBpbnN0
ZWFkIG9mIGVpbmFfc3RyaW5nc2hhcmVfYWRkKCkKICAqIG9yIHN0cmR1cCgpLgogICovCi10eXBl
ZGVmIHZvaWQgKCpFd2tfQ29va2llX01hbmFnZXJfQXN5bmNfSG9zdG5hbWVzX0dldF9DYikoRWlu
YV9MaXN0KiBob3N0bmFtZXMsIEV3a19XZWJfRXJyb3IgKmVycm9yLCB2b2lkICpldmVudF9pbmZv
KTsKK3R5cGVkZWYgdm9pZCAoKkV3a19Db29raWVfTWFuYWdlcl9Bc3luY19Ib3N0bmFtZXNfR2V0
X0NiKShFaW5hX0xpc3QgKmhvc3RuYW1lcywgRXdrX0Vycm9yICplcnJvciwgdm9pZCAqZXZlbnRf
aW5mbyk7CiAKIC8qKgogICogQHR5cGVkZWYgRXdrX0Nvb2tpZV9NYW5hZ2VyX0NoYW5nZXNfV2F0
Y2hfQ2IgRXdrX0Nvb2tpZV9NYW5hZ2VyX0NoYW5nZXNfV2F0Y2hfQ2IKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19kb3dubG9hZF9qb2JfcHJpdmF0ZS5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Rvd25sb2FkX2pvYl9wcml2
YXRlLmgKaW5kZXggZDA0MzQ5NGMzYmE1NWMyZDM5MTY4MTJkZjJkYmYzYTg1ZTk4ZTU1My4uODFi
NTQ0YmZlYTMyZmVmOTBhMGZjM2ViOTk5YjcyZWYyMGExNGVmOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Rvd25sb2FkX2pvYl9wcml2YXRlLmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Rvd25sb2FkX2pvYl9wcml2
YXRlLmgKQEAgLTMxLDcgKzMxLDcgQEAKIAogdHlwZWRlZiBzdHJ1Y3QgX0V3a19Eb3dubG9hZF9K
b2IgRXdrX0Rvd25sb2FkX0pvYjsKIHR5cGVkZWYgc3RydWN0IF9Fd2tfVXJsX1Jlc3BvbnNlIEV3
a19VcmxfUmVzcG9uc2U7Ci10eXBlZGVmIHN0cnVjdCBfRXdrX1dlYl9FcnJvciBFd2tfV2ViX0Vy
cm9yOwordHlwZWRlZiBzdHJ1Y3QgX0V3a19FcnJvciBFd2tfRXJyb3I7CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogY2xhc3MgRG93bmxvYWRQcm94eTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19lcnJvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfZXJyb3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE3ZDU3NmQwYTU2YWNhMDg4N2Ni
MTQ0OTYwMzNkYTg0YTU1YzkzZDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9ld2tfZXJyb3IuY3BwCkBAIC0wLDAgKzEsMTM0IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiZXdrX2Vycm9yLmgi
CisKKyNpbmNsdWRlICJFcnJvcnNFZmwuaCIKKyNpbmNsdWRlICJXS0VpbmFTaGFyZWRTdHJpbmcu
aCIKKyNpbmNsdWRlICJXS1N0cmluZy5oIgorI2luY2x1ZGUgIldLVVJMLmgiCisjaW5jbHVkZSAi
ZXdrX2Vycm9yX3ByaXZhdGUuaCIKKyNpbmNsdWRlIDxXS0FQSUNhc3QuaD4KKyNpbmNsdWRlIDxX
S0Vycm9yLmg+CisjaW5jbHVkZSA8V0tSZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcgbmFtZXNwYWNlIFdl
YktpdDsKKworc3RydWN0IF9Fd2tfRXJyb3IgeworICAgIFdLUmV0YWluUHRyPFdLRXJyb3JSZWY+
IHdrRXJyb3I7CisKKyAgICBXS0VpbmFTaGFyZWRTdHJpbmcgdXJsOworICAgIFdLRWluYVNoYXJl
ZFN0cmluZyBkZXNjcmlwdGlvbjsKKworICAgIF9Fd2tfRXJyb3IoV0tFcnJvclJlZiBlcnJvclJl
ZikKKyAgICAgICAgOiB3a0Vycm9yKGVycm9yUmVmKQorICAgICAgICAsIHVybChBZG9wdFdLLCBX
S0Vycm9yQ29weUZhaWxpbmdVUkwoZXJyb3JSZWYpKQorICAgICAgICAsIGRlc2NyaXB0aW9uKEFk
b3B0V0ssIFdLRXJyb3JDb3B5TG9jYWxpemVkRGVzY3JpcHRpb24oZXJyb3JSZWYpKQorICAgIHsg
fQorCisgICAgfl9Fd2tfRXJyb3IoKQorICAgIHsKKyAgICB9Cit9OworCisjZGVmaW5lIEVXS19F
UlJPUl9XS19HRVRfT1JfUkVUVVJOKGVycm9yLCB3a0Vycm9yXywgLi4uKSAgICBcCisgICAgaWYg
KCEoZXJyb3IpKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgRUlOQV9MT0dfQ1JJVCgiZXJyb3IgaXMgTlVMTC4iKTsgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICByZXR1cm4gX19WQV9BUkdTX187ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICghKGVycm9yKS0+d2tFcnJvcikgeyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgRUlOQV9MT0dfQ1JJVCgi
ZXJyb3ItPndrRXJyb3IgaXMgTlVMTC4iKTsgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBf
X1ZBX0FSR1NfXzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgV0tFcnJvclJlZiB3a0Vycm9yXyA9IChlcnJvciktPndrRXJyb3IuZ2V0KCkKKworLyoq
CisgKiBAaW50ZXJuYWwKKyAqIEZyZWVzIHRoZSBnaXZlbiBvYmplY3QuCisgKi8KK3ZvaWQgZXdr
X2Vycm9yX2ZyZWUoRXdrX0Vycm9yKiBlcnJvcikKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxM
X1JFVFVSTihlcnJvcik7CisKKyAgICBkZWxldGUgZXJyb3I7Cit9CisKK0V3a19FcnJvcl9UeXBl
IGV3a19lcnJvcl90eXBlX2dldChjb25zdCBFd2tfRXJyb3IqIGVycm9yKQoreworICAgIEVXS19F
UlJPUl9XS19HRVRfT1JfUkVUVVJOKGVycm9yLCB3a0Vycm9yLCBFV0tfRVJST1JfVFlQRV9OT05F
KTsKKworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB3a0RvbWFpbihBZG9wdFdLLCBXS0Vy
cm9yQ29weURvbWFpbih3a0Vycm9yKSk7CisgICAgV1RGOjpTdHJpbmcgZXJyb3JEb21haW4gPSB0
b1dURlN0cmluZyh3a0RvbWFpbi5nZXQoKSk7CisKKyAgICBpZiAoZXJyb3JEb21haW4gPT0gZXJy
b3JEb21haW5OZXR3b3JrKQorICAgICAgICByZXR1cm4gRVdLX0VSUk9SX1RZUEVfTkVUV09SSzsK
KyAgICBpZiAoZXJyb3JEb21haW4gPT0gZXJyb3JEb21haW5Qb2xpY3kpCisgICAgICAgIHJldHVy
biBFV0tfRVJST1JfVFlQRV9QT0xJQ1k7CisgICAgaWYgKGVycm9yRG9tYWluID09IGVycm9yRG9t
YWluUGx1Z2luKQorICAgICAgICByZXR1cm4gRVdLX0VSUk9SX1RZUEVfUExVR0lOOworICAgIGlm
IChlcnJvckRvbWFpbiA9PSBlcnJvckRvbWFpbkRvd25sb2FkKQorICAgICAgICByZXR1cm4gRVdL
X0VSUk9SX1RZUEVfRE9XTkxPQUQ7CisgICAgaWYgKGVycm9yRG9tYWluID09IGVycm9yRG9tYWlu
UHJpbnQpCisgICAgICAgIHJldHVybiBFV0tfRVJST1JfVFlQRV9QUklOVDsKKyAgICByZXR1cm4g
RVdLX0VSUk9SX1RZUEVfSU5URVJOQUw7Cit9CisKK2NvbnN0IGNoYXIqIGV3a19lcnJvcl91cmxf
Z2V0KGNvbnN0IEV3a19FcnJvciogZXJyb3IpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk5fVkFMKGVycm9yLCAwKTsKKworICAgIHJldHVybiBlcnJvci0+dXJsOworfQorCitpbnQg
ZXdrX2Vycm9yX2NvZGVfZ2V0KGNvbnN0IEV3a19FcnJvciogZXJyb3IpCit7CisgICAgRVdLX0VS
Uk9SX1dLX0dFVF9PUl9SRVRVUk4oZXJyb3IsIHdrRXJyb3IsIDApOworCisgICAgcmV0dXJuIFdL
RXJyb3JHZXRFcnJvckNvZGUod2tFcnJvcik7Cit9CisKK2NvbnN0IGNoYXIqIGV3a19lcnJvcl9k
ZXNjcmlwdGlvbl9nZXQoY29uc3QgRXdrX0Vycm9yKiBlcnJvcikKK3sKKyAgICBFSU5BX1NBRkVU
WV9PTl9OVUxMX1JFVFVSTl9WQUwoZXJyb3IsIDApOworCisgICAgcmV0dXJuIGVycm9yLT5kZXNj
cmlwdGlvbjsKK30KKworRWluYV9Cb29sIGV3a19lcnJvcl9jYW5jZWxsYXRpb25fZ2V0KGNvbnN0
IEV3a19FcnJvciogZXJyb3IpCit7CisgICAgRVdLX0VSUk9SX1dLX0dFVF9PUl9SRVRVUk4oZXJy
b3IsIHdrRXJyb3IsIGZhbHNlKTsKKworICAgIHJldHVybiB0b0ltcGwod2tFcnJvciktPnBsYXRm
b3JtRXJyb3IoKS5pc0NhbmNlbGxhdGlvbigpOworfQorCitFd2tfRXJyb3IqIGV3a19lcnJvcl9u
ZXcoV0tFcnJvclJlZiBlcnJvcikKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9W
QUwoZXJyb3IsIDApOworCisgICAgcmV0dXJuIG5ldyBFd2tfRXJyb3IoZXJyb3IpOworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Vycm9yLmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfZXJyb3IuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
MTIxNGQxMjEyZmIyNWQ2YmIwNjNlMmFhYThjZGRiNDIyY2Y2YjllCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Vycm9yLmgKQEAgLTAsMCAr
MSwxMTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8qKgorICogQGZpbGUgICAgZXdrX2Vycm9y
LmgKKyAqIEBicmllZiAgIERlc2NyaWJlcyB0aGUgV2ViIEVycm9yIEFQSS4KKyAqLworCisjaWZu
ZGVmIGV3a19lcnJvcl9oCisjZGVmaW5lIGV3a19lcnJvcl9oCisKKyNpbmNsdWRlIDxFaW5hLmg+
CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLyoqIENyZWF0
ZXMgYSB0eXBlIG5hbWUgZm9yIEBhIEV3a19FcnJvci4gKi8KK3R5cGVkZWYgc3RydWN0IF9Fd2tf
RXJyb3IgRXdrX0Vycm9yOworCisvLy8gQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgRXdrX0Vycm9y
X1R5cGUuCit0eXBlZGVmIGVudW0geworICAgIEVXS19FUlJPUl9UWVBFX05PTkUsCisgICAgRVdL
X0VSUk9SX1RZUEVfSU5URVJOQUwsCisgICAgRVdLX0VSUk9SX1RZUEVfTkVUV09SSywKKyAgICBF
V0tfRVJST1JfVFlQRV9QT0xJQ1ksCisgICAgRVdLX0VSUk9SX1RZUEVfUExVR0lOLAorICAgIEVX
S19FUlJPUl9UWVBFX0RPV05MT0FELAorICAgIEVXS19FUlJPUl9UWVBFX1BSSU5UCit9IEV3a19F
cnJvcl9UeXBlOworCisvKioKKyAqIFF1ZXJ5IHR5cGUgZm9yIHRoaXMgZXJyb3IuCisgKgorICog
QHBhcmFtIGVycm9yIGVycm9yIG9iamVjdCB0byBxdWVyeS4KKyAqCisgKiBAcmV0dXJuIHRoZSBl
cnJvciB0eXBlLCB0aGF0IG1heSBiZSBAYyBOVUxMLiBUaGlzIHBvaW50ZXIgaXMKKyAqICAgICAg
ICAgZ3VhcmFudGVlZCB0byBiZSBlaW5hX3N0cmluZ3NoYXJlLCBzbyB3aGVuZXZlciBwb3NzaWJs
ZQorICogICAgICAgICBzYXZlIHlvdXJzZWxmIHNvbWUgY3B1IGN5Y2xlcyBhbmQgdXNlCisgKiAg
ICAgICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVmKCkgaW5zdGVhZCBvZiBlaW5hX3N0cmluZ3NoYXJl
X2FkZCgpIG9yCisgKiAgICAgICAgIHN0cmR1cCgpLgorICovCitFQVBJIEV3a19FcnJvcl9UeXBl
IGV3a19lcnJvcl90eXBlX2dldChjb25zdCBFd2tfRXJyb3IgKmVycm9yKTsKKworLyoqCisgKiBR
dWVyeSBmYWlsaW5nIFVSTCBmb3IgdGhpcyBlcnJvci4KKyAqCisgKiBVUkwgdGhhdCBmYWlsZWQg
bG9hZGluZy4KKyAqCisgKiBAcGFyYW0gZXJyb3IgZXJyb3Igb2JqZWN0IHRvIHF1ZXJ5LgorICoK
KyAqIEByZXR1cm4gdGhlIFVSTCBwb2ludGVyLCB0aGF0IG1heSBiZSBAYyBOVUxMLiBUaGlzIHBv
aW50ZXIgaXMKKyAqICAgICAgICAgZ3VhcmFudGVlZCB0byBiZSBlaW5hX3N0cmluZ3NoYXJlLCBz
byB3aGVuZXZlciBwb3NzaWJsZQorICogICAgICAgICBzYXZlIHlvdXJzZWxmIHNvbWUgY3B1IGN5
Y2xlcyBhbmQgdXNlCisgKiAgICAgICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVmKCkgaW5zdGVhZCBv
ZiBlaW5hX3N0cmluZ3NoYXJlX2FkZCgpIG9yCisgKiAgICAgICAgIHN0cmR1cCgpLgorICovCitF
QVBJIGNvbnN0IGNoYXIgKmV3a19lcnJvcl91cmxfZ2V0KGNvbnN0IEV3a19FcnJvciAqZXJyb3Ip
OworCisvKioKKyAqIFF1ZXJ5IEhUVFAgZXJyb3IgY29kZS4KKyAqCisgKiBAcGFyYW0gZXJyb3Ig
ZXJyb3Igb2JqZWN0IHRvIHF1ZXJ5LgorICoKKyAqIEByZXR1cm4gdGhlIEhUVFAgZXJyb3IgY29k
ZS4KKyAqLworRUFQSSBpbnQgZXdrX2Vycm9yX2NvZGVfZ2V0KGNvbnN0IEV3a19FcnJvciAqZXJy
b3IpOworCisvKioKKyAqIFF1ZXJ5IGRlc2NyaXB0aW9uIGZvciB0aGlzIGVycm9yLgorICoKKyAq
IEBwYXJhbSBlcnJvciBlcnJvciBvYmplY3QgdG8gcXVlcnkuCisgKgorICogQHJldHVybiB0aGUg
ZGVzY3JpcHRpb24gcG9pbnRlciwgdGhhdCBtYXkgYmUgQGMgTlVMTC4gVGhpcyBwb2ludGVyIGlz
CisgKiAgICAgICAgIGd1YXJhbnRlZWQgdG8gYmUgZWluYV9zdHJpbmdzaGFyZSwgc28gd2hlbmV2
ZXIgcG9zc2libGUKKyAqICAgICAgICAgc2F2ZSB5b3Vyc2VsZiBzb21lIGNwdSBjeWNsZXMgYW5k
IHVzZQorICogICAgICAgICBlaW5hX3N0cmluZ3NoYXJlX3JlZigpIGluc3RlYWQgb2YgZWluYV9z
dHJpbmdzaGFyZV9hZGQoKSBvcgorICogICAgICAgICBzdHJkdXAoKS4KKyAqLworRUFQSSBjb25z
dCBjaGFyICpld2tfZXJyb3JfZGVzY3JpcHRpb25fZ2V0KGNvbnN0IEV3a19FcnJvciAqZXJyb3Ip
OworCisvKioKKyAqIFF1ZXJ5IGlmIGVycm9yIHNob3VsZCBiZSB0cmVhdGVkIGFzIGEgY2FuY2Vs
bGF0aW9uLgorICoKKyAqIEBwYXJhbSBlcnJvciBlcnJvciBvYmplY3QgdG8gcXVlcnkuCisgKgor
ICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgdGhpcyBlcnJvciBzaG91bGQgYmUgdHJlYXRlZCBh
cyBhIGNhbmNlbGxhdGlvbiwgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKKyAqLworRUFQSSBFaW5h
X0Jvb2wgZXdrX2Vycm9yX2NhbmNlbGxhdGlvbl9nZXQoY29uc3QgRXdrX0Vycm9yICplcnJvcik7
CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvLyBld2tfZXJyb3Jf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Vycm9y
X3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19lcnJvcl9w
cml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMmYwMTk4OGMyNGEzYTc5NTdiZDgxNGI2ODkzZjBkMDFiYWQw
NTkyOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a19lcnJvcl9wcml2YXRlLmgKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBld2tfZXJyb3JfcHJpdmF0ZV9oCisjZGVmaW5lIGV3a19lcnJvcl9wcml2YXRl
X2gKKworI2luY2x1ZGUgPFdLRXJyb3IuaD4KKwordHlwZWRlZiBzdHJ1Y3QgX0V3a19FcnJvciBF
d2tfRXJyb3I7CisKK0V3a19FcnJvciogZXdrX2Vycm9yX25ldyhXS0Vycm9yUmVmIGVycm9yKTsK
K3ZvaWQgZXdrX2Vycm9yX2ZyZWUoRXdrX0Vycm9yKiBlcnJvcik7CisKKyNlbmRpZiAvLyBld2tf
ZXJyb3JfcHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
dmlldy5jcHAKaW5kZXggNmVhMTJlMjEwNjM1ODNkMzhjZWEzZjhiOGU5Mjg3ZmRiZmViOGE4MC4u
MDkzNjIxMDI4YjdhYTg2YjE0M2Y0YzdhOTJlOTJkMjhkODE4NGEzOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcApAQCAtOTg0LDcgKzk4NCw3IEBA
IHZvaWQgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9yZXNwb25zZShFdmFzX09iamVjdCogZXdrVmll
dywgdWludDY0X3QgcmVzb3VyY2VJZGVuCiAgKgogICogRW1pdHMgc2lnbmFsOiAicmVzb3VyY2Us
cmVxdWVzdCxmaW5pc2hlZCIgd2l0aCBwb2ludGVyIHRvIHRoZSByZXNvdXJjZSBsb2FkIGVycm9y
LgogICovCi12b2lkIGV3a192aWV3X3Jlc291cmNlX2xvYWRfZmFpbGVkKEV2YXNfT2JqZWN0KiBl
d2tWaWV3LCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIsIEV3a19XZWJfRXJyb3IqIGVycm9y
KQordm9pZCBld2tfdmlld19yZXNvdXJjZV9sb2FkX2ZhaWxlZChFdmFzX09iamVjdCogZXdrVmll
dywgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBFd2tfRXJyb3IqIGVycm9yKQogewogICAg
IEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsKICAgICBFV0tf
VklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2KTsKQEAgLTEyOTksNyArMTI5
OSw3IEBAIHZvaWQgZXdrX3ZpZXdfZG93bmxvYWRfam9iX3JlcXVlc3RlZChFdmFzX09iamVjdCog
ZXdrVmlldywgRXdrX0Rvd25sb2FkX0pvYiogZG93CiAgKgogICogRW1pdHMgc2lnbmFsOiAiZG93
bmxvYWQsZmFpbGVkIiB3aXRoIHBvaW50ZXIgdG8gYSBFd2tfRG93bmxvYWRfSm9iX0Vycm9yLgog
ICovCi12b2lkIGV3a192aWV3X2Rvd25sb2FkX2pvYl9mYWlsZWQoRXZhc19PYmplY3QqIGV3a1Zp
ZXcsIEV3a19Eb3dubG9hZF9Kb2IqIGRvd25sb2FkLCBFd2tfV2ViX0Vycm9yKiBlcnJvcikKK3Zv
aWQgZXdrX3ZpZXdfZG93bmxvYWRfam9iX2ZhaWxlZChFdmFzX09iamVjdCogZXdrVmlldywgRXdr
X0Rvd25sb2FkX0pvYiogZG93bmxvYWQsIEV3a19FcnJvciogZXJyb3IpCiB7CiAgICAgRXdrX0Rv
d25sb2FkX0pvYl9FcnJvciBkb3dubG9hZEVycm9yID0geyBkb3dubG9hZCwgZXJyb3IgfTsKICAg
ICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a1ZpZXcsICJkb3dubG9hZCxmYWls
ZWQiLCAmZG93bmxvYWRFcnJvcik7CkBAIC0xNDEwLDExICsxNDEwLDExIEBAIHZvaWQgZXdrX3Zp
ZXdfZm9ybV9zdWJtaXNzaW9uX3JlcXVlc3RfbmV3KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tf
Rm9ybV9TdWJtaXNzCiAgKiBAaW50ZXJuYWwKICAqIFJlcG9ydHMgbG9hZCBmYWlsZWQgd2l0aCBl
cnJvciBpbmZvcm1hdGlvbi4KICAqCi0gKiBFbWl0cyBzaWduYWw6ICJsb2FkLGVycm9yIiB3aXRo
IHBvaW50ZXIgdG8gRXdrX1dlYl9FcnJvci4KKyAqIEVtaXRzIHNpZ25hbDogImxvYWQsZXJyb3Ii
IHdpdGggcG9pbnRlciB0byBFd2tfRXJyb3IuCiAgKi8KLXZvaWQgZXdrX3ZpZXdfbG9hZF9lcnJv
cihFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgRXdrX1dlYl9FcnJvciogZXJyb3IpCit2b2lk
IGV3a192aWV3X2xvYWRfZXJyb3IoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IEV3a19FcnJv
ciogZXJyb3IpCiB7Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tWaWV3
LCAibG9hZCxlcnJvciIsIGNvbnN0X2Nhc3Q8RXdrX1dlYl9FcnJvcio+KGVycm9yKSk7CisgICAg
ZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tWaWV3LCAibG9hZCxlcnJvciIsIGNv
bnN0X2Nhc3Q8RXdrX0Vycm9yKj4oZXJyb3IpKTsKIH0KIAogLyoqCkBAIC0xNDMzLDExICsxNDMz
LDExIEBAIHZvaWQgZXdrX3ZpZXdfbG9hZF9maW5pc2hlZChFdmFzX09iamVjdCogZXdrVmlldykK
ICAqIEBpbnRlcm5hbAogICogUmVwb3J0cyB2aWV3IHByb3Zpc2lvbmFsIGxvYWQgZmFpbGVkIHdp
dGggZXJyb3IgaW5mb3JtYXRpb24uCiAgKgotICogRW1pdHMgc2lnbmFsOiAibG9hZCxwcm92aXNp
b25hbCxmYWlsZWQiIHdpdGggcG9pbnRlciB0byBFd2tfV2ViX0Vycm9yLgorICogRW1pdHMgc2ln
bmFsOiAibG9hZCxwcm92aXNpb25hbCxmYWlsZWQiIHdpdGggcG9pbnRlciB0byBFd2tfRXJyb3Iu
CiAgKi8KLXZvaWQgZXdrX3ZpZXdfbG9hZF9wcm92aXNpb25hbF9mYWlsZWQoRXZhc19PYmplY3Qq
IGV3a1ZpZXcsIGNvbnN0IEV3a19XZWJfRXJyb3IqIGVycm9yKQordm9pZCBld2tfdmlld19sb2Fk
X3Byb3Zpc2lvbmFsX2ZhaWxlZChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgRXdrX0Vycm9y
KiBlcnJvcikKIHsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a1ZpZXcs
ICJsb2FkLHByb3Zpc2lvbmFsLGZhaWxlZCIsIGNvbnN0X2Nhc3Q8RXdrX1dlYl9FcnJvcio+KGVy
cm9yKSk7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tWaWV3LCAibG9h
ZCxwcm92aXNpb25hbCxmYWlsZWQiLCBjb25zdF9jYXN0PEV3a19FcnJvcio+KGVycm9yKSk7CiB9
CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKaW5k
ZXggMWE4NGM1Mjk5MDM4MjkwZDk4OGMwZGJhZDFiOGFlYjEwYTdlN2FiOC4uY2IyNzZjMGFjZmJj
YzliZjY5NDBiZDA4OWY4NTQ3Y2I3OWMzOGM5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfdmlldy5oCkBAIC00NCwxMCArNDQsMTAgQEAKICAqICAgZXdrX2Zvcm1f
c3VibWlzc2lvbl9yZXF1ZXN0X3N1Ym1pdCgpIHdpbGwgYmUgY2FsbGVkIGF1dG9tYXRpY2FsbHku
CiAgKiAtICJpbnRlbnQscmVxdWVzdCxuZXciLCBFd2tfSW50ZW50KjogcmVwb3J0cyBuZXcgV2Vi
IGludGVudCByZXF1ZXN0LgogICogLSAiaW50ZW50LHNlcnZpY2UscmVnaXN0ZXIiLCBFd2tfSW50
ZW50X1NlcnZpY2UqOiByZXBvcnRzIG5ldyBXZWIgaW50ZW50IHNlcnZpY2UgcmVnaXN0cmF0aW9u
LgotICogLSAibG9hZCxlcnJvciIsIGNvbnN0IEV3a19XZWJfRXJyb3IqOiByZXBvcnRzIG1haW4g
ZnJhbWUgbG9hZCBmYWlsZWQuCisgKiAtICJsb2FkLGVycm9yIiwgY29uc3QgRXdrX0Vycm9yKjog
cmVwb3J0cyBtYWluIGZyYW1lIGxvYWQgZmFpbGVkLgogICogLSAibG9hZCxmaW5pc2hlZCIsIHZv
aWQ6IHJlcG9ydHMgbG9hZCBmaW5pc2hlZC4KICAqIC0gImxvYWQscHJvZ3Jlc3MiLCBkb3VibGUq
OiBsb2FkIHByb2dyZXNzIGhhcyBjaGFuZ2VkICh2YWx1ZSBmcm9tIDAuMCB0byAxLjApLgotICog
LSAibG9hZCxwcm92aXNpb25hbCxmYWlsZWQiLCBjb25zdCBFd2tfV2ViX0Vycm9yKjogdmlldyBw
cm92aXNpb25hbCBsb2FkIGZhaWxlZC4KKyAqIC0gImxvYWQscHJvdmlzaW9uYWwsZmFpbGVkIiwg
Y29uc3QgRXdrX0Vycm9yKjogdmlldyBwcm92aXNpb25hbCBsb2FkIGZhaWxlZC4KICAqIC0gImxv
YWQscHJvdmlzaW9uYWwscmVkaXJlY3QiLCB2b2lkOiB2aWV3IHJlY2VpdmVkIHJlZGlyZWN0IGZv
ciBwcm92aXNpb25hbCBsb2FkLgogICogLSAibG9hZCxwcm92aXNpb25hbCxzdGFydGVkIiwgdm9p
ZDogdmlldyBzdGFydGVkIHByb3Zpc2lvbmFsIGxvYWQuCiAgKiAtICJwb2xpY3ksZGVjaXNpb24s
bmF2aWdhdGlvbiIsIEV3a19OYXZpZ2F0aW9uX1BvbGljeV9EZWNpc2lvbio6IGEgbmF2aWdhdGlv
biBwb2xpY3kgZGVjaXNpb24gc2hvdWxkIGJlIHRha2VuLgpAQCAtNzMsMTMgKzczLDEzIEBACiAj
aW5jbHVkZSAiZXdrX2JhY2tfZm9yd2FyZF9saXN0LmgiCiAjaW5jbHVkZSAiZXdrX2NvbnRleHQu
aCIKICNpbmNsdWRlICJld2tfZG93bmxvYWRfam9iLmgiCisjaW5jbHVkZSAiZXdrX2Vycm9yLmgi
CiAjaW5jbHVkZSAiZXdrX2ludGVudC5oIgogI2luY2x1ZGUgImV3a19yZXNvdXJjZS5oIgogI2lu
Y2x1ZGUgImV3a19zZXR0aW5ncy5oIgogI2luY2x1ZGUgImV3a190b3VjaC5oIgogI2luY2x1ZGUg
ImV3a191cmxfcmVxdWVzdC5oIgogI2luY2x1ZGUgImV3a191cmxfcmVzcG9uc2UuaCIKLSNpbmNs
dWRlICJld2tfd2ViX2Vycm9yLmgiCiAjaW5jbHVkZSA8RXZhcy5oPgogCiAjaWZkZWYgX19jcGx1
c3BsdXMKQEAgLTIzNCw3ICsyMzQsNyBAQCB0eXBlZGVmIHN0cnVjdCBfRXdrX1Jlc291cmNlX0xv
YWRfRXJyb3IgRXdrX1Jlc291cmNlX0xvYWRfRXJyb3I7CiAgKi8KIHN0cnVjdCBfRXdrX1Jlc291
cmNlX0xvYWRfRXJyb3IgewogICAgIEV3a19SZXNvdXJjZSAqcmVzb3VyY2U7IC8qKjwgcmVzb3Vy
Y2UgdGhhdCBmYWlsZWQgbG9hZGluZyAqLwotICAgIEV3a19XZWJfRXJyb3IgKmVycm9yOyAvKio8
IGxvYWQgZXJyb3IgKi8KKyAgICBFd2tfRXJyb3IgKmVycm9yOyAvKio8IGxvYWQgZXJyb3IgKi8K
IH07CiAKIC8vLyBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciBfRXdrX0Rvd25sb2FkX0pvYl9FcnJv
ci4KQEAgLTI0NSw3ICsyNDUsNyBAQCB0eXBlZGVmIHN0cnVjdCBfRXdrX0Rvd25sb2FkX0pvYl9F
cnJvciBFd2tfRG93bmxvYWRfSm9iX0Vycm9yOwogICovCiBzdHJ1Y3QgX0V3a19Eb3dubG9hZF9K
b2JfRXJyb3IgewogICAgIEV3a19Eb3dubG9hZF9Kb2IgKmRvd25sb2FkX2pvYjsgLyoqPCBkb3du
bG9hZCB0aGF0IGZhaWxlZCAqLwotICAgIEV3a19XZWJfRXJyb3IgKmVycm9yOyAvKio8IGRvd25s
b2FkIGVycm9yICovCisgICAgRXdrX0Vycm9yICplcnJvcjsgLyoqPCBkb3dubG9hZCBlcnJvciAq
LwogfTsKIAogLyoqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfdmlld19sb2FkZXJfY2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a192aWV3X2xvYWRlcl9jbGllbnQuY3BwCmluZGV4IDg2YzljMDg1NDBhODU4MzFm
M2FkYzM3ZTgwMjk1MDNlY2MwNDg2ZWYuLmNkYzgwNThiNzlkYjE1ZGM4MjNlMWFkYTFmODFjNGY3
Mzg1MzNhZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a192aWV3X2xvYWRlcl9jbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a192aWV3X2xvYWRlcl9jbGllbnQuY3BwCkBAIC0yOCwxMyArMjgsMTMgQEAKIAog
I2luY2x1ZGUgIldLRnJhbWUuaCIKICNpbmNsdWRlICJld2tfYmFja19mb3J3YXJkX2xpc3RfcHJp
dmF0ZS5oIgorI2luY2x1ZGUgImV3a19lcnJvcl9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX2lu
dGVudC5oIgogI2luY2x1ZGUgImV3a19pbnRlbnRfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19p
bnRlbnRfc2VydmljZS5oIgogI2luY2x1ZGUgImV3a19pbnRlbnRfc2VydmljZV9wcml2YXRlLmgi
CiAjaW5jbHVkZSAiZXdrX3ZpZXdfbG9hZGVyX2NsaWVudF9wcml2YXRlLmgiCiAjaW5jbHVkZSAi
ZXdrX3ZpZXdfcHJpdmF0ZS5oIgotI2luY2x1ZGUgImV3a193ZWJfZXJyb3JfcHJpdmF0ZS5oIgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsK
QEAgLTg5LDEwICs4OSwxMCBAQCBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZFdpdGhFcnJvckZvckZy
YW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiBmcmFtZSwgV0tFcnJvclJlZgogICAgICAgICByZXR1
cm47CiAKICAgICBFdmFzX09iamVjdCogZXdrVmlldyA9IHN0YXRpY19jYXN0PEV2YXNfT2JqZWN0
Kj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOwotICAgIEV3a19XZWJfRXJyb3IqIGV3
a0Vycm9yID0gZXdrX3dlYl9lcnJvcl9uZXcoZXJyb3IpOworICAgIEV3a19FcnJvciogZXdrRXJy
b3IgPSBld2tfZXJyb3JfbmV3KGVycm9yKTsKICAgICBld2tfdmlld19sb2FkX2Vycm9yKGV3a1Zp
ZXcsIGV3a0Vycm9yKTsKICAgICBld2tfdmlld19sb2FkX2ZpbmlzaGVkKGV3a1ZpZXcpOwotICAg
IGV3a193ZWJfZXJyb3JfZnJlZShld2tFcnJvcik7CisgICAgZXdrX2Vycm9yX2ZyZWUoZXdrRXJy
b3IpOwogfQogCiBzdGF0aWMgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdL
UGFnZVJlZiwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmIC8qdXNlckRhdGEqLywgY29uc3Qg
dm9pZCogY2xpZW50SW5mbykKQEAgLTExOSw5ICsxMTksOSBAQCBzdGF0aWMgdm9pZCBkaWRGYWls
UHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmIGZy
YW1lLAogICAgICAgICByZXR1cm47CiAKICAgICBFdmFzX09iamVjdCogZXdrVmlldyA9IHN0YXRp
Y19jYXN0PEV2YXNfT2JqZWN0Kj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOwotICAg
IEV3a19XZWJfRXJyb3IqIGV3a0Vycm9yID0gZXdrX3dlYl9lcnJvcl9uZXcoZXJyb3IpOworICAg
IEV3a19FcnJvciogZXdrRXJyb3IgPSBld2tfZXJyb3JfbmV3KGVycm9yKTsKICAgICBld2tfdmll
d19sb2FkX3Byb3Zpc2lvbmFsX2ZhaWxlZChld2tWaWV3LCBld2tFcnJvcik7Ci0gICAgZXdrX3dl
Yl9lcnJvcl9mcmVlKGV3a0Vycm9yKTsKKyAgICBld2tfZXJyb3JfZnJlZShld2tFcnJvcik7CiB9
CiAKIHN0YXRpYyB2b2lkIGRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdChXS1BhZ2VSZWYsIFdLQmFj
a0ZvcndhcmRMaXN0SXRlbVJlZiBhZGRlZEl0ZW0sIFdLQXJyYXlSZWYgcmVtb3ZlZEl0ZW1zLCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oCmluZGV4IDZlMzJmODU2NzI3YTBiNmExMmI5YmEx
Yzg3MzMxOTBjNjA4MWIxNmIuLjQ0MTJlNGViN2FkOTNmM2U0ODNhM2I2ZTI3ODAzZDQ0MTc5ZTE0
ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3
X3ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmll
d19wcml2YXRlLmgKQEAgLTQzLDcgKzQzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX0V3a19Eb3dubG9h
ZF9Kb2IgRXdrX0Rvd25sb2FkX0pvYjsKIHR5cGVkZWYgc3RydWN0IF9Fd2tfRm9ybV9TdWJtaXNz
aW9uX1JlcXVlc3QgRXdrX0Zvcm1fU3VibWlzc2lvbl9SZXF1ZXN0OwogdHlwZWRlZiBzdHJ1Y3Qg
X0V3a19VcmxfUmVxdWVzdCBFd2tfVXJsX1JlcXVlc3Q7CiB0eXBlZGVmIHN0cnVjdCBfRXdrX1Vy
bF9SZXNwb25zZSBFd2tfVXJsX1Jlc3BvbnNlOwotdHlwZWRlZiBzdHJ1Y3QgX0V3a19XZWJfRXJy
b3IgRXdrX1dlYl9FcnJvcjsKK3R5cGVkZWYgc3RydWN0IF9Fd2tfRXJyb3IgRXdrX0Vycm9yOwog
dHlwZWRlZiBzdHJ1Y3QgX0V3a19SZXNvdXJjZSBFd2tfUmVzb3VyY2U7CiB0eXBlZGVmIHN0cnVj
dCBfRXdrX05hdmlnYXRpb25fUG9saWN5X0RlY2lzaW9uIEV3a19OYXZpZ2F0aW9uX1BvbGljeV9E
ZWNpc2lvbjsKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCkBAIC01Niw3ICs1Niw3IEBAIHR5cGVk
ZWYgc3RydWN0IF9Fd2tfSW50ZW50X1NlcnZpY2UgRXdrX0ludGVudF9TZXJ2aWNlOwogdm9pZCBl
d2tfdmlld19jdXJzb3Jfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBXZWJDb3JlOjpD
dXJzb3ImIGN1cnNvcik7CiB2b2lkIGV3a192aWV3X2Rpc3BsYXkoRXZhc19PYmplY3QqIGV3a1Zp
ZXcsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHJlY3QpOwogdm9pZCBld2tfdmlld19kb3dubG9h
ZF9qb2JfY2FuY2VsbGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfRG93bmxvYWRfSm9iKik7
Ci12b2lkIGV3a192aWV3X2Rvd25sb2FkX2pvYl9mYWlsZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcs
IEV3a19Eb3dubG9hZF9Kb2IqLCBFd2tfV2ViX0Vycm9yKik7Cit2b2lkIGV3a192aWV3X2Rvd25s
b2FkX2pvYl9mYWlsZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19Eb3dubG9hZF9Kb2IqLCBF
d2tfRXJyb3IqKTsKIHZvaWQgZXdrX3ZpZXdfZG93bmxvYWRfam9iX2ZpbmlzaGVkKEV2YXNfT2Jq
ZWN0KiBld2tWaWV3LCBFd2tfRG93bmxvYWRfSm9iKik7CiB2b2lkIGV3a192aWV3X2Rvd25sb2Fk
X2pvYl9yZXF1ZXN0ZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19Eb3dubG9hZF9Kb2IqKTsK
IHZvaWQgZXdrX3ZpZXdfZm9ybV9zdWJtaXNzaW9uX3JlcXVlc3RfbmV3KEV2YXNfT2JqZWN0KiBl
d2tWaWV3LCBFd2tfRm9ybV9TdWJtaXNzaW9uX1JlcXVlc3QqKTsKQEAgLTY1LDEwICs2NSwxMCBA
QCB2b2lkIGV3a192aWV3X2Z1bGxfc2NyZWVuX2VudGVyKEV2YXNfT2JqZWN0KiBld2tWaWV3KTsK
IHZvaWQgZXdrX3ZpZXdfZnVsbF9zY3JlZW5fZXhpdChFdmFzX09iamVjdCogZXdrVmlldyk7CiAj
ZW5kaWYKIHZvaWQgZXdrX3ZpZXdfaW1hZ2VfZGF0YV9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcs
IHZvaWQqIGltYWdlRGF0YSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSk7Ci12b2lkIGV3
a192aWV3X2xvYWRfZXJyb3IoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IEV3a19XZWJfRXJy
b3IqIGVycm9yKTsKK3ZvaWQgZXdrX3ZpZXdfbG9hZF9lcnJvcihFdmFzX09iamVjdCogZXdrVmll
dywgY29uc3QgRXdrX0Vycm9yKiBlcnJvcik7CiB2b2lkIGV3a192aWV3X2xvYWRfZmluaXNoZWQo
RXZhc19PYmplY3QqIGV3a1ZpZXcpOwogdm9pZCBld2tfdmlld19sb2FkX3Byb2dyZXNzX2NoYW5n
ZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGRvdWJsZSBwcm9ncmVzcyk7Ci12b2lkIGV3a192aWV3
X2xvYWRfcHJvdmlzaW9uYWxfZmFpbGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBFd2tf
V2ViX0Vycm9yKiBlcnJvcik7Cit2b2lkIGV3a192aWV3X2xvYWRfcHJvdmlzaW9uYWxfZmFpbGVk
KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBFd2tfRXJyb3IqIGVycm9yKTsKIHZvaWQgZXdr
X3ZpZXdfbG9hZF9wcm92aXNpb25hbF9yZWRpcmVjdChFdmFzX09iamVjdCogZXdrVmlldyk7CiB2
b2lkIGV3a192aWV3X2xvYWRfcHJvdmlzaW9uYWxfc3RhcnRlZChFdmFzX09iamVjdCogZXdrVmll
dyk7CiB2b2lkIGV3a192aWV3X25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uKEV2YXNfT2JqZWN0
KiBld2tWaWV3LCBFd2tfTmF2aWdhdGlvbl9Qb2xpY3lfRGVjaXNpb24qIGRlY2lzaW9uKTsKQEAg
LTc2LDcgKzc2LDcgQEAgdm9pZCBld2tfdmlld19uZXdfd2luZG93X3BvbGljeV9kZWNpc2lvbihF
dmFzX09iamVjdCogZXdrVmlldywgRXdrX05hdmlnYXRpb25fUG8KIHZvaWQgZXdrX3ZpZXdfcGFn
ZV9jbG9zZShFdmFzX09iamVjdCogZXdrVmlldyk7CiBXS1BhZ2VSZWYgZXdrX3ZpZXdfcGFnZV9j
cmVhdGUoRXZhc19PYmplY3QqIGV3a1ZpZXcpOwogdm9pZCBld2tfdmlld190aXRsZV9jaGFuZ2Vk
KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBjaGFyKiB0aXRsZSk7Ci12b2lkIGV3a192aWV3
X3Jlc291cmNlX2xvYWRfZmFpbGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCB1aW50NjRfdCByZXNv
dXJjZUlkZW50aWZpZXIsIEV3a19XZWJfRXJyb3IqIGVycm9yKTsKK3ZvaWQgZXdrX3ZpZXdfcmVz
b3VyY2VfbG9hZF9mYWlsZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIHVpbnQ2NF90IHJlc291cmNl
SWRlbnRpZmllciwgRXdrX0Vycm9yKiBlcnJvcik7CiB2b2lkIGV3a192aWV3X3Jlc291cmNlX2xv
YWRfZmluaXNoZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRp
Zmllcik7CiB2b2lkIGV3a192aWV3X3Jlc291cmNlX2xvYWRfaW5pdGlhdGVkKEV2YXNfT2JqZWN0
KiBld2tWaWV3LCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIsIEV3a19SZXNvdXJjZSogcmVz
b3VyY2UsIEV3a19VcmxfUmVxdWVzdCogcmVxdWVzdCk7CiB2b2lkIGV3a192aWV3X3Jlc291cmNl
X2xvYWRfcmVzcG9uc2UoRXZhc19PYmplY3QqIGV3a1ZpZXcsIHVpbnQ2NF90IHJlc291cmNlSWRl
bnRpZmllciwgRXdrX1VybF9SZXNwb25zZSogcmVzcG9uc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9jbGllbnQu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcmVzb3VyY2Vf
bG9hZF9jbGllbnQuY3BwCmluZGV4IGE1MDA0MDVlMGE5ZjEyNDlkZjI1NGU0Mjg0YjM5MTBjMTIw
NzJiOWMuLjQ3ZTBkMTZjYjU4OGUyNjhlMGZmNDFmZGRkZTE3MzhmNjQ0YTMxOGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3Jlc291cmNlX2xv
YWRfY2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
dmlld19yZXNvdXJjZV9sb2FkX2NsaWVudC5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRl
ICJXS1VSTC5oIgogI2luY2x1ZGUgIldLVVJMUmVxdWVzdC5oIgogI2luY2x1ZGUgIldLVVJMUmVz
cG9uc2UuaCIKKyNpbmNsdWRlICJld2tfZXJyb3JfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19y
ZXNvdXJjZS5oIgogI2luY2x1ZGUgImV3a19yZXNvdXJjZV9wcml2YXRlLmgiCiAjaW5jbHVkZSAi
ZXdrX3VybF9yZXF1ZXN0LmgiCkBAIC00MCw3ICs0MSw2IEBACiAjaW5jbHVkZSAiZXdrX3VybF9y
ZXNwb25zZV9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0ZS5oIgogI2luY2x1
ZGUgImV3a192aWV3X3Jlc291cmNlX2xvYWRfY2xpZW50X3ByaXZhdGUuaCIKLSNpbmNsdWRlICJl
d2tfd2ViX2Vycm9yX3ByaXZhdGUuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtODcsMTAgKzg3LDEwIEBAIHN0YXRpYyB2b2lk
IGRpZEZpbmlzaExvYWRGb3JSZXNvdXJjZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIHVpbnQ2NF90
IHJlc291cmNlSWRlCiAKIHN0YXRpYyB2b2lkIGRpZEZhaWxMb2FkRm9yUmVzb3VyY2UoV0tQYWdl
UmVmLCBXS0ZyYW1lUmVmLCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIsIFdLRXJyb3JSZWYg
d2tFcnJvciwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKLSAgICBFd2tfV2ViX0Vycm9yKiBl
d2tFcnJvciA9IGV3a193ZWJfZXJyb3JfbmV3KHdrRXJyb3IpOworICAgIEV3a19FcnJvciogZXdr
RXJyb3IgPSBld2tfZXJyb3JfbmV3KHdrRXJyb3IpOwogICAgIGV3a192aWV3X3Jlc291cmNlX2xv
YWRfZmFpbGVkKHRvRXdrVmlldyhjbGllbnRJbmZvKSwgcmVzb3VyY2VJZGVudGlmaWVyLCBld2tF
cnJvcik7CiAgICAgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9maW5pc2hlZCh0b0V3a1ZpZXcoY2xp
ZW50SW5mbyksIHJlc291cmNlSWRlbnRpZmllcik7Ci0gICAgZXdrX3dlYl9lcnJvcl9mcmVlKGV3
a0Vycm9yKTsKKyAgICBld2tfZXJyb3JfZnJlZShld2tFcnJvcik7CiB9CiAKIHZvaWQgZXdrX3Zp
ZXdfcmVzb3VyY2VfbG9hZF9jbGllbnRfYXR0YWNoKFdLUGFnZVJlZiBwYWdlUmVmLCBFdmFzX09i
amVjdCogZXdrVmlldykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a193ZWJfZXJyb3IuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX3dlYl9lcnJvci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE5OGI2ZDRj
MjdiMzMyZmFmMjEzMDk2YTEwMTMyYTMwZDk2NDM1MmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX3dlYl9lcnJvci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzQgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgImV3a193ZWJfZXJy
b3IuaCIKLQotI2luY2x1ZGUgIkVycm9yc0VmbC5oIgotI2luY2x1ZGUgIldLRWluYVNoYXJlZFN0
cmluZy5oIgotI2luY2x1ZGUgIldLU3RyaW5nLmgiCi0jaW5jbHVkZSAiV0tVUkwuaCIKLSNpbmNs
dWRlICJld2tfd2ViX2Vycm9yX3ByaXZhdGUuaCIKLSNpbmNsdWRlIDxXS0FQSUNhc3QuaD4KLSNp
bmNsdWRlIDxXS0Vycm9yLmg+Ci0jaW5jbHVkZSA8V0tSZXRhaW5QdHIuaD4KLSNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotdXNpbmcgbmFt
ZXNwYWNlIFdlYktpdDsKLQotc3RydWN0IF9Fd2tfV2ViX0Vycm9yIHsKLSAgICBXS1JldGFpblB0
cjxXS0Vycm9yUmVmPiB3a0Vycm9yOwotCi0gICAgV0tFaW5hU2hhcmVkU3RyaW5nIHVybDsKLSAg
ICBXS0VpbmFTaGFyZWRTdHJpbmcgZGVzY3JpcHRpb247Ci0KLSAgICBfRXdrX1dlYl9FcnJvcihX
S0Vycm9yUmVmIGVycm9yUmVmKQotICAgICAgICA6IHdrRXJyb3IoZXJyb3JSZWYpCi0gICAgICAg
ICwgdXJsKEFkb3B0V0ssIFdLRXJyb3JDb3B5RmFpbGluZ1VSTChlcnJvclJlZikpCi0gICAgICAg
ICwgZGVzY3JpcHRpb24oQWRvcHRXSywgV0tFcnJvckNvcHlMb2NhbGl6ZWREZXNjcmlwdGlvbihl
cnJvclJlZikpCi0gICAgeyB9Ci0KLSAgICB+X0V3a19XZWJfRXJyb3IoKQotICAgIHsKLSAgICB9
Ci19OwotCi0jZGVmaW5lIEVXS19XRUJfRVJST1JfV0tfR0VUX09SX1JFVFVSTihlcnJvciwgd2tF
cnJvcl8sIC4uLikgICAgXAotICAgIGlmICghKGVycm9yKSkgeyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIEVJTkFfTE9HX0NSSVQoImVycm9yIGlz
IE5VTEwuIik7ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgcmV0dXJuIF9fVkFfQVJH
U19fOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBp
ZiAoIShlcnJvciktPndrRXJyb3IpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
Ci0gICAgICAgIEVJTkFfTE9HX0NSSVQoImVycm9yLT53a0Vycm9yIGlzIE5VTEwuIik7ICAgICAg
ICAgICAgXAotICAgICAgICByZXR1cm4gX19WQV9BUkdTX187ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAotICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIFdLRXJyb3JSZWYgd2tFcnJvcl8gPSAoZXJy
b3IpLT53a0Vycm9yLmdldCgpCi0KLS8qKgotICogQGludGVybmFsCi0gKiBGcmVlcyB0aGUgZ2l2
ZW4gb2JqZWN0LgotICovCi12b2lkIGV3a193ZWJfZXJyb3JfZnJlZShFd2tfV2ViX0Vycm9yKiBl
cnJvcikKLXsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihlcnJvcik7Ci0KLSAgICBk
ZWxldGUgZXJyb3I7Ci19Ci0KLUV3a19XZWJfRXJyb3JfVHlwZSBld2tfd2ViX2Vycm9yX3R5cGVf
Z2V0KGNvbnN0IEV3a19XZWJfRXJyb3IqIGVycm9yKQotewotICAgIEVXS19XRUJfRVJST1JfV0tf
R0VUX09SX1JFVFVSTihlcnJvciwgd2tFcnJvciwgRVdLX1dFQl9FUlJPUl9UWVBFX05PTkUpOwot
Ci0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHdrRG9tYWluKEFkb3B0V0ssIFdLRXJyb3JD
b3B5RG9tYWluKHdrRXJyb3IpKTsKLSAgICBXVEY6OlN0cmluZyBlcnJvckRvbWFpbiA9IHRvV1RG
U3RyaW5nKHdrRG9tYWluLmdldCgpKTsKLQotICAgIGlmIChlcnJvckRvbWFpbiA9PSBlcnJvckRv
bWFpbk5ldHdvcmspCi0gICAgICAgIHJldHVybiBFV0tfV0VCX0VSUk9SX1RZUEVfTkVUV09SSzsK
LSAgICBpZiAoZXJyb3JEb21haW4gPT0gZXJyb3JEb21haW5Qb2xpY3kpCi0gICAgICAgIHJldHVy
biBFV0tfV0VCX0VSUk9SX1RZUEVfUE9MSUNZOwotICAgIGlmIChlcnJvckRvbWFpbiA9PSBlcnJv
ckRvbWFpblBsdWdpbikKLSAgICAgICAgcmV0dXJuIEVXS19XRUJfRVJST1JfVFlQRV9QTFVHSU47
Ci0gICAgaWYgKGVycm9yRG9tYWluID09IGVycm9yRG9tYWluRG93bmxvYWQpCi0gICAgICAgIHJl
dHVybiBFV0tfV0VCX0VSUk9SX1RZUEVfRE9XTkxPQUQ7Ci0gICAgaWYgKGVycm9yRG9tYWluID09
IGVycm9yRG9tYWluUHJpbnQpCi0gICAgICAgIHJldHVybiBFV0tfV0VCX0VSUk9SX1RZUEVfUFJJ
TlQ7Ci0gICAgcmV0dXJuIEVXS19XRUJfRVJST1JfVFlQRV9JTlRFUk5BTDsKLX0KLQotY29uc3Qg
Y2hhciogZXdrX3dlYl9lcnJvcl91cmxfZ2V0KGNvbnN0IEV3a19XZWJfRXJyb3IqIGVycm9yKQot
ewotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChlcnJvciwgMCk7Ci0KLSAgICBy
ZXR1cm4gZXJyb3ItPnVybDsKLX0KLQotaW50IGV3a193ZWJfZXJyb3JfY29kZV9nZXQoY29uc3Qg
RXdrX1dlYl9FcnJvciogZXJyb3IpCi17Ci0gICAgRVdLX1dFQl9FUlJPUl9XS19HRVRfT1JfUkVU
VVJOKGVycm9yLCB3a0Vycm9yLCAwKTsKLQotICAgIHJldHVybiBXS0Vycm9yR2V0RXJyb3JDb2Rl
KHdrRXJyb3IpOwotfQotCi1jb25zdCBjaGFyKiBld2tfd2ViX2Vycm9yX2Rlc2NyaXB0aW9uX2dl
dChjb25zdCBFd2tfV2ViX0Vycm9yKiBlcnJvcikKLXsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxM
X1JFVFVSTl9WQUwoZXJyb3IsIDApOwotCi0gICAgcmV0dXJuIGVycm9yLT5kZXNjcmlwdGlvbjsK
LX0KLQotRWluYV9Cb29sIGV3a193ZWJfZXJyb3JfY2FuY2VsbGF0aW9uX2dldChjb25zdCBFd2tf
V2ViX0Vycm9yKiBlcnJvcikKLXsKLSAgICBFV0tfV0VCX0VSUk9SX1dLX0dFVF9PUl9SRVRVUk4o
ZXJyb3IsIHdrRXJyb3IsIGZhbHNlKTsKLQotICAgIHJldHVybiB0b0ltcGwod2tFcnJvciktPnBs
YXRmb3JtRXJyb3IoKS5pc0NhbmNlbGxhdGlvbigpOwotfQotCi1Fd2tfV2ViX0Vycm9yKiBld2tf
d2ViX2Vycm9yX25ldyhXS0Vycm9yUmVmIGVycm9yKQotewotICAgIEVJTkFfU0FGRVRZX09OX05V
TExfUkVUVVJOX1ZBTChlcnJvciwgMCk7Ci0KLSAgICByZXR1cm4gbmV3IEV3a19XZWJfRXJyb3Io
ZXJyb3IpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX3dlYl9lcnJvci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3dl
Yl9lcnJvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NjhiOWE0MTE5ODY5ZTk1
ODQ2ODYyNWM5ZjYwMWE1ZTZlZDJlYWVjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a193ZWJf
ZXJyb3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDExNyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0vKioKLSAqIEBmaWxlICAgIGV3a193ZWJfZXJyb3IuaAotICogQGJyaWVmICAgRGVzY3Jp
YmVzIHRoZSBXZWIgRXJyb3IgQVBJLgotICovCi0KLSNpZm5kZWYgZXdrX3dlYl9lcnJvcl9oCi0j
ZGVmaW5lIGV3a193ZWJfZXJyb3JfaAotCi0jaW5jbHVkZSA8RWluYS5oPgotCi0jaWZkZWYgX19j
cGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KLS8qKiBDcmVhdGVzIGEgdHlwZSBuYW1l
IGZvciBAYSBFd2tfV2ViX0Vycm9yLiAqLwotdHlwZWRlZiBzdHJ1Y3QgX0V3a19XZWJfRXJyb3Ig
RXdrX1dlYl9FcnJvcjsKLQotLy8vIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIEV3a19XZWJfRXJy
b3JfVHlwZS4KLXR5cGVkZWYgZW51bSB7Ci0gICAgRVdLX1dFQl9FUlJPUl9UWVBFX05PTkUsCi0g
ICAgRVdLX1dFQl9FUlJPUl9UWVBFX0lOVEVSTkFMLAotICAgIEVXS19XRUJfRVJST1JfVFlQRV9O
RVRXT1JLLAotICAgIEVXS19XRUJfRVJST1JfVFlQRV9QT0xJQ1ksCi0gICAgRVdLX1dFQl9FUlJP
Ul9UWVBFX1BMVUdJTiwKLSAgICBFV0tfV0VCX0VSUk9SX1RZUEVfRE9XTkxPQUQsCi0gICAgRVdL
X1dFQl9FUlJPUl9UWVBFX1BSSU5UCi19IEV3a19XZWJfRXJyb3JfVHlwZTsKLQotLyoqCi0gKiBR
dWVyeSB0eXBlIGZvciB0aGlzIGVycm9yLgotICoKLSAqIEBwYXJhbSBlcnJvciBlcnJvciBvYmpl
Y3QgdG8gcXVlcnkuCi0gKgotICogQHJldHVybiB0aGUgZXJyb3IgdHlwZSwgdGhhdCBtYXkgYmUg
QGMgTlVMTC4gVGhpcyBwb2ludGVyIGlzCi0gKiAgICAgICAgIGd1YXJhbnRlZWQgdG8gYmUgZWlu
YV9zdHJpbmdzaGFyZSwgc28gd2hlbmV2ZXIgcG9zc2libGUKLSAqICAgICAgICAgc2F2ZSB5b3Vy
c2VsZiBzb21lIGNwdSBjeWNsZXMgYW5kIHVzZQotICogICAgICAgICBlaW5hX3N0cmluZ3NoYXJl
X3JlZigpIGluc3RlYWQgb2YgZWluYV9zdHJpbmdzaGFyZV9hZGQoKSBvcgotICogICAgICAgICBz
dHJkdXAoKS4KLSAqLwotRUFQSSBFd2tfV2ViX0Vycm9yX1R5cGUgZXdrX3dlYl9lcnJvcl90eXBl
X2dldChjb25zdCBFd2tfV2ViX0Vycm9yICplcnJvcik7Ci0KLS8qKgotICogUXVlcnkgZmFpbGlu
ZyBVUkwgZm9yIHRoaXMgZXJyb3IuCi0gKgotICogVVJMIHRoYXQgZmFpbGVkIGxvYWRpbmcuCi0g
KgotICogQHBhcmFtIGVycm9yIGVycm9yIG9iamVjdCB0byBxdWVyeS4KLSAqCi0gKiBAcmV0dXJu
IHRoZSBVUkwgcG9pbnRlciwgdGhhdCBtYXkgYmUgQGMgTlVMTC4gVGhpcyBwb2ludGVyIGlzCi0g
KiAgICAgICAgIGd1YXJhbnRlZWQgdG8gYmUgZWluYV9zdHJpbmdzaGFyZSwgc28gd2hlbmV2ZXIg
cG9zc2libGUKLSAqICAgICAgICAgc2F2ZSB5b3Vyc2VsZiBzb21lIGNwdSBjeWNsZXMgYW5kIHVz
ZQotICogICAgICAgICBlaW5hX3N0cmluZ3NoYXJlX3JlZigpIGluc3RlYWQgb2YgZWluYV9zdHJp
bmdzaGFyZV9hZGQoKSBvcgotICogICAgICAgICBzdHJkdXAoKS4KLSAqLwotRUFQSSBjb25zdCBj
aGFyICpld2tfd2ViX2Vycm9yX3VybF9nZXQoY29uc3QgRXdrX1dlYl9FcnJvciAqZXJyb3IpOwot
Ci0vKioKLSAqIFF1ZXJ5IEhUVFAgZXJyb3IgY29kZS4KLSAqCi0gKiBAcGFyYW0gZXJyb3IgZXJy
b3Igb2JqZWN0IHRvIHF1ZXJ5LgotICoKLSAqIEByZXR1cm4gdGhlIEhUVFAgZXJyb3IgY29kZS4K
LSAqLwotRUFQSSBpbnQgZXdrX3dlYl9lcnJvcl9jb2RlX2dldChjb25zdCBFd2tfV2ViX0Vycm9y
ICplcnJvcik7Ci0KLS8qKgotICogUXVlcnkgZGVzY3JpcHRpb24gZm9yIHRoaXMgZXJyb3IuCi0g
KgotICogQHBhcmFtIGVycm9yIGVycm9yIG9iamVjdCB0byBxdWVyeS4KLSAqCi0gKiBAcmV0dXJu
IHRoZSBkZXNjcmlwdGlvbiBwb2ludGVyLCB0aGF0IG1heSBiZSBAYyBOVUxMLiBUaGlzIHBvaW50
ZXIgaXMKLSAqICAgICAgICAgZ3VhcmFudGVlZCB0byBiZSBlaW5hX3N0cmluZ3NoYXJlLCBzbyB3
aGVuZXZlciBwb3NzaWJsZQotICogICAgICAgICBzYXZlIHlvdXJzZWxmIHNvbWUgY3B1IGN5Y2xl
cyBhbmQgdXNlCi0gKiAgICAgICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVmKCkgaW5zdGVhZCBvZiBl
aW5hX3N0cmluZ3NoYXJlX2FkZCgpIG9yCi0gKiAgICAgICAgIHN0cmR1cCgpLgotICovCi1FQVBJ
IGNvbnN0IGNoYXIgKmV3a193ZWJfZXJyb3JfZGVzY3JpcHRpb25fZ2V0KGNvbnN0IEV3a19XZWJf
RXJyb3IgKmVycm9yKTsKLQotLyoqCi0gKiBRdWVyeSBpZiBlcnJvciBzaG91bGQgYmUgdHJlYXRl
ZCBhcyBhIGNhbmNlbGxhdGlvbi4KLSAqCi0gKiBAcGFyYW0gZXJyb3IgZXJyb3Igb2JqZWN0IHRv
IHF1ZXJ5LgotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHRoaXMgZXJyb3Igc2hvdWxk
IGJlIHRyZWF0ZWQgYXMgYSBjYW5jZWxsYXRpb24sIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCi0g
Ki8KLUVBUEkgRWluYV9Cb29sIGV3a193ZWJfZXJyb3JfY2FuY2VsbGF0aW9uX2dldChjb25zdCBF
d2tfV2ViX0Vycm9yICplcnJvcik7Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCi0K
LSNlbmRpZiAvLyBld2tfd2ViX2Vycm9yX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a193ZWJfZXJyb3JfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX3dlYl9lcnJvcl9wcml2YXRlLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDg4OTNhMmJiYmRmNjFkYTI2NDZiYWFlNDRkNDg0N2MyMzdiNDAzYjAu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3dlYl9lcnJvcl9wcml2YXRlLmgKKysrIC9kZXYv
bnVsbApAQCAtMSwzNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENv
cnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIGV3a193
ZWJfZXJyb3JfcHJpdmF0ZV9oCi0jZGVmaW5lIGV3a193ZWJfZXJyb3JfcHJpdmF0ZV9oCi0KLSNp
bmNsdWRlIDxXS0Vycm9yLmg+Ci0KLXR5cGVkZWYgc3RydWN0IF9Fd2tfV2ViX0Vycm9yIEV3a19X
ZWJfRXJyb3I7Ci0KLUV3a19XZWJfRXJyb3IqIGV3a193ZWJfZXJyb3JfbmV3KFdLRXJyb3JSZWYg
ZXJyb3IpOwotdm9pZCBld2tfd2ViX2Vycm9yX2ZyZWUoRXdrX1dlYl9FcnJvciogZXJyb3IpOwot
Ci0jZW5kaWYgLy8gZXdrX3dlYl9lcnJvcl9wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9jb29raWVfbWFuYWdlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfY29v
a2llX21hbmFnZXIuY3BwCmluZGV4IDc4OGFjYzkyM2U3MDgwMzAxMDZmNTcyMzU2Yjk4YmViOTBj
MGYwYTIuLjM3MWM5ODAxNWZiMDk1ZmRkOTBhZGMyOTRjMmMzY2U1MWNiYjg4ZjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9jb29r
aWVfbWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVz
dHMvdGVzdF9ld2syX2Nvb2tpZV9tYW5hZ2VyLmNwcApAQCAtNjUsNyArNjUsNyBAQCBzdGF0aWMg
dm9pZCBzZXJ2ZXJDYWxsYmFjayhTb3VwU2VydmVyKiBzZXJ2ZXIsIFNvdXBNZXNzYWdlKiBtZXNz
YWdlLCBjb25zdCBjaGFyKgogICAgIHNvdXBfbWVzc2FnZV9ib2R5X2NvbXBsZXRlKG1lc3NhZ2Ut
PnJlc3BvbnNlX2JvZHkpOwogfQogCi1zdGF0aWMgdm9pZCBnZXRBY2NlcHRQb2xpY3lDYWxsYmFj
ayhFd2tfQ29va2llX0FjY2VwdF9Qb2xpY3kgcG9saWN5LCBFd2tfV2ViX0Vycm9yKiBlcnJvciwg
dm9pZCogZXZlbnRfaW5mbykKK3N0YXRpYyB2b2lkIGdldEFjY2VwdFBvbGljeUNhbGxiYWNrKEV3
a19Db29raWVfQWNjZXB0X1BvbGljeSBwb2xpY3ksIEV3a19FcnJvciogZXJyb3IsIHZvaWQqIGV2
ZW50X2luZm8pCiB7CiAgICAgQVNTRVJUX0ZBTFNFKGVycm9yKTsKICAgICBFd2tfQ29va2llX0Fj
Y2VwdF9Qb2xpY3kqIHJldCA9IHN0YXRpY19jYXN0PEV3a19Db29raWVfQWNjZXB0X1BvbGljeSo+
KGV2ZW50X2luZm8pOwpAQCAtODEsNyArODEsNyBAQCBzdGF0aWMgRXdrX0Nvb2tpZV9BY2NlcHRf
UG9saWN5IGdldEFjY2VwdFBvbGljeShFd2tfQ29va2llX01hbmFnZXIqIG1hbmFnZXIpCiAgICAg
cmV0dXJuIHBvbGljeTsKIH0KIAotc3RhdGljIHZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXND
YWxsYmFjayhFaW5hX0xpc3QqIGhvc3RuYW1lcywgRXdrX1dlYl9FcnJvciogZXJyb3IsIHZvaWQq
IGV2ZW50X2luZm8pCitzdGF0aWMgdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llc0NhbGxiYWNr
KEVpbmFfTGlzdCogaG9zdG5hbWVzLCBFd2tfRXJyb3IqIGVycm9yLCB2b2lkKiBldmVudF9pbmZv
KQogewogICAgIEFTU0VSVF9GQUxTRShlcnJvcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9kb3dubG9hZF9qb2IuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2Rvd25sb2Fk
X2pvYi5jcHAKaW5kZXggNDMzZThkMTM3NTdmYTYwZTUwNjk2Y2EyOTU4YWQ3Y2RjOWQ1Y2FhNy4u
ZjgxMWQ0MzdiM2M3YzRkMWRhZjUwMzc5NWYxMDFmYmVkN2IzOWI3MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2Rvd25sb2FkX2pv
Yi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9l
d2syX2Rvd25sb2FkX2pvYi5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCBzdGF0aWMgdm9pZCBvbl9k
b3dubG9hZF9jYW5jZWxsZWQodm9pZCogdXNlckRhdGEsIEV2YXNfT2JqZWN0KiB3ZWJ2aWV3LCB2
b2lkKiBldgogc3RhdGljIHZvaWQgb25fZG93bmxvYWRfZmFpbGVkKHZvaWQqIHVzZXJEYXRhLCBF
dmFzX09iamVjdCogd2Vidmlldywgdm9pZCogZXZlbnRJbmZvKQogewogICAgIEV3a19Eb3dubG9h
ZF9Kb2JfRXJyb3IqIGRvd25sb2FkRXJyb3IgPSBzdGF0aWNfY2FzdDxFd2tfRG93bmxvYWRfSm9i
X0Vycm9yKj4oZXZlbnRJbmZvKTsKLSAgICBmcHJpbnRmKHN0ZGVyciwgIkRvd25sb2FkIGVycm9y
OiAlc1xuIiwgZXdrX3dlYl9lcnJvcl9kZXNjcmlwdGlvbl9nZXQoZG93bmxvYWRFcnJvci0+ZXJy
b3IpKTsKKyAgICBmcHJpbnRmKHN0ZGVyciwgIkRvd25sb2FkIGVycm9yOiAlc1xuIiwgZXdrX2Vy
cm9yX2Rlc2NyaXB0aW9uX2dldChkb3dubG9hZEVycm9yLT5lcnJvcikpOwogICAgIGVjb3JlX21h
aW5fbG9vcF9xdWl0KCk7CiAgICAgRkFJTCgpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdl
TG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDE5MjIxYjFhMmIzNDZhYzQ1OTllZWNhN2Q4Mjkx
ZjUzNjI0ZTQ0OGQuLjdhMjA1ZTFjZTllZDA4YWRmYzEyNTNhYWJmNTg4YzE0NWU1MzVlMGQgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNiBAQAorMjAxMi0xMC0wNSAgSm9uZ3Nlb2sgWWFuZyAgPGpzNDUueWFuZ0BzYW1zdW5nLmNv
bT4KKworICAgICAgICBbRUZMXVtXSzJdIFJlbW92ZSAid2ViIiB3b3JkIGZyb20gZXdrX3dlYl9l
cnJvciBBUElzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05Nzg4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFJlbW92ZSAid2ViIiB3b3JkIGZyb20gZXdrX3dlYl9lcnJvciBBUElzLgorICAgICAgICAid2Vi
IiB3b3JkIHdhcyByZWR1bmRhbnQgYmVjYXVzZSAiZXdrIiBtZWFucyAiRUZMIFdlYktpdCIgYW5k
IFdLIEFQSXMgZm9yIGVycm9yIGRvZXMgbm90IGhhdmUgIndlYiIgd29yZC4KKworICAgICAgICAq
IE1pbmlCcm93c2VyL2VmbC9tYWluLmM6CisgICAgICAgIChvbl9lcnJvcik6CisKIDIwMTItMTAt
MDUgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRd
IEVuYWJsZSBDU1MgY29tcG9zaXRpbmcgYnkgZGVmYXVsdApkaWZmIC0tZ2l0IGEvVG9vbHMvTWlu
aUJyb3dzZXIvZWZsL21haW4uYyBiL1Rvb2xzL01pbmlCcm93c2VyL2VmbC9tYWluLmMKaW5kZXgg
MGM2ZDI3NmIwZWU1ZDFmYzIyMTc0NjkxOWNlODc2ZDQ3OTY3Y2E2OS4uN2NmMzZkODY1ZDE4ZGI0
YWY1OWVjOWRkZjNmYWRlYTQyZDM3NTU0NSAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIv
ZWZsL21haW4uYworKysgYi9Ub29scy9NaW5pQnJvd3Nlci9lZmwvbWFpbi5jCkBAIC0xODksMTMg
KzE4OSwxMyBAQCBzdGF0aWMgdm9pZAogb25fZXJyb3Iodm9pZCAqdXNlcl9kYXRhLCBFdmFzX09i
amVjdCAqd2Vidmlldywgdm9pZCAqZXZlbnRfaW5mbykKIHsKICAgICBFaW5hX1N0cmJ1ZiogYnVm
ZmVyOwotICAgIGNvbnN0IEV3a19XZWJfRXJyb3IgKmVycm9yID0gKGNvbnN0IEV3a19XZWJfRXJy
b3IgKilldmVudF9pbmZvOworICAgIGNvbnN0IEV3a19FcnJvciAqZXJyb3IgPSAoY29uc3QgRXdr
X0Vycm9yICopZXZlbnRfaW5mbzsKIAogICAgIGJ1ZmZlciA9IGVpbmFfc3RyYnVmX25ldygpOwog
ICAgIGVpbmFfc3RyYnVmX2FwcGVuZF9wcmludGYoYnVmZmVyLCAiPGh0bWw+PGJvZHk+PGRpdiBz
dHlsZT1cImNvbG9yOiNmZjAwMDBcIj5FUlJPUiE8L2Rpdj48YnI+PGRpdj5Db2RlOiAlZDxicj5E
ZXNjcmlwdGlvbjogJXM8YnI+VVJMOiAlczwvZGl2PjwvYm9keTwvaHRtbD4iLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZXdrX3dlYl9lcnJvcl9jb2RlX2dldChlcnJvciksIGV3a193
ZWJfZXJyb3JfZGVzY3JpcHRpb25fZ2V0KGVycm9yKSwgZXdrX3dlYl9lcnJvcl91cmxfZ2V0KGVy
cm9yKSk7CisgICAgICAgIGV3a19lcnJvcl9jb2RlX2dldChlcnJvciksIGV3a19lcnJvcl9kZXNj
cmlwdGlvbl9nZXQoZXJyb3IpLCBld2tfZXJyb3JfdXJsX2dldChlcnJvcikpOwogCi0gICAgZXdr
X3ZpZXdfaHRtbF9zdHJpbmdfbG9hZCh3ZWJ2aWV3LCBlaW5hX3N0cmJ1Zl9zdHJpbmdfZ2V0KGJ1
ZmZlciksIDAsIGV3a193ZWJfZXJyb3JfdXJsX2dldChlcnJvcikpOworICAgIGV3a192aWV3X2h0
bWxfc3RyaW5nX2xvYWQod2VidmlldywgZWluYV9zdHJidWZfc3RyaW5nX2dldChidWZmZXIpLCAw
LCBld2tfZXJyb3JfdXJsX2dldChlcnJvcikpOwogICAgIGVpbmFfc3RyYnVmX2ZyZWUoYnVmZmVy
KTsKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>