<?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>82057</bug_id>
          
          <creation_ts>2012-03-23 08:53:02 -0700</creation_ts>
          <short_desc>[chromium] Record painted pixel counts for measuring effectiveness of per-tile painting</short_desc>
          <delta_ts>2012-03-23 15:09: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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dana Jansens">danakj</reporter>
          <assigned_to name="Dana Jansens">danakj</assigned_to>
          <cc>backer</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>piman</cc>
    
    <cc>reveman</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>586367</commentid>
    <comment_count>0</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-23 08:53:02 -0700</bug_when>
    <thetext>[chromium] Record invalidated vs painted pixel counts for measuring effectiveness of per-tile painting</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586371</commentid>
    <comment_count>1</comment_count>
      <attachid>133494</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-23 08:58:33 -0700</bug_when>
    <thetext>Created attachment 133494
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586378</commentid>
    <comment_count>2</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-23 09:06:10 -0700</bug_when>
    <thetext>This goes out to all the peeps in Boston.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586400</commentid>
    <comment_count>3</comment_count>
      <attachid>133494</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-03-23 09:26:02 -0700</bug_when>
    <thetext>Comment on attachment 133494
Patch

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

Dana, thanks for taking care of this!

&gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp:482
&gt; +        occlusion-&gt;overdrawMetrics().didPaint(m_paintRect);

Rather than reporting the paint rectangle here, could we have the PixelsPainted metric reflect the pixels that were actually painted by the texture updater? So if I turn on per-tile painting the PixelsPainted metric would go down. For BitmapCanvasLayerTextureUpdater report the area painted in LayerTextureUpdate::prepareToUpdate and for BitmapSkPictureCanvasLayerTextureUpdater instead report the playback areas in LayerTextureUpdate::prepareRect.

What do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586406</commentid>
    <comment_count>4</comment_count>
      <attachid>133494</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-23 09:30:38 -0700</bug_when>
    <thetext>Comment on attachment 133494
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp:482
&gt;&gt; +        occlusion-&gt;overdrawMetrics().didPaint(m_paintRect);
&gt; 
&gt; Rather than reporting the paint rectangle here, could we have the PixelsPainted metric reflect the pixels that were actually painted by the texture updater? So if I turn on per-tile painting the PixelsPainted metric would go down. For BitmapCanvasLayerTextureUpdater report the area painted in LayerTextureUpdate::prepareToUpdate and for BitmapSkPictureCanvasLayerTextureUpdater instead report the playback areas in LayerTextureUpdate::prepareRect.
&gt; 
&gt; What do you think?

That is covered by adding the pixels &quot;drawn&quot; (uploaded) transparent + opaque.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586409</commentid>
    <comment_count>5</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-23 09:31:47 -0700</bug_when>
    <thetext>Unless the pixels painted by the updater, and uploaded, can differ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586426</commentid>
    <comment_count>6</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-03-23 09:38:10 -0700</bug_when>
    <thetext>Ah, I see. Yeah, it looks like this should do it! Could you add a unit test that uses explicit texture updater types to ensure that this works correctly?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586568</commentid>
    <comment_count>7</comment_count>
      <attachid>133529</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-23 11:59:27 -0700</bug_when>
    <thetext>Created attachment 133529
Patch

Added some comments to the overdraw metrics header. Especially to clarify that painted pixels != rasterized pixels, as we will be interested in tracking rasterized pixels in the future, in order to determine wins of different approaches to texture updating.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586583</commentid>
    <comment_count>8</comment_count>
      <attachid>133529</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-03-23 12:13:05 -0700</bug_when>
    <thetext>Comment on attachment 133529
Patch

LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586688</commentid>
    <comment_count>9</comment_count>
      <attachid>133529</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-03-23 13:43:53 -0700</bug_when>
    <thetext>Comment on attachment 133529
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp:471
&gt; +            if (occlusion)
&gt; +                occlusion-&gt;overdrawMetrics().didInvalidate(tile-&gt;m_dirtyRect);
&gt; +

I might just be bikeshedding here, but &quot;invalidate&quot; is kind of misleading.  It isn&apos;t &quot;pixels invalidated&quot; it&apos;s really &quot;pixels within the visible layer rect that are not on tiles that are entirely occluded&quot;.  If anything, this value seems kind of redundant with the information that you&apos;re getting out of &quot;total pixels drawn&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586691</commentid>
    <comment_count>10</comment_count>
      <attachid>133529</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-23 13:50:27 -0700</bug_when>
    <thetext>Comment on attachment 133529
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp:471
&gt;&gt; +
&gt; 
&gt; I might just be bikeshedding here, but &quot;invalidate&quot; is kind of misleading.  It isn&apos;t &quot;pixels invalidated&quot; it&apos;s really &quot;pixels within the visible layer rect that are not on tiles that are entirely occluded&quot;.  If anything, this value seems kind of redundant with the information that you&apos;re getting out of &quot;total pixels drawn&quot;?

Yeh, I agree. I wanted the pixels that we &quot;have to paint&quot; vs &quot;did paint&quot;, but it is the same as what we are uploading.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586707</commentid>
    <comment_count>11</comment_count>
      <attachid>133553</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-23 14:01:36 -0700</bug_when>
    <thetext>Created attachment 133553
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586711</commentid>
    <comment_count>12</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-23 14:04:13 -0700</bug_when>
    <thetext>Removed the invalidated pixel metric, just counting pixels painted by webkit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586727</commentid>
    <comment_count>13</comment_count>
      <attachid>133553</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-03-23 14:12:02 -0700</bug_when>
    <thetext>Comment on attachment 133553
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/cc/CCOverdrawMetrics.cpp:151
&gt; +    if (paintedCounterName) {
&gt; +        // This must be in a different scope than the TRACE_EVENT2 above.
&gt; +        TRACE_EVENT1(&quot;webkit&quot;, &quot;CCOverdrawPaintMetrics&quot;, paintedCounterName, m_pixelsPainted);
&gt; +    }

Why? Can you not TRACE_EVENT2 or TRACE_EVENT3, depending on which path you&apos;re in, so that all the values are grouped together?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586734</commentid>
    <comment_count>14</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-23 14:16:18 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 133553 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=133553&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCOverdrawMetrics.cpp:151
&gt; &gt; +    if (paintedCounterName) {
&gt; &gt; +        // This must be in a different scope than the TRACE_EVENT2 above.
&gt; &gt; +        TRACE_EVENT1(&quot;webkit&quot;, &quot;CCOverdrawPaintMetrics&quot;, paintedCounterName, m_pixelsPainted);
&gt; &gt; +    }
&gt; 
&gt; Why? Can you not TRACE_EVENT2 or TRACE_EVENT3, depending on which path you&apos;re in, so that all the values are grouped together?

There is currently no TRACE_EVENT3, though jbates has an open bug to allow more than 2 axes of data in a single trace/counter.

The scoping issue is because of compile errors, the macros expect only one such trace to exist within a scope.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586740</commentid>
    <comment_count>15</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-03-23 14:21:28 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #13)
&gt; &gt; (From update of attachment 133553 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=133553&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCOverdrawMetrics.cpp:151
&gt; &gt; &gt; +    if (paintedCounterName) {
&gt; &gt; &gt; +        // This must be in a different scope than the TRACE_EVENT2 above.
&gt; &gt; &gt; +        TRACE_EVENT1(&quot;webkit&quot;, &quot;CCOverdrawPaintMetrics&quot;, paintedCounterName, m_pixelsPainted);
&gt; &gt; &gt; +    }
&gt; &gt; 
&gt; &gt; Why? Can you not TRACE_EVENT2 or TRACE_EVENT3, depending on which path you&apos;re in, so that all the values are grouped together?
&gt; 
&gt; There is currently no TRACE_EVENT3, though jbates has an open bug to allow more than 2 axes of data in a single trace/counter.

Oh! My misunderstanding.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586789</commentid>
    <comment_count>16</comment_count>
      <attachid>133553</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-23 15:09:16 -0700</bug_when>
    <thetext>Comment on attachment 133553
Patch

Clearing flags on attachment: 133553

Committed r111913: &lt;http://trac.webkit.org/changeset/111913&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586790</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-23 15:09:21 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133494</attachid>
            <date>2012-03-23 08:58:33 -0700</date>
            <delta_ts>2012-03-23 11:59:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82057-20120323115832.patch</filename>
            <type>text/plain</type>
            <size>15474</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExODA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWIwOTk4ZDA4MzQ1MDI5
MDhiY2I1ZjM4OGI0NGVmNzYzNmU1NzAxMS4uNDIzZGI0NmUwZDVjYTE2MmNlMTBiYTk5MTEzYjcy
Yzg3MmMxMDM3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTAzLTIzICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gUmVj
b3JkIGludmFsaWRhdGVkIHZzIHBhaW50ZWQgcGl4ZWwgY291bnRzIGZvciBtZWFzdXJpbmcgZWZm
ZWN0aXZlbmVzcyBvZiBwZXItdGlsZSBwYWludGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODIwNTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIGludmFsaWRhdGUvcGFpbnQgbWV0cmljcyB0byBD
Q092ZXJkcmF3TWV0cmljcyBjbGFzcywgYW5kIGNhbGxzIGluCisgICAgICAgIHRvIHJlcG9ydCBp
bnZhbGlkYXRlZCBhbmQgcGFpbnRlZCBhcmVhcyB3aGVuIHVwZGF0aW5nIHRpbGVzIGluIHRoZQor
ICAgICAgICBUaWxlZExheWVyQ2hyb21pdW0gY2xhc3MuCisKKyAgICAgICAgVW5pdCB0ZXN0OiBU
aWxlZExheWVyQ2hyb21pdW1UZXN0Lm9wYXF1ZUNvbnRlbnRzUmVnaW9uCisgICAgICAgICAgICAg
ICAgICAgVGlsZWRMYXllckNocm9taXVtVGVzdC5pbnZhbGlkYXRlQW5kUGFpbnRNZXRyaWNzCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRh
dGVUaWxlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPdmVy
ZHJhd01ldHJpY3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NPdmVyZHJhd01ldHJpY3M6OkND
T3ZlcmRyYXdNZXRyaWNzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDT3ZlcmRyYXdNZXRyaWNzOjpk
aWRJbnZhbGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NP
dmVyZHJhd01ldHJpY3M6OmRpZFBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNDT3ZlcmRyYXdN
ZXRyaWNzOjpyZWNvcmRNZXRyaWNzSW50ZXJuYWwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDT3ZlcmRyYXdNZXRyaWNzLmg6CisgICAgICAgIChDQ092ZXJkcmF3
TWV0cmljcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ092ZXJkcmF3TWV0cmljczo6cGl4ZWxzSW52
YWxpZGF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NPdmVyZHJhd01ldHJpY3M6OnBpeGVsc1Bh
aW50ZWQpOgorCiAyMDEyLTAzLTIyICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFtjaHJvbWl1bV0gU2tpcCBmcmFtZXMgd2hlbiBjaGVja2VyYm9hcmRpbmcg
YW4gYW5pbWF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGE4NzQwMGE3NGU0OGMx
ZDYyMjhjMGM4ZjExYzA5YjBlNDYyMzExMzYuLjIxNTZmYjNmYWFkZWYyYmNmMzRlNTJlN2FiNWJh
NzdiMzQ1YmI5OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTItMDMtMjMgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgW2Nocm9taXVtXSBSZWNvcmQgaW52YWxpZGF0ZWQgdnMgcGFpbnRlZCBwaXhlbCBjb3VudHMg
Zm9yIG1lYXN1cmluZyBlZmZlY3RpdmVuZXNzIG9mIHBlci10aWxlIHBhaW50aW5nCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjA1NworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogdGVzdHMvVGlsZWRMYXll
ckNocm9taXVtVGVzdC5jcHA6CisgICAgICAgIChXVEY6OlRFU1QpOgorICAgICAgICAoV1RGKToK
KwogMjAxMi0wMy0yMiAgUm9iZXJ0IEtyb2VnZXIgIDxyamtyb2VnZUBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgW2Nocm9taXVtXSBIYWx0IGluIHByb2dyZXNzIGZsaW5ncyBvbiByZWNlaXB0IG9m
IGtleSBldmVudHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCmluZGV4IDA4OTQ0ZDE1
MDgwZjAxOTk1ZDEzZTQ3YzA5NjAyNjg2NzhkMTA0YWUuLmNkMTNmYTNjY2ZiMjExOWYwZmJhNGUw
ZjI2YzJkMTk3NjMxN2I4MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcApAQCAt
NDY2LDYgKzQ2Niw5IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVU
aWxlcyhib29sIGlkbGUsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgIGlmIChvY2NsdXNpb24pCisgICAg
ICAgICAgICAgICAgb2NjbHVzaW9uLT5vdmVyZHJhd01ldHJpY3MoKS5kaWRJbnZhbGlkYXRlKHRp
bGUtPm1fZGlydHlSZWN0KTsKKwogICAgICAgICAgICAgZGlydHlMYXllclJlY3QudW5pdGUodGls
ZS0+bV9kaXJ0eVJlY3QpOwogICAgICAgICAgICAgdGlsZS0+Y29weUFuZENsZWFyRGlydHkoKTsK
ICAgICAgICAgfQpAQCAtNDc1LDYgKzQ3OCw5IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpw
cmVwYXJlVG9VcGRhdGVUaWxlcyhib29sIGlkbGUsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQKICAg
ICBpZiAoZGlydHlMYXllclJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKKyAgICBp
ZiAob2NjbHVzaW9uKQorICAgICAgICBvY2NsdXNpb24tPm92ZXJkcmF3TWV0cmljcygpLmRpZFBh
aW50KG1fcGFpbnRSZWN0KTsKKwogICAgIC8vIER1ZSB0byBib3JkZXJzLCB3aGVuIHRoZSBwYWlu
dCByZWN0IGlzIGV4dGVuZGVkIHRvIHRpbGUgYm91bmRhcmllcywgaXQKICAgICAvLyBtYXkgZW5k
IHVwIG92ZXJsYXBwaW5nIG1vcmUgdGlsZXMgdGhhbiB0aGUgb3JpZ2luYWwgY29udGVudCByZWN0
LiBSZWNvcmQKICAgICAvLyB0aGUgb3JpZ2luYWwgdGlsZXMgc28gd2UgZG9uJ3QgdXBsb2FkIG1v
cmUgdGlsZXMgdGhhbiBuZWNlc3NhcnkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ092ZXJkcmF3TWV0cmljcy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ092ZXJkcmF3TWV0cmljcy5j
cHAKaW5kZXggODg1YzNiMDM0ZmRjYTFhNDk5MGJmOWIxYWQyMDQ5MDk3OWI3NDZhZS4uNGRhMmEz
MWM3YjczM2YwNDJlN2E2ZGRmNjNlMzhkNDMzNzk1ZDc1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPdmVyZHJhd01ldHJpY3MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT3Zl
cmRyYXdNZXRyaWNzLmNwcApAQCAtNDIsNiArNDIsOCBAQCBDQ092ZXJkcmF3TWV0cmljczo6Q0NP
dmVyZHJhd01ldHJpY3MoYm9vbCByZWNvcmRNZXRyaWNzRm9yRnJhbWUpCiAgICAgLCBtX3BpeGVs
c0RyYXduT3BhcXVlKDApCiAgICAgLCBtX3BpeGVsc0RyYXduVHJhbnNsdWNlbnQoMCkKICAgICAs
IG1fcGl4ZWxzQ3VsbGVkKDApCisgICAgLCBtX3BpeGVsc0ludmFsaWRhdGVkKDApCisgICAgLCBt
X3BpeGVsc1BhaW50ZWQoMCkKIHsKIH0KIApAQCAtNTksNiArNjEsMjIgQEAgc3RhdGljIGlubGlu
ZSBmbG9hdCBxdWFkQXJlYShjb25zdCBGbG9hdFF1YWQmIHF1YWQpCiAgICAgICAgICAgICAgICAg
ICAgICAgIHdlZGdlUHJvZHVjdChxdWFkLnA0KCksIHF1YWQucDEoKSkpKTsKIH0KIAordm9pZCBD
Q092ZXJkcmF3TWV0cmljczo6ZGlkSW52YWxpZGF0ZShjb25zdCBJbnRSZWN0JiBpbnZhbGlkYXRl
ZFJlY3QpCit7CisgICAgaWYgKCFtX3JlY29yZE1ldHJpY3NGb3JGcmFtZSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgbV9waXhlbHNJbnZhbGlkYXRlZCArPSBzdGF0aWNfY2FzdDxmbG9hdD4oaW52
YWxpZGF0ZWRSZWN0LndpZHRoKCkpICogaW52YWxpZGF0ZWRSZWN0LmhlaWdodCgpOworfQorCit2
b2lkIENDT3ZlcmRyYXdNZXRyaWNzOjpkaWRQYWludChjb25zdCBJbnRSZWN0JiBwYWludGVkUmVj
dCkKK3sKKyAgICBpZiAoIW1fcmVjb3JkTWV0cmljc0ZvckZyYW1lKQorICAgICAgICByZXR1cm47
CisKKyAgICBtX3BpeGVsc1BhaW50ZWQgKz0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHBhaW50ZWRSZWN0
LndpZHRoKCkpICogcGFpbnRlZFJlY3QuaGVpZ2h0KCk7Cit9CisKIHZvaWQgQ0NPdmVyZHJhd01l
dHJpY3M6OmRpZEN1bGwoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybVRvVGFy
Z2V0LCBjb25zdCBJbnRSZWN0JiBiZWZvcmVDdWxsUmVjdCwgY29uc3QgSW50UmVjdCYgYWZ0ZXJD
dWxsUmVjdCkKIHsKICAgICBpZiAoIW1fcmVjb3JkTWV0cmljc0ZvckZyYW1lKQpAQCAtMTAwLDkg
KzExOCwxMyBAQCB2b2lkIENDT3ZlcmRyYXdNZXRyaWNzOjpyZWNvcmRNZXRyaWNzSW50ZXJuYWwo
TWV0cmljc1R5cGUgbWV0cmljc1R5cGUsIGNvbnN0IExheQogICAgIGNvbnN0IGNoYXIqIGhpc3Rv
Z3JhbU9wYXF1ZU5hbWUgPSAwOwogICAgIGNvbnN0IGNoYXIqIGhpc3RvZ3JhbVRyYW5zbHVjZW50
TmFtZSA9IDA7CiAgICAgY29uc3QgY2hhciogaGlzdG9ncmFtQ3VsbGVkTmFtZSA9IDA7CisgICAg
Y29uc3QgY2hhciogaGlzdG9ncmFtSW52YWxpZGF0ZWROYW1lID0gMDsKKyAgICBjb25zdCBjaGFy
KiBoaXN0b2dyYW1QYWludGVkTmFtZSA9IDA7CiAgICAgY29uc3QgY2hhciogY3VsbENvdW50ZXJO
YW1lID0gMDsKICAgICBjb25zdCBjaGFyKiBvcGFxdWVDb3VudGVyTmFtZSA9IDA7CiAgICAgY29u
c3QgY2hhciogdHJhbnNsdWNlbnRDb3VudGVyTmFtZSA9IDA7CisgICAgY29uc3QgY2hhciogaW52
YWxpZGF0ZWRDb3VudGVyTmFtZSA9IDA7CisgICAgY29uc3QgY2hhciAqcGFpbnRlZENvdW50ZXJO
YW1lID0gMDsKICAgICBzd2l0Y2ggKG1ldHJpY3NUeXBlKSB7CiAgICAgY2FzZSBEUkFXSU5HOgog
ICAgICAgICBoaXN0b2dyYW1PcGFxdWVOYW1lID0gIlJlbmRlcmVyNC5kcmF3UGl4ZWxDb3VudE9w
YXF1ZSI7CkBAIC0xMTYsOSArMTM4LDEzIEBAIHZvaWQgQ0NPdmVyZHJhd01ldHJpY3M6OnJlY29y
ZE1ldHJpY3NJbnRlcm5hbChNZXRyaWNzVHlwZSBtZXRyaWNzVHlwZSwgY29uc3QgTGF5CiAgICAg
ICAgIGhpc3RvZ3JhbU9wYXF1ZU5hbWUgPSAiUmVuZGVyZXI0LnVwbG9hZFBpeGVsQ291bnRPcGFx
dWUiOwogICAgICAgICBoaXN0b2dyYW1UcmFuc2x1Y2VudE5hbWUgPSAiUmVuZGVyZXI0LnVwbG9h
ZFBpeGVsQ291bnRUcmFuc2x1Y2VudCI7CiAgICAgICAgIGhpc3RvZ3JhbUN1bGxlZE5hbWUgPSAi
UmVuZGVyZXI0LnVwbG9hZFBpeGVsQ291bnRDdWxsZWQiOworICAgICAgICBoaXN0b2dyYW1JbnZh
bGlkYXRlZE5hbWUgPSAiUmVuZGVyZXI0LnBpeGVsQ291bnRJbnZhbGlkYXRlZCI7CisgICAgICAg
IGhpc3RvZ3JhbVBhaW50ZWROYW1lID0gIlJlbmRlcmVyNC5waXhlbENvdW50UGFpbnRlZCI7CiAg
ICAgICAgIGN1bGxDb3VudGVyTmFtZSA9ICJVcGxvYWRQaXhlbHNDdWxsZWQiOwogICAgICAgICBv
cGFxdWVDb3VudGVyTmFtZSA9ICJQaXhlbHNVcGxvYWRlZE9wYXF1ZSI7CiAgICAgICAgIHRyYW5z
bHVjZW50Q291bnRlck5hbWUgPSAiUGl4ZWxzVXBsb2FkZWRUcmFuc2x1Y2VudCI7CisgICAgICAg
IGludmFsaWRhdGVkQ291bnRlck5hbWUgPSAiUGl4ZWxzSW52YWxpZGF0ZWQiOworICAgICAgICBw
YWludGVkQ291bnRlck5hbWUgPSAiUGl4ZWxzUGFpbnRlZCI7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KICAgICBBU1NFUlQoaGlzdG9ncmFtT3BhcXVlTmFtZSk7CkBAIC0xMjcsOSArMTUzLDE3IEBA
IHZvaWQgQ0NPdmVyZHJhd01ldHJpY3M6OnJlY29yZE1ldHJpY3NJbnRlcm5hbChNZXRyaWNzVHlw
ZSBtZXRyaWNzVHlwZSwgY29uc3QgTGF5CiAgICAgUGxhdGZvcm1TdXBwb3J0OjpoaXN0b2dyYW1D
dXN0b21Db3VudHMoaGlzdG9ncmFtT3BhcXVlTmFtZSwgc3RhdGljX2Nhc3Q8aW50Pihub3JtYWxp
emF0aW9uICogbV9waXhlbHNEcmF3bk9wYXF1ZSksIDEwMCwgMTAwMDAwMCwgNTApOwogICAgIFBs
YXRmb3JtU3VwcG9ydDo6aGlzdG9ncmFtQ3VzdG9tQ291bnRzKGhpc3RvZ3JhbVRyYW5zbHVjZW50
TmFtZSwgc3RhdGljX2Nhc3Q8aW50Pihub3JtYWxpemF0aW9uICogbV9waXhlbHNEcmF3blRyYW5z
bHVjZW50KSwgMTAwLCAxMDAwMDAwLCA1MCk7CiAgICAgUGxhdGZvcm1TdXBwb3J0OjpoaXN0b2dy
YW1DdXN0b21Db3VudHMoaGlzdG9ncmFtQ3VsbGVkTmFtZSwgc3RhdGljX2Nhc3Q8aW50Pihub3Jt
YWxpemF0aW9uICogbV9waXhlbHNDdWxsZWQpLCAxMDAsIDEwMDAwMDAsIDUwKTsKKyAgICBpZiAo
aW52YWxpZGF0ZWRDb3VudGVyTmFtZSkgeworICAgICAgICBQbGF0Zm9ybVN1cHBvcnQ6Omhpc3Rv
Z3JhbUN1c3RvbUNvdW50cyhoaXN0b2dyYW1JbnZhbGlkYXRlZE5hbWUsIHN0YXRpY19jYXN0PGlu
dD4obm9ybWFsaXphdGlvbiAqIG1fcGl4ZWxzSW52YWxpZGF0ZWQpLCAxMDAsIDEwMDAwMDAsIDUw
KTsKKyAgICAgICAgUGxhdGZvcm1TdXBwb3J0OjpoaXN0b2dyYW1DdXN0b21Db3VudHMoaGlzdG9n
cmFtUGFpbnRlZE5hbWUsIHN0YXRpY19jYXN0PGludD4obm9ybWFsaXphdGlvbiAqIG1fcGl4ZWxz
UGFpbnRlZCksIDEwMCwgMTAwMDAwMCwgNTApOworICAgIH0KIAogICAgIFRSQUNFX0NPVU5URVJf
SUQxKCJ3ZWJraXQiLCBjdWxsQ291bnRlck5hbWUsIGxheWVyVHJlZUhvc3QsIG1fcGl4ZWxzQ3Vs
bGVkKTsKICAgICBUUkFDRV9FVkVOVDIoIndlYmtpdCIsICJDQ092ZXJkcmF3TWV0cmljcyIsIG9w
YXF1ZUNvdW50ZXJOYW1lLCBtX3BpeGVsc0RyYXduT3BhcXVlLCB0cmFuc2x1Y2VudENvdW50ZXJO
YW1lLCBtX3BpeGVsc0RyYXduVHJhbnNsdWNlbnQpOworICAgIGlmIChpbnZhbGlkYXRlZENvdW50
ZXJOYW1lKSB7CisgICAgICAgIC8vIFRoaXMgbXVzdCBiZSBpbiBhIGRpZmZlcmVudCBzY29wZSB0
aGFuIHRoZSBUUkFDRV9FVkVOVDIgYWJvdmUuCisgICAgICAgIFRSQUNFX0VWRU5UMigid2Via2l0
IiwgIkNDT3ZlcmRyYXdQYWludE1ldHJpY3MiLCBpbnZhbGlkYXRlZENvdW50ZXJOYW1lLCBtX3Bp
eGVsc0ludmFsaWRhdGVkLCBwYWludGVkQ291bnRlck5hbWUsIG1fcGl4ZWxzUGFpbnRlZCk7Cisg
ICAgfQogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ092ZXJkcmF3TWV0cmljcy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPdmVyZHJhd01l
dHJpY3MuaAppbmRleCBlMjI0YzdkY2NkMmI3ZTc0YTQyYjJmMjRiMzgzNDdmMGUzMmZmM2Q3Li5m
ZDhjYTU4YzMyYjdmZGJiY2MxZWY2OWE1NjA3MGIyZWRkYzkxMjRjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ092ZXJkcmF3TWV0cmlj
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
T3ZlcmRyYXdNZXRyaWNzLmgKQEAgLTM4LDYgKzM4LDkgQEAgY2xhc3MgQ0NPdmVyZHJhd01ldHJp
Y3MgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPENDT3ZlcmRyYXdNZXRyaWNzPiBj
cmVhdGUoYm9vbCByZWNvcmRNZXRyaWNzRm9yRnJhbWUpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBD
Q092ZXJkcmF3TWV0cmljcyhyZWNvcmRNZXRyaWNzRm9yRnJhbWUpKTsgfQogCisgICAgdm9pZCBk
aWRJbnZhbGlkYXRlKGNvbnN0IEludFJlY3QmIGludmFsaWRhdGVkUmVjdCk7CisgICAgdm9pZCBk
aWRQYWludChjb25zdCBJbnRSZWN0JiBwYWludGVkUmVjdCk7CisKICAgICB2b2lkIGRpZEN1bGwo
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybVRvVGFyZ2V0LCBjb25zdCBJbnRS
ZWN0JiBiZWZvcmVDdWxsUmVjdCwgY29uc3QgSW50UmVjdCYgYWZ0ZXJDdWxsUmVjdCk7CiAgICAg
dm9pZCBkaWREcmF3KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm1Ub1Rhcmdl
dCwgY29uc3QgSW50UmVjdCYgYWZ0ZXJDdWxsUmVjdCwgY29uc3QgSW50UmVjdCYgb3BhcXVlUmVj
dCk7CiAKQEAgLTQ4LDYgKzUxLDggQEAgcHVibGljOgogICAgIGZsb2F0IHBpeGVsc0RyYXduT3Bh
cXVlKCkgY29uc3QgeyByZXR1cm4gbV9waXhlbHNEcmF3bk9wYXF1ZTsgfQogICAgIGZsb2F0IHBp
eGVsc0RyYXduVHJhbnNsdWNlbnQoKSBjb25zdCB7IHJldHVybiBtX3BpeGVsc0RyYXduVHJhbnNs
dWNlbnQ7IH0KICAgICBmbG9hdCBwaXhlbHNDdWxsZWQoKSBjb25zdCB7IHJldHVybiBtX3BpeGVs
c0N1bGxlZDsgfQorICAgIGZsb2F0IHBpeGVsc0ludmFsaWRhdGVkKCkgY29uc3QgeyByZXR1cm4g
bV9waXhlbHNJbnZhbGlkYXRlZDsgfQorICAgIGZsb2F0IHBpeGVsc1BhaW50ZWQoKSBjb25zdCB7
IHJldHVybiBtX3BpeGVsc1BhaW50ZWQ7IH0KIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBDQ092
ZXJkcmF3TWV0cmljcyhib29sIHJlY29yZE1ldHJpY3NGb3JGcmFtZSk7CkBAIC02OSw2ICs3NCwx
MCBAQCBwcml2YXRlOgogICAgIGZsb2F0IG1fcGl4ZWxzRHJhd25UcmFuc2x1Y2VudDsKICAgICAv
LyBDb3VudCBvZiBwaXhlbHMgbm90IGRyYXduIGFzIHRoZXkgYXJlIG9jY2x1ZGVkIGJ5IHNvbXRo
aW5nIG9wYXF1ZS4KICAgICBmbG9hdCBtX3BpeGVsc0N1bGxlZDsKKyAgICAvLyBDb3VudCBvZiBw
aXhlbHMgdGhhdCB3ZXJlIGludmFsaWRhdGVkIGFuZCBuZWVkZWQgdG8gYmUgcGFpbnRlZC4KKyAg
ICBmbG9hdCBtX3BpeGVsc0ludmFsaWRhdGVkOworICAgIC8vIENvdW50IG9mIHBpeGVscyB0aGF0
IHdlcmUgcGFpbnRlZCBkdWUgdG8gaW52YWxpZGF0aW9uLgorICAgIGZsb2F0IG1fcGl4ZWxzUGFp
bnRlZDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4IDk0
ZjllYjRkOGEyNjZiNmEzZjYzZjdiYzkwNzMyMjUyNzRmYTVjMWYuLjljZDVlMjQyNjJhMGNhMzM1
NTZlZTM5MGQwZDlkNzNiMzc0Mjc3OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcApAQCAtMTEyNSw2ICsxMTI1
LDggQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBvcGFxdWVDb250ZW50c1JlZ2lvbikK
ICAgICBvcGFxdWVDb250ZW50cyA9IGxheWVyLT5vcGFxdWVDb250ZW50c1JlZ2lvbigpOwogICAg
IEVYUEVDVF9UUlVFKG9wYXF1ZUNvbnRlbnRzLmlzRW1wdHkoKSk7CiAKKyAgICBFWFBFQ1RfTkVB
UihvY2NsdWRlZC5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNJbnZhbGlkYXRlZCgpLCAyMDAwMCwg
MSk7CisgICAgRVhQRUNUX05FQVIob2NjbHVkZWQub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzUGFp
bnRlZCgpLCAyMDAwMCwgMSk7CiAgICAgRVhQRUNUX05FQVIob2NjbHVkZWQub3ZlcmRyYXdNZXRy
aWNzKCkucGl4ZWxzRHJhd25PcGFxdWUoKSwgMCwgMSk7CiAgICAgRVhQRUNUX05FQVIob2NjbHVk
ZWQub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzRHJhd25UcmFuc2x1Y2VudCgpLCAyMDAwMCwgMSk7
CiAgICAgRVhQRUNUX05FQVIob2NjbHVkZWQub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzQ3VsbGVk
KCksIDAsIDEpOwpAQCAtMTEzOCw2ICsxMTQwLDggQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1U
ZXN0LCBvcGFxdWVDb250ZW50c1JlZ2lvbikKICAgICBFWFBFQ1RfRVFfUkVDVChpbnRlcnNlY3Rp
b24ob3BhcXVlUGFpbnRSZWN0LCB2aXNpYmxlQm91bmRzKSwgb3BhcXVlQ29udGVudHMuYm91bmRz
KCkpOwogICAgIEVYUEVDVF9FUSgxdSwgb3BhcXVlQ29udGVudHMucmVjdHMoKS5zaXplKCkpOwog
CisgICAgRVhQRUNUX05FQVIob2NjbHVkZWQub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzSW52YWxp
ZGF0ZWQoKSwgMjAwMDAgKiAyLCAxKTsKKyAgICBFWFBFQ1RfTkVBUihvY2NsdWRlZC5vdmVyZHJh
d01ldHJpY3MoKS5waXhlbHNQYWludGVkKCksIDIwMDAwICogMiwgMSk7CiAgICAgRVhQRUNUX05F
QVIob2NjbHVkZWQub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzRHJhd25PcGFxdWUoKSwgMTcxMDAs
IDEpOwogICAgIEVYUEVDVF9ORUFSKG9jY2x1ZGVkLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc0Ry
YXduVHJhbnNsdWNlbnQoKSwgMjAwMDAgKyAyMDAwMCAtIDE3MTAwLCAxKTsKICAgICBFWFBFQ1Rf
TkVBUihvY2NsdWRlZC5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNDdWxsZWQoKSwgMCwgMSk7CkBA
IC0xMTQ5LDYgKzExNTMsOCBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIG9wYXF1ZUNv
bnRlbnRzUmVnaW9uKQogICAgIEVYUEVDVF9FUV9SRUNUKGludGVyc2VjdGlvbihvcGFxdWVQYWlu
dFJlY3QsIHZpc2libGVCb3VuZHMpLCBvcGFxdWVDb250ZW50cy5ib3VuZHMoKSk7CiAgICAgRVhQ
RUNUX0VRKDF1LCBvcGFxdWVDb250ZW50cy5yZWN0cygpLnNpemUoKSk7CiAKKyAgICBFWFBFQ1Rf
TkVBUihvY2NsdWRlZC5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNJbnZhbGlkYXRlZCgpLCAyMDAw
MCAqIDIsIDEpOworICAgIEVYUEVDVF9ORUFSKG9jY2x1ZGVkLm92ZXJkcmF3TWV0cmljcygpLnBp
eGVsc1BhaW50ZWQoKSwgMjAwMDAgKiAyLCAxKTsKICAgICBFWFBFQ1RfTkVBUihvY2NsdWRlZC5v
dmVyZHJhd01ldHJpY3MoKS5waXhlbHNEcmF3bk9wYXF1ZSgpLCAxNzEwMCwgMSk7CiAgICAgRVhQ
RUNUX05FQVIob2NjbHVkZWQub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzRHJhd25UcmFuc2x1Y2Vu
dCgpLCAyMDAwMCArIDIwMDAwIC0gMTcxMDAsIDEpOwogICAgIEVYUEVDVF9ORUFSKG9jY2x1ZGVk
Lm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc0N1bGxlZCgpLCAwLCAxKTsKQEAgLTExNjIsNiArMTE2
OCw4IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgb3BhcXVlQ29udGVudHNSZWdpb24p
CiAgICAgRVhQRUNUX0VRX1JFQ1QoaW50ZXJzZWN0aW9uKG9wYXF1ZVBhaW50UmVjdCwgdmlzaWJs
ZUJvdW5kcyksIG9wYXF1ZUNvbnRlbnRzLmJvdW5kcygpKTsKICAgICBFWFBFQ1RfRVEoMXUsIG9w
YXF1ZUNvbnRlbnRzLnJlY3RzKCkuc2l6ZSgpKTsKIAorICAgIEVYUEVDVF9ORUFSKG9jY2x1ZGVk
Lm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc0ludmFsaWRhdGVkKCksIDIwMDAwICogMiArIDEsIDEp
OworICAgIEVYUEVDVF9ORUFSKG9jY2x1ZGVkLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc1BhaW50
ZWQoKSwgMjAwMDAgKiAyICsgMSwgMSk7CiAgICAgRVhQRUNUX05FQVIob2NjbHVkZWQub3ZlcmRy
YXdNZXRyaWNzKCkucGl4ZWxzRHJhd25PcGFxdWUoKSwgMTcxMDAsIDEpOwogICAgIEVYUEVDVF9O
RUFSKG9jY2x1ZGVkLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc0RyYXduVHJhbnNsdWNlbnQoKSwg
MjAwMDAgKyAyMDAwMCAtIDE3MTAwICsgMSwgMSk7CiAgICAgRVhQRUNUX05FQVIob2NjbHVkZWQu
b3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzQ3VsbGVkKCksIDAsIDEpOwpAQCAtMTE3NSw5ICsxMTgz
LDYxIEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgb3BhcXVlQ29udGVudHNSZWdpb24p
CiAgICAgRVhQRUNUX0VRX1JFQ1QoaW50ZXJzZWN0aW9uKEludFJlY3QoMTAsIDEwMCwgOTAsIDEw
MCksIHZpc2libGVCb3VuZHMpLCBvcGFxdWVDb250ZW50cy5ib3VuZHMoKSk7CiAgICAgRVhQRUNU
X0VRKDF1LCBvcGFxdWVDb250ZW50cy5yZWN0cygpLnNpemUoKSk7CiAKKyAgICBFWFBFQ1RfTkVB
UihvY2NsdWRlZC5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNJbnZhbGlkYXRlZCgpLCAyMDAwMCAq
IDIgKyAxICsgMSwgMSk7CisgICAgRVhQRUNUX05FQVIob2NjbHVkZWQub3ZlcmRyYXdNZXRyaWNz
KCkucGl4ZWxzUGFpbnRlZCgpLCAyMDAwMCAqIDIgKyAxICArIDEsIDEpOwogICAgIEVYUEVDVF9O
RUFSKG9jY2x1ZGVkLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc0RyYXduT3BhcXVlKCksIDE3MTAw
LCAxKTsKICAgICBFWFBFQ1RfTkVBUihvY2NsdWRlZC5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNE
cmF3blRyYW5zbHVjZW50KCksIDIwMDAwICsgMjAwMDAgLSAxNzEwMCArIDEgKyAxLCAxKTsKICAg
ICBFWFBFQ1RfTkVBUihvY2NsdWRlZC5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNDdWxsZWQoKSwg
MCwgMSk7CiB9CiAKK1RFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaW52YWxpZGF0ZUFuZFBh
aW50TWV0cmljcykKK3sKKyAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2Vy
ID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMioxMDI0KjEwMjQsIDEwMjQp
OworICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5l
dyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CisgICAgVGVz
dENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdWRlZDsKKworICAgIC8vIFRoZSB0aWxlIHNpemUgaXMg
MTAweDEwMCwgc28gdGhpcyBpbnZhbGlkYXRlcyBhbmQgdGhlbiBwYWludHMgdHdvIHRpbGVzIGlu
IHZhcmlvdXMgd2F5cy4KKworICAgIEludFJlY3Qgb3BhcXVlUGFpbnRSZWN0OworICAgIFJlZ2lv
biBvcGFxdWVDb250ZW50czsKKworICAgIEludFJlY3QgY29udGVudEJvdW5kcyA9IEludFJlY3Qo
MCwgMCwgMTAwLCAzMDApOworICAgIEludFJlY3QgdmlzaWJsZUJvdW5kcyA9IEludFJlY3QoMCwg
MCwgMTAwLCAzMDApOworCisgICAgbGF5ZXItPnNldEJvdW5kcyhjb250ZW50Qm91bmRzLnNpemUo
KSk7CisgICAgbGF5ZXItPnNldERyYXdUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgoMSwg
MCwgMCwgMSwgbGF5ZXItPmJvdW5kcygpLndpZHRoKCkgLyAyLjAsIGxheWVyLT5ib3VuZHMoKS5o
ZWlnaHQoKSAvIDIuMCkpOworICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KHZpc2libGVC
b3VuZHMpOworICAgIGxheWVyLT5zZXREcmF3T3BhY2l0eSgxKTsKKworICAgIC8vIEludmFsaWRh
dGVzIGFuZCBwYWludHMgdGhlIHdob2xlIGxheWVyLgorICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0
dXJlVXBkYXRlcigpLT5zZXRPcGFxdWVQYWludFJlY3QoSW50UmVjdCgpKTsKKyAgICBsYXllci0+
aW52YWxpZGF0ZVJlY3QoY29udGVudEJvdW5kcyk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0
ZShjb250ZW50Qm91bmRzLCAmb2NjbHVkZWQpOworICAgIG9wYXF1ZUNvbnRlbnRzID0gbGF5ZXIt
Pm9wYXF1ZUNvbnRlbnRzUmVnaW9uKCk7CisgICAgRVhQRUNUX1RSVUUob3BhcXVlQ29udGVudHMu
aXNFbXB0eSgpKTsKKworICAgIEVYUEVDVF9ORUFSKG9jY2x1ZGVkLm92ZXJkcmF3TWV0cmljcygp
LnBpeGVsc0ludmFsaWRhdGVkKCksIDMwMDAwLCAxKTsKKyAgICBFWFBFQ1RfTkVBUihvY2NsdWRl
ZC5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNQYWludGVkKCksIDMwMDAwLCAxKTsKKyAgICBFWFBF
Q1RfTkVBUihvY2NsdWRlZC5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNEcmF3bk9wYXF1ZSgpLCAw
LCAxKTsKKyAgICBFWFBFQ1RfTkVBUihvY2NsdWRlZC5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNE
cmF3blRyYW5zbHVjZW50KCksIDMwMDAwLCAxKTsKKyAgICBFWFBFQ1RfTkVBUihvY2NsdWRlZC5v
dmVyZHJhd01ldHJpY3MoKS5waXhlbHNDdWxsZWQoKSwgMCwgMSk7CisKKyAgICAvLyBJbnZhbGlk
YXRlcyBhbiBhcmVhIG9uIHRoZSB0b3AgYW5kIGJvdHRvbSB0aWxlLCB3aGljaCB3aWxsIGNhdXNl
IHVzIHRvIHBhaW50IHRoZSB0aWxlIGluIHRoZSBtaWRkbGUsCisgICAgLy8gZXZlbiB0aG91Z2gg
aXQgaXMgbm90IGRpcnR5IGFuZCB3aWxsIG5vdCBiZSB1cGxvYWRlZC4KKyAgICBsYXllci0+ZmFr
ZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+c2V0T3BhcXVlUGFpbnRSZWN0KEludFJlY3QoKSk7Cisg
ICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgMSwgMSkpOworICAgIGxheWVy
LT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDUwLCAyMDAsIDEwLCAxMCkpOworICAgIGxheWVyLT5w
cmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5kcywgJm9jY2x1ZGVkKTsKKyAgICBvcGFxdWVDb250
ZW50cyA9IGxheWVyLT5vcGFxdWVDb250ZW50c1JlZ2lvbigpOworICAgIEVYUEVDVF9UUlVFKG9w
YXF1ZUNvbnRlbnRzLmlzRW1wdHkoKSk7CisKKyAgICAvLyBUaGUgbWlkZGxlIHRpbGUgd2FzIHBh
aW50ZWQgZXZlbiB0aG91Z2ggbm90IGludmFsaWRhdGVkLgorICAgIEVYUEVDVF9ORUFSKG9jY2x1
ZGVkLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc0ludmFsaWRhdGVkKCksIDMwMDAwICsgMSArIDEw
MCwgMSk7CisgICAgRVhQRUNUX05FQVIob2NjbHVkZWQub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxz
UGFpbnRlZCgpLCAzMDAwMCArIDYwICogMjEwLCAxKTsKKyAgICAvLyBUaGUgcGl4ZWxzIHVwbG9h
ZGVkIHdpbGwgbm90IGluY2x1ZGUgdGhlIG5vbi1pbnZhbGlkYXRlZCB0aWxlIGluIHRoZSBtaWRk
bGUuCisgICAgRVhQRUNUX05FQVIob2NjbHVkZWQub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzRHJh
d25PcGFxdWUoKSwgMCwgMSk7CisgICAgRVhQRUNUX05FQVIob2NjbHVkZWQub3ZlcmRyYXdNZXRy
aWNzKCkucGl4ZWxzRHJhd25UcmFuc2x1Y2VudCgpLCAzMDAwMCArIDEgKyAxMDAsIDEpOworICAg
IEVYUEVDVF9ORUFSKG9jY2x1ZGVkLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc0N1bGxlZCgpLCAw
LCAxKTsKK30KKwogfSAvLyBuYW1lc3BhY2UK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133529</attachid>
            <date>2012-03-23 11:59:27 -0700</date>
            <delta_ts>2012-03-23 14:01:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82057-20120323145926.patch</filename>
            <type>text/plain</type>
            <size>15862</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExODA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWIwOTk4ZDA4MzQ1MDI5
MDhiY2I1ZjM4OGI0NGVmNzYzNmU1NzAxMS4uNDIzZGI0NmUwZDVjYTE2MmNlMTBiYTk5MTEzYjcy
Yzg3MmMxMDM3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTAzLTIzICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gUmVj
b3JkIGludmFsaWRhdGVkIHZzIHBhaW50ZWQgcGl4ZWwgY291bnRzIGZvciBtZWFzdXJpbmcgZWZm
ZWN0aXZlbmVzcyBvZiBwZXItdGlsZSBwYWludGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODIwNTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIGludmFsaWRhdGUvcGFpbnQgbWV0cmljcyB0byBD
Q092ZXJkcmF3TWV0cmljcyBjbGFzcywgYW5kIGNhbGxzIGluCisgICAgICAgIHRvIHJlcG9ydCBp
bnZhbGlkYXRlZCBhbmQgcGFpbnRlZCBhcmVhcyB3aGVuIHVwZGF0aW5nIHRpbGVzIGluIHRoZQor
ICAgICAgICBUaWxlZExheWVyQ2hyb21pdW0gY2xhc3MuCisKKyAgICAgICAgVW5pdCB0ZXN0OiBU
aWxlZExheWVyQ2hyb21pdW1UZXN0Lm9wYXF1ZUNvbnRlbnRzUmVnaW9uCisgICAgICAgICAgICAg
ICAgICAgVGlsZWRMYXllckNocm9taXVtVGVzdC5pbnZhbGlkYXRlQW5kUGFpbnRNZXRyaWNzCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRh
dGVUaWxlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPdmVy
ZHJhd01ldHJpY3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NPdmVyZHJhd01ldHJpY3M6OkND
T3ZlcmRyYXdNZXRyaWNzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDT3ZlcmRyYXdNZXRyaWNzOjpk
aWRJbnZhbGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NP
dmVyZHJhd01ldHJpY3M6OmRpZFBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNDT3ZlcmRyYXdN
ZXRyaWNzOjpyZWNvcmRNZXRyaWNzSW50ZXJuYWwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDT3ZlcmRyYXdNZXRyaWNzLmg6CisgICAgICAgIChDQ092ZXJkcmF3
TWV0cmljcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ092ZXJkcmF3TWV0cmljczo6cGl4ZWxzSW52
YWxpZGF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NPdmVyZHJhd01ldHJpY3M6OnBpeGVsc1Bh
aW50ZWQpOgorCiAyMDEyLTAzLTIyICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFtjaHJvbWl1bV0gU2tpcCBmcmFtZXMgd2hlbiBjaGVja2VyYm9hcmRpbmcg
YW4gYW5pbWF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGE4NzQwMGE3NGU0OGMx
ZDYyMjhjMGM4ZjExYzA5YjBlNDYyMzExMzYuLjIxNTZmYjNmYWFkZWYyYmNmMzRlNTJlN2FiNWJh
NzdiMzQ1YmI5OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTItMDMtMjMgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgW2Nocm9taXVtXSBSZWNvcmQgaW52YWxpZGF0ZWQgdnMgcGFpbnRlZCBwaXhlbCBjb3VudHMg
Zm9yIG1lYXN1cmluZyBlZmZlY3RpdmVuZXNzIG9mIHBlci10aWxlIHBhaW50aW5nCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjA1NworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogdGVzdHMvVGlsZWRMYXll
ckNocm9taXVtVGVzdC5jcHA6CisgICAgICAgIChXVEY6OlRFU1QpOgorICAgICAgICAoV1RGKToK
KwogMjAxMi0wMy0yMiAgUm9iZXJ0IEtyb2VnZXIgIDxyamtyb2VnZUBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgW2Nocm9taXVtXSBIYWx0IGluIHByb2dyZXNzIGZsaW5ncyBvbiByZWNlaXB0IG9m
IGtleSBldmVudHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCmluZGV4IDA4OTQ0ZDE1
MDgwZjAxOTk1ZDEzZTQ3YzA5NjAyNjg2NzhkMTA0YWUuLmNkMTNmYTNjY2ZiMjExOWYwZmJhNGUw
ZjI2YzJkMTk3NjMxN2I4MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcApAQCAt
NDY2LDYgKzQ2Niw5IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVU
aWxlcyhib29sIGlkbGUsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgIGlmIChvY2NsdXNpb24pCisgICAg
ICAgICAgICAgICAgb2NjbHVzaW9uLT5vdmVyZHJhd01ldHJpY3MoKS5kaWRJbnZhbGlkYXRlKHRp
bGUtPm1fZGlydHlSZWN0KTsKKwogICAgICAgICAgICAgZGlydHlMYXllclJlY3QudW5pdGUodGls
ZS0+bV9kaXJ0eVJlY3QpOwogICAgICAgICAgICAgdGlsZS0+Y29weUFuZENsZWFyRGlydHkoKTsK
ICAgICAgICAgfQpAQCAtNDc1LDYgKzQ3OCw5IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpw
cmVwYXJlVG9VcGRhdGVUaWxlcyhib29sIGlkbGUsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQKICAg
ICBpZiAoZGlydHlMYXllclJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKKyAgICBp
ZiAob2NjbHVzaW9uKQorICAgICAgICBvY2NsdXNpb24tPm92ZXJkcmF3TWV0cmljcygpLmRpZFBh
aW50KG1fcGFpbnRSZWN0KTsKKwogICAgIC8vIER1ZSB0byBib3JkZXJzLCB3aGVuIHRoZSBwYWlu
dCByZWN0IGlzIGV4dGVuZGVkIHRvIHRpbGUgYm91bmRhcmllcywgaXQKICAgICAvLyBtYXkgZW5k
IHVwIG92ZXJsYXBwaW5nIG1vcmUgdGlsZXMgdGhhbiB0aGUgb3JpZ2luYWwgY29udGVudCByZWN0
LiBSZWNvcmQKICAgICAvLyB0aGUgb3JpZ2luYWwgdGlsZXMgc28gd2UgZG9uJ3QgdXBsb2FkIG1v
cmUgdGlsZXMgdGhhbiBuZWNlc3NhcnkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ092ZXJkcmF3TWV0cmljcy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ092ZXJkcmF3TWV0cmljcy5j
cHAKaW5kZXggODg1YzNiMDM0ZmRjYTFhNDk5MGJmOWIxYWQyMDQ5MDk3OWI3NDZhZS4uNGRhMmEz
MWM3YjczM2YwNDJlN2E2ZGRmNjNlMzhkNDMzNzk1ZDc1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPdmVyZHJhd01ldHJpY3MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT3Zl
cmRyYXdNZXRyaWNzLmNwcApAQCAtNDIsNiArNDIsOCBAQCBDQ092ZXJkcmF3TWV0cmljczo6Q0NP
dmVyZHJhd01ldHJpY3MoYm9vbCByZWNvcmRNZXRyaWNzRm9yRnJhbWUpCiAgICAgLCBtX3BpeGVs
c0RyYXduT3BhcXVlKDApCiAgICAgLCBtX3BpeGVsc0RyYXduVHJhbnNsdWNlbnQoMCkKICAgICAs
IG1fcGl4ZWxzQ3VsbGVkKDApCisgICAgLCBtX3BpeGVsc0ludmFsaWRhdGVkKDApCisgICAgLCBt
X3BpeGVsc1BhaW50ZWQoMCkKIHsKIH0KIApAQCAtNTksNiArNjEsMjIgQEAgc3RhdGljIGlubGlu
ZSBmbG9hdCBxdWFkQXJlYShjb25zdCBGbG9hdFF1YWQmIHF1YWQpCiAgICAgICAgICAgICAgICAg
ICAgICAgIHdlZGdlUHJvZHVjdChxdWFkLnA0KCksIHF1YWQucDEoKSkpKTsKIH0KIAordm9pZCBD
Q092ZXJkcmF3TWV0cmljczo6ZGlkSW52YWxpZGF0ZShjb25zdCBJbnRSZWN0JiBpbnZhbGlkYXRl
ZFJlY3QpCit7CisgICAgaWYgKCFtX3JlY29yZE1ldHJpY3NGb3JGcmFtZSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgbV9waXhlbHNJbnZhbGlkYXRlZCArPSBzdGF0aWNfY2FzdDxmbG9hdD4oaW52
YWxpZGF0ZWRSZWN0LndpZHRoKCkpICogaW52YWxpZGF0ZWRSZWN0LmhlaWdodCgpOworfQorCit2
b2lkIENDT3ZlcmRyYXdNZXRyaWNzOjpkaWRQYWludChjb25zdCBJbnRSZWN0JiBwYWludGVkUmVj
dCkKK3sKKyAgICBpZiAoIW1fcmVjb3JkTWV0cmljc0ZvckZyYW1lKQorICAgICAgICByZXR1cm47
CisKKyAgICBtX3BpeGVsc1BhaW50ZWQgKz0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHBhaW50ZWRSZWN0
LndpZHRoKCkpICogcGFpbnRlZFJlY3QuaGVpZ2h0KCk7Cit9CisKIHZvaWQgQ0NPdmVyZHJhd01l
dHJpY3M6OmRpZEN1bGwoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybVRvVGFy
Z2V0LCBjb25zdCBJbnRSZWN0JiBiZWZvcmVDdWxsUmVjdCwgY29uc3QgSW50UmVjdCYgYWZ0ZXJD
dWxsUmVjdCkKIHsKICAgICBpZiAoIW1fcmVjb3JkTWV0cmljc0ZvckZyYW1lKQpAQCAtMTAwLDkg
KzExOCwxMyBAQCB2b2lkIENDT3ZlcmRyYXdNZXRyaWNzOjpyZWNvcmRNZXRyaWNzSW50ZXJuYWwo
TWV0cmljc1R5cGUgbWV0cmljc1R5cGUsIGNvbnN0IExheQogICAgIGNvbnN0IGNoYXIqIGhpc3Rv
Z3JhbU9wYXF1ZU5hbWUgPSAwOwogICAgIGNvbnN0IGNoYXIqIGhpc3RvZ3JhbVRyYW5zbHVjZW50
TmFtZSA9IDA7CiAgICAgY29uc3QgY2hhciogaGlzdG9ncmFtQ3VsbGVkTmFtZSA9IDA7CisgICAg
Y29uc3QgY2hhciogaGlzdG9ncmFtSW52YWxpZGF0ZWROYW1lID0gMDsKKyAgICBjb25zdCBjaGFy
KiBoaXN0b2dyYW1QYWludGVkTmFtZSA9IDA7CiAgICAgY29uc3QgY2hhciogY3VsbENvdW50ZXJO
YW1lID0gMDsKICAgICBjb25zdCBjaGFyKiBvcGFxdWVDb3VudGVyTmFtZSA9IDA7CiAgICAgY29u
c3QgY2hhciogdHJhbnNsdWNlbnRDb3VudGVyTmFtZSA9IDA7CisgICAgY29uc3QgY2hhciogaW52
YWxpZGF0ZWRDb3VudGVyTmFtZSA9IDA7CisgICAgY29uc3QgY2hhciAqcGFpbnRlZENvdW50ZXJO
YW1lID0gMDsKICAgICBzd2l0Y2ggKG1ldHJpY3NUeXBlKSB7CiAgICAgY2FzZSBEUkFXSU5HOgog
ICAgICAgICBoaXN0b2dyYW1PcGFxdWVOYW1lID0gIlJlbmRlcmVyNC5kcmF3UGl4ZWxDb3VudE9w
YXF1ZSI7CkBAIC0xMTYsOSArMTM4LDEzIEBAIHZvaWQgQ0NPdmVyZHJhd01ldHJpY3M6OnJlY29y
ZE1ldHJpY3NJbnRlcm5hbChNZXRyaWNzVHlwZSBtZXRyaWNzVHlwZSwgY29uc3QgTGF5CiAgICAg
ICAgIGhpc3RvZ3JhbU9wYXF1ZU5hbWUgPSAiUmVuZGVyZXI0LnVwbG9hZFBpeGVsQ291bnRPcGFx
dWUiOwogICAgICAgICBoaXN0b2dyYW1UcmFuc2x1Y2VudE5hbWUgPSAiUmVuZGVyZXI0LnVwbG9h
ZFBpeGVsQ291bnRUcmFuc2x1Y2VudCI7CiAgICAgICAgIGhpc3RvZ3JhbUN1bGxlZE5hbWUgPSAi
UmVuZGVyZXI0LnVwbG9hZFBpeGVsQ291bnRDdWxsZWQiOworICAgICAgICBoaXN0b2dyYW1JbnZh
bGlkYXRlZE5hbWUgPSAiUmVuZGVyZXI0LnBpeGVsQ291bnRJbnZhbGlkYXRlZCI7CisgICAgICAg
IGhpc3RvZ3JhbVBhaW50ZWROYW1lID0gIlJlbmRlcmVyNC5waXhlbENvdW50UGFpbnRlZCI7CiAg
ICAgICAgIGN1bGxDb3VudGVyTmFtZSA9ICJVcGxvYWRQaXhlbHNDdWxsZWQiOwogICAgICAgICBv
cGFxdWVDb3VudGVyTmFtZSA9ICJQaXhlbHNVcGxvYWRlZE9wYXF1ZSI7CiAgICAgICAgIHRyYW5z
bHVjZW50Q291bnRlck5hbWUgPSAiUGl4ZWxzVXBsb2FkZWRUcmFuc2x1Y2VudCI7CisgICAgICAg
IGludmFsaWRhdGVkQ291bnRlck5hbWUgPSAiUGl4ZWxzSW52YWxpZGF0ZWQiOworICAgICAgICBw
YWludGVkQ291bnRlck5hbWUgPSAiUGl4ZWxzUGFpbnRlZCI7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KICAgICBBU1NFUlQoaGlzdG9ncmFtT3BhcXVlTmFtZSk7CkBAIC0xMjcsOSArMTUzLDE3IEBA
IHZvaWQgQ0NPdmVyZHJhd01ldHJpY3M6OnJlY29yZE1ldHJpY3NJbnRlcm5hbChNZXRyaWNzVHlw
ZSBtZXRyaWNzVHlwZSwgY29uc3QgTGF5CiAgICAgUGxhdGZvcm1TdXBwb3J0OjpoaXN0b2dyYW1D
dXN0b21Db3VudHMoaGlzdG9ncmFtT3BhcXVlTmFtZSwgc3RhdGljX2Nhc3Q8aW50Pihub3JtYWxp
emF0aW9uICogbV9waXhlbHNEcmF3bk9wYXF1ZSksIDEwMCwgMTAwMDAwMCwgNTApOwogICAgIFBs
YXRmb3JtU3VwcG9ydDo6aGlzdG9ncmFtQ3VzdG9tQ291bnRzKGhpc3RvZ3JhbVRyYW5zbHVjZW50
TmFtZSwgc3RhdGljX2Nhc3Q8aW50Pihub3JtYWxpemF0aW9uICogbV9waXhlbHNEcmF3blRyYW5z
bHVjZW50KSwgMTAwLCAxMDAwMDAwLCA1MCk7CiAgICAgUGxhdGZvcm1TdXBwb3J0OjpoaXN0b2dy
YW1DdXN0b21Db3VudHMoaGlzdG9ncmFtQ3VsbGVkTmFtZSwgc3RhdGljX2Nhc3Q8aW50Pihub3Jt
YWxpemF0aW9uICogbV9waXhlbHNDdWxsZWQpLCAxMDAsIDEwMDAwMDAsIDUwKTsKKyAgICBpZiAo
aW52YWxpZGF0ZWRDb3VudGVyTmFtZSkgeworICAgICAgICBQbGF0Zm9ybVN1cHBvcnQ6Omhpc3Rv
Z3JhbUN1c3RvbUNvdW50cyhoaXN0b2dyYW1JbnZhbGlkYXRlZE5hbWUsIHN0YXRpY19jYXN0PGlu
dD4obm9ybWFsaXphdGlvbiAqIG1fcGl4ZWxzSW52YWxpZGF0ZWQpLCAxMDAsIDEwMDAwMDAsIDUw
KTsKKyAgICAgICAgUGxhdGZvcm1TdXBwb3J0OjpoaXN0b2dyYW1DdXN0b21Db3VudHMoaGlzdG9n
cmFtUGFpbnRlZE5hbWUsIHN0YXRpY19jYXN0PGludD4obm9ybWFsaXphdGlvbiAqIG1fcGl4ZWxz
UGFpbnRlZCksIDEwMCwgMTAwMDAwMCwgNTApOworICAgIH0KIAogICAgIFRSQUNFX0NPVU5URVJf
SUQxKCJ3ZWJraXQiLCBjdWxsQ291bnRlck5hbWUsIGxheWVyVHJlZUhvc3QsIG1fcGl4ZWxzQ3Vs
bGVkKTsKICAgICBUUkFDRV9FVkVOVDIoIndlYmtpdCIsICJDQ092ZXJkcmF3TWV0cmljcyIsIG9w
YXF1ZUNvdW50ZXJOYW1lLCBtX3BpeGVsc0RyYXduT3BhcXVlLCB0cmFuc2x1Y2VudENvdW50ZXJO
YW1lLCBtX3BpeGVsc0RyYXduVHJhbnNsdWNlbnQpOworICAgIGlmIChpbnZhbGlkYXRlZENvdW50
ZXJOYW1lKSB7CisgICAgICAgIC8vIFRoaXMgbXVzdCBiZSBpbiBhIGRpZmZlcmVudCBzY29wZSB0
aGFuIHRoZSBUUkFDRV9FVkVOVDIgYWJvdmUuCisgICAgICAgIFRSQUNFX0VWRU5UMigid2Via2l0
IiwgIkNDT3ZlcmRyYXdQYWludE1ldHJpY3MiLCBpbnZhbGlkYXRlZENvdW50ZXJOYW1lLCBtX3Bp
eGVsc0ludmFsaWRhdGVkLCBwYWludGVkQ291bnRlck5hbWUsIG1fcGl4ZWxzUGFpbnRlZCk7Cisg
ICAgfQogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ092ZXJkcmF3TWV0cmljcy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPdmVyZHJhd01l
dHJpY3MuaAppbmRleCBlMjI0YzdkY2NkMmI3ZTc0YTQyYjJmMjRiMzgzNDdmMGUzMmZmM2Q3Li45
YmJkZDRlMTNkMzZmYzQ2M2EyMmYyMDgxODg0NTJmYmQyMjkwNmI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ092ZXJkcmF3TWV0cmlj
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
T3ZlcmRyYXdNZXRyaWNzLmgKQEAgLTM4LDcgKzM4LDE0IEBAIGNsYXNzIENDT3ZlcmRyYXdNZXRy
aWNzIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxDQ092ZXJkcmF3TWV0cmljcz4g
Y3JlYXRlKGJvb2wgcmVjb3JkTWV0cmljc0ZvckZyYW1lKSB7IHJldHVybiBhZG9wdFB0cihuZXcg
Q0NPdmVyZHJhd01ldHJpY3MocmVjb3JkTWV0cmljc0ZvckZyYW1lKSk7IH0KIAorICAgIC8vIFJl
Y29yZCBwaXhlbHMgaW52YWxpZGVkIGJ5IFdlYktpdCB0aGF0IHJlcXVpcmUgYmVpbmcgcGFpbnRl
ZCBhbmQgcmFzdGVyaXplZC4KKyAgICB2b2lkIGRpZEludmFsaWRhdGUoY29uc3QgSW50UmVjdCYg
aW52YWxpZGF0ZWRSZWN0KTsKKyAgICAvLyBSZWNvcmQgcGl4ZWxzIHBhaW50ZWQgYnkgV2ViS2l0
IGludG8gdGhlIHRleHR1cmUgdXBkYXRlciwgYnV0IGRvZXMgbm90IG1lYW4gdGhlIHBpeGVscyB3
ZXJlIHJhc3Rlcml6ZWQgaW4gbWFpbiBtZW1vcnkuCisgICAgdm9pZCBkaWRQYWludChjb25zdCBJ
bnRSZWN0JiBwYWludGVkUmVjdCk7CisKKyAgICAvLyBSZWNvcmQgcGl4ZWxzIHRoYXQgd2VyZSBu
b3QgdXBsb2FkZWQvZHJhd24gdG8gc2NyZWVuLgogICAgIHZvaWQgZGlkQ3VsbChjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtVG9UYXJnZXQsIGNvbnN0IEludFJlY3QmIGJlZm9y
ZUN1bGxSZWN0LCBjb25zdCBJbnRSZWN0JiBhZnRlckN1bGxSZWN0KTsKKyAgICAvLyBSZWNvcmQg
cGl4ZWxzIHRoYXQgd2VyZSB1cGxvYWRlZC9kcmF3biB0byBzY3JlZW4uCiAgICAgdm9pZCBkaWRE
cmF3KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm1Ub1RhcmdldCwgY29uc3Qg
SW50UmVjdCYgYWZ0ZXJDdWxsUmVjdCwgY29uc3QgSW50UmVjdCYgb3BhcXVlUmVjdCk7CiAKICAg
ICB2b2lkIHJlY29yZE1ldHJpY3MoY29uc3QgQ0NMYXllclRyZWVIb3N0KikgY29uc3Q7CkBAIC00
OCw2ICs1NSw4IEBAIHB1YmxpYzoKICAgICBmbG9hdCBwaXhlbHNEcmF3bk9wYXF1ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcGl4ZWxzRHJhd25PcGFxdWU7IH0KICAgICBmbG9hdCBwaXhlbHNEcmF3blRy
YW5zbHVjZW50KCkgY29uc3QgeyByZXR1cm4gbV9waXhlbHNEcmF3blRyYW5zbHVjZW50OyB9CiAg
ICAgZmxvYXQgcGl4ZWxzQ3VsbGVkKCkgY29uc3QgeyByZXR1cm4gbV9waXhlbHNDdWxsZWQ7IH0K
KyAgICBmbG9hdCBwaXhlbHNJbnZhbGlkYXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGl4ZWxzSW52
YWxpZGF0ZWQ7IH0KKyAgICBmbG9hdCBwaXhlbHNQYWludGVkKCkgY29uc3QgeyByZXR1cm4gbV9w
aXhlbHNQYWludGVkOyB9CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQ0NPdmVyZHJhd01ldHJp
Y3MoYm9vbCByZWNvcmRNZXRyaWNzRm9yRnJhbWUpOwpAQCAtNjksNiArNzgsMTAgQEAgcHJpdmF0
ZToKICAgICBmbG9hdCBtX3BpeGVsc0RyYXduVHJhbnNsdWNlbnQ7CiAgICAgLy8gQ291bnQgb2Yg
cGl4ZWxzIG5vdCBkcmF3biBhcyB0aGV5IGFyZSBvY2NsdWRlZCBieSBzb210aGluZyBvcGFxdWUu
CiAgICAgZmxvYXQgbV9waXhlbHNDdWxsZWQ7CisgICAgLy8gQ291bnQgb2YgcGl4ZWxzIHRoYXQg
d2VyZSBpbnZhbGlkYXRlZCBhbmQgbmVlZGVkIHRvIGJlIHBhaW50ZWQuCisgICAgZmxvYXQgbV9w
aXhlbHNJbnZhbGlkYXRlZDsKKyAgICAvLyBDb3VudCBvZiBwaXhlbHMgdGhhdCB3ZXJlIHBhaW50
ZWQgZHVlIHRvIGludmFsaWRhdGlvbi4KKyAgICBmbG9hdCBtX3BpeGVsc1BhaW50ZWQ7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcAppbmRleCA5NGY5ZWI0ZDhhMjY2
YjZhM2Y2M2Y3YmM5MDczMjI1Mjc0ZmE1YzFmLi45Y2Q1ZTI0MjYyYTBjYTMzNTU2ZWUzOTBkMGQ5
ZDczYjM3NDI3NzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1Rp
bGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKQEAgLTExMjUsNiArMTEyNSw4IEBAIFRFU1Qo
VGlsZWRMYXllckNocm9taXVtVGVzdCwgb3BhcXVlQ29udGVudHNSZWdpb24pCiAgICAgb3BhcXVl
Q29udGVudHMgPSBsYXllci0+b3BhcXVlQ29udGVudHNSZWdpb24oKTsKICAgICBFWFBFQ1RfVFJV
RShvcGFxdWVDb250ZW50cy5pc0VtcHR5KCkpOwogCisgICAgRVhQRUNUX05FQVIob2NjbHVkZWQu
b3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzSW52YWxpZGF0ZWQoKSwgMjAwMDAsIDEpOworICAgIEVY
UEVDVF9ORUFSKG9jY2x1ZGVkLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc1BhaW50ZWQoKSwgMjAw
MDAsIDEpOwogICAgIEVYUEVDVF9ORUFSKG9jY2x1ZGVkLm92ZXJkcmF3TWV0cmljcygpLnBpeGVs
c0RyYXduT3BhcXVlKCksIDAsIDEpOwogICAgIEVYUEVDVF9ORUFSKG9jY2x1ZGVkLm92ZXJkcmF3
TWV0cmljcygpLnBpeGVsc0RyYXduVHJhbnNsdWNlbnQoKSwgMjAwMDAsIDEpOwogICAgIEVYUEVD
VF9ORUFSKG9jY2x1ZGVkLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc0N1bGxlZCgpLCAwLCAxKTsK
QEAgLTExMzgsNiArMTE0MCw4IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgb3BhcXVl
Q29udGVudHNSZWdpb24pCiAgICAgRVhQRUNUX0VRX1JFQ1QoaW50ZXJzZWN0aW9uKG9wYXF1ZVBh
aW50UmVjdCwgdmlzaWJsZUJvdW5kcyksIG9wYXF1ZUNvbnRlbnRzLmJvdW5kcygpKTsKICAgICBF
WFBFQ1RfRVEoMXUsIG9wYXF1ZUNvbnRlbnRzLnJlY3RzKCkuc2l6ZSgpKTsKIAorICAgIEVYUEVD
VF9ORUFSKG9jY2x1ZGVkLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc0ludmFsaWRhdGVkKCksIDIw
MDAwICogMiwgMSk7CisgICAgRVhQRUNUX05FQVIob2NjbHVkZWQub3ZlcmRyYXdNZXRyaWNzKCku
cGl4ZWxzUGFpbnRlZCgpLCAyMDAwMCAqIDIsIDEpOwogICAgIEVYUEVDVF9ORUFSKG9jY2x1ZGVk
Lm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc0RyYXduT3BhcXVlKCksIDE3MTAwLCAxKTsKICAgICBF
WFBFQ1RfTkVBUihvY2NsdWRlZC5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNEcmF3blRyYW5zbHVj
ZW50KCksIDIwMDAwICsgMjAwMDAgLSAxNzEwMCwgMSk7CiAgICAgRVhQRUNUX05FQVIob2NjbHVk
ZWQub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzQ3VsbGVkKCksIDAsIDEpOwpAQCAtMTE0OSw2ICsx
MTUzLDggQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBvcGFxdWVDb250ZW50c1JlZ2lv
bikKICAgICBFWFBFQ1RfRVFfUkVDVChpbnRlcnNlY3Rpb24ob3BhcXVlUGFpbnRSZWN0LCB2aXNp
YmxlQm91bmRzKSwgb3BhcXVlQ29udGVudHMuYm91bmRzKCkpOwogICAgIEVYUEVDVF9FUSgxdSwg
b3BhcXVlQ29udGVudHMucmVjdHMoKS5zaXplKCkpOwogCisgICAgRVhQRUNUX05FQVIob2NjbHVk
ZWQub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzSW52YWxpZGF0ZWQoKSwgMjAwMDAgKiAyLCAxKTsK
KyAgICBFWFBFQ1RfTkVBUihvY2NsdWRlZC5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNQYWludGVk
KCksIDIwMDAwICogMiwgMSk7CiAgICAgRVhQRUNUX05FQVIob2NjbHVkZWQub3ZlcmRyYXdNZXRy
aWNzKCkucGl4ZWxzRHJhd25PcGFxdWUoKSwgMTcxMDAsIDEpOwogICAgIEVYUEVDVF9ORUFSKG9j
Y2x1ZGVkLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc0RyYXduVHJhbnNsdWNlbnQoKSwgMjAwMDAg
KyAyMDAwMCAtIDE3MTAwLCAxKTsKICAgICBFWFBFQ1RfTkVBUihvY2NsdWRlZC5vdmVyZHJhd01l
dHJpY3MoKS5waXhlbHNDdWxsZWQoKSwgMCwgMSk7CkBAIC0xMTYyLDYgKzExNjgsOCBAQCBURVNU
KFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIG9wYXF1ZUNvbnRlbnRzUmVnaW9uKQogICAgIEVYUEVD
VF9FUV9SRUNUKGludGVyc2VjdGlvbihvcGFxdWVQYWludFJlY3QsIHZpc2libGVCb3VuZHMpLCBv
cGFxdWVDb250ZW50cy5ib3VuZHMoKSk7CiAgICAgRVhQRUNUX0VRKDF1LCBvcGFxdWVDb250ZW50
cy5yZWN0cygpLnNpemUoKSk7CiAKKyAgICBFWFBFQ1RfTkVBUihvY2NsdWRlZC5vdmVyZHJhd01l
dHJpY3MoKS5waXhlbHNJbnZhbGlkYXRlZCgpLCAyMDAwMCAqIDIgKyAxLCAxKTsKKyAgICBFWFBF
Q1RfTkVBUihvY2NsdWRlZC5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNQYWludGVkKCksIDIwMDAw
ICogMiArIDEsIDEpOwogICAgIEVYUEVDVF9ORUFSKG9jY2x1ZGVkLm92ZXJkcmF3TWV0cmljcygp
LnBpeGVsc0RyYXduT3BhcXVlKCksIDE3MTAwLCAxKTsKICAgICBFWFBFQ1RfTkVBUihvY2NsdWRl
ZC5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNEcmF3blRyYW5zbHVjZW50KCksIDIwMDAwICsgMjAw
MDAgLSAxNzEwMCArIDEsIDEpOwogICAgIEVYUEVDVF9ORUFSKG9jY2x1ZGVkLm92ZXJkcmF3TWV0
cmljcygpLnBpeGVsc0N1bGxlZCgpLCAwLCAxKTsKQEAgLTExNzUsOSArMTE4Myw2MSBAQCBURVNU
KFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIG9wYXF1ZUNvbnRlbnRzUmVnaW9uKQogICAgIEVYUEVD
VF9FUV9SRUNUKGludGVyc2VjdGlvbihJbnRSZWN0KDEwLCAxMDAsIDkwLCAxMDApLCB2aXNpYmxl
Qm91bmRzKSwgb3BhcXVlQ29udGVudHMuYm91bmRzKCkpOwogICAgIEVYUEVDVF9FUSgxdSwgb3Bh
cXVlQ29udGVudHMucmVjdHMoKS5zaXplKCkpOwogCisgICAgRVhQRUNUX05FQVIob2NjbHVkZWQu
b3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzSW52YWxpZGF0ZWQoKSwgMjAwMDAgKiAyICsgMSArIDEs
IDEpOworICAgIEVYUEVDVF9ORUFSKG9jY2x1ZGVkLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc1Bh
aW50ZWQoKSwgMjAwMDAgKiAyICsgMSAgKyAxLCAxKTsKICAgICBFWFBFQ1RfTkVBUihvY2NsdWRl
ZC5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNEcmF3bk9wYXF1ZSgpLCAxNzEwMCwgMSk7CiAgICAg
RVhQRUNUX05FQVIob2NjbHVkZWQub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzRHJhd25UcmFuc2x1
Y2VudCgpLCAyMDAwMCArIDIwMDAwIC0gMTcxMDAgKyAxICsgMSwgMSk7CiAgICAgRVhQRUNUX05F
QVIob2NjbHVkZWQub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzQ3VsbGVkKCksIDAsIDEpOwogfQog
CitURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGludmFsaWRhdGVBbmRQYWludE1ldHJpY3Mp
Cit7CisgICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IFRleHR1cmVN
YW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDIqMTAyNCoxMDI0LCAxMDI0KTsKKyAgICBSZWZQ
dHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVk
TGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOworICAgIFRlc3RDQ09jY2x1c2lv
blRyYWNrZXIgb2NjbHVkZWQ7CisKKyAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAsIHNv
IHRoaXMgaW52YWxpZGF0ZXMgYW5kIHRoZW4gcGFpbnRzIHR3byB0aWxlcyBpbiB2YXJpb3VzIHdh
eXMuCisKKyAgICBJbnRSZWN0IG9wYXF1ZVBhaW50UmVjdDsKKyAgICBSZWdpb24gb3BhcXVlQ29u
dGVudHM7CisKKyAgICBJbnRSZWN0IGNvbnRlbnRCb3VuZHMgPSBJbnRSZWN0KDAsIDAsIDEwMCwg
MzAwKTsKKyAgICBJbnRSZWN0IHZpc2libGVCb3VuZHMgPSBJbnRSZWN0KDAsIDAsIDEwMCwgMzAw
KTsKKworICAgIGxheWVyLT5zZXRCb3VuZHMoY29udGVudEJvdW5kcy5zaXplKCkpOworICAgIGxh
eWVyLT5zZXREcmF3VHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4KDEsIDAsIDAsIDEsIGxh
eWVyLT5ib3VuZHMoKS53aWR0aCgpIC8gMi4wLCBsYXllci0+Ym91bmRzKCkuaGVpZ2h0KCkgLyAy
LjApKTsKKyAgICBsYXllci0+c2V0VmlzaWJsZUxheWVyUmVjdCh2aXNpYmxlQm91bmRzKTsKKyAg
ICBsYXllci0+c2V0RHJhd09wYWNpdHkoMSk7CisKKyAgICAvLyBJbnZhbGlkYXRlcyBhbmQgcGFp
bnRzIHRoZSB3aG9sZSBsYXllci4KKyAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIo
KS0+c2V0T3BhcXVlUGFpbnRSZWN0KEludFJlY3QoKSk7CisgICAgbGF5ZXItPmludmFsaWRhdGVS
ZWN0KGNvbnRlbnRCb3VuZHMpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJv
dW5kcywgJm9jY2x1ZGVkKTsKKyAgICBvcGFxdWVDb250ZW50cyA9IGxheWVyLT5vcGFxdWVDb250
ZW50c1JlZ2lvbigpOworICAgIEVYUEVDVF9UUlVFKG9wYXF1ZUNvbnRlbnRzLmlzRW1wdHkoKSk7
CisKKyAgICBFWFBFQ1RfTkVBUihvY2NsdWRlZC5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNJbnZh
bGlkYXRlZCgpLCAzMDAwMCwgMSk7CisgICAgRVhQRUNUX05FQVIob2NjbHVkZWQub3ZlcmRyYXdN
ZXRyaWNzKCkucGl4ZWxzUGFpbnRlZCgpLCAzMDAwMCwgMSk7CisgICAgRVhQRUNUX05FQVIob2Nj
bHVkZWQub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzRHJhd25PcGFxdWUoKSwgMCwgMSk7CisgICAg
RVhQRUNUX05FQVIob2NjbHVkZWQub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzRHJhd25UcmFuc2x1
Y2VudCgpLCAzMDAwMCwgMSk7CisgICAgRVhQRUNUX05FQVIob2NjbHVkZWQub3ZlcmRyYXdNZXRy
aWNzKCkucGl4ZWxzQ3VsbGVkKCksIDAsIDEpOworCisgICAgLy8gSW52YWxpZGF0ZXMgYW4gYXJl
YSBvbiB0aGUgdG9wIGFuZCBib3R0b20gdGlsZSwgd2hpY2ggd2lsbCBjYXVzZSB1cyB0byBwYWlu
dCB0aGUgdGlsZSBpbiB0aGUgbWlkZGxlLAorICAgIC8vIGV2ZW4gdGhvdWdoIGl0IGlzIG5vdCBk
aXJ0eSBhbmQgd2lsbCBub3QgYmUgdXBsb2FkZWQuCisgICAgbGF5ZXItPmZha2VMYXllclRleHR1
cmVVcGRhdGVyKCktPnNldE9wYXF1ZVBhaW50UmVjdChJbnRSZWN0KCkpOworICAgIGxheWVyLT5p
bnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDEsIDEpKTsKKyAgICBsYXllci0+aW52YWxpZGF0
ZVJlY3QoSW50UmVjdCg1MCwgMjAwLCAxMCwgMTApKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBk
YXRlKGNvbnRlbnRCb3VuZHMsICZvY2NsdWRlZCk7CisgICAgb3BhcXVlQ29udGVudHMgPSBsYXll
ci0+b3BhcXVlQ29udGVudHNSZWdpb24oKTsKKyAgICBFWFBFQ1RfVFJVRShvcGFxdWVDb250ZW50
cy5pc0VtcHR5KCkpOworCisgICAgLy8gVGhlIG1pZGRsZSB0aWxlIHdhcyBwYWludGVkIGV2ZW4g
dGhvdWdoIG5vdCBpbnZhbGlkYXRlZC4KKyAgICBFWFBFQ1RfTkVBUihvY2NsdWRlZC5vdmVyZHJh
d01ldHJpY3MoKS5waXhlbHNJbnZhbGlkYXRlZCgpLCAzMDAwMCArIDEgKyAxMDAsIDEpOworICAg
IEVYUEVDVF9ORUFSKG9jY2x1ZGVkLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc1BhaW50ZWQoKSwg
MzAwMDAgKyA2MCAqIDIxMCwgMSk7CisgICAgLy8gVGhlIHBpeGVscyB1cGxvYWRlZCB3aWxsIG5v
dCBpbmNsdWRlIHRoZSBub24taW52YWxpZGF0ZWQgdGlsZSBpbiB0aGUgbWlkZGxlLgorICAgIEVY
UEVDVF9ORUFSKG9jY2x1ZGVkLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc0RyYXduT3BhcXVlKCks
IDAsIDEpOworICAgIEVYUEVDVF9ORUFSKG9jY2x1ZGVkLm92ZXJkcmF3TWV0cmljcygpLnBpeGVs
c0RyYXduVHJhbnNsdWNlbnQoKSwgMzAwMDAgKyAxICsgMTAwLCAxKTsKKyAgICBFWFBFQ1RfTkVB
UihvY2NsdWRlZC5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNDdWxsZWQoKSwgMCwgMSk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133553</attachid>
            <date>2012-03-23 14:01:36 -0700</date>
            <delta_ts>2012-03-23 15:09:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82057-20120323170135.patch</filename>
            <type>text/plain</type>
            <size>13807</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExODkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2I1MzI3Yjk4ZmQ0MzFh
ZjFmODE1MzUxZTEyMjllYmU5YmUxOTc4NS4uNDU3YTk4N2JhZTExNjE5ZmFjNTY2OWQ1NTA3MGJh
ZTA3YWEzZmY2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTAzLTIzICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gUmVj
b3JkIHBhaW50ZWQgcGl4ZWwgY291bnRzIGZvciBtZWFzdXJpbmcgZWZmZWN0aXZlbmVzcyBvZiBw
ZXItdGlsZSBwYWludGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODIwNTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGRzIHBhaW50ZWQgcGl4ZWwgbWV0cmljcyB0byBDQ092ZXJkcmF3TWV0cmljcyBj
bGFzcywgYW5kIGNhbGxzIGluCisgICAgICAgIHRvIHJlcG9ydCBwYWludGVkIGFyZWFzIHdoZW4g
dXBkYXRpbmcgdGlsZXMgaW4gdGhlIFRpbGVkTGF5ZXJDaHJvbWl1bQorICAgICAgICBjbGFzcy4K
KworICAgICAgICBVbml0IHRlc3Q6IFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3Qub3BhcXVlQ29udGVu
dHNSZWdpb24KKyAgICAgICAgICAgICAgICAgICBUaWxlZExheWVyQ2hyb21pdW1UZXN0LnBpeGVs
c1BhaW50ZWRNZXRyaWNzCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9U
aWxlZExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9t
aXVtOjpwcmVwYXJlVG9VcGRhdGVUaWxlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NPdmVyZHJhd01ldHJpY3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NP
dmVyZHJhd01ldHJpY3M6OkNDT3ZlcmRyYXdNZXRyaWNzKToKKyAgICAgICAgKFdlYkNvcmU6OkND
T3ZlcmRyYXdNZXRyaWNzOjpkaWRQYWludCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDT3ZlcmRyYXdNZXRyaWNzOjpyZWNvcmRNZXRyaWNzSW50ZXJuYWwpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT3ZlcmRyYXdNZXRyaWNzLmg6
CisgICAgICAgIChDQ092ZXJkcmF3TWV0cmljcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ092ZXJk
cmF3TWV0cmljczo6cGl4ZWxzUGFpbnRlZCk6CisKIDIwMTItMDMtMjMgIERhdmUgTWljaGFlbCAg
PGRtaWNoYWVsQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZWxhbmRpbmcocjExMTc1NCk6IEhU
TUxQbHVnaW5FbGVtZW50IGlzIG5vdCBkZXN0cm95ZWQgb24gcmVsb2FkIG9yIG5hdmlnYXRpb24g
aWYgZ2V0TlBPYmplY3QgaXMgY2FsbGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDky
NTY3YWM5MWY3OTc4ZTE5ZjIwZDIxYTEwZmUzMzgyYTkxYzk5ZGMuLjY0ZTRiOGQ0OGE5MTVlNWVi
MjUxMTkzYWVhZmQ3ZjgyZjZiOGY0MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTQgQEAKKzIwMTItMDMtMjMgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBSZWNvcmQgcGFpbnRlZCBwaXhlbCBjb3VudHMgZm9y
IG1lYXN1cmluZyBlZmZlY3RpdmVuZXNzIG9mIHBlci10aWxlIHBhaW50aW5nCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjA1NworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogdGVzdHMvVGlsZWRMYXllckNo
cm9taXVtVGVzdC5jcHA6CisgICAgICAgIChXVEY6OlRFU1QpOgorICAgICAgICAoV1RGKToKKwog
MjAxMi0wMy0yMyAgQWRyaWVubmUgV2Fsa2VyICA8ZW5uZUBnb29nbGUuY29tPgogCiAgICAgICAg
IFtjaHJvbWl1bV0gRml4IHNjcm9sbGJhckxheWVyTG9zdENvbnRleHQgZmxha3kgdGVzdCBjcmFz
aCBvbiAxMC42CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcAppbmRleCAwODk0NGQxNTA4
MGYwMTk5NWQxM2U0N2MwOTYwMjY4Njc4ZDEwNGFlLi41ODEwMjJlMzQ5NTU1MzUwZTJjMDliNjQx
ODA4ZjI5ZWVmNDNjODFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTQ3
NSw2ICs0NzUsOSBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlVGls
ZXMoYm9vbCBpZGxlLCBpbnQgbGVmdCwgaW50IHRvcCwgaW50CiAgICAgaWYgKGRpcnR5TGF5ZXJS
ZWN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKG9jY2x1c2lvbikKKyAg
ICAgICAgb2NjbHVzaW9uLT5vdmVyZHJhd01ldHJpY3MoKS5kaWRQYWludChtX3BhaW50UmVjdCk7
CisKICAgICAvLyBEdWUgdG8gYm9yZGVycywgd2hlbiB0aGUgcGFpbnQgcmVjdCBpcyBleHRlbmRl
ZCB0byB0aWxlIGJvdW5kYXJpZXMsIGl0CiAgICAgLy8gbWF5IGVuZCB1cCBvdmVybGFwcGluZyBt
b3JlIHRpbGVzIHRoYW4gdGhlIG9yaWdpbmFsIGNvbnRlbnQgcmVjdC4gUmVjb3JkCiAgICAgLy8g
dGhlIG9yaWdpbmFsIHRpbGVzIHNvIHdlIGRvbid0IHVwbG9hZCBtb3JlIHRpbGVzIHRoYW4gbmVj
ZXNzYXJ5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NPdmVyZHJhd01ldHJpY3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPdmVyZHJhd01ldHJpY3MuY3BwCmluZGV4IDg4NWMzYjAz
NGZkY2ExYTQ5OTBiZjliMWFkMjA0OTA5NzliNzQ2YWUuLjI0MTM3YTA3MjdlMGM2YThjMjg1N2Qw
ZDE5ZmM2YzdmMDUyMTBiOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDT3ZlcmRyYXdNZXRyaWNzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ092ZXJkcmF3TWV0cmljcy5jcHAK
QEAgLTQyLDYgKzQyLDcgQEAgQ0NPdmVyZHJhd01ldHJpY3M6OkNDT3ZlcmRyYXdNZXRyaWNzKGJv
b2wgcmVjb3JkTWV0cmljc0ZvckZyYW1lKQogICAgICwgbV9waXhlbHNEcmF3bk9wYXF1ZSgwKQog
ICAgICwgbV9waXhlbHNEcmF3blRyYW5zbHVjZW50KDApCiAgICAgLCBtX3BpeGVsc0N1bGxlZCgw
KQorICAgICwgbV9waXhlbHNQYWludGVkKDApCiB7CiB9CiAKQEAgLTU5LDYgKzYwLDE0IEBAIHN0
YXRpYyBpbmxpbmUgZmxvYXQgcXVhZEFyZWEoY29uc3QgRmxvYXRRdWFkJiBxdWFkKQogICAgICAg
ICAgICAgICAgICAgICAgICB3ZWRnZVByb2R1Y3QocXVhZC5wNCgpLCBxdWFkLnAxKCkpKSk7CiB9
CiAKK3ZvaWQgQ0NPdmVyZHJhd01ldHJpY3M6OmRpZFBhaW50KGNvbnN0IEludFJlY3QmIHBhaW50
ZWRSZWN0KQoreworICAgIGlmICghbV9yZWNvcmRNZXRyaWNzRm9yRnJhbWUpCisgICAgICAgIHJl
dHVybjsKKworICAgIG1fcGl4ZWxzUGFpbnRlZCArPSBzdGF0aWNfY2FzdDxmbG9hdD4ocGFpbnRl
ZFJlY3Qud2lkdGgoKSkgKiBwYWludGVkUmVjdC5oZWlnaHQoKTsKK30KKwogdm9pZCBDQ092ZXJk
cmF3TWV0cmljczo6ZGlkQ3VsbChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3Jt
VG9UYXJnZXQsIGNvbnN0IEludFJlY3QmIGJlZm9yZUN1bGxSZWN0LCBjb25zdCBJbnRSZWN0JiBh
ZnRlckN1bGxSZWN0KQogewogICAgIGlmICghbV9yZWNvcmRNZXRyaWNzRm9yRnJhbWUpCkBAIC0x
MDAsOSArMTA5LDExIEBAIHZvaWQgQ0NPdmVyZHJhd01ldHJpY3M6OnJlY29yZE1ldHJpY3NJbnRl
cm5hbChNZXRyaWNzVHlwZSBtZXRyaWNzVHlwZSwgY29uc3QgTGF5CiAgICAgY29uc3QgY2hhciog
aGlzdG9ncmFtT3BhcXVlTmFtZSA9IDA7CiAgICAgY29uc3QgY2hhciogaGlzdG9ncmFtVHJhbnNs
dWNlbnROYW1lID0gMDsKICAgICBjb25zdCBjaGFyKiBoaXN0b2dyYW1DdWxsZWROYW1lID0gMDsK
KyAgICBjb25zdCBjaGFyKiBoaXN0b2dyYW1QYWludGVkTmFtZSA9IDA7CiAgICAgY29uc3QgY2hh
ciogY3VsbENvdW50ZXJOYW1lID0gMDsKICAgICBjb25zdCBjaGFyKiBvcGFxdWVDb3VudGVyTmFt
ZSA9IDA7CiAgICAgY29uc3QgY2hhciogdHJhbnNsdWNlbnRDb3VudGVyTmFtZSA9IDA7CisgICAg
Y29uc3QgY2hhciAqcGFpbnRlZENvdW50ZXJOYW1lID0gMDsKICAgICBzd2l0Y2ggKG1ldHJpY3NU
eXBlKSB7CiAgICAgY2FzZSBEUkFXSU5HOgogICAgICAgICBoaXN0b2dyYW1PcGFxdWVOYW1lID0g
IlJlbmRlcmVyNC5kcmF3UGl4ZWxDb3VudE9wYXF1ZSI7CkBAIC0xMTYsOSArMTI3LDExIEBAIHZv
aWQgQ0NPdmVyZHJhd01ldHJpY3M6OnJlY29yZE1ldHJpY3NJbnRlcm5hbChNZXRyaWNzVHlwZSBt
ZXRyaWNzVHlwZSwgY29uc3QgTGF5CiAgICAgICAgIGhpc3RvZ3JhbU9wYXF1ZU5hbWUgPSAiUmVu
ZGVyZXI0LnVwbG9hZFBpeGVsQ291bnRPcGFxdWUiOwogICAgICAgICBoaXN0b2dyYW1UcmFuc2x1
Y2VudE5hbWUgPSAiUmVuZGVyZXI0LnVwbG9hZFBpeGVsQ291bnRUcmFuc2x1Y2VudCI7CiAgICAg
ICAgIGhpc3RvZ3JhbUN1bGxlZE5hbWUgPSAiUmVuZGVyZXI0LnVwbG9hZFBpeGVsQ291bnRDdWxs
ZWQiOworICAgICAgICBoaXN0b2dyYW1QYWludGVkTmFtZSA9ICJSZW5kZXJlcjQucGl4ZWxDb3Vu
dFBhaW50ZWQiOwogICAgICAgICBjdWxsQ291bnRlck5hbWUgPSAiVXBsb2FkUGl4ZWxzQ3VsbGVk
IjsKICAgICAgICAgb3BhcXVlQ291bnRlck5hbWUgPSAiUGl4ZWxzVXBsb2FkZWRPcGFxdWUiOwog
ICAgICAgICB0cmFuc2x1Y2VudENvdW50ZXJOYW1lID0gIlBpeGVsc1VwbG9hZGVkVHJhbnNsdWNl
bnQiOworICAgICAgICBwYWludGVkQ291bnRlck5hbWUgPSAiUGl4ZWxzUGFpbnRlZCI7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KICAgICBBU1NFUlQoaGlzdG9ncmFtT3BhcXVlTmFtZSk7CkBAIC0x
MjcsOSArMTQwLDE1IEBAIHZvaWQgQ0NPdmVyZHJhd01ldHJpY3M6OnJlY29yZE1ldHJpY3NJbnRl
cm5hbChNZXRyaWNzVHlwZSBtZXRyaWNzVHlwZSwgY29uc3QgTGF5CiAgICAgUGxhdGZvcm1TdXBw
b3J0OjpoaXN0b2dyYW1DdXN0b21Db3VudHMoaGlzdG9ncmFtT3BhcXVlTmFtZSwgc3RhdGljX2Nh
c3Q8aW50Pihub3JtYWxpemF0aW9uICogbV9waXhlbHNEcmF3bk9wYXF1ZSksIDEwMCwgMTAwMDAw
MCwgNTApOwogICAgIFBsYXRmb3JtU3VwcG9ydDo6aGlzdG9ncmFtQ3VzdG9tQ291bnRzKGhpc3Rv
Z3JhbVRyYW5zbHVjZW50TmFtZSwgc3RhdGljX2Nhc3Q8aW50Pihub3JtYWxpemF0aW9uICogbV9w
aXhlbHNEcmF3blRyYW5zbHVjZW50KSwgMTAwLCAxMDAwMDAwLCA1MCk7CiAgICAgUGxhdGZvcm1T
dXBwb3J0OjpoaXN0b2dyYW1DdXN0b21Db3VudHMoaGlzdG9ncmFtQ3VsbGVkTmFtZSwgc3RhdGlj
X2Nhc3Q8aW50Pihub3JtYWxpemF0aW9uICogbV9waXhlbHNDdWxsZWQpLCAxMDAsIDEwMDAwMDAs
IDUwKTsKKyAgICBpZiAocGFpbnRlZENvdW50ZXJOYW1lKQorICAgICAgICBQbGF0Zm9ybVN1cHBv
cnQ6Omhpc3RvZ3JhbUN1c3RvbUNvdW50cyhoaXN0b2dyYW1QYWludGVkTmFtZSwgc3RhdGljX2Nh
c3Q8aW50Pihub3JtYWxpemF0aW9uICogbV9waXhlbHNQYWludGVkKSwgMTAwLCAxMDAwMDAwLCA1
MCk7CiAKICAgICBUUkFDRV9DT1VOVEVSX0lEMSgid2Via2l0IiwgY3VsbENvdW50ZXJOYW1lLCBs
YXllclRyZWVIb3N0LCBtX3BpeGVsc0N1bGxlZCk7CiAgICAgVFJBQ0VfRVZFTlQyKCJ3ZWJraXQi
LCAiQ0NPdmVyZHJhd01ldHJpY3MiLCBvcGFxdWVDb3VudGVyTmFtZSwgbV9waXhlbHNEcmF3bk9w
YXF1ZSwgdHJhbnNsdWNlbnRDb3VudGVyTmFtZSwgbV9waXhlbHNEcmF3blRyYW5zbHVjZW50KTsK
KyAgICBpZiAocGFpbnRlZENvdW50ZXJOYW1lKSB7CisgICAgICAgIC8vIFRoaXMgbXVzdCBiZSBp
biBhIGRpZmZlcmVudCBzY29wZSB0aGFuIHRoZSBUUkFDRV9FVkVOVDIgYWJvdmUuCisgICAgICAg
IFRSQUNFX0VWRU5UMSgid2Via2l0IiwgIkNDT3ZlcmRyYXdQYWludE1ldHJpY3MiLCBwYWludGVk
Q291bnRlck5hbWUsIG1fcGl4ZWxzUGFpbnRlZCk7CisgICAgfQogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ092ZXJkcmF3TWV0cmljcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPdmVyZHJhd01ldHJpY3MuaAppbmRleCBlMjI0YzdkY2Nk
MmI3ZTc0YTQyYjJmMjRiMzgzNDdmMGUzMmZmM2Q3Li5mODFkMzQ0MTA1NjRhZTA3ODRhNGE2ZjBl
ZWFkZjE4ZmM1ZTIyM2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ092ZXJkcmF3TWV0cmljcy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT3ZlcmRyYXdNZXRyaWNzLmgKQEAgLTM4
LDcgKzM4LDEyIEBAIGNsYXNzIENDT3ZlcmRyYXdNZXRyaWNzIHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgUGFzc093blB0cjxDQ092ZXJkcmF3TWV0cmljcz4gY3JlYXRlKGJvb2wgcmVjb3JkTWV0cmlj
c0ZvckZyYW1lKSB7IHJldHVybiBhZG9wdFB0cihuZXcgQ0NPdmVyZHJhd01ldHJpY3MocmVjb3Jk
TWV0cmljc0ZvckZyYW1lKSk7IH0KIAorICAgIC8vIFJlY29yZCBwaXhlbHMgcGFpbnRlZCBieSBX
ZWJLaXQgaW50byB0aGUgdGV4dHVyZSB1cGRhdGVyLCBidXQgZG9lcyBub3QgbWVhbiB0aGUgcGl4
ZWxzIHdlcmUgcmFzdGVyaXplZCBpbiBtYWluIG1lbW9yeS4KKyAgICB2b2lkIGRpZFBhaW50KGNv
bnN0IEludFJlY3QmIHBhaW50ZWRSZWN0KTsKKworICAgIC8vIFJlY29yZCBwaXhlbHMgdGhhdCB3
ZXJlIG5vdCB1cGxvYWRlZC9kcmF3biB0byBzY3JlZW4uCiAgICAgdm9pZCBkaWRDdWxsKGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm1Ub1RhcmdldCwgY29uc3QgSW50UmVjdCYg
YmVmb3JlQ3VsbFJlY3QsIGNvbnN0IEludFJlY3QmIGFmdGVyQ3VsbFJlY3QpOworICAgIC8vIFJl
Y29yZCBwaXhlbHMgdGhhdCB3ZXJlIHVwbG9hZGVkL2RyYXduIHRvIHNjcmVlbi4KICAgICB2b2lk
IGRpZERyYXcoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybVRvVGFyZ2V0LCBj
b25zdCBJbnRSZWN0JiBhZnRlckN1bGxSZWN0LCBjb25zdCBJbnRSZWN0JiBvcGFxdWVSZWN0KTsK
IAogICAgIHZvaWQgcmVjb3JkTWV0cmljcyhjb25zdCBDQ0xheWVyVHJlZUhvc3QqKSBjb25zdDsK
QEAgLTQ4LDYgKzUzLDcgQEAgcHVibGljOgogICAgIGZsb2F0IHBpeGVsc0RyYXduT3BhcXVlKCkg
Y29uc3QgeyByZXR1cm4gbV9waXhlbHNEcmF3bk9wYXF1ZTsgfQogICAgIGZsb2F0IHBpeGVsc0Ry
YXduVHJhbnNsdWNlbnQoKSBjb25zdCB7IHJldHVybiBtX3BpeGVsc0RyYXduVHJhbnNsdWNlbnQ7
IH0KICAgICBmbG9hdCBwaXhlbHNDdWxsZWQoKSBjb25zdCB7IHJldHVybiBtX3BpeGVsc0N1bGxl
ZDsgfQorICAgIGZsb2F0IHBpeGVsc1BhaW50ZWQoKSBjb25zdCB7IHJldHVybiBtX3BpeGVsc1Bh
aW50ZWQ7IH0KIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBDQ092ZXJkcmF3TWV0cmljcyhib29s
IHJlY29yZE1ldHJpY3NGb3JGcmFtZSk7CkBAIC02OSw2ICs3NSw4IEBAIHByaXZhdGU6CiAgICAg
ZmxvYXQgbV9waXhlbHNEcmF3blRyYW5zbHVjZW50OwogICAgIC8vIENvdW50IG9mIHBpeGVscyBu
b3QgZHJhd24gYXMgdGhleSBhcmUgb2NjbHVkZWQgYnkgc29tdGhpbmcgb3BhcXVlLgogICAgIGZs
b2F0IG1fcGl4ZWxzQ3VsbGVkOworICAgIC8vIENvdW50IG9mIHBpeGVscyB0aGF0IHdlcmUgcGFp
bnRlZCBkdWUgdG8gaW52YWxpZGF0aW9uLgorICAgIGZsb2F0IG1fcGl4ZWxzUGFpbnRlZDsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4IDk0ZjllYjRkOGEy
NjZiNmEzZjYzZjdiYzkwNzMyMjUyNzRmYTVjMWYuLjI1ZTc2MWI1NzI3MjRmNDQ3NzUzMDQwOGIz
MDRmNzQ0YjJkYWQwNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
VGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcApAQCAtMTEyNSw2ICsxMTI1LDcgQEAgVEVT
VChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBvcGFxdWVDb250ZW50c1JlZ2lvbikKICAgICBvcGFx
dWVDb250ZW50cyA9IGxheWVyLT5vcGFxdWVDb250ZW50c1JlZ2lvbigpOwogICAgIEVYUEVDVF9U
UlVFKG9wYXF1ZUNvbnRlbnRzLmlzRW1wdHkoKSk7CiAKKyAgICBFWFBFQ1RfTkVBUihvY2NsdWRl
ZC5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNQYWludGVkKCksIDIwMDAwLCAxKTsKICAgICBFWFBF
Q1RfTkVBUihvY2NsdWRlZC5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNEcmF3bk9wYXF1ZSgpLCAw
LCAxKTsKICAgICBFWFBFQ1RfTkVBUihvY2NsdWRlZC5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNE
cmF3blRyYW5zbHVjZW50KCksIDIwMDAwLCAxKTsKICAgICBFWFBFQ1RfTkVBUihvY2NsdWRlZC5v
dmVyZHJhd01ldHJpY3MoKS5waXhlbHNDdWxsZWQoKSwgMCwgMSk7CkBAIC0xMTM4LDYgKzExMzks
NyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIG9wYXF1ZUNvbnRlbnRzUmVnaW9uKQog
ICAgIEVYUEVDVF9FUV9SRUNUKGludGVyc2VjdGlvbihvcGFxdWVQYWludFJlY3QsIHZpc2libGVC
b3VuZHMpLCBvcGFxdWVDb250ZW50cy5ib3VuZHMoKSk7CiAgICAgRVhQRUNUX0VRKDF1LCBvcGFx
dWVDb250ZW50cy5yZWN0cygpLnNpemUoKSk7CiAKKyAgICBFWFBFQ1RfTkVBUihvY2NsdWRlZC5v
dmVyZHJhd01ldHJpY3MoKS5waXhlbHNQYWludGVkKCksIDIwMDAwICogMiwgMSk7CiAgICAgRVhQ
RUNUX05FQVIob2NjbHVkZWQub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzRHJhd25PcGFxdWUoKSwg
MTcxMDAsIDEpOwogICAgIEVYUEVDVF9ORUFSKG9jY2x1ZGVkLm92ZXJkcmF3TWV0cmljcygpLnBp
eGVsc0RyYXduVHJhbnNsdWNlbnQoKSwgMjAwMDAgKyAyMDAwMCAtIDE3MTAwLCAxKTsKICAgICBF
WFBFQ1RfTkVBUihvY2NsdWRlZC5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNDdWxsZWQoKSwgMCwg
MSk7CkBAIC0xMTQ5LDYgKzExNTEsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIG9w
YXF1ZUNvbnRlbnRzUmVnaW9uKQogICAgIEVYUEVDVF9FUV9SRUNUKGludGVyc2VjdGlvbihvcGFx
dWVQYWludFJlY3QsIHZpc2libGVCb3VuZHMpLCBvcGFxdWVDb250ZW50cy5ib3VuZHMoKSk7CiAg
ICAgRVhQRUNUX0VRKDF1LCBvcGFxdWVDb250ZW50cy5yZWN0cygpLnNpemUoKSk7CiAKKyAgICBF
WFBFQ1RfTkVBUihvY2NsdWRlZC5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNQYWludGVkKCksIDIw
MDAwICogMiwgMSk7CiAgICAgRVhQRUNUX05FQVIob2NjbHVkZWQub3ZlcmRyYXdNZXRyaWNzKCku
cGl4ZWxzRHJhd25PcGFxdWUoKSwgMTcxMDAsIDEpOwogICAgIEVYUEVDVF9ORUFSKG9jY2x1ZGVk
Lm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc0RyYXduVHJhbnNsdWNlbnQoKSwgMjAwMDAgKyAyMDAw
MCAtIDE3MTAwLCAxKTsKICAgICBFWFBFQ1RfTkVBUihvY2NsdWRlZC5vdmVyZHJhd01ldHJpY3Mo
KS5waXhlbHNDdWxsZWQoKSwgMCwgMSk7CkBAIC0xMTYyLDYgKzExNjUsNyBAQCBURVNUKFRpbGVk
TGF5ZXJDaHJvbWl1bVRlc3QsIG9wYXF1ZUNvbnRlbnRzUmVnaW9uKQogICAgIEVYUEVDVF9FUV9S
RUNUKGludGVyc2VjdGlvbihvcGFxdWVQYWludFJlY3QsIHZpc2libGVCb3VuZHMpLCBvcGFxdWVD
b250ZW50cy5ib3VuZHMoKSk7CiAgICAgRVhQRUNUX0VRKDF1LCBvcGFxdWVDb250ZW50cy5yZWN0
cygpLnNpemUoKSk7CiAKKyAgICBFWFBFQ1RfTkVBUihvY2NsdWRlZC5vdmVyZHJhd01ldHJpY3Mo
KS5waXhlbHNQYWludGVkKCksIDIwMDAwICogMiArIDEsIDEpOwogICAgIEVYUEVDVF9ORUFSKG9j
Y2x1ZGVkLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc0RyYXduT3BhcXVlKCksIDE3MTAwLCAxKTsK
ICAgICBFWFBFQ1RfTkVBUihvY2NsdWRlZC5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNEcmF3blRy
YW5zbHVjZW50KCksIDIwMDAwICsgMjAwMDAgLSAxNzEwMCArIDEsIDEpOwogICAgIEVYUEVDVF9O
RUFSKG9jY2x1ZGVkLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc0N1bGxlZCgpLCAwLCAxKTsKQEAg
LTExNzUsOSArMTE3OSw1OCBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIG9wYXF1ZUNv
bnRlbnRzUmVnaW9uKQogICAgIEVYUEVDVF9FUV9SRUNUKGludGVyc2VjdGlvbihJbnRSZWN0KDEw
LCAxMDAsIDkwLCAxMDApLCB2aXNpYmxlQm91bmRzKSwgb3BhcXVlQ29udGVudHMuYm91bmRzKCkp
OwogICAgIEVYUEVDVF9FUSgxdSwgb3BhcXVlQ29udGVudHMucmVjdHMoKS5zaXplKCkpOwogCisg
ICAgRVhQRUNUX05FQVIob2NjbHVkZWQub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzUGFpbnRlZCgp
LCAyMDAwMCAqIDIgKyAxICArIDEsIDEpOwogICAgIEVYUEVDVF9ORUFSKG9jY2x1ZGVkLm92ZXJk
cmF3TWV0cmljcygpLnBpeGVsc0RyYXduT3BhcXVlKCksIDE3MTAwLCAxKTsKICAgICBFWFBFQ1Rf
TkVBUihvY2NsdWRlZC5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNEcmF3blRyYW5zbHVjZW50KCks
IDIwMDAwICsgMjAwMDAgLSAxNzEwMCArIDEgKyAxLCAxKTsKICAgICBFWFBFQ1RfTkVBUihvY2Ns
dWRlZC5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNDdWxsZWQoKSwgMCwgMSk7CiB9CiAKK1RFU1Qo
VGlsZWRMYXllckNocm9taXVtVGVzdCwgcGl4ZWxzUGFpbnRlZE1ldHJpY3MpCit7CisgICAgT3du
UHRyPFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVh
dGUoNCoxMDI0KjEwMjQsIDIqMTAyNCoxMDI0LCAxMDI0KTsKKyAgICBSZWZQdHI8RmFrZVRpbGVk
TGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1
bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOworICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgb2Nj
bHVkZWQ7CisKKyAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAsIHNvIHRoaXMgaW52YWxp
ZGF0ZXMgYW5kIHRoZW4gcGFpbnRzIHR3byB0aWxlcyBpbiB2YXJpb3VzIHdheXMuCisKKyAgICBJ
bnRSZWN0IG9wYXF1ZVBhaW50UmVjdDsKKyAgICBSZWdpb24gb3BhcXVlQ29udGVudHM7CisKKyAg
ICBJbnRSZWN0IGNvbnRlbnRCb3VuZHMgPSBJbnRSZWN0KDAsIDAsIDEwMCwgMzAwKTsKKyAgICBJ
bnRSZWN0IHZpc2libGVCb3VuZHMgPSBJbnRSZWN0KDAsIDAsIDEwMCwgMzAwKTsKKworICAgIGxh
eWVyLT5zZXRCb3VuZHMoY29udGVudEJvdW5kcy5zaXplKCkpOworICAgIGxheWVyLT5zZXREcmF3
VHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4KDEsIDAsIDAsIDEsIGxheWVyLT5ib3VuZHMo
KS53aWR0aCgpIC8gMi4wLCBsYXllci0+Ym91bmRzKCkuaGVpZ2h0KCkgLyAyLjApKTsKKyAgICBs
YXllci0+c2V0VmlzaWJsZUxheWVyUmVjdCh2aXNpYmxlQm91bmRzKTsKKyAgICBsYXllci0+c2V0
RHJhd09wYWNpdHkoMSk7CisKKyAgICAvLyBJbnZhbGlkYXRlcyBhbmQgcGFpbnRzIHRoZSB3aG9s
ZSBsYXllci4KKyAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+c2V0T3BhcXVl
UGFpbnRSZWN0KEludFJlY3QoKSk7CisgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KGNvbnRlbnRC
b3VuZHMpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5kcywgJm9jY2x1
ZGVkKTsKKyAgICBvcGFxdWVDb250ZW50cyA9IGxheWVyLT5vcGFxdWVDb250ZW50c1JlZ2lvbigp
OworICAgIEVYUEVDVF9UUlVFKG9wYXF1ZUNvbnRlbnRzLmlzRW1wdHkoKSk7CisKKyAgICBFWFBF
Q1RfTkVBUihvY2NsdWRlZC5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNQYWludGVkKCksIDMwMDAw
LCAxKTsKKyAgICBFWFBFQ1RfTkVBUihvY2NsdWRlZC5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNE
cmF3bk9wYXF1ZSgpLCAwLCAxKTsKKyAgICBFWFBFQ1RfTkVBUihvY2NsdWRlZC5vdmVyZHJhd01l
dHJpY3MoKS5waXhlbHNEcmF3blRyYW5zbHVjZW50KCksIDMwMDAwLCAxKTsKKyAgICBFWFBFQ1Rf
TkVBUihvY2NsdWRlZC5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNDdWxsZWQoKSwgMCwgMSk7CisK
KyAgICAvLyBJbnZhbGlkYXRlcyBhbiBhcmVhIG9uIHRoZSB0b3AgYW5kIGJvdHRvbSB0aWxlLCB3
aGljaCB3aWxsIGNhdXNlIHVzIHRvIHBhaW50IHRoZSB0aWxlIGluIHRoZSBtaWRkbGUsCisgICAg
Ly8gZXZlbiB0aG91Z2ggaXQgaXMgbm90IGRpcnR5IGFuZCB3aWxsIG5vdCBiZSB1cGxvYWRlZC4K
KyAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+c2V0T3BhcXVlUGFpbnRSZWN0
KEludFJlY3QoKSk7CisgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgMSwg
MSkpOworICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDUwLCAyMDAsIDEwLCAxMCkp
OworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5kcywgJm9jY2x1ZGVkKTsK
KyAgICBvcGFxdWVDb250ZW50cyA9IGxheWVyLT5vcGFxdWVDb250ZW50c1JlZ2lvbigpOworICAg
IEVYUEVDVF9UUlVFKG9wYXF1ZUNvbnRlbnRzLmlzRW1wdHkoKSk7CisKKyAgICAvLyBUaGUgbWlk
ZGxlIHRpbGUgd2FzIHBhaW50ZWQgZXZlbiB0aG91Z2ggbm90IGludmFsaWRhdGVkLgorICAgIEVY
UEVDVF9ORUFSKG9jY2x1ZGVkLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc1BhaW50ZWQoKSwgMzAw
MDAgKyA2MCAqIDIxMCwgMSk7CisgICAgLy8gVGhlIHBpeGVscyB1cGxvYWRlZCB3aWxsIG5vdCBp
bmNsdWRlIHRoZSBub24taW52YWxpZGF0ZWQgdGlsZSBpbiB0aGUgbWlkZGxlLgorICAgIEVYUEVD
VF9ORUFSKG9jY2x1ZGVkLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc0RyYXduT3BhcXVlKCksIDAs
IDEpOworICAgIEVYUEVDVF9ORUFSKG9jY2x1ZGVkLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc0Ry
YXduVHJhbnNsdWNlbnQoKSwgMzAwMDAgKyAxICsgMTAwLCAxKTsKKyAgICBFWFBFQ1RfTkVBUihv
Y2NsdWRlZC5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNDdWxsZWQoKSwgMCwgMSk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>