<?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>65163</bug_id>
          
          <creation_ts>2011-07-25 21:26:23 -0700</creation_ts>
          <short_desc>[EFL] Fix pointer operator coding style in ewk_view</short_desc>
          <delta_ts>2011-07-26 19:45:53 -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>
          <dependson>65162</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Gyuyoung Kim">gyuyoung.kim</reporter>
          <assigned_to name="Gyuyoung Kim">gyuyoung.kim</assigned_to>
          <cc>eric</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>rakuco</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>442099</commentid>
    <comment_count>0</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-07-25 21:26:23 -0700</bug_when>
    <thetext>Public APIs of port tends to be in the coding style of the embedding system. So, this patch moves &apos;*&apos; operator to variable according to efl coding style. In addition, add a space between &apos;*&apos; and variable in type casting. But, I wonder if implementation of public API also needs to follow coding style of embedding system. It looks GTK port only follows embedding coding style rule in .h file. In my patch, I modify both .h and .cpp for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442101</commentid>
    <comment_count>1</comment_count>
      <attachid>101969</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-07-25 21:27:57 -0700</bug_when>
    <thetext>Created attachment 101969
Proposed Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442103</commentid>
    <comment_count>2</comment_count>
      <attachid>101970</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-07-25 21:47:01 -0700</bug_when>
    <thetext>Created attachment 101970
Patch based on latest webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442104</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-25 21:48:23 -0700</bug_when>
    <thetext>Attachment 101970 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit/efl/ChangeLog&apos;, u&apos;Source/Web...&quot; exit_code: 1

Last 3072 characters of output:
e between type name and * in Evas_Event_Mouse_Up *ev  [whitespace/declaration] [3]
Source/WebKit/efl/ewk/ewk_view.cpp:488:  Declaration has space between type name and * in Ewk_View_Smart_Data *sd  [whitespace/declaration] [3]
Source/WebKit/efl/ewk/ewk_view.cpp:496:  Declaration has space between type name and * in Evas_Event_Mouse_Move *ev  [whitespace/declaration] [3]
Source/WebKit/efl/ewk/ewk_view.cpp:497:  Declaration has space between type name and * in Ewk_View_Smart_Data *sd  [whitespace/declaration] [3]
Source/WebKit/efl/ewk/ewk_view.cpp:505:  Declaration has space between type name and * in Evas_Event_Key_Down *ev  [whitespace/declaration] [3]
Source/WebKit/efl/ewk/ewk_view.cpp:506:  Declaration has space between type name and * in Ewk_View_Smart_Data *sd  [whitespace/declaration] [3]
Source/WebKit/efl/ewk/ewk_view.cpp:514:  Declaration has space between type name and * in Evas_Event_Key_Up *ev  [whitespace/declaration] [3]
Source/WebKit/efl/ewk/ewk_view.cpp:515:  Declaration has space between type name and * in Ewk_View_Smart_Data *sd  [whitespace/declaration] [3]
Source/WebKit/efl/ewk/ewk_view.cpp:537:  Declaration has space between type name and * in Ewk_View_Private_Data *priv  [whitespace/declaration] [3]
Source/WebKit/efl/ewk/ewk_view.cpp:782:  Declaration has space between type name and * in Ewk_View_Private_Data *priv  [whitespace/declaration] [3]
Source/WebKit/efl/ewk/ewk_view.cpp:983:  Declaration has space between type name and * in Ewk_View_Smart_Data *sd  [whitespace/declaration] [3]
Source/WebKit/efl/ewk/ewk_view.cpp:1541:  Declaration has space between type name and * in char *ewk_view_selection_get  [whitespace/declaration] [3]
Source/WebKit/efl/ewk/ewk_view.cpp:3018:  Declaration has space between type name and * in Ewk_View_Smart_Data *ewk_view_smart_data_get  [whitespace/declaration] [3]
Source/WebKit/efl/ewk/ewk_view.cpp:3132:  Declaration has space between type name and * in cairo_t *cr  [whitespace/declaration] [3]
Source/WebKit/efl/ewk/ewk_view.cpp:3148:  Declaration has space between type name and * in Ewk_View_Paint_Context *ewk_view_paint_context_new  [whitespace/declaration] [3]
Source/WebKit/efl/ewk/ewk_view.cpp:3155:  Declaration has space between type name and * in Ewk_View_Paint_Context *ctxt  [whitespace/declaration] [3]
Source/WebKit/efl/ewk/ewk_view.cpp:3536:  Declaration has space between type name and * in Evas_Object *frame  [whitespace/declaration] [3]
Source/WebKit/efl/ewk/ewk_view.cpp:3594:  Declaration has space between type name and * in Evas_Object *frame  [whitespace/declaration] [3]
Source/WebKit/efl/ewk/ewk_view.cpp:3680:  Declaration has space between type name and * in Evas_Object *ewk_view_window_create  [whitespace/declaration] [3]
Source/WebKit/efl/ewk/ewk_view.cpp:3687:  Declaration has space between type name and * in Ewk_Window_Features *window_features  [whitespace/declaration] [3]
Source/WebKit/efl/ewk/ewk_view.cpp:4149:  Declaration has space between type name and * in Ewk_Menu_Item *item  [whitespace/declaration] [3]
Total errors found: 42 in 3 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442183</commentid>
    <comment_count>4</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2011-07-26 05:27:43 -0700</bug_when>
    <thetext>Personally I&apos;m not very fond of EFL&apos;s style, but it would be good to have some consistency in the files, so r+ from my side.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442674</commentid>
    <comment_count>5</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-07-26 18:11:18 -0700</bug_when>
    <thetext>CC&apos;ing Eric, tkent, Could you please review this patch ?
Sorry for adding CC. But, it was difficult to find proper reviewers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442712</commentid>
    <comment_count>6</comment_count>
      <attachid>101970</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-26 19:45:47 -0700</bug_when>
    <thetext>Comment on attachment 101970
Patch based on latest webkit

Clearing flags on attachment: 101970

Committed r91815: &lt;http://trac.webkit.org/changeset/91815&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442713</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-26 19:45:53 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101969</attachid>
            <date>2011-07-25 21:27:57 -0700</date>
            <delta_ts>2011-07-25 21:47:01 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>patch-coding-style.patch</filename>
            <type>text/plain</type>
            <size>123690</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZwppbmRleCBmZjFiNjJiLi40MzA5ZThhIDEwMDc1NQotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjUyIEBACisyMDExLTA3LTI0ICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1A
c2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0gRml4IHBvaW50ZXIgb3BlcmF0b3IgY29kaW5n
IHN0eWxlIGluIGV3a192aWV3LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NjUxNjMKKworICAgICAgICBNb3ZlICcqJyBvcGVyYXRvciB0byB2YXJpYWJs
ZSBhY2NvcmRpbmcgdG8gZWZsIGNvZGluZyBzdHlsZS4gSW4gYWRkaXRpb24sCisgICAgICAgIGFk
ZCBhIHNwYWNlIGJldHdlZW4gKiBhbmQgdmFyaWFibGUgaW4gdHlwZSBjYXN0aW5nLgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZXdrL2V3a192aWV3
LmNwcDoKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9jaGFuZ2VkKToKKyAgICAgICAgKF9ld2tf
dmlld19yZXBhaW50c19yZXNpemUpOgorICAgICAgICAoX2V3a192aWV3X3JlcGFpbnRfYWRkKToK
KyAgICAgICAgKF9ld2tfdmlld19yZXBhaW50c19mbHVzaCk6CisgICAgICAgIChfZXdrX3ZpZXdf
c2Nyb2xsc19yZXNpemUpOgorICAgICAgICAoX2V3a192aWV3X3Njcm9sbF9hZGQpOgorICAgICAg
ICAoX2V3a192aWV3X3Njcm9sbHNfZmx1c2gpOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2Zv
Y3VzX2luKToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9mb2N1c19vdXQpOgorICAgICAgICAo
X2V3a192aWV3X3NtYXJ0X21vdXNlX3doZWVsKToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9t
b3VzZV9kb3duKToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9tb3VzZV91cCk6CisgICAgICAg
IChfZXdrX3ZpZXdfc21hcnRfbW91c2VfbW92ZSk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRf
a2V5X2Rvd24pOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2tleV91cCk6CisgICAgICAgIChf
ZXdrX3ZpZXdfc21hcnRfYWRkX2NvbnNvbGVfbWVzc2FnZSk6CisgICAgICAgIChfZXdrX3ZpZXdf
c21hcnRfcnVuX2phdmFzY3JpcHRfYWxlcnQpOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X3J1
bl9qYXZhc2NyaXB0X2NvbmZpcm0pOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X3Nob3VsZF9p
bnRlcnJ1cHRfamF2YXNjcmlwdCk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfcnVuX2phdmFz
Y3JpcHRfcHJvbXB0KToKKyAgICAgICAgKF9ld2tfdmlld19vbl9mb2N1c19pbik6CisgICAgICAg
IChfZXdrX3ZpZXdfb25fZm9jdXNfb3V0KToKKyAgICAgICAgKF9ld2tfdmlld19vbl9tb3VzZV93
aGVlbCk6CisgICAgICAgIChfZXdrX3ZpZXdfb25fbW91c2VfZG93bik6CisgICAgICAgIChfZXdr
X3ZpZXdfb25fbW91c2VfdXApOgorICAgICAgICAoX2V3a192aWV3X29uX21vdXNlX21vdmUpOgor
ICAgICAgICAoX2V3a192aWV3X29uX2tleV9kb3duKToKKyAgICAgICAgKF9ld2tfdmlld19vbl9r
ZXlfdXApOgorICAgICAgICAoX2V3a192aWV3X2NvcmVfZnJhbWVfbmV3KToKKyAgICAgICAgKF9l
d2tfdmlld19wcml2X25ldyk6CisgICAgICAgIChfZXdrX3ZpZXdfcHJpdl9kZWwpOgorICAgICAg
ICAoX2V3a192aWV3X3NtYXJ0X2FkZCk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfZGVsKToK
KyAgICAgICAgKF9ld2tfdmlld19zbWFydF9yZXNpemUpOgorICAgICAgICAoX2V3a192aWV3X3Nt
YXJ0X21vdmUpOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2NhbGN1bGF0ZSk6CisgICAgICAg
IChfZXdrX3ZpZXdfc21hcnRfY29udGVudHNfcmVzaXplKToKKyAgICAgICAgKF9ld2tfdmlld19z
bWFydF96b29tX3NldCk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfZmx1c2gpOgorICAgICAg
ICAoX2V3a192aWV3X3NtYXJ0X3ByZV9yZW5kZXJfcmVnaW9uKToKKyAgICAgICAgKF9ld2tfdmll
d19zbWFydF9wcmVfcmVuZGVyX3JlbGF0aXZlX3JhZGl1cyk6CisgICAgICAgIChfZXdrX3ZpZXdf
c21hcnRfcHJlX3JlbmRlcl9jYW5jZWwpOgorICAgICAgICAoX2V3a192aWV3X3pvb21fYW5pbWF0
ZWRfbWFya19zdG9wKToKKyAgICAgICAgKF9ld2tfdmlld196b29tX2FuaW1hdGVkX2ZpbmlzaCk6
CisgICAgICAgIChfZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9jdXJyZW50KToKKyAgICAgICAgKF9l
d2tfdmlld196b29tX2FuaW1hdG9yX2NiKToKKyAgICAgICAgKF9ld2tfdmlld196b29tX2FuaW1h
dGlvbl9zdGFydCk6CisgICAgICAgIChfZXdrX3ZpZXdfdmlld3BvcnRfYXR0cmlidXRlc19jb21w
dXRlKToKKyAgICAgICAgKGV3a192aWV3X2Jhc2Vfc21hcnRfc2V0KToKKyAgICAgICAgKGV3a192
aWV3X2ZpeGVkX2xheW91dF9zaXplX3NldCk6CisgICAgICAgIChld2tfdmlld19maXhlZF9sYXlv
dXRfc2l6ZV9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfdGhlbWVfc2V0KToKKyAgICAgICAgKGV3
a192aWV3X3RoZW1lX2dldCk6CisgICAgICAgIChld2tfdmlld19mcmFtZV9tYWluX2dldCk6Cisg
ICAgICAgIChld2tfdmlld19mcmFtZV9mb2N1c2VkX2dldCk6CisgICAgICAgIChld2tfdmlld191
cmlfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3VyaV9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdf
dGl0bGVfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X2VkaXRhYmxlX2dldCk6CisgICAgICAgIChl
d2tfdmlld19iZ19jb2xvcl9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfYmdfY29sb3JfZ2V0KToK
KyAgICAgICAgKGV3a192aWV3X3RleHRfc2VhcmNoKToKKyAgICAgICAgKGV3a192aWV3X3RleHRf
bWF0Y2hlc19tYXJrKToKKyAgICAgICAgKGV3a192aWV3X3RleHRfbWF0Y2hlc191bm1hcmtfYWxs
KToKKyAgICAgICAgKGV3a192aWV3X3RleHRfbWF0Y2hlc19oaWdobGlnaHRfc2V0KToKKyAgICAg
ICAgKGV3a192aWV3X3RleHRfbWF0Y2hlc19oaWdobGlnaHRfZ2V0KToKKyAgICAgICAgKGV3a192
aWV3X2VkaXRhYmxlX3NldCk6CisgICAgICAgIChld2tfdmlld19zZWxlY3Rpb25fZ2V0KToKKyAg
ICAgICAgKF9ld2tfdmlld19lZGl0b3JfY29tbWFuZCk6CisgICAgICAgIChld2tfdmlld19leGVj
dXRlX2VkaXRvcl9jb21tYW5kKToKKyAgICAgICAgKGV3a192aWV3X2NvbnRleHRfbWVudV9mb3J3
YXJkX2V2ZW50KToKKyAgICAgICAgKGV3a192aWV3X2xvYWRfcHJvZ3Jlc3NfZ2V0KToKKyAgICAg
ICAgKGV3a192aWV3X3N0b3ApOgorICAgICAgICAoZXdrX3ZpZXdfcmVsb2FkKToKKyAgICAgICAg
KGV3a192aWV3X3JlbG9hZF9mdWxsKToKKyAgICAgICAgKGV3a192aWV3X2JhY2spOgorICAgICAg
ICAoZXdrX3ZpZXdfZm9yd2FyZCk6CisgICAgICAgIChld2tfdmlld19uYXZpZ2F0ZSk6CisgICAg
ICAgIChld2tfdmlld19iYWNrX3Bvc3NpYmxlKToKKyAgICAgICAgKGV3a192aWV3X2ZvcndhcmRf
cG9zc2libGUpOgorICAgICAgICAoZXdrX3ZpZXdfbmF2aWdhdGVfcG9zc2libGUpOgorICAgICAg
ICAoZXdrX3ZpZXdfaGlzdG9yeV9lbmFibGVfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X2hpc3Rv
cnlfZW5hYmxlX3NldCk6CisgICAgICAgIChld2tfdmlld19oaXN0b3J5X2dldCk6CisgICAgICAg
IChld2tfdmlld196b29tX2dldCk6CisgICAgICAgIChld2tfdmlld196b29tX3NldCk6CisgICAg
ICAgIChld2tfdmlld196b29tX3dlYWtfc21vb3RoX3NjYWxlX2dldCk6CisgICAgICAgIChld2tf
dmlld196b29tX3dlYWtfc21vb3RoX3NjYWxlX3NldCk6CisgICAgICAgIChld2tfdmlld196b29t
X3dlYWtfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3pvb21fYW5pbWF0ZWRfbWFya19zdGFydCk6
CisgICAgICAgIChld2tfdmlld196b29tX2FuaW1hdGVkX21hcmtfZW5kKToKKyAgICAgICAgKGV3
a192aWV3X3pvb21fYW5pbWF0ZWRfbWFya19jdXJyZW50KToKKyAgICAgICAgKGV3a192aWV3X3pv
b21fYW5pbWF0ZWRfbWFya19zdG9wKToKKyAgICAgICAgKGV3a192aWV3X3pvb21fYW5pbWF0ZWRf
c2V0KToKKyAgICAgICAgKGV3a192aWV3X3pvb21fdGV4dF9vbmx5X2dldCk6CisgICAgICAgIChl
d2tfdmlld196b29tX3RleHRfb25seV9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfcHJlX3JlbmRl
cl9yZWdpb24pOgorICAgICAgICAoZXdrX3ZpZXdfcHJlX3JlbmRlcl9yZWxhdGl2ZV9yYWRpdXMp
OgorICAgICAgICAoZXdrX3ZpZXdfcHJlX3JlbmRlcl9jYW5jZWwpOgorICAgICAgICAoZXdrX3Zp
ZXdfc2V0dGluZ191c2VyX2FnZW50X2dldCk6CisgICAgICAgIChld2tfdmlld19zZXR0aW5nX3Vz
ZXJfYWdlbnRfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfdXNlcl9zdHlsZXNoZWV0
X2dldCk6CisgICAgICAgIChld2tfdmlld19zZXR0aW5nX3VzZXJfc3R5bGVzaGVldF9zZXQpOgor
ICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19hdXRvX2xvYWRfaW1hZ2VzX2dldCk6CisgICAgICAg
IChld2tfdmlld19zZXR0aW5nX2F1dG9fbG9hZF9pbWFnZXNfc2V0KToKKyAgICAgICAgKGV3a192
aWV3X3NldHRpbmdfYXV0b19zaHJpbmtfaW1hZ2VzX2dldCk6CisgICAgICAgIChld2tfdmlld19z
ZXR0aW5nX2F1dG9fc2hyaW5rX2ltYWdlc19zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc2V0dGlu
Z19lbmFibGVfYXV0b19yZXNpemVfd2luZG93X2dldCk6CisgICAgICAgIChld2tfdmlld19zZXR0
aW5nX2VuYWJsZV9hdXRvX3Jlc2l6ZV93aW5kb3dfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3Nl
dHRpbmdfZW5hYmxlX3NjcmlwdHNfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZW5h
YmxlX3NjcmlwdHNfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZW5hYmxlX3BsdWdp
bnNfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZW5hYmxlX3BsdWdpbnNfc2V0KToK
KyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmdfZ2V0KToK
KyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmdfc2V0KToK
KyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfc2NyaXB0c193aW5kb3dfb3Blbl9nZXQpOgorICAg
ICAgICAoZXdrX3ZpZXdfc2V0dGluZ19zY3JpcHRzX3dpbmRvd19vcGVuX3NldCk6CisgICAgICAg
IChld2tfdmlld19zZXR0aW5nX3Jlc2l6YWJsZV90ZXh0YXJlYXNfZ2V0KToKKyAgICAgICAgKGV3
a192aWV3X3NldHRpbmdfcmVzaXphYmxlX3RleHRhcmVhc19zZXQpOgorICAgICAgICAoZXdrX3Zp
ZXdfc2V0dGluZ19wcml2YXRlX2Jyb3dzaW5nX2dldCk6CisgICAgICAgIChld2tfdmlld19zZXR0
aW5nX3ByaXZhdGVfYnJvd3Npbmdfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfb2Zm
bGluZV9hcHBfY2FjaGVfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfb2ZmbGluZV9h
cHBfY2FjaGVfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfY2FyZXRfYnJvd3Npbmdf
Z2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfY2FyZXRfYnJvd3Npbmdfc2V0KToKKyAg
ICAgICAgKGV3a192aWV3X3NldHRpbmdfZW5jb2RpbmdfY3VzdG9tX2dldCk6CisgICAgICAgIChl
d2tfdmlld19zZXR0aW5nX2VuY29kaW5nX2N1c3RvbV9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdf
c2V0dGluZ19lbmNvZGluZ19kZWZhdWx0X2dldCk6CisgICAgICAgIChld2tfdmlld19zZXR0aW5n
X2VuY29kaW5nX2RlZmF1bHRfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZW5jb2Rp
bmdfZGV0ZWN0b3Jfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZW5jb2RpbmdfZGV0
ZWN0b3JfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2RldmVsb3Blcl9l
eHRyYXNfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2RldmVsb3Blcl9l
eHRyYXNfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZm9udF9taW5pbXVtX3NpemVf
Z2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZm9udF9taW5pbXVtX3NpemVfc2V0KToK
KyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZm9udF9taW5pbXVtX2xvZ2ljYWxfc2l6ZV9nZXQp
OgorICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19mb250X21pbmltdW1fbG9naWNhbF9zaXplX3Nl
dCk6CisgICAgICAgIChld2tfdmlld19zZXR0aW5nX2ZvbnRfZGVmYXVsdF9zaXplX2dldCk6Cisg
ICAgICAgIChld2tfdmlld19zZXR0aW5nX2ZvbnRfZGVmYXVsdF9zaXplX3NldCk6CisgICAgICAg
IChld2tfdmlld19zZXR0aW5nX2ZvbnRfbW9ub3NwYWNlX3NpemVfZ2V0KToKKyAgICAgICAgKGV3
a192aWV3X3NldHRpbmdfZm9udF9tb25vc3BhY2Vfc2l6ZV9zZXQpOgorICAgICAgICAoZXdrX3Zp
ZXdfc2V0dGluZ19mb250X3N0YW5kYXJkX2dldCk6CisgICAgICAgIChld2tfdmlld19zZXR0aW5n
X2ZvbnRfc3RhbmRhcmRfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZm9udF9jdXJz
aXZlX2dldCk6CisgICAgICAgIChld2tfdmlld19zZXR0aW5nX2ZvbnRfY3Vyc2l2ZV9zZXQpOgor
ICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19mb250X2ZhbnRhc3lfZ2V0KToKKyAgICAgICAgKGV3
a192aWV3X3NldHRpbmdfZm9udF9mYW50YXN5X3NldCk6CisgICAgICAgIChld2tfdmlld19zZXR0
aW5nX2ZvbnRfbW9ub3NwYWNlX2dldCk6CisgICAgICAgIChld2tfdmlld19zZXR0aW5nX2ZvbnRf
bW9ub3NwYWNlX3NldCk6CisgICAgICAgIChld2tfdmlld19zZXR0aW5nX2ZvbnRfc2VyaWZfZ2V0
KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZm9udF9zZXJpZl9zZXQpOgorICAgICAgICAo
ZXdrX3ZpZXdfc2V0dGluZ19mb250X3NhbnNfc2VyaWZfZ2V0KToKKyAgICAgICAgKGV3a192aWV3
X3NldHRpbmdfZm9udF9zYW5zX3NlcmlmX3NldCk6CisgICAgICAgIChld2tfdmlld19zZXR0aW5n
X3NwYXRpYWxfbmF2aWdhdGlvbl9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19zcGF0
aWFsX25hdmlnYXRpb25fc2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfbG9jYWxfc3Rv
cmFnZV9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19sb2NhbF9zdG9yYWdlX3NldCk6
CisgICAgICAgIChld2tfdmlld19zZXR0aW5nX3BhZ2VfY2FjaGVfZ2V0KToKKyAgICAgICAgKGV3
a192aWV3X3NldHRpbmdfcGFnZV9jYWNoZV9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc2V0dGlu
Z19sb2NhbF9zdG9yYWdlX2RhdGFiYXNlX3BhdGhfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X3Nl
dHRpbmdfbG9jYWxfc3RvcmFnZV9kYXRhYmFzZV9wYXRoX3NldCk6CisgICAgICAgIChld2tfdmll
d19zbWFydF9kYXRhX2dldCk6CisgICAgICAgIChld2tfdmlld19yZXBhaW50c19nZXQpOgorICAg
ICAgICAoZXdrX3ZpZXdfc2Nyb2xsX3JlcXVlc3RzX2dldCk6CisgICAgICAgIChld2tfdmlld19y
ZXBhaW50X2FkZCk6CisgICAgICAgIChld2tfdmlld19sYXlvdXRfaWZfbmVlZGVkX3JlY3Vyc2l2
ZSk6CisgICAgICAgIChld2tfdmlld19zY3JvbGxzX3Byb2Nlc3MpOgorICAgICAgICAoZXdrX3Zp
ZXdfcGFpbnRfY29udGV4dF9uZXcpOgorICAgICAgICAoZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9m
cmVlKToKKyAgICAgICAgKGV3a192aWV3X3BhaW50X2NvbnRleHRfc2F2ZSk6CisgICAgICAgIChl
d2tfdmlld19wYWludF9jb250ZXh0X3Jlc3RvcmUpOgorICAgICAgICAoZXdrX3ZpZXdfcGFpbnRf
Y29udGV4dF9jbGlwKToKKyAgICAgICAgKGV3a192aWV3X3BhaW50X2NvbnRleHRfcGFpbnQpOgor
ICAgICAgICAoZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9wYWludF9jb250ZW50cyk6CisgICAgICAg
IChld2tfdmlld19wYWludF9jb250ZXh0X3NjYWxlKToKKyAgICAgICAgKGV3a192aWV3X3BhaW50
X2NvbnRleHRfdHJhbnNsYXRlKToKKyAgICAgICAgKGV3a192aWV3X3BhaW50KToKKyAgICAgICAg
KGV3a192aWV3X3BhaW50X2NvbnRlbnRzKToKKyAgICAgICAgKGV3a192aWV3X3JlYWR5KToKKyAg
ICAgICAgKGV3a192aWV3X2lucHV0X21ldGhvZF9zdGF0ZV9zZXQpOgorICAgICAgICAoZXdrX3Zp
ZXdfdGl0bGVfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3VyaV9jaGFuZ2VkKToKKyAgICAgICAg
KGV3a192aWV3X2xvYWRfc3RhcnRlZCk6CisgICAgICAgIChld2tfdmlld19mcmFtZV9tYWluX2xv
YWRfc3RhcnRlZCk6CisgICAgICAgIChld2tfdmlld19sb2FkX3Byb3Zpc2lvbmFsKToKKyAgICAg
ICAgKGV3a192aWV3X2xvYWRfc2hvdyk6CisgICAgICAgIChld2tfdmlld19mcmFtZV9tYWluX2Ns
ZWFyZWQpOgorICAgICAgICAoZXdrX3ZpZXdfZnJhbWVfbWFpbl9pY29uX3JlY2VpdmVkKToKKyAg
ICAgICAgKGV3a192aWV3X2xvYWRfZmluaXNoZWQpOgorICAgICAgICAoZXdrX3ZpZXdfbG9hZF9l
cnJvcik6CisgICAgICAgIChld2tfdmlld19sb2FkX3Byb2dyZXNzX2NoYW5nZWQpOgorICAgICAg
ICAoZXdrX3ZpZXdfcmVzdG9yZV9zdGF0ZSk6CisgICAgICAgIChld2tfdmlld193aW5kb3dfY3Jl
YXRlKToKKyAgICAgICAgKGV3a192aWV3X3dpbmRvd19jbG9zZSk6CisgICAgICAgIChld2tfdmll
d19tb3VzZV9saW5rX2hvdmVyX2luKToKKyAgICAgICAgKGV3a192aWV3X21vdXNlX2xpbmtfaG92
ZXJfb3V0KToKKyAgICAgICAgKGV3a192aWV3X3Rvb2xiYXJzX3Zpc2libGVfc2V0KToKKyAgICAg
ICAgKGV3a192aWV3X3Rvb2xiYXJzX3Zpc2libGVfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X3N0
YXR1c2Jhcl92aXNpYmxlX3NldCk6CisgICAgICAgIChld2tfdmlld19zdGF0dXNiYXJfdmlzaWJs
ZV9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc3RhdHVzYmFyX3RleHRfc2V0KToKKyAgICAgICAg
KGV3a192aWV3X3Njcm9sbGJhcnNfdmlzaWJsZV9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc2Ny
b2xsYmFyc192aXNpYmxlX2dldCk6CisgICAgICAgIChld2tfdmlld19tZW51YmFyX3Zpc2libGVf
c2V0KToKKyAgICAgICAgKGV3a192aWV3X21lbnViYXJfdmlzaWJsZV9nZXQpOgorICAgICAgICAo
ZXdrX3ZpZXdfdG9vbHRpcF90ZXh0X3NldCk6CisgICAgICAgIChld2tfdmlld19hZGRfY29uc29s
ZV9tZXNzYWdlKToKKyAgICAgICAgKGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X2FsZXJ0KToKKyAg
ICAgICAgKGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X2NvbmZpcm0pOgorICAgICAgICAoZXdrX3Zp
ZXdfcnVuX2phdmFzY3JpcHRfcHJvbXB0KToKKyAgICAgICAgKGV3a192aWV3X3Nob3VsZF9pbnRl
cnJ1cHRfamF2YXNjcmlwdCk6CisgICAgICAgIChld2tfdmlld19leGNlZWRlZF9kYXRhYmFzZV9x
dW90YSk6CisgICAgICAgIChld2tfdmlld19ydW5fb3Blbl9wYW5lbCk6CisgICAgICAgIChld2tf
dmlld19yZXBhaW50KToKKyAgICAgICAgKGV3a192aWV3X3Njcm9sbCk6CisgICAgICAgIChld2tf
dmlld19jb3JlX3BhZ2VfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X2ZyYW1lX2NyZWF0ZSk6Cisg
ICAgICAgIChld2tfdmlld19wbHVnaW5fY3JlYXRlKToKKyAgICAgICAgKGV3a192aWV3X3BvcHVw
X25ldyk6CisgICAgICAgIChld2tfdmlld19wb3B1cF9kZXN0cm95KToKKyAgICAgICAgKGV3a192
aWV3X3BvcHVwX3NlbGVjdGVkX3NldCk6CisgICAgICAgIChld2tfdmlld19kb3dubG9hZF9yZXF1
ZXN0KToKKyAgICAgICAgKGV3a192aWV3X3ZpZXdwb3J0X2F0dHJpYnV0ZXNfc2V0KToKKyAgICAg
ICAgKGV3a192aWV3X3ZpZXdwb3J0X2F0dHJpYnV0ZXNfZ2V0KToKKyAgICAgICAgKGV3a192aWV3
X3pvb21fcmFuZ2Vfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3pvb21fcmFuZ2VfbWluX2dldCk6
CisgICAgICAgIChld2tfdmlld196b29tX3JhbmdlX21heF9nZXQpOgorICAgICAgICAoZXdrX3Zp
ZXdfdXNlcl9zY2FsYWJsZV9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfdXNlcl9zY2FsYWJsZV9n
ZXQpOgorICAgICAgICAoZXdrX3ZpZXdfZGV2aWNlX3BpeGVsX3JhdGlvX2dldCk6CisgICAgICAg
IChld2tfdmlld19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbik6CisgICAgICAgIChld2tfdmll
d19uZWVkX3RvdWNoX2V2ZW50c19zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfbmVlZF90b3VjaF9l
dmVudHNfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X21vZGVfc2V0KToKKyAgICAgICAgKGV3a192
aWV3X21vZGVfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X2VkaXRvcl9jbGllbnRfc2VsZWN0aW9u
X2NoYW5nZWQpOgorICAgICAgICAqIGV3ay9ld2tfdmlldy5oOgorCiAyMDExLTA3LTE5ICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF0gQWRk
IGV3a19uZXR3b3JrLmNwcHxoIGZpbGVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKaW5k
ZXggMzhlNmM2MS4uNjFhNzA4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a192aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCkBAIC03
NCwyMiArNzQsMjIgQEAgc3RhdGljIGNvbnN0IHNpemVfdCBFV0tfVklFV19TQ1JPTExTX1NJWkVf
U1RFUCA9IDI7CiBzdGF0aWMgY29uc3Qgc2l6ZV90IEVXS19WSUVXX1NDUk9MTFNfU0laRV9NQVhf
RlJFRSA9IDMyOwogCiBzdHJ1Y3QgX0V3a19WaWV3X1ByaXZhdGVfRGF0YSB7Ci0gICAgV2ViQ29y
ZTo6UGFnZSogcGFnZTsKLSAgICBXZWJDb3JlOjpTZXR0aW5ncyogcGFnZV9zZXR0aW5nczsKLSAg
ICBXZWJDb3JlOjpGcmFtZSogbWFpbl9mcmFtZTsKKyAgICBXZWJDb3JlOjpQYWdlICpwYWdlOwor
ICAgIFdlYkNvcmU6OlNldHRpbmdzICpwYWdlX3NldHRpbmdzOworICAgIFdlYkNvcmU6OkZyYW1l
ICptYWluX2ZyYW1lOwogICAgIFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzIHZpZXdwb3J0X2Fy
Z3VtZW50czsKLSAgICBFd2tfSGlzdG9yeSogaGlzdG9yeTsKKyAgICBFd2tfSGlzdG9yeSAqaGlz
dG9yeTsKICAgICBzdHJ1Y3QgewogICAgICAgICBFd2tfTWVudSBtZW51OwotICAgICAgICBXZWJD
b3JlOjpQb3B1cE1lbnVDbGllbnQqIG1lbnVfY2xpZW50OworICAgICAgICBXZWJDb3JlOjpQb3B1
cE1lbnVDbGllbnQgKm1lbnVfY2xpZW50OwogICAgIH0gcG9wdXA7CiAgICAgc3RydWN0IHsKLSAg
ICAgICAgRWluYV9SZWN0YW5nbGUqIGFycmF5OworICAgICAgICBFaW5hX1JlY3RhbmdsZSAqYXJy
YXk7CiAgICAgICAgIHNpemVfdCBjb3VudDsKICAgICAgICAgc2l6ZV90IGFsbG9jYXRlZDsKICAg
ICB9IHJlcGFpbnRzOwogICAgIHN0cnVjdCB7Ci0gICAgICAgIEV3a19TY3JvbGxfUmVxdWVzdCog
YXJyYXk7CisgICAgICAgIEV3a19TY3JvbGxfUmVxdWVzdCAqYXJyYXk7CiAgICAgICAgIHNpemVf
dCBjb3VudDsKICAgICAgICAgc2l6ZV90IGFsbG9jYXRlZDsKICAgICB9IHNjcm9sbHM7CkBAIC05
OSwyMiArOTksMjIgQEAgc3RydWN0IF9Fd2tfVmlld19Qcml2YXRlX0RhdGEgewogICAgICAgICBF
aW5hX0Jvb2wgbmVlZF90b3VjaF9ldmVudHM6MTsKICAgICB9IGZsYWdzOwogICAgIHN0cnVjdCB7
Ci0gICAgICAgIGNvbnN0IGNoYXIqIHVzZXJfYWdlbnQ7Ci0gICAgICAgIGNvbnN0IGNoYXIqIHVz
ZXJfc3R5bGVzaGVldDsKLSAgICAgICAgY29uc3QgY2hhciogZW5jb2RpbmdfZGVmYXVsdDsKLSAg
ICAgICAgY29uc3QgY2hhciogZW5jb2RpbmdfY3VzdG9tOwotICAgICAgICBjb25zdCBjaGFyKiB0
aGVtZTsKLSAgICAgICAgY29uc3QgY2hhciogbG9jYWxfc3RvcmFnZV9kYXRhYmFzZV9wYXRoOwor
ICAgICAgICBjb25zdCBjaGFyICp1c2VyX2FnZW50OworICAgICAgICBjb25zdCBjaGFyICp1c2Vy
X3N0eWxlc2hlZXQ7CisgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nX2RlZmF1bHQ7CisgICAg
ICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nX2N1c3RvbTsKKyAgICAgICAgY29uc3QgY2hhciAqdGhl
bWU7CisgICAgICAgIGNvbnN0IGNoYXIgKmxvY2FsX3N0b3JhZ2VfZGF0YWJhc2VfcGF0aDsKICAg
ICAgICAgaW50IGZvbnRfbWluaW11bV9zaXplOwogICAgICAgICBpbnQgZm9udF9taW5pbXVtX2xv
Z2ljYWxfc2l6ZTsKICAgICAgICAgaW50IGZvbnRfZGVmYXVsdF9zaXplOwogICAgICAgICBpbnQg
Zm9udF9tb25vc3BhY2Vfc2l6ZTsKLSAgICAgICAgY29uc3QgY2hhciogZm9udF9zdGFuZGFyZDsK
LSAgICAgICAgY29uc3QgY2hhciogZm9udF9jdXJzaXZlOwotICAgICAgICBjb25zdCBjaGFyKiBm
b250X21vbm9zcGFjZTsKLSAgICAgICAgY29uc3QgY2hhciogZm9udF9mYW50YXN5OwotICAgICAg
ICBjb25zdCBjaGFyKiBmb250X3NlcmlmOwotICAgICAgICBjb25zdCBjaGFyKiBmb250X3NhbnNf
c2VyaWY7CisgICAgICAgIGNvbnN0IGNoYXIgKmZvbnRfc3RhbmRhcmQ7CisgICAgICAgIGNvbnN0
IGNoYXIgKmZvbnRfY3Vyc2l2ZTsKKyAgICAgICAgY29uc3QgY2hhciAqZm9udF9tb25vc3BhY2U7
CisgICAgICAgIGNvbnN0IGNoYXIgKmZvbnRfZmFudGFzeTsKKyAgICAgICAgY29uc3QgY2hhciAq
Zm9udF9zZXJpZjsKKyAgICAgICAgY29uc3QgY2hhciAqZm9udF9zYW5zX3NlcmlmOwogICAgICAg
ICBFaW5hX0Jvb2wgYXV0b19sb2FkX2ltYWdlczoxOwogICAgICAgICBFaW5hX0Jvb2wgYXV0b19z
aHJpbmtfaW1hZ2VzOjE7CiAgICAgICAgIEVpbmFfQm9vbCBlbmFibGVfYXV0b19yZXNpemVfd2lu
ZG93OjE7CkBAIC0xNTIsNyArMTUyLDcgQEAgc3RydWN0IF9Fd2tfVmlld19Qcml2YXRlX0RhdGEg
ewogICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgRXZhc19Db29yZCB4LCB5OwogICAgICAg
ICB9IGNlbnRlcjsKLSAgICAgICAgRWNvcmVfQW5pbWF0b3IqIGFuaW1hdG9yOworICAgICAgICBF
Y29yZV9BbmltYXRvciAqYW5pbWF0b3I7CiAgICAgfSBhbmltYXRlZF96b29tOwogfTsKIApAQCAt
MTYxLDE1ICsxNjEsMTUgQEAgc3RydWN0IF9Fd2tfVmlld19Qcml2YXRlX0RhdGEgewogI2Vsc2UK
ICNkZWZpbmUgRVdLX1ZJRVdfVFlQRV9DSEVDSyhvLCAuLi4pICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgY29uc3QgY2hhciog
X3RtcF9vdHlwZSA9IGV2YXNfb2JqZWN0X3R5cGVfZ2V0KG8pOyAgICAgICAgICAgICAgIFwKLSAg
ICAgICAgY29uc3QgRXZhc19TbWFydCogX3RtcF9zID0gZXZhc19vYmplY3Rfc21hcnRfc21hcnRf
Z2V0KG8pOyAgICAgIFwKKyAgICAgICAgY29uc3QgY2hhciAqX3RtcF9vdHlwZSA9IGV2YXNfb2Jq
ZWN0X3R5cGVfZ2V0KG8pOyAgICAgICAgICAgICAgIFwKKyAgICAgICAgY29uc3QgRXZhc19TbWFy
dCAqX3RtcF9zID0gZXZhc19vYmplY3Rfc21hcnRfc21hcnRfZ2V0KG8pOyAgICAgIFwKICAgICAg
ICAgaWYgKEVJTkFfVU5MSUtFTFkoIV90bXBfcykpIHsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKICAgICAgICAgICAgIEVJTkFfTE9HX0NSSVQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAoIiVwICglcykg
aXMgbm90IGEgc21hcnQgb2JqZWN0ISIsIG8sICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAg
ICAgICAgICAgX3RtcF9vdHlwZSA/IF90bXBfb3R5cGUgOiAiKG51bGwpIik7ICAgICAgICAgICAg
ICAgICAgIFwKICAgICAgICAgICAgIHJldHVybiBfX1ZBX0FSR1NfXzsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgY29u
c3QgRXZhc19TbWFydF9DbGFzcyogX3RtcF9zYyA9IGV2YXNfc21hcnRfY2xhc3NfZ2V0KF90bXBf
cyk7IFwKKyAgICAgICAgY29uc3QgRXZhc19TbWFydF9DbGFzcyAqX3RtcF9zYyA9IGV2YXNfc21h
cnRfY2xhc3NfZ2V0KF90bXBfcyk7IFwKICAgICAgICAgaWYgKEVJTkFfVU5MSUtFTFkoIV90bXBf
c2MpKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgIEVJ
TkFfTE9HX0NSSVQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKICAgICAgICAgICAgICAgICAoIiVwICglcykgaXMgbm90IGEgc21hcnQgb2JqZWN0ISIsIG8s
ICAgICAgICAgICAgICAgICAgIFwKQEAgLTE4Nyw3ICsxODcsNyBAQCBzdHJ1Y3QgX0V3a19WaWV3
X1ByaXZhdGVfRGF0YSB7CiAjZW5kaWYKIAogI2RlZmluZSBFV0tfVklFV19TRF9HRVQobywgcHRy
KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBFd2tfVmlld19TbWFydF9E
YXRhKiBwdHIgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZXZhc19vYmplY3Rfc21hcnRfZGF0YV9n
ZXQobykKKyAgICBFd2tfVmlld19TbWFydF9EYXRhICpwdHIgPSAoRXdrX1ZpZXdfU21hcnRfRGF0
YSAqKWV2YXNfb2JqZWN0X3NtYXJ0X2RhdGFfZ2V0KG8pCiAKICNkZWZpbmUgRVdLX1ZJRVdfU0Rf
R0VUX09SX1JFVFVSTihvLCBwdHIsIC4uLikgICAgICAgICAgXAogICAgIEVXS19WSUVXX1RZUEVf
Q0hFQ0sobywgX19WQV9BUkdTX18pOyAgICAgICAgICAgICAgICBcCkBAIC0xOTksNyArMTk5LDcg
QEAgc3RydWN0IF9Fd2tfVmlld19Qcml2YXRlX0RhdGEgewogICAgIH0KIAogI2RlZmluZSBFV0tf
VklFV19QUklWX0dFVChzZCwgcHRyKSAgICAgICAgICAgICAgXAotICAgIEV3a19WaWV3X1ByaXZh
dGVfRGF0YSogcHRyID0gc2QtPl9wcml2CisgICAgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpwdHIg
PSBzZC0+X3ByaXYKIAogI2RlZmluZSBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHB0
ciwgLi4uKSAgICAgICAgICAgICAgIFwKICAgICBFV0tfVklFV19QUklWX0dFVChzZCwgcHRyKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0yMDksNyArMjA5LDcgQEAgc3Ry
dWN0IF9Fd2tfVmlld19Qcml2YXRlX0RhdGEgewogICAgICAgICByZXR1cm4gX19WQV9BUkdTX187
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9CiAKLXN0YXRpYyB2
b2lkIF9ld2tfdmlld19zbWFydF9jaGFuZ2VkKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkKQorc3Rh
dGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2NoYW5nZWQoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2Qp
CiB7CiAgICAgaWYgKHNkLT5jaGFuZ2VkLmFueSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjE3LDIx
ICsyMTcsMjEgQEAgc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2NoYW5nZWQoRXdrX1ZpZXdf
U21hcnRfRGF0YSogc2QpCiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2hhbmdlZChzZC0+c2VsZik7
CiB9CiAKLXN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3JlcGFpbnRzX3Jlc2l6ZShFd2tfVmll
d19Qcml2YXRlX0RhdGEqIHByaXYsIHNpemVfdCBzaXplKQorc3RhdGljIEVpbmFfQm9vbCBfZXdr
X3ZpZXdfcmVwYWludHNfcmVzaXplKEV3a19WaWV3X1ByaXZhdGVfRGF0YSAqcHJpdiwgc2l6ZV90
IHNpemUpCiB7Ci0gICAgdm9pZCogdG1wID0gcmVhbGxvYyhwcml2LT5yZXBhaW50cy5hcnJheSwg
c2l6ZSAqIHNpemVvZihFaW5hX1JlY3RhbmdsZSkpOworICAgIHZvaWQgKnRtcCA9IHJlYWxsb2Mo
cHJpdi0+cmVwYWludHMuYXJyYXksIHNpemUgKiBzaXplb2YoRWluYV9SZWN0YW5nbGUpKTsKICAg
ICBpZiAoIXRtcCkgewogICAgICAgICBDUklUSUNBTCgiY291bGQgbm90IHJlYWxsb2MgcmVwYWlu
dHMgYXJyYXkgdG8gJXp1IGVsZW1lbnRzLiIsIHNpemUpOwogICAgICAgICByZXR1cm4gRUlOQV9G
QUxTRTsKICAgICB9CiAgICAgcHJpdi0+cmVwYWludHMuYWxsb2NhdGVkID0gc2l6ZTsKLSAgICBw
cml2LT5yZXBhaW50cy5hcnJheSA9IChFaW5hX1JlY3RhbmdsZSopdG1wOworICAgIHByaXYtPnJl
cGFpbnRzLmFycmF5ID0gKEVpbmFfUmVjdGFuZ2xlICopdG1wOwogICAgIHJldHVybiBFSU5BX1RS
VUU7CiB9CiAKLXN0YXRpYyB2b2lkIF9ld2tfdmlld19yZXBhaW50X2FkZChFd2tfVmlld19Qcml2
YXRlX0RhdGEqIHByaXYsIEV2YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5LCBFdmFzX0Nvb3JkIHcs
IEV2YXNfQ29vcmQgaCkKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19yZXBhaW50X2FkZChFd2tfVmll
d19Qcml2YXRlX0RhdGEgKnByaXYsIEV2YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5LCBFdmFzX0Nv
b3JkIHcsIEV2YXNfQ29vcmQgaCkKIHsKLSAgICBFaW5hX1JlY3RhbmdsZSogcjsKKyAgICBFaW5h
X1JlY3RhbmdsZSAqcjsKIAogICAgIC8vIGZwcmludGYoc3RkZXJyLCAiPj4+IHJlcGFpbnQgcmVx
dWVzdGVkOiAlZCwlZCslZHglZFxuIiwgeCwgeSwgdywgaCk7CiAgICAgaWYgKHByaXYtPnJlcGFp
bnRzLmFsbG9jYXRlZCA9PSBwcml2LT5yZXBhaW50cy5jb3VudCkgewpAQCAtMjUyLDEwICsyNTIs
MTAgQEAgc3RhdGljIHZvaWQgX2V3a192aWV3X3JlcGFpbnRfYWRkKEV3a19WaWV3X1ByaXZhdGVf
RGF0YSogcHJpdiwgRXZhc19Db29yZCB4LCBFdmEKICAgICByLT53ID0gdzsKICAgICByLT5oID0g
aDsKIAotICAgIERCRygiYWRkIHJlcGFpbnQgJWQsJWQrJWR4JWQiLCB4LCB5LCB3LCBoKTsKKyAg
ICBEQkcoImFkZCByZXBhaW50ICVkLCAlZCslZHglZCIsIHgsIHksIHcsIGgpOwogfQogCi1zdGF0
aWMgdm9pZCBfZXdrX3ZpZXdfcmVwYWludHNfZmx1c2goRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBw
cml2KQorc3RhdGljIHZvaWQgX2V3a192aWV3X3JlcGFpbnRzX2ZsdXNoKEV3a19WaWV3X1ByaXZh
dGVfRGF0YSAqcHJpdikKIHsKICAgICBwcml2LT5yZXBhaW50cy5jb3VudCA9IDA7CiAgICAgaWYg
KHByaXYtPnJlcGFpbnRzLmFsbG9jYXRlZCA8PSBFV0tfVklFV19SRVBBSU5UU19TSVpFX01BWF9G
UkVFKQpAQCAtMjYzLDIyICsyNjMsMjIgQEAgc3RhdGljIHZvaWQgX2V3a192aWV3X3JlcGFpbnRz
X2ZsdXNoKEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdikKICAgICBfZXdrX3ZpZXdfcmVwYWlu
dHNfcmVzaXplKHByaXYsIEVXS19WSUVXX1JFUEFJTlRTX1NJWkVfTUFYX0ZSRUUpOwogfQogCi1z
dGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zY3JvbGxzX3Jlc2l6ZShFd2tfVmlld19Qcml2YXRl
X0RhdGEqIHByaXYsIHNpemVfdCBzaXplKQorc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc2Ny
b2xsc19yZXNpemUoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpwcml2LCBzaXplX3Qgc2l6ZSkKIHsK
LSAgICB2b2lkKiB0bXAgPSByZWFsbG9jKHByaXYtPnNjcm9sbHMuYXJyYXksIHNpemUgKiBzaXpl
b2YoRXdrX1Njcm9sbF9SZXF1ZXN0KSk7CisgICAgdm9pZCAqdG1wID0gcmVhbGxvYyhwcml2LT5z
Y3JvbGxzLmFycmF5LCBzaXplICogc2l6ZW9mKEV3a19TY3JvbGxfUmVxdWVzdCkpOwogICAgIGlm
ICghdG1wKSB7CiAgICAgICAgIENSSVRJQ0FMKCJjb3VsZCBub3QgcmVhbGxvYyBzY3JvbGxzIGFy
cmF5IHRvICV6dSBlbGVtZW50cy4iLCBzaXplKTsKICAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7
CiAgICAgfQogICAgIHByaXYtPnNjcm9sbHMuYWxsb2NhdGVkID0gc2l6ZTsKLSAgICBwcml2LT5z
Y3JvbGxzLmFycmF5ID0gKEV3a19TY3JvbGxfUmVxdWVzdCopdG1wOworICAgIHByaXYtPnNjcm9s
bHMuYXJyYXkgPSAoRXdrX1Njcm9sbF9SZXF1ZXN0ICopdG1wOwogICAgIHJldHVybiBFSU5BX1RS
VUU7CiB9CiAKLXN0YXRpYyB2b2lkIF9ld2tfdmlld19zY3JvbGxfYWRkKEV3a19WaWV3X1ByaXZh
dGVfRGF0YSogcHJpdiwgRXZhc19Db29yZCBkeCwgRXZhc19Db29yZCBkeSwgRXZhc19Db29yZCB4
LCBFdmFzX0Nvb3JkIHksIEV2YXNfQ29vcmQgdywgRXZhc19Db29yZCBoLCBFaW5hX0Jvb2wgbWFp
bl9zY3JvbGwpCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc2Nyb2xsX2FkZChFd2tfVmlld19Qcml2
YXRlX0RhdGEgKnByaXYsIEV2YXNfQ29vcmQgZHgsIEV2YXNfQ29vcmQgZHksIEV2YXNfQ29vcmQg
eCwgRXZhc19Db29yZCB5LCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29vcmQgaCwgRWluYV9Cb29sIG1h
aW5fc2Nyb2xsKQogewotICAgIEV3a19TY3JvbGxfUmVxdWVzdCogcjsKLSAgICBFd2tfU2Nyb2xs
X1JlcXVlc3QqIHJfZW5kOworICAgIEV3a19TY3JvbGxfUmVxdWVzdCAqcjsKKyAgICBFd2tfU2Ny
b2xsX1JlcXVlc3QgKnJfZW5kOwogICAgIEV2YXNfQ29vcmQgeDIgPSB4ICsgdywgeTIgPSB5ICsg
aDsKIAogICAgIHIgPSBwcml2LT5zY3JvbGxzLmFycmF5OwpAQCAtMzIzLDEwICszMjMsMTAgQEAg
c3RhdGljIHZvaWQgX2V3a192aWV3X3Njcm9sbF9hZGQoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBw
cml2LCBFdmFzX0Nvb3JkIGR4LCBFdmEKICAgICByLT5keCA9IGR4OwogICAgIHItPmR5ID0gZHk7
CiAgICAgci0+bWFpbl9zY3JvbGwgPSBtYWluX3Njcm9sbDsKLSAgICBEQkcoImFkZCBzY3JvbGwg
aW4gcmVnaW9uOiAlZCwlZCslZHglZCAlKzAzZCwlKzAzZCIsIHgsIHksIHcsIGgsIGR4LCBkeSk7
CisgICAgREJHKCJhZGQgc2Nyb2xsIGluIHJlZ2lvbjogJWQsICVkKyVkeCVkICUrMDNkLCAlKzAz
ZCIsIHgsIHksIHcsIGgsIGR4LCBkeSk7CiAKLSAgICBFaW5hX1JlY3RhbmdsZSogcHI7Ci0gICAg
RWluYV9SZWN0YW5nbGUqIHByX2VuZDsKKyAgICBFaW5hX1JlY3RhbmdsZSAqcHI7CisgICAgRWlu
YV9SZWN0YW5nbGUgKnByX2VuZDsKICAgICBzaXplX3QgY291bnQ7CiAgICAgcHIgPSBwcml2LT5y
ZXBhaW50cy5hcnJheTsKICAgICBjb3VudCA9IHByaXYtPnJlcGFpbnRzLmNvdW50OwpAQCAtMzM3
LDcgKzMzNyw3IEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19zY3JvbGxfYWRkKEV3a19WaWV3X1By
aXZhdGVfRGF0YSogcHJpdiwgRXZhc19Db29yZCBkeCwgRXZhCiAgICAgfQogfQogCi1zdGF0aWMg
dm9pZCBfZXdrX3ZpZXdfc2Nyb2xsc19mbHVzaChFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYp
CitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc2Nyb2xsc19mbHVzaChFd2tfVmlld19Qcml2YXRlX0Rh
dGEgKnByaXYpCiB7CiAgICAgcHJpdi0+c2Nyb2xscy5jb3VudCA9IDA7CiAgICAgaWYgKHByaXYt
PnNjcm9sbHMuYWxsb2NhdGVkIDw9IEVXS19WSUVXX1NDUk9MTFNfU0laRV9NQVhfRlJFRSkKQEAg
LTM0NiwxMCArMzQ2LDEwIEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19zY3JvbGxzX2ZsdXNoKEV3
a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdikKIH0KIAogLy8gRGVmYXVsdCBFdmVudCBIYW5kbGlu
ZyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi1zdGF0aWMg
RWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9mb2N1c19pbihFd2tfVmlld19TbWFydF9EYXRhKiBz
ZCkKK3N0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X2ZvY3VzX2luKEV3a19WaWV3X1Nt
YXJ0X0RhdGEgKnNkKQogewogICAgIEVXS19WSUVXX1BSSVZfR0VUKHNkLCBwcml2KTsKLSAgICBX
ZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXIqIGZjID0gcHJpdi0+cGFnZS0+Zm9jdXNDb250cm9sbGVy
KCk7CisgICAgV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyICpmYyA9IHByaXYtPnBhZ2UtPmZvY3Vz
Q29udHJvbGxlcigpOwogICAgIERCRygibz0lcCwgZmM9JXAiLCBzZC0+c2VsZiwgZmMpOwogICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChmYywgRUlOQV9GQUxTRSk7CiAKQEAgLTM1
OCwxMCArMzU4LDEwIEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X2ZvY3VzX2lu
KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkKQogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLXN0
YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X2ZvY3VzX291dChFd2tfVmlld19TbWFydF9E
YXRhKiBzZCkKK3N0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X2ZvY3VzX291dChFd2tf
Vmlld19TbWFydF9EYXRhICpzZCkKIHsKICAgICBFV0tfVklFV19QUklWX0dFVChzZCwgcHJpdik7
Ci0gICAgV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyKiBmYyA9IHByaXYtPnBhZ2UtPmZvY3VzQ29u
dHJvbGxlcigpOworICAgIFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlciAqZmMgPSBwcml2LT5wYWdl
LT5mb2N1c0NvbnRyb2xsZXIoKTsKICAgICBEQkcoIm89JXAsIGZjPSVwIiwgc2QtPnNlbGYsIGZj
KTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoZmMsIEVJTkFfRkFMU0UpOwog
CkBAIC0zNzAsMjkgKzM3MCwyOSBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9m
b2N1c19vdXQoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QpCiAgICAgcmV0dXJuIEVJTkFfVFJVRTsK
IH0KIAotc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfbW91c2Vfd2hlZWwoRXdrX1Zp
ZXdfU21hcnRfRGF0YSogc2QsIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfV2hlZWwqIGV2KQorc3Rh
dGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfbW91c2Vfd2hlZWwoRXdrX1ZpZXdfU21hcnRf
RGF0YSAqc2QsIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfV2hlZWwgKmV2KQogewogICAgIHJldHVy
biBld2tfZnJhbWVfZmVlZF9tb3VzZV93aGVlbChzZC0+bWFpbl9mcmFtZSwgZXYpOwogfQogCi1z
dGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9tb3VzZV9kb3duKEV3a19WaWV3X1NtYXJ0
X0RhdGEqIHNkLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX0Rvd24qIGV2KQorc3RhdGljIEVpbmFf
Qm9vbCBfZXdrX3ZpZXdfc21hcnRfbW91c2VfZG93bihFd2tfVmlld19TbWFydF9EYXRhICpzZCwg
Y29uc3QgRXZhc19FdmVudF9Nb3VzZV9Eb3duICpldikKIHsKICAgICByZXR1cm4gZXdrX2ZyYW1l
X2ZlZWRfbW91c2VfZG93bihzZC0+bWFpbl9mcmFtZSwgZXYpOwogfQogCi1zdGF0aWMgRWluYV9C
b29sIF9ld2tfdmlld19zbWFydF9tb3VzZV91cChFd2tfVmlld19TbWFydF9EYXRhKiBzZCwgY29u
c3QgRXZhc19FdmVudF9Nb3VzZV9VcCogZXYpCitzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19z
bWFydF9tb3VzZV91cChFd2tfVmlld19TbWFydF9EYXRhICpzZCwgY29uc3QgRXZhc19FdmVudF9N
b3VzZV9VcCAqZXYpCiB7CiAgICAgcmV0dXJuIGV3a19mcmFtZV9mZWVkX21vdXNlX3VwKHNkLT5t
YWluX2ZyYW1lLCBldik7CiB9CiAKLXN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X21v
dXNlX21vdmUoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QsIGNvbnN0IEV2YXNfRXZlbnRfTW91c2Vf
TW92ZSogZXYpCitzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9tb3VzZV9tb3ZlKEV3
a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX01vdmUgKmV2KQog
ewogICAgIHJldHVybiBld2tfZnJhbWVfZmVlZF9tb3VzZV9tb3ZlKHNkLT5tYWluX2ZyYW1lLCBl
dik7CiB9CiAKLXN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X2tleV9kb3duKEV3a19W
aWV3X1NtYXJ0X0RhdGEqIHNkLCBjb25zdCBFdmFzX0V2ZW50X0tleV9Eb3duKiBldikKK3N0YXRp
YyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X2tleV9kb3duKEV3a19WaWV3X1NtYXJ0X0RhdGEg
KnNkLCBjb25zdCBFdmFzX0V2ZW50X0tleV9Eb3duICpldikKIHsKLSAgICBFdmFzX09iamVjdCog
ZnJhbWUgPSBld2tfdmlld19mcmFtZV9mb2N1c2VkX2dldChzZC0+c2VsZik7CisgICAgRXZhc19P
YmplY3QgKmZyYW1lID0gZXdrX3ZpZXdfZnJhbWVfZm9jdXNlZF9nZXQoc2QtPnNlbGYpOwogCiAg
ICAgaWYgKCFmcmFtZSkKICAgICAgICAgZnJhbWUgPSBzZC0+bWFpbl9mcmFtZTsKQEAgLTQwMCw5
ICs0MDAsOSBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9rZXlfZG93bihFd2tf
Vmlld19TbWFydF9EYXRhKiBzZCwgY29uc3QgRXZhc19FdgogICAgIHJldHVybiBld2tfZnJhbWVf
ZmVlZF9rZXlfZG93bihmcmFtZSwgZXYpOwogfQogCi1zdGF0aWMgRWluYV9Cb29sIF9ld2tfdmll
d19zbWFydF9rZXlfdXAoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QsIGNvbnN0IEV2YXNfRXZlbnRf
S2V5X1VwKiBldikKK3N0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X2tleV91cChFd2tf
Vmlld19TbWFydF9EYXRhICpzZCwgY29uc3QgRXZhc19FdmVudF9LZXlfVXAgKmV2KQogewotICAg
IEV2YXNfT2JqZWN0KiBmcmFtZSA9IGV3a192aWV3X2ZyYW1lX2ZvY3VzZWRfZ2V0KHNkLT5zZWxm
KTsKKyAgICBFdmFzX09iamVjdCAqZnJhbWUgPSBld2tfdmlld19mcmFtZV9mb2N1c2VkX2dldChz
ZC0+c2VsZik7CiAKICAgICBpZiAoIWZyYW1lKQogICAgICAgICBmcmFtZSA9IHNkLT5tYWluX2Zy
YW1lOwpAQCAtNDEwLDMxICs0MTAsMzEgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21h
cnRfa2V5X3VwKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkLCBjb25zdCBFdmFzX0V2ZW4KICAgICBy
ZXR1cm4gZXdrX2ZyYW1lX2ZlZWRfa2V5X3VwKGZyYW1lLCBldik7CiB9CiAKLXN0YXRpYyB2b2lk
IF9ld2tfdmlld19zbWFydF9hZGRfY29uc29sZV9tZXNzYWdlKEV3a19WaWV3X1NtYXJ0X0RhdGEq
IHNkLCBjb25zdCBjaGFyKiBtZXNzYWdlLCB1bnNpZ25lZCBpbnQgbGluZU51bWJlciwgY29uc3Qg
Y2hhciogc291cmNlSUQpCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfYWRkX2NvbnNvbGVf
bWVzc2FnZShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgY29uc3QgY2hhciAqbWVzc2FnZSwgdW5z
aWduZWQgaW50IGxpbmVOdW1iZXIsIGNvbnN0IGNoYXIgKnNvdXJjZUlEKQogewogICAgIElORigi
Y29uc29sZSBtZXNzYWdlOiAlcyBAJWQ6ICVzXG4iLCBzb3VyY2VJRCwgbGluZU51bWJlciwgbWVz
c2FnZSk7CiB9CiAKLXN0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9ydW5famF2YXNjcmlwdF9h
bGVydChFd2tfVmlld19TbWFydF9EYXRhKiBzZCwgRXZhc19PYmplY3QqIGZyYW1lLCBjb25zdCBj
aGFyKiBtZXNzYWdlKQorc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X3J1bl9qYXZhc2NyaXB0
X2FsZXJ0KEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBFdmFzX09iamVjdCAqZnJhbWUsIGNvbnN0
IGNoYXIgKm1lc3NhZ2UpCiB7CiAgICAgSU5GKCJqYXZhc2NyaXB0IGFsZXJ0OiAlc1xuIiwgbWVz
c2FnZSk7CiB9CiAKLXN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X3J1bl9qYXZhc2Ny
aXB0X2NvbmZpcm0oRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QsIEV2YXNfT2JqZWN0KiBmcmFtZSwg
Y29uc3QgY2hhciogbWVzc2FnZSkKK3N0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X3J1
bl9qYXZhc2NyaXB0X2NvbmZpcm0oRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIEV2YXNfT2JqZWN0
ICpmcmFtZSwgY29uc3QgY2hhciAqbWVzc2FnZSkKIHsKICAgICBJTkYoImphdmFzY3JpcHQgY29u
ZmlybTogJXMiLCBtZXNzYWdlKTsKICAgICBJTkYoImphdmFzY3JpcHQgY29uZmlybSAoSEFSRCBD
T0RFRCk/IFlFUyIpOwogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLXN0YXRpYyBFaW5hX0Jv
b2wgX2V3a192aWV3X3NtYXJ0X3Nob3VsZF9pbnRlcnJ1cHRfamF2YXNjcmlwdChFd2tfVmlld19T
bWFydF9EYXRhKiBzZCkKK3N0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X3Nob3VsZF9p
bnRlcnJ1cHRfamF2YXNjcmlwdChFd2tfVmlld19TbWFydF9EYXRhICpzZCkKIHsKICAgICBJTkYo
InNob3VsZCBpbnRlcnJ1cHQgamF2YXNjcmlwdD9cbiIKICAgICAgICAgICAgICJcdChIQVJEIENP
REVEKSBOTyIpOwogICAgIHJldHVybiBFSU5BX0ZBTFNFOwogfQogCi1zdGF0aWMgRWluYV9Cb29s
IF9ld2tfdmlld19zbWFydF9ydW5famF2YXNjcmlwdF9wcm9tcHQoRXdrX1ZpZXdfU21hcnRfRGF0
YSogc2QsIEV2YXNfT2JqZWN0KiBmcmFtZSwgY29uc3QgY2hhciogbWVzc2FnZSwgY29uc3QgY2hh
ciogZGVmYXVsdFZhbHVlLCBjaGFyKiogdmFsdWUpCitzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmll
d19zbWFydF9ydW5famF2YXNjcmlwdF9wcm9tcHQoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIEV2
YXNfT2JqZWN0ICpmcmFtZSwgY29uc3QgY2hhciAqbWVzc2FnZSwgY29uc3QgY2hhciAqZGVmYXVs
dFZhbHVlLCBjaGFyICoqdmFsdWUpCiB7CiAgICAgKnZhbHVlID0gc3RyZHVwKCJ0ZXN0Iik7CiAg
ICAgRWluYV9Cb29sIHJldCA9IEVJTkFfVFJVRTsKQEAgLTQ0OCw3OSArNDQ4LDc5IEBAIHN0YXRp
YyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X3J1bl9qYXZhc2NyaXB0X3Byb21wdChFd2tfVmll
d19TbWFydF9EYXRhKiBzZCwKIH0KIAogLy8gRXZlbnQgSGFuZGxpbmcgLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi1zdGF0aWMgdm9pZCBfZXdr
X3ZpZXdfb25fZm9jdXNfaW4odm9pZCogZGF0YSwgRXZhcyogZSwgRXZhc19PYmplY3QqIG8sIHZv
aWQqIGV2ZW50X2luZm8pCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fZm9jdXNfaW4odm9pZCAq
ZGF0YSwgRXZhcyAqZSwgRXZhc19PYmplY3QgKm8sIHZvaWQgKmV2ZW50X2luZm8pCiB7Ci0gICAg
RXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKKyAg
ICBFd2tfVmlld19TbWFydF9EYXRhICpzZCA9IChFd2tfVmlld19TbWFydF9EYXRhICopZGF0YTsK
ICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpKTsKICAgICBFSU5BX1NBRkVU
WV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpLT5mb2N1c19pbik7CiAgICAgc2QtPmFwaS0+Zm9jdXNf
aW4oc2QpOwogfQogCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fZm9jdXNfb3V0KHZvaWQqIGRh
dGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVudF9pbmZvKQorc3RhdGljIHZv
aWQgX2V3a192aWV3X29uX2ZvY3VzX291dCh2b2lkICpkYXRhLCBFdmFzICplLCBFdmFzX09iamVj
dCAqbywgdm9pZCAqZXZlbnRfaW5mbykKIHsKLSAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9
IChFd2tfVmlld19TbWFydF9EYXRhKilkYXRhOworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNk
ID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEgKilkYXRhOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExf
UkVUVVJOKHNkLT5hcGkpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGkt
PmZvY3VzX291dCk7CiAgICAgc2QtPmFwaS0+Zm9jdXNfb3V0KHNkKTsKIH0KIAotc3RhdGljIHZv
aWQgX2V3a192aWV3X29uX21vdXNlX3doZWVsKHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNfT2Jq
ZWN0KiBvLCB2b2lkKiBldmVudF9pbmZvKQorc3RhdGljIHZvaWQgX2V3a192aWV3X29uX21vdXNl
X3doZWVsKHZvaWQgKmRhdGEsIEV2YXMgKmUsIEV2YXNfT2JqZWN0ICpvLCB2b2lkICpldmVudF9p
bmZvKQogewotICAgIEV2YXNfRXZlbnRfTW91c2VfV2hlZWwqIGV2ID0gKEV2YXNfRXZlbnRfTW91
c2VfV2hlZWwqKWV2ZW50X2luZm87Ci0gICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSAoRXdr
X1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKKyAgICBFdmFzX0V2ZW50X01vdXNlX1doZWVsICpldiA9
IChFdmFzX0V2ZW50X01vdXNlX1doZWVsICopZXZlbnRfaW5mbzsKKyAgICBFd2tfVmlld19TbWFy
dF9EYXRhICpzZCA9IChFd2tfVmlld19TbWFydF9EYXRhICopZGF0YTsKICAgICBFSU5BX1NBRkVU
WV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
TihzZC0+YXBpLT5tb3VzZV93aGVlbCk7CiAgICAgc2QtPmFwaS0+bW91c2Vfd2hlZWwoc2QsIGV2
KTsKIH0KIAotc3RhdGljIHZvaWQgX2V3a192aWV3X29uX21vdXNlX2Rvd24odm9pZCogZGF0YSwg
RXZhcyogZSwgRXZhc19PYmplY3QqIG8sIHZvaWQqIGV2ZW50X2luZm8pCitzdGF0aWMgdm9pZCBf
ZXdrX3ZpZXdfb25fbW91c2VfZG93bih2b2lkICpkYXRhLCBFdmFzICplLCBFdmFzX09iamVjdCAq
bywgdm9pZCAqZXZlbnRfaW5mbykKIHsKLSAgICBFdmFzX0V2ZW50X01vdXNlX0Rvd24qIGV2ID0g
KEV2YXNfRXZlbnRfTW91c2VfRG93biopZXZlbnRfaW5mbzsKLSAgICBFd2tfVmlld19TbWFydF9E
YXRhKiBzZCA9IChFd2tfVmlld19TbWFydF9EYXRhKilkYXRhOworICAgIEV2YXNfRXZlbnRfTW91
c2VfRG93biAqZXYgPSAoRXZhc19FdmVudF9Nb3VzZV9Eb3duICopZXZlbnRfaW5mbzsKKyAgICBF
d2tfVmlld19TbWFydF9EYXRhICpzZCA9IChFd2tfVmlld19TbWFydF9EYXRhICopZGF0YTsKICAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpKTsKICAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTihzZC0+YXBpLT5tb3VzZV9kb3duKTsKICAgICBzZC0+YXBpLT5tb3VzZV9k
b3duKHNkLCBldik7CiB9CiAKLXN0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9tb3VzZV91cCh2b2lk
KiBkYXRhLCBFdmFzKiBlLCBFdmFzX09iamVjdCogbywgdm9pZCogZXZlbnRfaW5mbykKK3N0YXRp
YyB2b2lkIF9ld2tfdmlld19vbl9tb3VzZV91cCh2b2lkICpkYXRhLCBFdmFzICplLCBFdmFzX09i
amVjdCAqbywgdm9pZCAqZXZlbnRfaW5mbykKIHsKLSAgICBFdmFzX0V2ZW50X01vdXNlX1VwKiBl
diA9IChFdmFzX0V2ZW50X01vdXNlX1VwKilldmVudF9pbmZvOwotICAgIEV3a19WaWV3X1NtYXJ0
X0RhdGEqIHNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWRhdGE7CisgICAgRXZhc19FdmVudF9N
b3VzZV9VcCAqZXYgPSAoRXZhc19FdmVudF9Nb3VzZV9VcCAqKWV2ZW50X2luZm87CisgICAgRXdr
X1ZpZXdfU21hcnRfRGF0YSAqc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSAqKWRhdGE7CiAgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaSk7CiAgICAgRUlOQV9TQUZFVFlfT05f
TlVMTF9SRVRVUk4oc2QtPmFwaS0+bW91c2VfdXApOwogICAgIHNkLT5hcGktPm1vdXNlX3VwKHNk
LCBldik7CiB9CiAKLXN0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9tb3VzZV9tb3ZlKHZvaWQqIGRh
dGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVudF9pbmZvKQorc3RhdGljIHZv
aWQgX2V3a192aWV3X29uX21vdXNlX21vdmUodm9pZCAqZGF0YSwgRXZhcyAqZSwgRXZhc19PYmpl
Y3QgKm8sIHZvaWQgKmV2ZW50X2luZm8pCiB7Ci0gICAgRXZhc19FdmVudF9Nb3VzZV9Nb3ZlKiBl
diA9IChFdmFzX0V2ZW50X01vdXNlX01vdmUqKWV2ZW50X2luZm87Ci0gICAgRXdrX1ZpZXdfU21h
cnRfRGF0YSogc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKKyAgICBFdmFzX0V2ZW50
X01vdXNlX01vdmUgKmV2ID0gKEV2YXNfRXZlbnRfTW91c2VfTW92ZSAqKWV2ZW50X2luZm87Cisg
ICAgRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSAqKWRhdGE7
CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaSk7CiAgICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaS0+bW91c2VfbW92ZSk7CiAgICAgc2QtPmFwaS0+bW91
c2VfbW92ZShzZCwgZXYpOwogfQogCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fa2V5X2Rvd24o
dm9pZCogZGF0YSwgRXZhcyogZSwgRXZhc19PYmplY3QqIG8sIHZvaWQqIGV2ZW50X2luZm8pCitz
dGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fa2V5X2Rvd24odm9pZCAqZGF0YSwgRXZhcyAqZSwgRXZh
c19PYmplY3QgKm8sIHZvaWQgKmV2ZW50X2luZm8pCiB7Ci0gICAgRXZhc19FdmVudF9LZXlfRG93
biogZXYgPSAoRXZhc19FdmVudF9LZXlfRG93biopZXZlbnRfaW5mbzsKLSAgICBFd2tfVmlld19T
bWFydF9EYXRhKiBzZCA9IChFd2tfVmlld19TbWFydF9EYXRhKilkYXRhOworICAgIEV2YXNfRXZl
bnRfS2V5X0Rvd24gKmV2ID0gKEV2YXNfRXZlbnRfS2V5X0Rvd24gKilldmVudF9pbmZvOworICAg
IEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEgKilkYXRhOwog
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGkpOwogICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOKHNkLT5hcGktPmtleV9kb3duKTsKICAgICBzZC0+YXBpLT5rZXlfZG93
bihzZCwgZXYpOwogfQogCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fa2V5X3VwKHZvaWQqIGRh
dGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVudF9pbmZvKQorc3RhdGljIHZv
aWQgX2V3a192aWV3X29uX2tleV91cCh2b2lkICpkYXRhLCBFdmFzICplLCBFdmFzX09iamVjdCAq
bywgdm9pZCAqZXZlbnRfaW5mbykKIHsKLSAgICBFdmFzX0V2ZW50X0tleV9VcCogZXYgPSAoRXZh
c19FdmVudF9LZXlfVXAqKWV2ZW50X2luZm87Ci0gICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2Qg
PSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKKyAgICBFdmFzX0V2ZW50X0tleV9VcCAqZXYg
PSAoRXZhc19FdmVudF9LZXlfVXAgKilldmVudF9pbmZvOworICAgIEV3a19WaWV3X1NtYXJ0X0Rh
dGEgKnNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEgKilkYXRhOwogICAgIEVJTkFfU0FGRVRZX09O
X05VTExfUkVUVVJOKHNkLT5hcGkpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNk
LT5hcGktPmtleV91cCk7CiAgICAgc2QtPmFwaS0+a2V5X3VwKHNkLCBldik7CiB9CiAKLXN0YXRp
YyBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IF9ld2tfdmlld19jb3JlX2ZyYW1lX25l
dyhFd2tfVmlld19TbWFydF9EYXRhKiBzZCwgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2LCBX
ZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyKQorc3RhdGljIFdURjo6UGFzc1Jl
ZlB0cjxXZWJDb3JlOjpGcmFtZT4gX2V3a192aWV3X2NvcmVfZnJhbWVfbmV3KEV3a19WaWV3X1Nt
YXJ0X0RhdGEgKnNkLCBFd2tfVmlld19Qcml2YXRlX0RhdGEgKnByaXYsIFdlYkNvcmU6OkhUTUxG
cmFtZU93bmVyRWxlbWVudCAqb3duZXIpCiB7Ci0gICAgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGll
bnRFZmwqIGZsYyA9IG5ldyBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbChzZC0+c2VsZik7
CisgICAgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmwgKmZsYyA9IG5ldyBXZWJDb3JlOjpG
cmFtZUxvYWRlckNsaWVudEVmbChzZC0+c2VsZik7CiAgICAgaWYgKCFmbGMpIHsKICAgICAgICAg
Q1JJVElDQUwoIkNvdWxkIG5vdCBjcmVhdGUgZnJhbWUgbG9hZGVyIGNsaWVudC4iKTsKICAgICAg
ICAgcmV0dXJuIDA7CkBAIC01MzIsMTAgKzUzMiwxMCBAQCBzdGF0aWMgV1RGOjpQYXNzUmVmUHRy
PFdlYkNvcmU6OkZyYW1lPiBfZXdrX3ZpZXdfY29yZV9mcmFtZV9uZXcoRXdrX1ZpZXdfU21hcnRf
RAogCiBzdGF0aWMgRXZhc19TbWFydF9DbGFzcyBfcGFyZW50X3NjID0gRVZBU19TTUFSVF9DTEFT
U19JTklUX05VTEw7CiAKLXN0YXRpYyBFd2tfVmlld19Qcml2YXRlX0RhdGEqIF9ld2tfdmlld19w
cml2X25ldyhFd2tfVmlld19TbWFydF9EYXRhKiBzZCkKK3N0YXRpYyBFd2tfVmlld19Qcml2YXRl
X0RhdGEgKl9ld2tfdmlld19wcml2X25ldyhFd2tfVmlld19TbWFydF9EYXRhICpzZCkKIHsKLSAg
ICBFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYgPQotICAgICAgICAoRXdrX1ZpZXdfUHJpdmF0
ZV9EYXRhKiljYWxsb2MoMSwgc2l6ZW9mKEV3a19WaWV3X1ByaXZhdGVfRGF0YSkpOworICAgIEV3
a19WaWV3X1ByaXZhdGVfRGF0YSAqcHJpdiA9CisgICAgICAgIChFd2tfVmlld19Qcml2YXRlX0Rh
dGEgKiljYWxsb2MoMSwgc2l6ZW9mKEV3a19WaWV3X1ByaXZhdGVfRGF0YSkpOwogICAgIEF0b21p
Y1N0cmluZyBzOwogICAgIFdlYkNvcmU6OktVUkwgdXJsOwogCkBAIC02NDgsNyArNjQ4LDcgQEAg
c3RhdGljIEV3a19WaWV3X1ByaXZhdGVfRGF0YSogX2V3a192aWV3X3ByaXZfbmV3KEV3a19WaWV3
X1NtYXJ0X0RhdGEqIHNkKQogICAgICAgICBnb3RvIGVycm9yX21haW5fZnJhbWU7CiAgICAgfQog
Ci0gICAgcHJpdi0+aGlzdG9yeSA9IGV3a19oaXN0b3J5X25ldyhzdGF0aWNfY2FzdDxXZWJDb3Jl
OjpCYWNrRm9yd2FyZExpc3RJbXBsKj4ocHJpdi0+cGFnZS0+YmFja0ZvcndhcmRMaXN0KCkpKTsK
KyAgICBwcml2LT5oaXN0b3J5ID0gZXdrX2hpc3RvcnlfbmV3KHN0YXRpY19jYXN0PFdlYkNvcmU6
OkJhY2tGb3J3YXJkTGlzdEltcGwgKj4ocHJpdi0+cGFnZS0+YmFja0ZvcndhcmRMaXN0KCkpKTsK
ICAgICBpZiAoIXByaXYtPmhpc3RvcnkpIHsKICAgICAgICAgQ1JJVElDQUwoIkNvdWxkIG5vdCBj
cmVhdGUgaGlzdG9yeSBpbnN0YW5jZSBmb3Igdmlldy4iKTsKICAgICAgICAgZ290byBlcnJvcl9o
aXN0b3J5OwpAQCAtNjY2LDcgKzY2Niw3IEBAIGVycm9yX3BhZ2U6CiAgICAgcmV0dXJuIDA7CiB9
CiAKLXN0YXRpYyB2b2lkIF9ld2tfdmlld19wcml2X2RlbChFd2tfVmlld19Qcml2YXRlX0RhdGEq
IHByaXYpCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfcHJpdl9kZWwoRXdrX1ZpZXdfUHJpdmF0ZV9E
YXRhICpwcml2KQogewogICAgIGlmICghcHJpdikKICAgICAgICAgcmV0dXJuOwpAQCAtNjk3LDE2
ICs2OTcsMTYgQEAgc3RhdGljIHZvaWQgX2V3a192aWV3X3ByaXZfZGVsKEV3a19WaWV3X1ByaXZh
dGVfRGF0YSogcHJpdikKICAgICBmcmVlKHByaXYpOwogfQogCi1zdGF0aWMgdm9pZCBfZXdrX3Zp
ZXdfc21hcnRfYWRkKEV2YXNfT2JqZWN0KiBvKQorc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0
X2FkZChFdmFzX09iamVjdCAqbykKIHsKLSAgICBjb25zdCBFdmFzX1NtYXJ0KiBzbWFydCA9IGV2
YXNfb2JqZWN0X3NtYXJ0X3NtYXJ0X2dldChvKTsKLSAgICBjb25zdCBFdmFzX1NtYXJ0X0NsYXNz
KiBzYyA9IGV2YXNfc21hcnRfY2xhc3NfZ2V0KHNtYXJ0KTsKLSAgICBjb25zdCBFd2tfVmlld19T
bWFydF9DbGFzcyogYXBpID0gKGNvbnN0IEV3a19WaWV3X1NtYXJ0X0NsYXNzKilzYzsKKyAgICBj
b25zdCBFdmFzX1NtYXJ0ICpzbWFydCA9IGV2YXNfb2JqZWN0X3NtYXJ0X3NtYXJ0X2dldChvKTsK
KyAgICBjb25zdCBFdmFzX1NtYXJ0X0NsYXNzICpzYyA9IGV2YXNfc21hcnRfY2xhc3NfZ2V0KHNt
YXJ0KTsKKyAgICBjb25zdCBFd2tfVmlld19TbWFydF9DbGFzcyAqYXBpID0gKGNvbnN0IEV3a19W
aWV3X1NtYXJ0X0NsYXNzICopc2M7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oYXBp
LT5iYWNraW5nX3N0b3JlX2FkZCk7CiAgICAgRVdLX1ZJRVdfU0RfR0VUKG8sIHNkKTsKIAogICAg
IGlmICghc2QpIHsKLSAgICAgICAgc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopY2FsbG9jKDEs
IHNpemVvZihFd2tfVmlld19TbWFydF9EYXRhKSk7CisgICAgICAgIHNkID0gKEV3a19WaWV3X1Nt
YXJ0X0RhdGEgKiljYWxsb2MoMSwgc2l6ZW9mKEV3a19WaWV3X1NtYXJ0X0RhdGEpKTsKICAgICAg
ICAgaWYgKCFzZCkKICAgICAgICAgICAgIENSSVRJQ0FMKCJjb3VsZCBub3QgYWxsb2NhdGUgRXdr
X1ZpZXdfU21hcnRfRGF0YSIpOwogICAgICAgICBlbHNlCkBAIC03NzYsMTcgKzc3NiwxNyBAQCBz
dGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfYWRkKEV2YXNfT2JqZWN0KiBvKQogI3VuZGVmIENP
Tk5FQ1QKIH0KIAotc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2RlbChFdmFzX09iamVjdCog
bykKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9kZWwoRXZhc19PYmplY3QgKm8pCiB7CiAg
ICAgRVdLX1ZJRVdfU0RfR0VUKG8sIHNkKTsKLSAgICBFd2tfVmlld19Qcml2YXRlX0RhdGEqIHBy
aXYgPSBzZCA/IHNkLT5fcHJpdiA6IDA7CisgICAgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpwcml2
ID0gc2QgPyBzZC0+X3ByaXYgOiAwOwogCiAgICAgZXdrX3ZpZXdfc3RvcChvKTsKICAgICBfcGFy
ZW50X3NjLmRlbChvKTsKICAgICBfZXdrX3ZpZXdfcHJpdl9kZWwocHJpdik7CiB9CiAKLXN0YXRp
YyB2b2lkIF9ld2tfdmlld19zbWFydF9yZXNpemUoRXZhc19PYmplY3QqIG8sIEV2YXNfQ29vcmQg
dywgRXZhc19Db29yZCBoKQorc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X3Jlc2l6ZShFdmFz
X09iamVjdCAqbywgRXZhc19Db29yZCB3LCBFdmFzX0Nvb3JkIGgpCiB7CiAgICAgRVdLX1ZJRVdf
U0RfR0VUKG8sIHNkKTsKIApAQCAtNzk3LDE0ICs3OTcsMTQgQEAgc3RhdGljIHZvaWQgX2V3a192
aWV3X3NtYXJ0X3Jlc2l6ZShFdmFzX09iamVjdCogbywgRXZhc19Db29yZCB3LCBFdmFzX0Nvb3Jk
IGgpCiAgICAgX2V3a192aWV3X3NtYXJ0X2NoYW5nZWQoc2QpOwogfQogCi1zdGF0aWMgdm9pZCBf
ZXdrX3ZpZXdfc21hcnRfbW92ZShFdmFzX09iamVjdCogbywgRXZhc19Db29yZCB4LCBFdmFzX0Nv
b3JkIHkpCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfbW92ZShFdmFzX09iamVjdCAqbywg
RXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkIHkpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUKG8sIHNk
KTsKICAgICBzZC0+Y2hhbmdlZC5wb3NpdGlvbiA9IEVJTkFfVFJVRTsKICAgICBfZXdrX3ZpZXdf
c21hcnRfY2hhbmdlZChzZCk7CiB9CiAKLXN0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9jYWxj
dWxhdGUoRXZhc19PYmplY3QqIG8pCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfY2FsY3Vs
YXRlKEV2YXNfT2JqZWN0ICpvKQogewogICAgIEVXS19WSUVXX1NEX0dFVChvLCBzZCk7CiAgICAg
RVdLX1ZJRVdfUFJJVl9HRVQoc2QsIHByaXYpOwpAQCAtODI2LDcgKzgyNiw3IEBAIHN0YXRpYyB2
b2lkIF9ld2tfdmlld19zbWFydF9jYWxjdWxhdGUoRXZhc19PYmplY3QqIG8pCiAgICAgICAgIHBy
aXYtPnNjcm9sbHMuY291bnQsIHByaXYtPnJlcGFpbnRzLmNvdW50KTsKIAogICAgIGlmIChzZC0+
Y2hhbmdlZC5zaXplICYmICgodyAhPSBzZC0+dmlldy53KSB8fCAoaCAhPSBzZC0+dmlldy5oKSkp
IHsKLSAgICAgICAgV2ViQ29yZTo6RnJhbWVWaWV3KiB2aWV3ID0gcHJpdi0+bWFpbl9mcmFtZS0+
dmlldygpOworICAgICAgICBXZWJDb3JlOjpGcmFtZVZpZXcgKnZpZXcgPSBwcml2LT5tYWluX2Zy
YW1lLT52aWV3KCk7CiAgICAgICAgIGlmICh2aWV3KSB7CiAgICAgICAgICAgICB2aWV3LT5yZXNp
emUodywgaCk7CiAgICAgICAgICAgICB2aWV3LT5mb3JjZUxheW91dCgpOwpAQCAtODY0LDcgKzg2
NCw3IEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9jYWxjdWxhdGUoRXZhc19PYmplY3Qq
IG8pCiAgICAgX2V3a192aWV3X3JlcGFpbnRzX2ZsdXNoKHByaXYpOwogCiAgICAgaWYgKHNkLT5j
aGFuZ2VkLmZyYW1lX3JlY3QpIHsKLSAgICAgICAgV2ViQ29yZTo6RnJhbWVWaWV3KiB2aWV3ID0g
cHJpdi0+bWFpbl9mcmFtZS0+dmlldygpOworICAgICAgICBXZWJDb3JlOjpGcmFtZVZpZXcgKnZp
ZXcgPSBwcml2LT5tYWluX2ZyYW1lLT52aWV3KCk7CiAgICAgICAgIHZpZXctPmZyYW1lUmVjdHND
aGFuZ2VkKCk7IC8qIGZvcmNlIHRyZWUgdG8gZ2V0IHBvc2l0aW9uIGZyb20gcm9vdCAqLwogICAg
ICAgICBzZC0+Y2hhbmdlZC5mcmFtZV9yZWN0ID0gRUlOQV9GQUxTRTsKICAgICB9CkBAIC04ODcs
MTIgKzg4NywxMiBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfaGlkZShFdmFzX09iamVj
dCAqbykKICAgICBldmFzX29iamVjdF9oaWRlKHNkLT5iYWNraW5nX3N0b3JlKTsKIH0KIAotc3Rh
dGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfY29udGVudHNfcmVzaXplKEV3a19WaWV3X1Nt
YXJ0X0RhdGEqIHNkLCBpbnQgdywgaW50IGgpCitzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19z
bWFydF9jb250ZW50c19yZXNpemUoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGludCB3LCBpbnQg
aCkKIHsKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1zdGF0aWMgRWluYV9Cb29sIF9ld2tf
dmlld19zbWFydF96b29tX3NldChFd2tfVmlld19TbWFydF9EYXRhKiBzZCwgZmxvYXQgem9vbSwg
RXZhc19Db29yZCBjeCwgRXZhc19Db29yZCBjeSkKK3N0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3
X3NtYXJ0X3pvb21fc2V0KEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBmbG9hdCB6b29tLCBFdmFz
X0Nvb3JkIGN4LCBFdmFzX0Nvb3JkIGN5KQogewogICAgIGRvdWJsZSBweCwgcHk7CiAgICAgRXZh
c19Db29yZCB4LCB5LCB3LCBoOwpAQCAtOTIwLDQwICs5MjAsNDAgQEAgc3RhdGljIEVpbmFfQm9v
bCBfZXdrX3ZpZXdfc21hcnRfem9vbV9zZXQoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QsIGZsb2F0
IHpvb20sIEUKICAgICByZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21h
cnRfZmx1c2goRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QpCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdf
c21hcnRfZmx1c2goRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpCiB7CiAgICAgRVdLX1ZJRVdfUFJJ
Vl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2KTsKICAgICBfZXdrX3ZpZXdfcmVwYWludHNfZmx1c2go
cHJpdik7CiAgICAgX2V3a192aWV3X3Njcm9sbHNfZmx1c2gocHJpdik7CiB9CiAKLXN0YXRpYyBF
aW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X3ByZV9yZW5kZXJfcmVnaW9uKEV3a19WaWV3X1NtYXJ0
X0RhdGEqIHNkLCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwgRXZhc19Db29yZCB3LCBFdmFz
X0Nvb3JkIGgsIGZsb2F0IHpvb20pCitzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9w
cmVfcmVuZGVyX3JlZ2lvbihFd2tfVmlld19TbWFydF9EYXRhICpzZCwgRXZhc19Db29yZCB4LCBF
dmFzX0Nvb3JkIHksIEV2YXNfQ29vcmQgdywgRXZhc19Db29yZCBoLCBmbG9hdCB6b29tKQogewog
ICAgIFdSTigibm90IHN1cHBvcnRlZCBieSBlbmdpbmUuIHNkPSVwIGFyZWE9JWQsJWQrJWR4JWQs
IHpvb209JWYiLAogICAgICAgICBzZCwgeCwgeSwgdywgaCwgem9vbSk7CiAgICAgcmV0dXJuIEVJ
TkFfRkFMU0U7CiB9CiAKLXN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X3ByZV9yZW5k
ZXJfcmVsYXRpdmVfcmFkaXVzKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkLCB1bnNpZ25lZCBpbnQg
biwgZmxvYXQgem9vbSkKK3N0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X3ByZV9yZW5k
ZXJfcmVsYXRpdmVfcmFkaXVzKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCB1bnNpZ25lZCBpbnQg
biwgZmxvYXQgem9vbSkKIHsKICAgICBXUk4oIm5vdCBzdXBwb3J0ZWQgYnkgZW5naW5lLiBzZD0l
cCwgbj0ldSB6b29tPSVmIiwKICAgICAgICAgc2QsIG4sIHpvb20pOwogICAgIHJldHVybiBFSU5B
X0ZBTFNFOwogfQogCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfcHJlX3JlbmRlcl9jYW5j
ZWwoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QpCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRf
cHJlX3JlbmRlcl9jYW5jZWwoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpCiB7CiAgICAgV1JOKCJu
b3Qgc3VwcG9ydGVkIGJ5IGVuZ2luZS4gc2Q9JXAiLCBzZCk7CiB9CiAKLXN0YXRpYyB2b2lkIF9l
d2tfdmlld196b29tX2FuaW1hdGVkX21hcmtfc3RvcChFd2tfVmlld19TbWFydF9EYXRhKiBzZCkK
K3N0YXRpYyB2b2lkIF9ld2tfdmlld196b29tX2FuaW1hdGVkX21hcmtfc3RvcChFd2tfVmlld19T
bWFydF9EYXRhICpzZCkKIHsKICAgICBzZC0+YW5pbWF0ZWRfem9vbS56b29tLnN0YXJ0ID0gMC4w
OwogICAgIHNkLT5hbmltYXRlZF96b29tLnpvb20uZW5kID0gMC4wOwogICAgIHNkLT5hbmltYXRl
ZF96b29tLnpvb20uY3VycmVudCA9IDAuMDsKIH0KIAotc3RhdGljIHZvaWQgX2V3a192aWV3X3pv
b21fYW5pbWF0ZWRfZmluaXNoKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkKQorc3RhdGljIHZvaWQg
X2V3a192aWV3X3pvb21fYW5pbWF0ZWRfZmluaXNoKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkKQog
ewogICAgIEVXS19WSUVXX1BSSVZfR0VUKHNkLCBwcml2KTsKICAgICBlY29yZV9hbmltYXRvcl9k
ZWwocHJpdi0+YW5pbWF0ZWRfem9vbS5hbmltYXRvcik7CkBAIC05NjIsNyArOTYyLDcgQEAgc3Rh
dGljIHZvaWQgX2V3a192aWV3X3pvb21fYW5pbWF0ZWRfZmluaXNoKEV3a19WaWV3X1NtYXJ0X0Rh
dGEqIHNkKQogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoc2QtPnNlbGYsICJ6
b29tLGFuaW1hdGVkLGVuZCIsIDApOwogfQogCi1zdGF0aWMgZmxvYXQgX2V3a192aWV3X3pvb21f
YW5pbWF0ZWRfY3VycmVudChFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYpCitzdGF0aWMgZmxv
YXQgX2V3a192aWV3X3pvb21fYW5pbWF0ZWRfY3VycmVudChFd2tfVmlld19Qcml2YXRlX0RhdGEg
KnByaXYpCiB7CiAgICAgZG91YmxlIG5vdyA9IGVjb3JlX2xvb3BfdGltZV9nZXQoKTsKICAgICBk
b3VibGUgZGVsdGEgPSBub3cgLSBwcml2LT5hbmltYXRlZF96b29tLnRpbWUuc3RhcnQ7CkBAIC05
NzgsOSArOTc4LDkgQEAgc3RhdGljIGZsb2F0IF9ld2tfdmlld196b29tX2FuaW1hdGVkX2N1cnJl
bnQoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2KQogICAgICAgICAgICAgKyBwcml2LT5hbmlt
YXRlZF96b29tLnpvb20uc3RhcnQpOwogfQogCi1zdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld196
b29tX2FuaW1hdG9yX2NiKHZvaWQqIGRhdGEpCitzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld196
b29tX2FuaW1hdG9yX2NiKHZvaWQgKmRhdGEpCiB7Ci0gICAgRXdrX1ZpZXdfU21hcnRfRGF0YSog
c2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKKyAgICBFd2tfVmlld19TbWFydF9EYXRh
ICpzZCA9IChFd2tfVmlld19TbWFydF9EYXRhICopZGF0YTsKICAgICBFdmFzX0Nvb3JkIGN4LCBj
eTsKICAgICBFV0tfVklFV19QUklWX0dFVChzZCwgcHJpdik7CiAgICAgZG91YmxlIG5vdyA9IGVj
b3JlX2xvb3BfdGltZV9nZXQoKTsKQEAgLTEwMDcsNyArMTAwNyw3IEBAIHN0YXRpYyBFaW5hX0Jv
b2wgX2V3a192aWV3X3pvb21fYW5pbWF0b3JfY2Iodm9pZCogZGF0YSkKICAgICByZXR1cm4gRUlO
QV9UUlVFOwogfQogCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdfem9vbV9hbmltYXRpb25fc3RhcnQo
RXdrX1ZpZXdfU21hcnRfRGF0YSogc2QpCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfem9vbV9hbmlt
YXRpb25fc3RhcnQoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpCiB7CiAgICAgRVdLX1ZJRVdfUFJJ
Vl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2KTsKICAgICBpZiAocHJpdi0+YW5pbWF0ZWRfem9vbS5h
bmltYXRvcikKQEAgLTEwMTYsNyArMTAxNiw3IEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld196b29t
X2FuaW1hdGlvbl9zdGFydChFd2tfVmlld19TbWFydF9EYXRhKiBzZCkKICAgICAgICAgKF9ld2tf
dmlld196b29tX2FuaW1hdG9yX2NiLCBzZCk7CiB9CiAKLXN0YXRpYyBXZWJDb3JlOjpWaWV3cG9y
dEF0dHJpYnV0ZXMgX2V3a192aWV3X3ZpZXdwb3J0X2F0dHJpYnV0ZXNfY29tcHV0ZShFdmFzX09i
amVjdCogbykKK3N0YXRpYyBXZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMgX2V3a192aWV3X3Zp
ZXdwb3J0X2F0dHJpYnV0ZXNfY29tcHV0ZShFdmFzX09iamVjdCAqbykKIHsKICAgICBFV0tfVklF
V19TRF9HRVQobywgc2QpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUKHNkLCBwcml2KTsKQEAgLTEw
NjcsNyArMTA2Nyw3IEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X2VuYWJsZV9y
ZW5kZXIoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpCiAgKiBAc2VlIGV3a192aWV3X3NpbmdsZV9z
bWFydF9zZXQoKQogICogQHNlZSBld2tfdmlld190aWxlZF9zbWFydF9zZXQoKQogICovCi1FaW5h
X0Jvb2wgZXdrX3ZpZXdfYmFzZV9zbWFydF9zZXQoRXdrX1ZpZXdfU21hcnRfQ2xhc3MqIGFwaSkK
K0VpbmFfQm9vbCBld2tfdmlld19iYXNlX3NtYXJ0X3NldChFd2tfVmlld19TbWFydF9DbGFzcyAq
YXBpKQogewogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChhcGksIEVJTkFfRkFM
U0UpOwogCkBAIC0xMTMzLDEyICsxMTMzLDEyIEBAIEVpbmFfQm9vbCBld2tfdmlld19iYXNlX3Nt
YXJ0X3NldChFd2tfVmlld19TbWFydF9DbGFzcyogYXBpKQogICogQHBhcmFtIGggZml4ZWQgaGVp
Z2h0IHRvIHVzZS4gVGhpcyBzaXplIHdpbGwgYmUgYXV0b21hdGljYWxseSBzY2FsZWQKICAqICAg
ICAgICBiYXNlZCBvbiB6b29tIGxldmVsLgogICovCi12b2lkIGV3a192aWV3X2ZpeGVkX2xheW91
dF9zaXplX3NldChFdmFzX09iamVjdCogbywgRXZhc19Db29yZCB3LCBFdmFzX0Nvb3JkIGgpCit2
b2lkIGV3a192aWV3X2ZpeGVkX2xheW91dF9zaXplX3NldChFdmFzX09iamVjdCAqbywgRXZhc19D
b29yZCB3LCBFdmFzX0Nvb3JkIGgpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihv
LCBzZCk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2KTsKIAotICAg
IFdlYkNvcmU6OkZyYW1lVmlldyogdmlldyA9IHByaXYtPm1haW5fZnJhbWUtPnZpZXcoKTsKKyAg
ICBXZWJDb3JlOjpGcmFtZVZpZXcgKnZpZXcgPSBwcml2LT5tYWluX2ZyYW1lLT52aWV3KCk7CiAg
ICAgaWYgKHcgPD0gMCAmJiBoIDw9IDApIHsKICAgICAgICAgaWYgKCF2aWV3LT51c2VGaXhlZExh
eW91dCgpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTE2Niw3ICsxMTY2LDcgQEAgdm9pZCBl
d2tfdmlld19maXhlZF9sYXlvdXRfc2l6ZV9zZXQoRXZhc19PYmplY3QqIG8sIEV2YXNfQ29vcmQg
dywgRXZhc19Db29yZCBoKQogICogQHBhcmFtIGggd2hlcmUgdG8gcmV0dXJuIGhlaWdodC4gUmV0
dXJucyAwIG9uIGVycm9yIG9yIGlmIG5vIGZpeGVkCiAgKiAgICAgICAgbGF5b3V0IGluIHVzZS4K
ICAqLwotdm9pZCBld2tfdmlld19maXhlZF9sYXlvdXRfc2l6ZV9nZXQoRXZhc19PYmplY3QqIG8s
IEV2YXNfQ29vcmQqIHcsIEV2YXNfQ29vcmQqIGgpCit2b2lkIGV3a192aWV3X2ZpeGVkX2xheW91
dF9zaXplX2dldChFdmFzX09iamVjdCAqbywgRXZhc19Db29yZCAqdywgRXZhc19Db29yZCAqaCkK
IHsKICAgICBpZiAodykKICAgICAgICAgKncgPSAwOwpAQCAtMTE5NCwxNCArMTE5NCwxNCBAQCB2
b2lkIGV3a192aWV3X2ZpeGVkX2xheW91dF9zaXplX2dldChFdmFzX09iamVjdCogbywgRXZhc19D
b29yZCogdywgRXZhc19Db29yZCogaAogICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gY2hhbmdl
IHRoZW1lLgogICogQHBhcmFtIHBhdGggdGhlbWUgcGF0aCwgbWF5IGJlIEBjIDAgdG8gcmVzZXQg
dG8gZGVmYXVsdC4KICAqLwotdm9pZCBld2tfdmlld190aGVtZV9zZXQoRXZhc19PYmplY3QqIG8s
IGNvbnN0IGNoYXIqIHBhdGgpCit2b2lkIGV3a192aWV3X3RoZW1lX3NldChFdmFzX09iamVjdCAq
bywgY29uc3QgY2hhciAqcGF0aCkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8s
IHNkKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYpOwogICAgIGlm
ICghZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZwcml2LT5zZXR0aW5ncy50aGVtZSwgcGF0aCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIFdlYkNvcmU6OkZyYW1lVmlldyogdmlldyA9IHByaXYt
Pm1haW5fZnJhbWUtPnZpZXcoKTsKKyAgICBXZWJDb3JlOjpGcmFtZVZpZXcgKnZpZXcgPSBwcml2
LT5tYWluX2ZyYW1lLT52aWV3KCk7CiAgICAgaWYgKHZpZXcpIHsKICAgICAgICAgdmlldy0+c2V0
RWRqZVRoZW1lKFdURjo6U3RyaW5nKHBhdGgpKTsKICAgICAgICAgcHJpdi0+cGFnZS0+dGhlbWUo
KS0+dGhlbWVDaGFuZ2VkKCk7CkBAIC0xMjE4LDcgKzEyMTgsNyBAQCB2b2lkIGV3a192aWV3X3Ro
ZW1lX3NldChFdmFzX09iamVjdCogbywgY29uc3QgY2hhciogcGF0aCkKICAqCiAgKiBAcmV0dXJu
IHRoZW1lIHBhdGgsIG1heSBiZSBAYyAwIGlmIG5vdCBzZXQuCiAgKi8KLWNvbnN0IGNoYXIqIGV3
a192aWV3X3RoZW1lX2dldChFdmFzX09iamVjdCogbykKK2NvbnN0IGNoYXIqIGV3a192aWV3X3Ro
ZW1lX2dldChFdmFzX09iamVjdCAqbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJO
KG8sIHNkLCAwKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIDAp
OwpAQCAtMTIzMiw3ICsxMjMyLDcgQEAgY29uc3QgY2hhciogZXdrX3ZpZXdfdGhlbWVfZ2V0KEV2
YXNfT2JqZWN0KiBvKQogICoKICAqIEByZXR1cm4gZXdrX2ZyYW1lIG9iamVjdCBvciBAYyAwIGlm
IG5vbmUgeWV0LgogICovCi1FdmFzX09iamVjdCogZXdrX3ZpZXdfZnJhbWVfbWFpbl9nZXQoY29u
c3QgRXZhc19PYmplY3QqIG8pCitFdmFzX09iamVjdCogZXdrX3ZpZXdfZnJhbWVfbWFpbl9nZXQo
Y29uc3QgRXZhc19PYmplY3QgKm8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihv
LCBzZCwgMCk7CiAgICAgcmV0dXJuIHNkLT5tYWluX2ZyYW1lOwpAQCAtMTI0NSwxMiArMTI0NSwx
MiBAQCBFdmFzX09iamVjdCogZXdrX3ZpZXdfZnJhbWVfbWFpbl9nZXQoY29uc3QgRXZhc19PYmpl
Y3QqIG8pCiAgKgogICogQHJldHVybiBld2tfZnJhbWUgb2JqZWN0IG9yIEBjIDAgaWYgbm9uZSB5
ZXQuCiAgKi8KLUV2YXNfT2JqZWN0KiBld2tfdmlld19mcmFtZV9mb2N1c2VkX2dldChjb25zdCBF
dmFzX09iamVjdCogbykKK0V2YXNfT2JqZWN0KiBld2tfdmlld19mcmFtZV9mb2N1c2VkX2dldChj
b25zdCBFdmFzX09iamVjdCAqbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8s
IHNkLCAwKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIDApOwog
Ci0gICAgV2ViQ29yZTo6RnJhbWUqIGNvcmUgPSBwcml2LT5wYWdlLT5mb2N1c0NvbnRyb2xsZXIo
KS0+Zm9jdXNlZEZyYW1lKCk7CisgICAgV2ViQ29yZTo6RnJhbWUgKmNvcmUgPSBwcml2LT5wYWdl
LT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZEZyYW1lKCk7CiAgICAgaWYgKCFjb3JlKQogICAg
ICAgICByZXR1cm4gMDsKIApAQCAtMTI3MCw3ICsxMjcwLDcgQEAgRXZhc19PYmplY3QqIGV3a192
aWV3X2ZyYW1lX2ZvY3VzZWRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogICogICAgICAgICBO
b3RlIHRoYXQgaXQgbWVhbnMgdGhlIHJlcXVlc3Qgd2FzIGRvbmUsIG5vdCB0aGF0IGl0IHdhcwog
ICogICAgICAgICBzYXRpc2ZpZWQuCiAgKi8KLUVpbmFfQm9vbCBld2tfdmlld191cmlfc2V0KEV2
YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFyKiB1cmkpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfdXJpX3Nl
dChFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqdXJpKQogewogICAgIEVXS19WSUVXX1NEX0dF
VF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIHJldHVybiBld2tfZnJhbWVfdXJp
X3NldChzZC0+bWFpbl9mcmFtZSwgdXJpKTsKQEAgLTEyODMsNyArMTI4Myw3IEBAIEVpbmFfQm9v
bCBld2tfdmlld191cmlfc2V0KEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFyKiB1cmkpCiAgKgog
ICogQHJldHVybiBjdXJyZW50IHVyaSByZWZlcmVuY2Ugb3IgQGMgMC4gSXQncyBpbnRlcm5hbCwg
ZG9uJ3QgY2hhbmdlLgogICovCi1jb25zdCBjaGFyKiBld2tfdmlld191cmlfZ2V0KGNvbnN0IEV2
YXNfT2JqZWN0KiBvKQorY29uc3QgY2hhciAqZXdrX3ZpZXdfdXJpX2dldChjb25zdCBFdmFzX09i
amVjdCAqbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAwKTsKICAg
ICByZXR1cm4gZXdrX2ZyYW1lX3VyaV9nZXQoc2QtPm1haW5fZnJhbWUpOwpAQCAtMTI5Niw3ICsx
Mjk2LDcgQEAgY29uc3QgY2hhciogZXdrX3ZpZXdfdXJpX2dldChjb25zdCBFdmFzX09iamVjdCog
bykKICAqCiAgKiBAcmV0dXJuIGN1cnJlbnQgdGl0bGUgcmVmZXJlbmNlIG9yIEBjIDAuIEl0J3Mg
aW50ZXJuYWwsIGRvbid0IGNoYW5nZS4KICAqLwotY29uc3QgY2hhciogZXdrX3ZpZXdfdGl0bGVf
Z2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQorY29uc3QgY2hhciAqZXdrX3ZpZXdfdGl0bGVfZ2V0
KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4o
bywgc2QsIDApOwogICAgIHJldHVybiBld2tfZnJhbWVfdGl0bGVfZ2V0KHNkLT5tYWluX2ZyYW1l
KTsKQEAgLTEzMDksNyArMTMwOSw3IEBAIGNvbnN0IGNoYXIqIGV3a192aWV3X3RpdGxlX2dldChj
b25zdCBFdmFzX09iamVjdCogbykKICAqCiAgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiBlZGl0
YWJsZSwgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UuCiAgKi8KLUVpbmFfQm9vbCBld2tfdmlld19l
ZGl0YWJsZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCitFaW5hX0Jvb2wgZXdrX3ZpZXdfZWRp
dGFibGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9P
Ul9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIHJldHVybiBld2tfZnJhbWVfZWRpdGFi
bGVfZ2V0KHNkLT5tYWluX2ZyYW1lKTsKQEAgLTEzMzQsNyArMTMzNCw3IEBAIEVpbmFfQm9vbCBl
d2tfdmlld19lZGl0YWJsZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiAgKiBAcGFyYW0gYiBi
bHVlIGNvbXBvbmVudC4KICAqIEBwYXJhbSBhIHRyYW5zcGFyZW5jeS4KICAqLwotdm9pZCBld2tf
dmlld19iZ19jb2xvcl9zZXQoRXZhc19PYmplY3QqIG8sIGludCByLCBpbnQgZywgaW50IGIsIGlu
dCBhKQordm9pZCBld2tfdmlld19iZ19jb2xvcl9zZXQoRXZhc19PYmplY3QgKm8sIGludCByLCBp
bnQgZywgaW50IGIsIGludCBhKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywg
c2QpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGkpOwpAQCAtMTM2OSw3
ICsxMzY5LDcgQEAgdm9pZCBld2tfdmlld19iZ19jb2xvcl9zZXQoRXZhc19PYmplY3QqIG8sIGlu
dCByLCBpbnQgZywgaW50IGIsIGludCBhKQogCiAgICAgc2QtPmFwaS0+YmdfY29sb3Jfc2V0KHNk
LCByLCBnLCBiLCBhKTsKIAotICAgIFdlYkNvcmU6OkZyYW1lVmlldyogdmlldyA9IHNkLT5fcHJp
di0+bWFpbl9mcmFtZS0+dmlldygpOworICAgIFdlYkNvcmU6OkZyYW1lVmlldyAqdmlldyA9IHNk
LT5fcHJpdi0+bWFpbl9mcmFtZS0+dmlldygpOwogICAgIGlmICh2aWV3KSB7CiAgICAgICAgIFdl
YkNvcmU6OkNvbG9yIGNvbG9yOwogCkBAIC0xMzk2LDcgKzEzOTYsNyBAQCB2b2lkIGV3a192aWV3
X2JnX2NvbG9yX3NldChFdmFzX09iamVjdCogbywgaW50IHIsIGludCBnLCBpbnQgYiwgaW50IGEp
CiAgKiBAcGFyYW0gYiB3aGVyZSB0byByZXR1cm4gYmx1ZSBjb2xvciBjb21wb25lbnQuCiAgKiBA
cGFyYW0gYSB3aGVyZSB0byByZXR1cm4gYWxwaGEgdmFsdWUuCiAgKi8KLXZvaWQgZXdrX3ZpZXdf
YmdfY29sb3JfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvLCBpbnQqIHIsIGludCogZywgaW50KiBi
LCBpbnQqIGEpCit2b2lkIGV3a192aWV3X2JnX2NvbG9yX2dldChjb25zdCBFdmFzX09iamVjdCAq
bywgaW50ICpyLCBpbnQgKmcsIGludCAqYiwgaW50ICphKQogewogICAgIGlmIChyKQogICAgICAg
ICAqciA9IDA7CkBAIC0xNDI4LDcgKzE0MjgsNyBAQCB2b2lkIGV3a192aWV3X2JnX2NvbG9yX2dl
dChjb25zdCBFdmFzX09iamVjdCogbywgaW50KiByLCBpbnQqIGcsIGludCogYiwgaW50KiBhKQog
ICoKICAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIGZvdW5kLCBAYyBFSU5BX0ZBTFNFIGlmIG5v
dCBvciBmYWlsdXJlLgogICovCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfdGV4dF9zZWFyY2goY29uc3Qg
RXZhc19PYmplY3QqIG8sIGNvbnN0IGNoYXIqIHN0cmluZywgRWluYV9Cb29sIGNhc2Vfc2Vuc2l0
aXZlLCBFaW5hX0Jvb2wgZm9yd2FyZCwgRWluYV9Cb29sIHdyYXApCitFaW5hX0Jvb2wgZXdrX3Zp
ZXdfdGV4dF9zZWFyY2goY29uc3QgRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKnN0cmluZywg
RWluYV9Cb29sIGNhc2Vfc2Vuc2l0aXZlLCBFaW5hX0Jvb2wgZm9yd2FyZCwgRWluYV9Cb29sIHdy
YXApCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7
CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsK
QEAgLTE0NjAsNyArMTQ2MCw3IEBAIEVpbmFfQm9vbCBld2tfdmlld190ZXh0X3NlYXJjaChjb25z
dCBFdmFzX09iamVjdCogbywgY29uc3QgY2hhciogc3RyaW5nLCBFaW5hX0JvCiAgKgogICogQHJl
dHVybiBudW1iZXIgb2YgbWF0Y2hlcy4KICAqLwotdW5zaWduZWQgaW50IGV3a192aWV3X3RleHRf
bWF0Y2hlc19tYXJrKEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFyKiBzdHJpbmcsIEVpbmFfQm9v
bCBjYXNlX3NlbnNpdGl2ZSwgRWluYV9Cb29sIGhpZ2hsaWdodCwgdW5zaWduZWQgaW50IGxpbWl0
KQordW5zaWduZWQgaW50IGV3a192aWV3X3RleHRfbWF0Y2hlc19tYXJrKEV2YXNfT2JqZWN0ICpv
LCBjb25zdCBjaGFyICpzdHJpbmcsIEVpbmFfQm9vbCBjYXNlX3NlbnNpdGl2ZSwgRWluYV9Cb29s
IGhpZ2hsaWdodCwgdW5zaWduZWQgaW50IGxpbWl0KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9P
Ul9SRVRVUk4obywgc2QsIDApOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwg
cHJpdiwgMCk7CkBAIC0xNDgyLDcgKzE0ODIsNyBAQCB1bnNpZ25lZCBpbnQgZXdrX3ZpZXdfdGV4
dF9tYXRjaGVzX21hcmsoRXZhc19PYmplY3QqIG8sIGNvbnN0IGNoYXIqIHN0cmluZywgRWluYQog
ICoKICAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIEBjIEVJTkFfRkFMU0UgZm9y
IGZhaWx1cmUuCiAgKi8KLUVpbmFfQm9vbCBld2tfdmlld190ZXh0X21hdGNoZXNfdW5tYXJrX2Fs
bChFdmFzX09iamVjdCogbykKK0VpbmFfQm9vbCBld2tfdmlld190ZXh0X21hdGNoZXNfdW5tYXJr
X2FsbChFdmFzX09iamVjdCAqbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8s
IHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHBy
aXYsIEVJTkFfRkFMU0UpOwpAQCAtMTQ5OCw3ICsxNDk4LDcgQEAgRWluYV9Cb29sIGV3a192aWV3
X3RleHRfbWF0Y2hlc191bm1hcmtfYWxsKEV2YXNfT2JqZWN0KiBvKQogICoKICAqIEByZXR1cm4g
QGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIEBjIEVJTkFfRkFMU0UgZm9yIGZhaWx1cmUuCiAgKi8K
LUVpbmFfQm9vbCBld2tfdmlld190ZXh0X21hdGNoZXNfaGlnaGxpZ2h0X3NldChFdmFzX09iamVj
dCogbywgRWluYV9Cb29sIGhpZ2hsaWdodCkKK0VpbmFfQm9vbCBld2tfdmlld190ZXh0X21hdGNo
ZXNfaGlnaGxpZ2h0X3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGhpZ2hsaWdodCkKIHsK
ICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBy
ZXR1cm4gZXdrX2ZyYW1lX3RleHRfbWF0Y2hlc19oaWdobGlnaHRfc2V0KHNkLT5tYWluX2ZyYW1l
LCBoaWdobGlnaHQpOwpAQCAtMTUxMSw3ICsxNTExLDcgQEAgRWluYV9Cb29sIGV3a192aWV3X3Rl
eHRfbWF0Y2hlc19oaWdobGlnaHRfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgaGlnaGxp
Z2gKICAqCiAgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiB0aGV5IGFyZSBoaWdobGlnaHRlZCwg
QGMgRUlOQV9GQUxTRSBvdGhlcndpc2UuCiAgKi8KLUVpbmFfQm9vbCBld2tfdmlld190ZXh0X21h
dGNoZXNfaGlnaGxpZ2h0X2dldChjb25zdCBFdmFzX09iamVjdCogbykKK0VpbmFfQm9vbCBld2tf
dmlld190ZXh0X21hdGNoZXNfaGlnaGxpZ2h0X2dldChjb25zdCBFdmFzX09iamVjdCAqbykKIHsK
ICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBy
ZXR1cm4gZXdrX2ZyYW1lX3RleHRfbWF0Y2hlc19oaWdobGlnaHRfZ2V0KHNkLT5tYWluX2ZyYW1l
KTsKQEAgLTE1MjUsNyArMTUyNSw3IEBAIEVpbmFfQm9vbCBld2tfdmlld190ZXh0X21hdGNoZXNf
aGlnaGxpZ2h0X2dldChjb25zdCBFdmFzX09iamVjdCogbykKICAqCiAgKiBAcmV0dXJuIEBjIEVJ
TkFfVFJVRSBvbiBzdWNjZXNzLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZS4KICAqLwotRWluYV9C
b29sIGV3a192aWV3X2VkaXRhYmxlX3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIGVkaXRh
YmxlKQorRWluYV9Cb29sIGV3a192aWV3X2VkaXRhYmxlX3NldChFdmFzX09iamVjdCAqbywgRWlu
YV9Cb29sIGVkaXRhYmxlKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2Qs
IEVJTkFfRkFMU0UpOwogICAgIHJldHVybiBld2tfZnJhbWVfZWRpdGFibGVfc2V0KHNkLT5tYWlu
X2ZyYW1lLCBlZGl0YWJsZSk7CkBAIC0xNTM4LDcgKzE1MzgsNyBAQCBFaW5hX0Jvb2wgZXdrX3Zp
ZXdfZWRpdGFibGVfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgZWRpdGFibGUpCiAgKgog
ICogQHJldHVybiBuZXdseSBhbGxvY2F0ZWQgc3RyaW5nIG9yIEBjIDAgaWYgbm90aGluZyBpcyBz
ZWxlY3RlZCBvciBmYWlsdXJlLgogICovCi1jaGFyKiBld2tfdmlld19zZWxlY3Rpb25fZ2V0KGNv
bnN0IEV2YXNfT2JqZWN0KiBvKQorY2hhciAqZXdrX3ZpZXdfc2VsZWN0aW9uX2dldChjb25zdCBF
dmFzX09iamVjdCAqbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAw
KTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIDApOwpAQCAtMTU0
OCw3ICsxNTQ4LDcgQEAgY2hhciogZXdrX3ZpZXdfc2VsZWN0aW9uX2dldChjb25zdCBFdmFzX09i
amVjdCogbykKICAgICByZXR1cm4gc3RyZHVwKHMuZGF0YSgpKTsKIH0KIAotc3RhdGljIEVpbmFf
Qm9vbCBfZXdrX3ZpZXdfZWRpdG9yX2NvbW1hbmQoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2
LCBjb25zdCBjaGFyKiBjb21tYW5kLCBjb25zdCBjaGFyKiB2YWx1ZSA9IDApCitzdGF0aWMgRWlu
YV9Cb29sIF9ld2tfdmlld19lZGl0b3JfY29tbWFuZChFd2tfVmlld19Qcml2YXRlX0RhdGEgKnBy
aXYsIGNvbnN0IGNoYXIgKmNvbW1hbmQsIGNvbnN0IGNoYXIgKnZhbHVlID0gMCkKIHsKICAgICBy
ZXR1cm4gcHJpdi0+cGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgp
LT5lZGl0b3IoKS0+Y29tbWFuZChXVEY6OlN0cmluZzo6ZnJvbVVURjgoY29tbWFuZCkpLmV4ZWN1
dGUodmFsdWUpOwogfQpAQCAtMTU2Miw3ICsxNTYyLDcgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdr
X3ZpZXdfZWRpdG9yX2NvbW1hbmQoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2LCBjb25zdCBj
aGEKICAqCiAgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiBvcGVyYXRpb24gd2FzIGV4ZWN1dGVk
LCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZS4KICAqLwotRWluYV9Cb29sIGV3a192aWV3X2V4ZWN1
dGVfZWRpdG9yX2NvbW1hbmQoRXZhc19PYmplY3QqIG8sIGNvbnN0IEV3a19FZGl0b3JfQ29tbWFu
ZCBjb21tYW5kLCBjb25zdCBjaGFyKiB2YWx1ZSkKK0VpbmFfQm9vbCBld2tfdmlld19leGVjdXRl
X2VkaXRvcl9jb21tYW5kKEV2YXNfT2JqZWN0ICpvLCBjb25zdCBFd2tfRWRpdG9yX0NvbW1hbmQg
Y29tbWFuZCwgY29uc3QgY2hhciAqdmFsdWUpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JF
VFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJO
KHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKQEAgLTE1OTksMTQgKzE1OTksMTQgQEAgRWluYV9Cb29s
IGV3a192aWV3X2V4ZWN1dGVfZWRpdG9yX2NvbW1hbmQoRXZhc19PYmplY3QqIG8sIGNvbnN0IEV3
a19FZGl0b3JfQ29tbWEKICAqCiAgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiBvcGVyYXRpb24g
d2FzIGV4ZWN1dGVkLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZS4KICAqLwotRWluYV9Cb29sIGV3
a192aWV3X2NvbnRleHRfbWVudV9mb3J3YXJkX2V2ZW50KEV2YXNfT2JqZWN0KiBvLCBjb25zdCBF
dmFzX0V2ZW50X01vdXNlX0Rvd24qIGV2KQorRWluYV9Cb29sIGV3a192aWV3X2NvbnRleHRfbWVu
dV9mb3J3YXJkX2V2ZW50KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX0Rv
d24gKmV2KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFM
U0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxT
RSk7CiAgICAgRWluYV9Cb29sIG1vdXNlX3ByZXNzX2hhbmRsZWQgPSBFSU5BX0ZBTFNFOwogCiAg
ICAgcHJpdi0+cGFnZS0+Y29udGV4dE1lbnVDb250cm9sbGVyKCktPmNsZWFyQ29udGV4dE1lbnUo
KTsKLSAgICBXZWJDb3JlOjpGcmFtZSogbWFpbl9mcmFtZSA9IHByaXYtPnBhZ2UtPm1haW5GcmFt
ZSgpOworICAgIFdlYkNvcmU6OkZyYW1lICptYWluX2ZyYW1lID0gcHJpdi0+cGFnZS0+bWFpbkZy
YW1lKCk7CiAgICAgRXZhc19Db29yZCB4LCB5OwogICAgIGV2YXNfb2JqZWN0X2dlb21ldHJ5X2dl
dChzZC0+c2VsZiwgJngsICZ5LCAwLCAwKTsKIApAQCAtMTY0MCw3ICsxNjQwLDcgQEAgRWluYV9C
b29sIGV3a192aWV3X2NvbnRleHRfbWVudV9mb3J3YXJkX2V2ZW50KEV2YXNfT2JqZWN0KiBvLCBj
b25zdCBFdmFzX0V2ZW50X00KICAqCiAgKiBAcmV0dXJuIHByb2dyZXMgdmFsdWUgZnJvbSAwLjAg
dG8gMS4wIG9yIC0xLjAgb24gZXJyb3IuCiAgKi8KLWRvdWJsZSBld2tfdmlld19sb2FkX3Byb2dy
ZXNzX2dldChjb25zdCBFdmFzX09iamVjdCogbykKK2RvdWJsZSBld2tfdmlld19sb2FkX3Byb2dy
ZXNzX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1Jf
UkVUVVJOKG8sIHNkLCAtMS4wKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2Qs
IHByaXYsIC0xLjApOwpAQCAtMTY1Niw3ICsxNjU2LDcgQEAgZG91YmxlIGV3a192aWV3X2xvYWRf
cHJvZ3Jlc3NfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogICoKICAqIEBzZWUgZXdrX2ZyYW1l
X3N0b3AoKQogICovCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc3RvcChFdmFzX09iamVjdCogbykKK0Vp
bmFfQm9vbCBld2tfdmlld19zdG9wKEV2YXNfT2JqZWN0ICpvKQogewogICAgIEVXS19WSUVXX1NE
X0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIHJldHVybiBld2tfZnJhbWVf
c3RvcChzZC0+bWFpbl9mcmFtZSk7CkBAIC0xNjcxLDcgKzE2NzEsNyBAQCBFaW5hX0Jvb2wgZXdr
X3ZpZXdfc3RvcChFdmFzX09iamVjdCogbykKICAqCiAgKiBAc2VlIGV3a19mcmFtZV9yZWxvYWQo
KQogICovCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfcmVsb2FkKEV2YXNfT2JqZWN0KiBvKQorRWluYV9C
b29sIGV3a192aWV3X3JlbG9hZChFdmFzX09iamVjdCAqbykKIHsKICAgICBFV0tfVklFV19TRF9H
RVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICByZXR1cm4gZXdrX2ZyYW1lX3Jl
bG9hZChzZC0+bWFpbl9mcmFtZSk7CkBAIC0xNjg2LDcgKzE2ODYsNyBAQCBFaW5hX0Jvb2wgZXdr
X3ZpZXdfcmVsb2FkKEV2YXNfT2JqZWN0KiBvKQogICoKICAqIEBzZWUgZXdrX2ZyYW1lX3JlbG9h
ZF9mdWxsKCkKICAqLwotRWluYV9Cb29sIGV3a192aWV3X3JlbG9hZF9mdWxsKEV2YXNfT2JqZWN0
KiBvKQorRWluYV9Cb29sIGV3a192aWV3X3JlbG9hZF9mdWxsKEV2YXNfT2JqZWN0ICpvKQogewog
ICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIHJl
dHVybiBld2tfZnJhbWVfcmVsb2FkX2Z1bGwoc2QtPm1haW5fZnJhbWUpOwpAQCAtMTcwMSw3ICsx
NzAxLDcgQEAgRWluYV9Cb29sIGV3a192aWV3X3JlbG9hZF9mdWxsKEV2YXNfT2JqZWN0KiBvKQog
ICoKICAqIEBzZWUgZXdrX2ZyYW1lX2JhY2soKQogICovCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfYmFj
ayhFdmFzX09iamVjdCogbykKK0VpbmFfQm9vbCBld2tfdmlld19iYWNrKEV2YXNfT2JqZWN0ICpv
KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwog
ICAgIHJldHVybiBld2tfZnJhbWVfYmFjayhzZC0+bWFpbl9mcmFtZSk7CkBAIC0xNzE2LDcgKzE3
MTYsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfYmFjayhFdmFzX09iamVjdCogbykKICAqCiAgKiBA
c2VlIGV3a19mcmFtZV9mb3J3YXJkKCkKICAqLwotRWluYV9Cb29sIGV3a192aWV3X2ZvcndhcmQo
RXZhc19PYmplY3QqIG8pCitFaW5hX0Jvb2wgZXdrX3ZpZXdfZm9yd2FyZChFdmFzX09iamVjdCAq
bykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsK
ICAgICByZXR1cm4gZXdrX2ZyYW1lX2ZvcndhcmQoc2QtPm1haW5fZnJhbWUpOwpAQCAtMTczMyw3
ICsxNzMzLDcgQEAgRWluYV9Cb29sIGV3a192aWV3X2ZvcndhcmQoRXZhc19PYmplY3QqIG8pCiAg
KgogICogQHNlZSBld2tfZnJhbWVfbmF2aWdhdGUoKQogICovCi1FaW5hX0Jvb2wgZXdrX3ZpZXdf
bmF2aWdhdGUoRXZhc19PYmplY3QqIG8sIGludCBzdGVwcykKK0VpbmFfQm9vbCBld2tfdmlld19u
YXZpZ2F0ZShFdmFzX09iamVjdCAqbywgaW50IHN0ZXBzKQogewogICAgIEVXS19WSUVXX1NEX0dF
VF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIHJldHVybiBld2tfZnJhbWVfbmF2
aWdhdGUoc2QtPm1haW5fZnJhbWUsIHN0ZXBzKTsKQEAgLTE3NDgsNyArMTc0OCw3IEBAIEVpbmFf
Qm9vbCBld2tfdmlld19uYXZpZ2F0ZShFdmFzX09iamVjdCogbywgaW50IHN0ZXBzKQogICoKICAq
IEBzZWUgZXdrX3ZpZXdfbmF2aWdhdGVfcG9zc2libGUoKQogICovCi1FaW5hX0Jvb2wgZXdrX3Zp
ZXdfYmFja19wb3NzaWJsZShFdmFzX09iamVjdCogbykKK0VpbmFfQm9vbCBld2tfdmlld19iYWNr
X3Bvc3NpYmxlKEV2YXNfT2JqZWN0ICpvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRV
Uk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIHJldHVybiBld2tfZnJhbWVfYmFja19wb3NzaWJs
ZShzZC0+bWFpbl9mcmFtZSk7CkBAIC0xNzYzLDcgKzE3NjMsNyBAQCBFaW5hX0Jvb2wgZXdrX3Zp
ZXdfYmFja19wb3NzaWJsZShFdmFzX09iamVjdCogbykKICAqCiAgKiBAc2VlIGV3a192aWV3X25h
dmlnYXRlX3Bvc3NpYmxlKCkKICAqLwotRWluYV9Cb29sIGV3a192aWV3X2ZvcndhcmRfcG9zc2li
bGUoRXZhc19PYmplY3QqIG8pCitFaW5hX0Jvb2wgZXdrX3ZpZXdfZm9yd2FyZF9wb3NzaWJsZShF
dmFzX09iamVjdCAqbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBF
SU5BX0ZBTFNFKTsKICAgICByZXR1cm4gZXdrX2ZyYW1lX2ZvcndhcmRfcG9zc2libGUoc2QtPm1h
aW5fZnJhbWUpOwpAQCAtMTc3OCw3ICsxNzc4LDcgQEAgRWluYV9Cb29sIGV3a192aWV3X2Zvcndh
cmRfcG9zc2libGUoRXZhc19PYmplY3QqIG8pCiAgKgogICogQHJldHVybiBAYyBFSU5BX1RSVUUg
aWYgcG9zc2libGUsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgogICovCi1FaW5hX0Jvb2wgZXdr
X3ZpZXdfbmF2aWdhdGVfcG9zc2libGUoRXZhc19PYmplY3QqIG8sIGludCBzdGVwcykKK0VpbmFf
Qm9vbCBld2tfdmlld19uYXZpZ2F0ZV9wb3NzaWJsZShFdmFzX09iamVjdCAqbywgaW50IHN0ZXBz
KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwog
ICAgIHJldHVybiBld2tfZnJhbWVfbmF2aWdhdGVfcG9zc2libGUoc2QtPm1haW5fZnJhbWUsIHN0
ZXBzKTsKQEAgLTE3OTEsNyArMTc5MSw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19uYXZpZ2F0ZV9w
b3NzaWJsZShFdmFzX09iamVjdCogbywgaW50IHN0ZXBzKQogICoKICAqIEByZXR1cm4gQGMgRUlO
QV9UUlVFIGlmIHZpZXcga2VlcHMgaGlzdG9yeSwgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UuCiAg
Ki8KLUVpbmFfQm9vbCBld2tfdmlld19oaXN0b3J5X2VuYWJsZV9nZXQoY29uc3QgRXZhc19PYmpl
Y3QqIG8pCitFaW5hX0Jvb2wgZXdrX3ZpZXdfaGlzdG9yeV9lbmFibGVfZ2V0KGNvbnN0IEV2YXNf
T2JqZWN0ICpvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFf
RkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9G
QUxTRSk7CkBAIC0xODA3LDcgKzE4MDcsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfaGlzdG9yeV9l
bmFibGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogICoKICAqIEByZXR1cm4gQGMgRUlOQV9U
UlVFIG9uIHN1Y2Nlc3MsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgogICovCi1FaW5hX0Jvb2wg
ZXdrX3ZpZXdfaGlzdG9yeV9lbmFibGVfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgZW5h
YmxlKQorRWluYV9Cb29sIGV3a192aWV3X2hpc3RvcnlfZW5hYmxlX3NldChFdmFzX09iamVjdCAq
bywgRWluYV9Cb29sIGVuYWJsZSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8s
IHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHBy
aXYsIEVJTkFfRkFMU0UpOwpAQCAtMTgzMSw3ICsxODMxLDcgQEAgRWluYV9Cb29sIGV3a192aWV3
X2hpc3RvcnlfZW5hYmxlX3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIGVuYWJsZSkKICAq
CiAgKiBAc2VlIGV3a192aWV3X2hpc3RvcnlfZW5hYmxlX3NldCgpCiAgKi8KLUV3a19IaXN0b3J5
KiBld2tfdmlld19oaXN0b3J5X2dldChjb25zdCBFdmFzX09iamVjdCogbykKK0V3a19IaXN0b3J5
KiBld2tfdmlld19oaXN0b3J5X2dldChjb25zdCBFdmFzX09iamVjdCAqbykKIHsKICAgICBFV0tf
VklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAwKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9P
Ul9SRVRVUk4oc2QsIHByaXYsIDApOwpAQCAtMTg0OSw3ICsxODQ5LDcgQEAgRXdrX0hpc3Rvcnkq
IGV3a192aWV3X2hpc3RvcnlfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogICoKICAqIEByZXR1
cm4gY3VycmVudCB6b29tIGxldmVsIGluIHVzZSBvciAtMS4wIG9uIGVycm9yLgogICovCi1mbG9h
dCBld2tfdmlld196b29tX2dldChjb25zdCBFdmFzX09iamVjdCogbykKK2Zsb2F0IGV3a192aWV3
X3pvb21fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9P
Ul9SRVRVUk4obywgc2QsIC0xLjApOwogICAgIHJldHVybiBld2tfZnJhbWVfem9vbV9nZXQoc2Qt
Pm1haW5fZnJhbWUpOwpAQCAtMTg2NSw3ICsxODY1LDcgQEAgZmxvYXQgZXdrX3ZpZXdfem9vbV9n
ZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiAgKgogICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24g
c3VjY2VzcywgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UuCiAgKi8KLUVpbmFfQm9vbCBld2tfdmll
d196b29tX3NldChFdmFzX09iamVjdCogbywgZmxvYXQgem9vbSwgRXZhc19Db29yZCBjeCwgRXZh
c19Db29yZCBjeSkKK0VpbmFfQm9vbCBld2tfdmlld196b29tX3NldChFdmFzX09iamVjdCAqbywg
ZmxvYXQgem9vbSwgRXZhc19Db29yZCBjeCwgRXZhc19Db29yZCBjeSkKIHsKICAgICBFV0tfVklF
V19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklW
X0dFVChzZCwgcHJpdik7CkBAIC0xODkxLDEzICsxODkxLDEzIEBAIEVpbmFfQm9vbCBld2tfdmll
d196b29tX3NldChFdmFzX09iamVjdCogbywgZmxvYXQgem9vbSwgRXZhc19Db29yZCBjeCwgRXZh
c19Db29yCiAgICAgcmV0dXJuIHNkLT5hcGktPnpvb21fc2V0KHNkLCB6b29tLCBjeCwgY3kpOwog
fQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV93ZWFrX3Ntb290aF9zY2FsZV9nZXQoY29uc3Qg
RXZhc19PYmplY3QqIG8pCitFaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV93ZWFrX3Ntb290aF9zY2Fs
ZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JF
VFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgcmV0dXJuIHNkLT56b29tX3dlYWtfc21vb3Ro
X3NjYWxlOwogfQogCi12b2lkIGV3a192aWV3X3pvb21fd2Vha19zbW9vdGhfc2NhbGVfc2V0KEV2
YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgc21vb3RoX3NjYWxlKQordm9pZCBld2tfdmlld196b29t
X3dlYWtfc21vb3RoX3NjYWxlX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIHNtb290aF9z
Y2FsZSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkKTsKICAgICBzbW9v
dGhfc2NhbGUgPSAhIXNtb290aF9zY2FsZTsKQEAgLTE5MzUsNyArMTkzNSw3IEBAIHZvaWQgZXdr
X3ZpZXdfem9vbV93ZWFrX3Ntb290aF9zY2FsZV9zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9v
bCBzbW9vdGhfc2NhbGUpCiAgKgogICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2Vzcywg
QGMgRUlOQV9GQUxTRSBvdGhlcndpc2UuCiAgKi8KLUVpbmFfQm9vbCBld2tfdmlld196b29tX3dl
YWtfc2V0KEV2YXNfT2JqZWN0KiBvLCBmbG9hdCB6b29tLCBFdmFzX0Nvb3JkIGN4LCBFdmFzX0Nv
b3JkIGN5KQorRWluYV9Cb29sIGV3a192aWV3X3pvb21fd2Vha19zZXQoRXZhc19PYmplY3QgKm8s
IGZsb2F0IHpvb20sIEV2YXNfQ29vcmQgY3gsIEV2YXNfQ29vcmQgY3kpCiB7CiAgICAgRVdLX1ZJ
RVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJ
Vl9HRVQoc2QsIHByaXYpOwpAQCAtMTk4MSw3ICsxOTgxLDcgQEAgRWluYV9Cb29sIGV3a192aWV3
X3pvb21fd2Vha19zZXQoRXZhc19PYmplY3QqIG8sIGZsb2F0IHpvb20sIEV2YXNfQ29vcmQgY3gs
IEV2YXMKICAqIEBzZWUgZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9tYXJrX2VuZCgpCiAgKiBAc2Vl
IGV3a192aWV3X3pvb21fYW5pbWF0ZWRfbWFya19jdXJyZW50KCkKICAqLwotRWluYV9Cb29sIGV3
a192aWV3X3pvb21fYW5pbWF0ZWRfbWFya19zdGFydChFdmFzX09iamVjdCogbywgZmxvYXQgem9v
bSkKK0VpbmFfQm9vbCBld2tfdmlld196b29tX2FuaW1hdGVkX21hcmtfc3RhcnQoRXZhc19PYmpl
Y3QgKm8sIGZsb2F0IHpvb20pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBz
ZCwgRUlOQV9GQUxTRSk7CiAgICAgc2QtPmFuaW1hdGVkX3pvb20uem9vbS5zdGFydCA9IHpvb207
CkBAIC0yMDA2LDcgKzIwMDYsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9t
YXJrX3N0YXJ0KEV2YXNfT2JqZWN0KiBvLCBmbG9hdCB6b29tKQogICogQHNlZSBld2tfdmlld196
b29tX2FuaW1hdGVkX21hcmtfc3RhcnQoKQogICogQHNlZSBld2tfdmlld196b29tX2FuaW1hdGVk
X21hcmtfY3VycmVudCgpCiAgKi8KLUVpbmFfQm9vbCBld2tfdmlld196b29tX2FuaW1hdGVkX21h
cmtfZW5kKEV2YXNfT2JqZWN0KiBvLCBmbG9hdCB6b29tKQorRWluYV9Cb29sIGV3a192aWV3X3pv
b21fYW5pbWF0ZWRfbWFya19lbmQoRXZhc19PYmplY3QgKm8sIGZsb2F0IHpvb20pCiB7CiAgICAg
RVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgc2QtPmFu
aW1hdGVkX3pvb20uem9vbS5lbmQgPSB6b29tOwpAQCAtMjAzMSw3ICsyMDMxLDcgQEAgRWluYV9C
b29sIGV3a192aWV3X3pvb21fYW5pbWF0ZWRfbWFya19lbmQoRXZhc19PYmplY3QqIG8sIGZsb2F0
IHpvb20pCiAgKiBAc2VlIGV3a192aWV3X3pvb21fYW5pbWF0ZWRfbWFya19zdGFydCgpCiAgKiBA
c2VlIGV3a192aWV3X3pvb21fYW5pbWF0ZWRfbWFya19lbmQoKQogICovCi1FaW5hX0Jvb2wgZXdr
X3ZpZXdfem9vbV9hbmltYXRlZF9tYXJrX2N1cnJlbnQoRXZhc19PYmplY3QqIG8sIGZsb2F0IHpv
b20pCitFaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9tYXJrX2N1cnJlbnQoRXZhc19P
YmplY3QgKm8sIGZsb2F0IHpvb20pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihv
LCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgc2QtPmFuaW1hdGVkX3pvb20uem9vbS5jdXJyZW50ID0g
em9vbTsKQEAgLTIwNTAsNyArMjA1MCw3IEBAIEVpbmFfQm9vbCBld2tfdmlld196b29tX2FuaW1h
dGVkX21hcmtfY3VycmVudChFdmFzX09iamVjdCogbywgZmxvYXQgem9vbSkKICAqIEBzZWUgZXdr
X3ZpZXdfem9vbV9hbmltYXRlZF9tYXJrX2N1cnJlbnQoKQogICogQHNlZSBld2tfdmlld196b29t
X3dlYWtfc2V0KCkKICAqLwotRWluYV9Cb29sIGV3a192aWV3X3pvb21fYW5pbWF0ZWRfbWFya19z
dG9wKEV2YXNfT2JqZWN0KiBvKQorRWluYV9Cb29sIGV3a192aWV3X3pvb21fYW5pbWF0ZWRfbWFy
a19zdG9wKEV2YXNfT2JqZWN0ICpvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4o
bywgc2QsIEVJTkFfRkFMU0UpOwogICAgIF9ld2tfdmlld196b29tX2FuaW1hdGVkX21hcmtfc3Rv
cChzZCk7CkBAIC0yMDc5LDcgKzIwNzksNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV9hbmlt
YXRlZF9tYXJrX3N0b3AoRXZhc19PYmplY3QqIG8pCiAgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBp
ZiBhbmltYXRpb24gd2lsbCBiZSBzdGFydGVkLCBAYyBFSU5BX0ZBTFNFIGlmIG5vdAogICogICAg
ICAgICAgICBiZWNhdXNlIHpvb20gaXMgdG9vIHNtYWxsL2JpZy4KICAqLwotRWluYV9Cb29sIGV3
a192aWV3X3pvb21fYW5pbWF0ZWRfc2V0KEV2YXNfT2JqZWN0KiBvLCBmbG9hdCB6b29tLCBmbG9h
dCBkdXJhdGlvbiwgRXZhc19Db29yZCBjeCwgRXZhc19Db29yZCBjeSkKK0VpbmFfQm9vbCBld2tf
dmlld196b29tX2FuaW1hdGVkX3NldChFdmFzX09iamVjdCAqbywgZmxvYXQgem9vbSwgZmxvYXQg
ZHVyYXRpb24sIEV2YXNfQ29vcmQgY3gsIEV2YXNfQ29vcmQgY3kpCiB7CiAgICAgZG91YmxlIG5v
dzsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKQEAg
LTIxMzUsNyArMjEzNSw3IEBAIEVpbmFfQm9vbCBld2tfdmlld196b29tX2FuaW1hdGVkX3NldChF
dmFzX09iamVjdCogbywgZmxvYXQgem9vbSwgZmxvYXQgZHVyYXRpb24sCiAgKgogICogQHJldHVy
biBAYyBFSU5BX1RSVUUgaWYganVzdCB0ZXh0IGFyZSBzY2FsZWQsIEBjIEVJTkFfRkFMU0Ugb3Ro
ZXJ3aXNlLgogICovCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV90ZXh0X29ubHlfZ2V0KGNvbnN0
IEV2YXNfT2JqZWN0KiBvKQorRWluYV9Cb29sIGV3a192aWV3X3pvb21fdGV4dF9vbmx5X2dldChj
b25zdCBFdmFzX09iamVjdCAqbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8s
IHNkLCBFSU5BX0ZBTFNFKTsKICAgICByZXR1cm4gZXdrX2ZyYW1lX3pvb21fdGV4dF9vbmx5X2dl
dChzZC0+bWFpbl9mcmFtZSk7CkBAIC0yMTQ5LDcgKzIxNDksNyBAQCBFaW5hX0Jvb2wgZXdrX3Zp
ZXdfem9vbV90ZXh0X29ubHlfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogICoKICAqIEByZXR1
cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgogICov
Ci1FaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV90ZXh0X29ubHlfc2V0KEV2YXNfT2JqZWN0KiBvLCBF
aW5hX0Jvb2wgc2V0dGluZykKK0VpbmFfQm9vbCBld2tfdmlld196b29tX3RleHRfb25seV9zZXQo
RXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBzZXR0aW5nKQogewogICAgIEVXS19WSUVXX1NEX0dF
VF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIHJldHVybiBld2tfZnJhbWVfem9v
bV90ZXh0X29ubHlfc2V0KHNkLT5tYWluX2ZyYW1lLCBzZXR0aW5nKTsKQEAgLTIxODMsNyArMjE4
Myw3IEBAIEVpbmFfQm9vbCBld2tfdmlld196b29tX3RleHRfb25seV9zZXQoRXZhc19PYmplY3Qq
IG8sIEVpbmFfQm9vbCBzZXR0aW5nKQogICoKICAqIEBzZWUgZXdrX3ZpZXdfcHJlX3JlbmRlcl9j
YW5jZWwoKQogICovCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfcHJlX3JlbmRlcl9yZWdpb24oRXZhc19P
YmplY3QqIG8sIEV2YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5LCBFdmFzX0Nvb3JkIHcsIEV2YXNf
Q29vcmQgaCwgZmxvYXQgem9vbSkKK0VpbmFfQm9vbCBld2tfdmlld19wcmVfcmVuZGVyX3JlZ2lv
bihFdmFzX09iamVjdCAqbywgRXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkIHksIEV2YXNfQ29vcmQg
dywgRXZhc19Db29yZCBoLCBmbG9hdCB6b29tKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9S
RVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVS
TihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0yMjQxLDcgKzIyNDEsNyBAQCBFaW5hX0Jvb2wg
ZXdrX3ZpZXdfcHJlX3JlbmRlcl9yZWdpb24oRXZhc19PYmplY3QqIG8sIEV2YXNfQ29vcmQgeCwg
RXZhc19Db29yZCB5LAogICoKICAqIEBzZWUgZXdrX3ZpZXdfcHJlX3JlbmRlcl9yZWdpb24oKQog
ICovCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfcHJlX3JlbmRlcl9yZWxhdGl2ZV9yYWRpdXMoRXZhc19P
YmplY3QqIG8sIHVuc2lnbmVkIGludCBuKQorRWluYV9Cb29sIGV3a192aWV3X3ByZV9yZW5kZXJf
cmVsYXRpdmVfcmFkaXVzKEV2YXNfT2JqZWN0ICpvLCB1bnNpZ25lZCBpbnQgbikKIHsKICAgICBF
V0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklF
V19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwpAQCAtMjI3NCw3ICsy
Mjc0LDcgQEAgdW5zaWduZWQgaW50IGV3a192aWV3X2ltaF9nZXQoRXZhc19PYmplY3QgKm8pCiAg
KgogICogQHBhcmFtIG8gdmlldyB0byBjbGVhciBwcmUtcmVuZGVyIHJlcXVlc3RzLgogICovCi12
b2lkIGV3a192aWV3X3ByZV9yZW5kZXJfY2FuY2VsKEV2YXNfT2JqZWN0KiBvKQordm9pZCBld2tf
dmlld19wcmVfcmVuZGVyX2NhbmNlbChFdmFzX09iamVjdCAqbykKIHsKICAgICBFV0tfVklFV19T
RF9HRVRfT1JfUkVUVVJOKG8sIHNkKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihz
ZC0+YXBpLT5wcmVfcmVuZGVyX2NhbmNlbCk7CkBAIC0yMzExLDE0ICsyMzExLDE0IEBAIEVpbmFf
Qm9vbCBld2tfdmlld19kaXNhYmxlX3JlbmRlcihjb25zdCBFdmFzX09iamVjdCAqbykKICAgICBy
ZXR1cm4gc2QtPmFwaS0+ZGlzYWJsZV9yZW5kZXIoc2QpOwogfQogCi1jb25zdCBjaGFyKiBld2tf
dmlld19zZXR0aW5nX3VzZXJfYWdlbnRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQorY29uc3Qg
Y2hhciAqZXdrX3ZpZXdfc2V0dGluZ191c2VyX2FnZW50X2dldChjb25zdCBFdmFzX09iamVjdCAq
bykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAwKTsKICAgICBFV0tf
VklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIDApOwogICAgIHJldHVybiBwcml2LT5z
ZXR0aW5ncy51c2VyX2FnZW50OwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ191c2Vy
X2FnZW50X3NldChFdmFzX09iamVjdCogbywgY29uc3QgY2hhciogdXNlcl9hZ2VudCkKK0VpbmFf
Qm9vbCBld2tfdmlld19zZXR0aW5nX3VzZXJfYWdlbnRfc2V0KEV2YXNfT2JqZWN0ICpvLCBjb25z
dCBjaGFyICp1c2VyX2FnZW50KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywg
c2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJp
diwgRUlOQV9GQUxTRSk7CkBAIC0yMzI5LDE0ICsyMzI5LDE0IEBAIEVpbmFfQm9vbCBld2tfdmll
d19zZXR0aW5nX3VzZXJfYWdlbnRfc2V0KEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFyKiB1c2Vy
X2FnZW50CiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotY29uc3QgY2hhciogZXdrX3ZpZXdf
c2V0dGluZ191c2VyX3N0eWxlc2hlZXRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQorY29uc3Qg
Y2hhciAqZXdrX3ZpZXdfc2V0dGluZ191c2VyX3N0eWxlc2hlZXRfZ2V0KGNvbnN0IEV2YXNfT2Jq
ZWN0ICpvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIDApOwogICAg
IEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgMCk7CiAgICAgcmV0dXJuIHBy
aXYtPnNldHRpbmdzLnVzZXJfc3R5bGVzaGVldDsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3Nl
dHRpbmdfdXNlcl9zdHlsZXNoZWV0X3NldChFdmFzX09iamVjdCogbywgY29uc3QgY2hhciogdXJp
KQorRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfdXNlcl9zdHlsZXNoZWV0X3NldChFdmFzX09i
amVjdCAqbywgY29uc3QgY2hhciAqdXJpKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRV
Uk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihz
ZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0yMzQ3LDE0ICsyMzQ3LDE0IEBAIEVpbmFfQm9vbCBl
d2tfdmlld19zZXR0aW5nX3VzZXJfc3R5bGVzaGVldF9zZXQoRXZhc19PYmplY3QqIG8sIGNvbnN0
IGNoYXIqIHVyaSkKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1FaW5hX0Jvb2wgZXdrX3Zp
ZXdfc2V0dGluZ19hdXRvX2xvYWRfaW1hZ2VzX2dldChjb25zdCBFdmFzX09iamVjdCogbykKK0Vp
bmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2F1dG9fbG9hZF9pbWFnZXNfZ2V0KGNvbnN0IEV2YXNf
T2JqZWN0ICpvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFf
RkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9G
QUxTRSk7CiAgICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLmF1dG9fbG9hZF9pbWFnZXM7CiB9CiAK
LUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2F1dG9fbG9hZF9pbWFnZXNfc2V0KEV2YXNfT2Jq
ZWN0KiBvLCBFaW5hX0Jvb2wgYXV0b21hdGljKQorRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdf
YXV0b19sb2FkX2ltYWdlc19zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBhdXRvbWF0aWMp
CiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAg
ICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKQEAg
LTIzNjYsMTQgKzIzNjYsMTQgQEAgRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfYXV0b19sb2Fk
X2ltYWdlc19zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCBhdXRvbWEKICAgICByZXR1cm4g
RUlOQV9UUlVFOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19hdXRvX3Nocmlua19p
bWFnZXNfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQorRWluYV9Cb29sIGV3a192aWV3X3NldHRp
bmdfYXV0b19zaHJpbmtfaW1hZ2VzX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKIHsKICAgICBF
V0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklF
V19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwogICAgIHJldHVybiBw
cml2LT5zZXR0aW5ncy5hdXRvX3Nocmlua19pbWFnZXM7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmll
d19zZXR0aW5nX2F1dG9fc2hyaW5rX2ltYWdlc19zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9v
bCBhdXRvbWF0aWMpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19hdXRvX3Nocmlua19pbWFn
ZXNfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgYXV0b21hdGljKQogewogICAgIEVXS19W
SUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BS
SVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0yMzkzLDcgKzIzOTMs
NyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19hdXRvX3Nocmlua19pbWFnZXNfc2V0KEV2
YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgYXV0bwogICogQHJldHVybiBFSU5BX1RSVUUgaWYgdmll
dyBjYW4gYmUgcmVzaXplZCwgRUlOQV9GQUxTRQogICogICAgICAgICBvdGhlcndpc2UgKGVycm9y
cywgY2Fubm90IGJlIHJlc2l6ZWQpLgogICovCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19l
bmFibGVfYXV0b19yZXNpemVfd2luZG93X2dldChjb25zdCBFdmFzX09iamVjdCogbykKK0VpbmFf
Qm9vbCBld2tfdmlld19zZXR0aW5nX2VuYWJsZV9hdXRvX3Jlc2l6ZV93aW5kb3dfZ2V0KGNvbnN0
IEV2YXNfT2JqZWN0ICpvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2Qs
IEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwg
RUlOQV9GQUxTRSk7CkBAIC0yNDEwLDcgKzI0MTAsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0
dGluZ19lbmFibGVfYXV0b19yZXNpemVfd2luZG93X2dldChjb25zdCBFdmFzX09iamVjdCogbykK
ICAqIEByZXR1cm4gRUlOQV9UUlVFIGlmIGF1dG9fcmVzaXplX3dpbmRvdyBzdGF0dXMgc2V0LCBF
SU5BX0ZBTFNFCiAgKiAgICAgICAgIG90aGVyd2lzZSAoZXJyb3JzKS4KICAqLwotRWluYV9Cb29s
IGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2F1dG9fcmVzaXplX3dpbmRvd19zZXQoRXZhc19PYmpl
Y3QqIG8sIEVpbmFfQm9vbCByZXNpemFibGUpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19l
bmFibGVfYXV0b19yZXNpemVfd2luZG93X3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIHJl
c2l6YWJsZSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZB
TFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFM
U0UpOwpAQCAtMjQxOCwxNCArMjQxOCwxNCBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19l
bmFibGVfYXV0b19yZXNpemVfd2luZG93X3NldChFdmFzX09iamVjdCogbywgRWluYV9CbwogICAg
IHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuYWJs
ZV9zY3JpcHRzX2dldChjb25zdCBFdmFzX09iamVjdCogbykKK0VpbmFfQm9vbCBld2tfdmlld19z
ZXR0aW5nX2VuYWJsZV9zY3JpcHRzX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKIHsKICAgICBF
V0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklF
V19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwogICAgIHJldHVybiBw
cml2LT5zZXR0aW5ncy5lbmFibGVfc2NyaXB0czsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3Nl
dHRpbmdfZW5hYmxlX3NjcmlwdHNfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgZW5hYmxl
KQorRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX3NjcmlwdHNfc2V0KEV2YXNfT2Jq
ZWN0ICpvLCBFaW5hX0Jvb2wgZW5hYmxlKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRV
Uk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihz
ZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0yNDM3LDE0ICsyNDM3LDE0IEBAIEVpbmFfQm9vbCBl
d2tfdmlld19zZXR0aW5nX2VuYWJsZV9zY3JpcHRzX3NldChFdmFzX09iamVjdCogbywgRWluYV9C
b29sIGVuYWJsZSkKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1FaW5hX0Jvb2wgZXdrX3Zp
ZXdfc2V0dGluZ19lbmFibGVfcGx1Z2luc19nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCitFaW5h
X0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfcGx1Z2luc19nZXQoY29uc3QgRXZhc19PYmpl
Y3QgKm8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxT
RSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNF
KTsKICAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MuZW5hYmxlX3BsdWdpbnM7CiB9CiAKLUVpbmFf
Qm9vbCBld2tfdmlld19zZXR0aW5nX2VuYWJsZV9wbHVnaW5zX3NldChFdmFzX09iamVjdCogbywg
RWluYV9Cb29sIGVuYWJsZSkKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuYWJsZV9wbHVn
aW5zX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGVuYWJsZSkKIHsKICAgICBFV0tfVklF
V19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklW
X0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwpAQCAtMjQ2NCw3ICsyNDY0LDcg
QEAgRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX3BsdWdpbnNfc2V0KEV2YXNfT2Jq
ZWN0KiBvLCBFaW5hX0Jvb2wgZW5hYmxlKQogICogQHJldHVybiBFSU5BX1RSVUUgaWYgZmxhdHRl
bmluZyBpcyBlbmFibGVkLCBFSU5BX0ZBTFNFCiAgKiAgICAgICAgIG90aGVyd2lzZSAoZXJyb3Jz
LCBmbGF0dGVuaW5nIGRpc2FibGVkKS4KICAqLwotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdf
ZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmdfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQorRWluYV9C
b29sIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmdfZ2V0KGNvbnN0IEV2
YXNfT2JqZWN0ICpvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJ
TkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlO
QV9GQUxTRSk7CkBAIC0yNDc5LDcgKzI0NzksNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGlu
Z19lbmFibGVfZnJhbWVfZmxhdHRlbmluZ19nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiAgKiBA
cmV0dXJuIEVJTkFfVFJVRSBpZiBmbGF0dGVuaW5nIHN0YXR1cyBzZXQsIEVJTkFfRkFMU0UKICAq
ICAgICAgICAgb3RoZXJ3aXNlIChlcnJvcnMpLgogICovCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0
dGluZ19lbmFibGVfZnJhbWVfZmxhdHRlbmluZ19zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9v
bCBlbmFibGUpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfZnJhbWVfZmxhdHRl
bmluZ19zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBlbmFibGUpCiB7CiAgICAgRVdLX1ZJ
RVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJ
Vl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKQEAgLTI0OTEsMTQgKzI0OTEs
MTQgQEAgRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmdf
c2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQog
Ci1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19zY3JpcHRzX3dpbmRvd19vcGVuX2dldChjb25z
dCBFdmFzX09iamVjdCogbykKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3NjcmlwdHNfd2lu
ZG93X29wZW5fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQogewogICAgIEVXS19WSUVXX1NEX0dF
VF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09S
X1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CiAgICAgcmV0dXJuIHByaXYtPnNldHRpbmdz
LnNjcmlwdHNfd2luZG93X29wZW47CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3Nj
cmlwdHNfd2luZG93X29wZW5fc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgYWxsb3cpCitF
aW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19zY3JpcHRzX3dpbmRvd19vcGVuX3NldChFdmFzX09i
amVjdCAqbywgRWluYV9Cb29sIGFsbG93KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRV
Uk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihz
ZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0yNTEwLDE0ICsyNTEwLDE0IEBAIEVpbmFfQm9vbCBl
d2tfdmlld19zZXR0aW5nX3NjcmlwdHNfd2luZG93X29wZW5fc2V0KEV2YXNfT2JqZWN0KiBvLCBF
aW5hX0Jvb2wgYWxsCiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotRWluYV9Cb29sIGV3a192
aWV3X3NldHRpbmdfcmVzaXphYmxlX3RleHRhcmVhc19nZXQoY29uc3QgRXZhc19PYmplY3QqIG8p
CitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19yZXNpemFibGVfdGV4dGFyZWFzX2dldChjb25z
dCBFdmFzX09iamVjdCAqbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNk
LCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYs
IEVJTkFfRkFMU0UpOwogICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5yZXNpemFibGVfdGV4dGFy
ZWFzOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19yZXNpemFibGVfdGV4dGFyZWFz
X3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIGVuYWJsZSkKK0VpbmFfQm9vbCBld2tfdmll
d19zZXR0aW5nX3Jlc2l6YWJsZV90ZXh0YXJlYXNfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jv
b2wgZW5hYmxlKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFf
RkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9G
QUxTRSk7CkBAIC0yNTI5LDE0ICsyNTI5LDE0IEBAIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5n
X3Jlc2l6YWJsZV90ZXh0YXJlYXNfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgZW5hCiAg
ICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfcHJp
dmF0ZV9icm93c2luZ19nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCitFaW5hX0Jvb2wgZXdrX3Zp
ZXdfc2V0dGluZ19wcml2YXRlX2Jyb3dzaW5nX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKIHsK
ICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBF
V0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwogICAgIHJl
dHVybiBwcml2LT5zZXR0aW5ncy5wcml2YXRlX2Jyb3dzaW5nOwogfQogCi1FaW5hX0Jvb2wgZXdr
X3ZpZXdfc2V0dGluZ19wcml2YXRlX2Jyb3dzaW5nX3NldChFdmFzX09iamVjdCogbywgRWluYV9C
b29sIGVuYWJsZSkKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3ByaXZhdGVfYnJvd3Npbmdf
c2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgZW5hYmxlKQogewogICAgIEVXS19WSUVXX1NE
X0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VU
X09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0yNTQ4LDE0ICsyNTQ4LDE0IEBA
IEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3ByaXZhdGVfYnJvd3Npbmdfc2V0KEV2YXNfT2Jq
ZWN0KiBvLCBFaW5hX0Jvb2wgZW5hYmxlCiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotRWlu
YV9Cb29sIGV3a192aWV3X3NldHRpbmdfb2ZmbGluZV9hcHBfY2FjaGVfZ2V0KGNvbnN0IEV2YXNf
T2JqZWN0KiBvKQorRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfb2ZmbGluZV9hcHBfY2FjaGVf
Z2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRV
Uk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihz
ZCwgcHJpdiwgRUlOQV9GQUxTRSk7CiAgICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLm9mZmxpbmVf
YXBwX2NhY2hlOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19vZmZsaW5lX2FwcF9j
YWNoZV9zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCBlbmFibGUpCitFaW5hX0Jvb2wgZXdr
X3ZpZXdfc2V0dGluZ19vZmZsaW5lX2FwcF9jYWNoZV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFf
Qm9vbCBlbmFibGUpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlO
QV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5B
X0ZBTFNFKTsKQEAgLTI1NjgsMTQgKzI1NjgsMTQgQEAgRWluYV9Cb29sIGV3a192aWV3X3NldHRp
bmdfb2ZmbGluZV9hcHBfY2FjaGVfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgZW5hYmwK
IH0KIAogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19jYXJldF9icm93c2luZ19nZXQoY29u
c3QgRXZhc19PYmplY3QqIG8pCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19jYXJldF9icm93
c2luZ19nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09S
X1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVU
VVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKICAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MuY2Fy
ZXRfYnJvd3Npbmc7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2NhcmV0X2Jyb3dz
aW5nX3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIGVuYWJsZSkKK0VpbmFfQm9vbCBld2tf
dmlld19zZXR0aW5nX2NhcmV0X2Jyb3dzaW5nX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29s
IGVuYWJsZSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZB
TFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFM
U0UpOwpAQCAtMjU5NSw3ICsyNTk1LDcgQEAgRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfY2Fy
ZXRfYnJvd3Npbmdfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgZW5hYmxlKQogICogQHJl
dHVybiBBIHBvaW50ZXIgdG8gYW4gZWluYV9zdHJpbnNoYXJlIGNvbnRhaW5pbmcgdGhlIGN1cnJl
bnQgY3VzdG9tCiAgKiBlbmNvZGluZyBmb3IgVmlldyBvYmplY3QgQHBhcmFtIG8sIG9yIEBjIDAg
aWYgaXQncyBub3Qgc2V0LgogICovCi1jb25zdCBjaGFyKiBld2tfdmlld19zZXR0aW5nX2VuY29k
aW5nX2N1c3RvbV9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCitjb25zdCBjaGFyICpld2tfdmll
d19zZXR0aW5nX2VuY29kaW5nX2N1c3RvbV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCiB7CiAg
ICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgMCk7CiAgICAgRVdLX1ZJRVdfUFJJ
Vl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCAwKTsKQEAgLTI2MTksNyArMjYxOSw3IEBAIGNvbnN0
IGNoYXIqIGV3a192aWV3X3NldHRpbmdfZW5jb2RpbmdfY3VzdG9tX2dldChjb25zdCBFdmFzX09i
amVjdCogbykKICAqCiAgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBAYyBFSU5B
X0ZBTFNFIG90aGVyd2lzZS4KICAqLwotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5jb2Rp
bmdfY3VzdG9tX3NldChFdmFzX09iamVjdCogbywgY29uc3QgY2hhciAqZW5jb2RpbmcpCitFaW5h
X0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19lbmNvZGluZ19jdXN0b21fc2V0KEV2YXNfT2JqZWN0ICpv
LCBjb25zdCBjaGFyICplbmNvZGluZykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJO
KG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2Qs
IHByaXYsIEVJTkFfRkFMU0UpOwpAQCAtMjYzMiwxNCArMjYzMiwxNCBAQCBEQkcoIiVzIiwgZW5j
b2RpbmcpOwogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLWNvbnN0IGNoYXIqIGV3a192aWV3
X3NldHRpbmdfZW5jb2RpbmdfZGVmYXVsdF9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCitjb25z
dCBjaGFyICpld2tfdmlld19zZXR0aW5nX2VuY29kaW5nX2RlZmF1bHRfZ2V0KGNvbnN0IEV2YXNf
T2JqZWN0ICpvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIDApOwog
ICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgMCk7CiAgICAgcmV0dXJu
IHByaXYtPnNldHRpbmdzLmVuY29kaW5nX2RlZmF1bHQ7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmll
d19zZXR0aW5nX2VuY29kaW5nX2RlZmF1bHRfc2V0KEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFy
KiBlbmNvZGluZykKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuY29kaW5nX2RlZmF1bHRf
c2V0KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICplbmNvZGluZykKIHsKICAgICBFV0tfVklF
V19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklW
X0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwpAQCAtMjY1NCw3ICsyNjU0LDcg
QEAgRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5jb2RpbmdfZGVmYXVsdF9zZXQoRXZhc19P
YmplY3QqIG8sIGNvbnN0IGNoYXIqIGVuY28KICAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHNl
dCBpZiBlbmNvZGluZyBkZXRlY3RvciBpcyBlbmFibGVkLgogICogQHJldHVybiBAYyBFSU5BX1RS
VUUgb24gc3VjY2VzcyBhbmQgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCiAgKi8KLUVpbmFfQm9v
bCBld2tfdmlld19zZXR0aW5nX2VuY29kaW5nX2RldGVjdG9yX3NldChFdmFzX09iamVjdCogbywg
RWluYV9Cb29sIGVuYWJsZSkKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuY29kaW5nX2Rl
dGVjdG9yX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGVuYWJsZSkKIHsKICAgICBFV0tf
VklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19Q
UklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwpAQCAtMjY3Miw3ICsyNjcy
LDcgQEAgRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5jb2RpbmdfZGV0ZWN0b3Jfc2V0KEV2
YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgZW5hYmwKICAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRv
IGdldCBpZiBlbmNvZGluZyBkZXRlY3RvciBpcyBlbmFibGVkLgogICogQHJldHVybiBAYyBFSU5B
X1RSVUUgaWYgZW5jb2RpbmcgZGV0ZWN0b3IgaXMgZW5hYmxlZCwgQGMgRUlOQV9GQUxTRSBpZiBu
b3Qgb3Igb24gZXJyb3JzLgogICovCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19lbmNvZGlu
Z19kZXRlY3Rvcl9nZXQoRXZhc19PYmplY3QqIG8pCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGlu
Z19lbmNvZGluZ19kZXRlY3Rvcl9nZXQoRXZhc19PYmplY3QgKm8pCiB7CiAgICAgRVdLX1ZJRVdf
U0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9H
RVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKQEAgLTI2OTAsNyArMjY5MCw3IEBA
IEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuY29kaW5nX2RldGVjdG9yX2dldChFdmFzX09i
amVjdCogbykKICAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIGRldmVsb3BlciBleHRlbnNpb25z
IGFyZSBlbmFibGVkLCBAYyBFSU5BX0ZBTFNFCiAgKiAgICAgICAgIG90aGVyd2lzZS4KICAqLwot
RWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2RldmVsb3Blcl9leHRyYXNfZ2V0KEV2
YXNfT2JqZWN0KiBvKQorRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2RldmVsb3Bl
cl9leHRyYXNfZ2V0KEV2YXNfT2JqZWN0ICpvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9S
RVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVS
TihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0yNzA4LDcgKzI3MDgsNyBAQCBFaW5hX0Jvb2wg
ZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfZGV2ZWxvcGVyX2V4dHJhc19nZXQoRXZhc19PYmplY3Qq
IG8pCiAgKgogICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcywgQEVJTkFfRkFMU0Ug
b24gZmFpbHVyZS4KICAqLwotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2RldmVs
b3Blcl9leHRyYXNfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgZW5hYmxlKQorRWluYV9C
b29sIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2RldmVsb3Blcl9leHRyYXNfc2V0KEV2YXNfT2Jq
ZWN0ICpvLCBFaW5hX0Jvb2wgZW5hYmxlKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRV
Uk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihz
ZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0yNzIwLDE0ICsyNzIwLDE0IEBAIEVpbmFfQm9vbCBl
d2tfdmlld19zZXR0aW5nX2VuYWJsZV9kZXZlbG9wZXJfZXh0cmFzX3NldChFdmFzX09iamVjdCog
bywgRWluYV9Cb29sCiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotaW50IGV3a192aWV3X3Nl
dHRpbmdfZm9udF9taW5pbXVtX3NpemVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQoraW50IGV3
a192aWV3X3NldHRpbmdfZm9udF9taW5pbXVtX3NpemVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpv
KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIDApOwogICAgIEVXS19W
SUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgMCk7CiAgICAgcmV0dXJuIHByaXYtPnNl
dHRpbmdzLmZvbnRfbWluaW11bV9zaXplOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGlu
Z19mb250X21pbmltdW1fc2l6ZV9zZXQoRXZhc19PYmplY3QqIG8sIGludCBzaXplKQorRWluYV9C
b29sIGV3a192aWV3X3NldHRpbmdfZm9udF9taW5pbXVtX3NpemVfc2V0KEV2YXNfT2JqZWN0ICpv
LCBpbnQgc2l6ZSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5B
X0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFf
RkFMU0UpOwpAQCAtMjczOCwxNCArMjczOCwxNCBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGlu
Z19mb250X21pbmltdW1fc2l6ZV9zZXQoRXZhc19PYmplY3QqIG8sIGludCBzaXplKQogICAgIHJl
dHVybiBFSU5BX1RSVUU7CiB9CiAKLWludCBld2tfdmlld19zZXR0aW5nX2ZvbnRfbWluaW11bV9s
b2dpY2FsX3NpemVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQoraW50IGV3a192aWV3X3NldHRp
bmdfZm9udF9taW5pbXVtX2xvZ2ljYWxfc2l6ZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCiB7
CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgMCk7CiAgICAgRVdLX1ZJRVdf
UFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCAwKTsKICAgICByZXR1cm4gcHJpdi0+c2V0dGlu
Z3MuZm9udF9taW5pbXVtX2xvZ2ljYWxfc2l6ZTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3Nl
dHRpbmdfZm9udF9taW5pbXVtX2xvZ2ljYWxfc2l6ZV9zZXQoRXZhc19PYmplY3QqIG8sIGludCBz
aXplKQorRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZm9udF9taW5pbXVtX2xvZ2ljYWxfc2l6
ZV9zZXQoRXZhc19PYmplY3QgKm8sIGludCBzaXplKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9P
Ul9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JF
VFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0yNzU2LDE0ICsyNzU2LDE0IEBAIEVpbmFf
Qm9vbCBld2tfdmlld19zZXR0aW5nX2ZvbnRfbWluaW11bV9sb2dpY2FsX3NpemVfc2V0KEV2YXNf
T2JqZWN0KiBvLCBpbnQgc2l6CiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotaW50IGV3a192
aWV3X3NldHRpbmdfZm9udF9kZWZhdWx0X3NpemVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQor
aW50IGV3a192aWV3X3NldHRpbmdfZm9udF9kZWZhdWx0X3NpemVfZ2V0KGNvbnN0IEV2YXNfT2Jq
ZWN0ICpvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIDApOwogICAg
IEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgMCk7CiAgICAgcmV0dXJuIHBy
aXYtPnNldHRpbmdzLmZvbnRfZGVmYXVsdF9zaXplOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdf
c2V0dGluZ19mb250X2RlZmF1bHRfc2l6ZV9zZXQoRXZhc19PYmplY3QqIG8sIGludCBzaXplKQor
RWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZm9udF9kZWZhdWx0X3NpemVfc2V0KEV2YXNfT2Jq
ZWN0ICpvLCBpbnQgc2l6ZSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNk
LCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYs
IEVJTkFfRkFMU0UpOwpAQCAtMjc3NCwxNCArMjc3NCwxNCBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdf
c2V0dGluZ19mb250X2RlZmF1bHRfc2l6ZV9zZXQoRXZhc19PYmplY3QqIG8sIGludCBzaXplKQog
ICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLWludCBld2tfdmlld19zZXR0aW5nX2ZvbnRfbW9u
b3NwYWNlX3NpemVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQoraW50IGV3a192aWV3X3NldHRp
bmdfZm9udF9tb25vc3BhY2Vfc2l6ZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCiB7CiAgICAg
RVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgMCk7CiAgICAgRVdLX1ZJRVdfUFJJVl9H
RVRfT1JfUkVUVVJOKHNkLCBwcml2LCAwKTsKICAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MuZm9u
dF9tb25vc3BhY2Vfc2l6ZTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZm9udF9t
b25vc3BhY2Vfc2l6ZV9zZXQoRXZhc19PYmplY3QqIG8sIGludCBzaXplKQorRWluYV9Cb29sIGV3
a192aWV3X3NldHRpbmdfZm9udF9tb25vc3BhY2Vfc2l6ZV9zZXQoRXZhc19PYmplY3QgKm8sIGlu
dCBzaXplKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFM
U0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxT
RSk7CkBAIC0yNzkyLDE0ICsyNzkyLDE0IEBAIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2Zv
bnRfbW9ub3NwYWNlX3NpemVfc2V0KEV2YXNfT2JqZWN0KiBvLCBpbnQgc2l6ZSkKICAgICByZXR1
cm4gRUlOQV9UUlVFOwogfQogCi1jb25zdCBjaGFyKiBld2tfdmlld19zZXR0aW5nX2ZvbnRfc3Rh
bmRhcmRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQorY29uc3QgY2hhciogZXdrX3ZpZXdfc2V0
dGluZ19mb250X3N0YW5kYXJkX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKIHsKICAgICBFV0tf
VklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAwKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9P
Ul9SRVRVUk4oc2QsIHByaXYsIDApOwogICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5mb250X3N0
YW5kYXJkOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19mb250X3N0YW5kYXJkX3Nl
dChFdmFzX09iamVjdCogbywgY29uc3QgY2hhciogZmFtaWx5KQorRWluYV9Cb29sIGV3a192aWV3
X3NldHRpbmdfZm9udF9zdGFuZGFyZF9zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKmZh
bWlseSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNF
KTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0Up
OwpAQCAtMjgwOCwxNCArMjgwOCwxNCBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19mb250
X3N0YW5kYXJkX3NldChFdmFzX09iamVjdCogbywgY29uc3QgY2hhciogZmFtaWx5KQogICAgIHJl
dHVybiBFSU5BX1RSVUU7CiB9CiAKLWNvbnN0IGNoYXIqIGV3a192aWV3X3NldHRpbmdfZm9udF9j
dXJzaXZlX2dldChjb25zdCBFdmFzX09iamVjdCogbykKK2NvbnN0IGNoYXIqIGV3a192aWV3X3Nl
dHRpbmdfZm9udF9jdXJzaXZlX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKIHsKICAgICBFV0tf
VklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAwKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9P
Ul9SRVRVUk4oc2QsIHByaXYsIDApOwogICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5mb250X2N1
cnNpdmU7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2ZvbnRfY3Vyc2l2ZV9zZXQo
RXZhc19PYmplY3QqIG8sIGNvbnN0IGNoYXIqIGZhbWlseSkKK0VpbmFfQm9vbCBld2tfdmlld19z
ZXR0aW5nX2ZvbnRfY3Vyc2l2ZV9zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKmZhbWls
eSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsK
ICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwpA
QCAtMjgyNCwxNCArMjgyNCwxNCBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19mb250X2N1
cnNpdmVfc2V0KEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFyKiBmYW1pbHkpCiAgICAgcmV0dXJu
IEVJTkFfVFJVRTsKIH0KIAotY29uc3QgY2hhciogZXdrX3ZpZXdfc2V0dGluZ19mb250X2ZhbnRh
c3lfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQorY29uc3QgY2hhciogZXdrX3ZpZXdfc2V0dGlu
Z19mb250X2ZhbnRhc3lfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQogewogICAgIEVXS19WSUVX
X1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIDApOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JF
VFVSTihzZCwgcHJpdiwgMCk7CiAgICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLmZvbnRfZmFudGFz
eTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZm9udF9mYW50YXN5X3NldChFdmFz
X09iamVjdCogbywgY29uc3QgY2hhciogZmFtaWx5KQorRWluYV9Cb29sIGV3a192aWV3X3NldHRp
bmdfZm9udF9mYW50YXN5X3NldChFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqZmFtaWx5KQog
ewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAg
IEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0y
ODQwLDE0ICsyODQwLDE0IEBAIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2ZvbnRfZmFudGFz
eV9zZXQoRXZhc19PYmplY3QqIG8sIGNvbnN0IGNoYXIqIGZhbWlseSkKICAgICByZXR1cm4gRUlO
QV9UUlVFOwogfQogCi1jb25zdCBjaGFyKiBld2tfdmlld19zZXR0aW5nX2ZvbnRfbW9ub3NwYWNl
X2dldChjb25zdCBFdmFzX09iamVjdCogbykKK2NvbnN0IGNoYXIgKmV3a192aWV3X3NldHRpbmdf
Zm9udF9tb25vc3BhY2VfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQogewogICAgIEVXS19WSUVX
X1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIDApOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JF
VFVSTihzZCwgcHJpdiwgMCk7CiAgICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLmZvbnRfbW9ub3Nw
YWNlOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19mb250X21vbm9zcGFjZV9zZXQo
RXZhc19PYmplY3QqIG8sIGNvbnN0IGNoYXIqIGZhbWlseSkKK0VpbmFfQm9vbCBld2tfdmlld19z
ZXR0aW5nX2ZvbnRfbW9ub3NwYWNlX3NldChFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqZmFt
aWx5KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0Up
OwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7
CkBAIC0yODU2LDE0ICsyODU2LDE0IEBAIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2ZvbnRf
bW9ub3NwYWNlX3NldChFdmFzX09iamVjdCogbywgY29uc3QgY2hhciogZmFtaWx5CiAgICAgcmV0
dXJuIEVJTkFfVFJVRTsKIH0KIAotY29uc3QgY2hhciogZXdrX3ZpZXdfc2V0dGluZ19mb250X3Nl
cmlmX2dldChjb25zdCBFdmFzX09iamVjdCogbykKK2NvbnN0IGNoYXIgKmV3a192aWV3X3NldHRp
bmdfZm9udF9zZXJpZl9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCiB7CiAgICAgRVdLX1ZJRVdf
U0RfR0VUX09SX1JFVFVSTihvLCBzZCwgMCk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVU
VVJOKHNkLCBwcml2LCAwKTsKICAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MuZm9udF9zZXJpZjsK
IH0KIAotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZm9udF9zZXJpZl9zZXQoRXZhc19PYmpl
Y3QqIG8sIGNvbnN0IGNoYXIqIGZhbWlseSkKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2Zv
bnRfc2VyaWZfc2V0KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICpmYW1pbHkpCiB7CiAgICAg
RVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJ
RVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKQEAgLTI4NzIsMTQg
KzI4NzIsMTQgQEAgRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZm9udF9zZXJpZl9zZXQoRXZh
c19PYmplY3QqIG8sIGNvbnN0IGNoYXIqIGZhbWlseSkKICAgICByZXR1cm4gRUlOQV9UUlVFOwog
fQogCi1jb25zdCBjaGFyKiBld2tfdmlld19zZXR0aW5nX2ZvbnRfc2Fuc19zZXJpZl9nZXQoY29u
c3QgRXZhc19PYmplY3QqIG8pCitjb25zdCBjaGFyICpld2tfdmlld19zZXR0aW5nX2ZvbnRfc2Fu
c19zZXJpZl9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VU
X09SX1JFVFVSTihvLCBzZCwgMCk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNk
LCBwcml2LCAwKTsKICAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MuZm9udF9zYW5zX3NlcmlmOwog
fQotICAKLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2ZvbnRfc2Fuc19zZXJpZl9zZXQoRXZh
c19PYmplY3QqIG8sIGNvbnN0IGNoYXIqIGZhbWlseSkKKworRWluYV9Cb29sIGV3a192aWV3X3Nl
dHRpbmdfZm9udF9zYW5zX3NlcmlmX3NldChFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqZmFt
aWx5KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0Up
OwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7
CkBAIC0yODk0LDcgKzI4OTQsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19mb250X3Nh
bnNfc2VyaWZfc2V0KEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFyKiBmYW1pbAogICogQHBhcmFt
IG8gdmlldyBvYmplY3QgdG8gZ2V0IHNwYXRpYWwgbmF2aWdhdGlvbiBzZXR0aW5nLgogICogQHJl
dHVybiBAYyBFSU5BX1RSVUUgaWYgc3BhdGlhbCBuYXZpZ2F0aW9uIGlzIGVuYWJsZWQsIEBjIEVJ
TkFfRkFMU0UgaWYgbm90IG9yIG9uIGVycm9ycy4KICAqLwotRWluYV9Cb29sIGV3a192aWV3X3Nl
dHRpbmdfc3BhdGlhbF9uYXZpZ2F0aW9uX2dldChFdmFzX09iamVjdCogbykKK0VpbmFfQm9vbCBl
d2tfdmlld19zZXR0aW5nX3NwYXRpYWxfbmF2aWdhdGlvbl9nZXQoRXZhc19PYmplY3QgKm8pCiB7
CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAg
RVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKQEAgLTI5
MDcsNyArMjkwNyw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3NwYXRpYWxfbmF2aWdh
dGlvbl9nZXQoRXZhc19PYmplY3QqIG8pCiAgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBzZXQg
c3BhdGlhbCBuYXZpZ2F0aW9uIHNldHRpbmcuCiAgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBz
dWNjZXNzIGFuZCBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUKICAqLwotRWluYV9Cb29sIGV3a192
aWV3X3NldHRpbmdfc3BhdGlhbF9uYXZpZ2F0aW9uX3NldChFdmFzX09iamVjdCogbywgRWluYV9C
b29sIGVuYWJsZSkKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3NwYXRpYWxfbmF2aWdhdGlv
bl9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBlbmFibGUpCiB7CiAgICAgRVdLX1ZJRVdf
U0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9H
RVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKQEAgLTI5MjUsNyArMjkyNSw3IEBA
IEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3NwYXRpYWxfbmF2aWdhdGlvbl9zZXQoRXZhc19P
YmplY3QqIG8sIEVpbmFfQm9vbCBlbmFiCiAgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBnZXQg
aWYgbG9jYWwgc3RvcmFnZSBpcyBlbmFibGVkLgogICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYg
bG9jYWwgc3RvcmFnZSBpcyBlbmFibGVkLCBAYyBFSU5BX0ZBTFNFIGlmIG5vdCBvciBvbiBlcnJv
cnMuCiAgKi8KLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2xvY2FsX3N0b3JhZ2VfZ2V0KEV2
YXNfT2JqZWN0KiBvKQorRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfbG9jYWxfc3RvcmFnZV9n
ZXQoRXZhc19PYmplY3QgKm8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBz
ZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2
LCBFSU5BX0ZBTFNFKTsKQEAgLTI5MzgsNyArMjkzOCw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19z
ZXR0aW5nX2xvY2FsX3N0b3JhZ2VfZ2V0KEV2YXNfT2JqZWN0KiBvKQogICogQHBhcmFtIG8gdmll
dyBvYmplY3QgdG8gc2V0IGlmIGxvY2FsIHN0b3JhZ2UgaXMgZW5hYmxlZC4KICAqIEByZXR1cm4g
QGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MgYW5kIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQogICov
Ci1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19sb2NhbF9zdG9yYWdlX3NldChFdmFzX09iamVj
dCogbywgRWluYV9Cb29sIGVuYWJsZSkKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2xvY2Fs
X3N0b3JhZ2Vfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgZW5hYmxlKQogewogICAgIEVX
S19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVX
X1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0yOTU2LDcgKzI5
NTYsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19sb2NhbF9zdG9yYWdlX3NldChFdmFz
X09iamVjdCogbywgRWluYV9Cb29sIGVuYWJsZSkKICAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRv
IHNldCBpZiBwYWdlIGNhY2hlIGlzIGVuYWJsZWQuCiAgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBp
ZiBwYWdlIGNhY2hlIGlzIGVuYWJsZWQsIEBjIEVJTkFfRkFMU0UgaWYgbm90LgogICovCi1FaW5h
X0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19wYWdlX2NhY2hlX2dldChFdmFzX09iamVjdCogbykKK0Vp
bmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3BhZ2VfY2FjaGVfZ2V0KEV2YXNfT2JqZWN0ICpvKQog
ewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAg
IEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0y
OTY5LDcgKzI5NjksNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19wYWdlX2NhY2hlX2dl
dChFdmFzX09iamVjdCogbykKICAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHNldCBpZiBwYWdl
IGNhY2hlIGlzIGVuYWJsZWQuCiAgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIGFu
ZCBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUKICAqLwotRWluYV9Cb29sIGV3a192aWV3X3NldHRp
bmdfcGFnZV9jYWNoZV9zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCBlbmFibGUpCitFaW5h
X0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19wYWdlX2NhY2hlX3NldChFdmFzX09iamVjdCAqbywgRWlu
YV9Cb29sIGVuYWJsZSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBF
SU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJ
TkFfRkFMU0UpOwpAQCAtMjk4Nyw3ICsyOTg3LDcgQEAgRWluYV9Cb29sIGV3a192aWV3X3NldHRp
bmdfcGFnZV9jYWNoZV9zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCBlbmFibGUpCiAgKiBA
cGFyYW0gbyB2aWV3IG9iamVjdCB0byBnZXQgdGhlIGxvY2FsIHN0b3JhZ2UgZGF0YWJhc2UgcGF0
aC4KICAqIEByZXR1cm4gdGhlIGxvY2FsIHN0b3JhZ2UgZGF0YWJhc2UgcGF0aC4KICAqLwotY29u
c3QgY2hhciogZXdrX3ZpZXdfc2V0dGluZ19sb2NhbF9zdG9yYWdlX2RhdGFiYXNlX3BhdGhfZ2V0
KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQorY29uc3QgY2hhciogZXdrX3ZpZXdfc2V0dGluZ19sb2Nh
bF9zdG9yYWdlX2RhdGFiYXNlX3BhdGhfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQogewogICAg
IEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIDApOwogICAgIEVXS19WSUVXX1BSSVZf
R0VUX09SX1JFVFVSTihzZCwgcHJpdiwgMCk7CkBAIC0zMDAwLDcgKzMwMDAsNyBAQCBjb25zdCBj
aGFyKiBld2tfdmlld19zZXR0aW5nX2xvY2FsX3N0b3JhZ2VfZGF0YWJhc2VfcGF0aF9nZXQoY29u
c3QgRXZhc19PYmplY3QqCiAgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBzZXQgdGhlIGxvY2Fs
IHN0b3JhZ2UgZGF0YWJhc2UgcGF0aC4KICAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nl
c3MgYW5kIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQogICovCi1FaW5hX0Jvb2wgZXdrX3ZpZXdf
c2V0dGluZ19sb2NhbF9zdG9yYWdlX2RhdGFiYXNlX3BhdGhfc2V0KEV2YXNfT2JqZWN0KiBvLCBj
b25zdCBjaGFyKiBwYXRoKQorRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfbG9jYWxfc3RvcmFn
ZV9kYXRhYmFzZV9wYXRoX3NldChFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqcGF0aCkKIHsK
ICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBF
V0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwpAQCAtMzAx
NSw3ICszMDE1LDcgQEAgRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfbG9jYWxfc3RvcmFnZV9k
YXRhYmFzZV9wYXRoX3NldChFdmFzX09iamVjdCogbywgY29uc3QKICAqIEBwYXJhbSBvIHZpZXcg
b2JqZWN0IHRvIHF1ZXJ5IGludGVybmFsIGRhdGEuCiAgKiBAcmV0dXJuIGludGVybmFsIGRhdGEg
b3IgQGMgMCBvbiBlcnJvcnMgKGllOiBpbmNvcnJlY3QgdHlwZSBvZiBAYSBvKS4KICAqLwotRXdr
X1ZpZXdfU21hcnRfRGF0YSogZXdrX3ZpZXdfc21hcnRfZGF0YV9nZXQoY29uc3QgRXZhc19PYmpl
Y3QqIG8pCitFd2tfVmlld19TbWFydF9EYXRhICpld2tfdmlld19zbWFydF9kYXRhX2dldChjb25z
dCBFdmFzX09iamVjdCAqbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNk
LCAwKTsKICAgICByZXR1cm4gc2Q7CkBAIC0zMDM4LDcgKzMwMzgsNyBAQCBFd2tfVmlld19TbWFy
dF9EYXRhKiBld2tfdmlld19zbWFydF9kYXRhX2dldChjb25zdCBFdmFzX09iamVjdCogbykKICAq
IEBub3RlIHRoaXMgaXMgbm90IGZvciBnZW5lcmFsIHVzZSBidXQganVzdCBmb3Igc3ViY2xhc3Nl
cyB0aGF0IHdhbnQKICAqICAgICAgIHRvIGRlZmluZSB0aGVpciBvd24gYmFja2luZyBzdG9yZS4K
ICAqLwotY29uc3QgRWluYV9SZWN0YW5nbGUqIGV3a192aWV3X3JlcGFpbnRzX2dldChjb25zdCBF
d2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYsIHNpemVfdCogY291bnQpCitjb25zdCBFaW5hX1Jl
Y3RhbmdsZSAqZXdrX3ZpZXdfcmVwYWludHNfZ2V0KGNvbnN0IEV3a19WaWV3X1ByaXZhdGVfRGF0
YSAqcHJpdiwgc2l6ZV90ICpjb3VudCkKIHsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
Tl9WQUwoY291bnQsIDApOwogICAgIGlmIChjb3VudCkKQEAgLTMwNjYsNyArMzA2Niw3IEBAIGNv
bnN0IEVpbmFfUmVjdGFuZ2xlKiBld2tfdmlld19yZXBhaW50c19nZXQoY29uc3QgRXdrX1ZpZXdf
UHJpdmF0ZV9EYXRhKiBwcml2LCBzCiAgKiBAbm90ZSB0aGlzIGlzIG5vdCBmb3IgZ2VuZXJhbCB1
c2UgYnV0IGp1c3QgZm9yIHN1YmNsYXNzZXMgdGhhdCB3YW50CiAgKiAgICAgICB0byBkZWZpbmUg
dGhlaXIgb3duIGJhY2tpbmcgc3RvcmUuCiAgKi8KLWNvbnN0IEV3a19TY3JvbGxfUmVxdWVzdCog
ZXdrX3ZpZXdfc2Nyb2xsX3JlcXVlc3RzX2dldChjb25zdCBFd2tfVmlld19Qcml2YXRlX0RhdGEq
IHByaXYsIHNpemVfdCogY291bnQpCitjb25zdCBFd2tfU2Nyb2xsX1JlcXVlc3QgKmV3a192aWV3
X3Njcm9sbF9yZXF1ZXN0c19nZXQoY29uc3QgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpwcml2LCBz
aXplX3QgKmNvdW50KQogewogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChjb3Vu
dCwgMCk7CiAgICAgaWYgKGNvdW50KQpAQCAtMzA5MSw3ICszMDkxLDcgQEAgY29uc3QgRXdrX1Nj
cm9sbF9SZXF1ZXN0KiBld2tfdmlld19zY3JvbGxfcmVxdWVzdHNfZ2V0KGNvbnN0IEV3a19WaWV3
X1ByaXZhdGVfRGEKICAqIEBub3RlIHRoaXMgaXMgbm90IGZvciBnZW5lcmFsIHVzZSBidXQganVz
dCBmb3Igc3ViY2xhc3NlcyB0aGF0IHdhbnQKICAqICAgICAgIHRvIGRlZmluZSB0aGVpciBvd24g
YmFja2luZyBzdG9yZS4KICAqLwotdm9pZCBld2tfdmlld19yZXBhaW50X2FkZChFd2tfVmlld19Q
cml2YXRlX0RhdGEqIHByaXYsIEV2YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5LCBFdmFzX0Nvb3Jk
IHcsIEV2YXNfQ29vcmQgaCkKK3ZvaWQgZXdrX3ZpZXdfcmVwYWludF9hZGQoRXdrX1ZpZXdfUHJp
dmF0ZV9EYXRhICpwcml2LCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwgRXZhc19Db29yZCB3
LCBFdmFzX0Nvb3JkIGgpCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4ocHJpdik7
CiAgICAgX2V3a192aWV3X3JlcGFpbnRfYWRkKHByaXYsIHgsIHksIHcsIGgpOwpAQCAtMzEwNSwx
MSArMzEwNSwxMSBAQCB2b2lkIGV3a192aWV3X3JlcGFpbnRfYWRkKEV3a19WaWV3X1ByaXZhdGVf
RGF0YSogcHJpdiwgRXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkCiAgKiBAbm90ZSB0aGlzIGlzIG5v
dCBmb3IgZ2VuZXJhbCB1c2UgYnV0IGp1c3QgZm9yIHN1YmNsYXNzZXMgdGhhdCB3YW50CiAgKiAg
ICAgICB0byBkZWZpbmUgdGhlaXIgb3duIGJhY2tpbmcgc3RvcmUuCiAgKi8KLXZvaWQgZXdrX3Zp
ZXdfbGF5b3V0X2lmX25lZWRlZF9yZWN1cnNpdmUoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2
KQordm9pZCBld2tfdmlld19sYXlvdXRfaWZfbmVlZGVkX3JlY3Vyc2l2ZShFd2tfVmlld19Qcml2
YXRlX0RhdGEgKnByaXYpCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4ocHJpdik7
CiAKLSAgICBXZWJDb3JlOjpGcmFtZVZpZXcqIHYgPSBwcml2LT5tYWluX2ZyYW1lLT52aWV3KCk7
CisgICAgV2ViQ29yZTo6RnJhbWVWaWV3ICp2ID0gcHJpdi0+bWFpbl9mcmFtZS0+dmlldygpOwog
ICAgIGlmICghdikgewogICAgICAgICBFUlIoIm5vIG1haW4gZnJhbWUgdmlldyIpOwogICAgICAg
ICByZXR1cm47CkBAIC0zMTE3LDcgKzMxMTcsNyBAQCB2b2lkIGV3a192aWV3X2xheW91dF9pZl9u
ZWVkZWRfcmVjdXJzaXZlKEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdikKICAgICB2LT51cGRh
dGVMYXlvdXRBbmRTdHlsZUlmTmVlZGVkUmVjdXJzaXZlKCk7CiB9CiAKLXZvaWQgZXdrX3ZpZXdf
c2Nyb2xsc19wcm9jZXNzKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkKQordm9pZCBld2tfdmlld19z
Y3JvbGxzX3Byb2Nlc3MoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpCiB7CiAgICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk4oc2QpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihz
ZCwgcHJpdik7CkBAIC0zMTI3LDkgKzMxMjcsOSBAQCB2b2lkIGV3a192aWV3X3Njcm9sbHNfcHJv
Y2VzcyhFd2tfVmlld19TbWFydF9EYXRhKiBzZCkKIH0KIAogc3RydWN0IF9Fd2tfVmlld19QYWlu
dF9Db250ZXh0IHsKLSAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQqIGdjOwotICAgIFdlYkNv
cmU6OkZyYW1lVmlldyogdmlldzsKLSAgICBjYWlyb190KiBjcjsKKyAgICBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQgKmdjOworICAgIFdlYkNvcmU6OkZyYW1lVmlldyAqdmlldzsKKyAgICBjYWly
b190ICpjcjsKIH07CiAKIC8qKgpAQCAtMzE0NSwxNCArMzE0NSwxNCBAQCBzdHJ1Y3QgX0V3a19W
aWV3X1BhaW50X0NvbnRleHQgewogICogQG5vdGUgdGhpcyBpcyBub3QgZm9yIGdlbmVyYWwgdXNl
IGJ1dCBqdXN0IGZvciBzdWJjbGFzc2VzIHRoYXQgd2FudAogICogICAgICAgdG8gZGVmaW5lIHRo
ZWlyIG93biBiYWNraW5nIHN0b3JlLgogICovCi1Fd2tfVmlld19QYWludF9Db250ZXh0KiBld2tf
dmlld19wYWludF9jb250ZXh0X25ldyhFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYsIGNhaXJv
X3QqIGNyKQorRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCAqZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9u
ZXcoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpwcml2LCBjYWlyb190ICpjcikKIHsKICAgICBFSU5B
X1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwocHJpdiwgMCk7CiAgICAgRUlOQV9TQUZFVFlfT05f
TlVMTF9SRVRVUk5fVkFMKGNyLCAwKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9W
QUwocHJpdi0+bWFpbl9mcmFtZSwgMCk7Ci0gICAgV2ViQ29yZTo6RnJhbWVWaWV3KiB2aWV3ID0g
cHJpdi0+bWFpbl9mcmFtZS0+dmlldygpOworICAgIFdlYkNvcmU6OkZyYW1lVmlldyAqdmlldyA9
IHByaXYtPm1haW5fZnJhbWUtPnZpZXcoKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
Tl9WQUwodmlldywgMCk7Ci0gICAgRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCogY3R4dCA9IChFd2tf
Vmlld19QYWludF9Db250ZXh0KiltYWxsb2Moc2l6ZW9mKCpjdHh0KSk7CisgICAgRXdrX1ZpZXdf
UGFpbnRfQ29udGV4dCAqY3R4dCA9IChFd2tfVmlld19QYWludF9Db250ZXh0ICopbWFsbG9jKHNp
emVvZigqY3R4dCkpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChjdHh0LCAw
KTsKIAogICAgIGN0eHQtPmdjID0gbmV3IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dChjcik7CkBA
IC0zMTczLDcgKzMxNzMsNyBAQCBFd2tfVmlld19QYWludF9Db250ZXh0KiBld2tfdmlld19wYWlu
dF9jb250ZXh0X25ldyhFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYsCiAgKiBAbm90ZSB0aGlz
IGlzIG5vdCBmb3IgZ2VuZXJhbCB1c2UgYnV0IGp1c3QgZm9yIHN1YmNsYXNzZXMgdGhhdCB3YW50
CiAgKiAgICAgICB0byBkZWZpbmUgdGhlaXIgb3duIGJhY2tpbmcgc3RvcmUuCiAgKi8KLXZvaWQg
ZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9mcmVlKEV3a19WaWV3X1BhaW50X0NvbnRleHQqIGN0eHQp
Cit2b2lkIGV3a192aWV3X3BhaW50X2NvbnRleHRfZnJlZShFd2tfVmlld19QYWludF9Db250ZXh0
ICpjdHh0KQogewogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGN0eHQpOwogICAgIGRl
bGV0ZSBjdHh0LT5nYzsKQEAgLTMxOTEsNyArMzE5MSw3IEBAIHZvaWQgZXdrX3ZpZXdfcGFpbnRf
Y29udGV4dF9mcmVlKEV3a19WaWV3X1BhaW50X0NvbnRleHQqIGN0eHQpCiAgKiBAbm90ZSB0aGlz
IGlzIG5vdCBmb3IgZ2VuZXJhbCB1c2UgYnV0IGp1c3QgZm9yIHN1YmNsYXNzZXMgdGhhdCB3YW50
CiAgKiAgICAgICB0byBkZWZpbmUgdGhlaXIgb3duIGJhY2tpbmcgc3RvcmUuCiAgKi8KLXZvaWQg
ZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9zYXZlKEV3a19WaWV3X1BhaW50X0NvbnRleHQqIGN0eHQp
Cit2b2lkIGV3a192aWV3X3BhaW50X2NvbnRleHRfc2F2ZShFd2tfVmlld19QYWludF9Db250ZXh0
ICpjdHh0KQogewogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGN0eHQpOwogICAgIGNh
aXJvX3NhdmUoY3R4dC0+Y3IpOwpAQCAtMzIwOCw3ICszMjA4LDcgQEAgdm9pZCBld2tfdmlld19w
YWludF9jb250ZXh0X3NhdmUoRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCogY3R4dCkKICAqIEBub3Rl
IHRoaXMgaXMgbm90IGZvciBnZW5lcmFsIHVzZSBidXQganVzdCBmb3Igc3ViY2xhc3NlcyB0aGF0
IHdhbnQKICAqICAgICAgIHRvIGRlZmluZSB0aGVpciBvd24gYmFja2luZyBzdG9yZS4KICAqLwot
dm9pZCBld2tfdmlld19wYWludF9jb250ZXh0X3Jlc3RvcmUoRXdrX1ZpZXdfUGFpbnRfQ29udGV4
dCogY3R4dCkKK3ZvaWQgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9yZXN0b3JlKEV3a19WaWV3X1Bh
aW50X0NvbnRleHQgKmN0eHQpCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oY3R4
dCk7CiAgICAgY3R4dC0+Z2MtPnJlc3RvcmUoKTsKQEAgLTMyMjcsNyArMzIyNyw3IEBAIHZvaWQg
ZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9yZXN0b3JlKEV3a19WaWV3X1BhaW50X0NvbnRleHQqIGN0
eHQpCiAgKiBAbm90ZSB0aGlzIGlzIG5vdCBmb3IgZ2VuZXJhbCB1c2UgYnV0IGp1c3QgZm9yIHN1
YmNsYXNzZXMgdGhhdCB3YW50CiAgKiAgICAgICB0byBkZWZpbmUgdGhlaXIgb3duIGJhY2tpbmcg
c3RvcmUuCiAgKi8KLXZvaWQgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9jbGlwKEV3a19WaWV3X1Bh
aW50X0NvbnRleHQqIGN0eHQsIGNvbnN0IEVpbmFfUmVjdGFuZ2xlKiBhcmVhKQordm9pZCBld2tf
dmlld19wYWludF9jb250ZXh0X2NsaXAoRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCAqY3R4dCwgY29u
c3QgRWluYV9SZWN0YW5nbGUgKmFyZWEpCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk4oY3R4dCk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oYXJlYSk7CkBAIC0zMjUw
LDcgKzMyNTAsNyBAQCB2b2lkIGV3a192aWV3X3BhaW50X2NvbnRleHRfY2xpcChFd2tfVmlld19Q
YWludF9Db250ZXh0KiBjdHh0LCBjb25zdCBFaW5hX1JlY3RhbgogICogQG5vdGUgdGhpcyBpcyBu
b3QgZm9yIGdlbmVyYWwgdXNlIGJ1dCBqdXN0IGZvciBzdWJjbGFzc2VzIHRoYXQgd2FudAogICog
ICAgICAgdG8gZGVmaW5lIHRoZWlyIG93biBiYWNraW5nIHN0b3JlLgogICovCi12b2lkIGV3a192
aWV3X3BhaW50X2NvbnRleHRfcGFpbnQoRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCogY3R4dCwgY29u
c3QgRWluYV9SZWN0YW5nbGUqIGFyZWEpCit2b2lkIGV3a192aWV3X3BhaW50X2NvbnRleHRfcGFp
bnQoRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCAqY3R4dCwgY29uc3QgRWluYV9SZWN0YW5nbGUgKmFy
ZWEpCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oY3R4dCk7CiAgICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk4oYXJlYSk7CkBAIC0zMjgyLDcgKzMyODIsNyBAQCB2b2lkIGV3
a192aWV3X3BhaW50X2NvbnRleHRfcGFpbnQoRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCogY3R4dCwg
Y29uc3QgRWluYV9SZWN0YQogICogQG5vdGUgdGhpcyBpcyBub3QgZm9yIGdlbmVyYWwgdXNlIGJ1
dCBqdXN0IGZvciBzdWJjbGFzc2VzIHRoYXQgd2FudAogICogICAgICAgdG8gZGVmaW5lIHRoZWly
IG93biBiYWNraW5nIHN0b3JlLgogICovCi12b2lkIGV3a192aWV3X3BhaW50X2NvbnRleHRfcGFp
bnRfY29udGVudHMoRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCogY3R4dCwgY29uc3QgRWluYV9SZWN0
YW5nbGUqIGFyZWEpCit2b2lkIGV3a192aWV3X3BhaW50X2NvbnRleHRfcGFpbnRfY29udGVudHMo
RXdrX1ZpZXdfUGFpbnRfQ29udGV4dCAqY3R4dCwgY29uc3QgRWluYV9SZWN0YW5nbGUgKmFyZWEp
CiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oY3R4dCk7CiAgICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk4oYXJlYSk7CkBAIC0zMzA0LDcgKzMzMDQsNyBAQCB2b2lkIGV3a192
aWV3X3BhaW50X2NvbnRleHRfcGFpbnRfY29udGVudHMoRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCog
Y3R4dCwgY29uc3QgRQogICogQHBhcmFtIHNjYWxlX3ggc2NhbGUgZmFjdG9yIGZvciB0aGUgWCBk
aW1lbnNpb24uCiAgKiBAcGFyYW0gc2NhbGVfeSBzY2FsZSBmYWN0b3IgZm9yIHRoZSBZIGRpbWVu
c2lvbi4KICAqLwotdm9pZCBld2tfdmlld19wYWludF9jb250ZXh0X3NjYWxlKEV3a19WaWV3X1Bh
aW50X0NvbnRleHQqIGN0eHQsIGZsb2F0IHNjYWxlX3gsIGZsb2F0IHNjYWxlX3kpCit2b2lkIGV3
a192aWV3X3BhaW50X2NvbnRleHRfc2NhbGUoRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCAqY3R4dCwg
ZmxvYXQgc2NhbGVfeCwgZmxvYXQgc2NhbGVfeSkKIHsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxM
X1JFVFVSTihjdHh0KTsKIApAQCAtMzMyMCw3ICszMzIwLDcgQEAgdm9pZCBld2tfdmlld19wYWlu
dF9jb250ZXh0X3NjYWxlKEV3a19WaWV3X1BhaW50X0NvbnRleHQqIGN0eHQsIGZsb2F0IHNjYWxl
X3gsIGYKICAqIEBwYXJhbSB4ICAgIGFtb3VudCBvZiBwaXhlbHMgdG8gdHJhbnNsYXRlIGluIHRo
ZSBYIGRpbWVuc2lvbi4KICAqIEBwYXJhbSB5ICAgIGFtb3VudCBvZiBwaXhlbHMgdG8gdHJhbnNs
YXRlIGluIHRoZSBZIGRpbWVuc2lvbi4KICAqLwotdm9pZCBld2tfdmlld19wYWludF9jb250ZXh0
X3RyYW5zbGF0ZShFd2tfVmlld19QYWludF9Db250ZXh0KiBjdHh0LCBmbG9hdCB4LCBmbG9hdCB5
KQordm9pZCBld2tfdmlld19wYWludF9jb250ZXh0X3RyYW5zbGF0ZShFd2tfVmlld19QYWludF9D
b250ZXh0ICpjdHh0LCBmbG9hdCB4LCBmbG9hdCB5KQogewogICAgIEVJTkFfU0FGRVRZX09OX05V
TExfUkVUVVJOKGN0eHQpOwogCkBAIC0zMzU0LDcgKzMzNTQsNyBAQCB2b2lkIGV3a192aWV3X3Bh
aW50X2NvbnRleHRfdHJhbnNsYXRlKEV3a19WaWV3X1BhaW50X0NvbnRleHQqIGN0eHQsIGZsb2F0
IHgsIGZsbwogICogQG5vdGUgdGhpcyBpcyBub3QgZm9yIGdlbmVyYWwgdXNlIGJ1dCBqdXN0IGZv
ciBzdWJjbGFzc2VzIHRoYXQgd2FudAogICogICAgICAgdG8gZGVmaW5lIHRoZWlyIG93biBiYWNr
aW5nIHN0b3JlLgogICovCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfcGFpbnQoRXdrX1ZpZXdfUHJpdmF0
ZV9EYXRhKiBwcml2LCBjYWlyb190KiBjciwgY29uc3QgRWluYV9SZWN0YW5nbGUqIGFyZWEpCitF
aW5hX0Jvb2wgZXdrX3ZpZXdfcGFpbnQoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpwcml2LCBjYWly
b190ICpjciwgY29uc3QgRWluYV9SZWN0YW5nbGUgKmFyZWEpCiB7CiAgICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk5fVkFMKHByaXYsIEVJTkFfRkFMU0UpOwogICAgIEVJTkFfU0FGRVRZX09O
X05VTExfUkVUVVJOX1ZBTChjciwgRUlOQV9GQUxTRSk7CkBAIC0zMzcyLDcgKzMzNzIsNyBAQCBF
aW5hX0Jvb2wgZXdrX3ZpZXdfcGFpbnQoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2LCBjYWly
b190KiBjciwgY29uc3QgRWluYV9SZQogICAgIGdjLmNsaXAocmVjdCk7CiAgICAgaWYgKHZpZXct
PmlzVHJhbnNwYXJlbnQoKSkKICAgICAgICAgZ2MuY2xlYXJSZWN0KHJlY3QpOwotICAgIHZpZXct
PnBhaW50KCZnYywgIHJlY3QpOworICAgIHZpZXctPnBhaW50KCZnYywgcmVjdCk7CiAgICAgZ2Mu
cmVzdG9yZSgpOwogICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwogCkBAIC0zNDA2LDcgKzM0MDYsNyBA
QCBFaW5hX0Jvb2wgZXdrX3ZpZXdfcGFpbnQoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2LCBj
YWlyb190KiBjciwgY29uc3QgRWluYV9SZQogICogQG5vdGUgdGhpcyBpcyBub3QgZm9yIGdlbmVy
YWwgdXNlIGJ1dCBqdXN0IGZvciBzdWJjbGFzc2VzIHRoYXQgd2FudAogICogICAgICAgdG8gZGVm
aW5lIHRoZWlyIG93biBiYWNraW5nIHN0b3JlLgogICovCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfcGFp
bnRfY29udGVudHMoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2LCBjYWlyb190KiBjciwgY29u
c3QgRWluYV9SZWN0YW5nbGUqIGFyZWEpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfcGFpbnRfY29udGVu
dHMoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpwcml2LCBjYWlyb190ICpjciwgY29uc3QgRWluYV9S
ZWN0YW5nbGUgKmFyZWEpCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHBy
aXYsIEVJTkFfRkFMU0UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChjciwg
RUlOQV9GQUxTRSk7CkBAIC0zNDM3LDcgKzM0MzcsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfcGFp
bnRfY29udGVudHMoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2LCBjYWlyb190KiBjciwgY29u
cwogICoKICAqIEVtaXRzIHNpZ25hbDogInJlYWR5IiB3aXRoIG5vIHBhcmFtZXRlcnMuCiAgKi8K
LXZvaWQgZXdrX3ZpZXdfcmVhZHkoRXZhc19PYmplY3QqIG8pCit2b2lkIGV3a192aWV3X3JlYWR5
KEV2YXNfT2JqZWN0ICpvKQogewogICAgIERCRygibz0lcCIsIG8pOwogICAgIGV2YXNfb2JqZWN0
X3NtYXJ0X2NhbGxiYWNrX2NhbGwobywgInJlYWR5IiwgMCk7CkBAIC0zNDUxLDcgKzM0NTEsNyBA
QCB2b2lkIGV3a192aWV3X3JlYWR5KEV2YXNfT2JqZWN0KiBvKQogICogRW1pdHMgc2lnbmFsOiAi
aW5wdXRtZXRob2QsY2hhbmdlZCIgd2l0aCBhIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIGl0
J3MKICAqIGVuYWJsZWQgb3Igbm90LgogICovCi12b2lkIGV3a192aWV3X2lucHV0X21ldGhvZF9z
dGF0ZV9zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCBhY3RpdmUpCit2b2lkIGV3a192aWV3
X2lucHV0X21ldGhvZF9zdGF0ZV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBhY3RpdmUp
CiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCk7CiAgICAgRVdLX1ZJRVdf
UFJJVl9HRVQoc2QsIHByaXYpOwpAQCAtMzQ4MCw3ICszNDgwLDcgQEAgdm9pZCBld2tfdmlld19p
bnB1dF9tZXRob2Rfc3RhdGVfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgYWN0aXZlKQog
ICAgICAgICB9CiAgICAgfQogCi0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChv
LCAiaW5wdXRtZXRob2QsY2hhbmdlZCIsICh2b2lkKilhY3RpdmUpOworICAgIGV2YXNfb2JqZWN0
X3NtYXJ0X2NhbGxiYWNrX2NhbGwobywgImlucHV0bWV0aG9kLGNoYW5nZWQiLCAodm9pZCAqKWFj
dGl2ZSk7CiB9CiAKIC8qKgpAQCAtMzQ4OSwxMCArMzQ4OSwxMCBAQCB2b2lkIGV3a192aWV3X2lu
cHV0X21ldGhvZF9zdGF0ZV9zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCBhY3RpdmUpCiAg
KgogICogRW1pdHMgc2lnbmFsOiAidGl0bGUsY2hhbmdlZCIgd2l0aCBwb2ludGVyIHRvIG5ldyB0
aXRsZSBzdHJpbmcuCiAgKi8KLXZvaWQgZXdrX3ZpZXdfdGl0bGVfc2V0KEV2YXNfT2JqZWN0KiBv
LCBjb25zdCBjaGFyKiB0aXRsZSkKK3ZvaWQgZXdrX3ZpZXdfdGl0bGVfc2V0KEV2YXNfT2JqZWN0
ICpvLCBjb25zdCBjaGFyICp0aXRsZSkKIHsKICAgICBEQkcoIm89JXAsIHRpdGxlPSVzIiwgbywg
dGl0bGUgPyB0aXRsZSA6ICIobnVsbCkiKTsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFj
a19jYWxsKG8sICJ0aXRsZSxjaGFuZ2VkIiwgKHZvaWQqKXRpdGxlKTsKKyAgICBldmFzX29iamVj
dF9zbWFydF9jYWxsYmFja19jYWxsKG8sICJ0aXRsZSxjaGFuZ2VkIiwgKHZvaWQgKil0aXRsZSk7
CiB9CiAKIC8qKgpAQCAtMzUwMSwxMiArMzUwMSwxMiBAQCB2b2lkIGV3a192aWV3X3RpdGxlX3Nl
dChFdmFzX09iamVjdCogbywgY29uc3QgY2hhciogdGl0bGUpCiAgKgogICogRW1pdHMgc2lnbmFs
OiAidXJpLGNoYW5nZWQiIHdpdGggcG9pbnRlciB0byB0aGUgbmV3IHVyaSBzdHJpbmcuCiAgKi8K
LXZvaWQgZXdrX3ZpZXdfdXJpX2NoYW5nZWQoRXZhc19PYmplY3QqIG8pCit2b2lkIGV3a192aWV3
X3VyaV9jaGFuZ2VkKEV2YXNfT2JqZWN0ICpvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9S
RVRVUk4obywgc2QpOwotICAgIGNvbnN0IGNoYXIqIHVyaSA9IGV3a19mcmFtZV91cmlfZ2V0KHNk
LT5tYWluX2ZyYW1lKTsKKyAgICBjb25zdCBjaGFyICp1cmkgPSBld2tfZnJhbWVfdXJpX2dldChz
ZC0+bWFpbl9mcmFtZSk7CiAgICAgREJHKCJvPSVwLCB1cmk9JXMiLCBvLCB1cmkgPyB1cmkgOiAi
KG51bGwpIik7Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAidXJpLGNo
YW5nZWQiLCAodm9pZCopdXJpKTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxs
KG8sICJ1cmksY2hhbmdlZCIsICh2b2lkICopdXJpKTsKIH0KIAogLyoqCkBAIC0zNTE3LDcgKzM1
MTcsNyBAQCB2b2lkIGV3a192aWV3X3VyaV9jaGFuZ2VkKEV2YXNfT2JqZWN0KiBvKQogICoKICAq
IEVtaXRzIHNpZ25hbDogImxvYWQsc3RhcnRlZCIgd2l0aCBubyBwYXJhbWV0ZXJzLgogICovCi12
b2lkIGV3a192aWV3X2xvYWRfc3RhcnRlZChFdmFzX09iamVjdCogbykKK3ZvaWQgZXdrX3ZpZXdf
bG9hZF9zdGFydGVkKEV2YXNfT2JqZWN0ICpvKQogewogICAgIERCRygibz0lcCIsIG8pOwogICAg
IGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobywgImxvYWQsc3RhcnRlZCIsIDApOwpA
QCAtMzUzMCwxMCArMzUzMCwxMCBAQCB2b2lkIGV3a192aWV3X2xvYWRfc3RhcnRlZChFdmFzX09i
amVjdCogbykKICAqCiAgKiBFbWl0cyBzaWduYWw6ICJsb2FkLHN0YXJ0ZWQiIG9uIG1haW4gZnJh
bWUgd2l0aCBubyBwYXJhbWV0ZXJzLgogICovCi12b2lkIGV3a192aWV3X2ZyYW1lX21haW5fbG9h
ZF9zdGFydGVkKEV2YXNfT2JqZWN0KiBvKQordm9pZCBld2tfdmlld19mcmFtZV9tYWluX2xvYWRf
c3RhcnRlZChFdmFzX09iamVjdCAqbykKIHsKICAgICBEQkcoIm89JXAiLCBvKTsKLSAgICBFdmFz
X09iamVjdCogZnJhbWUgPSBld2tfdmlld19mcmFtZV9tYWluX2dldChvKTsKKyAgICBFdmFzX09i
amVjdCAqZnJhbWUgPSBld2tfdmlld19mcmFtZV9tYWluX2dldChvKTsKICAgICBldmFzX29iamVj
dF9zbWFydF9jYWxsYmFja19jYWxsKGZyYW1lLCAibG9hZCxzdGFydGVkIiwgMCk7CiB9CiAKQEAg
LTM1NDUsNyArMzU0NSw3IEBAIHZvaWQgZXdrX3ZpZXdfZnJhbWVfbWFpbl9sb2FkX3N0YXJ0ZWQo
RXZhc19PYmplY3QqIG8pCiAgKgogICogRW1pdHMgc2lnbmFsOiAibG9hZCxwcm92aXNpb25hbCIg
b24gVmlldyB3aXRoIG5vIHBhcmFtZXRlcnMuCiAgKi8KLXZvaWQgZXdrX3ZpZXdfbG9hZF9wcm92
aXNpb25hbChFdmFzX09iamVjdCogbykKK3ZvaWQgZXdrX3ZpZXdfbG9hZF9wcm92aXNpb25hbChF
dmFzX09iamVjdCAqbykKIHsKICAgICBEQkcoIm89JXAiLCBvKTsKICAgICBldmFzX29iamVjdF9z
bWFydF9jYWxsYmFja19jYWxsKG8sICJsb2FkLHByb3Zpc2lvbmFsIiwgMCk7CkBAIC0zNTU5LDcg
KzM1NTksNyBAQCB2b2lkIGV3a192aWV3X2xvYWRfcHJvdmlzaW9uYWwoRXZhc19PYmplY3QqIG8p
CiAgKgogICogRW1pdHMgc2lnbmFsOiAibG9hZCxuZXd3aW5kb3csc2hvdyIgb24gdmlldyB3aXRo
IG5vIHBhcmFtZXRlcnMuCiAgKi8KLXZvaWQgZXdrX3ZpZXdfbG9hZF9zaG93KEV2YXNfT2JqZWN0
KiBvKQordm9pZCBld2tfdmlld19sb2FkX3Nob3coRXZhc19PYmplY3QgKm8pCiB7CiAgICAgREJH
KCJvPSVwIiwgbyk7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAibG9h
ZCxuZXd3aW5kb3csc2hvdyIsIDApOwpAQCAtMzU3Miw3ICszNTcyLDcgQEAgdm9pZCBld2tfdmll
d19sb2FkX3Nob3coRXZhc19PYmplY3QqIG8pCiAgKgogICogQHBhcmFtIG8gVmlldy4KICAqLwot
dm9pZCBld2tfdmlld19mcmFtZV9tYWluX2NsZWFyZWQoRXZhc19PYmplY3QqIG8pCit2b2lkIGV3
a192aWV3X2ZyYW1lX21haW5fY2xlYXJlZChFdmFzX09iamVjdCAqbykKIHsKICAgICBEQkcoIm89
JXAiLCBvKTsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkKTsKQEAgLTM1ODgs
MTAgKzM1ODgsMTAgQEAgdm9pZCBld2tfdmlld19mcmFtZV9tYWluX2NsZWFyZWQoRXZhc19PYmpl
Y3QqIG8pCiAgKgogICogRW1pdHMgc2lnbmFsOiAiaWNvbixyZWNlaXZlZCIgd2l0aCBubyBwYXJh
bWV0ZXJzLgogICovCi12b2lkIGV3a192aWV3X2ZyYW1lX21haW5faWNvbl9yZWNlaXZlZChFdmFz
X09iamVjdCogbykKK3ZvaWQgZXdrX3ZpZXdfZnJhbWVfbWFpbl9pY29uX3JlY2VpdmVkKEV2YXNf
T2JqZWN0ICpvKQogewogICAgIERCRygibz0lcCIsIG8pOwotICAgIEV2YXNfT2JqZWN0KiBmcmFt
ZSA9IGV3a192aWV3X2ZyYW1lX21haW5fZ2V0KG8pOworICAgIEV2YXNfT2JqZWN0ICpmcmFtZSA9
IGV3a192aWV3X2ZyYW1lX21haW5fZ2V0KG8pOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxi
YWNrX2NhbGwoZnJhbWUsICJpY29uLHJlY2VpdmVkIiwgMCk7CiB9CiAKQEAgLTM2MDUsMTAgKzM2
MDUsMTAgQEAgdm9pZCBld2tfdmlld19mcmFtZV9tYWluX2ljb25fcmVjZWl2ZWQoRXZhc19PYmpl
Y3QqIG8pCiAgKiBAbm90ZSB0aGVyZSBzaG91bGQgbm90IGJlIGFueSBlcnJvciBzdHVmZiBoZXJl
LCBidXQgdHJ5aW5nIHRvIGJlCiAgKiAgICAgICBjb21wYXRpYmxlIHdpdGggcHJldmlvdXMgV2Vi
S2l0LgogICovCi12b2lkIGV3a192aWV3X2xvYWRfZmluaXNoZWQoRXZhc19PYmplY3QqIG8sIGNv
bnN0IEV3a19GcmFtZV9Mb2FkX0Vycm9yKiBlcnJvcikKK3ZvaWQgZXdrX3ZpZXdfbG9hZF9maW5p
c2hlZChFdmFzX09iamVjdCAqbywgY29uc3QgRXdrX0ZyYW1lX0xvYWRfRXJyb3IgKmVycm9yKQog
ewogICAgIERCRygibz0lcCwgZXJyb3I9JXAiLCBvLCBlcnJvcik7Ci0gICAgZXZhc19vYmplY3Rf
c21hcnRfY2FsbGJhY2tfY2FsbChvLCAibG9hZCxmaW5pc2hlZCIsICh2b2lkKillcnJvcik7Cisg
ICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAibG9hZCxmaW5pc2hlZCIsICh2
b2lkICopZXJyb3IpOwogfQogCiAvKioKQEAgLTM2MTcsMTAgKzM2MTcsMTAgQEAgdm9pZCBld2tf
dmlld19sb2FkX2ZpbmlzaGVkKEV2YXNfT2JqZWN0KiBvLCBjb25zdCBFd2tfRnJhbWVfTG9hZF9F
cnJvciogZXJyb3IpCiAgKgogICogRW1pdHMgc2lnbmFsOiAibG9hZCxlcnJvciIgd2l0aCBwb2lu
dGVyIHRvIEV3a19GcmFtZV9Mb2FkX0Vycm9yLgogICovCi12b2lkIGV3a192aWV3X2xvYWRfZXJy
b3IoRXZhc19PYmplY3QqIG8sIGNvbnN0IEV3a19GcmFtZV9Mb2FkX0Vycm9yKiBlcnJvcikKK3Zv
aWQgZXdrX3ZpZXdfbG9hZF9lcnJvcihFdmFzX09iamVjdCAqbywgY29uc3QgRXdrX0ZyYW1lX0xv
YWRfRXJyb3IgKmVycm9yKQogewogICAgIERCRygibz0lcCwgZXJyb3I9JXAiLCBvLCBlcnJvcik7
Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAibG9hZCxlcnJvciIsICh2
b2lkKillcnJvcik7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAibG9h
ZCxlcnJvciIsICh2b2lkICopZXJyb3IpOwogfQogCiAvKioKQEAgLTM2MjksNyArMzYyOSw3IEBA
IHZvaWQgZXdrX3ZpZXdfbG9hZF9lcnJvcihFdmFzX09iamVjdCogbywgY29uc3QgRXdrX0ZyYW1l
X0xvYWRfRXJyb3IqIGVycm9yKQogICoKICAqIEVtaXRzIHNpZ25hbDogImxvYWQscHJvZ3Jlc3Mi
IHdpdGggcG9pbnRlciB0byBhIGRvdWJsZSBmcm9tIDAuMCB0byAxLjAuCiAgKi8KLXZvaWQgZXdr
X3ZpZXdfbG9hZF9wcm9ncmVzc19jaGFuZ2VkKEV2YXNfT2JqZWN0KiBvKQordm9pZCBld2tfdmll
d19sb2FkX3Byb2dyZXNzX2NoYW5nZWQoRXZhc19PYmplY3QgKm8pCiB7CiAgICAgRVdLX1ZJRVdf
U0RfR0VUX09SX1JFVFVSTihvLCBzZCk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJO
KHNkLCBwcml2KTsKQEAgLTM2NTEsNyArMzY1MSw3IEBAIHZvaWQgZXdrX3ZpZXdfbG9hZF9wcm9n
cmVzc19jaGFuZ2VkKEV2YXNfT2JqZWN0KiBvKQogICoKICAqIEVtaXRzIHNpZ25hbDogInJlc3Rv
cmUiIHdpdGggZnJhbWUuCiAgKi8KLXZvaWQgZXdrX3ZpZXdfcmVzdG9yZV9zdGF0ZShFdmFzX09i
amVjdCogbywgRXZhc19PYmplY3QqIGZyYW1lKQordm9pZCBld2tfdmlld19yZXN0b3JlX3N0YXRl
KEV2YXNfT2JqZWN0ICpvLCBFdmFzX09iamVjdCAqZnJhbWUpCiB7CiAgICAgZXZhc19vYmplY3Rf
c21hcnRfY2FsbGJhY2tfY2FsbChvLCAicmVzdG9yZSIsIGZyYW1lKTsKIH0KQEAgLTM2NzcsMTQg
KzM2NzcsMTQgQEAgdm9pZCBld2tfdmlld19yZXN0b3JlX3N0YXRlKEV2YXNfT2JqZWN0KiBvLCBF
dmFzX09iamVjdCogZnJhbWUpCiAgKgogICogQHNlZSBld2tfd2luZG93X2ZlYXR1cmVzX3JlZigp
LgogICovCi1FdmFzX09iamVjdCogZXdrX3ZpZXdfd2luZG93X2NyZWF0ZShFdmFzX09iamVjdCog
bywgRWluYV9Cb29sIGphdmFzY3JpcHQsIGNvbnN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzKiBj
b3JlRmVhdHVyZXMpCitFdmFzX09iamVjdCAqZXdrX3ZpZXdfd2luZG93X2NyZWF0ZShFdmFzX09i
amVjdCAqbywgRWluYV9Cb29sIGphdmFzY3JpcHQsIGNvbnN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1
cmVzICpjb3JlRmVhdHVyZXMpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBz
ZCwgMCk7CiAKICAgICBpZiAoIXNkLT5hcGktPndpbmRvd19jcmVhdGUpCiAgICAgICAgIHJldHVy
biBvOwogCi0gICAgRXdrX1dpbmRvd19GZWF0dXJlcyogd2luZG93X2ZlYXR1cmVzID0gZXdrX3dp
bmRvd19mZWF0dXJlc19uZXdfZnJvbV9jb3JlKGNvcmVGZWF0dXJlcyk7CisgICAgRXdrX1dpbmRv
d19GZWF0dXJlcyAqd2luZG93X2ZlYXR1cmVzID0gZXdrX3dpbmRvd19mZWF0dXJlc19uZXdfZnJv
bV9jb3JlKGNvcmVGZWF0dXJlcyk7CiAgICAgRXZhc19PYmplY3QqIHZpZXcgPSBzZC0+YXBpLT53
aW5kb3dfY3JlYXRlKHNkLCBqYXZhc2NyaXB0LCB3aW5kb3dfZmVhdHVyZXMpOwogICAgIGV3a193
aW5kb3dfZmVhdHVyZXNfdW5yZWYod2luZG93X2ZlYXR1cmVzKTsKIApAQCAtMzcwMiw3ICszNzAy
LDcgQEAgRXZhc19PYmplY3QqIGV3a192aWV3X3dpbmRvd19jcmVhdGUoRXZhc19PYmplY3QqIG8s
IEVpbmFfQm9vbCBqYXZhc2NyaXB0LCBjb25zdAogICoKICAqIEBwYXJhbSBvIFZpZXcgdG8gYmUg
Y2xvc2VkLgogICovCi12b2lkIGV3a192aWV3X3dpbmRvd19jbG9zZShFdmFzX09iamVjdCogbykK
K3ZvaWQgZXdrX3ZpZXdfd2luZG93X2Nsb3NlKEV2YXNfT2JqZWN0ICpvKQogewogICAgIEVXS19W
SUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QpOwogCkBAIC0zNzE4LDcgKzM3MTgsNyBAQCB2b2lk
IGV3a192aWV3X3dpbmRvd19jbG9zZShFdmFzX09iamVjdCogbykKICAqCiAgKiBFbWl0cyBzaWdu
YWw6ICJsaW5rLGhvdmVyLGluIgogICovCi12b2lkIGV3a192aWV3X21vdXNlX2xpbmtfaG92ZXJf
aW4oRXZhc19PYmplY3QqIG8sIHZvaWQqIGRhdGEpCit2b2lkIGV3a192aWV3X21vdXNlX2xpbmtf
aG92ZXJfaW4oRXZhc19PYmplY3QgKm8sIHZvaWQgKmRhdGEpCiB7CiAgICAgZXZhc19vYmplY3Rf
c21hcnRfY2FsbGJhY2tfY2FsbChvLCAibGluayxob3ZlcixpbiIsIGRhdGEpOwogfQpAQCAtMzcy
OSw3ICszNzI5LDcgQEAgdm9pZCBld2tfdmlld19tb3VzZV9saW5rX2hvdmVyX2luKEV2YXNfT2Jq
ZWN0KiBvLCB2b2lkKiBkYXRhKQogICoKICAqIEVtaXRzIHNpZ25hbDogImxpbmssaG92ZXIsb3V0
IgogICovCi12b2lkIGV3a192aWV3X21vdXNlX2xpbmtfaG92ZXJfb3V0KEV2YXNfT2JqZWN0KiBv
KQordm9pZCBld2tfdmlld19tb3VzZV9saW5rX2hvdmVyX291dChFdmFzX09iamVjdCAqbykKIHsK
ICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG8sICJsaW5rLGhvdmVyLG91dCIs
IDApOwogfQpAQCAtMzc0MCw3ICszNzQwLDcgQEAgdm9pZCBld2tfdmlld19tb3VzZV9saW5rX2hv
dmVyX291dChFdmFzX09iamVjdCogbykKICAqCiAgKiBFbWl0cyBzaWduYWw6ICJ0b29sYmFycyx2
aXNpYmxlLHNldCIgd2l0aCBhIHBvaW50ZXIgdG8gYSBib29sZWFuLgogICovCi12b2lkIGV3a192
aWV3X3Rvb2xiYXJzX3Zpc2libGVfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgdmlzaWJs
ZSkKK3ZvaWQgZXdrX3ZpZXdfdG9vbGJhcnNfdmlzaWJsZV9zZXQoRXZhc19PYmplY3QgKm8sIEVp
bmFfQm9vbCB2aXNpYmxlKQogewogICAgIERCRygibz0lcCAodmlzaWJsZT0lZCkiLCBvLCAhIXZp
c2libGUpOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobywgInRvb2xiYXJz
LHZpc2libGUsc2V0IiwgJnZpc2libGUpOwpAQCAtMzc1Nyw3ICszNzU3LDcgQEAgdm9pZCBld2tf
dmlld190b29sYmFyc192aXNpYmxlX3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIHZpc2li
bGUpCiAgKgogICogRW1pdHMgc2lnbmFsOiAidG9vbGJhcnMsdmlzaWJsZSxnZXQiIHdpdGggYSBw
b2ludGVyIHRvIGEgYm9vbGVhbi4KICAqLwotdm9pZCBld2tfdmlld190b29sYmFyc192aXNpYmxl
X2dldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sKiB2aXNpYmxlKQordm9pZCBld2tfdmlld190
b29sYmFyc192aXNpYmxlX2dldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sICp2aXNpYmxlKQog
ewogICAgIERCRygiJXMsIG89JXAiLCBfX2Z1bmNfXywgbyk7CiAgICAgKnZpc2libGUgPSBFSU5B
X0ZBTFNFOwpAQCAtMzc3Myw3ICszNzczLDcgQEAgdm9pZCBld2tfdmlld190b29sYmFyc192aXNp
YmxlX2dldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sKiB2aXNpYmxlKQogICoKICAqIEVtaXRz
IHNpZ25hbDogInN0YXR1c2Jhcix2aXNpYmxlLHNldCIgd2l0aCBhIHBvaW50ZXIgdG8gYSBib29s
ZWFuLgogICovCi12b2lkIGV3a192aWV3X3N0YXR1c2Jhcl92aXNpYmxlX3NldChFdmFzX09iamVj
dCogbywgRWluYV9Cb29sIHZpc2libGUpCit2b2lkIGV3a192aWV3X3N0YXR1c2Jhcl92aXNpYmxl
X3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIHZpc2libGUpCiB7CiAgICAgREJHKCJvPSVw
ICh2aXNpYmxlPSVkKSIsIG8sICEhdmlzaWJsZSk7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2Fs
bGJhY2tfY2FsbChvLCAic3RhdHVzYmFyLHZpc2libGUsc2V0IiwgJnZpc2libGUpOwpAQCAtMzc5
MCw3ICszNzkwLDcgQEAgdm9pZCBld2tfdmlld19zdGF0dXNiYXJfdmlzaWJsZV9zZXQoRXZhc19P
YmplY3QqIG8sIEVpbmFfQm9vbCB2aXNpYmxlKQogICoKICAqIEVtaXRzIHNpZ25hbDogInN0YXR1
c2Jhcix2aXNpYmxlLGdldCIgd2l0aCBhIHBvaW50ZXIgdG8gYSBib29sZWFuLgogICovCi12b2lk
IGV3a192aWV3X3N0YXR1c2Jhcl92aXNpYmxlX2dldChFdmFzX09iamVjdCogbywgRWluYV9Cb29s
KiB2aXNpYmxlKQordm9pZCBld2tfdmlld19zdGF0dXNiYXJfdmlzaWJsZV9nZXQoRXZhc19PYmpl
Y3QgKm8sIEVpbmFfQm9vbCAqdmlzaWJsZSkKIHsKICAgICBEQkcoIiVzLCBvPSVwIiwgX19mdW5j
X18sIG8pOwogICAgICp2aXNpYmxlID0gRUlOQV9GQUxTRTsKQEAgLTM4MDYsNyArMzgwNiw3IEBA
IHZvaWQgZXdrX3ZpZXdfc3RhdHVzYmFyX3Zpc2libGVfZ2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5h
X0Jvb2wqIHZpc2libGUpCiAgKgogICogRW1pdHMgc2lnbmFsOiAic3RhdHVzYmFyLHRleHQsc2V0
IiB3aXRoIGEgc3RyaW5nLgogICovCi12b2lkIGV3a192aWV3X3N0YXR1c2Jhcl90ZXh0X3NldChF
dmFzX09iamVjdCogbywgY29uc3QgY2hhciogdGV4dCkKK3ZvaWQgZXdrX3ZpZXdfc3RhdHVzYmFy
X3RleHRfc2V0KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICp0ZXh0KQogewogICAgIERCRygi
bz0lcCAodGV4dD0lcykiLCBvLCB0ZXh0KTsKICAgICBJTkYoInN0YXR1cyBiYXIgdGV4dCBzZXQ6
ICVzIiwgdGV4dCk7CkBAIC0zODIyLDcgKzM4MjIsNyBAQCB2b2lkIGV3a192aWV3X3N0YXR1c2Jh
cl90ZXh0X3NldChFdmFzX09iamVjdCogbywgY29uc3QgY2hhciogdGV4dCkKICAqCiAgKiBFbWl0
cyBzaWduYWw6ICJzY3JvbGxiYXJzLHZpc2libGUsc2V0IiB3aXRoIGEgcG9pbnRlciB0byBhIGJv
b2xlYW4uCiAgKi8KLXZvaWQgZXdrX3ZpZXdfc2Nyb2xsYmFyc192aXNpYmxlX3NldChFdmFzX09i
amVjdCogbywgRWluYV9Cb29sIHZpc2libGUpCit2b2lkIGV3a192aWV3X3Njcm9sbGJhcnNfdmlz
aWJsZV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCB2aXNpYmxlKQogewogICAgIERCRygi
bz0lcCAodmlzaWJsZT0lZCkiLCBvLCAhIXZpc2libGUpOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0
X2NhbGxiYWNrX2NhbGwobywgInNjcm9sbGJhcnMsdmlzaWJsZSxzZXQiLCAmdmlzaWJsZSk7CkBA
IC0zODM5LDcgKzM4MzksNyBAQCB2b2lkIGV3a192aWV3X3Njcm9sbGJhcnNfdmlzaWJsZV9zZXQo
RXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCB2aXNpYmxlKQogICoKICAqIEVtaXRzIHNpZ25hbDog
InNjcm9sbGJhcnMsdmlzaWJsZSxnZXQiIHdpdGggYSBwb2ludGVyIHRvIGEgYm9vbGVhbi4KICAq
Lwotdm9pZCBld2tfdmlld19zY3JvbGxiYXJzX3Zpc2libGVfZ2V0KEV2YXNfT2JqZWN0KiBvLCBF
aW5hX0Jvb2wqIHZpc2libGUpCit2b2lkIGV3a192aWV3X3Njcm9sbGJhcnNfdmlzaWJsZV9nZXQo
RXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCAqdmlzaWJsZSkKIHsKICAgICBEQkcoIiVzLCBvPSVw
IiwgX19mdW5jX18sIG8pOwogICAgICp2aXNpYmxlID0gRUlOQV9GQUxTRTsKQEAgLTM4NTUsNyAr
Mzg1NSw3IEBAIHZvaWQgZXdrX3ZpZXdfc2Nyb2xsYmFyc192aXNpYmxlX2dldChFdmFzX09iamVj
dCogbywgRWluYV9Cb29sKiB2aXNpYmxlKQogICoKICAqIEVtaXRzIHNpZ25hbDogIm1lbnViYXIs
dmlzaWJsZSxzZXQiIHdpdGggYSBwb2ludGVyIHRvIGEgYm9vbGVhbi4KICAqLwotdm9pZCBld2tf
dmlld19tZW51YmFyX3Zpc2libGVfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgdmlzaWJs
ZSkKK3ZvaWQgZXdrX3ZpZXdfbWVudWJhcl92aXNpYmxlX3NldChFdmFzX09iamVjdCAqbywgRWlu
YV9Cb29sIHZpc2libGUpCiB7CiAgICAgREJHKCJvPSVwICh2aXNpYmxlPSVkKSIsIG8sICEhdmlz
aWJsZSk7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAibWVudWJhcix2
aXNpYmxlLHNldCIsICZ2aXNpYmxlKTsKQEAgLTM4NzIsNyArMzg3Miw3IEBAIHZvaWQgZXdrX3Zp
ZXdfbWVudWJhcl92aXNpYmxlX3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIHZpc2libGUp
CiAgKgogICogRW1pdHMgc2lnbmFsOiAibWVudWJhcix2aXNpYmxlLGdldCIgd2l0aCBhIHBvaW50
ZXIgdG8gYSBib29sZWFuLgogICovCi12b2lkIGV3a192aWV3X21lbnViYXJfdmlzaWJsZV9nZXQo
RXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCogdmlzaWJsZSkKK3ZvaWQgZXdrX3ZpZXdfbWVudWJh
cl92aXNpYmxlX2dldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sICp2aXNpYmxlKQogewogICAg
IERCRygiJXMsIG89JXAiLCBfX2Z1bmNfXywgbyk7CiAgICAgKnZpc2libGUgPSBFSU5BX0ZBTFNF
OwpAQCAtMzg4OSw3ICszODg5LDcgQEAgdm9pZCBld2tfdmlld19tZW51YmFyX3Zpc2libGVfZ2V0
KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wqIHZpc2libGUpCiAgKiBFbWl0cyBzaWduYWw6ICJ0
b29sdGlwLHRleHQsc2V0IiB3aXRoIGEgc3RyaW5nLiBJZiB0b29sdGlwIG11c3QgYmUgYWN0dWFs
bHkKICAqIHJlbW92ZWQsIHRleHQgd2lsbCBiZSAwIG9yICdcMCcKICAqLwotdm9pZCBld2tfdmll
d190b29sdGlwX3RleHRfc2V0KEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFyKiB0ZXh0KQordm9p
ZCBld2tfdmlld190b29sdGlwX3RleHRfc2V0KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICp0
ZXh0KQogewogICAgIERCRygibz0lcCB0ZXh0PSVzIiwgbywgdGV4dCk7CiAgICAgZXZhc19vYmpl
Y3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAidG9vbHRpcCx0ZXh0LHNldCIsICh2b2lkICopdGV4
dCk7CkBAIC0zOTA0LDcgKzM5MDQsNyBAQCB2b2lkIGV3a192aWV3X3Rvb2x0aXBfdGV4dF9zZXQo
RXZhc19PYmplY3QqIG8sIGNvbnN0IGNoYXIqIHRleHQpCiAgKiBAc291cmNlSUQgU291cmNlIGlk
LgogICoKICAqLwotdm9pZCBld2tfdmlld19hZGRfY29uc29sZV9tZXNzYWdlKEV2YXNfT2JqZWN0
KiBvLCBjb25zdCBjaGFyKiBtZXNzYWdlLCB1bnNpZ25lZCBpbnQgbGluZU51bWJlciwgY29uc3Qg
Y2hhciogc291cmNlSUQpCit2b2lkIGV3a192aWV3X2FkZF9jb25zb2xlX21lc3NhZ2UoRXZhc19P
YmplY3QgKm8sIGNvbnN0IGNoYXIgKm1lc3NhZ2UsIHVuc2lnbmVkIGludCBsaW5lTnVtYmVyLCBj
b25zdCBjaGFyICpzb3VyY2VJRCkKIHsKICAgICBEQkcoIm89JXAgbWVzc2FnZT0lcyBsaW5lTnVt
YmVyPSV1IHNvdXJjZUlEPSVzIiwgbywgbWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlSUQpOwog
ICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QpOwpAQCAtMzkxMyw3ICszOTEzLDcg
QEAgdm9pZCBld2tfdmlld19hZGRfY29uc29sZV9tZXNzYWdlKEV2YXNfT2JqZWN0KiBvLCBjb25z
dCBjaGFyKiBtZXNzYWdlLCB1bnNpZ25lZAogICAgIHNkLT5hcGktPmFkZF9jb25zb2xlX21lc3Nh
Z2Uoc2QsIG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZUlEKTsKIH0KIAotdm9pZCBld2tfdmll
d19ydW5famF2YXNjcmlwdF9hbGVydChFdmFzX09iamVjdCogbywgRXZhc19PYmplY3QqIGZyYW1l
LCBjb25zdCBjaGFyKiBtZXNzYWdlKQordm9pZCBld2tfdmlld19ydW5famF2YXNjcmlwdF9hbGVy
dChFdmFzX09iamVjdCAqbywgRXZhc19PYmplY3QgKmZyYW1lLCBjb25zdCBjaGFyICptZXNzYWdl
KQogewogICAgIERCRygibz0lcCBmcmFtZT0lcCBtZXNzYWdlPSVzIiwgbywgZnJhbWUsIG1lc3Nh
Z2UpOwogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QpOwpAQCAtMzkyNSw3ICsz
OTI1LDcgQEAgdm9pZCBld2tfdmlld19ydW5famF2YXNjcmlwdF9hbGVydChFdmFzX09iamVjdCog
bywgRXZhc19PYmplY3QqIGZyYW1lLCBjb25zdCBjaGEKICAgICBzZC0+YXBpLT5ydW5famF2YXNj
cmlwdF9hbGVydChzZCwgZnJhbWUsIG1lc3NhZ2UpOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdf
cnVuX2phdmFzY3JpcHRfY29uZmlybShFdmFzX09iamVjdCogbywgRXZhc19PYmplY3QqIGZyYW1l
LCBjb25zdCBjaGFyKiBtZXNzYWdlKQorRWluYV9Cb29sIGV3a192aWV3X3J1bl9qYXZhc2NyaXB0
X2NvbmZpcm0oRXZhc19PYmplY3QgKm8sIEV2YXNfT2JqZWN0ICpmcmFtZSwgY29uc3QgY2hhciAq
bWVzc2FnZSkKIHsKICAgICBEQkcoIm89JXAgZnJhbWU9JXAgbWVzc2FnZT0lcyIsIG8sIGZyYW1l
LCBtZXNzYWdlKTsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZB
TFNFKTsKQEAgLTM5MzcsNyArMzkzNyw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19ydW5famF2YXNj
cmlwdF9jb25maXJtKEV2YXNfT2JqZWN0KiBvLCBFdmFzX09iamVjdCogZnJhbWUsIGNvCiAgICAg
cmV0dXJuIHNkLT5hcGktPnJ1bl9qYXZhc2NyaXB0X2NvbmZpcm0oc2QsIGZyYW1lLCBtZXNzYWdl
KTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X3Byb21wdChFdmFzX09i
amVjdCogbywgRXZhc19PYmplY3QqIGZyYW1lLCBjb25zdCBjaGFyKiBtZXNzYWdlLCBjb25zdCBj
aGFyKiBkZWZhdWx0VmFsdWUsIGNoYXIqKiB2YWx1ZSkKK0VpbmFfQm9vbCBld2tfdmlld19ydW5f
amF2YXNjcmlwdF9wcm9tcHQoRXZhc19PYmplY3QgKm8sIEV2YXNfT2JqZWN0ICpmcmFtZSwgY29u
c3QgY2hhciAqbWVzc2FnZSwgY29uc3QgY2hhciAqZGVmYXVsdFZhbHVlLCBjaGFyICoqdmFsdWUp
CiB7CiAgICAgREJHKCJvPSVwIGZyYW1lPSVwIG1lc3NhZ2U9JXMiLCBvLCBmcmFtZSwgbWVzc2Fn
ZSk7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CkBA
IC0zOTYwLDcgKzM5NjAsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfcHJv
bXB0KEV2YXNfT2JqZWN0KiBvLCBFdmFzX09iamVjdCogZnJhbWUsIGNvbgogICoKICAqIEByZXR1
cm4gQGMgRUlOQV9UUlVFIGlmIHNjcmlwdCBzaG91bGQgYmUgc3RvcHBlZDsgQGMgRUlOQV9GQUxT
RSBvdGhlcndpc2UKICAqLwotRWluYV9Cb29sIGV3a192aWV3X3Nob3VsZF9pbnRlcnJ1cHRfamF2
YXNjcmlwdChFdmFzX09iamVjdCogbykKK0VpbmFfQm9vbCBld2tfdmlld19zaG91bGRfaW50ZXJy
dXB0X2phdmFzY3JpcHQoRXZhc19PYmplY3QgKm8pCiB7CiAgICAgREJHKCJvPSVwIiwgbyk7CiAg
ICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CkBAIC0zOTg2
LDcgKzM5ODYsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2hvdWxkX2ludGVycnVwdF9qYXZhc2Ny
aXB0KEV2YXNfT2JqZWN0KiBvKQogICogQHBhcmFtIGV4cGVjdGVkX3NpemUgVGhlIGV4cGVjdGVk
IHNpemUgb2YgdGhpcyBkYXRhYmFzZSBpbiBvcmRlciB0byBmdWxmaWxsCiAgKiBzaXRlJ3MgcmVx
dWlyZW1lbnQuCiAgKi8KLXVpbnQ2NF90IGV3a192aWV3X2V4Y2VlZGVkX2RhdGFiYXNlX3F1b3Rh
KEV2YXNfT2JqZWN0KiBvLCBFdmFzX09iamVjdCogZnJhbWUsIGNvbnN0IGNoYXIqIGRhdGFiYXNl
TmFtZSwgdWludDY0X3QgY3VycmVudF9zaXplLCB1aW50NjRfdCBleHBlY3RlZF9zaXplKQordWlu
dDY0X3QgZXdrX3ZpZXdfZXhjZWVkZWRfZGF0YWJhc2VfcXVvdGEoRXZhc19PYmplY3QgKm8sIEV2
YXNfT2JqZWN0ICpmcmFtZSwgY29uc3QgY2hhciAqZGF0YWJhc2VOYW1lLCB1aW50NjRfdCBjdXJy
ZW50X3NpemUsIHVpbnQ2NF90IGV4cGVjdGVkX3NpemUpCiB7CiAgICAgREJHKCJvPSVwIiwgbyk7
CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgMCk7CkBAIC00MDExLDcgKzQw
MTEsNyBAQCB1aW50NjRfdCBld2tfdmlld19leGNlZWRlZF9kYXRhYmFzZV9xdW90YShFdmFzX09i
amVjdCogbywgRXZhc19PYmplY3QqIGZyYW1lLCBjbwogICoKICAqIEByZXR1cm4gQEVJTkFfRkFM
U0UgaWYgdXNlciBjYW5jZWxlZCBmaWxlIHNlbGVjdGlvbjsgQEVJTkFfVFJVRSBpZiBjb25maXJt
ZWQuCiAgKi8KLUVpbmFfQm9vbCBld2tfdmlld19ydW5fb3Blbl9wYW5lbChFdmFzX09iamVjdCog
bywgRXZhc19PYmplY3QqIGZyYW1lLCBFaW5hX0Jvb2wgYWxsb3dzX211bHRpcGxlX2ZpbGVzLCBj
b25zdCBjaGFyKiBhY2NlcHRfdHlwZXMsIEVpbmFfTGlzdCoqIHNlbGVjdGVkX2ZpbGVuYW1lcykK
K0VpbmFfQm9vbCBld2tfdmlld19ydW5fb3Blbl9wYW5lbChFdmFzX09iamVjdCAqbywgRXZhc19P
YmplY3QgKmZyYW1lLCBFaW5hX0Jvb2wgYWxsb3dzX211bHRpcGxlX2ZpbGVzLCBjb25zdCBjaGFy
ICphY2NlcHRfdHlwZXMsIEVpbmFfTGlzdCAqKnNlbGVjdGVkX2ZpbGVuYW1lcykKIHsKICAgICBE
QkcoIm89JXAgZnJhbWU9JXAgYWxsb3dzX211bHRpcGxlX2ZpbGVzPSVkIiwgbywgZnJhbWUsIGFs
bG93c19tdWx0aXBsZV9maWxlcyk7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBz
ZCwgRUlOQV9GQUxTRSk7CkBAIC00MDI5LDcgKzQwMjksNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdf
cnVuX29wZW5fcGFuZWwoRXZhc19PYmplY3QqIG8sIEV2YXNfT2JqZWN0KiBmcmFtZSwgRWluYV9C
b29sCiAgICAgcmV0dXJuIGNvbmZpcm07CiB9CiAKLXZvaWQgZXdrX3ZpZXdfcmVwYWludChFdmFz
X09iamVjdCogbywgRXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkIHksIEV2YXNfQ29vcmQgdywgRXZh
c19Db29yZCBoKQordm9pZCBld2tfdmlld19yZXBhaW50KEV2YXNfT2JqZWN0ICpvLCBFdmFzX0Nv
b3JkIHgsIEV2YXNfQ29vcmQgeSwgRXZhc19Db29yZCB3LCBFdmFzX0Nvb3JkIGgpCiB7CiAgICAg
REJHKCJvPSVwLCByZWdpb249JWQsJWQgKyAlZHglZCIsIG8sIHgsIHksIHcsIGgpOwogICAgIEVX
S19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QpOwpAQCAtNDA0NCw3ICs0MDQ0LDcgQEAgdm9p
ZCBld2tfdmlld19yZXBhaW50KEV2YXNfT2JqZWN0KiBvLCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29v
cmQgeSwgRXZhc19Db29yZCB3LAogICAgIF9ld2tfdmlld19zbWFydF9jaGFuZ2VkKHNkKTsKIH0K
IAotdm9pZCBld2tfdmlld19zY3JvbGwoRXZhc19PYmplY3QqIG8sIEV2YXNfQ29vcmQgZHgsIEV2
YXNfQ29vcmQgZHksIEV2YXNfQ29vcmQgc3gsIEV2YXNfQ29vcmQgc3ksIEV2YXNfQ29vcmQgc3cs
IEV2YXNfQ29vcmQgc2gsIEV2YXNfQ29vcmQgY3gsIEV2YXNfQ29vcmQgY3ksIEV2YXNfQ29vcmQg
Y3csIEV2YXNfQ29vcmQgY2gsIEVpbmFfQm9vbCBtYWluX2ZyYW1lKQordm9pZCBld2tfdmlld19z
Y3JvbGwoRXZhc19PYmplY3QgKm8sIEV2YXNfQ29vcmQgZHgsIEV2YXNfQ29vcmQgZHksIEV2YXNf
Q29vcmQgc3gsIEV2YXNfQ29vcmQgc3ksIEV2YXNfQ29vcmQgc3csIEV2YXNfQ29vcmQgc2gsIEV2
YXNfQ29vcmQgY3gsIEV2YXNfQ29vcmQgY3ksIEV2YXNfQ29vcmQgY3csIEV2YXNfQ29vcmQgY2gs
IEVpbmFfQm9vbCBtYWluX2ZyYW1lKQogewogICAgIERCRygibz0lcCwgZGVsdGE6ICVkLCVkLCBz
Y3JvbGw6ICVkLCVkKyVkeCVkLCBjbGlwOiAlZCwlZCslZHglZCIsCiAgICAgICAgIG8sIGR4LCBk
eSwgc3gsIHN5LCBzdywgc2gsIGN4LCBjeSwgY3csIGNoKTsKQEAgLTQwNjIsNyArNDA2Miw3IEBA
IHZvaWQgZXdrX3ZpZXdfc2Nyb2xsKEV2YXNfT2JqZWN0KiBvLCBFdmFzX0Nvb3JkIGR4LCBFdmFz
X0Nvb3JkIGR5LCBFdmFzX0Nvb3JkIHN4CiAgICAgX2V3a192aWV3X3NtYXJ0X2NoYW5nZWQoc2Qp
OwogfQogCi1XZWJDb3JlOjpQYWdlKiBld2tfdmlld19jb3JlX3BhZ2VfZ2V0KGNvbnN0IEV2YXNf
T2JqZWN0KiBvKQorV2ViQ29yZTo6UGFnZSogZXdrX3ZpZXdfY29yZV9wYWdlX2dldChjb25zdCBF
dmFzX09iamVjdCAqbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAw
KTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIDApOwpAQCAtNDA3
NCw3ICs0MDc0LDcgQEAgV2ViQ29yZTo6UGFnZSogZXdrX3ZpZXdfY29yZV9wYWdlX2dldChjb25z
dCBFdmFzX09iamVjdCogbykKICAqCiAgKiBFbWl0cyAiZnJhbWUsY3JlYXRlZCIgd2l0aCB0aGUg
bmV3IGZyYW1lIG9iamVjdCBvbiBzdWNjZXNzLgogICovCi1XVEY6OlBhc3NSZWZQdHI8V2ViQ29y
ZTo6RnJhbWU+IGV3a192aWV3X2ZyYW1lX2NyZWF0ZShFdmFzX09iamVjdCogbywgRXZhc19PYmpl
Y3QqIGZyYW1lLCBjb25zdCBXVEY6OlN0cmluZyYgbmFtZSwgV2ViQ29yZTo6SFRNTEZyYW1lT3du
ZXJFbGVtZW50KiBvd25lckVsZW1lbnQsIGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCwgY29uc3Qg
V1RGOjpTdHJpbmcmIHJlZmVycmVyKQorV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBl
d2tfdmlld19mcmFtZV9jcmVhdGUoRXZhc19PYmplY3QgKm8sIEV2YXNfT2JqZWN0ICpmcmFtZSwg
Y29uc3QgV1RGOjpTdHJpbmcgJm5hbWUsIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCAq
b3duZXJFbGVtZW50LCBjb25zdCBXZWJDb3JlOjpLVVJMICZ1cmwsIGNvbnN0IFdURjo6U3RyaW5n
ICZyZWZlcnJlcikKIHsKICAgICBEQkcoIm89JXAsIGZyYW1lPSVwLCBuYW1lPSVzLCBvd25lckVs
ZW1lbnQ9JXAsIHVybD0lcywgcmVmZXJyZXI9JXMiLAogICAgICAgICBvLCBmcmFtZSwgbmFtZS51
dGY4KCkuZGF0YSgpLCBvd25lckVsZW1lbnQsCkBAIC00MTA2LDcgKzQxMDYsNyBAQCBXVEY6OlBh
c3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGV3a192aWV3X2ZyYW1lX2NyZWF0ZShFdmFzX09iamVj
dCogbywgRXZhc19PYmplYwogICAgIHJldHVybiBjZi5yZWxlYXNlKCk7CiB9CiAKLVdURjo6UGFz
c1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGV3a192aWV3X3BsdWdpbl9jcmVhdGUoRXZhc19PYmpl
Y3QqIG8sIEV2YXNfT2JqZWN0KiBmcmFtZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgcGx1Z2lu
U2l6ZSwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFdlYkNvcmU6
OktVUkwmIHVybCwgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJhbU5hbWVzLCBj
b25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFtVmFsdWVzLCBjb25zdCBXVEY6OlN0
cmluZyYgbWltZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5KQorV1RGOjpQYXNzUmVmUHRyPFdlYkNv
cmU6OldpZGdldD4gZXdrX3ZpZXdfcGx1Z2luX2NyZWF0ZShFdmFzX09iamVjdCAqbywgRXZhc19P
YmplY3QgKmZyYW1lLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBwbHVnaW5TaXplLCBXZWJDb3Jl
OjpIVE1MUGx1Z0luRWxlbWVudCAqZWxlbWVudCwgY29uc3QgV2ViQ29yZTo6S1VSTCAmdXJsLCBj
b25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4gJnBhcmFtTmFtZXMsIGNvbnN0IFdURjo6VmVj
dG9yPFdURjo6U3RyaW5nPiAmcGFyYW1WYWx1ZXMsIGNvbnN0IFdURjo6U3RyaW5nICZtaW1lVHlw
ZSwgYm9vbCBsb2FkTWFudWFsbHkpCiB7CiAgICAgREJHKCJvPSVwLCBmcmFtZT0lcCwgc2l6ZT0l
ZHglZCwgZWxlbWVudD0lcCwgdXJsPSVzLCBtaW1lVHlwZT0lcyIsCiAgICAgICAgIG8sIGZyYW1l
LCBwbHVnaW5TaXplLndpZHRoKCksIHBsdWdpblNpemUuaGVpZ2h0KCksIGVsZW1lbnQsCkBAIC00
MTIxLDcgKzQxMjEsNiBAQCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBld2tfdmll
d19wbHVnaW5fY3JlYXRlKEV2YXNfT2JqZWN0KiBvLCBFdmFzX09iagogICAgICAgICAgbWltZVR5
cGUsIGxvYWRNYW51YWxseSk7CiB9CiAKLQogLyoqCiAgKiBAaW50ZXJuYWwKICAqCkBAIC00MTMz
LDcgKzQxMzIsNyBAQCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBld2tfdmlld19w
bHVnaW5fY3JlYXRlKEV2YXNfT2JqZWN0KiBvLCBFdmFzX09iagogICoKICAqIEVtaXRzOiAicG9w
dXAsY3JlYXRlIiB3aXRoIGEgbGlzdCBvZiBFd2tfTWVudSBjb250YWluaW5nIGVhY2ggaXRlbSdz
IGRhdGEKICAqLwotdm9pZCBld2tfdmlld19wb3B1cF9uZXcoRXZhc19PYmplY3QqIG8sIFdlYkNv
cmU6OlBvcHVwTWVudUNsaWVudCogY2xpZW50LCBpbnQgc2VsZWN0ZWQsIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmIHJlY3QpCit2b2lkIGV3a192aWV3X3BvcHVwX25ldyhFdmFzX09iamVjdCAqbywg
V2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50ICpjbGllbnQsIGludCBzZWxlY3RlZCwgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCAmcmVjdCkKIHsKICAgICBJTkYoIm89JXAiLCBvKTsKICAgICBFV0tfVklF
V19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkKTsKQEAgLTQxNDcsNyArNDE0Niw3IEBAIHZvaWQgZXdr
X3ZpZXdfcG9wdXBfbmV3KEV2YXNfT2JqZWN0KiBvLCBXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQq
IGNsaWVudCwgaW50IHNlCiAgICAgLy8gcG9wdWxhdGUgaXRlbXMKICAgICBjb25zdCBpbnQgc2l6
ZSA9IGNsaWVudC0+bGlzdFNpemUoKTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7ICsr
aSkgewotICAgICAgICBFd2tfTWVudV9JdGVtKiBpdGVtID0gKEV3a19NZW51X0l0ZW0qKSBtYWxs
b2Moc2l6ZW9mKCppdGVtKSk7CisgICAgICAgIEV3a19NZW51X0l0ZW0gKml0ZW0gPSAoRXdrX01l
bnVfSXRlbSAqKSBtYWxsb2Moc2l6ZW9mKCppdGVtKSk7CiAgICAgICAgIGlmIChjbGllbnQtPml0
ZW1Jc1NlcGFyYXRvcihpKSkKICAgICAgICAgICAgIGl0ZW0tPnR5cGUgPSBFV0tfTUVOVV9TRVBB
UkFUT1I7CiAgICAgICAgIGVsc2UgaWYgKGNsaWVudC0+aXRlbUlzTGFiZWwoaSkpCkBAIC00MTc5
LDcgKzQxNzgsNyBAQCB2b2lkIGV3a192aWV3X3BvcHVwX25ldyhFdmFzX09iamVjdCogbywgV2Vi
Q29yZTo6UG9wdXBNZW51Q2xpZW50KiBjbGllbnQsIGludCBzZQogICogQHJldHVybnMgRUlOQV9U
UlVFIGluIGNhc2UgbWVudSB3YXMgc3VjY2Vzc2Z1bGx5IGRlc3Ryb3llZCBvciBFSU5BX1RSVUUg
aW4KICAqIGNhc2UgdGhlcmUgd2Fzbid0IGFueSBtZW51IHRvIGJlIGRlc3Ryb3llZC4KICAqLwot
RWluYV9Cb29sIGV3a192aWV3X3BvcHVwX2Rlc3Ryb3koRXZhc19PYmplY3QqIG8pCitFaW5hX0Jv
b2wgZXdrX3ZpZXdfcG9wdXBfZGVzdHJveShFdmFzX09iamVjdCAqbykKIHsKICAgICBJTkYoIm89
JXAiLCBvKTsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNF
KTsKQEAgLTQxOTIsNyArNDE5MSw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19wb3B1cF9kZXN0cm95
KEV2YXNfT2JqZWN0KiBvKQogCiAgICAgdm9pZCogaXRlbXY7CiAgICAgRUlOQV9MSVNUX0ZSRUUo
cHJpdi0+cG9wdXAubWVudS5pdGVtcywgaXRlbXYpIHsKLSAgICAgICAgRXdrX01lbnVfSXRlbSog
aXRlbSA9IChFd2tfTWVudV9JdGVtKilpdGVtdjsKKyAgICAgICAgRXdrX01lbnVfSXRlbSogaXRl
bSA9IChFd2tfTWVudV9JdGVtICopaXRlbXY7CiAgICAgICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVs
KGl0ZW0tPnRleHQpOwogICAgICAgICBmcmVlKGl0ZW0pOwogICAgIH0KQEAgLTQyMTMsNyArNDIx
Miw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19wb3B1cF9kZXN0cm95KEV2YXNfT2JqZWN0KiBvKQog
ICogQGluZGV4IEluZGV4IG9mIHNlbGVjdGVkIGl0ZW0uCiAgKgogICovCi12b2lkIGV3a192aWV3
X3BvcHVwX3NlbGVjdGVkX3NldChFdmFzX09iamVjdCogbywgaW50IGluZGV4KQordm9pZCBld2tf
dmlld19wb3B1cF9zZWxlY3RlZF9zZXQoRXZhc19PYmplY3QgKm8sIGludCBpbmRleCkKIHsKICAg
ICBJTkYoIm89JXAiLCBvKTsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkKTsK
QEAgLTQyMzMsNyArNDIzMiw3IEBAIHZvaWQgZXdrX3ZpZXdfcG9wdXBfc2VsZWN0ZWRfc2V0KEV2
YXNfT2JqZWN0KiBvLCBpbnQgaW5kZXgpCiAgKiBFbWl0czogImRvd25sb2FkLHJlcXVlc3QiIHdp
dGggYW4gRXdrX0Rvd25sb2FkIGNvbnRhaW5pbmcgdGhlIGRldGFpbHMgb2YgdGhlCiAgKiByZXF1
ZXN0ZWQgZG93bmxvYWQuIFRoZSBkb3dubG9hZCBwZXIgc2UgbXVzdCBiZSBoYW5kbGVkIG91dHNp
ZGUgb2Ygd2Via2l0LgogICovCi12b2lkIGV3a192aWV3X2Rvd25sb2FkX3JlcXVlc3QoRXZhc19P
YmplY3QqIG8sIEV3a19Eb3dubG9hZCogZG93bmxvYWQpCit2b2lkIGV3a192aWV3X2Rvd25sb2Fk
X3JlcXVlc3QoRXZhc19PYmplY3QgKm8sIEV3a19Eb3dubG9hZCAqZG93bmxvYWQpCiB7CiAgICAg
REJHKCJ2aWV3PSVwIiwgbyk7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChv
LCAiZG93bmxvYWQscmVxdWVzdCIsIGRvd25sb2FkKTsKQEAgLTQyNDcsNyArNDI0Niw3IEBAIHZv
aWQgZXdrX3ZpZXdfZG93bmxvYWRfcmVxdWVzdChFdmFzX09iamVjdCogbywgRXdrX0Rvd25sb2Fk
KiBkb3dubG9hZCkKICAqCiAgKiBFbWl0cyBzaWduYWw6ICJ2aWV3cG9ydCxjaGFuZ2VkIiB3aXRo
IG5vIHBhcmFtZXRlcnMuCiAgKi8KLXZvaWQgZXdrX3ZpZXdfdmlld3BvcnRfYXR0cmlidXRlc19z
ZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzJiBhcmd1
bWVudHMpCit2b2lkIGV3a192aWV3X3ZpZXdwb3J0X2F0dHJpYnV0ZXNfc2V0KEV2YXNfT2JqZWN0
ICpvLCBjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cyAmYXJndW1lbnRzKQogewogICAg
IEVXS19WSUVXX1NEX0dFVChvLCBzZCk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVQoc2QsIHByaXYp
OwpAQCAtNDI2OCw3ICs0MjY3LDcgQEAgdm9pZCBld2tfdmlld192aWV3cG9ydF9hdHRyaWJ1dGVz
X3NldChFdmFzX09iamVjdCAqbywgY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBcmcKICAqIEBwYXJh
bSBkZXZpY2VfcGl4ZWxfcmF0aW8gdmFsdWUuCiAgKiBAcGFyYW0gdXNlcl9zY2FsYWJsZSB1c2Vy
IFNjYWxhYmxlIHZhbHVlLgogICovCi12b2lkIGV3a192aWV3X3ZpZXdwb3J0X2F0dHJpYnV0ZXNf
Z2V0KEV2YXNfT2JqZWN0ICpvLCBmbG9hdCogdywgZmxvYXQqIGgsIGZsb2F0KiBpbml0X3NjYWxl
LCBmbG9hdCogbWF4X3NjYWxlLCBmbG9hdCogbWluX3NjYWxlLCBmbG9hdCogZGV2aWNlX3BpeGVs
X3JhdGlvLCBFaW5hX0Jvb2wqIHVzZXJfc2NhbGFibGUpCit2b2lkIGV3a192aWV3X3ZpZXdwb3J0
X2F0dHJpYnV0ZXNfZ2V0KEV2YXNfT2JqZWN0ICpvLCBmbG9hdCAqdywgZmxvYXQgKmgsIGZsb2F0
ICppbml0X3NjYWxlLCBmbG9hdCAqbWF4X3NjYWxlLCBmbG9hdCAqbWluX3NjYWxlLCBmbG9hdCAq
ZGV2aWNlX3BpeGVsX3JhdGlvLCBFaW5hX0Jvb2wgKnVzZXJfc2NhbGFibGUpCiB7CiAgICAgV2Vi
Q29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMgPSBfZXdrX3ZpZXdfdmlld3BvcnRf
YXR0cmlidXRlc19jb21wdXRlKG8pOwogCkBAIC00Mjk0LDEwICs0MjkzLDEwIEBAIHZvaWQgZXdr
X3ZpZXdfdmlld3BvcnRfYXR0cmlidXRlc19nZXQoRXZhc19PYmplY3QgKm8sIGZsb2F0KiB3LCBm
bG9hdCogaCwgZmxvYXQqCiAgKiBAcGFyYW0gbyB2aWV3LgogICogQHBhcmFtIG1pbl9zY2FsZSBt
aW5pbXVtIHZhbHVlIG9mIHpvb20gcmFuZ2UuCiAgKiBAcGFyYW0gbWF4X3NjYWxlIG1heGltdW0g
dmFsdWUgb2Ygem9vbSByYW5nZS4KLSAqIAorICoKICAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlm
IHpvb20gcmFuZ2UgaXMgY2hhbmdlZCwgQGMgRUlOQV9GQUxTRSBpZiBub3Qgb3IgZmFpbHVyZS4K
ICAqLwotRWluYV9Cb29sIGV3a192aWV3X3pvb21fcmFuZ2Vfc2V0KEV2YXNfT2JqZWN0KiBvLCBm
bG9hdCBtaW5fc2NhbGUsIGZsb2F0IG1heF9zY2FsZSkKK0VpbmFfQm9vbCBld2tfdmlld196b29t
X3JhbmdlX3NldChFdmFzX09iamVjdCAqbywgZmxvYXQgbWluX3NjYWxlLCBmbG9hdCBtYXhfc2Nh
bGUpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUKG8sIHNkKTsKICAgICBFV0tfVklFV19QUklWX0dF
VChzZCwgcHJpdik7CkBAIC00MzIwLDcgKzQzMTksNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfem9v
bV9yYW5nZV9zZXQoRXZhc19PYmplY3QqIG8sIGZsb2F0IG1pbl9zY2FsZSwgZmxvYXQgbWF4X3Nj
YQogICoKICAqIEByZXR1cm4gbWluaW11bSB2YWx1ZSBvZiB6b29tIHJhbmdlLgogICovCi1mbG9h
dCBld2tfdmlld196b29tX3JhbmdlX21pbl9nZXQoRXZhc19PYmplY3QqIG8pCitmbG9hdCBld2tf
dmlld196b29tX3JhbmdlX21pbl9nZXQoRXZhc19PYmplY3QgKm8pCiB7CiAgICAgRVdLX1ZJRVdf
U0RfR0VUKG8sIHNkKTsKICAgICBFV0tfVklFV19QUklWX0dFVChzZCwgcHJpdik7CkBAIC00MzM1
LDcgKzQzMzQsNyBAQCBmbG9hdCBld2tfdmlld196b29tX3JhbmdlX21pbl9nZXQoRXZhc19PYmpl
Y3QqIG8pCiAgKgogICogQHJldHVybiBtYXhpbXVtIHZhbHVlIG9mIHpvb20gcmFuZ2UuCiAgKi8K
LWZsb2F0IGV3a192aWV3X3pvb21fcmFuZ2VfbWF4X2dldChFdmFzX09iamVjdCogbykKK2Zsb2F0
IGV3a192aWV3X3pvb21fcmFuZ2VfbWF4X2dldChFdmFzX09iamVjdCAqbykKIHsKICAgICBFV0tf
VklFV19TRF9HRVQobywgc2QpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUKHNkLCBwcml2KTsKQEAg
LTQzNTAsNyArNDM0OSw3IEBAIGZsb2F0IGV3a192aWV3X3pvb21fcmFuZ2VfbWF4X2dldChFdmFz
X09iamVjdCogbykKICAqIEBwYXJhbSB1c2VyX3NjYWxhYmxlIGJvb2xlYW4gcG9pbnRlciBpbiB3
aGljaCB0byBlbmFibGUgem9vbS4gSXQgZGVmYXVsdHMKICAqIHRvIEBjIEVJTkFfVFJVRS4KICAq
Lwotdm9pZCBld2tfdmlld191c2VyX3NjYWxhYmxlX3NldChFdmFzX09iamVjdCogbywgRWluYV9C
b29sIHVzZXJfc2NhbGFibGUpCit2b2lkIGV3a192aWV3X3VzZXJfc2NhbGFibGVfc2V0KEV2YXNf
T2JqZWN0ICpvLCBFaW5hX0Jvb2wgdXNlcl9zY2FsYWJsZSkKIHsKICAgICBFV0tfVklFV19TRF9H
RVQobywgc2QpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUKHNkLCBwcml2KTsKQEAgLTQzNjYsNyAr
NDM2NSw3IEBAIHZvaWQgZXdrX3ZpZXdfdXNlcl9zY2FsYWJsZV9zZXQoRXZhc19PYmplY3QqIG8s
IEVpbmFfQm9vbCB1c2VyX3NjYWxhYmxlKQogICoKICAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlm
IHpvb20gaXMgZW5hYmxlZCwgQGMgRUlOQV9GQUxTRSBpZiBub3QuCiAgKi8KLUVpbmFfQm9vbCBl
d2tfdmlld191c2VyX3NjYWxhYmxlX2dldChFdmFzX09iamVjdCogbykKK0VpbmFfQm9vbCBld2tf
dmlld191c2VyX3NjYWxhYmxlX2dldChFdmFzX09iamVjdCAqbykKIHsKICAgICBFV0tfVklFV19T
RF9HRVQobywgc2QpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUKHNkLCBwcml2KTsKQEAgLTQzODIs
NyArNDM4MSw3IEBAIEVpbmFfQm9vbCBld2tfdmlld191c2VyX3NjYWxhYmxlX2dldChFdmFzX09i
amVjdCogbykKICAqCiAgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiB6b29tIGlzIGVuYWJsZWQs
IEBjIEVJTkFfRkFMU0UgaWYgbm90LgogICovCi1mbG9hdCBld2tfdmlld19kZXZpY2VfcGl4ZWxf
cmF0aW9fZ2V0KEV2YXNfT2JqZWN0KiBvKQorZmxvYXQgZXdrX3ZpZXdfZGV2aWNlX3BpeGVsX3Jh
dGlvX2dldChFdmFzX09iamVjdCAqbykKIHsKICAgICBFV0tfVklFV19TRF9HRVQobywgc2QpOwog
ICAgIEVXS19WSUVXX1BSSVZfR0VUKHNkLCBwcml2KTsKQEAgLTQ0MzUsNyArNDQzNCw3IEBAIHZv
aWQgZXdrX3ZpZXdfdHJhbnNpdGlvbl90b19jb21taXRlZF9mb3JfbmV3cGFnZShFdmFzX09iamVj
dCAqbykKICAqIEBwYXJhbSBvIFZpZXcgdG8gbG9hZAogICogQHBhcmFtIHJlcXVlc3QgUmVxdWVz
dCB3aGljaCBjb250YWluIHVybCB0byBuYXZpZ2F0ZQogICovCi1FaW5hX0Jvb2wgZXdrX3ZpZXdf
bmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24oRXZhc19PYmplY3QqIG8sIEV3a19GcmFtZV9SZXNv
dXJjZV9SZXF1ZXN0KiByZXF1ZXN0KQorRWluYV9Cb29sIGV3a192aWV3X25hdmlnYXRpb25fcG9s
aWN5X2RlY2lzaW9uKEV2YXNfT2JqZWN0ICpvLCBFd2tfRnJhbWVfUmVzb3VyY2VfUmVxdWVzdCAq
cmVxdWVzdCkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX1RS
VUUpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+YXBpLCBFSU5BX1RS
VUUpOwpAQCAtNDQ4MCwxMCArNDQ3OSwxMCBAQCBXZWJDb3JlOjpGbG9hdFJlY3QgZXdrX3ZpZXdf
cGFnZV9yZWN0X2dldChFdmFzX09iamVjdCAqbykKIAogICAgIFdlYkNvcmU6OkZyYW1lKiBtYWlu
X2ZyYW1lID0gcHJpdi0+cGFnZS0+bWFpbkZyYW1lKCk7CiAgICAgcmV0dXJuIG1haW5fZnJhbWUt
PnZpZXcoKS0+ZnJhbWVSZWN0KCk7Ci19IAorfQogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykK
LXZvaWQgZXdrX3ZpZXdfbmVlZF90b3VjaF9ldmVudHNfc2V0KEV2YXNfT2JqZWN0KiBvLCBib29s
IG5lZWRlZCkKK3ZvaWQgZXdrX3ZpZXdfbmVlZF90b3VjaF9ldmVudHNfc2V0KEV2YXNfT2JqZWN0
ICpvLCBib29sIG5lZWRlZCkKIHsKICAgICBFV0tfVklFV19TRF9HRVQobywgc2QpOwogICAgIEVX
S19WSUVXX1BSSVZfR0VUKHNkLCBwcml2KTsKQEAgLTQ0OTEsNyArNDQ5MCw3IEBAIHZvaWQgZXdr
X3ZpZXdfbmVlZF90b3VjaF9ldmVudHNfc2V0KEV2YXNfT2JqZWN0KiBvLCBib29sIG5lZWRlZCkK
ICAgICBwcml2LT5mbGFncy5uZWVkX3RvdWNoX2V2ZW50cyA9IG5lZWRlZDsKIH0KIAotRWluYV9C
b29sIGV3a192aWV3X25lZWRfdG91Y2hfZXZlbnRzX2dldChFdmFzX09iamVjdCogbykKK0VpbmFf
Qm9vbCBld2tfdmlld19uZWVkX3RvdWNoX2V2ZW50c19nZXQoRXZhc19PYmplY3QgKm8pCiB7CiAg
ICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdL
X1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKQEAgLTQ1MDgs
NyArNDUwNyw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19uZWVkX3RvdWNoX2V2ZW50c19nZXQoRXZh
c19PYmplY3QqIG8pCiAgKgogICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgdmlldyBtb2RlIGlz
IHNldCBhcyB2aWV3X21vZGUsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgogICovCi1FaW5hX0Jv
b2wgZXdrX3ZpZXdfbW9kZV9zZXQoRXZhc19PYmplY3QqIG8sIEV3a19WaWV3X01vZGUgdmlld19t
b2RlKQorRWluYV9Cb29sIGV3a192aWV3X21vZGVfc2V0KEV2YXNfT2JqZWN0ICpvLCBFd2tfVmll
d19Nb2RlIHZpZXdfbW9kZSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNk
LCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYs
IEVJTkFfRkFMU0UpOwpAQCAtNDU0NCw3ICs0NTQzLDcgQEAgRWluYV9Cb29sIGV3a192aWV3X21v
ZGVfc2V0KEV2YXNfT2JqZWN0KiBvLCBFd2tfVmlld19Nb2RlIHZpZXdfbW9kZSkKICAqCiAgKiBA
cmV0dXJuIGVudW0gdmFsdWUgb2YgRXdrX1ZpZXdfTW9kZSB0aGF0IGluZGljYXRlcyBjdXJyZW50
IHZpZXcgbW9kZS4KICAqLwotRXdrX1ZpZXdfTW9kZSBld2tfdmlld19tb2RlX2dldChFdmFzX09i
amVjdCogbykKK0V3a19WaWV3X01vZGUgZXdrX3ZpZXdfbW9kZV9nZXQoRXZhc19PYmplY3QgKm8p
CiB7CiAgICAgRXdrX1ZpZXdfTW9kZSBtb2RlID0gRVdLX1ZJRVdfTU9ERV9XSU5ET1dFRDsKIApA
QCAtNDU4Myw3ICs0NTgyLDcgQEAgRXdrX1ZpZXdfTW9kZSBld2tfdmlld19tb2RlX2dldChFdmFz
X09iamVjdCogbykKICAqCiAgKiBFbWl0cyBzaWduYWw6ICJlZGl0b3JjbGllbnRzZWxlY3Rpb24s
Y2hhbmdlZCIgd2l0aCBubyBwYXJhbWV0ZXJzLgogICovCi12b2lkIGV3a192aWV3X2VkaXRvcl9j
bGllbnRfc2VsZWN0aW9uX2NoYW5nZWQoRXZhc19PYmplY3QqIG8pCit2b2lkIGV3a192aWV3X2Vk
aXRvcl9jbGllbnRfc2VsZWN0aW9uX2NoYW5nZWQoRXZhc19PYmplY3QgKm8pCiB7CiAgICAgZXZh
c19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAiZWRpdG9yY2xpZW50LHNlbGVjdGlvbixj
aGFuZ2VkIiwgMCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3Zp
ZXcuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5oCmluZGV4IGYzM2E3Y2MuLmVi
NzM2NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5oCkBAIC0yMzUsNyArMjM1LDcgQEAgc3Ry
dWN0IF9Fd2tfTWVudV9JdGVtIHsKICAqLwogdHlwZWRlZiBzdHJ1Y3QgX0V3a19NZW51IEV3a19N
ZW51Owogc3RydWN0IF9Fd2tfTWVudSB7Ci0gICAgICAgIEVpbmFfTGlzdCogaXRlbXM7CisgICAg
ICAgIEVpbmFfTGlzdCAqaXRlbXM7CiAgICAgICAgIGludCB4OwogICAgICAgICBpbnQgeTsKICAg
ICAgICAgaW50IHdpZHRoOwpAQCAtMjQ3LDcgKzI0Nyw3IEBAIHN0cnVjdCBfRXdrX01lbnUgewog
ICovCiB0eXBlZGVmIHN0cnVjdCBfRXdrX0Rvd25sb2FkIEV3a19Eb3dubG9hZDsKIHN0cnVjdCBf
RXdrX0Rvd25sb2FkIHsKLSAgICBjb25zdCBjaGFyKiB1cmw7CisgICAgY29uc3QgY2hhciAqdXJs
OwogICAgIC8qIHRvIGJlIGV4dGVuZGVkICovCiB9OwogCkBAIC00OTUsMjIgKzQ5NSwyMiBAQCBF
QVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19zZXR0aW5nX2ZvbnRfc2VyaWZfc2V0KEV2YXNfT2Jq
ZWN0ICpvLCBjb25zdCBjaGFyICpmYQogRUFQSSBjb25zdCBjaGFyICAqZXdrX3ZpZXdfc2V0dGlu
Z19mb250X3NhbnNfc2VyaWZfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKIEVBUEkgRWluYV9C
b29sICAgIGV3a192aWV3X3NldHRpbmdfZm9udF9zYW5zX3NlcmlmX3NldChFdmFzX09iamVjdCAq
bywgY29uc3QgY2hhciAqZmFtaWx5KTsKIAotRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2V0
dGluZ19zcGF0aWFsX25hdmlnYXRpb25fZ2V0KEV2YXNfT2JqZWN0KiBvKTsKLUVBUEkgRWluYV9C
b29sICAgIGV3a192aWV3X3NldHRpbmdfc3BhdGlhbF9uYXZpZ2F0aW9uX3NldChFdmFzX09iamVj
dCogbywgRWluYV9Cb29sIGVuYWJsZSk7CitFQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19zZXR0
aW5nX3NwYXRpYWxfbmF2aWdhdGlvbl9nZXQoRXZhc19PYmplY3QgKm8pOworRUFQSSBFaW5hX0Jv
b2wgICAgZXdrX3ZpZXdfc2V0dGluZ19zcGF0aWFsX25hdmlnYXRpb25fc2V0KEV2YXNfT2JqZWN0
ICpvLCBFaW5hX0Jvb2wgZW5hYmxlKTsKIAotRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2V0
dGluZ19sb2NhbF9zdG9yYWdlX2dldChFdmFzX09iamVjdCogbyk7Ci1FQVBJIEVpbmFfQm9vbCAg
ICBld2tfdmlld19zZXR0aW5nX2xvY2FsX3N0b3JhZ2Vfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5h
X0Jvb2wgZW5hYmxlKTsKK0VBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfbG9jYWxf
c3RvcmFnZV9nZXQoRXZhc19PYmplY3QgKm8pOworRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdf
c2V0dGluZ19sb2NhbF9zdG9yYWdlX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGVuYWJs
ZSk7CiBFQVBJIGNvbnN0IGNoYXIgICpld2tfdmlld19zZXR0aW5nX2xvY2FsX3N0b3JhZ2VfZGF0
YWJhc2VfcGF0aF9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwogRUFQSSBFaW5hX0Jvb2wgICAg
ZXdrX3ZpZXdfc2V0dGluZ19sb2NhbF9zdG9yYWdlX2RhdGFiYXNlX3BhdGhfc2V0KEV2YXNfT2Jq
ZWN0ICpvLCBjb25zdCBjaGFyICpwYXRoKTsKIAotRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdf
c2V0dGluZ19wYWdlX2NhY2hlX2dldChFdmFzX09iamVjdCogbyk7Ci1FQVBJIEVpbmFfQm9vbCAg
ICBld2tfdmlld19zZXR0aW5nX3BhZ2VfY2FjaGVfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jv
b2wgZW5hYmxlKTsKK0VBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfcGFnZV9jYWNo
ZV9nZXQoRXZhc19PYmplY3QgKm8pOworRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2V0dGlu
Z19wYWdlX2NhY2hlX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGVuYWJsZSk7CiAKLUVB
UEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfZW5jb2RpbmdfZGV0ZWN0b3JfZ2V0KEV2
YXNfT2JqZWN0KiBvKTsKLUVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfZW5jb2Rp
bmdfZGV0ZWN0b3Jfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgZW5hYmxlKTsKK0VBUEkg
RWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfZW5jb2RpbmdfZGV0ZWN0b3JfZ2V0KEV2YXNf
T2JqZWN0ICpvKTsKK0VBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfZW5jb2Rpbmdf
ZGV0ZWN0b3Jfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgZW5hYmxlKTsKIAotRUFQSSBF
aW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfZGV2ZWxvcGVyX2V4dHJhc19nZXQo
RXZhc19PYmplY3QqIG8pOwotRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2V0dGluZ19lbmFi
bGVfZGV2ZWxvcGVyX2V4dHJhc19zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCBlbmFibGUp
OworRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfZGV2ZWxvcGVyX2V4
dHJhc19nZXQoRXZhc19PYmplY3QgKm8pOworRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2V0
dGluZ19lbmFibGVfZGV2ZWxvcGVyX2V4dHJhc19zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9v
bCBlbmFibGUpOwogCiAvKiB0byBiZSB1c2VkIGJ5IHN1YmNsYXNzIGltcGxlbWVudGF0aW9ucyAq
LwogRUFQSSBFd2tfVmlld19TbWFydF9EYXRhICpld2tfdmlld19zbWFydF9kYXRhX2dldChjb25z
dCBFdmFzX09iamVjdCAqbyk7CkBAIC01MzksMTYgKzUzOSwxNiBAQCBFQVBJIHZvaWQgZXdrX3Zp
ZXdfcGFpbnRfY29udGV4dF90cmFuc2xhdGUoRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCAqY3R4dCwg
ZmxvYXQgeAogRUFQSSBFaW5hX0Jvb2wgZXdrX3ZpZXdfcGFpbnQoRXdrX1ZpZXdfUHJpdmF0ZV9E
YXRhICpwcml2LCBjYWlyb190ICpjciwgY29uc3QgRWluYV9SZWN0YW5nbGUgKmFyZWEpOwogRUFQ
SSBFaW5hX0Jvb2wgZXdrX3ZpZXdfcGFpbnRfY29udGVudHMoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRh
ICpwcml2LCBjYWlyb190ICpjciwgY29uc3QgRWluYV9SZWN0YW5nbGUgKmFyZWEpOwogCi1FQVBJ
IHZvaWQgZXdrX3ZpZXdfdmlld3BvcnRfYXR0cmlidXRlc19nZXQoRXZhc19PYmplY3QgKm8sIGZs
b2F0KiB3LCBmbG9hdCogaCwgZmxvYXQqIGluaXRfc2NhbGUsIGZsb2F0KiBtYXhfc2NhbGUsIGZs
b2F0KiBtaW5fc2NhbGUsIGZsb2F0KiBkZXZpY2VfcGl4ZWxfcmF0aW8gLCBFaW5hX0Jvb2wqIHVz
ZXJfc2NhbGFibGUpOwotRUFQSSBFaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV9yYW5nZV9zZXQoRXZh
c19PYmplY3QqIG8sIGZsb2F0IG1pbl9zY2FsZSwgZmxvYXQgbWF4X3NjYWxlKTsKLUVBUEkgZmxv
YXQgZXdrX3ZpZXdfem9vbV9yYW5nZV9taW5fZ2V0KEV2YXNfT2JqZWN0KiBvKTsKLUVBUEkgZmxv
YXQgZXdrX3ZpZXdfem9vbV9yYW5nZV9tYXhfZ2V0KEV2YXNfT2JqZWN0KiBvKTsKLUVBUEkgdm9p
ZCBld2tfdmlld191c2VyX3NjYWxhYmxlX3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIHVz
ZXJfc2NhbGFibGUpOwotRUFQSSBFaW5hX0Jvb2wgZXdrX3ZpZXdfdXNlcl9zY2FsYWJsZV9nZXQo
RXZhc19PYmplY3QqIG8pOwotRUFQSSBmbG9hdCBld2tfdmlld19kZXZpY2VfcGl4ZWxfcmF0aW9f
Z2V0KEV2YXNfT2JqZWN0KiBvKTsKK0VBUEkgdm9pZCBld2tfdmlld192aWV3cG9ydF9hdHRyaWJ1
dGVzX2dldChFdmFzX09iamVjdCAqbywgZmxvYXQgKncsIGZsb2F0ICpoLCBmbG9hdCAqaW5pdF9z
Y2FsZSwgZmxvYXQgKm1heF9zY2FsZSwgZmxvYXQgKm1pbl9zY2FsZSwgZmxvYXQgKmRldmljZV9w
aXhlbF9yYXRpbyAsIEVpbmFfQm9vbCAqdXNlcl9zY2FsYWJsZSk7CitFQVBJIEVpbmFfQm9vbCBl
d2tfdmlld196b29tX3JhbmdlX3NldChFdmFzX09iamVjdCAqbywgZmxvYXQgbWluX3NjYWxlLCBm
bG9hdCBtYXhfc2NhbGUpOworRUFQSSBmbG9hdCBld2tfdmlld196b29tX3JhbmdlX21pbl9nZXQo
RXZhc19PYmplY3QgKm8pOworRUFQSSBmbG9hdCBld2tfdmlld196b29tX3JhbmdlX21heF9nZXQo
RXZhc19PYmplY3QgKm8pOworRUFQSSB2b2lkIGV3a192aWV3X3VzZXJfc2NhbGFibGVfc2V0KEV2
YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgdXNlcl9zY2FsYWJsZSk7CitFQVBJIEVpbmFfQm9vbCBl
d2tfdmlld191c2VyX3NjYWxhYmxlX2dldChFdmFzX09iamVjdCAqbyk7CitFQVBJIGZsb2F0IGV3
a192aWV3X2RldmljZV9waXhlbF9yYXRpb19nZXQoRXZhc19PYmplY3QgKm8pOwogCi1FQVBJIEVp
bmFfQm9vbCBld2tfdmlld19tb2RlX3NldChFdmFzX09iamVjdCogbywgRXdrX1ZpZXdfTW9kZSB2
aWV3X21vZGUpOwotRUFQSSBFd2tfVmlld19Nb2RlIGV3a192aWV3X21vZGVfZ2V0KEV2YXNfT2Jq
ZWN0KiBvKTsKK0VBUEkgRWluYV9Cb29sIGV3a192aWV3X21vZGVfc2V0KEV2YXNfT2JqZWN0ICpv
LCBFd2tfVmlld19Nb2RlIHZpZXdfbW9kZSk7CitFQVBJIEV3a19WaWV3X01vZGUgZXdrX3ZpZXdf
bW9kZV9nZXQoRXZhc19PYmplY3QgKm8pOwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101970</attachid>
            <date>2011-07-25 21:47:01 -0700</date>
            <delta_ts>2011-07-26 19:45:47 -0700</delta_ts>
            <desc>Patch based on latest webkit</desc>
            <filename>patch-coding-style.patch</filename>
            <type>text/plain</type>
            <size>124257</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZwppbmRleCBhYWM5NzQyLi40ZTgwNTEyIDEwMDc1NQotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjUzIEBACisyMDExLTA3LTI1ICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1A
c2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0gRml4IHBvaW50ZXIgb3BlcmF0b3IgY29kaW5n
IHN0eWxlIGluIGV3a192aWV3LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NjUxNjMKKworICAgICAgICBNb3ZlICcqJyBvcGVyYXRvciB0byB2YXJpYWJs
ZSBhY2NvcmRpbmcgdG8gZWZsIGNvZGluZyBzdHlsZS4gSW4gYWRkaXRpb24sCisgICAgICAgIGFk
ZCBhIHNwYWNlIGJldHdlZW4gKiBhbmQgdmFyaWFibGUgaW4gdHlwZSBjYXN0aW5nLgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZXdrL2V3a192aWV3
LmNwcDoKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9jaGFuZ2VkKToKKyAgICAgICAgKF9ld2tf
dmlld19yZXBhaW50c19yZXNpemUpOgorICAgICAgICAoX2V3a192aWV3X3JlcGFpbnRfYWRkKToK
KyAgICAgICAgKF9ld2tfdmlld19yZXBhaW50c19mbHVzaCk6CisgICAgICAgIChfZXdrX3ZpZXdf
c2Nyb2xsc19yZXNpemUpOgorICAgICAgICAoX2V3a192aWV3X3Njcm9sbF9hZGQpOgorICAgICAg
ICAoX2V3a192aWV3X3Njcm9sbHNfZmx1c2gpOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2Zv
Y3VzX2luKToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9mb2N1c19vdXQpOgorICAgICAgICAo
X2V3a192aWV3X3NtYXJ0X21vdXNlX3doZWVsKToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9t
b3VzZV9kb3duKToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9tb3VzZV91cCk6CisgICAgICAg
IChfZXdrX3ZpZXdfc21hcnRfbW91c2VfbW92ZSk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRf
a2V5X2Rvd24pOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2tleV91cCk6CisgICAgICAgIChf
ZXdrX3ZpZXdfc21hcnRfYWRkX2NvbnNvbGVfbWVzc2FnZSk6CisgICAgICAgIChfZXdrX3ZpZXdf
c21hcnRfcnVuX2phdmFzY3JpcHRfYWxlcnQpOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X3J1
bl9qYXZhc2NyaXB0X2NvbmZpcm0pOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X3Nob3VsZF9p
bnRlcnJ1cHRfamF2YXNjcmlwdCk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfcnVuX2phdmFz
Y3JpcHRfcHJvbXB0KToKKyAgICAgICAgKF9ld2tfdmlld19vbl9mb2N1c19pbik6CisgICAgICAg
IChfZXdrX3ZpZXdfb25fZm9jdXNfb3V0KToKKyAgICAgICAgKF9ld2tfdmlld19vbl9tb3VzZV93
aGVlbCk6CisgICAgICAgIChfZXdrX3ZpZXdfb25fbW91c2VfZG93bik6CisgICAgICAgIChfZXdr
X3ZpZXdfb25fbW91c2VfdXApOgorICAgICAgICAoX2V3a192aWV3X29uX21vdXNlX21vdmUpOgor
ICAgICAgICAoX2V3a192aWV3X29uX2tleV9kb3duKToKKyAgICAgICAgKF9ld2tfdmlld19vbl9r
ZXlfdXApOgorICAgICAgICAoX2V3a192aWV3X2NvcmVfZnJhbWVfbmV3KToKKyAgICAgICAgKF9l
d2tfdmlld19wcml2X25ldyk6CisgICAgICAgIChfZXdrX3ZpZXdfcHJpdl9kZWwpOgorICAgICAg
ICAoX2V3a192aWV3X3NtYXJ0X2FkZCk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfZGVsKToK
KyAgICAgICAgKF9ld2tfdmlld19zbWFydF9yZXNpemUpOgorICAgICAgICAoX2V3a192aWV3X3Nt
YXJ0X21vdmUpOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2NhbGN1bGF0ZSk6CisgICAgICAg
IChfZXdrX3ZpZXdfc21hcnRfY29udGVudHNfcmVzaXplKToKKyAgICAgICAgKF9ld2tfdmlld19z
bWFydF96b29tX3NldCk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfZmx1c2gpOgorICAgICAg
ICAoX2V3a192aWV3X3NtYXJ0X3ByZV9yZW5kZXJfcmVnaW9uKToKKyAgICAgICAgKF9ld2tfdmll
d19zbWFydF9wcmVfcmVuZGVyX3JlbGF0aXZlX3JhZGl1cyk6CisgICAgICAgIChfZXdrX3ZpZXdf
c21hcnRfcHJlX3JlbmRlcl9jYW5jZWwpOgorICAgICAgICAoX2V3a192aWV3X3pvb21fYW5pbWF0
ZWRfbWFya19zdG9wKToKKyAgICAgICAgKF9ld2tfdmlld196b29tX2FuaW1hdGVkX2ZpbmlzaCk6
CisgICAgICAgIChfZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9jdXJyZW50KToKKyAgICAgICAgKF9l
d2tfdmlld196b29tX2FuaW1hdG9yX2NiKToKKyAgICAgICAgKF9ld2tfdmlld196b29tX2FuaW1h
dGlvbl9zdGFydCk6CisgICAgICAgIChfZXdrX3ZpZXdfdmlld3BvcnRfYXR0cmlidXRlc19jb21w
dXRlKToKKyAgICAgICAgKGV3a192aWV3X2Jhc2Vfc21hcnRfc2V0KToKKyAgICAgICAgKGV3a192
aWV3X2ZpeGVkX2xheW91dF9zaXplX3NldCk6CisgICAgICAgIChld2tfdmlld19maXhlZF9sYXlv
dXRfc2l6ZV9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfdGhlbWVfc2V0KToKKyAgICAgICAgKGV3
a192aWV3X3RoZW1lX2dldCk6CisgICAgICAgIChld2tfdmlld19mcmFtZV9tYWluX2dldCk6Cisg
ICAgICAgIChld2tfdmlld19mcmFtZV9mb2N1c2VkX2dldCk6CisgICAgICAgIChld2tfdmlld191
cmlfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3VyaV9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdf
dGl0bGVfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X2VkaXRhYmxlX2dldCk6CisgICAgICAgIChl
d2tfdmlld19iZ19jb2xvcl9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfYmdfY29sb3JfZ2V0KToK
KyAgICAgICAgKGV3a192aWV3X3RleHRfc2VhcmNoKToKKyAgICAgICAgKGV3a192aWV3X3RleHRf
bWF0Y2hlc19tYXJrKToKKyAgICAgICAgKGV3a192aWV3X3RleHRfbWF0Y2hlc191bm1hcmtfYWxs
KToKKyAgICAgICAgKGV3a192aWV3X3RleHRfbWF0Y2hlc19oaWdobGlnaHRfc2V0KToKKyAgICAg
ICAgKGV3a192aWV3X3RleHRfbWF0Y2hlc19oaWdobGlnaHRfZ2V0KToKKyAgICAgICAgKGV3a192
aWV3X2VkaXRhYmxlX3NldCk6CisgICAgICAgIChld2tfdmlld19zZWxlY3Rpb25fZ2V0KToKKyAg
ICAgICAgKF9ld2tfdmlld19lZGl0b3JfY29tbWFuZCk6CisgICAgICAgIChld2tfdmlld19leGVj
dXRlX2VkaXRvcl9jb21tYW5kKToKKyAgICAgICAgKGV3a192aWV3X2NvbnRleHRfbWVudV9mb3J3
YXJkX2V2ZW50KToKKyAgICAgICAgKGV3a192aWV3X2xvYWRfcHJvZ3Jlc3NfZ2V0KToKKyAgICAg
ICAgKGV3a192aWV3X3N0b3ApOgorICAgICAgICAoZXdrX3ZpZXdfcmVsb2FkKToKKyAgICAgICAg
KGV3a192aWV3X3JlbG9hZF9mdWxsKToKKyAgICAgICAgKGV3a192aWV3X2JhY2spOgorICAgICAg
ICAoZXdrX3ZpZXdfZm9yd2FyZCk6CisgICAgICAgIChld2tfdmlld19uYXZpZ2F0ZSk6CisgICAg
ICAgIChld2tfdmlld19iYWNrX3Bvc3NpYmxlKToKKyAgICAgICAgKGV3a192aWV3X2ZvcndhcmRf
cG9zc2libGUpOgorICAgICAgICAoZXdrX3ZpZXdfbmF2aWdhdGVfcG9zc2libGUpOgorICAgICAg
ICAoZXdrX3ZpZXdfaGlzdG9yeV9lbmFibGVfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X2hpc3Rv
cnlfZW5hYmxlX3NldCk6CisgICAgICAgIChld2tfdmlld19oaXN0b3J5X2dldCk6CisgICAgICAg
IChld2tfdmlld196b29tX2dldCk6CisgICAgICAgIChld2tfdmlld196b29tX3NldCk6CisgICAg
ICAgIChld2tfdmlld196b29tX3dlYWtfc21vb3RoX3NjYWxlX2dldCk6CisgICAgICAgIChld2tf
dmlld196b29tX3dlYWtfc21vb3RoX3NjYWxlX3NldCk6CisgICAgICAgIChld2tfdmlld196b29t
X3dlYWtfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3pvb21fYW5pbWF0ZWRfbWFya19zdGFydCk6
CisgICAgICAgIChld2tfdmlld196b29tX2FuaW1hdGVkX21hcmtfZW5kKToKKyAgICAgICAgKGV3
a192aWV3X3pvb21fYW5pbWF0ZWRfbWFya19jdXJyZW50KToKKyAgICAgICAgKGV3a192aWV3X3pv
b21fYW5pbWF0ZWRfbWFya19zdG9wKToKKyAgICAgICAgKGV3a192aWV3X3pvb21fYW5pbWF0ZWRf
c2V0KToKKyAgICAgICAgKGV3a192aWV3X3pvb21fdGV4dF9vbmx5X2dldCk6CisgICAgICAgIChl
d2tfdmlld196b29tX3RleHRfb25seV9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfcHJlX3JlbmRl
cl9yZWdpb24pOgorICAgICAgICAoZXdrX3ZpZXdfcHJlX3JlbmRlcl9yZWxhdGl2ZV9yYWRpdXMp
OgorICAgICAgICAoZXdrX3ZpZXdfcHJlX3JlbmRlcl9jYW5jZWwpOgorICAgICAgICAoZXdrX3Zp
ZXdfc2V0dGluZ191c2VyX2FnZW50X2dldCk6CisgICAgICAgIChld2tfdmlld19zZXR0aW5nX3Vz
ZXJfYWdlbnRfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfdXNlcl9zdHlsZXNoZWV0
X2dldCk6CisgICAgICAgIChld2tfdmlld19zZXR0aW5nX3VzZXJfc3R5bGVzaGVldF9zZXQpOgor
ICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19hdXRvX2xvYWRfaW1hZ2VzX2dldCk6CisgICAgICAg
IChld2tfdmlld19zZXR0aW5nX2F1dG9fbG9hZF9pbWFnZXNfc2V0KToKKyAgICAgICAgKGV3a192
aWV3X3NldHRpbmdfYXV0b19zaHJpbmtfaW1hZ2VzX2dldCk6CisgICAgICAgIChld2tfdmlld19z
ZXR0aW5nX2F1dG9fc2hyaW5rX2ltYWdlc19zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc2V0dGlu
Z19lbmFibGVfYXV0b19yZXNpemVfd2luZG93X2dldCk6CisgICAgICAgIChld2tfdmlld19zZXR0
aW5nX2VuYWJsZV9hdXRvX3Jlc2l6ZV93aW5kb3dfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3Nl
dHRpbmdfZW5hYmxlX3NjcmlwdHNfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZW5h
YmxlX3NjcmlwdHNfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZW5hYmxlX3BsdWdp
bnNfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZW5hYmxlX3BsdWdpbnNfc2V0KToK
KyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmdfZ2V0KToK
KyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmdfc2V0KToK
KyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfc2NyaXB0c193aW5kb3dfb3Blbl9nZXQpOgorICAg
ICAgICAoZXdrX3ZpZXdfc2V0dGluZ19zY3JpcHRzX3dpbmRvd19vcGVuX3NldCk6CisgICAgICAg
IChld2tfdmlld19zZXR0aW5nX3Jlc2l6YWJsZV90ZXh0YXJlYXNfZ2V0KToKKyAgICAgICAgKGV3
a192aWV3X3NldHRpbmdfcmVzaXphYmxlX3RleHRhcmVhc19zZXQpOgorICAgICAgICAoZXdrX3Zp
ZXdfc2V0dGluZ19wcml2YXRlX2Jyb3dzaW5nX2dldCk6CisgICAgICAgIChld2tfdmlld19zZXR0
aW5nX3ByaXZhdGVfYnJvd3Npbmdfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfb2Zm
bGluZV9hcHBfY2FjaGVfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfb2ZmbGluZV9h
cHBfY2FjaGVfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfY2FyZXRfYnJvd3Npbmdf
Z2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfY2FyZXRfYnJvd3Npbmdfc2V0KToKKyAg
ICAgICAgKGV3a192aWV3X3NldHRpbmdfZW5jb2RpbmdfY3VzdG9tX2dldCk6CisgICAgICAgIChl
d2tfdmlld19zZXR0aW5nX2VuY29kaW5nX2N1c3RvbV9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdf
c2V0dGluZ19lbmNvZGluZ19kZWZhdWx0X2dldCk6CisgICAgICAgIChld2tfdmlld19zZXR0aW5n
X2VuY29kaW5nX2RlZmF1bHRfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZW5jb2Rp
bmdfZGV0ZWN0b3Jfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZW5jb2RpbmdfZGV0
ZWN0b3JfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2RldmVsb3Blcl9l
eHRyYXNfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2RldmVsb3Blcl9l
eHRyYXNfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZm9udF9taW5pbXVtX3NpemVf
Z2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZm9udF9taW5pbXVtX3NpemVfc2V0KToK
KyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZm9udF9taW5pbXVtX2xvZ2ljYWxfc2l6ZV9nZXQp
OgorICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19mb250X21pbmltdW1fbG9naWNhbF9zaXplX3Nl
dCk6CisgICAgICAgIChld2tfdmlld19zZXR0aW5nX2ZvbnRfZGVmYXVsdF9zaXplX2dldCk6Cisg
ICAgICAgIChld2tfdmlld19zZXR0aW5nX2ZvbnRfZGVmYXVsdF9zaXplX3NldCk6CisgICAgICAg
IChld2tfdmlld19zZXR0aW5nX2ZvbnRfbW9ub3NwYWNlX3NpemVfZ2V0KToKKyAgICAgICAgKGV3
a192aWV3X3NldHRpbmdfZm9udF9tb25vc3BhY2Vfc2l6ZV9zZXQpOgorICAgICAgICAoZXdrX3Zp
ZXdfc2V0dGluZ19mb250X3N0YW5kYXJkX2dldCk6CisgICAgICAgIChld2tfdmlld19zZXR0aW5n
X2ZvbnRfc3RhbmRhcmRfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZm9udF9jdXJz
aXZlX2dldCk6CisgICAgICAgIChld2tfdmlld19zZXR0aW5nX2ZvbnRfY3Vyc2l2ZV9zZXQpOgor
ICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19mb250X2ZhbnRhc3lfZ2V0KToKKyAgICAgICAgKGV3
a192aWV3X3NldHRpbmdfZm9udF9mYW50YXN5X3NldCk6CisgICAgICAgIChld2tfdmlld19zZXR0
aW5nX2ZvbnRfbW9ub3NwYWNlX2dldCk6CisgICAgICAgIChld2tfdmlld19zZXR0aW5nX2ZvbnRf
bW9ub3NwYWNlX3NldCk6CisgICAgICAgIChld2tfdmlld19zZXR0aW5nX2ZvbnRfc2VyaWZfZ2V0
KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZm9udF9zZXJpZl9zZXQpOgorICAgICAgICAo
ZXdrX3ZpZXdfc2V0dGluZ19mb250X3NhbnNfc2VyaWZfZ2V0KToKKyAgICAgICAgKGV3a192aWV3
X3NldHRpbmdfZm9udF9zYW5zX3NlcmlmX3NldCk6CisgICAgICAgIChld2tfdmlld19zZXR0aW5n
X3NwYXRpYWxfbmF2aWdhdGlvbl9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19zcGF0
aWFsX25hdmlnYXRpb25fc2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfbG9jYWxfc3Rv
cmFnZV9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19sb2NhbF9zdG9yYWdlX3NldCk6
CisgICAgICAgIChld2tfdmlld19zZXR0aW5nX3BhZ2VfY2FjaGVfZ2V0KToKKyAgICAgICAgKGV3
a192aWV3X3NldHRpbmdfcGFnZV9jYWNoZV9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc2V0dGlu
Z19sb2NhbF9zdG9yYWdlX2RhdGFiYXNlX3BhdGhfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X3Nl
dHRpbmdfbG9jYWxfc3RvcmFnZV9kYXRhYmFzZV9wYXRoX3NldCk6CisgICAgICAgIChld2tfdmll
d19zbWFydF9kYXRhX2dldCk6CisgICAgICAgIChld2tfdmlld19yZXBhaW50c19nZXQpOgorICAg
ICAgICAoZXdrX3ZpZXdfc2Nyb2xsX3JlcXVlc3RzX2dldCk6CisgICAgICAgIChld2tfdmlld19y
ZXBhaW50X2FkZCk6CisgICAgICAgIChld2tfdmlld19sYXlvdXRfaWZfbmVlZGVkX3JlY3Vyc2l2
ZSk6CisgICAgICAgIChld2tfdmlld19zY3JvbGxzX3Byb2Nlc3MpOgorICAgICAgICAoZXdrX3Zp
ZXdfcGFpbnRfY29udGV4dF9uZXcpOgorICAgICAgICAoZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9m
cmVlKToKKyAgICAgICAgKGV3a192aWV3X3BhaW50X2NvbnRleHRfc2F2ZSk6CisgICAgICAgIChl
d2tfdmlld19wYWludF9jb250ZXh0X3Jlc3RvcmUpOgorICAgICAgICAoZXdrX3ZpZXdfcGFpbnRf
Y29udGV4dF9jbGlwKToKKyAgICAgICAgKGV3a192aWV3X3BhaW50X2NvbnRleHRfcGFpbnQpOgor
ICAgICAgICAoZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9wYWludF9jb250ZW50cyk6CisgICAgICAg
IChld2tfdmlld19wYWludF9jb250ZXh0X3NjYWxlKToKKyAgICAgICAgKGV3a192aWV3X3BhaW50
X2NvbnRleHRfdHJhbnNsYXRlKToKKyAgICAgICAgKGV3a192aWV3X3BhaW50KToKKyAgICAgICAg
KGV3a192aWV3X3BhaW50X2NvbnRlbnRzKToKKyAgICAgICAgKGV3a192aWV3X3JlYWR5KToKKyAg
ICAgICAgKGV3a192aWV3X2lucHV0X21ldGhvZF9zdGF0ZV9zZXQpOgorICAgICAgICAoZXdrX3Zp
ZXdfdGl0bGVfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3VyaV9jaGFuZ2VkKToKKyAgICAgICAg
KGV3a192aWV3X2xvYWRfc3RhcnRlZCk6CisgICAgICAgIChld2tfdmlld19mcmFtZV9tYWluX2xv
YWRfc3RhcnRlZCk6CisgICAgICAgIChld2tfdmlld19sb2FkX3Byb3Zpc2lvbmFsKToKKyAgICAg
ICAgKGV3a192aWV3X2xvYWRfc2hvdyk6CisgICAgICAgIChld2tfdmlld19mcmFtZV9tYWluX2Ns
ZWFyZWQpOgorICAgICAgICAoZXdrX3ZpZXdfZnJhbWVfbWFpbl9pY29uX3JlY2VpdmVkKToKKyAg
ICAgICAgKGV3a192aWV3X2xvYWRfZmluaXNoZWQpOgorICAgICAgICAoZXdrX3ZpZXdfbG9hZF9l
cnJvcik6CisgICAgICAgIChld2tfdmlld19sb2FkX3Byb2dyZXNzX2NoYW5nZWQpOgorICAgICAg
ICAoZXdrX3ZpZXdfcmVzdG9yZV9zdGF0ZSk6CisgICAgICAgIChld2tfdmlld193aW5kb3dfY3Jl
YXRlKToKKyAgICAgICAgKGV3a192aWV3X3dpbmRvd19jbG9zZSk6CisgICAgICAgIChld2tfdmll
d19tb3VzZV9saW5rX2hvdmVyX2luKToKKyAgICAgICAgKGV3a192aWV3X21vdXNlX2xpbmtfaG92
ZXJfb3V0KToKKyAgICAgICAgKGV3a192aWV3X3Rvb2xiYXJzX3Zpc2libGVfc2V0KToKKyAgICAg
ICAgKGV3a192aWV3X3Rvb2xiYXJzX3Zpc2libGVfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X3N0
YXR1c2Jhcl92aXNpYmxlX3NldCk6CisgICAgICAgIChld2tfdmlld19zdGF0dXNiYXJfdmlzaWJs
ZV9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc3RhdHVzYmFyX3RleHRfc2V0KToKKyAgICAgICAg
KGV3a192aWV3X3Njcm9sbGJhcnNfdmlzaWJsZV9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc2Ny
b2xsYmFyc192aXNpYmxlX2dldCk6CisgICAgICAgIChld2tfdmlld19tZW51YmFyX3Zpc2libGVf
c2V0KToKKyAgICAgICAgKGV3a192aWV3X21lbnViYXJfdmlzaWJsZV9nZXQpOgorICAgICAgICAo
ZXdrX3ZpZXdfdG9vbHRpcF90ZXh0X3NldCk6CisgICAgICAgIChld2tfdmlld19hZGRfY29uc29s
ZV9tZXNzYWdlKToKKyAgICAgICAgKGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X2FsZXJ0KToKKyAg
ICAgICAgKGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X2NvbmZpcm0pOgorICAgICAgICAoZXdrX3Zp
ZXdfcnVuX2phdmFzY3JpcHRfcHJvbXB0KToKKyAgICAgICAgKGV3a192aWV3X3Nob3VsZF9pbnRl
cnJ1cHRfamF2YXNjcmlwdCk6CisgICAgICAgIChld2tfdmlld19leGNlZWRlZF9kYXRhYmFzZV9x
dW90YSk6CisgICAgICAgIChld2tfdmlld19ydW5fb3Blbl9wYW5lbCk6CisgICAgICAgIChld2tf
dmlld19yZXBhaW50KToKKyAgICAgICAgKGV3a192aWV3X3Njcm9sbCk6CisgICAgICAgIChld2tf
dmlld19jb3JlX3BhZ2VfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X2ZyYW1lX2NyZWF0ZSk6Cisg
ICAgICAgIChld2tfdmlld19wbHVnaW5fY3JlYXRlKToKKyAgICAgICAgKGV3a192aWV3X3BvcHVw
X25ldyk6CisgICAgICAgIChld2tfdmlld19wb3B1cF9kZXN0cm95KToKKyAgICAgICAgKGV3a192
aWV3X3BvcHVwX3NlbGVjdGVkX3NldCk6CisgICAgICAgIChld2tfdmlld19kb3dubG9hZF9yZXF1
ZXN0KToKKyAgICAgICAgKGV3a192aWV3X3ZpZXdwb3J0X2F0dHJpYnV0ZXNfc2V0KToKKyAgICAg
ICAgKGV3a192aWV3X3ZpZXdwb3J0X2F0dHJpYnV0ZXNfZ2V0KToKKyAgICAgICAgKGV3a192aWV3
X3pvb21fcmFuZ2Vfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3pvb21fcmFuZ2VfbWluX2dldCk6
CisgICAgICAgIChld2tfdmlld196b29tX3JhbmdlX21heF9nZXQpOgorICAgICAgICAoZXdrX3Zp
ZXdfdXNlcl9zY2FsYWJsZV9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfdXNlcl9zY2FsYWJsZV9n
ZXQpOgorICAgICAgICAoZXdrX3ZpZXdfZGV2aWNlX3BpeGVsX3JhdGlvX2dldCk6CisgICAgICAg
IChld2tfdmlld19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbik6CisgICAgICAgIChld2tfdmll
d19wYWdlX3JlY3RfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X25lZWRfdG91Y2hfZXZlbnRzX3Nl
dCk6CisgICAgICAgIChld2tfdmlld19uZWVkX3RvdWNoX2V2ZW50c19nZXQpOgorICAgICAgICAo
ZXdrX3ZpZXdfbW9kZV9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfbW9kZV9nZXQpOgorICAgICAg
ICAoZXdrX3ZpZXdfZWRpdG9yX2NsaWVudF9zZWxlY3Rpb25fY2hhbmdlZCk6CisgICAgICAgICog
ZXdrL2V3a192aWV3Lmg6CisKIDIwMTEtMDctMjUgIEdyemVnb3J6IEN6YWprb3dza2kgIDxnLmN6
YWprb3dza2lAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF0gTW92ZSBtYWNybyBjaGVja2lu
ZyBpbnNpZGUgZXdrX3ZpZXdfY29udGV4dF9tZW51X2ZvcndhcmRfZXZlbnQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX3ZpZXcuY3BwCmluZGV4IGFhYmM2MDAuLjYxYTcwODMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a192aWV3LmNwcApAQCAtNzQsMjIgKzc0LDIyIEBAIHN0YXRpYyBjb25zdCBzaXplX3QgRVdL
X1ZJRVdfU0NST0xMU19TSVpFX1NURVAgPSAyOwogc3RhdGljIGNvbnN0IHNpemVfdCBFV0tfVklF
V19TQ1JPTExTX1NJWkVfTUFYX0ZSRUUgPSAzMjsKIAogc3RydWN0IF9Fd2tfVmlld19Qcml2YXRl
X0RhdGEgewotICAgIFdlYkNvcmU6OlBhZ2UqIHBhZ2U7Ci0gICAgV2ViQ29yZTo6U2V0dGluZ3Mq
IHBhZ2Vfc2V0dGluZ3M7Ci0gICAgV2ViQ29yZTo6RnJhbWUqIG1haW5fZnJhbWU7CisgICAgV2Vi
Q29yZTo6UGFnZSAqcGFnZTsKKyAgICBXZWJDb3JlOjpTZXR0aW5ncyAqcGFnZV9zZXR0aW5nczsK
KyAgICBXZWJDb3JlOjpGcmFtZSAqbWFpbl9mcmFtZTsKICAgICBXZWJDb3JlOjpWaWV3cG9ydEFy
Z3VtZW50cyB2aWV3cG9ydF9hcmd1bWVudHM7Ci0gICAgRXdrX0hpc3RvcnkqIGhpc3Rvcnk7Cisg
ICAgRXdrX0hpc3RvcnkgKmhpc3Rvcnk7CiAgICAgc3RydWN0IHsKICAgICAgICAgRXdrX01lbnUg
bWVudTsKLSAgICAgICAgV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KiBtZW51X2NsaWVudDsKKyAg
ICAgICAgV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50ICptZW51X2NsaWVudDsKICAgICB9IHBvcHVw
OwogICAgIHN0cnVjdCB7Ci0gICAgICAgIEVpbmFfUmVjdGFuZ2xlKiBhcnJheTsKKyAgICAgICAg
RWluYV9SZWN0YW5nbGUgKmFycmF5OwogICAgICAgICBzaXplX3QgY291bnQ7CiAgICAgICAgIHNp
emVfdCBhbGxvY2F0ZWQ7CiAgICAgfSByZXBhaW50czsKICAgICBzdHJ1Y3QgewotICAgICAgICBF
d2tfU2Nyb2xsX1JlcXVlc3QqIGFycmF5OworICAgICAgICBFd2tfU2Nyb2xsX1JlcXVlc3QgKmFy
cmF5OwogICAgICAgICBzaXplX3QgY291bnQ7CiAgICAgICAgIHNpemVfdCBhbGxvY2F0ZWQ7CiAg
ICAgfSBzY3JvbGxzOwpAQCAtOTksMjIgKzk5LDIyIEBAIHN0cnVjdCBfRXdrX1ZpZXdfUHJpdmF0
ZV9EYXRhIHsKICAgICAgICAgRWluYV9Cb29sIG5lZWRfdG91Y2hfZXZlbnRzOjE7CiAgICAgfSBm
bGFnczsKICAgICBzdHJ1Y3QgewotICAgICAgICBjb25zdCBjaGFyKiB1c2VyX2FnZW50OwotICAg
ICAgICBjb25zdCBjaGFyKiB1c2VyX3N0eWxlc2hlZXQ7Ci0gICAgICAgIGNvbnN0IGNoYXIqIGVu
Y29kaW5nX2RlZmF1bHQ7Ci0gICAgICAgIGNvbnN0IGNoYXIqIGVuY29kaW5nX2N1c3RvbTsKLSAg
ICAgICAgY29uc3QgY2hhciogdGhlbWU7Ci0gICAgICAgIGNvbnN0IGNoYXIqIGxvY2FsX3N0b3Jh
Z2VfZGF0YWJhc2VfcGF0aDsKKyAgICAgICAgY29uc3QgY2hhciAqdXNlcl9hZ2VudDsKKyAgICAg
ICAgY29uc3QgY2hhciAqdXNlcl9zdHlsZXNoZWV0OworICAgICAgICBjb25zdCBjaGFyICplbmNv
ZGluZ19kZWZhdWx0OworICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZ19jdXN0b207CisgICAg
ICAgIGNvbnN0IGNoYXIgKnRoZW1lOworICAgICAgICBjb25zdCBjaGFyICpsb2NhbF9zdG9yYWdl
X2RhdGFiYXNlX3BhdGg7CiAgICAgICAgIGludCBmb250X21pbmltdW1fc2l6ZTsKICAgICAgICAg
aW50IGZvbnRfbWluaW11bV9sb2dpY2FsX3NpemU7CiAgICAgICAgIGludCBmb250X2RlZmF1bHRf
c2l6ZTsKICAgICAgICAgaW50IGZvbnRfbW9ub3NwYWNlX3NpemU7Ci0gICAgICAgIGNvbnN0IGNo
YXIqIGZvbnRfc3RhbmRhcmQ7Ci0gICAgICAgIGNvbnN0IGNoYXIqIGZvbnRfY3Vyc2l2ZTsKLSAg
ICAgICAgY29uc3QgY2hhciogZm9udF9tb25vc3BhY2U7Ci0gICAgICAgIGNvbnN0IGNoYXIqIGZv
bnRfZmFudGFzeTsKLSAgICAgICAgY29uc3QgY2hhciogZm9udF9zZXJpZjsKLSAgICAgICAgY29u
c3QgY2hhciogZm9udF9zYW5zX3NlcmlmOworICAgICAgICBjb25zdCBjaGFyICpmb250X3N0YW5k
YXJkOworICAgICAgICBjb25zdCBjaGFyICpmb250X2N1cnNpdmU7CisgICAgICAgIGNvbnN0IGNo
YXIgKmZvbnRfbW9ub3NwYWNlOworICAgICAgICBjb25zdCBjaGFyICpmb250X2ZhbnRhc3k7Cisg
ICAgICAgIGNvbnN0IGNoYXIgKmZvbnRfc2VyaWY7CisgICAgICAgIGNvbnN0IGNoYXIgKmZvbnRf
c2Fuc19zZXJpZjsKICAgICAgICAgRWluYV9Cb29sIGF1dG9fbG9hZF9pbWFnZXM6MTsKICAgICAg
ICAgRWluYV9Cb29sIGF1dG9fc2hyaW5rX2ltYWdlczoxOwogICAgICAgICBFaW5hX0Jvb2wgZW5h
YmxlX2F1dG9fcmVzaXplX3dpbmRvdzoxOwpAQCAtMTUyLDcgKzE1Miw3IEBAIHN0cnVjdCBfRXdr
X1ZpZXdfUHJpdmF0ZV9EYXRhIHsKICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgIEV2YXNf
Q29vcmQgeCwgeTsKICAgICAgICAgfSBjZW50ZXI7Ci0gICAgICAgIEVjb3JlX0FuaW1hdG9yKiBh
bmltYXRvcjsKKyAgICAgICAgRWNvcmVfQW5pbWF0b3IgKmFuaW1hdG9yOwogICAgIH0gYW5pbWF0
ZWRfem9vbTsKIH07CiAKQEAgLTE2MSwxNSArMTYxLDE1IEBAIHN0cnVjdCBfRXdrX1ZpZXdfUHJp
dmF0ZV9EYXRhIHsKICNlbHNlCiAjZGVmaW5lIEVXS19WSUVXX1RZUEVfQ0hFQ0sobywgLi4uKSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgZG8geyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0g
ICAgICAgIGNvbnN0IGNoYXIqIF90bXBfb3R5cGUgPSBldmFzX29iamVjdF90eXBlX2dldChvKTsg
ICAgICAgICAgICAgICBcCi0gICAgICAgIGNvbnN0IEV2YXNfU21hcnQqIF90bXBfcyA9IGV2YXNf
b2JqZWN0X3NtYXJ0X3NtYXJ0X2dldChvKTsgICAgICBcCisgICAgICAgIGNvbnN0IGNoYXIgKl90
bXBfb3R5cGUgPSBldmFzX29iamVjdF90eXBlX2dldChvKTsgICAgICAgICAgICAgICBcCisgICAg
ICAgIGNvbnN0IEV2YXNfU21hcnQgKl90bXBfcyA9IGV2YXNfb2JqZWN0X3NtYXJ0X3NtYXJ0X2dl
dChvKTsgICAgICBcCiAgICAgICAgIGlmIChFSU5BX1VOTElLRUxZKCFfdG1wX3MpKSB7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICBFSU5BX0xPR19DUklU
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAg
ICAgICAgICAgKCIlcCAoJXMpIGlzIG5vdCBhIHNtYXJ0IG9iamVjdCEiLCBvLCAgICAgICAgICAg
ICAgICAgICBcCiAgICAgICAgICAgICAgICAgIF90bXBfb3R5cGUgPyBfdG1wX290eXBlIDogIihu
dWxsKSIpOyAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICByZXR1cm4gX19WQV9BUkdT
X187ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIH0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCi0gICAgICAgIGNvbnN0IEV2YXNfU21hcnRfQ2xhc3MqIF90bXBfc2MgPSBldmFzX3Nt
YXJ0X2NsYXNzX2dldChfdG1wX3MpOyBcCisgICAgICAgIGNvbnN0IEV2YXNfU21hcnRfQ2xhc3Mg
Kl90bXBfc2MgPSBldmFzX3NtYXJ0X2NsYXNzX2dldChfdG1wX3MpOyBcCiAgICAgICAgIGlmIChF
SU5BX1VOTElLRUxZKCFfdG1wX3NjKSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCiAgICAgICAgICAgICBFSU5BX0xPR19DUklUICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgKCIlcCAoJXMpIGlzIG5vdCBh
IHNtYXJ0IG9iamVjdCEiLCBvLCAgICAgICAgICAgICAgICAgICBcCkBAIC0xODcsNyArMTg3LDcg
QEAgc3RydWN0IF9Fd2tfVmlld19Qcml2YXRlX0RhdGEgewogI2VuZGlmCiAKICNkZWZpbmUgRVdL
X1ZJRVdfU0RfR0VUKG8sIHB0cikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0g
ICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogcHRyID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWV2YXNf
b2JqZWN0X3NtYXJ0X2RhdGFfZ2V0KG8pCisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSAqcHRyID0g
KEV3a19WaWV3X1NtYXJ0X0RhdGEgKilldmFzX29iamVjdF9zbWFydF9kYXRhX2dldChvKQogCiAj
ZGVmaW5lIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgcHRyLCAuLi4pICAgICAgICAgIFwK
ICAgICBFV0tfVklFV19UWVBFX0NIRUNLKG8sIF9fVkFfQVJHU19fKTsgICAgICAgICAgICAgICAg
XApAQCAtMTk5LDcgKzE5OSw3IEBAIHN0cnVjdCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsKICAg
ICB9CiAKICNkZWZpbmUgRVdLX1ZJRVdfUFJJVl9HRVQoc2QsIHB0cikgICAgICAgICAgICAgIFwK
LSAgICBFd2tfVmlld19Qcml2YXRlX0RhdGEqIHB0ciA9IHNkLT5fcHJpdgorICAgIEV3a19WaWV3
X1ByaXZhdGVfRGF0YSAqcHRyID0gc2QtPl9wcml2CiAKICNkZWZpbmUgRVdLX1ZJRVdfUFJJVl9H
RVRfT1JfUkVUVVJOKHNkLCBwdHIsIC4uLikgICAgICAgICAgICAgICBcCiAgICAgRVdLX1ZJRVdf
UFJJVl9HRVQoc2QsIHB0cik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAt
MjA5LDcgKzIwOSw3IEBAIHN0cnVjdCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsKICAgICAgICAg
cmV0dXJuIF9fVkFfQVJHU19fOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CiAgICAgfQogCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfY2hhbmdlZChFd2tfVmlld19T
bWFydF9EYXRhKiBzZCkKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9jaGFuZ2VkKEV3a19W
aWV3X1NtYXJ0X0RhdGEgKnNkKQogewogICAgIGlmIChzZC0+Y2hhbmdlZC5hbnkpCiAgICAgICAg
IHJldHVybjsKQEAgLTIxNywyMSArMjE3LDIxIEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFy
dF9jaGFuZ2VkKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkKQogICAgIGV2YXNfb2JqZWN0X3NtYXJ0
X2NoYW5nZWQoc2QtPnNlbGYpOwogfQogCi1zdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19yZXBh
aW50c19yZXNpemUoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2LCBzaXplX3Qgc2l6ZSkKK3N0
YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3JlcGFpbnRzX3Jlc2l6ZShFd2tfVmlld19Qcml2YXRl
X0RhdGEgKnByaXYsIHNpemVfdCBzaXplKQogewotICAgIHZvaWQqIHRtcCA9IHJlYWxsb2MocHJp
di0+cmVwYWludHMuYXJyYXksIHNpemUgKiBzaXplb2YoRWluYV9SZWN0YW5nbGUpKTsKKyAgICB2
b2lkICp0bXAgPSByZWFsbG9jKHByaXYtPnJlcGFpbnRzLmFycmF5LCBzaXplICogc2l6ZW9mKEVp
bmFfUmVjdGFuZ2xlKSk7CiAgICAgaWYgKCF0bXApIHsKICAgICAgICAgQ1JJVElDQUwoImNvdWxk
IG5vdCByZWFsbG9jIHJlcGFpbnRzIGFycmF5IHRvICV6dSBlbGVtZW50cy4iLCBzaXplKTsKICAg
ICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CiAgICAgfQogICAgIHByaXYtPnJlcGFpbnRzLmFsbG9j
YXRlZCA9IHNpemU7Ci0gICAgcHJpdi0+cmVwYWludHMuYXJyYXkgPSAoRWluYV9SZWN0YW5nbGUq
KXRtcDsKKyAgICBwcml2LT5yZXBhaW50cy5hcnJheSA9IChFaW5hX1JlY3RhbmdsZSAqKXRtcDsK
ICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdfcmVwYWlu
dF9hZGQoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2LCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29v
cmQgeSwgRXZhc19Db29yZCB3LCBFdmFzX0Nvb3JkIGgpCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdf
cmVwYWludF9hZGQoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpwcml2LCBFdmFzX0Nvb3JkIHgsIEV2
YXNfQ29vcmQgeSwgRXZhc19Db29yZCB3LCBFdmFzX0Nvb3JkIGgpCiB7Ci0gICAgRWluYV9SZWN0
YW5nbGUqIHI7CisgICAgRWluYV9SZWN0YW5nbGUgKnI7CiAKICAgICAvLyBmcHJpbnRmKHN0ZGVy
ciwgIj4+PiByZXBhaW50IHJlcXVlc3RlZDogJWQsJWQrJWR4JWRcbiIsIHgsIHksIHcsIGgpOwog
ICAgIGlmIChwcml2LT5yZXBhaW50cy5hbGxvY2F0ZWQgPT0gcHJpdi0+cmVwYWludHMuY291bnQp
IHsKQEAgLTI1MiwxMCArMjUyLDEwIEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19yZXBhaW50X2Fk
ZChFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYsIEV2YXNfQ29vcmQgeCwgRXZhCiAgICAgci0+
dyA9IHc7CiAgICAgci0+aCA9IGg7CiAKLSAgICBEQkcoImFkZCByZXBhaW50ICVkLCVkKyVkeCVk
IiwgeCwgeSwgdywgaCk7CisgICAgREJHKCJhZGQgcmVwYWludCAlZCwgJWQrJWR4JWQiLCB4LCB5
LCB3LCBoKTsKIH0KIAotc3RhdGljIHZvaWQgX2V3a192aWV3X3JlcGFpbnRzX2ZsdXNoKEV3a19W
aWV3X1ByaXZhdGVfRGF0YSogcHJpdikKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19yZXBhaW50c19m
bHVzaChFd2tfVmlld19Qcml2YXRlX0RhdGEgKnByaXYpCiB7CiAgICAgcHJpdi0+cmVwYWludHMu
Y291bnQgPSAwOwogICAgIGlmIChwcml2LT5yZXBhaW50cy5hbGxvY2F0ZWQgPD0gRVdLX1ZJRVdf
UkVQQUlOVFNfU0laRV9NQVhfRlJFRSkKQEAgLTI2MywyMiArMjYzLDIyIEBAIHN0YXRpYyB2b2lk
IF9ld2tfdmlld19yZXBhaW50c19mbHVzaChFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYpCiAg
ICAgX2V3a192aWV3X3JlcGFpbnRzX3Jlc2l6ZShwcml2LCBFV0tfVklFV19SRVBBSU5UU19TSVpF
X01BWF9GUkVFKTsKIH0KIAotc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc2Nyb2xsc19yZXNp
emUoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2LCBzaXplX3Qgc2l6ZSkKK3N0YXRpYyBFaW5h
X0Jvb2wgX2V3a192aWV3X3Njcm9sbHNfcmVzaXplKEV3a19WaWV3X1ByaXZhdGVfRGF0YSAqcHJp
diwgc2l6ZV90IHNpemUpCiB7Ci0gICAgdm9pZCogdG1wID0gcmVhbGxvYyhwcml2LT5zY3JvbGxz
LmFycmF5LCBzaXplICogc2l6ZW9mKEV3a19TY3JvbGxfUmVxdWVzdCkpOworICAgIHZvaWQgKnRt
cCA9IHJlYWxsb2MocHJpdi0+c2Nyb2xscy5hcnJheSwgc2l6ZSAqIHNpemVvZihFd2tfU2Nyb2xs
X1JlcXVlc3QpKTsKICAgICBpZiAoIXRtcCkgewogICAgICAgICBDUklUSUNBTCgiY291bGQgbm90
IHJlYWxsb2Mgc2Nyb2xscyBhcnJheSB0byAlenUgZWxlbWVudHMuIiwgc2l6ZSk7CiAgICAgICAg
IHJldHVybiBFSU5BX0ZBTFNFOwogICAgIH0KICAgICBwcml2LT5zY3JvbGxzLmFsbG9jYXRlZCA9
IHNpemU7Ci0gICAgcHJpdi0+c2Nyb2xscy5hcnJheSA9IChFd2tfU2Nyb2xsX1JlcXVlc3QqKXRt
cDsKKyAgICBwcml2LT5zY3JvbGxzLmFycmF5ID0gKEV3a19TY3JvbGxfUmVxdWVzdCAqKXRtcDsK
ICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc2Nyb2xs
X2FkZChFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYsIEV2YXNfQ29vcmQgZHgsIEV2YXNfQ29v
cmQgZHksIEV2YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5LCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29v
cmQgaCwgRWluYV9Cb29sIG1haW5fc2Nyb2xsKQorc3RhdGljIHZvaWQgX2V3a192aWV3X3Njcm9s
bF9hZGQoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpwcml2LCBFdmFzX0Nvb3JkIGR4LCBFdmFzX0Nv
b3JkIGR5LCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwgRXZhc19Db29yZCB3LCBFdmFzX0Nv
b3JkIGgsIEVpbmFfQm9vbCBtYWluX3Njcm9sbCkKIHsKLSAgICBFd2tfU2Nyb2xsX1JlcXVlc3Qq
IHI7Ci0gICAgRXdrX1Njcm9sbF9SZXF1ZXN0KiByX2VuZDsKKyAgICBFd2tfU2Nyb2xsX1JlcXVl
c3QgKnI7CisgICAgRXdrX1Njcm9sbF9SZXF1ZXN0ICpyX2VuZDsKICAgICBFdmFzX0Nvb3JkIHgy
ID0geCArIHcsIHkyID0geSArIGg7CiAKICAgICByID0gcHJpdi0+c2Nyb2xscy5hcnJheTsKQEAg
LTMyMywxMCArMzIzLDEwIEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19zY3JvbGxfYWRkKEV3a19W
aWV3X1ByaXZhdGVfRGF0YSogcHJpdiwgRXZhc19Db29yZCBkeCwgRXZhCiAgICAgci0+ZHggPSBk
eDsKICAgICByLT5keSA9IGR5OwogICAgIHItPm1haW5fc2Nyb2xsID0gbWFpbl9zY3JvbGw7Ci0g
ICAgREJHKCJhZGQgc2Nyb2xsIGluIHJlZ2lvbjogJWQsJWQrJWR4JWQgJSswM2QsJSswM2QiLCB4
LCB5LCB3LCBoLCBkeCwgZHkpOworICAgIERCRygiYWRkIHNjcm9sbCBpbiByZWdpb246ICVkLCAl
ZCslZHglZCAlKzAzZCwgJSswM2QiLCB4LCB5LCB3LCBoLCBkeCwgZHkpOwogCi0gICAgRWluYV9S
ZWN0YW5nbGUqIHByOwotICAgIEVpbmFfUmVjdGFuZ2xlKiBwcl9lbmQ7CisgICAgRWluYV9SZWN0
YW5nbGUgKnByOworICAgIEVpbmFfUmVjdGFuZ2xlICpwcl9lbmQ7CiAgICAgc2l6ZV90IGNvdW50
OwogICAgIHByID0gcHJpdi0+cmVwYWludHMuYXJyYXk7CiAgICAgY291bnQgPSBwcml2LT5yZXBh
aW50cy5jb3VudDsKQEAgLTMzNyw3ICszMzcsNyBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc2Ny
b2xsX2FkZChFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYsIEV2YXNfQ29vcmQgZHgsIEV2YQog
ICAgIH0KIH0KIAotc3RhdGljIHZvaWQgX2V3a192aWV3X3Njcm9sbHNfZmx1c2goRXdrX1ZpZXdf
UHJpdmF0ZV9EYXRhKiBwcml2KQorc3RhdGljIHZvaWQgX2V3a192aWV3X3Njcm9sbHNfZmx1c2go
RXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpwcml2KQogewogICAgIHByaXYtPnNjcm9sbHMuY291bnQg
PSAwOwogICAgIGlmIChwcml2LT5zY3JvbGxzLmFsbG9jYXRlZCA8PSBFV0tfVklFV19TQ1JPTExT
X1NJWkVfTUFYX0ZSRUUpCkBAIC0zNDYsMTAgKzM0NiwxMCBAQCBzdGF0aWMgdm9pZCBfZXdrX3Zp
ZXdfc2Nyb2xsc19mbHVzaChFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYpCiB9CiAKIC8vIERl
ZmF1bHQgRXZlbnQgSGFuZGxpbmcgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLwotc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfZm9jdXNfaW4oRXdr
X1ZpZXdfU21hcnRfRGF0YSogc2QpCitzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9m
b2N1c19pbihFd2tfVmlld19TbWFydF9EYXRhICpzZCkKIHsKICAgICBFV0tfVklFV19QUklWX0dF
VChzZCwgcHJpdik7Ci0gICAgV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyKiBmYyA9IHByaXYtPnBh
Z2UtPmZvY3VzQ29udHJvbGxlcigpOworICAgIFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlciAqZmMg
PSBwcml2LT5wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKTsKICAgICBEQkcoIm89JXAsIGZjPSVwIiwg
c2QtPnNlbGYsIGZjKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoZmMsIEVJ
TkFfRkFMU0UpOwogCkBAIC0zNTgsMTAgKzM1OCwxMCBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tf
dmlld19zbWFydF9mb2N1c19pbihFd2tfVmlld19TbWFydF9EYXRhKiBzZCkKICAgICByZXR1cm4g
RUlOQV9UUlVFOwogfQogCi1zdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9mb2N1c19v
dXQoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QpCitzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19z
bWFydF9mb2N1c19vdXQoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpCiB7CiAgICAgRVdLX1ZJRVdf
UFJJVl9HRVQoc2QsIHByaXYpOwotICAgIFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlciogZmMgPSBw
cml2LT5wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKTsKKyAgICBXZWJDb3JlOjpGb2N1c0NvbnRyb2xs
ZXIgKmZjID0gcHJpdi0+cGFnZS0+Zm9jdXNDb250cm9sbGVyKCk7CiAgICAgREJHKCJvPSVwLCBm
Yz0lcCIsIHNkLT5zZWxmLCBmYyk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFM
KGZjLCBFSU5BX0ZBTFNFKTsKIApAQCAtMzcwLDI5ICszNzAsMjkgQEAgc3RhdGljIEVpbmFfQm9v
bCBfZXdrX3ZpZXdfc21hcnRfZm9jdXNfb3V0KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkKQogICAg
IHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLXN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0
X21vdXNlX3doZWVsKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkLCBjb25zdCBFdmFzX0V2ZW50X01v
dXNlX1doZWVsKiBldikKK3N0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X21vdXNlX3do
ZWVsKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX1doZWVs
ICpldikKIHsKICAgICByZXR1cm4gZXdrX2ZyYW1lX2ZlZWRfbW91c2Vfd2hlZWwoc2QtPm1haW5f
ZnJhbWUsIGV2KTsKIH0KIAotc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfbW91c2Vf
ZG93bihFd2tfVmlld19TbWFydF9EYXRhKiBzZCwgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9Eb3du
KiBldikKK3N0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X21vdXNlX2Rvd24oRXdrX1Zp
ZXdfU21hcnRfRGF0YSAqc2QsIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfRG93biAqZXYpCiB7CiAg
ICAgcmV0dXJuIGV3a19mcmFtZV9mZWVkX21vdXNlX2Rvd24oc2QtPm1haW5fZnJhbWUsIGV2KTsK
IH0KIAotc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfbW91c2VfdXAoRXdrX1ZpZXdf
U21hcnRfRGF0YSogc2QsIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfVXAqIGV2KQorc3RhdGljIEVp
bmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfbW91c2VfdXAoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2Qs
IGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfVXAgKmV2KQogewogICAgIHJldHVybiBld2tfZnJhbWVf
ZmVlZF9tb3VzZV91cChzZC0+bWFpbl9mcmFtZSwgZXYpOwogfQogCi1zdGF0aWMgRWluYV9Cb29s
IF9ld2tfdmlld19zbWFydF9tb3VzZV9tb3ZlKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkLCBjb25z
dCBFdmFzX0V2ZW50X01vdXNlX01vdmUqIGV2KQorc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdf
c21hcnRfbW91c2VfbW92ZShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgY29uc3QgRXZhc19FdmVu
dF9Nb3VzZV9Nb3ZlICpldikKIHsKICAgICByZXR1cm4gZXdrX2ZyYW1lX2ZlZWRfbW91c2VfbW92
ZShzZC0+bWFpbl9mcmFtZSwgZXYpOwogfQogCi1zdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19z
bWFydF9rZXlfZG93bihFd2tfVmlld19TbWFydF9EYXRhKiBzZCwgY29uc3QgRXZhc19FdmVudF9L
ZXlfRG93biogZXYpCitzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9rZXlfZG93bihF
d2tfVmlld19TbWFydF9EYXRhICpzZCwgY29uc3QgRXZhc19FdmVudF9LZXlfRG93biAqZXYpCiB7
Ci0gICAgRXZhc19PYmplY3QqIGZyYW1lID0gZXdrX3ZpZXdfZnJhbWVfZm9jdXNlZF9nZXQoc2Qt
PnNlbGYpOworICAgIEV2YXNfT2JqZWN0ICpmcmFtZSA9IGV3a192aWV3X2ZyYW1lX2ZvY3VzZWRf
Z2V0KHNkLT5zZWxmKTsKIAogICAgIGlmICghZnJhbWUpCiAgICAgICAgIGZyYW1lID0gc2QtPm1h
aW5fZnJhbWU7CkBAIC00MDAsOSArNDAwLDkgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdf
c21hcnRfa2V5X2Rvd24oRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QsIGNvbnN0IEV2YXNfRXYKICAg
ICByZXR1cm4gZXdrX2ZyYW1lX2ZlZWRfa2V5X2Rvd24oZnJhbWUsIGV2KTsKIH0KIAotc3RhdGlj
IEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfa2V5X3VwKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNk
LCBjb25zdCBFdmFzX0V2ZW50X0tleV9VcCogZXYpCitzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmll
d19zbWFydF9rZXlfdXAoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGNvbnN0IEV2YXNfRXZlbnRf
S2V5X1VwICpldikKIHsKLSAgICBFdmFzX09iamVjdCogZnJhbWUgPSBld2tfdmlld19mcmFtZV9m
b2N1c2VkX2dldChzZC0+c2VsZik7CisgICAgRXZhc19PYmplY3QgKmZyYW1lID0gZXdrX3ZpZXdf
ZnJhbWVfZm9jdXNlZF9nZXQoc2QtPnNlbGYpOwogCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAg
ZnJhbWUgPSBzZC0+bWFpbl9mcmFtZTsKQEAgLTQxMCwzMSArNDEwLDMxIEBAIHN0YXRpYyBFaW5h
X0Jvb2wgX2V3a192aWV3X3NtYXJ0X2tleV91cChFd2tfVmlld19TbWFydF9EYXRhKiBzZCwgY29u
c3QgRXZhc19FdmVuCiAgICAgcmV0dXJuIGV3a19mcmFtZV9mZWVkX2tleV91cChmcmFtZSwgZXYp
OwogfQogCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfYWRkX2NvbnNvbGVfbWVzc2FnZShF
d2tfVmlld19TbWFydF9EYXRhKiBzZCwgY29uc3QgY2hhciogbWVzc2FnZSwgdW5zaWduZWQgaW50
IGxpbmVOdW1iZXIsIGNvbnN0IGNoYXIqIHNvdXJjZUlEKQorc3RhdGljIHZvaWQgX2V3a192aWV3
X3NtYXJ0X2FkZF9jb25zb2xlX21lc3NhZ2UoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGNvbnN0
IGNoYXIgKm1lc3NhZ2UsIHVuc2lnbmVkIGludCBsaW5lTnVtYmVyLCBjb25zdCBjaGFyICpzb3Vy
Y2VJRCkKIHsKICAgICBJTkYoImNvbnNvbGUgbWVzc2FnZTogJXMgQCVkOiAlc1xuIiwgc291cmNl
SUQsIGxpbmVOdW1iZXIsIG1lc3NhZ2UpOwogfQogCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21h
cnRfcnVuX2phdmFzY3JpcHRfYWxlcnQoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QsIEV2YXNfT2Jq
ZWN0KiBmcmFtZSwgY29uc3QgY2hhciogbWVzc2FnZSkKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19z
bWFydF9ydW5famF2YXNjcmlwdF9hbGVydChFd2tfVmlld19TbWFydF9EYXRhICpzZCwgRXZhc19P
YmplY3QgKmZyYW1lLCBjb25zdCBjaGFyICptZXNzYWdlKQogewogICAgIElORigiamF2YXNjcmlw
dCBhbGVydDogJXNcbiIsIG1lc3NhZ2UpOwogfQogCi1zdGF0aWMgRWluYV9Cb29sIF9ld2tfdmll
d19zbWFydF9ydW5famF2YXNjcmlwdF9jb25maXJtKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkLCBF
dmFzX09iamVjdCogZnJhbWUsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpCitzdGF0aWMgRWluYV9Cb29s
IF9ld2tfdmlld19zbWFydF9ydW5famF2YXNjcmlwdF9jb25maXJtKEV3a19WaWV3X1NtYXJ0X0Rh
dGEgKnNkLCBFdmFzX09iamVjdCAqZnJhbWUsIGNvbnN0IGNoYXIgKm1lc3NhZ2UpCiB7CiAgICAg
SU5GKCJqYXZhc2NyaXB0IGNvbmZpcm06ICVzIiwgbWVzc2FnZSk7CiAgICAgSU5GKCJqYXZhc2Ny
aXB0IGNvbmZpcm0gKEhBUkQgQ09ERUQpPyBZRVMiKTsKICAgICByZXR1cm4gRUlOQV9UUlVFOwog
fQogCi1zdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9zaG91bGRfaW50ZXJydXB0X2ph
dmFzY3JpcHQoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QpCitzdGF0aWMgRWluYV9Cb29sIF9ld2tf
dmlld19zbWFydF9zaG91bGRfaW50ZXJydXB0X2phdmFzY3JpcHQoRXdrX1ZpZXdfU21hcnRfRGF0
YSAqc2QpCiB7CiAgICAgSU5GKCJzaG91bGQgaW50ZXJydXB0IGphdmFzY3JpcHQ/XG4iCiAgICAg
ICAgICAgICAiXHQoSEFSRCBDT0RFRCkgTk8iKTsKICAgICByZXR1cm4gRUlOQV9GQUxTRTsKIH0K
IAotc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfcnVuX2phdmFzY3JpcHRfcHJvbXB0
KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkLCBFdmFzX09iamVjdCogZnJhbWUsIGNvbnN0IGNoYXIq
IG1lc3NhZ2UsIGNvbnN0IGNoYXIqIGRlZmF1bHRWYWx1ZSwgY2hhcioqIHZhbHVlKQorc3RhdGlj
IEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfcnVuX2phdmFzY3JpcHRfcHJvbXB0KEV3a19WaWV3
X1NtYXJ0X0RhdGEgKnNkLCBFdmFzX09iamVjdCAqZnJhbWUsIGNvbnN0IGNoYXIgKm1lc3NhZ2Us
IGNvbnN0IGNoYXIgKmRlZmF1bHRWYWx1ZSwgY2hhciAqKnZhbHVlKQogewogICAgICp2YWx1ZSA9
IHN0cmR1cCgidGVzdCIpOwogICAgIEVpbmFfQm9vbCByZXQgPSBFSU5BX1RSVUU7CkBAIC00NDgs
NzkgKzQ0OCw3OSBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9ydW5famF2YXNj
cmlwdF9wcm9tcHQoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QsCiB9CiAKIC8vIEV2ZW50IEhhbmRs
aW5nIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Lwotc3RhdGljIHZvaWQgX2V3a192aWV3X29uX2ZvY3VzX2luKHZvaWQqIGRhdGEsIEV2YXMqIGUs
IEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVudF9pbmZvKQorc3RhdGljIHZvaWQgX2V3a192aWV3
X29uX2ZvY3VzX2luKHZvaWQgKmRhdGEsIEV2YXMgKmUsIEV2YXNfT2JqZWN0ICpvLCB2b2lkICpl
dmVudF9pbmZvKQogewotICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3X1Nt
YXJ0X0RhdGEqKWRhdGE7CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QgPSAoRXdrX1ZpZXdf
U21hcnRfRGF0YSAqKWRhdGE7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFw
aSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaS0+Zm9jdXNfaW4pOwog
ICAgIHNkLT5hcGktPmZvY3VzX2luKHNkKTsKIH0KIAotc3RhdGljIHZvaWQgX2V3a192aWV3X29u
X2ZvY3VzX291dCh2b2lkKiBkYXRhLCBFdmFzKiBlLCBFdmFzX09iamVjdCogbywgdm9pZCogZXZl
bnRfaW5mbykKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9mb2N1c19vdXQodm9pZCAqZGF0YSwg
RXZhcyAqZSwgRXZhc19PYmplY3QgKm8sIHZvaWQgKmV2ZW50X2luZm8pCiB7Ci0gICAgRXdrX1Zp
ZXdfU21hcnRfRGF0YSogc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKKyAgICBFd2tf
Vmlld19TbWFydF9EYXRhICpzZCA9IChFd2tfVmlld19TbWFydF9EYXRhICopZGF0YTsKICAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpKTsKICAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTihzZC0+YXBpLT5mb2N1c19vdXQpOwogICAgIHNkLT5hcGktPmZvY3VzX291dChz
ZCk7CiB9CiAKLXN0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9tb3VzZV93aGVlbCh2b2lkKiBkYXRh
LCBFdmFzKiBlLCBFdmFzX09iamVjdCogbywgdm9pZCogZXZlbnRfaW5mbykKK3N0YXRpYyB2b2lk
IF9ld2tfdmlld19vbl9tb3VzZV93aGVlbCh2b2lkICpkYXRhLCBFdmFzICplLCBFdmFzX09iamVj
dCAqbywgdm9pZCAqZXZlbnRfaW5mbykKIHsKLSAgICBFdmFzX0V2ZW50X01vdXNlX1doZWVsKiBl
diA9IChFdmFzX0V2ZW50X01vdXNlX1doZWVsKilldmVudF9pbmZvOwotICAgIEV3a19WaWV3X1Nt
YXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWRhdGE7CisgICAgRXZhc19FdmVu
dF9Nb3VzZV9XaGVlbCAqZXYgPSAoRXZhc19FdmVudF9Nb3VzZV9XaGVlbCAqKWV2ZW50X2luZm87
CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSAqKWRh
dGE7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaSk7CiAgICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaS0+bW91c2Vfd2hlZWwpOwogICAgIHNkLT5hcGkt
Pm1vdXNlX3doZWVsKHNkLCBldik7CiB9CiAKLXN0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9tb3Vz
ZV9kb3duKHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVudF9p
bmZvKQorc3RhdGljIHZvaWQgX2V3a192aWV3X29uX21vdXNlX2Rvd24odm9pZCAqZGF0YSwgRXZh
cyAqZSwgRXZhc19PYmplY3QgKm8sIHZvaWQgKmV2ZW50X2luZm8pCiB7Ci0gICAgRXZhc19FdmVu
dF9Nb3VzZV9Eb3duKiBldiA9IChFdmFzX0V2ZW50X01vdXNlX0Rvd24qKWV2ZW50X2luZm87Ci0g
ICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0YTsK
KyAgICBFdmFzX0V2ZW50X01vdXNlX0Rvd24gKmV2ID0gKEV2YXNfRXZlbnRfTW91c2VfRG93biAq
KWV2ZW50X2luZm87CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QgPSAoRXdrX1ZpZXdfU21h
cnRfRGF0YSAqKWRhdGE7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaSk7
CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaS0+bW91c2VfZG93bik7CiAg
ICAgc2QtPmFwaS0+bW91c2VfZG93bihzZCwgZXYpOwogfQogCi1zdGF0aWMgdm9pZCBfZXdrX3Zp
ZXdfb25fbW91c2VfdXAodm9pZCogZGF0YSwgRXZhcyogZSwgRXZhc19PYmplY3QqIG8sIHZvaWQq
IGV2ZW50X2luZm8pCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fbW91c2VfdXAodm9pZCAqZGF0
YSwgRXZhcyAqZSwgRXZhc19PYmplY3QgKm8sIHZvaWQgKmV2ZW50X2luZm8pCiB7Ci0gICAgRXZh
c19FdmVudF9Nb3VzZV9VcCogZXYgPSAoRXZhc19FdmVudF9Nb3VzZV9VcCopZXZlbnRfaW5mbzsK
LSAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IChFd2tfVmlld19TbWFydF9EYXRhKilkYXRh
OworICAgIEV2YXNfRXZlbnRfTW91c2VfVXAgKmV2ID0gKEV2YXNfRXZlbnRfTW91c2VfVXAgKill
dmVudF9pbmZvOworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkID0gKEV3a19WaWV3X1NtYXJ0
X0RhdGEgKilkYXRhOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGkpOwog
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGktPm1vdXNlX3VwKTsKICAgICBz
ZC0+YXBpLT5tb3VzZV91cChzZCwgZXYpOwogfQogCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25f
bW91c2VfbW92ZSh2b2lkKiBkYXRhLCBFdmFzKiBlLCBFdmFzX09iamVjdCogbywgdm9pZCogZXZl
bnRfaW5mbykKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9tb3VzZV9tb3ZlKHZvaWQgKmRhdGEs
IEV2YXMgKmUsIEV2YXNfT2JqZWN0ICpvLCB2b2lkICpldmVudF9pbmZvKQogewotICAgIEV2YXNf
RXZlbnRfTW91c2VfTW92ZSogZXYgPSAoRXZhc19FdmVudF9Nb3VzZV9Nb3ZlKilldmVudF9pbmZv
OwotICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWRh
dGE7CisgICAgRXZhc19FdmVudF9Nb3VzZV9Nb3ZlICpldiA9IChFdmFzX0V2ZW50X01vdXNlX01v
dmUgKilldmVudF9pbmZvOworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkID0gKEV3a19WaWV3
X1NtYXJ0X0RhdGEgKilkYXRhOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5h
cGkpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGktPm1vdXNlX21vdmUp
OwogICAgIHNkLT5hcGktPm1vdXNlX21vdmUoc2QsIGV2KTsKIH0KIAotc3RhdGljIHZvaWQgX2V3
a192aWV3X29uX2tleV9kb3duKHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2
b2lkKiBldmVudF9pbmZvKQorc3RhdGljIHZvaWQgX2V3a192aWV3X29uX2tleV9kb3duKHZvaWQg
KmRhdGEsIEV2YXMgKmUsIEV2YXNfT2JqZWN0ICpvLCB2b2lkICpldmVudF9pbmZvKQogewotICAg
IEV2YXNfRXZlbnRfS2V5X0Rvd24qIGV2ID0gKEV2YXNfRXZlbnRfS2V5X0Rvd24qKWV2ZW50X2lu
Zm87Ci0gICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSop
ZGF0YTsKKyAgICBFdmFzX0V2ZW50X0tleV9Eb3duICpldiA9IChFdmFzX0V2ZW50X0tleV9Eb3du
ICopZXZlbnRfaW5mbzsKKyAgICBFd2tfVmlld19TbWFydF9EYXRhICpzZCA9IChFd2tfVmlld19T
bWFydF9EYXRhICopZGF0YTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBp
KTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpLT5rZXlfZG93bik7CiAg
ICAgc2QtPmFwaS0+a2V5X2Rvd24oc2QsIGV2KTsKIH0KIAotc3RhdGljIHZvaWQgX2V3a192aWV3
X29uX2tleV91cCh2b2lkKiBkYXRhLCBFdmFzKiBlLCBFdmFzX09iamVjdCogbywgdm9pZCogZXZl
bnRfaW5mbykKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9rZXlfdXAodm9pZCAqZGF0YSwgRXZh
cyAqZSwgRXZhc19PYmplY3QgKm8sIHZvaWQgKmV2ZW50X2luZm8pCiB7Ci0gICAgRXZhc19FdmVu
dF9LZXlfVXAqIGV2ID0gKEV2YXNfRXZlbnRfS2V5X1VwKilldmVudF9pbmZvOwotICAgIEV3a19W
aWV3X1NtYXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWRhdGE7CisgICAgRXZh
c19FdmVudF9LZXlfVXAgKmV2ID0gKEV2YXNfRXZlbnRfS2V5X1VwICopZXZlbnRfaW5mbzsKKyAg
ICBFd2tfVmlld19TbWFydF9EYXRhICpzZCA9IChFd2tfVmlld19TbWFydF9EYXRhICopZGF0YTsK
ICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpKTsKICAgICBFSU5BX1NBRkVU
WV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpLT5rZXlfdXApOwogICAgIHNkLT5hcGktPmtleV91cChz
ZCwgZXYpOwogfQogCi1zdGF0aWMgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBfZXdr
X3ZpZXdfY29yZV9mcmFtZV9uZXcoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QsIEV3a19WaWV3X1By
aXZhdGVfRGF0YSogcHJpdiwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lcikK
K3N0YXRpYyBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IF9ld2tfdmlld19jb3JlX2Zy
YW1lX25ldyhFd2tfVmlld19TbWFydF9EYXRhICpzZCwgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpw
cml2LCBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQgKm93bmVyKQogewotICAgIFdlYkNv
cmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsKiBmbGMgPSBuZXcgV2ViQ29yZTo6RnJhbWVMb2FkZXJD
bGllbnRFZmwoc2QtPnNlbGYpOworICAgIFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsICpm
bGMgPSBuZXcgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmwoc2QtPnNlbGYpOwogICAgIGlm
ICghZmxjKSB7CiAgICAgICAgIENSSVRJQ0FMKCJDb3VsZCBub3QgY3JlYXRlIGZyYW1lIGxvYWRl
ciBjbGllbnQuIik7CiAgICAgICAgIHJldHVybiAwOwpAQCAtNTMyLDEwICs1MzIsMTAgQEAgc3Rh
dGljIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFtZT4gX2V3a192aWV3X2NvcmVfZnJhbWVf
bmV3KEV3a19WaWV3X1NtYXJ0X0QKIAogc3RhdGljIEV2YXNfU21hcnRfQ2xhc3MgX3BhcmVudF9z
YyA9IEVWQVNfU01BUlRfQ0xBU1NfSU5JVF9OVUxMOwogCi1zdGF0aWMgRXdrX1ZpZXdfUHJpdmF0
ZV9EYXRhKiBfZXdrX3ZpZXdfcHJpdl9uZXcoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QpCitzdGF0
aWMgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpfZXdrX3ZpZXdfcHJpdl9uZXcoRXdrX1ZpZXdfU21h
cnRfRGF0YSAqc2QpCiB7Ci0gICAgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2ID0KLSAgICAg
ICAgKEV3a19WaWV3X1ByaXZhdGVfRGF0YSopY2FsbG9jKDEsIHNpemVvZihFd2tfVmlld19Qcml2
YXRlX0RhdGEpKTsKKyAgICBFd2tfVmlld19Qcml2YXRlX0RhdGEgKnByaXYgPQorICAgICAgICAo
RXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICopY2FsbG9jKDEsIHNpemVvZihFd2tfVmlld19Qcml2YXRl
X0RhdGEpKTsKICAgICBBdG9taWNTdHJpbmcgczsKICAgICBXZWJDb3JlOjpLVVJMIHVybDsKIApA
QCAtNjQ4LDcgKzY0OCw3IEBAIHN0YXRpYyBFd2tfVmlld19Qcml2YXRlX0RhdGEqIF9ld2tfdmll
d19wcml2X25ldyhFd2tfVmlld19TbWFydF9EYXRhKiBzZCkKICAgICAgICAgZ290byBlcnJvcl9t
YWluX2ZyYW1lOwogICAgIH0KIAotICAgIHByaXYtPmhpc3RvcnkgPSBld2tfaGlzdG9yeV9uZXco
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6QmFja0ZvcndhcmRMaXN0SW1wbCo+KHByaXYtPnBhZ2UtPmJh
Y2tGb3J3YXJkTGlzdCgpKSk7CisgICAgcHJpdi0+aGlzdG9yeSA9IGV3a19oaXN0b3J5X25ldyhz
dGF0aWNfY2FzdDxXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3RJbXBsICo+KHByaXYtPnBhZ2UtPmJh
Y2tGb3J3YXJkTGlzdCgpKSk7CiAgICAgaWYgKCFwcml2LT5oaXN0b3J5KSB7CiAgICAgICAgIENS
SVRJQ0FMKCJDb3VsZCBub3QgY3JlYXRlIGhpc3RvcnkgaW5zdGFuY2UgZm9yIHZpZXcuIik7CiAg
ICAgICAgIGdvdG8gZXJyb3JfaGlzdG9yeTsKQEAgLTY2Niw3ICs2NjYsNyBAQCBlcnJvcl9wYWdl
OgogICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdfcHJpdl9kZWwoRXdr
X1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2KQorc3RhdGljIHZvaWQgX2V3a192aWV3X3ByaXZfZGVs
KEV3a19WaWV3X1ByaXZhdGVfRGF0YSAqcHJpdikKIHsKICAgICBpZiAoIXByaXYpCiAgICAgICAg
IHJldHVybjsKQEAgLTY5NywxNiArNjk3LDE2IEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19wcml2
X2RlbChFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYpCiAgICAgZnJlZShwcml2KTsKIH0KIAot
c3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2FkZChFdmFzX09iamVjdCogbykKK3N0YXRpYyB2
b2lkIF9ld2tfdmlld19zbWFydF9hZGQoRXZhc19PYmplY3QgKm8pCiB7Ci0gICAgY29uc3QgRXZh
c19TbWFydCogc21hcnQgPSBldmFzX29iamVjdF9zbWFydF9zbWFydF9nZXQobyk7Ci0gICAgY29u
c3QgRXZhc19TbWFydF9DbGFzcyogc2MgPSBldmFzX3NtYXJ0X2NsYXNzX2dldChzbWFydCk7Ci0g
ICAgY29uc3QgRXdrX1ZpZXdfU21hcnRfQ2xhc3MqIGFwaSA9IChjb25zdCBFd2tfVmlld19TbWFy
dF9DbGFzcyopc2M7CisgICAgY29uc3QgRXZhc19TbWFydCAqc21hcnQgPSBldmFzX29iamVjdF9z
bWFydF9zbWFydF9nZXQobyk7CisgICAgY29uc3QgRXZhc19TbWFydF9DbGFzcyAqc2MgPSBldmFz
X3NtYXJ0X2NsYXNzX2dldChzbWFydCk7CisgICAgY29uc3QgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mg
KmFwaSA9IChjb25zdCBFd2tfVmlld19TbWFydF9DbGFzcyAqKXNjOwogICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOKGFwaS0+YmFja2luZ19zdG9yZV9hZGQpOwogICAgIEVXS19WSUVXX1NE
X0dFVChvLCBzZCk7CiAKICAgICBpZiAoIXNkKSB7Ci0gICAgICAgIHNkID0gKEV3a19WaWV3X1Nt
YXJ0X0RhdGEqKWNhbGxvYygxLCBzaXplb2YoRXdrX1ZpZXdfU21hcnRfRGF0YSkpOworICAgICAg
ICBzZCA9IChFd2tfVmlld19TbWFydF9EYXRhICopY2FsbG9jKDEsIHNpemVvZihFd2tfVmlld19T
bWFydF9EYXRhKSk7CiAgICAgICAgIGlmICghc2QpCiAgICAgICAgICAgICBDUklUSUNBTCgiY291
bGQgbm90IGFsbG9jYXRlIEV3a19WaWV3X1NtYXJ0X0RhdGEiKTsKICAgICAgICAgZWxzZQpAQCAt
Nzc2LDE3ICs3NzYsMTcgQEAgc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2FkZChFdmFzX09i
amVjdCogbykKICN1bmRlZiBDT05ORUNUCiB9CiAKLXN0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFy
dF9kZWwoRXZhc19PYmplY3QqIG8pCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfZGVsKEV2
YXNfT2JqZWN0ICpvKQogewogICAgIEVXS19WSUVXX1NEX0dFVChvLCBzZCk7Ci0gICAgRXdrX1Zp
ZXdfUHJpdmF0ZV9EYXRhKiBwcml2ID0gc2QgPyBzZC0+X3ByaXYgOiAwOworICAgIEV3a19WaWV3
X1ByaXZhdGVfRGF0YSAqcHJpdiA9IHNkID8gc2QtPl9wcml2IDogMDsKIAogICAgIGV3a192aWV3
X3N0b3Aobyk7CiAgICAgX3BhcmVudF9zYy5kZWwobyk7CiAgICAgX2V3a192aWV3X3ByaXZfZGVs
KHByaXYpOwogfQogCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfcmVzaXplKEV2YXNfT2Jq
ZWN0KiBvLCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29vcmQgaCkKK3N0YXRpYyB2b2lkIF9ld2tfdmll
d19zbWFydF9yZXNpemUoRXZhc19PYmplY3QgKm8sIEV2YXNfQ29vcmQgdywgRXZhc19Db29yZCBo
KQogewogICAgIEVXS19WSUVXX1NEX0dFVChvLCBzZCk7CiAKQEAgLTc5NywxNCArNzk3LDE0IEBA
IHN0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9yZXNpemUoRXZhc19PYmplY3QqIG8sIEV2YXNf
Q29vcmQgdywgRXZhc19Db29yZCBoKQogICAgIF9ld2tfdmlld19zbWFydF9jaGFuZ2VkKHNkKTsK
IH0KIAotc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X21vdmUoRXZhc19PYmplY3QqIG8sIEV2
YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5KQorc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X21v
dmUoRXZhc19PYmplY3QgKm8sIEV2YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5KQogewogICAgIEVX
S19WSUVXX1NEX0dFVChvLCBzZCk7CiAgICAgc2QtPmNoYW5nZWQucG9zaXRpb24gPSBFSU5BX1RS
VUU7CiAgICAgX2V3a192aWV3X3NtYXJ0X2NoYW5nZWQoc2QpOwogfQogCi1zdGF0aWMgdm9pZCBf
ZXdrX3ZpZXdfc21hcnRfY2FsY3VsYXRlKEV2YXNfT2JqZWN0KiBvKQorc3RhdGljIHZvaWQgX2V3
a192aWV3X3NtYXJ0X2NhbGN1bGF0ZShFdmFzX09iamVjdCAqbykKIHsKICAgICBFV0tfVklFV19T
RF9HRVQobywgc2QpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUKHNkLCBwcml2KTsKQEAgLTgyNiw3
ICs4MjYsNyBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfY2FsY3VsYXRlKEV2YXNfT2Jq
ZWN0KiBvKQogICAgICAgICBwcml2LT5zY3JvbGxzLmNvdW50LCBwcml2LT5yZXBhaW50cy5jb3Vu
dCk7CiAKICAgICBpZiAoc2QtPmNoYW5nZWQuc2l6ZSAmJiAoKHcgIT0gc2QtPnZpZXcudykgfHwg
KGggIT0gc2QtPnZpZXcuaCkpKSB7Ci0gICAgICAgIFdlYkNvcmU6OkZyYW1lVmlldyogdmlldyA9
IHByaXYtPm1haW5fZnJhbWUtPnZpZXcoKTsKKyAgICAgICAgV2ViQ29yZTo6RnJhbWVWaWV3ICp2
aWV3ID0gcHJpdi0+bWFpbl9mcmFtZS0+dmlldygpOwogICAgICAgICBpZiAodmlldykgewogICAg
ICAgICAgICAgdmlldy0+cmVzaXplKHcsIGgpOwogICAgICAgICAgICAgdmlldy0+Zm9yY2VMYXlv
dXQoKTsKQEAgLTg2NCw3ICs4NjQsNyBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfY2Fs
Y3VsYXRlKEV2YXNfT2JqZWN0KiBvKQogICAgIF9ld2tfdmlld19yZXBhaW50c19mbHVzaChwcml2
KTsKIAogICAgIGlmIChzZC0+Y2hhbmdlZC5mcmFtZV9yZWN0KSB7Ci0gICAgICAgIFdlYkNvcmU6
OkZyYW1lVmlldyogdmlldyA9IHByaXYtPm1haW5fZnJhbWUtPnZpZXcoKTsKKyAgICAgICAgV2Vi
Q29yZTo6RnJhbWVWaWV3ICp2aWV3ID0gcHJpdi0+bWFpbl9mcmFtZS0+dmlldygpOwogICAgICAg
ICB2aWV3LT5mcmFtZVJlY3RzQ2hhbmdlZCgpOyAvKiBmb3JjZSB0cmVlIHRvIGdldCBwb3NpdGlv
biBmcm9tIHJvb3QgKi8KICAgICAgICAgc2QtPmNoYW5nZWQuZnJhbWVfcmVjdCA9IEVJTkFfRkFM
U0U7CiAgICAgfQpAQCAtODg3LDEyICs4ODcsMTIgQEAgc3RhdGljIHZvaWQgX2V3a192aWV3X3Nt
YXJ0X2hpZGUoRXZhc19PYmplY3QgKm8pCiAgICAgZXZhc19vYmplY3RfaGlkZShzZC0+YmFja2lu
Z19zdG9yZSk7CiB9CiAKLXN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X2NvbnRlbnRz
X3Jlc2l6ZShFd2tfVmlld19TbWFydF9EYXRhKiBzZCwgaW50IHcsIGludCBoKQorc3RhdGljIEVp
bmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfY29udGVudHNfcmVzaXplKEV3a19WaWV3X1NtYXJ0X0Rh
dGEgKnNkLCBpbnQgdywgaW50IGgpCiB7CiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotc3Rh
dGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfem9vbV9zZXQoRXdrX1ZpZXdfU21hcnRfRGF0
YSogc2QsIGZsb2F0IHpvb20sIEV2YXNfQ29vcmQgY3gsIEV2YXNfQ29vcmQgY3kpCitzdGF0aWMg
RWluYV9Cb29sIF9ld2tfdmlld19zbWFydF96b29tX3NldChFd2tfVmlld19TbWFydF9EYXRhICpz
ZCwgZmxvYXQgem9vbSwgRXZhc19Db29yZCBjeCwgRXZhc19Db29yZCBjeSkKIHsKICAgICBkb3Vi
bGUgcHgsIHB5OwogICAgIEV2YXNfQ29vcmQgeCwgeSwgdywgaDsKQEAgLTkyMCw0MCArOTIwLDQw
IEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X3pvb21fc2V0KEV3a19WaWV3X1Nt
YXJ0X0RhdGEqIHNkLCBmbG9hdCB6b29tLCBFCiAgICAgcmV0dXJuIHJldDsKIH0KIAotc3RhdGlj
IHZvaWQgX2V3a192aWV3X3NtYXJ0X2ZsdXNoKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkKQorc3Rh
dGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2ZsdXNoKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkKQog
ewogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdik7CiAgICAgX2V3a192
aWV3X3JlcGFpbnRzX2ZsdXNoKHByaXYpOwogICAgIF9ld2tfdmlld19zY3JvbGxzX2ZsdXNoKHBy
aXYpOwogfQogCi1zdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9wcmVfcmVuZGVyX3Jl
Z2lvbihFd2tfVmlld19TbWFydF9EYXRhKiBzZCwgRXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkIHks
IEV2YXNfQ29vcmQgdywgRXZhc19Db29yZCBoLCBmbG9hdCB6b29tKQorc3RhdGljIEVpbmFfQm9v
bCBfZXdrX3ZpZXdfc21hcnRfcHJlX3JlbmRlcl9yZWdpb24oRXdrX1ZpZXdfU21hcnRfRGF0YSAq
c2QsIEV2YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5LCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29vcmQg
aCwgZmxvYXQgem9vbSkKIHsKICAgICBXUk4oIm5vdCBzdXBwb3J0ZWQgYnkgZW5naW5lLiBzZD0l
cCBhcmVhPSVkLCVkKyVkeCVkLCB6b29tPSVmIiwKICAgICAgICAgc2QsIHgsIHksIHcsIGgsIHpv
b20pOwogICAgIHJldHVybiBFSU5BX0ZBTFNFOwogfQogCi1zdGF0aWMgRWluYV9Cb29sIF9ld2tf
dmlld19zbWFydF9wcmVfcmVuZGVyX3JlbGF0aXZlX3JhZGl1cyhFd2tfVmlld19TbWFydF9EYXRh
KiBzZCwgdW5zaWduZWQgaW50IG4sIGZsb2F0IHpvb20pCitzdGF0aWMgRWluYV9Cb29sIF9ld2tf
dmlld19zbWFydF9wcmVfcmVuZGVyX3JlbGF0aXZlX3JhZGl1cyhFd2tfVmlld19TbWFydF9EYXRh
ICpzZCwgdW5zaWduZWQgaW50IG4sIGZsb2F0IHpvb20pCiB7CiAgICAgV1JOKCJub3Qgc3VwcG9y
dGVkIGJ5IGVuZ2luZS4gc2Q9JXAsIG49JXUgem9vbT0lZiIsCiAgICAgICAgIHNkLCBuLCB6b29t
KTsKICAgICByZXR1cm4gRUlOQV9GQUxTRTsKIH0KIAotc3RhdGljIHZvaWQgX2V3a192aWV3X3Nt
YXJ0X3ByZV9yZW5kZXJfY2FuY2VsKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkKQorc3RhdGljIHZv
aWQgX2V3a192aWV3X3NtYXJ0X3ByZV9yZW5kZXJfY2FuY2VsKEV3a19WaWV3X1NtYXJ0X0RhdGEg
KnNkKQogewogICAgIFdSTigibm90IHN1cHBvcnRlZCBieSBlbmdpbmUuIHNkPSVwIiwgc2QpOwog
fQogCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9tYXJrX3N0b3AoRXdrX1Zp
ZXdfU21hcnRfRGF0YSogc2QpCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9t
YXJrX3N0b3AoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpCiB7CiAgICAgc2QtPmFuaW1hdGVkX3pv
b20uem9vbS5zdGFydCA9IDAuMDsKICAgICBzZC0+YW5pbWF0ZWRfem9vbS56b29tLmVuZCA9IDAu
MDsKICAgICBzZC0+YW5pbWF0ZWRfem9vbS56b29tLmN1cnJlbnQgPSAwLjA7CiB9CiAKLXN0YXRp
YyB2b2lkIF9ld2tfdmlld196b29tX2FuaW1hdGVkX2ZpbmlzaChFd2tfVmlld19TbWFydF9EYXRh
KiBzZCkKK3N0YXRpYyB2b2lkIF9ld2tfdmlld196b29tX2FuaW1hdGVkX2ZpbmlzaChFd2tfVmll
d19TbWFydF9EYXRhICpzZCkKIHsKICAgICBFV0tfVklFV19QUklWX0dFVChzZCwgcHJpdik7CiAg
ICAgZWNvcmVfYW5pbWF0b3JfZGVsKHByaXYtPmFuaW1hdGVkX3pvb20uYW5pbWF0b3IpOwpAQCAt
OTYyLDcgKzk2Miw3IEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld196b29tX2FuaW1hdGVkX2Zpbmlz
aChFd2tfVmlld19TbWFydF9EYXRhKiBzZCkKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFj
a19jYWxsKHNkLT5zZWxmLCAiem9vbSxhbmltYXRlZCxlbmQiLCAwKTsKIH0KIAotc3RhdGljIGZs
b2F0IF9ld2tfdmlld196b29tX2FuaW1hdGVkX2N1cnJlbnQoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRh
KiBwcml2KQorc3RhdGljIGZsb2F0IF9ld2tfdmlld196b29tX2FuaW1hdGVkX2N1cnJlbnQoRXdr
X1ZpZXdfUHJpdmF0ZV9EYXRhICpwcml2KQogewogICAgIGRvdWJsZSBub3cgPSBlY29yZV9sb29w
X3RpbWVfZ2V0KCk7CiAgICAgZG91YmxlIGRlbHRhID0gbm93IC0gcHJpdi0+YW5pbWF0ZWRfem9v
bS50aW1lLnN0YXJ0OwpAQCAtOTc4LDkgKzk3OCw5IEBAIHN0YXRpYyBmbG9hdCBfZXdrX3ZpZXdf
em9vbV9hbmltYXRlZF9jdXJyZW50KEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdikKICAgICAg
ICAgICAgICsgcHJpdi0+YW5pbWF0ZWRfem9vbS56b29tLnN0YXJ0KTsKIH0KIAotc3RhdGljIEVp
bmFfQm9vbCBfZXdrX3ZpZXdfem9vbV9hbmltYXRvcl9jYih2b2lkKiBkYXRhKQorc3RhdGljIEVp
bmFfQm9vbCBfZXdrX3ZpZXdfem9vbV9hbmltYXRvcl9jYih2b2lkICpkYXRhKQogewotICAgIEV3
a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWRhdGE7CisgICAg
RXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSAqKWRhdGE7CiAg
ICAgRXZhc19Db29yZCBjeCwgY3k7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVQoc2QsIHByaXYpOwog
ICAgIGRvdWJsZSBub3cgPSBlY29yZV9sb29wX3RpbWVfZ2V0KCk7CkBAIC0xMDA3LDcgKzEwMDcs
NyBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld196b29tX2FuaW1hdG9yX2NiKHZvaWQqIGRh
dGEpCiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotc3RhdGljIHZvaWQgX2V3a192aWV3X3pv
b21fYW5pbWF0aW9uX3N0YXJ0KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkKQorc3RhdGljIHZvaWQg
X2V3a192aWV3X3pvb21fYW5pbWF0aW9uX3N0YXJ0KEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkKQog
ewogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdik7CiAgICAgaWYgKHBy
aXYtPmFuaW1hdGVkX3pvb20uYW5pbWF0b3IpCkBAIC0xMDE2LDcgKzEwMTYsNyBAQCBzdGF0aWMg
dm9pZCBfZXdrX3ZpZXdfem9vbV9hbmltYXRpb25fc3RhcnQoRXdrX1ZpZXdfU21hcnRfRGF0YSog
c2QpCiAgICAgICAgIChfZXdrX3ZpZXdfem9vbV9hbmltYXRvcl9jYiwgc2QpOwogfQogCi1zdGF0
aWMgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzIF9ld2tfdmlld192aWV3cG9ydF9hdHRyaWJ1
dGVzX2NvbXB1dGUoRXZhc19PYmplY3QqIG8pCitzdGF0aWMgV2ViQ29yZTo6Vmlld3BvcnRBdHRy
aWJ1dGVzIF9ld2tfdmlld192aWV3cG9ydF9hdHRyaWJ1dGVzX2NvbXB1dGUoRXZhc19PYmplY3Qg
Km8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUKG8sIHNkKTsKICAgICBFV0tfVklFV19QUklWX0dF
VChzZCwgcHJpdik7CkBAIC0xMDY3LDcgKzEwNjcsNyBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tf
dmlld19zbWFydF9lbmFibGVfcmVuZGVyKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkKQogICogQHNl
ZSBld2tfdmlld19zaW5nbGVfc21hcnRfc2V0KCkKICAqIEBzZWUgZXdrX3ZpZXdfdGlsZWRfc21h
cnRfc2V0KCkKICAqLwotRWluYV9Cb29sIGV3a192aWV3X2Jhc2Vfc21hcnRfc2V0KEV3a19WaWV3
X1NtYXJ0X0NsYXNzKiBhcGkpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfYmFzZV9zbWFydF9zZXQoRXdr
X1ZpZXdfU21hcnRfQ2xhc3MgKmFwaSkKIHsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
Tl9WQUwoYXBpLCBFSU5BX0ZBTFNFKTsKIApAQCAtMTEzMywxMiArMTEzMywxMiBAQCBFaW5hX0Jv
b2wgZXdrX3ZpZXdfYmFzZV9zbWFydF9zZXQoRXdrX1ZpZXdfU21hcnRfQ2xhc3MqIGFwaSkKICAq
IEBwYXJhbSBoIGZpeGVkIGhlaWdodCB0byB1c2UuIFRoaXMgc2l6ZSB3aWxsIGJlIGF1dG9tYXRp
Y2FsbHkgc2NhbGVkCiAgKiAgICAgICAgYmFzZWQgb24gem9vbSBsZXZlbC4KICAqLwotdm9pZCBl
d2tfdmlld19maXhlZF9sYXlvdXRfc2l6ZV9zZXQoRXZhc19PYmplY3QqIG8sIEV2YXNfQ29vcmQg
dywgRXZhc19Db29yZCBoKQordm9pZCBld2tfdmlld19maXhlZF9sYXlvdXRfc2l6ZV9zZXQoRXZh
c19PYmplY3QgKm8sIEV2YXNfQ29vcmQgdywgRXZhc19Db29yZCBoKQogewogICAgIEVXS19WSUVX
X1NEX0dFVF9PUl9SRVRVUk4obywgc2QpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVS
TihzZCwgcHJpdik7CiAKLSAgICBXZWJDb3JlOjpGcmFtZVZpZXcqIHZpZXcgPSBwcml2LT5tYWlu
X2ZyYW1lLT52aWV3KCk7CisgICAgV2ViQ29yZTo6RnJhbWVWaWV3ICp2aWV3ID0gcHJpdi0+bWFp
bl9mcmFtZS0+dmlldygpOwogICAgIGlmICh3IDw9IDAgJiYgaCA8PSAwKSB7CiAgICAgICAgIGlm
ICghdmlldy0+dXNlRml4ZWRMYXlvdXQoKSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTExNjYs
NyArMTE2Niw3IEBAIHZvaWQgZXdrX3ZpZXdfZml4ZWRfbGF5b3V0X3NpemVfc2V0KEV2YXNfT2Jq
ZWN0KiBvLCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29vcmQgaCkKICAqIEBwYXJhbSBoIHdoZXJlIHRv
IHJldHVybiBoZWlnaHQuIFJldHVybnMgMCBvbiBlcnJvciBvciBpZiBubyBmaXhlZAogICogICAg
ICAgIGxheW91dCBpbiB1c2UuCiAgKi8KLXZvaWQgZXdrX3ZpZXdfZml4ZWRfbGF5b3V0X3NpemVf
Z2V0KEV2YXNfT2JqZWN0KiBvLCBFdmFzX0Nvb3JkKiB3LCBFdmFzX0Nvb3JkKiBoKQordm9pZCBl
d2tfdmlld19maXhlZF9sYXlvdXRfc2l6ZV9nZXQoRXZhc19PYmplY3QgKm8sIEV2YXNfQ29vcmQg
KncsIEV2YXNfQ29vcmQgKmgpCiB7CiAgICAgaWYgKHcpCiAgICAgICAgICp3ID0gMDsKQEAgLTEx
OTQsMTQgKzExOTQsMTQgQEAgdm9pZCBld2tfdmlld19maXhlZF9sYXlvdXRfc2l6ZV9nZXQoRXZh
c19PYmplY3QqIG8sIEV2YXNfQ29vcmQqIHcsIEV2YXNfQ29vcmQqIGgKICAqIEBwYXJhbSBvIHZp
ZXcgb2JqZWN0IHRvIGNoYW5nZSB0aGVtZS4KICAqIEBwYXJhbSBwYXRoIHRoZW1lIHBhdGgsIG1h
eSBiZSBAYyAwIHRvIHJlc2V0IHRvIGRlZmF1bHQuCiAgKi8KLXZvaWQgZXdrX3ZpZXdfdGhlbWVf
c2V0KEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFyKiBwYXRoKQordm9pZCBld2tfdmlld190aGVt
ZV9zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKnBhdGgpCiB7CiAgICAgRVdLX1ZJRVdf
U0RfR0VUX09SX1JFVFVSTihvLCBzZCk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJO
KHNkLCBwcml2KTsKICAgICBpZiAoIWVpbmFfc3RyaW5nc2hhcmVfcmVwbGFjZSgmcHJpdi0+c2V0
dGluZ3MudGhlbWUsIHBhdGgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBXZWJDb3JlOjpGcmFt
ZVZpZXcqIHZpZXcgPSBwcml2LT5tYWluX2ZyYW1lLT52aWV3KCk7CisgICAgV2ViQ29yZTo6RnJh
bWVWaWV3ICp2aWV3ID0gcHJpdi0+bWFpbl9mcmFtZS0+dmlldygpOwogICAgIGlmICh2aWV3KSB7
CiAgICAgICAgIHZpZXctPnNldEVkamVUaGVtZShXVEY6OlN0cmluZyhwYXRoKSk7CiAgICAgICAg
IHByaXYtPnBhZ2UtPnRoZW1lKCktPnRoZW1lQ2hhbmdlZCgpOwpAQCAtMTIxOCw3ICsxMjE4LDcg
QEAgdm9pZCBld2tfdmlld190aGVtZV9zZXQoRXZhc19PYmplY3QqIG8sIGNvbnN0IGNoYXIqIHBh
dGgpCiAgKgogICogQHJldHVybiB0aGVtZSBwYXRoLCBtYXkgYmUgQGMgMCBpZiBub3Qgc2V0Lgog
ICovCi1jb25zdCBjaGFyKiBld2tfdmlld190aGVtZV9nZXQoRXZhc19PYmplY3QqIG8pCitjb25z
dCBjaGFyKiBld2tfdmlld190aGVtZV9nZXQoRXZhc19PYmplY3QgKm8pCiB7CiAgICAgRVdLX1ZJ
RVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgMCk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1Jf
UkVUVVJOKHNkLCBwcml2LCAwKTsKQEAgLTEyMzIsNyArMTIzMiw3IEBAIGNvbnN0IGNoYXIqIGV3
a192aWV3X3RoZW1lX2dldChFdmFzX09iamVjdCogbykKICAqCiAgKiBAcmV0dXJuIGV3a19mcmFt
ZSBvYmplY3Qgb3IgQGMgMCBpZiBub25lIHlldC4KICAqLwotRXZhc19PYmplY3QqIGV3a192aWV3
X2ZyYW1lX21haW5fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQorRXZhc19PYmplY3QqIGV3a192
aWV3X2ZyYW1lX21haW5fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQogewogICAgIEVXS19WSUVX
X1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIDApOwogICAgIHJldHVybiBzZC0+bWFpbl9mcmFtZTsK
QEAgLTEyNDUsMTIgKzEyNDUsMTIgQEAgRXZhc19PYmplY3QqIGV3a192aWV3X2ZyYW1lX21haW5f
Z2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogICoKICAqIEByZXR1cm4gZXdrX2ZyYW1lIG9iamVj
dCBvciBAYyAwIGlmIG5vbmUgeWV0LgogICovCi1FdmFzX09iamVjdCogZXdrX3ZpZXdfZnJhbWVf
Zm9jdXNlZF9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCitFdmFzX09iamVjdCogZXdrX3ZpZXdf
ZnJhbWVfZm9jdXNlZF9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCiB7CiAgICAgRVdLX1ZJRVdf
U0RfR0VUX09SX1JFVFVSTihvLCBzZCwgMCk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVU
VVJOKHNkLCBwcml2LCAwKTsKIAotICAgIFdlYkNvcmU6OkZyYW1lKiBjb3JlID0gcHJpdi0+cGFn
ZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRGcmFtZSgpOworICAgIFdlYkNvcmU6OkZyYW1l
ICpjb3JlID0gcHJpdi0+cGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRGcmFtZSgpOwog
ICAgIGlmICghY29yZSkKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTEyNzAsNyArMTI3MCw3IEBA
IEV2YXNfT2JqZWN0KiBld2tfdmlld19mcmFtZV9mb2N1c2VkX2dldChjb25zdCBFdmFzX09iamVj
dCogbykKICAqICAgICAgICAgTm90ZSB0aGF0IGl0IG1lYW5zIHRoZSByZXF1ZXN0IHdhcyBkb25l
LCBub3QgdGhhdCBpdCB3YXMKICAqICAgICAgICAgc2F0aXNmaWVkLgogICovCi1FaW5hX0Jvb2wg
ZXdrX3ZpZXdfdXJpX3NldChFdmFzX09iamVjdCogbywgY29uc3QgY2hhciogdXJpKQorRWluYV9C
b29sIGV3a192aWV3X3VyaV9zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKnVyaSkKIHsK
ICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBy
ZXR1cm4gZXdrX2ZyYW1lX3VyaV9zZXQoc2QtPm1haW5fZnJhbWUsIHVyaSk7CkBAIC0xMjgzLDcg
KzEyODMsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfdXJpX3NldChFdmFzX09iamVjdCogbywgY29u
c3QgY2hhciogdXJpKQogICoKICAqIEByZXR1cm4gY3VycmVudCB1cmkgcmVmZXJlbmNlIG9yIEBj
IDAuIEl0J3MgaW50ZXJuYWwsIGRvbid0IGNoYW5nZS4KICAqLwotY29uc3QgY2hhciogZXdrX3Zp
ZXdfdXJpX2dldChjb25zdCBFdmFzX09iamVjdCogbykKK2NvbnN0IGNoYXIgKmV3a192aWV3X3Vy
aV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JF
VFVSTihvLCBzZCwgMCk7CiAgICAgcmV0dXJuIGV3a19mcmFtZV91cmlfZ2V0KHNkLT5tYWluX2Zy
YW1lKTsKQEAgLTEyOTYsNyArMTI5Niw3IEBAIGNvbnN0IGNoYXIqIGV3a192aWV3X3VyaV9nZXQo
Y29uc3QgRXZhc19PYmplY3QqIG8pCiAgKgogICogQHJldHVybiBjdXJyZW50IHRpdGxlIHJlZmVy
ZW5jZSBvciBAYyAwLiBJdCdzIGludGVybmFsLCBkb24ndCBjaGFuZ2UuCiAgKi8KLWNvbnN0IGNo
YXIqIGV3a192aWV3X3RpdGxlX2dldChjb25zdCBFdmFzX09iamVjdCogbykKK2NvbnN0IGNoYXIg
KmV3a192aWV3X3RpdGxlX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKIHsKICAgICBFV0tfVklF
V19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAwKTsKICAgICByZXR1cm4gZXdrX2ZyYW1lX3RpdGxl
X2dldChzZC0+bWFpbl9mcmFtZSk7CkBAIC0xMzA5LDcgKzEzMDksNyBAQCBjb25zdCBjaGFyKiBl
d2tfdmlld190aXRsZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiAgKgogICogQHJldHVybiBA
YyBFSU5BX1RSVUUgaWYgZWRpdGFibGUsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgogICovCi1F
aW5hX0Jvb2wgZXdrX3ZpZXdfZWRpdGFibGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQorRWlu
YV9Cb29sIGV3a192aWV3X2VkaXRhYmxlX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKIHsKICAg
ICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICByZXR1
cm4gZXdrX2ZyYW1lX2VkaXRhYmxlX2dldChzZC0+bWFpbl9mcmFtZSk7CkBAIC0xMzM0LDcgKzEz
MzQsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfZWRpdGFibGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0
KiBvKQogICogQHBhcmFtIGIgYmx1ZSBjb21wb25lbnQuCiAgKiBAcGFyYW0gYSB0cmFuc3BhcmVu
Y3kuCiAgKi8KLXZvaWQgZXdrX3ZpZXdfYmdfY29sb3Jfc2V0KEV2YXNfT2JqZWN0KiBvLCBpbnQg
ciwgaW50IGcsIGludCBiLCBpbnQgYSkKK3ZvaWQgZXdrX3ZpZXdfYmdfY29sb3Jfc2V0KEV2YXNf
T2JqZWN0ICpvLCBpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSkKIHsKICAgICBFV0tfVklFV19T
RF9HRVRfT1JfUkVUVVJOKG8sIHNkKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihz
ZC0+YXBpKTsKQEAgLTEzNjksNyArMTM2OSw3IEBAIHZvaWQgZXdrX3ZpZXdfYmdfY29sb3Jfc2V0
KEV2YXNfT2JqZWN0KiBvLCBpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSkKIAogICAgIHNkLT5h
cGktPmJnX2NvbG9yX3NldChzZCwgciwgZywgYiwgYSk7CiAKLSAgICBXZWJDb3JlOjpGcmFtZVZp
ZXcqIHZpZXcgPSBzZC0+X3ByaXYtPm1haW5fZnJhbWUtPnZpZXcoKTsKKyAgICBXZWJDb3JlOjpG
cmFtZVZpZXcgKnZpZXcgPSBzZC0+X3ByaXYtPm1haW5fZnJhbWUtPnZpZXcoKTsKICAgICBpZiAo
dmlldykgewogICAgICAgICBXZWJDb3JlOjpDb2xvciBjb2xvcjsKIApAQCAtMTM5Niw3ICsxMzk2
LDcgQEAgdm9pZCBld2tfdmlld19iZ19jb2xvcl9zZXQoRXZhc19PYmplY3QqIG8sIGludCByLCBp
bnQgZywgaW50IGIsIGludCBhKQogICogQHBhcmFtIGIgd2hlcmUgdG8gcmV0dXJuIGJsdWUgY29s
b3IgY29tcG9uZW50LgogICogQHBhcmFtIGEgd2hlcmUgdG8gcmV0dXJuIGFscGhhIHZhbHVlLgog
ICovCi12b2lkIGV3a192aWV3X2JnX2NvbG9yX2dldChjb25zdCBFdmFzX09iamVjdCogbywgaW50
KiByLCBpbnQqIGcsIGludCogYiwgaW50KiBhKQordm9pZCBld2tfdmlld19iZ19jb2xvcl9nZXQo
Y29uc3QgRXZhc19PYmplY3QgKm8sIGludCAqciwgaW50ICpnLCBpbnQgKmIsIGludCAqYSkKIHsK
ICAgICBpZiAocikKICAgICAgICAgKnIgPSAwOwpAQCAtMTQyOCw3ICsxNDI4LDcgQEAgdm9pZCBl
d2tfdmlld19iZ19jb2xvcl9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8sIGludCogciwgaW50KiBn
LCBpbnQqIGIsIGludCogYSkKICAqCiAgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiBmb3VuZCwg
QGMgRUlOQV9GQUxTRSBpZiBub3Qgb3IgZmFpbHVyZS4KICAqLwotRWluYV9Cb29sIGV3a192aWV3
X3RleHRfc2VhcmNoKGNvbnN0IEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFyKiBzdHJpbmcsIEVp
bmFfQm9vbCBjYXNlX3NlbnNpdGl2ZSwgRWluYV9Cb29sIGZvcndhcmQsIEVpbmFfQm9vbCB3cmFw
KQorRWluYV9Cb29sIGV3a192aWV3X3RleHRfc2VhcmNoKGNvbnN0IEV2YXNfT2JqZWN0ICpvLCBj
b25zdCBjaGFyICpzdHJpbmcsIEVpbmFfQm9vbCBjYXNlX3NlbnNpdGl2ZSwgRWluYV9Cb29sIGZv
cndhcmQsIEVpbmFfQm9vbCB3cmFwKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4o
bywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwg
cHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0xNDYwLDcgKzE0NjAsNyBAQCBFaW5hX0Jvb2wgZXdrX3Zp
ZXdfdGV4dF9zZWFyY2goY29uc3QgRXZhc19PYmplY3QqIG8sIGNvbnN0IGNoYXIqIHN0cmluZywg
RWluYV9CbwogICoKICAqIEByZXR1cm4gbnVtYmVyIG9mIG1hdGNoZXMuCiAgKi8KLXVuc2lnbmVk
IGludCBld2tfdmlld190ZXh0X21hdGNoZXNfbWFyayhFdmFzX09iamVjdCogbywgY29uc3QgY2hh
ciogc3RyaW5nLCBFaW5hX0Jvb2wgY2FzZV9zZW5zaXRpdmUsIEVpbmFfQm9vbCBoaWdobGlnaHQs
IHVuc2lnbmVkIGludCBsaW1pdCkKK3Vuc2lnbmVkIGludCBld2tfdmlld190ZXh0X21hdGNoZXNf
bWFyayhFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqc3RyaW5nLCBFaW5hX0Jvb2wgY2FzZV9z
ZW5zaXRpdmUsIEVpbmFfQm9vbCBoaWdobGlnaHQsIHVuc2lnbmVkIGludCBsaW1pdCkKIHsKICAg
ICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAwKTsKICAgICBFV0tfVklFV19QUklW
X0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIDApOwpAQCAtMTQ4Miw3ICsxNDgyLDcgQEAgdW5zaWdu
ZWQgaW50IGV3a192aWV3X3RleHRfbWF0Y2hlc19tYXJrKEV2YXNfT2JqZWN0KiBvLCBjb25zdCBj
aGFyKiBzdHJpbmcsIEVpbmEKICAqCiAgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNz
LCBAYyBFSU5BX0ZBTFNFIGZvciBmYWlsdXJlLgogICovCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfdGV4
dF9tYXRjaGVzX3VubWFya19hbGwoRXZhc19PYmplY3QqIG8pCitFaW5hX0Jvb2wgZXdrX3ZpZXdf
dGV4dF9tYXRjaGVzX3VubWFya19hbGwoRXZhc19PYmplY3QgKm8pCiB7CiAgICAgRVdLX1ZJRVdf
U0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9H
RVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKQEAgLTE0OTgsNyArMTQ5OCw3IEBA
IEVpbmFfQm9vbCBld2tfdmlld190ZXh0X21hdGNoZXNfdW5tYXJrX2FsbChFdmFzX09iamVjdCog
bykKICAqCiAgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBAYyBFSU5BX0ZBTFNF
IGZvciBmYWlsdXJlLgogICovCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfdGV4dF9tYXRjaGVzX2hpZ2hs
aWdodF9zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCBoaWdobGlnaHQpCitFaW5hX0Jvb2wg
ZXdrX3ZpZXdfdGV4dF9tYXRjaGVzX2hpZ2hsaWdodF9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFf
Qm9vbCBoaWdobGlnaHQpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwg
RUlOQV9GQUxTRSk7CiAgICAgcmV0dXJuIGV3a19mcmFtZV90ZXh0X21hdGNoZXNfaGlnaGxpZ2h0
X3NldChzZC0+bWFpbl9mcmFtZSwgaGlnaGxpZ2h0KTsKQEAgLTE1MTEsNyArMTUxMSw3IEBAIEVp
bmFfQm9vbCBld2tfdmlld190ZXh0X21hdGNoZXNfaGlnaGxpZ2h0X3NldChFdmFzX09iamVjdCog
bywgRWluYV9Cb29sIGhpZ2hsaWdoCiAgKgogICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgdGhl
eSBhcmUgaGlnaGxpZ2h0ZWQsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgogICovCi1FaW5hX0Jv
b2wgZXdrX3ZpZXdfdGV4dF9tYXRjaGVzX2hpZ2hsaWdodF9nZXQoY29uc3QgRXZhc19PYmplY3Qq
IG8pCitFaW5hX0Jvb2wgZXdrX3ZpZXdfdGV4dF9tYXRjaGVzX2hpZ2hsaWdodF9nZXQoY29uc3Qg
RXZhc19PYmplY3QgKm8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwg
RUlOQV9GQUxTRSk7CiAgICAgcmV0dXJuIGV3a19mcmFtZV90ZXh0X21hdGNoZXNfaGlnaGxpZ2h0
X2dldChzZC0+bWFpbl9mcmFtZSk7CkBAIC0xNTI1LDcgKzE1MjUsNyBAQCBFaW5hX0Jvb2wgZXdr
X3ZpZXdfdGV4dF9tYXRjaGVzX2hpZ2hsaWdodF9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiAg
KgogICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcywgQGMgRUlOQV9GQUxTRSBvdGhl
cndpc2UuCiAgKi8KLUVpbmFfQm9vbCBld2tfdmlld19lZGl0YWJsZV9zZXQoRXZhc19PYmplY3Qq
IG8sIEVpbmFfQm9vbCBlZGl0YWJsZSkKK0VpbmFfQm9vbCBld2tfdmlld19lZGl0YWJsZV9zZXQo
RXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBlZGl0YWJsZSkKIHsKICAgICBFV0tfVklFV19TRF9H
RVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICByZXR1cm4gZXdrX2ZyYW1lX2Vk
aXRhYmxlX3NldChzZC0+bWFpbl9mcmFtZSwgZWRpdGFibGUpOwpAQCAtMTUzOCw3ICsxNTM4LDcg
QEAgRWluYV9Cb29sIGV3a192aWV3X2VkaXRhYmxlX3NldChFdmFzX09iamVjdCogbywgRWluYV9C
b29sIGVkaXRhYmxlKQogICoKICAqIEByZXR1cm4gbmV3bHkgYWxsb2NhdGVkIHN0cmluZyBvciBA
YyAwIGlmIG5vdGhpbmcgaXMgc2VsZWN0ZWQgb3IgZmFpbHVyZS4KICAqLwotY2hhciogZXdrX3Zp
ZXdfc2VsZWN0aW9uX2dldChjb25zdCBFdmFzX09iamVjdCogbykKK2NoYXIgKmV3a192aWV3X3Nl
bGVjdGlvbl9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VU
X09SX1JFVFVSTihvLCBzZCwgMCk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNk
LCBwcml2LCAwKTsKQEAgLTE1NDgsNyArMTU0OCw3IEBAIGNoYXIqIGV3a192aWV3X3NlbGVjdGlv
bl9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiAgICAgcmV0dXJuIHN0cmR1cChzLmRhdGEoKSk7
CiB9CiAKLXN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X2VkaXRvcl9jb21tYW5kKEV3a19WaWV3
X1ByaXZhdGVfRGF0YSogcHJpdiwgY29uc3QgY2hhciogY29tbWFuZCwgY29uc3QgY2hhciogdmFs
dWUgPSAwKQorc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfZWRpdG9yX2NvbW1hbmQoRXdrX1Zp
ZXdfUHJpdmF0ZV9EYXRhICpwcml2LCBjb25zdCBjaGFyICpjb21tYW5kLCBjb25zdCBjaGFyICp2
YWx1ZSA9IDApCiB7CiAgICAgcmV0dXJuIHByaXYtPnBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5m
b2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCktPmNvbW1hbmQoV1RGOjpTdHJpbmc6OmZyb21V
VEY4KGNvbW1hbmQpKS5leGVjdXRlKHZhbHVlKTsKIH0KQEAgLTE1NjIsNyArMTU2Miw3IEBAIHN0
YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X2VkaXRvcl9jb21tYW5kKEV3a19WaWV3X1ByaXZhdGVf
RGF0YSogcHJpdiwgY29uc3QgY2hhCiAgKgogICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgb3Bl
cmF0aW9uIHdhcyBleGVjdXRlZCwgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UuCiAgKi8KLUVpbmFf
Qm9vbCBld2tfdmlld19leGVjdXRlX2VkaXRvcl9jb21tYW5kKEV2YXNfT2JqZWN0KiBvLCBjb25z
dCBFd2tfRWRpdG9yX0NvbW1hbmQgY29tbWFuZCwgY29uc3QgY2hhciogdmFsdWUpCitFaW5hX0Jv
b2wgZXdrX3ZpZXdfZXhlY3V0ZV9lZGl0b3JfY29tbWFuZChFdmFzX09iamVjdCAqbywgY29uc3Qg
RXdrX0VkaXRvcl9Db21tYW5kIGNvbW1hbmQsIGNvbnN0IGNoYXIgKnZhbHVlKQogewogICAgIEVX
S19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVX
X1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0xNTg5LDYgKzE1
ODksOCBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfZXhlY3V0ZV9lZGl0b3JfY29tbWFuZChFdmFzX09i
amVjdCogbywgY29uc3QgRXdrX0VkaXRvcl9Db21tYQogICAgIH0KIH0KIAorI2lmIEVOQUJMRShD
T05URVhUX01FTlVTKQorCiAvKioKICAqIEZvcndhcmRzIGEgcmVxdWVzdCBvZiBuZXcgQ29udGV4
dCBNZW51IHRvIFdlYkNvcmUuCiAgKgpAQCAtMTU5NywxNSArMTU5OSwxNCBAQCBFaW5hX0Jvb2wg
ZXdrX3ZpZXdfZXhlY3V0ZV9lZGl0b3JfY29tbWFuZChFdmFzX09iamVjdCogbywgY29uc3QgRXdr
X0VkaXRvcl9Db21tYQogICoKICAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIG9wZXJhdGlvbiB3
YXMgZXhlY3V0ZWQsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgogICovCi1FaW5hX0Jvb2wgZXdr
X3ZpZXdfY29udGV4dF9tZW51X2ZvcndhcmRfZXZlbnQoRXZhc19PYmplY3QqIG8sIGNvbnN0IEV2
YXNfRXZlbnRfTW91c2VfRG93biogZXYpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfY29udGV4dF9tZW51
X2ZvcndhcmRfZXZlbnQoRXZhc19PYmplY3QgKm8sIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfRG93
biAqZXYpCiB7Ci0jaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAgICAgRVdLX1ZJRVdfU0RfR0VU
X09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1Jf
UkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKICAgICBFaW5hX0Jvb2wgbW91c2VfcHJlc3Nf
aGFuZGxlZCA9IEVJTkFfRkFMU0U7CiAKICAgICBwcml2LT5wYWdlLT5jb250ZXh0TWVudUNvbnRy
b2xsZXIoKS0+Y2xlYXJDb250ZXh0TWVudSgpOwotICAgIFdlYkNvcmU6OkZyYW1lKiBtYWluX2Zy
YW1lID0gcHJpdi0+cGFnZS0+bWFpbkZyYW1lKCk7CisgICAgV2ViQ29yZTo6RnJhbWUgKm1haW5f
ZnJhbWUgPSBwcml2LT5wYWdlLT5tYWluRnJhbWUoKTsKICAgICBFdmFzX0Nvb3JkIHgsIHk7CiAg
ICAgZXZhc19vYmplY3RfZ2VvbWV0cnlfZ2V0KHNkLT5zZWxmLCAmeCwgJnksIDAsIDApOwogCkBA
IC0xNjI4LDExICsxNjI5LDEwIEBAIEVpbmFfQm9vbCBld2tfdmlld19jb250ZXh0X21lbnVfZm9y
d2FyZF9ldmVudChFdmFzX09iamVjdCogbywgY29uc3QgRXZhc19FdmVudF9NCiAgICAgfQogCiAg
ICAgcmV0dXJuIEVJTkFfVFJVRTsKLSNlbHNlCi0gICAgcmV0dXJuIEVJTkFfRkFMU0U7Ci0jZW5k
aWYKIH0KIAorI2VuZGlmCisKIC8qKgogICogR2V0IGN1cnJlbnQgbG9hZCBwcm9ncmVzcyBlc3Rp
bWF0ZSBmcm9tIDAuMCB0byAxLjAuCiAgKgpAQCAtMTY0MCw3ICsxNjQwLDcgQEAgRWluYV9Cb29s
IGV3a192aWV3X2NvbnRleHRfbWVudV9mb3J3YXJkX2V2ZW50KEV2YXNfT2JqZWN0KiBvLCBjb25z
dCBFdmFzX0V2ZW50X00KICAqCiAgKiBAcmV0dXJuIHByb2dyZXMgdmFsdWUgZnJvbSAwLjAgdG8g
MS4wIG9yIC0xLjAgb24gZXJyb3IuCiAgKi8KLWRvdWJsZSBld2tfdmlld19sb2FkX3Byb2dyZXNz
X2dldChjb25zdCBFdmFzX09iamVjdCogbykKK2RvdWJsZSBld2tfdmlld19sb2FkX3Byb2dyZXNz
X2dldChjb25zdCBFdmFzX09iamVjdCAqbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVU
VVJOKG8sIHNkLCAtMS4wKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHBy
aXYsIC0xLjApOwpAQCAtMTY1Niw3ICsxNjU2LDcgQEAgZG91YmxlIGV3a192aWV3X2xvYWRfcHJv
Z3Jlc3NfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogICoKICAqIEBzZWUgZXdrX2ZyYW1lX3N0
b3AoKQogICovCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc3RvcChFdmFzX09iamVjdCogbykKK0VpbmFf
Qm9vbCBld2tfdmlld19zdG9wKEV2YXNfT2JqZWN0ICpvKQogewogICAgIEVXS19WSUVXX1NEX0dF
VF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIHJldHVybiBld2tfZnJhbWVfc3Rv
cChzZC0+bWFpbl9mcmFtZSk7CkBAIC0xNjcxLDcgKzE2NzEsNyBAQCBFaW5hX0Jvb2wgZXdrX3Zp
ZXdfc3RvcChFdmFzX09iamVjdCogbykKICAqCiAgKiBAc2VlIGV3a19mcmFtZV9yZWxvYWQoKQog
ICovCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfcmVsb2FkKEV2YXNfT2JqZWN0KiBvKQorRWluYV9Cb29s
IGV3a192aWV3X3JlbG9hZChFdmFzX09iamVjdCAqbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRf
T1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICByZXR1cm4gZXdrX2ZyYW1lX3JlbG9h
ZChzZC0+bWFpbl9mcmFtZSk7CkBAIC0xNjg2LDcgKzE2ODYsNyBAQCBFaW5hX0Jvb2wgZXdrX3Zp
ZXdfcmVsb2FkKEV2YXNfT2JqZWN0KiBvKQogICoKICAqIEBzZWUgZXdrX2ZyYW1lX3JlbG9hZF9m
dWxsKCkKICAqLwotRWluYV9Cb29sIGV3a192aWV3X3JlbG9hZF9mdWxsKEV2YXNfT2JqZWN0KiBv
KQorRWluYV9Cb29sIGV3a192aWV3X3JlbG9hZF9mdWxsKEV2YXNfT2JqZWN0ICpvKQogewogICAg
IEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIHJldHVy
biBld2tfZnJhbWVfcmVsb2FkX2Z1bGwoc2QtPm1haW5fZnJhbWUpOwpAQCAtMTcwMSw3ICsxNzAx
LDcgQEAgRWluYV9Cb29sIGV3a192aWV3X3JlbG9hZF9mdWxsKEV2YXNfT2JqZWN0KiBvKQogICoK
ICAqIEBzZWUgZXdrX2ZyYW1lX2JhY2soKQogICovCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfYmFjayhF
dmFzX09iamVjdCogbykKK0VpbmFfQm9vbCBld2tfdmlld19iYWNrKEV2YXNfT2JqZWN0ICpvKQog
ewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAg
IHJldHVybiBld2tfZnJhbWVfYmFjayhzZC0+bWFpbl9mcmFtZSk7CkBAIC0xNzE2LDcgKzE3MTYs
NyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfYmFjayhFdmFzX09iamVjdCogbykKICAqCiAgKiBAc2Vl
IGV3a19mcmFtZV9mb3J3YXJkKCkKICAqLwotRWluYV9Cb29sIGV3a192aWV3X2ZvcndhcmQoRXZh
c19PYmplY3QqIG8pCitFaW5hX0Jvb2wgZXdrX3ZpZXdfZm9yd2FyZChFdmFzX09iamVjdCAqbykK
IHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAg
ICByZXR1cm4gZXdrX2ZyYW1lX2ZvcndhcmQoc2QtPm1haW5fZnJhbWUpOwpAQCAtMTczMyw3ICsx
NzMzLDcgQEAgRWluYV9Cb29sIGV3a192aWV3X2ZvcndhcmQoRXZhc19PYmplY3QqIG8pCiAgKgog
ICogQHNlZSBld2tfZnJhbWVfbmF2aWdhdGUoKQogICovCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfbmF2
aWdhdGUoRXZhc19PYmplY3QqIG8sIGludCBzdGVwcykKK0VpbmFfQm9vbCBld2tfdmlld19uYXZp
Z2F0ZShFdmFzX09iamVjdCAqbywgaW50IHN0ZXBzKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9P
Ul9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIHJldHVybiBld2tfZnJhbWVfbmF2aWdh
dGUoc2QtPm1haW5fZnJhbWUsIHN0ZXBzKTsKQEAgLTE3NDgsNyArMTc0OCw3IEBAIEVpbmFfQm9v
bCBld2tfdmlld19uYXZpZ2F0ZShFdmFzX09iamVjdCogbywgaW50IHN0ZXBzKQogICoKICAqIEBz
ZWUgZXdrX3ZpZXdfbmF2aWdhdGVfcG9zc2libGUoKQogICovCi1FaW5hX0Jvb2wgZXdrX3ZpZXdf
YmFja19wb3NzaWJsZShFdmFzX09iamVjdCogbykKK0VpbmFfQm9vbCBld2tfdmlld19iYWNrX3Bv
c3NpYmxlKEV2YXNfT2JqZWN0ICpvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4o
bywgc2QsIEVJTkFfRkFMU0UpOwogICAgIHJldHVybiBld2tfZnJhbWVfYmFja19wb3NzaWJsZShz
ZC0+bWFpbl9mcmFtZSk7CkBAIC0xNzYzLDcgKzE3NjMsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdf
YmFja19wb3NzaWJsZShFdmFzX09iamVjdCogbykKICAqCiAgKiBAc2VlIGV3a192aWV3X25hdmln
YXRlX3Bvc3NpYmxlKCkKICAqLwotRWluYV9Cb29sIGV3a192aWV3X2ZvcndhcmRfcG9zc2libGUo
RXZhc19PYmplY3QqIG8pCitFaW5hX0Jvb2wgZXdrX3ZpZXdfZm9yd2FyZF9wb3NzaWJsZShFdmFz
X09iamVjdCAqbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5B
X0ZBTFNFKTsKICAgICByZXR1cm4gZXdrX2ZyYW1lX2ZvcndhcmRfcG9zc2libGUoc2QtPm1haW5f
ZnJhbWUpOwpAQCAtMTc3OCw3ICsxNzc4LDcgQEAgRWluYV9Cb29sIGV3a192aWV3X2ZvcndhcmRf
cG9zc2libGUoRXZhc19PYmplY3QqIG8pCiAgKgogICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYg
cG9zc2libGUsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgogICovCi1FaW5hX0Jvb2wgZXdrX3Zp
ZXdfbmF2aWdhdGVfcG9zc2libGUoRXZhc19PYmplY3QqIG8sIGludCBzdGVwcykKK0VpbmFfQm9v
bCBld2tfdmlld19uYXZpZ2F0ZV9wb3NzaWJsZShFdmFzX09iamVjdCAqbywgaW50IHN0ZXBzKQog
ewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAg
IHJldHVybiBld2tfZnJhbWVfbmF2aWdhdGVfcG9zc2libGUoc2QtPm1haW5fZnJhbWUsIHN0ZXBz
KTsKQEAgLTE3OTEsNyArMTc5MSw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19uYXZpZ2F0ZV9wb3Nz
aWJsZShFdmFzX09iamVjdCogbywgaW50IHN0ZXBzKQogICoKICAqIEByZXR1cm4gQGMgRUlOQV9U
UlVFIGlmIHZpZXcga2VlcHMgaGlzdG9yeSwgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UuCiAgKi8K
LUVpbmFfQm9vbCBld2tfdmlld19oaXN0b3J5X2VuYWJsZV9nZXQoY29uc3QgRXZhc19PYmplY3Qq
IG8pCitFaW5hX0Jvb2wgZXdrX3ZpZXdfaGlzdG9yeV9lbmFibGVfZ2V0KGNvbnN0IEV2YXNfT2Jq
ZWN0ICpvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFM
U0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxT
RSk7CkBAIC0xODA3LDcgKzE4MDcsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfaGlzdG9yeV9lbmFi
bGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogICoKICAqIEByZXR1cm4gQGMgRUlOQV9UUlVF
IG9uIHN1Y2Nlc3MsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgogICovCi1FaW5hX0Jvb2wgZXdr
X3ZpZXdfaGlzdG9yeV9lbmFibGVfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgZW5hYmxl
KQorRWluYV9Cb29sIGV3a192aWV3X2hpc3RvcnlfZW5hYmxlX3NldChFdmFzX09iamVjdCAqbywg
RWluYV9Cb29sIGVuYWJsZSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNk
LCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYs
IEVJTkFfRkFMU0UpOwpAQCAtMTgzMSw3ICsxODMxLDcgQEAgRWluYV9Cb29sIGV3a192aWV3X2hp
c3RvcnlfZW5hYmxlX3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIGVuYWJsZSkKICAqCiAg
KiBAc2VlIGV3a192aWV3X2hpc3RvcnlfZW5hYmxlX3NldCgpCiAgKi8KLUV3a19IaXN0b3J5KiBl
d2tfdmlld19oaXN0b3J5X2dldChjb25zdCBFdmFzX09iamVjdCogbykKK0V3a19IaXN0b3J5KiBl
d2tfdmlld19oaXN0b3J5X2dldChjb25zdCBFdmFzX09iamVjdCAqbykKIHsKICAgICBFV0tfVklF
V19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAwKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9S
RVRVUk4oc2QsIHByaXYsIDApOwpAQCAtMTg0OSw3ICsxODQ5LDcgQEAgRXdrX0hpc3RvcnkqIGV3
a192aWV3X2hpc3RvcnlfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogICoKICAqIEByZXR1cm4g
Y3VycmVudCB6b29tIGxldmVsIGluIHVzZSBvciAtMS4wIG9uIGVycm9yLgogICovCi1mbG9hdCBl
d2tfdmlld196b29tX2dldChjb25zdCBFdmFzX09iamVjdCogbykKK2Zsb2F0IGV3a192aWV3X3pv
b21fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9S
RVRVUk4obywgc2QsIC0xLjApOwogICAgIHJldHVybiBld2tfZnJhbWVfem9vbV9nZXQoc2QtPm1h
aW5fZnJhbWUpOwpAQCAtMTg2NSw3ICsxODY1LDcgQEAgZmxvYXQgZXdrX3ZpZXdfem9vbV9nZXQo
Y29uc3QgRXZhc19PYmplY3QqIG8pCiAgKgogICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3Vj
Y2VzcywgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UuCiAgKi8KLUVpbmFfQm9vbCBld2tfdmlld196
b29tX3NldChFdmFzX09iamVjdCogbywgZmxvYXQgem9vbSwgRXZhc19Db29yZCBjeCwgRXZhc19D
b29yZCBjeSkKK0VpbmFfQm9vbCBld2tfdmlld196b29tX3NldChFdmFzX09iamVjdCAqbywgZmxv
YXQgem9vbSwgRXZhc19Db29yZCBjeCwgRXZhc19Db29yZCBjeSkKIHsKICAgICBFV0tfVklFV19T
RF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dF
VChzZCwgcHJpdik7CkBAIC0xODkxLDEzICsxODkxLDEzIEBAIEVpbmFfQm9vbCBld2tfdmlld196
b29tX3NldChFdmFzX09iamVjdCogbywgZmxvYXQgem9vbSwgRXZhc19Db29yZCBjeCwgRXZhc19D
b29yCiAgICAgcmV0dXJuIHNkLT5hcGktPnpvb21fc2V0KHNkLCB6b29tLCBjeCwgY3kpOwogfQog
Ci1FaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV93ZWFrX3Ntb290aF9zY2FsZV9nZXQoY29uc3QgRXZh
c19PYmplY3QqIG8pCitFaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV93ZWFrX3Ntb290aF9zY2FsZV9n
ZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVS
TihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgcmV0dXJuIHNkLT56b29tX3dlYWtfc21vb3RoX3Nj
YWxlOwogfQogCi12b2lkIGV3a192aWV3X3pvb21fd2Vha19zbW9vdGhfc2NhbGVfc2V0KEV2YXNf
T2JqZWN0KiBvLCBFaW5hX0Jvb2wgc21vb3RoX3NjYWxlKQordm9pZCBld2tfdmlld196b29tX3dl
YWtfc21vb3RoX3NjYWxlX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIHNtb290aF9zY2Fs
ZSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkKTsKICAgICBzbW9vdGhf
c2NhbGUgPSAhIXNtb290aF9zY2FsZTsKQEAgLTE5MzUsNyArMTkzNSw3IEBAIHZvaWQgZXdrX3Zp
ZXdfem9vbV93ZWFrX3Ntb290aF9zY2FsZV9zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCBz
bW9vdGhfc2NhbGUpCiAgKgogICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcywgQGMg
RUlOQV9GQUxTRSBvdGhlcndpc2UuCiAgKi8KLUVpbmFfQm9vbCBld2tfdmlld196b29tX3dlYWtf
c2V0KEV2YXNfT2JqZWN0KiBvLCBmbG9hdCB6b29tLCBFdmFzX0Nvb3JkIGN4LCBFdmFzX0Nvb3Jk
IGN5KQorRWluYV9Cb29sIGV3a192aWV3X3pvb21fd2Vha19zZXQoRXZhc19PYmplY3QgKm8sIGZs
b2F0IHpvb20sIEV2YXNfQ29vcmQgY3gsIEV2YXNfQ29vcmQgY3kpCiB7CiAgICAgRVdLX1ZJRVdf
U0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9H
RVQoc2QsIHByaXYpOwpAQCAtMTk4MSw3ICsxOTgxLDcgQEAgRWluYV9Cb29sIGV3a192aWV3X3pv
b21fd2Vha19zZXQoRXZhc19PYmplY3QqIG8sIGZsb2F0IHpvb20sIEV2YXNfQ29vcmQgY3gsIEV2
YXMKICAqIEBzZWUgZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9tYXJrX2VuZCgpCiAgKiBAc2VlIGV3
a192aWV3X3pvb21fYW5pbWF0ZWRfbWFya19jdXJyZW50KCkKICAqLwotRWluYV9Cb29sIGV3a192
aWV3X3pvb21fYW5pbWF0ZWRfbWFya19zdGFydChFdmFzX09iamVjdCogbywgZmxvYXQgem9vbSkK
K0VpbmFfQm9vbCBld2tfdmlld196b29tX2FuaW1hdGVkX21hcmtfc3RhcnQoRXZhc19PYmplY3Qg
Km8sIGZsb2F0IHpvb20pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwg
RUlOQV9GQUxTRSk7CiAgICAgc2QtPmFuaW1hdGVkX3pvb20uem9vbS5zdGFydCA9IHpvb207CkBA
IC0yMDA2LDcgKzIwMDYsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9tYXJr
X3N0YXJ0KEV2YXNfT2JqZWN0KiBvLCBmbG9hdCB6b29tKQogICogQHNlZSBld2tfdmlld196b29t
X2FuaW1hdGVkX21hcmtfc3RhcnQoKQogICogQHNlZSBld2tfdmlld196b29tX2FuaW1hdGVkX21h
cmtfY3VycmVudCgpCiAgKi8KLUVpbmFfQm9vbCBld2tfdmlld196b29tX2FuaW1hdGVkX21hcmtf
ZW5kKEV2YXNfT2JqZWN0KiBvLCBmbG9hdCB6b29tKQorRWluYV9Cb29sIGV3a192aWV3X3pvb21f
YW5pbWF0ZWRfbWFya19lbmQoRXZhc19PYmplY3QgKm8sIGZsb2F0IHpvb20pCiB7CiAgICAgRVdL
X1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgc2QtPmFuaW1h
dGVkX3pvb20uem9vbS5lbmQgPSB6b29tOwpAQCAtMjAzMSw3ICsyMDMxLDcgQEAgRWluYV9Cb29s
IGV3a192aWV3X3pvb21fYW5pbWF0ZWRfbWFya19lbmQoRXZhc19PYmplY3QqIG8sIGZsb2F0IHpv
b20pCiAgKiBAc2VlIGV3a192aWV3X3pvb21fYW5pbWF0ZWRfbWFya19zdGFydCgpCiAgKiBAc2Vl
IGV3a192aWV3X3pvb21fYW5pbWF0ZWRfbWFya19lbmQoKQogICovCi1FaW5hX0Jvb2wgZXdrX3Zp
ZXdfem9vbV9hbmltYXRlZF9tYXJrX2N1cnJlbnQoRXZhc19PYmplY3QqIG8sIGZsb2F0IHpvb20p
CitFaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9tYXJrX2N1cnJlbnQoRXZhc19PYmpl
Y3QgKm8sIGZsb2F0IHpvb20pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBz
ZCwgRUlOQV9GQUxTRSk7CiAgICAgc2QtPmFuaW1hdGVkX3pvb20uem9vbS5jdXJyZW50ID0gem9v
bTsKQEAgLTIwNTAsNyArMjA1MCw3IEBAIEVpbmFfQm9vbCBld2tfdmlld196b29tX2FuaW1hdGVk
X21hcmtfY3VycmVudChFdmFzX09iamVjdCogbywgZmxvYXQgem9vbSkKICAqIEBzZWUgZXdrX3Zp
ZXdfem9vbV9hbmltYXRlZF9tYXJrX2N1cnJlbnQoKQogICogQHNlZSBld2tfdmlld196b29tX3dl
YWtfc2V0KCkKICAqLwotRWluYV9Cb29sIGV3a192aWV3X3pvb21fYW5pbWF0ZWRfbWFya19zdG9w
KEV2YXNfT2JqZWN0KiBvKQorRWluYV9Cb29sIGV3a192aWV3X3pvb21fYW5pbWF0ZWRfbWFya19z
dG9wKEV2YXNfT2JqZWN0ICpvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywg
c2QsIEVJTkFfRkFMU0UpOwogICAgIF9ld2tfdmlld196b29tX2FuaW1hdGVkX21hcmtfc3RvcChz
ZCk7CkBAIC0yMDc5LDcgKzIwNzksNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV9hbmltYXRl
ZF9tYXJrX3N0b3AoRXZhc19PYmplY3QqIG8pCiAgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiBh
bmltYXRpb24gd2lsbCBiZSBzdGFydGVkLCBAYyBFSU5BX0ZBTFNFIGlmIG5vdAogICogICAgICAg
ICAgICBiZWNhdXNlIHpvb20gaXMgdG9vIHNtYWxsL2JpZy4KICAqLwotRWluYV9Cb29sIGV3a192
aWV3X3pvb21fYW5pbWF0ZWRfc2V0KEV2YXNfT2JqZWN0KiBvLCBmbG9hdCB6b29tLCBmbG9hdCBk
dXJhdGlvbiwgRXZhc19Db29yZCBjeCwgRXZhc19Db29yZCBjeSkKK0VpbmFfQm9vbCBld2tfdmll
d196b29tX2FuaW1hdGVkX3NldChFdmFzX09iamVjdCAqbywgZmxvYXQgem9vbSwgZmxvYXQgZHVy
YXRpb24sIEV2YXNfQ29vcmQgY3gsIEV2YXNfQ29vcmQgY3kpCiB7CiAgICAgZG91YmxlIG5vdzsK
ICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKQEAgLTIx
MzUsNyArMjEzNSw3IEBAIEVpbmFfQm9vbCBld2tfdmlld196b29tX2FuaW1hdGVkX3NldChFdmFz
X09iamVjdCogbywgZmxvYXQgem9vbSwgZmxvYXQgZHVyYXRpb24sCiAgKgogICogQHJldHVybiBA
YyBFSU5BX1RSVUUgaWYganVzdCB0ZXh0IGFyZSBzY2FsZWQsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3
aXNlLgogICovCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV90ZXh0X29ubHlfZ2V0KGNvbnN0IEV2
YXNfT2JqZWN0KiBvKQorRWluYV9Cb29sIGV3a192aWV3X3pvb21fdGV4dF9vbmx5X2dldChjb25z
dCBFdmFzX09iamVjdCAqbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNk
LCBFSU5BX0ZBTFNFKTsKICAgICByZXR1cm4gZXdrX2ZyYW1lX3pvb21fdGV4dF9vbmx5X2dldChz
ZC0+bWFpbl9mcmFtZSk7CkBAIC0yMTQ5LDcgKzIxNDksNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdf
em9vbV90ZXh0X29ubHlfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogICoKICAqIEByZXR1cm4g
QGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgogICovCi1F
aW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV90ZXh0X29ubHlfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5h
X0Jvb2wgc2V0dGluZykKK0VpbmFfQm9vbCBld2tfdmlld196b29tX3RleHRfb25seV9zZXQoRXZh
c19PYmplY3QgKm8sIEVpbmFfQm9vbCBzZXR0aW5nKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9P
Ul9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIHJldHVybiBld2tfZnJhbWVfem9vbV90
ZXh0X29ubHlfc2V0KHNkLT5tYWluX2ZyYW1lLCBzZXR0aW5nKTsKQEAgLTIxODMsNyArMjE4Myw3
IEBAIEVpbmFfQm9vbCBld2tfdmlld196b29tX3RleHRfb25seV9zZXQoRXZhc19PYmplY3QqIG8s
IEVpbmFfQm9vbCBzZXR0aW5nKQogICoKICAqIEBzZWUgZXdrX3ZpZXdfcHJlX3JlbmRlcl9jYW5j
ZWwoKQogICovCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfcHJlX3JlbmRlcl9yZWdpb24oRXZhc19PYmpl
Y3QqIG8sIEV2YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5LCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29v
cmQgaCwgZmxvYXQgem9vbSkKK0VpbmFfQm9vbCBld2tfdmlld19wcmVfcmVuZGVyX3JlZ2lvbihF
dmFzX09iamVjdCAqbywgRXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkIHksIEV2YXNfQ29vcmQgdywg
RXZhc19Db29yZCBoLCBmbG9hdCB6b29tKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRV
Uk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihz
ZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0yMjQxLDcgKzIyNDEsNyBAQCBFaW5hX0Jvb2wgZXdr
X3ZpZXdfcHJlX3JlbmRlcl9yZWdpb24oRXZhc19PYmplY3QqIG8sIEV2YXNfQ29vcmQgeCwgRXZh
c19Db29yZCB5LAogICoKICAqIEBzZWUgZXdrX3ZpZXdfcHJlX3JlbmRlcl9yZWdpb24oKQogICov
Ci1FaW5hX0Jvb2wgZXdrX3ZpZXdfcHJlX3JlbmRlcl9yZWxhdGl2ZV9yYWRpdXMoRXZhc19PYmpl
Y3QqIG8sIHVuc2lnbmVkIGludCBuKQorRWluYV9Cb29sIGV3a192aWV3X3ByZV9yZW5kZXJfcmVs
YXRpdmVfcmFkaXVzKEV2YXNfT2JqZWN0ICpvLCB1bnNpZ25lZCBpbnQgbikKIHsKICAgICBFV0tf
VklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19Q
UklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwpAQCAtMjI3NCw3ICsyMjc0
LDcgQEAgdW5zaWduZWQgaW50IGV3a192aWV3X2ltaF9nZXQoRXZhc19PYmplY3QgKm8pCiAgKgog
ICogQHBhcmFtIG8gdmlldyB0byBjbGVhciBwcmUtcmVuZGVyIHJlcXVlc3RzLgogICovCi12b2lk
IGV3a192aWV3X3ByZV9yZW5kZXJfY2FuY2VsKEV2YXNfT2JqZWN0KiBvKQordm9pZCBld2tfdmll
d19wcmVfcmVuZGVyX2NhbmNlbChFdmFzX09iamVjdCAqbykKIHsKICAgICBFV0tfVklFV19TRF9H
RVRfT1JfUkVUVVJOKG8sIHNkKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+
YXBpLT5wcmVfcmVuZGVyX2NhbmNlbCk7CkBAIC0yMzExLDE0ICsyMzExLDE0IEBAIEVpbmFfQm9v
bCBld2tfdmlld19kaXNhYmxlX3JlbmRlcihjb25zdCBFdmFzX09iamVjdCAqbykKICAgICByZXR1
cm4gc2QtPmFwaS0+ZGlzYWJsZV9yZW5kZXIoc2QpOwogfQogCi1jb25zdCBjaGFyKiBld2tfdmll
d19zZXR0aW5nX3VzZXJfYWdlbnRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQorY29uc3QgY2hh
ciAqZXdrX3ZpZXdfc2V0dGluZ191c2VyX2FnZW50X2dldChjb25zdCBFdmFzX09iamVjdCAqbykK
IHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAwKTsKICAgICBFV0tfVklF
V19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIDApOwogICAgIHJldHVybiBwcml2LT5zZXR0
aW5ncy51c2VyX2FnZW50OwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ191c2VyX2Fn
ZW50X3NldChFdmFzX09iamVjdCogbywgY29uc3QgY2hhciogdXNlcl9hZ2VudCkKK0VpbmFfQm9v
bCBld2tfdmlld19zZXR0aW5nX3VzZXJfYWdlbnRfc2V0KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBj
aGFyICp1c2VyX2FnZW50KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2Qs
IEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwg
RUlOQV9GQUxTRSk7CkBAIC0yMzI5LDE0ICsyMzI5LDE0IEBAIEVpbmFfQm9vbCBld2tfdmlld19z
ZXR0aW5nX3VzZXJfYWdlbnRfc2V0KEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFyKiB1c2VyX2Fn
ZW50CiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotY29uc3QgY2hhciogZXdrX3ZpZXdfc2V0
dGluZ191c2VyX3N0eWxlc2hlZXRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQorY29uc3QgY2hh
ciAqZXdrX3ZpZXdfc2V0dGluZ191c2VyX3N0eWxlc2hlZXRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0
ICpvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIDApOwogICAgIEVX
S19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgMCk7CiAgICAgcmV0dXJuIHByaXYt
PnNldHRpbmdzLnVzZXJfc3R5bGVzaGVldDsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3NldHRp
bmdfdXNlcl9zdHlsZXNoZWV0X3NldChFdmFzX09iamVjdCogbywgY29uc3QgY2hhciogdXJpKQor
RWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfdXNlcl9zdHlsZXNoZWV0X3NldChFdmFzX09iamVj
dCAqbywgY29uc3QgY2hhciAqdXJpKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4o
bywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwg
cHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0yMzQ3LDE0ICsyMzQ3LDE0IEBAIEVpbmFfQm9vbCBld2tf
dmlld19zZXR0aW5nX3VzZXJfc3R5bGVzaGVldF9zZXQoRXZhc19PYmplY3QqIG8sIGNvbnN0IGNo
YXIqIHVyaSkKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdf
c2V0dGluZ19hdXRvX2xvYWRfaW1hZ2VzX2dldChjb25zdCBFdmFzX09iamVjdCogbykKK0VpbmFf
Qm9vbCBld2tfdmlld19zZXR0aW5nX2F1dG9fbG9hZF9pbWFnZXNfZ2V0KGNvbnN0IEV2YXNfT2Jq
ZWN0ICpvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFM
U0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxT
RSk7CiAgICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLmF1dG9fbG9hZF9pbWFnZXM7CiB9CiAKLUVp
bmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2F1dG9fbG9hZF9pbWFnZXNfc2V0KEV2YXNfT2JqZWN0
KiBvLCBFaW5hX0Jvb2wgYXV0b21hdGljKQorRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfYXV0
b19sb2FkX2ltYWdlc19zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBhdXRvbWF0aWMpCiB7
CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAg
RVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKQEAgLTIz
NjYsMTQgKzIzNjYsMTQgQEAgRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfYXV0b19sb2FkX2lt
YWdlc19zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCBhdXRvbWEKICAgICByZXR1cm4gRUlO
QV9UUlVFOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19hdXRvX3Nocmlua19pbWFn
ZXNfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQorRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdf
YXV0b19zaHJpbmtfaW1hZ2VzX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKIHsKICAgICBFV0tf
VklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19Q
UklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwogICAgIHJldHVybiBwcml2
LT5zZXR0aW5ncy5hdXRvX3Nocmlua19pbWFnZXM7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19z
ZXR0aW5nX2F1dG9fc2hyaW5rX2ltYWdlc19zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCBh
dXRvbWF0aWMpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19hdXRvX3Nocmlua19pbWFnZXNf
c2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgYXV0b21hdGljKQogewogICAgIEVXS19WSUVX
X1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZf
R0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0yMzkzLDcgKzIzOTMsNyBA
QCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19hdXRvX3Nocmlua19pbWFnZXNfc2V0KEV2YXNf
T2JqZWN0KiBvLCBFaW5hX0Jvb2wgYXV0bwogICogQHJldHVybiBFSU5BX1RSVUUgaWYgdmlldyBj
YW4gYmUgcmVzaXplZCwgRUlOQV9GQUxTRQogICogICAgICAgICBvdGhlcndpc2UgKGVycm9ycywg
Y2Fubm90IGJlIHJlc2l6ZWQpLgogICovCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19lbmFi
bGVfYXV0b19yZXNpemVfd2luZG93X2dldChjb25zdCBFdmFzX09iamVjdCogbykKK0VpbmFfQm9v
bCBld2tfdmlld19zZXR0aW5nX2VuYWJsZV9hdXRvX3Jlc2l6ZV93aW5kb3dfZ2V0KGNvbnN0IEV2
YXNfT2JqZWN0ICpvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJ
TkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlO
QV9GQUxTRSk7CkBAIC0yNDEwLDcgKzI0MTAsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGlu
Z19lbmFibGVfYXV0b19yZXNpemVfd2luZG93X2dldChjb25zdCBFdmFzX09iamVjdCogbykKICAq
IEByZXR1cm4gRUlOQV9UUlVFIGlmIGF1dG9fcmVzaXplX3dpbmRvdyBzdGF0dXMgc2V0LCBFSU5B
X0ZBTFNFCiAgKiAgICAgICAgIG90aGVyd2lzZSAoZXJyb3JzKS4KICAqLwotRWluYV9Cb29sIGV3
a192aWV3X3NldHRpbmdfZW5hYmxlX2F1dG9fcmVzaXplX3dpbmRvd19zZXQoRXZhc19PYmplY3Qq
IG8sIEVpbmFfQm9vbCByZXNpemFibGUpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19lbmFi
bGVfYXV0b19yZXNpemVfd2luZG93X3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIHJlc2l6
YWJsZSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNF
KTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0Up
OwpAQCAtMjQxOCwxNCArMjQxOCwxNCBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19lbmFi
bGVfYXV0b19yZXNpemVfd2luZG93X3NldChFdmFzX09iamVjdCogbywgRWluYV9CbwogICAgIHJl
dHVybiBFSU5BX1RSVUU7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuYWJsZV9z
Y3JpcHRzX2dldChjb25zdCBFdmFzX09iamVjdCogbykKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0
aW5nX2VuYWJsZV9zY3JpcHRzX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKIHsKICAgICBFV0tf
VklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19Q
UklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwogICAgIHJldHVybiBwcml2
LT5zZXR0aW5ncy5lbmFibGVfc2NyaXB0czsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3NldHRp
bmdfZW5hYmxlX3NjcmlwdHNfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgZW5hYmxlKQor
RWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX3NjcmlwdHNfc2V0KEV2YXNfT2JqZWN0
ICpvLCBFaW5hX0Jvb2wgZW5hYmxlKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4o
bywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwg
cHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0yNDM3LDE0ICsyNDM3LDE0IEBAIEVpbmFfQm9vbCBld2tf
dmlld19zZXR0aW5nX2VuYWJsZV9zY3JpcHRzX3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29s
IGVuYWJsZSkKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdf
c2V0dGluZ19lbmFibGVfcGx1Z2luc19nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCitFaW5hX0Jv
b2wgZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfcGx1Z2luc19nZXQoY29uc3QgRXZhc19PYmplY3Qg
Km8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7
CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsK
ICAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MuZW5hYmxlX3BsdWdpbnM7CiB9CiAKLUVpbmFfQm9v
bCBld2tfdmlld19zZXR0aW5nX2VuYWJsZV9wbHVnaW5zX3NldChFdmFzX09iamVjdCogbywgRWlu
YV9Cb29sIGVuYWJsZSkKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuYWJsZV9wbHVnaW5z
X3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGVuYWJsZSkKIHsKICAgICBFV0tfVklFV19T
RF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dF
VF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwpAQCAtMjQ2NCw3ICsyNDY0LDcgQEAg
RWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX3BsdWdpbnNfc2V0KEV2YXNfT2JqZWN0
KiBvLCBFaW5hX0Jvb2wgZW5hYmxlKQogICogQHJldHVybiBFSU5BX1RSVUUgaWYgZmxhdHRlbmlu
ZyBpcyBlbmFibGVkLCBFSU5BX0ZBTFNFCiAgKiAgICAgICAgIG90aGVyd2lzZSAoZXJyb3JzLCBm
bGF0dGVuaW5nIGRpc2FibGVkKS4KICAqLwotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5h
YmxlX2ZyYW1lX2ZsYXR0ZW5pbmdfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQorRWluYV9Cb29s
IGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmdfZ2V0KGNvbnN0IEV2YXNf
T2JqZWN0ICpvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFf
RkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9G
QUxTRSk7CkBAIC0yNDc5LDcgKzI0NzksNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19l
bmFibGVfZnJhbWVfZmxhdHRlbmluZ19nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiAgKiBAcmV0
dXJuIEVJTkFfVFJVRSBpZiBmbGF0dGVuaW5nIHN0YXR1cyBzZXQsIEVJTkFfRkFMU0UKICAqICAg
ICAgICAgb3RoZXJ3aXNlIChlcnJvcnMpLgogICovCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGlu
Z19lbmFibGVfZnJhbWVfZmxhdHRlbmluZ19zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCBl
bmFibGUpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfZnJhbWVfZmxhdHRlbmlu
Z19zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBlbmFibGUpCiB7CiAgICAgRVdLX1ZJRVdf
U0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9H
RVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKQEAgLTI0OTEsMTQgKzI0OTEsMTQg
QEAgRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmdfc2V0
KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1F
aW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19zY3JpcHRzX3dpbmRvd19vcGVuX2dldChjb25zdCBF
dmFzX09iamVjdCogbykKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3NjcmlwdHNfd2luZG93
X29wZW5fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9P
Ul9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JF
VFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CiAgICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLnNj
cmlwdHNfd2luZG93X29wZW47CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3Njcmlw
dHNfd2luZG93X29wZW5fc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgYWxsb3cpCitFaW5h
X0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19zY3JpcHRzX3dpbmRvd19vcGVuX3NldChFdmFzX09iamVj
dCAqbywgRWluYV9Cb29sIGFsbG93KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4o
bywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwg
cHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0yNTEwLDE0ICsyNTEwLDE0IEBAIEVpbmFfQm9vbCBld2tf
dmlld19zZXR0aW5nX3NjcmlwdHNfd2luZG93X29wZW5fc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5h
X0Jvb2wgYWxsCiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3
X3NldHRpbmdfcmVzaXphYmxlX3RleHRhcmVhc19nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCitF
aW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19yZXNpemFibGVfdGV4dGFyZWFzX2dldChjb25zdCBF
dmFzX09iamVjdCAqbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBF
SU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJ
TkFfRkFMU0UpOwogICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5yZXNpemFibGVfdGV4dGFyZWFz
OwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19yZXNpemFibGVfdGV4dGFyZWFzX3Nl
dChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIGVuYWJsZSkKK0VpbmFfQm9vbCBld2tfdmlld19z
ZXR0aW5nX3Jlc2l6YWJsZV90ZXh0YXJlYXNfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wg
ZW5hYmxlKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFM
U0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxT
RSk7CkBAIC0yNTI5LDE0ICsyNTI5LDE0IEBAIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3Jl
c2l6YWJsZV90ZXh0YXJlYXNfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgZW5hCiAgICAg
cmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfcHJpdmF0
ZV9icm93c2luZ19nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCitFaW5hX0Jvb2wgZXdrX3ZpZXdf
c2V0dGluZ19wcml2YXRlX2Jyb3dzaW5nX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKIHsKICAg
ICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tf
VklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwogICAgIHJldHVy
biBwcml2LT5zZXR0aW5ncy5wcml2YXRlX2Jyb3dzaW5nOwogfQogCi1FaW5hX0Jvb2wgZXdrX3Zp
ZXdfc2V0dGluZ19wcml2YXRlX2Jyb3dzaW5nX3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29s
IGVuYWJsZSkKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3ByaXZhdGVfYnJvd3Npbmdfc2V0
KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgZW5hYmxlKQogewogICAgIEVXS19WSUVXX1NEX0dF
VF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09S
X1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0yNTQ4LDE0ICsyNTQ4LDE0IEBAIEVp
bmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3ByaXZhdGVfYnJvd3Npbmdfc2V0KEV2YXNfT2JqZWN0
KiBvLCBFaW5hX0Jvb2wgZW5hYmxlCiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotRWluYV9C
b29sIGV3a192aWV3X3NldHRpbmdfb2ZmbGluZV9hcHBfY2FjaGVfZ2V0KGNvbnN0IEV2YXNfT2Jq
ZWN0KiBvKQorRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfb2ZmbGluZV9hcHBfY2FjaGVfZ2V0
KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4o
bywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwg
cHJpdiwgRUlOQV9GQUxTRSk7CiAgICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLm9mZmxpbmVfYXBw
X2NhY2hlOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19vZmZsaW5lX2FwcF9jYWNo
ZV9zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCBlbmFibGUpCitFaW5hX0Jvb2wgZXdrX3Zp
ZXdfc2V0dGluZ19vZmZsaW5lX2FwcF9jYWNoZV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9v
bCBlbmFibGUpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9G
QUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZB
TFNFKTsKQEAgLTI1NjgsMTQgKzI1NjgsMTQgQEAgRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdf
b2ZmbGluZV9hcHBfY2FjaGVfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgZW5hYmwKIH0K
IAogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19jYXJldF9icm93c2luZ19nZXQoY29uc3Qg
RXZhc19PYmplY3QqIG8pCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19jYXJldF9icm93c2lu
Z19nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JF
VFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJO
KHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKICAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MuY2FyZXRf
YnJvd3Npbmc7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2NhcmV0X2Jyb3dzaW5n
X3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIGVuYWJsZSkKK0VpbmFfQm9vbCBld2tfdmll
d19zZXR0aW5nX2NhcmV0X2Jyb3dzaW5nX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGVu
YWJsZSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNF
KTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0Up
OwpAQCAtMjU5NSw3ICsyNTk1LDcgQEAgRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfY2FyZXRf
YnJvd3Npbmdfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgZW5hYmxlKQogICogQHJldHVy
biBBIHBvaW50ZXIgdG8gYW4gZWluYV9zdHJpbnNoYXJlIGNvbnRhaW5pbmcgdGhlIGN1cnJlbnQg
Y3VzdG9tCiAgKiBlbmNvZGluZyBmb3IgVmlldyBvYmplY3QgQHBhcmFtIG8sIG9yIEBjIDAgaWYg
aXQncyBub3Qgc2V0LgogICovCi1jb25zdCBjaGFyKiBld2tfdmlld19zZXR0aW5nX2VuY29kaW5n
X2N1c3RvbV9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCitjb25zdCBjaGFyICpld2tfdmlld19z
ZXR0aW5nX2VuY29kaW5nX2N1c3RvbV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCiB7CiAgICAg
RVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgMCk7CiAgICAgRVdLX1ZJRVdfUFJJVl9H
RVRfT1JfUkVUVVJOKHNkLCBwcml2LCAwKTsKQEAgLTI2MTksNyArMjYxOSw3IEBAIGNvbnN0IGNo
YXIqIGV3a192aWV3X3NldHRpbmdfZW5jb2RpbmdfY3VzdG9tX2dldChjb25zdCBFdmFzX09iamVj
dCogbykKICAqCiAgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBAYyBFSU5BX0ZB
TFNFIG90aGVyd2lzZS4KICAqLwotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5jb2Rpbmdf
Y3VzdG9tX3NldChFdmFzX09iamVjdCogbywgY29uc3QgY2hhciAqZW5jb2RpbmcpCitFaW5hX0Jv
b2wgZXdrX3ZpZXdfc2V0dGluZ19lbmNvZGluZ19jdXN0b21fc2V0KEV2YXNfT2JqZWN0ICpvLCBj
b25zdCBjaGFyICplbmNvZGluZykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8s
IHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHBy
aXYsIEVJTkFfRkFMU0UpOwpAQCAtMjYzMiwxNCArMjYzMiwxNCBAQCBEQkcoIiVzIiwgZW5jb2Rp
bmcpOwogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLWNvbnN0IGNoYXIqIGV3a192aWV3X3Nl
dHRpbmdfZW5jb2RpbmdfZGVmYXVsdF9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCitjb25zdCBj
aGFyICpld2tfdmlld19zZXR0aW5nX2VuY29kaW5nX2RlZmF1bHRfZ2V0KGNvbnN0IEV2YXNfT2Jq
ZWN0ICpvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIDApOwogICAg
IEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgMCk7CiAgICAgcmV0dXJuIHBy
aXYtPnNldHRpbmdzLmVuY29kaW5nX2RlZmF1bHQ7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19z
ZXR0aW5nX2VuY29kaW5nX2RlZmF1bHRfc2V0KEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFyKiBl
bmNvZGluZykKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuY29kaW5nX2RlZmF1bHRfc2V0
KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICplbmNvZGluZykKIHsKICAgICBFV0tfVklFV19T
RF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dF
VF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwpAQCAtMjY1NCw3ICsyNjU0LDcgQEAg
RWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5jb2RpbmdfZGVmYXVsdF9zZXQoRXZhc19PYmpl
Y3QqIG8sIGNvbnN0IGNoYXIqIGVuY28KICAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHNldCBp
ZiBlbmNvZGluZyBkZXRlY3RvciBpcyBlbmFibGVkLgogICogQHJldHVybiBAYyBFSU5BX1RSVUUg
b24gc3VjY2VzcyBhbmQgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCiAgKi8KLUVpbmFfQm9vbCBl
d2tfdmlld19zZXR0aW5nX2VuY29kaW5nX2RldGVjdG9yX3NldChFdmFzX09iamVjdCogbywgRWlu
YV9Cb29sIGVuYWJsZSkKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuY29kaW5nX2RldGVj
dG9yX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGVuYWJsZSkKIHsKICAgICBFV0tfVklF
V19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklW
X0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwpAQCAtMjY3Miw3ICsyNjcyLDcg
QEAgRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5jb2RpbmdfZGV0ZWN0b3Jfc2V0KEV2YXNf
T2JqZWN0KiBvLCBFaW5hX0Jvb2wgZW5hYmwKICAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIGdl
dCBpZiBlbmNvZGluZyBkZXRlY3RvciBpcyBlbmFibGVkLgogICogQHJldHVybiBAYyBFSU5BX1RS
VUUgaWYgZW5jb2RpbmcgZGV0ZWN0b3IgaXMgZW5hYmxlZCwgQGMgRUlOQV9GQUxTRSBpZiBub3Qg
b3Igb24gZXJyb3JzLgogICovCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19lbmNvZGluZ19k
ZXRlY3Rvcl9nZXQoRXZhc19PYmplY3QqIG8pCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19l
bmNvZGluZ19kZXRlY3Rvcl9nZXQoRXZhc19PYmplY3QgKm8pCiB7CiAgICAgRVdLX1ZJRVdfU0Rf
R0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRf
T1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKQEAgLTI2OTAsNyArMjY5MCw3IEBAIEVp
bmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2VuY29kaW5nX2RldGVjdG9yX2dldChFdmFzX09iamVj
dCogbykKICAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIGRldmVsb3BlciBleHRlbnNpb25zIGFy
ZSBlbmFibGVkLCBAYyBFSU5BX0ZBTFNFCiAgKiAgICAgICAgIG90aGVyd2lzZS4KICAqLwotRWlu
YV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2RldmVsb3Blcl9leHRyYXNfZ2V0KEV2YXNf
T2JqZWN0KiBvKQorRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2RldmVsb3Blcl9l
eHRyYXNfZ2V0KEV2YXNfT2JqZWN0ICpvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRV
Uk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihz
ZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0yNzA4LDcgKzI3MDgsNyBAQCBFaW5hX0Jvb2wgZXdr
X3ZpZXdfc2V0dGluZ19lbmFibGVfZGV2ZWxvcGVyX2V4dHJhc19nZXQoRXZhc19PYmplY3QqIG8p
CiAgKgogICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcywgQEVJTkFfRkFMU0Ugb24g
ZmFpbHVyZS4KICAqLwotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2RldmVsb3Bl
cl9leHRyYXNfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgZW5hYmxlKQorRWluYV9Cb29s
IGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2RldmVsb3Blcl9leHRyYXNfc2V0KEV2YXNfT2JqZWN0
ICpvLCBFaW5hX0Jvb2wgZW5hYmxlKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4o
bywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwg
cHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0yNzIwLDE0ICsyNzIwLDE0IEBAIEVpbmFfQm9vbCBld2tf
dmlld19zZXR0aW5nX2VuYWJsZV9kZXZlbG9wZXJfZXh0cmFzX3NldChFdmFzX09iamVjdCogbywg
RWluYV9Cb29sCiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotaW50IGV3a192aWV3X3NldHRp
bmdfZm9udF9taW5pbXVtX3NpemVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQoraW50IGV3a192
aWV3X3NldHRpbmdfZm9udF9taW5pbXVtX3NpemVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQog
ewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIDApOwogICAgIEVXS19WSUVX
X1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgMCk7CiAgICAgcmV0dXJuIHByaXYtPnNldHRp
bmdzLmZvbnRfbWluaW11bV9zaXplOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19m
b250X21pbmltdW1fc2l6ZV9zZXQoRXZhc19PYmplY3QqIG8sIGludCBzaXplKQorRWluYV9Cb29s
IGV3a192aWV3X3NldHRpbmdfZm9udF9taW5pbXVtX3NpemVfc2V0KEV2YXNfT2JqZWN0ICpvLCBp
bnQgc2l6ZSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZB
TFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFM
U0UpOwpAQCAtMjczOCwxNCArMjczOCwxNCBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19m
b250X21pbmltdW1fc2l6ZV9zZXQoRXZhc19PYmplY3QqIG8sIGludCBzaXplKQogICAgIHJldHVy
biBFSU5BX1RSVUU7CiB9CiAKLWludCBld2tfdmlld19zZXR0aW5nX2ZvbnRfbWluaW11bV9sb2dp
Y2FsX3NpemVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQoraW50IGV3a192aWV3X3NldHRpbmdf
Zm9udF9taW5pbXVtX2xvZ2ljYWxfc2l6ZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCiB7CiAg
ICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgMCk7CiAgICAgRVdLX1ZJRVdfUFJJ
Vl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCAwKTsKICAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3Mu
Zm9udF9taW5pbXVtX2xvZ2ljYWxfc2l6ZTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3NldHRp
bmdfZm9udF9taW5pbXVtX2xvZ2ljYWxfc2l6ZV9zZXQoRXZhc19PYmplY3QqIG8sIGludCBzaXpl
KQorRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZm9udF9taW5pbXVtX2xvZ2ljYWxfc2l6ZV9z
ZXQoRXZhc19PYmplY3QgKm8sIGludCBzaXplKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9S
RVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVS
TihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0yNzU2LDE0ICsyNzU2LDE0IEBAIEVpbmFfQm9v
bCBld2tfdmlld19zZXR0aW5nX2ZvbnRfbWluaW11bV9sb2dpY2FsX3NpemVfc2V0KEV2YXNfT2Jq
ZWN0KiBvLCBpbnQgc2l6CiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIAotaW50IGV3a192aWV3
X3NldHRpbmdfZm9udF9kZWZhdWx0X3NpemVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQoraW50
IGV3a192aWV3X3NldHRpbmdfZm9udF9kZWZhdWx0X3NpemVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0
ICpvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIDApOwogICAgIEVX
S19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgMCk7CiAgICAgcmV0dXJuIHByaXYt
PnNldHRpbmdzLmZvbnRfZGVmYXVsdF9zaXplOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0
dGluZ19mb250X2RlZmF1bHRfc2l6ZV9zZXQoRXZhc19PYmplY3QqIG8sIGludCBzaXplKQorRWlu
YV9Cb29sIGV3a192aWV3X3NldHRpbmdfZm9udF9kZWZhdWx0X3NpemVfc2V0KEV2YXNfT2JqZWN0
ICpvLCBpbnQgc2l6ZSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBF
SU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJ
TkFfRkFMU0UpOwpAQCAtMjc3NCwxNCArMjc3NCwxNCBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0
dGluZ19mb250X2RlZmF1bHRfc2l6ZV9zZXQoRXZhc19PYmplY3QqIG8sIGludCBzaXplKQogICAg
IHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLWludCBld2tfdmlld19zZXR0aW5nX2ZvbnRfbW9ub3Nw
YWNlX3NpemVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQoraW50IGV3a192aWV3X3NldHRpbmdf
Zm9udF9tb25vc3BhY2Vfc2l6ZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCiB7CiAgICAgRVdL
X1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgMCk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRf
T1JfUkVUVVJOKHNkLCBwcml2LCAwKTsKICAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MuZm9udF9t
b25vc3BhY2Vfc2l6ZTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZm9udF9tb25v
c3BhY2Vfc2l6ZV9zZXQoRXZhc19PYmplY3QqIG8sIGludCBzaXplKQorRWluYV9Cb29sIGV3a192
aWV3X3NldHRpbmdfZm9udF9tb25vc3BhY2Vfc2l6ZV9zZXQoRXZhc19PYmplY3QgKm8sIGludCBz
aXplKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0Up
OwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7
CkBAIC0yNzkyLDE0ICsyNzkyLDE0IEBAIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2ZvbnRf
bW9ub3NwYWNlX3NpemVfc2V0KEV2YXNfT2JqZWN0KiBvLCBpbnQgc2l6ZSkKICAgICByZXR1cm4g
RUlOQV9UUlVFOwogfQogCi1jb25zdCBjaGFyKiBld2tfdmlld19zZXR0aW5nX2ZvbnRfc3RhbmRh
cmRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQorY29uc3QgY2hhciogZXdrX3ZpZXdfc2V0dGlu
Z19mb250X3N0YW5kYXJkX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKIHsKICAgICBFV0tfVklF
V19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAwKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9S
RVRVUk4oc2QsIHByaXYsIDApOwogICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5mb250X3N0YW5k
YXJkOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19mb250X3N0YW5kYXJkX3NldChF
dmFzX09iamVjdCogbywgY29uc3QgY2hhciogZmFtaWx5KQorRWluYV9Cb29sIGV3a192aWV3X3Nl
dHRpbmdfZm9udF9zdGFuZGFyZF9zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKmZhbWls
eSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsK
ICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwpA
QCAtMjgwOCwxNCArMjgwOCwxNCBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19mb250X3N0
YW5kYXJkX3NldChFdmFzX09iamVjdCogbywgY29uc3QgY2hhciogZmFtaWx5KQogICAgIHJldHVy
biBFSU5BX1RSVUU7CiB9CiAKLWNvbnN0IGNoYXIqIGV3a192aWV3X3NldHRpbmdfZm9udF9jdXJz
aXZlX2dldChjb25zdCBFdmFzX09iamVjdCogbykKK2NvbnN0IGNoYXIqIGV3a192aWV3X3NldHRp
bmdfZm9udF9jdXJzaXZlX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKIHsKICAgICBFV0tfVklF
V19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAwKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9S
RVRVUk4oc2QsIHByaXYsIDApOwogICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5mb250X2N1cnNp
dmU7CiB9CiAKLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2ZvbnRfY3Vyc2l2ZV9zZXQoRXZh
c19PYmplY3QqIG8sIGNvbnN0IGNoYXIqIGZhbWlseSkKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0
aW5nX2ZvbnRfY3Vyc2l2ZV9zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKmZhbWlseSkK
IHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAg
ICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwpAQCAt
MjgyNCwxNCArMjgyNCwxNCBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19mb250X2N1cnNp
dmVfc2V0KEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFyKiBmYW1pbHkpCiAgICAgcmV0dXJuIEVJ
TkFfVFJVRTsKIH0KIAotY29uc3QgY2hhciogZXdrX3ZpZXdfc2V0dGluZ19mb250X2ZhbnRhc3lf
Z2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQorY29uc3QgY2hhciogZXdrX3ZpZXdfc2V0dGluZ19m
b250X2ZhbnRhc3lfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQogewogICAgIEVXS19WSUVXX1NE
X0dFVF9PUl9SRVRVUk4obywgc2QsIDApOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVS
TihzZCwgcHJpdiwgMCk7CiAgICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLmZvbnRfZmFudGFzeTsK
IH0KIAotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZm9udF9mYW50YXN5X3NldChFdmFzX09i
amVjdCogbywgY29uc3QgY2hhciogZmFtaWx5KQorRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdf
Zm9udF9mYW50YXN5X3NldChFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqZmFtaWx5KQogewog
ICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVX
S19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0yODQw
LDE0ICsyODQwLDE0IEBAIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2ZvbnRfZmFudGFzeV9z
ZXQoRXZhc19PYmplY3QqIG8sIGNvbnN0IGNoYXIqIGZhbWlseSkKICAgICByZXR1cm4gRUlOQV9U
UlVFOwogfQogCi1jb25zdCBjaGFyKiBld2tfdmlld19zZXR0aW5nX2ZvbnRfbW9ub3NwYWNlX2dl
dChjb25zdCBFdmFzX09iamVjdCogbykKK2NvbnN0IGNoYXIgKmV3a192aWV3X3NldHRpbmdfZm9u
dF9tb25vc3BhY2VfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQogewogICAgIEVXS19WSUVXX1NE
X0dFVF9PUl9SRVRVUk4obywgc2QsIDApOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVS
TihzZCwgcHJpdiwgMCk7CiAgICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLmZvbnRfbW9ub3NwYWNl
OwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19mb250X21vbm9zcGFjZV9zZXQoRXZh
c19PYmplY3QqIG8sIGNvbnN0IGNoYXIqIGZhbWlseSkKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0
aW5nX2ZvbnRfbW9ub3NwYWNlX3NldChFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqZmFtaWx5
KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwog
ICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBA
IC0yODU2LDE0ICsyODU2LDE0IEBAIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2ZvbnRfbW9u
b3NwYWNlX3NldChFdmFzX09iamVjdCogbywgY29uc3QgY2hhciogZmFtaWx5CiAgICAgcmV0dXJu
IEVJTkFfVFJVRTsKIH0KIAotY29uc3QgY2hhciogZXdrX3ZpZXdfc2V0dGluZ19mb250X3Nlcmlm
X2dldChjb25zdCBFdmFzX09iamVjdCogbykKK2NvbnN0IGNoYXIgKmV3a192aWV3X3NldHRpbmdf
Zm9udF9zZXJpZl9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCiB7CiAgICAgRVdLX1ZJRVdfU0Rf
R0VUX09SX1JFVFVSTihvLCBzZCwgMCk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJO
KHNkLCBwcml2LCAwKTsKICAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MuZm9udF9zZXJpZjsKIH0K
IAotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZm9udF9zZXJpZl9zZXQoRXZhc19PYmplY3Qq
IG8sIGNvbnN0IGNoYXIqIGZhbWlseSkKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2ZvbnRf
c2VyaWZfc2V0KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICpmYW1pbHkpCiB7CiAgICAgRVdL
X1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdf
UFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKQEAgLTI4NzIsMTQgKzI4
NzIsMTQgQEAgRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZm9udF9zZXJpZl9zZXQoRXZhc19P
YmplY3QqIG8sIGNvbnN0IGNoYXIqIGZhbWlseSkKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQog
Ci1jb25zdCBjaGFyKiBld2tfdmlld19zZXR0aW5nX2ZvbnRfc2Fuc19zZXJpZl9nZXQoY29uc3Qg
RXZhc19PYmplY3QqIG8pCitjb25zdCBjaGFyICpld2tfdmlld19zZXR0aW5nX2ZvbnRfc2Fuc19z
ZXJpZl9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09S
X1JFVFVSTihvLCBzZCwgMCk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBw
cml2LCAwKTsKICAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MuZm9udF9zYW5zX3NlcmlmOwogfQot
ICAKLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2ZvbnRfc2Fuc19zZXJpZl9zZXQoRXZhc19P
YmplY3QqIG8sIGNvbnN0IGNoYXIqIGZhbWlseSkKKworRWluYV9Cb29sIGV3a192aWV3X3NldHRp
bmdfZm9udF9zYW5zX3NlcmlmX3NldChFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqZmFtaWx5
KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwog
ICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBA
IC0yODk0LDcgKzI4OTQsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19mb250X3NhbnNf
c2VyaWZfc2V0KEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFyKiBmYW1pbAogICogQHBhcmFtIG8g
dmlldyBvYmplY3QgdG8gZ2V0IHNwYXRpYWwgbmF2aWdhdGlvbiBzZXR0aW5nLgogICogQHJldHVy
biBAYyBFSU5BX1RSVUUgaWYgc3BhdGlhbCBuYXZpZ2F0aW9uIGlzIGVuYWJsZWQsIEBjIEVJTkFf
RkFMU0UgaWYgbm90IG9yIG9uIGVycm9ycy4KICAqLwotRWluYV9Cb29sIGV3a192aWV3X3NldHRp
bmdfc3BhdGlhbF9uYXZpZ2F0aW9uX2dldChFdmFzX09iamVjdCogbykKK0VpbmFfQm9vbCBld2tf
dmlld19zZXR0aW5nX3NwYXRpYWxfbmF2aWdhdGlvbl9nZXQoRXZhc19PYmplY3QgKm8pCiB7CiAg
ICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdL
X1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKQEAgLTI5MDcs
NyArMjkwNyw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3NwYXRpYWxfbmF2aWdhdGlv
bl9nZXQoRXZhc19PYmplY3QqIG8pCiAgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBzZXQgc3Bh
dGlhbCBuYXZpZ2F0aW9uIHNldHRpbmcuCiAgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNj
ZXNzIGFuZCBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUKICAqLwotRWluYV9Cb29sIGV3a192aWV3
X3NldHRpbmdfc3BhdGlhbF9uYXZpZ2F0aW9uX3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29s
IGVuYWJsZSkKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3NwYXRpYWxfbmF2aWdhdGlvbl9z
ZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBlbmFibGUpCiB7CiAgICAgRVdLX1ZJRVdfU0Rf
R0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRf
T1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKQEAgLTI5MjUsNyArMjkyNSw3IEBAIEVp
bmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3NwYXRpYWxfbmF2aWdhdGlvbl9zZXQoRXZhc19PYmpl
Y3QqIG8sIEVpbmFfQm9vbCBlbmFiCiAgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBnZXQgaWYg
bG9jYWwgc3RvcmFnZSBpcyBlbmFibGVkLgogICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgbG9j
YWwgc3RvcmFnZSBpcyBlbmFibGVkLCBAYyBFSU5BX0ZBTFNFIGlmIG5vdCBvciBvbiBlcnJvcnMu
CiAgKi8KLUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2xvY2FsX3N0b3JhZ2VfZ2V0KEV2YXNf
T2JqZWN0KiBvKQorRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfbG9jYWxfc3RvcmFnZV9nZXQo
RXZhc19PYmplY3QgKm8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwg
RUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBF
SU5BX0ZBTFNFKTsKQEAgLTI5MzgsNyArMjkzOCw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19zZXR0
aW5nX2xvY2FsX3N0b3JhZ2VfZ2V0KEV2YXNfT2JqZWN0KiBvKQogICogQHBhcmFtIG8gdmlldyBv
YmplY3QgdG8gc2V0IGlmIGxvY2FsIHN0b3JhZ2UgaXMgZW5hYmxlZC4KICAqIEByZXR1cm4gQGMg
RUlOQV9UUlVFIG9uIHN1Y2Nlc3MgYW5kIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQogICovCi1F
aW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19sb2NhbF9zdG9yYWdlX3NldChFdmFzX09iamVjdCog
bywgRWluYV9Cb29sIGVuYWJsZSkKK0VpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2xvY2FsX3N0
b3JhZ2Vfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgZW5hYmxlKQogewogICAgIEVXS19W
SUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVXS19WSUVXX1BS
SVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0yOTU2LDcgKzI5NTYs
NyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19sb2NhbF9zdG9yYWdlX3NldChFdmFzX09i
amVjdCogbywgRWluYV9Cb29sIGVuYWJsZSkKICAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHNl
dCBpZiBwYWdlIGNhY2hlIGlzIGVuYWJsZWQuCiAgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiBw
YWdlIGNhY2hlIGlzIGVuYWJsZWQsIEBjIEVJTkFfRkFMU0UgaWYgbm90LgogICovCi1FaW5hX0Jv
b2wgZXdrX3ZpZXdfc2V0dGluZ19wYWdlX2NhY2hlX2dldChFdmFzX09iamVjdCogbykKK0VpbmFf
Qm9vbCBld2tfdmlld19zZXR0aW5nX3BhZ2VfY2FjaGVfZ2V0KEV2YXNfT2JqZWN0ICpvKQogewog
ICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVX
S19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7CkBAIC0yOTY5
LDcgKzI5NjksNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19wYWdlX2NhY2hlX2dldChF
dmFzX09iamVjdCogbykKICAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHNldCBpZiBwYWdlIGNh
Y2hlIGlzIGVuYWJsZWQuCiAgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIGFuZCBA
YyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUKICAqLwotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdf
cGFnZV9jYWNoZV9zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCBlbmFibGUpCitFaW5hX0Jv
b2wgZXdrX3ZpZXdfc2V0dGluZ19wYWdlX2NhY2hlX3NldChFdmFzX09iamVjdCAqbywgRWluYV9C
b29sIGVuYWJsZSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5B
X0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFf
RkFMU0UpOwpAQCAtMjk4Nyw3ICsyOTg3LDcgQEAgRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdf
cGFnZV9jYWNoZV9zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCBlbmFibGUpCiAgKiBAcGFy
YW0gbyB2aWV3IG9iamVjdCB0byBnZXQgdGhlIGxvY2FsIHN0b3JhZ2UgZGF0YWJhc2UgcGF0aC4K
ICAqIEByZXR1cm4gdGhlIGxvY2FsIHN0b3JhZ2UgZGF0YWJhc2UgcGF0aC4KICAqLwotY29uc3Qg
Y2hhciogZXdrX3ZpZXdfc2V0dGluZ19sb2NhbF9zdG9yYWdlX2RhdGFiYXNlX3BhdGhfZ2V0KGNv
bnN0IEV2YXNfT2JqZWN0KiBvKQorY29uc3QgY2hhciogZXdrX3ZpZXdfc2V0dGluZ19sb2NhbF9z
dG9yYWdlX2RhdGFiYXNlX3BhdGhfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQogewogICAgIEVX
S19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIDApOwogICAgIEVXS19WSUVXX1BSSVZfR0VU
X09SX1JFVFVSTihzZCwgcHJpdiwgMCk7CkBAIC0zMDAwLDcgKzMwMDAsNyBAQCBjb25zdCBjaGFy
KiBld2tfdmlld19zZXR0aW5nX2xvY2FsX3N0b3JhZ2VfZGF0YWJhc2VfcGF0aF9nZXQoY29uc3Qg
RXZhc19PYmplY3QqCiAgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBzZXQgdGhlIGxvY2FsIHN0
b3JhZ2UgZGF0YWJhc2UgcGF0aC4KICAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mg
YW5kIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQogICovCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0
dGluZ19sb2NhbF9zdG9yYWdlX2RhdGFiYXNlX3BhdGhfc2V0KEV2YXNfT2JqZWN0KiBvLCBjb25z
dCBjaGFyKiBwYXRoKQorRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfbG9jYWxfc3RvcmFnZV9k
YXRhYmFzZV9wYXRoX3NldChFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqcGF0aCkKIHsKICAg
ICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFV0tf
VklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwpAQCAtMzAxNSw3
ICszMDE1LDcgQEAgRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfbG9jYWxfc3RvcmFnZV9kYXRh
YmFzZV9wYXRoX3NldChFdmFzX09iamVjdCogbywgY29uc3QKICAqIEBwYXJhbSBvIHZpZXcgb2Jq
ZWN0IHRvIHF1ZXJ5IGludGVybmFsIGRhdGEuCiAgKiBAcmV0dXJuIGludGVybmFsIGRhdGEgb3Ig
QGMgMCBvbiBlcnJvcnMgKGllOiBpbmNvcnJlY3QgdHlwZSBvZiBAYSBvKS4KICAqLwotRXdrX1Zp
ZXdfU21hcnRfRGF0YSogZXdrX3ZpZXdfc21hcnRfZGF0YV9nZXQoY29uc3QgRXZhc19PYmplY3Qq
IG8pCitFd2tfVmlld19TbWFydF9EYXRhICpld2tfdmlld19zbWFydF9kYXRhX2dldChjb25zdCBF
dmFzX09iamVjdCAqbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAw
KTsKICAgICByZXR1cm4gc2Q7CkBAIC0zMDM4LDcgKzMwMzgsNyBAQCBFd2tfVmlld19TbWFydF9E
YXRhKiBld2tfdmlld19zbWFydF9kYXRhX2dldChjb25zdCBFdmFzX09iamVjdCogbykKICAqIEBu
b3RlIHRoaXMgaXMgbm90IGZvciBnZW5lcmFsIHVzZSBidXQganVzdCBmb3Igc3ViY2xhc3NlcyB0
aGF0IHdhbnQKICAqICAgICAgIHRvIGRlZmluZSB0aGVpciBvd24gYmFja2luZyBzdG9yZS4KICAq
LwotY29uc3QgRWluYV9SZWN0YW5nbGUqIGV3a192aWV3X3JlcGFpbnRzX2dldChjb25zdCBFd2tf
Vmlld19Qcml2YXRlX0RhdGEqIHByaXYsIHNpemVfdCogY291bnQpCitjb25zdCBFaW5hX1JlY3Rh
bmdsZSAqZXdrX3ZpZXdfcmVwYWludHNfZ2V0KGNvbnN0IEV3a19WaWV3X1ByaXZhdGVfRGF0YSAq
cHJpdiwgc2l6ZV90ICpjb3VudCkKIHsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9W
QUwoY291bnQsIDApOwogICAgIGlmIChjb3VudCkKQEAgLTMwNjYsNyArMzA2Niw3IEBAIGNvbnN0
IEVpbmFfUmVjdGFuZ2xlKiBld2tfdmlld19yZXBhaW50c19nZXQoY29uc3QgRXdrX1ZpZXdfUHJp
dmF0ZV9EYXRhKiBwcml2LCBzCiAgKiBAbm90ZSB0aGlzIGlzIG5vdCBmb3IgZ2VuZXJhbCB1c2Ug
YnV0IGp1c3QgZm9yIHN1YmNsYXNzZXMgdGhhdCB3YW50CiAgKiAgICAgICB0byBkZWZpbmUgdGhl
aXIgb3duIGJhY2tpbmcgc3RvcmUuCiAgKi8KLWNvbnN0IEV3a19TY3JvbGxfUmVxdWVzdCogZXdr
X3ZpZXdfc2Nyb2xsX3JlcXVlc3RzX2dldChjb25zdCBFd2tfVmlld19Qcml2YXRlX0RhdGEqIHBy
aXYsIHNpemVfdCogY291bnQpCitjb25zdCBFd2tfU2Nyb2xsX1JlcXVlc3QgKmV3a192aWV3X3Nj
cm9sbF9yZXF1ZXN0c19nZXQoY29uc3QgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpwcml2LCBzaXpl
X3QgKmNvdW50KQogewogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChjb3VudCwg
MCk7CiAgICAgaWYgKGNvdW50KQpAQCAtMzA5MSw3ICszMDkxLDcgQEAgY29uc3QgRXdrX1Njcm9s
bF9SZXF1ZXN0KiBld2tfdmlld19zY3JvbGxfcmVxdWVzdHNfZ2V0KGNvbnN0IEV3a19WaWV3X1By
aXZhdGVfRGEKICAqIEBub3RlIHRoaXMgaXMgbm90IGZvciBnZW5lcmFsIHVzZSBidXQganVzdCBm
b3Igc3ViY2xhc3NlcyB0aGF0IHdhbnQKICAqICAgICAgIHRvIGRlZmluZSB0aGVpciBvd24gYmFj
a2luZyBzdG9yZS4KICAqLwotdm9pZCBld2tfdmlld19yZXBhaW50X2FkZChFd2tfVmlld19Qcml2
YXRlX0RhdGEqIHByaXYsIEV2YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5LCBFdmFzX0Nvb3JkIHcs
IEV2YXNfQ29vcmQgaCkKK3ZvaWQgZXdrX3ZpZXdfcmVwYWludF9hZGQoRXdrX1ZpZXdfUHJpdmF0
ZV9EYXRhICpwcml2LCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwgRXZhc19Db29yZCB3LCBF
dmFzX0Nvb3JkIGgpCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4ocHJpdik7CiAg
ICAgX2V3a192aWV3X3JlcGFpbnRfYWRkKHByaXYsIHgsIHksIHcsIGgpOwpAQCAtMzEwNSwxMSAr
MzEwNSwxMSBAQCB2b2lkIGV3a192aWV3X3JlcGFpbnRfYWRkKEV3a19WaWV3X1ByaXZhdGVfRGF0
YSogcHJpdiwgRXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkCiAgKiBAbm90ZSB0aGlzIGlzIG5vdCBm
b3IgZ2VuZXJhbCB1c2UgYnV0IGp1c3QgZm9yIHN1YmNsYXNzZXMgdGhhdCB3YW50CiAgKiAgICAg
ICB0byBkZWZpbmUgdGhlaXIgb3duIGJhY2tpbmcgc3RvcmUuCiAgKi8KLXZvaWQgZXdrX3ZpZXdf
bGF5b3V0X2lmX25lZWRlZF9yZWN1cnNpdmUoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2KQor
dm9pZCBld2tfdmlld19sYXlvdXRfaWZfbmVlZGVkX3JlY3Vyc2l2ZShFd2tfVmlld19Qcml2YXRl
X0RhdGEgKnByaXYpCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4ocHJpdik7CiAK
LSAgICBXZWJDb3JlOjpGcmFtZVZpZXcqIHYgPSBwcml2LT5tYWluX2ZyYW1lLT52aWV3KCk7Cisg
ICAgV2ViQ29yZTo6RnJhbWVWaWV3ICp2ID0gcHJpdi0+bWFpbl9mcmFtZS0+dmlldygpOwogICAg
IGlmICghdikgewogICAgICAgICBFUlIoIm5vIG1haW4gZnJhbWUgdmlldyIpOwogICAgICAgICBy
ZXR1cm47CkBAIC0zMTE3LDcgKzMxMTcsNyBAQCB2b2lkIGV3a192aWV3X2xheW91dF9pZl9uZWVk
ZWRfcmVjdXJzaXZlKEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdikKICAgICB2LT51cGRhdGVM
YXlvdXRBbmRTdHlsZUlmTmVlZGVkUmVjdXJzaXZlKCk7CiB9CiAKLXZvaWQgZXdrX3ZpZXdfc2Ny
b2xsc19wcm9jZXNzKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkKQordm9pZCBld2tfdmlld19zY3Jv
bGxzX3Byb2Nlc3MoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpCiB7CiAgICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk4oc2QpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwg
cHJpdik7CkBAIC0zMTI3LDkgKzMxMjcsOSBAQCB2b2lkIGV3a192aWV3X3Njcm9sbHNfcHJvY2Vz
cyhFd2tfVmlld19TbWFydF9EYXRhKiBzZCkKIH0KIAogc3RydWN0IF9Fd2tfVmlld19QYWludF9D
b250ZXh0IHsKLSAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQqIGdjOwotICAgIFdlYkNvcmU6
OkZyYW1lVmlldyogdmlldzsKLSAgICBjYWlyb190KiBjcjsKKyAgICBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQgKmdjOworICAgIFdlYkNvcmU6OkZyYW1lVmlldyAqdmlldzsKKyAgICBjYWlyb190
ICpjcjsKIH07CiAKIC8qKgpAQCAtMzE0NSwxNCArMzE0NSwxNCBAQCBzdHJ1Y3QgX0V3a19WaWV3
X1BhaW50X0NvbnRleHQgewogICogQG5vdGUgdGhpcyBpcyBub3QgZm9yIGdlbmVyYWwgdXNlIGJ1
dCBqdXN0IGZvciBzdWJjbGFzc2VzIHRoYXQgd2FudAogICogICAgICAgdG8gZGVmaW5lIHRoZWly
IG93biBiYWNraW5nIHN0b3JlLgogICovCi1Fd2tfVmlld19QYWludF9Db250ZXh0KiBld2tfdmll
d19wYWludF9jb250ZXh0X25ldyhFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYsIGNhaXJvX3Qq
IGNyKQorRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCAqZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9uZXco
RXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpwcml2LCBjYWlyb190ICpjcikKIHsKICAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwocHJpdiwgMCk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk5fVkFMKGNyLCAwKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwo
cHJpdi0+bWFpbl9mcmFtZSwgMCk7Ci0gICAgV2ViQ29yZTo6RnJhbWVWaWV3KiB2aWV3ID0gcHJp
di0+bWFpbl9mcmFtZS0+dmlldygpOworICAgIFdlYkNvcmU6OkZyYW1lVmlldyAqdmlldyA9IHBy
aXYtPm1haW5fZnJhbWUtPnZpZXcoKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9W
QUwodmlldywgMCk7Ci0gICAgRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCogY3R4dCA9IChFd2tfVmll
d19QYWludF9Db250ZXh0KiltYWxsb2Moc2l6ZW9mKCpjdHh0KSk7CisgICAgRXdrX1ZpZXdfUGFp
bnRfQ29udGV4dCAqY3R4dCA9IChFd2tfVmlld19QYWludF9Db250ZXh0ICopbWFsbG9jKHNpemVv
ZigqY3R4dCkpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChjdHh0LCAwKTsK
IAogICAgIGN0eHQtPmdjID0gbmV3IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dChjcik7CkBAIC0z
MTczLDcgKzMxNzMsNyBAQCBFd2tfVmlld19QYWludF9Db250ZXh0KiBld2tfdmlld19wYWludF9j
b250ZXh0X25ldyhFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYsCiAgKiBAbm90ZSB0aGlzIGlz
IG5vdCBmb3IgZ2VuZXJhbCB1c2UgYnV0IGp1c3QgZm9yIHN1YmNsYXNzZXMgdGhhdCB3YW50CiAg
KiAgICAgICB0byBkZWZpbmUgdGhlaXIgb3duIGJhY2tpbmcgc3RvcmUuCiAgKi8KLXZvaWQgZXdr
X3ZpZXdfcGFpbnRfY29udGV4dF9mcmVlKEV3a19WaWV3X1BhaW50X0NvbnRleHQqIGN0eHQpCit2
b2lkIGV3a192aWV3X3BhaW50X2NvbnRleHRfZnJlZShFd2tfVmlld19QYWludF9Db250ZXh0ICpj
dHh0KQogewogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGN0eHQpOwogICAgIGRlbGV0
ZSBjdHh0LT5nYzsKQEAgLTMxOTEsNyArMzE5MSw3IEBAIHZvaWQgZXdrX3ZpZXdfcGFpbnRfY29u
dGV4dF9mcmVlKEV3a19WaWV3X1BhaW50X0NvbnRleHQqIGN0eHQpCiAgKiBAbm90ZSB0aGlzIGlz
IG5vdCBmb3IgZ2VuZXJhbCB1c2UgYnV0IGp1c3QgZm9yIHN1YmNsYXNzZXMgdGhhdCB3YW50CiAg
KiAgICAgICB0byBkZWZpbmUgdGhlaXIgb3duIGJhY2tpbmcgc3RvcmUuCiAgKi8KLXZvaWQgZXdr
X3ZpZXdfcGFpbnRfY29udGV4dF9zYXZlKEV3a19WaWV3X1BhaW50X0NvbnRleHQqIGN0eHQpCit2
b2lkIGV3a192aWV3X3BhaW50X2NvbnRleHRfc2F2ZShFd2tfVmlld19QYWludF9Db250ZXh0ICpj
dHh0KQogewogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGN0eHQpOwogICAgIGNhaXJv
X3NhdmUoY3R4dC0+Y3IpOwpAQCAtMzIwOCw3ICszMjA4LDcgQEAgdm9pZCBld2tfdmlld19wYWlu
dF9jb250ZXh0X3NhdmUoRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCogY3R4dCkKICAqIEBub3RlIHRo
aXMgaXMgbm90IGZvciBnZW5lcmFsIHVzZSBidXQganVzdCBmb3Igc3ViY2xhc3NlcyB0aGF0IHdh
bnQKICAqICAgICAgIHRvIGRlZmluZSB0aGVpciBvd24gYmFja2luZyBzdG9yZS4KICAqLwotdm9p
ZCBld2tfdmlld19wYWludF9jb250ZXh0X3Jlc3RvcmUoRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCog
Y3R4dCkKK3ZvaWQgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9yZXN0b3JlKEV3a19WaWV3X1BhaW50
X0NvbnRleHQgKmN0eHQpCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oY3R4dCk7
CiAgICAgY3R4dC0+Z2MtPnJlc3RvcmUoKTsKQEAgLTMyMjcsNyArMzIyNyw3IEBAIHZvaWQgZXdr
X3ZpZXdfcGFpbnRfY29udGV4dF9yZXN0b3JlKEV3a19WaWV3X1BhaW50X0NvbnRleHQqIGN0eHQp
CiAgKiBAbm90ZSB0aGlzIGlzIG5vdCBmb3IgZ2VuZXJhbCB1c2UgYnV0IGp1c3QgZm9yIHN1YmNs
YXNzZXMgdGhhdCB3YW50CiAgKiAgICAgICB0byBkZWZpbmUgdGhlaXIgb3duIGJhY2tpbmcgc3Rv
cmUuCiAgKi8KLXZvaWQgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9jbGlwKEV3a19WaWV3X1BhaW50
X0NvbnRleHQqIGN0eHQsIGNvbnN0IEVpbmFfUmVjdGFuZ2xlKiBhcmVhKQordm9pZCBld2tfdmll
d19wYWludF9jb250ZXh0X2NsaXAoRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCAqY3R4dCwgY29uc3Qg
RWluYV9SZWN0YW5nbGUgKmFyZWEpCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4o
Y3R4dCk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oYXJlYSk7CkBAIC0zMjUwLDcg
KzMyNTAsNyBAQCB2b2lkIGV3a192aWV3X3BhaW50X2NvbnRleHRfY2xpcChFd2tfVmlld19QYWlu
dF9Db250ZXh0KiBjdHh0LCBjb25zdCBFaW5hX1JlY3RhbgogICogQG5vdGUgdGhpcyBpcyBub3Qg
Zm9yIGdlbmVyYWwgdXNlIGJ1dCBqdXN0IGZvciBzdWJjbGFzc2VzIHRoYXQgd2FudAogICogICAg
ICAgdG8gZGVmaW5lIHRoZWlyIG93biBiYWNraW5nIHN0b3JlLgogICovCi12b2lkIGV3a192aWV3
X3BhaW50X2NvbnRleHRfcGFpbnQoRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCogY3R4dCwgY29uc3Qg
RWluYV9SZWN0YW5nbGUqIGFyZWEpCit2b2lkIGV3a192aWV3X3BhaW50X2NvbnRleHRfcGFpbnQo
RXdrX1ZpZXdfUGFpbnRfQ29udGV4dCAqY3R4dCwgY29uc3QgRWluYV9SZWN0YW5nbGUgKmFyZWEp
CiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oY3R4dCk7CiAgICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk4oYXJlYSk7CkBAIC0zMjgyLDcgKzMyODIsNyBAQCB2b2lkIGV3a192
aWV3X3BhaW50X2NvbnRleHRfcGFpbnQoRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCogY3R4dCwgY29u
c3QgRWluYV9SZWN0YQogICogQG5vdGUgdGhpcyBpcyBub3QgZm9yIGdlbmVyYWwgdXNlIGJ1dCBq
dXN0IGZvciBzdWJjbGFzc2VzIHRoYXQgd2FudAogICogICAgICAgdG8gZGVmaW5lIHRoZWlyIG93
biBiYWNraW5nIHN0b3JlLgogICovCi12b2lkIGV3a192aWV3X3BhaW50X2NvbnRleHRfcGFpbnRf
Y29udGVudHMoRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCogY3R4dCwgY29uc3QgRWluYV9SZWN0YW5n
bGUqIGFyZWEpCit2b2lkIGV3a192aWV3X3BhaW50X2NvbnRleHRfcGFpbnRfY29udGVudHMoRXdr
X1ZpZXdfUGFpbnRfQ29udGV4dCAqY3R4dCwgY29uc3QgRWluYV9SZWN0YW5nbGUgKmFyZWEpCiB7
CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oY3R4dCk7CiAgICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk4oYXJlYSk7CkBAIC0zMzA0LDcgKzMzMDQsNyBAQCB2b2lkIGV3a192aWV3
X3BhaW50X2NvbnRleHRfcGFpbnRfY29udGVudHMoRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCogY3R4
dCwgY29uc3QgRQogICogQHBhcmFtIHNjYWxlX3ggc2NhbGUgZmFjdG9yIGZvciB0aGUgWCBkaW1l
bnNpb24uCiAgKiBAcGFyYW0gc2NhbGVfeSBzY2FsZSBmYWN0b3IgZm9yIHRoZSBZIGRpbWVuc2lv
bi4KICAqLwotdm9pZCBld2tfdmlld19wYWludF9jb250ZXh0X3NjYWxlKEV3a19WaWV3X1BhaW50
X0NvbnRleHQqIGN0eHQsIGZsb2F0IHNjYWxlX3gsIGZsb2F0IHNjYWxlX3kpCit2b2lkIGV3a192
aWV3X3BhaW50X2NvbnRleHRfc2NhbGUoRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCAqY3R4dCwgZmxv
YXQgc2NhbGVfeCwgZmxvYXQgc2NhbGVfeSkKIHsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JF
VFVSTihjdHh0KTsKIApAQCAtMzMyMCw3ICszMzIwLDcgQEAgdm9pZCBld2tfdmlld19wYWludF9j
b250ZXh0X3NjYWxlKEV3a19WaWV3X1BhaW50X0NvbnRleHQqIGN0eHQsIGZsb2F0IHNjYWxlX3gs
IGYKICAqIEBwYXJhbSB4ICAgIGFtb3VudCBvZiBwaXhlbHMgdG8gdHJhbnNsYXRlIGluIHRoZSBY
IGRpbWVuc2lvbi4KICAqIEBwYXJhbSB5ICAgIGFtb3VudCBvZiBwaXhlbHMgdG8gdHJhbnNsYXRl
IGluIHRoZSBZIGRpbWVuc2lvbi4KICAqLwotdm9pZCBld2tfdmlld19wYWludF9jb250ZXh0X3Ry
YW5zbGF0ZShFd2tfVmlld19QYWludF9Db250ZXh0KiBjdHh0LCBmbG9hdCB4LCBmbG9hdCB5KQor
dm9pZCBld2tfdmlld19wYWludF9jb250ZXh0X3RyYW5zbGF0ZShFd2tfVmlld19QYWludF9Db250
ZXh0ICpjdHh0LCBmbG9hdCB4LCBmbG9hdCB5KQogewogICAgIEVJTkFfU0FGRVRZX09OX05VTExf
UkVUVVJOKGN0eHQpOwogCkBAIC0zMzU0LDcgKzMzNTQsNyBAQCB2b2lkIGV3a192aWV3X3BhaW50
X2NvbnRleHRfdHJhbnNsYXRlKEV3a19WaWV3X1BhaW50X0NvbnRleHQqIGN0eHQsIGZsb2F0IHgs
IGZsbwogICogQG5vdGUgdGhpcyBpcyBub3QgZm9yIGdlbmVyYWwgdXNlIGJ1dCBqdXN0IGZvciBz
dWJjbGFzc2VzIHRoYXQgd2FudAogICogICAgICAgdG8gZGVmaW5lIHRoZWlyIG93biBiYWNraW5n
IHN0b3JlLgogICovCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfcGFpbnQoRXdrX1ZpZXdfUHJpdmF0ZV9E
YXRhKiBwcml2LCBjYWlyb190KiBjciwgY29uc3QgRWluYV9SZWN0YW5nbGUqIGFyZWEpCitFaW5h
X0Jvb2wgZXdrX3ZpZXdfcGFpbnQoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpwcml2LCBjYWlyb190
ICpjciwgY29uc3QgRWluYV9SZWN0YW5nbGUgKmFyZWEpCiB7CiAgICAgRUlOQV9TQUZFVFlfT05f
TlVMTF9SRVRVUk5fVkFMKHByaXYsIEVJTkFfRkFMU0UpOwogICAgIEVJTkFfU0FGRVRZX09OX05V
TExfUkVUVVJOX1ZBTChjciwgRUlOQV9GQUxTRSk7CkBAIC0zMzcyLDcgKzMzNzIsNyBAQCBFaW5h
X0Jvb2wgZXdrX3ZpZXdfcGFpbnQoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2LCBjYWlyb190
KiBjciwgY29uc3QgRWluYV9SZQogICAgIGdjLmNsaXAocmVjdCk7CiAgICAgaWYgKHZpZXctPmlz
VHJhbnNwYXJlbnQoKSkKICAgICAgICAgZ2MuY2xlYXJSZWN0KHJlY3QpOwotICAgIHZpZXctPnBh
aW50KCZnYywgIHJlY3QpOworICAgIHZpZXctPnBhaW50KCZnYywgcmVjdCk7CiAgICAgZ2MucmVz
dG9yZSgpOwogICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwogCkBAIC0zNDA2LDcgKzM0MDYsNyBAQCBF
aW5hX0Jvb2wgZXdrX3ZpZXdfcGFpbnQoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2LCBjYWly
b190KiBjciwgY29uc3QgRWluYV9SZQogICogQG5vdGUgdGhpcyBpcyBub3QgZm9yIGdlbmVyYWwg
dXNlIGJ1dCBqdXN0IGZvciBzdWJjbGFzc2VzIHRoYXQgd2FudAogICogICAgICAgdG8gZGVmaW5l
IHRoZWlyIG93biBiYWNraW5nIHN0b3JlLgogICovCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfcGFpbnRf
Y29udGVudHMoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2LCBjYWlyb190KiBjciwgY29uc3Qg
RWluYV9SZWN0YW5nbGUqIGFyZWEpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfcGFpbnRfY29udGVudHMo
RXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpwcml2LCBjYWlyb190ICpjciwgY29uc3QgRWluYV9SZWN0
YW5nbGUgKmFyZWEpCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHByaXYs
IEVJTkFfRkFMU0UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChjciwgRUlO
QV9GQUxTRSk7CkBAIC0zNDM3LDcgKzM0MzcsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfcGFpbnRf
Y29udGVudHMoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2LCBjYWlyb190KiBjciwgY29ucwog
ICoKICAqIEVtaXRzIHNpZ25hbDogInJlYWR5IiB3aXRoIG5vIHBhcmFtZXRlcnMuCiAgKi8KLXZv
aWQgZXdrX3ZpZXdfcmVhZHkoRXZhc19PYmplY3QqIG8pCit2b2lkIGV3a192aWV3X3JlYWR5KEV2
YXNfT2JqZWN0ICpvKQogewogICAgIERCRygibz0lcCIsIG8pOwogICAgIGV2YXNfb2JqZWN0X3Nt
YXJ0X2NhbGxiYWNrX2NhbGwobywgInJlYWR5IiwgMCk7CkBAIC0zNDUxLDcgKzM0NTEsNyBAQCB2
b2lkIGV3a192aWV3X3JlYWR5KEV2YXNfT2JqZWN0KiBvKQogICogRW1pdHMgc2lnbmFsOiAiaW5w
dXRtZXRob2QsY2hhbmdlZCIgd2l0aCBhIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIGl0J3MK
ICAqIGVuYWJsZWQgb3Igbm90LgogICovCi12b2lkIGV3a192aWV3X2lucHV0X21ldGhvZF9zdGF0
ZV9zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCBhY3RpdmUpCit2b2lkIGV3a192aWV3X2lu
cHV0X21ldGhvZF9zdGF0ZV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBhY3RpdmUpCiB7
CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCk7CiAgICAgRVdLX1ZJRVdfUFJJ
Vl9HRVQoc2QsIHByaXYpOwpAQCAtMzQ4MCw3ICszNDgwLDcgQEAgdm9pZCBld2tfdmlld19pbnB1
dF9tZXRob2Rfc3RhdGVfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgYWN0aXZlKQogICAg
ICAgICB9CiAgICAgfQogCi0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAi
aW5wdXRtZXRob2QsY2hhbmdlZCIsICh2b2lkKilhY3RpdmUpOworICAgIGV2YXNfb2JqZWN0X3Nt
YXJ0X2NhbGxiYWNrX2NhbGwobywgImlucHV0bWV0aG9kLGNoYW5nZWQiLCAodm9pZCAqKWFjdGl2
ZSk7CiB9CiAKIC8qKgpAQCAtMzQ4OSwxMCArMzQ4OSwxMCBAQCB2b2lkIGV3a192aWV3X2lucHV0
X21ldGhvZF9zdGF0ZV9zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCBhY3RpdmUpCiAgKgog
ICogRW1pdHMgc2lnbmFsOiAidGl0bGUsY2hhbmdlZCIgd2l0aCBwb2ludGVyIHRvIG5ldyB0aXRs
ZSBzdHJpbmcuCiAgKi8KLXZvaWQgZXdrX3ZpZXdfdGl0bGVfc2V0KEV2YXNfT2JqZWN0KiBvLCBj
b25zdCBjaGFyKiB0aXRsZSkKK3ZvaWQgZXdrX3ZpZXdfdGl0bGVfc2V0KEV2YXNfT2JqZWN0ICpv
LCBjb25zdCBjaGFyICp0aXRsZSkKIHsKICAgICBEQkcoIm89JXAsIHRpdGxlPSVzIiwgbywgdGl0
bGUgPyB0aXRsZSA6ICIobnVsbCkiKTsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19j
YWxsKG8sICJ0aXRsZSxjaGFuZ2VkIiwgKHZvaWQqKXRpdGxlKTsKKyAgICBldmFzX29iamVjdF9z
bWFydF9jYWxsYmFja19jYWxsKG8sICJ0aXRsZSxjaGFuZ2VkIiwgKHZvaWQgKil0aXRsZSk7CiB9
CiAKIC8qKgpAQCAtMzUwMSwxMiArMzUwMSwxMiBAQCB2b2lkIGV3a192aWV3X3RpdGxlX3NldChF
dmFzX09iamVjdCogbywgY29uc3QgY2hhciogdGl0bGUpCiAgKgogICogRW1pdHMgc2lnbmFsOiAi
dXJpLGNoYW5nZWQiIHdpdGggcG9pbnRlciB0byB0aGUgbmV3IHVyaSBzdHJpbmcuCiAgKi8KLXZv
aWQgZXdrX3ZpZXdfdXJpX2NoYW5nZWQoRXZhc19PYmplY3QqIG8pCit2b2lkIGV3a192aWV3X3Vy
aV9jaGFuZ2VkKEV2YXNfT2JqZWN0ICpvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRV
Uk4obywgc2QpOwotICAgIGNvbnN0IGNoYXIqIHVyaSA9IGV3a19mcmFtZV91cmlfZ2V0KHNkLT5t
YWluX2ZyYW1lKTsKKyAgICBjb25zdCBjaGFyICp1cmkgPSBld2tfZnJhbWVfdXJpX2dldChzZC0+
bWFpbl9mcmFtZSk7CiAgICAgREJHKCJvPSVwLCB1cmk9JXMiLCBvLCB1cmkgPyB1cmkgOiAiKG51
bGwpIik7Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAidXJpLGNoYW5n
ZWQiLCAodm9pZCopdXJpKTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG8s
ICJ1cmksY2hhbmdlZCIsICh2b2lkICopdXJpKTsKIH0KIAogLyoqCkBAIC0zNTE3LDcgKzM1MTcs
NyBAQCB2b2lkIGV3a192aWV3X3VyaV9jaGFuZ2VkKEV2YXNfT2JqZWN0KiBvKQogICoKICAqIEVt
aXRzIHNpZ25hbDogImxvYWQsc3RhcnRlZCIgd2l0aCBubyBwYXJhbWV0ZXJzLgogICovCi12b2lk
IGV3a192aWV3X2xvYWRfc3RhcnRlZChFdmFzX09iamVjdCogbykKK3ZvaWQgZXdrX3ZpZXdfbG9h
ZF9zdGFydGVkKEV2YXNfT2JqZWN0ICpvKQogewogICAgIERCRygibz0lcCIsIG8pOwogICAgIGV2
YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobywgImxvYWQsc3RhcnRlZCIsIDApOwpAQCAt
MzUzMCwxMCArMzUzMCwxMCBAQCB2b2lkIGV3a192aWV3X2xvYWRfc3RhcnRlZChFdmFzX09iamVj
dCogbykKICAqCiAgKiBFbWl0cyBzaWduYWw6ICJsb2FkLHN0YXJ0ZWQiIG9uIG1haW4gZnJhbWUg
d2l0aCBubyBwYXJhbWV0ZXJzLgogICovCi12b2lkIGV3a192aWV3X2ZyYW1lX21haW5fbG9hZF9z
dGFydGVkKEV2YXNfT2JqZWN0KiBvKQordm9pZCBld2tfdmlld19mcmFtZV9tYWluX2xvYWRfc3Rh
cnRlZChFdmFzX09iamVjdCAqbykKIHsKICAgICBEQkcoIm89JXAiLCBvKTsKLSAgICBFdmFzX09i
amVjdCogZnJhbWUgPSBld2tfdmlld19mcmFtZV9tYWluX2dldChvKTsKKyAgICBFdmFzX09iamVj
dCAqZnJhbWUgPSBld2tfdmlld19mcmFtZV9tYWluX2dldChvKTsKICAgICBldmFzX29iamVjdF9z
bWFydF9jYWxsYmFja19jYWxsKGZyYW1lLCAibG9hZCxzdGFydGVkIiwgMCk7CiB9CiAKQEAgLTM1
NDUsNyArMzU0NSw3IEBAIHZvaWQgZXdrX3ZpZXdfZnJhbWVfbWFpbl9sb2FkX3N0YXJ0ZWQoRXZh
c19PYmplY3QqIG8pCiAgKgogICogRW1pdHMgc2lnbmFsOiAibG9hZCxwcm92aXNpb25hbCIgb24g
VmlldyB3aXRoIG5vIHBhcmFtZXRlcnMuCiAgKi8KLXZvaWQgZXdrX3ZpZXdfbG9hZF9wcm92aXNp
b25hbChFdmFzX09iamVjdCogbykKK3ZvaWQgZXdrX3ZpZXdfbG9hZF9wcm92aXNpb25hbChFdmFz
X09iamVjdCAqbykKIHsKICAgICBEQkcoIm89JXAiLCBvKTsKICAgICBldmFzX29iamVjdF9zbWFy
dF9jYWxsYmFja19jYWxsKG8sICJsb2FkLHByb3Zpc2lvbmFsIiwgMCk7CkBAIC0zNTU5LDcgKzM1
NTksNyBAQCB2b2lkIGV3a192aWV3X2xvYWRfcHJvdmlzaW9uYWwoRXZhc19PYmplY3QqIG8pCiAg
KgogICogRW1pdHMgc2lnbmFsOiAibG9hZCxuZXd3aW5kb3csc2hvdyIgb24gdmlldyB3aXRoIG5v
IHBhcmFtZXRlcnMuCiAgKi8KLXZvaWQgZXdrX3ZpZXdfbG9hZF9zaG93KEV2YXNfT2JqZWN0KiBv
KQordm9pZCBld2tfdmlld19sb2FkX3Nob3coRXZhc19PYmplY3QgKm8pCiB7CiAgICAgREJHKCJv
PSVwIiwgbyk7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAibG9hZCxu
ZXd3aW5kb3csc2hvdyIsIDApOwpAQCAtMzU3Miw3ICszNTcyLDcgQEAgdm9pZCBld2tfdmlld19s
b2FkX3Nob3coRXZhc19PYmplY3QqIG8pCiAgKgogICogQHBhcmFtIG8gVmlldy4KICAqLwotdm9p
ZCBld2tfdmlld19mcmFtZV9tYWluX2NsZWFyZWQoRXZhc19PYmplY3QqIG8pCit2b2lkIGV3a192
aWV3X2ZyYW1lX21haW5fY2xlYXJlZChFdmFzX09iamVjdCAqbykKIHsKICAgICBEQkcoIm89JXAi
LCBvKTsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkKTsKQEAgLTM1ODgsMTAg
KzM1ODgsMTAgQEAgdm9pZCBld2tfdmlld19mcmFtZV9tYWluX2NsZWFyZWQoRXZhc19PYmplY3Qq
IG8pCiAgKgogICogRW1pdHMgc2lnbmFsOiAiaWNvbixyZWNlaXZlZCIgd2l0aCBubyBwYXJhbWV0
ZXJzLgogICovCi12b2lkIGV3a192aWV3X2ZyYW1lX21haW5faWNvbl9yZWNlaXZlZChFdmFzX09i
amVjdCogbykKK3ZvaWQgZXdrX3ZpZXdfZnJhbWVfbWFpbl9pY29uX3JlY2VpdmVkKEV2YXNfT2Jq
ZWN0ICpvKQogewogICAgIERCRygibz0lcCIsIG8pOwotICAgIEV2YXNfT2JqZWN0KiBmcmFtZSA9
IGV3a192aWV3X2ZyYW1lX21haW5fZ2V0KG8pOworICAgIEV2YXNfT2JqZWN0ICpmcmFtZSA9IGV3
a192aWV3X2ZyYW1lX21haW5fZ2V0KG8pOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNr
X2NhbGwoZnJhbWUsICJpY29uLHJlY2VpdmVkIiwgMCk7CiB9CiAKQEAgLTM2MDUsMTAgKzM2MDUs
MTAgQEAgdm9pZCBld2tfdmlld19mcmFtZV9tYWluX2ljb25fcmVjZWl2ZWQoRXZhc19PYmplY3Qq
IG8pCiAgKiBAbm90ZSB0aGVyZSBzaG91bGQgbm90IGJlIGFueSBlcnJvciBzdHVmZiBoZXJlLCBi
dXQgdHJ5aW5nIHRvIGJlCiAgKiAgICAgICBjb21wYXRpYmxlIHdpdGggcHJldmlvdXMgV2ViS2l0
LgogICovCi12b2lkIGV3a192aWV3X2xvYWRfZmluaXNoZWQoRXZhc19PYmplY3QqIG8sIGNvbnN0
IEV3a19GcmFtZV9Mb2FkX0Vycm9yKiBlcnJvcikKK3ZvaWQgZXdrX3ZpZXdfbG9hZF9maW5pc2hl
ZChFdmFzX09iamVjdCAqbywgY29uc3QgRXdrX0ZyYW1lX0xvYWRfRXJyb3IgKmVycm9yKQogewog
ICAgIERCRygibz0lcCwgZXJyb3I9JXAiLCBvLCBlcnJvcik7Ci0gICAgZXZhc19vYmplY3Rfc21h
cnRfY2FsbGJhY2tfY2FsbChvLCAibG9hZCxmaW5pc2hlZCIsICh2b2lkKillcnJvcik7CisgICAg
ZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAibG9hZCxmaW5pc2hlZCIsICh2b2lk
ICopZXJyb3IpOwogfQogCiAvKioKQEAgLTM2MTcsMTAgKzM2MTcsMTAgQEAgdm9pZCBld2tfdmll
d19sb2FkX2ZpbmlzaGVkKEV2YXNfT2JqZWN0KiBvLCBjb25zdCBFd2tfRnJhbWVfTG9hZF9FcnJv
ciogZXJyb3IpCiAgKgogICogRW1pdHMgc2lnbmFsOiAibG9hZCxlcnJvciIgd2l0aCBwb2ludGVy
IHRvIEV3a19GcmFtZV9Mb2FkX0Vycm9yLgogICovCi12b2lkIGV3a192aWV3X2xvYWRfZXJyb3Io
RXZhc19PYmplY3QqIG8sIGNvbnN0IEV3a19GcmFtZV9Mb2FkX0Vycm9yKiBlcnJvcikKK3ZvaWQg
ZXdrX3ZpZXdfbG9hZF9lcnJvcihFdmFzX09iamVjdCAqbywgY29uc3QgRXdrX0ZyYW1lX0xvYWRf
RXJyb3IgKmVycm9yKQogewogICAgIERCRygibz0lcCwgZXJyb3I9JXAiLCBvLCBlcnJvcik7Ci0g
ICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAibG9hZCxlcnJvciIsICh2b2lk
KillcnJvcik7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAibG9hZCxl
cnJvciIsICh2b2lkICopZXJyb3IpOwogfQogCiAvKioKQEAgLTM2MjksNyArMzYyOSw3IEBAIHZv
aWQgZXdrX3ZpZXdfbG9hZF9lcnJvcihFdmFzX09iamVjdCogbywgY29uc3QgRXdrX0ZyYW1lX0xv
YWRfRXJyb3IqIGVycm9yKQogICoKICAqIEVtaXRzIHNpZ25hbDogImxvYWQscHJvZ3Jlc3MiIHdp
dGggcG9pbnRlciB0byBhIGRvdWJsZSBmcm9tIDAuMCB0byAxLjAuCiAgKi8KLXZvaWQgZXdrX3Zp
ZXdfbG9hZF9wcm9ncmVzc19jaGFuZ2VkKEV2YXNfT2JqZWN0KiBvKQordm9pZCBld2tfdmlld19s
b2FkX3Byb2dyZXNzX2NoYW5nZWQoRXZhc19PYmplY3QgKm8pCiB7CiAgICAgRVdLX1ZJRVdfU0Rf
R0VUX09SX1JFVFVSTihvLCBzZCk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNk
LCBwcml2KTsKQEAgLTM2NTEsNyArMzY1MSw3IEBAIHZvaWQgZXdrX3ZpZXdfbG9hZF9wcm9ncmVz
c19jaGFuZ2VkKEV2YXNfT2JqZWN0KiBvKQogICoKICAqIEVtaXRzIHNpZ25hbDogInJlc3RvcmUi
IHdpdGggZnJhbWUuCiAgKi8KLXZvaWQgZXdrX3ZpZXdfcmVzdG9yZV9zdGF0ZShFdmFzX09iamVj
dCogbywgRXZhc19PYmplY3QqIGZyYW1lKQordm9pZCBld2tfdmlld19yZXN0b3JlX3N0YXRlKEV2
YXNfT2JqZWN0ICpvLCBFdmFzX09iamVjdCAqZnJhbWUpCiB7CiAgICAgZXZhc19vYmplY3Rfc21h
cnRfY2FsbGJhY2tfY2FsbChvLCAicmVzdG9yZSIsIGZyYW1lKTsKIH0KQEAgLTM2NzcsMTQgKzM2
NzcsMTQgQEAgdm9pZCBld2tfdmlld19yZXN0b3JlX3N0YXRlKEV2YXNfT2JqZWN0KiBvLCBFdmFz
X09iamVjdCogZnJhbWUpCiAgKgogICogQHNlZSBld2tfd2luZG93X2ZlYXR1cmVzX3JlZigpLgog
ICovCi1FdmFzX09iamVjdCogZXdrX3ZpZXdfd2luZG93X2NyZWF0ZShFdmFzX09iamVjdCogbywg
RWluYV9Cb29sIGphdmFzY3JpcHQsIGNvbnN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzKiBjb3Jl
RmVhdHVyZXMpCitFdmFzX09iamVjdCAqZXdrX3ZpZXdfd2luZG93X2NyZWF0ZShFdmFzX09iamVj
dCAqbywgRWluYV9Cb29sIGphdmFzY3JpcHQsIGNvbnN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVz
ICpjb3JlRmVhdHVyZXMpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwg
MCk7CiAKICAgICBpZiAoIXNkLT5hcGktPndpbmRvd19jcmVhdGUpCiAgICAgICAgIHJldHVybiBv
OwogCi0gICAgRXdrX1dpbmRvd19GZWF0dXJlcyogd2luZG93X2ZlYXR1cmVzID0gZXdrX3dpbmRv
d19mZWF0dXJlc19uZXdfZnJvbV9jb3JlKGNvcmVGZWF0dXJlcyk7CisgICAgRXdrX1dpbmRvd19G
ZWF0dXJlcyAqd2luZG93X2ZlYXR1cmVzID0gZXdrX3dpbmRvd19mZWF0dXJlc19uZXdfZnJvbV9j
b3JlKGNvcmVGZWF0dXJlcyk7CiAgICAgRXZhc19PYmplY3QqIHZpZXcgPSBzZC0+YXBpLT53aW5k
b3dfY3JlYXRlKHNkLCBqYXZhc2NyaXB0LCB3aW5kb3dfZmVhdHVyZXMpOwogICAgIGV3a193aW5k
b3dfZmVhdHVyZXNfdW5yZWYod2luZG93X2ZlYXR1cmVzKTsKIApAQCAtMzcwMiw3ICszNzAyLDcg
QEAgRXZhc19PYmplY3QqIGV3a192aWV3X3dpbmRvd19jcmVhdGUoRXZhc19PYmplY3QqIG8sIEVp
bmFfQm9vbCBqYXZhc2NyaXB0LCBjb25zdAogICoKICAqIEBwYXJhbSBvIFZpZXcgdG8gYmUgY2xv
c2VkLgogICovCi12b2lkIGV3a192aWV3X3dpbmRvd19jbG9zZShFdmFzX09iamVjdCogbykKK3Zv
aWQgZXdrX3ZpZXdfd2luZG93X2Nsb3NlKEV2YXNfT2JqZWN0ICpvKQogewogICAgIEVXS19WSUVX
X1NEX0dFVF9PUl9SRVRVUk4obywgc2QpOwogCkBAIC0zNzE4LDcgKzM3MTgsNyBAQCB2b2lkIGV3
a192aWV3X3dpbmRvd19jbG9zZShFdmFzX09iamVjdCogbykKICAqCiAgKiBFbWl0cyBzaWduYWw6
ICJsaW5rLGhvdmVyLGluIgogICovCi12b2lkIGV3a192aWV3X21vdXNlX2xpbmtfaG92ZXJfaW4o
RXZhc19PYmplY3QqIG8sIHZvaWQqIGRhdGEpCit2b2lkIGV3a192aWV3X21vdXNlX2xpbmtfaG92
ZXJfaW4oRXZhc19PYmplY3QgKm8sIHZvaWQgKmRhdGEpCiB7CiAgICAgZXZhc19vYmplY3Rfc21h
cnRfY2FsbGJhY2tfY2FsbChvLCAibGluayxob3ZlcixpbiIsIGRhdGEpOwogfQpAQCAtMzcyOSw3
ICszNzI5LDcgQEAgdm9pZCBld2tfdmlld19tb3VzZV9saW5rX2hvdmVyX2luKEV2YXNfT2JqZWN0
KiBvLCB2b2lkKiBkYXRhKQogICoKICAqIEVtaXRzIHNpZ25hbDogImxpbmssaG92ZXIsb3V0Igog
ICovCi12b2lkIGV3a192aWV3X21vdXNlX2xpbmtfaG92ZXJfb3V0KEV2YXNfT2JqZWN0KiBvKQor
dm9pZCBld2tfdmlld19tb3VzZV9saW5rX2hvdmVyX291dChFdmFzX09iamVjdCAqbykKIHsKICAg
ICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG8sICJsaW5rLGhvdmVyLG91dCIsIDAp
OwogfQpAQCAtMzc0MCw3ICszNzQwLDcgQEAgdm9pZCBld2tfdmlld19tb3VzZV9saW5rX2hvdmVy
X291dChFdmFzX09iamVjdCogbykKICAqCiAgKiBFbWl0cyBzaWduYWw6ICJ0b29sYmFycyx2aXNp
YmxlLHNldCIgd2l0aCBhIHBvaW50ZXIgdG8gYSBib29sZWFuLgogICovCi12b2lkIGV3a192aWV3
X3Rvb2xiYXJzX3Zpc2libGVfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgdmlzaWJsZSkK
K3ZvaWQgZXdrX3ZpZXdfdG9vbGJhcnNfdmlzaWJsZV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFf
Qm9vbCB2aXNpYmxlKQogewogICAgIERCRygibz0lcCAodmlzaWJsZT0lZCkiLCBvLCAhIXZpc2li
bGUpOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobywgInRvb2xiYXJzLHZp
c2libGUsc2V0IiwgJnZpc2libGUpOwpAQCAtMzc1Nyw3ICszNzU3LDcgQEAgdm9pZCBld2tfdmll
d190b29sYmFyc192aXNpYmxlX3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIHZpc2libGUp
CiAgKgogICogRW1pdHMgc2lnbmFsOiAidG9vbGJhcnMsdmlzaWJsZSxnZXQiIHdpdGggYSBwb2lu
dGVyIHRvIGEgYm9vbGVhbi4KICAqLwotdm9pZCBld2tfdmlld190b29sYmFyc192aXNpYmxlX2dl
dChFdmFzX09iamVjdCogbywgRWluYV9Cb29sKiB2aXNpYmxlKQordm9pZCBld2tfdmlld190b29s
YmFyc192aXNpYmxlX2dldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sICp2aXNpYmxlKQogewog
ICAgIERCRygiJXMsIG89JXAiLCBfX2Z1bmNfXywgbyk7CiAgICAgKnZpc2libGUgPSBFSU5BX0ZB
TFNFOwpAQCAtMzc3Myw3ICszNzczLDcgQEAgdm9pZCBld2tfdmlld190b29sYmFyc192aXNpYmxl
X2dldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sKiB2aXNpYmxlKQogICoKICAqIEVtaXRzIHNp
Z25hbDogInN0YXR1c2Jhcix2aXNpYmxlLHNldCIgd2l0aCBhIHBvaW50ZXIgdG8gYSBib29sZWFu
LgogICovCi12b2lkIGV3a192aWV3X3N0YXR1c2Jhcl92aXNpYmxlX3NldChFdmFzX09iamVjdCog
bywgRWluYV9Cb29sIHZpc2libGUpCit2b2lkIGV3a192aWV3X3N0YXR1c2Jhcl92aXNpYmxlX3Nl
dChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIHZpc2libGUpCiB7CiAgICAgREJHKCJvPSVwICh2
aXNpYmxlPSVkKSIsIG8sICEhdmlzaWJsZSk7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJh
Y2tfY2FsbChvLCAic3RhdHVzYmFyLHZpc2libGUsc2V0IiwgJnZpc2libGUpOwpAQCAtMzc5MCw3
ICszNzkwLDcgQEAgdm9pZCBld2tfdmlld19zdGF0dXNiYXJfdmlzaWJsZV9zZXQoRXZhc19PYmpl
Y3QqIG8sIEVpbmFfQm9vbCB2aXNpYmxlKQogICoKICAqIEVtaXRzIHNpZ25hbDogInN0YXR1c2Jh
cix2aXNpYmxlLGdldCIgd2l0aCBhIHBvaW50ZXIgdG8gYSBib29sZWFuLgogICovCi12b2lkIGV3
a192aWV3X3N0YXR1c2Jhcl92aXNpYmxlX2dldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sKiB2
aXNpYmxlKQordm9pZCBld2tfdmlld19zdGF0dXNiYXJfdmlzaWJsZV9nZXQoRXZhc19PYmplY3Qg
Km8sIEVpbmFfQm9vbCAqdmlzaWJsZSkKIHsKICAgICBEQkcoIiVzLCBvPSVwIiwgX19mdW5jX18s
IG8pOwogICAgICp2aXNpYmxlID0gRUlOQV9GQUxTRTsKQEAgLTM4MDYsNyArMzgwNiw3IEBAIHZv
aWQgZXdrX3ZpZXdfc3RhdHVzYmFyX3Zpc2libGVfZ2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jv
b2wqIHZpc2libGUpCiAgKgogICogRW1pdHMgc2lnbmFsOiAic3RhdHVzYmFyLHRleHQsc2V0IiB3
aXRoIGEgc3RyaW5nLgogICovCi12b2lkIGV3a192aWV3X3N0YXR1c2Jhcl90ZXh0X3NldChFdmFz
X09iamVjdCogbywgY29uc3QgY2hhciogdGV4dCkKK3ZvaWQgZXdrX3ZpZXdfc3RhdHVzYmFyX3Rl
eHRfc2V0KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICp0ZXh0KQogewogICAgIERCRygibz0l
cCAodGV4dD0lcykiLCBvLCB0ZXh0KTsKICAgICBJTkYoInN0YXR1cyBiYXIgdGV4dCBzZXQ6ICVz
IiwgdGV4dCk7CkBAIC0zODIyLDcgKzM4MjIsNyBAQCB2b2lkIGV3a192aWV3X3N0YXR1c2Jhcl90
ZXh0X3NldChFdmFzX09iamVjdCogbywgY29uc3QgY2hhciogdGV4dCkKICAqCiAgKiBFbWl0cyBz
aWduYWw6ICJzY3JvbGxiYXJzLHZpc2libGUsc2V0IiB3aXRoIGEgcG9pbnRlciB0byBhIGJvb2xl
YW4uCiAgKi8KLXZvaWQgZXdrX3ZpZXdfc2Nyb2xsYmFyc192aXNpYmxlX3NldChFdmFzX09iamVj
dCogbywgRWluYV9Cb29sIHZpc2libGUpCit2b2lkIGV3a192aWV3X3Njcm9sbGJhcnNfdmlzaWJs
ZV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCB2aXNpYmxlKQogewogICAgIERCRygibz0l
cCAodmlzaWJsZT0lZCkiLCBvLCAhIXZpc2libGUpOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2Nh
bGxiYWNrX2NhbGwobywgInNjcm9sbGJhcnMsdmlzaWJsZSxzZXQiLCAmdmlzaWJsZSk7CkBAIC0z
ODM5LDcgKzM4MzksNyBAQCB2b2lkIGV3a192aWV3X3Njcm9sbGJhcnNfdmlzaWJsZV9zZXQoRXZh
c19PYmplY3QqIG8sIEVpbmFfQm9vbCB2aXNpYmxlKQogICoKICAqIEVtaXRzIHNpZ25hbDogInNj
cm9sbGJhcnMsdmlzaWJsZSxnZXQiIHdpdGggYSBwb2ludGVyIHRvIGEgYm9vbGVhbi4KICAqLwot
dm9pZCBld2tfdmlld19zY3JvbGxiYXJzX3Zpc2libGVfZ2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5h
X0Jvb2wqIHZpc2libGUpCit2b2lkIGV3a192aWV3X3Njcm9sbGJhcnNfdmlzaWJsZV9nZXQoRXZh
c19PYmplY3QgKm8sIEVpbmFfQm9vbCAqdmlzaWJsZSkKIHsKICAgICBEQkcoIiVzLCBvPSVwIiwg
X19mdW5jX18sIG8pOwogICAgICp2aXNpYmxlID0gRUlOQV9GQUxTRTsKQEAgLTM4NTUsNyArMzg1
NSw3IEBAIHZvaWQgZXdrX3ZpZXdfc2Nyb2xsYmFyc192aXNpYmxlX2dldChFdmFzX09iamVjdCog
bywgRWluYV9Cb29sKiB2aXNpYmxlKQogICoKICAqIEVtaXRzIHNpZ25hbDogIm1lbnViYXIsdmlz
aWJsZSxzZXQiIHdpdGggYSBwb2ludGVyIHRvIGEgYm9vbGVhbi4KICAqLwotdm9pZCBld2tfdmll
d19tZW51YmFyX3Zpc2libGVfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgdmlzaWJsZSkK
K3ZvaWQgZXdrX3ZpZXdfbWVudWJhcl92aXNpYmxlX3NldChFdmFzX09iamVjdCAqbywgRWluYV9C
b29sIHZpc2libGUpCiB7CiAgICAgREJHKCJvPSVwICh2aXNpYmxlPSVkKSIsIG8sICEhdmlzaWJs
ZSk7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAibWVudWJhcix2aXNp
YmxlLHNldCIsICZ2aXNpYmxlKTsKQEAgLTM4NzIsNyArMzg3Miw3IEBAIHZvaWQgZXdrX3ZpZXdf
bWVudWJhcl92aXNpYmxlX3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIHZpc2libGUpCiAg
KgogICogRW1pdHMgc2lnbmFsOiAibWVudWJhcix2aXNpYmxlLGdldCIgd2l0aCBhIHBvaW50ZXIg
dG8gYSBib29sZWFuLgogICovCi12b2lkIGV3a192aWV3X21lbnViYXJfdmlzaWJsZV9nZXQoRXZh
c19PYmplY3QqIG8sIEVpbmFfQm9vbCogdmlzaWJsZSkKK3ZvaWQgZXdrX3ZpZXdfbWVudWJhcl92
aXNpYmxlX2dldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sICp2aXNpYmxlKQogewogICAgIERC
RygiJXMsIG89JXAiLCBfX2Z1bmNfXywgbyk7CiAgICAgKnZpc2libGUgPSBFSU5BX0ZBTFNFOwpA
QCAtMzg4OSw3ICszODg5LDcgQEAgdm9pZCBld2tfdmlld19tZW51YmFyX3Zpc2libGVfZ2V0KEV2
YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wqIHZpc2libGUpCiAgKiBFbWl0cyBzaWduYWw6ICJ0b29s
dGlwLHRleHQsc2V0IiB3aXRoIGEgc3RyaW5nLiBJZiB0b29sdGlwIG11c3QgYmUgYWN0dWFsbHkK
ICAqIHJlbW92ZWQsIHRleHQgd2lsbCBiZSAwIG9yICdcMCcKICAqLwotdm9pZCBld2tfdmlld190
b29sdGlwX3RleHRfc2V0KEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFyKiB0ZXh0KQordm9pZCBl
d2tfdmlld190b29sdGlwX3RleHRfc2V0KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICp0ZXh0
KQogewogICAgIERCRygibz0lcCB0ZXh0PSVzIiwgbywgdGV4dCk7CiAgICAgZXZhc19vYmplY3Rf
c21hcnRfY2FsbGJhY2tfY2FsbChvLCAidG9vbHRpcCx0ZXh0LHNldCIsICh2b2lkICopdGV4dCk7
CkBAIC0zOTA0LDcgKzM5MDQsNyBAQCB2b2lkIGV3a192aWV3X3Rvb2x0aXBfdGV4dF9zZXQoRXZh
c19PYmplY3QqIG8sIGNvbnN0IGNoYXIqIHRleHQpCiAgKiBAc291cmNlSUQgU291cmNlIGlkLgog
ICoKICAqLwotdm9pZCBld2tfdmlld19hZGRfY29uc29sZV9tZXNzYWdlKEV2YXNfT2JqZWN0KiBv
LCBjb25zdCBjaGFyKiBtZXNzYWdlLCB1bnNpZ25lZCBpbnQgbGluZU51bWJlciwgY29uc3QgY2hh
ciogc291cmNlSUQpCit2b2lkIGV3a192aWV3X2FkZF9jb25zb2xlX21lc3NhZ2UoRXZhc19PYmpl
Y3QgKm8sIGNvbnN0IGNoYXIgKm1lc3NhZ2UsIHVuc2lnbmVkIGludCBsaW5lTnVtYmVyLCBjb25z
dCBjaGFyICpzb3VyY2VJRCkKIHsKICAgICBEQkcoIm89JXAgbWVzc2FnZT0lcyBsaW5lTnVtYmVy
PSV1IHNvdXJjZUlEPSVzIiwgbywgbWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlSUQpOwogICAg
IEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QpOwpAQCAtMzkxMyw3ICszOTEzLDcgQEAg
dm9pZCBld2tfdmlld19hZGRfY29uc29sZV9tZXNzYWdlKEV2YXNfT2JqZWN0KiBvLCBjb25zdCBj
aGFyKiBtZXNzYWdlLCB1bnNpZ25lZAogICAgIHNkLT5hcGktPmFkZF9jb25zb2xlX21lc3NhZ2Uo
c2QsIG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZUlEKTsKIH0KIAotdm9pZCBld2tfdmlld19y
dW5famF2YXNjcmlwdF9hbGVydChFdmFzX09iamVjdCogbywgRXZhc19PYmplY3QqIGZyYW1lLCBj
b25zdCBjaGFyKiBtZXNzYWdlKQordm9pZCBld2tfdmlld19ydW5famF2YXNjcmlwdF9hbGVydChF
dmFzX09iamVjdCAqbywgRXZhc19PYmplY3QgKmZyYW1lLCBjb25zdCBjaGFyICptZXNzYWdlKQog
ewogICAgIERCRygibz0lcCBmcmFtZT0lcCBtZXNzYWdlPSVzIiwgbywgZnJhbWUsIG1lc3NhZ2Up
OwogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QpOwpAQCAtMzkyNSw3ICszOTI1
LDcgQEAgdm9pZCBld2tfdmlld19ydW5famF2YXNjcmlwdF9hbGVydChFdmFzX09iamVjdCogbywg
RXZhc19PYmplY3QqIGZyYW1lLCBjb25zdCBjaGEKICAgICBzZC0+YXBpLT5ydW5famF2YXNjcmlw
dF9hbGVydChzZCwgZnJhbWUsIG1lc3NhZ2UpOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfcnVu
X2phdmFzY3JpcHRfY29uZmlybShFdmFzX09iamVjdCogbywgRXZhc19PYmplY3QqIGZyYW1lLCBj
b25zdCBjaGFyKiBtZXNzYWdlKQorRWluYV9Cb29sIGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X2Nv
bmZpcm0oRXZhc19PYmplY3QgKm8sIEV2YXNfT2JqZWN0ICpmcmFtZSwgY29uc3QgY2hhciAqbWVz
c2FnZSkKIHsKICAgICBEQkcoIm89JXAgZnJhbWU9JXAgbWVzc2FnZT0lcyIsIG8sIGZyYW1lLCBt
ZXNzYWdlKTsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNF
KTsKQEAgLTM5MzcsNyArMzkzNyw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19ydW5famF2YXNjcmlw
dF9jb25maXJtKEV2YXNfT2JqZWN0KiBvLCBFdmFzX09iamVjdCogZnJhbWUsIGNvCiAgICAgcmV0
dXJuIHNkLT5hcGktPnJ1bl9qYXZhc2NyaXB0X2NvbmZpcm0oc2QsIGZyYW1lLCBtZXNzYWdlKTsK
IH0KIAotRWluYV9Cb29sIGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X3Byb21wdChFdmFzX09iamVj
dCogbywgRXZhc19PYmplY3QqIGZyYW1lLCBjb25zdCBjaGFyKiBtZXNzYWdlLCBjb25zdCBjaGFy
KiBkZWZhdWx0VmFsdWUsIGNoYXIqKiB2YWx1ZSkKK0VpbmFfQm9vbCBld2tfdmlld19ydW5famF2
YXNjcmlwdF9wcm9tcHQoRXZhc19PYmplY3QgKm8sIEV2YXNfT2JqZWN0ICpmcmFtZSwgY29uc3Qg
Y2hhciAqbWVzc2FnZSwgY29uc3QgY2hhciAqZGVmYXVsdFZhbHVlLCBjaGFyICoqdmFsdWUpCiB7
CiAgICAgREJHKCJvPSVwIGZyYW1lPSVwIG1lc3NhZ2U9JXMiLCBvLCBmcmFtZSwgbWVzc2FnZSk7
CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CkBAIC0z
OTYwLDcgKzM5NjAsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfcHJvbXB0
KEV2YXNfT2JqZWN0KiBvLCBFdmFzX09iamVjdCogZnJhbWUsIGNvbgogICoKICAqIEByZXR1cm4g
QGMgRUlOQV9UUlVFIGlmIHNjcmlwdCBzaG91bGQgYmUgc3RvcHBlZDsgQGMgRUlOQV9GQUxTRSBv
dGhlcndpc2UKICAqLwotRWluYV9Cb29sIGV3a192aWV3X3Nob3VsZF9pbnRlcnJ1cHRfamF2YXNj
cmlwdChFdmFzX09iamVjdCogbykKK0VpbmFfQm9vbCBld2tfdmlld19zaG91bGRfaW50ZXJydXB0
X2phdmFzY3JpcHQoRXZhc19PYmplY3QgKm8pCiB7CiAgICAgREJHKCJvPSVwIiwgbyk7CiAgICAg
RVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CkBAIC0zOTg2LDcg
KzM5ODYsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2hvdWxkX2ludGVycnVwdF9qYXZhc2NyaXB0
KEV2YXNfT2JqZWN0KiBvKQogICogQHBhcmFtIGV4cGVjdGVkX3NpemUgVGhlIGV4cGVjdGVkIHNp
emUgb2YgdGhpcyBkYXRhYmFzZSBpbiBvcmRlciB0byBmdWxmaWxsCiAgKiBzaXRlJ3MgcmVxdWly
ZW1lbnQuCiAgKi8KLXVpbnQ2NF90IGV3a192aWV3X2V4Y2VlZGVkX2RhdGFiYXNlX3F1b3RhKEV2
YXNfT2JqZWN0KiBvLCBFdmFzX09iamVjdCogZnJhbWUsIGNvbnN0IGNoYXIqIGRhdGFiYXNlTmFt
ZSwgdWludDY0X3QgY3VycmVudF9zaXplLCB1aW50NjRfdCBleHBlY3RlZF9zaXplKQordWludDY0
X3QgZXdrX3ZpZXdfZXhjZWVkZWRfZGF0YWJhc2VfcXVvdGEoRXZhc19PYmplY3QgKm8sIEV2YXNf
T2JqZWN0ICpmcmFtZSwgY29uc3QgY2hhciAqZGF0YWJhc2VOYW1lLCB1aW50NjRfdCBjdXJyZW50
X3NpemUsIHVpbnQ2NF90IGV4cGVjdGVkX3NpemUpCiB7CiAgICAgREJHKCJvPSVwIiwgbyk7CiAg
ICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgMCk7CkBAIC00MDExLDcgKzQwMTEs
NyBAQCB1aW50NjRfdCBld2tfdmlld19leGNlZWRlZF9kYXRhYmFzZV9xdW90YShFdmFzX09iamVj
dCogbywgRXZhc19PYmplY3QqIGZyYW1lLCBjbwogICoKICAqIEByZXR1cm4gQEVJTkFfRkFMU0Ug
aWYgdXNlciBjYW5jZWxlZCBmaWxlIHNlbGVjdGlvbjsgQEVJTkFfVFJVRSBpZiBjb25maXJtZWQu
CiAgKi8KLUVpbmFfQm9vbCBld2tfdmlld19ydW5fb3Blbl9wYW5lbChFdmFzX09iamVjdCogbywg
RXZhc19PYmplY3QqIGZyYW1lLCBFaW5hX0Jvb2wgYWxsb3dzX211bHRpcGxlX2ZpbGVzLCBjb25z
dCBjaGFyKiBhY2NlcHRfdHlwZXMsIEVpbmFfTGlzdCoqIHNlbGVjdGVkX2ZpbGVuYW1lcykKK0Vp
bmFfQm9vbCBld2tfdmlld19ydW5fb3Blbl9wYW5lbChFdmFzX09iamVjdCAqbywgRXZhc19PYmpl
Y3QgKmZyYW1lLCBFaW5hX0Jvb2wgYWxsb3dzX211bHRpcGxlX2ZpbGVzLCBjb25zdCBjaGFyICph
Y2NlcHRfdHlwZXMsIEVpbmFfTGlzdCAqKnNlbGVjdGVkX2ZpbGVuYW1lcykKIHsKICAgICBEQkco
Im89JXAgZnJhbWU9JXAgYWxsb3dzX211bHRpcGxlX2ZpbGVzPSVkIiwgbywgZnJhbWUsIGFsbG93
c19tdWx0aXBsZV9maWxlcyk7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwg
RUlOQV9GQUxTRSk7CkBAIC00MDI5LDcgKzQwMjksNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfcnVu
X29wZW5fcGFuZWwoRXZhc19PYmplY3QqIG8sIEV2YXNfT2JqZWN0KiBmcmFtZSwgRWluYV9Cb29s
CiAgICAgcmV0dXJuIGNvbmZpcm07CiB9CiAKLXZvaWQgZXdrX3ZpZXdfcmVwYWludChFdmFzX09i
amVjdCogbywgRXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkIHksIEV2YXNfQ29vcmQgdywgRXZhc19D
b29yZCBoKQordm9pZCBld2tfdmlld19yZXBhaW50KEV2YXNfT2JqZWN0ICpvLCBFdmFzX0Nvb3Jk
IHgsIEV2YXNfQ29vcmQgeSwgRXZhc19Db29yZCB3LCBFdmFzX0Nvb3JkIGgpCiB7CiAgICAgREJH
KCJvPSVwLCByZWdpb249JWQsJWQgKyAlZHglZCIsIG8sIHgsIHksIHcsIGgpOwogICAgIEVXS19W
SUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QpOwpAQCAtNDA0NCw3ICs0MDQ0LDcgQEAgdm9pZCBl
d2tfdmlld19yZXBhaW50KEV2YXNfT2JqZWN0KiBvLCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQg
eSwgRXZhc19Db29yZCB3LAogICAgIF9ld2tfdmlld19zbWFydF9jaGFuZ2VkKHNkKTsKIH0KIAot
dm9pZCBld2tfdmlld19zY3JvbGwoRXZhc19PYmplY3QqIG8sIEV2YXNfQ29vcmQgZHgsIEV2YXNf
Q29vcmQgZHksIEV2YXNfQ29vcmQgc3gsIEV2YXNfQ29vcmQgc3ksIEV2YXNfQ29vcmQgc3csIEV2
YXNfQ29vcmQgc2gsIEV2YXNfQ29vcmQgY3gsIEV2YXNfQ29vcmQgY3ksIEV2YXNfQ29vcmQgY3cs
IEV2YXNfQ29vcmQgY2gsIEVpbmFfQm9vbCBtYWluX2ZyYW1lKQordm9pZCBld2tfdmlld19zY3Jv
bGwoRXZhc19PYmplY3QgKm8sIEV2YXNfQ29vcmQgZHgsIEV2YXNfQ29vcmQgZHksIEV2YXNfQ29v
cmQgc3gsIEV2YXNfQ29vcmQgc3ksIEV2YXNfQ29vcmQgc3csIEV2YXNfQ29vcmQgc2gsIEV2YXNf
Q29vcmQgY3gsIEV2YXNfQ29vcmQgY3ksIEV2YXNfQ29vcmQgY3csIEV2YXNfQ29vcmQgY2gsIEVp
bmFfQm9vbCBtYWluX2ZyYW1lKQogewogICAgIERCRygibz0lcCwgZGVsdGE6ICVkLCVkLCBzY3Jv
bGw6ICVkLCVkKyVkeCVkLCBjbGlwOiAlZCwlZCslZHglZCIsCiAgICAgICAgIG8sIGR4LCBkeSwg
c3gsIHN5LCBzdywgc2gsIGN4LCBjeSwgY3csIGNoKTsKQEAgLTQwNjIsNyArNDA2Miw3IEBAIHZv
aWQgZXdrX3ZpZXdfc2Nyb2xsKEV2YXNfT2JqZWN0KiBvLCBFdmFzX0Nvb3JkIGR4LCBFdmFzX0Nv
b3JkIGR5LCBFdmFzX0Nvb3JkIHN4CiAgICAgX2V3a192aWV3X3NtYXJ0X2NoYW5nZWQoc2QpOwog
fQogCi1XZWJDb3JlOjpQYWdlKiBld2tfdmlld19jb3JlX3BhZ2VfZ2V0KGNvbnN0IEV2YXNfT2Jq
ZWN0KiBvKQorV2ViQ29yZTo6UGFnZSogZXdrX3ZpZXdfY29yZV9wYWdlX2dldChjb25zdCBFdmFz
X09iamVjdCAqbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAwKTsK
ICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIDApOwpAQCAtNDA3NCw3
ICs0MDc0LDcgQEAgV2ViQ29yZTo6UGFnZSogZXdrX3ZpZXdfY29yZV9wYWdlX2dldChjb25zdCBF
dmFzX09iamVjdCogbykKICAqCiAgKiBFbWl0cyAiZnJhbWUsY3JlYXRlZCIgd2l0aCB0aGUgbmV3
IGZyYW1lIG9iamVjdCBvbiBzdWNjZXNzLgogICovCi1XVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6
RnJhbWU+IGV3a192aWV3X2ZyYW1lX2NyZWF0ZShFdmFzX09iamVjdCogbywgRXZhc19PYmplY3Qq
IGZyYW1lLCBjb25zdCBXVEY6OlN0cmluZyYgbmFtZSwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJF
bGVtZW50KiBvd25lckVsZW1lbnQsIGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCwgY29uc3QgV1RG
OjpTdHJpbmcmIHJlZmVycmVyKQorV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBld2tf
dmlld19mcmFtZV9jcmVhdGUoRXZhc19PYmplY3QgKm8sIEV2YXNfT2JqZWN0ICpmcmFtZSwgY29u
c3QgV1RGOjpTdHJpbmcgJm5hbWUsIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCAqb3du
ZXJFbGVtZW50LCBjb25zdCBXZWJDb3JlOjpLVVJMICZ1cmwsIGNvbnN0IFdURjo6U3RyaW5nICZy
ZWZlcnJlcikKIHsKICAgICBEQkcoIm89JXAsIGZyYW1lPSVwLCBuYW1lPSVzLCBvd25lckVsZW1l
bnQ9JXAsIHVybD0lcywgcmVmZXJyZXI9JXMiLAogICAgICAgICBvLCBmcmFtZSwgbmFtZS51dGY4
KCkuZGF0YSgpLCBvd25lckVsZW1lbnQsCkBAIC00MTA2LDcgKzQxMDYsNyBAQCBXVEY6OlBhc3NS
ZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGV3a192aWV3X2ZyYW1lX2NyZWF0ZShFdmFzX09iamVjdCog
bywgRXZhc19PYmplYwogICAgIHJldHVybiBjZi5yZWxlYXNlKCk7CiB9CiAKLVdURjo6UGFzc1Jl
ZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGV3a192aWV3X3BsdWdpbl9jcmVhdGUoRXZhc19PYmplY3Qq
IG8sIEV2YXNfT2JqZWN0KiBmcmFtZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgcGx1Z2luU2l6
ZSwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFdlYkNvcmU6OktV
UkwmIHVybCwgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25z
dCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFtVmFsdWVzLCBjb25zdCBXVEY6OlN0cmlu
ZyYgbWltZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5KQorV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6
OldpZGdldD4gZXdrX3ZpZXdfcGx1Z2luX2NyZWF0ZShFdmFzX09iamVjdCAqbywgRXZhc19PYmpl
Y3QgKmZyYW1lLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBwbHVnaW5TaXplLCBXZWJDb3JlOjpI
VE1MUGx1Z0luRWxlbWVudCAqZWxlbWVudCwgY29uc3QgV2ViQ29yZTo6S1VSTCAmdXJsLCBjb25z
dCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4gJnBhcmFtTmFtZXMsIGNvbnN0IFdURjo6VmVjdG9y
PFdURjo6U3RyaW5nPiAmcGFyYW1WYWx1ZXMsIGNvbnN0IFdURjo6U3RyaW5nICZtaW1lVHlwZSwg
Ym9vbCBsb2FkTWFudWFsbHkpCiB7CiAgICAgREJHKCJvPSVwLCBmcmFtZT0lcCwgc2l6ZT0lZHgl
ZCwgZWxlbWVudD0lcCwgdXJsPSVzLCBtaW1lVHlwZT0lcyIsCiAgICAgICAgIG8sIGZyYW1lLCBw
bHVnaW5TaXplLndpZHRoKCksIHBsdWdpblNpemUuaGVpZ2h0KCksIGVsZW1lbnQsCkBAIC00MTIx
LDcgKzQxMjEsNiBAQCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBld2tfdmlld19w
bHVnaW5fY3JlYXRlKEV2YXNfT2JqZWN0KiBvLCBFdmFzX09iagogICAgICAgICAgbWltZVR5cGUs
IGxvYWRNYW51YWxseSk7CiB9CiAKLQogLyoqCiAgKiBAaW50ZXJuYWwKICAqCkBAIC00MTMzLDcg
KzQxMzIsNyBAQCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBld2tfdmlld19wbHVn
aW5fY3JlYXRlKEV2YXNfT2JqZWN0KiBvLCBFdmFzX09iagogICoKICAqIEVtaXRzOiAicG9wdXAs
Y3JlYXRlIiB3aXRoIGEgbGlzdCBvZiBFd2tfTWVudSBjb250YWluaW5nIGVhY2ggaXRlbSdzIGRh
dGEKICAqLwotdm9pZCBld2tfdmlld19wb3B1cF9uZXcoRXZhc19PYmplY3QqIG8sIFdlYkNvcmU6
OlBvcHVwTWVudUNsaWVudCogY2xpZW50LCBpbnQgc2VsZWN0ZWQsIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmIHJlY3QpCit2b2lkIGV3a192aWV3X3BvcHVwX25ldyhFdmFzX09iamVjdCAqbywgV2Vi
Q29yZTo6UG9wdXBNZW51Q2xpZW50ICpjbGllbnQsIGludCBzZWxlY3RlZCwgY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCAmcmVjdCkKIHsKICAgICBJTkYoIm89JXAiLCBvKTsKICAgICBFV0tfVklFV19T
RF9HRVRfT1JfUkVUVVJOKG8sIHNkKTsKQEAgLTQxNDcsNyArNDE0Niw3IEBAIHZvaWQgZXdrX3Zp
ZXdfcG9wdXBfbmV3KEV2YXNfT2JqZWN0KiBvLCBXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqIGNs
aWVudCwgaW50IHNlCiAgICAgLy8gcG9wdWxhdGUgaXRlbXMKICAgICBjb25zdCBpbnQgc2l6ZSA9
IGNsaWVudC0+bGlzdFNpemUoKTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7ICsraSkg
ewotICAgICAgICBFd2tfTWVudV9JdGVtKiBpdGVtID0gKEV3a19NZW51X0l0ZW0qKSBtYWxsb2Mo
c2l6ZW9mKCppdGVtKSk7CisgICAgICAgIEV3a19NZW51X0l0ZW0gKml0ZW0gPSAoRXdrX01lbnVf
SXRlbSAqKSBtYWxsb2Moc2l6ZW9mKCppdGVtKSk7CiAgICAgICAgIGlmIChjbGllbnQtPml0ZW1J
c1NlcGFyYXRvcihpKSkKICAgICAgICAgICAgIGl0ZW0tPnR5cGUgPSBFV0tfTUVOVV9TRVBBUkFU
T1I7CiAgICAgICAgIGVsc2UgaWYgKGNsaWVudC0+aXRlbUlzTGFiZWwoaSkpCkBAIC00MTc5LDcg
KzQxNzgsNyBAQCB2b2lkIGV3a192aWV3X3BvcHVwX25ldyhFdmFzX09iamVjdCogbywgV2ViQ29y
ZTo6UG9wdXBNZW51Q2xpZW50KiBjbGllbnQsIGludCBzZQogICogQHJldHVybnMgRUlOQV9UUlVF
IGluIGNhc2UgbWVudSB3YXMgc3VjY2Vzc2Z1bGx5IGRlc3Ryb3llZCBvciBFSU5BX1RSVUUgaW4K
ICAqIGNhc2UgdGhlcmUgd2Fzbid0IGFueSBtZW51IHRvIGJlIGRlc3Ryb3llZC4KICAqLwotRWlu
YV9Cb29sIGV3a192aWV3X3BvcHVwX2Rlc3Ryb3koRXZhc19PYmplY3QqIG8pCitFaW5hX0Jvb2wg
ZXdrX3ZpZXdfcG9wdXBfZGVzdHJveShFdmFzX09iamVjdCAqbykKIHsKICAgICBJTkYoIm89JXAi
LCBvKTsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsK
QEAgLTQxOTIsNyArNDE5MSw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19wb3B1cF9kZXN0cm95KEV2
YXNfT2JqZWN0KiBvKQogCiAgICAgdm9pZCogaXRlbXY7CiAgICAgRUlOQV9MSVNUX0ZSRUUocHJp
di0+cG9wdXAubWVudS5pdGVtcywgaXRlbXYpIHsKLSAgICAgICAgRXdrX01lbnVfSXRlbSogaXRl
bSA9IChFd2tfTWVudV9JdGVtKilpdGVtdjsKKyAgICAgICAgRXdrX01lbnVfSXRlbSogaXRlbSA9
IChFd2tfTWVudV9JdGVtICopaXRlbXY7CiAgICAgICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVsKGl0
ZW0tPnRleHQpOwogICAgICAgICBmcmVlKGl0ZW0pOwogICAgIH0KQEAgLTQyMTMsNyArNDIxMiw3
IEBAIEVpbmFfQm9vbCBld2tfdmlld19wb3B1cF9kZXN0cm95KEV2YXNfT2JqZWN0KiBvKQogICog
QGluZGV4IEluZGV4IG9mIHNlbGVjdGVkIGl0ZW0uCiAgKgogICovCi12b2lkIGV3a192aWV3X3Bv
cHVwX3NlbGVjdGVkX3NldChFdmFzX09iamVjdCogbywgaW50IGluZGV4KQordm9pZCBld2tfdmll
d19wb3B1cF9zZWxlY3RlZF9zZXQoRXZhc19PYmplY3QgKm8sIGludCBpbmRleCkKIHsKICAgICBJ
TkYoIm89JXAiLCBvKTsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkKTsKQEAg
LTQyMzMsNyArNDIzMiw3IEBAIHZvaWQgZXdrX3ZpZXdfcG9wdXBfc2VsZWN0ZWRfc2V0KEV2YXNf
T2JqZWN0KiBvLCBpbnQgaW5kZXgpCiAgKiBFbWl0czogImRvd25sb2FkLHJlcXVlc3QiIHdpdGgg
YW4gRXdrX0Rvd25sb2FkIGNvbnRhaW5pbmcgdGhlIGRldGFpbHMgb2YgdGhlCiAgKiByZXF1ZXN0
ZWQgZG93bmxvYWQuIFRoZSBkb3dubG9hZCBwZXIgc2UgbXVzdCBiZSBoYW5kbGVkIG91dHNpZGUg
b2Ygd2Via2l0LgogICovCi12b2lkIGV3a192aWV3X2Rvd25sb2FkX3JlcXVlc3QoRXZhc19PYmpl
Y3QqIG8sIEV3a19Eb3dubG9hZCogZG93bmxvYWQpCit2b2lkIGV3a192aWV3X2Rvd25sb2FkX3Jl
cXVlc3QoRXZhc19PYmplY3QgKm8sIEV3a19Eb3dubG9hZCAqZG93bmxvYWQpCiB7CiAgICAgREJH
KCJ2aWV3PSVwIiwgbyk7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAi
ZG93bmxvYWQscmVxdWVzdCIsIGRvd25sb2FkKTsKQEAgLTQyNDcsNyArNDI0Niw3IEBAIHZvaWQg
ZXdrX3ZpZXdfZG93bmxvYWRfcmVxdWVzdChFdmFzX09iamVjdCogbywgRXdrX0Rvd25sb2FkKiBk
b3dubG9hZCkKICAqCiAgKiBFbWl0cyBzaWduYWw6ICJ2aWV3cG9ydCxjaGFuZ2VkIiB3aXRoIG5v
IHBhcmFtZXRlcnMuCiAgKi8KLXZvaWQgZXdrX3ZpZXdfdmlld3BvcnRfYXR0cmlidXRlc19zZXQo
RXZhc19PYmplY3QgKm8sIGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzJiBhcmd1bWVu
dHMpCit2b2lkIGV3a192aWV3X3ZpZXdwb3J0X2F0dHJpYnV0ZXNfc2V0KEV2YXNfT2JqZWN0ICpv
LCBjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cyAmYXJndW1lbnRzKQogewogICAgIEVX
S19WSUVXX1NEX0dFVChvLCBzZCk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVQoc2QsIHByaXYpOwpA
QCAtNDI2OCw3ICs0MjY3LDcgQEAgdm9pZCBld2tfdmlld192aWV3cG9ydF9hdHRyaWJ1dGVzX3Nl
dChFdmFzX09iamVjdCAqbywgY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBcmcKICAqIEBwYXJhbSBk
ZXZpY2VfcGl4ZWxfcmF0aW8gdmFsdWUuCiAgKiBAcGFyYW0gdXNlcl9zY2FsYWJsZSB1c2VyIFNj
YWxhYmxlIHZhbHVlLgogICovCi12b2lkIGV3a192aWV3X3ZpZXdwb3J0X2F0dHJpYnV0ZXNfZ2V0
KEV2YXNfT2JqZWN0ICpvLCBmbG9hdCogdywgZmxvYXQqIGgsIGZsb2F0KiBpbml0X3NjYWxlLCBm
bG9hdCogbWF4X3NjYWxlLCBmbG9hdCogbWluX3NjYWxlLCBmbG9hdCogZGV2aWNlX3BpeGVsX3Jh
dGlvLCBFaW5hX0Jvb2wqIHVzZXJfc2NhbGFibGUpCit2b2lkIGV3a192aWV3X3ZpZXdwb3J0X2F0
dHJpYnV0ZXNfZ2V0KEV2YXNfT2JqZWN0ICpvLCBmbG9hdCAqdywgZmxvYXQgKmgsIGZsb2F0ICpp
bml0X3NjYWxlLCBmbG9hdCAqbWF4X3NjYWxlLCBmbG9hdCAqbWluX3NjYWxlLCBmbG9hdCAqZGV2
aWNlX3BpeGVsX3JhdGlvLCBFaW5hX0Jvb2wgKnVzZXJfc2NhbGFibGUpCiB7CiAgICAgV2ViQ29y
ZTo6Vmlld3BvcnRBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMgPSBfZXdrX3ZpZXdfdmlld3BvcnRfYXR0
cmlidXRlc19jb21wdXRlKG8pOwogCkBAIC00Mjk0LDEwICs0MjkzLDEwIEBAIHZvaWQgZXdrX3Zp
ZXdfdmlld3BvcnRfYXR0cmlidXRlc19nZXQoRXZhc19PYmplY3QgKm8sIGZsb2F0KiB3LCBmbG9h
dCogaCwgZmxvYXQqCiAgKiBAcGFyYW0gbyB2aWV3LgogICogQHBhcmFtIG1pbl9zY2FsZSBtaW5p
bXVtIHZhbHVlIG9mIHpvb20gcmFuZ2UuCiAgKiBAcGFyYW0gbWF4X3NjYWxlIG1heGltdW0gdmFs
dWUgb2Ygem9vbSByYW5nZS4KLSAqIAorICoKICAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHpv
b20gcmFuZ2UgaXMgY2hhbmdlZCwgQGMgRUlOQV9GQUxTRSBpZiBub3Qgb3IgZmFpbHVyZS4KICAq
LwotRWluYV9Cb29sIGV3a192aWV3X3pvb21fcmFuZ2Vfc2V0KEV2YXNfT2JqZWN0KiBvLCBmbG9h
dCBtaW5fc2NhbGUsIGZsb2F0IG1heF9zY2FsZSkKK0VpbmFfQm9vbCBld2tfdmlld196b29tX3Jh
bmdlX3NldChFdmFzX09iamVjdCAqbywgZmxvYXQgbWluX3NjYWxlLCBmbG9hdCBtYXhfc2NhbGUp
CiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUKG8sIHNkKTsKICAgICBFV0tfVklFV19QUklWX0dFVChz
ZCwgcHJpdik7CkBAIC00MzIwLDcgKzQzMTksNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV9y
YW5nZV9zZXQoRXZhc19PYmplY3QqIG8sIGZsb2F0IG1pbl9zY2FsZSwgZmxvYXQgbWF4X3NjYQog
ICoKICAqIEByZXR1cm4gbWluaW11bSB2YWx1ZSBvZiB6b29tIHJhbmdlLgogICovCi1mbG9hdCBl
d2tfdmlld196b29tX3JhbmdlX21pbl9nZXQoRXZhc19PYmplY3QqIG8pCitmbG9hdCBld2tfdmll
d196b29tX3JhbmdlX21pbl9nZXQoRXZhc19PYmplY3QgKm8pCiB7CiAgICAgRVdLX1ZJRVdfU0Rf
R0VUKG8sIHNkKTsKICAgICBFV0tfVklFV19QUklWX0dFVChzZCwgcHJpdik7CkBAIC00MzM1LDcg
KzQzMzQsNyBAQCBmbG9hdCBld2tfdmlld196b29tX3JhbmdlX21pbl9nZXQoRXZhc19PYmplY3Qq
IG8pCiAgKgogICogQHJldHVybiBtYXhpbXVtIHZhbHVlIG9mIHpvb20gcmFuZ2UuCiAgKi8KLWZs
b2F0IGV3a192aWV3X3pvb21fcmFuZ2VfbWF4X2dldChFdmFzX09iamVjdCogbykKK2Zsb2F0IGV3
a192aWV3X3pvb21fcmFuZ2VfbWF4X2dldChFdmFzX09iamVjdCAqbykKIHsKICAgICBFV0tfVklF
V19TRF9HRVQobywgc2QpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUKHNkLCBwcml2KTsKQEAgLTQz
NTAsNyArNDM0OSw3IEBAIGZsb2F0IGV3a192aWV3X3pvb21fcmFuZ2VfbWF4X2dldChFdmFzX09i
amVjdCogbykKICAqIEBwYXJhbSB1c2VyX3NjYWxhYmxlIGJvb2xlYW4gcG9pbnRlciBpbiB3aGlj
aCB0byBlbmFibGUgem9vbS4gSXQgZGVmYXVsdHMKICAqIHRvIEBjIEVJTkFfVFJVRS4KICAqLwot
dm9pZCBld2tfdmlld191c2VyX3NjYWxhYmxlX3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29s
IHVzZXJfc2NhbGFibGUpCit2b2lkIGV3a192aWV3X3VzZXJfc2NhbGFibGVfc2V0KEV2YXNfT2Jq
ZWN0ICpvLCBFaW5hX0Jvb2wgdXNlcl9zY2FsYWJsZSkKIHsKICAgICBFV0tfVklFV19TRF9HRVQo
bywgc2QpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUKHNkLCBwcml2KTsKQEAgLTQzNjYsNyArNDM2
NSw3IEBAIHZvaWQgZXdrX3ZpZXdfdXNlcl9zY2FsYWJsZV9zZXQoRXZhc19PYmplY3QqIG8sIEVp
bmFfQm9vbCB1c2VyX3NjYWxhYmxlKQogICoKICAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHpv
b20gaXMgZW5hYmxlZCwgQGMgRUlOQV9GQUxTRSBpZiBub3QuCiAgKi8KLUVpbmFfQm9vbCBld2tf
dmlld191c2VyX3NjYWxhYmxlX2dldChFdmFzX09iamVjdCogbykKK0VpbmFfQm9vbCBld2tfdmll
d191c2VyX3NjYWxhYmxlX2dldChFdmFzX09iamVjdCAqbykKIHsKICAgICBFV0tfVklFV19TRF9H
RVQobywgc2QpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUKHNkLCBwcml2KTsKQEAgLTQzODIsNyAr
NDM4MSw3IEBAIEVpbmFfQm9vbCBld2tfdmlld191c2VyX3NjYWxhYmxlX2dldChFdmFzX09iamVj
dCogbykKICAqCiAgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiB6b29tIGlzIGVuYWJsZWQsIEBj
IEVJTkFfRkFMU0UgaWYgbm90LgogICovCi1mbG9hdCBld2tfdmlld19kZXZpY2VfcGl4ZWxfcmF0
aW9fZ2V0KEV2YXNfT2JqZWN0KiBvKQorZmxvYXQgZXdrX3ZpZXdfZGV2aWNlX3BpeGVsX3JhdGlv
X2dldChFdmFzX09iamVjdCAqbykKIHsKICAgICBFV0tfVklFV19TRF9HRVQobywgc2QpOwogICAg
IEVXS19WSUVXX1BSSVZfR0VUKHNkLCBwcml2KTsKQEAgLTQ0MzUsNyArNDQzNCw3IEBAIHZvaWQg
ZXdrX3ZpZXdfdHJhbnNpdGlvbl90b19jb21taXRlZF9mb3JfbmV3cGFnZShFdmFzX09iamVjdCAq
bykKICAqIEBwYXJhbSBvIFZpZXcgdG8gbG9hZAogICogQHBhcmFtIHJlcXVlc3QgUmVxdWVzdCB3
aGljaCBjb250YWluIHVybCB0byBuYXZpZ2F0ZQogICovCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfbmF2
aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24oRXZhc19PYmplY3QqIG8sIEV3a19GcmFtZV9SZXNvdXJj
ZV9SZXF1ZXN0KiByZXF1ZXN0KQorRWluYV9Cb29sIGV3a192aWV3X25hdmlnYXRpb25fcG9saWN5
X2RlY2lzaW9uKEV2YXNfT2JqZWN0ICpvLCBFd2tfRnJhbWVfUmVzb3VyY2VfUmVxdWVzdCAqcmVx
dWVzdCkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX1RSVUUp
OwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+YXBpLCBFSU5BX1RSVUUp
OwpAQCAtNDQ4MCwxMCArNDQ3OSwxMCBAQCBXZWJDb3JlOjpGbG9hdFJlY3QgZXdrX3ZpZXdfcGFn
ZV9yZWN0X2dldChFdmFzX09iamVjdCAqbykKIAogICAgIFdlYkNvcmU6OkZyYW1lKiBtYWluX2Zy
YW1lID0gcHJpdi0+cGFnZS0+bWFpbkZyYW1lKCk7CiAgICAgcmV0dXJuIG1haW5fZnJhbWUtPnZp
ZXcoKS0+ZnJhbWVSZWN0KCk7Ci19IAorfQogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLXZv
aWQgZXdrX3ZpZXdfbmVlZF90b3VjaF9ldmVudHNfc2V0KEV2YXNfT2JqZWN0KiBvLCBib29sIG5l
ZWRlZCkKK3ZvaWQgZXdrX3ZpZXdfbmVlZF90b3VjaF9ldmVudHNfc2V0KEV2YXNfT2JqZWN0ICpv
LCBib29sIG5lZWRlZCkKIHsKICAgICBFV0tfVklFV19TRF9HRVQobywgc2QpOwogICAgIEVXS19W
SUVXX1BSSVZfR0VUKHNkLCBwcml2KTsKQEAgLTQ0OTEsNyArNDQ5MCw3IEBAIHZvaWQgZXdrX3Zp
ZXdfbmVlZF90b3VjaF9ldmVudHNfc2V0KEV2YXNfT2JqZWN0KiBvLCBib29sIG5lZWRlZCkKICAg
ICBwcml2LT5mbGFncy5uZWVkX3RvdWNoX2V2ZW50cyA9IG5lZWRlZDsKIH0KIAotRWluYV9Cb29s
IGV3a192aWV3X25lZWRfdG91Y2hfZXZlbnRzX2dldChFdmFzX09iamVjdCogbykKK0VpbmFfQm9v
bCBld2tfdmlld19uZWVkX3RvdWNoX2V2ZW50c19nZXQoRXZhc19PYmplY3QgKm8pCiB7CiAgICAg
RVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJ
RVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKQEAgLTQ1MDgsNyAr
NDUwNyw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19uZWVkX3RvdWNoX2V2ZW50c19nZXQoRXZhc19P
YmplY3QqIG8pCiAgKgogICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgdmlldyBtb2RlIGlzIHNl
dCBhcyB2aWV3X21vZGUsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgogICovCi1FaW5hX0Jvb2wg
ZXdrX3ZpZXdfbW9kZV9zZXQoRXZhc19PYmplY3QqIG8sIEV3a19WaWV3X01vZGUgdmlld19tb2Rl
KQorRWluYV9Cb29sIGV3a192aWV3X21vZGVfc2V0KEV2YXNfT2JqZWN0ICpvLCBFd2tfVmlld19N
b2RlIHZpZXdfbW9kZSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBF
SU5BX0ZBTFNFKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJ
TkFfRkFMU0UpOwpAQCAtNDU0NCw3ICs0NTQzLDcgQEAgRWluYV9Cb29sIGV3a192aWV3X21vZGVf
c2V0KEV2YXNfT2JqZWN0KiBvLCBFd2tfVmlld19Nb2RlIHZpZXdfbW9kZSkKICAqCiAgKiBAcmV0
dXJuIGVudW0gdmFsdWUgb2YgRXdrX1ZpZXdfTW9kZSB0aGF0IGluZGljYXRlcyBjdXJyZW50IHZp
ZXcgbW9kZS4KICAqLwotRXdrX1ZpZXdfTW9kZSBld2tfdmlld19tb2RlX2dldChFdmFzX09iamVj
dCogbykKK0V3a19WaWV3X01vZGUgZXdrX3ZpZXdfbW9kZV9nZXQoRXZhc19PYmplY3QgKm8pCiB7
CiAgICAgRXdrX1ZpZXdfTW9kZSBtb2RlID0gRVdLX1ZJRVdfTU9ERV9XSU5ET1dFRDsKIApAQCAt
NDU4Myw3ICs0NTgyLDcgQEAgRXdrX1ZpZXdfTW9kZSBld2tfdmlld19tb2RlX2dldChFdmFzX09i
amVjdCogbykKICAqCiAgKiBFbWl0cyBzaWduYWw6ICJlZGl0b3JjbGllbnRzZWxlY3Rpb24sY2hh
bmdlZCIgd2l0aCBubyBwYXJhbWV0ZXJzLgogICovCi12b2lkIGV3a192aWV3X2VkaXRvcl9jbGll
bnRfc2VsZWN0aW9uX2NoYW5nZWQoRXZhc19PYmplY3QqIG8pCit2b2lkIGV3a192aWV3X2VkaXRv
cl9jbGllbnRfc2VsZWN0aW9uX2NoYW5nZWQoRXZhc19PYmplY3QgKm8pCiB7CiAgICAgZXZhc19v
YmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChvLCAiZWRpdG9yY2xpZW50LHNlbGVjdGlvbixjaGFu
Z2VkIiwgMCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcu
aCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5oCmluZGV4IGYzM2E3Y2MuLmViNzM2
NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5oCkBAIC0yMzUsNyArMjM1LDcgQEAgc3RydWN0
IF9Fd2tfTWVudV9JdGVtIHsKICAqLwogdHlwZWRlZiBzdHJ1Y3QgX0V3a19NZW51IEV3a19NZW51
Owogc3RydWN0IF9Fd2tfTWVudSB7Ci0gICAgICAgIEVpbmFfTGlzdCogaXRlbXM7CisgICAgICAg
IEVpbmFfTGlzdCAqaXRlbXM7CiAgICAgICAgIGludCB4OwogICAgICAgICBpbnQgeTsKICAgICAg
ICAgaW50IHdpZHRoOwpAQCAtMjQ3LDcgKzI0Nyw3IEBAIHN0cnVjdCBfRXdrX01lbnUgewogICov
CiB0eXBlZGVmIHN0cnVjdCBfRXdrX0Rvd25sb2FkIEV3a19Eb3dubG9hZDsKIHN0cnVjdCBfRXdr
X0Rvd25sb2FkIHsKLSAgICBjb25zdCBjaGFyKiB1cmw7CisgICAgY29uc3QgY2hhciAqdXJsOwog
ICAgIC8qIHRvIGJlIGV4dGVuZGVkICovCiB9OwogCkBAIC00OTUsMjIgKzQ5NSwyMiBAQCBFQVBJ
IEVpbmFfQm9vbCAgICBld2tfdmlld19zZXR0aW5nX2ZvbnRfc2VyaWZfc2V0KEV2YXNfT2JqZWN0
ICpvLCBjb25zdCBjaGFyICpmYQogRUFQSSBjb25zdCBjaGFyICAqZXdrX3ZpZXdfc2V0dGluZ19m
b250X3NhbnNfc2VyaWZfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKIEVBUEkgRWluYV9Cb29s
ICAgIGV3a192aWV3X3NldHRpbmdfZm9udF9zYW5zX3NlcmlmX3NldChFdmFzX09iamVjdCAqbywg
Y29uc3QgY2hhciAqZmFtaWx5KTsKIAotRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2V0dGlu
Z19zcGF0aWFsX25hdmlnYXRpb25fZ2V0KEV2YXNfT2JqZWN0KiBvKTsKLUVBUEkgRWluYV9Cb29s
ICAgIGV3a192aWV3X3NldHRpbmdfc3BhdGlhbF9uYXZpZ2F0aW9uX3NldChFdmFzX09iamVjdCog
bywgRWluYV9Cb29sIGVuYWJsZSk7CitFQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19zZXR0aW5n
X3NwYXRpYWxfbmF2aWdhdGlvbl9nZXQoRXZhc19PYmplY3QgKm8pOworRUFQSSBFaW5hX0Jvb2wg
ICAgZXdrX3ZpZXdfc2V0dGluZ19zcGF0aWFsX25hdmlnYXRpb25fc2V0KEV2YXNfT2JqZWN0ICpv
LCBFaW5hX0Jvb2wgZW5hYmxlKTsKIAotRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2V0dGlu
Z19sb2NhbF9zdG9yYWdlX2dldChFdmFzX09iamVjdCogbyk7Ci1FQVBJIEVpbmFfQm9vbCAgICBl
d2tfdmlld19zZXR0aW5nX2xvY2FsX3N0b3JhZ2Vfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jv
b2wgZW5hYmxlKTsKK0VBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfbG9jYWxfc3Rv
cmFnZV9nZXQoRXZhc19PYmplY3QgKm8pOworRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2V0
dGluZ19sb2NhbF9zdG9yYWdlX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGVuYWJsZSk7
CiBFQVBJIGNvbnN0IGNoYXIgICpld2tfdmlld19zZXR0aW5nX2xvY2FsX3N0b3JhZ2VfZGF0YWJh
c2VfcGF0aF9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwogRUFQSSBFaW5hX0Jvb2wgICAgZXdr
X3ZpZXdfc2V0dGluZ19sb2NhbF9zdG9yYWdlX2RhdGFiYXNlX3BhdGhfc2V0KEV2YXNfT2JqZWN0
ICpvLCBjb25zdCBjaGFyICpwYXRoKTsKIAotRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2V0
dGluZ19wYWdlX2NhY2hlX2dldChFdmFzX09iamVjdCogbyk7Ci1FQVBJIEVpbmFfQm9vbCAgICBl
d2tfdmlld19zZXR0aW5nX3BhZ2VfY2FjaGVfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wg
ZW5hYmxlKTsKK0VBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfcGFnZV9jYWNoZV9n
ZXQoRXZhc19PYmplY3QgKm8pOworRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2V0dGluZ19w
YWdlX2NhY2hlX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGVuYWJsZSk7CiAKLUVBUEkg
RWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfZW5jb2RpbmdfZGV0ZWN0b3JfZ2V0KEV2YXNf
T2JqZWN0KiBvKTsKLUVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfZW5jb2Rpbmdf
ZGV0ZWN0b3Jfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgZW5hYmxlKTsKK0VBUEkgRWlu
YV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfZW5jb2RpbmdfZGV0ZWN0b3JfZ2V0KEV2YXNfT2Jq
ZWN0ICpvKTsKK0VBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfZW5jb2RpbmdfZGV0
ZWN0b3Jfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgZW5hYmxlKTsKIAotRUFQSSBFaW5h
X0Jvb2wgICAgZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfZGV2ZWxvcGVyX2V4dHJhc19nZXQoRXZh
c19PYmplY3QqIG8pOwotRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVf
ZGV2ZWxvcGVyX2V4dHJhc19zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCBlbmFibGUpOwor
RUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfZGV2ZWxvcGVyX2V4dHJh
c19nZXQoRXZhc19PYmplY3QgKm8pOworRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2V0dGlu
Z19lbmFibGVfZGV2ZWxvcGVyX2V4dHJhc19zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBl
bmFibGUpOwogCiAvKiB0byBiZSB1c2VkIGJ5IHN1YmNsYXNzIGltcGxlbWVudGF0aW9ucyAqLwog
RUFQSSBFd2tfVmlld19TbWFydF9EYXRhICpld2tfdmlld19zbWFydF9kYXRhX2dldChjb25zdCBF
dmFzX09iamVjdCAqbyk7CkBAIC01MzksMTYgKzUzOSwxNiBAQCBFQVBJIHZvaWQgZXdrX3ZpZXdf
cGFpbnRfY29udGV4dF90cmFuc2xhdGUoRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCAqY3R4dCwgZmxv
YXQgeAogRUFQSSBFaW5hX0Jvb2wgZXdrX3ZpZXdfcGFpbnQoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRh
ICpwcml2LCBjYWlyb190ICpjciwgY29uc3QgRWluYV9SZWN0YW5nbGUgKmFyZWEpOwogRUFQSSBF
aW5hX0Jvb2wgZXdrX3ZpZXdfcGFpbnRfY29udGVudHMoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpw
cml2LCBjYWlyb190ICpjciwgY29uc3QgRWluYV9SZWN0YW5nbGUgKmFyZWEpOwogCi1FQVBJIHZv
aWQgZXdrX3ZpZXdfdmlld3BvcnRfYXR0cmlidXRlc19nZXQoRXZhc19PYmplY3QgKm8sIGZsb2F0
KiB3LCBmbG9hdCogaCwgZmxvYXQqIGluaXRfc2NhbGUsIGZsb2F0KiBtYXhfc2NhbGUsIGZsb2F0
KiBtaW5fc2NhbGUsIGZsb2F0KiBkZXZpY2VfcGl4ZWxfcmF0aW8gLCBFaW5hX0Jvb2wqIHVzZXJf
c2NhbGFibGUpOwotRUFQSSBFaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV9yYW5nZV9zZXQoRXZhc19P
YmplY3QqIG8sIGZsb2F0IG1pbl9zY2FsZSwgZmxvYXQgbWF4X3NjYWxlKTsKLUVBUEkgZmxvYXQg
ZXdrX3ZpZXdfem9vbV9yYW5nZV9taW5fZ2V0KEV2YXNfT2JqZWN0KiBvKTsKLUVBUEkgZmxvYXQg
ZXdrX3ZpZXdfem9vbV9yYW5nZV9tYXhfZ2V0KEV2YXNfT2JqZWN0KiBvKTsKLUVBUEkgdm9pZCBl
d2tfdmlld191c2VyX3NjYWxhYmxlX3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIHVzZXJf
c2NhbGFibGUpOwotRUFQSSBFaW5hX0Jvb2wgZXdrX3ZpZXdfdXNlcl9zY2FsYWJsZV9nZXQoRXZh
c19PYmplY3QqIG8pOwotRUFQSSBmbG9hdCBld2tfdmlld19kZXZpY2VfcGl4ZWxfcmF0aW9fZ2V0
KEV2YXNfT2JqZWN0KiBvKTsKK0VBUEkgdm9pZCBld2tfdmlld192aWV3cG9ydF9hdHRyaWJ1dGVz
X2dldChFdmFzX09iamVjdCAqbywgZmxvYXQgKncsIGZsb2F0ICpoLCBmbG9hdCAqaW5pdF9zY2Fs
ZSwgZmxvYXQgKm1heF9zY2FsZSwgZmxvYXQgKm1pbl9zY2FsZSwgZmxvYXQgKmRldmljZV9waXhl
bF9yYXRpbyAsIEVpbmFfQm9vbCAqdXNlcl9zY2FsYWJsZSk7CitFQVBJIEVpbmFfQm9vbCBld2tf
dmlld196b29tX3JhbmdlX3NldChFdmFzX09iamVjdCAqbywgZmxvYXQgbWluX3NjYWxlLCBmbG9h
dCBtYXhfc2NhbGUpOworRUFQSSBmbG9hdCBld2tfdmlld196b29tX3JhbmdlX21pbl9nZXQoRXZh
c19PYmplY3QgKm8pOworRUFQSSBmbG9hdCBld2tfdmlld196b29tX3JhbmdlX21heF9nZXQoRXZh
c19PYmplY3QgKm8pOworRUFQSSB2b2lkIGV3a192aWV3X3VzZXJfc2NhbGFibGVfc2V0KEV2YXNf
T2JqZWN0ICpvLCBFaW5hX0Jvb2wgdXNlcl9zY2FsYWJsZSk7CitFQVBJIEVpbmFfQm9vbCBld2tf
dmlld191c2VyX3NjYWxhYmxlX2dldChFdmFzX09iamVjdCAqbyk7CitFQVBJIGZsb2F0IGV3a192
aWV3X2RldmljZV9waXhlbF9yYXRpb19nZXQoRXZhc19PYmplY3QgKm8pOwogCi1FQVBJIEVpbmFf
Qm9vbCBld2tfdmlld19tb2RlX3NldChFdmFzX09iamVjdCogbywgRXdrX1ZpZXdfTW9kZSB2aWV3
X21vZGUpOwotRUFQSSBFd2tfVmlld19Nb2RlIGV3a192aWV3X21vZGVfZ2V0KEV2YXNfT2JqZWN0
KiBvKTsKK0VBUEkgRWluYV9Cb29sIGV3a192aWV3X21vZGVfc2V0KEV2YXNfT2JqZWN0ICpvLCBF
d2tfVmlld19Nb2RlIHZpZXdfbW9kZSk7CitFQVBJIEV3a19WaWV3X01vZGUgZXdrX3ZpZXdfbW9k
ZV9nZXQoRXZhc19PYmplY3QgKm8pOwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYK
</data>

          </attachment>
      

    </bug>

</bugzilla>