<?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>90357</bug_id>
          
          <creation_ts>2012-07-01 23:58:48 -0700</creation_ts>
          <short_desc>DelayNode doesn&apos;t work if delayTime.value == delayTime.maxValue</short_desc>
          <delta_ts>2012-07-27 01:15:01 -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 Audio</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>0</everconfirmed>
          <reporter name="Wang Jiajun">Amesists</reporter>
          <assigned_to name="Raymond Toy">rtoy</assigned_to>
          <cc>Amesists</cc>
    
    <cc>crogers</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>kbr</cc>
    
    <cc>rtoy</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>661286</commentid>
    <comment_count>0</comment_count>
    <who name="Wang Jiajun">Amesists</who>
    <bug_when>2012-07-01 23:58:48 -0700</bug_when>
    <thetext>If we create a DelayNode, and then set the delayTime.value to delayTime.maxValue. The output stream actually has no delay.

Ways to reproduce:
In the delaynode.html layout test, if you set delayTimeSeconds to 1, the test fails.

Expected result:
The test should pass and the output should have a delay for 1 second.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666116</commentid>
    <comment_count>1</comment_count>
      <attachid>151542</attachid>
    <who name="Raymond Toy">rtoy</who>
    <bug_when>2012-07-10 15:47:36 -0700</bug_when>
    <thetext>Created attachment 151542
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666195</commentid>
    <comment_count>2</comment_count>
      <attachid>151542</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-07-10 17:29:23 -0700</bug_when>
    <thetext>Comment on attachment 151542
Patch

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

&gt; Source/WebCore/Modules/webaudio/DelayDSPKernel.cpp:40
&gt; +// TODO(rtoy): Find out why 1 is not enough for a delay of 1.3333 sec.

WebKit style is FIXME:

Shouldn&apos;t be that hard to find out why?  It seems worth finding out what&apos;s going on right now rather than having a FIXME

&gt; Source/WebCore/Modules/webaudio/DelayDSPKernel.cpp:76
&gt; +    m_buffer.allocate(extraBufferFrames + bufferLength);

You should calculate bufferLength to include the &quot;extraBufferFrames + &quot; and not put it here, because in fact the real buffer length includes this extra amount.

&gt; Source/WebCore/Modules/webaudio/DelayDSPKernel.cpp:120
&gt; +        ASSERT(readIndex1 != m_writeIndex);

How can you ASSERT this - doesn&apos;t this condition come up if the delay time is exactly 0?

&gt; LayoutTests/webaudio/delaynode-max-default-delay.html:16
&gt; +description(&quot;Tests DelayNode with delay set to default max delay.&quot;);

&quot;max&quot; -&gt; &quot;maximum&quot;

&gt; LayoutTests/webaudio/delaynode-max-nondefault-delay-expected.txt:1
&gt; +Tests DelayNode with delay set to nondefault max delay.

&quot;nondefault&quot; -&gt; &quot;non-default&quot;
&quot;max&quot; -&gt; &quot;maximum&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666285</commentid>
    <comment_count>3</comment_count>
      <attachid>151542</attachid>
    <who name="Raymond Toy">rtoy</who>
    <bug_when>2012-07-10 20:12:56 -0700</bug_when>
    <thetext>Comment on attachment 151542
Patch

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

&gt;&gt; Source/WebCore/Modules/webaudio/DelayDSPKernel.cpp:40
&gt;&gt; +// TODO(rtoy): Find out why 1 is not enough for a delay of 1.3333 sec.
&gt; 
&gt; WebKit style is FIXME:
&gt; 
&gt; Shouldn&apos;t be that hard to find out why?  It seems worth finding out what&apos;s going on right now rather than having a FIXME

I believe this is a roundoff error.  See, for example, https://bugs.webkit.org/show_bug.cgi?id=78854.

&gt;&gt; Source/WebCore/Modules/webaudio/DelayDSPKernel.cpp:120
&gt;&gt; +        ASSERT(readIndex1 != m_writeIndex);
&gt; 
&gt; How can you ASSERT this - doesn&apos;t this condition come up if the delay time is exactly 0?

I tested this on a debug build and it didn&apos;t show up.  (Perhaps this also indicates a bug in the delay-testing.js)  I need to revisit this calculation and add a test for 0 delay.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666886</commentid>
    <comment_count>4</comment_count>
      <attachid>151735</attachid>
    <who name="Raymond Toy">rtoy</who>
    <bug_when>2012-07-11 11:12:20 -0700</bug_when>
    <thetext>Created attachment 151735
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666893</commentid>
    <comment_count>5</comment_count>
      <attachid>151542</attachid>
    <who name="Raymond Toy">rtoy</who>
    <bug_when>2012-07-11 11:15:38 -0700</bug_when>
    <thetext>Comment on attachment 151542
Patch

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

Also added a check for m_maxDelayTime &gt; 0 to prevent a crash when allocating the buffer with an incorrect size.

&gt;&gt;&gt; Source/WebCore/Modules/webaudio/DelayDSPKernel.cpp:40
&gt;&gt;&gt; +// TODO(rtoy): Find out why 1 is not enough for a delay of 1.3333 sec.
&gt;&gt; 
&gt;&gt; WebKit style is FIXME:
&gt;&gt; 
&gt;&gt; Shouldn&apos;t be that hard to find out why?  It seems worth finding out what&apos;s going on right now rather than having a FIXME
&gt; 
&gt; I believe this is a roundoff error.  See, for example, https://bugs.webkit.org/show_bug.cgi?id=78854.

Fixed by using AudioUtilities::timeToSampleFrames to compute the buffer length.  But bug 78854 still exists.

FIXME removed.

&gt;&gt; Source/WebCore/Modules/webaudio/DelayDSPKernel.cpp:76
&gt;&gt; +    m_buffer.allocate(extraBufferFrames + bufferLength);
&gt; 
&gt; You should calculate bufferLength to include the &quot;extraBufferFrames + &quot; and not put it here, because in fact the real buffer length includes this extra amount.

Done.

&gt;&gt;&gt; Source/WebCore/Modules/webaudio/DelayDSPKernel.cpp:120
&gt;&gt;&gt; +        ASSERT(readIndex1 != m_writeIndex);
&gt;&gt; 
&gt;&gt; How can you ASSERT this - doesn&apos;t this condition come up if the delay time is exactly 0?
&gt; 
&gt; I tested this on a debug build and it didn&apos;t show up.  (Perhaps this also indicates a bug in the delay-testing.js)  I need to revisit this calculation and add a test for 0 delay.

Testing was incorrect.  ASSERT removed.

&gt;&gt; LayoutTests/webaudio/delaynode-max-default-delay.html:16
&gt;&gt; +description(&quot;Tests DelayNode with delay set to default max delay.&quot;);
&gt; 
&gt; &quot;max&quot; -&gt; &quot;maximum&quot;

Done.

&gt;&gt; LayoutTests/webaudio/delaynode-max-nondefault-delay-expected.txt:1
&gt;&gt; +Tests DelayNode with delay set to nondefault max delay.
&gt; 
&gt; &quot;nondefault&quot; -&gt; &quot;non-default&quot;
&gt; &quot;max&quot; -&gt; &quot;maximum&quot;

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668339</commentid>
    <comment_count>6</comment_count>
    <who name="Raymond Toy">rtoy</who>
    <bug_when>2012-07-12 15:50:16 -0700</bug_when>
    <thetext>Ken,

Can you review this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668362</commentid>
    <comment_count>7</comment_count>
      <attachid>151735</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-07-12 16:17:42 -0700</bug_when>
    <thetext>Comment on attachment 151735
Patch

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

The code looks good to me overall; r=me. A couple of minor comments. You can decide whether or not they need addressing.

&gt; Source/WebCore/Modules/webaudio/DelayDSPKernel.cpp:40
&gt; +const size_t extraBufferFrames = 1;

Should this and the other constant above be in an anonymous namespace? Also, will one additional sample always be enough (i.e., sure you don&apos;t need something like 1 per channel)?

&gt; Source/WebCore/Modules/webaudio/DelayDSPKernel.cpp:74
&gt; +    size_t bufferLength = extraBufferFrames + AudioUtilities::timeToSampleFrame(maxDelayTime, sampleRate);

This is the same arithmetic expression as above -- I wonder whether you should have a helper function which computes this value given the maxDelayTime and sample rate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669146</commentid>
    <comment_count>8</comment_count>
      <attachid>152281</attachid>
    <who name="Raymond Toy">rtoy</who>
    <bug_when>2012-07-13 09:53:51 -0700</bug_when>
    <thetext>Created attachment 152281
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669150</commentid>
    <comment_count>9</comment_count>
      <attachid>151735</attachid>
    <who name="Raymond Toy">rtoy</who>
    <bug_when>2012-07-13 09:56:12 -0700</bug_when>
    <thetext>Comment on attachment 151735
Patch

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

&gt;&gt; Source/WebCore/Modules/webaudio/DelayDSPKernel.cpp:40
&gt;&gt; +const size_t extraBufferFrames = 1;
&gt; 
&gt; Should this and the other constant above be in an anonymous namespace? Also, will one additional sample always be enough (i.e., sure you don&apos;t need something like 1 per channel)?

Removed extraBufferFrames (in new function) and moved the other constant to WebCore namespace.

One sample should be enough.  Multiple channels are handled at a higher layer in AudioDSPKernelProcessor so we only need to deal with one channel here.

&gt;&gt; Source/WebCore/Modules/webaudio/DelayDSPKernel.cpp:74
&gt;&gt; +    size_t bufferLength = extraBufferFrames + AudioUtilities::timeToSampleFrame(maxDelayTime, sampleRate);
&gt; 
&gt; This is the same arithmetic expression as above -- I wonder whether you should have a helper function which computes this value given the maxDelayTime and sample rate.

Yes, a helper is better.  Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669208</commentid>
    <comment_count>10</comment_count>
      <attachid>152281</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-07-13 10:36:48 -0700</bug_when>
    <thetext>Comment on attachment 152281
Patch

Looks good. r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669341</commentid>
    <comment_count>11</comment_count>
      <attachid>152281</attachid>
    <who name="Raymond Toy">rtoy</who>
    <bug_when>2012-07-13 12:35:54 -0700</bug_when>
    <thetext>Comment on attachment 152281
Patch

Thanks Ken!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669404</commentid>
    <comment_count>12</comment_count>
      <attachid>152281</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-13 14:10:48 -0700</bug_when>
    <thetext>Comment on attachment 152281
Patch

Clearing flags on attachment: 152281

Committed r122630: &lt;http://trac.webkit.org/changeset/122630&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669405</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-13 14:10:54 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680270</commentid>
    <comment_count>14</comment_count>
      <attachid>151735</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-27 01:15:01 -0700</bug_when>
    <thetext>Comment on attachment 151735
Patch

Cleared review? from obsolete attachment 151735 so that this bug does not appear in http://webkit.org/pending-review.  If you would like this patch reviewed, please attach it to a new bug (or re-open this bug before marking it for review again).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151542</attachid>
            <date>2012-07-10 15:47:36 -0700</date>
            <delta_ts>2012-07-11 11:15:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90357-20120710154735.patch</filename>
            <type>text/plain</type>
            <size>8580</size>
            <attacher name="Raymond Toy">rtoy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyMjA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGE1YjhjYTI3MGVhYzJh
NmVlNThlNDljODkzMzg3YTc1MGJlMTlmMS4uYjNkNjU1YmRiM2M4NGFiNzMyNjk5MTVlM2QxYzY3
MWJkOGQ2YmE2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTA3LTEwICBSYXlt
b25kIFRveSAgPHJ0b3lAZ29vZ2xlLmNvbT4KKworICAgICAgICBEZWxheU5vZGUgZG9lc24ndCB3
b3JrIGlmIGRlbGF5VGltZS52YWx1ZSA9PSBkZWxheVRpbWUubWF4VmFsdWUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwMzU3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW5jcmVhc2UgZGVsYXkgYnVmZmVy
IHNpemUgc2xpZ2h0bHkgc28gdGhhdCB0aGUgcmVhZCBhbmQgd3JpdGUKKyAgICAgICAgcG9pbnRl
cnMgZG9uJ3QgYmVjb21lIGVxdWFsIHdoZW4gdGhlIGRlbGF5IGFuZCB0aGUgbWF4IGRlbGF5IGFy
ZQorICAgICAgICB0aGUgc2FtZS4KKyAgICAgICAgCisgICAgICAgIFRlc3RzOiB3ZWJhdWRpby9k
ZWxheW5vZGUtbWF4LWRlZmF1bHQtZGVsYXkuaHRtbAorICAgICAgICAgICAgICAgd2ViYXVkaW8v
ZGVsYXlub2RlLW1heC1ub25kZWZhdWx0LWRlbGF5Lmh0bWwKKworICAgICAgICAqIE1vZHVsZXMv
d2ViYXVkaW8vRGVsYXlEU1BLZXJuZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVsYXlEU1BL
ZXJuZWw6OkRlbGF5RFNQS2VybmVsKTogSW5jcmVhc2UgYnVmZmVyIHNpemUKKyAgICAgICAgKFdl
YkNvcmU6OkRlbGF5RFNQS2VybmVsOjpwcm9jZXNzKTogQWRkIEFTU0VSVCB0byBtYWtlIHN1cmUg
dGhlIHJlYWQgYW5kIHdyaXRlIHBvaW50ZXJzIGFyZW4ndCB0aGUgc2FtZS4KKwogMjAxMi0wNy0x
MCAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAg
VW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEyMjE3OC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlEU1BLZXJuZWwuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9EZWxheURTUEtlcm5lbC5jcHAKaW5kZXggMmJkNTc1OWVhMjZhNDI4
ZTgyMDMwYjBkYmZhYzk3M2Q5YWE3MGFiOS4uZWQ4ZGM5Nzg4OGViMzhkMTEwMWEwZmJiNjI4MmQz
ZDgxYmE3ZTAyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9E
ZWxheURTUEtlcm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9E
ZWxheURTUEtlcm5lbC5jcHAKQEAgLTM0LDYgKzM0LDExIEBACiB1c2luZyBuYW1lc3BhY2Ugc3Rk
OwogCiBjb25zdCBmbG9hdCBTbW9vdGhpbmdUaW1lQ29uc3RhbnQgPSAwLjAyMGY7IC8vIDIwbXMK
KworLy8gSW5jcmVhc2UgYnVmZmVyIHNpemUgYnkgdGhpcyBhbW91bnQgdG8gaGFuZGxlIHRoZSBj
YXNlIHdoZXJlIHRoZSBkZWxheSBpcyBlcXVhbCB0byB0aGUgbWF4aW11bQorLy8gZGVsYXkgYWxs
b3dlZCBpbiB0aGUgZGVsYXkgbm9kZS4KKy8vIFRPRE8ocnRveSk6IEZpbmQgb3V0IHdoeSAxIGlz
IG5vdCBlbm91Z2ggZm9yIGEgZGVsYXkgb2YgMS4zMzMzIHNlYy4KK2NvbnN0IHNpemVfdCBleHRy
YUJ1ZmZlckZyYW1lcyA9IDI7CiAgIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Nyw3ICs1
Miw3IEBAIERlbGF5RFNQS2VybmVsOjpEZWxheURTUEtlcm5lbChEZWxheVByb2Nlc3NvciogcHJv
Y2Vzc29yKQogICAgICAgICByZXR1cm47CiAKICAgICBtX21heERlbGF5VGltZSA9IHByb2Nlc3Nv
ci0+bWF4RGVsYXlUaW1lKCk7Ci0gICAgbV9idWZmZXIuYWxsb2NhdGUoc3RhdGljX2Nhc3Q8c2l6
ZV90Pihwcm9jZXNzb3ItPnNhbXBsZVJhdGUoKSAqIG1fbWF4RGVsYXlUaW1lKSk7CisgICAgbV9i
dWZmZXIuYWxsb2NhdGUoZXh0cmFCdWZmZXJGcmFtZXMgKyBzdGF0aWNfY2FzdDxzaXplX3Q+KHBy
b2Nlc3Nvci0+c2FtcGxlUmF0ZSgpICogbV9tYXhEZWxheVRpbWUpKTsKICAgICBtX2J1ZmZlci56
ZXJvKCk7CiAKICAgICBtX3Ntb290aGluZ1JhdGUgPSBBdWRpb1V0aWxpdGllczo6ZGlzY3JldGVU
aW1lQ29uc3RhbnRGb3JTYW1wbGVSYXRlKFNtb290aGluZ1RpbWVDb25zdGFudCwgcHJvY2Vzc29y
LT5zYW1wbGVSYXRlKCkpOwpAQCAtNjgsNyArNzMsNyBAQCBEZWxheURTUEtlcm5lbDo6RGVsYXlE
U1BLZXJuZWwoZG91YmxlIG1heERlbGF5VGltZSwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICBpZiAo
IWJ1ZmZlckxlbmd0aCkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIG1fYnVmZmVyLmFsbG9j
YXRlKGJ1ZmZlckxlbmd0aCk7CisgICAgbV9idWZmZXIuYWxsb2NhdGUoZXh0cmFCdWZmZXJGcmFt
ZXMgKyBidWZmZXJMZW5ndGgpOwogICAgIG1fYnVmZmVyLnplcm8oKTsKIAogICAgIG1fc21vb3Ro
aW5nUmF0ZSA9IEF1ZGlvVXRpbGl0aWVzOjpkaXNjcmV0ZVRpbWVDb25zdGFudEZvclNhbXBsZVJh
dGUoU21vb3RoaW5nVGltZUNvbnN0YW50LCBzYW1wbGVSYXRlKTsKQEAgLTExMiw2ICsxMTcsNyBA
QCB2b2lkIERlbGF5RFNQS2VybmVsOjpwcm9jZXNzKGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0
KiBkZXN0aW5hdGlvbiwgc2l6ZV90IGZyYQogCiAgICAgICAgIC8vIExpbmVhcmx5IGludGVycG9s
YXRlIGluLWJldHdlZW4gZGVsYXkgdGltZXMuCiAgICAgICAgIGludCByZWFkSW5kZXgxID0gc3Rh
dGljX2Nhc3Q8aW50PihyZWFkUG9zaXRpb24pOworICAgICAgICBBU1NFUlQocmVhZEluZGV4MSAh
PSBtX3dyaXRlSW5kZXgpOwogICAgICAgICBpbnQgcmVhZEluZGV4MiA9IChyZWFkSW5kZXgxICsg
MSkgJSBidWZmZXJMZW5ndGg7CiAgICAgICAgIGRvdWJsZSBpbnRlcnBvbGF0aW9uRmFjdG9yID0g
cmVhZFBvc2l0aW9uIC0gcmVhZEluZGV4MTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGIzN2JjODhlZjliNmQ2ZjczMWNk
M2QyZmVmOTEyNGI3NjM0NzBjNmIuLjA5NjZhYzk2YzdiOTc0NmVmMGJjYzU3OWUzMTJkOWFiMzVm
NGY3MjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0wNy0xMCAgUmF5bW9uZCBUb3kgIDxy
dG95QGdvb2dsZS5jb20+CisKKyAgICAgICAgRGVsYXlOb2RlIGRvZXNuJ3Qgd29yayBpZiBkZWxh
eVRpbWUudmFsdWUgPT0gZGVsYXlUaW1lLm1heFZhbHVlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDM1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE5ldyB0ZXN0cyB0byB0ZXN0IHRoZSBjYXNlIHdoZW4g
dGhlIGRlbGF5IG5vZGUgZGVsYXkgZXF1YWxzIHRoZQorICAgICAgICBtYXhpbXVtIGFsbG93ZWQg
ZGVsYXkuICBPbmUgdGVzdCBmb3IgdGhlIGRlZmF1bHQgbWF4aW11bSBkZWxheSBhbmQKKyAgICAg
ICAgYSBzZWNvbmQgdGVzdCB3aXRoIGEgdXNlci1zZXQgbWF4aW11bSBkZWxheS4KKyAgICAgICAg
CisgICAgICAgICogd2ViYXVkaW8vZGVsYXlub2RlLW1heC1kZWZhdWx0LWRlbGF5LWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogd2ViYXVkaW8vZGVsYXlub2RlLW1heC1kZWZhdWx0LWRl
bGF5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYmF1ZGlvL2RlbGF5bm9kZS1tYXgtbm9uZGVm
YXVsdC1kZWxheS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYmF1ZGlvL2RlbGF5
bm9kZS1tYXgtbm9uZGVmYXVsdC1kZWxheS5odG1sOiBBZGRlZC4KKwogMjAxMi0wNy0xMCAgU2hl
cmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCwgcm9sbGluZyBvdXQgcjEyMjE3OC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmF1
ZGlvL2RlbGF5bm9kZS1tYXgtZGVmYXVsdC1kZWxheS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy93ZWJhdWRpby9kZWxheW5vZGUtbWF4LWRlZmF1bHQtZGVsYXktZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjUzNTZhMzcxNWVjYWM1ZjRkNDU3MWFhMzFiMGU2NzA4ZjgwMzAyNjgKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9kZWxheW5vZGUtbWF4LWRlZmF1bHQtZGVs
YXktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOSBAQAorVGVzdHMgRGVsYXlOb2RlIHdpdGggZGVs
YXkgc2V0IHRvIGRlZmF1bHQgbWF4IGRlbGF5LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKK1BBU1MgVGVzdCBzaWduYWwgd2FzIGNvcnJlY3RseSBkZWxheWVkIGJ5IDEgc2VjLgorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL2RlbGF5bm9kZS1tYXgtZGVmYXVsdC1kZWxheS5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vZGVsYXlub2RlLW1heC1kZWZhdWx0LWRlbGF5Lmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMjk0MWMyOWMxY2QyMDk3MzczZGMxNzY3MDIwMzI3YmEwNGEzNzhjZAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL2RlbGF5bm9kZS1tYXgtZGVmYXVs
dC1kZWxheS5odG1sCkBAIC0wLDAgKzEsNTEgQEAKKzwhRE9DVFlQRSBodG1sPgorCis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYXVkaW8tdGVzdGluZy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2RlbGF5LXRlc3RpbmcuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorCis8Ym9keT4KKworPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdHMgRGVs
YXlOb2RlIHdpdGggZGVsYXkgc2V0IHRvIGRlZmF1bHQgbWF4IGRlbGF5LiIpOworCitmdW5jdGlv
biBydW5UZXN0KCkgeworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7
CisgICAgfQorICAgIAorICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICAgICAg
CisgICAgLy8gQ3JlYXRlIG9mZmxpbmUgYXVkaW8gY29udGV4dC4KKyAgICB2YXIgY29udGV4dCA9
IG5ldyB3ZWJraXRBdWRpb0NvbnRleHQoMSwgc2FtcGxlUmF0ZSAqIHJlbmRlckxlbmd0aFNlY29u
ZHMsIHNhbXBsZVJhdGUpOworICAgIHZhciB0b25lQnVmZmVyID0gY3JlYXRlVG9uZUJ1ZmZlcihj
b250ZXh0LCAyMCwgMjAgKiB0b25lTGVuZ3RoU2Vjb25kcywgc2FtcGxlUmF0ZSk7IC8vIDIwSHog
dG9uZQorICAgIAorICAgIHZhciBidWZmZXJTb3VyY2UgPSBjb250ZXh0LmNyZWF0ZUJ1ZmZlclNv
dXJjZSgpOworICAgIGJ1ZmZlclNvdXJjZS5idWZmZXIgPSB0b25lQnVmZmVyOworCisgICAgdmFy
IGRlbGF5ID0gY29udGV4dC5jcmVhdGVEZWxheU5vZGUoKTsKKyAgICBkZWxheVRpbWVTZWNvbmRz
ID0gMTsKKyAgICBkZWxheS5kZWxheVRpbWUudmFsdWUgPSBkZWxheVRpbWVTZWNvbmRzOworCisg
ICAgYnVmZmVyU291cmNlLmNvbm5lY3QoZGVsYXkpOworICAgIGRlbGF5LmNvbm5lY3QoY29udGV4
dC5kZXN0aW5hdGlvbik7CisgICAgYnVmZmVyU291cmNlLm5vdGVPbigwKTsKKyAgICAKKyAgICBj
b250ZXh0Lm9uY29tcGxldGUgPSBjaGVja0RlbGF5ZWRSZXN1bHQodG9uZUJ1ZmZlcik7CisgICAg
Y29udGV4dC5zdGFydFJlbmRlcmluZygpOworfQorCitydW5UZXN0KCk7CisKKzwvc2NyaXB0Pgor
Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmF1ZGlv
L2RlbGF5bm9kZS1tYXgtbm9uZGVmYXVsdC1kZWxheS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy93ZWJhdWRpby9kZWxheW5vZGUtbWF4LW5vbmRlZmF1bHQtZGVsYXktZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjAxNWI1YjdmNGM2MmM2N2QzNmM4N2I2OGY4MzAzNDM3NDAzNzY3YzQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9kZWxheW5vZGUtbWF4LW5vbmRlZmF1
bHQtZGVsYXktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOSBAQAorVGVzdHMgRGVsYXlOb2RlIHdp
dGggZGVsYXkgc2V0IHRvIG5vbmRlZmF1bHQgbWF4IGRlbGF5LgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKK1BBU1MgVGVzdCBzaWduYWwgd2FzIGNvcnJlY3RseSBkZWxheWVkIGJ5IDEu
NSBzZWMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViYXVkaW8vZGVsYXlub2RlLW1heC1ub25kZWZh
dWx0LWRlbGF5Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9kZWxheW5vZGUtbWF4LW5vbmRl
ZmF1bHQtZGVsYXkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMzEzM2QzZWQzZDRjOWUyN2QyNWJkN2YyNzBk
MGJjN2FhZDAyNzRiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vZGVs
YXlub2RlLW1heC1ub25kZWZhdWx0LWRlbGF5Lmh0bWwKQEAgLTAsMCArMSw1MiBAQAorPCFET0NU
WVBFIGh0bWw+CisKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9h
dWRpby10ZXN0aW5nLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZGVsYXkt
dGVzdGluZy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5PgorCis8ZGl2IGlkPSJkZXNj
cmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KK2Rl
c2NyaXB0aW9uKCJUZXN0cyBEZWxheU5vZGUgd2l0aCBkZWxheSBzZXQgdG8gbm9uZGVmYXVsdCBt
YXggZGVsYXkuIik7CisKK2Z1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICB0ZXN0
UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB9CisgICAgCisgICAgd2luZG93LmpzVGVzdElz
QXN5bmMgPSB0cnVlOworICAgICAgICAKKyAgICAvLyBDcmVhdGUgb2ZmbGluZSBhdWRpbyBjb250
ZXh0LgorICAgIHZhciBjb250ZXh0ID0gbmV3IHdlYmtpdEF1ZGlvQ29udGV4dCgxLCBzYW1wbGVS
YXRlICogcmVuZGVyTGVuZ3RoU2Vjb25kcywgc2FtcGxlUmF0ZSk7CisgICAgdmFyIHRvbmVCdWZm
ZXIgPSBjcmVhdGVUb25lQnVmZmVyKGNvbnRleHQsIDIwLCAyMCAqIHRvbmVMZW5ndGhTZWNvbmRz
LCBzYW1wbGVSYXRlKTsgLy8gMjBIeiB0b25lCisgICAgCisgICAgdmFyIGJ1ZmZlclNvdXJjZSA9
IGNvbnRleHQuY3JlYXRlQnVmZmVyU291cmNlKCk7CisgICAgYnVmZmVyU291cmNlLmJ1ZmZlciA9
IHRvbmVCdWZmZXI7CisKKyAgICB2YXIgbWF4RGVsYXkgPSAxLjU7CisgICAgdmFyIGRlbGF5ID0g
Y29udGV4dC5jcmVhdGVEZWxheU5vZGUobWF4RGVsYXkpOworICAgIGRlbGF5VGltZVNlY29uZHMg
PSBtYXhEZWxheTsKKyAgICBkZWxheS5kZWxheVRpbWUudmFsdWUgPSBkZWxheVRpbWVTZWNvbmRz
OworCisgICAgYnVmZmVyU291cmNlLmNvbm5lY3QoZGVsYXkpOworICAgIGRlbGF5LmNvbm5lY3Qo
Y29udGV4dC5kZXN0aW5hdGlvbik7CisgICAgYnVmZmVyU291cmNlLm5vdGVPbigwKTsKKyAgICAK
KyAgICBjb250ZXh0Lm9uY29tcGxldGUgPSBjaGVja0RlbGF5ZWRSZXN1bHQodG9uZUJ1ZmZlcik7
CisgICAgY29udGV4dC5zdGFydFJlbmRlcmluZygpOworfQorCitydW5UZXN0KCk7CisKKzwvc2Ny
aXB0PgorCis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151735</attachid>
            <date>2012-07-11 11:12:20 -0700</date>
            <delta_ts>2012-07-27 01:15:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90357-20120711111219.patch</filename>
            <type>text/plain</type>
            <size>8564</size>
            <attacher name="Raymond Toy">rtoy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyMzA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTFjMmYxMjk1NTE2ZDNi
ZjZmMmEyMjk3NzczNThlZjMxMGEyZGNhMi4uZTY1OTJlNjJkY2ZjOTg3N2Q5NzM5OWVhNzkwZmFj
YjQwZTc5NzM1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTA3LTEwICBSYXlt
b25kIFRveSAgPHJ0b3lAZ29vZ2xlLmNvbT4KKworICAgICAgICBEZWxheU5vZGUgZG9lc24ndCB3
b3JrIGlmIGRlbGF5VGltZS52YWx1ZSA9PSBkZWxheVRpbWUubWF4VmFsdWUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwMzU3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW5jcmVhc2UgZGVsYXkgYnVmZmVy
IHNpemUgc2xpZ2h0bHkgc28gdGhhdCB0aGUgcmVhZCBhbmQgd3JpdGUKKyAgICAgICAgcG9pbnRl
cnMgZG9uJ3QgYmVjb21lIGVxdWFsIHdoZW4gdGhlIGRlbGF5IGFuZCB0aGUgbWF4IGRlbGF5IGFy
ZQorICAgICAgICB0aGUgc2FtZS4KKyAgICAgICAgCisgICAgICAgIFRlc3RzOiB3ZWJhdWRpby9k
ZWxheW5vZGUtbWF4LWRlZmF1bHQtZGVsYXkuaHRtbAorICAgICAgICAgICAgICAgd2ViYXVkaW8v
ZGVsYXlub2RlLW1heC1ub25kZWZhdWx0LWRlbGF5Lmh0bWwKKworICAgICAgICAqIE1vZHVsZXMv
d2ViYXVkaW8vRGVsYXlEU1BLZXJuZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVsYXlEU1BL
ZXJuZWw6OkRlbGF5RFNQS2VybmVsKTogSW5jcmVhc2UgYnVmZmVyIHNpemU7CisgICAgICAgIHVz
ZSBBdWRpb1V0aWxpdGllczo6dGltZVRvU2FtcGxlRnJhbWVzIHRvIGNvbXB1dGUgYnVmZmVyIGxl
bmd0aHM7CisgICAgICAgIG1ha2Ugc3VyZSBtX21heERlbGF5VGltZSBpcyBwb3NpdGl2ZSB0byBw
cmV2ZW50IGNyYXNoZXMgaW4KKyAgICAgICAgYWxsb2NhdGluZyB0aGUgYnVmZmVyIHdpdGggYSBu
ZWdhdGl2ZSBsZW5ndGguCisKIDIwMTItMDctMTEgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29n
bGUuY29tPgogCiAgICAgICAgIGNvbXBvc2l0aW5nL3dlYmdsL3dlYmdsLW5vbnByZW11bHRpcGxp
ZWQtYmxlbmQuaHRtbCBpcyBmbGFreSBvbiBMaW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5RFNQS2VybmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vRGVsYXlEU1BLZXJuZWwuY3BwCmluZGV4IDJiZDU3NTllYTI2YTQyOGU4
MjAzMGIwZGJmYWM5NzNkOWFhNzBhYjkuLmIzODg4Nzc1YzY0Nzc2ZTQ4MTNkMTBmNDJiYTc5Yzg0
M2JhY2M5NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVs
YXlEU1BLZXJuZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVs
YXlEU1BLZXJuZWwuY3BwCkBAIC0zNCw2ICszNCwxMCBAQAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsK
IAogY29uc3QgZmxvYXQgU21vb3RoaW5nVGltZUNvbnN0YW50ID0gMC4wMjBmOyAvLyAyMG1zCisK
Ky8vIEluY3JlYXNlIGJ1ZmZlciBzaXplIGJ5IHRoaXMgYW1vdW50IHRvIGhhbmRsZSB0aGUgY2Fz
ZSB3aGVyZSB0aGUgZGVsYXkgaXMgZXF1YWwgdG8gdGhlIG1heGltdW0KKy8vIGRlbGF5IGFsbG93
ZWQgaW4gdGhlIGRlbGF5IG5vZGUuCitjb25zdCBzaXplX3QgZXh0cmFCdWZmZXJGcmFtZXMgPSAx
OwogICAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDMsMTEgKzQ3LDE1IEBAIERlbGF5RFNQ
S2VybmVsOjpEZWxheURTUEtlcm5lbChEZWxheVByb2Nlc3NvciogcHJvY2Vzc29yKQogICAgICwg
bV9maXJzdFRpbWUodHJ1ZSkKIHsKICAgICBBU1NFUlQocHJvY2Vzc29yICYmIHByb2Nlc3Nvci0+
c2FtcGxlUmF0ZSgpID4gMCk7Ci0gICAgaWYgKCFwcm9jZXNzb3IpCisgICAgaWYgKCEocHJvY2Vz
c29yICYmIHByb2Nlc3Nvci0+c2FtcGxlUmF0ZSgpID4gMCkpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIG1fbWF4RGVsYXlUaW1lID0gcHJvY2Vzc29yLT5tYXhEZWxheVRpbWUoKTsKLSAgICBtX2J1
ZmZlci5hbGxvY2F0ZShzdGF0aWNfY2FzdDxzaXplX3Q+KHByb2Nlc3Nvci0+c2FtcGxlUmF0ZSgp
ICogbV9tYXhEZWxheVRpbWUpKTsKKyAgICBBU1NFUlQobV9tYXhEZWxheVRpbWUgPj0gMCk7Cisg
ICAgaWYgKG1fbWF4RGVsYXlUaW1lIDwgMCkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIG1f
YnVmZmVyLmFsbG9jYXRlKGV4dHJhQnVmZmVyRnJhbWVzICsgQXVkaW9VdGlsaXRpZXM6OnRpbWVU
b1NhbXBsZUZyYW1lKG1fbWF4RGVsYXlUaW1lLCBwcm9jZXNzb3ItPnNhbXBsZVJhdGUoKSkpOwog
ICAgIG1fYnVmZmVyLnplcm8oKTsKIAogICAgIG1fc21vb3RoaW5nUmF0ZSA9IEF1ZGlvVXRpbGl0
aWVzOjpkaXNjcmV0ZVRpbWVDb25zdGFudEZvclNhbXBsZVJhdGUoU21vb3RoaW5nVGltZUNvbnN0
YW50LCBwcm9jZXNzb3ItPnNhbXBsZVJhdGUoKSk7CkBAIC02Myw3ICs3MSw3IEBAIERlbGF5RFNQ
S2VybmVsOjpEZWxheURTUEtlcm5lbChkb3VibGUgbWF4RGVsYXlUaW1lLCBmbG9hdCBzYW1wbGVS
YXRlKQogICAgIGlmIChtYXhEZWxheVRpbWUgPD0gMC4wKQogICAgICAgICByZXR1cm47CiAgICAg
ICAgIAotICAgIHNpemVfdCBidWZmZXJMZW5ndGggPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNhbXBs
ZVJhdGUgKiBtYXhEZWxheVRpbWUpOworICAgIHNpemVfdCBidWZmZXJMZW5ndGggPSBleHRyYUJ1
ZmZlckZyYW1lcyArIEF1ZGlvVXRpbGl0aWVzOjp0aW1lVG9TYW1wbGVGcmFtZShtYXhEZWxheVRp
bWUsIHNhbXBsZVJhdGUpOwogICAgIEFTU0VSVChidWZmZXJMZW5ndGgpOwogICAgIGlmICghYnVm
ZmVyTGVuZ3RoKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNzQ5YWNmNDk4NmY0MjZhNGRjMDEz
MzZlYTllNGQyYmE4OTllNWRlMi4uNWEyNjliNzFmYThjZjA1MjliNTFlMDc4M2Y4MWM1NGJmNjcy
MDViMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTA3LTEwICBSYXltb25kIFRveSAgPHJ0
b3lAZ29vZ2xlLmNvbT4KKworICAgICAgICBEZWxheU5vZGUgZG9lc24ndCB3b3JrIGlmIGRlbGF5
VGltZS52YWx1ZSA9PSBkZWxheVRpbWUubWF4VmFsdWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwMzU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTmV3IHRlc3RzIHRvIHRlc3QgdGhlIGNhc2Ugd2hlbiB0
aGUgZGVsYXkgbm9kZSBkZWxheSBlcXVhbHMgdGhlCisgICAgICAgIG1heGltdW0gYWxsb3dlZCBk
ZWxheS4gIE9uZSB0ZXN0IGZvciB0aGUgZGVmYXVsdCBtYXhpbXVtIGRlbGF5IGFuZAorICAgICAg
ICBhIHNlY29uZCB0ZXN0IHdpdGggYSB1c2VyLXNldCBtYXhpbXVtIGRlbGF5LgorICAgICAgICAK
KyAgICAgICAgKiB3ZWJhdWRpby9kZWxheW5vZGUtbWF4LWRlZmF1bHQtZGVsYXktZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWJhdWRpby9kZWxheW5vZGUtbWF4LWRlZmF1bHQtZGVs
YXkuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViYXVkaW8vZGVsYXlub2RlLW1heC1ub25kZWZh
dWx0LWRlbGF5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViYXVkaW8vZGVsYXlu
b2RlLW1heC1ub25kZWZhdWx0LWRlbGF5Lmh0bWw6IEFkZGVkLgorCiAyMDEyLTA3LTExICBaYW4g
RG9iZXJzZWsgIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBH
VEsgZ2FyZGVuaW5nLCBhZGRpbmcgYW4gaW1hZ2UgZXhwZWN0YXRpb24gZm9yIHRoZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViYXVkaW8vZGVsYXlub2RlLW1heC1kZWZhdWx0LWRlbGF5LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL2RlbGF5bm9kZS1tYXgtZGVmYXVsdC1k
ZWxheS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjAyMmI5MDhiOTk2NTNhMTY4YjMzOTQ2YjQy
ZmJmNWNjODU5ZmYxMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL2Rl
bGF5bm9kZS1tYXgtZGVmYXVsdC1kZWxheS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw5IEBACitU
ZXN0cyBEZWxheU5vZGUgd2l0aCBkZWxheSBzZXQgdG8gZGVmYXVsdCBtYXhpbXVtIGRlbGF5Lgor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BBU1MgVGVzdCBzaWduYWwgd2FzIGNvcnJl
Y3RseSBkZWxheWVkIGJ5IDEgc2VjLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL2RlbGF5
bm9kZS1tYXgtZGVmYXVsdC1kZWxheS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vZGVsYXlu
b2RlLW1heC1kZWZhdWx0LWRlbGF5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmJjYzI2MGFhYmI1MmYwZDZh
ZjY5Yzk3YWIwMTcwY2RlODk5ZDkyZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmF1ZGlvL2RlbGF5bm9kZS1tYXgtZGVmYXVsdC1kZWxheS5odG1sCkBAIC0wLDAgKzEsNTEgQEAK
KzwhRE9DVFlQRSBodG1sPgorCis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvYXVkaW8tdGVzdGluZy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L2RlbGF5LXRlc3RpbmcuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keT4KKworPGRpdiBp
ZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3Jp
cHQ+CitkZXNjcmlwdGlvbigiVGVzdHMgRGVsYXlOb2RlIHdpdGggZGVsYXkgc2V0IHRvIGRlZmF1
bHQgbWF4aW11bSBkZWxheS4iKTsKKworZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAg
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIH0KKyAgICAKKyAgICB3aW5kb3cu
anNUZXN0SXNBc3luYyA9IHRydWU7CisgICAgICAgIAorICAgIC8vIENyZWF0ZSBvZmZsaW5lIGF1
ZGlvIGNvbnRleHQuCisgICAgdmFyIGNvbnRleHQgPSBuZXcgd2Via2l0QXVkaW9Db250ZXh0KDEs
IHNhbXBsZVJhdGUgKiByZW5kZXJMZW5ndGhTZWNvbmRzLCBzYW1wbGVSYXRlKTsKKyAgICB2YXIg
dG9uZUJ1ZmZlciA9IGNyZWF0ZVRvbmVCdWZmZXIoY29udGV4dCwgMjAsIDIwICogdG9uZUxlbmd0
aFNlY29uZHMsIHNhbXBsZVJhdGUpOyAvLyAyMEh6IHRvbmUKKyAgICAKKyAgICB2YXIgYnVmZmVy
U291cmNlID0gY29udGV4dC5jcmVhdGVCdWZmZXJTb3VyY2UoKTsKKyAgICBidWZmZXJTb3VyY2Uu
YnVmZmVyID0gdG9uZUJ1ZmZlcjsKKworICAgIHZhciBkZWxheSA9IGNvbnRleHQuY3JlYXRlRGVs
YXlOb2RlKCk7CisgICAgZGVsYXlUaW1lU2Vjb25kcyA9IDE7CisgICAgZGVsYXkuZGVsYXlUaW1l
LnZhbHVlID0gZGVsYXlUaW1lU2Vjb25kczsKKworICAgIGJ1ZmZlclNvdXJjZS5jb25uZWN0KGRl
bGF5KTsKKyAgICBkZWxheS5jb25uZWN0KGNvbnRleHQuZGVzdGluYXRpb24pOworICAgIGJ1ZmZl
clNvdXJjZS5ub3RlT24oMCk7CisgICAgCisgICAgY29udGV4dC5vbmNvbXBsZXRlID0gY2hlY2tE
ZWxheWVkUmVzdWx0KHRvbmVCdWZmZXIpOworICAgIGNvbnRleHQuc3RhcnRSZW5kZXJpbmcoKTsK
K30KKworcnVuVGVzdCgpOworCis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9kZWxheW5vZGUtbWF4LW5vbmRlZmF1bHQt
ZGVsYXktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vZGVsYXlub2RlLW1heC1u
b25kZWZhdWx0LWRlbGF5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xM2UzMGYyYjAyNzk3YWI2
ZWY5NmMxMGRiOTY3MTcxNzg5NDc1ZTZiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViYXVkaW8vZGVsYXlub2RlLW1heC1ub25kZWZhdWx0LWRlbGF5LWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDkgQEAKK1Rlc3RzIERlbGF5Tm9kZSB3aXRoIGRlbGF5IHNldCB0byBub24tZGVmYXVs
dCBtYXhpbXVtIGRlbGF5LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BBU1MgVGVz
dCBzaWduYWwgd2FzIGNvcnJlY3RseSBkZWxheWVkIGJ5IDEuNSBzZWMuCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViYXVkaW8vZGVsYXlub2RlLW1heC1ub25kZWZhdWx0LWRlbGF5Lmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJhdWRpby9kZWxheW5vZGUtbWF4LW5vbmRlZmF1bHQtZGVsYXkuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40MWFkMWUyYTU5NGIxMzU0MTk3Yzc0Y2MzZDRjZTMwZmE3MGVjNjBjCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vZGVsYXlub2RlLW1heC1ub25kZWZhdWx0
LWRlbGF5Lmh0bWwKQEAgLTAsMCArMSw1MiBAQAorPCFET0NUWVBFIGh0bWw+CisKKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9hdWRpby10ZXN0aW5nLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZGVsYXktdGVzdGluZy5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+CisKKzxib2R5PgorCis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0cyBEZWxh
eU5vZGUgd2l0aCBkZWxheSBzZXQgdG8gbm9uLWRlZmF1bHQgbWF4aW11bSBkZWxheS4iKTsKKwor
ZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOworICAgIH0KKyAgICAKKyAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Cisg
ICAgICAgIAorICAgIC8vIENyZWF0ZSBvZmZsaW5lIGF1ZGlvIGNvbnRleHQuCisgICAgdmFyIGNv
bnRleHQgPSBuZXcgd2Via2l0QXVkaW9Db250ZXh0KDEsIHNhbXBsZVJhdGUgKiByZW5kZXJMZW5n
dGhTZWNvbmRzLCBzYW1wbGVSYXRlKTsKKyAgICB2YXIgdG9uZUJ1ZmZlciA9IGNyZWF0ZVRvbmVC
dWZmZXIoY29udGV4dCwgMjAsIDIwICogdG9uZUxlbmd0aFNlY29uZHMsIHNhbXBsZVJhdGUpOyAv
LyAyMEh6IHRvbmUKKyAgICAKKyAgICB2YXIgYnVmZmVyU291cmNlID0gY29udGV4dC5jcmVhdGVC
dWZmZXJTb3VyY2UoKTsKKyAgICBidWZmZXJTb3VyY2UuYnVmZmVyID0gdG9uZUJ1ZmZlcjsKKwor
ICAgIHZhciBtYXhEZWxheSA9IDEuNTsKKyAgICB2YXIgZGVsYXkgPSBjb250ZXh0LmNyZWF0ZURl
bGF5Tm9kZShtYXhEZWxheSk7CisgICAgZGVsYXlUaW1lU2Vjb25kcyA9IG1heERlbGF5OworICAg
IGRlbGF5LmRlbGF5VGltZS52YWx1ZSA9IGRlbGF5VGltZVNlY29uZHM7CisKKyAgICBidWZmZXJT
b3VyY2UuY29ubmVjdChkZWxheSk7CisgICAgZGVsYXkuY29ubmVjdChjb250ZXh0LmRlc3RpbmF0
aW9uKTsKKyAgICBidWZmZXJTb3VyY2Uubm90ZU9uKDApOworICAgIAorICAgIGNvbnRleHQub25j
b21wbGV0ZSA9IGNoZWNrRGVsYXllZFJlc3VsdCh0b25lQnVmZmVyKTsKKyAgICBjb250ZXh0LnN0
YXJ0UmVuZGVyaW5nKCk7Cit9CisKK3J1blRlc3QoKTsKKworPC9zY3JpcHQ+CisKKzxzY3JpcHQg
c3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152281</attachid>
            <date>2012-07-13 09:53:51 -0700</date>
            <delta_ts>2012-07-13 14:10:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90357-20120713095350.patch</filename>
            <type>text/plain</type>
            <size>9850</size>
            <attacher name="Raymond Toy">rtoy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyMzA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTFjMmYxMjk1NTE2ZDNi
ZjZmMmEyMjk3NzczNThlZjMxMGEyZGNhMi4uMTIwNDI5YmM3MGIyMjk3ZjViMzRlZDUyZDZhZjUy
NjM1NDIyMzg3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEyLTA3LTEzICBSYXlt
b25kIFRveSAgPHJ0b3lAZ29vZ2xlLmNvbT4KKworICAgICAgICBEZWxheU5vZGUgZG9lc24ndCB3
b3JrIGlmIGRlbGF5VGltZS52YWx1ZSA9PSBkZWxheVRpbWUubWF4VmFsdWUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwMzU3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW5jcmVhc2UgZGVsYXkgYnVmZmVy
IHNpemUgc2xpZ2h0bHkgc28gdGhhdCB0aGUgcmVhZCBhbmQgd3JpdGUKKyAgICAgICAgcG9pbnRl
cnMgZG9uJ3QgYmVjb21lIGVxdWFsIHdoZW4gdGhlIGRlbGF5IGFuZCB0aGUgbWF4IGRlbGF5IGFy
ZQorICAgICAgICB0aGUgc2FtZS4KKyAgICAgICAgCisgICAgICAgIFRlc3RzOiB3ZWJhdWRpby9k
ZWxheW5vZGUtbWF4LWRlZmF1bHQtZGVsYXkuaHRtbAorICAgICAgICAgICAgICAgd2ViYXVkaW8v
ZGVsYXlub2RlLW1heC1ub25kZWZhdWx0LWRlbGF5Lmh0bWwKKworICAgICAgICAqIE1vZHVsZXMv
d2ViYXVkaW8vRGVsYXlEU1BLZXJuZWwuY3BwOgorICAgICAgICAoV2ViQ29yZSk6IE1vdmVkIFNt
b290aGluZ1RpbWVDb25zdGFudCB0byBXZWJDb3JlIG5hbWVzcGFjZS4KKyAgICAgICAgKFdlYkNv
cmU6OkRlbGF5RFNQS2VybmVsOjpEZWxheURTUEtlcm5lbCk6IEFkZCBzb21lIGFkZGl0aW9uYWwg
Y2hlY2tzIHRvIHByZXZlbnQgY3Jhc2hlczsgdXNlIGJ1ZmZlckxlbmd0aEZvckRlbGF5IHRvIGNv
bXB1dGUgYnVmZmVyIGxlbmd0aC4KKyAgICAgICAgKFdlYkNvcmU6OkRlbGF5RFNQS2VybmVsOjpi
dWZmZXJMZW5ndGhGb3JEZWxheSk6IE5ldyBmdW5jdGlvbiB0byBjb21wdXRlIGJ1ZmZlciBsZW5n
dGguCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9EZWxheURTUEtlcm5lbC5oOgorICAgICAg
ICAoRGVsYXlEU1BLZXJuZWwpOiBEZWNsYXJlIGJ1ZmZlckxlbmd0aEZvckRlbGF5LiAKKwogMjAx
Mi0wNy0xMSAgS2VubmV0aCBSdXNzZWxsICA8a2JyQGdvb2dsZS5jb20+CiAKICAgICAgICAgY29t
cG9zaXRpbmcvd2ViZ2wvd2ViZ2wtbm9ucHJlbXVsdGlwbGllZC1ibGVuZC5odG1sIGlzIGZsYWt5
IG9uIExpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVs
YXlEU1BLZXJuZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheURT
UEtlcm5lbC5jcHAKaW5kZXggMmJkNTc1OWVhMjZhNDI4ZTgyMDMwYjBkYmZhYzk3M2Q5YWE3MGFi
OS4uMWYzNWU1NWEyOTZiY2QyNGEwODQ5Nzc2ODI4YTExYjRjNDc2Zjk3ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheURTUEtlcm5lbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheURTUEtlcm5lbC5jcHAKQEAgLTMz
LDIxICszMywyNSBAQAogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCi1jb25zdCBmbG9hdCBTbW9v
dGhpbmdUaW1lQ29uc3RhbnQgPSAwLjAyMGY7IC8vIDIwbXMKLSAgCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK2NvbnN0IGZsb2F0IFNtb290aGluZ1RpbWVDb25zdGFudCA9IDAuMDIwZjsgLy8gMjBt
cworCiBEZWxheURTUEtlcm5lbDo6RGVsYXlEU1BLZXJuZWwoRGVsYXlQcm9jZXNzb3IqIHByb2Nl
c3NvcikKICAgICA6IEF1ZGlvRFNQS2VybmVsKHByb2Nlc3NvcikKICAgICAsIG1fd3JpdGVJbmRl
eCgwKQogICAgICwgbV9maXJzdFRpbWUodHJ1ZSkKIHsKICAgICBBU1NFUlQocHJvY2Vzc29yICYm
IHByb2Nlc3Nvci0+c2FtcGxlUmF0ZSgpID4gMCk7Ci0gICAgaWYgKCFwcm9jZXNzb3IpCisgICAg
aWYgKCEocHJvY2Vzc29yICYmIHByb2Nlc3Nvci0+c2FtcGxlUmF0ZSgpID4gMCkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIG1fbWF4RGVsYXlUaW1lID0gcHJvY2Vzc29yLT5tYXhEZWxheVRpbWUo
KTsKLSAgICBtX2J1ZmZlci5hbGxvY2F0ZShzdGF0aWNfY2FzdDxzaXplX3Q+KHByb2Nlc3Nvci0+
c2FtcGxlUmF0ZSgpICogbV9tYXhEZWxheVRpbWUpKTsKKyAgICBBU1NFUlQobV9tYXhEZWxheVRp
bWUgPj0gMCk7CisgICAgaWYgKG1fbWF4RGVsYXlUaW1lIDwgMCkKKyAgICAgICAgcmV0dXJuOwor
ICAgIAorICAgIG1fYnVmZmVyLmFsbG9jYXRlKGJ1ZmZlckxlbmd0aEZvckRlbGF5KG1fbWF4RGVs
YXlUaW1lLCBwcm9jZXNzb3ItPnNhbXBsZVJhdGUoKSkpOwogICAgIG1fYnVmZmVyLnplcm8oKTsK
IAogICAgIG1fc21vb3RoaW5nUmF0ZSA9IEF1ZGlvVXRpbGl0aWVzOjpkaXNjcmV0ZVRpbWVDb25z
dGFudEZvclNhbXBsZVJhdGUoU21vb3RoaW5nVGltZUNvbnN0YW50LCBwcm9jZXNzb3ItPnNhbXBs
ZVJhdGUoKSk7CkBAIC02Myw3ICs2Nyw3IEBAIERlbGF5RFNQS2VybmVsOjpEZWxheURTUEtlcm5l
bChkb3VibGUgbWF4RGVsYXlUaW1lLCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIGlmIChtYXhEZWxh
eVRpbWUgPD0gMC4wKQogICAgICAgICByZXR1cm47CiAgICAgICAgIAotICAgIHNpemVfdCBidWZm
ZXJMZW5ndGggPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNhbXBsZVJhdGUgKiBtYXhEZWxheVRpbWUp
OworICAgIHNpemVfdCBidWZmZXJMZW5ndGggPSBidWZmZXJMZW5ndGhGb3JEZWxheShtYXhEZWxh
eVRpbWUsIHNhbXBsZVJhdGUpOwogICAgIEFTU0VSVChidWZmZXJMZW5ndGgpOwogICAgIGlmICgh
YnVmZmVyTGVuZ3RoKQogICAgICAgICByZXR1cm47CkBAIC03NCw2ICs3OCwxMyBAQCBEZWxheURT
UEtlcm5lbDo6RGVsYXlEU1BLZXJuZWwoZG91YmxlIG1heERlbGF5VGltZSwgZmxvYXQgc2FtcGxl
UmF0ZSkKICAgICBtX3Ntb290aGluZ1JhdGUgPSBBdWRpb1V0aWxpdGllczo6ZGlzY3JldGVUaW1l
Q29uc3RhbnRGb3JTYW1wbGVSYXRlKFNtb290aGluZ1RpbWVDb25zdGFudCwgc2FtcGxlUmF0ZSk7
CiB9CiAKK3NpemVfdCBEZWxheURTUEtlcm5lbDo6YnVmZmVyTGVuZ3RoRm9yRGVsYXkoZG91Ymxl
IG1heERlbGF5VGltZSwgZG91YmxlIHNhbXBsZVJhdGUpIGNvbnN0Cit7CisgICAgLy8gQ29tcHV0
ZSB0aGUgbGVuZ3RoIG9mIHRoZSBidWZmZXIgbmVlZGVkIHRvIGhhbmRsZSBhIG1heCBkZWxheSBv
ZiB8bWF4RGVsYXlUaW1lfC4gT25lIGlzCisgICAgLy8gYWRkZWQgdG8gaGFuZGxlIHRoZSBjYXNl
IHdoZXJlIHRoZSBhY3R1YWwgZGVsYXkgZXF1YWxzIHRoZSBtYXhpbXVtIGRlbGF5LgorICAgIHJl
dHVybiAxICsgQXVkaW9VdGlsaXRpZXM6OnRpbWVUb1NhbXBsZUZyYW1lKG1heERlbGF5VGltZSwg
c2FtcGxlUmF0ZSk7Cit9CisKIHZvaWQgRGVsYXlEU1BLZXJuZWw6OnByb2Nlc3MoY29uc3QgZmxv
YXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9uLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQog
ewogICAgIHNpemVfdCBidWZmZXJMZW5ndGggPSBtX2J1ZmZlci5zaXplKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5RFNQS2VybmVsLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5RFNQS2VybmVsLmgKaW5kZXggMWQ1NTZl
YTRlZDU4MTRiZmZmYzJkZTU4OTEyYWI4MjZhYmUzNGZmNC4uNjI0MjFlYWI1MzVjZjkxOTU5ZGE1
MjIwMzcwNDM4ZTA5MTYzOWY4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9EZWxheURTUEtlcm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vRGVsYXlEU1BLZXJuZWwuaApAQCAtNTgsNiArNTgsNyBAQCBwcml2YXRlOgogICAgIGRv
dWJsZSBtX2Rlc2lyZWREZWxheUZyYW1lczsKIAogICAgIERlbGF5UHJvY2Vzc29yKiBkZWxheVBy
b2Nlc3NvcigpIHsgcmV0dXJuIHN0YXRpY19jYXN0PERlbGF5UHJvY2Vzc29yKj4ocHJvY2Vzc29y
KCkpOyB9CisgICAgc2l6ZV90IGJ1ZmZlckxlbmd0aEZvckRlbGF5KGRvdWJsZSBkZWxheVRpbWUs
IGRvdWJsZSBzYW1wbGVSYXRlKSBjb25zdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3NDlhY2Y0OTg2ZjQyNmE0ZGMwMTMzNmVhOWU0ZDJiYTg5OWU1ZGUyLi4wYjFjMjJl
MzQxMGEyZTU3YzRkZjI1YzZlODA2YTNmNmQ2ZDVlMzU4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAK
KzIwMTItMDctMTAgIFJheW1vbmQgVG95ICA8cnRveUBnb29nbGUuY29tPgorCisgICAgICAgIERl
bGF5Tm9kZSBkb2Vzbid0IHdvcmsgaWYgZGVsYXlUaW1lLnZhbHVlID09IGRlbGF5VGltZS5tYXhW
YWx1ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTAz
NTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOZXcg
dGVzdHMgdG8gdGVzdCB0aGUgY2FzZSB3aGVuIHRoZSBkZWxheSBub2RlIGRlbGF5IGVxdWFscyB0
aGUKKyAgICAgICAgbWF4aW11bSBhbGxvd2VkIGRlbGF5LiBBZGQgb25lIHRlc3QgZm9yIHRoZSBk
ZWZhdWx0IG1heGltdW0gZGVsYXkKKyAgICAgICAgYW5kIGEgc2Vjb25kIHRlc3Qgd2l0aCBhIHVz
ZXItc2V0IG1heGltdW0gZGVsYXkuCisgICAgICAgIAorICAgICAgICAqIHdlYmF1ZGlvL2RlbGF5
bm9kZS1tYXgtZGVmYXVsdC1kZWxheS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdl
YmF1ZGlvL2RlbGF5bm9kZS1tYXgtZGVmYXVsdC1kZWxheS5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiB3ZWJhdWRpby9kZWxheW5vZGUtbWF4LW5vbmRlZmF1bHQtZGVsYXktZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiB3ZWJhdWRpby9kZWxheW5vZGUtbWF4LW5vbmRlZmF1bHQtZGVsYXku
aHRtbDogQWRkZWQuCisKIDIwMTItMDctMTEgIFphbiBEb2JlcnNlayAgPHphbmRvYmVyc2VrQGdt
YWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIEdUSyBnYXJkZW5pbmcsIGFkZGluZyBhbiBp
bWFnZSBleHBlY3RhdGlvbiBmb3IgdGhlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJhdWRp
by9kZWxheW5vZGUtbWF4LWRlZmF1bHQtZGVsYXktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
d2ViYXVkaW8vZGVsYXlub2RlLW1heC1kZWZhdWx0LWRlbGF5LWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mMDIyYjkwOGI5OTY1M2ExNjhiMzM5NDZiNDJmYmY1Y2M4NTlmZjEwCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vZGVsYXlub2RlLW1heC1kZWZhdWx0LWRlbGF5
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDkgQEAKK1Rlc3RzIERlbGF5Tm9kZSB3aXRoIGRlbGF5
IHNldCB0byBkZWZhdWx0IG1heGltdW0gZGVsYXkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworUEFTUyBUZXN0IHNpZ25hbCB3YXMgY29ycmVjdGx5IGRlbGF5ZWQgYnkgMSBzZWMuCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViYXVkaW8vZGVsYXlub2RlLW1heC1kZWZhdWx0LWRlbGF5Lmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9kZWxheW5vZGUtbWF4LWRlZmF1bHQtZGVsYXkuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42YmNjMjYwYWFiYjUyZjBkNmFmNjljOTdhYjAxNzBjZGU4OTlkOTJkCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vZGVsYXlub2RlLW1heC1kZWZh
dWx0LWRlbGF5Lmh0bWwKQEAgLTAsMCArMSw1MSBAQAorPCFET0NUWVBFIGh0bWw+CisKKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9hdWRpby10ZXN0aW5nLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZGVsYXktdGVzdGluZy5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+CisKKzxib2R5PgorCis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0cyBE
ZWxheU5vZGUgd2l0aCBkZWxheSBzZXQgdG8gZGVmYXVsdCBtYXhpbXVtIGRlbGF5LiIpOworCitm
dW5jdGlvbiBydW5UZXN0KCkgeworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxE
b25lKCk7CisgICAgfQorICAgIAorICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAg
ICAgICAgCisgICAgLy8gQ3JlYXRlIG9mZmxpbmUgYXVkaW8gY29udGV4dC4KKyAgICB2YXIgY29u
dGV4dCA9IG5ldyB3ZWJraXRBdWRpb0NvbnRleHQoMSwgc2FtcGxlUmF0ZSAqIHJlbmRlckxlbmd0
aFNlY29uZHMsIHNhbXBsZVJhdGUpOworICAgIHZhciB0b25lQnVmZmVyID0gY3JlYXRlVG9uZUJ1
ZmZlcihjb250ZXh0LCAyMCwgMjAgKiB0b25lTGVuZ3RoU2Vjb25kcywgc2FtcGxlUmF0ZSk7IC8v
IDIwSHogdG9uZQorICAgIAorICAgIHZhciBidWZmZXJTb3VyY2UgPSBjb250ZXh0LmNyZWF0ZUJ1
ZmZlclNvdXJjZSgpOworICAgIGJ1ZmZlclNvdXJjZS5idWZmZXIgPSB0b25lQnVmZmVyOworCisg
ICAgdmFyIGRlbGF5ID0gY29udGV4dC5jcmVhdGVEZWxheU5vZGUoKTsKKyAgICBkZWxheVRpbWVT
ZWNvbmRzID0gMTsKKyAgICBkZWxheS5kZWxheVRpbWUudmFsdWUgPSBkZWxheVRpbWVTZWNvbmRz
OworCisgICAgYnVmZmVyU291cmNlLmNvbm5lY3QoZGVsYXkpOworICAgIGRlbGF5LmNvbm5lY3Qo
Y29udGV4dC5kZXN0aW5hdGlvbik7CisgICAgYnVmZmVyU291cmNlLm5vdGVPbigwKTsKKyAgICAK
KyAgICBjb250ZXh0Lm9uY29tcGxldGUgPSBjaGVja0RlbGF5ZWRSZXN1bHQodG9uZUJ1ZmZlcik7
CisgICAgY29udGV4dC5zdGFydFJlbmRlcmluZygpOworfQorCitydW5UZXN0KCk7CisKKzwvc2Ny
aXB0PgorCis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmF1ZGlvL2RlbGF5bm9kZS1tYXgtbm9uZGVmYXVsdC1kZWxheS1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy93ZWJhdWRpby9kZWxheW5vZGUtbWF4LW5vbmRlZmF1bHQtZGVsYXktZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjEzZTMwZjJiMDI3OTdhYjZlZjk2YzEwZGI5NjcxNzE3ODk0NzVlNmIK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9kZWxheW5vZGUtbWF4LW5v
bmRlZmF1bHQtZGVsYXktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOSBAQAorVGVzdHMgRGVsYXlO
b2RlIHdpdGggZGVsYXkgc2V0IHRvIG5vbi1kZWZhdWx0IG1heGltdW0gZGVsYXkuCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworUEFTUyBUZXN0IHNpZ25hbCB3YXMgY29ycmVjdGx5IGRl
bGF5ZWQgYnkgMS41IHNlYy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9kZWxheW5vZGUt
bWF4LW5vbmRlZmF1bHQtZGVsYXkuaHRtbCBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL2RlbGF5bm9k
ZS1tYXgtbm9uZGVmYXVsdC1kZWxheS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQxYWQxZTJhNTk0YjEzNTQx
OTdjNzRjYzNkNGNlMzBmYTcwZWM2MGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJhdWRpby9kZWxheW5vZGUtbWF4LW5vbmRlZmF1bHQtZGVsYXkuaHRtbApAQCAtMCwwICsxLDUy
IEBACis8IURPQ1RZUEUgaHRtbD4KKworPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL2F1ZGlvLXRlc3RpbmcuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291
cmNlcy9kZWxheS10ZXN0aW5nLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHk+CisKKzxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8
c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3RzIERlbGF5Tm9kZSB3aXRoIGRlbGF5IHNldCB0byBu
b24tZGVmYXVsdCBtYXhpbXVtIGRlbGF5LiIpOworCitmdW5jdGlvbiBydW5UZXN0KCkgeworICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgfQorICAgIAorICAg
IHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICAgICAgCisgICAgLy8gQ3JlYXRlIG9m
ZmxpbmUgYXVkaW8gY29udGV4dC4KKyAgICB2YXIgY29udGV4dCA9IG5ldyB3ZWJraXRBdWRpb0Nv
bnRleHQoMSwgc2FtcGxlUmF0ZSAqIHJlbmRlckxlbmd0aFNlY29uZHMsIHNhbXBsZVJhdGUpOwor
ICAgIHZhciB0b25lQnVmZmVyID0gY3JlYXRlVG9uZUJ1ZmZlcihjb250ZXh0LCAyMCwgMjAgKiB0
b25lTGVuZ3RoU2Vjb25kcywgc2FtcGxlUmF0ZSk7IC8vIDIwSHogdG9uZQorICAgIAorICAgIHZh
ciBidWZmZXJTb3VyY2UgPSBjb250ZXh0LmNyZWF0ZUJ1ZmZlclNvdXJjZSgpOworICAgIGJ1ZmZl
clNvdXJjZS5idWZmZXIgPSB0b25lQnVmZmVyOworCisgICAgdmFyIG1heERlbGF5ID0gMS41Owor
ICAgIHZhciBkZWxheSA9IGNvbnRleHQuY3JlYXRlRGVsYXlOb2RlKG1heERlbGF5KTsKKyAgICBk
ZWxheVRpbWVTZWNvbmRzID0gbWF4RGVsYXk7CisgICAgZGVsYXkuZGVsYXlUaW1lLnZhbHVlID0g
ZGVsYXlUaW1lU2Vjb25kczsKKworICAgIGJ1ZmZlclNvdXJjZS5jb25uZWN0KGRlbGF5KTsKKyAg
ICBkZWxheS5jb25uZWN0KGNvbnRleHQuZGVzdGluYXRpb24pOworICAgIGJ1ZmZlclNvdXJjZS5u
b3RlT24oMCk7CisgICAgCisgICAgY29udGV4dC5vbmNvbXBsZXRlID0gY2hlY2tEZWxheWVkUmVz
dWx0KHRvbmVCdWZmZXIpOworICAgIGNvbnRleHQuc3RhcnRSZW5kZXJpbmcoKTsKK30KKworcnVu
VGVzdCgpOworCis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>