<?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>48170</bug_id>
          
          <creation_ts>2010-10-22 18:39:29 -0700</creation_ts>
          <short_desc>[Chromium] Add ICC support for PNG on Mac</short_desc>
          <delta_ts>2012-01-22 20:59:29 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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>48801</dependson>
          <blocked>76804</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>pascal.massimino</cc>
    
    <cc>pkasting</cc>
    
    <cc>thakis</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>298298</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-10-22 18:39:29 -0700</bug_when>
    <thetext>[Chromium] Add ICC support for PNG on Mac</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298300</commentid>
    <comment_count>1</comment_count>
      <attachid>71617</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-10-22 18:40:24 -0700</bug_when>
    <thetext>Created attachment 71617
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298348</commentid>
    <comment_count>2</comment_count>
      <attachid>71629</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-10-23 01:13:44 -0700</bug_when>
    <thetext>Created attachment 71629
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298349</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-10-23 01:14:20 -0700</bug_when>
    <thetext>This patch is also required on the Chromium side to enable this feature of libpng:
http://codereview.chromium.org/4060002</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302271</commentid>
    <comment_count>4</comment_count>
      <attachid>72432</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-10-30 01:32:41 -0700</bug_when>
    <thetext>Created attachment 72432
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302272</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-30 01:35:29 -0700</bug_when>
    <thetext>Attachment 72432 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/platform/image-decoders/ImageDecoder.h:50:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302273</commentid>
    <comment_count>6</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-10-30 01:41:23 -0700</bug_when>
    <thetext>Attachment 72432 did not build on qt:
Build output: http://queues.webkit.org/results/4870043</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302333</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-30 12:34:05 -0700</bug_when>
    <thetext>Attachment 72432 did not build on chromium:
Build output: http://queues.webkit.org/results/4763085</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302567</commentid>
    <comment_count>8</comment_count>
      <attachid>72432</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-31 23:20:54 -0700</bug_when>
    <thetext>Comment on attachment 72432
Patch

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

Overall this looks like a fantastic patch!  I look forward to seeing other platforms support this!

I&apos;d like to see the code moved/my comments answered before landing though.

r- for the below and the build break.

&gt; WebCore/platform/image-decoders/cg/ImageDecoderCG.cpp:80
&gt; +        RetainPtr&lt;CGDataProviderRef&gt; profileDataProvider(AdoptCF, CGDataProviderCreateWithCFData(profileData.get()));
&gt; +        CGFloat ranges[] = {0.0, 255.0, 0.0, 255.0, 0.0, 255.0};
&gt; +        colorSpace.adoptCF(CGColorSpaceCreateICCBased(3, ranges, profileDataProvider.get(), deviceColorSpace.get()));

If you worked at Apple, you would just add a WKCGColorSpaceCreateWithICCProfile to WebKitSystemInterface.lib (since undoubtably this method existed on Leopard but was just private). Since you don&apos;t, I would suggest you create a WKCGColorSpaceCreateWithICCProfile anyway, just make it local to this file, and on SnowLeopard and later use the nice API and have this crazy code only exist on Leopard.

Make sense?

Then an Apple person could move your method into WebKitSystemInterface if desired at some point, but it&apos;s likely better to keep it public until we drop Leopard support anyway.

We should consider a deterimineColorSpace() helper method here which just returned the CGColorSpace?  Or maybe this is so clean with WKCGColorSpaceCreateWithICCProfile that we won&apos;t need that?

&gt; WebCore/platform/image-decoders/png/PNGImageDecoder.cpp:257
&gt; +    png_get_iCCP(png, info, &amp;profileName, &amp;compression, &amp;profile, &amp;profileLength);

Who owns the returned strings?  Do we need to release them?

Maybe we should put this into a separate function with a nice WebKity API?  One that returns the m_colorProfile or some such?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302590</commentid>
    <comment_count>9</comment_count>
      <attachid>72490</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-11-01 01:32:12 -0700</bug_when>
    <thetext>Created attachment 72490
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302896</commentid>
    <comment_count>10</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-11-01 13:50:27 -0700</bug_when>
    <thetext>&gt; &gt; WebCore/platform/image-decoders/png/PNGImageDecoder.cpp:257
&gt; &gt; +    png_get_iCCP(png, info, &amp;profileName, &amp;compression, &amp;profile, &amp;profileLength);
&gt; 
&gt; Who owns the returned strings?  Do we need to release them?

They&apos;re owned by libpng, that&apos;s why we copy them into a vector immediately.  libpng is responsible for deleting them.

&gt; Maybe we should put this into a separate function with a nice WebKity API?  One that returns the m_colorProfile or some such?

The goal of PNGImageDecoder::headerAvailable is to copy data out of the png_infop and into WebKity land.  PNGImageDecoder then makes it available with a more sensible API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302897</commentid>
    <comment_count>11</comment_count>
      <attachid>72552</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-11-01 13:51:19 -0700</bug_when>
    <thetext>Created attachment 72552
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302901</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-11-01 13:53:14 -0700</bug_when>
    <thetext>Attachment 72552 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/platform/image-decoders/ImageDecoder.h:50:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302975</commentid>
    <comment_count>13</comment_count>
      <attachid>72552</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-11-01 15:07:13 -0700</bug_when>
    <thetext>Comment on attachment 72552
Patch

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

&gt; WebCore/platform/image-decoders/ImageDecoder.h:50
&gt; +    typedef Vector&lt;char&gt; ColorProfile;

Should this just be String?

&gt; WebCore/platform/image-decoders/cg/ImageDecoderCG.cpp:74
&gt;      DEFINE_STATIC_LOCAL(RetainPtr&lt;CGColorSpaceRef&gt;, deviceColorSpace, (AdoptCF, CGColorSpaceCreateDeviceRGB()));
&gt; +
&gt; +    if (colorProfile.isEmpty()) {
&gt; +        CFRetain(deviceColorSpace.get());
&gt; +        return deviceColorSpace.get();
&gt; +    }

Why bother storing the local?  Do we know that CG doesn&apos;t already use a shared instance under the covers?

&gt; WebCore/platform/image-decoders/png/PNGImageDecoder.cpp:260
&gt; +    char* profileName;
&gt; +    int compression;
&gt; +    char* profile;
&gt; +    png_uint_32 profileLength;
&gt; +    png_get_iCCP(png, info, &amp;profileName, &amp;compression, &amp;profile, &amp;profileLength);
&gt; +    m_colorProfile.clear();
&gt; +    if (profile)
&gt; +        m_colorProfile.append(profile, profileLength);

I still think this should be a helper function which just returns a &quot;ColorProfile&quot; (string or otherwise) for better encapsulation.  No need for all those locals to be in the calling function, etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302989</commentid>
    <comment_count>14</comment_count>
      <attachid>72574</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-11-01 15:28:07 -0700</bug_when>
    <thetext>Created attachment 72574
for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302994</commentid>
    <comment_count>15</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-11-01 15:34:05 -0700</bug_when>
    <thetext>Committed r71065: &lt;http://trac.webkit.org/changeset/71065&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303022</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-11-01 16:04:52 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/71065 might have broken GTK Linux 64-bit Debug
The following tests are not passing:
accessibility/aria-activedescendant-crash.html
accessibility/aria-checkbox-text.html
accessibility/aria-hidden-update.html
accessibility/contenteditable-hidden-div.html
accessibility/crash-with-noelement-selectbox.html
accessibility/crashing-a-tag-in-map.html
accessibility/document-attributes.html
accessibility/first-letter-text-transform-causes-crash.html
accessibility/hang-in-isignored.html
accessibility/nested-layout-crash.html
accessibility/nochildren-elements.html
accessibility/non-data-table-cell-title-ui-element.html
accessibility/non-native-image-crash.html
accessibility/radio-button-checkbox-size.html
accessibility/removed-anonymous-block-child-causes-crash.html
accessibility/removed-continuation-element-causes-crash.html
accessibility/table-modification-crash.html
accessibility/table-nofirstbody.html
accessibility/table-notbody.html
accessibility/table-with-empty-thead-causes-crash.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303052</commentid>
    <comment_count>17</comment_count>
      <attachid>72574</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-11-01 16:27:54 -0700</bug_when>
    <thetext>Comment on attachment 72574
for landing

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

&gt; WebCore/platform/image-decoders/png/PNGImageDecoder.cpp:230
&gt; +    png_get_iCCP(png, info, &amp;profileName, &amp;compressionType, &amp;profile, &amp;profileLength);

Turns out you need to check the return value.  Otherwise your values are garbage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303113</commentid>
    <comment_count>18</comment_count>
      <attachid>72608</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-11-01 17:35:26 -0700</bug_when>
    <thetext>Created attachment 72608
now with null check</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303204</commentid>
    <comment_count>19</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-11-01 21:16:15 -0700</bug_when>
    <thetext>Committed r71098: &lt;http://trac.webkit.org/changeset/71098&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71617</attachid>
            <date>2010-10-22 18:40:24 -0700</date>
            <delta_ts>2010-10-23 01:13:41 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>bug-48170-20101022184022.patch</filename>
            <type>text/plain</type>
            <size>1896</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MDM3NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMTAtMTAtMjIgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbQ2hy
b21pdW1dIEFkZCBJQ0Mgc3VwcG9ydCBmb3IgUE5HIG9uIE1hYworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDgxNzAKKworICAgICAgICBObyBuZXcgdGVz
dHMuIChPT1BTISkKKworICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVj
b2Rlci5oOgorICAgICAgICAoV2ViQ29yZTo6SUNDUHJvZmlsZTo6bV9wcm9maWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OklDQ1Byb2ZpbGU6OnByb2ZpbGUpOgorCiAyMDEwLTEwLTIxICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlk
ZWwsIFBldGVyIEthc3RpbmcsIGFuZCBEYXJpbiBGaXNoZXIuCkluZGV4OiBXZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgJKHJldmlzaW9uIDcwMzY5KQor
KysgV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDYsNiArNDYsMTkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisgICAg
Y2xhc3MgSUNDUHJvZmlsZSB7CisgICAgcHVibGljOgorICAgICAgICBJQ0NQcm9maWxlKGNvbnN0
IGNoYXIqIHByb2ZpbGUsIHNpemVfdCBsZW5ndGgpCisgICAgICAgICAgICBtX3Byb2ZpbGUocHJv
ZmlsZSwgbGVuZ3RoKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBjb25zdCBWZWN0
b3I8Y2hhcj4mIHByb2ZpbGUoKSBjb25zdCB7IHJldHVybiBtX3Byb2ZpbGU7IH0KKworICAgIHBy
aXZhdGU6CisgICAgICAgIFZlY3RvcjxjaGFyPiBtX3Byb2ZpbGU7CisgICAgfTsKKwogICAgIC8v
IFRoZSBSR0JBMzJCdWZmZXIgb2JqZWN0IHJlcHJlc2VudHMgdGhlIGRlY29kZWQgaW1hZ2UgZGF0
YSBpbiBSR0JBMzIKICAgICAvLyBmb3JtYXQuICBUaGlzIGJ1ZmZlciBpcyB3aGF0IGFsbCBkZWNv
ZGVycyB3cml0ZSBhIHNpbmdsZSBmcmFtZSBpbnRvLgogICAgIC8vIEZyYW1lcyBhcmUgdGhlbiBp
bnN0YW50aWF0ZWQgZm9yIGRyYXdpbmcgYnkgYmVpbmcgaGFuZGVkIHRoaXMgYnVmZmVyLgpAQCAt
MTkyLDYgKzIwNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIHNhbWUgYXMgSW1hZ2VEZWNvZGVyOjptX3NpemUuCiAgICAgICAgIGJvb2wgbV9oYXNB
bHBoYTsgLy8gV2hldGhlciBvciBub3QgYW55IG9mIHRoZSBwaXhlbHMgaW4gdGhlIGJ1ZmZlcgog
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhhdmUgdHJhbnNwYXJlbmN5LgorICAgICAgICBD
b2xvclByb2ZpbGUgbV9jb2xvclByb2ZpbGU7CiAjZW5kaWYKICAgICAgICAgSW50UmVjdCBtX3Jl
Y3Q7IC8vIFRoZSByZWN0IG9mIHRoZSBvcmlnaW5hbCBzcGVjaWZpZWQgZnJhbWUgd2l0aGluCiAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgb3ZlcmFsbCBidWZmZXIuICBUaGlzIHdpbGwg
YWx3YXlzIGp1c3QgYmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71629</attachid>
            <date>2010-10-23 01:13:44 -0700</date>
            <delta_ts>2010-10-30 01:32:38 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>bug-48170-20101023011343.patch</filename>
            <type>text/plain</type>
            <size>8343</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MGI5OGM4OGFkOGIyMzAyNWMzMWYxMzU0ODdkOGIzZmI5ZTdkZmQ4Yy4uYWQ0OWE3OWVjNzA0N2Fj
Nzc0ODdkYWY5ZGU3NTZmODhlZDE4OWJkNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAxMC0xMC0yMyAgQWRh
bSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFtDaHJvbWl1bV0gQWRkIElDQyBzdXBwb3J0IGZvciBQTkcg
b24gTWFjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
ODE3MAorCisgICAgICAgIFRoaXMganVzdCBwaXBlcyB0aGUgSUNDIHByb2ZpbGUgZnJvbSBsaWJw
bmcgdG8gQ29yZUdyYXBoaWNzLiAgVGhpcworICAgICAgICBwYXRjaCB3b3VsZCBoYXZlIGJlZW4g
YSBsb3QgcHJldHRpZXIgb24gU25vdyBMZW9wYXJkLCBidXQgd2UgaGF2ZSB0bworICAgICAgICB1
c2UgYSBzb21ld2hhdCB1Z2x5IEFQSSB0byBnZXQgdGhpcyB0byB3b3JrIG9uIExlb3BhcmQuCisK
KyAgICAgICAgVGhpcyBpcyBjb3ZlcmVkIGJ5IGFib3V0IGluZmluaXRlIHRlc3RzLgorCisgICAg
ICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJHQkEzMkJ1ZmZlcjo6c2V0Q29sb3JQcm9maWxlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9jZy9JbWFnZURlY29kZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
R0JBMzJCdWZmZXI6OmFzTmV3TmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UE5H
SW1hZ2VEZWNvZGVyOjpoZWFkZXJBdmFpbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6UE5HSW1h
Z2VEZWNvZGVyOjpyb3dBdmFpbGFibGUpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL3F0L1JHQkEzMkJ1ZmZlclF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJHQkEzMkJ1ZmZl
cjo6c2V0Q29sb3JQcm9maWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9z
a2lhL0ltYWdlRGVjb2RlclNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UkdCQTMyQnVmZmVy
OjpzZXRDb2xvclByb2ZpbGUpOgorCiAyMDEwLTEwLTIyICBBbmR5IEVzdGVzICA8YWVzdGVzQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIFJvYmVuIGFuZCBTYW0gV2Vpbmln
LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29k
ZXIuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3Bw
CmluZGV4IDlmZmJiZjU2ZmZkNDk1ODI2MmUwYmFjYzkxOTRlM2NkNDRiNTQ0YjAuLmE0YWE2MzBi
ODNiNjhiYTIxNjZlMzEzYTQwZTA3NDM0MmFhMjZiMmUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAKQEAgLTE4OSw2ICsxODksMTEgQEAg
dm9pZCBSR0JBMzJCdWZmZXI6OnNldEhhc0FscGhhKGJvb2wgYWxwaGEpCiAgICAgbV9oYXNBbHBo
YSA9IGFscGhhOwogfQogCit2b2lkIFJHQkEzMkJ1ZmZlcjo6c2V0Q29sb3JQcm9maWxlKGNvbnN0
IENvbG9yUHJvZmlsZSYgY29sb3JQcm9maWxlKQoreworICAgIG1fY29sb3JQcm9maWxlID0gY29s
b3JQcm9maWxlOworfQorCiB2b2lkIFJHQkEzMkJ1ZmZlcjo6c2V0U3RhdHVzKEZyYW1lU3RhdHVz
IHN0YXR1cykKIHsKICAgICBtX3N0YXR1cyA9IHN0YXR1czsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmggYi9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCmluZGV4IGIwN2M3MmIxZTU0MDliMjkxN2I2
ODIxNzY5ZDg2YzBmNWMxM2M4NGQuLjk5NWIyNDBhYzdhMWQ3NDY4ZWY3NDY2ZGIyZmJlYjFhMGRk
YmQ0NjIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VE
ZWNvZGVyLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29k
ZXIuaApAQCAtNDYsNiArNDYsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyAgICAvLyBG
SVhNRTogRG8gd2Ugd2FudCBiZXR0ZXIgZW5jYXBzdWxhdGlvbj8KKyAgICB0eXBlZGVmIFZlY3Rv
cjxjaGFyPiBDb2xvclByb2ZpbGU7CisKICAgICAvLyBUaGUgUkdCQTMyQnVmZmVyIG9iamVjdCBy
ZXByZXNlbnRzIHRoZSBkZWNvZGVkIGltYWdlIGRhdGEgaW4gUkdCQTMyCiAgICAgLy8gZm9ybWF0
LiAgVGhpcyBidWZmZXIgaXMgd2hhdCBhbGwgZGVjb2RlcnMgd3JpdGUgYSBzaW5nbGUgZnJhbWUg
aW50by4KICAgICAvLyBGcmFtZXMgYXJlIHRoZW4gaW5zdGFudGlhdGVkIGZvciBkcmF3aW5nIGJ5
IGJlaW5nIGhhbmRlZCB0aGlzIGJ1ZmZlci4KQEAgLTEyNSw2ICsxMjgsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSgpIGNvbnN0IHsgcmV0dXJu
IG1fcHJlbXVsdGlwbHlBbHBoYTsgfQogCiAgICAgICAgIHZvaWQgc2V0SGFzQWxwaGEoYm9vbCBh
bHBoYSk7CisgICAgICAgIHZvaWQgc2V0Q29sb3JQcm9maWxlKGNvbnN0IENvbG9yUHJvZmlsZSYp
OwogICAgICAgICB2b2lkIHNldFJlY3QoY29uc3QgSW50UmVjdCYgcikgeyBtX3JlY3QgPSByOyB9
CiAgICAgICAgIHZvaWQgc2V0U3RhdHVzKEZyYW1lU3RhdHVzIHN0YXR1cyk7CiAgICAgICAgIHZv
aWQgc2V0RHVyYXRpb24odW5zaWduZWQgZHVyYXRpb24pIHsgbV9kdXJhdGlvbiA9IGR1cmF0aW9u
OyB9CkBAIC0xOTIsNiArMTk2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gc2FtZSBhcyBJbWFnZURlY29kZXI6Om1fc2l6ZS4KICAgICAgICAgYm9v
bCBtX2hhc0FscGhhOyAvLyBXaGV0aGVyIG9yIG5vdCBhbnkgb2YgdGhlIHBpeGVscyBpbiB0aGUg
YnVmZmVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGF2ZSB0cmFuc3BhcmVuY3kuCisg
ICAgICAgIENvbG9yUHJvZmlsZSBtX2NvbG9yUHJvZmlsZTsKICNlbmRpZgogICAgICAgICBJbnRS
ZWN0IG1fcmVjdDsgLy8gVGhlIHJlY3Qgb2YgdGhlIG9yaWdpbmFsIHNwZWNpZmllZCBmcmFtZSB3
aXRoaW4KICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBvdmVyYWxsIGJ1ZmZlci4gIFRo
aXMgd2lsbCBhbHdheXMganVzdCBiZQpAQCAtMzQ0LDYgKzM0OSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7IC8vIFRoZSBlbmNv
ZGVkIGRhdGEuCiAgICAgICAgIFZlY3RvcjxSR0JBMzJCdWZmZXI+IG1fZnJhbWVCdWZmZXJDYWNo
ZTsKKyAgICAgICAgQ29sb3JQcm9maWxlIG1fY29sb3JQcm9maWxlOwogICAgICAgICBib29sIG1f
c2NhbGVkOwogICAgICAgICBWZWN0b3I8aW50PiBtX3NjYWxlZENvbHVtbnM7CiAgICAgICAgIFZl
Y3RvcjxpbnQ+IG1fc2NhbGVkUm93czsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9jZy9JbWFnZURlY29kZXJDRy5jcHAKaW5kZXggMmZhYzdkYWExODQzM2Y4ZmE5
MmJlYjQ0YTk2MzU5OWYyYjkzN2YzZC4uMjEyNTc0Y2I1NDc5MmNmMDdmZTY1YzY1NmNlMzJhZGFl
NjFmYTFhYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jZy9J
bWFnZURlY29kZXJDRy5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9j
Zy9JbWFnZURlY29kZXJDRy5jcHAKQEAgLTY2LDEzICs2NiwyNSBAQCBib29sIFJHQkEzMkJ1ZmZl
cjo6c2V0U2l6ZShpbnQgbmV3V2lkdGgsIGludCBuZXdIZWlnaHQpCiAKIE5hdGl2ZUltYWdlUHRy
IFJHQkEzMkJ1ZmZlcjo6YXNOZXdOYXRpdmVJbWFnZSgpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUU6
IEZpZ3VyZSBvdXQgdGhlIHJpZ2h0IGNvbG9yIHNwYWNlLgogICAgIERFRklORV9TVEFUSUNfTE9D
QUwoUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4sIGRldmljZUNvbG9yU3BhY2UsIChBZG9wdENG
LCBDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VSR0IoKSkpOworCisgICAgUmV0YWluUHRyPENHQ29s
b3JTcGFjZVJlZj4gY29sb3JTcGFjZTsKKyAgICBpZiAobV9jb2xvclByb2ZpbGUuaXNFbXB0eSgp
KQorICAgICAgICBjb2xvclNwYWNlID0gZGV2aWNlQ29sb3JTcGFjZTsKKyAgICBlbHNlIHsKKyAg
ICAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gcHJvZmlsZURhdGEoQWRvcHRDRiwgQ0ZEYXRhQ3Jl
YXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPiht
X2NvbG9yUHJvZmlsZS5kYXRhKCkpLCBtX2NvbG9yUHJvZmlsZS5zaXplKCkpKTsKKyAgICAgICAg
Ly8gV2UgaGF2ZSB0byBnbyB0aHJvdWdoIHRoaXMgc29tZXdoYXQgZWxhYm9yYXRlIHByb2NlZWR1
cmUgYmVjYXVzZQorICAgICAgICAvLyBDR0NvbG9yU3BhY2VDcmVhdGVXaXRoSUNDUHJvZmlsZSBk
b2VuJ3QgZXhpc3Qgb24gTGVvcGFyZC4KKyAgICAgICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVy
UmVmPiBwcm9maWxlRGF0YVByb3ZpZGVyKEFkb3B0Q0YsIENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0
aENGRGF0YShwcm9maWxlRGF0YS5nZXQoKSkpOworICAgICAgICBDR0Zsb2F0IHJhbmdlc1tdID0g
ezAuMCwgMjU1LjAsIDAuMCwgMjU1LjAsIDAuMCwgMjU1LjB9OworICAgICAgICBjb2xvclNwYWNl
LmFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlSUNDQmFzZWQoMywgcmFuZ2VzLCBwcm9maWxlRGF0
YVByb3ZpZGVyLmdldCgpLCBkZXZpY2VDb2xvclNwYWNlLmdldCgpKSk7CisgICAgfQorCiAgICAg
UmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIoQWRvcHRDRiwgQ0dEYXRh
UHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRhKG1fYmFja2luZ1N0b3JlLmdldCgpKSk7CiAKICAgICBD
R0ltYWdlQWxwaGFJbmZvIGFscGhhSW5mbyA9IG1fcHJlbXVsdGlwbHlBbHBoYSA/IGtDR0ltYWdl
QWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgOiBrQ0dJbWFnZUFscGhhRmlyc3Q7CiAKLSAgICByZXR1
cm4gQ0dJbWFnZUNyZWF0ZSh3aWR0aCgpLCBoZWlnaHQoKSwgOCwgMzIsIHdpZHRoKCkgKiBzaXpl
b2YoUGl4ZWxEYXRhKSwgZGV2aWNlQ29sb3JTcGFjZS5nZXQoKSwKKyAgICByZXR1cm4gQ0dJbWFn
ZUNyZWF0ZSh3aWR0aCgpLCBoZWlnaHQoKSwgOCwgMzIsIHdpZHRoKCkgKiBzaXplb2YoUGl4ZWxE
YXRhKSwgY29sb3JTcGFjZS5nZXQoKSwKICAgICAgICAgYWxwaGFJbmZvIHwga0NHQml0bWFwQnl0
ZU9yZGVyMzJIb3N0LCBkYXRhUHJvdmlkZXIuZ2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJ
bnRlbnREZWZhdWx0KTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggOTQwZTRjNGNmMmE1ZWU0NjQz
OTcyNDlkODYxMWViNzBkMTg2Y2ZlNC4uZmQ5ZjMyMDViODM1OThlZjc4NDhiYWVmMjg4OWQ1ODU3
ZGYyZDc3ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcv
UE5HSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCkBAIC0yNDksNiArMjQ5LDE1IEBAIHZvaWQgUE5HSW1h
Z2VEZWNvZGVyOjpoZWFkZXJBdmFpbGFibGUoKQogICAgIGludCBiaXREZXB0aCwgY29sb3JUeXBl
LCBpbnRlcmxhY2VUeXBlLCBjb21wcmVzc2lvblR5cGUsIGZpbHRlclR5cGUsIGNoYW5uZWxzOwog
ICAgIHBuZ19nZXRfSUhEUihwbmcsIGluZm8sICZ3aWR0aCwgJmhlaWdodCwgJmJpdERlcHRoLCAm
Y29sb3JUeXBlLCAmaW50ZXJsYWNlVHlwZSwgJmNvbXByZXNzaW9uVHlwZSwgJmZpbHRlclR5cGUp
OwogCisjaWZkZWYgUE5HX2lDQ1BfU1VQUE9SVEVECisgICAgY2hhciogcHJvZmlsZU5hbWU7Cisg
ICAgY2hhciogcHJvZmlsZTsKKyAgICBwbmdfdWludF8zMiBwcm9maWxlTGVuZ3RoOworICAgIHBu
Z19nZXRfaUNDUChwbmcsIGluZm8sICZwcm9maWxlTmFtZSwgMCwgJnByb2ZpbGUsICZwcm9maWxl
TGVuZ3RoKTsKKyAgICBtX2NvbG9yUHJvZmlsZS5jbGVhcigpOworICAgIG1fY29sb3JQcm9maWxl
LmFwcGVuZChwcm9maWxlLCBwcm9maWxlTGVuZ3RoKTsKKyNlbmRpZgorCiAgICAgLy8gVGhlIG9w
dGlvbnMgd2Ugc2V0IGhlcmUgbWF0Y2ggd2hhdCBNb3ppbGxhIGRvZXMuCiAKICAgICAvLyBFeHBh
bmQgdG8gZW5zdXJlIHdlIHVzZSAyNC1iaXQgZm9yIFJHQiBhbmQgMzItYml0IGZvciBSR0JBLgpA
QCAtMzExLDYgKzMyMCw3IEBAIHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpyb3dBdmFpbGFibGUodW5z
aWduZWQgY2hhciogcm93QnVmZmVyLCB1bnNpZ25lZCByb3dJbmRleCwKICAgICAgICAgfQogICAg
ICAgICBidWZmZXIuc2V0U3RhdHVzKFJHQkEzMkJ1ZmZlcjo6RnJhbWVQYXJ0aWFsKTsKICAgICAg
ICAgYnVmZmVyLnNldEhhc0FscGhhKGZhbHNlKTsKKyAgICAgICAgYnVmZmVyLnNldENvbG9yUHJv
ZmlsZShtX2NvbG9yUHJvZmlsZSk7CiAKICAgICAgICAgLy8gRm9yIFBOR3MsIHRoZSBmcmFtZSBh
bHdheXMgZmlsbHMgdGhlIGVudGlyZSBpbWFnZS4KICAgICAgICAgYnVmZmVyLnNldFJlY3QoSW50
UmVjdChJbnRQb2ludCgpLCBzaXplKCkpKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvcXQvUkdCQTMyQnVmZmVyUXQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9xdC9SR0JBMzJCdWZmZXJRdC5jcHAKaW5kZXggYTc4MjM3MzExNTYxZGU2
ZmY1ODJiNDY4NTU0Mjg1MGMxYzEyODQ2YS4uNzNhYmJjNTU3OWE4MWU0NGIzZjliZmNjMTIzZDFl
NWMzNjcxMDhmYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9x
dC9SR0JBMzJCdWZmZXJRdC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9xdC9SR0JBMzJCdWZmZXJRdC5jcHAKQEAgLTEyNCw2ICsxMjQsMTEgQEAgdm9pZCBSR0JBMzJC
dWZmZXI6OnNldEhhc0FscGhhKGJvb2wgYWxwaGEpCiAgICAgbV9oYXNBbHBoYSA9IGFscGhhOwog
fQogCit2b2lkIFJHQkEzMkJ1ZmZlcjo6c2V0Q29sb3JQcm9maWxlKGNvbnN0IENvbG9yUHJvZmls
ZSYgY29sb3JQcm9maWxlKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKIHZvaWQgUkdC
QTMyQnVmZmVyOjpzZXRTdGF0dXMoRnJhbWVTdGF0dXMgc3RhdHVzKQogewogICAgIG1fc3RhdHVz
ID0gc3RhdHVzOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9z
a2lhL0ltYWdlRGVjb2RlclNraWEuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9za2lhL0ltYWdlRGVjb2RlclNraWEuY3BwCmluZGV4IDNmNDM1ZTQxMmE2YjViMzdkMzUyNGI2
MjllMzAzYTZmYmJlYmRhMjAuLmFhMzg3YjE1MDlhMjY5NzA4ZDQ2ZjM0NWI0YTM0MzRhMGNlNGZl
MDEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvc2tpYS9JbWFn
ZURlY29kZXJTa2lhLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3Nr
aWEvSW1hZ2VEZWNvZGVyU2tpYS5jcHAKQEAgLTEwOSw2ICsxMDksMTEgQEAgdm9pZCBSR0JBMzJC
dWZmZXI6OnNldEhhc0FscGhhKGJvb2wgYWxwaGEpCiAgICAgbV9iaXRtYXAuc2V0SXNPcGFxdWUo
IWFscGhhKTsKIH0KIAordm9pZCBSR0JBMzJCdWZmZXI6OnNldENvbG9yUHJvZmlsZShjb25zdCBD
b2xvclByb2ZpbGUmIGNvbG9yUHJvZmlsZSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
CiB2b2lkIFJHQkEzMkJ1ZmZlcjo6c2V0U3RhdHVzKEZyYW1lU3RhdHVzIHN0YXR1cykKIHsKICAg
ICBtX3N0YXR1cyA9IHN0YXR1czsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72432</attachid>
            <date>2010-10-30 01:32:41 -0700</date>
            <delta_ts>2010-11-01 01:32:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48170-20101030013240.patch</filename>
            <type>text/plain</type>
            <size>7937</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MDk3NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjkgQEAKKzIwMTAtMTAtMzAgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbQ2hy
b21pdW1dIEFkZCBJQ0Mgc3VwcG9ydCBmb3IgUE5HIG9uIE1hYworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDgxNzAKKworICAgICAgICBUaGlzIGp1c3Qg
cGlwZXMgdGhlIElDQyBwcm9maWxlIGZyb20gbGlicG5nIHRvIENvcmVHcmFwaGljcy4gIFRoaXMK
KyAgICAgICAgcGF0Y2ggd291bGQgaGF2ZSBiZWVuIGEgbG90IHByZXR0aWVyIG9uIFNub3cgTGVv
cGFyZCwgYnV0IHdlIGhhdmUgdG8KKyAgICAgICAgdXNlIGEgc29tZXdoYXQgdWdseSBBUEkgdG8g
Z2V0IHRoaXMgdG8gd29yayBvbiBMZW9wYXJkLgorCisgICAgICAgIFRoaXMgaXMgY292ZXJlZCBi
eSBhYm91dCBpbmZpbml0ZSB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSR0JBMzJCdWZmZXI6OnNl
dENvbG9yUHJvZmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VE
ZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2cvSW1hZ2VEZWNv
ZGVyQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UkdCQTMyQnVmZmVyOjphc05ld05hdGl2ZUlt
YWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNv
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBOR0ltYWdlRGVjb2Rlcjo6aGVhZGVyQXZhaWxh
YmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlBOR0ltYWdlRGVjb2Rlcjo6cm93QXZhaWxhYmxlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9xdC9SR0JBMzJCdWZmZXJRdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSR0JBMzJCdWZmZXI6OnNldENvbG9yUHJvZmlsZSk6CisgICAg
ICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvc2tpYS9JbWFnZURlY29kZXJTa2lhLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJHQkEzMkJ1ZmZlcjo6c2V0Q29sb3JQcm9maWxlKToKKwogMjAx
MC0xMC0yOSAgRGFuaWVsIEJhdGVzICA8ZGJhdGVzQHJpbS5jb20+CiAKICAgICAgICAgTm8gcmV2
aWV3LCByb2xsaW5nIG91dCA3MDk3MS4KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvSW1hZ2VEZWNvZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAJKHJldmlzaW9uIDcwOTc3KQorKysgV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xODksNiArMTg5LDExIEBAIHZvaWQgUkdCQTMyQnVmZmVyOjpzZXRIYXNBbHBoYShib29s
IGFscGgKICAgICBtX2hhc0FscGhhID0gYWxwaGE7CiB9CiAKK3ZvaWQgUkdCQTMyQnVmZmVyOjpz
ZXRDb2xvclByb2ZpbGUoY29uc3QgQ29sb3JQcm9maWxlJiBjb2xvclByb2ZpbGUpCit7CisgICAg
bV9jb2xvclByb2ZpbGUgPSBjb2xvclByb2ZpbGU7Cit9CisKIHZvaWQgUkdCQTMyQnVmZmVyOjpz
ZXRTdGF0dXMoRnJhbWVTdGF0dXMgc3RhdHVzKQogewogICAgIG1fc3RhdHVzID0gc3RhdHVzOwpJ
bmRleDogV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5o
CShyZXZpc2lvbiA3MDk3NykKKysrIFdlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1h
Z2VEZWNvZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDkgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCisgICAgLy8gRklYTUU6IERvIHdlIHdhbnQgYmV0dGVyIGVuY2Fwc3VsYXRp
b24/CisgICAgdHlwZWRlZiBWZWN0b3I8Y2hhcj4gQ29sb3JQcm9maWxlOworCiAgICAgLy8gVGhl
IFJHQkEzMkJ1ZmZlciBvYmplY3QgcmVwcmVzZW50cyB0aGUgZGVjb2RlZCBpbWFnZSBkYXRhIGlu
IFJHQkEzMgogICAgIC8vIGZvcm1hdC4gIFRoaXMgYnVmZmVyIGlzIHdoYXQgYWxsIGRlY29kZXJz
IHdyaXRlIGEgc2luZ2xlIGZyYW1lIGludG8uCiAgICAgLy8gRnJhbWVzIGFyZSB0aGVuIGluc3Rh
bnRpYXRlZCBmb3IgZHJhd2luZyBieSBiZWluZyBoYW5kZWQgdGhpcyBidWZmZXIuCkBAIC0xMjUs
NiArMTI4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIHByZW11bHRpcGx5
QWxwaGEoKSBjb25zdCB7IHJldHVybiBtX3ByZW11bHRpcGx5QWxwaGE7IH0KIAogICAgICAgICB2
b2lkIHNldEhhc0FscGhhKGJvb2wgYWxwaGEpOworICAgICAgICB2b2lkIHNldENvbG9yUHJvZmls
ZShjb25zdCBDb2xvclByb2ZpbGUmKTsKICAgICAgICAgdm9pZCBzZXRSZWN0KGNvbnN0IEludFJl
Y3QmIHIpIHsgbV9yZWN0ID0gcjsgfQogICAgICAgICB2b2lkIHNldFN0YXR1cyhGcmFtZVN0YXR1
cyBzdGF0dXMpOwogICAgICAgICB2b2lkIHNldER1cmF0aW9uKHVuc2lnbmVkIGR1cmF0aW9uKSB7
IG1fZHVyYXRpb24gPSBkdXJhdGlvbjsgfQpAQCAtMTkyLDYgKzE5Niw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNhbWUgYXMgSW1hZ2VEZWNvZGVy
OjptX3NpemUuCiAgICAgICAgIGJvb2wgbV9oYXNBbHBoYTsgLy8gV2hldGhlciBvciBub3QgYW55
IG9mIHRoZSBwaXhlbHMgaW4gdGhlIGJ1ZmZlcgogICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IGhhdmUgdHJhbnNwYXJlbmN5LgorICAgICAgICBDb2xvclByb2ZpbGUgbV9jb2xvclByb2ZpbGU7
CiAjZW5kaWYKICAgICAgICAgSW50UmVjdCBtX3JlY3Q7IC8vIFRoZSByZWN0IG9mIHRoZSBvcmln
aW5hbCBzcGVjaWZpZWQgZnJhbWUgd2l0aGluCiAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0
aGUgb3ZlcmFsbCBidWZmZXIuICBUaGlzIHdpbGwgYWx3YXlzIGp1c3QgYmUKQEAgLTM0NCw2ICsz
NDksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gbV9kYXRhOyAvLyBUaGUgZW5jb2RlZCBkYXRhLgogICAgICAgICBWZWN0b3I8UkdCQTMyQnVm
ZmVyPiBtX2ZyYW1lQnVmZmVyQ2FjaGU7CisgICAgICAgIENvbG9yUHJvZmlsZSBtX2NvbG9yUHJv
ZmlsZTsKICAgICAgICAgYm9vbCBtX3NjYWxlZDsKICAgICAgICAgVmVjdG9yPGludD4gbV9zY2Fs
ZWRDb2x1bW5zOwogICAgICAgICBWZWN0b3I8aW50PiBtX3NjYWxlZFJvd3M7CkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NnL0ltYWdlRGVjb2RlckNH
LmNwcAkocmV2aXNpb24gNzA5NzcpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2NnL0ltYWdlRGVjb2RlckNHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsMTMgKzY2LDI1IEBA
IGJvb2wgUkdCQTMyQnVmZmVyOjpzZXRTaXplKGludCBuZXdXaWR0aCwKIAogTmF0aXZlSW1hZ2VQ
dHIgUkdCQTMyQnVmZmVyOjphc05ld05hdGl2ZUltYWdlKCkgY29uc3QKIHsKLSAgICAvLyBGSVhN
RTogRmlndXJlIG91dCB0aGUgcmlnaHQgY29sb3Igc3BhY2UuCiAgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiwgZGV2aWNlQ29sb3JTcGFjZSwgKEFkb3B0
Q0YsIENHQ29sb3JTcGFjZUNyZWF0ZURldmljZVJHQigpKSk7CisKKyAgICBSZXRhaW5QdHI8Q0dD
b2xvclNwYWNlUmVmPiBjb2xvclNwYWNlOworICAgIGlmIChtX2NvbG9yUHJvZmlsZS5pc0VtcHR5
KCkpCisgICAgICAgIGNvbG9yU3BhY2UgPSBkZXZpY2VDb2xvclNwYWNlOworICAgIGVsc2Ugewor
ICAgICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBwcm9maWxlRGF0YShBZG9wdENGLCBDRkRhdGFD
cmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+
KG1fY29sb3JQcm9maWxlLmRhdGEoKSksIG1fY29sb3JQcm9maWxlLnNpemUoKSkpOworICAgICAg
ICAvLyBXZSBoYXZlIHRvIGdvIHRocm91Z2ggdGhpcyBzb21ld2hhdCBlbGFib3JhdGUgcHJvY2Vl
ZHVyZSBiZWNhdXNlCisgICAgICAgIC8vIENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhJQ0NQcm9maWxl
IGRvZW4ndCBleGlzdCBvbiBMZW9wYXJkLgorICAgICAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlk
ZXJSZWY+IHByb2ZpbGVEYXRhUHJvdmlkZXIoQWRvcHRDRiwgQ0dEYXRhUHJvdmlkZXJDcmVhdGVX
aXRoQ0ZEYXRhKHByb2ZpbGVEYXRhLmdldCgpKSk7CisgICAgICAgIENHRmxvYXQgcmFuZ2VzW10g
PSB7MC4wLCAyNTUuMCwgMC4wLCAyNTUuMCwgMC4wLCAyNTUuMH07CisgICAgICAgIGNvbG9yU3Bh
Y2UuYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVJQ0NCYXNlZCgzLCByYW5nZXMsIHByb2ZpbGVE
YXRhUHJvdmlkZXIuZ2V0KCksIGRldmljZUNvbG9yU3BhY2UuZ2V0KCkpKTsKKyAgICB9CisKICAg
ICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlcihBZG9wdENGLCBDR0Rh
dGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEobV9iYWNraW5nU3RvcmUuZ2V0KCkpKTsKIAogICAg
IENHSW1hZ2VBbHBoYUluZm8gYWxwaGFJbmZvID0gbV9wcmVtdWx0aXBseUFscGhhID8ga0NHSW1h
Z2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCA6IGtDR0ltYWdlQWxwaGFGaXJzdDsKIAotICAgIHJl
dHVybiBDR0ltYWdlQ3JlYXRlKHdpZHRoKCksIGhlaWdodCgpLCA4LCAzMiwgd2lkdGgoKSAqIHNp
emVvZihQaXhlbERhdGEpLCBkZXZpY2VDb2xvclNwYWNlLmdldCgpLAorICAgIHJldHVybiBDR0lt
YWdlQ3JlYXRlKHdpZHRoKCksIGhlaWdodCgpLCA4LCAzMiwgd2lkdGgoKSAqIHNpemVvZihQaXhl
bERhdGEpLCBjb2xvclNwYWNlLmdldCgpLAogICAgICAgICBhbHBoYUluZm8gfCBrQ0dCaXRtYXBC
eXRlT3JkZXIzMkhvc3QsIGRhdGFQcm92aWRlci5nZXQoKSwgMCwgZmFsc2UsIGtDR1JlbmRlcmlu
Z0ludGVudERlZmF1bHQpOwogfQogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAJKHJldmlzaW9uIDcwOTc3
KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ5LDYgKzI0OSwxNyBAQCB2b2lkIFBOR0ltYWdlRGVj
b2Rlcjo6aGVhZGVyQXZhaWxhYmxlKCkKICAgICBpbnQgYml0RGVwdGgsIGNvbG9yVHlwZSwgaW50
ZXJsYWNlVHlwZSwgY29tcHJlc3Npb25UeXBlLCBmaWx0ZXJUeXBlLCBjaGFubmVsczsKICAgICBw
bmdfZ2V0X0lIRFIocG5nLCBpbmZvLCAmd2lkdGgsICZoZWlnaHQsICZiaXREZXB0aCwgJmNvbG9y
VHlwZSwgJmludGVybGFjZVR5cGUsICZjb21wcmVzc2lvblR5cGUsICZmaWx0ZXJUeXBlKTsKIAor
I2lmZGVmIFBOR19pQ0NQX1NVUFBPUlRFRAorICAgIGNoYXIqIHByb2ZpbGVOYW1lOworICAgIGlu
dCBjb21wcmVzc2lvbjsKKyAgICBjaGFyKiBwcm9maWxlOworICAgIHBuZ191aW50XzMyIHByb2Zp
bGVMZW5ndGg7CisgICAgcG5nX2dldF9pQ0NQKHBuZywgaW5mbywgJnByb2ZpbGVOYW1lLCAmY29t
cHJlc3Npb24sICZwcm9maWxlLCAmcHJvZmlsZUxlbmd0aCk7CisgICAgbV9jb2xvclByb2ZpbGUu
Y2xlYXIoKTsKKyAgICBpZiAocHJvZmlsZSkKKyAgICAgICAgbV9jb2xvclByb2ZpbGUuYXBwZW5k
KHByb2ZpbGUsIHByb2ZpbGVMZW5ndGgpOworI2VuZGlmCisKICAgICAvLyBUaGUgb3B0aW9ucyB3
ZSBzZXQgaGVyZSBtYXRjaCB3aGF0IE1vemlsbGEgZG9lcy4KIAogICAgIC8vIEV4cGFuZCB0byBl
bnN1cmUgd2UgdXNlIDI0LWJpdCBmb3IgUkdCIGFuZCAzMi1iaXQgZm9yIFJHQkEuCkBAIC0zMTEs
NiArMzIyLDcgQEAgdm9pZCBQTkdJbWFnZURlY29kZXI6OnJvd0F2YWlsYWJsZSh1bnNpZwogICAg
ICAgICB9CiAgICAgICAgIGJ1ZmZlci5zZXRTdGF0dXMoUkdCQTMyQnVmZmVyOjpGcmFtZVBhcnRp
YWwpOwogICAgICAgICBidWZmZXIuc2V0SGFzQWxwaGEoZmFsc2UpOworICAgICAgICBidWZmZXIu
c2V0Q29sb3JQcm9maWxlKG1fY29sb3JQcm9maWxlKTsKIAogICAgICAgICAvLyBGb3IgUE5Hcywg
dGhlIGZyYW1lIGFsd2F5cyBmaWxscyB0aGUgZW50aXJlIGltYWdlLgogICAgICAgICBidWZmZXIu
c2V0UmVjdChJbnRSZWN0KEludFBvaW50KCksIHNpemUoKSkpOwpJbmRleDogV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9xdC9SR0JBMzJCdWZmZXJRdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9xdC9SR0JBMzJCdWZmZXJRdC5jcHAJKHJl
dmlzaW9uIDcwOTc3KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9xdC9SR0JB
MzJCdWZmZXJRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNCw2ICsxMjQsMTEgQEAgdm9pZCBS
R0JBMzJCdWZmZXI6OnNldEhhc0FscGhhKGJvb2wgYWxwaAogICAgIG1faGFzQWxwaGEgPSBhbHBo
YTsKIH0KIAordm9pZCBSR0JBMzJCdWZmZXI6OnNldENvbG9yUHJvZmlsZShjb25zdCBDb2xvclBy
b2ZpbGUmIGNvbG9yUHJvZmlsZSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiB2b2lk
IFJHQkEzMkJ1ZmZlcjo6c2V0U3RhdHVzKEZyYW1lU3RhdHVzIHN0YXR1cykKIHsKICAgICBtX3N0
YXR1cyA9IHN0YXR1czsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvc2tp
YS9JbWFnZURlY29kZXJTa2lhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL3NraWEvSW1hZ2VEZWNvZGVyU2tpYS5jcHAJKHJldmlzaW9uIDcwOTc3KQor
KysgV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9za2lhL0ltYWdlRGVjb2RlclNraWEu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDksNiArMTA5LDExIEBAIHZvaWQgUkdCQTMyQnVmZmVy
OjpzZXRIYXNBbHBoYShib29sIGFscGgKICAgICBtX2JpdG1hcC5zZXRJc09wYXF1ZSghYWxwaGEp
OwogfQogCit2b2lkIFJHQkEzMkJ1ZmZlcjo6c2V0Q29sb3JQcm9maWxlKGNvbnN0IENvbG9yUHJv
ZmlsZSYgY29sb3JQcm9maWxlKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKIHZvaWQg
UkdCQTMyQnVmZmVyOjpzZXRTdGF0dXMoRnJhbWVTdGF0dXMgc3RhdHVzKQogewogICAgIG1fc3Rh
dHVzID0gc3RhdHVzOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72490</attachid>
            <date>2010-11-01 01:32:12 -0700</date>
            <delta_ts>2010-11-01 13:51:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48170-20101101013211.patch</filename>
            <type>text/plain</type>
            <size>9363</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OTBkZjg1ZGM0NmE4MDdmMGVkMzcyN2RmMzRkNDBjNGUyY2FkY2Y5OS4uYjM2NzM0ZTRhZWMwNmVl
OGJhMjQwM2NhZjdiNGIyY2RmODllMmExNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAxMC0xMC0zMSAgQWRh
bSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFtDaHJvbWl1bV0gQWRkIElDQyBzdXBwb3J0IGZvciBQTkcg
b24gTWFjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
ODE3MAorCisgICAgICAgIFRoaXMganVzdCBwaXBlcyB0aGUgSUNDIHByb2ZpbGUgZnJvbSBsaWJw
bmcgdG8gQ29yZUdyYXBoaWNzLiAgVGhpcworICAgICAgICBwYXRjaCB3b3VsZCBoYXZlIGJlZW4g
YSBsb3QgcHJldHRpZXIgb24gU25vdyBMZW9wYXJkLCBidXQgd2UgaGF2ZSB0bworICAgICAgICB1
c2UgYSBzb21ld2hhdCB1Z2x5IEFQSSB0byBnZXQgdGhpcyB0byB3b3JrIG9uIExlb3BhcmQuCisK
KyAgICAgICAgVGhpcyBpcyBjb3ZlcmVkIGJ5IGFib3V0IGluZmluaXRlIHRlc3RzLgorCisgICAg
ICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJHQkEzMkJ1ZmZlcjo6c2V0Q29sb3JQcm9maWxlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9jZy9JbWFnZURlY29kZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
R0JBMzJCdWZmZXI6OmFzTmV3TmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UE5H
SW1hZ2VEZWNvZGVyOjpoZWFkZXJBdmFpbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6UE5HSW1h
Z2VEZWNvZGVyOjpyb3dBdmFpbGFibGUpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL3F0L1JHQkEzMkJ1ZmZlclF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJHQkEzMkJ1ZmZl
cjo6c2V0Q29sb3JQcm9maWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9z
a2lhL0ltYWdlRGVjb2RlclNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UkdCQTMyQnVmZmVy
OjpzZXRDb2xvclByb2ZpbGUpOgorCiAyMDEwLTEwLTMxICBYYW4gTG9wZXogIDx4bG9wZXpAaWdh
bGlhLmNvbT4KIAogICAgICAgICBUcnkgdG8gZml4IHRoZSBHVEsrIGJ1aWxkLgpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZURlY29kZXJRdC5jcHAgYi9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlRGVjb2RlclF0LmNwcAppbmRleCAwMmJiMTEw
NGRkZTg0M2VhNGUzMzlmOGYxOTVmNjExNjAxYTFhMjUyLi40MDA0YjE1YzA0MTJlOTJkOWNmN2Ux
MWI0OThmMTNiODExNmMxYzM2IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3F0L0ltYWdlRGVjb2RlclF0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0
L0ltYWdlRGVjb2RlclF0LmNwcApAQCAtMjksNiArMjksOCBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkltYWdlRGVjb2RlclF0LmgiCiAKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRl
ZC5oIgorCiAjaW5jbHVkZSA8UXRDb3JlL1FCeXRlQXJyYXk+CiAjaW5jbHVkZSA8UXRDb3JlL1FC
dWZmZXI+CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1h
Z2VEZWNvZGVyLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNv
ZGVyLmNwcAppbmRleCA5ZmZiYmY1NmZmZDQ5NTgyNjJlMGJhY2M5MTk0ZTNjZDQ0YjU0NGIwLi5h
NGFhNjMwYjgzYjY4YmEyMTY2ZTMxM2E0MGUwNzQzNDJhYTI2YjJlIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwCkBAIC0xODksNiArMTg5
LDExIEBAIHZvaWQgUkdCQTMyQnVmZmVyOjpzZXRIYXNBbHBoYShib29sIGFscGhhKQogICAgIG1f
aGFzQWxwaGEgPSBhbHBoYTsKIH0KIAordm9pZCBSR0JBMzJCdWZmZXI6OnNldENvbG9yUHJvZmls
ZShjb25zdCBDb2xvclByb2ZpbGUmIGNvbG9yUHJvZmlsZSkKK3sKKyAgICBtX2NvbG9yUHJvZmls
ZSA9IGNvbG9yUHJvZmlsZTsKK30KKwogdm9pZCBSR0JBMzJCdWZmZXI6OnNldFN0YXR1cyhGcmFt
ZVN0YXR1cyBzdGF0dXMpCiB7CiAgICAgbV9zdGF0dXMgPSBzdGF0dXM7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oIGIvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaAppbmRleCBiMDdjNzJiMWU1NDA5
YjI5MTdiNjgyMTc2OWQ4NmMwZjVjMTNjODRkLi45OTViMjQwYWM3YTFkNzQ2OGVmNzQ2NmRiMmZi
ZWIxYTBkZGJkNDYyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L0ltYWdlRGVjb2Rlci5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1h
Z2VEZWNvZGVyLmgKQEAgLTQ2LDYgKzQ2LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisg
ICAgLy8gRklYTUU6IERvIHdlIHdhbnQgYmV0dGVyIGVuY2Fwc3VsYXRpb24/CisgICAgdHlwZWRl
ZiBWZWN0b3I8Y2hhcj4gQ29sb3JQcm9maWxlOworCiAgICAgLy8gVGhlIFJHQkEzMkJ1ZmZlciBv
YmplY3QgcmVwcmVzZW50cyB0aGUgZGVjb2RlZCBpbWFnZSBkYXRhIGluIFJHQkEzMgogICAgIC8v
IGZvcm1hdC4gIFRoaXMgYnVmZmVyIGlzIHdoYXQgYWxsIGRlY29kZXJzIHdyaXRlIGEgc2luZ2xl
IGZyYW1lIGludG8uCiAgICAgLy8gRnJhbWVzIGFyZSB0aGVuIGluc3RhbnRpYXRlZCBmb3IgZHJh
d2luZyBieSBiZWluZyBoYW5kZWQgdGhpcyBidWZmZXIuCkBAIC0xMjUsNiArMTI4LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIHByZW11bHRpcGx5QWxwaGEoKSBjb25zdCB7
IHJldHVybiBtX3ByZW11bHRpcGx5QWxwaGE7IH0KIAogICAgICAgICB2b2lkIHNldEhhc0FscGhh
KGJvb2wgYWxwaGEpOworICAgICAgICB2b2lkIHNldENvbG9yUHJvZmlsZShjb25zdCBDb2xvclBy
b2ZpbGUmKTsKICAgICAgICAgdm9pZCBzZXRSZWN0KGNvbnN0IEludFJlY3QmIHIpIHsgbV9yZWN0
ID0gcjsgfQogICAgICAgICB2b2lkIHNldFN0YXR1cyhGcmFtZVN0YXR1cyBzdGF0dXMpOwogICAg
ICAgICB2b2lkIHNldER1cmF0aW9uKHVuc2lnbmVkIGR1cmF0aW9uKSB7IG1fZHVyYXRpb24gPSBk
dXJhdGlvbjsgfQpAQCAtMTkyLDYgKzE5Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIHNhbWUgYXMgSW1hZ2VEZWNvZGVyOjptX3NpemUuCiAgICAg
ICAgIGJvb2wgbV9oYXNBbHBoYTsgLy8gV2hldGhlciBvciBub3QgYW55IG9mIHRoZSBwaXhlbHMg
aW4gdGhlIGJ1ZmZlcgogICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhhdmUgdHJhbnNwYXJl
bmN5LgorICAgICAgICBDb2xvclByb2ZpbGUgbV9jb2xvclByb2ZpbGU7CiAjZW5kaWYKICAgICAg
ICAgSW50UmVjdCBtX3JlY3Q7IC8vIFRoZSByZWN0IG9mIHRoZSBvcmlnaW5hbCBzcGVjaWZpZWQg
ZnJhbWUgd2l0aGluCiAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgb3ZlcmFsbCBidWZm
ZXIuICBUaGlzIHdpbGwgYWx3YXlzIGp1c3QgYmUKQEAgLTM0NCw2ICszNDksNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOyAvLyBU
aGUgZW5jb2RlZCBkYXRhLgogICAgICAgICBWZWN0b3I8UkdCQTMyQnVmZmVyPiBtX2ZyYW1lQnVm
ZmVyQ2FjaGU7CisgICAgICAgIENvbG9yUHJvZmlsZSBtX2NvbG9yUHJvZmlsZTsKICAgICAgICAg
Ym9vbCBtX3NjYWxlZDsKICAgICAgICAgVmVjdG9yPGludD4gbV9zY2FsZWRDb2x1bW5zOwogICAg
ICAgICBWZWN0b3I8aW50PiBtX3NjYWxlZFJvd3M7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2NnL0ltYWdlRGVjb2RlckNHLmNwcCBiL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCmluZGV4IDJmYWM3ZGFhMTg0
MzNmOGZhOTJiZWI0NGE5NjM1OTlmMmI5MzdmM2QuLjU3NWExM2VkMGJmMDdkODUyNzE0ZGJiN2Ex
YTdiNDNmY2I3MTNmMDIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCkBAIC02NCwxNSArNjQsMzggQEAgYm9vbCBSR0JB
MzJCdWZmZXI6OnNldFNpemUoaW50IG5ld1dpZHRoLCBpbnQgbmV3SGVpZ2h0KQogICAgIHJldHVy
biB0cnVlOwogfQogCi1OYXRpdmVJbWFnZVB0ciBSR0JBMzJCdWZmZXI6OmFzTmV3TmF0aXZlSW1h
Z2UoKSBjb25zdAorc3RhdGljIEdDQ29sb3JTcGFjZVJlZiB3a0NHQ29sb3JTcGFjZUNyZWF0ZVdp
dGhJQ0NQcm9maWxlKENGRGF0YVJlZiBkYXRhKQoreworI2lmICFkZWZpbmVkKFRBUkdFVElOR19U
SUdFUikgJiYgIWRlZmluZWQoVEFSR0VUSU5HX0xFT1BBUkQpCisgICAgcmV0dXJuIENHQ29sb3JT
cGFjZUNyZWF0ZVdpdGhJQ0NQcm9maWxlKGRhdGEpOworI2Vsc2UKKyAgICBSZXRhaW5QdHI8Q0dE
YXRhUHJvdmlkZXJSZWY+IHByb2ZpbGVEYXRhUHJvdmlkZXIoQWRvcHRDRiwgQ0dEYXRhUHJvdmlk
ZXJDcmVhdGVXaXRoQ0ZEYXRhKGRhdGEpKTsKKyAgICBDR0Zsb2F0IHJhbmdlc1tdID0gezAuMCwg
MjU1LjAsIDAuMCwgMjU1LjAsIDAuMCwgMjU1LjB9OworICAgIHJldHVybiBDR0NvbG9yU3BhY2VD
cmVhdGVJQ0NCYXNlZCgzLCByYW5nZXMsIHByb2ZpbGVEYXRhUHJvdmlkZXIuZ2V0KCksIGRldmlj
ZUNvbG9yU3BhY2UuZ2V0KCkpOworI2VuZGlmCit9CisKK3N0YXRpYyBHQ0NvbG9yU3BhY2VSZWYg
d2tDb2xvclNwYWNlKGNvbnN0IENvbG9yUHJvZmlsZSYgY29sb3JQcm9maWxlKQogewotICAgIC8v
IEZJWE1FOiBGaWd1cmUgb3V0IHRoZSByaWdodCBjb2xvciBzcGFjZS4KICAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+LCBkZXZpY2VDb2xvclNwYWNlLCAo
QWRvcHRDRiwgQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlUkdCKCkpKTsKKworICAgIGlmIChjb2xv
clByb2ZpbGUuaXNFbXB0eSgpKSB7CisgICAgICAgIGRldmljZUNvbG9yU3BhY2UtPnJlZigpOyAv
LyBBZGQgZmxvYXRpbmcgcmVmIGZvciByZXR1cm4gdmFsdWUgdG8gbWF0Y2ggQ0cgY29udmVudGlv
bnMuCisgICAgICAgIHJldHVybiBkZXZpY2VDb2xvclNwYWNlLmdldCgpOworICAgIH0KKworICAg
IFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGEoQWRvcHRDRiwgQ0ZEYXRhQ3JlYXRlKGtDRkFsbG9j
YXRvckRlZmF1bHQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPihjb2xvclByb2ZpbGUu
ZGF0YSgpKSwgY29sb3JQcm9maWxlLnNpemUoKSkpOworICAgIHJldHVybiB3a0NHQ29sb3JTcGFj
ZUNyZWF0ZVdpdGhJQ0NQcm9maWxlKGRhdGEuZ2V0KCkpOworfQorCitOYXRpdmVJbWFnZVB0ciBS
R0JBMzJCdWZmZXI6OmFzTmV3TmF0aXZlSW1hZ2UoKSBjb25zdAoreworICAgIFJldGFpblB0cjxD
R0NvbG9yU3BhY2VSZWY+IGNvbG9yU3BhY2UoQWRvcHRDRiwgd2tDb2xvclNwYWNlKG1fY29sb3JQ
cm9maWxlKSk7CiAgICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIo
QWRvcHRDRiwgQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRhKG1fYmFja2luZ1N0b3JlLmdl
dCgpKSk7CiAKICAgICBDR0ltYWdlQWxwaGFJbmZvIGFscGhhSW5mbyA9IG1fcHJlbXVsdGlwbHlB
bHBoYSA/IGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgOiBrQ0dJbWFnZUFscGhhRmly
c3Q7CiAKLSAgICByZXR1cm4gQ0dJbWFnZUNyZWF0ZSh3aWR0aCgpLCBoZWlnaHQoKSwgOCwgMzIs
IHdpZHRoKCkgKiBzaXplb2YoUGl4ZWxEYXRhKSwgZGV2aWNlQ29sb3JTcGFjZS5nZXQoKSwKKyAg
ICByZXR1cm4gQ0dJbWFnZUNyZWF0ZSh3aWR0aCgpLCBoZWlnaHQoKSwgOCwgMzIsIHdpZHRoKCkg
KiBzaXplb2YoUGl4ZWxEYXRhKSwgY29sb3JTcGFjZS5nZXQoKSwKICAgICAgICAgYWxwaGFJbmZv
IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0LCBkYXRhUHJvdmlkZXIuZ2V0KCksIDAsIGZhbHNl
LCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcCBiL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggOTQw
ZTRjNGNmMmE1ZWU0NjQzOTcyNDlkODYxMWViNzBkMTg2Y2ZlNC4uNjVhN2UwNzdiMTk5NjNlMjM4
MjIzY2U1NzgyMjAzYmE1MWU4OTNiMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCkBAIC0yNDksNiArMjQ5LDE3
IEBAIHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpoZWFkZXJBdmFpbGFibGUoKQogICAgIGludCBiaXRE
ZXB0aCwgY29sb3JUeXBlLCBpbnRlcmxhY2VUeXBlLCBjb21wcmVzc2lvblR5cGUsIGZpbHRlclR5
cGUsIGNoYW5uZWxzOwogICAgIHBuZ19nZXRfSUhEUihwbmcsIGluZm8sICZ3aWR0aCwgJmhlaWdo
dCwgJmJpdERlcHRoLCAmY29sb3JUeXBlLCAmaW50ZXJsYWNlVHlwZSwgJmNvbXByZXNzaW9uVHlw
ZSwgJmZpbHRlclR5cGUpOwogCisjaWZkZWYgUE5HX2lDQ1BfU1VQUE9SVEVECisgICAgY2hhciog
cHJvZmlsZU5hbWU7CisgICAgaW50IGNvbXByZXNzaW9uOworICAgIGNoYXIqIHByb2ZpbGU7Cisg
ICAgcG5nX3VpbnRfMzIgcHJvZmlsZUxlbmd0aDsKKyAgICBwbmdfZ2V0X2lDQ1AocG5nLCBpbmZv
LCAmcHJvZmlsZU5hbWUsICZjb21wcmVzc2lvbiwgJnByb2ZpbGUsICZwcm9maWxlTGVuZ3RoKTsK
KyAgICBtX2NvbG9yUHJvZmlsZS5jbGVhcigpOworICAgIGlmIChwcm9maWxlKQorICAgICAgICBt
X2NvbG9yUHJvZmlsZS5hcHBlbmQocHJvZmlsZSwgcHJvZmlsZUxlbmd0aCk7CisjZW5kaWYKKwog
ICAgIC8vIFRoZSBvcHRpb25zIHdlIHNldCBoZXJlIG1hdGNoIHdoYXQgTW96aWxsYSBkb2VzLgog
CiAgICAgLy8gRXhwYW5kIHRvIGVuc3VyZSB3ZSB1c2UgMjQtYml0IGZvciBSR0IgYW5kIDMyLWJp
dCBmb3IgUkdCQS4KQEAgLTMxMSw2ICszMjIsNyBAQCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6cm93
QXZhaWxhYmxlKHVuc2lnbmVkIGNoYXIqIHJvd0J1ZmZlciwgdW5zaWduZWQgcm93SW5kZXgsCiAg
ICAgICAgIH0KICAgICAgICAgYnVmZmVyLnNldFN0YXR1cyhSR0JBMzJCdWZmZXI6OkZyYW1lUGFy
dGlhbCk7CiAgICAgICAgIGJ1ZmZlci5zZXRIYXNBbHBoYShmYWxzZSk7CisgICAgICAgIGJ1ZmZl
ci5zZXRDb2xvclByb2ZpbGUobV9jb2xvclByb2ZpbGUpOwogCiAgICAgICAgIC8vIEZvciBQTkdz
LCB0aGUgZnJhbWUgYWx3YXlzIGZpbGxzIHRoZSBlbnRpcmUgaW1hZ2UuCiAgICAgICAgIGJ1ZmZl
ci5zZXRSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgc2l6ZSgpKSk7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3F0L1JHQkEzMkJ1ZmZlclF0LmNwcCBiL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcXQvUkdCQTMyQnVmZmVyUXQuY3BwCmluZGV4IGE3
ODIzNzMxMTU2MWRlNmZmNTgyYjQ2ODU1NDI4NTBjMWMxMjg0NmEuLjczYWJiYzU1NzlhODFlNDRi
M2Y5YmZjYzEyM2QxZTVjMzY3MTA4ZmEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvcXQvUkdCQTMyQnVmZmVyUXQuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvcXQvUkdCQTMyQnVmZmVyUXQuY3BwCkBAIC0xMjQsNiArMTI0LDExIEBA
IHZvaWQgUkdCQTMyQnVmZmVyOjpzZXRIYXNBbHBoYShib29sIGFscGhhKQogICAgIG1faGFzQWxw
aGEgPSBhbHBoYTsKIH0KIAordm9pZCBSR0JBMzJCdWZmZXI6OnNldENvbG9yUHJvZmlsZShjb25z
dCBDb2xvclByb2ZpbGUmIGNvbG9yUHJvZmlsZSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCiB2b2lkIFJHQkEzMkJ1ZmZlcjo6c2V0U3RhdHVzKEZyYW1lU3RhdHVzIHN0YXR1cykKIHsK
ICAgICBtX3N0YXR1cyA9IHN0YXR1czsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvc2tpYS9JbWFnZURlY29kZXJTa2lhLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvc2tpYS9JbWFnZURlY29kZXJTa2lhLmNwcAppbmRleCAzZjQzNWU0MTJh
NmI1YjM3ZDM1MjRiNjI5ZTMwM2E2ZmJiZWJkYTIwLi45NGQ2ZTgyODJiN2ZhMjVlMTViZTBkYzVl
MGJlMGFiYWIzZWE5OGZhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL3NraWEvSW1hZ2VEZWNvZGVyU2tpYS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9za2lhL0ltYWdlRGVjb2RlclNraWEuY3BwCkBAIC0yNyw2ICsyNyw4IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW1hZ2VEZWNvZGVyLmgiCiAKKyNpbmNsdWRl
ICJOb3RJbXBsZW1lbnRlZC5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJHQkEzMkJ1ZmZl
cjo6UkdCQTMyQnVmZmVyKCkKQEAgLTEwOSw2ICsxMTEsMTEgQEAgdm9pZCBSR0JBMzJCdWZmZXI6
OnNldEhhc0FscGhhKGJvb2wgYWxwaGEpCiAgICAgbV9iaXRtYXAuc2V0SXNPcGFxdWUoIWFscGhh
KTsKIH0KIAordm9pZCBSR0JBMzJCdWZmZXI6OnNldENvbG9yUHJvZmlsZShjb25zdCBDb2xvclBy
b2ZpbGUmIGNvbG9yUHJvZmlsZSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiB2b2lk
IFJHQkEzMkJ1ZmZlcjo6c2V0U3RhdHVzKEZyYW1lU3RhdHVzIHN0YXR1cykKIHsKICAgICBtX3N0
YXR1cyA9IHN0YXR1czsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72552</attachid>
            <date>2010-11-01 13:51:19 -0700</date>
            <delta_ts>2010-11-01 15:28:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48170-20101101135118.patch</filename>
            <type>text/plain</type>
            <size>8853</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OTIwNDA4ODBlMzMzZjI2NjI1NTg4YTEyODRlNWJmNDBhMmZjNTAzYy4uMzRlODA3MGQ4ZjA4NDQx
NWRmYzI0MTNlYzYxZDRhMWUxNDQyMzAwNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAxMC0xMC0zMSAgQWRh
bSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFtDaHJvbWl1bV0gQWRkIElDQyBzdXBwb3J0IGZvciBQTkcg
b24gTWFjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
ODE3MAorCisgICAgICAgIFRoaXMganVzdCBwaXBlcyB0aGUgSUNDIHByb2ZpbGUgZnJvbSBsaWJw
bmcgdG8gQ29yZUdyYXBoaWNzLiAgVGhpcworICAgICAgICBwYXRjaCB3b3VsZCBoYXZlIGJlZW4g
YSBsb3QgcHJldHRpZXIgb24gU25vdyBMZW9wYXJkLCBidXQgd2UgaGF2ZSB0bworICAgICAgICB1
c2UgYSBzb21ld2hhdCB1Z2x5IEFQSSB0byBnZXQgdGhpcyB0byB3b3JrIG9uIExlb3BhcmQuCisK
KyAgICAgICAgVGhpcyBpcyBjb3ZlcmVkIGJ5IGFib3V0IGluZmluaXRlIHRlc3RzLgorCisgICAg
ICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJHQkEzMkJ1ZmZlcjo6c2V0Q29sb3JQcm9maWxlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9jZy9JbWFnZURlY29kZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
R0JBMzJCdWZmZXI6OmFzTmV3TmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UE5H
SW1hZ2VEZWNvZGVyOjpoZWFkZXJBdmFpbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6UE5HSW1h
Z2VEZWNvZGVyOjpyb3dBdmFpbGFibGUpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL3F0L1JHQkEzMkJ1ZmZlclF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJHQkEzMkJ1ZmZl
cjo6c2V0Q29sb3JQcm9maWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9z
a2lhL0ltYWdlRGVjb2RlclNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UkdCQTMyQnVmZmVy
OjpzZXRDb2xvclByb2ZpbGUpOgorCiAyMDEwLTExLTAxICBEYXZpZCBIeWF0dCAgPGh5YXR0QGFw
cGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYW4gQmVybnN0ZWluLgpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwCmluZGV4IDlmZmJi
ZjU2ZmZkNDk1ODI2MmUwYmFjYzkxOTRlM2NkNDRiNTQ0YjAuLmE0YWE2MzBiODNiNjhiYTIxNjZl
MzEzYTQwZTA3NDM0MmFhMjZiMmUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL0ltYWdlRGVjb2Rlci5jcHAKQEAgLTE4OSw2ICsxODksMTEgQEAgdm9pZCBSR0JBMzJC
dWZmZXI6OnNldEhhc0FscGhhKGJvb2wgYWxwaGEpCiAgICAgbV9oYXNBbHBoYSA9IGFscGhhOwog
fQogCit2b2lkIFJHQkEzMkJ1ZmZlcjo6c2V0Q29sb3JQcm9maWxlKGNvbnN0IENvbG9yUHJvZmls
ZSYgY29sb3JQcm9maWxlKQoreworICAgIG1fY29sb3JQcm9maWxlID0gY29sb3JQcm9maWxlOwor
fQorCiB2b2lkIFJHQkEzMkJ1ZmZlcjo6c2V0U3RhdHVzKEZyYW1lU3RhdHVzIHN0YXR1cykKIHsK
ICAgICBtX3N0YXR1cyA9IHN0YXR1czsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmggYi9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL0ltYWdlRGVjb2Rlci5oCmluZGV4IGIwN2M3MmIxZTU0MDliMjkxN2I2ODIxNzY5ZDg2YzBm
NWMxM2M4NGQuLjk5NWIyNDBhYzdhMWQ3NDY4ZWY3NDY2ZGIyZmJlYjFhMGRkYmQ0NjIgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKKysr
IGIvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaApAQCAtNDYs
NiArNDYsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyAgICAvLyBGSVhNRTogRG8gd2Ug
d2FudCBiZXR0ZXIgZW5jYXBzdWxhdGlvbj8KKyAgICB0eXBlZGVmIFZlY3RvcjxjaGFyPiBDb2xv
clByb2ZpbGU7CisKICAgICAvLyBUaGUgUkdCQTMyQnVmZmVyIG9iamVjdCByZXByZXNlbnRzIHRo
ZSBkZWNvZGVkIGltYWdlIGRhdGEgaW4gUkdCQTMyCiAgICAgLy8gZm9ybWF0LiAgVGhpcyBidWZm
ZXIgaXMgd2hhdCBhbGwgZGVjb2RlcnMgd3JpdGUgYSBzaW5nbGUgZnJhbWUgaW50by4KICAgICAv
LyBGcmFtZXMgYXJlIHRoZW4gaW5zdGFudGlhdGVkIGZvciBkcmF3aW5nIGJ5IGJlaW5nIGhhbmRl
ZCB0aGlzIGJ1ZmZlci4KQEAgLTEyNSw2ICsxMjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlbXVsdGlw
bHlBbHBoYTsgfQogCiAgICAgICAgIHZvaWQgc2V0SGFzQWxwaGEoYm9vbCBhbHBoYSk7CisgICAg
ICAgIHZvaWQgc2V0Q29sb3JQcm9maWxlKGNvbnN0IENvbG9yUHJvZmlsZSYpOwogICAgICAgICB2
b2lkIHNldFJlY3QoY29uc3QgSW50UmVjdCYgcikgeyBtX3JlY3QgPSByOyB9CiAgICAgICAgIHZv
aWQgc2V0U3RhdHVzKEZyYW1lU3RhdHVzIHN0YXR1cyk7CiAgICAgICAgIHZvaWQgc2V0RHVyYXRp
b24odW5zaWduZWQgZHVyYXRpb24pIHsgbV9kdXJhdGlvbiA9IGR1cmF0aW9uOyB9CkBAIC0xOTIs
NiArMTk2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gc2FtZSBhcyBJbWFnZURlY29kZXI6Om1fc2l6ZS4KICAgICAgICAgYm9vbCBtX2hhc0FscGhh
OyAvLyBXaGV0aGVyIG9yIG5vdCBhbnkgb2YgdGhlIHBpeGVscyBpbiB0aGUgYnVmZmVyCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gaGF2ZSB0cmFuc3BhcmVuY3kuCisgICAgICAgIENvbG9y
UHJvZmlsZSBtX2NvbG9yUHJvZmlsZTsKICNlbmRpZgogICAgICAgICBJbnRSZWN0IG1fcmVjdDsg
Ly8gVGhlIHJlY3Qgb2YgdGhlIG9yaWdpbmFsIHNwZWNpZmllZCBmcmFtZSB3aXRoaW4KICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIHRoZSBvdmVyYWxsIGJ1ZmZlci4gIFRoaXMgd2lsbCBhbHdh
eXMganVzdCBiZQpAQCAtMzQ0LDYgKzM0OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAg
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7IC8vIFRoZSBlbmNvZGVkIGRhdGEuCiAg
ICAgICAgIFZlY3RvcjxSR0JBMzJCdWZmZXI+IG1fZnJhbWVCdWZmZXJDYWNoZTsKKyAgICAgICAg
Q29sb3JQcm9maWxlIG1fY29sb3JQcm9maWxlOwogICAgICAgICBib29sIG1fc2NhbGVkOwogICAg
ICAgICBWZWN0b3I8aW50PiBtX3NjYWxlZENvbHVtbnM7CiAgICAgICAgIFZlY3RvcjxpbnQ+IG1f
c2NhbGVkUm93czsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Y2cvSW1hZ2VEZWNvZGVyQ0cuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9j
Zy9JbWFnZURlY29kZXJDRy5jcHAKaW5kZXggMmZhYzdkYWExODQzM2Y4ZmE5MmJlYjQ0YTk2MzU5
OWYyYjkzN2YzZC4uYTViN2M3ODY3MjllYzBiMzA4MDAxZGU0ZjE4MjAxYzgxMDUzNmYxNiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jZy9JbWFnZURlY29kZXJD
Ry5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jZy9JbWFnZURlY29k
ZXJDRy5jcHAKQEAgLTY0LDE1ICs2NCwzMyBAQCBib29sIFJHQkEzMkJ1ZmZlcjo6c2V0U2l6ZShp
bnQgbmV3V2lkdGgsIGludCBuZXdIZWlnaHQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLU5hdGl2
ZUltYWdlUHRyIFJHQkEzMkJ1ZmZlcjo6YXNOZXdOYXRpdmVJbWFnZSgpIGNvbnN0CitzdGF0aWMg
Q0dDb2xvclNwYWNlUmVmIGNyZWF0ZUNvbG9yU3BhY2UoY29uc3QgQ29sb3JQcm9maWxlJiBjb2xv
clByb2ZpbGUpCiB7Ci0gICAgLy8gRklYTUU6IEZpZ3VyZSBvdXQgdGhlIHJpZ2h0IGNvbG9yIHNw
YWNlLgogICAgIERFRklORV9TVEFUSUNfTE9DQUwoUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4s
IGRldmljZUNvbG9yU3BhY2UsIChBZG9wdENGLCBDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VSR0Io
KSkpOworCisgICAgaWYgKGNvbG9yUHJvZmlsZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgQ0ZSZXRh
aW4oZGV2aWNlQ29sb3JTcGFjZS5nZXQoKSk7CisgICAgICAgIHJldHVybiBkZXZpY2VDb2xvclNw
YWNlLmdldCgpOworICAgIH0KKworICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGEoQWRvcHRD
RiwgQ0ZEYXRhQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgVUludDgqPihjb2xvclByb2ZpbGUuZGF0YSgpKSwgY29sb3JQcm9maWxlLnNpemUoKSkpOwor
I2lmICFkZWZpbmVkKFRBUkdFVElOR19USUdFUikgJiYgIWRlZmluZWQoVEFSR0VUSU5HX0xFT1BB
UkQpCisgICAgcmV0dXJuIENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhJQ0NQcm9maWxlKGRhdGEuZ2V0
KCkpOworI2Vsc2UKKyAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IHByb2ZpbGVEYXRh
UHJvdmlkZXIoQWRvcHRDRiwgQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRhKGRhdGEuZ2V0
KCkpKTsKKyAgICBDR0Zsb2F0IHJhbmdlc1tdID0gezAuMCwgMjU1LjAsIDAuMCwgMjU1LjAsIDAu
MCwgMjU1LjB9OworICAgIHJldHVybiBDR0NvbG9yU3BhY2VDcmVhdGVJQ0NCYXNlZCgzLCByYW5n
ZXMsIHByb2ZpbGVEYXRhUHJvdmlkZXIuZ2V0KCksIGRldmljZUNvbG9yU3BhY2UuZ2V0KCkpOwor
I2VuZGlmCit9CisKK05hdGl2ZUltYWdlUHRyIFJHQkEzMkJ1ZmZlcjo6YXNOZXdOYXRpdmVJbWFn
ZSgpIGNvbnN0Cit7CisgICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY29sb3JTcGFjZShB
ZG9wdENGLCBjcmVhdGVDb2xvclNwYWNlKG1fY29sb3JQcm9maWxlKSk7CiAgICAgUmV0YWluUHRy
PENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIoQWRvcHRDRiwgQ0dEYXRhUHJvdmlkZXJD
cmVhdGVXaXRoQ0ZEYXRhKG1fYmFja2luZ1N0b3JlLmdldCgpKSk7CiAKICAgICBDR0ltYWdlQWxw
aGFJbmZvIGFscGhhSW5mbyA9IG1fcHJlbXVsdGlwbHlBbHBoYSA/IGtDR0ltYWdlQWxwaGFQcmVt
dWx0aXBsaWVkRmlyc3QgOiBrQ0dJbWFnZUFscGhhRmlyc3Q7CiAKLSAgICByZXR1cm4gQ0dJbWFn
ZUNyZWF0ZSh3aWR0aCgpLCBoZWlnaHQoKSwgOCwgMzIsIHdpZHRoKCkgKiBzaXplb2YoUGl4ZWxE
YXRhKSwgZGV2aWNlQ29sb3JTcGFjZS5nZXQoKSwKKyAgICByZXR1cm4gQ0dJbWFnZUNyZWF0ZSh3
aWR0aCgpLCBoZWlnaHQoKSwgOCwgMzIsIHdpZHRoKCkgKiBzaXplb2YoUGl4ZWxEYXRhKSwgY29s
b3JTcGFjZS5nZXQoKSwKICAgICAgICAgYWxwaGFJbmZvIHwga0NHQml0bWFwQnl0ZU9yZGVyMzJI
b3N0LCBkYXRhUHJvdmlkZXIuZ2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZh
dWx0KTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9w
bmcvUE5HSW1hZ2VEZWNvZGVyLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
cG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggOTQwZTRjNGNmMmE1ZWU0NjQzOTcyNDlkODYx
MWViNzBkMTg2Y2ZlNC4uNjVhN2UwNzdiMTk5NjNlMjM4MjIzY2U1NzgyMjAzYmE1MWU4OTNiMSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VE
ZWNvZGVyLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJ
bWFnZURlY29kZXIuY3BwCkBAIC0yNDksNiArMjQ5LDE3IEBAIHZvaWQgUE5HSW1hZ2VEZWNvZGVy
OjpoZWFkZXJBdmFpbGFibGUoKQogICAgIGludCBiaXREZXB0aCwgY29sb3JUeXBlLCBpbnRlcmxh
Y2VUeXBlLCBjb21wcmVzc2lvblR5cGUsIGZpbHRlclR5cGUsIGNoYW5uZWxzOwogICAgIHBuZ19n
ZXRfSUhEUihwbmcsIGluZm8sICZ3aWR0aCwgJmhlaWdodCwgJmJpdERlcHRoLCAmY29sb3JUeXBl
LCAmaW50ZXJsYWNlVHlwZSwgJmNvbXByZXNzaW9uVHlwZSwgJmZpbHRlclR5cGUpOwogCisjaWZk
ZWYgUE5HX2lDQ1BfU1VQUE9SVEVECisgICAgY2hhciogcHJvZmlsZU5hbWU7CisgICAgaW50IGNv
bXByZXNzaW9uOworICAgIGNoYXIqIHByb2ZpbGU7CisgICAgcG5nX3VpbnRfMzIgcHJvZmlsZUxl
bmd0aDsKKyAgICBwbmdfZ2V0X2lDQ1AocG5nLCBpbmZvLCAmcHJvZmlsZU5hbWUsICZjb21wcmVz
c2lvbiwgJnByb2ZpbGUsICZwcm9maWxlTGVuZ3RoKTsKKyAgICBtX2NvbG9yUHJvZmlsZS5jbGVh
cigpOworICAgIGlmIChwcm9maWxlKQorICAgICAgICBtX2NvbG9yUHJvZmlsZS5hcHBlbmQocHJv
ZmlsZSwgcHJvZmlsZUxlbmd0aCk7CisjZW5kaWYKKwogICAgIC8vIFRoZSBvcHRpb25zIHdlIHNl
dCBoZXJlIG1hdGNoIHdoYXQgTW96aWxsYSBkb2VzLgogCiAgICAgLy8gRXhwYW5kIHRvIGVuc3Vy
ZSB3ZSB1c2UgMjQtYml0IGZvciBSR0IgYW5kIDMyLWJpdCBmb3IgUkdCQS4KQEAgLTMxMSw2ICsz
MjIsNyBAQCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6cm93QXZhaWxhYmxlKHVuc2lnbmVkIGNoYXIq
IHJvd0J1ZmZlciwgdW5zaWduZWQgcm93SW5kZXgsCiAgICAgICAgIH0KICAgICAgICAgYnVmZmVy
LnNldFN0YXR1cyhSR0JBMzJCdWZmZXI6OkZyYW1lUGFydGlhbCk7CiAgICAgICAgIGJ1ZmZlci5z
ZXRIYXNBbHBoYShmYWxzZSk7CisgICAgICAgIGJ1ZmZlci5zZXRDb2xvclByb2ZpbGUobV9jb2xv
clByb2ZpbGUpOwogCiAgICAgICAgIC8vIEZvciBQTkdzLCB0aGUgZnJhbWUgYWx3YXlzIGZpbGxz
IHRoZSBlbnRpcmUgaW1hZ2UuCiAgICAgICAgIGJ1ZmZlci5zZXRSZWN0KEludFJlY3QoSW50UG9p
bnQoKSwgc2l6ZSgpKSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL3F0L1JHQkEzMkJ1ZmZlclF0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvcXQvUkdCQTMyQnVmZmVyUXQuY3BwCmluZGV4IGE3ODIzNzMxMTU2MWRlNmZmNTgyYjQ2ODU1
NDI4NTBjMWMxMjg0NmEuLjk5ODIzNGY3OTFlNjk3NTQyMGU5NmNmMTU3NDBlMGUzMDZiYjdmZjgg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcXQvUkdCQTMyQnVm
ZmVyUXQuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcXQvUkdCQTMy
QnVmZmVyUXQuY3BwCkBAIC0yOCw2ICsyOCw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiSW1hZ2VEZWNvZGVyLmgiCiAKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorCiAj
aW5jbHVkZSA8UVBpeG1hcD4KICNpbmNsdWRlIDxzdGRpby5oPgogCkBAIC0xMjQsNiArMTI2LDEx
IEBAIHZvaWQgUkdCQTMyQnVmZmVyOjpzZXRIYXNBbHBoYShib29sIGFscGhhKQogICAgIG1faGFz
QWxwaGEgPSBhbHBoYTsKIH0KIAordm9pZCBSR0JBMzJCdWZmZXI6OnNldENvbG9yUHJvZmlsZShj
b25zdCBDb2xvclByb2ZpbGUmIGNvbG9yUHJvZmlsZSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCiB2b2lkIFJHQkEzMkJ1ZmZlcjo6c2V0U3RhdHVzKEZyYW1lU3RhdHVzIHN0YXR1cykK
IHsKICAgICBtX3N0YXR1cyA9IHN0YXR1czsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvc2tpYS9JbWFnZURlY29kZXJTa2lhLmNwcCBiL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvc2tpYS9JbWFnZURlY29kZXJTa2lhLmNwcAppbmRleCAzZjQzNWU0
MTJhNmI1YjM3ZDM1MjRiNjI5ZTMwM2E2ZmJiZWJkYTIwLi45NGQ2ZTgyODJiN2ZhMjVlMTViZTBk
YzVlMGJlMGFiYWIzZWE5OGZhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL3NraWEvSW1hZ2VEZWNvZGVyU2tpYS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9za2lhL0ltYWdlRGVjb2RlclNraWEuY3BwCkBAIC0yNyw2ICsyNyw4IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW1hZ2VEZWNvZGVyLmgiCiAKKyNpbmNs
dWRlICJOb3RJbXBsZW1lbnRlZC5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJHQkEzMkJ1
ZmZlcjo6UkdCQTMyQnVmZmVyKCkKQEAgLTEwOSw2ICsxMTEsMTEgQEAgdm9pZCBSR0JBMzJCdWZm
ZXI6OnNldEhhc0FscGhhKGJvb2wgYWxwaGEpCiAgICAgbV9iaXRtYXAuc2V0SXNPcGFxdWUoIWFs
cGhhKTsKIH0KIAordm9pZCBSR0JBMzJCdWZmZXI6OnNldENvbG9yUHJvZmlsZShjb25zdCBDb2xv
clByb2ZpbGUmIGNvbG9yUHJvZmlsZSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiB2
b2lkIFJHQkEzMkJ1ZmZlcjo6c2V0U3RhdHVzKEZyYW1lU3RhdHVzIHN0YXR1cykKIHsKICAgICBt
X3N0YXR1cyA9IHN0YXR1czsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72574</attachid>
            <date>2010-11-01 15:28:07 -0700</date>
            <delta_ts>2010-11-01 17:35:21 -0700</delta_ts>
            <desc>for landing</desc>
            <filename>bug-48170-20101101152806.patch</filename>
            <type>text/plain</type>
            <size>9236</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OTIwNDA4ODBlMzMzZjI2NjI1NTg4YTEyODRlNWJmNDBhMmZjNTAzYy4uMzRlODA3MGQ4ZjA4NDQx
NWRmYzI0MTNlYzYxZDRhMWUxNDQyMzAwNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAxMC0xMC0zMSAgQWRh
bSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFtDaHJvbWl1bV0gQWRkIElDQyBzdXBwb3J0IGZvciBQTkcg
b24gTWFjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
ODE3MAorCisgICAgICAgIFRoaXMganVzdCBwaXBlcyB0aGUgSUNDIHByb2ZpbGUgZnJvbSBsaWJw
bmcgdG8gQ29yZUdyYXBoaWNzLiAgVGhpcworICAgICAgICBwYXRjaCB3b3VsZCBoYXZlIGJlZW4g
YSBsb3QgcHJldHRpZXIgb24gU25vdyBMZW9wYXJkLCBidXQgd2UgaGF2ZSB0bworICAgICAgICB1
c2UgYSBzb21ld2hhdCB1Z2x5IEFQSSB0byBnZXQgdGhpcyB0byB3b3JrIG9uIExlb3BhcmQuCisK
KyAgICAgICAgVGhpcyBpcyBjb3ZlcmVkIGJ5IGFib3V0IGluZmluaXRlIHRlc3RzLgorCisgICAg
ICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJHQkEzMkJ1ZmZlcjo6c2V0Q29sb3JQcm9maWxlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9jZy9JbWFnZURlY29kZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
R0JBMzJCdWZmZXI6OmFzTmV3TmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UE5H
SW1hZ2VEZWNvZGVyOjpoZWFkZXJBdmFpbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6UE5HSW1h
Z2VEZWNvZGVyOjpyb3dBdmFpbGFibGUpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL3F0L1JHQkEzMkJ1ZmZlclF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJHQkEzMkJ1ZmZl
cjo6c2V0Q29sb3JQcm9maWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9z
a2lhL0ltYWdlRGVjb2RlclNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UkdCQTMyQnVmZmVy
OjpzZXRDb2xvclByb2ZpbGUpOgorCiAyMDEwLTExLTAxICBEYXZpZCBIeWF0dCAgPGh5YXR0QGFw
cGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYW4gQmVybnN0ZWluLgpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwCmluZGV4IDlmZmJi
ZjU2ZmZkNDk1ODI2MmUwYmFjYzkxOTRlM2NkNDRiNTQ0YjAuLmE0YWE2MzBiODNiNjhiYTIxNjZl
MzEzYTQwZTA3NDM0MmFhMjZiMmUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL0ltYWdlRGVjb2Rlci5jcHAKQEAgLTE4OSw2ICsxODksMTEgQEAgdm9pZCBSR0JBMzJC
dWZmZXI6OnNldEhhc0FscGhhKGJvb2wgYWxwaGEpCiAgICAgbV9oYXNBbHBoYSA9IGFscGhhOwog
fQogCit2b2lkIFJHQkEzMkJ1ZmZlcjo6c2V0Q29sb3JQcm9maWxlKGNvbnN0IENvbG9yUHJvZmls
ZSYgY29sb3JQcm9maWxlKQoreworICAgIG1fY29sb3JQcm9maWxlID0gY29sb3JQcm9maWxlOwor
fQorCiB2b2lkIFJHQkEzMkJ1ZmZlcjo6c2V0U3RhdHVzKEZyYW1lU3RhdHVzIHN0YXR1cykKIHsK
ICAgICBtX3N0YXR1cyA9IHN0YXR1czsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmggYi9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL0ltYWdlRGVjb2Rlci5oCmluZGV4IGIwN2M3MmIxZTU0MDliMjkxN2I2ODIxNzY5ZDg2YzBm
NWMxM2M4NGQuLjk5NWIyNDBhYzdhMWQ3NDY4ZWY3NDY2ZGIyZmJlYjFhMGRkYmQ0NjIgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKKysr
IGIvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaApAQCAtNDYs
NiArNDYsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyAgICAvLyBGSVhNRTogRG8gd2Ug
d2FudCBiZXR0ZXIgZW5jYXBzdWxhdGlvbj8KKyAgICB0eXBlZGVmIFZlY3RvcjxjaGFyPiBDb2xv
clByb2ZpbGU7CisKICAgICAvLyBUaGUgUkdCQTMyQnVmZmVyIG9iamVjdCByZXByZXNlbnRzIHRo
ZSBkZWNvZGVkIGltYWdlIGRhdGEgaW4gUkdCQTMyCiAgICAgLy8gZm9ybWF0LiAgVGhpcyBidWZm
ZXIgaXMgd2hhdCBhbGwgZGVjb2RlcnMgd3JpdGUgYSBzaW5nbGUgZnJhbWUgaW50by4KICAgICAv
LyBGcmFtZXMgYXJlIHRoZW4gaW5zdGFudGlhdGVkIGZvciBkcmF3aW5nIGJ5IGJlaW5nIGhhbmRl
ZCB0aGlzIGJ1ZmZlci4KQEAgLTEyNSw2ICsxMjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlbXVsdGlw
bHlBbHBoYTsgfQogCiAgICAgICAgIHZvaWQgc2V0SGFzQWxwaGEoYm9vbCBhbHBoYSk7CisgICAg
ICAgIHZvaWQgc2V0Q29sb3JQcm9maWxlKGNvbnN0IENvbG9yUHJvZmlsZSYpOwogICAgICAgICB2
b2lkIHNldFJlY3QoY29uc3QgSW50UmVjdCYgcikgeyBtX3JlY3QgPSByOyB9CiAgICAgICAgIHZv
aWQgc2V0U3RhdHVzKEZyYW1lU3RhdHVzIHN0YXR1cyk7CiAgICAgICAgIHZvaWQgc2V0RHVyYXRp
b24odW5zaWduZWQgZHVyYXRpb24pIHsgbV9kdXJhdGlvbiA9IGR1cmF0aW9uOyB9CkBAIC0xOTIs
NiArMTk2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gc2FtZSBhcyBJbWFnZURlY29kZXI6Om1fc2l6ZS4KICAgICAgICAgYm9vbCBtX2hhc0FscGhh
OyAvLyBXaGV0aGVyIG9yIG5vdCBhbnkgb2YgdGhlIHBpeGVscyBpbiB0aGUgYnVmZmVyCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gaGF2ZSB0cmFuc3BhcmVuY3kuCisgICAgICAgIENvbG9y
UHJvZmlsZSBtX2NvbG9yUHJvZmlsZTsKICNlbmRpZgogICAgICAgICBJbnRSZWN0IG1fcmVjdDsg
Ly8gVGhlIHJlY3Qgb2YgdGhlIG9yaWdpbmFsIHNwZWNpZmllZCBmcmFtZSB3aXRoaW4KICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIHRoZSBvdmVyYWxsIGJ1ZmZlci4gIFRoaXMgd2lsbCBhbHdh
eXMganVzdCBiZQpAQCAtMzQ0LDYgKzM0OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAg
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7IC8vIFRoZSBlbmNvZGVkIGRhdGEuCiAg
ICAgICAgIFZlY3RvcjxSR0JBMzJCdWZmZXI+IG1fZnJhbWVCdWZmZXJDYWNoZTsKKyAgICAgICAg
Q29sb3JQcm9maWxlIG1fY29sb3JQcm9maWxlOwogICAgICAgICBib29sIG1fc2NhbGVkOwogICAg
ICAgICBWZWN0b3I8aW50PiBtX3NjYWxlZENvbHVtbnM7CiAgICAgICAgIFZlY3RvcjxpbnQ+IG1f
c2NhbGVkUm93czsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Y2cvSW1hZ2VEZWNvZGVyQ0cuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9j
Zy9JbWFnZURlY29kZXJDRy5jcHAKaW5kZXggMmZhYzdkYWExODQzM2Y4ZmE5MmJlYjQ0YTk2MzU5
OWYyYjkzN2YzZC4uY2U2ZTI3YzVkNzJkM2FmMGMxM2VlMjRlNTkzYTVhYWViMjlhYTY0MyAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jZy9JbWFnZURlY29kZXJD
Ry5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jZy9JbWFnZURlY29k
ZXJDRy5jcHAKQEAgLTY0LDE1ICs2NCwzMCBAQCBib29sIFJHQkEzMkJ1ZmZlcjo6c2V0U2l6ZShp
bnQgbmV3V2lkdGgsIGludCBuZXdIZWlnaHQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3N0YXRp
YyBDR0NvbG9yU3BhY2VSZWYgY3JlYXRlQ29sb3JTcGFjZShjb25zdCBDb2xvclByb2ZpbGUmIGNv
bG9yUHJvZmlsZSkKK3sKKyAgICBpZiAoY29sb3JQcm9maWxlLmlzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuIENHQ29sb3JTcGFjZUNyZWF0ZURldmljZVJHQigpOworCisgICAgUmV0YWluUHRyPENG
RGF0YVJlZj4gZGF0YShBZG9wdENGLCBDRkRhdGFDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KGNvbG9yUHJvZmlsZS5kYXRhKCkpLCBjb2xv
clByb2ZpbGUuc2l6ZSgpKSk7CisjaWYgIWRlZmluZWQoVEFSR0VUSU5HX1RJR0VSKSAmJiAhZGVm
aW5lZChUQVJHRVRJTkdfTEVPUEFSRCkKKyAgICByZXR1cm4gQ0dDb2xvclNwYWNlQ3JlYXRlV2l0
aElDQ1Byb2ZpbGUoZGF0YS5nZXQoKSk7CisjZWxzZQorICAgIFJldGFpblB0cjxDR0NvbG9yU3Bh
Y2VSZWY+IGRldmljZUNvbG9yU3BhY2UoQWRvcHRDRiwgQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNl
UkdCKCkpOworICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gcHJvZmlsZURhdGFQcm92
aWRlcihBZG9wdENGLCBDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0YS5nZXQoKSkp
OworICAgIENHRmxvYXQgcmFuZ2VzW10gPSB7MC4wLCAyNTUuMCwgMC4wLCAyNTUuMCwgMC4wLCAy
NTUuMH07CisgICAgcmV0dXJuIENHQ29sb3JTcGFjZUNyZWF0ZUlDQ0Jhc2VkKDMsIHJhbmdlcywg
cHJvZmlsZURhdGFQcm92aWRlci5nZXQoKSwgZGV2aWNlQ29sb3JTcGFjZS5nZXQoKSk7CisjZW5k
aWYKK30KKwogTmF0aXZlSW1hZ2VQdHIgUkdCQTMyQnVmZmVyOjphc05ld05hdGl2ZUltYWdlKCkg
Y29uc3QKIHsKLSAgICAvLyBGSVhNRTogRmlndXJlIG91dCB0aGUgcmlnaHQgY29sb3Igc3BhY2Uu
Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiwgZGV2
aWNlQ29sb3JTcGFjZSwgKEFkb3B0Q0YsIENHQ29sb3JTcGFjZUNyZWF0ZURldmljZVJHQigpKSk7
CisgICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY29sb3JTcGFjZShBZG9wdENGLCBjcmVh
dGVDb2xvclNwYWNlKG1fY29sb3JQcm9maWxlKSk7CiAgICAgUmV0YWluUHRyPENHRGF0YVByb3Zp
ZGVyUmVmPiBkYXRhUHJvdmlkZXIoQWRvcHRDRiwgQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZE
YXRhKG1fYmFja2luZ1N0b3JlLmdldCgpKSk7CiAKICAgICBDR0ltYWdlQWxwaGFJbmZvIGFscGhh
SW5mbyA9IG1fcHJlbXVsdGlwbHlBbHBoYSA/IGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmly
c3QgOiBrQ0dJbWFnZUFscGhhRmlyc3Q7CiAKLSAgICByZXR1cm4gQ0dJbWFnZUNyZWF0ZSh3aWR0
aCgpLCBoZWlnaHQoKSwgOCwgMzIsIHdpZHRoKCkgKiBzaXplb2YoUGl4ZWxEYXRhKSwgZGV2aWNl
Q29sb3JTcGFjZS5nZXQoKSwKKyAgICByZXR1cm4gQ0dJbWFnZUNyZWF0ZSh3aWR0aCgpLCBoZWln
aHQoKSwgOCwgMzIsIHdpZHRoKCkgKiBzaXplb2YoUGl4ZWxEYXRhKSwgY29sb3JTcGFjZS5nZXQo
KSwKICAgICAgICAgYWxwaGFJbmZvIHwga0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0LCBkYXRhUHJv
dmlkZXIuZ2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KTsKIH0KIApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VE
ZWNvZGVyLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdl
RGVjb2Rlci5jcHAKaW5kZXggOTQwZTRjNGNmMmE1ZWU0NjQzOTcyNDlkODYxMWViNzBkMTg2Y2Zl
NC4uMzkwNDBlZGQ1ODg4MGNhZTM5ZGJkNjA0M2QxOTZjMmFhODZmZDJiZSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcAor
KysgYi9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIu
Y3BwCkBAIC0yMjAsNiArMjIwLDIzIEBAIGJvb2wgUE5HSW1hZ2VEZWNvZGVyOjpzZXRGYWlsZWQo
KQogICAgIHJldHVybiBJbWFnZURlY29kZXI6OnNldEZhaWxlZCgpOwogfQogCitzdGF0aWMgQ29s
b3JQcm9maWxlIHJlYWRDb2xvclByb2ZpbGUocG5nX3N0cnVjdHAgcG5nLCBwbmdfaW5mb3AgaW5m
bykKK3sKKyNpZmRlZiBQTkdfaUNDUF9TVVBQT1JURUQKKyAgICBjaGFyKiBwcm9maWxlTmFtZTsK
KyAgICBpbnQgY29tcHJlc3Npb25UeXBlOworICAgIGNoYXIqIHByb2ZpbGU7CisgICAgcG5nX3Vp
bnRfMzIgcHJvZmlsZUxlbmd0aDsKKyAgICBwbmdfZ2V0X2lDQ1AocG5nLCBpbmZvLCAmcHJvZmls
ZU5hbWUsICZjb21wcmVzc2lvblR5cGUsICZwcm9maWxlLCAmcHJvZmlsZUxlbmd0aCk7CisgICAg
aWYgKHByb2ZpbGUpIHsKKyAgICAgICAgQ29sb3JQcm9maWxlIGNvbG9yUHJvZmlsZTsKKyAgICAg
ICAgY29sb3JQcm9maWxlLmFwcGVuZChwcm9maWxlLCBwcm9maWxlTGVuZ3RoKTsKKyAgICAgICAg
cmV0dXJuIGNvbG9yUHJvZmlsZTsKKyAgICB9CisjZW5kaWYKKyAgICByZXR1cm4gQ29sb3JQcm9m
aWxlKCk7Cit9CisKIHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpoZWFkZXJBdmFpbGFibGUoKQogewog
ICAgIHBuZ19zdHJ1Y3RwIHBuZyA9IG1fcmVhZGVyLT5wbmdQdHIoKTsKQEAgLTI0OSw2ICsyNjYs
OCBAQCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6aGVhZGVyQXZhaWxhYmxlKCkKICAgICBpbnQgYml0
RGVwdGgsIGNvbG9yVHlwZSwgaW50ZXJsYWNlVHlwZSwgY29tcHJlc3Npb25UeXBlLCBmaWx0ZXJU
eXBlLCBjaGFubmVsczsKICAgICBwbmdfZ2V0X0lIRFIocG5nLCBpbmZvLCAmd2lkdGgsICZoZWln
aHQsICZiaXREZXB0aCwgJmNvbG9yVHlwZSwgJmludGVybGFjZVR5cGUsICZjb21wcmVzc2lvblR5
cGUsICZmaWx0ZXJUeXBlKTsKIAorICAgIG1fY29sb3JQcm9maWxlID0gcmVhZENvbG9yUHJvZmls
ZShwbmcsIGluZm8pOworCiAgICAgLy8gVGhlIG9wdGlvbnMgd2Ugc2V0IGhlcmUgbWF0Y2ggd2hh
dCBNb3ppbGxhIGRvZXMuCiAKICAgICAvLyBFeHBhbmQgdG8gZW5zdXJlIHdlIHVzZSAyNC1iaXQg
Zm9yIFJHQiBhbmQgMzItYml0IGZvciBSR0JBLgpAQCAtMzExLDYgKzMzMCw3IEBAIHZvaWQgUE5H
SW1hZ2VEZWNvZGVyOjpyb3dBdmFpbGFibGUodW5zaWduZWQgY2hhciogcm93QnVmZmVyLCB1bnNp
Z25lZCByb3dJbmRleCwKICAgICAgICAgfQogICAgICAgICBidWZmZXIuc2V0U3RhdHVzKFJHQkEz
MkJ1ZmZlcjo6RnJhbWVQYXJ0aWFsKTsKICAgICAgICAgYnVmZmVyLnNldEhhc0FscGhhKGZhbHNl
KTsKKyAgICAgICAgYnVmZmVyLnNldENvbG9yUHJvZmlsZShtX2NvbG9yUHJvZmlsZSk7CiAKICAg
ICAgICAgLy8gRm9yIFBOR3MsIHRoZSBmcmFtZSBhbHdheXMgZmlsbHMgdGhlIGVudGlyZSBpbWFn
ZS4KICAgICAgICAgYnVmZmVyLnNldFJlY3QoSW50UmVjdChJbnRQb2ludCgpLCBzaXplKCkpKTsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcXQvUkdCQTMyQnVm
ZmVyUXQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9xdC9SR0JBMzJCdWZm
ZXJRdC5jcHAKaW5kZXggYTc4MjM3MzExNTYxZGU2ZmY1ODJiNDY4NTU0Mjg1MGMxYzEyODQ2YS4u
OTk4MjM0Zjc5MWU2OTc1NDIwZTk2Y2YxNTc0MGUwZTMwNmJiN2ZmOCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9xdC9SR0JBMzJCdWZmZXJRdC5jcHAKKysrIGIv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9xdC9SR0JBMzJCdWZmZXJRdC5jcHAKQEAg
LTI4LDYgKzI4LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJbWFnZURlY29k
ZXIuaCIKIAorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisKICNpbmNsdWRlIDxRUGl4bWFw
PgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAKQEAgLTEyNCw2ICsxMjYsMTEgQEAgdm9pZCBSR0JBMzJC
dWZmZXI6OnNldEhhc0FscGhhKGJvb2wgYWxwaGEpCiAgICAgbV9oYXNBbHBoYSA9IGFscGhhOwog
fQogCit2b2lkIFJHQkEzMkJ1ZmZlcjo6c2V0Q29sb3JQcm9maWxlKGNvbnN0IENvbG9yUHJvZmls
ZSYgY29sb3JQcm9maWxlKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKIHZvaWQgUkdC
QTMyQnVmZmVyOjpzZXRTdGF0dXMoRnJhbWVTdGF0dXMgc3RhdHVzKQogewogICAgIG1fc3RhdHVz
ID0gc3RhdHVzOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9z
a2lhL0ltYWdlRGVjb2RlclNraWEuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9za2lhL0ltYWdlRGVjb2RlclNraWEuY3BwCmluZGV4IDNmNDM1ZTQxMmE2YjViMzdkMzUyNGI2
MjllMzAzYTZmYmJlYmRhMjAuLjk0ZDZlODI4MmI3ZmEyNWUxNWJlMGRjNWUwYmUwYWJhYjNlYTk4
ZmEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvc2tpYS9JbWFn
ZURlY29kZXJTa2lhLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3Nr
aWEvSW1hZ2VEZWNvZGVyU2tpYS5jcHAKQEAgLTI3LDYgKzI3LDggQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJJbWFnZURlY29kZXIuaCIKIAorI2luY2x1ZGUgIk5vdEltcGxlbWVu
dGVkLmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUkdCQTMyQnVmZmVyOjpSR0JBMzJCdWZm
ZXIoKQpAQCAtMTA5LDYgKzExMSwxMSBAQCB2b2lkIFJHQkEzMkJ1ZmZlcjo6c2V0SGFzQWxwaGEo
Ym9vbCBhbHBoYSkKICAgICBtX2JpdG1hcC5zZXRJc09wYXF1ZSghYWxwaGEpOwogfQogCit2b2lk
IFJHQkEzMkJ1ZmZlcjo6c2V0Q29sb3JQcm9maWxlKGNvbnN0IENvbG9yUHJvZmlsZSYgY29sb3JQ
cm9maWxlKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKIHZvaWQgUkdCQTMyQnVmZmVy
OjpzZXRTdGF0dXMoRnJhbWVTdGF0dXMgc3RhdHVzKQogewogICAgIG1fc3RhdHVzID0gc3RhdHVz
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72608</attachid>
            <date>2010-11-01 17:35:26 -0700</date>
            <delta_ts>2010-11-01 17:35:26 -0700</delta_ts>
            <desc>now with null check</desc>
            <filename>bug-48170-20101101173524.patch</filename>
            <type>text/plain</type>
            <size>8772</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MTA4NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjkgQEAKKzIwMTAtMTEtMDEgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KKworICAgICAgICBbQ2hyb21p
dW1dIEFkZCBJQ0Mgc3VwcG9ydCBmb3IgUE5HIG9uIE1hYworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDgxNzAKKworICAgICAgICBUaGlzIGp1c3QgcGlw
ZXMgdGhlIElDQyBwcm9maWxlIGZyb20gbGlicG5nIHRvIENvcmVHcmFwaGljcy4gIFRoaXMKKyAg
ICAgICAgcGF0Y2ggd291bGQgaGF2ZSBiZWVuIGEgbG90IHByZXR0aWVyIG9uIFNub3cgTGVvcGFy
ZCwgYnV0IHdlIGhhdmUgdG8KKyAgICAgICAgdXNlIGEgc29tZXdoYXQgdWdseSBBUEkgdG8gZ2V0
IHRoaXMgdG8gd29yayBvbiBMZW9wYXJkLgorCisgICAgICAgIFRoaXMgaXMgY292ZXJlZCBieSBh
Ym91dCBpbmZpbml0ZSB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSR0JBMzJCdWZmZXI6OnNldENv
bG9yUHJvZmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNv
ZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2cvSW1hZ2VEZWNvZGVy
Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UkdCQTMyQnVmZmVyOjphc05ld05hdGl2ZUltYWdl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBOR0ltYWdlRGVjb2Rlcjo6aGVhZGVyQXZhaWxhYmxl
KToKKyAgICAgICAgKFdlYkNvcmU6OlBOR0ltYWdlRGVjb2Rlcjo6cm93QXZhaWxhYmxlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9xdC9SR0JBMzJCdWZmZXJRdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSR0JBMzJCdWZmZXI6OnNldENvbG9yUHJvZmlsZSk6CisgICAgICAg
ICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvc2tpYS9JbWFnZURlY29kZXJTa2lhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJHQkEzMkJ1ZmZlcjo6c2V0Q29sb3JQcm9maWxlKToKKwogMjAxMC0x
MS0wMSAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgWGFuIExvcGV6LgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9JbWFnZURlY29kZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcAkocmV2aXNpb24gNzEwODQpCisrKyBXZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE4OSw2ICsxODksMTEgQEAgdm9pZCBSR0JBMzJCdWZmZXI6OnNldEhhc0FscGhhKGJvb2wg
YWxwaAogICAgIG1faGFzQWxwaGEgPSBhbHBoYTsKIH0KIAordm9pZCBSR0JBMzJCdWZmZXI6OnNl
dENvbG9yUHJvZmlsZShjb25zdCBDb2xvclByb2ZpbGUmIGNvbG9yUHJvZmlsZSkKK3sKKyAgICBt
X2NvbG9yUHJvZmlsZSA9IGNvbG9yUHJvZmlsZTsKK30KKwogdm9pZCBSR0JBMzJCdWZmZXI6OnNl
dFN0YXR1cyhGcmFtZVN0YXR1cyBzdGF0dXMpCiB7CiAgICAgbV9zdGF0dXMgPSBzdGF0dXM7Cklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgJ
KHJldmlzaW9uIDcxMDg0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFn
ZURlY29kZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsOSBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKKyAgICAvLyBGSVhNRTogRG8gd2Ugd2FudCBiZXR0ZXIgZW5jYXBzdWxhdGlv
bj8KKyAgICB0eXBlZGVmIFZlY3RvcjxjaGFyPiBDb2xvclByb2ZpbGU7CisKICAgICAvLyBUaGUg
UkdCQTMyQnVmZmVyIG9iamVjdCByZXByZXNlbnRzIHRoZSBkZWNvZGVkIGltYWdlIGRhdGEgaW4g
UkdCQTMyCiAgICAgLy8gZm9ybWF0LiAgVGhpcyBidWZmZXIgaXMgd2hhdCBhbGwgZGVjb2RlcnMg
d3JpdGUgYSBzaW5nbGUgZnJhbWUgaW50by4KICAgICAvLyBGcmFtZXMgYXJlIHRoZW4gaW5zdGFu
dGlhdGVkIGZvciBkcmF3aW5nIGJ5IGJlaW5nIGhhbmRlZCB0aGlzIGJ1ZmZlci4KQEAgLTEyNSw2
ICsxMjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgcHJlbXVsdGlwbHlB
bHBoYSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlbXVsdGlwbHlBbHBoYTsgfQogCiAgICAgICAgIHZv
aWQgc2V0SGFzQWxwaGEoYm9vbCBhbHBoYSk7CisgICAgICAgIHZvaWQgc2V0Q29sb3JQcm9maWxl
KGNvbnN0IENvbG9yUHJvZmlsZSYpOwogICAgICAgICB2b2lkIHNldFJlY3QoY29uc3QgSW50UmVj
dCYgcikgeyBtX3JlY3QgPSByOyB9CiAgICAgICAgIHZvaWQgc2V0U3RhdHVzKEZyYW1lU3RhdHVz
IHN0YXR1cyk7CiAgICAgICAgIHZvaWQgc2V0RHVyYXRpb24odW5zaWduZWQgZHVyYXRpb24pIHsg
bV9kdXJhdGlvbiA9IGR1cmF0aW9uOyB9CkBAIC0xOTIsNiArMTk2LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2FtZSBhcyBJbWFnZURlY29kZXI6
Om1fc2l6ZS4KICAgICAgICAgYm9vbCBtX2hhc0FscGhhOyAvLyBXaGV0aGVyIG9yIG5vdCBhbnkg
b2YgdGhlIHBpeGVscyBpbiB0aGUgYnVmZmVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
aGF2ZSB0cmFuc3BhcmVuY3kuCisgICAgICAgIENvbG9yUHJvZmlsZSBtX2NvbG9yUHJvZmlsZTsK
ICNlbmRpZgogICAgICAgICBJbnRSZWN0IG1fcmVjdDsgLy8gVGhlIHJlY3Qgb2YgdGhlIG9yaWdp
bmFsIHNwZWNpZmllZCBmcmFtZSB3aXRoaW4KICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRo
ZSBvdmVyYWxsIGJ1ZmZlci4gIFRoaXMgd2lsbCBhbHdheXMganVzdCBiZQpAQCAtMzQ0LDYgKzM0
OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBtX2RhdGE7IC8vIFRoZSBlbmNvZGVkIGRhdGEuCiAgICAgICAgIFZlY3RvcjxSR0JBMzJCdWZm
ZXI+IG1fZnJhbWVCdWZmZXJDYWNoZTsKKyAgICAgICAgQ29sb3JQcm9maWxlIG1fY29sb3JQcm9m
aWxlOwogICAgICAgICBib29sIG1fc2NhbGVkOwogICAgICAgICBWZWN0b3I8aW50PiBtX3NjYWxl
ZENvbHVtbnM7CiAgICAgICAgIFZlY3RvcjxpbnQ+IG1fc2NhbGVkUm93czsKSW5kZXg6IFdlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2cvSW1hZ2VEZWNvZGVyQ0cu
Y3BwCShyZXZpc2lvbiA3MTA4NCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Y2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCwxNSArNjQsMzAgQEAg
Ym9vbCBSR0JBMzJCdWZmZXI6OnNldFNpemUoaW50IG5ld1dpZHRoLAogICAgIHJldHVybiB0cnVl
OwogfQogCitzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIGNyZWF0ZUNvbG9yU3BhY2UoY29uc3QgQ29s
b3JQcm9maWxlJiBjb2xvclByb2ZpbGUpCit7CisgICAgaWYgKGNvbG9yUHJvZmlsZS5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybiBDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VSR0IoKTsKKworICAg
IFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGEoQWRvcHRDRiwgQ0ZEYXRhQ3JlYXRlKGtDRkFsbG9j
YXRvckRlZmF1bHQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPihjb2xvclByb2ZpbGUu
ZGF0YSgpKSwgY29sb3JQcm9maWxlLnNpemUoKSkpOworI2lmICFkZWZpbmVkKFRBUkdFVElOR19U
SUdFUikgJiYgIWRlZmluZWQoVEFSR0VUSU5HX0xFT1BBUkQpCisgICAgcmV0dXJuIENHQ29sb3JT
cGFjZUNyZWF0ZVdpdGhJQ0NQcm9maWxlKGRhdGEuZ2V0KCkpOworI2Vsc2UKKyAgICBSZXRhaW5Q
dHI8Q0dDb2xvclNwYWNlUmVmPiBkZXZpY2VDb2xvclNwYWNlKEFkb3B0Q0YsIENHQ29sb3JTcGFj
ZUNyZWF0ZURldmljZVJHQigpKTsKKyAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IHBy
b2ZpbGVEYXRhUHJvdmlkZXIoQWRvcHRDRiwgQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRh
KGRhdGEuZ2V0KCkpKTsKKyAgICBDR0Zsb2F0IHJhbmdlc1tdID0gezAuMCwgMjU1LjAsIDAuMCwg
MjU1LjAsIDAuMCwgMjU1LjB9OworICAgIHJldHVybiBDR0NvbG9yU3BhY2VDcmVhdGVJQ0NCYXNl
ZCgzLCByYW5nZXMsIHByb2ZpbGVEYXRhUHJvdmlkZXIuZ2V0KCksIGRldmljZUNvbG9yU3BhY2Uu
Z2V0KCkpOworI2VuZGlmCit9CisKIE5hdGl2ZUltYWdlUHRyIFJHQkEzMkJ1ZmZlcjo6YXNOZXdO
YXRpdmVJbWFnZSgpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUU6IEZpZ3VyZSBvdXQgdGhlIHJpZ2h0
IGNvbG9yIHNwYWNlLgotICAgIERFRklORV9TVEFUSUNfTE9DQUwoUmV0YWluUHRyPENHQ29sb3JT
cGFjZVJlZj4sIGRldmljZUNvbG9yU3BhY2UsIChBZG9wdENGLCBDR0NvbG9yU3BhY2VDcmVhdGVE
ZXZpY2VSR0IoKSkpOworICAgIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IGNvbG9yU3BhY2Uo
QWRvcHRDRiwgY3JlYXRlQ29sb3JTcGFjZShtX2NvbG9yUHJvZmlsZSkpOwogICAgIFJldGFpblB0
cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyKEFkb3B0Q0YsIENHRGF0YVByb3ZpZGVy
Q3JlYXRlV2l0aENGRGF0YShtX2JhY2tpbmdTdG9yZS5nZXQoKSkpOwogCiAgICAgQ0dJbWFnZUFs
cGhhSW5mbyBhbHBoYUluZm8gPSBtX3ByZW11bHRpcGx5QWxwaGEgPyBrQ0dJbWFnZUFscGhhUHJl
bXVsdGlwbGllZEZpcnN0IDoga0NHSW1hZ2VBbHBoYUZpcnN0OwogCi0gICAgcmV0dXJuIENHSW1h
Z2VDcmVhdGUod2lkdGgoKSwgaGVpZ2h0KCksIDgsIDMyLCB3aWR0aCgpICogc2l6ZW9mKFBpeGVs
RGF0YSksIGRldmljZUNvbG9yU3BhY2UuZ2V0KCksCisgICAgcmV0dXJuIENHSW1hZ2VDcmVhdGUo
d2lkdGgoKSwgaGVpZ2h0KCksIDgsIDMyLCB3aWR0aCgpICogc2l6ZW9mKFBpeGVsRGF0YSksIGNv
bG9yU3BhY2UuZ2V0KCksCiAgICAgICAgIGFscGhhSW5mbyB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMy
SG9zdCwgZGF0YVByb3ZpZGVyLmdldCgpLCAwLCBmYWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVm
YXVsdCk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BO
R0ltYWdlRGVjb2Rlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcAkocmV2aXNpb24gNzEwODQpCisrKyBXZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMjAsNiArMjIwLDIyIEBAIGJvb2wgUE5HSW1hZ2VEZWNvZGVyOjpzZXRG
YWlsZWQoKQogICAgIHJldHVybiBJbWFnZURlY29kZXI6OnNldEZhaWxlZCgpOwogfQogCitzdGF0
aWMgQ29sb3JQcm9maWxlIHJlYWRDb2xvclByb2ZpbGUocG5nX3N0cnVjdHAgcG5nLCBwbmdfaW5m
b3AgaW5mbykKK3sKKyNpZmRlZiBQTkdfaUNDUF9TVVBQT1JURUQKKyAgICBjaGFyKiBwcm9maWxl
TmFtZTsKKyAgICBpbnQgY29tcHJlc3Npb25UeXBlOworICAgIGNoYXIqIHByb2ZpbGU7CisgICAg
cG5nX3VpbnRfMzIgcHJvZmlsZUxlbmd0aDsKKyAgICBpZiAocG5nX2dldF9pQ0NQKHBuZywgaW5m
bywgJnByb2ZpbGVOYW1lLCAmY29tcHJlc3Npb25UeXBlLCAmcHJvZmlsZSwgJnByb2ZpbGVMZW5n
dGgpKSB7CisgICAgICAgIENvbG9yUHJvZmlsZSBjb2xvclByb2ZpbGU7CisgICAgICAgIGNvbG9y
UHJvZmlsZS5hcHBlbmQocHJvZmlsZSwgcHJvZmlsZUxlbmd0aCk7CisgICAgICAgIHJldHVybiBj
b2xvclByb2ZpbGU7CisgICAgfQorI2VuZGlmCisgICAgcmV0dXJuIENvbG9yUHJvZmlsZSgpOwor
fQorCiB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6aGVhZGVyQXZhaWxhYmxlKCkKIHsKICAgICBwbmdf
c3RydWN0cCBwbmcgPSBtX3JlYWRlci0+cG5nUHRyKCk7CkBAIC0yNDksNiArMjY1LDggQEAgdm9p
ZCBQTkdJbWFnZURlY29kZXI6OmhlYWRlckF2YWlsYWJsZSgpCiAgICAgaW50IGJpdERlcHRoLCBj
b2xvclR5cGUsIGludGVybGFjZVR5cGUsIGNvbXByZXNzaW9uVHlwZSwgZmlsdGVyVHlwZSwgY2hh
bm5lbHM7CiAgICAgcG5nX2dldF9JSERSKHBuZywgaW5mbywgJndpZHRoLCAmaGVpZ2h0LCAmYml0
RGVwdGgsICZjb2xvclR5cGUsICZpbnRlcmxhY2VUeXBlLCAmY29tcHJlc3Npb25UeXBlLCAmZmls
dGVyVHlwZSk7CiAKKyAgICBtX2NvbG9yUHJvZmlsZSA9IHJlYWRDb2xvclByb2ZpbGUocG5nLCBp
bmZvKTsKKwogICAgIC8vIFRoZSBvcHRpb25zIHdlIHNldCBoZXJlIG1hdGNoIHdoYXQgTW96aWxs
YSBkb2VzLgogCiAgICAgLy8gRXhwYW5kIHRvIGVuc3VyZSB3ZSB1c2UgMjQtYml0IGZvciBSR0Ig
YW5kIDMyLWJpdCBmb3IgUkdCQS4KQEAgLTMxMSw2ICszMjksNyBAQCB2b2lkIFBOR0ltYWdlRGVj
b2Rlcjo6cm93QXZhaWxhYmxlKHVuc2lnCiAgICAgICAgIH0KICAgICAgICAgYnVmZmVyLnNldFN0
YXR1cyhSR0JBMzJCdWZmZXI6OkZyYW1lUGFydGlhbCk7CiAgICAgICAgIGJ1ZmZlci5zZXRIYXNB
bHBoYShmYWxzZSk7CisgICAgICAgIGJ1ZmZlci5zZXRDb2xvclByb2ZpbGUobV9jb2xvclByb2Zp
bGUpOwogCiAgICAgICAgIC8vIEZvciBQTkdzLCB0aGUgZnJhbWUgYWx3YXlzIGZpbGxzIHRoZSBl
bnRpcmUgaW1hZ2UuCiAgICAgICAgIGJ1ZmZlci5zZXRSZWN0KEludFJlY3QoSW50UG9pbnQoKSwg
c2l6ZSgpKSk7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3F0L1JHQkEz
MkJ1ZmZlclF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL3F0L1JHQkEzMkJ1ZmZlclF0LmNwcAkocmV2aXNpb24gNzEwODQpCisrKyBXZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL3F0L1JHQkEzMkJ1ZmZlclF0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjgsNiArMjgsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkltYWdl
RGVjb2Rlci5oIgogCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKwogI2luY2x1ZGUgPFFQ
aXhtYXA+CiAjaW5jbHVkZSA8c3RkaW8uaD4KIApAQCAtMTI0LDYgKzEyNiwxMSBAQCB2b2lkIFJH
QkEzMkJ1ZmZlcjo6c2V0SGFzQWxwaGEoYm9vbCBhbHBoCiAgICAgbV9oYXNBbHBoYSA9IGFscGhh
OwogfQogCit2b2lkIFJHQkEzMkJ1ZmZlcjo6c2V0Q29sb3JQcm9maWxlKGNvbnN0IENvbG9yUHJv
ZmlsZSYgY29sb3JQcm9maWxlKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKIHZvaWQg
UkdCQTMyQnVmZmVyOjpzZXRTdGF0dXMoRnJhbWVTdGF0dXMgc3RhdHVzKQogewogICAgIG1fc3Rh
dHVzID0gc3RhdHVzOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9za2lh
L0ltYWdlRGVjb2RlclNraWEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvc2tpYS9JbWFnZURlY29kZXJTa2lhLmNwcAkocmV2aXNpb24gNzEwODQpCisr
KyBXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3NraWEvSW1hZ2VEZWNvZGVyU2tpYS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJJbWFnZURlY29kZXIuaCIKIAorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgi
CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUkdCQTMyQnVmZmVyOjpSR0JBMzJCdWZmZXIoKQpA
QCAtMTA5LDYgKzExMSwxMSBAQCB2b2lkIFJHQkEzMkJ1ZmZlcjo6c2V0SGFzQWxwaGEoYm9vbCBh
bHBoCiAgICAgbV9iaXRtYXAuc2V0SXNPcGFxdWUoIWFscGhhKTsKIH0KIAordm9pZCBSR0JBMzJC
dWZmZXI6OnNldENvbG9yUHJvZmlsZShjb25zdCBDb2xvclByb2ZpbGUmIGNvbG9yUHJvZmlsZSkK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiB2b2lkIFJHQkEzMkJ1ZmZlcjo6c2V0U3Rh
dHVzKEZyYW1lU3RhdHVzIHN0YXR1cykKIHsKICAgICBtX3N0YXR1cyA9IHN0YXR1czsK
</data>

          </attachment>
      

    </bug>

</bugzilla>