<?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>98586</bug_id>
          
          <creation_ts>2012-10-05 23:33:26 -0700</creation_ts>
          <short_desc>Extend random precision to 53bits</short_desc>
          <delta_ts>2014-08-02 08:54:11 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>abarth</cc>
    
    <cc>barraclough</cc>
    
    <cc>bfulgham</cc>
    
    <cc>eric</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>oliver</cc>
    
    <cc>syoichi</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>736191</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2012-10-05 23:33:26 -0700</bug_when>
    <thetext>Currently because of dividing uint32_t result, Math.random precision in JSC is 32bits.
So I suggest combining 2 uint32_t random numbers and generating 53bits precision random numbers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736195</commentid>
    <comment_count>1</comment_count>
      <attachid>167443</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2012-10-05 23:37:21 -0700</bug_when>
    <thetext>Created attachment 167443
Patch

attached rev1 patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736252</commentid>
    <comment_count>2</comment_count>
      <attachid>167443</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2012-10-06 10:10:01 -0700</bug_when>
    <thetext>Comment on attachment 167443
Patch

What&apos;s the performance impact of this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736254</commentid>
    <comment_count>3</comment_count>
      <attachid>167443</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-10-06 10:36:22 -0700</bug_when>
    <thetext>Comment on attachment 167443
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:3
&gt; +        Extend random precision to 53bits

If this creates an observable benefit, you should be able to write a regression test for it.

&gt; Source/JavaScriptCore/runtime/WeakRandom.h:71
&gt; +        uint32_t a = static_cast&lt;uint32_t&gt;(getUint32()) &gt;&gt; 5;

I think this would be clearer as a uint64_t.

&gt; Source/JavaScriptCore/runtime/WeakRandom.h:72
&gt; +        uint32_t b = static_cast&lt;uint32_t&gt;(getUint32()) &gt;&gt; 6;

I think this would be clearer as a uint64_t.

&gt; Source/JavaScriptCore/runtime/WeakRandom.h:73
&gt; +        uint64_t combined = (static_cast&lt;uint64_t&gt;(a) &lt;&lt; 26) | b;

I think it would be clearer just to shift &apos;a&apos; right by 21 and then left by 32. It&apos;s not clear what you&apos;re trying to accomplish by removing bits from both values. For example, maybe you think that increases the randomness. But if each bit is random, that&apos;s not the case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736267</commentid>
    <comment_count>4</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2012-10-06 11:44:40 -0700</bug_when>
    <thetext>
&gt; I think it would be clearer just to shift &apos;a&apos; right by 21 and then left by 32. It&apos;s not clear what you&apos;re trying to accomplish by removing bits from both values. For example, maybe you think that increases the randomness. But if each bit is random, that&apos;s not the case.


I you don&apos;t remove the overlapping bits then the likelihood of a bit in the overlapping region becomes much higher.

Here&apos;s your probability table for the overlapping region:
a  b  -&gt; a | b
0  0          0
0  1          1
1  0          1
1  1          1

so probability of a given bit in the overlapping region being 1 is 0.75 rather than 0.5 as it should be</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736268</commentid>
    <comment_count>5</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2012-10-06 11:45:41 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 167443 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=167443&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/ChangeLog:3
&gt; &gt; +        Extend random precision to 53bits
&gt; 
&gt; If this creates an observable benefit, you should be able to write a regression test for it.
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/WeakRandom.h:71
&gt; &gt; +        uint32_t a = static_cast&lt;uint32_t&gt;(getUint32()) &gt;&gt; 5;
&gt; 
&gt; I think this would be clearer as a uint64_t.
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/WeakRandom.h:72
&gt; &gt; +        uint32_t b = static_cast&lt;uint32_t&gt;(getUint32()) &gt;&gt; 6;
&gt; 
&gt; I think this would be clearer as a uint64_t.
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/WeakRandom.h:73
&gt; &gt; +        uint64_t combined = (static_cast&lt;uint64_t&gt;(a) &lt;&lt; 26) | b;
&gt; 
&gt; I think it would be clearer just to shift &apos;a&apos; right by 21 and then left by 32. It&apos;s not clear what you&apos;re trying to accomplish by removing bits from both values. For example, maybe you think that increases the randomness. But if each bit is random, that&apos;s not the case.


That said i&apos;m more concerned about pert, as at one point I did generate 53 bits of randomness, but that got killed due to the pert cost.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736269</commentid>
    <comment_count>6</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-10-06 11:46:53 -0700</bug_when>
    <thetext>&gt; I you don&apos;t remove the overlapping bits then the likelihood of a bit in the overlapping region becomes much higher.

The algorithm I suggested attempts to remove the overlapping bits. Are you saying there&apos;s a case where it won&apos;t do so?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736342</commentid>
    <comment_count>7</comment_count>
      <attachid>167443</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2012-10-07 00:51:23 -0700</bug_when>
    <thetext>Comment on attachment 167443
Patch

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

Thanks for your review.

&gt;&gt;&gt; Source/JavaScriptCore/ChangeLog:3
&gt;&gt;&gt; +        Extend random precision to 53bits
&gt;&gt; 
&gt;&gt; If this creates an observable benefit, you should be able to write a regression test for it.
&gt; 
&gt; That said i&apos;m more concerned about pert, as at one point I did generate 53 bits of randomness, but that got killed due to the pert cost.

We can observe Math.random().toString(2) result may become &gt; 32 bits floating part.
But because Math.random() result is random, so test may become erratic.
I&apos;ll append test case to revised patch.

&gt;&gt; Source/JavaScriptCore/runtime/WeakRandom.h:71
&gt;&gt; +        uint32_t a = static_cast&lt;uint32_t&gt;(getUint32()) &gt;&gt; 5;
&gt; 
&gt; I think this would be clearer as a uint64_t.

I&apos;ve got it. I&apos;ll create revised patch using uint64_t.

&gt;&gt; Source/JavaScriptCore/runtime/WeakRandom.h:73
&gt;&gt; +        uint64_t combined = (static_cast&lt;uint64_t&gt;(a) &lt;&lt; 26) | b;
&gt; 
&gt; I think it would be clearer just to shift &apos;a&apos; right by 21 and then left by 32. It&apos;s not clear what you&apos;re trying to accomplish by removing bits from both values. For example, maybe you think that increases the randomness. But if each bit is random, that&apos;s not the case.

I understand that
a = v1 &gt;&gt; 15;
b = v2;
combined = (a &lt;&lt; 32) | b;

Is it right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736346</commentid>
    <comment_count>8</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2012-10-07 01:51:40 -0700</bug_when>
    <thetext>(In reply to comment #7)

&gt; a = v1 &gt;&gt; 15;

Oops, sorry it is typo. &gt;&gt; 11 is correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736347</commentid>
    <comment_count>9</comment_count>
      <attachid>167475</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2012-10-07 01:57:11 -0700</bug_when>
    <thetext>Created attachment 167475
Patch

attached rev2 patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736350</commentid>
    <comment_count>10</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2012-10-07 02:00:22 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 167443 [details])
&gt; What&apos;s the performance impact of this?

I&apos;ve run SunSpider.

Before applying patch
============================================
RESULTS (means and 95% confidence intervals)
--------------------------------------------
Total:                 143.6ms +/- 2.7%
--------------------------------------------

  3d:                   25.5ms +/- 5.3%
    cube:                8.5ms +/- 4.4%
    morph:               6.2ms +/- 7.3%
    raytrace:           10.8ms +/- 6.8%

  access:               11.4ms +/- 4.4%
    binary-trees:        1.0ms +/- 0.0%
    fannkuch:            5.1ms +/- 4.4%
    nbody:               3.0ms +/- 0.0%
    nsieve:              2.3ms +/- 15.0%

  bitops:                7.1ms +/- 3.2%
    3bit-bits-in-byte:   1.0ms +/- 0.0%
    bits-in-byte:        2.0ms +/- 0.0%
    bitwise-and:         1.1ms +/- 20.5%
    nsieve-bits:         3.0ms +/- 0.0%

  controlflow:           1.2ms +/- 25.1%
    recursive:           1.2ms +/- 25.1%

  crypto:               12.7ms +/- 2.7%
    aes:                 7.7ms +/- 4.5%
    md5:                 3.0ms +/- 0.0%
    sha1:                2.0ms +/- 0.0%

  date:                 19.6ms +/- 2.5%
    format-tofte:       10.7ms +/- 3.2%
    format-xparb:        8.9ms +/- 2.5%

  math:                 11.7ms +/- 5.8%
    cordic:              3.0ms +/- 0.0%
    partial-sums:        6.7ms +/- 10.1%
    spectral-norm:       2.0ms +/- 0.0%

  regexp:                9.0ms +/- 9.2%
    dna:                 9.0ms +/- 9.2%

  string:               45.4ms +/- 3.3%
    base64:              4.0ms +/- 0.0%
    fasta:               5.8ms +/- 5.2%
    tagcloud:           10.9ms +/- 7.8%
    unpack-code:        19.6ms +/- 3.9%
    validate-input:      5.1ms +/- 4.4%

After applying patch
============================================
RESULTS (means and 95% confidence intervals)
--------------------------------------------
Total:                 144.1ms +/- 1.7%
--------------------------------------------

  3d:                   26.7ms +/- 6.6%
    cube:                9.1ms +/- 5.8%
    morph:               6.4ms +/- 9.4%
    raytrace:           11.2ms +/- 7.2%

  access:               11.3ms +/- 4.3%
    binary-trees:        1.1ms +/- 20.5%
    fannkuch:            5.0ms +/- 0.0%
    nbody:               3.0ms +/- 0.0%
    nsieve:              2.2ms +/- 13.7%

  bitops:                7.4ms +/- 5.0%
    3bit-bits-in-byte:   1.0ms +/- 0.0%
    bits-in-byte:        2.0ms +/- 0.0%
    bitwise-and:         1.4ms +/- 26.4%
    nsieve-bits:         3.0ms +/- 0.0%

  controlflow:           1.2ms +/- 25.1%
    recursive:           1.2ms +/- 25.1%

  crypto:               12.9ms +/- 1.8%
    aes:                 7.9ms +/- 2.9%
    md5:                 3.0ms +/- 0.0%
    sha1:                2.0ms +/- 0.0%

  date:                 19.8ms +/- 1.5%
    format-tofte:       10.8ms +/- 2.8%
    format-xparb:        9.0ms +/- 0.0%

  math:                 11.0ms +/- 0.0%
    cordic:              3.0ms +/- 0.0%
    partial-sums:        6.0ms +/- 0.0%
    spectral-norm:       2.0ms +/- 0.0%

  regexp:                8.9ms +/- 2.5%
    dna:                 8.9ms +/- 2.5%

  string:               44.9ms +/- 2.2%
    base64:              4.0ms +/- 0.0%
    fasta:               5.8ms +/- 5.2%
    tagcloud:           10.6ms +/- 3.5%
    unpack-code:        19.4ms +/- 2.6%
    validate-input:      5.1ms +/- 4.4%

I think the performance impact of this is small and acceptable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736386</commentid>
    <comment_count>11</comment_count>
      <attachid>167475</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-10-07 11:44:48 -0700</bug_when>
    <thetext>Comment on attachment 167475
Patch

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

Ollie, this patch looks good to me. What do you think?

I believe the case where 53 bits of randomness was a performance regression was back when we used Windows super crypto random, which boils a pot of tea and measures the molecular temperature before returning.

&gt; LayoutTests/fast/js/script-tests/53bits-random.js:5
&gt; +var MAX = 1000000;

toString(2) will be 55 in length if the last bit is 1. The odds of that are 1/2. If we want the odds of test failure to be 1/1000000, we should only loop about 20 times. Looping 1000000 times will hide errors in the random distribution of the last bit.

&gt; LayoutTests/fast/js/script-tests/53bits-random.js:10
&gt; +    if (Math.random().toString(2).length === (53 + 2)) {
&gt; +        found = true;

You should look *both* for a case where the last bit is 1, *and* the case where the last bit is 0. Otherwise, putting all 1&apos;s in the non-random bits will pass this test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736391</commentid>
    <comment_count>12</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2012-10-07 12:06:43 -0700</bug_when>
    <thetext>Those are fairly giant error margins, can you run with --runs 30 and make sure you aren&apos;t doing anything else at all while running? (Have all other applications closed, etc) 

(In reply to comment #10)
&gt; (In reply to comment #2)
&gt; &gt; (From update of attachment 167443 [details] [details])
&gt; &gt; What&apos;s the performance impact of this?
&gt; 
&gt; I&apos;ve run SunSpider.
&gt; 
&gt; Before applying patch
&gt; ============================================
&gt; RESULTS (means and 95% confidence intervals)
&gt; --------------------------------------------
&gt; Total:                 143.6ms +/- 2.7%
&gt; --------------------------------------------
&gt; 
&gt;   3d:                   25.5ms +/- 5.3%
&gt;     cube:                8.5ms +/- 4.4%
&gt;     morph:               6.2ms +/- 7.3%
&gt;     raytrace:           10.8ms +/- 6.8%
&gt; 
&gt;   access:               11.4ms +/- 4.4%
&gt;     binary-trees:        1.0ms +/- 0.0%
&gt;     fannkuch:            5.1ms +/- 4.4%
&gt;     nbody:               3.0ms +/- 0.0%
&gt;     nsieve:              2.3ms +/- 15.0%
&gt; 
&gt;   bitops:                7.1ms +/- 3.2%
&gt;     3bit-bits-in-byte:   1.0ms +/- 0.0%
&gt;     bits-in-byte:        2.0ms +/- 0.0%
&gt;     bitwise-and:         1.1ms +/- 20.5%
&gt;     nsieve-bits:         3.0ms +/- 0.0%
&gt; 
&gt;   controlflow:           1.2ms +/- 25.1%
&gt;     recursive:           1.2ms +/- 25.1%
&gt; 
&gt;   crypto:               12.7ms +/- 2.7%
&gt;     aes:                 7.7ms +/- 4.5%
&gt;     md5:                 3.0ms +/- 0.0%
&gt;     sha1:                2.0ms +/- 0.0%
&gt; 
&gt;   date:                 19.6ms +/- 2.5%
&gt;     format-tofte:       10.7ms +/- 3.2%
&gt;     format-xparb:        8.9ms +/- 2.5%
&gt; 
&gt;   math:                 11.7ms +/- 5.8%
&gt;     cordic:              3.0ms +/- 0.0%
&gt;     partial-sums:        6.7ms +/- 10.1%
&gt;     spectral-norm:       2.0ms +/- 0.0%
&gt; 
&gt;   regexp:                9.0ms +/- 9.2%
&gt;     dna:                 9.0ms +/- 9.2%
&gt; 
&gt;   string:               45.4ms +/- 3.3%
&gt;     base64:              4.0ms +/- 0.0%
&gt;     fasta:               5.8ms +/- 5.2%
&gt;     tagcloud:           10.9ms +/- 7.8%
&gt;     unpack-code:        19.6ms +/- 3.9%
&gt;     validate-input:      5.1ms +/- 4.4%
&gt; 
&gt; After applying patch
&gt; ============================================
&gt; RESULTS (means and 95% confidence intervals)
&gt; --------------------------------------------
&gt; Total:                 144.1ms +/- 1.7%
&gt; --------------------------------------------
&gt; 
&gt;   3d:                   26.7ms +/- 6.6%
&gt;     cube:                9.1ms +/- 5.8%
&gt;     morph:               6.4ms +/- 9.4%
&gt;     raytrace:           11.2ms +/- 7.2%
&gt; 
&gt;   access:               11.3ms +/- 4.3%
&gt;     binary-trees:        1.1ms +/- 20.5%
&gt;     fannkuch:            5.0ms +/- 0.0%
&gt;     nbody:               3.0ms +/- 0.0%
&gt;     nsieve:              2.2ms +/- 13.7%
&gt; 
&gt;   bitops:                7.4ms +/- 5.0%
&gt;     3bit-bits-in-byte:   1.0ms +/- 0.0%
&gt;     bits-in-byte:        2.0ms +/- 0.0%
&gt;     bitwise-and:         1.4ms +/- 26.4%
&gt;     nsieve-bits:         3.0ms +/- 0.0%
&gt; 
&gt;   controlflow:           1.2ms +/- 25.1%
&gt;     recursive:           1.2ms +/- 25.1%
&gt; 
&gt;   crypto:               12.9ms +/- 1.8%
&gt;     aes:                 7.9ms +/- 2.9%
&gt;     md5:                 3.0ms +/- 0.0%
&gt;     sha1:                2.0ms +/- 0.0%
&gt; 
&gt;   date:                 19.8ms +/- 1.5%
&gt;     format-tofte:       10.8ms +/- 2.8%
&gt;     format-xparb:        9.0ms +/- 0.0%
&gt; 
&gt;   math:                 11.0ms +/- 0.0%
&gt;     cordic:              3.0ms +/- 0.0%
&gt;     partial-sums:        6.0ms +/- 0.0%
&gt;     spectral-norm:       2.0ms +/- 0.0%
&gt; 
&gt;   regexp:                8.9ms +/- 2.5%
&gt;     dna:                 8.9ms +/- 2.5%
&gt; 
&gt;   string:               44.9ms +/- 2.2%
&gt;     base64:              4.0ms +/- 0.0%
&gt;     fasta:               5.8ms +/- 5.2%
&gt;     tagcloud:           10.6ms +/- 3.5%
&gt;     unpack-code:        19.4ms +/- 2.6%
&gt;     validate-input:      5.1ms +/- 4.4%
&gt; 
&gt; I think the performance impact of this is small and acceptable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736396</commentid>
    <comment_count>13</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2012-10-07 12:41:13 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Those are fairly giant error margins, can you run with --runs 30 and make sure you aren&apos;t doing anything else at all while running? (Have all other applications closed, etc) 

Sure. I closed all other applications and ran SunSpider with --runs=30.
JSC is compiled as Release.

Before applying patch
============================================
RESULTS (means and 95% confidence intervals)
--------------------------------------------
Total:                 132.7ms +/- 0.3%
--------------------------------------------

  3d:                   24.0ms +/- 0.0%
    cube:                8.0ms +/- 0.0%
    morph:               6.0ms +/- 0.0%
    raytrace:           10.0ms +/- 0.0%

  access:               10.8ms +/- 2.1%
    binary-trees:        1.1ms +/- 11.4%
    fannkuch:            5.0ms +/- 1.4%
    nbody:               2.6ms +/- 7.3%
    nsieve:              2.1ms +/- 4.6%

  bitops:                6.5ms +/- 3.3%
    3bit-bits-in-byte:   1.0ms +/- 0.0%
    bits-in-byte:        2.0ms +/- 0.0%
    bitwise-and:         1.0ms +/- 6.6%
    nsieve-bits:         2.4ms +/- 7.8%

  controlflow:           1.0ms +/- 0.0%
    recursive:           1.0ms +/- 0.0%

  crypto:               11.2ms +/- 1.3%
    aes:                 7.0ms +/- 0.0%
    md5:                 2.2ms +/- 6.5%
    sha1:                2.0ms +/- 0.0%

  date:                 18.5ms +/- 1.0%
    format-tofte:       10.0ms +/- 0.0%
    format-xparb:        8.5ms +/- 2.2%

  math:                 10.8ms +/- 1.4%
    cordic:              2.8ms +/- 5.4%
    partial-sums:        6.0ms +/- 0.0%
    spectral-norm:       2.0ms +/- 0.0%

  regexp:                8.0ms +/- 0.0%
    dna:                 8.0ms +/- 0.0%

  string:               42.0ms +/- 0.0%
    base64:              4.0ms +/- 0.0%
    fasta:               5.0ms +/- 0.0%
    tagcloud:           10.0ms +/- 0.0%
    unpack-code:        18.0ms +/- 0.0%
    validate-input:      5.0ms +/- 0.0%


After applying patch
============================================
RESULTS (means and 95% confidence intervals)
--------------------------------------------
Total:                 133.0ms +/- 0.4%
--------------------------------------------

  3d:                   23.9ms +/- 0.4%
    cube:                8.0ms +/- 0.0%
    morph:               6.0ms +/- 1.1%
    raytrace:           10.0ms +/- 0.7%

  access:               10.9ms +/- 2.3%
    binary-trees:        1.0ms +/- 0.0%
    fannkuch:            5.1ms +/- 2.2%
    nbody:               2.6ms +/- 7.2%
    nsieve:              2.2ms +/- 6.5%

  bitops:                6.6ms +/- 3.6%
    3bit-bits-in-byte:   1.0ms +/- 0.0%
    bits-in-byte:        2.0ms +/- 0.0%
    bitwise-and:         1.1ms +/- 8.9%
    nsieve-bits:         2.5ms +/- 7.6%

  controlflow:           1.0ms +/- 0.0%
    recursive:           1.0ms +/- 0.0%

  crypto:               11.3ms +/- 1.6%
    aes:                 7.0ms +/- 0.0%
    md5:                 2.3ms +/- 7.7%
    sha1:                2.0ms +/- 0.0%

  date:                 18.6ms +/- 1.0%
    format-tofte:       10.0ms +/- 0.7%
    format-xparb:        8.5ms +/- 2.2%

  math:                 10.5ms +/- 1.8%
    cordic:              2.5ms +/- 7.5%
    partial-sums:        6.0ms +/- 0.0%
    spectral-norm:       2.0ms +/- 0.0%

  regexp:                8.0ms +/- 0.0%
    dna:                 8.0ms +/- 0.0%

  string:               42.2ms +/- 0.4%
    base64:              4.0ms +/- 0.0%
    fasta:               5.1ms +/- 2.5%
    tagcloud:           10.0ms +/- 0.0%
    unpack-code:        18.1ms +/- 0.5%
    validate-input:      5.0ms +/- 0.0%</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736398</commentid>
    <comment_count>14</comment_count>
      <attachid>167475</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2012-10-07 12:49:17 -0700</bug_when>
    <thetext>Comment on attachment 167475
Patch

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

Thanks for your review. I&apos;ll fix test and attach revised patch.

&gt;&gt; LayoutTests/fast/js/script-tests/53bits-random.js:5
&gt;&gt; +var MAX = 1000000;
&gt; 
&gt; toString(2) will be 55 in length if the last bit is 1. The odds of that are 1/2. If we want the odds of test failure to be 1/1000000, we should only loop about 20 times. Looping 1000000 times will hide errors in the random distribution of the last bit.

Thanks for your pointing. Right. So I&apos;ll change it to 20.

&gt;&gt; LayoutTests/fast/js/script-tests/53bits-random.js:10
&gt;&gt; +        found = true;
&gt; 
&gt; You should look *both* for a case where the last bit is 1, *and* the case where the last bit is 0. Otherwise, putting all 1&apos;s in the non-random bits will pass this test.

You&apos;re right. I&apos;ll make sure that 53 + 1 length pattern comes (that is, last bit is 0).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736400</commentid>
    <comment_count>15</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2012-10-07 12:50:40 -0700</bug_when>
    <thetext>&gt; You&apos;re right. I&apos;ll make sure that 53 + 1 length pattern comes (that is, last bit is 0).

Ah, it is not good. I&apos;ll make sure that less than 55 length pattern comes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736402</commentid>
    <comment_count>16</comment_count>
      <attachid>167484</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2012-10-07 12:59:08 -0700</bug_when>
    <thetext>Created attachment 167484
Patch

attached rev3 patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736425</commentid>
    <comment_count>17</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-10-07 14:45:23 -0700</bug_when>
    <thetext>&gt; I believe the case where 53 bits of randomness was a performance regression was back when we used Windows super crypto random, which boils a pot of tea and measures the molecular temperature before returning.

As an englishman I am offended by perfectly innocent pots of tea being unfairly defamed and slandered like this. ;-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740979</commentid>
    <comment_count>18</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2012-10-12 09:42:59 -0700</bug_when>
    <thetext>(In reply to comment #12)
Oliver, is it (https://bugs.webkit.org/show_bug.cgi?id=98586#c13 ) acceptable result for you?
Personally I think this difference is errors and no performance regression is observed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775194</commentid>
    <comment_count>19</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2012-11-25 23:51:12 -0800</bug_when>
    <thetext>So, is this patch ready to land?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775445</commentid>
    <comment_count>20</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2012-11-26 06:53:26 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; So, is this patch ready to land?

Rev3 patch is not reviewed yet, but this patch fixes issues pointed at #11.
And at #13, I made sure that this patch has no effect on performance regression.
So I think this patch is ready to land.
I would appreciate if anyone would review rev3 patch &amp; land it :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775638</commentid>
    <comment_count>21</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2012-11-26 10:41:21 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; (In reply to comment #19)
&gt; &gt; So, is this patch ready to land?
&gt; 
&gt; Rev3 patch is not reviewed yet, but this patch fixes issues pointed at #11.
&gt; And at #13, I made sure that this patch has no effect on performance regression.
&gt; So I think this patch is ready to land.
&gt; I would appreciate if anyone would review rev3 patch &amp; land it :)

Sorry :-)  That message was aimed at barraclough, ggaren, or olliej.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775721</commentid>
    <comment_count>22</comment_count>
      <attachid>167484</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2012-11-26 11:38:49 -0800</bug_when>
    <thetext>Comment on attachment 167484
Patch

The more i look at this the less happy i am.  In principle I am in favour of having more random bits in the double, but the reality is that this method of getting that randomness produces a result where the low 32 bits will be extremely highly correlated with the high 21 bits.

I&apos;d almost be tempted to pull double get() out of WeakRandom, and have a WeakRandomDouble class that has two separately initialized WeakRandom members, and use those two separate generators for the double.  This will remove the interdependency between the two.  As it is you&apos;ve halved the period of the generator (something i may look at entirely independently later anyway), and you have not really gained an increase in the randomness of the low bits.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776708</commentid>
    <comment_count>23</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2012-11-27 06:36:31 -0800</bug_when>
    <thetext>(In reply to comment #22)

Thanks for your review.

&gt; (From update of attachment 167484 [details])
&gt; The more i look at this the less happy i am.  In principle I am in favour of having more random bits in the double, but the reality is that this method of getting that randomness produces a result where the low 32 bits will be extremely highly correlated with the high 21 bits.
&gt; 
&gt; I&apos;d almost be tempted to pull double get() out of WeakRandom, and have a WeakRandomDouble class that has two separately initialized WeakRandom members, and use those two separate generators for the double.  This will remove the interdependency between the two.  As it is you&apos;ve halved the period of the generator (something i may look at entirely independently later anyway), and you have not really gained an increase in the randomness of the low bits.

Right, thanks.
So I&apos;ll create new class WeakDoubleRandom and add it to JSGlobalObject members.
WeakDoubleRandom has 2 WeakRandom object and generates random double number by using them.

JSGlobalObject::weakRandomInteger needs uint32_t random value. But I think it is better to generate uint32_t random value by WeakRandom object instead of generating by WeakDoubleRandom object.

If generate 32bit value by WeakDoubleRandom, we can take 3 ways,
1:
generate 32bit value by using one WeakRandom object and return it. Another WeakRandom object is not used.

2:
generate 32bit value by using one WeakRandom object and return it. Another WeakRandom object is used, but value is discarded.

3:
generate two 32bit values by using two WeakRandom objects and discard 16bit and combine them to 32bit.

I think 1 is not good for WeakDoubleRandom&apos;s randomness and 2 and 3 are not good for weakRandomInteger performance.
So I suggest adding WeakDoubleRandom to JSGlobalObject in order to generate double numbers and leaving JSGlobalObject&apos;s WeakRandom object for 32bit random numbers.

I&apos;ll create revised patch soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776747</commentid>
    <comment_count>24</comment_count>
      <attachid>176267</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2012-11-27 07:52:04 -0800</bug_when>
    <thetext>Created attachment 176267
Patch

attached rev4 patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776800</commentid>
    <comment_count>25</comment_count>
      <attachid>176277</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2012-11-27 08:44:33 -0800</bug_when>
    <thetext>Created attachment 176277
Patch

Oops. Rebased the topic branch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976901</commentid>
    <comment_count>26</comment_count>
      <attachid>176277</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-02-05 11:04:24 -0800</bug_when>
    <thetext>Comment on attachment 176277
Patch

Clearing review flag on patches from before 2014. If this patch is still relevant, please reset the r? flag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>977285</commentid>
    <comment_count>27</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2014-02-06 01:01:37 -0800</bug_when>
    <thetext>(In reply to comment #26)
&gt; (From update of attachment 176277 [details])
&gt; Clearing review flag on patches from before 2014. If this patch is still relevant, please reset the r? flag.

Thank you. I&apos;ll rebase this patch and reset r? flag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1026239</commentid>
    <comment_count>28</comment_count>
      <attachid>235888</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2014-08-01 08:12:16 -0700</bug_when>
    <thetext>Created attachment 235888
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1026240</commentid>
    <comment_count>29</comment_count>
      <attachid>235888</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2014-08-01 08:14:17 -0700</bug_when>
    <thetext>Comment on attachment 235888
Patch

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

Added comments.

&gt; Source/JavaScriptCore/runtime/WeakDoubleRandom.h:61
&gt; +        m_high.getUint32();

In this patch, to generate 32bit value, discarded the value from the random generator for high bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1026241</commentid>
    <comment_count>30</comment_count>
      <attachid>235888</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2014-08-01 08:20:20 -0700</bug_when>
    <thetext>Comment on attachment 235888
Patch

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

Added comment part 2

&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:175
&gt; +    , m_weakDoubleRandom(generateSeed(), generateSeed())

One concern is that, when these 2 seed value becomes the same, the state of the used 2 random generator in WeakDoubleRandom becomes the same.
If it is not preferable, I think there&apos;s 2 way to prevent it.

1.
Generate 2 seed values from 1 seed value. Maybe initializing WeakRandom with the provided seed and generate 2 seeds from that.

2.
Using 1 WeakRandom in WeakDoubleRandom and generate 2 values in WeakDoubleRandom::get. This is typical(I think) and old solution in the previous patch.
But this has problems pointed at #22.

Do you think about this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1026245</commentid>
    <comment_count>31</comment_count>
      <attachid>235890</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2014-08-01 09:03:33 -0700</bug_when>
    <thetext>Created attachment 235890
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1026261</commentid>
    <comment_count>32</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-08-01 10:32:34 -0700</bug_when>
    <thetext>(In reply to comment #31)
&gt; Created an attachment (id=235890) [details]
&gt; Patch

I would simply do:

double WeakRandom::get()
{
    uint64_t result = advance();
    result &lt;&lt;= 32;
    result += advance();
    result &amp;= (1 &lt;&lt; 53) - 1
    return result / (double)(1 &lt;&lt; 53); 
}

Which should provide sufficient entropy for Math.random()

That said i am unconvinced that Math.random() really requires this, it&apos;s not expected to be a foot source of entropy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1026273</commentid>
    <comment_count>33</comment_count>
      <attachid>235890</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2014-08-01 10:56:54 -0700</bug_when>
    <thetext>Comment on attachment 235890
Patch

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

Moved comments to the latest patch.

&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:175
&gt; +    , m_weakDoubleRandom(generateSeed(), generateSeed())

One concern is that, when these 2 seed value becomes the same, the state of the used 2 random generator in WeakDoubleRandom becomes the same.
If it is not preferable, I think there&apos;s 2 way to prevent it.

1.
Generate 2 seed values from 1 seed value. Maybe initializing WeakRandom with the provided seed and generate 2 seeds from that.

2.
Using 1 WeakRandom in WeakDoubleRandom and generate 2 values in WeakDoubleRandom::get. This is typical(I think) and old solution in the previous patch.
But this has problems pointed at #22.

Do you think about this?

&gt; Source/JavaScriptCore/runtime/WeakDoubleRandom.h:60
&gt; +        // Discard a generated value from the random generator for high bit.

In this patch, to generate 32bit value, discarded the value from the random generator for high bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1026300</commentid>
    <comment_count>34</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2014-08-01 11:51:43 -0700</bug_when>
    <thetext>(In reply to comment #32)
&gt; (In reply to comment #31)
&gt; &gt; Created an attachment (id=235890) [details] [details]
&gt; &gt; Patch
&gt; 
&gt; I would simply do:
&gt; 
&gt; double WeakRandom::get()
&gt; {
&gt;     uint64_t result = advance();
&gt;     result &lt;&lt;= 32;
&gt;     result += advance();
&gt;     result &amp;= (1 &lt;&lt; 53) - 1
&gt;     return result / (double)(1 &lt;&lt; 53); 
&gt; }
&gt; 
&gt; Which should provide sufficient entropy for Math.random()
&gt; 
&gt; That said i am unconvinced that Math.random() really requires this, it&apos;s not expected to be a foot source of entropy

Ah, OK.
Investigating the other engines, SpiderMonkey has 53bit entropy, but V8 has 32bit entropy. So larger entropy is nice I think, but 32bit is acceptable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1026323</commentid>
    <comment_count>35</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2014-08-01 13:24:44 -0700</bug_when>
    <thetext>Closing the bug. Thanks for your reviews :)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167443</attachid>
            <date>2012-10-05 23:37:21 -0700</date>
            <delta_ts>2012-10-07 01:57:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98586-20121006153628.patch</filename>
            <type>text/plain</type>
            <size>1553</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwNTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
MGViZTM3MDBlZDM3NDBmMDkwZDdiMDNiZTE4YWZiMzQ1NDdkMTEzLi5jMTRiNmQwZDU3ZGM4YWNl
MTRhZjg4OGZiZmFkODFkYzkyZTFmZWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAxMi0xMC0wNSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBFeHRlbmQgcmFuZG9tIHByZWNpc2lvbiB0byA1M2JpdHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4NTg2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBydW50aW1lL1dlYWtS
YW5kb20uaDoKKyAgICAgICAgKEpTQzo6V2Vha1JhbmRvbTo6Z2V0KToKKwogMjAxMi0xMC0wNSAg
TWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgogCiAgICAgICAgIEpTQyBz
aG91bGQgaGF2ZSBhIHdheSB0byBnYXRoZXIgYW5kIGxvZyBIZWFwIG1lbW9yeSB1c2UgYW5kIHBh
dXNlIHRpbWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFr
UmFuZG9tLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrUmFuZG9tLmgKaW5k
ZXggM2NkMTAxNmQzYmRjMjliZDhmZTIwZTNlNWE3NWRhMjUxNDk2OGVmYi4uNWFiYmZhNWNiODFh
M2MwNDg1YTg5YjQ5MGI2NjMwMjJkZDUzZTFmZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvV2Vha1JhbmRvbS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1dlYWtSYW5kb20uaApAQCAtNTAsNyArNTAsNyBAQAogI2lmbmRlZiBXZWFrUmFuZG9t
X2gKICNkZWZpbmUgV2Vha1JhbmRvbV9oCiAKLSNpbmNsdWRlIDxsaW1pdHMuaD4KKyNpbmNsdWRl
IDxzdGRpbnQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBK
U0MgewpAQCAtNjgsNyArNjgsMTAgQEAgcHVibGljOgogCiAgICAgZG91YmxlIGdldCgpCiAgICAg
ewotICAgICAgICByZXR1cm4gYWR2YW5jZSgpIC8gKFVJTlRfTUFYICsgMS4wKTsKKyAgICAgICAg
dWludDMyX3QgYSA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihnZXRVaW50MzIoKSkgPj4gNTsKKyAg
ICAgICAgdWludDMyX3QgYiA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihnZXRVaW50MzIoKSkgPj4g
NjsKKyAgICAgICAgdWludDY0X3QgY29tYmluZWQgPSAoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGEp
IDw8IDI2KSB8IGI7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KGNvbWJpbmVk
KSAvIHN0YXRpY19jYXN0PGRvdWJsZT4oMUxMIDw8IDUzKTsKICAgICB9CiAKICAgICB1bnNpZ25l
ZCBnZXRVaW50MzIoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167475</attachid>
            <date>2012-10-07 01:57:11 -0700</date>
            <delta_ts>2012-10-07 12:59:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98586-20121007175615.patch</filename>
            <type>text/plain</type>
            <size>4686</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwNTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
MGViZTM3MDBlZDM3NDBmMDkwZDdiMDNiZTE4YWZiMzQ1NDdkMTEzLi5kOWMyZDZmNjFlNTgwMzc4
ZTI1NmZiMWJkMGFkZTRmNTIyYzc3NmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxMi0xMC0wNyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBFeHRlbmQgcmFuZG9tIHByZWNpc2lvbiB0byA1M2JpdHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4NTg2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAgICAgICAgKiBydW50aW1lL1dlYWtS
YW5kb20uaDoKKyAgICAgICAgKEpTQzo6V2Vha1JhbmRvbTo6Z2V0KToKKyAgICAgICAgKEpTQzo6
V2Vha1JhbmRvbTo6Z2V0VWludDMyKToKKwogMjAxMi0xMC0wNSAgTWFyayBIYWhuZW5iZXJnICA8
bWhhaG5lbmJlcmdAYXBwbGUuY29tPgogCiAgICAgICAgIEpTQyBzaG91bGQgaGF2ZSBhIHdheSB0
byBnYXRoZXIgYW5kIGxvZyBIZWFwIG1lbW9yeSB1c2UgYW5kIHBhdXNlIHRpbWVzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrUmFuZG9tLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrUmFuZG9tLmgKaW5kZXggM2NkMTAxNmQzYmRjMjli
ZDhmZTIwZTNlNWE3NWRhMjUxNDk2OGVmYi4uYmJkNTU5MGUwNzhhMGRjMTYzY2RlMWVhODFiMmFj
ZGQyNWFhMTY5YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vh
a1JhbmRvbS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtSYW5kb20u
aApAQCAtNTAsNyArNTAsNyBAQAogI2lmbmRlZiBXZWFrUmFuZG9tX2gKICNkZWZpbmUgV2Vha1Jh
bmRvbV9oCiAKLSNpbmNsdWRlIDxsaW1pdHMuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNs
dWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNjgsMTAgKzY4
LDEzIEBAIHB1YmxpYzoKIAogICAgIGRvdWJsZSBnZXQoKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkdmFuY2UoKSAvIChVSU5UX01BWCArIDEuMCk7CisgICAgICAgIHVpbnQ2NF90IGEgPSBnZXRV
aW50MzIoKSA+PiAxMTsKKyAgICAgICAgdWludDY0X3QgYiA9IGdldFVpbnQzMigpOworICAgICAg
ICB1aW50NjRfdCBjb21iaW5lZCA9IChhIDw8IDMyKSB8IGI7CisgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxkb3VibGU+KGNvbWJpbmVkKSAvIHN0YXRpY19jYXN0PGRvdWJsZT4oMUxMIDw8IDUz
KTsKICAgICB9CiAKLSAgICB1bnNpZ25lZCBnZXRVaW50MzIoKQorICAgIHVpbnQzMl90IGdldFVp
bnQzMigpCiAgICAgewogICAgICAgICByZXR1cm4gYWR2YW5jZSgpOwogICAgIH0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBm
MjkyZDg3MDlkZDI4MDk2NTZjNWJiZWY3MTIwZWNlYTI5ZjVkMGY3Li4xOWQ2Mjg0MjNiMDk4ZGVm
MTdkZDkwMTdiMGUwYzdhM2Q1ODA1YjA4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMTAt
MDcgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgRXh0
ZW5kIHJhbmRvbSBwcmVjaXNpb24gdG8gNTNiaXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODU4NgorCisgICAgICAgIFJldmlld2VkIGJ5IEdlb2Zm
cmV5IEdhcmVuLgorCisgICAgICAgICogZmFzdC9qcy81M2JpdHMtcmFuZG9tLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy81M2JpdHMtcmFuZG9tLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvanMvc2NyaXB0LXRlc3RzLzUzYml0cy1yYW5kb20uanM6IEFkZGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvanMvNTNiaXRzLXJhbmRvbS1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorCiAyMDEyLTEwLTA1ICBYaWFuemh1IFdhbmcgIDx3YW5neGlhbnpodUBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgT3BlblR5cGVWZXJ0aWNhbERhdGEgaXNzdWUgd2l0aCBE
cm9pZFNhbnNGYWxsYmFjay50dGYgb24gY2hyb21pdW0tYW5kcm9pZCBhbmQgY2hyb21pdW0tbGlu
dXgKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvanMvNTNiaXRzLXJhbmRvbS1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2pzLzUzYml0cy1yYW5kb20tZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmFlYjU2YTdkNjZlYjYzMzk2MWJmNWFjOWFhMDMyNmE2NDM1N2Q4ZDkKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2pzLzUzYml0cy1yYW5kb20tZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTAgQEAKK1RoaXMgdGVzdHMgdGhhdCBnZW5lcmF0aW5nIDUzYml0cyBw
cmVjaXNpb24gcmFuZG9tIG51bWJlcnMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
CitQQVNTIGZvdW5kIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2pzLzUzYml0cy1y
YW5kb20uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvanMvNTNiaXRzLXJhbmRvbS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmMxNmI2M2U1YTY3MTcxOGNkMDk3NDg5YzcwZTQwMzQ2MTc0NGVmMmQKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2pzLzUzYml0cy1yYW5kb20uaHRtbApAQCAtMCww
ICsxLDEwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvNTNi
aXRzLXJhbmRvbS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy81M2JpdHMtcmFuZG9tLmpzIGIvTGF5b3V0VGVzdHMv
ZmFzdC9qcy9zY3JpcHQtdGVzdHMvNTNiaXRzLXJhbmRvbS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42OTg2NTMw
NzhiNThlN2FhMmJhYjJmNzkyYThhNWFjNGQyMjllYWFlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvNTNiaXRzLXJhbmRvbS5qcwpAQCAtMCwwICsx
LDE1IEBACitkZXNjcmlwdGlvbigKKyJUaGlzIHRlc3RzIHRoYXQgZ2VuZXJhdGluZyA1M2JpdHMg
cHJlY2lzaW9uIHJhbmRvbSBudW1iZXJzLiIKKyk7CisKK3ZhciBNQVggPSAxMDAwMDAwOwordmFy
IGZvdW5kID0gZmFsc2U7Citmb3IgKHZhciBpID0gMDsgaSA8IE1BWDsgKytpKSB7CisgICAgLy8g
NTNiaXRzICsgJzAuJy5sZW5ndGgKKyAgICBpZiAoTWF0aC5yYW5kb20oKS50b1N0cmluZygyKS5s
ZW5ndGggPT09ICg1MyArIDIpKSB7CisgICAgICAgIGZvdW5kID0gdHJ1ZTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorfQorCitzaG91bGRCZVRydWUoJ2ZvdW5kJyk7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2pzLzUzYml0cy1yYW5kb20tZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9qcy81M2JpdHMtcmFuZG9t
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZDljNGYyZmVjMGUyMDRjYTBhMmQxMTliOWEzOTU2
ZDQ5NTRiN2I2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vZmFzdC9qcy81M2JpdHMtcmFuZG9tLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitU
aGlzIHRlc3RzIHRoYXQgZ2VuZXJhdGluZyA1M2JpdHMgcHJlY2lzaW9uIHJhbmRvbSBudW1iZXJz
LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworRkFJTCBmb3VuZCBzaG91bGQgYmUg
dHJ1ZS4gV2FzIGZhbHNlLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167484</attachid>
            <date>2012-10-07 12:59:08 -0700</date>
            <delta_ts>2012-11-27 07:51:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98586-20121008045812.patch</filename>
            <type>text/plain</type>
            <size>5007</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwNTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
MGViZTM3MDBlZDM3NDBmMDkwZDdiMDNiZTE4YWZiMzQ1NDdkMTEzLi5kOWMyZDZmNjFlNTgwMzc4
ZTI1NmZiMWJkMGFkZTRmNTIyYzc3NmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxMi0xMC0wNyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBFeHRlbmQgcmFuZG9tIHByZWNpc2lvbiB0byA1M2JpdHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4NTg2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAgICAgICAgKiBydW50aW1lL1dlYWtS
YW5kb20uaDoKKyAgICAgICAgKEpTQzo6V2Vha1JhbmRvbTo6Z2V0KToKKyAgICAgICAgKEpTQzo6
V2Vha1JhbmRvbTo6Z2V0VWludDMyKToKKwogMjAxMi0xMC0wNSAgTWFyayBIYWhuZW5iZXJnICA8
bWhhaG5lbmJlcmdAYXBwbGUuY29tPgogCiAgICAgICAgIEpTQyBzaG91bGQgaGF2ZSBhIHdheSB0
byBnYXRoZXIgYW5kIGxvZyBIZWFwIG1lbW9yeSB1c2UgYW5kIHBhdXNlIHRpbWVzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrUmFuZG9tLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrUmFuZG9tLmgKaW5kZXggM2NkMTAxNmQzYmRjMjli
ZDhmZTIwZTNlNWE3NWRhMjUxNDk2OGVmYi4uYmJkNTU5MGUwNzhhMGRjMTYzY2RlMWVhODFiMmFj
ZGQyNWFhMTY5YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vh
a1JhbmRvbS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtSYW5kb20u
aApAQCAtNTAsNyArNTAsNyBAQAogI2lmbmRlZiBXZWFrUmFuZG9tX2gKICNkZWZpbmUgV2Vha1Jh
bmRvbV9oCiAKLSNpbmNsdWRlIDxsaW1pdHMuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNs
dWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNjgsMTAgKzY4
LDEzIEBAIHB1YmxpYzoKIAogICAgIGRvdWJsZSBnZXQoKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkdmFuY2UoKSAvIChVSU5UX01BWCArIDEuMCk7CisgICAgICAgIHVpbnQ2NF90IGEgPSBnZXRV
aW50MzIoKSA+PiAxMTsKKyAgICAgICAgdWludDY0X3QgYiA9IGdldFVpbnQzMigpOworICAgICAg
ICB1aW50NjRfdCBjb21iaW5lZCA9IChhIDw8IDMyKSB8IGI7CisgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxkb3VibGU+KGNvbWJpbmVkKSAvIHN0YXRpY19jYXN0PGRvdWJsZT4oMUxMIDw8IDUz
KTsKICAgICB9CiAKLSAgICB1bnNpZ25lZCBnZXRVaW50MzIoKQorICAgIHVpbnQzMl90IGdldFVp
bnQzMigpCiAgICAgewogICAgICAgICByZXR1cm4gYWR2YW5jZSgpOwogICAgIH0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBm
MjkyZDg3MDlkZDI4MDk2NTZjNWJiZWY3MTIwZWNlYTI5ZjVkMGY3Li4xOWQ2Mjg0MjNiMDk4ZGVm
MTdkZDkwMTdiMGUwYzdhM2Q1ODA1YjA4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMTAt
MDcgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgRXh0
ZW5kIHJhbmRvbSBwcmVjaXNpb24gdG8gNTNiaXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODU4NgorCisgICAgICAgIFJldmlld2VkIGJ5IEdlb2Zm
cmV5IEdhcmVuLgorCisgICAgICAgICogZmFzdC9qcy81M2JpdHMtcmFuZG9tLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy81M2JpdHMtcmFuZG9tLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvanMvc2NyaXB0LXRlc3RzLzUzYml0cy1yYW5kb20uanM6IEFkZGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvanMvNTNiaXRzLXJhbmRvbS1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorCiAyMDEyLTEwLTA1ICBYaWFuemh1IFdhbmcgIDx3YW5neGlhbnpodUBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgT3BlblR5cGVWZXJ0aWNhbERhdGEgaXNzdWUgd2l0aCBE
cm9pZFNhbnNGYWxsYmFjay50dGYgb24gY2hyb21pdW0tYW5kcm9pZCBhbmQgY2hyb21pdW0tbGlu
dXgKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvanMvNTNiaXRzLXJhbmRvbS1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2pzLzUzYml0cy1yYW5kb20tZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmJiZjEwZTk5YzNjYjdlYjBkMTk5YWU5YTUyYjM4ZGUyN2RjYTY2NWYKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2pzLzUzYml0cy1yYW5kb20tZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTEgQEAKK1RoaXMgdGVzdHMgdGhhdCBnZW5lcmF0aW5nIDUzYml0cyBw
cmVjaXNpb24gcmFuZG9tIG51bWJlcnMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
CitQQVNTIGZvdW5kNTNCaXRzIGlzIHRydWUKK1BBU1MgZm91bmRMZXNzVGhhbjUzQml0cyBpcyB0
cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9qcy81M2JpdHMtcmFuZG9tLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2pzLzUzYml0cy1yYW5kb20uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMTZiNjNlNWE2
NzE3MThjZDA5NzQ4OWM3MGU0MDM0NjE3NDRlZjJkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9qcy81M2JpdHMtcmFuZG9tLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NU
WVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzLzUzYml0cy1yYW5kb20uanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3Jp
cHQtdGVzdHMvNTNiaXRzLXJhbmRvbS5qcyBiL0xheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRl
c3RzLzUzYml0cy1yYW5kb20uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM2MDQ0N2RmMThiZGNlOTYwYTg5ZDQ0
NTljZWQ0OTg0YzJhMzM2YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvanMv
c2NyaXB0LXRlc3RzLzUzYml0cy1yYW5kb20uanMKQEAgLTAsMCArMSwyNCBAQAorZGVzY3JpcHRp
b24oCisiVGhpcyB0ZXN0cyB0aGF0IGdlbmVyYXRpbmcgNTNiaXRzIHByZWNpc2lvbiByYW5kb20g
bnVtYmVycy4iCispOworCit2YXIgTUFYID0gMjA7Cit2YXIgZm91bmQ1M0JpdHMgPSBmYWxzZTsK
K3ZhciBmb3VuZExlc3NUaGFuNTNCaXRzID0gZmFsc2U7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwg
TUFYOyArK2kpIHsKKyAgICB2YXIgc3RyID0gTWF0aC5yYW5kb20oKS50b1N0cmluZygyKTsKKyAg
ICAvLyA1M2JpdHMgKyAnMC4nLmxlbmd0aAorICAgIGlmIChzdHIubGVuZ3RoID09PSAoNTMgKyAy
KSkgeworICAgICAgICBmb3VuZDUzQml0cyA9IHRydWU7CisgICAgfSBlbHNlIGlmIChzdHIubGVu
Z3RoIDwgKDUzICsgMikpIHsKKyAgICAgICAgZm91bmRMZXNzVGhhbjUzQml0cyA9IHRydWU7Cisg
ICAgfQorCisgICAgaWYgKGZvdW5kNTNCaXRzICYmIGZvdW5kTGVzc1RoYW41M0JpdHMpIHsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorfQorCitzaG91bGRCZVRydWUoJ2ZvdW5kNTNCaXRzJyk7Citz
aG91bGRCZVRydWUoJ2ZvdW5kTGVzc1RoYW41M0JpdHMnKTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvanMvNTNiaXRzLXJhbmRvbS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2pzLzUzYml0cy1yYW5kb20tZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0NDEzZjMzYjM2NDNiOTE0MTM5N2E2NWNjN2Y3MWMwMzgx
MGJmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9m
YXN0L2pzLzUzYml0cy1yYW5kb20tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK1RoaXMg
dGVzdHMgdGhhdCBnZW5lcmF0aW5nIDUzYml0cyBwcmVjaXNpb24gcmFuZG9tIG51bWJlcnMuCisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitGQUlMIGZvdW5kNTNCaXRzIHNob3VsZCBi
ZSB0cnVlLiBXYXMgZmFsc2UuCitQQVNTIGZvdW5kTGVzc1RoYW41M0JpdHMgaXMgdHJ1ZQorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176267</attachid>
            <date>2012-11-27 07:52:04 -0800</date>
            <delta_ts>2012-11-27 08:44:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98586-20121128004940.patch</filename>
            <type>text/plain</type>
            <size>15369</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwNTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
MGViZTM3MDBlZDM3NDBmMDkwZDdiMDNiZTE4YWZiMzQ1NDdkMTEzLi5lNjc2NjMzY2ZlNmRiMTUx
MDhhMmJlM2Q0MGZjMGUxNzAzNzhkZjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOCBAQAorMjAxMi0xMS0yNyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBFeHRlbmQgcmFuZG9tIHByZWNpc2lvbiB0byA1M2JpdHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4NTg2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4gYW5kIE9saXZlciBIdW50LgorCisgICAgICAg
ICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ov
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qOgorICAgICAgICAqIEphdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlU2VlZCk6CisgICAgICAgIChK
U0MpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6SlNHbG9iYWxPYmplY3QpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTR2xvYmFsT2JqZWN0
KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OndlYWtSYW5kb21OdW1iZXIpOgorICAg
ICAgICAqIHJ1bnRpbWUvV2Vha0RvdWJsZVJhbmRvbS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6
CisgICAgICAgIChXZWFrRG91YmxlUmFuZG9tKToKKyAgICAgICAgKEpTQzo6V2Vha0RvdWJsZVJh
bmRvbTo6V2Vha0RvdWJsZVJhbmRvbSk6CisgICAgICAgIChKU0M6OldlYWtEb3VibGVSYW5kb206
OmdldCk6CisgICAgICAgICogcnVudGltZS9XZWFrUmFuZG9tLmg6CisgICAgICAgIChKU0M6Oldl
YWtSYW5kb206OmdldFVpbnQzMik6CisKIDIwMTItMTAtMDUgIE1hcmsgSGFobmVuYmVyZyAgPG1o
YWhuZW5iZXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBKU0Mgc2hvdWxkIGhhdmUgYSB3YXkgdG8g
Z2F0aGVyIGFuZCBsb2cgSGVhcCBtZW1vcnkgdXNlIGFuZCBwYXVzZSB0aW1lcwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA2MmZhMmY4OTE2YTJlNDlhOTFj
ZmU0ZTFkMWU3OTE1YWRmNDU0NDJhLi43YzdmOTcyMmMxMGNjMjRiNzg1YjZmMjRjMWM0Mzg1NDE2
NDU4NmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAt
Njc2LDYgKzY3Niw3IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1RpbWVvdXRDaGVja2VyLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1RyYWNpbmcuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VWludDE2V2l0aEZyYWN0aW9uLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dl
YWtEb3VibGVSYW5kb20uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha0dD
TWFwLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtSYW5kb20uaCBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV3JpdGVCYXJyaWVyLmggXApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagppbmRl
eCAwYTQ1MjAyMTU2M2Y5NTU0YmVlYjEyNGI4ODRjYTFmOGNkYWVlNjJiLi5mYzdhZWJiMmU3NzU0
MmY4NmRlZjU2ZWEzM2U1MTBlZjA2MGE2NTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjcHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9q
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagpAQCAtMTMzNCw2ICsxMzM0LDEw
IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4u
XHJ1bnRpbWVcV2Vha0RvdWJsZVJhbmRvbS5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxl
CiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxydW50aW1lXFdlYWtHQ01hcC5oIgogCQkJCT4KIAkJ
CTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYzU0NDk5MTZlOGMxNDQx
MGUwNDNjZTRlODlhOGE3OTliNGEyYzJhMy4uZDdiMDUyZGU0YzVjYjRkZmI5ZmY1OGFjOTllZDhj
NjMzNzExOTNjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQzMyw2ICs0MzMs
NyBAQAogCQk2NTExMjMwNzE0MDQ2QjBBMDAyQjEwMUQgLyogdGVzdFJlZ0V4cC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTExMjJFNTE0MDQ2OUJB
MDAyQjEwMUQgLyogdGVzdFJlZ0V4cC5jcHAgKi87IH07CiAJCTY1MzAzRDY0MTQ0N0I5RTEwMEQz
RjkwNCAvKiBQYXJzZXJUb2tlbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDY1MzAzRDYzMTQ0N0I5RTEwMEQzRjkwNCAvKiBQYXJzZXJUb2tlbnMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2NTVFQjI5
QjEwQ0UyNTgxMDAxQTk5MEUgLyogTm9kZXNDb2RlZ2VuLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NUVCMjlBMTBDRTI1ODEwMDFBOTkwRSAvKiBO
b2Rlc0NvZGVnZW4uY3BwICovOyB9OworCQk3MDM5RjgzODE2NjRBRjYzMDA0ODZCNzUgLyogV2Vh
a0RvdWJsZVJhbmRvbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzAzOUY4MzcxNjY0QUY2MzAwNDg2Qjc1IC8qIFdlYWtEb3VibGVSYW5kb20uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3RTRFRTcwOTBF
QkI3OTYzMDA1OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFNEVFNzA4MEVCQjc5NjMwMDU5MzRBQSAvKiBTdHJ1
Y3R1cmVDaGFpbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTdFNEVFNzBGMEVCQjdBNUIwMDU5MzRBQSAvKiBTdHJ1Y3R1cmVDaGFpbi5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTRFRTcwRTBFQkI3
QTVCMDA1OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4uY3BwICovOyB9OwogCQk3RUZGMDA2NDBFQzA1
QTlBMDBBQTdDOTMgLyogTm9kZUluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdFRkYwMDYzMEVDMDVBOUEwMEFBN0M5MyAvKiBOb2RlSW5mby5oICov
OyB9OwpAQCAtMTE5Niw2ICsxMTk3LDcgQEAKIAkJNjVFQTRDOUEwOTJBRjlFMjAwOTNEODAwIC8q
IEpTTG9jay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU0xvY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9Owog
CQk2NUVBNzM2MjBCQUUzNUQxMDAxQkI1NjAgLyogQ29tbW9uSWRlbnRpZmllcnMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbW1vbklkZW50aWZpZXJzLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjVFQTczNjMwQkFFMzVEMTAwMUJCNTYwIC8q
IENvbW1vbklkZW50aWZpZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
b21tb25JZGVudGlmaWVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MDM5Rjgz
NzE2NjRBRjYzMDA0ODZCNzUgLyogV2Vha0RvdWJsZVJhbmRvbS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWFrRG91YmxlUmFuZG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTcwNEZEMzUzMDU2OTdFNkQwMDNEQkVEOSAvKiBCb29sZWFuT2JqZWN0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRo
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJvb2xlYW5P
YmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9OwogCQk3RTRF
RTcwODBFQkI3OTYzMDA1OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU3RydWN0dXJlQ2hhaW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0U0RUU3MEUwRUJCN0E1QjAwNTkzNEFBIC8qIFN0cnVjdHVyZUNoYWluLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cnVjdHVyZUNoYWluLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNTUsNiArMjA1Nyw3IEBACiAJCTdFRjZF
MEJCMEVCN0ExRUMwMDc5QUZBRiAvKiBydW50aW1lICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk3MDM5RjgzNzE2NjRBRjYzMDA0ODZCNzUgLyogV2Vha0Rv
dWJsZVJhbmRvbS5oICovLAogCQkJCUJDRjYwNTExMEUyMDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0
LmNwcCAqLywKIAkJCQlCQ0Y2MDUxMjBFMjAzRUY4MDBCOUE2NEQgLyogQXJnTGlzdC5oICovLAog
CQkJCUJDMjU3REU1MEUxRjUxQzUwMDE2QjZDOSAvKiBBcmd1bWVudHMuY3BwICovLApAQCAtMjk2
OCw2ICsyOTcxLDcgQEAKIAkJCQkwRjBDRDRDMjE1RjFBNjA3MDAzMkYxQzAgLyogUHV0RGlyZWN0
SW5kZXhNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjI1NTNEMjE2MTM2RTFBMDA5RjE3RDAg
LyogSlNQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1NTQxQjIxNjEzQzFGQjAwQ0UzRTI1
IC8qIFNwZWNpYWxQb2ludGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MDM5RjgzODE2NjRBRjYz
MDA0ODZCNzUgLyogV2Vha0RvdWJsZVJhbmRvbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggMTM5OGY4
ODI5MmJmZWQzNWJmYjAyYzc4MDYxZjM2YzM4OTJiYTEzMy4uY2ExNmQyNjM2NjQ0MjQyODFjZmU0
MWQ5MTMxMDBhYTU1MjI1ZGZlZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMTA4LDExICsxMDgsMTcgQEAgc3RhdGljIGNvbnN0
IGludCBpbml0aWFsVGlja0NvdW50VGhyZXNob2xkID0gMjU1OwogLy8gUHJlZmVycmVkIG51bWJl
ciBvZiBtaWxsaXNlY29uZHMgYmV0d2VlbiBlYWNoIHRpbWVvdXQgY2hlY2sKIHN0YXRpYyBjb25z
dCBpbnQgcHJlZmVycmVkU2NyaXB0Q2hlY2tUaW1lSW50ZXJ2YWwgPSAxMDAwOwogCitzdGF0aWMg
dW5zaWduZWQgZ2VuZXJhdGVTZWVkKCkKK3sKKyAgICByZXR1cm4gT3B0aW9uczo6Zm9yY2VXZWFr
UmFuZG9tU2VlZCgpID8gT3B0aW9uczo6Zm9yY2VkV2Vha1JhbmRvbVNlZWQoKSA6IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihyYW5kb21OdW1iZXIoKSAqIChzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2ln
bmVkPjo6bWF4KCkgKyAxLjApKTsKK30KKwogSlNHbG9iYWxPYmplY3Q6OkpTR2xvYmFsT2JqZWN0
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IEds
b2JhbE9iamVjdE1ldGhvZFRhYmxlKiBnbG9iYWxPYmplY3RNZXRob2RUYWJsZSkKICAgICA6IEJh
c2UoZ2xvYmFsRGF0YSwgc3RydWN0dXJlLCAwKQogICAgICwgbV9tYXNxdWVyYWRlc0FzVW5kZWZp
bmVkV2F0Y2hwb2ludChhZG9wdFJlZihuZXcgV2F0Y2hwb2ludFNldChJbml0aWFsaXplZFdhdGNo
aW5nKSkpCiAgICAgLCBtX2hhdmluZ0FCYWRUaW1lV2F0Y2hwb2ludChhZG9wdFJlZihuZXcgV2F0
Y2hwb2ludFNldChJbml0aWFsaXplZFdhdGNoaW5nKSkpCi0gICAgLCBtX3dlYWtSYW5kb20oT3B0
aW9uczo6Zm9yY2VXZWFrUmFuZG9tU2VlZCgpID8gT3B0aW9uczo6Zm9yY2VkV2Vha1JhbmRvbVNl
ZWQoKSA6IHN0YXRpY19jYXN0PHVuc2lnbmVkPihyYW5kb21OdW1iZXIoKSAqIChzdGQ6Om51bWVy
aWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkgKyAxLjApKSkKKyAgICAsIG1fd2Vha1JhbmRvbShn
ZW5lcmF0ZVNlZWQoKSkKKyAgICAsIG1fd2Vha0RvdWJsZVJhbmRvbShnZW5lcmF0ZVNlZWQoKSwg
Z2VuZXJhdGVTZWVkKCkpCiAgICAgLCBtX2V2YWxFbmFibGVkKHRydWUpCiAgICAgLCBtX2dsb2Jh
bE9iamVjdE1ldGhvZFRhYmxlKGdsb2JhbE9iamVjdE1ldGhvZFRhYmxlID8gZ2xvYmFsT2JqZWN0
TWV0aG9kVGFibGUgOiAmc19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSkKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IGRjYWQ0ZjVlNGY4
MmM1MjE3ZjExMjU4OGNmYWRhNDYzYmY1OTgyMTUuLjk0NmJlYWI3Njg2YmNiZWQ0N2EzMjIzYTQ4
NDViZGI5ZmUxODA3YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIlN0cmluZ1Byb3RvdHlw
ZS5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUNoYWluLmgiCiAjaW5jbHVkZSAiV2F0Y2hwb2ludC5o
IgorI2luY2x1ZGUgIldlYWtEb3VibGVSYW5kb20uaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5o
PgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmFuZG9tTnVtYmVyLmg+
CkBAIC0xNTYsNiArMTU3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE93blB0cjxKU0ds
b2JhbE9iamVjdFJhcmVEYXRhPiBtX3JhcmVEYXRhOwogCiAgICAgICAgIFdlYWtSYW5kb20gbV93
ZWFrUmFuZG9tOworICAgICAgICBXZWFrRG91YmxlUmFuZG9tIG1fd2Vha0RvdWJsZVJhbmRvbTsK
IAogICAgICAgICBib29sIG1fZXZhbEVuYWJsZWQ7CiAgICAgICAgIFN0cmluZyBtX2V2YWxEaXNh
YmxlZEVycm9yTWVzc2FnZTsKQEAgLTM1Nyw3ICszNTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgICAgICAgICBtX3JhcmVEYXRhLT53ZWFrTWFwcy5yZW1vdmUobWFwKTsKICAgICAgICAg
fQogCi0gICAgICAgIGRvdWJsZSB3ZWFrUmFuZG9tTnVtYmVyKCkgeyByZXR1cm4gbV93ZWFrUmFu
ZG9tLmdldCgpOyB9CisgICAgICAgIGRvdWJsZSB3ZWFrUmFuZG9tTnVtYmVyKCkgeyByZXR1cm4g
bV93ZWFrRG91YmxlUmFuZG9tLmdldCgpOyB9CiAgICAgICAgIHVuc2lnbmVkIHdlYWtSYW5kb21J
bnRlZ2VyKCkgeyByZXR1cm4gbV93ZWFrUmFuZG9tLmdldFVpbnQzMigpOyB9CiAgICAgcHJvdGVj
dGVkOgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrRG91
YmxlUmFuZG9tLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrRG91YmxlUmFu
ZG9tLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZjQ3ODRkYjc2NTU3Y2UyNTZkY2I3ZGVlN2FiZWNmMWMxMGZmN2Y2
OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtE
b3VibGVSYW5kb20uaApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWFrRG91YmxlUmFuZG9tX2gKKyNkZWZpbmUg
V2Vha0RvdWJsZVJhbmRvbV9oCisKKyNpbmNsdWRlICJXZWFrUmFuZG9tLmgiCisjaW5jbHVkZSA8
c3RkaW50Lmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCituYW1lc3BhY2UgSlND
IHsKKworY2xhc3MgV2Vha0RvdWJsZVJhbmRvbSB7CitwdWJsaWM6CisgICAgV2Vha0RvdWJsZVJh
bmRvbSh1bnNpZ25lZCBsb3dTZWVkLCB1bnNpZ25lZCBoaWdoU2VlZCkKKyAgICAgICAgOiBtX2xv
dyhsb3dTZWVkKQorICAgICAgICAsIG1faGlnaChoaWdoU2VlZCkKKyAgICB7CisgICAgfQorCisg
ICAgZG91YmxlIGdldCgpCisgICAgeworICAgICAgICB1aW50NjRfdCBoaWdoID0gbV9oaWdoLmdl
dFVpbnQzMigpID4+IDU7CisgICAgICAgIHVpbnQ2NF90IGxvdyA9IG1fbG93LmdldFVpbnQzMigp
ID4+IDY7CisgICAgICAgIHVpbnQ2NF90IGNvbWJpbmVkID0gKGhpZ2ggPDwgMjYpIHwgbG93Owor
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91YmxlPihjb21iaW5lZCkgLyBzdGF0aWNfY2Fz
dDxkb3VibGU+KDFMTCA8PCA1Myk7CisgICAgfQorCitwcml2YXRlOgorICAgIFdlYWtSYW5kb20g
bV9sb3c7CisgICAgV2Vha1JhbmRvbSBtX2hpZ2g7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MK
KworI2VuZGlmIC8vIFdlYWtEb3VibGVSYW5kb21faApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvV2Vha1JhbmRvbS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvV2Vha1JhbmRvbS5oCmluZGV4IDNjZDEwMTZkM2JkYzI5YmQ4ZmUyMGUzZTVhNzVkYTI1
MTQ5NjhlZmIuLmNlMTdhOWNjZTA3NWNlMDRjMjRmZDYwYTNmM2VjZDgwZjIzMDkzN2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtSYW5kb20uaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrUmFuZG9tLmgKQEAgLTUwLDcgKzUwLDcg
QEAKICNpZm5kZWYgV2Vha1JhbmRvbV9oCiAjZGVmaW5lIFdlYWtSYW5kb21faAogCi0jaW5jbHVk
ZSA8bGltaXRzLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4
dHJhcy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTY2LDEyICs2Niw3IEBAIHB1YmxpYzoKICAg
ICAvLyBSZXR1cm5zIHRoZSBzZWVkIHByb3ZpZGVkIHRoYXQgeW91J3ZlIG5ldmVyIGNhbGxlZCBn
ZXQoKSBvciBnZXRVaW50MzIoKS4KICAgICB1bnNpZ25lZCBzZWVkVW5zYWZlKCkgY29uc3QgeyBy
ZXR1cm4gbV9oaWdoOyB9CiAKLSAgICBkb3VibGUgZ2V0KCkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBhZHZhbmNlKCkgLyAoVUlOVF9NQVggKyAxLjApOwotICAgIH0KLQotICAgIHVuc2lnbmVkIGdl
dFVpbnQzMigpCisgICAgdWludDMyX3QgZ2V0VWludDMyKCkKICAgICB7CiAgICAgICAgIHJldHVy
biBhZHZhbmNlKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGYyOTJkODcwOWRkMjgwOTY1NmM1YmJlZjcxMjBl
Y2VhMjlmNWQwZjcuLjU1M2FmZDBmMGIyZDQ3YjUxYzkwYWYyYmQ0OGQ5ZjJkZmYwZTQ5ZDkgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0xMS0yNyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUu
dGVhQGdtYWlsLmNvbT4KKworICAgICAgICBFeHRlbmQgcmFuZG9tIHByZWNpc2lvbiB0byA1M2Jp
dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4NTg2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4gYW5kIE9saXZlciBIdW50Lgor
CisgICAgICAgICogZmFzdC9qcy81M2JpdHMtcmFuZG9tLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9qcy81M2JpdHMtcmFuZG9tLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvanMvc2NyaXB0LXRlc3RzLzUzYml0cy1yYW5kb20uanM6IEFkZGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2Nocm9taXVtL2Zhc3QvanMvNTNiaXRzLXJhbmRvbS1leHBlY3RlZC50eHQ6IEFkZGVk
LgorCiAyMDEyLTEwLTA1ICBYaWFuemh1IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgT3BlblR5cGVWZXJ0aWNhbERhdGEgaXNzdWUgd2l0aCBEcm9pZFNhbnNGYWxs
YmFjay50dGYgb24gY2hyb21pdW0tYW5kcm9pZCBhbmQgY2hyb21pdW0tbGludXgKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvanMvNTNiaXRzLXJhbmRvbS1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9mYXN0L2pzLzUzYml0cy1yYW5kb20tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJi
ZjEwZTk5YzNjYjdlYjBkMTk5YWU5YTUyYjM4ZGUyN2RjYTY2NWYKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2pzLzUzYml0cy1yYW5kb20tZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMTEgQEAKK1RoaXMgdGVzdHMgdGhhdCBnZW5lcmF0aW5nIDUzYml0cyBwcmVjaXNpb24gcmFu
ZG9tIG51bWJlcnMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGZvdW5k
NTNCaXRzIGlzIHRydWUKK1BBU1MgZm91bmRMZXNzVGhhbjUzQml0cyBpcyB0cnVlCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9qcy81M2JpdHMtcmFuZG9tLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2pzLzUzYml0cy1yYW5kb20uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMTZiNjNlNWE2NzE3MThjZDA5NzQ4
OWM3MGU0MDM0NjE3NDRlZjJkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9q
cy81M2JpdHMtcmFuZG9tLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBFIEhUTUwgUFVC
TElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzLzUzYml0cy1yYW5kb20uanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvNTNi
aXRzLXJhbmRvbS5qcyBiL0xheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzLzUzYml0cy1y
YW5kb20uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM2MDQ0N2RmMThiZGNlOTYwYTg5ZDQ0NTljZWQ0OTg0YzJh
MzM2YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3Rz
LzUzYml0cy1yYW5kb20uanMKQEAgLTAsMCArMSwyNCBAQAorZGVzY3JpcHRpb24oCisiVGhpcyB0
ZXN0cyB0aGF0IGdlbmVyYXRpbmcgNTNiaXRzIHByZWNpc2lvbiByYW5kb20gbnVtYmVycy4iCisp
OworCit2YXIgTUFYID0gMjA7Cit2YXIgZm91bmQ1M0JpdHMgPSBmYWxzZTsKK3ZhciBmb3VuZExl
c3NUaGFuNTNCaXRzID0gZmFsc2U7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgTUFYOyArK2kpIHsK
KyAgICB2YXIgc3RyID0gTWF0aC5yYW5kb20oKS50b1N0cmluZygyKTsKKyAgICAvLyA1M2JpdHMg
KyAnMC4nLmxlbmd0aAorICAgIGlmIChzdHIubGVuZ3RoID09PSAoNTMgKyAyKSkgeworICAgICAg
ICBmb3VuZDUzQml0cyA9IHRydWU7CisgICAgfSBlbHNlIGlmIChzdHIubGVuZ3RoIDwgKDUzICsg
MikpIHsKKyAgICAgICAgZm91bmRMZXNzVGhhbjUzQml0cyA9IHRydWU7CisgICAgfQorCisgICAg
aWYgKGZvdW5kNTNCaXRzICYmIGZvdW5kTGVzc1RoYW41M0JpdHMpIHsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorfQorCitzaG91bGRCZVRydWUoJ2ZvdW5kNTNCaXRzJyk7CitzaG91bGRCZVRydWUo
J2ZvdW5kTGVzc1RoYW41M0JpdHMnKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL2Zhc3QvanMvNTNiaXRzLXJhbmRvbS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2pzLzUzYml0cy1yYW5kb20tZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjQ0NDEzZjMzYjM2NDNiOTE0MTM5N2E2NWNjN2Y3MWMwMzgxMGJmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2pzLzUzYml0
cy1yYW5kb20tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK1RoaXMgdGVzdHMgdGhhdCBn
ZW5lcmF0aW5nIDUzYml0cyBwcmVjaXNpb24gcmFuZG9tIG51bWJlcnMuCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCitGQUlMIGZvdW5kNTNCaXRzIHNob3VsZCBiZSB0cnVlLiBXYXMg
ZmFsc2UuCitQQVNTIGZvdW5kTGVzc1RoYW41M0JpdHMgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176277</attachid>
            <date>2012-11-27 08:44:33 -0800</date>
            <delta_ts>2014-08-01 08:11:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98586-20121128014210.patch</filename>
            <type>text/plain</type>
            <size>15483</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1ODYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
ZTZkM2I1N2ExMzYzODgxYTJmOTE3M2YxY2Q4MjQyZGE1MmFkYmM3Li5jMDZmOWI1YzNlN2M0NDQ1
N2ZlNTljMzAxNDMwYjAwOGJkYTZjYzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOCBAQAorMjAxMi0xMS0yNyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBFeHRlbmQgcmFuZG9tIHByZWNpc2lvbiB0byA1M2JpdHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4NTg2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4gYW5kIE9saXZlciBIdW50LgorCisgICAgICAg
ICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ov
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qOgorICAgICAgICAqIEphdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlU2VlZCk6CisgICAgICAgIChK
U0MpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6SlNHbG9iYWxPYmplY3QpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTR2xvYmFsT2JqZWN0
KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OndlYWtSYW5kb21OdW1iZXIpOgorICAg
ICAgICAqIHJ1bnRpbWUvV2Vha0RvdWJsZVJhbmRvbS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6
CisgICAgICAgIChXZWFrRG91YmxlUmFuZG9tKToKKyAgICAgICAgKEpTQzo6V2Vha0RvdWJsZVJh
bmRvbTo6V2Vha0RvdWJsZVJhbmRvbSk6CisgICAgICAgIChKU0M6OldlYWtEb3VibGVSYW5kb206
OmdldCk6CisgICAgICAgICogcnVudGltZS9XZWFrUmFuZG9tLmg6CisgICAgICAgIChKU0M6Oldl
YWtSYW5kb206OmdldFVpbnQzMik6CisKIDIwMTItMTEtMjYgIERhbmllbCBCYXRlcyAgPGRiYXRl
c0B3ZWJraXQub3JnPgogCiAgICAgICAgIFN1YnN0aXR1dGUgImFsbFNlcGFyYXRvcnM4Qml0IiBm
b3IgImFsbFNlcGVyYXRvcnM4Qml0IiBpbiBKU0M6OmpzU3BsaWNlU3Vic3RyaW5nc1dpdGhTZXBh
cmF0b3JzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXgg
ZDdhZmFmMThhMjI4NzExZTY4NWM3YWI1Y2M3OTk4ZjZhNWE5NjlkYy4uNDg5Mzk4ODEyOTNiMDhm
ZWNlMDEyODcyNDZkZDg4Y2ZkM2EwYzU3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0KQEAgLTY5Niw2ICs2OTYsNyBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2Vz
ICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UcmFjaW5nLmggXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVkQXJyYXlEZXNjcmlwdG9yLmggXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VpbnQxNldpdGhGcmFjdGlvbi5oIFwKKwlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrRG91YmxlUmFuZG9tLmggXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1dlYWtHQ01hcC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9XZWFrUmFuZG9tLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dy
aXRlQmFycmllci5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3Byb2oKaW5kZXggYzE3OWNiNmUwZDI1NGZlYjAyYWQwYzg5NWNjNzk3
NThmYWI3M2QzYS4uMGQyOGIzZjdhZDAwNDE4YzJmNDkxYzE2MTZhMzdiN2ZkZmVjMjE4NyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3Byb2oKQEAgLTEzNTAsNiArMTM1MCwxMCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxl
CisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxydW50aW1lXFdlYWtEb3VibGVSYW5kb20uaCIKKwkJ
CQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccnVudGlt
ZVxXZWFrR0NNYXAuaCIKIAkJCQk+CiAJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IGJkYTliMjdmZmMxODI2ZDQzZThlNDgyOTRlMTY4YjM1Y2E1Y2U1ZDMuLmVmNjVh
N2JlMWZmZWI4OGE3ZjI2YjhkNDc4YTNjYzViYmY4MjJmMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC00NDEsNiArNDQxLDcgQEAKIAkJNjUxMTIzMDcxNDA0NkIwQTAwMkIxMDFE
IC8qIHRlc3RSZWdFeHAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNjUxMTIyRTUxNDA0NjlCQTAwMkIxMDFEIC8qIHRlc3RSZWdFeHAuY3BwICovOyB9
OwogCQk2NTMwM0Q2NDE0NDdCOUUxMDBEM0Y5MDQgLyogUGFyc2VyVG9rZW5zLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTMwM0Q2MzE0NDdCOUUxMDBE
M0Y5MDQgLyogUGFyc2VyVG9rZW5zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNjU1RUIyOUIxMENFMjU4MTAwMUE5OTBFIC8qIE5vZGVzQ29kZWdl
bi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTVF
QjI5QTEwQ0UyNTgxMDAxQTk5MEUgLyogTm9kZXNDb2RlZ2VuLmNwcCAqLzsgfTsKKwkJNzAzOUY4
MzgxNjY0QUY2MzAwNDg2Qjc1IC8qIFdlYWtEb3VibGVSYW5kb20uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwMzlGODM3MTY2NEFGNjMwMDQ4NkI3NSAv
KiBXZWFrRG91YmxlUmFuZG9tLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJN0U0RUU3MDkwRUJCNzk2MzAwNTkzNEFBIC8qIFN0cnVjdHVyZUNoYWlu
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTRFRTcw
ODBFQkI3OTYzMDA1OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3RTRFRTcwRjBFQkI3QTVCMDA1OTM0QUEg
LyogU3RydWN0dXJlQ2hhaW4uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0U0RUU3MEUwRUJCN0E1QjAwNTkzNEFBIC8qIFN0cnVjdHVyZUNoYWluLmNw
cCAqLzsgfTsKIAkJN0VGRjAwNjQwRUMwNUE5QTAwQUE3QzkzIC8qIE5vZGVJbmZvLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUZGMDA2MzBFQzA1QTlB
MDBBQTdDOTMgLyogTm9kZUluZm8uaCAqLzsgfTsKQEAgLTEyMjMsNiArMTIyNCw3IEBACiAJCTY1
RUE0QzlBMDkyQUY5RTIwMDkzRDgwMCAvKiBKU0xvY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNMb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IHRhYldpZHRoID0gODsgfTsKIAkJNjVFQTczNjIwQkFFMzVEMTAwMUJCNTYwIC8qIENv
bW1vbklkZW50aWZpZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBDb21tb25JZGVudGlmaWVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1
RUE3MzYzMEJBRTM1RDEwMDFCQjU2MCAvKiBDb21tb25JZGVudGlmaWVycy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbW9uSWRlbnRpZmllcnMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNzAzOUY4MzcxNjY0QUY2MzAwNDg2Qjc1IC8qIFdlYWtEb3VibGVS
YW5kb20uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vha0RvdWJsZVJhbmRv
bS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MDRGRDM1MzA1Njk3RTZEMDAzREJF
RDkgLyogQm9vbGVhbk9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBCb29sZWFuT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IHRhYldpZHRoID0gODsgfTsKIAkJN0U0RUU3MDgwRUJCNzk2MzAwNTkzNEFBIC8qIFN0cnVjdHVy
ZUNoYWluLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cnVjdHVyZUNoYWlu
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFNEVFNzBFMEVCQjdBNUIwMDU5MzRB
QSAvKiBTdHJ1Y3R1cmVDaGFpbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTdHJ1Y3R1cmVDaGFpbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0y
MTAyLDYgKzIxMDQsNyBAQAogCQk3RUY2RTBCQjBFQjdBMUVDMDA3OUFGQUYgLyogcnVudGltZSAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNzAzOUY4Mzcx
NjY0QUY2MzAwNDg2Qjc1IC8qIFdlYWtEb3VibGVSYW5kb20uaCAqLywKIAkJCQlCQ0Y2MDUxMTBF
MjAzRUY4MDBCOUE2NEQgLyogQXJnTGlzdC5jcHAgKi8sCiAJCQkJQkNGNjA1MTIwRTIwM0VGODAw
QjlBNjREIC8qIEFyZ0xpc3QuaCAqLywKIAkJCQlCQzI1N0RFNTBFMUY1MUM1MDAxNkI2QzkgLyog
QXJndW1lbnRzLmNwcCAqLywKQEAgLTMwMzksNiArMzA0Miw3IEBACiAJCQkJQTc3RjE4MjUxNjQx
OTJDNzAwNjQwQTQ3IC8qIFBhcnNlck1vZGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkFGN0VG
RTE2NUJBOTFGMDAwQzg0NTUgLyogSklURGlzYXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjczRDdBRjE2NUExNDMwMDBBQ0FCNzEgLyogQ2xvc3VyZUNhbGxTdHViUm91dGluZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNzAzOUY4MzgxNjY0QUY2MzAwNDg2Qjc1IC8qIFdlYWtEb3VibGVS
YW5kb20uaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDZmMjBmMGU5MzU3MGJkMGI2ZTVmMjMzMzdjN2Jm
YWMwMWRiNzAwYjguLmY2ZDRkMjQxYjZhM2EyNTE2N2NkOWM2NDA5OTI1YmM4NTU2YTQxNGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAK
QEAgLTEwNywxMSArMTA3LDE3IEBAIHN0YXRpYyBjb25zdCBpbnQgaW5pdGlhbFRpY2tDb3VudFRo
cmVzaG9sZCA9IDI1NTsKIC8vIFByZWZlcnJlZCBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGJldHdl
ZW4gZWFjaCB0aW1lb3V0IGNoZWNrCiBzdGF0aWMgY29uc3QgaW50IHByZWZlcnJlZFNjcmlwdENo
ZWNrVGltZUludGVydmFsID0gMTAwMDsKIAorc3RhdGljIHVuc2lnbmVkIGdlbmVyYXRlU2VlZCgp
Cit7CisgICAgcmV0dXJuIE9wdGlvbnM6OmZvcmNlV2Vha1JhbmRvbVNlZWQoKSA/IE9wdGlvbnM6
OmZvcmNlZFdlYWtSYW5kb21TZWVkKCkgOiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmFuZG9tTnVt
YmVyKCkgKiAoc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpICsgMS4wKSk7Cit9
CisKIEpTR2xvYmFsT2JqZWN0OjpKU0dsb2JhbE9iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSog
Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUpCiAgICAgOiBCYXNlKGdsb2JhbERhdGEsIHN0cnVjdHVy
ZSwgMCkKICAgICAsIG1fbWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnQoYWRvcHRSZWYo
bmV3IFdhdGNocG9pbnRTZXQoSW5pdGlhbGl6ZWRXYXRjaGluZykpKQogICAgICwgbV9oYXZpbmdB
QmFkVGltZVdhdGNocG9pbnQoYWRvcHRSZWYobmV3IFdhdGNocG9pbnRTZXQoSW5pdGlhbGl6ZWRX
YXRjaGluZykpKQotICAgICwgbV93ZWFrUmFuZG9tKE9wdGlvbnM6OmZvcmNlV2Vha1JhbmRvbVNl
ZWQoKSA/IE9wdGlvbnM6OmZvcmNlZFdlYWtSYW5kb21TZWVkKCkgOiBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4ocmFuZG9tTnVtYmVyKCkgKiAoc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1h
eCgpICsgMS4wKSkpCisgICAgLCBtX3dlYWtSYW5kb20oZ2VuZXJhdGVTZWVkKCkpCisgICAgLCBt
X3dlYWtEb3VibGVSYW5kb20oZ2VuZXJhdGVTZWVkKCksIGdlbmVyYXRlU2VlZCgpKQogICAgICwg
bV9ldmFsRW5hYmxlZCh0cnVlKQogICAgICwgbV9nbG9iYWxPYmplY3RNZXRob2RUYWJsZShnbG9i
YWxPYmplY3RNZXRob2RUYWJsZSA/IGdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIDogJnNfZ2xvYmFs
T2JqZWN0TWV0aG9kVGFibGUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaAppbmRleCBlNmVkZDBiZTdhYjE3MjMzNTM5MmFhOGNhMDc4OGVmNWEw
NGY0OTEzLi40MGM4N2Y2ZWU4MTU0YmQ1MWI5YmJiYmYwZTJlMTc0YzAzMGFhYzhkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTMyLDYg
KzMyLDcgQEAKICNpbmNsdWRlICJTdHJpbmdQcm90b3R5cGUuaCIKICNpbmNsdWRlICJTdHJ1Y3R1
cmVDaGFpbi5oIgogI2luY2x1ZGUgIldhdGNocG9pbnQuaCIKKyNpbmNsdWRlICJXZWFrRG91Ymxl
UmFuZG9tLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1JhbmRvbU51bWJlci5oPgpAQCAtMTY1LDYgKzE2Niw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBPd25QdHI8SlNHbG9iYWxPYmplY3RSYXJlRGF0YT4gbV9y
YXJlRGF0YTsKIAogICAgICAgICBXZWFrUmFuZG9tIG1fd2Vha1JhbmRvbTsKKyAgICAgICAgV2Vh
a0RvdWJsZVJhbmRvbSBtX3dlYWtEb3VibGVSYW5kb207CiAKICAgICAgICAgYm9vbCBtX2V2YWxF
bmFibGVkOwogICAgICAgICBTdHJpbmcgbV9ldmFsRGlzYWJsZWRFcnJvck1lc3NhZ2U7CkBAIC0z
ODcsNyArMzg5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAgICAgbV9yYXJlRGF0
YS0+d2Vha01hcHMucmVtb3ZlKG1hcCk7CiAgICAgICAgIH0KIAotICAgICAgICBkb3VibGUgd2Vh
a1JhbmRvbU51bWJlcigpIHsgcmV0dXJuIG1fd2Vha1JhbmRvbS5nZXQoKTsgfQorICAgICAgICBk
b3VibGUgd2Vha1JhbmRvbU51bWJlcigpIHsgcmV0dXJuIG1fd2Vha0RvdWJsZVJhbmRvbS5nZXQo
KTsgfQogICAgICAgICB1bnNpZ25lZCB3ZWFrUmFuZG9tSW50ZWdlcigpIHsgcmV0dXJuIG1fd2Vh
a1JhbmRvbS5nZXRVaW50MzIoKTsgfQogCiAgICAgICAgIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9j
ayogY3JlYXRlUHJvZ3JhbUNvZGVCbG9jayhDYWxsRnJhbWUqLCBQcm9ncmFtRXhlY3V0YWJsZSos
IEpTT2JqZWN0KiogZXhjZXB0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1dlYWtEb3VibGVSYW5kb20uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1dlYWtEb3VibGVSYW5kb20uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNDc4NGRiNzY1NTdjZTI1NmRjYjdk
ZWU3YWJlY2YxYzEwZmY3ZjY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvV2Vha0RvdWJsZVJhbmRvbS5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYWtEb3VibGVS
YW5kb21faAorI2RlZmluZSBXZWFrRG91YmxlUmFuZG9tX2gKKworI2luY2x1ZGUgIldlYWtSYW5k
b20uaCIKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+
CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBXZWFrRG91YmxlUmFuZG9tIHsKK3B1YmxpYzoK
KyAgICBXZWFrRG91YmxlUmFuZG9tKHVuc2lnbmVkIGxvd1NlZWQsIHVuc2lnbmVkIGhpZ2hTZWVk
KQorICAgICAgICA6IG1fbG93KGxvd1NlZWQpCisgICAgICAgICwgbV9oaWdoKGhpZ2hTZWVkKQor
ICAgIHsKKyAgICB9CisKKyAgICBkb3VibGUgZ2V0KCkKKyAgICB7CisgICAgICAgIHVpbnQ2NF90
IGhpZ2ggPSBtX2hpZ2guZ2V0VWludDMyKCkgPj4gNTsKKyAgICAgICAgdWludDY0X3QgbG93ID0g
bV9sb3cuZ2V0VWludDMyKCkgPj4gNjsKKyAgICAgICAgdWludDY0X3QgY29tYmluZWQgPSAoaGln
aCA8PCAyNikgfCBsb3c7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KGNvbWJp
bmVkKSAvIHN0YXRpY19jYXN0PGRvdWJsZT4oMUxMIDw8IDUzKTsKKyAgICB9CisKK3ByaXZhdGU6
CisgICAgV2Vha1JhbmRvbSBtX2xvdzsKKyAgICBXZWFrUmFuZG9tIG1faGlnaDsKK307CisKK30g
Ly8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gV2Vha0RvdWJsZVJhbmRvbV9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrUmFuZG9tLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrUmFuZG9tLmgKaW5kZXggM2NkMTAxNmQzYmRjMjli
ZDhmZTIwZTNlNWE3NWRhMjUxNDk2OGVmYi4uY2UxN2E5Y2NlMDc1Y2UwNGMyNGZkNjBhM2YzZWNk
ODBmMjMwOTM3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vh
a1JhbmRvbS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtSYW5kb20u
aApAQCAtNTAsNyArNTAsNyBAQAogI2lmbmRlZiBXZWFrUmFuZG9tX2gKICNkZWZpbmUgV2Vha1Jh
bmRvbV9oCiAKLSNpbmNsdWRlIDxsaW1pdHMuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNs
dWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNjYsMTIgKzY2
LDcgQEAgcHVibGljOgogICAgIC8vIFJldHVybnMgdGhlIHNlZWQgcHJvdmlkZWQgdGhhdCB5b3Un
dmUgbmV2ZXIgY2FsbGVkIGdldCgpIG9yIGdldFVpbnQzMigpLgogICAgIHVuc2lnbmVkIHNlZWRV
bnNhZmUoKSBjb25zdCB7IHJldHVybiBtX2hpZ2g7IH0KIAotICAgIGRvdWJsZSBnZXQoKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkdmFuY2UoKSAvIChVSU5UX01BWCArIDEuMCk7Ci0gICAgfQot
Ci0gICAgdW5zaWduZWQgZ2V0VWludDMyKCkKKyAgICB1aW50MzJfdCBnZXRVaW50MzIoKQogICAg
IHsKICAgICAgICAgcmV0dXJuIGFkdmFuY2UoKTsKICAgICB9CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNTVjODU2OGI2YTdm
YjgxNGM2OWZlYzg3NjQwYzhhZjllNmU4MjYwNC4uMGU4NDI5NmI0MmFjMjc0MjU1NDMyZWRmYzJm
NDQ3ZDExOTUzMTUyOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTExLTI3ICBZdXN1a2Ug
U3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIEV4dGVuZCByYW5kb20g
cHJlY2lzaW9uIHRvIDUzYml0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9OTg1ODYKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbiBh
bmQgT2xpdmVyIEh1bnQuCisKKyAgICAgICAgKiBmYXN0L2pzLzUzYml0cy1yYW5kb20tZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzLzUzYml0cy1yYW5kb20uaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9qcy9zY3JpcHQtdGVzdHMvNTNiaXRzLXJhbmRvbS5qczogQWRk
ZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9qcy81M2JpdHMtcmFuZG9tLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisKIDIwMTItMTEtMjcgIEp1c3RpbiBOb3Zvc2FkICA8anVub3ZA
Z29vZ2xlLmNvbT4KIAogICAgICAgICBDb3JyZWN0aW5nIGJhc2VsaW5lIGZvciBmYXN0L2JhY2tn
cm91bmRzL2JhY2tncm91bmQtb3BhcXVlLWltYWdlcy1vdmVyLWNvbG9yLmh0bWwKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvanMvNTNiaXRzLXJhbmRvbS1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9mYXN0L2pzLzUzYml0cy1yYW5kb20tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJi
ZjEwZTk5YzNjYjdlYjBkMTk5YWU5YTUyYjM4ZGUyN2RjYTY2NWYKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2pzLzUzYml0cy1yYW5kb20tZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMTEgQEAKK1RoaXMgdGVzdHMgdGhhdCBnZW5lcmF0aW5nIDUzYml0cyBwcmVjaXNpb24gcmFu
ZG9tIG51bWJlcnMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGZvdW5k
NTNCaXRzIGlzIHRydWUKK1BBU1MgZm91bmRMZXNzVGhhbjUzQml0cyBpcyB0cnVlCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9qcy81M2JpdHMtcmFuZG9tLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2pzLzUzYml0cy1yYW5kb20uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMTZiNjNlNWE2NzE3MThjZDA5NzQ4
OWM3MGU0MDM0NjE3NDRlZjJkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9q
cy81M2JpdHMtcmFuZG9tLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBFIEhUTUwgUFVC
TElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzLzUzYml0cy1yYW5kb20uanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvNTNi
aXRzLXJhbmRvbS5qcyBiL0xheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzLzUzYml0cy1y
YW5kb20uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM2MDQ0N2RmMThiZGNlOTYwYTg5ZDQ0NTljZWQ0OTg0YzJh
MzM2YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3Rz
LzUzYml0cy1yYW5kb20uanMKQEAgLTAsMCArMSwyNCBAQAorZGVzY3JpcHRpb24oCisiVGhpcyB0
ZXN0cyB0aGF0IGdlbmVyYXRpbmcgNTNiaXRzIHByZWNpc2lvbiByYW5kb20gbnVtYmVycy4iCisp
OworCit2YXIgTUFYID0gMjA7Cit2YXIgZm91bmQ1M0JpdHMgPSBmYWxzZTsKK3ZhciBmb3VuZExl
c3NUaGFuNTNCaXRzID0gZmFsc2U7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgTUFYOyArK2kpIHsK
KyAgICB2YXIgc3RyID0gTWF0aC5yYW5kb20oKS50b1N0cmluZygyKTsKKyAgICAvLyA1M2JpdHMg
KyAnMC4nLmxlbmd0aAorICAgIGlmIChzdHIubGVuZ3RoID09PSAoNTMgKyAyKSkgeworICAgICAg
ICBmb3VuZDUzQml0cyA9IHRydWU7CisgICAgfSBlbHNlIGlmIChzdHIubGVuZ3RoIDwgKDUzICsg
MikpIHsKKyAgICAgICAgZm91bmRMZXNzVGhhbjUzQml0cyA9IHRydWU7CisgICAgfQorCisgICAg
aWYgKGZvdW5kNTNCaXRzICYmIGZvdW5kTGVzc1RoYW41M0JpdHMpIHsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorfQorCitzaG91bGRCZVRydWUoJ2ZvdW5kNTNCaXRzJyk7CitzaG91bGRCZVRydWUo
J2ZvdW5kTGVzc1RoYW41M0JpdHMnKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL2Zhc3QvanMvNTNiaXRzLXJhbmRvbS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2pzLzUzYml0cy1yYW5kb20tZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjQ0NDEzZjMzYjM2NDNiOTE0MTM5N2E2NWNjN2Y3MWMwMzgxMGJmYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2pzLzUzYml0
cy1yYW5kb20tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK1RoaXMgdGVzdHMgdGhhdCBn
ZW5lcmF0aW5nIDUzYml0cyBwcmVjaXNpb24gcmFuZG9tIG51bWJlcnMuCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCitGQUlMIGZvdW5kNTNCaXRzIHNob3VsZCBiZSB0cnVlLiBXYXMg
ZmFsc2UuCitQQVNTIGZvdW5kTGVzc1RoYW41M0JpdHMgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>235888</attachid>
            <date>2014-08-01 08:12:16 -0700</date>
            <delta_ts>2014-08-01 09:03:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98586-20140802001219.patch</filename>
            <type>text/plain</type>
            <size>15043</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcxOTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ZGU5OTZlYzM4ZTkzODdkNWE4NmEzZTRmNWNlYzM4NDk5YTViMTBkLi5hYWJjODQyMGUzMzk4YTYz
MGMwYzY5N2UyOTY1ZmM2NjhmMjhkODM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOCBAQAorMjAxNC0wOC0wMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBFeHRlbmQgcmFuZG9tIHByZWNpc2lvbiB0byA1M2JpdHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4NTg2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAgICAgICogSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVTZWVkKToKKyAgICAg
ICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OkpTR2xvYmFsT2JqZWN0KToKKyAgICAgICAgKEpTQzo6
SlNHbG9iYWxPYmplY3Q6OnNldElucHV0Q3Vyc29yKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xv
YmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp3ZWFrUmFuZG9tTnVt
YmVyKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OndlYWtSYW5kb21JbnRlZ2VyKToK
KyAgICAgICAgKiBydW50aW1lL1dlYWtEb3VibGVSYW5kb20uaDogQWRkZWQuCisgICAgICAgIChK
U0M6OldlYWtEb3VibGVSYW5kb206OldlYWtEb3VibGVSYW5kb20pOgorICAgICAgICAoSlNDOjpX
ZWFrRG91YmxlUmFuZG9tOjpzZWVkVW5zYWZlKToKKyAgICAgICAgKEpTQzo6V2Vha0RvdWJsZVJh
bmRvbTo6Z2V0KToKKyAgICAgICAgKEpTQzo6V2Vha0RvdWJsZVJhbmRvbTo6Z2V0VWludDMyKToK
KyAgICAgICAgKEpTQzo6V2Vha0RvdWJsZVJhbmRvbTo6aW5pdGlhbGl6ZVNlZWQpOgorICAgICAg
ICAqIHJ1bnRpbWUvV2Vha1JhbmRvbS5oOgorCiAyMDE0LTA3LTMxICBNYXJrIExhbSAgPG1hcmsu
bGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBKU0NlbGw6OmNsYXNzSW5mbygpIGJlbG9uZ3MgaW4g
SlNDZWxsSW5saW5lcy5oLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvaiBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKaW5k
ZXggZDkyMmQ1NDE3ZjQ4NDU4MGE2ZjU4MTM4OGZkNjBhOTExNTMzMjk0MC4uZmJlM2UxY2EyMTAy
YjEyNTZhZTNlYzI3ODI4ZWM4ODAyZDUwYTcwMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qCkBAIC0xNTc4LDYgKzE1NzgsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxWTS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxWTUVudHJ5U2NvcGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
V2F0Y2hkb2cuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcV2Vha0Rv
dWJsZVJhbmRvbS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxXZWFr
R0NNYXAuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcV2Vha01hcENv
bnN0cnVjdG9yLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFdlYWtN
YXBEYXRhLmgiIC8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
LmZpbHRlcnMKaW5kZXggNWQyNjgyYjNlMzYxNzk2OTExZmQwMTEwODIyMmRmYjIyM2NmZjY3NS4u
MmM2ZDQzNWIwMGJmOTQ2NTVhZjdmYmQ1OTg1MWIxNzg0Y2UxMTdlOCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUu
dmN4cHJvai5maWx0ZXJzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtMjc0Nyw2ICsyNzQ3
LDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcV2F0Y2hkb2cuaCI+CiAg
ICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcV2Vha0RvdWJsZVJhbmRvbS5oIj4KKyAgICAgIDxG
aWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccnVudGltZVxXZWFrR0NNYXAuaCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8
L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggNDg3YmYzODQ2N2NmM2I3NmE4N2IxNTJiOTBkOGJmMjgzMmE4NDI1Ny4uNmI3YmE4MmNiYzI5
ZTY5OWZjYjBlMmFjMTk1MjQ0ZjJmODkzNTg3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTMwNDgsNiArMzA0OCw3IEBACiAJCTY1RkI1MTE1MTg0RUU4RjgwMEMxMkI3MCAvKiBQ
cm90b0NhbGxGcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm90b0Nh
bGxGcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NUZCNTExNjE4NEVFOUJD
MDBDMTJCNzAgLyogUHJvdG9DYWxsRnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUHJvdG9DYWxsRnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3MDRGRDM1MzA1Njk3RTZEMDAzREJFRDkgLyogQm9vbGVhbk9iamVjdC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCb29sZWFuT2JqZWN0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKKwkJNzA3MzVENTEx
OThCRDVFMzAwQ0UwRDUyIC8qIFdlYWtEb3VibGVSYW5kb20uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2Vha0RvdWJsZVJhbmRvbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3QzAwOENEMDE4NkY4QTkzMDA5NTVDMjQgLyogSlNQcm9taXNlRnVuY3Rpb25zLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbGluZUVuZGluZyA9IDA7IHBhdGggPSBK
U1Byb21pc2VGdW5jdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB4Y0xhbmd1YWdl
U3BlY2lmaWNhdGlvbklkZW50aWZpZXIgPSB4Y29kZS5sYW5nLmNwcDsgfTsKIAkJN0MwMDhDRDEx
ODZGOEE5MzAwOTU1QzI0IC8qIEpTUHJvbWlzZUZ1bmN0aW9ucy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU1Byb21pc2VGdW5jdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0MwMDhDRDgxODcxMjRCQjAwOTU1QzI0IC8qIEpTUHJvbWlzZURlZmVycmVk
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUHJvbWlzZURlZmVy
cmVkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ5NzIsNiArNDk3Myw3IEBA
CiAJCQkJRkVEOTRGMkIxNzFFM0UyMzAwQkU3N0E0IC8qIFdhdGNoZG9nLmNwcCAqLywKIAkJCQlG
RUQ5NEYyQzE3MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hkb2cuaCAqLywKIAkJCQlGRUQ5NEYyRDE3
MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hkb2dNYWMuY3BwICovLAorCQkJCTcwNzM1RDUxMTk4QkQ1
RTMwMENFMEQ1MiAvKiBXZWFrRG91YmxlUmFuZG9tLmggKi8sCiAJCQkJMTRCRkNFNjgxMENEQjFG
QzAwMzY0Q0NFIC8qIFdlYWtHQ01hcC5oICovLAogCQkJCUE3Q0EzQUREMTdEQTQxQUUwMDY1MzhB
RiAvKiBXZWFrTWFwQ29uc3RydWN0b3IuY3BwICovLAogCQkJCUE3Q0EzQURFMTdEQTQxQUUwMDY1
MzhBRiAvKiBXZWFrTWFwQ29uc3RydWN0b3IuaCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBjYmYwN2EyZjM0MjI0OTI5MTY5
OTkwN2U4MWQwNDFiYjFiYTQ2NTQ3Li45YjA1NGRjNGQ2MzZiMmZhM2U2ODEzZjc5ZjNmMjJlMDFi
ZTRlZDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwCkBAIC0xNDMsNiArMTQzLDExIEBACiAKIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhv
ZFRhYmxlIEpTR2xvYmFsT2JqZWN0OjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0geyAmYWxs
b3dzQWNjZXNzRnJvbSwgJnN1cHBvcnRzUHJvZmlsaW5nLCAmc3VwcG9ydHNSaWNoU291cmNlSW5m
bywgJnNob3VsZEludGVycnVwdFNjcmlwdCwgJmphdmFTY3JpcHRFeHBlcmltZW50c0VuYWJsZWQs
IDAsICZzaG91bGRJbnRlcnJ1cHRTY3JpcHRCZWZvcmVUaW1lb3V0IH07CiAKK3N0YXRpYyB1bnNp
Z25lZCBnZW5lcmF0ZVNlZWQoKQoreworICAgIHJldHVybiBPcHRpb25zOjpmb3JjZVdlYWtSYW5k
b21TZWVkKCkgPyBPcHRpb25zOjpmb3JjZWRXZWFrUmFuZG9tU2VlZCgpIDogc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KHJhbmRvbU51bWJlcigpICogKHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+
OjptYXgoKSArIDEuMCkpOworfQorCiAvKiBTb3VyY2UgZm9yIEpTR2xvYmFsT2JqZWN0Lmx1dC5o
CiBAYmVnaW4gZ2xvYmFsT2JqZWN0VGFibGUKICAgcGFyc2VJbnQgICAgICAgICAgICAgIGdsb2Jh
bEZ1bmNQYXJzZUludCAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgpAQCAtMTY3LDcg
KzE3Miw3IEBACiAgICAgLCBtX21hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50KGFkb3B0
UmVmKG5ldyBXYXRjaHBvaW50U2V0KElzV2F0Y2hlZCkpKQogICAgICwgbV9oYXZpbmdBQmFkVGlt
ZVdhdGNocG9pbnQoYWRvcHRSZWYobmV3IFdhdGNocG9pbnRTZXQoSXNXYXRjaGVkKSkpCiAgICAg
LCBtX3ZhckluamVjdGlvbldhdGNocG9pbnQoYWRvcHRSZWYobmV3IFdhdGNocG9pbnRTZXQoSXNX
YXRjaGVkKSkpCi0gICAgLCBtX3dlYWtSYW5kb20oT3B0aW9uczo6Zm9yY2VXZWFrUmFuZG9tU2Vl
ZCgpID8gT3B0aW9uczo6Zm9yY2VkV2Vha1JhbmRvbVNlZWQoKSA6IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihyYW5kb21OdW1iZXIoKSAqIChzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4
KCkgKyAxLjApKSkKKyAgICAsIG1fd2Vha0RvdWJsZVJhbmRvbShnZW5lcmF0ZVNlZWQoKSwgZ2Vu
ZXJhdGVTZWVkKCkpCiAgICAgLCBtX2V2YWxFbmFibGVkKHRydWUpCiAgICAgLCBtX2V4cGVyaW1l
bnRzRW5hYmxlZChmYWxzZSkKICAgICAsIG1fY29uc29sZUNsaWVudChudWxscHRyKQpAQCAtODIy
LDEwICs4MjcsMTAgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6c2V0SW5wdXRDdXJzb3IoUGFzc1Jl
ZlB0cjxJbnB1dEN1cnNvcj4gcHJwQ3Vyc29yKQogICAgIC8vIFNhdmUgb3Igc2V0IHRoZSByYW5k
b20gc2VlZC4gVGhpcyBwZXJmb3JtZWQgaGVyZSByYXRoZXIgdGhhbiB0aGUgY29uc3RydWN0b3IK
ICAgICAvLyB0byBhdm9pZCB0aHJlYWRpbmcgdGhlIGlucHV0IGN1cnNvciB0aHJvdWdoIGFsbCB0
aGUgYWJzdHJhY3Rpb24gbGF5ZXJzLgogICAgIGlmIChjdXJzb3IuaXNDYXB0dXJpbmcoKSkKLSAg
ICAgICAgY3Vyc29yLmFwcGVuZElucHV0PFNldFJhbmRvbVNlZWQ+KG1fd2Vha1JhbmRvbS5zZWVk
VW5zYWZlKCkpOworICAgICAgICBjdXJzb3IuYXBwZW5kSW5wdXQ8U2V0UmFuZG9tU2VlZD4obV93
ZWFrRG91YmxlUmFuZG9tLnNlZWRVbnNhZmUoKSk7CiAgICAgZWxzZSBpZiAoY3Vyc29yLmlzUmVw
bGF5aW5nKCkpIHsKICAgICAgICAgaWYgKFNldFJhbmRvbVNlZWQqIGlucHV0ID0gY3Vyc29yLmZl
dGNoSW5wdXQ8U2V0UmFuZG9tU2VlZD4oKSkKLSAgICAgICAgICAgIG1fd2Vha1JhbmRvbS5pbml0
aWFsaXplU2VlZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5wdXQtPnJhbmRvbVNlZWQoKSkpOwor
ICAgICAgICAgICAgbV93ZWFrRG91YmxlUmFuZG9tLmluaXRpYWxpemVTZWVkKHN0YXRpY19jYXN0
PHVuc2lnbmVkPihpbnB1dC0+cmFuZG9tU2VlZCgpKSk7CiAgICAgfQogfQogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCA3YmRj
YjcyYWM1NmY3NjRiYWU0YmE3MTdmOWQ2MTBiMThhNWVhNTgxLi5jMjY1Njg3YjVjMDBmNzI0ZTU0
NWQzMjQyMjRlZmIyNDA1M2IzNjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJTdHJ1Y3R1
cmVSYXJlRGF0YUlubGluZXMuaCIKICNpbmNsdWRlICJWTS5oIgogI2luY2x1ZGUgIldhdGNocG9p
bnQuaCIKKyNpbmNsdWRlICJXZWFrRG91YmxlUmFuZG9tLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNCYXNlLmg+CiAjaW5jbHVkZSA8YXJyYXk+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQu
aD4KQEAgLTI1OSw3ICsyNjAsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1Nl
Z21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKIAogICAgIE93blB0cjxKU0dsb2JhbE9iamVjdFJhcmVE
YXRhPiBtX3JhcmVEYXRhOwogCi0gICAgV2Vha1JhbmRvbSBtX3dlYWtSYW5kb207CisgICAgV2Vh
a0RvdWJsZVJhbmRvbSBtX3dlYWtEb3VibGVSYW5kb207CiAKICAgICBib29sIG1fZXZhbEVuYWJs
ZWQ7CiAgICAgU3RyaW5nIG1fZXZhbERpc2FibGVkRXJyb3JNZXNzYWdlOwpAQCAtNTY4LDggKzU2
OSw4IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVP
YmplY3QgewogICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+b3BhcXVlSlNDbGFzc0RhdGE7CiAg
ICAgfQogCi0gICAgZG91YmxlIHdlYWtSYW5kb21OdW1iZXIoKSB7IHJldHVybiBtX3dlYWtSYW5k
b20uZ2V0KCk7IH0KLSAgICB1bnNpZ25lZCB3ZWFrUmFuZG9tSW50ZWdlcigpIHsgcmV0dXJuIG1f
d2Vha1JhbmRvbS5nZXRVaW50MzIoKTsgfQorICAgIGRvdWJsZSB3ZWFrUmFuZG9tTnVtYmVyKCkg
eyByZXR1cm4gbV93ZWFrRG91YmxlUmFuZG9tLmdldCgpOyB9CisgICAgdW5zaWduZWQgd2Vha1Jh
bmRvbUludGVnZXIoKSB7IHJldHVybiBtX3dlYWtEb3VibGVSYW5kb20uZ2V0VWludDMyKCk7IH0K
IAogICAgIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayogY3JlYXRlUHJvZ3JhbUNvZGVCbG9jayhD
YWxsRnJhbWUqLCBQcm9ncmFtRXhlY3V0YWJsZSosIEpTT2JqZWN0KiogZXhjZXB0aW9uKTsKICAg
ICBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqIGNyZWF0ZUV2YWxDb2RlQmxvY2soQ2FsbEZyYW1lKiwg
RXZhbEV4ZWN1dGFibGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1dlYWtEb3VibGVSYW5kb20uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dl
YWtEb3VibGVSYW5kb20uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yODNjZTUyZmI5ZTI2ODM3NjA4Y2U5NjdiM2U5
MjA3NzY1OGZjYWM1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvV2Vha0RvdWJsZVJhbmRvbS5oCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTQgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFdlYWtEb3VibGVSYW5kb21faAorI2RlZmluZSBXZWFrRG91YmxlUmFuZG9t
X2gKKworI2luY2x1ZGUgIldlYWtSYW5kb20uaCIKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKworbmFt
ZXNwYWNlIEpTQyB7CisKK2NsYXNzIFdlYWtEb3VibGVSYW5kb20geworZnJpZW5kIGNsYXNzIEpT
R2xvYmFsT2JqZWN0OyAvLyBGb3IgYWNjZXNzIHRvIGluaXRpYWxpemVTZWVkKCkgZHVyaW5nIHJl
cGxheS4KK3B1YmxpYzoKKyAgICBXZWFrRG91YmxlUmFuZG9tKHVuc2lnbmVkIGxvd1NlZWQsIHVu
c2lnbmVkIGhpZ2hTZWVkKQorICAgICAgICA6IG1fbG93KGxvd1NlZWQpCisgICAgICAgICwgbV9o
aWdoKGhpZ2hTZWVkKQorICAgIHsKKyAgICB9CisKKyAgICB1aW50NjRfdCBzZWVkVW5zYWZlKCkK
KyAgICB7CisgICAgICAgIHJldHVybiAoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG1fbG93LnNlZWRV
bnNhZmUoKSkgPDwgMzIpIHwgbV9oaWdoLnNlZWRVbnNhZmUoKTsKKyAgICB9CisKKyAgICBkb3Vi
bGUgZ2V0KCkKKyAgICB7CisgICAgICAgIC8vIERvdWJsZSBmcmFjdGlvbiBwcmVjaXNpb24gaXMg
NTMgYml0LgorICAgICAgICAvLyBTbyBnZW5lcmF0ZSBhIHJhbmRvbSA1MyBiaXQgbnVtYmVyIGFu
ZCBkaXZpZGUgaXQgd2l0aCAyXjUzIHRvIHByb2R1Y2UgYSBbMCwgMS4wKSBkb3VibGUgbnVtYmVy
LgorICAgICAgICB1aW50NjRfdCBsb3cyNkJpdCA9IG1fbG93LmdldFVpbnQzMigpID4+IDY7Cisg
ICAgICAgIHVpbnQ2NF90IGhpZ2gyN0JpdCA9IG1faGlnaC5nZXRVaW50MzIoKSA+PiA1OworICAg
ICAgICB1aW50NjRfdCBjb21iaW5lZDUzQml0ID0gKGhpZ2gyN0JpdCA8PCAyNikgfCBsb3cyNkJp
dDsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4oY29tYmluZWQ1M0JpdCkgLyBz
dGF0aWNfY2FzdDxkb3VibGU+KDFMTCA8PCA1Myk7CisgICAgfQorCisgICAgdW5zaWduZWQgZ2V0
VWludDMyKCkKKyAgICB7CisgICAgICAgIC8vIERpc2NhcmQgYSBnZW5lcmF0ZWQgdmFsdWUgZnJv
bSB0aGUgcmFuZG9tIGdlbmVyYXRvciBmb3IgaGlnaCBiaXQuCisgICAgICAgIG1faGlnaC5nZXRV
aW50MzIoKTsKKyAgICAgICAgcmV0dXJuIG1fbG93LmdldFVpbnQzMigpOworICAgIH0KKworcHJp
dmF0ZToKKyAgICB2b2lkIGluaXRpYWxpemVTZWVkKHVpbnQ2NF90IHNlZWQpCisgICAgeworICAg
ICAgICBtX2xvdy5pbml0aWFsaXplU2VlZChzZWVkID4+IDMyKTsKKyAgICAgICAgbV9oaWdoLmlu
aXRpYWxpemVTZWVkKHN0YXRpY19jYXN0PHVpbnQzMl90PihzZWVkKSk7CisgICAgfQorCisgICAg
V2Vha1JhbmRvbSBtX2xvdzsKKyAgICBXZWFrUmFuZG9tIG1faGlnaDsKK307CisKK30gLy8gbmFt
ZXNwYWNlIEpTQworCisjZW5kaWYgLy8gV2Vha0RvdWJsZVJhbmRvbV9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrUmFuZG9tLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9XZWFrUmFuZG9tLmgKaW5kZXggOThiMjNjNzBkNmE5YzYwYTllMzU2
OGQ1NzUzZmJiOTczODNkOWNlMC4uNWZlYTVlZjcxYzliYTExMmFlMGYxNTMwZWQ3MDQwNjU1ZTBk
YjkxMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha1JhbmRv
bS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtSYW5kb20uaApAQCAt
NTYsNyArNTYsOCBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIFdlYWtSYW5kb20gewotZnJp
ZW5kIGNsYXNzIEpTR2xvYmFsT2JqZWN0OyAvLyBGb3IgYWNjZXNzIHRvIGluaXRpYWxpemVTZWVk
KCkgZHVyaW5nIHJlcGxheS4KKy8vIEZvciBhY2Nlc3MgdG8gaW5pdGlhbGl6ZVNlZWQoKSBkdXJp
bmcgcmVwbGF5LgorZnJpZW5kIGNsYXNzIFdlYWtEb3VibGVSYW5kb207CiBwdWJsaWM6CiAgICAg
V2Vha1JhbmRvbSh1bnNpZ25lZCBzZWVkKQogICAgIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxMTY3ZWM0ZGE4M2VlNTgw
Yzk0ODExNGQxMmNhYTgwMTVlY2E4NGFhLi5lMDkyNTg3MDY0MmRkMjQyMjYwZTJjMTU1MjgwMzFh
MDY2OTAxNGUwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTQtMDgtMDEgIFl1c3VrZSBTdXp1
a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgRXh0ZW5kIHJhbmRvbSBwcmVj
aXNpb24gdG8gNTNiaXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05ODU4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICoganMvNTNiaXQtcmFuZG9tLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
anMvNTNiaXQtcmFuZG9tLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy81
M2JpdC1yYW5kb20uanM6IEFkZGVkLgorCiAyMDE0LTA3LTMxICBCZXRoIERha2luICA8YmRha2lu
QGFwcGxlLmNvbT4KIAogICAgICAgICBwbGF0Zm9ybS9tYWMvZmFzdC9zY3JvbGxpbmcvc2Nyb2xs
LXNlbGVjdC1ib3R0b20tdGVzdC5odG1sIGZhaWxpbmcgb24gTWF2ZXJpY2tzIApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvanMvNTNiaXQtcmFuZG9tLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2pzLzUzYml0LXJhbmRvbS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmFhZGE1ZWI4NThjYmE1
MDhkM2YxMjc3MjRjY2U2NjFlZWIzNTE0NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2pzLzUzYml0LXJhbmRvbS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMSBAQAorVGhpcyB0ZXN0
cyB0aGF0IGdlbmVyYXRpbmcgNTMgYml0IHByZWNpc2lvbiByYW5kb20gbnVtYmVycy4KKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZm91bmQ1M0JpdCBpcyB0cnVlCitQQVNT
IGZvdW5kTGVzc1RoYW41M0JpdCBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvNTNiaXQt
cmFuZG9tLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy81M2JpdC1yYW5kb20uaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li41NGE2Yjc2OTE1ZmNlOTYxNDEwMjIwYzdmZGUyZWQ2NmY0YTVhM2U3Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvanMvNTNiaXQtcmFuZG9tLmh0bWwKQEAgLTAsMCArMSwxMCBAQAor
PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzLzUzYml0LXJhbmRv
bS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9q
cy9zY3JpcHQtdGVzdHMvNTNiaXQtcmFuZG9tLmpzIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRl
c3RzLzUzYml0LXJhbmRvbS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41Nzc3NzMxNzEwMGFjMDBjYzk4NDRhNTE5
ZjEwYjc0ZDIzNmZjNGQ4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0
LXRlc3RzLzUzYml0LXJhbmRvbS5qcwpAQCAtMCwwICsxLDI0IEBACitkZXNjcmlwdGlvbigKKyJU
aGlzIHRlc3RzIHRoYXQgZ2VuZXJhdGluZyA1MyBiaXQgcHJlY2lzaW9uIHJhbmRvbSBudW1iZXJz
LiIKKyk7CisKK3ZhciBNQVggPSAyMDsKK3ZhciBmb3VuZDUzQml0ID0gZmFsc2U7Cit2YXIgZm91
bmRMZXNzVGhhbjUzQml0ID0gZmFsc2U7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgTUFYOyArK2kp
IHsKKyAgdmFyIHN0ciA9IE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMik7CisgIC8vIDUzIGJpdCAr
ICcwLicubGVuZ3RoCisgIGlmIChzdHIubGVuZ3RoID09PSAoNTMgKyAyKSkgeworICAgIGZvdW5k
NTNCaXQgPSB0cnVlOworICB9IGVsc2UgaWYgKHN0ci5sZW5ndGggPCAoNTMgKyAyKSkgeworICAg
IGZvdW5kTGVzc1RoYW41M0JpdCA9IHRydWU7CisgIH0KKworICBpZiAoZm91bmQ1M0JpdCAmJiBm
b3VuZExlc3NUaGFuNTNCaXQpIHsKKyAgICBicmVhazsKKyAgfQorfQorCitzaG91bGRCZVRydWUo
J2ZvdW5kNTNCaXQnKTsKK3Nob3VsZEJlVHJ1ZSgnZm91bmRMZXNzVGhhbjUzQml0Jyk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>235890</attachid>
            <date>2014-08-01 09:03:33 -0700</date>
            <delta_ts>2014-08-02 08:54:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98586-20140802010337.patch</filename>
            <type>text/plain</type>
            <size>17822</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcxOTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ZGU5OTZlYzM4ZTkzODdkNWE4NmEzZTRmNWNlYzM4NDk5YTViMTBkLi5hYWJjODQyMGUzMzk4YTYz
MGMwYzY5N2UyOTY1ZmM2NjhmMjhkODM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOCBAQAorMjAxNC0wOC0wMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBFeHRlbmQgcmFuZG9tIHByZWNpc2lvbiB0byA1M2JpdHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4NTg2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAgICAgICogSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVTZWVkKToKKyAgICAg
ICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OkpTR2xvYmFsT2JqZWN0KToKKyAgICAgICAgKEpTQzo6
SlNHbG9iYWxPYmplY3Q6OnNldElucHV0Q3Vyc29yKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xv
YmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp3ZWFrUmFuZG9tTnVt
YmVyKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OndlYWtSYW5kb21JbnRlZ2VyKToK
KyAgICAgICAgKiBydW50aW1lL1dlYWtEb3VibGVSYW5kb20uaDogQWRkZWQuCisgICAgICAgIChK
U0M6OldlYWtEb3VibGVSYW5kb206OldlYWtEb3VibGVSYW5kb20pOgorICAgICAgICAoSlNDOjpX
ZWFrRG91YmxlUmFuZG9tOjpzZWVkVW5zYWZlKToKKyAgICAgICAgKEpTQzo6V2Vha0RvdWJsZVJh
bmRvbTo6Z2V0KToKKyAgICAgICAgKEpTQzo6V2Vha0RvdWJsZVJhbmRvbTo6Z2V0VWludDMyKToK
KyAgICAgICAgKEpTQzo6V2Vha0RvdWJsZVJhbmRvbTo6aW5pdGlhbGl6ZVNlZWQpOgorICAgICAg
ICAqIHJ1bnRpbWUvV2Vha1JhbmRvbS5oOgorCiAyMDE0LTA3LTMxICBNYXJrIExhbSAgPG1hcmsu
bGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBKU0NlbGw6OmNsYXNzSW5mbygpIGJlbG9uZ3MgaW4g
SlNDZWxsSW5saW5lcy5oLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvaiBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKaW5k
ZXggZDkyMmQ1NDE3ZjQ4NDU4MGE2ZjU4MTM4OGZkNjBhOTExNTMzMjk0MC4uZmJlM2UxY2EyMTAy
YjEyNTZhZTNlYzI3ODI4ZWM4ODAyZDUwYTcwMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qCkBAIC0xNTc4LDYgKzE1NzgsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxWTS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxWTUVudHJ5U2NvcGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
V2F0Y2hkb2cuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcV2Vha0Rv
dWJsZVJhbmRvbS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxXZWFr
R0NNYXAuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcV2Vha01hcENv
bnN0cnVjdG9yLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFdlYWtN
YXBEYXRhLmgiIC8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
LmZpbHRlcnMKaW5kZXggNWQyNjgyYjNlMzYxNzk2OTExZmQwMTEwODIyMmRmYjIyM2NmZjY3NS4u
MmM2ZDQzNWIwMGJmOTQ2NTVhZjdmYmQ1OTg1MWIxNzg0Y2UxMTdlOCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUu
dmN4cHJvai5maWx0ZXJzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtMjc0Nyw2ICsyNzQ3
LDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcV2F0Y2hkb2cuaCI+CiAg
ICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcV2Vha0RvdWJsZVJhbmRvbS5oIj4KKyAgICAgIDxG
aWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccnVudGltZVxXZWFrR0NNYXAuaCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8
L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggNDg3YmYzODQ2N2NmM2I3NmE4N2IxNTJiOTBkOGJmMjgzMmE4NDI1Ny4uZTk0NTNkNzc1ODU5
Y2Y5NTdhMzUyYmMzMWU0ZTkwZmNlODVlMjdkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTExNDQsNiArMTE0NCw5IEBACiAJCTY1QzAyODVDMTcxNzk2NjgwMDM1MUUzNSAvKiBB
Uk12N0RPcGNvZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNjVDMDI4NUExNzE3OTY2ODAwMzUxRTM1IC8qIEFSTXY3RE9wY29kZS5jcHAgKi87IH07
CiAJCTY1QzAyODVEMTcxNzk2NjgwMDM1MUUzNSAvKiBBUk12N0RPcGNvZGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1QzAyODVCMTcxNzk2NjgwMDM1
MUUzNSAvKiBBUk12N0RPcGNvZGUuaCAqLzsgfTsKIAkJNjVGQjUxMTcxODRFRUU3MDAwQzEyQjcw
IC8qIFByb3RvQ2FsbEZyYW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDY1RkI1MTE2MTg0RUU5QkMwMEMxMkI3MCAvKiBQcm90b0NhbGxGcmFtZS5j
cHAgKi87IH07CisJCTcwNzM1RDUyMTk4QkVEOTAwMENFMEQ1MiAvKiBXZWFrRG91YmxlUmFuZG9t
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MDczNUQ1
MTE5OEJENUUzMDBDRTBENTIgLyogV2Vha0RvdWJsZVJhbmRvbS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcwQUVENjA3MTk4QkVGRjQwMDE5ODhF
MiAvKiBXZWFrRG91YmxlUmFuZG9tLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3MDczNUQ1MTE5OEJENUUzMDBDRTBENTIgLyogV2Vha0RvdWJsZVJhbmRv
bS5oICovOyB9OworCQk3MEFFRDYwODE5OEJGMDBFMDAxOTg4RTIgLyogV2Vha0RvdWJsZVJhbmRv
bS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzA3MzVE
NTExOThCRDVFMzAwQ0UwRDUyIC8qIFdlYWtEb3VibGVSYW5kb20uaCAqLzsgfTsKIAkJN0MwMDhD
RDIxODZGOEE5MzAwOTU1QzI0IC8qIEpTUHJvbWlzZUZ1bmN0aW9ucy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzAwOENEMDE4NkY4QTkzMDA5NTVD
MjQgLyogSlNQcm9taXNlRnVuY3Rpb25zLmNwcCAqLzsgfTsKIAkJN0MwMDhDRDMxODZGOEE5MzAw
OTU1QzI0IC8qIEpTUHJvbWlzZUZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0MwMDhDRDExODZGOEE5MzAwOTU1QzI0IC8qIEpTUHJvbWlz
ZUZ1bmN0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTdDMDA4Q0RBMTg3MTI0QkIwMDk1NUMyNCAvKiBKU1Byb21pc2VEZWZlcnJlZC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzAwOENEODE4
NzEyNEJCMDA5NTVDMjQgLyogSlNQcm9taXNlRGVmZXJyZWQuY3BwICovOyB9OwpAQCAtMzA0OCw2
ICszMDUxLDcgQEAKIAkJNjVGQjUxMTUxODRFRThGODAwQzEyQjcwIC8qIFByb3RvQ2FsbEZyYW1l
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb3RvQ2FsbEZyYW1lLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1RkI1MTE2MTg0RUU5QkMwMEMxMkI3MCAvKiBQ
cm90b0NhbGxGcmFtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQ
cm90b0NhbGxGcmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwNEZEMzUz
MDU2OTdFNkQwMDNEQkVEOSAvKiBCb29sZWFuT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJvb2xlYW5PYmplY3QuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9OworCQk3MDczNUQ1MTE5OEJENUUzMDBDRTBE
NTIgLyogV2Vha0RvdWJsZVJhbmRvbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWFrRG91YmxlUmFuZG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMDA4
Q0QwMTg2RjhBOTMwMDk1NUMyNCAvKiBKU1Byb21pc2VGdW5jdGlvbnMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBsaW5lRW5kaW5nID0gMDsgcGF0aCA9IEpTUHJvbWlzZUZ1bmN0
aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHhjTGFuZ3VhZ2VTcGVjaWZpY2F0aW9u
SWRlbnRpZmllciA9IHhjb2RlLmxhbmcuY3BwOyB9OwogCQk3QzAwOENEMTE4NkY4QTkzMDA5NTVD
MjQgLyogSlNQcm9taXNlRnVuY3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTUHJvbWlzZUZ1bmN0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
QzAwOENEODE4NzEyNEJCMDA5NTVDMjQgLyogSlNQcm9taXNlRGVmZXJyZWQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNQcm9taXNlRGVmZXJyZWQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDk3Miw2ICs0OTc2LDcgQEAKIAkJCQlGRUQ5NEYy
QjE3MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hkb2cuY3BwICovLAogCQkJCUZFRDk0RjJDMTcxRTNF
MjMwMEJFNzdBNCAvKiBXYXRjaGRvZy5oICovLAogCQkJCUZFRDk0RjJEMTcxRTNFMjMwMEJFNzdB
NCAvKiBXYXRjaGRvZ01hYy5jcHAgKi8sCisJCQkJNzA3MzVENTExOThCRDVFMzAwQ0UwRDUyIC8q
IFdlYWtEb3VibGVSYW5kb20uaCAqLywKIAkJCQkxNEJGQ0U2ODEwQ0RCMUZDMDAzNjRDQ0UgLyog
V2Vha0dDTWFwLmggKi8sCiAJCQkJQTdDQTNBREQxN0RBNDFBRTAwNjUzOEFGIC8qIFdlYWtNYXBD
b25zdHJ1Y3Rvci5jcHAgKi8sCiAJCQkJQTdDQTNBREUxN0RBNDFBRTAwNjUzOEFGIC8qIFdlYWtN
YXBDb25zdHJ1Y3Rvci5oICovLApAQCAtNTY4OSw2ICs1Njk0LDcgQEAKIAkJCWJ1aWxkQWN0aW9u
TWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKIAkJCQk1NTQwNzU3MzE4REE1OEFEMDBF
RkY3RjIgLyogQXJndW1lbnRzLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MEFFRDYwNzE5OEJFRkY0
MDAxOTg4RTIgLyogV2Vha0RvdWJsZVJhbmRvbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTU0MDc1
NzQxOERBNThBRDAwRUZGN0YyIC8qIEFyZ3VtZW50c0l0ZXJhdG9yQ29uc3RydWN0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTU1NDA3NTc1MThEQTU4QUQwMEVGRjdGMiAvKiBBcmd1bWVudHNJdGVy
YXRvclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTU0MDc1ODYxOERBNThBRDAwRUZG
N0YyIC8qIEFycmF5Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLApAQCAtNTk0NSw2ICs1OTUx
LDcgQEAKIAkJCQkyQUFCQ0RFNzE4RUYyOTQyMDAwMDIwOTYgLyogR0NMb2dnaW5nLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlGRTUyNDhGOTE5MTQ0MkQ5MDBCN0ZERTQgLyogVmFyaWFibGVXYXRjaHBv
aW50U2V0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzJEQTc3ODMxOEUyNTk5OTAwNjZG
Q0I2IC8qIEhlYXBJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MDczNUQ1MjE5OEJFRDkw
MDBDRTBENTIgLyogV2Vha0RvdWJsZVJhbmRvbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkFBQ0U2
M0QxOENBNUEwMzAwRUQwMTkxIC8qIEdDQWN0aXZpdHlDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMkE4MzYzODYxOEQ3RDBFRTAwMDBFQkNDIC8qIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2su
aCBpbiBIZWFkZXJzICovLAogCQkJCTJBODM2MzhBMThEN0QwRkUwMDAwRUJDQyAvKiBGdWxsR0NB
Y3Rpdml0eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKQEAgLTY3NzIsNiArNjc3OSw3IEBACiAJ
CQlpc2EgPSBQQlhIZWFkZXJzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0
ODM2NDc7CiAJCQlmaWxlcyA9ICgKKwkJCQk3MEFFRDYwODE5OEJGMDBFMDAxOTg4RTIgLyogV2Vh
a0RvdWJsZVJhbmRvbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUU4NzkxRTAxOTNGQjY4MDAwNzZD
QTc4IC8qIEFyZ3VtZW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUU4NzkxRTExOTNGQjY4MDAw
NzZDQTc4IC8qIEFyZ3VtZW50c0l0ZXJhdG9yQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAog
CQkJCTlFODc5MUUyMTkzRkI2ODAwMDc2Q0E3OCAvKiBBcmd1bWVudHNJdGVyYXRvclByb3RvdHlw
ZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAKaW5kZXggY2JmMDdhMmYzNDIyNDkyOTE2OTk5MDdlODFkMDQxYmIx
YmE0NjU0Ny4uOWIwNTRkYzRkNjM2YjJmYTNlNjgxM2Y3OWYzZjIyZTAxYmU0ZWQyNiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAt
MTQzLDYgKzE0MywxMSBAQAogCiBjb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBKU0dsb2Jh
bE9iamVjdDo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSA9IHsgJmFsbG93c0FjY2Vzc0Zyb20s
ICZzdXBwb3J0c1Byb2ZpbGluZywgJnN1cHBvcnRzUmljaFNvdXJjZUluZm8sICZzaG91bGRJbnRl
cnJ1cHRTY3JpcHQsICZqYXZhU2NyaXB0RXhwZXJpbWVudHNFbmFibGVkLCAwLCAmc2hvdWxkSW50
ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91dCB9OwogCitzdGF0aWMgdW5zaWduZWQgZ2VuZXJhdGVT
ZWVkKCkKK3sKKyAgICByZXR1cm4gT3B0aW9uczo6Zm9yY2VXZWFrUmFuZG9tU2VlZCgpID8gT3B0
aW9uczo6Zm9yY2VkV2Vha1JhbmRvbVNlZWQoKSA6IHN0YXRpY19jYXN0PHVuc2lnbmVkPihyYW5k
b21OdW1iZXIoKSAqIChzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkgKyAxLjAp
KTsKK30KKwogLyogU291cmNlIGZvciBKU0dsb2JhbE9iamVjdC5sdXQuaAogQGJlZ2luIGdsb2Jh
bE9iamVjdFRhYmxlCiAgIHBhcnNlSW50ICAgICAgICAgICAgICBnbG9iYWxGdW5jUGFyc2VJbnQg
ICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKQEAgLTE2Nyw3ICsxNzIsNyBAQAogICAg
ICwgbV9tYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludChhZG9wdFJlZihuZXcgV2F0Y2hw
b2ludFNldChJc1dhdGNoZWQpKSkKICAgICAsIG1faGF2aW5nQUJhZFRpbWVXYXRjaHBvaW50KGFk
b3B0UmVmKG5ldyBXYXRjaHBvaW50U2V0KElzV2F0Y2hlZCkpKQogICAgICwgbV92YXJJbmplY3Rp
b25XYXRjaHBvaW50KGFkb3B0UmVmKG5ldyBXYXRjaHBvaW50U2V0KElzV2F0Y2hlZCkpKQotICAg
ICwgbV93ZWFrUmFuZG9tKE9wdGlvbnM6OmZvcmNlV2Vha1JhbmRvbVNlZWQoKSA/IE9wdGlvbnM6
OmZvcmNlZFdlYWtSYW5kb21TZWVkKCkgOiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmFuZG9tTnVt
YmVyKCkgKiAoc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpICsgMS4wKSkpCisg
ICAgLCBtX3dlYWtEb3VibGVSYW5kb20oZ2VuZXJhdGVTZWVkKCksIGdlbmVyYXRlU2VlZCgpKQog
ICAgICwgbV9ldmFsRW5hYmxlZCh0cnVlKQogICAgICwgbV9leHBlcmltZW50c0VuYWJsZWQoZmFs
c2UpCiAgICAgLCBtX2NvbnNvbGVDbGllbnQobnVsbHB0cikKQEAgLTgyMiwxMCArODI3LDEwIEBA
IHZvaWQgSlNHbG9iYWxPYmplY3Q6OnNldElucHV0Q3Vyc29yKFBhc3NSZWZQdHI8SW5wdXRDdXJz
b3I+IHBycEN1cnNvcikKICAgICAvLyBTYXZlIG9yIHNldCB0aGUgcmFuZG9tIHNlZWQuIFRoaXMg
cGVyZm9ybWVkIGhlcmUgcmF0aGVyIHRoYW4gdGhlIGNvbnN0cnVjdG9yCiAgICAgLy8gdG8gYXZv
aWQgdGhyZWFkaW5nIHRoZSBpbnB1dCBjdXJzb3IgdGhyb3VnaCBhbGwgdGhlIGFic3RyYWN0aW9u
IGxheWVycy4KICAgICBpZiAoY3Vyc29yLmlzQ2FwdHVyaW5nKCkpCi0gICAgICAgIGN1cnNvci5h
cHBlbmRJbnB1dDxTZXRSYW5kb21TZWVkPihtX3dlYWtSYW5kb20uc2VlZFVuc2FmZSgpKTsKKyAg
ICAgICAgY3Vyc29yLmFwcGVuZElucHV0PFNldFJhbmRvbVNlZWQ+KG1fd2Vha0RvdWJsZVJhbmRv
bS5zZWVkVW5zYWZlKCkpOwogICAgIGVsc2UgaWYgKGN1cnNvci5pc1JlcGxheWluZygpKSB7CiAg
ICAgICAgIGlmIChTZXRSYW5kb21TZWVkKiBpbnB1dCA9IGN1cnNvci5mZXRjaElucHV0PFNldFJh
bmRvbVNlZWQ+KCkpCi0gICAgICAgICAgICBtX3dlYWtSYW5kb20uaW5pdGlhbGl6ZVNlZWQoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGlucHV0LT5yYW5kb21TZWVkKCkpKTsKKyAgICAgICAgICAgIG1f
d2Vha0RvdWJsZVJhbmRvbS5pbml0aWFsaXplU2VlZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5w
dXQtPnJhbmRvbVNlZWQoKSkpOwogICAgIH0KIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggN2JkY2I3MmFjNTZmNzY0YmFl
NGJhNzE3ZjlkNjEwYjE4YTVlYTU4MS4uYzI2NTY4N2I1YzAwZjcyNGU1NDVkMzI0MjI0ZWZiMjQw
NTNiMzY2ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiU3RydWN0dXJlUmFyZURhdGFJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiVk0uaCIKICNpbmNsdWRlICJXYXRjaHBvaW50LmgiCisjaW5jbHVk
ZSAiV2Vha0RvdWJsZVJhbmRvbS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQmFzZS5o
PgogI2luY2x1ZGUgPGFycmF5PgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBAIC0yNTksNyAr
MjYwLDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJs
ZU9iamVjdCB7CiAKICAgICBPd25QdHI8SlNHbG9iYWxPYmplY3RSYXJlRGF0YT4gbV9yYXJlRGF0
YTsKIAotICAgIFdlYWtSYW5kb20gbV93ZWFrUmFuZG9tOworICAgIFdlYWtEb3VibGVSYW5kb20g
bV93ZWFrRG91YmxlUmFuZG9tOwogCiAgICAgYm9vbCBtX2V2YWxFbmFibGVkOwogICAgIFN0cmlu
ZyBtX2V2YWxEaXNhYmxlZEVycm9yTWVzc2FnZTsKQEAgLTU2OCw4ICs1NjksOCBAQCBjbGFzcyBK
U0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICAg
ICAgcmV0dXJuIG1fcmFyZURhdGEtPm9wYXF1ZUpTQ2xhc3NEYXRhOwogICAgIH0KIAotICAgIGRv
dWJsZSB3ZWFrUmFuZG9tTnVtYmVyKCkgeyByZXR1cm4gbV93ZWFrUmFuZG9tLmdldCgpOyB9Ci0g
ICAgdW5zaWduZWQgd2Vha1JhbmRvbUludGVnZXIoKSB7IHJldHVybiBtX3dlYWtSYW5kb20uZ2V0
VWludDMyKCk7IH0KKyAgICBkb3VibGUgd2Vha1JhbmRvbU51bWJlcigpIHsgcmV0dXJuIG1fd2Vh
a0RvdWJsZVJhbmRvbS5nZXQoKTsgfQorICAgIHVuc2lnbmVkIHdlYWtSYW5kb21JbnRlZ2VyKCkg
eyByZXR1cm4gbV93ZWFrRG91YmxlUmFuZG9tLmdldFVpbnQzMigpOyB9CiAKICAgICBVbmxpbmtl
ZFByb2dyYW1Db2RlQmxvY2sqIGNyZWF0ZVByb2dyYW1Db2RlQmxvY2soQ2FsbEZyYW1lKiwgUHJv
Z3JhbUV4ZWN1dGFibGUqLCBKU09iamVjdCoqIGV4Y2VwdGlvbik7CiAgICAgVW5saW5rZWRFdmFs
Q29kZUJsb2NrKiBjcmVhdGVFdmFsQ29kZUJsb2NrKENhbGxGcmFtZSosIEV2YWxFeGVjdXRhYmxl
Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrRG91Ymxl
UmFuZG9tLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrRG91YmxlUmFuZG9t
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMjgzY2U1MmZiOWUyNjgzNzYwOGNlOTY3YjNlOTIwNzc2NThmY2FjNQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtEb3Vi
bGVSYW5kb20uaApAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IFl1
c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBX
ZWFrRG91YmxlUmFuZG9tX2gKKyNkZWZpbmUgV2Vha0RvdWJsZVJhbmRvbV9oCisKKyNpbmNsdWRl
ICJXZWFrUmFuZG9tLmgiCisjaW5jbHVkZSA8c3RkaW50Lmg+CisKK25hbWVzcGFjZSBKU0Mgewor
CitjbGFzcyBXZWFrRG91YmxlUmFuZG9tIHsKK2ZyaWVuZCBjbGFzcyBKU0dsb2JhbE9iamVjdDsg
Ly8gRm9yIGFjY2VzcyB0byBpbml0aWFsaXplU2VlZCgpIGR1cmluZyByZXBsYXkuCitwdWJsaWM6
CisgICAgV2Vha0RvdWJsZVJhbmRvbSh1bnNpZ25lZCBsb3dTZWVkLCB1bnNpZ25lZCBoaWdoU2Vl
ZCkKKyAgICAgICAgOiBtX2xvdyhsb3dTZWVkKQorICAgICAgICAsIG1faGlnaChoaWdoU2VlZCkK
KyAgICB7CisgICAgfQorCisgICAgdWludDY0X3Qgc2VlZFVuc2FmZSgpCisgICAgeworICAgICAg
ICByZXR1cm4gKHN0YXRpY19jYXN0PHVpbnQ2NF90PihtX2xvdy5zZWVkVW5zYWZlKCkpIDw8IDMy
KSB8IG1faGlnaC5zZWVkVW5zYWZlKCk7CisgICAgfQorCisgICAgZG91YmxlIGdldCgpCisgICAg
eworICAgICAgICAvLyBEb3VibGUgZnJhY3Rpb24gcHJlY2lzaW9uIGlzIDUzIGJpdC4KKyAgICAg
ICAgLy8gU28gZ2VuZXJhdGUgYSByYW5kb20gNTMgYml0IG51bWJlciBhbmQgZGl2aWRlIGl0IHdp
dGggMl41MyB0byBwcm9kdWNlIGEgWzAsIDEuMCkgZG91YmxlIG51bWJlci4KKyAgICAgICAgdWlu
dDY0X3QgbG93MjZCaXQgPSBtX2xvdy5nZXRVaW50MzIoKSA+PiA2OworICAgICAgICB1aW50NjRf
dCBoaWdoMjdCaXQgPSBtX2hpZ2guZ2V0VWludDMyKCkgPj4gNTsKKyAgICAgICAgdWludDY0X3Qg
Y29tYmluZWQ1M0JpdCA9IChoaWdoMjdCaXQgPDwgMjYpIHwgbG93MjZCaXQ7CisgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KGNvbWJpbmVkNTNCaXQpIC8gc3RhdGljX2Nhc3Q8ZG91
YmxlPigxTEwgPDwgNTMpOworICAgIH0KKworICAgIHVuc2lnbmVkIGdldFVpbnQzMigpCisgICAg
eworICAgICAgICAvLyBEaXNjYXJkIGEgZ2VuZXJhdGVkIHZhbHVlIGZyb20gdGhlIHJhbmRvbSBn
ZW5lcmF0b3IgZm9yIGhpZ2ggYml0LgorICAgICAgICBtX2hpZ2guZ2V0VWludDMyKCk7CisgICAg
ICAgIHJldHVybiBtX2xvdy5nZXRVaW50MzIoKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdm9p
ZCBpbml0aWFsaXplU2VlZCh1aW50NjRfdCBzZWVkKQorICAgIHsKKyAgICAgICAgbV9sb3cuaW5p
dGlhbGl6ZVNlZWQoc2VlZCA+PiAzMik7CisgICAgICAgIG1faGlnaC5pbml0aWFsaXplU2VlZChz
dGF0aWNfY2FzdDx1aW50MzJfdD4oc2VlZCkpOworICAgIH0KKworICAgIFdlYWtSYW5kb20gbV9s
b3c7CisgICAgV2Vha1JhbmRvbSBtX2hpZ2g7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKwor
I2VuZGlmIC8vIFdlYWtEb3VibGVSYW5kb21faApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvV2Vha1JhbmRvbS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvV2Vha1JhbmRvbS5oCmluZGV4IDk4YjIzYzcwZDZhOWM2MGE5ZTM1NjhkNTc1M2ZiYjk3Mzgz
ZDljZTAuLjVmZWE1ZWY3MWM5YmExMTJhZTBmMTUzMGVkNzA0MDY1NWUwZGI5MTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtSYW5kb20uaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrUmFuZG9tLmgKQEAgLTU2LDcgKzU2LDggQEAK
IG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBXZWFrUmFuZG9tIHsKLWZyaWVuZCBjbGFzcyBKU0ds
b2JhbE9iamVjdDsgLy8gRm9yIGFjY2VzcyB0byBpbml0aWFsaXplU2VlZCgpIGR1cmluZyByZXBs
YXkuCisvLyBGb3IgYWNjZXNzIHRvIGluaXRpYWxpemVTZWVkKCkgZHVyaW5nIHJlcGxheS4KK2Zy
aWVuZCBjbGFzcyBXZWFrRG91YmxlUmFuZG9tOwogcHVibGljOgogICAgIFdlYWtSYW5kb20odW5z
aWduZWQgc2VlZCkKICAgICB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMTE2N2VjNGRhODNlZTU4MGM5NDgxMTRkMTJjYWE4
MDE1ZWNhODRhYS4uZTA5MjU4NzA2NDJkZDI0MjI2MGUyYzE1NTI4MDMxYTA2NjkwMTRlMCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE0IEBACisyMDE0LTA4LTAxICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50
ZWFAZ21haWwuY29tPgorCisgICAgICAgIEV4dGVuZCByYW5kb20gcHJlY2lzaW9uIHRvIDUzYml0
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg1ODYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGpzLzUz
Yml0LXJhbmRvbS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzLzUzYml0LXJhbmRv
bS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvNTNiaXQtcmFuZG9tLmpz
OiBBZGRlZC4KKwogMjAxNC0wNy0zMSAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgcGxhdGZvcm0vbWFjL2Zhc3Qvc2Nyb2xsaW5nL3Njcm9sbC1zZWxlY3QtYm90dG9t
LXRlc3QuaHRtbCBmYWlsaW5nIG9uIE1hdmVyaWNrcyAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2pzLzUzYml0LXJhbmRvbS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy81M2JpdC1yYW5k
b20tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJhYWRhNWViODU4Y2JhNTA4ZDNmMTI3NzI0Y2Nl
NjYxZWViMzUxNDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy81M2JpdC1yYW5k
b20tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK1RoaXMgdGVzdHMgdGhhdCBnZW5lcmF0
aW5nIDUzIGJpdCBwcmVjaXNpb24gcmFuZG9tIG51bWJlcnMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworCitQQVNTIGZvdW5kNTNCaXQgaXMgdHJ1ZQorUEFTUyBmb3VuZExlc3NUaGFu
NTNCaXQgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzLzUzYml0LXJhbmRvbS5odG1sIGIv
TGF5b3V0VGVzdHMvanMvNTNiaXQtcmFuZG9tLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTRhNmI3NjkxNWZj
ZTk2MTQxMDIyMGM3ZmRlMmVkNjZmNGE1YTNlNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2pzLzUzYml0LXJhbmRvbS5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1M
IFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy81M2JpdC1yYW5kb20uanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3Rz
LzUzYml0LXJhbmRvbS5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy81M2JpdC1yYW5k
b20uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNTc3NzczMTcxMDBhYzAwY2M5ODQ0YTUxOWYxMGI3NGQyMzZmYzRk
OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy81M2JpdC1y
YW5kb20uanMKQEAgLTAsMCArMSwyNCBAQAorZGVzY3JpcHRpb24oCisiVGhpcyB0ZXN0cyB0aGF0
IGdlbmVyYXRpbmcgNTMgYml0IHByZWNpc2lvbiByYW5kb20gbnVtYmVycy4iCispOworCit2YXIg
TUFYID0gMjA7Cit2YXIgZm91bmQ1M0JpdCA9IGZhbHNlOwordmFyIGZvdW5kTGVzc1RoYW41M0Jp
dCA9IGZhbHNlOworCitmb3IgKHZhciBpID0gMDsgaSA8IE1BWDsgKytpKSB7CisgIHZhciBzdHIg
PSBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDIpOworICAvLyA1MyBiaXQgKyAnMC4nLmxlbmd0aAor
ICBpZiAoc3RyLmxlbmd0aCA9PT0gKDUzICsgMikpIHsKKyAgICBmb3VuZDUzQml0ID0gdHJ1ZTsK
KyAgfSBlbHNlIGlmIChzdHIubGVuZ3RoIDwgKDUzICsgMikpIHsKKyAgICBmb3VuZExlc3NUaGFu
NTNCaXQgPSB0cnVlOworICB9CisKKyAgaWYgKGZvdW5kNTNCaXQgJiYgZm91bmRMZXNzVGhhbjUz
Qml0KSB7CisgICAgYnJlYWs7CisgIH0KK30KKworc2hvdWxkQmVUcnVlKCdmb3VuZDUzQml0Jyk7
CitzaG91bGRCZVRydWUoJ2ZvdW5kTGVzc1RoYW41M0JpdCcpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>