<?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>27030</bug_id>
          
          <creation_ts>2009-07-07 08:14:04 -0700</creation_ts>
          <short_desc>[WINCE] random number generator is too slow</short_desc>
          <delta_ts>2009-07-14 13:22:33 -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>Web Template Framework</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>Other</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>23154</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Joe Mason">joenotcharles</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>manyoso</cc>
    
    <cc>staikos</cc>
    
    <cc>yong.li.webkit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>130209</commentid>
    <comment_count>0</comment_count>
    <who name="Joe Mason">joenotcharles</who>
    <bug_when>2009-07-07 08:14:04 -0700</bug_when>
    <thetext>The default WinCE RNG is very slow, so we replaced it with Mersenne Twister, which performs well and is well-studied.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>130212</commentid>
    <comment_count>1</comment_count>
      <attachid>32379</attachid>
    <who name="Joe Mason">joenotcharles</who>
    <bug_when>2009-07-07 08:32:38 -0700</bug_when>
    <thetext>Created attachment 32379
patch adding mt19937ar.c for WinCE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>130227</commentid>
    <comment_count>2</comment_count>
      <attachid>32379</attachid>
    <who name="George Staikos">staikos</who>
    <bug_when>2009-07-07 09:20:40 -0700</bug_when>
    <thetext>Comment on attachment 32379
patch adding mt19937ar.c for WinCE

The initialization code should be brought inline with the current system where a function is called.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>130238</commentid>
    <comment_count>3</comment_count>
      <attachid>32386</attachid>
    <who name="Joe Mason">joenotcharles</who>
    <bug_when>2009-07-07 10:40:09 -0700</bug_when>
    <thetext>Created attachment 32386
updated patch

Done.  Also added an srand call so that the default RNG used to fill the initialization array for MT is itself initialized - I believe in the first patch it was always using the same seed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>130240</commentid>
    <comment_count>4</comment_count>
    <who name="Joe Mason">joenotcharles</who>
    <bug_when>2009-07-07 10:47:20 -0700</bug_when>
    <thetext>Correction: the first patch did call srand because we called initializeRandomNumberGenerator before filling in the array.  The second patch needs to call srand explicitly because we replaced part of initializeRandomNumberGenerator instead of calling it first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>130291</commentid>
    <comment_count>5</comment_count>
      <attachid>32386</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-07-07 15:54:04 -0700</bug_when>
    <thetext>Comment on attachment 32386
updated patch

The URL in the license http://www.math.keio.ac.jp/matumoto/emt.html is invalid.  Where can we go to validate that this code is properly licensed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>130301</commentid>
    <comment_count>6</comment_count>
    <who name="Joe Mason">joenotcharles</who>
    <bug_when>2009-07-07 16:25:37 -0700</bug_when>
    <thetext>Current site seems to be http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/MT2002/emt19937ar.html

The version of mt19937ar.c for download there is identical except that the url and contact email are different and it includes an extra test function:

http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html
email: m-mat @ math.sci.hiroshima-u.ac.jp (remove space)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>130384</commentid>
    <comment_count>7</comment_count>
    <who name="George Staikos">staikos</who>
    <bug_when>2009-07-08 00:07:16 -0700</bug_when>
    <thetext>License is BSD.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>131556</commentid>
    <comment_count>8</comment_count>
      <attachid>32386</attachid>
    <who name="Adam Treat">manyoso</who>
    <bug_when>2009-07-14 07:51:39 -0700</bug_when>
    <thetext>Comment on attachment 32386
updated patch

License from given urls is BSD.  The copy that goes in should have updated url and contact info.  Otherwise looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>131651</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Treat">manyoso</who>
    <bug_when>2009-07-14 13:22:33 -0700</bug_when>
    <thetext>Landed with r45865.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32379</attachid>
            <date>2009-07-07 08:32:38 -0700</date>
            <delta_ts>2009-07-07 10:40:09 -0700</delta_ts>
            <desc>patch adding mt19937ar.c for WinCE</desc>
            <filename>bug27030.patch</filename>
            <type>text/plain</type>
            <size>8848</size>
            <attacher name="Joe Mason">joenotcharles</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCA0MTMyMGVjLi45MjYwOWE1IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQg
QEAKKzIwMDktMDctMDYgIEdlb3JnZSBTdGFpa29zICA8Z2VvcmdlLnN0YWlrb3NAdG9yY2htb2Jp
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEF1dGhvcnM6IEdlb3JnZSBTdGFpa29zIDxnZW9yZ2Uuc3RhaWtvc0B0b3JjaG1vYmlsZS5jb20+
LCBKb2UgTWFzb24gPGpvZS5tYXNvbkB0b3JjaG1vYmlsZS5jb20+LCBNYWtvdG8gTWF0c3Vtb3Rv
IDxtYXR1bW90b0BtYXRoLmtlaW8uYWMuanA+LCBUYWt1amkgTmlzaGltdXJhCisgICAgICAgIAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjcwMzAKKyAg
ICAgICAgSW1wbGVtZW50IGN1c3RvbSBSTkcgZm9yIFdpbkNFIHVzaW5nIE1lcnNlbm5lIFR3aXN0
ZXIKKworICAgICAgICAqIHd0Zi9SYW5kb21OdW1iZXIuY3BwOgorICAgICAgICAoV1RGOjpyYW5k
b21OdW1iZXIpOgorICAgICAgICAqIHd0Zi93aW5jZS9tdDE5OTM3YXIuYzogQWRkZWQuCisgICAg
ICAgIChpbml0X2dlbnJhbmQpOgorICAgICAgICAoaW5pdF9ieV9hcnJheSk6CisgICAgICAgIChn
ZW5yYW5kX2ludDMyKToKKyAgICAgICAgKGdlbnJhbmRfaW50MzEpOgorICAgICAgICAoZ2VucmFu
ZF9yZWFsMSk6CisgICAgICAgIChnZW5yYW5kX3JlYWwyKToKKyAgICAgICAgKGdlbnJhbmRfcmVh
bDMpOgorICAgICAgICAoZ2VucmFuZF9yZXM1Myk6CisKIDIwMDktMDctMDYgIFlvbmcgTGkgIDx5
b25nLmxpQHRvcmNobW9iaWxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3d0Zi9SYW5kb21OdW1iZXIuY3BwIGIv
SmF2YVNjcmlwdENvcmUvd3RmL1JhbmRvbU51bWJlci5jcHAKaW5kZXggYzk0ZDVhNC4uZTUzZjRj
MyAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvd3RmL1JhbmRvbU51bWJlci5jcHAKKysrIGIv
SmF2YVNjcmlwdENvcmUvd3RmL1JhbmRvbU51bWJlci5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgog
ICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqICAgICAgICAgICAoQykgMjAwOCBUb3JjaCBNb2JpbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLiAoaHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20vKQorICogICAgICAgICAg
IChDKSAyMDA4LCAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuICho
dHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTM0LDYgKzM0LDEyIEBACiAjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8c3Rk
bGliLmg+CiAKKyNpZiBQTEFURk9STShXSU5DRSkKK2V4dGVybiAiQyIgeworI2luY2x1ZGUgIndp
bmNlL210MTk5Mzdhci5jIgorfQorI2VuZGlmCisKIG5hbWVzcGFjZSBXVEYgewogCiBkb3VibGUg
d2Vha1JhbmRvbU51bWJlcigpCkBAIC01Miw2ICs1OCwxNCBAQCBkb3VibGUgcmFuZG9tTnVtYmVy
KCkKICAgICBzdGF0aWMgYm9vbCBzX2luaXRpYWxpemVkID0gZmFsc2U7CiAgICAgaWYgKCFzX2lu
aXRpYWxpemVkKSB7CiAgICAgICAgIGluaXRpYWxpemVSYW5kb21OdW1iZXJHZW5lcmF0b3IoKTsK
KyNpZiBQTEFURk9STShXSU5DRSkKKyAgICAgICAgdW5zaWduZWQgbG9uZyBpbml0aWFsaXphdGlv
bkJ1ZmZlcls0XTsKKyAgICAgICAgaW5pdGlhbGl6YXRpb25CdWZmZXJbMF0gPSAocmFuZCgpIDw8
IDE2KSB8IHJhbmQoKTsKKyAgICAgICAgaW5pdGlhbGl6YXRpb25CdWZmZXJbMV0gPSAocmFuZCgp
IDw8IDE2KSB8IHJhbmQoKTsKKyAgICAgICAgaW5pdGlhbGl6YXRpb25CdWZmZXJbMl0gPSAocmFu
ZCgpIDw8IDE2KSB8IHJhbmQoKTsKKyAgICAgICAgaW5pdGlhbGl6YXRpb25CdWZmZXJbM10gPSAo
cmFuZCgpIDw8IDE2KSB8IHJhbmQoKTsKKyAgICAgICAgaW5pdF9ieV9hcnJheShpbml0aWFsaXph
dGlvbkJ1ZmZlciwgNCk7CisjZW5kaWYKICAgICAgICAgc19pbml0aWFsaXplZCA9IHRydWU7CiAg
ICAgfQogI2VuZGlmCkBAIC03NCw2ICs4OCw4IEBAIGRvdWJsZSByYW5kb21OdW1iZXIoKQogICAg
IC8vIE1hc2sgb2ZmIHRoZSBsb3cgNTNiaXRzCiAgICAgZnVsbFJhbmRvbSAmPSAoMUxMIDw8IDUz
KSAtIDE7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4oZnVsbFJhbmRvbSkvc3RhdGlj
X2Nhc3Q8ZG91YmxlPigxTEwgPDwgNTMpOworI2VsaWYgUExBVEZPUk0oV0lOQ0UpCisgICAgcmV0
dXJuIGdlbnJhbmRfcmVzNTMoKTsKICNlbHNlCiAgICAgdWludDMyX3QgcGFydDEgPSByYW5kKCkg
JiAoUkFORF9NQVggLSAxKTsKICAgICB1aW50MzJfdCBwYXJ0MiA9IHJhbmQoKSAmIChSQU5EX01B
WCAtIDEpOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvd3RmL3dpbmNlL210MTk5Mzdhci5j
IGIvSmF2YVNjcmlwdENvcmUvd3RmL3dpbmNlL210MTk5Mzdhci5jCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjUzNzYyN2MKLS0tIC9kZXYvbnVsbAorKysgYi9KYXZhU2NyaXB0
Q29yZS93dGYvd2luY2UvbXQxOTkzN2FyLmMKQEAgLTAsMCArMSwxNzEgQEAKKy8qIAorICAgQSBD
LXByb2dyYW0gZm9yIE1UMTk5MzcsIHdpdGggaW5pdGlhbGl6YXRpb24gaW1wcm92ZWQgMjAwMi8x
LzI2LgorICAgQ29kZWQgYnkgVGFrdWppIE5pc2hpbXVyYSBhbmQgTWFrb3RvIE1hdHN1bW90by4K
KworICAgQmVmb3JlIHVzaW5nLCBpbml0aWFsaXplIHRoZSBzdGF0ZSBieSB1c2luZyBpbml0X2dl
bnJhbmQoc2VlZCkgIAorICAgb3IgaW5pdF9ieV9hcnJheShpbml0X2tleSwga2V5X2xlbmd0aCku
CisKKyAgIENvcHlyaWdodCAoQykgMTk5NyAtIDIwMDIsIE1ha290byBNYXRzdW1vdG8gYW5kIFRh
a3VqaSBOaXNoaW11cmEsCisgICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgICAgICAgICAgICAgICAg
ICAgICAgICAgCisKKyAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgICBhcmUgbWV0OgorCisg
ICAgIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKworICAgICAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICAgICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgICAgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisKKyAgICAgMy4gVGhlIG5hbWVzIG9mIGl0
cyBjb250cmlidXRvcnMgbWF5IG5vdCBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSAKKyAg
ICAgICAgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIAorICAgICAgICBwZXJtaXNzaW9uLgorCisgICBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
ICAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICAgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgICBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IKKyAg
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICAgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICAgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgICBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GCisgICBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORworICAgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgICBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCisgICBBbnkgZmVl
ZGJhY2sgaXMgdmVyeSB3ZWxjb21lLgorICAgaHR0cDovL3d3dy5tYXRoLmtlaW8uYWMuanAvbWF0
dW1vdG8vZW10Lmh0bWwKKyAgIGVtYWlsOiBtYXR1bW90b0BtYXRoLmtlaW8uYWMuanAKKyovCisK
KyNpbmNsdWRlIDxzdGRpby5oPgorCisvKiBQZXJpb2QgcGFyYW1ldGVycyAqLyAgCisjZGVmaW5l
IE4gNjI0CisjZGVmaW5lIE0gMzk3CisjZGVmaW5lIE1BVFJJWF9BIDB4OTkwOGIwZGZVTCAgIC8q
IGNvbnN0YW50IHZlY3RvciBhICovCisjZGVmaW5lIFVQUEVSX01BU0sgMHg4MDAwMDAwMFVMIC8q
IG1vc3Qgc2lnbmlmaWNhbnQgdy1yIGJpdHMgKi8KKyNkZWZpbmUgTE9XRVJfTUFTSyAweDdmZmZm
ZmZmVUwgLyogbGVhc3Qgc2lnbmlmaWNhbnQgciBiaXRzICovCisKK3N0YXRpYyB1bnNpZ25lZCBs
b25nIG10W05dOyAvKiB0aGUgYXJyYXkgZm9yIHRoZSBzdGF0ZSB2ZWN0b3IgICovCitzdGF0aWMg
aW50IG10aT1OKzE7IC8qIG10aT09TisxIG1lYW5zIG10W05dIGlzIG5vdCBpbml0aWFsaXplZCAq
LworCisvKiBpbml0aWFsaXplcyBtdFtOXSB3aXRoIGEgc2VlZCAqLwordm9pZCBpbml0X2dlbnJh
bmQodW5zaWduZWQgbG9uZyBzKQoreworICAgIG10WzBdPSBzICYgMHhmZmZmZmZmZlVMOworICAg
IGZvciAobXRpPTE7IG10aTxOOyBtdGkrKykgeworICAgICAgICBtdFttdGldID0gCisJICAgICgx
ODEyNDMzMjUzVUwgKiAobXRbbXRpLTFdIF4gKG10W210aS0xXSA+PiAzMCkpICsgbXRpKTsgCisg
ICAgICAgIC8qIFNlZSBLbnV0aCBUQU9DUCBWb2wyLiAzcmQgRWQuIFAuMTA2IGZvciBtdWx0aXBs
aWVyLiAqLworICAgICAgICAvKiBJbiB0aGUgcHJldmlvdXMgdmVyc2lvbnMsIE1TQnMgb2YgdGhl
IHNlZWQgYWZmZWN0ICAgKi8KKyAgICAgICAgLyogb25seSBNU0JzIG9mIHRoZSBhcnJheSBtdFtd
LiAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgIC8qIDIwMDIvMDEvMDkgbW9kaWZp
ZWQgYnkgTWFrb3RvIE1hdHN1bW90byAgICAgICAgICAgICAqLworICAgICAgICBtdFttdGldICY9
IDB4ZmZmZmZmZmZVTDsKKyAgICAgICAgLyogZm9yID4zMiBiaXQgbWFjaGluZXMgKi8KKyAgICB9
Cit9CisKKy8qIGluaXRpYWxpemUgYnkgYW4gYXJyYXkgd2l0aCBhcnJheS1sZW5ndGggKi8KKy8q
IGluaXRfa2V5IGlzIHRoZSBhcnJheSBmb3IgaW5pdGlhbGl6aW5nIGtleXMgKi8KKy8qIGtleV9s
ZW5ndGggaXMgaXRzIGxlbmd0aCAqLworLyogc2xpZ2h0IGNoYW5nZSBmb3IgQysrLCAyMDA0LzIv
MjYgKi8KK3ZvaWQgaW5pdF9ieV9hcnJheSh1bnNpZ25lZCBsb25nIGluaXRfa2V5W10saW50IGtl
eV9sZW5ndGgpCit7CisgICAgaW50IGksIGosIGs7CisgICAgaW5pdF9nZW5yYW5kKDE5NjUwMjE4
VUwpOworICAgIGk9MTsgaj0wOworICAgIGsgPSAoTj5rZXlfbGVuZ3RoID8gTiA6IGtleV9sZW5n
dGgpOworICAgIGZvciAoOyBrOyBrLS0pIHsKKyAgICAgICAgbXRbaV0gPSAobXRbaV0gXiAoKG10
W2ktMV0gXiAobXRbaS0xXSA+PiAzMCkpICogMTY2NDUyNVVMKSkKKyAgICAgICAgICArIGluaXRf
a2V5W2pdICsgajsgLyogbm9uIGxpbmVhciAqLworICAgICAgICBtdFtpXSAmPSAweGZmZmZmZmZm
VUw7IC8qIGZvciBXT1JEU0laRSA+IDMyIG1hY2hpbmVzICovCisgICAgICAgIGkrKzsgaisrOwor
ICAgICAgICBpZiAoaT49TikgeyBtdFswXSA9IG10W04tMV07IGk9MTsgfQorICAgICAgICBpZiAo
aj49a2V5X2xlbmd0aCkgaj0wOworICAgIH0KKyAgICBmb3IgKGs9Ti0xOyBrOyBrLS0pIHsKKyAg
ICAgICAgbXRbaV0gPSAobXRbaV0gXiAoKG10W2ktMV0gXiAobXRbaS0xXSA+PiAzMCkpICogMTU2
NjA4Mzk0MVVMKSkKKyAgICAgICAgICAtIGk7IC8qIG5vbiBsaW5lYXIgKi8KKyAgICAgICAgbXRb
aV0gJj0gMHhmZmZmZmZmZlVMOyAvKiBmb3IgV09SRFNJWkUgPiAzMiBtYWNoaW5lcyAqLworICAg
ICAgICBpKys7CisgICAgICAgIGlmIChpPj1OKSB7IG10WzBdID0gbXRbTi0xXTsgaT0xOyB9Cisg
ICAgfQorCisgICAgbXRbMF0gPSAweDgwMDAwMDAwVUw7IC8qIE1TQiBpcyAxOyBhc3N1cmluZyBu
b24temVybyBpbml0aWFsIGFycmF5ICovIAorfQorCisvKiBnZW5lcmF0ZXMgYSByYW5kb20gbnVt
YmVyIG9uIFswLDB4ZmZmZmZmZmZdLWludGVydmFsICovCit1bnNpZ25lZCBsb25nIGdlbnJhbmRf
aW50MzIodm9pZCkKK3sKKyAgICB1bnNpZ25lZCBsb25nIHk7CisgICAgc3RhdGljIHVuc2lnbmVk
IGxvbmcgbWFnMDFbMl09ezB4MFVMLCBNQVRSSVhfQX07CisgICAgLyogbWFnMDFbeF0gPSB4ICog
TUFUUklYX0EgIGZvciB4PTAsMSAqLworCisgICAgaWYgKG10aSA+PSBOKSB7IC8qIGdlbmVyYXRl
IE4gd29yZHMgYXQgb25lIHRpbWUgKi8KKyAgICAgICAgaW50IGtrOworCisgICAgICAgIGlmICht
dGkgPT0gTisxKSAgIC8qIGlmIGluaXRfZ2VucmFuZCgpIGhhcyBub3QgYmVlbiBjYWxsZWQsICov
CisgICAgICAgICAgICBpbml0X2dlbnJhbmQoNTQ4OVVMKTsgLyogYSBkZWZhdWx0IGluaXRpYWwg
c2VlZCBpcyB1c2VkICovCisKKyAgICAgICAgZm9yIChraz0wO2trPE4tTTtraysrKSB7CisgICAg
ICAgICAgICB5ID0gKG10W2trXSZVUFBFUl9NQVNLKXwobXRba2srMV0mTE9XRVJfTUFTSyk7Cisg
ICAgICAgICAgICBtdFtra10gPSBtdFtraytNXSBeICh5ID4+IDEpIF4gbWFnMDFbeSAmIDB4MVVM
XTsKKyAgICAgICAgfQorICAgICAgICBmb3IgKDtrazxOLTE7a2srKykgeworICAgICAgICAgICAg
eSA9IChtdFtra10mVVBQRVJfTUFTSyl8KG10W2trKzFdJkxPV0VSX01BU0spOworICAgICAgICAg
ICAgbXRba2tdID0gbXRba2srKE0tTildIF4gKHkgPj4gMSkgXiBtYWcwMVt5ICYgMHgxVUxdOwor
ICAgICAgICB9CisgICAgICAgIHkgPSAobXRbTi0xXSZVUFBFUl9NQVNLKXwobXRbMF0mTE9XRVJf
TUFTSyk7CisgICAgICAgIG10W04tMV0gPSBtdFtNLTFdIF4gKHkgPj4gMSkgXiBtYWcwMVt5ICYg
MHgxVUxdOworCisgICAgICAgIG10aSA9IDA7CisgICAgfQorICAKKyAgICB5ID0gbXRbbXRpKytd
OworCisgICAgLyogVGVtcGVyaW5nICovCisgICAgeSBePSAoeSA+PiAxMSk7CisgICAgeSBePSAo
eSA8PCA3KSAmIDB4OWQyYzU2ODBVTDsKKyAgICB5IF49ICh5IDw8IDE1KSAmIDB4ZWZjNjAwMDBV
TDsKKyAgICB5IF49ICh5ID4+IDE4KTsKKworICAgIHJldHVybiB5OworfQorCisvKiBnZW5lcmF0
ZXMgYSByYW5kb20gbnVtYmVyIG9uIFswLDB4N2ZmZmZmZmZdLWludGVydmFsICovCitsb25nIGdl
bnJhbmRfaW50MzEodm9pZCkKK3sKKyAgICByZXR1cm4gKGxvbmcpKGdlbnJhbmRfaW50MzIoKT4+
MSk7Cit9CisKKy8qIGdlbmVyYXRlcyBhIHJhbmRvbSBudW1iZXIgb24gWzAsMV0tcmVhbC1pbnRl
cnZhbCAqLworZG91YmxlIGdlbnJhbmRfcmVhbDEodm9pZCkKK3sKKyAgICByZXR1cm4gZ2VucmFu
ZF9pbnQzMigpKigxLjAvNDI5NDk2NzI5NS4wKTsgCisgICAgLyogZGl2aWRlZCBieSAyXjMyLTEg
Ki8gCit9CisKKy8qIGdlbmVyYXRlcyBhIHJhbmRvbSBudW1iZXIgb24gWzAsMSktcmVhbC1pbnRl
cnZhbCAqLworZG91YmxlIGdlbnJhbmRfcmVhbDIodm9pZCkKK3sKKyAgICByZXR1cm4gZ2VucmFu
ZF9pbnQzMigpKigxLjAvNDI5NDk2NzI5Ni4wKTsgCisgICAgLyogZGl2aWRlZCBieSAyXjMyICov
Cit9CisKKy8qIGdlbmVyYXRlcyBhIHJhbmRvbSBudW1iZXIgb24gKDAsMSktcmVhbC1pbnRlcnZh
bCAqLworZG91YmxlIGdlbnJhbmRfcmVhbDModm9pZCkKK3sKKyAgICByZXR1cm4gKCgoZG91Ymxl
KWdlbnJhbmRfaW50MzIoKSkgKyAwLjUpKigxLjAvNDI5NDk2NzI5Ni4wKTsgCisgICAgLyogZGl2
aWRlZCBieSAyXjMyICovCit9CisKKy8qIGdlbmVyYXRlcyBhIHJhbmRvbSBudW1iZXIgb24gWzAs
MSkgd2l0aCA1My1iaXQgcmVzb2x1dGlvbiovCitkb3VibGUgZ2VucmFuZF9yZXM1Myh2b2lkKSAK
K3sgCisgICAgdW5zaWduZWQgbG9uZyBhPWdlbnJhbmRfaW50MzIoKT4+NSwgYj1nZW5yYW5kX2lu
dDMyKCk+PjY7IAorICAgIHJldHVybihhKjY3MTA4ODY0LjArYikqKDEuMC85MDA3MTk5MjU0NzQw
OTkyLjApOyAKK30gCg==
</data>
<flag name="review"
          id="16833"
          type_id="1"
          status="-"
          setter="staikos"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32386</attachid>
            <date>2009-07-07 10:40:09 -0700</date>
            <delta_ts>2009-07-14 07:51:39 -0700</delta_ts>
            <desc>updated patch</desc>
            <filename>bug27030.patch</filename>
            <type>text/plain</type>
            <size>9720</size>
            <attacher name="Joe Mason">joenotcharles</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCA0MTMyMGVjLi5jYzYzZTkxIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYg
QEAKKzIwMDktMDctMDYgIEdlb3JnZSBTdGFpa29zICA8Z2VvcmdlLnN0YWlrb3NAdG9yY2htb2Jp
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEF1dGhvcnM6IEdlb3JnZSBTdGFpa29zIDxnZW9yZ2Uuc3RhaWtvc0B0b3JjaG1vYmlsZS5jb20+
LCBKb2UgTWFzb24gPGpvZS5tYXNvbkB0b3JjaG1vYmlsZS5jb20+LCBNYWtvdG8gTWF0c3Vtb3Rv
IDxtYXR1bW90b0BtYXRoLmtlaW8uYWMuanA+LCBUYWt1amkgTmlzaGltdXJhCisgICAgICAgIAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjcwMzAKKyAg
ICAgICAgSW1wbGVtZW50IGN1c3RvbSBSTkcgZm9yIFdpbkNFIHVzaW5nIE1lcnNlbm5lIFR3aXN0
ZXIKKworICAgICAgICAqIHd0Zi9SYW5kb21OdW1iZXIuY3BwOgorICAgICAgICAoV1RGOjpyYW5k
b21OdW1iZXIpOgorICAgICAgICAqIHd0Zi9SYW5kb21OdW1iZXJTZWVkLmg6CisgICAgICAgIChX
VEY6OmluaXRpYWxpemVSYW5kb21OdW1iZXJHZW5lcmF0b3IpOiAgICAgICAgCisgICAgICAgICog
d3RmL3dpbmNlL210MTk5Mzdhci5jOiBBZGRlZC4KKyAgICAgICAgKGluaXRfZ2VucmFuZCk6Cisg
ICAgICAgIChpbml0X2J5X2FycmF5KToKKyAgICAgICAgKGdlbnJhbmRfaW50MzIpOgorICAgICAg
ICAoZ2VucmFuZF9pbnQzMSk6CisgICAgICAgIChnZW5yYW5kX3JlYWwxKToKKyAgICAgICAgKGdl
bnJhbmRfcmVhbDIpOgorICAgICAgICAoZ2VucmFuZF9yZWFsMyk6CisgICAgICAgIChnZW5yYW5k
X3JlczUzKToKKwogMjAwOS0wNy0wNiAgWW9uZyBMaSAgPHlvbmcubGlAdG9yY2htb2JpbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgpkaWZmIC0tZ2l0IGEvSmF2
YVNjcmlwdENvcmUvd3RmL1JhbmRvbU51bWJlci5jcHAgYi9KYXZhU2NyaXB0Q29yZS93dGYvUmFu
ZG9tTnVtYmVyLmNwcAppbmRleCBjOTRkNWE0Li4wZTZlMjA4IDEwMDY0NAotLS0gYS9KYXZhU2Ny
aXB0Q29yZS93dGYvUmFuZG9tTnVtYmVyLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS93dGYvUmFu
ZG9tTnVtYmVyLmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYs
IDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogICAgICAgICAg
IChDKSAyMDA4IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIChodHRwOi8v
d3d3LnRvcmNobW9iaWxlLmNvbS8pCisgKiAgICAgICAgICAgKEMpIDIwMDgsIDIwMDkgVG9yY2gg
TW9iaWxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUu
Y29tLykKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzQsNiArMzQsMTIgQEAK
ICNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KIAorI2lmIFBMQVRGT1JN
KFdJTkNFKQorZXh0ZXJuICJDIiB7CisjaW5jbHVkZSAid2luY2UvbXQxOTkzN2FyLmMiCit9Cisj
ZW5kaWYKKwogbmFtZXNwYWNlIFdURiB7CiAKIGRvdWJsZSB3ZWFrUmFuZG9tTnVtYmVyKCkKQEAg
LTc0LDYgKzgwLDggQEAgZG91YmxlIHJhbmRvbU51bWJlcigpCiAgICAgLy8gTWFzayBvZmYgdGhl
IGxvdyA1M2JpdHMKICAgICBmdWxsUmFuZG9tICY9ICgxTEwgPDwgNTMpIC0gMTsKICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8ZG91YmxlPihmdWxsUmFuZG9tKS9zdGF0aWNfY2FzdDxkb3VibGU+KDFM
TCA8PCA1Myk7CisjZWxpZiBQTEFURk9STShXSU5DRSkKKyAgICByZXR1cm4gZ2VucmFuZF9yZXM1
MygpOwogI2Vsc2UKICAgICB1aW50MzJfdCBwYXJ0MSA9IHJhbmQoKSAmIChSQU5EX01BWCAtIDEp
OwogICAgIHVpbnQzMl90IHBhcnQyID0gcmFuZCgpICYgKFJBTkRfTUFYIC0gMSk7CmRpZmYgLS1n
aXQgYS9KYXZhU2NyaXB0Q29yZS93dGYvUmFuZG9tTnVtYmVyU2VlZC5oIGIvSmF2YVNjcmlwdENv
cmUvd3RmL1JhbmRvbU51bWJlclNlZWQuaAppbmRleCBmOTk0ZmQ5Li5lYzgyMGI4IDEwMDY0NAot
LS0gYS9KYXZhU2NyaXB0Q29yZS93dGYvUmFuZG9tTnVtYmVyU2VlZC5oCisrKyBiL0phdmFTY3Jp
cHRDb3JlL3d0Zi9SYW5kb21OdW1iZXJTZWVkLmgKQEAgLTM4LDYgKzM4LDEyIEBACiAjaW5jbHVk
ZSA8dW5pc3RkLmg+CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFdJTkNFKQorZXh0ZXJuICJDIiB7
Cit2b2lkIGluaXRfYnlfYXJyYXkodW5zaWduZWQgbG9uZyBpbml0X2tleVtdLGludCBrZXlfbGVu
Z3RoKTsKK30KKyNlbmRpZgorCiAvLyBJbnRlcm5hbCBKYXZhU2NyaXB0Q29yZSB1c2FnZSBvbmx5
CiBuYW1lc3BhY2UgV1RGIHsKIApAQCAtNDUsOCArNTEsMTkgQEAgaW5saW5lIHZvaWQgaW5pdGlh
bGl6ZVJhbmRvbU51bWJlckdlbmVyYXRvcigpCiB7CiAjaWYgUExBVEZPUk0oREFSV0lOKQogICAg
IC8vIE9uIERhcndpbiB3ZSB1c2UgYXJjNHJhbmRvbSB3aGljaCBpbml0aWFsaXNlcyBpdHNlbGYu
CisjZWxpZiBQTEFURk9STShXSU5DRSkKKyAgICAvLyBpbml0aWFsaXplIHJhbmQoKQorICAgIHNy
YW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPih0aW1lKDApKSk7CisgICAgCisgICAgLy8gdXNlIHJh
bmQoKSB0byBpbml0aWFsaXplIHRoZSByZWFsIFJORworICAgIHVuc2lnbmVkIGxvbmcgaW5pdGlh
bGl6YXRpb25CdWZmZXJbNF07CisgICAgaW5pdGlhbGl6YXRpb25CdWZmZXJbMF0gPSAocmFuZCgp
IDw8IDE2KSB8IHJhbmQoKTsKKyAgICBpbml0aWFsaXphdGlvbkJ1ZmZlclsxXSA9IChyYW5kKCkg
PDwgMTYpIHwgcmFuZCgpOworICAgIGluaXRpYWxpemF0aW9uQnVmZmVyWzJdID0gKHJhbmQoKSA8
PCAxNikgfCByYW5kKCk7CisgICAgaW5pdGlhbGl6YXRpb25CdWZmZXJbM10gPSAocmFuZCgpIDw8
IDE2KSB8IHJhbmQoKTsKKyAgICBpbml0X2J5X2FycmF5KGluaXRpYWxpemF0aW9uQnVmZmVyLCA0
KTsKICNlbGlmIENPTVBJTEVSKE1TVkMpICYmIGRlZmluZWQoX0NSVF9SQU5EX1MpCi0gICAgLy8g
T24gV2luZG93cyB3ZSB1c2UgcmFuZF9zIHdoaWNoIGludGlhbGlzZXMgaXRzZWxmCisgICAgLy8g
T24gV2luZG93cyB3ZSB1c2UgcmFuZF9zIHdoaWNoIGluaXRpYWxpc2VzIGl0c2VsZgogI2VsaWYg
UExBVEZPUk0oVU5JWCkKICAgICAvLyBzcmFuZG9tZGV2IGlzIG5vdCBndWFyYW50ZWVkIHRvIGV4
aXN0IG9uIGxpbnV4IHNvIHdlIHVzZSB0aGlzIHBvb3Igc2VlZCwgdGhpcyBzaG91bGQgYmUgaW1w
cm92ZWQKICAgICB0aW1ldmFsIHRpbWU7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS93dGYv
d2luY2UvbXQxOTkzN2FyLmMgYi9KYXZhU2NyaXB0Q29yZS93dGYvd2luY2UvbXQxOTkzN2FyLmMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTM3NjI3YwotLS0gL2Rldi9udWxs
CisrKyBiL0phdmFTY3JpcHRDb3JlL3d0Zi93aW5jZS9tdDE5OTM3YXIuYwpAQCAtMCwwICsxLDE3
MSBAQAorLyogCisgICBBIEMtcHJvZ3JhbSBmb3IgTVQxOTkzNywgd2l0aCBpbml0aWFsaXphdGlv
biBpbXByb3ZlZCAyMDAyLzEvMjYuCisgICBDb2RlZCBieSBUYWt1amkgTmlzaGltdXJhIGFuZCBN
YWtvdG8gTWF0c3Vtb3RvLgorCisgICBCZWZvcmUgdXNpbmcsIGluaXRpYWxpemUgdGhlIHN0YXRl
IGJ5IHVzaW5nIGluaXRfZ2VucmFuZChzZWVkKSAgCisgICBvciBpbml0X2J5X2FycmF5KGluaXRf
a2V5LCBrZXlfbGVuZ3RoKS4KKworICAgQ29weXJpZ2h0IChDKSAxOTk3IC0gMjAwMiwgTWFrb3Rv
IE1hdHN1bW90byBhbmQgVGFrdWppIE5pc2hpbXVyYSwKKyAgIEFsbCByaWdodHMgcmVzZXJ2ZWQu
ICAgICAgICAgICAgICAgICAgICAgICAgICAKKworICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgICBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAgIGFyZSBtZXQ6CisKKyAgICAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAgICAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorCisgICAgIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAgICAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKworICAgICAz
LiBUaGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgbm90IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIAorICAgICAgICBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gCisgICAgICAgIHBlcm1pc3Npb24uCisK
KyAgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAgICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgICBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAgIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVCBPV05FUiBPUgorICAgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgICBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgICBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAgIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YKKyAgIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgICBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAgIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCisKKyAgIEFueSBmZWVkYmFjayBpcyB2ZXJ5IHdlbGNvbWUuCisgICBodHRwOi8vd3d3Lm1h
dGgua2Vpby5hYy5qcC9tYXR1bW90by9lbXQuaHRtbAorICAgZW1haWw6IG1hdHVtb3RvQG1hdGgu
a2Vpby5hYy5qcAorKi8KKworI2luY2x1ZGUgPHN0ZGlvLmg+CisKKy8qIFBlcmlvZCBwYXJhbWV0
ZXJzICovICAKKyNkZWZpbmUgTiA2MjQKKyNkZWZpbmUgTSAzOTcKKyNkZWZpbmUgTUFUUklYX0Eg
MHg5OTA4YjBkZlVMICAgLyogY29uc3RhbnQgdmVjdG9yIGEgKi8KKyNkZWZpbmUgVVBQRVJfTUFT
SyAweDgwMDAwMDAwVUwgLyogbW9zdCBzaWduaWZpY2FudCB3LXIgYml0cyAqLworI2RlZmluZSBM
T1dFUl9NQVNLIDB4N2ZmZmZmZmZVTCAvKiBsZWFzdCBzaWduaWZpY2FudCByIGJpdHMgKi8KKwor
c3RhdGljIHVuc2lnbmVkIGxvbmcgbXRbTl07IC8qIHRoZSBhcnJheSBmb3IgdGhlIHN0YXRlIHZl
Y3RvciAgKi8KK3N0YXRpYyBpbnQgbXRpPU4rMTsgLyogbXRpPT1OKzEgbWVhbnMgbXRbTl0gaXMg
bm90IGluaXRpYWxpemVkICovCisKKy8qIGluaXRpYWxpemVzIG10W05dIHdpdGggYSBzZWVkICov
Cit2b2lkIGluaXRfZ2VucmFuZCh1bnNpZ25lZCBsb25nIHMpCit7CisgICAgbXRbMF09IHMgJiAw
eGZmZmZmZmZmVUw7CisgICAgZm9yIChtdGk9MTsgbXRpPE47IG10aSsrKSB7CisgICAgICAgIG10
W210aV0gPSAKKwkgICAgKDE4MTI0MzMyNTNVTCAqIChtdFttdGktMV0gXiAobXRbbXRpLTFdID4+
IDMwKSkgKyBtdGkpOyAKKyAgICAgICAgLyogU2VlIEtudXRoIFRBT0NQIFZvbDIuIDNyZCBFZC4g
UC4xMDYgZm9yIG11bHRpcGxpZXIuICovCisgICAgICAgIC8qIEluIHRoZSBwcmV2aW91cyB2ZXJz
aW9ucywgTVNCcyBvZiB0aGUgc2VlZCBhZmZlY3QgICAqLworICAgICAgICAvKiBvbmx5IE1TQnMg
b2YgdGhlIGFycmF5IG10W10uICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgLyog
MjAwMi8wMS8wOSBtb2RpZmllZCBieSBNYWtvdG8gTWF0c3Vtb3RvICAgICAgICAgICAgICovCisg
ICAgICAgIG10W210aV0gJj0gMHhmZmZmZmZmZlVMOworICAgICAgICAvKiBmb3IgPjMyIGJpdCBt
YWNoaW5lcyAqLworICAgIH0KK30KKworLyogaW5pdGlhbGl6ZSBieSBhbiBhcnJheSB3aXRoIGFy
cmF5LWxlbmd0aCAqLworLyogaW5pdF9rZXkgaXMgdGhlIGFycmF5IGZvciBpbml0aWFsaXppbmcg
a2V5cyAqLworLyoga2V5X2xlbmd0aCBpcyBpdHMgbGVuZ3RoICovCisvKiBzbGlnaHQgY2hhbmdl
IGZvciBDKyssIDIwMDQvMi8yNiAqLwordm9pZCBpbml0X2J5X2FycmF5KHVuc2lnbmVkIGxvbmcg
aW5pdF9rZXlbXSxpbnQga2V5X2xlbmd0aCkKK3sKKyAgICBpbnQgaSwgaiwgazsKKyAgICBpbml0
X2dlbnJhbmQoMTk2NTAyMThVTCk7CisgICAgaT0xOyBqPTA7CisgICAgayA9IChOPmtleV9sZW5n
dGggPyBOIDoga2V5X2xlbmd0aCk7CisgICAgZm9yICg7IGs7IGstLSkgeworICAgICAgICBtdFtp
XSA9IChtdFtpXSBeICgobXRbaS0xXSBeIChtdFtpLTFdID4+IDMwKSkgKiAxNjY0NTI1VUwpKQor
ICAgICAgICAgICsgaW5pdF9rZXlbal0gKyBqOyAvKiBub24gbGluZWFyICovCisgICAgICAgIG10
W2ldICY9IDB4ZmZmZmZmZmZVTDsgLyogZm9yIFdPUkRTSVpFID4gMzIgbWFjaGluZXMgKi8KKyAg
ICAgICAgaSsrOyBqKys7CisgICAgICAgIGlmIChpPj1OKSB7IG10WzBdID0gbXRbTi0xXTsgaT0x
OyB9CisgICAgICAgIGlmIChqPj1rZXlfbGVuZ3RoKSBqPTA7CisgICAgfQorICAgIGZvciAoaz1O
LTE7IGs7IGstLSkgeworICAgICAgICBtdFtpXSA9IChtdFtpXSBeICgobXRbaS0xXSBeIChtdFtp
LTFdID4+IDMwKSkgKiAxNTY2MDgzOTQxVUwpKQorICAgICAgICAgIC0gaTsgLyogbm9uIGxpbmVh
ciAqLworICAgICAgICBtdFtpXSAmPSAweGZmZmZmZmZmVUw7IC8qIGZvciBXT1JEU0laRSA+IDMy
IG1hY2hpbmVzICovCisgICAgICAgIGkrKzsKKyAgICAgICAgaWYgKGk+PU4pIHsgbXRbMF0gPSBt
dFtOLTFdOyBpPTE7IH0KKyAgICB9CisKKyAgICBtdFswXSA9IDB4ODAwMDAwMDBVTDsgLyogTVNC
IGlzIDE7IGFzc3VyaW5nIG5vbi16ZXJvIGluaXRpYWwgYXJyYXkgKi8gCit9CisKKy8qIGdlbmVy
YXRlcyBhIHJhbmRvbSBudW1iZXIgb24gWzAsMHhmZmZmZmZmZl0taW50ZXJ2YWwgKi8KK3Vuc2ln
bmVkIGxvbmcgZ2VucmFuZF9pbnQzMih2b2lkKQoreworICAgIHVuc2lnbmVkIGxvbmcgeTsKKyAg
ICBzdGF0aWMgdW5zaWduZWQgbG9uZyBtYWcwMVsyXT17MHgwVUwsIE1BVFJJWF9BfTsKKyAgICAv
KiBtYWcwMVt4XSA9IHggKiBNQVRSSVhfQSAgZm9yIHg9MCwxICovCisKKyAgICBpZiAobXRpID49
IE4pIHsgLyogZ2VuZXJhdGUgTiB3b3JkcyBhdCBvbmUgdGltZSAqLworICAgICAgICBpbnQga2s7
CisKKyAgICAgICAgaWYgKG10aSA9PSBOKzEpICAgLyogaWYgaW5pdF9nZW5yYW5kKCkgaGFzIG5v
dCBiZWVuIGNhbGxlZCwgKi8KKyAgICAgICAgICAgIGluaXRfZ2VucmFuZCg1NDg5VUwpOyAvKiBh
IGRlZmF1bHQgaW5pdGlhbCBzZWVkIGlzIHVzZWQgKi8KKworICAgICAgICBmb3IgKGtrPTA7a2s8
Ti1NO2trKyspIHsKKyAgICAgICAgICAgIHkgPSAobXRba2tdJlVQUEVSX01BU0spfChtdFtraysx
XSZMT1dFUl9NQVNLKTsKKyAgICAgICAgICAgIG10W2trXSA9IG10W2trK01dIF4gKHkgPj4gMSkg
XiBtYWcwMVt5ICYgMHgxVUxdOworICAgICAgICB9CisgICAgICAgIGZvciAoO2trPE4tMTtraysr
KSB7CisgICAgICAgICAgICB5ID0gKG10W2trXSZVUFBFUl9NQVNLKXwobXRba2srMV0mTE9XRVJf
TUFTSyk7CisgICAgICAgICAgICBtdFtra10gPSBtdFtraysoTS1OKV0gXiAoeSA+PiAxKSBeIG1h
ZzAxW3kgJiAweDFVTF07CisgICAgICAgIH0KKyAgICAgICAgeSA9IChtdFtOLTFdJlVQUEVSX01B
U0spfChtdFswXSZMT1dFUl9NQVNLKTsKKyAgICAgICAgbXRbTi0xXSA9IG10W00tMV0gXiAoeSA+
PiAxKSBeIG1hZzAxW3kgJiAweDFVTF07CisKKyAgICAgICAgbXRpID0gMDsKKyAgICB9CisgIAor
ICAgIHkgPSBtdFttdGkrK107CisKKyAgICAvKiBUZW1wZXJpbmcgKi8KKyAgICB5IF49ICh5ID4+
IDExKTsKKyAgICB5IF49ICh5IDw8IDcpICYgMHg5ZDJjNTY4MFVMOworICAgIHkgXj0gKHkgPDwg
MTUpICYgMHhlZmM2MDAwMFVMOworICAgIHkgXj0gKHkgPj4gMTgpOworCisgICAgcmV0dXJuIHk7
Cit9CisKKy8qIGdlbmVyYXRlcyBhIHJhbmRvbSBudW1iZXIgb24gWzAsMHg3ZmZmZmZmZl0taW50
ZXJ2YWwgKi8KK2xvbmcgZ2VucmFuZF9pbnQzMSh2b2lkKQoreworICAgIHJldHVybiAobG9uZyko
Z2VucmFuZF9pbnQzMigpPj4xKTsKK30KKworLyogZ2VuZXJhdGVzIGEgcmFuZG9tIG51bWJlciBv
biBbMCwxXS1yZWFsLWludGVydmFsICovCitkb3VibGUgZ2VucmFuZF9yZWFsMSh2b2lkKQorewor
ICAgIHJldHVybiBnZW5yYW5kX2ludDMyKCkqKDEuMC80Mjk0OTY3Mjk1LjApOyAKKyAgICAvKiBk
aXZpZGVkIGJ5IDJeMzItMSAqLyAKK30KKworLyogZ2VuZXJhdGVzIGEgcmFuZG9tIG51bWJlciBv
biBbMCwxKS1yZWFsLWludGVydmFsICovCitkb3VibGUgZ2VucmFuZF9yZWFsMih2b2lkKQorewor
ICAgIHJldHVybiBnZW5yYW5kX2ludDMyKCkqKDEuMC80Mjk0OTY3Mjk2LjApOyAKKyAgICAvKiBk
aXZpZGVkIGJ5IDJeMzIgKi8KK30KKworLyogZ2VuZXJhdGVzIGEgcmFuZG9tIG51bWJlciBvbiAo
MCwxKS1yZWFsLWludGVydmFsICovCitkb3VibGUgZ2VucmFuZF9yZWFsMyh2b2lkKQoreworICAg
IHJldHVybiAoKChkb3VibGUpZ2VucmFuZF9pbnQzMigpKSArIDAuNSkqKDEuMC80Mjk0OTY3Mjk2
LjApOyAKKyAgICAvKiBkaXZpZGVkIGJ5IDJeMzIgKi8KK30KKworLyogZ2VuZXJhdGVzIGEgcmFu
ZG9tIG51bWJlciBvbiBbMCwxKSB3aXRoIDUzLWJpdCByZXNvbHV0aW9uKi8KK2RvdWJsZSBnZW5y
YW5kX3JlczUzKHZvaWQpIAoreyAKKyAgICB1bnNpZ25lZCBsb25nIGE9Z2VucmFuZF9pbnQzMigp
Pj41LCBiPWdlbnJhbmRfaW50MzIoKT4+NjsgCisgICAgcmV0dXJuKGEqNjcxMDg4NjQuMCtiKSoo
MS4wLzkwMDcxOTkyNTQ3NDA5OTIuMCk7IAorfSAK
</data>
<flag name="review"
          id="16837"
          type_id="1"
          status="+"
          setter="manyoso"
    />
          </attachment>
      

    </bug>

</bugzilla>