<?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>85925</bug_id>
          
          <creation_ts>2012-05-08 15:52:27 -0700</creation_ts>
          <short_desc>[chromium] Default media controls should render only the currentTime-containing buffered range</short_desc>
          <delta_ts>2012-05-28 09:19:21 -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>Media</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>85926</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ami Fischman">fischman</reporter>
          <assigned_to name="Ami Fischman">fischman</assigned_to>
          <cc>cdumez</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>eric</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>fischman</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>618898</commentid>
    <comment_count>0</comment_count>
    <who name="Ami Fischman">fischman</who>
    <bug_when>2012-05-08 15:52:27 -0700</bug_when>
    <thetext>&lt;audio&gt; and &lt;video&gt; elements have a buffered() accessor that is meant to return time ranges corresponding to buffered bytes.
Today chromium always claims to have buffered [0,t) where t corresponds to the time of the latest buffered byte, even when a seek might have skipped over the majority of the bytes.

My current plan of attack is:
1) Change RenderMediaControlsChromium.cpp:paintMediaSlider() to preserve the current user-visible controls painting in the presence of multiple buffered regions.
2) Fix chromium to provide the correct TimeRanges for buffered() (this is http://crbug.com/103513).  This will let us tell JS the truth.
3) Prototype RenderMediaControlsChromium changes to paint disjoint buffered ranges in the slider
...and then collect feedback on whether this is last step is a good idea or not.  Either land this to have default controls UI tell the truth, or else revert and continue with the lie (or present an alternative UI).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634001</commentid>
    <comment_count>1</comment_count>
    <who name="Ami Fischman">fischman</who>
    <bug_when>2012-05-25 09:54:26 -0700</bug_when>
    <thetext>Items 1 &amp; 2 are done.
Conversations around UX have converged to feeling showing more than one buffered range in the default controls would be too &quot;busy&quot; visually, and that instead only the buffered range containing currentTime should be rendered.  I&apos;ll upload a patch for that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634003</commentid>
    <comment_count>2</comment_count>
      <attachid>144088</attachid>
    <who name="Ami Fischman">fischman</who>
    <bug_when>2012-05-25 09:58:53 -0700</bug_when>
    <thetext>Created attachment 144088
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634016</commentid>
    <comment_count>3</comment_count>
      <attachid>144088</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-05-25 10:12:18 -0700</bug_when>
    <thetext>Comment on attachment 144088
Patch

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

Overall this looks fine, but I am extremely hesitant to r+ it without a test, or a compelling explanation of why one isn&apos;t necessary.

&gt; Source/WebCore/ChangeLog:8
&gt; +        No new tests - the buffering window is significantly bigger than any of our test data files.

I would *really* like to see a test for this. Can you try using a long audio-only file (long for our tests, maybe 60 seconds) with http/tests/media/video-throttled-load.cgi?

&gt; Source/WebCore/rendering/RenderMediaControlsChromium.cpp:147
&gt; +    if (isnan(duration) || isinf(duration) || isnan(currentTime))
&gt; +        return true;
&gt; +
&gt; +    for (unsigned i = 0; i &lt; bufferedTimeRanges-&gt;length(); ++i) {
&gt; +        float start = bufferedTimeRanges-&gt;start(i, ASSERT_NO_EXCEPTION);
&gt; +        float end = bufferedTimeRanges-&gt;end(i, ASSERT_NO_EXCEPTION);
&gt; +        if (isnan(start) || isnan(end) || start &gt; currentTime || end &lt; currentTime)
&gt; +            continue;
&gt; +        float startFraction = start / duration;
&gt; +        float endFraction = end / duration;

What if duration is 0?

&gt; Source/WebCore/rendering/RenderMediaControlsChromium.cpp:153
&gt; +        // Don&apos;t bother drawing an empty area.
&gt; +        if (!bufferedRect.isEmpty()) {

You might change this to an early return.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634030</commentid>
    <comment_count>4</comment_count>
      <attachid>144094</attachid>
    <who name="Ami Fischman">fischman</who>
    <bug_when>2012-05-25 10:21:39 -0700</bug_when>
    <thetext>Created attachment 144094
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634034</commentid>
    <comment_count>5</comment_count>
      <attachid>144088</attachid>
    <who name="Ami Fischman">fischman</who>
    <bug_when>2012-05-25 10:23:21 -0700</bug_when>
    <thetext>Comment on attachment 144088
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:8
&gt;&gt; +        No new tests - the buffering window is significantly bigger than any of our test data files.
&gt; 
&gt; I would *really* like to see a test for this. Can you try using a long audio-only file (long for our tests, maybe 60 seconds) with http/tests/media/video-throttled-load.cgi?

The window is a max of time &amp; space, and the space is 20MB.
I think the only way to actually test this is with a CGI that *generates* data (so the total bytes can exceed the buffering window) but also knows how to generate a container that promises a long duration.  Maybe once bug 84365 lands we can use that.

&gt;&gt; Source/WebCore/rendering/RenderMediaControlsChromium.cpp:147
&gt;&gt; +        float endFraction = end / duration;
&gt; 
&gt; What if duration is 0?

Done (at l.138).

&gt;&gt; Source/WebCore/rendering/RenderMediaControlsChromium.cpp:153
&gt;&gt; +        if (!bufferedRect.isEmpty()) {
&gt; 
&gt; You might change this to an early return.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634205</commentid>
    <comment_count>6</comment_count>
      <attachid>144129</attachid>
    <who name="Ami Fischman">fischman</who>
    <bug_when>2012-05-25 12:59:18 -0700</bug_when>
    <thetext>Created attachment 144129
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634207</commentid>
    <comment_count>7</comment_count>
    <who name="Ami Fischman">fischman</who>
    <bug_when>2012-05-25 13:00:25 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 144088 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=144088&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/ChangeLog:8
&gt; &gt;&gt; +        No new tests - the buffering window is significantly bigger than any of our test data files.
&gt; &gt; 
&gt; &gt; I would *really* like to see a test for this. Can you try using a long audio-only file (long for our tests, maybe 60 seconds) with http/tests/media/video-throttled-load.cgi?
&gt; 
&gt; The window is a max of time &amp; space, and the space is 20MB.

I was forgetting about the effect of throttling.  
Added layouttest for this now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634319</commentid>
    <comment_count>8</comment_count>
      <attachid>144129</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-05-25 15:04:15 -0700</bug_when>
    <thetext>Comment on attachment 144129
Patch

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

Nicely done!

&gt; Source/WebCore/ChangeLog:7
&gt; +        [chromium] Default media controls should render only the currentTime-containing buffered range
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=85925
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +

Don&apos;t forget to mention your spiffy new test!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634345</commentid>
    <comment_count>9</comment_count>
    <who name="Ami Fischman">fischman</who>
    <bug_when>2012-05-25 15:31:05 -0700</bug_when>
    <thetext>Committed r118577: &lt;http://trac.webkit.org/changeset/118577&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634912</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-05-27 23:08:53 -0700</bug_when>
    <thetext>The new test is failing on both GTK and EFL ports (Bug 87575).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635281</commentid>
    <comment_count>11</comment_count>
    <who name="Ami Fischman">fischman</who>
    <bug_when>2012-05-28 09:19:21 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; The new test is failing on both GTK and EFL ports (Bug 87575).

Ok, will follow up there.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144088</attachid>
            <date>2012-05-25 09:58:53 -0700</date>
            <delta_ts>2012-05-25 10:23:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85925-20120525095852.patch</filename>
            <type>text/plain</type>
            <size>5236</size>
            <attacher name="Ami Fischman">fischman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4NDA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzUzZGI1OGY5NzRiOGY5
N2FmZDg2YzU5MjAzMjZiY2Y2Y2U2MmFiYS4uYzMxOTRlZmViMTU4N2EzZThhZmI0ZTAzYTk0ZGY0
NGU0NDNlZjhhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTA1LTI1ICBBbWkg
RmlzY2htYW4gIDxmaXNjaG1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBT
dXBwb3J0IG11bHRpcGxlIG1lZGlhIGJ1ZmZlcmVkIHRpbWUgcmFuZ2VzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTkyNQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAtIHRoZSBidWZm
ZXJpbmcgd2luZG93IGlzIHNpZ25pZmljYW50bHkgYmlnZ2VyIHRoYW4gYW55IG9mIG91ciB0ZXN0
IGRhdGEgZmlsZXMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9sc0No
cm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhaW50TWVkaWFTbGlkZXIpOgorCiAyMDEy
LTA1LTI0ICBHcmVnIFNwZW5jZXIgIDxnc3BlbmNlckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
TUhUTUwgZmlsZXMgc2hvdWxkIGJlIGxvYWRhYmxlIGZyb20gYWxsIHNjaGVtZXMgY29uc2lkZXJl
ZCBsb2NhbCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRp
YUNvbnRyb2xzQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1l
ZGlhQ29udHJvbHNDaHJvbWl1bS5jcHAKaW5kZXggYzI4MDQ5YzJiOGNiZmQxOTY5MjAwYzZkNTM3
ZTY2YWJkNTY2Njc3Mi4uN2I5MDYwMTQ1ZWI3OWQ1NGI5MGRiMjUyZmQ4NjM5NDcwYTA4MjFiMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbHND
aHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29u
dHJvbHNDaHJvbWl1bS5jcHAKQEAgLTEyNyw0NiArMTI3LDQ2IEBAIHN0YXRpYyBib29sIHBhaW50
TWVkaWFTbGlkZXIoUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjCiAgICAgY29udGV4dC0+ZHJhd1JlY3QocmVjdCk7CiAgICAgY29udGV4dC0+cmVzdG9y
ZSgpOwogCi0gICAgLy8gRHJhdyB0aGUgYnVmZmVyZWQgcmFuZ2VzLgotICAgIC8vIEZJWE1FOiBE
cmF3IG11bHRpcGxlIHJhbmdlcyBpZiB0aGVyZSBhcmUgbXVsdGlwbGUgYnVmZmVyZWQgcmFuZ2Vz
LiBodHRwOi8vd2Via2l0Lm9yZy9iLzg1OTI1CisgICAgLy8gRHJhdyB0aGUgYnVmZmVyZWQgcmFu
Z2UuIFNpbmNlIHRoZSBlbGVtZW50IG1heSBoYXZlIG11bHRpcGxlIGJ1ZmZlcmVkIHJhbmdlcyBh
bmQgaXQnZCBiZQorICAgIC8vIGRpc3RyYWN0aW5nLydidXN5JyB0byBzaG93IGFsbCBvZiB0aGVt
LCBzaG93IG9ubHkgdGhlIGJ1ZmZlcmVkIHJhbmdlIGNvbnRhaW5pbmcgdGhlIGN1cnJlbnQgcGxh
eSBoZWFkLgogICAgIEludFJlY3QgYnVmZmVyZWRSZWN0ID0gcmVjdDsKICAgICBidWZmZXJlZFJl
Y3QuaW5mbGF0ZSgtc3R5bGUtPmJvcmRlckxlZnRXaWR0aCgpKTsKIAotICAgIGRvdWJsZSBidWZm
ZXJlZFdpZHRoID0gMC4wOwogICAgIFJlZlB0cjxUaW1lUmFuZ2VzPiBidWZmZXJlZFRpbWVSYW5n
ZXMgPSBtZWRpYUVsZW1lbnQtPmJ1ZmZlcmVkKCk7Ci0gICAgaWYgKGJ1ZmZlcmVkVGltZVJhbmdl
cy0+bGVuZ3RoKCkgPiAwKSB7Ci0gICAgICAgIC8vIEFjY291bnQgZm9yIHRoZSB3aWR0aCBvZiB0
aGUgc2xpZGVyIHRodW1iLgotICAgICAgICBJbWFnZSogbWVkaWFTbGlkZXJUaHVtYiA9IGdldE1l
ZGlhU2xpZGVyVGh1bWIoKTsKLSAgICAgICAgZG91YmxlIHRodW1iV2lkdGggPSBtZWRpYVNsaWRl
clRodW1iLT53aWR0aCgpIC8gMi4wICsgMS4wOwotICAgICAgICBkb3VibGUgcmVjdFdpZHRoID0g
YnVmZmVyZWRSZWN0LndpZHRoKCkgLSB0aHVtYldpZHRoOwotICAgICAgICBpZiAocmVjdFdpZHRo
IDwgMC4wKQotICAgICAgICAgICAgcmVjdFdpZHRoID0gMC4wOwotICAgICAgICAvLyBQcmVzZXJ2
ZSBvbGQgYmVoYXZpb3IgcGVuZGluZyByZXNvbHV0aW9uIG9mIFVJIGRlc2lnbiBvZiBtdWx0aXBs
ZSByYW5nZXMgKHNlZSBGSVhNRSBhYm92ZSkuCi0gICAgICAgIC8vIGh0dHA6Ly93ZWJraXQub3Jn
L2IvODU5MjYKLSAgICAgICAgZG91YmxlIGZha2VQZXJjZW50TG9hZGVkID0gMDsKLSAgICAgICAg
ZmxvYXQgZHVyYXRpb24gPSBtZWRpYUVsZW1lbnQtPmR1cmF0aW9uKCk7Ci0gICAgICAgIGlmIChk
dXJhdGlvbiAmJiAhaXNpbmYoZHVyYXRpb24pKQotICAgICAgICAgICAgZmFrZVBlcmNlbnRMb2Fk
ZWQgPSBidWZmZXJlZFRpbWVSYW5nZXMtPmVuZChidWZmZXJlZFRpbWVSYW5nZXMtPmxlbmd0aCgp
IC0gMSwgQVNTRVJUX05PX0VYQ0VQVElPTikgLyBkdXJhdGlvbjsKLSAgICAgICAgYnVmZmVyZWRX
aWR0aCA9IHJlY3RXaWR0aCAqIGZha2VQZXJjZW50TG9hZGVkICsgdGh1bWJXaWR0aDsKLSAgICB9
Ci0gICAgYnVmZmVyZWRSZWN0LnNldFdpZHRoKGJ1ZmZlcmVkV2lkdGgpOwotCi0gICAgLy8gRG9u
J3QgYm90aGVyIGRyYXdpbmcgYW4gZW1wdHkgYXJlYS4KLSAgICBpZiAoIWJ1ZmZlcmVkUmVjdC5p
c0VtcHR5KCkpIHsKLSAgICAgICAgSW50UG9pbnQgc2xpZGVyVG9wTGVmdCA9IGJ1ZmZlcmVkUmVj
dC5sb2NhdGlvbigpOwotICAgICAgICBJbnRQb2ludCBzbGlkZXJUb3BSaWdodCA9IHNsaWRlclRv
cExlZnQ7Ci0gICAgICAgIHNsaWRlclRvcFJpZ2h0Lm1vdmUoMCwgYnVmZmVyZWRSZWN0LmhlaWdo
dCgpKTsKLQotICAgICAgICBSZWZQdHI8R3JhZGllbnQ+IGdyYWRpZW50ID0gR3JhZGllbnQ6OmNy
ZWF0ZShzbGlkZXJUb3BMZWZ0LCBzbGlkZXJUb3BSaWdodCk7Ci0gICAgICAgIENvbG9yIHN0YXJ0
Q29sb3IgPSBvYmplY3QtPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0
eUNvbG9yKTsKLSAgICAgICAgZ3JhZGllbnQtPmFkZENvbG9yU3RvcCgwLjAsIHN0YXJ0Q29sb3Ip
OwotICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JTdG9wKDEuMCwgQ29sb3Ioc3RhcnRDb2xvci5y
ZWQoKSAvIDIsIHN0YXJ0Q29sb3IuZ3JlZW4oKSAvIDIsIHN0YXJ0Q29sb3IuYmx1ZSgpIC8gMiwg
c3RhcnRDb2xvci5hbHBoYSgpKSk7Ci0KLSAgICAgICAgY29udGV4dC0+c2F2ZSgpOwotICAgICAg
ICBjb250ZXh0LT5zZXRTdHJva2VTdHlsZShOb1N0cm9rZSk7Ci0gICAgICAgIGNvbnRleHQtPnNl
dEZpbGxHcmFkaWVudChncmFkaWVudCk7Ci0gICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KGJ1ZmZl
cmVkUmVjdCk7Ci0gICAgICAgIGNvbnRleHQtPnJlc3RvcmUoKTsKKyAgICBmbG9hdCBkdXJhdGlv
biA9IG1lZGlhRWxlbWVudC0+ZHVyYXRpb24oKTsKKyAgICBmbG9hdCBjdXJyZW50VGltZSA9IG1l
ZGlhRWxlbWVudC0+Y3VycmVudFRpbWUoKTsKKyAgICBpZiAoaXNuYW4oZHVyYXRpb24pIHx8IGlz
aW5mKGR1cmF0aW9uKSB8fCBpc25hbihjdXJyZW50VGltZSkpCisgICAgICAgIHJldHVybiB0cnVl
OworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJ1ZmZlcmVkVGltZVJhbmdlcy0+bGVu
Z3RoKCk7ICsraSkgeworICAgICAgICBmbG9hdCBzdGFydCA9IGJ1ZmZlcmVkVGltZVJhbmdlcy0+
c3RhcnQoaSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CisgICAgICAgIGZsb2F0IGVuZCA9IGJ1ZmZl
cmVkVGltZVJhbmdlcy0+ZW5kKGksIEFTU0VSVF9OT19FWENFUFRJT04pOworICAgICAgICBpZiAo
aXNuYW4oc3RhcnQpIHx8IGlzbmFuKGVuZCkgfHwgc3RhcnQgPiBjdXJyZW50VGltZSB8fCBlbmQg
PCBjdXJyZW50VGltZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBmbG9hdCBzdGFy
dEZyYWN0aW9uID0gc3RhcnQgLyBkdXJhdGlvbjsKKyAgICAgICAgZmxvYXQgZW5kRnJhY3Rpb24g
PSBlbmQgLyBkdXJhdGlvbjsKKyAgICAgICAgZmxvYXQgd2lkdGhGcmFjdGlvbiA9IGVuZEZyYWN0
aW9uIC0gc3RhcnRGcmFjdGlvbjsKKyAgICAgICAgYnVmZmVyZWRSZWN0Lm1vdmUoc3RhcnRGcmFj
dGlvbiAqIGJ1ZmZlcmVkUmVjdC53aWR0aCgpLCAwKTsKKyAgICAgICAgYnVmZmVyZWRSZWN0LnNl
dFdpZHRoKHdpZHRoRnJhY3Rpb24gKiBidWZmZXJlZFJlY3Qud2lkdGgoKSk7CisKKyAgICAgICAg
Ly8gRG9uJ3QgYm90aGVyIGRyYXdpbmcgYW4gZW1wdHkgYXJlYS4KKyAgICAgICAgaWYgKCFidWZm
ZXJlZFJlY3QuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBJbnRQb2ludCBzbGlkZXJUb3BMZWZ0
ID0gYnVmZmVyZWRSZWN0LmxvY2F0aW9uKCk7CisgICAgICAgICAgICBJbnRQb2ludCBzbGlkZXJC
b3R0b21MZWZ0ID0gc2xpZGVyVG9wTGVmdDsKKyAgICAgICAgICAgIHNsaWRlckJvdHRvbUxlZnQu
bW92ZSgwLCBidWZmZXJlZFJlY3QuaGVpZ2h0KCkpOworCisgICAgICAgICAgICBSZWZQdHI8R3Jh
ZGllbnQ+IGdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShzbGlkZXJUb3BMZWZ0LCBzbGlkZXJC
b3R0b21MZWZ0KTsKKyAgICAgICAgICAgIENvbG9yIHN0YXJ0Q29sb3IgPSBvYmplY3QtPnN0eWxl
KCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKTsKKyAgICAgICAgICAg
IGdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC4wLCBzdGFydENvbG9yKTsKKyAgICAgICAgICAgIGdy
YWRpZW50LT5hZGRDb2xvclN0b3AoMS4wLCBDb2xvcihzdGFydENvbG9yLnJlZCgpIC8gMiwgc3Rh
cnRDb2xvci5ncmVlbigpIC8gMiwgc3RhcnRDb2xvci5ibHVlKCkgLyAyLCBzdGFydENvbG9yLmFs
cGhhKCkpKTsKKworICAgICAgICAgICAgY29udGV4dC0+c2F2ZSgpOworICAgICAgICAgICAgY29u
dGV4dC0+c2V0U3Ryb2tlU3R5bGUoTm9TdHJva2UpOworICAgICAgICAgICAgY29udGV4dC0+c2V0
RmlsbEdyYWRpZW50KGdyYWRpZW50KTsKKyAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KGJ1
ZmZlcmVkUmVjdCk7CisgICAgICAgICAgICBjb250ZXh0LT5yZXN0b3JlKCk7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144094</attachid>
            <date>2012-05-25 10:21:39 -0700</date>
            <delta_ts>2012-05-25 12:59:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85925-20120525102138.patch</filename>
            <type>text/plain</type>
            <size>4723</size>
            <attacher name="Ami Fischman">fischman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4NDA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzUzZGI1OGY5NzRiOGY5
N2FmZDg2YzU5MjAzMjZiY2Y2Y2U2MmFiYS4uYzMxOTRlZmViMTU4N2EzZThhZmI0ZTAzYTk0ZGY0
NGU0NDNlZjhhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTA1LTI1ICBBbWkg
RmlzY2htYW4gIDxmaXNjaG1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBT
dXBwb3J0IG11bHRpcGxlIG1lZGlhIGJ1ZmZlcmVkIHRpbWUgcmFuZ2VzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTkyNQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAtIHRoZSBidWZm
ZXJpbmcgd2luZG93IGlzIHNpZ25pZmljYW50bHkgYmlnZ2VyIHRoYW4gYW55IG9mIG91ciB0ZXN0
IGRhdGEgZmlsZXMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9sc0No
cm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhaW50TWVkaWFTbGlkZXIpOgorCiAyMDEy
LTA1LTI0ICBHcmVnIFNwZW5jZXIgIDxnc3BlbmNlckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
TUhUTUwgZmlsZXMgc2hvdWxkIGJlIGxvYWRhYmxlIGZyb20gYWxsIHNjaGVtZXMgY29uc2lkZXJl
ZCBsb2NhbCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRp
YUNvbnRyb2xzQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1l
ZGlhQ29udHJvbHNDaHJvbWl1bS5jcHAKaW5kZXggYzI4MDQ5YzJiOGNiZmQxOTY5MjAwYzZkNTM3
ZTY2YWJkNTY2Njc3Mi4uNzJlMTJjODgxYmM3M2ZkMDVlOTY1YTk4YjBkYjliZjZiMDhlZThmZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbHND
aHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29u
dHJvbHNDaHJvbWl1bS5jcHAKQEAgLTEyNywzNyArMTI3LDM3IEBAIHN0YXRpYyBib29sIHBhaW50
TWVkaWFTbGlkZXIoUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjCiAgICAgY29udGV4dC0+ZHJhd1JlY3QocmVjdCk7CiAgICAgY29udGV4dC0+cmVzdG9y
ZSgpOwogCi0gICAgLy8gRHJhdyB0aGUgYnVmZmVyZWQgcmFuZ2VzLgotICAgIC8vIEZJWE1FOiBE
cmF3IG11bHRpcGxlIHJhbmdlcyBpZiB0aGVyZSBhcmUgbXVsdGlwbGUgYnVmZmVyZWQgcmFuZ2Vz
LiBodHRwOi8vd2Via2l0Lm9yZy9iLzg1OTI1CisgICAgLy8gRHJhdyB0aGUgYnVmZmVyZWQgcmFu
Z2UuIFNpbmNlIHRoZSBlbGVtZW50IG1heSBoYXZlIG11bHRpcGxlIGJ1ZmZlcmVkIHJhbmdlcyBh
bmQgaXQnZCBiZQorICAgIC8vIGRpc3RyYWN0aW5nLydidXN5JyB0byBzaG93IGFsbCBvZiB0aGVt
LCBzaG93IG9ubHkgdGhlIGJ1ZmZlcmVkIHJhbmdlIGNvbnRhaW5pbmcgdGhlIGN1cnJlbnQgcGxh
eSBoZWFkLgogICAgIEludFJlY3QgYnVmZmVyZWRSZWN0ID0gcmVjdDsKICAgICBidWZmZXJlZFJl
Y3QuaW5mbGF0ZSgtc3R5bGUtPmJvcmRlckxlZnRXaWR0aCgpKTsKIAotICAgIGRvdWJsZSBidWZm
ZXJlZFdpZHRoID0gMC4wOwogICAgIFJlZlB0cjxUaW1lUmFuZ2VzPiBidWZmZXJlZFRpbWVSYW5n
ZXMgPSBtZWRpYUVsZW1lbnQtPmJ1ZmZlcmVkKCk7Ci0gICAgaWYgKGJ1ZmZlcmVkVGltZVJhbmdl
cy0+bGVuZ3RoKCkgPiAwKSB7Ci0gICAgICAgIC8vIEFjY291bnQgZm9yIHRoZSB3aWR0aCBvZiB0
aGUgc2xpZGVyIHRodW1iLgotICAgICAgICBJbWFnZSogbWVkaWFTbGlkZXJUaHVtYiA9IGdldE1l
ZGlhU2xpZGVyVGh1bWIoKTsKLSAgICAgICAgZG91YmxlIHRodW1iV2lkdGggPSBtZWRpYVNsaWRl
clRodW1iLT53aWR0aCgpIC8gMi4wICsgMS4wOwotICAgICAgICBkb3VibGUgcmVjdFdpZHRoID0g
YnVmZmVyZWRSZWN0LndpZHRoKCkgLSB0aHVtYldpZHRoOwotICAgICAgICBpZiAocmVjdFdpZHRo
IDwgMC4wKQotICAgICAgICAgICAgcmVjdFdpZHRoID0gMC4wOwotICAgICAgICAvLyBQcmVzZXJ2
ZSBvbGQgYmVoYXZpb3IgcGVuZGluZyByZXNvbHV0aW9uIG9mIFVJIGRlc2lnbiBvZiBtdWx0aXBs
ZSByYW5nZXMgKHNlZSBGSVhNRSBhYm92ZSkuCi0gICAgICAgIC8vIGh0dHA6Ly93ZWJraXQub3Jn
L2IvODU5MjYKLSAgICAgICAgZG91YmxlIGZha2VQZXJjZW50TG9hZGVkID0gMDsKLSAgICAgICAg
ZmxvYXQgZHVyYXRpb24gPSBtZWRpYUVsZW1lbnQtPmR1cmF0aW9uKCk7Ci0gICAgICAgIGlmIChk
dXJhdGlvbiAmJiAhaXNpbmYoZHVyYXRpb24pKQotICAgICAgICAgICAgZmFrZVBlcmNlbnRMb2Fk
ZWQgPSBidWZmZXJlZFRpbWVSYW5nZXMtPmVuZChidWZmZXJlZFRpbWVSYW5nZXMtPmxlbmd0aCgp
IC0gMSwgQVNTRVJUX05PX0VYQ0VQVElPTikgLyBkdXJhdGlvbjsKLSAgICAgICAgYnVmZmVyZWRX
aWR0aCA9IHJlY3RXaWR0aCAqIGZha2VQZXJjZW50TG9hZGVkICsgdGh1bWJXaWR0aDsKLSAgICB9
Ci0gICAgYnVmZmVyZWRSZWN0LnNldFdpZHRoKGJ1ZmZlcmVkV2lkdGgpOworICAgIGZsb2F0IGR1
cmF0aW9uID0gbWVkaWFFbGVtZW50LT5kdXJhdGlvbigpOworICAgIGZsb2F0IGN1cnJlbnRUaW1l
ID0gbWVkaWFFbGVtZW50LT5jdXJyZW50VGltZSgpOworICAgIGlmIChpc25hbihkdXJhdGlvbikg
fHwgaXNpbmYoZHVyYXRpb24pIHx8ICFkdXJhdGlvbiB8fCBpc25hbihjdXJyZW50VGltZSkpCisg
ICAgICAgIHJldHVybiB0cnVlOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJ1ZmZl
cmVkVGltZVJhbmdlcy0+bGVuZ3RoKCk7ICsraSkgeworICAgICAgICBmbG9hdCBzdGFydCA9IGJ1
ZmZlcmVkVGltZVJhbmdlcy0+c3RhcnQoaSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CisgICAgICAg
IGZsb2F0IGVuZCA9IGJ1ZmZlcmVkVGltZVJhbmdlcy0+ZW5kKGksIEFTU0VSVF9OT19FWENFUFRJ
T04pOworICAgICAgICBpZiAoaXNuYW4oc3RhcnQpIHx8IGlzbmFuKGVuZCkgfHwgc3RhcnQgPiBj
dXJyZW50VGltZSB8fCBlbmQgPCBjdXJyZW50VGltZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICBmbG9hdCBzdGFydEZyYWN0aW9uID0gc3RhcnQgLyBkdXJhdGlvbjsKKyAgICAgICAg
ZmxvYXQgZW5kRnJhY3Rpb24gPSBlbmQgLyBkdXJhdGlvbjsKKyAgICAgICAgZmxvYXQgd2lkdGhG
cmFjdGlvbiA9IGVuZEZyYWN0aW9uIC0gc3RhcnRGcmFjdGlvbjsKKyAgICAgICAgYnVmZmVyZWRS
ZWN0Lm1vdmUoc3RhcnRGcmFjdGlvbiAqIGJ1ZmZlcmVkUmVjdC53aWR0aCgpLCAwKTsKKyAgICAg
ICAgYnVmZmVyZWRSZWN0LnNldFdpZHRoKHdpZHRoRnJhY3Rpb24gKiBidWZmZXJlZFJlY3Qud2lk
dGgoKSk7CisKKyAgICAgICAgLy8gRG9uJ3QgYm90aGVyIGRyYXdpbmcgYW4gZW1wdHkgYXJlYS4K
KyAgICAgICAgaWYgKGJ1ZmZlcmVkUmVjdC5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKIAotICAgIC8vIERvbid0IGJvdGhlciBkcmF3aW5nIGFuIGVtcHR5IGFyZWEuCi0gICAg
aWYgKCFidWZmZXJlZFJlY3QuaXNFbXB0eSgpKSB7CiAgICAgICAgIEludFBvaW50IHNsaWRlclRv
cExlZnQgPSBidWZmZXJlZFJlY3QubG9jYXRpb24oKTsKLSAgICAgICAgSW50UG9pbnQgc2xpZGVy
VG9wUmlnaHQgPSBzbGlkZXJUb3BMZWZ0OwotICAgICAgICBzbGlkZXJUb3BSaWdodC5tb3ZlKDAs
IGJ1ZmZlcmVkUmVjdC5oZWlnaHQoKSk7CisgICAgICAgIEludFBvaW50IHNsaWRlckJvdHRvbUxl
ZnQgPSBzbGlkZXJUb3BMZWZ0OworICAgICAgICBzbGlkZXJCb3R0b21MZWZ0Lm1vdmUoMCwgYnVm
ZmVyZWRSZWN0LmhlaWdodCgpKTsKIAotICAgICAgICBSZWZQdHI8R3JhZGllbnQ+IGdyYWRpZW50
ID0gR3JhZGllbnQ6OmNyZWF0ZShzbGlkZXJUb3BMZWZ0LCBzbGlkZXJUb3BSaWdodCk7CisgICAg
ICAgIFJlZlB0cjxHcmFkaWVudD4gZ3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKHNsaWRlclRv
cExlZnQsIHNsaWRlckJvdHRvbUxlZnQpOwogICAgICAgICBDb2xvciBzdGFydENvbG9yID0gb2Jq
ZWN0LT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvcik7CiAg
ICAgICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC4wLCBzdGFydENvbG9yKTsKICAgICAgICAg
Z3JhZGllbnQtPmFkZENvbG9yU3RvcCgxLjAsIENvbG9yKHN0YXJ0Q29sb3IucmVkKCkgLyAyLCBz
dGFydENvbG9yLmdyZWVuKCkgLyAyLCBzdGFydENvbG9yLmJsdWUoKSAvIDIsIHN0YXJ0Q29sb3Iu
YWxwaGEoKSkpOwpAQCAtMTY3LDYgKzE2Nyw3IEBAIHN0YXRpYyBib29sIHBhaW50TWVkaWFTbGlk
ZXIoUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjCiAg
ICAgICAgIGNvbnRleHQtPnNldEZpbGxHcmFkaWVudChncmFkaWVudCk7CiAgICAgICAgIGNvbnRl
eHQtPmZpbGxSZWN0KGJ1ZmZlcmVkUmVjdCk7CiAgICAgICAgIGNvbnRleHQtPnJlc3RvcmUoKTsK
KyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144129</attachid>
            <date>2012-05-25 12:59:18 -0700</date>
            <delta_ts>2012-05-25 15:04:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85925-20120525125917.patch</filename>
            <type>text/plain</type>
            <size>19745</size>
            <attacher name="Ami Fischman">fischman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4NDA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzUzZGI1OGY5NzRiOGY5
N2FmZDg2YzU5MjAzMjZiY2Y2Y2U2MmFiYS4uNWQ4ZjNjMWE3MGJjOWQwOGJkZTQ4NGRhOGI3NzBi
MTE5MTkyYjMzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEyLTA1LTI1ICBBbWkg
RmlzY2htYW4gIDxmaXNjaG1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBE
ZWZhdWx0IG1lZGlhIGNvbnRyb2xzIHNob3VsZCByZW5kZXIgb25seSB0aGUgY3VycmVudFRpbWUt
Y29udGFpbmluZyBidWZmZXJlZCByYW5nZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODU5MjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xzQ2hyb21pdW0u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRNZWRpYVNsaWRlcik6CisKIDIwMTItMDUtMjQg
IEdyZWcgU3BlbmNlciAgPGdzcGVuY2VyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBNSFRNTCBm
aWxlcyBzaG91bGQgYmUgbG9hZGFibGUgZnJvbSBhbGwgc2NoZW1lcyBjb25zaWRlcmVkIGxvY2Fs
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJv
bHNDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250
cm9sc0Nocm9taXVtLmNwcAppbmRleCBjMjgwNDljMmI4Y2JmZDE5NjkyMDBjNmQ1MzdlNjZhYmQ1
NjY2NzcyLi43MmUxMmM4ODFiYzczZmQwNWU5NjVhOThiMGRiOWJmNmIwOGVlOGZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9sc0Nocm9taXVt
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9sc0No
cm9taXVtLmNwcApAQCAtMTI3LDM3ICsxMjcsMzcgQEAgc3RhdGljIGJvb2wgcGFpbnRNZWRpYVNs
aWRlcihSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGMK
ICAgICBjb250ZXh0LT5kcmF3UmVjdChyZWN0KTsKICAgICBjb250ZXh0LT5yZXN0b3JlKCk7CiAK
LSAgICAvLyBEcmF3IHRoZSBidWZmZXJlZCByYW5nZXMuCi0gICAgLy8gRklYTUU6IERyYXcgbXVs
dGlwbGUgcmFuZ2VzIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSBidWZmZXJlZCByYW5nZXMuIGh0dHA6
Ly93ZWJraXQub3JnL2IvODU5MjUKKyAgICAvLyBEcmF3IHRoZSBidWZmZXJlZCByYW5nZS4gU2lu
Y2UgdGhlIGVsZW1lbnQgbWF5IGhhdmUgbXVsdGlwbGUgYnVmZmVyZWQgcmFuZ2VzIGFuZCBpdCdk
IGJlCisgICAgLy8gZGlzdHJhY3RpbmcvJ2J1c3knIHRvIHNob3cgYWxsIG9mIHRoZW0sIHNob3cg
b25seSB0aGUgYnVmZmVyZWQgcmFuZ2UgY29udGFpbmluZyB0aGUgY3VycmVudCBwbGF5IGhlYWQu
CiAgICAgSW50UmVjdCBidWZmZXJlZFJlY3QgPSByZWN0OwogICAgIGJ1ZmZlcmVkUmVjdC5pbmZs
YXRlKC1zdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCkpOwogCi0gICAgZG91YmxlIGJ1ZmZlcmVkV2lk
dGggPSAwLjA7CiAgICAgUmVmUHRyPFRpbWVSYW5nZXM+IGJ1ZmZlcmVkVGltZVJhbmdlcyA9IG1l
ZGlhRWxlbWVudC0+YnVmZmVyZWQoKTsKLSAgICBpZiAoYnVmZmVyZWRUaW1lUmFuZ2VzLT5sZW5n
dGgoKSA+IDApIHsKLSAgICAgICAgLy8gQWNjb3VudCBmb3IgdGhlIHdpZHRoIG9mIHRoZSBzbGlk
ZXIgdGh1bWIuCi0gICAgICAgIEltYWdlKiBtZWRpYVNsaWRlclRodW1iID0gZ2V0TWVkaWFTbGlk
ZXJUaHVtYigpOwotICAgICAgICBkb3VibGUgdGh1bWJXaWR0aCA9IG1lZGlhU2xpZGVyVGh1bWIt
PndpZHRoKCkgLyAyLjAgKyAxLjA7Ci0gICAgICAgIGRvdWJsZSByZWN0V2lkdGggPSBidWZmZXJl
ZFJlY3Qud2lkdGgoKSAtIHRodW1iV2lkdGg7Ci0gICAgICAgIGlmIChyZWN0V2lkdGggPCAwLjAp
Ci0gICAgICAgICAgICByZWN0V2lkdGggPSAwLjA7Ci0gICAgICAgIC8vIFByZXNlcnZlIG9sZCBi
ZWhhdmlvciBwZW5kaW5nIHJlc29sdXRpb24gb2YgVUkgZGVzaWduIG9mIG11bHRpcGxlIHJhbmdl
cyAoc2VlIEZJWE1FIGFib3ZlKS4KLSAgICAgICAgLy8gaHR0cDovL3dlYmtpdC5vcmcvYi84NTky
NgotICAgICAgICBkb3VibGUgZmFrZVBlcmNlbnRMb2FkZWQgPSAwOwotICAgICAgICBmbG9hdCBk
dXJhdGlvbiA9IG1lZGlhRWxlbWVudC0+ZHVyYXRpb24oKTsKLSAgICAgICAgaWYgKGR1cmF0aW9u
ICYmICFpc2luZihkdXJhdGlvbikpCi0gICAgICAgICAgICBmYWtlUGVyY2VudExvYWRlZCA9IGJ1
ZmZlcmVkVGltZVJhbmdlcy0+ZW5kKGJ1ZmZlcmVkVGltZVJhbmdlcy0+bGVuZ3RoKCkgLSAxLCBB
U1NFUlRfTk9fRVhDRVBUSU9OKSAvIGR1cmF0aW9uOwotICAgICAgICBidWZmZXJlZFdpZHRoID0g
cmVjdFdpZHRoICogZmFrZVBlcmNlbnRMb2FkZWQgKyB0aHVtYldpZHRoOwotICAgIH0KLSAgICBi
dWZmZXJlZFJlY3Quc2V0V2lkdGgoYnVmZmVyZWRXaWR0aCk7CisgICAgZmxvYXQgZHVyYXRpb24g
PSBtZWRpYUVsZW1lbnQtPmR1cmF0aW9uKCk7CisgICAgZmxvYXQgY3VycmVudFRpbWUgPSBtZWRp
YUVsZW1lbnQtPmN1cnJlbnRUaW1lKCk7CisgICAgaWYgKGlzbmFuKGR1cmF0aW9uKSB8fCBpc2lu
ZihkdXJhdGlvbikgfHwgIWR1cmF0aW9uIHx8IGlzbmFuKGN1cnJlbnRUaW1lKSkKKyAgICAgICAg
cmV0dXJuIHRydWU7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYnVmZmVyZWRUaW1l
UmFuZ2VzLT5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgIGZsb2F0IHN0YXJ0ID0gYnVmZmVyZWRU
aW1lUmFuZ2VzLT5zdGFydChpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICAgICAgZmxvYXQg
ZW5kID0gYnVmZmVyZWRUaW1lUmFuZ2VzLT5lbmQoaSwgQVNTRVJUX05PX0VYQ0VQVElPTik7Cisg
ICAgICAgIGlmIChpc25hbihzdGFydCkgfHwgaXNuYW4oZW5kKSB8fCBzdGFydCA+IGN1cnJlbnRU
aW1lIHx8IGVuZCA8IGN1cnJlbnRUaW1lKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
IGZsb2F0IHN0YXJ0RnJhY3Rpb24gPSBzdGFydCAvIGR1cmF0aW9uOworICAgICAgICBmbG9hdCBl
bmRGcmFjdGlvbiA9IGVuZCAvIGR1cmF0aW9uOworICAgICAgICBmbG9hdCB3aWR0aEZyYWN0aW9u
ID0gZW5kRnJhY3Rpb24gLSBzdGFydEZyYWN0aW9uOworICAgICAgICBidWZmZXJlZFJlY3QubW92
ZShzdGFydEZyYWN0aW9uICogYnVmZmVyZWRSZWN0LndpZHRoKCksIDApOworICAgICAgICBidWZm
ZXJlZFJlY3Quc2V0V2lkdGgod2lkdGhGcmFjdGlvbiAqIGJ1ZmZlcmVkUmVjdC53aWR0aCgpKTsK
KworICAgICAgICAvLyBEb24ndCBib3RoZXIgZHJhd2luZyBhbiBlbXB0eSBhcmVhLgorICAgICAg
ICBpZiAoYnVmZmVyZWRSZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwog
Ci0gICAgLy8gRG9uJ3QgYm90aGVyIGRyYXdpbmcgYW4gZW1wdHkgYXJlYS4KLSAgICBpZiAoIWJ1
ZmZlcmVkUmVjdC5pc0VtcHR5KCkpIHsKICAgICAgICAgSW50UG9pbnQgc2xpZGVyVG9wTGVmdCA9
IGJ1ZmZlcmVkUmVjdC5sb2NhdGlvbigpOwotICAgICAgICBJbnRQb2ludCBzbGlkZXJUb3BSaWdo
dCA9IHNsaWRlclRvcExlZnQ7Ci0gICAgICAgIHNsaWRlclRvcFJpZ2h0Lm1vdmUoMCwgYnVmZmVy
ZWRSZWN0LmhlaWdodCgpKTsKKyAgICAgICAgSW50UG9pbnQgc2xpZGVyQm90dG9tTGVmdCA9IHNs
aWRlclRvcExlZnQ7CisgICAgICAgIHNsaWRlckJvdHRvbUxlZnQubW92ZSgwLCBidWZmZXJlZFJl
Y3QuaGVpZ2h0KCkpOwogCi0gICAgICAgIFJlZlB0cjxHcmFkaWVudD4gZ3JhZGllbnQgPSBHcmFk
aWVudDo6Y3JlYXRlKHNsaWRlclRvcExlZnQsIHNsaWRlclRvcFJpZ2h0KTsKKyAgICAgICAgUmVm
UHRyPEdyYWRpZW50PiBncmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoc2xpZGVyVG9wTGVmdCwg
c2xpZGVyQm90dG9tTGVmdCk7CiAgICAgICAgIENvbG9yIHN0YXJ0Q29sb3IgPSBvYmplY3QtPnN0
eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKTsKICAgICAgICAg
Z3JhZGllbnQtPmFkZENvbG9yU3RvcCgwLjAsIHN0YXJ0Q29sb3IpOwogICAgICAgICBncmFkaWVu
dC0+YWRkQ29sb3JTdG9wKDEuMCwgQ29sb3Ioc3RhcnRDb2xvci5yZWQoKSAvIDIsIHN0YXJ0Q29s
b3IuZ3JlZW4oKSAvIDIsIHN0YXJ0Q29sb3IuYmx1ZSgpIC8gMiwgc3RhcnRDb2xvci5hbHBoYSgp
KSk7CkBAIC0xNjcsNiArMTY3LDcgQEAgc3RhdGljIGJvb2wgcGFpbnRNZWRpYVNsaWRlcihSZW5k
ZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGMKICAgICAgICAg
Y29udGV4dC0+c2V0RmlsbEdyYWRpZW50KGdyYWRpZW50KTsKICAgICAgICAgY29udGV4dC0+Zmls
bFJlY3QoYnVmZmVyZWRSZWN0KTsKICAgICAgICAgY29udGV4dC0+cmVzdG9yZSgpOworICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvbWVkaWEvdmlkZW8tYnVmZmVyZWQtcmFuZ2UtY29udGFpbnMt
Y3VycmVudFRpbWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZWRpYS92
aWRlby1idWZmZXJlZC1yYW5nZS1jb250YWlucy1jdXJyZW50VGltZS1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGYzODlkOGYxMzMzMWFmYTJmYzk1OTg3MjNkNDk5OWU2ZTE0NjlhOAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWVkaWEvdmlkZW8tYnVmZmVyZWQt
cmFuZ2UtY29udGFpbnMtY3VycmVudFRpbWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNyBAQAor
VGVzdCB0aGF0IHRoZSBwYWludGVkIGJ1ZmZlcmVkIHJhbmdlIGNvbnRhaW5zIGN1cnJlbnRUaW1l
LgorCitFVkVOVChsb2FkZWRtZXRhZGF0YSkKK0VWRU5UKHNlZWtlZCkKK0VWRU5UKGVuZGVkKQor
RU5EIE9GIFRFU1QKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZWRpYS92
aWRlby1idWZmZXJlZC1yYW5nZS1jb250YWlucy1jdXJyZW50VGltZS5odG1sIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9tZWRpYS92aWRlby1idWZmZXJlZC1yYW5nZS1jb250YWlucy1jdXJyZW50
VGltZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUwMzY1NTJkOGNiMzE1MDI5ZmM1NTZmMjY3OWY5NWUzMmEy
ZGNhNmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lZGlhL3Zp
ZGVvLWJ1ZmZlcmVkLXJhbmdlLWNvbnRhaW5zLWN1cnJlbnRUaW1lLmh0bWwKQEAgLTAsMCArMSwz
MSBAQAorPGh0bWw+CisgIDxoZWFkPgorICAgICAgPHNjcmlwdCBzcmM9Li4vLi4vbWVkaWEtcmVz
b3VyY2VzL21lZGlhLWZpbGUuanM+PC9zY3JpcHQ+CisgICAgICA8c2NyaXB0IHNyYz0uLi8uLi9t
ZWRpYS1yZXNvdXJjZXMvdmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KKyAgICAgIDxzY3JpcHQ+Cisg
ICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCh0cnVlKTsgLy8gVG8gZ2V0IHBpeGVscy4K
KworICAgICAgICAgIGZ1bmN0aW9uIHN0YXJ0KCkgeworICAgICAgICAgICAgICBmaW5kTWVkaWFF
bGVtZW50KCk7CisgIAorICAgICAgICAgICAgICB3YWl0Rm9yRXZlbnRBbmRFbmQoJ2VuZGVkJyk7
CisgICAgICAgICAgICAgIHdhaXRGb3JFdmVudCgnc2Vla2VkJywgZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICAgICAgICB2aWRlby5wbGF5KCk7CisgICAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgICB3YWl0Rm9yRXZlbnQoJ2xvYWRlZG1ldGFkYXRhJywgZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICAgICAgICB2aWRlby5jdXJyZW50VGltZSA9IHZpZGVvLmR1cmF0aW9uIC0gMC41OworICAg
ICAgICAgICAgICB9ICk7CisKKyAgICAgICAgICAgICAgdmFyIG1lZGlhRmlsZSA9IGZpbmRNZWRp
YUZpbGUoImF1ZGlvIiwgIi4uLy4uLy4uL21lZGlhL2NvbnRlbnQvdGVzdCIpOworICAgICAgICAg
ICAgICB2YXIgdHlwZSA9IG1pbWVUeXBlRm9yRXh0ZW5zaW9uKG1lZGlhRmlsZS5zcGxpdCgnLicp
LnBvcCgpKTsKKyAgICAgICAgICAgICAgdmlkZW8uc3JjID0gImh0dHA6Ly8xMjcuMC4wLjE6ODAw
MC9tZWRpYS92aWRlby10aHJvdHRsZWQtbG9hZC5jZ2k/bmFtZT0iICsgbWVkaWFGaWxlICsgIiZ0
aHJvdHRsZT01MCZucGg9MSZ0eXBlPSIgKyB0eXBlOworICAgICAgICAgICAgICB2aWRlby5sb2Fk
KCk7CisgICAgICAgICAgfQorICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5
IG9ubG9hZD0ic3RhcnQoKSI+CisgICAgICA8dmlkZW8gY29udHJvbHM+PC92aWRlbz4KKyAgICAg
IDxwPlRlc3QgdGhhdCB0aGUgcGFpbnRlZCBidWZmZXJlZCByYW5nZSBjb250YWlucyBjdXJyZW50
VGltZS48L3A+CisgICAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0tbGludXgvaHR0cC90ZXN0cy9tZWRpYS92aWRlby1idWZmZXJlZC1y
YW5nZS1jb250YWlucy1jdXJyZW50VGltZS1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS1saW51eC9odHRwL3Rlc3RzL21lZGlhL3ZpZGVvLWJ1ZmZlcmVkLXJhbmdl
LWNvbnRhaW5zLWN1cnJlbnRUaW1lLWV4cGVjdGVkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yN2FlMTRjMzg3
NTMyOWEzODljOGJmYzRjMTQxMjdjMjlmNTljMTJlCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAx
MzA5Mwp6Y21lSHVjVHwmaypYX2dMQz9nYE1nRSR+RWowTDVSQWlkNHRDP1pYZTRnbm1SNVE8V1RL
O2tIaGlXRWdhWUVWIWwKel5kUCtzaj96STFwJT5gfTB0a1VuTCUjRk8lek4qPTwtNjxOYj1TSW8r
JUA/bFcrXj1SbTI+dmxkIU9VfE85dDlKCnp5OUlZNjIqUlV0O1V7QVI7cnRkc3pPZGw+MHsoe29Z
a28ySzxDTzA/M3R4dztQN1lXZktNekV+UVFsRn0kPzElUAp6KGlQe1FvI2RQeTlUay13JllVXnpB
YX5sKTtkPntnMGBvYC0xbzsteGBSUFpLOF85RCtmbHY5VkRWaVRDXmpsfTUKenpnNV8wcW11VWcq
dllZLVNJMXRaPkZ3QTFgdDV+Iy08KjlZRDFVd2pBdSgpNmc0bnA7eStlYWUyZ0hvTjZGOyU8Cno+
bz5qVXdmRWUqYjxhcVlCZmNATz9QdU5tKSRRJDlpfHJ9NG8tJjZJailzViZzYChrRnM3emElNG1G
OUhRdkRkNgp6RysrNGdSQSpjVGc0XyY9eGNNYyptKztAY1MlejFiTy14U0N3WDU4OHQ0aVBkdjhh
ViM2MW15OTxMfGU+JioxK3UKejR3IW0lRHg7d1huMmw4aGpJSEdfRjNGZXxBam8kSSZeSyZoQ2Ij
e184RWtoPlYjSiM7LVZzKFRRYTMtbmAoV2l5CnpDdj1Pa0okWTgjMiVXSioobSQ1fCh7VCgoZiEp
ND4tYUMoTigydXBRJVdAVkQ0VXRtUChsell1JjcoYVpwMShibgp6bmNQfEtHaE96RXRlcnVqa3df
I0hhWmA5Knk3Y3t4Jm1YN1NrYCY+NCVGMXFoY3ohTjZIV3BYJDFKWVpaeEQ+cV4KenZPMSpiLWRv
VGpReWFXOExvSis5bnRYQ3UhRT48ZWB1SUJ3UE9eNkpzSjd2OD95UDNBaUJsbHlkRFIlQiFDZjsl
Cnp0MCpvdnZHezUrWkoxJThKbyR2Wnl9JXdXSXlZfCs3I0p2RWR0KUBsUHtZI0xuNEYyX3V3UWlA
bGQzT2pTRDlUUAp6dXMzQFA5YVF+aHpKOVR7Q3klKT0pYF8/KyE1aG1UbkFJRkBGIUA2S3RrYnp5
bER3TkVfcVFpeTIrRlZrKmE3e1cKemI2YUFfWVVQTUp6MkZWZyMxeF5zc2pscWwmTWg2VGFCTy1F
a0NpWiE1QUo+Oy1sRUFlZTxZYmYkPG90M3V2MlpSCnpAaENCUHNjQ01ZKU43PU02LUMlYD10eHg7
QjlsaFBHaUtrMThmVXZ3Tnp7cF5uRWN4OWppc2R9Nlk8ejtsSFk4MQp6SmpURFRIOTs7KChXezFX
ZlRLWDV6YnxaJW8xMkB4b1Q7ZX1QYmAjblQxPCRgbGlWQzNtXiNyJk9WSWB8dllSUkoKenY2PWlY
dk9EVz9yWTN2NmdUMitrNCp2TWR0fEs9LXskalY7LTs7YClGT0wqZm93QjlBeTYqb2RQUmlPS05u
dmcjCnpKQWJkSnFveitjKntTOTFVUy1GSU5NVW9ra2RecV90eDFYZUR6Yz48O3AhSSF5Ymw8NV5L
YjYqPSp9Tkh8NGw/awp6VVhGeXRCKDM+RER9Um4tZDB7I3hhNURER0ZUZG5JRDAlWXQqOX5UJE9Z
UEA3R0IoJVdAfFQ7LXlDcWppM2FqfHUKelY2I0BVTnU9YDtnNEVZVDNxQVJFd1JvMCsocjczdyY7
R1oyYHtZIyoyVG5YWGNrVWQ3OSR+Snk9WSZEPjhpVUJMCnozUm9Ee1B2WDg9WlRYdExJdFV4SF9O
cmJuQnk3YXcqQUVmbHNKRXg+T3Yjc3k3Jmw0UGxUQSQxXlgqZjcrTGM4Xgp6aTdkS3trT0JuS2x7
WCFEVylXWH5gRStVJCZoKSFZMUgwOyExRXF1Qnh+dWE7VU4hNGVASShkSWcqVnxjSEVVengKekdT
VzY+cDllO157cnojYHVgPmBLbkZjQV84JEdvZTg9dWxrTkFOZn04PCpDbk1yTE9JUXdjNSM5P31U
WWBIYDFsCnp2Un04UVprJU5LTzFKZ1U9fFJtRzYzeSg2K1U2eCttRHMjM1ZwTjNpK15oNystSilB
N2AyPkI5SmQ0OGJDe0c8cwp6KTg5MklFeCRqVFUkeFhNa0x9KT9GfFQhVlB4JlRTISEpOz1Pa09H
KmtIbjRNNXZjSD0zITJSPl4mRn5MbllDa1kKelJRUyFCPD1kKVhgJmY2dmE5NW96SGVRVz0rTW5L
Z1RzTGtIWX1JXkVgPj4+YD4yQHZLbV9HeyoyLWJyNChjQDclCno5cz95KD5yVysqTUpTc2NlX1Yt
UWlIeH1wcig1RlE9aVU2fFJPT2dGclkldzRgdD87S3VGKzBpblZ9TW8wZ2BGOQp6ZmhLRjJ1TzU7
IzNVPmE5IWNvdyRQSW1kWlMqPEJHa0VDYUE4Y0omUlJwQSRKcTBtZSZXT3twNT9rYVpnVGRFdmsK
emQ4KHd+S21XUkcpbUk5a2JOZV4oPU1kUGQxaTB4RGRTNmslK21HfSUoI1VyP0N3YTQkKzB1JWct
TVE5aHhnYVNGCnpIVCp4bDdZIXxOWUthQG43TCsjXyVlR185T2hmcC00SHFFNSg7fXFFcVErVFdP
PTg1dVNgZiMobUtZMmlsZkomaQp6PW1fSWUzN0ZzTncpVUVQQENgP0EoUmFJWUFPeDNaZGx1ZGFj
fVlyM04yPHlhem9MPUlJZk99P04jRihaN25kaVMKemtefWArYHY8JmdnfChFWG87b35ec3QjSWRK
fkwkamBMTXNLYSZXM1dXdVNMPWJ7e2ojWkJFTVN3Rk1sS1lpM0ZiCnpvV0dEKVJwSHNOeUBhaUNr
eEt0TEQrYE08eVh1fUpfVXdJOV9XU3xAQlI5cSlUITxrfCRkfjxDSnE7Z1l7ej5aZwp6M2t0Migr
ZCYoKkxDWllMSFFvQFZ4JVRsa3VnMlFQI3FrQ2dMN3lEQUV+V2JpNEFvQURldWw3OXooPXY4PTd9
M2AKelckPSVOaEkxXjdxXndLNjc3ITVlWCsxNHFiTTA1YWpCKXN6OzA0P1c3R2k8Rz5MSldjV0ZZ
aUFWYHtoTTtWPUwhCnoyVGRocDdrPDhBWVduaFdFUChCVj14V3VhU09Kb15tbys2TlVec0FuRzlL
Mn5IYHxrTVh3e3U+TjlhJnJvdkA5KQp6RiNJN31aUTltcmBlPkF6dFJwTW9Oe213O1crPDReQ0t7
VUxTJj9ORzdBcyslZGl+dXVCRWdAM0J4OzE1azI9Q0MKekJDO2djVzZtU1kpMmdeSHY0R0klelY4
VXdwMlkwYXg/bXBYIXBncDI5LUE0WFNaOzJYQTtmPEUwaFhRWS18cmZ3Cnp4eEwxbThfPk9ZNXJT
JHBIYjQwSXg9dT9XJCFQcjhVWEBSMmVEeUUmbE0qWE5pcCRvZ2wyOUR2KF8mZitpSG5RRgp6YW95
KEp0TW9CYWI+NTtUY3pxfmYxVCR5dGl9V2hleVpDZTlQOFBRfTdYKSR9OHdZbzdFJD1wU3k3MG55
KGtaWWwKemRucitWR0hlZF50PDJ0SDJ2diMpMmhFWHdOd0oxUjNoa2ZxOH1LTUtIOGFCbGpPUXtf
WmFYPFNRQ3tpO0Zpdyp+Cnp6Qis/IUswTDcjNEk+LTtgZWUzd2V4I3xraipkPnd2KTxjfSNyaH5U
LXdLa2ZzcCVzfmczUVpWNH09ND00ej93aAp6PlNhO0BySDNpPF5KWHooaElyT1dQeGd5eTZMRVE7
c2FBRTx7WWQ0SG0lciRxakpMeEJ7NTltSnprMm5sPiNgd2gKellnJHR6enswPERpQztBSWtIVG4p
ejU/eG9hSTM7enVkaE5gM19vYUg7ayh7cXdAdUV9OVVPWV8tfnJTM0R9P1NECnpuNlFBJnR7RyEq
Nlh3ZVJLNmVuQCVRVDxMVzZkQmdGSjhRT21zZ31GNk1Oc2VsKHBRd1F1JFRndXZkSzUpdnZYPAp6
aWsjYmE2Tms2LTwyZFghTWVQZjl5WXgoQzQ8ZWhxQmoqflczdVQ1NT82fj5QYCU3LSpUVW1+T3lw
ZEp4Qzx5V2MKenJSPilLaW1DcCQ2IXc0akExcVRpQj1TQT9XZkl7Q2prSll9MTB2MWhERiYpaS1J
dDBGNCkje1JkaUNtJW9VYDZeCnpkeH5ubmRAeCp7UXloVWNZcSMpeF9vfmk1IWBiO0tvMiQhbTZf
PTZDVGZWfHRUO3VOfEJxU3RzPEtVKVRVMUA7ZAp6S0pKfTY/QUdjOXpUMH4hO1BwQCV5cXRmSDd6
JjV6Y0FYekFobG9nbGxMSihqWXE4cko2OV9RNkxzJDNqU1U4MTUKeiNLcyRCVnRIKDxhalVqdipS
SjY0Y3JIPHkxd3dfI1A9I09KTyU0Z09vVThVaEUkJFpQSUptU1YxJjxsaG1INWIjCnpAR2V1d1Rz
TnQqTGZyTTxEYEJpVEY5Tm9ZPntMOD9sNm0qNjtKTmhubVNMRzlSVV5EMSRHeUNCN3pzQykqWXNY
dAp6bTVGVnlJYlJoUDtNOzMjazk2b34wSSNsb3ZDMy1UMDZkYXM9QzQqPno/fCFUKFMxdihRaD5l
SXBlY0pfOUg7ejEKejllKk1IRG1eZ0VsLWE+ZGpqZE1JLSZGdDctVylyMmNLKmVTN2V9PXQtM0xs
TUFZO3ZQdHp5cCUxRXFvQFApI1NkCnpKZjdDUCVPaUE5dEZmaH1eNVpSVGElcGJnYzQ7a1pFK2ZY
RXh1Yig5PnZYWUdIZV9TRHpQPXZGZiZYbXhUd2RqVAp6ZjcxdUlUIW5GM0NRKmFnPmt1IUUyXnpm
SzBDYUdFRykkeURoaCV3dkRqXzI/SEhjKU1ad3M3aSM4Nz51WWlueEAKendAX1dgZUE9JX4pdWxi
endtUFdUWVhzayZXOWNWNml0Pl8lQlJGQGN0bipjal9LZjQzOUEmTkV3emp0N3ZDVjQhCnpGX3c5
TCUjMH5DOVp8R2d7T3YlSiY2VCQ2WmJ4Mk9NSHpDOXdrZUxOMFV4dn5eOzhkRGBgcH56ZF5iNmJQ
Zkkqagp6NUpDaVE1bUYhc3ZkcEY1cjZZOSttSXkmSjUtPHxkUzNJZDk2UVEyXz58S1h7XiZ+WmpP
Y0V9PW47ZHpVWmgjQHAKemIqVX4/UUVDWm5TaEZrVFclYzRhcF4jMGMkNEVfeF5SOEwtRk9mM19Y
WGxUMCgtbmYyS1BBWXkjS3B6NkwjfWBSCnpfXlhaczk+MUxea0RZMndoQHNpX3RvNi1faEJuMkIy
P3oqaXU1P2BuR05kIzlFYlBkfWVDMnxmaUhSRCgmfEg3PAp6ITAjdVN0e1gyYzhWY3RWRngjQ0E1
T1lONytEOWteTSZ7cE9EKmczZT5LOzV7bjdXMFlaSGo4QyZ2ZChkYyRWS1YKejA4JW8zZzliaz5F
aUhYUzZDYSRiJUNCfGYpM1kkaGMoWGo0ej9yUGY/ZkhPTy1Bb0ZRPkx5P089M0ZVT3l8TFV5Cnpe
SGJWd0V2e05OWWF4SktwRSV5LW0qI2VhQ19gOXBZMDVpKFJPREo2JDRZNyUjOWxzb0Jmb2EtdHFo
UWYoKz0rKgp6OSp0RGAmZWFBbSRrSFhISUZLPnJre2I5RGlYVHVqOXlKKyNyQ2ZQSmlCRyl3WSFr
X1VQfCNhTmtnV08qUldOKDUKej4pfChZNTVtTElxWCRqfVhGKnYwcHZ7PT49LTZXYzM2KkEpYyZH
cGZPeCpwZTVSM1lQeFJue2RoM1p1fW9RZDg3CnpYUGszNm5NfTRVYSF6MSZjNk9lK3tQSGtpWWNW
MU1FM2NoaC0yZD9MPEh6KVV3IWtxeylwNmFYP3x7TTlYR1pPSgp6PWBoN1VEc0VTYHVlKF9+OTMp
e21PbUA8KFg2ciUpQHEkWEQqcFMtSVUqT2lCaWVhPnlTb2tDLT9qcSVsUS1Jd0YKenROTWMrRzFP
Un09eWl4e0dkZkBMWDBJeWZrVFI/Qm47ZWBGcUFgKmtQZnc9PD1+U018SE17MHVoOzFYejErYD1j
CnorV3J3VkpMZTVAQk45P0pDU25aVGdmbURhQGdrZGw+PCokNVEjNFN5UEBAWDUyYE1DQzdoSVVm
Z0R2VCkqYUQ4Nwp6ZFNtUTl1bUEkXnh4fEE3PGFsZ3VOIzRIWm1LSGdkUHJRLVdBWTN2T3kwb2dR
c192ez1sMn5BQ204ZXt8RHoyRkoKeit+bGNlLUZtYTZvZ2Rab3p6TXlSciV0VThFI0wjKnxGfj1O
PFdYekpSMng+SSNFbllJJFQoKVh5KjNedGNlQE1zCnpCPU1SUmNINnpqK1AyIU1ZWVI+dllmP3di
Q1EkSSYka2l1TS1vflJlSEh4OzlNeiY3aXM2YHpiSUtWMXVAcyYyRgp6UlhobGNuRENQI19fZmpZ
VHsoeFQmT3klS3kjK2VCdX1xXnglZyhVdVlPSlAoUHloVXp1MXhoNE53MSpfYE94VUMKemghNzAh
d0opc2AmKVJWNnpubz5fdGheYjs1S19Wd0l+O21aQDV8WTQ/en4+eVY+PiVpTzh9VVJSR0UzVCZY
fUh0CnpsPj8jIVJBPFd7ZnQhdn1YSWhZfXVEclBgKlJGSzVwe2ckZWc2dXkxX2o2eCRxQHBfKkBa
LW9Iektyfmstbz1RPAp6MG40MD5IUF8rLSZhTHlwSURyWC0tdiNwVWAwP1hWPCRAcTk5PjBUZz4/
P0FDNDRaP144ZHpEcXpQZWI/RWZZLUIKendJZUNHemhxVWY0cyhtPFVAOD90S19BQFp0Sm1DS2pO
K0A7NzcxQn49KmghV0dKb0FBO3RzKiFVNmtJR1BQT3VvCnoyVz5sNDZTQ1B+akxvbEBBcWpid2lN
ci1relN+QD03MTJVdiV9QyZNTn47YXpiNHpQMSN4YSora2dSbVFfMzNHdQp6PlNiZGNvaEdUJCFU
bmxGVGM2KSNeSGJwQXBtKStURzkwTlNReT5MX29sPkVuJVI1M214M3xgPE9XWUlHMD0+RE8KejYl
PjQqOzB1KV87ZnUkVVJ4WEFyUGh3KnlIS0pDYHt0P0dNQUk9RyZCMmQremVnb29aQ3koSGheb1E9
WmNrJT1RCnpaVVI/TUB+WWBlKk4pMHFZKiRANHRSQSFzVG1tSFlqVW00dHtiWiVucTNAI15vdUwj
ZmhEK3R9KHV8NV8hZ3pOeQp6PHdOdylTQUpXbSZpPistallwMUk4Zj9xMD1lam03YTNLLVZzc3Qp
RTViRFd2TmBQJilTPyZnTnVGYHc1UyNLSiQKemR9P31uI0lGYVYoe2dYJFE1QzxMV3FNSkVuVURl
e1JvJERwMWQ8a2gzRD5EMz1Gdng8ZUNpTmNLNitRay19JHZ3CnpjNVg+aDZZKU9Pdz5lbH0+KzJy
TF5scnxsKXlXdH4zYDUka3JWMD13PzY3eV4pO2FeWHtBbSNxJWBBSkdZSGx8Tgp6QSV1U1lHQSpY
c3pjV0p6MDk2JT8zQENBYTZPWGgzRWZwSkZiQ3EjcTVeaTxBeXUrY0l6eCVMUSEhSVFOO0dLSTgK
ek1YJmU1P0UkV3duYl9nY1RRQ2FpXmFSIWlDPWI7M1NHYFM0eik8WWcrJVZBSyN+QUIqXm1HSz53
JEtFXmgpTVlUCnozMzQ8UXlyQl5KYT5Bc1E7ZzlUWDdJdDB8O1ZDcSU0az5KNjdNNU9gRlNhR0hS
PjBMRDAkJnlsMSsjISghZmJoQQp6TTA1UXBDKDt8Z014Skp1Q3pMXndzQUMjeXljKGxMKFhEKWIh
JUx3cDExTz13VD1lVytJXyl7fnRwPG4wRn11P0UKekR2NWlUblYjRDE2QGIrV2ZGcjw4czFsMW5m
IXB4ZGxMJWRJUD4+VjMqWlRqPTdvNkUrNSRNTXk+TzAjbFd2TVk9CnpIWklIQndmRkdUR2UtYWB7
NSZkUVZ+KFRFNjhZfHBIcFQ2ITdORzItTWI4NCY1OWwofG98X1E4K1Yhb0d2d0stZQp6dmdmRHcm
eDh+YEE2b0R0QDR1eX5uMyRTTVZKZ20wTH1NP2l2ejk0TTRQIz90KiE9MWUwKCU+e1M9O2hSUmlG
PCUKejMle0gkO3hTbHV4fW9HZ1U7UyVXM1Y5azUrS0I3UTtASTBQNlk8ZFIhSlVFZms+UjN9QX11
OGEwUHBTYDNlbEN+Cnorbz1RaTJ3Nzx6aU1nNn4+KDtIaXlxJk13UmxVU0FhYSlUR24tSXJQLTBt
SWNLdnRUZWF3P0NSK3VGX3ZMIXV9LQp6SGIjU31jMnJDUytYbHNee1h5UkROalpYTnVEJWNiPlZT
YT9FaEV1cVdxdEBaVDdQR0tlWjRPTm1NWitjZWNjMG8KejJgI1JYd1JlZ3FecSMpWUckZ3szNmc+
SlRoVktOKXlHNXJFUGQ4an50QG1BdEVWKHZYZkIlNCgyQjM5Ql9Jey1JCnpFQilZfCp9d15RS2A3
NFYqUVVBI0xpSmBhNzstZHt0KDs0SCllST5jZTJoeXpSQ3hZbC1gSEhKIzV4dEFqYj1KdQp6PW1O
I2w7PnZ+WndfXjFQJH5QTGN1S3t+SkxuNiU2MVpBeHROQzY8cTtPb3d9ZnBob3A/I2BVJiYhNXde
KTNtdGEKelpNPlRSKTgjfW1eXis4U3tfV21RUGEhUkVabDBjVD9SK2E+WEpjZ2E7cHdlNm9WO3Er
dyU0YjdEJV9hI0tIdyZFCnpnWElqTWxKVHl8OFgtWWZ1M1R3fWxkQU5hXzN5ejFJUTM3ckNReUsj
SztpOTNsJFc0YlNYcnJmUGMlWWdHaWVrVAp6S3NzZD1sb287NzRnd1V9U1kwM3ppSkJoJHVOOC1I
cT1QOTJFPG8rLUZtNl41YWBURjREMWJNJmJYaShxRl9rYDgKel91KCNaV1QpbVE9WTxeK2BePEAm
K2ZVUGQwOHtzQUEyemJKTypQMXI1RXRMZyU/O010YUdpJm9oP3N0Jj9efUx6Cno2S3FiZyVsUnU7
TWdnI357dWNqPCVJSXdWOCRaKCg2cCp5STI2e2M7d3o+a1ckKnJ9O2dkYWlscylMZFBTXn5rcwp6
YjN7IV5kbTFxT0V9dHtfS3NHak5wdVA9S1JQPEJUKjMrWGo1O1h+VXNCMW5DPEVwaElOVihuWkUw
SipxbkxSbXsKejZoUHl8aEojNCZ4ZnghSXJoMCVqdGFIampAVSR4VURfMiFnUXNKSkQkSj15JV85
KVQ+enclQks9S3t8amkoSVNYCnppXmlEWnlfYEd1U1FJKHlsaHVIbDRPaW5fSGxEPUE4Nj9Pfkxi
ZFBzLVRwWTwwK3BsYndhZHNETzhYPCohRU14Vwp6JklXZWU+SjVoTHswR3ZVKEhtQGJ1fV5qU0Bm
V31xI0NaXzlHKjkoOHJLfDdMZD9VaCprRGg7Y1ZTWWRDIWYmR1MKelFBRUZqTDtxe24wTzB0anQ1
QTFRaSVhS1RtTlI0O3Jvdll6RXtzUGd1S2Q/aHNQfn1KSk9GfXVITWckNFdNdD5wCnpmRzZAKUc2
MCskTik3UG4pQFA/cW9vZjI5ZXZALT1xZFQ9S2trUlUwPGpscmh6elIhUXJAUV5KbVB1O1dJZnpU
Rwp6YSl4PkZVY3ZeMjdeJStlWkViKmNnVyohV3diVXxIOElZZm88R3hseEhMQ18lKkVFbmlCbFRe
SDBidyFSRSpRZWQKeiYwaCZ9TkNaYk9iUE5QKihrMSEmZDluP3ghaUVuOFI9RWBJaGxkdXkodF5f
fF8yZHlmPTUrYENhay09SERhRzJSCnpBPzM7dnQ5ViNWck9UaG8wbE5sdVhUdDVhZWlsU31GKjgt
U1ZodTltckt9SFhvc15jfEUxRkBQMSVNOVNBaCkmOAp6cVhgLVNeZGYoX2lfI1VKcDN9M0hsdVB0
OEROUVpIYWd2c2d0Q3F3PXVMMWNyZUVSKH1YQVpGVkUqN1ZYaFdeNjIKej4le0ZhekZgOEojYTlv
PiZaa3d6WGpqI2FJI0xae0tTRF4rSGVrcl9mUzdeYU1sayM7PlAkbEhxU1htMz1lZ2QoCnpxb0xu
bEFOdmoxZERVe0tFLSlSYCFRPmkrZWUjTVgxT0lebGwwMD1QMGokS2N5eXtPTFVjeWQwJlZUXkEl
TG17Vwp6NTduRmpqMypvV2BrPDZtKSNyTHt5TiU5eEwySypXbHYhYl4mO3N7OUdPVnJKPz5XY0t3
Vjh7eWVrKnB4Wmw/YUYKeiQyaEIqe2FCdHNnJDZwTEk0MUgoKipPe2I8cm5kYFI9SXt0aT1ZZnFn
UzAwUEJMY1JxOXZjWE1EV3AzbiQkbGBCCnpQZDZPKWRCZFo0WV8yNjxXfSZaV1N+VHBpRU1hQD1o
PGNGUGBhfSVQSHxYRV5NQy1UbXN4RjNAOWBEQHJoKG84Sgp6VShQaD4oQWFjJEs7IW84YE9XUnNU
NExhWTItMz9WeFkqZigkcHZmJGV9c3AmcDZlQlkxKlZtbT9BQEZ2P0o5ejkKejIwOF8tUUM+blg8
cWxHWmNhKyY2UHcjeDAlfiR7QSlhQVZMc1lHUjtEU0JyUmxMSVFsPUM4Yz9YcU1VY2hgbk5PCnpj
JUhwe0dxX09UUE90b1N6PnJTVVYhQk8zU3E3QWhHNTY7e0QlKUotP0t1IzdHNHJgfkQxdlA2ezJ4
QmFVbVgpcAp6R2gxKld6JDRJJmkmQzkwKF9eRVQ5dVgjanprd09adiNac3hFTCY9cDVSeF58RWZO
RDRQN35AKE4qQEU3QnVDJX4Kel4jfVppc3spKGkjUV5WbyFOXmQoeWJ+IXskZGE+JTk3Yzt8QFBe
Y3hFUnp8fjtSYV44N0tMTnwqbkZUd1kofEdCCnprcHtZKFQ/MmwpPUVqR3BnRUY9QEp0ZTNEWkJi
dHhsbWpfV0ZOYl5vVEZhdjkjYFVHKit3a2E/WkxMV0Z2X2dqbAp6PU1CX2Bob1gjSHtfWFUyVWMl
YSZNN3RyJTRgfTxMSWFjQjxTRztXeTRmVzIwJVZtKXRvfk4kYlBmaypZdWZSamoKei1yYns5UT0m
VyQxUHhDd1koVFhnWm9yWTZfVHoxK2Y3Z0thUUlvVFF3e1F6Y3d7fj1OY24tbzNmV2s3JXZEbHt0
CnpITH5YUG1ISlNQa2N+NUw9R210dEIoVDg3RDdLdCYpcFBaQ3hXJk52MlhJQF5KQmAlVVdaZHR0
X29IPUFmKnBXYgp6WWpSUnZ3SmQrfFZAX2JHc1E1Tz1fKSk+cWFMY25Re1EyRERKaEM0a2tkOFM+
UmUtQXwxOU5jZkdCUHA+RThvTW4Kenp3PFBuRW4jaTBGN3lfVCE/ekA8Ml9na2l1Mjxgem1OdyZl
Syp9fjlrOVFvSTAtNGVlYlhLcztnWD52Wm5tc1UwCno1T1VZeWk0TUU+QH5WQlZUYzBLcCpLZSMy
MSkkK2haam8tJEd4fT9fNloxSngoRWFXd0BtTGlgdDZVTHJrKEE5eQp6UmB2LTNyeFh8e0N8c3dn
P3xuYkxOMiNjcjREXjk1UldjOCFmR3J4U0c8RlpWS2ZXcCRCT0BjUW0lKVZDPjZ4XnkKejxsMzFi
a3lyTkkke3wtPjQoYzRGVGhqVmRCQyFAd1ZJckl1NlphdXF5Q1llLT09RXp+MiVnKSFjLXVjYmJ6
ZDZCCnpFcmZ0cW9UUE1wNDk+PmUqUzVnXlNCUlMkU09wTCkpUE5RIWZkQGJ+UEFFTnVCemR1WUdn
aCpkczlFZFd6MXwqQgp6IX15ZFFeXiF0Xk9hWXAzb00lS35hfnZGQUM4KmNGdz5peSN4SVErQ3wz
dUMxMFpnJHJHSjUzTlJITlNxclQlYikKelhlZy1QTz13PE5MI1Ejb0Y3YGhIdjxVaCZ2NjViVzxs
fmhFcHQ+X212KDRuZ2NPZ3V9fEFQdHk4SVVsVU55S2tKCnpBZ2EjMU58IWJLNWYqYyoyJCRlZTxt
UnpRKVdwbXo2LTtLPCMhQWJQK1YxeEpuaGlKTEMqOzlyWFQjeyowTSs/ewp6eWs4QHxVaD95enQ3
d057ZW5eIU9IQkshO2twMD17RVdsIWBUISMoViVWVGZEPDdNcGRYbHV1OTszM2VUJiFgUmEKenNE
bmc8dmRjX2czX0I5Xj0/JC1AbiVfKjk3aCFXaTJTdkZVJVQ0R1BEUUcpemplXk02ZldEdzdLc1d1
QStndmJrCnpyJj50JnJYQEhWRXcwSlEkKSpOYWl7Y2d5a0p1QjxVRnQ0b1FoLThuaS1PU34jc3to
bV8jTDIrSmVVVzFNNC07Ugp6ZjMmWHpGdXEyQlJZR0pCbEB0VHBgMnVKKFBRO3B2aDYzRlBzdF41
MnA4TFdWYHUtaCFePngyKyN7N0IhSS1XJT8KejlyTjl9MH1VZEM8ayRhSjhjZldgIUZkd1VMSypy
Pmp+Jm8zQklid09xazh7WXVmfnxkMCk+PlcrMFN6VlhWOUxoCnoyKFUwYCF2Izc4PSpxcWFwNTkm
TztuUnUtU3ZoJj03LWJzLXdvTVQyTWM+ZCVnT28lZmtwTlpXeEQ/PCM3O0ZyeQp6Vm1CJnFIMFVS
RVE9aDdQRkRjI3hRKSFCMCpXcFYmVHU9P3htblBNNU90cCNWdnJgPyE1ZzwhcSM5JiFoSGxWKHAK
emlIUytpcWE2clNhaSF8Mlp2WUFTMDlmTl5nWWRKfkJqRWJBTFlKQUd0P1BDVng8Xm4kPVRaRGht
RU04JFRHUCtqCnpGJGUyPmBMJitQSXlLQXAqdSsjTlVnPH4jbGJJTClgUyN7fnJJKD89N1lPfHZe
U09qWTFRezVNUVRsbXh1cDRuRAp6NH1DaCsxMythMDt+Z3E7TEooWVJoZztuak5IMkVvVHF6ZF4h
c1BrbEFvN0ZienI2WUYlJkFmZDx3SFNHUVV1NlQKeiFaem93eT9UUGNqeV9rRVV+MklwPFpFREFD
XitWVW9YLUtvMXAlbChKT18rWSpzc2VkVm9uVnAwaFheMlhwR292Cno4b0FWZ2U2Kl9ZYnpOSWxi
JVZnNTc7MntFMEtVQmlCVl89ciU0czQmZ1Roe3xXcnpIIWppaFg9JUpNdzhja2d+Mgp6MlNVO1g3
VEBPc3tpfkNxMXZlSlFDYX05MkI4MUclJTtLdUZ6RHFIUGtCYjhYT0BUc3lZeWx9enkpbCFXUjVr
RD8Keit6U24/MTdtYCs7UjZlUWJEeygyOFNoTFd1aTBPTyhGOFYwJkgmc3FATmpkMFNlMkxSb0FI
MSRmPjBEb0BpbEhNCno0X2NrQzJGVT8tRCpZV09sZjgkJnd9MU5wbmpCdWk8M2l3SGVXR0w8cnUp
bFZ8NiFYOHVJKCtMdz9tMTVfIXxTSwp6V19UaXQ8N1NCTTBwaFFxWmQkO0UrMWktUmNkOzQ8TGxZ
alRTMyZCNW1OQEZiQENZZSUqJWJmJF9RNWZYKTltfGEKelhDTFE1ZjI2e2ZNd1grQWhvV0hyKHIr
STgwYFA8ZHBydEVVI0VFUXt7SW1ZaVZTMW9NNzNDVmc0Qlh9MHk/Z2Z3CnomPD19bDE8WHhNJmI8
OGl4c0g9Sm5YdFd7NWNSS3lJdkI1RHcqcil8enp3alZtKCRrS2Z2T2p8bHokZE00UDQ0OQp6VlNO
OGtGVnNCPC1MNng0QHteNlJ2RztITHc0Y1BzWEhzYWVYZk8mdnt3UTc+WGw+QW1JZX4kV0lhTHJs
bXc/cykKenxHRUN3aEpPV2sxRTg2VG9DWThgMEUmYFQxM1c9KyNIMiMmVD9xczxjPD5reUNIU3Fp
KTwke2wjdCtJVjJLa21uCnpGTSh2MU0rcVNYbiVHWnI3OURCfno1Tj5HcDIpKz4tY2F9PG42Xj00
MFdnMFhuNmN9fWxEO1N4alBIa1lQKXhTdAp6M0c0QXojNkQ3QUZCfmNLQFg4Pn5uaX1TWkQlcztB
PjxlKl8rfTZnJWs2RGVOPDR3YTROPEUkZ3o1X0RfUXRQLW4KenhPPiEyY0ZrQVRpZms3UjF5JH0j
Pz04JjlrIS1sbWk3O0xDZ0IjVVIrfShvaWRNZFBiZFROLSgqdH5NKl9ofi1ACno8LX0wfHpKbUsq
R3J7ZiUwVzkkNTxtPzZ9Sk1oe3lDZkZVUWZ+JWAqV1VnIXJJTFd9WnVxUDZuYG13XiNeNUFRcgp6
Z2hIU3NDTHpjJSFQViVeVFZIWlJKZl5KUTA4OXNLREh2bzc1Sz5MMyV0Rk47P19lLXU0SCRJUFZQ
KjAhXjFjaGgKej5ZRT9kOTNxdVo2bTZsOS1mJE5eOGZmVzBtaF4lYWRndndTUVNAOzZgUnheVEFG
ZTdOP08xfUNkWnhsQHJqbFk/Cno7JT4/SHRnSzhhSDJVSFRBVUxQcHg/WVhHMzNKJnY8MjQrTlA5
V1Vuc3I+WGo5MGl8ZjRgQHYtZDUzfCRhNGYlUwp6eDlIKUo8cXdiKnVQbEdxZjFRbEclZU5DZWx8
ODlTKTUkKjA/YTQ1LUFgNTsjbCUxMklwVFF+JTw/R0pGMngoYj4KeiYmKHhTJkl1ez1wOURkXlUr
Q2VLdnNgfjdfblc7a05QIShgYn5MQUFCajJpNnl3ZHZkRlNmWTNWanZkfCUtT3QzCno+NHQ5O25D
T3JVPGI3TjRBZTFWd0dKQy1EMS02b0JRIWF+cDxKUil1MDVyTEtwU0xmQjt8U24lXz01KkNEeExf
awp6cUlTRGo2fXFiPnBsTCthWWdjbDtCRUZIRWRVRHlJazl3VD9gWStfMWIocz8oXjVaX2x0MUV0
d3h4QEVURlR1TV8Kejk/Zm8tYDBtUlQ1UjhEKkI3PD1JbTRVWCUkMDhAMGlkKW9eSytRbWFid1Jp
bXMqMGZ+MXVqYyFsP3lrTENRWVFtCnpFTH1sUWY0SnY5Zk9WbiZHJTVHSGc5VX19UGJ8KEx6PWZo
N2hBJk1QQ1gjQEtQdnlPUV8zQTEjY1l1SF4wUlZzaQp6cGAjfUxAUz4xfnxLMD0tdXAwMTdGfnMw
YEFFRlNIOV9UK20lNWlKRml5KGRRWHZoRkNhZD9STUNPekBrcHg+TVIKenxIUSQhQXdQRERPND9R
XyNhPWBpSiR3aSkwMX0zRkJBXm8yIXRARSRFKWYqIXtNd1dQbW5Na3B0IWMlUFY4K0pFCnpFRFNf
bHF2JEs1b3B+VDdLUjlucVU7fH1XLTF9Yz1mejJofkBRdEZVNGRDaDAjKGtpVnoocGJONCYkRW0h
cE17ZQp6YlBTMnglYjhHdDRac2N4K2JlOWZhMSVqX1RVaCFrJTIyUHNJWXdLfWhnc1BuSGVtMzhC
WjNZeEM4ayR7JGJ8WUoKekF0bHgzSVM0WjBFM3hGeUt5TVQ+UWh6SUtJMENMdXdfOGRuT3BwTllw
RX5qay1+fCtFTFI3KkBHeFhgeUYyP2ZACnpSYUdqZ0Z1QDJZRnByTHx6ejl8IyV5UlZmKkdeNEF7
dzhTPnchdiZRX0lNM080PzZzVmRkdFBrNSFRU0Zjcjc0Zgp6JjhrPDw2cyVSOFV0PmFodmRzKGMx
OEVjPyUhaX5VLXFvMH0xeH49b04oVnleTWE8eUV4QlVHNEpjcCtUZUw3ZSQKekZsMUIyTGZQdXZZ
bD5TNVAoflZ6SUBxKV4/e0V2dVBoN3I0V25PKnZARWUpaHR0R3xVXil+MnlkYTI0dUIwc1JxCnoz
JkAoP0w0R3NMMFdaNjk/QDUzaVZabSEoV2BrYl9HeXRkQF4jdEAtc0RNUHFqTHA+U2xAMjRyK195
YkpVcklEXgp6IUFKI0IjbWBNOHIzVEtkNShHfikyTTBwUlYoJktkbWJlYjR6TXRSUEJGdHw5bFhU
WW5vY2FkIzR5REdlQncmNnAKejVEcjJmOVNYeGtHbCFidjAoSyUjTFl8cDJeSG9+ZiQ0cEhZNE9v
ajBCKm9TPVZjUjdwNjlMcnhsUVNPe0BQZzt+CnpId1h0KmZsYWEhJCQlO1opPk43RXJnYGxLNiY5
VTEyUiVOIW54KXdNRV9jKjszdDBOdUk4dUcpe2opYzdGdmJNSgp6b1poK3l5ZyZROGozQjFLez5P
I2tZSFchSjRBLUUxclNae0dBRm1wKVV8PFojb1Z+emkpaDE+YCZ1dnFMeShqfEwKeishcTFJIURm
MX4oVSQwV3s9U241PmQ/aFhmK0tpWTRXZE8xYGRvUVEwIVZLZF5femxEK0E/P25UM20xNnpEMWBU
CnooMFVDdGkkX0Y1RXlYfl9sNikpX1d3Uzh3d3lYKkJSYnFOaXFwUjEhTmZPalQpZkZeezZnflF2
TEgwMmhNJVhabwp6PF4rXyFqUnhHdDJiZTFfPj10cXI+Tl9rNkVxPno8PHpWei03KX4/ZXJYeDZg
QHk7ak9qRG5Yc2JMaEskPXRpOT0KeklqO2VgQnxKUEZXaXx0emx+Uzg4VTItfFVLKVM/eHRQaTwp
cHE+WWU8clBfendiejtxQCFzZj0kTjwzNTZxPCZoCno4NDJTTnp1VXBlQnleVWhBeFo+VngtZnUq
RzllZnlwYkB1ZU03UHxgdVI1bHRkKCUtfUg5MSskVmgqN0dFcFNhPAp6XzJ1XntVcWI4ZnR7dW9M
KCtTUCs/M3xwT14+fDJeUDV1UjgxaTY9VW93dUE1eGdfJStlMS1xJUYjUEBMdU07WU4KdHBUXiYo
QHByb1hXbn1CYGchdW45QTtAZkE5IUhAQUg8SHRRO1F6ZktJX0NfMiVHMHZIXjxTbFo1OWp+QAoK
bGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgo=
</data>
<flag name="review"
          id="150870"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
          </attachment>
      

    </bug>

</bugzilla>