<?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>28150</bug_id>
          
          <creation_ts>2009-08-10 09:32:49 -0700</creation_ts>
          <short_desc>WINCE PORT: Image Encoders</short_desc>
          <delta_ts>2012-04-17 08:50:45 -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>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>Other</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>27511</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Yong Li">yong.li.webkit</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>joenotcharles</cc>
    
    <cc>manyoso</cc>
    
    <cc>pkasting</cc>
    
    <cc>staikos</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>138693</commentid>
    <comment_count>0</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2009-08-10 09:32:49 -0700</bug_when>
    <thetext>this bug is created to split out the patch of Image Encoders from bug 27511</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138702</commentid>
    <comment_count>1</comment_count>
      <attachid>34480</attachid>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2009-08-10 09:46:37 -0700</bug_when>
    <thetext>Created attachment 34480
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144087</commentid>
    <comment_count>2</comment_count>
      <attachid>34480</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-09-01 18:22:57 -0700</bug_when>
    <thetext>Comment on attachment 34480
the patch

+ // Zero base class memory
+ memset(this, 0, sizeof(jpeg_destination_mgr));

C++ semantics don&apos;t guarantee that this is safe!  You don&apos;t know what the internal layout of your class is going to be.  Yikes!  (This error is repeated multiple times.)

+ Vector&lt;char&gt; m_buffer

Member variables should be private.

+ dest-&gt;next_output_byte  = reinterpret_cast&lt;JOCTET*&gt;(dest-&gt;m_buffer.data());

This line and the following line are not proper WebKit style.  Note: this style error is made repeatedly throughout the file.

+ struct jpeg_compress_struct compressData= { 0 };

This line has improper style.

+ #if IMAGE_NO_ALPHA_USE_RGB555

Magic constants following this line should be removed.

+ // This section of the code is based on nsPNGEncoder.cpp in Mozilla

I suspect we&apos;re missing the Mozilla license block then.

Also, your ChangeLog leads me to believe this patch contains a bunch of copy-and-paste code duplication.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144094</commentid>
    <comment_count>3</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2009-09-01 18:38:17 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 34480 [details])
&gt; 
&gt; + dest-&gt;next_output_byte  = reinterpret_cast&lt;JOCTET*&gt;(dest-&gt;m_buffer.data());
&gt; 
&gt; This line and the following line are not proper WebKit style.  Note: this style
&gt; error is made repeatedly throughout the file.

many of the variable names and struct names are from libjpeg.

&gt; Magic constants following this line should be removed.
&gt; 
&gt; + // This section of the code is based on nsPNGEncoder.cpp in Mozilla
&gt; 
&gt; I suspect we&apos;re missing the Mozilla license block then.
&gt; 
&gt; Also, your ChangeLog leads me to believe this patch contains a bunch of
&gt; copy-and-paste code duplication.

yes PNGEncoder is mostly copied from image-encoders\skia. In the later image code refractoring, the code should be extracted out for share.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34480</attachid>
            <date>2009-08-10 09:46:37 -0700</date>
            <delta_ts>2010-06-10 18:56:45 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>28150.patch</filename>
            <type>text/plain</type>
            <size>16741</size>
            <attacher name="Yong Li">yong.li.webkit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
M2FmYzgyNS4uOTAyZWE4NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAwOS0wOC0wOCAgWW9uZyBMaSAgPHlv
bmcubGlAdG9yY2htb2JpbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFdJTkNFIFBPUlQ6IGltYWdlIGVuY29kZXJzLiAoUE5HRW5jb2RlciBp
cyBvcmlnaW5hbGx5IHRha2VuIGZyb20gc2tpYSBwb3J0LAorICAgICAgICBKUEVHRW5jb2RlciBp
cyB3cml0dGVuIGZyb20gc2NyYXRjaC4gSW4gdGhlIGZ1dHVyZSwgV2Ugc2hvdWxkIGV4dHJhY3Qg
CisgICAgICAgIHBsYXRmb3JtLWluZGVwZW5kZW50IHBhcnRzIG9mIHRoZSAyIGVuY29kZXJzIGFu
ZCBsZXQgZGlmZmVyZW50IHBsYXRmb3JtcyBzaGFyZSAKKyAgICAgICAgdGhlbS4pCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODE1MAorCisgICAgICAg
ICogcGxhdGZvcm0vaW1hZ2UtZW5jb2RlcnMvd2luY2UvSlBFR0VuY29kZXIuY3BwOiBBZGRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1lbmNvZGVycy93aW5jZS9KUEVHRW5jb2Rlci5oOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1lbmNvZGVycy93aW5jZS9QTkdFbmNvZGVy
LmNwcDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZW5jb2RlcnMvd2luY2UvUE5H
RW5jb2Rlci5oOiBBZGRlZC4KKwogMjAwOS0wOC0wNiAgWW9uZyBMaSAgPHlvbmcubGlAdG9yY2ht
b2JpbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1lbmNvZGVycy93aW5jZS9KUEVHRW5jb2Rlci5j
cHAgYi9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWVuY29kZXJzL3dpbmNlL0pQRUdFbmNvZGVyLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzllODM1Ci0tLSAvZGV2L251
bGwKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1lbmNvZGVycy93aW5jZS9KUEVHRW5jb2Rl
ci5jcHAKQEAgLTAsMCArMSwxNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2gg
TW9iaWxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwor
ICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqICB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAorICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkpQRUdFbmNvZGVyLmgiCisKKyNpbmNsdWRlICJTaGFyZWRC
aXRtYXAuaCIKKworLy8gam1vcmVjZmcuaCBpbiBsaWJqcGVnIGNoZWNrcyBmb3IgWE1EX0ggd2l0
aCB0aGUgY29tbWVudDogIlgxMS94bWQuaCBjb3JyZWN0bHkgZGVmaW5lcyBJTlQzMiIKKy8vIGZp
eCBJTlQzMiByZWRlZmluaXRpb24gZXJyb3IgYnkgcHJldGVuZGluZyB3ZSBhcmUgWDExL3htZC5o
CisjZGVmaW5lIFhNRF9ICisjZGVmaW5lIFZUS19KUEVHX1hNRF9ICisKKy8vIEF2b2lkIHdhcm5p
bmc6ICdGQVInIG1hY3JvIHJlZGVmaW5pdGlvbgorI3VuZGVmIEZBUgorCitleHRlcm4gIkMiIHsK
KyNpbmNsdWRlICJqcGVnbGliLmgiCit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
SlBFR0Rlc3RpbmF0aW9uTWFuYWdlciA6IHB1YmxpYyBqcGVnX2Rlc3RpbmF0aW9uX21ncgorewor
cHVibGljOgorICAgIGV4cGxpY2l0IEpQRUdEZXN0aW5hdGlvbk1hbmFnZXIoVmVjdG9yPGNoYXI+
JiB0b0R1bXApCisgICAgICAgIDogbV9kdW1wKHRvRHVtcCkKKyAgICB7CisgICAgICAgIC8vIFpl
cm8gYmFzZSBjbGFzcyBtZW1vcnkKKyAgICAgICAgbWVtc2V0KHRoaXMsIDAsIHNpemVvZihqcGVn
X2Rlc3RpbmF0aW9uX21ncikpOworICAgIH0KKyAgICBWZWN0b3I8Y2hhcj4gbV9idWZmZXI7Cisg
ICAgVmVjdG9yPGNoYXI+JiBtX2R1bXA7Cit9OworCitjbGFzcyBKUEVHQ29tcHJlc3NFcnJvck1n
ciA6IHB1YmxpYyBqcGVnX2Vycm9yX21ncgoreworcHVibGljOgorICAgIEpQRUdDb21wcmVzc0Vy
cm9yTWdyKCkKKyAgICB7CisgICAgICAgIC8vIFplcm8gbWVtb3J5CisgICAgICAgIG1lbXNldCh0
aGlzLCAwLCBzaXplb2YoSlBFR0NvbXByZXNzRXJyb3JNZ3IpKTsKKyAgICB9CisKKyAgICBqbXBf
YnVmIG1fc2V0am1wQnVmZmVyOworfTsKKwordm9pZCBqcGVnSW5pdGlhbGl6ZURlc3RpbmF0aW9u
KGpfY29tcHJlc3NfcHRyIGNvbXByZXNzRGF0YSkKK3sKKyAgICBKUEVHRGVzdGluYXRpb25NYW5h
Z2VyKiBkZXN0ID0gKEpQRUdEZXN0aW5hdGlvbk1hbmFnZXIqKWNvbXByZXNzRGF0YS0+ZGVzdDsK
KyAgICBkZXN0LT5tX2J1ZmZlci5yZXNpemUoNDA5Nik7CisgICAgZGVzdC0+bmV4dF9vdXRwdXRf
Ynl0ZSAgPSByZWludGVycHJldF9jYXN0PEpPQ1RFVCo+KGRlc3QtPm1fYnVmZmVyLmRhdGEoKSk7
CisgICAgZGVzdC0+ZnJlZV9pbl9idWZmZXIgICAgPSBkZXN0LT5tX2J1ZmZlci5zaXplKCk7Cit9
CisKK2Jvb2xlYW4ganBlZ0VtcHR5T3V0cHV0QnVmZmVyKGpfY29tcHJlc3NfcHRyIGNvbXByZXNz
RGF0YSkKK3sKKyAgICBKUEVHRGVzdGluYXRpb25NYW5hZ2VyKiBkZXN0ID0gc3RhdGljX2Nhc3Q8
SlBFR0Rlc3RpbmF0aW9uTWFuYWdlcio+KGNvbXByZXNzRGF0YS0+ZGVzdCk7CisgICAgZGVzdC0+
bV9kdW1wLmFwcGVuZChkZXN0LT5tX2J1ZmZlci5kYXRhKCksIGRlc3QtPm1fYnVmZmVyLnNpemUo
KSAtIGRlc3QtPmZyZWVfaW5fYnVmZmVyKTsKKyAgICBkZXN0LT5uZXh0X291dHB1dF9ieXRlICA9
IHJlaW50ZXJwcmV0X2Nhc3Q8Sk9DVEVUKj4oZGVzdC0+bV9idWZmZXIuZGF0YSgpKTsKKyAgICBk
ZXN0LT5mcmVlX2luX2J1ZmZlciAgICA9IGRlc3QtPm1fYnVmZmVyLnNpemUoKTsKKyAgICByZXR1
cm4gVFJVRTsKK30KKwordm9pZCBqcGVnVGVybWluYXRlRGVzdGluYXRpb24oal9jb21wcmVzc19w
dHIgY29tcHJlc3NEYXRhKQoreworICAgIEpQRUdEZXN0aW5hdGlvbk1hbmFnZXIqIGRlc3QgPSBz
dGF0aWNfY2FzdDxKUEVHRGVzdGluYXRpb25NYW5hZ2VyKj4oY29tcHJlc3NEYXRhLT5kZXN0KTsK
KyAgICBkZXN0LT5tX2R1bXAuYXBwZW5kKGRlc3QtPm1fYnVmZmVyLmRhdGEoKSwgZGVzdC0+bV9i
dWZmZXIuc2l6ZSgpIC0gZGVzdC0+ZnJlZV9pbl9idWZmZXIpOworfQorCit2b2lkIGpwZWdFcnJv
ckV4aXQoal9jb21tb25fcHRyIGNvbXByZXNzRGF0YSkKK3sKKyAgICBKUEVHQ29tcHJlc3NFcnJv
ck1nciAqZXJyID0gc3RhdGljX2Nhc3Q8SlBFR0NvbXByZXNzRXJyb3JNZ3IqPihjb21wcmVzc0Rh
dGEtPmVycik7CisgICAgbG9uZ2ptcChlcnItPm1fc2V0am1wQnVmZmVyLCAtMSk7Cit9CisKK2Jv
b2wgY29tcHJlc3NCaXRtYXBUb0pwZWcoU2hhcmVkQml0bWFwKiBibXAsIFZlY3RvcjxjaGFyPiYg
anBlZ0RhdGEpCit7CisgICAgc3RydWN0IGpwZWdfY29tcHJlc3Nfc3RydWN0IGNvbXByZXNzRGF0
YT0geyAwIH07CisgICAgSlBFR0NvbXByZXNzRXJyb3JNZ3IgZXJyOworICAgIGNvbXByZXNzRGF0
YS5lcnIgPSBqcGVnX3N0ZF9lcnJvcigmZXJyKTsKKyAgICBlcnIuZXJyb3JfZXhpdCA9IGpwZWdF
cnJvckV4aXQ7CisKKyAgICBqcGVnX2NyZWF0ZV9jb21wcmVzcygmY29tcHJlc3NEYXRhKTsKKwor
ICAgIEpQRUdEZXN0aW5hdGlvbk1hbmFnZXIgZGVzdChqcGVnRGF0YSk7CisgICAgY29tcHJlc3NE
YXRhLmRlc3QgPSAmZGVzdDsKKyAgICBkZXN0LmluaXRfZGVzdGluYXRpb24gPSBqcGVnSW5pdGlh
bGl6ZURlc3RpbmF0aW9uOworICAgIGRlc3QuZW1wdHlfb3V0cHV0X2J1ZmZlciA9IGpwZWdFbXB0
eU91dHB1dEJ1ZmZlcjsKKyAgICBkZXN0LnRlcm1fZGVzdGluYXRpb24gPSBqcGVnVGVybWluYXRl
RGVzdGluYXRpb247CisKKyAgICBjb21wcmVzc0RhdGEuaW1hZ2Vfd2lkdGggPSBibXAtPndpZHRo
KCk7CisgICAgY29tcHJlc3NEYXRhLmltYWdlX2hlaWdodCA9IGJtcC0+aGVpZ2h0KCk7CisgICAg
Y29tcHJlc3NEYXRhLmlucHV0X2NvbXBvbmVudHMgPSAzOworICAgIGNvbXByZXNzRGF0YS5pbl9j
b2xvcl9zcGFjZSA9IEpDU19SR0I7CisgICAganBlZ19zZXRfZGVmYXVsdHMoJmNvbXByZXNzRGF0
YSk7CisgICAganBlZ19zZXRfcXVhbGl0eSgmY29tcHJlc3NEYXRhLCA2NSwgRkFMU0UpOworCisg
ICAgLy8gcm93QnVmZmVyIG11c3QgYmUgZGVmaW5lZCBoZXJlIHNvIHRoYXQgaXRzIGRlc3RydWN0
b3IgaXMgYWx3YXlzIGNhbGxlZCBldmVuIHdoZW4gInNldGptcCIgY2F0Y2hlcyBhbiBlcnJvci4K
KyAgICBWZWN0b3I8SlNBTVBMRSwgNjAwICogMz4gcm93QnVmZmVyOworCisgICAgaWYgKHNldGpt
cChlcnIubV9zZXRqbXBCdWZmZXIpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBqcGVn
X3N0YXJ0X2NvbXByZXNzKCZjb21wcmVzc0RhdGEsIFRSVUUpOworICAgIHJvd0J1ZmZlci5yZXNp
emUoY29tcHJlc3NEYXRhLmltYWdlX3dpZHRoICogMyk7CisKKyAgICBpZiAoYm1wLT5pczE2Yml0
KCkpIHsKKyAgICAgICAgaW50IHBhZGRlZFdpZHRoID0gYm1wLT5iaXRtYXBJbmZvKCkucGFkZGVk
V2lkdGgoKTsKKyAgICAgICAgaW50IHBhZGRpbmcgPSBwYWRkZWRXaWR0aCAtIGNvbXByZXNzRGF0
YS5pbWFnZV93aWR0aDsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQqIHBpeGVsID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgc2hvcnQqPihibXAtPmJ5dGVzKCkpOworICAgICAgICBj
b25zdCB1bnNpZ25lZCBzaG9ydCogcGl4ZWxFbmQgPSBwaXhlbCArIHBhZGRlZFdpZHRoICogY29t
cHJlc3NEYXRhLmltYWdlX2hlaWdodDsKKyAgICAgICAgZm9yICg7IHBpeGVsIDwgcGl4ZWxFbmQ7
IHBpeGVsICs9IHBhZGRpbmcpIHsKKyAgICAgICAgICAgIEpTQU1QTEUqIGRzdCA9IHJvd0J1ZmZl
ci5kYXRhKCk7CisgICAgICAgICAgICBmb3IgKGNvbnN0IHVuc2lnbmVkIHNob3J0KiByb3dFbmQg
PSBwaXhlbCArIGNvbXByZXNzRGF0YS5pbWFnZV93aWR0aDsgcGl4ZWwgPCByb3dFbmQ7ICsrcGl4
ZWwpIHsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCB2YWx1ZSA9ICpwaXhlbDsKKyNp
ZiBJTUFHRV9OT19BTFBIQV9VU0VfUkdCNTU1CisgICAgICAgICAgICAgICAgLy8gWFJSUlJSR0dH
R0dCQkJCQgorICAgICAgICAgICAgICAgICpkc3QrKyA9IHN0YXRpY19jYXN0PEpTQU1QTEU+KCh2
YWx1ZSA+PiA3KSAmIDB4RjgpOworICAgICAgICAgICAgICAgICpkc3QrKyA9IHN0YXRpY19jYXN0
PEpTQU1QTEU+KCh2YWx1ZSA+PiAyKSAmIDB4RjgpOworICAgICAgICAgICAgICAgICpkc3QrKyA9
IHN0YXRpY19jYXN0PEpTQU1QTEU+KCh2YWx1ZSA8PCAzKSAmIDB4RjgpOworI2Vsc2UKKyAgICAg
ICAgICAgICAgICAvLyBSR0I1NjUKKyAgICAgICAgICAgICAgICAvLyBSUlJSUkdHR0dHR0JCQkJC
CisgICAgICAgICAgICAgICAgKmRzdCsrID0gc3RhdGljX2Nhc3Q8SlNBTVBMRT4oKHZhbHVlID4+
IDgpICYgMHhGOCk7CisgICAgICAgICAgICAgICAgKmRzdCsrID0gc3RhdGljX2Nhc3Q8SlNBTVBM
RT4oKHZhbHVlID4+IDMpICYgMHhGQyk7CisgICAgICAgICAgICAgICAgKmRzdCsrID0gc3RhdGlj
X2Nhc3Q8SlNBTVBMRT4oKHZhbHVlIDw8IDMpICYgMHhGOCk7CisjZW5kaWYKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGRzdCA9IHJvd0J1ZmZlci5kYXRhKCk7CisgICAgICAgICAgICBqcGVn
X3dyaXRlX3NjYW5saW5lcygmY29tcHJlc3NEYXRhLCAmZHN0LCAxKTsKKyAgICAgICAgfQorICAg
IH0gZWxzZSB7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkKiBwaXhlbCA9IHN0YXRpY19jYXN0PGNv
bnN0IHVuc2lnbmVkKj4oYm1wLT5ieXRlcygpKTsKKyAgICAgICAgY29uc3QgdW5zaWduZWQqIHBp
eGVsRW5kID0gcGl4ZWwgKyBjb21wcmVzc0RhdGEuaW1hZ2Vfd2lkdGggKiBjb21wcmVzc0RhdGEu
aW1hZ2VfaGVpZ2h0OworICAgICAgICB3aGlsZSAocGl4ZWwgPCBwaXhlbEVuZCkgeworICAgICAg
ICAgICAgSlNBTVBMRSogZHN0ID0gcm93QnVmZmVyLmRhdGEoKTsKKyAgICAgICAgICAgIGZvciAo
Y29uc3QgdW5zaWduZWQqIHJvd0VuZCA9IHBpeGVsICsgY29tcHJlc3NEYXRhLmltYWdlX3dpZHRo
OyBwaXhlbCA8IHJvd0VuZDsgKytwaXhlbCkgeworICAgICAgICAgICAgICAgIHVuc2lnbmVkIHZh
bHVlID0gKnBpeGVsOworICAgICAgICAgICAgICAgICpkc3QrKyA9IHN0YXRpY19jYXN0PEpTQU1Q
TEU+KCh2YWx1ZSA+PiAxNikgJiAweEZGKTsKKyAgICAgICAgICAgICAgICAqZHN0KysgPSBzdGF0
aWNfY2FzdDxKU0FNUExFPigodmFsdWUgPj4gOCkgJiAweEZGKTsKKyAgICAgICAgICAgICAgICAq
ZHN0KysgPSBzdGF0aWNfY2FzdDxKU0FNUExFPigodmFsdWUpICYgMHhGRik7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBkc3QgPSByb3dCdWZmZXIuZGF0YSgpOworICAgICAgICAgICAganBl
Z193cml0ZV9zY2FubGluZXMoJmNvbXByZXNzRGF0YSwgJmRzdCwgMSk7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBqcGVnX2ZpbmlzaF9jb21wcmVzcygmY29tcHJlc3NEYXRhKTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1lbmNv
ZGVycy93aW5jZS9KUEVHRW5jb2Rlci5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1lbmNvZGVy
cy93aW5jZS9KUEVHRW5jb2Rlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjcyODdjN2UKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWVuY29k
ZXJzL3dpbmNlL0pQRUdFbmNvZGVyLmgKQEAgLTAsMCArMSwyOCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwOSBUb3JjaCBNb2JpbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq
ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisg
Ki8KKworCisjaWZuZGVmIEpQRUdfRU5DT0RFUl9ICisjZGVmaW5lIEpQRUdfRU5DT0RFUl9ICisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICBib29sIGNvbXByZXNzQml0bWFwVG9KcGVnKFNoYXJl
ZEJpdG1hcCogYm1wLCBWZWN0b3I8Y2hhcj4mIGpwZWdEYXRhKTsKK30KKworI2VuZGlmIC8vIEpQ
RUdfRU5DT0RFUl9ICmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWVuY29kZXJz
L3dpbmNlL1BOR0VuY29kZXIuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1lbmNvZGVycy93
aW5jZS9QTkdFbmNvZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4w
YmEzY2Q0Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1lbmNvZGVy
cy93aW5jZS9QTkdFbmNvZGVyLmNwcApAQCAtMCwwICsxLDE3MyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoYykgMjAwNi0yMDA5LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChjKSAyMDA5IFRvcmNoIE1vYmlsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqIAorICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAq
IGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICogCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQTkdFbmNvZGVyLmgiCisKK2V4dGVybiAiQyIg
eworI2luY2x1ZGUgInBuZy5oIgorfQorCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKKy8vIEVuY29kZXIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBUaGlzIHNl
Y3Rpb24gb2YgdGhlIGNvZGUgaXMgYmFzZWQgb24gbnNQTkdFbmNvZGVyLmNwcCBpbiBNb3ppbGxh
CisvLyAoQ29weXJpZ2h0IDIwMDUgR29vZ2xlIEluYy4pCisKKy8vIFBhc3NlZCBhcm91bmQgYXMg
dGhlIGlvX3B0ciBpbiB0aGUgcG5nIHN0cnVjdHMgc28gb3VyIGNhbGxiYWNrcyBrbm93IHdoZXJl
CisvLyB0byB3cml0ZSBkYXRhLgorc3RydWN0IFBOR0VuY29kZXJTdGF0ZQoreworICAgIFBOR0Vu
Y29kZXJTdGF0ZShWZWN0b3I8Y2hhcj4qIG8pIDogbV9vdXQobykge30KKyAgICBWZWN0b3I8Y2hh
cj4qIG1fb3V0OworfTsKKworLy8gQ2FsbGVkIGJ5IGxpYnBuZyB0byBmbHVzaCBpdHMgaW50ZXJu
YWwgYnVmZmVyIHRvIG91cnMuCit2b2lkIGVuY29kZXJXcml0ZUNhbGxiYWNrKHBuZ19zdHJ1Y3Rw
IHBuZywgcG5nX2J5dGVwIGRhdGEsIHBuZ19zaXplX3Qgc2l6ZSkKK3sKKyAgICBQTkdFbmNvZGVy
U3RhdGUqIHN0YXRlID0gc3RhdGljX2Nhc3Q8UE5HRW5jb2RlclN0YXRlKj4ocG5nX2dldF9pb19w
dHIocG5nKSk7CisgICAgQVNTRVJUKHN0YXRlLT5tX291dCk7CisKKyAgICBzaXplX3Qgb2xkU2l6
ZSA9IHN0YXRlLT5tX291dC0+c2l6ZSgpOworICAgIHN0YXRlLT5tX291dC0+cmVzaXplKG9sZFNp
emUgKyBzaXplKTsKKyAgICBtZW1jcHkoJigqc3RhdGUtPm1fb3V0KVtvbGRTaXplXSwgZGF0YSwg
c2l6ZSk7Cit9CisKKy8vIEF1dG9tYXRpY2FsbHkgZGVzdHJveXMgdGhlIGdpdmVuIHdyaXRlIHN0
cnVjdHMgb24gZGVzdHJ1Y3Rpb24gdG8gbWFrZQorLy8gY2xlYW51cCBhbmQgZXJyb3IgaGFuZGxp
bmcgY29kZSBjbGVhbmVyLgorY2xhc3MgUE5HV3JpdGVTdHJ1Y3REZXN0cm95ZXIgeworcHVibGlj
OgorICAgIFBOR1dyaXRlU3RydWN0RGVzdHJveWVyKHBuZ19zdHJ1Y3QqKiBwcywgcG5nX2luZm8q
KiBwaSkKKyAgICAgICAgOiBtX3BuZ1N0cnVjdChwcykKKyAgICAgICAgLCBtX3BuZ0luZm8ocGkp
CisgICAgeworICAgIH0KKworICAgIH5QTkdXcml0ZVN0cnVjdERlc3Ryb3llcigpCisgICAgewor
ICAgICAgICBwbmdfZGVzdHJveV93cml0ZV9zdHJ1Y3QobV9wbmdTdHJ1Y3QsIG1fcG5nSW5mbyk7
CisgICAgfQorCitwcml2YXRlOgorICAgIHBuZ19zdHJ1Y3QqKiBtX3BuZ1N0cnVjdDsKKyAgICBw
bmdfaW5mbyoqIG1fcG5nSW5mbzsKK307CisKK2Jvb2wgY29tcHJlc3NCaXRtYXBUb1BuZyhTaGFy
ZWRCaXRtYXAqIGJtcCwgVmVjdG9yPGNoYXI+JiBwbmdEYXRhKQoreworICAgIGlmICghYm1wLT5i
eXRlcygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBwbmdfc3RydWN0KiBwbmdQdHIg
PSBwbmdfY3JlYXRlX3dyaXRlX3N0cnVjdChQTkdfTElCUE5HX1ZFUl9TVFJJTkcsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG5nX3ZvaWRwX05VTEws
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG5nX2Vy
cm9yX3B0cl9OVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHBuZ19lcnJvcl9wdHJfTlVMTCk7CisgICAgaWYgKCFwbmdQdHIpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIHBuZ19pbmZvKiBpbmZvUHRyID0gcG5nX2NyZWF0ZV9pbmZvX3N0
cnVjdChwbmdQdHIpOworICAgIGlmICghaW5mb1B0cikgeworICAgICAgICBwbmdfZGVzdHJveV93
cml0ZV9zdHJ1Y3QoJnBuZ1B0ciwgMCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cisg
ICAgUE5HV3JpdGVTdHJ1Y3REZXN0cm95ZXIgZGVzdHJveWVyKCZwbmdQdHIsICZpbmZvUHRyKTsK
KworICAgIGludCBieXRlRGVwdGggPSBibXAtPmlzMTZiaXQoKSA/IDMgOiA0OworCisgICAgLy8g
cm93QnVmZmVyIG11c3QgYmUgZGVjbGFyZSBiZWZvcmUgInNldGptcCIgc28gdGhhdCB0aGUgZGVz
dHJ1Y3RvciBpcyBhbHdheXMgY2FsbGVkLgorICAgIFZlY3Rvcjx1bnNpZ25lZCBjaGFyLCAyMDQ4
PiByb3dCdWZmZXI7CisgICAgcm93QnVmZmVyLnJlc2l6ZShibXAtPndpZHRoKCkgKiBieXRlRGVw
dGgpOworCisgICAgLy8gVGhlIGRlc3Ryb3llciB3aWxsIGVuc3VyZSB0aGF0IHRoZSBzdHJ1Y3R1
cmVzIGFyZSBjbGVhbmVkIHVwIGluIHRoaXMKKyAgICAvLyBjYXNlLCBldmVuIHRob3VnaCB3ZSBt
YXkgZ2V0IGhlcmUgYXMgYSBqdW1wIGZyb20gcmFuZG9tIHBhcnRzIG9mIHRoZQorICAgIC8vIFBO
RyBsaWJyYXJ5IGNhbGxlZCBiZWxvdy4KKyAgICBpZiAoc2V0am1wKHBuZ19qbXBidWYocG5nUHRy
KSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIFNldCBvdXIgY2FsbGJhY2sgZm9y
IGxpYnBuZyB0byBnaXZlIHVzIHRoZSBkYXRhLgorICAgIFBOR0VuY29kZXJTdGF0ZSBzdGF0ZSgm
cG5nRGF0YSk7CisgICAgcG5nX3NldF93cml0ZV9mbihwbmdQdHIsICZzdGF0ZSwgZW5jb2Rlcldy
aXRlQ2FsbGJhY2ssIDApOworCisgICAgaW50IHBuZ091dHB1dENvbG9yVHlwZSA9IGJtcC0+aXMx
NmJpdCgpID8gUE5HX0NPTE9SX1RZUEVfUkdCIDogUE5HX0NPTE9SX1RZUEVfUkdCX0FMUEhBOwor
CisgICAgcG5nX3NldF9JSERSKHBuZ1B0ciwgaW5mb1B0ciwgYm1wLT53aWR0aCgpLCBibXAtPmhl
aWdodCgpLCA4LCBwbmdPdXRwdXRDb2xvclR5cGUsCisgICAgICAgICAgICAgICAgIFBOR19JTlRF
UkxBQ0VfTk9ORSwgUE5HX0NPTVBSRVNTSU9OX1RZUEVfREVGQVVMVCwKKyAgICAgICAgICAgICAg
ICAgUE5HX0ZJTFRFUl9UWVBFX0RFRkFVTFQpOworICAgIHBuZ193cml0ZV9pbmZvKHBuZ1B0ciwg
aW5mb1B0cik7CisKKyAgICBpZiAoYm1wLT5pczE2Yml0KCkpIHsKKyAgICAgICAgdW5zaWduZWQg
c2hvcnQqIHNyYyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgc2hvcnQqPihibXAtPmJ5dGVz
KCkpOworICAgICAgICBmb3IgKHVuc2lnbmVkIHkgPSAwOyB5IDwgYm1wLT5oZWlnaHQoKTsgKyt5
KSB7CisgICAgICAgICAgICB1bnNpZ25lZCBjaGFyKiBkc3QgPSByb3dCdWZmZXIuZGF0YSgpOwor
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCB4ID0gMDsgeCA8IGJtcC0+d2lkdGgoKTsgKyt4KSB7
CisgICAgICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgdmFsdWUgPSAqc3JjKys7CisjaWYgSU1B
R0VfTk9fQUxQSEFfVVNFX1JHQjU1NQorICAgICAgICAgICAgICAgIC8vIFhSUlJSUkdHR0dHQkJC
QkIKKyAgICAgICAgICAgICAgICAqZHN0KysgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigo
dmFsdWUgPj4gNykgJiAweEY4KTsKKyAgICAgICAgICAgICAgICAqZHN0KysgPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBjaGFyPigodmFsdWUgPj4gMikgJiAweEY4KTsKKyAgICAgICAgICAgICAgICAq
ZHN0KysgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigodmFsdWUgPDwgMykgJiAweEY4KTsK
KyNlbHNlCisgICAgICAgICAgICAgICAgLy8gUkdCNTY1CisgICAgICAgICAgICAgICAgLy8gUlJS
UlJHR0dHR0dCQkJCQgorICAgICAgICAgICAgICAgICpkc3QrKyA9IHN0YXRpY19jYXN0PHVuc2ln
bmVkIGNoYXI+KCh2YWx1ZSA+PiA4KSAmIDB4RjgpOworICAgICAgICAgICAgICAgICpkc3QrKyA9
IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KCh2YWx1ZSA+PiAzKSAmIDB4RkMpOworICAgICAg
ICAgICAgICAgICpkc3QrKyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KCh2YWx1ZSA8PCAz
KSAmIDB4RjgpOworI2VuZGlmCisgICAgICAgICAgICB9CisgICAgICAgICAgICBwbmdfd3JpdGVf
cm93KHBuZ1B0ciwgcm93QnVmZmVyLmRhdGEoKSk7CisgICAgICAgIH0KKyAgICB9IGVsc2Ugewor
ICAgICAgICB1bnNpZ25lZCBjaGFyKiBzcmMgPSByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNo
YXIqPihibXAtPmJ5dGVzKCkpOworICAgICAgICBmb3IgKHVuc2lnbmVkIHkgPSAwOyB5IDwgYm1w
LT5oZWlnaHQoKTsgKyt5KSB7CisgICAgICAgICAgICB1bnNpZ25lZCBjaGFyKiBkc3QgPSByb3dC
dWZmZXIuZGF0YSgpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCB4ID0gMDsgeCA8IGJtcC0+
d2lkdGgoKTsgKyt4KSB7CisgICAgICAgICAgICAgICAgLy8gTm90ZTogUE5HIGlzIGluIGJpZyBl
bmRpYW4sIGFuZCBvdXIgMzJiaXQgYml0bWFwIGlzIFJHQkEKKyAgICAgICAgICAgICAgICB1bnNp
Z25lZCBjaGFyIGIgPSAqc3JjKys7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBnID0g
KnNyYysrOworICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgciA9ICpzcmMrKzsKKyAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGEgPSAqc3JjKys7CisgICAgICAgICAgICAgICAgKmRz
dCsrID0gcjsKKyAgICAgICAgICAgICAgICAqZHN0KysgPSBnOworICAgICAgICAgICAgICAgICpk
c3QrKyA9IGI7CisgICAgICAgICAgICAgICAgKmRzdCsrID0gYTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIHBuZ193cml0ZV9yb3cocG5nUHRyLCByb3dCdWZmZXIuZGF0YSgpKTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIHBuZ193cml0ZV9lbmQocG5nUHRyLCBpbmZvUHRyKTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZW5jb2RlcnMvd2luY2UvUE5HRW5jb2Rlci5oIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1lbmNvZGVycy93aW5jZS9QTkdFbmNvZGVyLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTMwNTY2ZQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZW5jb2RlcnMvd2luY2UvUE5HRW5jb2Rlci5oCkBAIC0wLDAgKzEs
MjkgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDA3LTIwMDkgVG9yY2ggTW9iaWxlLCBJbmMu
CisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAg
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorICovCisKKyNpZm5kZWYgUE5HX0VOQ09ERVJfSAorI2RlZmluZSBQTkdfRU5DT0RFUl9I
CisKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICBi
b29sIGNvbXByZXNzQml0bWFwVG9QbmcoU2hhcmVkQml0bWFwKiBibXAsIFZlY3RvcjxjaGFyPiYg
cG5nRGF0YSk7Cit9CisKKyNlbmRpZiAvLyBQTkdfRU5DT0RFUl9ICg==
</data>
<flag name="review"
          id="18637"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>