<?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>84572</bug_id>
          
          <creation_ts>2012-04-23 00:51:05 -0700</creation_ts>
          <short_desc>[EFL] Split ewk_private.h file to multiple private files.</short_desc>
          <delta_ts>2012-05-15 02:48:47 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>85178</blocked>
    
    <blocked>86354</blocked>
    
    <blocked>86456</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Tomasz Morawski">t.morawski</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>antognolli+webkit</cc>
    
    <cc>cdumez</cc>
    
    <cc>g.czajkowski</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kenneth</cc>
    
    <cc>leandro</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>naginenis</cc>
    
    <cc>rakuco</cc>
    
    <cc>tmpsantos</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>607527</commentid>
    <comment_count>0</comment_count>
    <who name="Tomasz Morawski">t.morawski</who>
    <bug_when>2012-04-23 00:51:05 -0700</bug_when>
    <thetext>This is a master bug to track changes related to introduce of multiple private files in scope of changes:
- Move private function from ewk_private.h to corresponding private header files.
- Move structures form cpp files to corresponding private header files

This change was discused:  https://lists.webkit.org/pipermail/webkit-efl/2012-February/000132.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621366</commentid>
    <comment_count>1</comment_count>
      <attachid>141347</attachid>
    <who name="Tomasz Morawski">t.morawski</who>
    <bug_when>2012-05-11 01:03:31 -0700</bug_when>
    <thetext>Created attachment 141347
Move private function from ewk_private.h to corresponding private header files.

Patch change: move private function from ewk_private.h to corresponding private header files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621401</commentid>
    <comment_count>2</comment_count>
      <attachid>141347</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-05-11 01:55:06 -0700</bug_when>
    <thetext>Comment on attachment 141347
Move private function from ewk_private.h to corresponding private header files.

Though it is difficult to review because of huge patch, I like this refactoring. Looks fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621405</commentid>
    <comment_count>3</comment_count>
    <who name="Grzegorz Czajkowski">g.czajkowski</who>
    <bug_when>2012-05-11 02:02:09 -0700</bug_when>
    <thetext>LGTM too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621469</commentid>
    <comment_count>4</comment_count>
      <attachid>141347</attachid>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-05-11 03:56:04 -0700</bug_when>
    <thetext>Comment on attachment 141347
Move private function from ewk_private.h to corresponding private header files.

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

General comments:

When generating the docs, I&apos;m getting documentation for a lot of private headers. I think the idea of private headers is exactly the opposite: hide from the users so we don&apos;t make any commitment on these APIs.

I just realized that we are not enabling any kind of warning since security origin in not including the private header and I don&apos;t get any message. 

I tried a build here disabling all the possible things that we support disabling and it just worked. :)

Thanks for the patch.

&gt; Source/WebKit/efl/ewk/ewk_auth_soup_private.h:61
&gt; + */

Docs of private things should be moved to .cpp files and marked as @internal

&gt; Source/WebKit/efl/ewk/ewk_logging_private.h:1
&gt; +/*

I think the logging macros can stay on the &quot;global&quot; ewk_private.h

&gt; Source/WebKit/efl/ewk/ewk_private.h:28
&gt;  

The docs of this file needs to be updated. It says &quot;Private methods of WebKit-EFL.&quot; and now has only some declarations.

&gt; Source/WebKit/efl/ewk/ewk_security_origin_private.h:29
&gt; +// forward declarations

Nitpicking but I don&apos;t thing this kind of comments are necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621489</commentid>
    <comment_count>5</comment_count>
    <who name="Grzegorz Czajkowski">g.czajkowski</who>
    <bug_when>2012-05-11 04:55:22 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 141347 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=141347&amp;action=review
&gt; 
&gt; General comments:
&gt; 
&gt; When generating the docs, I&apos;m getting documentation for a lot of private headers. I think the idea of private headers is exactly the opposite: hide from the users so we don&apos;t make any commitment on these APIs. 

In my opinion private stuff should be documented as well. Application developer has only public headers that are installed to WebKit package so he doesn&apos;t see any docs from private file.

In case of generating docs based on Ewk sources I think using doxgen tag &apos;internal&apos; for each structure, function should satisfy us. It ensures that documentation won&apos;t be attached to the html files (it can be changed by edit doxygen config).
We can consider removing lines @file and @brief from private files. Then those files won&apos;t be included to final documentation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621500</commentid>
    <comment_count>6</comment_count>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-05-11 05:03:44 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; (From update of attachment 141347 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=141347&amp;action=review
&gt; &gt; 
&gt; &gt; General comments:
&gt; &gt; 
&gt; &gt; When generating the docs, I&apos;m getting documentation for a lot of private headers. I think the idea of private headers is exactly the opposite: hide from the users so we don&apos;t make any commitment on these APIs. 
&gt; 
&gt; In my opinion private stuff should be documented as well. Application developer has only public headers that are installed to WebKit package so he doesn&apos;t see any docs from private file.
&gt; 
&gt; In case of generating docs based on Ewk sources I think using doxgen tag &apos;internal&apos; for each structure, function should satisfy us. It ensures that documentation won&apos;t be attached to the html files (it can be changed by edit doxygen config).
&gt; We can consider removing lines @file and @brief from private files. Then those files won&apos;t be included to final documentation.

Yes, I agree that it should be documented. But _private.h things should not go to the generated HTML docs. We are in the same page.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621645</commentid>
    <comment_count>7</comment_count>
      <attachid>141418</attachid>
    <who name="Tomasz Morawski">t.morawski</who>
    <bug_when>2012-05-11 07:48:44 -0700</bug_when>
    <thetext>Created attachment 141418
Fixed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621702</commentid>
    <comment_count>8</comment_count>
      <attachid>141418</attachid>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-05-11 09:38:28 -0700</bug_when>
    <thetext>Comment on attachment 141418
Fixed

Hmmm, just noticed that ewk_logging.h wasn&apos;t removed from Source/WebKit/PlatformEfl.cmake and will probably break a &quot;make install&quot;.

Same for ewk_js.cpp which still includes &quot;ewk_logging.h&quot; and is broken. Try building with:
Tools/Scripts/build-webkit --efl --debug --cmakearg=&quot;-DSHARED_CORE=ON&quot; --netscape-plugin-api --device-orientation --touch-events --vibration --web-audio

Doxygen is still generating HTML for ewk_private.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>622716</commentid>
    <comment_count>9</comment_count>
      <attachid>141656</attachid>
    <who name="Tomasz Morawski">t.morawski</who>
    <bug_when>2012-05-14 00:03:14 -0700</bug_when>
    <thetext>Created attachment 141656
Fixed comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>622754</commentid>
    <comment_count>10</comment_count>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-05-14 01:54:14 -0700</bug_when>
    <thetext>LGTM. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>623017</commentid>
    <comment_count>11</comment_count>
      <attachid>141656</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-05-14 08:42:56 -0700</bug_when>
    <thetext>Comment on attachment 141656
Fixed comments

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

Looks good to me.

I commented nit.

&gt; Source/WebKit/efl/ewk/ewk_tiled_backing_store_private.h:24
&gt; +#include &quot;EWebKit.h&quot;

MIO, ewk_view.h looks better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>623093</commentid>
    <comment_count>12</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-05-14 10:39:08 -0700</bug_when>
    <thetext>The patch itself does seem fine -- even though I&apos;m OK with keeping things as is, it looks like more people favor this approach; since nothing&apos;s going to change to the users, I&apos;m fine with it.

But I would _really_ prefer if this bug served as a master one and we committed separate small changes instead of a bug 90kb patch -- for example, the ewk_logging changes can be committed first, then some header fixes etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>623356</commentid>
    <comment_count>13</comment_count>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-05-14 14:42:39 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; The patch itself does seem fine -- even though I&apos;m OK with keeping things as is, it looks like more people favor this approach; since nothing&apos;s going to change to the users, I&apos;m fine with it.
&gt; 
&gt; But I would _really_ prefer if this bug served as a master one and we committed separate small changes instead of a bug 90kb patch -- for example, the ewk_logging changes can be committed first, then some header fixes etc.

IMO is better if this commit lands atomically, since it can potentially cause conflicts. In essence, it&apos;s a refactoring and shall not introduce any regressions.

I&apos;m personally waiting for this one to contribute the Database API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>623416</commentid>
    <comment_count>14</comment_count>
      <attachid>141656</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-14 16:21:18 -0700</bug_when>
    <thetext>Comment on attachment 141656
Fixed comments

Rejecting attachment 141656 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:
wk/ewk_view_single.cpp
patching file Source/WebKit/efl/ewk/ewk_view_tiled.cpp
patching file Source/WebKit/efl/ewk/ewk_window_features.cpp
patching file Source/WebKit/efl/ewk/ewk_window_features_private.h
patching file Tools/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file Tools/DumpRenderTree/efl/DumpRenderTreeChrome.cpp

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;Antonio Go...&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue/

Full output: http://queues.webkit.org/results/12685474</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>623515</commentid>
    <comment_count>15</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-05-14 17:51:50 -0700</bug_when>
    <thetext>It looks you need to rebase.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>623745</commentid>
    <comment_count>16</comment_count>
      <attachid>141877</attachid>
    <who name="Tomasz Morawski">t.morawski</who>
    <bug_when>2012-05-15 00:30:17 -0700</bug_when>
    <thetext>Created attachment 141877
Rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>623750</commentid>
    <comment_count>17</comment_count>
    <who name="Tomasz Morawski">t.morawski</who>
    <bug_when>2012-05-15 00:36:19 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; The patch itself does seem fine -- even though I&apos;m OK with keeping things as is, it looks like more people favor this approach; since nothing&apos;s going to change to the users, I&apos;m fine with it.
&gt; 
&gt; But I would _really_ prefer if this bug served as a master one and we committed separate small changes instead of a bug 90kb patch -- for example, the ewk_logging changes can be committed first, then some header fixes etc.

I was care about your opinion especially, thank you for your review and understand of change background.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>623756</commentid>
    <comment_count>18</comment_count>
      <attachid>141877</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-05-15 00:46:12 -0700</bug_when>
    <thetext>Comment on attachment 141877
Rebased

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

There are many style nits in this patch. This style nits weren&apos;t fixed before. Can you fix style nits within no big changes?

http://trac.webkit.org/wiki/EFLWebKitCodingStyle

&gt; Source/WebKit/efl/ewk/ewk_auth_soup_private.h:36
&gt; +    GObject parent_instance;

Do not use _ in variable name.

&gt; Source/WebKit/efl/ewk/ewk_auth_soup_private.h:43
&gt; +GType ewk_auth_soup_dialog_get_type(void);

WebKit EFL adheres webkit coding style and C++ coding style except for public APIs. So, I think you need to remove void keyword in parameter.

&gt; Source/WebKit/efl/ewk/ewk_auth_soup_private.h:50
&gt; +void ewk_auth_soup_credentials_set(const char *username, const char *password, void *data);

Move &apos;*&apos; to data type side.

&gt; Source/WebKit/efl/ewk/ewk_frame_private.h:82
&gt; +WebCore::Frame *coreFrame(const Evas_Object *ewkFrame);

ditto.

&gt; Source/WebKit/efl/ewk/ewk_history_private.h:31
&gt; +Ewk_History_Item *ewk_history_item_new_from_core(WebCore::HistoryItem *core);

ditto.

&gt; Source/WebKit/efl/ewk/ewk_history_private.h:36
&gt; +WebCore::HistoryItem *coreHistoryItem(const Ewk_History_Item *ewkHistoryItem);

ditto.

&gt; Source/WebKit/efl/ewk/ewk_tiled_backing_store_private.h:63
&gt; +    Eina_Tiler *updates;    /**&lt; updated/dirty areas */

ditto.

&gt; Source/WebKit/efl/ewk/ewk_tiled_backing_store_private.h:77
&gt; +    Evas_Object *image;           /**&lt; Evas Image, the tile to be rendered */

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>623793</commentid>
    <comment_count>19</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-05-15 01:34:43 -0700</bug_when>
    <thetext>Please commit this one as soon as possible since it blocks other patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>623806</commentid>
    <comment_count>20</comment_count>
      <attachid>141877</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-05-15 01:43:13 -0700</bug_when>
    <thetext>Comment on attachment 141877
Rebased

Though I wanna fix style nits as well, this style nit doesn&apos;t come from this patch. Let&apos;s discuss it further.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>623850</commentid>
    <comment_count>21</comment_count>
      <attachid>141877</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-15 02:48:40 -0700</bug_when>
    <thetext>Comment on attachment 141877
Rebased

Clearing flags on attachment: 141877

Committed r117046: &lt;http://trac.webkit.org/changeset/117046&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>623851</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-15 02:48:47 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141347</attachid>
            <date>2012-05-11 01:03:31 -0700</date>
            <delta_ts>2012-05-11 07:48:44 -0700</delta_ts>
            <desc>Move private function from ewk_private.h to corresponding private header files.</desc>
            <filename>private.patch</filename>
            <type>text/plain</type>
            <size>88255</size>
            <attacher name="Tomasz Morawski">t.morawski</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZwppbmRleCBjN2Q2ZDhjLi4xYjQ0OTUzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNjIgQEAKKzIwMTItMDUtMTAgIFRvbWFzeiBNb3Jhd3NraSAgPHQubW9yYXdza2lA
c2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bRFJUXSBTcGxpdCBld2tfcHJpdmF0ZS5oIGZp
bGUgdG8gbXVsdGlwbGUgcHJpdmF0ZSBmaWxlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTg0NTcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3Bw
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHA6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNwcDoKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHA6CisgICAgICAgICogZXdr
L2V3a19hdXRoLmNwcDoKKyAgICAgICAgKiBld2svZXdrX2F1dGhfc291cC5jcHA6CisgICAgICAg
IChkZXRhY2gpOgorICAgICAgICAqIGV3ay9ld2tfYXV0aF9zb3VwX3ByaXZhdGUuaDogUmVuYW1l
ZCBmcm9tIFNvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfYXV0aF9zb3VwLmguCisgICAgICAgICog
ZXdrL2V3a19jb250ZXh0bWVudV9wcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgICogZXdrL2V3a19mcmFtZS5jcHA6CisgICAgICAgICogZXdrL2V3a19mcmFtZV9w
cml2YXRlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChFV0tQcml2YXRl
KToKKyAgICAgICAgKiBld2svZXdrX2hpc3RvcnkuY3BwOgorICAgICAgICAqIGV3ay9ld2tfaGlz
dG9yeV9wcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChFV0tQ
cml2YXRlKToKKyAgICAgICAgKiBld2svZXdrX2pzX3ByaXZhdGUuaDogQWRkZWQuCisgICAgICAg
IChfRXdrX0pTX09iamVjdCk6CisgICAgICAgICogZXdrL2V3a19sb2dnaW5nX3ByaXZhdGUuaDog
UmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbG9nZ2luZy5oLgorICAgICAg
ICAqIGV3ay9ld2tfbWFpbi5jcHA6CisgICAgICAgICogZXdrL2V3a19uZXR3b3JrLmNwcDoKKyAg
ICAgICAgKiBld2svZXdrX3ByaXZhdGUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAq
IGV3ay9ld2tfc2VjdXJpdHlfb3JpZ2luX3ByaXZhdGUuaDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKiBld2svZXdrX3NldHRpbmdzLmNwcDoKKyAgICAgICAgKiBld2svZXdr
X3NldHRpbmdzX3ByaXZhdGUuaDogQWRkZWQuCisgICAgICAgICogZXdrL2V3a190aWxlZF9iYWNr
aW5nX3N0b3JlLmNwcDoKKyAgICAgICAgKF9Fd2tfVGlsZWRfQmFja2luZ19TdG9yZV9JdGVtKToK
KyAgICAgICAgKiBld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJpdmF0ZS5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9iYWNraW5nX3N0b3JlLmguCisg
ICAgICAgIChfRXdrX1RpbGVfU3RhdHMpOgorICAgICAgICAoX0V3a19UaWxlKToKKyAgICAgICAg
KiBld2svZXdrX3RpbGVkX21hdHJpeC5jcHA6CisgICAgICAgICogZXdrL2V3a190aWxlZF9tYXRy
aXhfcHJpdmF0ZS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190aWxl
ZF9tYXRyaXguaC4KKyAgICAgICAgKiBld2svZXdrX3RpbGVkX21vZGVsLmNwcDoKKyAgICAgICAg
KHRpbGVfYWNjb3VudCk6CisgICAgICAgICogZXdrL2V3a190aWxlZF9tb2RlbF9wcml2YXRlLmg6
IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX21vZGVsLmguCisg
ICAgICAgICogZXdrL2V3a190aWxlZF9wcml2YXRlLmg6CisgICAgICAgICogZXdrL2V3a191dGls
LmNwcDoKKyAgICAgICAgKiBld2svZXdrX3V0aWxfcHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAg
KiBld2svZXdrX3ZpZXcuY3BwOgorICAgICAgICAoX0V3a19WaWV3X1ByaXZhdGVfRGF0YSk6Cisg
ICAgICAgICogZXdrL2V3a192aWV3X3ByaXZhdGUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKEVXS1ByaXZhdGUpOgorICAgICAgICAqIGV3ay9ld2tfdmlld19zaW5nbGUu
Y3BwOgorICAgICAgICAqIGV3ay9ld2tfdmlld190aWxlZC5jcHA6CisgICAgICAgICogZXdrL2V3
a193aW5kb3dfZmVhdHVyZXMuY3BwOgorICAgICAgICAqIGV3ay9ld2tfd2luZG93X2ZlYXR1cmVz
X3ByaXZhdGUuaDogQWRkZWQuCisKIDIwMTItMDUtMTAgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5n
LmtpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBNb3ZlIHJlc3VtZUFuaW1hdGlvbnMgdG8gdXNl
IEludGVybmFscyBpbnRlcmZhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3Jl
U3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwCmluZGV4IDFlNzYxMGEuLjlmZGU5ZjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZs
LmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkZpbGVDaG9vc2VyLmgiCiAjaW5jbHVk
ZSAiRmlsZUljb25Mb2FkZXIuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJG
cmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJD
bGllbnRFZmwuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCkBAIC01MCw3ICs1MSw5IEBA
CiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJWaWV3cG9ydEFyZ3VtZW50
cy5oIgogI2luY2x1ZGUgIldpbmRvd0ZlYXR1cmVzLmgiCisjaW5jbHVkZSAiZXdrX2ZyYW1lX3By
aXZhdGUuaCIKICNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a192aWV3X3By
aXZhdGUuaCIKICNpbmNsdWRlIDxFY29yZV9FdmFzLmg+CiAjaW5jbHVkZSA8RXZhcy5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZs
L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwCmluZGV4
IDE0ODZjYmMuLjhjZGJkMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVT
dXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9l
ZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcApAQCAtMjIsNyAr
MjIsMTAgQEAKICNpbmNsdWRlICJEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaCIKIAogI2luY2x1
ZGUgIkZyYW1lTG9hZGVyQ2xpZW50RWZsLmgiCisjaW5jbHVkZSAiZXdrX2ZyYW1lX3ByaXZhdGUu
aCIKKyNpbmNsdWRlICJld2tfaGlzdG9yeV9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3ByaXZh
dGUuaCIKKyNpbmNsdWRlICJld2tfdmlld19wcml2YXRlLmgiCiAKICNpbmNsdWRlIDxBbmltYXRp
b25Db250cm9sbGVyLmg+CiAjaW5jbHVkZSA8Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmg+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGll
bnRFZmwuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50
RWZsLmNwcAppbmRleCA5MjE3Y2MxLi4yZTljNTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2VmbC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5jcHAKQEAgLTM1LDcgKzM1LDkg
QEAKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlVuZG9TdGVwLmgiCiAjaW5jbHVk
ZSAiV2luZG93c0tleWJvYXJkQ29kZXMuaCIKKyNpbmNsdWRlICJld2tfZnJhbWVfcHJpdmF0ZS5o
IgogI2luY2x1ZGUgImV3a19wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0ZS5o
IgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwIGIvU291cmNlL1dl
YktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwCmluZGV4IDUx
ODVkMWUuLmU0NTZiNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAKQEAgLTUzLDggKzUzLDExIEBACiAj
aW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5j
bHVkZSAiV2ViS2l0VmVyc2lvbi5oIgotI2luY2x1ZGUgImV3a19sb2dnaW5nLmgiCisjaW5jbHVk
ZSAiZXdrX2ZyYW1lX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfbG9nZ2luZ19wcml2YXRlLmgi
CiAjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfc2V0dGluZ3NfcHJpdmF0
ZS5oIgorI2luY2x1ZGUgImV3a192aWV3X3ByaXZhdGUuaCIKICNpbmNsdWRlIDxFY29yZV9FdmFz
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0NvbmNhdGVuYXRlLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X2F1dGguY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19hdXRoLmNwcAppbmRleCBhZjIx
NzJhLi4xNTBiOGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2F1dGgu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfYXV0aC5jcHAKQEAgLTIwLDcgKzIw
LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJld2tfYXV0aC5oIgogCi0jaW5j
bHVkZSAiZXdrX2F1dGhfc291cC5oIgorI2luY2x1ZGUgImV3a19hdXRoX3NvdXBfcHJpdmF0ZS5o
IgogCiB2b2lkIGV3a19hdXRoX3Nob3dfZGlhbG9nX2NhbGxiYWNrX3NldChFd2tfQXV0aF9TaG93
X0RpYWxvZ19DYWxsYmFjayBjYWxsYmFjaykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
ZWZsL2V3ay9ld2tfYXV0aF9zb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfYXV0
aF9zb3VwLmNwcAppbmRleCBkODU0MjdkLi5kYTA0NGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2VmbC9ld2svZXdrX2F1dGhfc291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a19hdXRoX3NvdXAuY3BwCkBAIC0xOSwxOCArMTksMTQgQEAKICovCiAKICNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJld2tfYXV0aF9zb3VwLmgiCisjaW5jbHVkZSAiZXdrX2F1dGhf
c291cF9wcml2YXRlLmgiCiAKICNpbmNsdWRlICJld2tfYXV0aC5oIgotI2luY2x1ZGUgImV3a19s
b2dnaW5nLmgiCisjaW5jbHVkZSAiZXdrX2xvZ2dpbmdfcHJpdmF0ZS5oIgogI2luY2x1ZGUgPGds
aWItb2JqZWN0Lmg+CiAjaW5jbHVkZSA8Z2xpYi5oPgogI2luY2x1ZGUgPGxpYnNvdXAvc291cC5o
PgogCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KIC8qKgogICog
I0V3a19Tb3VwX0F1dGhfRGlhbG9nIGlzIGEgI1NvdXBTZXNzaW9uRmVhdHVyZSB0aGF0IHlvdSBj
YW4gYXR0YWNoIHRvIHlvdXIKICAqICNTb3VwU2Vzc2lvbiB0byBwcm92aWRlIGEgc2ltcGxlIGF1
dGhlbnRpY2F0aW9uIGRpYWxvZyB3aGlsZQpAQCAtMTI4LDcgKzEyNCwzIEBAIHN0YXRpYyB2b2lk
IGRldGFjaChTb3VwU2Vzc2lvbkZlYXR1cmUqIG1hbmFnZXIsIFNvdXBTZXNzaW9uKiBzZXNzaW9u
KQogewogICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhzZXNzaW9uLCAo
dm9pZCopc2Vzc2lvbl9hdXRoZW50aWNhdGUsIG1hbmFnZXIpOwogfQotCi0jaWZkZWYgX19jcGx1
c3BsdXMKLX0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19h
dXRoX3NvdXAuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfYXV0aF9zb3VwLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJkMjZiMDQuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a19hdXRoX3NvdXAuaAorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAg
QEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA5IElnYWxpYSBTLkwuCi0gICAgQ29weXJpZ2h0
IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKLQotICAgIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAgIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgotICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAg
ICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAg
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gICAg
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0jaWZuZGVmIGV3a19hdXRoX3NvdXBf
aAotI2RlZmluZSBld2tfYXV0aF9zb3VwX2gKLQotI2luY2x1ZGUgImV3a19hdXRoLmgiCi0jaW5j
bHVkZSA8Z2xpYi1vYmplY3QuaD4KLSNpbmNsdWRlIDxnbGliLmg+Ci0KLSNpZmRlZiBfX2NwbHVz
cGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLQotI2RlZmluZSBFV0tfVFlQRV9TT1VQX0FVVEhf
RElBTE9HICAgICAgICAgICAgKGV3a19hdXRoX3NvdXBfZGlhbG9nX2dldF90eXBlKCkpCi0jZGVm
aW5lIEVXS19TT1VQX0FVVEhfRElBTE9HKG9iamVjdCkgICAgICAgICAoR19UWVBFX0NIRUNLX0lO
U1RBTkNFX0NBU1QoKG9iamVjdCksIEVXS19UWVBFX1NPVVBfQVVUSF9ESUFMT0csIEV3a19Tb3Vw
X0F1dGhfRGlhbG9nKSkKLSNkZWZpbmUgRVdLX1NPVVBfQVVUSF9ESUFMT0dfQ0xBU1Moa2xhc3Mp
ICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCBFV0tfVFlQRV9TT1VQX0FVVEhf
RElBTE9HLCBFd2tfU291cF9BdXRoX0RpYWxvZykpCi0jZGVmaW5lIEVXS19JU19TT1VQX0FVVEhf
RElBTE9HKG9iamVjdCkgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iamVjdCks
IEVXS19UWVBFX1NPVVBfQVVUSF9ESUFMT0cpKQotI2RlZmluZSBFV0tfSVNfU09VUF9BVVRIX0RJ
QUxPR19DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksIEVXS19U
WVBFX1NPVVBfQVVUSF9ESUFMT0cpKQotI2RlZmluZSBFV0tfU09VUF9BVVRIX0RJQUxPR19HRVRf
Q0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksIEVXS19UWVBFX1NP
VVBfQVVUSF9ESUFMT0csIEV3a19Tb3VwX0F1dGhfRGlhbG9nKSkKLQotdHlwZWRlZiBzdHJ1Y3Qg
ewotICAgIEdPYmplY3QgcGFyZW50X2luc3RhbmNlOwotfSBFd2tfU291cF9BdXRoX0RpYWxvZzsK
LQotdHlwZWRlZiBzdHJ1Y3QgewotICAgIEdPYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7Ci19IEV3
a19Tb3VwX0F1dGhfRGlhbG9nQ2xhc3M7Ci0KLUdUeXBlIGV3a19hdXRoX3NvdXBfZGlhbG9nX2dl
dF90eXBlKHZvaWQpOwotCi0vKioKLSAqICBTZXRzIGNhbGxiYWNrIHRvIGJlIGNhbGxlZCB3aGVu
IGF1dGhlbnRpY2F0aW9uIGlzIHJlcXVpcmVkLgotICovCi12b2lkIGV3a19hdXRoX3NvdXBfc2hv
d19kaWFsb2dfY2FsbGJhY2tfc2V0KEV3a19BdXRoX1Nob3dfRGlhbG9nX0NhbGxiYWNrIGNhbGxi
YWNrKTsKLQotLyoqCi0gKiAgTWV0aG9kIGZvciBzZXR0aW5nIGNyZWRlbnRpYWxzCi0gKgotICog
IEBwYXJhbSB1c2VybmFtZSB1c2VybmFtZQotICogIEBwYXJhbSBwYXNzd29yZCBwYXNzd29yZAot
ICogIEBwYXJhbSBkYXRhIHNvdXAgYXV0aGVudGljYXRpb24gZGF0YQotICovCi12b2lkIGV3a19h
dXRoX3NvdXBfY3JlZGVudGlhbHNfc2V0KGNvbnN0IGNoYXIgKnVzZXJuYW1lLCBjb25zdCBjaGFy
ICpwYXNzd29yZCwgdm9pZCAqZGF0YSk7Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlm
Ci0KLSNlbmRpZiAvLyBld2tfYXV0aF9zb3VwX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
ZWZsL2V3ay9ld2tfYXV0aF9zb3VwX3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfYXV0aF9zb3VwX3ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5lYWRiYTI2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19h
dXRoX3NvdXBfcHJpdmF0ZS5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgICAgQ29weXJpZ2h0IChD
KSAyMDA5IElnYWxpYSBTLkwuCisgICAgQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ry
b25pY3MKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCisqLworCisvKioKKyAqIEBmaWxlICAgIGV3a19hdXRoX3NvdXBfcHJpdmF0ZV9oCisgKiBA
YnJpZWYgICBQcml2YXRlIG1ldGhvZHMgb2YgYXV0aCBzb3VwLgorICovCisKKyNpZm5kZWYgZXdr
X2F1dGhfc291cF9wcml2YXRlX2gKKyNkZWZpbmUgZXdrX2F1dGhfc291cF9wcml2YXRlX2gKKwor
I2luY2x1ZGUgImV3a19hdXRoLmgiCisjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KKyNpbmNsdWRl
IDxnbGliLmg+CisKKyNkZWZpbmUgRVdLX1RZUEVfU09VUF9BVVRIX0RJQUxPRyAgICAgICAgICAg
IChld2tfYXV0aF9zb3VwX2RpYWxvZ19nZXRfdHlwZSgpKQorI2RlZmluZSBFV0tfU09VUF9BVVRI
X0RJQUxPRyhvYmplY3QpICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmpl
Y3QpLCBFV0tfVFlQRV9TT1VQX0FVVEhfRElBTE9HLCBFd2tfU291cF9BdXRoX0RpYWxvZykpCisj
ZGVmaW5lIEVXS19TT1VQX0FVVEhfRElBTE9HX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNL
X0NMQVNTX0NBU1QoKGtsYXNzKSwgRVdLX1RZUEVfU09VUF9BVVRIX0RJQUxPRywgRXdrX1NvdXBf
QXV0aF9EaWFsb2cpKQorI2RlZmluZSBFV0tfSVNfU09VUF9BVVRIX0RJQUxPRyhvYmplY3QpICAg
ICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmplY3QpLCBFV0tfVFlQRV9TT1VQX0FV
VEhfRElBTE9HKSkKKyNkZWZpbmUgRVdLX0lTX1NPVVBfQVVUSF9ESUFMT0dfQ0xBU1Moa2xhc3Mp
IChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCBFV0tfVFlQRV9TT1VQX0FVVEhfRElB
TE9HKSkKKyNkZWZpbmUgRVdLX1NPVVBfQVVUSF9ESUFMT0dfR0VUX0NMQVNTKG9iaikgIChHX1RZ
UEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCBFV0tfVFlQRV9TT1VQX0FVVEhfRElBTE9HLCBF
d2tfU291cF9BdXRoX0RpYWxvZykpCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBHT2JqZWN0IHBh
cmVudF9pbnN0YW5jZTsKK30gRXdrX1NvdXBfQXV0aF9EaWFsb2c7CisKK3R5cGVkZWYgc3RydWN0
IHsKKyAgICBHT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOworfSBFd2tfU291cF9BdXRoX0RpYWxv
Z0NsYXNzOworCitHVHlwZSBld2tfYXV0aF9zb3VwX2RpYWxvZ19nZXRfdHlwZSh2b2lkKTsKKwor
LyoqCisgKiAgU2V0cyBjYWxsYmFjayB0byBiZSBjYWxsZWQgd2hlbiBhdXRoZW50aWNhdGlvbiBp
cyByZXF1aXJlZC4KKyAqLwordm9pZCBld2tfYXV0aF9zb3VwX3Nob3dfZGlhbG9nX2NhbGxiYWNr
X3NldChFd2tfQXV0aF9TaG93X0RpYWxvZ19DYWxsYmFjayBjYWxsYmFjayk7CisKKy8qKgorICog
IE1ldGhvZCBmb3Igc2V0dGluZyBjcmVkZW50aWFscworICoKKyAqICBAcGFyYW0gdXNlcm5hbWUg
dXNlcm5hbWUKKyAqICBAcGFyYW0gcGFzc3dvcmQgcGFzc3dvcmQKKyAqICBAcGFyYW0gZGF0YSBz
b3VwIGF1dGhlbnRpY2F0aW9uIGRhdGEKKyAqLwordm9pZCBld2tfYXV0aF9zb3VwX2NyZWRlbnRp
YWxzX3NldChjb25zdCBjaGFyICp1c2VybmFtZSwgY29uc3QgY2hhciAqcGFzc3dvcmQsIHZvaWQg
KmRhdGEpOworCisjZW5kaWYgLy8gZXdrX2F1dGhfc291cF9wcml2YXRlX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfY29udGV4dG1lbnVfcHJpdmF0ZS5oIGIvU291cmNl
L1dlYktpdC9lZmwvZXdrL2V3a19jb250ZXh0bWVudV9wcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uNzIyNmIwNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfY29udGV4dG1lbnVfcHJpdmF0ZS5oCkBAIC0wLDAgKzEsNDMgQEAK
Ky8qCisgICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3Rl
bXMKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAg
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
KyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKwor
LyoqCisgKiBAZmlsZSAgICBld2tfY29udGV4dG1lbnVfcHJpdmF0ZS5oCisgKiBAYnJpZWYgICBQ
cml2YXRlIG1ldGhvZHMgb2YgRVdLIGNvbnRleHQgbWVudS4KKyAqLworCisjaWZuZGVmIGV3a19j
b250ZXh0bWVudV9wcml2YXRlX2gKKyNkZWZpbmUgZXdrX2NvbnRleHRtZW51X3ByaXZhdGVfaAor
CisvLyBmb3J3YXJkIGRlY2xhcmF0aW9ucworbmFtZXNwYWNlIFdlYkNvcmUgeworc3RydWN0IENv
bnRleHRNZW51Oworc3RydWN0IENvbnRleHRNZW51SXRlbTsKK30KKworI2lmIEVOQUJMRShDT05U
RVhUX01FTlVTKQorRXdrX0NvbnRleHRfTWVudSogZXdrX2NvbnRleHRfbWVudV9uZXcoRXZhc19P
YmplY3QqIHZpZXcsIFdlYkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxlciogY29udHJvbGxlcik7
Citib29sIGV3a19jb250ZXh0X21lbnVfZnJlZShFd2tfQ29udGV4dF9NZW51KiBtZW51KTsKK3Zv
aWQgZXdrX2NvbnRleHRfbWVudV9pdGVtX2FwcGVuZChFd2tfQ29udGV4dF9NZW51KiBtZW51LCBX
ZWJDb3JlOjpDb250ZXh0TWVudUl0ZW0mIGNvcmUpOworRXdrX0NvbnRleHRfTWVudSogZXdrX2Nv
bnRleHRfbWVudV9jdXN0b21pemUoRXdrX0NvbnRleHRfTWVudSogbWVudSk7Cit2b2lkIGV3a19j
b250ZXh0X21lbnVfc2hvdyhFd2tfQ29udGV4dF9NZW51KiBtZW51KTsKKyNlbmRpZgorCisjZW5k
aWYgLy8gZXdrX2NvbnRleHRfbWFudV9wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFt
ZS5jcHAKaW5kZXggOTY0YjY5Mi4uMjUwMDk1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a19mcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFt
ZS5jcHAKQEAgLTUwLDEzICs1MCwxOCBAQAogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2lu
Y2x1ZGUgIlN1YnN0aXR1dGVEYXRhLmgiCiAjaW5jbHVkZSAiV2luZG93c0tleWJvYXJkQ29kZXMu
aCIKLSNpbmNsdWRlICJld2tfbG9nZ2luZy5oIgorI2luY2x1ZGUgImV3a19mcmFtZV9wcml2YXRl
LmgiCisjaW5jbHVkZSAiZXdrX2xvZ2dpbmdfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19wcml2
YXRlLmgiCisjaW5jbHVkZSAiZXdrX3NlY3VyaXR5X29yaWdpbl9wcml2YXRlLmgiCisjaW5jbHVk
ZSAiZXdrX3ZpZXdfcHJpdmF0ZS5oIgogI2luY2x1ZGUgPEVpbmEuaD4KICNpbmNsdWRlIDxFdmFz
Lmg+CiAjaW5jbHVkZSA8ZWluYV9zYWZldHlfY2hlY2tzLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2Vy
dGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgogCiBzdGF0aWMgY29uc3QgY2hhciBFV0tfRlJBTUVfVFlQRV9TVFJbXSA9ICJFV0tfRnJh
bWUiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZV9wcml2YXRl
LmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lX3ByaXZhdGUuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NGIwMTBhCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZV9wcml2YXRlLmgKQEAgLTAsMCArMSw5MSBAQAor
LyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVt
cworICAgIENvcHlyaWdodCAoQykgMjAwOS0yMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAg
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisv
KioKKyAqIEBmaWxlICAgIGV3a19mcmFtZV9wcml2YXRlLmgKKyAqIEBicmllZiAgIFByaXZhdGUg
bWV0aG9kcyBvZiBFV0sgZnJhbWUuCisgKi8KKworI2lmbmRlZiBld2tfZnJhbWVfcHJpdmF0ZV9o
CisjZGVmaW5lIGV3a19mcmFtZV9wcml2YXRlX2gKKworI2luY2x1ZGUgImV3a19mcmFtZS5oIgor
I2luY2x1ZGUgPEV2YXMuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgV2lkZ2V0OworY2xh
c3MgRnJhbWU7Cit9CisKK0V2YXNfT2JqZWN0KiBld2tfZnJhbWVfYWRkKEV2YXMqIGNhbnZhcyk7
Citib29sIGV3a19mcmFtZV9pbml0KEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgRXZhc19PYmplY3Qq
IHZpZXcsIFdlYkNvcmU6OkZyYW1lKiBmcmFtZSk7Citib29sIGV3a19mcmFtZV9jaGlsZF9hZGQo
RXZhc19PYmplY3QqIGV3a0ZyYW1lLCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNo
aWxkLCBjb25zdCBXVEY6OlN0cmluZyYgbmFtZSwgY29uc3QgV2ViQ29yZTo6S1VSTCYgdXJsLCBj
b25zdCBXVEY6OlN0cmluZyYgcmVmZXJyZXIpOwordm9pZCBld2tfZnJhbWVfdmlld19zZXQoRXZh
c19PYmplY3QqIGV3a0ZyYW1lLCBFdmFzX09iamVjdCogbmV3UGFyZW50KTsKKwordm9pZCBld2tf
ZnJhbWVfY29yZV9nb25lKEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7CisKK3ZvaWQgZXdrX2ZyYW1l
X2xvYWRfY29tbWl0dGVkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7Cit2b2lkIGV3a19mcmFtZV9s
b2FkX3N0YXJ0ZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKK3ZvaWQgZXdrX2ZyYW1lX2xvYWRf
cHJvdmlzaW9uYWwoRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKK3ZvaWQgZXdrX2ZyYW1lX2xvYWRf
Zmlyc3RsYXlvdXRfZmluaXNoZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKK3ZvaWQgZXdrX2Zy
YW1lX2xvYWRfZmlyc3RsYXlvdXRfbm9uZW1wdHlfZmluaXNoZWQoRXZhc19PYmplY3QqIGV3a0Zy
YW1lKTsKK3ZvaWQgZXdrX2ZyYW1lX2xvYWRfZG9jdW1lbnRfZmluaXNoZWQoRXZhc19PYmplY3Qq
IGV3a0ZyYW1lKTsKK3ZvaWQgZXdrX2ZyYW1lX2xvYWRfZmluaXNoZWQoRXZhc19PYmplY3QqIGV3
a0ZyYW1lLCBjb25zdCBjaGFyKiBlcnJvckRvbWFpbiwgaW50IGVycm9yQ29kZSwgYm9vbCBpc0Nh
bmNlbGxhdGlvbiwgY29uc3QgY2hhciogZXJyb3JEZXNjcmlwdGlvbiwgY29uc3QgY2hhciogZmFp
bGluZ1VybCk7Cit2b2lkIGV3a19mcmFtZV9sb2FkX3Jlc291cmNlX2ZpbmlzaGVkKEV2YXNfT2Jq
ZWN0KiBld2tGcmFtZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKK3ZvaWQgZXdrX2ZyYW1l
X2xvYWRfcmVzb3VyY2VfZmFpbGVkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgRXdrX0ZyYW1lX0xv
YWRfRXJyb3IqIGVycm9yKTsKK3ZvaWQgZXdrX2ZyYW1lX2xvYWRfZXJyb3IoRXZhc19PYmplY3Qq
IGV3a0ZyYW1lLCBjb25zdCBjaGFyKiBlcnJvckRvbWFpbiwgaW50IGVycm9yQ29kZSwgYm9vbCBp
c0NhbmNlbGxhdGlvbiwgY29uc3QgY2hhciogZXJyb3JEZXNjcmlwdGlvbiwgY29uc3QgY2hhciog
ZmFpbGluZ1VybCk7Cit2b2lkIGV3a19mcmFtZV9sb2FkX3Byb2dyZXNzX2NoYW5nZWQoRXZhc19P
YmplY3QqIGV3a0ZyYW1lKTsKKwordm9pZCBld2tfZnJhbWVfcmVkaXJlY3RfY2FuY2VsbGVkKEV2
YXNfT2JqZWN0KiBld2tGcmFtZSk7Cit2b2lkIGV3a19mcmFtZV9yZWRpcmVjdF9wcm92aXNpb25h
bF9sb2FkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7Cit2b2lkIGV3a19mcmFtZV9yZWRpcmVjdF9y
ZXF1ZXN0ZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjb25zdCBjaGFyKiB1cmwpOwordm9pZCBl
d2tfZnJhbWVfcmVxdWVzdF93aWxsX3NlbmQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBFd2tfRnJh
bWVfUmVzb3VyY2VfTWVzc2FnZXMqIG1lc3NhZ2VzKTsKK3ZvaWQgZXdrX2ZyYW1lX3JlcXVlc3Rf
YXNzaWduX2lkZW50aWZpZXIoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjb25zdCBFd2tfRnJhbWVf
UmVzb3VyY2VfUmVxdWVzdCogcmVxdWVzdCk7Cit2b2lkIGV3a19mcmFtZV9yZXNwb25zZV9yZWNl
aXZlZChFdmFzX09iamVjdCogZXdrRnJhbWUsIEV3a19GcmFtZV9SZXNvdXJjZV9SZXNwb25zZSog
cmVzcG9uc2UpOwordm9pZCBld2tfZnJhbWVfdmlld19zdGF0ZV9zYXZlKEV2YXNfT2JqZWN0KiBl
d2tGcmFtZSwgV2ViQ29yZTo6SGlzdG9yeUl0ZW0qIGl0ZW0pOworCit2b2lkIGV3a19mcmFtZV9k
aWRfcGVyZm9ybV9maXJzdF9uYXZpZ2F0aW9uKEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7CisKK3Zv
aWQgZXdrX2ZyYW1lX2NvbnRlbnRzX3NpemVfY2hhbmdlZChFdmFzX09iamVjdCogZXdrRnJhbWUs
IEV2YXNfQ29vcmQgd2lkdGgsIEV2YXNfQ29vcmQgaGVpZ2h0KTsKK3ZvaWQgZXdrX2ZyYW1lX3Rp
dGxlX3NldChFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IGNoYXIqIHRpdGxlKTsKKwordm9p
ZCBld2tfZnJhbWVfdmlld19jcmVhdGVfZm9yX3ZpZXcoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBF
dmFzX09iamVjdCogdmlldyk7Citib29sIGV3a19mcmFtZV91cmlfY2hhbmdlZChFdmFzX09iamVj
dCogZXdrRnJhbWUpOwordm9pZCBld2tfZnJhbWVfZm9yY2VfbGF5b3V0KEV2YXNfT2JqZWN0KiBl
d2tGcmFtZSk7Cit2b2lkIGV3a19mcmFtZV9pY29uX2NoYW5nZWQoRXZhc19PYmplY3QqIGV3a0Zy
YW1lKTsKKworV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gZXdrX2ZyYW1lX3BsdWdp
bl9jcmVhdGUoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBw
bHVnaW5TaXplLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCogZWxlbWVudCwgY29uc3QgV2Vi
Q29yZTo6S1VSTCYgdXJsLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFtTmFt
ZXMsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGNvbnN0IFdU
Rjo6U3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBsb2FkTWFudWFsbHkpOworCit2b2lkIGV3a19mcmFt
ZV9lZGl0b3JfY2xpZW50X2NvbnRlbnRzX2NoYW5nZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsK
K3ZvaWQgZXdrX2ZyYW1lX2VkaXRvcl9jbGllbnRfc2VsZWN0aW9uX2NoYW5nZWQoRXZhc19PYmpl
Y3QqIGV3a0ZyYW1lKTsKKwordm9pZCBld2tfZnJhbWVfbWl4ZWRfY29udGVudF9kaXNwbGF5ZWRf
c2V0KEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgYm9vbCBoYXNEaXNwbGF5ZWQpOwordm9pZCBld2tf
ZnJhbWVfbWl4ZWRfY29udGVudF9ydW5fc2V0KEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgYm9vbCBo
YXNSdW4pOworCit2b2lkIGV3a19mcmFtZV94c3NfZGV0ZWN0ZWQoRXZhc19PYmplY3QqIGV3a0Zy
YW1lLCBjb25zdCBFd2tfRnJhbWVfWHNzX05vdGlmaWNhdGlvbiogeHNzSW5mbyk7CisKK25hbWVz
cGFjZSBFV0tQcml2YXRlIHsKK1dlYkNvcmU6OkZyYW1lICpjb3JlRnJhbWUoY29uc3QgRXZhc19P
YmplY3QgKmV3a0ZyYW1lKTsKK0V2YXNfT2JqZWN0KiBraXRGcmFtZShjb25zdCBXZWJDb3JlOjpG
cmFtZSogY29yZUZyYW1lKTsKK30gLy8gbmFtZXNwYWNlIEVXS1ByaXZhdGUKKworI2VuZGlmIC8v
IGV3a19mcmFtZV9wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfaGlzdG9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2hpc3RvcnkuY3BwCmlu
ZGV4IDFhNGU5YjcuLmE5NTFlNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfaGlzdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19oaXN0b3J5LmNw
cApAQCAtMjgsOSArMjgsMTAgQEAKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiUGFn
ZS5oIgogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgotI2luY2x1ZGUgImV3a19sb2dnaW5nLmgiCisj
aW5jbHVkZSAiZXdrX2hpc3RvcnlfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a19sb2dnaW5nX3By
aXZhdGUuaCIKICNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgotI2luY2x1ZGUgImV3a191dGlsLmgi
CisjaW5jbHVkZSAiZXdrX3V0aWxfcHJpdmF0ZS5oIgogI2luY2x1ZGUgPEVpbmEuaD4KICNpbmNs
dWRlIDxlaW5hX3NhZmV0eV9jaGVja3MuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2hpc3RvcnlfcHJpdmF0ZS5o
IGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19oaXN0b3J5X3ByaXZhdGUuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNGE4YTZjCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a19oaXN0b3J5X3ByaXZhdGUuaApAQCAtMCwwICsxLDQ0IEBA
CisvKgorICAgIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0
ZW1zCisgICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworCisg
ICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAg
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisK
Ky8qKgorICogQGZpbGUgICAgZXdrX2hpc3RvcnlfcHJpdmF0ZS5oCisgKiBAYnJpZWYgICBQcml2
YXRlIG1ldGhvZHMgb2YgRVdLIGhpc3RvcnkuCisgKi8KKworI2lmbmRlZiBld2tfaGlzdG9yeV9w
cml2YXRlX2gKKyNkZWZpbmUgZXdrX2hpc3RvcnlfcHJpdmF0ZV9oCisKKyNpbmNsdWRlICJCYWNr
Rm9yd2FyZExpc3RJbXBsLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEhpc3RvcnlJ
dGVtOworY2xhc3MgQmFja0ZvcndhcmRMaXN0SW1wbDsKK30KKworRXdrX0hpc3RvcnlfSXRlbSAq
ZXdrX2hpc3RvcnlfaXRlbV9uZXdfZnJvbV9jb3JlKFdlYkNvcmU6Okhpc3RvcnlJdGVtICpjb3Jl
KTsKK0V3a19IaXN0b3J5KiBld2tfaGlzdG9yeV9uZXcoV2ViQ29yZTo6QmFja0ZvcndhcmRMaXN0
SW1wbCogaGlzdG9yeSk7Cit2b2lkIGV3a19oaXN0b3J5X2ZyZWUoRXdrX0hpc3RvcnkqIGhpc3Rv
cnkpOworCituYW1lc3BhY2UgRVdLUHJpdmF0ZSB7CitXZWJDb3JlOjpIaXN0b3J5SXRlbSAqY29y
ZUhpc3RvcnlJdGVtKGNvbnN0IEV3a19IaXN0b3J5X0l0ZW0gKmV3a0hpc3RvcnlJdGVtKTsKK30g
Ly8gbmFtZXNwYWNlIEVXS1ByaXZhdGUKKworI2VuZGlmIC8vIGV3a19oaXN0b3J5X3ByaXZhdGVf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19qc19wcml2YXRlLmggYi9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2pzX3ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi41MTg4ZTcxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a19qc19wcml2YXRlLmgKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAgICBDb3B5
cmlnaHQgKEMpIDIwMDktMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcworICAgIENvcHly
aWdodCAoQykgMjAwOS0yMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisvKioKKyAqIEBmaWxl
ICAgIGV3a19qc19wcml2YXRlLmgKKyAqIEBicmllZiAgIFByaXZhdGUgbWV0aG9kcyBvZiBFV0sg
anMuCisgKi8KKworI2lmbmRlZiBld2tfanNfcHJpdmF0ZV9oCisjZGVmaW5lIGV3a19qc19wcml2
YXRlX2gKKworI2luY2x1ZGUgIk5QX2pzb2JqZWN0LmgiCisjaW5jbHVkZSAiZXdrX2pzLmgiCisK
KyNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKKyNkZWZpbmUgRVdLX0pTX09CSkVDVF9N
QUdJQyAweDY5Njk2OQorCit0eXBlZGVmIHN0cnVjdCBfRXdrX0pTX0NsYXNzIEV3a19KU19DbGFz
czsKK3N0cnVjdCBfRXdrX0pTX09iamVjdCB7CisgICAgSmF2YVNjcmlwdE9iamVjdCBiYXNlOwor
ICAgIGNvbnN0IGNoYXIqIG5hbWU7CisgICAgY29uc3QgRXdrX0pTX0NsYXNzKiBjbHM7CisgICAg
RWluYV9IYXNoKiBwcm9wZXJ0aWVzOworICAgIEV2YXNfT2JqZWN0KiB2aWV3OyAvLyBld2tfdmll
dzogY2hlY2sgaWYgdGhpcyBvYmplY3QgaGFzIGFscmVhZHkgYmVlbiBhZGRlZCB0byBhbm90aGVy
IGV3a192aWV3CisgICAgRXdrX0pTX09iamVjdF9UeXBlIHR5cGU7CisgICAgRUlOQV9NQUdJQzsK
K307CisjZW5kaWYgLy8gRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCisKKyNlbmRpZiAvLyBl
d2tfanNfcHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2xv
Z2dpbmcuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbG9nZ2luZy5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBmOGE3ZjQxLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQv
ZWZsL2V3ay9ld2tfbG9nZ2luZy5oCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotLyoK
LSAgICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcwot
ICAgIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFNhbXN1bmcgRWxlY3Ryb25pY3MKLQotICAgIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKLSAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYwotICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgotICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
Ci0gICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKLSAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KLQotICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAg
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCi0gICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0vKioK
LSAqIEBmaWxlICAgIGV3a19sb2dnaW5nLmgKLSAqIEBicmllZiAgIFByb3ZpZGVzIG1hY3JvcyBm
b3IgbG9nZ2luZy4KLSAqLwotCi0jaWZuZGVmIGV3a19sb2dnaW5nX2gKLSNkZWZpbmUgZXdrX2xv
Z2dpbmdfaAotCi1leHRlcm4gaW50IF9ld2tfbG9nX2RvbTsKLSNkZWZpbmUgQ1JJVElDQUwoLi4u
KSBFSU5BX0xPR19ET01fQ1JJVChfZXdrX2xvZ19kb20sIF9fVkFfQVJHU19fKQotI2RlZmluZSBF
UlIoLi4uKSBFSU5BX0xPR19ET01fRVJSKF9ld2tfbG9nX2RvbSwgX19WQV9BUkdTX18pCi0jZGVm
aW5lIFdSTiguLi4pIEVJTkFfTE9HX0RPTV9XQVJOKF9ld2tfbG9nX2RvbSwgX19WQV9BUkdTX18p
Ci0jZGVmaW5lIElORiguLi4pIEVJTkFfTE9HX0RPTV9JTkZPKF9ld2tfbG9nX2RvbSwgX19WQV9B
UkdTX18pCi0jZGVmaW5lIERCRyguLi4pIEVJTkFfTE9HX0RPTV9EQkcoX2V3a19sb2dfZG9tLCBf
X1ZBX0FSR1NfXykKLQotI2VuZGlmIC8vIGV3a19sb2dnaW5nX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfbG9nZ2luZ19wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX2xvZ2dpbmdfcHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmQwMTYyNjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX2xvZ2dpbmdfcHJpdmF0ZS5oCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgICAgQ29weXJpZ2h0
IChDKSAyMDA5LTIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMKKyAgICBDb3B5cmlnaHQg
KEMpIDIwMDktMjAxMCBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAg
ICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisK
KyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAor
ICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworLyoqCisgKiBAZmlsZSAgICBl
d2tfbG9nZ2luZ19wcml2YXRlLmgKKyAqIEBicmllZiAgIFByb3ZpZGVzIG1hY3JvcyBmb3IgbG9n
Z2luZy4KKyAqLworCisjaWZuZGVmIGV3a19sb2dnaW5nX3ByaXZhdGVfaAorI2RlZmluZSBld2tf
bG9nZ2luZ19wcml2YXRlX2gKKworZXh0ZXJuIGludCBfZXdrX2xvZ19kb207CisjZGVmaW5lIENS
SVRJQ0FMKC4uLikgRUlOQV9MT0dfRE9NX0NSSVQoX2V3a19sb2dfZG9tLCBfX1ZBX0FSR1NfXykK
KyNkZWZpbmUgRVJSKC4uLikgRUlOQV9MT0dfRE9NX0VSUihfZXdrX2xvZ19kb20sIF9fVkFfQVJH
U19fKQorI2RlZmluZSBXUk4oLi4uKSBFSU5BX0xPR19ET01fV0FSTihfZXdrX2xvZ19kb20sIF9f
VkFfQVJHU19fKQorI2RlZmluZSBJTkYoLi4uKSBFSU5BX0xPR19ET01fSU5GTyhfZXdrX2xvZ19k
b20sIF9fVkFfQVJHU19fKQorI2RlZmluZSBEQkcoLi4uKSBFSU5BX0xPR19ET01fREJHKF9ld2tf
bG9nX2RvbSwgX19WQV9BUkdTX18pCisKKyNlbmRpZiAvLyBld2tfbG9nZ2luZ19wcml2YXRlX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbWFpbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX21haW4uY3BwCmluZGV4IDc2MjFkMzcuLmQwNWE4NzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbWFpbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a19tYWluLmNwcApAQCAtMzAsOCArMzAsOCBAQAogI2luY2x1ZGUgIlNl
dHRpbmdzLmgiCiAjaW5jbHVkZSAiU3RvcmFnZVRyYWNrZXIuaCIKICNpbmNsdWRlICJTdG9yYWdl
VHJhY2tlckNsaWVudEVmbC5oIgotI2luY2x1ZGUgImV3a19hdXRoX3NvdXAuaCIKLSNpbmNsdWRl
ICJld2tfbG9nZ2luZy5oIgorI2luY2x1ZGUgImV3a19hdXRoX3NvdXBfcHJpdmF0ZS5oIgorI2lu
Y2x1ZGUgImV3a19sb2dnaW5nX3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfbmV0d29yay5oIgog
I2luY2x1ZGUgImV3a19wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3NldHRpbmdzLmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX25ldHdvcmsuY3BwIGIvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a19uZXR3b3JrLmNwcAppbmRleCA1NDFjY2RkLi44YzllMTZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX25ldHdvcmsuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfbmV0d29yay5jcHAKQEAgLTIyLDcgKzIyLDcgQEAKIAogI2lu
Y2x1ZGUgIk5ldHdvcmtTdGF0ZU5vdGlmaWVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUu
aCIKLSNpbmNsdWRlICJld2tfbG9nZ2luZy5oIgorI2luY2x1ZGUgImV3a19sb2dnaW5nX3ByaXZh
dGUuaCIKICNpbmNsdWRlIDxFaW5hLmg+CiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a19wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ByaXZhdGUuaApp
bmRleCBmYTI4NGYzLi5lMGU3ZGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX3ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ByaXZhdGUuaApA
QCAtMSw2ICsxLDYgQEAKIC8qCiAgICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgUHJvRlVTSU9O
IGVtYmVkZGVkIHN5c3RlbXMKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBTYW1zdW5nIEVs
ZWN0cm9uaWNzCisgICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTIgU2Ftc3VuZyBFbGVjdHJvbmlj
cwogCiAgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgogICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yNyw2NSArMjcsMTggQEAKICNkZWZpbmUgZXdrX3By
aXZhdGVfaAogCiAjaW5jbHVkZSAiQVBJQ2FzdC5oIgotI2luY2x1ZGUgIkJhY2tGb3J3YXJkTGlz
dEltcGwuaCIKLSNpbmNsdWRlICJGcmFtZS5oIgotI2luY2x1ZGUgIk5QX2pzb2JqZWN0LmgiCi0j
aW5jbHVkZSAiUGFnZS5oIgotI2luY2x1ZGUgIldpZGdldC5oIgotI2luY2x1ZGUgImV3a19oaXN0
b3J5LmgiCi0jaW5jbHVkZSAiZXdrX2pzLmgiCi0jaW5jbHVkZSAiZXdrX3ZpZXcuaCIKICNpbmNs
dWRlIDxFdmFzLmg+Ci0jaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotI2luY2x1ZGUg
PEV2YXNfR0wuaD4KLSNlbmRpZgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogCiAvLyBJZiBkZWZpbmVkLCBld2sgd2lsbCBkbyB0eXBlIGNoZWNr
aW5nIHRvIGVuc3VyZSBvYmplY3RzIGFyZSBvZiBjb3JyZWN0IHR5cGUKICNkZWZpbmUgRVdLX1RZ
UEVfQ0hFQ0sgMQogI2RlZmluZSBFV0tfQVJHQl9CWVRFU19TSVpFIDQKIAotI2lmIEVOQUJMRShO
RVRTQ0FQRV9QTFVHSU5fQVBJKQotI2RlZmluZSBFV0tfSlNfT0JKRUNUX01BR0lDIDB4Njk2OTY5
Ci0KLXR5cGVkZWYgc3RydWN0IF9Fd2tfSlNfQ2xhc3MgRXdrX0pTX0NsYXNzOwotc3RydWN0IF9F
d2tfSlNfT2JqZWN0IHsKLSAgICBKYXZhU2NyaXB0T2JqZWN0IGJhc2U7Ci0gICAgY29uc3QgY2hh
ciogbmFtZTsKLSAgICBjb25zdCBFd2tfSlNfQ2xhc3MqIGNsczsKLSAgICBFaW5hX0hhc2gqIHBy
b3BlcnRpZXM7Ci0gICAgRXZhc19PYmplY3QqIHZpZXc7IC8vIGV3a192aWV3OiBjaGVjayBpZiB0
aGlzIG9iamVjdCBoYXMgYWxyZWFkeSBiZWVuIGFkZGVkIHRvIGFub3RoZXIgZXdrX3ZpZXcKLSAg
ICBFd2tfSlNfT2JqZWN0X1R5cGUgdHlwZTsKLSAgICBFSU5BX01BR0lDOwotfTsKLSNlbmRpZiAv
LyBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLQotLy8gRGVmaW5lcyB0aGUgbmFtZXMgZm9y
IGluaXRpYWxpemluZyBld2tfdmlld19zbWFydF9jbGFzcwotY29uc3QgY2hhciBld2tWaWV3VGls
ZWROYW1lW10gPSAiRXdrX1ZpZXdfVGlsZWQiOwotY29uc3QgY2hhciBld2tWaWV3U2luZ2xlTmFt
ZVtdID0gIkV3a19WaWV3X1NpbmdsZSI7Ci0KLS8vIERlZmluZSB0byBwcmV2ZW50IGFuIGFwcGxp
Y2F0aW9uIHVzaW5nIGRpZmZlcmVudCB2aWV3IHR5cGUgZnJvbSBjYWxsaW5nIHRoZSBmdW5jdGlv
bi4KLSNkZWZpbmUgRVdLX1ZJRVdfVFlQRV9DSEVDS19PUl9SRVRVUk4oZXdrVmlldywgdmlld05h
bWUsIC4uLikgXAotICAgIGlmICghZXZhc19vYmplY3Rfc21hcnRfdHlwZV9jaGVjayhld2tWaWV3
LCB2aWV3TmFtZSkpIHsgXAotICAgICAgICBJTkYoImV3a1ZpZXcgaXNuJ3QgYW4gaW5zdGFuY2Ug
b2YgJXMiLCB2aWV3TmFtZSk7IFwKLSAgICAgICAgcmV0dXJuIF9fVkFfQVJHU19fOyBcCi0gICAg
fQotCiAvLyBmb3J3YXJkIGRlY2xhcmF0aW9ucwogbmFtZXNwYWNlIFdlYkNvcmUgewotc3RydWN0
IFBvcHVwTWVudUNsaWVudDsKLXN0cnVjdCBDb250ZXh0TWVudTsKLXN0cnVjdCBDb250ZXh0TWVu
dUl0ZW07Ci0jaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi1zdHJ1Y3QgQ29sb3I7Ci1zdHJ1
Y3QgQ29sb3JDaG9vc2VyQ2xpZW50OwotI2VuZGlmCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKQogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiBjbGFzcyBHcmFwaGljc0xheWVyOwog
I2VuZGlmCi1jbGFzcyBTZWN1cml0eU9yaWdpbjsKIH0KIAogc3RydWN0IEV3a19XaW5kb3dfT2Jq
ZWN0X0NsZWFyZWRfRXZlbnQgewpAQCAtOTQsMTc5ICs0Nyw0IEBAIHN0cnVjdCBFd2tfV2luZG93
X09iamVjdF9DbGVhcmVkX0V2ZW50IHsKICAgICBFdmFzX09iamVjdCogZnJhbWU7CiB9OwogCi1u
YW1lc3BhY2UgRVdLUHJpdmF0ZSB7Ci0KLVdlYkNvcmU6OkZyYW1lICpjb3JlRnJhbWUoY29uc3Qg
RXZhc19PYmplY3QgKmV3a0ZyYW1lKTsKLVdlYkNvcmU6OlBhZ2UgKmNvcmVQYWdlKGNvbnN0IEV2
YXNfT2JqZWN0ICpld2tWaWV3KTsKLVdlYkNvcmU6Okhpc3RvcnlJdGVtICpjb3JlSGlzdG9yeUl0
ZW0oY29uc3QgRXdrX0hpc3RvcnlfSXRlbSAqZXdrSGlzdG9yeUl0ZW0pOwotUGxhdGZvcm1QYWdl
Q2xpZW50IGNvcmVQYWdlQ2xpZW50KEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKLQotRXZhc19PYmpl
Y3QqIGtpdEZyYW1lKGNvbnN0IFdlYkNvcmU6OkZyYW1lKiBjb3JlRnJhbWUpOwotCi19IC8vIG5h
bWVzcGFjZSBFV0tQcml2YXRlCi0KLXZvaWQgZXdrX3ZpZXdfcmVhZHkoRXZhc19PYmplY3QqIGV3
a1ZpZXcpOwotdm9pZCBld2tfdmlld19pbnB1dF9tZXRob2Rfc3RhdGVfc2V0KEV2YXNfT2JqZWN0
KiBld2tWaWV3LCBib29sIGFjdGl2ZSk7Ci12b2lkIGV3a192aWV3X3RpdGxlX3NldChFdmFzX09i
amVjdCogZXdrVmlldywgY29uc3QgY2hhciogdGl0bGUpOwotdm9pZCBld2tfdmlld191cmlfY2hh
bmdlZChFdmFzX09iamVjdCogZXdrVmlldyk7Ci12b2lkIGV3a192aWV3X2xvYWRfZG9jdW1lbnRf
ZmluaXNoZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2YXNfT2JqZWN0KiBmcmFtZSk7Ci12b2lk
IGV3a192aWV3X2xvYWRfc3RhcnRlZChFdmFzX09iamVjdCogZXdrVmlldywgRXZhc19PYmplY3Qq
IGV3a0ZyYW1lKTsKLXZvaWQgZXdrX3ZpZXdfbG9hZF9wcm92aXNpb25hbChFdmFzX09iamVjdCog
ZXdrVmlldyk7Ci12b2lkIGV3a192aWV3X2ZyYW1lX21haW5fbG9hZF9zdGFydGVkKEV2YXNfT2Jq
ZWN0KiBld2tWaWV3KTsKLXZvaWQgZXdrX3ZpZXdfZnJhbWVfbWFpbl9jbGVhcmVkKEV2YXNfT2Jq
ZWN0KiBld2tWaWV3KTsKLXZvaWQgZXdrX3ZpZXdfZnJhbWVfbWFpbl9pY29uX3JlY2VpdmVkKEV2
YXNfT2JqZWN0KiBld2tWaWV3KTsKLXZvaWQgZXdrX3ZpZXdfbG9hZF9maW5pc2hlZChFdmFzX09i
amVjdCogZXdrVmlldywgY29uc3QgRXdrX0ZyYW1lX0xvYWRfRXJyb3IqIGVycm9yKTsKLXZvaWQg
ZXdrX3ZpZXdfbG9hZF9lcnJvcihFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgRXdrX0ZyYW1l
X0xvYWRfRXJyb3IqIGVycm9yKTsKLXZvaWQgZXdrX3ZpZXdfbG9hZF9wcm9ncmVzc19jaGFuZ2Vk
KEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKLXZvaWQgZXdrX3ZpZXdfbG9hZF9zaG93KEV2YXNfT2Jq
ZWN0KiBld2tWaWV3KTsKLXZvaWQgZXdrX3ZpZXdfb25sb2FkX2V2ZW50KEV2YXNfT2JqZWN0KiBl
d2tWaWV3LCBFdmFzX09iamVjdCogZnJhbWUpOwotdm9pZCBld2tfdmlld19yZXN0b3JlX3N0YXRl
KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX09iamVjdCogZnJhbWUpOwotRXZhc19PYmplY3Qq
IGV3a192aWV3X3dpbmRvd19jcmVhdGUoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGJvb2wgamF2YXNj
cmlwdCwgY29uc3QgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMqIGNvcmVGZWF0dXJlcyk7Ci12b2lk
IGV3a192aWV3X3dpbmRvd19jbG9zZShFdmFzX09iamVjdCogZXdrVmlldyk7Ci0KLXZvaWQgZXdr
X3ZpZXdfbW91c2VfbGlua19ob3Zlcl9pbihFdmFzX09iamVjdCogZXdrVmlldywgdm9pZCogZGF0
YSk7Ci12b2lkIGV3a192aWV3X21vdXNlX2xpbmtfaG92ZXJfb3V0KEV2YXNfT2JqZWN0KiBld2tW
aWV3KTsKLQotdm9pZCBld2tfdmlld190b29sYmFyc192aXNpYmxlX3NldChFdmFzX09iamVjdCog
ZXdrVmlldywgYm9vbCB2aXNpYmxlKTsKLXZvaWQgZXdrX3ZpZXdfdG9vbGJhcnNfdmlzaWJsZV9n
ZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGJvb2wqIHZpc2libGUpOwotCi12b2lkIGV3a192aWV3
X3N0YXR1c2Jhcl92aXNpYmxlX3NldChFdmFzX09iamVjdCogZXdrVmlldywgYm9vbCB2aXNpYmxl
KTsKLXZvaWQgZXdrX3ZpZXdfc3RhdHVzYmFyX3Zpc2libGVfZ2V0KEV2YXNfT2JqZWN0KiBld2tW
aWV3LCBib29sKiB2aXNpYmxlKTsKLXZvaWQgZXdrX3ZpZXdfc3RhdHVzYmFyX3RleHRfc2V0KEV2
YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBjaGFyKiB0ZXh0KTsKLQotdm9pZCBld2tfdmlld19z
Y3JvbGxiYXJzX3Zpc2libGVfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBib29sIHZpc2libGUp
Owotdm9pZCBld2tfdmlld19zY3JvbGxiYXJzX3Zpc2libGVfZ2V0KEV2YXNfT2JqZWN0KiBld2tW
aWV3LCBib29sKiB2aXNpYmxlKTsKLQotdm9pZCBld2tfdmlld19tZW51YmFyX3Zpc2libGVfc2V0
KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBib29sIHZpc2libGUpOwotdm9pZCBld2tfdmlld19tZW51
YmFyX3Zpc2libGVfZ2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBib29sKiB2aXNpYmxlKTsKLQot
dm9pZCBld2tfdmlld190b29sdGlwX3RleHRfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25z
dCBjaGFyKiB0ZXh0KTsKLQotdm9pZCBld2tfdmlld19hZGRfY29uc29sZV9tZXNzYWdlKEV2YXNf
T2JqZWN0KiBld2tWaWV3LCBjb25zdCBjaGFyKiBtZXNzYWdlLCB1bnNpZ25lZCBpbnQgbGluZU51
bWJlciwgY29uc3QgY2hhciogc291cmNlSUQpOwotCi12b2lkIGV3a192aWV3X3J1bl9qYXZhc2Ny
aXB0X2FsZXJ0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX09iamVjdCogZnJhbWUsIGNvbnN0
IGNoYXIqIG1lc3NhZ2UpOwotYm9vbCBld2tfdmlld19ydW5famF2YXNjcmlwdF9jb25maXJtKEV2
YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX09iamVjdCogZnJhbWUsIGNvbnN0IGNoYXIqIG1lc3Nh
Z2UpOwotYm9vbCBld2tfdmlld19ydW5famF2YXNjcmlwdF9wcm9tcHQoRXZhc19PYmplY3QqIGV3
a1ZpZXcsIEV2YXNfT2JqZWN0KiBmcmFtZSwgY29uc3QgY2hhciogbWVzc2FnZSwgY29uc3QgY2hh
ciogZGVmYXVsdFZhbHVlLCBjaGFyKiogdmFsdWUpOwotYm9vbCBld2tfdmlld19zaG91bGRfaW50
ZXJydXB0X2phdmFzY3JpcHQoRXZhc19PYmplY3QqIGV3a1ZpZXcpOwotdWludDY0X3QgZXdrX3Zp
ZXdfZXhjZWVkZWRfZGF0YWJhc2VfcXVvdGEoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2YXNfT2Jq
ZWN0KiBmcmFtZSwgY29uc3QgY2hhciogZGF0YWJhc2VOYW1lLCB1aW50NjRfdCBjdXJyZW50U2l6
ZSwgdWludDY0X3QgZXhwZWN0ZWRTaXplKTsKLQotYm9vbCBld2tfdmlld19ydW5fb3Blbl9wYW5l
bChFdmFzX09iamVjdCogZXdrVmlldywgRXZhc19PYmplY3QqIGZyYW1lLCBib29sIGFsbG93c011
bHRpcGxlRmlsZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhY2NlcHRNSU1FVHlwZXMsIEVpbmFf
TGlzdCoqIHNlbGVjdGVkRmlsZW5hbWVzKTsKLQotdm9pZCBld2tfdmlld19yZXBhaW50KEV2YXNf
T2JqZWN0KiBld2tWaWV3LCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwgRXZhc19Db29yZCB3
aWR0aCwgRXZhc19Db29yZCBoZWlnaHQpOwotdm9pZCBld2tfdmlld19zY3JvbGwoRXZhc19PYmpl
Y3QqIGV3a1ZpZXcsIEV2YXNfQ29vcmQgZGVsdGFYLCBFdmFzX0Nvb3JkIGRlbHRhWSwgRXZhc19D
b29yZCBzY3JvbGxYLCBFdmFzX0Nvb3JkIHNjcm9sbFksIEV2YXNfQ29vcmQgc2Nyb2xsV2lkdGgs
IEV2YXNfQ29vcmQgc2Nyb2xsSGVpZ2h0LCBFdmFzX0Nvb3JkIGNlbnRlclgsIEV2YXNfQ29vcmQg
Y2VudGVyWSwgRXZhc19Db29yZCBjZW50ZXJXLCBFdmFzX0Nvb3JkIGNlbnRlckhlaWdodCk7Ci1X
ZWJDb3JlOjpQYWdlKiBld2tfdmlld19jb3JlX3BhZ2VfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBl
d2tWaWV3KTsKLQotV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBld2tfdmlld19mcmFt
ZV9jcmVhdGUoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2YXNfT2JqZWN0KiBmcmFtZSwgY29uc3Qg
V1RGOjpTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJF
bGVtZW50LCBjb25zdCBXZWJDb3JlOjpLVVJMJiB1cmwsIGNvbnN0IFdURjo6U3RyaW5nJiByZWZl
cnJlcik7Ci0KLVdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGV3a192aWV3X3BsdWdp
bl9jcmVhdGUoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2YXNfT2JqZWN0KiBmcmFtZSwgY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYgcGx1Z2luU2l6ZSwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQq
IGVsZW1lbnQsIGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCwgY29uc3QgV1RGOjpWZWN0b3I8V1RG
OjpTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBh
cmFtVmFsdWVzLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5
KTsKLQotI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQotdm9pZCBld2tfdmlld19jb2xvcl9j
aG9vc2VyX25ldyhFdmFzX09iamVjdCogZXdrVmlldywgV2ViQ29yZTo6Q29sb3JDaG9vc2VyQ2xp
ZW50KiBjbGllbnQsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBpbml0aWFsQ29sb3IpOwotdm9pZCBl
d2tfdmlld19jb2xvcl9jaG9vc2VyX2NoYW5nZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0
IFdlYkNvcmU6OkNvbG9yJiBuZXdDb2xvcik7Ci0jZW5kaWYKLQotdm9pZCBld2tfdmlld19wb3B1
cF9uZXcoRXZhc19PYmplY3QqIGV3a1ZpZXcsIFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCogY2xp
ZW50LCBpbnQgc2VsZWN0ZWQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHJlY3QpOwotdm9pZCBl
d2tfdmlld192aWV3cG9ydF9hdHRyaWJ1dGVzX3NldChFdmFzX09iamVjdCogZXdrVmlldywgY29u
c3QgV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHMmIGFyZ3VtZW50cyk7Ci0KLXZvaWQgZXdrX3Zp
ZXdfZG93bmxvYWRfcmVxdWVzdChFdmFzX09iamVjdCogZXdrVmlldywgRXdrX0Rvd25sb2FkKiBk
b3dubG9hZCk7Ci0KLXZvaWQgZXdrX3ZpZXdfZWRpdG9yX2NsaWVudF9jb250ZW50c19jaGFuZ2Vk
KEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKLXZvaWQgZXdrX3ZpZXdfZWRpdG9yX2NsaWVudF9zZWxl
Y3Rpb25fY2hhbmdlZChFdmFzX09iamVjdCogZXdrVmlldyk7Ci0KLWJvb2wgZXdrX3ZpZXdfZm9j
dXNfY2FuX2N5Y2xlKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfRm9jdXNfRGlyZWN0aW9uIGRp
cmVjdGlvbik7Ci12b2lkIGV3a192aWV3X2ZyYW1lX3ZpZXdfY3JlYXRpb25fbm90aWZ5KEV2YXNf
T2JqZWN0KiBld2tWaWV3KTsKLQotI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQotdm9p
ZCBld2tfdmlld19qc193aW5kb3dfb2JqZWN0X2NsZWFyKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBF
dmFzX09iamVjdCogZnJhbWUpOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQot
dm9pZCBld2tfdmlld19uZWVkX3RvdWNoX2V2ZW50c19zZXQoRXZhc19PYmplY3QqLCBib29sIG5l
ZWRlZCk7Ci1ib29sIGV3a192aWV3X25lZWRfdG91Y2hfZXZlbnRzX2dldChjb25zdCBFdmFzX09i
amVjdCopOwotI2VuZGlmCi0KLUV3a19IaXN0b3J5X0l0ZW0gKmV3a19oaXN0b3J5X2l0ZW1fbmV3
X2Zyb21fY29yZShXZWJDb3JlOjpIaXN0b3J5SXRlbSAqY29yZSk7Ci1Fd2tfSGlzdG9yeSogZXdr
X2hpc3RvcnlfbmV3KFdlYkNvcmU6OkJhY2tGb3J3YXJkTGlzdEltcGwqIGhpc3RvcnkpOwotdm9p
ZCBld2tfaGlzdG9yeV9mcmVlKEV3a19IaXN0b3J5KiBoaXN0b3J5KTsKLQotI2lmIEVOQUJMRShD
T05URVhUX01FTlVTKQotRXdrX0NvbnRleHRfTWVudSogZXdrX2NvbnRleHRfbWVudV9uZXcoRXZh
c19PYmplY3QqIHZpZXcsIFdlYkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxlciogY29udHJvbGxl
cik7Ci1ib29sIGV3a19jb250ZXh0X21lbnVfZnJlZShFd2tfQ29udGV4dF9NZW51KiBtZW51KTsK
LXZvaWQgZXdrX2NvbnRleHRfbWVudV9pdGVtX2FwcGVuZChFd2tfQ29udGV4dF9NZW51KiBtZW51
LCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW0mIGNvcmUpOwotRXdrX0NvbnRleHRfTWVudSogZXdr
X2NvbnRleHRfbWVudV9jdXN0b21pemUoRXdrX0NvbnRleHRfTWVudSogbWVudSk7Ci12b2lkIGV3
a19jb250ZXh0X21lbnVfc2hvdyhFd2tfQ29udGV4dF9NZW51KiBtZW51KTsKLSNlbmRpZgotCi1j
b25zdCBFaW5hX1JlY3RhbmdsZSogZXdrX3ZpZXdfcmVwYWludHNfcG9wKEV3a19WaWV3X1ByaXZh
dGVfRGF0YSogcHJpdiwgc2l6ZV90KiBjb3VudCk7Ci1jb25zdCBFd2tfU2Nyb2xsX1JlcXVlc3Qq
IGV3a192aWV3X3Njcm9sbF9yZXF1ZXN0c19nZXQoY29uc3QgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRh
KiBwcml2LCBzaXplX3QqIGNvdW50KTsKLQotdm9pZCBld2tfdmlld19yZXBhaW50X2FkZChFd2tf
Vmlld19Qcml2YXRlX0RhdGEqIHByaXYsIEV2YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5LCBFdmFz
X0Nvb3JkIHdpZHRoLCBFdmFzX0Nvb3JkIGhlaWdodCk7Ci0KLXZvaWQgZXdrX3ZpZXdfbGF5b3V0
X2lmX25lZWRlZF9yZWN1cnNpdmUoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2KTsKLQotRXdr
X1dpbmRvd19GZWF0dXJlcyogZXdrX3dpbmRvd19mZWF0dXJlc19uZXdfZnJvbV9jb3JlKGNvbnN0
IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzKiBjb3JlKTsKLQotRXZhc19PYmplY3QqIGV3a19mcmFt
ZV9hZGQoRXZhcyogY2FudmFzKTsKLWJvb2wgZXdrX2ZyYW1lX2luaXQoRXZhc19PYmplY3QqIGV3
a0ZyYW1lLCBFdmFzX09iamVjdCogdmlldywgV2ViQ29yZTo6RnJhbWUqIGZyYW1lKTsKLWJvb2wg
ZXdrX2ZyYW1lX2NoaWxkX2FkZChFdmFzX09iamVjdCogZXdrRnJhbWUsIFdURjo6UGFzc1JlZlB0
cjxXZWJDb3JlOjpGcmFtZT4gY2hpbGQsIGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lLCBjb25zdCBX
ZWJDb3JlOjpLVVJMJiB1cmwsIGNvbnN0IFdURjo6U3RyaW5nJiByZWZlcnJlcik7Ci12b2lkIGV3
a19mcmFtZV92aWV3X3NldChFdmFzX09iamVjdCogZXdrRnJhbWUsIEV2YXNfT2JqZWN0KiBuZXdQ
YXJlbnQpOwotCi12b2lkIGV3a19mcmFtZV9jb3JlX2dvbmUoRXZhc19PYmplY3QqIGV3a0ZyYW1l
KTsKLQotdm9pZCBld2tfZnJhbWVfbG9hZF9jb21taXR0ZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1l
KTsKLXZvaWQgZXdrX2ZyYW1lX2xvYWRfc3RhcnRlZChFdmFzX09iamVjdCogZXdrRnJhbWUpOwot
dm9pZCBld2tfZnJhbWVfbG9hZF9wcm92aXNpb25hbChFdmFzX09iamVjdCogZXdrRnJhbWUpOwot
dm9pZCBld2tfZnJhbWVfbG9hZF9maXJzdGxheW91dF9maW5pc2hlZChFdmFzX09iamVjdCogZXdr
RnJhbWUpOwotdm9pZCBld2tfZnJhbWVfbG9hZF9maXJzdGxheW91dF9ub25lbXB0eV9maW5pc2hl
ZChFdmFzX09iamVjdCogZXdrRnJhbWUpOwotdm9pZCBld2tfZnJhbWVfbG9hZF9kb2N1bWVudF9m
aW5pc2hlZChFdmFzX09iamVjdCogZXdrRnJhbWUpOwotdm9pZCBld2tfZnJhbWVfbG9hZF9maW5p
c2hlZChFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IGNoYXIqIGVycm9yRG9tYWluLCBpbnQg
ZXJyb3JDb2RlLCBib29sIGlzQ2FuY2VsbGF0aW9uLCBjb25zdCBjaGFyKiBlcnJvckRlc2NyaXB0
aW9uLCBjb25zdCBjaGFyKiBmYWlsaW5nVXJsKTsKLXZvaWQgZXdrX2ZyYW1lX2xvYWRfcmVzb3Vy
Y2VfZmluaXNoZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCB1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIpOwotdm9pZCBld2tfZnJhbWVfbG9hZF9yZXNvdXJjZV9mYWlsZWQoRXZhc19PYmplY3QqIGV3
a0ZyYW1lLCBFd2tfRnJhbWVfTG9hZF9FcnJvciogZXJyb3IpOwotdm9pZCBld2tfZnJhbWVfbG9h
ZF9lcnJvcihFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IGNoYXIqIGVycm9yRG9tYWluLCBp
bnQgZXJyb3JDb2RlLCBib29sIGlzQ2FuY2VsbGF0aW9uLCBjb25zdCBjaGFyKiBlcnJvckRlc2Ny
aXB0aW9uLCBjb25zdCBjaGFyKiBmYWlsaW5nVXJsKTsKLXZvaWQgZXdrX2ZyYW1lX2xvYWRfcHJv
Z3Jlc3NfY2hhbmdlZChFdmFzX09iamVjdCogZXdrRnJhbWUpOwotCi12b2lkIGV3a19mcmFtZV9y
ZWRpcmVjdF9jYW5jZWxsZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKLXZvaWQgZXdrX2ZyYW1l
X3JlZGlyZWN0X3Byb3Zpc2lvbmFsX2xvYWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKLXZvaWQg
ZXdrX2ZyYW1lX3JlZGlyZWN0X3JlcXVlc3RlZChFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0
IGNoYXIqIHVybCk7Ci12b2lkIGV3a19mcmFtZV9yZXF1ZXN0X3dpbGxfc2VuZChFdmFzX09iamVj
dCogZXdrRnJhbWUsIEV3a19GcmFtZV9SZXNvdXJjZV9NZXNzYWdlcyogbWVzc2FnZXMpOwotdm9p
ZCBld2tfZnJhbWVfcmVxdWVzdF9hc3NpZ25faWRlbnRpZmllcihFdmFzX09iamVjdCogZXdrRnJh
bWUsIGNvbnN0IEV3a19GcmFtZV9SZXNvdXJjZV9SZXF1ZXN0KiByZXF1ZXN0KTsKLXZvaWQgZXdr
X2ZyYW1lX3Jlc3BvbnNlX3JlY2VpdmVkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgRXdrX0ZyYW1l
X1Jlc291cmNlX1Jlc3BvbnNlKiByZXNwb25zZSk7Ci12b2lkIGV3a19mcmFtZV92aWV3X3N0YXRl
X3NhdmUoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBXZWJDb3JlOjpIaXN0b3J5SXRlbSogaXRlbSk7
Ci0KLXZvaWQgZXdrX2ZyYW1lX2RpZF9wZXJmb3JtX2ZpcnN0X25hdmlnYXRpb24oRXZhc19PYmpl
Y3QqIGV3a0ZyYW1lKTsKLQotdm9pZCBld2tfZnJhbWVfY29udGVudHNfc2l6ZV9jaGFuZ2VkKEV2
YXNfT2JqZWN0KiBld2tGcmFtZSwgRXZhc19Db29yZCB3aWR0aCwgRXZhc19Db29yZCBoZWlnaHQp
Owotdm9pZCBld2tfZnJhbWVfdGl0bGVfc2V0KEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgY29uc3Qg
Y2hhciogdGl0bGUpOwotCi12b2lkIGV3a19mcmFtZV92aWV3X2NyZWF0ZV9mb3JfdmlldyhFdmFz
X09iamVjdCogZXdrRnJhbWUsIEV2YXNfT2JqZWN0KiB2aWV3KTsKLWJvb2wgZXdrX2ZyYW1lX3Vy
aV9jaGFuZ2VkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7Ci12b2lkIGV3a19mcmFtZV9mb3JjZV9s
YXlvdXQoRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKLXZvaWQgZXdrX2ZyYW1lX2ljb25fY2hhbmdl
ZChFdmFzX09iamVjdCogZXdrRnJhbWUpOwotCi1XVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6V2lk
Z2V0PiBld2tfZnJhbWVfcGx1Z2luX2NyZWF0ZShFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0
IFdlYkNvcmU6OkludFNpemUmIHBsdWdpblNpemUsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50
KiBlbGVtZW50LCBjb25zdCBXZWJDb3JlOjpLVVJMJiB1cmwsIGNvbnN0IFdURjo6VmVjdG9yPFdU
Rjo6U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBw
YXJhbVZhbHVlcywgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBib29sIGxvYWRNYW51YWxs
eSk7Ci0KLWJvb2wgZXdrX3ZpZXdfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24oRXZhc19PYmpl
Y3QqIGV3a1ZpZXcsIEV3a19GcmFtZV9SZXNvdXJjZV9SZXF1ZXN0KiByZXF1ZXN0KTsKLQotdm9p
ZCBld2tfdmlld19jb250ZW50c19zaXplX2NoYW5nZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2
YXNfQ29vcmQgd2lkdGgsIEV2YXNfQ29vcmQgaGVpZ2h0KTsKLQotV2ViQ29yZTo6RmxvYXRSZWN0
IGV3a192aWV3X3BhZ2VfcmVjdF9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpOwotCi1j
b25zdCBjaGFyKiBld2tfc2V0dGluZ3NfZGVmYXVsdF91c2VyX2FnZW50X2dldCgpOwotCi12b2lk
IGV3a19mcmFtZV9lZGl0b3JfY2xpZW50X2NvbnRlbnRzX2NoYW5nZWQoRXZhc19PYmplY3QqIGV3
a0ZyYW1lKTsKLXZvaWQgZXdrX2ZyYW1lX2VkaXRvcl9jbGllbnRfc2VsZWN0aW9uX2NoYW5nZWQo
RXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKLQotdm9pZCBld2tfZnJhbWVfbWl4ZWRfY29udGVudF9k
aXNwbGF5ZWRfc2V0KEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgYm9vbCBoYXNEaXNwbGF5ZWQpOwot
dm9pZCBld2tfZnJhbWVfbWl4ZWRfY29udGVudF9ydW5fc2V0KEV2YXNfT2JqZWN0KiBld2tGcmFt
ZSwgYm9vbCBoYXNSdW4pOwotdm9pZCBld2tfdmlld19taXhlZF9jb250ZW50X2Rpc3BsYXllZF9z
ZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGJvb2wgaGFzRGlzcGxheWVkKTsKLXZvaWQgZXdrX3Zp
ZXdfbWl4ZWRfY29udGVudF9ydW5fc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBib29sIGhhc1J1
bik7Ci12b2lkIGV3a19mcmFtZV94c3NfZGV0ZWN0ZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBj
b25zdCBFd2tfRnJhbWVfWHNzX05vdGlmaWNhdGlvbiogeHNzSW5mbyk7Ci0KLUV3a19TZWN1cml0
eV9PcmlnaW4qIGV3a19zZWN1cml0eV9vcmlnaW5fbmV3KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
KiBvcmlnaW4pOwotCi0jaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotYm9vbCBld2tf
dmlld19hY2NlbGVyYXRlZF9jb21wb3NpdGluZ19vYmplY3RfY3JlYXRlKEV2YXNfT2JqZWN0KiBl
d2tWaWV3LCBFdmFzX05hdGl2ZV9TdXJmYWNlKiBuYXRpdmVTdXJmYWNlLCBjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiByZWN0KTsKLVdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEKiBld2tfdmlld19h
Y2NlbGVyYXRlZF9jb21wb3NpdGluZ19jb250ZXh0X2dldChFdmFzX09iamVjdCogZXdrVmlldyk7
Ci0jZW5kaWYKLQogI2VuZGlmIC8vIGV3a19wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfc2VjdXJpdHlfb3JpZ2luX3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJL
aXQvZWZsL2V3ay9ld2tfc2VjdXJpdHlfb3JpZ2luX3ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5iMTRkMmRjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a19zZWN1cml0eV9vcmlnaW5fcHJpdmF0ZS5oCkBAIC0wLDAgKzEsMzYg
QEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5
c3RlbXMKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisK
KyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAg
ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8K
KworLyoqCisgKiBAZmlsZSAgICBld2tfc2VjdXJpdHlfb3JpZ2luX3ByaXZhdGUuaAorICogQGJy
aWVmICAgUHJpdmF0ZSBtZXRob2RzIG9mIEVXSyBzZWN1cml0eSBvcmlnaW4uCisgKi8KKworI2lm
bmRlZiBld2tfc2VjdXJpdHlfb3JpZ2luX3ByaXZhdGVfaAorI2RlZmluZSBld2tfc2VjdXJpdHlf
b3JpZ2luX3ByaXZhdGVfaAorCisvLyBmb3J3YXJkIGRlY2xhcmF0aW9ucworbmFtZXNwYWNlIFdl
YkNvcmUgeworY2xhc3MgU2VjdXJpdHlPcmlnaW47Cit9CisKK0V3a19TZWN1cml0eV9PcmlnaW4q
IGV3a19zZWN1cml0eV9vcmlnaW5fbmV3KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiBvcmlnaW4p
OworCisjZW5kaWYgLy8gZXdrX3NlY3VyaXR5X29yaWdpbl9wcml2YXRlX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfc2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a19zZXR0aW5ncy5jcHAKaW5kZXggODQyOTMwYS4uNWNhOGVlZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19zZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a19zZXR0aW5ncy5jcHAKQEAgLTM0LDkgKzM0LDkgQEAKICNpbmNsdWRl
ICJNZW1vcnlDYWNoZS5oIgogI2luY2x1ZGUgIlBhZ2VDYWNoZS5oIgogI2luY2x1ZGUgIlNldHRp
bmdzLmgiCi0jaW5jbHVkZSAiZXdrX2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJld2tfbG9nZ2luZ19w
cml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKLSNpbmNsdWRlICJld2tfdXRpbC5o
IgorI2luY2x1ZGUgImV3a191dGlsX3ByaXZhdGUuaCIKICNpbmNsdWRlIDxFaW5hLmg+CiAjaW5j
bHVkZSA8ZWluYV9zYWZldHlfY2hlY2tzLmg+CiAjaW5jbHVkZSA8ZXJybm8uaD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfc2V0dGluZ3NfcHJpdmF0ZS5oIGIvU291cmNl
L1dlYktpdC9lZmwvZXdrL2V3a19zZXR0aW5nc19wcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uNDhmOTJkNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvZWZsL2V3ay9ld2tfc2V0dGluZ3NfcHJpdmF0ZS5oCkBAIC0wLDAgKzEsMzEgQEAKKy8qCisg
ICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMKKyAg
ICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworLyoqCisg
KiBAZmlsZSAgICBld2tfc2V0dGluZ3NfcHJpdmF0ZS5oCisgKiBAYnJpZWYgICBQcml2YXRlIG1l
dGhvZHMgb2YgRVdLIHNldHRpbmdzLgorICovCisKKyNpZm5kZWYgZXdrX3NldHRpbmdzX3ByaXZh
dGVfaAorI2RlZmluZSBld2tfc2V0dGluZ3NfcHJpdmF0ZV9oCisKK2NvbnN0IGNoYXIqIGV3a19z
ZXR0aW5nc19kZWZhdWx0X3VzZXJfYWdlbnRfZ2V0KCk7CisKKyNlbmRpZiAvLyBld2tfc2V0dGlu
Z3NfcHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3RpbGVk
X2JhY2tpbmdfc3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9iYWNr
aW5nX3N0b3JlLmNwcAppbmRleCA3Y2Q0M2VkLi5kMjk1NTkzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5jcHAKQEAgLTE5LDEwICsxOSwx
MSBAQAogKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgImV3a190aWxlZF9iYWNr
aW5nX3N0b3JlLmgiCiAKICNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgotI2luY2x1ZGUgImV3a190
aWxlZF9tYXRyaXguaCIKKyNpbmNsdWRlICJld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcml2YXRl
LmgiCisjaW5jbHVkZSAiZXdrX3RpbGVkX21hdHJpeF9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdr
X3RpbGVkX21vZGVsX3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfdGlsZWRfcHJpdmF0ZS5oIgog
I2luY2x1ZGUgPEVjb3JlLmg+CiAjaW5jbHVkZSA8RWluYS5oPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9iYWNraW5nX3N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggOWU1YTA0OC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X3RpbGVkX2JhY2tpbmdfc3RvcmUuaAorKysgL2Rldi9udWxsCkBAIC0xLDExOSArMCwwIEBACi0v
KgotICAgIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFNhbXN1bmcgRWxlY3Ryb25pY3MKLSAgICBD
b3B5cmlnaHQgKEMpIDIwMDktMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcwotCi0gICAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0g
ICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSovCi0KLSNp
Zm5kZWYgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfaAotI2RlZmluZSBld2tfdGlsZWRfYmFja2lu
Z19zdG9yZV9oCi0KLSNpbmNsdWRlICJFV2ViS2l0LmgiCi0KLS8qIEVuYWJsZSBhY2NvdW50aW5n
IG9mIHJlbmRlciB0aW1lIGluIHRpbGUgc3RhdGlzdGljcyAqLwotLy8gI2RlZmluZSBUSUxFX1NU
QVRTX0FDQ09VTlRfUkVOREVSX1RJTUUKLQotCi0vKiBJZiBkZWZpbmUgZXdrIHdpbGwgZG8gbW9y
ZSBhY2NvdW50aW5nIHRvIGNoZWNrIGZvciBtZW1vcnkgbGVha3MKLSAqIHRyeSAia2lsbCAtVVNS
MSAkUElEIiB0byBnZXQgaW5zdGFudGFuZW91cyBkZWJ1ZwotICogdHJ5ICJraWxsIC1VU1IyICRQ
SUQiIHRvIGdldCBpbnN0YW50YW5lb3VzIGRlYnVnIGFuZCBmb3JjZSBmbHVzaCBvZiBjYWNoZQot
ICovCi0jdW5kZWYgREVCVUdfTUVNX0xFQUtTCi0KLWNvbnN0IGludCBkZWZhdWx0VGlsZVdpZHRo
ID0gMjU2OwotY29uc3QgaW50IGRlZmF1bHRUaWxlSGVpZ3RoID0gMjU2OwotCi1jb25zdCBmbG9h
dCB6b29tU3RlcE1pbmltdW0gPSAwLjAxOwotCi0jZGVmaW5lIFRJTEVfU0laRV9BVF9aT09NKFNJ
WkUsIFpPT00pICgoaW50KXJvdW5kZigoU0laRSkgKiAoWk9PTSkpKQotI2RlZmluZSBUSUxFX1pP
T01fQVRfU0laRShTSVpFLCBPUklHX1RJTEUpICgoZmxvYXQpKFNJWkUpIC8gKGZsb2F0KShPUklH
X1RJTEUpKQotI2RlZmluZSBST1VOREVEX1pPT00oU0laRSwgWk9PTSkgKChmbG9hdCkoU0laRSkg
LyAoZmxvYXQpKCgoaW50KXJvdW5kZigoU0laRSkgLyAoWk9PTSkpKSkpCi0KLSNpbmNsdWRlIDxF
dmFzLmg+Ci0jaW5jbHVkZSA8Y2Fpcm8uaD4KLQotdHlwZWRlZiBzdHJ1Y3QgX0V3a19UaWxlICAg
ICAgICAgICAgICAgICAgICAgRXdrX1RpbGU7Ci10eXBlZGVmIHN0cnVjdCBfRXdrX1RpbGVfU3Rh
dHMgICAgICAgICAgICAgICBFd2tfVGlsZV9TdGF0czsKLXR5cGVkZWYgc3RydWN0IF9Fd2tfVGls
ZV9NYXRyaXggICAgICAgICAgICAgIEV3a19UaWxlX01hdHJpeDsKLQotc3RydWN0IF9Fd2tfVGls
ZV9TdGF0cyB7Ci0gICAgZG91YmxlIGxhc3RfdXNlZDsgICAgICAgIC8qKjwgdGltZSBvZiBsYXN0
IHVzZSAqLwotI2lmZGVmIFRJTEVfU1RBVFNfQUNDT1VOVF9SRU5ERVJfVElNRQotICAgIGRvdWJs
ZSByZW5kZXJfdGltZTsgICAgICAvKio8IGFtb3VudCBvZiB0aW1lIHRoaXMgdGlsZSB0b29rIHRv
IHJlbmRlciAqLwotI2VuZGlmCi0gICAgdW5zaWduZWQgaW50IGFyZWE7ICAgICAgIC8qKjwgY2Fj
aGUgZm9yICh3ICogaCkgKi8KLSAgICB1bnNpZ25lZCBpbnQgbWlzc2VzOyAgICAgLyoqPCBudW1i
ZXIgb2YgdGltZXMgaXQgYmVjYW1lIGRpcnR5IGJ1dCBub3QKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICogcmVwYWludGVkIGF0IGFsbCBzaW5jZSBpdCB3YXMgbm90IHZpc2libGUuCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotICAgIEVpbmFfQm9vbCBmdWxsX3VwZGF0
ZSA6IDE7IC8qKjwgdGlsZSByZXF1aXJlcyBmdWxsIHNpemUgdXBkYXRlICovCi19OwotCi1zdHJ1
Y3QgX0V3a19UaWxlIHsKLSAgICBFaW5hX1RpbGVyICp1cGRhdGVzOyAgICAvKio8IHVwZGF0ZWQv
ZGlydHkgYXJlYXMgKi8KLSAgICBFd2tfVGlsZV9TdGF0cyBzdGF0czsgICAgICAgLyoqPCB0aWxl
IHVzYWdlIHN0YXRpc3RpY3MgKi8KLSAgICB1bnNpZ25lZCBsb25nIGNvbHVtbiwgcm93OyAvKio8
IHRpbGUgdGlsZSBwb3NpdGlvbiAqLwotICAgIEV2YXNfQ29vcmQgeCwgeTsgICAgICAgIC8qKjwg
dGlsZSBjb29yZGluYXRlIHBvc2l0aW9uICovCi0KLSAgICAvKiogTmV2ZXIgZXZlciBjaGFuZ2Ug
dGhvc2UgYWZ0ZXIgdGlsZSBpcyBjcmVhdGVkIChyZXNwZWN0IGNvbnN0ISkgKi8KLSAgICBjb25z
dCBFdmFzX0Nvb3JkIHdpZHRoLCBoZWlnaHQ7ICAgICAgICAvKio8IHRpbGUgc2l6ZSAoc2VlIFRJ
TEVfU0laRV9BVF9aT09NKCkpICovCi0gICAgY29uc3QgRXZhc19Db2xvcnNwYWNlIGNzcGFjZTsg
LyoqPCBjb2xvcnNwYWNlICovCi0gICAgY29uc3QgZmxvYXQgem9vbTsgICAgICAgICAgICAgLyoq
PCB6b29tIGxldmVsIGNvbnRlbnRzIHdlcmUgcmVuZGVyZWQgYXQgKi8KLSAgICBjb25zdCBzaXpl
X3QgYnl0ZXM7ICAgICAgICAgICAvKio8IGJ5dGVzIHVzZWQgaW4gcGl4ZWxzLiBrZWVwCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogYmVmb3JlIHBpeGVscyB0byBndWFyYW50
ZWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBhbGlnbmVtZW50IQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotICAgIGludCB2aXNpYmxlOyAgICAg
ICAgICAgICAgICAgIC8qKjwgdmlzaWJpbGl0eSBjb3VudGVyIG9mIHRoaXMgdGlsZSAqLwotICAg
IEV2YXNfT2JqZWN0ICppbWFnZTsgICAgICAgICAgIC8qKjwgRXZhcyBJbWFnZSwgdGhlIHRpbGUg
dG8gYmUgcmVuZGVyZWQgKi8KLX07Ci0KLSNpbmNsdWRlICJld2tfdGlsZWRfbWF0cml4LmgiCi0j
aW5jbHVkZSAiZXdrX3RpbGVkX21vZGVsLmgiCi0KLS8qIHZpZXcgKi8KLUV2YXNfT2JqZWN0ICpl
d2tfdGlsZWRfYmFja2luZ19zdG9yZV9hZGQoRXZhcyAqZSk7Ci0KLXZvaWQgZXdrX3RpbGVkX2Jh
Y2tpbmdfc3RvcmVfcmVuZGVyX2NiX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sICgqY2Ip
KHZvaWQgKmRhdGEsIEV3a19UaWxlICp0LCBjb25zdCBFaW5hX1JlY3RhbmdsZSAqYXJlYSksIGNv
bnN0IHZvaWQgKmRhdGEpOwotCi1FaW5hX0Jvb2wgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc2Ny
b2xsX2Z1bGxfb2Zmc2V0X3NldChFdmFzX09iamVjdCAqbywgRXZhc19Db29yZCB4LCBFdmFzX0Nv
b3JkIHkpOwotRWluYV9Cb29sIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3Njcm9sbF9mdWxsX29m
ZnNldF9hZGQoRXZhc19PYmplY3QgKm8sIEV2YXNfQ29vcmQgZHgsIEV2YXNfQ29vcmQgZHkpOwot
RWluYV9Cb29sIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3Njcm9sbF9pbm5lcl9vZmZzZXRfYWRk
KEV2YXNfT2JqZWN0ICpvLCBFdmFzX0Nvb3JkIGR4LCBFdmFzX0Nvb3JkIGR5LCBFdmFzX0Nvb3Jk
IHgsIEV2YXNfQ29vcmQgeSwgRXZhc19Db29yZCB3LCBFdmFzX0Nvb3JkIGgpOwotCi1FaW5hX0Jv
b2wgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfem9vbV9zZXQoRXZhc19PYmplY3QgKm8sIGZsb2F0
ICp6b29tLCBFdmFzX0Nvb3JkIGN4LCBFdmFzX0Nvb3JkIGN5LCBFdmFzX0Nvb3JkICpvZmZ4LCBF
dmFzX0Nvb3JkICpvZmZ5KTsKLUVpbmFfQm9vbCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV96b29t
X3dlYWtfc2V0KEV2YXNfT2JqZWN0ICpvLCBmbG9hdCB6b29tLCBFdmFzX0Nvb3JkIGN4LCBFdmFz
X0Nvb3JkIGN5KTsKLXZvaWQgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfZml4X29mZnNldHMoRXZh
c19PYmplY3QgKm8sIEV2YXNfQ29vcmQgdywgRXZhc19Db29yZCBoKTsKLXZvaWQgZXdrX3RpbGVk
X2JhY2tpbmdfc3RvcmVfem9vbV93ZWFrX3Ntb290aF9zY2FsZV9zZXQoRXZhc19PYmplY3QgKm8s
IEVpbmFfQm9vbCBzbW9vdGhfc2NhbGUpOwotdm9pZCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9h
bHBoYV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBoYXNfYWxwaGEpOwotRWluYV9Cb29s
IGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3VwZGF0ZShFdmFzX09iamVjdCAqbywgY29uc3QgRWlu
YV9SZWN0YW5nbGUgKnVwZGF0ZSk7Ci12b2lkIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3VwZGF0
ZXNfcHJvY2Vzc19wcmVfc2V0KEV2YXNfT2JqZWN0ICpvLCB2b2lkKigqY2IpKHZvaWQgKmRhdGEs
IEV2YXNfT2JqZWN0ICpvKSwgY29uc3Qgdm9pZCAqZGF0YSk7Ci12b2lkIGV3a190aWxlZF9iYWNr
aW5nX3N0b3JlX3VwZGF0ZXNfcHJvY2Vzc19wb3N0X3NldChFdmFzX09iamVjdCAqbywgdm9pZCoo
KmNiKSh2b2lkICpkYXRhLCB2b2lkICpwcmVfZGF0YSwgRXZhc19PYmplY3QgKm8pLCBjb25zdCB2
b2lkICpkYXRhKTsKLXZvaWQgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdXBkYXRlc19wcm9jZXNz
KEV2YXNfT2JqZWN0ICpvKTsKLXZvaWQgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdXBkYXRlc19j
bGVhcihFdmFzX09iamVjdCAqbyk7Ci12b2lkIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX2NvbnRl
bnRzX3Jlc2l6ZShFdmFzX09iamVjdCAqbywgRXZhc19Db29yZCB3aWR0aCwgRXZhc19Db29yZCBo
ZWlnaHQpOwotdm9pZCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9kaXNhYmxlZF91cGRhdGVfc2V0
KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgdmFsdWUpOwotdm9pZCBld2tfdGlsZWRfYmFja2lu
Z19zdG9yZV9mbHVzaChFdmFzX09iamVjdCAqbyk7Ci12b2lkIGV3a190aWxlZF9iYWNraW5nX3N0
b3JlX2VuYWJsZV9zY2FsZV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCB2YWx1ZSk7Ci0K
LUV3a19UaWxlX1VudXNlZF9DYWNoZSAqZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdGlsZV91bnVz
ZWRfY2FjaGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKLXZvaWQgZXdrX3RpbGVkX2JhY2tp
bmdfc3RvcmVfdGlsZV91bnVzZWRfY2FjaGVfc2V0KEV2YXNfT2JqZWN0ICpvLCBFd2tfVGlsZV9V
bnVzZWRfQ2FjaGUgKnR1Yyk7Ci0KLUVpbmFfQm9vbCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9w
cmVfcmVuZGVyX3JlZ2lvbihFdmFzX09iamVjdCAqbywgRXZhc19Db29yZCB4LCBFdmFzX0Nvb3Jk
IHksIEV2YXNfQ29vcmQgdywgRXZhc19Db29yZCBoLCBmbG9hdCB6b29tKTsKLUVpbmFfQm9vbCBl
d2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3JlbGF0aXZlX3JhZGl1cyhFdmFzX09i
amVjdCAqbywgdW5zaWduZWQgaW50IG4sIGZsb2F0IHpvb20pOwotRWluYV9Cb29sIGV3a190aWxl
ZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfc3BpcmFsX3F1ZXVlKEV2YXNfT2JqZWN0ICpvLCBF
aW5hX1JlY3RhbmdsZSogdmlld19yZWN0LCBFaW5hX1JlY3RhbmdsZSAqcmVuZGVyX3JlY3QsIGlu
dCBtYXhfbWVtb3J5LCBmbG9hdCB6b29tKTsKLXZvaWQgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVf
cHJlX3JlbmRlcl9jYW5jZWwoRXZhc19PYmplY3QgKm8pOwotCi1FaW5hX0Jvb2wgZXdrX3RpbGVk
X2JhY2tpbmdfc3RvcmVfZGlzYWJsZV9yZW5kZXIoRXZhc19PYmplY3QgKm8pOwotRWluYV9Cb29s
IGV3a190aWxlZF9iYWNraW5nX3N0b3JlX2VuYWJsZV9yZW5kZXIoRXZhc19PYmplY3QgKm8pOwot
I2VuZGlmIC8vIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcml2YXRlLmggYi9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJpdmF0ZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkZjFjNWEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJpdmF0ZS5oCkBA
IC0wLDAgKzEsMTIxIEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFNhbXN1bmcg
RWxlY3Ryb25pY3MKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBQcm9GVVNJT04gZW1iZWRk
ZWQgc3lzdGVtcworCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisg
ICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KKyovCisKKy8qKgorICogQGZpbGUgICAgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVf
cHJpdmF0ZV9oCisgKiBAYnJpZWYgICBQcml2YXRlIG1ldGhvZHMgb2YgRVdLIHRpbGVkIGJhY2tp
bmcgc3RvcmUuCisgKi8KKworI2lmbmRlZiBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcml2YXRl
X2gKKyNkZWZpbmUgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJpdmF0ZV9oCisKKyNpbmNsdWRl
ICJFV2ViS2l0LmgiCisjaW5jbHVkZSA8RXZhcy5oPgorI2luY2x1ZGUgPGNhaXJvLmg+CisKKy8q
IEVuYWJsZSBhY2NvdW50aW5nIG9mIHJlbmRlciB0aW1lIGluIHRpbGUgc3RhdGlzdGljcyAqLwor
Ly8gI2RlZmluZSBUSUxFX1NUQVRTX0FDQ09VTlRfUkVOREVSX1RJTUUKKworCisvKiBJZiBkZWZp
bmUgZXdrIHdpbGwgZG8gbW9yZSBhY2NvdW50aW5nIHRvIGNoZWNrIGZvciBtZW1vcnkgbGVha3MK
KyAqIHRyeSAia2lsbCAtVVNSMSAkUElEIiB0byBnZXQgaW5zdGFudGFuZW91cyBkZWJ1ZworICog
dHJ5ICJraWxsIC1VU1IyICRQSUQiIHRvIGdldCBpbnN0YW50YW5lb3VzIGRlYnVnIGFuZCBmb3Jj
ZSBmbHVzaCBvZiBjYWNoZQorICovCisjdW5kZWYgREVCVUdfTUVNX0xFQUtTCisKK2NvbnN0IGlu
dCBkZWZhdWx0VGlsZVdpZHRoID0gMjU2OworY29uc3QgaW50IGRlZmF1bHRUaWxlSGVpZ3RoID0g
MjU2OworCitjb25zdCBmbG9hdCB6b29tU3RlcE1pbmltdW0gPSAwLjAxOworCisjZGVmaW5lIFRJ
TEVfU0laRV9BVF9aT09NKFNJWkUsIFpPT00pICgoaW50KXJvdW5kZigoU0laRSkgKiAoWk9PTSkp
KQorI2RlZmluZSBUSUxFX1pPT01fQVRfU0laRShTSVpFLCBPUklHX1RJTEUpICgoZmxvYXQpKFNJ
WkUpIC8gKGZsb2F0KShPUklHX1RJTEUpKQorI2RlZmluZSBST1VOREVEX1pPT00oU0laRSwgWk9P
TSkgKChmbG9hdCkoU0laRSkgLyAoZmxvYXQpKCgoaW50KXJvdW5kZigoU0laRSkgLyAoWk9PTSkp
KSkpCisKK3R5cGVkZWYgc3RydWN0IF9Fd2tfVGlsZSAgICAgICAgICAgICAgICAgICAgIEV3a19U
aWxlOwordHlwZWRlZiBzdHJ1Y3QgX0V3a19UaWxlX1N0YXRzICAgICAgICAgICAgICAgRXdrX1Rp
bGVfU3RhdHM7Cit0eXBlZGVmIHN0cnVjdCBfRXdrX1RpbGVfTWF0cml4ICAgICAgICAgICAgICBF
d2tfVGlsZV9NYXRyaXg7CisKK3N0cnVjdCBfRXdrX1RpbGVfU3RhdHMgeworICAgIGRvdWJsZSBs
YXN0X3VzZWQ7ICAgICAgICAvKio8IHRpbWUgb2YgbGFzdCB1c2UgKi8KKyNpZmRlZiBUSUxFX1NU
QVRTX0FDQ09VTlRfUkVOREVSX1RJTUUKKyAgICBkb3VibGUgcmVuZGVyX3RpbWU7ICAgICAgLyoq
PCBhbW91bnQgb2YgdGltZSB0aGlzIHRpbGUgdG9vayB0byByZW5kZXIgKi8KKyNlbmRpZgorICAg
IHVuc2lnbmVkIGludCBhcmVhOyAgICAgICAvKio8IGNhY2hlIGZvciAodyAqIGgpICovCisgICAg
dW5zaWduZWQgaW50IG1pc3NlczsgICAgIC8qKjwgbnVtYmVyIG9mIHRpbWVzIGl0IGJlY2FtZSBk
aXJ0eSBidXQgbm90CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHJlcGFpbnRlZCBh
dCBhbGwgc2luY2UgaXQgd2FzIG5vdCB2aXNpYmxlLgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKi8KKyAgICBFaW5hX0Jvb2wgZnVsbF91cGRhdGUgOiAxOyAvKio8IHRpbGUgcmVxdWly
ZXMgZnVsbCBzaXplIHVwZGF0ZSAqLworfTsKKworc3RydWN0IF9Fd2tfVGlsZSB7CisgICAgRWlu
YV9UaWxlciAqdXBkYXRlczsgICAgLyoqPCB1cGRhdGVkL2RpcnR5IGFyZWFzICovCisgICAgRXdr
X1RpbGVfU3RhdHMgc3RhdHM7ICAgICAgIC8qKjwgdGlsZSB1c2FnZSBzdGF0aXN0aWNzICovCisg
ICAgdW5zaWduZWQgbG9uZyBjb2x1bW4sIHJvdzsgLyoqPCB0aWxlIHRpbGUgcG9zaXRpb24gKi8K
KyAgICBFdmFzX0Nvb3JkIHgsIHk7ICAgICAgICAvKio8IHRpbGUgY29vcmRpbmF0ZSBwb3NpdGlv
biAqLworCisgICAgLyoqIE5ldmVyIGV2ZXIgY2hhbmdlIHRob3NlIGFmdGVyIHRpbGUgaXMgY3Jl
YXRlZCAocmVzcGVjdCBjb25zdCEpICovCisgICAgY29uc3QgRXZhc19Db29yZCB3aWR0aCwgaGVp
Z2h0OyAgICAgICAgLyoqPCB0aWxlIHNpemUgKHNlZSBUSUxFX1NJWkVfQVRfWk9PTSgpKSAqLwor
ICAgIGNvbnN0IEV2YXNfQ29sb3JzcGFjZSBjc3BhY2U7IC8qKjwgY29sb3JzcGFjZSAqLworICAg
IGNvbnN0IGZsb2F0IHpvb207ICAgICAgICAgICAgIC8qKjwgem9vbSBsZXZlbCBjb250ZW50cyB3
ZXJlIHJlbmRlcmVkIGF0ICovCisgICAgY29uc3Qgc2l6ZV90IGJ5dGVzOyAgICAgICAgICAgLyoq
PCBieXRlcyB1c2VkIGluIHBpeGVscy4ga2VlcAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAqIGJlZm9yZSBwaXhlbHMgdG8gZ3VhcmFudGVlCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICogYWxpZ25lbWVudCEKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKi8KKyAgICBpbnQgdmlzaWJsZTsgICAgICAgICAgICAgICAgICAvKio8IHZpc2li
aWxpdHkgY291bnRlciBvZiB0aGlzIHRpbGUgKi8KKyAgICBFdmFzX09iamVjdCAqaW1hZ2U7ICAg
ICAgICAgICAvKio8IEV2YXMgSW1hZ2UsIHRoZSB0aWxlIHRvIGJlIHJlbmRlcmVkICovCit9Owor
CisvKiB2aWV3ICovCitFdmFzX09iamVjdCAqZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfYWRkKEV2
YXMgKmUpOworCit2b2lkIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3JlbmRlcl9jYl9zZXQoRXZh
c19PYmplY3QgKm8sIEVpbmFfQm9vbCAoKmNiKSh2b2lkICpkYXRhLCBFd2tfVGlsZSAqdCwgY29u
c3QgRWluYV9SZWN0YW5nbGUgKmFyZWEpLCBjb25zdCB2b2lkICpkYXRhKTsKKworRWluYV9Cb29s
IGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3Njcm9sbF9mdWxsX29mZnNldF9zZXQoRXZhc19PYmpl
Y3QgKm8sIEV2YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5KTsKK0VpbmFfQm9vbCBld2tfdGlsZWRf
YmFja2luZ19zdG9yZV9zY3JvbGxfZnVsbF9vZmZzZXRfYWRkKEV2YXNfT2JqZWN0ICpvLCBFdmFz
X0Nvb3JkIGR4LCBFdmFzX0Nvb3JkIGR5KTsKK0VpbmFfQm9vbCBld2tfdGlsZWRfYmFja2luZ19z
dG9yZV9zY3JvbGxfaW5uZXJfb2Zmc2V0X2FkZChFdmFzX09iamVjdCAqbywgRXZhc19Db29yZCBk
eCwgRXZhc19Db29yZCBkeSwgRXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkIHksIEV2YXNfQ29vcmQg
dywgRXZhc19Db29yZCBoKTsKKworRWluYV9Cb29sIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3pv
b21fc2V0KEV2YXNfT2JqZWN0ICpvLCBmbG9hdCAqem9vbSwgRXZhc19Db29yZCBjeCwgRXZhc19D
b29yZCBjeSwgRXZhc19Db29yZCAqb2ZmeCwgRXZhc19Db29yZCAqb2ZmeSk7CitFaW5hX0Jvb2wg
ZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfem9vbV93ZWFrX3NldChFdmFzX09iamVjdCAqbywgZmxv
YXQgem9vbSwgRXZhc19Db29yZCBjeCwgRXZhc19Db29yZCBjeSk7Cit2b2lkIGV3a190aWxlZF9i
YWNraW5nX3N0b3JlX2ZpeF9vZmZzZXRzKEV2YXNfT2JqZWN0ICpvLCBFdmFzX0Nvb3JkIHcsIEV2
YXNfQ29vcmQgaCk7Cit2b2lkIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3pvb21fd2Vha19zbW9v
dGhfc2NhbGVfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgc21vb3RoX3NjYWxlKTsKK3Zv
aWQgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfYWxwaGFfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5h
X0Jvb2wgaGFzX2FscGhhKTsKK0VpbmFfQm9vbCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV91cGRh
dGUoRXZhc19PYmplY3QgKm8sIGNvbnN0IEVpbmFfUmVjdGFuZ2xlICp1cGRhdGUpOwordm9pZCBl
d2tfdGlsZWRfYmFja2luZ19zdG9yZV91cGRhdGVzX3Byb2Nlc3NfcHJlX3NldChFdmFzX09iamVj
dCAqbywgdm9pZCooKmNiKSh2b2lkICpkYXRhLCBFdmFzX09iamVjdCAqbyksIGNvbnN0IHZvaWQg
KmRhdGEpOwordm9pZCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV91cGRhdGVzX3Byb2Nlc3NfcG9z
dF9zZXQoRXZhc19PYmplY3QgKm8sIHZvaWQqKCpjYikodm9pZCAqZGF0YSwgdm9pZCAqcHJlX2Rh
dGEsIEV2YXNfT2JqZWN0ICpvKSwgY29uc3Qgdm9pZCAqZGF0YSk7Cit2b2lkIGV3a190aWxlZF9i
YWNraW5nX3N0b3JlX3VwZGF0ZXNfcHJvY2VzcyhFdmFzX09iamVjdCAqbyk7Cit2b2lkIGV3a190
aWxlZF9iYWNraW5nX3N0b3JlX3VwZGF0ZXNfY2xlYXIoRXZhc19PYmplY3QgKm8pOwordm9pZCBl
d2tfdGlsZWRfYmFja2luZ19zdG9yZV9jb250ZW50c19yZXNpemUoRXZhc19PYmplY3QgKm8sIEV2
YXNfQ29vcmQgd2lkdGgsIEV2YXNfQ29vcmQgaGVpZ2h0KTsKK3ZvaWQgZXdrX3RpbGVkX2JhY2tp
bmdfc3RvcmVfZGlzYWJsZWRfdXBkYXRlX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIHZh
bHVlKTsKK3ZvaWQgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfZmx1c2goRXZhc19PYmplY3QgKm8p
Owordm9pZCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9lbmFibGVfc2NhbGVfc2V0KEV2YXNfT2Jq
ZWN0ICpvLCBFaW5hX0Jvb2wgdmFsdWUpOworCitFd2tfVGlsZV9VbnVzZWRfQ2FjaGUgKmV3a190
aWxlZF9iYWNraW5nX3N0b3JlX3RpbGVfdW51c2VkX2NhY2hlX2dldChjb25zdCBFdmFzX09iamVj
dCAqbyk7Cit2b2lkIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3RpbGVfdW51c2VkX2NhY2hlX3Nl
dChFdmFzX09iamVjdCAqbywgRXdrX1RpbGVfVW51c2VkX0NhY2hlICp0dWMpOworCitFaW5hX0Jv
b2wgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRlcl9yZWdpb24oRXZhc19PYmplY3Qg
Km8sIEV2YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5LCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29vcmQg
aCwgZmxvYXQgem9vbSk7CitFaW5hX0Jvb2wgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJlX3Jl
bmRlcl9yZWxhdGl2ZV9yYWRpdXMoRXZhc19PYmplY3QgKm8sIHVuc2lnbmVkIGludCBuLCBmbG9h
dCB6b29tKTsKK0VpbmFfQm9vbCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3Nw
aXJhbF9xdWV1ZShFdmFzX09iamVjdCAqbywgRWluYV9SZWN0YW5nbGUqIHZpZXdfcmVjdCwgRWlu
YV9SZWN0YW5nbGUgKnJlbmRlcl9yZWN0LCBpbnQgbWF4X21lbW9yeSwgZmxvYXQgem9vbSk7Cit2
b2lkIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfY2FuY2VsKEV2YXNfT2JqZWN0
ICpvKTsKKworRWluYV9Cb29sIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX2Rpc2FibGVfcmVuZGVy
KEV2YXNfT2JqZWN0ICpvKTsKK0VpbmFfQm9vbCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9lbmFi
bGVfcmVuZGVyKEV2YXNfT2JqZWN0ICpvKTsKKworI2VuZGlmIC8vIGV3a190aWxlZF9iYWNraW5n
X3N0b3JlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRfbWF0
cml4LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRfbWF0cml4LmNwcAppbmRl
eCAxNTE2ODFmLi4zYWIxNDE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X3RpbGVkX21hdHJpeC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9t
YXRyaXguY3BwCkBAIC0yMCw5ICsyMCwxMCBAQAogCiAjZGVmaW5lIF9fU1REQ19GT1JNQVRfTUFD
Uk9TCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiZXdrX3RpbGVkX21hdHJpeC5oIgog
Ci0jaW5jbHVkZSAiZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuaCIKKyNpbmNsdWRlICJld2tfdGls
ZWRfYmFja2luZ19zdG9yZV9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX3RpbGVkX21hdHJpeF9w
cml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX3RpbGVkX21vZGVsX3ByaXZhdGUuaCIKICNpbmNsdWRl
ICJld2tfdGlsZWRfcHJpdmF0ZS5oIgogI2luY2x1ZGUgPEVpbmEuaD4KICNpbmNsdWRlIDxlcnJu
by5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9tYXRyaXgu
aCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRfbWF0cml4LmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAzZWQxNGMuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a190aWxlZF9tYXRyaXguaAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAK
LS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgU2Ftc3VuZyBFbGVjdHJvbmljcwotICAg
IENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCi0KLSAg
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
LSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQot
I2lmbmRlZiBld2tfdGlsZWRfbWF0cml4X2gKLSNkZWZpbmUgZXdrX3RpbGVkX21hdHJpeF9oCi0K
LSNpbmNsdWRlICJld2tfdGlsZWRfYmFja2luZ19zdG9yZS5oIgotCi0jaW5jbHVkZSA8RXZhcy5o
PgotCi0vKiBtYXRyaXggb2YgdGlsZXMgKi8KLUV3a19UaWxlX01hdHJpeCAqZXdrX3RpbGVfbWF0
cml4X25ldyhFd2tfVGlsZV9VbnVzZWRfQ2FjaGUgKnR1YywgdW5zaWduZWQgbG9uZyBjb2xzLCB1
bnNpZ25lZCBsb25nIHJvd3MsIGZsb2F0IHpvb21fbGV2ZWwsIEV2YXNfQ29sb3JzcGFjZSBjb2xv
cl9zcGFjZSwgdm9pZCAoKnJlbmRlcl9jYWxsYmFjaykodm9pZCAqZGF0YSwgRXdrX1RpbGUgKnQs
IGNvbnN0IEVpbmFfUmVjdGFuZ2xlICp1cGRhdGUpLCBjb25zdCB2b2lkICpyZW5kZXJfZGF0YSk7
Ci12b2lkIGV3a190aWxlX21hdHJpeF9lbnRyeV9uZXcoRXdrX1RpbGVfTWF0cml4ICp0bSwgZmxv
YXQgem9vbSk7Ci12b2lkIGV3a190aWxlX21hdHJpeF9mcmVlKEV3a19UaWxlX01hdHJpeCAqdG0p
OwotCi12b2lkIGV3a190aWxlX21hdHJpeF9yZXNpemUoRXdrX1RpbGVfTWF0cml4ICp0bSwgdW5z
aWduZWQgbG9uZyBjb2xzLCB1bnNpZ25lZCBsb25nIHJvd3MpOwotdm9pZCBld2tfdGlsZV9tYXRy
aXhfc2l6ZV9nZXQoRXdrX1RpbGVfTWF0cml4ICp0bSwgdW5zaWduZWQgbG9uZyAqY29scywgdW5z
aWduZWQgbG9uZyAqcm93cyk7Ci1ib29sIGV3a190aWxlX21hdHJpeF96b29tX2xldmVsX3NldChF
d2tfVGlsZV9NYXRyaXggKnRtLCBmbG9hdCB6b29tKTsKLXZvaWQgZXdrX3RpbGVfbWF0cml4X2lu
dmFsaWRhdGUoRXdrX1RpbGVfTWF0cml4ICp0bSk7Ci0KLUV3a19UaWxlX1VudXNlZF9DYWNoZSAq
ZXdrX3RpbGVfbWF0cml4X3VudXNlZF9jYWNoZV9nZXQoY29uc3QgRXdrX1RpbGVfTWF0cml4ICp0
bSk7Ci0KLUV3a19UaWxlICpld2tfdGlsZV9tYXRyaXhfdGlsZV9leGFjdF9nZXQoRXdrX1RpbGVf
TWF0cml4ICp0bSwgdW5zaWduZWQgbG9uZyBjb2wsIHVuc2lnbmVkIGxvbmcgcm93LCBmbG9hdCB6
b29tKTsKLUVpbmFfQm9vbCBld2tfdGlsZV9tYXRyaXhfdGlsZV9leGFjdF9leGlzdHMoRXdrX1Rp
bGVfTWF0cml4ICp0bSwgdW5zaWduZWQgbG9uZyBjb2wsIHVuc2lnbmVkIGxvbmcgcm93LCBmbG9h
dCB6b29tKTsKLUV3a19UaWxlICpld2tfdGlsZV9tYXRyaXhfdGlsZV9uZWFyZXN0X2dldChFd2tf
VGlsZV9NYXRyaXggKnRtLCB1bnNpZ25lZCBsb25nIGNvbCwgdW5zaWduZWQgbG9uZyByb3csIGZs
b2F0IHpvb20pOwotRXdrX1RpbGUgKmV3a190aWxlX21hdHJpeF90aWxlX25ldyhFd2tfVGlsZV9N
YXRyaXggKnRtLCBFdmFzICpldmFzLCB1bnNpZ25lZCBsb25nIGNvbCwgdW5zaWduZWQgbG9uZyBy
b3csIGZsb2F0IHpvb20pOwotRWluYV9Cb29sIGV3a190aWxlX21hdHJpeF90aWxlX3B1dChFd2tf
VGlsZV9NYXRyaXggKnRtLCBFd2tfVGlsZSAqdCwgZG91YmxlIGxhc3RfdXNlZCk7Ci0KLUVpbmFf
Qm9vbCBld2tfdGlsZV9tYXRyaXhfdGlsZV91cGRhdGUoRXdrX1RpbGVfTWF0cml4ICp0bSwgdW5z
aWduZWQgbG9uZyBjb2wsIHVuc2lnbmVkIGxvbmcgcm93LCBjb25zdCBFaW5hX1JlY3RhbmdsZSAq
dXBkYXRlKTsKLUVpbmFfQm9vbCBld2tfdGlsZV9tYXRyaXhfdGlsZV91cGRhdGVfZnVsbChFd2tf
VGlsZV9NYXRyaXggKnRtLCB1bnNpZ25lZCBsb25nIGNvbCwgdW5zaWduZWQgbG9uZyByb3cpOwot
dm9pZCBld2tfdGlsZV9tYXRyaXhfdGlsZV91cGRhdGVzX2NsZWFyKEV3a19UaWxlX01hdHJpeCAq
dG0sIEV3a19UaWxlICp0KTsKLQotRWluYV9Cb29sIGV3a190aWxlX21hdHJpeF91cGRhdGUoRXdr
X1RpbGVfTWF0cml4ICp0bSwgY29uc3QgRWluYV9SZWN0YW5nbGUgKnVwZGF0ZSwgZmxvYXQgem9v
bSk7Ci12b2lkIGV3a190aWxlX21hdHJpeF91cGRhdGVzX3Byb2Nlc3MoRXdrX1RpbGVfTWF0cml4
ICp0bSk7Ci12b2lkIGV3a190aWxlX21hdHJpeF91cGRhdGVzX2NsZWFyKEV3a19UaWxlX01hdHJp
eCAqdG0pOwotdm9pZCBld2tfdGlsZV9tYXRyaXhfZnJlZXplKEV3a19UaWxlX01hdHJpeCAqdG0p
Owotdm9pZCBld2tfdGlsZV9tYXRyaXhfdGhhdyhFd2tfVGlsZV9NYXRyaXggKnRtKTsKLQotLy8g
cmVtb3ZlIG1lIQotdm9pZCBld2tfdGlsZV9tYXRyaXhfZGJnKGNvbnN0IEV3a19UaWxlX01hdHJp
eCAqdG0pOwotdm9pZCBld2tfdGlsZV91bnVzZWRfY2FjaGVfZGJnKGNvbnN0IEV3a19UaWxlX1Vu
dXNlZF9DYWNoZSAqdHVjKTsKLXZvaWQgZXdrX3RpbGVfYWNjb3VudGluZ19kYmcoKTsKLQotI2Vu
ZGlmIC8vIGV3a190aWxlZF9tYXRyaXhfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a190aWxlZF9tYXRyaXhfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a190aWxlZF9tYXRyaXhfcHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjc2MzBlYWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X3RpbGVkX21hdHJpeF9wcml2YXRlLmgKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAgICBDb3B5cmln
aHQgKEMpIDIwMDktMjAxMCBTYW1zdW5nIEVsZWN0cm9uaWNzCisgICAgQ29weXJpZ2h0IChDKSAy
MDA5LTIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMKKworICAgIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwor
ICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisvKioKKyAqIEBmaWxlICAg
IGV3a190aWxlZF9tYXRyaXhfcHJpdmF0ZV9oCisgKiBAYnJpZWYgICBQcml2YXRlIG1ldGhvZHMg
b2YgRVdLIHRpbGVkIG1hdHJpeC4KKyAqLworCisjaWZuZGVmIGV3a190aWxlZF9tYXRyaXhfcHJp
dmF0ZV9oCisjZGVmaW5lIGV3a190aWxlZF9tYXRyaXhfcHJpdmF0ZV9oCisKKyNpbmNsdWRlICJl
d2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX3RpbGVkX21h
dHJpeF9wcml2YXRlLmgiCisKKyNpbmNsdWRlIDxFdmFzLmg+CisKKy8qIG1hdHJpeCBvZiB0aWxl
cyAqLworRXdrX1RpbGVfTWF0cml4ICpld2tfdGlsZV9tYXRyaXhfbmV3KEV3a19UaWxlX1VudXNl
ZF9DYWNoZSAqdHVjLCB1bnNpZ25lZCBsb25nIGNvbHMsIHVuc2lnbmVkIGxvbmcgcm93cywgZmxv
YXQgem9vbV9sZXZlbCwgRXZhc19Db2xvcnNwYWNlIGNvbG9yX3NwYWNlLCB2b2lkICgqcmVuZGVy
X2NhbGxiYWNrKSh2b2lkICpkYXRhLCBFd2tfVGlsZSAqdCwgY29uc3QgRWluYV9SZWN0YW5nbGUg
KnVwZGF0ZSksIGNvbnN0IHZvaWQgKnJlbmRlcl9kYXRhKTsKK3ZvaWQgZXdrX3RpbGVfbWF0cml4
X2VudHJ5X25ldyhFd2tfVGlsZV9NYXRyaXggKnRtLCBmbG9hdCB6b29tKTsKK3ZvaWQgZXdrX3Rp
bGVfbWF0cml4X2ZyZWUoRXdrX1RpbGVfTWF0cml4ICp0bSk7CisKK3ZvaWQgZXdrX3RpbGVfbWF0
cml4X3Jlc2l6ZShFd2tfVGlsZV9NYXRyaXggKnRtLCB1bnNpZ25lZCBsb25nIGNvbHMsIHVuc2ln
bmVkIGxvbmcgcm93cyk7Cit2b2lkIGV3a190aWxlX21hdHJpeF9zaXplX2dldChFd2tfVGlsZV9N
YXRyaXggKnRtLCB1bnNpZ25lZCBsb25nICpjb2xzLCB1bnNpZ25lZCBsb25nICpyb3dzKTsKK2Jv
b2wgZXdrX3RpbGVfbWF0cml4X3pvb21fbGV2ZWxfc2V0KEV3a19UaWxlX01hdHJpeCAqdG0sIGZs
b2F0IHpvb20pOwordm9pZCBld2tfdGlsZV9tYXRyaXhfaW52YWxpZGF0ZShFd2tfVGlsZV9NYXRy
aXggKnRtKTsKKworRXdrX1RpbGVfVW51c2VkX0NhY2hlICpld2tfdGlsZV9tYXRyaXhfdW51c2Vk
X2NhY2hlX2dldChjb25zdCBFd2tfVGlsZV9NYXRyaXggKnRtKTsKKworRXdrX1RpbGUgKmV3a190
aWxlX21hdHJpeF90aWxlX2V4YWN0X2dldChFd2tfVGlsZV9NYXRyaXggKnRtLCB1bnNpZ25lZCBs
b25nIGNvbCwgdW5zaWduZWQgbG9uZyByb3csIGZsb2F0IHpvb20pOworRWluYV9Cb29sIGV3a190
aWxlX21hdHJpeF90aWxlX2V4YWN0X2V4aXN0cyhFd2tfVGlsZV9NYXRyaXggKnRtLCB1bnNpZ25l
ZCBsb25nIGNvbCwgdW5zaWduZWQgbG9uZyByb3csIGZsb2F0IHpvb20pOworRXdrX1RpbGUgKmV3
a190aWxlX21hdHJpeF90aWxlX25lYXJlc3RfZ2V0KEV3a19UaWxlX01hdHJpeCAqdG0sIHVuc2ln
bmVkIGxvbmcgY29sLCB1bnNpZ25lZCBsb25nIHJvdywgZmxvYXQgem9vbSk7CitFd2tfVGlsZSAq
ZXdrX3RpbGVfbWF0cml4X3RpbGVfbmV3KEV3a19UaWxlX01hdHJpeCAqdG0sIEV2YXMgKmV2YXMs
IHVuc2lnbmVkIGxvbmcgY29sLCB1bnNpZ25lZCBsb25nIHJvdywgZmxvYXQgem9vbSk7CitFaW5h
X0Jvb2wgZXdrX3RpbGVfbWF0cml4X3RpbGVfcHV0KEV3a19UaWxlX01hdHJpeCAqdG0sIEV3a19U
aWxlICp0LCBkb3VibGUgbGFzdF91c2VkKTsKKworRWluYV9Cb29sIGV3a190aWxlX21hdHJpeF90
aWxlX3VwZGF0ZShFd2tfVGlsZV9NYXRyaXggKnRtLCB1bnNpZ25lZCBsb25nIGNvbCwgdW5zaWdu
ZWQgbG9uZyByb3csIGNvbnN0IEVpbmFfUmVjdGFuZ2xlICp1cGRhdGUpOworRWluYV9Cb29sIGV3
a190aWxlX21hdHJpeF90aWxlX3VwZGF0ZV9mdWxsKEV3a19UaWxlX01hdHJpeCAqdG0sIHVuc2ln
bmVkIGxvbmcgY29sLCB1bnNpZ25lZCBsb25nIHJvdyk7Cit2b2lkIGV3a190aWxlX21hdHJpeF90
aWxlX3VwZGF0ZXNfY2xlYXIoRXdrX1RpbGVfTWF0cml4ICp0bSwgRXdrX1RpbGUgKnQpOworCitF
aW5hX0Jvb2wgZXdrX3RpbGVfbWF0cml4X3VwZGF0ZShFd2tfVGlsZV9NYXRyaXggKnRtLCBjb25z
dCBFaW5hX1JlY3RhbmdsZSAqdXBkYXRlLCBmbG9hdCB6b29tKTsKK3ZvaWQgZXdrX3RpbGVfbWF0
cml4X3VwZGF0ZXNfcHJvY2VzcyhFd2tfVGlsZV9NYXRyaXggKnRtKTsKK3ZvaWQgZXdrX3RpbGVf
bWF0cml4X3VwZGF0ZXNfY2xlYXIoRXdrX1RpbGVfTWF0cml4ICp0bSk7Cit2b2lkIGV3a190aWxl
X21hdHJpeF9mcmVlemUoRXdrX1RpbGVfTWF0cml4ICp0bSk7Cit2b2lkIGV3a190aWxlX21hdHJp
eF90aGF3KEV3a19UaWxlX01hdHJpeCAqdG0pOworCisvLyByZW1vdmUgbWUhCit2b2lkIGV3a190
aWxlX21hdHJpeF9kYmcoY29uc3QgRXdrX1RpbGVfTWF0cml4ICp0bSk7Cit2b2lkIGV3a190aWxl
X3VudXNlZF9jYWNoZV9kYmcoY29uc3QgRXdrX1RpbGVfVW51c2VkX0NhY2hlICp0dWMpOwordm9p
ZCBld2tfdGlsZV9hY2NvdW50aW5nX2RiZygpOworCisjZW5kaWYgLy8gZXdrX3RpbGVkX21hdHJp
eF9wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRf
bW9kZWwuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9tb2RlbC5jcHAKaW5k
ZXggYzBlNzAyMC4uYmY1YTcyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a190aWxlZF9tb2RlbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9t
b2RlbC5jcHAKQEAgLTIwLDkgKzIwLDkgQEAKIAogI2RlZmluZSBfX1NURENfRk9STUFUX01BQ1JP
UwogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgImV3a190aWxlZF9tb2RlbC5oIgogCi0j
aW5jbHVkZSAiZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuaCIKKyNpbmNsdWRlICJld2tfdGlsZWRf
YmFja2luZ19zdG9yZV9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX3RpbGVkX21vZGVsX3ByaXZh
dGUuaCIKICNpbmNsdWRlICJld2tfdGlsZWRfcHJpdmF0ZS5oIgogI2luY2x1ZGUgPEVjb3JlX0V2
YXMuaD4KICNpbmNsdWRlIDxFaW5hLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX3RpbGVkX21vZGVsLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX21v
ZGVsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhYWYyMTMuLjAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9tb2RlbC5oCisrKyAvZGV2L251bGwK
QEAgLTEsNTYgKzAsMCBAQAotLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBTYW1zdW5n
IEVsZWN0cm9uaWNzCi0gICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgUHJvRlVTSU9OIGVtYmVk
ZGVkIHN5c3RlbXMKLQotICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAgIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICAgIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQot
ICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAgICBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAgIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
LSAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gICAgQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCi0qLwotCi0jaWZuZGVmIGV3a190aWxlZF9tb2RlbF9oCi0jZGVmaW5lIGV3a190
aWxlZF9tb2RlbF9oCi0KLSNpbmNsdWRlICJld2tfdGlsZWRfYmFja2luZ19zdG9yZS5oIgotCi0j
aW5jbHVkZSA8RXZhcy5oPgotCi0vKiBtb2RlbCAqLwotRXdrX1RpbGUgKmV3a190aWxlX25ldyhF
dmFzICpldmFzLCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29vcmQgaCwgZmxvYXQgem9vbSwgRXZhc19D
b2xvcnNwYWNlIGNzcGFjZSk7Ci12b2lkIGV3a190aWxlX2ZyZWUoRXdrX1RpbGUgKnQpOwotdm9p
ZCBld2tfdGlsZV91bnVzZWRfY2FjaGVfY2xlYXIoRXdrX1RpbGVfVW51c2VkX0NhY2hlICp0dWMp
Owotdm9pZCBld2tfdGlsZV9zaG93KEV3a19UaWxlICp0KTsKLXZvaWQgZXdrX3RpbGVfaGlkZShF
d2tfVGlsZSAqdCk7Ci1zaXplX3QgZXdrX3RpbGVfbWVtb3J5X3NpemVfZ2V0KGNvbnN0IEV3a19U
aWxlICp0KTsKLUVpbmFfQm9vbCBld2tfdGlsZV92aXNpYmxlX2dldChFd2tfVGlsZSAqdCk7Ci12
b2lkIGV3a190aWxlX3VwZGF0ZV9mdWxsKEV3a19UaWxlICp0KTsKLXZvaWQgZXdrX3RpbGVfdXBk
YXRlX2FyZWEoRXdrX1RpbGUgKnQsIGNvbnN0IEVpbmFfUmVjdGFuZ2xlICpyKTsKLXZvaWQgZXdr
X3RpbGVfdXBkYXRlc19wcm9jZXNzKEV3a19UaWxlICp0LCB2b2lkICgqY2IpKHZvaWQgKmRhdGEs
IEV3a19UaWxlICp0LCBjb25zdCBFaW5hX1JlY3RhbmdsZSAqdXBkYXRlKSwgY29uc3Qgdm9pZCAq
ZGF0YSk7Ci12b2lkIGV3a190aWxlX3VwZGF0ZXNfY2xlYXIoRXdrX1RpbGUgKnQpOwotCi0vKiBj
YWNoZSBvZiB1bnVzZWQgdGlsZXMgKi8KLUV3a19UaWxlX1VudXNlZF9DYWNoZSAqZXdrX3RpbGVf
dW51c2VkX2NhY2hlX25ldyhzaXplX3QgbWF4KTsKLXZvaWQgZXdrX3RpbGVfdW51c2VkX2NhY2hl
X2xvY2tfYXJlYShFd2tfVGlsZV9VbnVzZWRfQ2FjaGUgKnR1YywgRXZhc19Db29yZCB4LCBFdmFz
X0Nvb3JkIHksIEV2YXNfQ29vcmQgdywgRXZhc19Db29yZCBoLCBmbG9hdCB6b29tKTsKLXZvaWQg
ZXdrX3RpbGVfdW51c2VkX2NhY2hlX3VubG9ja19hcmVhKEV3a19UaWxlX1VudXNlZF9DYWNoZSAq
dHVjKTsKLUV3a19UaWxlX1VudXNlZF9DYWNoZSAqZXdrX3RpbGVfdW51c2VkX2NhY2hlX3JlZihF
d2tfVGlsZV9VbnVzZWRfQ2FjaGUgKnR1Yyk7Ci12b2lkIGV3a190aWxlX3VudXNlZF9jYWNoZV91
bnJlZihFd2tfVGlsZV9VbnVzZWRfQ2FjaGUgKnR1Yyk7Ci0KLXZvaWQgZXdrX3RpbGVfdW51c2Vk
X2NhY2hlX2RpcnR5KEV3a19UaWxlX1VudXNlZF9DYWNoZSAqdHVjKTsKLQotdm9pZCBld2tfdGls
ZV91bnVzZWRfY2FjaGVfZnJlZXplKEV3a19UaWxlX1VudXNlZF9DYWNoZSAqdHVjKTsKLXZvaWQg
ZXdrX3RpbGVfdW51c2VkX2NhY2hlX3RoYXcoRXdrX1RpbGVfVW51c2VkX0NhY2hlICp0dWMpOwot
Ci1FaW5hX0Jvb2wgZXdrX3RpbGVfdW51c2VkX2NhY2hlX3RpbGVfZ2V0KEV3a19UaWxlX1VudXNl
ZF9DYWNoZSAqdHVjLCBFd2tfVGlsZSAqdCk7Ci1FaW5hX0Jvb2wgZXdrX3RpbGVfdW51c2VkX2Nh
Y2hlX3RpbGVfcHV0KEV3a19UaWxlX1VudXNlZF9DYWNoZSAqdHVjLCBFd2tfVGlsZSAqdCwgdm9p
ZCAoKiB0aWxlX2ZyZWVfY2IpKHZvaWQgKmRhdGEsIEV3a19UaWxlICp0KSwgY29uc3Qgdm9pZCAq
ZGF0YSk7Ci0KLSNlbmRpZiAvLyBld2tfdGlsZWRfbW9kZWxfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9tb2RlbF9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX3RpbGVkX21vZGVsX3ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi5mMjY5NzNhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a190aWxlZF9tb2RlbF9wcml2YXRlLmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAg
ICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBTYW1zdW5nIEVsZWN0cm9uaWNzCisgICAgQ29weXJp
Z2h0IChDKSAyMDA5LTIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMKKworICAgIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
ICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisvKioKKyAq
IEBmaWxlICAgIGV3a190aWxlZF9tb2RlbF9wcml2YXRlX2gKKyAqIEBicmllZiAgIFByaXZhdGUg
bWV0aG9kcyBvZiBFV0sgdGlsZWQgbW9kZWwuCisgKi8KKworI2lmbmRlZiBld2tfdGlsZWRfbW9k
ZWxfcHJpdmF0ZV9oCisjZGVmaW5lIGV3a190aWxlZF9tb2RlbF9wcml2YXRlX2gKKworI2luY2x1
ZGUgImV3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByaXZhdGUuaCIKKworI2luY2x1ZGUgPEV2YXMu
aD4KKworLyogbW9kZWwgKi8KK0V3a19UaWxlICpld2tfdGlsZV9uZXcoRXZhcyAqZXZhcywgRXZh
c19Db29yZCB3LCBFdmFzX0Nvb3JkIGgsIGZsb2F0IHpvb20sIEV2YXNfQ29sb3JzcGFjZSBjc3Bh
Y2UpOwordm9pZCBld2tfdGlsZV9mcmVlKEV3a19UaWxlICp0KTsKK3ZvaWQgZXdrX3RpbGVfdW51
c2VkX2NhY2hlX2NsZWFyKEV3a19UaWxlX1VudXNlZF9DYWNoZSAqdHVjKTsKK3ZvaWQgZXdrX3Rp
bGVfc2hvdyhFd2tfVGlsZSAqdCk7Cit2b2lkIGV3a190aWxlX2hpZGUoRXdrX1RpbGUgKnQpOwor
c2l6ZV90IGV3a190aWxlX21lbW9yeV9zaXplX2dldChjb25zdCBFd2tfVGlsZSAqdCk7CitFaW5h
X0Jvb2wgZXdrX3RpbGVfdmlzaWJsZV9nZXQoRXdrX1RpbGUgKnQpOwordm9pZCBld2tfdGlsZV91
cGRhdGVfZnVsbChFd2tfVGlsZSAqdCk7Cit2b2lkIGV3a190aWxlX3VwZGF0ZV9hcmVhKEV3a19U
aWxlICp0LCBjb25zdCBFaW5hX1JlY3RhbmdsZSAqcik7Cit2b2lkIGV3a190aWxlX3VwZGF0ZXNf
cHJvY2VzcyhFd2tfVGlsZSAqdCwgdm9pZCAoKmNiKSh2b2lkICpkYXRhLCBFd2tfVGlsZSAqdCwg
Y29uc3QgRWluYV9SZWN0YW5nbGUgKnVwZGF0ZSksIGNvbnN0IHZvaWQgKmRhdGEpOwordm9pZCBl
d2tfdGlsZV91cGRhdGVzX2NsZWFyKEV3a19UaWxlICp0KTsKKworLyogY2FjaGUgb2YgdW51c2Vk
IHRpbGVzICovCitFd2tfVGlsZV9VbnVzZWRfQ2FjaGUgKmV3a190aWxlX3VudXNlZF9jYWNoZV9u
ZXcoc2l6ZV90IG1heCk7Cit2b2lkIGV3a190aWxlX3VudXNlZF9jYWNoZV9sb2NrX2FyZWEoRXdr
X1RpbGVfVW51c2VkX0NhY2hlICp0dWMsIEV2YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5LCBFdmFz
X0Nvb3JkIHcsIEV2YXNfQ29vcmQgaCwgZmxvYXQgem9vbSk7Cit2b2lkIGV3a190aWxlX3VudXNl
ZF9jYWNoZV91bmxvY2tfYXJlYShFd2tfVGlsZV9VbnVzZWRfQ2FjaGUgKnR1Yyk7CitFd2tfVGls
ZV9VbnVzZWRfQ2FjaGUgKmV3a190aWxlX3VudXNlZF9jYWNoZV9yZWYoRXdrX1RpbGVfVW51c2Vk
X0NhY2hlICp0dWMpOwordm9pZCBld2tfdGlsZV91bnVzZWRfY2FjaGVfdW5yZWYoRXdrX1RpbGVf
VW51c2VkX0NhY2hlICp0dWMpOworCit2b2lkIGV3a190aWxlX3VudXNlZF9jYWNoZV9kaXJ0eShF
d2tfVGlsZV9VbnVzZWRfQ2FjaGUgKnR1Yyk7CisKK3ZvaWQgZXdrX3RpbGVfdW51c2VkX2NhY2hl
X2ZyZWV6ZShFd2tfVGlsZV9VbnVzZWRfQ2FjaGUgKnR1Yyk7Cit2b2lkIGV3a190aWxlX3VudXNl
ZF9jYWNoZV90aGF3KEV3a19UaWxlX1VudXNlZF9DYWNoZSAqdHVjKTsKKworRWluYV9Cb29sIGV3
a190aWxlX3VudXNlZF9jYWNoZV90aWxlX2dldChFd2tfVGlsZV9VbnVzZWRfQ2FjaGUgKnR1Yywg
RXdrX1RpbGUgKnQpOworRWluYV9Cb29sIGV3a190aWxlX3VudXNlZF9jYWNoZV90aWxlX3B1dChF
d2tfVGlsZV9VbnVzZWRfQ2FjaGUgKnR1YywgRXdrX1RpbGUgKnQsIHZvaWQgKCogdGlsZV9mcmVl
X2NiKSh2b2lkICpkYXRhLCBFd2tfVGlsZSAqdCksIGNvbnN0IHZvaWQgKmRhdGEpOworCisjZW5k
aWYgLy8gZXdrX3RpbGVkX21vZGVsX3ByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a190aWxlZF9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X3RpbGVkX3ByaXZhdGUuaAppbmRleCA4YTE1YWEyLi5hNTg3ZmY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX3ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX3RpbGVkX3ByaXZhdGUuaApAQCAtMTgsNiArMTgsMTEgQEAKICAgICBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KICovCiAKKy8qKgorICogQGZpbGUgICAgZXdrX3RpbGVk
X3ByaXZhdGVfaAorICogQGJyaWVmICAgUHJvdmlkZXMgbWFjcm9zIGZvciBsb2dnaW5nLgorICov
CisKICNpZm5kZWYgZXdrX3RpbGVkX3ByaXZhdGVfaAogI2RlZmluZSBld2tfdGlsZWRfcHJpdmF0
ZV9oCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdXRpbC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3V0aWwuY3BwCmluZGV4IDc0OWIwMzguLjhlYmExZmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdXRpbC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a191dGlsLmNwcApAQCAtMTksMTAgKzE5LDEwIEBACiAqLwog
CiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiZXdrX3V0aWwuaCIKIAotI2luY2x1ZGUg
ImV3a19sb2dnaW5nLmgiCisjaW5jbHVkZSAiZXdrX2xvZ2dpbmdfcHJpdmF0ZS5oIgogI2luY2x1
ZGUgImV3a19wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX3V0aWxfcHJpdmF0ZS5oIgogI2luY2x1
ZGUgPGVpbmFfc2FmZXR5X2NoZWNrcy5oPgogCiAvKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvZWZsL2V3ay9ld2tfdXRpbC5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a191dGlsLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiMzJkOWMuLjAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a191dGlsLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCww
IEBACi0vKgotICAgIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBz
eXN0ZW1zCi0gICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgU2Ftc3VuZyBFbGVjdHJvbmljcwot
Ci0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0g
ICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSov
Ci0KLS8qKgotICogQGZpbGUgICAgZXdrX3V0aWwuaAotICogQGJyaWVmICAgSGVscGZ1bGwgbWV0
aG9kcyBmb3IgV2ViS2l0LUVGTC4KLSAqLwotCi0jaWZuZGVmIGV3a191dGlsX2gKLSNkZWZpbmUg
ZXdrX3V0aWxfaAotCi0jaW5jbHVkZSA8RXZhcy5oPgotI2luY2x1ZGUgPGNhaXJvLmg+Ci0KLUV2
YXNfT2JqZWN0ICpld2tfdXRpbF9pbWFnZV9mcm9tX2NhaXJvX3N1cmZhY2VfYWRkKEV2YXMgKmNh
bnZhcywgY2Fpcm9fc3VyZmFjZV90ICpzdXJmYWNlKTsKLQotI2VuZGlmIC8vIGV3a191dGlsX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdXRpbF9wcml2YXRlLmggYi9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3V0aWxfcHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjY3YzlkMTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2VmbC9ld2svZXdrX3V0aWxfcHJpdmF0ZS5oCkBAIC0wLDAgKzEsMzQgQEAKKy8qCisgICAg
Q29weXJpZ2h0IChDKSAyMDA5LTIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMKKyAgICBD
b3B5cmlnaHQgKEMpIDIwMDktMjAxMCBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
ICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAg
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworLyoqCisgKiBA
ZmlsZSAgICBld2tfdXRpbF9wcml2YXRlLmgKKyAqIEBicmllZiAgIEhlbHBmdWxsIG1ldGhvZHMg
Zm9yIFdlYktpdC1FRkwuCisgKi8KKworI2lmbmRlZiBld2tfdXRpbF9wcml2YXRlX2gKKyNkZWZp
bmUgZXdrX3V0aWxfcHJpdmF0ZV9oCisKKyNpbmNsdWRlIDxFdmFzLmg+CisjaW5jbHVkZSA8Y2Fp
cm8uaD4KKworRXZhc19PYmplY3QgKmV3a191dGlsX2ltYWdlX2Zyb21fY2Fpcm9fc3VyZmFjZV9h
ZGQoRXZhcyAqY2FudmFzLCBjYWlyb19zdXJmYWNlX3QgKnN1cmZhY2UpOworCisjZW5kaWYgLy8g
ZXdrX3V0aWxfcHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAppbmRleCA4ZWM4
NjdkLi41ZmMyYmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKQEAgLTU1LDggKzU1
LDE0IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5o
IgogI2luY2x1ZGUgImNfaW5zdGFuY2UuaCIKLSNpbmNsdWRlICJld2tfbG9nZ2luZy5oIgorI2lu
Y2x1ZGUgImV3a19mcmFtZS5oIgorI2luY2x1ZGUgImV3a19mcmFtZV9wcml2YXRlLmgiCisjaW5j
bHVkZSAiZXdrX2hpc3RvcnlfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a19sb2dnaW5nX3ByaXZh
dGUuaCIKICNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a19zZXR0aW5nc19w
cml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a193
aW5kb3dfZmVhdHVyZXNfcHJpdmF0ZS5oIgogI2luY2x1ZGUgPEVjb3JlLmg+CiAjaW5jbHVkZSA8
RWluYS5oPgogI2luY2x1ZGUgPEV2YXMuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfdmlld19wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdf
cHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2YmM3OWYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfcHJpdmF0ZS5o
CkBAIC0wLDAgKzEsMTYwIEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFByb0ZV
U0lPTiBlbWJlZGRlZCBzeXN0ZW1zCisgICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTIgU2Ftc3Vu
ZyBFbGVjdHJvbmljcworCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
CisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KKyovCisKKy8qKgorICogQGZpbGUgICAgZXdrX3ZpZXdfcHJpdmF0ZS5oCisg
KiBAYnJpZWYgICBQcml2YXRlIG1ldGhvZHMgb2YgRVdLIHZpZXcuCisgKi8KKworI2lmbmRlZiBl
d2tfdmlld19wcml2YXRlX2gKKyNkZWZpbmUgZXdrX3ZpZXdfcHJpdmF0ZV9oCisKKyNpbmNsdWRl
ICJGcmFtZS5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJXaWRnZXQuaCIKKyNpbmNs
dWRlICJld2tfdmlldy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisjaWYgRU5BQkxFKElOUFVU
X1RZUEVfQ09MT1IpCitjbGFzcyBDb2xvcjsKK2NsYXNzIENvbG9yQ2hvb3NlckNsaWVudDsKKyNl
bmRpZgorCitjbGFzcyBQb3B1cE1lbnVDbGllbnQ7Cit9CisKKy8vIERlZmluZXMgdGhlIG5hbWVz
IGZvciBpbml0aWFsaXppbmcgZXdrX3ZpZXdfc21hcnRfY2xhc3MKK2NvbnN0IGNoYXIgZXdrVmll
d1RpbGVkTmFtZVtdID0gIkV3a19WaWV3X1RpbGVkIjsKK2NvbnN0IGNoYXIgZXdrVmlld1Npbmds
ZU5hbWVbXSA9ICJFd2tfVmlld19TaW5nbGUiOworCisvLyBEZWZpbmUgdG8gcHJldmVudCBhbiBh
cHBsaWNhdGlvbiB1c2luZyBkaWZmZXJlbnQgdmlldyB0eXBlIGZyb20gY2FsbGluZyB0aGUgZnVu
Y3Rpb24uCisjZGVmaW5lIEVXS19WSUVXX1RZUEVfQ0hFQ0tfT1JfUkVUVVJOKGV3a1ZpZXcsIHZp
ZXdOYW1lLCAuLi4pIFwKKyAgICBpZiAoIWV2YXNfb2JqZWN0X3NtYXJ0X3R5cGVfY2hlY2soZXdr
Vmlldywgdmlld05hbWUpKSB7IFwKKyAgICAgICAgSU5GKCJld2tWaWV3IGlzbid0IGFuIGluc3Rh
bmNlIG9mICVzIiwgdmlld05hbWUpOyBcCisgICAgICAgIHJldHVybiBfX1ZBX0FSR1NfXzsgXAor
ICAgIH0KKwordm9pZCBld2tfdmlld19yZWFkeShFdmFzX09iamVjdCogZXdrVmlldyk7Cit2b2lk
IGV3a192aWV3X2lucHV0X21ldGhvZF9zdGF0ZV9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGJv
b2wgYWN0aXZlKTsKK3ZvaWQgZXdrX3ZpZXdfdGl0bGVfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3
LCBjb25zdCBjaGFyKiB0aXRsZSk7Cit2b2lkIGV3a192aWV3X3VyaV9jaGFuZ2VkKEV2YXNfT2Jq
ZWN0KiBld2tWaWV3KTsKK3ZvaWQgZXdrX3ZpZXdfbG9hZF9kb2N1bWVudF9maW5pc2hlZChFdmFz
X09iamVjdCogZXdrVmlldywgRXZhc19PYmplY3QqIGZyYW1lKTsKK3ZvaWQgZXdrX3ZpZXdfbG9h
ZF9zdGFydGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX09iamVjdCogZXdrRnJhbWUpOwor
dm9pZCBld2tfdmlld19sb2FkX3Byb3Zpc2lvbmFsKEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKK3Zv
aWQgZXdrX3ZpZXdfZnJhbWVfbWFpbl9sb2FkX3N0YXJ0ZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcp
Owordm9pZCBld2tfdmlld19mcmFtZV9tYWluX2NsZWFyZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcp
Owordm9pZCBld2tfdmlld19mcmFtZV9tYWluX2ljb25fcmVjZWl2ZWQoRXZhc19PYmplY3QqIGV3
a1ZpZXcpOwordm9pZCBld2tfdmlld19sb2FkX2ZpbmlzaGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3
LCBjb25zdCBFd2tfRnJhbWVfTG9hZF9FcnJvciogZXJyb3IpOwordm9pZCBld2tfdmlld19sb2Fk
X2Vycm9yKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBFd2tfRnJhbWVfTG9hZF9FcnJvciog
ZXJyb3IpOwordm9pZCBld2tfdmlld19sb2FkX3Byb2dyZXNzX2NoYW5nZWQoRXZhc19PYmplY3Qq
IGV3a1ZpZXcpOwordm9pZCBld2tfdmlld19sb2FkX3Nob3coRXZhc19PYmplY3QqIGV3a1ZpZXcp
Owordm9pZCBld2tfdmlld19vbmxvYWRfZXZlbnQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2YXNf
T2JqZWN0KiBmcmFtZSk7Cit2b2lkIGV3a192aWV3X3Jlc3RvcmVfc3RhdGUoRXZhc19PYmplY3Qq
IGV3a1ZpZXcsIEV2YXNfT2JqZWN0KiBmcmFtZSk7CitFdmFzX09iamVjdCogZXdrX3ZpZXdfd2lu
ZG93X2NyZWF0ZShFdmFzX09iamVjdCogZXdrVmlldywgYm9vbCBqYXZhc2NyaXB0LCBjb25zdCBX
ZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyogY29yZUZlYXR1cmVzKTsKK3ZvaWQgZXdrX3ZpZXdfd2lu
ZG93X2Nsb3NlKEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKKwordm9pZCBld2tfdmlld19tb3VzZV9s
aW5rX2hvdmVyX2luKEV2YXNfT2JqZWN0KiBld2tWaWV3LCB2b2lkKiBkYXRhKTsKK3ZvaWQgZXdr
X3ZpZXdfbW91c2VfbGlua19ob3Zlcl9vdXQoRXZhc19PYmplY3QqIGV3a1ZpZXcpOworCit2b2lk
IGV3a192aWV3X3Rvb2xiYXJzX3Zpc2libGVfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBib29s
IHZpc2libGUpOwordm9pZCBld2tfdmlld190b29sYmFyc192aXNpYmxlX2dldChFdmFzX09iamVj
dCogZXdrVmlldywgYm9vbCogdmlzaWJsZSk7CisKK3ZvaWQgZXdrX3ZpZXdfc3RhdHVzYmFyX3Zp
c2libGVfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBib29sIHZpc2libGUpOwordm9pZCBld2tf
dmlld19zdGF0dXNiYXJfdmlzaWJsZV9nZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGJvb2wqIHZp
c2libGUpOwordm9pZCBld2tfdmlld19zdGF0dXNiYXJfdGV4dF9zZXQoRXZhc19PYmplY3QqIGV3
a1ZpZXcsIGNvbnN0IGNoYXIqIHRleHQpOworCit2b2lkIGV3a192aWV3X3Njcm9sbGJhcnNfdmlz
aWJsZV9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGJvb2wgdmlzaWJsZSk7Cit2b2lkIGV3a192
aWV3X3Njcm9sbGJhcnNfdmlzaWJsZV9nZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGJvb2wqIHZp
c2libGUpOworCit2b2lkIGV3a192aWV3X21lbnViYXJfdmlzaWJsZV9zZXQoRXZhc19PYmplY3Qq
IGV3a1ZpZXcsIGJvb2wgdmlzaWJsZSk7Cit2b2lkIGV3a192aWV3X21lbnViYXJfdmlzaWJsZV9n
ZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGJvb2wqIHZpc2libGUpOworCit2b2lkIGV3a192aWV3
X3Rvb2x0aXBfdGV4dF9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIqIHRleHQp
OworCit2b2lkIGV3a192aWV3X2FkZF9jb25zb2xlX21lc3NhZ2UoRXZhc19PYmplY3QqIGV3a1Zp
ZXcsIGNvbnN0IGNoYXIqIG1lc3NhZ2UsIHVuc2lnbmVkIGludCBsaW5lTnVtYmVyLCBjb25zdCBj
aGFyKiBzb3VyY2VJRCk7CisKK3ZvaWQgZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfYWxlcnQoRXZh
c19PYmplY3QqIGV3a1ZpZXcsIEV2YXNfT2JqZWN0KiBmcmFtZSwgY29uc3QgY2hhciogbWVzc2Fn
ZSk7Citib29sIGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X2NvbmZpcm0oRXZhc19PYmplY3QqIGV3
a1ZpZXcsIEV2YXNfT2JqZWN0KiBmcmFtZSwgY29uc3QgY2hhciogbWVzc2FnZSk7Citib29sIGV3
a192aWV3X3J1bl9qYXZhc2NyaXB0X3Byb21wdChFdmFzX09iamVjdCogZXdrVmlldywgRXZhc19P
YmplY3QqIGZyYW1lLCBjb25zdCBjaGFyKiBtZXNzYWdlLCBjb25zdCBjaGFyKiBkZWZhdWx0VmFs
dWUsIGNoYXIqKiB2YWx1ZSk7Citib29sIGV3a192aWV3X3Nob3VsZF9pbnRlcnJ1cHRfamF2YXNj
cmlwdChFdmFzX09iamVjdCogZXdrVmlldyk7Cit1aW50NjRfdCBld2tfdmlld19leGNlZWRlZF9k
YXRhYmFzZV9xdW90YShFdmFzX09iamVjdCogZXdrVmlldywgRXZhc19PYmplY3QqIGZyYW1lLCBj
b25zdCBjaGFyKiBkYXRhYmFzZU5hbWUsIHVpbnQ2NF90IGN1cnJlbnRTaXplLCB1aW50NjRfdCBl
eHBlY3RlZFNpemUpOworCitib29sIGV3a192aWV3X3J1bl9vcGVuX3BhbmVsKEV2YXNfT2JqZWN0
KiBld2tWaWV3LCBFdmFzX09iamVjdCogZnJhbWUsIGJvb2wgYWxsb3dzTXVsdGlwbGVGaWxlcywg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGFjY2VwdE1JTUVUeXBlcywgRWluYV9MaXN0Kiogc2VsZWN0
ZWRGaWxlbmFtZXMpOworCit2b2lkIGV3a192aWV3X3JlcGFpbnQoRXZhc19PYmplY3QqIGV3a1Zp
ZXcsIEV2YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5LCBFdmFzX0Nvb3JkIHdpZHRoLCBFdmFzX0Nv
b3JkIGhlaWdodCk7Cit2b2lkIGV3a192aWV3X3Njcm9sbChFdmFzX09iamVjdCogZXdrVmlldywg
RXZhc19Db29yZCBkZWx0YVgsIEV2YXNfQ29vcmQgZGVsdGFZLCBFdmFzX0Nvb3JkIHNjcm9sbFgs
IEV2YXNfQ29vcmQgc2Nyb2xsWSwgRXZhc19Db29yZCBzY3JvbGxXaWR0aCwgRXZhc19Db29yZCBz
Y3JvbGxIZWlnaHQsIEV2YXNfQ29vcmQgY2VudGVyWCwgRXZhc19Db29yZCBjZW50ZXJZLCBFdmFz
X0Nvb3JkIGNlbnRlclcsIEV2YXNfQ29vcmQgY2VudGVySGVpZ2h0KTsKK1dlYkNvcmU6OlBhZ2Uq
IGV3a192aWV3X2NvcmVfcGFnZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpOworCitX
VEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGV3a192aWV3X2ZyYW1lX2NyZWF0ZShFdmFz
X09iamVjdCogZXdrVmlldywgRXZhc19PYmplY3QqIGZyYW1lLCBjb25zdCBXVEY6OlN0cmluZyYg
bmFtZSwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsIGNvbnN0
IFdlYkNvcmU6OktVUkwmIHVybCwgY29uc3QgV1RGOjpTdHJpbmcmIHJlZmVycmVyKTsKKworV1RG
OjpQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gZXdrX3ZpZXdfcGx1Z2luX2NyZWF0ZShFdmFz
X09iamVjdCogZXdrVmlldywgRXZhc19PYmplY3QqIGZyYW1lLCBjb25zdCBXZWJDb3JlOjpJbnRT
aXplJiBwbHVnaW5TaXplLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCogZWxlbWVudCwgY29u
c3QgV2ViQ29yZTo6S1VSTCYgdXJsLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBh
cmFtTmFtZXMsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGNv
bnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBsb2FkTWFudWFsbHkpOworCisjaWYgRU5B
QkxFKElOUFVUX1RZUEVfQ09MT1IpCit2b2lkIGV3a192aWV3X2NvbG9yX2Nob29zZXJfbmV3KEV2
YXNfT2JqZWN0KiBld2tWaWV3LCBXZWJDb3JlOjpDb2xvckNob29zZXJDbGllbnQqIGNsaWVudCwg
Y29uc3QgV2ViQ29yZTo6Q29sb3ImIGluaXRpYWxDb2xvcik7Cit2b2lkIGV3a192aWV3X2NvbG9y
X2Nob29zZXJfY2hhbmdlZChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgV2ViQ29yZTo6Q29s
b3ImIG5ld0NvbG9yKTsKKyNlbmRpZgorCit2b2lkIGV3a192aWV3X3BvcHVwX25ldyhFdmFzX09i
amVjdCogZXdrVmlldywgV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KiBjbGllbnQsIGludCBzZWxl
Y3RlZCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCk7Cit2b2lkIGV3a192aWV3X3ZpZXdw
b3J0X2F0dHJpYnV0ZXNfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBXZWJDb3JlOjpW
aWV3cG9ydEFyZ3VtZW50cyYgYXJndW1lbnRzKTsKKwordm9pZCBld2tfdmlld19kb3dubG9hZF9y
ZXF1ZXN0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfRG93bmxvYWQqIGRvd25sb2FkKTsKKwor
dm9pZCBld2tfdmlld19lZGl0b3JfY2xpZW50X2NvbnRlbnRzX2NoYW5nZWQoRXZhc19PYmplY3Qq
IGV3a1ZpZXcpOwordm9pZCBld2tfdmlld19lZGl0b3JfY2xpZW50X3NlbGVjdGlvbl9jaGFuZ2Vk
KEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKKworYm9vbCBld2tfdmlld19mb2N1c19jYW5fY3ljbGUo
RXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19Gb2N1c19EaXJlY3Rpb24gZGlyZWN0aW9uKTsKK3Zv
aWQgZXdrX3ZpZXdfZnJhbWVfdmlld19jcmVhdGlvbl9ub3RpZnkoRXZhc19PYmplY3QqIGV3a1Zp
ZXcpOworCisjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCit2b2lkIGV3a192aWV3X2pz
X3dpbmRvd19vYmplY3RfY2xlYXIoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2YXNfT2JqZWN0KiBm
cmFtZSk7CisjZW5kaWYKKworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCit2b2lkIGV3a192aWV3
X25lZWRfdG91Y2hfZXZlbnRzX3NldChFdmFzX09iamVjdCosIGJvb2wgbmVlZGVkKTsKK2Jvb2wg
ZXdrX3ZpZXdfbmVlZF90b3VjaF9ldmVudHNfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0Kik7CisjZW5k
aWYKKworY29uc3QgRWluYV9SZWN0YW5nbGUqIGV3a192aWV3X3JlcGFpbnRzX3BvcChFd2tfVmll
d19Qcml2YXRlX0RhdGEqIHByaXYsIHNpemVfdCogY291bnQpOworY29uc3QgRXdrX1Njcm9sbF9S
ZXF1ZXN0KiBld2tfdmlld19zY3JvbGxfcmVxdWVzdHNfZ2V0KGNvbnN0IEV3a19WaWV3X1ByaXZh
dGVfRGF0YSogcHJpdiwgc2l6ZV90KiBjb3VudCk7CisKK3ZvaWQgZXdrX3ZpZXdfcmVwYWludF9h
ZGQoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2LCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQg
eSwgRXZhc19Db29yZCB3aWR0aCwgRXZhc19Db29yZCBoZWlnaHQpOworCit2b2lkIGV3a192aWV3
X2xheW91dF9pZl9uZWVkZWRfcmVjdXJzaXZlKEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdik7
CisKK2Jvb2wgZXdrX3ZpZXdfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24oRXZhc19PYmplY3Qq
IGV3a1ZpZXcsIEV3a19GcmFtZV9SZXNvdXJjZV9SZXF1ZXN0KiByZXF1ZXN0KTsKKwordm9pZCBl
d2tfdmlld19jb250ZW50c19zaXplX2NoYW5nZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2YXNf
Q29vcmQgd2lkdGgsIEV2YXNfQ29vcmQgaGVpZ2h0KTsKKworV2ViQ29yZTo6RmxvYXRSZWN0IGV3
a192aWV3X3BhZ2VfcmVjdF9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpOworCit2b2lk
IGV3a192aWV3X21peGVkX2NvbnRlbnRfZGlzcGxheWVkX3NldChFdmFzX09iamVjdCogZXdrVmll
dywgYm9vbCBoYXNEaXNwbGF5ZWQpOwordm9pZCBld2tfdmlld19taXhlZF9jb250ZW50X3J1bl9z
ZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGJvb2wgaGFzUnVuKTsKKworI2lmIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykKK2Jvb2wgZXdrX3ZpZXdfYWNjZWxlcmF0ZWRfY29tcG9zaXRpbmdf
b2JqZWN0X2NyZWF0ZShFdmFzX09iamVjdCogZXdrVmlldywgRXZhc19OYXRpdmVfU3VyZmFjZSog
bmF0aXZlU3VyZmFjZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCk7CitXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRCogZXdrX3ZpZXdfYWNjZWxlcmF0ZWRfY29tcG9zaXRpbmdfY29udGV4
dF9nZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcpOworI2VuZGlmCisKK25hbWVzcGFjZSBFV0tQcml2
YXRlIHsKK1dlYkNvcmU6OlBhZ2UgKmNvcmVQYWdlKGNvbnN0IEV2YXNfT2JqZWN0ICpld2tWaWV3
KTsKK1BsYXRmb3JtUGFnZUNsaWVudCBjb3JlUGFnZUNsaWVudChFdmFzX09iamVjdCogZXdrVmll
dyk7Cit9IC8vIG5hbWVzcGFjZSBFV0tQcml2YXRlCisKKyNlbmRpZiAvLyBld2tfdmlld19wcml2
YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld19zaW5nbGUu
Y3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3X3NpbmdsZS5jcHAKaW5kZXggMWRl
Y2UwNi4uN2I0NThjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3
X3NpbmdsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3X3NpbmdsZS5j
cHAKQEAgLTIyLDggKzIyLDkgQEAKICNpbmNsdWRlICJld2tfdmlldy5oIgogCiAjaW5jbHVkZSAi
ZXdrX2ZyYW1lLmgiCi0jaW5jbHVkZSAiZXdrX2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJld2tfbG9n
Z2luZ19wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tf
dmlld19wcml2YXRlLmgiCiAKICNpbmNsdWRlIDxFY29yZV9FdmFzLmg+CiAjaW5jbHVkZSA8RXZh
cy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3X3RpbGVkLmNw
cCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld190aWxlZC5jcHAKaW5kZXggMzQyY2M0
ZS4uMDk2ODNkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3X3Rp
bGVkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfdGlsZWQuY3BwCkBA
IC0yMSwxMyArMjEsMTMgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJld2tfdmll
dy5oIgogCi0jaW5jbHVkZSAiZXdrX2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJld2tfbG9nZ2luZ19w
cml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKLQorI2luY2x1ZGUgImV3a190aWxl
ZF9iYWNraW5nX3N0b3JlX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfdmlld19wcml2YXRlLmgi
CiAjaW5jbHVkZSA8RXZhcy5oPgogI2luY2x1ZGUgPFJlZlB0ckNhaXJvLmg+CiAjaW5jbHVkZSA8
ZWluYV9zYWZldHlfY2hlY2tzLmg+Ci0jaW5jbHVkZSA8ZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUu
aD4KIAogc3RhdGljIEV3a19WaWV3X1NtYXJ0X0NsYXNzIF9wYXJlbnRfc2MgPSBFV0tfVklFV19T
TUFSVF9DTEFTU19JTklUX05VTEw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfd2luZG93X2ZlYXR1cmVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfd2lu
ZG93X2ZlYXR1cmVzLmNwcAppbmRleCA2MTgxYmRhLi4wMDVjNmRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX3dpbmRvd19mZWF0dXJlcy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a193aW5kb3dfZmVhdHVyZXMuY3BwCkBAIC0yMiw3ICsyMiw3IEBACiAj
aW5jbHVkZSAiZXdrX3dpbmRvd19mZWF0dXJlcy5oIgogCiAjaW5jbHVkZSAiV2luZG93RmVhdHVy
ZXMuaCIKLSNpbmNsdWRlICJld2tfbG9nZ2luZy5oIgorI2luY2x1ZGUgImV3a19sb2dnaW5nX3By
aXZhdGUuaCIKICNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgogI2luY2x1ZGUgPEVpbmEuaD4KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a193aW5kb3dfZmVhdHVyZXNfcHJp
dmF0ZS5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a193aW5kb3dfZmVhdHVyZXNfcHJpdmF0
ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxYmNmNmQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3dpbmRvd19mZWF0dXJlc19wcml2
YXRlLmgKQEAgLTAsMCArMSwzMSBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBQ
cm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcworICAgIENvcHlyaWdodCAoQykgMjAwOS0yMDEyIFNh
bXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCisqLworCisvKioKKyAqIEBmaWxlICAgIGV3a193aW5kb3dfZmVhdHVy
ZXNfcHJpdmF0ZS5oCisgKiBAYnJpZWYgICBQcml2YXRlIG1ldGhvZHMgb2YgRVdLIHdpbmRvdyBm
ZWF0dXJlcy4KKyAqLworCisjaWZuZGVmIGV3a193aW5kb3dfZmVhdHVyZXNfcHJpdmF0ZV9oCisj
ZGVmaW5lIGV3a193aW5kb3dfZmVhdHVyZXNfcHJpdmF0ZV9oCisKK0V3a19XaW5kb3dfRmVhdHVy
ZXMqIGV3a193aW5kb3dfZmVhdHVyZXNfbmV3X2Zyb21fY29yZShjb25zdCBXZWJDb3JlOjpXaW5k
b3dGZWF0dXJlcyogY29yZSk7CisKKyNlbmRpZiAvLyBld2tfd2luZG93X2ZlYXR1cmVzX3ByaXZh
dGVfaApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IDEyNmViZTcuLmU4MmQ4ZTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMi0wNS0xMSAgVG9tYXN6IE1vcmF3c2tp
ICA8dC5tb3Jhd3NraUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtEUlRdIFNwbGl0IGV3
a19wcml2YXRlLmggdG8gbXVsdGlwbGUgcHJpdmF0ZSBmaWxlcy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0NTcyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9lZmwvRHVtcFJl
bmRlclRyZWVDaHJvbWUuY3BwOgorCiAyMDEyLTA1LTEwICBPamFuIFZhZmFpICA8b2phbkBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgQWRkIGEgcGVyZiB0YWIgdG8gZ2FyZGVuLW8tbWF0aWMKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9EdW1wUmVuZGVyVHJlZUNocm9tZS5j
cHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvRHVtcFJlbmRlclRyZWVDaHJvbWUuY3BwCmlu
ZGV4IDlmNzQ0MTYuLmFhYTU0ZWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Vm
bC9EdW1wUmVuZGVyVHJlZUNocm9tZS5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZs
L0R1bXBSZW5kZXJUcmVlQ2hyb21lLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkR1
bXBSZW5kZXJUcmVlVmlldy5oIgogI2luY2x1ZGUgIkV2ZW50U2VuZGVyLmgiCiAjaW5jbHVkZSAi
R0NDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIkxheW91dFRlc3RD
b250cm9sbGVyLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJUZXh0
SW5wdXRDb250cm9sbGVyLmgiCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141418</attachid>
            <date>2012-05-11 07:48:44 -0700</date>
            <delta_ts>2012-05-14 00:03:14 -0700</delta_ts>
            <desc>Fixed</desc>
            <filename>private2.patch</filename>
            <type>text/plain</type>
            <size>88394</size>
            <attacher name="Tomasz Morawski">t.morawski</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZwppbmRleCA4OTg5MzljLi40ZTY4OTkxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNjQgQEAKKzIwMTItMDUtMTEgIFRvbWFzeiBNb3Jhd3NraSAgPHQubW9yYXdza2lA
c2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bRFJUXSBTcGxpdCBld2tfcHJpdmF0ZS5oIGZp
bGUgdG8gbXVsdGlwbGUgcHJpdmF0ZSBmaWxlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTg0NTcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgU3BsaXQgZXdrX3ByaXZhdGUgZmlsZSB0byBtdWx0aXBsZSBw
cml2YXRlIGZpbGVzLgorICAgICAgICBEZWxldGUgZXdrX2xvZ2dpbmcuaCBhbmQgZXdrX3RpbGVk
X3ByaXZhdGUuaCBmaWxlcyBhbmQgcmVtb3ZlZCB0aWxlZF9iYWNraW5nX3N0b3JlIGxvZ2dpbmcg
ZG9tYWluLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcDoK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5jcHA6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOgorICAgICAgICAqIGV3ay9l
d2tfYXV0aC5jcHA6CisgICAgICAgICogZXdrL2V3a19hdXRoX3NvdXAuY3BwOgorICAgICAgICAo
ZGV0YWNoKToKKyAgICAgICAgKiBld2svZXdrX2F1dGhfc291cF9wcml2YXRlLmg6IFJlbmFtZWQg
ZnJvbSBTb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2F1dGhfc291cC5oLgorICAgICAgICAqIGV3
ay9ld2tfY29udGV4dG1lbnVfcHJpdmF0ZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX3ByaXZhdGUuaC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGV3ay9l
d2tfZnJhbWUuY3BwOgorICAgICAgICAqIGV3ay9ld2tfZnJhbWVfcHJpdmF0ZS5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoRVdLUHJpdmF0ZSk6CisgICAgICAgICogZXdr
L2V3a19oaXN0b3J5LmNwcDoKKyAgICAgICAgKiBld2svZXdrX2hpc3RvcnlfcHJpdmF0ZS5oOiBD
b3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ByaXZhdGUuaC4KKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoRVdLUHJpdmF0ZSk6CisgICAgICAgICogZXdrL2V3a19qc19w
cml2YXRlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfcHJpdmF0ZS5o
LgorICAgICAgICAoX0V3a19KU19PYmplY3QpOgorICAgICAgICAqIGV3ay9ld2tfbWFpbi5jcHA6
CisgICAgICAgICogZXdrL2V3a19uZXR3b3JrLmNwcDoKKyAgICAgICAgKiBld2svZXdrX3ByaXZh
dGUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGV3ay9ld2tfc2VjdXJpdHlfb3Jp
Z2luX3ByaXZhdGUuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcml2
YXRlLmguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBld2svZXdrX3NldHRpbmdzLmNw
cDoKKyAgICAgICAgKiBld2svZXdrX3NldHRpbmdzX3ByaXZhdGUuaDogQ29waWVkIGZyb20gU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcml2YXRlLmguCisgICAgICAgICogZXdrL2V3a190aWxl
ZF9iYWNraW5nX3N0b3JlLmNwcDoKKyAgICAgICAgKF9Fd2tfVGlsZWRfQmFja2luZ19TdG9yZV9J
dGVtKToKKyAgICAgICAgKGV3a190aWxlZF9iYWNraW5nX3N0b3JlX2FkZCk6CisgICAgICAgICog
ZXdrL2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByaXZhdGUuaDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5oLgorICAgICAgICAoX0V3
a19UaWxlX1N0YXRzKToKKyAgICAgICAgKF9Fd2tfVGlsZSk6CisgICAgICAgICogZXdrL2V3a190
aWxlZF9tYXRyaXguY3BwOgorICAgICAgICAqIGV3ay9ld2tfdGlsZWRfbWF0cml4X3ByaXZhdGUu
aDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRfbWF0cml4Lmgu
CisgICAgICAgICogZXdrL2V3a190aWxlZF9tb2RlbC5jcHA6CisgICAgICAgICh0aWxlX2FjY291
bnQpOgorICAgICAgICAqIGV3ay9ld2tfdGlsZWRfbW9kZWxfcHJpdmF0ZS5oOiBSZW5hbWVkIGZy
b20gU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9tb2RlbC5oLgorICAgICAgICAqIGV3
ay9ld2tfdXRpbC5jcHA6CisgICAgICAgICogZXdrL2V3a191dGlsX3ByaXZhdGUuaDogUmVuYW1l
ZCBmcm9tIFNvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdXRpbC5oLgorICAgICAgICAqIGV3ay9l
d2tfdmlldy5jcHA6CisgICAgICAgIChfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKToKKyAgICAgICAg
KiBld2svZXdrX3ZpZXdfcHJpdmF0ZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX3ByaXZhdGUuaC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoRVdLUHJpdmF0
ZSk6CisgICAgICAgICogZXdrL2V3a192aWV3X3NpbmdsZS5jcHA6CisgICAgICAgICogZXdrL2V3
a192aWV3X3RpbGVkLmNwcDoKKyAgICAgICAgKiBld2svZXdrX3dpbmRvd19mZWF0dXJlcy5jcHA6
CisgICAgICAgICogZXdrL2V3a193aW5kb3dfZmVhdHVyZXNfcHJpdmF0ZS5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ByaXZhdGUuaC4KKwogMjAxMi0wNS0xMSAgRG9t
aW5payBSw7Z0dHNjaGVzICA8ZG9taW5pay5yb3R0c2NoZXNAaW50ZWwuY29tPgogCiAgICAgICAg
IFtFRkxdW0RSVF0gSW5wdXQgQXR0cmlidXRlIFBsYWNlaG9sZGVyIFJlZlRlc3RzIGZhaWxpbmcK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRF
ZmwuY3BwCmluZGV4IDFlNzYxMGEuLjlmZGU5ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
ZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcApAQCAtMzcsNiArMzcsNyBA
QAogI2luY2x1ZGUgIkZpbGVDaG9vc2VyLmgiCiAjaW5jbHVkZSAiRmlsZUljb25Mb2FkZXIuaCIK
ICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZy
YW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnRFZmwuaCIKICNpbmNsdWRl
ICJIaXRUZXN0UmVzdWx0LmgiCkBAIC01MCw3ICs1MSw5IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlP
cmlnaW4uaCIKICNpbmNsdWRlICJWaWV3cG9ydEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIldpbmRv
d0ZlYXR1cmVzLmgiCisjaW5jbHVkZSAiZXdrX2ZyYW1lX3ByaXZhdGUuaCIKICNpbmNsdWRlICJl
d2tfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a192aWV3X3ByaXZhdGUuaCIKICNpbmNsdWRlIDxF
Y29yZV9FdmFzLmg+CiAjaW5jbHVkZSA8RXZhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBS
ZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9y
dC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwCmluZGV4IDE0ODZjYmMuLjhjZGJkMjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVl
U3VwcG9ydEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVt
cFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcApAQCAtMjIsNyArMjIsMTAgQEAKICNpbmNsdWRlICJE
dW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaCIKIAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50
RWZsLmgiCisjaW5jbHVkZSAiZXdrX2ZyYW1lX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfaGlz
dG9yeV9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tf
dmlld19wcml2YXRlLmgiCiAKICNpbmNsdWRlIDxBbmltYXRpb25Db250cm9sbGVyLmg+CiAjaW5j
bHVkZSA8Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwIGIvU291cmNlL1dl
YktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNwcAppbmRleCA5MjE3Y2Mx
Li4yZTljNTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9F
ZGl0b3JDbGllbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0
L0VkaXRvckNsaWVudEVmbC5jcHAKQEAgLTM1LDcgKzM1LDkgQEAKICNpbmNsdWRlICJTZXR0aW5n
cy5oIgogI2luY2x1ZGUgIlVuZG9TdGVwLmgiCiAjaW5jbHVkZSAiV2luZG93c0tleWJvYXJkQ29k
ZXMuaCIKKyNpbmNsdWRlICJld2tfZnJhbWVfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19wcml2
YXRlLmgiCisjaW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0ZS5oIgogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwCmluZGV4IDUxODVkMWUuLmQ3OGYwMjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEVmbC5jcHAKQEAgLTUzLDggKzUzLDEwIEBACiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNw
b25zZS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiV2ViS2l0VmVyc2lvbi5o
IgotI2luY2x1ZGUgImV3a19sb2dnaW5nLmgiCisjaW5jbHVkZSAiZXdrX2ZyYW1lX3ByaXZhdGUu
aCIKICNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a19zZXR0aW5nc19wcml2
YXRlLmgiCisjaW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0ZS5oIgogI2luY2x1ZGUgPEVjb3JlX0V2
YXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQ29uY2F0ZW5hdGUuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfYXV0aC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2F1dGguY3BwCmluZGV4IGFm
MjE3MmEuLjE1MGI4YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfYXV0
aC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19hdXRoLmNwcApAQCAtMjAsNyAr
MjAsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgImV3a19hdXRoLmgiCiAKLSNp
bmNsdWRlICJld2tfYXV0aF9zb3VwLmgiCisjaW5jbHVkZSAiZXdrX2F1dGhfc291cF9wcml2YXRl
LmgiCiAKIHZvaWQgZXdrX2F1dGhfc2hvd19kaWFsb2dfY2FsbGJhY2tfc2V0KEV3a19BdXRoX1No
b3dfRGlhbG9nX0NhbGxiYWNrIGNhbGxiYWNrKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a19hdXRoX3NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19h
dXRoX3NvdXAuY3BwCmluZGV4IGQ4NTQyN2QuLmY1NGZiMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfYXV0aF9zb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX2F1dGhfc291cC5jcHAKQEAgLTE5LDE4ICsxOSwxMyBAQAogKi8KIAogI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgImV3a19hdXRoX3NvdXAuaCIKKyNpbmNsdWRlICJld2tfYXV0
aF9zb3VwX3ByaXZhdGUuaCIKIAogI2luY2x1ZGUgImV3a19hdXRoLmgiCi0jaW5jbHVkZSAiZXdr
X2xvZ2dpbmcuaCIKICNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgogI2luY2x1ZGUgPGdsaWIuaD4K
ICNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KIAotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4g
IkMiIHsKLSNlbmRpZgotCiAvKioKICAqICNFd2tfU291cF9BdXRoX0RpYWxvZyBpcyBhICNTb3Vw
U2Vzc2lvbkZlYXR1cmUgdGhhdCB5b3UgY2FuIGF0dGFjaCB0byB5b3VyCiAgKiAjU291cFNlc3Np
b24gdG8gcHJvdmlkZSBhIHNpbXBsZSBhdXRoZW50aWNhdGlvbiBkaWFsb2cgd2hpbGUKQEAgLTY4
LDExICs2MywyMyBAQCBzdGF0aWMgdm9pZCBld2tfYXV0aF9zb3VwX2RpYWxvZ19zZXNzaW9uX2Zl
YXR1cmVfaW5pdChTb3VwU2Vzc2lvbkZlYXR1cmVJbnRlcmZhYwogICAgIGZlYXR1cmVJbnRlcmZh
Y2UtPmRldGFjaCA9IGRldGFjaDsKIH0KIAorLyoqCisgKiBAaW50ZXJuYWwKKyAqICBTZXRzIGNh
bGxiYWNrIHRvIGJlIGNhbGxlZCB3aGVuIGF1dGhlbnRpY2F0aW9uIGlzIHJlcXVpcmVkLgorICov
CiB2b2lkIGV3a19hdXRoX3NvdXBfc2hvd19kaWFsb2dfY2FsbGJhY2tfc2V0KEV3a19BdXRoX1No
b3dfRGlhbG9nX0NhbGxiYWNrIGNhbGxiYWNrKQogewogICAgIGV3a19hdXRoX3Nob3dfZGlhbG9n
X2NhbGxiYWNrID0gY2FsbGJhY2s7CiB9CiAKKy8qKgorICogQGludGVybmFsCisgKiAgTWV0aG9k
IGZvciBzZXR0aW5nIGNyZWRlbnRpYWxzCisgKgorICogIEBwYXJhbSB1c2VybmFtZSB1c2VybmFt
ZQorICogIEBwYXJhbSBwYXNzd29yZCBwYXNzd29yZAorICogIEBwYXJhbSBkYXRhIHNvdXAgYXV0
aGVudGljYXRpb24gZGF0YQorICovCiB2b2lkIGV3a19hdXRoX3NvdXBfY3JlZGVudGlhbHNfc2V0
KGNvbnN0IGNoYXIqIHVzZXJuYW1lLCBjb25zdCBjaGFyKiBwYXNzd29yZCwgdm9pZCogZGF0YSkK
IHsKICAgICBpZiAoIWRhdGEpCkBAIC0xMjgsNyArMTM1LDMgQEAgc3RhdGljIHZvaWQgZGV0YWNo
KFNvdXBTZXNzaW9uRmVhdHVyZSogbWFuYWdlciwgU291cFNlc3Npb24qIHNlc3Npb24pCiB7CiAg
ICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKHNlc3Npb24sICh2b2lkKilz
ZXNzaW9uX2F1dGhlbnRpY2F0ZSwgbWFuYWdlcik7CiB9Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwot
fQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2F1dGhfc291
cC5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19hdXRoX3NvdXAuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggYmQyNmIwNC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX2F1dGhfc291cC5oCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotLyoK
LSAgICBDb3B5cmlnaHQgKEMpIDIwMDkgSWdhbGlhIFMuTC4KLSAgICBDb3B5cmlnaHQgKEMpIDIw
MTEgU2Ftc3VuZyBFbGVjdHJvbmljcwotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAg
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQotICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KLSovCi0KLSNpZm5kZWYgZXdrX2F1dGhfc291cF9oCi0jZGVm
aW5lIGV3a19hdXRoX3NvdXBfaAotCi0jaW5jbHVkZSAiZXdrX2F1dGguaCIKLSNpbmNsdWRlIDxn
bGliLW9iamVjdC5oPgotI2luY2x1ZGUgPGdsaWIuaD4KLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1l
eHRlcm4gIkMiIHsKLSNlbmRpZgotCi0jZGVmaW5lIEVXS19UWVBFX1NPVVBfQVVUSF9ESUFMT0cg
ICAgICAgICAgICAoZXdrX2F1dGhfc291cF9kaWFsb2dfZ2V0X3R5cGUoKSkKLSNkZWZpbmUgRVdL
X1NPVVBfQVVUSF9ESUFMT0cob2JqZWN0KSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0Vf
Q0FTVCgob2JqZWN0KSwgRVdLX1RZUEVfU09VUF9BVVRIX0RJQUxPRywgRXdrX1NvdXBfQXV0aF9E
aWFsb2cpKQotI2RlZmluZSBFV0tfU09VUF9BVVRIX0RJQUxPR19DTEFTUyhrbGFzcykgICAgKEdf
VFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksIEVXS19UWVBFX1NPVVBfQVVUSF9ESUFMT0cs
IEV3a19Tb3VwX0F1dGhfRGlhbG9nKSkKLSNkZWZpbmUgRVdLX0lTX1NPVVBfQVVUSF9ESUFMT0co
b2JqZWN0KSAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqZWN0KSwgRVdLX1RZ
UEVfU09VUF9BVVRIX0RJQUxPRykpCi0jZGVmaW5lIEVXS19JU19TT1VQX0FVVEhfRElBTE9HX0NM
QVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgRVdLX1RZUEVfU09V
UF9BVVRIX0RJQUxPRykpCi0jZGVmaW5lIEVXS19TT1VQX0FVVEhfRElBTE9HX0dFVF9DTEFTUyhv
YmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgRVdLX1RZUEVfU09VUF9BVVRI
X0RJQUxPRywgRXdrX1NvdXBfQXV0aF9EaWFsb2cpKQotCi10eXBlZGVmIHN0cnVjdCB7Ci0gICAg
R09iamVjdCBwYXJlbnRfaW5zdGFuY2U7Ci19IEV3a19Tb3VwX0F1dGhfRGlhbG9nOwotCi10eXBl
ZGVmIHN0cnVjdCB7Ci0gICAgR09iamVjdENsYXNzIHBhcmVudF9jbGFzczsKLX0gRXdrX1NvdXBf
QXV0aF9EaWFsb2dDbGFzczsKLQotR1R5cGUgZXdrX2F1dGhfc291cF9kaWFsb2dfZ2V0X3R5cGUo
dm9pZCk7Ci0KLS8qKgotICogIFNldHMgY2FsbGJhY2sgdG8gYmUgY2FsbGVkIHdoZW4gYXV0aGVu
dGljYXRpb24gaXMgcmVxdWlyZWQuCi0gKi8KLXZvaWQgZXdrX2F1dGhfc291cF9zaG93X2RpYWxv
Z19jYWxsYmFja19zZXQoRXdrX0F1dGhfU2hvd19EaWFsb2dfQ2FsbGJhY2sgY2FsbGJhY2spOwot
Ci0vKioKLSAqICBNZXRob2QgZm9yIHNldHRpbmcgY3JlZGVudGlhbHMKLSAqCi0gKiAgQHBhcmFt
IHVzZXJuYW1lIHVzZXJuYW1lCi0gKiAgQHBhcmFtIHBhc3N3b3JkIHBhc3N3b3JkCi0gKiAgQHBh
cmFtIGRhdGEgc291cCBhdXRoZW50aWNhdGlvbiBkYXRhCi0gKi8KLXZvaWQgZXdrX2F1dGhfc291
cF9jcmVkZW50aWFsc19zZXQoY29uc3QgY2hhciAqdXNlcm5hbWUsIGNvbnN0IGNoYXIgKnBhc3N3
b3JkLCB2b2lkICpkYXRhKTsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLQotI2Vu
ZGlmIC8vIGV3a19hdXRoX3NvdXBfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a19hdXRoX3NvdXBfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19hdXRo
X3NvdXBfcHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzNjRm
NjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2F1dGhfc291
cF9wcml2YXRlLmgKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDkg
SWdhbGlhIFMuTC4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcwor
CisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
ICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyov
CisKKyNpZm5kZWYgZXdrX2F1dGhfc291cF9wcml2YXRlX2gKKyNkZWZpbmUgZXdrX2F1dGhfc291
cF9wcml2YXRlX2gKKworI2luY2x1ZGUgImV3a19hdXRoLmgiCisjaW5jbHVkZSA8Z2xpYi1vYmpl
Y3QuaD4KKyNpbmNsdWRlIDxnbGliLmg+CisKKyNkZWZpbmUgRVdLX1RZUEVfU09VUF9BVVRIX0RJ
QUxPRyAgICAgICAgICAgIChld2tfYXV0aF9zb3VwX2RpYWxvZ19nZXRfdHlwZSgpKQorI2RlZmlu
ZSBFV0tfU09VUF9BVVRIX0RJQUxPRyhvYmplY3QpICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNU
QU5DRV9DQVNUKChvYmplY3QpLCBFV0tfVFlQRV9TT1VQX0FVVEhfRElBTE9HLCBFd2tfU291cF9B
dXRoX0RpYWxvZykpCisjZGVmaW5lIEVXS19TT1VQX0FVVEhfRElBTE9HX0NMQVNTKGtsYXNzKSAg
ICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgRVdLX1RZUEVfU09VUF9BVVRIX0RJ
QUxPRywgRXdrX1NvdXBfQXV0aF9EaWFsb2cpKQorI2RlZmluZSBFV0tfSVNfU09VUF9BVVRIX0RJ
QUxPRyhvYmplY3QpICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmplY3QpLCBF
V0tfVFlQRV9TT1VQX0FVVEhfRElBTE9HKSkKKyNkZWZpbmUgRVdLX0lTX1NPVVBfQVVUSF9ESUFM
T0dfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCBFV0tfVFlQ
RV9TT1VQX0FVVEhfRElBTE9HKSkKKyNkZWZpbmUgRVdLX1NPVVBfQVVUSF9ESUFMT0dfR0VUX0NM
QVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCBFV0tfVFlQRV9TT1VQ
X0FVVEhfRElBTE9HLCBFd2tfU291cF9BdXRoX0RpYWxvZykpCisKK3R5cGVkZWYgc3RydWN0IHsK
KyAgICBHT2JqZWN0IHBhcmVudF9pbnN0YW5jZTsKK30gRXdrX1NvdXBfQXV0aF9EaWFsb2c7CisK
K3R5cGVkZWYgc3RydWN0IHsKKyAgICBHT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOworfSBFd2tf
U291cF9BdXRoX0RpYWxvZ0NsYXNzOworCitHVHlwZSBld2tfYXV0aF9zb3VwX2RpYWxvZ19nZXRf
dHlwZSh2b2lkKTsKKworLyoqCisgKiAgU2V0cyBjYWxsYmFjayB0byBiZSBjYWxsZWQgd2hlbiBh
dXRoZW50aWNhdGlvbiBpcyByZXF1aXJlZC4KKyAqLwordm9pZCBld2tfYXV0aF9zb3VwX3Nob3df
ZGlhbG9nX2NhbGxiYWNrX3NldChFd2tfQXV0aF9TaG93X0RpYWxvZ19DYWxsYmFjayBjYWxsYmFj
ayk7CisKK3ZvaWQgZXdrX2F1dGhfc291cF9jcmVkZW50aWFsc19zZXQoY29uc3QgY2hhciAqdXNl
cm5hbWUsIGNvbnN0IGNoYXIgKnBhc3N3b3JkLCB2b2lkICpkYXRhKTsKKworI2VuZGlmIC8vIGV3
a19hdXRoX3NvdXBfcHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX2NvbnRleHRtZW51X3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfY29u
dGV4dG1lbnVfcHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNl
MWYzYTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2NvbnRl
eHRtZW51X3ByaXZhdGUuaApAQCAtMCwwICsxLDM4IEBACisvKgorICAgIENvcHlyaWdodCAoQykg
MjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCisgICAgQ29weXJpZ2h0IChDKSAy
MDA5LTIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAg
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAg
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpZm5kZWYgZXdrX2NvbnRleHRtZW51
X3ByaXZhdGVfaAorI2RlZmluZSBld2tfY29udGV4dG1lbnVfcHJpdmF0ZV9oCisKKy8vIGZvcndh
cmQgZGVjbGFyYXRpb25zCituYW1lc3BhY2UgV2ViQ29yZSB7CitzdHJ1Y3QgQ29udGV4dE1lbnU7
CitzdHJ1Y3QgQ29udGV4dE1lbnVJdGVtOworfQorCisjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMp
CitFd2tfQ29udGV4dF9NZW51KiBld2tfY29udGV4dF9tZW51X25ldyhFdmFzX09iamVjdCogdmll
dywgV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVyKiBjb250cm9sbGVyKTsKK2Jvb2wgZXdr
X2NvbnRleHRfbWVudV9mcmVlKEV3a19Db250ZXh0X01lbnUqIG1lbnUpOwordm9pZCBld2tfY29u
dGV4dF9tZW51X2l0ZW1fYXBwZW5kKEV3a19Db250ZXh0X01lbnUqIG1lbnUsIFdlYkNvcmU6OkNv
bnRleHRNZW51SXRlbSYgY29yZSk7CitFd2tfQ29udGV4dF9NZW51KiBld2tfY29udGV4dF9tZW51
X2N1c3RvbWl6ZShFd2tfQ29udGV4dF9NZW51KiBtZW51KTsKK3ZvaWQgZXdrX2NvbnRleHRfbWVu
dV9zaG93KEV3a19Db250ZXh0X01lbnUqIG1lbnUpOworI2VuZGlmCisKKyNlbmRpZiAvLyBld2tf
Y29udGV4dF9tYW51X3ByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a19mcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcAppbmRl
eCA5NjRiNjkyLi44N2E5M2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X2ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcApAQCAt
NTAsMTMgKzUwLDE3IEBACiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiU3Vi
c3RpdHV0ZURhdGEuaCIKICNpbmNsdWRlICJXaW5kb3dzS2V5Ym9hcmRDb2Rlcy5oIgotI2luY2x1
ZGUgImV3a19sb2dnaW5nLmgiCisjaW5jbHVkZSAiZXdrX2ZyYW1lX3ByaXZhdGUuaCIKICNpbmNs
dWRlICJld2tfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a19zZWN1cml0eV9vcmlnaW5fcHJpdmF0
ZS5oIgorI2luY2x1ZGUgImV3a192aWV3X3ByaXZhdGUuaCIKICNpbmNsdWRlIDxFaW5hLmg+CiAj
aW5jbHVkZSA8RXZhcy5oPgogI2luY2x1ZGUgPGVpbmFfc2FmZXR5X2NoZWNrcy5oPgogI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KIAogc3RhdGljIGNvbnN0IGNoYXIgRVdLX0ZSQU1FX1RZUEVfU1RS
W10gPSAiRVdLX0ZyYW1lIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
ZnJhbWVfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZV9wcml2YXRl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmQwODdkZQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWVfcHJpdmF0ZS5oCkBAIC0w
LDAgKzEsODYgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgUHJvRlVTSU9OIGVt
YmVkZGVkIHN5c3RlbXMKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMiBTYW1zdW5nIEVsZWN0
cm9uaWNzCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAg
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorKi8KKworI2lmbmRlZiBld2tfZnJhbWVfcHJpdmF0ZV9oCisjZGVmaW5lIGV3a19mcmFt
ZV9wcml2YXRlX2gKKworI2luY2x1ZGUgImV3a19mcmFtZS5oIgorI2luY2x1ZGUgPEV2YXMuaD4K
KyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgV2lkZ2V0OworY2xhc3MgRnJhbWU7Cit9CisKK0V2
YXNfT2JqZWN0KiBld2tfZnJhbWVfYWRkKEV2YXMqIGNhbnZhcyk7Citib29sIGV3a19mcmFtZV9p
bml0KEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgRXZhc19PYmplY3QqIHZpZXcsIFdlYkNvcmU6OkZy
YW1lKiBmcmFtZSk7Citib29sIGV3a19mcmFtZV9jaGlsZF9hZGQoRXZhc19PYmplY3QqIGV3a0Zy
YW1lLCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNoaWxkLCBjb25zdCBXVEY6OlN0
cmluZyYgbmFtZSwgY29uc3QgV2ViQ29yZTo6S1VSTCYgdXJsLCBjb25zdCBXVEY6OlN0cmluZyYg
cmVmZXJyZXIpOwordm9pZCBld2tfZnJhbWVfdmlld19zZXQoRXZhc19PYmplY3QqIGV3a0ZyYW1l
LCBFdmFzX09iamVjdCogbmV3UGFyZW50KTsKKwordm9pZCBld2tfZnJhbWVfY29yZV9nb25lKEV2
YXNfT2JqZWN0KiBld2tGcmFtZSk7CisKK3ZvaWQgZXdrX2ZyYW1lX2xvYWRfY29tbWl0dGVkKEV2
YXNfT2JqZWN0KiBld2tGcmFtZSk7Cit2b2lkIGV3a19mcmFtZV9sb2FkX3N0YXJ0ZWQoRXZhc19P
YmplY3QqIGV3a0ZyYW1lKTsKK3ZvaWQgZXdrX2ZyYW1lX2xvYWRfcHJvdmlzaW9uYWwoRXZhc19P
YmplY3QqIGV3a0ZyYW1lKTsKK3ZvaWQgZXdrX2ZyYW1lX2xvYWRfZmlyc3RsYXlvdXRfZmluaXNo
ZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKK3ZvaWQgZXdrX2ZyYW1lX2xvYWRfZmlyc3RsYXlv
dXRfbm9uZW1wdHlfZmluaXNoZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKK3ZvaWQgZXdrX2Zy
YW1lX2xvYWRfZG9jdW1lbnRfZmluaXNoZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKK3ZvaWQg
ZXdrX2ZyYW1lX2xvYWRfZmluaXNoZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjb25zdCBjaGFy
KiBlcnJvckRvbWFpbiwgaW50IGVycm9yQ29kZSwgYm9vbCBpc0NhbmNlbGxhdGlvbiwgY29uc3Qg
Y2hhciogZXJyb3JEZXNjcmlwdGlvbiwgY29uc3QgY2hhciogZmFpbGluZ1VybCk7Cit2b2lkIGV3
a19mcmFtZV9sb2FkX3Jlc291cmNlX2ZpbmlzaGVkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgdW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyKTsKK3ZvaWQgZXdrX2ZyYW1lX2xvYWRfcmVzb3VyY2VfZmFp
bGVkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgRXdrX0ZyYW1lX0xvYWRfRXJyb3IqIGVycm9yKTsK
K3ZvaWQgZXdrX2ZyYW1lX2xvYWRfZXJyb3IoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjb25zdCBj
aGFyKiBlcnJvckRvbWFpbiwgaW50IGVycm9yQ29kZSwgYm9vbCBpc0NhbmNlbGxhdGlvbiwgY29u
c3QgY2hhciogZXJyb3JEZXNjcmlwdGlvbiwgY29uc3QgY2hhciogZmFpbGluZ1VybCk7Cit2b2lk
IGV3a19mcmFtZV9sb2FkX3Byb2dyZXNzX2NoYW5nZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsK
Kwordm9pZCBld2tfZnJhbWVfcmVkaXJlY3RfY2FuY2VsbGVkKEV2YXNfT2JqZWN0KiBld2tGcmFt
ZSk7Cit2b2lkIGV3a19mcmFtZV9yZWRpcmVjdF9wcm92aXNpb25hbF9sb2FkKEV2YXNfT2JqZWN0
KiBld2tGcmFtZSk7Cit2b2lkIGV3a19mcmFtZV9yZWRpcmVjdF9yZXF1ZXN0ZWQoRXZhc19PYmpl
Y3QqIGV3a0ZyYW1lLCBjb25zdCBjaGFyKiB1cmwpOwordm9pZCBld2tfZnJhbWVfcmVxdWVzdF93
aWxsX3NlbmQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBFd2tfRnJhbWVfUmVzb3VyY2VfTWVzc2Fn
ZXMqIG1lc3NhZ2VzKTsKK3ZvaWQgZXdrX2ZyYW1lX3JlcXVlc3RfYXNzaWduX2lkZW50aWZpZXIo
RXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjb25zdCBFd2tfRnJhbWVfUmVzb3VyY2VfUmVxdWVzdCog
cmVxdWVzdCk7Cit2b2lkIGV3a19mcmFtZV9yZXNwb25zZV9yZWNlaXZlZChFdmFzX09iamVjdCog
ZXdrRnJhbWUsIEV3a19GcmFtZV9SZXNvdXJjZV9SZXNwb25zZSogcmVzcG9uc2UpOwordm9pZCBl
d2tfZnJhbWVfdmlld19zdGF0ZV9zYXZlKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgV2ViQ29yZTo6
SGlzdG9yeUl0ZW0qIGl0ZW0pOworCit2b2lkIGV3a19mcmFtZV9kaWRfcGVyZm9ybV9maXJzdF9u
YXZpZ2F0aW9uKEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7CisKK3ZvaWQgZXdrX2ZyYW1lX2NvbnRl
bnRzX3NpemVfY2hhbmdlZChFdmFzX09iamVjdCogZXdrRnJhbWUsIEV2YXNfQ29vcmQgd2lkdGgs
IEV2YXNfQ29vcmQgaGVpZ2h0KTsKK3ZvaWQgZXdrX2ZyYW1lX3RpdGxlX3NldChFdmFzX09iamVj
dCogZXdrRnJhbWUsIGNvbnN0IGNoYXIqIHRpdGxlKTsKKwordm9pZCBld2tfZnJhbWVfdmlld19j
cmVhdGVfZm9yX3ZpZXcoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBFdmFzX09iamVjdCogdmlldyk7
Citib29sIGV3a19mcmFtZV91cmlfY2hhbmdlZChFdmFzX09iamVjdCogZXdrRnJhbWUpOwordm9p
ZCBld2tfZnJhbWVfZm9yY2VfbGF5b3V0KEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7Cit2b2lkIGV3
a19mcmFtZV9pY29uX2NoYW5nZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKKworV1RGOjpQYXNz
UmVmUHRyPFdlYkNvcmU6OldpZGdldD4gZXdrX2ZyYW1lX3BsdWdpbl9jcmVhdGUoRXZhc19PYmpl
Y3QqIGV3a0ZyYW1lLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBwbHVnaW5TaXplLCBXZWJDb3Jl
OjpIVE1MUGx1Z0luRWxlbWVudCogZWxlbWVudCwgY29uc3QgV2ViQ29yZTo6S1VSTCYgdXJsLCBj
b25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFdURjo6VmVj
dG9yPFdURjo6U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlw
ZSwgYm9vbCBsb2FkTWFudWFsbHkpOworCit2b2lkIGV3a19mcmFtZV9lZGl0b3JfY2xpZW50X2Nv
bnRlbnRzX2NoYW5nZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKK3ZvaWQgZXdrX2ZyYW1lX2Vk
aXRvcl9jbGllbnRfc2VsZWN0aW9uX2NoYW5nZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKKwor
dm9pZCBld2tfZnJhbWVfbWl4ZWRfY29udGVudF9kaXNwbGF5ZWRfc2V0KEV2YXNfT2JqZWN0KiBl
d2tGcmFtZSwgYm9vbCBoYXNEaXNwbGF5ZWQpOwordm9pZCBld2tfZnJhbWVfbWl4ZWRfY29udGVu
dF9ydW5fc2V0KEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgYm9vbCBoYXNSdW4pOworCit2b2lkIGV3
a19mcmFtZV94c3NfZGV0ZWN0ZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjb25zdCBFd2tfRnJh
bWVfWHNzX05vdGlmaWNhdGlvbiogeHNzSW5mbyk7CisKK25hbWVzcGFjZSBFV0tQcml2YXRlIHsK
K1dlYkNvcmU6OkZyYW1lICpjb3JlRnJhbWUoY29uc3QgRXZhc19PYmplY3QgKmV3a0ZyYW1lKTsK
K0V2YXNfT2JqZWN0KiBraXRGcmFtZShjb25zdCBXZWJDb3JlOjpGcmFtZSogY29yZUZyYW1lKTsK
K30gLy8gbmFtZXNwYWNlIEVXS1ByaXZhdGUKKworI2VuZGlmIC8vIGV3a19mcmFtZV9wcml2YXRl
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfaGlzdG9yeS5jcHAgYi9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2hpc3RvcnkuY3BwCmluZGV4IDFhNGU5YjcuLjNkYzg4
MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfaGlzdG9yeS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19oaXN0b3J5LmNwcApAQCAtMjgsOSArMjgsOSBA
QAogI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFn
ZUdyb3VwLmgiCi0jaW5jbHVkZSAiZXdrX2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJld2tfaGlzdG9y
eV9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKLSNpbmNsdWRlICJld2tfdXRp
bC5oIgorI2luY2x1ZGUgImV3a191dGlsX3ByaXZhdGUuaCIKICNpbmNsdWRlIDxFaW5hLmg+CiAj
aW5jbHVkZSA8ZWluYV9zYWZldHlfY2hlY2tzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19oaXN0b3J5X3ByaXZh
dGUuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfaGlzdG9yeV9wcml2YXRlLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDQ1NDdiZQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfaGlzdG9yeV9wcml2YXRlLmgKQEAgLTAsMCArMSwz
OSBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQg
c3lzdGVtcworICAgIENvcHlyaWdodCAoQykgMjAwOS0yMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MK
KworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisq
LworCisjaWZuZGVmIGV3a19oaXN0b3J5X3ByaXZhdGVfaAorI2RlZmluZSBld2tfaGlzdG9yeV9w
cml2YXRlX2gKKworI2luY2x1ZGUgIkJhY2tGb3J3YXJkTGlzdEltcGwuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworY2xhc3MgSGlzdG9yeUl0ZW07CitjbGFzcyBCYWNrRm9yd2FyZExpc3RJbXBs
OworfQorCitFd2tfSGlzdG9yeV9JdGVtICpld2tfaGlzdG9yeV9pdGVtX25ld19mcm9tX2NvcmUo
V2ViQ29yZTo6SGlzdG9yeUl0ZW0gKmNvcmUpOworRXdrX0hpc3RvcnkqIGV3a19oaXN0b3J5X25l
dyhXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3RJbXBsKiBoaXN0b3J5KTsKK3ZvaWQgZXdrX2hpc3Rv
cnlfZnJlZShFd2tfSGlzdG9yeSogaGlzdG9yeSk7CisKK25hbWVzcGFjZSBFV0tQcml2YXRlIHsK
K1dlYkNvcmU6Okhpc3RvcnlJdGVtICpjb3JlSGlzdG9yeUl0ZW0oY29uc3QgRXdrX0hpc3Rvcnlf
SXRlbSAqZXdrSGlzdG9yeUl0ZW0pOworfSAvLyBuYW1lc3BhY2UgRVdLUHJpdmF0ZQorCisjZW5k
aWYgLy8gZXdrX2hpc3RvcnlfcHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX2pzX3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfanNfcHJp
dmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiMzJmOTkKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2pzX3ByaXZhdGUuaApAQCAt
MCwwICsxLDQyIEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFByb0ZVU0lPTiBl
bWJlZGRlZCBzeXN0ZW1zCisgICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTIgU2Ftc3VuZyBFbGVj
dHJvbmljcworCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAg
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAg
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KKyovCisKKyNpZm5kZWYgZXdrX2pzX3ByaXZhdGVfaAorI2RlZmluZSBld2tfanNfcHJp
dmF0ZV9oCisKKyNpbmNsdWRlICJOUF9qc29iamVjdC5oIgorI2luY2x1ZGUgImV3a19qcy5oIgor
CisjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCisjZGVmaW5lIEVXS19KU19PQkpFQ1Rf
TUFHSUMgMHg2OTY5NjkKKwordHlwZWRlZiBzdHJ1Y3QgX0V3a19KU19DbGFzcyBFd2tfSlNfQ2xh
c3M7CitzdHJ1Y3QgX0V3a19KU19PYmplY3QgeworICAgIEphdmFTY3JpcHRPYmplY3QgYmFzZTsK
KyAgICBjb25zdCBjaGFyKiBuYW1lOworICAgIGNvbnN0IEV3a19KU19DbGFzcyogY2xzOworICAg
IEVpbmFfSGFzaCogcHJvcGVydGllczsKKyAgICBFdmFzX09iamVjdCogdmlldzsgLy8gZXdrX3Zp
ZXc6IGNoZWNrIGlmIHRoaXMgb2JqZWN0IGhhcyBhbHJlYWR5IGJlZW4gYWRkZWQgdG8gYW5vdGhl
ciBld2tfdmlldworICAgIEV3a19KU19PYmplY3RfVHlwZSB0eXBlOworICAgIEVJTkFfTUFHSUM7
Cit9OworI2VuZGlmIC8vIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQorCisjZW5kaWYgLy8g
ZXdrX2pzX3ByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19s
b2dnaW5nLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2xvZ2dpbmcuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZjhhN2Y0MS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX2xvZ2dpbmcuaAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLS8q
Ci0gICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMK
LSAgICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBTYW1zdW5nIEVsZWN0cm9uaWNzCi0KLSAgICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAg
ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotLyoq
Ci0gKiBAZmlsZSAgICBld2tfbG9nZ2luZy5oCi0gKiBAYnJpZWYgICBQcm92aWRlcyBtYWNyb3Mg
Zm9yIGxvZ2dpbmcuCi0gKi8KLQotI2lmbmRlZiBld2tfbG9nZ2luZ19oCi0jZGVmaW5lIGV3a19s
b2dnaW5nX2gKLQotZXh0ZXJuIGludCBfZXdrX2xvZ19kb207Ci0jZGVmaW5lIENSSVRJQ0FMKC4u
LikgRUlOQV9MT0dfRE9NX0NSSVQoX2V3a19sb2dfZG9tLCBfX1ZBX0FSR1NfXykKLSNkZWZpbmUg
RVJSKC4uLikgRUlOQV9MT0dfRE9NX0VSUihfZXdrX2xvZ19kb20sIF9fVkFfQVJHU19fKQotI2Rl
ZmluZSBXUk4oLi4uKSBFSU5BX0xPR19ET01fV0FSTihfZXdrX2xvZ19kb20sIF9fVkFfQVJHU19f
KQotI2RlZmluZSBJTkYoLi4uKSBFSU5BX0xPR19ET01fSU5GTyhfZXdrX2xvZ19kb20sIF9fVkFf
QVJHU19fKQotI2RlZmluZSBEQkcoLi4uKSBFSU5BX0xPR19ET01fREJHKF9ld2tfbG9nX2RvbSwg
X19WQV9BUkdTX18pCi0KLSNlbmRpZiAvLyBld2tfbG9nZ2luZ19oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX21haW4uY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a19tYWluLmNwcAppbmRleCA3NjIxZDM3Li5kOWJlNTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2VmbC9ld2svZXdrX21haW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
bWFpbi5jcHAKQEAgLTMwLDggKzMwLDcgQEAKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1
ZGUgIlN0b3JhZ2VUcmFja2VyLmgiCiAjaW5jbHVkZSAiU3RvcmFnZVRyYWNrZXJDbGllbnRFZmwu
aCIKLSNpbmNsdWRlICJld2tfYXV0aF9zb3VwLmgiCi0jaW5jbHVkZSAiZXdrX2xvZ2dpbmcuaCIK
KyNpbmNsdWRlICJld2tfYXV0aF9zb3VwX3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfbmV0d29y
ay5oIgogI2luY2x1ZGUgImV3a19wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3NldHRpbmdzLmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX25ldHdvcmsuY3BwIGIvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a19uZXR3b3JrLmNwcAppbmRleCA1NDFjY2RkLi44YWQzYzQ5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX25ldHdvcmsuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbmV0d29yay5jcHAKQEAgLTIyLDcgKzIyLDcgQEAK
IAogI2luY2x1ZGUgIk5ldHdvcmtTdGF0ZU5vdGlmaWVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VI
YW5kbGUuaCIKLSNpbmNsdWRlICJld2tfbG9nZ2luZy5oIgorI2luY2x1ZGUgImV3a19wcml2YXRl
LmgiCiAjaW5jbHVkZSA8RWluYS5oPgogI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcml2YXRlLmgKaW5k
ZXggZmEyODRmMy4uYWFmNzFkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a19wcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcml2YXRlLmgKQEAg
LTEsNiArMSw2IEBACiAvKgogICAgIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFByb0ZVU0lPTiBl
bWJlZGRlZCBzeXN0ZW1zCi0gICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgU2Ftc3VuZyBFbGVj
dHJvbmljcworICAgIENvcHlyaWdodCAoQykgMjAwOS0yMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MK
IAogICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKICAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjcsNjUgKzI3LDE4IEBACiAjZGVmaW5lIGV3a19wcml2
YXRlX2gKIAogI2luY2x1ZGUgIkFQSUNhc3QuaCIKLSNpbmNsdWRlICJCYWNrRm9yd2FyZExpc3RJ
bXBsLmgiCi0jaW5jbHVkZSAiRnJhbWUuaCIKLSNpbmNsdWRlICJOUF9qc29iamVjdC5oIgotI2lu
Y2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJXaWRnZXQuaCIKLSNpbmNsdWRlICJld2tfaGlzdG9y
eS5oIgotI2luY2x1ZGUgImV3a19qcy5oIgotI2luY2x1ZGUgImV3a192aWV3LmgiCiAjaW5jbHVk
ZSA8RXZhcy5oPgotI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSNpbmNsdWRlIDxF
dmFzX0dMLmg+Ci0jZW5kaWYKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KIAogLy8gSWYgZGVmaW5lZCwgZXdrIHdpbGwgZG8gdHlwZSBjaGVja2lu
ZyB0byBlbnN1cmUgb2JqZWN0cyBhcmUgb2YgY29ycmVjdCB0eXBlCiAjZGVmaW5lIEVXS19UWVBF
X0NIRUNLIDEKICNkZWZpbmUgRVdLX0FSR0JfQllURVNfU0laRSA0CiAKLSNpZiBFTkFCTEUoTkVU
U0NBUEVfUExVR0lOX0FQSSkKLSNkZWZpbmUgRVdLX0pTX09CSkVDVF9NQUdJQyAweDY5Njk2OQot
Ci10eXBlZGVmIHN0cnVjdCBfRXdrX0pTX0NsYXNzIEV3a19KU19DbGFzczsKLXN0cnVjdCBfRXdr
X0pTX09iamVjdCB7Ci0gICAgSmF2YVNjcmlwdE9iamVjdCBiYXNlOwotICAgIGNvbnN0IGNoYXIq
IG5hbWU7Ci0gICAgY29uc3QgRXdrX0pTX0NsYXNzKiBjbHM7Ci0gICAgRWluYV9IYXNoKiBwcm9w
ZXJ0aWVzOwotICAgIEV2YXNfT2JqZWN0KiB2aWV3OyAvLyBld2tfdmlldzogY2hlY2sgaWYgdGhp
cyBvYmplY3QgaGFzIGFscmVhZHkgYmVlbiBhZGRlZCB0byBhbm90aGVyIGV3a192aWV3Ci0gICAg
RXdrX0pTX09iamVjdF9UeXBlIHR5cGU7Ci0gICAgRUlOQV9NQUdJQzsKLX07Ci0jZW5kaWYgLy8g
RU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0KLS8vIERlZmluZXMgdGhlIG5hbWVzIGZvciBp
bml0aWFsaXppbmcgZXdrX3ZpZXdfc21hcnRfY2xhc3MKLWNvbnN0IGNoYXIgZXdrVmlld1RpbGVk
TmFtZVtdID0gIkV3a19WaWV3X1RpbGVkIjsKLWNvbnN0IGNoYXIgZXdrVmlld1NpbmdsZU5hbWVb
XSA9ICJFd2tfVmlld19TaW5nbGUiOwotCi0vLyBEZWZpbmUgdG8gcHJldmVudCBhbiBhcHBsaWNh
dGlvbiB1c2luZyBkaWZmZXJlbnQgdmlldyB0eXBlIGZyb20gY2FsbGluZyB0aGUgZnVuY3Rpb24u
Ci0jZGVmaW5lIEVXS19WSUVXX1RZUEVfQ0hFQ0tfT1JfUkVUVVJOKGV3a1ZpZXcsIHZpZXdOYW1l
LCAuLi4pIFwKLSAgICBpZiAoIWV2YXNfb2JqZWN0X3NtYXJ0X3R5cGVfY2hlY2soZXdrVmlldywg
dmlld05hbWUpKSB7IFwKLSAgICAgICAgSU5GKCJld2tWaWV3IGlzbid0IGFuIGluc3RhbmNlIG9m
ICVzIiwgdmlld05hbWUpOyBcCi0gICAgICAgIHJldHVybiBfX1ZBX0FSR1NfXzsgXAotICAgIH0K
LQogLy8gZm9yd2FyZCBkZWNsYXJhdGlvbnMKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLXN0cnVjdCBQ
b3B1cE1lbnVDbGllbnQ7Ci1zdHJ1Y3QgQ29udGV4dE1lbnU7Ci1zdHJ1Y3QgQ29udGV4dE1lbnVJ
dGVtOwotI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQotc3RydWN0IENvbG9yOwotc3RydWN0
IENvbG9yQ2hvb3NlckNsaWVudDsKLSNlbmRpZgogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJ
VElORykKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwogY2xhc3MgR3JhcGhpY3NMYXllcjsKICNl
bmRpZgotY2xhc3MgU2VjdXJpdHlPcmlnaW47CiB9CiAKIHN0cnVjdCBFd2tfV2luZG93X09iamVj
dF9DbGVhcmVkX0V2ZW50IHsKQEAgLTk0LDE3OSArNDcsMTIgQEAgc3RydWN0IEV3a19XaW5kb3df
T2JqZWN0X0NsZWFyZWRfRXZlbnQgewogICAgIEV2YXNfT2JqZWN0KiBmcmFtZTsKIH07CiAKLW5h
bWVzcGFjZSBFV0tQcml2YXRlIHsKLQotV2ViQ29yZTo6RnJhbWUgKmNvcmVGcmFtZShjb25zdCBF
dmFzX09iamVjdCAqZXdrRnJhbWUpOwotV2ViQ29yZTo6UGFnZSAqY29yZVBhZ2UoY29uc3QgRXZh
c19PYmplY3QgKmV3a1ZpZXcpOwotV2ViQ29yZTo6SGlzdG9yeUl0ZW0gKmNvcmVIaXN0b3J5SXRl
bShjb25zdCBFd2tfSGlzdG9yeV9JdGVtICpld2tIaXN0b3J5SXRlbSk7Ci1QbGF0Zm9ybVBhZ2VD
bGllbnQgY29yZVBhZ2VDbGllbnQoRXZhc19PYmplY3QqIGV3a1ZpZXcpOwotCi1FdmFzX09iamVj
dCoga2l0RnJhbWUoY29uc3QgV2ViQ29yZTo6RnJhbWUqIGNvcmVGcmFtZSk7Ci0KLX0gLy8gbmFt
ZXNwYWNlIEVXS1ByaXZhdGUKLQotdm9pZCBld2tfdmlld19yZWFkeShFdmFzX09iamVjdCogZXdr
Vmlldyk7Ci12b2lkIGV3a192aWV3X2lucHV0X21ldGhvZF9zdGF0ZV9zZXQoRXZhc19PYmplY3Qq
IGV3a1ZpZXcsIGJvb2wgYWN0aXZlKTsKLXZvaWQgZXdrX3ZpZXdfdGl0bGVfc2V0KEV2YXNfT2Jq
ZWN0KiBld2tWaWV3LCBjb25zdCBjaGFyKiB0aXRsZSk7Ci12b2lkIGV3a192aWV3X3VyaV9jaGFu
Z2VkKEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKLXZvaWQgZXdrX3ZpZXdfbG9hZF9kb2N1bWVudF9m
aW5pc2hlZChFdmFzX09iamVjdCogZXdrVmlldywgRXZhc19PYmplY3QqIGZyYW1lKTsKLXZvaWQg
ZXdrX3ZpZXdfbG9hZF9zdGFydGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX09iamVjdCog
ZXdrRnJhbWUpOwotdm9pZCBld2tfdmlld19sb2FkX3Byb3Zpc2lvbmFsKEV2YXNfT2JqZWN0KiBl
d2tWaWV3KTsKLXZvaWQgZXdrX3ZpZXdfZnJhbWVfbWFpbl9sb2FkX3N0YXJ0ZWQoRXZhc19PYmpl
Y3QqIGV3a1ZpZXcpOwotdm9pZCBld2tfdmlld19mcmFtZV9tYWluX2NsZWFyZWQoRXZhc19PYmpl
Y3QqIGV3a1ZpZXcpOwotdm9pZCBld2tfdmlld19mcmFtZV9tYWluX2ljb25fcmVjZWl2ZWQoRXZh
c19PYmplY3QqIGV3a1ZpZXcpOwotdm9pZCBld2tfdmlld19sb2FkX2ZpbmlzaGVkKEV2YXNfT2Jq
ZWN0KiBld2tWaWV3LCBjb25zdCBFd2tfRnJhbWVfTG9hZF9FcnJvciogZXJyb3IpOwotdm9pZCBl
d2tfdmlld19sb2FkX2Vycm9yKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBFd2tfRnJhbWVf
TG9hZF9FcnJvciogZXJyb3IpOwotdm9pZCBld2tfdmlld19sb2FkX3Byb2dyZXNzX2NoYW5nZWQo
RXZhc19PYmplY3QqIGV3a1ZpZXcpOwotdm9pZCBld2tfdmlld19sb2FkX3Nob3coRXZhc19PYmpl
Y3QqIGV3a1ZpZXcpOwotdm9pZCBld2tfdmlld19vbmxvYWRfZXZlbnQoRXZhc19PYmplY3QqIGV3
a1ZpZXcsIEV2YXNfT2JqZWN0KiBmcmFtZSk7Ci12b2lkIGV3a192aWV3X3Jlc3RvcmVfc3RhdGUo
RXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2YXNfT2JqZWN0KiBmcmFtZSk7Ci1FdmFzX09iamVjdCog
ZXdrX3ZpZXdfd2luZG93X2NyZWF0ZShFdmFzX09iamVjdCogZXdrVmlldywgYm9vbCBqYXZhc2Ny
aXB0LCBjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyogY29yZUZlYXR1cmVzKTsKLXZvaWQg
ZXdrX3ZpZXdfd2luZG93X2Nsb3NlKEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKLQotdm9pZCBld2tf
dmlld19tb3VzZV9saW5rX2hvdmVyX2luKEV2YXNfT2JqZWN0KiBld2tWaWV3LCB2b2lkKiBkYXRh
KTsKLXZvaWQgZXdrX3ZpZXdfbW91c2VfbGlua19ob3Zlcl9vdXQoRXZhc19PYmplY3QqIGV3a1Zp
ZXcpOwotCi12b2lkIGV3a192aWV3X3Rvb2xiYXJzX3Zpc2libGVfc2V0KEV2YXNfT2JqZWN0KiBl
d2tWaWV3LCBib29sIHZpc2libGUpOwotdm9pZCBld2tfdmlld190b29sYmFyc192aXNpYmxlX2dl
dChFdmFzX09iamVjdCogZXdrVmlldywgYm9vbCogdmlzaWJsZSk7Ci0KLXZvaWQgZXdrX3ZpZXdf
c3RhdHVzYmFyX3Zpc2libGVfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBib29sIHZpc2libGUp
Owotdm9pZCBld2tfdmlld19zdGF0dXNiYXJfdmlzaWJsZV9nZXQoRXZhc19PYmplY3QqIGV3a1Zp
ZXcsIGJvb2wqIHZpc2libGUpOwotdm9pZCBld2tfdmlld19zdGF0dXNiYXJfdGV4dF9zZXQoRXZh
c19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIqIHRleHQpOwotCi12b2lkIGV3a192aWV3X3Nj
cm9sbGJhcnNfdmlzaWJsZV9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGJvb2wgdmlzaWJsZSk7
Ci12b2lkIGV3a192aWV3X3Njcm9sbGJhcnNfdmlzaWJsZV9nZXQoRXZhc19PYmplY3QqIGV3a1Zp
ZXcsIGJvb2wqIHZpc2libGUpOwotCi12b2lkIGV3a192aWV3X21lbnViYXJfdmlzaWJsZV9zZXQo
RXZhc19PYmplY3QqIGV3a1ZpZXcsIGJvb2wgdmlzaWJsZSk7Ci12b2lkIGV3a192aWV3X21lbnVi
YXJfdmlzaWJsZV9nZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGJvb2wqIHZpc2libGUpOwotCi12
b2lkIGV3a192aWV3X3Rvb2x0aXBfdGV4dF9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0
IGNoYXIqIHRleHQpOwotCi12b2lkIGV3a192aWV3X2FkZF9jb25zb2xlX21lc3NhZ2UoRXZhc19P
YmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIqIG1lc3NhZ2UsIHVuc2lnbmVkIGludCBsaW5lTnVt
YmVyLCBjb25zdCBjaGFyKiBzb3VyY2VJRCk7Ci0KLXZvaWQgZXdrX3ZpZXdfcnVuX2phdmFzY3Jp
cHRfYWxlcnQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2YXNfT2JqZWN0KiBmcmFtZSwgY29uc3Qg
Y2hhciogbWVzc2FnZSk7Ci1ib29sIGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X2NvbmZpcm0oRXZh
c19PYmplY3QqIGV3a1ZpZXcsIEV2YXNfT2JqZWN0KiBmcmFtZSwgY29uc3QgY2hhciogbWVzc2Fn
ZSk7Ci1ib29sIGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X3Byb21wdChFdmFzX09iamVjdCogZXdr
VmlldywgRXZhc19PYmplY3QqIGZyYW1lLCBjb25zdCBjaGFyKiBtZXNzYWdlLCBjb25zdCBjaGFy
KiBkZWZhdWx0VmFsdWUsIGNoYXIqKiB2YWx1ZSk7Ci1ib29sIGV3a192aWV3X3Nob3VsZF9pbnRl
cnJ1cHRfamF2YXNjcmlwdChFdmFzX09iamVjdCogZXdrVmlldyk7Ci11aW50NjRfdCBld2tfdmll
d19leGNlZWRlZF9kYXRhYmFzZV9xdW90YShFdmFzX09iamVjdCogZXdrVmlldywgRXZhc19PYmpl
Y3QqIGZyYW1lLCBjb25zdCBjaGFyKiBkYXRhYmFzZU5hbWUsIHVpbnQ2NF90IGN1cnJlbnRTaXpl
LCB1aW50NjRfdCBleHBlY3RlZFNpemUpOwotCi1ib29sIGV3a192aWV3X3J1bl9vcGVuX3BhbmVs
KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX09iamVjdCogZnJhbWUsIGJvb2wgYWxsb3dzTXVs
dGlwbGVGaWxlcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFjY2VwdE1JTUVUeXBlcywgRWluYV9M
aXN0Kiogc2VsZWN0ZWRGaWxlbmFtZXMpOwotCi12b2lkIGV3a192aWV3X3JlcGFpbnQoRXZhc19P
YmplY3QqIGV3a1ZpZXcsIEV2YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5LCBFdmFzX0Nvb3JkIHdp
ZHRoLCBFdmFzX0Nvb3JkIGhlaWdodCk7Ci12b2lkIGV3a192aWV3X3Njcm9sbChFdmFzX09iamVj
dCogZXdrVmlldywgRXZhc19Db29yZCBkZWx0YVgsIEV2YXNfQ29vcmQgZGVsdGFZLCBFdmFzX0Nv
b3JkIHNjcm9sbFgsIEV2YXNfQ29vcmQgc2Nyb2xsWSwgRXZhc19Db29yZCBzY3JvbGxXaWR0aCwg
RXZhc19Db29yZCBzY3JvbGxIZWlnaHQsIEV2YXNfQ29vcmQgY2VudGVyWCwgRXZhc19Db29yZCBj
ZW50ZXJZLCBFdmFzX0Nvb3JkIGNlbnRlclcsIEV2YXNfQ29vcmQgY2VudGVySGVpZ2h0KTsKLVdl
YkNvcmU6OlBhZ2UqIGV3a192aWV3X2NvcmVfcGFnZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3
a1ZpZXcpOwotCi1XVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGV3a192aWV3X2ZyYW1l
X2NyZWF0ZShFdmFzX09iamVjdCogZXdrVmlldywgRXZhc19PYmplY3QqIGZyYW1lLCBjb25zdCBX
VEY6OlN0cmluZyYgbmFtZSwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVs
ZW1lbnQsIGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCwgY29uc3QgV1RGOjpTdHJpbmcmIHJlZmVy
cmVyKTsKLQotV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gZXdrX3ZpZXdfcGx1Z2lu
X2NyZWF0ZShFdmFzX09iamVjdCogZXdrVmlldywgRXZhc19PYmplY3QqIGZyYW1lLCBjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiBwbHVnaW5TaXplLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCog
ZWxlbWVudCwgY29uc3QgV2ViQ29yZTo6S1VSTCYgdXJsLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6
OlN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgcGFy
YW1WYWx1ZXMsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBsb2FkTWFudWFsbHkp
OwotCi0jaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi12b2lkIGV3a192aWV3X2NvbG9yX2No
b29zZXJfbmV3KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBXZWJDb3JlOjpDb2xvckNob29zZXJDbGll
bnQqIGNsaWVudCwgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGluaXRpYWxDb2xvcik7Ci12b2lkIGV3
a192aWV3X2NvbG9yX2Nob29zZXJfY2hhbmdlZChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3Qg
V2ViQ29yZTo6Q29sb3ImIG5ld0NvbG9yKTsKLSNlbmRpZgotCi12b2lkIGV3a192aWV3X3BvcHVw
X25ldyhFdmFzX09iamVjdCogZXdrVmlldywgV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KiBjbGll
bnQsIGludCBzZWxlY3RlZCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCk7Ci12b2lkIGV3
a192aWV3X3ZpZXdwb3J0X2F0dHJpYnV0ZXNfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25z
dCBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cyYgYXJndW1lbnRzKTsKLQotdm9pZCBld2tfdmll
d19kb3dubG9hZF9yZXF1ZXN0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfRG93bmxvYWQqIGRv
d25sb2FkKTsKLQotdm9pZCBld2tfdmlld19lZGl0b3JfY2xpZW50X2NvbnRlbnRzX2NoYW5nZWQo
RXZhc19PYmplY3QqIGV3a1ZpZXcpOwotdm9pZCBld2tfdmlld19lZGl0b3JfY2xpZW50X3NlbGVj
dGlvbl9jaGFuZ2VkKEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKK2V4dGVybiBpbnQgX2V3a19sb2df
ZG9tOwogCi1ib29sIGV3a192aWV3X2ZvY3VzX2Nhbl9jeWNsZShFdmFzX09iamVjdCogZXdrVmll
dywgRXdrX0ZvY3VzX0RpcmVjdGlvbiBkaXJlY3Rpb24pOwotdm9pZCBld2tfdmlld19mcmFtZV92
aWV3X2NyZWF0aW9uX25vdGlmeShFdmFzX09iamVjdCogZXdrVmlldyk7Ci0KLSNpZiBFTkFCTEUo
TkVUU0NBUEVfUExVR0lOX0FQSSkKLXZvaWQgZXdrX3ZpZXdfanNfd2luZG93X29iamVjdF9jbGVh
cihFdmFzX09iamVjdCogZXdrVmlldywgRXZhc19PYmplY3QqIGZyYW1lKTsKLSNlbmRpZgotCi0j
aWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLXZvaWQgZXdrX3ZpZXdfbmVlZF90b3VjaF9ldmVudHNf
c2V0KEV2YXNfT2JqZWN0KiwgYm9vbCBuZWVkZWQpOwotYm9vbCBld2tfdmlld19uZWVkX3RvdWNo
X2V2ZW50c19nZXQoY29uc3QgRXZhc19PYmplY3QqKTsKLSNlbmRpZgotCi1Fd2tfSGlzdG9yeV9J
dGVtICpld2tfaGlzdG9yeV9pdGVtX25ld19mcm9tX2NvcmUoV2ViQ29yZTo6SGlzdG9yeUl0ZW0g
KmNvcmUpOwotRXdrX0hpc3RvcnkqIGV3a19oaXN0b3J5X25ldyhXZWJDb3JlOjpCYWNrRm9yd2Fy
ZExpc3RJbXBsKiBoaXN0b3J5KTsKLXZvaWQgZXdrX2hpc3RvcnlfZnJlZShFd2tfSGlzdG9yeSog
aGlzdG9yeSk7Ci0KLSNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLUV3a19Db250ZXh0X01lbnUq
IGV3a19jb250ZXh0X21lbnVfbmV3KEV2YXNfT2JqZWN0KiB2aWV3LCBXZWJDb3JlOjpDb250ZXh0
TWVudUNvbnRyb2xsZXIqIGNvbnRyb2xsZXIpOwotYm9vbCBld2tfY29udGV4dF9tZW51X2ZyZWUo
RXdrX0NvbnRleHRfTWVudSogbWVudSk7Ci12b2lkIGV3a19jb250ZXh0X21lbnVfaXRlbV9hcHBl
bmQoRXdrX0NvbnRleHRfTWVudSogbWVudSwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtJiBjb3Jl
KTsKLUV3a19Db250ZXh0X01lbnUqIGV3a19jb250ZXh0X21lbnVfY3VzdG9taXplKEV3a19Db250
ZXh0X01lbnUqIG1lbnUpOwotdm9pZCBld2tfY29udGV4dF9tZW51X3Nob3coRXdrX0NvbnRleHRf
TWVudSogbWVudSk7Ci0jZW5kaWYKLQotY29uc3QgRWluYV9SZWN0YW5nbGUqIGV3a192aWV3X3Jl
cGFpbnRzX3BvcChFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYsIHNpemVfdCogY291bnQpOwot
Y29uc3QgRXdrX1Njcm9sbF9SZXF1ZXN0KiBld2tfdmlld19zY3JvbGxfcmVxdWVzdHNfZ2V0KGNv
bnN0IEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdiwgc2l6ZV90KiBjb3VudCk7Ci0KLXZvaWQg
ZXdrX3ZpZXdfcmVwYWludF9hZGQoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2LCBFdmFzX0Nv
b3JkIHgsIEV2YXNfQ29vcmQgeSwgRXZhc19Db29yZCB3aWR0aCwgRXZhc19Db29yZCBoZWlnaHQp
OwotCi12b2lkIGV3a192aWV3X2xheW91dF9pZl9uZWVkZWRfcmVjdXJzaXZlKEV3a19WaWV3X1By
aXZhdGVfRGF0YSogcHJpdik7Ci0KLUV3a19XaW5kb3dfRmVhdHVyZXMqIGV3a193aW5kb3dfZmVh
dHVyZXNfbmV3X2Zyb21fY29yZShjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyogY29yZSk7
Ci0KLUV2YXNfT2JqZWN0KiBld2tfZnJhbWVfYWRkKEV2YXMqIGNhbnZhcyk7Ci1ib29sIGV3a19m
cmFtZV9pbml0KEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgRXZhc19PYmplY3QqIHZpZXcsIFdlYkNv
cmU6OkZyYW1lKiBmcmFtZSk7Ci1ib29sIGV3a19mcmFtZV9jaGlsZF9hZGQoRXZhc19PYmplY3Qq
IGV3a0ZyYW1lLCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNoaWxkLCBjb25zdCBX
VEY6OlN0cmluZyYgbmFtZSwgY29uc3QgV2ViQ29yZTo6S1VSTCYgdXJsLCBjb25zdCBXVEY6OlN0
cmluZyYgcmVmZXJyZXIpOwotdm9pZCBld2tfZnJhbWVfdmlld19zZXQoRXZhc19PYmplY3QqIGV3
a0ZyYW1lLCBFdmFzX09iamVjdCogbmV3UGFyZW50KTsKLQotdm9pZCBld2tfZnJhbWVfY29yZV9n
b25lKEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7Ci0KLXZvaWQgZXdrX2ZyYW1lX2xvYWRfY29tbWl0
dGVkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7Ci12b2lkIGV3a19mcmFtZV9sb2FkX3N0YXJ0ZWQo
RXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKLXZvaWQgZXdrX2ZyYW1lX2xvYWRfcHJvdmlzaW9uYWwo
RXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKLXZvaWQgZXdrX2ZyYW1lX2xvYWRfZmlyc3RsYXlvdXRf
ZmluaXNoZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKLXZvaWQgZXdrX2ZyYW1lX2xvYWRfZmly
c3RsYXlvdXRfbm9uZW1wdHlfZmluaXNoZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKLXZvaWQg
ZXdrX2ZyYW1lX2xvYWRfZG9jdW1lbnRfZmluaXNoZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsK
LXZvaWQgZXdrX2ZyYW1lX2xvYWRfZmluaXNoZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjb25z
dCBjaGFyKiBlcnJvckRvbWFpbiwgaW50IGVycm9yQ29kZSwgYm9vbCBpc0NhbmNlbGxhdGlvbiwg
Y29uc3QgY2hhciogZXJyb3JEZXNjcmlwdGlvbiwgY29uc3QgY2hhciogZmFpbGluZ1VybCk7Ci12
b2lkIGV3a19mcmFtZV9sb2FkX3Jlc291cmNlX2ZpbmlzaGVkKEV2YXNfT2JqZWN0KiBld2tGcmFt
ZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKLXZvaWQgZXdrX2ZyYW1lX2xvYWRfcmVzb3Vy
Y2VfZmFpbGVkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgRXdrX0ZyYW1lX0xvYWRfRXJyb3IqIGVy
cm9yKTsKLXZvaWQgZXdrX2ZyYW1lX2xvYWRfZXJyb3IoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBj
b25zdCBjaGFyKiBlcnJvckRvbWFpbiwgaW50IGVycm9yQ29kZSwgYm9vbCBpc0NhbmNlbGxhdGlv
biwgY29uc3QgY2hhciogZXJyb3JEZXNjcmlwdGlvbiwgY29uc3QgY2hhciogZmFpbGluZ1VybCk7
Ci12b2lkIGV3a19mcmFtZV9sb2FkX3Byb2dyZXNzX2NoYW5nZWQoRXZhc19PYmplY3QqIGV3a0Zy
YW1lKTsKLQotdm9pZCBld2tfZnJhbWVfcmVkaXJlY3RfY2FuY2VsbGVkKEV2YXNfT2JqZWN0KiBl
d2tGcmFtZSk7Ci12b2lkIGV3a19mcmFtZV9yZWRpcmVjdF9wcm92aXNpb25hbF9sb2FkKEV2YXNf
T2JqZWN0KiBld2tGcmFtZSk7Ci12b2lkIGV3a19mcmFtZV9yZWRpcmVjdF9yZXF1ZXN0ZWQoRXZh
c19PYmplY3QqIGV3a0ZyYW1lLCBjb25zdCBjaGFyKiB1cmwpOwotdm9pZCBld2tfZnJhbWVfcmVx
dWVzdF93aWxsX3NlbmQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBFd2tfRnJhbWVfUmVzb3VyY2Vf
TWVzc2FnZXMqIG1lc3NhZ2VzKTsKLXZvaWQgZXdrX2ZyYW1lX3JlcXVlc3RfYXNzaWduX2lkZW50
aWZpZXIoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjb25zdCBFd2tfRnJhbWVfUmVzb3VyY2VfUmVx
dWVzdCogcmVxdWVzdCk7Ci12b2lkIGV3a19mcmFtZV9yZXNwb25zZV9yZWNlaXZlZChFdmFzX09i
amVjdCogZXdrRnJhbWUsIEV3a19GcmFtZV9SZXNvdXJjZV9SZXNwb25zZSogcmVzcG9uc2UpOwot
dm9pZCBld2tfZnJhbWVfdmlld19zdGF0ZV9zYXZlKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgV2Vi
Q29yZTo6SGlzdG9yeUl0ZW0qIGl0ZW0pOwotCi12b2lkIGV3a19mcmFtZV9kaWRfcGVyZm9ybV9m
aXJzdF9uYXZpZ2F0aW9uKEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7Ci0KLXZvaWQgZXdrX2ZyYW1l
X2NvbnRlbnRzX3NpemVfY2hhbmdlZChFdmFzX09iamVjdCogZXdrRnJhbWUsIEV2YXNfQ29vcmQg
d2lkdGgsIEV2YXNfQ29vcmQgaGVpZ2h0KTsKLXZvaWQgZXdrX2ZyYW1lX3RpdGxlX3NldChFdmFz
X09iamVjdCogZXdrRnJhbWUsIGNvbnN0IGNoYXIqIHRpdGxlKTsKLQotdm9pZCBld2tfZnJhbWVf
dmlld19jcmVhdGVfZm9yX3ZpZXcoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBFdmFzX09iamVjdCog
dmlldyk7Ci1ib29sIGV3a19mcmFtZV91cmlfY2hhbmdlZChFdmFzX09iamVjdCogZXdrRnJhbWUp
Owotdm9pZCBld2tfZnJhbWVfZm9yY2VfbGF5b3V0KEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7Ci12
b2lkIGV3a19mcmFtZV9pY29uX2NoYW5nZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKLQotV1RG
OjpQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gZXdrX2ZyYW1lX3BsdWdpbl9jcmVhdGUoRXZh
c19PYmplY3QqIGV3a0ZyYW1lLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBwbHVnaW5TaXplLCBX
ZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCogZWxlbWVudCwgY29uc3QgV2ViQ29yZTo6S1VSTCYg
dXJsLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFdU
Rjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGNvbnN0IFdURjo6U3RyaW5nJiBt
aW1lVHlwZSwgYm9vbCBsb2FkTWFudWFsbHkpOwotCi1ib29sIGV3a192aWV3X25hdmlnYXRpb25f
cG9saWN5X2RlY2lzaW9uKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfRnJhbWVfUmVzb3VyY2Vf
UmVxdWVzdCogcmVxdWVzdCk7Ci0KLXZvaWQgZXdrX3ZpZXdfY29udGVudHNfc2l6ZV9jaGFuZ2Vk
KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX0Nvb3JkIHdpZHRoLCBFdmFzX0Nvb3JkIGhlaWdo
dCk7Ci0KLVdlYkNvcmU6OkZsb2F0UmVjdCBld2tfdmlld19wYWdlX3JlY3RfZ2V0KGNvbnN0IEV2
YXNfT2JqZWN0KiBld2tWaWV3KTsKLQotY29uc3QgY2hhciogZXdrX3NldHRpbmdzX2RlZmF1bHRf
dXNlcl9hZ2VudF9nZXQoKTsKLQotdm9pZCBld2tfZnJhbWVfZWRpdG9yX2NsaWVudF9jb250ZW50
c19jaGFuZ2VkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7Ci12b2lkIGV3a19mcmFtZV9lZGl0b3Jf
Y2xpZW50X3NlbGVjdGlvbl9jaGFuZ2VkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7Ci0KLXZvaWQg
ZXdrX2ZyYW1lX21peGVkX2NvbnRlbnRfZGlzcGxheWVkX3NldChFdmFzX09iamVjdCogZXdrRnJh
bWUsIGJvb2wgaGFzRGlzcGxheWVkKTsKLXZvaWQgZXdrX2ZyYW1lX21peGVkX2NvbnRlbnRfcnVu
X3NldChFdmFzX09iamVjdCogZXdrRnJhbWUsIGJvb2wgaGFzUnVuKTsKLXZvaWQgZXdrX3ZpZXdf
bWl4ZWRfY29udGVudF9kaXNwbGF5ZWRfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBib29sIGhh
c0Rpc3BsYXllZCk7Ci12b2lkIGV3a192aWV3X21peGVkX2NvbnRlbnRfcnVuX3NldChFdmFzX09i
amVjdCogZXdrVmlldywgYm9vbCBoYXNSdW4pOwotdm9pZCBld2tfZnJhbWVfeHNzX2RldGVjdGVk
KEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgY29uc3QgRXdrX0ZyYW1lX1hzc19Ob3RpZmljYXRpb24q
IHhzc0luZm8pOwotCi1Fd2tfU2VjdXJpdHlfT3JpZ2luKiBld2tfc2VjdXJpdHlfb3JpZ2luX25l
dyhXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiogb3JpZ2luKTsKLQotI2lmIFVTRShBQ0NFTEVSQVRF
RF9DT01QT1NJVElORykKLWJvb2wgZXdrX3ZpZXdfYWNjZWxlcmF0ZWRfY29tcG9zaXRpbmdfb2Jq
ZWN0X2NyZWF0ZShFdmFzX09iamVjdCogZXdrVmlldywgRXZhc19OYXRpdmVfU3VyZmFjZSogbmF0
aXZlU3VyZmFjZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCk7Ci1XZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRCogZXdrX3ZpZXdfYWNjZWxlcmF0ZWRfY29tcG9zaXRpbmdfY29udGV4dF9n
ZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcpOwotI2VuZGlmCisjZGVmaW5lIENSSVRJQ0FMKC4uLikg
RUlOQV9MT0dfRE9NX0NSSVQoX2V3a19sb2dfZG9tLCBfX1ZBX0FSR1NfXykKKyNkZWZpbmUgRVJS
KC4uLikgRUlOQV9MT0dfRE9NX0VSUihfZXdrX2xvZ19kb20sIF9fVkFfQVJHU19fKQorI2RlZmlu
ZSBXUk4oLi4uKSBFSU5BX0xPR19ET01fV0FSTihfZXdrX2xvZ19kb20sIF9fVkFfQVJHU19fKQor
I2RlZmluZSBJTkYoLi4uKSBFSU5BX0xPR19ET01fSU5GTyhfZXdrX2xvZ19kb20sIF9fVkFfQVJH
U19fKQorI2RlZmluZSBEQkcoLi4uKSBFSU5BX0xPR19ET01fREJHKF9ld2tfbG9nX2RvbSwgX19W
QV9BUkdTX18pCiAKICNlbmRpZiAvLyBld2tfcHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX3NlY3VyaXR5X29yaWdpbl9wcml2YXRlLmggYi9Tb3VyY2UvV2Vi
S2l0L2VmbC9ld2svZXdrX3NlY3VyaXR5X29yaWdpbl9wcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uN2I2MTU3ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfc2VjdXJpdHlfb3JpZ2luX3ByaXZhdGUuaApAQCAtMCwwICsxLDMx
IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBz
eXN0ZW1zCisgICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcwor
CisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
ICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyov
CisKKyNpZm5kZWYgZXdrX3NlY3VyaXR5X29yaWdpbl9wcml2YXRlX2gKKyNkZWZpbmUgZXdrX3Nl
Y3VyaXR5X29yaWdpbl9wcml2YXRlX2gKKworLy8gZm9yd2FyZCBkZWNsYXJhdGlvbnMKK25hbWVz
cGFjZSBXZWJDb3JlIHsKK2NsYXNzIFNlY3VyaXR5T3JpZ2luOworfQorCitFd2tfU2VjdXJpdHlf
T3JpZ2luKiBld2tfc2VjdXJpdHlfb3JpZ2luX25ldyhXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiog
b3JpZ2luKTsKKworI2VuZGlmIC8vIGV3a19zZWN1cml0eV9vcmlnaW5fcHJpdmF0ZV9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3NldHRpbmdzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfc2V0dGluZ3MuY3BwCmluZGV4IDg0MjkzMGEuLjNiYWM2YjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfc2V0dGluZ3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfc2V0dGluZ3MuY3BwCkBAIC0zNCw5ICszNCw4IEBACiAj
aW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKICNpbmNsdWRlICJQYWdlQ2FjaGUuaCIKICNpbmNsdWRl
ICJTZXR0aW5ncy5oIgotI2luY2x1ZGUgImV3a19sb2dnaW5nLmgiCiAjaW5jbHVkZSAiZXdrX3By
aXZhdGUuaCIKLSNpbmNsdWRlICJld2tfdXRpbC5oIgorI2luY2x1ZGUgImV3a191dGlsX3ByaXZh
dGUuaCIKICNpbmNsdWRlIDxFaW5hLmg+CiAjaW5jbHVkZSA8ZWluYV9zYWZldHlfY2hlY2tzLmg+
CiAjaW5jbHVkZSA8ZXJybm8uaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfc2V0dGluZ3NfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19zZXR0aW5n
c19wcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQ3ZWU1OAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfc2V0dGluZ3NfcHJp
dmF0ZS5oCkBAIC0wLDAgKzEsMjYgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAg
UHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMiBT
YW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lmbmRlZiBld2tfc2V0dGluZ3NfcHJpdmF0ZV9oCisj
ZGVmaW5lIGV3a19zZXR0aW5nc19wcml2YXRlX2gKKworY29uc3QgY2hhciogZXdrX3NldHRpbmdz
X2RlZmF1bHRfdXNlcl9hZ2VudF9nZXQoKTsKKworI2VuZGlmIC8vIGV3a19zZXR0aW5nc19wcml2
YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRfYmFja2lu
Z19zdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX2JhY2tpbmdfc3Rv
cmUuY3BwCmluZGV4IDdjZDQzZWQuLjkwMzQ5OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
ZWZsL2V3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a190aWxlZF9iYWNraW5nX3N0b3JlLmNwcApAQCAtMTksMTEgKzE5LDExIEBACiAq
LwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiZXdrX3RpbGVkX2JhY2tpbmdfc3Rv
cmUuaCIKIAogI2luY2x1ZGUgImV3a19wcml2YXRlLmgiCi0jaW5jbHVkZSAiZXdrX3RpbGVkX21h
dHJpeC5oIgotI2luY2x1ZGUgImV3a190aWxlZF9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX3Rp
bGVkX2JhY2tpbmdfc3RvcmVfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a190aWxlZF9tYXRyaXhf
cHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a190aWxlZF9tb2RlbF9wcml2YXRlLmgiCiAjaW5jbHVk
ZSA8RWNvcmUuaD4KICNpbmNsdWRlIDxFaW5hLmg+CiAjaW5jbHVkZSA8YWxnb3JpdGhtPgpAQCAt
MTE2LDcgKzExNiw2IEBAIHN0cnVjdCBfRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfRGF0YSB7CiB9
OwogCiBzdGF0aWMgRXZhc19TbWFydF9DbGFzcyBfcGFyZW50X3NjID0gRVZBU19TTUFSVF9DTEFT
U19JTklUX05VTEw7Ci1pbnQgX2V3a190aWxlZF9sb2dfZG9tID0gLTE7CiAKICNkZWZpbmUgUFJJ
Vl9EQVRBX0dFVF9PUl9SRVRVUk4ob2JqLCBwdHIsIC4uLikgXAogICAgIEV3a19UaWxlZF9CYWNr
aW5nX1N0b3JlX0RhdGEqIHB0ciA9IHN0YXRpY19jYXN0PEV3a19UaWxlZF9CYWNraW5nX1N0b3Jl
X0RhdGEqPihldmFzX29iamVjdF9zbWFydF9kYXRhX2dldChvYmopKTsgXApAQCAtMTM4Nyw5ICsx
Mzg2LDYgQEAgRXZhc19PYmplY3QqIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX2FkZChFdmFzKiBj
YW52YXMpCiB7CiAgICAgc3RhdGljIEV2YXNfU21hcnQqIHNtYXJ0ID0gMDsKIAotICAgIGlmIChf
ZXdrX3RpbGVkX2xvZ19kb20gPCAwKQotICAgICAgICBfZXdrX3RpbGVkX2xvZ19kb20gPSBlaW5h
X2xvZ19kb21haW5fcmVnaXN0ZXIoIkV3a19UaWxlZF9CYWNraW5nX1N0b3JlIiwgMCk7Ci0KICAg
ICBpZiAoIXNtYXJ0KSB7CiAgICAgICAgIHN0YXRpYyBFdmFzX1NtYXJ0X0NsYXNzIHNjID0KICAg
ICAgICAgICAgIEVWQVNfU01BUlRfQ0xBU1NfSU5JVF9OQU1FX1ZFUlNJT04oIkV3a19UaWxlZF9C
YWNraW5nX1N0b3JlIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3Rp
bGVkX2JhY2tpbmdfc3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRfYmFj
a2luZ19zdG9yZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZTVhMDQ4Li4wMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5o
CisrKyAvZGV2L251bGwKQEAgLTEsMTE5ICswLDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAy
MDA5LTIwMTAgU2Ftc3VuZyBFbGVjdHJvbmljcwotICAgIENvcHlyaWdodCAoQykgMjAwOS0yMDEw
IFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
LSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI2lmbmRlZiBld2tfdGlsZWRfYmFja2lu
Z19zdG9yZV9oCi0jZGVmaW5lIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX2gKLQotI2luY2x1ZGUg
IkVXZWJLaXQuaCIKLQotLyogRW5hYmxlIGFjY291bnRpbmcgb2YgcmVuZGVyIHRpbWUgaW4gdGls
ZSBzdGF0aXN0aWNzICovCi0vLyAjZGVmaW5lIFRJTEVfU1RBVFNfQUNDT1VOVF9SRU5ERVJfVElN
RQotCi0KLS8qIElmIGRlZmluZSBld2sgd2lsbCBkbyBtb3JlIGFjY291bnRpbmcgdG8gY2hlY2sg
Zm9yIG1lbW9yeSBsZWFrcwotICogdHJ5ICJraWxsIC1VU1IxICRQSUQiIHRvIGdldCBpbnN0YW50
YW5lb3VzIGRlYnVnCi0gKiB0cnkgImtpbGwgLVVTUjIgJFBJRCIgdG8gZ2V0IGluc3RhbnRhbmVv
dXMgZGVidWcgYW5kIGZvcmNlIGZsdXNoIG9mIGNhY2hlCi0gKi8KLSN1bmRlZiBERUJVR19NRU1f
TEVBS1MKLQotY29uc3QgaW50IGRlZmF1bHRUaWxlV2lkdGggPSAyNTY7Ci1jb25zdCBpbnQgZGVm
YXVsdFRpbGVIZWlndGggPSAyNTY7Ci0KLWNvbnN0IGZsb2F0IHpvb21TdGVwTWluaW11bSA9IDAu
MDE7Ci0KLSNkZWZpbmUgVElMRV9TSVpFX0FUX1pPT00oU0laRSwgWk9PTSkgKChpbnQpcm91bmRm
KChTSVpFKSAqIChaT09NKSkpCi0jZGVmaW5lIFRJTEVfWk9PTV9BVF9TSVpFKFNJWkUsIE9SSUdf
VElMRSkgKChmbG9hdCkoU0laRSkgLyAoZmxvYXQpKE9SSUdfVElMRSkpCi0jZGVmaW5lIFJPVU5E
RURfWk9PTShTSVpFLCBaT09NKSAoKGZsb2F0KShTSVpFKSAvIChmbG9hdCkoKChpbnQpcm91bmRm
KChTSVpFKSAvIChaT09NKSkpKSkKLQotI2luY2x1ZGUgPEV2YXMuaD4KLSNpbmNsdWRlIDxjYWly
by5oPgotCi10eXBlZGVmIHN0cnVjdCBfRXdrX1RpbGUgICAgICAgICAgICAgICAgICAgICBFd2tf
VGlsZTsKLXR5cGVkZWYgc3RydWN0IF9Fd2tfVGlsZV9TdGF0cyAgICAgICAgICAgICAgIEV3a19U
aWxlX1N0YXRzOwotdHlwZWRlZiBzdHJ1Y3QgX0V3a19UaWxlX01hdHJpeCAgICAgICAgICAgICAg
RXdrX1RpbGVfTWF0cml4OwotCi1zdHJ1Y3QgX0V3a19UaWxlX1N0YXRzIHsKLSAgICBkb3VibGUg
bGFzdF91c2VkOyAgICAgICAgLyoqPCB0aW1lIG9mIGxhc3QgdXNlICovCi0jaWZkZWYgVElMRV9T
VEFUU19BQ0NPVU5UX1JFTkRFUl9USU1FCi0gICAgZG91YmxlIHJlbmRlcl90aW1lOyAgICAgIC8q
KjwgYW1vdW50IG9mIHRpbWUgdGhpcyB0aWxlIHRvb2sgdG8gcmVuZGVyICovCi0jZW5kaWYKLSAg
ICB1bnNpZ25lZCBpbnQgYXJlYTsgICAgICAgLyoqPCBjYWNoZSBmb3IgKHcgKiBoKSAqLwotICAg
IHVuc2lnbmVkIGludCBtaXNzZXM7ICAgICAvKio8IG51bWJlciBvZiB0aW1lcyBpdCBiZWNhbWUg
ZGlydHkgYnV0IG5vdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiByZXBhaW50ZWQg
YXQgYWxsIHNpbmNlIGl0IHdhcyBub3QgdmlzaWJsZS4KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICovCi0gICAgRWluYV9Cb29sIGZ1bGxfdXBkYXRlIDogMTsgLyoqPCB0aWxlIHJlcXVp
cmVzIGZ1bGwgc2l6ZSB1cGRhdGUgKi8KLX07Ci0KLXN0cnVjdCBfRXdrX1RpbGUgewotICAgIEVp
bmFfVGlsZXIgKnVwZGF0ZXM7ICAgIC8qKjwgdXBkYXRlZC9kaXJ0eSBhcmVhcyAqLwotICAgIEV3
a19UaWxlX1N0YXRzIHN0YXRzOyAgICAgICAvKio8IHRpbGUgdXNhZ2Ugc3RhdGlzdGljcyAqLwot
ICAgIHVuc2lnbmVkIGxvbmcgY29sdW1uLCByb3c7IC8qKjwgdGlsZSB0aWxlIHBvc2l0aW9uICov
Ci0gICAgRXZhc19Db29yZCB4LCB5OyAgICAgICAgLyoqPCB0aWxlIGNvb3JkaW5hdGUgcG9zaXRp
b24gKi8KLQotICAgIC8qKiBOZXZlciBldmVyIGNoYW5nZSB0aG9zZSBhZnRlciB0aWxlIGlzIGNy
ZWF0ZWQgKHJlc3BlY3QgY29uc3QhKSAqLwotICAgIGNvbnN0IEV2YXNfQ29vcmQgd2lkdGgsIGhl
aWdodDsgICAgICAgIC8qKjwgdGlsZSBzaXplIChzZWUgVElMRV9TSVpFX0FUX1pPT00oKSkgKi8K
LSAgICBjb25zdCBFdmFzX0NvbG9yc3BhY2UgY3NwYWNlOyAvKio8IGNvbG9yc3BhY2UgKi8KLSAg
ICBjb25zdCBmbG9hdCB6b29tOyAgICAgICAgICAgICAvKio8IHpvb20gbGV2ZWwgY29udGVudHMg
d2VyZSByZW5kZXJlZCBhdCAqLwotICAgIGNvbnN0IHNpemVfdCBieXRlczsgICAgICAgICAgIC8q
KjwgYnl0ZXMgdXNlZCBpbiBwaXhlbHMuIGtlZXAKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKiBiZWZvcmUgcGl4ZWxzIHRvIGd1YXJhbnRlZQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAqIGFsaWduZW1lbnQhCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICovCi0gICAgaW50IHZpc2libGU7ICAgICAgICAgICAgICAgICAgLyoqPCB2aXNp
YmlsaXR5IGNvdW50ZXIgb2YgdGhpcyB0aWxlICovCi0gICAgRXZhc19PYmplY3QgKmltYWdlOyAg
ICAgICAgICAgLyoqPCBFdmFzIEltYWdlLCB0aGUgdGlsZSB0byBiZSByZW5kZXJlZCAqLwotfTsK
LQotI2luY2x1ZGUgImV3a190aWxlZF9tYXRyaXguaCIKLSNpbmNsdWRlICJld2tfdGlsZWRfbW9k
ZWwuaCIKLQotLyogdmlldyAqLwotRXZhc19PYmplY3QgKmV3a190aWxlZF9iYWNraW5nX3N0b3Jl
X2FkZChFdmFzICplKTsKLQotdm9pZCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9yZW5kZXJfY2Jf
c2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgKCpjYikodm9pZCAqZGF0YSwgRXdrX1RpbGUg
KnQsIGNvbnN0IEVpbmFfUmVjdGFuZ2xlICphcmVhKSwgY29uc3Qgdm9pZCAqZGF0YSk7Ci0KLUVp
bmFfQm9vbCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9zY3JvbGxfZnVsbF9vZmZzZXRfc2V0KEV2
YXNfT2JqZWN0ICpvLCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSk7Ci1FaW5hX0Jvb2wgZXdr
X3RpbGVkX2JhY2tpbmdfc3RvcmVfc2Nyb2xsX2Z1bGxfb2Zmc2V0X2FkZChFdmFzX09iamVjdCAq
bywgRXZhc19Db29yZCBkeCwgRXZhc19Db29yZCBkeSk7Ci1FaW5hX0Jvb2wgZXdrX3RpbGVkX2Jh
Y2tpbmdfc3RvcmVfc2Nyb2xsX2lubmVyX29mZnNldF9hZGQoRXZhc19PYmplY3QgKm8sIEV2YXNf
Q29vcmQgZHgsIEV2YXNfQ29vcmQgZHksIEV2YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5LCBFdmFz
X0Nvb3JkIHcsIEV2YXNfQ29vcmQgaCk7Ci0KLUVpbmFfQm9vbCBld2tfdGlsZWRfYmFja2luZ19z
dG9yZV96b29tX3NldChFdmFzX09iamVjdCAqbywgZmxvYXQgKnpvb20sIEV2YXNfQ29vcmQgY3gs
IEV2YXNfQ29vcmQgY3ksIEV2YXNfQ29vcmQgKm9mZngsIEV2YXNfQ29vcmQgKm9mZnkpOwotRWlu
YV9Cb29sIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3pvb21fd2Vha19zZXQoRXZhc19PYmplY3Qg
Km8sIGZsb2F0IHpvb20sIEV2YXNfQ29vcmQgY3gsIEV2YXNfQ29vcmQgY3kpOwotdm9pZCBld2tf
dGlsZWRfYmFja2luZ19zdG9yZV9maXhfb2Zmc2V0cyhFdmFzX09iamVjdCAqbywgRXZhc19Db29y
ZCB3LCBFdmFzX0Nvb3JkIGgpOwotdm9pZCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV96b29tX3dl
YWtfc21vb3RoX3NjYWxlX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIHNtb290aF9zY2Fs
ZSk7Ci12b2lkIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX2FscGhhX3NldChFdmFzX09iamVjdCAq
bywgRWluYV9Cb29sIGhhc19hbHBoYSk7Ci1FaW5hX0Jvb2wgZXdrX3RpbGVkX2JhY2tpbmdfc3Rv
cmVfdXBkYXRlKEV2YXNfT2JqZWN0ICpvLCBjb25zdCBFaW5hX1JlY3RhbmdsZSAqdXBkYXRlKTsK
LXZvaWQgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdXBkYXRlc19wcm9jZXNzX3ByZV9zZXQoRXZh
c19PYmplY3QgKm8sIHZvaWQqKCpjYikodm9pZCAqZGF0YSwgRXZhc19PYmplY3QgKm8pLCBjb25z
dCB2b2lkICpkYXRhKTsKLXZvaWQgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdXBkYXRlc19wcm9j
ZXNzX3Bvc3Rfc2V0KEV2YXNfT2JqZWN0ICpvLCB2b2lkKigqY2IpKHZvaWQgKmRhdGEsIHZvaWQg
KnByZV9kYXRhLCBFdmFzX09iamVjdCAqbyksIGNvbnN0IHZvaWQgKmRhdGEpOwotdm9pZCBld2tf
dGlsZWRfYmFja2luZ19zdG9yZV91cGRhdGVzX3Byb2Nlc3MoRXZhc19PYmplY3QgKm8pOwotdm9p
ZCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV91cGRhdGVzX2NsZWFyKEV2YXNfT2JqZWN0ICpvKTsK
LXZvaWQgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfY29udGVudHNfcmVzaXplKEV2YXNfT2JqZWN0
ICpvLCBFdmFzX0Nvb3JkIHdpZHRoLCBFdmFzX0Nvb3JkIGhlaWdodCk7Ci12b2lkIGV3a190aWxl
ZF9iYWNraW5nX3N0b3JlX2Rpc2FibGVkX3VwZGF0ZV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFf
Qm9vbCB2YWx1ZSk7Ci12b2lkIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX2ZsdXNoKEV2YXNfT2Jq
ZWN0ICpvKTsKLXZvaWQgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfZW5hYmxlX3NjYWxlX3NldChF
dmFzX09iamVjdCAqbywgRWluYV9Cb29sIHZhbHVlKTsKLQotRXdrX1RpbGVfVW51c2VkX0NhY2hl
ICpld2tfdGlsZWRfYmFja2luZ19zdG9yZV90aWxlX3VudXNlZF9jYWNoZV9nZXQoY29uc3QgRXZh
c19PYmplY3QgKm8pOwotdm9pZCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV90aWxlX3VudXNlZF9j
YWNoZV9zZXQoRXZhc19PYmplY3QgKm8sIEV3a19UaWxlX1VudXNlZF9DYWNoZSAqdHVjKTsKLQot
RWluYV9Cb29sIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfcmVnaW9uKEV2YXNf
T2JqZWN0ICpvLCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwgRXZhc19Db29yZCB3LCBFdmFz
X0Nvb3JkIGgsIGZsb2F0IHpvb20pOwotRWluYV9Cb29sIGV3a190aWxlZF9iYWNraW5nX3N0b3Jl
X3ByZV9yZW5kZXJfcmVsYXRpdmVfcmFkaXVzKEV2YXNfT2JqZWN0ICpvLCB1bnNpZ25lZCBpbnQg
biwgZmxvYXQgem9vbSk7Ci1FaW5hX0Jvb2wgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJlX3Jl
bmRlcl9zcGlyYWxfcXVldWUoRXZhc19PYmplY3QgKm8sIEVpbmFfUmVjdGFuZ2xlKiB2aWV3X3Jl
Y3QsIEVpbmFfUmVjdGFuZ2xlICpyZW5kZXJfcmVjdCwgaW50IG1heF9tZW1vcnksIGZsb2F0IHpv
b20pOwotdm9pZCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX2NhbmNlbChFdmFz
X09iamVjdCAqbyk7Ci0KLUVpbmFfQm9vbCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9kaXNhYmxl
X3JlbmRlcihFdmFzX09iamVjdCAqbyk7Ci1FaW5hX0Jvb2wgZXdrX3RpbGVkX2JhY2tpbmdfc3Rv
cmVfZW5hYmxlX3JlbmRlcihFdmFzX09iamVjdCAqbyk7Ci0jZW5kaWYgLy8gZXdrX3RpbGVkX2Jh
Y2tpbmdfc3RvcmVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190aWxl
ZF9iYWNraW5nX3N0b3JlX3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGls
ZWRfYmFja2luZ19zdG9yZV9wcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uNDM1YWM3YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcml2YXRlLmgKQEAgLTAsMCArMSwxMTUgQEAKKy8qCisg
ICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgU2Ftc3VuZyBFbGVjdHJvbmljcworICAgIENvcHly
aWdodCAoQykgMjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCisKKyAgICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lmbmRl
ZiBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcml2YXRlX2gKKyNkZWZpbmUgZXdrX3RpbGVkX2Jh
Y2tpbmdfc3RvcmVfcHJpdmF0ZV9oCisKKyNpbmNsdWRlICJFV2ViS2l0LmgiCisjaW5jbHVkZSA8
RXZhcy5oPgorI2luY2x1ZGUgPGNhaXJvLmg+CisKKy8qIEVuYWJsZSBhY2NvdW50aW5nIG9mIHJl
bmRlciB0aW1lIGluIHRpbGUgc3RhdGlzdGljcyAqLworLy8gI2RlZmluZSBUSUxFX1NUQVRTX0FD
Q09VTlRfUkVOREVSX1RJTUUKKworLyogSWYgZGVmaW5lIGV3ayB3aWxsIGRvIG1vcmUgYWNjb3Vu
dGluZyB0byBjaGVjayBmb3IgbWVtb3J5IGxlYWtzCisgKiB0cnkgImtpbGwgLVVTUjEgJFBJRCIg
dG8gZ2V0IGluc3RhbnRhbmVvdXMgZGVidWcKKyAqIHRyeSAia2lsbCAtVVNSMiAkUElEIiB0byBn
ZXQgaW5zdGFudGFuZW91cyBkZWJ1ZyBhbmQgZm9yY2UgZmx1c2ggb2YgY2FjaGUKKyAqLworI3Vu
ZGVmIERFQlVHX01FTV9MRUFLUworCitjb25zdCBpbnQgZGVmYXVsdFRpbGVXaWR0aCA9IDI1NjsK
K2NvbnN0IGludCBkZWZhdWx0VGlsZUhlaWd0aCA9IDI1NjsKKworY29uc3QgZmxvYXQgem9vbVN0
ZXBNaW5pbXVtID0gMC4wMTsKKworI2RlZmluZSBUSUxFX1NJWkVfQVRfWk9PTShTSVpFLCBaT09N
KSAoKGludClyb3VuZGYoKFNJWkUpICogKFpPT00pKSkKKyNkZWZpbmUgVElMRV9aT09NX0FUX1NJ
WkUoU0laRSwgT1JJR19USUxFKSAoKGZsb2F0KShTSVpFKSAvIChmbG9hdCkoT1JJR19USUxFKSkK
KyNkZWZpbmUgUk9VTkRFRF9aT09NKFNJWkUsIFpPT00pICgoZmxvYXQpKFNJWkUpIC8gKGZsb2F0
KSgoKGludClyb3VuZGYoKFNJWkUpIC8gKFpPT00pKSkpKQorCit0eXBlZGVmIHN0cnVjdCBfRXdr
X1RpbGUgICAgICAgICAgICAgICAgICAgICBFd2tfVGlsZTsKK3R5cGVkZWYgc3RydWN0IF9Fd2tf
VGlsZV9TdGF0cyAgICAgICAgICAgICAgIEV3a19UaWxlX1N0YXRzOwordHlwZWRlZiBzdHJ1Y3Qg
X0V3a19UaWxlX01hdHJpeCAgICAgICAgICAgICAgRXdrX1RpbGVfTWF0cml4OworCitzdHJ1Y3Qg
X0V3a19UaWxlX1N0YXRzIHsKKyAgICBkb3VibGUgbGFzdF91c2VkOyAgICAgICAgLyoqPCB0aW1l
IG9mIGxhc3QgdXNlICovCisjaWZkZWYgVElMRV9TVEFUU19BQ0NPVU5UX1JFTkRFUl9USU1FCisg
ICAgZG91YmxlIHJlbmRlcl90aW1lOyAgICAgIC8qKjwgYW1vdW50IG9mIHRpbWUgdGhpcyB0aWxl
IHRvb2sgdG8gcmVuZGVyICovCisjZW5kaWYKKyAgICB1bnNpZ25lZCBpbnQgYXJlYTsgICAgICAg
LyoqPCBjYWNoZSBmb3IgKHcgKiBoKSAqLworICAgIHVuc2lnbmVkIGludCBtaXNzZXM7ICAgICAv
Kio8IG51bWJlciBvZiB0aW1lcyBpdCBiZWNhbWUgZGlydHkgYnV0IG5vdAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKiByZXBhaW50ZWQgYXQgYWxsIHNpbmNlIGl0IHdhcyBub3Qgdmlz
aWJsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgRWluYV9Cb29sIGZ1
bGxfdXBkYXRlIDogMTsgLyoqPCB0aWxlIHJlcXVpcmVzIGZ1bGwgc2l6ZSB1cGRhdGUgKi8KK307
CisKK3N0cnVjdCBfRXdrX1RpbGUgeworICAgIEVpbmFfVGlsZXIgKnVwZGF0ZXM7ICAgIC8qKjwg
dXBkYXRlZC9kaXJ0eSBhcmVhcyAqLworICAgIEV3a19UaWxlX1N0YXRzIHN0YXRzOyAgICAgICAv
Kio8IHRpbGUgdXNhZ2Ugc3RhdGlzdGljcyAqLworICAgIHVuc2lnbmVkIGxvbmcgY29sdW1uLCBy
b3c7IC8qKjwgdGlsZSB0aWxlIHBvc2l0aW9uICovCisgICAgRXZhc19Db29yZCB4LCB5OyAgICAg
ICAgLyoqPCB0aWxlIGNvb3JkaW5hdGUgcG9zaXRpb24gKi8KKworICAgIC8qKiBOZXZlciBldmVy
IGNoYW5nZSB0aG9zZSBhZnRlciB0aWxlIGlzIGNyZWF0ZWQgKHJlc3BlY3QgY29uc3QhKSAqLwor
ICAgIGNvbnN0IEV2YXNfQ29vcmQgd2lkdGgsIGhlaWdodDsgICAgICAgIC8qKjwgdGlsZSBzaXpl
IChzZWUgVElMRV9TSVpFX0FUX1pPT00oKSkgKi8KKyAgICBjb25zdCBFdmFzX0NvbG9yc3BhY2Ug
Y3NwYWNlOyAvKio8IGNvbG9yc3BhY2UgKi8KKyAgICBjb25zdCBmbG9hdCB6b29tOyAgICAgICAg
ICAgICAvKio8IHpvb20gbGV2ZWwgY29udGVudHMgd2VyZSByZW5kZXJlZCBhdCAqLworICAgIGNv
bnN0IHNpemVfdCBieXRlczsgICAgICAgICAgIC8qKjwgYnl0ZXMgdXNlZCBpbiBwaXhlbHMuIGtl
ZXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBiZWZvcmUgcGl4ZWxzIHRv
IGd1YXJhbnRlZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGFsaWduZW1l
bnQhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgaW50IHZpc2li
bGU7ICAgICAgICAgICAgICAgICAgLyoqPCB2aXNpYmlsaXR5IGNvdW50ZXIgb2YgdGhpcyB0aWxl
ICovCisgICAgRXZhc19PYmplY3QgKmltYWdlOyAgICAgICAgICAgLyoqPCBFdmFzIEltYWdlLCB0
aGUgdGlsZSB0byBiZSByZW5kZXJlZCAqLworfTsKKworLyogdmlldyAqLworRXZhc19PYmplY3Qg
KmV3a190aWxlZF9iYWNraW5nX3N0b3JlX2FkZChFdmFzICplKTsKKwordm9pZCBld2tfdGlsZWRf
YmFja2luZ19zdG9yZV9yZW5kZXJfY2Jfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgKCpj
Yikodm9pZCAqZGF0YSwgRXdrX1RpbGUgKnQsIGNvbnN0IEVpbmFfUmVjdGFuZ2xlICphcmVhKSwg
Y29uc3Qgdm9pZCAqZGF0YSk7CisKK0VpbmFfQm9vbCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9z
Y3JvbGxfZnVsbF9vZmZzZXRfc2V0KEV2YXNfT2JqZWN0ICpvLCBFdmFzX0Nvb3JkIHgsIEV2YXNf
Q29vcmQgeSk7CitFaW5hX0Jvb2wgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc2Nyb2xsX2Z1bGxf
b2Zmc2V0X2FkZChFdmFzX09iamVjdCAqbywgRXZhc19Db29yZCBkeCwgRXZhc19Db29yZCBkeSk7
CitFaW5hX0Jvb2wgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc2Nyb2xsX2lubmVyX29mZnNldF9h
ZGQoRXZhc19PYmplY3QgKm8sIEV2YXNfQ29vcmQgZHgsIEV2YXNfQ29vcmQgZHksIEV2YXNfQ29v
cmQgeCwgRXZhc19Db29yZCB5LCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29vcmQgaCk7CisKK0VpbmFf
Qm9vbCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV96b29tX3NldChFdmFzX09iamVjdCAqbywgZmxv
YXQgKnpvb20sIEV2YXNfQ29vcmQgY3gsIEV2YXNfQ29vcmQgY3ksIEV2YXNfQ29vcmQgKm9mZngs
IEV2YXNfQ29vcmQgKm9mZnkpOworRWluYV9Cb29sIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3pv
b21fd2Vha19zZXQoRXZhc19PYmplY3QgKm8sIGZsb2F0IHpvb20sIEV2YXNfQ29vcmQgY3gsIEV2
YXNfQ29vcmQgY3kpOwordm9pZCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9maXhfb2Zmc2V0cyhF
dmFzX09iamVjdCAqbywgRXZhc19Db29yZCB3LCBFdmFzX0Nvb3JkIGgpOwordm9pZCBld2tfdGls
ZWRfYmFja2luZ19zdG9yZV96b29tX3dlYWtfc21vb3RoX3NjYWxlX3NldChFdmFzX09iamVjdCAq
bywgRWluYV9Cb29sIHNtb290aF9zY2FsZSk7Cit2b2lkIGV3a190aWxlZF9iYWNraW5nX3N0b3Jl
X2FscGhhX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGhhc19hbHBoYSk7CitFaW5hX0Jv
b2wgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdXBkYXRlKEV2YXNfT2JqZWN0ICpvLCBjb25zdCBF
aW5hX1JlY3RhbmdsZSAqdXBkYXRlKTsKK3ZvaWQgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdXBk
YXRlc19wcm9jZXNzX3ByZV9zZXQoRXZhc19PYmplY3QgKm8sIHZvaWQqKCpjYikodm9pZCAqZGF0
YSwgRXZhc19PYmplY3QgKm8pLCBjb25zdCB2b2lkICpkYXRhKTsKK3ZvaWQgZXdrX3RpbGVkX2Jh
Y2tpbmdfc3RvcmVfdXBkYXRlc19wcm9jZXNzX3Bvc3Rfc2V0KEV2YXNfT2JqZWN0ICpvLCB2b2lk
KigqY2IpKHZvaWQgKmRhdGEsIHZvaWQgKnByZV9kYXRhLCBFdmFzX09iamVjdCAqbyksIGNvbnN0
IHZvaWQgKmRhdGEpOwordm9pZCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV91cGRhdGVzX3Byb2Nl
c3MoRXZhc19PYmplY3QgKm8pOwordm9pZCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV91cGRhdGVz
X2NsZWFyKEV2YXNfT2JqZWN0ICpvKTsKK3ZvaWQgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfY29u
dGVudHNfcmVzaXplKEV2YXNfT2JqZWN0ICpvLCBFdmFzX0Nvb3JkIHdpZHRoLCBFdmFzX0Nvb3Jk
IGhlaWdodCk7Cit2b2lkIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX2Rpc2FibGVkX3VwZGF0ZV9z
ZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCB2YWx1ZSk7Cit2b2lkIGV3a190aWxlZF9iYWNr
aW5nX3N0b3JlX2ZsdXNoKEV2YXNfT2JqZWN0ICpvKTsKK3ZvaWQgZXdrX3RpbGVkX2JhY2tpbmdf
c3RvcmVfZW5hYmxlX3NjYWxlX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIHZhbHVlKTsK
KworRXdrX1RpbGVfVW51c2VkX0NhY2hlICpld2tfdGlsZWRfYmFja2luZ19zdG9yZV90aWxlX3Vu
dXNlZF9jYWNoZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwordm9pZCBld2tfdGlsZWRfYmFj
a2luZ19zdG9yZV90aWxlX3VudXNlZF9jYWNoZV9zZXQoRXZhc19PYmplY3QgKm8sIEV3a19UaWxl
X1VudXNlZF9DYWNoZSAqdHVjKTsKKworRWluYV9Cb29sIGV3a190aWxlZF9iYWNraW5nX3N0b3Jl
X3ByZV9yZW5kZXJfcmVnaW9uKEV2YXNfT2JqZWN0ICpvLCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29v
cmQgeSwgRXZhc19Db29yZCB3LCBFdmFzX0Nvb3JkIGgsIGZsb2F0IHpvb20pOworRWluYV9Cb29s
IGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfcmVsYXRpdmVfcmFkaXVzKEV2YXNf
T2JqZWN0ICpvLCB1bnNpZ25lZCBpbnQgbiwgZmxvYXQgem9vbSk7CitFaW5hX0Jvb2wgZXdrX3Rp
bGVkX2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRlcl9zcGlyYWxfcXVldWUoRXZhc19PYmplY3QgKm8s
IEVpbmFfUmVjdGFuZ2xlKiB2aWV3X3JlY3QsIEVpbmFfUmVjdGFuZ2xlICpyZW5kZXJfcmVjdCwg
aW50IG1heF9tZW1vcnksIGZsb2F0IHpvb20pOwordm9pZCBld2tfdGlsZWRfYmFja2luZ19zdG9y
ZV9wcmVfcmVuZGVyX2NhbmNlbChFdmFzX09iamVjdCAqbyk7CisKK0VpbmFfQm9vbCBld2tfdGls
ZWRfYmFja2luZ19zdG9yZV9kaXNhYmxlX3JlbmRlcihFdmFzX09iamVjdCAqbyk7CitFaW5hX0Jv
b2wgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfZW5hYmxlX3JlbmRlcihFdmFzX09iamVjdCAqbyk7
CisKKyNlbmRpZiAvLyBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX21hdHJpeC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX3RpbGVkX21hdHJpeC5jcHAKaW5kZXggMTUxNjgxZi4uOTU1MWE2NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9tYXRyaXguY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRfbWF0cml4LmNwcApAQCAtMjAsMTAgKzIwLDEx
IEBACiAKICNkZWZpbmUgX19TVERDX0ZPUk1BVF9NQUNST1MKICNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJld2tfdGlsZWRfbWF0cml4LmgiCiAKLSNpbmNsdWRlICJld2tfdGlsZWRfYmFj
a2luZ19zdG9yZS5oIgotI2luY2x1ZGUgImV3a190aWxlZF9wcml2YXRlLmgiCisjaW5jbHVkZSAi
ZXdrX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcml2YXRl
LmgiCisjaW5jbHVkZSAiZXdrX3RpbGVkX21hdHJpeF9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdr
X3RpbGVkX21vZGVsX3ByaXZhdGUuaCIKICNpbmNsdWRlIDxFaW5hLmg+CiAjaW5jbHVkZSA8ZXJy
bm8uaD4KICNpbmNsdWRlIDxpbnR0eXBlcy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a190aWxlZF9tYXRyaXguaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGls
ZWRfbWF0cml4LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzZWQxNGMuLjAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9tYXRyaXguaAorKysgL2Rl
di9udWxsCkBAIC0xLDYxICswLDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAg
U2Ftc3VuZyBFbGVjdHJvbmljcwotICAgIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFByb0ZVU0lP
TiBlbWJlZGRlZCBzeXN0ZW1zCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI2lmbmRlZiBld2tfdGlsZWRfbWF0cml4X2gKLSNkZWZp
bmUgZXdrX3RpbGVkX21hdHJpeF9oCi0KLSNpbmNsdWRlICJld2tfdGlsZWRfYmFja2luZ19zdG9y
ZS5oIgotCi0jaW5jbHVkZSA8RXZhcy5oPgotCi0vKiBtYXRyaXggb2YgdGlsZXMgKi8KLUV3a19U
aWxlX01hdHJpeCAqZXdrX3RpbGVfbWF0cml4X25ldyhFd2tfVGlsZV9VbnVzZWRfQ2FjaGUgKnR1
YywgdW5zaWduZWQgbG9uZyBjb2xzLCB1bnNpZ25lZCBsb25nIHJvd3MsIGZsb2F0IHpvb21fbGV2
ZWwsIEV2YXNfQ29sb3JzcGFjZSBjb2xvcl9zcGFjZSwgdm9pZCAoKnJlbmRlcl9jYWxsYmFjayko
dm9pZCAqZGF0YSwgRXdrX1RpbGUgKnQsIGNvbnN0IEVpbmFfUmVjdGFuZ2xlICp1cGRhdGUpLCBj
b25zdCB2b2lkICpyZW5kZXJfZGF0YSk7Ci12b2lkIGV3a190aWxlX21hdHJpeF9lbnRyeV9uZXco
RXdrX1RpbGVfTWF0cml4ICp0bSwgZmxvYXQgem9vbSk7Ci12b2lkIGV3a190aWxlX21hdHJpeF9m
cmVlKEV3a19UaWxlX01hdHJpeCAqdG0pOwotCi12b2lkIGV3a190aWxlX21hdHJpeF9yZXNpemUo
RXdrX1RpbGVfTWF0cml4ICp0bSwgdW5zaWduZWQgbG9uZyBjb2xzLCB1bnNpZ25lZCBsb25nIHJv
d3MpOwotdm9pZCBld2tfdGlsZV9tYXRyaXhfc2l6ZV9nZXQoRXdrX1RpbGVfTWF0cml4ICp0bSwg
dW5zaWduZWQgbG9uZyAqY29scywgdW5zaWduZWQgbG9uZyAqcm93cyk7Ci1ib29sIGV3a190aWxl
X21hdHJpeF96b29tX2xldmVsX3NldChFd2tfVGlsZV9NYXRyaXggKnRtLCBmbG9hdCB6b29tKTsK
LXZvaWQgZXdrX3RpbGVfbWF0cml4X2ludmFsaWRhdGUoRXdrX1RpbGVfTWF0cml4ICp0bSk7Ci0K
LUV3a19UaWxlX1VudXNlZF9DYWNoZSAqZXdrX3RpbGVfbWF0cml4X3VudXNlZF9jYWNoZV9nZXQo
Y29uc3QgRXdrX1RpbGVfTWF0cml4ICp0bSk7Ci0KLUV3a19UaWxlICpld2tfdGlsZV9tYXRyaXhf
dGlsZV9leGFjdF9nZXQoRXdrX1RpbGVfTWF0cml4ICp0bSwgdW5zaWduZWQgbG9uZyBjb2wsIHVu
c2lnbmVkIGxvbmcgcm93LCBmbG9hdCB6b29tKTsKLUVpbmFfQm9vbCBld2tfdGlsZV9tYXRyaXhf
dGlsZV9leGFjdF9leGlzdHMoRXdrX1RpbGVfTWF0cml4ICp0bSwgdW5zaWduZWQgbG9uZyBjb2ws
IHVuc2lnbmVkIGxvbmcgcm93LCBmbG9hdCB6b29tKTsKLUV3a19UaWxlICpld2tfdGlsZV9tYXRy
aXhfdGlsZV9uZWFyZXN0X2dldChFd2tfVGlsZV9NYXRyaXggKnRtLCB1bnNpZ25lZCBsb25nIGNv
bCwgdW5zaWduZWQgbG9uZyByb3csIGZsb2F0IHpvb20pOwotRXdrX1RpbGUgKmV3a190aWxlX21h
dHJpeF90aWxlX25ldyhFd2tfVGlsZV9NYXRyaXggKnRtLCBFdmFzICpldmFzLCB1bnNpZ25lZCBs
b25nIGNvbCwgdW5zaWduZWQgbG9uZyByb3csIGZsb2F0IHpvb20pOwotRWluYV9Cb29sIGV3a190
aWxlX21hdHJpeF90aWxlX3B1dChFd2tfVGlsZV9NYXRyaXggKnRtLCBFd2tfVGlsZSAqdCwgZG91
YmxlIGxhc3RfdXNlZCk7Ci0KLUVpbmFfQm9vbCBld2tfdGlsZV9tYXRyaXhfdGlsZV91cGRhdGUo
RXdrX1RpbGVfTWF0cml4ICp0bSwgdW5zaWduZWQgbG9uZyBjb2wsIHVuc2lnbmVkIGxvbmcgcm93
LCBjb25zdCBFaW5hX1JlY3RhbmdsZSAqdXBkYXRlKTsKLUVpbmFfQm9vbCBld2tfdGlsZV9tYXRy
aXhfdGlsZV91cGRhdGVfZnVsbChFd2tfVGlsZV9NYXRyaXggKnRtLCB1bnNpZ25lZCBsb25nIGNv
bCwgdW5zaWduZWQgbG9uZyByb3cpOwotdm9pZCBld2tfdGlsZV9tYXRyaXhfdGlsZV91cGRhdGVz
X2NsZWFyKEV3a19UaWxlX01hdHJpeCAqdG0sIEV3a19UaWxlICp0KTsKLQotRWluYV9Cb29sIGV3
a190aWxlX21hdHJpeF91cGRhdGUoRXdrX1RpbGVfTWF0cml4ICp0bSwgY29uc3QgRWluYV9SZWN0
YW5nbGUgKnVwZGF0ZSwgZmxvYXQgem9vbSk7Ci12b2lkIGV3a190aWxlX21hdHJpeF91cGRhdGVz
X3Byb2Nlc3MoRXdrX1RpbGVfTWF0cml4ICp0bSk7Ci12b2lkIGV3a190aWxlX21hdHJpeF91cGRh
dGVzX2NsZWFyKEV3a19UaWxlX01hdHJpeCAqdG0pOwotdm9pZCBld2tfdGlsZV9tYXRyaXhfZnJl
ZXplKEV3a19UaWxlX01hdHJpeCAqdG0pOwotdm9pZCBld2tfdGlsZV9tYXRyaXhfdGhhdyhFd2tf
VGlsZV9NYXRyaXggKnRtKTsKLQotLy8gcmVtb3ZlIG1lIQotdm9pZCBld2tfdGlsZV9tYXRyaXhf
ZGJnKGNvbnN0IEV3a19UaWxlX01hdHJpeCAqdG0pOwotdm9pZCBld2tfdGlsZV91bnVzZWRfY2Fj
aGVfZGJnKGNvbnN0IEV3a19UaWxlX1VudXNlZF9DYWNoZSAqdHVjKTsKLXZvaWQgZXdrX3RpbGVf
YWNjb3VudGluZ19kYmcoKTsKLQotI2VuZGlmIC8vIGV3a190aWxlZF9tYXRyaXhfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9tYXRyaXhfcHJpdmF0ZS5oIGIv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9tYXRyaXhfcHJpdmF0ZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2MzBlYWQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX21hdHJpeF9wcml2YXRlLmgKQEAgLTAsMCAr
MSw2NyBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBTYW1zdW5nIEVsZWN0cm9u
aWNzCisgICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3Rl
bXMKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CisqLworCisvKioKKyAqIEBmaWxlICAgIGV3a190aWxlZF9tYXRyaXhfcHJpdmF0ZV9oCisgKiBA
YnJpZWYgICBQcml2YXRlIG1ldGhvZHMgb2YgRVdLIHRpbGVkIG1hdHJpeC4KKyAqLworCisjaWZu
ZGVmIGV3a190aWxlZF9tYXRyaXhfcHJpdmF0ZV9oCisjZGVmaW5lIGV3a190aWxlZF9tYXRyaXhf
cHJpdmF0ZV9oCisKKyNpbmNsdWRlICJld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcml2YXRlLmgi
CisjaW5jbHVkZSAiZXdrX3RpbGVkX21hdHJpeF9wcml2YXRlLmgiCisKKyNpbmNsdWRlIDxFdmFz
Lmg+CisKKy8qIG1hdHJpeCBvZiB0aWxlcyAqLworRXdrX1RpbGVfTWF0cml4ICpld2tfdGlsZV9t
YXRyaXhfbmV3KEV3a19UaWxlX1VudXNlZF9DYWNoZSAqdHVjLCB1bnNpZ25lZCBsb25nIGNvbHMs
IHVuc2lnbmVkIGxvbmcgcm93cywgZmxvYXQgem9vbV9sZXZlbCwgRXZhc19Db2xvcnNwYWNlIGNv
bG9yX3NwYWNlLCB2b2lkICgqcmVuZGVyX2NhbGxiYWNrKSh2b2lkICpkYXRhLCBFd2tfVGlsZSAq
dCwgY29uc3QgRWluYV9SZWN0YW5nbGUgKnVwZGF0ZSksIGNvbnN0IHZvaWQgKnJlbmRlcl9kYXRh
KTsKK3ZvaWQgZXdrX3RpbGVfbWF0cml4X2VudHJ5X25ldyhFd2tfVGlsZV9NYXRyaXggKnRtLCBm
bG9hdCB6b29tKTsKK3ZvaWQgZXdrX3RpbGVfbWF0cml4X2ZyZWUoRXdrX1RpbGVfTWF0cml4ICp0
bSk7CisKK3ZvaWQgZXdrX3RpbGVfbWF0cml4X3Jlc2l6ZShFd2tfVGlsZV9NYXRyaXggKnRtLCB1
bnNpZ25lZCBsb25nIGNvbHMsIHVuc2lnbmVkIGxvbmcgcm93cyk7Cit2b2lkIGV3a190aWxlX21h
dHJpeF9zaXplX2dldChFd2tfVGlsZV9NYXRyaXggKnRtLCB1bnNpZ25lZCBsb25nICpjb2xzLCB1
bnNpZ25lZCBsb25nICpyb3dzKTsKK2Jvb2wgZXdrX3RpbGVfbWF0cml4X3pvb21fbGV2ZWxfc2V0
KEV3a19UaWxlX01hdHJpeCAqdG0sIGZsb2F0IHpvb20pOwordm9pZCBld2tfdGlsZV9tYXRyaXhf
aW52YWxpZGF0ZShFd2tfVGlsZV9NYXRyaXggKnRtKTsKKworRXdrX1RpbGVfVW51c2VkX0NhY2hl
ICpld2tfdGlsZV9tYXRyaXhfdW51c2VkX2NhY2hlX2dldChjb25zdCBFd2tfVGlsZV9NYXRyaXgg
KnRtKTsKKworRXdrX1RpbGUgKmV3a190aWxlX21hdHJpeF90aWxlX2V4YWN0X2dldChFd2tfVGls
ZV9NYXRyaXggKnRtLCB1bnNpZ25lZCBsb25nIGNvbCwgdW5zaWduZWQgbG9uZyByb3csIGZsb2F0
IHpvb20pOworRWluYV9Cb29sIGV3a190aWxlX21hdHJpeF90aWxlX2V4YWN0X2V4aXN0cyhFd2tf
VGlsZV9NYXRyaXggKnRtLCB1bnNpZ25lZCBsb25nIGNvbCwgdW5zaWduZWQgbG9uZyByb3csIGZs
b2F0IHpvb20pOworRXdrX1RpbGUgKmV3a190aWxlX21hdHJpeF90aWxlX25lYXJlc3RfZ2V0KEV3
a19UaWxlX01hdHJpeCAqdG0sIHVuc2lnbmVkIGxvbmcgY29sLCB1bnNpZ25lZCBsb25nIHJvdywg
ZmxvYXQgem9vbSk7CitFd2tfVGlsZSAqZXdrX3RpbGVfbWF0cml4X3RpbGVfbmV3KEV3a19UaWxl
X01hdHJpeCAqdG0sIEV2YXMgKmV2YXMsIHVuc2lnbmVkIGxvbmcgY29sLCB1bnNpZ25lZCBsb25n
IHJvdywgZmxvYXQgem9vbSk7CitFaW5hX0Jvb2wgZXdrX3RpbGVfbWF0cml4X3RpbGVfcHV0KEV3
a19UaWxlX01hdHJpeCAqdG0sIEV3a19UaWxlICp0LCBkb3VibGUgbGFzdF91c2VkKTsKKworRWlu
YV9Cb29sIGV3a190aWxlX21hdHJpeF90aWxlX3VwZGF0ZShFd2tfVGlsZV9NYXRyaXggKnRtLCB1
bnNpZ25lZCBsb25nIGNvbCwgdW5zaWduZWQgbG9uZyByb3csIGNvbnN0IEVpbmFfUmVjdGFuZ2xl
ICp1cGRhdGUpOworRWluYV9Cb29sIGV3a190aWxlX21hdHJpeF90aWxlX3VwZGF0ZV9mdWxsKEV3
a19UaWxlX01hdHJpeCAqdG0sIHVuc2lnbmVkIGxvbmcgY29sLCB1bnNpZ25lZCBsb25nIHJvdyk7
Cit2b2lkIGV3a190aWxlX21hdHJpeF90aWxlX3VwZGF0ZXNfY2xlYXIoRXdrX1RpbGVfTWF0cml4
ICp0bSwgRXdrX1RpbGUgKnQpOworCitFaW5hX0Jvb2wgZXdrX3RpbGVfbWF0cml4X3VwZGF0ZShF
d2tfVGlsZV9NYXRyaXggKnRtLCBjb25zdCBFaW5hX1JlY3RhbmdsZSAqdXBkYXRlLCBmbG9hdCB6
b29tKTsKK3ZvaWQgZXdrX3RpbGVfbWF0cml4X3VwZGF0ZXNfcHJvY2VzcyhFd2tfVGlsZV9NYXRy
aXggKnRtKTsKK3ZvaWQgZXdrX3RpbGVfbWF0cml4X3VwZGF0ZXNfY2xlYXIoRXdrX1RpbGVfTWF0
cml4ICp0bSk7Cit2b2lkIGV3a190aWxlX21hdHJpeF9mcmVlemUoRXdrX1RpbGVfTWF0cml4ICp0
bSk7Cit2b2lkIGV3a190aWxlX21hdHJpeF90aGF3KEV3a19UaWxlX01hdHJpeCAqdG0pOworCisv
LyByZW1vdmUgbWUhCit2b2lkIGV3a190aWxlX21hdHJpeF9kYmcoY29uc3QgRXdrX1RpbGVfTWF0
cml4ICp0bSk7Cit2b2lkIGV3a190aWxlX3VudXNlZF9jYWNoZV9kYmcoY29uc3QgRXdrX1RpbGVf
VW51c2VkX0NhY2hlICp0dWMpOwordm9pZCBld2tfdGlsZV9hY2NvdW50aW5nX2RiZygpOworCisj
ZW5kaWYgLy8gZXdrX3RpbGVkX21hdHJpeF9wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRfbW9kZWwuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a190aWxlZF9tb2RlbC5jcHAKaW5kZXggYzBlNzAyMC4uMjViMjY4NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9tb2RlbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a190aWxlZF9tb2RlbC5jcHAKQEAgLTIwLDEwICsyMCwxMCBAQAogCiAj
ZGVmaW5lIF9fU1REQ19GT1JNQVRfTUFDUk9TCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiZXdrX3RpbGVkX21vZGVsLmgiCiAKLSNpbmNsdWRlICJld2tfdGlsZWRfYmFja2luZ19zdG9y
ZS5oIgotI2luY2x1ZGUgImV3a190aWxlZF9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX3ByaXZh
dGUuaCIKKyNpbmNsdWRlICJld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcml2YXRlLmgiCisjaW5j
bHVkZSAiZXdrX3RpbGVkX21vZGVsX3ByaXZhdGUuaCIKICNpbmNsdWRlIDxFY29yZV9FdmFzLmg+
CiAjaW5jbHVkZSA8RWluYS5oPgogI2luY2x1ZGUgPGVpbmFfc2FmZXR5X2NoZWNrcy5oPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9tb2RlbC5oIGIvU291cmNl
L1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9tb2RlbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBkYWFmMjEzLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
dGlsZWRfbW9kZWwuaAorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLS8qCi0gICAgQ29w
eXJpZ2h0IChDKSAyMDA5LTIwMTAgU2Ftc3VuZyBFbGVjdHJvbmljcwotICAgIENvcHlyaWdodCAo
QykgMjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCi0KLSAgICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI2lmbmRlZiBld2tf
dGlsZWRfbW9kZWxfaAotI2RlZmluZSBld2tfdGlsZWRfbW9kZWxfaAotCi0jaW5jbHVkZSAiZXdr
X3RpbGVkX2JhY2tpbmdfc3RvcmUuaCIKLQotI2luY2x1ZGUgPEV2YXMuaD4KLQotLyogbW9kZWwg
Ki8KLUV3a19UaWxlICpld2tfdGlsZV9uZXcoRXZhcyAqZXZhcywgRXZhc19Db29yZCB3LCBFdmFz
X0Nvb3JkIGgsIGZsb2F0IHpvb20sIEV2YXNfQ29sb3JzcGFjZSBjc3BhY2UpOwotdm9pZCBld2tf
dGlsZV9mcmVlKEV3a19UaWxlICp0KTsKLXZvaWQgZXdrX3RpbGVfdW51c2VkX2NhY2hlX2NsZWFy
KEV3a19UaWxlX1VudXNlZF9DYWNoZSAqdHVjKTsKLXZvaWQgZXdrX3RpbGVfc2hvdyhFd2tfVGls
ZSAqdCk7Ci12b2lkIGV3a190aWxlX2hpZGUoRXdrX1RpbGUgKnQpOwotc2l6ZV90IGV3a190aWxl
X21lbW9yeV9zaXplX2dldChjb25zdCBFd2tfVGlsZSAqdCk7Ci1FaW5hX0Jvb2wgZXdrX3RpbGVf
dmlzaWJsZV9nZXQoRXdrX1RpbGUgKnQpOwotdm9pZCBld2tfdGlsZV91cGRhdGVfZnVsbChFd2tf
VGlsZSAqdCk7Ci12b2lkIGV3a190aWxlX3VwZGF0ZV9hcmVhKEV3a19UaWxlICp0LCBjb25zdCBF
aW5hX1JlY3RhbmdsZSAqcik7Ci12b2lkIGV3a190aWxlX3VwZGF0ZXNfcHJvY2VzcyhFd2tfVGls
ZSAqdCwgdm9pZCAoKmNiKSh2b2lkICpkYXRhLCBFd2tfVGlsZSAqdCwgY29uc3QgRWluYV9SZWN0
YW5nbGUgKnVwZGF0ZSksIGNvbnN0IHZvaWQgKmRhdGEpOwotdm9pZCBld2tfdGlsZV91cGRhdGVz
X2NsZWFyKEV3a19UaWxlICp0KTsKLQotLyogY2FjaGUgb2YgdW51c2VkIHRpbGVzICovCi1Fd2tf
VGlsZV9VbnVzZWRfQ2FjaGUgKmV3a190aWxlX3VudXNlZF9jYWNoZV9uZXcoc2l6ZV90IG1heCk7
Ci12b2lkIGV3a190aWxlX3VudXNlZF9jYWNoZV9sb2NrX2FyZWEoRXdrX1RpbGVfVW51c2VkX0Nh
Y2hlICp0dWMsIEV2YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5LCBFdmFzX0Nvb3JkIHcsIEV2YXNf
Q29vcmQgaCwgZmxvYXQgem9vbSk7Ci12b2lkIGV3a190aWxlX3VudXNlZF9jYWNoZV91bmxvY2tf
YXJlYShFd2tfVGlsZV9VbnVzZWRfQ2FjaGUgKnR1Yyk7Ci1Fd2tfVGlsZV9VbnVzZWRfQ2FjaGUg
KmV3a190aWxlX3VudXNlZF9jYWNoZV9yZWYoRXdrX1RpbGVfVW51c2VkX0NhY2hlICp0dWMpOwot
dm9pZCBld2tfdGlsZV91bnVzZWRfY2FjaGVfdW5yZWYoRXdrX1RpbGVfVW51c2VkX0NhY2hlICp0
dWMpOwotCi12b2lkIGV3a190aWxlX3VudXNlZF9jYWNoZV9kaXJ0eShFd2tfVGlsZV9VbnVzZWRf
Q2FjaGUgKnR1Yyk7Ci0KLXZvaWQgZXdrX3RpbGVfdW51c2VkX2NhY2hlX2ZyZWV6ZShFd2tfVGls
ZV9VbnVzZWRfQ2FjaGUgKnR1Yyk7Ci12b2lkIGV3a190aWxlX3VudXNlZF9jYWNoZV90aGF3KEV3
a19UaWxlX1VudXNlZF9DYWNoZSAqdHVjKTsKLQotRWluYV9Cb29sIGV3a190aWxlX3VudXNlZF9j
YWNoZV90aWxlX2dldChFd2tfVGlsZV9VbnVzZWRfQ2FjaGUgKnR1YywgRXdrX1RpbGUgKnQpOwot
RWluYV9Cb29sIGV3a190aWxlX3VudXNlZF9jYWNoZV90aWxlX3B1dChFd2tfVGlsZV9VbnVzZWRf
Q2FjaGUgKnR1YywgRXdrX1RpbGUgKnQsIHZvaWQgKCogdGlsZV9mcmVlX2NiKSh2b2lkICpkYXRh
LCBFd2tfVGlsZSAqdCksIGNvbnN0IHZvaWQgKmRhdGEpOwotCi0jZW5kaWYgLy8gZXdrX3RpbGVk
X21vZGVsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRfbW9k
ZWxfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9tb2RlbF9wcml2
YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzVmNmQ3MgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRfbW9kZWxfcHJpdmF0
ZS5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgU2Ft
c3VuZyBFbGVjdHJvbmljcworICAgIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFByb0ZVU0lPTiBl
bWJlZGRlZCBzeXN0ZW1zCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgorKi8KKworI2lmbmRlZiBld2tfdGlsZWRfbW9kZWxfcHJpdmF0ZV9oCisj
ZGVmaW5lIGV3a190aWxlZF9tb2RlbF9wcml2YXRlX2gKKworI2luY2x1ZGUgImV3a190aWxlZF9i
YWNraW5nX3N0b3JlX3ByaXZhdGUuaCIKKworI2luY2x1ZGUgPEV2YXMuaD4KKworLyogbW9kZWwg
Ki8KK0V3a19UaWxlICpld2tfdGlsZV9uZXcoRXZhcyAqZXZhcywgRXZhc19Db29yZCB3LCBFdmFz
X0Nvb3JkIGgsIGZsb2F0IHpvb20sIEV2YXNfQ29sb3JzcGFjZSBjc3BhY2UpOwordm9pZCBld2tf
dGlsZV9mcmVlKEV3a19UaWxlICp0KTsKK3ZvaWQgZXdrX3RpbGVfdW51c2VkX2NhY2hlX2NsZWFy
KEV3a19UaWxlX1VudXNlZF9DYWNoZSAqdHVjKTsKK3ZvaWQgZXdrX3RpbGVfc2hvdyhFd2tfVGls
ZSAqdCk7Cit2b2lkIGV3a190aWxlX2hpZGUoRXdrX1RpbGUgKnQpOworc2l6ZV90IGV3a190aWxl
X21lbW9yeV9zaXplX2dldChjb25zdCBFd2tfVGlsZSAqdCk7CitFaW5hX0Jvb2wgZXdrX3RpbGVf
dmlzaWJsZV9nZXQoRXdrX1RpbGUgKnQpOwordm9pZCBld2tfdGlsZV91cGRhdGVfZnVsbChFd2tf
VGlsZSAqdCk7Cit2b2lkIGV3a190aWxlX3VwZGF0ZV9hcmVhKEV3a19UaWxlICp0LCBjb25zdCBF
aW5hX1JlY3RhbmdsZSAqcik7Cit2b2lkIGV3a190aWxlX3VwZGF0ZXNfcHJvY2VzcyhFd2tfVGls
ZSAqdCwgdm9pZCAoKmNiKSh2b2lkICpkYXRhLCBFd2tfVGlsZSAqdCwgY29uc3QgRWluYV9SZWN0
YW5nbGUgKnVwZGF0ZSksIGNvbnN0IHZvaWQgKmRhdGEpOwordm9pZCBld2tfdGlsZV91cGRhdGVz
X2NsZWFyKEV3a19UaWxlICp0KTsKKworLyogY2FjaGUgb2YgdW51c2VkIHRpbGVzICovCitFd2tf
VGlsZV9VbnVzZWRfQ2FjaGUgKmV3a190aWxlX3VudXNlZF9jYWNoZV9uZXcoc2l6ZV90IG1heCk7
Cit2b2lkIGV3a190aWxlX3VudXNlZF9jYWNoZV9sb2NrX2FyZWEoRXdrX1RpbGVfVW51c2VkX0Nh
Y2hlICp0dWMsIEV2YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5LCBFdmFzX0Nvb3JkIHcsIEV2YXNf
Q29vcmQgaCwgZmxvYXQgem9vbSk7Cit2b2lkIGV3a190aWxlX3VudXNlZF9jYWNoZV91bmxvY2tf
YXJlYShFd2tfVGlsZV9VbnVzZWRfQ2FjaGUgKnR1Yyk7CitFd2tfVGlsZV9VbnVzZWRfQ2FjaGUg
KmV3a190aWxlX3VudXNlZF9jYWNoZV9yZWYoRXdrX1RpbGVfVW51c2VkX0NhY2hlICp0dWMpOwor
dm9pZCBld2tfdGlsZV91bnVzZWRfY2FjaGVfdW5yZWYoRXdrX1RpbGVfVW51c2VkX0NhY2hlICp0
dWMpOworCit2b2lkIGV3a190aWxlX3VudXNlZF9jYWNoZV9kaXJ0eShFd2tfVGlsZV9VbnVzZWRf
Q2FjaGUgKnR1Yyk7CisKK3ZvaWQgZXdrX3RpbGVfdW51c2VkX2NhY2hlX2ZyZWV6ZShFd2tfVGls
ZV9VbnVzZWRfQ2FjaGUgKnR1Yyk7Cit2b2lkIGV3a190aWxlX3VudXNlZF9jYWNoZV90aGF3KEV3
a19UaWxlX1VudXNlZF9DYWNoZSAqdHVjKTsKKworRWluYV9Cb29sIGV3a190aWxlX3VudXNlZF9j
YWNoZV90aWxlX2dldChFd2tfVGlsZV9VbnVzZWRfQ2FjaGUgKnR1YywgRXdrX1RpbGUgKnQpOwor
RWluYV9Cb29sIGV3a190aWxlX3VudXNlZF9jYWNoZV90aWxlX3B1dChFd2tfVGlsZV9VbnVzZWRf
Q2FjaGUgKnR1YywgRXdrX1RpbGUgKnQsIHZvaWQgKCogdGlsZV9mcmVlX2NiKSh2b2lkICpkYXRh
LCBFd2tfVGlsZSAqdCksIGNvbnN0IHZvaWQgKmRhdGEpOworCisjZW5kaWYgLy8gZXdrX3RpbGVk
X21vZGVsX3ByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190
aWxlZF9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX3ByaXZhdGUu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGExNWFhMi4uMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX3ByaXZhdGUuaAorKysgL2Rldi9udWxsCkBA
IC0xLDMyICswLDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgU2Ftc3VuZyBF
bGVjdHJvbmljcwotICAgIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRl
ZCBzeXN0ZW1zCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAg
ICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0g
ICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgotKi8KLQotI2lmbmRlZiBld2tfdGlsZWRfcHJpdmF0ZV9oCi0jZGVmaW5lIGV3a190
aWxlZF9wcml2YXRlX2gKLQotLyogbG9nZ2luZyAqLwotZXh0ZXJuIGludCBfZXdrX3RpbGVkX2xv
Z19kb207Ci0KLSNkZWZpbmUgQ1JJVElDQUwoLi4uKSBFSU5BX0xPR19ET01fQ1JJVChfZXdrX3Rp
bGVkX2xvZ19kb20sIF9fVkFfQVJHU19fKQotI2RlZmluZSBFUlIoLi4uKSBFSU5BX0xPR19ET01f
RVJSKF9ld2tfdGlsZWRfbG9nX2RvbSwgX19WQV9BUkdTX18pCi0jZGVmaW5lIFdSTiguLi4pIEVJ
TkFfTE9HX0RPTV9XQVJOKF9ld2tfdGlsZWRfbG9nX2RvbSwgX19WQV9BUkdTX18pCi0jZGVmaW5l
IElORiguLi4pIEVJTkFfTE9HX0RPTV9JTkZPKF9ld2tfdGlsZWRfbG9nX2RvbSwgX19WQV9BUkdT
X18pCi0jZGVmaW5lIERCRyguLi4pIEVJTkFfTE9HX0RPTV9EQkcoX2V3a190aWxlZF9sb2dfZG9t
LCBfX1ZBX0FSR1NfXykKLSNlbmRpZiAvLyBld2tfdGlsZWRfcHJpdmF0ZV9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3V0aWwuY3BwIGIvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a191dGlsLmNwcAppbmRleCA3NDliMDM4Li5hMTUwN2NkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX3V0aWwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfdXRpbC5jcHAKQEAgLTE5LDEwICsxOSw5IEBACiAqLwogCiAjaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiZXdrX3V0aWwuaCIKIAotI2luY2x1ZGUgImV3a19sb2dnaW5nLmgiCiAj
aW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfdXRpbF9wcml2YXRlLmgiCiAj
aW5jbHVkZSA8ZWluYV9zYWZldHlfY2hlY2tzLmg+CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9lZmwvZXdrL2V3a191dGlsLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3V0
aWwuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2IzMmQ5Yy4uMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3V0aWwuaAorKysgL2Rldi9udWxsCkBAIC0xLDM0
ICswLDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgUHJvRlVTSU9OIGVtYmVk
ZGVkIHN5c3RlbXMKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBTYW1zdW5nIEVsZWN0cm9u
aWNzCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgotKi8KLQotLyoqCi0gKiBAZmlsZSAgICBld2tfdXRpbC5oCi0gKiBAYnJpZWYgICBIZWxwZnVs
bCBtZXRob2RzIGZvciBXZWJLaXQtRUZMLgotICovCi0KLSNpZm5kZWYgZXdrX3V0aWxfaAotI2Rl
ZmluZSBld2tfdXRpbF9oCi0KLSNpbmNsdWRlIDxFdmFzLmg+Ci0jaW5jbHVkZSA8Y2Fpcm8uaD4K
LQotRXZhc19PYmplY3QgKmV3a191dGlsX2ltYWdlX2Zyb21fY2Fpcm9fc3VyZmFjZV9hZGQoRXZh
cyAqY2FudmFzLCBjYWlyb19zdXJmYWNlX3QgKnN1cmZhY2UpOwotCi0jZW5kaWYgLy8gZXdrX3V0
aWxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a191dGlsX3ByaXZhdGUu
aCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdXRpbF9wcml2YXRlLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmVlMmQwZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfdXRpbF9wcml2YXRlLmgKQEAgLTAsMCArMSwyOSBAQAorLyoK
KyAgICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcwor
ICAgIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAg
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZu
ZGVmIGV3a191dGlsX3ByaXZhdGVfaAorI2RlZmluZSBld2tfdXRpbF9wcml2YXRlX2gKKworI2lu
Y2x1ZGUgPEV2YXMuaD4KKyNpbmNsdWRlIDxjYWlyby5oPgorCitFdmFzX09iamVjdCAqZXdrX3V0
aWxfaW1hZ2VfZnJvbV9jYWlyb19zdXJmYWNlX2FkZChFdmFzICpjYW52YXMsIGNhaXJvX3N1cmZh
Y2VfdCAqc3VyZmFjZSk7CisKKyNlbmRpZiAvLyBld2tfdXRpbF9wcml2YXRlX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX3ZpZXcuY3BwCmluZGV4IDhlYzg2N2QuLjM5MjllODYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a192aWV3LmNwcApAQCAtNTUsOCArNTUsMTMgQEAKICNpbmNsdWRlICJSZXNvdXJjZUhh
bmRsZS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiY19pbnN0YW5jZS5oIgot
I2luY2x1ZGUgImV3a19sb2dnaW5nLmgiCisjaW5jbHVkZSAiZXdrX2ZyYW1lLmgiCisjaW5jbHVk
ZSAiZXdrX2ZyYW1lX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfaGlzdG9yeV9wcml2YXRlLmgi
CiAjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfc2V0dGluZ3NfcHJpdmF0
ZS5oIgorI2luY2x1ZGUgImV3a192aWV3X3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfd2luZG93
X2ZlYXR1cmVzX3ByaXZhdGUuaCIKICNpbmNsdWRlIDxFY29yZS5oPgogI2luY2x1ZGUgPEVpbmEu
aD4KICNpbmNsdWRlIDxFdmFzLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX3ZpZXdfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3X3ByaXZh
dGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MGY2MjIwCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3X3ByaXZhdGUuaApAQCAt
MCwwICsxLDE1NSBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBQcm9GVVNJT04g
ZW1iZWRkZWQgc3lzdGVtcworICAgIENvcHlyaWdodCAoQykgMjAwOS0yMDEyIFNhbXN1bmcgRWxl
Y3Ryb25pY3MKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAg
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAg
ICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisqLworCisjaWZuZGVmIGV3a192aWV3X3ByaXZhdGVfaAorI2RlZmluZSBld2tfdmll
d19wcml2YXRlX2gKKworI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2lu
Y2x1ZGUgIldpZGdldC5oIgorI2luY2x1ZGUgImV3a192aWV3LmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKK2NsYXNzIENvbG9yOworY2xhc3Mg
Q29sb3JDaG9vc2VyQ2xpZW50OworI2VuZGlmCisKK2NsYXNzIFBvcHVwTWVudUNsaWVudDsKK30K
KworLy8gRGVmaW5lcyB0aGUgbmFtZXMgZm9yIGluaXRpYWxpemluZyBld2tfdmlld19zbWFydF9j
bGFzcworY29uc3QgY2hhciBld2tWaWV3VGlsZWROYW1lW10gPSAiRXdrX1ZpZXdfVGlsZWQiOwor
Y29uc3QgY2hhciBld2tWaWV3U2luZ2xlTmFtZVtdID0gIkV3a19WaWV3X1NpbmdsZSI7CisKKy8v
IERlZmluZSB0byBwcmV2ZW50IGFuIGFwcGxpY2F0aW9uIHVzaW5nIGRpZmZlcmVudCB2aWV3IHR5
cGUgZnJvbSBjYWxsaW5nIHRoZSBmdW5jdGlvbi4KKyNkZWZpbmUgRVdLX1ZJRVdfVFlQRV9DSEVD
S19PUl9SRVRVUk4oZXdrVmlldywgdmlld05hbWUsIC4uLikgXAorICAgIGlmICghZXZhc19vYmpl
Y3Rfc21hcnRfdHlwZV9jaGVjayhld2tWaWV3LCB2aWV3TmFtZSkpIHsgXAorICAgICAgICBJTkYo
ImV3a1ZpZXcgaXNuJ3QgYW4gaW5zdGFuY2Ugb2YgJXMiLCB2aWV3TmFtZSk7IFwKKyAgICAgICAg
cmV0dXJuIF9fVkFfQVJHU19fOyBcCisgICAgfQorCit2b2lkIGV3a192aWV3X3JlYWR5KEV2YXNf
T2JqZWN0KiBld2tWaWV3KTsKK3ZvaWQgZXdrX3ZpZXdfaW5wdXRfbWV0aG9kX3N0YXRlX3NldChF
dmFzX09iamVjdCogZXdrVmlldywgYm9vbCBhY3RpdmUpOwordm9pZCBld2tfdmlld190aXRsZV9z
ZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIqIHRpdGxlKTsKK3ZvaWQgZXdrX3Zp
ZXdfdXJpX2NoYW5nZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcpOwordm9pZCBld2tfdmlld19sb2Fk
X2RvY3VtZW50X2ZpbmlzaGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX09iamVjdCogZnJh
bWUpOwordm9pZCBld2tfdmlld19sb2FkX3N0YXJ0ZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2
YXNfT2JqZWN0KiBld2tGcmFtZSk7Cit2b2lkIGV3a192aWV3X2xvYWRfcHJvdmlzaW9uYWwoRXZh
c19PYmplY3QqIGV3a1ZpZXcpOwordm9pZCBld2tfdmlld19mcmFtZV9tYWluX2xvYWRfc3RhcnRl
ZChFdmFzX09iamVjdCogZXdrVmlldyk7Cit2b2lkIGV3a192aWV3X2ZyYW1lX21haW5fY2xlYXJl
ZChFdmFzX09iamVjdCogZXdrVmlldyk7Cit2b2lkIGV3a192aWV3X2ZyYW1lX21haW5faWNvbl9y
ZWNlaXZlZChFdmFzX09iamVjdCogZXdrVmlldyk7Cit2b2lkIGV3a192aWV3X2xvYWRfZmluaXNo
ZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IEV3a19GcmFtZV9Mb2FkX0Vycm9yKiBlcnJv
cik7Cit2b2lkIGV3a192aWV3X2xvYWRfZXJyb3IoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0
IEV3a19GcmFtZV9Mb2FkX0Vycm9yKiBlcnJvcik7Cit2b2lkIGV3a192aWV3X2xvYWRfcHJvZ3Jl
c3NfY2hhbmdlZChFdmFzX09iamVjdCogZXdrVmlldyk7Cit2b2lkIGV3a192aWV3X2xvYWRfc2hv
dyhFdmFzX09iamVjdCogZXdrVmlldyk7Cit2b2lkIGV3a192aWV3X29ubG9hZF9ldmVudChFdmFz
X09iamVjdCogZXdrVmlldywgRXZhc19PYmplY3QqIGZyYW1lKTsKK3ZvaWQgZXdrX3ZpZXdfcmVz
dG9yZV9zdGF0ZShFdmFzX09iamVjdCogZXdrVmlldywgRXZhc19PYmplY3QqIGZyYW1lKTsKK0V2
YXNfT2JqZWN0KiBld2tfdmlld193aW5kb3dfY3JlYXRlKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBi
b29sIGphdmFzY3JpcHQsIGNvbnN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzKiBjb3JlRmVhdHVy
ZXMpOwordm9pZCBld2tfdmlld193aW5kb3dfY2xvc2UoRXZhc19PYmplY3QqIGV3a1ZpZXcpOwor
Cit2b2lkIGV3a192aWV3X21vdXNlX2xpbmtfaG92ZXJfaW4oRXZhc19PYmplY3QqIGV3a1ZpZXcs
IHZvaWQqIGRhdGEpOwordm9pZCBld2tfdmlld19tb3VzZV9saW5rX2hvdmVyX291dChFdmFzX09i
amVjdCogZXdrVmlldyk7CisKK3ZvaWQgZXdrX3ZpZXdfdG9vbGJhcnNfdmlzaWJsZV9zZXQoRXZh
c19PYmplY3QqIGV3a1ZpZXcsIGJvb2wgdmlzaWJsZSk7Cit2b2lkIGV3a192aWV3X3Rvb2xiYXJz
X3Zpc2libGVfZ2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBib29sKiB2aXNpYmxlKTsKKwordm9p
ZCBld2tfdmlld19zdGF0dXNiYXJfdmlzaWJsZV9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGJv
b2wgdmlzaWJsZSk7Cit2b2lkIGV3a192aWV3X3N0YXR1c2Jhcl92aXNpYmxlX2dldChFdmFzX09i
amVjdCogZXdrVmlldywgYm9vbCogdmlzaWJsZSk7Cit2b2lkIGV3a192aWV3X3N0YXR1c2Jhcl90
ZXh0X3NldChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgY2hhciogdGV4dCk7CisKK3ZvaWQg
ZXdrX3ZpZXdfc2Nyb2xsYmFyc192aXNpYmxlX3NldChFdmFzX09iamVjdCogZXdrVmlldywgYm9v
bCB2aXNpYmxlKTsKK3ZvaWQgZXdrX3ZpZXdfc2Nyb2xsYmFyc192aXNpYmxlX2dldChFdmFzX09i
amVjdCogZXdrVmlldywgYm9vbCogdmlzaWJsZSk7CisKK3ZvaWQgZXdrX3ZpZXdfbWVudWJhcl92
aXNpYmxlX3NldChFdmFzX09iamVjdCogZXdrVmlldywgYm9vbCB2aXNpYmxlKTsKK3ZvaWQgZXdr
X3ZpZXdfbWVudWJhcl92aXNpYmxlX2dldChFdmFzX09iamVjdCogZXdrVmlldywgYm9vbCogdmlz
aWJsZSk7CisKK3ZvaWQgZXdrX3ZpZXdfdG9vbHRpcF90ZXh0X3NldChFdmFzX09iamVjdCogZXdr
VmlldywgY29uc3QgY2hhciogdGV4dCk7CisKK3ZvaWQgZXdrX3ZpZXdfYWRkX2NvbnNvbGVfbWVz
c2FnZShFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgY2hhciogbWVzc2FnZSwgdW5zaWduZWQg
aW50IGxpbmVOdW1iZXIsIGNvbnN0IGNoYXIqIHNvdXJjZUlEKTsKKwordm9pZCBld2tfdmlld19y
dW5famF2YXNjcmlwdF9hbGVydChFdmFzX09iamVjdCogZXdrVmlldywgRXZhc19PYmplY3QqIGZy
YW1lLCBjb25zdCBjaGFyKiBtZXNzYWdlKTsKK2Jvb2wgZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRf
Y29uZmlybShFdmFzX09iamVjdCogZXdrVmlldywgRXZhc19PYmplY3QqIGZyYW1lLCBjb25zdCBj
aGFyKiBtZXNzYWdlKTsKK2Jvb2wgZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfcHJvbXB0KEV2YXNf
T2JqZWN0KiBld2tWaWV3LCBFdmFzX09iamVjdCogZnJhbWUsIGNvbnN0IGNoYXIqIG1lc3NhZ2Us
IGNvbnN0IGNoYXIqIGRlZmF1bHRWYWx1ZSwgY2hhcioqIHZhbHVlKTsKK2Jvb2wgZXdrX3ZpZXdf
c2hvdWxkX2ludGVycnVwdF9qYXZhc2NyaXB0KEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKK3VpbnQ2
NF90IGV3a192aWV3X2V4Y2VlZGVkX2RhdGFiYXNlX3F1b3RhKEV2YXNfT2JqZWN0KiBld2tWaWV3
LCBFdmFzX09iamVjdCogZnJhbWUsIGNvbnN0IGNoYXIqIGRhdGFiYXNlTmFtZSwgdWludDY0X3Qg
Y3VycmVudFNpemUsIHVpbnQ2NF90IGV4cGVjdGVkU2l6ZSk7CisKK2Jvb2wgZXdrX3ZpZXdfcnVu
X29wZW5fcGFuZWwoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2YXNfT2JqZWN0KiBmcmFtZSwgYm9v
bCBhbGxvd3NNdWx0aXBsZUZpbGVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWNjZXB0TUlNRVR5
cGVzLCBFaW5hX0xpc3QqKiBzZWxlY3RlZEZpbGVuYW1lcyk7CisKK3ZvaWQgZXdrX3ZpZXdfcmVw
YWludChFdmFzX09iamVjdCogZXdrVmlldywgRXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkIHksIEV2
YXNfQ29vcmQgd2lkdGgsIEV2YXNfQ29vcmQgaGVpZ2h0KTsKK3ZvaWQgZXdrX3ZpZXdfc2Nyb2xs
KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX0Nvb3JkIGRlbHRhWCwgRXZhc19Db29yZCBkZWx0
YVksIEV2YXNfQ29vcmQgc2Nyb2xsWCwgRXZhc19Db29yZCBzY3JvbGxZLCBFdmFzX0Nvb3JkIHNj
cm9sbFdpZHRoLCBFdmFzX0Nvb3JkIHNjcm9sbEhlaWdodCwgRXZhc19Db29yZCBjZW50ZXJYLCBF
dmFzX0Nvb3JkIGNlbnRlclksIEV2YXNfQ29vcmQgY2VudGVyVywgRXZhc19Db29yZCBjZW50ZXJI
ZWlnaHQpOworV2ViQ29yZTo6UGFnZSogZXdrX3ZpZXdfY29yZV9wYWdlX2dldChjb25zdCBFdmFz
X09iamVjdCogZXdrVmlldyk7CisKK1dURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFtZT4gZXdr
X3ZpZXdfZnJhbWVfY3JlYXRlKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX09iamVjdCogZnJh
bWUsIGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1l
bnQqIG93bmVyRWxlbWVudCwgY29uc3QgV2ViQ29yZTo6S1VSTCYgdXJsLCBjb25zdCBXVEY6OlN0
cmluZyYgcmVmZXJyZXIpOworCitXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBld2tf
dmlld19wbHVnaW5fY3JlYXRlKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX09iamVjdCogZnJh
bWUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHBsdWdpblNpemUsIFdlYkNvcmU6OkhUTUxQbHVn
SW5FbGVtZW50KiBlbGVtZW50LCBjb25zdCBXZWJDb3JlOjpLVVJMJiB1cmwsIGNvbnN0IFdURjo6
VmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpT
dHJpbmc+JiBwYXJhbVZhbHVlcywgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBib29sIGxv
YWRNYW51YWxseSk7CisKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKK3ZvaWQgZXdrX3Zp
ZXdfY29sb3JfY2hvb3Nlcl9uZXcoRXZhc19PYmplY3QqIGV3a1ZpZXcsIFdlYkNvcmU6OkNvbG9y
Q2hvb3NlckNsaWVudCogY2xpZW50LCBjb25zdCBXZWJDb3JlOjpDb2xvciYgaW5pdGlhbENvbG9y
KTsKK3ZvaWQgZXdrX3ZpZXdfY29sb3JfY2hvb3Nlcl9jaGFuZ2VkKEV2YXNfT2JqZWN0KiBld2tW
aWV3LCBjb25zdCBXZWJDb3JlOjpDb2xvciYgbmV3Q29sb3IpOworI2VuZGlmCisKK3ZvaWQgZXdr
X3ZpZXdfcG9wdXBfbmV3KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBXZWJDb3JlOjpQb3B1cE1lbnVD
bGllbnQqIGNsaWVudCwgaW50IHNlbGVjdGVkLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0
KTsKK3ZvaWQgZXdrX3ZpZXdfdmlld3BvcnRfYXR0cmlidXRlc19zZXQoRXZhc19PYmplY3QqIGV3
a1ZpZXcsIGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzJiBhcmd1bWVudHMpOworCit2
b2lkIGV3a192aWV3X2Rvd25sb2FkX3JlcXVlc3QoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19E
b3dubG9hZCogZG93bmxvYWQpOworCit2b2lkIGV3a192aWV3X2VkaXRvcl9jbGllbnRfY29udGVu
dHNfY2hhbmdlZChFdmFzX09iamVjdCogZXdrVmlldyk7Cit2b2lkIGV3a192aWV3X2VkaXRvcl9j
bGllbnRfc2VsZWN0aW9uX2NoYW5nZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcpOworCitib29sIGV3
a192aWV3X2ZvY3VzX2Nhbl9jeWNsZShFdmFzX09iamVjdCogZXdrVmlldywgRXdrX0ZvY3VzX0Rp
cmVjdGlvbiBkaXJlY3Rpb24pOwordm9pZCBld2tfdmlld19mcmFtZV92aWV3X2NyZWF0aW9uX25v
dGlmeShFdmFzX09iamVjdCogZXdrVmlldyk7CisKKyNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lO
X0FQSSkKK3ZvaWQgZXdrX3ZpZXdfanNfd2luZG93X29iamVjdF9jbGVhcihFdmFzX09iamVjdCog
ZXdrVmlldywgRXZhc19PYmplY3QqIGZyYW1lKTsKKyNlbmRpZgorCisjaWYgRU5BQkxFKFRPVUNI
X0VWRU5UUykKK3ZvaWQgZXdrX3ZpZXdfbmVlZF90b3VjaF9ldmVudHNfc2V0KEV2YXNfT2JqZWN0
KiwgYm9vbCBuZWVkZWQpOworYm9vbCBld2tfdmlld19uZWVkX3RvdWNoX2V2ZW50c19nZXQoY29u
c3QgRXZhc19PYmplY3QqKTsKKyNlbmRpZgorCitjb25zdCBFaW5hX1JlY3RhbmdsZSogZXdrX3Zp
ZXdfcmVwYWludHNfcG9wKEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdiwgc2l6ZV90KiBjb3Vu
dCk7Citjb25zdCBFd2tfU2Nyb2xsX1JlcXVlc3QqIGV3a192aWV3X3Njcm9sbF9yZXF1ZXN0c19n
ZXQoY29uc3QgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2LCBzaXplX3QqIGNvdW50KTsKKwor
dm9pZCBld2tfdmlld19yZXBhaW50X2FkZChFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYsIEV2
YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5LCBFdmFzX0Nvb3JkIHdpZHRoLCBFdmFzX0Nvb3JkIGhl
aWdodCk7CisKK3ZvaWQgZXdrX3ZpZXdfbGF5b3V0X2lmX25lZWRlZF9yZWN1cnNpdmUoRXdrX1Zp
ZXdfUHJpdmF0ZV9EYXRhKiBwcml2KTsKKworYm9vbCBld2tfdmlld19uYXZpZ2F0aW9uX3BvbGlj
eV9kZWNpc2lvbihFdmFzX09iamVjdCogZXdrVmlldywgRXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVl
c3QqIHJlcXVlc3QpOworCit2b2lkIGV3a192aWV3X2NvbnRlbnRzX3NpemVfY2hhbmdlZChFdmFz
X09iamVjdCogZXdrVmlldywgRXZhc19Db29yZCB3aWR0aCwgRXZhc19Db29yZCBoZWlnaHQpOwor
CitXZWJDb3JlOjpGbG9hdFJlY3QgZXdrX3ZpZXdfcGFnZV9yZWN0X2dldChjb25zdCBFdmFzX09i
amVjdCogZXdrVmlldyk7CisKK3ZvaWQgZXdrX3ZpZXdfbWl4ZWRfY29udGVudF9kaXNwbGF5ZWRf
c2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBib29sIGhhc0Rpc3BsYXllZCk7Cit2b2lkIGV3a192
aWV3X21peGVkX2NvbnRlbnRfcnVuX3NldChFdmFzX09iamVjdCogZXdrVmlldywgYm9vbCBoYXNS
dW4pOworCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorYm9vbCBld2tfdmlld19h
Y2NlbGVyYXRlZF9jb21wb3NpdGluZ19vYmplY3RfY3JlYXRlKEV2YXNfT2JqZWN0KiBld2tWaWV3
LCBFdmFzX05hdGl2ZV9TdXJmYWNlKiBuYXRpdmVTdXJmYWNlLCBjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiByZWN0KTsKK1dlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEKiBld2tfdmlld19hY2NlbGVy
YXRlZF9jb21wb3NpdGluZ19jb250ZXh0X2dldChFdmFzX09iamVjdCogZXdrVmlldyk7CisjZW5k
aWYKKworbmFtZXNwYWNlIEVXS1ByaXZhdGUgeworV2ViQ29yZTo6UGFnZSAqY29yZVBhZ2UoY29u
c3QgRXZhc19PYmplY3QgKmV3a1ZpZXcpOworUGxhdGZvcm1QYWdlQ2xpZW50IGNvcmVQYWdlQ2xp
ZW50KEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKK30gLy8gbmFtZXNwYWNlIEVXS1ByaXZhdGUKKwor
I2VuZGlmIC8vIGV3a192aWV3X3ByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a192aWV3X3NpbmdsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3Zp
ZXdfc2luZ2xlLmNwcAppbmRleCAxZGVjZTA2Li45YzE4OTM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfc2luZ2xlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX3ZpZXdfc2luZ2xlLmNwcApAQCAtMjIsOCArMjIsOCBAQAogI2luY2x1ZGUgImV3
a192aWV3LmgiCiAKICNpbmNsdWRlICJld2tfZnJhbWUuaCIKLSNpbmNsdWRlICJld2tfbG9nZ2lu
Zy5oIgogI2luY2x1ZGUgImV3a19wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0
ZS5oIgogCiAjaW5jbHVkZSA8RWNvcmVfRXZhcy5oPgogI2luY2x1ZGUgPEV2YXMuaD4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld190aWxlZC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfdGlsZWQuY3BwCmluZGV4IDM0MmNjNGUuLjU1YTU4ZTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld190aWxlZC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3X3RpbGVkLmNwcApAQCAtMjEsMTMgKzIx
LDEyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiZXdrX3ZpZXcuaCIKIAotI2lu
Y2x1ZGUgImV3a19sb2dnaW5nLmgiCiAjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKLQorI2luY2x1
ZGUgImV3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfdmll
d19wcml2YXRlLmgiCiAjaW5jbHVkZSA8RXZhcy5oPgogI2luY2x1ZGUgPFJlZlB0ckNhaXJvLmg+
CiAjaW5jbHVkZSA8ZWluYV9zYWZldHlfY2hlY2tzLmg+Ci0jaW5jbHVkZSA8ZXdrX3RpbGVkX2Jh
Y2tpbmdfc3RvcmUuaD4KIAogc3RhdGljIEV3a19WaWV3X1NtYXJ0X0NsYXNzIF9wYXJlbnRfc2Mg
PSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX05VTEw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfd2luZG93X2ZlYXR1cmVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfd2luZG93X2ZlYXR1cmVzLmNwcAppbmRleCA2MTgxYmRhLi4zMDAwMjhiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3dpbmRvd19mZWF0dXJlcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a193aW5kb3dfZmVhdHVyZXMuY3BwCkBAIC0yMiw3
ICsyMiw2IEBACiAjaW5jbHVkZSAiZXdrX3dpbmRvd19mZWF0dXJlcy5oIgogCiAjaW5jbHVkZSAi
V2luZG93RmVhdHVyZXMuaCIKLSNpbmNsdWRlICJld2tfbG9nZ2luZy5oIgogI2luY2x1ZGUgImV3
a19wcml2YXRlLmgiCiAjaW5jbHVkZSA8RWluYS5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2VmbC9ld2svZXdrX3dpbmRvd19mZWF0dXJlc19wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX3dpbmRvd19mZWF0dXJlc19wcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uMDY1ODU5MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvZWZsL2V3ay9ld2tfd2luZG93X2ZlYXR1cmVzX3ByaXZhdGUuaApAQCAtMCwwICsxLDI2IEBA
CisvKgorICAgIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0
ZW1zCisgICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworCisg
ICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAg
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisK
KyNpZm5kZWYgZXdrX3dpbmRvd19mZWF0dXJlc19wcml2YXRlX2gKKyNkZWZpbmUgZXdrX3dpbmRv
d19mZWF0dXJlc19wcml2YXRlX2gKKworRXdrX1dpbmRvd19GZWF0dXJlcyogZXdrX3dpbmRvd19m
ZWF0dXJlc19uZXdfZnJvbV9jb3JlKGNvbnN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzKiBjb3Jl
KTsKKworI2VuZGlmIC8vIGV3a193aW5kb3dfZmVhdHVyZXNfcHJpdmF0ZV9oCmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTFiODNjNC4uODkwYWIy
YiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEyIEBACisyMDEyLTA1LTExICBUb21hc3ogTW9yYXdza2kgIDx0Lm1vcmF3c2tpQHNh
bXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdW0RSVF0gU3BsaXQgZXdrX3ByaXZhdGUuaCB0byBt
dWx0aXBsZSBwcml2YXRlIGZpbGVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODQ1NzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2VmbC9EdW1wUmVuZGVyVHJlZUNocm9tZS5j
cHA6CisKIDIwMTItMDUtMTEgIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGduc0Bnbm9tZS5vcmc+
CiAKICAgICAgICAgUkVHUkVTU0lPTihyMTE2MjA1KTogW0dUS106IGJ1aWxkIG5vIGxvbmdlciBz
dXBwb3J0cyB0aGluIGFyY2hpdmVzCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9l
ZmwvRHVtcFJlbmRlclRyZWVDaHJvbWUuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0R1
bXBSZW5kZXJUcmVlQ2hyb21lLmNwcAppbmRleCA5Zjc0NDE2Li5hYWE1NGViIDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvRHVtcFJlbmRlclRyZWVDaHJvbWUuY3BwCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9EdW1wUmVuZGVyVHJlZUNocm9tZS5jcHAKQEAgLTMx
LDYgKzMxLDcgQEAKICNpbmNsdWRlICJEdW1wUmVuZGVyVHJlZVZpZXcuaCIKICNpbmNsdWRlICJF
dmVudFNlbmRlci5oIgogI2luY2x1ZGUgIkdDQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIktVUkwu
aCIKICNpbmNsdWRlICJMYXlvdXRUZXN0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIk5vdEltcGxl
bWVudGVkLmgiCiAjaW5jbHVkZSAiVGV4dElucHV0Q29udHJvbGxlci5oIgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141656</attachid>
            <date>2012-05-14 00:03:14 -0700</date>
            <delta_ts>2012-05-15 00:30:17 -0700</delta_ts>
            <desc>Fixed comments</desc>
            <filename>private3.patch</filename>
            <type>text/plain</type>
            <size>89480</size>
            <attacher name="Tomasz Morawski">t.morawski</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IGZjNDNiNDYuLmRkMjI4Y2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybUVmbC5jbWFrZQpAQCAtMjU2LDcgKzI1Niw2IEBAIFNFVChFV2ViS2l0X0hFQURFUlMKICAg
ICAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vZWZsL2V3ay9ld2tfZnJhbWUuaAogICAgICR7
Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9lZmwvZXdrL2V3a19oaXN0b3J5LmgKICAgICAke0NN
QUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vZWZsL2V3ay9ld2tfanMuaAotICAgICR7Q01BS0VfQ1VS
UkVOVF9TT1VSQ0VfRElSfS9lZmwvZXdrL2V3a19sb2dnaW5nLmgKICAgICAke0NNQUtFX0NVUlJF
TlRfU09VUkNFX0RJUn0vZWZsL2V3ay9ld2tfbWFpbi5oCiAgICAgJHtDTUFLRV9DVVJSRU5UX1NP
VVJDRV9ESVJ9L2VmbC9ld2svZXdrX25ldHdvcmsuaAogICAgICR7Q01BS0VfQ1VSUkVOVF9TT1VS
Q0VfRElSfS9lZmwvZXdrL2V3a19zZWN1cml0eV9vcmlnaW4uaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9lZmwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4
IDg5ODkzOWMuLjRlNjg5OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NCBAQAorMjAx
Mi0wNS0xMSAgVG9tYXN6IE1vcmF3c2tpICA8dC5tb3Jhd3NraUBzYW1zdW5nLmNvbT4KKworICAg
ICAgICBbRUZMXVtEUlRdIFNwbGl0IGV3a19wcml2YXRlLmggZmlsZSB0byBtdWx0aXBsZSBwcml2
YXRlIGZpbGVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODQ1NzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBTcGxpdCBld2tfcHJpdmF0ZSBmaWxlIHRvIG11bHRpcGxlIHByaXZhdGUgZmlsZXMuCisgICAg
ICAgIERlbGV0ZSBld2tfbG9nZ2luZy5oIGFuZCBld2tfdGlsZWRfcHJpdmF0ZS5oIGZpbGVzIGFu
ZCByZW1vdmVkIHRpbGVkX2JhY2tpbmdfc3RvcmUgbG9nZ2luZyBkb21haW4uCisKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHA6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudEVmbC5jcHA6CisgICAgICAgICogZXdrL2V3a19hdXRoLmNwcDoKKyAgICAg
ICAgKiBld2svZXdrX2F1dGhfc291cC5jcHA6CisgICAgICAgIChkZXRhY2gpOgorICAgICAgICAq
IGV3ay9ld2tfYXV0aF9zb3VwX3ByaXZhdGUuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQv
ZWZsL2V3ay9ld2tfYXV0aF9zb3VwLmguCisgICAgICAgICogZXdrL2V3a19jb250ZXh0bWVudV9w
cml2YXRlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfcHJpdmF0ZS5o
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogZXdrL2V3a19mcmFtZS5jcHA6CisgICAg
ICAgICogZXdrL2V3a19mcmFtZV9wcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChFV0tQcml2YXRlKToKKyAgICAgICAgKiBld2svZXdrX2hpc3RvcnkuY3BwOgor
ICAgICAgICAqIGV3ay9ld2tfaGlzdG9yeV9wcml2YXRlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfcHJpdmF0ZS5oLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChFV0tQcml2YXRlKToKKyAgICAgICAgKiBld2svZXdrX2pzX3ByaXZhdGUuaDogQ29waWVkIGZy
b20gU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcml2YXRlLmguCisgICAgICAgIChfRXdrX0pT
X09iamVjdCk6CisgICAgICAgICogZXdrL2V3a19tYWluLmNwcDoKKyAgICAgICAgKiBld2svZXdr
X25ldHdvcmsuY3BwOgorICAgICAgICAqIGV3ay9ld2tfcHJpdmF0ZS5oOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgICogZXdrL2V3a19zZWN1cml0eV9vcmlnaW5fcHJpdmF0ZS5oOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ByaXZhdGUuaC4KKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAqIGV3ay9ld2tfc2V0dGluZ3MuY3BwOgorICAgICAgICAqIGV3ay9l
d2tfc2V0dGluZ3NfcHJpdmF0ZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX3ByaXZhdGUuaC4KKyAgICAgICAgKiBld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuY3Bw
OgorICAgICAgICAoX0V3a19UaWxlZF9CYWNraW5nX1N0b3JlX0l0ZW0pOgorICAgICAgICAoZXdr
X3RpbGVkX2JhY2tpbmdfc3RvcmVfYWRkKToKKyAgICAgICAgKiBld2svZXdrX3RpbGVkX2JhY2tp
bmdfc3RvcmVfcHJpdmF0ZS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a190aWxlZF9iYWNraW5nX3N0b3JlLmguCisgICAgICAgIChfRXdrX1RpbGVfU3RhdHMpOgorICAg
ICAgICAoX0V3a19UaWxlKToKKyAgICAgICAgKiBld2svZXdrX3RpbGVkX21hdHJpeC5jcHA6Cisg
ICAgICAgICogZXdrL2V3a190aWxlZF9tYXRyaXhfcHJpdmF0ZS5oOiBSZW5hbWVkIGZyb20gU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9tYXRyaXguaC4KKyAgICAgICAgKiBld2svZXdr
X3RpbGVkX21vZGVsLmNwcDoKKyAgICAgICAgKHRpbGVfYWNjb3VudCk6CisgICAgICAgICogZXdr
L2V3a190aWxlZF9tb2RlbF9wcml2YXRlLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX3RpbGVkX21vZGVsLmguCisgICAgICAgICogZXdrL2V3a191dGlsLmNwcDoKKyAg
ICAgICAgKiBld2svZXdrX3V0aWxfcHJpdmF0ZS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a191dGlsLmguCisgICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKKyAgICAg
ICAgKF9Fd2tfVmlld19Qcml2YXRlX0RhdGEpOgorICAgICAgICAqIGV3ay9ld2tfdmlld19wcml2
YXRlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfcHJpdmF0ZS5oLgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChFV0tQcml2YXRlKToKKyAgICAgICAgKiBld2sv
ZXdrX3ZpZXdfc2luZ2xlLmNwcDoKKyAgICAgICAgKiBld2svZXdrX3ZpZXdfdGlsZWQuY3BwOgor
ICAgICAgICAqIGV3ay9ld2tfd2luZG93X2ZlYXR1cmVzLmNwcDoKKyAgICAgICAgKiBld2svZXdr
X3dpbmRvd19mZWF0dXJlc19wcml2YXRlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfcHJpdmF0ZS5oLgorCiAyMDEyLTA1LTExICBEb21pbmlrIFLDtnR0c2NoZXMgIDxk
b21pbmlrLnJvdHRzY2hlc0BpbnRlbC5jb20+CiAKICAgICAgICAgW0VGTF1bRFJUXSBJbnB1dCBB
dHRyaWJ1dGUgUGxhY2Vob2xkZXIgUmVmVGVzdHMgZmFpbGluZwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAKaW5kZXggMWU3NjEw
YS4uOWZkZTlmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQv
Q2hyb21lQ2xpZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRFZmwuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiRmlsZUNo
b29zZXIuaCIKICNpbmNsdWRlICJGaWxlSWNvbkxvYWRlci5oIgogI2luY2x1ZGUgIkZsb2F0UmVj
dC5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNs
dWRlICJGcmFtZUxvYWRlckNsaWVudEVmbC5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIK
QEAgLTUwLDcgKzUxLDkgQEAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUg
IlZpZXdwb3J0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiV2luZG93RmVhdHVyZXMuaCIKKyNpbmNs
dWRlICJld2tfZnJhbWVfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19wcml2YXRlLmgiCisjaW5j
bHVkZSAiZXdrX3ZpZXdfcHJpdmF0ZS5oIgogI2luY2x1ZGUgPEVjb3JlX0V2YXMuaD4KICNpbmNs
dWRlIDxFdmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZs
LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3Vw
cG9ydEVmbC5jcHAKaW5kZXggMTQ4NmNiYy4uOGNkYmQyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRF
ZmwuY3BwCkBAIC0yMiw3ICsyMiwxMCBAQAogI2luY2x1ZGUgIkR1bXBSZW5kZXJUcmVlU3VwcG9y
dEVmbC5oIgogCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnRFZmwuaCIKKyNpbmNsdWRlICJl
d2tfZnJhbWVfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a19oaXN0b3J5X3ByaXZhdGUuaCIKICNp
bmNsdWRlICJld2tfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a192aWV3X3ByaXZhdGUuaCIKIAog
I2luY2x1ZGUgPEFuaW1hdGlvbkNvbnRyb2xsZXIuaD4KICNpbmNsdWRlIDxDU1NDb21wdXRlZFN0
eWxlRGVjbGFyYXRpb24uaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVT
dXBwb3J0L0VkaXRvckNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3Vw
cG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwCmluZGV4IDkyMTdjYzEuLjJlOWM1MDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNw
cApAQCAtMzUsNyArMzUsOSBAQAogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiVW5k
b1N0ZXAuaCIKICNpbmNsdWRlICJXaW5kb3dzS2V5Ym9hcmRDb2Rlcy5oIgorI2luY2x1ZGUgImV3
a19mcmFtZV9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJl
d2tfdmlld19wcml2YXRlLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVm
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dEVmbC5jcHAKaW5kZXggNTE4NWQxZS4uZDc4ZjAyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcApAQCAt
NTMsOCArNTMsMTAgQEAKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSAi
U2V0dGluZ3MuaCIKICNpbmNsdWRlICJXZWJLaXRWZXJzaW9uLmgiCi0jaW5jbHVkZSAiZXdrX2xv
Z2dpbmcuaCIKKyNpbmNsdWRlICJld2tfZnJhbWVfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19w
cml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX3NldHRpbmdzX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJl
d2tfdmlld19wcml2YXRlLmgiCiAjaW5jbHVkZSA8RWNvcmVfRXZhcy5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5o
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19hdXRoLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfYXV0aC5jcHAKaW5kZXggYWYyMTcyYS4uMTUwYjhiNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19hdXRoLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX2F1dGguY3BwCkBAIC0yMCw3ICsyMCw3IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiZXdrX2F1dGguaCIKIAotI2luY2x1ZGUgImV3a19hdXRoX3Nv
dXAuaCIKKyNpbmNsdWRlICJld2tfYXV0aF9zb3VwX3ByaXZhdGUuaCIKIAogdm9pZCBld2tfYXV0
aF9zaG93X2RpYWxvZ19jYWxsYmFja19zZXQoRXdrX0F1dGhfU2hvd19EaWFsb2dfQ2FsbGJhY2sg
Y2FsbGJhY2spCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2F1dGhf
c291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2F1dGhfc291cC5jcHAKaW5kZXgg
ZDg1NDI3ZC4uZjU0ZmIwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19h
dXRoX3NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfYXV0aF9zb3VwLmNw
cApAQCAtMTksMTggKzE5LDEzIEBACiAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiZXdrX2F1dGhfc291cC5oIgorI2luY2x1ZGUgImV3a19hdXRoX3NvdXBfcHJpdmF0ZS5oIgog
CiAjaW5jbHVkZSAiZXdrX2F1dGguaCIKLSNpbmNsdWRlICJld2tfbG9nZ2luZy5oIgogI2luY2x1
ZGUgPGdsaWItb2JqZWN0Lmg+CiAjaW5jbHVkZSA8Z2xpYi5oPgogI2luY2x1ZGUgPGxpYnNvdXAv
c291cC5oPgogCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KIC8q
KgogICogI0V3a19Tb3VwX0F1dGhfRGlhbG9nIGlzIGEgI1NvdXBTZXNzaW9uRmVhdHVyZSB0aGF0
IHlvdSBjYW4gYXR0YWNoIHRvIHlvdXIKICAqICNTb3VwU2Vzc2lvbiB0byBwcm92aWRlIGEgc2lt
cGxlIGF1dGhlbnRpY2F0aW9uIGRpYWxvZyB3aGlsZQpAQCAtNjgsMTEgKzYzLDIzIEBAIHN0YXRp
YyB2b2lkIGV3a19hdXRoX3NvdXBfZGlhbG9nX3Nlc3Npb25fZmVhdHVyZV9pbml0KFNvdXBTZXNz
aW9uRmVhdHVyZUludGVyZmFjCiAgICAgZmVhdHVyZUludGVyZmFjZS0+ZGV0YWNoID0gZGV0YWNo
OwogfQogCisvKioKKyAqIEBpbnRlcm5hbAorICogIFNldHMgY2FsbGJhY2sgdG8gYmUgY2FsbGVk
IHdoZW4gYXV0aGVudGljYXRpb24gaXMgcmVxdWlyZWQuCisgKi8KIHZvaWQgZXdrX2F1dGhfc291
cF9zaG93X2RpYWxvZ19jYWxsYmFja19zZXQoRXdrX0F1dGhfU2hvd19EaWFsb2dfQ2FsbGJhY2sg
Y2FsbGJhY2spCiB7CiAgICAgZXdrX2F1dGhfc2hvd19kaWFsb2dfY2FsbGJhY2sgPSBjYWxsYmFj
azsKIH0KIAorLyoqCisgKiBAaW50ZXJuYWwKKyAqICBNZXRob2QgZm9yIHNldHRpbmcgY3JlZGVu
dGlhbHMKKyAqCisgKiAgQHBhcmFtIHVzZXJuYW1lIHVzZXJuYW1lCisgKiAgQHBhcmFtIHBhc3N3
b3JkIHBhc3N3b3JkCisgKiAgQHBhcmFtIGRhdGEgc291cCBhdXRoZW50aWNhdGlvbiBkYXRhCisg
Ki8KIHZvaWQgZXdrX2F1dGhfc291cF9jcmVkZW50aWFsc19zZXQoY29uc3QgY2hhciogdXNlcm5h
bWUsIGNvbnN0IGNoYXIqIHBhc3N3b3JkLCB2b2lkKiBkYXRhKQogewogICAgIGlmICghZGF0YSkK
QEAgLTEyOCw3ICsxMzUsMyBAQCBzdGF0aWMgdm9pZCBkZXRhY2goU291cFNlc3Npb25GZWF0dXJl
KiBtYW5hZ2VyLCBTb3VwU2Vzc2lvbiogc2Vzc2lvbikKIHsKICAgICBnX3NpZ25hbF9oYW5kbGVy
c19kaXNjb25uZWN0X2J5X2Z1bmMoc2Vzc2lvbiwgKHZvaWQqKXNlc3Npb25fYXV0aGVudGljYXRl
LCBtYW5hZ2VyKTsKIH0KLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfYXV0aF9zb3VwLmggYi9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX2F1dGhfc291cC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBi
ZDI2YjA0Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfYXV0aF9zb3Vw
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi0vKgotICAgIENvcHlyaWdodCAoQykg
MjAwOSBJZ2FsaWEgUy5MLgotICAgIENvcHlyaWdodCAoQykgMjAxMSBTYW1zdW5nIEVsZWN0cm9u
aWNzCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgotKi8KLQotI2lmbmRlZiBld2tfYXV0aF9zb3VwX2gKLSNkZWZpbmUgZXdrX2F1dGhfc291cF9o
Ci0KLSNpbmNsdWRlICJld2tfYXV0aC5oIgotI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+Ci0jaW5j
bHVkZSA8Z2xpYi5oPgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlm
Ci0KLSNkZWZpbmUgRVdLX1RZUEVfU09VUF9BVVRIX0RJQUxPRyAgICAgICAgICAgIChld2tfYXV0
aF9zb3VwX2RpYWxvZ19nZXRfdHlwZSgpKQotI2RlZmluZSBFV0tfU09VUF9BVVRIX0RJQUxPRyhv
YmplY3QpICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmplY3QpLCBFV0tf
VFlQRV9TT1VQX0FVVEhfRElBTE9HLCBFd2tfU291cF9BdXRoX0RpYWxvZykpCi0jZGVmaW5lIEVX
S19TT1VQX0FVVEhfRElBTE9HX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NB
U1QoKGtsYXNzKSwgRVdLX1RZUEVfU09VUF9BVVRIX0RJQUxPRywgRXdrX1NvdXBfQXV0aF9EaWFs
b2cpKQotI2RlZmluZSBFV0tfSVNfU09VUF9BVVRIX0RJQUxPRyhvYmplY3QpICAgICAgKEdfVFlQ
RV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmplY3QpLCBFV0tfVFlQRV9TT1VQX0FVVEhfRElBTE9H
KSkKLSNkZWZpbmUgRVdLX0lTX1NPVVBfQVVUSF9ESUFMT0dfQ0xBU1Moa2xhc3MpIChHX1RZUEVf
Q0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCBFV0tfVFlQRV9TT1VQX0FVVEhfRElBTE9HKSkKLSNk
ZWZpbmUgRVdLX1NPVVBfQVVUSF9ESUFMT0dfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFO
Q0VfR0VUX0NMQVNTKChvYmopLCBFV0tfVFlQRV9TT1VQX0FVVEhfRElBTE9HLCBFd2tfU291cF9B
dXRoX0RpYWxvZykpCi0KLXR5cGVkZWYgc3RydWN0IHsKLSAgICBHT2JqZWN0IHBhcmVudF9pbnN0
YW5jZTsKLX0gRXdrX1NvdXBfQXV0aF9EaWFsb2c7Ci0KLXR5cGVkZWYgc3RydWN0IHsKLSAgICBH
T2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOwotfSBFd2tfU291cF9BdXRoX0RpYWxvZ0NsYXNzOwot
Ci1HVHlwZSBld2tfYXV0aF9zb3VwX2RpYWxvZ19nZXRfdHlwZSh2b2lkKTsKLQotLyoqCi0gKiAg
U2V0cyBjYWxsYmFjayB0byBiZSBjYWxsZWQgd2hlbiBhdXRoZW50aWNhdGlvbiBpcyByZXF1aXJl
ZC4KLSAqLwotdm9pZCBld2tfYXV0aF9zb3VwX3Nob3dfZGlhbG9nX2NhbGxiYWNrX3NldChFd2tf
QXV0aF9TaG93X0RpYWxvZ19DYWxsYmFjayBjYWxsYmFjayk7Ci0KLS8qKgotICogIE1ldGhvZCBm
b3Igc2V0dGluZyBjcmVkZW50aWFscwotICoKLSAqICBAcGFyYW0gdXNlcm5hbWUgdXNlcm5hbWUK
LSAqICBAcGFyYW0gcGFzc3dvcmQgcGFzc3dvcmQKLSAqICBAcGFyYW0gZGF0YSBzb3VwIGF1dGhl
bnRpY2F0aW9uIGRhdGEKLSAqLwotdm9pZCBld2tfYXV0aF9zb3VwX2NyZWRlbnRpYWxzX3NldChj
b25zdCBjaGFyICp1c2VybmFtZSwgY29uc3QgY2hhciAqcGFzc3dvcmQsIHZvaWQgKmRhdGEpOwot
Ci0jaWZkZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRpZgotCi0jZW5kaWYgLy8gZXdrX2F1dGhfc291
cF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2F1dGhfc291cF9wcml2
YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2F1dGhfc291cF9wcml2YXRlLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzM2NGY2MQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfYXV0aF9zb3VwX3ByaXZhdGUuaApAQCAtMCww
ICsxLDUyIEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAwOSBJZ2FsaWEgUy5MLgorICAgIENv
cHlyaWdodCAoQykgMjAxMSBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
KyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lmbmRlZiBld2tfYXV0
aF9zb3VwX3ByaXZhdGVfaAorI2RlZmluZSBld2tfYXV0aF9zb3VwX3ByaXZhdGVfaAorCisjaW5j
bHVkZSAiZXdrX2F1dGguaCIKKyNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgorI2luY2x1ZGUgPGds
aWIuaD4KKworI2RlZmluZSBFV0tfVFlQRV9TT1VQX0FVVEhfRElBTE9HICAgICAgICAgICAgKGV3
a19hdXRoX3NvdXBfZGlhbG9nX2dldF90eXBlKCkpCisjZGVmaW5lIEVXS19TT1VQX0FVVEhfRElB
TE9HKG9iamVjdCkgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iamVjdCks
IEVXS19UWVBFX1NPVVBfQVVUSF9ESUFMT0csIEV3a19Tb3VwX0F1dGhfRGlhbG9nKSkKKyNkZWZp
bmUgRVdLX1NPVVBfQVVUSF9ESUFMT0dfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xB
U1NfQ0FTVCgoa2xhc3MpLCBFV0tfVFlQRV9TT1VQX0FVVEhfRElBTE9HLCBFd2tfU291cF9BdXRo
X0RpYWxvZykpCisjZGVmaW5lIEVXS19JU19TT1VQX0FVVEhfRElBTE9HKG9iamVjdCkgICAgICAo
R19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iamVjdCksIEVXS19UWVBFX1NPVVBfQVVUSF9E
SUFMT0cpKQorI2RlZmluZSBFV0tfSVNfU09VUF9BVVRIX0RJQUxPR19DTEFTUyhrbGFzcykgKEdf
VFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksIEVXS19UWVBFX1NPVVBfQVVUSF9ESUFMT0cp
KQorI2RlZmluZSBFV0tfU09VUF9BVVRIX0RJQUxPR19HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9J
TlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksIEVXS19UWVBFX1NPVVBfQVVUSF9ESUFMT0csIEV3a19T
b3VwX0F1dGhfRGlhbG9nKSkKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIEdPYmplY3QgcGFyZW50
X2luc3RhbmNlOworfSBFd2tfU291cF9BdXRoX0RpYWxvZzsKKwordHlwZWRlZiBzdHJ1Y3Qgewor
ICAgIEdPYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7Cit9IEV3a19Tb3VwX0F1dGhfRGlhbG9nQ2xh
c3M7CisKK0dUeXBlIGV3a19hdXRoX3NvdXBfZGlhbG9nX2dldF90eXBlKHZvaWQpOworCisvKioK
KyAqICBTZXRzIGNhbGxiYWNrIHRvIGJlIGNhbGxlZCB3aGVuIGF1dGhlbnRpY2F0aW9uIGlzIHJl
cXVpcmVkLgorICovCit2b2lkIGV3a19hdXRoX3NvdXBfc2hvd19kaWFsb2dfY2FsbGJhY2tfc2V0
KEV3a19BdXRoX1Nob3dfRGlhbG9nX0NhbGxiYWNrIGNhbGxiYWNrKTsKKwordm9pZCBld2tfYXV0
aF9zb3VwX2NyZWRlbnRpYWxzX3NldChjb25zdCBjaGFyICp1c2VybmFtZSwgY29uc3QgY2hhciAq
cGFzc3dvcmQsIHZvaWQgKmRhdGEpOworCisjZW5kaWYgLy8gZXdrX2F1dGhfc291cF9wcml2YXRl
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfY29udGV4dG1lbnVfcHJp
dmF0ZS5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19jb250ZXh0bWVudV9wcml2YXRlLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2UxZjNhOAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfY29udGV4dG1lbnVfcHJpdmF0ZS5oCkBA
IC0wLDAgKzEsMzggQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgUHJvRlVTSU9O
IGVtYmVkZGVkIHN5c3RlbXMKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMiBTYW1zdW5nIEVs
ZWN0cm9uaWNzCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAg
ICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
ICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgorKi8KKworI2lmbmRlZiBld2tfY29udGV4dG1lbnVfcHJpdmF0ZV9oCisjZGVmaW5l
IGV3a19jb250ZXh0bWVudV9wcml2YXRlX2gKKworLy8gZm9yd2FyZCBkZWNsYXJhdGlvbnMKK25h
bWVzcGFjZSBXZWJDb3JlIHsKK3N0cnVjdCBDb250ZXh0TWVudTsKK3N0cnVjdCBDb250ZXh0TWVu
dUl0ZW07Cit9CisKKyNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKK0V3a19Db250ZXh0X01lbnUq
IGV3a19jb250ZXh0X21lbnVfbmV3KEV2YXNfT2JqZWN0KiB2aWV3LCBXZWJDb3JlOjpDb250ZXh0
TWVudUNvbnRyb2xsZXIqIGNvbnRyb2xsZXIpOworYm9vbCBld2tfY29udGV4dF9tZW51X2ZyZWUo
RXdrX0NvbnRleHRfTWVudSogbWVudSk7Cit2b2lkIGV3a19jb250ZXh0X21lbnVfaXRlbV9hcHBl
bmQoRXdrX0NvbnRleHRfTWVudSogbWVudSwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtJiBjb3Jl
KTsKK0V3a19Db250ZXh0X01lbnUqIGV3a19jb250ZXh0X21lbnVfY3VzdG9taXplKEV3a19Db250
ZXh0X01lbnUqIG1lbnUpOwordm9pZCBld2tfY29udGV4dF9tZW51X3Nob3coRXdrX0NvbnRleHRf
TWVudSogbWVudSk7CisjZW5kaWYKKworI2VuZGlmIC8vIGV3a19jb250ZXh0X21hbnVfcHJpdmF0
ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwCmluZGV4IDk2NGI2OTIuLjg3YTkzZmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwCkBAIC01MCwxMyArNTAsMTcgQEAKICNp
bmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJTdWJzdGl0dXRlRGF0YS5oIgogI2lu
Y2x1ZGUgIldpbmRvd3NLZXlib2FyZENvZGVzLmgiCi0jaW5jbHVkZSAiZXdrX2xvZ2dpbmcuaCIK
KyNpbmNsdWRlICJld2tfZnJhbWVfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19wcml2YXRlLmgi
CisjaW5jbHVkZSAiZXdrX3NlY3VyaXR5X29yaWdpbl9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdr
X3ZpZXdfcHJpdmF0ZS5oIgogI2luY2x1ZGUgPEVpbmEuaD4KICNpbmNsdWRlIDxFdmFzLmg+CiAj
aW5jbHVkZSA8ZWluYV9zYWZldHlfY2hlY2tzLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMu
aD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
KyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgog
CiBzdGF0aWMgY29uc3QgY2hhciBFV0tfRlJBTUVfVFlQRV9TVFJbXSA9ICJFV0tfRnJhbWUiOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZV9wcml2YXRlLmggYi9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lX3ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5iZDA4N2RlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a19mcmFtZV9wcml2YXRlLmgKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAg
ICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcworICAg
IENvcHlyaWdodCAoQykgMjAwOS0yMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
ICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVm
IGV3a19mcmFtZV9wcml2YXRlX2gKKyNkZWZpbmUgZXdrX2ZyYW1lX3ByaXZhdGVfaAorCisjaW5j
bHVkZSAiZXdrX2ZyYW1lLmgiCisjaW5jbHVkZSA8RXZhcy5oPgorI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CitjbGFzcyBXaWRnZXQ7CitjbGFzcyBGcmFtZTsKK30KKworRXZhc19PYmplY3QqIGV3a19mcmFt
ZV9hZGQoRXZhcyogY2FudmFzKTsKK2Jvb2wgZXdrX2ZyYW1lX2luaXQoRXZhc19PYmplY3QqIGV3
a0ZyYW1lLCBFdmFzX09iamVjdCogdmlldywgV2ViQ29yZTo6RnJhbWUqIGZyYW1lKTsKK2Jvb2wg
ZXdrX2ZyYW1lX2NoaWxkX2FkZChFdmFzX09iamVjdCogZXdrRnJhbWUsIFdURjo6UGFzc1JlZlB0
cjxXZWJDb3JlOjpGcmFtZT4gY2hpbGQsIGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lLCBjb25zdCBX
ZWJDb3JlOjpLVVJMJiB1cmwsIGNvbnN0IFdURjo6U3RyaW5nJiByZWZlcnJlcik7Cit2b2lkIGV3
a19mcmFtZV92aWV3X3NldChFdmFzX09iamVjdCogZXdrRnJhbWUsIEV2YXNfT2JqZWN0KiBuZXdQ
YXJlbnQpOworCit2b2lkIGV3a19mcmFtZV9jb3JlX2dvbmUoRXZhc19PYmplY3QqIGV3a0ZyYW1l
KTsKKwordm9pZCBld2tfZnJhbWVfbG9hZF9jb21taXR0ZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1l
KTsKK3ZvaWQgZXdrX2ZyYW1lX2xvYWRfc3RhcnRlZChFdmFzX09iamVjdCogZXdrRnJhbWUpOwor
dm9pZCBld2tfZnJhbWVfbG9hZF9wcm92aXNpb25hbChFdmFzX09iamVjdCogZXdrRnJhbWUpOwor
dm9pZCBld2tfZnJhbWVfbG9hZF9maXJzdGxheW91dF9maW5pc2hlZChFdmFzX09iamVjdCogZXdr
RnJhbWUpOwordm9pZCBld2tfZnJhbWVfbG9hZF9maXJzdGxheW91dF9ub25lbXB0eV9maW5pc2hl
ZChFdmFzX09iamVjdCogZXdrRnJhbWUpOwordm9pZCBld2tfZnJhbWVfbG9hZF9kb2N1bWVudF9m
aW5pc2hlZChFdmFzX09iamVjdCogZXdrRnJhbWUpOwordm9pZCBld2tfZnJhbWVfbG9hZF9maW5p
c2hlZChFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IGNoYXIqIGVycm9yRG9tYWluLCBpbnQg
ZXJyb3JDb2RlLCBib29sIGlzQ2FuY2VsbGF0aW9uLCBjb25zdCBjaGFyKiBlcnJvckRlc2NyaXB0
aW9uLCBjb25zdCBjaGFyKiBmYWlsaW5nVXJsKTsKK3ZvaWQgZXdrX2ZyYW1lX2xvYWRfcmVzb3Vy
Y2VfZmluaXNoZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCB1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIpOwordm9pZCBld2tfZnJhbWVfbG9hZF9yZXNvdXJjZV9mYWlsZWQoRXZhc19PYmplY3QqIGV3
a0ZyYW1lLCBFd2tfRnJhbWVfTG9hZF9FcnJvciogZXJyb3IpOwordm9pZCBld2tfZnJhbWVfbG9h
ZF9lcnJvcihFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IGNoYXIqIGVycm9yRG9tYWluLCBp
bnQgZXJyb3JDb2RlLCBib29sIGlzQ2FuY2VsbGF0aW9uLCBjb25zdCBjaGFyKiBlcnJvckRlc2Ny
aXB0aW9uLCBjb25zdCBjaGFyKiBmYWlsaW5nVXJsKTsKK3ZvaWQgZXdrX2ZyYW1lX2xvYWRfcHJv
Z3Jlc3NfY2hhbmdlZChFdmFzX09iamVjdCogZXdrRnJhbWUpOworCit2b2lkIGV3a19mcmFtZV9y
ZWRpcmVjdF9jYW5jZWxsZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKK3ZvaWQgZXdrX2ZyYW1l
X3JlZGlyZWN0X3Byb3Zpc2lvbmFsX2xvYWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKK3ZvaWQg
ZXdrX2ZyYW1lX3JlZGlyZWN0X3JlcXVlc3RlZChFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0
IGNoYXIqIHVybCk7Cit2b2lkIGV3a19mcmFtZV9yZXF1ZXN0X3dpbGxfc2VuZChFdmFzX09iamVj
dCogZXdrRnJhbWUsIEV3a19GcmFtZV9SZXNvdXJjZV9NZXNzYWdlcyogbWVzc2FnZXMpOwordm9p
ZCBld2tfZnJhbWVfcmVxdWVzdF9hc3NpZ25faWRlbnRpZmllcihFdmFzX09iamVjdCogZXdrRnJh
bWUsIGNvbnN0IEV3a19GcmFtZV9SZXNvdXJjZV9SZXF1ZXN0KiByZXF1ZXN0KTsKK3ZvaWQgZXdr
X2ZyYW1lX3Jlc3BvbnNlX3JlY2VpdmVkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgRXdrX0ZyYW1l
X1Jlc291cmNlX1Jlc3BvbnNlKiByZXNwb25zZSk7Cit2b2lkIGV3a19mcmFtZV92aWV3X3N0YXRl
X3NhdmUoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBXZWJDb3JlOjpIaXN0b3J5SXRlbSogaXRlbSk7
CisKK3ZvaWQgZXdrX2ZyYW1lX2RpZF9wZXJmb3JtX2ZpcnN0X25hdmlnYXRpb24oRXZhc19PYmpl
Y3QqIGV3a0ZyYW1lKTsKKwordm9pZCBld2tfZnJhbWVfY29udGVudHNfc2l6ZV9jaGFuZ2VkKEV2
YXNfT2JqZWN0KiBld2tGcmFtZSwgRXZhc19Db29yZCB3aWR0aCwgRXZhc19Db29yZCBoZWlnaHQp
Owordm9pZCBld2tfZnJhbWVfdGl0bGVfc2V0KEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgY29uc3Qg
Y2hhciogdGl0bGUpOworCit2b2lkIGV3a19mcmFtZV92aWV3X2NyZWF0ZV9mb3JfdmlldyhFdmFz
X09iamVjdCogZXdrRnJhbWUsIEV2YXNfT2JqZWN0KiB2aWV3KTsKK2Jvb2wgZXdrX2ZyYW1lX3Vy
aV9jaGFuZ2VkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7Cit2b2lkIGV3a19mcmFtZV9mb3JjZV9s
YXlvdXQoRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKK3ZvaWQgZXdrX2ZyYW1lX2ljb25fY2hhbmdl
ZChFdmFzX09iamVjdCogZXdrRnJhbWUpOworCitXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6V2lk
Z2V0PiBld2tfZnJhbWVfcGx1Z2luX2NyZWF0ZShFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0
IFdlYkNvcmU6OkludFNpemUmIHBsdWdpblNpemUsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50
KiBlbGVtZW50LCBjb25zdCBXZWJDb3JlOjpLVVJMJiB1cmwsIGNvbnN0IFdURjo6VmVjdG9yPFdU
Rjo6U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBw
YXJhbVZhbHVlcywgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBib29sIGxvYWRNYW51YWxs
eSk7CisKK3ZvaWQgZXdrX2ZyYW1lX2VkaXRvcl9jbGllbnRfY29udGVudHNfY2hhbmdlZChFdmFz
X09iamVjdCogZXdrRnJhbWUpOwordm9pZCBld2tfZnJhbWVfZWRpdG9yX2NsaWVudF9zZWxlY3Rp
b25fY2hhbmdlZChFdmFzX09iamVjdCogZXdrRnJhbWUpOworCit2b2lkIGV3a19mcmFtZV9taXhl
ZF9jb250ZW50X2Rpc3BsYXllZF9zZXQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBib29sIGhhc0Rp
c3BsYXllZCk7Cit2b2lkIGV3a19mcmFtZV9taXhlZF9jb250ZW50X3J1bl9zZXQoRXZhc19PYmpl
Y3QqIGV3a0ZyYW1lLCBib29sIGhhc1J1bik7CisKK3ZvaWQgZXdrX2ZyYW1lX3hzc19kZXRlY3Rl
ZChFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IEV3a19GcmFtZV9Yc3NfTm90aWZpY2F0aW9u
KiB4c3NJbmZvKTsKKworbmFtZXNwYWNlIEVXS1ByaXZhdGUgeworV2ViQ29yZTo6RnJhbWUgKmNv
cmVGcmFtZShjb25zdCBFdmFzX09iamVjdCAqZXdrRnJhbWUpOworRXZhc19PYmplY3QqIGtpdEZy
YW1lKGNvbnN0IFdlYkNvcmU6OkZyYW1lKiBjb3JlRnJhbWUpOworfSAvLyBuYW1lc3BhY2UgRVdL
UHJpdmF0ZQorCisjZW5kaWYgLy8gZXdrX2ZyYW1lX3ByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a19oaXN0b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfaGlzdG9yeS5jcHAKaW5kZXggMWE0ZTliNy4uM2RjODgxMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a19oaXN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX2hpc3RvcnkuY3BwCkBAIC0yOCw5ICsyOCw5IEBACiAjaW5jbHVkZSAiSW50U2l6
ZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIKLSNpbmNsdWRl
ICJld2tfbG9nZ2luZy5oIgorI2luY2x1ZGUgImV3a19oaXN0b3J5X3ByaXZhdGUuaCIKICNpbmNs
dWRlICJld2tfcHJpdmF0ZS5oIgotI2luY2x1ZGUgImV3a191dGlsLmgiCisjaW5jbHVkZSAiZXdr
X3V0aWxfcHJpdmF0ZS5oIgogI2luY2x1ZGUgPEVpbmEuaD4KICNpbmNsdWRlIDxlaW5hX3NhZmV0
eV9jaGVja3MuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2hpc3RvcnlfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a19oaXN0b3J5X3ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi40NDU0N2JlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a19oaXN0b3J5X3ByaXZhdGUuaApAQCAtMCwwICsxLDM5IEBACisvKgorICAgIENvcHly
aWdodCAoQykgMjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCisgICAgQ29weXJp
Z2h0IChDKSAyMDA5LTIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpZm5kZWYgZXdrX2hp
c3RvcnlfcHJpdmF0ZV9oCisjZGVmaW5lIGV3a19oaXN0b3J5X3ByaXZhdGVfaAorCisjaW5jbHVk
ZSAiQmFja0ZvcndhcmRMaXN0SW1wbC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBI
aXN0b3J5SXRlbTsKK2NsYXNzIEJhY2tGb3J3YXJkTGlzdEltcGw7Cit9CisKK0V3a19IaXN0b3J5
X0l0ZW0gKmV3a19oaXN0b3J5X2l0ZW1fbmV3X2Zyb21fY29yZShXZWJDb3JlOjpIaXN0b3J5SXRl
bSAqY29yZSk7CitFd2tfSGlzdG9yeSogZXdrX2hpc3RvcnlfbmV3KFdlYkNvcmU6OkJhY2tGb3J3
YXJkTGlzdEltcGwqIGhpc3RvcnkpOwordm9pZCBld2tfaGlzdG9yeV9mcmVlKEV3a19IaXN0b3J5
KiBoaXN0b3J5KTsKKworbmFtZXNwYWNlIEVXS1ByaXZhdGUgeworV2ViQ29yZTo6SGlzdG9yeUl0
ZW0gKmNvcmVIaXN0b3J5SXRlbShjb25zdCBFd2tfSGlzdG9yeV9JdGVtICpld2tIaXN0b3J5SXRl
bSk7Cit9IC8vIG5hbWVzcGFjZSBFV0tQcml2YXRlCisKKyNlbmRpZiAvLyBld2tfaGlzdG9yeV9w
cml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfanMuY3BwIGIv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19qcy5jcHAKaW5kZXggYThiMjA2ZS4uZjA4Zjk4ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19qcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9lZmwvZXdrL2V3a19qcy5jcHAKQEAgLTIzLDcgKzIzLDcgQEAKICNpZiBFTkFCTEUo
TkVUU0NBUEVfUExVR0lOX0FQSSkKIAogI2luY2x1ZGUgIk5QX2pzb2JqZWN0LmgiCi0jaW5jbHVk
ZSAiZXdrX2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJld2tfanNfcHJpdmF0ZS5oIgogI2luY2x1ZGUg
ImV3a19wcml2YXRlLmgiCiAjaW5jbHVkZSAibnBydW50aW1lLmgiCiAjaW5jbHVkZSAibnBydW50
aW1lX2ltcGwuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfanNfcHJp
dmF0ZS5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19qc19wcml2YXRlLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGIzMmY5OQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfanNfcHJpdmF0ZS5oCkBAIC0wLDAgKzEsNDIgQEAKKy8q
CisgICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMK
KyAgICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAg
ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lm
bmRlZiBld2tfanNfcHJpdmF0ZV9oCisjZGVmaW5lIGV3a19qc19wcml2YXRlX2gKKworI2luY2x1
ZGUgIk5QX2pzb2JqZWN0LmgiCisjaW5jbHVkZSAiZXdrX2pzLmgiCisKKyNpZiBFTkFCTEUoTkVU
U0NBUEVfUExVR0lOX0FQSSkKKyNkZWZpbmUgRVdLX0pTX09CSkVDVF9NQUdJQyAweDY5Njk2OQor
Cit0eXBlZGVmIHN0cnVjdCBfRXdrX0pTX0NsYXNzIEV3a19KU19DbGFzczsKK3N0cnVjdCBfRXdr
X0pTX09iamVjdCB7CisgICAgSmF2YVNjcmlwdE9iamVjdCBiYXNlOworICAgIGNvbnN0IGNoYXIq
IG5hbWU7CisgICAgY29uc3QgRXdrX0pTX0NsYXNzKiBjbHM7CisgICAgRWluYV9IYXNoKiBwcm9w
ZXJ0aWVzOworICAgIEV2YXNfT2JqZWN0KiB2aWV3OyAvLyBld2tfdmlldzogY2hlY2sgaWYgdGhp
cyBvYmplY3QgaGFzIGFscmVhZHkgYmVlbiBhZGRlZCB0byBhbm90aGVyIGV3a192aWV3CisgICAg
RXdrX0pTX09iamVjdF9UeXBlIHR5cGU7CisgICAgRUlOQV9NQUdJQzsKK307CisjZW5kaWYgLy8g
RU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCisKKyNlbmRpZiAvLyBld2tfanNfcHJpdmF0ZV9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2xvZ2dpbmcuaCBiL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfbG9nZ2luZy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBmOGE3ZjQxLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbG9n
Z2luZy5oCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotLyoKLSAgICBDb3B5cmlnaHQg
KEMpIDIwMDktMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcwotICAgIENvcHlyaWdodCAo
QykgMjAwOS0yMDEwIFNhbXN1bmcgRWxlY3Ryb25pY3MKLQotICAgIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAg
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgotICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
LSAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQot
ICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0g
ICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0vKioKLSAqIEBmaWxlICAgIGV3
a19sb2dnaW5nLmgKLSAqIEBicmllZiAgIFByb3ZpZGVzIG1hY3JvcyBmb3IgbG9nZ2luZy4KLSAq
LwotCi0jaWZuZGVmIGV3a19sb2dnaW5nX2gKLSNkZWZpbmUgZXdrX2xvZ2dpbmdfaAotCi1leHRl
cm4gaW50IF9ld2tfbG9nX2RvbTsKLSNkZWZpbmUgQ1JJVElDQUwoLi4uKSBFSU5BX0xPR19ET01f
Q1JJVChfZXdrX2xvZ19kb20sIF9fVkFfQVJHU19fKQotI2RlZmluZSBFUlIoLi4uKSBFSU5BX0xP
R19ET01fRVJSKF9ld2tfbG9nX2RvbSwgX19WQV9BUkdTX18pCi0jZGVmaW5lIFdSTiguLi4pIEVJ
TkFfTE9HX0RPTV9XQVJOKF9ld2tfbG9nX2RvbSwgX19WQV9BUkdTX18pCi0jZGVmaW5lIElORigu
Li4pIEVJTkFfTE9HX0RPTV9JTkZPKF9ld2tfbG9nX2RvbSwgX19WQV9BUkdTX18pCi0jZGVmaW5l
IERCRyguLi4pIEVJTkFfTE9HX0RPTV9EQkcoX2V3a19sb2dfZG9tLCBfX1ZBX0FSR1NfXykKLQot
I2VuZGlmIC8vIGV3a19sb2dnaW5nX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfbWFpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX21haW4uY3BwCmluZGV4
IDc2MjFkMzcuLmQ5YmU1ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
bWFpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19tYWluLmNwcApAQCAtMzAs
OCArMzAsNyBAQAogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU3RvcmFnZVRyYWNr
ZXIuaCIKICNpbmNsdWRlICJTdG9yYWdlVHJhY2tlckNsaWVudEVmbC5oIgotI2luY2x1ZGUgImV3
a19hdXRoX3NvdXAuaCIKLSNpbmNsdWRlICJld2tfbG9nZ2luZy5oIgorI2luY2x1ZGUgImV3a19h
dXRoX3NvdXBfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19uZXR3b3JrLmgiCiAjaW5jbHVkZSAi
ZXdrX3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfc2V0dGluZ3MuaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbmV0d29yay5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX25ldHdvcmsuY3BwCmluZGV4IDU0MWNjZGQuLjhhZDNjNDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbmV0d29yay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a19uZXR3b3JrLmNwcApAQCAtMjIsNyArMjIsNyBAQAogCiAjaW5jbHVkZSAiTmV0
d29ya1N0YXRlTm90aWZpZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgotI2luY2x1
ZGUgImV3a19sb2dnaW5nLmgiCisjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKICNpbmNsdWRlIDxF
aW5hLmg+CiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcml2YXRlLmgg
Yi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ByaXZhdGUuaAppbmRleCBmYTI4NGYzLi5lMDk0
ODNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ByaXZhdGUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ByaXZhdGUuaApAQCAtMSw2ICsxLDYgQEAKIC8q
CiAgICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMK
LSAgICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBTYW1zdW5nIEVsZWN0cm9uaWNzCisgICAgQ29w
eXJpZ2h0IChDKSAyMDA5LTIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcwogCiAgICAgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICAg
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCkBAIC0xOCw3NCArMTgsMjIgQEAKICAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
ICovCiAKLS8qKgotICogQGZpbGUgICAgZXdrX3ByaXZhdGUuaAotICogQGJyaWVmICAgUHJpdmF0
ZSBtZXRob2RzIG9mIFdlYktpdC1FRkwuCi0gKi8KLQogI2lmbmRlZiBld2tfcHJpdmF0ZV9oCiAj
ZGVmaW5lIGV3a19wcml2YXRlX2gKIAogI2luY2x1ZGUgIkFQSUNhc3QuaCIKLSNpbmNsdWRlICJC
YWNrRm9yd2FyZExpc3RJbXBsLmgiCi0jaW5jbHVkZSAiRnJhbWUuaCIKLSNpbmNsdWRlICJOUF9q
c29iamVjdC5oIgotI2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJXaWRnZXQuaCIKLSNpbmNs
dWRlICJld2tfaGlzdG9yeS5oIgotI2luY2x1ZGUgImV3a19qcy5oIgotI2luY2x1ZGUgImV3a192
aWV3LmgiCiAjaW5jbHVkZSA8RXZhcy5oPgotI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKLSNpbmNsdWRlIDxFdmFzX0dMLmg+Ci0jZW5kaWYKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogLy8gSWYgZGVmaW5lZCwgZXdrIHdpbGwg
ZG8gdHlwZSBjaGVja2luZyB0byBlbnN1cmUgb2JqZWN0cyBhcmUgb2YgY29ycmVjdCB0eXBlCiAj
ZGVmaW5lIEVXS19UWVBFX0NIRUNLIDEKICNkZWZpbmUgRVdLX0FSR0JfQllURVNfU0laRSA0CiAK
LSNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLSNkZWZpbmUgRVdLX0pTX09CSkVDVF9N
QUdJQyAweDY5Njk2OQotCi10eXBlZGVmIHN0cnVjdCBfRXdrX0pTX0NsYXNzIEV3a19KU19DbGFz
czsKLXN0cnVjdCBfRXdrX0pTX09iamVjdCB7Ci0gICAgSmF2YVNjcmlwdE9iamVjdCBiYXNlOwot
ICAgIGNvbnN0IGNoYXIqIG5hbWU7Ci0gICAgY29uc3QgRXdrX0pTX0NsYXNzKiBjbHM7Ci0gICAg
RWluYV9IYXNoKiBwcm9wZXJ0aWVzOwotICAgIEV2YXNfT2JqZWN0KiB2aWV3OyAvLyBld2tfdmll
dzogY2hlY2sgaWYgdGhpcyBvYmplY3QgaGFzIGFscmVhZHkgYmVlbiBhZGRlZCB0byBhbm90aGVy
IGV3a192aWV3Ci0gICAgRXdrX0pTX09iamVjdF9UeXBlIHR5cGU7Ci0gICAgRUlOQV9NQUdJQzsK
LX07Ci0jZW5kaWYgLy8gRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0KLS8vIERlZmluZXMg
dGhlIG5hbWVzIGZvciBpbml0aWFsaXppbmcgZXdrX3ZpZXdfc21hcnRfY2xhc3MKLWNvbnN0IGNo
YXIgZXdrVmlld1RpbGVkTmFtZVtdID0gIkV3a19WaWV3X1RpbGVkIjsKLWNvbnN0IGNoYXIgZXdr
Vmlld1NpbmdsZU5hbWVbXSA9ICJFd2tfVmlld19TaW5nbGUiOwotCi0vLyBEZWZpbmUgdG8gcHJl
dmVudCBhbiBhcHBsaWNhdGlvbiB1c2luZyBkaWZmZXJlbnQgdmlldyB0eXBlIGZyb20gY2FsbGlu
ZyB0aGUgZnVuY3Rpb24uCi0jZGVmaW5lIEVXS19WSUVXX1RZUEVfQ0hFQ0tfT1JfUkVUVVJOKGV3
a1ZpZXcsIHZpZXdOYW1lLCAuLi4pIFwKLSAgICBpZiAoIWV2YXNfb2JqZWN0X3NtYXJ0X3R5cGVf
Y2hlY2soZXdrVmlldywgdmlld05hbWUpKSB7IFwKLSAgICAgICAgSU5GKCJld2tWaWV3IGlzbid0
IGFuIGluc3RhbmNlIG9mICVzIiwgdmlld05hbWUpOyBcCi0gICAgICAgIHJldHVybiBfX1ZBX0FS
R1NfXzsgXAotICAgIH0KLQogLy8gZm9yd2FyZCBkZWNsYXJhdGlvbnMKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKLXN0cnVjdCBQb3B1cE1lbnVDbGllbnQ7Ci1zdHJ1Y3QgQ29udGV4dE1lbnU7Ci1zdHJ1
Y3QgQ29udGV4dE1lbnVJdGVtOwotI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQotc3RydWN0
IENvbG9yOwotc3RydWN0IENvbG9yQ2hvb3NlckNsaWVudDsKLSNlbmRpZgogI2lmIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwogY2xhc3MgR3Jh
cGhpY3NMYXllcjsKICNlbmRpZgotY2xhc3MgU2VjdXJpdHlPcmlnaW47CiB9CiAKIHN0cnVjdCBF
d2tfV2luZG93X09iamVjdF9DbGVhcmVkX0V2ZW50IHsKQEAgLTk0LDE3OSArNDIsMTIgQEAgc3Ry
dWN0IEV3a19XaW5kb3dfT2JqZWN0X0NsZWFyZWRfRXZlbnQgewogICAgIEV2YXNfT2JqZWN0KiBm
cmFtZTsKIH07CiAKLW5hbWVzcGFjZSBFV0tQcml2YXRlIHsKLQotV2ViQ29yZTo6RnJhbWUgKmNv
cmVGcmFtZShjb25zdCBFdmFzX09iamVjdCAqZXdrRnJhbWUpOwotV2ViQ29yZTo6UGFnZSAqY29y
ZVBhZ2UoY29uc3QgRXZhc19PYmplY3QgKmV3a1ZpZXcpOwotV2ViQ29yZTo6SGlzdG9yeUl0ZW0g
KmNvcmVIaXN0b3J5SXRlbShjb25zdCBFd2tfSGlzdG9yeV9JdGVtICpld2tIaXN0b3J5SXRlbSk7
Ci1QbGF0Zm9ybVBhZ2VDbGllbnQgY29yZVBhZ2VDbGllbnQoRXZhc19PYmplY3QqIGV3a1ZpZXcp
OwotCi1FdmFzX09iamVjdCoga2l0RnJhbWUoY29uc3QgV2ViQ29yZTo6RnJhbWUqIGNvcmVGcmFt
ZSk7Ci0KLX0gLy8gbmFtZXNwYWNlIEVXS1ByaXZhdGUKLQotdm9pZCBld2tfdmlld19yZWFkeShF
dmFzX09iamVjdCogZXdrVmlldyk7Ci12b2lkIGV3a192aWV3X2lucHV0X21ldGhvZF9zdGF0ZV9z
ZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGJvb2wgYWN0aXZlKTsKLXZvaWQgZXdrX3ZpZXdfdGl0
bGVfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBjaGFyKiB0aXRsZSk7Ci12b2lkIGV3
a192aWV3X3VyaV9jaGFuZ2VkKEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKLXZvaWQgZXdrX3ZpZXdf
bG9hZF9kb2N1bWVudF9maW5pc2hlZChFdmFzX09iamVjdCogZXdrVmlldywgRXZhc19PYmplY3Qq
IGZyYW1lKTsKLXZvaWQgZXdrX3ZpZXdfbG9hZF9zdGFydGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3
LCBFdmFzX09iamVjdCogZXdrRnJhbWUpOwotdm9pZCBld2tfdmlld19sb2FkX3Byb3Zpc2lvbmFs
KEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKLXZvaWQgZXdrX3ZpZXdfZnJhbWVfbWFpbl9sb2FkX3N0
YXJ0ZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcpOwotdm9pZCBld2tfdmlld19mcmFtZV9tYWluX2Ns
ZWFyZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcpOwotdm9pZCBld2tfdmlld19mcmFtZV9tYWluX2lj
b25fcmVjZWl2ZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcpOwotdm9pZCBld2tfdmlld19sb2FkX2Zp
bmlzaGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBFd2tfRnJhbWVfTG9hZF9FcnJvciog
ZXJyb3IpOwotdm9pZCBld2tfdmlld19sb2FkX2Vycm9yKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBj
b25zdCBFd2tfRnJhbWVfTG9hZF9FcnJvciogZXJyb3IpOwotdm9pZCBld2tfdmlld19sb2FkX3By
b2dyZXNzX2NoYW5nZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcpOwotdm9pZCBld2tfdmlld19sb2Fk
X3Nob3coRXZhc19PYmplY3QqIGV3a1ZpZXcpOwotdm9pZCBld2tfdmlld19vbmxvYWRfZXZlbnQo
RXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2YXNfT2JqZWN0KiBmcmFtZSk7Ci12b2lkIGV3a192aWV3
X3Jlc3RvcmVfc3RhdGUoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2YXNfT2JqZWN0KiBmcmFtZSk7
Ci1FdmFzX09iamVjdCogZXdrX3ZpZXdfd2luZG93X2NyZWF0ZShFdmFzX09iamVjdCogZXdrVmll
dywgYm9vbCBqYXZhc2NyaXB0LCBjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyogY29yZUZl
YXR1cmVzKTsKLXZvaWQgZXdrX3ZpZXdfd2luZG93X2Nsb3NlKEV2YXNfT2JqZWN0KiBld2tWaWV3
KTsKLQotdm9pZCBld2tfdmlld19tb3VzZV9saW5rX2hvdmVyX2luKEV2YXNfT2JqZWN0KiBld2tW
aWV3LCB2b2lkKiBkYXRhKTsKLXZvaWQgZXdrX3ZpZXdfbW91c2VfbGlua19ob3Zlcl9vdXQoRXZh
c19PYmplY3QqIGV3a1ZpZXcpOwotCi12b2lkIGV3a192aWV3X3Rvb2xiYXJzX3Zpc2libGVfc2V0
KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBib29sIHZpc2libGUpOwotdm9pZCBld2tfdmlld190b29s
YmFyc192aXNpYmxlX2dldChFdmFzX09iamVjdCogZXdrVmlldywgYm9vbCogdmlzaWJsZSk7Ci0K
LXZvaWQgZXdrX3ZpZXdfc3RhdHVzYmFyX3Zpc2libGVfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3
LCBib29sIHZpc2libGUpOwotdm9pZCBld2tfdmlld19zdGF0dXNiYXJfdmlzaWJsZV9nZXQoRXZh
c19PYmplY3QqIGV3a1ZpZXcsIGJvb2wqIHZpc2libGUpOwotdm9pZCBld2tfdmlld19zdGF0dXNi
YXJfdGV4dF9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIqIHRleHQpOwotCi12
b2lkIGV3a192aWV3X3Njcm9sbGJhcnNfdmlzaWJsZV9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcs
IGJvb2wgdmlzaWJsZSk7Ci12b2lkIGV3a192aWV3X3Njcm9sbGJhcnNfdmlzaWJsZV9nZXQoRXZh
c19PYmplY3QqIGV3a1ZpZXcsIGJvb2wqIHZpc2libGUpOwotCi12b2lkIGV3a192aWV3X21lbnVi
YXJfdmlzaWJsZV9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGJvb2wgdmlzaWJsZSk7Ci12b2lk
IGV3a192aWV3X21lbnViYXJfdmlzaWJsZV9nZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGJvb2wq
IHZpc2libGUpOwotCi12b2lkIGV3a192aWV3X3Rvb2x0aXBfdGV4dF9zZXQoRXZhc19PYmplY3Qq
IGV3a1ZpZXcsIGNvbnN0IGNoYXIqIHRleHQpOwotCi12b2lkIGV3a192aWV3X2FkZF9jb25zb2xl
X21lc3NhZ2UoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIqIG1lc3NhZ2UsIHVuc2ln
bmVkIGludCBsaW5lTnVtYmVyLCBjb25zdCBjaGFyKiBzb3VyY2VJRCk7Ci0KLXZvaWQgZXdrX3Zp
ZXdfcnVuX2phdmFzY3JpcHRfYWxlcnQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2YXNfT2JqZWN0
KiBmcmFtZSwgY29uc3QgY2hhciogbWVzc2FnZSk7Ci1ib29sIGV3a192aWV3X3J1bl9qYXZhc2Ny
aXB0X2NvbmZpcm0oRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2YXNfT2JqZWN0KiBmcmFtZSwgY29u
c3QgY2hhciogbWVzc2FnZSk7Ci1ib29sIGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X3Byb21wdChF
dmFzX09iamVjdCogZXdrVmlldywgRXZhc19PYmplY3QqIGZyYW1lLCBjb25zdCBjaGFyKiBtZXNz
YWdlLCBjb25zdCBjaGFyKiBkZWZhdWx0VmFsdWUsIGNoYXIqKiB2YWx1ZSk7Ci1ib29sIGV3a192
aWV3X3Nob3VsZF9pbnRlcnJ1cHRfamF2YXNjcmlwdChFdmFzX09iamVjdCogZXdrVmlldyk7Ci11
aW50NjRfdCBld2tfdmlld19leGNlZWRlZF9kYXRhYmFzZV9xdW90YShFdmFzX09iamVjdCogZXdr
VmlldywgRXZhc19PYmplY3QqIGZyYW1lLCBjb25zdCBjaGFyKiBkYXRhYmFzZU5hbWUsIHVpbnQ2
NF90IGN1cnJlbnRTaXplLCB1aW50NjRfdCBleHBlY3RlZFNpemUpOwotCi1ib29sIGV3a192aWV3
X3J1bl9vcGVuX3BhbmVsKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX09iamVjdCogZnJhbWUs
IGJvb2wgYWxsb3dzTXVsdGlwbGVGaWxlcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFjY2VwdE1J
TUVUeXBlcywgRWluYV9MaXN0Kiogc2VsZWN0ZWRGaWxlbmFtZXMpOwotCi12b2lkIGV3a192aWV3
X3JlcGFpbnQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5
LCBFdmFzX0Nvb3JkIHdpZHRoLCBFdmFzX0Nvb3JkIGhlaWdodCk7Ci12b2lkIGV3a192aWV3X3Nj
cm9sbChFdmFzX09iamVjdCogZXdrVmlldywgRXZhc19Db29yZCBkZWx0YVgsIEV2YXNfQ29vcmQg
ZGVsdGFZLCBFdmFzX0Nvb3JkIHNjcm9sbFgsIEV2YXNfQ29vcmQgc2Nyb2xsWSwgRXZhc19Db29y
ZCBzY3JvbGxXaWR0aCwgRXZhc19Db29yZCBzY3JvbGxIZWlnaHQsIEV2YXNfQ29vcmQgY2VudGVy
WCwgRXZhc19Db29yZCBjZW50ZXJZLCBFdmFzX0Nvb3JkIGNlbnRlclcsIEV2YXNfQ29vcmQgY2Vu
dGVySGVpZ2h0KTsKLVdlYkNvcmU6OlBhZ2UqIGV3a192aWV3X2NvcmVfcGFnZV9nZXQoY29uc3Qg
RXZhc19PYmplY3QqIGV3a1ZpZXcpOwotCi1XVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+
IGV3a192aWV3X2ZyYW1lX2NyZWF0ZShFdmFzX09iamVjdCogZXdrVmlldywgRXZhc19PYmplY3Qq
IGZyYW1lLCBjb25zdCBXVEY6OlN0cmluZyYgbmFtZSwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJF
bGVtZW50KiBvd25lckVsZW1lbnQsIGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCwgY29uc3QgV1RG
OjpTdHJpbmcmIHJlZmVycmVyKTsKLQotV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4g
ZXdrX3ZpZXdfcGx1Z2luX2NyZWF0ZShFdmFzX09iamVjdCogZXdrVmlldywgRXZhc19PYmplY3Qq
IGZyYW1lLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBwbHVnaW5TaXplLCBXZWJDb3JlOjpIVE1M
UGx1Z0luRWxlbWVudCogZWxlbWVudCwgY29uc3QgV2ViQ29yZTo6S1VSTCYgdXJsLCBjb25zdCBX
VEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFdURjo6VmVjdG9yPFdU
Rjo6U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgYm9v
bCBsb2FkTWFudWFsbHkpOwotCi0jaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi12b2lkIGV3
a192aWV3X2NvbG9yX2Nob29zZXJfbmV3KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBXZWJDb3JlOjpD
b2xvckNob29zZXJDbGllbnQqIGNsaWVudCwgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGluaXRpYWxD
b2xvcik7Ci12b2lkIGV3a192aWV3X2NvbG9yX2Nob29zZXJfY2hhbmdlZChFdmFzX09iamVjdCog
ZXdrVmlldywgY29uc3QgV2ViQ29yZTo6Q29sb3ImIG5ld0NvbG9yKTsKLSNlbmRpZgotCi12b2lk
IGV3a192aWV3X3BvcHVwX25ldyhFdmFzX09iamVjdCogZXdrVmlldywgV2ViQ29yZTo6UG9wdXBN
ZW51Q2xpZW50KiBjbGllbnQsIGludCBzZWxlY3RlZCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYg
cmVjdCk7Ci12b2lkIGV3a192aWV3X3ZpZXdwb3J0X2F0dHJpYnV0ZXNfc2V0KEV2YXNfT2JqZWN0
KiBld2tWaWV3LCBjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cyYgYXJndW1lbnRzKTsK
LQotdm9pZCBld2tfdmlld19kb3dubG9hZF9yZXF1ZXN0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBF
d2tfRG93bmxvYWQqIGRvd25sb2FkKTsKLQotdm9pZCBld2tfdmlld19lZGl0b3JfY2xpZW50X2Nv
bnRlbnRzX2NoYW5nZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcpOwotdm9pZCBld2tfdmlld19lZGl0
b3JfY2xpZW50X3NlbGVjdGlvbl9jaGFuZ2VkKEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKK2V4dGVy
biBpbnQgX2V3a19sb2dfZG9tOwogCi1ib29sIGV3a192aWV3X2ZvY3VzX2Nhbl9jeWNsZShFdmFz
X09iamVjdCogZXdrVmlldywgRXdrX0ZvY3VzX0RpcmVjdGlvbiBkaXJlY3Rpb24pOwotdm9pZCBl
d2tfdmlld19mcmFtZV92aWV3X2NyZWF0aW9uX25vdGlmeShFdmFzX09iamVjdCogZXdrVmlldyk7
Ci0KLSNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLXZvaWQgZXdrX3ZpZXdfanNfd2lu
ZG93X29iamVjdF9jbGVhcihFdmFzX09iamVjdCogZXdrVmlldywgRXZhc19PYmplY3QqIGZyYW1l
KTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLXZvaWQgZXdrX3ZpZXdfbmVl
ZF90b3VjaF9ldmVudHNfc2V0KEV2YXNfT2JqZWN0KiwgYm9vbCBuZWVkZWQpOwotYm9vbCBld2tf
dmlld19uZWVkX3RvdWNoX2V2ZW50c19nZXQoY29uc3QgRXZhc19PYmplY3QqKTsKLSNlbmRpZgot
Ci1Fd2tfSGlzdG9yeV9JdGVtICpld2tfaGlzdG9yeV9pdGVtX25ld19mcm9tX2NvcmUoV2ViQ29y
ZTo6SGlzdG9yeUl0ZW0gKmNvcmUpOwotRXdrX0hpc3RvcnkqIGV3a19oaXN0b3J5X25ldyhXZWJD
b3JlOjpCYWNrRm9yd2FyZExpc3RJbXBsKiBoaXN0b3J5KTsKLXZvaWQgZXdrX2hpc3RvcnlfZnJl
ZShFd2tfSGlzdG9yeSogaGlzdG9yeSk7Ci0KLSNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLUV3
a19Db250ZXh0X01lbnUqIGV3a19jb250ZXh0X21lbnVfbmV3KEV2YXNfT2JqZWN0KiB2aWV3LCBX
ZWJDb3JlOjpDb250ZXh0TWVudUNvbnRyb2xsZXIqIGNvbnRyb2xsZXIpOwotYm9vbCBld2tfY29u
dGV4dF9tZW51X2ZyZWUoRXdrX0NvbnRleHRfTWVudSogbWVudSk7Ci12b2lkIGV3a19jb250ZXh0
X21lbnVfaXRlbV9hcHBlbmQoRXdrX0NvbnRleHRfTWVudSogbWVudSwgV2ViQ29yZTo6Q29udGV4
dE1lbnVJdGVtJiBjb3JlKTsKLUV3a19Db250ZXh0X01lbnUqIGV3a19jb250ZXh0X21lbnVfY3Vz
dG9taXplKEV3a19Db250ZXh0X01lbnUqIG1lbnUpOwotdm9pZCBld2tfY29udGV4dF9tZW51X3No
b3coRXdrX0NvbnRleHRfTWVudSogbWVudSk7Ci0jZW5kaWYKLQotY29uc3QgRWluYV9SZWN0YW5n
bGUqIGV3a192aWV3X3JlcGFpbnRzX3BvcChFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYsIHNp
emVfdCogY291bnQpOwotY29uc3QgRXdrX1Njcm9sbF9SZXF1ZXN0KiBld2tfdmlld19zY3JvbGxf
cmVxdWVzdHNfZ2V0KGNvbnN0IEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdiwgc2l6ZV90KiBj
b3VudCk7Ci0KLXZvaWQgZXdrX3ZpZXdfcmVwYWludF9hZGQoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRh
KiBwcml2LCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwgRXZhc19Db29yZCB3aWR0aCwgRXZh
c19Db29yZCBoZWlnaHQpOwotCi12b2lkIGV3a192aWV3X2xheW91dF9pZl9uZWVkZWRfcmVjdXJz
aXZlKEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdik7Ci0KLUV3a19XaW5kb3dfRmVhdHVyZXMq
IGV3a193aW5kb3dfZmVhdHVyZXNfbmV3X2Zyb21fY29yZShjb25zdCBXZWJDb3JlOjpXaW5kb3dG
ZWF0dXJlcyogY29yZSk7Ci0KLUV2YXNfT2JqZWN0KiBld2tfZnJhbWVfYWRkKEV2YXMqIGNhbnZh
cyk7Ci1ib29sIGV3a19mcmFtZV9pbml0KEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgRXZhc19PYmpl
Y3QqIHZpZXcsIFdlYkNvcmU6OkZyYW1lKiBmcmFtZSk7Ci1ib29sIGV3a19mcmFtZV9jaGlsZF9h
ZGQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+
IGNoaWxkLCBjb25zdCBXVEY6OlN0cmluZyYgbmFtZSwgY29uc3QgV2ViQ29yZTo6S1VSTCYgdXJs
LCBjb25zdCBXVEY6OlN0cmluZyYgcmVmZXJyZXIpOwotdm9pZCBld2tfZnJhbWVfdmlld19zZXQo
RXZhc19PYmplY3QqIGV3a0ZyYW1lLCBFdmFzX09iamVjdCogbmV3UGFyZW50KTsKLQotdm9pZCBl
d2tfZnJhbWVfY29yZV9nb25lKEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7Ci0KLXZvaWQgZXdrX2Zy
YW1lX2xvYWRfY29tbWl0dGVkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7Ci12b2lkIGV3a19mcmFt
ZV9sb2FkX3N0YXJ0ZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKLXZvaWQgZXdrX2ZyYW1lX2xv
YWRfcHJvdmlzaW9uYWwoRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKLXZvaWQgZXdrX2ZyYW1lX2xv
YWRfZmlyc3RsYXlvdXRfZmluaXNoZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKLXZvaWQgZXdr
X2ZyYW1lX2xvYWRfZmlyc3RsYXlvdXRfbm9uZW1wdHlfZmluaXNoZWQoRXZhc19PYmplY3QqIGV3
a0ZyYW1lKTsKLXZvaWQgZXdrX2ZyYW1lX2xvYWRfZG9jdW1lbnRfZmluaXNoZWQoRXZhc19PYmpl
Y3QqIGV3a0ZyYW1lKTsKLXZvaWQgZXdrX2ZyYW1lX2xvYWRfZmluaXNoZWQoRXZhc19PYmplY3Qq
IGV3a0ZyYW1lLCBjb25zdCBjaGFyKiBlcnJvckRvbWFpbiwgaW50IGVycm9yQ29kZSwgYm9vbCBp
c0NhbmNlbGxhdGlvbiwgY29uc3QgY2hhciogZXJyb3JEZXNjcmlwdGlvbiwgY29uc3QgY2hhciog
ZmFpbGluZ1VybCk7Ci12b2lkIGV3a19mcmFtZV9sb2FkX3Jlc291cmNlX2ZpbmlzaGVkKEV2YXNf
T2JqZWN0KiBld2tGcmFtZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKLXZvaWQgZXdrX2Zy
YW1lX2xvYWRfcmVzb3VyY2VfZmFpbGVkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgRXdrX0ZyYW1l
X0xvYWRfRXJyb3IqIGVycm9yKTsKLXZvaWQgZXdrX2ZyYW1lX2xvYWRfZXJyb3IoRXZhc19PYmpl
Y3QqIGV3a0ZyYW1lLCBjb25zdCBjaGFyKiBlcnJvckRvbWFpbiwgaW50IGVycm9yQ29kZSwgYm9v
bCBpc0NhbmNlbGxhdGlvbiwgY29uc3QgY2hhciogZXJyb3JEZXNjcmlwdGlvbiwgY29uc3QgY2hh
ciogZmFpbGluZ1VybCk7Ci12b2lkIGV3a19mcmFtZV9sb2FkX3Byb2dyZXNzX2NoYW5nZWQoRXZh
c19PYmplY3QqIGV3a0ZyYW1lKTsKLQotdm9pZCBld2tfZnJhbWVfcmVkaXJlY3RfY2FuY2VsbGVk
KEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7Ci12b2lkIGV3a19mcmFtZV9yZWRpcmVjdF9wcm92aXNp
b25hbF9sb2FkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7Ci12b2lkIGV3a19mcmFtZV9yZWRpcmVj
dF9yZXF1ZXN0ZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjb25zdCBjaGFyKiB1cmwpOwotdm9p
ZCBld2tfZnJhbWVfcmVxdWVzdF93aWxsX3NlbmQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBFd2tf
RnJhbWVfUmVzb3VyY2VfTWVzc2FnZXMqIG1lc3NhZ2VzKTsKLXZvaWQgZXdrX2ZyYW1lX3JlcXVl
c3RfYXNzaWduX2lkZW50aWZpZXIoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjb25zdCBFd2tfRnJh
bWVfUmVzb3VyY2VfUmVxdWVzdCogcmVxdWVzdCk7Ci12b2lkIGV3a19mcmFtZV9yZXNwb25zZV9y
ZWNlaXZlZChFdmFzX09iamVjdCogZXdrRnJhbWUsIEV3a19GcmFtZV9SZXNvdXJjZV9SZXNwb25z
ZSogcmVzcG9uc2UpOwotdm9pZCBld2tfZnJhbWVfdmlld19zdGF0ZV9zYXZlKEV2YXNfT2JqZWN0
KiBld2tGcmFtZSwgV2ViQ29yZTo6SGlzdG9yeUl0ZW0qIGl0ZW0pOwotCi12b2lkIGV3a19mcmFt
ZV9kaWRfcGVyZm9ybV9maXJzdF9uYXZpZ2F0aW9uKEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7Ci0K
LXZvaWQgZXdrX2ZyYW1lX2NvbnRlbnRzX3NpemVfY2hhbmdlZChFdmFzX09iamVjdCogZXdrRnJh
bWUsIEV2YXNfQ29vcmQgd2lkdGgsIEV2YXNfQ29vcmQgaGVpZ2h0KTsKLXZvaWQgZXdrX2ZyYW1l
X3RpdGxlX3NldChFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IGNoYXIqIHRpdGxlKTsKLQot
dm9pZCBld2tfZnJhbWVfdmlld19jcmVhdGVfZm9yX3ZpZXcoRXZhc19PYmplY3QqIGV3a0ZyYW1l
LCBFdmFzX09iamVjdCogdmlldyk7Ci1ib29sIGV3a19mcmFtZV91cmlfY2hhbmdlZChFdmFzX09i
amVjdCogZXdrRnJhbWUpOwotdm9pZCBld2tfZnJhbWVfZm9yY2VfbGF5b3V0KEV2YXNfT2JqZWN0
KiBld2tGcmFtZSk7Ci12b2lkIGV3a19mcmFtZV9pY29uX2NoYW5nZWQoRXZhc19PYmplY3QqIGV3
a0ZyYW1lKTsKLQotV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gZXdrX2ZyYW1lX3Bs
dWdpbl9jcmVhdGUoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiBwbHVnaW5TaXplLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCogZWxlbWVudCwgY29uc3Qg
V2ViQ29yZTo6S1VSTCYgdXJsLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFt
TmFtZXMsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGNvbnN0
IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBsb2FkTWFudWFsbHkpOwotCi1ib29sIGV3a192
aWV3X25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tf
RnJhbWVfUmVzb3VyY2VfUmVxdWVzdCogcmVxdWVzdCk7Ci0KLXZvaWQgZXdrX3ZpZXdfY29udGVu
dHNfc2l6ZV9jaGFuZ2VkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX0Nvb3JkIHdpZHRoLCBF
dmFzX0Nvb3JkIGhlaWdodCk7Ci0KLVdlYkNvcmU6OkZsb2F0UmVjdCBld2tfdmlld19wYWdlX3Jl
Y3RfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKLQotY29uc3QgY2hhciogZXdrX3Nl
dHRpbmdzX2RlZmF1bHRfdXNlcl9hZ2VudF9nZXQoKTsKLQotdm9pZCBld2tfZnJhbWVfZWRpdG9y
X2NsaWVudF9jb250ZW50c19jaGFuZ2VkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7Ci12b2lkIGV3
a19mcmFtZV9lZGl0b3JfY2xpZW50X3NlbGVjdGlvbl9jaGFuZ2VkKEV2YXNfT2JqZWN0KiBld2tG
cmFtZSk7Ci0KLXZvaWQgZXdrX2ZyYW1lX21peGVkX2NvbnRlbnRfZGlzcGxheWVkX3NldChFdmFz
X09iamVjdCogZXdrRnJhbWUsIGJvb2wgaGFzRGlzcGxheWVkKTsKLXZvaWQgZXdrX2ZyYW1lX21p
eGVkX2NvbnRlbnRfcnVuX3NldChFdmFzX09iamVjdCogZXdrRnJhbWUsIGJvb2wgaGFzUnVuKTsK
LXZvaWQgZXdrX3ZpZXdfbWl4ZWRfY29udGVudF9kaXNwbGF5ZWRfc2V0KEV2YXNfT2JqZWN0KiBl
d2tWaWV3LCBib29sIGhhc0Rpc3BsYXllZCk7Ci12b2lkIGV3a192aWV3X21peGVkX2NvbnRlbnRf
cnVuX3NldChFdmFzX09iamVjdCogZXdrVmlldywgYm9vbCBoYXNSdW4pOwotdm9pZCBld2tfZnJh
bWVfeHNzX2RldGVjdGVkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgY29uc3QgRXdrX0ZyYW1lX1hz
c19Ob3RpZmljYXRpb24qIHhzc0luZm8pOwotCi1Fd2tfU2VjdXJpdHlfT3JpZ2luKiBld2tfc2Vj
dXJpdHlfb3JpZ2luX25ldyhXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiogb3JpZ2luKTsKLQotI2lm
IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLWJvb2wgZXdrX3ZpZXdfYWNjZWxlcmF0ZWRf
Y29tcG9zaXRpbmdfb2JqZWN0X2NyZWF0ZShFdmFzX09iamVjdCogZXdrVmlldywgRXZhc19OYXRp
dmVfU3VyZmFjZSogbmF0aXZlU3VyZmFjZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCk7
Ci1XZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRCogZXdrX3ZpZXdfYWNjZWxlcmF0ZWRfY29tcG9z
aXRpbmdfY29udGV4dF9nZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcpOwotI2VuZGlmCisjZGVmaW5l
IENSSVRJQ0FMKC4uLikgRUlOQV9MT0dfRE9NX0NSSVQoX2V3a19sb2dfZG9tLCBfX1ZBX0FSR1Nf
XykKKyNkZWZpbmUgRVJSKC4uLikgRUlOQV9MT0dfRE9NX0VSUihfZXdrX2xvZ19kb20sIF9fVkFf
QVJHU19fKQorI2RlZmluZSBXUk4oLi4uKSBFSU5BX0xPR19ET01fV0FSTihfZXdrX2xvZ19kb20s
IF9fVkFfQVJHU19fKQorI2RlZmluZSBJTkYoLi4uKSBFSU5BX0xPR19ET01fSU5GTyhfZXdrX2xv
Z19kb20sIF9fVkFfQVJHU19fKQorI2RlZmluZSBEQkcoLi4uKSBFSU5BX0xPR19ET01fREJHKF9l
d2tfbG9nX2RvbSwgX19WQV9BUkdTX18pCiAKICNlbmRpZiAvLyBld2tfcHJpdmF0ZV9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3NlY3VyaXR5X29yaWdpbl9wcml2YXRl
LmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3NlY3VyaXR5X29yaWdpbl9wcml2YXRlLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2I2MTU3ZQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfc2VjdXJpdHlfb3JpZ2luX3ByaXZhdGUu
aApAQCAtMCwwICsxLDMxIEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFByb0ZV
U0lPTiBlbWJlZGRlZCBzeXN0ZW1zCisgICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTIgU2Ftc3Vu
ZyBFbGVjdHJvbmljcworCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
CisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KKyovCisKKyNpZm5kZWYgZXdrX3NlY3VyaXR5X29yaWdpbl9wcml2YXRlX2gK
KyNkZWZpbmUgZXdrX3NlY3VyaXR5X29yaWdpbl9wcml2YXRlX2gKKworLy8gZm9yd2FyZCBkZWNs
YXJhdGlvbnMKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFNlY3VyaXR5T3JpZ2luOworfQor
CitFd2tfU2VjdXJpdHlfT3JpZ2luKiBld2tfc2VjdXJpdHlfb3JpZ2luX25ldyhXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbiogb3JpZ2luKTsKKworI2VuZGlmIC8vIGV3a19zZWN1cml0eV9vcmlnaW5f
cHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3NldHRpbmdz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfc2V0dGluZ3MuY3BwCmluZGV4IDg0Mjkz
MGEuLjNiYWM2YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfc2V0dGlu
Z3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfc2V0dGluZ3MuY3BwCkBAIC0z
NCw5ICszNCw4IEBACiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKICNpbmNsdWRlICJQYWdlQ2Fj
aGUuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgotI2luY2x1ZGUgImV3a19sb2dnaW5nLmgiCiAj
aW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKLSNpbmNsdWRlICJld2tfdXRpbC5oIgorI2luY2x1ZGUg
ImV3a191dGlsX3ByaXZhdGUuaCIKICNpbmNsdWRlIDxFaW5hLmg+CiAjaW5jbHVkZSA8ZWluYV9z
YWZldHlfY2hlY2tzLmg+CiAjaW5jbHVkZSA8ZXJybm8uaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfc2V0dGluZ3NfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a19zZXR0aW5nc19wcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uNGQ3ZWU1OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfc2V0dGluZ3NfcHJpdmF0ZS5oCkBAIC0wLDAgKzEsMjYgQEAKKy8qCisgICAgQ29weXJpZ2h0
IChDKSAyMDA5LTIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMKKyAgICBDb3B5cmlnaHQg
KEMpIDIwMDktMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAg
ICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisK
KyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAor
ICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lmbmRlZiBld2tfc2V0dGlu
Z3NfcHJpdmF0ZV9oCisjZGVmaW5lIGV3a19zZXR0aW5nc19wcml2YXRlX2gKKworY29uc3QgY2hh
ciogZXdrX3NldHRpbmdzX2RlZmF1bHRfdXNlcl9hZ2VudF9nZXQoKTsKKworI2VuZGlmIC8vIGV3
a19zZXR0aW5nc19wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfdGlsZWRfYmFja2luZ19zdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3Rp
bGVkX2JhY2tpbmdfc3RvcmUuY3BwCmluZGV4IDdjZDQzZWQuLjkwMzQ5OGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9iYWNraW5nX3N0b3JlLmNwcApAQCAtMTks
MTEgKzE5LDExIEBACiAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiZXdrX3Rp
bGVkX2JhY2tpbmdfc3RvcmUuaCIKIAogI2luY2x1ZGUgImV3a19wcml2YXRlLmgiCi0jaW5jbHVk
ZSAiZXdrX3RpbGVkX21hdHJpeC5oIgotI2luY2x1ZGUgImV3a190aWxlZF9wcml2YXRlLmgiCisj
aW5jbHVkZSAiZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3
a190aWxlZF9tYXRyaXhfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a190aWxlZF9tb2RlbF9wcml2
YXRlLmgiCiAjaW5jbHVkZSA8RWNvcmUuaD4KICNpbmNsdWRlIDxFaW5hLmg+CiAjaW5jbHVkZSA8
YWxnb3JpdGhtPgpAQCAtMTE2LDcgKzExNiw2IEBAIHN0cnVjdCBfRXdrX1RpbGVkX0JhY2tpbmdf
U3RvcmVfRGF0YSB7CiB9OwogCiBzdGF0aWMgRXZhc19TbWFydF9DbGFzcyBfcGFyZW50X3NjID0g
RVZBU19TTUFSVF9DTEFTU19JTklUX05VTEw7Ci1pbnQgX2V3a190aWxlZF9sb2dfZG9tID0gLTE7
CiAKICNkZWZpbmUgUFJJVl9EQVRBX0dFVF9PUl9SRVRVUk4ob2JqLCBwdHIsIC4uLikgXAogICAg
IEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX0RhdGEqIHB0ciA9IHN0YXRpY19jYXN0PEV3a19UaWxl
ZF9CYWNraW5nX1N0b3JlX0RhdGEqPihldmFzX29iamVjdF9zbWFydF9kYXRhX2dldChvYmopKTsg
XApAQCAtMTM4Nyw5ICsxMzg2LDYgQEAgRXZhc19PYmplY3QqIGV3a190aWxlZF9iYWNraW5nX3N0
b3JlX2FkZChFdmFzKiBjYW52YXMpCiB7CiAgICAgc3RhdGljIEV2YXNfU21hcnQqIHNtYXJ0ID0g
MDsKIAotICAgIGlmIChfZXdrX3RpbGVkX2xvZ19kb20gPCAwKQotICAgICAgICBfZXdrX3RpbGVk
X2xvZ19kb20gPSBlaW5hX2xvZ19kb21haW5fcmVnaXN0ZXIoIkV3a19UaWxlZF9CYWNraW5nX1N0
b3JlIiwgMCk7Ci0KICAgICBpZiAoIXNtYXJ0KSB7CiAgICAgICAgIHN0YXRpYyBFdmFzX1NtYXJ0
X0NsYXNzIHNjID0KICAgICAgICAgICAgIEVWQVNfU01BUlRfQ0xBU1NfSU5JVF9OQU1FX1ZFUlNJ
T04oIkV3a19UaWxlZF9CYWNraW5nX1N0b3JlIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA5ZTVhMDQ4Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRf
YmFja2luZ19zdG9yZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTE5ICswLDAgQEAKLS8qCi0gICAg
Q29weXJpZ2h0IChDKSAyMDA5LTIwMTAgU2Ftc3VuZyBFbGVjdHJvbmljcwotICAgIENvcHlyaWdo
dCAoQykgMjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCi0KLSAgICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0g
ICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAg
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI2lmbmRlZiBl
d2tfdGlsZWRfYmFja2luZ19zdG9yZV9oCi0jZGVmaW5lIGV3a190aWxlZF9iYWNraW5nX3N0b3Jl
X2gKLQotI2luY2x1ZGUgIkVXZWJLaXQuaCIKLQotLyogRW5hYmxlIGFjY291bnRpbmcgb2YgcmVu
ZGVyIHRpbWUgaW4gdGlsZSBzdGF0aXN0aWNzICovCi0vLyAjZGVmaW5lIFRJTEVfU1RBVFNfQUND
T1VOVF9SRU5ERVJfVElNRQotCi0KLS8qIElmIGRlZmluZSBld2sgd2lsbCBkbyBtb3JlIGFjY291
bnRpbmcgdG8gY2hlY2sgZm9yIG1lbW9yeSBsZWFrcwotICogdHJ5ICJraWxsIC1VU1IxICRQSUQi
IHRvIGdldCBpbnN0YW50YW5lb3VzIGRlYnVnCi0gKiB0cnkgImtpbGwgLVVTUjIgJFBJRCIgdG8g
Z2V0IGluc3RhbnRhbmVvdXMgZGVidWcgYW5kIGZvcmNlIGZsdXNoIG9mIGNhY2hlCi0gKi8KLSN1
bmRlZiBERUJVR19NRU1fTEVBS1MKLQotY29uc3QgaW50IGRlZmF1bHRUaWxlV2lkdGggPSAyNTY7
Ci1jb25zdCBpbnQgZGVmYXVsdFRpbGVIZWlndGggPSAyNTY7Ci0KLWNvbnN0IGZsb2F0IHpvb21T
dGVwTWluaW11bSA9IDAuMDE7Ci0KLSNkZWZpbmUgVElMRV9TSVpFX0FUX1pPT00oU0laRSwgWk9P
TSkgKChpbnQpcm91bmRmKChTSVpFKSAqIChaT09NKSkpCi0jZGVmaW5lIFRJTEVfWk9PTV9BVF9T
SVpFKFNJWkUsIE9SSUdfVElMRSkgKChmbG9hdCkoU0laRSkgLyAoZmxvYXQpKE9SSUdfVElMRSkp
Ci0jZGVmaW5lIFJPVU5ERURfWk9PTShTSVpFLCBaT09NKSAoKGZsb2F0KShTSVpFKSAvIChmbG9h
dCkoKChpbnQpcm91bmRmKChTSVpFKSAvIChaT09NKSkpKSkKLQotI2luY2x1ZGUgPEV2YXMuaD4K
LSNpbmNsdWRlIDxjYWlyby5oPgotCi10eXBlZGVmIHN0cnVjdCBfRXdrX1RpbGUgICAgICAgICAg
ICAgICAgICAgICBFd2tfVGlsZTsKLXR5cGVkZWYgc3RydWN0IF9Fd2tfVGlsZV9TdGF0cyAgICAg
ICAgICAgICAgIEV3a19UaWxlX1N0YXRzOwotdHlwZWRlZiBzdHJ1Y3QgX0V3a19UaWxlX01hdHJp
eCAgICAgICAgICAgICAgRXdrX1RpbGVfTWF0cml4OwotCi1zdHJ1Y3QgX0V3a19UaWxlX1N0YXRz
IHsKLSAgICBkb3VibGUgbGFzdF91c2VkOyAgICAgICAgLyoqPCB0aW1lIG9mIGxhc3QgdXNlICov
Ci0jaWZkZWYgVElMRV9TVEFUU19BQ0NPVU5UX1JFTkRFUl9USU1FCi0gICAgZG91YmxlIHJlbmRl
cl90aW1lOyAgICAgIC8qKjwgYW1vdW50IG9mIHRpbWUgdGhpcyB0aWxlIHRvb2sgdG8gcmVuZGVy
ICovCi0jZW5kaWYKLSAgICB1bnNpZ25lZCBpbnQgYXJlYTsgICAgICAgLyoqPCBjYWNoZSBmb3Ig
KHcgKiBoKSAqLwotICAgIHVuc2lnbmVkIGludCBtaXNzZXM7ICAgICAvKio8IG51bWJlciBvZiB0
aW1lcyBpdCBiZWNhbWUgZGlydHkgYnV0IG5vdAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKiByZXBhaW50ZWQgYXQgYWxsIHNpbmNlIGl0IHdhcyBub3QgdmlzaWJsZS4KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICovCi0gICAgRWluYV9Cb29sIGZ1bGxfdXBkYXRlIDogMTsg
LyoqPCB0aWxlIHJlcXVpcmVzIGZ1bGwgc2l6ZSB1cGRhdGUgKi8KLX07Ci0KLXN0cnVjdCBfRXdr
X1RpbGUgewotICAgIEVpbmFfVGlsZXIgKnVwZGF0ZXM7ICAgIC8qKjwgdXBkYXRlZC9kaXJ0eSBh
cmVhcyAqLwotICAgIEV3a19UaWxlX1N0YXRzIHN0YXRzOyAgICAgICAvKio8IHRpbGUgdXNhZ2Ug
c3RhdGlzdGljcyAqLwotICAgIHVuc2lnbmVkIGxvbmcgY29sdW1uLCByb3c7IC8qKjwgdGlsZSB0
aWxlIHBvc2l0aW9uICovCi0gICAgRXZhc19Db29yZCB4LCB5OyAgICAgICAgLyoqPCB0aWxlIGNv
b3JkaW5hdGUgcG9zaXRpb24gKi8KLQotICAgIC8qKiBOZXZlciBldmVyIGNoYW5nZSB0aG9zZSBh
ZnRlciB0aWxlIGlzIGNyZWF0ZWQgKHJlc3BlY3QgY29uc3QhKSAqLwotICAgIGNvbnN0IEV2YXNf
Q29vcmQgd2lkdGgsIGhlaWdodDsgICAgICAgIC8qKjwgdGlsZSBzaXplIChzZWUgVElMRV9TSVpF
X0FUX1pPT00oKSkgKi8KLSAgICBjb25zdCBFdmFzX0NvbG9yc3BhY2UgY3NwYWNlOyAvKio8IGNv
bG9yc3BhY2UgKi8KLSAgICBjb25zdCBmbG9hdCB6b29tOyAgICAgICAgICAgICAvKio8IHpvb20g
bGV2ZWwgY29udGVudHMgd2VyZSByZW5kZXJlZCBhdCAqLwotICAgIGNvbnN0IHNpemVfdCBieXRl
czsgICAgICAgICAgIC8qKjwgYnl0ZXMgdXNlZCBpbiBwaXhlbHMuIGtlZXAKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKiBiZWZvcmUgcGl4ZWxzIHRvIGd1YXJhbnRlZQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGFsaWduZW1lbnQhCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICovCi0gICAgaW50IHZpc2libGU7ICAgICAgICAgICAg
ICAgICAgLyoqPCB2aXNpYmlsaXR5IGNvdW50ZXIgb2YgdGhpcyB0aWxlICovCi0gICAgRXZhc19P
YmplY3QgKmltYWdlOyAgICAgICAgICAgLyoqPCBFdmFzIEltYWdlLCB0aGUgdGlsZSB0byBiZSBy
ZW5kZXJlZCAqLwotfTsKLQotI2luY2x1ZGUgImV3a190aWxlZF9tYXRyaXguaCIKLSNpbmNsdWRl
ICJld2tfdGlsZWRfbW9kZWwuaCIKLQotLyogdmlldyAqLwotRXZhc19PYmplY3QgKmV3a190aWxl
ZF9iYWNraW5nX3N0b3JlX2FkZChFdmFzICplKTsKLQotdm9pZCBld2tfdGlsZWRfYmFja2luZ19z
dG9yZV9yZW5kZXJfY2Jfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgKCpjYikodm9pZCAq
ZGF0YSwgRXdrX1RpbGUgKnQsIGNvbnN0IEVpbmFfUmVjdGFuZ2xlICphcmVhKSwgY29uc3Qgdm9p
ZCAqZGF0YSk7Ci0KLUVpbmFfQm9vbCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9zY3JvbGxfZnVs
bF9vZmZzZXRfc2V0KEV2YXNfT2JqZWN0ICpvLCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSk7
Ci1FaW5hX0Jvb2wgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc2Nyb2xsX2Z1bGxfb2Zmc2V0X2Fk
ZChFdmFzX09iamVjdCAqbywgRXZhc19Db29yZCBkeCwgRXZhc19Db29yZCBkeSk7Ci1FaW5hX0Jv
b2wgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc2Nyb2xsX2lubmVyX29mZnNldF9hZGQoRXZhc19P
YmplY3QgKm8sIEV2YXNfQ29vcmQgZHgsIEV2YXNfQ29vcmQgZHksIEV2YXNfQ29vcmQgeCwgRXZh
c19Db29yZCB5LCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29vcmQgaCk7Ci0KLUVpbmFfQm9vbCBld2tf
dGlsZWRfYmFja2luZ19zdG9yZV96b29tX3NldChFdmFzX09iamVjdCAqbywgZmxvYXQgKnpvb20s
IEV2YXNfQ29vcmQgY3gsIEV2YXNfQ29vcmQgY3ksIEV2YXNfQ29vcmQgKm9mZngsIEV2YXNfQ29v
cmQgKm9mZnkpOwotRWluYV9Cb29sIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3pvb21fd2Vha19z
ZXQoRXZhc19PYmplY3QgKm8sIGZsb2F0IHpvb20sIEV2YXNfQ29vcmQgY3gsIEV2YXNfQ29vcmQg
Y3kpOwotdm9pZCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9maXhfb2Zmc2V0cyhFdmFzX09iamVj
dCAqbywgRXZhc19Db29yZCB3LCBFdmFzX0Nvb3JkIGgpOwotdm9pZCBld2tfdGlsZWRfYmFja2lu
Z19zdG9yZV96b29tX3dlYWtfc21vb3RoX3NjYWxlX3NldChFdmFzX09iamVjdCAqbywgRWluYV9C
b29sIHNtb290aF9zY2FsZSk7Ci12b2lkIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX2FscGhhX3Nl
dChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGhhc19hbHBoYSk7Ci1FaW5hX0Jvb2wgZXdrX3Rp
bGVkX2JhY2tpbmdfc3RvcmVfdXBkYXRlKEV2YXNfT2JqZWN0ICpvLCBjb25zdCBFaW5hX1JlY3Rh
bmdsZSAqdXBkYXRlKTsKLXZvaWQgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdXBkYXRlc19wcm9j
ZXNzX3ByZV9zZXQoRXZhc19PYmplY3QgKm8sIHZvaWQqKCpjYikodm9pZCAqZGF0YSwgRXZhc19P
YmplY3QgKm8pLCBjb25zdCB2b2lkICpkYXRhKTsKLXZvaWQgZXdrX3RpbGVkX2JhY2tpbmdfc3Rv
cmVfdXBkYXRlc19wcm9jZXNzX3Bvc3Rfc2V0KEV2YXNfT2JqZWN0ICpvLCB2b2lkKigqY2IpKHZv
aWQgKmRhdGEsIHZvaWQgKnByZV9kYXRhLCBFdmFzX09iamVjdCAqbyksIGNvbnN0IHZvaWQgKmRh
dGEpOwotdm9pZCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV91cGRhdGVzX3Byb2Nlc3MoRXZhc19P
YmplY3QgKm8pOwotdm9pZCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV91cGRhdGVzX2NsZWFyKEV2
YXNfT2JqZWN0ICpvKTsKLXZvaWQgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfY29udGVudHNfcmVz
aXplKEV2YXNfT2JqZWN0ICpvLCBFdmFzX0Nvb3JkIHdpZHRoLCBFdmFzX0Nvb3JkIGhlaWdodCk7
Ci12b2lkIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX2Rpc2FibGVkX3VwZGF0ZV9zZXQoRXZhc19P
YmplY3QgKm8sIEVpbmFfQm9vbCB2YWx1ZSk7Ci12b2lkIGV3a190aWxlZF9iYWNraW5nX3N0b3Jl
X2ZsdXNoKEV2YXNfT2JqZWN0ICpvKTsKLXZvaWQgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfZW5h
YmxlX3NjYWxlX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIHZhbHVlKTsKLQotRXdrX1Rp
bGVfVW51c2VkX0NhY2hlICpld2tfdGlsZWRfYmFja2luZ19zdG9yZV90aWxlX3VudXNlZF9jYWNo
ZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwotdm9pZCBld2tfdGlsZWRfYmFja2luZ19zdG9y
ZV90aWxlX3VudXNlZF9jYWNoZV9zZXQoRXZhc19PYmplY3QgKm8sIEV3a19UaWxlX1VudXNlZF9D
YWNoZSAqdHVjKTsKLQotRWluYV9Cb29sIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5k
ZXJfcmVnaW9uKEV2YXNfT2JqZWN0ICpvLCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwgRXZh
c19Db29yZCB3LCBFdmFzX0Nvb3JkIGgsIGZsb2F0IHpvb20pOwotRWluYV9Cb29sIGV3a190aWxl
ZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfcmVsYXRpdmVfcmFkaXVzKEV2YXNfT2JqZWN0ICpv
LCB1bnNpZ25lZCBpbnQgbiwgZmxvYXQgem9vbSk7Ci1FaW5hX0Jvb2wgZXdrX3RpbGVkX2JhY2tp
bmdfc3RvcmVfcHJlX3JlbmRlcl9zcGlyYWxfcXVldWUoRXZhc19PYmplY3QgKm8sIEVpbmFfUmVj
dGFuZ2xlKiB2aWV3X3JlY3QsIEVpbmFfUmVjdGFuZ2xlICpyZW5kZXJfcmVjdCwgaW50IG1heF9t
ZW1vcnksIGZsb2F0IHpvb20pOwotdm9pZCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVu
ZGVyX2NhbmNlbChFdmFzX09iamVjdCAqbyk7Ci0KLUVpbmFfQm9vbCBld2tfdGlsZWRfYmFja2lu
Z19zdG9yZV9kaXNhYmxlX3JlbmRlcihFdmFzX09iamVjdCAqbyk7Ci1FaW5hX0Jvb2wgZXdrX3Rp
bGVkX2JhY2tpbmdfc3RvcmVfZW5hYmxlX3JlbmRlcihFdmFzX09iamVjdCAqbyk7Ci0jZW5kaWYg
Ly8gZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQv
ZWZsL2V3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uNDM1YWM3YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcml2YXRlLmgKQEAgLTAsMCAr
MSwxMTUgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgU2Ftc3VuZyBFbGVjdHJv
bmljcworICAgIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0
ZW1zCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgorKi8KKworI2lmbmRlZiBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcml2YXRlX2gKKyNkZWZp
bmUgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJpdmF0ZV9oCisKKyNpbmNsdWRlICJFV2ViS2l0
LmgiCisjaW5jbHVkZSA8RXZhcy5oPgorI2luY2x1ZGUgPGNhaXJvLmg+CisKKy8qIEVuYWJsZSBh
Y2NvdW50aW5nIG9mIHJlbmRlciB0aW1lIGluIHRpbGUgc3RhdGlzdGljcyAqLworLy8gI2RlZmlu
ZSBUSUxFX1NUQVRTX0FDQ09VTlRfUkVOREVSX1RJTUUKKworLyogSWYgZGVmaW5lIGV3ayB3aWxs
IGRvIG1vcmUgYWNjb3VudGluZyB0byBjaGVjayBmb3IgbWVtb3J5IGxlYWtzCisgKiB0cnkgImtp
bGwgLVVTUjEgJFBJRCIgdG8gZ2V0IGluc3RhbnRhbmVvdXMgZGVidWcKKyAqIHRyeSAia2lsbCAt
VVNSMiAkUElEIiB0byBnZXQgaW5zdGFudGFuZW91cyBkZWJ1ZyBhbmQgZm9yY2UgZmx1c2ggb2Yg
Y2FjaGUKKyAqLworI3VuZGVmIERFQlVHX01FTV9MRUFLUworCitjb25zdCBpbnQgZGVmYXVsdFRp
bGVXaWR0aCA9IDI1NjsKK2NvbnN0IGludCBkZWZhdWx0VGlsZUhlaWd0aCA9IDI1NjsKKworY29u
c3QgZmxvYXQgem9vbVN0ZXBNaW5pbXVtID0gMC4wMTsKKworI2RlZmluZSBUSUxFX1NJWkVfQVRf
Wk9PTShTSVpFLCBaT09NKSAoKGludClyb3VuZGYoKFNJWkUpICogKFpPT00pKSkKKyNkZWZpbmUg
VElMRV9aT09NX0FUX1NJWkUoU0laRSwgT1JJR19USUxFKSAoKGZsb2F0KShTSVpFKSAvIChmbG9h
dCkoT1JJR19USUxFKSkKKyNkZWZpbmUgUk9VTkRFRF9aT09NKFNJWkUsIFpPT00pICgoZmxvYXQp
KFNJWkUpIC8gKGZsb2F0KSgoKGludClyb3VuZGYoKFNJWkUpIC8gKFpPT00pKSkpKQorCit0eXBl
ZGVmIHN0cnVjdCBfRXdrX1RpbGUgICAgICAgICAgICAgICAgICAgICBFd2tfVGlsZTsKK3R5cGVk
ZWYgc3RydWN0IF9Fd2tfVGlsZV9TdGF0cyAgICAgICAgICAgICAgIEV3a19UaWxlX1N0YXRzOwor
dHlwZWRlZiBzdHJ1Y3QgX0V3a19UaWxlX01hdHJpeCAgICAgICAgICAgICAgRXdrX1RpbGVfTWF0
cml4OworCitzdHJ1Y3QgX0V3a19UaWxlX1N0YXRzIHsKKyAgICBkb3VibGUgbGFzdF91c2VkOyAg
ICAgICAgLyoqPCB0aW1lIG9mIGxhc3QgdXNlICovCisjaWZkZWYgVElMRV9TVEFUU19BQ0NPVU5U
X1JFTkRFUl9USU1FCisgICAgZG91YmxlIHJlbmRlcl90aW1lOyAgICAgIC8qKjwgYW1vdW50IG9m
IHRpbWUgdGhpcyB0aWxlIHRvb2sgdG8gcmVuZGVyICovCisjZW5kaWYKKyAgICB1bnNpZ25lZCBp
bnQgYXJlYTsgICAgICAgLyoqPCBjYWNoZSBmb3IgKHcgKiBoKSAqLworICAgIHVuc2lnbmVkIGlu
dCBtaXNzZXM7ICAgICAvKio8IG51bWJlciBvZiB0aW1lcyBpdCBiZWNhbWUgZGlydHkgYnV0IG5v
dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiByZXBhaW50ZWQgYXQgYWxsIHNpbmNl
IGl0IHdhcyBub3QgdmlzaWJsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisg
ICAgRWluYV9Cb29sIGZ1bGxfdXBkYXRlIDogMTsgLyoqPCB0aWxlIHJlcXVpcmVzIGZ1bGwgc2l6
ZSB1cGRhdGUgKi8KK307CisKK3N0cnVjdCBfRXdrX1RpbGUgeworICAgIEVpbmFfVGlsZXIgKnVw
ZGF0ZXM7ICAgIC8qKjwgdXBkYXRlZC9kaXJ0eSBhcmVhcyAqLworICAgIEV3a19UaWxlX1N0YXRz
IHN0YXRzOyAgICAgICAvKio8IHRpbGUgdXNhZ2Ugc3RhdGlzdGljcyAqLworICAgIHVuc2lnbmVk
IGxvbmcgY29sdW1uLCByb3c7IC8qKjwgdGlsZSB0aWxlIHBvc2l0aW9uICovCisgICAgRXZhc19D
b29yZCB4LCB5OyAgICAgICAgLyoqPCB0aWxlIGNvb3JkaW5hdGUgcG9zaXRpb24gKi8KKworICAg
IC8qKiBOZXZlciBldmVyIGNoYW5nZSB0aG9zZSBhZnRlciB0aWxlIGlzIGNyZWF0ZWQgKHJlc3Bl
Y3QgY29uc3QhKSAqLworICAgIGNvbnN0IEV2YXNfQ29vcmQgd2lkdGgsIGhlaWdodDsgICAgICAg
IC8qKjwgdGlsZSBzaXplIChzZWUgVElMRV9TSVpFX0FUX1pPT00oKSkgKi8KKyAgICBjb25zdCBF
dmFzX0NvbG9yc3BhY2UgY3NwYWNlOyAvKio8IGNvbG9yc3BhY2UgKi8KKyAgICBjb25zdCBmbG9h
dCB6b29tOyAgICAgICAgICAgICAvKio8IHpvb20gbGV2ZWwgY29udGVudHMgd2VyZSByZW5kZXJl
ZCBhdCAqLworICAgIGNvbnN0IHNpemVfdCBieXRlczsgICAgICAgICAgIC8qKjwgYnl0ZXMgdXNl
ZCBpbiBwaXhlbHMuIGtlZXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBi
ZWZvcmUgcGl4ZWxzIHRvIGd1YXJhbnRlZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAqIGFsaWduZW1lbnQhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICov
CisgICAgaW50IHZpc2libGU7ICAgICAgICAgICAgICAgICAgLyoqPCB2aXNpYmlsaXR5IGNvdW50
ZXIgb2YgdGhpcyB0aWxlICovCisgICAgRXZhc19PYmplY3QgKmltYWdlOyAgICAgICAgICAgLyoq
PCBFdmFzIEltYWdlLCB0aGUgdGlsZSB0byBiZSByZW5kZXJlZCAqLworfTsKKworLyogdmlldyAq
LworRXZhc19PYmplY3QgKmV3a190aWxlZF9iYWNraW5nX3N0b3JlX2FkZChFdmFzICplKTsKKwor
dm9pZCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9yZW5kZXJfY2Jfc2V0KEV2YXNfT2JqZWN0ICpv
LCBFaW5hX0Jvb2wgKCpjYikodm9pZCAqZGF0YSwgRXdrX1RpbGUgKnQsIGNvbnN0IEVpbmFfUmVj
dGFuZ2xlICphcmVhKSwgY29uc3Qgdm9pZCAqZGF0YSk7CisKK0VpbmFfQm9vbCBld2tfdGlsZWRf
YmFja2luZ19zdG9yZV9zY3JvbGxfZnVsbF9vZmZzZXRfc2V0KEV2YXNfT2JqZWN0ICpvLCBFdmFz
X0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSk7CitFaW5hX0Jvb2wgZXdrX3RpbGVkX2JhY2tpbmdfc3Rv
cmVfc2Nyb2xsX2Z1bGxfb2Zmc2V0X2FkZChFdmFzX09iamVjdCAqbywgRXZhc19Db29yZCBkeCwg
RXZhc19Db29yZCBkeSk7CitFaW5hX0Jvb2wgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc2Nyb2xs
X2lubmVyX29mZnNldF9hZGQoRXZhc19PYmplY3QgKm8sIEV2YXNfQ29vcmQgZHgsIEV2YXNfQ29v
cmQgZHksIEV2YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5LCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29v
cmQgaCk7CisKK0VpbmFfQm9vbCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV96b29tX3NldChFdmFz
X09iamVjdCAqbywgZmxvYXQgKnpvb20sIEV2YXNfQ29vcmQgY3gsIEV2YXNfQ29vcmQgY3ksIEV2
YXNfQ29vcmQgKm9mZngsIEV2YXNfQ29vcmQgKm9mZnkpOworRWluYV9Cb29sIGV3a190aWxlZF9i
YWNraW5nX3N0b3JlX3pvb21fd2Vha19zZXQoRXZhc19PYmplY3QgKm8sIGZsb2F0IHpvb20sIEV2
YXNfQ29vcmQgY3gsIEV2YXNfQ29vcmQgY3kpOwordm9pZCBld2tfdGlsZWRfYmFja2luZ19zdG9y
ZV9maXhfb2Zmc2V0cyhFdmFzX09iamVjdCAqbywgRXZhc19Db29yZCB3LCBFdmFzX0Nvb3JkIGgp
Owordm9pZCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV96b29tX3dlYWtfc21vb3RoX3NjYWxlX3Nl
dChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIHNtb290aF9zY2FsZSk7Cit2b2lkIGV3a190aWxl
ZF9iYWNraW5nX3N0b3JlX2FscGhhX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGhhc19h
bHBoYSk7CitFaW5hX0Jvb2wgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdXBkYXRlKEV2YXNfT2Jq
ZWN0ICpvLCBjb25zdCBFaW5hX1JlY3RhbmdsZSAqdXBkYXRlKTsKK3ZvaWQgZXdrX3RpbGVkX2Jh
Y2tpbmdfc3RvcmVfdXBkYXRlc19wcm9jZXNzX3ByZV9zZXQoRXZhc19PYmplY3QgKm8sIHZvaWQq
KCpjYikodm9pZCAqZGF0YSwgRXZhc19PYmplY3QgKm8pLCBjb25zdCB2b2lkICpkYXRhKTsKK3Zv
aWQgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdXBkYXRlc19wcm9jZXNzX3Bvc3Rfc2V0KEV2YXNf
T2JqZWN0ICpvLCB2b2lkKigqY2IpKHZvaWQgKmRhdGEsIHZvaWQgKnByZV9kYXRhLCBFdmFzX09i
amVjdCAqbyksIGNvbnN0IHZvaWQgKmRhdGEpOwordm9pZCBld2tfdGlsZWRfYmFja2luZ19zdG9y
ZV91cGRhdGVzX3Byb2Nlc3MoRXZhc19PYmplY3QgKm8pOwordm9pZCBld2tfdGlsZWRfYmFja2lu
Z19zdG9yZV91cGRhdGVzX2NsZWFyKEV2YXNfT2JqZWN0ICpvKTsKK3ZvaWQgZXdrX3RpbGVkX2Jh
Y2tpbmdfc3RvcmVfY29udGVudHNfcmVzaXplKEV2YXNfT2JqZWN0ICpvLCBFdmFzX0Nvb3JkIHdp
ZHRoLCBFdmFzX0Nvb3JkIGhlaWdodCk7Cit2b2lkIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX2Rp
c2FibGVkX3VwZGF0ZV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCB2YWx1ZSk7Cit2b2lk
IGV3a190aWxlZF9iYWNraW5nX3N0b3JlX2ZsdXNoKEV2YXNfT2JqZWN0ICpvKTsKK3ZvaWQgZXdr
X3RpbGVkX2JhY2tpbmdfc3RvcmVfZW5hYmxlX3NjYWxlX3NldChFdmFzX09iamVjdCAqbywgRWlu
YV9Cb29sIHZhbHVlKTsKKworRXdrX1RpbGVfVW51c2VkX0NhY2hlICpld2tfdGlsZWRfYmFja2lu
Z19zdG9yZV90aWxlX3VudXNlZF9jYWNoZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwordm9p
ZCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV90aWxlX3VudXNlZF9jYWNoZV9zZXQoRXZhc19PYmpl
Y3QgKm8sIEV3a19UaWxlX1VudXNlZF9DYWNoZSAqdHVjKTsKKworRWluYV9Cb29sIGV3a190aWxl
ZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfcmVnaW9uKEV2YXNfT2JqZWN0ICpvLCBFdmFzX0Nv
b3JkIHgsIEV2YXNfQ29vcmQgeSwgRXZhc19Db29yZCB3LCBFdmFzX0Nvb3JkIGgsIGZsb2F0IHpv
b20pOworRWluYV9Cb29sIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfcmVsYXRp
dmVfcmFkaXVzKEV2YXNfT2JqZWN0ICpvLCB1bnNpZ25lZCBpbnQgbiwgZmxvYXQgem9vbSk7CitF
aW5hX0Jvb2wgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRlcl9zcGlyYWxfcXVldWUo
RXZhc19PYmplY3QgKm8sIEVpbmFfUmVjdGFuZ2xlKiB2aWV3X3JlY3QsIEVpbmFfUmVjdGFuZ2xl
ICpyZW5kZXJfcmVjdCwgaW50IG1heF9tZW1vcnksIGZsb2F0IHpvb20pOwordm9pZCBld2tfdGls
ZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX2NhbmNlbChFdmFzX09iamVjdCAqbyk7CisKK0Vp
bmFfQm9vbCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9kaXNhYmxlX3JlbmRlcihFdmFzX09iamVj
dCAqbyk7CitFaW5hX0Jvb2wgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfZW5hYmxlX3JlbmRlcihF
dmFzX09iamVjdCAqbyk7CisKKyNlbmRpZiAvLyBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX21hdHJpeC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX21hdHJpeC5jcHAKaW5kZXggMTUxNjgxZi4u
OTU1MWE2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9tYXRy
aXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRfbWF0cml4LmNwcApA
QCAtMjAsMTAgKzIwLDExIEBACiAKICNkZWZpbmUgX19TVERDX0ZPUk1BVF9NQUNST1MKICNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJld2tfdGlsZWRfbWF0cml4LmgiCiAKLSNpbmNsdWRl
ICJld2tfdGlsZWRfYmFja2luZ19zdG9yZS5oIgotI2luY2x1ZGUgImV3a190aWxlZF9wcml2YXRl
LmgiCisjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfdGlsZWRfYmFja2lu
Z19zdG9yZV9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX3RpbGVkX21hdHJpeF9wcml2YXRlLmgi
CisjaW5jbHVkZSAiZXdrX3RpbGVkX21vZGVsX3ByaXZhdGUuaCIKICNpbmNsdWRlIDxFaW5hLmg+
CiAjaW5jbHVkZSA8ZXJybm8uaD4KICNpbmNsdWRlIDxpbnR0eXBlcy5oPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9tYXRyaXguaCBiL1NvdXJjZS9XZWJLaXQv
ZWZsL2V3ay9ld2tfdGlsZWRfbWF0cml4LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAzZWQxNGMuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9t
YXRyaXguaAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0
IChDKSAyMDA5LTIwMTAgU2Ftc3VuZyBFbGVjdHJvbmljcwotICAgIENvcHlyaWdodCAoQykgMjAw
OS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAg
ICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
Ci0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0K
LSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAot
ICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI2lmbmRlZiBld2tfdGlsZWRf
bWF0cml4X2gKLSNkZWZpbmUgZXdrX3RpbGVkX21hdHJpeF9oCi0KLSNpbmNsdWRlICJld2tfdGls
ZWRfYmFja2luZ19zdG9yZS5oIgotCi0jaW5jbHVkZSA8RXZhcy5oPgotCi0vKiBtYXRyaXggb2Yg
dGlsZXMgKi8KLUV3a19UaWxlX01hdHJpeCAqZXdrX3RpbGVfbWF0cml4X25ldyhFd2tfVGlsZV9V
bnVzZWRfQ2FjaGUgKnR1YywgdW5zaWduZWQgbG9uZyBjb2xzLCB1bnNpZ25lZCBsb25nIHJvd3Ms
IGZsb2F0IHpvb21fbGV2ZWwsIEV2YXNfQ29sb3JzcGFjZSBjb2xvcl9zcGFjZSwgdm9pZCAoKnJl
bmRlcl9jYWxsYmFjaykodm9pZCAqZGF0YSwgRXdrX1RpbGUgKnQsIGNvbnN0IEVpbmFfUmVjdGFu
Z2xlICp1cGRhdGUpLCBjb25zdCB2b2lkICpyZW5kZXJfZGF0YSk7Ci12b2lkIGV3a190aWxlX21h
dHJpeF9lbnRyeV9uZXcoRXdrX1RpbGVfTWF0cml4ICp0bSwgZmxvYXQgem9vbSk7Ci12b2lkIGV3
a190aWxlX21hdHJpeF9mcmVlKEV3a19UaWxlX01hdHJpeCAqdG0pOwotCi12b2lkIGV3a190aWxl
X21hdHJpeF9yZXNpemUoRXdrX1RpbGVfTWF0cml4ICp0bSwgdW5zaWduZWQgbG9uZyBjb2xzLCB1
bnNpZ25lZCBsb25nIHJvd3MpOwotdm9pZCBld2tfdGlsZV9tYXRyaXhfc2l6ZV9nZXQoRXdrX1Rp
bGVfTWF0cml4ICp0bSwgdW5zaWduZWQgbG9uZyAqY29scywgdW5zaWduZWQgbG9uZyAqcm93cyk7
Ci1ib29sIGV3a190aWxlX21hdHJpeF96b29tX2xldmVsX3NldChFd2tfVGlsZV9NYXRyaXggKnRt
LCBmbG9hdCB6b29tKTsKLXZvaWQgZXdrX3RpbGVfbWF0cml4X2ludmFsaWRhdGUoRXdrX1RpbGVf
TWF0cml4ICp0bSk7Ci0KLUV3a19UaWxlX1VudXNlZF9DYWNoZSAqZXdrX3RpbGVfbWF0cml4X3Vu
dXNlZF9jYWNoZV9nZXQoY29uc3QgRXdrX1RpbGVfTWF0cml4ICp0bSk7Ci0KLUV3a19UaWxlICpl
d2tfdGlsZV9tYXRyaXhfdGlsZV9leGFjdF9nZXQoRXdrX1RpbGVfTWF0cml4ICp0bSwgdW5zaWdu
ZWQgbG9uZyBjb2wsIHVuc2lnbmVkIGxvbmcgcm93LCBmbG9hdCB6b29tKTsKLUVpbmFfQm9vbCBl
d2tfdGlsZV9tYXRyaXhfdGlsZV9leGFjdF9leGlzdHMoRXdrX1RpbGVfTWF0cml4ICp0bSwgdW5z
aWduZWQgbG9uZyBjb2wsIHVuc2lnbmVkIGxvbmcgcm93LCBmbG9hdCB6b29tKTsKLUV3a19UaWxl
ICpld2tfdGlsZV9tYXRyaXhfdGlsZV9uZWFyZXN0X2dldChFd2tfVGlsZV9NYXRyaXggKnRtLCB1
bnNpZ25lZCBsb25nIGNvbCwgdW5zaWduZWQgbG9uZyByb3csIGZsb2F0IHpvb20pOwotRXdrX1Rp
bGUgKmV3a190aWxlX21hdHJpeF90aWxlX25ldyhFd2tfVGlsZV9NYXRyaXggKnRtLCBFdmFzICpl
dmFzLCB1bnNpZ25lZCBsb25nIGNvbCwgdW5zaWduZWQgbG9uZyByb3csIGZsb2F0IHpvb20pOwot
RWluYV9Cb29sIGV3a190aWxlX21hdHJpeF90aWxlX3B1dChFd2tfVGlsZV9NYXRyaXggKnRtLCBF
d2tfVGlsZSAqdCwgZG91YmxlIGxhc3RfdXNlZCk7Ci0KLUVpbmFfQm9vbCBld2tfdGlsZV9tYXRy
aXhfdGlsZV91cGRhdGUoRXdrX1RpbGVfTWF0cml4ICp0bSwgdW5zaWduZWQgbG9uZyBjb2wsIHVu
c2lnbmVkIGxvbmcgcm93LCBjb25zdCBFaW5hX1JlY3RhbmdsZSAqdXBkYXRlKTsKLUVpbmFfQm9v
bCBld2tfdGlsZV9tYXRyaXhfdGlsZV91cGRhdGVfZnVsbChFd2tfVGlsZV9NYXRyaXggKnRtLCB1
bnNpZ25lZCBsb25nIGNvbCwgdW5zaWduZWQgbG9uZyByb3cpOwotdm9pZCBld2tfdGlsZV9tYXRy
aXhfdGlsZV91cGRhdGVzX2NsZWFyKEV3a19UaWxlX01hdHJpeCAqdG0sIEV3a19UaWxlICp0KTsK
LQotRWluYV9Cb29sIGV3a190aWxlX21hdHJpeF91cGRhdGUoRXdrX1RpbGVfTWF0cml4ICp0bSwg
Y29uc3QgRWluYV9SZWN0YW5nbGUgKnVwZGF0ZSwgZmxvYXQgem9vbSk7Ci12b2lkIGV3a190aWxl
X21hdHJpeF91cGRhdGVzX3Byb2Nlc3MoRXdrX1RpbGVfTWF0cml4ICp0bSk7Ci12b2lkIGV3a190
aWxlX21hdHJpeF91cGRhdGVzX2NsZWFyKEV3a19UaWxlX01hdHJpeCAqdG0pOwotdm9pZCBld2tf
dGlsZV9tYXRyaXhfZnJlZXplKEV3a19UaWxlX01hdHJpeCAqdG0pOwotdm9pZCBld2tfdGlsZV9t
YXRyaXhfdGhhdyhFd2tfVGlsZV9NYXRyaXggKnRtKTsKLQotLy8gcmVtb3ZlIG1lIQotdm9pZCBl
d2tfdGlsZV9tYXRyaXhfZGJnKGNvbnN0IEV3a19UaWxlX01hdHJpeCAqdG0pOwotdm9pZCBld2tf
dGlsZV91bnVzZWRfY2FjaGVfZGJnKGNvbnN0IEV3a19UaWxlX1VudXNlZF9DYWNoZSAqdHVjKTsK
LXZvaWQgZXdrX3RpbGVfYWNjb3VudGluZ19kYmcoKTsKLQotI2VuZGlmIC8vIGV3a190aWxlZF9t
YXRyaXhfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9tYXRy
aXhfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9tYXRyaXhfcHJp
dmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzNzkzYjUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX21hdHJpeF9wcml2
YXRlLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBT
YW1zdW5nIEVsZWN0cm9uaWNzCisgICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgUHJvRlVTSU9O
IGVtYmVkZGVkIHN5c3RlbXMKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIGV3a190aWxlZF9tYXRyaXhfcHJpdmF0ZV9o
CisjZGVmaW5lIGV3a190aWxlZF9tYXRyaXhfcHJpdmF0ZV9oCisKKyNpbmNsdWRlICJld2tfdGls
ZWRfYmFja2luZ19zdG9yZV9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX3RpbGVkX21hdHJpeF9w
cml2YXRlLmgiCisKKyNpbmNsdWRlIDxFdmFzLmg+CisKKy8qIG1hdHJpeCBvZiB0aWxlcyAqLwor
RXdrX1RpbGVfTWF0cml4ICpld2tfdGlsZV9tYXRyaXhfbmV3KEV3a19UaWxlX1VudXNlZF9DYWNo
ZSAqdHVjLCB1bnNpZ25lZCBsb25nIGNvbHMsIHVuc2lnbmVkIGxvbmcgcm93cywgZmxvYXQgem9v
bV9sZXZlbCwgRXZhc19Db2xvcnNwYWNlIGNvbG9yX3NwYWNlLCB2b2lkICgqcmVuZGVyX2NhbGxi
YWNrKSh2b2lkICpkYXRhLCBFd2tfVGlsZSAqdCwgY29uc3QgRWluYV9SZWN0YW5nbGUgKnVwZGF0
ZSksIGNvbnN0IHZvaWQgKnJlbmRlcl9kYXRhKTsKK3ZvaWQgZXdrX3RpbGVfbWF0cml4X2VudHJ5
X25ldyhFd2tfVGlsZV9NYXRyaXggKnRtLCBmbG9hdCB6b29tKTsKK3ZvaWQgZXdrX3RpbGVfbWF0
cml4X2ZyZWUoRXdrX1RpbGVfTWF0cml4ICp0bSk7CisKK3ZvaWQgZXdrX3RpbGVfbWF0cml4X3Jl
c2l6ZShFd2tfVGlsZV9NYXRyaXggKnRtLCB1bnNpZ25lZCBsb25nIGNvbHMsIHVuc2lnbmVkIGxv
bmcgcm93cyk7Cit2b2lkIGV3a190aWxlX21hdHJpeF9zaXplX2dldChFd2tfVGlsZV9NYXRyaXgg
KnRtLCB1bnNpZ25lZCBsb25nICpjb2xzLCB1bnNpZ25lZCBsb25nICpyb3dzKTsKK2Jvb2wgZXdr
X3RpbGVfbWF0cml4X3pvb21fbGV2ZWxfc2V0KEV3a19UaWxlX01hdHJpeCAqdG0sIGZsb2F0IHpv
b20pOwordm9pZCBld2tfdGlsZV9tYXRyaXhfaW52YWxpZGF0ZShFd2tfVGlsZV9NYXRyaXggKnRt
KTsKKworRXdrX1RpbGVfVW51c2VkX0NhY2hlICpld2tfdGlsZV9tYXRyaXhfdW51c2VkX2NhY2hl
X2dldChjb25zdCBFd2tfVGlsZV9NYXRyaXggKnRtKTsKKworRXdrX1RpbGUgKmV3a190aWxlX21h
dHJpeF90aWxlX2V4YWN0X2dldChFd2tfVGlsZV9NYXRyaXggKnRtLCB1bnNpZ25lZCBsb25nIGNv
bCwgdW5zaWduZWQgbG9uZyByb3csIGZsb2F0IHpvb20pOworRWluYV9Cb29sIGV3a190aWxlX21h
dHJpeF90aWxlX2V4YWN0X2V4aXN0cyhFd2tfVGlsZV9NYXRyaXggKnRtLCB1bnNpZ25lZCBsb25n
IGNvbCwgdW5zaWduZWQgbG9uZyByb3csIGZsb2F0IHpvb20pOworRXdrX1RpbGUgKmV3a190aWxl
X21hdHJpeF90aWxlX25lYXJlc3RfZ2V0KEV3a19UaWxlX01hdHJpeCAqdG0sIHVuc2lnbmVkIGxv
bmcgY29sLCB1bnNpZ25lZCBsb25nIHJvdywgZmxvYXQgem9vbSk7CitFd2tfVGlsZSAqZXdrX3Rp
bGVfbWF0cml4X3RpbGVfbmV3KEV3a19UaWxlX01hdHJpeCAqdG0sIEV2YXMgKmV2YXMsIHVuc2ln
bmVkIGxvbmcgY29sLCB1bnNpZ25lZCBsb25nIHJvdywgZmxvYXQgem9vbSk7CitFaW5hX0Jvb2wg
ZXdrX3RpbGVfbWF0cml4X3RpbGVfcHV0KEV3a19UaWxlX01hdHJpeCAqdG0sIEV3a19UaWxlICp0
LCBkb3VibGUgbGFzdF91c2VkKTsKKworRWluYV9Cb29sIGV3a190aWxlX21hdHJpeF90aWxlX3Vw
ZGF0ZShFd2tfVGlsZV9NYXRyaXggKnRtLCB1bnNpZ25lZCBsb25nIGNvbCwgdW5zaWduZWQgbG9u
ZyByb3csIGNvbnN0IEVpbmFfUmVjdGFuZ2xlICp1cGRhdGUpOworRWluYV9Cb29sIGV3a190aWxl
X21hdHJpeF90aWxlX3VwZGF0ZV9mdWxsKEV3a19UaWxlX01hdHJpeCAqdG0sIHVuc2lnbmVkIGxv
bmcgY29sLCB1bnNpZ25lZCBsb25nIHJvdyk7Cit2b2lkIGV3a190aWxlX21hdHJpeF90aWxlX3Vw
ZGF0ZXNfY2xlYXIoRXdrX1RpbGVfTWF0cml4ICp0bSwgRXdrX1RpbGUgKnQpOworCitFaW5hX0Jv
b2wgZXdrX3RpbGVfbWF0cml4X3VwZGF0ZShFd2tfVGlsZV9NYXRyaXggKnRtLCBjb25zdCBFaW5h
X1JlY3RhbmdsZSAqdXBkYXRlLCBmbG9hdCB6b29tKTsKK3ZvaWQgZXdrX3RpbGVfbWF0cml4X3Vw
ZGF0ZXNfcHJvY2VzcyhFd2tfVGlsZV9NYXRyaXggKnRtKTsKK3ZvaWQgZXdrX3RpbGVfbWF0cml4
X3VwZGF0ZXNfY2xlYXIoRXdrX1RpbGVfTWF0cml4ICp0bSk7Cit2b2lkIGV3a190aWxlX21hdHJp
eF9mcmVlemUoRXdrX1RpbGVfTWF0cml4ICp0bSk7Cit2b2lkIGV3a190aWxlX21hdHJpeF90aGF3
KEV3a19UaWxlX01hdHJpeCAqdG0pOworCisvLyByZW1vdmUgbWUhCit2b2lkIGV3a190aWxlX21h
dHJpeF9kYmcoY29uc3QgRXdrX1RpbGVfTWF0cml4ICp0bSk7Cit2b2lkIGV3a190aWxlX3VudXNl
ZF9jYWNoZV9kYmcoY29uc3QgRXdrX1RpbGVfVW51c2VkX0NhY2hlICp0dWMpOwordm9pZCBld2tf
dGlsZV9hY2NvdW50aW5nX2RiZygpOworCisjZW5kaWYgLy8gZXdrX3RpbGVkX21hdHJpeF9wcml2
YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRfbW9kZWwu
Y3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9tb2RlbC5jcHAKaW5kZXggYzBl
NzAyMC4uMjViMjY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190aWxl
ZF9tb2RlbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9tb2RlbC5j
cHAKQEAgLTIwLDEwICsyMCwxMCBAQAogCiAjZGVmaW5lIF9fU1REQ19GT1JNQVRfTUFDUk9TCiAj
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiZXdrX3RpbGVkX21vZGVsLmgiCiAKLSNpbmNs
dWRlICJld2tfdGlsZWRfYmFja2luZ19zdG9yZS5oIgotI2luY2x1ZGUgImV3a190aWxlZF9wcml2
YXRlLmgiCisjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfdGlsZWRfYmFj
a2luZ19zdG9yZV9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX3RpbGVkX21vZGVsX3ByaXZhdGUu
aCIKICNpbmNsdWRlIDxFY29yZV9FdmFzLmg+CiAjaW5jbHVkZSA8RWluYS5oPgogI2luY2x1ZGUg
PGVpbmFfc2FmZXR5X2NoZWNrcy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a190aWxlZF9tb2RlbC5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9tb2Rl
bC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYWFmMjEzLi4wMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRfbW9kZWwuaAorKysgL2Rldi9udWxsCkBA
IC0xLDU2ICswLDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgU2Ftc3VuZyBF
bGVjdHJvbmljcwotICAgIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRl
ZCBzeXN0ZW1zCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAg
ICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0g
ICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgotKi8KLQotI2lmbmRlZiBld2tfdGlsZWRfbW9kZWxfaAotI2RlZmluZSBld2tfdGls
ZWRfbW9kZWxfaAotCi0jaW5jbHVkZSAiZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuaCIKLQotI2lu
Y2x1ZGUgPEV2YXMuaD4KLQotLyogbW9kZWwgKi8KLUV3a19UaWxlICpld2tfdGlsZV9uZXcoRXZh
cyAqZXZhcywgRXZhc19Db29yZCB3LCBFdmFzX0Nvb3JkIGgsIGZsb2F0IHpvb20sIEV2YXNfQ29s
b3JzcGFjZSBjc3BhY2UpOwotdm9pZCBld2tfdGlsZV9mcmVlKEV3a19UaWxlICp0KTsKLXZvaWQg
ZXdrX3RpbGVfdW51c2VkX2NhY2hlX2NsZWFyKEV3a19UaWxlX1VudXNlZF9DYWNoZSAqdHVjKTsK
LXZvaWQgZXdrX3RpbGVfc2hvdyhFd2tfVGlsZSAqdCk7Ci12b2lkIGV3a190aWxlX2hpZGUoRXdr
X1RpbGUgKnQpOwotc2l6ZV90IGV3a190aWxlX21lbW9yeV9zaXplX2dldChjb25zdCBFd2tfVGls
ZSAqdCk7Ci1FaW5hX0Jvb2wgZXdrX3RpbGVfdmlzaWJsZV9nZXQoRXdrX1RpbGUgKnQpOwotdm9p
ZCBld2tfdGlsZV91cGRhdGVfZnVsbChFd2tfVGlsZSAqdCk7Ci12b2lkIGV3a190aWxlX3VwZGF0
ZV9hcmVhKEV3a19UaWxlICp0LCBjb25zdCBFaW5hX1JlY3RhbmdsZSAqcik7Ci12b2lkIGV3a190
aWxlX3VwZGF0ZXNfcHJvY2VzcyhFd2tfVGlsZSAqdCwgdm9pZCAoKmNiKSh2b2lkICpkYXRhLCBF
d2tfVGlsZSAqdCwgY29uc3QgRWluYV9SZWN0YW5nbGUgKnVwZGF0ZSksIGNvbnN0IHZvaWQgKmRh
dGEpOwotdm9pZCBld2tfdGlsZV91cGRhdGVzX2NsZWFyKEV3a19UaWxlICp0KTsKLQotLyogY2Fj
aGUgb2YgdW51c2VkIHRpbGVzICovCi1Fd2tfVGlsZV9VbnVzZWRfQ2FjaGUgKmV3a190aWxlX3Vu
dXNlZF9jYWNoZV9uZXcoc2l6ZV90IG1heCk7Ci12b2lkIGV3a190aWxlX3VudXNlZF9jYWNoZV9s
b2NrX2FyZWEoRXdrX1RpbGVfVW51c2VkX0NhY2hlICp0dWMsIEV2YXNfQ29vcmQgeCwgRXZhc19D
b29yZCB5LCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29vcmQgaCwgZmxvYXQgem9vbSk7Ci12b2lkIGV3
a190aWxlX3VudXNlZF9jYWNoZV91bmxvY2tfYXJlYShFd2tfVGlsZV9VbnVzZWRfQ2FjaGUgKnR1
Yyk7Ci1Fd2tfVGlsZV9VbnVzZWRfQ2FjaGUgKmV3a190aWxlX3VudXNlZF9jYWNoZV9yZWYoRXdr
X1RpbGVfVW51c2VkX0NhY2hlICp0dWMpOwotdm9pZCBld2tfdGlsZV91bnVzZWRfY2FjaGVfdW5y
ZWYoRXdrX1RpbGVfVW51c2VkX0NhY2hlICp0dWMpOwotCi12b2lkIGV3a190aWxlX3VudXNlZF9j
YWNoZV9kaXJ0eShFd2tfVGlsZV9VbnVzZWRfQ2FjaGUgKnR1Yyk7Ci0KLXZvaWQgZXdrX3RpbGVf
dW51c2VkX2NhY2hlX2ZyZWV6ZShFd2tfVGlsZV9VbnVzZWRfQ2FjaGUgKnR1Yyk7Ci12b2lkIGV3
a190aWxlX3VudXNlZF9jYWNoZV90aGF3KEV3a19UaWxlX1VudXNlZF9DYWNoZSAqdHVjKTsKLQot
RWluYV9Cb29sIGV3a190aWxlX3VudXNlZF9jYWNoZV90aWxlX2dldChFd2tfVGlsZV9VbnVzZWRf
Q2FjaGUgKnR1YywgRXdrX1RpbGUgKnQpOwotRWluYV9Cb29sIGV3a190aWxlX3VudXNlZF9jYWNo
ZV90aWxlX3B1dChFd2tfVGlsZV9VbnVzZWRfQ2FjaGUgKnR1YywgRXdrX1RpbGUgKnQsIHZvaWQg
KCogdGlsZV9mcmVlX2NiKSh2b2lkICpkYXRhLCBFd2tfVGlsZSAqdCksIGNvbnN0IHZvaWQgKmRh
dGEpOwotCi0jZW5kaWYgLy8gZXdrX3RpbGVkX21vZGVsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRfbW9kZWxfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a190aWxlZF9tb2RlbF9wcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uYzVmNmQ3MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfdGlsZWRfbW9kZWxfcHJpdmF0ZS5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgICAg
Q29weXJpZ2h0IChDKSAyMDA5LTIwMTAgU2Ftc3VuZyBFbGVjdHJvbmljcworICAgIENvcHlyaWdo
dCAoQykgMjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCisKKyAgICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
ICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAg
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lmbmRlZiBl
d2tfdGlsZWRfbW9kZWxfcHJpdmF0ZV9oCisjZGVmaW5lIGV3a190aWxlZF9tb2RlbF9wcml2YXRl
X2gKKworI2luY2x1ZGUgImV3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByaXZhdGUuaCIKKworI2lu
Y2x1ZGUgPEV2YXMuaD4KKworLyogbW9kZWwgKi8KK0V3a19UaWxlICpld2tfdGlsZV9uZXcoRXZh
cyAqZXZhcywgRXZhc19Db29yZCB3LCBFdmFzX0Nvb3JkIGgsIGZsb2F0IHpvb20sIEV2YXNfQ29s
b3JzcGFjZSBjc3BhY2UpOwordm9pZCBld2tfdGlsZV9mcmVlKEV3a19UaWxlICp0KTsKK3ZvaWQg
ZXdrX3RpbGVfdW51c2VkX2NhY2hlX2NsZWFyKEV3a19UaWxlX1VudXNlZF9DYWNoZSAqdHVjKTsK
K3ZvaWQgZXdrX3RpbGVfc2hvdyhFd2tfVGlsZSAqdCk7Cit2b2lkIGV3a190aWxlX2hpZGUoRXdr
X1RpbGUgKnQpOworc2l6ZV90IGV3a190aWxlX21lbW9yeV9zaXplX2dldChjb25zdCBFd2tfVGls
ZSAqdCk7CitFaW5hX0Jvb2wgZXdrX3RpbGVfdmlzaWJsZV9nZXQoRXdrX1RpbGUgKnQpOwordm9p
ZCBld2tfdGlsZV91cGRhdGVfZnVsbChFd2tfVGlsZSAqdCk7Cit2b2lkIGV3a190aWxlX3VwZGF0
ZV9hcmVhKEV3a19UaWxlICp0LCBjb25zdCBFaW5hX1JlY3RhbmdsZSAqcik7Cit2b2lkIGV3a190
aWxlX3VwZGF0ZXNfcHJvY2VzcyhFd2tfVGlsZSAqdCwgdm9pZCAoKmNiKSh2b2lkICpkYXRhLCBF
d2tfVGlsZSAqdCwgY29uc3QgRWluYV9SZWN0YW5nbGUgKnVwZGF0ZSksIGNvbnN0IHZvaWQgKmRh
dGEpOwordm9pZCBld2tfdGlsZV91cGRhdGVzX2NsZWFyKEV3a19UaWxlICp0KTsKKworLyogY2Fj
aGUgb2YgdW51c2VkIHRpbGVzICovCitFd2tfVGlsZV9VbnVzZWRfQ2FjaGUgKmV3a190aWxlX3Vu
dXNlZF9jYWNoZV9uZXcoc2l6ZV90IG1heCk7Cit2b2lkIGV3a190aWxlX3VudXNlZF9jYWNoZV9s
b2NrX2FyZWEoRXdrX1RpbGVfVW51c2VkX0NhY2hlICp0dWMsIEV2YXNfQ29vcmQgeCwgRXZhc19D
b29yZCB5LCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29vcmQgaCwgZmxvYXQgem9vbSk7Cit2b2lkIGV3
a190aWxlX3VudXNlZF9jYWNoZV91bmxvY2tfYXJlYShFd2tfVGlsZV9VbnVzZWRfQ2FjaGUgKnR1
Yyk7CitFd2tfVGlsZV9VbnVzZWRfQ2FjaGUgKmV3a190aWxlX3VudXNlZF9jYWNoZV9yZWYoRXdr
X1RpbGVfVW51c2VkX0NhY2hlICp0dWMpOwordm9pZCBld2tfdGlsZV91bnVzZWRfY2FjaGVfdW5y
ZWYoRXdrX1RpbGVfVW51c2VkX0NhY2hlICp0dWMpOworCit2b2lkIGV3a190aWxlX3VudXNlZF9j
YWNoZV9kaXJ0eShFd2tfVGlsZV9VbnVzZWRfQ2FjaGUgKnR1Yyk7CisKK3ZvaWQgZXdrX3RpbGVf
dW51c2VkX2NhY2hlX2ZyZWV6ZShFd2tfVGlsZV9VbnVzZWRfQ2FjaGUgKnR1Yyk7Cit2b2lkIGV3
a190aWxlX3VudXNlZF9jYWNoZV90aGF3KEV3a19UaWxlX1VudXNlZF9DYWNoZSAqdHVjKTsKKwor
RWluYV9Cb29sIGV3a190aWxlX3VudXNlZF9jYWNoZV90aWxlX2dldChFd2tfVGlsZV9VbnVzZWRf
Q2FjaGUgKnR1YywgRXdrX1RpbGUgKnQpOworRWluYV9Cb29sIGV3a190aWxlX3VudXNlZF9jYWNo
ZV90aWxlX3B1dChFd2tfVGlsZV9VbnVzZWRfQ2FjaGUgKnR1YywgRXdrX1RpbGUgKnQsIHZvaWQg
KCogdGlsZV9mcmVlX2NiKSh2b2lkICpkYXRhLCBFd2tfVGlsZSAqdCksIGNvbnN0IHZvaWQgKmRh
dGEpOworCisjZW5kaWYgLy8gZXdrX3RpbGVkX21vZGVsX3ByaXZhdGVfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX3RpbGVkX3ByaXZhdGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggOGExNWFhMi4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3RpbGVk
X3ByaXZhdGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLS8qCi0gICAgQ29weXJp
Z2h0IChDKSAyMDA5LTIwMTAgU2Ftc3VuZyBFbGVjdHJvbmljcwotICAgIENvcHlyaWdodCAoQykg
MjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCi0KLSAgICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
LSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
Ci0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI2lmbmRlZiBld2tfdGls
ZWRfcHJpdmF0ZV9oCi0jZGVmaW5lIGV3a190aWxlZF9wcml2YXRlX2gKLQotLyogbG9nZ2luZyAq
LwotZXh0ZXJuIGludCBfZXdrX3RpbGVkX2xvZ19kb207Ci0KLSNkZWZpbmUgQ1JJVElDQUwoLi4u
KSBFSU5BX0xPR19ET01fQ1JJVChfZXdrX3RpbGVkX2xvZ19kb20sIF9fVkFfQVJHU19fKQotI2Rl
ZmluZSBFUlIoLi4uKSBFSU5BX0xPR19ET01fRVJSKF9ld2tfdGlsZWRfbG9nX2RvbSwgX19WQV9B
UkdTX18pCi0jZGVmaW5lIFdSTiguLi4pIEVJTkFfTE9HX0RPTV9XQVJOKF9ld2tfdGlsZWRfbG9n
X2RvbSwgX19WQV9BUkdTX18pCi0jZGVmaW5lIElORiguLi4pIEVJTkFfTE9HX0RPTV9JTkZPKF9l
d2tfdGlsZWRfbG9nX2RvbSwgX19WQV9BUkdTX18pCi0jZGVmaW5lIERCRyguLi4pIEVJTkFfTE9H
X0RPTV9EQkcoX2V3a190aWxlZF9sb2dfZG9tLCBfX1ZBX0FSR1NfXykKLSNlbmRpZiAvLyBld2tf
dGlsZWRfcHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3V0
aWwuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a191dGlsLmNwcAppbmRleCA3NDliMDM4
Li5hMTUwN2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3V0aWwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdXRpbC5jcHAKQEAgLTE5LDEwICsxOSw5
IEBACiAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiZXdrX3V0aWwuaCIKIAot
I2luY2x1ZGUgImV3a19sb2dnaW5nLmgiCiAjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKKyNpbmNs
dWRlICJld2tfdXRpbF9wcml2YXRlLmgiCiAjaW5jbHVkZSA8ZWluYV9zYWZldHlfY2hlY2tzLmg+
CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a191dGlsLmggYi9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3V0aWwuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggM2IzMmQ5Yy4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3V0
aWwuaAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0IChD
KSAyMDA5LTIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMKLSAgICBDb3B5cmlnaHQgKEMp
IDIwMDktMjAxMCBTYW1zdW5nIEVsZWN0cm9uaWNzCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0g
ICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAg
ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAg
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotLyoqCi0gKiBAZmlsZSAgICBld2tf
dXRpbC5oCi0gKiBAYnJpZWYgICBIZWxwZnVsbCBtZXRob2RzIGZvciBXZWJLaXQtRUZMLgotICov
Ci0KLSNpZm5kZWYgZXdrX3V0aWxfaAotI2RlZmluZSBld2tfdXRpbF9oCi0KLSNpbmNsdWRlIDxF
dmFzLmg+Ci0jaW5jbHVkZSA8Y2Fpcm8uaD4KLQotRXZhc19PYmplY3QgKmV3a191dGlsX2ltYWdl
X2Zyb21fY2Fpcm9fc3VyZmFjZV9hZGQoRXZhcyAqY2FudmFzLCBjYWlyb19zdXJmYWNlX3QgKnN1
cmZhY2UpOwotCi0jZW5kaWYgLy8gZXdrX3V0aWxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a191dGlsX3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
dXRpbF9wcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmVlMmQw
ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdXRpbF9wcml2
YXRlLmgKQEAgLTAsMCArMSwyOSBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBQ
cm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcworICAgIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFNh
bXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIGV3a191dGlsX3ByaXZhdGVfaAorI2RlZmlu
ZSBld2tfdXRpbF9wcml2YXRlX2gKKworI2luY2x1ZGUgPEV2YXMuaD4KKyNpbmNsdWRlIDxjYWly
by5oPgorCitFdmFzX09iamVjdCAqZXdrX3V0aWxfaW1hZ2VfZnJvbV9jYWlyb19zdXJmYWNlX2Fk
ZChFdmFzICpjYW52YXMsIGNhaXJvX3N1cmZhY2VfdCAqc3VyZmFjZSk7CisKKyNlbmRpZiAvLyBl
d2tfdXRpbF9wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
dmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCmluZGV4IDhlYzg2
N2QuLmUyNzllMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcApAQCAtNTUsOCArNTUs
MTQgQEAKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgi
CiAjaW5jbHVkZSAiY19pbnN0YW5jZS5oIgotI2luY2x1ZGUgImV3a19sb2dnaW5nLmgiCisjaW5j
bHVkZSAiZXdrX2ZyYW1lLmgiCisjaW5jbHVkZSAiZXdrX2ZyYW1lX3ByaXZhdGUuaCIKKyNpbmNs
dWRlICJld2tfaGlzdG9yeV9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX2pzX3ByaXZhdGUuaCIK
ICNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a19zZXR0aW5nc19wcml2YXRl
LmgiCisjaW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a193aW5kb3df
ZmVhdHVyZXNfcHJpdmF0ZS5oIgogI2luY2x1ZGUgPEVjb3JlLmg+CiAjaW5jbHVkZSA8RWluYS5o
PgogI2luY2x1ZGUgPEV2YXMuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfdmlld19wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfcHJpdmF0
ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwZjYyMjAKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfcHJpdmF0ZS5oCkBAIC0w
LDAgKzEsMTU1IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFByb0ZVU0lPTiBl
bWJlZGRlZCBzeXN0ZW1zCisgICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTIgU2Ftc3VuZyBFbGVj
dHJvbmljcworCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAg
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAg
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KKyovCisKKyNpZm5kZWYgZXdrX3ZpZXdfcHJpdmF0ZV9oCisjZGVmaW5lIGV3a192aWV3
X3ByaXZhdGVfaAorCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5j
bHVkZSAiV2lkZ2V0LmgiCisjaW5jbHVkZSAiZXdrX3ZpZXcuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorY2xhc3MgQ29sb3I7CitjbGFzcyBD
b2xvckNob29zZXJDbGllbnQ7CisjZW5kaWYKKworY2xhc3MgUG9wdXBNZW51Q2xpZW50OworfQor
CisvLyBEZWZpbmVzIHRoZSBuYW1lcyBmb3IgaW5pdGlhbGl6aW5nIGV3a192aWV3X3NtYXJ0X2Ns
YXNzCitjb25zdCBjaGFyIGV3a1ZpZXdUaWxlZE5hbWVbXSA9ICJFd2tfVmlld19UaWxlZCI7Citj
b25zdCBjaGFyIGV3a1ZpZXdTaW5nbGVOYW1lW10gPSAiRXdrX1ZpZXdfU2luZ2xlIjsKKworLy8g
RGVmaW5lIHRvIHByZXZlbnQgYW4gYXBwbGljYXRpb24gdXNpbmcgZGlmZmVyZW50IHZpZXcgdHlw
ZSBmcm9tIGNhbGxpbmcgdGhlIGZ1bmN0aW9uLgorI2RlZmluZSBFV0tfVklFV19UWVBFX0NIRUNL
X09SX1JFVFVSTihld2tWaWV3LCB2aWV3TmFtZSwgLi4uKSBcCisgICAgaWYgKCFldmFzX29iamVj
dF9zbWFydF90eXBlX2NoZWNrKGV3a1ZpZXcsIHZpZXdOYW1lKSkgeyBcCisgICAgICAgIElORigi
ZXdrVmlldyBpc24ndCBhbiBpbnN0YW5jZSBvZiAlcyIsIHZpZXdOYW1lKTsgXAorICAgICAgICBy
ZXR1cm4gX19WQV9BUkdTX187IFwKKyAgICB9CisKK3ZvaWQgZXdrX3ZpZXdfcmVhZHkoRXZhc19P
YmplY3QqIGV3a1ZpZXcpOwordm9pZCBld2tfdmlld19pbnB1dF9tZXRob2Rfc3RhdGVfc2V0KEV2
YXNfT2JqZWN0KiBld2tWaWV3LCBib29sIGFjdGl2ZSk7Cit2b2lkIGV3a192aWV3X3RpdGxlX3Nl
dChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgY2hhciogdGl0bGUpOwordm9pZCBld2tfdmll
d191cmlfY2hhbmdlZChFdmFzX09iamVjdCogZXdrVmlldyk7Cit2b2lkIGV3a192aWV3X2xvYWRf
ZG9jdW1lbnRfZmluaXNoZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2YXNfT2JqZWN0KiBmcmFt
ZSk7Cit2b2lkIGV3a192aWV3X2xvYWRfc3RhcnRlZChFdmFzX09iamVjdCogZXdrVmlldywgRXZh
c19PYmplY3QqIGV3a0ZyYW1lKTsKK3ZvaWQgZXdrX3ZpZXdfbG9hZF9wcm92aXNpb25hbChFdmFz
X09iamVjdCogZXdrVmlldyk7Cit2b2lkIGV3a192aWV3X2ZyYW1lX21haW5fbG9hZF9zdGFydGVk
KEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKK3ZvaWQgZXdrX3ZpZXdfZnJhbWVfbWFpbl9jbGVhcmVk
KEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKK3ZvaWQgZXdrX3ZpZXdfZnJhbWVfbWFpbl9pY29uX3Jl
Y2VpdmVkKEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKK3ZvaWQgZXdrX3ZpZXdfbG9hZF9maW5pc2hl
ZChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgRXdrX0ZyYW1lX0xvYWRfRXJyb3IqIGVycm9y
KTsKK3ZvaWQgZXdrX3ZpZXdfbG9hZF9lcnJvcihFdmFzX09iamVjdCogZXdrVmlldywgY29uc3Qg
RXdrX0ZyYW1lX0xvYWRfRXJyb3IqIGVycm9yKTsKK3ZvaWQgZXdrX3ZpZXdfbG9hZF9wcm9ncmVz
c19jaGFuZ2VkKEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKK3ZvaWQgZXdrX3ZpZXdfbG9hZF9zaG93
KEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKK3ZvaWQgZXdrX3ZpZXdfb25sb2FkX2V2ZW50KEV2YXNf
T2JqZWN0KiBld2tWaWV3LCBFdmFzX09iamVjdCogZnJhbWUpOwordm9pZCBld2tfdmlld19yZXN0
b3JlX3N0YXRlKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX09iamVjdCogZnJhbWUpOworRXZh
c19PYmplY3QqIGV3a192aWV3X3dpbmRvd19jcmVhdGUoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGJv
b2wgamF2YXNjcmlwdCwgY29uc3QgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMqIGNvcmVGZWF0dXJl
cyk7Cit2b2lkIGV3a192aWV3X3dpbmRvd19jbG9zZShFdmFzX09iamVjdCogZXdrVmlldyk7CisK
K3ZvaWQgZXdrX3ZpZXdfbW91c2VfbGlua19ob3Zlcl9pbihFdmFzX09iamVjdCogZXdrVmlldywg
dm9pZCogZGF0YSk7Cit2b2lkIGV3a192aWV3X21vdXNlX2xpbmtfaG92ZXJfb3V0KEV2YXNfT2Jq
ZWN0KiBld2tWaWV3KTsKKwordm9pZCBld2tfdmlld190b29sYmFyc192aXNpYmxlX3NldChFdmFz
X09iamVjdCogZXdrVmlldywgYm9vbCB2aXNpYmxlKTsKK3ZvaWQgZXdrX3ZpZXdfdG9vbGJhcnNf
dmlzaWJsZV9nZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGJvb2wqIHZpc2libGUpOworCit2b2lk
IGV3a192aWV3X3N0YXR1c2Jhcl92aXNpYmxlX3NldChFdmFzX09iamVjdCogZXdrVmlldywgYm9v
bCB2aXNpYmxlKTsKK3ZvaWQgZXdrX3ZpZXdfc3RhdHVzYmFyX3Zpc2libGVfZ2V0KEV2YXNfT2Jq
ZWN0KiBld2tWaWV3LCBib29sKiB2aXNpYmxlKTsKK3ZvaWQgZXdrX3ZpZXdfc3RhdHVzYmFyX3Rl
eHRfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBjaGFyKiB0ZXh0KTsKKwordm9pZCBl
d2tfdmlld19zY3JvbGxiYXJzX3Zpc2libGVfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBib29s
IHZpc2libGUpOwordm9pZCBld2tfdmlld19zY3JvbGxiYXJzX3Zpc2libGVfZ2V0KEV2YXNfT2Jq
ZWN0KiBld2tWaWV3LCBib29sKiB2aXNpYmxlKTsKKwordm9pZCBld2tfdmlld19tZW51YmFyX3Zp
c2libGVfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBib29sIHZpc2libGUpOwordm9pZCBld2tf
dmlld19tZW51YmFyX3Zpc2libGVfZ2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBib29sKiB2aXNp
YmxlKTsKKwordm9pZCBld2tfdmlld190b29sdGlwX3RleHRfc2V0KEV2YXNfT2JqZWN0KiBld2tW
aWV3LCBjb25zdCBjaGFyKiB0ZXh0KTsKKwordm9pZCBld2tfdmlld19hZGRfY29uc29sZV9tZXNz
YWdlKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBjaGFyKiBtZXNzYWdlLCB1bnNpZ25lZCBp
bnQgbGluZU51bWJlciwgY29uc3QgY2hhciogc291cmNlSUQpOworCit2b2lkIGV3a192aWV3X3J1
bl9qYXZhc2NyaXB0X2FsZXJ0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX09iamVjdCogZnJh
bWUsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpOworYm9vbCBld2tfdmlld19ydW5famF2YXNjcmlwdF9j
b25maXJtKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX09iamVjdCogZnJhbWUsIGNvbnN0IGNo
YXIqIG1lc3NhZ2UpOworYm9vbCBld2tfdmlld19ydW5famF2YXNjcmlwdF9wcm9tcHQoRXZhc19P
YmplY3QqIGV3a1ZpZXcsIEV2YXNfT2JqZWN0KiBmcmFtZSwgY29uc3QgY2hhciogbWVzc2FnZSwg
Y29uc3QgY2hhciogZGVmYXVsdFZhbHVlLCBjaGFyKiogdmFsdWUpOworYm9vbCBld2tfdmlld19z
aG91bGRfaW50ZXJydXB0X2phdmFzY3JpcHQoRXZhc19PYmplY3QqIGV3a1ZpZXcpOwordWludDY0
X3QgZXdrX3ZpZXdfZXhjZWVkZWRfZGF0YWJhc2VfcXVvdGEoRXZhc19PYmplY3QqIGV3a1ZpZXcs
IEV2YXNfT2JqZWN0KiBmcmFtZSwgY29uc3QgY2hhciogZGF0YWJhc2VOYW1lLCB1aW50NjRfdCBj
dXJyZW50U2l6ZSwgdWludDY0X3QgZXhwZWN0ZWRTaXplKTsKKworYm9vbCBld2tfdmlld19ydW5f
b3Blbl9wYW5lbChFdmFzX09iamVjdCogZXdrVmlldywgRXZhc19PYmplY3QqIGZyYW1lLCBib29s
IGFsbG93c011bHRpcGxlRmlsZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhY2NlcHRNSU1FVHlw
ZXMsIEVpbmFfTGlzdCoqIHNlbGVjdGVkRmlsZW5hbWVzKTsKKwordm9pZCBld2tfdmlld19yZXBh
aW50KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwgRXZh
c19Db29yZCB3aWR0aCwgRXZhc19Db29yZCBoZWlnaHQpOwordm9pZCBld2tfdmlld19zY3JvbGwo
RXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2YXNfQ29vcmQgZGVsdGFYLCBFdmFzX0Nvb3JkIGRlbHRh
WSwgRXZhc19Db29yZCBzY3JvbGxYLCBFdmFzX0Nvb3JkIHNjcm9sbFksIEV2YXNfQ29vcmQgc2Ny
b2xsV2lkdGgsIEV2YXNfQ29vcmQgc2Nyb2xsSGVpZ2h0LCBFdmFzX0Nvb3JkIGNlbnRlclgsIEV2
YXNfQ29vcmQgY2VudGVyWSwgRXZhc19Db29yZCBjZW50ZXJXLCBFdmFzX0Nvb3JkIGNlbnRlckhl
aWdodCk7CitXZWJDb3JlOjpQYWdlKiBld2tfdmlld19jb3JlX3BhZ2VfZ2V0KGNvbnN0IEV2YXNf
T2JqZWN0KiBld2tWaWV3KTsKKworV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBld2tf
dmlld19mcmFtZV9jcmVhdGUoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2YXNfT2JqZWN0KiBmcmFt
ZSwgY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVu
dCogb3duZXJFbGVtZW50LCBjb25zdCBXZWJDb3JlOjpLVVJMJiB1cmwsIGNvbnN0IFdURjo6U3Ry
aW5nJiByZWZlcnJlcik7CisKK1dURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGV3a192
aWV3X3BsdWdpbl9jcmVhdGUoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2YXNfT2JqZWN0KiBmcmFt
ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgcGx1Z2luU2l6ZSwgV2ViQ29yZTo6SFRNTFBsdWdJ
bkVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCwgY29uc3QgV1RGOjpW
ZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0
cmluZz4mIHBhcmFtVmFsdWVzLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGJvb2wgbG9h
ZE1hbnVhbGx5KTsKKworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQordm9pZCBld2tfdmll
d19jb2xvcl9jaG9vc2VyX25ldyhFdmFzX09iamVjdCogZXdrVmlldywgV2ViQ29yZTo6Q29sb3JD
aG9vc2VyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBpbml0aWFsQ29sb3Ip
Owordm9pZCBld2tfdmlld19jb2xvcl9jaG9vc2VyX2NoYW5nZWQoRXZhc19PYmplY3QqIGV3a1Zp
ZXcsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBuZXdDb2xvcik7CisjZW5kaWYKKwordm9pZCBld2tf
dmlld19wb3B1cF9uZXcoRXZhc19PYmplY3QqIGV3a1ZpZXcsIFdlYkNvcmU6OlBvcHVwTWVudUNs
aWVudCogY2xpZW50LCBpbnQgc2VsZWN0ZWQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHJlY3Qp
Owordm9pZCBld2tfdmlld192aWV3cG9ydF9hdHRyaWJ1dGVzX3NldChFdmFzX09iamVjdCogZXdr
VmlldywgY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHMmIGFyZ3VtZW50cyk7CisKK3Zv
aWQgZXdrX3ZpZXdfZG93bmxvYWRfcmVxdWVzdChFdmFzX09iamVjdCogZXdrVmlldywgRXdrX0Rv
d25sb2FkKiBkb3dubG9hZCk7CisKK3ZvaWQgZXdrX3ZpZXdfZWRpdG9yX2NsaWVudF9jb250ZW50
c19jaGFuZ2VkKEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKK3ZvaWQgZXdrX3ZpZXdfZWRpdG9yX2Ns
aWVudF9zZWxlY3Rpb25fY2hhbmdlZChFdmFzX09iamVjdCogZXdrVmlldyk7CisKK2Jvb2wgZXdr
X3ZpZXdfZm9jdXNfY2FuX2N5Y2xlKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfRm9jdXNfRGly
ZWN0aW9uIGRpcmVjdGlvbik7Cit2b2lkIGV3a192aWV3X2ZyYW1lX3ZpZXdfY3JlYXRpb25fbm90
aWZ5KEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKKworI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5f
QVBJKQordm9pZCBld2tfdmlld19qc193aW5kb3dfb2JqZWN0X2NsZWFyKEV2YXNfT2JqZWN0KiBl
d2tWaWV3LCBFdmFzX09iamVjdCogZnJhbWUpOworI2VuZGlmCisKKyNpZiBFTkFCTEUoVE9VQ0hf
RVZFTlRTKQordm9pZCBld2tfdmlld19uZWVkX3RvdWNoX2V2ZW50c19zZXQoRXZhc19PYmplY3Qq
LCBib29sIG5lZWRlZCk7Citib29sIGV3a192aWV3X25lZWRfdG91Y2hfZXZlbnRzX2dldChjb25z
dCBFdmFzX09iamVjdCopOworI2VuZGlmCisKK2NvbnN0IEVpbmFfUmVjdGFuZ2xlKiBld2tfdmll
d19yZXBhaW50c19wb3AoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2LCBzaXplX3QqIGNvdW50
KTsKK2NvbnN0IEV3a19TY3JvbGxfUmVxdWVzdCogZXdrX3ZpZXdfc2Nyb2xsX3JlcXVlc3RzX2dl
dChjb25zdCBFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYsIHNpemVfdCogY291bnQpOworCit2
b2lkIGV3a192aWV3X3JlcGFpbnRfYWRkKEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdiwgRXZh
c19Db29yZCB4LCBFdmFzX0Nvb3JkIHksIEV2YXNfQ29vcmQgd2lkdGgsIEV2YXNfQ29vcmQgaGVp
Z2h0KTsKKwordm9pZCBld2tfdmlld19sYXlvdXRfaWZfbmVlZGVkX3JlY3Vyc2l2ZShFd2tfVmll
d19Qcml2YXRlX0RhdGEqIHByaXYpOworCitib29sIGV3a192aWV3X25hdmlnYXRpb25fcG9saWN5
X2RlY2lzaW9uKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfRnJhbWVfUmVzb3VyY2VfUmVxdWVz
dCogcmVxdWVzdCk7CisKK3ZvaWQgZXdrX3ZpZXdfY29udGVudHNfc2l6ZV9jaGFuZ2VkKEV2YXNf
T2JqZWN0KiBld2tWaWV3LCBFdmFzX0Nvb3JkIHdpZHRoLCBFdmFzX0Nvb3JkIGhlaWdodCk7CisK
K1dlYkNvcmU6OkZsb2F0UmVjdCBld2tfdmlld19wYWdlX3JlY3RfZ2V0KGNvbnN0IEV2YXNfT2Jq
ZWN0KiBld2tWaWV3KTsKKwordm9pZCBld2tfdmlld19taXhlZF9jb250ZW50X2Rpc3BsYXllZF9z
ZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGJvb2wgaGFzRGlzcGxheWVkKTsKK3ZvaWQgZXdrX3Zp
ZXdfbWl4ZWRfY29udGVudF9ydW5fc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBib29sIGhhc1J1
bik7CisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCitib29sIGV3a192aWV3X2Fj
Y2VsZXJhdGVkX2NvbXBvc2l0aW5nX29iamVjdF9jcmVhdGUoRXZhc19PYmplY3QqIGV3a1ZpZXcs
IEV2YXNfTmF0aXZlX1N1cmZhY2UqIG5hdGl2ZVN1cmZhY2UsIGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmIHJlY3QpOworV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0QqIGV3a192aWV3X2FjY2VsZXJh
dGVkX2NvbXBvc2l0aW5nX2NvbnRleHRfZ2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKKyNlbmRp
ZgorCituYW1lc3BhY2UgRVdLUHJpdmF0ZSB7CitXZWJDb3JlOjpQYWdlICpjb3JlUGFnZShjb25z
dCBFdmFzX09iamVjdCAqZXdrVmlldyk7CitQbGF0Zm9ybVBhZ2VDbGllbnQgY29yZVBhZ2VDbGll
bnQoRXZhc19PYmplY3QqIGV3a1ZpZXcpOworfSAvLyBuYW1lc3BhY2UgRVdLUHJpdmF0ZQorCisj
ZW5kaWYgLy8gZXdrX3ZpZXdfcHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX3ZpZXdfc2luZ2xlLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmll
d19zaW5nbGUuY3BwCmluZGV4IDFkZWNlMDYuLjljMTg5MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfdmlld19zaW5nbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfdmlld19zaW5nbGUuY3BwCkBAIC0yMiw4ICsyMiw4IEBACiAjaW5jbHVkZSAiZXdr
X3ZpZXcuaCIKIAogI2luY2x1ZGUgImV3a19mcmFtZS5oIgotI2luY2x1ZGUgImV3a19sb2dnaW5n
LmgiCiAjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfdmlld19wcml2YXRl
LmgiCiAKICNpbmNsdWRlIDxFY29yZV9FdmFzLmg+CiAjaW5jbHVkZSA8RXZhcy5oPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3X3RpbGVkLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfdmlld190aWxlZC5jcHAKaW5kZXggMzQyY2M0ZS4uNTVhNThlMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3X3RpbGVkLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfdGlsZWQuY3BwCkBAIC0yMSwxMyArMjEs
MTIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJld2tfdmlldy5oIgogCi0jaW5j
bHVkZSAiZXdrX2xvZ2dpbmcuaCIKICNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgotCisjaW5jbHVk
ZSAiZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a192aWV3
X3ByaXZhdGUuaCIKICNpbmNsdWRlIDxFdmFzLmg+CiAjaW5jbHVkZSA8UmVmUHRyQ2Fpcm8uaD4K
ICNpbmNsdWRlIDxlaW5hX3NhZmV0eV9jaGVja3MuaD4KLSNpbmNsdWRlIDxld2tfdGlsZWRfYmFj
a2luZ19zdG9yZS5oPgogCiBzdGF0aWMgRXdrX1ZpZXdfU21hcnRfQ2xhc3MgX3BhcmVudF9zYyA9
IEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfTlVMTDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a193aW5kb3dfZmVhdHVyZXMuY3BwIGIvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a193aW5kb3dfZmVhdHVyZXMuY3BwCmluZGV4IDYxODFiZGEuLjMwMDAyOGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfd2luZG93X2ZlYXR1cmVzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3dpbmRvd19mZWF0dXJlcy5jcHAKQEAgLTIyLDcg
KzIyLDYgQEAKICNpbmNsdWRlICJld2tfd2luZG93X2ZlYXR1cmVzLmgiCiAKICNpbmNsdWRlICJX
aW5kb3dGZWF0dXJlcy5oIgotI2luY2x1ZGUgImV3a19sb2dnaW5nLmgiCiAjaW5jbHVkZSAiZXdr
X3ByaXZhdGUuaCIKICNpbmNsdWRlIDxFaW5hLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvZWZsL2V3ay9ld2tfd2luZG93X2ZlYXR1cmVzX3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQv
ZWZsL2V3ay9ld2tfd2luZG93X2ZlYXR1cmVzX3ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi4wNjU4NTkyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a193aW5kb3dfZmVhdHVyZXNfcHJpdmF0ZS5oCkBAIC0wLDAgKzEsMjYgQEAK
Ky8qCisgICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3Rl
bXMKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAg
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
KyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKwor
I2lmbmRlZiBld2tfd2luZG93X2ZlYXR1cmVzX3ByaXZhdGVfaAorI2RlZmluZSBld2tfd2luZG93
X2ZlYXR1cmVzX3ByaXZhdGVfaAorCitFd2tfV2luZG93X0ZlYXR1cmVzKiBld2tfd2luZG93X2Zl
YXR1cmVzX25ld19mcm9tX2NvcmUoY29uc3QgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMqIGNvcmUp
OworCisjZW5kaWYgLy8gZXdrX3dpbmRvd19mZWF0dXJlc19wcml2YXRlX2gKZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhNzE0NzVkLi45NGQwMDZk
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTIgQEAKKzIwMTItMDUtMTEgIFRvbWFzeiBNb3Jhd3NraSAgPHQubW9yYXdza2lAc2Ft
c3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bRFJUXSBTcGxpdCBld2tfcHJpdmF0ZS5oIHRvIG11
bHRpcGxlIHByaXZhdGUgZmlsZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04NDU3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZWZsL0R1bXBSZW5kZXJUcmVlQ2hyb21lLmNw
cDoKKwogMjAxMi0wNS0xMiAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4K
IAogICAgICAgICBydW4tc2FmYXJpIGFuZCBjby4gc2hvdWxkIHN1cHBvcnQgLS1ndWFyZC1tYWxs
b2MgY29tbWFuZCBsaW5lIGFyZ3VtZW50CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9lZmwvRHVtcFJlbmRlclRyZWVDaHJvbWUuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZs
L0R1bXBSZW5kZXJUcmVlQ2hyb21lLmNwcAppbmRleCA5Zjc0NDE2Li5hYWE1NGViIDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvRHVtcFJlbmRlclRyZWVDaHJvbWUuY3BwCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9EdW1wUmVuZGVyVHJlZUNocm9tZS5jcHAKQEAg
LTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJEdW1wUmVuZGVyVHJlZVZpZXcuaCIKICNpbmNsdWRl
ICJFdmVudFNlbmRlci5oIgogI2luY2x1ZGUgIkdDQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIktV
UkwuaCIKICNpbmNsdWRlICJMYXlvdXRUZXN0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIk5vdElt
cGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiVGV4dElucHV0Q29udHJvbGxlci5oIgo=
</data>
<flag name="review"
          id="147825"
          type_id="1"
          status="+"
          setter="tonikitoo"
    />
    <flag name="commit-queue"
          id="147902"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141877</attachid>
            <date>2012-05-15 00:30:17 -0700</date>
            <delta_ts>2012-05-15 02:48:40 -0700</delta_ts>
            <desc>Rebased</desc>
            <filename>private4.patch</filename>
            <type>text/plain</type>
            <size>89990</size>
            <attacher name="Tomasz Morawski">t.morawski</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggMDIwMzU1Zi4uZWEyZDI0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAor
MjAxMi0wNS0xNCAgVG9tYXN6IE1vcmF3c2tpICA8dC5tb3Jhd3NraUBzYW1zdW5nLmNvbT4KKwor
ICAgICAgICBbRUZMXSBTcGxpdCBld2tfcHJpdmF0ZS5oIGZpbGUgdG8gbXVsdGlwbGUgcHJpdmF0
ZSBmaWxlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTg0NTcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KKworICAgICAgICAq
IFBsYXRmb3JtRWZsLmNtYWtlOiBSZW1vdmVkIGV3a19sb2dnaW5nLmggZmlsZSBmcm9tIEVXZWJL
aXRfSEVBREVSUy4KKwogMjAxMi0wNS0xMCAgU2FtIEQgIDxkc2FtMjkxMkBnbWFpbC5jb20+CiAK
ICAgICAgICAgV2ViIEluc3BlY3RvcjogcmVuYW1lIEluc3BlY3RvckJhY2tlbmRTdHViLmpzIHRv
IEluc3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXgg
ZmM0M2I0Ni4uZGQyMjhjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUVmbC5j
bWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0yNTYsNyArMjU2
LDYgQEAgU0VUKEVXZWJLaXRfSEVBREVSUwogICAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElS
fS9lZmwvZXdrL2V3a19mcmFtZS5oCiAgICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2Vm
bC9ld2svZXdrX2hpc3RvcnkuaAogICAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9lZmwv
ZXdrL2V3a19qcy5oCi0gICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2VmbC9ld2svZXdr
X2xvZ2dpbmcuaAogICAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9lZmwvZXdrL2V3a19t
YWluLmgKICAgICAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vZWZsL2V3ay9ld2tfbmV0d29y
ay5oCiAgICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2VmbC9ld2svZXdrX3NlY3VyaXR5
X29yaWdpbi5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggMWU3NTA1MS4uYTExZTRmNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0No
YW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDEyLTA1LTE0ICBUb21hc3ogTW9yYXdza2kgIDx0
Lm1vcmF3c2tpQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdIFNwbGl0IGV3a19wcml2YXRl
LmggZmlsZSB0byBtdWx0aXBsZSBwcml2YXRlIGZpbGVzLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQ1NzIKKworICAgICAgICBSZXZpZXdlZCBieSBB
bnRvbmlvIEdvbWVzLgorCisgICAgICAgIFNwbGl0IGV3a19wcml2YXRlIGZpbGUgdG8gbXVsdGlw
bGUgcHJpdmF0ZSBmaWxlcy4KKyAgICAgICAgRGVsZXRlIGV3a19sb2dnaW5nLmggYW5kIGV3a190
aWxlZF9wcml2YXRlLmggZmlsZXMgYW5kIHJlbW92ZWQgdGlsZWRfYmFja2luZ19zdG9yZSBsb2dn
aW5nIGRvbWFpbi4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5j
cHA6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNw
cDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoKKyAgICAgICAgKiBl
d2svZXdrX2F1dGguY3BwOgorICAgICAgICAqIGV3ay9ld2tfYXV0aF9zb3VwLmNwcDoKKyAgICAg
ICAgKGRldGFjaCk6CisgICAgICAgICogZXdrL2V3a19hdXRoX3NvdXBfcHJpdmF0ZS5oOiBSZW5h
bWVkIGZyb20gU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19hdXRoX3NvdXAuaC4KKyAgICAgICAg
KiBld2svZXdrX2NvbnRleHRtZW51X3ByaXZhdGUuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a19wcml2YXRlLmguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBl
d2svZXdrX2ZyYW1lLmNwcDoKKyAgICAgICAgKiBld2svZXdrX2ZyYW1lX3ByaXZhdGUuaDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEVXS1ByaXZhdGUpOgorICAgICAgICAq
IGV3ay9ld2tfaGlzdG9yeS5jcHA6CisgICAgICAgICogZXdrL2V3a19oaXN0b3J5X3ByaXZhdGUu
aDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcml2YXRlLmguCisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKEVXS1ByaXZhdGUpOgorICAgICAgICAqIGV3ay9ld2tf
anMuY3BwOgorICAgICAgICAqIGV3ay9ld2tfanNfcHJpdmF0ZS5oOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX3ByaXZhdGUuaC4KKyAgICAgICAgKF9Fd2tfSlNfT2JqZWN0
KToKKyAgICAgICAgKiBld2svZXdrX21haW4uY3BwOgorICAgICAgICAqIGV3ay9ld2tfbmV0d29y
ay5jcHA6CisgICAgICAgICogZXdrL2V3a19wcml2YXRlLmg6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKiBld2svZXdrX3NlY3VyaXR5X29yaWdpbl9wcml2YXRlLmg6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfcHJpdmF0ZS5oLgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgICogZXdrL2V3a19zZXR0aW5ncy5jcHA6CisgICAgICAgICogZXdrL2V3a19zZXR0
aW5nc19wcml2YXRlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfcHJp
dmF0ZS5oLgorICAgICAgICAqIGV3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5jcHA6CisgICAg
ICAgIChfRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfSXRlbSk6CisgICAgICAgIChld2tfdGlsZWRf
YmFja2luZ19zdG9yZV9hZGQpOgorICAgICAgICAqIGV3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9y
ZV9wcml2YXRlLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3RpbGVk
X2JhY2tpbmdfc3RvcmUuaC4KKyAgICAgICAgKF9Fd2tfVGlsZV9TdGF0cyk6CisgICAgICAgIChf
RXdrX1RpbGUpOgorICAgICAgICAqIGV3ay9ld2tfdGlsZWRfbWF0cml4LmNwcDoKKyAgICAgICAg
KiBld2svZXdrX3RpbGVkX21hdHJpeF9wcml2YXRlLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2Vi
S2l0L2VmbC9ld2svZXdrX3RpbGVkX21hdHJpeC5oLgorICAgICAgICAqIGV3ay9ld2tfdGlsZWRf
bW9kZWwuY3BwOgorICAgICAgICAodGlsZV9hY2NvdW50KToKKyAgICAgICAgKiBld2svZXdrX3Rp
bGVkX21vZGVsX3ByaXZhdGUuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfdGlsZWRfbW9kZWwuaC4KKyAgICAgICAgKiBld2svZXdrX3V0aWwuY3BwOgorICAgICAgICAq
IGV3ay9ld2tfdXRpbF9wcml2YXRlLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX3V0aWwuaC4KKyAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgorICAgICAgICAoX0V3
a19WaWV3X1ByaXZhdGVfRGF0YSk6CisgICAgICAgICogZXdrL2V3a192aWV3X3ByaXZhdGUuaDog
Q29waWVkIGZyb20gU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcml2YXRlLmguCisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKEVXS1ByaXZhdGUpOgorICAgICAgICAqIGV3ay9ld2tfdmll
d19zaW5nbGUuY3BwOgorICAgICAgICAqIGV3ay9ld2tfdmlld190aWxlZC5jcHA6CisgICAgICAg
ICogZXdrL2V3a193aW5kb3dfZmVhdHVyZXMuY3BwOgorICAgICAgICAqIGV3ay9ld2tfd2luZG93
X2ZlYXR1cmVzX3ByaXZhdGUuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a19wcml2YXRlLmguCisKIDIwMTItMDUtMTQgIFJhcGhhZWwgS3VibyBkYSBDb3N0YSAgPHJha3Vj
b0B3ZWJraXQub3JnPgogCiAgICAgICAgIFtFRkxdIFJlbW92ZSBld2tfdmlld19jb3JlX3BhZ2Vf
Z2V0KCkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRFZmwuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50RWZsLmNwcAppbmRleCA0ZWQ0ZjkzLi4yZDQyYWUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAKQEAgLTM3LDYg
KzM3LDcgQEAKICNpbmNsdWRlICJGaWxlQ2hvb3Nlci5oIgogI2luY2x1ZGUgIkZpbGVJY29uTG9h
ZGVyLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNs
dWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50RWZsLmgiCiAj
aW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgpAQCAtNTAsNyArNTEsOSBAQAogI2luY2x1ZGUgIlNl
Y3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiVmlld3BvcnRBcmd1bWVudHMuaCIKICNpbmNsdWRl
ICJXaW5kb3dGZWF0dXJlcy5oIgorI2luY2x1ZGUgImV3a19mcmFtZV9wcml2YXRlLmgiCiAjaW5j
bHVkZSAiZXdrX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfdmlld19wcml2YXRlLmgiCiAjaW5j
bHVkZSA8RWNvcmVfRXZhcy5oPgogI2luY2x1ZGUgPEV2YXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9y
dC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29y
ZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcAppbmRleCAxNDg2Y2JjLi44Y2Ri
ZDI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVu
ZGVyVHJlZVN1cHBvcnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAKQEAgLTIyLDcgKzIyLDEwIEBACiAjaW5j
bHVkZSAiRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmgiCiAKICNpbmNsdWRlICJGcmFtZUxvYWRl
ckNsaWVudEVmbC5oIgorI2luY2x1ZGUgImV3a19mcmFtZV9wcml2YXRlLmgiCisjaW5jbHVkZSAi
ZXdrX2hpc3RvcnlfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19wcml2YXRlLmgiCisjaW5jbHVk
ZSAiZXdrX3ZpZXdfcHJpdmF0ZS5oIgogCiAjaW5jbHVkZSA8QW5pbWF0aW9uQ29udHJvbGxlci5o
PgogI2luY2x1ZGUgPENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5jcHAKaW5kZXgg
OTIxN2NjMS4uMmU5YzUwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1
cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3Jl
U3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwCkBAIC0zNSw3ICszNSw5IEBACiAjaW5jbHVkZSAi
U2V0dGluZ3MuaCIKICNpbmNsdWRlICJVbmRvU3RlcC5oIgogI2luY2x1ZGUgIldpbmRvd3NLZXli
b2FyZENvZGVzLmgiCisjaW5jbHVkZSAiZXdrX2ZyYW1lX3ByaXZhdGUuaCIKICNpbmNsdWRlICJl
d2tfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a192aWV3X3ByaXZhdGUuaCIKIAogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcAppbmRleCA1MTg1ZDFlLi5kNzhmMDIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRFZmwuY3BwCkBAIC01Myw4ICs1MywxMCBAQAogI2luY2x1ZGUgIlJlc291
cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIldlYktpdFZl
cnNpb24uaCIKLSNpbmNsdWRlICJld2tfbG9nZ2luZy5oIgorI2luY2x1ZGUgImV3a19mcmFtZV9w
cml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfc2V0dGlu
Z3NfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a192aWV3X3ByaXZhdGUuaCIKICNpbmNsdWRlIDxF
Y29yZV9FdmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX2F1dGguY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19hdXRoLmNwcApp
bmRleCBhZjIxNzJhLi4xNTBiOGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX2F1dGguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfYXV0aC5jcHAKQEAg
LTIwLDcgKzIwLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJld2tfYXV0aC5o
IgogCi0jaW5jbHVkZSAiZXdrX2F1dGhfc291cC5oIgorI2luY2x1ZGUgImV3a19hdXRoX3NvdXBf
cHJpdmF0ZS5oIgogCiB2b2lkIGV3a19hdXRoX3Nob3dfZGlhbG9nX2NhbGxiYWNrX3NldChFd2tf
QXV0aF9TaG93X0RpYWxvZ19DYWxsYmFjayBjYWxsYmFjaykKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfYXV0aF9zb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfYXV0aF9zb3VwLmNwcAppbmRleCBkODU0MjdkLi5mNTRmYjBlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2F1dGhfc291cC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a19hdXRoX3NvdXAuY3BwCkBAIC0xOSwxOCArMTksMTMgQEAKICovCiAKICNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJld2tfYXV0aF9zb3VwLmgiCisjaW5jbHVkZSAi
ZXdrX2F1dGhfc291cF9wcml2YXRlLmgiCiAKICNpbmNsdWRlICJld2tfYXV0aC5oIgotI2luY2x1
ZGUgImV3a19sb2dnaW5nLmgiCiAjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KICNpbmNsdWRlIDxn
bGliLmg+CiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+CiAKLSNpZmRlZiBfX2NwbHVzcGx1cwot
ZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLQogLyoqCiAgKiAjRXdrX1NvdXBfQXV0aF9EaWFsb2cgaXMg
YSAjU291cFNlc3Npb25GZWF0dXJlIHRoYXQgeW91IGNhbiBhdHRhY2ggdG8geW91cgogICogI1Nv
dXBTZXNzaW9uIHRvIHByb3ZpZGUgYSBzaW1wbGUgYXV0aGVudGljYXRpb24gZGlhbG9nIHdoaWxl
CkBAIC02OCwxMSArNjMsMjMgQEAgc3RhdGljIHZvaWQgZXdrX2F1dGhfc291cF9kaWFsb2dfc2Vz
c2lvbl9mZWF0dXJlX2luaXQoU291cFNlc3Npb25GZWF0dXJlSW50ZXJmYWMKICAgICBmZWF0dXJl
SW50ZXJmYWNlLT5kZXRhY2ggPSBkZXRhY2g7CiB9CiAKKy8qKgorICogQGludGVybmFsCisgKiAg
U2V0cyBjYWxsYmFjayB0byBiZSBjYWxsZWQgd2hlbiBhdXRoZW50aWNhdGlvbiBpcyByZXF1aXJl
ZC4KKyAqLwogdm9pZCBld2tfYXV0aF9zb3VwX3Nob3dfZGlhbG9nX2NhbGxiYWNrX3NldChFd2tf
QXV0aF9TaG93X0RpYWxvZ19DYWxsYmFjayBjYWxsYmFjaykKIHsKICAgICBld2tfYXV0aF9zaG93
X2RpYWxvZ19jYWxsYmFjayA9IGNhbGxiYWNrOwogfQogCisvKioKKyAqIEBpbnRlcm5hbAorICog
IE1ldGhvZCBmb3Igc2V0dGluZyBjcmVkZW50aWFscworICoKKyAqICBAcGFyYW0gdXNlcm5hbWUg
dXNlcm5hbWUKKyAqICBAcGFyYW0gcGFzc3dvcmQgcGFzc3dvcmQKKyAqICBAcGFyYW0gZGF0YSBz
b3VwIGF1dGhlbnRpY2F0aW9uIGRhdGEKKyAqLwogdm9pZCBld2tfYXV0aF9zb3VwX2NyZWRlbnRp
YWxzX3NldChjb25zdCBjaGFyKiB1c2VybmFtZSwgY29uc3QgY2hhciogcGFzc3dvcmQsIHZvaWQq
IGRhdGEpCiB7CiAgICAgaWYgKCFkYXRhKQpAQCAtMTI4LDcgKzEzNSwzIEBAIHN0YXRpYyB2b2lk
IGRldGFjaChTb3VwU2Vzc2lvbkZlYXR1cmUqIG1hbmFnZXIsIFNvdXBTZXNzaW9uKiBzZXNzaW9u
KQogewogICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhzZXNzaW9uLCAo
dm9pZCopc2Vzc2lvbl9hdXRoZW50aWNhdGUsIG1hbmFnZXIpOwogfQotCi0jaWZkZWYgX19jcGx1
c3BsdXMKLX0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19h
dXRoX3NvdXAuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfYXV0aF9zb3VwLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJkMjZiMDQuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a19hdXRoX3NvdXAuaAorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAg
QEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA5IElnYWxpYSBTLkwuCi0gICAgQ29weXJpZ2h0
IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKLQotICAgIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAgIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgotICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAg
ICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAg
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gICAg
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0jaWZuZGVmIGV3a19hdXRoX3NvdXBf
aAotI2RlZmluZSBld2tfYXV0aF9zb3VwX2gKLQotI2luY2x1ZGUgImV3a19hdXRoLmgiCi0jaW5j
bHVkZSA8Z2xpYi1vYmplY3QuaD4KLSNpbmNsdWRlIDxnbGliLmg+Ci0KLSNpZmRlZiBfX2NwbHVz
cGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLQotI2RlZmluZSBFV0tfVFlQRV9TT1VQX0FVVEhf
RElBTE9HICAgICAgICAgICAgKGV3a19hdXRoX3NvdXBfZGlhbG9nX2dldF90eXBlKCkpCi0jZGVm
aW5lIEVXS19TT1VQX0FVVEhfRElBTE9HKG9iamVjdCkgICAgICAgICAoR19UWVBFX0NIRUNLX0lO
U1RBTkNFX0NBU1QoKG9iamVjdCksIEVXS19UWVBFX1NPVVBfQVVUSF9ESUFMT0csIEV3a19Tb3Vw
X0F1dGhfRGlhbG9nKSkKLSNkZWZpbmUgRVdLX1NPVVBfQVVUSF9ESUFMT0dfQ0xBU1Moa2xhc3Mp
ICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCBFV0tfVFlQRV9TT1VQX0FVVEhf
RElBTE9HLCBFd2tfU291cF9BdXRoX0RpYWxvZykpCi0jZGVmaW5lIEVXS19JU19TT1VQX0FVVEhf
RElBTE9HKG9iamVjdCkgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iamVjdCks
IEVXS19UWVBFX1NPVVBfQVVUSF9ESUFMT0cpKQotI2RlZmluZSBFV0tfSVNfU09VUF9BVVRIX0RJ
QUxPR19DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksIEVXS19U
WVBFX1NPVVBfQVVUSF9ESUFMT0cpKQotI2RlZmluZSBFV0tfU09VUF9BVVRIX0RJQUxPR19HRVRf
Q0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksIEVXS19UWVBFX1NP
VVBfQVVUSF9ESUFMT0csIEV3a19Tb3VwX0F1dGhfRGlhbG9nKSkKLQotdHlwZWRlZiBzdHJ1Y3Qg
ewotICAgIEdPYmplY3QgcGFyZW50X2luc3RhbmNlOwotfSBFd2tfU291cF9BdXRoX0RpYWxvZzsK
LQotdHlwZWRlZiBzdHJ1Y3QgewotICAgIEdPYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7Ci19IEV3
a19Tb3VwX0F1dGhfRGlhbG9nQ2xhc3M7Ci0KLUdUeXBlIGV3a19hdXRoX3NvdXBfZGlhbG9nX2dl
dF90eXBlKHZvaWQpOwotCi0vKioKLSAqICBTZXRzIGNhbGxiYWNrIHRvIGJlIGNhbGxlZCB3aGVu
IGF1dGhlbnRpY2F0aW9uIGlzIHJlcXVpcmVkLgotICovCi12b2lkIGV3a19hdXRoX3NvdXBfc2hv
d19kaWFsb2dfY2FsbGJhY2tfc2V0KEV3a19BdXRoX1Nob3dfRGlhbG9nX0NhbGxiYWNrIGNhbGxi
YWNrKTsKLQotLyoqCi0gKiAgTWV0aG9kIGZvciBzZXR0aW5nIGNyZWRlbnRpYWxzCi0gKgotICog
IEBwYXJhbSB1c2VybmFtZSB1c2VybmFtZQotICogIEBwYXJhbSBwYXNzd29yZCBwYXNzd29yZAot
ICogIEBwYXJhbSBkYXRhIHNvdXAgYXV0aGVudGljYXRpb24gZGF0YQotICovCi12b2lkIGV3a19h
dXRoX3NvdXBfY3JlZGVudGlhbHNfc2V0KGNvbnN0IGNoYXIgKnVzZXJuYW1lLCBjb25zdCBjaGFy
ICpwYXNzd29yZCwgdm9pZCAqZGF0YSk7Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlm
Ci0KLSNlbmRpZiAvLyBld2tfYXV0aF9zb3VwX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
ZWZsL2V3ay9ld2tfYXV0aF9zb3VwX3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfYXV0aF9zb3VwX3ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5jMzY0ZjYxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19h
dXRoX3NvdXBfcHJpdmF0ZS5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgICAgQ29weXJpZ2h0IChD
KSAyMDA5IElnYWxpYSBTLkwuCisgICAgQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ry
b25pY3MKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCisqLworCisjaWZuZGVmIGV3a19hdXRoX3NvdXBfcHJpdmF0ZV9oCisjZGVmaW5lIGV3a19h
dXRoX3NvdXBfcHJpdmF0ZV9oCisKKyNpbmNsdWRlICJld2tfYXV0aC5oIgorI2luY2x1ZGUgPGds
aWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8Z2xpYi5oPgorCisjZGVmaW5lIEVXS19UWVBFX1NPVVBf
QVVUSF9ESUFMT0cgICAgICAgICAgICAoZXdrX2F1dGhfc291cF9kaWFsb2dfZ2V0X3R5cGUoKSkK
KyNkZWZpbmUgRVdLX1NPVVBfQVVUSF9ESUFMT0cob2JqZWN0KSAgICAgICAgIChHX1RZUEVfQ0hF
Q0tfSU5TVEFOQ0VfQ0FTVCgob2JqZWN0KSwgRVdLX1RZUEVfU09VUF9BVVRIX0RJQUxPRywgRXdr
X1NvdXBfQXV0aF9EaWFsb2cpKQorI2RlZmluZSBFV0tfU09VUF9BVVRIX0RJQUxPR19DTEFTUyhr
bGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksIEVXS19UWVBFX1NPVVBf
QVVUSF9ESUFMT0csIEV3a19Tb3VwX0F1dGhfRGlhbG9nKSkKKyNkZWZpbmUgRVdLX0lTX1NPVVBf
QVVUSF9ESUFMT0cob2JqZWN0KSAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2Jq
ZWN0KSwgRVdLX1RZUEVfU09VUF9BVVRIX0RJQUxPRykpCisjZGVmaW5lIEVXS19JU19TT1VQX0FV
VEhfRElBTE9HX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwg
RVdLX1RZUEVfU09VUF9BVVRIX0RJQUxPRykpCisjZGVmaW5lIEVXS19TT1VQX0FVVEhfRElBTE9H
X0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgRVdLX1RZ
UEVfU09VUF9BVVRIX0RJQUxPRywgRXdrX1NvdXBfQXV0aF9EaWFsb2cpKQorCit0eXBlZGVmIHN0
cnVjdCB7CisgICAgR09iamVjdCBwYXJlbnRfaW5zdGFuY2U7Cit9IEV3a19Tb3VwX0F1dGhfRGlh
bG9nOworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgR09iamVjdENsYXNzIHBhcmVudF9jbGFzczsK
K30gRXdrX1NvdXBfQXV0aF9EaWFsb2dDbGFzczsKKworR1R5cGUgZXdrX2F1dGhfc291cF9kaWFs
b2dfZ2V0X3R5cGUodm9pZCk7CisKKy8qKgorICogIFNldHMgY2FsbGJhY2sgdG8gYmUgY2FsbGVk
IHdoZW4gYXV0aGVudGljYXRpb24gaXMgcmVxdWlyZWQuCisgKi8KK3ZvaWQgZXdrX2F1dGhfc291
cF9zaG93X2RpYWxvZ19jYWxsYmFja19zZXQoRXdrX0F1dGhfU2hvd19EaWFsb2dfQ2FsbGJhY2sg
Y2FsbGJhY2spOworCit2b2lkIGV3a19hdXRoX3NvdXBfY3JlZGVudGlhbHNfc2V0KGNvbnN0IGNo
YXIgKnVzZXJuYW1lLCBjb25zdCBjaGFyICpwYXNzd29yZCwgdm9pZCAqZGF0YSk7CisKKyNlbmRp
ZiAvLyBld2tfYXV0aF9zb3VwX3ByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a19jb250ZXh0bWVudV9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX2NvbnRleHRtZW51X3ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5jZTFmM2E4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a19jb250ZXh0bWVudV9wcml2YXRlLmgKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAgICBDb3B5cmln
aHQgKEMpIDIwMDktMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcworICAgIENvcHlyaWdo
dCAoQykgMjAwOS0yMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwor
ICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIGV3a19jb250
ZXh0bWVudV9wcml2YXRlX2gKKyNkZWZpbmUgZXdrX2NvbnRleHRtZW51X3ByaXZhdGVfaAorCisv
LyBmb3J3YXJkIGRlY2xhcmF0aW9ucworbmFtZXNwYWNlIFdlYkNvcmUgeworc3RydWN0IENvbnRl
eHRNZW51Oworc3RydWN0IENvbnRleHRNZW51SXRlbTsKK30KKworI2lmIEVOQUJMRShDT05URVhU
X01FTlVTKQorRXdrX0NvbnRleHRfTWVudSogZXdrX2NvbnRleHRfbWVudV9uZXcoRXZhc19PYmpl
Y3QqIHZpZXcsIFdlYkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxlciogY29udHJvbGxlcik7Citi
b29sIGV3a19jb250ZXh0X21lbnVfZnJlZShFd2tfQ29udGV4dF9NZW51KiBtZW51KTsKK3ZvaWQg
ZXdrX2NvbnRleHRfbWVudV9pdGVtX2FwcGVuZChFd2tfQ29udGV4dF9NZW51KiBtZW51LCBXZWJD
b3JlOjpDb250ZXh0TWVudUl0ZW0mIGNvcmUpOworRXdrX0NvbnRleHRfTWVudSogZXdrX2NvbnRl
eHRfbWVudV9jdXN0b21pemUoRXdrX0NvbnRleHRfTWVudSogbWVudSk7Cit2b2lkIGV3a19jb250
ZXh0X21lbnVfc2hvdyhFd2tfQ29udGV4dF9NZW51KiBtZW51KTsKKyNlbmRpZgorCisjZW5kaWYg
Ly8gZXdrX2NvbnRleHRfbWFudV9wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
ZWZsL2V3ay9ld2tfZnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5j
cHAKaW5kZXggOTY0YjY5Mi4uODdhOTNmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a19mcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5j
cHAKQEAgLTUwLDEzICs1MCwxNyBAQAogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1
ZGUgIlN1YnN0aXR1dGVEYXRhLmgiCiAjaW5jbHVkZSAiV2luZG93c0tleWJvYXJkQ29kZXMuaCIK
LSNpbmNsdWRlICJld2tfbG9nZ2luZy5oIgorI2luY2x1ZGUgImV3a19mcmFtZV9wcml2YXRlLmgi
CiAjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfc2VjdXJpdHlfb3JpZ2lu
X3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfdmlld19wcml2YXRlLmgiCiAjaW5jbHVkZSA8RWlu
YS5oPgogI2luY2x1ZGUgPEV2YXMuaD4KICNpbmNsdWRlIDxlaW5hX3NhZmV0eV9jaGVja3MuaD4K
ICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIHN0YXRpYyBjb25zdCBjaGFyIEVXS19GUkFNRV9U
WVBFX1NUUltdID0gIkVXS19GcmFtZSI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX2ZyYW1lX3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWVf
cHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkMDg3ZGUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lX3ByaXZhdGUu
aApAQCAtMCwwICsxLDg2IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFByb0ZV
U0lPTiBlbWJlZGRlZCBzeXN0ZW1zCisgICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTIgU2Ftc3Vu
ZyBFbGVjdHJvbmljcworCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
CisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KKyovCisKKyNpZm5kZWYgZXdrX2ZyYW1lX3ByaXZhdGVfaAorI2RlZmluZSBl
d2tfZnJhbWVfcHJpdmF0ZV9oCisKKyNpbmNsdWRlICJld2tfZnJhbWUuaCIKKyNpbmNsdWRlIDxF
dmFzLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFdpZGdldDsKK2NsYXNzIEZyYW1lOwor
fQorCitFdmFzX09iamVjdCogZXdrX2ZyYW1lX2FkZChFdmFzKiBjYW52YXMpOworYm9vbCBld2tf
ZnJhbWVfaW5pdChFdmFzX09iamVjdCogZXdrRnJhbWUsIEV2YXNfT2JqZWN0KiB2aWV3LCBXZWJD
b3JlOjpGcmFtZSogZnJhbWUpOworYm9vbCBld2tfZnJhbWVfY2hpbGRfYWRkKEV2YXNfT2JqZWN0
KiBld2tGcmFtZSwgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBjaGlsZCwgY29uc3Qg
V1RGOjpTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCwgY29uc3QgV1RGOjpT
dHJpbmcmIHJlZmVycmVyKTsKK3ZvaWQgZXdrX2ZyYW1lX3ZpZXdfc2V0KEV2YXNfT2JqZWN0KiBl
d2tGcmFtZSwgRXZhc19PYmplY3QqIG5ld1BhcmVudCk7CisKK3ZvaWQgZXdrX2ZyYW1lX2NvcmVf
Z29uZShFdmFzX09iamVjdCogZXdrRnJhbWUpOworCit2b2lkIGV3a19mcmFtZV9sb2FkX2NvbW1p
dHRlZChFdmFzX09iamVjdCogZXdrRnJhbWUpOwordm9pZCBld2tfZnJhbWVfbG9hZF9zdGFydGVk
KEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7Cit2b2lkIGV3a19mcmFtZV9sb2FkX3Byb3Zpc2lvbmFs
KEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7Cit2b2lkIGV3a19mcmFtZV9sb2FkX2ZpcnN0bGF5b3V0
X2ZpbmlzaGVkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7Cit2b2lkIGV3a19mcmFtZV9sb2FkX2Zp
cnN0bGF5b3V0X25vbmVtcHR5X2ZpbmlzaGVkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7Cit2b2lk
IGV3a19mcmFtZV9sb2FkX2RvY3VtZW50X2ZpbmlzaGVkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7
Cit2b2lkIGV3a19mcmFtZV9sb2FkX2ZpbmlzaGVkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgY29u
c3QgY2hhciogZXJyb3JEb21haW4sIGludCBlcnJvckNvZGUsIGJvb2wgaXNDYW5jZWxsYXRpb24s
IGNvbnN0IGNoYXIqIGVycm9yRGVzY3JpcHRpb24sIGNvbnN0IGNoYXIqIGZhaWxpbmdVcmwpOwor
dm9pZCBld2tfZnJhbWVfbG9hZF9yZXNvdXJjZV9maW5pc2hlZChFdmFzX09iamVjdCogZXdrRnJh
bWUsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7Cit2b2lkIGV3a19mcmFtZV9sb2FkX3Jlc291
cmNlX2ZhaWxlZChFdmFzX09iamVjdCogZXdrRnJhbWUsIEV3a19GcmFtZV9Mb2FkX0Vycm9yKiBl
cnJvcik7Cit2b2lkIGV3a19mcmFtZV9sb2FkX2Vycm9yKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwg
Y29uc3QgY2hhciogZXJyb3JEb21haW4sIGludCBlcnJvckNvZGUsIGJvb2wgaXNDYW5jZWxsYXRp
b24sIGNvbnN0IGNoYXIqIGVycm9yRGVzY3JpcHRpb24sIGNvbnN0IGNoYXIqIGZhaWxpbmdVcmwp
Owordm9pZCBld2tfZnJhbWVfbG9hZF9wcm9ncmVzc19jaGFuZ2VkKEV2YXNfT2JqZWN0KiBld2tG
cmFtZSk7CisKK3ZvaWQgZXdrX2ZyYW1lX3JlZGlyZWN0X2NhbmNlbGxlZChFdmFzX09iamVjdCog
ZXdrRnJhbWUpOwordm9pZCBld2tfZnJhbWVfcmVkaXJlY3RfcHJvdmlzaW9uYWxfbG9hZChFdmFz
X09iamVjdCogZXdrRnJhbWUpOwordm9pZCBld2tfZnJhbWVfcmVkaXJlY3RfcmVxdWVzdGVkKEV2
YXNfT2JqZWN0KiBld2tGcmFtZSwgY29uc3QgY2hhciogdXJsKTsKK3ZvaWQgZXdrX2ZyYW1lX3Jl
cXVlc3Rfd2lsbF9zZW5kKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgRXdrX0ZyYW1lX1Jlc291cmNl
X01lc3NhZ2VzKiBtZXNzYWdlcyk7Cit2b2lkIGV3a19mcmFtZV9yZXF1ZXN0X2Fzc2lnbl9pZGVu
dGlmaWVyKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgY29uc3QgRXdrX0ZyYW1lX1Jlc291cmNlX1Jl
cXVlc3QqIHJlcXVlc3QpOwordm9pZCBld2tfZnJhbWVfcmVzcG9uc2VfcmVjZWl2ZWQoRXZhc19P
YmplY3QqIGV3a0ZyYW1lLCBFd2tfRnJhbWVfUmVzb3VyY2VfUmVzcG9uc2UqIHJlc3BvbnNlKTsK
K3ZvaWQgZXdrX2ZyYW1lX3ZpZXdfc3RhdGVfc2F2ZShFdmFzX09iamVjdCogZXdrRnJhbWUsIFdl
YkNvcmU6Okhpc3RvcnlJdGVtKiBpdGVtKTsKKwordm9pZCBld2tfZnJhbWVfZGlkX3BlcmZvcm1f
Zmlyc3RfbmF2aWdhdGlvbihFdmFzX09iamVjdCogZXdrRnJhbWUpOworCit2b2lkIGV3a19mcmFt
ZV9jb250ZW50c19zaXplX2NoYW5nZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBFdmFzX0Nvb3Jk
IHdpZHRoLCBFdmFzX0Nvb3JkIGhlaWdodCk7Cit2b2lkIGV3a19mcmFtZV90aXRsZV9zZXQoRXZh
c19PYmplY3QqIGV3a0ZyYW1lLCBjb25zdCBjaGFyKiB0aXRsZSk7CisKK3ZvaWQgZXdrX2ZyYW1l
X3ZpZXdfY3JlYXRlX2Zvcl92aWV3KEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgRXZhc19PYmplY3Qq
IHZpZXcpOworYm9vbCBld2tfZnJhbWVfdXJpX2NoYW5nZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1l
KTsKK3ZvaWQgZXdrX2ZyYW1lX2ZvcmNlX2xheW91dChFdmFzX09iamVjdCogZXdrRnJhbWUpOwor
dm9pZCBld2tfZnJhbWVfaWNvbl9jaGFuZ2VkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7CisKK1dU
Rjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGV3a19mcmFtZV9wbHVnaW5fY3JlYXRlKEV2
YXNfT2JqZWN0KiBld2tGcmFtZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgcGx1Z2luU2l6ZSwg
V2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFdlYkNvcmU6OktVUkwm
IHVybCwgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBX
VEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFtVmFsdWVzLCBjb25zdCBXVEY6OlN0cmluZyYg
bWltZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5KTsKKwordm9pZCBld2tfZnJhbWVfZWRpdG9yX2Ns
aWVudF9jb250ZW50c19jaGFuZ2VkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7Cit2b2lkIGV3a19m
cmFtZV9lZGl0b3JfY2xpZW50X3NlbGVjdGlvbl9jaGFuZ2VkKEV2YXNfT2JqZWN0KiBld2tGcmFt
ZSk7CisKK3ZvaWQgZXdrX2ZyYW1lX21peGVkX2NvbnRlbnRfZGlzcGxheWVkX3NldChFdmFzX09i
amVjdCogZXdrRnJhbWUsIGJvb2wgaGFzRGlzcGxheWVkKTsKK3ZvaWQgZXdrX2ZyYW1lX21peGVk
X2NvbnRlbnRfcnVuX3NldChFdmFzX09iamVjdCogZXdrRnJhbWUsIGJvb2wgaGFzUnVuKTsKKwor
dm9pZCBld2tfZnJhbWVfeHNzX2RldGVjdGVkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgY29uc3Qg
RXdrX0ZyYW1lX1hzc19Ob3RpZmljYXRpb24qIHhzc0luZm8pOworCituYW1lc3BhY2UgRVdLUHJp
dmF0ZSB7CitXZWJDb3JlOjpGcmFtZSAqY29yZUZyYW1lKGNvbnN0IEV2YXNfT2JqZWN0ICpld2tG
cmFtZSk7CitFdmFzX09iamVjdCoga2l0RnJhbWUoY29uc3QgV2ViQ29yZTo6RnJhbWUqIGNvcmVG
cmFtZSk7Cit9IC8vIG5hbWVzcGFjZSBFV0tQcml2YXRlCisKKyNlbmRpZiAvLyBld2tfZnJhbWVf
cHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2hpc3Rvcnku
Y3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19oaXN0b3J5LmNwcAppbmRleCAxYTRlOWI3
Li4zZGM4ODExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2hpc3Rvcnku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfaGlzdG9yeS5jcHAKQEAgLTI4LDkg
KzI4LDkgQEAKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1
ZGUgIlBhZ2VHcm91cC5oIgotI2luY2x1ZGUgImV3a19sb2dnaW5nLmgiCisjaW5jbHVkZSAiZXdr
X2hpc3RvcnlfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19wcml2YXRlLmgiCi0jaW5jbHVkZSAi
ZXdrX3V0aWwuaCIKKyNpbmNsdWRlICJld2tfdXRpbF9wcml2YXRlLmgiCiAjaW5jbHVkZSA8RWlu
YS5oPgogI2luY2x1ZGUgPGVpbmFfc2FmZXR5X2NoZWNrcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfaGlzdG9y
eV9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2hpc3RvcnlfcHJpdmF0ZS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0NTQ3YmUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2hpc3RvcnlfcHJpdmF0ZS5oCkBAIC0w
LDAgKzEsMzkgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgUHJvRlVTSU9OIGVt
YmVkZGVkIHN5c3RlbXMKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMiBTYW1zdW5nIEVsZWN0
cm9uaWNzCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAg
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorKi8KKworI2lmbmRlZiBld2tfaGlzdG9yeV9wcml2YXRlX2gKKyNkZWZpbmUgZXdrX2hp
c3RvcnlfcHJpdmF0ZV9oCisKKyNpbmNsdWRlICJCYWNrRm9yd2FyZExpc3RJbXBsLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEhpc3RvcnlJdGVtOworY2xhc3MgQmFja0ZvcndhcmRM
aXN0SW1wbDsKK30KKworRXdrX0hpc3RvcnlfSXRlbSAqZXdrX2hpc3RvcnlfaXRlbV9uZXdfZnJv
bV9jb3JlKFdlYkNvcmU6Okhpc3RvcnlJdGVtICpjb3JlKTsKK0V3a19IaXN0b3J5KiBld2tfaGlz
dG9yeV9uZXcoV2ViQ29yZTo6QmFja0ZvcndhcmRMaXN0SW1wbCogaGlzdG9yeSk7Cit2b2lkIGV3
a19oaXN0b3J5X2ZyZWUoRXdrX0hpc3RvcnkqIGhpc3RvcnkpOworCituYW1lc3BhY2UgRVdLUHJp
dmF0ZSB7CitXZWJDb3JlOjpIaXN0b3J5SXRlbSAqY29yZUhpc3RvcnlJdGVtKGNvbnN0IEV3a19I
aXN0b3J5X0l0ZW0gKmV3a0hpc3RvcnlJdGVtKTsKK30gLy8gbmFtZXNwYWNlIEVXS1ByaXZhdGUK
KworI2VuZGlmIC8vIGV3a19oaXN0b3J5X3ByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a19qcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2pzLmNw
cAppbmRleCBhOGIyMDZlLi5mMDhmOThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX2pzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2pzLmNwcApAQCAt
MjMsNyArMjMsNyBAQAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogCiAjaW5jbHVk
ZSAiTlBfanNvYmplY3QuaCIKLSNpbmNsdWRlICJld2tfbG9nZ2luZy5oIgorI2luY2x1ZGUgImV3
a19qc19wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKICNpbmNsdWRlICJucHJ1
bnRpbWUuaCIKICNpbmNsdWRlICJucHJ1bnRpbWVfaW1wbC5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9lZmwvZXdrL2V3a19qc19wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX2pzX3ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYjMy
Zjk5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19qc19wcml2
YXRlLmgKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBQ
cm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcworICAgIENvcHlyaWdodCAoQykgMjAwOS0yMDEyIFNh
bXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIGV3a19qc19wcml2YXRlX2gKKyNkZWZpbmUg
ZXdrX2pzX3ByaXZhdGVfaAorCisjaW5jbHVkZSAiTlBfanNvYmplY3QuaCIKKyNpbmNsdWRlICJl
d2tfanMuaCIKKworI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQorI2RlZmluZSBFV0tf
SlNfT0JKRUNUX01BR0lDIDB4Njk2OTY5CisKK3R5cGVkZWYgc3RydWN0IF9Fd2tfSlNfQ2xhc3Mg
RXdrX0pTX0NsYXNzOworc3RydWN0IF9Fd2tfSlNfT2JqZWN0IHsKKyAgICBKYXZhU2NyaXB0T2Jq
ZWN0IGJhc2U7CisgICAgY29uc3QgY2hhciogbmFtZTsKKyAgICBjb25zdCBFd2tfSlNfQ2xhc3Mq
IGNsczsKKyAgICBFaW5hX0hhc2gqIHByb3BlcnRpZXM7CisgICAgRXZhc19PYmplY3QqIHZpZXc7
IC8vIGV3a192aWV3OiBjaGVjayBpZiB0aGlzIG9iamVjdCBoYXMgYWxyZWFkeSBiZWVuIGFkZGVk
IHRvIGFub3RoZXIgZXdrX3ZpZXcKKyAgICBFd2tfSlNfT2JqZWN0X1R5cGUgdHlwZTsKKyAgICBF
SU5BX01BR0lDOworfTsKKyNlbmRpZiAvLyBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKKwor
I2VuZGlmIC8vIGV3a19qc19wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfbG9nZ2luZy5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19sb2dnaW5nLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY4YTdmNDEuLjAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a19sb2dnaW5nLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNiAr
MCwwIEBACi0vKgotICAgIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRl
ZCBzeXN0ZW1zCi0gICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgU2Ftc3VuZyBFbGVjdHJvbmlj
cwotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
Ci0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
LSovCi0KLS8qKgotICogQGZpbGUgICAgZXdrX2xvZ2dpbmcuaAotICogQGJyaWVmICAgUHJvdmlk
ZXMgbWFjcm9zIGZvciBsb2dnaW5nLgotICovCi0KLSNpZm5kZWYgZXdrX2xvZ2dpbmdfaAotI2Rl
ZmluZSBld2tfbG9nZ2luZ19oCi0KLWV4dGVybiBpbnQgX2V3a19sb2dfZG9tOwotI2RlZmluZSBD
UklUSUNBTCguLi4pIEVJTkFfTE9HX0RPTV9DUklUKF9ld2tfbG9nX2RvbSwgX19WQV9BUkdTX18p
Ci0jZGVmaW5lIEVSUiguLi4pIEVJTkFfTE9HX0RPTV9FUlIoX2V3a19sb2dfZG9tLCBfX1ZBX0FS
R1NfXykKLSNkZWZpbmUgV1JOKC4uLikgRUlOQV9MT0dfRE9NX1dBUk4oX2V3a19sb2dfZG9tLCBf
X1ZBX0FSR1NfXykKLSNkZWZpbmUgSU5GKC4uLikgRUlOQV9MT0dfRE9NX0lORk8oX2V3a19sb2df
ZG9tLCBfX1ZBX0FSR1NfXykKLSNkZWZpbmUgREJHKC4uLikgRUlOQV9MT0dfRE9NX0RCRyhfZXdr
X2xvZ19kb20sIF9fVkFfQVJHU19fKQotCi0jZW5kaWYgLy8gZXdrX2xvZ2dpbmdfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19tYWluLmNwcCBiL1NvdXJjZS9XZWJLaXQv
ZWZsL2V3ay9ld2tfbWFpbi5jcHAKaW5kZXggNzYyMWQzNy4uZDliZTU4NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19tYWluLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX21haW4uY3BwCkBAIC0zMCw4ICszMCw3IEBACiAjaW5jbHVkZSAiU2V0dGluZ3Mu
aCIKICNpbmNsdWRlICJTdG9yYWdlVHJhY2tlci5oIgogI2luY2x1ZGUgIlN0b3JhZ2VUcmFja2Vy
Q2xpZW50RWZsLmgiCi0jaW5jbHVkZSAiZXdrX2F1dGhfc291cC5oIgotI2luY2x1ZGUgImV3a19s
b2dnaW5nLmgiCisjaW5jbHVkZSAiZXdrX2F1dGhfc291cF9wcml2YXRlLmgiCiAjaW5jbHVkZSAi
ZXdrX25ldHdvcmsuaCIKICNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19z
ZXR0aW5ncy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19uZXR3b3Jr
LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbmV0d29yay5jcHAKaW5kZXggNTQxY2Nk
ZC4uOGFkM2M0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19uZXR3b3Jr
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX25ldHdvcmsuY3BwCkBAIC0yMiw3
ICsyMiw3IEBACiAKICNpbmNsdWRlICJOZXR3b3JrU3RhdGVOb3RpZmllci5oIgogI2luY2x1ZGUg
IlJlc291cmNlSGFuZGxlLmgiCi0jaW5jbHVkZSAiZXdrX2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJl
d2tfcHJpdmF0ZS5oIgogI2luY2x1ZGUgPEVpbmEuaD4KICNpbmNsdWRlIDxsaWJzb3VwL3NvdXAu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2VmbC9ld2svZXdrX3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfcHJp
dmF0ZS5oCmluZGV4IGVhMzljZTQuLmUwOTQ4M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
ZWZsL2V3ay9ld2tfcHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfcHJp
dmF0ZS5oCkBAIC0xLDYgKzEsNiBAQAogLyoKICAgICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBQ
cm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcwotICAgIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFNh
bXN1bmcgRWxlY3Ryb25pY3MKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMiBTYW1zdW5nIEVs
ZWN0cm9uaWNzCiAKICAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTE4LDc0ICsxOCwyMiBAQAogICAgIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgogKi8KIAotLyoqCi0gKiBAZmlsZSAgICBld2tfcHJp
dmF0ZS5oCi0gKiBAYnJpZWYgICBQcml2YXRlIG1ldGhvZHMgb2YgV2ViS2l0LUVGTC4KLSAqLwot
CiAjaWZuZGVmIGV3a19wcml2YXRlX2gKICNkZWZpbmUgZXdrX3ByaXZhdGVfaAogCiAjaW5jbHVk
ZSAiQVBJQ2FzdC5oIgotI2luY2x1ZGUgIkJhY2tGb3J3YXJkTGlzdEltcGwuaCIKLSNpbmNsdWRl
ICJGcmFtZS5oIgotI2luY2x1ZGUgIk5QX2pzb2JqZWN0LmgiCi0jaW5jbHVkZSAiUGFnZS5oIgot
I2luY2x1ZGUgIldpZGdldC5oIgotI2luY2x1ZGUgImV3a19oaXN0b3J5LmgiCi0jaW5jbHVkZSAi
ZXdrX2pzLmgiCi0jaW5jbHVkZSAiZXdrX3ZpZXcuaCIKICNpbmNsdWRlIDxFdmFzLmg+Ci0jaWYg
VVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotI2luY2x1ZGUgPEV2YXNfR0wuaD4KLSNlbmRp
ZgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgog
CiAvLyBJZiBkZWZpbmVkLCBld2sgd2lsbCBkbyB0eXBlIGNoZWNraW5nIHRvIGVuc3VyZSBvYmpl
Y3RzIGFyZSBvZiBjb3JyZWN0IHR5cGUKICNkZWZpbmUgRVdLX1RZUEVfQ0hFQ0sgMQogI2RlZmlu
ZSBFV0tfQVJHQl9CWVRFU19TSVpFIDQKIAotI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJ
KQotI2RlZmluZSBFV0tfSlNfT0JKRUNUX01BR0lDIDB4Njk2OTY5Ci0KLXR5cGVkZWYgc3RydWN0
IF9Fd2tfSlNfQ2xhc3MgRXdrX0pTX0NsYXNzOwotc3RydWN0IF9Fd2tfSlNfT2JqZWN0IHsKLSAg
ICBKYXZhU2NyaXB0T2JqZWN0IGJhc2U7Ci0gICAgY29uc3QgY2hhciogbmFtZTsKLSAgICBjb25z
dCBFd2tfSlNfQ2xhc3MqIGNsczsKLSAgICBFaW5hX0hhc2gqIHByb3BlcnRpZXM7Ci0gICAgRXZh
c19PYmplY3QqIHZpZXc7IC8vIGV3a192aWV3OiBjaGVjayBpZiB0aGlzIG9iamVjdCBoYXMgYWxy
ZWFkeSBiZWVuIGFkZGVkIHRvIGFub3RoZXIgZXdrX3ZpZXcKLSAgICBFd2tfSlNfT2JqZWN0X1R5
cGUgdHlwZTsKLSAgICBFSU5BX01BR0lDOwotfTsKLSNlbmRpZiAvLyBFTkFCTEUoTkVUU0NBUEVf
UExVR0lOX0FQSSkKLQotLy8gRGVmaW5lcyB0aGUgbmFtZXMgZm9yIGluaXRpYWxpemluZyBld2tf
dmlld19zbWFydF9jbGFzcwotY29uc3QgY2hhciBld2tWaWV3VGlsZWROYW1lW10gPSAiRXdrX1Zp
ZXdfVGlsZWQiOwotY29uc3QgY2hhciBld2tWaWV3U2luZ2xlTmFtZVtdID0gIkV3a19WaWV3X1Np
bmdsZSI7Ci0KLS8vIERlZmluZSB0byBwcmV2ZW50IGFuIGFwcGxpY2F0aW9uIHVzaW5nIGRpZmZl
cmVudCB2aWV3IHR5cGUgZnJvbSBjYWxsaW5nIHRoZSBmdW5jdGlvbi4KLSNkZWZpbmUgRVdLX1ZJ
RVdfVFlQRV9DSEVDS19PUl9SRVRVUk4oZXdrVmlldywgdmlld05hbWUsIC4uLikgXAotICAgIGlm
ICghZXZhc19vYmplY3Rfc21hcnRfdHlwZV9jaGVjayhld2tWaWV3LCB2aWV3TmFtZSkpIHsgXAot
ICAgICAgICBJTkYoImV3a1ZpZXcgaXNuJ3QgYW4gaW5zdGFuY2Ugb2YgJXMiLCB2aWV3TmFtZSk7
IFwKLSAgICAgICAgcmV0dXJuIF9fVkFfQVJHU19fOyBcCi0gICAgfQotCiAvLyBmb3J3YXJkIGRl
Y2xhcmF0aW9ucwogbmFtZXNwYWNlIFdlYkNvcmUgewotc3RydWN0IFBvcHVwTWVudUNsaWVudDsK
LXN0cnVjdCBDb250ZXh0TWVudTsKLXN0cnVjdCBDb250ZXh0TWVudUl0ZW07Ci0jaWYgRU5BQkxF
KElOUFVUX1RZUEVfQ09MT1IpCi1zdHJ1Y3QgQ29sb3I7Ci1zdHJ1Y3QgQ29sb3JDaG9vc2VyQ2xp
ZW50OwotI2VuZGlmCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogY2xhc3MgR3Jh
cGhpY3NDb250ZXh0M0Q7CiBjbGFzcyBHcmFwaGljc0xheWVyOwogI2VuZGlmCi1jbGFzcyBTZWN1
cml0eU9yaWdpbjsKIH0KIAogc3RydWN0IEV3a19XaW5kb3dfT2JqZWN0X0NsZWFyZWRfRXZlbnQg
ewpAQCAtOTQsMTc4ICs0MiwxMiBAQCBzdHJ1Y3QgRXdrX1dpbmRvd19PYmplY3RfQ2xlYXJlZF9F
dmVudCB7CiAgICAgRXZhc19PYmplY3QqIGZyYW1lOwogfTsKIAotbmFtZXNwYWNlIEVXS1ByaXZh
dGUgewotCi1XZWJDb3JlOjpGcmFtZSAqY29yZUZyYW1lKGNvbnN0IEV2YXNfT2JqZWN0ICpld2tG
cmFtZSk7Ci1XZWJDb3JlOjpQYWdlICpjb3JlUGFnZShjb25zdCBFdmFzX09iamVjdCAqZXdrVmll
dyk7Ci1XZWJDb3JlOjpIaXN0b3J5SXRlbSAqY29yZUhpc3RvcnlJdGVtKGNvbnN0IEV3a19IaXN0
b3J5X0l0ZW0gKmV3a0hpc3RvcnlJdGVtKTsKLVBsYXRmb3JtUGFnZUNsaWVudCBjb3JlUGFnZUNs
aWVudChFdmFzX09iamVjdCogZXdrVmlldyk7Ci0KLUV2YXNfT2JqZWN0KiBraXRGcmFtZShjb25z
dCBXZWJDb3JlOjpGcmFtZSogY29yZUZyYW1lKTsKLQotfSAvLyBuYW1lc3BhY2UgRVdLUHJpdmF0
ZQotCi12b2lkIGV3a192aWV3X3JlYWR5KEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKLXZvaWQgZXdr
X3ZpZXdfaW5wdXRfbWV0aG9kX3N0YXRlX3NldChFdmFzX09iamVjdCogZXdrVmlldywgYm9vbCBh
Y3RpdmUpOwotdm9pZCBld2tfdmlld190aXRsZV9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNv
bnN0IGNoYXIqIHRpdGxlKTsKLXZvaWQgZXdrX3ZpZXdfdXJpX2NoYW5nZWQoRXZhc19PYmplY3Qq
IGV3a1ZpZXcpOwotdm9pZCBld2tfdmlld19sb2FkX2RvY3VtZW50X2ZpbmlzaGVkKEV2YXNfT2Jq
ZWN0KiBld2tWaWV3LCBFdmFzX09iamVjdCogZnJhbWUpOwotdm9pZCBld2tfdmlld19sb2FkX3N0
YXJ0ZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7Ci12b2lk
IGV3a192aWV3X2xvYWRfcHJvdmlzaW9uYWwoRXZhc19PYmplY3QqIGV3a1ZpZXcpOwotdm9pZCBl
d2tfdmlld19mcmFtZV9tYWluX2xvYWRfc3RhcnRlZChFdmFzX09iamVjdCogZXdrVmlldyk7Ci12
b2lkIGV3a192aWV3X2ZyYW1lX21haW5fY2xlYXJlZChFdmFzX09iamVjdCogZXdrVmlldyk7Ci12
b2lkIGV3a192aWV3X2ZyYW1lX21haW5faWNvbl9yZWNlaXZlZChFdmFzX09iamVjdCogZXdrVmll
dyk7Ci12b2lkIGV3a192aWV3X2xvYWRfZmluaXNoZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNv
bnN0IEV3a19GcmFtZV9Mb2FkX0Vycm9yKiBlcnJvcik7Ci12b2lkIGV3a192aWV3X2xvYWRfZXJy
b3IoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IEV3a19GcmFtZV9Mb2FkX0Vycm9yKiBlcnJv
cik7Ci12b2lkIGV3a192aWV3X2xvYWRfcHJvZ3Jlc3NfY2hhbmdlZChFdmFzX09iamVjdCogZXdr
Vmlldyk7Ci12b2lkIGV3a192aWV3X2xvYWRfc2hvdyhFdmFzX09iamVjdCogZXdrVmlldyk7Ci12
b2lkIGV3a192aWV3X29ubG9hZF9ldmVudChFdmFzX09iamVjdCogZXdrVmlldywgRXZhc19PYmpl
Y3QqIGZyYW1lKTsKLXZvaWQgZXdrX3ZpZXdfcmVzdG9yZV9zdGF0ZShFdmFzX09iamVjdCogZXdr
VmlldywgRXZhc19PYmplY3QqIGZyYW1lKTsKLUV2YXNfT2JqZWN0KiBld2tfdmlld193aW5kb3df
Y3JlYXRlKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBib29sIGphdmFzY3JpcHQsIGNvbnN0IFdlYkNv
cmU6OldpbmRvd0ZlYXR1cmVzKiBjb3JlRmVhdHVyZXMpOwotdm9pZCBld2tfdmlld193aW5kb3df
Y2xvc2UoRXZhc19PYmplY3QqIGV3a1ZpZXcpOwotCi12b2lkIGV3a192aWV3X21vdXNlX2xpbmtf
aG92ZXJfaW4oRXZhc19PYmplY3QqIGV3a1ZpZXcsIHZvaWQqIGRhdGEpOwotdm9pZCBld2tfdmll
d19tb3VzZV9saW5rX2hvdmVyX291dChFdmFzX09iamVjdCogZXdrVmlldyk7Ci0KLXZvaWQgZXdr
X3ZpZXdfdG9vbGJhcnNfdmlzaWJsZV9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGJvb2wgdmlz
aWJsZSk7Ci12b2lkIGV3a192aWV3X3Rvb2xiYXJzX3Zpc2libGVfZ2V0KEV2YXNfT2JqZWN0KiBl
d2tWaWV3LCBib29sKiB2aXNpYmxlKTsKLQotdm9pZCBld2tfdmlld19zdGF0dXNiYXJfdmlzaWJs
ZV9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGJvb2wgdmlzaWJsZSk7Ci12b2lkIGV3a192aWV3
X3N0YXR1c2Jhcl92aXNpYmxlX2dldChFdmFzX09iamVjdCogZXdrVmlldywgYm9vbCogdmlzaWJs
ZSk7Ci12b2lkIGV3a192aWV3X3N0YXR1c2Jhcl90ZXh0X3NldChFdmFzX09iamVjdCogZXdrVmll
dywgY29uc3QgY2hhciogdGV4dCk7Ci0KLXZvaWQgZXdrX3ZpZXdfc2Nyb2xsYmFyc192aXNpYmxl
X3NldChFdmFzX09iamVjdCogZXdrVmlldywgYm9vbCB2aXNpYmxlKTsKLXZvaWQgZXdrX3ZpZXdf
c2Nyb2xsYmFyc192aXNpYmxlX2dldChFdmFzX09iamVjdCogZXdrVmlldywgYm9vbCogdmlzaWJs
ZSk7Ci0KLXZvaWQgZXdrX3ZpZXdfbWVudWJhcl92aXNpYmxlX3NldChFdmFzX09iamVjdCogZXdr
VmlldywgYm9vbCB2aXNpYmxlKTsKLXZvaWQgZXdrX3ZpZXdfbWVudWJhcl92aXNpYmxlX2dldChF
dmFzX09iamVjdCogZXdrVmlldywgYm9vbCogdmlzaWJsZSk7Ci0KLXZvaWQgZXdrX3ZpZXdfdG9v
bHRpcF90ZXh0X3NldChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgY2hhciogdGV4dCk7Ci0K
LXZvaWQgZXdrX3ZpZXdfYWRkX2NvbnNvbGVfbWVzc2FnZShFdmFzX09iamVjdCogZXdrVmlldywg
Y29uc3QgY2hhciogbWVzc2FnZSwgdW5zaWduZWQgaW50IGxpbmVOdW1iZXIsIGNvbnN0IGNoYXIq
IHNvdXJjZUlEKTsKLQotdm9pZCBld2tfdmlld19ydW5famF2YXNjcmlwdF9hbGVydChFdmFzX09i
amVjdCogZXdrVmlldywgRXZhc19PYmplY3QqIGZyYW1lLCBjb25zdCBjaGFyKiBtZXNzYWdlKTsK
LWJvb2wgZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfY29uZmlybShFdmFzX09iamVjdCogZXdrVmll
dywgRXZhc19PYmplY3QqIGZyYW1lLCBjb25zdCBjaGFyKiBtZXNzYWdlKTsKLWJvb2wgZXdrX3Zp
ZXdfcnVuX2phdmFzY3JpcHRfcHJvbXB0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX09iamVj
dCogZnJhbWUsIGNvbnN0IGNoYXIqIG1lc3NhZ2UsIGNvbnN0IGNoYXIqIGRlZmF1bHRWYWx1ZSwg
Y2hhcioqIHZhbHVlKTsKLWJvb2wgZXdrX3ZpZXdfc2hvdWxkX2ludGVycnVwdF9qYXZhc2NyaXB0
KEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKLXVpbnQ2NF90IGV3a192aWV3X2V4Y2VlZGVkX2RhdGFi
YXNlX3F1b3RhKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX09iamVjdCogZnJhbWUsIGNvbnN0
IGNoYXIqIGRhdGFiYXNlTmFtZSwgdWludDY0X3QgY3VycmVudFNpemUsIHVpbnQ2NF90IGV4cGVj
dGVkU2l6ZSk7Ci0KLWJvb2wgZXdrX3ZpZXdfcnVuX29wZW5fcGFuZWwoRXZhc19PYmplY3QqIGV3
a1ZpZXcsIEV2YXNfT2JqZWN0KiBmcmFtZSwgYm9vbCBhbGxvd3NNdWx0aXBsZUZpbGVzLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgYWNjZXB0TUlNRVR5cGVzLCBFaW5hX0xpc3QqKiBzZWxlY3RlZEZp
bGVuYW1lcyk7Ci0KLXZvaWQgZXdrX3ZpZXdfcmVwYWludChFdmFzX09iamVjdCogZXdrVmlldywg
RXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkIHksIEV2YXNfQ29vcmQgd2lkdGgsIEV2YXNfQ29vcmQg
aGVpZ2h0KTsKLXZvaWQgZXdrX3ZpZXdfc2Nyb2xsKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFz
X0Nvb3JkIGRlbHRhWCwgRXZhc19Db29yZCBkZWx0YVksIEV2YXNfQ29vcmQgc2Nyb2xsWCwgRXZh
c19Db29yZCBzY3JvbGxZLCBFdmFzX0Nvb3JkIHNjcm9sbFdpZHRoLCBFdmFzX0Nvb3JkIHNjcm9s
bEhlaWdodCwgRXZhc19Db29yZCBjZW50ZXJYLCBFdmFzX0Nvb3JkIGNlbnRlclksIEV2YXNfQ29v
cmQgY2VudGVyVywgRXZhc19Db29yZCBjZW50ZXJIZWlnaHQpOwotCi1XVEY6OlBhc3NSZWZQdHI8
V2ViQ29yZTo6RnJhbWU+IGV3a192aWV3X2ZyYW1lX2NyZWF0ZShFdmFzX09iamVjdCogZXdrVmll
dywgRXZhc19PYmplY3QqIGZyYW1lLCBjb25zdCBXVEY6OlN0cmluZyYgbmFtZSwgV2ViQ29yZTo6
SFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsIGNvbnN0IFdlYkNvcmU6OktVUkwm
IHVybCwgY29uc3QgV1RGOjpTdHJpbmcmIHJlZmVycmVyKTsKLQotV1RGOjpQYXNzUmVmUHRyPFdl
YkNvcmU6OldpZGdldD4gZXdrX3ZpZXdfcGx1Z2luX2NyZWF0ZShFdmFzX09iamVjdCogZXdrVmll
dywgRXZhc19PYmplY3QqIGZyYW1lLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBwbHVnaW5TaXpl
LCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCogZWxlbWVudCwgY29uc3QgV2ViQ29yZTo6S1VS
TCYgdXJsLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0
IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGNvbnN0IFdURjo6U3RyaW5n
JiBtaW1lVHlwZSwgYm9vbCBsb2FkTWFudWFsbHkpOwotCi0jaWYgRU5BQkxFKElOUFVUX1RZUEVf
Q09MT1IpCi12b2lkIGV3a192aWV3X2NvbG9yX2Nob29zZXJfbmV3KEV2YXNfT2JqZWN0KiBld2tW
aWV3LCBXZWJDb3JlOjpDb2xvckNob29zZXJDbGllbnQqIGNsaWVudCwgY29uc3QgV2ViQ29yZTo6
Q29sb3ImIGluaXRpYWxDb2xvcik7Ci12b2lkIGV3a192aWV3X2NvbG9yX2Nob29zZXJfY2hhbmdl
ZChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgV2ViQ29yZTo6Q29sb3ImIG5ld0NvbG9yKTsK
LSNlbmRpZgotCi12b2lkIGV3a192aWV3X3BvcHVwX25ldyhFdmFzX09iamVjdCogZXdrVmlldywg
V2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KiBjbGllbnQsIGludCBzZWxlY3RlZCwgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYgcmVjdCk7Ci12b2lkIGV3a192aWV3X3ZpZXdwb3J0X2F0dHJpYnV0ZXNf
c2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50
cyYgYXJndW1lbnRzKTsKLQotdm9pZCBld2tfdmlld19kb3dubG9hZF9yZXF1ZXN0KEV2YXNfT2Jq
ZWN0KiBld2tWaWV3LCBFd2tfRG93bmxvYWQqIGRvd25sb2FkKTsKLQotdm9pZCBld2tfdmlld19l
ZGl0b3JfY2xpZW50X2NvbnRlbnRzX2NoYW5nZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcpOwotdm9p
ZCBld2tfdmlld19lZGl0b3JfY2xpZW50X3NlbGVjdGlvbl9jaGFuZ2VkKEV2YXNfT2JqZWN0KiBl
d2tWaWV3KTsKK2V4dGVybiBpbnQgX2V3a19sb2dfZG9tOwogCi1ib29sIGV3a192aWV3X2ZvY3Vz
X2Nhbl9jeWNsZShFdmFzX09iamVjdCogZXdrVmlldywgRXdrX0ZvY3VzX0RpcmVjdGlvbiBkaXJl
Y3Rpb24pOwotdm9pZCBld2tfdmlld19mcmFtZV92aWV3X2NyZWF0aW9uX25vdGlmeShFdmFzX09i
amVjdCogZXdrVmlldyk7Ci0KLSNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLXZvaWQg
ZXdrX3ZpZXdfanNfd2luZG93X29iamVjdF9jbGVhcihFdmFzX09iamVjdCogZXdrVmlldywgRXZh
c19PYmplY3QqIGZyYW1lKTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLXZv
aWQgZXdrX3ZpZXdfbmVlZF90b3VjaF9ldmVudHNfc2V0KEV2YXNfT2JqZWN0KiwgYm9vbCBuZWVk
ZWQpOwotYm9vbCBld2tfdmlld19uZWVkX3RvdWNoX2V2ZW50c19nZXQoY29uc3QgRXZhc19PYmpl
Y3QqKTsKLSNlbmRpZgotCi1Fd2tfSGlzdG9yeV9JdGVtICpld2tfaGlzdG9yeV9pdGVtX25ld19m
cm9tX2NvcmUoV2ViQ29yZTo6SGlzdG9yeUl0ZW0gKmNvcmUpOwotRXdrX0hpc3RvcnkqIGV3a19o
aXN0b3J5X25ldyhXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3RJbXBsKiBoaXN0b3J5KTsKLXZvaWQg
ZXdrX2hpc3RvcnlfZnJlZShFd2tfSGlzdG9yeSogaGlzdG9yeSk7Ci0KLSNpZiBFTkFCTEUoQ09O
VEVYVF9NRU5VUykKLUV3a19Db250ZXh0X01lbnUqIGV3a19jb250ZXh0X21lbnVfbmV3KEV2YXNf
T2JqZWN0KiB2aWV3LCBXZWJDb3JlOjpDb250ZXh0TWVudUNvbnRyb2xsZXIqIGNvbnRyb2xsZXIp
OwotYm9vbCBld2tfY29udGV4dF9tZW51X2ZyZWUoRXdrX0NvbnRleHRfTWVudSogbWVudSk7Ci12
b2lkIGV3a19jb250ZXh0X21lbnVfaXRlbV9hcHBlbmQoRXdrX0NvbnRleHRfTWVudSogbWVudSwg
V2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtJiBjb3JlKTsKLUV3a19Db250ZXh0X01lbnUqIGV3a19j
b250ZXh0X21lbnVfY3VzdG9taXplKEV3a19Db250ZXh0X01lbnUqIG1lbnUpOwotdm9pZCBld2tf
Y29udGV4dF9tZW51X3Nob3coRXdrX0NvbnRleHRfTWVudSogbWVudSk7Ci0jZW5kaWYKLQotY29u
c3QgRWluYV9SZWN0YW5nbGUqIGV3a192aWV3X3JlcGFpbnRzX3BvcChFd2tfVmlld19Qcml2YXRl
X0RhdGEqIHByaXYsIHNpemVfdCogY291bnQpOwotY29uc3QgRXdrX1Njcm9sbF9SZXF1ZXN0KiBl
d2tfdmlld19zY3JvbGxfcmVxdWVzdHNfZ2V0KGNvbnN0IEV3a19WaWV3X1ByaXZhdGVfRGF0YSog
cHJpdiwgc2l6ZV90KiBjb3VudCk7Ci0KLXZvaWQgZXdrX3ZpZXdfcmVwYWludF9hZGQoRXdrX1Zp
ZXdfUHJpdmF0ZV9EYXRhKiBwcml2LCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwgRXZhc19D
b29yZCB3aWR0aCwgRXZhc19Db29yZCBoZWlnaHQpOwotCi12b2lkIGV3a192aWV3X2xheW91dF9p
Zl9uZWVkZWRfcmVjdXJzaXZlKEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdik7Ci0KLUV3a19X
aW5kb3dfRmVhdHVyZXMqIGV3a193aW5kb3dfZmVhdHVyZXNfbmV3X2Zyb21fY29yZShjb25zdCBX
ZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyogY29yZSk7Ci0KLUV2YXNfT2JqZWN0KiBld2tfZnJhbWVf
YWRkKEV2YXMqIGNhbnZhcyk7Ci1ib29sIGV3a19mcmFtZV9pbml0KEV2YXNfT2JqZWN0KiBld2tG
cmFtZSwgRXZhc19PYmplY3QqIHZpZXcsIFdlYkNvcmU6OkZyYW1lKiBmcmFtZSk7Ci1ib29sIGV3
a19mcmFtZV9jaGlsZF9hZGQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBXVEY6OlBhc3NSZWZQdHI8
V2ViQ29yZTo6RnJhbWU+IGNoaWxkLCBjb25zdCBXVEY6OlN0cmluZyYgbmFtZSwgY29uc3QgV2Vi
Q29yZTo6S1VSTCYgdXJsLCBjb25zdCBXVEY6OlN0cmluZyYgcmVmZXJyZXIpOwotdm9pZCBld2tf
ZnJhbWVfdmlld19zZXQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBFdmFzX09iamVjdCogbmV3UGFy
ZW50KTsKLQotdm9pZCBld2tfZnJhbWVfY29yZV9nb25lKEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7
Ci0KLXZvaWQgZXdrX2ZyYW1lX2xvYWRfY29tbWl0dGVkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7
Ci12b2lkIGV3a19mcmFtZV9sb2FkX3N0YXJ0ZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKLXZv
aWQgZXdrX2ZyYW1lX2xvYWRfcHJvdmlzaW9uYWwoRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKLXZv
aWQgZXdrX2ZyYW1lX2xvYWRfZmlyc3RsYXlvdXRfZmluaXNoZWQoRXZhc19PYmplY3QqIGV3a0Zy
YW1lKTsKLXZvaWQgZXdrX2ZyYW1lX2xvYWRfZmlyc3RsYXlvdXRfbm9uZW1wdHlfZmluaXNoZWQo
RXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKLXZvaWQgZXdrX2ZyYW1lX2xvYWRfZG9jdW1lbnRfZmlu
aXNoZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKLXZvaWQgZXdrX2ZyYW1lX2xvYWRfZmluaXNo
ZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjb25zdCBjaGFyKiBlcnJvckRvbWFpbiwgaW50IGVy
cm9yQ29kZSwgYm9vbCBpc0NhbmNlbGxhdGlvbiwgY29uc3QgY2hhciogZXJyb3JEZXNjcmlwdGlv
biwgY29uc3QgY2hhciogZmFpbGluZ1VybCk7Ci12b2lkIGV3a19mcmFtZV9sb2FkX3Jlc291cmNl
X2ZpbmlzaGVkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
KTsKLXZvaWQgZXdrX2ZyYW1lX2xvYWRfcmVzb3VyY2VfZmFpbGVkKEV2YXNfT2JqZWN0KiBld2tG
cmFtZSwgRXdrX0ZyYW1lX0xvYWRfRXJyb3IqIGVycm9yKTsKLXZvaWQgZXdrX2ZyYW1lX2xvYWRf
ZXJyb3IoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjb25zdCBjaGFyKiBlcnJvckRvbWFpbiwgaW50
IGVycm9yQ29kZSwgYm9vbCBpc0NhbmNlbGxhdGlvbiwgY29uc3QgY2hhciogZXJyb3JEZXNjcmlw
dGlvbiwgY29uc3QgY2hhciogZmFpbGluZ1VybCk7Ci12b2lkIGV3a19mcmFtZV9sb2FkX3Byb2dy
ZXNzX2NoYW5nZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKLQotdm9pZCBld2tfZnJhbWVfcmVk
aXJlY3RfY2FuY2VsbGVkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7Ci12b2lkIGV3a19mcmFtZV9y
ZWRpcmVjdF9wcm92aXNpb25hbF9sb2FkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7Ci12b2lkIGV3
a19mcmFtZV9yZWRpcmVjdF9yZXF1ZXN0ZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjb25zdCBj
aGFyKiB1cmwpOwotdm9pZCBld2tfZnJhbWVfcmVxdWVzdF93aWxsX3NlbmQoRXZhc19PYmplY3Qq
IGV3a0ZyYW1lLCBFd2tfRnJhbWVfUmVzb3VyY2VfTWVzc2FnZXMqIG1lc3NhZ2VzKTsKLXZvaWQg
ZXdrX2ZyYW1lX3JlcXVlc3RfYXNzaWduX2lkZW50aWZpZXIoRXZhc19PYmplY3QqIGV3a0ZyYW1l
LCBjb25zdCBFd2tfRnJhbWVfUmVzb3VyY2VfUmVxdWVzdCogcmVxdWVzdCk7Ci12b2lkIGV3a19m
cmFtZV9yZXNwb25zZV9yZWNlaXZlZChFdmFzX09iamVjdCogZXdrRnJhbWUsIEV3a19GcmFtZV9S
ZXNvdXJjZV9SZXNwb25zZSogcmVzcG9uc2UpOwotdm9pZCBld2tfZnJhbWVfdmlld19zdGF0ZV9z
YXZlKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgV2ViQ29yZTo6SGlzdG9yeUl0ZW0qIGl0ZW0pOwot
Ci12b2lkIGV3a19mcmFtZV9kaWRfcGVyZm9ybV9maXJzdF9uYXZpZ2F0aW9uKEV2YXNfT2JqZWN0
KiBld2tGcmFtZSk7Ci0KLXZvaWQgZXdrX2ZyYW1lX2NvbnRlbnRzX3NpemVfY2hhbmdlZChFdmFz
X09iamVjdCogZXdrRnJhbWUsIEV2YXNfQ29vcmQgd2lkdGgsIEV2YXNfQ29vcmQgaGVpZ2h0KTsK
LXZvaWQgZXdrX2ZyYW1lX3RpdGxlX3NldChFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IGNo
YXIqIHRpdGxlKTsKLQotdm9pZCBld2tfZnJhbWVfdmlld19jcmVhdGVfZm9yX3ZpZXcoRXZhc19P
YmplY3QqIGV3a0ZyYW1lLCBFdmFzX09iamVjdCogdmlldyk7Ci1ib29sIGV3a19mcmFtZV91cmlf
Y2hhbmdlZChFdmFzX09iamVjdCogZXdrRnJhbWUpOwotdm9pZCBld2tfZnJhbWVfZm9yY2VfbGF5
b3V0KEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7Ci12b2lkIGV3a19mcmFtZV9pY29uX2NoYW5nZWQo
RXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKLQotV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdl
dD4gZXdrX2ZyYW1lX3BsdWdpbl9jcmVhdGUoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiBwbHVnaW5TaXplLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCog
ZWxlbWVudCwgY29uc3QgV2ViQ29yZTo6S1VSTCYgdXJsLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6
OlN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgcGFy
YW1WYWx1ZXMsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBsb2FkTWFudWFsbHkp
OwotCi1ib29sIGV3a192aWV3X25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uKEV2YXNfT2JqZWN0
KiBld2tWaWV3LCBFd2tfRnJhbWVfUmVzb3VyY2VfUmVxdWVzdCogcmVxdWVzdCk7Ci0KLXZvaWQg
ZXdrX3ZpZXdfY29udGVudHNfc2l6ZV9jaGFuZ2VkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFz
X0Nvb3JkIHdpZHRoLCBFdmFzX0Nvb3JkIGhlaWdodCk7Ci0KLVdlYkNvcmU6OkZsb2F0UmVjdCBl
d2tfdmlld19wYWdlX3JlY3RfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKLQotY29u
c3QgY2hhciogZXdrX3NldHRpbmdzX2RlZmF1bHRfdXNlcl9hZ2VudF9nZXQoKTsKLQotdm9pZCBl
d2tfZnJhbWVfZWRpdG9yX2NsaWVudF9jb250ZW50c19jaGFuZ2VkKEV2YXNfT2JqZWN0KiBld2tG
cmFtZSk7Ci12b2lkIGV3a19mcmFtZV9lZGl0b3JfY2xpZW50X3NlbGVjdGlvbl9jaGFuZ2VkKEV2
YXNfT2JqZWN0KiBld2tGcmFtZSk7Ci0KLXZvaWQgZXdrX2ZyYW1lX21peGVkX2NvbnRlbnRfZGlz
cGxheWVkX3NldChFdmFzX09iamVjdCogZXdrRnJhbWUsIGJvb2wgaGFzRGlzcGxheWVkKTsKLXZv
aWQgZXdrX2ZyYW1lX21peGVkX2NvbnRlbnRfcnVuX3NldChFdmFzX09iamVjdCogZXdrRnJhbWUs
IGJvb2wgaGFzUnVuKTsKLXZvaWQgZXdrX3ZpZXdfbWl4ZWRfY29udGVudF9kaXNwbGF5ZWRfc2V0
KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBib29sIGhhc0Rpc3BsYXllZCk7Ci12b2lkIGV3a192aWV3
X21peGVkX2NvbnRlbnRfcnVuX3NldChFdmFzX09iamVjdCogZXdrVmlldywgYm9vbCBoYXNSdW4p
Owotdm9pZCBld2tfZnJhbWVfeHNzX2RldGVjdGVkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgY29u
c3QgRXdrX0ZyYW1lX1hzc19Ob3RpZmljYXRpb24qIHhzc0luZm8pOwotCi1Fd2tfU2VjdXJpdHlf
T3JpZ2luKiBld2tfc2VjdXJpdHlfb3JpZ2luX25ldyhXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiog
b3JpZ2luKTsKLQotI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLWJvb2wgZXdrX3Zp
ZXdfYWNjZWxlcmF0ZWRfY29tcG9zaXRpbmdfb2JqZWN0X2NyZWF0ZShFdmFzX09iamVjdCogZXdr
VmlldywgRXZhc19OYXRpdmVfU3VyZmFjZSogbmF0aXZlU3VyZmFjZSwgY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYgcmVjdCk7Ci1XZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRCogZXdrX3ZpZXdfYWNj
ZWxlcmF0ZWRfY29tcG9zaXRpbmdfY29udGV4dF9nZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcpOwot
I2VuZGlmCisjZGVmaW5lIENSSVRJQ0FMKC4uLikgRUlOQV9MT0dfRE9NX0NSSVQoX2V3a19sb2df
ZG9tLCBfX1ZBX0FSR1NfXykKKyNkZWZpbmUgRVJSKC4uLikgRUlOQV9MT0dfRE9NX0VSUihfZXdr
X2xvZ19kb20sIF9fVkFfQVJHU19fKQorI2RlZmluZSBXUk4oLi4uKSBFSU5BX0xPR19ET01fV0FS
TihfZXdrX2xvZ19kb20sIF9fVkFfQVJHU19fKQorI2RlZmluZSBJTkYoLi4uKSBFSU5BX0xPR19E
T01fSU5GTyhfZXdrX2xvZ19kb20sIF9fVkFfQVJHU19fKQorI2RlZmluZSBEQkcoLi4uKSBFSU5B
X0xPR19ET01fREJHKF9ld2tfbG9nX2RvbSwgX19WQV9BUkdTX18pCiAKICNlbmRpZiAvLyBld2tf
cHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3NlY3VyaXR5
X29yaWdpbl9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3NlY3VyaXR5X29y
aWdpbl9wcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2I2MTU3
ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfc2VjdXJpdHlf
b3JpZ2luX3ByaXZhdGUuaApAQCAtMCwwICsxLDMxIEBACisvKgorICAgIENvcHlyaWdodCAoQykg
MjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCisgICAgQ29weXJpZ2h0IChDKSAy
MDA5LTIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAg
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAg
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpZm5kZWYgZXdrX3NlY3VyaXR5X29y
aWdpbl9wcml2YXRlX2gKKyNkZWZpbmUgZXdrX3NlY3VyaXR5X29yaWdpbl9wcml2YXRlX2gKKwor
Ly8gZm9yd2FyZCBkZWNsYXJhdGlvbnMKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFNlY3Vy
aXR5T3JpZ2luOworfQorCitFd2tfU2VjdXJpdHlfT3JpZ2luKiBld2tfc2VjdXJpdHlfb3JpZ2lu
X25ldyhXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiogb3JpZ2luKTsKKworI2VuZGlmIC8vIGV3a19z
ZWN1cml0eV9vcmlnaW5fcHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX3NldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfc2V0dGluZ3Mu
Y3BwCmluZGV4IDg0MjkzMGEuLjNiYWM2YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfc2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfc2V0
dGluZ3MuY3BwCkBAIC0zNCw5ICszNCw4IEBACiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKICNp
bmNsdWRlICJQYWdlQ2FjaGUuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgotI2luY2x1ZGUgImV3
a19sb2dnaW5nLmgiCiAjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKLSNpbmNsdWRlICJld2tfdXRp
bC5oIgorI2luY2x1ZGUgImV3a191dGlsX3ByaXZhdGUuaCIKICNpbmNsdWRlIDxFaW5hLmg+CiAj
aW5jbHVkZSA8ZWluYV9zYWZldHlfY2hlY2tzLmg+CiAjaW5jbHVkZSA8ZXJybm8uaD4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfc2V0dGluZ3NfcHJpdmF0ZS5oIGIvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a19zZXR0aW5nc19wcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uNGQ3ZWU1OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfc2V0dGluZ3NfcHJpdmF0ZS5oCkBAIC0wLDAgKzEsMjYgQEAKKy8q
CisgICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMK
KyAgICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAg
ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lm
bmRlZiBld2tfc2V0dGluZ3NfcHJpdmF0ZV9oCisjZGVmaW5lIGV3a19zZXR0aW5nc19wcml2YXRl
X2gKKworY29uc3QgY2hhciogZXdrX3NldHRpbmdzX2RlZmF1bHRfdXNlcl9hZ2VudF9nZXQoKTsK
KworI2VuZGlmIC8vIGV3a19zZXR0aW5nc19wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuY3BwCmluZGV4IDdjZDQzZWQuLjkwMzQ5
OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRfYmFja2luZ19z
dG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9iYWNraW5nX3N0
b3JlLmNwcApAQCAtMTksMTEgKzE5LDExIEBACiAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuaCIKIAogI2luY2x1ZGUgImV3a19wcml2
YXRlLmgiCi0jaW5jbHVkZSAiZXdrX3RpbGVkX21hdHJpeC5oIgotI2luY2x1ZGUgImV3a190aWxl
ZF9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJpdmF0ZS5o
IgorI2luY2x1ZGUgImV3a190aWxlZF9tYXRyaXhfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a190
aWxlZF9tb2RlbF9wcml2YXRlLmgiCiAjaW5jbHVkZSA8RWNvcmUuaD4KICNpbmNsdWRlIDxFaW5h
Lmg+CiAjaW5jbHVkZSA8YWxnb3JpdGhtPgpAQCAtMTE2LDcgKzExNiw2IEBAIHN0cnVjdCBfRXdr
X1RpbGVkX0JhY2tpbmdfU3RvcmVfRGF0YSB7CiB9OwogCiBzdGF0aWMgRXZhc19TbWFydF9DbGFz
cyBfcGFyZW50X3NjID0gRVZBU19TTUFSVF9DTEFTU19JTklUX05VTEw7Ci1pbnQgX2V3a190aWxl
ZF9sb2dfZG9tID0gLTE7CiAKICNkZWZpbmUgUFJJVl9EQVRBX0dFVF9PUl9SRVRVUk4ob2JqLCBw
dHIsIC4uLikgXAogICAgIEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX0RhdGEqIHB0ciA9IHN0YXRp
Y19jYXN0PEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX0RhdGEqPihldmFzX29iamVjdF9zbWFydF9k
YXRhX2dldChvYmopKTsgXApAQCAtMTM4Nyw5ICsxMzg2LDYgQEAgRXZhc19PYmplY3QqIGV3a190
aWxlZF9iYWNraW5nX3N0b3JlX2FkZChFdmFzKiBjYW52YXMpCiB7CiAgICAgc3RhdGljIEV2YXNf
U21hcnQqIHNtYXJ0ID0gMDsKIAotICAgIGlmIChfZXdrX3RpbGVkX2xvZ19kb20gPCAwKQotICAg
ICAgICBfZXdrX3RpbGVkX2xvZ19kb20gPSBlaW5hX2xvZ19kb21haW5fcmVnaXN0ZXIoIkV3a19U
aWxlZF9CYWNraW5nX1N0b3JlIiwgMCk7Ci0KICAgICBpZiAoIXNtYXJ0KSB7CiAgICAgICAgIHN0
YXRpYyBFdmFzX1NtYXJ0X0NsYXNzIHNjID0KICAgICAgICAgICAgIEVWQVNfU01BUlRfQ0xBU1Nf
SU5JVF9OQU1FX1ZFUlNJT04oIkV3a19UaWxlZF9CYWNraW5nX1N0b3JlIik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuaCBiL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA5ZTVhMDQ4Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTE5ICsw
LDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgU2Ftc3VuZyBFbGVjdHJvbmlj
cwotICAgIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1z
Ci0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
LSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgot
Ki8KLQotI2lmbmRlZiBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9oCi0jZGVmaW5lIGV3a190aWxl
ZF9iYWNraW5nX3N0b3JlX2gKLQotI2luY2x1ZGUgIkVXZWJLaXQuaCIKLQotLyogRW5hYmxlIGFj
Y291bnRpbmcgb2YgcmVuZGVyIHRpbWUgaW4gdGlsZSBzdGF0aXN0aWNzICovCi0vLyAjZGVmaW5l
IFRJTEVfU1RBVFNfQUNDT1VOVF9SRU5ERVJfVElNRQotCi0KLS8qIElmIGRlZmluZSBld2sgd2ls
bCBkbyBtb3JlIGFjY291bnRpbmcgdG8gY2hlY2sgZm9yIG1lbW9yeSBsZWFrcwotICogdHJ5ICJr
aWxsIC1VU1IxICRQSUQiIHRvIGdldCBpbnN0YW50YW5lb3VzIGRlYnVnCi0gKiB0cnkgImtpbGwg
LVVTUjIgJFBJRCIgdG8gZ2V0IGluc3RhbnRhbmVvdXMgZGVidWcgYW5kIGZvcmNlIGZsdXNoIG9m
IGNhY2hlCi0gKi8KLSN1bmRlZiBERUJVR19NRU1fTEVBS1MKLQotY29uc3QgaW50IGRlZmF1bHRU
aWxlV2lkdGggPSAyNTY7Ci1jb25zdCBpbnQgZGVmYXVsdFRpbGVIZWlndGggPSAyNTY7Ci0KLWNv
bnN0IGZsb2F0IHpvb21TdGVwTWluaW11bSA9IDAuMDE7Ci0KLSNkZWZpbmUgVElMRV9TSVpFX0FU
X1pPT00oU0laRSwgWk9PTSkgKChpbnQpcm91bmRmKChTSVpFKSAqIChaT09NKSkpCi0jZGVmaW5l
IFRJTEVfWk9PTV9BVF9TSVpFKFNJWkUsIE9SSUdfVElMRSkgKChmbG9hdCkoU0laRSkgLyAoZmxv
YXQpKE9SSUdfVElMRSkpCi0jZGVmaW5lIFJPVU5ERURfWk9PTShTSVpFLCBaT09NKSAoKGZsb2F0
KShTSVpFKSAvIChmbG9hdCkoKChpbnQpcm91bmRmKChTSVpFKSAvIChaT09NKSkpKSkKLQotI2lu
Y2x1ZGUgPEV2YXMuaD4KLSNpbmNsdWRlIDxjYWlyby5oPgotCi10eXBlZGVmIHN0cnVjdCBfRXdr
X1RpbGUgICAgICAgICAgICAgICAgICAgICBFd2tfVGlsZTsKLXR5cGVkZWYgc3RydWN0IF9Fd2tf
VGlsZV9TdGF0cyAgICAgICAgICAgICAgIEV3a19UaWxlX1N0YXRzOwotdHlwZWRlZiBzdHJ1Y3Qg
X0V3a19UaWxlX01hdHJpeCAgICAgICAgICAgICAgRXdrX1RpbGVfTWF0cml4OwotCi1zdHJ1Y3Qg
X0V3a19UaWxlX1N0YXRzIHsKLSAgICBkb3VibGUgbGFzdF91c2VkOyAgICAgICAgLyoqPCB0aW1l
IG9mIGxhc3QgdXNlICovCi0jaWZkZWYgVElMRV9TVEFUU19BQ0NPVU5UX1JFTkRFUl9USU1FCi0g
ICAgZG91YmxlIHJlbmRlcl90aW1lOyAgICAgIC8qKjwgYW1vdW50IG9mIHRpbWUgdGhpcyB0aWxl
IHRvb2sgdG8gcmVuZGVyICovCi0jZW5kaWYKLSAgICB1bnNpZ25lZCBpbnQgYXJlYTsgICAgICAg
LyoqPCBjYWNoZSBmb3IgKHcgKiBoKSAqLwotICAgIHVuc2lnbmVkIGludCBtaXNzZXM7ICAgICAv
Kio8IG51bWJlciBvZiB0aW1lcyBpdCBiZWNhbWUgZGlydHkgYnV0IG5vdAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKiByZXBhaW50ZWQgYXQgYWxsIHNpbmNlIGl0IHdhcyBub3Qgdmlz
aWJsZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0gICAgRWluYV9Cb29sIGZ1
bGxfdXBkYXRlIDogMTsgLyoqPCB0aWxlIHJlcXVpcmVzIGZ1bGwgc2l6ZSB1cGRhdGUgKi8KLX07
Ci0KLXN0cnVjdCBfRXdrX1RpbGUgewotICAgIEVpbmFfVGlsZXIgKnVwZGF0ZXM7ICAgIC8qKjwg
dXBkYXRlZC9kaXJ0eSBhcmVhcyAqLwotICAgIEV3a19UaWxlX1N0YXRzIHN0YXRzOyAgICAgICAv
Kio8IHRpbGUgdXNhZ2Ugc3RhdGlzdGljcyAqLwotICAgIHVuc2lnbmVkIGxvbmcgY29sdW1uLCBy
b3c7IC8qKjwgdGlsZSB0aWxlIHBvc2l0aW9uICovCi0gICAgRXZhc19Db29yZCB4LCB5OyAgICAg
ICAgLyoqPCB0aWxlIGNvb3JkaW5hdGUgcG9zaXRpb24gKi8KLQotICAgIC8qKiBOZXZlciBldmVy
IGNoYW5nZSB0aG9zZSBhZnRlciB0aWxlIGlzIGNyZWF0ZWQgKHJlc3BlY3QgY29uc3QhKSAqLwot
ICAgIGNvbnN0IEV2YXNfQ29vcmQgd2lkdGgsIGhlaWdodDsgICAgICAgIC8qKjwgdGlsZSBzaXpl
IChzZWUgVElMRV9TSVpFX0FUX1pPT00oKSkgKi8KLSAgICBjb25zdCBFdmFzX0NvbG9yc3BhY2Ug
Y3NwYWNlOyAvKio8IGNvbG9yc3BhY2UgKi8KLSAgICBjb25zdCBmbG9hdCB6b29tOyAgICAgICAg
ICAgICAvKio8IHpvb20gbGV2ZWwgY29udGVudHMgd2VyZSByZW5kZXJlZCBhdCAqLwotICAgIGNv
bnN0IHNpemVfdCBieXRlczsgICAgICAgICAgIC8qKjwgYnl0ZXMgdXNlZCBpbiBwaXhlbHMuIGtl
ZXAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBiZWZvcmUgcGl4ZWxzIHRv
IGd1YXJhbnRlZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGFsaWduZW1l
bnQhCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0gICAgaW50IHZpc2li
bGU7ICAgICAgICAgICAgICAgICAgLyoqPCB2aXNpYmlsaXR5IGNvdW50ZXIgb2YgdGhpcyB0aWxl
ICovCi0gICAgRXZhc19PYmplY3QgKmltYWdlOyAgICAgICAgICAgLyoqPCBFdmFzIEltYWdlLCB0
aGUgdGlsZSB0byBiZSByZW5kZXJlZCAqLwotfTsKLQotI2luY2x1ZGUgImV3a190aWxlZF9tYXRy
aXguaCIKLSNpbmNsdWRlICJld2tfdGlsZWRfbW9kZWwuaCIKLQotLyogdmlldyAqLwotRXZhc19P
YmplY3QgKmV3a190aWxlZF9iYWNraW5nX3N0b3JlX2FkZChFdmFzICplKTsKLQotdm9pZCBld2tf
dGlsZWRfYmFja2luZ19zdG9yZV9yZW5kZXJfY2Jfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jv
b2wgKCpjYikodm9pZCAqZGF0YSwgRXdrX1RpbGUgKnQsIGNvbnN0IEVpbmFfUmVjdGFuZ2xlICph
cmVhKSwgY29uc3Qgdm9pZCAqZGF0YSk7Ci0KLUVpbmFfQm9vbCBld2tfdGlsZWRfYmFja2luZ19z
dG9yZV9zY3JvbGxfZnVsbF9vZmZzZXRfc2V0KEV2YXNfT2JqZWN0ICpvLCBFdmFzX0Nvb3JkIHgs
IEV2YXNfQ29vcmQgeSk7Ci1FaW5hX0Jvb2wgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc2Nyb2xs
X2Z1bGxfb2Zmc2V0X2FkZChFdmFzX09iamVjdCAqbywgRXZhc19Db29yZCBkeCwgRXZhc19Db29y
ZCBkeSk7Ci1FaW5hX0Jvb2wgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc2Nyb2xsX2lubmVyX29m
ZnNldF9hZGQoRXZhc19PYmplY3QgKm8sIEV2YXNfQ29vcmQgZHgsIEV2YXNfQ29vcmQgZHksIEV2
YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5LCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29vcmQgaCk7Ci0K
LUVpbmFfQm9vbCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV96b29tX3NldChFdmFzX09iamVjdCAq
bywgZmxvYXQgKnpvb20sIEV2YXNfQ29vcmQgY3gsIEV2YXNfQ29vcmQgY3ksIEV2YXNfQ29vcmQg
Km9mZngsIEV2YXNfQ29vcmQgKm9mZnkpOwotRWluYV9Cb29sIGV3a190aWxlZF9iYWNraW5nX3N0
b3JlX3pvb21fd2Vha19zZXQoRXZhc19PYmplY3QgKm8sIGZsb2F0IHpvb20sIEV2YXNfQ29vcmQg
Y3gsIEV2YXNfQ29vcmQgY3kpOwotdm9pZCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9maXhfb2Zm
c2V0cyhFdmFzX09iamVjdCAqbywgRXZhc19Db29yZCB3LCBFdmFzX0Nvb3JkIGgpOwotdm9pZCBl
d2tfdGlsZWRfYmFja2luZ19zdG9yZV96b29tX3dlYWtfc21vb3RoX3NjYWxlX3NldChFdmFzX09i
amVjdCAqbywgRWluYV9Cb29sIHNtb290aF9zY2FsZSk7Ci12b2lkIGV3a190aWxlZF9iYWNraW5n
X3N0b3JlX2FscGhhX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGhhc19hbHBoYSk7Ci1F
aW5hX0Jvb2wgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdXBkYXRlKEV2YXNfT2JqZWN0ICpvLCBj
b25zdCBFaW5hX1JlY3RhbmdsZSAqdXBkYXRlKTsKLXZvaWQgZXdrX3RpbGVkX2JhY2tpbmdfc3Rv
cmVfdXBkYXRlc19wcm9jZXNzX3ByZV9zZXQoRXZhc19PYmplY3QgKm8sIHZvaWQqKCpjYikodm9p
ZCAqZGF0YSwgRXZhc19PYmplY3QgKm8pLCBjb25zdCB2b2lkICpkYXRhKTsKLXZvaWQgZXdrX3Rp
bGVkX2JhY2tpbmdfc3RvcmVfdXBkYXRlc19wcm9jZXNzX3Bvc3Rfc2V0KEV2YXNfT2JqZWN0ICpv
LCB2b2lkKigqY2IpKHZvaWQgKmRhdGEsIHZvaWQgKnByZV9kYXRhLCBFdmFzX09iamVjdCAqbyks
IGNvbnN0IHZvaWQgKmRhdGEpOwotdm9pZCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV91cGRhdGVz
X3Byb2Nlc3MoRXZhc19PYmplY3QgKm8pOwotdm9pZCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV91
cGRhdGVzX2NsZWFyKEV2YXNfT2JqZWN0ICpvKTsKLXZvaWQgZXdrX3RpbGVkX2JhY2tpbmdfc3Rv
cmVfY29udGVudHNfcmVzaXplKEV2YXNfT2JqZWN0ICpvLCBFdmFzX0Nvb3JkIHdpZHRoLCBFdmFz
X0Nvb3JkIGhlaWdodCk7Ci12b2lkIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX2Rpc2FibGVkX3Vw
ZGF0ZV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCB2YWx1ZSk7Ci12b2lkIGV3a190aWxl
ZF9iYWNraW5nX3N0b3JlX2ZsdXNoKEV2YXNfT2JqZWN0ICpvKTsKLXZvaWQgZXdrX3RpbGVkX2Jh
Y2tpbmdfc3RvcmVfZW5hYmxlX3NjYWxlX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIHZh
bHVlKTsKLQotRXdrX1RpbGVfVW51c2VkX0NhY2hlICpld2tfdGlsZWRfYmFja2luZ19zdG9yZV90
aWxlX3VudXNlZF9jYWNoZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwotdm9pZCBld2tfdGls
ZWRfYmFja2luZ19zdG9yZV90aWxlX3VudXNlZF9jYWNoZV9zZXQoRXZhc19PYmplY3QgKm8sIEV3
a19UaWxlX1VudXNlZF9DYWNoZSAqdHVjKTsKLQotRWluYV9Cb29sIGV3a190aWxlZF9iYWNraW5n
X3N0b3JlX3ByZV9yZW5kZXJfcmVnaW9uKEV2YXNfT2JqZWN0ICpvLCBFdmFzX0Nvb3JkIHgsIEV2
YXNfQ29vcmQgeSwgRXZhc19Db29yZCB3LCBFdmFzX0Nvb3JkIGgsIGZsb2F0IHpvb20pOwotRWlu
YV9Cb29sIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfcmVsYXRpdmVfcmFkaXVz
KEV2YXNfT2JqZWN0ICpvLCB1bnNpZ25lZCBpbnQgbiwgZmxvYXQgem9vbSk7Ci1FaW5hX0Jvb2wg
ZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRlcl9zcGlyYWxfcXVldWUoRXZhc19PYmpl
Y3QgKm8sIEVpbmFfUmVjdGFuZ2xlKiB2aWV3X3JlY3QsIEVpbmFfUmVjdGFuZ2xlICpyZW5kZXJf
cmVjdCwgaW50IG1heF9tZW1vcnksIGZsb2F0IHpvb20pOwotdm9pZCBld2tfdGlsZWRfYmFja2lu
Z19zdG9yZV9wcmVfcmVuZGVyX2NhbmNlbChFdmFzX09iamVjdCAqbyk7Ci0KLUVpbmFfQm9vbCBl
d2tfdGlsZWRfYmFja2luZ19zdG9yZV9kaXNhYmxlX3JlbmRlcihFdmFzX09iamVjdCAqbyk7Ci1F
aW5hX0Jvb2wgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfZW5hYmxlX3JlbmRlcihFdmFzX09iamVj
dCAqbyk7Ci0jZW5kaWYgLy8gZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByaXZhdGUuaCBi
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcml2YXRlLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDM1YWM3YgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcml2
YXRlLmgKQEAgLTAsMCArMSwxMTUgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAg
U2Ftc3VuZyBFbGVjdHJvbmljcworICAgIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFByb0ZVU0lP
TiBlbWJlZGRlZCBzeXN0ZW1zCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lmbmRlZiBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9w
cml2YXRlX2gKKyNkZWZpbmUgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJpdmF0ZV9oCisKKyNp
bmNsdWRlICJFV2ViS2l0LmgiCisjaW5jbHVkZSA8RXZhcy5oPgorI2luY2x1ZGUgPGNhaXJvLmg+
CisKKy8qIEVuYWJsZSBhY2NvdW50aW5nIG9mIHJlbmRlciB0aW1lIGluIHRpbGUgc3RhdGlzdGlj
cyAqLworLy8gI2RlZmluZSBUSUxFX1NUQVRTX0FDQ09VTlRfUkVOREVSX1RJTUUKKworLyogSWYg
ZGVmaW5lIGV3ayB3aWxsIGRvIG1vcmUgYWNjb3VudGluZyB0byBjaGVjayBmb3IgbWVtb3J5IGxl
YWtzCisgKiB0cnkgImtpbGwgLVVTUjEgJFBJRCIgdG8gZ2V0IGluc3RhbnRhbmVvdXMgZGVidWcK
KyAqIHRyeSAia2lsbCAtVVNSMiAkUElEIiB0byBnZXQgaW5zdGFudGFuZW91cyBkZWJ1ZyBhbmQg
Zm9yY2UgZmx1c2ggb2YgY2FjaGUKKyAqLworI3VuZGVmIERFQlVHX01FTV9MRUFLUworCitjb25z
dCBpbnQgZGVmYXVsdFRpbGVXaWR0aCA9IDI1NjsKK2NvbnN0IGludCBkZWZhdWx0VGlsZUhlaWd0
aCA9IDI1NjsKKworY29uc3QgZmxvYXQgem9vbVN0ZXBNaW5pbXVtID0gMC4wMTsKKworI2RlZmlu
ZSBUSUxFX1NJWkVfQVRfWk9PTShTSVpFLCBaT09NKSAoKGludClyb3VuZGYoKFNJWkUpICogKFpP
T00pKSkKKyNkZWZpbmUgVElMRV9aT09NX0FUX1NJWkUoU0laRSwgT1JJR19USUxFKSAoKGZsb2F0
KShTSVpFKSAvIChmbG9hdCkoT1JJR19USUxFKSkKKyNkZWZpbmUgUk9VTkRFRF9aT09NKFNJWkUs
IFpPT00pICgoZmxvYXQpKFNJWkUpIC8gKGZsb2F0KSgoKGludClyb3VuZGYoKFNJWkUpIC8gKFpP
T00pKSkpKQorCit0eXBlZGVmIHN0cnVjdCBfRXdrX1RpbGUgICAgICAgICAgICAgICAgICAgICBF
d2tfVGlsZTsKK3R5cGVkZWYgc3RydWN0IF9Fd2tfVGlsZV9TdGF0cyAgICAgICAgICAgICAgIEV3
a19UaWxlX1N0YXRzOwordHlwZWRlZiBzdHJ1Y3QgX0V3a19UaWxlX01hdHJpeCAgICAgICAgICAg
ICAgRXdrX1RpbGVfTWF0cml4OworCitzdHJ1Y3QgX0V3a19UaWxlX1N0YXRzIHsKKyAgICBkb3Vi
bGUgbGFzdF91c2VkOyAgICAgICAgLyoqPCB0aW1lIG9mIGxhc3QgdXNlICovCisjaWZkZWYgVElM
RV9TVEFUU19BQ0NPVU5UX1JFTkRFUl9USU1FCisgICAgZG91YmxlIHJlbmRlcl90aW1lOyAgICAg
IC8qKjwgYW1vdW50IG9mIHRpbWUgdGhpcyB0aWxlIHRvb2sgdG8gcmVuZGVyICovCisjZW5kaWYK
KyAgICB1bnNpZ25lZCBpbnQgYXJlYTsgICAgICAgLyoqPCBjYWNoZSBmb3IgKHcgKiBoKSAqLwor
ICAgIHVuc2lnbmVkIGludCBtaXNzZXM7ICAgICAvKio8IG51bWJlciBvZiB0aW1lcyBpdCBiZWNh
bWUgZGlydHkgYnV0IG5vdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiByZXBhaW50
ZWQgYXQgYWxsIHNpbmNlIGl0IHdhcyBub3QgdmlzaWJsZS4KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICovCisgICAgRWluYV9Cb29sIGZ1bGxfdXBkYXRlIDogMTsgLyoqPCB0aWxlIHJl
cXVpcmVzIGZ1bGwgc2l6ZSB1cGRhdGUgKi8KK307CisKK3N0cnVjdCBfRXdrX1RpbGUgeworICAg
IEVpbmFfVGlsZXIgKnVwZGF0ZXM7ICAgIC8qKjwgdXBkYXRlZC9kaXJ0eSBhcmVhcyAqLworICAg
IEV3a19UaWxlX1N0YXRzIHN0YXRzOyAgICAgICAvKio8IHRpbGUgdXNhZ2Ugc3RhdGlzdGljcyAq
LworICAgIHVuc2lnbmVkIGxvbmcgY29sdW1uLCByb3c7IC8qKjwgdGlsZSB0aWxlIHBvc2l0aW9u
ICovCisgICAgRXZhc19Db29yZCB4LCB5OyAgICAgICAgLyoqPCB0aWxlIGNvb3JkaW5hdGUgcG9z
aXRpb24gKi8KKworICAgIC8qKiBOZXZlciBldmVyIGNoYW5nZSB0aG9zZSBhZnRlciB0aWxlIGlz
IGNyZWF0ZWQgKHJlc3BlY3QgY29uc3QhKSAqLworICAgIGNvbnN0IEV2YXNfQ29vcmQgd2lkdGgs
IGhlaWdodDsgICAgICAgIC8qKjwgdGlsZSBzaXplIChzZWUgVElMRV9TSVpFX0FUX1pPT00oKSkg
Ki8KKyAgICBjb25zdCBFdmFzX0NvbG9yc3BhY2UgY3NwYWNlOyAvKio8IGNvbG9yc3BhY2UgKi8K
KyAgICBjb25zdCBmbG9hdCB6b29tOyAgICAgICAgICAgICAvKio8IHpvb20gbGV2ZWwgY29udGVu
dHMgd2VyZSByZW5kZXJlZCBhdCAqLworICAgIGNvbnN0IHNpemVfdCBieXRlczsgICAgICAgICAg
IC8qKjwgYnl0ZXMgdXNlZCBpbiBwaXhlbHMuIGtlZXAKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKiBiZWZvcmUgcGl4ZWxzIHRvIGd1YXJhbnRlZQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAqIGFsaWduZW1lbnQhCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICovCisgICAgaW50IHZpc2libGU7ICAgICAgICAgICAgICAgICAgLyoqPCB2
aXNpYmlsaXR5IGNvdW50ZXIgb2YgdGhpcyB0aWxlICovCisgICAgRXZhc19PYmplY3QgKmltYWdl
OyAgICAgICAgICAgLyoqPCBFdmFzIEltYWdlLCB0aGUgdGlsZSB0byBiZSByZW5kZXJlZCAqLwor
fTsKKworLyogdmlldyAqLworRXZhc19PYmplY3QgKmV3a190aWxlZF9iYWNraW5nX3N0b3JlX2Fk
ZChFdmFzICplKTsKKwordm9pZCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9yZW5kZXJfY2Jfc2V0
KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgKCpjYikodm9pZCAqZGF0YSwgRXdrX1RpbGUgKnQs
IGNvbnN0IEVpbmFfUmVjdGFuZ2xlICphcmVhKSwgY29uc3Qgdm9pZCAqZGF0YSk7CisKK0VpbmFf
Qm9vbCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9zY3JvbGxfZnVsbF9vZmZzZXRfc2V0KEV2YXNf
T2JqZWN0ICpvLCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSk7CitFaW5hX0Jvb2wgZXdrX3Rp
bGVkX2JhY2tpbmdfc3RvcmVfc2Nyb2xsX2Z1bGxfb2Zmc2V0X2FkZChFdmFzX09iamVjdCAqbywg
RXZhc19Db29yZCBkeCwgRXZhc19Db29yZCBkeSk7CitFaW5hX0Jvb2wgZXdrX3RpbGVkX2JhY2tp
bmdfc3RvcmVfc2Nyb2xsX2lubmVyX29mZnNldF9hZGQoRXZhc19PYmplY3QgKm8sIEV2YXNfQ29v
cmQgZHgsIEV2YXNfQ29vcmQgZHksIEV2YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5LCBFdmFzX0Nv
b3JkIHcsIEV2YXNfQ29vcmQgaCk7CisKK0VpbmFfQm9vbCBld2tfdGlsZWRfYmFja2luZ19zdG9y
ZV96b29tX3NldChFdmFzX09iamVjdCAqbywgZmxvYXQgKnpvb20sIEV2YXNfQ29vcmQgY3gsIEV2
YXNfQ29vcmQgY3ksIEV2YXNfQ29vcmQgKm9mZngsIEV2YXNfQ29vcmQgKm9mZnkpOworRWluYV9C
b29sIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3pvb21fd2Vha19zZXQoRXZhc19PYmplY3QgKm8s
IGZsb2F0IHpvb20sIEV2YXNfQ29vcmQgY3gsIEV2YXNfQ29vcmQgY3kpOwordm9pZCBld2tfdGls
ZWRfYmFja2luZ19zdG9yZV9maXhfb2Zmc2V0cyhFdmFzX09iamVjdCAqbywgRXZhc19Db29yZCB3
LCBFdmFzX0Nvb3JkIGgpOwordm9pZCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV96b29tX3dlYWtf
c21vb3RoX3NjYWxlX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIHNtb290aF9zY2FsZSk7
Cit2b2lkIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX2FscGhhX3NldChFdmFzX09iamVjdCAqbywg
RWluYV9Cb29sIGhhc19hbHBoYSk7CitFaW5hX0Jvb2wgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVf
dXBkYXRlKEV2YXNfT2JqZWN0ICpvLCBjb25zdCBFaW5hX1JlY3RhbmdsZSAqdXBkYXRlKTsKK3Zv
aWQgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdXBkYXRlc19wcm9jZXNzX3ByZV9zZXQoRXZhc19P
YmplY3QgKm8sIHZvaWQqKCpjYikodm9pZCAqZGF0YSwgRXZhc19PYmplY3QgKm8pLCBjb25zdCB2
b2lkICpkYXRhKTsKK3ZvaWQgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdXBkYXRlc19wcm9jZXNz
X3Bvc3Rfc2V0KEV2YXNfT2JqZWN0ICpvLCB2b2lkKigqY2IpKHZvaWQgKmRhdGEsIHZvaWQgKnBy
ZV9kYXRhLCBFdmFzX09iamVjdCAqbyksIGNvbnN0IHZvaWQgKmRhdGEpOwordm9pZCBld2tfdGls
ZWRfYmFja2luZ19zdG9yZV91cGRhdGVzX3Byb2Nlc3MoRXZhc19PYmplY3QgKm8pOwordm9pZCBl
d2tfdGlsZWRfYmFja2luZ19zdG9yZV91cGRhdGVzX2NsZWFyKEV2YXNfT2JqZWN0ICpvKTsKK3Zv
aWQgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfY29udGVudHNfcmVzaXplKEV2YXNfT2JqZWN0ICpv
LCBFdmFzX0Nvb3JkIHdpZHRoLCBFdmFzX0Nvb3JkIGhlaWdodCk7Cit2b2lkIGV3a190aWxlZF9i
YWNraW5nX3N0b3JlX2Rpc2FibGVkX3VwZGF0ZV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9v
bCB2YWx1ZSk7Cit2b2lkIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX2ZsdXNoKEV2YXNfT2JqZWN0
ICpvKTsKK3ZvaWQgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfZW5hYmxlX3NjYWxlX3NldChFdmFz
X09iamVjdCAqbywgRWluYV9Cb29sIHZhbHVlKTsKKworRXdrX1RpbGVfVW51c2VkX0NhY2hlICpl
d2tfdGlsZWRfYmFja2luZ19zdG9yZV90aWxlX3VudXNlZF9jYWNoZV9nZXQoY29uc3QgRXZhc19P
YmplY3QgKm8pOwordm9pZCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV90aWxlX3VudXNlZF9jYWNo
ZV9zZXQoRXZhc19PYmplY3QgKm8sIEV3a19UaWxlX1VudXNlZF9DYWNoZSAqdHVjKTsKKworRWlu
YV9Cb29sIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfcmVnaW9uKEV2YXNfT2Jq
ZWN0ICpvLCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwgRXZhc19Db29yZCB3LCBFdmFzX0Nv
b3JkIGgsIGZsb2F0IHpvb20pOworRWluYV9Cb29sIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3By
ZV9yZW5kZXJfcmVsYXRpdmVfcmFkaXVzKEV2YXNfT2JqZWN0ICpvLCB1bnNpZ25lZCBpbnQgbiwg
ZmxvYXQgem9vbSk7CitFaW5hX0Jvb2wgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRl
cl9zcGlyYWxfcXVldWUoRXZhc19PYmplY3QgKm8sIEVpbmFfUmVjdGFuZ2xlKiB2aWV3X3JlY3Qs
IEVpbmFfUmVjdGFuZ2xlICpyZW5kZXJfcmVjdCwgaW50IG1heF9tZW1vcnksIGZsb2F0IHpvb20p
Owordm9pZCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX2NhbmNlbChFdmFzX09i
amVjdCAqbyk7CisKK0VpbmFfQm9vbCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9kaXNhYmxlX3Jl
bmRlcihFdmFzX09iamVjdCAqbyk7CitFaW5hX0Jvb2wgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVf
ZW5hYmxlX3JlbmRlcihFdmFzX09iamVjdCAqbyk7CisKKyNlbmRpZiAvLyBld2tfdGlsZWRfYmFj
a2luZ19zdG9yZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3RpbGVk
X21hdHJpeC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX21hdHJpeC5jcHAK
aW5kZXggMTUxNjgxZi4uOTU1MWE2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a190aWxlZF9tYXRyaXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGls
ZWRfbWF0cml4LmNwcApAQCAtMjAsMTAgKzIwLDExIEBACiAKICNkZWZpbmUgX19TVERDX0ZPUk1B
VF9NQUNST1MKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJld2tfdGlsZWRfbWF0cml4
LmgiCiAKLSNpbmNsdWRlICJld2tfdGlsZWRfYmFja2luZ19zdG9yZS5oIgotI2luY2x1ZGUgImV3
a190aWxlZF9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJl
d2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX3RpbGVkX21h
dHJpeF9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX3RpbGVkX21vZGVsX3ByaXZhdGUuaCIKICNp
bmNsdWRlIDxFaW5hLmg+CiAjaW5jbHVkZSA8ZXJybm8uaD4KICNpbmNsdWRlIDxpbnR0eXBlcy5o
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9tYXRyaXguaCBi
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRfbWF0cml4LmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAzZWQxNGMuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a190aWxlZF9tYXRyaXguaAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLS8q
Ci0gICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgU2Ftc3VuZyBFbGVjdHJvbmljcwotICAgIENv
cHlyaWdodCAoQykgMjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCi0KLSAgICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAg
ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI2lm
bmRlZiBld2tfdGlsZWRfbWF0cml4X2gKLSNkZWZpbmUgZXdrX3RpbGVkX21hdHJpeF9oCi0KLSNp
bmNsdWRlICJld2tfdGlsZWRfYmFja2luZ19zdG9yZS5oIgotCi0jaW5jbHVkZSA8RXZhcy5oPgot
Ci0vKiBtYXRyaXggb2YgdGlsZXMgKi8KLUV3a19UaWxlX01hdHJpeCAqZXdrX3RpbGVfbWF0cml4
X25ldyhFd2tfVGlsZV9VbnVzZWRfQ2FjaGUgKnR1YywgdW5zaWduZWQgbG9uZyBjb2xzLCB1bnNp
Z25lZCBsb25nIHJvd3MsIGZsb2F0IHpvb21fbGV2ZWwsIEV2YXNfQ29sb3JzcGFjZSBjb2xvcl9z
cGFjZSwgdm9pZCAoKnJlbmRlcl9jYWxsYmFjaykodm9pZCAqZGF0YSwgRXdrX1RpbGUgKnQsIGNv
bnN0IEVpbmFfUmVjdGFuZ2xlICp1cGRhdGUpLCBjb25zdCB2b2lkICpyZW5kZXJfZGF0YSk7Ci12
b2lkIGV3a190aWxlX21hdHJpeF9lbnRyeV9uZXcoRXdrX1RpbGVfTWF0cml4ICp0bSwgZmxvYXQg
em9vbSk7Ci12b2lkIGV3a190aWxlX21hdHJpeF9mcmVlKEV3a19UaWxlX01hdHJpeCAqdG0pOwot
Ci12b2lkIGV3a190aWxlX21hdHJpeF9yZXNpemUoRXdrX1RpbGVfTWF0cml4ICp0bSwgdW5zaWdu
ZWQgbG9uZyBjb2xzLCB1bnNpZ25lZCBsb25nIHJvd3MpOwotdm9pZCBld2tfdGlsZV9tYXRyaXhf
c2l6ZV9nZXQoRXdrX1RpbGVfTWF0cml4ICp0bSwgdW5zaWduZWQgbG9uZyAqY29scywgdW5zaWdu
ZWQgbG9uZyAqcm93cyk7Ci1ib29sIGV3a190aWxlX21hdHJpeF96b29tX2xldmVsX3NldChFd2tf
VGlsZV9NYXRyaXggKnRtLCBmbG9hdCB6b29tKTsKLXZvaWQgZXdrX3RpbGVfbWF0cml4X2ludmFs
aWRhdGUoRXdrX1RpbGVfTWF0cml4ICp0bSk7Ci0KLUV3a19UaWxlX1VudXNlZF9DYWNoZSAqZXdr
X3RpbGVfbWF0cml4X3VudXNlZF9jYWNoZV9nZXQoY29uc3QgRXdrX1RpbGVfTWF0cml4ICp0bSk7
Ci0KLUV3a19UaWxlICpld2tfdGlsZV9tYXRyaXhfdGlsZV9leGFjdF9nZXQoRXdrX1RpbGVfTWF0
cml4ICp0bSwgdW5zaWduZWQgbG9uZyBjb2wsIHVuc2lnbmVkIGxvbmcgcm93LCBmbG9hdCB6b29t
KTsKLUVpbmFfQm9vbCBld2tfdGlsZV9tYXRyaXhfdGlsZV9leGFjdF9leGlzdHMoRXdrX1RpbGVf
TWF0cml4ICp0bSwgdW5zaWduZWQgbG9uZyBjb2wsIHVuc2lnbmVkIGxvbmcgcm93LCBmbG9hdCB6
b29tKTsKLUV3a19UaWxlICpld2tfdGlsZV9tYXRyaXhfdGlsZV9uZWFyZXN0X2dldChFd2tfVGls
ZV9NYXRyaXggKnRtLCB1bnNpZ25lZCBsb25nIGNvbCwgdW5zaWduZWQgbG9uZyByb3csIGZsb2F0
IHpvb20pOwotRXdrX1RpbGUgKmV3a190aWxlX21hdHJpeF90aWxlX25ldyhFd2tfVGlsZV9NYXRy
aXggKnRtLCBFdmFzICpldmFzLCB1bnNpZ25lZCBsb25nIGNvbCwgdW5zaWduZWQgbG9uZyByb3cs
IGZsb2F0IHpvb20pOwotRWluYV9Cb29sIGV3a190aWxlX21hdHJpeF90aWxlX3B1dChFd2tfVGls
ZV9NYXRyaXggKnRtLCBFd2tfVGlsZSAqdCwgZG91YmxlIGxhc3RfdXNlZCk7Ci0KLUVpbmFfQm9v
bCBld2tfdGlsZV9tYXRyaXhfdGlsZV91cGRhdGUoRXdrX1RpbGVfTWF0cml4ICp0bSwgdW5zaWdu
ZWQgbG9uZyBjb2wsIHVuc2lnbmVkIGxvbmcgcm93LCBjb25zdCBFaW5hX1JlY3RhbmdsZSAqdXBk
YXRlKTsKLUVpbmFfQm9vbCBld2tfdGlsZV9tYXRyaXhfdGlsZV91cGRhdGVfZnVsbChFd2tfVGls
ZV9NYXRyaXggKnRtLCB1bnNpZ25lZCBsb25nIGNvbCwgdW5zaWduZWQgbG9uZyByb3cpOwotdm9p
ZCBld2tfdGlsZV9tYXRyaXhfdGlsZV91cGRhdGVzX2NsZWFyKEV3a19UaWxlX01hdHJpeCAqdG0s
IEV3a19UaWxlICp0KTsKLQotRWluYV9Cb29sIGV3a190aWxlX21hdHJpeF91cGRhdGUoRXdrX1Rp
bGVfTWF0cml4ICp0bSwgY29uc3QgRWluYV9SZWN0YW5nbGUgKnVwZGF0ZSwgZmxvYXQgem9vbSk7
Ci12b2lkIGV3a190aWxlX21hdHJpeF91cGRhdGVzX3Byb2Nlc3MoRXdrX1RpbGVfTWF0cml4ICp0
bSk7Ci12b2lkIGV3a190aWxlX21hdHJpeF91cGRhdGVzX2NsZWFyKEV3a19UaWxlX01hdHJpeCAq
dG0pOwotdm9pZCBld2tfdGlsZV9tYXRyaXhfZnJlZXplKEV3a19UaWxlX01hdHJpeCAqdG0pOwot
dm9pZCBld2tfdGlsZV9tYXRyaXhfdGhhdyhFd2tfVGlsZV9NYXRyaXggKnRtKTsKLQotLy8gcmVt
b3ZlIG1lIQotdm9pZCBld2tfdGlsZV9tYXRyaXhfZGJnKGNvbnN0IEV3a19UaWxlX01hdHJpeCAq
dG0pOwotdm9pZCBld2tfdGlsZV91bnVzZWRfY2FjaGVfZGJnKGNvbnN0IEV3a19UaWxlX1VudXNl
ZF9DYWNoZSAqdHVjKTsKLXZvaWQgZXdrX3RpbGVfYWNjb3VudGluZ19kYmcoKTsKLQotI2VuZGlm
IC8vIGV3a190aWxlZF9tYXRyaXhfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a190aWxlZF9tYXRyaXhfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190
aWxlZF9tYXRyaXhfcHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmIzNzkzYjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3Rp
bGVkX21hdHJpeF9wcml2YXRlLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAgICBDb3B5cmlnaHQg
KEMpIDIwMDktMjAxMCBTYW1zdW5nIEVsZWN0cm9uaWNzCisgICAgQ29weXJpZ2h0IChDKSAyMDA5
LTIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMKKworICAgIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAg
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKwor
ICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisg
ICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIGV3a190aWxlZF9t
YXRyaXhfcHJpdmF0ZV9oCisjZGVmaW5lIGV3a190aWxlZF9tYXRyaXhfcHJpdmF0ZV9oCisKKyNp
bmNsdWRlICJld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdr
X3RpbGVkX21hdHJpeF9wcml2YXRlLmgiCisKKyNpbmNsdWRlIDxFdmFzLmg+CisKKy8qIG1hdHJp
eCBvZiB0aWxlcyAqLworRXdrX1RpbGVfTWF0cml4ICpld2tfdGlsZV9tYXRyaXhfbmV3KEV3a19U
aWxlX1VudXNlZF9DYWNoZSAqdHVjLCB1bnNpZ25lZCBsb25nIGNvbHMsIHVuc2lnbmVkIGxvbmcg
cm93cywgZmxvYXQgem9vbV9sZXZlbCwgRXZhc19Db2xvcnNwYWNlIGNvbG9yX3NwYWNlLCB2b2lk
ICgqcmVuZGVyX2NhbGxiYWNrKSh2b2lkICpkYXRhLCBFd2tfVGlsZSAqdCwgY29uc3QgRWluYV9S
ZWN0YW5nbGUgKnVwZGF0ZSksIGNvbnN0IHZvaWQgKnJlbmRlcl9kYXRhKTsKK3ZvaWQgZXdrX3Rp
bGVfbWF0cml4X2VudHJ5X25ldyhFd2tfVGlsZV9NYXRyaXggKnRtLCBmbG9hdCB6b29tKTsKK3Zv
aWQgZXdrX3RpbGVfbWF0cml4X2ZyZWUoRXdrX1RpbGVfTWF0cml4ICp0bSk7CisKK3ZvaWQgZXdr
X3RpbGVfbWF0cml4X3Jlc2l6ZShFd2tfVGlsZV9NYXRyaXggKnRtLCB1bnNpZ25lZCBsb25nIGNv
bHMsIHVuc2lnbmVkIGxvbmcgcm93cyk7Cit2b2lkIGV3a190aWxlX21hdHJpeF9zaXplX2dldChF
d2tfVGlsZV9NYXRyaXggKnRtLCB1bnNpZ25lZCBsb25nICpjb2xzLCB1bnNpZ25lZCBsb25nICpy
b3dzKTsKK2Jvb2wgZXdrX3RpbGVfbWF0cml4X3pvb21fbGV2ZWxfc2V0KEV3a19UaWxlX01hdHJp
eCAqdG0sIGZsb2F0IHpvb20pOwordm9pZCBld2tfdGlsZV9tYXRyaXhfaW52YWxpZGF0ZShFd2tf
VGlsZV9NYXRyaXggKnRtKTsKKworRXdrX1RpbGVfVW51c2VkX0NhY2hlICpld2tfdGlsZV9tYXRy
aXhfdW51c2VkX2NhY2hlX2dldChjb25zdCBFd2tfVGlsZV9NYXRyaXggKnRtKTsKKworRXdrX1Rp
bGUgKmV3a190aWxlX21hdHJpeF90aWxlX2V4YWN0X2dldChFd2tfVGlsZV9NYXRyaXggKnRtLCB1
bnNpZ25lZCBsb25nIGNvbCwgdW5zaWduZWQgbG9uZyByb3csIGZsb2F0IHpvb20pOworRWluYV9C
b29sIGV3a190aWxlX21hdHJpeF90aWxlX2V4YWN0X2V4aXN0cyhFd2tfVGlsZV9NYXRyaXggKnRt
LCB1bnNpZ25lZCBsb25nIGNvbCwgdW5zaWduZWQgbG9uZyByb3csIGZsb2F0IHpvb20pOworRXdr
X1RpbGUgKmV3a190aWxlX21hdHJpeF90aWxlX25lYXJlc3RfZ2V0KEV3a19UaWxlX01hdHJpeCAq
dG0sIHVuc2lnbmVkIGxvbmcgY29sLCB1bnNpZ25lZCBsb25nIHJvdywgZmxvYXQgem9vbSk7CitF
d2tfVGlsZSAqZXdrX3RpbGVfbWF0cml4X3RpbGVfbmV3KEV3a19UaWxlX01hdHJpeCAqdG0sIEV2
YXMgKmV2YXMsIHVuc2lnbmVkIGxvbmcgY29sLCB1bnNpZ25lZCBsb25nIHJvdywgZmxvYXQgem9v
bSk7CitFaW5hX0Jvb2wgZXdrX3RpbGVfbWF0cml4X3RpbGVfcHV0KEV3a19UaWxlX01hdHJpeCAq
dG0sIEV3a19UaWxlICp0LCBkb3VibGUgbGFzdF91c2VkKTsKKworRWluYV9Cb29sIGV3a190aWxl
X21hdHJpeF90aWxlX3VwZGF0ZShFd2tfVGlsZV9NYXRyaXggKnRtLCB1bnNpZ25lZCBsb25nIGNv
bCwgdW5zaWduZWQgbG9uZyByb3csIGNvbnN0IEVpbmFfUmVjdGFuZ2xlICp1cGRhdGUpOworRWlu
YV9Cb29sIGV3a190aWxlX21hdHJpeF90aWxlX3VwZGF0ZV9mdWxsKEV3a19UaWxlX01hdHJpeCAq
dG0sIHVuc2lnbmVkIGxvbmcgY29sLCB1bnNpZ25lZCBsb25nIHJvdyk7Cit2b2lkIGV3a190aWxl
X21hdHJpeF90aWxlX3VwZGF0ZXNfY2xlYXIoRXdrX1RpbGVfTWF0cml4ICp0bSwgRXdrX1RpbGUg
KnQpOworCitFaW5hX0Jvb2wgZXdrX3RpbGVfbWF0cml4X3VwZGF0ZShFd2tfVGlsZV9NYXRyaXgg
KnRtLCBjb25zdCBFaW5hX1JlY3RhbmdsZSAqdXBkYXRlLCBmbG9hdCB6b29tKTsKK3ZvaWQgZXdr
X3RpbGVfbWF0cml4X3VwZGF0ZXNfcHJvY2VzcyhFd2tfVGlsZV9NYXRyaXggKnRtKTsKK3ZvaWQg
ZXdrX3RpbGVfbWF0cml4X3VwZGF0ZXNfY2xlYXIoRXdrX1RpbGVfTWF0cml4ICp0bSk7Cit2b2lk
IGV3a190aWxlX21hdHJpeF9mcmVlemUoRXdrX1RpbGVfTWF0cml4ICp0bSk7Cit2b2lkIGV3a190
aWxlX21hdHJpeF90aGF3KEV3a19UaWxlX01hdHJpeCAqdG0pOworCisvLyByZW1vdmUgbWUhCit2
b2lkIGV3a190aWxlX21hdHJpeF9kYmcoY29uc3QgRXdrX1RpbGVfTWF0cml4ICp0bSk7Cit2b2lk
IGV3a190aWxlX3VudXNlZF9jYWNoZV9kYmcoY29uc3QgRXdrX1RpbGVfVW51c2VkX0NhY2hlICp0
dWMpOwordm9pZCBld2tfdGlsZV9hY2NvdW50aW5nX2RiZygpOworCisjZW5kaWYgLy8gZXdrX3Rp
bGVkX21hdHJpeF9wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfdGlsZWRfbW9kZWwuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9tb2Rl
bC5jcHAKaW5kZXggYzBlNzAyMC4uMjViMjY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a190aWxlZF9tb2RlbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a190aWxlZF9tb2RlbC5jcHAKQEAgLTIwLDEwICsyMCwxMCBAQAogCiAjZGVmaW5lIF9fU1REQ19G
T1JNQVRfTUFDUk9TCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiZXdrX3RpbGVkX21v
ZGVsLmgiCiAKLSNpbmNsdWRlICJld2tfdGlsZWRfYmFja2luZ19zdG9yZS5oIgotI2luY2x1ZGUg
ImV3a190aWxlZF9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKKyNpbmNsdWRl
ICJld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX3RpbGVk
X21vZGVsX3ByaXZhdGUuaCIKICNpbmNsdWRlIDxFY29yZV9FdmFzLmg+CiAjaW5jbHVkZSA8RWlu
YS5oPgogI2luY2x1ZGUgPGVpbmFfc2FmZXR5X2NoZWNrcy5oPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9tb2RlbC5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a190aWxlZF9tb2RlbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYWFmMjEz
Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRfbW9kZWwuaAor
KysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA5
LTIwMTAgU2Ftc3VuZyBFbGVjdHJvbmljcwotICAgIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFBy
b0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAg
ICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI2lmbmRlZiBld2tfdGlsZWRfbW9kZWxfaAot
I2RlZmluZSBld2tfdGlsZWRfbW9kZWxfaAotCi0jaW5jbHVkZSAiZXdrX3RpbGVkX2JhY2tpbmdf
c3RvcmUuaCIKLQotI2luY2x1ZGUgPEV2YXMuaD4KLQotLyogbW9kZWwgKi8KLUV3a19UaWxlICpl
d2tfdGlsZV9uZXcoRXZhcyAqZXZhcywgRXZhc19Db29yZCB3LCBFdmFzX0Nvb3JkIGgsIGZsb2F0
IHpvb20sIEV2YXNfQ29sb3JzcGFjZSBjc3BhY2UpOwotdm9pZCBld2tfdGlsZV9mcmVlKEV3a19U
aWxlICp0KTsKLXZvaWQgZXdrX3RpbGVfdW51c2VkX2NhY2hlX2NsZWFyKEV3a19UaWxlX1VudXNl
ZF9DYWNoZSAqdHVjKTsKLXZvaWQgZXdrX3RpbGVfc2hvdyhFd2tfVGlsZSAqdCk7Ci12b2lkIGV3
a190aWxlX2hpZGUoRXdrX1RpbGUgKnQpOwotc2l6ZV90IGV3a190aWxlX21lbW9yeV9zaXplX2dl
dChjb25zdCBFd2tfVGlsZSAqdCk7Ci1FaW5hX0Jvb2wgZXdrX3RpbGVfdmlzaWJsZV9nZXQoRXdr
X1RpbGUgKnQpOwotdm9pZCBld2tfdGlsZV91cGRhdGVfZnVsbChFd2tfVGlsZSAqdCk7Ci12b2lk
IGV3a190aWxlX3VwZGF0ZV9hcmVhKEV3a19UaWxlICp0LCBjb25zdCBFaW5hX1JlY3RhbmdsZSAq
cik7Ci12b2lkIGV3a190aWxlX3VwZGF0ZXNfcHJvY2VzcyhFd2tfVGlsZSAqdCwgdm9pZCAoKmNi
KSh2b2lkICpkYXRhLCBFd2tfVGlsZSAqdCwgY29uc3QgRWluYV9SZWN0YW5nbGUgKnVwZGF0ZSks
IGNvbnN0IHZvaWQgKmRhdGEpOwotdm9pZCBld2tfdGlsZV91cGRhdGVzX2NsZWFyKEV3a19UaWxl
ICp0KTsKLQotLyogY2FjaGUgb2YgdW51c2VkIHRpbGVzICovCi1Fd2tfVGlsZV9VbnVzZWRfQ2Fj
aGUgKmV3a190aWxlX3VudXNlZF9jYWNoZV9uZXcoc2l6ZV90IG1heCk7Ci12b2lkIGV3a190aWxl
X3VudXNlZF9jYWNoZV9sb2NrX2FyZWEoRXdrX1RpbGVfVW51c2VkX0NhY2hlICp0dWMsIEV2YXNf
Q29vcmQgeCwgRXZhc19Db29yZCB5LCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29vcmQgaCwgZmxvYXQg
em9vbSk7Ci12b2lkIGV3a190aWxlX3VudXNlZF9jYWNoZV91bmxvY2tfYXJlYShFd2tfVGlsZV9V
bnVzZWRfQ2FjaGUgKnR1Yyk7Ci1Fd2tfVGlsZV9VbnVzZWRfQ2FjaGUgKmV3a190aWxlX3VudXNl
ZF9jYWNoZV9yZWYoRXdrX1RpbGVfVW51c2VkX0NhY2hlICp0dWMpOwotdm9pZCBld2tfdGlsZV91
bnVzZWRfY2FjaGVfdW5yZWYoRXdrX1RpbGVfVW51c2VkX0NhY2hlICp0dWMpOwotCi12b2lkIGV3
a190aWxlX3VudXNlZF9jYWNoZV9kaXJ0eShFd2tfVGlsZV9VbnVzZWRfQ2FjaGUgKnR1Yyk7Ci0K
LXZvaWQgZXdrX3RpbGVfdW51c2VkX2NhY2hlX2ZyZWV6ZShFd2tfVGlsZV9VbnVzZWRfQ2FjaGUg
KnR1Yyk7Ci12b2lkIGV3a190aWxlX3VudXNlZF9jYWNoZV90aGF3KEV3a19UaWxlX1VudXNlZF9D
YWNoZSAqdHVjKTsKLQotRWluYV9Cb29sIGV3a190aWxlX3VudXNlZF9jYWNoZV90aWxlX2dldChF
d2tfVGlsZV9VbnVzZWRfQ2FjaGUgKnR1YywgRXdrX1RpbGUgKnQpOwotRWluYV9Cb29sIGV3a190
aWxlX3VudXNlZF9jYWNoZV90aWxlX3B1dChFd2tfVGlsZV9VbnVzZWRfQ2FjaGUgKnR1YywgRXdr
X1RpbGUgKnQsIHZvaWQgKCogdGlsZV9mcmVlX2NiKSh2b2lkICpkYXRhLCBFd2tfVGlsZSAqdCks
IGNvbnN0IHZvaWQgKmRhdGEpOwotCi0jZW5kaWYgLy8gZXdrX3RpbGVkX21vZGVsX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRfbW9kZWxfcHJpdmF0ZS5oIGIv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9tb2RlbF9wcml2YXRlLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzVmNmQ3MgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRfbW9kZWxfcHJpdmF0ZS5oCkBAIC0wLDAgKzEs
NTYgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgU2Ftc3VuZyBFbGVjdHJvbmlj
cworICAgIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1z
CisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgor
Ki8KKworI2lmbmRlZiBld2tfdGlsZWRfbW9kZWxfcHJpdmF0ZV9oCisjZGVmaW5lIGV3a190aWxl
ZF9tb2RlbF9wcml2YXRlX2gKKworI2luY2x1ZGUgImV3a190aWxlZF9iYWNraW5nX3N0b3JlX3By
aXZhdGUuaCIKKworI2luY2x1ZGUgPEV2YXMuaD4KKworLyogbW9kZWwgKi8KK0V3a19UaWxlICpl
d2tfdGlsZV9uZXcoRXZhcyAqZXZhcywgRXZhc19Db29yZCB3LCBFdmFzX0Nvb3JkIGgsIGZsb2F0
IHpvb20sIEV2YXNfQ29sb3JzcGFjZSBjc3BhY2UpOwordm9pZCBld2tfdGlsZV9mcmVlKEV3a19U
aWxlICp0KTsKK3ZvaWQgZXdrX3RpbGVfdW51c2VkX2NhY2hlX2NsZWFyKEV3a19UaWxlX1VudXNl
ZF9DYWNoZSAqdHVjKTsKK3ZvaWQgZXdrX3RpbGVfc2hvdyhFd2tfVGlsZSAqdCk7Cit2b2lkIGV3
a190aWxlX2hpZGUoRXdrX1RpbGUgKnQpOworc2l6ZV90IGV3a190aWxlX21lbW9yeV9zaXplX2dl
dChjb25zdCBFd2tfVGlsZSAqdCk7CitFaW5hX0Jvb2wgZXdrX3RpbGVfdmlzaWJsZV9nZXQoRXdr
X1RpbGUgKnQpOwordm9pZCBld2tfdGlsZV91cGRhdGVfZnVsbChFd2tfVGlsZSAqdCk7Cit2b2lk
IGV3a190aWxlX3VwZGF0ZV9hcmVhKEV3a19UaWxlICp0LCBjb25zdCBFaW5hX1JlY3RhbmdsZSAq
cik7Cit2b2lkIGV3a190aWxlX3VwZGF0ZXNfcHJvY2VzcyhFd2tfVGlsZSAqdCwgdm9pZCAoKmNi
KSh2b2lkICpkYXRhLCBFd2tfVGlsZSAqdCwgY29uc3QgRWluYV9SZWN0YW5nbGUgKnVwZGF0ZSks
IGNvbnN0IHZvaWQgKmRhdGEpOwordm9pZCBld2tfdGlsZV91cGRhdGVzX2NsZWFyKEV3a19UaWxl
ICp0KTsKKworLyogY2FjaGUgb2YgdW51c2VkIHRpbGVzICovCitFd2tfVGlsZV9VbnVzZWRfQ2Fj
aGUgKmV3a190aWxlX3VudXNlZF9jYWNoZV9uZXcoc2l6ZV90IG1heCk7Cit2b2lkIGV3a190aWxl
X3VudXNlZF9jYWNoZV9sb2NrX2FyZWEoRXdrX1RpbGVfVW51c2VkX0NhY2hlICp0dWMsIEV2YXNf
Q29vcmQgeCwgRXZhc19Db29yZCB5LCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29vcmQgaCwgZmxvYXQg
em9vbSk7Cit2b2lkIGV3a190aWxlX3VudXNlZF9jYWNoZV91bmxvY2tfYXJlYShFd2tfVGlsZV9V
bnVzZWRfQ2FjaGUgKnR1Yyk7CitFd2tfVGlsZV9VbnVzZWRfQ2FjaGUgKmV3a190aWxlX3VudXNl
ZF9jYWNoZV9yZWYoRXdrX1RpbGVfVW51c2VkX0NhY2hlICp0dWMpOwordm9pZCBld2tfdGlsZV91
bnVzZWRfY2FjaGVfdW5yZWYoRXdrX1RpbGVfVW51c2VkX0NhY2hlICp0dWMpOworCit2b2lkIGV3
a190aWxlX3VudXNlZF9jYWNoZV9kaXJ0eShFd2tfVGlsZV9VbnVzZWRfQ2FjaGUgKnR1Yyk7CisK
K3ZvaWQgZXdrX3RpbGVfdW51c2VkX2NhY2hlX2ZyZWV6ZShFd2tfVGlsZV9VbnVzZWRfQ2FjaGUg
KnR1Yyk7Cit2b2lkIGV3a190aWxlX3VudXNlZF9jYWNoZV90aGF3KEV3a19UaWxlX1VudXNlZF9D
YWNoZSAqdHVjKTsKKworRWluYV9Cb29sIGV3a190aWxlX3VudXNlZF9jYWNoZV90aWxlX2dldChF
d2tfVGlsZV9VbnVzZWRfQ2FjaGUgKnR1YywgRXdrX1RpbGUgKnQpOworRWluYV9Cb29sIGV3a190
aWxlX3VudXNlZF9jYWNoZV90aWxlX3B1dChFd2tfVGlsZV9VbnVzZWRfQ2FjaGUgKnR1YywgRXdr
X1RpbGUgKnQsIHZvaWQgKCogdGlsZV9mcmVlX2NiKSh2b2lkICpkYXRhLCBFd2tfVGlsZSAqdCks
IGNvbnN0IHZvaWQgKmRhdGEpOworCisjZW5kaWYgLy8gZXdrX3RpbGVkX21vZGVsX3ByaXZhdGVf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9wcml2YXRlLmgg
Yi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX3ByaXZhdGUuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggOGExNWFhMi4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX3RpbGVkX3ByaXZhdGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAK
LS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgU2Ftc3VuZyBFbGVjdHJvbmljcwotICAg
IENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCi0KLSAg
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
LSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQot
I2lmbmRlZiBld2tfdGlsZWRfcHJpdmF0ZV9oCi0jZGVmaW5lIGV3a190aWxlZF9wcml2YXRlX2gK
LQotLyogbG9nZ2luZyAqLwotZXh0ZXJuIGludCBfZXdrX3RpbGVkX2xvZ19kb207Ci0KLSNkZWZp
bmUgQ1JJVElDQUwoLi4uKSBFSU5BX0xPR19ET01fQ1JJVChfZXdrX3RpbGVkX2xvZ19kb20sIF9f
VkFfQVJHU19fKQotI2RlZmluZSBFUlIoLi4uKSBFSU5BX0xPR19ET01fRVJSKF9ld2tfdGlsZWRf
bG9nX2RvbSwgX19WQV9BUkdTX18pCi0jZGVmaW5lIFdSTiguLi4pIEVJTkFfTE9HX0RPTV9XQVJO
KF9ld2tfdGlsZWRfbG9nX2RvbSwgX19WQV9BUkdTX18pCi0jZGVmaW5lIElORiguLi4pIEVJTkFf
TE9HX0RPTV9JTkZPKF9ld2tfdGlsZWRfbG9nX2RvbSwgX19WQV9BUkdTX18pCi0jZGVmaW5lIERC
RyguLi4pIEVJTkFfTE9HX0RPTV9EQkcoX2V3a190aWxlZF9sb2dfZG9tLCBfX1ZBX0FSR1NfXykK
LSNlbmRpZiAvLyBld2tfdGlsZWRfcHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX3V0aWwuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a191dGlsLmNw
cAppbmRleCA3NDliMDM4Li5hMTUwN2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX3V0aWwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdXRpbC5jcHAK
QEAgLTE5LDEwICsxOSw5IEBACiAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
ZXdrX3V0aWwuaCIKIAotI2luY2x1ZGUgImV3a19sb2dnaW5nLmgiCiAjaW5jbHVkZSAiZXdrX3By
aXZhdGUuaCIKKyNpbmNsdWRlICJld2tfdXRpbF9wcml2YXRlLmgiCiAjaW5jbHVkZSA8ZWluYV9z
YWZldHlfY2hlY2tzLmg+CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a191dGlsLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3V0aWwuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggM2IzMmQ5Yy4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX3V0aWwuaAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8qCi0g
ICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMKLSAg
ICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBTYW1zdW5nIEVsZWN0cm9uaWNzCi0KLSAgICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
Ci0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgot
ICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotLyoqCi0g
KiBAZmlsZSAgICBld2tfdXRpbC5oCi0gKiBAYnJpZWYgICBIZWxwZnVsbCBtZXRob2RzIGZvciBX
ZWJLaXQtRUZMLgotICovCi0KLSNpZm5kZWYgZXdrX3V0aWxfaAotI2RlZmluZSBld2tfdXRpbF9o
Ci0KLSNpbmNsdWRlIDxFdmFzLmg+Ci0jaW5jbHVkZSA8Y2Fpcm8uaD4KLQotRXZhc19PYmplY3Qg
KmV3a191dGlsX2ltYWdlX2Zyb21fY2Fpcm9fc3VyZmFjZV9hZGQoRXZhcyAqY2FudmFzLCBjYWly
b19zdXJmYWNlX3QgKnN1cmZhY2UpOwotCi0jZW5kaWYgLy8gZXdrX3V0aWxfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a191dGlsX3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJL
aXQvZWZsL2V3ay9ld2tfdXRpbF9wcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uYmVlMmQwZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfdXRpbF9wcml2YXRlLmgKQEAgLTAsMCArMSwyOSBAQAorLyoKKyAgICBDb3B5cmlnaHQg
KEMpIDIwMDktMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcworICAgIENvcHlyaWdodCAo
QykgMjAwOS0yMDEwIFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAg
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKwor
ICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisg
ICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIGV3a191dGlsX3By
aXZhdGVfaAorI2RlZmluZSBld2tfdXRpbF9wcml2YXRlX2gKKworI2luY2x1ZGUgPEV2YXMuaD4K
KyNpbmNsdWRlIDxjYWlyby5oPgorCitFdmFzX09iamVjdCAqZXdrX3V0aWxfaW1hZ2VfZnJvbV9j
YWlyb19zdXJmYWNlX2FkZChFdmFzICpjYW52YXMsIGNhaXJvX3N1cmZhY2VfdCAqc3VyZmFjZSk7
CisKKyNlbmRpZiAvLyBld2tfdXRpbF9wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvZWZsL2V3ay9ld2tfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcu
Y3BwCmluZGV4IGM2OGZjZjcuLmFlYjlmMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNw
cApAQCAtNTUsOCArNTUsMTQgQEAKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1
ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiY19pbnN0YW5jZS5oIgotI2luY2x1ZGUgImV3a19s
b2dnaW5nLmgiCisjaW5jbHVkZSAiZXdrX2ZyYW1lLmgiCisjaW5jbHVkZSAiZXdrX2ZyYW1lX3By
aXZhdGUuaCIKKyNpbmNsdWRlICJld2tfaGlzdG9yeV9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdr
X2pzX3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a19z
ZXR0aW5nc19wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0ZS5oIgorI2luY2x1
ZGUgImV3a193aW5kb3dfZmVhdHVyZXNfcHJpdmF0ZS5oIgogI2luY2x1ZGUgPEVjb3JlLmg+CiAj
aW5jbHVkZSA8RWluYS5oPgogI2luY2x1ZGUgPEV2YXMuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfdmlld19wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX3ZpZXdfcHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYw
ZjYyMjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdf
cHJpdmF0ZS5oCkBAIC0wLDAgKzEsMTU1IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAwOS0y
MDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCisgICAgQ29weXJpZ2h0IChDKSAyMDA5LTIw
MTIgU2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAg
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpZm5kZWYgZXdrX3ZpZXdfcHJpdmF0ZV9oCisj
ZGVmaW5lIGV3a192aWV3X3ByaXZhdGVfaAorCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRl
ICJQYWdlLmgiCisjaW5jbHVkZSAiV2lkZ2V0LmgiCisjaW5jbHVkZSAiZXdrX3ZpZXcuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorY2xhc3Mg
Q29sb3I7CitjbGFzcyBDb2xvckNob29zZXJDbGllbnQ7CisjZW5kaWYKKworY2xhc3MgUG9wdXBN
ZW51Q2xpZW50OworfQorCisvLyBEZWZpbmVzIHRoZSBuYW1lcyBmb3IgaW5pdGlhbGl6aW5nIGV3
a192aWV3X3NtYXJ0X2NsYXNzCitjb25zdCBjaGFyIGV3a1ZpZXdUaWxlZE5hbWVbXSA9ICJFd2tf
Vmlld19UaWxlZCI7Citjb25zdCBjaGFyIGV3a1ZpZXdTaW5nbGVOYW1lW10gPSAiRXdrX1ZpZXdf
U2luZ2xlIjsKKworLy8gRGVmaW5lIHRvIHByZXZlbnQgYW4gYXBwbGljYXRpb24gdXNpbmcgZGlm
ZmVyZW50IHZpZXcgdHlwZSBmcm9tIGNhbGxpbmcgdGhlIGZ1bmN0aW9uLgorI2RlZmluZSBFV0tf
VklFV19UWVBFX0NIRUNLX09SX1JFVFVSTihld2tWaWV3LCB2aWV3TmFtZSwgLi4uKSBcCisgICAg
aWYgKCFldmFzX29iamVjdF9zbWFydF90eXBlX2NoZWNrKGV3a1ZpZXcsIHZpZXdOYW1lKSkgeyBc
CisgICAgICAgIElORigiZXdrVmlldyBpc24ndCBhbiBpbnN0YW5jZSBvZiAlcyIsIHZpZXdOYW1l
KTsgXAorICAgICAgICByZXR1cm4gX19WQV9BUkdTX187IFwKKyAgICB9CisKK3ZvaWQgZXdrX3Zp
ZXdfcmVhZHkoRXZhc19PYmplY3QqIGV3a1ZpZXcpOwordm9pZCBld2tfdmlld19pbnB1dF9tZXRo
b2Rfc3RhdGVfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBib29sIGFjdGl2ZSk7Cit2b2lkIGV3
a192aWV3X3RpdGxlX3NldChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgY2hhciogdGl0bGUp
Owordm9pZCBld2tfdmlld191cmlfY2hhbmdlZChFdmFzX09iamVjdCogZXdrVmlldyk7Cit2b2lk
IGV3a192aWV3X2xvYWRfZG9jdW1lbnRfZmluaXNoZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2
YXNfT2JqZWN0KiBmcmFtZSk7Cit2b2lkIGV3a192aWV3X2xvYWRfc3RhcnRlZChFdmFzX09iamVj
dCogZXdrVmlldywgRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKK3ZvaWQgZXdrX3ZpZXdfbG9hZF9w
cm92aXNpb25hbChFdmFzX09iamVjdCogZXdrVmlldyk7Cit2b2lkIGV3a192aWV3X2ZyYW1lX21h
aW5fbG9hZF9zdGFydGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKK3ZvaWQgZXdrX3ZpZXdfZnJh
bWVfbWFpbl9jbGVhcmVkKEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKK3ZvaWQgZXdrX3ZpZXdfZnJh
bWVfbWFpbl9pY29uX3JlY2VpdmVkKEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKK3ZvaWQgZXdrX3Zp
ZXdfbG9hZF9maW5pc2hlZChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgRXdrX0ZyYW1lX0xv
YWRfRXJyb3IqIGVycm9yKTsKK3ZvaWQgZXdrX3ZpZXdfbG9hZF9lcnJvcihFdmFzX09iamVjdCog
ZXdrVmlldywgY29uc3QgRXdrX0ZyYW1lX0xvYWRfRXJyb3IqIGVycm9yKTsKK3ZvaWQgZXdrX3Zp
ZXdfbG9hZF9wcm9ncmVzc19jaGFuZ2VkKEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKK3ZvaWQgZXdr
X3ZpZXdfbG9hZF9zaG93KEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKK3ZvaWQgZXdrX3ZpZXdfb25s
b2FkX2V2ZW50KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX09iamVjdCogZnJhbWUpOwordm9p
ZCBld2tfdmlld19yZXN0b3JlX3N0YXRlKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX09iamVj
dCogZnJhbWUpOworRXZhc19PYmplY3QqIGV3a192aWV3X3dpbmRvd19jcmVhdGUoRXZhc19PYmpl
Y3QqIGV3a1ZpZXcsIGJvb2wgamF2YXNjcmlwdCwgY29uc3QgV2ViQ29yZTo6V2luZG93RmVhdHVy
ZXMqIGNvcmVGZWF0dXJlcyk7Cit2b2lkIGV3a192aWV3X3dpbmRvd19jbG9zZShFdmFzX09iamVj
dCogZXdrVmlldyk7CisKK3ZvaWQgZXdrX3ZpZXdfbW91c2VfbGlua19ob3Zlcl9pbihFdmFzX09i
amVjdCogZXdrVmlldywgdm9pZCogZGF0YSk7Cit2b2lkIGV3a192aWV3X21vdXNlX2xpbmtfaG92
ZXJfb3V0KEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKKwordm9pZCBld2tfdmlld190b29sYmFyc192
aXNpYmxlX3NldChFdmFzX09iamVjdCogZXdrVmlldywgYm9vbCB2aXNpYmxlKTsKK3ZvaWQgZXdr
X3ZpZXdfdG9vbGJhcnNfdmlzaWJsZV9nZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGJvb2wqIHZp
c2libGUpOworCit2b2lkIGV3a192aWV3X3N0YXR1c2Jhcl92aXNpYmxlX3NldChFdmFzX09iamVj
dCogZXdrVmlldywgYm9vbCB2aXNpYmxlKTsKK3ZvaWQgZXdrX3ZpZXdfc3RhdHVzYmFyX3Zpc2li
bGVfZ2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBib29sKiB2aXNpYmxlKTsKK3ZvaWQgZXdrX3Zp
ZXdfc3RhdHVzYmFyX3RleHRfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBjaGFyKiB0
ZXh0KTsKKwordm9pZCBld2tfdmlld19zY3JvbGxiYXJzX3Zpc2libGVfc2V0KEV2YXNfT2JqZWN0
KiBld2tWaWV3LCBib29sIHZpc2libGUpOwordm9pZCBld2tfdmlld19zY3JvbGxiYXJzX3Zpc2li
bGVfZ2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBib29sKiB2aXNpYmxlKTsKKwordm9pZCBld2tf
dmlld19tZW51YmFyX3Zpc2libGVfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBib29sIHZpc2li
bGUpOwordm9pZCBld2tfdmlld19tZW51YmFyX3Zpc2libGVfZ2V0KEV2YXNfT2JqZWN0KiBld2tW
aWV3LCBib29sKiB2aXNpYmxlKTsKKwordm9pZCBld2tfdmlld190b29sdGlwX3RleHRfc2V0KEV2
YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBjaGFyKiB0ZXh0KTsKKwordm9pZCBld2tfdmlld19h
ZGRfY29uc29sZV9tZXNzYWdlKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBjaGFyKiBtZXNz
YWdlLCB1bnNpZ25lZCBpbnQgbGluZU51bWJlciwgY29uc3QgY2hhciogc291cmNlSUQpOworCit2
b2lkIGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X2FsZXJ0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBF
dmFzX09iamVjdCogZnJhbWUsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpOworYm9vbCBld2tfdmlld19y
dW5famF2YXNjcmlwdF9jb25maXJtKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX09iamVjdCog
ZnJhbWUsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpOworYm9vbCBld2tfdmlld19ydW5famF2YXNjcmlw
dF9wcm9tcHQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2YXNfT2JqZWN0KiBmcmFtZSwgY29uc3Qg
Y2hhciogbWVzc2FnZSwgY29uc3QgY2hhciogZGVmYXVsdFZhbHVlLCBjaGFyKiogdmFsdWUpOwor
Ym9vbCBld2tfdmlld19zaG91bGRfaW50ZXJydXB0X2phdmFzY3JpcHQoRXZhc19PYmplY3QqIGV3
a1ZpZXcpOwordWludDY0X3QgZXdrX3ZpZXdfZXhjZWVkZWRfZGF0YWJhc2VfcXVvdGEoRXZhc19P
YmplY3QqIGV3a1ZpZXcsIEV2YXNfT2JqZWN0KiBmcmFtZSwgY29uc3QgY2hhciogZGF0YWJhc2VO
YW1lLCB1aW50NjRfdCBjdXJyZW50U2l6ZSwgdWludDY0X3QgZXhwZWN0ZWRTaXplKTsKKworYm9v
bCBld2tfdmlld19ydW5fb3Blbl9wYW5lbChFdmFzX09iamVjdCogZXdrVmlldywgRXZhc19PYmpl
Y3QqIGZyYW1lLCBib29sIGFsbG93c011bHRpcGxlRmlsZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBhY2NlcHRNSU1FVHlwZXMsIEVpbmFfTGlzdCoqIHNlbGVjdGVkRmlsZW5hbWVzKTsKKwordm9p
ZCBld2tfdmlld19yZXBhaW50KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX0Nvb3JkIHgsIEV2
YXNfQ29vcmQgeSwgRXZhc19Db29yZCB3aWR0aCwgRXZhc19Db29yZCBoZWlnaHQpOwordm9pZCBl
d2tfdmlld19zY3JvbGwoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2YXNfQ29vcmQgZGVsdGFYLCBF
dmFzX0Nvb3JkIGRlbHRhWSwgRXZhc19Db29yZCBzY3JvbGxYLCBFdmFzX0Nvb3JkIHNjcm9sbFks
IEV2YXNfQ29vcmQgc2Nyb2xsV2lkdGgsIEV2YXNfQ29vcmQgc2Nyb2xsSGVpZ2h0LCBFdmFzX0Nv
b3JkIGNlbnRlclgsIEV2YXNfQ29vcmQgY2VudGVyWSwgRXZhc19Db29yZCBjZW50ZXJXLCBFdmFz
X0Nvb3JkIGNlbnRlckhlaWdodCk7CitXZWJDb3JlOjpQYWdlKiBld2tfdmlld19jb3JlX3BhZ2Vf
Z2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKKworV1RGOjpQYXNzUmVmUHRyPFdlYkNv
cmU6OkZyYW1lPiBld2tfdmlld19mcmFtZV9jcmVhdGUoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2
YXNfT2JqZWN0KiBmcmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkhUTUxG
cmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LCBjb25zdCBXZWJDb3JlOjpLVVJMJiB1cmws
IGNvbnN0IFdURjo6U3RyaW5nJiByZWZlcnJlcik7CisKK1dURjo6UGFzc1JlZlB0cjxXZWJDb3Jl
OjpXaWRnZXQ+IGV3a192aWV3X3BsdWdpbl9jcmVhdGUoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2
YXNfT2JqZWN0KiBmcmFtZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgcGx1Z2luU2l6ZSwgV2Vi
Q29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFdlYkNvcmU6OktVUkwmIHVy
bCwgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBXVEY6
OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFtVmFsdWVzLCBjb25zdCBXVEY6OlN0cmluZyYgbWlt
ZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5KTsKKworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9S
KQordm9pZCBld2tfdmlld19jb2xvcl9jaG9vc2VyX25ldyhFdmFzX09iamVjdCogZXdrVmlldywg
V2ViQ29yZTo6Q29sb3JDaG9vc2VyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFdlYkNvcmU6OkNvbG9y
JiBpbml0aWFsQ29sb3IpOwordm9pZCBld2tfdmlld19jb2xvcl9jaG9vc2VyX2NoYW5nZWQoRXZh
c19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBuZXdDb2xvcik7CisjZW5k
aWYKKwordm9pZCBld2tfdmlld19wb3B1cF9uZXcoRXZhc19PYmplY3QqIGV3a1ZpZXcsIFdlYkNv
cmU6OlBvcHVwTWVudUNsaWVudCogY2xpZW50LCBpbnQgc2VsZWN0ZWQsIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmIHJlY3QpOwordm9pZCBld2tfdmlld192aWV3cG9ydF9hdHRyaWJ1dGVzX3NldChF
dmFzX09iamVjdCogZXdrVmlldywgY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHMmIGFy
Z3VtZW50cyk7CisKK3ZvaWQgZXdrX3ZpZXdfZG93bmxvYWRfcmVxdWVzdChFdmFzX09iamVjdCog
ZXdrVmlldywgRXdrX0Rvd25sb2FkKiBkb3dubG9hZCk7CisKK3ZvaWQgZXdrX3ZpZXdfZWRpdG9y
X2NsaWVudF9jb250ZW50c19jaGFuZ2VkKEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKK3ZvaWQgZXdr
X3ZpZXdfZWRpdG9yX2NsaWVudF9zZWxlY3Rpb25fY2hhbmdlZChFdmFzX09iamVjdCogZXdrVmll
dyk7CisKK2Jvb2wgZXdrX3ZpZXdfZm9jdXNfY2FuX2N5Y2xlKEV2YXNfT2JqZWN0KiBld2tWaWV3
LCBFd2tfRm9jdXNfRGlyZWN0aW9uIGRpcmVjdGlvbik7Cit2b2lkIGV3a192aWV3X2ZyYW1lX3Zp
ZXdfY3JlYXRpb25fbm90aWZ5KEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKKworI2lmIEVOQUJMRShO
RVRTQ0FQRV9QTFVHSU5fQVBJKQordm9pZCBld2tfdmlld19qc193aW5kb3dfb2JqZWN0X2NsZWFy
KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX09iamVjdCogZnJhbWUpOworI2VuZGlmCisKKyNp
ZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQordm9pZCBld2tfdmlld19uZWVkX3RvdWNoX2V2ZW50c19z
ZXQoRXZhc19PYmplY3QqLCBib29sIG5lZWRlZCk7Citib29sIGV3a192aWV3X25lZWRfdG91Y2hf
ZXZlbnRzX2dldChjb25zdCBFdmFzX09iamVjdCopOworI2VuZGlmCisKK2NvbnN0IEVpbmFfUmVj
dGFuZ2xlKiBld2tfdmlld19yZXBhaW50c19wb3AoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2
LCBzaXplX3QqIGNvdW50KTsKK2NvbnN0IEV3a19TY3JvbGxfUmVxdWVzdCogZXdrX3ZpZXdfc2Ny
b2xsX3JlcXVlc3RzX2dldChjb25zdCBFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYsIHNpemVf
dCogY291bnQpOworCit2b2lkIGV3a192aWV3X3JlcGFpbnRfYWRkKEV3a19WaWV3X1ByaXZhdGVf
RGF0YSogcHJpdiwgRXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkIHksIEV2YXNfQ29vcmQgd2lkdGgs
IEV2YXNfQ29vcmQgaGVpZ2h0KTsKKwordm9pZCBld2tfdmlld19sYXlvdXRfaWZfbmVlZGVkX3Jl
Y3Vyc2l2ZShFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYpOworCitib29sIGV3a192aWV3X25h
dmlnYXRpb25fcG9saWN5X2RlY2lzaW9uKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfRnJhbWVf
UmVzb3VyY2VfUmVxdWVzdCogcmVxdWVzdCk7CisKK3ZvaWQgZXdrX3ZpZXdfY29udGVudHNfc2l6
ZV9jaGFuZ2VkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX0Nvb3JkIHdpZHRoLCBFdmFzX0Nv
b3JkIGhlaWdodCk7CisKK1dlYkNvcmU6OkZsb2F0UmVjdCBld2tfdmlld19wYWdlX3JlY3RfZ2V0
KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKKwordm9pZCBld2tfdmlld19taXhlZF9jb250
ZW50X2Rpc3BsYXllZF9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGJvb2wgaGFzRGlzcGxheWVk
KTsKK3ZvaWQgZXdrX3ZpZXdfbWl4ZWRfY29udGVudF9ydW5fc2V0KEV2YXNfT2JqZWN0KiBld2tW
aWV3LCBib29sIGhhc1J1bik7CisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiti
b29sIGV3a192aWV3X2FjY2VsZXJhdGVkX2NvbXBvc2l0aW5nX29iamVjdF9jcmVhdGUoRXZhc19P
YmplY3QqIGV3a1ZpZXcsIEV2YXNfTmF0aXZlX1N1cmZhY2UqIG5hdGl2ZVN1cmZhY2UsIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIHJlY3QpOworV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0QqIGV3
a192aWV3X2FjY2VsZXJhdGVkX2NvbXBvc2l0aW5nX2NvbnRleHRfZ2V0KEV2YXNfT2JqZWN0KiBl
d2tWaWV3KTsKKyNlbmRpZgorCituYW1lc3BhY2UgRVdLUHJpdmF0ZSB7CitXZWJDb3JlOjpQYWdl
ICpjb3JlUGFnZShjb25zdCBFdmFzX09iamVjdCAqZXdrVmlldyk7CitQbGF0Zm9ybVBhZ2VDbGll
bnQgY29yZVBhZ2VDbGllbnQoRXZhc19PYmplY3QqIGV3a1ZpZXcpOworfSAvLyBuYW1lc3BhY2Ug
RVdLUHJpdmF0ZQorCisjZW5kaWYgLy8gZXdrX3ZpZXdfcHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfc2luZ2xlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
ZWZsL2V3ay9ld2tfdmlld19zaW5nbGUuY3BwCmluZGV4IDFkZWNlMDYuLjljMTg5MzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld19zaW5nbGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld19zaW5nbGUuY3BwCkBAIC0yMiw4ICsyMiw4IEBA
CiAjaW5jbHVkZSAiZXdrX3ZpZXcuaCIKIAogI2luY2x1ZGUgImV3a19mcmFtZS5oIgotI2luY2x1
ZGUgImV3a19sb2dnaW5nLmgiCiAjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJl
d2tfdmlld19wcml2YXRlLmgiCiAKICNpbmNsdWRlIDxFY29yZV9FdmFzLmg+CiAjaW5jbHVkZSA8
RXZhcy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3X3RpbGVk
LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld190aWxlZC5jcHAKaW5kZXggMzQy
Y2M0ZS4uNTVhNThlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3
X3RpbGVkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfdGlsZWQuY3Bw
CkBAIC0yMSwxMyArMjEsMTIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJld2tf
dmlldy5oIgogCi0jaW5jbHVkZSAiZXdrX2xvZ2dpbmcuaCIKICNpbmNsdWRlICJld2tfcHJpdmF0
ZS5oIgotCisjaW5jbHVkZSAiZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJpdmF0ZS5oIgorI2lu
Y2x1ZGUgImV3a192aWV3X3ByaXZhdGUuaCIKICNpbmNsdWRlIDxFdmFzLmg+CiAjaW5jbHVkZSA8
UmVmUHRyQ2Fpcm8uaD4KICNpbmNsdWRlIDxlaW5hX3NhZmV0eV9jaGVja3MuaD4KLSNpbmNsdWRl
IDxld2tfdGlsZWRfYmFja2luZ19zdG9yZS5oPgogCiBzdGF0aWMgRXdrX1ZpZXdfU21hcnRfQ2xh
c3MgX3BhcmVudF9zYyA9IEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfTlVMTDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a193aW5kb3dfZmVhdHVyZXMuY3BwIGIvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a193aW5kb3dfZmVhdHVyZXMuY3BwCmluZGV4IDYxODFiZGEu
LjMwMDAyOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfd2luZG93X2Zl
YXR1cmVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3dpbmRvd19mZWF0dXJl
cy5jcHAKQEAgLTIyLDcgKzIyLDYgQEAKICNpbmNsdWRlICJld2tfd2luZG93X2ZlYXR1cmVzLmgi
CiAKICNpbmNsdWRlICJXaW5kb3dGZWF0dXJlcy5oIgotI2luY2x1ZGUgImV3a19sb2dnaW5nLmgi
CiAjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKICNpbmNsdWRlIDxFaW5hLmg+CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfd2luZG93X2ZlYXR1cmVzX3ByaXZhdGUuaCBi
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfd2luZG93X2ZlYXR1cmVzX3ByaXZhdGUuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNjU4NTkyCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a193aW5kb3dfZmVhdHVyZXNfcHJpdmF0ZS5oCkBA
IC0wLDAgKzEsMjYgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgUHJvRlVTSU9O
IGVtYmVkZGVkIHN5c3RlbXMKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMiBTYW1zdW5nIEVs
ZWN0cm9uaWNzCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAg
ICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
ICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgorKi8KKworI2lmbmRlZiBld2tfd2luZG93X2ZlYXR1cmVzX3ByaXZhdGVfaAorI2Rl
ZmluZSBld2tfd2luZG93X2ZlYXR1cmVzX3ByaXZhdGVfaAorCitFd2tfV2luZG93X0ZlYXR1cmVz
KiBld2tfd2luZG93X2ZlYXR1cmVzX25ld19mcm9tX2NvcmUoY29uc3QgV2ViQ29yZTo6V2luZG93
RmVhdHVyZXMqIGNvcmUpOworCisjZW5kaWYgLy8gZXdrX3dpbmRvd19mZWF0dXJlc19wcml2YXRl
X2gKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA4
YzI4NWEzLi4xZmM1NDZkIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTItMDUtMTQgIFRvbWFzeiBNb3Jhd3NraSAg
PHQubW9yYXdza2lAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bRFJUXSBTcGxpdCBld2tf
cHJpdmF0ZS5oIGZpbGUgdG8gbXVsdGlwbGUgcHJpdmF0ZSBmaWxlcy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0NTcyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgQW50b25pbyBHb21lcy4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2VmbC9EdW1w
UmVuZGVyVHJlZUNocm9tZS5jcHA6CisKIDIwMTItMDUtMTQgIEx1a2UgTWFjcGhlcnNvbiAgPG1h
Y3BoZXJzb25AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEludHJvZHVjZSBFTkFCTEVfQ1NTX1ZB
UklBQkxFUyBjb21waWxlIGZsYWcuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9l
ZmwvRHVtcFJlbmRlclRyZWVDaHJvbWUuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0R1
bXBSZW5kZXJUcmVlQ2hyb21lLmNwcAppbmRleCA5Zjc0NDE2Li5hYWE1NGViIDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvRHVtcFJlbmRlclRyZWVDaHJvbWUuY3BwCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9EdW1wUmVuZGVyVHJlZUNocm9tZS5jcHAKQEAgLTMx
LDYgKzMxLDcgQEAKICNpbmNsdWRlICJEdW1wUmVuZGVyVHJlZVZpZXcuaCIKICNpbmNsdWRlICJF
dmVudFNlbmRlci5oIgogI2luY2x1ZGUgIkdDQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIktVUkwu
aCIKICNpbmNsdWRlICJMYXlvdXRUZXN0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIk5vdEltcGxl
bWVudGVkLmgiCiAjaW5jbHVkZSAiVGV4dElucHV0Q29udHJvbGxlci5oIgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>