<?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>103614</bug_id>
          
          <creation_ts>2012-11-29 01:04:36 -0800</creation_ts>
          <short_desc>Optimizing RGBA16, RGB16, ARGB16, BGRA16 unpacking functions with NEON intrinsics</short_desc>
          <delta_ts>2013-01-07 06:32:57 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGL</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="Gabor Rapcsanyi">rgabor</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dino</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zherczeg</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>778804</commentid>
    <comment_count>0</comment_count>
    <who name="Gabor Rapcsanyi">rgabor</who>
    <bug_when>2012-11-29 01:04:36 -0800</bug_when>
    <thetext>Optimizing RGBA16LittleToRGBA8, RGB16LittleToRGBA8, ARGB16LittleToRGBA8, BGRA16LittleToRGBA8 unpacking functions in GraphicsContext3D with ARM NEON intrinsics.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778934</commentid>
    <comment_count>1</comment_count>
      <attachid>176708</attachid>
    <who name="Gabor Rapcsanyi">rgabor</who>
    <bug_when>2012-11-29 05:17:47 -0800</bug_when>
    <thetext>Created attachment 176708
patch

I tried it on Pandaboard with Linaro 12.10 Ubuntu.

unpackOneRowOfRGBA16LittleToRGBA8: 2.3x faster
unpackOneRowOfRGB16LittleToRGBA8: 1.97x faster
unpackOneRowOfARGB16LittleToRGBA8: 3.07x faster
unpackOneRowOfBGRA16LittleToRGBA8: 2.93x faster</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784708</commentid>
    <comment_count>2</comment_count>
      <attachid>176708</attachid>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2012-12-06 00:35:24 -0800</bug_when>
    <thetext>Comment on attachment 176708
patch

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

&gt; Source/WebCore/platform/graphics/GraphicsContext3D.cpp:377
&gt; +#if HAVE(ARM_NEON_INTRINSICS)
&gt; +    unsigned componentsPerRow = pixelsPerRow * 4;
&gt; +    unsigned tailComponents = componentsPerRow % 8;
&gt; +    unsigned componentsSize = componentsPerRow - tailComponents;
&gt; +
&gt; +    ARM::unpackOneRowOfRGBA16LittleToRGBA8NEON(source, destination, componentsSize);
&gt; +
&gt; +    source += componentsSize;
&gt; +    destination += componentsSize;
&gt; +    pixelsPerRow = tailComponents / 4;
&gt; +#endif

I realized that I don&apos;t really like in this approach. The modification of the common code path is way too big. And too ARM specific.

I would prefer:

#if HAVE(ARM_NEON_INTRINSICS) optionally other SIMDS connected with || operator
    SIMD::unpackOneRowOfRGBA16LittleToRGBA8(source, destination, pixelsPerRow)
$endif

And the SIMD class (namespace) would define the folowing interface:
inline void SIMD::unpackOneRowOfRGBA16LittleToRGBA8(const uint16_t*&amp; source, uint8_t*&amp; destination, unsigned int&amp; pixelsPerRow)

Advantages:
1) Modifications of the common code path is much shorter.
2) Can modify the arguments, since they passed as reference (usually SIMD process a group of pixels, but not necessary all if the length is not divisible by a certain value).
3) Can be extended to support other SIMD-s, not just NEON
4) Still it can be seen that a certain function is supported by the current CPU (So it is not necessary to support all of these functions on all CPUs which have SIMD support)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>792112</commentid>
    <comment_count>3</comment_count>
    <who name="Gabor Rapcsanyi">rgabor</who>
    <bug_when>2012-12-15 07:24:58 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 176708 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=176708&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/GraphicsContext3D.cpp:377
&gt; &gt; +#if HAVE(ARM_NEON_INTRINSICS)
&gt; &gt; +    unsigned componentsPerRow = pixelsPerRow * 4;
&gt; &gt; +    unsigned tailComponents = componentsPerRow % 8;
&gt; &gt; +    unsigned componentsSize = componentsPerRow - tailComponents;
&gt; &gt; +
&gt; &gt; +    ARM::unpackOneRowOfRGBA16LittleToRGBA8NEON(source, destination, componentsSize);
&gt; &gt; +
&gt; &gt; +    source += componentsSize;
&gt; &gt; +    destination += componentsSize;
&gt; &gt; +    pixelsPerRow = tailComponents / 4;
&gt; &gt; +#endif
&gt; 
&gt; I realized that I don&apos;t really like in this approach. The modification of the common code path is way too big. And too ARM specific.
&gt; 
&gt; I would prefer:
&gt; 
&gt; #if HAVE(ARM_NEON_INTRINSICS) optionally other SIMDS connected with || operator
&gt;     SIMD::unpackOneRowOfRGBA16LittleToRGBA8(source, destination, pixelsPerRow)
&gt; $endif
&gt; 
&gt; And the SIMD class (namespace) would define the folowing interface:
&gt; inline void SIMD::unpackOneRowOfRGBA16LittleToRGBA8(const uint16_t*&amp; source, uint8_t*&amp; destination, unsigned int&amp; pixelsPerRow)
&gt; 
&gt; Advantages:
&gt; 1) Modifications of the common code path is much shorter.
&gt; 2) Can modify the arguments, since they passed as reference (usually SIMD process a group of pixels, but not necessary all if the length is not divisible by a certain value).
&gt; 3) Can be extended to support other SIMD-s, not just NEON
&gt; 4) Still it can be seen that a certain function is supported by the current CPU (So it is not necessary to support all of these functions on all CPUs which have SIMD support)

Yes, sounds logical to me so I made a bug to change those optimizations: https://bugs.webkit.org/show_bug.cgi?id=105086</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>792605</commentid>
    <comment_count>4</comment_count>
      <attachid>179710</attachid>
    <who name="Gabor Rapcsanyi">rgabor</who>
    <bug_when>2012-12-17 03:29:37 -0800</bug_when>
    <thetext>Created attachment 179710
modified patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>792614</commentid>
    <comment_count>5</comment_count>
      <attachid>179710</attachid>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2012-12-17 03:54:44 -0800</bug_when>
    <thetext>Comment on attachment 179710
modified patch

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

&gt; Source/WebCore/platform/graphics/cpu/arm/GraphicsContext3DNEON.h:46
&gt; +        uint16x8_t eightComponents = vld1q_u16(source + i);
&gt; +        eightComponents = vshrq_n_u16(eightComponents, 8);
&gt; +        vst1_u8(destination + i, vqmovn_u16(eightComponents));

I think this could be simplified to a simple read/write method without vshr. Just read an interleaved low/high component data, and write back the high component. Similar algorithm can be created to the other cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>794489</commentid>
    <comment_count>6</comment_count>
      <attachid>180126</attachid>
    <who name="Gabor Rapcsanyi">rgabor</who>
    <bug_when>2012-12-19 03:33:47 -0800</bug_when>
    <thetext>Created attachment 180126
patch2

(In reply to comment #5)
&gt; (From update of attachment 179710 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=179710&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/cpu/arm/GraphicsContext3DNEON.h:46
&gt; &gt; +        uint16x8_t eightComponents = vld1q_u16(source + i);
&gt; &gt; +        eightComponents = vshrq_n_u16(eightComponents, 8);
&gt; &gt; +        vst1_u8(destination + i, vqmovn_u16(eightComponents));
&gt; 
&gt; I think this could be simplified to a simple read/write method without vshr. Just read an interleaved low/high component data, and write back the high component. Similar algorithm can be created to the other cases.

Yes thanks I changed it.
unpackOneRowOfRGBA16LittleToRGBA8: 3.19x faster now

I tried the same with unpackOneRowOfARGB16LittleToRGBA8:
  uint8x16x2_t components = vld2q_u8(src + i * 2);
  uint32x4_t ARGB = vreinterpretq_u32_u8(components.val[1]);
  uint32x4_t RGBA = vorrq_u32(vshrq_n_u32(ARGB, 24), vshlq_n_u32(ARGB, 8));
  vst1q_u8(destination + i, vreinterpretq_u8_u32(RGBA));

It was a little bit slower than my original solution.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801254</commentid>
    <comment_count>7</comment_count>
      <attachid>180126</attachid>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2013-01-07 06:28:54 -0800</bug_when>
    <thetext>Comment on attachment 180126
patch2

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801256</commentid>
    <comment_count>8</comment_count>
      <attachid>180126</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-07 06:32:53 -0800</bug_when>
    <thetext>Comment on attachment 180126
patch2

Clearing flags on attachment: 180126

Committed r138936: &lt;http://trac.webkit.org/changeset/138936&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801257</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-07 06:32:57 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176708</attachid>
            <date>2012-11-29 05:17:47 -0800</date>
            <delta_ts>2012-12-17 03:29:37 -0800</delta_ts>
            <desc>patch</desc>
            <filename>unpacking.patch</filename>
            <type>text/plain</type>
            <size>7414</size>
            <attacher name="Gabor Rapcsanyi">rgabor</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNjEyMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDEyLTExLTI5ICBHYWJvciBS
YXBjc2FueWkgIDxyZ2Fib3JAd2Via2l0Lm9yZz4KKworICAgICAgICBPcHRpbWl6aW5nIFJHQkEx
NiwgUkdCMTYsIEFSR0IxNiwgQkdSQTE2IHVucGFja2luZyBmdW5jdGlvbnMgd2l0aCBORU9OIGlu
dHJpbnNpY3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEwMzYxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE9wdGltaXppbmcgUkdCQTE2LCBSR0IxNiwgQVJHQjE2LCBCR1JBMTYgdW5wYWNraW5nIGZ1bmN0
aW9ucyBpbiBHcmFwaGljc0NvbnRleHQzRAorICAgICAgICB3aXRoIEFSTSBORU9OIGludHJpbnNp
Y3MuIFRoZSBvcHRpbWl6ZWQgZnVuY3Rpb25zIGFyZSAyLTN4IGZhc3RlciB0aGFuIHRoZSBvcmln
aW4uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHA6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jcHUvYXJt
L0dyYXBoaWNzQ29udGV4dDNETkVPTi5oOgorICAgICAgICAoV2ViQ29yZTo6QVJNOjp1bnBhY2tP
bmVSb3dPZlJHQkExNkxpdHRsZVRvUkdCQThORU9OKToKKyAgICAgICAgKEFSTSk6CisgICAgICAg
IChXZWJDb3JlOjpBUk06OnVucGFja09uZVJvd09mUkdCMTZMaXR0bGVUb1JHQkE4TkVPTik6Cisg
ICAgICAgIChXZWJDb3JlOjpBUk06OnVucGFja09uZVJvd09mQVJHQjE2TGl0dGxlVG9SR0JBOE5F
T04pOgorICAgICAgICAoV2ViQ29yZTo6QVJNOjp1bnBhY2tPbmVSb3dPZkJHUkExNkxpdHRsZVRv
UkdCQThORU9OKToKKwogMjAxMi0xMS0yOSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJv
dEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEzNjExMS4K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNE
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQzRC5jcHAJKHJldmlzaW9uIDEzNjEyMikKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzY0LDYgKzM2NCwxNyBAQCBuYW1lc3BhY2UgewogCiB2b2lkIHVucGFja09uZVJvd09mUkdCQTE2
TGl0dGxlVG9SR0JBOChjb25zdCB1aW50MTZfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlv
biwgdW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykKIHsKKyNpZiBIQVZFKEFSTV9ORU9OX0lOVFJJ
TlNJQ1MpCisgICAgdW5zaWduZWQgY29tcG9uZW50c1BlclJvdyA9IHBpeGVsc1BlclJvdyAqIDQ7
CisgICAgdW5zaWduZWQgdGFpbENvbXBvbmVudHMgPSBjb21wb25lbnRzUGVyUm93ICUgODsKKyAg
ICB1bnNpZ25lZCBjb21wb25lbnRzU2l6ZSA9IGNvbXBvbmVudHNQZXJSb3cgLSB0YWlsQ29tcG9u
ZW50czsKKworICAgIEFSTTo6dW5wYWNrT25lUm93T2ZSR0JBMTZMaXR0bGVUb1JHQkE4TkVPTihz
b3VyY2UsIGRlc3RpbmF0aW9uLCBjb21wb25lbnRzU2l6ZSk7CisKKyAgICBzb3VyY2UgKz0gY29t
cG9uZW50c1NpemU7CisgICAgZGVzdGluYXRpb24gKz0gY29tcG9uZW50c1NpemU7CisgICAgcGl4
ZWxzUGVyUm93ID0gdGFpbENvbXBvbmVudHMgLyA0OworI2VuZGlmCiAgICAgZm9yICh1bnNpZ25l
ZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewogICAgICAgICBkZXN0aW5hdGlv
blswXSA9IGNvbnZlcnRDb2xvcjE2TGl0dGxlVG84KHNvdXJjZVswXSk7CiAgICAgICAgIGRlc3Rp
bmF0aW9uWzFdID0gY29udmVydENvbG9yMTZMaXR0bGVUbzgoc291cmNlWzFdKTsKQEAgLTQwMCw2
ICs0MTEsMTcgQEAgdm9pZCB1bnBhY2tPbmVSb3dPZlJHQjhUb1JHQkE4KGNvbnN0IHVpbgogCiB2
b2lkIHVucGFja09uZVJvd09mUkdCMTZMaXR0bGVUb1JHQkE4KGNvbnN0IHVpbnQxNl90KiBzb3Vy
Y2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQogewor
I2lmIEhBVkUoQVJNX05FT05fSU5UUklOU0lDUykKKyAgICB1bnNpZ25lZCBjb21wb25lbnRzUGVy
Um93ID0gcGl4ZWxzUGVyUm93ICogMzsKKyAgICB1bnNpZ25lZCB0YWlsQ29tcG9uZW50cyA9IGNv
bXBvbmVudHNQZXJSb3cgJSAyNDsKKyAgICB1bnNpZ25lZCBjb21wb25lbnRzU2l6ZSA9IGNvbXBv
bmVudHNQZXJSb3cgLSB0YWlsQ29tcG9uZW50czsKKworICAgIEFSTTo6dW5wYWNrT25lUm93T2ZS
R0IxNkxpdHRsZVRvUkdCQThORU9OKHNvdXJjZSwgZGVzdGluYXRpb24sIGNvbXBvbmVudHNTaXpl
KTsKKworICAgIHNvdXJjZSArPSBjb21wb25lbnRzU2l6ZTsKKyAgICBkZXN0aW5hdGlvbiArPSBj
b21wb25lbnRzU2l6ZSAvIDMgKiA0OworICAgIHBpeGVsc1BlclJvdyA9IHRhaWxDb21wb25lbnRz
IC8gMzsKKyNlbmRpZgogICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVy
Um93OyArK2kpIHsKICAgICAgICAgZGVzdGluYXRpb25bMF0gPSBjb252ZXJ0Q29sb3IxNkxpdHRs
ZVRvOChzb3VyY2VbMF0pOwogICAgICAgICBkZXN0aW5hdGlvblsxXSA9IGNvbnZlcnRDb2xvcjE2
TGl0dGxlVG84KHNvdXJjZVsxXSk7CkBAIC00NDgsNiArNDcwLDE3IEBAIHZvaWQgdW5wYWNrT25l
Um93T2ZBUkdCOFRvUkdCQTgoY29uc3QgdWkKIAogdm9pZCB1bnBhY2tPbmVSb3dPZkFSR0IxNkxp
dHRsZVRvUkdCQTgoY29uc3QgdWludDE2X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24s
IHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCiB7CisjaWYgSEFWRShBUk1fTkVPTl9JTlRSSU5T
SUNTKQorICAgIHVuc2lnbmVkIGNvbXBvbmVudHNQZXJSb3cgPSBwaXhlbHNQZXJSb3cgKiA0Owor
ICAgIHVuc2lnbmVkIHRhaWxDb21wb25lbnRzID0gY29tcG9uZW50c1BlclJvdyAlIDMyOworICAg
IHVuc2lnbmVkIGNvbXBvbmVudHNTaXplID0gY29tcG9uZW50c1BlclJvdyAtIHRhaWxDb21wb25l
bnRzOworCisgICAgQVJNOjp1bnBhY2tPbmVSb3dPZkFSR0IxNkxpdHRsZVRvUkdCQThORU9OKHNv
dXJjZSwgZGVzdGluYXRpb24sIGNvbXBvbmVudHNTaXplKTsKKworICAgIHNvdXJjZSArPSBjb21w
b25lbnRzU2l6ZTsKKyAgICBkZXN0aW5hdGlvbiArPSBjb21wb25lbnRzU2l6ZTsKKyAgICBwaXhl
bHNQZXJSb3cgPSB0YWlsQ29tcG9uZW50cyAvIDQ7CisjZW5kaWYKICAgICBmb3IgKHVuc2lnbmVk
IGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7CiAgICAgICAgIGRlc3RpbmF0aW9u
WzBdID0gY29udmVydENvbG9yMTZMaXR0bGVUbzgoc291cmNlWzFdKTsKICAgICAgICAgZGVzdGlu
YXRpb25bMV0gPSBjb252ZXJ0Q29sb3IxNkxpdHRsZVRvOChzb3VyY2VbMl0pOwpAQCAtNTAyLDYg
KzUzNSwxNyBAQCB2b2lkIHVucGFja09uZVJvd09mQkdSQThUb1JHQkE4KGNvbnN0IHVpCiAKIHZv
aWQgdW5wYWNrT25lUm93T2ZCR1JBMTZMaXR0bGVUb1JHQkE4KGNvbnN0IHVpbnQxNl90KiBzb3Vy
Y2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQogewor
I2lmIEhBVkUoQVJNX05FT05fSU5UUklOU0lDUykKKyAgICB1bnNpZ25lZCBjb21wb25lbnRzUGVy
Um93ID0gcGl4ZWxzUGVyUm93ICogNDsKKyAgICB1bnNpZ25lZCB0YWlsQ29tcG9uZW50cyA9IGNv
bXBvbmVudHNQZXJSb3cgJSAzMjsKKyAgICB1bnNpZ25lZCBjb21wb25lbnRzU2l6ZSA9IGNvbXBv
bmVudHNQZXJSb3cgLSB0YWlsQ29tcG9uZW50czsKKworICAgIEFSTTo6dW5wYWNrT25lUm93T2ZC
R1JBMTZMaXR0bGVUb1JHQkE4TkVPTihzb3VyY2UsIGRlc3RpbmF0aW9uLCBjb21wb25lbnRzU2l6
ZSk7CisKKyAgICBzb3VyY2UgKz0gY29tcG9uZW50c1NpemU7CisgICAgZGVzdGluYXRpb24gKz0g
Y29tcG9uZW50c1NpemU7CisgICAgcGl4ZWxzUGVyUm93ID0gdGFpbENvbXBvbmVudHMgLyA0Owor
I2VuZGlmCiAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsr
aSkgewogICAgICAgICBkZXN0aW5hdGlvblswXSA9IGNvbnZlcnRDb2xvcjE2TGl0dGxlVG84KHNv
dXJjZVsyXSk7CiAgICAgICAgIGRlc3RpbmF0aW9uWzFdID0gY29udmVydENvbG9yMTZMaXR0bGVU
bzgoc291cmNlWzFdKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nw
dS9hcm0vR3JhcGhpY3NDb250ZXh0M0RORU9OLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3B1L2FybS9HcmFwaGljc0NvbnRleHQzRE5FT04uaAkocmV2
aXNpb24gMTM2MTIyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3B1L2Fy
bS9HcmFwaGljc0NvbnRleHQzRE5FT04uaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNTUg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgQVJNIHsKIAorQUxXQVlTX0lOTElO
RSB2b2lkIHVucGFja09uZVJvd09mUkdCQTE2TGl0dGxlVG9SR0JBOE5FT04oY29uc3QgdWludDE2
X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGNvbXBvbmVudHNTaXpl
KQoreworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb21wb25lbnRzU2l6ZTsgaSArPSA4
KSB7CisgICAgICAgIHVpbnQxNng4X3QgZWlnaHRDb21wb25lbnRzID0gdmxkMXFfdTE2KHNvdXJj
ZSArIGkpOworICAgICAgICBlaWdodENvbXBvbmVudHMgPSB2c2hycV9uX3UxNihlaWdodENvbXBv
bmVudHMsIDgpOworICAgICAgICB2c3QxX3U4KGRlc3RpbmF0aW9uICsgaSwgdnFtb3ZuX3UxNihl
aWdodENvbXBvbmVudHMpKTsKKyAgICB9Cit9CisKK0FMV0FZU19JTkxJTkUgdm9pZCB1bnBhY2tP
bmVSb3dPZlJHQjE2TGl0dGxlVG9SR0JBOE5FT04oY29uc3QgdWludDE2X3QqIHNvdXJjZSwgdWlu
dDhfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGNvbXBvbmVudHNTaXplKQoreworICAgIHVpbnQ4
eDhfdCBjb21wb25lbnRBID0gdmR1cF9uX3U4KDB4RkYpOworICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBjb21wb25lbnRzU2l6ZTsgaSArPSAyNCkgeworICAgICAgICB1aW50MTZ4OHgzX3Qg
UkdCMTYgPSB2bGQzcV91MTYoc291cmNlICsgaSk7CisgICAgICAgIHVpbnQ4eDhfdCBjb21wb25l
bnRSID0gdnFtb3ZuX3UxNih2c2hycV9uX3UxNihSR0IxNi52YWxbMF0sIDgpKTsKKyAgICAgICAg
dWludDh4OF90IGNvbXBvbmVudEcgPSB2cW1vdm5fdTE2KHZzaHJxX25fdTE2KFJHQjE2LnZhbFsx
XSwgOCkpOworICAgICAgICB1aW50OHg4X3QgY29tcG9uZW50QiA9IHZxbW92bl91MTYodnNocnFf
bl91MTYoUkdCMTYudmFsWzJdLCA4KSk7CisgICAgICAgIHVpbnQ4eDh4NF90IFJHQkE4ID0ge3tj
b21wb25lbnRSLCBjb21wb25lbnRHLCBjb21wb25lbnRCLCBjb21wb25lbnRBfX07CisgICAgICAg
IHZzdDRfdTgoZGVzdGluYXRpb24sIFJHQkE4KTsKKyAgICAgICAgZGVzdGluYXRpb24gKz0gMzI7
CisgICAgfQorfQorCitBTFdBWVNfSU5MSU5FIHZvaWQgdW5wYWNrT25lUm93T2ZBUkdCMTZMaXR0
bGVUb1JHQkE4TkVPTihjb25zdCB1aW50MTZfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlv
biwgdW5zaWduZWQgY29tcG9uZW50c1NpemUpCit7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGNvbXBvbmVudHNTaXplOyBpICs9IDMyKSB7CisgICAgICAgIHVpbnQxNng4eDRfdCBBUkdC
MTYgPSB2bGQ0cV91MTYoc291cmNlICsgaSk7CisgICAgICAgIHVpbnQ4eDhfdCBjb21wb25lbnRB
ID0gdnFtb3ZuX3UxNih2c2hycV9uX3UxNihBUkdCMTYudmFsWzBdLCA4KSk7CisgICAgICAgIHVp
bnQ4eDhfdCBjb21wb25lbnRSID0gdnFtb3ZuX3UxNih2c2hycV9uX3UxNihBUkdCMTYudmFsWzFd
LCA4KSk7CisgICAgICAgIHVpbnQ4eDhfdCBjb21wb25lbnRHID0gdnFtb3ZuX3UxNih2c2hycV9u
X3UxNihBUkdCMTYudmFsWzJdLCA4KSk7CisgICAgICAgIHVpbnQ4eDhfdCBjb21wb25lbnRCID0g
dnFtb3ZuX3UxNih2c2hycV9uX3UxNihBUkdCMTYudmFsWzNdLCA4KSk7CisgICAgICAgIHVpbnQ4
eDh4NF90IFJHQkE4ID0ge3tjb21wb25lbnRSLCBjb21wb25lbnRHLCBjb21wb25lbnRCLCBjb21w
b25lbnRBfX07CisgICAgICAgIHZzdDRfdTgoZGVzdGluYXRpb24gKyBpLCBSR0JBOCk7CisgICAg
fQorfQorCitBTFdBWVNfSU5MSU5FIHZvaWQgdW5wYWNrT25lUm93T2ZCR1JBMTZMaXR0bGVUb1JH
QkE4TkVPTihjb25zdCB1aW50MTZfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5z
aWduZWQgY29tcG9uZW50c1NpemUpCit7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNv
bXBvbmVudHNTaXplOyBpICs9IDMyKSB7CisgICAgICAgIHVpbnQxNng4eDRfdCBBUkdCMTYgPSB2
bGQ0cV91MTYoc291cmNlICsgaSk7CisgICAgICAgIHVpbnQ4eDhfdCBjb21wb25lbnRCID0gdnFt
b3ZuX3UxNih2c2hycV9uX3UxNihBUkdCMTYudmFsWzBdLCA4KSk7CisgICAgICAgIHVpbnQ4eDhf
dCBjb21wb25lbnRHID0gdnFtb3ZuX3UxNih2c2hycV9uX3UxNihBUkdCMTYudmFsWzFdLCA4KSk7
CisgICAgICAgIHVpbnQ4eDhfdCBjb21wb25lbnRSID0gdnFtb3ZuX3UxNih2c2hycV9uX3UxNihB
UkdCMTYudmFsWzJdLCA4KSk7CisgICAgICAgIHVpbnQ4eDhfdCBjb21wb25lbnRBID0gdnFtb3Zu
X3UxNih2c2hycV9uX3UxNihBUkdCMTYudmFsWzNdLCA4KSk7CisgICAgICAgIHVpbnQ4eDh4NF90
IFJHQkE4ID0ge3tjb21wb25lbnRSLCBjb21wb25lbnRHLCBjb21wb25lbnRCLCBjb21wb25lbnRB
fX07CisgICAgICAgIHZzdDRfdTgoZGVzdGluYXRpb24gKyBpLCBSR0JBOCk7CisgICAgfQorfQor
CiBBTFdBWVNfSU5MSU5FIHZvaWQgdW5wYWNrT25lUm93T2ZSR0JBNDQ0NFRvUkdCQThORU9OKGNv
bnN0IHVpbnQxNl90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhl
bFNpemUpCiB7CiAgICAgdWludDE2eDhfdCBpbW1lZGlhdGUweDBmID0gdmR1cHFfbl91MTYoMHgw
Rik7Cg==
</data>
<flag name="review"
          id="192571"
          type_id="1"
          status="-"
          setter="zherczeg"
    />
    <flag name="commit-queue"
          id="192572"
          type_id="3"
          status="-"
          setter="zherczeg"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179710</attachid>
            <date>2012-12-17 03:29:37 -0800</date>
            <delta_ts>2012-12-19 03:33:47 -0800</delta_ts>
            <desc>modified patch</desc>
            <filename>unpacking.patch</filename>
            <type>text/plain</type>
            <size>7402</size>
            <attacher name="Gabor Rapcsanyi">rgabor</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiODVlZDFiLi40MzQ1OGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIg
QEAKKzIwMTItMTItMTcgIEdhYm9yIFJhcGNzYW55aSAgPHJnYWJvckB3ZWJraXQub3JnPgorCisg
ICAgICAgIE9wdGltaXppbmcgUkdCQTE2LCBSR0IxNiwgQVJHQjE2LCBCR1JBMTYgdW5wYWNraW5n
IGZ1bmN0aW9ucyB3aXRoIE5FT04gaW50cmluc2ljcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzNjE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgT3B0aW1pemluZyBSR0JBMTYsIFJHQjE2LCBBUkdCMTYs
IEJHUkExNiB1bnBhY2tpbmcgZnVuY3Rpb25zIGluIEdyYXBoaWNzQ29udGV4dDNECisgICAgICAg
IHdpdGggQVJNIE5FT04gaW50cmluc2ljcy4gVGhlIG9wdGltaXplZCBmdW5jdGlvbnMgYXJlIDIt
M3ggZmFzdGVyIHRoYW4gdGhlIG9yaWdpbi4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dDNELmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NwdS9hcm0vR3JhcGhpY3NDb250ZXh0M0RORU9OLmg6CisgICAgICAg
IChXZWJDb3JlOjpTSU1EOjp1bnBhY2tPbmVSb3dPZlJHQkExNkxpdHRsZVRvUkdCQTgpOgorICAg
ICAgICAoU0lNRCk6CisgICAgICAgIChXZWJDb3JlOjpTSU1EOjp1bnBhY2tPbmVSb3dPZlJHQjE2
TGl0dGxlVG9SR0JBOCk6CisgICAgICAgIChXZWJDb3JlOjpTSU1EOjp1bnBhY2tPbmVSb3dPZkFS
R0IxNkxpdHRsZVRvUkdCQTgpOgorICAgICAgICAoV2ViQ29yZTo6U0lNRDo6dW5wYWNrT25lUm93
T2ZCR1JBMTZMaXR0bGVUb1JHQkE4KToKKwogMjAxMi0xMi0xNyAgS2VudGFybyBIYXJhICA8aGFy
YWtlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEz
Njc5NC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dDNELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dDNELmNwcAppbmRleCBmMzAyNTVjLi43NjY5MDE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwCkBA
IC0zOTIsNiArMzkyLDkgQEAgbmFtZXNwYWNlIHsKIAogdm9pZCB1bnBhY2tPbmVSb3dPZlJHQkEx
NkxpdHRsZVRvUkdCQTgoY29uc3QgdWludDE2X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRp
b24sIHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCiB7CisjaWYgSEFWRShBUk1fTkVPTl9JTlRS
SU5TSUNTKQorICAgIFNJTUQ6OnVucGFja09uZVJvd09mUkdCQTE2TGl0dGxlVG9SR0JBOChzb3Vy
Y2UsIGRlc3RpbmF0aW9uLCBwaXhlbHNQZXJSb3cpOworI2VuZGlmCiAgICAgZm9yICh1bnNpZ25l
ZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewogICAgICAgICBkZXN0aW5hdGlv
blswXSA9IGNvbnZlcnRDb2xvcjE2TGl0dGxlVG84KHNvdXJjZVswXSk7CiAgICAgICAgIGRlc3Rp
bmF0aW9uWzFdID0gY29udmVydENvbG9yMTZMaXR0bGVUbzgoc291cmNlWzFdKTsKQEAgLTQyOCw2
ICs0MzEsOSBAQCB2b2lkIHVucGFja09uZVJvd09mUkdCOFRvUkdCQTgoY29uc3QgdWludDhfdCog
c291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaQogCiB2b2lkIHVucGFja09uZVJvd09m
UkdCMTZMaXR0bGVUb1JHQkE4KGNvbnN0IHVpbnQxNl90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3Rp
bmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQogeworI2lmIEhBVkUoQVJNX05FT05f
SU5UUklOU0lDUykKKyAgICBTSU1EOjp1bnBhY2tPbmVSb3dPZlJHQjE2TGl0dGxlVG9SR0JBOChz
b3VyY2UsIGRlc3RpbmF0aW9uLCBwaXhlbHNQZXJSb3cpOworI2VuZGlmCiAgICAgZm9yICh1bnNp
Z25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewogICAgICAgICBkZXN0aW5h
dGlvblswXSA9IGNvbnZlcnRDb2xvcjE2TGl0dGxlVG84KHNvdXJjZVswXSk7CiAgICAgICAgIGRl
c3RpbmF0aW9uWzFdID0gY29udmVydENvbG9yMTZMaXR0bGVUbzgoc291cmNlWzFdKTsKQEAgLTQ3
Niw2ICs0ODIsOSBAQCB2b2lkIHVucGFja09uZVJvd09mQVJHQjhUb1JHQkE4KGNvbnN0IHVpbnQ4
X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVucwogCiB2b2lkIHVucGFja09uZVJv
d09mQVJHQjE2TGl0dGxlVG9SR0JBOChjb25zdCB1aW50MTZfdCogc291cmNlLCB1aW50OF90KiBk
ZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykKIHsKKyNpZiBIQVZFKEFSTV9O
RU9OX0lOVFJJTlNJQ1MpCisgICAgU0lNRDo6dW5wYWNrT25lUm93T2ZBUkdCMTZMaXR0bGVUb1JH
QkE4KHNvdXJjZSwgZGVzdGluYXRpb24sIHBpeGVsc1BlclJvdyk7CisjZW5kaWYKICAgICBmb3Ig
KHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7CiAgICAgICAgIGRl
c3RpbmF0aW9uWzBdID0gY29udmVydENvbG9yMTZMaXR0bGVUbzgoc291cmNlWzFdKTsKICAgICAg
ICAgZGVzdGluYXRpb25bMV0gPSBjb252ZXJ0Q29sb3IxNkxpdHRsZVRvOChzb3VyY2VbMl0pOwpA
QCAtNTMwLDYgKzUzOSw5IEBAIHZvaWQgdW5wYWNrT25lUm93T2ZCR1JBOFRvUkdCQTgoY29uc3Qg
dWludDhfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zCiAKIHZvaWQgdW5wYWNr
T25lUm93T2ZCR1JBMTZMaXR0bGVUb1JHQkE4KGNvbnN0IHVpbnQxNl90KiBzb3VyY2UsIHVpbnQ4
X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQogeworI2lmIEhBVkUo
QVJNX05FT05fSU5UUklOU0lDUykKKyAgICBTSU1EOjp1bnBhY2tPbmVSb3dPZkJHUkExNkxpdHRs
ZVRvUkdCQTgoc291cmNlLCBkZXN0aW5hdGlvbiwgcGl4ZWxzUGVyUm93KTsKKyNlbmRpZgogICAg
IGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKICAgICAg
ICAgZGVzdGluYXRpb25bMF0gPSBjb252ZXJ0Q29sb3IxNkxpdHRsZVRvOChzb3VyY2VbMl0pOwog
ICAgICAgICBkZXN0aW5hdGlvblsxXSA9IGNvbnZlcnRDb2xvcjE2TGl0dGxlVG84KHNvdXJjZVsx
XSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jcHUvYXJt
L0dyYXBoaWNzQ29udGV4dDNETkVPTi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY3B1L2FybS9HcmFwaGljc0NvbnRleHQzRE5FT04uaAppbmRleCA5ZjM4NzI0Li40MjVmMjhm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jcHUvYXJtL0dy
YXBoaWNzQ29udGV4dDNETkVPTi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NwdS9hcm0vR3JhcGhpY3NDb250ZXh0M0RORU9OLmgKQEAgLTM0LDYgKzM0LDg2IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIFNJTUQgewogCitBTFdBWVNfSU5MSU5FIHZv
aWQgdW5wYWNrT25lUm93T2ZSR0JBMTZMaXR0bGVUb1JHQkE4KGNvbnN0IHVpbnQxNl90KiYgc291
cmNlLCB1aW50OF90KiYgZGVzdGluYXRpb24sIHVuc2lnbmVkJiBwaXhlbHNQZXJSb3cpCit7Cisg
ICAgdW5zaWduZWQgY29tcG9uZW50c1BlclJvdyA9IHBpeGVsc1BlclJvdyAqIDQ7CisgICAgdW5z
aWduZWQgdGFpbENvbXBvbmVudHMgPSBjb21wb25lbnRzUGVyUm93ICUgODsKKyAgICB1bnNpZ25l
ZCBjb21wb25lbnRzU2l6ZSA9IGNvbXBvbmVudHNQZXJSb3cgLSB0YWlsQ29tcG9uZW50czsKKwor
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb21wb25lbnRzU2l6ZTsgaSArPSA4KSB7Cisg
ICAgICAgIHVpbnQxNng4X3QgZWlnaHRDb21wb25lbnRzID0gdmxkMXFfdTE2KHNvdXJjZSArIGkp
OworICAgICAgICBlaWdodENvbXBvbmVudHMgPSB2c2hycV9uX3UxNihlaWdodENvbXBvbmVudHMs
IDgpOworICAgICAgICB2c3QxX3U4KGRlc3RpbmF0aW9uICsgaSwgdnFtb3ZuX3UxNihlaWdodENv
bXBvbmVudHMpKTsKKyAgICB9CisKKyAgICBzb3VyY2UgKz0gY29tcG9uZW50c1NpemU7CisgICAg
ZGVzdGluYXRpb24gKz0gY29tcG9uZW50c1NpemU7CisgICAgcGl4ZWxzUGVyUm93ID0gdGFpbENv
bXBvbmVudHMgLyA0OworfQorCitBTFdBWVNfSU5MSU5FIHZvaWQgdW5wYWNrT25lUm93T2ZSR0Ix
NkxpdHRsZVRvUkdCQTgoY29uc3QgdWludDE2X3QqJiBzb3VyY2UsIHVpbnQ4X3QqJiBkZXN0aW5h
dGlvbiwgdW5zaWduZWQmIHBpeGVsc1BlclJvdykKK3sKKyAgICB1bnNpZ25lZCBjb21wb25lbnRz
UGVyUm93ID0gcGl4ZWxzUGVyUm93ICogMzsKKyAgICB1bnNpZ25lZCB0YWlsQ29tcG9uZW50cyA9
IGNvbXBvbmVudHNQZXJSb3cgJSAyNDsKKyAgICB1bnNpZ25lZCBjb21wb25lbnRzU2l6ZSA9IGNv
bXBvbmVudHNQZXJSb3cgLSB0YWlsQ29tcG9uZW50czsKKworICAgIHVpbnQ4eDhfdCBjb21wb25l
bnRBID0gdmR1cF9uX3U4KDB4RkYpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb21w
b25lbnRzU2l6ZTsgaSArPSAyNCkgeworICAgICAgICB1aW50MTZ4OHgzX3QgUkdCMTYgPSB2bGQz
cV91MTYoc291cmNlICsgaSk7CisgICAgICAgIHVpbnQ4eDhfdCBjb21wb25lbnRSID0gdnFtb3Zu
X3UxNih2c2hycV9uX3UxNihSR0IxNi52YWxbMF0sIDgpKTsKKyAgICAgICAgdWludDh4OF90IGNv
bXBvbmVudEcgPSB2cW1vdm5fdTE2KHZzaHJxX25fdTE2KFJHQjE2LnZhbFsxXSwgOCkpOworICAg
ICAgICB1aW50OHg4X3QgY29tcG9uZW50QiA9IHZxbW92bl91MTYodnNocnFfbl91MTYoUkdCMTYu
dmFsWzJdLCA4KSk7CisgICAgICAgIHVpbnQ4eDh4NF90IFJHQkE4ID0ge3tjb21wb25lbnRSLCBj
b21wb25lbnRHLCBjb21wb25lbnRCLCBjb21wb25lbnRBfX07CisgICAgICAgIHZzdDRfdTgoZGVz
dGluYXRpb24sIFJHQkE4KTsKKyAgICAgICAgZGVzdGluYXRpb24gKz0gMzI7CisgICAgfQorCisg
ICAgc291cmNlICs9IGNvbXBvbmVudHNTaXplOworICAgIHBpeGVsc1BlclJvdyA9IHRhaWxDb21w
b25lbnRzIC8gMzsKK30KKworQUxXQVlTX0lOTElORSB2b2lkIHVucGFja09uZVJvd09mQVJHQjE2
TGl0dGxlVG9SR0JBOChjb25zdCB1aW50MTZfdComIHNvdXJjZSwgdWludDhfdComIGRlc3RpbmF0
aW9uLCB1bnNpZ25lZCYgcGl4ZWxzUGVyUm93KQoreworICAgIHVuc2lnbmVkIGNvbXBvbmVudHNQ
ZXJSb3cgPSBwaXhlbHNQZXJSb3cgKiA0OworICAgIHVuc2lnbmVkIHRhaWxDb21wb25lbnRzID0g
Y29tcG9uZW50c1BlclJvdyAlIDMyOworICAgIHVuc2lnbmVkIGNvbXBvbmVudHNTaXplID0gY29t
cG9uZW50c1BlclJvdyAtIHRhaWxDb21wb25lbnRzOworCisgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGNvbXBvbmVudHNTaXplOyBpICs9IDMyKSB7CisgICAgICAgIHVpbnQxNng4eDRfdCBB
UkdCMTYgPSB2bGQ0cV91MTYoc291cmNlICsgaSk7CisgICAgICAgIHVpbnQ4eDhfdCBjb21wb25l
bnRBID0gdnFtb3ZuX3UxNih2c2hycV9uX3UxNihBUkdCMTYudmFsWzBdLCA4KSk7CisgICAgICAg
IHVpbnQ4eDhfdCBjb21wb25lbnRSID0gdnFtb3ZuX3UxNih2c2hycV9uX3UxNihBUkdCMTYudmFs
WzFdLCA4KSk7CisgICAgICAgIHVpbnQ4eDhfdCBjb21wb25lbnRHID0gdnFtb3ZuX3UxNih2c2hy
cV9uX3UxNihBUkdCMTYudmFsWzJdLCA4KSk7CisgICAgICAgIHVpbnQ4eDhfdCBjb21wb25lbnRC
ID0gdnFtb3ZuX3UxNih2c2hycV9uX3UxNihBUkdCMTYudmFsWzNdLCA4KSk7CisgICAgICAgIHVp
bnQ4eDh4NF90IFJHQkE4ID0ge3tjb21wb25lbnRSLCBjb21wb25lbnRHLCBjb21wb25lbnRCLCBj
b21wb25lbnRBfX07CisgICAgICAgIHZzdDRfdTgoZGVzdGluYXRpb24gKyBpLCBSR0JBOCk7Cisg
ICAgfQorCisgICAgc291cmNlICs9IGNvbXBvbmVudHNTaXplOworICAgIGRlc3RpbmF0aW9uICs9
IGNvbXBvbmVudHNTaXplOworICAgIHBpeGVsc1BlclJvdyA9IHRhaWxDb21wb25lbnRzIC8gNDsK
K30KKworQUxXQVlTX0lOTElORSB2b2lkIHVucGFja09uZVJvd09mQkdSQTE2TGl0dGxlVG9SR0JB
OChjb25zdCB1aW50MTZfdComIHNvdXJjZSwgdWludDhfdComIGRlc3RpbmF0aW9uLCB1bnNpZ25l
ZCYgcGl4ZWxzUGVyUm93KQoreworICAgIHVuc2lnbmVkIGNvbXBvbmVudHNQZXJSb3cgPSBwaXhl
bHNQZXJSb3cgKiA0OworICAgIHVuc2lnbmVkIHRhaWxDb21wb25lbnRzID0gY29tcG9uZW50c1Bl
clJvdyAlIDMyOworICAgIHVuc2lnbmVkIGNvbXBvbmVudHNTaXplID0gY29tcG9uZW50c1BlclJv
dyAtIHRhaWxDb21wb25lbnRzOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvbXBv
bmVudHNTaXplOyBpICs9IDMyKSB7CisgICAgICAgIHVpbnQxNng4eDRfdCBBUkdCMTYgPSB2bGQ0
cV91MTYoc291cmNlICsgaSk7CisgICAgICAgIHVpbnQ4eDhfdCBjb21wb25lbnRCID0gdnFtb3Zu
X3UxNih2c2hycV9uX3UxNihBUkdCMTYudmFsWzBdLCA4KSk7CisgICAgICAgIHVpbnQ4eDhfdCBj
b21wb25lbnRHID0gdnFtb3ZuX3UxNih2c2hycV9uX3UxNihBUkdCMTYudmFsWzFdLCA4KSk7Cisg
ICAgICAgIHVpbnQ4eDhfdCBjb21wb25lbnRSID0gdnFtb3ZuX3UxNih2c2hycV9uX3UxNihBUkdC
MTYudmFsWzJdLCA4KSk7CisgICAgICAgIHVpbnQ4eDhfdCBjb21wb25lbnRBID0gdnFtb3ZuX3Ux
Nih2c2hycV9uX3UxNihBUkdCMTYudmFsWzNdLCA4KSk7CisgICAgICAgIHVpbnQ4eDh4NF90IFJH
QkE4ID0ge3tjb21wb25lbnRSLCBjb21wb25lbnRHLCBjb21wb25lbnRCLCBjb21wb25lbnRBfX07
CisgICAgICAgIHZzdDRfdTgoZGVzdGluYXRpb24gKyBpLCBSR0JBOCk7CisgICAgfQorCisgICAg
c291cmNlICs9IGNvbXBvbmVudHNTaXplOworICAgIGRlc3RpbmF0aW9uICs9IGNvbXBvbmVudHNT
aXplOworICAgIHBpeGVsc1BlclJvdyA9IHRhaWxDb21wb25lbnRzIC8gNDsKK30KKwogQUxXQVlT
X0lOTElORSB2b2lkIHVucGFja09uZVJvd09mUkdCQTQ0NDRUb1JHQkE4KGNvbnN0IHVpbnQxNl90
KiYgc291cmNlLCB1aW50OF90KiYgZGVzdGluYXRpb24sIHVuc2lnbmVkJiBwaXhlbHNQZXJSb3cp
CiB7CiAgICAgdW5zaWduZWQgdGFpbFBpeGVscyA9IHBpeGVsc1BlclJvdyAlIDg7Cg==
</data>
<flag name="review"
          id="196693"
          type_id="1"
          status="-"
          setter="zherczeg"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180126</attachid>
            <date>2012-12-19 03:33:47 -0800</date>
            <delta_ts>2013-01-07 06:32:52 -0800</delta_ts>
            <desc>patch2</desc>
            <filename>unpacking.patch7</filename>
            <type>text/plain</type>
            <size>7400</size>
            <attacher name="Gabor Rapcsanyi">rgabor</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiODVlZDFiLi40MzQ1OGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIg
QEAKKzIwMTItMTItMTcgIEdhYm9yIFJhcGNzYW55aSAgPHJnYWJvckB3ZWJraXQub3JnPgorCisg
ICAgICAgIE9wdGltaXppbmcgUkdCQTE2LCBSR0IxNiwgQVJHQjE2LCBCR1JBMTYgdW5wYWNraW5n
IGZ1bmN0aW9ucyB3aXRoIE5FT04gaW50cmluc2ljcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzNjE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgT3B0aW1pemluZyBSR0JBMTYsIFJHQjE2LCBBUkdCMTYs
IEJHUkExNiB1bnBhY2tpbmcgZnVuY3Rpb25zIGluIEdyYXBoaWNzQ29udGV4dDNECisgICAgICAg
IHdpdGggQVJNIE5FT04gaW50cmluc2ljcy4gVGhlIG9wdGltaXplZCBmdW5jdGlvbnMgYXJlIDIt
M3ggZmFzdGVyIHRoYW4gdGhlIG9yaWdpbi4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dDNELmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NwdS9hcm0vR3JhcGhpY3NDb250ZXh0M0RORU9OLmg6CisgICAgICAg
IChXZWJDb3JlOjpTSU1EOjp1bnBhY2tPbmVSb3dPZlJHQkExNkxpdHRsZVRvUkdCQTgpOgorICAg
ICAgICAoU0lNRCk6CisgICAgICAgIChXZWJDb3JlOjpTSU1EOjp1bnBhY2tPbmVSb3dPZlJHQjE2
TGl0dGxlVG9SR0JBOCk6CisgICAgICAgIChXZWJDb3JlOjpTSU1EOjp1bnBhY2tPbmVSb3dPZkFS
R0IxNkxpdHRsZVRvUkdCQTgpOgorICAgICAgICAoV2ViQ29yZTo6U0lNRDo6dW5wYWNrT25lUm93
T2ZCR1JBMTZMaXR0bGVUb1JHQkE4KToKKwogMjAxMi0xMi0xNyAgS2VudGFybyBIYXJhICA8aGFy
YWtlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEz
Njc5NC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dDNELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dDNELmNwcAppbmRleCBmMzAyNTVjLi43NjY5MDE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwCkBA
IC0zOTIsNiArMzkyLDkgQEAgbmFtZXNwYWNlIHsKIAogdm9pZCB1bnBhY2tPbmVSb3dPZlJHQkEx
NkxpdHRsZVRvUkdCQTgoY29uc3QgdWludDE2X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRp
b24sIHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCiB7CisjaWYgSEFWRShBUk1fTkVPTl9JTlRS
SU5TSUNTKQorICAgIFNJTUQ6OnVucGFja09uZVJvd09mUkdCQTE2TGl0dGxlVG9SR0JBOChzb3Vy
Y2UsIGRlc3RpbmF0aW9uLCBwaXhlbHNQZXJSb3cpOworI2VuZGlmCiAgICAgZm9yICh1bnNpZ25l
ZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewogICAgICAgICBkZXN0aW5hdGlv
blswXSA9IGNvbnZlcnRDb2xvcjE2TGl0dGxlVG84KHNvdXJjZVswXSk7CiAgICAgICAgIGRlc3Rp
bmF0aW9uWzFdID0gY29udmVydENvbG9yMTZMaXR0bGVUbzgoc291cmNlWzFdKTsKQEAgLTQyOCw2
ICs0MzEsOSBAQCB2b2lkIHVucGFja09uZVJvd09mUkdCOFRvUkdCQTgoY29uc3QgdWludDhfdCog
c291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaQogCiB2b2lkIHVucGFja09uZVJvd09m
UkdCMTZMaXR0bGVUb1JHQkE4KGNvbnN0IHVpbnQxNl90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3Rp
bmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQogeworI2lmIEhBVkUoQVJNX05FT05f
SU5UUklOU0lDUykKKyAgICBTSU1EOjp1bnBhY2tPbmVSb3dPZlJHQjE2TGl0dGxlVG9SR0JBOChz
b3VyY2UsIGRlc3RpbmF0aW9uLCBwaXhlbHNQZXJSb3cpOworI2VuZGlmCiAgICAgZm9yICh1bnNp
Z25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewogICAgICAgICBkZXN0aW5h
dGlvblswXSA9IGNvbnZlcnRDb2xvcjE2TGl0dGxlVG84KHNvdXJjZVswXSk7CiAgICAgICAgIGRl
c3RpbmF0aW9uWzFdID0gY29udmVydENvbG9yMTZMaXR0bGVUbzgoc291cmNlWzFdKTsKQEAgLTQ3
Niw2ICs0ODIsOSBAQCB2b2lkIHVucGFja09uZVJvd09mQVJHQjhUb1JHQkE4KGNvbnN0IHVpbnQ4
X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVucwogCiB2b2lkIHVucGFja09uZVJv
d09mQVJHQjE2TGl0dGxlVG9SR0JBOChjb25zdCB1aW50MTZfdCogc291cmNlLCB1aW50OF90KiBk
ZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykKIHsKKyNpZiBIQVZFKEFSTV9O
RU9OX0lOVFJJTlNJQ1MpCisgICAgU0lNRDo6dW5wYWNrT25lUm93T2ZBUkdCMTZMaXR0bGVUb1JH
QkE4KHNvdXJjZSwgZGVzdGluYXRpb24sIHBpeGVsc1BlclJvdyk7CisjZW5kaWYKICAgICBmb3Ig
KHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7CiAgICAgICAgIGRl
c3RpbmF0aW9uWzBdID0gY29udmVydENvbG9yMTZMaXR0bGVUbzgoc291cmNlWzFdKTsKICAgICAg
ICAgZGVzdGluYXRpb25bMV0gPSBjb252ZXJ0Q29sb3IxNkxpdHRsZVRvOChzb3VyY2VbMl0pOwpA
QCAtNTMwLDYgKzUzOSw5IEBAIHZvaWQgdW5wYWNrT25lUm93T2ZCR1JBOFRvUkdCQTgoY29uc3Qg
dWludDhfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zCiAKIHZvaWQgdW5wYWNr
T25lUm93T2ZCR1JBMTZMaXR0bGVUb1JHQkE4KGNvbnN0IHVpbnQxNl90KiBzb3VyY2UsIHVpbnQ4
X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQogeworI2lmIEhBVkUo
QVJNX05FT05fSU5UUklOU0lDUykKKyAgICBTSU1EOjp1bnBhY2tPbmVSb3dPZkJHUkExNkxpdHRs
ZVRvUkdCQTgoc291cmNlLCBkZXN0aW5hdGlvbiwgcGl4ZWxzUGVyUm93KTsKKyNlbmRpZgogICAg
IGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKICAgICAg
ICAgZGVzdGluYXRpb25bMF0gPSBjb252ZXJ0Q29sb3IxNkxpdHRsZVRvOChzb3VyY2VbMl0pOwog
ICAgICAgICBkZXN0aW5hdGlvblsxXSA9IGNvbnZlcnRDb2xvcjE2TGl0dGxlVG84KHNvdXJjZVsx
XSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jcHUvYXJt
L0dyYXBoaWNzQ29udGV4dDNETkVPTi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY3B1L2FybS9HcmFwaGljc0NvbnRleHQzRE5FT04uaAppbmRleCA5ZjM4NzI0Li5jMDQzZmVk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jcHUvYXJtL0dy
YXBoaWNzQ29udGV4dDNETkVPTi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NwdS9hcm0vR3JhcGhpY3NDb250ZXh0M0RORU9OLmgKQEAgLTM0LDYgKzM0LDg2IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIFNJTUQgewogCitBTFdBWVNfSU5MSU5FIHZv
aWQgdW5wYWNrT25lUm93T2ZSR0JBMTZMaXR0bGVUb1JHQkE4KGNvbnN0IHVpbnQxNl90KiYgc291
cmNlLCB1aW50OF90KiYgZGVzdGluYXRpb24sIHVuc2lnbmVkJiBwaXhlbHNQZXJSb3cpCit7Cisg
ICAgdW5zaWduZWQgY29tcG9uZW50c1BlclJvdyA9IHBpeGVsc1BlclJvdyAqIDQ7CisgICAgdW5z
aWduZWQgdGFpbENvbXBvbmVudHMgPSBjb21wb25lbnRzUGVyUm93ICUgMTY7CisgICAgdW5zaWdu
ZWQgY29tcG9uZW50c1NpemUgPSBjb21wb25lbnRzUGVyUm93IC0gdGFpbENvbXBvbmVudHM7Cisg
ICAgY29uc3QgdWludDhfdCogc3JjID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
c291cmNlKTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb21wb25lbnRzU2l6ZTsg
aSArPSAxNikgeworICAgICAgICB1aW50OHgxNngyX3QgY29tcG9uZW50cyA9IHZsZDJxX3U4KHNy
YyArIGkgKiAyKTsKKyAgICAgICAgdnN0MXFfdTgoZGVzdGluYXRpb24gKyBpLCBjb21wb25lbnRz
LnZhbFsxXSk7CisgICAgfQorCisgICAgc291cmNlICs9IGNvbXBvbmVudHNTaXplOworICAgIGRl
c3RpbmF0aW9uICs9IGNvbXBvbmVudHNTaXplOworICAgIHBpeGVsc1BlclJvdyA9IHRhaWxDb21w
b25lbnRzIC8gNDsKK30KKworQUxXQVlTX0lOTElORSB2b2lkIHVucGFja09uZVJvd09mUkdCMTZM
aXR0bGVUb1JHQkE4KGNvbnN0IHVpbnQxNl90KiYgc291cmNlLCB1aW50OF90KiYgZGVzdGluYXRp
b24sIHVuc2lnbmVkJiBwaXhlbHNQZXJSb3cpCit7CisgICAgdW5zaWduZWQgY29tcG9uZW50c1Bl
clJvdyA9IHBpeGVsc1BlclJvdyAqIDM7CisgICAgdW5zaWduZWQgdGFpbENvbXBvbmVudHMgPSBj
b21wb25lbnRzUGVyUm93ICUgMjQ7CisgICAgdW5zaWduZWQgY29tcG9uZW50c1NpemUgPSBjb21w
b25lbnRzUGVyUm93IC0gdGFpbENvbXBvbmVudHM7CisKKyAgICB1aW50OHg4X3QgY29tcG9uZW50
QSA9IHZkdXBfbl91OCgweEZGKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY29tcG9u
ZW50c1NpemU7IGkgKz0gMjQpIHsKKyAgICAgICAgdWludDE2eDh4M190IFJHQjE2ID0gdmxkM3Ff
dTE2KHNvdXJjZSArIGkpOworICAgICAgICB1aW50OHg4X3QgY29tcG9uZW50UiA9IHZxbW92bl91
MTYodnNocnFfbl91MTYoUkdCMTYudmFsWzBdLCA4KSk7CisgICAgICAgIHVpbnQ4eDhfdCBjb21w
b25lbnRHID0gdnFtb3ZuX3UxNih2c2hycV9uX3UxNihSR0IxNi52YWxbMV0sIDgpKTsKKyAgICAg
ICAgdWludDh4OF90IGNvbXBvbmVudEIgPSB2cW1vdm5fdTE2KHZzaHJxX25fdTE2KFJHQjE2LnZh
bFsyXSwgOCkpOworICAgICAgICB1aW50OHg4eDRfdCBSR0JBOCA9IHt7Y29tcG9uZW50UiwgY29t
cG9uZW50RywgY29tcG9uZW50QiwgY29tcG9uZW50QX19OworICAgICAgICB2c3Q0X3U4KGRlc3Rp
bmF0aW9uLCBSR0JBOCk7CisgICAgICAgIGRlc3RpbmF0aW9uICs9IDMyOworICAgIH0KKworICAg
IHNvdXJjZSArPSBjb21wb25lbnRzU2l6ZTsKKyAgICBwaXhlbHNQZXJSb3cgPSB0YWlsQ29tcG9u
ZW50cyAvIDM7Cit9CisKK0FMV0FZU19JTkxJTkUgdm9pZCB1bnBhY2tPbmVSb3dPZkFSR0IxNkxp
dHRsZVRvUkdCQTgoY29uc3QgdWludDE2X3QqJiBzb3VyY2UsIHVpbnQ4X3QqJiBkZXN0aW5hdGlv
biwgdW5zaWduZWQmIHBpeGVsc1BlclJvdykKK3sKKyAgICB1bnNpZ25lZCBjb21wb25lbnRzUGVy
Um93ID0gcGl4ZWxzUGVyUm93ICogNDsKKyAgICB1bnNpZ25lZCB0YWlsQ29tcG9uZW50cyA9IGNv
bXBvbmVudHNQZXJSb3cgJSAzMjsKKyAgICB1bnNpZ25lZCBjb21wb25lbnRzU2l6ZSA9IGNvbXBv
bmVudHNQZXJSb3cgLSB0YWlsQ29tcG9uZW50czsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBjb21wb25lbnRzU2l6ZTsgaSArPSAzMikgeworICAgICAgICB1aW50MTZ4OHg0X3QgQVJH
QjE2ID0gdmxkNHFfdTE2KHNvdXJjZSArIGkpOworICAgICAgICB1aW50OHg4X3QgY29tcG9uZW50
QSA9IHZxbW92bl91MTYodnNocnFfbl91MTYoQVJHQjE2LnZhbFswXSwgOCkpOworICAgICAgICB1
aW50OHg4X3QgY29tcG9uZW50UiA9IHZxbW92bl91MTYodnNocnFfbl91MTYoQVJHQjE2LnZhbFsx
XSwgOCkpOworICAgICAgICB1aW50OHg4X3QgY29tcG9uZW50RyA9IHZxbW92bl91MTYodnNocnFf
bl91MTYoQVJHQjE2LnZhbFsyXSwgOCkpOworICAgICAgICB1aW50OHg4X3QgY29tcG9uZW50QiA9
IHZxbW92bl91MTYodnNocnFfbl91MTYoQVJHQjE2LnZhbFszXSwgOCkpOworICAgICAgICB1aW50
OHg4eDRfdCBSR0JBOCA9IHt7Y29tcG9uZW50UiwgY29tcG9uZW50RywgY29tcG9uZW50QiwgY29t
cG9uZW50QX19OworICAgICAgICB2c3Q0X3U4KGRlc3RpbmF0aW9uICsgaSwgUkdCQTgpOworICAg
IH0KKworICAgIHNvdXJjZSArPSBjb21wb25lbnRzU2l6ZTsKKyAgICBkZXN0aW5hdGlvbiArPSBj
b21wb25lbnRzU2l6ZTsKKyAgICBwaXhlbHNQZXJSb3cgPSB0YWlsQ29tcG9uZW50cyAvIDQ7Cit9
CisKK0FMV0FZU19JTkxJTkUgdm9pZCB1bnBhY2tPbmVSb3dPZkJHUkExNkxpdHRsZVRvUkdCQTgo
Y29uc3QgdWludDE2X3QqJiBzb3VyY2UsIHVpbnQ4X3QqJiBkZXN0aW5hdGlvbiwgdW5zaWduZWQm
IHBpeGVsc1BlclJvdykKK3sKKyAgICB1bnNpZ25lZCBjb21wb25lbnRzUGVyUm93ID0gcGl4ZWxz
UGVyUm93ICogNDsKKyAgICB1bnNpZ25lZCB0YWlsQ29tcG9uZW50cyA9IGNvbXBvbmVudHNQZXJS
b3cgJSAzMjsKKyAgICB1bnNpZ25lZCBjb21wb25lbnRzU2l6ZSA9IGNvbXBvbmVudHNQZXJSb3cg
LSB0YWlsQ29tcG9uZW50czsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb21wb25l
bnRzU2l6ZTsgaSArPSAzMikgeworICAgICAgICB1aW50MTZ4OHg0X3QgQVJHQjE2ID0gdmxkNHFf
dTE2KHNvdXJjZSArIGkpOworICAgICAgICB1aW50OHg4X3QgY29tcG9uZW50QiA9IHZxbW92bl91
MTYodnNocnFfbl91MTYoQVJHQjE2LnZhbFswXSwgOCkpOworICAgICAgICB1aW50OHg4X3QgY29t
cG9uZW50RyA9IHZxbW92bl91MTYodnNocnFfbl91MTYoQVJHQjE2LnZhbFsxXSwgOCkpOworICAg
ICAgICB1aW50OHg4X3QgY29tcG9uZW50UiA9IHZxbW92bl91MTYodnNocnFfbl91MTYoQVJHQjE2
LnZhbFsyXSwgOCkpOworICAgICAgICB1aW50OHg4X3QgY29tcG9uZW50QSA9IHZxbW92bl91MTYo
dnNocnFfbl91MTYoQVJHQjE2LnZhbFszXSwgOCkpOworICAgICAgICB1aW50OHg4eDRfdCBSR0JB
OCA9IHt7Y29tcG9uZW50UiwgY29tcG9uZW50RywgY29tcG9uZW50QiwgY29tcG9uZW50QX19Owor
ICAgICAgICB2c3Q0X3U4KGRlc3RpbmF0aW9uICsgaSwgUkdCQTgpOworICAgIH0KKworICAgIHNv
dXJjZSArPSBjb21wb25lbnRzU2l6ZTsKKyAgICBkZXN0aW5hdGlvbiArPSBjb21wb25lbnRzU2l6
ZTsKKyAgICBwaXhlbHNQZXJSb3cgPSB0YWlsQ29tcG9uZW50cyAvIDQ7Cit9CisKIEFMV0FZU19J
TkxJTkUgdm9pZCB1bnBhY2tPbmVSb3dPZlJHQkE0NDQ0VG9SR0JBOChjb25zdCB1aW50MTZfdCom
IHNvdXJjZSwgdWludDhfdComIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCYgcGl4ZWxzUGVyUm93KQog
ewogICAgIHVuc2lnbmVkIHRhaWxQaXhlbHMgPSBwaXhlbHNQZXJSb3cgJSA4Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>