<?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>96638</bug_id>
          
          <creation_ts>2012-09-13 05:39:55 -0700</creation_ts>
          <short_desc>[EFL] Remove a lot of C&apos;ism from Ewk_Tiled_Matrix</short_desc>
          <delta_ts>2012-09-13 23:29:03 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>gyuyoung.kim</cc>
    
    <cc>kenneth</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>rakuco</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>719375</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-09-13 05:39:55 -0700</bug_when>
    <thetext>Ewk_Tiled_Matrix contains a lot of C&apos;ism and does not always follow coding style. We should clean it up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719377</commentid>
    <comment_count>1</comment_count>
      <attachid>163848</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-09-13 05:41:57 -0700</bug_when>
    <thetext>Created attachment 163848
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719579</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-09-13 09:19:35 -0700</bug_when>
    <thetext>Could someone please take a look at this one?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720066</commentid>
    <comment_count>3</comment_count>
      <attachid>163848</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-09-13 16:02:48 -0700</bug_when>
    <thetext>Comment on attachment 163848
Patch

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

Good to me.

I found some small things which you may like.

&gt; Source/WebKit/efl/ewk/ewk_tiled_matrix.cpp:252
&gt;          if (iterator-&gt;zoom != zoom)
&gt;              continue;
&gt; -        entry = iterator;
&gt; -        tileMatrix-&gt;matrices = eina_inlist_promote(tileMatrix-&gt;matrices, EINA_INLIST_GET(entry));
&gt; -        tileMatrix-&gt;matrix = entry-&gt;matrix;
&gt; +
&gt; +        tileMatrix-&gt;matrices = eina_inlist_promote(tileMatrix-&gt;matrices, EINA_INLIST_GET(iterator));
&gt; +        tileMatrix-&gt;matrix = iterator-&gt;matrix;
&gt;          return true;

if (iterator-&gt;zoom == zoom) {
    ...
    return true;
}

Although it may not be related to C&apos;sm, I think that you like this more.

&gt; Source/WebKit/efl/ewk/ewk_tiled_matrix.cpp:579
&gt; +        unsigned long col = info-&gt;col;
&gt; +        unsigned long row = info-&gt;row;
&gt;  
&gt;          Ewk_Tile* tile = static_cast&lt;Ewk_Tile*&gt;(eina_matrixsparse_data_idx_get(tileMatrix-&gt;matrix, row, col));

What do you think about passing them instead of making local variable?

&gt; Source/WebKit/efl/ewk/ewk_tiled_matrix.cpp:628
&gt; +    bool last_empty = false;

lastEmpty looks correct for webkit style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720303</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-09-13 22:01:34 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 163848 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=163848&amp;action=review
&gt; 
&gt; Good to me.
&gt; 
&gt; I found some small things which you may like.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_tiled_matrix.cpp:252
&gt; &gt;          if (iterator-&gt;zoom != zoom)
&gt; &gt;              continue;
&gt; &gt; -        entry = iterator;
&gt; &gt; -        tileMatrix-&gt;matrices = eina_inlist_promote(tileMatrix-&gt;matrices, EINA_INLIST_GET(entry));
&gt; &gt; -        tileMatrix-&gt;matrix = entry-&gt;matrix;
&gt; &gt; +
&gt; &gt; +        tileMatrix-&gt;matrices = eina_inlist_promote(tileMatrix-&gt;matrices, EINA_INLIST_GET(iterator));
&gt; &gt; +        tileMatrix-&gt;matrix = iterator-&gt;matrix;
&gt; &gt;          return true;
&gt; 
&gt; if (iterator-&gt;zoom == zoom) {
&gt;     ...
&gt;     return true;
&gt; }
&gt; 
&gt; Although it may not be related to C&apos;sm, I think that you like this more.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_tiled_matrix.cpp:579
&gt; &gt; +        unsigned long col = info-&gt;col;
&gt; &gt; +        unsigned long row = info-&gt;row;
&gt; &gt;  
&gt; &gt;          Ewk_Tile* tile = static_cast&lt;Ewk_Tile*&gt;(eina_matrixsparse_data_idx_get(tileMatrix-&gt;matrix, row, col));
&gt; 
&gt; What do you think about passing them instead of making local variable?
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_tiled_matrix.cpp:628
&gt; &gt; +    bool last_empty = false;
&gt; 
&gt; lastEmpty looks correct for webkit style.

Thanks for taking a look Ryuan. I&apos;ll improve the patch based on your comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720325</commentid>
    <comment_count>5</comment_count>
      <attachid>164051</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-09-13 22:49:13 -0700</bug_when>
    <thetext>Created attachment 164051
Patch

Take Ryuan&apos;s feedback into consideration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720334</commentid>
    <comment_count>6</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-09-13 22:58:58 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Created an attachment (id=164051) [details]
&gt; Patch
&gt; 
&gt; Take Ryuan&apos;s feedback into consideration.

Looks good to me.
Thank you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720335</commentid>
    <comment_count>7</comment_count>
      <attachid>164051</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-09-13 23:01:48 -0700</bug_when>
    <thetext>Comment on attachment 164051
Patch

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

Looks fine thanks.

&gt; Source/WebKit/efl/ewk/ewk_tiled_matrix.cpp:399
&gt; +#ifndef NDEBUG

Don&apos;t you need to check this routine in normal mode ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720336</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-09-13 23:04:29 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 164051 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=164051&amp;action=review
&gt; 
&gt; Looks fine thanks.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_tiled_matrix.cpp:399
&gt; &gt; +#ifndef NDEBUG
&gt; 
&gt; Don&apos;t you need to check this routine in normal mode ?

If you look at the code, it does nothing besides doing extra checks and printing a warning. This is debug code IMO. In release mode, it would only slow us down.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720340</commentid>
    <comment_count>9</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-09-13 23:11:39 -0700</bug_when>
    <thetext>(In reply to comment #8)

&gt; If you look at the code, it does nothing besides doing extra checks and printing a warning. This is debug code IMO. In release mode, it would only slow us down.

I just wanna verify it. Thanks. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720353</commentid>
    <comment_count>10</comment_count>
      <attachid>164051</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-13 23:28:59 -0700</bug_when>
    <thetext>Comment on attachment 164051
Patch

Clearing flags on attachment: 164051

Committed r128560: &lt;http://trac.webkit.org/changeset/128560&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720354</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-13 23:29:03 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163848</attachid>
            <date>2012-09-13 05:41:57 -0700</date>
            <delta_ts>2012-09-13 22:49:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>96638_ewk_tiled_matrix_cism.patch</filename>
            <type>text/plain</type>
            <size>21840</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZwppbmRleCA0MmViZjQ3Li44Njc1MmEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzcgQEAKKzIwMTItMDktMTMgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhl
LmR1bWV6QGludGVsLmNvbT4KKworICAgICAgICBbRUZMXSBSZW1vdmUgYSBsb3Qgb2YgQydpc20g
ZnJvbSBFd2tfVGlsZWRfTWF0cml4CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05NjYzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFJlbW92ZSBhIGxvdCBvZiBDJ2lzbSBmcm9tIEV3a19UaWxlZF9NYXRyaXgg
YW5kCisgICAgICAgIGZpeCB0aGUgY29kZSBzbyB0aGF0IGl0IGZvbGxvd3MgY29kaW5nIHN0eWxl
LgorCisgICAgICAgICogZXdrL2V3a190aWxlZF9tYXRyaXguY3BwOgorICAgICAgICAoX0V3a19U
aWxlX01hdHJpeCk6CisgICAgICAgIChfZXdrX3RpbGVfbWF0cml4X2NlbGxfZnJlZSk6CisgICAg
ICAgIChfZXdrX3RpbGVfbWF0cml4X3RpbGVfZnJlZSk6CisgICAgICAgIChld2tfdGlsZV9tYXRy
aXhfem9vbV9sZXZlbF9zZXQpOgorICAgICAgICAoZXdrX3RpbGVfbWF0cml4X2ludmFsaWRhdGUp
OgorICAgICAgICAoZXdrX3RpbGVfbWF0cml4X2ZyZWUpOgorICAgICAgICAoZXdrX3RpbGVfbWF0
cml4X3Jlc2l6ZSk6CisgICAgICAgIChld2tfdGlsZV9tYXRyaXhfc2l6ZV9nZXQpOgorICAgICAg
ICAoZXdrX3RpbGVfbWF0cml4X3VudXNlZF9jYWNoZV9nZXQpOgorICAgICAgICAoZXdrX3RpbGVf
bWF0cml4X3RpbGVfZXhhY3RfZ2V0KToKKyAgICAgICAgKGV3a190aWxlX21hdHJpeF90aWxlX2V4
YWN0X2V4aXN0cyk6CisgICAgICAgIChld2tfdGlsZV9tYXRyaXhfdGlsZV9uZXcpOgorICAgICAg
ICAoZXdrX3RpbGVfbWF0cml4X3RpbGVfcHV0KToKKyAgICAgICAgKGV3a190aWxlX21hdHJpeF90
aWxlX3VwZGF0ZXNfY2xlYXIpOgorICAgICAgICAoX2V3a190aWxlX21hdHJpeF9zbGljZXJfc2V0
dXApOgorICAgICAgICAoZXdrX3RpbGVfbWF0cml4X3VwZGF0ZSk6CisgICAgICAgIChld2tfdGls
ZV9tYXRyaXhfdXBkYXRlc19wcm9jZXNzKToKKyAgICAgICAgKGV3a190aWxlX21hdHJpeF91cGRh
dGVzX2NsZWFyKToKKyAgICAgICAgKGV3a190aWxlX21hdHJpeF9kYmcpOgorICAgICAgICAoZXdr
X3RpbGVfbWF0cml4X2ZyZWV6ZSk6CisgICAgICAgIChld2tfdGlsZV9tYXRyaXhfdGhhdyk6Cisg
ICAgICAgICogZXdrL2V3a190aWxlZF9tYXRyaXhfcHJpdmF0ZS5oOgorCiAyMDEyLTA5LTEyICBT
aGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJl
dmlld2VkLCByb2xsaW5nIG91dCByMTI3ODc2LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a190aWxlZF9tYXRyaXguY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190
aWxlZF9tYXRyaXguY3BwCmluZGV4IGY5Mzc2NGYuLjQ4YmQ5MWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRfbWF0cml4LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX3RpbGVkX21hdHJpeC5jcHAKQEAgLTM1LDE1ICszNSwxMyBAQAogI2luY2x1
ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCi1zdHJ1Y3Qg
X0V3a19UaWxlX01hdHJpeF9FbnRyeSB7CitzdHJ1Y3QgRXdrX1RpbGVfTWF0cml4X0VudHJ5IHsK
ICAgICBFSU5BX0lOTElTVDsKICAgICBmbG9hdCB6b29tOwogICAgIHVuc2lnbmVkIGxvbmcgY291
bnQ7CiAgICAgRWluYV9NYXRyaXhzcGFyc2UqIG1hdHJpeDsKIH07CiAKLXR5cGVkZWYgc3RydWN0
IF9Fd2tfVGlsZV9NYXRyaXhfRW50cnkgRXdrX1RpbGVfTWF0cml4X0VudHJ5OwotCiBzdHJ1Y3Qg
X0V3a19UaWxlX01hdHJpeCB7CiAgICAgRWluYV9NYXRyaXhzcGFyc2UqIG1hdHJpeDsKICAgICBF
aW5hX0lubGlzdCogbWF0cmljZXM7CkBAIC0xMDUsMjMgKzEwMywyMSBAQCBzdGF0aWMgdm9pZCBf
ZXdrX3RpbGVfbWF0cml4X2NlbGxfZnJlZSh2b2lkKiB1c2VyRGF0YSwgdm9pZCogY2VsbERhdGEp
CiAgICAgaWYgKHRpbGUtPnZpc2libGUpCiAgICAgICAgIEVSUigiZnJlZWluZyBjZWxsIHRoYXQg
aXMgdmlzaWJsZSwgbGVha2luZyB0aWxlICVwIiwgdGlsZSk7CiAgICAgZWxzZSB7Ci0gICAgICAg
IGlmICghZXdrX3RpbGVfdW51c2VkX2NhY2hlX3RpbGVfZ2V0KHRpbGVNYXRyaXgtPnRpbGVVbnVz
ZWRDYWNoZSwgdGlsZSkpCi0gICAgICAgICAgICBFUlIoInRpbGUgJXAgd2FzIG5vdCBpbiBjYWNo
ZSAlcD8gbGVha2luZy4uLiIsIHRpbGUsIHRpbGVNYXRyaXgtPnRpbGVVbnVzZWRDYWNoZSk7Ci0g
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgRXdrX1RpbGVfTWF0cml4X0VudHJ5KiBlbnRyeTsK
KyAgICAgICAgaWYgKGV3a190aWxlX3VudXNlZF9jYWNoZV90aWxlX2dldCh0aWxlTWF0cml4LT50
aWxlVW51c2VkQ2FjaGUsIHRpbGUpKSB7CiAgICAgICAgICAgICBEQkcoInRpbGUgY2VsbCBkb2Vz
IG5vdCBleGlzdCBhbnltb3JlLCBmcmVlIGl0ICVwIiwgdGlsZSk7CiAjaWZkZWYgREVCVUdfTUVN
X0xFQUtTCiAgICAgICAgICAgICB0aWxlTWF0cml4LT5zdGF0cy5ieXRlcy5mcmVlZCArPSB0aWxl
LT5ieXRlczsKICAgICAgICAgICAgIHRpbGVNYXRyaXgtPnN0YXRzLnRpbGVzLmZyZWVkKys7CiAj
ZW5kaWYKLSAgICAgICAgICAgIGVudHJ5ID0gZXdrX3RpbGVfbWF0cml4X2VudHJ5X2dldCh0aWxl
TWF0cml4LCB0aWxlLT56b29tKTsKKyAgICAgICAgICAgIEV3a19UaWxlX01hdHJpeF9FbnRyeSog
ZW50cnkgPSBld2tfdGlsZV9tYXRyaXhfZW50cnlfZ2V0KHRpbGVNYXRyaXgsIHRpbGUtPnpvb20p
OwogICAgICAgICAgICAgaWYgKCFlbnRyeSkKICAgICAgICAgICAgICAgICBFUlIoImNhbid0IGZp
bmQgbWF0cml4IGZvciB6b29tICUwLjNmIiwgdGlsZS0+em9vbSk7CiAgICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgZW50cnktPmNvdW50LS07CisgICAgICAgICAgICAgICAgLS1lbnRy
eS0+Y291bnQ7CiAKICAgICAgICAgICAgIGV3a190aWxlX2ZyZWUodGlsZSk7Ci0gICAgICAgIH0K
KyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBFUlIoInRpbGUgJXAgd2FzIG5vdCBpbiBjYWNo
ZSAlcD8gbGVha2luZy4uLiIsIHRpbGUsIHRpbGVNYXRyaXgtPnRpbGVVbnVzZWRDYWNoZSk7CiAg
ICAgfQogCiAgICAgZXdrX3RpbGVfdW51c2VkX2NhY2hlX3RoYXcodGlsZU1hdHJpeC0+dGlsZVVu
dXNlZENhY2hlKTsKQEAgLTEzMSwxNSArMTI3LDE0IEBAIHN0YXRpYyB2b2lkIF9ld2tfdGlsZV9t
YXRyaXhfY2VsbF9mcmVlKHZvaWQqIHVzZXJEYXRhLCB2b2lkKiBjZWxsRGF0YSkKIHN0YXRpYyB2
b2lkIF9ld2tfdGlsZV9tYXRyaXhfdGlsZV9mcmVlKHZvaWQqIGRhdGEsIEV3a19UaWxlKiB0aWxl
KQogewogICAgIEV3a19UaWxlX01hdHJpeCogdGlsZU1hdHJpeCA9IHN0YXRpY19jYXN0PEV3a19U
aWxlX01hdHJpeCo+KGRhdGEpOwotICAgIEV3a19UaWxlX01hdHJpeF9FbnRyeSogZW50cnk7Ci0g
ICAgRWluYV9NYXRyaXhzcGFyc2VfQ2VsbCogY2VsbDsKIAotICAgIGVudHJ5ID0gZXdrX3RpbGVf
bWF0cml4X2VudHJ5X2dldCh0aWxlTWF0cml4LCB0aWxlLT56b29tKTsKKyAgICBFd2tfVGlsZV9N
YXRyaXhfRW50cnkqIGVudHJ5ID0gZXdrX3RpbGVfbWF0cml4X2VudHJ5X2dldCh0aWxlTWF0cml4
LCB0aWxlLT56b29tKTsKICAgICBpZiAoIWVudHJ5KSB7CiAgICAgICAgIEVSUigicmVtb3Zpbmcg
dGlsZSAlcCB0aGF0IHdhcyBub3QgaW4gYW55IG1hdHJpeD8gTGVha2luZy4uLiIsIHRpbGUpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgRWluYV9NYXRyaXhzcGFyc2VfQ2VsbCogY2Vs
bDsKICAgICBpZiAoIWVpbmFfbWF0cml4c3BhcnNlX2NlbGxfaWR4X2dldChlbnRyeS0+bWF0cml4
LCB0aWxlLT5yb3csIHRpbGUtPmNvbHVtbiwgJmNlbGwpKSB7CiAKICAgICAgICAgRVJSKCJyZW1v
dmluZyB0aWxlICVwIHRoYXQgd2FzIG5vdCBpbiB0aGUgbWF0cml4PyBMZWFraW5nLi4uIiwgdGls
ZSk7CkBAIC0xNjksNyArMTY0LDcgQEAgc3RhdGljIHZvaWQgX2V3a190aWxlX21hdHJpeF90aWxl
X2ZyZWUodm9pZCogZGF0YSwgRXdrX1RpbGUqIHRpbGUpCiAgICAgdGlsZU1hdHJpeC0+c3RhdHMu
dGlsZXMuZnJlZWQrKzsKICNlbmRpZgogCi0gICAgZW50cnktPmNvdW50LS07CisgICAgLS1lbnRy
eS0+Y291bnQ7CiAgICAgaWYgKCFlbnRyeS0+Y291bnQgJiYgZW50cnktPm1hdHJpeCAhPSB0aWxl
TWF0cml4LT5tYXRyaXgpIHsKICAgICAgICAgZWluYV9tYXRyaXhzcGFyc2VfZnJlZShlbnRyeS0+
bWF0cml4KTsKICAgICAgICAgdGlsZU1hdHJpeC0+bWF0cmljZXMgPSBlaW5hX2lubGlzdF9yZW1v
dmUodGlsZU1hdHJpeC0+bWF0cmljZXMsIEVJTkFfSU5MSVNUX0dFVChlbnRyeSkpOwpAQCAtMjQ2
LDE1ICsyNDEsMTQgQEAgRXdrX1RpbGVfTWF0cml4KiBld2tfdGlsZV9tYXRyaXhfbmV3KEV3a19U
aWxlX1VudXNlZF9DYWNoZSogdGlsZVVudXNlZENhY2hlLCB1bnMKIGJvb2wgZXdrX3RpbGVfbWF0
cml4X3pvb21fbGV2ZWxfc2V0KEV3a19UaWxlX01hdHJpeCogdGlsZU1hdHJpeCwgZmxvYXQgem9v
bSkKIHsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwodGlsZU1hdHJpeCwgZmFs
c2UpOwotICAgIEV3a19UaWxlX01hdHJpeF9FbnRyeSogaXRlcmF0b3IgPSAwOwotICAgIEV3a19U
aWxlX01hdHJpeF9FbnRyeSogZW50cnkgPSAwOwogCisgICAgRXdrX1RpbGVfTWF0cml4X0VudHJ5
KiBpdGVyYXRvcjsKICAgICBFSU5BX0lOTElTVF9GT1JFQUNIKHRpbGVNYXRyaXgtPm1hdHJpY2Vz
LCBpdGVyYXRvcikgewogICAgICAgICBpZiAoaXRlcmF0b3ItPnpvb20gIT0gem9vbSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICBlbnRyeSA9IGl0ZXJhdG9yOwotICAgICAgICB0aWxl
TWF0cml4LT5tYXRyaWNlcyA9IGVpbmFfaW5saXN0X3Byb21vdGUodGlsZU1hdHJpeC0+bWF0cmlj
ZXMsIEVJTkFfSU5MSVNUX0dFVChlbnRyeSkpOwotICAgICAgICB0aWxlTWF0cml4LT5tYXRyaXgg
PSBlbnRyeS0+bWF0cml4OworCisgICAgICAgIHRpbGVNYXRyaXgtPm1hdHJpY2VzID0gZWluYV9p
bmxpc3RfcHJvbW90ZSh0aWxlTWF0cml4LT5tYXRyaWNlcywgRUlOQV9JTkxJU1RfR0VUKGl0ZXJh
dG9yKSk7CisgICAgICAgIHRpbGVNYXRyaXgtPm1hdHJpeCA9IGl0ZXJhdG9yLT5tYXRyaXg7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CkBAIC0yODAsMTMg
KzI3NCwxMSBAQCB2b2lkIGV3a190aWxlX21hdHJpeF9lbnRyeV9uZXcoRXdrX1RpbGVfTWF0cml4
KiB0aWxlTWF0cml4LCBmbG9hdCB6b29tKQogdm9pZCBld2tfdGlsZV9tYXRyaXhfaW52YWxpZGF0
ZShFd2tfVGlsZV9NYXRyaXgqIHRpbGVNYXRyaXgpCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk4odGlsZU1hdHJpeCk7Ci0gICAgRXdrX1RpbGVfTWF0cml4X0VudHJ5KiBpdGVyYXRv
cjsKLSAgICBFaW5hX0lubGlzdCogbWF0cml4TGlzdDsKIAotICAgIG1hdHJpeExpc3QgPSB0aWxl
TWF0cml4LT5tYXRyaWNlczsKKyAgICBFaW5hX0lubGlzdCogbWF0cml4TGlzdCA9IHRpbGVNYXRy
aXgtPm1hdHJpY2VzOwogICAgIHdoaWxlIChtYXRyaXhMaXN0KSB7Ci0gICAgICAgIGl0ZXJhdG9y
ID0gRUlOQV9JTkxJU1RfQ09OVEFJTkVSX0dFVChtYXRyaXhMaXN0LCBFd2tfVGlsZV9NYXRyaXhf
RW50cnkpOwotICAgICAgICBFaW5hX0lubGlzdCogbmV4dCA9IChtYXRyaXhMaXN0LT5uZXh0KSA/
IG1hdHJpeExpc3QtPm5leHQgOiAwOworICAgICAgICBFd2tfVGlsZV9NYXRyaXhfRW50cnkqIGl0
ZXJhdG9yID0gRUlOQV9JTkxJU1RfQ09OVEFJTkVSX0dFVChtYXRyaXhMaXN0LCBFd2tfVGlsZV9N
YXRyaXhfRW50cnkpOworICAgICAgICBFaW5hX0lubGlzdCogbmV4dCA9IG1hdHJpeExpc3QtPm5l
eHQ7CiAKICAgICAgICAgaWYgKGl0ZXJhdG9yLT5tYXRyaXggIT0gdGlsZU1hdHJpeC0+bWF0cml4
KSB7CiAgICAgICAgICAgICBlaW5hX21hdHJpeHNwYXJzZV9mcmVlKGl0ZXJhdG9yLT5tYXRyaXgp
OwpAQCAtMzA1LDE2ICsyOTcsMTEgQEAgdm9pZCBld2tfdGlsZV9tYXRyaXhfaW52YWxpZGF0ZShF
d2tfVGlsZV9NYXRyaXgqIHRpbGVNYXRyaXgpCiAgKi8KIHZvaWQgZXdrX3RpbGVfbWF0cml4X2Zy
ZWUoRXdrX1RpbGVfTWF0cml4KiB0aWxlTWF0cml4KQogewotICAgIEV3a19UaWxlX01hdHJpeF9F
bnRyeSogZW50cnk7Ci0jaWZkZWYgREVCVUdfTUVNX0xFQUtTCi0gICAgdWludDY0X3QgdGlsZXMs
IGJ5dGVzOwotI2VuZGlmCi0KICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTih0aWxlTWF0
cml4KTsKIAogICAgIGV3a190aWxlX3VudXNlZF9jYWNoZV9mcmVlemUodGlsZU1hdHJpeC0+dGls
ZVVudXNlZENhY2hlKTsKICAgICBld2tfdGlsZV9tYXRyaXhfaW52YWxpZGF0ZSh0aWxlTWF0cml4
KTsKLSAgICBlbnRyeSA9IEVJTkFfSU5MSVNUX0NPTlRBSU5FUl9HRVQodGlsZU1hdHJpeC0+bWF0
cmljZXMsIEV3a19UaWxlX01hdHJpeF9FbnRyeSk7CisgICAgRXdrX1RpbGVfTWF0cml4X0VudHJ5
KiBlbnRyeSA9IEVJTkFfSU5MSVNUX0NPTlRBSU5FUl9HRVQodGlsZU1hdHJpeC0+bWF0cmljZXMs
IEV3a19UaWxlX01hdHJpeF9FbnRyeSk7CiAgICAgZWluYV9tYXRyaXhzcGFyc2VfZnJlZShlbnRy
eS0+bWF0cml4KTsKICAgICB0aWxlTWF0cml4LT5tYXRyaWNlcyA9IGVpbmFfaW5saXN0X3JlbW92
ZSh0aWxlTWF0cml4LT5tYXRyaWNlcywgcmVpbnRlcnByZXRfY2FzdDxFaW5hX0lubGlzdCo+KGVu
dHJ5KSk7CiAgICAgdGlsZU1hdHJpeC0+bWF0cmljZXMgPSAwOwpAQCAtMzI0LDggKzMxMSw4IEBA
IHZvaWQgZXdrX3RpbGVfbWF0cml4X2ZyZWUoRXdrX1RpbGVfTWF0cml4KiB0aWxlTWF0cml4KQog
ICAgIGV3a190aWxlX3VudXNlZF9jYWNoZV91bnJlZih0aWxlTWF0cml4LT50aWxlVW51c2VkQ2Fj
aGUpOwogCiAjaWZkZWYgREVCVUdfTUVNX0xFQUtTCi0gICAgdGlsZXMgPSB0aWxlTWF0cml4LT5z
dGF0cy50aWxlcy5hbGxvY2F0ZWQgLSB0aWxlTWF0cml4LT5zdGF0cy50aWxlcy5mcmVlZDsKLSAg
ICBieXRlcyA9IHRpbGVNYXRyaXgtPnN0YXRzLmJ5dGVzLmFsbG9jYXRlZCAtIHRpbGVNYXRyaXgt
PnN0YXRzLmJ5dGVzLmZyZWVkOworICAgIHVpbnQ2NF90IHRpbGVzID0gdGlsZU1hdHJpeC0+c3Rh
dHMudGlsZXMuYWxsb2NhdGVkIC0gdGlsZU1hdHJpeC0+c3RhdHMudGlsZXMuZnJlZWQ7CisgICAg
dWludDY0X3QgYnl0ZXMgPSB0aWxlTWF0cml4LT5zdGF0cy5ieXRlcy5hbGxvY2F0ZWQgLSB0aWxl
TWF0cml4LT5zdGF0cy5ieXRlcy5mcmVlZDsKIAogICAgIHRpbGVzX2xlYWtlZCArPSB0aWxlczsK
ICAgICBieXRlc19sZWFrZWQgKz0gYnl0ZXM7CkBAIC0zNTgsMTIgKzM0NSwxNCBAQCB2b2lkIGV3
a190aWxlX21hdHJpeF9mcmVlKEV3a19UaWxlX01hdHJpeCogdGlsZU1hdHJpeCkKIHZvaWQgZXdr
X3RpbGVfbWF0cml4X3Jlc2l6ZShFd2tfVGlsZV9NYXRyaXgqIHRpbGVNYXRyaXgsIHVuc2lnbmVk
IGxvbmcgY29scywgdW5zaWduZWQgbG9uZyByb3dzKQogewogICAgIEVJTkFfU0FGRVRZX09OX05V
TExfUkVUVVJOKHRpbGVNYXRyaXgpOworCiAgICAgZWluYV9tYXRyaXhzcGFyc2Vfc2l6ZV9zZXQo
dGlsZU1hdHJpeC0+bWF0cml4LCByb3dzLCBjb2xzKTsKIH0KIAogdm9pZCBld2tfdGlsZV9tYXRy
aXhfc2l6ZV9nZXQoRXdrX1RpbGVfTWF0cml4KiB0aWxlTWF0cml4LCB1bnNpZ25lZCBsb25nKiBj
b2x1bW5zLCB1bnNpZ25lZCBsb25nKiByb3dzKQogewogICAgIEVJTkFfU0FGRVRZX09OX05VTExf
UkVUVVJOKHRpbGVNYXRyaXgpOworCiAgICAgZWluYV9tYXRyaXhzcGFyc2Vfc2l6ZV9nZXQodGls
ZU1hdHJpeC0+bWF0cml4LCByb3dzLCBjb2x1bW5zKTsKIH0KIApAQCAtMzc1LDYgKzM2NCw3IEBA
IHZvaWQgZXdrX3RpbGVfbWF0cml4X3NpemVfZ2V0KEV3a19UaWxlX01hdHJpeCogdGlsZU1hdHJp
eCwgdW5zaWduZWQgbG9uZyogY29sdW1uCiBFd2tfVGlsZV9VbnVzZWRfQ2FjaGUqIGV3a190aWxl
X21hdHJpeF91bnVzZWRfY2FjaGVfZ2V0KGNvbnN0IEV3a19UaWxlX01hdHJpeCogdGlsZU1hdHJp
eCkKIHsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwodGlsZU1hdHJpeCwgMCk7
CisKICAgICByZXR1cm4gdGlsZU1hdHJpeC0+dGlsZVVudXNlZENhY2hlOwogfQogCkBAIC00MDUs
MTQgKzM5NSwxNSBAQCBFd2tfVGlsZSogZXdrX3RpbGVfbWF0cml4X3RpbGVfZXhhY3RfZ2V0KEV3
a19UaWxlX01hdHJpeCogdGlsZU1hdHJpeCwgdW5zaWduZWQgbAogICAgIGlmICghdGlsZSkKICAg
ICAgICAgcmV0dXJuIDA7CiAKLSAgICBpZiAodGlsZS0+em9vbSA9PSB6b29tKQotICAgICAgICBn
b3RvIGVuZDsKKyAgICBpZiAodGlsZS0+em9vbSAhPSB6b29tKQorICAgICAgICByZXR1cm4gMDsK
IAotZW5kOgorI2lmbmRlZiBOREVCVUcKICAgICBpZiAoIXRpbGUtPnZpc2libGUpIHsKICAgICAg
ICAgaWYgKCFld2tfdGlsZV91bnVzZWRfY2FjaGVfdGlsZV9nZXQodGlsZU1hdHJpeC0+dGlsZVVu
dXNlZENhY2hlLCB0aWxlKSkKICAgICAgICAgICAgIFdSTigiRXdrX1RpbGUgd2FzIHVudXNlZCBi
dXQgbm90IGluIGNhY2hlPyBidWchIik7CiAgICAgfQorI2VuZGlmCiAKICAgICByZXR1cm4gdGls
ZTsKIH0KQEAgLTQyOSwxMiArNDIwLDkgQEAgZW5kOgogICoKICAqIEBzZWUgZXdrX3RpbGVfbWF0
cml4X3RpbGVfZXhhY3RfZ2V0KCkKICAqLwotRWluYV9Cb29sIGV3a190aWxlX21hdHJpeF90aWxl
X2V4YWN0X2V4aXN0cyhFd2tfVGlsZV9NYXRyaXgqIHRpbGVNYXRyaXgsIHVuc2lnbmVkIGxvbmcg
Y29sdW1uLCB1bnNpZ25lZCBsb25nIHJvdywgZmxvYXQgem9vbSkKK2Jvb2wgZXdrX3RpbGVfbWF0
cml4X3RpbGVfZXhhY3RfZXhpc3RzKEV3a19UaWxlX01hdHJpeCogdGlsZU1hdHJpeCwgdW5zaWdu
ZWQgbG9uZyBjb2x1bW4sIHVuc2lnbmVkIGxvbmcgcm93LCBmbG9hdCB6b29tKQogewotICAgIGlm
ICghZWluYV9tYXRyaXhzcGFyc2VfZGF0YV9pZHhfZ2V0KHRpbGVNYXRyaXgtPm1hdHJpeCwgcm93
LCBjb2x1bW4pKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKKyAg
ICByZXR1cm4gZXdrX3RpbGVfbWF0cml4X3RpbGVfZXhhY3RfZ2V0KHRpbGVNYXRyaXgsIGNvbHVt
biwgcm93LCB6b29tKTsKIH0KIAogLyoqCkBAIC00NTEsMjMgKzQzOSwyMCBAQCBFaW5hX0Jvb2wg
ZXdrX3RpbGVfbWF0cml4X3RpbGVfZXhhY3RfZXhpc3RzKEV3a19UaWxlX01hdHJpeCogdGlsZU1h
dHJpeCwgdW5zaWduZQogICovCiBFd2tfVGlsZSogZXdrX3RpbGVfbWF0cml4X3RpbGVfbmV3KEV3
a19UaWxlX01hdHJpeCogdGlsZU1hdHJpeCwgRXZhcyogY2FudmFzLCB1bnNpZ25lZCBsb25nIGNv
bHVtbiwgdW5zaWduZWQgbG9uZyByb3csIGZsb2F0IHpvb20pCiB7Ci0gICAgRXZhc19Db29yZCB0
aWxlV2lkdGgsIHRpbGVIZWlnaHQ7Ci0gICAgRXdrX1RpbGUqIHRpbGU7Ci0gICAgRXdrX1RpbGVf
TWF0cml4X0VudHJ5KiBlbnRyeTsKLQogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZB
TCh0aWxlTWF0cml4LCAwKTsKICAgICBFSU5BX1NBRkVUWV9PTl9GQUxTRV9SRVRVUk5fVkFMKHpv
b20gPiAwLjAsIDApOwotICAgIGVudHJ5ID0gZXdrX3RpbGVfbWF0cml4X2VudHJ5X2dldCh0aWxl
TWF0cml4LCB6b29tKTsKKworICAgIEV3a19UaWxlX01hdHJpeF9FbnRyeSogZW50cnkgPSBld2tf
dGlsZV9tYXRyaXhfZW50cnlfZ2V0KHRpbGVNYXRyaXgsIHpvb20pOwogICAgIGlmICghZW50cnkp
IHsKICAgICAgICAgRVJSKCJjb3VsZCBub3QgZ2V0IG1hdHJpeCBhdCB6b29tICVmIGZvciB0aWxl
Iiwgem9vbSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICBlbnRyeS0+Y291bnQrKzsK
KyAgICArK2VudHJ5LT5jb3VudDsKIAotICAgIHRpbGVXaWR0aCA9IHRpbGVNYXRyaXgtPnRpbGUu
d2lkdGg7Ci0gICAgdGlsZUhlaWdodCA9IHRpbGVNYXRyaXgtPnRpbGUuaGVpZ2h0OworICAgIEV2
YXNfQ29vcmQgdGlsZVdpZHRoID0gdGlsZU1hdHJpeC0+dGlsZS53aWR0aDsKKyAgICBFdmFzX0Nv
b3JkIHRpbGVIZWlnaHQgPSB0aWxlTWF0cml4LT50aWxlLmhlaWdodDsKIAotICAgIHRpbGUgPSBl
d2tfdGlsZV9uZXcoY2FudmFzLCB0aWxlV2lkdGgsIHRpbGVIZWlnaHQsIHpvb20sIHRpbGVNYXRy
aXgtPmNzcGFjZSk7CisgICAgRXdrX1RpbGUqIHRpbGUgPSBld2tfdGlsZV9uZXcoY2FudmFzLCB0
aWxlV2lkdGgsIHRpbGVIZWlnaHQsIHpvb20sIHRpbGVNYXRyaXgtPmNzcGFjZSk7CiAgICAgaWYg
KCF0aWxlKSB7CiAgICAgICAgIEVSUigiY291bGQgbm90IGNyZWF0ZSB0aWxlICVkeCVkIGF0ICVm
LCBjc3BhY2U9JWQiLCB0aWxlV2lkdGgsIHRpbGVIZWlnaHQsIChkb3VibGUpem9vbSwgdGlsZU1h
dHJpeC0+Y3NwYWNlKTsKICAgICAgICAgcmV0dXJuIDA7CkBAIC01MTEsNyArNDk2LDcgQEAgRXdr
X1RpbGUqIGV3a190aWxlX21hdHJpeF90aWxlX25ldyhFd2tfVGlsZV9NYXRyaXgqIHRpbGVNYXRy
aXgsIEV2YXMqIGNhbnZhcywgdW4KICAqCiAgKiBAcmV0dXJuICN0cnVlIG9uIHN1Y2Nlc3Mgb3Ig
I2ZhbHNlIG9uIGZhaWx1cmUuCiAgKi8KLUVpbmFfQm9vbCBld2tfdGlsZV9tYXRyaXhfdGlsZV9w
dXQoRXdrX1RpbGVfTWF0cml4KiB0aWxlTWF0cml4LCBFd2tfVGlsZSogdGlsZSwgZG91YmxlIGxh
c3RVc2VkKQorYm9vbCBld2tfdGlsZV9tYXRyaXhfdGlsZV9wdXQoRXdrX1RpbGVfTWF0cml4KiB0
aWxlTWF0cml4LCBFd2tfVGlsZSogdGlsZSwgZG91YmxlIGxhc3RVc2VkKQogewogICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTCh0aWxlTWF0cml4LCBmYWxzZSk7CiAgICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHRpbGUsIGZhbHNlKTsKQEAgLTUyNiwzMiArNTExLDMx
IEBAIEVpbmFfQm9vbCBld2tfdGlsZV9tYXRyaXhfdGlsZV9wdXQoRXdrX1RpbGVfTWF0cml4KiB0
aWxlTWF0cml4LCBFd2tfVGlsZSogdGlsZSwKIHZvaWQgZXdrX3RpbGVfbWF0cml4X3RpbGVfdXBk
YXRlc19jbGVhcihFd2tfVGlsZV9NYXRyaXgqIHRpbGVNYXRyaXgsIEV3a19UaWxlKiB0aWxlKQog
ewogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHRpbGVNYXRyaXgpOworCiAgICAgaWYg
KCF0aWxlLT51cGRhdGVzICYmICF0aWxlLT5zdGF0cy5mdWxsX3VwZGF0ZSkKICAgICAgICAgcmV0
dXJuOworCiAgICAgZXdrX3RpbGVfdXBkYXRlc19jbGVhcih0aWxlKTsKICAgICB0aWxlTWF0cml4
LT51cGRhdGVzID0gZWluYV9saXN0X3JlbW92ZSh0aWxlTWF0cml4LT51cGRhdGVzLCB0aWxlKTsK
IH0KIAotc3RhdGljIEVpbmFfQm9vbCBfZXdrX3RpbGVfbWF0cml4X3NsaWNlcl9zZXR1cChFd2tf
VGlsZV9NYXRyaXgqIHRpbGVNYXRyaXgsIGNvbnN0IEVpbmFfUmVjdGFuZ2xlKiBhcmVhLCBmbG9h
dCB6b29tLCBFaW5hX1RpbGVfR3JpZF9TbGljZXIqIHNsaWNlcikKK3N0YXRpYyBib29sIF9ld2tf
dGlsZV9tYXRyaXhfc2xpY2VyX3NldHVwKEV3a19UaWxlX01hdHJpeCogdGlsZU1hdHJpeCwgY29u
c3QgRWluYV9SZWN0YW5nbGUqIGFyZWEsIGZsb2F0IHpvb20sIEVpbmFfVGlsZV9HcmlkX1NsaWNl
ciogc2xpY2VyKQogewotICAgIHVuc2lnbmVkIGxvbmcgcm93cywgY29sczsKLSAgICBFdmFzX0Nv
b3JkIHgsIHksIHdpZHRoLCBoZWlnaHQsIHRpbGVXaWR0aCwgdGlsZUhlaWdodDsKLQogICAgIGlm
IChhcmVhLT53IDw9IDAgfHwgYXJlYS0+aCA8PSAwKSB7Ci0gICAgICAgIFdSTigiaW52YWxpZCBh
cmVhIHJlZ2lvbjogJWQsJWQrJWR4JWQuIiwKLSAgICAgICAgICAgIGFyZWEtPngsIGFyZWEtPnks
IGFyZWEtPncsIGFyZWEtPmgpOworICAgICAgICBXUk4oImludmFsaWQgYXJlYSByZWdpb246ICVk
LCVkKyVkeCVkLiIsIGFyZWEtPngsIGFyZWEtPnksIGFyZWEtPncsIGFyZWEtPmgpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgeCA9IGFyZWEtPng7Ci0gICAgeSA9IGFyZWEt
Pnk7Ci0gICAgd2lkdGggPSBhcmVhLT53OwotICAgIGhlaWdodCA9IGFyZWEtPmg7CisgICAgRXZh
c19Db29yZCB4ID0gYXJlYS0+eDsKKyAgICBFdmFzX0Nvb3JkIHkgPSBhcmVhLT55OworICAgIEV2
YXNfQ29vcmQgd2lkdGggPSBhcmVhLT53OworICAgIEV2YXNfQ29vcmQgaGVpZ2h0ID0gYXJlYS0+
aDsKIAotICAgIHRpbGVXaWR0aCA9IHRpbGVNYXRyaXgtPnRpbGUud2lkdGg7Ci0gICAgdGlsZUhl
aWdodCA9IHRpbGVNYXRyaXgtPnRpbGUuaGVpZ2h0OworICAgIEV2YXNfQ29vcmQgdGlsZVdpZHRo
ID0gdGlsZU1hdHJpeC0+dGlsZS53aWR0aDsKKyAgICBFdmFzX0Nvb3JkIHRpbGVIZWlnaHQgPSB0
aWxlTWF0cml4LT50aWxlLmhlaWdodDsKIAogICAgIC8vIGNyb3BwaW5nIGFyZWEgcmVnaW9uIHRv
IGZpdCBtYXRyaXgKKyAgICB1bnNpZ25lZCBsb25nIHJvd3MsIGNvbHM7CiAgICAgZWluYV9tYXRy
aXhzcGFyc2Vfc2l6ZV9nZXQodGlsZU1hdHJpeC0+bWF0cml4LCAmcm93cywgJmNvbHMpOwogICAg
IGlmICh4IDwgMCkgewogICAgICAgICB3aWR0aCArPSB4OwpAQCAtNTYyLDM4ICs1NDYsMzUgQEAg
c3RhdGljIEVpbmFfQm9vbCBfZXdrX3RpbGVfbWF0cml4X3NsaWNlcl9zZXR1cChFd2tfVGlsZV9N
YXRyaXgqIHRpbGVNYXRyaXgsIGNvbnMKICAgICAgICAgeSA9IDA7CiAgICAgfQogCi0gICAgaWYg
KHkgKyBoZWlnaHQgLSAxID4gKGxvbmcpKHJvd3MgKiB0aWxlSGVpZ2h0KSkKKyAgICBpZiAoeSAr
IGhlaWdodCAtIDEgPiBzdGF0aWNfY2FzdDxsb25nPihyb3dzICogdGlsZUhlaWdodCkpCiAgICAg
ICAgIGhlaWdodCA9IHJvd3MgKiB0aWxlSGVpZ2h0IC0geTsKLSAgICBpZiAoeCArIHdpZHRoIC0g
MSA+IChsb25nKShjb2xzICogdGlsZVdpZHRoKSkKKyAgICBpZiAoeCArIHdpZHRoIC0gMSA+IHN0
YXRpY19jYXN0PGxvbmc+KGNvbHMgKiB0aWxlV2lkdGgpKQogICAgICAgICB3aWR0aCA9IGNvbHMg
KiB0aWxlV2lkdGggLSB4OwogCiAgICAgcmV0dXJuIGVpbmFfdGlsZV9ncmlkX3NsaWNlcl9zZXR1
cChzbGljZXIsIHgsIHksIHdpZHRoLCBoZWlnaHQsIHRpbGVXaWR0aCwgdGlsZUhlaWdodCk7CiB9
CiAKIAotRWluYV9Cb29sIGV3a190aWxlX21hdHJpeF91cGRhdGUoRXdrX1RpbGVfTWF0cml4KiB0
aWxlTWF0cml4LCBjb25zdCBFaW5hX1JlY3RhbmdsZSogdXBkYXRlLCBmbG9hdCB6b29tKQorYm9v
bCBld2tfdGlsZV9tYXRyaXhfdXBkYXRlKEV3a19UaWxlX01hdHJpeCogdGlsZU1hdHJpeCwgY29u
c3QgRWluYV9SZWN0YW5nbGUqIHVwZGF0ZSwgZmxvYXQgem9vbSkKIHsKLSAgICBjb25zdCBFaW5h
X1RpbGVfR3JpZF9JbmZvKiBpbmZvOwotICAgIEVpbmFfVGlsZV9HcmlkX1NsaWNlciBzbGljZXI7
CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHRpbGVNYXRyaXgsIGZhbHNlKTsK
ICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwodXBkYXRlLCBmYWxzZSk7CiAKICAg
ICBpZiAodXBkYXRlLT53IDwgMSB8fCB1cGRhdGUtPmggPCAxKSB7Ci0gICAgICAgIERCRygiV2h5
IHdlIGdldCB1cGRhdGVzIHdpdGggZW1wdHkgYXJlYXM/ICVkLCVkKyVkeCVkIGF0IHpvb20gJWYi
LAotICAgICAgICAgICAgdXBkYXRlLT54LCB1cGRhdGUtPnksIHVwZGF0ZS0+dywgdXBkYXRlLT5o
LCB6b29tKTsKKyAgICAgICAgREJHKCJXaHkgd2UgZ2V0IHVwZGF0ZXMgd2l0aCBlbXB0eSBhcmVh
cz8gJWQsJWQrJWR4JWQgYXQgem9vbSAlZiIsIHVwZGF0ZS0+eCwgdXBkYXRlLT55LCB1cGRhdGUt
PncsIHVwZGF0ZS0+aCwgem9vbSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAorICAg
IEVpbmFfVGlsZV9HcmlkX1NsaWNlciBzbGljZXI7CiAgICAgaWYgKCFfZXdrX3RpbGVfbWF0cml4
X3NsaWNlcl9zZXR1cCh0aWxlTWF0cml4LCB1cGRhdGUsIHpvb20sICZzbGljZXIpKSB7Ci0gICAg
ICAgIEVSUigiQ291bGQgbm90IHNldHVwIHNsaWNlciBmb3IgdXBkYXRlICVkLCVkKyVkeCVkIGF0
IHpvb20gJWYiLAotICAgICAgICAgICAgdXBkYXRlLT54LCB1cGRhdGUtPnksIHVwZGF0ZS0+dywg
dXBkYXRlLT5oLCB6b29tKTsKKyAgICAgICAgRVJSKCJDb3VsZCBub3Qgc2V0dXAgc2xpY2VyIGZv
ciB1cGRhdGUgJWQsJWQrJWR4JWQgYXQgem9vbSAlZiIsIHVwZGF0ZS0+eCwgdXBkYXRlLT55LCB1
cGRhdGUtPncsIHVwZGF0ZS0+aCwgem9vbSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAKKyAgICBjb25zdCBFaW5hX1RpbGVfR3JpZF9JbmZvKiBpbmZvOwogICAgIHdoaWxlIChlaW5h
X3RpbGVfZ3JpZF9zbGljZXJfbmV4dCgmc2xpY2VyLCAmaW5mbykpIHsKLSAgICAgICAgdW5zaWdu
ZWQgbG9uZyBjb2wsIHJvdzsKLSAgICAgICAgY29sID0gaW5mby0+Y29sOwotICAgICAgICByb3cg
PSBpbmZvLT5yb3c7CisgICAgICAgIHVuc2lnbmVkIGxvbmcgY29sID0gaW5mby0+Y29sOworICAg
ICAgICB1bnNpZ25lZCBsb25nIHJvdyA9IGluZm8tPnJvdzsKIAogICAgICAgICBFd2tfVGlsZSog
dGlsZSA9IHN0YXRpY19jYXN0PEV3a19UaWxlKj4oZWluYV9tYXRyaXhzcGFyc2VfZGF0YV9pZHhf
Z2V0KHRpbGVNYXRyaXgtPm1hdHJpeCwgcm93LCBjb2wpKTsKICAgICAgICAgaWYgKCF0aWxlKQpA
QCAtNjEzLDExICs1OTQsMTEgQEAgRWluYV9Cb29sIGV3a190aWxlX21hdHJpeF91cGRhdGUoRXdr
X1RpbGVfTWF0cml4KiB0aWxlTWF0cml4LCBjb25zdCBFaW5hX1JlY3RhbmcKIAogdm9pZCBld2tf
dGlsZV9tYXRyaXhfdXBkYXRlc19wcm9jZXNzKEV3a19UaWxlX01hdHJpeCogdGlsZU1hdHJpeCkK
IHsKLSAgICBFaW5hX0xpc3QqIGxpc3QsICpsaXN0TmV4dDsKLSAgICB2b2lkKiBpdGVtOwogICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHRpbGVNYXRyaXgpOwogCiAgICAgLy8gcHJvY2Vz
cyB1cGRhdGVzLCB1bmZsYWcgdGlsZXMKKyAgICBFaW5hX0xpc3QqIGxpc3QsICpsaXN0TmV4dDsK
KyAgICB2b2lkKiBpdGVtOwogICAgIEVJTkFfTElTVF9GT1JFQUNIX1NBRkUodGlsZU1hdHJpeC0+
dXBkYXRlcywgbGlzdCwgbGlzdE5leHQsIGl0ZW0pIHsKICAgICAgICAgRXdrX1RpbGUqIHRpbGUg
PSBzdGF0aWNfY2FzdDxFd2tfVGlsZSo+KGl0ZW0pOwogICAgICAgICBld2tfdGlsZV91cGRhdGVz
X3Byb2Nlc3ModGlsZSwgdGlsZU1hdHJpeC0+cmVuZGVyLmNhbGxiYWNrLCB0aWxlTWF0cml4LT5y
ZW5kZXIuZGF0YSk7CkBAIC02MzAsMzEgKzYxMSwyOCBAQCB2b2lkIGV3a190aWxlX21hdHJpeF91
cGRhdGVzX3Byb2Nlc3MoRXdrX1RpbGVfTWF0cml4KiB0aWxlTWF0cml4KQogCiB2b2lkIGV3a190
aWxlX21hdHJpeF91cGRhdGVzX2NsZWFyKEV3a19UaWxlX01hdHJpeCogdGlsZU1hdHJpeCkKIHsK
LSAgICB2b2lkKiBpdGVtOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHRpbGVNYXRy
aXgpOwogCisgICAgdm9pZCogaXRlbTsKICAgICBFSU5BX0xJU1RfRlJFRSh0aWxlTWF0cml4LT51
cGRhdGVzLCBpdGVtKQogICAgICAgICBld2tfdGlsZV91cGRhdGVzX2NsZWFyKHN0YXRpY19jYXN0
PEV3a19UaWxlKj4oaXRlbSkpOwogICAgIHRpbGVNYXRyaXgtPnVwZGF0ZXMgPSAwOwogfQogCisj
aWZkZWYgREVCVUdfTUVNX0xFQUtTCiAvLyByZW1vdmUgbWUgbGF0ZXIhCiB2b2lkIGV3a190aWxl
X21hdHJpeF9kYmcoY29uc3QgRXdrX1RpbGVfTWF0cml4KiB0aWxlTWF0cml4KQogewogICAgIEVp
bmFfSXRlcmF0b3IqIGl0ZXJhdG9yID0gZWluYV9tYXRyaXhzcGFyc2VfaXRlcmF0b3JfY29tcGxl
dGVfbmV3KHRpbGVNYXRyaXgtPm1hdHJpeCk7CiAgICAgRWluYV9NYXRyaXhzcGFyc2VfQ2VsbCog
Y2VsbDsKLSAgICBFaW5hX0Jvb2wgbGFzdF9lbXB0eSA9IGZhbHNlOworICAgIGJvb2wgbGFzdF9l
bXB0eSA9IGZhbHNlOwogCi0jaWZkZWYgREVCVUdfTUVNX0xFQUtTCiAgICAgcHJpbnRmKCJFd2tf
VGlsZSBNYXRyaXg6IHRpbGVzWyslIiBQUkl1NjQgIiwtJSIgUFJJdTY0ICI6JSIgUFJJdTY0ICJd
ICIKICAgICAgICAgICAgImJ5dGVzWyslIiBQUkl1NjQgIiwtJSIgUFJJdTY0ICI6JSIgUFJJdTY0
ICJdXG4iLAogICAgICAgICAgICB0aWxlTWF0cml4LT5zdGF0cy50aWxlcy5hbGxvY2F0ZWQsIHRp
bGVNYXRyaXgtPnN0YXRzLnRpbGVzLmZyZWVkLAogICAgICAgICAgICB0aWxlTWF0cml4LT5zdGF0
cy50aWxlcy5hbGxvY2F0ZWQgLSB0aWxlTWF0cml4LT5zdGF0cy50aWxlcy5mcmVlZCwKICAgICAg
ICAgICAgdGlsZU1hdHJpeC0+c3RhdHMuYnl0ZXMuYWxsb2NhdGVkLCB0aWxlTWF0cml4LT5zdGF0
cy5ieXRlcy5mcmVlZCwKICAgICAgICAgICAgdGlsZU1hdHJpeC0+c3RhdHMuYnl0ZXMuYWxsb2Nh
dGVkIC0gdGlsZU1hdHJpeC0+c3RhdHMuYnl0ZXMuZnJlZWQpOwotI2Vsc2UKLSAgICBwcmludGYo
IkV3a19UaWxlIE1hdHJpeDpcbiIpOwotI2VuZGlmCiAKICAgICBFSU5BX0lURVJBVE9SX0ZPUkVB
Q0goaXRlcmF0b3IsIGNlbGwpIHsKICAgICAgICAgdW5zaWduZWQgbG9uZyByb3csIGNvbHVtbjsK
QEAgLTY4Myw2ICs2NjEsNyBAQCB2b2lkIGV3a190aWxlX21hdHJpeF9kYmcoY29uc3QgRXdrX1Rp
bGVfTWF0cml4KiB0aWxlTWF0cml4KQogCiAgICAgZXdrX3RpbGVfdW51c2VkX2NhY2hlX2RiZyh0
aWxlTWF0cml4LT50aWxlVW51c2VkQ2FjaGUpOwogfQorI2VuZGlmCiAKIC8qKgogICogRnJlZXpl
IG1hdHJpeCB0byBub3QgZG8gbWFpbnRlbmFuY2UgdGFza3MuCkBAIC02OTYsOSArNjc1LDEwIEBA
IHZvaWQgZXdrX3RpbGVfbWF0cml4X2RiZyhjb25zdCBFd2tfVGlsZV9NYXRyaXgqIHRpbGVNYXRy
aXgpCiB2b2lkIGV3a190aWxlX21hdHJpeF9mcmVlemUoRXdrX1RpbGVfTWF0cml4KiB0aWxlTWF0
cml4KQogewogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHRpbGVNYXRyaXgpOworCiAg
ICAgaWYgKCF0aWxlTWF0cml4LT5mcm96ZW4pCiAgICAgICAgIGV3a190aWxlX3VudXNlZF9jYWNo
ZV9mcmVlemUodGlsZU1hdHJpeC0+dGlsZVVudXNlZENhY2hlKTsKLSAgICB0aWxlTWF0cml4LT5m
cm96ZW4rKzsKKyAgICArK3RpbGVNYXRyaXgtPmZyb3plbjsKIH0KIAogLyoqCkBAIC03MTAsMTIg
KzY5MCwxMyBAQCB2b2lkIGV3a190aWxlX21hdHJpeF9mcmVlemUoRXdrX1RpbGVfTWF0cml4KiB0
aWxlTWF0cml4KQogdm9pZCBld2tfdGlsZV9tYXRyaXhfdGhhdyhFd2tfVGlsZV9NYXRyaXgqIHRp
bGVNYXRyaXgpCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4odGlsZU1hdHJpeCk7
CisKICAgICBpZiAoIXRpbGVNYXRyaXgtPmZyb3plbikgewogICAgICAgICBFUlIoInRoYXdpbmcg
bW9yZSB0aGFuIGZyZWV6aW5nISIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdGls
ZU1hdHJpeC0+ZnJvemVuLS07CisgICAgLS10aWxlTWF0cml4LT5mcm96ZW47CiAgICAgaWYgKCF0
aWxlTWF0cml4LT5mcm96ZW4pCiAgICAgICAgIGV3a190aWxlX3VudXNlZF9jYWNoZV90aGF3KHRp
bGVNYXRyaXgtPnRpbGVVbnVzZWRDYWNoZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX3RpbGVkX21hdHJpeF9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX3RpbGVkX21hdHJpeF9wcml2YXRlLmgKaW5kZXggMTUxZWJiMC4uOTlhOTVkNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9tYXRyaXhfcHJpdmF0ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRfbWF0cml4X3ByaXZhdGUuaApA
QCAtMjcsMzQgKzI3LDM0IEBACiAjaW5jbHVkZSA8RXZhcy5oPgogCiAvKiBtYXRyaXggb2YgdGls
ZXMgKi8KLUV3a19UaWxlX01hdHJpeCAqZXdrX3RpbGVfbWF0cml4X25ldyhFd2tfVGlsZV9VbnVz
ZWRfQ2FjaGUgKnR1YywgdW5zaWduZWQgbG9uZyBjb2xzLCB1bnNpZ25lZCBsb25nIHJvd3MsIGZs
b2F0IHpvb21fbGV2ZWwsIEV2YXNfQ29sb3JzcGFjZSBjb2xvcl9zcGFjZSwgdm9pZCAoKnJlbmRl
cl9jYWxsYmFjaykodm9pZCAqZGF0YSwgRXdrX1RpbGUgKnQsIGNvbnN0IEVpbmFfUmVjdGFuZ2xl
ICp1cGRhdGUpLCBjb25zdCB2b2lkICpyZW5kZXJfZGF0YSk7Ci12b2lkIGV3a190aWxlX21hdHJp
eF9lbnRyeV9uZXcoRXdrX1RpbGVfTWF0cml4ICp0bSwgZmxvYXQgem9vbSk7Ci12b2lkIGV3a190
aWxlX21hdHJpeF9mcmVlKEV3a19UaWxlX01hdHJpeCAqdG0pOworRXdrX1RpbGVfTWF0cml4KiBl
d2tfdGlsZV9tYXRyaXhfbmV3KEV3a19UaWxlX1VudXNlZF9DYWNoZSogdHVjLCB1bnNpZ25lZCBs
b25nIGNvbHMsIHVuc2lnbmVkIGxvbmcgcm93cywgZmxvYXQgem9vbV9sZXZlbCwgRXZhc19Db2xv
cnNwYWNlIGNvbG9yX3NwYWNlLCB2b2lkICgqcmVuZGVyX2NhbGxiYWNrKSh2b2lkKiBkYXRhLCBF
d2tfVGlsZSogdCwgY29uc3QgRWluYV9SZWN0YW5nbGUqIHVwZGF0ZSksIGNvbnN0IHZvaWQqIHJl
bmRlcl9kYXRhKTsKK3ZvaWQgZXdrX3RpbGVfbWF0cml4X2VudHJ5X25ldyhFd2tfVGlsZV9NYXRy
aXgqIHRtLCBmbG9hdCB6b29tKTsKK3ZvaWQgZXdrX3RpbGVfbWF0cml4X2ZyZWUoRXdrX1RpbGVf
TWF0cml4KiB0bSk7CiAKLXZvaWQgZXdrX3RpbGVfbWF0cml4X3Jlc2l6ZShFd2tfVGlsZV9NYXRy
aXggKnRtLCB1bnNpZ25lZCBsb25nIGNvbHMsIHVuc2lnbmVkIGxvbmcgcm93cyk7Ci12b2lkIGV3
a190aWxlX21hdHJpeF9zaXplX2dldChFd2tfVGlsZV9NYXRyaXggKnRtLCB1bnNpZ25lZCBsb25n
ICpjb2xzLCB1bnNpZ25lZCBsb25nICpyb3dzKTsKLWJvb2wgZXdrX3RpbGVfbWF0cml4X3pvb21f
bGV2ZWxfc2V0KEV3a19UaWxlX01hdHJpeCAqdG0sIGZsb2F0IHpvb20pOwotdm9pZCBld2tfdGls
ZV9tYXRyaXhfaW52YWxpZGF0ZShFd2tfVGlsZV9NYXRyaXggKnRtKTsKK3ZvaWQgZXdrX3RpbGVf
bWF0cml4X3Jlc2l6ZShFd2tfVGlsZV9NYXRyaXgqIHRtLCB1bnNpZ25lZCBsb25nIGNvbHMsIHVu
c2lnbmVkIGxvbmcgcm93cyk7Cit2b2lkIGV3a190aWxlX21hdHJpeF9zaXplX2dldChFd2tfVGls
ZV9NYXRyaXgqIHRtLCB1bnNpZ25lZCBsb25nKiBjb2xzLCB1bnNpZ25lZCBsb25nKiByb3dzKTsK
K2Jvb2wgZXdrX3RpbGVfbWF0cml4X3pvb21fbGV2ZWxfc2V0KEV3a19UaWxlX01hdHJpeCogdG0s
IGZsb2F0IHpvb20pOwordm9pZCBld2tfdGlsZV9tYXRyaXhfaW52YWxpZGF0ZShFd2tfVGlsZV9N
YXRyaXgqIHRtKTsKIAotRXdrX1RpbGVfVW51c2VkX0NhY2hlICpld2tfdGlsZV9tYXRyaXhfdW51
c2VkX2NhY2hlX2dldChjb25zdCBFd2tfVGlsZV9NYXRyaXggKnRtKTsKK0V3a19UaWxlX1VudXNl
ZF9DYWNoZSogZXdrX3RpbGVfbWF0cml4X3VudXNlZF9jYWNoZV9nZXQoY29uc3QgRXdrX1RpbGVf
TWF0cml4KiB0bSk7CiAKLUV3a19UaWxlICpld2tfdGlsZV9tYXRyaXhfdGlsZV9leGFjdF9nZXQo
RXdrX1RpbGVfTWF0cml4ICp0bSwgdW5zaWduZWQgbG9uZyBjb2wsIHVuc2lnbmVkIGxvbmcgcm93
LCBmbG9hdCB6b29tKTsKLUVpbmFfQm9vbCBld2tfdGlsZV9tYXRyaXhfdGlsZV9leGFjdF9leGlz
dHMoRXdrX1RpbGVfTWF0cml4ICp0bSwgdW5zaWduZWQgbG9uZyBjb2wsIHVuc2lnbmVkIGxvbmcg
cm93LCBmbG9hdCB6b29tKTsKLUV3a19UaWxlICpld2tfdGlsZV9tYXRyaXhfdGlsZV9uZWFyZXN0
X2dldChFd2tfVGlsZV9NYXRyaXggKnRtLCB1bnNpZ25lZCBsb25nIGNvbCwgdW5zaWduZWQgbG9u
ZyByb3csIGZsb2F0IHpvb20pOwotRXdrX1RpbGUgKmV3a190aWxlX21hdHJpeF90aWxlX25ldyhF
d2tfVGlsZV9NYXRyaXggKnRtLCBFdmFzICpldmFzLCB1bnNpZ25lZCBsb25nIGNvbCwgdW5zaWdu
ZWQgbG9uZyByb3csIGZsb2F0IHpvb20pOwotRWluYV9Cb29sIGV3a190aWxlX21hdHJpeF90aWxl
X3B1dChFd2tfVGlsZV9NYXRyaXggKnRtLCBFd2tfVGlsZSAqdCwgZG91YmxlIGxhc3RfdXNlZCk7
CitFd2tfVGlsZSogZXdrX3RpbGVfbWF0cml4X3RpbGVfZXhhY3RfZ2V0KEV3a19UaWxlX01hdHJp
eCogdG0sIHVuc2lnbmVkIGxvbmcgY29sLCB1bnNpZ25lZCBsb25nIHJvdywgZmxvYXQgem9vbSk7
Citib29sIGV3a190aWxlX21hdHJpeF90aWxlX2V4YWN0X2V4aXN0cyhFd2tfVGlsZV9NYXRyaXgq
IHRtLCB1bnNpZ25lZCBsb25nIGNvbCwgdW5zaWduZWQgbG9uZyByb3csIGZsb2F0IHpvb20pOwor
RXdrX1RpbGUqIGV3a190aWxlX21hdHJpeF90aWxlX25lYXJlc3RfZ2V0KEV3a19UaWxlX01hdHJp
eCogdG0sIHVuc2lnbmVkIGxvbmcgY29sLCB1bnNpZ25lZCBsb25nIHJvdywgZmxvYXQgem9vbSk7
CitFd2tfVGlsZSogZXdrX3RpbGVfbWF0cml4X3RpbGVfbmV3KEV3a19UaWxlX01hdHJpeCogdG0s
IEV2YXMqIGV2YXMsIHVuc2lnbmVkIGxvbmcgY29sLCB1bnNpZ25lZCBsb25nIHJvdywgZmxvYXQg
em9vbSk7Citib29sIGV3a190aWxlX21hdHJpeF90aWxlX3B1dChFd2tfVGlsZV9NYXRyaXgqIHRt
LCBFd2tfVGlsZSogdCwgZG91YmxlIGxhc3RfdXNlZCk7CiAKLXZvaWQgZXdrX3RpbGVfbWF0cml4
X3RpbGVfdXBkYXRlc19jbGVhcihFd2tfVGlsZV9NYXRyaXggKnRtLCBFd2tfVGlsZSAqdCk7Cit2
b2lkIGV3a190aWxlX21hdHJpeF90aWxlX3VwZGF0ZXNfY2xlYXIoRXdrX1RpbGVfTWF0cml4KiB0
bSwgRXdrX1RpbGUqIHQpOwogCi1FaW5hX0Jvb2wgZXdrX3RpbGVfbWF0cml4X3VwZGF0ZShFd2tf
VGlsZV9NYXRyaXggKnRtLCBjb25zdCBFaW5hX1JlY3RhbmdsZSAqdXBkYXRlLCBmbG9hdCB6b29t
KTsKLXZvaWQgZXdrX3RpbGVfbWF0cml4X3VwZGF0ZXNfcHJvY2VzcyhFd2tfVGlsZV9NYXRyaXgg
KnRtKTsKLXZvaWQgZXdrX3RpbGVfbWF0cml4X3VwZGF0ZXNfY2xlYXIoRXdrX1RpbGVfTWF0cml4
ICp0bSk7Ci12b2lkIGV3a190aWxlX21hdHJpeF9mcmVlemUoRXdrX1RpbGVfTWF0cml4ICp0bSk7
Ci12b2lkIGV3a190aWxlX21hdHJpeF90aGF3KEV3a19UaWxlX01hdHJpeCAqdG0pOworYm9vbCBl
d2tfdGlsZV9tYXRyaXhfdXBkYXRlKEV3a19UaWxlX01hdHJpeCogdG0sIGNvbnN0IEVpbmFfUmVj
dGFuZ2xlKiB1cGRhdGUsIGZsb2F0IHpvb20pOwordm9pZCBld2tfdGlsZV9tYXRyaXhfdXBkYXRl
c19wcm9jZXNzKEV3a19UaWxlX01hdHJpeCogdG0pOwordm9pZCBld2tfdGlsZV9tYXRyaXhfdXBk
YXRlc19jbGVhcihFd2tfVGlsZV9NYXRyaXgqIHRtKTsKK3ZvaWQgZXdrX3RpbGVfbWF0cml4X2Zy
ZWV6ZShFd2tfVGlsZV9NYXRyaXgqIHRtKTsKK3ZvaWQgZXdrX3RpbGVfbWF0cml4X3RoYXcoRXdr
X1RpbGVfTWF0cml4KiB0bSk7CiAKIC8vIHJlbW92ZSBtZSEKLXZvaWQgZXdrX3RpbGVfbWF0cml4
X2RiZyhjb25zdCBFd2tfVGlsZV9NYXRyaXggKnRtKTsKLXZvaWQgZXdrX3RpbGVfdW51c2VkX2Nh
Y2hlX2RiZyhjb25zdCBFd2tfVGlsZV9VbnVzZWRfQ2FjaGUgKnR1Yyk7Cit2b2lkIGV3a190aWxl
X21hdHJpeF9kYmcoY29uc3QgRXdrX1RpbGVfTWF0cml4KiB0bSk7Cit2b2lkIGV3a190aWxlX3Vu
dXNlZF9jYWNoZV9kYmcoY29uc3QgRXdrX1RpbGVfVW51c2VkX0NhY2hlKiB0dWMpOwogdm9pZCBl
d2tfdGlsZV9hY2NvdW50aW5nX2RiZygpOwogCiAjZW5kaWYgLy8gZXdrX3RpbGVkX21hdHJpeF9w
cml2YXRlX2gK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164051</attachid>
            <date>2012-09-13 22:49:13 -0700</date>
            <delta_ts>2012-09-13 23:28:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>96638_tiled_matrix_cleanup.patch</filename>
            <type>text/plain</type>
            <size>24703</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZwppbmRleCBkMjQ1Y2RlLi4yZWViOTE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzkgQEAKKzIwMTItMDktMTMgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhl
LmR1bWV6QGludGVsLmNvbT4KKworICAgICAgICBbRUZMXSBSZW1vdmUgYSBsb3Qgb2YgQydpc20g
ZnJvbSBFd2tfVGlsZWRfTWF0cml4CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05NjYzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFJlbW92ZSBhIGxvdCBvZiBDJ2lzbSBmcm9tIEV3a19UaWxlZF9NYXRyaXgg
YW5kCisgICAgICAgIGZpeCB0aGUgY29kZSBzbyB0aGF0IGl0IGZvbGxvd3MgY29kaW5nIHN0eWxl
LgorCisgICAgICAgICogZXdrL2V3a190aWxlZF9tYXRyaXguY3BwOgorICAgICAgICAoX0V3a19U
aWxlX01hdHJpeCk6CisgICAgICAgIChld2tfdGlsZV9tYXRyaXhfZW50cnlfZ2V0KToKKyAgICAg
ICAgKF9ld2tfdGlsZV9tYXRyaXhfY2VsbF9mcmVlKToKKyAgICAgICAgKF9ld2tfdGlsZV9tYXRy
aXhfdGlsZV9mcmVlKToKKyAgICAgICAgKGV3a190aWxlX21hdHJpeF96b29tX2xldmVsX3NldCk6
CisgICAgICAgIChld2tfdGlsZV9tYXRyaXhfZW50cnlfbmV3KToKKyAgICAgICAgKGV3a190aWxl
X21hdHJpeF9pbnZhbGlkYXRlKToKKyAgICAgICAgKGV3a190aWxlX21hdHJpeF9mcmVlKToKKyAg
ICAgICAgKGV3a190aWxlX21hdHJpeF9yZXNpemUpOgorICAgICAgICAoZXdrX3RpbGVfbWF0cml4
X3NpemVfZ2V0KToKKyAgICAgICAgKGV3a190aWxlX21hdHJpeF91bnVzZWRfY2FjaGVfZ2V0KToK
KyAgICAgICAgKGV3a190aWxlX21hdHJpeF90aWxlX2V4YWN0X2dldCk6CisgICAgICAgIChld2tf
dGlsZV9tYXRyaXhfdGlsZV9leGFjdF9leGlzdHMpOgorICAgICAgICAoZXdrX3RpbGVfbWF0cml4
X3RpbGVfbmV3KToKKyAgICAgICAgKGV3a190aWxlX21hdHJpeF90aWxlX3B1dCk6CisgICAgICAg
IChld2tfdGlsZV9tYXRyaXhfdGlsZV91cGRhdGVzX2NsZWFyKToKKyAgICAgICAgKF9ld2tfdGls
ZV9tYXRyaXhfc2xpY2VyX3NldHVwKToKKyAgICAgICAgKGV3a190aWxlX21hdHJpeF91cGRhdGUp
OgorICAgICAgICAoZXdrX3RpbGVfbWF0cml4X3VwZGF0ZXNfcHJvY2Vzcyk6CisgICAgICAgIChl
d2tfdGlsZV9tYXRyaXhfdXBkYXRlc19jbGVhcik6CisgICAgICAgIChld2tfdGlsZV9tYXRyaXhf
ZGJnKToKKyAgICAgICAgKGV3a190aWxlX21hdHJpeF9mcmVlemUpOgorICAgICAgICAoZXdrX3Rp
bGVfbWF0cml4X3RoYXcpOgorICAgICAgICAqIGV3ay9ld2tfdGlsZWRfbWF0cml4X3ByaXZhdGUu
aDoKKwogMjAxMi0wOS0xMyAgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4gIDxrZW5uZXRoQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgRXZhc19PYmplY3QqIGlzIGEgcmVmJ2VkIHN0cnVjdHVyZSwg
c28gdHJlYWQgaXQgYXMgc3VjaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a190aWxlZF9tYXRyaXguY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9tYXRy
aXguY3BwCmluZGV4IGY5Mzc2NGYuLmExYzAyOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
ZWZsL2V3ay9ld2tfdGlsZWRfbWF0cml4LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX3RpbGVkX21hdHJpeC5jcHAKQEAgLTM1LDE1ICszNSwxMyBAQAogI2luY2x1ZGUgPHd0Zi9P
d25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCi1zdHJ1Y3QgX0V3a19UaWxl
X01hdHJpeF9FbnRyeSB7CitzdHJ1Y3QgRXdrX1RpbGVfTWF0cml4X0VudHJ5IHsKICAgICBFSU5B
X0lOTElTVDsKICAgICBmbG9hdCB6b29tOwogICAgIHVuc2lnbmVkIGxvbmcgY291bnQ7CiAgICAg
RWluYV9NYXRyaXhzcGFyc2UqIG1hdHJpeDsKIH07CiAKLXR5cGVkZWYgc3RydWN0IF9Fd2tfVGls
ZV9NYXRyaXhfRW50cnkgRXdrX1RpbGVfTWF0cml4X0VudHJ5OwotCiBzdHJ1Y3QgX0V3a19UaWxl
X01hdHJpeCB7CiAgICAgRWluYV9NYXRyaXhzcGFyc2UqIG1hdHJpeDsKICAgICBFaW5hX0lubGlz
dCogbWF0cmljZXM7CkBAIC03OCwxMSArNzYsMTEgQEAgc3RhdGljIHVpbnQ2NF90IGJ5dGVzX2xl
YWtlZCA9IDA7CiBzdGF0aWMgRXdrX1RpbGVfTWF0cml4X0VudHJ5KiBld2tfdGlsZV9tYXRyaXhf
ZW50cnlfZ2V0KEV3a19UaWxlX01hdHJpeCogdGlsZU1hdHJpeCwgZmxvYXQgem9vbSkKIHsKICAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwodGlsZU1hdHJpeCwgMCk7Ci0gICAgRXdr
X1RpbGVfTWF0cml4X0VudHJ5KiBpdGVyYXRvcjsKIAotICAgIEVJTkFfSU5MSVNUX0ZPUkVBQ0go
dGlsZU1hdHJpeC0+bWF0cmljZXMsIGl0ZXJhdG9yKSB7Ci0gICAgICAgIGlmIChpdGVyYXRvci0+
em9vbSA9PSB6b29tKQotICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yOworICAgIEV3a19UaWxl
X01hdHJpeF9FbnRyeSogaXQ7CisgICAgRUlOQV9JTkxJU1RfRk9SRUFDSCh0aWxlTWF0cml4LT5t
YXRyaWNlcywgaXQpIHsKKyAgICAgICAgaWYgKGl0LT56b29tID09IHpvb20pCisgICAgICAgICAg
ICByZXR1cm4gaXQ7CiAgICAgfQogCiAgICAgcmV0dXJuIDA7CkBAIC0xMDUsMjMgKzEwMywyMSBA
QCBzdGF0aWMgdm9pZCBfZXdrX3RpbGVfbWF0cml4X2NlbGxfZnJlZSh2b2lkKiB1c2VyRGF0YSwg
dm9pZCogY2VsbERhdGEpCiAgICAgaWYgKHRpbGUtPnZpc2libGUpCiAgICAgICAgIEVSUigiZnJl
ZWluZyBjZWxsIHRoYXQgaXMgdmlzaWJsZSwgbGVha2luZyB0aWxlICVwIiwgdGlsZSk7CiAgICAg
ZWxzZSB7Ci0gICAgICAgIGlmICghZXdrX3RpbGVfdW51c2VkX2NhY2hlX3RpbGVfZ2V0KHRpbGVN
YXRyaXgtPnRpbGVVbnVzZWRDYWNoZSwgdGlsZSkpCi0gICAgICAgICAgICBFUlIoInRpbGUgJXAg
d2FzIG5vdCBpbiBjYWNoZSAlcD8gbGVha2luZy4uLiIsIHRpbGUsIHRpbGVNYXRyaXgtPnRpbGVV
bnVzZWRDYWNoZSk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgRXdrX1RpbGVfTWF0cml4
X0VudHJ5KiBlbnRyeTsKKyAgICAgICAgaWYgKGV3a190aWxlX3VudXNlZF9jYWNoZV90aWxlX2dl
dCh0aWxlTWF0cml4LT50aWxlVW51c2VkQ2FjaGUsIHRpbGUpKSB7CiAgICAgICAgICAgICBEQkco
InRpbGUgY2VsbCBkb2VzIG5vdCBleGlzdCBhbnltb3JlLCBmcmVlIGl0ICVwIiwgdGlsZSk7CiAj
aWZkZWYgREVCVUdfTUVNX0xFQUtTCiAgICAgICAgICAgICB0aWxlTWF0cml4LT5zdGF0cy5ieXRl
cy5mcmVlZCArPSB0aWxlLT5ieXRlczsKICAgICAgICAgICAgIHRpbGVNYXRyaXgtPnN0YXRzLnRp
bGVzLmZyZWVkKys7CiAjZW5kaWYKLSAgICAgICAgICAgIGVudHJ5ID0gZXdrX3RpbGVfbWF0cml4
X2VudHJ5X2dldCh0aWxlTWF0cml4LCB0aWxlLT56b29tKTsKKyAgICAgICAgICAgIEV3a19UaWxl
X01hdHJpeF9FbnRyeSogZW50cnkgPSBld2tfdGlsZV9tYXRyaXhfZW50cnlfZ2V0KHRpbGVNYXRy
aXgsIHRpbGUtPnpvb20pOwogICAgICAgICAgICAgaWYgKCFlbnRyeSkKICAgICAgICAgICAgICAg
ICBFUlIoImNhbid0IGZpbmQgbWF0cml4IGZvciB6b29tICUwLjNmIiwgdGlsZS0+em9vbSk7CiAg
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgZW50cnktPmNvdW50LS07CisgICAgICAg
ICAgICAgICAgLS1lbnRyeS0+Y291bnQ7CiAKICAgICAgICAgICAgIGV3a190aWxlX2ZyZWUodGls
ZSk7Ci0gICAgICAgIH0KKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBFUlIoInRpbGUgJXAg
d2FzIG5vdCBpbiBjYWNoZSAlcD8gbGVha2luZy4uLiIsIHRpbGUsIHRpbGVNYXRyaXgtPnRpbGVV
bnVzZWRDYWNoZSk7CiAgICAgfQogCiAgICAgZXdrX3RpbGVfdW51c2VkX2NhY2hlX3RoYXcodGls
ZU1hdHJpeC0+dGlsZVVudXNlZENhY2hlKTsKQEAgLTEzMSwxNyArMTI3LDE1IEBAIHN0YXRpYyB2
b2lkIF9ld2tfdGlsZV9tYXRyaXhfY2VsbF9mcmVlKHZvaWQqIHVzZXJEYXRhLCB2b2lkKiBjZWxs
RGF0YSkKIHN0YXRpYyB2b2lkIF9ld2tfdGlsZV9tYXRyaXhfdGlsZV9mcmVlKHZvaWQqIGRhdGEs
IEV3a19UaWxlKiB0aWxlKQogewogICAgIEV3a19UaWxlX01hdHJpeCogdGlsZU1hdHJpeCA9IHN0
YXRpY19jYXN0PEV3a19UaWxlX01hdHJpeCo+KGRhdGEpOwotICAgIEV3a19UaWxlX01hdHJpeF9F
bnRyeSogZW50cnk7Ci0gICAgRWluYV9NYXRyaXhzcGFyc2VfQ2VsbCogY2VsbDsKIAotICAgIGVu
dHJ5ID0gZXdrX3RpbGVfbWF0cml4X2VudHJ5X2dldCh0aWxlTWF0cml4LCB0aWxlLT56b29tKTsK
KyAgICBFd2tfVGlsZV9NYXRyaXhfRW50cnkqIGVudHJ5ID0gZXdrX3RpbGVfbWF0cml4X2VudHJ5
X2dldCh0aWxlTWF0cml4LCB0aWxlLT56b29tKTsKICAgICBpZiAoIWVudHJ5KSB7CiAgICAgICAg
IEVSUigicmVtb3ZpbmcgdGlsZSAlcCB0aGF0IHdhcyBub3QgaW4gYW55IG1hdHJpeD8gTGVha2lu
Zy4uLiIsIHRpbGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgRWluYV9NYXRyaXhz
cGFyc2VfQ2VsbCogY2VsbDsKICAgICBpZiAoIWVpbmFfbWF0cml4c3BhcnNlX2NlbGxfaWR4X2dl
dChlbnRyeS0+bWF0cml4LCB0aWxlLT5yb3csIHRpbGUtPmNvbHVtbiwgJmNlbGwpKSB7Ci0KICAg
ICAgICAgRVJSKCJyZW1vdmluZyB0aWxlICVwIHRoYXQgd2FzIG5vdCBpbiB0aGUgbWF0cml4PyBM
ZWFraW5nLi4uIiwgdGlsZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xNjksNyArMTYz
LDcgQEAgc3RhdGljIHZvaWQgX2V3a190aWxlX21hdHJpeF90aWxlX2ZyZWUodm9pZCogZGF0YSwg
RXdrX1RpbGUqIHRpbGUpCiAgICAgdGlsZU1hdHJpeC0+c3RhdHMudGlsZXMuZnJlZWQrKzsKICNl
bmRpZgogCi0gICAgZW50cnktPmNvdW50LS07CisgICAgLS1lbnRyeS0+Y291bnQ7CiAgICAgaWYg
KCFlbnRyeS0+Y291bnQgJiYgZW50cnktPm1hdHJpeCAhPSB0aWxlTWF0cml4LT5tYXRyaXgpIHsK
ICAgICAgICAgZWluYV9tYXRyaXhzcGFyc2VfZnJlZShlbnRyeS0+bWF0cml4KTsKICAgICAgICAg
dGlsZU1hdHJpeC0+bWF0cmljZXMgPSBlaW5hX2lubGlzdF9yZW1vdmUodGlsZU1hdHJpeC0+bWF0
cmljZXMsIEVJTkFfSU5MSVNUX0dFVChlbnRyeSkpOwpAQCAtMjQ2LDE2ICsyNDAsMTUgQEAgRXdr
X1RpbGVfTWF0cml4KiBld2tfdGlsZV9tYXRyaXhfbmV3KEV3a19UaWxlX1VudXNlZF9DYWNoZSog
dGlsZVVudXNlZENhY2hlLCB1bnMKIGJvb2wgZXdrX3RpbGVfbWF0cml4X3pvb21fbGV2ZWxfc2V0
KEV3a19UaWxlX01hdHJpeCogdGlsZU1hdHJpeCwgZmxvYXQgem9vbSkKIHsKICAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwodGlsZU1hdHJpeCwgZmFsc2UpOwotICAgIEV3a19UaWxl
X01hdHJpeF9FbnRyeSogaXRlcmF0b3IgPSAwOwotICAgIEV3a19UaWxlX01hdHJpeF9FbnRyeSog
ZW50cnkgPSAwOwogCi0gICAgRUlOQV9JTkxJU1RfRk9SRUFDSCh0aWxlTWF0cml4LT5tYXRyaWNl
cywgaXRlcmF0b3IpIHsKLSAgICAgICAgaWYgKGl0ZXJhdG9yLT56b29tICE9IHpvb20pCi0gICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgZW50cnkgPSBpdGVyYXRvcjsKLSAgICAgICAgdGls
ZU1hdHJpeC0+bWF0cmljZXMgPSBlaW5hX2lubGlzdF9wcm9tb3RlKHRpbGVNYXRyaXgtPm1hdHJp
Y2VzLCBFSU5BX0lOTElTVF9HRVQoZW50cnkpKTsKLSAgICAgICAgdGlsZU1hdHJpeC0+bWF0cml4
ID0gZW50cnktPm1hdHJpeDsKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgRXdrX1RpbGVfTWF0
cml4X0VudHJ5KiBpdDsKKyAgICBFSU5BX0lOTElTVF9GT1JFQUNIKHRpbGVNYXRyaXgtPm1hdHJp
Y2VzLCBpdCkgeworICAgICAgICBpZiAoaXQtPnpvb20gPT0gem9vbSkgeworICAgICAgICAgICAg
dGlsZU1hdHJpeC0+bWF0cmljZXMgPSBlaW5hX2lubGlzdF9wcm9tb3RlKHRpbGVNYXRyaXgtPm1h
dHJpY2VzLCBFSU5BX0lOTElTVF9HRVQoaXQpKTsKKyAgICAgICAgICAgIHRpbGVNYXRyaXgtPm1h
dHJpeCA9IGl0LT5tYXRyaXg7CisKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9
CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTI2NCwzNCArMjU3LDMxIEBAIHZvaWQg
ZXdrX3RpbGVfbWF0cml4X2VudHJ5X25ldyhFd2tfVGlsZV9NYXRyaXgqIHRpbGVNYXRyaXgsIGZs
b2F0IHpvb20pCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4odGlsZU1hdHJpeCk7
CiAKLSAgICBFd2tfVGlsZV9NYXRyaXhfRW50cnkqIGVudHJ5ID0gbmV3IEV3a19UaWxlX01hdHJp
eF9FbnRyeTsKKyAgICBPd25QdHI8RXdrX1RpbGVfTWF0cml4X0VudHJ5PiBlbnRyeSA9IGFkb3B0
UHRyKG5ldyBFd2tfVGlsZV9NYXRyaXhfRW50cnkpOwogICAgIGVudHJ5LT56b29tID0gem9vbTsK
ICAgICBlbnRyeS0+Y291bnQgPSAwOwogICAgIGVudHJ5LT5tYXRyaXggPSBlaW5hX21hdHJpeHNw
YXJzZV9uZXcoMSwgMSwgX2V3a190aWxlX21hdHJpeF9jZWxsX2ZyZWUsIHRpbGVNYXRyaXgpOwog
ICAgIGlmICghZW50cnktPm1hdHJpeCkgewogICAgICAgICBFUlIoImNvdWxkIG5vdCBjcmVhdGUg
c3BhcnNlIG1hdHJpeC4iKTsKLSAgICAgICAgZGVsZXRlIGVudHJ5OwogICAgICAgICByZXR1cm47
CiAgICAgfQotICAgIHRpbGVNYXRyaXgtPm1hdHJpY2VzID0gZWluYV9pbmxpc3RfcHJlcGVuZCh0
aWxlTWF0cml4LT5tYXRyaWNlcywgRUlOQV9JTkxJU1RfR0VUKGVudHJ5KSk7CiAgICAgdGlsZU1h
dHJpeC0+bWF0cml4ID0gZW50cnktPm1hdHJpeDsKKyAgICB0aWxlTWF0cml4LT5tYXRyaWNlcyA9
IGVpbmFfaW5saXN0X3ByZXBlbmQodGlsZU1hdHJpeC0+bWF0cmljZXMsIEVJTkFfSU5MSVNUX0dF
VChlbnRyeS5sZWFrUHRyKCkpKTsKIH0KIAogdm9pZCBld2tfdGlsZV9tYXRyaXhfaW52YWxpZGF0
ZShFd2tfVGlsZV9NYXRyaXgqIHRpbGVNYXRyaXgpCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk4odGlsZU1hdHJpeCk7Ci0gICAgRXdrX1RpbGVfTWF0cml4X0VudHJ5KiBpdGVyYXRv
cjsKLSAgICBFaW5hX0lubGlzdCogbWF0cml4TGlzdDsKIAotICAgIG1hdHJpeExpc3QgPSB0aWxl
TWF0cml4LT5tYXRyaWNlczsKKyAgICBFaW5hX0lubGlzdCogbWF0cml4TGlzdCA9IHRpbGVNYXRy
aXgtPm1hdHJpY2VzOwogICAgIHdoaWxlIChtYXRyaXhMaXN0KSB7Ci0gICAgICAgIGl0ZXJhdG9y
ID0gRUlOQV9JTkxJU1RfQ09OVEFJTkVSX0dFVChtYXRyaXhMaXN0LCBFd2tfVGlsZV9NYXRyaXhf
RW50cnkpOwotICAgICAgICBFaW5hX0lubGlzdCogbmV4dCA9IChtYXRyaXhMaXN0LT5uZXh0KSA/
IG1hdHJpeExpc3QtPm5leHQgOiAwOworICAgICAgICBFd2tfVGlsZV9NYXRyaXhfRW50cnkqIGl0
ID0gRUlOQV9JTkxJU1RfQ09OVEFJTkVSX0dFVChtYXRyaXhMaXN0LCBFd2tfVGlsZV9NYXRyaXhf
RW50cnkpOworICAgICAgICBFaW5hX0lubGlzdCogbmV4dCA9IG1hdHJpeExpc3QtPm5leHQ7CiAK
LSAgICAgICAgaWYgKGl0ZXJhdG9yLT5tYXRyaXggIT0gdGlsZU1hdHJpeC0+bWF0cml4KSB7Ci0g
ICAgICAgICAgICBlaW5hX21hdHJpeHNwYXJzZV9mcmVlKGl0ZXJhdG9yLT5tYXRyaXgpOworICAg
ICAgICBpZiAoaXQtPm1hdHJpeCAhPSB0aWxlTWF0cml4LT5tYXRyaXgpIHsKKyAgICAgICAgICAg
IGVpbmFfbWF0cml4c3BhcnNlX2ZyZWUoaXQtPm1hdHJpeCk7CiAgICAgICAgICAgICB0aWxlTWF0
cml4LT5tYXRyaWNlcyA9IGVpbmFfaW5saXN0X3JlbW92ZSh0aWxlTWF0cml4LT5tYXRyaWNlcywg
bWF0cml4TGlzdCk7Ci0gICAgICAgICAgICBkZWxldGUgaXRlcmF0b3I7CisgICAgICAgICAgICBk
ZWxldGUgaXQ7CiAgICAgICAgIH0KIAogICAgICAgICBtYXRyaXhMaXN0ID0gbmV4dDsKQEAgLTMw
NSwxNiArMjk1LDExIEBAIHZvaWQgZXdrX3RpbGVfbWF0cml4X2ludmFsaWRhdGUoRXdrX1RpbGVf
TWF0cml4KiB0aWxlTWF0cml4KQogICovCiB2b2lkIGV3a190aWxlX21hdHJpeF9mcmVlKEV3a19U
aWxlX01hdHJpeCogdGlsZU1hdHJpeCkKIHsKLSAgICBFd2tfVGlsZV9NYXRyaXhfRW50cnkqIGVu
dHJ5OwotI2lmZGVmIERFQlVHX01FTV9MRUFLUwotICAgIHVpbnQ2NF90IHRpbGVzLCBieXRlczsK
LSNlbmRpZgotCiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4odGlsZU1hdHJpeCk7CiAK
ICAgICBld2tfdGlsZV91bnVzZWRfY2FjaGVfZnJlZXplKHRpbGVNYXRyaXgtPnRpbGVVbnVzZWRD
YWNoZSk7CiAgICAgZXdrX3RpbGVfbWF0cml4X2ludmFsaWRhdGUodGlsZU1hdHJpeCk7Ci0gICAg
ZW50cnkgPSBFSU5BX0lOTElTVF9DT05UQUlORVJfR0VUKHRpbGVNYXRyaXgtPm1hdHJpY2VzLCBF
d2tfVGlsZV9NYXRyaXhfRW50cnkpOworICAgIEV3a19UaWxlX01hdHJpeF9FbnRyeSogZW50cnkg
PSBFSU5BX0lOTElTVF9DT05UQUlORVJfR0VUKHRpbGVNYXRyaXgtPm1hdHJpY2VzLCBFd2tfVGls
ZV9NYXRyaXhfRW50cnkpOwogICAgIGVpbmFfbWF0cml4c3BhcnNlX2ZyZWUoZW50cnktPm1hdHJp
eCk7CiAgICAgdGlsZU1hdHJpeC0+bWF0cmljZXMgPSBlaW5hX2lubGlzdF9yZW1vdmUodGlsZU1h
dHJpeC0+bWF0cmljZXMsIHJlaW50ZXJwcmV0X2Nhc3Q8RWluYV9Jbmxpc3QqPihlbnRyeSkpOwog
ICAgIHRpbGVNYXRyaXgtPm1hdHJpY2VzID0gMDsKQEAgLTMyNCw4ICszMDksOCBAQCB2b2lkIGV3
a190aWxlX21hdHJpeF9mcmVlKEV3a19UaWxlX01hdHJpeCogdGlsZU1hdHJpeCkKICAgICBld2tf
dGlsZV91bnVzZWRfY2FjaGVfdW5yZWYodGlsZU1hdHJpeC0+dGlsZVVudXNlZENhY2hlKTsKIAog
I2lmZGVmIERFQlVHX01FTV9MRUFLUwotICAgIHRpbGVzID0gdGlsZU1hdHJpeC0+c3RhdHMudGls
ZXMuYWxsb2NhdGVkIC0gdGlsZU1hdHJpeC0+c3RhdHMudGlsZXMuZnJlZWQ7Ci0gICAgYnl0ZXMg
PSB0aWxlTWF0cml4LT5zdGF0cy5ieXRlcy5hbGxvY2F0ZWQgLSB0aWxlTWF0cml4LT5zdGF0cy5i
eXRlcy5mcmVlZDsKKyAgICB1aW50NjRfdCB0aWxlcyA9IHRpbGVNYXRyaXgtPnN0YXRzLnRpbGVz
LmFsbG9jYXRlZCAtIHRpbGVNYXRyaXgtPnN0YXRzLnRpbGVzLmZyZWVkOworICAgIHVpbnQ2NF90
IGJ5dGVzID0gdGlsZU1hdHJpeC0+c3RhdHMuYnl0ZXMuYWxsb2NhdGVkIC0gdGlsZU1hdHJpeC0+
c3RhdHMuYnl0ZXMuZnJlZWQ7CiAKICAgICB0aWxlc19sZWFrZWQgKz0gdGlsZXM7CiAgICAgYnl0
ZXNfbGVha2VkICs9IGJ5dGVzOwpAQCAtMzU4LDEyICszNDMsMTQgQEAgdm9pZCBld2tfdGlsZV9t
YXRyaXhfZnJlZShFd2tfVGlsZV9NYXRyaXgqIHRpbGVNYXRyaXgpCiB2b2lkIGV3a190aWxlX21h
dHJpeF9yZXNpemUoRXdrX1RpbGVfTWF0cml4KiB0aWxlTWF0cml4LCB1bnNpZ25lZCBsb25nIGNv
bHMsIHVuc2lnbmVkIGxvbmcgcm93cykKIHsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
Tih0aWxlTWF0cml4KTsKKwogICAgIGVpbmFfbWF0cml4c3BhcnNlX3NpemVfc2V0KHRpbGVNYXRy
aXgtPm1hdHJpeCwgcm93cywgY29scyk7CiB9CiAKIHZvaWQgZXdrX3RpbGVfbWF0cml4X3NpemVf
Z2V0KEV3a19UaWxlX01hdHJpeCogdGlsZU1hdHJpeCwgdW5zaWduZWQgbG9uZyogY29sdW1ucywg
dW5zaWduZWQgbG9uZyogcm93cykKIHsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTih0
aWxlTWF0cml4KTsKKwogICAgIGVpbmFfbWF0cml4c3BhcnNlX3NpemVfZ2V0KHRpbGVNYXRyaXgt
Pm1hdHJpeCwgcm93cywgY29sdW1ucyk7CiB9CiAKQEAgLTM3NSw2ICszNjIsNyBAQCB2b2lkIGV3
a190aWxlX21hdHJpeF9zaXplX2dldChFd2tfVGlsZV9NYXRyaXgqIHRpbGVNYXRyaXgsIHVuc2ln
bmVkIGxvbmcqIGNvbHVtbgogRXdrX1RpbGVfVW51c2VkX0NhY2hlKiBld2tfdGlsZV9tYXRyaXhf
dW51c2VkX2NhY2hlX2dldChjb25zdCBFd2tfVGlsZV9NYXRyaXgqIHRpbGVNYXRyaXgpCiB7CiAg
ICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHRpbGVNYXRyaXgsIDApOworCiAgICAg
cmV0dXJuIHRpbGVNYXRyaXgtPnRpbGVVbnVzZWRDYWNoZTsKIH0KIApAQCAtNDA1LDE0ICszOTMs
MTUgQEAgRXdrX1RpbGUqIGV3a190aWxlX21hdHJpeF90aWxlX2V4YWN0X2dldChFd2tfVGlsZV9N
YXRyaXgqIHRpbGVNYXRyaXgsIHVuc2lnbmVkIGwKICAgICBpZiAoIXRpbGUpCiAgICAgICAgIHJl
dHVybiAwOwogCi0gICAgaWYgKHRpbGUtPnpvb20gPT0gem9vbSkKLSAgICAgICAgZ290byBlbmQ7
CisgICAgaWYgKHRpbGUtPnpvb20gIT0gem9vbSkKKyAgICAgICAgcmV0dXJuIDA7CiAKLWVuZDoK
KyNpZm5kZWYgTkRFQlVHCiAgICAgaWYgKCF0aWxlLT52aXNpYmxlKSB7CiAgICAgICAgIGlmICgh
ZXdrX3RpbGVfdW51c2VkX2NhY2hlX3RpbGVfZ2V0KHRpbGVNYXRyaXgtPnRpbGVVbnVzZWRDYWNo
ZSwgdGlsZSkpCiAgICAgICAgICAgICBXUk4oIkV3a19UaWxlIHdhcyB1bnVzZWQgYnV0IG5vdCBp
biBjYWNoZT8gYnVnISIpOwogICAgIH0KKyNlbmRpZgogCiAgICAgcmV0dXJuIHRpbGU7CiB9CkBA
IC00MjksMTIgKzQxOCw5IEBAIGVuZDoKICAqCiAgKiBAc2VlIGV3a190aWxlX21hdHJpeF90aWxl
X2V4YWN0X2dldCgpCiAgKi8KLUVpbmFfQm9vbCBld2tfdGlsZV9tYXRyaXhfdGlsZV9leGFjdF9l
eGlzdHMoRXdrX1RpbGVfTWF0cml4KiB0aWxlTWF0cml4LCB1bnNpZ25lZCBsb25nIGNvbHVtbiwg
dW5zaWduZWQgbG9uZyByb3csIGZsb2F0IHpvb20pCitib29sIGV3a190aWxlX21hdHJpeF90aWxl
X2V4YWN0X2V4aXN0cyhFd2tfVGlsZV9NYXRyaXgqIHRpbGVNYXRyaXgsIHVuc2lnbmVkIGxvbmcg
Y29sdW1uLCB1bnNpZ25lZCBsb25nIHJvdywgZmxvYXQgem9vbSkKIHsKLSAgICBpZiAoIWVpbmFf
bWF0cml4c3BhcnNlX2RhdGFfaWR4X2dldCh0aWxlTWF0cml4LT5tYXRyaXgsIHJvdywgY29sdW1u
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJu
IGV3a190aWxlX21hdHJpeF90aWxlX2V4YWN0X2dldCh0aWxlTWF0cml4LCBjb2x1bW4sIHJvdywg
em9vbSk7CiB9CiAKIC8qKgpAQCAtNDUxLDIzICs0MzcsMjAgQEAgRWluYV9Cb29sIGV3a190aWxl
X21hdHJpeF90aWxlX2V4YWN0X2V4aXN0cyhFd2tfVGlsZV9NYXRyaXgqIHRpbGVNYXRyaXgsIHVu
c2lnbmUKICAqLwogRXdrX1RpbGUqIGV3a190aWxlX21hdHJpeF90aWxlX25ldyhFd2tfVGlsZV9N
YXRyaXgqIHRpbGVNYXRyaXgsIEV2YXMqIGNhbnZhcywgdW5zaWduZWQgbG9uZyBjb2x1bW4sIHVu
c2lnbmVkIGxvbmcgcm93LCBmbG9hdCB6b29tKQogewotICAgIEV2YXNfQ29vcmQgdGlsZVdpZHRo
LCB0aWxlSGVpZ2h0OwotICAgIEV3a19UaWxlKiB0aWxlOwotICAgIEV3a19UaWxlX01hdHJpeF9F
bnRyeSogZW50cnk7Ci0KICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwodGlsZU1h
dHJpeCwgMCk7CiAgICAgRUlOQV9TQUZFVFlfT05fRkFMU0VfUkVUVVJOX1ZBTCh6b29tID4gMC4w
LCAwKTsKLSAgICBlbnRyeSA9IGV3a190aWxlX21hdHJpeF9lbnRyeV9nZXQodGlsZU1hdHJpeCwg
em9vbSk7CisKKyAgICBFd2tfVGlsZV9NYXRyaXhfRW50cnkqIGVudHJ5ID0gZXdrX3RpbGVfbWF0
cml4X2VudHJ5X2dldCh0aWxlTWF0cml4LCB6b29tKTsKICAgICBpZiAoIWVudHJ5KSB7CiAgICAg
ICAgIEVSUigiY291bGQgbm90IGdldCBtYXRyaXggYXQgem9vbSAlZiBmb3IgdGlsZSIsIHpvb20p
OwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgZW50cnktPmNvdW50Kys7CisgICAgKytl
bnRyeS0+Y291bnQ7CiAKLSAgICB0aWxlV2lkdGggPSB0aWxlTWF0cml4LT50aWxlLndpZHRoOwot
ICAgIHRpbGVIZWlnaHQgPSB0aWxlTWF0cml4LT50aWxlLmhlaWdodDsKKyAgICBFdmFzX0Nvb3Jk
IHRpbGVXaWR0aCA9IHRpbGVNYXRyaXgtPnRpbGUud2lkdGg7CisgICAgRXZhc19Db29yZCB0aWxl
SGVpZ2h0ID0gdGlsZU1hdHJpeC0+dGlsZS5oZWlnaHQ7CiAKLSAgICB0aWxlID0gZXdrX3RpbGVf
bmV3KGNhbnZhcywgdGlsZVdpZHRoLCB0aWxlSGVpZ2h0LCB6b29tLCB0aWxlTWF0cml4LT5jc3Bh
Y2UpOworICAgIEV3a19UaWxlKiB0aWxlID0gZXdrX3RpbGVfbmV3KGNhbnZhcywgdGlsZVdpZHRo
LCB0aWxlSGVpZ2h0LCB6b29tLCB0aWxlTWF0cml4LT5jc3BhY2UpOwogICAgIGlmICghdGlsZSkg
ewogICAgICAgICBFUlIoImNvdWxkIG5vdCBjcmVhdGUgdGlsZSAlZHglZCBhdCAlZiwgY3NwYWNl
PSVkIiwgdGlsZVdpZHRoLCB0aWxlSGVpZ2h0LCAoZG91YmxlKXpvb20sIHRpbGVNYXRyaXgtPmNz
cGFjZSk7CiAgICAgICAgIHJldHVybiAwOwpAQCAtNTExLDcgKzQ5NCw3IEBAIEV3a19UaWxlKiBl
d2tfdGlsZV9tYXRyaXhfdGlsZV9uZXcoRXdrX1RpbGVfTWF0cml4KiB0aWxlTWF0cml4LCBFdmFz
KiBjYW52YXMsIHVuCiAgKgogICogQHJldHVybiAjdHJ1ZSBvbiBzdWNjZXNzIG9yICNmYWxzZSBv
biBmYWlsdXJlLgogICovCi1FaW5hX0Jvb2wgZXdrX3RpbGVfbWF0cml4X3RpbGVfcHV0KEV3a19U
aWxlX01hdHJpeCogdGlsZU1hdHJpeCwgRXdrX1RpbGUqIHRpbGUsIGRvdWJsZSBsYXN0VXNlZCkK
K2Jvb2wgZXdrX3RpbGVfbWF0cml4X3RpbGVfcHV0KEV3a19UaWxlX01hdHJpeCogdGlsZU1hdHJp
eCwgRXdrX1RpbGUqIHRpbGUsIGRvdWJsZSBsYXN0VXNlZCkKIHsKICAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTl9WQUwodGlsZU1hdHJpeCwgZmFsc2UpOwogICAgIEVJTkFfU0FGRVRZX09O
X05VTExfUkVUVVJOX1ZBTCh0aWxlLCBmYWxzZSk7CkBAIC01MjYsMzIgKzUwOSwzMiBAQCBFaW5h
X0Jvb2wgZXdrX3RpbGVfbWF0cml4X3RpbGVfcHV0KEV3a19UaWxlX01hdHJpeCogdGlsZU1hdHJp
eCwgRXdrX1RpbGUqIHRpbGUsCiB2b2lkIGV3a190aWxlX21hdHJpeF90aWxlX3VwZGF0ZXNfY2xl
YXIoRXdrX1RpbGVfTWF0cml4KiB0aWxlTWF0cml4LCBFd2tfVGlsZSogdGlsZSkKIHsKICAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTih0aWxlTWF0cml4KTsKKwogICAgIGlmICghdGlsZS0+
dXBkYXRlcyAmJiAhdGlsZS0+c3RhdHMuZnVsbF91cGRhdGUpCiAgICAgICAgIHJldHVybjsKKwog
ICAgIGV3a190aWxlX3VwZGF0ZXNfY2xlYXIodGlsZSk7CiAgICAgdGlsZU1hdHJpeC0+dXBkYXRl
cyA9IGVpbmFfbGlzdF9yZW1vdmUodGlsZU1hdHJpeC0+dXBkYXRlcywgdGlsZSk7CiB9CiAKLXN0
YXRpYyBFaW5hX0Jvb2wgX2V3a190aWxlX21hdHJpeF9zbGljZXJfc2V0dXAoRXdrX1RpbGVfTWF0
cml4KiB0aWxlTWF0cml4LCBjb25zdCBFaW5hX1JlY3RhbmdsZSogYXJlYSwgZmxvYXQgem9vbSwg
RWluYV9UaWxlX0dyaWRfU2xpY2VyKiBzbGljZXIpCitzdGF0aWMgYm9vbCBfZXdrX3RpbGVfbWF0
cml4X3NsaWNlcl9zZXR1cChFd2tfVGlsZV9NYXRyaXgqIHRpbGVNYXRyaXgsIGNvbnN0IEVpbmFf
UmVjdGFuZ2xlKiBhcmVhLCBmbG9hdCB6b29tLCBFaW5hX1RpbGVfR3JpZF9TbGljZXIqIHNsaWNl
cikKIHsKLSAgICB1bnNpZ25lZCBsb25nIHJvd3MsIGNvbHM7Ci0gICAgRXZhc19Db29yZCB4LCB5
LCB3aWR0aCwgaGVpZ2h0LCB0aWxlV2lkdGgsIHRpbGVIZWlnaHQ7Ci0KKyAgICBVTlVTRURfUEFS
QU0oem9vbSk7CiAgICAgaWYgKGFyZWEtPncgPD0gMCB8fCBhcmVhLT5oIDw9IDApIHsKLSAgICAg
ICAgV1JOKCJpbnZhbGlkIGFyZWEgcmVnaW9uOiAlZCwlZCslZHglZC4iLAotICAgICAgICAgICAg
YXJlYS0+eCwgYXJlYS0+eSwgYXJlYS0+dywgYXJlYS0+aCk7CisgICAgICAgIFdSTigiaW52YWxp
ZCBhcmVhIHJlZ2lvbjogJWQsJWQrJWR4JWQuIiwgYXJlYS0+eCwgYXJlYS0+eSwgYXJlYS0+dywg
YXJlYS0+aCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICB4ID0gYXJlYS0+
eDsKLSAgICB5ID0gYXJlYS0+eTsKLSAgICB3aWR0aCA9IGFyZWEtPnc7Ci0gICAgaGVpZ2h0ID0g
YXJlYS0+aDsKKyAgICBFdmFzX0Nvb3JkIHggPSBhcmVhLT54OworICAgIEV2YXNfQ29vcmQgeSA9
IGFyZWEtPnk7CisgICAgRXZhc19Db29yZCB3aWR0aCA9IGFyZWEtPnc7CisgICAgRXZhc19Db29y
ZCBoZWlnaHQgPSBhcmVhLT5oOwogCi0gICAgdGlsZVdpZHRoID0gdGlsZU1hdHJpeC0+dGlsZS53
aWR0aDsKLSAgICB0aWxlSGVpZ2h0ID0gdGlsZU1hdHJpeC0+dGlsZS5oZWlnaHQ7CisgICAgRXZh
c19Db29yZCB0aWxlV2lkdGggPSB0aWxlTWF0cml4LT50aWxlLndpZHRoOworICAgIEV2YXNfQ29v
cmQgdGlsZUhlaWdodCA9IHRpbGVNYXRyaXgtPnRpbGUuaGVpZ2h0OwogCiAgICAgLy8gY3JvcHBp
bmcgYXJlYSByZWdpb24gdG8gZml0IG1hdHJpeAorICAgIHVuc2lnbmVkIGxvbmcgcm93cywgY29s
czsKICAgICBlaW5hX21hdHJpeHNwYXJzZV9zaXplX2dldCh0aWxlTWF0cml4LT5tYXRyaXgsICZy
b3dzLCAmY29scyk7CiAgICAgaWYgKHggPCAwKSB7CiAgICAgICAgIHdpZHRoICs9IHg7CkBAIC01
NjIsNDAgKzU0NSwzNCBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdGlsZV9tYXRyaXhfc2xpY2Vy
X3NldHVwKEV3a19UaWxlX01hdHJpeCogdGlsZU1hdHJpeCwgY29ucwogICAgICAgICB5ID0gMDsK
ICAgICB9CiAKLSAgICBpZiAoeSArIGhlaWdodCAtIDEgPiAobG9uZykocm93cyAqIHRpbGVIZWln
aHQpKQorICAgIGlmICh5ICsgaGVpZ2h0IC0gMSA+IHN0YXRpY19jYXN0PGxvbmc+KHJvd3MgKiB0
aWxlSGVpZ2h0KSkKICAgICAgICAgaGVpZ2h0ID0gcm93cyAqIHRpbGVIZWlnaHQgLSB5OwotICAg
IGlmICh4ICsgd2lkdGggLSAxID4gKGxvbmcpKGNvbHMgKiB0aWxlV2lkdGgpKQorICAgIGlmICh4
ICsgd2lkdGggLSAxID4gc3RhdGljX2Nhc3Q8bG9uZz4oY29scyAqIHRpbGVXaWR0aCkpCiAgICAg
ICAgIHdpZHRoID0gY29scyAqIHRpbGVXaWR0aCAtIHg7CiAKICAgICByZXR1cm4gZWluYV90aWxl
X2dyaWRfc2xpY2VyX3NldHVwKHNsaWNlciwgeCwgeSwgd2lkdGgsIGhlaWdodCwgdGlsZVdpZHRo
LCB0aWxlSGVpZ2h0KTsKIH0KIAogCi1FaW5hX0Jvb2wgZXdrX3RpbGVfbWF0cml4X3VwZGF0ZShF
d2tfVGlsZV9NYXRyaXgqIHRpbGVNYXRyaXgsIGNvbnN0IEVpbmFfUmVjdGFuZ2xlKiB1cGRhdGUs
IGZsb2F0IHpvb20pCitib29sIGV3a190aWxlX21hdHJpeF91cGRhdGUoRXdrX1RpbGVfTWF0cml4
KiB0aWxlTWF0cml4LCBjb25zdCBFaW5hX1JlY3RhbmdsZSogdXBkYXRlLCBmbG9hdCB6b29tKQog
ewotICAgIGNvbnN0IEVpbmFfVGlsZV9HcmlkX0luZm8qIGluZm87Ci0gICAgRWluYV9UaWxlX0dy
aWRfU2xpY2VyIHNsaWNlcjsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwodGls
ZU1hdHJpeCwgZmFsc2UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTCh1cGRh
dGUsIGZhbHNlKTsKIAogICAgIGlmICh1cGRhdGUtPncgPCAxIHx8IHVwZGF0ZS0+aCA8IDEpIHsK
LSAgICAgICAgREJHKCJXaHkgd2UgZ2V0IHVwZGF0ZXMgd2l0aCBlbXB0eSBhcmVhcz8gJWQsJWQr
JWR4JWQgYXQgem9vbSAlZiIsCi0gICAgICAgICAgICB1cGRhdGUtPngsIHVwZGF0ZS0+eSwgdXBk
YXRlLT53LCB1cGRhdGUtPmgsIHpvb20pOworICAgICAgICBEQkcoIldoeSB3ZSBnZXQgdXBkYXRl
cyB3aXRoIGVtcHR5IGFyZWFzPyAlZCwlZCslZHglZCBhdCB6b29tICVmIiwgdXBkYXRlLT54LCB1
cGRhdGUtPnksIHVwZGF0ZS0+dywgdXBkYXRlLT5oLCB6b29tKTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogCisgICAgRWluYV9UaWxlX0dyaWRfU2xpY2VyIHNsaWNlcjsKICAgICBpZiAo
IV9ld2tfdGlsZV9tYXRyaXhfc2xpY2VyX3NldHVwKHRpbGVNYXRyaXgsIHVwZGF0ZSwgem9vbSwg
JnNsaWNlcikpIHsKLSAgICAgICAgRVJSKCJDb3VsZCBub3Qgc2V0dXAgc2xpY2VyIGZvciB1cGRh
dGUgJWQsJWQrJWR4JWQgYXQgem9vbSAlZiIsCi0gICAgICAgICAgICB1cGRhdGUtPngsIHVwZGF0
ZS0+eSwgdXBkYXRlLT53LCB1cGRhdGUtPmgsIHpvb20pOworICAgICAgICBFUlIoIkNvdWxkIG5v
dCBzZXR1cCBzbGljZXIgZm9yIHVwZGF0ZSAlZCwlZCslZHglZCBhdCB6b29tICVmIiwgdXBkYXRl
LT54LCB1cGRhdGUtPnksIHVwZGF0ZS0+dywgdXBkYXRlLT5oLCB6b29tKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIAorICAgIGNvbnN0IEVpbmFfVGlsZV9HcmlkX0luZm8qIGluZm87
CiAgICAgd2hpbGUgKGVpbmFfdGlsZV9ncmlkX3NsaWNlcl9uZXh0KCZzbGljZXIsICZpbmZvKSkg
ewotICAgICAgICB1bnNpZ25lZCBsb25nIGNvbCwgcm93OwotICAgICAgICBjb2wgPSBpbmZvLT5j
b2w7Ci0gICAgICAgIHJvdyA9IGluZm8tPnJvdzsKLQotICAgICAgICBFd2tfVGlsZSogdGlsZSA9
IHN0YXRpY19jYXN0PEV3a19UaWxlKj4oZWluYV9tYXRyaXhzcGFyc2VfZGF0YV9pZHhfZ2V0KHRp
bGVNYXRyaXgtPm1hdHJpeCwgcm93LCBjb2wpKTsKKyAgICAgICAgRXdrX1RpbGUqIHRpbGUgPSBz
dGF0aWNfY2FzdDxFd2tfVGlsZSo+KGVpbmFfbWF0cml4c3BhcnNlX2RhdGFfaWR4X2dldCh0aWxl
TWF0cml4LT5tYXRyaXgsIGluZm8tPnJvdywgaW5mby0+Y29sKSk7CiAgICAgICAgIGlmICghdGls
ZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCkBAIC02MTMsMTEgKzU5MCwxMSBAQCBFaW5hX0Jv
b2wgZXdrX3RpbGVfbWF0cml4X3VwZGF0ZShFd2tfVGlsZV9NYXRyaXgqIHRpbGVNYXRyaXgsIGNv
bnN0IEVpbmFfUmVjdGFuZwogCiB2b2lkIGV3a190aWxlX21hdHJpeF91cGRhdGVzX3Byb2Nlc3Mo
RXdrX1RpbGVfTWF0cml4KiB0aWxlTWF0cml4KQogewotICAgIEVpbmFfTGlzdCogbGlzdCwgKmxp
c3ROZXh0OwotICAgIHZvaWQqIGl0ZW07CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4o
dGlsZU1hdHJpeCk7CiAKICAgICAvLyBwcm9jZXNzIHVwZGF0ZXMsIHVuZmxhZyB0aWxlcworICAg
IEVpbmFfTGlzdCogbGlzdCwgKmxpc3ROZXh0OworICAgIHZvaWQqIGl0ZW07CiAgICAgRUlOQV9M
SVNUX0ZPUkVBQ0hfU0FGRSh0aWxlTWF0cml4LT51cGRhdGVzLCBsaXN0LCBsaXN0TmV4dCwgaXRl
bSkgewogICAgICAgICBFd2tfVGlsZSogdGlsZSA9IHN0YXRpY19jYXN0PEV3a19UaWxlKj4oaXRl
bSk7CiAgICAgICAgIGV3a190aWxlX3VwZGF0ZXNfcHJvY2Vzcyh0aWxlLCB0aWxlTWF0cml4LT5y
ZW5kZXIuY2FsbGJhY2ssIHRpbGVNYXRyaXgtPnJlbmRlci5kYXRhKTsKQEAgLTYzMCw0NiArNjA3
LDQzIEBAIHZvaWQgZXdrX3RpbGVfbWF0cml4X3VwZGF0ZXNfcHJvY2VzcyhFd2tfVGlsZV9NYXRy
aXgqIHRpbGVNYXRyaXgpCiAKIHZvaWQgZXdrX3RpbGVfbWF0cml4X3VwZGF0ZXNfY2xlYXIoRXdr
X1RpbGVfTWF0cml4KiB0aWxlTWF0cml4KQogewotICAgIHZvaWQqIGl0ZW07CiAgICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk4odGlsZU1hdHJpeCk7CiAKKyAgICB2b2lkKiBpdGVtOwogICAg
IEVJTkFfTElTVF9GUkVFKHRpbGVNYXRyaXgtPnVwZGF0ZXMsIGl0ZW0pCiAgICAgICAgIGV3a190
aWxlX3VwZGF0ZXNfY2xlYXIoc3RhdGljX2Nhc3Q8RXdrX1RpbGUqPihpdGVtKSk7CiAgICAgdGls
ZU1hdHJpeC0+dXBkYXRlcyA9IDA7CiB9CiAKKyNpZmRlZiBERUJVR19NRU1fTEVBS1MKIC8vIHJl
bW92ZSBtZSBsYXRlciEKIHZvaWQgZXdrX3RpbGVfbWF0cml4X2RiZyhjb25zdCBFd2tfVGlsZV9N
YXRyaXgqIHRpbGVNYXRyaXgpCiB7Ci0gICAgRWluYV9JdGVyYXRvciogaXRlcmF0b3IgPSBlaW5h
X21hdHJpeHNwYXJzZV9pdGVyYXRvcl9jb21wbGV0ZV9uZXcodGlsZU1hdHJpeC0+bWF0cml4KTsK
KyAgICBFaW5hX0l0ZXJhdG9yKiBpdCA9IGVpbmFfbWF0cml4c3BhcnNlX2l0ZXJhdG9yX2NvbXBs
ZXRlX25ldyh0aWxlTWF0cml4LT5tYXRyaXgpOwogICAgIEVpbmFfTWF0cml4c3BhcnNlX0NlbGwq
IGNlbGw7Ci0gICAgRWluYV9Cb29sIGxhc3RfZW1wdHkgPSBmYWxzZTsKKyAgICBib29sIHdhc1By
ZXZpb3VzRW1wdHkgPSBmYWxzZTsKIAotI2lmZGVmIERFQlVHX01FTV9MRUFLUwogICAgIHByaW50
ZigiRXdrX1RpbGUgTWF0cml4OiB0aWxlc1srJSIgUFJJdTY0ICIsLSUiIFBSSXU2NCAiOiUiIFBS
SXU2NCAiXSAiCiAgICAgICAgICAgICJieXRlc1srJSIgUFJJdTY0ICIsLSUiIFBSSXU2NCAiOiUi
IFBSSXU2NCAiXVxuIiwKICAgICAgICAgICAgdGlsZU1hdHJpeC0+c3RhdHMudGlsZXMuYWxsb2Nh
dGVkLCB0aWxlTWF0cml4LT5zdGF0cy50aWxlcy5mcmVlZCwKICAgICAgICAgICAgdGlsZU1hdHJp
eC0+c3RhdHMudGlsZXMuYWxsb2NhdGVkIC0gdGlsZU1hdHJpeC0+c3RhdHMudGlsZXMuZnJlZWQs
CiAgICAgICAgICAgIHRpbGVNYXRyaXgtPnN0YXRzLmJ5dGVzLmFsbG9jYXRlZCwgdGlsZU1hdHJp
eC0+c3RhdHMuYnl0ZXMuZnJlZWQsCiAgICAgICAgICAgIHRpbGVNYXRyaXgtPnN0YXRzLmJ5dGVz
LmFsbG9jYXRlZCAtIHRpbGVNYXRyaXgtPnN0YXRzLmJ5dGVzLmZyZWVkKTsKLSNlbHNlCi0gICAg
cHJpbnRmKCJFd2tfVGlsZSBNYXRyaXg6XG4iKTsKLSNlbmRpZgogCi0gICAgRUlOQV9JVEVSQVRP
Ul9GT1JFQUNIKGl0ZXJhdG9yLCBjZWxsKSB7CisgICAgRUlOQV9JVEVSQVRPUl9GT1JFQUNIKGl0
LCBjZWxsKSB7CiAgICAgICAgIHVuc2lnbmVkIGxvbmcgcm93LCBjb2x1bW47CiAgICAgICAgIGVp
bmFfbWF0cml4c3BhcnNlX2NlbGxfcG9zaXRpb25fZ2V0KGNlbGwsICZyb3csICZjb2x1bW4pOwog
CiAgICAgICAgIEV3a19UaWxlKiB0aWxlID0gc3RhdGljX2Nhc3Q8RXdrX1RpbGUqPihlaW5hX21h
dHJpeHNwYXJzZV9jZWxsX2RhdGFfZ2V0KGNlbGwpKTsKICAgICAgICAgaWYgKCF0aWxlKSB7Ci0g
ICAgICAgICAgICBpZiAoIWxhc3RfZW1wdHkpIHsKLSAgICAgICAgICAgICAgICBsYXN0X2VtcHR5
ID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmICghd2FzUHJldmlvdXNFbXB0eSkgeworICAgICAgICAg
ICAgICAgIHdhc1ByZXZpb3VzRW1wdHkgPSB0cnVlOwogICAgICAgICAgICAgICAgIHByaW50Zigi
RW1wdHk6Iik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBwcmludGYoIiBbJWx1LCVsdV0i
LCBjb2x1bW4sIHJvdyk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAobGFzdF9l
bXB0eSkgewotICAgICAgICAgICAgICAgIGxhc3RfZW1wdHkgPSBmYWxzZTsKKyAgICAgICAgICAg
IGlmICh3YXNQcmV2aW91c0VtcHR5KSB7CisgICAgICAgICAgICAgICAgd2FzUHJldmlvdXNFbXB0
eSA9IGZhbHNlOwogICAgICAgICAgICAgICAgIHByaW50ZigiXG4iKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIHByaW50ZigiJTNsdSwlM2x1ICUxMHA6IiwgY29sdW1uLCByb3csIHRpbGUp
OwpAQCAtNjc3LDEyICs2NTEsMTMgQEAgdm9pZCBld2tfdGlsZV9tYXRyaXhfZGJnKGNvbnN0IEV3
a19UaWxlX01hdHJpeCogdGlsZU1hdHJpeCkKICAgICAgICAgICAgIHByaW50ZigiXG4iKTsKICAg
ICAgICAgfQogICAgIH0KLSAgICBpZiAobGFzdF9lbXB0eSkKKyAgICBpZiAod2FzUHJldmlvdXNF
bXB0eSkKICAgICAgICAgcHJpbnRmKCJcbiIpOwotICAgIGVpbmFfaXRlcmF0b3JfZnJlZShpdGVy
YXRvcik7CisgICAgZWluYV9pdGVyYXRvcl9mcmVlKGl0KTsKIAogICAgIGV3a190aWxlX3VudXNl
ZF9jYWNoZV9kYmcodGlsZU1hdHJpeC0+dGlsZVVudXNlZENhY2hlKTsKIH0KKyNlbmRpZgogCiAv
KioKICAqIEZyZWV6ZSBtYXRyaXggdG8gbm90IGRvIG1haW50ZW5hbmNlIHRhc2tzLgpAQCAtNjk2
LDkgKzY3MSwxMCBAQCB2b2lkIGV3a190aWxlX21hdHJpeF9kYmcoY29uc3QgRXdrX1RpbGVfTWF0
cml4KiB0aWxlTWF0cml4KQogdm9pZCBld2tfdGlsZV9tYXRyaXhfZnJlZXplKEV3a19UaWxlX01h
dHJpeCogdGlsZU1hdHJpeCkKIHsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTih0aWxl
TWF0cml4KTsKKwogICAgIGlmICghdGlsZU1hdHJpeC0+ZnJvemVuKQogICAgICAgICBld2tfdGls
ZV91bnVzZWRfY2FjaGVfZnJlZXplKHRpbGVNYXRyaXgtPnRpbGVVbnVzZWRDYWNoZSk7Ci0gICAg
dGlsZU1hdHJpeC0+ZnJvemVuKys7CisgICAgKyt0aWxlTWF0cml4LT5mcm96ZW47CiB9CiAKIC8q
KgpAQCAtNzEwLDEyICs2ODYsMTMgQEAgdm9pZCBld2tfdGlsZV9tYXRyaXhfZnJlZXplKEV3a19U
aWxlX01hdHJpeCogdGlsZU1hdHJpeCkKIHZvaWQgZXdrX3RpbGVfbWF0cml4X3RoYXcoRXdrX1Rp
bGVfTWF0cml4KiB0aWxlTWF0cml4KQogewogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
KHRpbGVNYXRyaXgpOworCiAgICAgaWYgKCF0aWxlTWF0cml4LT5mcm96ZW4pIHsKICAgICAgICAg
RVJSKCJ0aGF3aW5nIG1vcmUgdGhhbiBmcmVlemluZyEiKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIHRpbGVNYXRyaXgtPmZyb3plbi0tOworICAgIC0tdGlsZU1hdHJpeC0+ZnJvemVu
OwogICAgIGlmICghdGlsZU1hdHJpeC0+ZnJvemVuKQogICAgICAgICBld2tfdGlsZV91bnVzZWRf
Y2FjaGVfdGhhdyh0aWxlTWF0cml4LT50aWxlVW51c2VkQ2FjaGUpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9tYXRyaXhfcHJpdmF0ZS5oIGIvU291cmNl
L1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9tYXRyaXhfcHJpdmF0ZS5oCmluZGV4IDE1MWViYjAu
Ljk5YTk1ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRfbWF0
cml4X3ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX21hdHJp
eF9wcml2YXRlLmgKQEAgLTI3LDM0ICsyNywzNCBAQAogI2luY2x1ZGUgPEV2YXMuaD4KIAogLyog
bWF0cml4IG9mIHRpbGVzICovCi1Fd2tfVGlsZV9NYXRyaXggKmV3a190aWxlX21hdHJpeF9uZXco
RXdrX1RpbGVfVW51c2VkX0NhY2hlICp0dWMsIHVuc2lnbmVkIGxvbmcgY29scywgdW5zaWduZWQg
bG9uZyByb3dzLCBmbG9hdCB6b29tX2xldmVsLCBFdmFzX0NvbG9yc3BhY2UgY29sb3Jfc3BhY2Us
IHZvaWQgKCpyZW5kZXJfY2FsbGJhY2spKHZvaWQgKmRhdGEsIEV3a19UaWxlICp0LCBjb25zdCBF
aW5hX1JlY3RhbmdsZSAqdXBkYXRlKSwgY29uc3Qgdm9pZCAqcmVuZGVyX2RhdGEpOwotdm9pZCBl
d2tfdGlsZV9tYXRyaXhfZW50cnlfbmV3KEV3a19UaWxlX01hdHJpeCAqdG0sIGZsb2F0IHpvb20p
Owotdm9pZCBld2tfdGlsZV9tYXRyaXhfZnJlZShFd2tfVGlsZV9NYXRyaXggKnRtKTsKK0V3a19U
aWxlX01hdHJpeCogZXdrX3RpbGVfbWF0cml4X25ldyhFd2tfVGlsZV9VbnVzZWRfQ2FjaGUqIHR1
YywgdW5zaWduZWQgbG9uZyBjb2xzLCB1bnNpZ25lZCBsb25nIHJvd3MsIGZsb2F0IHpvb21fbGV2
ZWwsIEV2YXNfQ29sb3JzcGFjZSBjb2xvcl9zcGFjZSwgdm9pZCAoKnJlbmRlcl9jYWxsYmFjayko
dm9pZCogZGF0YSwgRXdrX1RpbGUqIHQsIGNvbnN0IEVpbmFfUmVjdGFuZ2xlKiB1cGRhdGUpLCBj
b25zdCB2b2lkKiByZW5kZXJfZGF0YSk7Cit2b2lkIGV3a190aWxlX21hdHJpeF9lbnRyeV9uZXco
RXdrX1RpbGVfTWF0cml4KiB0bSwgZmxvYXQgem9vbSk7Cit2b2lkIGV3a190aWxlX21hdHJpeF9m
cmVlKEV3a19UaWxlX01hdHJpeCogdG0pOwogCi12b2lkIGV3a190aWxlX21hdHJpeF9yZXNpemUo
RXdrX1RpbGVfTWF0cml4ICp0bSwgdW5zaWduZWQgbG9uZyBjb2xzLCB1bnNpZ25lZCBsb25nIHJv
d3MpOwotdm9pZCBld2tfdGlsZV9tYXRyaXhfc2l6ZV9nZXQoRXdrX1RpbGVfTWF0cml4ICp0bSwg
dW5zaWduZWQgbG9uZyAqY29scywgdW5zaWduZWQgbG9uZyAqcm93cyk7Ci1ib29sIGV3a190aWxl
X21hdHJpeF96b29tX2xldmVsX3NldChFd2tfVGlsZV9NYXRyaXggKnRtLCBmbG9hdCB6b29tKTsK
LXZvaWQgZXdrX3RpbGVfbWF0cml4X2ludmFsaWRhdGUoRXdrX1RpbGVfTWF0cml4ICp0bSk7Cit2
b2lkIGV3a190aWxlX21hdHJpeF9yZXNpemUoRXdrX1RpbGVfTWF0cml4KiB0bSwgdW5zaWduZWQg
bG9uZyBjb2xzLCB1bnNpZ25lZCBsb25nIHJvd3MpOwordm9pZCBld2tfdGlsZV9tYXRyaXhfc2l6
ZV9nZXQoRXdrX1RpbGVfTWF0cml4KiB0bSwgdW5zaWduZWQgbG9uZyogY29scywgdW5zaWduZWQg
bG9uZyogcm93cyk7Citib29sIGV3a190aWxlX21hdHJpeF96b29tX2xldmVsX3NldChFd2tfVGls
ZV9NYXRyaXgqIHRtLCBmbG9hdCB6b29tKTsKK3ZvaWQgZXdrX3RpbGVfbWF0cml4X2ludmFsaWRh
dGUoRXdrX1RpbGVfTWF0cml4KiB0bSk7CiAKLUV3a19UaWxlX1VudXNlZF9DYWNoZSAqZXdrX3Rp
bGVfbWF0cml4X3VudXNlZF9jYWNoZV9nZXQoY29uc3QgRXdrX1RpbGVfTWF0cml4ICp0bSk7CitF
d2tfVGlsZV9VbnVzZWRfQ2FjaGUqIGV3a190aWxlX21hdHJpeF91bnVzZWRfY2FjaGVfZ2V0KGNv
bnN0IEV3a19UaWxlX01hdHJpeCogdG0pOwogCi1Fd2tfVGlsZSAqZXdrX3RpbGVfbWF0cml4X3Rp
bGVfZXhhY3RfZ2V0KEV3a19UaWxlX01hdHJpeCAqdG0sIHVuc2lnbmVkIGxvbmcgY29sLCB1bnNp
Z25lZCBsb25nIHJvdywgZmxvYXQgem9vbSk7Ci1FaW5hX0Jvb2wgZXdrX3RpbGVfbWF0cml4X3Rp
bGVfZXhhY3RfZXhpc3RzKEV3a19UaWxlX01hdHJpeCAqdG0sIHVuc2lnbmVkIGxvbmcgY29sLCB1
bnNpZ25lZCBsb25nIHJvdywgZmxvYXQgem9vbSk7Ci1Fd2tfVGlsZSAqZXdrX3RpbGVfbWF0cml4
X3RpbGVfbmVhcmVzdF9nZXQoRXdrX1RpbGVfTWF0cml4ICp0bSwgdW5zaWduZWQgbG9uZyBjb2ws
IHVuc2lnbmVkIGxvbmcgcm93LCBmbG9hdCB6b29tKTsKLUV3a19UaWxlICpld2tfdGlsZV9tYXRy
aXhfdGlsZV9uZXcoRXdrX1RpbGVfTWF0cml4ICp0bSwgRXZhcyAqZXZhcywgdW5zaWduZWQgbG9u
ZyBjb2wsIHVuc2lnbmVkIGxvbmcgcm93LCBmbG9hdCB6b29tKTsKLUVpbmFfQm9vbCBld2tfdGls
ZV9tYXRyaXhfdGlsZV9wdXQoRXdrX1RpbGVfTWF0cml4ICp0bSwgRXdrX1RpbGUgKnQsIGRvdWJs
ZSBsYXN0X3VzZWQpOworRXdrX1RpbGUqIGV3a190aWxlX21hdHJpeF90aWxlX2V4YWN0X2dldChF
d2tfVGlsZV9NYXRyaXgqIHRtLCB1bnNpZ25lZCBsb25nIGNvbCwgdW5zaWduZWQgbG9uZyByb3cs
IGZsb2F0IHpvb20pOworYm9vbCBld2tfdGlsZV9tYXRyaXhfdGlsZV9leGFjdF9leGlzdHMoRXdr
X1RpbGVfTWF0cml4KiB0bSwgdW5zaWduZWQgbG9uZyBjb2wsIHVuc2lnbmVkIGxvbmcgcm93LCBm
bG9hdCB6b29tKTsKK0V3a19UaWxlKiBld2tfdGlsZV9tYXRyaXhfdGlsZV9uZWFyZXN0X2dldChF
d2tfVGlsZV9NYXRyaXgqIHRtLCB1bnNpZ25lZCBsb25nIGNvbCwgdW5zaWduZWQgbG9uZyByb3cs
IGZsb2F0IHpvb20pOworRXdrX1RpbGUqIGV3a190aWxlX21hdHJpeF90aWxlX25ldyhFd2tfVGls
ZV9NYXRyaXgqIHRtLCBFdmFzKiBldmFzLCB1bnNpZ25lZCBsb25nIGNvbCwgdW5zaWduZWQgbG9u
ZyByb3csIGZsb2F0IHpvb20pOworYm9vbCBld2tfdGlsZV9tYXRyaXhfdGlsZV9wdXQoRXdrX1Rp
bGVfTWF0cml4KiB0bSwgRXdrX1RpbGUqIHQsIGRvdWJsZSBsYXN0X3VzZWQpOwogCi12b2lkIGV3
a190aWxlX21hdHJpeF90aWxlX3VwZGF0ZXNfY2xlYXIoRXdrX1RpbGVfTWF0cml4ICp0bSwgRXdr
X1RpbGUgKnQpOwordm9pZCBld2tfdGlsZV9tYXRyaXhfdGlsZV91cGRhdGVzX2NsZWFyKEV3a19U
aWxlX01hdHJpeCogdG0sIEV3a19UaWxlKiB0KTsKIAotRWluYV9Cb29sIGV3a190aWxlX21hdHJp
eF91cGRhdGUoRXdrX1RpbGVfTWF0cml4ICp0bSwgY29uc3QgRWluYV9SZWN0YW5nbGUgKnVwZGF0
ZSwgZmxvYXQgem9vbSk7Ci12b2lkIGV3a190aWxlX21hdHJpeF91cGRhdGVzX3Byb2Nlc3MoRXdr
X1RpbGVfTWF0cml4ICp0bSk7Ci12b2lkIGV3a190aWxlX21hdHJpeF91cGRhdGVzX2NsZWFyKEV3
a19UaWxlX01hdHJpeCAqdG0pOwotdm9pZCBld2tfdGlsZV9tYXRyaXhfZnJlZXplKEV3a19UaWxl
X01hdHJpeCAqdG0pOwotdm9pZCBld2tfdGlsZV9tYXRyaXhfdGhhdyhFd2tfVGlsZV9NYXRyaXgg
KnRtKTsKK2Jvb2wgZXdrX3RpbGVfbWF0cml4X3VwZGF0ZShFd2tfVGlsZV9NYXRyaXgqIHRtLCBj
b25zdCBFaW5hX1JlY3RhbmdsZSogdXBkYXRlLCBmbG9hdCB6b29tKTsKK3ZvaWQgZXdrX3RpbGVf
bWF0cml4X3VwZGF0ZXNfcHJvY2VzcyhFd2tfVGlsZV9NYXRyaXgqIHRtKTsKK3ZvaWQgZXdrX3Rp
bGVfbWF0cml4X3VwZGF0ZXNfY2xlYXIoRXdrX1RpbGVfTWF0cml4KiB0bSk7Cit2b2lkIGV3a190
aWxlX21hdHJpeF9mcmVlemUoRXdrX1RpbGVfTWF0cml4KiB0bSk7Cit2b2lkIGV3a190aWxlX21h
dHJpeF90aGF3KEV3a19UaWxlX01hdHJpeCogdG0pOwogCiAvLyByZW1vdmUgbWUhCi12b2lkIGV3
a190aWxlX21hdHJpeF9kYmcoY29uc3QgRXdrX1RpbGVfTWF0cml4ICp0bSk7Ci12b2lkIGV3a190
aWxlX3VudXNlZF9jYWNoZV9kYmcoY29uc3QgRXdrX1RpbGVfVW51c2VkX0NhY2hlICp0dWMpOwor
dm9pZCBld2tfdGlsZV9tYXRyaXhfZGJnKGNvbnN0IEV3a19UaWxlX01hdHJpeCogdG0pOwordm9p
ZCBld2tfdGlsZV91bnVzZWRfY2FjaGVfZGJnKGNvbnN0IEV3a19UaWxlX1VudXNlZF9DYWNoZSog
dHVjKTsKIHZvaWQgZXdrX3RpbGVfYWNjb3VudGluZ19kYmcoKTsKIAogI2VuZGlmIC8vIGV3a190
aWxlZF9tYXRyaXhfcHJpdmF0ZV9oCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>